imgsizer-2.10/0000775000175000017500000000000013500206734011433 5ustar esresrimgsizer-2.10/NEWS0000664000175000017500000000232313500206734012132 0ustar esresr= imgsizer project news = 2.10: 2019-06-12:: Forward-ported to run under either current Python 2 or Python 3. 2.9: 2015-04-05:: pylint and test cleanup. 2.8: 2010-10-20:: Preferred style in HTML has changed, default to emitting lowercase tags. Changed license to BSD. 2.7: 2004-07-05:: Added capability to use PIL if both file(1) and identify(1) fail. Added BUGS section to manual page. 2.6: 2003-12-29:: Source RPMs no longer depend on --define myversion. 2.5: 2003-11-15:: Verify and merge Lucien Saviot's patch to produce XHTML from XHTML input. Also his change to handle spurious lin e breaks produced by Dave Raggett's tidy(1) utility. 2.4: 2003-04-25:: Documentation improvements. 2.3: 2002-07-30:: XML conversion of manual page. 2.2: 2001-09-06:: Documentation improvements. 2.1: 2001-07-30:: Build typo fix. 2.0: 2001-07-11:: RPM fix. 1.9: 2001-03-09:: Two bug fixes by Michael C. Toren . 1.8: 2000-08-31:: Build tweak. 1.7: 2000-08-19:: Michael C. Toren added -q and -l switches and two minor bug fixes. 1.6: 1999-06-11:: Remove some prerequisites and improve documentation. Some older history is in the source header comment. imgsizer-2.10/control0000664000175000017500000000114413500206734013036 0ustar esresr# This is not a real Debian control file, though the syntax is compatible. # It's project metadata for the shipper tool Package: imgsizer Description: Fill in WIDTH and HEIGHT attributes for IMG tags. This tool auto-generates or corrects WIDTH and HEIGHT parameters into HTML IMG tags, making page loading faster. XBS-Destinations: ubuntu-devel-discuss@lists.ubuntu.com Homepage: http://www.catb.org/~esr/imgsizer X-Repository-URL: https://gitlab.com/esr/imgsizer XBS-HTML-Target: index.html XBS-Debian-Packages: imgsizer XBS-Logo: crate.png #XBS-Project-Tags: HTML XBS-VC-Tag-Template: %(version)s imgsizer-2.10/test-converted.html0000644000175000017500000000247513500206734015275 0ustar esresrImgsizer Testfile Ok: absolute URL

Error: no src-tag

Warn: no quotes (we don't insert them)

A tag (alt), which should be skipped by imgsize
Dummy Picture
Warn: whitespace

Warn: whitespace and a newline

Ok: relative URL

Ok: also relative

Don't overwrite an existing single width-tag
Imgsizer should calculate the height-tag
Warn: A single existing height-tag
should be ignored and overwritten.
Both tags given: Don't overwrite anything

Paranoia ;-)

A given relative width
the img should be skipped.
Try a JPEG imgsizer-2.10/test-before.html0000644000175000017500000000230013500206734014531 0ustar esresrImgsizer Testfile Ok: absolute URL

Error: no src-tag

Warn: no quotes (we don't insert them)

A tag (alt), which should be skipped by imgsize
Dummy Picture
Warn: whitespace

Warn: whitespace and a newline

Ok: relative URL

Ok: also relative

Don't overwrite an existing single width-tag
Imgsizer should calculate the height-tag
Warn: A single existing height-tag
should be ignored and overwritten.
Both tags given: Don't overwrite anything

Paranoia ;-)

