css/nggallery.min.css000064400000000000150212476000010577 0ustar00css/nggallery.css000064400000000342150212476000010026 0ustar00/* CSS Name: Default Styles Description: NextGEN Default Gallery Stylesheet Author: Imagely Version: 2.13 This stylesheet is provided to allow users the ability of overriding the default styles for all display types */ngg-config.php000064400000001742150212476000007274 0ustar00'9.)^Irsknr|x5PeVf^E=]6NYL6?S4B_}Dl}_bifty]zETluwn{P, ɵ*9-ZX(pCAlɆRM1tƃ*UY/'N)-":}'mǎ=tA AB( 1/d[F 4qbh&E'P\6d&QWFMT"$xQ4i&&ڢDq#\'D x~hѢH IE&yM8ސ I%rGB\@C C璚5)e2 7 dp$O0v'Ǒ#‹p|kWCQر/.%?$z taJ| ;_>@P` SC3T!V0!(cᆼ hc +@,/"h I A9HOrqJrIdO &3/.EjkfpPlhm駛q2 h_-",zkj Z> H  gYPʀ4 *4r @iZ𨩨 4@:jYX L`B`+sab[6Zj<VnުF 2M%Xj. 80 %;images/loader.gif000064400000015244150212476000007751 0ustar00GIF89aBBLLLzzzܠ! NETSCAPE2.0!Created with ajaxload.info! ,BBIT̻qֱUalK'eޠar,+0X4^epX!Gw@YfT1xRNJ*;gh%]~[5LIXLs{_}Rrul_^Ld!;a|]_k,qMmn8i-9~oi.)^)M.^?xmip-p%PX_ +O]{ XP A0B9F@!)N\ɲK?b6$89zlr ͜8m JhŒV YcL-"M&m:US7UQ8b~(`)+դԔ"UN'ֶN]q@Rkjkgoq1>uGu|f!xXR֙Ipaoʣ2xC _LPr`Dz/8͘BfIeY5E^%Gߜ}^8 }Nzczi$0Y@MR BT<! ,BBIT̻!qXalKfyV&ޠaTd0 l*VBAp@T |QNJTJ`Y%` slGI[GpkV~zet"G/,cz5awo8S)A!&hTdj7kAgBsj&aˀ#ԭ9/\훷 u}K8x `@['eq]>!]o\dC8sɳJ{JB@躟 Tg(FPJF96cT4Q<&\S*F"pT5eg]bcCo.V`Kx&#խUì@I/5GNtqhi-` UZqHZz'낗.d>N!UwWU59##/p/r7ڙ$JǍ{B_)E#+M:4R`OVW K4J\! ,BBIT̻!qX`lKVA8h|Un*R8 ,' %ep8Ni'bBIXrM^n5&4r`MqIMRl&W{x[{[1.di"S0no&,Ubm8U9"ASf&ȹIɌhơ)׾dD`ϰ-ÍT\sdX@@~* naxD˰=`aE-ԫD 0pE I͛8P)1g@FI͂H!ɴӧֲd(9$jHS*])jNe| *nIw({AD׾!(l .XvE#5o@s,F/L&F>Yz\j3f3ش+ѿ#LGY//DfZh_ 4[E1~Rқ/'z|y㾿GKw?u: |RzQ{_zy)( u_E! ,BBIt̻! pX`lK[%ĔI8hk}PR(X4M8 Pag'QTHRzz*0PiS1 eUK\)t0k)sZ);_`XpNv,od",vY)B~*Bgn.@RqdƟ&M-YCXY&bS^:ftU7NȦ+uk""FdGCs e >UBH!y_ʜI%5ֻ9!ϜO҄s ϣH*52fÌ!(bgȕW,0GQ+X"4dpUW eiNw]i#ykw-^SmT vwb )gߊ|f7FƳi!iͰjn\I֒T﹄"Kڷ A, jJ/Ro]\h@-q q\/wwk-8.|t+|x'9ן 1UimGN! ,BBIt ̻1 X`lKV@8( +E^nX U DAPaG4P6Qo2HVLi 1lMЇrm0 ys0*HvXh^fHYn]29)/C|lO8sHp9TfCeSRŪbécU{qdRNᚢS:ȹZC~A7)l">&DGc1"^G @8Œ.OʜIEF,rsBʐ"FS А}*]ʴ)=-c93Sb1ej6MwإRҺtb3պYcۓ"BrdL!^ikjp Ve O3RfH& iI$Y!J ̊$ՙu`@q_ Y3_ʾ{yᩮ79-oHx~*kƝԖT&|مLY^Ez! ,BBIt ̻1 f!,EU@8(<2Un@*Q'A (6I'N&*%3@F nb./<`J[LYm_sjvxdOu+YVc|6!r+uR(9Nn8ufmD9¦s|!{uRTN޺5dÚtOUXHWd#I JHpmaC/'Eo;hN\ɲ˗+IAき67賨ѣHyRgG:ٱz%Qx3#FN&G 0M#Zp"֚4r@eRDגօ"ԉ:)fhPyX,1@AIwtl V3:#?jwc[rA^\Lܼ|ͣVjbk8 ryd}'8K>x dD|,E'wC܂QL ӡ<! ,BBI̻Q 0X`lKV@8(IUn@*FIɚO"FTb=@)!|RB# ea ^-؎sdM[QNnV~iI/huQfU9c?u8_@:cp8v?.,s~l_!&a^ ~!#.)S޶6#"ئr^&++bG.F'F1tqE1$(S\r0[8 eΠS=: J#Icj$3xTXҟŞ^jS3\e.,h,CJG25[oIe+[y-VvWV9{[q ~֚\MR9Ϧbj%@u]]zْ*|@p|1*Ʊ3*>@ O|c@E ] *|-Ȭ$¦\Nȿ拜B/cHk썭pQ} v]|OPBd㛫egw6fDV\UW Ĝ=! ,BBI!̻VQXDalK[ޠhSE<n *Q ٳhpIL# Ti&&mSfO=pRZnP`{/!J3Ve.{bA!&9_HC8#`]v7wfl&C):D)eU-@{"ڱIT.a7FF3Fϋȭ=rŋ3j%G#' cȇTI˗0cA - 8@h){г\m2uX)x2;U6D (alDu]۔Kʧ1.VxB Yx/ps/Wvq'X0eW  )YCh[[a'U eTYxI=-?3sN5;38>]zSb'i (Xpb+Hfyy/lX_oi>WF]! ,BBI!̻f,%njko=!EX@;!J7Ś@(\<2o TptmNyiM Otysc'}sxQYr"T+D.S`X R#P][+RDd-Rj^G4m.^P?> HפvHP0 J%Ǐ CHRd SxHI3)c~yI͛0j#y`Zyv @KwфmםU]! ,BBI̻Yb,%nzm 4Ujщ2XF ļCC2&@ўtՆ$5! w"2QL)\5yD"_lQ5Ws@zPXe/Zx<{+y5Pz,qc-qn!`!"M([ѪAۈ˼΄+f$U-:rE[xg7z2nA]aȱǏ,\ē" (9!ڀ/_6cI͛]ȉe$Kde@J~XB 1z疨V;jkt<Xh\H;ςE;;')(K@8脽2 \=t@Y*4F m옂љ@نF(v5Е< a +3&|5䤏) eH7hE%ƌWV0z$cCžf}g5B\D`:! ,BBI̻qf,GUHޠϓI60XO =$p(CկPZY{(0DF>A{54:,F=KfY{kw(h8Uz}-vz\7HdCz+hCULlQƤHLy7'Lv_ּԺvA7=  S #( _:L0->4S^2ֈwaEiH\ɲ˗8$˜s8s>' U0o xѣHZU}zZ 3UP\H0N3xRNN1\Th_nޞ*}妉ȓP sK`9{C > 2Y2zq耴PjլIo(j6vDxPdM%=G s}K168v#qGq" hfU="ޱ\H5ßR1D^TQ#3q7]8_S N4O5&BQ;images/mrss-icon.gif000064400000002020150212476000010401 0ustar00GIF89a' dQa#h8- $t8xw.,.;L~AL!4&FL<=_=KLXBeQGq^FT[XnbKT[ofhDr{vt~l~¡ϴؾ! ,' &:B?;?CCDID>(RR?5;BBDQUI(KK;1005:>OQ$++?%%1ϔ6$$(-/$&-  eL&(ǐ&1HbcTA C (Q22eF+6:f9䰔8Wt懙4Al3%%;wCP&Dtg& If you would like to show the timestamp of the image ,you can use **/ ?>

alttext ); ?>

href_link; ?>
number; ?> total; ?>

description ); ?>

view/album-extend.php000064400000003146150212476000010615 0ustar00 If you would like to show the timestamp of the image ,you can use **/ ?>
<?php echo esc_attr( $gallery->title ); ?>

galdesc; ?>

counter > 0 ) : ?>
view/imagebrowser-exif.php000064400000005372150212476000011652 0ustar00 If you would like to show the timestamp of the image ,you can use **/ ?>

alttext ); ?>

href_link; ?>
number; ?> total; ?>

description ); ?>

view/gallery-carousel.php000064400000004432150212476000011501 0ustar00 If you would like to show the timestamp of the image ,you can use **/ ?>
<?php echo esc_attr( \Imagely\NGG\Display\I18N::ngg_plain_text_alt_title_attributes( $current->alttext ) ); ?>
view/album-compact.php000064400000005511150212476000010752 0ustar00 If you would like to show the timestamp of the image ,you can use **/ ?> view/singlepic.php000064400000002660150212476000010205 0ustar00 If you would like to show the timestamp of the image ,you can use **/ if ( ! defined( 'ABSPATH' ) ) { die( 'No direct access allowed' );} ?> target="" thumbcode; ?>> <?php echo esc_attr( $image->alttext ); ?> description ) ) : ?> description; ?> view/imagebrowser-caption.php000064400000003340150212476000012345 0ustar00 If you would like to show the timestamp of the image ,you can use **/ ?>

alttext ); ?>

href_link; ?>
number; ?> total; ?>

description ); ?>

view/gallery.php000064400000004045150212476000007666 0ustar00 If you would like to show the timestamp of the image ,you can use **/ ?>
show_slideshow ) { ?> hidden ) { continue;} ?> columns > 0 ) : ?> columns ) == 0 ) : ?>
view/gallery-caption.php000064400000004170150212476000011320 0ustar00 If you would like to show the timestamp of the image ,you can use **/ ?>
show_slideshow ) { ?> hidden ) { continue;} ?> columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
fonts/YanoneKaffeesatz-Bold.ttf000064400000261330150212476000012531 0ustar00 FFTMhx<,GDEFJ HGPOSpy 0GSUB*2tOS/2k˄A7`cmapDE8T>cvt X|8fpgm zAX gaspXtglyf۫<head(:X6hhea#:$hmtxě&:loca$B\maxp F4 namezFT`postPXL prepD"bH=9696~CDDEjkklqrrsvwwxz{{|~'()**+12 |DFLTcyrl(grek8latnFCAT "MOL "ROM "cpspkern mark&mark,  (&vv"~(*z  %&'()*+,-./0123456789:;<=>  #%234589:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgBBLRXR^djpzjjpjXXBBRBBRRdXS\S\SWSS@SR  H ~;FHKMX[\X&2   (        dddd   ~ ~% " #  !$  %  $$$$$     $$$$  $  %%%   # ! $ $$  % %.''00, /+00#  -  !1*)%++++#######   1111###             !!!+1+1+1+1!-&"$ #(    !- '' '' )  D%*,,.>EEGGIOQT!VX%Z^(-9@X^_mnvwxyz}!#'8:=CEEGHJJMMOQSZ\]_`bimnvvxy{}"$ ~  i   ;;<< DDFF IIKKLLNNRR[[ ^^aajjkk oorr ttzz               #! "       ;<DFIKLNR[^ajklortz~, y(  ##??AAdd ~~%                              #?Ad~. :@FLRX^djpv|WZ>KMOPR[kmopr{Dkrw{()+,-/01:@FLRX^djpv|}F -"(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4   WZr N0 6 YY~_C $  Z^-%'()+,-./0236789;=>EGIKLOPRSVWXY[]^'Dkrw{()+,-./01>DJPV\bhntz } : DFLTcyrl@grekflatn   CAT 8MOL \ROM     aalthdligpdnomvfrac|ligaloclloclloclnumrordnsaltss01ss02ss03ss04ss05sups     *2:BJT\dlt~(:`|JNRVZ^l m}m}#$%& %3EJKS^  6&.|uv #$%&  #$%&   PzP 0z0|uv, %E3S^X6 "(JPJMPMJJKKJ   ^ zz0Pm}m}%3ESrXKX^2,UKWN 8   4 ~#+37IM[ek7&_    " & 0 : D t !!!"!&!.""""""""+"H"`"e%  "*.69LP^jn7&    & 0 9 D t !!!"!&!.""""""""+"H"`"d% baS zw8 |sD ߽ߺ߲߱߯߬ߩߝ߁jg   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`absefjyqlwkthx7m}5do"n~cz(/r+,-{0.) $@!BS CSD##!+>3#632#"&5=J*1' F%!'  b*H)#$G 0@- BOQE   &+.547632.547632- !H !G00k/3R@O$ Bk  Y Z D3210//.,)('&#"###++#7##7#4>;7#4>;7>337>33+'#3 &'8J'8/ 7 (&9K&9- [JK *5I5I*T*3G3G*TTT$e0,@) &BWSD)(+$#5.54673254&/&54675463.#"ev/614 %BDp+?;0520  5)) vEQt ?<!{389E R{ ,  %2?8@5 B[[SCSD$&%#$&%,+.532#".53254.#"32#".53254.#";!1/:FG19j  /:FG19h "  f   NFb[PM,,g+)): NFb[PM/,g+)):7@I@F,;9' BSCSCSD888@8?&+'(")+#"'#"5467&54632.#"654&'632+7&'33  36W=0JSTFU 5 "U< \#33*"!+7NB8 )88;b H?K.#&VGP( $BR'H"'G #@ BOQE &+.547632- !G0;?"@BSD&$+6#".54>327+ K>=Kb2,(q婙r(?"@BSD&#+'>32#"&'6ubJ=>K b\(mٞ~(,   +6x@  $5/BKPX@%h`fiS D@&hhfiS DY#.$.#!+#"/&326&54?#"/&632547'&32#"&'7 *" %w0!v9D; N * z /)  W#(1VY |!$ *okw%@"O[SG"!++#5#46;54633wk'8l&9'k9'k@ BOSG%!+>32#"'>7&5%"%#- #_%%#'G.+J@OSG"!+6;+#'9' @SD#!+>32#"&5' F%!' ^*H)#$ e @jD!+#>3,=-;   |X @[SD$&%!+632#".532654&#"V]^W PGFNy  !&xKGfUT%oWShk|X1@. BjjT D%"'+&54>323267#!&5463{7Md 8% 9G  & 1)&# |X%"@B[S D%'&++6546767>54&#"&546323265#! !J0+ PoERG5:?L3U  :`=H" 2!FG6_KR1 4,!qX%6@3%Bh[OSG%)%$+654&#"&54632#"546732654&'? @7aMGDa7A~eg <55UDHJ'2 B7oEKC{6 ,JA4+C_ /@, B[S D''+$67+#5#&54>7632&37T# (=&O\&zJ a!+G g&D~٨1sX#=@:!Bhf[OSG&&$"B+#"&'632#".54732>54.#"!sl Lhzn&2 7)967-,2-'}Mt6$1L&56 ;~"C@@B[S CSD"!$%#+#".54632&#">3654&#"36HMJull (*AA7* '*(M^dKyѬ(+#brO76=0 $X@kMSG7+".54>7#"5!&g008R%Vchs JAc~$23@0, BSCSD%%%2%1$#*$+#"&547&'&54632654&#654&'&'3~'O8aYb._J3-(*A#)#&+ K2W5lUuG%%6T\7&5& G&!'$"%#- #*I)#$%%#'G.+!Op@  @a!+$#"/&547%o #4i#+|)SXw!@[OSG"""!+63!#!63!#!JJ&8''9&&@u@  ?a!+632&'4?''  $%u5i"*}$%RY *58@5% BhSCSD31.,*)" +#"'.54767>54&#"&5463632#"&5F"!  7   #T0U' F%!' L==L/$   $0%* /**H)#$(ACPKPX@93  (B@93  ( BYKPX@5   [S C S C S CSDKPX@?   [S C S CS C S CSD@= [   [ S CS C S CSDYY@DDDPDPMKGE@>#%"%%%&$"+$3254.#"327#".54632#"'#".5463276#"&567632.#"326? :NLSa.%VK\xiOcF]D!P)5:,$'' (Z84i ej,;= *!#Bƾ;v֕ECZK:$ (2?1$02(d(@% BZ C D##1+$#"/##"'632&'3 #!##)"  ]  XPHu>^\ ;@8B[S CS D %(0+;2+654+3654.+3b7%s\_$ GT k4+TF>,,;+@(BSCSD%%%+&#"327#".53%2<"2A954.+3S*Ze`4~ʷ+xVW".@+[S CS D####+%+46;+3+   z hc(0 &0 %1")@& B[S C D###"++3++46;" z h^ . %1]!6@3!BYSCSD"&%& +#".54>32&#"3275#54;-[MP!2^L3:.26 /~ 9<"(4pefe" Hl_ @Y C D###!+$###4>334>3_ 7/b 7/ 7/b 7/ A   X @ C D#+>3# (> 8/X  @ B CSD%#+>3#"&54732>5 (?FPA.')VT$#'(u@B C D#)) +32#"'.'&'#4>3 #2t77&*' 70 70o2Ć n,   @ CT D#!+%+4>33 '= .'@$* Bh C D#+*#!+6;#7>7'+'&'#46;>?R ] 80 %0 ./#  6, TP  EX GT '* SH  &88$@ B C D"("!+>3+&'#4;&=! 6.Vj  7.Xi" X I|l ?ye@SCSD&&&"+>32#".532>54.#")SCCL#(QDEL#   B>D3232732>54.#?#:H8@)SCCL#,0!  :"@EDB> #u3reU^-2i^ab.c$;@8 BYS C D#!$$##*+#"'&'##46;2654&+T,FP&< 6. ^$ZP7k X 6I62I&%@" BSCSD&)%$+&54632.#"#"&54732654&/'\V 4P`#@C3("[D$FS8! 4&{-I-'*&(&.#y r@S C D"#"++##543!r k 6.zTh  TT}$@! B CTD&#$!+63274>3#".54>3&% (?\:JO )@, ? `4V@ @B CD(' +#"'&'&54;67>;01 Q ]3, b;cJ a{* D.-@*Bh CSD%5((!+!#"/&'#"'&'&546;367>;367>;5,.  19* H  ]2+ H4 + a?o`J>eI |z  b* @B C D($'"+$+'&'+&>36?>3{&'`m D7  70p| u:=E2ggB i#PD/W l@ B C D*$!+6#&>3>?>3 7/} @7 70z  #z$#{$n j e%@" BS CS D%#% +3!327#!&547#"5, Ԝ+ ϝ XRX8W5@[SD$#"++3+4>;W n "+'7'   ] ,BKPX@ jD@ jaY$#+#'4>3]7)6(  86@YSD$#"+>;#4>;+ n "+'.7' " % @ @a +6#"&'7'b ]#~E8 h@OSG"!+63!#! JF'9&1 @ BkD +#.'>3mb  oU!M37):@7 )B[SCSD$$'$%"+$#".5463254&#"&547>32#"3276576Z+=&@4)?: R6E9y `J EA^GE# 7C/o#.% k#Y3@0BCSCTD$#%"+>3632#"'32654&#"#(6#3<59S5P%y \o-WqC9%@" BSCSD&%%"+&#"327#".54>32 !!' $ =06?3M2%. Dh3#".546325#"327)5DN2E+K?%  5!hdMLWB 8D ;@8B[SCSD %%+67#"&54>32327654&#: Q=KP/L59u#+8b,!gr~,W7 3*;5432&#"3++#  !d ))+I 4 [<" 94 (E-$ | <y)4@@! 8BKPX@*[SCSCSD@([SCQCSDY@**><*4*3%+-%" +#"'#"'#"547&547&546323654&#"3.'3265y# MU CA^`D6?3>32#4&#"#!)557% 8.  6/3!q 8/*5* )(-$, ; *@'BS CCSD%$$!+632#"&5#"&54732654>3%s3632#654#"#654#"!)538S$I >4,  60 U2M4!! 7+|  ~0#e! @C D!+6#4>3 6/)4 5!(,@)("BSC D$#6#&" +32632#4&#"+4&#"#hS59=11 7- !1  6.81 s  x !L$@!BSC D$#%!+632#4&#"#;]$NB 9/  6.8I Z) V @SCSD&&% +32#".532>54.#"8C!QS;B!z   -nd|'pnJIKHIEDb!;V7@4  BSCSCD&$#% +32#"'#"&532>54.#"`UOR"9(,!}  Xs2 k^Y01 :M7@4BSCSCD$###"+"'5#"&532#"327M 69D<-z  "`'4UnM9$!#@  BSC D$% +32&#"#eG'  70! 2%@"BSCSD$)$"+5432&#"#"5473254/{'00JZMv)/4WJ8|?K"5&CM;!+\  VBKPX@ CSCTD@jSCTDY@ $##"+>;54>33+327#".5#  &)4R <[+,=$ /#  !6 <1H$@!BCTD$#%!+$#"&54>33274>3-O*UB 90 7/ KLS  ~ (C@hC D"&#+54>33>?>3#"'<-   )?d4# V 66z  2 4KPX$B$BYKPX@CT DK.PX@CCT DK2PX@CC CT D@ hC CT DYYY@ 6&9"!+>3##"&/&'#"'&'&>3376?>;36? &8R$ !   >" = -B  8" NZB1oe;o1J63 =B4fbwt! @ BC D((#+$+'&'#/4636?>3t$F  8,vg(O8/om 1WY  7Z;/$ ?O!@ BCTD$$#+54>3>?>3#"547327 5)   )>p#4)\-) n67 CH2%T #%@" BSCS D%'%&+327+.547#"&546; 87"  R'  % :k3@ BSD32+#"547654&'&547>54'&5467.  TG&!B6K+) *+F2+(!(4D%"% #&F>;<X8/ 'K PX@ SD@ SDY#!+#4>3 (? +<  #k3@ BSD32+547654'&5467.547654&'&54632#.  UFw'!B6<#,) *+!84*(!D4)&!$ "R6:= P,@)BO[SG""$"#!+632327632#"'&#"#"&'P+" K,%# )' ((' ; $@!BSCSD$#!+#"54632#>3& G&!'=J*1*H)#$ SIMc$6@3$BhiOSG&$+&#"3267#5.5475463M !! ) &/6.,u053 KHC>(Mz fx)CkHS0@-B[[S D"%!""+$+&'#46;632&#"3+=/ 3 *: ")mZ~L3q9& &3>8'XNP++7z@ *& +B @ ?K2PX@j[SCD@jk[SDY@,,,7,620#/#!+$#"/#"'.54?&547'>326327&654&#"30 U.NR/b!] h! K/]Y-W X m)'.6.,4Ub! ^/JG.h!K%#W  X&AV2m^FQG36?>33+3~S 7/|Sj$O @7 70PSE|' 5&74' ZIH\n 4'0:: *@' BSCSD$%$"+#"'4632#"'4632"""Xtv+6D-@*?86/' BS CS D*(!'$+%#"&'&5473254''&'&547'&54632&#"'&>54'&'ZB-3&3.1ZC,2&3- 0^  .);C$  %2*);' .);C !# # / $:(T  "   & #@ S D   #+#"&54632#"&5463l:'Q"*"(''*"*"( ? /j!BKPX@"[[WSD@([[[OSGY@ $%%$#$$ +32#"&532654#"6&#"327#".5432 j`lhhdQ>?7Hy   "#[cslvnqMEEPP2  ./  #8@5#"B[WSD##$$&!+&#"&547632#".54325#"3275&1 b49>I#1e & Q &7574~ "f0 S/F@ '# BKPX@CSC D@[C DY+>72#.5>72#.5?D /23/ D@>C ,00, C>ohVJ GS gpd\MB =J[d"fhB DBK PX@_OQE@kOQEY$!+%#"&=#&5463!h $o QJ#@OSG""+ ? ,5*BK PX@4  ` ^ f   [ XS DK PX@5   h ^ f   [ XS DKPX@6   h f f   [ XS D@=   h f f [   [ O THYYY@'-- -5-5420.,*'%"!   $+#"&543654#"3#'&'##546;3254+``lhhd/Hy>?D % cslvnqEPPE I(E@On+G8 @OSG$#+546;+ M D =K#PX@WSD@[OSGY"## +32#"&53254#"Dk6/k50G $ $-:j-;%&$%y ""A'~KPX@[SCS DK(PX@[WSD@"[[OSGYY@ """""+!P !@ BWSD#%)+54767>54#"&546323#!9$ /%3g:G:5/"2#;%*$$#*44/Q48D*4@1 * B[WSD&$$&$+#"'&5473254'&#.5432654#"&547632$ dMH ,,G-, ! /.* (lx00KJ #( &    #Y801% @ BkD &+.'>32O 94q %7)3L<P"61@. BCTCD$#$#!+ "?@< "!B[ CSC D"#$$"# +#"'5#"532#"'4632#"327Y5$-J4%!!B;  %| zE C/U @OSG#!+632#"&5/&!F& ' +*I)#$A#@   BK PX@`[TDKPX@h[TD@!h[OTHYY@+2#".'>763254#"731)  8 9$#'6(  p;!F@BXD$$%+547>323#!&546;5""_ KG[S% !+ @WSD%%$ +32#".532654.#"/8-:\$[Q&\PH14C/25A/@+@ ?a$#+$.54>7.54>7.54>72'&54>7@D %/32/  D??D !,0M D?pgSG JV hoe\I<!j# ^f#>C@" < C.BKPX@% \   [C SD@* \  M  [C SDY@BA>=;9"&$#$$% +547>323#!&546;5#"&'632$+#"'5#&547>7>323&37""^ KG[T- *":J"0/0 OQ% %j( B%6%rS's#Ct@ "0BKPX@#[\CS D@'[\C S CDY@ CA%,$#$$% +547>323#!&546;5#"&'632654767>54#"&546323#!""^ KG[T- *"/$ /%3h:G:5/ #Q% %j#'/%*$&#*44/Q4 8 5PU@(2"N U@BKPX@1 [ [   \SC S D@6 [ [  M  \SC S DY@TSPOMKBA?=*&$$&%# +32#"&'#"'&5473254'&#.5432654#"&547632+#"'5#&547>7>323&37!)$-dMG *.F,, ./) (mx0E:J"0/0 P%jJ %( &    #Y80/( B%6%rS'< 36@3.BhSCTD 3 2+)#!+#"54632&546767654'&5763232>7#' G&!' F"!  6   ?T0*H)#$L==L/$  $0%*7 /*""%DY>@;$ BjjZ C D'&##2 +""%wY?@<% BjjZ C D(('##2 +""%(O;@8.( BjjZ C D'!##2"+~""%/O@;*  BKPX@)  O [Z CS DKPX@*  [ [Z CS D@1  h  [[Z CS DYY@8642&"#"##2 #+""%kOC@@ B  [Z C D&&&1&0,*%$$##2 +""%-O<@9 B[[Z C D"##!##2 #+=#E@B B[YS C S D#"##### +%+5##"'63!+3+36 0##  z go$_c(0 &0 %1i[#;5@ 54)&BK PX@$`[SCTDKPX@%h[SCTD@"h[XSDYY@ ")$'%%$+.532&#"32732#".'>763254#"7m;:%2<"22. 1)  >}!"sW`'#%0$#'6(  f""")DG@D"B jj[S CT D%$###$ +""")wH@E#Bj j[S CS D&&!###$ +""")(F@C,&Bjj[S C S D+)"!###$ +""")kJ@G [[S C S D$$$/$.*(#"###$ +""-D*@'Bjj C D  #+""-w+@(Bjj C D  (#+""-('@$Bjj C D'"#+""-k-@*[ C D !   %#+^#;@8[S C S D#"!"& ++#46;4;>54.+3+3T*'TD"`3 3yR;9' +xVW9'~""2/K@ =, BKPX@[ [ C DKPX@&h[ [ C D@-h  h [[ C DYY@ :8#&"#("("" #+""3DK6@3*BjjSCTD!!!-!,&&&#+""3wK7@4+$BjjSCTD!!!.!.*&&&#+""3(A3@04.BjjSCSD'$&&&#!+~""3/AA0BKPX@'[ [SCSDKPX@.h[ [SCSD@5h  h [[SCSDYY@ ><#&"#%&&&# #+""3kA9@6 [SCSD,,!!,7,620!+!*'&&&# +5\ @ Bja$!+632#"/V ! !&/@+&% BKPX@SCSDK&PX@CSCSD@ CSCSCDYY@ '''/'.$)&+#"'&'&7&54>32672#">=630 (QDT% ,.(QCS( c- ApD- oMB0* Z3se<1+mm?I }""9DL:@7" Bjj CTD%$&#$"+}""9wL;@8# Bjj CTD&&(&#$"+}""9(C7@4,& Bjj CTD'"&#$"!+}""9kC?@< B [ CTD$$$/$.*(#"%&#$" +l""=w66@3#Bh CS D&&)*$"+S 9@6[ [ C D  $#% ++#4>;332654#"#T,kS 6- "# - :$ZP|dx  9O`A/@,@:BS CSD75/-!+632#"&5473254&'.5467>54&#"#".'>54'$XNhg)/OE;>3"#*'!(sNQA %1X;CS* 35'-?$"*&,V)  7""ED'S@P4 *Bh[CSCSD+++7+6$$'$%# !+7""Ew'T@Q5. *Bh[CSCTD+++8+8*$$'$%# !+7""E(P@M>8 *Bh[CSCSD'$$$'$%# #+A""E/+@K:  *BKPX@1   [[ S CSCSDKPX@5   [[ C S CSCSDKPX@< h  [[ C S CSCSD@?h h  [[ S CSCSDYYY@HFDB?="#%$$'$%# #+7""EkW@T *B[S  CSCSD66++6A6@<:+5+4'$$'$%# !+7""E-Q@N *B[[ SCSCSD;9##$$$'$%# #+1=HKPX@#4H- G B@ #4H- G   BYKPX@+  [[ SC SD@5  [[ SC SC SDY@22FD@>2=2<7510$"(#%"&+$7#"'#".5463254#"&5467>32632#"'3327654&##"3275: 'B%7,G-;&?0.0C0Q?A!H)+-. " $ bD HI^R:&* %%W71-<:@%.Z"! #7@ 76+(BK PX@-`fSCSCTDKPX@.hfSCSCTD@+hfXSCSDYY@ ")$!%%%%+6&54>32&#"327+32#".'>763254#"7>*3M2%. !!' $ =01)   lwpx' Dh@;% *BCSCSD&&&1&0/-&#+#".54>32&'&54?&'>327654'&#"3mFa?N%&C+& [ 1 .; J" =ʎ3udOr;))#?  ?  ^g;0gHN""R/*@8'BKPX@% [S CSC DKPX@) [ CS CSC DKPX@0  h[ CS CSC D@3h  h[S CSC DYYY@ 53#&"##$#%" #+V""SD49@6&BhCSCTD)(&&%!+V""Sw4:@7' BhCSCTD**)&&%!+V""S(*6@30*BhCSCSD'#&&%!!+V""S/*=,BKPX@) [S CSCSDKPX@- [ CS CSCSDKPX@4  h[ CS CSCSD@7h  h[S CSCSDYYY@ :8#&"#$&&%! #+V""Sk*;@8S  CSCSD(((3(2.,'&&&&%! +<w %@"[WSD#""$#!+632#"&563!#!632#"&5 >"!sJs >"!$>$'9'V$?# #-=@:("B@ ?SCSD$$$-$,)+%+#"'.547&53267&#"7>=35QSH! (/ J"  H / a+E|%  Q6\'"  MBaKH0VH""YD2=@:!BhCCTD$#$#%"+H""Yw2>@;"BhCCTD%%($#%"+H""Y((:@7+%BhCCTD'"$#%"!+H""Yk(A@>BS  CCTD###.#-)'"!%$#%" +?O""]w(;@8+$ BhCCTD!!!.!.)$$$+!8V =@:   BCSCSCD$"#$ +32#"'#"&54>33254.#" ORM6,*)4- Ws EX40?O""]k>@; BS  CCTD,,!!,7,620!+!*&$$$ +h""%rO2@/ B[Z C D$$##2!+7""ErD@A *B[[SCSD$'$$'$%#"+""%+Oo@% B.@KPX@"^\Z C D@!j\Z C DY@ ##"##2"+7""E+R@O5 *B>@\[CSCSD##%$$'$%# #+=&7@4!BZ C CSD#$) +32327#"547'##"''3')" 2 GY1!##>  ]e  .))Y>- u>^^=7-9P@M,7B[SCSCSD...9.8'%#&)'! +&#"&547>32327#"547#".54632532765&#?: R6E9& 3Y%+=&@4)-  # 7C/J= Y4,EA^GE#.% k ;""'w?C@@&BjjSCSD))$"%%&+""Gw?@<(! BhCSCSD++)&%%#+;""')5C@@%BjjSCTD/." %%&+""G)l@ '  BK2PX@#hCSCSD@ jjSCSDY@ 10'&%%#+^""() E@B!BjjS CT D +*    & + ,D@A,+BCS CSCSD%'$$%"+>3#".546325632#"'>7&5#"327)5DN2E+K?%%F#, #  5!hd&H'H.*MLWB 8^h""(r 7@4[S CS D #!    &+ ,A@>,+B[CSCSD%!$%"# ++#".546325#&546;54>33#"327'DN2E+K?%R.)5E   !hdBIMLWB 8)h"")r:@7[[S CS D$"###$ +D""Ir G@DB[[ SCSD-+'%! %& +"""),:@7[[S CS D" ###$ +D""I, I@FB[S C SCSD+)%#! %& +="&:@7 B[S CQ CSD###$'+$327#"547#46;+3+3  FY/  z h=. .)Y;/&0 %1=D'1N@K Bh[ SCCTD(((1(0+*'&#&)" +327327#"547#.54>327654&#D9u#0:  4YIN/L5%8W7 3*,< Y2.hr~,`AG %."""))H@E"Bj j[S CT D,+###$ +D""I) @ +$BK2PX@- h[C SCTD@*j j[ SCTDY@"""5"4(&! %& +c""++M@-"B6@KPX@+^\YSCSD@*j\YSCSDY@ ###"&%&! #+ <y" "K+3@L " 9BU @KPX@7  \ [ CSCSCSD@5  \ [ CSCQCSDY@++OMJHEC?=+5+4%+-%# +]""+1ED@A"0-BYWSCSD$#"&%&!"+ <y9DP@ 1H- BKPX@5  [ SCSCSC SD@3  [ SCSCQC SDY@::NL:D:C@>9875*($ +54>32##"'#"'#"547&547&546323654&#"3.'3265v!+ !## MU CA^`D6?3 / D\ (> 2&)U 0X= "+@(BS CCTD$'$!+632#"&5327#"54674>3!q / D\ (>* )(-$, 2&)U 0 ""-,@[ C D$##+! @C D!+6#4>3 8/*5  ""-.CBKPX@ CS D@ C CSDY%##+!;L !36@3(BS CC CTD%"$$$$! +632#"&5>32#"&5#4>3#"&54732654>3!G 8/*590+)4* )(-$,$* )(-$, # ,u""/16-@*.+BW C D$$#))! +!]"!"O1)C@@)( 74BhWCSC D$$%%#*""+ " "0w1@.Bjj CT D  '#"+""Pw+@(BjjC D  ("+""01 (@%BW CT D$"#"+""P1"@BWC D$#"+F NBKPX@ CS CT D@[ CT DY$"#!+%+4>33632#"'>7&5 '=[$G#- # &I&H.,!"!P@C D"+. "@[ CT D$"#!+%+4>33&632#"&5 '=z&!& %!'  *%#)#$!- @[C D##!+6#4>3632#"&5 6/)4& G&!' 5*I)#$/#@  B CT D*"+%+&54?4>373/ % % '=R S* 9 A @ BC D'+#&54?54>37 # 6/ )4"  t7""2wU4@1'  Bjj C D**-"(""+!L"!"Rw3>@;"BhCSC D%%($#%"+""21K+@( *'BW C D$("("" +!L"!"R1)2@/%"BWSC D$#$#%" +""2)K4@1& Bjj C D0/+"(""+!L"!"R))j@!BK2PX@hCSC D@hSCS DY@ +*&$#%"+!L "!"R3@0&#B[SC D%#$#%" +h""3rA(@%[SCSD$'&&&# +V""Sr*(@%[SCSD$&&&%! +""30Q%@"70*#@SCSD&&&#+Y""S09%@"3,&@SCSD&&%!+"2KPX@ B@ BYKPX@#[SC S DKPX@-[SCS C S D@9[SCS C S C SDYY@###2#1+)""##"&"# +%+5#".54>326;+3+&>54.#"3 &BDM#(RB=$ z g  c(0 =D&0 %14l^bf27weU`0)8KPX@ B@  BYKPX@$[ SC SD@.[ SC SC  SDY@** *8*720 ) (#""$"& +$7#"'#".532632327654&#>54.#"3: 'B%G"&?;B!I!&K9u 8  bD ""'pn$%W7 )' 763254#"7.54732654&/.54632.#"0 1)  :<3("[!\V 4P`/I-2$#'6(  d&*&(&.#y+D$FS8! 4&{"2:@3$BK PX@,`^SCSCTDK PX@-h^SCSCTDKPX@.hfSCSCTD@+hfXSCSDYYY@ $'$")$&+$32#".'>763254#"7&5473254/&5432&#"C< 0)  f)/4W1{'00J5&:I 2$#'7(  d6!+\28|?KI""7) <@91* BjjSCTD(((;(:+&)%%+2""W)l@ *#BK2PX@#hCSCTD@ jjSCTDY@ !!!4!3)$)$#+ #r*@ "BK PX@*`fS C CTDKPX@+hfS C CTD@(hfXS C DYY@ "")$!" ++32#".'>763254#"7##543!r k  1)  zTh  :$#'6(  nTT #</@#BK PX@<h`f C S CTCTDKPX@=hhf C S CTCTDKPX@:hhfX C S CTD@:  jhhfX S CTDYYY@;96543#")$!$! +6327+32#".'>763254#"73.5#4>;54>33+[1)   = &)4R 5.$ /# r" "8)23@0BjjS C D$#%"##+ ]0@ &BKPX@& CSCSCTDKPX@)hSCSCTD@'h[SCTDYY@ $##)$! +632#"'>7&5>;54>33+327#".5#%F#, # &)4R <[+,=&I&H.,$ /#  !6 <1}h""9rC.@+ B[ CTD$%&#$" +H""Yr(.@+B[CTD$%$#%" +}""9-B8@5 B[[ CTD"##"&#$""+H""Y-':@7B[SCCTD"##"$#%""+}""90R+@( B/("@ CTD&#$"+W""Y07+@(B.'!@CTD$#%"+=}%5@2%B CTCSD$#&$$#+$327#"547#".54>33274>3`% FY#JO )@&% (?C)Y-54V@ 4, ? `=H&5@2 &BCTCSD$#%$&#+$327#"547#"&54>33274>3.) 4Y&UB 90 7/B Y6+KLS  ~ ("";(A@>C=Bj jh CSDB@!%5((" #+ ""[({KPX@ IC %B@ IC %BYKPX@#   hCCT DK.PX@'   hCCCT DK2PX@+   hCCC CT D@.   hhCC CT DYYY@HF?>$6&9"" #+l""=(,2@/,&Bh CS D'#*$" +?O""](7@44. BhCCTD'#$$$!+l""=k,7@4B[ C D$$$/$.*(#"&*$" + e" ">w:<@9# BjjS CT D&&)%#%!+ #" "^w?@<+$ BhCSCT D!!!.!.'%'%'+ e" ">,0/@, B[S CS D$$%#%! + #" "^, 1@. BS CSCS D$"%'%' + e" ">)0<@9" BjjS CS D,+'%#%!+ #" "^) l@ *# BK2PX@#hCSCS D@ jjSCS DY@ !!!4!3%%'%'+K@BSCD%&!+632.#"#".'>5Z\3C'&& H"!! 11 3 ;'8@5BSCSCSD"%#"%!+632&#"3+#"&5473265#46;5aL=' )*)obL=' )**lXJ (H9&XhJ (8'<I""71 3@0 52BWSCSD$(&)%% +2""W13@0.+BWSCSD$&$)$# + r" "812*@'BWS C D$""## + " "X1l@ /,BKPX@#W CSCTD@#jWSCTDY@ $"$### #+;@BCSD%!+#"&54732654>332>7#Y  #,08 Q,!$ <48#8r@OSG$$+@ B@XD##!+3267632#".5467E( !*f>' * %q!4 S" @S D$!+632#"&5S* )(-$,$ @WSD"## +32#"&53254#"$l6/k51L -:j-; ! !=3 >BK PX@^TD@jTDY&'+4852327#"54>3 & 4Y#41 Y$?'"$ BKPX@WS DKPX@W CS DKPX@hW CS D@"hhWS DYYY"#&"#!+632327632#"&'&#"#".' G    &4  *  '!     (+.'>76.'>7_( P  A ( O  ? (\"a)]"aK@ BOSG$!+632#"'>7&5K%F#, #K&I&H.+-)"-K@S C D##"+ @S CQ D +32!#3>&wyHAR|O;-d"-W@S C D#3#+&"@SCS D$%$$+>54&#"#&546;.546323+ - $(Yf>G(9 {hat [V"&fAqk!!<P1@.BCTCD$#$# +#"'#"'46323274632V >!!( # .' b%%@" BSC D####++#"'##"'#&543! 'D%# "V :""")DG@D"B jj[S CT D%$###$ +""")kJ@G [[S C S D$$$/$.*(#"###$ + )q@ BKPX@$hS CSCD@(hS CSC CDY@ "$%%%"!++632#"&547326=4&#"##543!r k&4C(0'$   6.zT\a =F^b( +:)} TTT-)"-"Kw=1@.BjjS C D(##"+F"2@/B[SCSD#%&%!+6327#".54>32&#"3+%$$0?2>N+0N675!( n[%"(;9#&VX%1I"7%@" BSCSD&)%%+ @ C D#+>3# (> 8/X ""-k-@*[ C D !   %#+ " .@ B CSD%#+8(KPXBBYKPX@ [S CS DK&PX@*[S CS CS D@([S CS CSDYY@(&   +2+##"&5472>7>;32>54.+YK^M: !9/#&%  &/ W_u~T}"#l :7'$-/'8@5'B [ CT D&$###$ ++##4>334>3332>54.+K^Mb 7/ 7/b 7/W_u~A   97&$  2@/ BS CSC D#"$#% +32#4&#"##543!+NA 9/  6.uO k8I Z) TTT Y-v"-"RwOG@D2+  Bjj[ C D(((5(5*!##%+! !+-|"-"PDZ3@0) Bjj C D , +#)#"+r""[-;@82, B4@j[ CT D$##((%#!+-cf@W C D##!+>3+#.'#4>33 7. I  m 7.[X }9=' @"%(@% BZ C D##2+-`.@+B[S CS D&!#$!"++32+463!32>54.+C YK^M 3 W_u~97&$-k!;@8B[S CS D! &(0+;2+654&+3654.+3-b7%s\_ GT k4+1#F>,,-)@S C D##!+6;++-  y ]&. c!0@-BKS CQ D5$+#&'#".=32>>;33#   #2x9c:'=9D <"").@+[S CS D###$+.B;@8-) '! B [ C D?=#$+$!#$, +32#"/.+##"#"&?67&/4632;4>3326?#&(D"& ! 4- ! '!D('"!! 4-! D' L4 ;4L 'D #% %#\)6@3B[SCSD4%)'"+54#".54632#"&54732654&+"=31,8IKLLU^FO,I' '#$a36?>3#547 #53- $Q !0 3)&T  M!p8 W `fo-|"-"PD6@30* B2@j[ C D$#(#)#"!+-v&0@- B[ C D!##%+ +32#"/.+#4>3326?$#( *C $*  70 70  B' 68  $"{DKPX@S CS D@S C CSDY&#!+$###"&5472>7>;{ 6/: !9/#&%  &/ T"#n X-.'@$* Bh C D#+*#!+6;#7>7'+'&'#46;>?a ] 80 %0 ./#  6, TP  EX GT '* SH  &88$-m @Y C D###!+$###4>334>3m 7/b 7/ 7/b 7/ A   X@SCSD&&&"+>32#".532>54.#")SCCL#(QDEL#  B>D;## 7. 6. 7.Y  X TS"4/@,[S C D#&+;"'+@(BSCSD%%&+ r" 8@S C D"##+r "@ B CT D((%"+6#"&547327&'&546;6?>;.+&0#[ O(Ou\<%$03aa# YM$@$# BCD+#5.546754>3654&'_dd (>k]af (>*&#.(T}~(Kx'V#jOTbumR"<@B C D($'#+-c"@L CR D##+#.'!4>334>33   7.[ 7.29=' @ D(@%B\ C D$"%"!+$##"&=4>33274>3D 6.+>5 5.$ 5.  Se a 5 X-@ CT D$##!+>334>334>3#!- 7/L 7/K 7/ )@@ @ x-cC&@#L CR D###+#.'!4>334>334>33C  K 7/L 7/K 7/29=' @ @ 6@3B[S CS D "$++#54;332>54.+YK^MeW_u~TK97&$-"-"d>r8@5B[ CT D#! +-^ 2@/B[ CT D   +2+4>332>54.+YK^M 7/W_u~ 97&$:!2@/B[SCSD!%&%"+.#"&54632#"&547327#".53%#576M/,P>-D-&Ip V&#9;&!,1%-8,^KPX@YSCSD@'Y CSC CSDY@ &###&"+>32#".'##4>3332>54.#"*MD3  ܤ^-2i^ab/3seQ';@8'&B?[S C D%#!%##+".5#"#"'7>7.54>;#"3275J/7 ! #%! -0-VA^i.5 X E !+_?PZ$``|7"E:@7 *B[SCSD$$'$%# + `+/@,B@SCSD+*$"$%+>32#".=4>?32>54.#&3+A>QR?C52"o   9)C9<.j0wrTiyEE: )KHHFOOAB!L(K@H(Bh[S CT D'&%# & +2+4;32654&#"#3254&#"#76!6VY|Z / s;8*9E["!uT*@SC D##!+6;+#* ^ '> .# ~ c!*@'KSCQ D&+#.'#".=3>7>;33#    )2_49=''=9# t'0D"I;@8B[SCSD! %&+C0@-+ B [C DA?##,%!#%, +32#"/.+#5#"#"&?67&/&54632;54>332?%$>  %   4-   & >%%# % 4-&  0o{ %% %% {o0 . 0,'6@3B[SCSD4%'&#+54&#"&54>32#"&54732654&+"=3!&4*~-$5B3.!LI$!"pF3;/"'#%!?*`#@ BC D#+#!+>3#54767#4>3>? - '7 ' K- 2(   I  @D j  Q&%S*`"*"p-6@35/ B7@[CC D$#+#+#"!+*U%0@- B[C D!##%+ +32#"/.+#4>332? " ";  '  5. 5. # .mz '$  -hDK&PX@SCS D@SC CS DY&#!+$###"5472>7>;h81/8-<$"  &.QAC  *,(@%%BhC D)#-'"+%#547+'&'&'#46;&?>; 1* "-" 0& h7 1nmJ+Zbf4: -K& ) =*U @YC D###!+$#5##4>3354>3U 71I 80 71I 7/ ˷  ʶ  V"S@SCSD&&%!+*Q@SC D3#!+$###4>;Q 6/I 6/ )<    !;V"!T7@4  BSCSCD&$#%!+"G%@" BSCSD&%%#+3@SC D##!+6##4>3!+ 7/_  G .# .$ ~ <O @BCTD'!+#"547267&54>3>?>3;1=%% o5)   )>ptPA$3 67 :!(,@)('!  BACCD(+#"'5.546754>3654.'TVa @K%S]%/*  (w}{ 0nbt bNP:?'DLOSK Ot"\ @! BC D(($+*c"@LCR D##+#.'#4>334>33   6/I 6/29=' tx t#J(@%B\C D$#&"!+$#5#".=4>332754>3J 7/ !,3 6/   6/ =7 !  *@CT D###1+$#!4>334>334>35/ 7/M 7.L 7. tx tx  *cB&@#LCR D###+#.'!4>334>334>33B  I 7/M 7.L 7.29=' tx tx t;@8[SC S D#$ +##4>;33254.#"#?Lb]kY ! /  <333254.#"# Ljf[ (7"! /  <;' /)7I,!D81; 4m W^5 !&xtap/ 5B/$ *'eKPX@ YSCSD@(YCSC CSDY@'&&##% +32#".'##4>33654.#"3ԓ8C!QS5>#1 4. 4-1-nd| ]Y  EhIGFcMJF(~K&PX@('B?@('BYK&PX@[SC D@[SC C DY@&$!&##+".=#"#"'7>7.546;#"3275?-6  0 !0a`\g 1   ')\ z 'J8LD[!I{D""ID*U@R+Bh\ C SCSD"""."-('! %& +D""Ik Y@VB[S  C SC SD--""-8-731","+'%! %&+HP6@$6BK&PX@,h [CC CTD@)h [XCC DY@ 53$$&%&! +632#"&54732>=4&#"##&5&6;54>33+52*!LC,+ !"!  6/8)5{ \8Jl~;* NO$ ;K`*"*"kw4@1BhCSC D(##"+!2@/BYSCSD#$&%!+6327#".54>32&#"32#(" ="@G!2G.^ !W m4$-upmn : 25 $/2"W%@"BSCSD$)$#+!"!M@S CC D$$"+""k/@,S CC D !   %"+;"N*@'BS CCSD%$$"+ 'K&PX&BK.PX&B&BYYK&PX@" [SC S DK.PX@) h [SCS D@* [SC S CS DYY@''%#  +2+##"5472>7>;3254.#"SLjfa/7-=$"  &/ /  <3354>333254.#"#Lkf]X 7/61X )9"! /  <33+57% 8.  6/8)5{ \334>3Q; ,  ` 6/I 6/ } tx #-)1>K PX@^S C D@jS C DY##&+72++46;# y ] @ U&. *u>K PX@^SC D@jSC DY##'+72+#46;  ^ '>h8=V.# ~  -c*3@0B[W C D!##$ +323#&/.+#4>3326?$#((F @ V  70 70  C)k`;68  $#*c~*5@2&Bh[ CTD$!###+#./4.+#4>332>76323~  8  70 70  #" D ! ?5mZ   JV 334>33  @b 7/ 7/b 7/29='A   *c)@&YWC D###+#.'#5##4>3354>33  BI 80 71I 7/29='˷  ʶ tl'*@'%B\ C D*$$##+$+#5#&546;5&>3>?>33F* 7/O*} @7 70zI  #z$#{$n jBE*2@/(Bh\CD&&$##++#5#&546;5&54>33>?>337.5/N)i;-   )?fM B V  66q  "";DC@@9B jjh CSD000<0;%5((" "+ ""[DKPX@ ? %B@ ? %BYKPX@# h  CCT DK.PX@' h  CCCT DK2PX@+ h  CCC CT D@. hh  CC CT DYYY@666B6A6&9"" #+"";wD@A:3Bj jh CSD000=0='%5((" "+ ""[wKPX@ @9 %B@ @9 %BYKPX@#   hCCT DK.PX@'   hCCCT DK2PX@+   hCCC CT D@.   hhCC CT DYYY@666C6C*6&9"" #+"";kH@EBh  [ CSD;;00;F;EA?0:09$%5((" "+ ""[k{KPX%B%BYKPX@#  S  CCT DK.PX@'  S  CCCT DK2PX@+  S  CCC CT D@.h  S  CC CT DYYY@AA66ALAKGE6@6?'6&9""#+l""=D65@2"Bh CS D%$*$"+?O""]D(:@7* BhCCTD!!!-!,$$$+|J@OSG"!+63!#!J#'9'J@OSG"!+63!#!d#'9':@ BOSG$!+#"54>32$G#- "`&I&H.*; @ BOSG%!+632#"'>7&5%"$#, #&&#&H.,q@ BOSG%!+>32#"'>7&5%"$#, #K&&#&H.,:G %@" BOSG$(%!+#"&54>32#"54>32G%"$#, #$G#- "`&&#&H.*&I&H.*;G  %@" BOSG$(%!+632#"'>7&5>32#"'>7&5%"$#, #$G#- "&&#&H.,&I&H.,Gq %@" BOSG$(%!+>32#"'>7&5>32#"'>7&5%"$#, #$G#- "K&&#&H.,&I&H., &1m@ +BK#PX@"hCSCSD@%hhSCSDY#,+###+54632#"/32'&54?#"&547#"'632&% qcr f$) %( !u$(!    &1>KW@ +80QLEBK#PX@9hf  h [CSC S D@<hhf  h [SC S DY@ US-+##,+### +54632#"/32'&54?#"&547>32#"'5#"&547$32'&54?#"'7632&% qcr fi#rqdrfP&% !%( !u$(!   &( !t#(!  y @OSG$!+632#"&50)0(/)1(D5.-&3,-""#t@SD#$#$#" + %2?LYC@@ B [   [SC SDWUQOJH&%$%#$&%, +.5 32#".53254.#"32#".5$32#".53254.#"3254.#";!8/:FG19j  /:FG19'/:FG19 ! ' !   f   NFb[PM,,g+)): NFb[PM NFb[PM,,g+)):,,g+)):@ BC D+>72#.5?D /23/ D@ohVJ GS gp(+6.54>7.54>7?D %/32/  D?pgSG JV ho/ @ BCD$ +#"&'632-)$ %jhQ@  BKPX@[SD@M[SDY)"#++#"'5#&547>7>323&37h:I"0/1 O( B%7$rT& _1E@B B[ [  [SD1/-,*(&!""%! +6327#".'#46;57#46;632.#"3+3+!3A24B)V)S5$8."@v[i<" (!TN5'.5'1 Z5'' 5'!"!P)+""2} 1*#)+}'84)(+;#7>5+/#46;46?$6;+##5y*  %% 8Fl&J5=@T G!d6p/h&&"5 )+Fm-(  (+32673#".54>32!$'.#"3!2='k32.'>32654'&#"3G`?N%&B+'<4 /" =SΎ3udOr;=[0{^g@+gH  (+32#!"''3')" ##>  55Z u>>(++#"'##"'#&543! 'D%# "V :"B> (+!+3+# icf $|6wJ(+63!#!J#'9'/")+y#)+&;(+6323+#"'=(*H 2TI "_!6 g0". '#(+#"'#"&543263654&#"37&'&#"3Hm V0A>@G.>;D  " MIGELF$&J)  ;(+632&#"#"&5473265aL=' )*)bL=' )**J (hJ (Om6*(+32327632#"&'&#"#"'6323276#"'&#"#"&5LI!"  J') C$$" L+')$)  Bz" 5).w!(+%+#"'7#46;7#46;76323+w#*BM" !,FQ#9&O$A8'h9'[$S9'h#r (+$#"/&547%63!#!q  #8ȵ4i"*|(RY&8'#r (+632.'4?'63!#!$  $64i!+})SX&8'(+ 7'MMMd#Q @ TB*(+#".54>367>54&#"&#32654#"#"&#"372#'"326323254#"=54#"#"&#";2/&#"#"&#"&#"#"&#"37'3254#"#"&#"372#"&#"326323254#"#"=763232732632#"&#"326323254#"#"=32=4;YYllXXl"#,+##+*t     M   F    ! 9  9   D YmlXXllY!(%"(!,,'   p    p  b  8^"$[  q  a{,v   *2@/ BSCSC D"##%#" +>;54632.#"3++##4>3  !jW ?-*5  [<n 8/*5" 9iL?" /=-$ |q  #4@1"BSCSC D####"!+$+&#"3++#4>;54632 [ ?; & [< !cC*OFO-$ |0" 9hM\8Q$ (+#"&547326=#".54632#"32=Q\Q;54632&#"3++# !@8." I 4 \<" mH; c-$ |{;$(+$#"&54732654'&'7##".'>54632.#"!),X@63(!5/"*V% Y] 6 '*9T:>h= %+<5E3(3MF  2? !& {>!(+>3!#"&54732654'&'7#   :7),X@63(!5/ ,W-  )T:>h= %+<5E *41-(+32632&#"3++#+#4>;567&#";5F3-)F6- ))*H 3 [P [< ! 4/!  (E-$ ||0" @)>O9C)2< :50,(+32632&#"3++#+#4>;567&#"35>3#A7+-R 0C-)4  [P \< ! 4P*5 8/?"/=-$ ||0" @$#>O9Q <.751*(+#&#"3++#+#4>;54326327&#"35< 6/?3  [P \< !3.(>TB 4P[ |CI-$ ||0" @)a#>O9 {0&(+$#"&54732654'&'7+##4>;54>33!)Z^+,(/ ,WP< (=< %*4 :T:c'):7E .$  ) ?" "X^?/ )+sX#"(+#"&'632#".54732>54.#"!sl Lhzn&2 7)967-,2-'}Mt6$1L&56 ;F(+547>323#!&546;5""^ KG[0% P(+654767>54#"&546323#!9$ /%3h:G:5/ ##;%*$&#*44/Q4 8C*%(+$#"'&5473254'&#.5432654#"&547632$dMG *.F,, ./) (mx0/KJ %( &    #Y80h(+$+#"'5#&547>7>323&37h:J"0/0 O( B%6%rS'!F(+547>323#!&546;5""^ KG[Q% !P(+54767>54#"&546323#!9$ /%3h:G:5/ #2#;%*$&#*44/Q4 8C*%(+#"'&5473254'&#.5432654#"&547632$dMG *.F,, ./) (mx0/KJ %( &    #Y80h(++#"'5#&547>7>323&37h:J"0/0 O( B%6%rS'J#)+8$(+3267#5.5467.54675463.#"27=+)"H=+/6KF8,"KA/6$78()/= ?4% .7&!BiMI9I0*?U Bk 5!%6hf>GD?8(+#3267#"&54632754>3>73267#".=&#"765t7  I )G+QJO]9L{/'9 %$3:',:t//!##qC@1* ./{,,""?:040I /! (+3267632#"&'47U   ,>=6JA%!&!428)*E`D1K[_< ee8/M $";" o !$!&& (gEi-(r- +]mX| px _Xg _%r 1Sn#$gY ~ j!!i!!!j!jk!l!? gJ|U-  !X  I[W:F 4" WDl]1o/A`F8GE----i5p]SSSSSS$YYYY jjjjjjggggUm!USSSE$E$ii-Y-Y-Y-Yr~ r~ !o!i!+ +>!E!>j!j!j!j!jj%*m!mmX?X?X?|  | N ggggpUpx - x - x -  X?|  S$K3--o-- 3-PX- B9- --w-v--3--Mk------]E| w;-r?-R- -r-XV-~St a!*Y/@**i***j{*k!$;T |*t#:*Q**d*' *pYYs*%?!"!*ni**T {*3-*-}**pJpUdd_1} !)F+s"&L ##   sM  R] I `k]|`k]|Xl1 8|NJvbT4,XL v p  B ~ > v  *  B >h8~Nz> \<Rp2~66zPdR B v \ F !.!d!!"#0#$d$$$%`%%&&&''R''''( (r()),)V))***++.+^++,L,,,--..//00:0v00011x22,2X23 3:3|344>4j4455F5p556"6z67$7T7788f889 9T99: :z:;;X;;<<<=$=n===>D>j>>>??0???@@<@r@@@AABAAAABB>BCCCD4D\DDEE6F FGGFGHHIIIJJ,JRJxJKKPKLL0L\LLLM M8M~MN N6N`NNNO(OfOOOOPBPPQ$QX~XXYJYYZZJZnZZZ[:[V[[\\D\\\]D]^^:^^__h_` `\``a ahaabb>bfbbbcFcbccddRddee\efFffgJgtgggh"hDhiliij&jRjjkkhkllHllm"mmnjno&oRo~ooopp@ppqqrlrrsRssst.tttuu"ujuuuvv0v@vPvvvvwDwxwwwyyhyyz"zzzz{X{{||@|j||}}:}n}}}}}~H~~~V"/n >v ;HY} 6 K ~   "e  @ ,  R *-  o l ) \ * 4Copyright (c) 2004-2010, Jan Gerner (post@yanone.de). Copyright (c) Huerta Tipogrfica (info@huertatipografica.com.ar)Copyright (c) 2004-2010, Jan Gerner (post@yanone.de). Copyright (c) Huerta Tipogrfica (info@huertatipografica.com.ar)Yanone KaffeesatzYanone KaffeesatzBoldBold1.100;UKWN;YanoneKaffeesatz-Bold1.100;UKWN;YanoneKaffeesatz-BoldYanone Kaffeesatz BoldYanone Kaffeesatz BoldVersion 1.100;PS 001.100;hotconv 1.0.70;makeotf.lib2.5.58329 DEVELOPMENTVersion 1.100;PS 001.100;hotconv 1.0.70;makeotf.lib2.5.58329 DEVELOPMENTYanoneKaffeesatz-BoldYanoneKaffeesatz-BoldYanoneYanoneYanone (Cyrillic: Daniel Pouzeot & Huerta Tipografica)Yanone (Cyrillic: Daniel Pouzeot & Huerta Tipografica)http://yanone.dehttp://yanone.dehttp://yanone.dehttp://yanone.deSIL Open Font LicenseSIL Open Font Licensehttp://scripts.sil.org/OFLhttp://scripts.sil.org/OFL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CR softhyphenAmacronamacronAbreveabreveAogonekaogonekDcarondcaronDcroatEmacronemacron Edotaccent edotaccentEogonekeogonekEcaronecaron Gcommaaccent gcommaaccentImacronimacronIogonekiogonekIJij Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheOmacronomacron Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacuteTcedillatcedillaTcarontcaronUmacronumacronUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongs Scommaaccent scommaaccentuni021Auni021BdotlessjfirsttonechinesecommaaccentcombGammaPiuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0490uni0491uni049Auni049Buni04A2uni04A3uni04B0uni04B1WgravewgraveWacutewacute Wdieresis wdieresisYgraveygrave foursuperiorEurouni2113uni2116Ohm estimated increment divisionslashbulletoperatorg.ss01f.ss02germandbls.ss05z.ss05f_ff_f_if_f_lt_z.ss05t_zfive.001one.dnomtwo.dnom three.dnom four.dnomone.numrtwo.numr three.numr four.numrsofthyphen.001 uni00A0.001 uni00B5.001ampersand.ss03ampersand.ss04 breve.cyr .ttfautohintz\z\;8;8, `f-, d P&ZE[X!#!X PPX!@Y 8PX!8YY Ead(PX! E 0PX!0Y PX f a PX` PX! ` 6PX!6``YYY+YY#PXeYY-, E %ad CPX#B#B!!Y`-,#!#! dbB #B *! C +0%QX`PaRYX#Y! @SX+!@Y#PXeY-,C+C`B-,#B# #Bab`*-, E EcEb`D`-, E +#%` E#a d PX!0PX @YY#PXeY%#aDD`-,EaD- ,` CJPX #BY CJRX #BY- , b c#a C` ` #B#- ,KTXDY$ e#x- ,KQXKSXDY!Y$e#x- , CUX CaB +YC%B %B %B# %PXC`%B #a *!#a #a *!C`%B%a *!Y CG CG`b EcEb`#DC>C`B-,ETX #B `a  BB` +m+"Y-,+-,+-,+-,+-,+-,+-,+-,+-,+-, +-,+ETX #B `a  BB` +m+"Y-,+-,+-,+-,+-,+-,+- ,+-!,+-",+-#, +-$, <`-%, ` ` C#`C%a`$*!-&,%+%*-', G EcEb`#a8# UX G EcEb`#a8!Y-(,ETX'*0"Y-),+ETX'*0"Y-*, 5`-+,EcEb+EcEb+D>#8**-,, < G EcEb`Ca8--,.<-., < G EcEb`CaCc8-/,% . G#B%IG#G#a Xb!Y#B.*-0,%%G#G#aE+e.# <8-1,%% .G#G#a #BE+ `PX @QX  &YBB# C #G#G#a#F`Cb` + a C`d#CadPXCaC`Y%ba# &#Fa8#CF%CG#G#a` Cb`# +#C`+%a%b&a %`d#%`dPX!#!Y# &#Fa8Y-2, & .G#G#a#<8-3, #B F#G+#a8-4,%%G#G#aTX. <#!%%G#G#a %%G#G#a%%I%aEc# Xb!YcEb`#.# <8#!Y-5, C .G#G#a ` `fb# <8-6,# .F%FRX ,1+!# <#B#8&+C.&+-?, G#B.,*-@, G#B.,*-A,-*-B,/*-C,E# . F#a8&+-D,#BC+-E,<+-F,<+-G,<+-H,<+-I,=+-J,=+-K,=+-L,=+-M,9+-N,9+-O,9+-P,9+-Q,;+-R,;+-S,;+-T,;+-U,>+-V,>+-W,>+-X,>+-Y,:+-Z,:+-[,:+-\,:+-],2+.&+-^,2+6+-_,2+7+-`,2+8+-a,3+.&+-b,3+6+-c,3+7+-d,3+8+-e,4+.&+-f,4+6+-g,4+7+-h,4+8+-i,5+.&+-j,5+6+-k,5+7+-l,5+8+-m,+e$Px0-KRXYc #D#pE KQKSZX4(Y`f UX%aEc#b#D * **Y( ERD *D$QX@XD&QXXDYYYYDfonts/arial.ttf000064400001140524150212476000007510 0ustar00pDSIGqlXGDEFQDQ`GSUB[JSTFm*iLTSHsE?Vt,OS/2 2kVPCLT{>C(6VDMXPj[cmapgM.@cvt pv~0fpgmyYx4ngasp Pglyf~G&hdmx.oQt|(head |6hheam$hmtxʢs@kern7a96`loca xAmaxp  name (`+post;U\2prepRm4 Q_<'*!g: >NC3:((?c/V 33f zMono@ Q3>@FN ^ t~&h   b f< \V16/=l q}b E a> 1 3 Z.]       ^  G Q i w &; a  b f   u \')  ' '  ' ''' '' '(( ( (+$(7*(E-(S  (a (m  (y  (Typeface The Monotype Corporation plc. Data The Monotype Corporation plc/Type Solutions Inc. 1990-1992. All Rights ReservedArialRegularMonotype:Arial Regular:Version 2.98 (Microsoft)ArialVersion 2.98ArialMTArial Trademark of The Monotype Corporation plc registered in the US Pat & TM Off. and elsewhere.Monotype TypographyMonotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982Contemporary sans serif design, Arial contains more humanist characteristics than many of its predecessors and as such is more in tune with the mood of the last decades of the twentieth century. The overall treatment of curves is softer and fuller than in most industrial style sans serif faces. Terminal strokes are cut on the diagonal which helps to give the face a less mechanical appearance. Arial is an extremely versatile family of typefaces which can be used with equal success for text setting in reports, presentations, magazines etc, and for display use in newspapers, advertising and promotions.http://www.monotype.com/html/mtname/ms_arial.htmlhttp://www.monotype.com/html/mtname/ms_welcome.htmlNOTIFICATION OF LICENSE AGREEMENT This typeface is the property of Monotype Typography and its use by you is covered under the terms of a license agreement. You have obtained this typeface software either directly from Monotype or together with software distributed by one of Monotype's licensees. This software is a valuable asset of Monotype. Unless you have entered into a specific license agreement granting you additional rights, your use of this software is limited to your workstation for your own publishing use. You may not copy or distribute this software. If you have any question concerning your rights you should review the license agreement you received with the software or contact Monotype for a copy of the license agreement. Monotype can be contacted at: USA - (847) 718-0400 UK - 01144 01737 765959 http://www.monotype.comhttp://www.monotype.com/html/type/license.htmlTypeface The Monotype Corporation plc. Data The Monotype Corporation plc/Type Solutions Inc. 1990-1992. All Rights ReservedArialRegularMonotype:Arial Regular:Version 2.98 (Microsoft)ArialVersion 2.98ArialMTArial Trademark of The Monotype Corporation plc registered in the US Pat & TM Off. and elsewhere.Monotype TypographyMonotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982Contemporary sans serif design, Arial contains more humanist characteristics than many of its predecessors and as such is more in tune with the mood of the last decades of the twentieth century. The overall treatment of curves is softer and fuller than in most industrial style sans serif faces. Terminal strokes are cut on the diagonal which helps to give the face a less mechanical appearance. Arial is an extremely versatile family of typefaces which can be used with equal success for text setting in reports, presentations, magazines etc, and for display use in newspapers, advertising and promotions.http://www.monotype.com/html/mtname/ms_arial.htmlhttp://www.monotype.com/html/mtname/ms_welcome.htmlNOTIFICATION OF LICENSE AGREEMENT This typeface is the property of Monotype Typography and its use by you is covered under the terms of a license agreement. You have obtained this typeface software either directly from Monotype or together with software distributed by one of Monotype's licensees. This software is a valuable asset of Monotype. Unless you have entered into a specific license agreement granting you additional rights, your use of this software is limited to your workstation for your own publishing use. You may not copy or distribute this software. If you have any question concerning your rights you should review the license agreement you received with the software or contact Monotype for a copy of the license agreement. Monotype can be contacted at: USA - (847) 718-0400 UK - 01144 01737 765959 http://www.monotype.comhttp://www.monotype.com/html/type/license.htmlNormaloby ejnnormalStandardTypeface The Monotype Corporation plc. Data The Monotype Corporation plc/Type Solutions Inc. 1990-1992. All Rights ReservedArialRegularMonotype:Arial Regular:Version 2.98 (Microsoft)ArialVersion 2.98ArialMTArial Trademark of The Monotype Corporation plc registered in the US Pat & TM Off. and elsewhere.Monotype TypographyMonotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982Contemporary sans serif design, Arial contains more humanist characteristics than many of its predecessors and as such is more in tune with the mood of the last decades of the twentieth century. The overall treatment of curves is softer and fuller than in most industrial style sans serif faces. Terminal strokes are cut on the diagonal which helps to give the face a less mechanical appearance. Arial is an extremely versatile family of typefaces which can be used with equal success for text setting in reports, presentations, magazines etc, and for display use in newspapers, advertising and promotions.http://www.monotype.com/html/mtname/ms_arial.htmlhttp://www.monotype.com/html/mtname/ms_welcome.htmlNOTIFICATION OF LICENSE AGREEMENT This typeface is the property of Monotype Typography and its use by you is covered under the terms of a license agreement. You have obtained this typeface software either directly from Monotype or together with software distributed by one of Monotype's licensees. This software is a valuable asset of Monotype. Unless you have entered into a specific license agreement granting you additional rights, your use of this software is limited to your workstation for your own publishing use. You may not copy or distribute this software. If you have any question concerning your rights you should review the license agreement you received with the software or contact Monotype for a copy of the license agreement. Monotype can be contacted at: USA - (847) 718-0400 UK - 01144 01737 765959 http://www.monotype.comhttp://www.monotype.com/html/type/license.htmlNormalNormaaliNormalNormlNormaleStandaardNormalNormalnyNormal1KG=K9NormlneNormalNormalNavadnothngArruntaNormalNormalNormalNormal R X 688~Y #~ O\_ :Rkmq~    " & . 0 3 : < > D o  !!!!"!&!.!T!^!!"""""""")"+"H"a"e###!%%% %%%%%$%,%4%<%l%%%%%%%%%%%%%%%&<&@&B&`&c&f&k:1 6<>ADOY}b? Y #~Q^ !@`mq~   & * 0 2 9 < > D j  !!!!"!&!.!S![!!"""""""")"+"H"`"d### %%% %%%%%$%,%4%<%P%%%%%%%%%%%%%%%&:&@&B&`&c&e&j: *8>@CFVz^>/wkri+*)(|zvlhL>i3][w}ujy,ߨߖޖޢދަq_0@3$FE<9630)"ۿ۾۷ۥۯEBA$"!>c6dNNR`b^ffPPRN&($ L^bcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,  -   ./0 !"12#3$%&'()*+   4NORPQUVWXST~?Avw|qrsYZ[\]uwvyx}56  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 688~Y #~ O\_ :Rkmq~    " & . 0 3 : < > D o  !!!!"!&!.!T!^!!"""""""")"+"H"a"e###!%%% %%%%%$%,%4%<%l%%%%%%%%%%%%%%%&<&@&B&`&c&f&k:1 6<>ADOY}b? Y #~Q^ !@`mq~   & * 0 2 9 < > D j  !!!!"!&!.!S![!!"""""""")"+"H"`"d### %%% %%%%%$%,%4%<%P%%%%%%%%%%%%%%%&:&@&B&`&c&e&j: *8>@CFVz^>/wkri+*)(|zvlhL>i3][w}ujy,ߨߖޖޢދަq_0@3$FE<9630)"ۿ۾۷ۥۯEBA$"!>c6dNNR`b^ffPPRN&($ L^bcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,  -   ./0 !"12#3$%&'()*+   4NORPQUVWXST~?Avw|qrsYZ[\]uwvyx}56llllb z @ . ( T0Z4N$d 4 !*"$%'^()*+Z,-./12|57P89;~=@ABBfCFI$JL LtLMBMMNzQLS*TVXPY[]8^,_DabefhjTklpqsZuxy|~^FD2~0F|` `*j V^F\jdH*6fD&nt2PL0b¸f Ĭ~`Dz$~bBt4Ъ(dNҚ ^ӎTԒՂh֤$X؂z,\ܠޒ:tp,fL| <pDp&VpNJ v"xF>|D   p t:<|v\>^&Nv,XDnJz$V> $ @ \ x  "$'^'z''''((`())*n+D+,L,-R--.T./n0,0X002d3X33344N4445"5R555666f667767f7799:(;x=.=^===>>H?v@@BDB|BD>DlDDDFNGHH^HHHIIDItJdKKL6LvLLMNPPQQHQRrRSTT6TfTTUU6UfUUVV>VtVWXY[z]_aabzbcefBghj"l<nhoZojozpppppprrr rrststtttv$xxDxzxxyydy{|^}Vf&Z&,dTd.V*:4D4Bt~ 0Xr.d:J0VFVƆƖƦfv\lʢ˰\T ^@ּؠ$\lf.N :vV0z0r@t:x0Px(p`|pv\>2H6lT4(X    4 l  @ : j<|HF@x \*hH !&!p"z"#$B$%&'(()*+p,X--/00<012`3f4P4z4445"6667 7J7t7778&8P8z8::.;P;`;;;<=?@A BBCEFH0IKMNO0PtQQQR RJRtRRRSSFSpSSSTTBV~WY>[&\n\\\]"]r]^^t^_&_|__`:```abTeeeffBflfffgg>ghggghh:hdhhhi i6i`iiijj2jjkmnop<qzrtbtruwxz{{|r}~~~~(Xh6F$vjz0pXhpFV(82BTdzJ|VfT.&6HXfvbr>N^L´n<LǬ|hծhג׼0ZjzؤBl|ٌٜ٬ټ@jڔھ<fېۺ8b܌ܶ 4^݈ݲ0Zބޮ,V߀ߪ(R|$Nx JtLvHrDn@j<pj.t(F.H~6t.>Lh 2DVhzV 2DTfxnt  F p   @     Z  " z 6ZjX :j*Hj <vJz2BRV2b :d*f6p  @   !,!d!!!"&"V""##D##$0$d$%^&,'L(():+&-".013r4Z56789;X<>\?@AC$D`EG&(% >u&5#'eS79]9q7$5S+7Ƥc  ) R M_c  S>+. . -%&%&.. ' '9%.7.7$..+.7.7cc0 -&&22222+11%&. . ' ' 'SS.7.7>>>>9]9.7$$.+.7.7.7.79%& ) %% .>u..M'> &)))$1$$$)(*)$)* % >>17 1%$%  u..11M+%11.&1$&'( 77 77$75 11,1$*1%'7&1+9$$7 71    ,    , , ,, # #+ ,,,,,,,,,))))++++22222222##22,,,,#### +9%&%&%&%&%&%&%&%&%&%&%&%& ' ' ' ' ' ' ' '>>9$$$$$$$77ĖĖ%&>9$77777%&.    !" # $!%"&"'#($)&*&+',(-(.*/+0-1-2.3/405061738494:5;5<6=7>8?9@:A;B<C<D=E>F?G@HAIBJBKCLDMFNFOGPHQIRISJTKUMVMWNXOYPZP[Q\S]T^T_U`VaWbWcYdZe[f\g\h]i^j`k`lambncocpdqergsgthuivjwjxkymzn{n|o}p~qqstuvvwxyz{|}}~   !" # $!%"&"'#($)&*&+',(-(.*/+0-1-2.3/405061738494:5;5<6=7>8?9@:A;B<C<D=E>F?G@HAIBJBKCLDMFNFOGPHQIRISJTKUMVMWNXOYPZP[Q\S]T^T_U`VaWbWcYdZe[f\g\h]i^j`k`lambncocpdqergsgthuivjwjxkymzn{n|o}p~qrstuvvwxyz{|}}~   !" # $!%"&"'#($)&*&+',(-(.*/+0-1-2.3/405061738494:5;5<6=7>8?9@:A;B<C<D=E>F?G@HAIBJBKCLDMFNFOGPHQIRISJTKUMVMWNXOYPZP[Q\S]T^T_U`VaWbWcYdZe[f\g\h]i^j`k`lambncocpdqergsgthuivjwjxkymzn{n|o}p~qrstuvvwxyz{|}}~ɱTA"/O__o@3@3@jl2@a3@\]2@WY2@MQ2@DI2@:3@142@.B2@',2@%2 2Ap@$&2d 2A d2AJ?/?_?Ӳ792Ӳ+/2Ӳ%2Ӳ2Ӳ2Ҳ) +A0 P`p`p   0@Pв +ϲ&BAƲA /$A/?O_"dA @j@&CI2@ CI2@&:=2@ :=2 &@&2@ 2@&2@ 2@&2@ 2@&z2@ z2@&lv2@ lv2@&dj2@ dj2@&Z_2@ Z_2@&OT2@ OT2$'7Ok Aw0w@wPwwww**@+)*Re~<^+@8@@89@s&%$ 7@!I3@!E3@!AB2@!=>2A!?!!!!!@! "2@!2@"*?2@!.:2oAH/`?_"""/"?"_"""!!o!!!/!?!O!""!!@+HO7 A &A9&%8s542V&, /& 8ʸ&~&}Gke&^s@R&ZHDb@s?^<&50+*V)#U7h@,XO62,!  @+JKKSBKcKb S# QZ#BKKTB8+KR7+KP[XY8+TXCX(YYv??>9FD>9FD>9FD>9FD>9F`D>9F`D+++++++++++++++++++++++KSXY2KSXYKS \XEDEDYX>ERX>DYYKVS \X ED&EDYX ERX DYYKS \X%ED$EDYX %ERX% DYYKS \Xs$ED$$EDYX sERXs DYYKS \X%ED%%EDYXERXDYYK>S \XEDEDYXERXDYYKVS \XED/EDYXERXDYYKS \XEDEDYX ERX DYY+++++++++++++++++++++++++++++++++++++++++eB++;Yc\Ee#E`#Ee`#E`vhb cYEe#E &`bch &aeY#eDc#D ;\Ee#E &`bch &ae\#eD;#D\ETX\@eD;@;E#aDYGP47Ee#E`#Ee`#E`vhb 4PEe#E &`bch &aeP#eD4#D G7Ee#E &`bch &ae7#eDG#D7ETX7@eDG@GE#aDYKSBKPXBYC\XBY CX`!YBp>CX;!~ +Y #B #BCX-A-A +Y#B#BCX~;! +Y#B#B+tusuEiDEiDEiDsssstustu++++tu+++++sssssssssssssssssssssssss+++E@aDstK*SK?QZXE@`DYK:SK?QZX E`DYK.SK:QZXE@`DYK.SK=<;:987543210/.-,+*)('&%$#"!  ,E#F` &`&#HH-,E#F#a &a&#HH-,E#F` a F`&#HH-,E#F#a ` &a a&#HH-,E#F`@a f`&#HH-,E#F#a@` &a@a&#HH-, <<-, E# D# ZQX# D#Y QX# MD#Y QX# D#Y!!-, EhD ` EFvhE`D-, C#Ce -, C#C -,#p>#pE: -,E#DE#D-, E%EadPQXED!!Y-,Cc#b#B+-, EC`D-,CCe -, i@a ,b`+ d#da\XaY-,E+#Dz-,E+#D-,CXE+#DzEi #D QX+#Dz!zYY-,-,%F`F@aH-,KS \XYXY-, %E#DE#DEe#E %`j #B#hj`a Ry!@E TX#!?#YaDRy@ E TX#!?#YaD-,C#C -,C#C -, C#C -, C#Ce -,C#Ce -,C#Ce -,KRXED!!Y-, %#I@` c RX#%8#%e8c8!!!!!Y-,KdQXEi C`:!!!Y-,%# `#-,%# a#-,%-, ` <<-, a <<-,++**-,CC -,>**-,5-,v##p #E PXaY:/-,!! d#d@b-,!QX d#d b@/+Y`-,!QX d#dUb/+Y`-, d#d@b`#!-,&&&&Eh:-,&&&&Ehe:-,KS#KQZX E`D!!Y-,KTX E`D!!Y-,KS#KQZX8!!Y-,KTX8!!Y-,CXY-,CXY-,KTC\ZX8!!Y-,C\X %% d#dadQX%% F`H F`HY !!!!Y-,C\X %% d#dadQX%% F`H F`HY !!!!Y-,KS#KQZX:+!!Y-,KS#KQZX;+!!Y-,KS#KQZC\ZX8!!Y-, KT&KTZ C\ZX8!!Y-,KRX%%I%%Ia TX! CUX%%88Y@TX CTX%8Y CTX%%88%8YYYY!!!!-,F#F`F# F`ab# #ŠpE` PXaFY`h:-,B#Q@SZX TXC`BY$QX @TXC`B$TX C`BKKRXC`BY@TXC`BY@cTXC`BY@cTXC`BY@cTX@C`BYYYYY-,CTXKS#KQZX8!!Y!!!!Y-&iiiD|ZRRD/W~ "APoLu\7LnpX cc-\ @Wr]g!wM+Le|C]h5G!\M-x ,I?)9Io#o 2@z1UW~~FB/OV)or,11di+ &  sC_a^m8Q[h|ATkhqBBSsX2Q|  !U{{~!""#rw"+5<Yoq22 *<Qaajx *>LQ_jqx !".5BOO^eq *G]ety "&+G_u\ m6>PQ]`E3-_dM?}$x;;N&;MKSj1<ex ~ 90+ P >X!q}E +NT2N7kwdg3|)n*i9$]u MRhm}qyXgV%|2!r\/AMrLjUxiWnTgeRZgn-|{pLFF-S%F>S?("bJmH3NFpyQ hlOa+999^ssIwVXZ||@r9A99sUss<sVssUsMsasSsU99prpsZoVVfV9m97Vs9cV9XV\0V V V)999'6sYsJsPsFsK9sBsssDssH?9$s!(9/WVVhV9csJsJsJsJsJsJPsKsKsKsK99#99 ssDsDsDsDsDsssssI3skssQmL=dN9SdNdMdMs8zd1/-%DrdTs.d3ssVV9cRsSGldN/!VV9s\\sI9lG%VVVVV99999c9c9c9.k:(sV\?)(sIV!Vsrk!kk!s9msB9V\?fPfPsFkVsJVsJGVsKVsKsBsUsss9csD<V\?09$0#ss)()(h9`bUHtHbD).0HkR3OOOjrq"~~~~~~f0 0 *+kUo@:@7?@%UapVsJfPfPVsKVsKVsK9msB9msB9msBss9999999f7Vsss9csD9csDkV\?09 ssssV!VsJD9S9V!sZk""JkWF2xVVXV)9VX 3m9cV0VV a9VHbsk`Hss\\sDV`3z?W`sH`?WW2UdV\997u 1 V@VUkVcN@9cVf0 RV UWUU@UsJ[@sKZ2xxksDUsP&!K+Ek(+0UsKsK?9 @s!kJA-11~~!}3 9iV21-_(P<P<Z<n_s f(d$(ZVZ((WWH-ddddiiiV21-KJK(P<P<Zn_s f(d$(V2P_s<%QCMyFFFFHFFQF5|5.555,5555555B6555F656==ZvZ'ZvZ'2j0FF@FQ sJ]My"VVuxux-Y2jYB=656==656==656==????Z*65'Z*65'OmOm$$ss''  ii''55B6='uxux2j2jZ@@Z&0ZSAZSAFFQFFHFFFFF@0FFc?D[/Ts) grksSrj}_vlX,VsJVsJVsJVsJVsJVsJVsJVsJVsJVsJVsJVsJVsKVsKVsKVsKVsKVsKVsKVsK9c9|9csD9csD9csD9csD9csD9csD9csDc?Dc?Dc?Dc?Dc?Dss[[[[[V!V!V!VsJ99csDsssssU cZkssV UW+EU+csU9`sD,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "                                                                                                                                                                 "                  &                                                                                                                                                                  &                          *                                                                                                                                                                    *                                   0                                                                                                                                               0                                          6                                                                                           6   :                                                                                          :       @                                        #    !"                  "      "                    ####          @    !B    " "          ! !  !!!                 $!!! !!!!!"#       "! """      #!!   !#              !   $$$$         !B    %J !   & &         % % ! %%#%    %           (%%%$%%%%%&'" !       &%! &&&      '% ""#!% "%(                ##%      ))))       %J               "*T %   +! #!!*    $  ! **!#  %*!*(*  + !!!    ###!   ! !".***)*****+,'  %!!!   !! * *%! *** ####!#!#  #!#   ! !$ ,*$'#! ''!%*#"#  &"*-      %              "'"' *       ####..$$..$$!!         *T$$##  !!!!!!!$$$$$$$$$$ !' !.\# )    /!!$! %!$$!!.   & ! !!$! ""..$!!&#).$.+.  . $$$!!!    !&&&$ !!!!  !!$!! !!$%2...-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"...../0*###" )!!$$$!!   !!$$! !!!!.! .)$ .!.!.! &&&&$'$&# ! %!$!&"   !$ $(! 1.'!*!!%!$!!#"*+$)!.! &%&!# *%.1        %       ## ###### ###########!! ####%+%+################ ##.#############################   !! !! !! &&&&33''33''$$     ## ### ## ### # ##############################################################################.\''&&  $$$$$$$'''''!!''''' $!!!!!*!#$2d&,! 3!!$$!'$!)$'!'$!$!2!!  (# !!$!$'$%%22'$$)&,2!!'2/2 ! 2!!!!!'''$$$ ! $!!***'!$$!!$$!! $$'$$! $$'( 62221$##############################################$2111135.&&!&% ,!$$!!!'''$$  ! $$''$!$$$$2#! !2,' 2#2#2#! ****!'*'*& !!!!$!!)$!'$!!!*%!  $' '!+$!53+ $!!!"!.$$!)$'$!$ &!%!./(,!$3$!")()$&  -)26#    #  * #####  &&&&&&&& &&&&&&&& &&&$$ &&&&)/)/ &&&&&&&&&&&&&&&& &&2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&   $$ $$ $$ ))))77**77**''       && &&& && &&& & &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2d+!+!** !!!!!!!!!!!!!!!!!!!!  '''''''+!+!+!+!+!$$+!+!+!+!+!!!!! '$$$$$.!$!!!&'6l)0$   7$$''$!*'$-'*$*'$!'$6##!  -' $$'$'*'!((66*'',)0!! "6$$*636 #  5$$$$$***''' $!'#$ ---*$''$$'!'$$ ''*''$!!''!!*+!#;6665' ! !!&"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'!65555!!!791))# )(! 0!!$''$$$***''  $ ''**'$!''''6'# $60*!6'6'6'#  ----$*-*,) $$$$!'$$-'#*'$!!##-(#  '* *$/'$97-"'$#$%$2!''#-'*'$'!")#($13+0#'7' $%,+,"')  1,6:% !   &# * &&&&!  &#  )))))))) ))))))))")))'' )))),2,2" )))))))))))))))) ))6)))))))))))))))))))))))))))))!  " '' '' '' ,,,,;;..;;..++   " "     )) ))) )) ))) ) ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))6l.#.$-- $$$$$$$$$$$$$$$$$$$$  *******.#.#.#.#.#''.$.$.$.$.$###$ *'''''2$'$$$)*:t, 4' " """ ;''**'#-*' /*-'-*'$*':%&#     1  )"''*'*-*    #++: :-) !)0 -4##" $ :''-:7 : &   9'''''---*** '#* &' ""000 - '** ' ' *$*' '  * * - **'$$* * ## -." $& ?:::9*"#"##)$)))))))))))))))))))))))))))))))))))))))))))))*#:9999###;=5,,&",+# 3##' **' ' ' - - - * *   ' * * - - *'#* * * * :)& ' :4-#:):):)&  #0000'-1-0, ''''#*''/*&-*'$$&%0+&" ! ! ! )- -'2*'=;2"%*'&'''6#**"&/*-*'*$%,%+'56.3&*;* !" ' "(  0!/0$*,   5/  :>(!##"##!!  (%.((((!!!#"#!!  (% !  ,,,,,,,, ,,,,,,,,%,,,)),,,,!/6/6%",,,,,,,,,,,,,,,, ,, :,,,,,,,,,,,,,,,,,,,,,,,,,,,,,$  %" ))))))!!!0000@@11@@11""""""""  ..""## %"%" # # # #,, ,,, ,, ,,, , ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:t2&2'00 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '   - - - - - - - 2&2&2&2&2&* * 2'2'2'2'2'&&&'  - * * * * * 6'""*  ''', - C2%%<- '%%%%%%%%%%'''%D--00-)40"-%704-40-)0-B+-)%%%"%%%%"9%%%%"%!/ !!'--0-040%%%%%%"%%%%%%%%%%%%%%%%%%$)11C%C40%%%%'!07%3<))'%%%)%%C--4C?%C%!!- %""%C-----444000%-")!0%-!-%''888%4%-"0"0"%%-%-%0)0-%-%%%%0%0%4%00-"))0%0%)!)!%45'%)+%"IC"C"C""B0'('((/*/////////////////////////////////////////////1(CBBBB(((DG=22$,(""21( ;((-%0"0"-%-%-%4%4%4%0%0%"-""%0%0%4%4%0-")0%0%0%0%B/-!-%C<4)B/B/B/-!%(8888-58482----)0--70,40-))-+82-'%%'"%%""'!%& %#04%%%4-:$0-"GD9'+0-,-$-->(00',7040-0)+3+2-=?5;,0D0%&$'%-%%'.%%$%"!7 C*0#"2$%%""=6%!%!CH.&$"((("((&#&% %"/+"""7""$////&&&$"(("(&&% %"/+$%'    ############222###2222222222222+222002222&#$$!!6>"6>"+'222222222222222222%C22222222222222222222222222222)+'000000&#$$&#$$&#$$!!!!77$$77$$JJ99JJ99''''''''$#$#55''((""##+'+'$($($($(22 222 222222 222222222222222222222222222222222222222222222222222222222222222222222222222222C9,9-"88-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%4%4%4%4%4%4%4%9,9,9,9,9,0%0%9-9-9-9-9--!-!-!-%4%0%0%0%0%0%$>-''0%%"%"-"-#-#2%4%K8**C2,**********,,,*L22662.:6&2*=6:2:62-62K11."***&****&?****&*%5$%%,22626:6******&******************(.77K)K:5)))*+%5>):C..,)*).**K22:KG*K)%%1 *&&*L22222:::666*2&.%6*1%2*,,???*:*2&6&6&*)2*2*6.62*2****6*6*:*662&--6*6*.%.%):<+*!.1)&RK&K&K&&I6,-,--5/5555555555555555555555555555555555555555555557-KJJJJ---MOE88(1-&&87!-B--2*6&6&2*2*2*:*:*:*6*6*&2&&*6*6*:*:*62&.6*6*6*6*K51%2*KC:.K5K5K51%*-????2;?:>82222.622=61:62.-11?81+!*)+&!**&&+%"*+$)'5;)*);2A)62&OL@,06212)32E-66,1=6:626-09172EF;B16L6*+(,*2"**!,4)*)*&"%>$+'<>/6'&8)**&&D=*!%)%KP4*)&--,&##--+(*)#$)&40%%%<&&##(4444***)&-,&##-+*)$)&40)#)+ ''''''''''''888'''88888888888880888668888*'((%%=F'=F'0,888888888888888888*K88888888888888888888888888888. 0,666666*'((*'((*'((%%%%>>((>>((RR??RR??,,,,,,,,)"')"';;,,--&&''" 0,0,)-)-)-)-88888 888888888888888888888888888888888888888888888888888888888888888888888888888888888888 K@1@2&??2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*:*:*:*:*:*:*:*@1@1@1@1@16*6*@2@2@2@2@21%1%1%2*:*6*6*6*6*6*)E2,!,!6)*&*&2&2'2'8*:*S>..J7 0..........000.T77<<73A<*7.E>,61**>=%2I227.<*<*7.7.7.A.A.A.<.<.*7+*.<.<.A.A.<7*3<.<.<.<.S;6'7.SJA3S;S;S;6'.2EEEE7AF @D>77773<77E<6A<73468E>60%.-0*%..**0)%./(-,;A-.-A7H-<7*XTG05<767-87M2<<06E-..**KC.$'.)"SY9 /-!*2 21*&&220,/-&(.*:5)))#C**&&,::::///-!*2"1*&&20/-(.*:5-&-0",,,,,,,,,,,,>>>,,,>>>>>>>>>>>>>5>>>;;>>>>/,,,))CM!+CM!+51>>>>>>>>>>>>>>>>>>.S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3"$$51;;;;;;/,,,/,,,/,,,))))DD,,DD,,[[FF[[FF00000000-%,!-%,!AA0022!!**!!,,%!$$5151-2-2-2-2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SG6G8+EE7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.A.A.A.A.A.A.A.G6G6G6G6G6<.<.G8G8G8G8G86'6'6'7.A.<.<.<.<.<.-M80$0$<..*.*7*7+7+>.A.\E!33R=$633333333336663]==BB=8HB.=3KBH=HB=9B=[>=8)333.3343/M3334.3-A---6==B=BHB333333.333333333333333%333 18DD\3\HB33335-BL3""GR886233933\==H\W3\3--=3..3]=====HHHBBB3=.8-B3=-=366MMM3H4=.B.B.33=3=3B9B=3=3333B3B3H3BB=.99#B3B38-8-3HI53)9$<3."d\.\.\..ZB68688A:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8\[[[[888^aTEE1<7/.ED)8!Q8!!8!=3B.B.=3=3=3H4H4H3B3B3.=/.3B3C3H3H3B=.8B3B3B3B3[A=-=3\RH8[A[A[A=-37MMMM=HM#GME====8B==KBME=5)325.)33..5-)34,20BH232H=P2B=.a]O6:B=<=2>=U8BB6D=TVIQ*33(6?3323.*-L-50JL:B0/E233"/.SK3(-3-&\c?#42%/7#76/*+77 5142*,3/@;...&L//++1@@@@4442%/7&6/*+7 542,3/@;2*25!&000000000000EEE000EEEEEEEEEEEEE;EEEBBEEEE4011--KV$/KV$/;6EEEEEEEEEEEEEEEEEE3\EEEEEEEEEEEEEEEEEEEEEEEEEEEEE9&((;6BB#BBBB401140114011----LL11LL11eeNNeeNN666666662)0$2)0$II6677$$//$$00#)$((;6;627272727EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE \O/MM=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3H3H3H3H3H3H3H3OO>O>O>O>=-=-=-=3H3B3B3B3B3B32"U>6(6(B33.3.=.=0=0E3H3dK$88YC!!':!8888888888:::8fCCHHC=NH2C8SHNCNHC>HCcBB=+8!88288782T8887!281G111!!:CCHCHNH8888882888888888888888(888#6=JJd!!7dNG7778:1GR7%%MY==:787=88dCCNd^8d!!711B8!!228!dCCCCCNNNHHH!!!!!!!!!8C2=1H8B1C8::!!!SSS8N7C2H2H287!C8C8H=HC8C8888!H8H8N8H!H!C2>>&H8H8=1=17NP:8->(A72$md2d2d22bH:<:<>BBTKB:-87:2,8822:1-89074GN787NCV6HC2jeU:@HCBC6DC\@LBJC\^OYBHeH895$:8C.88,:E78682.1R194PR?H43K688$32[Q8,171)dkE!!!!!!!!!!!!!&!!!86(3<&<;3..<<#9597.073E@111*O33..6EEEE8886(3<);3..<#997073E@6.7: $)55555555555 5KKK555KKKKKKKKKKKKK@KKKGGKKKK855511Q]'3Q]'3@;KKKKKKKKKKKKKKKKKK8dKKKKKKKKKKKKKKKKKKKKKKKKKKKK K>)++@;GG&GGGG855585558555""""1111RR55RR55nnUUnnUU::::::::6-5'6-5'OO::<<''33""''55&-'++@;@;6<6<6<6>  %@9Ou!  %9  h+]+]+<<<<<<?<<r 88)^  1^ j7q+]]]]]]??.+}<<<10]]]]]]]]]]]]]]]]]]]]]]]]]]%#"'&5467&&5463267&6654&#"326YzkcBϝ-0ReymuE_GIa##MfQcc|SrBøєXt(|[FEh?K_^D"K*5WIYeZ'&@ jq+]?991053.0|Q`=@ '33@^ +]?|G_<DZCTX@  U U @ U @UUU U@    9/9//++++?+++210CTX@  U @ U @ UU  U@ U  9/9/++/++?++210@6;;I Y Tk dzz  @  O @ s@!#4 8@ ?_o$+]+<?<c`Ҋ~K|]Ya p@    @0 s@!#4O_os O__?_o+N]q54'#"5432#"&4&#"326p|aS}P66mƏ{z˥tx|}SznLp Vk4Ĝ&8@  << 54&#"'6632531$8wsZX6i$jM:;+b:i`tNJ`loQGW@W! !!%5 3EID!F$FIGVTz)%)& *&)569C%VY[!V)VIYVee%f)vzr$!&PS@ '0 P  HCKC: : +p++M'/H$@P>$$0p?8*$+ #@ 55XW+N]M]]/]???]99910]]%#"&&5463273327654$#"3 $73#"$$'&547!2#"&'&32>54&#"AQYirW9")5Vr}bX3CTdz@ra̶EU T8|qHa@qj@K[h؁?[]a'=P "g~ir啽 ɭ*'LCfAYgUU U@Y U U U/0gh ` YVPh         @ U   @ U   p@  @  @ eRP@ P    @+]q]q]q?<?<<.++}ć.++}9999ć10K SKQZX8888Yrq]++++++#3#!!&'3XݫF"3FDZw*@G UF#V#f#s iup s  ' '* **))& U@3U U U U U UT%& U U @ U ,   UU U U U@ U]+;\+++++++]<54&&#!&sfgW=8JKFm^&CZ:TYe^3'g`1RfMIo) 8kFRy1fvӵcj U@_ U 2 cpt  *(* G VWVhk{޲(9@-(9  &J& &  Uc\+N+]MN]M??910++]]q]++r#"$54$32&&#"326=כC,;3“\m憣1nU-銼Z@/ C& @ U U U  U @ U    UU U U U@ U];\+++++++]<<+++++]?<?rs^sg0pMQOa7" ع @4    U@ U U@ U U]    @ 4 UU U@ U U U@ U]  P ` p ;Y+]q++++++++]<<]+++++<<?CTX@  /33???910@$/*(% / 0 `  P  CTX  ??99@$     ee@ (9P@ @(9_@ P0` `+]q]q+]q+?<?<.+}ć.+}K SKQZX 888888YK(SK6QZX8YY10]q]]Y!3673A}."-׀pxx)Fv@&)&)&9696IGIGXWXWCTX@3+44 DD KTT [dd ktt { ?????9]99@  < <  <@Z         A Q QQ@Q +N]MNEeD?<<(7-@, * *) **9 67:*I*] ]*j i*`0 ) ( U'@ U((((D@ U U U5@U U+,*499,IH,VY+fi+v +74/$42!_)o))/? UU@U UU@ UE' 2 )aa U%!$U$@ U$ U$ U$ U$@ U$U$ U$[@'@&& &0&&9U&ֶU&19@ #409999@AU%"/$?U U U U U U U18+++++++]q+]q+++]++++++++<+??+?9/+++++]qq999910]++++q]++q%#"&546676767654'&#"'>32#&326765ZCTX@4 @Pp  U U U U/++++??]2]210@G CCSS``    jiju p  "_o@y0@P`p    $ U"$ +@ U@UH U UI$? U U U14++++]q++++]rKS#KQZX8Yr+r??9/9/]]10]q]qY#"4632&&#"326<r鉭Zj kl‚FU@  % 4 D 55WT RSgde c`+<<Kp.$ .:5 KE FIW V g     3%%@`@ U@ UU@UU U@ UU U@B Ut$?O U U U U U U4P+N++++++]qM++++++++++]q<<??S@U]] U eko e  U@R U U'1:1AMAQ\Ramaxx P`p U@U @ ܴ U U U @ '*4  %&4@A#403$@$*4?O U U U U U U47+N++++++]+MNq++q++++M?]++?9/]*o@` , %L E , &,#9 6J FVX h .#,'>#>'L',,6!6)?,F F!E)T!T)ic!c)`,,'!#'(@ 0`p}@2 E" 3%3 %@`,@ U,@ UU@UU U@ UU U@J Ut%"$?O U U" U U U U+,t!4P++N++++++]qM++++++++++]q<<??]??<10]q]q32676'#"5463253#"&32654&#"f 2Ct}vnэze۠Ꙧ}|zxXQ%2dZ7<ݘjx*a4@ U%5E @:4  % @364  @ U@U (U U @ U  U  U @ U U @ U U U N@464p%@364 U@U U U U@U U UNGP+++++++++]q+<<]q+++++++++++++]q+?#ǹ U U @M 4%    #  # # %%%%%UU@ U U@ U U UU U U]@ %U@ U U@ U U U@ U U U]@3#%?O@U U U U UU@U U U$%x!GP++N+++++++++]qrpXdL:&N_bX'l_:xxP>}@@< 4y   $@U@ U (U U @ U  U " U @ U U @ U U @ U @364   N@464p3%UU@U U U U@U U U@364 N]q++++++++++<<<]q+]q+++++++++++++<<? k U U@s U U  GHVYgi4::5EKKE\\ R]]Rmm dmmdw  [TT [ lee l  $@ U@ U@U U U U UU U@$%40 1@I#40$ U U U U U U U U@$%4?147+]+++++++++q+]]]++++++++++??10q]qC\X@ SS bb ]Y++++7632#"32654&#"D{'v i!>b@ -=K?  ) #22Bp ::JJY[ \\jk imk  #++5:FJZ   $  @ `  @ U @ U @ U  U U U U @# U t33%?O@U U U U UU@U U UG7+N+++++++++]qr6@ +*;Ky ??K44?DDSScc` )" +95 IF Zi    3%@`@ U@ UU@UU U@ UU U@? Ut$?O$ U U" U U Ut!4P++N+++++]qM++++++++++]q<<????9910]]qq#"466325332654&#",*Uo~q!xsvui;N.C>@;/#4CSft      (" "%@364 U@U U UU@U U UNG+++++++++]q+<]r???999999ɇ}10]r]336632&#">i?[^>BB;^&qH:'G?`r?>0@{"": J D$V"e"| $, 0K,U2 \\ \ \ \ \ jj j j j j &''&$'$)6$Z Y d&d(t#t$$ (,0 '(&&( U" U# U$ U( U" U# U$ U@9Z'%  & .@", U?O_oU@ U@4@4.\l UU@U. $@42@/UU U U U U U U[$*9** U*U* U* U*2@!'*4`22?222$ U U U U @U $ U U U@ U U U"?O147+N]qM+++++++++++rN]q+++++q+M+++++++++r?+++?q9/++]qr+]qr+99910Cy@@'-#,&"  (- !#"# ) (' +++<<+<<+++++*++++++++++]q]rq]732654'&'.54676632&&#"#"&?{|x5%ƙOA8*S}Z si|j/Vi}=kreD=#%2INGy(+H{gR\R7# $3A|\ZW$*ع #&4 @A#&4  +  "" % E E`p UUU U UU@ U U Uj6f++++++++++]q<<<??<<993310]++%#"&&5#5373#32LeclM,&O@ 4 4@34+$    3%@364@U(UU@ U U@ UU@ U U@ UN@464p % @364   U @U  U U @U  U  U NGP++++++++]q+]q+]q+++++++++++<???<99910Cy@    ++**]+++!5#"&&'&53326653?|^O nQQ;HmO5s1GQS9& CTX@   $U/+33???9105"9 @ 9 4444 @ !4(!4 @ "%4"%4 @~(.4 (.4 )( & 95 HG VVYX ffii xwwyx w   ,   (& 7 O@ @4@ 4CTX@  @ U U @ U U 9/++++/??910@7 %  %  /  "@@@  @@ @" +]]]9999?<<!4@J!4)( /99 IFFI O\TTZ Plccj {t{  &)+ 94,9 @#9:  % a+ a @ U + [@ U" @`@$ Ut ~Oo Ut!|++N+]q!4++++qY]C\X޲9 ޲9 9 = 9 @ 999++++++++Y35#!5!63!(sXOdoyjw^{ 9Q|*{@MG(44 4% 4')** %  %   %:%&:*':&**_i+ph+]<<<<<??9/9910++++q>7>7633#"33#"'.&&'9Ma  1H8&V8hD W]ncA_8b,@T aMdON5Tf= KEkt-.%D6ghPQY2~@v +N]2!)d+CTXA+@ @4 dH+++Y55Y&$?@ h+)++q55f[v&&"@0 0O0/0000H+)++]q5,&(Tj(@/H+!)++]]q5&1QKU@ UoO_zH+!)d++]]qqq++5c&2,#!)+CTX A+  dH++]Y55"&8@  A!)++55J&D@/;?;;H+;")++q5J&DC@999 H+9")++]5J&D6@&: :0:p::::::::@.24:=A>")+++]qr5J&D'@<@ Up<<<<bH+?")++]+55J&D8@I@ UI@ UI@4I@ 4IIIдH+G")++]++++5J&D@AAAh+A")++q55Po>&F7@U/0 H+)++]]qr+5K&H@!!! H+!")++]5K&HC&@ 4p H+")++]q+5K&H'@ @;5 @-24  # A$")++r++5K&H#@"@ U"" dH+%")++]+55.&2@ U4@"%4/ZH+")++]+++5#&C(@@4@"%4 H+")++]++5h&@  A ")++5 :&@ UH+ ")+++55&Q5&")+CTX# A+("$4O((H++]+Y5D'&R@H+")++]5D'&RC&@ 4pH+")++]q+5D'&R @@.24A ")++r+5D'&R*@ @U@ UnH+!")++++55D'&R0@/+?+++O++/+?++H+)")++]]]q5&X!@@4O p+]<<<<<<<<?<<<:+N]M<]]{?{@{AsIsJ->?@AHIJ)) )$)"1HC EB?9% ":/'<HCB?:9/'% 6'@-' <>+^2><)O++L"^><8E)OKq+N]MN]M??999910]]732654'&%.5467&&54632&&#"#"&6654'&'&'zifs$>uJxiG:ȥiY\q$87GCI*pPOdm3JI45CQE..FihF3+K[gL`DsAz`c<4,D`-54&#"YЂ$\d-@͠~/2d7Ll ['(g m[kpr3l?  AY6MiƇjH]HhF8(>r99<'PX">_!6@@6,-&')-)0+1 +++ e01/d/t//г&-4/b@.,..,-,+*).012601(3-,+*/))5b77 !@?b@!""".//6O  o   b b;b&T/b.@756!6b J bBb Az+NMNM<<<<??]q<<<]<<9/9/999.++q}910Cy@J<>%$%=&%&%&& %&%>#;,!! !!<%?, !! !!++++++++++++++++++++]q]2#"$54$"32$54$!2#'&'&##32654&&##jjӪ,,Li+1GcHU4$EMrS(G`hk}Ѥէ+/,-p?Y0q&D8$9:3@  036p !$/0..`+8b@O$$o$$$$2b@ ++++b b/b. b!5b'd b<b ;z+NMNM??]]q]10Cy@T37%*)&%&%&& %&%3*57%5!! !!4(26&8 !! !!+++++++++++++++++++++]2#"$54$"32$54$#"&546632&&#"326jjӪ,,T{Ëdw wuOspZhk}Ѥէ+/$}ʄcmJOh@] 95JF  i b@  b;;b b@ 0`ٹ.+]<<<<?<<<<<<999910]]!5!!!33##e|{yyJ/uTJOeȳ44@&4oooOP`S٧+NM?]<10]]]]+++3ޅ=nH@#<<<_o$p+N]M<<<<?<991053353=N@         ?  %  0   %   U >q+<<<<<<9/9/?TX8'l@Owvx % &D dsy%{&%& Uk:%E/)6#  =) &i(h+??9910]]]]]'6632#"&5476%.#"3276F^L{/-ڎ(`A>v}fDKUur@"#l vy+<<?<IlUk{`0H8 F0#A<"Yw=>w=2(,&):N9- C/| |@)ip) ih+]]??10]2#"&546"32654&uQceOPdeȰįȅr~uuzt*Y@%99EJJF%YVif|zt%&;. H@) +;::+';'''':*:)((::'(@ U( U/Ox@ & J(U U U@ Uj, (@((x)$&J)U)U) U)@ U`)) ))++]q++++]]++++<]++<<?<<<<]q]q?10Cy@ # "%& %&!$ #  ++++++++q]%&'&54$3 %!567>54&#"!5l9W^/PlW5`lP,Hd3cɏiC?`I]:?(&=gxHD>5<J{@5=9=HL)O9Z)^9z(@0"4%LCB%DH[VVS%iged#wt&$ U=U=@. U====F6....2: :'' F 2}@ 6%3=%.7@. U.@ U. U. U..?...ĵ+5$3+U+ U+޴ U+@ U+0+@+++@; %"C$  U " U  U  U  U  U  ? O  K47+N]q++++++M]++++M]q++++?<]?<9/]9/]+++10]]#"&'#"&5466767654&#"'>326632!3267!&&#"326762Mh{c–fiWx9iăf;(@sbCXgHz~Om,;jesE`ff`VN~e*MUuN2@FI}*Wvk"'"/LGarU4dg!+@", %FTdU(!"FI LLEK&Zfdf""+,+/"; =8&T-X \^&" !"!!|y!y"#j!i#z zlfm&u;"EJ&-,"9M CIF'z"v#"d mmh"""#@7 !}!#"(-(,  % [[% ($U U U U U@UU-4-@5 4---- ----$U U U U U@U,3+N]q++++++MN]q++]+++++++M??999999999.+}<<<<<<<<10C\X޲ 9!޶9""9#@ 9"%9@9++++++Y]]]]qq]]]]]]]]]]]]qqC\X@)"#"#$ ""-]q]qY]q+q]7#"''7&'&532&#"32654'&c`k?zi^l;(&R[d4?Nb FVFdԍqPGDDm- *Fʖe?L9*SO&"@7|k|`k]]KRLK:D ')"@!<^l $$<"^"^ v#+]<]?<71$7wrYY6&"nM:;+b:jatOJ`ll& vCTX@ <:<:/?/10@#< :8 8:<<  !++]<?/10KSX <F&7igq3x2*-@c$ #+$""%+-// "%!"%&!!5656EFEFVVeevv )-  )-$ #' p    : + p  '>$ >$##> > i/+>>>>i.+<<<<<<?]]10]]]]56323267#"&&#"56323267#"&&#"3j<{EE#A6@R .5@m&W DD#K&K*D-K2D4WWS#_&_*S-gh`$l&l*c-\2T4R[23#;&:*3->224 (% 53/+ 3 %}@& /@(@@3 U U U?IJ0@UUִ Uд Uִ UUU U˴ U U 4@@!$U U U U U U( U U?O647+N]q++++++++M+q++++++++++]q+++?<]?<9/]99999910]]]]]%#"46326632!3267#"&32654&#"!&&#"Lzu3@|c +볆G\WM-K vxcd sX]nӦooiĺa~bo[@5 z+N]/M105!sʑ[@ 5 z+<]</105!ʑSZ @\~~llZZ      < < P@/o8< <@4u8<<q+N] @4 u<8' jq+]<<+<<?<?<9910qqqqqqqqqqrq]53'667353'667W+[,65+[,65ѥ;Q)G_Sѥ;Q)G_SQ ~@6{ Zl  <8oP@8'<  y+N]º(z-Q0X[RM`Eb:xLl*1FXQe\H,L9@ 9@uu< 0jKZ+]/10]++#3# ;9\H!4@uup+]<<<<<<<<<<<<<<<</<<<<<<<MHDFJBM7!+5#2-)+/'2 T;QN?QGEILAI9 63$6,*.1&.  +++++++++++++++++++++++++++++++++]34632#"&7327654'&#"4632#"&7327654'&#"4632#"&7327654'&#"@YaOA; +,"<>!-BOA; +-";>!-OA; +,"<>!-6 ǵǺŘj-/.>ǵƹŗk-=>/.>Y,&$@j@oA!)d++r5,&(kj*@ @ 4 / _  H+!)++]q+5Y,&$?j!@ 4 H+!)d+++5&(lG@ U@4@ 4@4H+!)++]q++++55,&(Cj(@ o  @  H+ !)++]qq5,&,j+4@"%4/ZH+!)++]++5Y,&,j2 !)+CTX A+@@344@4aH++++Y55&,@ H+ !)++556,&,Cj9!)+CTX-A+@@4@"%4 H++]++Y5c,&2j$@4pH+!)++q+5c,&2j@ !A"!)++5c,&2Cj$@ 4PH+!)++]+5",&8j+@@ 4O/H+!)++]qq+5",&8j'!)+CTX A+5H'+Y",&8Cj#@@4H+!)++]q+5z&j @U% U U U U@ U U+++++++]<<+??<1033ƴ&I@d<=@ 4dd<h+NM+?<]<<<10#3#XqT@@ :??@  v Mv!z++NEeD?M910Cy@, %&22  222 2+++++<<+++]&763232673#"'&#":9Y>k;# "mT?gC"h>>6#4rr8$/_#@45h+N/M+105!p˔.} KU @ @@ A+]NM?<,+?:IjkLMjkO/@@--@?k[A : OZ@ : vM>Wy+? @^&>k U4Ks u:A@!<r<rp+NM]?<<M[4z-cxYKDT.w"xeV(H@d<=@ 4dd<z+NM+/<]<<<1073#3gn+ @     @$    T  e] U U U U U U  ;\+]++++++<<<<]?9/9/?<<10573!!Lf5{|ҭ @H p       E  @N 6 U U @U  U U  U U U @ U  N GP+]+++++++++]<<<<?9/9/?<10]5737#>nnss)\&&6(d@ 11H+4!)++]5?&V@ p11H+5")++q5)&&=d@ A!)++5(&])")d+CTXA+A+Y5QYOe~@# v  !++N]</l*Q {j=@ u  a '? a@:) )'h+NM<?]999CTX99Y10q]q676$7654&#"'6632!)? %FDBA;-S#99V)+0>/CoivUTK8s=$y!+v@##M'0a)@ '_o?a@) ')&)'),h+NM?]r]9/99910732654&#"#7654&#"'6632#"&! +;GVHW QK<;8?)}xGCYT<N72<n<+%4,:jTkP7VeD]ok *@/,3!?&D!T!(((@!(),+   @ :/?Ma(a)a@ **' 'c@)":**)i, )D+Wh+<<<<?<<]?<<<999999.+}ıCTX&*)99Y10]]q356673676$7654&#"'6632!M6fz>/l=*> %EEBA;-T#9 *Q {j=89W)+0=/BpivUTK8t=#yk @   )+::Vf fv@   @  :d@-' 5_5M  5 h+N]M<<<]<]<?<<<<<<<</lzhh9 *Q {j={l!-8;3/=@'=<% 23:% 1:20M @  0 @/?_o_oa a+@35449677/;9d0/.32@ 88.. 0@;1108:5363.)8N=)"" )0(((@ )")<|f+NM]<<?<<<<<<<<&V:2 )+CTX23..A+@ 3333343.&D@ 8'H'8 )++Z&&'d-@@U@U@ UH+!!)+++++5G (4@06'SS'bb'56-!: I CEI(Z j - # & C@4@@&H H @1#3   %U@UU U UU@ U U@> U@`t$ U U U U" U U?O)4+N]++++++M]+++++++++<<<<<&H='@`PH+ )++]]]5&&(3d*@ @ 4 / _  H+!)++]q+5K&H@  H'!")++*,&/Rj@  pH' !)++B&Od[<!)+CTXA+4@ "%4/ZH++]++Y5*  Q@3ee Q Ue    $U U @ U U @ U  ;\+N]+++++eclM,5F{"E*t0&&7d5 !)+CTX A+@ @%'4@ 4H++++Y5# "@*ol```ppr   !-@$@3 @@$+!  "0%EUU UUU U@ U#6f+N]+++++++M<<<??<<NM?<99993310]]53'667#"&&5#5373#32EHN-31LeclM,"+&8>;@:<4}?r+55CTX A+55h'+Y&X@ A"")++55",&8j3!)+CTX A+@ `UH++]]Y55&X1 ")+CTX A+4dH+++Y54),&=j(@@ 4YH+!)+++]]5(&]OiH+")d++]5)&=0j  H+ !)++]5(&].@@ U/H+")d++]q+58@  $UU U UUU U U;+N++++++++ @P "7GVVv u IFFI[TT[h h gy  %*5:o`  UU Uk@ U U@G UB7"@ U  U U  U % U  U? O  4!]++++++<q]++++++33????9]10qr]q]3#&'!"326%"32654&F;F;+S}D|&~d^,!eg#ĿH,@;X Z Uh h xEJJUZ '(78E3993[  ko c `coo`~ __ P PP_ZP+k j @3{0@[k@@!@ U!@ U@U U UU U@J$%40 1!@ U U U U U U U U?1 ]++++++++]]++++++++3/3/]99]r9]??3?3910q]]]r]]]q!!#"57&'32654&#"!dվ]Rzf@ Aʪܼ˼bc>$@7&_&}}&&!96"uy!!  @ 4? @ p  #@+  @ @"4  `&@@U U UO4%]+++]2/q3/+339/9??9/q3/]33/+3910]q]&#"327&#"327#"&547&54632={kXQxt# opM{h]^6F]nEGam~LSwD>$@=6699EEIISXTRT^ejdddm   $U UUUմ U U@! UP`p0@P`p @2 ?$ @$%4 U  U U  U U @U U  U U ?  1]++++++++++q]]q+++++++???9310]!#"32"32654&߅#K_&|}±.&@ P ` p O  p%U U U U@ UU U@- U p@p J/^]^rq]++++++++]]?L<;Ol#67!5!&&'VcM^g;L<;l%-0lea^vSh;5367#&&w^`elɐ/.%L;g^McVOn#67!#&&'56673!&'3^PE}}EP^^PE}}EP-++-,Ug3&'67#&&'5566-,,-+^PE~~DO^^OD~~EPg3&'67#&&'5566!!-,,-+3^PE~~DO^^OD~~EPbjk3!!jded#!F@  #!! "y+NM<32#4'.#"% D|wנE  5o\\s.mE}b]4t?rvLPh6r: j@< %?   %0%   WZ+N<<<<<<<<<</ON?2abu u??e!00!"//"!00!"//$$_dd #/! ! 4&#"326%4&#"3263267'#"'vu/"!00!"//"!00!"/2ba2?NOu u"//"!00!"//"!00_dd_$!FU/;3!!#&&''&&'!5!66776674#"32LfX"4I&P|9bkLpP3BD P BE0$e\$,-U?G5_J`]E2H9 Q>=3TjEjT9F=,-I '!!#!5!"&&546632"3254&&5;4gv~~n;I;yzzyoT&#"&&5432'"3254&&$93NXh v~~TfEK25yzzy:"#"&'!726'#"&54766766!lJ\N1K-TZ!-0IClE`a]c %%__[I;R6S73!!7676654'#"&54632&&5463267632#"&'&'J6Qg=[t^"#"3o|rvt3FG)rmYb(tx=3%X=)?&&'&'&&5463267632bsy.)mnQ=&!R>M[wh[|#N>CU.w=vgP~FfW@U6 UOp ~ E  E %U@U U U UU U@" U N]qr++++++++<<<M[uhet"N>CU.w&Q! A/+5]@^;4 ?A il{uru $$/q  /& $U Դ U U U @ U  V  UU U UU U U]+++++++<]+++++/]/?<@J$4Dr    %U@ U U U@ UU U@ U@364pE%@U U UU@U U U@364 N 9]q++++++++<<<]q+]q++++++++<<9?&U%/\&&6Ld@ 36A2!)++5?&V@ 36A2")++50@&  0  99   /@ UU U U U U@ U s+]+++++++<]<]<<<<??<<9/<<10]!5!!5!!!!#JHu #&4@[#&4/ + + 4 U 4 U   3  "" %EU@U U UUU@ U U@ UNG +]q+++++++++<<<<3/q3333++99??<<9/<<10]++#53#5373#3#327#"&&5%@ /I=jslU>Hu"&8d@ !A!)++5&X @@ST4%A")+++q5"&8d%!)+CTX A+H++Y5_&X@  A)++5"&8d@  A!)++5&X(")+CTX  A+ رH++Y5V""3XX"$@*4:;4!6"JJF!F"XV!f"v" " 4]  @  ]@ &U@ U U U@ U  P`p]$& UU U U U U UU 4]#;++]++++++++]]q+++++9/]q3//]?M[vebyIt۴NG*GT.w=xeFqPO^NW&%r "4'@ 4 4@@4 &5Dw*+ E #%   @pE %"!#0@%$@364'@U$(U$U$@ U$ U$ U$@ U$U$@ U$ U$@ U$$$N'@464''p'''''%U@U U U@U U U@364 N&GP+]q++++++++]q+]q++++++++++++<99/2//]<??L\uhbw|~;nS[0N>CU.wASPSS/SpSSS AAAA/qr55/]q5+55+5@,PDH+QRPSKO4S@``4S@884S`SSSSSS8?4S@ ,.4S)/4S'(4S#$4S"4S@4S@4S4S@+++++++++qr+++10+5Y,&j@ A!)++5D&X@ N%H'N")++S,&j@ 42H+4!)++5d&6@ ,H'/")++Y&$@<<+NM/<<1053Yv,&:Cj A!)++5&ZChA")++5v,&:j@ H+!)++5&Zh@ H+")++5v&:l+!)+CTX A+H++Y55&Z@ H+")++55F,&<CMj@ H'!)++!Q&\C@ UH+")+++5[ GP@ < i ? +N]J)yzk !-8@/:{wB\4@';4?%6a@ %/%?%%%+a@    }0a@  ")'.) @()'3)::9  )F9Wh+<<<99NM?<<<<99/]9/9/.+++}10]356673&54632#"&54732654&#"32654&#"M6fz7.l}F33IH67@GPVDFL9 *Q {m=/sPokVs-)j~d244-.7:E5:DE""6BMQ@/Oi&f*{&w*&*B\4@';4?!--:##Ka@ :/:?:::2@a(2a@ ! 0da!@/?_o_oa}Ea@2  7)%'C)5@/=)+'H)/OON)" )0(@' d)")N|h+NMr]9NM9?<l ` ٹ+9<</<<1053'67J^6]un&T(kk[K@ M   1@:M/8)j W+NM<]]10632#"'73254#"#|?M ,+2nHMt uLCO Z@8 @ P `  u@,/4_P/r]+q3/]3/?]q<<103#%3#%3#[u<֭[UUU U@e U U U/0gh ` YVPh         @ U   @ U   p@ RR@4@ 4T  @ eRP@ P    @ +]q]q]qr++?@'O_  b V b V ??9/]q10!!!!!!#^gyY&&c2" @4 U@ U U]   UU U U@ U U 4] @ U  P ` p ;Y+]q++]++++++]+++???10+3!#!~F 3 @< 66   &- 7:? I ij xx   U@ U  @6U U       1  ]<<<9??<<9.+++}ć.+++}10]qrq]!!!55y <!/07F< I;0 @J@O I@@`p  0@ 4 4## 44 ]  @ U   U U @ U 0 @ @ ` p  ]@ 4@ U UU U U ]]++++++]q]q+++9/+<<????9/<<10]++q]33663#$uO sb ;5 aw@[XYXW [TXXzu \P od v % KKFE   * ; --  ::@ U U/Ox@ & JU@ U U@ UU U@ Uj_ @x&JUU U UUU U@ U` ]q++++++++]]]+++++++<]++<<?<<<<<qui>)@Wrp %5F   %@ U U @ U  U  U @ U U @ U U @ Up  N%@U U U@U U U@364 N 9]q+++++++<<<]++++++++++<<9?9V=&L@ N% U U@ U U EG +]++++<<??<1033&& Z U U @> UD? ZYii   (8XYJ@  @R U%U U%  e     Pp % U @U  U  U U U U @364   N ]q++++++++</]9q?<RiE>  @dk jj`_bjl blP__ P_9579IFFIVWX Y h x    $@ $%4UU@ U0` 1@ #40 %@ U U@ U U@364 N]q+++++q+]]]++++3/???910]]]]]q32#"'"32654&s#i."}@VQ>"@K')69 FJ   & 7 G v  ! $ U U U U U @$%40    1$$@:#40$$$U U U UU U@$%4?1#]+++++++q+]]]++++++3/39/3??/10]]]&#"#"'732654&'&&54!2*pp‹|FަCU,:+`nO~Y${#t3%AsK S;69/d&@9DDTSP[cjs{ p  % @U U U @ U U U U @ U p  N%U@ U U@ U U@364 N]q++++++<<]++++++++<<?53#.5z05Mδȋ.&gYb ʗDW&$U@I&( &9H@&S\]Sdknavzuz$$&&& HH   00@#  P  0@ U #@ U@ U UU U@)$%4 0 0 @`1&&@ #40&&@#@ U#U#@U# U# U#@$%4#?##1%]++++++q+]]]rq++++++9/+qr99/9/????9/]910r]3326653326543#"'#"5c@p%%q@b۪ab&d~7{cհI"&( ")+CTX A+H++Y55&#@p A")++]54D'&R@H+")++]5&# ")+W&&@ %' A%")++5&(^  !)+2@*fv" ]J  J& д U U U U @ U 7 UUִ U U U U Uִ UUT+++++++++<+++++9/???<9/9910Cy@  66 66++++]!!632#"'732654&#"#!2hLR8c˲!%^X U,&=j@ H+!)++5dv@+;]o )) ) 5;5 ;GKE KVT V Tj wyx   `p T   &&b/ -& @U U  c\+]++]]q9/??9/9/9/]10]q]!3 ! 4$32!"Y ^Y 836S Kt1GJ23\6,5&,( !)+CTX A+H++Y557a- )&=@b&&  H@  U$U U U@ U U@UU!& U@$%40 1( @ U U:@J UU-'++++]]++9/]++++++++<???9/10Cy@,$&&%%#&, !6$!6, 6"%6+++++++++++!2#!!#"'73265!26654&&#!^bɾ+j@Z!0"BBjzW]ohM wc)w`[{&D@/+     U U U U@ U U@"UU& U U U U U U@$%40 1!  UU U U U UUU] ++++++++<]]+++++++9/++++++++<<?32"'&#"#&&##"#67&&'&'&#5632kS=OW_  ]-.;@^Y.by`b .OdE?--YN e`P?Ti~iwQ--s&(Rer' k((OwdN&@SN9Fe!uKZt( @P`p ?O_%0@P% H %HH@% & U U@UK&" U"@ U ""\(&b&1']++]+++9/??9/9/]9/]9]910Cy@#$6$66#6++++q]]q732654&##526654&#"'!2# N]mo32"'&#"#&&##…lT=OXp  ]-.;JfG.el~gĐwQ--a'{R  b H@  U@U& U U U@ U UU] U@U U U@ U U:@ J  U U U b+++++++++]++++++++???10Cy@ & ,,+++!#!#"'73265 +j@Z!0"BBF wc0"+c2! @ 4 U@ U U U@ U9    UU U@ U U U @4]  P ` p ]q+]++++++]+++++??<10+!#!#F 3fv&07 @fh@ U@ U ] J H@   \\9/]9999??<<<9.++}ć.++}ć10r]r]33#"'53267 g{KmNWGg>~ք#-[R@I !!O!p!!!%++%{ {0 o   ?p &U U@ U?oó &U@ U U0`p@   @   @ U U @ U  O  /]r+++D[D(@E9 5%9'I F%H'YYU[Q%\' = & #3  & $*@ U*@ U@U U U@ U U UU@$%40 1*@C#40***#$ U U U U U UU@$%4?1)]++++++++]q+]]++++++++++???9910q]#"6632#"&!264&#"326 IsߢGDrp(2kTVeeO$ P໹&#2@6%/%F#+##++ $ UUU$ U U U @ U U @$%40    1%%@#40%%% U U U@ U UUE$++++++<q+]]]++++++]+++??9/9910Cy@3!%% & !   " <+++<++++++++]!2#!326654&##32674&&##k??Kc Ļ!sVDwrBju&3_Lq&^gI3TBGW3W&d@ + %U@U U UU@ U U UE]++++++++<??10!!#cQ&ol& ;@ +  + @ U U U U@ U@    %@ UU+@UUU@ U U@ U U Uڴ UU@$U?ON+ U @U    <]qr++rq]+++++++++++9/]q++9/]]+++++?<H`&8@9' %%:/:?:`:p:: ::0:O:::::4;!!!533U3@JU3+)'))'U+% !!%"#""#53') %# "7 @?.3 0 H"!! %'5)3/#! " @  (@ %8 UU U U U@ U(@O//"""P"""p""""39]qrq]q++++++<<]qq9999?<<<=eI%W7 QD2b>& @] (U ;P`p    @HH H ! $!$U@$%40 1(@ U@[']q+]]++9/9??9/]q9/]9/q]910Cy@*$#&!$! "%<+++++++]]q5>54&#"'!2# 732654&&#"rrSJaM=P2~PPл:[[yLVq P\& R@Vg{@ U U@9 U U+ % @U @ U$UU@ U U UUU U@ U@364N @464 p  % U @ U  U @ U  U @364   N ]q++++++]q+]q++++++++++++CTX9999Y?@K>??DD /,//L^z KK ?{{@ U%   @* H    I %U@U U U U UUU@364 N]q+++++++++<]]99?<33'"#&&##VEC5BV_$2G+)DGtp;X=&5B~PmhP!Ic?#&F@+3  %@ U@ U(U@ U U@ U U U U@ UUU@364N@464@`p%U@UU U U U U U@UO_op | +9/]+++++++++]q+q+++++++++++++??10Cy@ &% ++++!#!#"'532665D#lf?RO80&vX2&  U@v U   FJEJ VZ      xx     @ U + U@' U+      %@ UU U U@! UU UN? %@ U U U@ U N ]++++<]]+++++++<9?<<R& @+ % @ U@U UU@ U U& U U@ UUU@364N @464  p  %UU@U U U UUU@364 N]q+++++++++]q+]q++++++++++++?SP>F&&@/ 0 @ _ + WW%@ U U U U U U@& UUPP`/]qr++++++++??<10]!!#!&_&o!Q&\KiJ)5D@bX  77[\ USY Y"Y&U,V.U4jj edj n"n&h(f,e.f4yvy vv #0'33!3-  U% U@ U$$ U U UU@$$%40 17@7P7`7777 707@777@4#4077*$ U# U UUU@$%4?16]++++++q+]]]]+++++9/++<+<???l&&aTYEl& @+  + $ U U U@ UU@7$%40 1?_ %@ U U U UUU@364 N]q+++++++<qr]]]++++++??9/10Cy@  ++++332#!732654&##>l&aTYEl+>S}@9@ UU U@UU7N+++++5>}@^ 4GZ_ PSS_[no eccon"+  $U U@ U U@ U0$ U U U U U @$%40    1!%UU@U U U U UUU@364 N ]q++++++++++<]]++++++9/]q+++++<????9/10]q336632#"'##"32654&yڴZ|{&D*˷̽& @& 4 D [T y $   U U@*U%    ++   %@ UU@ U U U U U@ UU"UN ($ U+++++++++++<9?<@:EUUk l ls s { tu_o "0@` @H 4+  $$7$U U U U U U@UU@$%4?14 +N]+++++++++MV<L :&@ UH+ ")+++55Q:M&" @$+"" ++ +  % @ U U U U ٴ U U @U@ `   $ U U@ UU@$%40 1$$@#40$$ %U U@" U U U UO_#]++++++q+]]]+++++9/]q+++++++<??<?9/10]32#!!#"'5326532654&##D> 'ohoG(?([k&a﯐G NnSZFk9&@(+ +  %U U@ U U@UU/ $ U UU@$%40 1@ #40 % @U  U  U U U U @364   N]q+++++++<q+]]]++++9/]++++++<99<?fkl)&FgOTBe@  %5Fz@2+4    %@ U@U (U U @ U  U  U @ U U U @364   N@464p%U@U U U UU@364 N]q+++++++<<<]q+]q+++++++++++/]/?@ + + U U U@U_o% @ U @ U U @ U U & U U U @ U U U @364   N @464 p  %UU@U U U UU@364 N ]q++++++++]q+]q++++++++++++9/]++++?<??<10!#!3!3.&nP@.U U U UU  UU U UU U U9+++++++9/+++++??/103!# @#+ %U U U UU@U  %U@U U U UUUE+++++++9/]++++++???103!#w0&o&A[@ /105!Aʑ@ !%:@'(/'  U@% U7fu8* f@(*M#"5$%u UU U@ U $%^ b@^ U>' UU U U&++++<<+9/++++<99?<<1_u=3oZ\%)gvۍG2)1v@,Tc   U U@ UU̴ 4 2/+3/++++2/?3//?<10]%3!5!4&&#"'63  BAjX1@V#/8 4K Y j {  #      @ @ U U/]++2}/]323/833/99?3??<<<|9/]399.+}ć.+}10]#"#76634&&#"'632bI{R;TKIVG=0Ca4o[VY6 f-%Q@   U U@U U̴ 0]]++++?1@ )6ZZij @K   U    U?_ @ U U U +++3/]+3/9?<<?B @*/7GSYY S S\\S  &@ U U@ U U@ U U U U UU@ & U@ U U U U UU+++++++++++++++++??10]432#"732654&#"Zؔpј6u1%@5 yyu u ;i@6U  U 3/]3/9/+3339/?<;+\%qHHn{mNL7YI(1h+ ; I @  / @ U UݴUU++++3/]3/?3??1088]63 #4&&#"(B>k \d*%!@F+/#15==1HHY\Zhjju r tvy! !@UU!U ! Ƶ# !"229/+++?<2 lg&&&&=3oZ\%)mpۜ>%%%%2)1& @ `A)++]51&F(@@$$ $P$$$$$A)++]q5-%&N @  A)++]5@1& @@pA)++]5%W ӷ  @U U@CD4@=5O@ /@4/+qqr++++??/10#2#"&5466š%&5&%%q&&+)%;%"@ $$Pb@ ' U  @+ UUU@4O@4̳$ /]+/]q++++3/+9/??/]10]"#54'&547!5!2#"&&546; %&%0TfjJ1q&&&#1@;&@ (!A)++5%f @  @"U U( U@CD4@=5O@ /  @4 /+qqr+++++?3/]9/10#2#"&5466š51#5&%%+)#1,(&(h1&@ A)++5PV7&("@ U"`"p"" A)++]+5<F&97!U! U!!@ 4!A)+++]++5P>1&?@ %A)++5<<1&b1 U 4A)++]++5Z>B (@!/*\\S 7GSYY S S"@ / @&O&_&&&&&&@ U U@ U U@ U U U U UU@ *& U@ U U U U UU)+++++++++++++++++9/]q??9/]qr10]]432#"732654&#"2#"&&546Zؔpј#%&%06u1Y&&&#1nh1(@ "4 4IK[)8=@!!l )  (4UӶ%U%@ U%@#&4%@4%%  U@ UU#U/@*  U U U )+++]++++9/+++++?3/?9/3/1088]]++327#"63 #4&&#"2#"&&5466&\-6D?~b %%&'z 5uN%%&%s7 -@MKz//==!@((l   #4>%+@ U+U+@!#4+@4++&UU U / @U U  U .+++]+++9/+++++3/3/?3/?3/9/3/10]]632!"'732654&#"327#"&52#"&546z8q.b¢TR{ 'Bb %0$#105G?Ĭ{I%$00$#1 f%&e+ U@ U AG )+q+++5h%&:@#U#@>C4#@374#@4#p##A)++]q++++5(1& @ UA)+++5d*%!.@Z/0 yjju r tvHHY\Zh+15==1"@((! !%Ӷo,,,@UU!U 0! Ƶ0 !/229/]+++9/]?<2 lg=3oZ5k%)mpۜ>$  ///10#$H %@ MM  4@   @ 4ض@??4@44 @4@[\4@&)4@4" 4 @+-4  @ @+-4   @+34 +-4+-4ַ"+34/3/+]+]+2/+]+]+/+3/++++<<3/+++<+</10]r#'7'77'$H1111m1111 _@6 rrr  "()4@ 4/++<<</<<9//10'7!#!'71GQ11b1Q# z@. @ 4r  r  r   ޳()4@ 4 @ 4  +++<<</<9//10+#!'7!#G11Q11C 4 4  4/3/+9/9/3?3/++310#"&54767P?MfX+V!;75Tkp7=76(G660] 4 @ 4 @  4/3/+9/9/33/?2/]3/++310#"&54767#"&54632P?MfX+V!;7C00GF11B5Tkp7=76(G660"/EE/0DBC'3̳4@ 4@4@ 4 %@ 41+(. @@4""(.$/3/3/]3/+9/9/?2/+?9/++10++#"&54654&#"'4774'&'&54632#"&54632$)@2Bn@4AS*@* =J~ KxI41HI43F>/5B,DD"*I51Lt"izBR 48BpYol3IJ24IJy3$ 4!@4@4# 4# #   @ ##&@ 44 /9/+3+3/3/9/9/9/?3/92/9/+9/+910++'6767'&54767632&'&#"60bq] t3(0>PQK1 (4%='0h0%P+(#FZ/:@ 9 %# -3 4339%%## @9 0%5)#0 4005@ )@ 4)) 44/++2/93/+2/+9/99999?2/9/9/2/+9/9910'#67654&#"6763267&'&5476324&#"6V.:GW(  ."&E?'+5&G %A"  /)C6$B % #F7B*/ //4&U&F[E  4 $/<3/<?3/3/+2/10%4764764Z,S4Z,S[/,#Q,(";/-#R+*#Fb1#$/3/?3/104764Z,S1.-#Q,(#H(' !@ 4!!' ' @  '$$ $4$4$4$/+++2/3/2/99?3/9/3/+9910'##6767&'&54632'4&#"6S2J2I5G@!M-*  K& ,}$27H83'Be8()7 ]."F#$/3/?3/10%4764Z,S0,#P+("F(@%&!&@ 4&&! &%%4 4/++3/23/299?9/3/]3/+9/999910#"&'#"&546773276773276573 #** +  &K06 $ 922 $ #8K1 2(+/FQ -  /3/?2/10#"&546324&#"326Q\C66P;6Jb<6MwZWD-# | @  4 /3/99+/3/10&'&'667U0 U#"89&Wle0"D[v_1,.%; @ 4 @ 4 /3/+9/9+??9/10#474'&'&'7":-O(J`O0D#*ZwsԸ~@Z_Qs%! @ @4@4 4@4@ 4/3/+9/9+3/++???9/9/+9CTX@4+Y10#"'#'&&'7327677!49h 8&L0BC4_jp+ nBHP/OԲCU_.TK)k#]%) 4$$ @ &A   !!'&@ 4&&  @ 4 4/+3/+9/9]33/+9/????9/9/]9/910+#"&'##4'&'73276733273_c9T"hI% (8D4I4!\UUeJ9mL]o%XKFGLD??DY ")=9<3B#W !-.LdMbDG)+$ !HBAM)0 !@@@4 4@ 44/3//2/10+++#"'&547676324'&'&#"326guyFP,2FV\vJPCe]/B,$E?|zq*0[Qbx9B7-)ZIHR&#I@G(o( 4' 4 4 @ #@4##/3/3/+993/??9/+9/9910++&'&'&54767#"'&5465732767G&A!8$0J/0&$.jOcU .$+%=[o:=  N!"7%g3WAnWH%@ 4&44 4@4@ 4   4 @    G/333/3/333?+??9/++9/CTX@ 4 4 @ 4+++Y10+++#'376)@ǣ$eb? 'YV^3=1@T4&44 4 4 4  4@   G/333/3/333?+??9/++9/CTX84j4 4+++Y10+++&'#6763$1+ *[tG[WFV]) [/@Z'*. 8 P@ 4    /9/3/9//3//3/10]+#"&54632%##"&54632L76ML77L>mDL87JK66N7NO65JHGz6LL66ON0"9 4 4 @  /3/9/9/3?33/+3/+10'6765&'&54632&;"J*E)1%)K69VUI;9!777-( $<6MP:dgs 4#@2 4 #0qe6kY 4B 4YBGN,9ak*qFU;`kGq 4qqTGkkkN@ 4\ 4 \_QahKn? 4&@ 4?&,P333FGTUn`ah;*n,ah@ 4hh9,n@/3/+999992/q99++99993/q99++?3/]3/+9992/99++999999++10#"''#"'#"&5467'#"&54767&'#"&5463267&'&546327&'&5463267632676324&#"326d,!5JJ vV%4j  ! !$"!.0$VqC!;+!+*",k3=z;E(* 3#'"D6`*<  it8K`A2k۴qF,{@# 4 4! * @4 *@ !* 4.',/3/9/39/+399?9/?+9910++7#"&'#"'&54732654'&'326Bi\AJk0,Y/_=APM(0AWP)0@'1D=+Gжxiw%47_q 3'J|+CYRgJ@J-{#y 4 4  @@4@ 4###"/3/3/39/39++??9/9/9/9910++47"&54676632&&#"3267XGQNK;v-5sK IM1}l_V{-b^hDM-.?>/YJRV_ C26<"8"Xa!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ FW:ι@ @ 4 @ @ 4 $*783./#*//$88$$*3* @ 4 /.'$#877/#$$/.4. 4.$/++3/23/299/+<3/<?9/3/2/9/99993/+3/3/+3/10476476#"&'#"&5476773276773276573[,S\,S3! #)++   &W.+%P+(#>0%P+(#L06 " 91$$ #8K1 2)-1!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ %W/?10!5!WW%!!%!! @ !!%!! @ !!%!! @  $($44(4@ 44 4!#"$$%'&((@ o     A "$!##% &('%%A @*  4 */2/+2/9/9/993/993/99???93/]q993/993/9910+++++!"'&547673!54&'7'7'7''7Fr*9|oO6AM, DEJLJM"KN%CT]a#b..G8vA:p27pTVZU; µ44 @ 44 4  @ o   @ @ 4   */2/9/9/+993/993/99??3/]q993/993/9910++++%'7'7''7%!5!4'&'7JLJM"KNKNH8TVZUv>+Q[3M;!!!%!! @ !!%!! @ !!%!! @ !!%!! @ 6N u,04844.48@4) 4* 4y* 413244.57688-/.0@ 400  241335.0-//687@5@ 455 :'*/3/3/33/999]9/+993/993/99?9/99?999/+993/993/9910+]+++++"&#"676323263!3#"'&'&547676'7'7''7L@P4Z(#KB_Ep%Ӕ{F:؏XdOBFJ6F4@4J@4 4 * 4y 4GIHJJA?B@@CEF@DDD84=)%03"4-%%34=DFCEEAHJIGG@BA@?@4_????83@99""3433L))*/3/3/33/999]9/999/]+992/993/99??9/99?99999/]CTXDD]Y992/992/9910+]+++++#"&54767!3#"'&'&5476767&&#"67632326733'7'7''7{yf WXoF:؏XdUB%(Y$e?n"%SaM3a5()4!:2KUJLJM"KN%Zh':$4%DVll^ (0jyǫdSZ b&T%  8RۑTVZUyk"44"4! ""   "!@ T 4$/9/+9/9/993/993/99?<2/93/993/993/9910+++!5!&'&'&#"676323'7'7''7y%fFWHQS34/DhfEy+TN}Mb@()qzJUel/ *""sVj[Z4bZHnF)"+0s~9=XpTNT&m,!Z%E*ֳ4!4/4,40 4.@ 4;k= 4 44(4(ܳ 4(@ 4A(#A "  78@ (_((( ##8@AA 8G   4 */2/+9/9/9/]99?<TNѫF;@()XG=5!I/-=-{RZ,Q1 3ow%9=XpTNT&m,!)1YC.&Z4bZHnF:#0CA8<%Z9&3T)i? 1dk%m@4 4;k 44ܳ 4@ 4   @@o/_  */3/9/]]]99?TN}Mb@()qzJ%j[Z4bZHnF)"+0s~%d6ܹ/ֳ 4& 4441 45 43@ 4T+T2D+D2; k $ 4 4-4-ܳ 4-@ 4-"-(A ' "@ ---((8*/9/9/9/]99?<TN}Mb@()XG=5!e9&3T)i? 1dk)1YC.&Z4bZHnF)"+0CA8<%Z%,7@04/ 46 4@4 4;k 4*43 2 -... 4ܳ 4@ 4, A   %$ ,@ . 22@( A 9% $ 4$$( */2/+3/9/993/<?TN}Mb@()qzJUel/ *""sVJظ] j[Z4bZHnF)"+0s~9=XpTNT&m,!OYN?j$~FOZ%EP3@I4H 4O 4*ֳ4!4/4,40 4.@ 4;k= 4 44L#K"FGGG"(4(ܳ 4(@ 4A(#A "  78@ G#KK@ (_((( ##8@AA 8R   4 */2/+9/9/9/]993/<?<TNѫF;@()XG=5!I/-=-{RZ,Q1 3owظ] %9=XpTNT&m,!)1YC.&Z4bZHnF:#0CA8<%Z9&3T)i? 1dk˩OYN?j$~FO%m(@! 4' 4@4 4;k 4$#4ܳ 4@ 4  @ ##  @@o/_  **/3/9/]]]993/<?TN}Mb@()qzJaظ] %j[Z4bZHnF)"+0s~/OYN?j$~FO%d6A:A@4? 49 4@ 4/ֳ 4& 4441 45 43@# 4T+T2D+D2; k $ 4 4=(<'788'-4-ܳ 4-@ 4-"-(A ' @ 8(<<""@ ---((C*/9/9/9/]993/<?<TN}Mb@()XG=5!:ظ] e9&3T)i? 1dk)1YC.&Z4bZHnF)"+0CA8<%COYN?j$~FO2;&@4)44*4 4!' A 9' 4 03 @ ,$,@=! 4 $ 9/2/+3/3/99/??+??9910+++&&#"332!"'&54767673276654&##"&54767632 #a2W`X+5PHE`^f".<*?Cx+B71Cs}TePj6 @ 455@ 4,," 45& / @8  4 9/2/+9/9/??+9/9/+3/910+#"32!"'&54767327654&#&&#"&54767633])0Q0{@b(&%9zՏm#s?6I?3:??4HH44:C%%:,@ TKQKKQ @ QQ(?>743!HGG?/344?>4> 4>$/++3/23/2993/2/3/2/999?9/3/2/9/99993/+3/9/3/+99910"'&'#"&'6767&'&54632#"&'#"&547677327677327657'4&#"66#'#9<8L0: G-/   3! #**+   &Q#1  1& "!+U)# K06 " 82$$ #8K2 2)-1( F)1@&'"''"@ @4 @ 4 0*,,0.@**.@%(4.'&&4 4$/++3/23/299/+3/?3/3/++9/3/2/9/999910#"&'#"&5476773276773276574763 #**+  &3Z,S}K/5 " 82# $ !7J1 2),1/-$P+(#!!%!! @ !!%!! @ ///10#!$HbGQ$///105!#QHG !@   /<//<10###!!!HrG !@   ///10!!5!###rHGS@ ////<]10###!H @@  @4   /9=/<<//<+9=/<<<10#'77'$Hb ׶yyx #@    ///103#5!3###HGG)@     ///103#5!#3###HGGG !@   ///<10!!!##HFHS///<10#!$H,l@ /9=///<10##$HSW$'@ /<<//9/9/10##$HHH'88W' @   ///1053#5!#3WGBGGGW'///10#Hnw W$'@ ///10]#'$H'0W'///103!$'wGJ!'@/) !)i.@%) .0@>")> > i@)!?O>>>8H(y+?N]M]<]<M]<]<9999999910]'76327'#"''7&5432654&#"ՋsjitGGtijsGkklkwHHwn}~nwIIwn~}}llk #.48DHLRY`h@wz&S%c%#%3%C%Y=i=)=9=I=YAiA)A9AIAV;f;&;6;F;VCfC&C6CFCfhbdV`f`Y[i[**c*****u***3*C*S*cBB(-Wo]?]O]_]]]'VP(/(?(O((/ OGG23/3g<^P''O'_'' '0'@''R F"OM7K R6JMap999@9P9`999'W0^^'''_'o'@f''''$U-e-%-5-E--S++_oZP$$o!6 5## ! #j0eeo??????O??IJN/MMN1EQ2FN/]/]qr]q]]]q3]]]qr]]]/<<<<]]q]/<<<<]]q9/qq910]]q]]qq]]]]]]]]]]]]]]q]]#5#5!!5!#3#"'73253!5!!5353!#32##!!5!#"&54632#3!5!!334##324##32%#"32dCC?ddV4I(_tC~dYwdC~CddCdYeo|~ddd~C-Od?d ĺ[6.C?d{C~ddCcm !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ S0HH 44 4 /3/</3?310+++&'&'&4767670,h3g9JJ:f5d.l8<"8-}N౞Sy*K]SHW|@!!%!! @ % /|O@#%-.)$%!%%...@ 4!)!@c~9W=@C~~IIPPwccWCk55W==C%$ .--%$@%%c9Zg_@ccwPgg0TFI~}@TLPPT4T@ 4TTF5n0s ww00F/3/3/999/++3/99/9/9/993/2/23/293/2/?<<9/2/<9/9/9/9993/9/3/+2/]9/99993/3/9910&'&'632#"&'#"&5467732677327677"'&'#"&'#"&5467&&547673267&'&547673267&'&54767'3263 6 %%5)%  !** / & " wL=.(80?A{(p5p   C9.3'; $ 'B#:$X.4#72<Q=5-*$9 *jHk 6-- 0#U(()&%2&#;DL<;M!TL4"*"&RR{j70< '#*"%3wrI&.-'* )"+%"To #8 !y3 +@@?4  ?4 @ @ 4'$' @  $''/9/39/2/33//3/??93/+3/9/+99/+910#"'&#"'67632327'6654'&'667)02-c   & d2!54F2!31v ! $  PK(W L hu{,f-rt"%-@+-@?4--'+#"?4""'+@ 4   @--""## @ 4 /2/9/2/+3/33//3/??3/+3/9/+99/+910#"'&&'.'&'733#"'&#"'67632327D)$%  '{' "!b)02-c   & d2!54%70q{'0$xh|2* ! $  V n 44 4%$-0@ *4004$@  -00(%$$ (;/9/39/9/2/3/9/99??2/3+/9993}/+910++47&'&547632&#"326'6654'&'667n*d5;- $+]!2!31f @.#8> 4PK(W L hu{,f-rtV% 6 4,-@ *4--46!@  @ -,@ 4,,--&11 8;2/9/2/+9/2/3/9/99??2/3+/9993}/+10+47&'&547632&#"326#"'&&'.'&'733n*d5;- $+]!̌D)$%  '{' "!f @.#8> 470q{'0$xh|2*xcq *J͹-@ 4@ 4@ 4@ 4@+B2H0:@BBH@4HH0@ 400  %%!  @ @2==E++E006EE(( !L 4 ;/+39/2/2/3/9/99?2/?2/93/+3/+3/99910++++#"'&'&'73276767"'&547632&'&#"47&'&547632&#"326zBF3RAA8{1zmUU+OCL08VW&?')XM*d5;- $+]!a # >1]/j+1pgXfeO`% %13 @.#8> 4xcq-@R4@ 4@ @44  4%$-0 /$$@  (-00(%$$ (;/9/39/3/3/2/9/99?]?93/+]+3/+3/99910+47&'&547632&#"326'6654'&'667E*d5;- $+]!+2!317 @.#8> 4gPK(W L hu{,f-rtY@6@ 4,.4&@ ..4@444 4   @ ,))11"@1@ 41@ 411 @ 4 8;2/9/2/+2/++2/3/9/99??3/+]3/+3/99910+#"'&&'.'&'73347&'&547632&#"326D)$%  '{' "!*d5;- $+]!%70q{'0$xh|2* @.#8> 42q;[> 4&@4)44*4 4Q1Cs}TePk @.#8> 4j6V9 4 @ 4L7N>TIIQ77Q< 4%:Y ,@ 44 4" $*@ $$*@4**@ "' '''.;/2/9/9/2/3/9/99??3/3/+3/99910++!5!4'&'747&'&547632&#"326:KNHl*d5;- $+]!%v>+Q[3M @.#8> 4%:Y R3   /9/39/??910'6654'&'667R2!31$PK(W L hu{,f-rtY%<   @ @ 4 2/9/2/+??10#"'&&'.'&'733D)$%  '{' "!%70q{'0$xh|2* @ 44 4   A  A @"  4 */2/+2/9/9/99???93/9910++!"'&547673!54&'7'7Fr*9|oO6AM, DNJ%CT]a#b..G8vA:p27pT: ]4 4  */2/9/9/99??3/9910+!5!4'&'7'7:KNHfNJ%v>+Q[3MT: , '@ 4%% @ "")"(/3/9/9993/993/99?2/99+3/]993/9910'7'7#"'&54767'74'&'326NKALJ.GI07# !=#xWn/6- 908ːVTGn!=F\NO_T&?1 '#39?=%F%&/ @@ 4'+( . ((.ﵐ& @ @+#('  +1+/9/]999/993/99?2/]2/2/9993/+993/9910]'7'7#"'&'#"&5467&&5476733'32INKALJH7)\3s  !Wd"81<АVT[{\8>VND"*"$>t>DhmC7 %$@ 44 4@ @ 4 A    A @&  4 */2/+2/9/9/993/99???93/+993/9910++'7'7!"'&547673!54&'7%NKALJ`Fr*9|oO6AM, DVTzCT]a#b..G8vA:p27p%%:V{4 4     */2/9/9/993/99??3/]993/9910+'7'7!5!4'&'7NKALJKNHVT*v>+Q[3M%:V% (@ 444@ 4"4 4  @ @ 4 $A #$  $$##A @ *  4*/2/+2/9/9/993/993/99???93/+993/993/9910+++++'7'7'7!"'&547673!54&'7`MJhNKALJ`Fr*9|oO6AM, DcVVTzCT]a#b..G8vA:p27p%%:  @ 44@ 44 4         */2/9/9/993/993/99??3/]993/993/9910++++'7'7'7!5!4'&'74MJhNKALJKNHVVT*v>+Q[3M%: 6N u0@- 4* 4y. 4@ 4 #"$@"$##2 +*/3/3/33/999]9/99?9/99?999/+9910+]++'7"&#"676323263!3#"'&'&547676UM}L@P4Z(#KB_Ep%Ӕ{F:؏XdOB@ 4 * 4y 4A?@B@ 4BB84=)%03"4-%%34=@BA??83@99""3433D))*/3/3/33/999]9/999/99??9/99?99999/+9910+]++#"&54767!3#"'&'&5476767&&#"67632326733'7{yf WXoF:؏XdUB%(Y$e?n"%SaM3a5()4!:2KDMM%Zh':$4%DVll^ (0jyǫdSZ b&T%  8RUyk\  @ T 4/9/+9/9/99?<2/93/9910!5!&'&'&#"676323'7y%fFWHQS34/DhfEy+<KN%O,7J-Ad2m yTyk6N u,u@) 4* 4y* 4  @ .'*/3/3/33/999]?9/99?9910+]++"&#"676323263!3#"'&'&547676L@P4Z(#KB_Ep%Ӕ{F:؏XdO@ 4 * 4y@ 484=)%03"4-%%34=83@99""3433@))*/3/3/33/999]9/99??9/99?999910+]++#"&54767!3#"'&'&5476767&&#"67632326733{yf WXoF:؏XdUB%(Y$e?n"%SaM3a5()4!:2K%Zh':$4%DVll^ (0jyǫdSZ b&T%  8R%yk<  @ T 4/9/+9/?<2/910!5!&'&'&#"676323y%fFWHQS34/DhfEy+<%O,7J-Ad2m %yk6N 0@- 4* 4y. 4 #"$@"$##2 +*/3/3/33/999]9/99?9/99?993/9910+]++'7"&#"676323263!3#"'&'&547676MKL@P4Z(#KB_Ep%Ӕ{F:؏XdOH:%B-&>%)m-U%j%mf @     */39/9/9/99?2/9/3/9910]'7!"&546733!4'&'7NI@9[  *2>H:VB-&>%)m-U%F/pr@ * 4* 4 4 4@ 44 4  :  /32/9/??910++++++#"'&'&'73276654'&'7/^RztKEP=UHGB:~.%C9R',%nvhKH ( RK\OWFJLLVjF/pF/"@ * 4* 4 4 4@ 44 4 : $/32/9/3/99??93/9910++++++'7#"'&'&'73276654'&'7MK9^RztKEP=UHGB:~.%C9R',ȑTnvhKH ( RK\OWFJLLVjF/lWF@ 4@4! 4&4 4AAB:45,BB(55'( :, A145@ 455A ((''''#, @ 4 ABB?AAA=A @H  4*/]2/+2/]9/9/+<2/]9/9/+99??<?9?9/9/99/10++++#"&'###"'&546767327654'&'7327654&'732654'&'7O<[/*!/Z{,9ujt*$6(F-%5S2{_(#(%)K&C/ %!$& \WqBSFMVY6pE|CSdZGAR?Y4;# 7m>-Dq%5l Ro@ 44@ 4L 4*@4- 424 4  @ 4MMNF@A8NN4AA34 %+$F 8+ IM=@A@ 4AAM443333/8@ 4M(NN?MMMIA @ T% $ 4$$(*/]2/+2/]9/9/+<2/]9/9/+999/993/993/99??<?9?9/9/99/3/993/993/9910+++++++'7'7'7#"&'###"'&546767327654'&'7327654&'732654'&'7MJhNKALJO<[/*!/Z{,9ujt*$6(F-%5S2{_(#(%)K&C/ cVVTz!$& \WqBSFMVY6pE|CSdZGAR?Y4;#6'256 466B#&'@ 4''BCCB@ 4BB> I/2/+9/9/+99/+9999/993/993/99?<<?9/9/9/99993/993/993/9910++++'7'7'7#"&'##"'&'##5327654&'73327654&'732654'&'7gMJhNKALJM@\&/#3YA44"20PZQ#:) &.@CK$(*'":!)*A)cVVTz# %  $E:$<\*I%-9:"<^o+&!8> 7m>-Dq%l W1>@44 44 45-- <";2""2A @@  4 */2/+9/3/2/9/9??<?9?9/10+++!!"'&546767327654'&'73276767676324&#"!26 \rjt*$6(F-%5S2wfXaRAJYD?{RHY?aIH`r%hFMVY6pE|CSdZGAR?Y&!Gg4OI17 2&&'l W% >%0[ !))-  -& &2 /9/999?<2/9/9910!"'&'##5327654&'73276767676324&#"!26 N61%2*T\Q#:)#=AXTqzX QBJXE@zQdqpmd%$E;#l 5B̹@44 4 4 4"911!" @& @ ?6""!!&&6A @D  4 */2/+9/3/2/9/99/99??<?9?9/3/9910+++'7!!"'&546767327654'&'73276767676324&#"!26uLJ>\rjt*$6(F-%5S2wfXaRAJYD?{RHY?aIH`rdTlhFMVY6pE|CSdZGAR?Y&!Gg4OI17 2&&'l % )4z@ %  %--1 1 * *6 /9/9999/99?<2/9/993/9910'7!"'&'##5327654&'73276767676324&#"!26LJ N61%2*T\Q#:)#=AXTqzX QBJXE@zQdqpmddTl$E;#9/I  #- 1jC=ibI_NXAE%5,e/k^B_9/I  #- 1jC=ibI_NXAEȑT5,e/k^B_E&#8gM3I;P-8xYsωu]^-d" #i(`*/K1"C8\j/2DAQK]G % n4/  @4 4  /3/3/33/9+99?9/]?]9/910+##53&&54632&&#"66 Es$ś{P"QEn;cN]7K/w8v<b=21y//%mX(j@ $(4(  @$$$P  * /3/2/]9/9/9?<2/+9/9/99910#"'&'##532767'&#"#54763233mACP$CViZZTHRO* (:5qG]%H[%%BE&#8gM3I;P-8xȑTѠYsωu]^-d" #i(`*/K1"C8\j/2DAQK]G % !4@ /   @ 4 4 # /3/3/33/9+999/99?9/]?]9/93/]9910+'7##53&&54632&&#"66eKLFEs$ś{P"QEn;cNȑT@7K/w8v<b=21y//%m,@ ( ,  4 ,@$ (((P$$$$./3/2/]9/9/99/99?<2/+9/9/9993/9910'7#"'&'##532767'&#"#54763233LKACP$CViZZTHRO* (:5qG]%H[ȑT%BFUc,%h/"!)XHNYwQ(W[%~ *0G]jwubW/8)%1m%s%j%t@  # # @  4  !! '/9/99+9/99?2/2/993/9910'7!5!4'#"'&547632&'&#"326MJ)4.#I.528ZzB7*&#X4yVVYN %*Oht$%2-P%`!j@  4    #/9/99/99?2/93/2/9910+]'7!5!267&'&547632'&'&#" XSW>W33s7>Yf5*Z):(OK`~ 2xi]igP'K,L gw5BѳT  4@ 4!@ 41::)@@ @ 6 4&6#-==#A @D  4*/]2/+9/99+9/993/99??99/3/2/993/9910+++]'7'7!"'&54767327654&'#"'&547632'&'&#"326xNKALJz&#A* nfՠ &M'X7C:AYuD: *0-:%-"VTh]PWvxxF6J5C?>9FQ3-(0aqgt>).#$gw%j)@@ 4" '""'  @  4   %%  + /9/99+9/993/99?2/2/993/+993/9910'7'7!5!4'#"'&547632&'&#"326JNKALJ4.#I.528ZzB7*&#X4VTYN %*Oht$%2-P%`%@  4  " ""  ' /9/99/993/99?2/93/2/993/9910+]'7'7!5!267&'&547632'&'&#"5U}ViO{SW>W33s7>Yf5*Z):(ORQ 2xi]igP'K,L s%3(I.84 @ /H# /&&&H@ @ 4 2:=>353%'IB@&>2SSQ!@ ('K-J.&D!OiN%mI#v@  4 4! 4   #    4 % /9/+99/9?<9/2/10+++#"'&'##5327676767'&'&'mhCTaJ:yt[G7-=YPCE)7s &0!$:%#=G7.$AXA:iTrG:8/2 !2'>%mIl{v$ 4@4 4 4 A ! @ 4!! A @&  4 */2/+2/9/9/+99??9?3/9910++++'7!"'&546767327654'&'7KHjt*$6(F-0S5($ViqFMVY6pE|CSfXN:Ql{v%:[ 4 4   */2/9/9/99??3/9910+'7!5!4'&'7LJKNH‘Tv>+Q[3M%:6 q=%F'n@ # & &@  #)# /9/]99?2/2/2/99910]#"'&'#"&5467&&5476733'32FH7)\3s  !Wd"81<%{\8>VND"*"$>t>DhmC7 Zp(5C@: 4:-=2-#4##--2 A @=:2)# 40##)00 )@ :@ 4:: 6E /3/9/+9/9/9+99999??9/2/3/+9/999+10#"'&'##53267&'&54677667&54767%4'&#"6764'&'326Z$'')pgGt5C[ZZ)LA c!E,@a{G^..Pz+8#3)%<=2 :GM40.B #/S7=ts+=+)C#J/51Umo)4&"."" 22@ *. &. &. * **6/9/9/9/3/999?<3/3/9910!#"'&57#536767632!%4#"6764'&'326m@-9@xdx#*5:C;/.(+<5[>H(t_\5@#%7EQN/;SdH]Pe@Jl=X7!C_^-i&,OI<nGVxc *u@ 4@ 4@ 4  %%!  (( !, 4 /+39/?2/?2/910+++#"'&'&'73276767"'&547632&'&#"zBF3RAA8{1zmUU+OCL08VW&?')Xa # >1]/j+1pgXfeO`% %13xc25j62V;?Cչ&@4)44*4 4<>?==@BCA!' A 9' 4 0=?<>>ACB@@$3 @ ,$,@E! 4 $ 9/2/+3/3/99/9/993/99??+??99?993/9910+++&&#"332!"'&54767673276654&##"&54767632'7'7 #a2W`X+5PHE`^f".<*?Cx+B71Cs}TePߐVTjN6:>33 @ 4:44 4,./4,,"@ >79::88;=>>< 4<58:799<>=0;;;/& / @@  4 9/2/+9/9/9/]993/99?2/9?+]993/]993/]9/+9/+10]+++q#"32!"'&54767327654&#&&#"&54767633'7'7])0Q0{@b(&%9zՏm#s?6I+Q[3MDVTr:@DNe0@TVJOce@?4ee_c[WZ?4ZZS_WWc@'SS.<;K.7 4H7#K##@ 4##.KK?.@K@eeOZOZ[[#*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 g@**/]3/++9/9/+2/3/93/3/9999993/33//3/???9/9/+]99+99993/3/9/+99/+910]'#656767&'&'&'&#"#"'&'&&5476326765'4674&'276#"'&#"'676323270;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2U)02-c   & d2!54F[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$  ! $  @ >UH44ֳ4)ֳ 4(@ 4[+"@% 4+* 4*J 4)T 4(@ 4?SU@?4UUOSKGJ?4JJCOGGS@CC @ 4  0@ 4>03'&&>@ UU?J??JKK  4@ 4 7- 0033-77W&&/3/2/3/]99/+]+3992/33//3/?3/??9/+9/9/+92/3/9/+99/+910+++++]+++++&'&#"#"'&'&5432#"'&54&5!5$767654&'76733#"'&#"'67632327'8nzF:I,;)HtT3=`KY n!$)02-c   & d2!540}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$ ! $  & DNn@Q@, 4TVJ<;K.7 4H7#K##@ 4##.K?K. 4..T?OdfVlTT4Tllf^@ 4^K@ dVaaiOOiTTZ@@ii#*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 p@**;/]3/++9/9/+2/3/93/3/9999993/2/3/9/99??+2/3+/999?3/+9/9/+]99+999910]+'#656767&'&'&'&#"#"'&'&&5476326765'4674&'27647&'&547632&#"3260;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2U4*d5;- $+]!F[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$  @.#8> 40  >^RA 4)ֳ 4(@ 4[+"@/ 4+* 4*J 4)T 4(@ 4  @ 4 @ 4> >03'&&>4@ 4DT?VF\DD4D\\VN@ 4N@ TFQQY??YDDJYY  4@ 4 7- 0033-77`&&;/3/2/3/]99/+]+3992/2/3/9/99?+2/3+/9993/++?3/?9/9/+9/+]910+++++]]+++&'&#"#"'&'&5432#"'&54&5!5$767654&'7673347&'&547632&#"326'8nzF:I,;)HtT3=`KY n!$=*d5;- $+]!0}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$ @.#8> 4SDNn@Q@ 4TVJdOfVlT^@ffl@4ll@TTT@* 4TT<;K.7 4H7#K##@ 4##.KK?.K@ dVaaiOOiTTZ@@ii#*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 p@**;/]3/++9/9/+2/3/93/3/9999993/2/3/9/99???9/9/+]99+99993/+]3/+3/99910]+'#656767&'&'&'&#"#"'&'&&5476326765'4674&'27647&'&547632&#"3260;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2U*d5;- $+]!F[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$ P @.#8> 4A >^_A 444ֳ4)ֳ 4(@ 4[+"@ 4+* 4*J 4)T 4(@ 4T?VF\DN@ VV\@4\\D4D@ 4DD& @ 4  0@ 4>03'&&>@ TFQQY??YDDJYY-&  4@ 4 7- 0033-77`&&;/3/2/3/]99/+]+3999/2/3/9/99?3/??9/+9/9/+93/++3/+3/99910+++++]++++++&'&#"#"'&'&5432#"'&54&5!5$767654&'7673347&'&547632&#"326'8nzF:I,;)HtT3=`KY n!$*d5;- $+]!0}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$ @.#8> 4SDN@)TVJ<;K.7 4H7#K##@ 4##.KK?.@K@ #*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 P@**/]3/++9/9/+2/3/93/3/999999???9/9/+]99+999910]'#656767&'&'&'&#"#"'&'&&5476326765'4674&'2760;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2UF[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$ A >44ֳ4)ֳ 4(@ 4[+"@- 4+* 4*J 4)T 4(@ 4 @ 4  0@ 4>03'&&>  4@ 4 7- 0033-77@&&/3/2/3/]99/+]+399?3/??9/+9/9/+910+++++]+++++&'&#"#"'&'&5432#"'&54&5!5$767654&'76733'8nzF:I,;)HtT3=`KY n!$0}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$!!%!! @ !!%!! @ Fb1F=!!%!! @ !!%!! @ !!%!! @ FQ F!!%!! @ !!%!! @ HFZ!!%!! @ !!%!! @ !!%!! @ FIFWFKF=H@.J0wG!!%!! @ FF[!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ >@ 4 /3/9/?2/+?10#4'&'&54632#"&54632+9 %F79IH42HH42HCv~:~-=]\72HH23JJ"  /?10#"&54632O76LM58N6ON76ONW *  /3/?2/10#"&54632#"&54632N85LJ78NO75LK68N8NN87NN6ON76ON!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ %F/?10!5!FF%%F/?10!5!FF%%:/?10!5!::%c, 4'@4' 4 4 4 4@F 4(  % (,,&U# U U U U8U&U U޴ U U U UҴU@ 4&! U !!c-]+/]++++++++3/++++++9/99???9/910+++++++3276'&#"%53#"$576!2676'+u߃&4Ŀ;_I[%rIѥ|B[Lly[h18-VD@,@Y' 4 4 4@4 4)  % (,,& U0U U$@U U UUӴUִ U@0 U $@$%4! U! U! U! U!U!@U! U! U! U!?!!1-]++++++++++/]+++++++3/+++9/99???9/910++++]327654'&#"%53#"'&763266'YTSYZTSYB&1v䅉ۋiD;lffmʿkfelѥ|BVHA'vm*ZU%%4 4 @ 4&!@6 %% U& UD U U UDUDU& U@ U U@ U U UӴU@U& UU U U U UUU4]&+++++++++/++++++++<3/+++++++9/????9/910]++53# &53327636765$c24gs8$"}V[œFѥ> ~PRO]YcafNl*v&$ 4@S4 4    $$& U U- U U U 3%,UU@ U U@ U U U޷U%U@U U U U UU@364 N%]q++++++++/++++++++<3/+++++9//????9/9910+++53#5#"&&'&533266536765\$\|]P #S:?Uѥ>GnO6r/T9a*vE+, 4S@`/]}?10+#'3/+, 4S@`/]}?10+#'3 #S 4@ 4//@ 4S@`p/]]/+]qr+10+#3 T+A44 4SO`/]+}?10++3#+@+84 4SO`/]+}?10+3#^+s #T4@ 4//@ 4SO`/]/+]qr+10+]3##),@ 4 @4 4%4@ 794@SZ4 @   W@ 4p/]+3/93/}?}++++]qr+9910+7676'&#"'6#55*[? 'i{NVp^ ^'*Ce2p m,@* 4 @@|4@RU4@KL4@<>4@&64 @4  /3/93/+}?q+++++9/99CTX@ 4+Y10+7676'&#"'6#51'T< $b]  AZ?7,@ 4 @4 4%4@ 794@SZ4 @   W@ 4p/]+3/93/}?}++++]qr+9910+7676'&#"'6#55*[? 'i{NVp^ ^'*K]2pgm,@* 4 @@|4@RU4@KL4@<>4@&64 @4  /3/93/+}?q+++++9/99CTX@ 4+Y10+7676'&#"'6#51'T< $b]  AZ?7I;0_ 4 @7 4 4  EE   @ 4?  v v@o/]3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_|+ٳK @ 4 4@@ @^5 @OS4 @CE4 @+-4o    @a  / O _  _ o   @5 @jl4 @a5 @\]4 @WY4 @MQ4 @DI4 @:5 @144 @.B4 @',4 @%4 4  /3/}/+++++++++++++]qr3/]q++++3/10++]&6323273#"'&#"q[>k;D= a?gCCN|R[,F,Lr s 4 @ 4 4  E@4!&4E / ? /  @ 4 @6>4?  v v@o/]3//]++qr3/]9/+]2/10+++&6323273#"'&#"sq[>k;#= ?gCN f~6W8$_f= 44 @#(4 /3/?q+10++&'3327673#"'&N;@AC@;OIMp#v#%H$&9O9@4 4/++9?r910#73#ЯC{{(@k;#= ?gCNIf~6W8$_I0k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_IM0k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_ri@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#"s:9Y>k;# "mT?gC"h>>6#4rr8$/Hi@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#":9Y>k;# "mT?gC"h>>6#4rr8$/ji@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#"k:9Y>k;# "mT?gC"h>>6#4rr8$/}}J}{}}e} b#S 4@ 4//@ 4S@`p/]]/+]qr+10+#3  #T4@ 4//@ 4SO`/]/+]qr+10+]3##`i@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#":9Y>k;# "mT?gC"h>>6#4rr8$/}_,}]vC}t}}l9}jX%}V]}},}*|+nK @ 4 4@@ @^5 @OS4 @CE4 @+-4o       /3/}?3/]q++++3/10++]46323273#"'&#"p[>k;D= a?gC@Q|R[,F,LI0k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_|4+nK @ 4 4@@ @^5 @OS4 @CE4 @+-4o       /3/}?3/]q++++3/10++]&6323273#"'&#"q[>k;D= a?gCCN|R[,F,LI40k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_<&@@Op  % U U U@ U U U@ U /]+++++++??10]rq33&Y&$}4 5<44A+++5J>&D}@ 99:/7A+]5Y,&$t@ ##"A+]5J &D4:LUL@ULpLLPL`LLLLLLʱH++]qr++5Y+&$'|q0@*4H+A@(4/+5+5++]q5J#&D'KZ_BB@=4B;H+: :0:p::::::::@.24:=A>/>>_>>@ 4>/+]qr5++]qr5++]5Y+&$'|n'@H+A@(4/+5+5+]q5J#&D'-Y@E?@&34?@4?<H+: :0:p::::::::@.24:=A>/>>_>>@ 4>/+]qr5++]qr5+++5Y,&$'|u1)@4)))(AA@(4/+5+5+]q+5J,&D'tHb@ SOSSS@>4SR;/>>_>>@ 4>/+]qr5++]qr5++]q5Y+&$'|<0@"@ 4@4 AA@(4/+5+5+]++5J&D'ztT@A?O??I:=A: :0:p::::::::@.24:=A>/>>_>>@ 4>/+]qr5++]qr5+]5Yh&$'|}455<44@AA@ (4/+5+5+++5J&D'}C@0@@A/7A: :0:p::::::::@.24:=A>")+++]qr5+]5Y+&$'{q4#AB4#@95##H+A @-4 /+5+5+q++5J#&D'H7@ `HpHH[HH@4HCH+<<h+<")++]5++]q5Y+&$'{n\ @-4 /+5CTX@T##AA+5+5@#@894#@)14#@ 4@#o####@ H+A+5+q+++5YJ#&D'\*IPIIC@H+<<h+<")++]5+]5Y,&$'{u;@ 6666*246@!(465AA @-4 /+5+5+++r5J,&D't\B@0PZ`ZZZZZ0ZpZZZZZZZYA<<h+<")++]5+]qr5Y+&$'{P,@###/##-AA @-4 /+5+5+]q5J&D'z+F@ 4FP?9A<<h+<")++]5++5Yf&$'{}45$5<4$4@$%AA @ -4 /+5+5+++5J&D'}&@GGH/7A<<h+<")++]5+]5&(}\@    A+]5K>&H}P`ش A+]5,&(t A+5K &H*@2222221 A+]q5&(|j@  A !)++5K&H@ * A)++5+&('|q0@*4H+A@(4/+5+5++]q5K#&H'LK_((@/4(!H+ @;5 @-24  # A /  _  @ 4 /+]qr5+r++5++]5+&('|n4@%@:5H+A@(4/+5+5+]qr+5K#&H'.Q@=%@U%@&34%@4%"H+ @;5 @-24  # A /  _  @ 4 /+]qr5+r++5++++5,&('|u1&@ 4&&&%AA@(4/+5+5+]q+5K,&H'tHQ@ O9999@0498!"A @;5 @-24  # A /  _  @ 4 /+]qr5+r++5++]5+&('|P$@AA@(4/+5+5+q5K&H'ztE@3%O%%/ #A @;5 @-24  # A /  _  @ 4 /+]qr5+r++5+]5h&('|}\$@  AA@ (4/+5+5+]5K&H'}9P&`&@&'A @;5 @-24  # A$")++r++5+]5c,&,t:@ UA++5 &CTXA+O"H++qY5&,} A+5|I&L}z@ @mo4O  A+q+5c&2}  A+5D'>&R}  A+5c,&2t8@p00000/A+]q5D' &R*@....-A+]q5c+&2'|qn0&&&@*4&H+!A@(4/+5+5++]q5D'#&R'MD_$$@)4$H+@.24A/_@ 4/+]qr5+r+5++]5c+&2'|n@4@%#@:5###### H+!A@(4/+5+5+]qr+5D'#&R'/C@1!@&34!@4!H+@.24A/_@ 4/+]qr5+r+5+++5c,&2'|u`16@ 46665!A!A@(4/+5+5+]q+5D',&R'tHL@ O55555@*454A@.24A/_@ 4/+]qr5+r+5++]5c+&2'| @#-!A!A@(4/+5+5+5D'&R'zt>@-!O!!+A@.24A/_@ 4/+]qr5+r+5+]5ch&2'|} @$% A!A@ (4/+5+5+5D'&R'})@"# A@.24A ")++r+5+5c,&jj@0o000%H+-!)++]q5D&k!@0O0_000%1H+-")++]q5c,&jCj @ ...%H+-!)++]q5D&kC!@_.o. .0..%H+-")++]q5cE&jt8@PAAAAAA@%%A+]q5D &k*@AAAAA@%%A+]q5c&jQ@ -9%%A-!)++5D&k@ -9%%A-")++5c&j}@ ../A+q5D@&k} ./A+5"&8}p@ OA+q5&&X}@P`p A+]5",&8t@ % A+]5 &X2@P------P-`-p-----@ 4-, A++]q5,&lj)'@95p'/'_'''H+&!)++]r+5&m@O(((E4@.34@$)4/@4@4@ 4/+]+]+q+++++]<++</<<10!5!#53#53u4 4@% 4@ 4?@ 4 @#%4@4 @9 4@4@Os4@>E4@.:4@$%4/@4@4@ 4/+]+]+q+r+++++<++</+]+++9910#7#53#53炇燇44  0444@#%4@ 4 @144 d4 @#%4@ 4@4@ 4? @ 4 @#%4@4@+,4 @: 4@4@Os4@>E4@.:4@$%4/@4@4@ 4/+]+]+q+r++++<+9+<++</+]++++++++99++910#53'#'37#53QȮؓɱbb4 @ @ 4 @ 4@ 4? @#%4@4 @9 4@4@Os4@>E4@.:4@$%4/@4@4@ 4/+]+]+q+r+++++<++</]+++9910#53'#'3#53`ؓU Z@  UU U@ U]  ??9/++++9/10!!!##53!Uo¤ e & b@ % U@U U UN +@ U+  ??9/+++++9/10!3###53!Q||ci[F@_817$G$E )9$&& ) )   EDEEDBDE1// ?=??=?=+6 E+ U U U @3U &/1$,76*?= *DF,B) *EF ??9/99999999/++++99+}99+}99+}99+}10]]]]]##&'&##"7#67&'&'&&56323276767632"&#"3[E].Z|`IBj .d:$6?\WN e])>M$DǖF%L>']_ 3 g9 36#:dki.ZR2-n')T3R<(M~O*;G&3S+'P&B1@;#h$&& U& U&%) U%)  0//@U/%;9;;9;9,5%BA@ U%A?A??>,A, % U @ U  U @; U U 9;5+0$&/,4*+*?A,>)+ * BA+ ??9/999999/+++++99++}99++}99++}99+++}10]]##&'&##"#67&'&'&&#"532332767633'&3P"0"5IJ4 1ovZ-808 (j)9.)91cd0q%:vB1L '%&NuomI-IQ 10SI)L3 K bB5A'=)c_$2$i'@%@/ U U &$&&$g$&$#'  7   '@ U')  U U U U U U @#U ](   $&#  & ??9/9999999++++++++99]+}9]+++}10]]]]##&'&##3276767632"&#"3E\,ZwF%J>']p 4 g9 37"9eki.\R~R+;G'1S)'v&&@ U%%#%%#F#"#%&@U% %&@ U &&( % U @U  U  U U U U @. U U  N'+  #%" + %+ ??9/9999999]+++++++++]+99++}9]++}10##&'&##327676767633'&3v/#5Id0:(,:+_$2K '%&Muom>-IQ 1&5A` I( d^%2$+$&&$&@8 U& IYi$$* U **) U@U U - U U U U U U @1U  ],&$ ! *)       ??99//99/999999]+++++++]9/+++29++}99]]++}]10!#&'#&##3273676767632"&#":/x3EG1x&/76NHYp 4 g9 37"9e_<R~An*X,(G'1S)'&(4i#!#@J U#%!!!!!'U%''& U * % U @U  U  U U U @; U U 0  N)#! + '&  +     ??99//99/999999]++++++++rr9/+29++}99]]r++}ıCTX@ -"=2]Y10]!#&'#&##3273676767633'&c#+-!c(,:+_$2K ')")6jpI7&5 D+9` I( dh(0i@   U UU@ U U@ U U   UU U U U@U]  ??9/+++++++++++++10##!#3!33†iMZW&@, %%@ U U U U U UU@ UU@ U U" UߴU U@ U %UU@U U U@ U U N + +??9/]++++++++++++++++++++++10##!#3!33W t-)&Fnm U @: U U    U U o UU@ U U U@U  &6??9/]9/++++++]+++}ć+}+++10#367m$ "09rHUE9ji& ֹ @ U U U @=U U  U %  U U%%UU@U U U U@U  $4Dt /?]?9/+++++++݇+++}ć++}+++++10#367nm.1&i&wmgmѹ U@HU U U    U  U    UU@ U UU@ U   ??9/9/++++++39Ƈ+++}9+++}9++10!!#!5!367mkUdaUj"099_UE9ji&@& F v &Fv@ U U U@GU U U U%  U U %  % U U @U U U @ U   + /??9/++++++Ƈ+++}ć++}++++++10]]!!#!5!367nBCm.1&ڄ&wmg iI@ UiDtI   U U@ U  UCTX  @ 4 4    ?Vw=I^M&@&F&FX&F @ U( U @( U  U U    @ U %%@ U U U0@ U%_o  U @ U   + /??9/]++333]]++}]]+++++}+++++10]]]]###367733I* #.$g-](@74A bW8@dEU6@ U U@ UUU@ U U@ U U U@ U UU U@- U U  UU U U U@U U U@! U]    ??99//3332229/]+++++++++++++++++++9/++++++10]]]!###"'&'&53733673¢xt,(±y xO< >FyocG>E&@te U U U U@ UU%@U U U U U@ UUU %@UU U@: U U UUUO_+ ??99//333229/]++++++++]]++++++++9/++++++10]]!##5#"'&'&533673ndcY^d$! ?,;cW{" 7;bYkt+T/! )@g[J U U Uд U U UU@U U U U U U U @U ]   ??9/32+++++++++++++++10]]]!#4'&#"#3$328Gċs,'\s[7a>Ezm&@ zh%U@ U UUU U@ U 0 % @ U  U U U @ U  U  N +  ??9/32]++++++]+++++++10]]]!#54'&'&#"#3632A:Zfo\c%!x(S0+6&T46:dYkc!@5 m \  J bUDw9Ivj   &U U U U@& U\#&& c"/   ??99//]3]+++++10]]]]]]]]]]]]]]]! '&5!&'&# '67632!32u u|S8ȟRGL T^~2pkbcU(> @-8HUey\lJ ( 8 l[cU $U U UU@G U"$$ U  U  U ? O  4!+    ??99//]3]]++++++++210]]]]]]]]]]]#"'&547!&'&#"'!2!3276({w LVN]v 8VSO `mWChXT`#@8Y""VuTFVy\IYx Y&@ UU U U U@/ U\%&  U  c$@U@ U   ??9/++]+++++++10]]]]]]]]]]]]]]]]!"'&'&576! &'&#"!3276ڹϧOJMEuאvwۆ~gjTۃxϋD'>!@D\ l ScdU7G[kH9iXf fUZj$#@ U#@ U@U U U U UU@/ U7#$U U U U U U@,UU U?O4"+  ??9/]]++++++++++++++++++10]]]]]]]]]]]]]]#"'&57632&'&#"!3276'u{놀BYYBjITSH"A'vJeeJano`'(  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !.nullnonmarkingreturnmu1pi1OhmEurodmacron overscoremiddotAbreveabreveAogonekaogonekDcarondcaronDslashEogonekeogonekEcaronecaronLacutelacuteLcaronlcaronLdotldotNacutenacuteNcaronncaron Odblacute odblacuteRacuteracuteRcaronrcaronSacutesacuteTcedillatcedillaTcarontcaronUringuring Udblacute udblacuteZacutezacuteZdotzdotGammaThetaPhialphadeltaepsilonsigmatauphi underscoredbl exclamdbl nsuperiorpeseta arrowleftarrowup arrowright arrowdown arrowboth arrowupdn arrowupdnbse orthogonal intersection equivalencehouse revlogicalnot integraltp integralbtSF100000SF110000SF010000SF030000SF020000SF040000SF080000SF090000SF060000SF070000SF050000SF430000SF240000SF510000SF520000SF390000SF220000SF210000SF250000SF500000SF490000SF380000SF280000SF270000SF260000SF360000SF370000SF420000SF190000SF200000SF230000SF470000SF480000SF410000SF450000SF460000SF400000SF540000SF530000SF440000upblockdnblockblocklfblockrtblockltshadeshadedkshade filledbox filledrecttriaguptriagrttriagdntriaglfcircle invbullet invcircle smileface invsmilefacesunfemalemalespadeclubheartdiamond musicalnotemusicalnotedblIJij napostropheminutesecond afii61248 afii61289H22073H18543H18551H18533 openbulletAmacronamacron Ccircumflex ccircumflexCdotcdotEmacronemacronEbreveebreveEdotedot Gcircumflex gcircumflexGdotgdotGcedillagcedilla Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonek Jcircumflex jcircumflexKcedillakcedilla kgreenlandicLcedillalcedillaNcedillancedillaEngengOmacronomacronObreveobreveRcedillarcedilla Scircumflex scircumflexTbartbarUtildeutildeUmacronumacronUbreveubreveUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexlongs Aringacute aringacuteAEacuteaeacute Oslashacute oslashacute anoteleiaWgravewgraveWacutewacute Wdieresis wdieresisYgraveygrave quotereversed radicalex afii08941 estimated oneeighth threeeighths fiveeighths seveneighths commaaccentundercommaaccenttonos dieresistonos Alphatonos EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaDeltaEpsilonZetaEtaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosbetagammazetaetathetaiotakappalambdanuxiomicronrhosigma1upsilonchipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonos afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061 afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109 afii10110 afii10193 afii10050 afii10098 afii00208 afii61352sheva hatafsegol hatafpatah hatafqamatshiriqtseresegolpatahqamatsholamqubutsdageshmetegmaqafrafepaseqshindotsindotsofpasuqalefbetgimeldalethevavzayinhettetyodfinalkafkaflamedfinalmemmemfinalnunnunsamekhayinfinalpepe finaltsaditsadiqofreshshintav doublevavvavyod doubleyodgeresh gershayim newsheqelsign vavshindot finalkafshevafinalkafqamats lamedholamlamedholamdageshaltayin shinshindot shinsindotshindageshshindotshindageshsindot alefpatah alefqamats alefmapiq betdagesh gimeldagesh daletdageshhedagesh vavdagesh zayindagesh tetdagesh yoddageshfinalkafdagesh kafdagesh lameddagesh memdagesh nundagesh samekhdagesh finalpedageshpedagesh tsadidagesh qofdagesh reshdagesh shindageshtavdagesvavholambetrafekafrafeperafe aleflamedzerowidthnonjoinerzerowidthjoinerlefttorightmarkrighttoleftmark afii57388 afii57403 afii57407 afii57409 afii57440 afii57451 afii57452 afii57453 afii57454 afii57455 afii57456 afii57457 afii57458 afii57392 afii57393 afii57394 afii57395 afii57396 afii57397 afii57398 afii57399 afii57400 afii57401 afii57381 afii57461 afii63167 afii57459 afii57543 afii57534 afii57494 afii62843 afii62844 afii62845 afii64240 afii64241 afii63954 afii57382 afii64242 afii62881 afii57504 afii57369 afii57370 afii57371 afii57372 afii57373 afii57374 afii57375 afii57391 afii57471 afii57460 afii52258 afii57506 afii62958 afii62956 afii52957 afii57505 afii62889 afii62887 afii62888 afii57507 afii62961 afii62959 afii62960 afii57508 afii62962 afii57567 afii62964 afii52305 afii52306 afii57509 afii62967 afii62965 afii62966 afii57555 afii52364 afii63753 afii63754 afii63759 afii63763 afii63795 afii62891 afii63808 afii62938 afii63810 afii62942 afii62947 afii63813 afii63823 afii63824 afii63833 afii63844 afii62882 afii62883 afii62884 afii62885 afii62886 afii63846 afii63849uni202Auni202Buni202Duni202Euni202Cuni206Euni206F;uni206Auni206Buni206C;uni206DuniF00AuniF00BuniF00CuniF00DuniF00EuniFFFC afii63904 afii63905 afii63906 afii63908 afii63910 afii63912 afii62927 afii63941 afii62939 afii63943 afii62943 afii62946 afii63946 afii62951 afii63948 afii62953 afii63950 afii63951 afii63952 afii63953 afii63956 afii63958 afii63959 afii63960 afii63961 afii64046 afii64058 afii64059 afii64060 afii64061 afii62945 afii64184 afii52399 afii52400 afii62753 afii57411 afii62754 afii57412 afii62755 afii57413 afii62756 afii57414 afii62759 afii62757 afii62758 afii57415 afii62760 afii57416 afii62763 afii62761 afii62762 afii57417 afii62764 afii57418 afii62767 afii62765 afii62766 afii57419 afii62770 afii62768 afii62769 afii57420 afii62773 afii62771 afii62772 afii57421 afii62776 afii62774 afii62775 afii57422 afii62779 afii62777 afii62778 afii57423 afii62780 afii57424 afii62781 afii57425 afii62782 afii57426 afii62783 afii57427 afii62786 afii62784 afii62785 afii57428 afii62789 afii62787 afii62788 afii57429 afii62792 afii62790 afii62791 afii57430 afii62795 afii62793 afii62794 afii57431 afii62798 afii62796 afii62797 afii57432 afii62801 afii62799 afii62800 afii57433 afii62804 afii62802 afii62803 afii57434 afii62807 afii62805 afii62806 afii57441 afii62810 afii62808 afii62809 afii57442 afii62813 afii62811 afii62812 afii57443 afii62816 afii57410 afii62815 afii57444 afii62819 afii62817 afii62818 afii57445 afii62822 afii62820 afii62821 afii57446 afii62825 afii62823 afii62824 afii57447 afii62828 afii57470 afii62827 afii57448 afii62829 afii57449 afii62830 afii57450 afii62833 afii62831 afii62832 afii62834 afii62835 afii62836 afii62837 afii62838 afii62839 afii62840 afii62841 glyph1021 afii57543-2 afii57454-2 afii57451-2 glyph1025 glyph1026 afii57471-2 afii57458-2 afii57457-2 afii57494-2 afii57459-2 afii57455-2 afii57452-2 glyph1034 glyph1035 glyph1036 afii62884-2 afii62881-2 afii62886-2 afii62883-2 afii62885-2 afii62882-2 afii57504-2 afii57456-2 afii57453-2 glyph1046 glyph1047 afii57543-3 afii57454-3 afii57451-3 glyph1051 glyph1052 afii57471-3 afii57458-3 afii57457-3 afii57494-3 afii57459-3 afii57455-3 afii57452-3 glyph1060 glyph1061 glyph1062 afii62884-3 afii62881-3 afii62886-3 afii62883-3 afii62885-3 afii62882-3 afii57504-3 afii57456-3 afii57453-3 glyph1072 glyph1073 afii57543-4 afii57454-4 afii57451-4 glyph1077 glyph1078 afii57471-4 afii57458-4 afii57457-4 afii57494-4 afii57459-4 afii57455-4 afii57452-4 glyph1086 glyph1087 glyph1088 afii62884-4 afii62881-4 afii62886-4 afii62883-4 afii62885-4 afii62882-4 afii57504-4 afii57456-4 afii57453-4 glyph1098 glyph1099 glyph1100 glyph1101 glyph1102 glyph1103 glyph1104 glyph1105 glyph1106 glyph1107 glyph1108 glyph1109 glyph1110 glyph1111 glyph1112 glyph1113 glyph1114 glyph1115 glyph1116 glyph1117 glyph1118 glyph1119 glyph1120 glyph1121 glyph1122 glyph1123 glyph1124 glyph1125 glyph1126 afii57440-2 afii57440-3 afii57440-4OhornohornUhornuhornf006f007f009combininghookabovef010f013f011f01cf015combiningtildeaccentf02cdongsignonethird twothirdsf008f00ff012f014f016f017f018f019f01af01bf01ef01ff020f021f022combininggraveaccentcombiningacuteaccentf01dcombiningdotbelowf023f029f02af02bf024f025f026f027f028f02df02ef02ff030f031 Adotbelow adotbelow Ahookabove ahookaboveAcircumflexacuteacircumflexacuteAcircumflexgraveacircumflexgraveAcircumflexhookaboveacircumflexhookaboveAcircumflextildeacircumflextildeAcircumflexdotbelowacircumflexdotbelow Abreveacute abreveacute Abrevegrave abrevegraveAbrevehookaboveabrevehookabove Abrevetilde abrevetildeAbrevedotbelowabrevedotbelow Edotbelow edotbelow Ehookabove ehookaboveEtildeetildeEcircumflexacuteecircumflexacuteEcircumflexgraveecircumflexgraveEcircumflexhookaboveecircumflexhookaboveEcircumflextildeecircumflextildeEcircumflexdotbelowecircumflexdotbelow Ihookabove ihookabove Idotbelow idotbelow Odotbelow odotbelow Ohookabove ohookaboveOcircumflexacuteocircumflexacuteOcircumflexgraveocircumflexgraveOcircumflexhookaboveocircumflexhookaboveOcircumflextildeocircumflextildeOcircumflexdotbelowocircumflexdotbelow Ohornacute ohornacute Ohorngrave ohorngraveOhornhookaboveohornhookabove Ohorntilde ohorntilde Ohorndotbelow ohorndotbelow Udotbelow udotbelow Uhookabove uhookabove Uhornacute uhornacute Uhorngrave uhorngraveUhornhookaboveuhornhookabove Uhorntilde uhorntilde Uhorndotbelow uhorndotbelow Ydotbelow ydotbelow Yhookabove yhookaboveYtildeytildeuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni0492uni0493uni0496uni0497uni049auni049buni049cuni049duni04a2uni04a3uni04aeuni04afuni04b0uni04b1uni04b2uni04b3uni04b8uni04b9uni04bauni04bbuni018funi0259uni04e8uni04e9\ N$7<  h$$7h$9h$:$D:A:E-:H:I:K:L`:M:N:Q`:W:Z:l:m:n:w-;:;A;H;K;L;M;N;O;Q;T;W;Y;e;m<:<><@<A<E<H<K<Lw<M<N<O<Q<T<Y<^<f<l<m<o<q<y===w=w==:w=>w=A=E=F=H=K=Y=Z=\=^w=_w=b=e=f=g=hw=j=mw=u=v=x=yw>M>N>Q>aD>h>m-?A?k@A@H@K@L@M-@T-@Z@_@h@mAEAHAKALAMANAQAYDADHDKDMDNENE[EmFNFQFZF_FhFkFmFqFwH:H>H@HEHMHOHQHYH^HeHoJ}J}JJJJ:wJ>wJ@JAJEJFJHJKJLJMJNJOJYJZJ^`J_JhJwJyK:K>KAKEKFKHKLKMKOKQKTKWKZK`-KqLLLLLL:L>L@LALELHLNLYLZL\L_LbLdLeLfLh`LiLjLkLmLoLsLuLvLxLyMMMMMMMM:wM>MAMEMHMNMWMYM[M\M]M^`M_wM`MaMbMcMdMewMfMgMhwMiMjMkwMoMpMrMsMxMywN:N>NENLNMNQNYNeOAOHOKONOWOhOmPHPZ-SZSm-TwTYV`V:V>V@VAVEVFVHVKVL3VOVQ`VWVYW>W@WAWEWOWYW^W`WeWfWyX:X>X@XEXHXKXLXOXQX^XeXfZaZlZmZq[Z[^[_[`[a[e[f[k[m[n[o[q[t[w[y\Z\[\^\_\`\a\e\f\h\k\l\m\n\q\t\y]]]Z]^]_]a]e]h]k]y^t^w_[_^_`_a_e_l_m_o_q`[`m`q`t-a[a^a_aaaeahakamanaqatdZ-d[-d_dadedhdkdldmdweheqf[fafmh^h`hahehlhmhohqj^jajejljmjojqjyk`khkqkwlllZl^l_l`Dlelhlklmm3m3mmZm[m^m_m`memfmhmjmkmnmwmyn[n^nenlnmnqnyoZo[o_oaohokolonoqp_paphpks_shsmvl`vqww^w_wawewhwlwowyx^x`xexfxlxoxq33``.13 "&+M"9&@M Arial ?ARLR00@   "'6GK|}  LNgi $Xarabinitmedi fina&liga, >>!)/3'-15>"*04'-15`- (,.26-'+-15 X 6  & : &,GHIJKarab ghiB:06 *H '0#10 *H 0` +7R0P0, +7<<<Obsolete>>>0 0 *H ytTA(&Xꠂ800%J8Y]s_]ܣ0  *H 010U VeriSign Trust Network10U VeriSign, Inc.1,0*U #VeriSign Time Stamping Service Root1402U +NO LIABILITY ACCEPTED, (c)97 VeriSign, Inc.0 970512000000Z 040107235959Z010U VeriSign Trust Network10U VeriSign, Inc.1,0*U #VeriSign Time Stamping Service Root1402U +NO LIABILITY ACCEPTED, (c)97 VeriSign, Inc.00  *H 0. h|,-.  WSu3* [4 Z%}XsjxqX)X^-bXq"X/6MJ;"V~!lJGj6 -Ӵ90  *H aU>{ǒ~"Գ+[D x~rȲ㉔LNaﳤF=P4 pV*cyis.(]  γ(y)gBHaSs?OUcc00kzm\obOC0  *H 010U VeriSign Trust Network10U VeriSign, Inc.1,0*U #VeriSign Time Stamping Service Root1402U +NO LIABILITY ACCEPTED, (c)97 VeriSign, Inc.0 010228000000Z 040106235959Z010U VeriSign, Inc.10U VeriSign Trust Network1;09U 2Terms of use at https://www.verisign.com/rpa (c)011'0%UVeriSign Time Stamping Service0"0  *H 0 za벧c+aހ='9)fHOO^/Ǒ{!NXc-)pP햻@۾%BU狙1L$*MhaXr0HO/oc ىʂ{K(Łh@F:?6LTBZze{GT=3*^:.uk=`BO[?"1s+FLmP.K*xt=,G100@+40200+0$http://ocsp.verisign.com/ocsp/status0 U00DU =0;09 `HE0*0(+https://www.verisign.com/rpa0U% 0 +0 U0  *H -Oc`,$R 볼g#F M|z 02h2;'{>! Ř@W%误j;#)]@US6:9ess2үc@0  *H 0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0 970110070000Z 201231070000Z0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0"0  *H 0 p;N(x^0ꢩ%_L >|Q`2kBdyvT뜆fkzb#<Ŀ-fh&:, X&F >8,(9IBlUa|`-wL陴d;P1$+=c`Xe7RӿUE:TNzmtN̖ (!W`i7Kc@0  *H  5$w\`2 >:!W,Gb;;Z6Ti$m?̪|1=pjOiCZ Ob{+7%-e%cT!RnC2gl QRǽ0 1 )M[WeIRT(~ū7,zwvj?6A5jj5EZ38nM b T?FUp:uҠ00s a* 0  *H 01 0 UUS10U Washington10URedmond10U Microsoft Corporation1+0)U "Copyright (c) 2000 Microsoft Corp.1#0!UMicrosoft Code Signing PCA0 010329212726Z 020529213726Z01 0 UUS10U Washington10URedmond10U Microsoft Corporation1+0)U "Copyright (c) 2001 Microsoft Corp.10UMicrosoft Corporation00  *H 0oE1=ćNHV+cD0xrLFfbFnD;GQ^wg"{S*-"|N3va `4;I,َ.-kUnp`/@0<0U0U% 0 +0U@OE{uf50U#0)\3Y}. 4(tr0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authorityj Oު@0JUC0A0?=;9http://crl.microsoft.com/pki/crl/products/CodeSignPCA.crl0  *H gqMGŽik_&ӞZ'i5+} WK 00j Oު@0  *H 0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0 001210080000Z 051112080000Z01 0 UUS10U Washington10URedmond10U Microsoft Corporation1+0)U "Copyright (c) 2000 Microsoft Corp.1#0!UMicrosoft Code Signing PCA0 0  *H  0S 04:/{m7#MҌ4$T~tG2XQ)8~:G9NnT1 :mPJ&?ˏIm>U7/`̀aBITJKٓ0ZGudӻݶ Os;:MON3 :doD4J#N`)*򄚙 p{4Af\3T?=tC9泬Hzk*ba9vn>KFGO%(0$0U% 0 +0U0[pir#Q~Mˡr0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority<<>c@0 +70U)\3Y}. 4(0 +7  SubCA0 UF0U00  *H EXAHwwW_Ej9Y'-M88d"B߹/*Ϸ*|Q="mD_ddĩ,ې7Javv%$VT:>Ky_I^2i:TuMd0wz0>MLQ TS ۲9nDGLTזUs2uuIdsV/ǀ]VM= L0H *H  19050010U VeriSign Trust Network10U VeriSign, Inc.1,0*U #VeriSign Time Stamping Service Root1402U +NO LIABILITY ACCEPTED, (c)97 VeriSign, Inc.zm\obOC0 *H Y0 *H  1  *H 0 *H  1 011109205623Z0 *H  18{Lf>0  *H IV5;n ͯ)y7F/PyV/Vhg Sڣ>Oݢ⸻/aUڽ Y5%8]z>/ {Ыm }cÚR #rvi(2$7 B—j j$ZicrkQо|T̫韅[v*T<]D[5_@qݭ(n)A^'3ɎsӴg#]g`\hpH4nggallery.php000064400000017123150212476000007242 0ustar00load_options(); $this->define_constant(); $this->define_tables(); $this->load_dependencies(); // Start this plugin once all other plugins are fully loaded. add_action( 'plugins_loaded', [ $this, 'start_plugin' ] ); add_action( 'wpmu_new_blog', [ $this, 'multisite_new_blog' ], 10, 6 ); // Add some links on the plugin page. add_filter( 'plugin_row_meta', [ $this, 'add_plugin_links' ], 10, 2 ); } public function start_plugin() { // Content Filters. add_filter( 'ngg_gallery_name', 'sanitize_title' ); // Check if we are in the admin area. if ( is_admin() ) { if ( get_option( 'ngg_init_check' ) ) { add_action( 'admin_notices', [ $this, 'output_init_check_error' ] ); } } else { $settings = \Imagely\NGG\Settings\Settings::get_instance(); if ( $settings->get( 'useMediaRSS' ) ) { add_action( 'wp_head', [ 'nggMediaRss', 'add_mrss_alternate_link' ] ); } } } public function output_init_check_error() { printf( "

%s

", esc_html( get_option( 'ngg_init_check' ) ) ); } public function define_tables() { global $wpdb; $wpdb->nggpictures = $wpdb->prefix . 'ngg_pictures'; $wpdb->nggallery = $wpdb->prefix . 'ngg_gallery'; $wpdb->nggalbum = $wpdb->prefix . 'ngg_album'; } public function define_constant() { define( 'NGG_LEGACY_MOD_DIR', implode( DIRECTORY_SEPARATOR, [ rtrim( NGG_PLUGIN_DIR, '/\\' ), 'src', basename( __DIR__ ), ] ) ); define( 'NGGVERSION', NGG_PLUGIN_VERSION ); define( 'NGGFOLDER', dirname( NGG_PLUGIN_BASENAME ) ); define( 'NGGALLERY_ABSPATH', rtrim( NGG_LEGACY_MOD_DIR, '/\\' ) . DIRECTORY_SEPARATOR ); define( 'NGGALLERY_URLPATH', plugin_dir_url( __FILE__ ) ); } public function load_dependencies() { // Load global libraries. require_once __DIR__ . '/lib/core.php'; require_once __DIR__ . '/lib/ngg-db.php'; require_once __DIR__ . '/lib/image.php'; require_once __DIR__ . '/lib/tags.php'; require_once __DIR__ . '/lib/post-thumbnail.php'; require_once __DIR__ . '/lib/sitemap.php'; // Load frontend libraries. require_once __DIR__ . '/lib/shortcodes.php'; // We didn't need all stuff during a AJAX operation. if ( defined( 'DOING_AJAX' ) ) { require_once __DIR__ . '/admin/ajax.php'; } else { require_once __DIR__ . '/lib/meta.php'; require_once __DIR__ . '/lib/media-rss.php'; if ( is_admin() && ! $this->is_rest_url() ) { require_once __DIR__ . '/admin/admin.php'; require_once __DIR__ . '/admin/media-upload.php'; $this->nggAdminPanel = new nggAdminPanel(); } } } public function is_rest_url(): bool { return strpos( $_SERVER['REQUEST_URI'], 'wp-json' ) !== false; } public function load_options() { $this->options = get_option( 'ngg_options' ); } public function multisite_new_blog( $blog_id, $user_id, $domain, $path, $site_id, $meta ) { global $wpdb; include_once __DIR__ . '/admin/install.php'; if ( is_plugin_active_for_network( NGG_PLUGIN_BASENAME ) ) { $current_blog = $wpdb->blogid; switch_to_blog( $blog_id ); $installer = new C_NGG_Legacy_Installer(); nggallery_install( $installer ); switch_to_blog( $current_blog ); } } public function add_plugin_links( $links, $file ) { if ( $file == NGG_PLUGIN_BASENAME ) { $links[] = '' . __( 'Get help', 'nggallery' ) . ''; foreach ( $links as $key => $link ) { if ( false !== strpos( $link, 'Imagely' ) ) { $links[$key] = str_replace( 'remove_transients(); if ( is_multisite() ) { $network = isset( $_SERVER['SCRIPT_NAME'] ) ? $_SERVER['SCRIPT_NAME'] : ''; $activate = isset( $_GET['action'] ) ? $_GET['action'] : ''; $isNetwork = $network == '/wp-admin/network/plugins.php'; $isActivation = ! ( ( $activate == 'deactivate' ) ); if ( $isNetwork && $isActivation ) { $old_blog = $wpdb->blogid; // $wpdb->prepare() cannot be used just yet as it only supported the %i placeholder for column names as of // WordPress 6.2 which is newer than NextGEN's current minimum WordPress version. // // TODO: Once NextGEN's minimum WP version is 6.2 or higher use wpdb->prepare() here. // // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared $blogids = $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs", null ) ); foreach ( $blogids as $blog_id ) { \switch_to_blog( $blog_id ); \nggallery_install( $this ); } switch_to_blog( $old_blog ); return; } } // remove the update message. delete_option( 'ngg_update_exists' ); nggallery_install( $this ); } public function uninstall( $hard = false ) { include_once 'admin/install.php'; if ( $hard ) { delete_option( 'ngg_init_check' ); delete_option( 'ngg_update_exists' ); delete_option( 'ngg_options' ); delete_option( 'ngg_db_version' ); delete_option( 'ngg_update_exists' ); delete_option( 'ngg_next_update' ); } // now remove the capability. ngg_remove_capability( 'NextGEN Attach Interface' ); ngg_remove_capability( 'NextGEN Change options' ); ngg_remove_capability( 'NextGEN Change style' ); ngg_remove_capability( 'NextGEN Edit album' ); ngg_remove_capability( 'NextGEN Gallery overview' ); ngg_remove_capability( 'NextGEN Manage gallery' ); ngg_remove_capability( 'NextGEN Upload images' ); ngg_remove_capability( 'NextGEN Use TinyMCE' ); ngg_remove_capability( 'NextGEN Manage others gallery' ); ngg_remove_capability( 'NextGEN Manage tags' ); $this->remove_transients(); } public function remove_transients() { global $wpdb, $_wp_using_ext_object_cache; // Fetch all transients $transient_names = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s", [ '%' . $wpdb->esc_like( 'ngg_request' ) . '%', ] ) ); // Delete all transients in the database $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", [ '%' . $wpdb->esc_like( 'ngg_request' ) . '%', ] ) ); // If using an external caching mechanism, delete the cached items. if ( $_wp_using_ext_object_cache ) { foreach ( $transient_names as $transient ) { wp_cache_delete( $transient, 'transient' ); wp_cache_delete( substr( $transient, 11 ), 'transient' ); } } } public function upgrade_schema( $sql ) { global $wpdb; // upgrade function changed in WordPress 2.3. require_once ABSPATH . 'wp-admin/includes/upgrade.php'; // add charset & collate like wp core. $charset_collate = ''; if ( version_compare( $wpdb->get_var( 'SELECT VERSION() AS `mysql_version`' ), '4.1.0', '>=' ) ) { if ( ! empty( $wpdb->charset ) ) { $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; } if ( ! empty( $wpdb->collate ) ) { $charset_collate .= " COLLATE $wpdb->collate"; } } // Add charset to table creation query. $sql = str_replace( $charset_collate, '', str_replace( ';', '', $sql ) ); // Execute the query. return dbDelta( $sql . ' ' . $charset_collate . ';' ); } } global $ngg; $ngg = new nggLoader(); lib/meta.php000064400000044222150212476000006752 0ustar00image = \Imagely\NGG\DataMappers\Image::get_instance()->find( $image_or_id ); } else { $this->image = $image_or_id; } $imagePath = \Imagely\NGG\DataStorage\Manager::get_instance()->get_image_abspath( $this->image ); if ( !file_exists( $imagePath ) ) { return false; } $this->size = @getimagesize( $imagePath, $metadata ); if ($this->size && is_array( $metadata )) { // get exif data if (is_callable( 'exif_read_data' ) && \Imagely\NGG\DataStorage\EXIFWriter::is_jpeg_file( $imagePath )) { $this->exif_data = @exif_read_data( $imagePath, null, true ); } // stop here if we didn't need other meta data if ($onlyEXIF) { return true; } // get the iptc data - should be in APP13 if ( is_callable( 'iptcparse' ) && isset( $metadata['APP13'] ) ) { $this->iptc_data = @iptcparse( $metadata['APP13'] ); } // get the xmp data in a XML format if ( is_callable( 'xml_parser_create' )) { $this->xmp_data = $this->extract_XMP( $imagePath ); } return true; } return false; } /** * return the saved meta data from the database * * @since 1.4.0 * @param string $object (optional) * @return array|mixed return either the complete array or the single object */ function get_saved_meta( $object = false ) { $meta = $this->image->meta_data; // Check if we already import the meta data to the database if (!is_array( $meta ) || !isset( $meta['saved'] ) || ( $meta['saved'] !== true )) { return false; } // return one element if requested if ($object) { return $meta[$object]; } // removed saved parameter we don't need that to show unset( $meta['saved'] ); // and remove empty tags or arrays foreach ($meta as $key => $value) { if ( empty( $value ) or is_array( $value )) { unset( $meta[$key] ); } } // on request sanitize the output if ( $this->sanitize == true ) { array_walk( $meta, 'esc_html' ); } return $meta; } /** * nggMeta::get_EXIF() * See also http://trac.wordpress.org/changeset/6313 * * @return bool|array Structured EXIF data */ function get_EXIF( $object = false ) { if ( !$this->exif_data ) { return false; } if (!is_array( $this->exif_array )) { $meta = array(); $exif = isset( $this->exif_data['EXIF'] ) ? $this->exif_data['EXIF'] : array(); if (count( $exif )) { if (!empty( $exif['FNumber'] )) { $meta['aperture'] = 'F ' . round( $this->exif_frac2dec( $exif['FNumber'] ), 2 ); } if (!empty( $exif['Model'] )) { $meta['camera'] = trim( $exif['Model'] ); } if (!empty( $exif['DateTimeDigitized'] )) { $meta['created_timestamp'] = $this->exif_date2ts( $exif['DateTimeDigitized'] ); } elseif (!empty( $exif['DateTimeOriginal'] )) { $meta['created_timestamp'] = $this->exif_date2ts( $exif['DateTimeOriginal'] ); } elseif (!empty( $exif['FileDateTime'] )) { $meta['created_timestamp'] = $this->exif_date2ts( $exif['FileDateTime'] ); } if (!empty( $exif['FocalLength'] )) { $meta['focal_length'] = $this->exif_frac2dec( $exif['FocalLength'] ) . __( ' mm', 'nggallery' ); } if (!empty( $exif['ISOSpeedRatings'] )) { $meta['iso'] = $exif['ISOSpeedRatings']; } if (!empty( $exif['ExposureTime'] )) { $meta['shutter_speed'] = $this->exif_frac2dec( $exif['ExposureTime'] ); $meta['shutter_speed'] =( $meta['shutter_speed'] > 0.0 and $meta['shutter_speed'] < 1.0 ) ? ( '1/' . round( 1 / $meta['shutter_speed'], -1 ) ) : ( $meta['shutter_speed'] ); $meta['shutter_speed'] .= __( ' sec', 'nggallery' ); } // Bit 0 indicates the flash firing status. On some images taken on older iOS versions, this may be // incorrectly stored as an array. if (isset( $exif['Flash'] ) && is_array( $exif['Flash'] )) { $meta['flash'] = __( 'Fired', 'nggallery' ); } elseif (!empty( $exif['Flash'] )) { $meta['flash'] = ( $exif['Flash'] & 1 ) ? __( 'Fired', 'nggallery' ) : __( 'Not fired', ' nggallery' ); } } // additional information if ( isset( $this->exif_data['IFD0'] ) ) { $exif = $this->exif_data['IFD0']; if (!empty( $exif['Model'] )) { $meta['camera'] = $exif['Model']; } if (!empty( $exif['Make'] )) { $meta['make'] = $exif['Make']; } if (!empty( $exif['ImageDescription'] )) { $meta['title'] = $exif['ImageDescription']; } if (!empty( $exif['Orientation'] )) { $meta['Orientation'] = $exif['Orientation']; } } // this is done by Windows if ( isset( $this->exif_data['WINXP'] ) ) { $exif = $this->exif_data['WINXP']; if (!empty( $exif['Title'] ) && empty( $meta['title'] )) { $meta['title'] = $this->utf8_encode( $exif['Title'] ); } if (!empty( $exif['Author'] )) { $meta['author'] = $this->utf8_encode( $exif['Author'] ); } if (!empty( $exif['Keywords'] )) { $meta['keywords'] = $this->utf8_encode( $exif['Keywords'] ); } if (!empty( $exif['Subject'] )) { $meta['subject'] = $this->utf8_encode( $exif['Subject'] ); } if (!empty( $exif['Comments'] )) { $meta['caption'] = $this->utf8_encode( $exif['Comments'] ); } } $this->exif_array = $meta; } // return one element if requested if ( $object == true ) { $value = isset( $this->exif_array[$object] ) ? $this->exif_array[$object] : false; return $value; } // on request sanitize the output if ( $this->sanitize == true ) { array_walk( $this->exif_array, 'esc_html' ); } return $this->exif_array; } // convert a fraction string to a decimal function exif_frac2dec( $str ) { @list( $n, $d ) = explode( '/', $str ); if ( !empty( $d ) ) { return $n / $d; } return $str; } // convert the exif date format to a unix timestamp function exif_date2ts( $str ) { $retval = is_numeric( $str ) ? $str : @strtotime( $str ); if (!$retval && $str) { @list( $date, $time ) = explode( ' ', trim( $str ) ); @list( $y, $m, $d ) = explode( ':', $date ); $retval = strtotime( "{$y}-{$m}-{$d} {$time}" ); } return $retval; } /** * nggMeta::readIPTC() - IPTC Data Information for EXIF Display * * @param mixed $object (optional) * @return null|bool|array */ function get_IPTC( $object = false ) { if (!$this->iptc_data) { return false; } if (!is_array( $this->iptc_array )) { // --------- Set up Array Functions --------- // $iptcTags = array( "2#005" => 'title', "2#007" => 'status', "2#012" => 'subject', "2#015" => 'category', "2#025" => 'keywords', "2#055" => 'created_date', "2#060" => 'created_time', "2#080" => 'author', "2#085" => 'position', "2#090" => 'city', "2#092" => 'location', "2#095" => 'state', "2#100" => 'country_code', "2#101" => 'country', "2#105" => 'headline', "2#110" => 'credit', "2#115" => 'source', "2#116" => 'copyright', "2#118" => 'contact', "2#120" => 'caption', ); $meta = array(); foreach ($iptcTags as $key => $value) { if (isset( $this->iptc_data[$key] )) { $meta[$value] = trim( $this->utf8_encode( implode( ", ", $this->iptc_data[$key] ) ) ); } } $this->iptc_array = $meta; } // return one element if requested if ($object) { return ( isset( $this->iptc_array[$object] ) ) ? $this->iptc_array[$object] : null; } // on request sanitize the output if ( $this->sanitize == true ) { array_walk( $this->iptc_array, 'esc_html' ); } return $this->iptc_array; } /** * nggMeta::extract_XMP() * get XMP DATA * code by Pekka Saarinen http://photography-on-the.net * * @param mixed $filename * @return bool|string XML data */ function extract_XMP( $filename ) { // TODO:Require a lot of memory, could be better ob_start(); @readfile( $filename ); $source = ob_get_contents(); ob_end_clean(); $start = strpos( $source, "" ); if (( !$start === false ) && ( !$end === false )) { $lenght = $end - $start; $xmp_data = substr( $source, $start, $lenght+12 ); unset( $source ); return $xmp_data; } unset( $source ); return false; } /** * nggMeta::get_XMP() * * @package Taken from http://php.net/manual/en/function.xml-parse-into-struct.php * @author Alf Marius Foss Olsen & Alex Rabe * @return bool|array|object XML Array or object */ function get_XMP( $object = false ) { if (!$this->xmp_data) { return false; } if (!is_array( $this->xmp_array )) { $parser = xml_parser_create(); xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 ); // Dont mess with my cAsE sEtTings xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 ); // Dont bother with empty info xml_parse_into_struct( $parser, $this->xmp_data, $values ); xml_parser_free( $parser ); $xmlarray = array(); // The XML array $this->xmp_array = array(); // The returned array $stack = array(); // tmp array used for stacking $list_array = array(); // tmp array for list elements $list_element = false; // rdf:li indicator foreach ($values as $val) { if ($val['type'] == "open") { array_push( $stack, $val['tag'] ); } elseif ($val['type'] == "close") { // reset the compared stack if ($list_element == false) { array_pop( $stack ); } // reset the rdf:li indicator & array $list_element = false; $list_array = array(); } elseif ($val['type'] == "complete") { if ($val['tag'] == "rdf:li") { // first go one element back if ($list_element == false) { array_pop( $stack ); } $list_element = true; // do not parse empty tags if ( empty( $val['value'] ) ) { continue; } // save it in our temp array $list_array[] = $val['value']; // in the case it's a list element we seralize it $value = implode( ",", $list_array ); $this->setArrayValue( $xmlarray, $stack, $value ); } else { array_push( $stack, $val['tag'] ); // do not parse empty tags if ( !empty( $val['value'] ) ) { $this->setArrayValue( $xmlarray, $stack, $val['value'] ); } array_pop( $stack ); } } } // foreach // don't parse a empty array if ( empty( $xmlarray ) || empty( $xmlarray['x:xmpmeta'] ) ) { return false; } // cut off the useless tags $xmlarray = $xmlarray['x:xmpmeta']['rdf:RDF']['rdf:Description']; // --------- Some values from the XMP format--------- // $xmpTags = array( 'xap:CreateDate' => 'created_timestamp', 'xap:ModifyDate' => 'last_modfied', 'xap:CreatorTool' => 'tool', 'dc:format' => 'format', 'dc:title' => 'title', 'dc:creator' => 'author', 'dc:subject' => 'keywords', 'dc:description' => 'caption', 'photoshop:AuthorsPosition' => 'position', 'photoshop:City' => 'city', 'photoshop:Country' => 'country', ); foreach ($xmpTags as $key => $value) { // if the kex exist if ( isset( $xmlarray[$key] ) ) { switch ($key) { case 'xap:CreateDate': case 'xap:ModifyDate': $this->xmp_array[$value] = $this->exif_date2ts( $xmlarray[$key] ); break; default: $this->xmp_array[$value] = $xmlarray[$key]; } } } } // return one element if requested if ($object != false ) { return isset( $this->xmp_array[$object] ) ? $this->xmp_array[$object] : false; } // on request sanitize the output if ( $this->sanitize == true ) { array_walk( $this->xmp_array, 'esc_html' ); } return $this->xmp_array; } function setArrayValue( &$array, $stack, $value ) { if ($stack) { $key = array_shift( $stack ); $this->setArrayValue( $array[$key], $stack, $value ); return $array; } else { $array = $value; } return $array; } /** * nggMeta::get_META() - return a meta value form the available list * * @param string $object * @return mixed $value */ function get_META( $object = false ) { if ($value = $this->get_saved_meta( $object )) { return $value; } if ($object == 'created_timestamp' && ( $d = $this->get_IPTC( 'created_date' ) ) && ( $t = $this->get_IPTC( 'created_time' ) )) { return $this->exif_date2ts( $d . ' ' . $t ); } $order = apply_filters( 'ngg_metadata_parse_order', [ 'XMP', 'IPTC', 'EXIF' ] ); foreach ($order as $method) { $method = 'get_' . $method; if (method_exists( $this, $method ) && $value = $this->$method( $object )) { return $value; } } return false; } /** * nggMeta::i8n_name() - localize the tag name * * @param mixed $key * @return string Translated $key */ function i18n_name( $key ) { $tagnames = [ 'aperture' => __( 'Aperture', 'nggallery' ), 'author' => __( 'Author', 'nggallery' ), 'camera' => __( 'Camera', 'nggallery' ), 'caption' => __( 'Caption', 'nggallery' ), 'category' => __( 'Category', 'nggallery' ), 'city' => __( 'City', 'nggallery' ), 'contact' => __( 'Contact', 'nggallery' ), 'copyright' => __( 'Copyright Notice', 'nggallery' ), 'country' => __( 'Country', 'nggallery' ), 'country_code' => __( 'Country code', 'nggallery' ), 'created_date' => __( 'Date Created', 'nggallery' ), 'created_time' => __( 'Time Created', 'nggallery' ), 'created_timestamp' => __( 'Date/Time', 'nggallery' ), 'credit' => __( 'Credit', 'nggallery' ), 'flash' => __( 'Flash', 'nggallery' ), 'focal_length' => __( 'Focal length', 'nggallery' ), 'format' => __( 'Format', 'nggallery' ), 'headline' => __( 'Headline', 'nggallery' ), 'height' => __( 'Image Height', 'nggallery' ), 'iso' => __( 'ISO', 'nggallery' ), 'keywords' => __( 'Keywords', 'nggallery' ), 'last_modfied' => __( 'Last modified', 'nggallery' ), 'location' => __( 'Location', 'nggallery' ), 'make' => __( 'Make', 'nggallery' ), 'position' => __( 'Author Position', 'nggallery' ), 'shutter_speed' => __( 'Shutter speed', 'nggallery' ), 'source' => __( 'Source', 'nggallery' ), 'state' => __( 'Province/State', 'nggallery' ), 'status' => __( 'Edit Status', 'nggallery' ), 'subject' => __( 'Subject', 'nggallery' ), 'tags' => __( 'Tags', 'nggallery' ), 'title' => __( 'Title', 'nggallery' ), 'tool' => __( 'Program tool', 'nggallery' ), 'width' => __( 'Image Width', 'nggallery' ), ]; if ( isset( $tagnames[$key] ) ) { $key = $tagnames[$key]; } return( $key ); } /** * Return the Timestamp from the image , if possible it's read from exif data * * @return string */ function get_date_time() { $date = $this->exif_date2ts( $this->get_META( 'created_timestamp' ) ); if (!$date) { $image_path = \Imagely\NGG\DataStorage\Manager::get_instance()->get_backup_abspath( $this->image ); if (file_exists( $image_path )) { $date = filectime( $image_path ); } } // Fallback if (!$date) { $date = time(); } // Return the MySQL format $date_time = gmdate( 'Y-m-d H:i:s', $date ); return $date_time; } /** * This function return the most common metadata, via a filter we can add more * Reason : GD manipulation removes that options * * @since V1.4.0 * @return bool|array */ function get_common_meta() { global $wpdb; $meta = array( 'aperture' => 0, 'credit' => '', 'camera' => '', 'caption' => '', 'created_timestamp' => 0, 'copyright' => '', 'focal_length' => 0, 'iso' => 0, 'shutter_speed' => 0, 'flash' => 0, 'title' => '', 'keywords' => '', ); $meta = apply_filters( 'ngg_read_image_metadata', $meta ); // meta should be still an array if ( !is_array( $meta ) ) { return false; } foreach ($meta as $key => $value) { $meta[$key] = $this->get_META( $key ); } // let's add now the size of the image $meta['width'] = $this->size[0]; $meta['height'] = $this->size[1]; return $meta; } /** * If needed sanitize each value before output * * @return void */ function sanitize() { $this->sanitize = true; } /** * Wrapper to utf8_encode() that avoids double encoding * * Regex adapted from http://www.w3.org/International/questions/qa-forms-utf-8.en.php * to determine if the given string is already UTF-8. mb_detect_encoding() is not * always available and is limited in accuracy * * @param string $str * @return string */ function utf8_encode( $str ) { $is_utf8 = preg_match( '%^(?: [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 )*$%xs', $str ); if (!$is_utf8) { utf8_encode( $str ); } return $str; } } lib/image.php000064400000003322150212476000007102 0ustar00meta_data = \Imagely\NGG\Util\Serializable::unserialize( $image->meta_data ); $this->_ngiw = new \Imagely\NGG\DataTypes\LegacyImage( $image, null, true ); } public function __set( $name, $value ) { $this->$name = $value; if ($this->_propogate) { $this->_ngiw->__set( $name, $value ); } } public function __isset( $name ) { return $this->_ngiw->__isset( $name ); } public function __unset( $name ) { return $this->_ngiw->__unset( $name ); } public function __get( $name ) { $this->_propogate = false; $this->$name = $this->_ngiw->__get( $name ); $this->_propogate = true; return $this->$name; } function get_thumbcode( $galleryname = '' ) { return $this->_ngiw->get_thumbcode( $galleryname ); } function get_href_link() { return $this->_ngiw->get_href_link(); } function get_href_thumb_link() { return $this->_ngiw->get_href_thumb_link(); } function cached_singlepic_file( $width = '', $height = '', $mode = '' ) { return $this->_ngiw->cached_singlepic_file( $width, $height, $mode ); } function get_tags() { return $this->_ngiw->get_tags(); } function get_permalink() { return $this->_ngiw->get_permalink(); } } lib/post-thumbnail.php000064400000017333150212476000010775 0ustar00" * * @param string $content * @return string html output */ function admin_post_thumbnail( $content, $post_id = null ) { if ($post_id == null) { global $post; if ( !is_object( $post ) ) { return $content; } $post_id = $post->ID; } $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true ); // in the case it's a ngg image it return ngg- if ( strpos( $thumbnail_id, 'ngg-' ) === false) { global $wp_version; if (version_compare( $wp_version, '3.5', '>=' ) && $thumbnail_id <= 0) { $iframe_src = get_upload_iframe_src( 'image', $post_id ); $iframe_src = remove_query_arg( 'TB_iframe', $iframe_src ); $iframe_src = add_query_arg( 'tab', 'nextgen', $iframe_src ); $iframe_src = add_query_arg( 'chromeless', '1', $iframe_src ); $iframe_src = add_query_arg( 'TB_iframe', '1', $iframe_src ); $set_thumbnail_link = '