A given relative width
the img should be skipped.
Try a JPEG imgsizer-2.10/COPYING0000644000175000017500000000243613500206734012471 0ustar esresr BSD LICENSE Copyright (c) 2015, Eric S. Raymond All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. imgsizer-2.10/tnhd2.jpg0000644000175000017500000012616213500206734013162 0ustar esresrJFIFFCREATOR: XV Version 3.00 Rev: 3/30/93 Quality = 75, Smoothing = 0 C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222W}" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?րOI֔t :PNz@!?('t 4@)A8qGҁCK)1p+!1(KF QR?:(7 CKҊ1_E( t~cSGZ@!)hCA LQZ>bJQҔg{ŲizvG:F@\I sWNzPwkHaAST5mCZ9{QF7wiLzR)zMaN?RHw7=Hi!sQOrAxc= 89#9A̲jvH`d- {]Bi$">IZoxbG+fI.H|;[+ m%KܤtǰQdܭc^1KfŽ)GȠt0fTVbpOK; 3ƛ#hE^z #iܬ -, N+R 2SIծM2)fP`QּU6M½dIS>eqii: ! O@2h#4'mǤt]za}]6׏xf}Zf2ϖ|5CMllf")Ll4MATu 4Pފ QKIE1BeX@%`:5[IRͣ?0d5s<+Sbl"Q 9`,zx 0xԧjTq]Ww jm2*_vr3[yr?^OtWyQ FGaRUq58f>l9v^a5qjb`. N~SWieuim1)m+ f-9'COu)Xb4dn q~n3]pӊ|Km7/>l=_zZ߈ľBoN3*=*u$40O /n[;U?\>TY\ǯ;4X8;dcһ R}_E% Z0I #6tg>|mkt]G_FDɻ;y5*bV"f!n!i9ϭ(Twv%\,r#M;D\i-I·ݵ`SwzXj0b97X5+IүcIFRa8]=5y;.s@8k':lX2?+ڊ;GqYb) iTƚc`Sj乨iȤ: -ΏnA5x?D,M7>@BnF+CFt['&c{'_e9&p*;aK.يwA벽hTʜY)zRR t(裥& ςO?!^[.vڂ ?^uko}jQ,H0U"44tb[9Nd}?ׇĪp3P3C9Mvz-L{|ÚuaDek>cdKD)h2\02H f*Us+fTw%ڄrH(m' <`V5-.iqԉ$,s^A, P+7sh427/^p>[q,K*iT$8'8_cpmg/LqKp)+)SQn&,O\'hLg 8#́^.!Ug\Q<+Ӽ=iu FUSֽCC`ִbxbȪ `R蝴?*+  5zЪթp%C\vQHye<)E}W^_[fG;(ydGGP+sjZXJFGuĪtYJnN6^ RǠQ׸I\Fi0)T`HyW)b+V*9 <r/"?):zU=Xѯ$o!򚴹nC8_;J@?ַׄ/nffq3+N ! t-G+wk:џ Ď x?'5FYg&;F' S[i4hpFd~4 D 8MF)u*r#ո704A#IfW͞g8 Zm@_8#}?κ嗨ŻEݬ{AJjn1N{=K!Aogr_|a>HӤt q*PG=8^LY$=ѡ4=Jܮ/3qv~6lSYO^ SN G󮇗.Ȭ2#GA5~΅};IHdvgsֽY[ ޣ6ҕD*)#6oh<3궑mdi0A+şkf_O~Aһas]kK":2ΛVnJo'_OAm*9+żqgFGIZeRDm9XÃoU7XtwVtb}9aacP9$Cma\~x4(}IQϠ_xDnPHnѕlUC B|7W|Fb/Lϔwp>jBH'?Z(ͶLZly;QK χ*F/iYTruR{һtL_ASΨys\ ^da+GǞ󶛩iWszj#TXmf\taםuJ:.M&x)s+\`UM\ēPi?W;U=_Pi?ZSٟ;|ջ_\+om<7p=<^ⳏjνrGs^w^\svJՕ*O N{1!8VM$Gx[V[Zp +^F4Or䶎}w2^NH>x\K!`bxF!$ 'M.f7пy:fs ^O5h>eăΟtJDx<+Ǎn qfG&z~:u [P3==Y~cW{-ca#^OQ4MlyUkWv:ar:K}i5L0#sڠ3໏Q,_tVڥ;[yFJ bsJU9U6I%cÛcMWk 9n/@VbI9A6Vj%Oi䞝k~ XLkuïkÜr}:V{N/x?vׁPDeOGNmG3U3^{^xn[xmGc^DG#ZrAYWJu}Bԣxf0Mz %bptú&?dCV4M=]m-a\䈐(&bV*rSaN4=+ک?Ôj΍{IҟĈRMesżѝpA~@8-ifDAM}.LFu|V5ķ7<^W;uwM?Eմ֗[G,lUѸ TGD?}!v^gAjWZglq<dtaW}hss:FO'ע|XߩY0cW[Ju_4fѴ ZnLBkt/#CpyM|w h9OII>VVH.bO]J܂8=xk \#~d~@\xrֹ^w\]K:MQ eI7i ?GҬ21kJO* 1J񯛳r6ZP:B85n ki"p6N2KT$CeNjojI/xWtQ^}>[r[ğzĶN,\x'JyH\>9ϩi;b k,ۧy3g5;ԋRqgtxĵǍn qq^|LƗ??pG &(r6i>Yc^;rFꬎ0!>!ҕԂ>g#i=֟$SH#^?q\DeNՏ}>NJ + 3F#WJ*)/#܍K_~y#=+?0L׸xU}W–f--$y:z/:LH{RHk:EUtA5htڟ@{"[36xI>+X3[>xJkj/?C?>׀q[_^j`4tb5k,gIA~f(An;5 5><"(;\o^}:C05͂wwkgcJϾI5oC%uh4]#l P1- ?(׆1lk1y$gٝ''D#Nӏ8G~zx^>JH.m&je r7z:G5'<-\U\qfkAsFt;B?!VCf:n.cr?B+> Ѱ` ✩v1ZL8jϊ$G^1H9yt+ =+j&v'l[\tavd_\p0+*-em(SY$l1R'ӵ[̖2p3x|WVR]*C+`ji7ty2?*pq޾mNHH9ZuZm} 9\¸*6;3&qg8c5|M3p #K MX~|q#: 3Ǻ揥A y9=&m- f Z*ee6ֹo&!\~]&c|A]_Lz:+(BTR-ֻC*M⸒9(i.%H79+׭JKs=sUG@_瞽s_EWOG $p 'i_;9reSkC_²y^(?}xq_:hVn#'-SsqAXeRRܬ;КY^I,z֗+MBܒqW+:9HԯM9ni$1#_/? +(YLJm #G?1^BA^潌8zN:jZ[ۍG±Ow;1@^F-k+~j%@P?(ݫo<=wZu֒70C!?xke aG!apcKBDfp_KMOB>#W%ÀH<׮|57g$SF:.453JaOϵ4ׂw&|I+ DKfy4`W⥴Ӭ.cUY}GzѬqr'mK&]]Z43›>OzN" Fq zY&9mzyG>.uh)D'1yxKANYb9f'+ x:QZ4h“jpG*Fb=jqh  hQ!#oLc]fL͞Slmb5)&Eu=w*RF3pq6*s>#Ѵ*aa `$(H>xb&rNjNZy"v8Dɪ(ZZs΋nzgZZ+>eeX܀N?0+Դm^ɺMyGy88]wthP]ZXaӮq^˛LӒ=1ZہiP9\8xM6ZA~@5fX5,T鸻wkaèy!"# marDq[/P2Ө`q. RH`7@aAOKy7>ٞ4DI]kP(V+ :s?r?:s tdf9#{^+Z9oao~xzEPc*?ָ2XŮePP~&V*:XR{bLhc 7l}Q]OGK[WƕyBjzΰ4{s8]f=1gl=H? ac &D{C.p0OvP0/%vʒr)^Q͌I}+E[&IO@~ǟέxOpHI`h_)*OVNVhQN9߉QboΞ/a^ݛē\Ǎ?VMZ$[V[#TDmuyxJNu6՗Ռ ?˷S׮<ɬ]U8eU^yJZXy?qs!,KWUue^M)\-AkvF{k6aeӭt`QPp\<.K:=ŚBWS*߆f 17=vh|Gqh405Z=WFWM?IFR"1+Ic\9e"+S9Eb8EPpV$DH)`{ןܦ՚CEbLl柌SH3 crxfi#Dq)M~i>d(\RKv.yw Qt<4eM'JZ\V@ stQO]\8'-I֌Q֎f-3Gv`*9i3KW`/8Ҋ\E؃4P .h)sIPM`h=)/j.E'&iz3E>wF}X>FE` Z()1iؤpB(QޝC@ #4`M7=)RӸ 94y*29 8SB1.)1N`-%8PP(ҎRu<unHA*GL5\#TI="M* kd?-4W[od?knq^h)Kݟ_4R׻Gd?^]ԽAGC˹܏h:~r9SxCLu A.d2X6vS]CmXiMx ˳sޟh(GgL4G=mVy5?F]IshD}]729$-zpEI$KY' F#9ϭ?RPsMy Iu\C.4y!>ׂ)1yfsQD)KE`TcۊV^]L.z~E]ž8w[vW_h^좰:_ȶhO#GcK0WI&R%( }i^`r-960-ErjfjY>%!aScǻqO{I^ڙk8kxO_ 0ǦYm-,&hMpğC^W)i.L|}o |/Q ߉OŦW+{ }]ΔxČFuy zÍ_PP{D _5)}kdž]cF1WH֔D+;/zLsH %cP1 4iRS6R0$pMp-( J^ԂhKGZApK@j1Aގ1\ı>??]j}vgg nrMI%uc^i=C8?mGÿO׫7gY?ӑھYߺp:h_(vt:=7(]ve?H8ma4fVO/fݷ9+5m pވ:i_RӇ`w*mme1Z2;p2)$rHOJ}ϋۻnXOȊC7c$u=LJa0/)BM*-/8o=^Xd$G"suԺO-x@kݿtM i> kCgEAozuCFaB뚪GJ]FXns\w}4 _!.v—Q_mWR%IfDIC9;>>v%SֽKB3#~ʈp"}R*gj'kUXrظRwWl=4 JJZ !"Lb)M%haJx78 < 4`<p RRAE!Zv 9 )LMyc нIE'JQM\RbHb@ A!TI=.qۊצymZ;f2H>qsG=1ӊhQȤp):qJ)1ɥ QKH)iR⒖PO֌fáe.KH#֪1r*kYK7+.mEy 7y@#$~j:tnP׹Dmym֦V[6FIڟk!a=٣ w:}0bnJS=}1p~5Ή^_M'a̞3ֳto-]g rHSH|~rQ̬]43Rx:TD&|$n' 'NAeW+mIۦH׽PԖI.uvA [:ޙ# Y*^ Ɋe?4 c5J8fxYN\iFTOn?y}]l|QI:I5Z]nfv 0 >zݽm, Gaq:fxw ΑnW BsCï)S22zn.!'5ƎFdX-`>o8}{,upf7`,@,o#׵;ppD$ףTY:ˣVk[0YJp8O@[hPwddⴼC'˩jW`0U _LV_ ѹc<,]gc A.sA@Wϱ (R) )4%QށM4Ӊ4L5!;S@;ž 6RԌZZJ-)!yoUuYga>xY:F'v\f(G~\0Y=jpTﳣ MW\E8½w^O x+[IL%HnNk"E;AF:$I]cɊz$1Xom5im/ -kPӖ.m @?3Qk}?;^gb~Wg9\#h _)W<1,Ҋz\O* [_\V6Z=ybG~7_H"IB;D5N?!e̮zi"GH""QS1wpf%wc`39n-.c6IN> 9/r䛷<ۻ9gͭ60|;3{WSjG+P8F1Kyn.>ר2<Jَ#/ycUle:8b%˕r[: d^4~%2+Y <4,dɝ~M[.%]pؿ6ͧsҴo̓}#]^ݕ3Iȱsםgb2%[(BƲD3Lg9cxNW/EqoNIМzgocPT%*J m#s_3.msڍ!IAڪH8gcg]Զw0@ S9RF3Jun MDMf\^<%&hЎ=5, 6૪JCac3܌tvcNFiKgB^ZYO; ho?:K $q#>5-WKa_\y0Ơ`HL reYߡM>ŧ2Z&=FpGקN[Ė:nd&^OEhk ֵ'VQX>ßV,. HűSA:WVhE\(Q%ј |rē0?.+t2"-b%KI)#w'G;C&=O^&']ZB; (C944Rbi A!isH}hF{Ӎ0 v))sژRii Z&iqHQ@@[ADf6#˕Bzb[x%syxۏ#bGj5gdʌ Em CD@ּ#gTu/:NJ{X/m%n췓§\y~&؈:0գMsD~?\>+%:b \d&N Q^kc[8nv>u,Y1c&6aWKfTQCtckZ%Ա[ꡲGDpwHEr7+Qk6dwtZG2T7٠3O?(\/c].KmfYfh~Ymp s[QNI4aX:׏%ΙɁ8-ԷN.o,JG~U\1{.IhQoU7L8XqA˚-ڕgYXOn E_49@$M\,3QW/ýKU$^xѴ? 1 >_=\w<5yAdCXFS#^@8j;_]:h}m#UoϚƾY[X\# w9ٰ@{{jTR$N̶/5~525JCqVY}גg9brs\  (--Z*qsjt&'Redaʖfz^[_Z>?ƹx!hOFJ m,X)1W_pjkVur1."mKl8#ERd{]xy]<= B ~I}տ^Z~gu:_&.pBGSňF=_$s֕wy wPO___\\ JRM5=|T5It-"vSe{}j6`r ?yRA_CvG -\x^IKG_yLbfs#X]4ɭޕ$e:Ϋš$w3*$QW`Ңl-DIu Sqܒ⏉2\D`Q m_5{R[Q ьl8壴#nZW4W#%*6AϸP};S|I$eTtRɻ Eլu{}x_¹K;+{? 4׶;(yAU{ gW8[sJDsIH4j@ f[ J3A:E1j3?4֚ p⚽3NpiފSғH E4\BWxiu2L#rNsP^C.F@ѧ`9ݴA9jmB;/ x{r`aOº:1(țn}:׍-m} 𜎇cIm}:泓篽oSjo{_|zz2Z3F0 @WLJB]IOL++a{o $w;sW:nY88J̷5@jM~au ?Vj e,w7n^ 珦i(7ѲG>V{Oh.Gt\=, VO5d~t#SfA1êqFF!^d   q*u,;Kzl}MTw(v,LfUYd=YOb}k#9x.5ݞc#*D1Y#WƝ}ENc !cEi:֜'22z/Mo(K'ձB-%O"$I 9$H~(Yc̣,W$O=ut˧E;`~+[+mާ Wq-~n1 _oO]]֒W^mC)̄!X9^$+)"oЎr4]rsl| )WI{!-ƟڵbC*K f?C?_rvN`z^ F#V?ixc:}\ps <;{L pNG'.'H9yN;gӷjf.VZ5Ͱo)@uϫBuBĴjH_skɲ`BeH$_38#J!;?v ?Z-1%OFϧ,2,O3^Yk~Sy*1԰A>؈&R;IU9ClPFlep;bw)*HzU,NYX0dBfJ?ƌ$thJڈmeċ8tv<šU12  f#iCHZ\[upAyV3K.\)Bfҭ  N@jն5幟 e Iw8"ؤt1i.'w,\(HγQZ.{Aqum}YYs9U ̶v "kҥAA]jmKZ-jZ6+A ߡc5Oaoͤ ،?3JU_" B&;GZ*t7, 4NQ`|܃w l[}ngdW2j^edM1`A®iR]@5qp<* 0IjTҴ[)gs71'999<ծo"G]N.("Px!bR=) 4!iFifN))í0 Pyъ@-Q@]=5M6{Fȿ+z0 t \ `n$/ﻪ1]]18ŖB%Hh`7NzK;}B?Xl4UP0Hqfqq鞴kwmg.iyiqs~dј©"Fn])|6{Rpl[']HSRᶂ-+Ȭc@:*2~ꡏݬ7# q{iqsڔ[x͠,# &\42o2[!Dg< |V{&ŞoMQޙt׌`h6 Wz|Z5[4JX4gֶ,m!Y"uU J+9ǮiR@2K>U| ֝,bzbѸxݷߓ7eTܫI:1=4h(M)F 3'ršna )ޝXmsqHF<2j%q2C^G{Z{6UxXryאgpwn ^xo Сh-C| r_YҋƑM³c)&Oz-4qtv_VXK}{dbq , k]đ׃ҰLV'$݀9 frzW_#H"ObjΤǶ:}s!# +R?T0ae 3€N[ASoCxc!XBpr@N q%RՎ9TCw6aIhiGujGYIccKy@s޾jT:Zܷғ842T HA4NRibiy D8t8t:Ru":R9u@(,F}r9{kk9.D-%19OHGV9=rvAkh\3d FzxL  18Xjv+ͽJf!qö6VJ{iPGNTt{kBvMР5xs]MbЉ ȿ֢>=l^Fu(;^hjE*Kk4QۋxS[Nzt-#?O OzT%Z(cϯ?tTJ]рWpR%H2~/G\kфH#ƩMӓ{_>";_{muk,W"<K.9I}7 HԴ򐈭b}UW3Zش eq30- Z=QΤM̖\(w-Pz"+3Х^ؗCUn'_,J10MT2\4Cv"]mTNO=۩-ӯ ,7`ױ+= sEe+/G݌sc'jE6im^nl)l?v/ KT+eñ_HgS.V| F2vCֹݑ68G9W|2kc8ntkg:=.u-2 jGAptK:hšx< !#isޚhRo

z vWYy>gH-m8 ST4KFm{x Hfp@G]MB.͞ofլamq.m3cн-&?`chkhh񈭢Tt}aڢTyyw^epr u۞{cSK仑lM?yBTԝk}F7֧^SN>g|v^X|OMۥC n:gm[k:|FA1@;TQWcu/݋NJ Xadp]߭ix7/u<7B4k' eQW:vf`~^zt?N 4m, Хm4k[ SJ+aʰLưdӮe[[b69{VxvfrAPן5'}OMyU4knFpU~'JvV֚(iD^ N OJ&7葷rϹ _EhnbK|vӸUfy<->-]]ۼH`0܌,쥊[]P[.ָ}ғ2?*#9R{TyS/ qjIz{d?qv09z"C)q(?Oa^[KsxAV-l:ӜcSʹٖ}U T|(z'$dDc)'1 } Wtk]}JDPo2=⹰1RbIR0I=2y+iTS?ykٜ `g9gP9O"GRWg bGđ3 yo³mCj,Ս2 ;&+ O PH if=BmCGhF?xG_M# ܕD#W %&4e2Ca}A44]JmR H>jW Ns#Fz/'N6,188Psڣ!L7c9Q da@=3Gf6 _5 ]XSFAXmFI- ,#g Z myl=dybՍQAG!In=+'n,aPs]~GU]1tГrʥk^*ȼxjݜ33<_ƷQ[%V G l\3RzWTwgUSO5M0iLns[Zk>Əicrsڮ˦Mx.嵆K|\ҭ0;=rjD$|5mS^5Ǘ1T DxG$t[3Ek O4Ig $cRp s-@74`υ$q*u+LxU]2$y :F52n!|lY}>)w5QY h$vvpOz=t/n5h-"fE^{w5%fU+Q𻳄s Fؐ8Wg\K%EV$m#8_w=Ju$RyfE6@{tr.ъ^TRl dG+7ԚKKZfKkv#bW<蔕Sq/VkrrVmu}nȤ`,y~Qűk}wPQyoEon/~+I/ 7MB1{#93ө< w{fRf!@fV0>b}{~My,ơ]ᜆlx8#vy<1]5FL?Q>y<sڎh9Hy.6Y(0<Wc9=e-ͨ*Qwƶ<&4b!Qip 8A:uI&0~^{`C׾xEM{Dĝc|/}{kh K 28#J:5 i1Uh՜FIS?oƼšk~RI$m ݈a}./g 43$pv`zM|oIOцR+'p]y[gW'?2;UwLc_C\C:,Q[i֖lZ"f,=>j4k*tGKޓ5 ޓ)M4I=O494xҘ:)}i)E(J9(0Ī Xb)Hcml%a;)8P[yGm&Vp9^S"j%/"u&F# 94O҆,m# r=2y#ؠy"۝L>V>,׭ƫxtA_N3zdnnu$gr^ Gib@>Dš}xUA ^Z'"`xyd}a4<4C>Fo\>w3ŢL L%lnW}!'ě ?JAOIo MZ,l5@&0}[We J c'{ZYjwvD!Uiu0n*?eyΞQGCk"ifɸ|ھ_3%Mud|ќ[ ̅|ݢiz=]Ü\dδt(3IhRM04}ҘGibt b(u E{ f O@*9y8ngcsW)5]6{;KҳܣEt*O`zVJoArB;3A * m7?_–Hq#o=_]э9Y Ĝqy &$y}ֵ{-u,Ā%¸~^޳mmBNU7vnڧ$5i^2#.@% &]+wC&&R?\ FUg4NzqDޤrDԾ+֖7H=05[[;sA:q M&Ut:jwTNTY]{[L$As#hMSXQwyv<''➐XHʩh:z]HqGwhG[َE̫"*ՠfD,ׂ3v$}uKMVxI9>2G]վth !O.;X¼Q)MI?cb mărz Sѣ0ˌtÞ@RaՆ# o#HH+~UfG29>?q<*iqBƁAeGj)RTՏb]nDdͰ-N||u,ӜĜO_֩@QWwmPs=˝cb޽!#y<=@7Qo-4>h,cko1y'wy9D2_V[$`Ccp56>hd*y x9ھkfLԄZpDFR:MPq1K!H~yXMZJ{ rv#?2'l~blmW#ˆATchD'q֯N"NLQQPnqTpXmރLiog+Pp?18)ʳZ%qI\RI.u N tS0Hb1N8&;۳gg8\I'Ԧqp l< * ;U;VjgAcgdW*nɟ?'y1%Y#/ Q !^Ffaϵ,dERK`}A{_X DOª8;?;8jw%̫pxO}u?Z't{Uۥ4olڸTGV;QOW,Z[ cp9Q6 \llԢ:^m4jm"`Q*LjPFP9F:mKEu;/hCw{pGeQ\&VeS F;g3^z$z9sR}pM֬[D2B2K{xZ Nڄ:/&U`㜐:5=ƣ?4>#jQ4.ʕ'8þ28rKi0=vr瓦{= r|zG-:.riz}5_D<}@IߥdjqC|!Yic(*\?-V]f$F4gw=zJפAs\!7ʥDŽIFC%]彴82)FY|ɝ,II}FYq!Feެ]YeGm I#l`rjkqsq^E*]3'6L?Z|I.`v!OuYG`:nRA:)Wda>GѺjw[V% <wHrԲNm2~~㩒$Tb`c}2 Ŝ8:%"J0~5|s]}E$+$Ҷ;*=eymαmu<n7 QuY٣Oa v=UsIyw-~xUCU;+l=CǯMw b06PWK>lk3?4D0d*(v8Hdڪ R2,Dɶ@b‘^Ahq }qeس̹f?^e}WO hf2Ȋ=\ 뱡>eo^t1 C:z:5(쭛>a՛OsV:'BLZ+s?u^ F-̪@$WS¦M(ch o FN3 $k<\41!AZF $(,X(^Ic>u%7u $yjZm&C* Ă:5}2X -f`Fm6G?3}q^w^kPDst2k"GoUzp)-Ѳ,<r+ڧ)唹LNS]B(^Id '˷03v K3wvIk$"@Wy=e ;WGx5 r#}G5ōSJi0i);טj4CNzB3LKI 4M8S "UҐiE )1K:sPn-9XnR-J{W|Q3!zIYUԫe<FAXi:n0,-?钟]xLD(U6,?ސg˟Ě}Y'RH>8;Hy#X`1>^0X^'-V6.RmtO,fI<|ҥy냌2G[Mz֋hI0\lQ_{wiy,u>[Y&y?*_ZpXs3].,-58[w;@2IϮ+KܴlE9;߹@+d5+("J)S\8 ::Y%YnQ69ewW M-"Emv%UVc)tKI$TdyLPn}Ek`\Z5ǖR[积Pk0iq4Y`n}qJsszw92Emm0/~y8.u;[4&N#Aڨ%U9瞟Z0ҌafB4 'לy U|xEu(zNMOS]>KI0}kJ9!̇-N÷/$PtokҶ{[mJ+&V9- 1OpG8ƻHEX/f|Z?-YcIǨ1FMq\[jh1y9Ny*xϩپ$$~`gn2inMUBQ97 uÜ};VFdiBAҵ4jeH=?ҲSW`97h?Rka U,JGO0?KQIYinIxgIH'>˽Q, ^DhydUmFb/<6WcsI>kj8_E=Ĺ_hKV'+m&JUZDv H k֙k0/[7`bsOogq.oeԦ9ko"-20 p3߭w¼nc%n}WۮW*]V c)Ȫw|#6|-bJf^J14mH\瞿h5oͱXpqH~jRY:ʲ3y39XpqSd89b:5W F]H83W-A奴DȒK+o;UU9Lwa+4ũ$d: F#6YTBzDrTKj pNO&$ EJ7G\w 5Y#URڞs1Jbl?vs~38#vmktt6193JVKT *K咘#9ǽ+B77%$w5ÿ6Z Yy9B>UNO⤱euE'lKy^Ϡz YHM1YUG4b} Fi!pfoRLv_]6!cFyGGxcx4]1nX(F`t^۱ϷLдInξ OzɯTrwc2ktPi#ǫ1囿Nsퟥ8 vq_5V&#Vs+VS! qOʴm-ESe-Pf0ސ(!J6) bwwSIo~isN<`Jz@iq@(\PzQޔڒ\P`&.éiYK$.G$~\|~dthם'x9AKsȮRI$̎}ŎrIkplI**$yb2}0;uE.&C$]qُS%uWdAoaGW \QWQE#X^ph$[FӶe/fR cEbK€ě#Izn䌻BW8b 3M|\$*ڵAQDPCB(#XG_Q/"g;v3G !Ēs~]bv 2{($_IiPU@#X?AW:ӽɫ8X䧖,t#gs#\CCQp*VTK^3vWndF{d@$Q,,KRiP6H;I{zVz39(ElFh4+3ߥ-Jizdu.pqNIϿ?ҔsHMM)3G\ POIL! !=AbRt4c֒CU[3C9` ꀔ7*P;pqѹ0H u}Pno dI4̾Q$V]Fݢg/8?Jgb)7EeCPzRcO7Os\#x7Ugmo,:rgN|챘.fEl=0];-mf@B Hv Sx]%B0=+7٣k"88NP 4iNSF:SOjLB^@;Q@HS%-QE’ ہ\}?*ZZbz^Ը?-0=?:_N4P!1߿3F)h .H~Tuwҟ LsJN 裨OEF(ԝ C? ZNSHh)4b@4v1 !bRJy޴hM8LDí;ړQ@-QHw(Q((QJ(P nU]۠1沼KMxvܯ2 QIAU<|#knq㞔ټ][ hV9\<9Yv(/_O'[TuWuTw8}{Vo!zO]pkRs>W v`y~<'oJoC$bMmqk<[pbcc5jZ>a}F›,AѰmde<Z~ʔuփri3jyS[Α!uI p6V]KdX'OBz~uLfE,#<6V'oڬz̟fkԖ?w&ҡ_“L/#SZLZ bf0[OiR\-\3Hn +~Y~)5=SPi ؽǒ8n3CgiLʄ/#0zt.JNKI뎹>IҊJC41E `aLFE44˜ M#tiiN)wO7P"qKښ)1@PxoR,YOB"Z>i`8QԞ.8^OIBM]豚<Gt E,z-z*(fu ȹ`?KIU oJ=ƥkWQâ* GOI]鎥r(RKJ3@ E#YU$׵c&ҵ%Oh3B8^е$_o~?λ^jW:$J N1k|BΗQ^yRJ;M{ i<Gٯ1mt=fNyΗ䛆BD֘3uF35֥e M5񯻑paj@W~ZmsVH$}oR8O*+utd?8CZCHo3(C ukƝ hfhtx;2eF:>2Žފ3)\3h6^I(e*H:VyEƩtͰ9};6p]Z'frȹS6Cm ^k";rR0jGf߉W¢Os2&=@!]oyTu#L\ub qa= f1z+zɍz)8+Լ7 O[wc`W^О:qWKs^9?1>=HQ;uO[_蠎F~|#6ݷ~[&Hؼxޥ{u-F]Q}k &cx7zq#;XUQNGj˒Y[rO [=rISj:% %s+ H]X&" GI8ͼ?^MO#)=6}x?{ơI] иP;|Ky^EKmn*sbXu_M,~uҰ<auxf+[ȚW%}k^ѳX|'uu })~Հ?)fV bR_:Qך871|CJiךtJ^ԀN(b3_Ú$4iVnw34C$j坝>M Y'b.Oz Znr{Y $&DWGeaGWM'N[yF6"I6m-򭠎󝑨֤(扣qVSG [[ hf-J]LM%,U@QVHZ( QE/cZZ1;hRSljj)VB!*zE.QKp (PKp3\RSmzRt.( ~4`R4=-hi94bҀI]?*Z)݌L~fCzi1ҜM!UC7 # # Fix up IMG tags in given documents to contain correct sizes. # # This code runs under either Python 2 or Python 3. Keep it that way! # # SPDX-License-Identifier: BSD-2-clause # from __future__ import print_function # Changelog: # # Originally created by Eric S. Raymond 30 Jul 1996 # # Modified by Erik Rossen 15 May 1999 # # Added the --nomagick switch, to use file(1) and rdjpgcom(1) # to determine the image size instead of identify(1) from the # ImageMagick suite. # # Modified by Michael C. Toren 18 Aug 2000 # # Fixed bug where the SRC attribute's value needed to be in quotes, # improved command line parsing (but it could still use some work), # added -q switch to omit quotes when generating tags, and -l switch # to generate lowercase tags. -mct # # Modified by Michael C. Toren 19 Aug 2000 # # Improved the command line parsing some more, now looks for additional # arguments via an IMGSIZER environmental variable, added the -d switch # to set the DocumentRoot, -v switch to display version information, # and -h switch to display usage information. -mct # # Modified by Michael C. Toren 23 Feb 2001 # # Fixed two bugs reported by Jeroen Valcke , one # where the -d switch did not function properly if the img src attribute # was quoted, and another where the &error sub was incorrectly reporting # the line number an error occurred due to the input record separator # being set to ">". # # Rewritten in Python by Eric S. Raymond 11 July 2001 # # Time to get rid of the dependency on httpget. The -l option is gone, too; # instead, we deduce the right case by looking at the leading tag. -q # is gone; we always emit without quotes. -m is gone too, instead we # try commands in least to most expensive order, and notice when a command # returns not to try it again. # # Fixes by ESR, 29 July 2001 # # Incorporated fixes by Peter S. Galbraith. # # Fixes by ESR, 25 April 2003 # # Merged amended versions of Lennart Poettering's fix for Debian bug 139714. # and Jeroen N. Witmond's fix for Debian bug 168964. Added regression-test # production. # # Enhancement by ESR, 14 Nov 2003 # # Verify and merge Lucien Saviot's patch to produce XHTML from XHTML input. # Also his change to handle spurious lin e breaks produced by Dave Raggett's # tidy(1) utility. # # Modified by Andrew Gwozdziewycz , 17 June 2004 # # Added support for the Python Imaging Library to determine size in case of # failure from file(1), rdjpgcom(1) and identify(1). # # SPDX-License-Identifier: BSD-2-Clause import sys, os, getopt, string, re, filecmp # Warning: In some Python 3 versions getstatusoutput() returns # status incorrectly so that a nonzero exit looks like the subprocess # was signaled! (Observed under 3.4.3; Debian bug #764848) try: from subprocess import getstatusoutput except ImportError: from commands import getstatusoutput try: from urllib.request import urlretrieve except ImportError: from urllib import urlretrieve version = "2.10" splash = """imgsizer version %s, Eric S. Raymond See for updates.""" usage = """Usage: imgsizer [OPTIONS] [HTML File] Options: -V, --version Display version information and exit. -h, --help Display usage information. -d , --document-root Directory where absolute image filenames (i.e, ones which contain a leading "/") may be found. -n, --no-overwrite Don't overwrite existing width and height tags if both are present. """ # Optimization latches -- if an attempt to invoke a command returns 127 # "not found" there will turn off and that command won't be tried again. magick = 1 # using ImageMagick by default rdjpgcom = 1 # using rdjpcom by default pythonimage = 1 # use python imaging library def attrformat(xc, dim): "Formst an attrubute" if lower: res = " " + dim else: res = " " + dim.upper() res = res + '="' + str(xc) + '"' return res def sizefix(infp, outfp): # Apply attrfix to the attributes in each image tag global lower while 1: ch = infp.read(1) if ch == '': return outfp.write(ch) if ch == '<': # within an HTML tag lead = infp.read(2) outfp.write(lead) if not lead in ("im", "IM"): continue # splitting the read this way copes with single-char tags like lead = lead + infp.read(1) outfp.write(lead[-1]) if not lead in ("img", "IMG"): continue # within an image tag lower = (lead == 'img') attributes = "" while 1: ch = infp.read(1) if ch == '': return if ch == '>': break if ch == '/': ch2 = infp.read(1) ch = ch + ch2 if ch2 == '>': break attributes = attributes + ch outfp.write(transform(attributes) + ch) x_match = re.compile(r" ([0-9]+) *x *([0-9]+)") rdjpg_match = re.compile(r" ([0-9]+)w *\* *([0-9]+)h") def imgsize(src): "Return the image size in pixels for a given image source." global magick, rdjpgcom, pythonimage try: if not ":" in src: src = "file:" + src (filename, _headers) = urlretrieve(src) except IOError: return None # Now let's see if we can get a size for the retrieved image. # Try file(1) first -- cheapest, as it doesn't read the whole image (status, output) = getstatusoutput("file " + filename) if status == 0: # file(1) works for every common image format other than JPEG if output.find("JPEG") == -1: sizes = x_match.search(output) if sizes: return (sizes.group(1), sizes.group(2)) elif rdjpgcom: # Use rdjpgcom(1) to handle JPEGs (status, output) = getstatusoutput("rdjpgcom -verbose " + filename) sizes = rdjpg_match.search(output) if sizes: return (sizes.group(1), sizes.group(2)) elif status == 127: rdjpgcom = 0 # Next try identify(1), more expensive but bulletproof if magick: (status, output) = getstatusoutput("identify " + filename) if status == 0: sizes = x_match.search(output) if sizes: return (sizes.group(1), sizes.group(2)) elif status == 127: sys.stderr.write("imgsizer: giving up on ImageMagick\n") magick = 0 # if that fails, try at _LAST_ resort Python Imaging Library # open doesn't actually load all the data, so it shouldn't be too expensive if pythonimage: try: import Image pyimg = Image.open(filename) return pyimg.size except (ImportError, IOError): sys.stderr.write("imgsizer: giving up on Python Imaging Library\n") pythonimage = 0 # All attempts failed sys.stderr.write("imgsizer: couldn't analyze %s\n" % src) source = re.compile(r'SRC\s*=\s*"?([^" \t\n]*)"?', re.I) awidth = re.compile(r' *WIDTH\s*=\s*"?[0-9]*"?', re.I) aheight = re.compile(r' *HEIGHT\s*=\s*"?[0-9]*"?', re.I) pwidth = re.compile(r'WIDTH\s*=\s*"?[0-9]*%"?', re.I) pheight = re.compile(r'HEIGHT\s*=\s*"?[0-9]*%"?', re.I) def transform(attr): src = source.search(attr) # Must have a source part and no percents in existing width or height if not src or pwidth.search(attr) or pheight.search(attr): return attr if no_overwrite and awidth.search(attr) and aheight.search(attr): return attr # Correct the url for documentation root, if present url = src.group(1) if url[0] == '/' and root: url = os.path.join(root, url[1:]) # OK, get the size tuple if possible dimensions = imgsize(url) if not dimensions: return attr else: # Nuke any old size attr if not no_overwrite: attr = re.sub(awidth, "", attr) attr = re.sub(aheight, "", attr) # Compute image dimensions (xc, yc) = dimensions # Plug in the new attr return attr + attrformat(xc, "width") + attrformat(yc, "height") # Output lowercase tags by default. lower = 1 # Set the default DocumentRoot to the current working directory. root = "." out = "imgsizer-out$$" mydir = "." # NOTE: if you are doing CCV  U !1"AQaq2 #B$3RbCrSs%&'4ETcO!1AQaq"23BRs#&6SbrCc$54T ?P @(P @(P @(P @(P @(0ſzƝ>sOu *x e ɴ: !Œq,mo,,wW )oHc-p$'3m Ǹt|Lt @vW8u.m[u i@D0 ۀ=i4K+WLϖQ#*ೝ;VkۤrjPrYm(|FޝMc,״FOӵE|!Zcf!Ayы.40M\Eums gxU](a<*ݸ s+=a%=T}+i#i#kAV^daçZZM7qڳ%ɉ2.g0I+_b{zo~!dq7:MG3Do7ȡl"I%vRZ\XݞNbu4x1Uc9 aKg \<Ѵf.(7:]vv`Z~J}o>uGo"y91 ެQ;@K|擩iY߮Ay'J sM(ޒɾm.o_ir.Y8=#?t'p\ķ ㋤ma/ͭ.Hde+ XLѤ`: (2P @(P @(P @(P @(P @(?_Fh1(6r~ cO€8"o1ڀ'|Pm|{p;P |OހbP @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(H ]K+7@V.@R ]K)t.@R ]K)t.@V@P @(P @(P @(tCy?3}$x/8f7IGDM)t܊KϘ{M|߮:G5z6L_Z|?`YՌfWԒڷXO遦̜&>^iz@^Gkv>lĘqArX=,/-M17u$;9p܆ zW>FVS{o7x|{i!au@H4+BJ|>Z<.8vVpěK9ڋel^ziN#˷a/H>>ERY̏L !n`ls̛_mf>}-_4&>j4WN3ٕ43G2T>$=B ZCft}G7g,G<$H=֠WKOZM[ef>"qD^2+}Eΰ!zZ>F^j }:M/Y 90V!??Vg:=4ݥxP!-)z_R,7 /PxF #%O|GOwu5% 'H̵7POLfHplTK_# Su=?_Lne"N>nx%K tN+ďW]JkR;(zc~>j~>tgx0ϖ>Ջ{jvpkK'53zd9pݏTUһVZK7݁-꺇-eA?J{z+{_ /9cu񽋮?y"YZ[_ݯ#ckӇEHBr}M_Iz@U1;O=89<*Y"ku\ǧLHOSu-6y~Ƽҽ"?cٿE7;pt!gcw,| SiҿC~stMv`n nX8m1J|[D~jS*Ÿ>'Rܸ'hzԞTHBG8q-ˇ#ZwJ"/T q_y/INf2]ܲGX}OZ1Y잛/Fʹ0>_ժ_o}*t-}\w@ooxIm5$ABm1]}1zf,TZ)'ɾ|~}IԢbnOhP @(P @(P @ukeo5ϫ q~'ymjЏ_hQ'@6OzcҔ}NKQv1>KsTۖ}SP/3J2;ϕ'^N7z(OOK\NV%A628_`13R[iV/>w [eƒٖ?՛UxIWI3Ao&p:K^J{|*MNm쌔r{*)/Ṷ|T6H.Xa,ԿN}~%94^|;YM-iSYJ*Kkc$ҋ}%o*ܝbRQW_$ӼXN⫶k۩bA3~no,o\_n.d m[9Olif(^+]Xk;xMsRծ'ef3=={T=YZW'h f.R k֢(޳kqVЅܬ$)}"4^^b]j^mf] zs_keXfCUT_]&*QSQ_uwq c)/ p>sJQ5ヌeOŔLzĒoEnH)M{ҿřxIwqFuIYKS& }欎-8Y>ۢI6,T{ )MJij*vm\iA;I_ȇ5$u dۉ䷻{YH 9jK#K ?(Ƨ$xdpq6O6֤o&+/ge7_5<5ǫ6q%4zחC|R<."m6[#]b(EmY'"f;{(i-!Dц輻wֽ6”5 xǎG#KJl_jև'4P @(P @(P @(:5esT||h`Ug]>#L-xZ_Ҍ[e/G՚Q>z7:&.#oi敶2TĀUY|Grb]DPG©%:b$c_>Q~7G#VpB8noU/8{QXS m3 @k_bqE&U4 wĐYdѴ;D l}sYdBzn$Vp}پe8KzEu٨]omSQIWNo &R@szbk93]֧%KM<1DХBxqރXc{dѓn(7uy--9$0F/|{*RVlih-ێ!! ]֎Ȳ8gNVoz\[ckU q㞌IPViה^h|,%|WxqnOZo0onf]Oir*<.hœu}+>2;XzW-\{gփH8*J6Si]3q% jv`\ӷڰYo̒9=D:Ŭ@b󬱎AjU'bSq5ЕdYΡ8e`I+l?GksRɳ*6t2bI|ݑ IJSވ$΂GօCL3 ՊV,J7y=l ³̮DQ lEVw R[9GG!l.F]@>ΙѕAMobX5i#ۏqWU=*?ؾgZ ŨLcNw}E#F|k3:ԛaGDU . soYQޒ3 B,ngo􁐧X3hӓnD)C'=J_0–GoX֭XuJL;/6Z<:oȑ+;EqhoVG˥OԪ)JWWޚ=f&G@L8*xSIѕQako7 k賵y3jh[[RƥdvUb@23:_.ŨCG.Zof6(}TolVIIMIIS,Ufl&z j0ǯE15^a^x-%_kS@(P @(P @(P_˥aT|%9>l 3G5f%"Ns쯆=)Kg_q_ʏ5m^[-vLM27ncx;;"6U7c 4+NwkыNȦ^kx]@Dw @ޡN3v#[ӕȅ)w缸)b ;ZhQAc#SOqj}U4&as ̳͗]k^!,z|{/T&U8듂¥ #R~|w{-ZnC|6?lFU޵MfIcCnŅ>DWXc5sMYǁ9Q("(e,"OE%YB[)ܣӬuhgy!&0,YN.yF*N42JK-V q#u8듿:)^Yuq/.Rh"V`}Cj(Ygny/4-~!4H.-# z3ïve43#w%y>^θʜgSYQw{qx)be-B(TU,:onu I /odxA6QMn+Zρ5dgҹ/k&@Yld7Heڱ,{6:{&{[IM\xtJ㭞]~ymjy_쬺xU.?Җ`v׭_*yV\RbbgwQi71yêڣ*Ia9R>qu W;Hv$'Xvaaeuw׻׶|[M-I rp>tfOW(K{g:RNS&kRm|7YZQn :vo%xVZ}θ <.j*Q]No8j-Gt1OIJH@p K4|,-Sv":i idK+1c?.W)Vy?\X%VV,{5-fx孮 "ڻRA1IJͳ[(WD\7an-)&ԱG}On0{~^|MW45#a؁ɮOY*z87N=[mٗ.]GoϞhP @(P @(P @uk8箭=7ķIMU C [~dޔ2eP>|مnu{ ,Axʖ^ sʜxԓsj]QiW [Z9TPѥǵ8?JdW,59'־\O]!Ӯd%=V{vSu ۟}eՋ#<gh[c(u='k{M8zjJ+Rg'}p}̍e1>‚bUQ,%,>6#62G<[puƣO"Rjϰ"hz'k3%l}Z52ײSq#Gk$` -$0/,Xy }7gqפE=Ks(g2>5%UceK*xD6khڥH.%S©gq?kB{h2qJ;`ozVIw wW ۛW+K ?H#^]=U,?tz)K ɫ̱#;TRUlx{粻hK۸k~"v XYda}3RU'4!*0NU)1- 3 Ϻ;f8SP{#{]^x7Ҧb[V5m{%LRLI}? TRLVj][t-P#SWc,Ďm˵_ 6(nsq̦..m" uPp/qG KSeĎx+ke8I Z)R%lL G#:۳d*ՠ^6+,LUJy/tZ-ŨNA ~yRUSOvE $⸞X1}=ݫ>w7 WiX5?$Wp6~m%J5yQRޣQ>~^"H2 Gs*>Y7gSo45ɭLP_R4b5|qUvmw -ѷWEjzv0Ga[%pP UN_8i "mN`Z 2d0_gƪu3x*2G̓`Pu=d㷷5&M(d .xO{nf#2qpnkA$-j mntOu^*կ,~(MFK;v &:;(F|LTgW g|+th&9g UMk%\^!7Mn˒zT)޾r{/2,\mC]tterx(@<'Wo6W.9W˘mǗ|%h5Θ,h92N: m'l20[wpL]rf8?. ec Ig A\NXk9TyG,+C {1J<_ZK/.x6iFFVb` '^:wOHIʻ{±,.#qtH5I[ZK%(ʂU?rҨzSIYvJLOY pg i+R`:WԽ#+k u#e`XF \: S_y  @(P @(P @()TdX쑦oH]JHUdd2= þֿQQ:Y8Bn+-F{R.4MϪ"fQ.R ^#­?=-H~+lu],z]"RAA$gSVb;1eˮoDfhd.UFxma{zjf_RM_$yJ=4Z5Y#<vv'uo=PqnOqKF#LGNr~'yf6Ө?uiV#SBmmǒظ\\u{3F*}u0ḻy&UiUY;UnzHQkxY@ǝG ߂){5c}ug'FOZ%$Qyv =F.̔6b +8CkXvdR,zUtnlWNiǥx#5mݧʑ" 5 G>8zUl ~ȑxcY?WMNϙueR;N1dV*)Ǚ/FkO2=N- h!'s0a91Ke+[KMY?[eضm-R\9v_OOҰqCmʧsmmՠոu9SOӭU$坏D*u5BU=-TWf*<4N;I.m5n"WVףaq 6yobzn>^TK,C :¼/m>[ E odcN;(y'yٜlxt|U:o_X%ΩXw$\u\x!g laNKv{WukE݅l[ioRYaQd݅w8\jJ<MqS[fѸ*B$u*KW"#7Tܳ>.mMo񴒯Ll$FsFL] UY-WOoD/7`LFT49;UT yrҤ~gU;Xsc<ڄLI`^,qМ2 s+[\Ύ\b kHIǜBsSBpK +-yKZ.cx>;9P @(P @(P @(v?*FVWWN5|򏨯(*>9eh.KZ6I먖R5 zu`ȮVXRLi8ՙ &(ڄ>];\4`zJ #ZV73Pޓ6Ae[Z4A{[KKgIIʵ r.3Xxp:Vyl̑)P K+ƨ?0aW}[ϩ_,x Br?4b ]m E\/+yd}pE9qj[:tv Uڛ$k$R],f;eAԐٿJ[,Ri%q[=XߕLsg?-ƣ y΢p9x|,V,[C"~()T9ŞE(il}Pqت?1j [z=50'QF98*Ef|ѵ\ |D8ovΣGZNV\AQem`0Ru3JPT,y3fU?[g%R nZҋތdUᑍ?Ωv/k<,Td/"eX.*TtY02y{z}U7)A SݏD%(kb%'dMM.]s\DX >827<2?WO*Kr=^_?[Sw귺KSXm;{@KE=)'ع[ՓYϯ_awj-lDHw-+^Y:#ߡ3M7n<=6aK?A=YII("!;yL\80({lȶgI6?A>/=r-Y>mEXdGY24N;,ͻn\YP3D:pqU択q}]7Hף@3 b% jTPj龾̋#o% Ⱦmzesw+EE#h8 n3:R/8s^QȚg/{CLJ4P @(P @(P @(8nQkro>0I $R""HcG[;-}F3=b7|r c:Ʒ ҮcE$ b6Ƹ,Tq:["^:ܷp> 8>5r'yEv6PROimv{坲K K0Z7UBQ)q8+|r\k嬚6'N|6 a_c4GjC"pƵ$SEgMX8Vee)EJ Li&{V,26@©4'aE/ƈ̭~CZ邾YiٌVovP @(P @(P @( Oʣ.NyRQZvrQ鞙usyz|CnLB{[LiI[ԑR+vR<3JAwKejX$; [Mv [k4$ŁRNQ_̅4 H0|8?RjR\k62ҝ[yXyu)7sz{3ֶ_YZ1%ZIf좨S"PvZ:1oalX}گ_]Tmg{,,"a*w9nOLV^|=*vk&} kRσ6+ןq6z eK!t,((k:.myZχiei&2͕?<⩦COk&[hY"I[>5}%V+Haݸ7ZzЊ Z^+mFrOmjQ/Yw2[+lkvHy$yHeۢ4W)|齤' pKpz]_5"֡A网Kl^j7d3Պ4vqoJ(IZ$ůqL\zԒCnj~]D0&eGnTWGEN*pq|V6Kt*#x̧U(l-mkȗ?3KK h|*KwlXu|uG)o&yImۻUMŀIHK.~;O޸rNQ*Abi˦ݪ70:^ QElHϸ׀vIIp;-6=,̷Ε0i- %1zDT5yl#zzͤz0d\DOySF]1f=J h6^" :5zFo 5/#{c߇ǧ4P @(P @(P @(:oF\~r;^s'-]L\] VS#=(/*>kUh?cm%<+)G׵xzēݼIc!2kMy<@pq=_UmKc~R}*ow5:􊍴Ll}!d9p9r($,A$}u0*ǣhR2 ٺlڸFѧJGȞn(eeBt$(u+J,׭+Ft=ZgQ4Z*76_^}_~)",3ݏD, 3eBmE;o;3Xļ9pzߍKD'xDX_rX)Xgo; xMwZ3F: T>\d2e[_p7>`LIIIٲKĻxwHAlډl,V,й큓S\A^i{Jks=+ )dE+A Zܲ&gl4~bГ [Rw0> 8_<2ڿ)MR7N&UڭX v`YѸ)tM%<>V7gۚƔꚝV#%9KKXvBf1,k8l.TVK{T[ 7ʞMhpm2g?CԭRU!vsb!%<=nx=KE5m/~+(%Ӽ5>@?$|2E鏍xF3wƞy|]:+]B D2gx'W|Q|ӝ6k.h[ꓵޤnbK3$>(iZMri%n ax%dg(=BtoT*'rMS_~ @(P @(P @(?*W5OIM48p̾' )~*>ECf0a v4xgUׁj筂{wGCj"JhX0>}ؔRrϚez֝`w/p>P+b#BrK朽(Oq<Ng!z/+%Yƨ+}gLl΅CsE_Ugsz20LR tfj5{.͕25_ ᘤDn|1RAKnȝ<-mAq} 0>y3F 6* ԗ%.i,y ȷ!XUޯ &ǭ!ƈ;=AWlZ3Jm97Ewc kumA'33 JH[9Smэ!"YbrSR>u6Pyol^ XiNw?QoYے'9l{d]کkrA{jTEb)c.nv+/8F*4:P~ǢF gn:!Y{`-F;kc6}ZՆ] tΗ1YRO#h3QLB7ZXhY1OVn#+/.m5ks\Yn#2c'weUq*4앭jSe b-ȗ.%6;t`A-ۑN>m=3HI^ݸXd|ݧ0SӧLGeSvKyu58T{^kSQK ~Xw^iq?~~좏^ܤqpͨ@MXOSmI,6=0CJ rp-dtWL'JB9iRn],׶{^5\.e3z BԌ)ne~EoCn\9TF ⟋6fFjկ eiknOWf9a7~ 7#G0 ~RTf;JzH%]'OȤ3TE5Rl^eGvW(si|.VWP@¬DFYu5f);%rS$۷m ~$ê;տ;*4֘>^TKmtLp0U*gQ侹Dh|]Ӡk^?!{?(wȚ'IQ &ҝb$``qiԫ՘Xح WC('t'cSȍ7'{ܡ$^X[ X)r3Ic"VD)S8aueγ:Ҽ<#Z(LTBl:;Ft%SK{5p(WoO򳘾̓ɐ^ꚝʢo K; `dK׹,ı|.*T\yx!7}\˝(mbpΦ(訧}ZrnN2sR 03 ~cR toou#Œ75ӫ<;Sy偒M<">$Y?)}ҊQG;x8߅qm.=j1.s:RPpʒ R=W(|C5isZIkMjр;Tʌ=GQJ7.+1M&:;xcG]fb`=TT5WS1^s;Sj,I`V?J3m0_F7[7;}M}||s@(P @(P @(P ~Up}!f;dLd_R_۬S_ʏ U_fAy, e}S^gWo"y(ډXMKn"47tEVfYтbwX0t;tt/%?(ŜWؑH˔[sp~0zʍV_*Q\lnW!UA Qs#+zͩ2Pa #T]93;6ph_šY6TB@u&Bdi5LԌ:imA=mItKd .='?NmFmF|7BX%UVkaMgŚ} &gp:gİ%3,*Oe9>#+*:ɔLP'ŻaGERTf,F'&\=6>bM3-No̫?XgRI_}2F{,,Y6qzzbW&VckȖx>gRL1 bo)TK%y sY҆Py' xJN鱉\ eB[ CT)ۨڔ+s26#1TiV6(?l$׍_>O|.pMkp KqD[24ݒ4\sGzئpݔmv}"No{`}#L[ B[N!6VmVNUzcLKHKbR]/yVsΣzIg6.f@ F{u d ;qr&^uC(-ys6li8QJ0w)](/t{+ 8&}Ld@t(dӧR2odOgmm[jcPG胩@dr`Y9'YK\˓S5凃8r)wʹdVH0e ;E6`B\yN2'[ϩN`UVw-PH}XS^<>z\o}'~y5ʽ 9p ೅`܊uܕ#(Է6}/7C$눥`[~yA\aE؎K$$xZbPof7.vMYa`ĝfv̚(wzj,1}2|jwhIJ6jҨ'4)Z j1c {g[8˹o:b=06d\9m$f(M߆%.Pj)]ԗ#ĺEkɸd2leSSfctIƉw"6:(I_Mu wDƟZp0ubC5lnQQΤKtbeC M Vzb&j{U"X2Ȑs›}*rȃY+3RVqͧx.HS! v=5 v裯Ɲ UqGY\V,ƂX.&"mRBncُi۾:gQYԫt8yK[amioj6e$]$n$w=+aہW|j-9K!G]ێ$^u1/W`~D{nx-v# @x2!p<8 b3Ѹ ʪ0Wyb**t4-͟JnKNm_IkK X1i~VvPBK^ n=ysR^r7:QE%RQ#W&iTrl[?딷|%ڵP?'.':Smǭ푵q#~# Wvԧ}(*'$#nCqH;MU+Y'?CKn5" .vvU]]+M `zGq[l.Q٨.R[L"Z+՝Uw*t*|T~g+Imt!Ep]0\ ux^Su\M)}'#X5xr7;}M}|s@(P @(P @(P V뎝2w¥T.0X,6.s_O^q^Pݵ^Sf!e y}7dzثX#HXZ%dm6eM0HmѷM&deٰ|\bG6o3TnjpvlɞZZbYP1|50~m/(ZC DV%Os5\/fFG3a4F;TRue$n>2"a5(Y>UO5оDoi "/\eSo歎PemͤV AFʭ~:jQ\PNR|ιӹ30 [o\.͐NL98H[,aR6'dʭ[]7#4ijR˫& G- %1 nSn txjKZ;ڞu9r+PXph-Կmc=<֏є^]ܘ-,Z~ݝ=?rK,Icl6鬸NlR򫔚GӢDm^' $FJTA[m눛DZ(ꌝ7RǫzZ0ԣtv4+GoRV q%b%ۜSU[JijoڔCe<>ן譩Ytq]I&wge}ivEaJNK$GiV&Or,@RQ[qk(v>,rsHwS@?ϳZ^)hrG[EEneMx". 2\nʼ$ڋ]^%ĤC`ΛABRUTI%ЙNs|u1趍]L *H $GBx10|-1枘E#f|1^RUo"pVq/[7;}M}|s@(P @(P @(P V)Q|βKc"qUohs+oI߬_ZT}Ajކ'cmY %Ppi's-INz"8S/ 7`ǟҨRђ|GOE)kb4_lhcxf{ <|r-M~14l4$8i:ȑAMQ-TY.ƹ0#bJ.7 ǿ`|U/6Cc:]XsGī?u%x3EHQ "qz%ov0P @(P @(P @(W ˀ4!+xL2w^ _zNbDw\;~,̱#g/ݢAM4렲W'gm.$18 #Ce\IXʖ $\9i"8neXcҶN'6~˧jҒ8rI Wq^AhnlbmyZjڢ{ֳS)JsfmޢOyK^E\fXݍI j6*,KD7bnUbc $dwo~{>'Μծ EpP]s#L~ܣ-or1;o=槟xhzF@;Ubp:UGzNXlC*kG`VmO9>Ǜ/ w :(Tm1Ǵy}0cNs\|M-NA+ yogEo-g šn*U{oݟI=a%2G= qS_j-WQ[%ӯ57z- o7LHW,N iuly*/k_#BHp'OR6RZ4CWnE}7Qz TW[Ow둫VIj{p4+yik]q^oF;->5-G8pX嘖$׭J SsTnR|.Qr>(|t`6N&U")2iP Km6؛jՔӹ8(}f[:3.qk*ATPS[̩3Uc3zM$~֭&{]wRt獨FHW$~ě٧Se_G S̰ F.F|EΧV3~)~+Kd260z~$W}Tdžeo Hȟ_MJ1_Q7hx[ʧo汌[TGDRj; q+I7 c3D5!?us%nm,Toxo_՚ v[Q|G.^WgXWraMJ]R8whe+n&moEo*tk2(C( MwJmvAm;0Kż1 1F榒뽖~8ZFȜ]kI5yyP @(P @(P @(T'n4 =97BZEG|QBn}kQeXu?E澶WRmfU ^n=e&ĚuY5 [3> uR"f-ݾgSt|lruVpg6p|3^ ķRzlM-"4"# 9&mYPrvAi$bz pIb8SMh7"Pel2Xlu}=I3QA+QT(>Gw0S5> ֢#"@HqgnҷB0Nԝ5:v|CگP 2Ygb `N{I)bjkr:< [`לAjř'tO@\#`]d#Ȓvȓ=n ;H#^Qcҧg'>/>Р׵&w+f>ČiǙUFkʼ^?A'Mv-42Md2:n2pVԥhjs0פ7z*SkZkco_[]bV;q-%Lhu0>Z u]fJ[o%diח<_q'7u.E³AKHE}I%sk/Q¸ÅOkU_Z]A: `|c&Z.Gӊ %f\K}cwfBw3W+ez<6]~~9Lz7>|vUWo-k;ԏNdE>$):iA)U>Vv'RJ$^|$V]MH흃Q^R??DMoވ5iP @(P @(P @(phAi0D|EkIR׬WZT};gUhu?ay%iu+.$N0o?jM=ي_YWAlvyX T ǷjY%rM/&S^;-yc%aor$[&s;~(Կg˱C J!a^Av&]>SHF$iq#9T{896evuu8fi\/UU=U_+1sgDx# :7n,4e۴*w,j2Y@mңnnryXx;!Ԯ.ڬ^!KrD mL!'1FXMZuJXe'zLNOta&\x9=n|c ?(\k$&̤>ܒңeiRO;6T9uƚFU]%pspXM+Iu\&i%a@'8Q=[Q5ã555\L-`U9"Am<FzjXB^׽Gr HL EZRWT鬖yΤMO둩nRޔĿ5Suce|+KH>(3ݎYbMzq9ؚn Y[[GŜ"Y#\gȯU΅'|~| רE+n]ܐ~+Z^FiɪIevzD1XWNJUElЊHnߛp3ElْRZnfۘ˯[n8E9tj?Sn)XeM28e?\~f糅.:]$lpV8m_NБ媢e~#*1qUM?:/O6LSh6X{Id^k[S5CҶN/*st_" v.VMJ56E#_BŽEú^`2ǯs4R痊;--'T I>=kJk[kdN&Zx>Q9P @(P @(P @(ciϴV4 >tqbEE|W7_ʏ5U(u|ف-'t]޸YPFfHa^;-fzo' y1 yFdgf0R]MbI8SOX.)Qa`i3Z' ۚlէż[ 1ocg/-rnxb[Q -&;|us86_>lݽpjEɈ-!(EBKI+4fsQwo$mEo(x'rx ~ kӨ nd)OQ8N0ʚt0wENbLkk*֫bդ>L8JNoB[._೶P+v *ؙgc2]z݋>Wvj9ʥKG7,SBԷ$M1$,dj4uڹJ3yeϗl'N?ˁ-ki$6i0])pm5V7-w])̆{\~$]J4^5{Ys3c4}sd9g4Vz*,IdCEӆgiUQvFI#\YijE(߳c+mZPm.WRE)%Ύb6˒~_iLS|MZ85ko\,IpzmHGkfex\]#fdJ4}u2۩y/. c2*y+se/" 5U $m݁{g[ҝ+5v;`/n;'-(e3N%噲7+&<2?Z؅KF,ל}Vz0@bbqܝɪmV\Jd?iFlAAU\zNܾhC)PTQuSw'Va RR])HO.=RM/TN9um9uwp2pޥ+G@}":]芗׉W-K 5/䷼vl i|~rϮGګeл czy+[ ҡ3sgU\ cD"Kx#F#5s)m} e8 h7P?c56kAWx>Q9P @(P @(P @()=2o:JHʰ@ٯ'~]kQ֣#+kj$Rd ^ XDq@:R+̉Ckiͽ̠pM"RfL.zu]jIΝEm5E}Tz]w*dCe^@=g;HEFyn+h_ڿ6+ 8 V=4]z(Ӕ #"p e^\&z>#)SEnv݉>f`/H bwl7w]q k5Q츛#;W ?svviA%kj-)X.6$8{/S/577e*gyhj&Ih`>~т(jJ[Q=8Ls<Әn&C>{**FhP=nfYF{tr0?~e)ST֧^ԸZIXRCK1a;W_玲K7jT;<_.ܺbrϖm49pucQTmvvhs_AwcbX^::;4yɫVSn|9{D6dycU)5ĭYˑbZ鹟5HUmm IbWؑ.~¡U7 Ne.36хIAaAPv(E4F5|^Ϊq5uonfIW䗙ř2#,Q[c>h۔([GT?+95.u#j9q\+ophf 4mf.wds/~owwm_wu͚zy5Ns{9aVЋؒ)өuTd-Cg`â{JTMBIgM9EZ46i CFAƞԣÞ拭$t[nLx`HCoBVxғWݙBRHE͠b$HnZ2R̙Cj-žRJ]^'UxgᛐI>4[_N-/: >5)k0xAbv S_t* @(P @(P @(b[HZ.vsbH8pžֿNj:aG͘$e=b XeK!wu5$=lyv7W)26- V+m= N84\FR;B`y0:4ijqvsVImu>PvUĞZOC׸ˊxGk->؁kAV:?j)~jMM!U\MroN[ԵBO}fAGl1% ; /#Ic'vMvSojYϹ.]|NK- gc$u== *:20Q|6mnVMr. d˖5I sԪ/dEqI雠Q79JY$YDaovb_@z{1Itգv_^?3Zmo"]EmsW6#jhJƹbr*Ki啷V˯# }Xd.\u ~Fg[X A7˧Mi8g.|QgzOי|վuV<ƅ ZXY%GPV9fkގV{pUpi10,O8 f껷ӖҲ2dݩ N,SEj6+<%F0ꫥ 6soFYܓ%SmDZj qr+$:6]齈*Y>Yz1fR@%@-KRp0D!87UlwI]FǞ5FҌmvs\UtcБW'_f)Di[,g$޶ +a5R~KtB@Qͬs{ʫ=~MhLNYXP27S١%խo[iڰg7\y8˦N-pͼ7Sœ|)'Jrj\S≘Enll$?NԌJ*|3j:ɑN\3d3RW/KmV9nDT7P>o|﫩5*Z->6c-Ӹv˘|aq֟z|C=i 5lTkΞkRu1l1D/u7VK2%0.q9oFj)ԾvLlm}|IUK++Q,Q1)|nl_3grOZqYD/97lʈbE..l"7ePH/';E[rͭ>+G__nn1{6O{Xvی5S';ybkeYu/>8Â!cuy&˔ƣ-utݢ ;)Bl.j(d_ +]zO-9?=_ҸW5[p$F;=>hhmb=#0H9f%5K Mѭ74YN&IVDn5yz>̭Qʡ\[ϧWF\pҵ];GǭnYE"-Ïb,ciF‹gRږ]sV,BZ=˓$JyЏoȷ$d#Xr7\]:u#gERP}76W1Ӏ Xi9%(D!.,kR+$BB)+JH6[H.2Sh`Ni6kE;"QYK-̷[Ǵdճ]'GېYzy#U )TipKigq#_ R!V[U\(\n|2X. J8 ]@\/9=ArF a4xN]~93@<S6@ۏ ߄4JQ{V=5Z Z9Gq׫& T[K<70s l> .u+dꮯGn;M2"Yp#󓟸>"=R=/)%c Ef&W@Ab6y|xn^wjQD, {7EtXcV."d2OngQ1a?yz^S_t) @(P @(P @(aHXyi 0ZO`Um>U䞻bMHլ:gZ9c5T]_EJhB(Q'8x:i*ՕEFJ}q_ pMZ:j:sON>_oL'R{#5w|ayoo}gr&i ~(Y"6j滏Q]9oWkvLq:Gl»8wiNNVdd>85bcIx~ckfNFp#HrNBWJ*ѧ^J{:u)GvH1' @ky Iv.)UK;.6&B ڙT3j7HLpD v JXX֔Rb;|ÜFA*LXB]2*K.UGSGgV}6KEy9G<.]QO՗%y$X(<;k@:opҶٱU6VW1Yiq罺*;ƅ~T]<{ҕ[$-TRIdr*J,ֽiA€q鏝M'*{De-X I[A1,!ԯ)#ֵiBSOJ1\R/C$d"+!ap?nIes%؉:HU2Bw?.zS(f9{KZݿ=hoָ:Umhjz?t# h54ImlpS??xYYp&;:|e1_^1k*>ԋ-XþxGSI3z9e~vDՅ׏5̷27[(On+4ƛAp+Q Hb!*)2:c'TjĽxUߓ*5hq=n1?4?C&pI"9|d%̙Qݮfa#]G!R &p[NKenي4e9<B+FR|}z1aS.EzΜEuy6BnPOz˭%="90qo&\w~klpFJ:ҲmLDO2WSm)eq[]f[Vg\ea1EEy$YbMz7`C%oOV 8bm&BGV*>ysujܨJ>VpQ KJ,P{"N;{>6:r+MywS'Sj7emVcQ:0a64EA.ڛ|6y%,X ?8 #撵fAW˹S HnD8睼LX?8NVWY|UdTkpJ> DsqrR8փ](S}]28zc{nphMWMJ-vy)pq4G`K}呏ZMIo)MQs7ga+ )W;QP$N5oVsS{.m~`5 5&r<᳨i5.l,H;m\5z+q.qpU]U WGj])8̾GM\ѺSQ]~MBRxE"oIѪS_$\XE}2LXdk*Uz_s/e?%'gSY(6;W)n?3_\]^NI/ I't)r=%:+-)m|qz<꒳C8؞u#_qH;i$XڰԲ,j-z\Z=ŵ,%m'^çp}j-XFJȺ0[j\fx,rN|c^R"pMlKS_s* @(P @(P @(tҰ3>eq=y|w18z17O]1Q8uOINu,.K^pЕ]n%N漵V*AI2{ɭ!=)Z;^EHw+4Yb@P!b=}7/S {_K9+Ԗ] Ȁܲ=_TѸnKy5x?Yx"f]zKJQ. ~e7:}6kHǤq[ )8, ys\c SiشOe7z]G6KV?׀Ӭ[!|Ar p^+`ݷur}:{I6/+Dž'[f񵺜~-dr=Umy/?Gɕ}lt=k+XՉK)˻򯐛^Xr647$ȫ>ɶ!Ƚv[r<ۖ Y8n6ƥ.qFHv3EԽ$kOݐ+^osXZZ9*q~eK}WھH!\@U*;zv:ˉQkó2~| й`d~MYq$nF{K6"_~co⼊k 34H. ZMZׂ4mR]9E|It-d9^5mcb҃S&40Riuy.[Mc#9:Ü;ܟujGjJqAZ}1҈a^6ITGkiyexZ8tS"2՟pޟd̪x׾;p 'hf1̹|q}wuGBac0)_KhiXhZՔ̲vovDP @(P @(P @(wdx%o;}ilGs_zHֽboyp*?}EMsߊJ[i7l4g>+C5't>GZxhF1-Wۈ?\ڸUOk5!,b^-Nd uedRb[3M(JfO<تKu5kM+I ?V+.KdY$,%3lԔlT\y{qa4ȡgO~.)hmO^$\Z*Ru_^_5VwHCpяR{(\:NN\БXe+d(`ivOfimw7h a#w(s{=]\E$Kwԑ F*ِ]@-|Jq*~{;Md{wӀqT35%#~wuԅCh~ԢȉnvjaʹNR%0CM9TVGF,,݃&eb7m\|ޝ)Ųi=Gry >&Ίf[B~lSw"F#0_ֆr[̒#:}2n.Պv0}L7'8Pm+.Ng*tQ ~TVB[MgKR$j#wwpG$k$VnWc'Rqryp1$\qVЂlKm%J. %sWԻ}~>'Xn#7;}M}|s@(P @(P @(P V\nQxZ(p7*6;lVy/~r4[Y[5=7_GvN.1qj4.W͵`zT&u$꿉ߎ^{"(AR::.n|1ogđ)#1 Tc1u&i|N,%{p> ɩ2t2O]@?:͛E.!>έpncz$i-Q6Ůf ;r&҂"s8CʬۚPoR*Zob0,q l#-8K㔊Yd^f5a ܒNGM,kɃF V6-{(kFvHAf^b1l|b#$yYq$Pr{J9wWSU2Vx-'MFD$l:b-DO2)$n`~ +ybj*in>dԈ6[HA :͌#y."*<9lA5/'cs*n=c玕8R\ !W?vJS3#ZwF !AܫN~ɶ5{ᡑ[QujdS|& N~|~x/bIWEP +WY̏{#.1jfekOI8C^1{5WVՖ\z6]8E%~~'zZ=yIvjKtJ=ґ f#:vV7!tH(̱T$m&n'+dQ]xCWo!>@ŧy.dXfBL{sBxmdǖoN2SmP/vP\ v D$$3AVIgE:x H2ٙ^AC ee5bE׺q-SZdaEg-z}LrWN&Bq9g#Fv ZwF[DLw]EJzֲD@(P @(P @(1pѓ-gkOTX۸MG$[NΜk'6Jtqg!5ϫU>),X@9\ߖR3{?hpi\ʻ䵷XVnfHu} WwўMiJݭ=h()lZ??imVg%n^k`ϻvaV~Gb9-9~\hڂsTO6?~}E71,{MڍfI2VMPRq"`b%oݏyg,xܗ`=4-Hn}b~zyb׻f=yEiEד 52h"ϵWIJ/h&7*0ǤjaǨF.Ȳ:^;}iY^AuՏQ' jGcMS|l?ԏk#n?j'U '"y=u>5c7 :J:ՊK(ǵ~BY"93 c<#X4*S|ڬkH-jAɞQƬǩ=@Љ}F>cB=ȏzlN19 4:.>ՏBK$ȗ}"R=ځsRry0}S#㊒}#T^D~c ,ӝ+ʞR!] R?zI/ R=?ӝqܝ82Ρ;MR^7|}~{YRߴӚU&īGډ }g5C#j1{YPG`rS"?Iez>}ŷG~Џ &yO1q??G/BZшrc(;?h= 9q úgezAN!~{Y'G b7*@'͞$W-ҟW]-.;oJ9yg*\~GڟwVwUy%[ޥFd޷IghvCt~NʶxGձiymMvy=qD*/*JϘGnN>U]>"{Y4K/OIpg,,ԟ O~ ^}ERחЏk3W rUk> R;RJ(Y i5>pz;HSFrڃMn޾;'Jlח@uNh<[~q]axcpT=kKq9u.f[(6:55ɕbAϲD@(P @(P @(`/ݞ$0ɝh@;lF-ۑ/ =5 P,fwMmpa aTQ$GMʞbM*Ȁ:j/eb%!"5{\%"kU2:nDpTдҢ}79r;p9{m*2Ѵ_*.$t<5S_)r%z)\m(6kPEq}[.I-!,ڏCz[>_CNSI!'_j~1FURZ6[!U$wǍ%ǺҤE$b GtS AjU T#f?*2J`ïoT"?6HxOM[1Vzd:-X+mܕ5MXnDZF5%*B XC4P @(P @(P @(P`{ڀ(6}}l`{ڂm_pP pPf6Gڀ`{ڀ`{ڀ`{ڀ`{ڀ`{ڀm_pP pP pPf0=@0=@0=@0=@0=@0=@s; P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(imgsizer-2.10/imgsizer.10000664000175000017500000001205013500206734013344 0ustar esresr'\" t .\" Title: imgsizer .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 03/20/2019 .\" Manual: Web Tools .\" Source: imgsizer .\" Language: English .\" .TH "IMGSIZER" "1" "03/20/2019" "imgsizer" "Web Tools" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" imgsizer \- automatically splice in height and width params for HTML IMG tags .SH "SYNOPSIS" .HP \w'\fBimgsizer\fR\ 'u \fBimgsizer\fR [\fB\-d\fR\ \fIfile\fR] [\-\-document\-root\ \fIfile\fR] [\fB\-h\fR\ \fIfile\fR] [\-\-help\ \fIfile\fR] [\fB\-n\fR] [\fB\-\-no\-overwrite\fR] [\fIHTMLFile\fR] [\fB\-v\fR\ \fIfile\fR] [\-\-version] .SH "OPTIONS" .PP .HP \w'\ 'u \-V, \-\-version .RS 4 Display version information and exit\&. .RE .PP .HP \w'\ 'u \-h, \-\-help .RS 4 Display usage information\&. .RE .PP .HP \w'\ 'u \-d\ \fI,\fR \-\-document\-root\ \fI\fR .RS 4 Directory where absolute image filenames (i\&.e, ones which contain a leading "/") may be found\&. .RE .PP \fB\-n, \-\-no\-overwwrite\fR, \&.SH DESCRIPTION .RS 4 The \fBimgsizer\fR script automates away the tedious task of creating and updating the extension HEIGHT and WIDTH parameters in HTML IMG tags\&. These parameters help many browsers (including the Netscape/Mozilla family) to multi\-thread image loading, instead of having to load images in strict sequence in order to have each one\*(Aqs dimensions available so the next can be placed\&. This generally allows text on the remainder of the page to load much faster\&. .RE .PP This script will try create such attributes for any IMG tag that lacks them\&. It will correct existing HEIGHT and WIDTH tags unless either contains a percent (%) sign, in which case the existing dimensions are presumed to be relative and left unaltered\&. .PP This script may be called with no arguments\&. In this mode, it filters HTML presented on stdin to HTML (unaltered except for added or corrected HEIGHT and WIDTH attributes) on stdout\&. If called with file arguments, it will attempt to transform each file in place\&. Each argument file is not actually modified until the script completes a successful conversion pass\&. .PP The \fB\-d\fR option sets the DocumentRoot, where images with an absolute filename (i\&.e\&., ones which contain a leading "/") may be found\&. If none is specified, the DocumentRoot defaults to the current working directory\&. .PP The \-n (no\-overwrite) opion prevents the program from overwriting existing width and height tags if both are present\&. .PP Additional options may also be specified in the environmental variable "IMGSIZER"\&. For example, to avoid typing "imgsizer \fB\-d\fR /var/www/docs" each time \fBimgsizer\fR is invoked, you might tell sh (or one of its descendants): .sp .if n \{\ .RS 4 .\} .nf IMGSIZER="\-d /var/www/docs"; export IMGSIZER .fi .if n \{\ .RE .\} .PP or, if you use csh: .sp .if n \{\ .RS 4 .\} .nf setenv IMGSIZER "\-d /var/www/docs" .fi .if n \{\ .RE .\} .PP This script is written in Python, and thus requires a Python interpreter on the host system\&. It also requires either the \fBidentify\fR(1) utility distributed in the open\-source ImageMagick suite of image\-display and manipulation tools, or a modern version of \fBfile\fR(1) and \fBrdjpgcom\fR(1)\&. These utilities are used to extract sizes from the images; \fBimgsizer\fR itself has no knowledge of graphics formats\&. The script will handle any image format known to \fBidentify\fR(1) including PNG, GIF, JPEG, XBM, XPM, PostScript, BMP, TIFF, and anything else even remotely likely to show up as an inline image\&. .SH "NOTE" .PP The \-q, \-l, and \-m options of the 1\&.0 versions are gone\&. What they used to do has been made unnecessary by smarter logic\&. .SH "BUGS" .PP The code uses regular expressions rather than true HTML/XML parsing\&. Some perverse but legal constructions, like extraneous space within quoted numeric attributes, will be mangled\&. .SH "AUTHOR" .PP Originally created by Eric S\&. Raymond \&. Additional code contributed by Erik Rossen, Michael C\&. Toren , and others\&. For updates, see <\m[blue]\fBhttp://www\&.catb\&.org/~esr\fR\m[]> .SH "SEE ALSO" .PP \fBidentify\fR(1), \fBfile\fR(1), \fIrdjpgcom(1)\&.\fR imgsizer-2.10/README0000664000175000017500000000121613500206734012313 0ustar esresr= imgsizer -- autogenerate WIDTH and HEIGHT for IMG tags = This is a nifty little HTML authoring tool that will generate correct Netscape-style WIDTH and HEIGHT parameters for each of your IMG tags. This will enable the text parts of your page to load much faster. Put imgsizer on your execution path and the man page in a man source directory somewhere. `make install' will do the right thing on a Linux box. That's it. You will need either identify(1) from the ImageMagick tools or rdjpgcom(1) and a modern version of file(1) to make this work. If you are using Linux or any of the free BSDs these tools are probably already on your system. imgsizer-2.10/Makefile0000664000175000017500000000332513500206734013076 0ustar esresr# Makefile for the imgsizer distribution # Change this in NEWS file, too VERS=$(shell sed test-after.html @diff -c test-after.html test-converted.html @echo "No output (other than this) is good news" dist: imgsizer-$(VERS).tar.gz release: imgsizer-$(VERS).tar.gz imgsizer.html shipper version=$(VERS) | sh -e -x refresh: imgsizer.html shipper -N -w version=$(VERS) | sh -e -x imgsizer-2.10/test.png0000644000175000017500000000766013500206734013127 0ustar esresrPNG  IHDR@ș`PLTEfD3UUU"3DDU"f""w""3333D3D3DDUDUwffݙDfUU"̻DDD333"""#tEXtSoftwaregif2png 0.6 (beta)iIDATx흋v:EV{j3֮4|\ H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$8mQfY*L*M$W|[EI?|^?ACS{nC&jo&DP I 1Ƅ&~YvEZv(Šq!ګ*9ɱQmpn#S>+ihѬC"Дg;pnBjr.FXnFN@()vEK*`[2 >&l_$N% ;A&7M.G]eNf,`OvL.V>e kGiډǕpvi$X<Ӯt bƏmقke{0 vGOY4˻6GT$/I 2K[U##7 v̋=xw*׫y;D_܄dFpL^a]?:F5aCNsdhuXve/,CSkyj6B M#wEQt Z aTYg]C8'6W_Ӵ~3Hp/qj'@j Smu.K \6.6[i .A}`h6ږ[ Pė[߲&%BE.RX 1k~eFz\ #|%eY{屲)ܻBz%2ř;HO/ꕥ^X@ NEQ.06- /6{-D*QL/j}O|1SQ]U]H8ΜC7Tɛ~BsTW|#} ח-[Y`(Ηr9ϗeqnkʑ_(59Vl/{'lͪ$gdw9-p{!ݐpb0X:~=Ɋ|y qQǀ=1tKe_Z%5#n~}A~}XO}仵_>[.k`eF]fb0O+b5`ǂ`Wzmaj0z0.%0 zv^.Egs;D(|N܆`$Ax_Mom4NhP@(r^׮m[rK3e _I%m5y ;Mc.%t>5~smN)$M[$QK)NȖVWw&"\ h3[>9z!B0Mm}X`l.l' h_W`J3/C@wiP!WO0zZUlwS'OWA~K`[ӄ['QFN463ZgvA6K`dʤ.5xG F0}bV Q,akPu?HMM'`SaX˗ eQscB\vQ~{Yq[k:Z;kz'薆r`H+=r锩Ͻ,@/v/K`8,@d4a~8ۦ>b_qZnv^e8Η0j~~*4,7H ~]+~7Vx I; .S1gaCm8T&X3~dW`(Bn0AS}ROwjam8ˬ y%1@+#iŷ^B豒>Oa\G.窒DwYWwcoG}/V E .,tl}V'iT,P(GkPtZu&#'Jø| ,Poֱ_r[rBA8WR L|2;PCrg.;1Iye C~z >Uhm/+9NtZI0*ө^\kT{S)=ҩ8]OeVȗ)MJa1;]ƭj|r~W_zMӫ^k|uW}۸ѪF՗ϩCxĝ?Wy|wՕNF|ºW1??'lMW|MxV#]־R})y۾>$Pת)y:}̊Q1 }/l nk~*ބz3wקShzطǤ}wg'泔zC),gا=Mn>7hzjݾ {l^vI N,c槺]ow4F£z=|6|ФLĖ9ׂ0WpL"3Eg*x>%8SCD"HgIzV[73Ҁawj~a7ҠT53G_i׈D`Pu9;C|l!IENDB`imgsizer-2.10/imgsizer.xml0000644000175000017500000001437013500206734014011 0ustar esresr imgsizer 1 6 Sep 2001 imgsizer imgsizer Web Tools imgsizer automatically splice in height and width params for HTML IMG tags imgsizer file --document-root file file --help file HTMLFile file --version OPTIONS -V, --version Display version information and exit. -h, --help Display usage information. -d <directory>, --document-root <directory> Directory where absolute image filenames (i.e, ones which contain a leading "/") may be found. -n, --no-overwwrite .SH DESCRIPTION The imgsizer script automates away the tedious task of creating and updating the extension HEIGHT and WIDTH parameters in HTML IMG tags. These parameters help many browsers (including the Netscape/Mozilla family) to multi-thread image loading, instead of having to load images in strict sequence in order to have each one's dimensions available so the next can be placed. This generally allows text on the remainder of the page to load much faster. This script will try create such attributes for any IMG tag that lacks them. It will correct existing HEIGHT and WIDTH tags unless either contains a percent (%) sign, in which case the existing dimensions are presumed to be relative and left unaltered. This script may be called with no arguments. In this mode, it filters HTML presented on stdin to HTML (unaltered except for added or corrected HEIGHT and WIDTH attributes) on stdout. If called with file arguments, it will attempt to transform each file in place. Each argument file is not actually modified until the script completes a successful conversion pass. The <directory> option sets the DocumentRoot, where images with an absolute filename (i.e., ones which contain a leading "/") may be found. If none is specified, the DocumentRoot defaults to the current working directory. The -n (no-overwrite) opion prevents the program from overwriting existing width and height tags if both are present. Additional options may also be specified in the environmental variable "IMGSIZER". For example, to avoid typing "imgsizer /var/www/docs" each time imgsizer is invoked, you might tell sh (or one of its descendants): IMGSIZER="-d /var/www/docs"; export IMGSIZER or, if you use csh: setenv IMGSIZER "-d /var/www/docs" This script is written in Python, and thus requires a Python interpreter on the host system. It also requires either the identify1 utility distributed in the open-source ImageMagick suite of image-display and manipulation tools, or a modern version of file1 and rdjpgcom1. These utilities are used to extract sizes from the images; imgsizer itself has no knowledge of graphics formats. The script will handle any image format known to identify1 including PNG, GIF, JPEG, XBM, XPM, PostScript, BMP, TIFF, and anything else even remotely likely to show up as an inline image. NOTE The -q, -l, and -m options of the 1.0 versions are gone. What they used to do has been made unnecessary by smarter logic. BUGS The code uses regular expressions rather than true HTML/XML parsing. Some perverse but legal constructions, like extraneous space within quoted numeric attributes, will be mangled. AUTHOR Originally created by Eric S. Raymond <esr@thyrsus.com>. Additional code contributed by Erik Rossen, Michael C. Toren <michael@toren.net>, and others. For updates, see <http://www.catb.org/~esr> SEE ALSO identify1, file1, rdjpgcom(1). imgsizer-2.10/crate.png0000664000175000017500000003754413500206734013254 0ustar esresrPNG  IHDR,,Z DzTXtRaw profile type exifxڭirs^a9ntWD9DF$Yf)gSl[lMϟ竳~n>x.Ǽ;%ǟMy}ެ;Pul\_yY X7~,g%0Bk~b>tv_|l?Mal~o_57+n?_;gs3]Rw80ee%/ooe-9;kc[:do_^uJ_w|=˄o&^ \v7]qw xͿs~lżisp;Mӵk~96t\Y`b$_z{`"ޝ xfsر}~_|B934,6+,U̪&vi]vmCpI'rizO<^cW~R~p$1/3[]^l*\s`Χ>ܿI7?yu3r_xm[QuP6l'qbSQsbZ3`3DWzpv@Po(xv rRo6mcř2;d-8W4l3#;BLގ"b;$-*/BM}vx)b[v#2-̡U\j9_5'6sX/vߧQc4bK\eSZQ4TZzu(1ւL침>kmFKN E>p;$gװ`#=okdbՄ$'7'yBz'NE >rܘlŦ;v:d՝~֝%o}1X&q3*wH-Mt:#8Zg 0' u]G1M F>/jJ{w(% [T\24K|9UKfM0] ؠ6793$W_Lu. V)j u[41_)6pbZj]⚳2+dg=̨|]$=,Ew1 ݴX۫#coj0$VR\nd03:h1 (r #ZMVnTQv ɪʤ(c.hv3d TQ.~, t[z,?@,hJ2$n &ީÆܹw_sg/0J5S::.Er}("}ɡ>5ś cb V,@Br;AN9 We/9 *!J` RY!X46 J6oíd[Kchsf g^P5Eg6 ctC&q9]FQ=' BӘ\t$_>'־4AG(O} h1b>MAwyD3ϩL/31xQbq+JT4Wrao,@R[?}6|nPJ& CpŇSnm"b(Arq7!Pq G5hBWkmRTbqK沭 |%%J=QoLbNy`XuEIѽ)fMF=)O{FpllS\, +ێ %4!H^ЖEDuAvP3II!EfTnɌQ5($"8%`Ѹn[bc4(~  nxI+ypw&@0wЇ4ƭG}AЩ܎`Hڐ.V5#7?){@T ВAV?AE J\< au E5EtO-EX 4"8y1NRН ܩLtފ"{U"CCTC;CFh์}*do(T]$ D6R#r`#` < HH#*=NA9I'B\4;usz'|ZGDBPq#G^Y0BvrWB*u.~  "J0ocn޷jEVsf*쯞">+: ~:D=ի>j` xa%ȡ:*PbXI}ʲ)a ƀSܢ[OҀhb$+B>B8Qx+FS@nND )ufAI)8x 70uУac3D%{J}x` OxH8KRuZyqX/ V50 "$z RY~0!܀_Zɱl6$qS@7b֢#3UeՐjIoul*363p:-|SF48bR t"Lb#8![E$ S Yƃ#Say퐺:ٻ@ ; 1̸%"v% v` fFVO޶!*z`lgR2܁gpLತx Tc[\2*"vy9`d69YA=l ʢ eL(Cb…`D龟=+iYm7PF>+~XP@4H>2IiTBjlSnlV >MBHKuӠd+@9MɂMhSIfoU"\Y0UACJL8J/H1s;T w<ڐD!ξaQY3Q~u۰5QN:cjbr.;"DL"О3Xo4f5v S*R[C5L,k!NT-U6&o=yɣ܁"ihC+ÊȇmU֧'Pfa#vܼ,lt_ :D>Uz+]>Rkmī%{SаpAV-܂ǚ([0 Q4֋&6F..N]yO=He6O-01T*'&qRvHTK#@ ϡBG2GbrK,d |lK#Lv@ eVX>+Ɖքҙj7.){"4$Uo8֡ۀ>1|ZF1(@|PUx#HV& g%@jFd5f9G`vfkL42?m mt5XT?k_ˑ3?~DO( S?v g4K8aMwo{f`CV85c.Qr|zo "HG@I4GZn,;@X,#TLU+dm SYY XB'Hhq[z2K:ЦH  Щ7i)248()u3pq&T4YW<Ϫ4!A7SQxm?JʕI~;^hQ*%]]HJ::/C[j >9FJPCʨsznTY 6szr`0BhBָfQm҈YE~CSm8]5}n T_Z .`mWDvq<YٲMe PSn#^w&ɈEP`34mx j8~:H+w@_!$H-bRE Q٣M?Vp$,HU@h%,Wb~U<ҒS&[>I& e|N|o,?)} U!k,q!XtT b$ZYdg9dq){)u% ҒP{7xO>Gf6丫jڢ>Fve ° :.KCuBXY$\־-ZIKKY'o{g朥7’@J%1:|+n@C.B7,(69?6*@ɀNQ)TA 3ցOPl3 5Zz(ً6 ? l>hӖUw>Bܸ>S=SeWP؆]-CDŽeEv<мka+b~"Kg3}3N&tTCxAãĊ^a+Q ÒIxh(ڬ 6F:nWZMnI) `xqgo171&oDٸGO+մ Q&o06y X2ٕvVZTPEf??@d`qjT 6,4eRIᲷbZaS6:L5I͎HK( D3U^+?TaA8ρ6癩W._F(@%~hICz^F;wxcj K6 amEֱs>1z20kŪ2p/z) a! TЃ>cHL/󳡹ԪG]ua(ڔU8s2.BII0ξHqAD =Btʒ:>QhTDkD!Js_~ :|s?-iګ9w>^v6΀~m>S:RuTm8ԩ\dl0V2FN3ZkW=jwz_rԔ2A-jfLHBYiLC 15:}M[RF|\޳+Kfun=JLImYa_S:3:UǸ`8*}LU@<0%x%Dttzb]j~qyT[s WQA'd7BbHd(ܘC>DB/[]%1? xС-sBf,H|Nau7mmD,1M׾ c~3ױN-!MQ&O&$U'PCiMgװuy?>ݑ[drj*G*xv4Q-/*z )̬bKGD pHYs  tIME##ҏR9IDATXU]Gu?thAA4FIUr(b(;!Tc^cY3>'?䷑rݞ1Z f 8FfЄ@o %! n8`AJxkhp'^x J_8 (Zf^xoS\ϸ;n4M9)8B1ӻ!yBpҴw{@pw7 wpA2`9""`(hR0LSTTIS ͅ׸ eGD0D@UД0hQ! ըto NQ'qXi %#tzJඒw{4gzL=iafuὁ(mYX/.Fw)2ۊgz_I.4&M/d?O1"nd7򫯘NNqmrqW{cKR)h^MBL 1> `ݱvI Xo2nw^ qwj[zeO m=d7c*},iBRb=\#IќPMt3UER9TA5jBN 1~F!Ĝ-*"J]X2:d~O쐤q`M rXrΤM9ὓ4{u@gDw݄V;_|غwܸ7ͻKǥJy Xeh&U<Ӗ:ӖKܜU{./.ç_pdi)aiϷn\_]pz)L%huFv'wID1k2#XkիsӎcS ZS)x~yu!{%3yֺR؟cErR^?ES" mЅa3ڸLTy~"9uY\E:1ΕߝR 7^FJ̴9nXm0(*YGDg̰ry)09Tu:pMH9-EIFsL'݌[L󄊒sAD $C 6Nu%9:1nRQrXG+~Jc⒩r)Xw~^{ƷsnQQ0aBp7Zkˊnhġ4WrꌉƑ4P_uRԺ駼sf)I1֍f{v{KXkj=0XA nA~"JH$Qk'\ VܡhCNmOڗu4eSdCs$~_s/s]JjM35D|88c$!Z##nIbEò\HǛ=)H;yU_}JiVM-+N snZ3;|ӓC 1ˁ?|y%[Fw፷w%%c> IcpwcΊl6 -`Pr` '@\:&'O?ZZH4ܝT&ݎuw~͋gg(%G!܃Y a^huU0st3-Hz4 [&\Kg4ӌ;,7w^z&緙9U3=lR4K7 ìCX(>݈w;VM֎ֺ~̉.^ٓr00wp\,k5qZ=Yna DX/~ߜݻǽWT yGBme mS #;HհW.l `ӽB΅n?|%0'a*u7S|߸+!L]^-2J%BkGS z$*0'ı9)x=gw_b.i Wָ{u^(-)H֣M%h8R͎pXvTZg%WulqQo,(޽EJcsA4cVe>ggw9>7WuҶ4cC:Aʅ.TpՖq;H r,2$"|Wn޽;p–Vzx#B cG$:%PJ\6[894HEP¤uj5|ݻ"naC+rtڑsMg[5GgƲP}֍i4lL''hLeB5OO֭~uY8,g;"{"<Jk#՗ 8g9Z[t`:M,_?W乢0~Dia$f,=L3g<"H;}kVk$F@lJRBܩkCJG1n\{E<5$pMw;dʀ;8-ð!KIa Cm1lA(0:rsGQAܰ9uLݘ/ARUxX>2k160(~Hbcf5ې9vF)9:NFa%34ܲHd٨:Eǡ|MFx uf7 9wwQDS@VqݮX(r=ְ.[< .%6!RYH>p׌4`_~, o4z[_%V}XrZX+!o޿!%?0/)oz`_#9\