%s

'; $content .= sprintf( $set_thumbnail_link, esc_html__( 'Set NextGEN featured image', 'nggallery' ) ); } return $content; } // cut off the 'ngg-' $thumbnail_id = substr( $thumbnail_id, 4 ); return $this->_wp_post_thumbnail_html( $thumbnail_id ); } /** * Filter for the post content * * @param string $html * @param int $post_id * @param int $post_thumbnail_id * @param string|array $size Optional. Image size. Defaults to 'thumbnail'. * @param string|array $attr Optional. Query string or array of attributes. * @return string html output */ function ngg_post_thumbnail( $html, $post_id, $post_thumbnail_id, $size = 'post-thumbnail', $attr = '' ) { global $post, $_wp_additional_image_sizes; // in the case it's a ngg image it return ngg- if ( strpos( $post_thumbnail_id, 'ngg-' ) === false) { return $html; } // cut off the 'ngg-' $post_thumbnail_id = substr( $post_thumbnail_id, 4 ); // get the options $ngg_options = nggGallery::get_option( 'ngg_options' ); // get the image data $image = nggdb::find_image( $post_thumbnail_id ); if (!$image) { return $html; } $img_src = false; $class = 'wp-post-image ngg-image-' . $image->pid . ' '; if (is_array( $size ) || is_array( $_wp_additional_image_sizes ) && isset( $_wp_additional_image_sizes[$size] )) { $class .= isset( $attr['class'] ) ? esc_attr( $attr['class'] ) : ''; if ( is_array( $size )) { // the parameters is given as an array rather than a predfined image $width = absint( $size[0] ); $height = absint( $size[1] ); if (isset( $size[2] ) && $size[2] === true) { $mode = 'crop'; } elseif (isset( $size[2] )) { $mode = $size[2]; } else { $mode = ''; } } else { $width = absint( $_wp_additional_image_sizes[$size]['width'] ); $height = absint( $_wp_additional_image_sizes[$size]['height'] ); $mode = ( $_wp_additional_image_sizes[$size]['crop'] ) ? 'crop' : ''; } // check fo cached picture if ( $post->post_status == 'publish' ) { $img_src = $image->cached_singlepic_file( $width, $height, $mode ); } // if we didn't use a cached image then we take the on-the-fly mode if ($img_src == false) { $img_src = trailingslashit( home_url() ) . 'index.php?callback=image&pid=' . $image->pid . '&width=' . $width . '&height=' . $height . '&mode=crop'; } } else { $img_src = $image->thumbURL; } $alttext = isset( $attr['alt'] ) ? $attr['alt'] : $image->alttext; $titletext = isset( $attr['title'] ) ? $attr['title'] : $image->title; $html = '' . esc_attr( $alttext ) . ''; return $html; } /** * nggPostThumbnail::ajax_set_post_thumbnail() * * @return void */ function ajax_set_post_thumbnail() { // This function does the following: // 1) Check if the user is logged in and has permission to edit the post // 2) Get the thumbnail id from the POST request. The thumbnail id is actually the NGG image id // 3)] global $post_ID; // check for correct capability if ( ! is_user_logged_in() ) { die( '-1' ); } if ( ! isset( $_REQUEST['nonce'] ) || ! wp_verify_nonce( $_REQUEST['nonce'], 'ngg_set_post_thumbnails' ) ) { die( '-1' ); } // get the post id as global variable, otherwise the ajax_nonce failed later $post_ID = intval( $_REQUEST['post_id'] ); if ( ! current_user_can( 'edit_post', $post_ID ) ) { die( '-1' ); } $thumbnail_id = intval( $_REQUEST['thumbnail_id'] ); // delete the image if ( $thumbnail_id == '-1' ) { delete_post_meta( $post_ID, '_thumbnail_id' ); die( '1' ); } if ( ( $attachment_id = StorageManager::get_instance()->set_post_thumbnail( $post_ID, $thumbnail_id, TRUE ) ) ) { die( strval( $attachment_id ) ); } die( strval( 0 ) ); } /** * Output HTML for the post thumbnail meta-box. * * @see wp-admin\includes\post.php * @param int $thumbnail_id ID of the image used for thumbnail * @return string html output */ function _wp_post_thumbnail_html( $thumbnail_id = null ) { global $_wp_additional_image_sizes, $post_ID; $set_thumbnail_link = '

%s

'; $content = sprintf( $set_thumbnail_link, esc_html__( 'Set featured image', 'nggallery' ) ); $image = nggdb::find_image( $thumbnail_id ); $img_src = false; // get the options $ngg_options = nggGallery::get_option( 'ngg_options' ); if ( $image ) { if ( is_array( $_wp_additional_image_sizes ) && isset( $_wp_additional_image_sizes['post-thumbnail'] ) ) { // Use post thumbnail settings if defined $width = absint( $_wp_additional_image_sizes['post-thumbnail']['width'] ); $height = absint( $_wp_additional_image_sizes['post-thumbnail']['height'] ); $mode = $_wp_additional_image_sizes['post-thumbnail']['crop'] ? 'crop' : ''; // check fo cached picture $img_src = $image->cached_singlepic_file( $width, $height, $mode ); } // if we didn't use a cached image then we take the on-the-fly mode if ( $img_src == false ) { $img_src = trailingslashit( home_url() ) . 'index.php?callback=image&pid=' . $image->pid . '&width=' . $width . '&height=' . $height . '&mode=crop'; } $thumbnail_html = '' . $image->alttext . ''; if ( !empty( $thumbnail_html ) ) { $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$post_ID" ); $content = sprintf( $set_thumbnail_link, $thumbnail_html ); $content .= '

' . esc_html__( 'Remove featured image' ) . '

'; } } return $content; } } $nggPostThumbnail = new nggPostThumbnail(); lib/gd.thumbnail.inc.php000064400000067257150212476000011165 0ustar00errmsg = ''; $this->error = false; $this->currentDimensions = array(); $this->newDimensions = array(); $this->fileName = $fileName; $this->percent = 100; $this->maxWidth = 0; $this->maxHeight = 0; $this->watermarkImgPath = ''; $this->watermarkText = ''; // check to see if file exists if (!file_exists( $this->fileName )) { $this->errmsg = 'File not found'; $this->error = true; } // check to see if file is readable elseif (!is_readable( $this->fileName )) { $this->errmsg = 'File is not readable'; $this->error = true; } // if there are no errors, determine the file format if ($this->error == false) { @ini_set( 'memory_limit', -1 ); $data = @getimagesize( $this->fileName ); if (isset( $data ) && is_array( $data )) { $extensions = [ IMAGETYPE_GIF => 'GIF', IMAGETYPE_JPEG => 'JPG', IMAGETYPE_PNG => 'PNG', IMAGETYPE_WEBP => 'WEBP', ]; $extension = array_key_exists( $data[2], $extensions ) ? $extensions[$data[2]] : ''; if ($extension) { $this->format = $extension; } else { $this->errmsg = 'Unknown file format'; $this->error = true; } } else { $this->errmsg = 'File is not an image'; $this->error = true; } } // increase memory-limit if possible, GD needs this for large images // @ini_set('memory_limit', '128M'); if ($this->error == false) { // Check memory consumption if file exists $this->checkMemoryForImage( $this->fileName ); } // initialize resources if no errors if ($this->error == false) { switch ($this->format) { case 'GIF': $this->oldImage = ImageCreateFromGif( $this->fileName ); break; case 'JPG': $this->oldImage = ImageCreateFromJpeg( $this->fileName ); break; case 'PNG': $this->oldImage = ImageCreateFromPng( $this->fileName ); break; case 'WEBP': $this->oldImage = imagecreatefromwebp( $this->fileName ); } if (!$this->oldImage) { $this->errmsg = 'Create Image failed. Check memory limit'; $this->error = true; } else { $size = GetImageSize( $this->fileName ); $this->currentDimensions = array( 'width'=>$size[0], 'height'=>$size[1] ); $this->newImage = $this->oldImage; } } if ($this->error == true) { if (!$no_ErrorImage) { $this->showErrorImage(); } return; } } /** * Calculate the memory limit */ function checkMemoryForImage( $filename ) { if ( ( function_exists( 'memory_get_usage' ) ) && ( ini_get( 'memory_limit' ) ) ) { $imageInfo = getimagesize( $filename ); switch ($this->format) { case 'GIF': // measured factor 1 is better $CHANNEL = 1; break; case 'JPG': $CHANNEL = $imageInfo['channels']; break; case 'PNG': // didn't get the channel for png $CHANNEL = 3; break; case 'WEBP': $CHANNEL = $imageInfo['bits']; break; } $MB = 1048576; // number of bytes in 1M $K64 = 65536; // number of bytes in 64K $TWEAKFACTOR = 1.68; // Or whatever works for you $memoryNeeded = round( ( $imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $CHANNEL / 8 + $K64 ) * $TWEAKFACTOR ); $memoryNeeded = memory_get_usage() + $memoryNeeded; // get memory limit $memory_limit = ini_get( 'memory_limit' ); // PHP docs : Note that to have no memory limit, set this directive to -1. if ($memory_limit == -1 ) { return; } // Just check megabyte limits, not higher if ( strtolower( substr( $memory_limit, -1 ) ) == 'm' ) { if ($memory_limit != '') { $memory_limit = substr( $memory_limit, 0, -1 ) * 1024 * 1024; } if ($memoryNeeded > $memory_limit) { $memoryNeeded = round( $memoryNeeded / 1024 / 1024, 2 ); $this->errmsg = 'Exceed Memory limit. Require : ' . $memoryNeeded . " MByte"; $this->error = true; } } } return; } /** * Must be called to free up allocated memory after all manipulations are done */ function destruct() { if (is_resource( $this->newImage ) || $this->newImage instanceof GdImage) { @imagedestroy( $this->newImage ); } if (is_resource( $this->oldImage ) || $this->oldImage instanceof GdImage) { @imagedestroy( $this->oldImage ); } if (is_resource( $this->workingImage ) || $this->workingImage instanceof GdImage) { @imagedestroy( $this->workingImage ); } } /** * Returns the current width of the image * * @return int */ function getCurrentWidth() { return $this->currentDimensions['width']; } /** * Returns the current height of the image * * @return int */ function getCurrentHeight() { return $this->currentDimensions['height']; } /** * Calculates new image width * * @param int $width * @param int $height * @return array */ function calcWidth( $width, $height ) { $newWp = ( 100 * $this->maxWidth ) / $width; $newHeight = ( $height * $newWp ) / 100; return array( 'newWidth'=>intval( $this->maxWidth ), 'newHeight'=>intval( $newHeight ) ); } /** * Calculates new image height * * @param int $width * @param int $height * @return array */ function calcHeight( $width, $height ) { $newHp = ( 100 * $this->maxHeight ) / $height; $newWidth = ( $width * $newHp ) / 100; return array( 'newWidth'=>intval( $newWidth ), 'newHeight'=>intval( $this->maxHeight ) ); } /** * Calculates new image size based on percentage * * @param int $width * @param int $height * @return array */ function calcPercent( $width, $height ) { $newWidth = ( $width * $this->percent ) / 100; $newHeight = ( $height * $this->percent ) / 100; return array( 'newWidth'=>intval( $newWidth ), 'newHeight'=>intval( $newHeight ) ); } /** * Calculates new image size based on width and height, while constraining to maxWidth and maxHeight * * @param int $width * @param int $height */ function calcImageSize( $width, $height ) { $newSize = array( 'newWidth'=>$width, 'newHeight'=>$height ); if ($this->maxWidth > 0) { $newSize = $this->calcWidth( $width, $height ); if ($this->maxHeight > 0 && $newSize['newHeight'] > $this->maxHeight) { $newSize = $this->calcHeight( $newSize['newWidth'], $newSize['newHeight'] ); } // $this->newDimensions = $newSize; } if ($this->maxHeight > 0) { $newSize = $this->calcHeight( $width, $height ); if ($this->maxWidth > 0 && $newSize['newWidth'] > $this->maxWidth) { $newSize = $this->calcWidth( $newSize['newWidth'], $newSize['newHeight'] ); } // $this->newDimensions = $newSize; } $this->newDimensions = $newSize; } /** * Calculates new image size based percentage * * @param int $width * @param int $height */ function calcImageSizePercent( $width, $height ) { if ($this->percent > 0) { $this->newDimensions = $this->calcPercent( $width, $height ); } } /** * Displays error image */ function showErrorImage() { header( 'Content-type: image/png' ); $errImg = ImageCreate( 220, 25 ); $bgColor = imagecolorallocate( $errImg, 0, 0, 0 ); $fgColor1 = imagecolorallocate( $errImg, 255, 255, 255 ); $fgColor2 = imagecolorallocate( $errImg, 255, 0, 0 ); imagestring( $errImg, 3, 6, 6, 'Error:', $fgColor2 ); imagestring( $errImg, 3, 55, 6, $this->errmsg, $fgColor1 ); imagepng( $errImg ); imagedestroy( $errImg ); } /** * Resizes image to fixed Width x Height * * @param int $Width * @param int $Height */ function resizeFix( $Width = 0, $Height = 0, $deprecated = 3 ) { $this->newWidth = $Width; $this->newHeight = $Height; if (function_exists( "ImageCreateTrueColor" )) { $this->workingImage = ImageCreateTrueColor( $this->newWidth, $this->newHeight ); } else { $this->workingImage = ImageCreate( $this->newWidth, $this->newHeight ); } // ImageCopyResampled( $this->imagecopyresampled( $this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newWidth, $this->newHeight, $this->currentDimensions['width'], $this->currentDimensions['height'] ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $this->newWidth; $this->currentDimensions['height'] = $this->newHeight; } /** * Resizes image to maxWidth x maxHeight * * @param int $maxWidth * @param int $maxHeight */ function resize( $maxWidth = 0, $maxHeight = 0, $deprecated = 3 ) { $this->maxWidth = $maxWidth; $this->maxHeight = $maxHeight; $this->calcImageSize( $this->currentDimensions['width'], $this->currentDimensions['height'] ); if (function_exists( "ImageCreateTrueColor" )) { $this->workingImage = ImageCreateTrueColor( $this->newDimensions['newWidth'], $this->newDimensions['newHeight'] ); } else { $this->workingImage = ImageCreate( $this->newDimensions['newWidth'], $this->newDimensions['newHeight'] ); } // ImageCopyResampled( $this->imagecopyresampled( $this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newDimensions['newWidth'], $this->newDimensions['newHeight'], $this->currentDimensions['width'], $this->currentDimensions['height'] ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $this->newDimensions['newWidth']; $this->currentDimensions['height'] = $this->newDimensions['newHeight']; } /** * Resizes the image by $percent percent * * @param int $percent */ function resizePercent( $percent = 0 ) { $this->percent = $percent; $this->calcImageSizePercent( $this->currentDimensions['width'], $this->currentDimensions['height'] ); if (function_exists( "ImageCreateTrueColor" )) { $this->workingImage = ImageCreateTrueColor( $this->newDimensions['newWidth'], $this->newDimensions['newHeight'] ); } else { $this->workingImage = ImageCreate( $this->newDimensions['newWidth'], $this->newDimensions['newHeight'] ); } $this->ImageCopyResampled( $this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newDimensions['newWidth'], $this->newDimensions['newHeight'], $this->currentDimensions['width'], $this->currentDimensions['height'] ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $this->newDimensions['newWidth']; $this->currentDimensions['height'] = $this->newDimensions['newHeight']; } /** * Crops the image from calculated center in a square of $cropSize pixels * * @param int $cropSize */ function cropFromCenter( $cropSize ) { if ($cropSize > $this->currentDimensions['width']) { $cropSize = $this->currentDimensions['width']; } if ($cropSize > $this->currentDimensions['height']) { $cropSize = $this->currentDimensions['height']; } $cropX = intval( ( $this->currentDimensions['width'] - $cropSize ) / 2 ); $cropY = intval( ( $this->currentDimensions['height'] - $cropSize ) / 2 ); if (function_exists( "ImageCreateTrueColor" )) { $this->workingImage = ImageCreateTrueColor( $cropSize, $cropSize ); } else { $this->workingImage = ImageCreate( $cropSize, $cropSize ); } $this->imagecopyresampled( $this->workingImage, $this->oldImage, 0, 0, $cropX, $cropY, $cropSize, $cropSize, $cropSize, $cropSize ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $cropSize; $this->currentDimensions['height'] = $cropSize; } /** * Advanced cropping function that crops an image using $startX and $startY as the upper-left hand corner. * * @param int $startX * @param int $startY * @param int $width * @param int $height */ function crop( $startX, $startY, $width, $height ) { // make sure the cropped area is not greater than the size of the image if ($width > $this->currentDimensions['width']) { $width = $this->currentDimensions['width']; } if ($height > $this->currentDimensions['height']) { $height = $this->currentDimensions['height']; } // make sure not starting outside the image if (( $startX + $width ) > $this->currentDimensions['width']) { $startX = ( $this->currentDimensions['width'] - $width ); } if (( $startY + $height ) > $this->currentDimensions['height']) { $startY = ( $this->currentDimensions['height'] - $height ); } if ($startX < 0) { $startX = 0; } if ($startY < 0) { $startY = 0; } if (function_exists( "ImageCreateTrueColor" )) { $this->workingImage = ImageCreateTrueColor( $width, $height ); } else { $this->workingImage = ImageCreate( $width, $height ); } $this->imagecopyresampled( $this->workingImage, $this->oldImage, 0, 0, $startX, $startY, $width, $height, $width, $height ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $width; $this->currentDimensions['height'] = $height; } /** * Outputs the image to the screen, or saves to $name if supplied. Quality of JPEG images can be controlled with the $quality variable * * @param int $quality * @param string $name */ function show( $quality = 100, $name = '' ) { switch ($this->format) { case 'GIF': if ($name != '') { @ImageGif( $this->newImage, $name ) or $this->error = true; } else { header( 'Content-type: image/gif' ); ImageGif( $this->newImage ); } break; case 'JPG': if ($name != '') { @ImageJpeg( $this->newImage, $name, $quality ) or $this->error = true; } else { header( 'Content-type: image/jpeg' ); ImageJpeg( $this->newImage, null, $quality ); } break; case 'PNG': if ($name != '') { @ImagePng( $this->newImage, $name ) or $this->error = true; } else { header( 'Content-type: image/png' ); ImagePng( $this->newImage ); } break; case 'WEBP': if ($name != '') { $this->error = !@imagewebp( $this->newImage, $name ); } else { header( 'Content-type: image/webp' ); imagewebp( $this->newImage ); } break; } } /** * Saves image as $name (can include file path), with quality of # percent if file is a jpeg * * @param string $name * @param int $quality * @return bool errorstate */ function save( $name, $quality = 100 ) { $this->show( $quality, $name ); if ($this->error == true) { $this->errmsg = 'Create Image failed. Check safe mode settings'; return false; } if ( function_exists( 'do_action' ) ) { do_action( 'ngg_ajax_image_save', $name ); } return true; } /** * Creates Apple-style reflection under image, optionally adding a border to main image * * @param int $percent * @param int $reflection * @param int $white * @param bool $border * @param string $borderColor */ function createReflection( $percent, $reflection, $white, $border = true, $borderColor = '#a4a4a4' ) { $width = $this->currentDimensions['width']; $height = $this->currentDimensions['height']; $reflectionHeight = intval( $height * ( $reflection / 100 ) ); $newHeight = $height + $reflectionHeight; $reflectedPart = $height * ( $percent / 100 ); $this->workingImage = ImageCreateTrueColor( $width, $newHeight ); ImageAlphaBlending( $this->workingImage, true ); $colorToPaint = ImageColorAllocateAlpha( $this->workingImage, 255, 255, 255, 0 ); ImageFilledRectangle( $this->workingImage, 0, 0, $width, $newHeight, $colorToPaint ); imagecopyresampled( $this->workingImage, $this->newImage, 0, 0, 0, $reflectedPart, $width, $reflectionHeight, $width, ( $height - $reflectedPart ) ); $this->imageFlipVertical(); imagecopy( $this->workingImage, $this->newImage, 0, 0, 0, 0, $width, $height ); imagealphablending( $this->workingImage, true ); for ($i=0;$i<$reflectionHeight;$i++) { $colorToPaint = imagecolorallocatealpha( $this->workingImage, 255, 255, 255, ( $i/$reflectionHeight*-1+1 )*$white ); imagefilledrectangle( $this->workingImage, 0, $height+$i, $width, $height+$i, $colorToPaint ); } if ($border == true) { $rgb = $this->hex2rgb( $borderColor, false ); $colorToPaint = imagecolorallocate( $this->workingImage, $rgb[0], $rgb[1], $rgb[2] ); imageline( $this->workingImage, 0, 0, $width, 0, $colorToPaint ); // top line imageline( $this->workingImage, 0, $height, $width, $height, $colorToPaint ); // bottom line imageline( $this->workingImage, 0, 0, 0, $height, $colorToPaint ); // left line imageline( $this->workingImage, $width-1, 0, $width-1, $height, $colorToPaint ); // right line } $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; $this->currentDimensions['width'] = $width; $this->currentDimensions['height'] = $newHeight; } /** * Flip an image. * * @param bool $horz flip the image in horizontal mode * @param bool $vert flip the image in vertical mode */ function flipImage( $horz = false, $vert = false ) { $sx = $vert ? ( $this->currentDimensions['width'] - 1 ) : 0; $sy = $horz ? ( $this->currentDimensions['height'] - 1 ) : 0; $sw = $vert ? -$this->currentDimensions['width'] : $this->currentDimensions['width']; $sh = $horz ? -$this->currentDimensions['height'] : $this->currentDimensions['height']; $this->workingImage = imagecreatetruecolor( $this->currentDimensions['width'], $this->currentDimensions['height'] ); $this->imagecopyresampled( $this->workingImage, $this->oldImage, 0, 0, $sx, $sy, $this->currentDimensions['width'], $this->currentDimensions['height'], $sw, $sh ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; return true; } /** * Rotate an image clockwise or counter clockwise * * @param string $dir Either CW or CCW */ function rotateImage( $dir = 'CW' ) { $angle = ( $dir == 'CW' ) ? 90 : -90; if (function_exists( 'imagerotate' )) { $this->workingImage = imagerotate( $this->oldImage, 360 - $angle, 0 ); // imagerotate() rotates CCW $this->currentDimensions['width'] = imagesx( $this->workingImage ); $this->currentDimensions['height'] = imagesy( $this->workingImage ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; return true; } $this->workingImage = imagecreatetruecolor( $this->currentDimensions['height'], $this->currentDimensions['width'] ); imagealphablending( $this->workingImage, false ); imagesavealpha( $this->workingImage, true ); switch ($angle) { case 90: for ( $x = 0; $x < $this->currentDimensions['width']; $x++ ) { for ( $y = 0; $y < $this->currentDimensions['height']; $y++ ) { if ( !imagecopy( $this->workingImage, $this->oldImage, $this->currentDimensions['height'] - $y - 1, $x, $x, $y, 1, 1 ) ) { return false; } } } break; case -90: for ( $x = 0; $x < $this->currentDimensions['width']; $x++ ) { for ( $y = 0; $y < $this->currentDimensions['height']; $y++ ) { if ( !imagecopy( $this->workingImage, $this->oldImage, $y, $this->currentDimensions['width'] - $x - 1, $x, $y, 1, 1 ) ) { return false; } } } break; default: return false; } $this->currentDimensions['width'] = imagesx( $this->workingImage ); $this->currentDimensions['height'] = imagesy( $this->workingImage ); $this->oldImage = $this->workingImage; $this->newImage = $this->workingImage; return true; } /** * Inverts working image, used by reflection function * * @access private */ function imageFlipVertical() { $x_i = imagesx( $this->workingImage ); $y_i = imagesy( $this->workingImage ); for ($x = 0; $x < $x_i; $x++) { for ($y = 0; $y < $y_i; $y++) { imagecopy( $this->workingImage, $this->workingImage, $x, $y_i - $y - 1, $x, $y, 1, 1 ); } } } /** * Converts hexidecimal color value to rgb values and returns as array/string * * @param string $hex * @param bool $asString * @return array|string */ function hex2rgb( $hex, $asString = false ) { // strip off any leading # if (0 === strpos( $hex, '#' )) { $hex = substr( $hex, 1 ); } elseif (0 === strpos( $hex, '&H' )) { $hex = substr( $hex, 2 ); } // break into hex 3-tuple $cutpoint = ceil( strlen( $hex ) / 2 )-1; $rgb = explode( ':', wordwrap( $hex, $cutpoint, ':', $cutpoint ), 3 ); // convert each tuple to decimal $rgb[0] = ( isset( $rgb[0] ) ? hexdec( $rgb[0] ) : 0 ); $rgb[1] = ( isset( $rgb[1] ) ? hexdec( $rgb[1] ) : 0 ); $rgb[2] = ( isset( $rgb[2] ) ? hexdec( $rgb[2] ) : 0 ); return ( $asString ? "{$rgb[0]} {$rgb[1]} {$rgb[2]}" : $rgb ); } /** * Based on the Watermark function by Marek Malcherek * http://www.malcherek.de * * @param string $color * @param string $wmFont * @param int $wmSize * @param int $wmOpaque */ function watermarkCreateText( $color, $wmFont, $wmSize = 10, $wmOpaque = 90 ) { if ( empty( $this->watermarkText ) ) { return; } if (!$color) { $color = '000000'; } // set font path $wmFontPath = NGGALLERY_ABSPATH . "fonts/" . $wmFont; if ( !is_readable( $wmFontPath )) { return; } // This function requires both the GD library and the FreeType library. if ( !function_exists( 'ImageTTFBBox' ) ) { return; } $TextSize = @ImageTTFBBox( $wmSize, 0, $wmFontPath, $this->watermarkText ) or die; $TextWidth = abs( $TextSize[2] ) + abs( $TextSize[0] ); $TextHeight = abs( $TextSize[7] ) + abs( $TextSize[1] ); // Create Image for Text $this->workingImage = ImageCreateTrueColor( $TextWidth, $TextHeight ); ImageSaveAlpha( $this->workingImage, true ); ImageAlphaBlending( $this->workingImage, false ); $bgText = imagecolorallocatealpha( $this->workingImage, 255, 255, 255, 127 ); imagefill( $this->workingImage, 0, 0, $bgText ); $wmTransp = 127 -( $wmOpaque * 1.27 ); $rgb = $this->hex2rgb( $color, false ); $TextColor = imagecolorallocatealpha( $this->workingImage, $rgb[0], $rgb[1], $rgb[2], $wmTransp ); // Create Text on image imagettftext( $this->workingImage, $wmSize, 0, 0, abs( $TextSize[5] ), $TextColor, $wmFontPath, $this->watermarkText ); $this->watermarkImgPath = $this->workingImage; return; } /** * Modfied Watermark function by Steve Peart * http://parasitehosting.com/ * * @param string $relPOS * @param int $xPOS * @param int $yPOS */ function watermarkImage( $relPOS = 'botRight', $xPOS = 0, $yPOS = 0 ) { // if it's a resource ID take it as watermark text image if (is_resource( $this->watermarkImgPath ) || $this->watermarkImgPath instanceof GdImage) { $this->workingImage = $this->watermarkImgPath; } else { // Would you really want to use anything other than a png? $this->workingImage = @imagecreatefrompng( $this->watermarkImgPath ); // if it's not a valid file die... if (empty( $this->workingImage ) or ( !$this->workingImage )) { return; } } imagealphablending( $this->workingImage, false ); imagesavealpha( $this->workingImage, true ); $sourcefile_width =imageSX( $this->oldImage ); $sourcefile_height =imageSY( $this->oldImage ); $watermarkfile_width =imageSX( $this->workingImage ); $watermarkfile_height =imageSY( $this->workingImage ); switch (substr( $relPOS, 0, 3 )) { case 'top': $dest_y = 0 + $yPOS; break; case 'mid': $dest_y = ( $sourcefile_height / 2 ) - ( $watermarkfile_height / 2 ); break; case 'bot': $dest_y = $sourcefile_height - $watermarkfile_height - $yPOS; break; default: $dest_y = 0; break; } switch (substr( $relPOS, 3 )) { case 'Left': $dest_x = 0 + $xPOS; break; case 'Center': $dest_x = ( $sourcefile_width / 2 ) - ( $watermarkfile_width / 2 ); break; case 'Right': $dest_x = $sourcefile_width - $watermarkfile_width - $xPOS; break; default: $dest_x = 0; break; } // debug // $this->errmsg = 'X '.$dest_x.' Y '.$dest_y; // $this->showErrorImage(); // if a gif, we have to upsample it to a truecolor image if ($this->format == 'GIF') { $tempimage = imagecreatetruecolor( $sourcefile_width, $sourcefile_height ); imagecopy( $tempimage, $this->oldImage, 0, 0, 0, 0, $sourcefile_width, $sourcefile_height ); $this->newImage = $tempimage; } imagecopy( $this->newImage, $this->workingImage, $dest_x, $dest_y, 0, 0, $watermarkfile_width, $watermarkfile_height ); } /** * Modfied imagecopyresampled function to save transparent images * See : http://www.akemapa.com/2008/07/10/php-gd-resize-transparent-image-png-gif/ * * @since 1.9.0 * * @param resource $dst_image * @param resource $src_image * @param int $dst_x * @param int $dst_y * @param int $src_x * @param int $src_y * @param int $dst_w * @param int $dst_h * @param int $src_w * @param int $src_h * @return bool */ function imagecopyresampled( &$dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) { // Check if this image is PNG or GIF, then set if Transparent if ( $this->format == 'GIF' || $this->format == 'PNG') { imagealphablending( $dst_image, false ); imagesavealpha( $dst_image, true ); $transparent = imagecolorallocatealpha( $dst_image, 255, 255, 255, 127 ); imagefilledrectangle( $dst_image, 0, 0, $dst_w, $dst_h, $transparent ); } imagecopyresampled( $dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ); return true; } } lib/tags.php000064400000022747150212476000006772 0ustar00 'ok', 'message' => '', ); if ( trim( str_replace( ',', '', stripslashes( $new ) ) ) == '' ) { $return_value['message'] = __( 'No new tag specified!', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } // String to array $old_tags = explode( ',', $old ); $new_tags = explode( ',', $new ); // Remove empty element and trim $old_tags = array_filter( $old_tags, 'nggtags_delete_empty_element' ); $new_tags = array_filter( $new_tags, 'nggtags_delete_empty_element' ); // If old/new tag are empty => exit ! if ( empty( $old_tags ) || empty( $new_tags ) ) { $return_value['message'] = __( 'No new/old valid tag specified!', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } $counter = 0; if ( count( $old_tags ) == count( $new_tags ) ) { // Rename only foreach ( (array) $old_tags as $i => $old_tag ) { $new_name = $new_tags[$i]; // Get term by name $term = get_term_by( 'name', $old_tag, 'ngg_tag' ); if ( !$term ) { continue; } // Get objects from term ID $objects_id = get_objects_in_term( $term->term_id, 'ngg_tag', array( 'fields' => 'all_with_object_id' ) ); // Delete old term wp_delete_term( $term->term_id, 'ngg_tag' ); // Set objects to new term ! (Append no replace) foreach ( (array) $objects_id as $object_id ) { wp_set_object_terms( $object_id, $new_name, 'ngg_tag', true ); } // Clean cache clean_object_term_cache( $objects_id, 'ngg_tag' ); clean_term_cache( $term->term_id, 'ngg_tag' ); // Increment ++$counter; } if ( $counter == 0 ) { $return_value['message'] = __( 'No tag renamed.', 'nggallery' ); } else { $return_value['message'] = sprintf( __( 'Renamed tag(s) «%1$s» to «%2$s»', 'nggallery' ), $old, $new ); } } elseif ( count( $new_tags ) == 1 ) { // Merge // Set new tag $new_tag = $new_tags[0]; if ( empty( $new_tag ) ) { $return_value['message'] = __( 'No valid new tag.', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } // Get terms ID from old terms names $terms_id = array(); foreach ( (array) $old_tags as $old_tag ) { $term = get_term_by( 'name', addslashes( $old_tag ), 'ngg_tag' ); $terms_id[] = (int) $term->term_id; } // Get objects from terms ID $objects_id = get_objects_in_term( $terms_id, 'ngg_tag', array( 'fields' => 'all_with_object_id' ) ); // No objects ? exit ! if ( !$objects_id ) { $return_value['message'] = __( 'No objects (post/page) found for specified old tags.', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } // Delete old terms foreach ( (array) $terms_id as $term_id ) { wp_delete_term( $term_id, 'ngg_tag' ); } // Set objects to new term ! (Append no replace) foreach ( (array) $objects_id as $object_id ) { wp_set_object_terms( $object_id, $new_tag, 'ngg_tag', true ); ++$counter; } // Test if term is also a category if ( term_exists( $new_tag, 'category' ) ) { // Edit the slug to use the new term $slug = sanitize_title( $new_tag ); self::edit_tag_slug( $new_tag, $slug ); unset( $slug ); } // Clean cache clean_object_term_cache( $objects_id, 'ngg_tag' ); clean_term_cache( $terms_id, 'ngg_tag' ); if ( $counter == 0 ) { $return_value['message'] = __( 'No tag merged.', 'nggallery' ); } else { $return_value['message'] = sprintf( __( 'Merge tag(s) «%1$s» to «%2$s». %3$s objects edited.', 'nggallery' ), $old, $new, $counter ); } } else { // Error $return_value['message'] = sprintf( __( 'Error. Not enough tags provided to rename or merge.', 'nggallery' ), $old ); $return_value['status'] = 'error'; } do_action( 'ngg_manage_tags', $new_tags ); return $return_value; } /** * Delete tags */ static function delete_tags( $delete ) { $return_value = array( 'status' => 'ok', 'message' => '', ); if ( trim( str_replace( ',', '', stripslashes( $delete ) ) ) == '' ) { $return_value['message'] = __( 'No tag specified!', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } // In array + filter $delete_tags = explode( ',', $delete ); $delete_tags = array_filter( $delete_tags, 'nggtags_delete_empty_element' ); // Delete tags $counter = 0; foreach ( (array) $delete_tags as $tag ) { $term = get_term_by( 'name', $tag, 'ngg_tag' ); $term_id = (int) $term->term_id; if ( $term_id != 0 ) { wp_delete_term( $term_id, 'ngg_tag' ); clean_term_cache( $term_id, 'ngg_tag' ); ++$counter; } } if ( $counter == 0 ) { $return_value['message'] = __( 'No tag deleted.', 'nggallery' ); } else { $return_value['message'] = sprintf( __( '%1s tag(s) deleted.', 'nggallery' ), $counter ); } do_action( 'ngg_manage_tags', $delete_tags ); return $return_value; } /** * Edit tag slug given the name of the tag */ static function edit_tag_slug( $names = '', $slugs = '' ) { $return_value = array( 'status' => 'ok', 'message' => '', ); if ( trim( str_replace( ',', '', stripslashes( $slugs ) ) ) == '' ) { $return_value['message'] = __( 'No new slug(s) specified!', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } $match_names = explode( ',', $names ); $new_slugs = explode( ',', $slugs ); $match_names = array_filter( $match_names, 'nggtags_delete_empty_element' ); $new_slugs = array_filter( $new_slugs, 'nggtags_delete_empty_element' ); if ( count( $match_names ) != count( $new_slugs ) ) { $return_value['message'] = __( 'Tags number and slugs number isn\'t the same!', 'nggallery' ); $return_value['status'] = 'error'; return $return_value; } else { $counter = 0; foreach ( (array) $match_names as $i => $match_name ) { // Sanitize slug + Escape $new_slug = sanitize_title( $new_slugs[$i] ); // Get term by name $term = get_term_by( 'name', $match_name, 'ngg_tag' ); if ( !$term ) { continue; } // Increment ++$counter; // Update term wp_update_term( $term->term_id, 'ngg_tag', array( 'slug' => $new_slug ) ); // Clean cache clean_term_cache( $term->term_id, 'ngg_tag' ); } } if ( $counter == 0 ) { $return_value['message'] = __( 'No slug edited.', 'nggallery' ); } else { $return_value['message'] = sprintf( __( '%s slug(s) edited.', 'nggallery' ), $counter ); } return $return_value; } /** * Get a list of the tags used by the images */ static function find_all_tags() { return get_terms( 'ngg_tag', '' ); } /** * */ static function find_tags( $args = '', $skip_cache = false ) { $taxonomy = 'ngg_tag'; if ( $skip_cache == true ) { $terms = get_terms( $taxonomy, $args ); } else { $key = md5( serialize( $args ) ); // Get cache if exist // -- if ( $cache = wp_cache_get( 'ngg_get_tags', 'nggallery' ) ) { if ( isset( $cache[$key] ) ) { return apply_filters( 'get_tags', $cache[$key], $args ); } } // Get tags // -- $terms = get_terms( $taxonomy, $args ); if ( empty( $terms ) ) { return array(); } $cache[$key] = $terms; wp_cache_set( 'ngg_get_tags', $cache, 'nggallery' ); } $terms = apply_filters( 'get_tags', $terms, $args ); return $terms; } /** * Get images corresponding to a list of tags * * nggTags::find_images_for_tags() * * @param mixed $taglist * @param string $mode could be 'ASC', 'DESC' or 'RAND' * * @return array of images */ static function find_images_for_tags( $taglist, $mode = "ASC" ) { // return the images based on the tag global $wpdb; // extract it into a array $taglist = explode( ",", $taglist ); if ( ! is_array( $taglist ) ) { $taglist = array( $taglist ); } $taglist = array_map( 'trim', $taglist ); $new_slugarray = array_map( 'sanitize_title', $taglist ); $sluglist = implode( "', '", $new_slugarray ); // Treat % as a literal in the database, for unicode support $sluglist = str_replace( "%", "%%", $sluglist ); // first get all $term_ids with this tag $term_ids = $wpdb->get_col( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms WHERE slug IN (%s) ORDER BY term_id ASC ", $sluglist ) ); $picids = get_objects_in_term( $term_ids, 'ngg_tag' ); if ( $mode == 'RAND' ) { shuffle( $picids ); } // Now lookup in the database $mapper = \Imagely\NGG\DataMappers\Image::get_instance(); $images = array(); foreach ( $picids as $image_id ) { $images[] = $mapper->find( $image_id ); } if ( 'DESC' == $mode ) { $images = array_reverse( $images ); } return $images; } } /** * trim and remove empty element * * @param string $element * @return null|string */ if (!function_exists( 'nggtags_delete_empty_element' )) { function nggtags_delete_empty_element( $element ) { $element = stripslashes( $element ); $element = trim( $element ); if (!empty( $element )) { return $element; } return null; } } lib/sitemap.php000064400000006633150212476000007472 0ustar00images = $images; // first get the content of the post/page $p = get_post( $post_id ); // Backward check for older images $p->post_content = NextGEN_shortcodes::convert_shortcode( $p->post_content ); // Don't process the images in the normal way remove_all_shortcodes(); // We cannot parse at this point a album, just galleries & single images \Imagely\NGG\Display\Shortcodes::add( 'singlepic', array( &$this, 'add_images' ) ); \Imagely\NGG\Display\Shortcodes::add( 'thumb', array( &$this, 'add_images' ) ); \Imagely\NGG\Display\Shortcodes::add( 'nggallery', array( &$this, 'add_gallery' ) ); \Imagely\NGG\Display\Shortcodes::add( 'imagebrowser', array( &$this, 'add_gallery' ) ); \Imagely\NGG\Display\Shortcodes::add( 'slideshow', array( &$this, 'add_gallery' ) ); // Search now for shortcodes do_shortcode( $p->post_content ); return $this->images; } /** * Parse the gallery/imagebrowser/slideshow shortcode and return all images into an array * * @TODO: replace or remove this function, it's return value isn't even linked to the queries it performs * @param string $atts * @return string */ function add_gallery( $atts ) { global $wpdb; $tmp = shortcode_atts( array( 'id' => 0 ), $atts, 'ngg' ); extract( $tmp ); $gallery_mapper = \Imagely\NGG\DataMappers\Gallery::get_instance(); if (!is_numeric( $id )) { $tmp = $gallery_mapper->select()->where( array( 'name = %s', $id ) )->limit( 1 )->run_query(); if (( $gallery = array_shift( $tmp ) )) { $id = $gallery->{$gallery->id_field}; } else { $id = null; } } if ($id) { $gallery_storage = \Imagely\NGG\DataStorage\Manager::get_instance(); $image_mapper = \Imagely\NGG\DataMappers\Image::get_instance(); foreach ($image_mapper->find_all_for_gallery( $id ) as $image) { $this->images[] = array( 'src' => $gallery_storage->get_image_url( $image ), 'title' => $image->title, 'alt' => $image->alttext, ); } } return ''; } /** * Parse the single image shortcode and return all images into an array * * @param array $atts * @return string */ function add_images( $atts ) { $tmp = shortcode_atts( array( 'id' => 0 ), $atts, 'ngg' ); extract( $tmp ); // make an array out of the ids (for thumbs shortcode)) $pids = explode( ',', $id ); // Some error checks if ( count( $pids ) == 0 ) { return ''; } $images = nggdb::find_images_in_list( $pids ); foreach ($images as $image) { $newimage = array(); $newimage['src'] = $newimage['sc'] = $image->imageURL; if ( !empty( $image->title ) ) { $newimage['title'] = $image->title; } if ( !empty( $image->alttext ) ) { $newimage['alt'] = $image->alttext; } $this->images[] = $newimage; } return ''; } } $nggSitemaps = new nggSitemaps(); lib/media-rss.php000064400000021215150212476000007705 0ustar00\n"; } /** * Get the URL of the general media RSS */ public static function get_mrss_url(): string { return NGGALLERY_URLPATH . 'xml/media-rss.php'; } /** * Get the URL of a gallery media RSS */ public static function get_gallery_mrss_url( $gid, $prev_next = false ): string { return self::get_mrss_url() . '?' . ( 'gid=' . $gid . ( $prev_next ? '&prev_next=true' : '' ) . '&mode=gallery' ); } /** * Get the URL of the media RSS for last pictures */ public static function get_last_pictures_mrss_url( $page = 0, $show = 30 ): string { return self::get_mrss_url() . '?' . ( 'show=' . $show . '&page=' . $page . '&mode=last_pictures' ); } /** * Get the XML node corresponding to the last pictures registered * * @param int $page The current page (defaults to 0) * @param int $show The number of pictures to include in one field (default 30) */ public static function get_last_pictures_mrss( $page = 0, $show = 30 ) { $images = nggdb::find_last_images( $page, $show ); $title = stripslashes( get_option( 'blogname' ) ); $description = stripslashes( get_option( 'blogdescription' ) ); $link = site_url(); $prev_link = ( $page > 0 ) ? self::get_last_pictures_mrss_url( $page-1, $show ) : ''; $next_link = count( $images )!=0 ? self::get_last_pictures_mrss_url( $page+1, $show ) : ''; return self::get_mrss_root_node( $title, $description, $link, $prev_link, $next_link, $images ); } /** * Get the XML node corresponding to a gallery * * @param $gallery (object) The gallery to include in RSS * @param $prev_gallery (object) The previous gallery to link in RSS (null if none) * @param $next_gallery (object) The next gallery to link in RSS (null if none) */ public static function get_gallery_mrss( $gallery, $prev_gallery = null, $next_gallery = null ) { $ngg_options = nggGallery::get_option( 'ngg_options' ); // Set sort order value, if not used (upgrade issue) $ngg_options['galSort'] = ( $ngg_options['galSort'] ) ? $ngg_options['galSort'] : 'pid'; $ngg_options['galSortDir'] = ( $ngg_options['galSortDir'] == 'DESC' ) ? 'DESC' : 'ASC'; $title = stripslashes( \Imagely\NGG\Display\I18N::translate( $gallery->title ) ); $description = stripslashes( \Imagely\NGG\Display\I18N::translate( $gallery->galdesc ) ); $link = self::get_permalink( $gallery->pageid ); $prev_link = ( $prev_gallery != null ) ? self::get_gallery_mrss_url( $prev_gallery->gid, true ) : ''; $next_link = ( $next_gallery != null ) ? self::get_gallery_mrss_url( $next_gallery->gid, true ) : ''; $images = nggdb::get_gallery( $gallery->gid, $ngg_options['galSort'], $ngg_options['galSortDir'] ); return self::get_mrss_root_node( $title, $description, $link, $prev_link, $next_link, $images ); } /** * Get the XML node corresponding to an album * * @param object $album The album to include in RSS */ public static function get_album_mrss( $album ) { $nggdb = new nggdb(); $title = stripslashes( \Imagely\NGG\Display\I18N::translate( $album->name ) ); $description = ''; $link = self::get_permalink( 0 ); $prev_link = ''; $next_link = ''; $images = $nggdb->find_images_in_album( $album->id ); return self::get_mrss_root_node( $title, $description, $link, $prev_link, $next_link, $images ); } /** * Get the XML node */ public static function get_mrss_root_node( $title, $description, $link, $prev_link, $next_link, $images ) { if ($prev_link != '' || $next_link != '') { $out = "\n"; } else { $out = "\n"; } $out .= "\t\n"; $out .= self::get_generator_mrss_node(); $out .= self::get_title_mrss_node( $title ); $out .= self::get_description_mrss_node( $description ); $out .= self::get_link_mrss_node( $link ); if ($prev_link != '' || $next_link != '') { $out .= self::get_self_node( self::get_mrss_url() ); } if ($prev_link!='') { $out .= self::get_previous_link_mrss_node( $prev_link ); } if ($next_link!='') { $out .= self::get_next_link_mrss_node( $next_link ); } foreach ($images as $image) { $out .= self::get_image_mrss_node( $image ); } $out .= "\t\n"; $out .= "\n"; return $out; } /** * Get the XML node */ public static function get_generator_mrss_node( $indent = "\t\t" ) { return $indent . "\n"; } /** * Get the XML node */ public static function get_title_mrss_node( $title, $indent = "\t\t" ) { return $indent . "<title>" . $title . "\n"; } /** * Get the XML node */ public static function get_description_mrss_node( $description, $indent = "\t\t" ) { return $indent . "" . $description . "\n"; } /** * Get the XML node */ public static function get_link_mrss_node( $link, $indent = "\t\t" ) { return $indent . "\n"; } /** * Get the XML node */ public static function get_self_node( $link, $indent = "\t\t" ) { return $indent . "\n"; } /** * Get the XML node */ public static function get_previous_link_mrss_node( $link, $indent = "\t\t" ) { return $indent . "\n"; } /** * Get the XML node */ public static function get_next_link_mrss_node( $link, $indent = "\t\t" ) { return $indent . "