libhtmlparser-java-1.6.20060610/0000755000175000017500000000000010714140240015025 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/readme.txt0000644000175000017500000002123610442554424017042 0ustar tiagotiagoHTMLParser Version 1.6 (Release Build Jun 10, 2006) ********************************************* Contents of the distribution ---------------------------- (i) jar files - lib directory HTML Parser jars: htmlparser.jar, htmllexer.jar, thumbelina.jar and filterbuilder.jar. Also thirdparty jar files sax2.jar and junit.jar. (ii) source code - src.zip Also contains necessary resources, and build file. Unzip this and you should be all set to build the parser from its source. You would need Jakarta Ant installed. (iii) documentation - docs directory (includes javadocs) Point your browser at index.html in the docs directory. (iv) executing scripts - bin directory Batch/script files assume that Java is visible in your path. Most require Java 1.2 (or upwards), except for lexer. (v) license.txt (GNU Lesser General Public License) (vi) this file, readme.txt Changes since Version 1.5 ------------------------- New Functionality ----------------- Support has been added for commonly requested composite tags, P and H1-H6. Definition list tags (dl, dt, dd), are also now included in the standard set of tags recognized by the parser. The FilterBean now has a 'recursive' property to control descent through children when applying filters. The NodeList class is a little more standard now with a remove(node) method. The Node interface has been augmented with get first/last child and get previous/next sibling methods to ease traversing the HTML document. The TextNode class has an added isWhiteSpace method that returns true when it contains no printable characters. NodeTreeWalker, a utility class to traverse a tree of Node objects using either depth-first or breadth-first tree order has been added. An XorFilter has been added to round out our NOT, AND and OR filters, along with new constructors to OrFilter/AndFilter that take an array of NodeFilter's. Deflate encoding is now handled correctly and there is now an option to have the ConnectionManager follow redirections manually so that cookie processing can occur between redirections. There is a new override for toHtml() that avoids issuing generated end tags. Refactoring ----------- Some refactoring to allow the htmllexer jar file to be compiled by gcj. Moved non-JUnit test code to Request For Enhancement (RFE) as attachments, so all the code in the tests package should now compile. Removed all deprecated classes and methods. Bug Fixes --------- #1496863 StringBean collapse() adds extra whitespace #1488951 RemarkNode.toPlainTextString() incorrect behaviour #1467712 Page#getCharset never works #1461473 Relative links starting with ? #1457371 Script tag consumes too much from document being parsed #1445795 return as TextNode when processing jsp #1445309 XML processing instructions are returned as text #1376851 Null-valued cookies cause exception #1375230 some javascript breaks stringbean #1345049 HTMLParser should not terminate a comment with ---> #1344687 A bug when set cookies #1334408 Exception occurs based on string length #1322686 when illegal charset specified #1227213 Particular SCRIPT tags close too late Patches ------- #1436082 Follow redirections with cookie processing #1338534 Support get first/last child, previous/next sibling Requests For Enhancements ------------ #1394144 handle deflate encoding Changes since Version 1.4 ------------------------- New APIs Implement rudimentary sax parser. Currently exposes DOM parser via sax project A new http package is added, the primary class being Connectionmanager which handles proxies, passwords and cookies. Some testing still needed. Also removed some line separator cruft. Added parseCDATA to the Lexer, used in script and style scanners. Note that this is significantly new behaviour that now adheres to appendix B.3.2 Specifying non-HTML data of the HTML reference: http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data Configuration Management Removed the need for the Translate class to be packaged with htmllexer.jar. This results in a lighter weight component. Updated the logo and included the LGPL license. Fixed the Windows batch files. Added optional "classes" property to build.xml. This directory is where class files are put. It defaults to src. To use: ant -Dclasses=classdir where classdir is/will-be a peer directory to src. Fixed various end user experience issues. Refactoring Added static STRICT flag to ScriptScanner to revert to legacy handling of broken ETAGO ( Contributors to HTML Parser

Contributors

 
Derrick Oswald
Software Development Manager
Autodesk Inc.
427 Laurier Avenue West
Suite 500
Ottawa, Ontario, Canada
K1R 7Y2
(613) 755-5065
http://www.autodesk.com
email
Voice : 613.755.5065
On Derrick Oswald

Derrick is the lead programmer and project manager of HTMLParser.

He started using the HTMLParser for an email message application (http://sourceforge.net/projects/connector) when he discovered the javax.swing.text.html.HTMLEditorKit just wouldn't cut it. Since then he has added character set processing functionality and URL connection handling as well as beans for text/link extraction and done some bug fixes.

Derrick has been programming for the last 17 years, and in java since version 1.0 first came out. He is a Sun Certified Developer and proselytizes Java development wherever possible.

Derrick on Canada

To Americans, Canada is the great white north. It's a vast expanse of land with only as many people as California. There is however, a surprising amount of activity in the high tech sector, especially in the capital region where about a million people live.

I love the spring, when I can ride my bike to work, the air is warm and the tap water is still ice cold. It's a great place to bring up kids (I have two) and offers a relaxed multi-lingual culture of fine art, athletics (go Senators!), industry, recreation, education and friendship.

Come and visit one February for Winterlude, but bring your woolly long johns.


Somik Raha
Extreme Programmer & Coach
Industrial Logic Inc.
2583 Cedar Street, Berkeley,
CA USA 94709
http://www.industriallogic.com
http://www.industrialxp.org
Personal Home Page
email
Voice : 510.540.8336
On Somik Raha

Somik was the founder and lead programmer/project manager of HTMLParser since its inception in April 2001 till April 2003. He started the project while he was working at Kizna Corporation, Japan. He is thankful to Kizna for allowing him to open source the parser, as it was not what Kizna was making.

Thereafter, hundreds of people wrote back, asking for modifications, giving design suggestions, bug reports, etc. and making the parser what it is today. The parser is truly a collaborative effort with people from different countries, companies, cultures.

Somik on India

India is a massive multi-cultural nation, home to over a billion people, a hustling and bustling democracy.

India has 27 states, and over 40 languages and dialects. Don't be surprised if you find two Indians communicating with each other in English - for that might be the only common language they share.

Food in India is awesome, with each state having its own cuisine. India's population includes Hindus, Muslims, Christians, Jains, Buddhists, Jews, Parsees and many others. Two famous Indian exports are : Yoga and Software :)


Joshua Kerievsky
Founder, Extreme Programmer & Coach
Industrial Logic Inc.
2583 Cedar Street, Berkeley,
CA USA 94709
http://www.industriallogic.com
http://www.industrialxp.org
email
Voice : 510.540.8336
On Joshua Kerievsky

Joshua drove the refactoring and design-review effort in the parser, which vastly improved the design. He has harvested refactorings from the htmlparser project for his forthcoming book. The visitor approach was introduced by him.

Joshua Kerievsky has been programming professionally since 1987, and is the founder of Industrial Logic, a company specializing in Extreme Programming (XP). Since 1999, Joshua has been coaching and programming on small, large and distributed XP projects and teaching XP to people throughout the world. He is the author of numerous XP and patterns-based articles, simulations and games, including the forthcoming book, Refactoring to Patterns.



Kaarle Kaila
Software Developer - Consult.
Kalenteritie 23 B 4
02200 Espoo, Finland
tel: +358-50-3725844
http://www.kk-software.fi
email
On Kaarle Kaila

Kaarle was one of the first users of the parser. He contributed a critical method - parseParameters(). This method is present today in the HTMLParameterParser class and it picks up all the attributes in a given tag.

This method is surprisingly hard to write - as it handles various kinds of dirty html available, and it has proved to be the single most used method in the parser.

Kaarle has used the parser in the J2EE extranet project at Nokia.

Kaarle on Finland

Finland might today be best known for Nokia but we are not only that. Did you know that according to Forbes magazine the richest (imaginary?) person lives in Finland. Who might that be? Hint: he travels with reindeer and he is most active in christmas time. Perhaps you knew that the reindeer is a common domestic animal in northern Finland (Lapland).

There's about 5 million of us here. We have more than 60 000 lakes and much more small islands both in the lakes and on the seaside. Some of us (like me) have their own island. You can find a picture of my island on my webpage if you look for it. Of course I have a sauna on the island.


Claude Duguay
Arcessa, Inc.
10210 NE Points Drive
Suite 310
Kirkland, WA 98033
http://www.arcessa.com/
email
On Claude Duguay

Claude made very important contributions to the parser, by doing massive scalability tests- bombarding the parser with over 5 million lines of html. The reports from his tests contributed greatly in improving the scalability of the parser.

Claude also contributed greatly to the design of the parser - giving it a professional touch. Some of his important contributions include chained exceptions and the feedback mechanism.

Claude Duguay has developed software for more than 20 years. He is passionate about Java, reads about it incessantly, and writes about it as often as possible.

 


Dhaval Udani
Senior Analyst
M-Line, QPEG
OrbiTech Solutions Ltd.
+91-22-28290019
Extn. 1457
http://www.orbitech.co.in
email

On Dhaval Udani

Dhaval has made many valuable contributions to the parser. He helped stabilize the script scanner, provided numerous bug reports, and contributed the input, select, option and textarea scanners.

He is also responsible for providing standardized end-of-line support - thus making the parser usable across Windows and Linux - which have different conventions for end-of-line characters.

Read Dhaval's article on The Quest for HTMLParser.

I've been passionate about computers from very early on. Started working
with computers very early on, but have been doing serious programming
only in the last 3 years after finishing my bachelors in computer engineering.

I am a pretty recent entrant to Java programming with just
1.5 years of experience on it but have totally fallen in love with it
and have remained involved ever since. The kick you get when a bug comes
up and you have to rack your brains to solve it is a high as none other.



Alberto Nacher
Software Developer - Consultant
Corso Sebastopoli 39,
10134 Torino, Italy
Personal Home Page
email
On Alberto Nacher

I was born in 1972, I'm a computer engineer and I have been working as consultant since 1998.

I've worked with Microsoft VB and VB.NET technologies, with Java technology and Livelink technology (knowledge management and developer enviroment of OpenText company).

My hobbies: travelling, seeing football matches, going out with friends, getting mushrooms, reading and this year also an English course!

Alberto on Italy

Italy is not so important if seen by high technology point of view. The main activities in my country are fashion, car development (FIAT, Ferrari, Alfa Romeo), pasta and food, wines and, of course, the big state companies doing telecommunication systems, electrical distribution, oil distribution. So... If you want to work as programmer you have no relevant software houses to join with and it is better being a technical consultant.

Anyway... If you want to visit Italy, you surely be charmed by the beauty of my country! Venice, Florence, Rome are some of the best towns in the world. But you can also visit Torino (my home town) where you can see the 2nd Egyptian museum in the world.


Dr. Sam Joseph
http://www.neurogrid.com
sam@neurogrid.com

On Sam Joseph

Sam Joseph is the creator of the Neurogrid Project, and uses HTMLParser in the Neurogrid.

Sam gave valuable comments on the design of the HTMLParser - which have been greatly appreciated by many users. The idea of having a toHTML() method was his. Along with the ideas of toPlainString(), ..., supporting meta tags,..

Sam is into the mobile market and consults to several companies in Japan in this field. He also does research projects at Tokyo University.

 

Cédric Rosa
email
Cédric was one of the most prolific testers of the parser, coming up with several bug reports daily. That went a long way toward making the parser really stable.  

Raghavender Srimantula
king_chiru@hotmail.com
Raghav provided the Form and Frame scanners, apart from providing valuable bug reports.  

Roger Sollberger
rrabbit@gmx.ch

Roger provided valuable bug reports, and helped to improve the StringNode parser - making it handle tag characters correctly.

Roger is from Switzerland, and used the parser in his diploma thesis.

 

Allen L. Fogleson
Senior Project Manager Crunchy Technologies
2111 Wilson Boulevard Suite 350
Arlington, Va 22201
http://www.crunchy.com/
EMail : afogleson@crunchytech.com
Voice : (703) 469-2032
Pager : (800) 826-3181

Allen was the first person to write back about the parser - his comments were a source of inspiration for us to go forward and make this a real product.

He contributed the scanners for handling JSP and ASP tags.

 
Annette Doyle
Annette.Doyle@ausinfo.com

Annette has provided bug reports and fixes - particularly in scanning image tags.

 

Nash Tsai
nash@pocketnet.com.tw
Nash helped with optimization and debugging issues.  

Taras Bendik
falcorus@mt.net.mk

Taras has helped with internationalization issues - handling of unicode.

Taras has also helped in testing, providing good bug reports and fixing them.

Taras is from the land of Alexander, the Great - Macedonia.

 


Arnaud Brejeon
Research Engineer
Gentech Corp
http://www.gen.co.jp
arnaud@gen.co.jp

Arnaud Brejeon is a research engineer in the field of Computer Vision, who shares a passion in Java, when he has some free time away from C++.

Arnaud spent valuable sessions pair-programming with Somik on the HTMLTag class- refactoring it - and providing a model of a class which was used for all the other base parsing classes.

 


Joe Ryburn
Technical Director
Lead Router LLC
Office 501-221-8865
Mobile 501-249-5015
http://www.leadrouter.com
joe@leadrouter.com

Joe gave an important suggestion - something that we had overlooked - handling the BASE tag while parsing links. He also submitted valuable bug reports that helped us improve the form and link scanners.  

Rodney S. Foley
email

Rodney made an important contribution to this project. HTMLParser initially used to have a complex mechanism of auto-registering scanners. Rodney first suggested that this should be done away with, as it was confusing.

This single suggestion helped simplify the design of the parser.

Rodney has also kindly offered to register and hold the htmlparser.org domain name and forward traffic to the SourceForge project page.

 

Thanks to Trejkaz Xaoza, Marcus Mattern, Ian Macfarlane, Keiron McCammon, Martin Hudson, Matthew Buckett, Jamie McCrindle, John Derrick, David Andersen, Manuel Polo, Enrico Triolo, Gernot Fricke, Nick Burch, Stephen Harrington, Domenico Lordi, Kamen, John Zook, Cheng Jun, Mazlan Mat, Rob Shields, Wolfgang Germund, Raj Sharma, Robert Kausch, Gordon Deudney, Serge Kruppa, Roger Kjensrud, and Manpreet Singh for suggestions, bug reports and feature ideas.

Thanks to Jon Gillette for the cool new logo.
libhtmlparser-java-1.6.20060610/docs/main.html0000644000175000017500000001446510232746706017617 0ustar tiagotiago HTMLParser Main

HTMLParser

Welcome to the homepage of HTMLParser - a super-fast real-time parser for real-world HTML. What has attracted most developers to HTMLParser has been its simplicity in design, speed and ability to handle streaming real-world html.

The two fundamental use-cases that are handled by the parser are extraction and transformation (the syntheses use-case, where HTML pages are created from scratch, is better handled by other tools closer to the source of data). While prior versions concentrated on data extraction from web pages, Version 1.4 of the HTMLParser has substantial improvements in the area of transforming web pages, with simplified tag creation and editing, and verbatim toHtml() method output.

In general, to use the HTMLParser you will need to be able to write code in the Java programming language. Although some example programs are provided that may be useful as they stand, it's more than likely you will need (or want) to create your own programs or modify the ones provided to match your intended application.

To use the library, you will need to add either the htmllexer.jar or htmlparser.jar to your classpath when compiling and running. The htmllexer.jar provides low level access to generic string, remark and tag nodes on the page in a linear, flat, sequential manner. The htmlparser.jar, which includes the classes found in htmllexer.jar, provides access to a page as a sequence of nested differentiated tags containing string, remark and other tag nodes. So where the output from calls to the lexer nextNode() method might be:

    <html>
    <head>
    <title>
    "Welcome"
    </title>
    </head>
    <body>
    etc...
    
The output from the parser NodeIterator would nest the tags as children of the <html>, <head> and other nodes (here represented by indentation):
    <html>
        <head>
            <title>
                "Welcome"
                </title>
            </head>
        <body>
            etc...
    
The parser attempts to balance opening tags with ending tags to present the structure of the page, while the lexer simply spits out nodes. If your application requires only modest structural knowledge of the page, and is primarily concerned with individual, isolated nodes, you should consider using the lightweight lexer. But if your application requires knowledge of the nested structure of the page, for example processing tables, you will probably want to use the full parser.

Extraction

Extraction encompasses all the information retrieval programs that are not meant to preserve the source page. This covers uses like: There are several facilities in the HTMLParser codebase to help with extraction, including filters, visitors and JavaBeans.

Transformation

Transformation includes all processing where the input and the output are HTML pages. Some examples are: Transformation can occur 'on the fly' when using custom tags in conjunction with the PrototypicalNodeFactory. Or transformation can occur on a list of nodes after extraction using one or more visitors. In either case you will need to output the NodeList returned by the parse() method with the toHtml() method.

The HTML Parser is an open source library released under GNU Lesser General Public License, which basically says you are free to use the library "as is" in other (even proprietary) products, as long as due credit is given to the authors and the source code for the HTMLParser is included or available with the other product. For modified or embedded use, please consult the LGPL license.

SourceForge.net
libhtmlparser-java-1.6.20060610/docs/pics/0000755000175000017500000000000010442553320016720 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/docs/pics/rsf.gif0000644000175000017500000002027610057467124020220 0ustar tiagotiagoGIF89af (/%7+=2,!5(=0!$*#5);0)*!'4'9-!;2$:=3H; P?I;P>&J;'P=5@/7I:6Q>MA MASDVHXFXI SD VH XF ZJ]PMARCTHXFZKRCVHXGYK^P]Q `N `PbTaTfX#MA&TG'^S6NA9UE6\R!cV#eY$i\.gW,eY+k^5cU1h\<`U=dY,mb-sf.ui4la1sf1uh4zm;qf9ti=xmG+E0T+T1D-"F6(J=1S/#V8*V=1b.'e9,f<2s5-u;2L@/KC6JP>XD7[P?f@.gG9jP>uH:uP>LIBGVFF_V\LBYUH]\QBe\ZbUJlcBrgAukOrgNthHxkA{pKzsWmaRukR~mZvlWviMAiSEf]RvMAxTEy[UjdW|`MweT{r^kiadzrtkdzsi|ysAuIvLyUnQvRy^r\|eztz]fclcfhkvuvtx|~nw>7H

LBXI\QMEXK]Q`MdTr^aNeUq\jetg}tkasaiZq]m`tdzh{}Ż!,f@ H TA~ xǏ C7lM(QFp J1W$\8OK,W`fFH&FL;[ZqXjSL Z63]$ӧTbX @WX {&P B^ѢJÄ:t0!BH&劕>c6X @YJvGb 3\*l֭۸o ߾ .|m[٢2իX+yr=[,~U,ܼ &0ex[*! @g- 2eG<5WX`AFxTHH dxg/rliEg 2[a6 a Be ( t=0<  Wؒ8, D9,Xz\ۗ"&dgA-؆,dV !x])+ix[,R唫"0q/ʼnx}c,`&#' jFriT!UhхfiF]^ȚF2/&Xr  9`= ) !}JɊ+,6[2ړ̩U:ir뭒qhLFK[Fˑ g(9VtlAlJ8a ƹ2y.W@@XBS1R` ^{EhdtW FKmb&F _cqHN=mӎ3у -B xB$0aLNG͘bH n4/4^K"pp &dB 4xB #PA騫`;%P@A*TP޾W [JŘRLn\ %@&|>Cٗ#~: @%'==@{*/_?Q `Cx Ȏv`&HZ`38 "07 Yi b{WgZ !^%Ȃ(x>būТ& \U$r[ ⦶(6LCVda nvW]lHXU+l[fLMRz-AmGɠ `ŅCݪ,X!oXK*]mK<)X8 ZP94E9M^`v 2=X @f"a8H dB Zꆦ=eddJ&  Ʒ1>\,hh 9b ]4:g9dc l1r`лRP:wƛ!y΃.zMB`PPq{_w:$}?`U1i`vWjD4P1*J1}j =#nPXc PLb ? H@q4[Ә/1& fXCPTb4 1qCCʠHs/{XȦƦIffc#|bސE2m+{3d&3%ZNL|FxE-O4`IZ3 3*O12$cVO< 4YML5dC8o=JQ#.jf,3@1$S+$ނ*ѝ$5 2r R('ge/#mVZO \it âSw.c}S1" 1O*^(1,1KTP ,np$h -YF%( MTz'pX ePN LpI2%Qaz92R@1[(8)"QRQXe^L ’_25X&bN%R:#QUoRͤ"Z"b*i0^B(S%"X0 @#MTXAQR V, ZRn!aR V@TS` p&@ZPV^8ǑWqb0 Wdp*fU'[nVpe5f%\ng0 @ NEkVj1L8@%SB%Ye\(S U1 #%8;dQ%VY" g8(+汏M"Z 1" a)$8h"R""+ [:4a d="4Y%{!`T0*!o/(`Q5%3R 8J`hd/Z*h 2Yo5ip_+)(,’0ܐS )rPc"t К u+-LV#,Ea7`CeT4dfTC2`R51`q"aT0s +Hւ+q! &!C`RY ;haS  To'%_!^^řD~'&Syk ``W`aӉ[p!!I ca..0]=5c pHz[y)a2/8{Xb碔MF\+ p=,= 8e3H3v$dDU+!5 d1)\3gg/UH DA3fVI^E$FFS#Wbr0c6cx1@608s 0 9`7(7@7C$BTN38jF.s 8€@=)@g=4@xV*`:#7PҠ F`lg:g}BiLbikv= iԃG9;A60 Ckp h;;ê;;֊0e˓8F &0=)PcjuFgٳ;9EJO fnj㯇V:;7lQ 8ƨ=>qږDD>ڳ>C : *0AC;hT@3@s<2 p?S@CB4Aqچm#Dcp F 2#jV;v@?v@S;׶F?oٖ=rGi[BP` ␷EҠ>P>ntq5D34qD=wtrCDzDA`cP sjc Q{sHnFiDrgoG!r>H` pR)p: Wqg : `m$p>K>Ur1 ۻE0 uF+q&`oG:GE#TrݶG 5P@ @ |" ye =6i B; d+ Ku@b {uץd`x6 oAVyvI`1B1IeiW}K| o|$1BAv6ҤJJ`E K 94a2@1z$P)2AL d9x &Lzi|?K(AyԔN*S1S* Ow'}h{aJ4qxA6Ƒ xzz?6z$y{!4kp{56Wywwz;L%ywƚb`u̴tzJc{gn<2D}ozشq&MO O!dWY,` !!GHu~!ы nF"PVۋQtQ!O1Ҕ/(w E'1F(X%Z0mOO5R/Zq57`؃XA HvnOuыPaP򱏵ِT1̝t1pHq,dLQa![PaC*iTXT. |(I<>)x؄P镈dnڧ#7(H1 h`^^"(g$ҥq2&LUNZR%r@P#ͶH !g6[0jU}*G7 ÀoH) ]-!Vጻ%?n I 'q%"\yX@8qAB(5 P;hZAl`^"r^p^EQ{%ɑ0 #LX $XeX>T FEY5Zp+e^A  (OrSE%Y]\)S%m<1YyEH'؝%"5.-8 %)NQ8YY-jő# YZ#Zp,ƒ1ݦi}(gxeW r )HJۂ'I/BpdC_R#+o%p,N,b1Y2"Na']w9Q葈X#}9B)d_c0tٮaF/E%E9eΗsE_c )*Ɉa,BX@/!!..br.2+ ؀pN1 \0_`*\PY"`S`U-lAМ!%7}4nG5+5]h1cLd¢f,Wӕ-_**'Ĉj&Vt,SQK5g\Q3(.\|FYU`DUΟ|z,w*EEkjzxIjLX6eMu2Xm-;ޒ}X74T}a})̶XyMʖmv>N/yo/{lYK4Zմ *V >|E2aFo!H9srsƯKԻP_,"s\i 5JVZL+3.,a-BZS<@Íø &:# 7ȩBt1 C\L &8t zPFpEّ{b 2rC3619X8:+"+`&cv4*,(L/ܐ53BDn%-bKp$V$-$xPc1T{D J))p`F;J#+4ȐU (BqUʁ#`m`VKdN֠|XT+6\Cl 4 nx`0ĠϒAcو {XX;v*  C N%P\; R]%I<V(Wx!J#z prCaat@:{e3[Rj ^`famtƧP2`Mt pJzmlN{c`zФq#[o݆Uh%!7 ZmgНr_Hr p5wđF#p@@OCCA9{Y\`mAx8uW_"ga⏟gh8?T@zp!30!=%i8dvKh>`#_*0I#h5q#(_* 础dj@<B( $R| 8+ I8B9䐆5R@BB ʀ'/xQA\bHE- }!7)p@xBЈ; Q&S ь S` l@ e(CغIE-a ("ѧ;O@1;|`$( H0iP%A`cxȁ>::&21s@>M`fis\n$`5<*>7ANP"MHB%4AUWB׳%$ c{ͮ'<"8ցt' ;libhtmlparser-java-1.6.20060610/docs/pics/dhaval.jpg0000644000175000017500000001333607626317046020704 0ustar tiagotiagoJFIFKKC  !"$"$Cp" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?zi#tA)%'sQ-ް{?K&Q?PlI< ދymII#i˷?J~&eM_IY,n:3#IqD1L}?a?#?Gz-8DXg=.F{k^W^$O埚'vTjZkrܐy>{Tmt EHȷ5 gSxjn2߈yn1(!@AH 9Z`'׵8Nz_~cjۍ5y3v)y9?)ebS:u0.XpH0zs|/ o:)#CnAǽJN[2 z.&L2;)`ǎ/++-a Ewm~xO@ e:epdxSԏJy98|?Қ(}i4S2 r}F M;۾xn~>+r?cӺi_9rqҬ=cE:-[ŪZq8T1UB@޾U0lA9IwytgW#x [MkIq_Uȩ|մw ^`ܹ3^ltT>\ZsrF@˜] "d9Uf_JsJҏO3ʪF6=jqw+/:1ʒw~לxw̓-Bͼc >sMKKCoC#H2|*rOr:SZF5򹧧1%;^1I^HйLfo.ky ~cci 4mh|y e稘_ 5G pG4x'ɺAR^"Dd_HJ} vϦjsE/'1ryIn9}ں 6 .$#qUT_h.[~] m qigomq$AxF =qzI~p^o(ePuc݉iSAGip? <$&{66e\Dw)QֻgմWC!+XㆭH' zȮR H\K,>WS}jR趮rUa>2`b иaIЏݵe(5j)l2[}j8I1dr3]M3;<@<aWh22F{s89ef8a'oƻiI}JLʀy353~v'FGE,&9UWK$,(+ q$'CN27 t><֭[4m* nj_G&e6Hx Obǀzg~B ,- 2uʒ\uVx Ooo xͤfu g\md"82X0}g\_G/58a3C*N#~da?j,h4w8,>fg'$A¥(OW7MZyFhWz> J4;mF;sb4cU~W=Ф>oyՍm(ɂR3ģ;]y,zWZFLDZ,a95MYXJJNًR3@819Tn]0QЛEA"}r:SayZ"F$`ym׿_ONJ&;1@X2}2.KcԜ7u[dV2f!Q;}jWB}gR$<,>|w;t]IJ˶e+c :I&,ě07I=V;]H<D̢8GI>ۧ3&R4K0\Jm7-B \`}쎇8&&r?^RoUbϮ=*F`k0 &:ʍQN`Uwm[hO^_Wxb n+#]-Y~v_u[c ",Mpz?;W$sN|Ǥ%Oo4uybݕ2ryA.YbJ?@5]WɆhPSk УOpd ZЬOZ#t {=:`az :ِ>XnI>@8\v^[TEm;!\)̠Fv>cO!c;6p8cnQĊ!ϧZ$'*r@zpDMqߧ6qF[qqSh+V]ϑ:w'8#;EZZާ5|o@LX؂gpdNr7Il)5H%UW1D?7aʫ-ɮ/<]=%"Kg y@ 9I ~WUQ!WHʰhN6tT/to;ŭV$ ڬ+Y7c*ڦ .FjwvQ.扌 !r7cfFAV3I5/xNmP R&R4[.lFxkSO<:OQE,B(BĝQ$IJ#붯Zzߥx:L>O|S\+F}5T0J7Ι [v$ ʦˡI,3m?䚅˙&+r_O֬_-W$Ү(0UQO6`y')4 Pp|_ܓjR[>~u$GԭRMi>lozz{5iF]j} ɸ,908aKIk[vW+K0xqRrQYFΉЦj];-=4JN럼~^x7JEx̉wcsEpTb"zJ/-ػ9z=(cfLz*\jQ|Uuxm.{l]ͶL8 9rBXkΣièHI q76m*%&RS[m̳}vN?{u eHu#S(5'TNe}Sܟ֊)1(Gbx|'./vle>o NfySQDdՁӌtUiՙq޵U)T +JgyRFn;libhtmlparser-java-1.6.20060610/docs/pics/taiwan.gif0000644000175000017500000000202107626317046020702 0ustar tiagotiagoGIF89a2"  !#."033f3fff3ff̙33ff̙ff333f)sf3ff̙f33333fff|{xzxvzx v D3"3f3ff3۹f3ff333ffff3f̙^Q š P?9Q_afrՂԃٍ̙-"n/$Ø [F s 6;=<>DEGSXcecfv~с؊։הުXx܃ׂ؄̙3 fa_̙f̙f3f3f3f3= ;=:93!"333333fffff33ff̙̻wwwfffdddUUUMMMDDD333""" ,2"@ Ha$H8¡g3j< -II;ɲK)ɜI͛8sI}e̞6Dtgѓ1J}uUsDEr̛*߮~Z ,XjL+K־k*%t(d$7%t!J$xgu[鴩 5[[x0ކ/Jxxơ OU%ȟoL;libhtmlparser-java-1.6.20060610/docs/pics/canada.gif0000644000175000017500000000215107626317046020632 0ustar tiagotiagoGIF89a@"BBBcccsssﵵcc{{ccccccRRJJJJ991111))))11!!91cZ!ֵ11BsRc11cJB9BBcJcZc1sc֌Jք9cֽΜc1Z1kssc֌Ό{cΜ1RƔֵR1Μ֥kcΌZ޽){ƵRRƽcZJB9νkccc1c111cc{k{9Zk)ƥ{RsZk9c!1Z{B1R!1sscc1c111!)sJ1)c91cc1)ZB9sckcRJ猔sc1cc11cc1s1c{Bk19RB)sJkc91s1֜{91cs{1cccޜ9kBRkޔRkBZBc){9R1c91{1!sZkRc)B)s!s1k{{{kskBJkZZcc11ccc1111cskcƽkZ{cBsΜc1c1c{k{JZ9Jޥ{9J省!ksBJ199B19,@"@H*L(Ç#."DFQ@C &I2b%#zL 1  ^:Hǟ@ Jѣ{.$`R=J 2d8i1bY&q`TStpӂgӲ|*)]qν7YlKUH'V+Ů7&Unʂ>,klpާv{KݼHc˞m5_=- )5gAocٸ9izE"O6Op+Lʹ?'(㼌rEg,F]=EނYX~>EqQHm% ;libhtmlparser-java-1.6.20060610/docs/pics/kk.jpg0000644000175000017500000000674607653016552020057 0ustar tiagotiagoJFIFHHC  !"$"$Cmd" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?x2iu4/zG~,_|R*l=8b@JMB=)O֨Gz,vS"ˑvJҽ?<>ӣY$+,1,$Oּլ-Iwljo1[Y\zD#ğ"9斋QGpn/z.yqis-hA!GQpeٍ3ӭzH/\o=b;ˏ]Yscb[X15AS[^jK"<-8JRo+K.y«}GP$&Ǚx~tQEQ%@rz|Un?Q^^M~e~TO^ +I.$0d`IVAx5i4%<5dwOy Ot܅zăzK+#'T5]R-m}vסo-V|?OK&ќOҺoSWϝ]=+Q ۣW藏b.Ln42;]݆;l"PJnA9?ҾZ\E7vN)Pp?tMy=vƲG7g^5>vSӘ),kp1ٮ>sk<?s-JrZJҊ>FD5>wo_z6+ɾ~gNCYz_.~IO^UO!Ke٧]?.C^c'2sYGǥq_tY5AApBO]zI+C*H!R=*F)ML9BZqSvrkfF]ykj%_wMTВ&iF? w|>Yj}1.Ir6{]7G/Y -oKq4n,998ºkI#=f8>C EZ-wESa*Ed=+<#ĺZv/$mrj%BZ$ N:hQg R1j=*%]譹fVԩ,]65o]7r~)[gcr&O ?wio ^Ziq+x]Yo.Bұb鱮Ji5=A"M>rngk3 &r]YF$s޵mL`wOY'b2_A ΦRފob"z]۫G乸-kw. DDn+o &ޟv.;?ʵ|(4 ,\fg+׉ܲ<3[ǵѿmveͻk[j.?cW"m y~iYWF)S唧6~*Wu{~Gm/?=/|mNو"1}r_Ś}DȿRq^〨^:pLm5(OEgȭ1¿ʹ%Un+)ePG3_?N2 f}DDx?hdeӣ$M2NCf}E-1zYJ]O;d(>Elibhtmlparser-java-1.6.20060610/docs/pics/roger.gif0000644000175000017500000002043207626317046020543 0ustar tiagotiagoGIF89adz5+.-26.RiY# S6,_QSK;PPI`UJx  ? -2+{VD')J=    #;!~trkLzEbjbwobm^`{rzmq{vU[ /T{ǂ{ř¨úלٱԻطħçͮνԧҺ  u$  !"?A}wϪ۩ޭĺ !-)199BBJRk{,dz@ HAygo ͳo}ٓp߼}o?~S\ɲe^CCX!H7#Hz=$g˧P(O+/Ydm6Wd}fdC@JpAKYN-e,p` $uAGs a9-O77F>2$B!y?L$Fԓ:$p#h:ȑsad:nqF|QtȢLJ?3j#:?P %C5 `;7?eqY: A9 5 4 4l ",#?MaTx0H@ P 5Ԑ+hnC+O %Z?hDE< @(4a<9S}C-2 /8HK lT0oQ.$0A 9o>9Gϒɡj⦎zЏt(p! }XG$C*a ":];j5ƈ G⠇&A@vQzR ыƘ`E#+:>9@B1"*!x)L%tKLbU1vCP\?"D)Gl1 uxc ЀМXP8 @G8<Sp K\ S*!48pw$, :zH0 @ [ (HC;&a8X8B{bgJd=M@c h`""n<ы>5:fA@m 0V0B(@BQtX 0̡x7$:8-p9` +hA ^a]M/A PD[OPQLT8,|Z@bP@f7(( 9@(ذ B.ه >#QG:8 XJuH?!d X9Av`#(P0jqzQn=#Hm0 Z">L/k:<d8GQ? a5a iHCȠ8p-xq98Ab/BIbJ>5y}A\"]0`L,A m(LSbCЀ!uF%`X63gL8,~ ,>(Z8` ؃XTlB<8 ! aTvq!HEI6C MI1GE`,hh3c,%L &!@Q6!d5zJ!s{Cu Rbe$w#(qCR1rpNp9L)T %xCPTC8ta XV8D9|<_h+T! oa  dB^щ)b x/`%H A۩[&h: (S6" Q=aM3;;9yaR apM;AigtA:pBӄ/ p j@`pN^d sC}c^QO2NtltOu`4 yWsr+1<q%# P@_``@M `y" T` y`Ip` @tYtB} T@ RS@ 0 @WBpy` QhvOTTe Yb0 sEx 0}P!Nt.dP @ ` @V0rfJpzPBJ ap_@  V1d1$$,RPPA` 7e } A]G@byElPPN" r Q@]с0/?@0Cp>fNH c@)0"e JW &i0ႂ q|`a`<@K@  = pc@`@z | _ n%f34Bc,10M Q@CL 1i0pbh@4# ANq#|~pC*[B, \E>R=yh,1 A WHɱ#A  "-8peW @5|EI(QY4BٜI3q#Y3 -p; ; Z@osj_2K0 #g8p85/3\C- t'7st  1P4@_953/Y# sEh1;F$4$gpU2/ -3[Ce0&`6p+:p ś/y1B`i>P:%P5`6a51+*@&`5%<= |c@2K8X-192/3ph%06z7j3$85P3*`&l17 bSEF7@ *`C)01 v3.d"0` "@&@#@ IVfP8cDGrXK f xg`? ) @>@d09#К@غ`$ Kdp<0g9 Z `| }pkÉopeJL#1gE@s;Eepp i}pwk]`i h@]V`KZ`dQMb Lp[d@Y ;d]ae&PFFPFLe` Q.`7|u^n/Q!z.`QP  `n *qM ';&~ 1!A ̤p AQqOpB`K-p̩D5pKPP DfSa3GDp\@ Y\D2jt8pRRzQpGr s O@oOB<9P MA `u"0Pȋ` I\*AnLq0+iQ; @F Fj|(ul,G{MG0P|p,j @ G5ce!4u@אyA}^jv w =VwKj's3wHK!y\ uէDCr ^wtPs vxe`JL?$YY0oa pi ok`"Pdptt oQ a `pn_P fE")dK M p[AD~f|Vtb=ڱJ7 PJ 4vJ<fX4wPeXY Q X~Q$ԁ2d;O` k`l [{L`ۜK!; @F` ԵA:Xp`$ #@#a}4C6Ӕ1TWj`lKjCM$QD733qSfP O0a. yX3ς6DiDsL!Ia(I5$}"H&QzpjPc`1AQ8h{Աp0@WRMpYPf:y <M3BTAYp` Ɛ @ A _Pa>KN} yE W5}֠Mr S˲f8$2T b 0 s zPylOCssuP UV_$#V P Ϟ R0SpMPEM_-K@Owp` qe@ VP' 7USS}@O#fAEH60V@ O` P07N:xlnP%e`Pf  % Xh" 0 шR^[S@U0 R `O;weXB#a g0 ''i9r0W P` 8  @2b@M@eBPLsp PLfaNx@HPY@\L NbS Bd.߅(T1P pC f DD;0 rDtYO\~8pgTPT+,VG\:Xt .E*#灟1! ػ,u$KU0ŐaŊG;y-n&HٳW=E"t3D $n@P2is%]z?{s:?=yO3Xk^"@A $r I0YtCD?\>d=t>c`Si/?VOƘhՎN<`8  İϟw42aVЃ>0 YŏyrI"~;q둧Ɗ^"$`>`'z@ 7 }gTG0`Z¡ŏu =Ȟ9Gy%!B94"XF1ԙ0p |gNI4ѠH=xǞ"F< 2 @vuyod\gW<|Gv211g0@| h@AwgLx'ߐKz|GP`g . ~<+|7^eXi~zY4!jСf! pA Jx1-fWD|3k_Ecjx7 הgk\"' 5NGɟKY|گR@rFYW:I "mĨlzU 1i0?@A'-fOr5G /@IoT|Y-Q[ۯ~$3sF aֳxHj5)EuTX[h:ή?ٹnZ{,t9+1.w}SL{3U'oVO 4|23-5ہ,&A)8yp$@޳xY.,t;Y֔uK?ƓsW?/h?#R+  2tzj 5u #,@̗>Wvy9c#z~W>T'?֊0ڜBQM]J"p>vsFtSk1\ߏS$R J"7}k 5$X>;5-M3.qJ k߭8X=8.y1yqFGpè=7Ɯ="ͅ;+)gČq|E1)+11FJHm[hv=AX3SO͖*1?.;sUXG碟^^.JS=3ᾝw82k~!{ IMogzRG]K<L^.na uKhΠyзH5kXa`c6lk݈g5+<`Smuϸ@k[I5pIlz{Vt`6W* Szg5tvaѝ߄j.澁G ?Q,cݜ~TGD-cSc{u|=Gymg?hdOVGaodѿWXoΠ9zVW-y 9OjE D>\miexjHbkmf{Jie`N뚫sZQӘ( f$60N}i I_حŽJhF>5ǻ$?KgTsMj-HAb"0=)'\u54ǖI})G$m {ԛ/#y8BVJ9yK I>Ԫ0)B'MA0@Uc@A2=ib2NGM7q=G2 Rھ'>ZsnCʎ3Q |4+GXm UڻԮ9 T{/77{sFuf|Hb8?`Έ%̏|N=df}s5<"gҺ`(,1˶+c,2= RV^ZOE3kZWryP" j.>w使 u8u6) $fyI]бXx$s*[oEqBrN]ݬ=zVpFyj=Xh-_MxWo UARttDfQ8/愔3rp[d[9-nH :apgpWy+k6g]̄c! ^F8^0WqyY {4Ϙ8LqNsZb82r8/tBu*r׬!6dh{^_]ҸQ[ֽo<};?u`Xdt%^F!^V> l1KHhZO׆?h8b}L:r[>Jֵc cq:m=zZ1VVҼK8W@4WOGD`zbJ'cɖKH~?uu̼Akiڧ1R#wRk˫)t8i3Ȱ8_v)E sWEp$\p+Er:o,*c|ƄXi2̠cm@7ɨrKX93y9jk4ʉ"eqOWpN)b)Yvlp[BS mGk ݷm*O9GF^^9)w3nJNM{ e*A6޹!Bk 'YH†ǵBjI{Pm ^rl5vYⶻG)TOsnOy߉4+}& 8=E)\3 U}P^x(6Y&I =[XwbE~*ҎT@osXwQx{X`F[\ӡ:nOu$|c35+fpB `FY|:mY9ISd!Ѵ2aV4 ѝΡv@I#\\,H[zcgZB7%O덿M)rU)Tgmzr:]&m_Z0?j>1yxL 4f!#*'nf ֺ^!=GsD}2tHc=+Om3BβBçotia5!<+vx8YJrV]E)]q듊X,МGZ"W5[HMsSk.&!qF*׋W]kK,@9_lV2-m/3Zic~LXOF+F9^k~~4Mg#cO%A#>7cةSW(ӻ,5:ym\G~;A1_8zְ4Uiuʠ:QMX]V>OcTG&[];b!BsZexıݏmlLƤQ&bATƌGaj(U +bn$c[A5ZbG5Mrz>Qhљ!w m߭l9y9/}ٚlrI-) X>1Xև+n%#ItzVDŽ`ܑ :b$?ZJǞ** W|uh ɒG=׎jpMepH%ᇭ{o(_4uln*sדK uZ$nH @^F~G?֊o|&hOXU^WXav M̠ k@ѻ;^,%2aA*k7,G%sZ>)mKGUMܷ5]^ȅVEwCS%bm[RUh.C}}k4T9bBLQ[҈ ~>JQ(d 0G^f"_UNGx@vӥVdns8PjNyjȼHe57~eGe呏ZGv=KWLmpKgsדI˾8چrZiBҵ4K6hͻl5Ϲ,E֚\XmgOb+0kJPe3E2s-z-a nYI#ޅ֦.r{"jFoH;F 2Yݸ&{SlFN95fYpvY(eR_]VK`Uݖ3>ٯT@25n ;(#:.xMXs&RN" T5{؇#sW!\Uzg1jdÄ3=+W?<<=#Moz˸~xFj^n,U+pև+mqmuh*m\jӮO&-O+53̞I~s_Er<}jPݱt79Vd*SZ4yů6Z͕މbxoZQqW$瑓. wNyڍ݃HHS9b I- jV}o\#s:nI,N u;U+GSBk+vKɧ ں/YY7 bƼA{9]txݣeA\/nz8lE ɤkjZjBxM}N#qpkUX^8݉Lyһ)m*Jed k~GC44 ݣ,Wvԕi cWT}6w*~󜞵0iHf,@e#:Ը'ΕFwrf5+n6$J9ǩ^4J$MGݓ?*1Qc#5:\Dd\"2ܰkc30z{洵;2ExXɸaB `R5<3n w19FM#\H *ޭP|OFoD<9Oܒvsz  &}¶1j<>g1r}yS*gvfd~Fy⼾'󝙈 WMވQU(Frn*eiq/{ f˸]"->9YSơVѵ~"С_R%Ԭ~+meNR.[ *j\n٬qּF0[ETLc~`RLR9x,sԪy؊t剙kV[ #~ym*JΡ iʊӞ}Ng4<+bP C>ZS?aBvcOY;l՟YLjʂ{ fw쳃3{}kRf7.f3ZT7.K `yxvpzG2 9cfx#T$=Hc='Psj5L˰+<$,A1{tv,rBO)#ZKb 9 {ܻ'LЦg_2>CdUP+95JrՊиQ[|1j.[sW7{c sǰ5umo2XmҡӓG-z񔬎UdcڄW*`2c'ǭ$gO>)[sMZ ]_lW:;l`IZM׭ n? +? (_RzLQ&0rrM6= wHO6W1]pڛFnձY uV~++Kqr;+h eCS֯ȦKq=+dLjOaLq1׺|[^C̿%5಻%3I+nRO\"jRTIP)b8#圜sjiB1eDWvl=J073!3>I$#pݚAm#esZm20zi溺fbr~bVNZFv$doe2ihuZJvhqZ:ͭZ-%#x횣&\򯙕[iZBwT,nFՉ&DrX` *-VV2e|&PJ'gB0T`t+Knr zNb ӯj6.eϭDhTz^3Wؐ4:} w:-8&[z2ȼ5'UdeVEu$>p_ֹeq|f/-TGiqlk2+#l^fa$FH?"h`cNibi*UaT>ROJz D|j*A_諊v"[mvu-FL Bq50;pIp),T;K}# 2>sޡ?skiݓ%c94#Sc;IjЍ;ԽYQ28 P0$w[mE+B{'_k`Pc|r]8( 1'ʭC0KsQ@H Xq(FS$tmgUڧ!b8e g8< RA!qZmj~`})`{FlqO6>ҿ.i6#* Nij|1j&F.؋EGBcVOSUMcSR?&joQ\xQV'^zU0rIͨGBw)wPoU jf^UE7gv˴Hy Q@#T~\ 9Fo)X#%F'wXbg9u^mڠcϵI bLHރZCԏs;O1Ds}aKd֣ڿi%xpMV' AՁtoZBwv]pj%,/(N#eyo֡U_>MqW M$1OjYbv pM9<<k1)nn@-A8M=Tm!Қzh?2}+Ÿ )M. \` +' $`ҲPq O-XКDY U{܊n5~Oy]tVKSWѱԸAC#>!G_´;Tϐ#_59VmY?q}f >>Z|Qщ_xTNϒg"Xu4ˋ>uZpR1+ u/_Əe'PS* "sJ:/e5S3$Owȩ12)o}SfvWS\0y<_˻)x^aٟz;libhtmlparser-java-1.6.20060610/docs/pics/india.gif0000644000175000017500000000207007626317046020507 0ustar tiagotiagoGIF89a5'f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3wUD"wUD"wUD"ݻwwwUUUDDD""",5'@H*Ç#JH@1.Kݻx}tkTV9S*TT8˭]J\32^-cތSϠCnOz֮OÎ ֕-8bƈw0ԪW ?9#`C=#Ȑ#sý_G3=3_~8{SyI ;libhtmlparser-java-1.6.20060610/docs/pics/arnaud.jpg0000644000175000017500000001234407626317046020715 0ustar tiagotiagoJFIFHHC  !"$"$Cs" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?s~ ח*ـ>sUk;kzn_իKWAgs>#iRԃ0׉ZO1GLךKaYFWBI=x̋\Wo]7f]j$s0۾@=rE2e ]%Jt?m5;X~ xɑ]y)g%Zf.ͩj ) Ey 1 g$tGtO@k9aXj#\?S>ǏεԵmjx=Ƽ*8l!wc>>+e$9&1xGElZg˫jgWMBWPDP$Vƙ#֣94ݎͼ/jQFTܩjzx9$>k_[,_3/\\7OΦVkIqV'E%Ckchv1qG Q${ug$oz)|m;&QG?O2K%xF_eVjտo Tװy( e;Ҭ@p!I(6g +cB.&򀇓Q)(!NUgap +_[%J/(vypMR%Tp#+/t&J>sឲ,׫-i|1ы>+蘴[N@9fa7F':Y~j hLmosn(koI^]ޑu1{ҹMnf t1}+|o-+LFt?>Õ-QÌ qT{VdBWkcS`5'ٺ;Oy|̷7`W?ڊ`y3>NZMgBB8Z^0%z~{"yi\5q$7P^[0rkc zė?d?6s?; {mNX>HK]@pI*tm{@;c:~wWi~mķ3^J>[hOli>ԶMd+Z9$5ŞR:{Ws0} W|[g%9&˫H@ڰF|987G5E&Q41-idj*%eYz5{>[V3Y@ַjտo W{׮1X&-2;v$AFGVPS?xёB7v W][(=}땎]yqU[SugP.%?v1+UeI2yS[*|5Vrn ٳCdEgnyؚrzASIc'W7]-ԫ̻9^'Z|JʟJKNּ f/Lzbkxw,y\g5Y0ASOf` sVuβ'Ik~Ku7 D<)ʮх?unT?3Ƥ38RLgwf#|Ӗ',}?UT 5quҥ𺴳^#,X8z  bFt8tze܏cOQn9Che,;$u!ym$ 8:\W(:]fOo~FI4|cػ/!:~@:F[G,|/gg"V <ӔncsX€qV޻V0^3Z<-oLQS?79x{׺t.0dV+k۴6EK@:=+a.@Ż0 0xuEli$m`?yG?Jmi`)qm,!c[a׵lWj*ۤkp;gTrEqkg(eqhd|g^]O}#+:I"%r3VҡRrı3ȡHdv>\W\P1 \ ͢j 2)V13u#st02"׫ 4]n9J=>j->VӔ\\Y"`_Ztuw[i|9E^yx2lr$2I yݖ0s^cB<NRv|r=oUo $fId`Vܐb׾ Ƨuu>xng)x*k%ykIOҊ*#ػe =˳X8UC=0"[qx7ޢf?<0KƳ72?[>P^Ė[RXк\@ǭRc#Oڪxt?U. "m80+Ӎ=֩ȽE Й_?l^ iJ |?({Yewt٦3T|=44?} #(NRM"kTM^ٱQT߀wdu[xf-JC-Eڷ<Ҵ:Om";q*l3libhtmlparser-java-1.6.20060610/docs/pics/italy.gif0000644000175000017500000000125710041171544020535 0ustar tiagotiagoJFIFHHC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222!2+156At!2qBRS%1q23!4rBQ ?Ip\t.䯶I/ RssY-^ ˛ U;Qа?L?=J$%[.Ydt"J^?Tc h7]8GW!D3ȥ@I0 v-6X)X { Y';ȞD5eIޝ/c; hX]=L=\2fW"CB$%X^ڎ``<)\-fp"yݖM'ztQ-uat0rS1\] DmazCj8EpsC_vY4]F8Յi\ȝw2;dmKn8CiAaGYgO[rY/Ou2=Llibhtmlparser-java-1.6.20060610/docs/pics/finland.gif0000644000175000017500000000207707626317046021045 0ustar tiagotiagoGIF89a:%RRRcccsss{{{ﭜssΜﵵﭭcc焄{{ssccccccJJ991111))))kcc11{cZscRcJR){9ƽ{B!Z!9k9J!s1֥c{RZk9k)Rεέ{Z֌RƔksRޜcZ1c1cZRֽcƜkΜޭ{{RΜc{ZޭkΌ!s9)c{sc{kJckތƄkΜcc111c11B1sJJ!!cBcc)ss9sZsck1Ό9{{!k9Rc{kZ){s{!cksΔccJB9){!csk焔9Z{R1c9sBs9{c)Zޜ֔ΌƄ1Jk9c9{cZ{91{)R1!JB)s筽ޥ){JRc1J1c)s1Ƅs)B!s)kscs!sks{ck{kcccZZ{cccc11{cRkΜsckk)B{ssZkﭵ֔BR)kss{ksks9B!),:%@H*48`@btI Ë0Ǐ C1E+bXR`˄(=\K@ΤɈ2-YȣHv0fǝCތJիD}*ˢ?SvjӔh 3 Z̪Kw)Jhә߿~.tJq,V K˘3k̹g^CL` 2̭Y {㫳JEwŵy߶jsJEN}iQek>K٭%sO|n{9 բ̉?T^;libhtmlparser-java-1.6.20060610/docs/pics/macedonia.gif0000644000175000017500000000233507626317046021347 0ustar tiagotiagoGIF89aA"̙f3f3fff3f333̙3̙̙f̙3̙f3f333̙̙f̙f3fff333wwwwffffff3ffffffff3fff3ffUUUUD3333f3f3ff3f3333f3"w3,A"@H*TÇ6(@bX(b9FǓ(SzԘʗ)I6J 0$M2yJѣH*EZ2"uT9WZ}(*M&+Ulԭ^G6M3j֊9e +ƷK1-ԏ!6l#]'my.G'zW.MiXqEteۀA驐SnPZXa~$mZQ&#fY?Kak T>:N9O 8_:7_-AOOo[ob!O!GUK4`Ǖ_sH2֠C`R@l%FVi 8Jeƀk[I.FOJ2%ZmgJM@iW|mEV^ހ^i\gS~a]Pgu:}WGV&Y}%3qv}]J%v{-| @@;libhtmlparser-java-1.6.20060610/docs/pics/joshua.jpg0000644000175000017500000001017207653016004020717 0ustar tiagotiagoJFIFHHC  !"$"$Cez" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?OmiQl5vqcq?}sTA¼gt߈,BICr Pg$Wgy媿%zK13㞕7{o% ד_;_2br:ׄgRF;Lr c)gJDKk/LN! k?mƞg U*kQҤ= ?4yQ.-A ^m> TxÚ\С RrrNOlՍ[J Y%ʆvղw#zWZ=t9"MSFO^["QҽD!Uc [[iaqkde;PMbk>l5gI9%.}}G^ <+$!;[rըm!cj_ʊ!RTx ܕ r2ӟ׶~MkYH7+G)Wr{׷*i$qޜ 𯨼 Ih˄-kGc(\L>)=(s?ZTݙ5%7ג}'k|VbRU[1GOW%FL>?40:Re{ !|*fQRIYAw%!Di^aW—zh'n|P:2ֻVO $ d -՘O 0r:kg(ρ|5CE\^zv|9cjZ=ֲn`1 ulBUj8kQTKmoml|v_VEp355{p@*+e3Dz悹+Myo`g|.>#>:uG݂fXӼX)MZgl|7"Ꚏygd3{ƟucsJvl4&XC`IZ$laH'+7JldWSD\|W[IqW8O?]6Ed%N⢾}kkDw('={nٵfxmxw,E9|<&WJŔ#d>G*q. CÇo! sZT7h&a';o5&q4> ٰ3׆fmQdxWqmnDRjz1iX)߂U__NőDP"S<JIG TPWӥxū|{~X:d5R=zuZ0`tVS};OǬ_@־z2ekȿ:z *>jgf #<[4~9VVvqQyj^*2<%I.%由-;OTvG{PP7S+\dyi>$W\@o4d]5Ǖ13`?:4lZn5ב7982: 4cs].+ 4Onktف+w/jW/刐bx{%1y#Su Lⴤ7 (e=CZ<ۖr +d`z+BH*, 76Qa}Uno vW1y*U5|\uQHm[[*Nn'ܜ^ZqKvE`|& ڃjR) Ddsg״dzZ[(8~B`+Ǘ潇`i+ƒl쨒J̟xnH/&R%\Wa'99/ŷZo ӭъ7szW4GG,u0.s0 X_^(DG9nR vO ѷ^;j+ڼ'zeJ\V0u#ksktmOzO8 ^yova.#GCjXa@ϵu:F 9}X{oxYA8 z ".2OJQi-&i_M#=Njӳ/"7nޟzIuL nȢh"eqNG*5x_KgMƣOƔ:zƳq6JspŽBZV7v ĩOȄm T2:,>RPޏSJP[iZ>t 8?. ${S#DϮ+߼-P&"E< YE&W#Բ9d=j4Klax~edC:UPepv?W4Dt{׭f>aƯy{ϣ)HA7K"0z^?xTv4YHr1}+ 7c g'CTd̋+ \$={c]錒w[a]<9SUY7ds(-E hyN i%b퟈#a &uT碃ּOǞ)X5.TƧ^8Jl'RF$@wݍ EՅ.3nP+'ʽ ?Qp:TN~;="kKvyt~!xPquRdll7ZDCpΟTM.fw} mfkש[AP?EMܛ]@sیOքE++{ɤȯ^>4w'E;+}jP#-nzm>_^*f.hWרM"z(dkw̉D9]^:xz(+"os,#Ú`T!z()]&m&w?libhtmlparser-java-1.6.20060610/docs/pics/somik.jpg0000644000175000017500000000705407626317046020567 0ustar tiagotiagoJFIFHHC  !"$"$Ce_" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?:(UuH(.> AOh_ZMR$:5? Ůj_ۏYj5omCcӸzSąW]ԉc?NG皙-~5׵'EGk D _Z-Dzy?Kvi_RBW=SOUfXpMm"S#λ0P@5iz2ڼӱ2z1+m~]Dڄ-{6ذ#jz8Ox^-xܻ^LfRGa6ط=saO9u _i)|ASZ8R⣟ffYdg:okKA@@KEmg`s?w1>TktL-Udm9zσDV$H?9'yh:U_ĥU';z}|WgÐmWUIa}`TJ"3\X)FǡҜ*6z65U8DAQky_Y_[Ou(oaHkA}3DƣgnU'HuYgrUG#ܡ3rEۋYn!"-5tap??wtQڋ$2NpzzW_U-ơj;p`GK7JxcȮ}sּs[}Kp? Xnl}Yc1,ܨ~t뱯Y R.$Wס3M6<ݱዻNxOT.VI qh|5P;ӈL)ՌS>#3xVMn/n/a2g5_47jpACNQB% LⷄuVd iu&63m=_i,77WrV}o֓tI2)?7wνᮛ"s"J+}*0[*W)m9o&ZFa.Ej]ǬI9#FB1N5F U%&[}ZpGѬUylx7xIkua,2A2ܽ~lUC v4B(ӹBytK6)aKmʋ(`d}Mjz>]\w)! GG=2sv|;umeA8 t=Edi:ϊI m,ލS׷0G9iPLCJ<%ur0M}3u|?f Jŏ4A^ +>9,d?a]f'i+O~Rnkg)6/3Y7[JҨ'RJ2퐅5| V|@C\@FKkO[x_w5Vu**~֧OSl媚;m'+qgoˀ]~}5<| # ѱU|k:H?Q][G*r76Wd <3~U]j ]#7?){I*cʄZ3 ޲tsk+sCZڝß&0w8G|{׋]yLnm+uuRB$@)UU>A$~&iE={g1)}@Kv_5ηjd2N||̺3wŁ<ۙX^]ME@?EX.zsB+,A{e{++xaXU1~ʪR 84R? D6 t_kF,'~Ϗ+͖oይ}[e".m7A;:ߏQEgjv5e+"<U+ ⮬x]"V)1{}hM>Tyyzeyxj9-?YKr49<libhtmlparser-java-1.6.20060610/docs/pics/derrick.jpg0000644000175000017500000001010507653016006021047 0ustar tiagotiagoJFIFHHC  !"$"$Cea" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?UBmc^\֭@c1]'/gi\f`~i3ڼY7> MrNukrEҶxVGo=+Ҽ=[hKhw^V.\_-G,3š;H폜rzUs;pQ9-~EhoA^ HO'ڻƞāp>#=庻6WJ6&WG;wn:Q/7#\Xp1uX~~!YerTw"D>5˙"YYcMw31}2O&tfN7cR!()M2gKrY 3^Կ&Z]<'u5JOVLc%J_1ķf5ߕ_b\k"eO=>@¨re<eddׅ\\+p6_Ax=_+ʆ+llX[|K[d)2H*3xZyf_IrVe>xkI 4yfqڶ_Yu3 pEtѦUks\C?5]O\⹎ fi7PܼHnɯ[I<gR <^pOEyT:<@)=#|Xn/E1t?QTD5%`2O.hL0; kV񞣽SԆPX`rZ^A ˅c epO@*ivK3/FZ:Pk'W8r¾lШ;nkחsBUA3( V1/ xs_9wYďylӎ UzchNW8.ִ0ܪȫ+n_ 뫓&esn@?@ylÑZR5@g̵{-“OJhJ[/][)6RQGv3w#u֗]I =tQ(ڴW<-Ze5Zɔqځ($8Wxz$vmWp~6s-;ܸ cֺil' >5hSu-';r˙:|x`[Nw4RG!q]St?tn-?Fl{]"cS;5̈VuI{O>FG<+^ygv_exVpUdˮ׻ǶKY^붻67 GS5pNV{񨮵Aa''5#l*ߥhkVwu]bŖ"3$;NYv] ym}F꼳H>YbeRK7c]PSbiՅlOxK+[,`#Xa!硫 TG%@y#o9-K8l|[8uWkW,gmAGUϚO8VAKV]S偘W7P+Ob+<GچwsEJp/By5⚏Mf=bXĦHsQhUqQE|Zr0ož&ƟzyȻcF9xM5Mym[dPᓷ7ʎ<()v87ú$"GnOkxJOoʴLN8gpV8ӍdžF/IЯSd+v[[8!w(#|%.u"ÖfvMOZ(̦r[<\TR:χ%:A$\ }ZqqwC`q9μGA(>/MtU3s9'&FCkί.Ezc(J:tjJSI + EU*libhtmlparser-java-1.6.20060610/docs/pics/swiss.gif0000644000175000017500000000172607626317046020602 0ustar tiagotiagoGIF89a$%!!!111BBBRRRcccsssΜ便猌c11kkccccRRRRJJ119911))!BRcs!1!ƥcZJ)!1skc11c11scZcZccJsBBR{9sc91)ΜZ1c1ΜcBRc)c{Z֌!ZJBcֵsk9{)s9k!Μ1֥1sBΔckRΜεRkckc)sBB9Μ!!cc1c111RR11ccck1ccJRB1cc1c11ΜΜcccc111kZ9{R1sJ9!)B9RB9kc1BBsR{{J1))Rcc{9RZc)c{Z{1Rcckc9Zckscc)cRc1cR1cJcZ{B!R!cZsR{B{9sJZsk9R{9c!1!B{BJZJk){1c1{1!9s!s19R)1J9J!BsJZ19ks!!)cc11ccc11kRc1cB1Bcc1c11c9!)B)1ބksck19,$%@HÇ#2,@pÄ<8ТD?6Pɏ$x+^HpXJ6D-ķo_R"p` <[8o[@JyĈ˘3k|sϗt(,֨^vXIME|sͻ}όxרFp[W%^_J|Xh׺cLM蕏{<˟[:ѝQmťLe8ۀ٧`6~GP  v M[nbPSq=vbMWsyeruǣY'Ўя!xc>d$l0zRQ8 tbW\bDhhrfSlZ&L)|i$ޞQj8d`tbBgn|MP wLfݡWeeGF`AujG!s&RתX#Y BKbꅲAx[p&,;libhtmlparser-java-1.6.20060610/docs/pics/claude.jpg0000644000175000017500000000752607626317046020706 0ustar tiagotiagoJFIFHHC  !"$"$Crd" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?xM9WsRTȸ*NCrh j0j8VIGɫ֖38XВFp*Օw㓏jjp Fƹ[wibH+ʐ'׊T]J{R\bcn:o]=y}(_SNS!ailQHI9}.ev6*Lֵ*ք8'31IXECӐ=joo7G1Ѭλʑdc @R=a#;W{Sx3PcE w< 8}:g{Kc{J5tO-Vz :rϑ:ʣ7 EFFsϹV~|?:JU{\/Z$TF S➅ijhI4“\bm0\+ODڞeݴ09>埑Z2EʫM,rwUeH:U^p1j$Ϡdwym25⿈VZ-Ƨ5Ū ssׄ5cs4dym Y~5$uYo mFlH8]Mǯs}oW ,J [Ϙ@TǑ\!^! dl1+1bp8|6X [,%L񃐬&D~fJ4٣&MP<fR+݊:)]9=z[!3.IpDuP3ٹ\"B,@8M"pHP9 Urrv|7F9}?2U9I<֝$NiiQ{i-08UթLj^3Ҭ)b) ?޹[ FD@=ۜf`>׭𴿯CMWvG_n!3UMV->8dERK[9ʏck+ˋtc$*`@^+O(E}z.o|0&쀏~ W ZsI:aakBQW{{Dw;4GiĒ8yCɋTҴ/jWW qp>6Уp1>%Gs{k2MOF :60U` }H-E^SJ;09mcRSm9$% fIoluwu+i,j[^KxO֥6iaC,#$wc N3\6ZO]bwgcgCZ:<4xCZdZU"ssƽPE Z)<#z+=]Ơu9'xPst݂pHEag=kZuR_mQ;Jgm"WEeXŧ'Ӌ@%* '`~FA].lUcNr&?Zt:?{%f~ ̼\yǪ;hS[C*Dl`1z'$ WkyZXi^αCs^3Zח-3a+SUJsR+.lj>.㵷K+xaX2zns%I9,*  xIQDxE3QEnQE'5qðGOs|9 =C&l,}k57QEiO^R_QE#?libhtmlparser-java-1.6.20060610/docs/samples.html0000644000175000017500000001152710224725642020330 0ustar tiagotiago Sample Programs

Sample Programs

The example programs included with the HTML Parser distribution are listed below, with some details.

Note: On unix systems if you used the Java jar command or some older unzip utility to extract the distribution zip file, the executable flag will not have been preserved on the files in the bin directory. You can fix this by issuing the following command:

    chmod u+x bin/*
    

Parser
Parse a web page and print the tags in a simple loop.
org.htmlparser.Parser.main(String[] args)
    bin/parser http://website_url [tag_name]
    where tag_name is an optional tag name to be used as a filter, i.e.
        A - Show only the link tags extracted from the document
        IMG - Show only the image tags extracted from the document
        TITLE - Extract the title from the document
    NOTE: this is also the default program for the htmlparser.jar, so the above could be:
    java -jar lib/htmlparser.jar http://website_url [tag_name]
    
Lexer
Print the low level nodes of a web page.
org.htmlparser.lexer.Lexer
    bin/lexer http://website_url
    
Filter Builder
Interactively generate source code to extract web site contents.
org.htmlparser.parserapplications.filterbuilder.FilterBuilder
    bin/filterbuilder
    
Link Extractor
Extract links/mail addresses from a web page.
org.htmlparser.parserapplications.LinkExtractor
    bin/linkextractor http://website_url [-maillinks]
    the optional -maillinks argument causes mailto: links to be printed
    
String Extractor
Extract text from a web page.
org.htmlparser.parserapplications.StringExtractor
    bin/stringextractor http://website_url [-links]
    the optional -links argument causes hyperlinks to be shown within the text
    
Site Capturer
Save a web site locally.
org.htmlparser.parserapplications.SiteCapturer
    bin/sitecapturer http://source_website /target_directory/ [true|false]
    the optional boolean argument determines whether resources such as images,
    audio and video are to be captured
    
Thumbelina
View images behind thumbnails.
org.htmlparser.lexerapplications.thumbelina.Thumbelina
    bin/thumbelina [http://starting_website]
    
BeanyBaby
Parser Java Bean demo.
org.htmlparser.beans.BeanyBaby
    bin/beanybaby [http://starting_website]
    
Translate
Numeric character reference and character entity reference to unicode codec.
org.htmlparser.util.Translate
    bin/translate [-encode] <input_file >output_file
    
libhtmlparser-java-1.6.20060610/docs/changes.txt0000644000175000017500000015706010442551424020147 0ustar tiagotiago******************************************************************************* * Developers * * * * Do not update this change log manually. * * Instead, make your commit messages informative, and these will be harvested * * at integration time by the cvs2cl.pl script and added here. * * For details on this script see: * * http://www.red-bean.com/cvs2cl/ * * * * For guidelines on what to put in commit messages see: * * http://www.red-bean.com/cvs2cl/changelogs.html * * * * This file has been trimmed of changes prior to version 1.4. For access to * * earlier change histories, please consult htmlparser.cvs.sorceforge.net. * * * ******************************************************************************* Release Build 1.6 - 20060610 -------------------------------- 2006-06-10 10:39 derrickoswald * docs/faq.html: add faq to docs 2006-06-05 19:53 derrickoswald * src/org/htmlparser/tests/InstanceofPerformanceTest.java: Remove InstanceofPerformanceTest, no longer needed. 2006-06-04 15:17 derrickoswald * src/org/htmlparser/tests/AllTests.java, src/org/htmlparser/tests/ParserTest.java, src/org/htmlparser/tests/tagTests/BodyTagTest.java, src/org/htmlparser/tests/tagTests/FormTagTest.java, src/org/htmlparser/tests/tagTests/LabelTagTest.java, src/org/htmlparser/tests/tagTests/LinkTagTest.java, src/org/htmlparser/tests/tagTests/ObjectCollectionTest.java, build.xml, src/org/htmlparser/Parser.java, src/org/htmlparser/StringNodeFactory.java, src/org/htmlparser/Tag.java, src/org/htmlparser/tests/lexerTests/TagTests.java, src/org/htmlparser/tests/scannersTests/ScriptScannerTest.java, src/org/htmlparser/util/LinkProcessor.java, src/org/htmlparser/util/SpecialHashtable.java, src/org/htmlparser/util/Translate.java, src/org/htmlparser/nodes/TagNode.java, src/org/htmlparser/tags/LinkTag.java: Eliminate deprecated classes and methods. Removed nodeDecorator package, StringNodeFactory, LinkProcesor, SpecialHashTable, and methods for linkData, non-Ex Attributes and FindAllNodesThatAre. 2006-06-01 23:14 derrickoswald * src/org/htmlparser/: Parser.java, lexer/Lexer.java, util/NodeTreeWalker.java: Fix Javadoc warnings. 2006-06-01 22:43 derrickoswald * src/org/htmlparser/: http/ConnectionManager.java, lexer/Page.java: implement RFE #1394144 handle deflate encoding InflaterInputStream needed an additional Inflater argument. 2006-06-01 21:48 derrickoswald * src/org/htmlparser/: http/ConnectionManager.java, http/HttpHeader.java, Parser.java: implement RFE #1436082 Follow redirections with cookie processing Use ConnectionManager.setRedirectionProcessingEnabled(true). Probably only useful if combined with ConnectionManager.setCookieProcessingEnabled(true). 2006-05-30 22:10 derrickoswald * src/org/htmlparser/: tests/utilTests/NodeListTest.java, Node.java, nodes/AbstractNode.java, nodes/RemarkNode.java, nodes/TagNode.java, nodes/TextNode.java, tags/CompositeTag.java, tags/ScriptTag.java, util/NodeList.java: implement task #93148 toHtml(boolean verbatim) To avoid printing generated end tags use toHtml(true). 2006-05-29 23:11 derrickoswald * src/org/htmlparser/Parser.java: Update javadoc for new Parser constructor behaviour. 2006-05-29 22:53 derrickoswald * src/org/htmlparser/Parser.java: Allow passing HTML in the Parser constructor. So now it allows HTML, a URL or a file name. 2006-05-29 21:30 derrickoswald * src/org/htmlparser/http/ConnectionManager.java: Handle bad cookie names. Traps cookie name problems, but ignores any following cookies. 2006-05-29 21:07 derrickoswald * src/org/htmlparser/: beans/StringBean.java, tests/utilTests/BeanTest.java: fix bug#1496863 StringBean collapse() adds extra whitespace Keep collapsing state machine state as member variable. Integration Build 1.6 - 20060527 -------------------------------- 2006-05-27 10:36 derrickoswald * src/org/htmlparser/: scanners/ScriptScanner.java, tests/scannersTests/ScriptScannerTest.java: fix bug #1457371 Script tag consumes too much from document being parsed The default for ScriptScanner.STRICT was set to true. If you want the older, more lax, script parsing, set it to false. 2006-05-27 10:03 derrickoswald * src/org/htmlparser/: nodes/RemarkNode.java, tests/tagTests/FormTagTest.java: fix bug #1488951 RemarkNode.toPlainTextString() incorrect behaviour RemarkNode.toPlainTextString() now always returns an empty string if you want the remark text use getText() 2006-05-27 10:02 derrickoswald * src/org/htmlparser/: lexer/Lexer.java, tests/FunctionalTests.java, tests/lexerTests/LexerTests.java, tests/parserHelperTests/RemarkNodeParserTest.java: fix bug #1345049 HTMLParser should not terminate a comment with ---> add static STRICT_REMARKS to Lexer class, which when true follows the specification for remarks 2006-05-16 05:14 ian_macfarlane * src/org/htmlparser/filters/: AndFilter.java, OrFilter.java: Incorrect grammar in javadoc. Changed [it's] to [its]. 2006-05-16 05:11 ian_macfarlane * src/org/htmlparser/filters/XorFilter.java: New class that does XOR logic (to round out our NOT, AND and OR filters). 2006-05-16 03:58 ian_macfarlane * src/org/htmlparser/filters/: AndFilter.java, OrFilter.java: Added constructors to OrFilter/AndFilter that take an array of NodeFilter's. 2006-04-24 18:12 derrickoswald * src/org/htmlparser/Parser.java: Fix incorrect example. 2006-04-23 07:59 derrickoswald * src/org/htmlparser/tags/TableHeader.java: Change copyright as per request by P.I.M. Schrama 2006-04-17 20:08 derrickoswald * src/org/htmlparser/tests/: lexerTests/KitTest.java, PerformanceTest.java: Move non-junit test code to Request For Enhancement (RFE) as attachments. 2006-04-17 19:45 derrickoswald * src/org/htmlparser/tests/: ParserTestCase.java, PerformanceTest.java: Fix unit tests. 2006-04-17 09:53 derrickoswald * src/org/htmlparser/tests/: ParserTest.java, lexerTests/LexerTests.java, tagTests/InputTagTest.java, tagTests/TableTagTest.java, utilTests/CharacterTranslationTest.java: Fix unit tests. Move failing test cases to downloads on corresponding RFE artifacts. 2006-04-17 09:51 derrickoswald * bin/: translate.cmd, beanybaby.cmd, filterbuilder.cmd, lexer.cmd, linkextractor.cmd, parser.cmd, sitecapturer.cmd, stringextractor.cmd, thumbelina.cmd: Allow execution from directory name containing spaces on Windows. 2006-04-14 18:18 derrickoswald * build.xml, src/org/htmlparser/Parser.java, src/org/htmlparser/http/ConnectionManager.java, src/org/htmlparser/lexer/Lexer.java, src/org/htmlparser/util/NodeList.java: Cleanup to isolate htmllexer jar build. 2006-04-11 08:03 derrickoswald * src/org/htmlparser/tests/: AllTests.java, MemoryTest.java: Move failing unit test to RFE as a download. 2006-04-10 17:38 derrickoswald * src/org/htmlparser/lexer/Page.java: Fix Bug #1467712 Page#getCharset never works Use Content-Type header field instead of connection's getContentType method. 2006-04-08 09:33 derrickoswald * src/org/htmlparser/tests/utilTests/CharacterTranslationTest.java: Typo. 2006-04-06 20:58 derrickoswald * src/org/htmlparser/: lexer/Page.java, tests/lexerTests/PageTests.java: Fix Bug #1461473 Relative links starting with ? Added overloaded methods taking boolean 'strict' flag on URL manipulators. Default is loose interpretation like most browsers. Integration Build 1.6 - 20060319 -------------------------------- 2006-03-19 19:02 derrickoswald * src/org/htmlparser/tests/tagTests/BodyTagTest.java: Fix unit test for body tag. 2006-03-19 17:13 derrickoswald * docs/panel.html: Fix name of current build. 2006-03-19 17:03 derrickoswald * build.xml, docs/bug.html, docs/panel.html: Fix bug #1363500 http://htmlparser.sourceforge.net/bug.html is wrong Take down the wiki. 2006-03-19 16:26 derrickoswald * src/org/htmlparser/: lexer/Lexer.java, tags/BodyTag.java: Fix bug #1375230 some javascript breaks stringbean Retrace non-conforming end of remark. 2006-03-19 15:14 derrickoswald * src/org/htmlparser/http/: ConnectionManager.java, Cookie.java: Fix bug #1376851 Null-valued cookies cause exception Add handling for namewless cookies. 2006-03-19 13:40 derrickoswald * src/org/htmlparser/http/ConnectionManager.java: Remove deflate option from default request properties. See RFE #1394144 handle deflate encoding. 2006-03-19 12:09 derrickoswald * src/org/htmlparser/lexer/Page.java: Typo. 2006-03-19 11:11 derrickoswald * src/org/htmlparser/lexer/Lexer.java: Fix bug #1445795 return as TextNode when processing jsp Handle single and double line comments within jsp nodes. Suggested alteration to handle jsp tags within tag attributes wasn't implemented. 2006-03-19 10:01 derrickoswald * docs/contributors.html, src/org/htmlparser/PrototypicalNodeFactory.java, src/org/htmlparser/lexer/Lexer.java, src/org/htmlparser/tags/ProcessingInstructionTag.java, src/org/htmlparser/tests/lexerTests/LexerTests.java: Incorporated patch #1450095 Fix for Bug 1445309 from Trejkaz Xaoza. Addition of code to parse XML processing instructions. 2006-02-13 09:50 ian_macfarlane * src/org/htmlparser/util/NodeTreeWalker.java: A utility class to traverse a tree of Node objects using either depth-first or breadth-first tree traversal. Kind of like a NodeIterator for DOM-type trees of Nodes instead of linear sequences of Nodes. Post to the dev mailing list about this on the way. 2005-11-14 21:09 derrickoswald * src/org/htmlparser/: Attribute.java, Node.java, Parser.java, PrototypicalNodeFactory.java, Remark.java, StringNodeFactory.java, Tag.java, Text.java: Fix warnings flagged by doccheck. 2005-11-12 11:44 derrickoswald * src/org/htmlparser/tests/: lexerTests/LexerTests.java, tagTests/FormTagTest.java, tagTests/LinkTagTest.java: Update tests for addition of Paragraph tag. Integration Build 1.6 - 20051112 -------------------------------- 2005-11-12 09:19 derrickoswald * src/org/htmlparser/http/ConnectionManager.java, docs/contributors.html, src/org/htmlparser/PrototypicalNodeFactory.java: Add cookie processing changes suggested by Marcus Mattern. 2005-11-04 10:49 ian_macfarlane * src/org/htmlparser/nodes/TextNode.java: Add method isWhiteSpace to TextNode that returns if the node is nothing but white space (or null) or if it contains some characters. 2005-11-01 03:55 ian_macfarlane * src/org/htmlparser/nodeDecorators/AbstractNodeDecorator.java: Add methods first/last child previous/next sibling added to AbstractNode. This is required to enable the project to compile. 2005-10-31 11:26 ian_macfarlane * src/org/htmlparser/: PrototypicalNodeFactory.java, tags/DefinitionList.java, tags/DefinitionListBullet.java, tags/HeadingTag.java, tags/ParagraphTag.java, tags/TableColumn.java, tags/TableHeader.java, tags/TableRow.java: Added support for P and h1-h6 tags. Added support for definition list tags (dl, dt, dd). Let table row/column tags know when to close if encounter TBODY/TFOOT/THEAD. 2005-10-26 18:01 derrickoswald * docs/contributors.html, src/org/htmlparser/Node.java, src/org/htmlparser/nodes/AbstractNode.java: Incorporate patch #1338534 Support get first/last child, previous/next sibling from Ian Macfarlane. No unit tests. 2005-10-24 22:06 derrickoswald * src/org/htmlparser/: lexer/Page.java, tags/MetaTag.java: Fix bug 1322686 when illegal charset specified Use current source charset as the default if there is already a source. 2005-10-24 21:26 derrickoswald * src/org/htmlparser/lexer/InputStreamSource.java: Fixed bug #1334408 Exception occurs based on string length Changed >= test to > to avoid off-by-one error. 2005-09-25 21:01 derrickoswald * build.xml: Fix htmlparser target. Integration Build 1.6 - 20050925 -------------------------------- 2005-09-18 22:35 derrickoswald * docs/contributors.html, src/org/htmlparser/lexer/InputStreamSource.java, src/org/htmlparser/lexer/Lexer.java, src/org/htmlparser/tests/lexerTests/LexerTests.java: Apply patch #1247128 Bug Fix: #1227213 Particular SCRIPT tags close too late from Keiron McCammon. 2005-09-18 19:40 derrickoswald * docs/contributors.html, src/org/htmlparser/beans/FilterBean.java, src/org/htmlparser/filters/LinkRegexFilter.java: Add recursive property on FilterBean suggested by Martin Hudson. 2005-09-18 19:00 derrickoswald * docs/contributors.html, src/org/htmlparser/tests/utilTests/NodeListTest.java, src/org/htmlparser/util/NodeList.java: Add remove(Node) method and code suggested by Matthew Buckett. 2005-06-19 21:56 derrickoswald * src/org/htmlparser/: http/ConnectionManager.java, lexer/Lexer.java, lexer/Page.java, lexer/Stream.java, tags/CompositeTag.java: Optimizations suggested by profiling. Correction to previous drop: -- use extractAllNodesThatmatch to replace searchFor(cls) -- 2005-06-19 08:01 derrickoswald * build.xml, src/org/htmlparser/Parser.java, src/org/htmlparser/http/ConnectionManager.java, src/org/htmlparser/http/HttpHeader.java, src/org/htmlparser/http/package.html, src/org/htmlparser/util/NodeList.java: Changes to allow compilation of htmllexer.jar by gcj. Move non-JDK1.1 functionality to HttpHeader class. Unhook NodeList from filters by removing searchFor(cls) - use keepAllNodesThatMatch(new NodeClassFilter(cls)) instead. Include classes missing from closure set. Release Build 1.5 - 20050614 -------------------------------- 2005-05-15 07:49 derrickoswald * resources/htmlparser_checks.xml, src/org/htmlparser/Attribute.java, src/org/htmlparser/NodeFactory.java, src/org/htmlparser/NodeFilter.java, src/org/htmlparser/Remark.java, src/org/htmlparser/Tag.java, src/org/htmlparser/Text.java, src/org/htmlparser/beans/BeanyBaby.java, src/org/htmlparser/beans/FilterBean.java, src/org/htmlparser/beans/HTMLLinkBean.java, src/org/htmlparser/beans/HTMLTextBean.java, src/org/htmlparser/beans/LinkBean.java, src/org/htmlparser/beans/StringBean.java, src/org/htmlparser/filters/CssSelectorNodeFilter.java, src/org/htmlparser/filters/HasAttributeFilter.java, src/org/htmlparser/filters/HasChildFilter.java, src/org/htmlparser/filters/HasParentFilter.java, src/org/htmlparser/filters/HasSiblingFilter.java, src/org/htmlparser/filters/IsEqualFilter.java, src/org/htmlparser/filters/LinkRegexFilter.java, src/org/htmlparser/filters/LinkStringFilter.java, src/org/htmlparser/filters/NodeClassFilter.java, src/org/htmlparser/filters/NotFilter.java, src/org/htmlparser/filters/OrFilter.java, src/org/htmlparser/filters/RegexFilter.java, src/org/htmlparser/filters/StringFilter.java, src/org/htmlparser/filters/TagNameFilter.java, src/org/htmlparser/http/ConnectionManager.java, src/org/htmlparser/http/Cookie.java, src/org/htmlparser/lexer/Cursor.java, src/org/htmlparser/lexer/InputStreamSource.java, src/org/htmlparser/lexer/Lexer.java, src/org/htmlparser/lexer/Page.java, src/org/htmlparser/lexer/PageAttribute.java, src/org/htmlparser/lexer/PageIndex.java, src/org/htmlparser/lexer/Source.java, src/org/htmlparser/lexer/Stream.java, src/org/htmlparser/lexer/StringSource.java, src/org/htmlparser/scanners/ScriptDecoder.java, src/org/htmlparser/tests/lexerTests/KitTest.java, src/org/htmlparser/tests/lexerTests/LexerTests.java, src/org/htmlparser/tests/lexerTests/PageTests.java, src/org/htmlparser/tests/lexerTests/TagTests.java, src/org/htmlparser/tests/tagTests/InputTagTest.java, src/org/htmlparser/tests/utilTests/SortTest.java, src/org/htmlparser/util/ParserUtils.java: Documentation revamp part four. Remove some checkstyle warnings. 2005-05-13 06:44 derrickoswald * docs/contributors.html, src/org/htmlparser/sax/XMLReader.java: Add parse(InputSource) suggested by Jamie McCrindle. 2005-05-10 18:11 derrickoswald * src/org/htmlparser/tests/tagTests/SelectTagTest.java: Remove Shamil's email address. 2005-04-24 13:48 derrickoswald * build.xml, docs/main.html, lib/checkstyle-all-3.1.jar, lib/fit.jar, resources/htmlparser_checks.xml, src/doc-files/building.html, src/doc-files/overview.html, src/doc-files/using.html, src/org/htmlparser/Node.java, src/org/htmlparser/Parser.java, src/org/htmlparser/PrototypicalNodeFactory.java, src/org/htmlparser/tags/package.html, src/org/htmlparser/tests/ParserTest.java, src/org/htmlparser/visitors/NodeVisitor.java: Documentation revamp part three. Reworked some JavaDoc descriptions. Added "HTML Parser for dummies" introductory text. Removed checkstyle.jar and fit.jar (and it's cruft). 2005-04-12 07:27 derrickoswald * src/org/htmlparser/: Attribute.java, beans/package.html, lexer/Cursor.java, lexer/InputStreamSource.java, lexer/Lexer.java, lexer/Page.java, lexer/PageAttribute.java, lexer/Source.java, lexer/Stream.java, lexer/StringSource.java, lexer/package.html, lexerapplications/thumbelina/PicturePanel.java, parserapplications/LinkExtractor.java, parserapplications/SiteCapturer.java, parserapplications/StringExtractor.java, parserapplications/WikiCapturer.java, parserapplications/package.html, parserapplications/filterbuilder/Filter.java, parserapplications/filterbuilder/FilterBuilder.java, parserapplications/filterbuilder/HtmlTreeCellRenderer.java, parserapplications/filterbuilder/HtmlTreeModel.java, parserapplications/filterbuilder/SubFilterList.java, parserapplications/filterbuilder/layouts/NullLayoutManager.java, parserapplications/filterbuilder/layouts/VerticalLayoutManager.java, parserapplications/filterbuilder/wrappers/AndFilterWrapper.java, parserapplications/filterbuilder/wrappers/HasAttributeFilterWrapper.java, parserapplications/filterbuilder/wrappers/HasChildFilterWrapper.java, parserapplications/filterbuilder/wrappers/HasParentFilterWrapper.java, parserapplications/filterbuilder/wrappers/HasSiblingFilterWrapper.java, parserapplications/filterbuilder/wrappers/NodeClassFilterWrapper.java, parserapplications/filterbuilder/wrappers/NotFilterWrapper.java, parserapplications/filterbuilder/wrappers/OrFilterWrapper.java, parserapplications/filterbuilder/wrappers/RegexFilterWrapper.java, parserapplications/filterbuilder/wrappers/StringFilterWrapper.java, parserapplications/filterbuilder/wrappers/TagNameFilterWrapper.java, sax/Feedback.java, sax/XMLReader.java: Documentation revamp part two. 2005-04-10 19:20 derrickoswald * bin/beanybaby.bat, bin/beanybaby.cmd, bin/filterbuilder.bat, bin/filterbuilder.cmd, bin/lexer.bat, bin/lexer.cmd, bin/linkextractor.bat, bin/linkextractor.cmd, bin/parser.bat, bin/parser.cmd, bin/sitecapturer, bin/sitecapturer.cmd, bin/stringextractor.bat, bin/stringextractor.cmd, bin/thumbelina.bat, bin/thumbelina.cmd, bin/translate.bat, bin/translate.cmd, src/org/htmlparser/Attribute.java, src/org/htmlparser/Node.java, src/org/htmlparser/NodeFactory.java, src/org/htmlparser/PrototypicalNodeFactory.java, src/org/htmlparser/Remark.java, src/org/htmlparser/StringNodeFactory.java, src/org/htmlparser/Tag.java, src/org/htmlparser/Text.java, src/org/htmlparser/beans/BeanyBaby.java, src/org/htmlparser/beans/FilterBean.java, src/org/htmlparser/beans/HTMLLinkBean.java, src/org/htmlparser/beans/HTMLTextBean.java, src/org/htmlparser/beans/LinkBean.java, src/org/htmlparser/beans/StringBean.java, src/org/htmlparser/beans/package.html, src/org/htmlparser/filters/AndFilter.java, src/org/htmlparser/filters/CssSelectorNodeFilter.java, src/org/htmlparser/filters/HasAttributeFilter.java, src/org/htmlparser/filters/HasChildFilter.java, src/org/htmlparser/filters/HasParentFilter.java, src/org/htmlparser/filters/HasSiblingFilter.java, src/org/htmlparser/filters/LinkRegexFilter.java, src/org/htmlparser/filters/LinkStringFilter.java, src/org/htmlparser/filters/NodeClassFilter.java, src/org/htmlparser/filters/NotFilter.java, src/org/htmlparser/filters/OrFilter.java, src/org/htmlparser/filters/RegexFilter.java, src/org/htmlparser/filters/TagNameFilter.java, src/org/htmlparser/http/ConnectionManager.java, src/org/htmlparser/http/ConnectionMonitor.java, src/org/htmlparser/http/Cookie.java, src/org/htmlparser/http/package.html, src/org/htmlparser/nodeDecorators/AbstractNodeDecorator.java, src/org/htmlparser/nodeDecorators/DecodingNode.java, src/org/htmlparser/nodeDecorators/EscapeCharacterRemovingNode.java, src/org/htmlparser/nodeDecorators/NonBreakingSpaceConvertingNode.java, src/org/htmlparser/nodeDecorators/package.html, src/org/htmlparser/nodes/AbstractNode.java, src/org/htmlparser/nodes/RemarkNode.java, src/org/htmlparser/nodes/TagNode.java, src/org/htmlparser/nodes/TextNode.java, src/org/htmlparser/nodes/package.html, src/org/htmlparser/parserapplications/filterbuilder/FilterBuilder.java, src/org/htmlparser/scanners/CompositeTagScanner.java, src/org/htmlparser/tags/BaseHrefTag.java, src/org/htmlparser/tags/BodyTag.java, src/org/htmlparser/tags/CompositeTag.java, src/org/htmlparser/tags/DoctypeTag.java, src/org/htmlparser/tags/FormTag.java, src/org/htmlparser/tags/FrameSetTag.java, src/org/htmlparser/tags/FrameTag.java, src/org/htmlparser/tags/HeadTag.java, src/org/htmlparser/tags/ImageTag.java, src/org/htmlparser/tags/JspTag.java, src/org/htmlparser/tags/LabelTag.java, src/org/htmlparser/tags/LinkTag.java, src/org/htmlparser/tags/MetaTag.java, src/org/htmlparser/tags/OptionTag.java, src/org/htmlparser/tags/ScriptTag.java, src/org/htmlparser/tags/SelectTag.java, src/org/htmlparser/tags/TableRow.java, src/org/htmlparser/tags/TableTag.java, src/org/htmlparser/tags/TextareaTag.java, src/org/htmlparser/tags/TitleTag.java, src/org/htmlparser/tags/package.html, src/org/htmlparser/tests/lexerTests/KitTest.java, src/org/htmlparser/tests/lexerTests/LexerTests.java: Documentation revamp part one. Deprecated node decorators. Added doSemanticAction for Text and Comment nodes. Added missing sitecapturer scripts. Fixed DOS batch files to work when called from any location. 2005-04-06 06:27 derrickoswald * build.xml, docs/release.txt, docs/samples.html: End user experience issues: remove multiple wiki files in zip fix sample application links change readme.txt to use Windows line endings change copyright date 2005-04-06 06:20 derrickoswald * docs/contributors.html, src/org/htmlparser/filters/LinkRegexFilter.java, src/org/htmlparser/filters/LinkStringFilter.java: Add link pattern filters submitted by John Derrick. 2005-04-04 20:48 derrickoswald * src/org/htmlparser/: NodeFilter.java, Parser.java, package.html, parserapplications/SiteCapturer.java: Update javadocs. Enable SiteCapturer to handle resource names containing spaces. Integration Build 1.5 - 20050313 -------------------------------- 2005-03-13 09:51 derrickoswald * src/org/htmlparser/: lexer/Lexer.java, lexer/Page.java, lexer/Source.java, lexerapplications/tabby/Tabby.java, scanners/ScriptDecoder.java, tests/lexerTests/TagTests.java, util/IteratorImpl.java: Bug #1121401 No Parsing with yahoo! By default nio.charset.CharsetDecoder replaces characters it cannot represent in the current encoding with zero, which was the value returned by the page when the Stream reached EOF. This changes the Page return value to (char)Source.EOF (-1) when the end of stream is encountered. 2005-03-12 16:39 derrickoswald * src/org/htmlparser/beans/: BeanyBaby.java, LinkBean.java: Fix bean example, stop sharing connections. 2005-03-12 15:27 derrickoswald * build.xml, lib/commons-logging.jar: Bug #1018884 'compile' ant task from build.xml messes up ./src directory Added optional "classes" property to build.xml. This directory is where class files are put. It defaults to src. To use: build -Dclasses=classdir where classdir is a peer directory to src. Removed unused commons-logging.jar while I was in there. 2005-03-12 12:53 derrickoswald * src/org/htmlparser/: lexer/Lexer.java, scanners/ScriptScanner.java, tests/scannersTests/ScriptScannerTest.java: Add STRICT flag to ScriptScanner to revert to legacy handling of broken ETAGO ( Support Request

Support Request

You can submit support requests here. Before you proceed, please note that you must sign in at sourceforge, for only then will our responses reach you. If you do not have a sourceforge login, you can get one here.

Please note that this is an open source project, and most of us are hard pressed for time. We are not obliged to help you but we do so anyway. You can help us by first researching your problem, and then requesting for support when you are really stuck. You should have consulted the frequently asked questions, JavaDocs, and sample programs before you submit your request. It might also be much faster to get help from the htmlparser user community, by signing up on the HTMLParser User mailing list.

Once you are ready, click here to submit your report.

libhtmlparser-java-1.6.20060610/docs/panel.html0000644000175000017500000000376310407335600017760 0ustar tiagotiago NAVIGATION PAGE

About HTMLParser

Downloads

Documentation

Support

libhtmlparser-java-1.6.20060610/docs/faq.html0000644000175000017500000003644610442545656017451 0ustar tiagotiago HTML Parser Frequently Asked Questions

Frequently Asked Questions

Why am I getting an EncodingChangeException?

An EncodingChangeException is thrown to let you, the user, know that some nodes already handed out by the parser are incorrect according to an encoding directive in a <META> tag.

When a <META> tag with an encoding directive is encountered, the parser rescans the input up to the current position using the new encoding. If a different character results from interpreting the bytes with the new encoding, the exception is thrown.

If you are supplying the parser with your own input, as from a file, be sure to set the encoding if it is not the default (ISO-8859-1). You can do this on the Page, Lexer, or Parser objects.

If the parser is fetching the data for you, the problem is with the HTTP server, which should have sent the correct encoding as part of the Content-Type header string. Given that you have no control over the server, the only solution is to reattempt the parse with the new encoding.

After the exception is thrown, the parser has set it's encoding to the new value, so you should be able to just reset and reparse, see for example the handling in StringBean:

try
{
    ... parser.parse (...) throws an EncodingChangeException...
}
catch (EncodingChangeException ece)
{
    ... do whatever necessary to reset your state here
    try
    {
        // reset the parser
        parser.reset ();
        // try again with the encoding now in force
        parser.parse (...);
    }
    catch (ParserException pe)
    {
    }

}
catch (ParserException pe)
{
}

How can I use POST to fetch a page?

The standard HTTP request submitted by the parser is a GET. The usual request submitted by a form is a POST.

To illustrate how to use POST with the parser, we'll submit a form to the WHOIS database of the American Registry for Internet Numbers (ARIN).

Note: there is an equivalent GET form at http://ws.arin.net/whois.

See also:.

  • RIPE http://www.ripe.net/perl/whois
  • APNIC http://www.apnic.net/apnic-bin/whois.pl
  • LACNIC http://lacnic.net/cgi-bin/lacnic/whois

On the ARIN web site, the page http://ws.arin.net/cgi-bin/whois.pl has the following FORM that asks for an IP address and returns the registry details:

<form name="thisform" method="POST" action="/cgi-bin/whois.pl">
<font face="arial,verdana,helvetica" size="2"> Search for : </font>
<input type="text" Name="queryinput" size="20">
<input type="submit"><br>
</form>

From this we determine that the METHOD is POST and the form should be submitted to /cgi-bin/whois.pl. This absolute URL is relative to the page it is found on, so the form should be submitted to http://ws.arin.net/cgi-bin/whois.pl when the Submit input is clicked. The only INPUT element other than the Submit is a single text field named queryinput that takes 20 or fewer characters. Other types of input element are described in http://www.w3.org/TR/html4/interact/forms.html.

The basic operation is to pass a fully prepared HttpURLConnection connected to the POST target URL into the Parser, either in the constructor or via the setConnection() method. To condition the connection, use the setRequestMethod() method to set the POST operation, and the setRequestProperty() and other explicit method calls. Then write the input field(s) as an ampersand concatenation ("input1=value1&input2=value2&...") into the PrintWriter obtained by a call to getOutputStream().

The following sample program illustrates the principles using a StringBean, but the same code could be used with a Parser by replacing the last three lines in the try block with:

parser = new Parser ();
parser.setConnection (connection);
// ... do parser operations

import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

import org.htmlparser.beans.StringBean;

/**
 * WhoIs.java
 * Use POST to get information about an IP address from ws.arin.net.
 * Created on April 29, 2006, 11:06 PM
 */
public class WhoIs
{
    String mText; // text extracted from the response to the POST request

    /**
     * Creates a new instance of WhoIs.
     */
    public WhoIs (String ipaddress)
    {
        URL url;
        HttpURLConnection connection;
        StringBuffer buffer;
        PrintWriter out;
        StringBean bean;

        try
        {
            // from the 'action' (relative to the refering page)
            url = new URL ("http://ws.arin.net/cgi-bin/whois.pl");
            connection = (HttpURLConnection)url.openConnection ();
            connection.setRequestMethod ("POST");

            connection.setDoOutput (true);
            connection.setDoInput (true);
            connection.setUseCaches (false);

            // more or less of these may be required
            // see Request Header Definitions: http://www.ietf.org/rfc/rfc2616.txt
            connection.setRequestProperty ("Accept-Charset", "*");
            connection.setRequestProperty ("Referer", "http://ws.arin.net/cgi-bin/whois.pl");
            connection.setRequestProperty ("User-Agent", "WhoIs.java/1.0");

            buffer = new StringBuffer (1024);
            // 'input' fields separated by ampersands (&)
            buffer.append ("queryinput=");
            buffer.append (ipaddress);
            // etc.

            out = new PrintWriter (connection.getOutputStream ());
            out.print (buffer);
            out.close ();

            bean = new StringBean ();
            bean.setConnection (connection);
            mText = bean.getStrings ();
        }
        catch (Exception e)
        {
            mText = e.getMessage ();
        }

    }

    public String getText ()
    {
        return (mText);
    }

    /**
     * Program mainline.
     * @param args The ip address (dot notation) to look up.
     */
    public static void main (String[] args)
    {
        if (0 >= args.length)
            System.out.println ("Usage:  java WhoIs <ipaddress>");
        else
            System.out.println (new WhoIs (args[0]).getText ());
    }
}

Is there a way to force a timeout for delinquent pages?

If you are using the Sun jvm, try using:

System.setProperty ("sun.net.client.defaultReadTimeout", "7000");
System.setProperty ("sun.net.client.defaultConnectTimeout", "7000");
in the mainline before starting your main application processing.

This sets the socket timeouts to 7 seconds, but you will need to catch the I/O exceptions.

Why aren't <P>, <B>, <I> etc. tags fully nested?

Authors are sometimes lazy and often fail to close some tags as required by the HTML standard. This causes some problems for the parser.

For this heuristic reason, not all possible tags are registered as composite tags, which is what generates the 'parent/child' nesting relationship. It is considered better to have a valid, less nested parse than a possibly invalid parse.

You are free to add whatever nodes you like as composite nodes using the prototypical node factory paradigm. First create your class that derives from CompositeTagNode (copy and modify one of the existing tags that is most like your desired tag):

public class BoldTag extends CompositeTag
{
    private static final String[] mIds = new String[] {"B"};
    public BoldTag ()
    {
    }
    public String[] getIds ()
    {
        return (mIds);
    }
    public String[] getEnders ()
    {
        return (mIds);
    }
    public String[] getEndTagEnders ()
    {
        return (new String[0]);
    }
}

Then, register an instance of your node with a PrototypicalNodeFactory:

PrototypicalNodeFactory factory = new PrototypicalNodeFactory ();
factory.registerTag (new BoldTag ());
parser.setNodeFactory (factory);

The problem becomes detecting when the tag doesn't have a </B> like it should, so getEnders() and getEndTagEnders() should probably have a longer list of tag names. Enders are the tag names that force an end tag to be generated, while EndTagEnders are the end tags (</xxx>) that force an end tag to be generated.

How can I block parser messages from appearing on stdout?

The parser sends warning and error messages to standard output by default. You might want to block these messages. To achieve this, use a different feedback object:

Parser parser = new Parser ("http://...", new DefaultParserFeedback (DefaultParserFeedback.QUIET));

The Parser class has a static member with just such a construction:

Parser parser = new Parser ("http://...", Parser.DEVNULL);

You can also switch the feedback to DEBUG mode, to get extra details.

Parser parser = new Parser ("http://...", new DefaultParserFeedback (DefaultParserFeedback.DEBUG));

To handle the feedback yourself, implement the ParserFeedback, interface by implementing info(), warning() and error().

How does the parser deal with tags like <tag/>?

The parser handles tags ending with a slash as a normal Tag object. The Tag interface has a method - isEmptyXmlTag() which returns true if is this such an empty xml tag (has no end tag).

How is JSP parsed using the parser?

There is a JspTag class that handles "%", "%=" and "%@" tags, but not within tags or remarks. So, the Jsp tag within the tag <input type='<%= MyType %>'> would not be returned as a tag, but would instead be part of the text of the 'type' attribute, but the same tag within the text of the page would be returned as a JspTag tag.

How do you find the byte offset from the beginning of a document for a tag?

Character positions are much easier to obtain than byte positions. Each tag returned by the parser or lexer has methods getStartPosition() and getEndPosition() which return the starting and ending character positions.

These can be converted to line and column numbers in a hypothetical text file using row() and column() methods on the Page object:

Page page = parser.getLexer ().getPage ();
int row = page.row (tag.getStartPosition ()); // note: zero based
int column = page.column (tag.getStartPosition ());

Converting a character position into a byte position is dependant on the character encoding used. For the ISO-8859-1 encoding, the correspondence is one byte per character, but for other encodings, often more than one byte is used per character. Perhaps the only safe way is to write all the characters, up to the character position of interest, to a suitably encoded writer on a stream, flush the writer and then examine the byte position of the underlying stream.


libhtmlparser-java-1.6.20060610/docs/joinus.html0000644000175000017500000000317307775656354020215 0ustar tiagotiago Join the HTML Parser Project

Join The HTML Parser Project

If you wish to join the htmlparser project as a developer, you have to register as a developer at SourceForge.

Send your sourceforge login name or id and a brief resume (a write-up about yourself) to

Derrick Oswald

You also need to sign up on the HTMLParser-Developer mailing list - this is the forum we use for collaborating on this project. You may also want to sign up on the HTMLParser-User mailing list to monitor other user activity.

What would you gain by joining us :

We'll be happy to have you with us!

libhtmlparser-java-1.6.20060610/docs/release.txt0000644000175000017500000002070310442551424020150 0ustar tiagotiagoHTMLParser Version 1.6 (Release Build Jun 10, 2006) ********************************************* Contents of the distribution ---------------------------- (i) jar files - lib directory HTML Parser jars: htmlparser.jar, htmllexer.jar, thumbelina.jar and filterbuilder.jar. Also thirdparty jar files sax2.jar and junit.jar. (ii) source code - src.zip Also contains necessary resources, and build file. Unzip this and you should be all set to build the parser from its source. You would need Jakarta Ant installed. (iii) documentation - docs directory (includes javadocs) Point your browser at index.html in the docs directory. (iv) executing scripts - bin directory Batch/script files assume that Java is visible in your path. Most require Java 1.2 (or upwards), except for lexer. (v) license.txt (GNU Lesser General Public License) (vi) this file, readme.txt Changes since Version 1.5 ------------------------- New Functionality ----------------- Support has been added for commonly requested composite tags, P and H1-H6. Definition list tags (dl, dt, dd), are also now included in the standard set of tags recognized by the parser. The FilterBean now has a 'recursive' property to control descent through children when applying filters. The NodeList class is a little more standard now with a remove(node) method. The Node interface has been augmented with get first/last child and get previous/next sibling methods to ease traversing the HTML document. The TextNode class has an added isWhiteSpace method that returns true when it contains no printable characters. NodeTreeWalker, a utility class to traverse a tree of Node objects using either depth-first or breadth-first tree order has been added. An XorFilter has been added to round out our NOT, AND and OR filters, along with new constructors to OrFilter/AndFilter that take an array of NodeFilter's. Deflate encoding is now handled correctly and there is now an option to have the ConnectionManager follow redirections manually so that cookie processing can occur between redirections. There is a new override for toHtml() that avoids issuing generated end tags. Refactoring ----------- Some refactoring to allow the htmllexer jar file to be compiled by gcj. Moved non-JUnit test code to Request For Enhancement (RFE) as attachments, so all the code in the tests package should now compile. Removed all deprecated classes and methods. Bug Fixes --------- #1496863 StringBean collapse() adds extra whitespace #1488951 RemarkNode.toPlainTextString() incorrect behaviour #1467712 Page#getCharset never works #1461473 Relative links starting with ? #1457371 Script tag consumes too much from document being parsed #1445795 return as TextNode when processing jsp #1445309 XML processing instructions are returned as text #1376851 Null-valued cookies cause exception #1375230 some javascript breaks stringbean #1345049 HTMLParser should not terminate a comment with ---> #1344687 A bug when set cookies #1334408 Exception occurs based on string length #1322686 when illegal charset specified #1227213 Particular SCRIPT tags close too late Patches ------- #1436082 Follow redirections with cookie processing #1338534 Support get first/last child, previous/next sibling Requests For Enhancements ------------ #1394144 handle deflate encoding Changes since Version 1.4 ------------------------- New APIs Implement rudimentary sax parser. Currently exposes DOM parser via sax project A new http package is added, the primary class being Connectionmanager which handles proxies, passwords and cookies. Some testing still needed. Also removed some line separator cruft. Added parseCDATA to the Lexer, used in script and style scanners. Note that this is significantly new behaviour that now adheres to appendix B.3.2 Specifying non-HTML data of the HTML reference: http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data Configuration Management Removed the need for the Translate class to be packaged with htmllexer.jar. This results in a lighter weight component. Updated the logo and included the LGPL license. Fixed the Windows batch files. Added optional "classes" property to build.xml. This directory is where class files are put. It defaults to src. To use: ant -Dclasses=classdir where classdir is/will-be a peer directory to src. Fixed various end user experience issues. Refactoring Added static STRICT flag to ScriptScanner to revert to legacy handling of broken ETAGO ( HTML Parser Mailing Lists

HTML Parser Mailing Lists

HTMLParser Announcement mailing list (very low traffic)
Join this list if you are interested in new releases of HTML Parser. Notifications of releases will be put on this list.
Monitoring of intermediate releases is also possible by clicking on the envelope icon in the Notes / Monitor column of the Latest File Releases list on the project page.

HTMLParser Users mailing list
Join this list if you are using the HTMLParser library and need some help to get started or solve a problem. Feel free to post your questions here.

HTMLParser Developer mailing list
Join this list ONLY if you wish to monitor developer discussion about the htmlparser library. This list is intended for developer collaboration.

HTMLParser cvs commit mailing list
A syncmail script issues messages to this list whenever a CVS commit is performed to the /cvsroot/htmlparser repository. Subscribe to this list only if you want to be notified of code drops as they happen. libhtmlparser-java-1.6.20060610/docs/wiki/0000755000175000017500000000000010442553322016727 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/docs/wiki/themes/0000755000175000017500000000000010442553322020214 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/0000755000175000017500000000000010442553322021306 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/0000755000175000017500000000000010442553322023004 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/uww.png0000644000175000017500000000126110056227114024332 0ustar tiagotiagoPNG  IHDRgAMAܲtEXtSoftwareGraphicConverter5]HCIDATxQƏl,"J] il}"m,Q[_@l"|s'3FMH.{|盹wνC{ tl(X{xĵ,L-ȼ0{p/^Ds+930σ|>W, lb~߆Vr51O^.j1hK!Nu:dmlhnxᐪ*j5,;itln))d2 o,N{c /N B5)pEr4UW=F9 ;F4MUl_]]+4FԸfv0y\C|SZr54kcr5A zv?>|gޘ›{M#=Dy^J47tf}f?E~CceIENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/en/0000755000175000017500000000000010442553322023406 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/en/LikePages.png0000644000175000017500000000366210056227116025767 0ustar tiagotiagoPNG  IHDRb޳.MgAMAܲtEXtSoftwareGraphicConverter5]HDIDATxyHUYoF(lih1 BLP)lڠm  ȱ iSi/}}qhl/K{͘49wykgs{ηb|RO`&08J@@@ʕRBKP>|'O^pʕ+YJճe6 `Q\<<--ի/^xO%ى ,˔]+Fs-ŏJ KA޾}{ȑӧOR' ͭtXa `\ǏܨZ9ΛE+-wO/D O\ I^-eAȡL^s#B Ldt̅˗/SSS,XpBs9~Νׯ_GרQ#\rٳoذa͘=e0`2TQK-Jnݺ*o޼Fڊ+vmѳO/{Ym۶c0@N/e$O8qԩΝ;Ϙ1cѢEѠC,oIIIJ,K,ٱc2ȼgU"E eHkɌ*z5j`Ѡ 2dӦM%{ӧϓ'O =;ifҥ34i#'MԣGGGGd;wBBBZn͛7/22R>Æ cڮ]fdd:hԨQ]tiٲ}-L ԫWqƴ9K/$ 7nҴiS.W^?~k֬vZ`+ ڷoߍ7J GnѢŋ LY͜9s8 Q&$$pKj޽{H툆 JuTV-Z)F ߄"$#F~[ٳ' frQ=[@C`oY۬]v```Ny!~qrSNSgYɳ(z1 B_Zs X5kj@쭩Cx&'ڵxe˖FDDhӧO;*}kPtRXX~x8Ș ckP\Iȴ/$:t(ūKr{KfAwmnn/,`GQ=W^LJJڸq3gP?^!8`2D7CţM6p@Gf`1֭+mN9жmV^1VRxἳEo}N2En3f֭dCsiyVwE(`eq=sL|sT$VZAʕ?R~at5kv$9Zi`2c?'NHA0a„pC~:_ґYjUݺu =wtԯ_;w.ɓ'2ynݨ9()ĞEEk׎LdeeoڵÇOH-~Va˳gΞ=^0h)9{hɳ9۷,y޽8`BϻH=Db_#G4+άaSv\%L`amHc";A锏/T(2ˣG0xџ޹\DzhM`Ɣ233K='~@LJdM' wOOO 03l)P<|Њx8j//? *""uvTC5,I^R`oE@-tN$ _ xY)Q!}  V7M*q$tUHalX"-ǿ&0cpE`&/T0NIENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/en/FindPage.png0000644000175000017500000000362210056227116025574 0ustar tiagotiagoPNG  IHDRY4%,gAMAܲPtEXtCommentSOFTWARE: QuickTime 5.0.2; DATE: 2001:11:10 02:36:24; HOST: MacOS 10.1; `IDATx[lMY9:ՐVJS.qKj"N5.BԔB 4$Ӧ7. -J"A5n*f;Y٧әɠ{XY{뻭}L:yɟ_X=|W.4 DLZ,K=ф V-|۹Ǐ?s/ ]Z.Ё5a-F޾}ѣǏ7M~7.\/^iEEV.檪z|e8S%]ZϼY`Қpϟ<&D_~Z?ʤ0֜;n^nի5aP%}rAF%MH(n0/nM…Ai'Odff_~ɒ%6l ǠQ:s;΅\,ӧOS5y&1VSS& X55Aׯt2s'ʕ+jPPP޽q!FhZ; 2k֬m2{l4tR;3zyoΙ3g.]:u*tlɈԈXwx{{49+s玤NJll,t0!;0..nذaBcc͜9sĈ3|СCY F5c ZuӦM#G۷o Rʭ}Zj{X0|K;z G(;ÇEk^:""F|I(I111ӦM#ٳG ̜Snݺ`;vC=Hkȑ0aܲec5q#^>}`!$$$!!|rVgϞ?U5b">^㠷jmgB›lq-81#0Fq}hh(=~dŊB ;{,>l raKoMȝ^^^=ze\]9Y%ޡ­Y(#l۶ $͟?_-Co}n1+WǓp … GEEqN:u…7)ɄKnge?80:cI MMMP.|pM?O̯>sɿ̵c j *Xd @)4\Xw3/#\Jj;I&2݁CxaSqaGK&GU.&ח!tҁ'|r< B; ň|"u9zU j]{޽{8@wWuVwpٵkEkőu_A ^Po? Gp:0n?lv ~@kIENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/en/PageInfo.png0000644000175000017500000000321610056227116025606 0ustar tiagotiagoPNG  IHDR]IPLTE ###$$$%%%&&&'''+++---...///000111222444445555:::;;;===>>>???AAABBBCCCJJJKKKMMMNNNPPPQQQRRRTTTUUUXXXYYYZZZ\\\]]]^^^aaaeeehhhiiikkklllmmmnnnpppuuuxxxyyyzzz{{{|||~~~IDATHǵ{EVrXj<(*j=REhDJAjդM҆DԀ&ÚksβMl15̙ݤMȳ|3߹Ng0*ުT %%-J ѡVGF/B&4/ј+~+)|@*=\QrW*r}5"p %{՝.6ErLzʆ)ӱc<>}z5oEP+Si+0e.O (z.NATH/zz?"\opJ E!,}Kte#DSTqKC,oM2G|& |`*F VG>IƵ M?~:d4PX`.tw-O}-0 4yM?=@=3/67UXҦ4$7`GGZ-| G7'Z=*X3ξ;CAbumу7DԟH8t?8׆ B-  5z.D1-Nnjmk?kxWoHT+􋜰wk0Q(Uf5%mjl2alfn(0a'|w;B=# bN_!cxW8^L?PE32!S;% '`]?Z)O=׷ȸ|YJ|%klizj5zB1p\U3 &!i!PwqsYb6p ˒<ߧs }n_eH(DO>r|"GſK_uѭQ_SH( EbI6\} KUHleYϒ" X4KT;oUWADՓggNs vSw;~jSVʷ.v; Y2IENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/en/RecentChanges.png0000644000175000017500000000474210056227116026634 0ustar tiagotiagoPNG  IHDRQ#<gAMAܲtEXtSoftwareGraphicConverter5]H tIDATxyLUC|Hu+RQ뮥3X2*51q&5 h70bPKԨhX).qkYA7d-oj3N߹w~߳O2PNvQlD]I/I45 5jԨN 25eee%..ŋ o߾w?tR^@jj'"9s_xVw:wD.'7o2&p`|L` ={6//in?Pqq(r?_ 5;ր~ʕ+Jl,))1^e2_XkCEE:n$Ŵu+_3;Whr7nJ$%15xa^xџ‹cvZc,RoTcy,H fK<ӻw\y*OiU%Asܹ:tX# N,~p>]FddҥK7mtL{=zgѧYԚAY$WW- }iyd{\d;]vEGG_~}ٲe]vMJJI'{Wܹc[.44ӧݻwgN:v Ț5H_Ugy$lC7iZIɎx688x߾}nܹsTTqV,o~Q/ǸӃ=Z\jvԲeʚ8 jɒ%ݺu6 dpՁvСSN@ >gΜ.]L;}1c]6|pm3++ IwSNÛ4h3{~.&M ;w&'/8BBB:v`:h1dyʔ);v> `Ȑ! ˣFP F9cǎ-O{;# Zx lcUHfgg>|iӄ{fddbcc7nKaxxxrrݻw #+W,--%IWe7dnݺ{nle˖mrCZc 0rǏ[HĆ x'f͚-Z09^-\pŊT'Nܼy~JJ ?~jj*WZ~,|N5kڷolvٳg?zի4EF`z#Q!CFEb_Fly_ (.* {aC#GfΜ)n_c`mڴaY'Ox{{H  b-SlÆ kҤ :7mX)EBUVHfY&:F_+A[YѣH" 9'ڵspѠ(𗁝~qٴ@sET'{Յ "t d / \j޼96`mK13ȱb0,!WOx<@KP3lU(p"_Aio3z%5 ]Iӝ:AҌ!IVIWM˩ 7x_6I޸qPW!7ʘgP=*:C t)Q$ſ NDղ"J:bW&<.&&ϘKfg1bp=<<&OLnMOOGoTϦQÇj*cB0E4FOE%\o89'alv.9aaaxD0WuQ{ًNM'Bdžy1ǎpSInAu+|"G7o3#Е)W^l#~ MB'txo߾AAA$_9rS-hWY)n gLB˗/laV/G\?ax^48u9c /AbN@y^?E%1#>6Nl%S 5%0&]N2R6ϛ'YYFfNN6)cD -Qb 2<.RneֆP̠ @AAѩ))6dƍGP*8P2z| A(6.8MH'uЉIs&N 2ɭ|4eXd*_S :̪ \z-P8&%XTW 8;WAq% }n *~ kEW2r0ax5,2Px/3#((0s$,J5,2P8>&SjO3,R5 FE/{'}eIENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/en/Edit.png0000644000175000017500000000272110056227116025003 0ustar tiagotiagoPNG  IHDR>}HgAMAܲtEXtSoftwareGraphicConverter5]HcIDATxԘ]L\EowWi,khEMHhS@Cw_@L(AX> eqZ>.ag{R[+̹3s333+prK?qIDDMFj/HB# q;ޮѱ$W` x@6ӻXyԗZZZFIj:5;1lmm !8AKsVu||UEt@u# LiJ@NT5GFFQJ;+׳ QEw\3 2H;Pt{9)QQ3QoNN7oVԚ|XHy=%%̏O0ʬ}$lT|'ga 4|7qS!4PUmzz'''6;BpW/dZ\\$h)y[_|RՆa˶=:20BGBQ8ݏμa•nvp \/*Mu<7@GM/^y3Dl(ԍVFaz$FLL:!&D}tt4N8S7ʌ|+e%gpm 8Bp(Lݞ)ZCC "P &jiii^^^vv H*G0fIaaapt`ȟP dGKK] Lg1xIENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/en/Diff.png0000644000175000017500000000230610056227116024765 0ustar tiagotiagoPNG  IHDR7cAgAMAܲtEXtSoftwareGraphicConverter5]HXIDATxԘ+QǘHW.EJDnb冤p=1DqwH$7佐a&k;{ƙ3vj9|9?~i ?=K`Z`+'&9u8>ٙ:??bુo&X+I-ccch;5Q`X4iiiqqqQ !s5 H`XM|i}xx2ӡa n) jtKUP͜www"«&X=feoX/V'''?YYY!t5T菎׷󴳳fhh(Q,QP]^^A4UbፍAٝnR077ӃུԤoTuJ/N'eO:==\\\!g3---j 6 d$,y]E0w}u'  - Enn.nf / "lnn$/&=F2??{B$Z\\LMH2BNF>;;CYNvTFE\Gjjjyy9\)PX&&&JJ&f{n 42,qjn&8)TFFFLLL(ʡٷIOONj0q/"@UUU*Gx}<`)))YYY۳hB)ЖP=t:9}!P鿺zrrRQQQRR"yf3j7gffegg/,,$%%`W&T(J\I/!Dbu||<55rrL&(iii:xsuhd hp2E؍s88L&ItruӿL0X[qWX[[5z@ +yqz [Br||qY]Lx!9`Z[[kkkG:`oHN"; `p |`%_aQ yDBÔd#IENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/en/PageHistory.png0000644000175000017500000000367310056227116026363 0ustar tiagotiagoPNG  IHDRk"gAMAܲtEXtSoftwareGraphicConverter5]HMIDATxilMilDbZZ.h:%m(U$b=2 iXJK?W"Q[kǾU3yz߾=fb&9yg;Q᳁B H'ÀWl@!Xr*Uz?;vçNx˗3cAaN`~` `CN>}v\ٳ70P.(,,؄+78`QQիWw n޽S "KpczܐǏ9s>u PX+7O>qZjzѡA%PW0o`B(Vc |@bǎ1r\' >w/hbmg URE$W&5kȌx~uVuʕ+Ydxx8x)bIIIbt}X j0e<~ueJ XGq($ui̘1^5v,.f͚EaUxa-)c v- P 322xo}cĈh'^z8QZ䴸xРA{@_ZN_.もEPQ ֭OݻWèJAK(4m45D>pjQ>VPφ :%O}aK.eǏ|V\95A%rϡAӼgϞ֭[S(D8 L`,U eX@[`h_+-fM\Tf@i k֬I;v,")\%O>ȑ#y9<* Xdj4?%%E謉}崍{[\G` T\XxE+ / ୔AFM~KpQNKbzz:zi,U$% uٲe'O2d=QB'0?We+ +׈pҤ;X+`{O,Y(eP c] ַNjEmLIENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/en/DebugInfo.png0000644000175000017500000000373510056227116025766 0ustar tiagotiagoPNG  IHDRk"gAMAܲtEXtSoftwareGraphicConverter5]HoIDATxghIw׽Dra]cEPv ‰`As "XPAFŠ(ήI cCEzəl&l;>d^fygUC/8C(I qDF?A7 t<~̙3N:krrr0Pp3KpcA;|2##֭[^d/vrǏ6 XXX{ȑ7o0j(TC9(4?W0F7`D>={ŋ,EEESPX+7 AϋZjFV+"1x f'^,ҥK/_}|hyV^aÆ]IIIXɳg&MԮ]X/^yԮ$_1ӧwB&>޽Kxݺu`!ς8z*%l*҂dFݻ9$΃[aÖ/_ !,Y+$$$`X[hNLWhWU<1?ǤI[c6<{wNT:SNe34-Zo޼ٻwo 80m4"2m,H٩ ((ذK2dF|8MeYfXp\yC蹌Rt, ZlR¢ȱ-ޔ{ 3`˸a%ICMnEO5ʓEv)̭{ ,IYz:lãGݢE LB66kLe?}Vb߾}ܹc ݾ}[2gLLL3T0讜}:@>eE1% ,m||MB̿f͚zj}=Ve-,XEث`z HOq^ψ#ۇ1cW9s]%R VbiR-lGmMDE(?@N-IMʥ۲eҥKw}Dͫ'*SٺRF<_5<v>Z (#-R= Ug\ϰzvVPP"P%Z} n?W0on)hQQtRRR(ǏK'0?W0d^m]СC'L 3Kpcq-B#D` H'Ztq݀IENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/buttons/en/BackLinks.png0000644000175000017500000000337310056227116025763 0ustar tiagotiagoPNG  IHDRZgAMAܲtEXtSoftwareGraphicConverter5]HIDATxkHUYo7'5+!FZV()D@C0(BO) ?DE9Rdj)"bC9˨ae͌ykgx,:k-_{S:"Dp/M2j:'MP2O<:{lmmիW78t`)xA v/^ݼy˗k&'|Pvtĉׯ_P'#횀`. +۷>>>C$JE5a/_ E wh0]JШ I͛7X]2y `ap@htC7̙3&a6c, [la` ׷mڴXJцʀ1c0!EM{a#eŊ߿_p!A"`ZtXzTF˙yбvZd8? Cu, B) ehɒ%ǎFoݺ@=Íɢ/ѬUO>=PeC\(\Ӫ:tb6|.YC^f \ Kt޿_f.HBZt0I/: 7tjFxl֕tENm޼ի9L2-&33~~~yyyxBgeoo ,ؽ{ҥK&GD%/)))<һ),- YѣGYٳ/]aC:RƒogϞQdi9TLt6fO$Xdy&A v`Dt74j"B\}p2 ;nͤ;𞋷R`ӄ  삎W 5L-'tU-N`WujJTVV0^ApDxjunub€Rfee>|^P]}+N=*--r\\\ A ^PۗtJ5 q,M / EE]1#_IENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/images/0000755000175000017500000000000010442553322022553 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/images/http.png0000644000175000017500000000106410056227116024241 0ustar tiagotiagoPNG  IHDR Vu\gAMAܲ%tEXtComment$0152: 1*Short:1 $935C: ???? etEXtSoftwareGraphicConverter5]HIDATxbqa kv׉jҰc``būMFHʪ2p+ /û*q 02`2\JN1TϹm_u^YUVjiOm+>o;&=?uۃ_Sv37QExDԌngF+O9Own{ _XKB&bdbG_ 8x?+V~۰Ͼݟ/~>aFqt? Dș%l h#uOY ,ؼdf;{oeFf ̬|BR:m k?;uj[PL5l!Uj[MZ3mIENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/MacOSX/images/logo.png0000644000175000017500000000426310056227116024226 0ustar tiagotiagoPNG  IHDR22?gAMAܲRtEXtCommentSOFTWARE: QuickTime 5.0.2; DATE: 2001:11:10 08:11:50; HOST: MacOS 10.1; /˾tEXtSoftwareGraphicConverter5]HIDATxܚgh[OQ1DD b FlXIHE|AOv/,_wQ{%avݔNf疝{O`9H#T$pK4\" Jr$ޑ 785!tUt*L+БAd92ǑlG)a6\ !6c%d:2ّPG #si/!-pTxӘ͛78x`ȑ#cǎ.pQ(p{2WXɑSSS%%%ET"RreZ){x p W1cQ$ʑ#*T ʕ)[J2e\){.p W1ܣB]{G>K\\Jll+Ͷgt~/F\*b0_PTqo%[ׯ}{ۍ"ly)2DGGKLL+G*[lҥK*^.QQXx!"x#B߿/_xB>{;o߾\q0Sĝdz_m#G5jHFF\|Y)߿sNٳlR[W^:rΝgiWwRnr%k.߿_I|RN:_J 6L6mڤ{ƍ<_|;wN>}ջwomyHG˜oݺiǎ={Ϝ9Ξ=+K,UVȤ~2w\y8Mի~zuP۷6Ə/kז:Ș1cڵkh֬n/vJJJҕa;Vj֬ێe" jk׮^}&޽>t*A{nl-?WF ի[XO>+xI{A8E´#,\"ҷo_M% ~V ݻW#Jͺv i Id۶mzeuf͚% .T/__xѝ*U4#),^صHQ$>ؾ}z5kȊ+I&^V-%ƦMʐ!C mܸQ233u>/ DqSN 2eL0A7ohݺ eGɉ'dڴiev ,]~.Q* l"|?ѵ[n7+V6mkL*,| :T P%—N:F*#AƔ_ _q Ž.ZmR 49ۺu"~V\2(]6^kzV* n0:ѣԭ[WӜHjժZ0dnzȂ,IƑ-P;y̞=[l@ 3gځ qZ~7NGǏU Ќ34ܽ{a'N@ 2S-"(VjKO9Iӧe߾}LA͛6ӯ_?m1bƢƍ=Z$:uPGm۶uuY-Zp߿nY2^lf޼yn-) Gˬ^^'P4jgȷ,8z݋VZϲ@a 91\`ImڠA91s"NMgΜV B)vxx"`ҥfl/jVqA!b|("۷z رOpI4hrx(l{2x`8p`)<E -s=+j7ѣzMKKѣGgNCzOP,2Ee˖ɓ V`ȴoذAF+/5YYYZ*)"<Vv!ZUlI@sxpjaϷ"\+4˭"T_PEJI# h M[ 2t"ƍFo<!rNbyɏI4J{_ &N9RHrR B_HoIi+aI3\ 5GTcGd}?P]҃mIENDB`libhtmlparser-java-1.6.20060610/docs/wiki/themes/default/0000755000175000017500000000000010442553322021640 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/docs/wiki/themes/default/buttons/0000755000175000017500000000000010442553322023336 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/docs/wiki/themes/default/buttons/vcss.gif0000644000175000017500000000301310056227116025000 0ustar tiagotiagoGIF89aXs G6dT|LLLࡷْ,,,}}}!U捍 Md D]]]&YEp<<1999 ÜN^f3a̙3JZޱX{sf( ffffffffffffffffffffffffffffffffffffffffffffff! Valid CSS!!,X$$%GF+%ĭʓ͟Ǵ՛А ب  <!xEI-&` PP၅&@B`M C H`ҁ 8DTIJ.L@${$po҃ #i9tp*|C1$(0)0pXd`A@:6@H.RIH7i,lxM7kGAZu;p8u )12701<c 6J>jXN逺+Q` 9Ǎ8t/ؿ@"x%K,e9.U"WR8%`5aA=&9ʀ%&@FlYFpw@dWwbenH`Z % pɋ"\"IY `m_W9 B(ESIq Ί9 T #@H'K s7M"C @[E(?!l⒰G, Wlg0Q! ,$     L~@,ny;Aj{r$DAgi[7Bs%e bi^;'Z*P?D$w+T#aDM r<7#P/D6Q<BD $oL{0 +XϠC;libhtmlparser-java-1.6.20060610/docs/wiki/themes/default/buttons/vxhtml10.gif0000644000175000017500000000445110056227116025514 0ustar tiagotiagoGIF89aX)))111999BBBJJJRRRZZZccckkksss{{{RJJޭ{{sskkZZkc!9)9)J!J!c1Z)R)s9k1ބB{9cZRJތB{skZRJscR1!cJ)ZB!RZc1B1{kR{RsZ1ckR)֥RZk)ZZ֭cΥZcJZcs9ޭRBk1!sRZZ޵ckRB!Bc{c1ΥRZƜJ{9sZ)s1J9kR!{kcRZƥZcs9J޵Z)!Zc֭RBk1{RZֵckcR)ccJ{9޵RZJ!c{sskRZ911))!kB9{sRssRRJ{ZZJBJJ޽电ZscB{9sZޭ9BJJ祽֌΄skRJ{1k)cRJBZ9k!ZJJB{cBs!R91{1){19JBBJ99J!,X@-H-HZȰÇ#FE PhpWiki - Using Cookies With Parser

Using Cookies with the Parser

Problem: (by ShanSivakolundhu)
In order to access a particular site I neet to have a cookie set. Is there any way I can set the cookie before I create a parser object ? Just like ...

URLConnection.("Cookie", cookieValue);
URLConnection.connect();

Solution: (by BobLewis)
In order to send cookies in your Http requests, all you need to do is set the Cookie HTTP Header in the URL Connection.

Create the URL and open the connection, but before passing the connection to the parser, set the "Cookie" request property:

import java.net.URL;
import java.net.URLConnection;
import javax.servlet.http.Cookie;

import org.htmlparser.Parser;
import org.htmlparser.util.NodeIterator;

/**
 * Demonstrate cookie usage with the HTML Parser.
 */
public class CookieDemo
{
    /**
     * The cookies.
     * You'll need to get these from your browser's cookie jar or somewhere.
     * Only the cookies that apply to the URL you are using and haven't expired
     * are supposed to be passed in the request.
     * This is only part of a real cookie, much longer than shown.
     */
    public static Cookie[] cookies =
    {
        new Cookie ("user", "%2536%2535%2538%2531%2539%2530%253a etc."),
    };

    /**
     * Generate a HTTP cookie header value string from an array of cookies.
     * <pre>
     *   The syntax for the header is:
     *
     *    cookie          =       "Cookie:" cookie-version
     *                            1*((";" | ",") cookie-value)
     *    cookie-value    =       NAME "=" VALUE [";" path] [";" domain]
     *    cookie-version  =       "$Version" "=" value
     *    NAME            =       attr
     *    VALUE           =       value
     *    path            =       "$Path" "=" value
     *    domain          =       "$Domain" "=" value
     *
     * </pre>
     * @param cookies The cookies which should be set in the header value.
     * @return A string containing the HTTP Cookie Header value.
     * @see <a href="http://www.ietf.org/rfc/rfc2109.txt">RFC 2109</a>
     */
    public static String generateCookieHeader (Cookie[] cookies)
    {
        int version;
        boolean quote;
        StringBuffer ret;

        ret = new StringBuffer ();

        version = 0;
        for (int i = 0; i < cookies.length; i++)
            version = Math.max (version, cookies[i].getVersion ());
        if (0 != version)
        {
            ret.append ("$Version=\"");
            ret.append (version);
            ret.append ("\"");
        }
        for (int i = 0; i < cookies.length; i++)
        {
            if (0 != ret.length ())
                ret.append ("; ");
            ret.append (cookies[i].getName ());
            ret.append ("=");
            if (0 != version)
                ret.append ("\"");
            ret.append (cookies[i].getValue ());
            if (0 != version)
                ret.append ("\"");
            if (0 != version)
            {
                if ((null != cookies[i].getPath ())
                    && (0 != cookies[i].getPath ().length ()))
                {
                    ret.append ("; $Path=\"");
                    ret.append (cookies[i].getPath ());
                    ret.append ("\"");
                }
                if ((null != cookies[i].getDomain ())
                    && (0 != cookies[i].getDomain ().length ()))
                {
                    ret.append ("; $Domain=\"");
                    ret.append (cookies[i].getDomain ());
                    ret.append ("\"");
                }
            }
        }

        return (ret.toString ());
    }

    public static void main (String[] args) throws Exception
    {
        Parser parser;
        URL url;
        URLConnection connection;

        parser = new Parser ();
        url = new URL ("http://slashdot.org");
        connection = url.openConnection ();
        connection.setRequestProperty ("Cookie", generateCookieHeader (cookies));
        parser.setConnection (connection);
        for (NodeIterator iterator = parser.elements (); iterator.hasMoreNodes (); )
            System.out.println (iterator.nextNode ());
    }
}
Page Execution took 0.301 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/SamplePrograms0000644000175000017500000001343710063170312023504 0ustar tiagotiago PhpWiki - Sample Programs
Page Execution took 0.289 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/IteratorPattern0000644000175000017500000001362010063170312023671 0ustar tiagotiago PhpWiki - Iterator Pattern

Iterator Pattern

The Iterator can be seen in action in two of its flavors - ExternalIterators, and InternalIterators. The HTMLEnumeration class provides the external iteration facility. SimpleEnumeration? allows external iteration over NodeList?s.

--SomikRaha

Page Execution took 0.288 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/Benchmarks0000644000175000017500000001340110063170312022614 0ustar tiagotiago PhpWiki - Benchmarks

Peter Lin, who works on the httpJMeter project has performed some benchmarks that indicate htmlparser is 40% to 600% faster than JTidy:

             10     20     30    40     50    100     500    Yahoo   Cnet
Htmlparser  80.0  126.4  160.4  200.4  236.4  400.6  1630.2  474.4  1251.8
Tidy       498.6  531.0  626.8  658.8  687.0  849.4  2319.4  965.2  2049.0
Delta        6.23   4.2    3.91   3.29   2.91   2.12    1.42   2.03    1.64

Full details are available in a httpzip file.

Page Execution took 0.256 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/WritingYourOwnScanners0000644000175000017500000002247310063170312025233 0ustar tiagotiago PhpWiki - Writing Your Own Scanners

Writing Your Own Scanners Warning: this is out of date and needs to be completely rewritten There are two types of scanners, depending on the type of tags that you wish to parse:

  • TagScanner - for parsing tags that have no child elements
  • CompositeTagScanner - for parsing tags with children

Your scanner should subclass either of these two classes. You should then register your scanner with the parser with a call like: parser.addScanner(new MyOwnScanner());

The Anatomy of a Scanner

The scanner allows you to customize parts of the scanning process. The scanning process is :

1. Given a tag, match the tag name with a registered scanner

2. If a match is found (using getId()- which you MUST override), a closer match or special processing can be done by calling the evaluate() method of the scanner. This is optional, subclasses don't have to override the evaluate() method.

3. If a match was found, call the scan() method. For both TagScanner? and CompositeTagScanner, overriding this method is optional, and NOT recommended for standard cases. The default scan() methods will make a call to createTag.

4. createTag describes the creation of a new tag. This method MUST be overridden in your scanner.

For your own scanner - simply override :

1. getID() and have it return an array of strings that will be matched against the tag. For most cases, a single string is enough.

2. createTag() and have it create your special tag. The data needed for construction of your tag will be within tagData and compositeTagData (mostly within the latter if you are creating a composite tag - a tag with children).

Note: Tags with children must subclass CompositeTag

Examples

1. Simple tag with no children

public class MySimpleScanner extends TagScanner {
   private static String [] MATCH_ID = {"MYSPECIALTAG"};
   ..
   public String getID() {
       return MATCH_ID;
   }

   protected Tag createTag(TagData tagData, Tag tag, String url) {
      return new MySimpleTag(tagData,..);
   }
}

public class MySimpleTag extends Tag {
   public MySimpleTag(TagData,..) {
   }
}

2. Composite tag with children

public class MyCompositeScanner extends CompositeTagScanner {
   private static String [] MATCH_ID = {"MYSPECIALTAG"};
   ..
   public String getID() {
       return MATCH_ID;
   }

   protected Tag createTag(TagData tagData, CompositeTagData compositeTagData) {
      return new MyCompositeTag(tagData,compositeTagData);
   }

}

public class MyCompositeTag extends CompositeTag {
   public MyCompositeTag(TagData tagData, CompositeTagData compositeTagData) {
       //..
       // If you wish to collect attributes from the start tag, you could do:
       // String attributeValue = compositeTagData.getStartTag().getAttribute(atributeName);
       //
       // To collect nodes of a particular type,
       // you could do:
       // Node [] myNodes =
       //    compositeTagData.getChildren().searchFor(
       //       SomeTag.class
       //    ).toNodeArray();
   }
}

You can customize the composite tag with an array of tag(strings) which indicate when to trigger corrections. You can also specify if you wish to prevent the same tag from appear as its child. Check the javadocs of CompositeTagScanner for more info.

Page Execution took 0.32 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/ExternalIterators0000644000175000017500000001327410063170312024226 0ustar tiagotiago PhpWiki - External Iterators

External Iterators

You can use external iterators to drive the entire parsing process like so :

  for (NodeIterator i = parser.elements();i.hasMoreNodes();) {
     Node node = e.nextNode();
     if (node instanceof LinkTag) {
     }
     if (node instanceof ImageTag) {
     }
  }

You should think of this only when you want to conduct a really quick search, and the moment you've found what you've wanted, you want to stop parsing. The iterator here drives the parsing.

--SomikRaha

Page Execution took 0.389 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/FactoryMethod0000644000175000017500000001340010063170312023306 0ustar tiagotiago PhpWiki - Factory Method

Factory Method

TagScanner? possess an FM for the creation of a tag.

  protected Tag createTag(TagData tagData);

Scanner subclasses override this to specify the type of tag to be constructed.

CompositeTagScanner? possesses an FM for the creation of a tag.

  protected Tag createTag(TagData tagData,CompositeTagData compositeTagData);

Composite scanners override this to specify the type of tag to be constructed.

--SomikRaha

Page Execution took 0.251 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/BlockFeedback0000644000175000017500000001321210063170312023176 0ustar tiagotiago PhpWiki - Block Feedback

Block Feedback

The parser sends warning and error messages to standard output by default. You might want to block that. To achieve this, use a different feedback object, like so:

  Parser parser =
    new Parser(
      "http://...",
      new DefaultParserFeedback(
       DefaultParserFeedback.QUIET
      )
    );

You can also switch the feedback to DEBUG mode, to get extra details. Check EnableFeedback.

--SomikRaha

Page Execution took 0.241 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/SomikRaha0000644000175000017500000001276110063170312022425 0ustar tiagotiago PhpWiki - Somik Raha

Welcome to my space on the HTMLParser wiki. I founded the HTMLParser project two years back, under the confusion that there were no other html parsers around. Since then, it has been one exciting journey - made possible because of the vast feedback that has been pouring in, that really shows the power of the open-source movement.

You can visit my httphome page to see some of my other work.

-

Page Execution took 0.48 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/ReverseHtml0000644000175000017500000001660610063170312023011 0ustar tiagotiago PhpWiki - Reverse Html

Reverse Html Rendering

In order to get back the html representation of a web page, you may use toHtml() recursively. Here's one way to get it:

import org.htmlparser.Parser;
import org.htmlparser.util.NodeIterator;
import org.htmlparser.util.ParserException;

public class ToHtmlDemo
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser = new Parser ("http://urlIWantToParse.com");
        StringBuffer html = new StringBuffer (4096);
        for (NodeIterator i = parser.elements();i.hasMoreNodes();)
             html.append (i.nextNode().toHtml ());
        System.out.println (html);
    }
}

Often, it might be desired to modify the html being reconstructed. In such a case, you must change the tag's attributes prior to calling toHtml(). For example, if the tag in question is a link tag, and you wish to modify the href, do this:

    linkTag.setLink ("http://newUrlString");
    linkTag.toHtml ();

This is equivalent to:

    linkTag.setAttribute ("href", "http://newUrlString");
    linkTag.toHtml ();

This latter would work on any tag, but few other tags have an HREF attribute according to the httpHTML specification. The toHtml() method applies to all nodes, not just tags. For tags it is basically a reconstruction of the tag using its attributes (at the atomic level) and its children (at the macro/composite level).

You can also change the name of the tag like so:

    tag.setTagName (newTagName);

and there are numerous ways to add, remove or change the attributes of a tag. For example, to add or change the ID attribute to "EditArea" use:

    tag.setAttribute ("id", "EditArea", '"');

Whole tags can be added and removed from the list of children held by each tag. For example, to add a <P> tag at the same level as another tag:

    newTag = new Tag ();
    newTag.setTagName ("P");
    tag.getParent ().getChildren ().add (newTag);

Be careful, getChildren () may return null for an arbitrary tag.

Page Execution took 0.254 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/CustomTagExtraction0000644000175000017500000001356010063170312024514 0ustar tiagotiago PhpWiki - Custom Tag Extraction

Custom Tag Extraction

Custom tag extraction is easy. Simply create an array of tag names that you want to extract from a page, and pass it in to a TagFindingVisitor, like so:

import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.TagFindingVisitor;

public class CustomTagDemo
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser = new Parser ("http://urlIWantToParse.com");
        String [] tagsToBeFound = {"P","BR","MYTAG"};
        TagFindingVisitor visitor = new TagFindingVisitor (tagsToBeFound);
        parser.visitAllNodesWith (visitor);
        // First tag specified in search
        Node [] allPTags = visitor.getTags(0);
        // Second tag specified in search
        Node [] allBRTags = visitor.getTags(1);
        // Third tag specified in search
        Node [] allMyTags = visitor.getTags(2);
    }
}
Page Execution took 0.213 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/CompositePattern0000644000175000017500000001440010063170312024037 0ustar tiagotiago PhpWiki - Composite Pattern

Composite Pattern

The Composite can be seen in action in the CompositeTag? class. All tags that can have children subclass CompositeTag?, which contains methods for iterating over these children in a uniform way. A CompositeTag? can be composed of leaf nodes or CompositeTag?s.

--SomikRaha

Page Execution took 0.329 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/TemplateMethod0000644000175000017500000001350610063170312023461 0ustar tiagotiago PhpWiki - Template Method

Template Method

TagScanner? uses a template method to create a scanned node - it calls a matching tag scanner to do its job and produce a scanned node in a series of steps.

  public final Tag createScannedNode(
    Tag tag,
    String url,
    NodeReader reader,
    String currLine) throws ParserException {

    Tag thisTag = scan(tag,url,reader,currLine);
    thisTag.setThisScanner(this);
    thisTag.setAttributes(tag.getAttributes());
    return thisTag;
  }

This is useful as the tag has some necessary associations established here - the association with the scanner that parsed it, and the attributes of the original tag that was processed to produce the specialized tag.

--SomikRaha

Page Execution took 0.238 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/LexerLinks0000644000175000017500000001371610063170312022630 0ustar tiagotiago PhpWiki - Lexer Links

Using a Lexer to Extract Links

If you are after raw link text only, then you can use a Lexer to access the links:

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import org.htmlparser.Node;
import org.htmlparser.lexer.Lexer;
import org.htmlparser.lexer.nodes.TagNode;
import org.htmlparser.util.ParserException;

public class LinkDemo
{
    public static void main (String[] args) throws ParserException, IOException
    {
        Node node;

        URL url = new URL ("http://urlIWantToParse.com");
        URLConnection connection = url.openConnection ();
        Lexer lexer = new Lexer (connection);
        while (null != (node = lexer.nextNode ()))
            if (node instanceof TagNode)
            {
                TagNode tag = (TagNode)node;
                if (tag.getTagName ().equals ("A") && !tag.isEndTag ())
                {
                    String href = tag.getAttribute ("href");
                    if (null != href)
                        System.out.println (href);
                }
            }
     }
}
Page Execution took 0.285 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/FilterLinks0000644000175000017500000001530210063170312022767 0ustar tiagotiago PhpWiki - Filter Links

Using a NodeFilter to Extract Links

The filter capability is much more powerful than the simple link extraction illustrated here:

import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeIterator;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

public class LinkDemo
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser = new Parser ("http://urlIWantToParse.com");
        NodeFilter filter = new NodeClassFilter (LinkTag.class);
        NodeList links = new NodeList ();
        for (NodeIterator e = parser.elements (); e.hasMoreNodes (); )
            e.nextNode ().collectInto (links, filter);
        for (int i = 0; i < links.size (); i++)
        {
            LinkTag linkTag = (LinkTag)links.elementAt (i);
            System.out.print ("\"" + linkTag.getLinkText () + "\" => ");
            System.out.println (linkTag.getLink ());
        }
    }
}

In fact, this is so useful that there is a convenience method to apply a NodeClassFilter directly from the parser:

import org.htmlparser.Parser;
import org.htmlparser.util.ParserException;
import org.htmlparser.Node;
import org.htmlparser.tags.LinkTag;

public class LinkDemo
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser = new Parser ("http://urlIWantToParse.com");
        Node [] links = parser.extractAllNodesThatAre (LinkTag.class);
        for (int i = 0; i < links.length; i++)
        {
            LinkTag linkTag = (LinkTag)links[i];
            System.out.print ("\"" + linkTag.getLinkText () + "\" => ");
            System.out.println (linkTag.getLink ());
        }
    }
}
Page Execution took 0.283 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/ImageExtraction0000644000175000017500000001326510063170312023632 0ustar tiagotiago PhpWiki - Image Extraction

Image Extraction

This is very similar to link extraction. Instead of looking for LinkTag nodes you look for ImageTag nodes:

import org.htmlparser.Parser;
import org.htmlparser.util.ParserException;
import org.htmlparser.Node;
import org.htmlparser.tags.ImageTag;

public class ImageDemo
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser = new Parser ("http://urlIWantToParse.com");
        Node [] images = parser.extractAllNodesThatAre (ImageTag.class);
        for (int i = 0; i < images.length; i++)
        {
            ImageTag imageTag = (ImageTag)images[i];
            System.out.println (imageTag.getImageURL ());
        }
    }
}
Page Execution took 0.258 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/LinkBeanLinks0000644000175000017500000001254710063170312023235 0ustar tiagotiago PhpWiki - Link Bean Links

Using a LinkBean to Extract Links

A LinkBean is a pretty easy way to get just the links:

import java.net.URL;
import org.htmlparser.beans.LinkBean;

public class LinkDemo
{
    public static void main (String[] args)
    {
        LinkBean lb = new LinkBean ();
        lb.setURL ("http://urlIWantToParse.com");
        URL[] urls = lb.getLinks ();
        for (int i = 0; i < urls.length; i++)
            System.out.println (urls[i]);
    }
}
Page Execution took 0.269 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/WebRipper0000644000175000017500000001510710063170312022443 0ustar tiagotiago PhpWiki - Web Ripper

Web Ripper

A ripper is a program that downloads html content to your hard disk. It involves modifying links and image locations to point to locations in your hard disk.

You can write rippers easily with the parser. Here's one way to do it:

Parser parser = new Parser(..);
UrlModifyingVisitor visitor = new UrlModifyingVisitor(parser,"c:\\webpages\\mylocation");
parser.visitAllNodesWith(visitor);
writeToFile(visitor.getModifiedResult()); // you have to define writeToFile in your app program

This visitor simply modifies the links it finds in the page with the prefix you have provided. It then passes back the representation of the page via getModifiedResult().

If you're dealing with frames, you might want to enhance this visitor to be able to modify links on the frame tags. In such a case, override visitTag(), and check if the tag is a FrameTag? (Note, UrlModifyingVisitor? will register link and image scanners only, so you will need to register the frame scanner seperately). Then, you can proceed to modify the src attribute, use Tag.setAttribute()

--SomikRaha

Page Execution took 0.261 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/EmailExtraction0000644000175000017500000001551410063170312023636 0ustar tiagotiago PhpWiki - Email Extraction

Email Extraction

This is very similar to link extraction. You have to extract links from a page and verify that they are email addresses. Link tags have a method - isMailLink() to check if the HREF starts with "mailto:". Using an inner class in the NodeFilter example:

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeIterator;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

public class EmailLinkDemo
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser = new Parser ("http://urlIWantToParse.com");
        NodeFilter filter = new NodeFilter ()
        {
            /**
             * Accept nodes that are mail links.
             * @param node The node to check.
             */
            public boolean accept (Node node)
            {
                 return (LinkTag.class.isAssignableFrom (node.getClass ())
                    && ((LinkTag)node).isMailLink ());
            }
        };
        NodeList links = new NodeList ();
        for (NodeIterator e = parser.elements (); e.hasMoreNodes (); )
            e.nextNode ().collectInto (links, filter);
        for (int i = 0; i < links.size (); i++)
        {
            LinkTag linkTag = (LinkTag)links.elementAt (i);
            System.out.print ("\"" + linkTag.getLinkText () + "\" => ");
            System.out.println (linkTag.getLink ());
        }
    }
}
Page Execution took 0.256 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/PatternStories0000644000175000017500000001313610063170312023532 0ustar tiagotiago PhpWiki - Pattern Stories
Page Execution took 0.273 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/TestDrivenDevelopment0000644000175000017500000003532210063170312025037 0ustar tiagotiago PhpWiki - Test Driven Development

Test Driven Development

Test-Driven development is a rewarding practice, that stands out in eXtreme Programming. All the other practices of XP can usually be compromised when dealing with distributed teams, but the one practice that can and must be followed always - is test-driven development (TDD).

What is Test-Driven Development ?

Test Coverage is a philosophy - that for every bit of logic in the system, there is a test validating that the logic is correctly implemented (Unit Tests), or that the logic is correct at all from an external system perspective (Functional Tests). The HTMLParser project also follows quick releases - and in order to ensure that a new release does not add more bugs, we ensure that -

1. No existing tests break

2. The new code has test-coverage

However, Test-Driven Development (TDD) is not about writing tests for your code - it is writing tests before your code. The reason we do this - is to keep the system as simple as possible, and just write enough code to make the tests pass. After all the architecture and patterns we study, it is dangerous if we cannot control our knowledge and use it indiscriminately. TDD allows tests to drive the coding process, thus helping us produce a really simple system. It is possibly a paradigm shift for many programmers who write tests after the code, or don't write tests at all. But you cannot produce maintainable systems of high quality without discipline. Hence, we really like to enforce discipline on contributions to this project.

I am sold on tests - now what ?

Its time to take a look at the test-framework in place that enables quick and easy testing - as we believe that testing should be painless. If it is too hard, we wouldnt do it. To begin with, as is the case with most Java XP projects of the day, we use JUnit. JUnit allows us to create suites of tests and run them automatically. In case you are new to unit testing, please make sure that you have read and tried out the examples from Test Infected - Programmers Love Writing Tests.

Once you are comfortable with JUnit, you are ready to start writing tests for the parser. We provide you with a utility class - ParserTestCase? - with which you can rig up a complex test pretty easily. This class is in the org.htmlparser.tests package in the src.zip.

Writing a testcase with ParserTestCase?

ParserTestCase? provides you with utility methods to create parser objects quickly and easily for sample html that is being tested. Once you have the parser objects, you have another utility method to parse it and put all the parsed objects into an array of nodes - which is then available to you for assertions.

Lets try writing a simple test - we have a bug report - that the parser throws exception when tags of the type <base ...> are encountered without an href attribute. Base tags can also have target attributes like <base target="_top">, but for some reason, the parser doesen't accept this and throws an exception. Before we start to fix the bug, we write a test case to prove that the bug exists.

Since there already exists a testcase called BaseHrefTagTest?, we shall add our test to this class.

   public class BaseHrefTagTest extends ParserTestCase {
     ...
   }

Note that all testcases for the parser extend from ParserTestCase?.

We shall call our method - testNotHrefBaseTag() - for it describes the case when the base tag is not a base href, but something else. It is very important to write intention-revealing code. This is the reason we can spend less time on documentation and more time on coding.

Below, we present the code for the method testNotHrefBaseTag():

  public void testNotHrefBaseTag() throws ParserException {
    createParser("<base target=\"_top\">");
    parseAndAssertNodeCount(1);
    assertTrue("Should be a base tag but was "+node[0].getClass().getName(),node[0] instanceof HTMLBaseHREFTag);
    BaseHrefTag baseTag = (BaseHrefTag)node[0];
    assertEquals("Base Tag HTML","<base target=\"_top\">",baseTag.toHTML());
  }

In Line 2, we make a call to createParser() - this creates a parser object internally for us, that operates on the data provided in the parameter - the test data. This simulates the situation that the parser encounters a line containing the given test data, that should result in the parser throwing an exception upon parsing - if it is buggy.

In Line 3, we would like to register all the scanners available - with a call to parser.registerScanners(). When writing tests, it is usually a good idea to do this so as to verify that in a practical situation, when all scanners are registered, there are no undesirable side-effects - i.e. even if your scanner works fine individually, it might not when it is in a system of several other scanners.

In Line 4, we ask the parser to pass through this data and collect all the html nodes into an array, and also verify that the number of nodes found were what we expected. This is done with a call to parseAndAssertNodeCount().

After a call to this method - we have with us an array called "node" - which contains all the parsed objects. We can now take control and do our assertions to see what it contains. Line 5 has an asertTrue(), that verifies that the first node object is indeed a base tag, and if not, it provides the info about the object that was found instead.

Once control passes to line 6, we are sure that what we have is a base href tag - and we can proceed to downcast it to BaseHrefTag?. Once we have our base tag - we can easily test its contents in Line 7.

An important detail to note here is that - your test method must have a throws clause - declaring that it throws an ParserException?. Do not surround your code with a try-catch, unless you are testing that exceptions should be thrown (there are better ways of doing that as well). This is because, JUnit automatically catches any exception thrown and shows the error in the test runner.

The above example is from an actual bug-reproduction and fixing session. After the test failed - the bar went red - we had the proof that the bug existed. This was then fixed, and when the bar showed green, it meant that the bug had been eliminated, destryoed, annhilated, whatever.. Death to the bugs!

ParserTestCase? also offers an assertStringEquals() method, that does a character-by-character check of two strings and displays valuable mismatch information that is usually not available when you use assertEquals().

Communicate with testcases

Open-source projects provide a good way of having an expanded testing base. This has proved to be very true in case of the htmlparser project. It is therefore important for us to look at patterns of reporting bugs which enable us to maximize the communication bandwidth, and minmize the involvement time of developers.

As human beings - language often fails us when we need it most. We do get bug reports like, "The parser barfs at the url .... with this exception ...". Such a report assumes that someone has the time to try out the url, find the exception, write a test to reproduce the situation, and then fix it. Time is a precious commodity on open-source projects, and bug reports that are not informative enough are often a strain on the developers supporting the project.

We can remedy this with a high-class bug report of the form - "The parser barfs at the url ... with the exception ... It is a problem with the _ tag , and I wrote a testcase to reproduce this bug. Here is the testcase".

Such bug reports make it a pleasure for any developer to simply take the testcase, run it, find the bug, and fix it. We've often had issues when people reported bugs which we didn't think existed. So we wrote testcases and proved that the code was indeed bug-free (or not).

We encourage users of the parser to get familiar with writing tests for the parser and submit testcases in their bug reports.

--SomikRaha, February 16, 2003 11:55:42 am

Page Execution took 0.37 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/VisitorLinks0000644000175000017500000001354010063170312023203 0ustar tiagotiago PhpWiki - Visitor Links

Using an ObjectFindingVisitor to Extract Links

A visitor visits all links, and an ObjectFindingVisitor is designed to find one specific class of nodes, in this case LinkTag tags:

import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.ObjectFindingVisitor;

public class LinkDemo
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser = new Parser ("http://urlIWantToParse.com");
        ObjectFindingVisitor visitor = new ObjectFindingVisitor (LinkTag.class);
        parser.visitAllNodesWith (visitor);
        Node[] links = visitor.getTags ();
        for (int i = 0; i < links.length; i++)
        {
            LinkTag linkTag = (LinkTag)links[i];
            System.out.print ("\"" + linkTag.getLinkText () + "\" => ");
            System.out.println (linkTag.getLink ());
        }
    }
}
Page Execution took 0.221 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/InternalIterators0000644000175000017500000001266610063170312024224 0ustar tiagotiago PhpWiki - Internal Iterators

Internal Iterators

You can use internal iterators by overriding trigger methods that you're interested in. This is done by subclassing HTMLVisitor. An example can be found in LinkExtraction.

--SomikRaha

Page Execution took 0.366 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/CustomTagLinks0000644000175000017500000001362710063170312023460 0ustar tiagotiago PhpWiki - Custom Tag Links

Using Custom Tags to Extract Links

The use of custom tags provides for altered behaviour during the parse:

import org.htmlparser.Parser;
import org.htmlparser.PrototypicalNodeFactory;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeIterator;
import org.htmlparser.util.ParserException;

class MyLinkTag extends LinkTag
{
    public void doSemanticAction () throws ParserException
    {
        System.out.print ("\"" + getLinkText () + "\" => ");
        System.out.println (getLink ());
    }
}

public class LinkDemo
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser = new Parser ("http://urlIWantToParse.com");
        PrototypicalNodeFactory factory = new PrototypicalNodeFactory ();
        factory.registerTag (new MyLinkTag ());
        parser.setNodeFactory (factory);
        for (NodeIterator e = parser.elements (); e.hasMoreNodes (); )
            e.nextNode (); // just parsing the nodes executes doSemanticAction
    }
}
Page Execution took 0.225 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/SearchingForData0000644000175000017500000001760510063170312023715 0ustar tiagotiago PhpWiki - Searching For Data

Searching for data is one of the most challenging tasks in a web page due to its seemingly unstructured (or badly structured) form. Complex searches are now possible with the parser in a simple to use API. Here's an example :

We are looking at a page which has the following html:

<html>
...
<body>
   <table>
     <tr>
       <td><font size="-1">Name:<b><i>John Doe</i></b></font></td>
       ..
     </tr>
     <tr>
       ..
     </tr>
   </table>
</body>
</html>

We'd like to extract the information corresponding to the field "Name". This is possible if we make use of the fact that the name appears two tags after "Name".

Code to achieve this would look like:

Node nodes [] = parser.extractAllNodesThatAre(TableTag.class);
// Get the first table found
TableTag table = (TableTag)nodes[0];

// Find the position of Name.
StringNode [] stringNodes = table.digupStringNode("Name");
StringNode name = stringNodes[0];

// We assume that the first node that matched is the one we want. We
// navigate to its parent, the column tag <td>
CompositeTag td = name.getParent();

// From the parent, we shall find out the position of "Name"
int posOfName = td.findPositionOf(name);

// Its easy now to navigate to John Doe, as we know it is 3 positions away
Node expectedName = td.childAt(posOfName + 3);

You can move up the parent tree - e.g. when the data is in seperate columns,

<html>
...
<body>
   <table>
     <tr>
       <td><font size="-1">Name:</font></td>
       <td><font size="-1">John Doe</font></td>
     </tr>
     <tr>
       ..
     </tr>
   </table>
</body>
</html>

We'd like to perform the same search on "Name".

Code to achieve this would look like:

Node nodes [] = parser.extractAllNodesThatAre(TableTag.class);
// Get the first table found
TableTag table = (TableTag)nodes[0];

// Find the position of Name.
StringNode [] stringNodes = table.digupStringNode("Name");

// We assume that the first node that matched is the one we want. We
// navigate to its parent (column <td>)
CompositeTag td = stringNodes[0].getParent();

// Navigate to its parent (row <tr>)
CompositeTag tr = parentOfName.getParent();

// From the parent, we shall find out the position of the column
int columnNo = tr.findPositionOf(td);

// Its easy now to navigate to John Doe, as we know it is in the next column
TableColumn nextColumn = (TableColumn)tr.childAt(columnNo+1);

// The name is the second item in the column tag
Node expectedName = nextColumn.childAt(1);
Page Execution took 0.261 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/LinkExtraction0000644000175000017500000001343510063170312023504 0ustar tiagotiago PhpWiki - Link Extraction

Link Extraction

There are many ways of extracting links.

Is there a preffered method ? Seems to be too many ways.

Page Execution took 0.305 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/FrequentlyAskedQuestions0000644000175000017500000001371510063170312025570 0ustar tiagotiago PhpWiki - Frequently Asked Questions

FAQ


How does the parser deal with tags like <tag/> ?

The parser handles them as a normal Tag object. The Tag class has a method - isEmptyXmlTag() which can be queried to find if this an empty xml tag.


How does the parser deal with HTML tags which should be terminated with /> but are not, i.e.
and <HR>? Is there any way to automatically know that some HTML tags are empty?


How is JSP parsed using the HTMLParser?


How do you find the byte offset from the beginning of a document for a tag?


  • How does the parser deal with "foreign" characters. For instance: Ordin&aelig;r is required in the html document to markup a special

character in most nordic alphabets. Does the parser convert them to unicode ?*

Page Execution took 0.393 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/RSSFeeds0000644000175000017500000003253010063170312022161 0ustar tiagotiago PhpWiki - RSSFeeds

Parsing RSS Feeds

Out of the box, the parser only understands XML tags that have the same name as HTML tags. So this example:

import org.htmlparser.Parser;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.tags.TitleTag;
import org.htmlparser.util.NodeIterator;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

/*
 *  RSS (RDF Site Summary - formerly called Rich Site Summary) is a method of
 * describing news or other Web content that is available for "feeding"
 * (distribution or syndication) from an online publisher to Web users.
 * RSS is an application of the Extensible Markup Language (XML) that adheres
 * to the World Wide Web Consortium's Resource Description Framework (RDF).
 * Originally developed by Netscape for its browser's Netcenter channels,
 * the RSS specification is now available for anyone to use.
 */
public class ResourceDescriptionFrameworkSiteSummary
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser;
        NodeList list;

        parser = new Parser ("http://sourceforge.net/export/rss2_sftopstats.php?feed=mostactive_weekly");
        list = parser.extractAllNodesThatMatch (new NodeClassFilter (TitleTag.class));
        for (NodeIterator iterator = list.elements (); iterator.hasMoreNodes (); )
            System.out.println (iterator.nextNode ().toPlainTextString ());

    }
}

Will only find the TITLE tags, which may be what we want:

Rank 1: Gaim (100% activity)
Rank 2: Azureus - BitTorrent Client (99.9934% activity)
Rank 3: eGroupWare: Enterprise Collaboration (99.9867% activity)
Rank 4: WinMerge (99.9801% activity)
Rank 5: phpMyAdmin (99.9735% activity)
Rank 6: guliverkli (99.9668% activity)
Rank 7: phpGedView (99.9602% activity)
Rank 8: AMSN (99.9536% activity)
Rank 9: dotproject (99.9469% activity)
Rank 10: ScummVM (99.9403% activity)

However, with some custom tags defined, it can handle the heirarchy of the XML:

import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.PrototypicalNodeFactory;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.tags.CompositeTag;
import org.htmlparser.tags.Tag;
import org.htmlparser.tags.TitleTag;
import org.htmlparser.util.NodeIterator;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

/*
 *  RSS (RDF Site Summary - formerly called Rich Site Summary) is a method of
 * describing news or other Web content that is available for "feeding"
 * (distribution or syndication) from an online publisher to Web users.
 * RSS is an application of the Extensible Markup Language (XML) that adheres
 * to the World Wide Web Consortium's Resource Description Framework (RDF).
 * Originally developed by Netscape for its browser's Netcenter channels,
 * the RSS specification is now available for anyone to use.
 */
class Item        extends CompositeTag { public String[] getIds () { return (new String[] { "ITEM" }); } }
class Title       extends CompositeTag { public String[] getIds () { return (new String[] { "TITLE" }); } }
class Description extends CompositeTag { public String[] getIds () { return (new String[] { "DESCRIPTION" }); } }
class Link        extends CompositeTag { public String[] getIds () { return (new String[] { "LINK" }); } }
class Guid        extends CompositeTag { public String[] getIds () { return (new String[] { "GUID" }); } }
class PubDate     extends CompositeTag { public String[] getIds () { return (new String[] { "PUBDATE" }); } }

public class ResourceDescriptionFrameworkSiteSummary
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser;
        PrototypicalNodeFactory factory;
        NodeList list;
        Item item;
        NodeList kids;
        Node node;
        Tag tag;
        String name;

        parser = new Parser ("http://sourceforge.net/export/rss2_projsummary.php?group_id=24399");
        factory = new PrototypicalNodeFactory (true); // empty
        factory.registerTag (new Item ());
        factory.registerTag (new Title ());
        factory.registerTag (new Description ());
        factory.registerTag (new Link ());
        factory.registerTag (new Guid ());
        factory.registerTag (new PubDate ());
        parser.setNodeFactory (factory);
        list = parser.extractAllNodesThatMatch (new NodeClassFilter (Item.class));
        for (NodeIterator iterator = list.elements (); iterator.hasMoreNodes (); )
        {
            item = (Item)iterator.nextNode ();
            kids = item.getChildren ();
            if (null != kids)
                for (int i = 0; i < kids.size (); i++)
                {
                    node = kids.elementAt (i);
                    if (node instanceof Tag)
                    {
                        tag = (Tag)node;
                        name = tag.getTagName ();
                        if (name.equals ("TITLE") || name.equals ("DESCRIPTION"))
                            System.out.println (tag.toPlainTextString ());
                    }
                }
        }
    }
}

This isn't as pretty as it could be, but you get the idea:

Project name: HTML Parser
Project description: HTML Parser is a library, written in Java, which allows you to parse HTML (HTML 4.0 supported).
It has been used by people on live projects. Developers appreciate how easy it is to use. The architecture is flexible, allowing you to extend it easily.
Developers on project: 16
Project administrators: &#60;a href=&#34;http://sourceforge.net/users/derrickoswald/&#34;&#62;derrickoswald&#60;/a&#62;, &#60;a href=&#34;http://sourceforge.net/users/somik/&#34;&#62;somik&#60;/a&#62;
Activity percentile (last week): 98.3413%
Most recent daily statistics (24 Jan 2004): Ranking: 251, Activity percentile: 98.34%,
Downloadable files: 25615 total downloads to date
Most recent daily statistics (24 Jan 2004): Download count: 19
Mailing lists (public): 4
Public mailing lists: htmlparser-developer, htmlparser-announce, htmlparser-user, htmlparser-cvs
Discussion forums (public): 2, containing 110 messages
Public discussion forums: Open Discussion, Help, htmlparser-user, htmlparser-developer
Tracker: Bugs (1 open/158 total)
Tracker description: Bug Tracking System
Tracker: Support Requests (1 open/20 total)
Tracker description: Tech Support Tracking System
Tracker: Patches (0 open/0 total)
Tracker description: Patch Tracking System
Tracker: Feature Requests (2 open/10 total)
Tracker description: Feature Request Tracking System
CVS (8169 commits/809 adds)
Most recent daily statistics (24 Jan 2004): Commit count: 0; Add count: 0 &#60;br&#62;&#60;a href=&#34;http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/htmlparser/&#34;&#62;[Web-based access to repository]&#60;/a&#62;
Page Execution took 0.302 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/StrategyPattern0000644000175000017500000001274310063170312023707 0ustar tiagotiago PhpWiki - Strategy Pattern

Strategy Pattern

The strategy is used in specifying the type of feedback object to be used in the parser. It defaults to a feedback object that sends feedback to standard output. Check BlockFeedback for more details.

--SomikRaha

Page Execution took 0.255 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/JavaBeans0000644000175000017500000002321010063170312022370 0ustar tiagotiago PhpWiki - Java Beans

Quick Introduction

Run the example program that demonstrates the capabilities of the Java Beans that are already included in the htmparser.jar (it's assumed that the htmlparser.jar file from an integration build 1.3 later than April 12, 2003 is in your current directory):

java -classpath htmlparser.jar org.htmlparser.beans.BeanyBaby

What you should see is a split window showing a URL extraction with a list of links on the left and the text on the right.

http://htmlparser.sourceforge.net/images/BeanyBaby.jpg

The splitter on the left contains a GUI oriented HTMLLinkBean (which uses an underlying API LinkBean) and the splitter on the right contains a GUI oriented HTMLStringBean (which uses an underlying API StringBean).

Type in a URL or double-click a URL from the list. Use the Go menu to go back to a previous link or step to the next link you already visited.

The options menu provides access to the binary properties:

http://htmlparser.sourceforge.net/images/BeanyBabyOptions.jpg

  • Links - turn on and off the extraction of hyperlinks with the text
  • Collapse - turn on and off collapsing whitespace
  • Non-Breaking Spaces - turn on and off transforming non-break spaces into regular spaces

Simple Usage

The simplest operation (this shows StringBean use, but LinkBean use is similar) is just to create a new one, set the URL and then get the text:

#import org.htmlparser.beans.StringBean;

public class TryBeans
{
    public static void main (String[] args)
    {
        StringBean sb = new StringBean ();
        sb.setURL ("httphttp://cbc.ca");
        System.out.println (sb.getStrings ());
    }
}

Save this in a file called TryBeans.java and then run the following commands:

javac -classpath htmlparser.jar TryBeans.java
java -classpath htmlparser.jar:. TryBeans

or for Windows:

java -classpath htmlparser.jar;. TryBeans

Simple GUI Usage

The following instructions are for the httpNetBeans IDE but other environments will have a similar operation.

You can mount the htmlparser.jar file:

http://htmlparser.sourceforge.net/images/Mount.jpg

and use the bean classes directly or if you want to use them in the Form designer you'll need to install them. Use the Install New Javabean menu item in the Tools menu:

http://htmlparser.sourceforge.net/images/InstallBean.jpg

There are a number of beans in the jar, as indicated above the GUI beans are the HTMLStringBean and HTMLLinkBean. You can install them all, but it might clutter up your palette a bit, so I would recomend only install the ones you need for the project at hand. You'll also need to specify the palette that the beans will be added to:

http://htmlparser.sourceforge.net/images/ChooseBean.jpg http://htmlparser.sourceforge.net/images/ChoosePalette.jpg

Once the bean is installed it will show up on the tool palette and you can click it and drop it onto a JFrame or JPanel or whatever:

http://htmlparser.sourceforge.net/images/AddingBean.jpg

Once it's in your designer you can set the properties and have it display the text even while designing (assuming you're online):

http://htmlparser.sourceforge.net/images/SettingProperties.jpg

Of course you can subclass the provided beans or write your own.

Page Execution took 0.351 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/EnableFeedback0000644000175000017500000001433710063170312023343 0ustar tiagotiago PhpWiki - Enable Feedback

Enable Feedback

If the parser needs to be switched to normal or debug mode, you can do this like so:

  Parser parser =
    new Parser(
      "http://...",
      new DefaultParserFeedback(
       DefaultParserFeedback.NORMAL
      )
    );

  Parser parser =
    new Parser(
      "http://...",
      new DefaultParserFeedback(
       DefaultParserFeedback.DEBUG
      )
    );

You can also turn the feedback to QUIET mode (none of the events will be triggered), to get extra details. Check BlockFeedback. To handle the feedback yourself, without displaying it to standard output, subclass ParserFeedback?, and override info(), warning() and error().

--SomikRaha

Page Execution took 0.249 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/CustomVisitorLinks0000644000175000017500000001466610063170312024410 0ustar tiagotiago PhpWiki - Custom Visitor Links

Using a Custom Visitor to Extract Links

Creating a custom visitor is more powerful than just the processing of links demonstrated here:

import org.htmlparser.Parser;
import org.htmlparser.RemarkNode;
import org.htmlparser.StringNode;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.tags.Tag;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.NodeVisitor;

class MyCustomizedVisitor extends NodeVisitor
{
    public MyCustomizedVisitor ()
    {
        super (true); // recurse into children
    }

    public void visitTag (Tag tag)
    {
        // process tags here
        if (tag instanceof LinkTag)
        {
            LinkTag linkTag = (LinkTag)tag;
            System.out.print ("\"" + linkTag.getLinkText () + "\" => ");
            System.out.println (linkTag.getLink ());
        }
    }

    public void visitStringNode (StringNode stringNode)
    {
        // process text in the page here
    }

    public void visitEndTag (Tag endTag)
    {
        // process end tags here,
        // checking for end tags can be useful when performing
        // more involved page processing
    }

    public void visitRemarkNode (RemarkNode remarkNode)
    {
        // process remark nodes here
    }
}

public class LinkDemo
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser = new Parser ("http://urlIWantToParse.com");
        MyCustomizedVisitor visitor = new MyCustomizedVisitor ();
        parser.visitAllNodesWith (visitor);
    }
}
Page Execution took 0.226 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/WebCrawler0000644000175000017500000002734510063170312022610 0ustar tiagotiago PhpWiki - Web Crawler

Web Crawler (aka Spider)

A crawler is a program that picks up a page and follows all the links on the page. Crawlers are used in search engines to index all the pages on a website, starting only from the first page (as long as it is linked).

There are several crawlers out there, but few are good quality open-source crawlers. The problem is most crawlers could fail if the parser they use is not powerful. Using HTMLParser, it is possible to crawl through dirty html - with great speed.

There are two types of crawlers:

  • Breadth First
  • Depth First

Breadth First crawlers use the BFS (Breadth-First Search) algorithm. Here's a brief description :

Get all links from the starting page and add to the queue Pick first link from queue, get all links on this page, and add to queue Repeat Step 2, until queue is empty

Depth First crawlers use the DFS (Depth-First Search) algorithm. Here's a brief description :

Get first link that has not yet been visited, from the starting page. Visit link and get first non-visited link Repeat Step 2, until there are no further non-visited links. Go to next non-visited link in the previous level of recursion, and repeat step 2, until no more non-visited links are present BFS crawlers are simple to write. DFS can be slightly more involved, so we shall present a simple DFS crawler program below. This is a basic program, and is included in the org.htmlparser.parserapplications package - Robot.java. Feel free to modify it or add functionality to it.

import org.htmlparser.Parser;

public class Robot {
  private Parser parser;
  /**
   * Robot crawler - Provide the starting url
   */
  public Robot(String resourceLocation) {
    try {
      parser = new Parser(resourceLocation,new DefaultParserFeedback());
      parser.registerScanners();
    }
    catch (ParserException e) {
      System.err.println("Error, could not create parser object");
      e.printStackTrace();
    }
  }
  /**
   * Crawl using a given crawl depth.
   * @param crawlDepth Depth of crawling
   */
  public void crawl(int crawlDepth) throws ParserException
  {
    try {
      crawl(parser,crawlDepth);
    }
    catch (ParserException e) {
      throw new ParserException("ParserException at crawl("+crawlDepth+")",e);
    }
  }
  /**
   * Crawl using a given parser object, and a given crawl depth.
   * @param parser Parser object
   * @param crawlDepth Depth of crawling
   */
  public void crawl(Parser parser,int crawlDepth) throws ParserException {
    System.out.println(" crawlDepth = "+crawlDepth);
    for (NodeIterator e = parser.elements();e.hasMoreNodes();)
    {
      Node node = e.nextNode();
      if (node instanceof LinkTag)
      {
        LinkTag linkTag = (LinkTag)node;
        {
          if (!linkTag.isMailLink())
          {
            if (linkTag.getLink().toUpperCase().indexOf("HTM")!=-1 ||
              linkTag.getLink().toUpperCase().indexOf("COM")!=-1 ||
              linkTag.getLink().toUpperCase().indexOf("ORG")!=-1)
            {
              if (crawlDepth>0)
              {
                Parser newParser = new Parser(linkTag.getLink(),new DefaultParserFeedback());
                newParser.registerScanners();
                System.out.print("Crawling to "+linkTag.getLink());
                crawl(newParser,crawlDepth-1);
              }
              else System.out.println(linkTag.getLink());
            }
          }
        }
      }
    }
  }

  public static void main(String[] args)
  {
    System.out.println("Robot Crawler v"+Parser.VERSION_STRING);
    if (args.length<2 || args[0].equals("-help"))
    {
      System.out.println();
      System.out.println("Syntax : java -classpath htmlparser.jar org.htmlparser.parserapplications.Robot <resourceLocn/website> <depth>");
      System.out.println();
      System.out.println("   <resourceLocn> the name of the file to be parsed (with complete path ");
      System.out.println("                  if not in current directory)");
      System.out.println("   <depth> No of links to be followed from each link");
      System.out.println("   -help This screen");
      System.out.println();
      System.out.println("HTML Parser home page : http://htmlparser.sourceforge.net");
      System.out.println();
      System.out.println("Example : java -classpath htmlparser.jar com.kizna.parserapplications.Robot http://www.google.com 3");
      System.out.println();
      System.out.println("If you have any doubts, please join the HTMLParser mailing list (user/developer) from the HTML Parser home page instead of mailing any of the contributors directly. You will be surprised with the quality of open source support. ");
      System.exit(-1);
    }
    String resourceLocation="";
    int crawlDepth = 1;
    if (args.length!=0) resourceLocation = args[0];
    if (args.length==2) crawlDepth=Integer.valueOf(args[1]).intValue();


    Robot robot = new Robot(resourceLocation);
    System.out.println("Crawling Site "+resourceLocation);
    try {
      robot.crawl(crawlDepth);
    }
    catch (ParserException e) {
      e.printStackTrace();
    }
  }
}

The method that does the crawling is the recursive method crawl(parser,depth). The crawler goes about creating multiple parsers and moving through sites using the DFS approach.

You have to be careful of the depth provided to the crawler. Studying the time taken to map all the links is itself an interesting research project. A word of caution, some sites dont like crawlers going through them. They would have a file called robots.txt in the root directory which should be accessed to know the rules and honor them. Read more about this. The above program is only a demonstration program. Please note that it will only follow links that have ".com", ".htm" or ".org" ending. In real-life situations, you'd also want to support dynamic links.

Before you set out to design an open-source or commercia crawler, please study what others have already researched in this area.

Some Useful Links on Crawlers

--SomikRaha, Sunday, February 16, 2003 2:13:46 pm.

Page Execution took 0.291 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/StringExtraction0000644000175000017500000001373010063170312024053 0ustar tiagotiago PhpWiki - String Extraction

String Extraction

To get all the text content from a web page, use the TextExtractingVisitor, like so:

import org.htmlparser.Parser;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.TextExtractingVisitor;
public class StringDemo
{
    public static void main (String[] args) throws ParserException
    {
        Parser parser = new Parser ("http://pageIwantToParse.com");
        TextExtractingVisitor visitor = new TextExtractingVisitor ();
        parser.visitAllNodesWith (visitor);
        System.out.println (visitor.getExtractedText());
    }
}

If you want a more browser like behaviour, use the StringBean like so:

import org.htmlparser.beans.StringBean;
public class StringDemo
{
    public static void main (String[] args)
    {
        StringBean sb = new StringBean ();
        sb.setLinks (false);
        sb.setReplaceNonBreakingSpaces (true);
        sb.setCollapse (true);
        sb.setURL ("http://pageIwantToParse.com");
        System.out.println (sb.getStrings ());
    }
}

thank you

Page Execution took 0.232 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/ParserDesign0000644000175000017500000001373010063170312023132 0ustar tiagotiago PhpWiki - Parser Design

Parser Design

HTMLParser is a SAX-like parser streaming parser, that has the capability to correct dirty-html on the fly. It is extremely fast and lightweight. The binary distribution of the jar file is around 135 KB only, and it can easily be brought down to 65 KB for a minimal parsing requirement (prior to optimization and obfuscation).

It is also extensible. The parser provides both InternalIterators and ExternalIterators. The parser has some interesting PatternStories..

--SomikRaha

Page Execution took 0.261 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/VisitorPattern0000644000175000017500000001327010063170312023540 0ustar tiagotiago PhpWiki - Visitor Pattern

Visitor Pattern

The visitor pattern provides a SAX-view to the parser. It allows a SAX-like interface for parsing with the NodeVisitor? class.

Among other things, the visitor pattern makes it very simple to customize processing of a web-page, and cleanly seperate such code. Check LinkExtraction for an example.

--SomikRaha

Page Execution took 0.303 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/CollectingParameter0000644000175000017500000001251110063170312024464 0ustar tiagotiago PhpWiki - Collecting Parameter

Collecting Parameter

The parser allows the use of a collecting parameter in two modes

  • a direct call to extractAllNodesThatAre()
  • Node.collectInto() during external iteration

Either way, nodes are collected into the collecting parameter object if they satisfy a match criterion (usually the type).

--SomikRaha

Page Execution took 0.258 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/HomePage0000644000175000017500000001576710063170312022245 0ustar tiagotiago PhpWiki - Home Page
  • HTMLParser documentation*

http~This page has moved to http://htmlparser.sourceforge.net/wiki

Welcome to the HTMLParser documentation page. You may visit

Page Execution took 0.333 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/FeedbackMechanism0000644000175000017500000001676310063170312024066 0ustar tiagotiago PhpWiki - Feedback Mechanism
  • Feedback Mechanism *

The parser has a feedback mechanism that allows you to obtain feedback about the parsing process. You can get to know if there were any errors, or any warnings, or any general information. Warnings occur when the parser has encountered dirty html, but was able to fix it and continue. Errors occur when the parser was not able to handle the html.

An understanding of the feedback mechanism is useful if you wish to perform logging, or turn off the default feedback and incorporate your own.

When you create a parser object without specifying any feedback object, the parser creates a default feedback object - DefaultHTMLParserFeedback. This works in three modes - NORMAL, QUIET and DEBUG, and when no feedback object is specified, it defaults to normal. In this mode, all information, warnings and errors are sent to standard output.

HTMLParser parser = new HTMLParser(someUrl);

The above code snippet shows the default configuration - the feedback object is created in the normal mode. You can turn off the messages by turning the feedback mechanism to the quiet mode. This can be done in two ways :

HTMLParser parser = new HTMLParser(someUrl,null);
Java2html

or

HTMLParser parser = new HTMLParser(someUrl,new DefaultHTMLParserFeedback(DefaultHTMLParserFeedback.QUIET));

In this mode, there is no feedback on standard output. For debugging purposes, you can use the debug mode to receive all stack traces of exceptions that are thrown.

HTMLParser parser = new HTMLParser(someUrl,new DefaultHTMLParserFeedback(DefaultHTMLParserFeedback.DEBUG));

If you wish to add a file logger- you can write your own custom feedback class like this :

public class FileFeedback implements HTMLParserFeedback{
  public FileFeedback(String file) {
    // .. Initialize the file for logging
  }
  public void warning(String message) {
    // .. log the warning message
  }
  public void info(String message) {
    // .. log the info message
  }
  public void error(String message) {
    // .. log the error message
  }
}

You can supply an object of this type to the parser in the constructor, and accordingly channel the feedback.

Page Execution took 0.239 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.php/PostOperation0000644000175000017500000002551310063170312023354 0ustar tiagotiago PhpWiki - Post Operation

POST Operation

The standard HTTP request submitted by the parser is a GET. This note describes how to use POST, which is the usual request submitted by a form.

As an example, we'll submit a form to the U.S. postal service web site.
Note: This is suboptimal, the postal service provides tools for this type of thing: httphttp://www.uspswebtools.com

On the USPS web site, the page httphttp://www.usps.com/zip4/citytown.htm has the following FORM that asks for a zip code and returns the cities or towns covered by the zip code (only form elements are shown removing all the formatting markup):

<form NAME="frmzip" ACTION="zip_response.jsp" METHOD="post" OnSubmit="return validate(frmzip)">
<input type="text" id="zipcode" name="zipcode" size="5" maxlength="5" TABINDEX="10">
<input TYPE="image" NAME="Submit" SRC="/zip4/images/submit.jpg" BORDER="0" WIDTH="50" HEIGHT="17" ALT="Submit" TABINDEX="11">

From this we determine that the METHOD is POST and the form should be submitted to zip_response.jsp. This relative URL is relative to the page it is found on, so the form should be submitted to http://www.usps.com/zip4/zip_response.jsp when the Submit input is clicked. The only input element other than the Submit is a single text field that takes 5 or fewer characters. Other types of input element are described in httphttp://www.w3.org/TR/html4/interact/forms.html.

The basic operation is to pass a fully prepared HttpURLConnection connected to the POST target URL into the Parser, either in the constructor or via the setConnection() method. To condition the connection, use the setRequestMethod() method to set the POST operation, and the setRequestProperty() and other explicit method calls. Then write the input fields as an ampersand concatenation ("input1=value1&input2=value2&...") into the PrintWriter obtained by a call to getOutputStream().

The following sample program illustrates the principles using a StringBean, but the same code could be used with a Parser by replacing the last three lines in the try block with:

        parser = new Parser ();
        parser.setConnection (connection);
        // ... do parser operations

httpSource Code. httpPretty Print Source Code

/*
 * Zip.java
 * POST zip code to look up cities.
 *
 * Created on April 20, 2003, 11:09 PM
 */

import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

import org.htmlparser.beans.StringBean;

/**
 * POST zip code to look up cities.
 * @author Derrick Oswald
 */
public class Zip
{
    String mText; // text extracted from the response to the POST request

    /**
     * Creates a new instance of Zip
     */
    public Zip (String code)
    {
        URL url;
        HttpURLConnection connection;
        StringBuffer buffer;
        PrintWriter out;
        StringBean bean;

        try
        {
            // from the 'action' (relative to the refering page)
            url = new URL ("http://www.usps.com/zip4/zip_response.jsp");
            connection = (HttpURLConnection)url.openConnection ();
            connection.setRequestMethod ("POST");

            connection.setDoOutput (true);
            connection.setDoInput (true);
            connection.setUseCaches (false);

            // more or less of these may be required
            // see Request Header Definitions: http://www.ietf.org/rfc/rfc2616.txt
            connection.setRequestProperty ("Accept-Charset", "*");
            connection.setRequestProperty ("Referer", "http://www.usps.com/zip4/citytown.htm");
            connection.setRequestProperty ("User-Agent", "Zip.java/1.0");

            buffer = new StringBuffer (1024);
            // 'input' fields separated by ampersands (&)
            buffer.append ("zipcode=");
            buffer.append (code);
            // buffer.append ("&");
            // etc.

            out = new PrintWriter (connection.getOutputStream ());
            out.print (buffer);
            out.close ();

            bean = new StringBean ();
            bean.setConnection (connection);
            mText = bean.getStrings ();
        }
        catch (Exception e)
        {
            mText = e.getMessage ();
        }

    }

    public String getText ()
    {
        return (mText);
    }

    /**
     * Program mainline.
     * @param args The zip code to look up.
     */
    public static void main (String[] args)
    {
        if (0 >= args.length)
            System.out.println ("Usage:  java Zip <zipcode>");
        else
            System.out.println (new Zip (args[0]).getText ());
    }
}
Page Execution took 0.413 seconds

libhtmlparser-java-1.6.20060610/docs/wiki/index.html0000644000175000017500000001571210063170312020723 0ustar tiagotiago PhpWiki - Home Page
  • HTMLParser documentation*

http~This page has moved to http://htmlparser.sourceforge.net/wiki

Welcome to the HTMLParser documentation page. You may visit

Page Execution took 0.372 seconds

libhtmlparser-java-1.6.20060610/docs/htmlparserlogo.jpg0000644000175000017500000001046510056721456021544 0ustar tiagotiagoJFIFHH(Created by Jon Gillette C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222"I !1"AQa2q6brst#34B5DR$%CSu-!1A23Qqa"#45 ?ԥ()JJRRbRT 7Gò҅BtsB;=%]'-'}_x}ո_Tq4Ix1XΞ!VjV91nR=V}ՌȽ[sY/P0.. /mFl8p9hGIwov,Pt()JJRRF^;#qf#rJHRR^t3 R,s9ݬ1c5#Q6BS'j0)JTJW.UԴʻ0g d-DڵlX"uZl{7ۚRqTG.|Vuie>"[rTaܤ-x*zE\6 & db.羦/bk:W DZ}ۉ P'"V~]_iu!sFIJ\u3SR= 2/5)YǷz+<䝑۷[%aP2cH*G<Ջ_hux-5{x !C]rWO% {ݼbȗD3 ԱӁ)O[VXoqKihu yaƐ!7T9UWi5|xqIqtF D6Jr|XGDiF[!62{TxKzyꋟ.Qi*^eX»3B5%SC{{tr>=$ER+u~Tk TD?Z\s(u~Hy-A _* ()JJRWֆS(% Rp4Z% Rpm*-jNtp2|Ĥ栲;%U?zޠzphH#98˭Q.Y ʖJI9њr騯" 9,dt#CCWTcjVerF%@x5'do%o#^d $CXHA枵;% ; JX}V,0NT _ؚr4CSZAqیF8I'%GR;)P)JJRW֖ХA(HʔN)kPJR2TNve^M'A7[[bRsPYchFUnZ-)6Ԝ:d񪖖]0uU;iWuL8im8/>i=4թ}'}gڥ^I]ЃB`MnR}z] ~*9k.4թP+YWj{VRry}ic)JT)JP R)@)JP R>ݻf-\q-8RzsiJжX2g@(~%)!kQ@Q51JW=#Х)T$R()JJRR(libhtmlparser-java-1.6.20060610/docs/index.html0000644000175000017500000000144610057467300017770 0ustar tiagotiago HTMLParser Home Page <body bgcolor="#FFFFFF"> <P>SORRY! YOU NEED FRAMES ENABLED BROWSER FOR THIS WEBSITE" </body> libhtmlparser-java-1.6.20060610/docs/articles/0000755000175000017500000000000010442553320017570 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/docs/articles/quest.html0000644000175000017500000000706007775656354021654 0ustar tiagotiago The Quest for HTMLParser

The Quest for HTMLParser

by Dhaval Udani

In 1984, Citicorp Overseas Software Limited(COSL) was created by Citibank to produce low cost software for its various banking operations. Citicorp Information Technologies India Ltd.(CITIL), now know ans i-Flex, was formed out of this company around 10 years back to service non-Citi clients. In 2001, COSL was merged with another arm of Citibank, India known as Global Support Unit(GSU) to form OrbiTech Solutions Ltd which in turn merged with Polaris Software Labs in 2002. With its expertise in the banking domain, OrbiTech undertook to develop a suite of banking products. However with several players in the market, it needed something innovative and fast. With an aim of increasing productivity, an initiative was started to develop tools, code generators and reusable components to be used within the organization. It is in this aspect that I got involved with HTMLParser.

We were developing an MVC-based framework for performing static maintenance of information like bank accounts, customer records etc. To simplify development for users, we were asking our users to develop simple static HTML pages which we would convert to JSP pages capable of showing dynamic data. It is towards this goal that I required a tool which could parse HTML tags and allow me to play with them. I searched high and low for various options. One of them was the HTML DOM standard and APIs of W3C. However their inability to process JSP tags and inability to change the tags and reproduce them meant I had to discard it. Another implementation of the DOM standard was provided by NekoHTML.

However it had similar problems and was too complex. These factors drew me to HTMLParser. Initially it was difficlt to understand but once I had written my first parsing routine, it was too easy. I especially love the easy manner in which scanners are registered and removed so that scanning is enabled or disabled for particular tags. This feature is absolutely fantastic. Having to search for tags which were not written in the original HTMLParser caused a slight flutter in my heart. However Somik encouraged me not to give up and write my own tag-scanner pairs.

This was the toughest activity because it meant not only delving deep in the code but also the psyche behind the design. Somehow I got through the first one and then it just flowed. I have now written 5 tag-scanner pairs. Its just too simple once you get the hang of it. The constant ongoing development and effort at bug-fixing also meant that any bugs reported by me would be fixed and a release would be available soon.

Dhaval Udani is a Senior Analyst at Orbitech Solutions Ltd. and a developer on the HTMLParser project.

libhtmlparser-java-1.6.20060610/docs/articles/index.html0000644000175000017500000000072007775656354021616 0ustar tiagotiago HTMLParser Articles

Articles

The Quest for HTMLParser - Dhaval Udani

libhtmlparser-java-1.6.20060610/docs/bug.html0000644000175000017500000000257010407334454017437 0ustar tiagotiago Bug Reports

Bug Reports

You can submit bug reports here. Before you proceed, please note that you must login to sourceforge. This is required so that bug status reports can be forwarded to you. If you do not have a sourceforge login, you can get one here.

Checklist BEFORE you submit your bug report :

  • Have you pretty much isolated the problem to the HTML Parser component.
  • Have you checked the list of older bug reports
  • Have you written a testcase to simulate your bug? We do take reports without testcases, but please note that such reports may take longer for us to respond to.

Once you are ready, click here to submit your report (upload your testcase as a file attachment).

libhtmlparser-java-1.6.20060610/docs/htmlparser.jpg0000644000175000017500000002353010056721456020660 0ustar tiagotiagoJFIFHHCreated with The GIMPC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222:"Q !1AQaq"267BRst45bru#3S%CTDUVc/!12AQq3a"4R ?DDD@DDD@DD-] BscyаK_!Ds!WW̫Q kHqZj <Ö>곩l[{ԟ4/B;#wiquĒ9g%|7s={G}*Vt,I167 s,{+AdSjwT@kǭniO3$`#аs*/7h*mj9 Ag (}pVOo|T.P:Lj@d""" """ """ $Y@~'M5Yݤ!u⽟'#wwؽPoۗ.wY" """ 0nK~0$oJV[kSLy=NW״9p( %P\[OQ9{[OUDb/owdoRJ׎B}q@IQDDD@DDD@DDj&uQT?gG_$+ϼݍSr|ax{AHƆԶkS!D@DDD@Q=AboV7 e],NhySC;GgR _jeM>[ݖ8sc? Q6fTw䧧$⚙6ߎ.GN[KWF(z ^I$OVͫo cOaUt*_jW:_D:]_k2p* @'1 ssA<:; lDǚ 5饹3(.LnTԜKx*'KO49>7zBTWh}{*KϮq Xnyv'cMhs\ӐAU ]&Q2n>]f2n>WWu<# K6ih>&4C|v}|2~HEGvSR-E3&Gҳ1wHeF4D/;y8,Y:qs,L+}*ڱ.fH] 2;.WB˃r ^ͫč#'{!u=Z98OSzqmLܱl2@ErYUqv2{i {g`ߧԅB`g~5TYkk)NSkiB^S>{oGOm' -~s{}W* ?VwyP`O]}eCUSGH#M;AdMvn٫NKLyĸ~])N]f2n>TW<# K6ih>&4C|v}|2~HNZ ~'n7ItùZ_&Ur+s0{MOПv2^3KO3&G+,{{W>ص$XkL {<NU]|ҷ9!e4,oF G>ݧUU=RPi]텐]JwfhN ǩ?'Vό_2VW$cAkpAP_xl/y\{AqҌ HJg+wOkkYGV#i=N-v-B˃WƖp8'#R*ILpJy6ZVC]%kD~+]K\B;9*ĆyY) Uβhq=Uzmx}>,򺆂^U.5JUMS;+;;9).ճ+pLw.44EI])<@\n QVMU1{vRij-E$~OJ)Gw[@#]{gZ{O o(kG&(I.V?ﱴtLɨ9k3ہ[AyGMd?v_u(cAYFqQQл,adi{.A &*tSSҺ& :39'ݹDԳfvܺڏ/V( dFc^ 9x/k &a7 6ldA!H;z1"0\,hC'aѓ*Uh+ƒݖ )nV;ԧPmV]qi|[Uu²Tgw9&yqgCwtuc-e+e[F2Q0ٵZ[&mk<3>oPҪYf"ԀAF?#ݲJ>S=k%y5X^T蕮T(g1KPC^;¬(5 '8wu٭_&SP-=t3ز=CX6ۑUH.4YPOHs*Oӗ؟SGETCA=}8=/#~>xlU:I5,w#vRlGe{>\ɴ~tEGB# L/&ŗAu}:_Or-g뽥LvMGrPϧ{JEz/=T?Hї:pn\겝SҿMwW&o9ѽ JW v#}88^v~ jyDѻt]2.pĹbCt?ciq,*cM+/G+xs^T9Z{o1m8ONN;XUbhD_ eOyudՎ{˫'Ƭu}|jG;mk oϛ„/A1E|G:h]t>uкs0%7 yv5gruJF@{ګgK%s]E2n>]f2n>\"mOR͚|!>rOrf>9'ݹuj_ _:QD5&l:mS:gpzqrܥuǿhO]n7j],LxnӜՅsqsI.'$I^4' p72{v0턊MoѭŋKu%GGlP)LJ`V۹Qy@ &k8džid0DȢ`XƆJN+j$ӷNnE{5= yd@ଚjZz8, m hz[tyf0QjǟtnC IsQ۩xn:g}yQ""V #n4T~,;a 1T-'\be]t,Vӥ;T _#\Fqsn/ G#{KBx?ɏBSԾ;xΎ眜G:h]tcm^ nh|BPy}0R;dI!޽:xY Mc@z""" """ ",;ҎnvO˜`+)7]i5m7Y_]M)u{RtFm8mܩ ;{{Gcj]ݯz4MH};hmY~SuE$`TS ñ\QxU*jxʒd-zh̚!\7{T6ks({Ƹ/r|u~sWPtӻX+ItvOO($a+JoeXJEM,X\c# /ϭpG)@LJ<`%-E\ݴ"1 }oo@ƴ,ZU$f!n9<[@CͳoY}oWY&Gёcv) 4M= )9>$a`sZ)voD7?_5D>gyD5T`s><Ϭ-M|w#v:!m6oYCi[ EKrRT@h/ZJZڪc1h_#G["VHk!D^C[kl;#nhȎ M#m2z+²&?ywb1=Đ8H&topb,{2?QD@DDD@DDa.vktx\{iYIK5}|톞!9;J=kku}yDOg)ݮ>Cun;zzl;w{EU.~Vݲ,5eΆK52<zzמ 8y ,tCX .ϡWݥoSV@&m^oҸ9ЇYXꮑS1ߚ&2~KXljp5]SyctmqΆvG.G.'%`]tB 8qi=qոb= s;ǓMݛUD˩&8~PԻ#Z5~WӼ#lu;уܼlWXe7]gu.Y<}ǟ{ZHػy^ަbǴ 7~ m=;}:(JX&M>"-LD@E5.{Z8NQK씕"ݫP7[F0\š}5c8[_\{S_.lj]L7nPXLop$+bo&B" """ ""J;5j !Ӕܚ.7 -vY6"Y+%.K6 SzmE΂!{|8E,IT70IevCV܏o,K8>\YNQq!_h]f1!Ӕܚ.7 -vY6"Y+%.K6""" """ """ ""J;5j Cun;zzl;w{EU.~Vݲ/y ,tCX $QK<̆:Id!c\y͞Eevm8?vY65:}u͞C)s5]n@<[NPwilE,VK\FlDDD@DDD@DDD@DD%5ut톞&9|8]kY[ߊ ggvV*h)#ſđ$1o881yUjt,TUvR{B)gI,5`˜O EacB0e'_ \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done HTMLPARSER_HOME=`dirname "$PRG"`/.. cd "$saveddir" # make it fully qualified HTMLPARSER_HOME=`cd "$HTMLPARSER_HOME" && pwd` fi if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD=`which java 2> /dev/null ` if [ -z "$JAVACMD" ] ; then JAVACMD=java fi fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi if [ -n "$CLASSPATH" ] ; then LOCALCLASSPATH="$CLASSPATH" fi HTMLPARSER_LIB="${HTMLPARSER_HOME}/lib" # add in the parser .jar file if [ -z "$LOCALCLASSPATH" ] ; then LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar" else LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar":"$LOCALCLASSPATH" fi # handle 1.1x JDKs if [ -n "$JAVA_HOME" ] ; then if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" fi fi "$JAVACMD" -classpath "$LOCALCLASSPATH" org.htmlparser.parserapplications.SiteCapturer "$@" libhtmlparser-java-1.6.20060610/bin/lexer.cmd0000755000175000017500000000343010420707510017407 0ustar tiagotiago@echo off rem HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML rem http://sourceforge.org/projects/htmlparser rem Copyright (C) 2005 Derrick Oswald rem rem Revision Control Information rem rem $Source: /cvsroot/htmlparser/htmlparser/bin/lexer.cmd,v $ rem $Author: derrickoswald $ rem $Date: 2006/04/17 13:51:19 $ rem $Revision: 1.2 $ rem rem This library is free software; you can redistribute it and/or rem modify it under the terms of the GNU Lesser General Public rem License as published by the Free Software Foundation; either rem version 2.1 of the License, or (at your option) any later version. rem rem This library is distributed in the hope that it will be useful, rem but WITHOUT ANY WARRANTY; without even the implied warranty of rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU rem Lesser General Public License for more details. rem rem You should have received a copy of the GNU Lesser General Public rem License along with this library; if not, write to the Free Software rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA rem setlocal enableextensions if errorlevel 1 goto no_extensions_error for %%i in ("%0") do set cmd_path=%%~dpi for /D %%i in ("%cmd_path%..\lib\") do set lib_path=%%~dpi if not exist "%lib_path%htmllexer.jar" goto no_jar_error for %%i in (java.exe) do set java_executable=%%~$PATH:i if "%java_executable%"=="" goto no_java_error @echo on %java_executable% -classpath "%lib_path%htmllexer.jar" org.htmlparser.lexer.Lexer %1 %2 @echo off goto end :no_extensions_error echo Unable to use CMD extensions goto end :no_jar_error echo Unable to find htmllexer.jar goto end :no_java_error echo Unable to find java.exe goto end :end libhtmlparser-java-1.6.20060610/bin/linkextractor.cmd0000755000175000017500000000347210420707510021167 0ustar tiagotiago@echo off rem HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML rem http://sourceforge.org/projects/htmlparser rem Copyright (C) 2005 Derrick Oswald rem rem Revision Control Information rem rem $Source: /cvsroot/htmlparser/htmlparser/bin/linkextractor.cmd,v $ rem $Author: derrickoswald $ rem $Date: 2006/04/17 13:51:19 $ rem $Revision: 1.2 $ rem rem This library is free software; you can redistribute it and/or rem modify it under the terms of the GNU Lesser General Public rem License as published by the Free Software Foundation; either rem version 2.1 of the License, or (at your option) any later version. rem rem This library is distributed in the hope that it will be useful, rem but WITHOUT ANY WARRANTY; without even the implied warranty of rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU rem Lesser General Public License for more details. rem rem You should have received a copy of the GNU Lesser General Public rem License along with this library; if not, write to the Free Software rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA rem setlocal enableextensions if errorlevel 1 goto no_extensions_error for %%i in ("%0") do set cmd_path=%%~dpi for /D %%i in ("%cmd_path%..\lib\") do set lib_path=%%~dpi if not exist "%lib_path%htmlparser.jar" goto no_jar_error for %%i in (java.exe) do set java_executable=%%~$PATH:i if "%java_executable%"=="" goto no_java_error @echo on %java_executable% -classpath "%lib_path%htmlparser.jar" org.htmlparser.parserapplications.LinkExtractor %1 %2 @echo off goto end :no_extensions_error echo Unable to use CMD extensions goto end :no_jar_error echo Unable to find htmlparser.jar goto end :no_java_error echo Unable to find java.exe goto end :end libhtmlparser-java-1.6.20060610/bin/filterbuilder0000755000175000017500000000244410203775032020371 0ustar tiagotiago#! /bin/sh if [ -z "$HTMLPARSER_HOME" ] ; then ## resolve links - $0 may be a link to the home PRG="$0" progname=`basename "$0"` saveddir=`pwd` # need this for relative symlinks dirname_prg=`dirname "$PRG"` cd "$dirname_prg" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done HTMLPARSER_HOME=`dirname "$PRG"`/.. cd "$saveddir" # make it fully qualified HTMLPARSER_HOME=`cd "$HTMLPARSER_HOME" && pwd` fi if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD=`which java 2> /dev/null ` if [ -z "$JAVACMD" ] ; then JAVACMD=java fi fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi HTMLPARSER_LIB="${HTMLPARSER_HOME}/lib" "$JAVACMD" -Xmx256M -classpath "${HTMLPARSER_LIB}/filterbuilder.jar:${HTMLPARSER_LIB}/htmlparser.jar" org.htmlparser.parserapplications.filterbuilder.FilterBuilder "$@" libhtmlparser-java-1.6.20060610/bin/parser0000755000175000017500000000315407746445210017042 0ustar tiagotiago#! /bin/sh if [ -z "$HTMLPARSER_HOME" ] ; then ## resolve links - $0 may be a link to the home PRG="$0" progname=`basename "$0"` saveddir=`pwd` # need this for relative symlinks dirname_prg=`dirname "$PRG"` cd "$dirname_prg" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done HTMLPARSER_HOME=`dirname "$PRG"`/.. cd "$saveddir" # make it fully qualified HTMLPARSER_HOME=`cd "$HTMLPARSER_HOME" && pwd` fi if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD=`which java 2> /dev/null ` if [ -z "$JAVACMD" ] ; then JAVACMD=java fi fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi if [ -n "$CLASSPATH" ] ; then LOCALCLASSPATH="$CLASSPATH" fi HTMLPARSER_LIB="${HTMLPARSER_HOME}/lib" # add in the parser .jar file if [ -z "$LOCALCLASSPATH" ] ; then LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar" else LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar":"$LOCALCLASSPATH" fi # handle 1.1x JDKs if [ -n "$JAVA_HOME" ] ; then if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" fi fi "$JAVACMD" -classpath "$LOCALCLASSPATH" org.htmlparser.Parser "$@" libhtmlparser-java-1.6.20060610/bin/thumbelina.cmd0000755000175000017500000000400310420707510020415 0ustar tiagotiago@echo off rem HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML rem http://sourceforge.org/projects/htmlparser rem Copyright (C) 2005 Derrick Oswald rem rem Revision Control Information rem rem $Source: /cvsroot/htmlparser/htmlparser/bin/thumbelina.cmd,v $ rem $Author: derrickoswald $ rem $Date: 2006/04/17 13:51:19 $ rem $Revision: 1.2 $ rem rem This library is free software; you can redistribute it and/or rem modify it under the terms of the GNU Lesser General Public rem License as published by the Free Software Foundation; either rem version 2.1 of the License, or (at your option) any later version. rem rem This library is distributed in the hope that it will be useful, rem but WITHOUT ANY WARRANTY; without even the implied warranty of rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU rem Lesser General Public License for more details. rem rem You should have received a copy of the GNU Lesser General Public rem License along with this library; if not, write to the Free Software rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA rem setlocal enableextensions if errorlevel 1 goto no_extensions_error for %%i in ("%0") do set cmd_path=%%~dpi for /D %%i in ("%cmd_path%..\lib\") do set lib_path=%%~dpi if not exist "%lib_path%htmllexer.jar" goto no_htmllexer_jar_error if not exist "%lib_path%thumbelina.jar" goto no_thumbelina_jar_error for %%i in (java.exe) do set java_executable=%%~$PATH:i if "%java_executable%"=="" goto no_java_error @echo on %java_executable% -Xmx256M -classpath "%lib_path%thumbelina.jar;%lib_path%htmllexer.jar" org.htmlparser.lexerapplications.thumbelina.Thumbelina %1 %2 @echo off goto end :no_extensions_error echo Unable to use CMD extensions goto end :no_htmllexer_jar_error echo Unable to find htmllexer.jar goto end :no_thumbelina_jar_error echo Unable to find thumbelina.jar goto end :no_java_error echo Unable to find java.exe goto end :end libhtmlparser-java-1.6.20060610/bin/lexer0000755000175000017500000000315607733731336016672 0ustar tiagotiago#! /bin/sh if [ -z "$HTMLPARSER_HOME" ] ; then ## resolve links - $0 may be a link to the home PRG="$0" progname=`basename "$0"` saveddir=`pwd` # need this for relative symlinks dirname_prg=`dirname "$PRG"` cd "$dirname_prg" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done HTMLPARSER_HOME=`dirname "$PRG"`/.. cd "$saveddir" # make it fully qualified HTMLPARSER_HOME=`cd "$HTMLPARSER_HOME" && pwd` fi if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD=`which java 2> /dev/null ` if [ -z "$JAVACMD" ] ; then JAVACMD=java fi fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi if [ -n "$CLASSPATH" ] ; then LOCALCLASSPATH="$CLASSPATH" fi HTMLPARSER_LIB="${HTMLPARSER_HOME}/lib" # add in the lexer .jar file if [ -z "$LOCALCLASSPATH" ] ; then LOCALCLASSPATH="${HTMLPARSER_LIB}/htmllexer.jar" else LOCALCLASSPATH="${HTMLPARSER_LIB}/htmllexer.jar":"$LOCALCLASSPATH" fi # handle 1.1x JDKs if [ -n "$JAVA_HOME" ] ; then if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" fi fi "$JAVACMD" -classpath "$LOCALCLASSPATH" org.htmlparser.lexer.Lexer "$@" libhtmlparser-java-1.6.20060610/bin/parser.cmd0000755000175000017500000000343110420707510017565 0ustar tiagotiago@echo off rem HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML rem http://sourceforge.org/projects/htmlparser rem Copyright (C) 2005 Derrick Oswald rem rem Revision Control Information rem rem $Source: /cvsroot/htmlparser/htmlparser/bin/parser.cmd,v $ rem $Author: derrickoswald $ rem $Date: 2006/04/17 13:51:19 $ rem $Revision: 1.2 $ rem rem This library is free software; you can redistribute it and/or rem modify it under the terms of the GNU Lesser General Public rem License as published by the Free Software Foundation; either rem version 2.1 of the License, or (at your option) any later version. rem rem This library is distributed in the hope that it will be useful, rem but WITHOUT ANY WARRANTY; without even the implied warranty of rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU rem Lesser General Public License for more details. rem rem You should have received a copy of the GNU Lesser General Public rem License along with this library; if not, write to the Free Software rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA rem setlocal enableextensions if errorlevel 1 goto no_extensions_error for %%i in ("%0") do set cmd_path=%%~dpi for /D %%i in ("%cmd_path%..\lib\") do set lib_path=%%~dpi if not exist "%lib_path%htmlparser.jar" goto no_jar_error for %%i in (java.exe) do set java_executable=%%~$PATH:i if "%java_executable%"=="" goto no_java_error @echo on %java_executable% -classpath "%lib_path%htmlparser.jar" org.htmlparser.Parser %1 %2 @echo off goto end :no_extensions_error echo Unable to use CMD extensions goto end :no_jar_error echo Unable to find htmlparser.jar goto end :no_java_error echo Unable to find java.exe goto end :end libhtmlparser-java-1.6.20060610/bin/linkextractor0000755000175000017500000000320607774407532020443 0ustar tiagotiago#! /bin/sh if [ -z "$HTMLPARSER_HOME" ] ; then ## resolve links - $0 may be a link to the home PRG="$0" progname=`basename "$0"` saveddir=`pwd` # need this for relative symlinks dirname_prg=`dirname "$PRG"` cd "$dirname_prg" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done HTMLPARSER_HOME=`dirname "$PRG"`/.. cd "$saveddir" # make it fully qualified HTMLPARSER_HOME=`cd "$HTMLPARSER_HOME" && pwd` fi if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD=`which java 2> /dev/null ` if [ -z "$JAVACMD" ] ; then JAVACMD=java fi fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi if [ -n "$CLASSPATH" ] ; then LOCALCLASSPATH="$CLASSPATH" fi HTMLPARSER_LIB="${HTMLPARSER_HOME}/lib" # add in the parser .jar file if [ -z "$LOCALCLASSPATH" ] ; then LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar" else LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar":"$LOCALCLASSPATH" fi # handle 1.1x JDKs if [ -n "$JAVA_HOME" ] ; then if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" fi fi "$JAVACMD" -classpath "$LOCALCLASSPATH" org.htmlparser.parserapplications.LinkExtractor "$@" libhtmlparser-java-1.6.20060610/bin/beanybaby.cmd0000755000175000017500000000344510420707510020232 0ustar tiagotiago@echo off rem HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML rem http://sourceforge.org/projects/htmlparser rem Copyright (C) 2005 Derrick Oswald rem rem Revision Control Information rem rem $Source: /cvsroot/htmlparser/htmlparser/bin/beanybaby.cmd,v $ rem $Author: derrickoswald $ rem $Date: 2006/04/17 13:51:19 $ rem $Revision: 1.2 $ rem rem This library is free software; you can redistribute it and/or rem modify it under the terms of the GNU Lesser General Public rem License as published by the Free Software Foundation; either rem version 2.1 of the License, or (at your option) any later version. rem rem This library is distributed in the hope that it will be useful, rem but WITHOUT ANY WARRANTY; without even the implied warranty of rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU rem Lesser General Public License for more details. rem rem You should have received a copy of the GNU Lesser General Public rem License along with this library; if not, write to the Free Software rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA rem setlocal enableextensions if errorlevel 1 goto no_extensions_error for %%i in ("%0") do set cmd_path=%%~dpi for /D %%i in ("%cmd_path%..\lib\") do set lib_path=%%~dpi if not exist "%lib_path%htmlparser.jar" goto no_jar_error for %%i in (java.exe) do set java_executable=%%~$PATH:i if "%java_executable%"=="" goto no_java_error @echo on %java_executable% -classpath "%lib_path%htmlparser.jar" org.htmlparser.beans.BeanyBaby %1 %2 @echo off goto end :no_extensions_error echo Unable to use CMD extensions goto end :no_jar_error echo Unable to find htmlparser.jar goto end :no_java_error echo Unable to find java.exe goto end :end libhtmlparser-java-1.6.20060610/bin/translate0000755000175000017500000000316410011540672017527 0ustar tiagotiago#! /bin/sh if [ -z "$HTMLPARSER_HOME" ] ; then ## resolve links - $0 may be a link to the home PRG="$0" progname=`basename "$0"` saveddir=`pwd` # need this for relative symlinks dirname_prg=`dirname "$PRG"` cd "$dirname_prg" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done HTMLPARSER_HOME=`dirname "$PRG"`/.. cd "$saveddir" # make it fully qualified HTMLPARSER_HOME=`cd "$HTMLPARSER_HOME" && pwd` fi if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD=`which java 2> /dev/null ` if [ -z "$JAVACMD" ] ; then JAVACMD=java fi fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi if [ -n "$CLASSPATH" ] ; then LOCALCLASSPATH="$CLASSPATH" fi HTMLPARSER_LIB="${HTMLPARSER_HOME}/lib" # add in the parser .jar file if [ -z "$LOCALCLASSPATH" ] ; then LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar" else LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar":"$LOCALCLASSPATH" fi # handle 1.1x JDKs if [ -n "$JAVA_HOME" ] ; then if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" fi fi "$JAVACMD" -classpath "$LOCALCLASSPATH" org.htmlparser.util.Translate "$@" libhtmlparser-java-1.6.20060610/bin/filterbuilder.cmd0000755000175000017500000000403610420707510021127 0ustar tiagotiago@echo off rem HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML rem http://sourceforge.org/projects/htmlparser rem Copyright (C) 2005 Derrick Oswald rem rem Revision Control Information rem rem $Source: /cvsroot/htmlparser/htmlparser/bin/filterbuilder.cmd,v $ rem $Author: derrickoswald $ rem $Date: 2006/04/17 13:51:19 $ rem $Revision: 1.2 $ rem rem This library is free software; you can redistribute it and/or rem modify it under the terms of the GNU Lesser General Public rem License as published by the Free Software Foundation; either rem version 2.1 of the License, or (at your option) any later version. rem rem This library is distributed in the hope that it will be useful, rem but WITHOUT ANY WARRANTY; without even the implied warranty of rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU rem Lesser General Public License for more details. rem rem You should have received a copy of the GNU Lesser General Public rem License along with this library; if not, write to the Free Software rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA rem setlocal enableextensions if errorlevel 1 goto no_extensions_error for %%i in ("%0") do set cmd_path=%%~dpi for /D %%i in ("%cmd_path%..\lib\") do set lib_path=%%~dpi if not exist "%lib_path%htmlparser.jar" goto no_htmlparser_jar_error if not exist "%lib_path%filterbuilder.jar" goto no_filterbuilder_jar_error for %%i in (java.exe) do set java_executable=%%~$PATH:i if "%java_executable%"=="" goto no_java_error @echo on %java_executable% -Xmx256M -classpath "%lib_path%filterbuilder.jar;%lib_path%htmlparser.jar" org.htmlparser.parserapplications.filterbuilder.FilterBuilder %1 @echo off goto end :no_extensions_error echo Unable to use CMD extensions goto end :no_htmlparser_jar_error echo Unable to find htmlparser.jar goto end :no_filterbuilder_jar_error echo Unable to find filterbuilder.jar goto end :no_java_error echo Unable to find java.exe goto end :end libhtmlparser-java-1.6.20060610/bin/beanybaby0000755000175000017500000000316507775656356017525 0ustar tiagotiago#! /bin/sh if [ -z "$HTMLPARSER_HOME" ] ; then ## resolve links - $0 may be a link to the home PRG="$0" progname=`basename "$0"` saveddir=`pwd` # need this for relative symlinks dirname_prg=`dirname "$PRG"` cd "$dirname_prg" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done HTMLPARSER_HOME=`dirname "$PRG"`/.. cd "$saveddir" # make it fully qualified HTMLPARSER_HOME=`cd "$HTMLPARSER_HOME" && pwd` fi if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD=`which java 2> /dev/null ` if [ -z "$JAVACMD" ] ; then JAVACMD=java fi fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi if [ -n "$CLASSPATH" ] ; then LOCALCLASSPATH="$CLASSPATH" fi HTMLPARSER_LIB="${HTMLPARSER_HOME}/lib" # add in the parser .jar file if [ -z "$LOCALCLASSPATH" ] ; then LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar" else LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar":"$LOCALCLASSPATH" fi # handle 1.1x JDKs if [ -n "$JAVA_HOME" ] ; then if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" fi fi "$JAVACMD" -classpath "$LOCALCLASSPATH" org.htmlparser.beans.BeanyBaby "$@" libhtmlparser-java-1.6.20060610/bin/stringextractor0000755000175000017500000000321007775656356021022 0ustar tiagotiago#! /bin/sh if [ -z "$HTMLPARSER_HOME" ] ; then ## resolve links - $0 may be a link to the home PRG="$0" progname=`basename "$0"` saveddir=`pwd` # need this for relative symlinks dirname_prg=`dirname "$PRG"` cd "$dirname_prg" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done HTMLPARSER_HOME=`dirname "$PRG"`/.. cd "$saveddir" # make it fully qualified HTMLPARSER_HOME=`cd "$HTMLPARSER_HOME" && pwd` fi if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD=`which java 2> /dev/null ` if [ -z "$JAVACMD" ] ; then JAVACMD=java fi fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi if [ -n "$CLASSPATH" ] ; then LOCALCLASSPATH="$CLASSPATH" fi HTMLPARSER_LIB="${HTMLPARSER_HOME}/lib" # add in the parser .jar file if [ -z "$LOCALCLASSPATH" ] ; then LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar" else LOCALCLASSPATH="${HTMLPARSER_LIB}/htmlparser.jar":"$LOCALCLASSPATH" fi # handle 1.1x JDKs if [ -n "$JAVA_HOME" ] ; then if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" fi fi "$JAVACMD" -classpath "$LOCALCLASSPATH" org.htmlparser.parserapplications.StringExtractor "$@" libhtmlparser-java-1.6.20060610/bin/thumbelina0000755000175000017500000000243110203710002017643 0ustar tiagotiago#! /bin/sh if [ -z "$HTMLPARSER_HOME" ] ; then ## resolve links - $0 may be a link to the home PRG="$0" progname=`basename "$0"` saveddir=`pwd` # need this for relative symlinks dirname_prg=`dirname "$PRG"` cd "$dirname_prg" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done HTMLPARSER_HOME=`dirname "$PRG"`/.. cd "$saveddir" # make it fully qualified HTMLPARSER_HOME=`cd "$HTMLPARSER_HOME" && pwd` fi if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD=`which java 2> /dev/null ` if [ -z "$JAVACMD" ] ; then JAVACMD=java fi fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi HTMLPARSER_LIB="${HTMLPARSER_HOME}/lib" "$JAVACMD" -Xmx256M -classpath "${HTMLPARSER_LIB}/thumbelina.jar:${HTMLPARSER_LIB}/htmllexer.jar" org.htmlparser.lexerapplications.thumbelina.Thumbelina "$@" libhtmlparser-java-1.6.20060610/bin/sitecapturer.cmd0000755000175000017500000000347310420707510021011 0ustar tiagotiago@echo off rem HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML rem http://sourceforge.org/projects/htmlparser rem Copyright (C) 2005 Derrick Oswald rem rem Revision Control Information rem rem $Source: /cvsroot/htmlparser/htmlparser/bin/sitecapturer.cmd,v $ rem $Author: derrickoswald $ rem $Date: 2006/04/17 13:51:19 $ rem $Revision: 1.2 $ rem rem This library is free software; you can redistribute it and/or rem modify it under the terms of the GNU Lesser General Public rem License as published by the Free Software Foundation; either rem version 2.1 of the License, or (at your option) any later version. rem rem This library is distributed in the hope that it will be useful, rem but WITHOUT ANY WARRANTY; without even the implied warranty of rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU rem Lesser General Public License for more details. rem rem You should have received a copy of the GNU Lesser General Public rem License along with this library; if not, write to the Free Software rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA rem setlocal enableextensions if errorlevel 1 goto no_extensions_error for %%i in ("%0") do set cmd_path=%%~dpi for /D %%i in ("%cmd_path%..\lib\") do set lib_path=%%~dpi if not exist "%lib_path%htmlparser.jar" goto no_jar_error for %%i in (java.exe) do set java_executable=%%~$PATH:i if "%java_executable%"=="" goto no_java_error @echo on %java_executable% -classpath "%lib_path%htmlparser.jar" org.htmlparser.parserapplications.SiteCapturer %1 %2 %3 @echo off goto end :no_extensions_error echo Unable to use CMD extensions goto end :no_jar_error echo Unable to find htmlparser.jar goto end :no_java_error echo Unable to find java.exe goto end :end libhtmlparser-java-1.6.20060610/bin/stringextractor.cmd0000755000175000017500000000347610420707510021544 0ustar tiagotiago@echo off rem HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML rem http://sourceforge.org/projects/htmlparser rem Copyright (C) 2005 Derrick Oswald rem rem Revision Control Information rem rem $Source: /cvsroot/htmlparser/htmlparser/bin/stringextractor.cmd,v $ rem $Author: derrickoswald $ rem $Date: 2006/04/17 13:51:19 $ rem $Revision: 1.2 $ rem rem This library is free software; you can redistribute it and/or rem modify it under the terms of the GNU Lesser General Public rem License as published by the Free Software Foundation; either rem version 2.1 of the License, or (at your option) any later version. rem rem This library is distributed in the hope that it will be useful, rem but WITHOUT ANY WARRANTY; without even the implied warranty of rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU rem Lesser General Public License for more details. rem rem You should have received a copy of the GNU Lesser General Public rem License along with this library; if not, write to the Free Software rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA rem setlocal enableextensions if errorlevel 1 goto no_extensions_error for %%i in ("%0") do set cmd_path=%%~dpi for /D %%i in ("%cmd_path%..\lib\") do set lib_path=%%~dpi if not exist "%lib_path%htmlparser.jar" goto no_jar_error for %%i in (java.exe) do set java_executable=%%~$PATH:i if "%java_executable%"=="" goto no_java_error @echo on %java_executable% -classpath "%lib_path%htmlparser.jar" org.htmlparser.parserapplications.StringExtractor %1 %2 @echo off goto end :no_extensions_error echo Unable to use CMD extensions goto end :no_jar_error echo Unable to find htmlparser.jar goto end :no_java_error echo Unable to find java.exe goto end :end libhtmlparser-java-1.6.20060610/src/0000755000175000017500000000000010714140240015614 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/resources/0000755000175000017500000000000010442554414017640 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/resources/HtmlTaglet.java0000644000175000017500000001732607767441764022604 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/resources/HtmlTaglet.java,v $ // $Author: derrickoswald $ // $Date: 2003/12/16 02:29:56 $ // $Revision: 1.1 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // import com.sun.tools.doclets.Taglet; import com.sun.javadoc.*; import java.util.Map; import org.htmlparser.util.Translate; /** * A JavaDoc Taglet that encodes HTML. * This inline taglet * converts HTML into character references for embedding into * Javadocs. * For example, it converts <html> into &lt;html&gt;. * Typical usage is to embed an example stream of html into the javadoc for * a class or method: *

 * /**
 *  * Gather DIV elements.
 *  * This method takes {@.html <div></div>} pairs and
 *  * constructs nested ...
 * 
* This is useful so that the documentation is readable while coding and when * presented in the generated javadocs. Normally, embedding HTML in the * javadoc documentation requires the use of character entity references, * otherwise the HTML is interpreted by the javadoc tool and is stripped out. * The programmer can manually embed the character translations to pass the * HTML through, but the resultant comment is extremely hard to read and * understand when editing the code directly. Plus there is the added * possibility of an incorrect encoding because of the manual step.

* The use of this taglet requires a 1.4.x or higher JDK, but it is not * expected that users with older JDKs will be generating javadocs when they * are provided in the distribution.

* The name was supposed to be "html", but a warning message is generated * by the javadoc tool if a custom tag name doesn't contain any dots. So the * next best name ".html" is used instead, with a passing resemblance to * directives in nroff. */ public class HtmlTaglet implements Taglet { private static final String NAME = ".html"; /** * Construct a taglet for encoding HTML in doc comments. */ public HtmlTaglet () { } /** * Return the name of this custom taglet. */ public String getName () { return (NAME); } /** * Will return true since {@.html} * can be used in field documentation. * @return true since {@.html} * can be used in field documentation. */ public boolean inField () { return (true); } /** * Will return true since {@.html} * can be used in constructor documentation. * @return true since {@.html} * can be used in constructor documentation. */ public boolean inConstructor () { return (true); } /** * Will return true since {@.html} * can be used in method documentation. * @return true since {@.html} * can be used in method documentation. */ public boolean inMethod () { return (true); } /** * Will return true since {@.html} * can be used in method documentation. * @return true since {@.html} * can be used in overview documentation. */ public boolean inOverview () { return (true); } /** * Will return true since {@.html} * can be used in package documentation. * @return true since {@.html} * can be used in package documentation. */ public boolean inPackage () { return (true); } /** * Will return true since {@.html} * can be used in type documentation (classes or interfaces). * @return true since {@.html} * can be used in type documentation. */ public boolean inType () { return (true); } /** * Will return true since {@.html} * is an inline tag. * @return true since {@.html} * is an inline tag. */ public boolean isInlineTag () { return (true); } /** * Register this Taglet. * @param tagletMap the map to register this tag to. */ public static void register (Map tagletMap) { HtmlTaglet tag = new HtmlTaglet (); tagletMap.put (tag.getName (), tag); } /** * Format the given string to appear "as is" within a JavaDoc comment. * This method is more complicated than it needs to be, since you might * say why not just use PRE tags surrounding the text. Unfortunately, PRE * is a block level tag that breaks the flow of text, preventing inline * operation. Instead we manually format the whitespace (actually just * spaces and newlines) within the string to preserve the format. */ protected String format (String s) { int base; int offset; StringBuffer ret; ret = new StringBuffer (512); base = 0; offset = 0; while (-1 != (offset = s.indexOf ('\n', base))) { ret.append (Translate.encode (s.substring (base, offset))); ret.append ("
\n"); base = offset + 1; } if (base != s.length ()) ret.append (Translate.encode (s.substring (base))); s = ret.toString (); ret.setLength (0); for (int i = 0; i < s.length (); i++) if (' ' == s.charAt (i)) ret.append (" "); else ret.append (s.charAt (i)); return (ret.toString ()); } /** * Given the Tag representation of this custom * tag, return its string representation. * @param tag the Tag representation of this custom tag. */ public String toString (Tag tag) { return (format (tag.text ())); } /** * Given an array of Tags representing this custom * tag, return its string representation. * @param tags the array of Tags representing of this custom tag. */ public String toString(Tag[] tags) { StringBuffer ret; if (0 == tags.length) return (null); else { ret = new StringBuffer (512); for (int i = 0; i < tags.length; i++) { if (i > 0) ret.append ("
\n"); ret.append (format (tags[i].text())); } return (ret.toString ()); } } }libhtmlparser-java-1.6.20060610/src/resources/htmlparser_checks.xml0000644000175000017500000001501710241624436024066 0ustar tiagotiago libhtmlparser-java-1.6.20060610/src/resources/stylesheet.css0000644000175000017500000000226207767441764022570 0ustar tiagotiago/* Javadoc style sheet */ /* Define colors, fonts and other style attributes here to override the defaults */ /* Page background color */ body { background-color: #EEEEEE } /* Headings */ h1 { font-size: 145% } /* Table colors */ .TableHeadingColor { background: #CCFFCC } /* Dark green */ .TableSubHeadingColor { background: #EEFFEE } /* Light green */ .TableRowColor { background: #EEEEEE } /* Grey */ /* Font used in left-hand frame lists */ .FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif } .FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif } .FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif } /* Navigation bar fonts and colors */ .NavBarCell1 { background-color:#EEFFEE;} /* Light green */ .NavBarCell1Rev { background-color:#558B55;} /* Dark green */ .NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;} .NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#EEEEEE;} .NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#EEEEEE;} .NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#EEEEEE;} libhtmlparser-java-1.6.20060610/src/resources/logofiles/0000755000175000017500000000000010442553334021623 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/resources/logofiles/htmlparser_pms.eps0000644000175000017500000312750710057466410025413 0ustar tiagotiago %!PS-Adobe-3.1 EPSF-3.0 %%Title: htmlparser pms.eps %%Creator: Adobe Illustrator(R) 11 %%AI8_CreatorVersion: 11.0.0 %AI9_PrintingDataBegin %%For: Me %%CreationDate: 6/1/04 %%BoundingBox: 0 0 329 275 %%HiResBoundingBox: 0 0 328.5801 274.9629 %%CropBox: 0 0 328.5801 274.9629 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %%Pages: 1 %%DocumentNeededResources: %%DocumentSuppliedResources: procset Adobe_AGM_Image (1.0 0) %%+ procset Adobe_CoolType_Utility_T42 (1.0 0) %%+ procset Adobe_CoolType_Utility_MAKEOCF (1.19 0) %%+ procset Adobe_CoolType_Core (2.23 0) %%+ procset Adobe_AGM_Core (2.0 0) %%+ procset Adobe_AGM_Utils (1.0 0) %%DocumentFonts: %%DocumentNeededFonts: %%DocumentNeededFeatures: %%DocumentSuppliedFeatures: %%DocumentProcessColors: %%DocumentCustomColors: (PANTONE Reflex Blue C) %%+ (PANTONE 430 C) %%CMYKCustomColor: 1 0.7300 0 0.0200 (PANTONE Reflex Blue C) %%+ 0.0500 0 0 0.4500 (PANTONE 430 C) %%RGBCustomColor: %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 108 8 %%BeginData: 10906 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD4FFFAFFFA8A884A87DA87DA87DA884A8A8FFA8FD6CFFA8A87DA8 %7DA884FD07A884A87DA87D7E7DA8A8FFA8FD64FFA8A87EA8A8FFAFFD0DFF %A8FFA8A87DA87DA8A8FD60FFA8A87DA8A8FD17FFA8A87D7D7DA8A8FD5CFF %A8A8A8FD1DFFA8A87DA884FD58FFFD04A8FD20FFA8A87D7E7DA8A8FD54FF %A8A8A8FD25FFA8A87DA8A8FD52FFA8A8FD28FFA8A87D847DA8FD4FFFA8FD %2DFFA8A87DFD4EFFA8FD2FFFA8847DA8FD4BFFA8FD31FFA8A87DA8FD49FF %A8FD33FFA8847DA8A8FD7CFFA8A87DA8FD44FFA8A8FD37FFA8A87DA8A8FD %41FFA9A8FD39FFA8A87DA8FD40FFA87EFD3BFFA8A87DA8FD3EFFA95AFD3D %FFA8A87DFD3EFF53FD3FFFA8847DFD3CFF53A9FD40FF84A8A8FD3AFF7E54 %FD22FF7E532F5453532F542F7EFD16FF7D7EA8FD39FF54A9FD22FF7E0129 %07290729072953FD16FFA87DA8FD38FF7E53FD23FF7E0701290707012901 %7EFD16FFA8A87DAFFD36FFCB29FD24FF7E072907290729072954FD17FFA8 %A87DFD36FF2F54FD24FF7D07010701070607017EFD18FF7D7DA8FD34FFA9 %2FA9FD24FF8407290729072907295AFD19FF7DA8FD34FF542FFD25FF7E29 %060701290707017EFD19FFA87DFD34FF07A9FD25FF7E0129072907290729 %53FD19FFA8A8A8FD32FF7E29FD26FF7E07010706070107017EFD04FFA8FD %15FF7DA8A8FD31FF5353FD08FFA97E7E7EA8A8FD09FFA8A87E7E7EFD0AFF %7E072907290729072954FFFFFFA92F54FD14FFA87DFD32FF07FD0429A9FF %FF7E2901290107012929A8FD05FF7E2907012901070154A8FD07FF7E0701 %2907070129017EFD04FF0629077EA8FD11FFA87DA8FD30FF7E2907290129 %A9FF2F29072907290729072907A8FFFFFF5301290729072907290129A8FD %06FF7E072907290729072954FD04FF290729072953FD11FF7DA8FD11FFA8 %A9A8A9A8A9A8FD11FFA8FD06FF540107060706A929070107060701070607 %010701A9FF2F010701070607010706070129A8FD05FF7D07010701070607 %017EFD04FF0707010701070154A8FD0DFFA8A87DFD12FF07290729077EFD %10FF532FFD06FF2929072907292929072907290729072907290729295407 %29072907290729072907290754FD05FF8407290729072907295AFD04FF29 %072907290729072953FD0DFFA8A8A8FD10FFA829010701297EFD0EFF7E07 %0707FD05FFA8070129070701290707012907070129070701290707012907 %070129070701290707012907A9FD04FF7E29060701290707017EFD04FF07 %0701290707012906070154A8FD0AFFAF7DA8FD10FFA907290729017EFD0C %FFA82F0129072FFD05FFA907290729072907290729072907290729072907 %29072907290729072907290729072907297EFD04FF7E0129072907290729 %53FD04FF2F07290729072907290729012953A9FD08FFA8A8A8FD10FFA807 %010701077DFD0CFF5A0107010729FD05FF53070107010706070107010701 %07060701070607010706070107010701070607010706070154FD04FF7E07 %010706070107017EFD04FFA87E29070107060701070607010701537EFD07 %FF7DA8FD10FFA907290729077EFD0CFF7E290729072FFD05FF7E07290729 %07290729297E7E5407290729072907290729072F7E7E2929072907290729 %072953FD04FF7E072907290729072954FD07FF7E54072907290729072907 %2907292FA9FD05FFA8A8FD0AFFA97E29A9FFFFA807012906077EFFA87E53 %547EFD04FFA97E5301070129077E7EA8FFFF292907070129070729FD04FF %2F0107012907070129012FA9FFFFFF29290707012907070153FD04FF7E07 %012907070129017EFD09FFA9532901290607012907070129012F7EFFFFFF %7DA8FD09FF7E290129A8FFFFFF07290729077E7E290729012929CBFFFF54 %29072907290729072929FFFF5301290729072907A9FD04FF7E2907290729 %07290729A8FD04FFA8062907290729072929FD04FF7E0729072907290729 %54FD0BFFA97E29290729072907290729072953FFFFA87DFD06FFA97E0607 %010701A9FFFFA80701070107290701070607010729FFFF7E010701070607 %01070129FFFF2907010706070129FD05FFA9010706070107060706FD05FF %A807010706070107012FFD04FF7D07010701070607017EFD0EFF7E2F0107 %010706070107012FFFFFA884FD05FF5A29072907290729A8FFFFFF072907 %29072907290729072907297EFF5429072907290729072929FFFF2F072907 %2907292FFD05FFA8290729072907290754FD05FFCB07290729072907292F %FD04FF8407290729072907295AFD10FFA9532F0729072907292FFFFFA97D %FFFFA97E062901070129012F7EFFFFFFA829060701290607012906070129 %015AFF7E01070129070701290629FFFF2907012907070153FD05FFA90129 %07070129070729FD05FFA8070129070701290153FD04FF7E290607012907 %07017EFD12FF2929060701290153FFFFA884FF53290729072907292FA9FD %05FFA90729072907297EA953290729072953FFA9FF53290729072FA8FFA9 %FFFF2F07290729072929FD05FFA8290729072907290753FD06FF07290729 %072907292FFD04FF7E012907290729072953FD0FFF7E5407290729072907 %292FFFFFAF7D0607010701070654A8FD07FFA807010706072FFFFFFF0607 %06070154FFFFFF7E0107010729FD05FF070706070107012FFD05FFA90607 %01070607010729FD05FFA8070107010706070153FD04FF7E070107060701 %07017EFD0CFFA87E29070107060701070607012FFFFFA8A8290729072F7E %FD0AFFA907290729077EFFFFFF540729072953FFFFFF5A290729072FFD05 %FF540729072907292FFD05FFA8290729072907290754FD06FF0729072907 %2907292FFD04FF7E072907290729072954FD0BFF7E2F0729072907290729 %07290754A8FFFFA8A806070129297EFD0AFFA807012906077EFFFFFF2929 %07070154FFFFFF7E0107012929FD05FF2929070701290153FD05FFA90707 %01290707012929FD05FFA8290607012907070153FD04FF7E070129070701 %29017EFD08FFA854070701290707012907070129297EFD04FF7DA8290729 %0729072953FD09FF07290729077EFFFFFF530129072953FFFFFF53290729 %062FFD05FF540129072907292FFD05FFA8290729072907290154FD05FFA9 %072907290729072929FD04FF7E072907290729072954FD06FFA92F290129 %072907290729072907537EFD06FFA8A8A85406070107010701547EFD05FF %A807010701077EFFFFFF290701070153FFFFFF7E0107060729FD05FF5307 %010706070153FD05FFA9010706070107060729FD05FFA807010706070107 %012FFD04FF7D07010701070607017EFD04FF7E2901070107010706070107 %010729A8FD08FF7DA8FFFFFF532907290729072929A9FD04FF0729072907 %7EFFFFFF540729072953FFFFFF532907290729A9FD04FFA8072907290729 %2FFD05FFA8290729072907290754FD05FFA907290729072907292FFD04FF %8407290729072907295AFD04FF290729072907290729072907547EFD0AFF %A8AFFD04FFA85A07070129060701A9FFFFA829060701297EFFFFFF290701 %290154FFFFFF7E0129070701292953FFFFA807012907070153FD05FFA901 %2907070129070729FD05FFA8070129070701290153FD04FF7E2906070129 %0707017EFD04FF0707012907070129010729A9FD0CFF7DFD08FF5A290129 %0729A8FFFFA907290729017EFFFFFF540729072953FFFFFF7E2907290729 %072929FFFFFF29290729072929FD05FFA8290729072907290753FD06FF07 %290729072907292FFD04FF7E012907290729072953FFFFFFCB2907290729 %07290754A8FD0DFFA8A8FD09FFA87E060701A9FFFFA807010701077DFFFF %FF290701070154FD04FF0707010706070129FFFFFF5301070107012FFD05 %FFA9060701070607010729FD05FFA8070107010706070153FD04FF7E0701 %0706070107017EFD04FF06070607010753A9FD0FFFA8A8FD0CFF7E2FA8FF %FFA907290729017EFFFFFF540729072953FD04FFA807290729022907FFFF %FF7E29072907292FFD05FFA8290729072907290754FD06FF072907290729 %07292FFD04FF7E072907290729072954FD04FF290729075AA9FD11FF7DFD %0EFFA9FFFFFFA9FD057EA8FFFFFFFD047E59A9FD05FFA9535A535A53A9FF %FFFFA906070129012FFD05FFA9060701290107012929FD05FFA829010701 %2901070153FD04FF7E07012901070129015AFD04FF012953A9FD12FFA8A8 %FD32FF2F0729292F53FD05FFA82F292F292F292F295AFD06FF292F292F29 %2F292953FD04FFA8292F292F292F29297EFD04FF7EA8FD14FFA8A8FD32FF %530729FD09FFA8FFFFFFA8FFFFFFA8FD07FFA8FFFFFFA8FD0BFFA8FFFFFF %A8FD1BFF7DFD34FF07297EFD47FFA8AFFD34FF53012FFD08FFA8FFFFFFA8 %FD07FFA8FD07FFA8FFFFFFA8FD07FFA8FFA8FD05FFA8FFFFFFA8FFFFFFA8 %FFFFFFA8FD0AFFA8A8FD34FF7E2907A9FD07FF7D597D7D7D597DA8FFFFA8 %FD057DFFFFFFFD077DA8FFFFA87D7D7D527D7DFFA8FD077DFFFFFD077DA8 %FD08FFA8FD36FF290729FD07FF527D527D527D527DA8FF527D527D527DA8 %FFA87D527D527D527D52FFA87D527D527D527DFFA8527D5259525952FFA8 %7D527D527D527D52FD07FF7DFD37FFA907297EFD06FF7D537D84A8597D59 %FFA8FD057D59AFFFFF7D7D59A8A87D597DA8FF527D7DFD04A8FFA8FD047D %A884A8FFFF7D7D59AFA87D597DA8FD05FFA8FD39FF530129A8FD05FF527D %52FFFF7D527DA8A8527D7DA8527D7DFFA87D527DA8FF527D52FFA859527D %527D52A8FFA8527D527D7DA87DFFA87D527DA8A8527D52FD06FFA8A8FD38 %FFA8290754FD04FFA87D7D7D597D7D7D52FF7D7D52A8A87D527DFFFF597D %7D7D527D7DAFFFFFFD067D52FFA87D527D597D527DFFFF527D7D7D527D7D %FD07FFA8FD3AFF5307017EFD04FF527D527D527D52A8FF7D527D527D527D %52FFA87D527D527D527DFFFFFD04A87D7D527DA8A8527D52A8A8A884FFA8 %7D527D527D527DFD06FFA8FD3CFF292907FFFFFFA87D597DA8FFA8FFFFFF %597D537D7D7D537DA8FF597D7DA8597D52A8FFFF59FD067DFFA87D53FD05 %7DFFFF527D7DA8527D52A8FD04FFA8FD3DFFA9060729FFFFFF527D52FD05 %FF7D7D527DA8FF7D7D52A8AF7D527DA8A8527D52A8A87D527D527D52A8FF %A8527D527D527D52FFA87D527DA87E527D52AFFFFFA8FD3FFF7E07292FFF %FFFFA8FD07FFA8FD05FFA9FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFA8A8A8FD %07FFA8FD07FFA8FFFFFFA8FFFFFFA8FD41FF54010753FD39FFA8FD40FFA9 %7EFF54012953FD79FF2F017EFF2F012953FD35FFA8A9FD40FF540729017E %FF5301292FFD33FFA8A8FD40FF2F01070607017EFF53010729A9FD30FF7E %7EFD40FF53022907290729077EFF7E072907A9FD2EFF54A9FD40FF530107 %012907070129017EFF7E06070154A9FD2AFFA853A8FD40FF530129072907 %290729017EFFFFFFA9292901297EFD27FFA95453FD41FF2F010701070607 %01070154FD06FF5307010729A8FD24FF532F7EFD41FF5407290729072907 %29077EFD08FFA854072907547EFD20FF7E297EFD42FF2F01290707012907 %07015AFD0BFFA829070129297EA8FD1AFFA82F292FA9FD42FF5407290729 %07290729075AFD0EFF7E5407290229297EA8FD14FFA9532F0754A8FD43FF %2F0107060701070607015AFD11FFA9532901070107075353A8A8FFA8FD07 %FFA8A87E542929062953FD45FF530229072907290729027EFD15FFA95A54 %292901290729072F292F295429290729072907547EFD47FF530107012907 %0701290154FD1AFFA87E5354292907290729072F295353A8A8FD49FF5301 %29072907290729017EFD74FF2F01070107060701070154FD74FF54072907 %2907290729077EFD74FF2F0129070701290707015AFD74FF540729072907 %290729075AFD74FF2F0107060701070607015AFD74FF5302290729072907 %29027EFD74FF5301070129070701290154FD74FF53012907290729072901 %7EFD74FF2F01070107060701070154FD74FF540729072907290729077EFD %74FF2F0129070701290707015AFD74FF540729072907290729075AFD74FF %2F0107060701070607015AFD74FF530229072907290729027EFD74FF5301 %070129070701290154FD74FF530129072907290729017EFD74FF2F010701 %07060701070154FD74FF540729072907290729077EFD74FF2F0129070701 %290707015AFD74FFA80729072907290729075AFD75FF7E07010701070607 %015AFD77FF292907290729027EFD79FF070701290154FD7BFF2F29077EFD %7DFFA8A9FD65FFFF %%EndData %%EndComments %%BeginDefaults %%ViewingOrientation: 1 0 0 1 %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Utils 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Utils 68 dict dup begin put /bdf { bind def } bind def /nd{ null def }bdf /xdf { exch def }bdf /ldf { load def }bdf /ddf { put }bdf /xddf { 3 -1 roll put }bdf /xpt { exch put }bdf /ndf { exch dup where{ pop pop pop }{ xdf }ifelse }def /cdndf { exch dup currentdict exch known{ pop pop }{ exch def }ifelse }def /bdict { mark }bdf /edict { counttomark 2 idiv dup dict begin {def} repeat pop currentdict end }def /ps_level /languagelevel where{ pop systemdict /languagelevel get exec }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr} stopped { -1 }if def /makereadonlyarray { /packedarray where{ pop packedarray }{ array astore readonly }ifelse }bdf /map_reserved_ink_name { dup type /stringtype eq{ dup /Red eq{ pop (_Red_) }{ dup /Green eq{ pop (_Green_) }{ dup /Blue eq{ pop (_Blue_) }{ dup () cvn eq{ pop (Process) }if }ifelse }ifelse }ifelse }if }bdf /AGMUTIL_GSTATE 22 dict def /get_gstate { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_clr_spc currentcolorspace def /AGMUTIL_GSTATE_clr_indx 0 def /AGMUTIL_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def} repeat pop /AGMUTIL_GSTATE_fnt rootfont def /AGMUTIL_GSTATE_lw currentlinewidth def /AGMUTIL_GSTATE_lc currentlinecap def /AGMUTIL_GSTATE_lj currentlinejoin def /AGMUTIL_GSTATE_ml currentmiterlimit def currentdash /AGMUTIL_GSTATE_do xdf /AGMUTIL_GSTATE_da xdf /AGMUTIL_GSTATE_sa currentstrokeadjust def /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def /AGMUTIL_GSTATE_op currentoverprint def /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit /AGMUTIL_GSTATE_gy_xfer xdf cvlit /AGMUTIL_GSTATE_b_xfer xdf cvlit /AGMUTIL_GSTATE_g_xfer xdf cvlit /AGMUTIL_GSTATE_r_xfer xdf /AGMUTIL_GSTATE_ht currenthalftone def /AGMUTIL_GSTATE_flt currentflat def end }def /set_gstate { AGMUTIL_GSTATE begin AGMUTIL_GSTATE_clr_spc setcolorspace AGMUTIL_GSTATE_clr_indx {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def} repeat setcolor AGMUTIL_GSTATE_fnt setfont AGMUTIL_GSTATE_lw setlinewidth AGMUTIL_GSTATE_lc setlinecap AGMUTIL_GSTATE_lj setlinejoin AGMUTIL_GSTATE_ml setmiterlimit AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash AGMUTIL_GSTATE_sa setstrokeadjust AGMUTIL_GSTATE_clr_rnd setcolorrendering AGMUTIL_GSTATE_op setoverprint AGMUTIL_GSTATE_bg cvx setblackgeneration AGMUTIL_GSTATE_ucr cvx setundercolorremoval AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer AGMUTIL_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or { currenthalftone /HalftoneType get AGMUTIL_GSTATE_ht /HalftoneType get ne { mark AGMUTIL_GSTATE_ht {sethalftone} stopped cleartomark } if }{ AGMUTIL_GSTATE_ht sethalftone } ifelse AGMUTIL_GSTATE_flt setflat end }def /get_gstate_and_matrix { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_ctm matrix currentmatrix def end get_gstate }def /set_gstate_and_matrix { set_gstate AGMUTIL_GSTATE begin AGMUTIL_GSTATE_ctm setmatrix end }def /AGMUTIL_str256 256 string def /AGMUTIL_src256 256 string def /AGMUTIL_dst64 64 string def /AGMUTIL_srcLen nd /AGMUTIL_ndx nd /agm_sethalftone { dup begin /_Data load /Thresholds xdf end level3 { sethalftone }{ dup /HalftoneType get 3 eq { sethalftone } {pop} ifelse }ifelse } def /rdcmntline { currentfile AGMUTIL_str256 readline pop (%) anchorsearch {pop} if } bdf /filter_cmyk { dup type /filetype ne{ exch () /SubFileDecode filter } { exch pop } ifelse [ exch { AGMUTIL_src256 readstring pop dup length /AGMUTIL_srcLen exch def /AGMUTIL_ndx 0 def AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ 1 index exch get AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put /AGMUTIL_ndx AGMUTIL_ndx 1 add def }for pop AGMUTIL_dst64 0 AGMUTIL_ndx getinterval } bind /exec cvx ] cvx } bdf /filter_indexed_devn { cvi Names length mul names_index add Lookup exch get } bdf /filter_devn { 4 dict begin /srcStr xdf /dstStr xdf dup type /filetype ne{ 0 () /SubFileDecode filter }if [ exch [ /devicen_colorspace_dict /AGMCORE_gget cvx /begin cvx currentdict /srcStr get /readstring cvx /pop cvx /dup cvx /length cvx 0 /gt cvx [ Adobe_AGM_Utils /AGMUTIL_ndx 0 /ddf cvx names_index Names length currentdict /srcStr get length 1 sub { 1 /index cvx /exch cvx /get cvx currentdict /dstStr get /AGMUTIL_ndx /load cvx 3 -1 /roll cvx /put cvx Adobe_AGM_Utils /AGMUTIL_ndx /AGMUTIL_ndx /load cvx 1 /add cvx /ddf cvx } for currentdict /dstStr get 0 /AGMUTIL_ndx /load cvx /getinterval cvx ] cvx /if cvx /end cvx ] cvx bind /exec cvx ] cvx end } bdf /AGMUTIL_imagefile nd /read_image_file { AGMUTIL_imagefile 0 setfileposition 10 dict begin /imageDict xdf /imbufLen Width BitsPerComponent mul 7 add 8 idiv def /imbufIdx 0 def /origDataSource imageDict /DataSource get def /origMultipleDataSources imageDict /MultipleDataSources get def /origDecode imageDict /Decode get def /dstDataStr imageDict /Width get colorSpaceElemCnt mul string def /srcDataStrs [ imageDict begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi string } repeat end ] def imageDict /MultipleDataSources known {MultipleDataSources}{false} ifelse { /imbufCnt imageDict /DataSource get length def /imbufs imbufCnt array def 0 1 imbufCnt 1 sub { /imbufIdx xdf imbufs imbufIdx imbufLen string put imageDict /DataSource get imbufIdx [ AGMUTIL_imagefile imbufs imbufIdx get /readstring cvx /pop cvx ] cvx put } for DeviceN_PS2 { imageDict begin /DataSource [ DataSource /devn_sep_datasource cvx ] cvx def /MultipleDataSources false def /Decode [0 1] def end } if }{ /imbuf imbufLen string def Indexed_DeviceN level3 not and DeviceN_NoneName or { imageDict begin /DataSource [AGMUTIL_imagefile Decode BitsPerComponent false 1 /filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource /exec cvx] cvx def /Decode [0 1] def end }{ imageDict /DataSource {AGMUTIL_imagefile imbuf readstring pop} put } ifelse } ifelse imageDict exch load exec imageDict /DataSource origDataSource put imageDict /MultipleDataSources origMultipleDataSources put imageDict /Decode origDecode put end } bdf /write_image_file { begin { (AGMUTIL_imagefile) (w+) file } stopped{ false }{ Adobe_AGM_Utils/AGMUTIL_imagefile xddf 2 dict begin /imbufLen Width BitsPerComponent mul 7 add 8 idiv def MultipleDataSources {DataSource 0 get}{DataSource}ifelse type /filetype eq { /imbuf imbufLen string def }if 1 1 Height { pop MultipleDataSources { 0 1 DataSource length 1 sub { DataSource type dup /arraytype eq { pop DataSource exch get exec }{ /filetype eq { DataSource exch get imbuf readstring pop }{ DataSource exch get } ifelse } ifelse AGMUTIL_imagefile exch writestring } for }{ DataSource type dup /arraytype eq { pop DataSource exec }{ /filetype eq { DataSource imbuf readstring pop }{ DataSource } ifelse } ifelse AGMUTIL_imagefile exch writestring } ifelse }for end true }ifelse end } bdf /close_image_file { AGMUTIL_imagefile closefile (AGMUTIL_imagefile) deletefile }def statusdict /product known userdict /AGMP_current_show known not and{ /pstr statusdict /product get def pstr (HP LaserJet 2200) eq pstr (HP LaserJet 4000 Series) eq or pstr (HP LaserJet 4050 Series ) eq or pstr (HP LaserJet 8000 Series) eq or pstr (HP LaserJet 8100 Series) eq or pstr (HP LaserJet 8150 Series) eq or pstr (HP LaserJet 5000 Series) eq or pstr (HP LaserJet 5100 Series) eq or pstr (HP Color LaserJet 4500) eq or pstr (HP Color LaserJet 4600) eq or pstr (HP LaserJet 5Si) eq or pstr (HP LaserJet 1200 Series) eq or pstr (HP LaserJet 1300 Series) eq or pstr (HP LaserJet 4100 Series) eq or { userdict /AGMP_current_show /show load put userdict /show { currentcolorspace 0 get /Pattern eq {false charpath f} {AGMP_current_show} ifelse } put }if currentdict /pstr undef } if /consumeimagedata { begin currentdict /MultipleDataSources known not {/MultipleDataSources false def} if MultipleDataSources { 1 dict begin /flushbuffer Width cvi string def 1 1 Height cvi { pop 0 1 DataSource length 1 sub { DataSource exch get dup type dup /filetype eq { exch flushbuffer readstring pop pop }if /arraytype eq { exec pop }if }for }for end } { /DataSource load type dup /filetype eq { 1 dict begin /flushbuffer Width Decode length 2 div mul cvi string def 1 1 Height { pop DataSource flushbuffer readstring pop pop} for end }if /arraytype eq { 1 1 Height { pop DataSource pop } for }if }ifelse end }bdf /addprocs { 2{/exec load}repeat 3 1 roll [ 5 1 roll ] bind cvx }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end sethalftone pop }ifelse }def /clonearray { dup xcheck exch dup length array exch Adobe_AGM_Core/AGMCORE_tmp -1 ddf { Adobe_AGM_Core/AGMCORE_tmp AGMCORE_tmp 1 add ddf dup type /dicttype eq { AGMCORE_tmp exch clonedict Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if dup type /arraytype eq { AGMCORE_tmp exch clonearray Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if exch dup AGMCORE_tmp 4 -1 roll put }forall exch {cvx} if }bdf /clonedict { dup length dict begin { dup type /dicttype eq { clonedict } if dup type /arraytype eq { clonearray } if def }forall currentdict end }bdf /DeviceN_PS2 { /currentcolorspace AGMCORE_gget 0 get /DeviceN eq level3 not and } bdf /Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget dup null ne { /CSD known }{ pop false } ifelse } bdf /DeviceN_NoneName { /Names where { pop false Names { (None) eq or } forall }{ false }ifelse } bdf /DeviceN_PS2_inRip_seps { /AGMCORE_in_rip_sep where { pop dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /DeviceN eq level3 not and AGMCORE_in_rip_sep and { /currentcolorspace exch AGMCORE_gput false } { true }ifelse } { true } ifelse } { true } ifelse } bdf /base_colorspace_type { dup type /arraytype eq {0 get} if } bdf /doc_setup{ Adobe_AGM_Utils begin }bdf /doc_trailer{ currentdict Adobe_AGM_Utils eq{ end }if }bdf systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright (C) 1997-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Core 216 dict dup begin put /nd{ null def }bind def /Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen [currentscreen] cvx def /AGMCORE_tmp 0 def /AGMCORE_&setgray nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&setcmykcolor nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_distilling nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSA_cache 0 dict def /AGMCORE_CSD_cache 0 dict def /AGMCORE_pattern_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_err_strings 4 dict def /AGMCORE_cur_err nd /AGMCORE_ovp nd /AGMCORE_current_spot_alias false def /AGMCORE_inverting false def /AGMCORE_feature_dictCount nd /AGMCORE_feature_opCount nd /AGMCORE_feature_ctm nd /AGMCORE_ConvertToProcess false def /AGMCORE_Default_CTM matrix def /AGMCORE_Default_PageSize nd /AGMCORE_currentbg nd /AGMCORE_currentucr nd /AGMCORE_gradientcache 32 dict def /AGMCORE_in_pattern false def /knockout_unitsq nd /AGMCORE_CRD_cache where{ pop }{ /AGMCORE_CRD_cache 0 dict def }ifelse /AGMCORE_key_known { where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /flushinput { save 2 dict begin /CompareBuffer 3 -1 roll def /readbuffer 256 string def mark { currentfile readbuffer {readline} stopped {cleartomark mark} { not {pop exit} if CompareBuffer eq {exit} if }ifelse }loop cleartomark end restore }bdf /getspotfunction { AGMCORE_screen exch pop exch pop dup type /dicttype eq{ dup /HalftoneType get 1 eq{ /SpotFunction get }{ dup /HalftoneType get 2 eq{ /GraySpotFunction get }{ pop { abs exch abs 2 copy add 1 gt{ 1 sub dup mul exch 1 sub dup mul add 1 sub }{ dup mul exch dup mul add 1 exch sub }ifelse }bind }ifelse }ifelse }if } def /clp_npth { clip newpath } def /eoclp_npth { eoclip newpath } def /npth_clp { newpath clip } def /add_grad { AGMCORE_gradientcache 3 1 roll put }bdf /exec_grad { AGMCORE_gradientcache exch get exec }bdf /graphic_setup { /AGMCORE_graphicsave save def concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth [] 0 setdash 10 setmiterlimit newpath false setoverprint false setstrokeadjust Adobe_AGM_Core/spot_alias get exec /Adobe_AGM_Image where { pop Adobe_AGM_Image/spot_alias 2 copy known{ get exec }{ pop pop }ifelse } if 100 dict begin /dictstackcount countdictstack def /showpage {} def mark } def /graphic_cleanup { cleartomark dictstackcount 1 countdictstack 1 sub {end}for end AGMCORE_graphicsave restore } def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def } { AGMCORE_str256 exch AGMCORE_tmp xpt /AGMCORE_tmp AGMCORE_tmp 1 add def } ifelse } forall } bdf /doc_setup{ Adobe_AGM_Core begin /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict /AGM_handleerror known not{ errordict /AGM_handleerror errordict /handleerror get put errordict /handleerror { Adobe_AGM_Core begin $error /newerror get AGMCORE_cur_err null ne and{ $error /newerror false put AGMCORE_cur_err compose_error_msg }if $error /newerror true put end errordict /AGM_handleerror get exec } bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err /AGMCORE_bad_environ def} if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def }if /AGMCORE_currentbg currentblackgeneration def /AGMCORE_currentucr currentundercolorremoval def /AGMCORE_distilling /product where{ pop systemdict/setdistillerparams known product (Adobe PostScript Parser) ne and }{ false }ifelse def level2 not{ /xput{ dup load dup length exch maxlength eq{ dup dup load dup length dup 0 eq {pop 1} if 2 mul dict copy def }if load begin def end }def }{ /xput{ load 3 1 roll put }def }ifelse /AGMCORE_GSTATE AGMCORE_key_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 10 def /AGMCORE_&gsave /gsave ldf /AGMCORE_&grestore /grestore ldf /AGMCORE_&grestoreall /grestoreall ldf /AGMCORE_&save /save ldf /AGMCORE_gdictcopy { begin { def } forall end }def /AGMCORE_gput { AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget { AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave { AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core exch /AGMCORE_gstackptr xpt AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore { AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt {1 add} if Adobe_AGM_Core exch /AGMCORE_gstackptr xpt }def /grestoreall { AGMCORE_&grestoreall Adobe_AGM_Core /AGMCORE_gstackptr AGMCORE_gstacksaveptr put }def /save { AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core begin /AGMCORE_gstackptr exch def /AGMCORE_gstacksaveptr AGMCORE_gstackptr def end AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def 0 1 AGMCORE_gstack length 1 sub { AGMCORE_gstack exch AGMCORE_gstackframekeys dict put } for }if level3 /AGMCORE_&sysshfill AGMCORE_key_known not and { /AGMCORE_&sysshfill systemdict/shfill get def /AGMCORE_&usrshfill /shfill load def /AGMCORE_&sysmakepattern systemdict/makepattern get def /AGMCORE_&usrmakepattern /makepattern load def }if /currentcmykcolor [0 0 0 0] AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace [/DeviceGray] AGMCORE_gput /sep_tint 0 AGMCORE_gput /devicen_tints [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /devicen_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent () AGMCORE_gput /customcolor_tint 1 AGMCORE_gput << /MaxPatternItem currentsystemparams /MaxPatternCache get >> setuserparams end }def /page_setup { /setcmykcolor where{ pop Adobe_AGM_Core/AGMCORE_&setcmykcolor /setcmykcolor load put }if Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor pop }ndf /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint { pop }ndf /currentoverprint { false }ndf /AGMCORE_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_have_reported_unsupported_color_space false def /AGMCORE_report_unsupported_color_space { AGMCORE_have_reported_unsupported_color_space false eq { (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.) == Adobe_AGM_Core /AGMCORE_have_reported_unsupported_color_space true ddf } if }def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_in_rip_sep /AGMCORE_in_rip_sep where{ pop AGMCORE_in_rip_sep }{ AGMCORE_distilling { false }{ userdict/Adobe_AGM_OnHost_Seps known{ false }{ level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse }ifelse }ifelse }ifelse def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ AGMCORE_distilling AGMCORE_producing_seps or }ifelse def /AGM_is_distiller_preserving_spotimages { currentdistillerparams/PreserveOverprintSettings known { currentdistillerparams/PreserveOverprintSettings get { currentdistillerparams/ColorConversionStrategy known { currentdistillerparams/ColorConversionStrategy get /LeaveColorUnchanged eq }{ true }ifelse }{ false }ifelse }{ false }ifelse }def /convert_spot_to_process where {pop}{ /convert_spot_to_process { dup map_alias { /Name get exch pop } if dup dup (None) eq exch (All) eq or { pop false }{ AGMCORE_host_sep { gsave 1 0 0 0 setcmykcolor currentgray 1 exch sub 0 1 0 0 setcmykcolor currentgray 1 exch sub 0 0 1 0 setcmykcolor currentgray 1 exch sub 0 0 0 1 setcmykcolor currentgray 1 exch sub add add add 0 eq { pop false }{ false setoverprint 1 1 1 1 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq }ifelse grestore }{ AGMCORE_distilling { pop AGM_is_distiller_preserving_spotimages not }{ Adobe_AGM_Core/AGMCORE_name xddf false Adobe_AGM_Core/AGMCORE_in_pattern known {Adobe_AGM_Core/AGMCORE_in_pattern get}{false} ifelse not currentpagedevice/OverrideSeparations known and { currentpagedevice/OverrideSeparations get { /HqnSpots /ProcSet resourcestatus { pop pop pop true }if }if }if { AGMCORE_name /HqnSpots /ProcSet findresource /TestSpot get exec not }{ gsave [/Separation AGMCORE_name /DeviceGray {}]setcolorspace false currentpagedevice/SeparationColorNames 2 copy known { get { AGMCORE_name eq or}forall not }{ pop pop pop true }ifelse grestore }ifelse }ifelse }ifelse }ifelse }def }ifelse /convert_to_process where {pop}{ /convert_to_process { dup length 0 eq { pop false }{ AGMCORE_host_sep { dup true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process and}ifelse } forall { true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch (Black) eq or and }forall not }{pop false}ifelse }{ false exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process or}ifelse } forall }ifelse }ifelse }def }ifelse /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots userdict/Adobe_AGM_OnHost_Seps known userdict/Adobe_AGM_InRip_Seps known or not and }ifelse { /setcmykcolor[ { 4 copy add add add 0 eq currentoverprint and{ pop 0.0005 }if }/exec cvx /AGMCORE_&setcmykcolor load dup type/operatortype ne{ /exec cvx }if ]cvx def }if AGMCORE_host_sep{ /setcolortransfer { AGMCORE_cyan_plate{ pop pop pop }{ AGMCORE_magenta_plate{ 4 3 roll pop pop pop }{ AGMCORE_yellow_plate{ 4 2 roll pop pop pop }{ 4 1 roll pop pop pop }ifelse }ifelse }ifelse settransfer } def /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def /AGMCORE_RemoveProcessColorNames { 1 dict begin /filtername { dup /Cyan eq 1 index (Cyan) eq or {pop (_cyan_)}if dup /Magenta eq 1 index (Magenta) eq or {pop (_magenta_)}if dup /Yellow eq 1 index (Yellow) eq or {pop (_yellow_)}if dup /Black eq 1 index (Black) eq or {pop (_black_)}if }def dup type /arraytype eq {[exch {filtername}forall]} {filtername}ifelse end }def /AGMCORE_IsSeparationAProcessColor { dup (Cyan) eq exch dup (Magenta) eq exch dup (Yellow) eq exch (Black) eq or or or }def level3 { /AGMCORE_IsCurrentColor { gsave false setoverprint 1 1 1 1 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq grestore }def /AGMCORE_filter_functiondatasource { 5 dict begin /data_in xdf data_in type /stringtype eq { /ncomp xdf /comp xdf /string_out data_in length ncomp idiv string def 0 ncomp data_in length 1 sub { string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put }for string_out }{ string /string_in xdf /string_out 1 string def /component xdf [ data_in string_in /readstring cvx [component /get cvx 255 /exch cvx /sub cvx string_out /exch cvx 0 /exch cvx /put cvx string_out]cvx [/pop cvx ()]cvx /ifelse cvx ]cvx /ReusableStreamDecode filter }ifelse end }def /AGMCORE_separateShadingFunction { 2 dict begin /paint? xdf /channel xdf begin FunctionType 0 eq { /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def currentdict /Decode known {/Decode Decode channel 2 mul 2 getinterval def}if paint? not {/Decode [1 1]def}if }if FunctionType 2 eq { paint? { /C0 [C0 channel get 1 exch sub] def /C1 [C1 channel get 1 exch sub] def }{ /C0 [1] def /C1 [1] def }ifelse }if FunctionType 3 eq { /Functions [Functions {channel paint? AGMCORE_separateShadingFunction} forall] def }if currentdict /Range known {/Range [0 1] def}if currentdict end end }def /AGMCORE_separateShading { 3 -1 roll begin currentdict /Function known { currentdict /Background known {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if Function 3 1 roll AGMCORE_separateShadingFunction /Function xdf /ColorSpace [/DeviceGray] def }{ ColorSpace dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] def }{ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put }ifelse ColorSpace 0 get /Separation eq { { [1 /exch cvx /sub cvx]cvx }{ [/pop cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll put pop }{ { [exch ColorSpace 1 get length 1 sub exch sub /index cvx 1 /exch cvx /sub cvx ColorSpace 1 get length 1 add 1 /roll cvx ColorSpace 1 get length{/pop cvx} repeat]cvx }{ pop [ColorSpace 1 get length {/pop cvx} repeat cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll bind put }ifelse ColorSpace 2 /DeviceGray put }ifelse end }def /AGMCORE_separateShadingDict { dup /ColorSpace get dup type /arraytype ne {[exch]}if dup 0 get /DeviceCMYK eq { exch begin currentdict AGMCORE_cyan_plate {0 true}if AGMCORE_magenta_plate {1 true}if AGMCORE_yellow_plate {2 true}if AGMCORE_black_plate {3 true}if AGMCORE_plate_ndx 4 eq {0 false}if dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading currentdict end exch }if dup 0 get /Separation eq { exch begin ColorSpace 1 get dup /None ne exch /All ne and { ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /Separation ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading }if }ifelse }{ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor 0 exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse }if currentdict end exch }if dup 0 get /DeviceN eq { exch begin ColorSpace 1 get convert_to_process { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /DeviceN ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading /ColorSpace [/DeviceGray] def }if }ifelse }{ currentdict false -1 ColorSpace 1 get { AGMCORE_IsCurrentColor { 1 add exch pop true exch exit }if 1 add }forall exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse currentdict end exch }if dup 0 get dup /DeviceCMYK eq exch dup /Separation eq exch /DeviceN eq or or not { exch begin ColorSpace dup type /arraytype eq {0 get}if /DeviceGray ne { AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { ColorSpace 0 get /CIEBasedA eq { /ColorSpace [/Separation /_ciebaseda_ /DeviceGray {}] def }if ColorSpace 0 get dup /CIEBasedABC eq exch dup /CIEBasedDEF eq exch /DeviceRGB eq or or { /ColorSpace [/DeviceN [/_red_ /_green_ /_blue_] /DeviceRGB {}] def }if ColorSpace 0 get /CIEBasedDEFG eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] }if currentdict 0 false AGMCORE_separateShading }if }if currentdict end exch }if pop dup /AGMCORE_ignoreshade known { begin /ColorSpace [/Separation (None) /DeviceGray {}] def currentdict end }if }def /shfill { clonedict AGMCORE_separateShadingDict dup /AGMCORE_ignoreshade known {pop} {AGMCORE_&sysshfill}ifelse }def /makepattern { exch dup /PatternType get 2 eq { clonedict begin /Shading Shading AGMCORE_separateShadingDict def currentdict end exch AGMCORE_&sysmakepattern }{ exch AGMCORE_&usrmakepattern }ifelse }def }if }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4 {4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ Adobe_AGM_Core begin /AGMCORE_k xdf /AGMCORE_y xdf /AGMCORE_m xdf /AGMCORE_c xdf end [/Separation 4 -1 roll /DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation (All) /DeviceGray {}] setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4 {4 index mul 4 1 roll} repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval {255 div} forall } bdf /map_indexed_devn { Lookup Names length 3 -1 roll cvi map_index } bdf /n_color_components { base_colorspace_type dup /DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse }bdf level2{ /mo /moveto ldf /li /lineto ldf /cv /curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def level2 /setcolorspace AGMCORE_key_known not and{ /AGMCORE_&&&setcolorspace /setcolorspace ldf /AGMCORE_ReplaceMappedColor { dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get dup /Separation eq { pop dup length array copy dup dup 1 get current_spot_alias { dup map_alias { begin /sep_colorspace_dict currentdict AGMCORE_gput pop pop pop [ /Separation Name CSA map_csa dup /MappedCSA xdf /sep_colorspace_proc load ] dup Name end }if }if map_reserved_ink_name 1 xpt }{ /DeviceN eq { dup length array copy dup dup 1 get [ exch { current_spot_alias{ dup map_alias{ /Name get exch pop }if }if map_reserved_ink_name } forall ] 1 xpt }if }ifelse }if }def /setcolorspace { dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /Indexed eq { AGMCORE_distilling { /PhotoshopDuotoneList where { pop false }{ true }ifelse }{ true }ifelse { aload pop 3 -1 roll AGMCORE_ReplaceMappedColor 3 1 roll 4 array astore }if }{ AGMCORE_ReplaceMappedColor }ifelse }if DeviceN_PS2_inRip_seps {AGMCORE_&&&setcolorspace} if }def }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /li{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1 [8 0 0 8 0 0] {} image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /currentScreenFreq{ currentscreen pop pop }def /setcolorspace { /currentcolorspace exch AGMCORE_gput } def /currentcolorspace { /currentcolorspace AGMCORE_gget } def /setcolor_devicecolor { base_colorspace_type dup /DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup /DeviceGray ne{ dup /DeviceCMYK ne{ dup /DeviceRGB ne{ dup /Separation eq{ pop currentcolorspace 3 get exec currentcolorspace 2 get }{ dup /Indexed eq{ pop currentcolorspace 3 get dup type /stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err /AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor } def }ifelse /sop /setoverprint ldf /lw /setlinewidth ldf /lc /setlinecap ldf /lj /setlinejoin ldf /ml /setmiterlimit ldf /dsh /setdash ldf /sadj /setstrokeadjust ldf /gry /setgray ldf /rgb /setrgbcolor ldf /cmyk /setcmykcolor ldf /sep /setsepcolor ldf /devn /setdevicencolor ldf /idx /setindexedcolor ldf /colr /setcolor ldf /csacrd /set_csa_crd ldf /sepcs /setsepcolorspace ldf /devncs /setdevicencolorspace ldf /idxcs /setindexedcolorspace ldf /cp /closepath ldf /clp /clp_npth ldf /eclp /eoclp_npth ldf /f /fill ldf /ef /eofill ldf /@ /stroke ldf /nclp /npth_clp ldf /gset /graphic_setup ldf /gcln /graphic_cleanup ldf currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and { bind }if def }forall /currentpagedevice currentpagedevice def /getrampcolor { /indx exch def 0 1 NumComp 1 sub { dup Samples exch get dup type /stringtype eq { indx get } if exch Scaling exch get aload pop 3 1 roll mul add } for ColorSpaceFamily /Separation eq { sep } { ColorSpaceFamily /DeviceN eq { devn } { setcolor }ifelse }ifelse } bind def /sssetbackground { aload pop setcolor } bind def /RadialShade { 40 dict begin /ColorSpaceFamily exch def /background exch def /ext1 exch def /ext0 exch def /BBox exch def /r2 exch def /c2y exch def /c2x exch def /r1 exch def /c1y exch def /c1x exch def /rampdict exch def /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if c1x c2x eq { c1y c2y lt {/theta 90 def}{/theta 270 def} ifelse } { /slope c2y c1y sub c2x c1x sub div def /theta slope 1 atan def c2x c1x lt c2y c1y ge and { /theta theta 180 sub def} if c2x c1x lt c2y c1y lt and { /theta theta 180 add def} if } ifelse gsave clippath c1x c1y translate theta rotate -90 rotate { pathbbox } stopped { 0 0 0 0 } if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end } { /max { 2 copy gt { pop } {exch pop} ifelse } bind def /min { 2 copy lt { pop } {exch pop} ifelse } bind def rampdict begin 40 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave c1x c1y translate theta rotate -90 rotate /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def /c1y 0 def /c1x 0 def /c2x 0 def ext0 { 0 getrampcolor c2y r2 add r1 sub 0.0001 lt { c1x c1y r1 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2y r1 add r2 le { c1x c1y r1 0 360 arc fill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r1 neg def /p1y c1y def /p2x r1 def /p2y c1y def p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto fill } { /AA r2 r1 sub c2y div def /theta AA 1 AA dup mul sub sqrt div 1 atan def /SS1 90 theta add dup sin exch cos div def /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y p1x SS1 div neg def /SS2 90 theta sub dup sin exch cos div def /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y p2x SS2 div neg def r1 r2 gt { /L1maxX p1x yMin p1y sub SS1 div add def /L2maxX p2x yMin p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if c1x c2x sub dup mul c1y c2y sub dup mul add 0.5 exp 0 dtransform dup mul exch dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop /hires exch def hires mul /numpix exch def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if /xInc c2x c1x sub numsteps div def /yInc c2y c1y sub numsteps div def /rInc r2 r1 sub numsteps div def /cx c1x def /cy c1y def /radius r1 def newpath xInc 0 eq yInc 0 eq rInc 0 eq and and { 0 getrampcolor cx cy radius 0 360 arc stroke NumSamples 1 sub getrampcolor cx cy radius 72 hires div add 0 360 arc 0 setlinewidth stroke } { 0 numsteps { dup subsampling { round cvi } if getrampcolor cx cy radius 0 360 arc /cx cx xInc add def /cy cy yInc add def /radius radius rInc add def cx cy radius 360 0 arcn eofill rampIndxInc add } repeat pop } ifelse ext1 { c2y r2 add r1 lt { c2x c2y r2 0 360 arc fill } { c2y r1 add r2 sub 0.0001 le { c2x c2y r2 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r2 neg def /p1y c2y def /p2x r2 def /p2y c2y def p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto fill } { /AA r2 r1 sub c2y div def /theta AA 1 AA dup mul sub sqrt div 1 atan def /SS1 90 theta add dup sin exch cos div def /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y c2y p1x SS1 div sub def /SS2 90 theta sub dup sin exch cos div def /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y c2y p2x SS2 div sub def r1 r2 lt { /L1maxX p1x yMax p1y sub SS1 div add def /L2maxX p2x yMax p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if grestore grestore end end end } ifelse } bind def /GenStrips { 40 dict begin /ColorSpaceFamily exch def /background exch def /ext1 exch def /ext0 exch def /BBox exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def /rampdict exch def /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if x1 x2 eq { y1 y2 lt {/theta 90 def}{/theta 270 def} ifelse } { /slope y2 y1 sub x2 x1 sub div def /theta slope 1 atan def x2 x1 lt y2 y1 ge and { /theta theta 180 sub def} if x2 x1 lt y2 y1 lt and { /theta theta 180 add def} if } ifelse gsave clippath x1 y1 translate theta rotate { pathbbox } stopped { 0 0 0 0 } if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end } { rampdict begin 20 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave x1 y1 translate theta rotate /xStart 0 def /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def /ySpan yMax yMin sub def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def xStart 0 transform xEnd 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop mul /numpix exch def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if ext0 { 0 getrampcolor xMin xStart lt { xMin yMin xMin neg ySpan rectfill } if } if /xInc xEnd xStart sub numsteps div def /x xStart def 0 numsteps { dup subsampling { round cvi } if getrampcolor x yMin xInc ySpan rectfill /x x xInc add def rampIndxInc add } repeat pop ext1 { xMax xEnd gt { xEnd yMin xMax xEnd sub ySpan rectfill } if } if grestore grestore end end end } ifelse } bind def }def /page_trailer { end }def /doc_trailer{ }def systemdict /findcolorrendering known{ /findcolorrendering systemdict /findcolorrendering get def }if systemdict /setcolorrendering known{ /setcolorrendering systemdict /setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { dup Adobe_AGM_Core/AGMCORE_name xddf convert_spot_to_process not }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA map_csa setcolorspace_opt set_crd end } def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup /sep_tint exch AGMCORE_gput TintProc end } def /setdevicencolor { /devicen_colorspace_dict AGMCORE_gget begin Names length copy Names length 1 sub -1 0 { /devicen_tints AGMCORE_gget 3 1 roll xpt } for TintProc end } def /sep_colorspace_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2 {AGMCORE_tmp mul NComponents 1 roll} repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll } repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end } def /sep_colorspace_gray_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end } def /sep_proc_name { dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not and{ pop [/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse } def /setsepcolorspace { current_spot_alias{ dup begin Name map_alias{ exch pop }if end }if dup /sep_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def Adobe_AGM_Core/AGMCORE_sep_special Name dup () eq exch (All) eq or ddf AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch { 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec cvx ] cvx ] setcolorspace_opt /TintProc { 255 mul round cvi setcolor }bdf }{ MappedCSA 0 get /DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc [ Components aload pop Name findcmykcustomcolor /exch cvx /setcustomcolor cvx ] cvx bdf }{ AGMCORE_host_sep Name (All) eq and{ /TintProc { 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK eq and AGMCORE_host_sep or Name () eq and{ /TintProc [ MappedCSA sep_proc_name exch 0 get /DeviceCMYK eq{ cvx /setcmykcolor cvx }{ cvx /setgray cvx }ifelse ] cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc [ /dup cvx MappedCSA sep_proc_name cvx exch 0 get /DeviceGray eq{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx }if /Name cvx /findcmykcustomcolor cvx /exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep /Name cvx /AGMCORE_IsSeparationAProcessColor load /exec cvx /not cvx /and cvx }{ Name inRip_spot_has_ink not }ifelse [ /pop cvx 1 ] cvx /if cvx /setcustomcolor cvx ] cvx bdf }{ /TintProc /setcolor ldf [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd setsepcolor end } def /additive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 0 1 numarrays 1 sub { 1 exch add /index cvx c1 /get cvx /mul cvx }for numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /subtractive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 1 0 1 numarrays 1 sub { 1 3 3 -1 roll add /index cvx c1 /get cvx /sub cvx /mul cvx }for /sub cvx numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /exec_tint_transform { /TintProc [ /TintTransform cvx /setcolor cvx ] cvx bdf MappedCSA setcolorspace_opt } bdf /devn_makecustomcolor { 2 dict begin /names_index xdf /Names xdf 1 1 1 1 Names names_index get findcmykcustomcolor /devicen_tints AGMCORE_gget names_index get setcustomcolor Names length {pop} repeat end } bdf /setdevicencolorspace { dup /AliasedColorants known {false}{true}ifelse current_spot_alias and { 6 dict begin /names_index 0 def dup /names_len exch /Names get length def /new_names names_len array def /new_LookupTables names_len array def /alias_cnt 0 def dup /Names get { dup map_alias { exch pop dup /ColorLookup known { dup begin new_LookupTables names_index ColorLookup put end }{ dup /Components known { dup begin new_LookupTables names_index Components put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse new_names names_index 3 -1 roll /Name get put /alias_cnt alias_cnt 1 add def }{ /name xdf new_names names_index name put dup /LookupTables known { dup begin new_LookupTables names_index LookupTables names_index get put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse /names_index names_index 1 add def } forall alias_cnt 0 gt { /AliasedColorants true def 0 1 names_len 1 sub { /names_index xdf new_LookupTables names_index get 0 get null eq { dup /Names get names_index get /name xdf name (Cyan) eq name (Magenta) eq name (Yellow) eq name (Black) eq or or or not { /AliasedColorants false def exit } if } if } for AliasedColorants { dup begin /Names new_names def /AliasedColorants true def /LookupTables new_LookupTables def currentdict /TTTablesIdx known not { /TTTablesIdx -1 def } if currentdict /NComponents known not { /NComponents TintMethod /Subtractive eq {4}{3}ifelse def } if end } if }if end } if dup /devicen_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def currentdict /AliasedColorants known { AliasedColorants }{ false } ifelse /TintTransform load type /nulltype eq or { /TintTransform [ 0 1 Names length 1 sub { /TTTablesIdx TTTablesIdx 1 add def dup LookupTables exch get dup 0 get null eq { 1 index Names exch get dup (Cyan) eq { pop exch LookupTables length exch sub /index cvx 0 0 0 } { dup (Magenta) eq { pop exch LookupTables length exch sub /index cvx 0 /exch cvx 0 0 } { (Yellow) eq { exch LookupTables length exch sub /index cvx 0 0 3 -1 /roll cvx 0 } { exch LookupTables length exch sub /index cvx 0 0 0 4 -1 /roll cvx } ifelse } ifelse } ifelse 5 -1 /roll cvx /astore cvx } { dup length 1 sub LookupTables length 4 -1 roll sub 1 add /index cvx /mul cvx /round cvx /cvi cvx /get cvx } ifelse Names length TTTablesIdx add 1 add 1 /roll cvx } for Names length [/pop cvx] cvx /repeat cvx NComponents Names length TintMethod /Subtractive eq { subtractive_blend } { additive_blend } ifelse ] cvx bdf } if AGMCORE_host_sep { Names convert_to_process { exec_tint_transform } { currentdict /AliasedColorants known { AliasedColorants not }{ false } ifelse 5 dict begin /AvoidAliasedColorants xdf /painted? false def /names_index 0 def /names_len Names length def Names { AvoidAliasedColorants { /currentspotalias current_spot_alias def false set_spot_alias } if AGMCORE_is_cmyk_sep { dup (Cyan) eq AGMCORE_cyan_plate and exch dup (Magenta) eq AGMCORE_magenta_plate and exch dup (Yellow) eq AGMCORE_yellow_plate and exch (Black) eq AGMCORE_black_plate and or or or { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def } if painted? {exit} if }{ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def exit } if } ifelse AvoidAliasedColorants { currentspotalias set_spot_alias } if /names_index names_index 1 add def } forall painted? { /devicen_colorspace_dict AGMCORE_gget /names_index names_index put }{ /devicen_colorspace_dict AGMCORE_gget /TintProc [ names_len [/pop cvx] cvx /repeat cvx 1 /setseparationgray cvx 0 0 0 0 () /findcmykcustomcolor cvx 0 /setcustomcolor cvx ] cvx ddf } ifelse end } ifelse } { AGMCORE_in_rip_sep { Names convert_to_process not }{ level3 } ifelse { [/DeviceN Names MappedCSA /TintTransform load] setcolorspace_opt /TintProc level3 not AGMCORE_in_rip_sep and { [ Names /length cvx [/pop cvx] cvx /repeat cvx ] cvx bdf }{ /setcolor ldf } ifelse }{ exec_tint_transform } ifelse } ifelse set_crd /AliasedColorants false def end } def /setindexedcolorspace { dup /indexed_colorspace_dict exch AGMCORE_gput begin currentdict /CSD known { CSD get_csd /Names known { CSD get_csd begin currentdict devncs AGMCORE_host_sep{ 4 dict begin /devnCompCnt Names length def /NewLookup HiVal 1 add string def 0 1 HiVal { /tableIndex xdf Lookup dup type /stringtype eq { devnCompCnt tableIndex map_index }{ exec } ifelse setdevicencolor currentgray tableIndex exch HiVal mul cvi NewLookup 3 1 roll put } for [/Indexed currentcolorspace HiVal NewLookup] setcolorspace_opt end }{ level3 { [/Indexed [/DeviceN Names MappedCSA /TintTransform load] HiVal Lookup] setcolorspace_opt }{ [/Indexed MappedCSA HiVal [ Lookup dup type /stringtype eq {/exch cvx CSD get_csd /Names get length dup /mul cvx exch /getinterval cvx {255 div} /forall cvx} {/exec cvx}ifelse /TintTransform load /exec cvx ]cvx ]setcolorspace_opt }ifelse } ifelse end }{ } ifelse set_crd } { /MappedCSA CSA map_csa def AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or{ pop [/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval {} forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end } bind }{ Lookup }ifelse }ifelse ] setcolorspace_opt set_crd }ifelse }ifelse end }def /setindexedcolor { AGMCORE_host_sep { /indexed_colorspace_dict AGMCORE_gget dup /CSD known { begin CSD get_csd begin map_indexed_devn devn end end }{ AGMCORE_gget/Lookup get 4 3 -1 roll map_index pop setcmykcolor } ifelse }{ level3 not AGMCORE_in_rip_sep and /indexed_colorspace_dict AGMCORE_gget /CSD known and { /indexed_colorspace_dict AGMCORE_gget /CSD get get_csd begin map_indexed_devn devn end } { setcolor } ifelse }ifelse } def /ignoreimagedata { currentoverprint not{ gsave dup clonedict begin 1 setgray /Decode [0 1] def /DataSource def /MultipleDataSources false def /BitsPerComponent 8 def currentdict end systemdict /image get exec grestore }if consumeimagedata }def /add_csa { Adobe_AGM_Core begin /AGMCORE_CSA_cache xput end }def /get_csa_by_name { dup type dup /nametype eq exch /stringtype eq or{ Adobe_AGM_Core begin 1 dict begin /name xdf AGMCORE_CSA_cache { 0 get name eq { exit }{ pop } ifelse }forall end end }{ pop } ifelse }def /map_csa { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSA_cache get exch get }if }def /add_csd { Adobe_AGM_Core begin /AGMCORE_CSD_cache xput end }def /get_csd { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSD_cache get exch get }if }def /pattern_buf_init { /count get 0 0 put } def /pattern_buf_next { dup /count get dup 0 get dup 3 1 roll 1 add 0 xpt get } def /cachepattern_compress { 5 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def /string_size 16000 def /readbuffer string_size string def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal /LZWFilter { exch dup length 0 eq { pop }{ patarray dup length 1 sub 3 -1 roll put } ifelse {string_size}{0}ifelse string } /LZWEncode filter def { ReadFilter readbuffer readstring exch LZWFilter exch writestring not {exit} if } loop LZWFilter closefile patarray end }def /cachepattern { 2 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal { ReadFilter 16000 string readstring exch patarray dup length 1 sub 3 -1 roll put not {exit} if } loop patarray dup dup length 1 sub () put end }def /add_pattern { Adobe_AGM_Core begin /AGMCORE_pattern_cache xput end }def /get_pattern { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_pattern_cache get exch get dup wrap_paintproc }if }def /wrap_paintproc { statusdict /currentfilenameextend known{ begin /OldPaintProc /PaintProc load def /PaintProc { mark exch dup /OldPaintProc get stopped {closefile restore end} if cleartomark } def end } {pop} ifelse } def /make_pattern { dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform exch 3 index /XStep get 1 index exch 2 copy div cvi mul sub sub exch 3 index /YStep get 1 index exch 2 copy div cvi mul sub sub matrix translate exch matrix concatmatrix 1 index begin BBox 0 get XStep div cvi XStep mul /xshift exch neg def BBox 1 get YStep div cvi YStep mul /yshift exch neg def BBox 0 get xshift add BBox 1 get yshift add BBox 2 get xshift add BBox 3 get yshift add 4 array astore /BBox exch def [ xshift yshift /translate load null /exec load ] dup 3 /PaintProc load put cvx /PaintProc exch def end gsave 0 setgray makepattern grestore }def /set_pattern { dup /PatternType get 1 eq{ dup /PaintType get 1 eq{ currentoverprint sop [/DeviceGray] setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{ pop }{ setcolorspace }ifelse }def /updatecolorrendering { currentcolorrendering/Intent known{ currentcolorrendering/Intent get }{ null }ifelse Intent ne{ false Intent AGMCORE_CRD_cache { exch pop begin dup Intent eq{ currentdict setcolorrendering_opt end exch pop true exch exit }if end } forall pop not{ systemdict /findcolorrendering known{ Intent findcolorrendering pop /ColorRendering findresource dup length dict copy setcolorrendering_opt }if }if }if } def /add_crd { AGMCORE_CRD_cache 3 1 roll put }def /set_crd { AGMCORE_host_sep not level2 and{ currentdict/CRD known{ AGMCORE_CRD_cache CRD get dup null ne{ setcolorrendering_opt }{ pop }ifelse }{ currentdict/Intent known{ updatecolorrendering }if }ifelse currentcolorspace dup type /arraytype eq {0 get}if /DeviceRGB eq { currentdict/UCR known {/UCR}{/AGMCORE_currentucr}ifelse load setundercolorremoval currentdict/BG known {/BG}{/AGMCORE_currentbg}ifelse load setblackgeneration }if }if }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /cpaint_gcomp { convert_to_process Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf Adobe_AGM_Core/AGMCORE_ConvertToProcess get not { (%end_cpaint_gcomp) flushinput }if }def /cpaint_gsep { Adobe_AGM_Core/AGMCORE_ConvertToProcess get { (%end_cpaint_gsep) flushinput }if }def /cpaint_gend { newpath }def /path_rez { dup 0 ne{ AGMCORE_deviceDPI exch div dup 1 lt{ pop 1 }if setflat }{ pop }ifelse }def /set_spot_alias_ary { /AGMCORE_SpotAliasAry where{ pop pop }{ Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf true set_spot_alias }ifelse }def /set_spot_alias { /AGMCORE_SpotAliasAry where{ /AGMCORE_current_spot_alias 3 -1 roll put }{ pop }ifelse }def /current_spot_alias { /AGMCORE_SpotAliasAry where{ /AGMCORE_current_spot_alias get }{ false }ifelse }def /map_alias { /AGMCORE_SpotAliasAry where{ begin /AGMCORE_name xdf false AGMCORE_SpotAliasAry{ dup/Name get AGMCORE_name eq{ save exch /Adobe_AGM_Core currentdict def /CSD get get_csd exch restore exch pop true exit }{ pop }ifelse }forall end }{ pop false }ifelse }bdf /spot_alias { true set_spot_alias /AGMCORE_&setcustomcolor AGMCORE_key_known not { Adobe_AGM_Core/AGMCORE_&setcustomcolor /setcustomcolor load put } if /customcolor_tint 1 AGMCORE_gput Adobe_AGM_Core begin /setcustomcolor { dup /customcolor_tint exch AGMCORE_gput current_spot_alias{ 1 index 4 get map_alias{ mark 3 1 roll setsepcolorspace counttomark 0 ne{ setsepcolor }if pop pop }{ AGMCORE_&setcustomcolor }ifelse }{ AGMCORE_&setcustomcolor }ifelse }bdf end }def /begin_feature { Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if }def /end_feature { 2 dict begin /spd /setpagedevice load def /setpagedevice { get_gstate spd set_gstate } def stopped{$error/newerror false put}if end count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if }def /set_negative { Adobe_AGM_Core begin /AGMCORE_inverting exch def level2{ currentpagedevice/NegativePrint known{ currentpagedevice/NegativePrint get Adobe_AGM_Core/AGMCORE_inverting get ne{ true begin_feature true{ bdict /NegativePrint Adobe_AGM_Core/AGMCORE_inverting get edict setpagedevice }end_feature }if /AGMCORE_inverting false def }if }if AGMCORE_inverting{ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer gsave newpath clippath 1 /setseparationgray where{pop setseparationgray}{setgray}ifelse /AGMIRS_&fill where {pop AGMIRS_&fill}{fill} ifelse grestore }if end }def /lw_save_restore_override { /md where { pop md begin initializepage /initializepage{}def /pmSVsetup{} def /endp{}def /pse{}def /psb{}def /orig_showpage where {pop} {/orig_showpage /showpage load def} ifelse /showpage {orig_showpage gR} def end }if }def /pscript_showpage_override { /NTPSOct95 where { begin showpage save /showpage /restore load def /restore {exch pop}def end }if }def /driver_media_override { /md where { pop md /initializepage known { md /initializepage {} put } if md /rC known { md /rC {4{pop}repeat} put } if }if /mysetup where { /mysetup [1 0 0 1 0 0] put }if Adobe_AGM_Core /AGMCORE_Default_CTM matrix currentmatrix put level2 {Adobe_AGM_Core /AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if }def /driver_check_media_override { /PrepsDict where {pop} { Adobe_AGM_Core /AGMCORE_Default_CTM get matrix currentmatrix ne Adobe_AGM_Core /AGMCORE_Default_PageSize get type /arraytype eq { Adobe_AGM_Core /AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and Adobe_AGM_Core /AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and }if { Adobe_AGM_Core /AGMCORE_Default_CTM get setmatrix }if }ifelse }def AGMCORE_err_strings begin /AGMCORE_bad_environ (Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. ) def /AGMCORE_color_space_onhost_seps (This job contains colors that will not separate with on-host methods. ) def /AGMCORE_invalid_color_space (This job contains an invalid color space. ) def end end systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 2.23 0 %%Copyright: Copyright 1997-2003 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.23 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict /Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined { /Adobe_CoolType_Core userdict /Adobe_CoolType_Core get def } if userdict /Adobe_CoolType_Core 60 dict dup begin put /Adobe_CoolType_Version 2.23 def /Level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if def Level2? not { /currentglobal false def /setglobal /pop load def /gcheck { pop false } bind def /currentpacking false def /setpacking /pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking /@_SaveStackLevels { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup /args 7 index 5 add array put put get } { get dup /args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch /args exch put } { pop } ifelse } ifelse begin count 2 sub 1 index lt { pop count 1 sub } if dup /argCount exch def dup 0 gt { exch 1 index 2 add 1 roll args exch 0 exch getinterval astore pop } { pop } ifelse count 1 sub /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def end } bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt { { pop } repeat } { pop } ifelse args 0 argCount getinterval {} forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse } bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end } bind def /@Raise { exch cvx exch errordict exch get exec stop } bind def /@ReRaise { cvx $error /errorname get errordict exch get exec stop } bind def /@Stopped { 0 @#Stopped } bind def /@#Stopped { @_SaveStackLevels stopped { @_RestoreStackLevels true } { @_PopStackLevels false } ifelse } bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get /args get exch get end } bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup begin mark { (*) { pop stop } 128 string /Category resourceforall } stopped cleartomark currentdict eq dup { end } if not } { false } ifelse def /CTHasResourceStatusBug Level2? { mark { /steveamerige /Category resourcestatus } stopped { cleartomark true } { cleartomark currentglobal not } ifelse } { false } ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse end } bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad /ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup /CMap CTHasResourceStatusBug { CTResourceStatus } { resourcestatus } ifelse { pop dup 0 eq exch 1 eq or { dup /CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug { exit } { stop } ifelse } ifelse } { pop } ifelse } 128 string /CMap resourceforall } stopped { cleartomark } stopped pop setglobal } if } if } bind def /doc_setup { Adobe_CoolType_Core begin CTWorkAroundBugs /mov /moveto load def /nfnt /newencodedfont load def /mfnt /makefont load def /sfnt /setfont load def /ufnt /undefinefont load def /chp /charpath load def /awsh /awidthshow load def /wsh /widthshow load def /ash /ashow load def /sh /show load def end userdict /Adobe_CoolType_Data 10 dict dup begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end put } bind def /doc_trailer { currentdict Adobe_CoolType_Core eq { end } if } bind def /page_setup { Adobe_CoolType_Core begin } bind def /page_trailer { end } bind def /unload { systemdict /languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known { undef } { pop pop } ifelse } if } if } bind def /ndf { 1 index where { pop pop pop } { dup xcheck { bind } if def } ifelse } def /findfont systemdict begin userdict begin /globaldict where { /globaldict get begin } if dup where pop exch get /globaldict where { pop end } if end end Adobe_CoolType_Core_Defined { /systemfindfont exch def } { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont { pop } ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq { 0 } { dup length } ifelse 2 index length add 1 add dict begin exch { 1 index /FID eq { pop pop } { def } ifelse } forall dup null eq { pop } { { def } forall } ifelse currentdict end exch setglobal } bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal } bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } { FontDirectory 3 index known { FontDirectory 3 index get /FontReferenced known } { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } ifelse } ifelse dup { 3 index findfont /FontReferenced get 2 index dup type /nametype eq {findfont} if ne { pop false } if } if { pop 1 index findfont /Encoding get exch 0 1 255 { 2 copy get 3 index 3 1 roll put } for pop pop pop } { dup type /nametype eq { findfont } if dup dup maxlength 2 add dict begin exch { 1 index /FID ne {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type /stringtype eq { cvn } if def dup currentdict end definefont def } ifelse } bind def /SetSubstituteStrategy { $SubstituteFont begin dup type /dicttype ne { 0 dict } if currentdict /$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin { def } forall { def } forall currentdict dup /$Init known { dup /$Init get exec } if end /$Strategy exch def } { pop pop pop } ifelse } { pop pop } ifelse end } bind def /scff { $SubstituteFont begin dup type /stringtype eq { dup length exch } { null } ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse def end { findfont } @Stopped { dup length 8 add string exch 1 index 0 (BadFont:) putinterval 1 index exch 8 exch dup length string cvs putinterval cvn { findfont } @Stopped { pop /Courier findfont } if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end } bind def /isWidthsOnlyFont { dup /WidthsOnly known { pop pop true } { dup /FDepVector known { /FDepVector get { isWidthsOnlyFont dup { exit } if } forall } { dup /FDArray known { /FDArray get { isWidthsOnlyFont dup { exit } if } forall } { pop } ifelse } ifelse } ifelse } bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 4 index def /$doSmartSub false def end 3 index currentglobal false setglobal exch /CompatibleFonts /ProcSet resourcestatus { pop pop /CompatibleFonts /ProcSet findresource begin dup /CompatibleFont currentexception 1 index /CompatibleFont true setexception 1 index /Font resourcestatus { pop pop 3 2 roll setglobal end exch dup findfont /CompatibleFonts /ProcSet findresource begin 3 1 roll exch /CompatibleFont exch setexception end } { 3 2 roll setglobal 1 index exch /CompatibleFont exch setexception end findfont $SubstituteFont /$substituteFound true put } ifelse } { exch setglobal findfont } ifelse $SubstituteFont begin $substituteFound { false (%%[Using embedded font ) print 5 index ?str1 cvs print ( to avoid the font substitution problem noted earlier.]%%\n) print } { dup /FontName known { dup /FontName get $fontname eq 1 index /DistillerFauxFont known not and /currentdistillerparams where { pop false 2 index isWidthsOnlyFont not and } if } { false } ifelse } ifelse exch pop /$doSmartSub true def end { exch pop exch pop exch 2 dict dup /Found 3 index put exch findfont exch } { exch exec exch dup findfont dup /FontType get 3 eq { exch ?str1 cvs dup length 1 sub -1 0 { exch dup 2 index get 42 eq { exch 0 exch getinterval cvn 4 1 roll 3 2 roll pop exit } {exch pop} ifelse }for } { exch pop } ifelse 2 dict dup /Downloaded 6 5 roll put } ifelse dup /FontName 4 index put copyfont definefont pop } bind def /?str2 256 string def /?add { 1 index type /integertype eq { exch true 4 2 } { false 3 1 } ifelse roll 1 index findfont dup /Widths known { Adobe_CoolType_Data /AddWidths? true put gsave dup 1000 scalefont setfont } if /Downloaded known { exec exch { exch ?str2 cvs exch findfont /Downloaded get 1 dict begin /Downloaded 1 index def ?str1 cvs length ?str1 1 index 1 add 3 index putinterval exch length 1 add 1 index add ?str1 2 index (*) putinterval ?str1 0 2 index getinterval cvn findfont ?str1 3 index (+) putinterval 2 dict dup /FontName ?str1 0 6 index getinterval cvn put dup /Downloaded Downloaded put end copyfont dup /FontName get exch definefont pop pop pop } { pop } ifelse } { pop exch { findfont dup /Found get dup length exch ?str1 cvs pop ?str1 1 index (+) putinterval ?str1 1 index 1 add 4 index ?str2 cvs putinterval ?str1 exch 0 exch 5 4 roll ?str2 cvs length 1 add add getinterval cvn 1 dict exch 1 index exch /FontName exch put copyfont dup /FontName get exch definefont pop } { pop } ifelse } ifelse Adobe_CoolType_Data /AddWidths? get { grestore Adobe_CoolType_Data /AddWidths? false put } if } bind def /?sh { currentfont /Downloaded known { exch } if pop } bind def /?chp { currentfont /Downloaded known { pop } { false chp } ifelse } bind def /?mv { currentfont /Downloaded known { moveto pop pop } { pop pop moveto } ifelse } bind def setpacking userdict /$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known { get } { pop pop { pop /Courier } bind } ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams /CannotEmbedFontPolicy 2 copy known { get /Error eq } { pop pop false } ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup /WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type /stringtype eq { cvn } if def /FontType 3 def /FontMatrix [ .001 0 0 .001 0 0 ] def /Encoding 256 array dup 0 1 255 { /.notdef put dup } for pop def /FontBBox [ 0 0 0 0 ] def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth /y exch def /x exch def x y setcharwidth $SubstituteFont /$Strategy get /$Underprint get exec 0 0 moveto cc show x y moveto end end } bind def currentdict end exch setglobal } bind def /$GetaTint 2 dict dup begin /$BuildFont { dup /WMode known { dup /WMode get } { 0 } ifelse /$WMode exch def $fontname exch dup /FontName known { dup /FontName get dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse exch Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index /FontName get known { pop Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index get null copyfont } { $deepcopyfont } ifelse exch 1 index exch /FontBasedOn exch put dup /FontName $fontname dup type /stringtype eq { cvn } if put definefont Adobe_CoolType_Data /InVMDeepCopiedFonts get begin dup /FontBasedOn get 1 index def end } bind def /$Underprint { gsave x abs y abs gt { /y 1000 def } { /x -1000 def 500 120 translate } ifelse Level2? { [ /Separation (All) /DeviceCMYK { 0 0 0 1 pop } ] setcolorspace } { 0 setgray } ifelse 10 setlinewidth x .8 mul [ 7 3 ] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? { .2 setcolor } { .8 setgray } ifelse fill grestore stroke } forall pop grestore } bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict /FontName known { FontName dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse def /FontName $fontname dup type /stringtype eq { cvn } if def /currentdistillerparams where { pop } { /FontInfo currentdict /FontInfo known { FontInfo null copyfont } { 2 dict } ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [ 1 0 ItalicAngle dup sin exch cos div 1 0 0 ] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal } bind def end def /$None 1 dict dup begin /$BuildFont {} bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type /stringtype eq { cvn } if dup /$fontname exch def $sname null eq { $str cvs dup length $slen sub $slen getinterval } { pop $sname } ifelse $fontpat dup 0 (fonts/*) putinterval exch 7 exch putinterval /$match false def $SubstituteFont /$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval { /$match exch def exit } $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont /$dstack get { exch { 1 index eq { pop false } { true } ifelse } { begin false } ifelse } forall pop } if cleartomark /$slen 0 def $match false ne { $match (fonts/) anchorsearch pop pop cvn } { /Courier } ifelse } bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [ /Ryumin-Light /HeiseiMin-W3 /GothicBBB-Medium /HeiseiKakuGo-W5 /HeiseiMaruGo-W4 /Jun101-Light ] def /Korea1 [ /HYSMyeongJo-Medium /HYGoThic-Medium ] def /GB1 [ /STSong-Light /STHeiti-Regular ] def /CNS1 [ /MKai-Medium /MHei-Medium ] def end def end def /$cmapname null def /$deepcopyfont { dup /FontType get 0 eq { 1 dict dup /FontName /copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup /FontName /copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } { $Strategies /$Type3Underprint get exec } ifelse } bind def /$buildfontname { dup /CIDFont findresource /CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index (-) putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy (-) putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch { pop pop 3 2 roll putinterval cvn /$cmapname exch def } { pop pop pop pop pop } ifelse length $str 1 index (-) putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn } bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known { get } { pop pop [] } ifelse } { pop pop [] } ifelse false exch { dup /CIDFont resourcestatus { pop pop save 1 index /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get } { false } ifelse exch pop exch restore { pop } { exch pop true exit } ifelse } { pop } ifelse } forall { $str cvs $buildfontname } { false (*) { save exch dup /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get not } { true } ifelse exch /CIDSystemInfo get dup /Registry get Registry eq exch /Ordering get Ordering eq and and { exch restore exch pop true exit } { pop restore } ifelse } $str /CIDFont resourceforall { $buildfontname } { $fontname $findfontByEnum } ifelse } ifelse } bind def end end currentdict /$error known currentdict /languagelevel known and dup { pop $error /SubstituteFont known } if dup { $error } { Adobe_CoolType_Core } ifelse begin { /SubstituteFont /CMap /Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq { dup $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse Adobe_CoolType_Data /InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } { FontDirectory 1 index known { exch pop true exit } { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } ifelse } ifelse } forall } { pop pop false } ifelse { exch pop exch pop } { dup /CMap resourcestatus { pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS } { 128 string cvs dup (-) search { 3 1 roll search { 3 1 roll pop { dup cvi } stopped { pop pop pop pop pop $findfontByEnum } { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup /CMap resourcestatus { pop pop 4 1 roll pop pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS true exit } { pop } ifelse } for dup type /booleantype eq { pop } { pop pop pop $findfontByEnum } ifelse } ifelse } { pop pop pop $findfontByEnum } ifelse } { pop pop $findfontByEnum } ifelse } ifelse } ifelse } { //SubstituteFont exec } ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $findfontByEnum } { //SubstituteFont exec } ifelse end } } ifelse bind readonly def Adobe_CoolType_Core /scfindfont /systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup /FontName known { dup /FontName get dup 3 index ne } { /noname true } ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def /$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin { 1 index /FID eq { pop pop } { def } ifelse } forall currentdict end definefont dup /FontName known { dup /FontName get } { null } ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using ) print dup /FontName known { dup /FontName get } { (unspecified font) } ifelse $str cvs print (.\n) print } if } { exch pop } ifelse } { exch pop } ifelse end } bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core /findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type /stringtype ne { $str cvs } if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne { dup $inVMIndex $AddInVMFont } if $doSmartSub { currentdict /$Strategy known { $Strategy /$BuildFont get exec } if } if } if end } bind put } if } if end /$AddInVMFont { exch /FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data /InVMFontsByCMap get exch $DictAdd } { pop pop pop } ifelse } bind def /$DictAdd { 2 copy known not { 2 copy 4 index length dict put } if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get { forall } def 2 copy currentdict put end } { pop } ifelse } if get begin { def } forall end } bind def end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.19 0 %%Copyright: Copyright 1987-2003 Adobe Systems Incorporated. %%Version: 1.19 0 systemdict /languagelevel known dup { currentglobal false setglobal } { false } ifelse exch userdict /Adobe_CoolType_Utility 2 copy known { 2 copy get dup maxlength 25 add dict copy } { 25 dict } ifelse put Adobe_CoolType_Utility begin /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch /eCCRun known not ct_Level2? and or def ct_Level2? { globaldict begin currentglobal true setglobal } if /ct_AddStdCIDMap ct_Level2? { { ((Hex) 57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77) 0 () /SubFileDecode filter cvx exec } } { { eexec } } ifelse bind def userdict /cid_extensions known dup { cid_extensions /cid_UpdateDB known and } if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type /stringtype eq { exch cvn exch } if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq { pop pop cid_UpdateDB } { exch 1 index /Created get eq { exch pop exch pop } { pop cid_UpdateDB } ifelse } ifelse } { pop cid_UpdateDB } ifelse } { cid_UpdateDB } ifelse end } bind def end } if ct_Level2? { end setglobal } if /ct_UseNativeCapability? systemdict /composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring () def /usewidths? true def end def ct_Level2? { setglobal } { pop } ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict /languagelevel known { pop /CIDFont findresource /GlyphDirectory get } { 1 index /CIDFont findresource /GlyphDirectory get dup type /dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + } def /+ { systemdict /languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } { 1 dict begin } ifelse /$ exch def systemdict /languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ? { $ begin } if } def /? { $ type /dicttype eq } def /| { userdict /Adobe_CoolType_Data known { Adobe_CoolType_Data /AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data /CC 3 index put ? { def } { $ 3 1 roll put } ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont /Widths get exch CC exch put } { ? { def } { $ 3 1 roll put } ifelse } ifelse end end } { ? { def } { $ 3 1 roll put } ifelse } ifelse } { ? { def } { $ 3 1 roll put } ifelse } ifelse } def /! { ? { end } if systemdict /languagelevel known { gvm setglobal } if end } def /: { string currentfile exch readstring pop } executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx [.001 0 0 .001 0 0] def /ct_1000Mtx [1000 0 0 1000 0 0] def /ct_raise {exch cvx exch errordict exch get exec stop} bind def /ct_reraise { cvx $error /errorname get (Error: ) print dup ( ) cvs print errordict exch get exec stop } bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop } bind def /ct_GetInterval { Adobe_CoolType_Utility /ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt { dup string /dst_string exch def } if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add /dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add /dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt { arrayIndex get } { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end } bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal { /unknowninstancename /Category resourcestatus } stopped { cleartomark setglobal true } { cleartomark currentglobal not exch setglobal } ifelse { { mark 3 1 roll /Category findresource begin ct_Vars /vm currentglobal put ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse ct_Vars /vm get setglobal end } } { { resourcestatus } } ifelse bind def /CIDFont /Category ct_resourcestatus { pop pop } { currentglobal true setglobal /Generic /Category findresource dup length dict copy dup /InstanceType /dicttype put /CIDFont exch /Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering (Identity) def /Supplement 0 def end def /CMapName /Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } { pop pop /defineresource /undefined ct_raise } ifelse } bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known { get 3 1 roll pop pop} { pop pop /findresource /undefinedresource ct_raise } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /ct_resourcestatus /resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup (Binary) eq { pop null currentfile ct_Level2? { { cid_BYTE_COUNT () /SubFileDecode filter } stopped { pop pop pop } if } if /readstring load exit } if dup (Hex) eq { pop currentfile ct_Level2? { { null exch /ASCIIHexDecode filter /readstring } stopped { pop exch pop (>) exch /readhexstring } if } { (>) exch /readhexstring } ifelse load exit } if /StartData /typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch /GlyphData exch put 2 index null eq { pop pop pop } { pop /readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse } bind def /StartData { mark { currentdict dup /FDArray get 0 get /FontMatrix get 0 get 0.001 eq { dup /CDevProc known not { /CDevProc 1183615869 internaldict /stdCDevProc 2 copy known { get } { pop pop { pop pop pop pop pop 0 -1000 7 index 2 div 880 } } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp /cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul } def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup /cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup /SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup /SubrMapOffset undef dup /SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } { pop } ifelse } forall } if cleartomark pop pop end CIDFontName currentdict /CIDFont defineresource pop end end } stopped { cleartomark /StartData ct_reraise } if } bind def currentdict end def /ct_saveCIDInit { /CIDInit /ProcSet ct_resourcestatus { true } { /CIDInitC /ProcSet ct_resourcestatus } ifelse { pop pop /CIDInit /ProcSet findresource ct_UseNativeCapability? { pop null } { /CIDInit ct_CIDInit /ProcSet defineresource pop } ifelse } { /CIDInit ct_CIDInit /ProcSet defineresource pop null } ifelse ct_Vars exch /ct_oldCIDInit exch put } bind def /ct_restoreCIDInit { ct_Vars /ct_oldCIDInit get dup null ne { /CIDInit exch /ProcSet defineresource pop } { pop } ifelse } bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility /ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge { pop 0 } if /cid exch def { GlyphDirectory cid 2 copy known { get } { pop pop nullstring } ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne { 0 FDBytes ct_cvnsi } { pop 0 } ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq { /charstring nullstring def exit } if /cid 0 def } ifelse } loop } def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto } def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont /Widths get cid 2 copy known { get exch pop aload pop } { pop pop stringwidth } ifelse } { stringwidth } ifelse setcharwidth 0 0 moveto } ifelse } def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known { get } { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup /FontMatrix 2 copy known { get } { pop pop ct_defaultFontMtx } ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont /Widths get def /CharStrings 1 dict dup /.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup /CharStrings get 1 index /Encoding get ct_dfCharCode get charstring put rootfont /WMode 2 copy known { get } { pop pop 0 } ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } { ct_str1 show } ifelse } def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup /FontMatrix get dup ct_defaultFontMtx ct_matrixeq not { ct_1000Mtx matrix concatmatrix concat } { pop } ifelse /Private get Adobe_CoolType_Utility /ct_Level2? get not { ct_dfDict /Private 3 -1 roll { put } 1183615869 internaldict /superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility /ct_Level2? get { 1 index } { 3 index /Private get mark 6 1 roll } ifelse dup /RunInt known { /RunInt get } { pop /CCRun } ifelse get exec Adobe_CoolType_Utility /ct_Level2? get not { cleartomark } if } bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility /ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped { stop } if end end end end } bind def /BaseFontNameStr (BF00) def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /BuildChar /ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString /ct_Type3ShowCharString load def /ct_dfSetCacheProc /ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup /lenIV 4 put def /CharStrings 1 dict dup /.notdef put def /PaintType 0 def /ct_ShowCharString /ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not { exit } if } for exch pop exch pop } bind def /ct_makeocf { 15 dict begin exch /WMode exch def exch /FontName exch def /FontType 0 def /FMapType 2 def dup /FontMatrix known { dup /FontMatrix get /FontMatrix exch def } { /FontMatrix matrix def } ifelse /bfCount 1 index /CIDCount get 256 idiv 1 add dup 256 gt { pop 256} if def /Encoding 256 array 0 1 bfCount 1 sub { 2 copy dup put pop } for bfCount 1 255 { 2 copy bfCount put pop } for def /FDepVector bfCount dup 256 lt { 1 add } if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont /FontBBox known { CIDFont /FontBBox get /FontBBox exch def } if CIDFont /CDevProc known { CIDFont /CDevProc get /CDevProc exch def } if currentdict end BaseFontNameStr 3 (0) putinterval 0 1 bfCount dup 256 eq { 1 sub } if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup /CIDFirstByte exch 256 mul def FontType 3 eq { /ct_FDDict 2 dict def } if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? { /Widths 1 index /CIDFont get /GlyphDirectory get length dict def } if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont /Widths get begin exch /CIDFont get /GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } { exch pop } ifelse } bind def /ct_ComposeFont { ct_UseNativeCapability? { 2 index /CMap ct_resourcestatus { pop pop exch pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch /WMode exch def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity)} ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def /ct_MakeIdentity { ct_UseNativeCapability? { 1 index /CMap ct_resourcestatus { pop pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity) } ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { exch pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def currentdict readonly pop end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2003 Adobe Systems Incorporated. %%Version: 1.0 0 userdict /ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge } bind def /AllocGlyphStorage { Is2015? { pop } { {string} forall } ifelse } bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix [1 0 0 1 0 0] def 4 array astore cvx /FontBBox exch def /sfnts } bind def /Type42DictEnd { currentdict dup /FontName get exch definefont end ct_T42Dict exch dup /FontName get exch put } bind def /RD {string currentfile exch readstring pop} executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop } ifelse } bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop } ifelse } bind def end %%EndResource Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Image 75 dict dup begin put /Adobe_AGM_Image_Id /Adobe_AGM_Image_1.0_0 def /nd{ null def }bind def /AGMIMG_&image nd /AGMIMG_&colorimage nd /AGMIMG_&imagemask nd /AGMIMG_mbuf () def /AGMIMG_ybuf () def /AGMIMG_kbuf () def /AGMIMG_c 0 def /AGMIMG_m 0 def /AGMIMG_y 0 def /AGMIMG_k 0 def /AGMIMG_tmp nd /AGMIMG_imagestring0 nd /AGMIMG_imagestring1 nd /AGMIMG_imagestring2 nd /AGMIMG_imagestring3 nd /AGMIMG_imagestring4 nd /AGMIMG_imagestring5 nd /AGMIMG_cnt nd /AGMIMG_fsave nd /AGMIMG_colorAry nd /AGMIMG_override nd /AGMIMG_name nd /AGMIMG_maskSource nd /invert_image_samples nd /knockout_image_samples nd /img nd /sepimg nd /devnimg nd /idximg nd /doc_setup { Adobe_AGM_Core begin Adobe_AGM_Image begin /AGMIMG_&image systemdict/image get def /AGMIMG_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMIMG_&colorimage /colorimage ldf }if end end }def /page_setup { Adobe_AGM_Image begin /AGMIMG_ccimage_exists {/customcolorimage where { pop /Adobe_AGM_OnHost_Seps where { pop false }{ /Adobe_AGM_InRip_Seps where { pop false }{ true }ifelse }ifelse }{ false }ifelse }bdf level2{ /invert_image_samples { Adobe_AGM_Image/AGMIMG_tmp Decode length ddf /Decode [ Decode 1 get Decode 0 get] def }def /knockout_image_samples { Operator/imagemask ne{ /Decode [1 1] def }if }def }{ /invert_image_samples { {1 exch sub} currenttransfer addprocs settransfer }def /knockout_image_samples { { pop 1 } currenttransfer addprocs settransfer }def }ifelse /img /imageormask ldf /sepimg /sep_imageormask ldf /devnimg /devn_imageormask ldf /idximg /indexed_imageormask ldf /_ctype 7 def currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and{ bind }if def }forall }def /page_trailer { end }def /doc_trailer { }def /imageormask_sys { begin save mark level2{ currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMIMG_&imagemask }{ BitsPerComponent ImageMatrix /DataSource load AGMIMG_&image }ifelse }ifelse cleartomark restore end }def /overprint_plate { currentoverprint { 0 get dup type /nametype eq { dup /DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false exch { AGMOHS_sepink eq or } forall not } ifelse }{ pop false }ifelse }def /process_mask_L3 { dup begin /ImageType 1 def end 4 dict begin /DataDict exch def /ImageType 3 def /InterleaveType 3 def /MaskDict 9 dict begin /ImageType 1 def /Width DataDict dup /MaskWidth known {/MaskWidth}{/Width} ifelse get def /Height DataDict dup /MaskHeight known {/MaskHeight}{/Height} ifelse get def /ImageMatrix [Width 0 0 Height neg 0 Height] def /NComponents 1 def /BitsPerComponent 1 def /Decode [0 1] def /DataSource AGMIMG_maskSource def currentdict end def currentdict end }def /use_mask { dup type /dicttype eq { dup /Mask known { dup /Mask get { level3 {true} { dup /MaskWidth known {dup /MaskWidth get 1 index /Width get eq}{true}ifelse exch dup /MaskHeight known {dup /MaskHeight get 1 index /Height get eq}{true}ifelse 3 -1 roll and } ifelse } {false} ifelse } {false} ifelse } {false} ifelse }def /make_line_source { begin MultipleDataSources { [ Decode length 2 div cvi {Width string} repeat ] }{ Width Decode length 2 div mul cvi string }ifelse end }def /datasource_to_str { exch dup type dup /filetype eq { pop exch readstring }{ /arraytype eq { exec exch copy }{ pop }ifelse }ifelse pop }def /masked_image_simulation { 3 dict begin dup make_line_source /line_source xdf /mask_source AGMIMG_maskSource /LZWDecode filter def dup /Width get 8 div ceiling cvi string /mask_str xdf begin gsave 0 1 translate 1 -1 Height div scale 1 1 Height { pop gsave MultipleDataSources { 0 1 DataSource length 1 sub { dup DataSource exch get exch line_source exch get datasource_to_str } for }{ DataSource line_source datasource_to_str } ifelse << /PatternType 1 /PaintProc [ /pop cvx << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1.0 sub 1 matrix scale 0.5 0 matrix translate matrix concatmatrix /MultipleDataSources MultipleDataSources /DataSource line_source /BitsPerComponent BitsPerComponent /Decode Decode >> /image cvx ] cvx /BBox [0 0 Width 1] /XStep Width /YStep 1 /PaintType 1 /TilingType 2 >> matrix makepattern set_pattern << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1 matrix scale /MultipleDataSources false /DataSource mask_source mask_str readstring pop /BitsPerComponent 1 /Decode [0 1] >> imagemask grestore 0 1 translate } for grestore end end }def /imageormask { begin SkipImageProc { currentdict consumeimagedata } { save mark level2 AGMCORE_host_sep not and{ currentdict Operator /imagemask eq DeviceN_PS2 not and { imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get /DeviceGray eq and{ [/Separation /Black /DeviceGray {}] setcolorspace /Decode [ Decode 1 get Decode 0 get ] def }if use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and { Names convert_to_process not { 2 dict begin /imageDict xdf /names_index 0 def gsave imageDict write_image_file { Names { dup (None) ne { [/Separation 3 -1 roll /DeviceGray {1 exch sub}] setcolorspace Operator imageDict read_image_file names_index 0 eq {true setoverprint} if /names_index names_index 1 add def }{ pop } ifelse } forall close_image_file } if grestore end }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load /Adobe_AGM_OnHost_Seps where { pop imagemask }{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator /colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ AGMCORE_is_cmyk_sep{ MultipleDataSources{ /DataSource [ DataSource 0 get /exec cvx DataSource 1 get /exec cvx DataSource 2 get /exec cvx DataSource 3 get /exec cvx /AGMCORE_get_ink_data cvx ] cvx def }{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul /DataSource load filter_cmyk 0 () /SubFileDecode filter def }ifelse /Decode [ Decode 0 get Decode 1 get ] def /MultipleDataSources false def /NComponents 1 def /Operator /image def invert_image_samples 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }{ MultipleDataSources NComponents AGMIMG_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator /image eq{ AGMCORE_host_sep{ /DoImage true def HostSepColorImage{ invert_image_samples }{ AGMCORE_black_plate not Operator/imagemask ne and{ /DoImage false def currentdict ignoreimagedata }if }ifelse 1 AGMCORE_&setgray DoImage {currentdict imageormask_sys} if }{ use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ image }ifelse }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentcolorspace overprint_plate not{ knockout_unitsq }if }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin /MappedCSA CSA map_csa def begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_avoid_L2_sep_space{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def }if AGMIMG_ccimage_exists MappedCSA 0 get /DeviceCMYK eq and currentdict/Components known and Name () ne and Name (All) ne and Operator /image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load /exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for } /exec cvx ] cvx bind MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ AGMCORE_avoid_L2_sep_space not currentcolorspace 0 get /Separation ne and{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator /imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentdict/ImageMatrix get concat knockout_unitsq }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name (All) ne and{ level2{ [ /Separation Name [/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub } bind ] AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor currentdict imageormask_sys }{ currentdict Operator /imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name (All) eq or Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentcolorspace 0 get /Separation ne{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentoverprint MappedCSA 0 get /DeviceCMYK eq and Name inRip_spot_has_ink not and Name (All) ne and { imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse end end }def /decode_image_sample { 4 1 roll exch dup 5 1 roll sub 2 4 -1 roll exp 1 sub div mul add } bdf /colorSpaceElemCnt { currentcolorspace 0 get dup /DeviceCMYK eq { pop 4 } { /DeviceRGB eq { pop 3 }{ 1 } ifelse } ifelse } bdf /devn_sep_datasource { 1 dict begin /dataSource xdf [ 0 1 dataSource length 1 sub { dup currentdict /dataSource get /exch cvx /get cvx /exec cvx /exch cvx names_index /ne cvx [ /pop cvx ] cvx /if cvx } for ] cvx bind end } bdf /devn_alt_datasource { 11 dict begin /srcDataStrs xdf /dstDataStr xdf /convProc xdf /origcolorSpaceElemCnt xdf /origMultipleDataSources xdf /origBitsPerComponent xdf /origDecode xdf /origDataSource xdf /dsCnt origMultipleDataSources {origDataSource length}{1}ifelse def /samplesNeedDecoding 0 0 1 origDecode length 1 sub { origDecode exch get add } for origDecode length 2 div div dup 1 eq { /decodeDivisor 2 origBitsPerComponent exp 1 sub def } if 2 origBitsPerComponent exp 1 sub ne def [ 0 1 dsCnt 1 sub [ currentdict /origMultipleDataSources get { dup currentdict /origDataSource get exch get dup type }{ currentdict /origDataSource get dup type } ifelse dup /filetype eq { pop currentdict /srcDataStrs get 3 -1 /roll cvx /get cvx /readstring cvx /pop cvx }{ /stringtype ne { /exec cvx } if currentdict /srcDataStrs get /exch cvx 3 -1 /roll cvx /xpt cvx } ifelse ] cvx /for cvx currentdict /srcDataStrs get 0 /get cvx /length cvx 0 /ne cvx [ 0 1 Width 1 sub [ Adobe_AGM_Utils /AGMUTIL_ndx /xddf cvx currentdict /origMultipleDataSources get { 0 1 dsCnt 1 sub [ Adobe_AGM_Utils /AGMUTIL_ndx1 /xddf cvx currentdict /srcDataStrs get /AGMUTIL_ndx1 /load cvx /get cvx /AGMUTIL_ndx /load cvx /get cvx samplesNeedDecoding { currentdict /decodeDivisor known { currentdict /decodeDivisor get /div cvx }{ currentdict /origDecode get /AGMUTIL_ndx1 /load cvx 2 /mul cvx 2 /getinterval cvx /aload cvx /pop cvxs BitsPerComponent /decode_image_sample load /exec cvx } ifelse } if ] cvx /for cvx }{ Adobe_AGM_Utils /AGMUTIL_ndx1 0 /ddf cvx currentdict /srcDataStrs get 0 /get cvx /AGMUTIL_ndx /load cvx currentdict /origDecode get length 2 idiv dup 3 1 /roll cvx /mul cvx /exch cvx /getinterval cvx [ samplesNeedDecoding { currentdict /decodeDivisor known { currentdict /decodeDivisor get /div cvx }{ currentdict /origDecode get /AGMUTIL_ndx1 /load cvx 2 /mul cvx 2 /getinterval cvx /aload cvx /pop cvx BitsPerComponent /decode_image_sample load /exec cvx Adobe_AGM_Utils /AGMUTIL_ndx1 /AGMUTIL_ndx1 /load cvx 1 /add cvx /ddf cvx } ifelse } if ] cvx /forall cvx } ifelse currentdict /convProc get /exec cvx currentdict /origcolorSpaceElemCnt get 1 sub -1 0 [ currentdict /dstDataStr get 3 1 /roll cvx /AGMUTIL_ndx /load cvx currentdict /origcolorSpaceElemCnt get /mul cvx /add cvx /exch cvx currentdict /convProc get /filter_indexed_devn load ne { 255 /mul cvx /cvi cvx } if /put cvx ] cvx /for cvx ] cvx /for cvx currentdict /dstDataStr get ] cvx /if cvx ] cvx bind end } bdf /devn_imageormask { /devicen_colorspace_dict AGMCORE_gget begin /MappedCSA CSA map_csa def 2 dict begin dup dup /dstDataStr exch /Width get colorSpaceElemCnt mul string def /srcDataStrs [ 3 -1 roll begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi string } repeat end ] def begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_producing_seps not { level3 not { Operator /imagemask ne { /DataSource [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse colorSpaceElemCnt /devicen_colorspace_dict AGMCORE_gget /TintTransform get dstDataStr srcDataStrs devn_alt_datasource /exec cvx ] cvx 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def } if }if currentdict imageormask }{ AGMCORE_host_sep{ Names convert_to_process { CSA map_csa 0 get /DeviceCMYK eq { /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse 4 /devicen_colorspace_dict AGMCORE_gget /TintTransform get dstDataStr srcDataStrs devn_alt_datasource /exec cvx ] cvx filter_cmyk 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode [1 0] def /DeviceGray setcolorspace currentdict imageormask_sys }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate { /DataSource [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse CSA map_csa 0 get /DeviceRGB eq{3}{1}ifelse /devicen_colorspace_dict AGMCORE_gget /TintTransform get dstDataStr srcDataStrs devn_alt_datasource /exec cvx ] cvx 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def currentdict imageormask_sys } { gsave knockout_unitsq grestore currentdict consumeimagedata } ifelse } ifelse } { /devicen_colorspace_dict AGMCORE_gget /names_index known { Operator/imagemask ne{ MultipleDataSources { /DataSource [ DataSource devn_sep_datasource /exec cvx ] cvx def /MultipleDataSources false def }{ /DataSource /DataSource load dstDataStr srcDataStrs 0 get filter_devn def } ifelse invert_image_samples } if currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentdict imageormask }ifelse }ifelse cleartomark restore }ifelse end end end }def /imageormask_l2_overprint { currentdict currentcmykcolor add add add 0 eq{ currentdict consumeimagedata }{ level3{ currentcmykcolor /AGMIMG_k xdf /AGMIMG_y xdf /AGMIMG_m xdf /AGMIMG_c xdf Operator/imagemask eq{ [/DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK {}] setcolorspace AGMIMG_c 0 ne {AGMIMG_c} if AGMIMG_m 0 ne {AGMIMG_m} if AGMIMG_y 0 ne {AGMIMG_y} if AGMIMG_k 0 ne {AGMIMG_k} if setcolor }{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def [/Indexed [ /DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK { AGMIMG_k 0 eq {0} if AGMIMG_y 0 eq {0 exch} if AGMIMG_m 0 eq {0 3 1 roll} if AGMIMG_c 0 eq {0 4 1 roll} if } ] 255 { 255 div mark exch dup dup dup AGMIMG_k 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_y 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_m 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_c 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop counttomark 1 roll }{ pop }ifelse counttomark 1 add -1 roll pop } ] setcolorspace }ifelse imageormask_sys }{ write_image_file{ currentcmykcolor 0 ne{ [/Separation /Black /DeviceGray {}] setcolorspace gsave /Black [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Yellow /DeviceGray {}] setcolorspace gsave /Yellow [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Magenta /DeviceGray {}] setcolorspace gsave /Magenta [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Cyan /DeviceGray {}] setcolorspace gsave /Cyan [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore } if close_image_file }{ imageormask }ifelse }ifelse }ifelse } def /indexed_imageormask { begin save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget dup /CSA known { /CSA get map_csa }{ /CSD get get_csd /Names get } ifelse overprint_plate not{ knockout_unitsq }if }{ Indexed_DeviceN { /devicen_colorspace_dict AGMCORE_gget /names_index known { indexed_image_lev2_sep }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata } ifelse }{ AGMCORE_is_cmyk_sep{ Operator /imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ level2{ Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget begin CSD get_csd begin }{ /indexed_colorspace_dict AGMCORE_gget begin CSA map_csa 0 get /DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and { [/Indexed [/DeviceN [/Cyan /Magenta /Yellow /Black] /DeviceCMYK {}] HiVal Lookup] setcolorspace } if end } ifelse imageormask Indexed_DeviceN { end end } if }{ Operator /imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin Indexed_DeviceN not { currentcolorspace dup 1 /DeviceGray put dup 3 currentcolorspace 2 get 1 add string 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub { dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put }for put setcolorspace } if currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse end end }def /OPIimage { dup type /dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /ImageType 1 def /Decode [0 1 def] currentdict end }if dup begin /NComponents 1 cdndf /MultipleDataSources false cdndf /SkipImageProc {false} cdndf /HostSepColorImage false cdndf /Decode [ 0 currentcolorspace 0 get /Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ] cdndf /Operator /image cdndf end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cachemask_level2 { 3 dict begin /LZWEncode filter /WriteFilter xdf /readBuffer 256 string def /ReadFilter currentfile 0 (%EndMask) /SubFileDecode filter /ASCII85Decode filter /RunLengthDecode filter def { ReadFilter readBuffer readstring exch WriteFilter exch writestring not {exit} if }loop WriteFilter closefile end }def /cachemask_level3 { currentfile << /Filter [ /SubFileDecode /ASCII85Decode /RunLengthDecode ] /DecodeParms [ << /EODCount 0 /EODString (%EndMask) >> null null ] /Intent 1 >> /ReusableStreamDecode filter }def /spot_alias { /mapto_sep_imageormask { dup type /dicttype ne{ 12 dict begin /ImageType 1 def /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def }{ begin }ifelse /Decode [/customcolor_tint AGMCORE_gget 0] def /Operator /image def /HostSepColorImage false def /SkipImageProc {false} def currentdict end sep_imageormask }bdf /customcolorimage { Adobe_AGM_Image/AGMIMG_colorAry xddf /customcolor_tint AGMCORE_gget bdict /Name AGMIMG_colorAry 4 get /CSA [ /DeviceCMYK ] /TintMethod /Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components [ AGMIMG_colorAry aload pop pop ] edict setsepcolorspace mapto_sep_imageormask }ndf Adobe_AGM_Image/AGMIMG_&customcolorimage /customcolorimage load put /customcolorimage { Adobe_AGM_Image/AGMIMG_override false put dup 4 get map_alias{ /customcolor_tint AGMCORE_gget exch setsepcolorspace pop mapto_sep_imageormask }{ AGMIMG_&customcolorimage }ifelse }bdf }def /snap_to_device { 6 dict begin matrix currentmatrix dup 0 get 0 eq 1 index 3 get 0 eq and 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop { 1 1 dtransform 0 gt exch 0 gt /AGMIMG_xSign? exch def /AGMIMG_ySign? exch def 0 0 transform AGMIMG_ySign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch AGMIMG_xSign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch itransform /AGMIMG_llY exch def /AGMIMG_llX exch def 1 1 transform AGMIMG_ySign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch AGMIMG_xSign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch itransform /AGMIMG_urY exch def /AGMIMG_urX exch def [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY] concat }{ }ifelse end } def level2 not{ /colorbuf { 0 1 2 index length 1 sub{ dup 2 index exch get 255 exch sub 2 index 3 1 roll put }for }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Image begin /AGMIMG_mbuf 0 string def /AGMIMG_ybuf 0 string def /AGMIMG_kbuf 0 string def { colorbuf dup length AGMIMG_mbuf length ne { dup length dup dup /AGMIMG_mbuf exch string def /AGMIMG_ybuf exch string def /AGMIMG_kbuf exch string def } if dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop } addprocs {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf} true 4 colorimage end } def /sep_imageormask_lev1 { begin MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get } currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ {AGMIMG_k mul 1 exch sub} currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMIMG_k mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_y mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_m mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_c mul 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get /DeviceGray eq { {255 mul round cvi ColorLookup exch get 0 get} currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf {AGMIMG_c mul 1 exch sub} {AGMIMG_m mul 1 exch sub} {AGMIMG_y mul 1 exch sub} {AGMIMG_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceGray eq { {HiVal mul round cvi Lookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def }if end systemdict /setpacking known { setpacking } if %%EndResource currentdict Adobe_AGM_Utils eq {end} if %%EndProlog %%BeginSetup Adobe_AGM_Utils begin 2 2010 Adobe_AGM_Core/doc_setup get exec Adobe_CoolType_Core/doc_setup get exec Adobe_AGM_Image/doc_setup get exec currentdict Adobe_AGM_Utils eq {end} if %%EndSetup %%Page: (htmlparser pms.eps) 1 %%EndPageComments %%BeginPageSetup /currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 Adobe PDF library 6.66 2004-05-31T17:22:14-04:00 2004-06-01T13:19:43Z Illustrator 2004-05-31T17:22:15-04:00 JPEG 256 216 /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA2AEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYqpXFzb20RluJFijHVnIA/HFUnfzM05KaVZy3p6erQpF/wR/sxRak0 HnK73eeCxQ/sIOTffRv+JYqsbylezb3WrTy16jen4scK0t/wFp53a5mLdz8P9MbWlJvIMI3ivXRu xKA/qK42tKR8r+ZLXez1DkB0Xm6fhuuK0ptrHnDTN7yD1oh1Z1DCn+vH/HFUxsPPGmzkLdI1s5/a +2n3jf8ADGltkEM8M8YkhdZI26OpBB+kYEqmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxVokAVPTFUtl1G6umMWlxq4Bo95JX0V8eNN3Py298UNQ+X7UyCe+dr+5H7c32B/qxj4QM VpMwAoAAoBsAMUt4q7FXYq7FXYq7FUp1LyxpF8CzRejMf92xfCa+46H7sUUxm40bX9BkNzZSmS3G 7PH4D/fkZr/HChOtE84Wt4VguwLe5Owav7tj7E9D88CbZFil2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KrXdUUsxoo3JOKoR7eS9P8ApAKWn7Nv0L+8nt/k/f4BVGKqqoVQFUCgA2AGKt4q 7FXYq7FXYq7FXYq7FXYq7FWN695Qt7sNcWIEN11KdEf/AJpOFFJboXma50+f9H6oG9NDwDt9qP2P iuKgs1VlZQykMrCoI3BBwJbxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVSubm3tbeW5uZVht4 VMk00hCoiKKszMdgAMIBJoKl2kzXepU1KdHt7Rx/oNo44uUPSaZezP1VP2R9r4iQs5gR26oCbZWl 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVJ/MPl6HVIeS0jvIx+7k7Efyt7fqxQQkPlrXZ9Oujpeo1SP lxQv/utvA/5JwqCzbAl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVhs8582eZpdMj+Ly5oEq/pN v2bvUFo6W22xjt9nlHd+KnYNXLA8KF/xy5eQ7/j0Ycz5BmWYjN2KuxV2KuxV2KuxV2KsYvvzN/L6 wvJrK88wWNvd27tHPBJMqujqaMrDsQcyI6TLIWImmByRHUKH/K2/yy/6mbT/APken9cl+SzfzZfJ fFj3hPdD8xaFr1o95ot9DqFrHIYXmt3DqJAoYqSO9HB+nKcmKUDUhRZCQPJMcrS7FXYq7FWN+btB F5bm9t1/0qEfGB+2g/iuFBb8n62by1NnO1bm3A4serR9AfmvTFQyPAl2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxVif5lea7ry/5fVNMUS6/q0yadokGxrcz7ByD+zGKsa7ePXMrSYROXq+mO59zDJKhtzTT yl5btPLfl6z0e2YyC2T99cN9uaZjylmfr8UjkscqzZTkmZFMY0KTjKmTsVdirsVdirsVdirsVfCX 5q/+TK8z/wDbTuv+TrZ2mi/uYf1Q6nN9ZYtmU1vq3/nFD/yXeo/9teb/AKhrbOY7a/vR/V/SXYaT 6fi9pzUOU7FXYq7FXYqwPWbaTQdfivbYEW8jeoqjYf8AFkeFDOIJo54UmjPKORQyHxBFRgSqYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXl+lyjzd+dOoXpPqaV5Hg+pWg/ZOoXdfXffuiK0Z9wM2Mx4WnA/ iyb/AAHJpHqn/VeoZrm52KuxV2KuxV2KuxV2KuxV8Jfmr/5MrzP/ANtO6/5OtnaaL+5h/VDqc31l i2ZTW+rf+cUP/Jd6j/215v8AqGts5jtr+9H9X9JdhpPp+L2ioqBXc7gd6DNQ5TeKuxV2KuxVKfM2 mi+0mVVFZoh6sXjVeo+kVGKCgfI9+Z9Ne1Y1e2b4f9R9x+NcJUMkwJdirsVdiqHk1HT4nMct1Eki /aRpFBHzBOSET3K3Be2c7FYJ45WAqVR1YgeOxwGJHNVfArsVdirsVWxyRyLyjYOtSOSkEVU0I28C KY0qX+ZNah0Py9qWsTAGPT7aW5Kk05ekhYL/ALIimWYsfHMR7yiRoW+MPLf5xefvLcF3DpN+kK31 y95ds8EMrvPLTkxeRWb9nOuy6DFkI4hyFOsjnlHk958u/npHpf5T2XmXzVOL/W7yW4itbOIJFJOY pSo2QcURRTk9PvO2aTL2dxZzCG0RTlxz1ASPN4x5l/5yB/M3Wrh2i1M6Vakkx2tgBFxHasu8rf8A BfRm3xdmYYDlxHzcWWpmfJJrb83fzOt5lmj8zX7Ou4EkzSr9KSclP0jLTocJ/hDEZ5973T8mP+cg pvMV/F5d81elHqk/w2GoRqI0nf8A33Io+FZD+zxoG6UBpXS6/szwxxw+nqO5y8Oo4tjzTn83/wA+ dP8AJsj6No8ceoeYgB6qvX0LYMAV9XjQsxB2QH5kbVq0PZpy+qW0PvZZs4jsOb561P8AOn80dRuD NN5iuoSeiWrC2QDwCwhB9+b6HZ+CIrhH3uGc8z1VdE/PH80NIulnTXJ7xAavb3x+sxuP5Tz+MD/V YHI5OzsMhXDXu2WOomOr6e/KX82dM8/6VIwjFnrVnQX9jWoo32ZYid2jb71Ox7E85rdFLBLvieRc /FlEwz3MJtfCX5q/+TK8z/8AbTuv+TrZ2mi/uYf1Q6nN9ZYtmU1vq3/nFD/yXeo/9teb/qGts5jt r+9H9X9JdhpPp+KTf85WanqOmXnk+9065ls7uI6gYriB2jdT/o3RlIOXdjQEhMEWNv0sdXIiiEh8 jf8AOUut2PpWnmy0GqWwopv7cLHcqPFk2jk/4X55dqOxonfGa8ujGGrP8T6A8p+ffKXmy1FxoWox XRArJb14Tx/68TUcfOlPA5o8+myYjUhTlwmJcmQZQzdirsVYVoy/ozzhPZjaKbmijtQj1E/phQzX Al2KuxV2KviT88//ACbHmL/jOn/JmPOw7O/uI/jq6vUfWWaf84nf8pvq3/bMb/qIizE7a/ux/W/Q 26TmX1PnNOe7FUHrOq22kaPfatdBja6fby3U4jALmOBDI3EEgE0XbfJ44GUhEcyaQTQt8n/mL/zk V5r8zerY6MW0PR2qpWJv9KlXp+8lFOIP8qU8CWzp9L2VDHvL1S+x1+TUk7DYPffyG/8AJS+Xv+Mc 3/UTLmj7S/v5fjo5mD6Aln/OSertp/5W3cKHi2pXEFnWtDTkZmA+awkfLLOyYcWceQJY6mVQfHed Y6xe80rpGjuzJEpSJSSQqlixC+A5MTgpbWYVdiq+CaaCaOeF2jmiYPHIpoyspqGBHQg4CLFFQXXF xPcTyXFxI008zF5ZXJZ2djVmZjuSTiAAKCk2swq7FWb/AJLeY5tB/MrRLhH4Q3c62N0K0VoroiP4 vZWKv8xmF2hi48Mh3b/JuwSqYfb+cc7R8Jfmr/5MrzP/ANtO6/5OtnaaL+5h/VDqc31li2ZTW+rf +cUP/Jd6j/215v8AqGts5jtr+9H9X9JdhpPp+Kh/zk95L80eYbPQrvRNPl1CPTPrf1xIAHkUTehw Kxg83/um+yDkuyNRDGZCRq6/SuqxmVU+W5I5IpGjkUpIhKujAhgRsQQemdIDbr1Szvbyxuo7uynk trqE8op4WaORWHdWUgg4JREhR3CQSOT2fyN/zlB5m0v0rTzPANZslopu0pHdqPEnaOSg8QCe7ZqN R2PCW8Dwn7HKhqiOe76D8nfmR5N83wK+ialHNPTlJYyH07lKdeUTfFQfzLVffNFn0mTEfUP1OZDJ GXJk2Y7Nh/mdfqvmTTrwbBinL34Pv/wpwoLMMCUNqOpafptnJe6hcxWdpCKy3E7rHGo92YgZKMDI 0BZQTTxHz1/zlJotgXtPKNr+lLkbG/uA0dsD/kJ8Mkn/AAo+ebjTdjylvkPCO7q4uTVAct2efkr5 o1nzP5BtdZ1mYT39xPcB3VVRQqSsqqFUAUUCmYXaGGOPKYx5bN2GRlGy+X/zz/8AJseYv+M6f8mY 86Ps7+4j+Orgaj6ymP5F+e9F8k6vrWsaqWZf0cYra2j3kmmaaMqi12GykknoMh2jppZoxjHvZafI I2Sn+pf85W+eprsvp+nafaWoaqQyJLM5XweTnGD/ALFVyiHYuIDcklkdXLoHpv5P/n5b+dL4aHrF rHp+uMrPbtCWMFwEBZlQMSyOq78STUA79s12u7NOEcUTcfucjDqOPY80n/5yG/NnW/Ll9N5RtLS2 lsdZ0hvrE8ok9VPrTT278OLquypUVHXLey9FHIPEJNxl91FhqMxj6e8Pl/OkcB615G/5yF80+W9D 03y5aadYzWloTGk0om9QiSUua8ZFXq/hmq1PZcMkjMk2XJx6kgAU9B/5y2vGTy9oFlX4ZruWYr2J hjCg/wDJbMHsSPrkfJu1Z9IfMmdG4D1j/nHv8s9L8469e3msxmbSdISMva1KiaaYt6asRvwURsSB 7ds1famrliiBH6pOTpsQkbPR7t+Y/wCT3krWfKV9HZaRa6fqVrbySafc2kSQMska8lRvTC8kanEh q9ajfNLpddkhkFyJBO9uXkwxkOT4xzrnVuxV9Kf847/lF5cuvLUfmvXrGPULm+eQWEFyokhjhiYx l/TaqszOrbsNgBTOe7U10xPgiaA5ufpsIqys/wCckPys8tWPl1fNWi2cWnXVvNHDew26rFDLHKeI b01AUOr03A3BNceytZMz4JGwUanEKsPm7OhcFMPLzMuv6YykhhdwEEbEESLleX6D7iyh9QfoNnCu 4fCX5q/+TK8z/wDbTuv+TrZ2mi/uYf1Q6nN9ZYtmU1vq3/nFD/yXeo/9teb/AKhrbOY7a/vR/V/S XYaT6fi9pzUOUxfzf+WnkrzdGw1vTI5bkjit9GPSuVp0pKtGNPBqj2zJwavJi+k/DownjjLmHhPn T/nFbW7Pnc+U75dSgG4sborDcAeCybRP9PDN1p+2YnbIK8xycSekP8LxXWdC1rRL1rHV7Kawu06w zoyNTxFeo9xtm3x5IzFxNhxJRI5oW3uLi2nSe3leGeIho5Y2KurDoVYUIOTIBFFANPZvy6/5yQ85 WF7Z6XrqrrdlNIkInkPp3Sc2Cg+qARJStTzWp/mzUarsrGQZR9J+xy8WpldHd9AeflpDZSj7SO4B +YB/41zmg5xeXeef+cqNMtvVtPJ9mb2YVUaldho4B/lRxbSP/suPyObvT9jSO+Q15BxZ6oD6Xg+s +Y/O3nnV4/r9xdaxfyNS2tI1ZwCf2YYIxxX/AGK5useLHhjtUR+OriSlKZ73o/kv/nGDzdqvp3Pm KZNDs2oTBtNdsvX7Cnglf8pqjuua/UdsY47Q9R+xuhpSeez6S8meUNK8o+X7fQtLMjWluWYPMweR mdizMxAUbk9hnP588sszKXNzoQERQfIH55/+TY8xf8Z0/wCTMedV2d/cR/HV1uo+spH5G8k6x5z8 ww6JpXBZ5FaSWaUkRxRJ9p3oCe4AoOpGX6nURww4pMMeMyNBOPzP/KjW/wAv7uzjvp4ry1v1c211 CGA5RU5oytupHMH3+/KdHrY5waFEMsuEwSj8vL6ex8+eXrqA0kj1G19qq0qqy/JlJGW6qIlikD/N LHEakPe+iPz/APyjuvMkt15wj1JLaLRdIk52bRF2k+qma4NHDADkH49M0PZmuGOsdXxS++g5uow8 XqvkHyvnTOvez/l//wA463/mby5pfmWPW4raO7rKLZoGdl9OVkpyDjrw8M0+q7VGOZhw3Xm5ePTW AbZX/wA5df7w+WP+Mt5/xGHMbsPnL4fpZ6zkHzbnQuC+mv8AnEj/AI4XmD/mKg/5NtnOdt/XH3Of pPpL3HVv+OVef8YJP+IHNNDmHLfnpneOldir7f8AyTAH5VeXKCn+i1++Rs43tD+/l73bYfoCTf8A OSX/AJKfUf8AjPa/8nly7sr+/Hx+5hqfoL45zrHWI/QP+O7pv/MVD/ycXK8v0H3MofUH6D5wruHw l+av/kyvM/8A207r/k62dpov7mH9UOpzfWWLZlNb6t/5xQ/8l3qP/bXm/wCoa2zmO2v70f1f0l2G k+n4vac1DlOxVQvb6ysbZ7q+uI7W1iFZZ5nWONR4szEAYYxMjQ3KkvD/AMzvz/8Ay0mspdJt9Lj8 1tuAZkC2iNSnJZHBkLDxRfk2bnR9mZgeIng+9xcuohy5vma8ninuppordLWKRyyW0RcxxgmoRTI0 j0H+UxOdFEUKu3XkonQP+O7pv/MVD/ycXI5foPuZQ+oPuDz6CdPtgNyZth/sTnDB25fEvmLyr5i8 t3xsdcsJrC5FeKyr8Lgbco3FUdfdSRncYs0MguJt1EoGPN6f+U358aV5Qtk03UPLtutsQFl1LT1C XbDxmDk+qf8AZrTNbrezZZTxCRvuPL9jkYtQI7EPo/yl+Yfk3zZDz0LU4rmULyktSTHcJ48on4vt 40p75oM+lyYvqFObDJGXIsjzHZviT88//JseYv8AjOn/ACZjzsOzv7iP46ur1H1lmf8AzicB/jfV jTf9GNv/ANHEWYnbX92P636G3Scyyv8A5y3Vf0J5eag5C5nAbuAY1qPwzG7E+qXubNX9IfP3k3/l MNC/7aFr/wAn0zeaj+7l/VP3OHj+oe99t/mR/wCS780/9si//wCoaTOP0n97D+sPvdpl+k+58GZ2 zqH2v+Q3/kpPL3/GKb/qJlzj+0v7+X46O1wfQGEf85aWLP5W0S/A+G3vngJ2qPXhLDv/AMU5mdiS 9ch5NWrHpHvfL+dI699Nf84kf8cLzB/zFQf8m2znO2/rj7nP0n0l7jq3/HKvP+MEn/EDmmhzDlvz 0zvHSuxV9v8A5Kf+Sr8uf8wv/G7ZxvaH9/L3u2w/QEm/5yS/8lPqP/Ge1/5PLl3ZX9+Pj9zDU/QX xznWOsR+gf8AHd03/mKh/wCTi5Xl+g+5lD6g/QfOFdw+EvzV/wDJleZ/+2ndf8nWztNF/cw/qh1O b6yxbMprfVv/ADih/wCS71H/ALa83/UNbZzHbX96P6v6S7DSfT8XqXmPzZ5b8tWYvNd1GHT4Gr6f qt8b8aVEcYq7kV6KDmtxYZ5DURbkSkBzeHedP+crI1523lDTuZ6fpG/FB80gQ1PsWb/Y5udP2N1y H4D9biz1f814X5n86+avNF19Z17Upr5wSY43akSE9fTiXjGn+xXN1h08MYqIpxJ5JS5lJcuYPQvI 35F+fPNqx3MdqNM0t6EX97yjVlPeKOhd9uhpx98wNR2jixbXcu4N+PTyl5PonyH+QPkbyoYrqaH9 M6tHRhe3igojDvFBuieIJ5MOxzQantLLl2+mPcHNx4Ix97JvNy+td6Ta95Z9/lVR/HMBtKc6to2k 6xYyWGq2kN9Zy/bgnRZEJ7GjdCOxG4yUMkoG4mipAPN4b55/5xX025Mt55PvPqUpqw0y7LSQk+Ec 28if7IN8xm50/bMhtkF+YcWelB+l4L5h8peb/J+orFq9lcabco1YLgVCMR+1FMh4t/sWzd4s+PKP SQQ4coSgd31r+Qut6trX5aaffatdyXt4ZJ42uJm5yMscrKvJjuaAdTnL9pY4wzERFDZ2WCRMAS+Z /wA8/wDybHmL/jOn/JmPOh7O/uI/jq4Go+ss0/5xO/5TfVv+2Y3/AFERZidtf3Y/rfobdJzLK/8A nLf/AI4Xl/8A5ip/+Ta5i9ifXL3Nmr+kPn3yb/ymGhf9tC1/5Ppm91H93L+qfucPH9Q977n836bN qnlPW9MgFZr6wuraIDarTQsi/i2cZgnwzjLuIdrIWCHwCysrFWBDA0IOxBGdy6d6B5H/ADl89+Xr XT9BsdQWPR4rlCI2hjdljeXnKisVLcWLH332pmBqNBimTMj1U3488hQ6Pov/AJyI0c6l+Vepug5S 6e8N4gpXZJAj/dHIxzQdl5OHOPPZzdQLgXxnnXOrfTX/ADiR/wAcLzB/zFQf8m2znO2/rj7nP0n0 l7jq3/HKvP8AjBJ/xA5pocw5b89M7x0rsVfb/wCSn/kq/Ln/ADC/8btnG9of38ve7bD9ASb/AJyS /wDJT6j/AMZ7X/k8uXdlf34+P3MNT9BfHOdY6xH6B/x3dN/5iof+Ti5Xl+g+5lD6g/QfOFdw+Evz V/8AJleZ/wDtp3X/ACdbO00X9zD+qHU5vrLFsymt9W/84of+S71H/trzf9Q1tnMdtf3o/q/pLsNJ 9PxY7/zl7/0yf/bw/wCxbMjsP+P4fpYazo+dM37hPSfI35BefPNJiuJbf9D6W9G+u3oKsynvHDtI 224rxU/zZrtR2nix7A8UvL9bfj08peT6I8jfkR5C8qCKcWv6V1RKN9fvQHKsO8cX92lD02Lf5WaH Udo5cu11HuDm48EYvRcwG52KseuF+t+cbdOsdjAZHHgzVp/xJcUMhxS7FUNqOm6fqVnJZahbRXlp MKS286LJGw91YEZKMzE2DRQRaE8t+WdF8t6YNL0aD6rYJI8scHJnCmVizULljSp6VyWXLLJLiluV jEAUGDeaP+cfPIvmXX7zXNQmv1vL5g8ywzRrHVVCfCDGx6L45m4e08uOIiKoNU9PGRspl5B/Jvyn 5G1O41HRpLt7i5hNvILmRHXgXV9gqJvVBlep1+TMAJVsnHhjDkj/AMwPy18veerW0ttae4SOykaW E2zqh5OAp5clfwyvTaueEkxrdlkxiQ3Ylpv/ADjP+Xmn6ja38E+ome0mjniDzxlecTB1qBENqjMq fa2WQINbtY00Qbes5rG95j5w/wCcefy/8zalPqjrc6bfXBLztZOixySN1do5EkFSdzxpX55scHam XGOHYjzaJ6eMjaT2H/OK35e27q9zealdlTUo0sUaHfwSIP8A8Nlsu2cp5CIYjSxD1rWNMt9V0m90 u5Fbe+gltph/kSoUb8GzVwmYyEh0cgixT4V0zyJ5j1PzZP5VsoFfWoJJomt3kSKrW5PqAM5UbBSf lnaT1MI4+M/T+t1Qxky4er6c/wCce/IHmjybpWr2/mC1W2lu54pIFWWOWqqhBNY2am5zne09TDLI GB5BztPjMRu9S1CJ5rC5hjFZJInRB03ZSBmtiaIch8e/9C4/m3/1aYv+kq2/6qZ1f8q4O/7C638t N3/QuP5t/wDVpi/6Srb/AKqY/wAq4O/7Cv5ab6i/LHQ9S0LyFoukanGIr+zg9O4jDK4VuTGnJSQe vbOb1eQTyykORLn441EApb+dXlbWvNH5f3mj6NCLi/mlgeOJnWMERyhm+Jyq9BlmgzRx5RKXLdjm iZRID5v/AOhcfzb/AOrTF/0lW3/VTOg/lXB3/YXC/LTRekf848/mtb6rZXEulxrFDPFJI31q3NFV wSaB/AZDJ2pgMSL6dxTHTTBD6/zlXYvlPz7+Q35m6v521zVLDTY5LK9vZ57eQ3MClo5JCynizgjY 986bTdpYYY4xJ3A7i4GTTyMiQkP/AELj+bf/AFaYv+kq2/6qZf8Ayrg7/sLD8tN79+QHkrzF5Q8n Xmma9brbXk2oyXMcayJKDE0EKA8oyw+1G22aPtPUQy5BKPLh/SXL0+MxjRUvzo/KfVfzCv8Ay9Ha 3cVjZaf9bN9cSAu4E3ocBHGKcj+7bqwHvh0GtjgErFk1X2rmwmdJn5G/JLyH5QKXFtafX9USh/SN 7xlkVvGNaBI9+hUcvc5XqO0MuXYmh3BljwxjyZ9mC2uxV2KtEhQSTQDck4qknlpDO97qrDe9lIir /vqM8V/z9sUBPMUuxV2KuxV2KuxV2KuxV2KuxV2KuxV8wfn/AKNf+TfzK0vz1pK8FvZEnJAoou7b iHVqdpY6V8fizo+zMgy4Til0+4uDqBwyEg+jPLXmCw8xaBY63p7crS/iWWPepUnZkan7SMCre4zQ ZcRxyMTzDmxkCLCYSv6cTyUrwUtTxoK5Wl5n/wArr/7U3/Tz/wBesNItXsvzns5LhEu9Me3hYgNK kolK178eCdPnjS2yLzj51g8uW1pKtuLxrwt6aCT0xwUAluXF6/aGBbYxH+dSF1D6RxQkBmFxWg7m npCuGltm3mfXxoeiy6oIfrQjKARh+FebBa8qP4+GBLB/+V1/9qb/AKef+vWGkWm/ln80rLWNTj0+ ezaylnPGB/UEqlqVCn4UpXtitu81/mfa6NqEmn2lr9cuYaCZy/BFYivEUDFiO+K2kkH50XIP+kaU jjuY5Sv61bGltknnL8wP8N38Fp9Q+t+tF6vP1fTp8RWlOD/y4Ftj/wDyuv8A7U3/AE8/9esNLbIp vPnp+TYPMn1GvrOU+qerSlJGjr6nD/Ir9nAtsd/5XX/2pv8Ap5/69YaW038sfmjZ6zqcenz2TWcs 9RA/qCVSwFaE8UpWm2K2zjAlK9fmkNqljAaXN83op7If7xvkFxQUfbW8dtbxwRCkcShFHsBTFKri rsVdirsVdirsVdirsVdirsVdirsVYv8AmT5JtfOflC90SXik7j1bGdukVzHUxtt2NSrf5JOZOk1B w5BL5+5hkhxCnhn/ADjx5+uvLPmG58g+Ya20dxcMlosuxgvgeDwmvaWlB/lf62bntTTDJAZYb7fY 4mnycJ4S+lrv/eWb/Ub9RznXOfOOk3kFlqNvdXFst5DC/J7aSnFx/Kahh+GFiiLxm1vXHOm2C27X bgQWMAqq7AUFAo7VOwGKp7+ZdyRq1npfPmNLtIYHPWshUMx+kccVLHtVbTStl9RZiVtkF3yXjSer F6eI3G+KvRta1H9IflHDOTV1WCGTx5RSiM1+fGuKWA+X9dTSJJ3ewt7/ANZOAW5XkqmtagYoT38s fLbalrMeomZFg06RZHhqfVLUqm1Ps17+2Kh3nTylqbeZb+a0aG5inlMppNEroX+Io6MysCK/dipS iPzVr9pcLHcyLcJA3F7a4jjkQhdipBB8OoxVP/zdmWbV9OmXZZLJXA9mdjipSjSLfXn06JrXR7a6 gPLhPLDG7t8RrVmNTQ7YqyzzGl0n5V2y3VulrOJ/jgiUIi/vnpRV2FRvilgug66mlLdc7C3vvrKB AbheQQiu6/OuKGQfld5cfUNYTVDOiw6c4Z4QT6jMVPDalAvv7YqHszMqqWY0UCpJ6ADAyS3To2ur l9UlFA49OzQ/sw1ry+ch3+VMVTPFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8E/5yO/KeS+hfzt ocR+v2qA6vBHXlJFGNrhaftRgfF/k7/s77vsrW8P7uXI8v1OJqcV+oc07/I3834/OGk/4e1mcL5l tYiqyv8A8fcKinqDxkUfbHf7Q70p7S0HhHij9B+xngzcQo8060T8ppNP1a1vZr+O4igcO8JhNGA7 bsRmrtvp6BBZ2kDFoII4mIoSiKpI+gYEvPtY/Km81PV7rUJNTRfrMrScPSJKqTsteXZdsNopEa1+ UekXCRDSpDYupPql+cwYHpsW2pja0r2/5eXcXlK68vtqCuJ51njm9M0ShUlePLvwxWkHp35SpBZX 9tdXqzG6jUQSLGVMUiGqvuxr4EeGNrSr5Z/LfVdB1aK/g1VGUfDPD6TASRn7Sn4/pHvitKPmn8rr 7V9autSt76JBckMIpEYUIULTkCfDwxWkLpX5NulzHJqd8jwIQXghU1en7PNqUH0Y2tJ550/L+XzF f29zFeLarBCIfTMZboxaooy+OBSGPf8AKlrr/q6p/wAiT/zXhtaZJN5Emk8kweW/rih4ZC5ueBoa yNJTjy/y6dcC0lunflOkGm6hZ3V4szXYjNvKsZUxSRFiG3Y1ryofbDa0q+V/y41TQNWjvodUR0+x cQ+kwEkZ6r9rr3HvitMwuE+uv9X/AOPVD/pB/nI/3WPb+b7vHAlG4q7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FUv17XtJ0DSbjVtWuFtbC1XnLK/4Ko6szHYAbk5PHjlOQjEWSiUgBZfKfmP/nIrzbe+ eLbW9MZrXR7BmS20hj8E0LbP9ZA2ZpB/wH7O+56bF2VjGMxlvI9f1OvlqTxWOTfm3ylZ31mn5mfl m8kdnHIJtT0yE0udMuR8TMqrv6dd9tgNx8P2XBnMT4Obn0PSQTOF+uD138nPz40/zZHDo2vPHZ+Z QAsbbJDd+Bj3+GT+ZO/VfAavX9mnF6o7w+5yMOcS2PN69mqch2KuxV2KuxV2KuxV2KuxV2KuxV2K pKurzapeG20hg1lbyFL/AFLqnKM/Fbwfzv8Asuw+FNxu9Qtphwi5c+g/Si7TlVVVCqKKOgypLeKu xV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpfr2vaToGk3GratcLa2FqvOWV/wVR1ZmOwA3JyePHKchGIs lEpACy+NvzZ/NnVvPurftWuhWrH9H6fX6PVlps0jD6FGw7k9botFHBHvkeZdZmzGZ8mBZnNL2T/n HDyf5zvvMq67p11JpmhWrcNQuKVS6A3NsqNVXr3b9jr1pmo7Vz4xDhIuXTy83K00JXfRm/5s/wDO OUV9JLrvklFtb8kyT6QCI4pGrXlbtsI2r+z9nw498PRdq8Ppybjv/W25dNe8ebHvIH/OQ/mHyxdf 4e8/W1xcxWzek126kX0BHaZXp6o9zRv9bL9T2XDIOPERv8mGPUGO0n0T5f8AM2geYtPXUNEvor+0 b/dkTVKk/supoyN7MAc0OXFLGakKLmxkCLCZ5Wl2KuxV2KuxV2KuxV2KpR5k82eXvLdmLrWb1LVH PGCM1aWV+yRRLV5G9lGW4sM8hqItjKQHNIYIfNHm889Sim8veWW+zpvLhqN4v/Ly6H/Ro2HWNDzP 7TL0y4mGLl6p9/Qe7v8AfyYiz5BmFra21pbxW1rEkFvCoSGGNQqIqigVVGwAzFJJNlsVcCuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2Kpfr2vaToGk3GratcLa2FqvOWV/wVR1ZmOwA3JyePHKchGIslEpAC y+NvzZ/NnVvPurftWuhWrH9H6fX6PVlps0jD6FGw7k9botFHBHvkeZdZmzGZ8mBZnNL0n8nfyd1H z1qP1u752vlu1el3djZpWG/ow1/a/mboo96DNdr9eMIobzLfhw8e55PsLStK07SdOt9N023S1sbV BHBBGKKqj/OpJ3J3OcpOZkbO5LsgK2CLyKWL+dvy28oec7X0tbsg86Lxgvov3dzEOvwyAGo/yWBX 2zJ0+ryYT6T8OjCeMS5vCNZ/ID8y/Jt+2reRdTe9VKlfQf6tdhBvxdCfTlHsG3/lzdY+08OUcOUV 9ocQ6eUd4lEaL/zkt510C4Gm+eNDaeaPaSTgbK6H+U0TL6bfQFyOTsnHMXil+kJGpkNpB6boP/OQ /wCVurKofUn0ydv9030TR0+ciepF/wAPmuydl549L9zfHUQPVnOm+Y/L2qU/RuqWl9Xp9Wnimr3/ AGGbMOeKceYIbRIHkmOVpdiqU6n5s8r6Vy/SesWVkUryW4uIozsadGYHrtlsMM5fSCfggyA5sK1f /nIT8uLOQW+n3Fxrl6x4pa6dA8jM3YBn9ND/ALEnMuHZmY7kCI82o549N1CDWPzq83ECx06DyPpL /avb4fWtQK9P3duQqqfaRR7HJGGnxcz4kvLYfNFzl/RZJ5U/LPQNBuv0pO02s+YWFJdb1FzPcb9R HyqsS7mgQdNqnMfNq5THCPTHuHJsjjA36suzFZuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVL9e17 SdA0m41bVrhbWwtV5yyv+CqOrMx2AG5OTx45TkIxFkolIAWXxt+bP5s6t591b9q10K1Y/o/T6/R6 stNmkYfQo2HcnrdFoo4I98jzLrM2YzPkwLM5pek/k7+Tuo+etR+t3fO18t2r0u7sbNKw39GGv7X8 zdFHvQZrtfrxhFDeZb8OHj3PJ9haVpWnaTp1vpum26WtjaoI4IIxRVUf51JO5O5zlJzMjZ3JdkBW wReRS7FXYq7FUHqmjaRq1v8AVtUsbe/t619G5iSZK+PFwwycMkom4mkEA83n+s/846flXqRLR6dJ p0hNS9nM6f8ACSepGPoXM7H2pnj1v3tUtPA9GJ3v/OJXll2P1HXb2Bf2RPHFMR8yohzJj23PrENR 0ke9ZB/zizNB/cecruLanwQFdh22nwnti+cB+PgkabzKIj/5xasZWrqfmrULtTswVVQlfCrtNkT2 wR9MIhP5YdSWQaR/zjV+VunsGntbnU2FKG8uGpUe0AgU/SMon2tnlyIHuH62UdNAM/0Tyx5c0KIx aNpltp6EUb6vEkZan8zKKt9OYOTNOf1EluEQOSaZWl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux VL9e17SdA0m41bVrhbWwtV5yyv8AgqjqzMdgBuTk8eOU5CMRZKJSAFl8bfmz+bOrefdW/atdCtWP 6P0+v0erLTZpGH0KNh3J63RaKOCPfI8y6zNmMz5MCzOaXpP5O/k7qPnrUfrd3ztfLdq9Lu7GzSsN /Rhr+1/M3RR70Ga7X68YRQ3mW/Dh49zyfYWlaVp2k6db6bptulrY2qCOCCMUVVH+dSTuTuc5SczI 2dyXZAVsEXkUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVL 9e17SdA0m41bVrhbWwtV5yyv+CqOrMx2AG5OTx45TkIxFkolIAWXxt+bP5s6t591b9q10K1Y/o/T 6/R6stNmkYfQo2HcnrdFoo4I98jzLrM2YzPkwLM5pek/k7+Tuo+etR+t3fO18t2r0u7sbNKw39GG v7X8zdFHvQZrtfrxhFDeZb8OHj3PJ9haVpWnaTp1vpum26WtjaoI4IIxRVUf51JO5O5zlJzMjZ3J dkBWwReRS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUv17X tJ0DSbjVtWuFtbC1XnLK/wCCqOrMx2AG5OTx45TkIxFkolIAWXxt+bP5s6t591b9q10K1Y/o/T6/ R6stNmkYfQo2HcnrdFoo4I98jzLrM2YzPkwLM5pek/k7+Tuo+etR+t3fO18t2r0u7sbNKw39GGv7 X8zdFHvQZrtfrxhFDeZb8OHj3PJ9haVpWnaTp1vpum26WtjaoI4IIxRVUf51JO5O5zlJzMjZ3Jdk BWwReRS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUv17XtJ 0DSbjVtWuFtbC1XnLK/4Ko6szHYAbk5PHjlOQjEWSiUgBZfG35s/mzq3n3Vv2rXQrVj+j9Pr9Hqy 02aRh9CjYdyet0Wijgj3yPMuszZjM+TAszml6T+Tv5O6j561H63d87Xy3avS7uxs0rDf0Ya/tfzN 0Ue9Bmu1+vGEUN5lvw4ePc8n2FpWladpOnW+m6bbpa2NqgjggjFFVR/nUk7k7nOUnMyNncl2QFbB F5FLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir47/AOcg /PGv6153vtEumMGlaNMYbSyGyswG87/zM4Pw+C7eNer7L08YYxIfVL8U63U5CZV0Dy3Nm470n8nf yd1Hz1qP1u752vlu1el3djZpWG/ow1/a/mboo96DNdr9eMIobzLfhw8e55PsLStK07SdOt9N023S 1sbVBHBBGKKqj/OpJ3J3OcpOZkbO5LsgK2CLyKXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8a/O/8jJPN8/8AiDy+yR6+qBLm3kPBLpEFEIfosigcRXYi nSmbbs/tHwvRP6fucbPg4txzeXeQ/wDnHDzjqevInme0fSNGg+O5kLxNJLQ/3UXBn3b+Y7AeJoM2 Wp7Vxxj6DxSaMemkT6uT6r0rStO0nTrfTdNt0tbG1QRwQRiiqo/zqSdydznMzmZGzuS54FbBF5FL sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/Z uuid:12412b8a-b3cd-11d8-ad73-000a277a9196 application/postscript % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 Adobe_AGM_Utils begin Adobe_AGM_Core/page_setup get exec Adobe_CoolType_Core/page_setup get exec Adobe_AGM_Image/page_setup get exec %%EndPageSetup Adobe_AGM_Core/AGMCORE_save save ddf 1 -1 scale 0 -274.963 translate [1 0 0 1 0 0 ] concat % page clip gsave newpath gsave % PSGState 0 0 mo 0 274.963 li 328.581 274.963 li 328.581 0 li clp [1 0 0 1 0 0 ] concat 162.14 159.209 mo 164.809 159.209 li 166.378 159.209 166.978 158.385 166.978 157.128 cv 166.978 155.702 166.331 155.074 164.809 155.074 cv 162.14 155.074 li 162.14 159.209 li cp 153.82 149.112 mo 168.57 149.112 li 174.539 149.112 175.297 153.644 175.297 156.7 cv 175.297 160.92 172.876 164.805 167.668 164.805 cv 162.14 164.805 li 162.14 169.482 li 153.82 169.482 li 153.82 149.112 li false sop /0 << /Name (PANTONE 430 C) /0 [/DeviceCMYK] add_csa /CSA /0 /TintMethod /Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components [ 0.05 0 0 0.45 ] >> add_csd 1 /0 get_csd sepcs 1 sep f 187.539 153.847 mo 187.469 153.847 li 185.743 161.292 li 189.315 161.292 li 187.539 153.847 li cp 180.946 149.112 mo 194.13 149.112 li 199.433 169.482 li 190.835 169.482 li 190.306 166.883 li 184.797 166.883 li 184.175 169.482 li 175.692 169.482 li 180.946 149.112 li 1 /0 get_csd sepcs 1 sep f 210.91 158.785 mo 213.472 158.785 li 215.36 158.785 215.773 158.013 215.773 156.497 cv 215.773 155.216 215.084 154.707 213.611 154.707 cv 210.91 154.707 li 210.91 158.785 li cp 202.59 149.112 mo 218.17 149.112 li 221.905 149.112 224.094 151.253 224.094 155.102 cv 224.094 159.156 221.56 160.806 218.98 161.064 cv 224.694 169.482 li 214.852 169.482 li 210.955 162.921 li 210.91 162.921 li 210.91 169.482 li 202.59 169.482 li 202.59 149.112 li 1 /0 get_csd sepcs 1 sep f 246.271 149.453 mo 246.271 154.929 li 244.726 154.762 241.245 154.104 238.872 154.104 cv 236.748 154.104 236.128 154.504 236.128 155.158 cv 236.128 155.618 236.476 156.076 237.995 156.076 cv 240.278 156.076 li 245.141 156.076 246.8 158.385 246.8 162.719 cv 246.8 169.28 241.476 170.081 236.748 170.081 cv 233.57 170.081 231.033 169.966 228.267 169.225 cv 228.267 163.235 li 229.881 163.689 232.347 163.861 234.469 163.861 cv 237.049 163.861 238.25 163.832 238.25 163.007 cv 238.25 162.092 237.534 162.033 236.312 162.033 cv 234.032 162.033 li 230.847 162.033 227.574 160.92 227.574 156.186 cv 227.574 149.596 232.694 148.513 237.742 148.513 cv 240.162 148.513 243.826 148.943 246.271 149.453 cv 1 /0 get_csd sepcs 1 sep f 250.767 149.112 mo 269.344 149.112 li 269.344 155.556 li 259.084 155.556 li 259.084 157.5 li 269.344 157.5 li 269.344 162.232 li 259.084 162.232 li 259.084 164.148 li 269.344 164.148 li 269.344 169.482 li 250.767 169.482 li 250.767 149.112 li 1 /0 get_csd sepcs 1 sep f 282.64 158.785 mo 285.199 158.785 li 287.089 158.785 287.504 158.013 287.504 156.497 cv 287.504 155.216 286.814 154.707 285.337 154.707 cv 282.64 154.707 li 282.64 158.785 li cp 274.322 149.112 mo 289.9 149.112 li 293.636 149.112 295.825 151.253 295.825 155.102 cv 295.825 159.156 293.29 160.806 290.707 161.064 cv 296.425 169.482 li 286.583 169.482 li 282.686 162.921 li 282.64 162.921 li 282.64 169.482 li 274.322 169.482 li 274.322 149.112 li 1 /0 get_csd sepcs 1 sep f 123.629 118.185 mo 118.823 85.8472 129.627 54.8028 150.344 32.6446 cv 127.018 54.9756 114.497 87.8809 119.604 122.254 cv 127.965 178.542 180.37 217.389 236.655 209.028 cv 260.596 205.473 281.368 193.923 296.707 177.514 cv 281.839 191.75 262.59 201.704 240.678 204.959 cv 184.395 213.321 131.989 174.469 123.629 118.185 cv /1 << /Name (PANTONE Reflex Blue C) /CSA /0 /TintMethod /Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components [ 1 0.73 0 0.02 ] >> add_csd 1 /1 get_csd sepcs 1 sep f 327.45 87.9068 mo 319.089 31.6187 266.686 -7.22852 210.401 1.13233 cv 186.457 4.68848 165.687 16.2354 150.344 32.6446 cv 165.217 18.4102 184.466 8.45557 206.379 5.20069 cv 262.661 -3.16114 315.066 35.691 323.423 91.9761 cv 328.229 124.315 317.426 155.358 296.707 177.514 cv 320.033 155.187 332.555 122.282 327.45 87.9068 cv 1 /0 get_csd sepcs 0.6 sep f 67.0342 274.159 mo 67.1495 274.266 li 152.929 188.32 li 152.784 188.172 li 148.898 185.844 142.468 179.098 139.797 175.377 cv 54.8653 260.479 li 54.6446 260.612 54.4376 260.758 54.2564 260.946 cv 52.167 263.036 53.3951 267.639 56.9927 271.229 cv 60.4571 274.688 64.8492 275.934 67.0342 274.159 cv 1 /1 get_csd sepcs 1 sep f 43.5586 81.8414 mo 57.1377 81.8414 li 57.1377 102.126 li 58.9927 99.9947 60.8355 98.4737 62.6661 97.5552 cv 64.4991 96.6377 66.6661 96.1783 69.1675 96.1783 cv 72.8765 96.1783 75.7999 97.4366 77.9312 99.9542 cv 80.0665 102.472 81.1329 106.335 81.1329 111.541 cv 81.1329 136.773 li 67.4024 136.773 li 67.4024 114.941 li 67.4024 112.452 66.9883 110.688 66.1626 109.651 cv 65.3365 108.619 64.1788 108.101 62.6861 108.101 cv 61.0381 108.101 59.6973 108.798 58.6763 110.195 cv 57.6514 111.59 57.1377 114.094 57.1377 117.706 cv 57.1377 136.773 li 43.5586 136.773 li 43.5586 81.8414 li 1 /1 get_csd sepcs 1 sep f 104.832 81.5596 mo 104.832 96.8028 li 112.38 96.8028 li 112.38 107.969 li 104.832 107.969 li 104.832 122.052 li 104.832 123.746 104.977 124.866 105.268 125.411 cv 105.713 126.261 106.492 126.683 107.61 126.683 cv 108.613 126.683 110.02 126.359 111.827 125.71 cv 112.832 136.168 li 109.473 136.986 106.34 137.397 103.425 137.397 cv 100.042 137.397 97.5562 136.913 95.9542 135.943 cv 94.3545 134.973 93.1685 133.499 92.4004 131.524 cv 91.6338 129.547 91.252 126.346 91.252 121.92 cv 91.252 107.969 li 86.271 107.969 li 86.271 96.8028 li 91.252 96.8028 li 91.252 89.4449 li 104.832 81.5596 li 1 /1 get_csd sepcs 1 sep f 120.853 107.386 mo 120.656 95.9752 125.474 75.0494 125.474 75.0494 cv 136.118 75.0147 li 136.118 84.6431 li 139.155 80.6255 142.217 77.7657 145.312 76.0665 cv 148.4 74.3672 152.129 73.5181 156.501 73.5181 cv 161.202 73.5181 164.922 74.4537 167.667 76.3165 cv 170.405 78.1788 172.646 80.9566 174.389 84.6431 cv 177.931 80.3331 181.161 77.4029 184.077 75.8487 cv 186.99 74.2974 190.591 73.5181 194.874 73.5181 cv 201.182 73.5181 206.108 75.6109 209.653 79.7876 cv 213.196 83.9688 214.968 90.5079 214.968 99.4 cv 214.968 140.604 li 192.524 140.604 li 192.524 103.227 li 192.524 100.266 192.002 98.0596 190.958 96.6177 cv 189.429 94.3541 187.529 93.2198 185.256 93.2198 cv 182.572 93.2198 180.409 94.2916 178.771 96.4346 cv 177.131 98.5782 176.313 102.015 176.313 106.75 cv 176.313 140.604 li 153.869 140.604 li 153.869 104.56 li 153.869 101.684 153.715 99.731 153.415 98.7022 cv 152.929 97.0626 152.084 95.7374 150.884 94.7325 cv 149.684 93.7266 148.277 93.2198 146.663 93.2198 cv 144.036 93.2198 141.877 94.3116 140.189 96.4854 cv 138.498 98.6636 137.658 102.237 137.658 107.206 cv 137.658 140.604 li 126.968 140.67 li 126.968 140.67 121.05 118.796 120.853 107.386 cv 1 /1 get_csd sepcs 1 sep f 227.623 49.8257 mo 250.067 49.8257 li 250.067 140.604 li 227.623 140.604 li 227.623 49.8257 li 1 /1 get_csd sepcs 1 sep f 261.892 140.432 mo 261.892 122.974 li 300.672 105.922 li 261.892 89.0562 li 261.892 71.5992 li 317.505 98.5025 li 317.505 113.345 li 261.892 140.432 li 1 /1 get_csd sepcs 1 sep f 33.6524 94.7354 mo 33.6524 105.299 li 10.1866 115.619 li 33.6524 125.824 li 33.6524 136.385 li 0 120.108 li 0 111.125 li 33.6524 94.7354 li 1 /1 get_csd sepcs 1 sep f %ADOBeginClientInjection: EndPageContent "AI11EPS" userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse %ADOEndClientInjection: EndPageContent "AI11EPS" % page clip grestore grestore % PSGState Adobe_AGM_Core/AGMCORE_save get restore %%PageTrailer [/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 Adobe_AGM_Image/page_trailer get exec Adobe_CoolType_Core/page_trailer get exec Adobe_AGM_Core/page_trailer get exec currentdict Adobe_AGM_Utils eq {end} if %%Trailer Adobe_AGM_Image/doc_trailer get exec Adobe_CoolType_Core/doc_trailer get exec Adobe_AGM_Core/doc_trailer get exec %%EOF %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 11.0 %%AI8_CreatorVersion: 11.0.0 %%For: (Me) (Mine) %%Title: (htmlparser pms.eps) %%CreationDate: 6/1/04 9:19 AM %AI9_DataStream %Gb"-6CQC$WE?P)cnitWj!@6Id7OI`CjP[m?md9ln:*9JeQNoI\__?k`]XYj9cJ9:Dr3s/M]Dp"(\I%<+5fF]"%kcESDWYC"nWE'J=f*?+GPg@RcO]d=5CNM#_mfA) %rH/&.m_d);^?iQnrbDGmjmB\WbD2,hDa#3>9b1gq+0i[Is7GH/q_&KT58F4`rO;5ZIs:qc]/SX(J+p"!q"7GPL&WCss3:M?:U++g %I,\&j.Fim?QT'5IQmCCh+VmrYp"SX8$(+M8"/#U %pl_)*ci;uHhL51n2t(532rFV&)NAZ>q"t!VkBm#F`TQf9s7#RXrk3\>;J340;W4[c&*`'#bqm"?)PQKg#Sh94YiLiBqTZWJH#RiP %NShDIiD9A_O'h1$r:]0?pHPGi:!g+KMoWTHs7l:@Dr:Tjh0j1YQ#HFYIP"8Z7mm+>]?_#YkYSqiGPC!k2N'6fa8NVo+9!GdU?`VF %ptblZDh%WUn]du@+5[%P0+$H`J,f#u]/QAM&^eY'`:oCN)62d`3]T)`L1gn7rOoD?"h+tb+B"FBLf+25@:(TB,PH[5>i.%sGSkDLhfrlrJ*mQX-Drp]>3N;1T6 %g@JC\q>Ba4S%mg0,Vjrfr:\2.pV6athm&ePLq#1#nT2\.*8Jdo%WU2i^E/-'?Oi)Me]1E0_2.#&e:A4J?Pp7;Jt@ZN_-a^)&]%gfM;UcR_hd5( %N#OsS'ZL:E,\YX'Tb`Rpr^*1!"j1A)T]ZGfJg*JermHueEp>g\SbbfoLRu[/8IbNI=ti/8$SBa7d\uClRPFSj=ti..@=ehL$fclS %E!N/5q1l`7F!uUS:^b8JIq]Z)9*h]mIX%XG!;'Oc8*5d,7o4tE"?1l>NLY;*4f67p&m %(a$SISqXpU#=dr.Cn'%LJup=V`FKH%6qB,iRtr%I'qc=5HU;dZ]fiit$MM#gb*6>"6J>To^1bKp\H=g#G:7;M4_<&5J&RRH=neBUJcm)VRe-)*J`F!/.F`0>JOIB%JTj,e=36MUG)MrI5+$G!P]#]1H8Eb(X#UcI"_KQq&'.D"^7(< %6hrjacd_FYru&t>JQh)Z^E)@!q7AXb6QDr?s$q:$Vg5(6GCd45OTkj3d^+4NG,Tjp@Y'Qt?'&E<1H^eG\Pg'0M%QA1AQc+VT2@&# %GOW]5*07lK:(H,9d5/=]I)dN-"#.dc`@%>!r5:1ocG'a7i]C0\#PAGd+nj\sNr52cWnn@33s9dtScFQXB)+M.pS(01mg(ajWZS2f %8:@M)Ij9Z-;P.U>;7l@T73EoTQhL;J0Qib^B7c$qBCU>am1=!kNiDTX(L4h_G^fiiD8I!:Ne-+J9PGa^7KW%%iJ;_RrM966#WTcW %Sfo>"$_K6'COD^D'Oe.V?cLSK:eE]*$jq?-Bp%6gk<$IQQ[Pc=i&^?`Nu$;c:JgAD/UW.V(b?_=m\r_GmKcD`Q.#Hg!go,4C5EK1 %B("YkHoJopqHm^0Hn$N_%#1YnXM"C)i2cY(JFb'sJYs^#oDf]C?KeL!H)1:dq[8L:GAl"s\BS6b6P(i[K>:OaMf;)`Q>m5OGt7H/ %:F#9N2`JD0d8,/$q$k\^5;@%U<(p,kSmE,DO!*m.4.uT\f_YkGK)\\BpB>"he"/NBKNX,<8`1[P=BSoD%-5k,1qKo163BPdF7m.h-#iKu-IKVXXYGfU:n*Mk*jntp %ZWL$@cQZetU"bkq<-5+=NoV$lViIa%;,>:"?'&BNYliOpV^o:m3D.Z+TbY@RBp,I %YI+dBZJSKfqMGOuNF=AY8qN#SK.>T+S==Pb4XH7jfPNL:UA,U[Kp'L+88B-r,c]=@h,MdUmF+u!/??$*%@jNBBTsdC2l@M@3 %jku!k8]=W)?/cbV1;QuAGE0'>'H&2r@V76%>Tq3GNHm%p$61YY=#jbgMW:QO6]DEqBW0Arj-WA9Z$;;2#G]&'E::ECJOq6nM2q1^c$9:VuY@N=>NRUthaU&VC#;G*ZLcXk\nMO@^)-%Z&pBh\-AP"I4Xj6ps$pSFI#dY?mVmq0gQAZ`;+PmgC7 %4Z&Gjd%bnnSqOgn.X>:uea!V]C\Pg)C9=(%C,K3*if%3>=)hMBXGoW;aYZrA.8br!:JDWLMmh\S@6&S<*#.g;Y+kSf$0&0a\>=I> %m[3L6\WW\^mn0&0gj00s+p6;An&msbDt=R\61uYT\F(t`ogS14=i4OLc)Br]ZqcS?R#gkif!u33`83g:.BRc.<(!P0VOU9tYAfD9 %72X[c%[mV>R7OUc";:[9+>NLA[R.DNrWU$UI":CVHpV%"E/gK,kmho"7`I$uCsgAR-Yn(orfllnG!DL1#"Ib+n@jbGoG=q9Nss?7 %[tP`ehfoOdMe0*[)9j#M32SF,eLJj$=:T635eA?3.2ii5HRIQkO^F7>2GI&X/nbe/7f^A %$N,A`oLh?NT&an^mRWF"5ca9he15EFk5n+;#C8=g4]2CP>_ER>5m9_?HJ13qtAG %g;48,&EIORU&N-sBs12p.Gn]B$?fA#XsffQ;Y)HliHS%V+lR+[B3`DfN&V0a/8!IbHH'Y=dWc7K7q;c;W\!?(\-dWEQ_7C>`eAX0 %j?7eLUd)"\$X3``['rIZ*'dm)*rr1)+fj&B]S"Vr*]h*phQ%I13YNW,r7`\\[f)eCLIL9\j]t>rM,g< %K8^V/3:;s*_5d:Z9X:M2+k*>kKL(VU\QX:ulrhcn#OXPU0(!@a5uo"h':2qL4!.;a/lF`nXcmrU=ZR)'MIjp4IS7;QdPfi178mjD %K=!Sk0qqrBCiL`"Y1HSrO`>U5:3JJ)p<^0\?:7`Oh,!+\;>REj\ZFUkS`<8Q/A/INOLN%Y/&AFE%2.EekS7Q@-P#4Y:4rGL%/WB# %TQcagd&b&FhG(ncS]jFOKZWY4P5-A.7b4Xh+-0Qf,K-,?JR/^n)gBFSj&@PX-!Aqm/"K.@KeE*(NkE]Xen"d*_es,\6m0Z;m;ddn %d@jPLiB,X.!51[6(hlc9Z6RirE"12lVUDV?:]ubC>M.Cg&^D91#]0#(Bl$ZCN?/2K8nAT'Id3in/g7sF:DrHZe,%1,X[J9#:R4f" %[p*q3V](Tj[$,]KLhM%SGBT3=U">=RN\WfsKQ5^CDW=o9S9C.I^>SE=m3p.Xc"#e@UWdL]l"t,R:ue(2_"/f/qn,2,Fr.oh8GLir^IX(VG#Pp(OO5G>+s69-9jFW^f4gf-AbGB#L+"9BlZp0Ln((.q_[sB/(oFM?+4_"?Ym[IK %mf#Cnof+"jj*Y*l*Z]<^a4'R+]KP*l0;ne+SD7g@9rIfoSG[(aL"#R63h9'UVn:F>gn0A.4-/Rh4J.tH5Hj6h5'H,hjqSg %2VbmBgeYENm1RtCoetSHDbmiTE7V\8h">m/S\#j0VRuYA\at%2?+;uQSaOdI[s*$nrTPuQ`H@O;1<$C+Z*WAo)DB^'nXB:[>*K3) %?i)h*rYVh;+8aSYm3u?XW!r*rnJ[03?Ln_Z4np0eC^@q`)id9*jDZ/L:PZO_hUb,3kM-oXai0ZhMi6M;/"1"//qV$\@CrK7`p3[h %)$d*&NoSWK&6fl2HhcT]ViS+'n@CTsGg.&=meFBTl\sGPY9RD*YE^aOs<=CZ)7kCV'"Xa4DnK?,T[O:4+)@6Hh]2 %dFVQ,jj13A:;q@QX5e\IMsIOU0)@X&`AJ?2S;@aTn28@B?"`44oHXPS'TGX%EE'0,n5M*,E)j--n24ZkLFA'OS'[H4=&;t[QdD'2 %Qr,ge(#X&D,.5HAP&*Vj]U[u(L,P_XFr_scj6TN#RfgqVbh!`1-VWjeV^5+61l[]W=P]%)nLjP64J!_s_RPVT>TtXk&L1QtOgC*P %aB_3dF%"ho7,g(uo+H%RMHK0gZM1VbGEDmNOVEh<0%NQ:9>mAM;N2X2?2P>7kr-u?WBYQgcrO,%@`K\`a/Af@UO87r(F7FOLI_Xq %dLh=X7O%LrUnP[4#9l;UOkq7Dp.1thM0,4\Dim^H-(+gs7P]rW=sBadj,>Z"&TX#a72Q(Agl4!r4`HA43`Lm,3C8.NY`F`$cGG^3 %r#'/R0]Bm]T"$rRHfFh=o)hn`$#0>Rl2Q?_@DI.YW&]Ub_CUZhFj!T"R#TA7_?,AOQ9d8[3"QcE6K6'_+@\4"PJX#?*;5MMI)j-I %37O@O)71CL?:0fg3S(l/ONh3"W3(kT^s1nl%NgGG-g$g)2WHgG+CK9;i!C?VAt`YC0%bR/K`Ni^mhtY$'=-R#04BL$l"(&Hgar'" %3'Wtn:W-IMPdV]Q4j)Op=XM0OT_&E`H]'X=8n!t%4j%5q`i_BHSg(KfJ[(kep,"8[\477^-PY)RX?g+/'q%e928D,e[o/<")D.nP %0sD@h9W+H&;^5$nV.P9^dOO3h8Z`S+4!n#qfWh)NTBMQ%="'A2G_9Ti`ohqi$*TJ+$+5J)$,IAVh4Im0R? %b_f?n3grtojR..IVbG6=8]uAKK`*'Wp&Ztr@9s!>8%[W]nXm?V`9L1`S*l2!mT2IJ'O,Pg7D2A/Y79A?o?@j*T:=K7J^9AgNBKWD %&$buk9QastL[?Sa"@7^3WJ681#8b0-8i24%H(iPHgGSc!PQ.^$+gDTuaB/ol+,ETrBs0UFTIBW`dk*Nt+f[@#.,CGf1u9'gL;Kbs=[ %k;26Y?gaN3R+qISGHHHI[Mi+!6++@u9'NFrVL,;a``d2iCpIL;P_@.9'([ORZ[;\i[-+94rku2,V0i3[[-+94rku0]0T,*imYtL:sYB %s*F:jr9:55^FrToYkA_UXMIS'8O:`"fk([k3!-$R/q9YHWn*O3<51%1-DMJFrTT*A8.G7a?DXPJ0Yb0ubMfN!2r@-u-2ee;8]j]e %Xgb72>aWD=83\?j=l?[*CKE>7+.;/\d>@(Iq/3XsN*S3o/BidTa[Vb8cr:,&!pM*&NfnmV>f?1Gb>As\l"]pTR7qTH?DEM*cfF*Y %L.Je],D$ia9SR)d,*NK3U9QPTa$0J?`k6B`>0CA[c+i\@q!U([`HT+dU(8;$YYCMRN9KG:E+<3A4C/]C->N>VLqM$\`7Fe55'8Xk %%1;!mn.[)DqW%NuDa&UEGe!Y:I3c2Z2RYROYpDk=19_B79.$`cHmqOZ@NbMuee,!\:hgAAA$C8H7&)@`&#B>)-kTp+;G2je5jG6t %'FV$HB_B4l)-YE9e.#;8[*#)mNgb+W0b.e3S^BnF9V]ibN-^XdPg4"n@aXJcFR'66PFCX>S3&l993;nI^p@. %C7phQ>6u#R#rV3)BkX>\`d4%Na\$]W<5b"6eg873aqn4u-eUCH4!RlHajqm6`kWOO-f,r^X$b&TfcKV11:L$`kTQpo@kpJKZqlSa %C"c,K]U9J%@>Dj:1/A!Z4RF(DT>J&PkO,KTT07mTT=QDPdB6S7GA3?9P]b^*$G(#Se?3,Yn_QmC=PK26:Qb9#lT=G2J5^s.7"Ke+ %"oB_Up^dVBNrjfkJq&_]4^@iq92l17ULJ2"%u'e_O,_@\Eu8Df_d.b=M=8!7mlSM_L>0+oSQK?6VV!=644g)XZ(neS[gmV!oC2@R %_d2"Zr-[gLf/=.(h`BP0mdiQi3o!m0Yhhl'2Ght6pZ1,^g4".IXAdm.j^soRRq4DIV)@Y+S^MDDh;`ZaZ-?!2?Z1$2q9)etZ[`WJ %+;lY8f2G:_ODY!e,jS\/*%R*4)`Z'a#(,`KD7+b6>@0MeapgQ+LEr0l=0s5P6Uiq-Lb,@56;"Z:(bIbu>%]\$hcb9U_DHs^Km2.- %r+89[-=qo0]p,Erp@6;^?/jIilf@-N20I$).sl5Hh_"BPapqWGjBDY1f8>5SWl9p%/Fp%UJ`2]]_:9c/][Z+& %,HkZl>VO>Y=b(QHK[j%kF[@#qtkK)G0LeO<@W:WPPWXBr'N5s=P+1NLnM\`np= %,d//5gig<6EdN`Bp!!:$&c$6N%@L*ji-_eP/_dJ]5"&%jP(?aCMB'k;UfeCh0[/N1$UbbeSW\k5/rF2`Z8#!BffdR]15j5\LRR=8 %QBWpNQ*ed+;C#k?R;#I)96)g]c7D%GH=lu@-)eo3,Xk:bFpZb'b<0:$85kYK=e]Mr.T/.IeOu5sWsI<.?B]n6)mEJbAq(0XW/uG[ %aJ>H(;E_0[Fg&(/Xu36I2)a6t7b,2lL:c$8]%>SRf,@Z`)B8+`IXC/16j59c,k.C!i8r^`SG@DrLlE7^E:KX]ioboODtd.Q]V3)bq*=6I#V^7 %k)%o0/2K.Zls=1iWHhtI)Tth!'E9_-haV7q#T*6BXiRQG:0AoNjm$1/`)_NiFft/?)JV4@^AR8rK#1ma&Po0Vf2;-3c:=Gq7B4%` %Y#t)VF_TH0HX=-6j1Eh1A*PP!VNt00SqE5HFm??SPIfnIb;qp(mSI3N'=Hp@[I#>q>GYC^]jC$Ae%Nu7W]'6d0CuWM;cOVVs\\:3:c@6H^u"6]R&jL(;j!)jHkT;=\YrDW@*t][(;TY(KjJ5HWlg! %j-j$C3f+*IVU[gon\CGXmUMFZ;*F#\rTGsN9mL&f`Y#7pa(eoCmAk$6D:R7o,?J&OFdl%,a*_ndI_(9?H2FU1(Gauc`VHR7,qi)b %T!E$I?@09C$TEn9K86Ve0Rh_B?=/En5Li!sPs+?sX(_fc=p9;RRB2;kuP%2ul=f4^%l<_Xp/a?@1>1RCbYI`>k:5aGK %]pr#FXOCXKmV(R+'8Fo$JJUHP\rsm5G$\A"(]2a%O!aX5<`N+h`2^^7p1dGd4bdaj(Jab*3Vf=$\t-NND@X662&$:,C-a-hbPqL?YeNT %Y\86ARBgmcW5`t[Y7:YFlKbm(2>7[Q%r%6ph2uR9DbpqSFTV^K76%JPIKF?=bfFCq%#\b^&R?fg]K$qG9VP&H1pQ4K4m66U<'+!o+8S>dbDbMehYLm5B8 %>Yhh05Jt/3LgBd5j6^d$$h'@hlAC753k`lRdRJ(bNTs2h[rK;!hIL(p5/OJD+65LT+%-u"?S0kUOaDlUrX,&GL"JJ\p8;%GY-_Is %F[P8:bCtpVZghetLp]966"06I2Ne^jPLDurJmuoSE3GHJ[K;.iZ?b06rY%1c?Zs,cT8IGM^S2mAK(`Nu&3d;RlPdXl^3`RA3+`-6 %rMk3Vqcf*2e0e/f"um6dZYI?TC21**R9._LP`QMD-n&DX1bV'?T6FHV3H5D %9Mpg+aONp#gfPAUE5l^k.?l;>9%;@\k_h-N^jm2$$,D^Qij,=.c\rJR`nKuGMcCN[tn6d/IQN+"7A&kD`6Tm3:*LWGf-46SJ[,B %qF4pCml2Np-]$\OS5[R'+4@QsbL>HMY%@(E'++OYSg-LX>n:439$K[+@/rs6N]Jn%?u=4U-/ll@./%_gANB-Y^kU";g].s.Q>cs& %^=oDsI7m^c*&TW-2guZE.NeNk7HX*?VthZ7T;lbCT[E?"a8%(+>$if'Z0m8SpmXg7iSa'YS)9B,a)/@Al:.OM.\-;9CG,_:I6+K4 %jeAZO;?-RnrL8T>mg_R$;,j?kU:aFQ@lgW\Xinb4_]!hn\'#9L)R6ofQ-nW[hG]=OOdQfhUZZe.MBlL9jWn(Y(=4Rm`l %L\VT.XBmX?A*lt]_G#rMj_!;j^rW*lYE6UaS!LY;BDpcur/Q[c[>.!O>T' %ETT=-a<8*IGnX/+cKRC[F\J,A)78rL+k>DsM6mXtksV@P3SnFCQR$=jkoSN@X>Va#3o6TrDWIE'?cR91\OLAGKTfqaPdk%3P/:X] %+(lqGm%0:&:g>DGtZ,dLj]/R8`7JPVU9'-%SW[ %cmf2lB.NG %9u8MY.NeOEh1TLlq->nZ1sUr_q_t3iViI:W2^X/s$ %rUQA*@R$Tn:<2]=sr:+I"s5_$QkMbo30*&;5kc^QT>j/*pM.5 %Zk$)U/1MZP$P1q5/%5/*2%HiriVhL(Hen6GDE>FRO*D?,#;J)b\jk('[E+t3r+?ZBRDaS%nXiDNB+k64`.'-(T1Srn'*"B1e0Z.\\=h-#3R6;]Mm0Q'!lpeu/b,Xr'2JZc!s2gjhce*d8?I*48bf-1(qY,#F^nQd+.sOQp6YU %UP2>obc)o\JGAf"H1hPg=`4u:^&ruU&d,&\HsD[pHGuMk@=ulfYHka2Hgp.i%2Mf=g[F>$8$L-$ljVc*B"=^P7a>`nE=d`!du\TR!,g,tS8HFf7%X),Ag[Ys[(mBZ=6Fnc\q\NlYJGaI`aHX(]P@[A=& %M<'C8d'#QaYa#`sSR=q+\[=2![F86cnkrJeVRhGH6Qr,oQ2r>:TIfFLi,UW_2]&o;lHK\.G`RDpE@PG0Y4)qos+ASF:-!K %'cshX!X@]?o^HC^q;dFE02`ruF%aB3U:Shk,V_5HG(W]g3/:1#rCEXppk7T)RKi[^l?"P28>AkG?sT&"0N %GiOI5MSoO_6dgr^0:J)2[&,_I1$M&?,tk77-^kSO*)('8X4O_cWn$E=]qN[s3glNB7dq %pe6#CNqXE1Y5s94BUAUV6gNd_Ypa60$u`f_hM52n#D_K%3f:YDGls,GT&\$7\46SQbBhsD\F=[\*@pu!hR5E6M:+oN^^.THkW*7) %iOFGkTS)GO9eJ,jPBpYj'bSnGcg']\d,-n`D9qINN,7/5g*s%\0^E(TAS59G*[mp6k73;g]', %J4Ic+f>j/ah,G>AYI=/-XA95oH%IumOub5JVkOiN%DH'67E]W,>(-;%GDD."O?WG^&dKelT\E<++'7[l]cpD`G-c$jGoBRV?8Y/J %TS*JTiNOFW3SUTm]j3/#F&6Zf@q*M=44AKhnSE'2PVt"WnScstF0)nJA\)K7>,lV$_9$l)fSNdTUtoc]_;YECs21>Dl.tP"Lqfko'0s0Er:4agPX"^kD*i>0ptH[kj'u]5B?h.@'#-;o5Ofh3^lVpo!1kh`)@RFiIY_VsPm^I%_U?st+bJY"GQOILZe9:pqG,lsbK9ZWkrP7B %#i:6uMOfR9)j)o=U^`0n.?QP9o&`?oTYOf3c0SB2>Z7c3;C76b9c_bV'9s4u[5(%9XAA'Lg!&tckAtC7DQ;,AFbS^Gb<`Cu>-G?6 %-O0o>fB!bA>sO23??>!-e=Z.dpK^&_l!AGg"k9142>:BArTRX/B$9$39s?[8,SZ.7on*-pjUS<@r`RNj;g*Ym=?+!TFP`%'Ot %$?r[t>Q>Xq]@T+sJ;hA$9<>u^UN#r?X)Q61gpKlh7FjRF$W\_I,s&5P0M#QEA)F0;MI<'1[YNbZi]$<7p.D<-W;d`lIn&E5&jMDD %:I4\K,`W%Xr6:#k?[mJ#rmTWr5Q'?p.GWK]FMIV`^)?1)YMXa(FT:lZ7/Graq_s;fIJtC!HM[@i$objASbao:R9f1@B0NMSHMamq %`S5m$s8L>Hpm8m?q"a8ThPHnNPBE*Y7$ZMa.844APsuK)fF'D^*`8$#$YD5\%T==[*r1mVoo@e9Gm#5&,`J)Os%]/+p.P1;E@. %$kX#uB_WVl0[_[W;DuNt#dLF/\;>!Qoe=6rL)CJ/Lar=Qn!V1b#nBXreschTE:VfPF>H?*:%oRSW@U@S%^VHZr-1$bLN/:u %^.8%Z>m0%E*2KbE?O]b[bN.%-i78l/a.h-'iE+CAPY#o^@t.CukdZA*V*hs;$8eNo7KW=B>%G8<6F/`$4jf< %r;u_U4YMEe$gc,+]EJ%\3#3Tf6Sfp:a!QhsBNV!C"-kIL=6-SQ15W(@fsOAW,2\j%Rk+Po*6WZLSff.YiqmB"8$KhZ70tTm+D@Hb %T(+trSkQ=VJ;c0%giMER#3+ljrZ?5"UI]r#XVXs-W&rZN8CVH"-Q\\XL@ioC%9'uB'9gRHD`T";Z&Lat#AN4d`PiHk)u*ZI]Hr=; %`@usB@)Ap`6E)siKEjJXAK>3P@#lK\).LWP/4Hk"IeTh`F`rDOcXZFmfNimu+AKd\7D1>oj>F3oCXgjIm'6Ab;?F-cn-a1IZ$LrP %'O_WO2HR>WgG&=*=jE-7;pc4X9ft=g+Zc:g)]POi1DW^;0l/%3_V?IQ,>bMTD96<0liMeMYuq9#Ht=QsJ$ANbcL]+P%rPC+Ffai' %)Q3g-RtV_4B=VE0_/TIHnBlelM1ZOjS7-qg?bgkWe.gYE%amfdCl!MqU.EIV/:4D[V3j4uWJu1)!+&*9NPpZiQQFZ';n).uG(uU( %A&6c/&g\d-N+S+g$,a%WXT@GMGLY5qeH[1\2D&J_>pAsXr>=;]/#b9+9Z8^%4fT:eNWK-?)D+cZ,`)Om,bhmUOr6UG/YIeconS84 %ATaf2rCVl)!3IhTB:8Ss-F=kiI.jX*1agp"5m'^F=K:mp %GSle_E-)GITG"%5)=cFUU0rPH#i9QQm>*?EnIkrN]KiYBV%%lf,igD>%3qVu:gEL,^c$^]-`7$/),<1me(I.7]V*RYjKuQYAFgp4 %L9`Al25rAA$d2#f%KICTo0Bfk"5V!HPt+kNFXC-;eqNR@BG'n2Z6E4VoKfV-o^^V8N`unTa]"=7/Ha#Jdknr?3:llQ9oh]\jC[Tf %7uqoSo9F^\e%(F6_EsMfY_"N3[b2k;-$"VDBTRKAU!PX3nub4h\^r)PrFTid3\rbb3R@fe=;Oftjq4hEF:k7OjRZdoC^tkuWkpM' %4@BG$Bj_!.a,(pTU!:"uA&n:.AL6BAN2]6U,FfTF+9YDRE'/u8J]Q8iaB1.Z!g!W1NLAEr,OA&FLk1d2ZQ3rpY%0;R#oQ3TDS5kI %e5\I@nclGRGb5F[G,fg3-@YOq7,)np6VFL\@;o1ZT>Y_UZVA:O/R?clF(3(pH=308A %O?LQT=O];BMgAceJaO,:q?(\%d7qV/6^OaPbPa9KqTB#a.*)WkJYjlRh7,(JSuSn`_X4VP%uK&Y;4hRdGj_ICV$_J\*7QZ3BJ<5> %\'s>'U4`gWZ@kO^Ln-j7OU-7e4q3X3e:"/%N.GdfU'uuMW>Z^JQ.&>?.q;I(ar8o!J=nLPo0hsrJ'f5dr(mR4-Ve:O-QHnK+#@_Iqm,3&4?fU(YZ)S9:cT4"U!>K&g+#C/P]"^ruecnUa4P9Fn0i0XHE[r0j&8A7X`M %OH#HeNE7N-MI],K.S._1>Djc#pWs&pn9hjLM1reE0GH&HX/p)G@\ZR/R[6>`,n %77@A(g"4m;*,TAVW14/>[)D-4:W?lIs3q5@I"[p^5[)t8$'^9QX22ascAe+UdrM'<^h)H[dJRh6QYCE-$dlc^UNFK=n8b#T@K6i)"BI*2jA+#_KK`(Z*"/aPB=?#01OfnKf9ak6g-cG1?k?&'bj %PVFR(HW(=>$IlG]gVE6u`k=kD=9Cen4rp*W-GRjN.C$3kB=0Ja/^'Zlgt=Qm]3/XIEIj)Fge8YC*m1$lY2'E"IZZeO;=+D=G<@;$ %Ok05LmGG2[fRDJ%2TEU=MNW`8\;..i)&dq]U/Fr-3O0rGOuP5VWl6tMF0/P_K1a]@i[rf;EK=6@Kt[1Dmq$9=d29Xa6aeAY[W2@U %6!Fr')@VMr++TI!U3W'\1QB0\8n9=[?82-Y6aKJ4Yf$al[(SAmC5k?@q)AH4-j/[aeSL6oeY'nMo*>NfbQnRTA_GfJ$d;l(1=:uX %Tj,<=G_cj@%7GZa&/,+I"K?Bs-TB^H:hC5"F'HN*_R.iBgMo;n&V5:'*>%"]; %AdoI*JC+ALSd&m_95?sg=;8':+`=APW^Km?GII9^_0dbn_jV9%J=+ZOPVej(g/tBndnjdW?rC'pPU3].r5Lq=CICZ[Kq4UNGOU12JHO/LNQOpgnsm_ %9X/.^QMkW["LCaVnN\6HX@G0SC40V1IRP@4!*7^MM2ea#5*Ue9mD;rTOZ%ONB%,CJr,/WDm]Q"2qtD$'h^qXRVL*jd(9u^A`oBJA %hk`t,->*>jJ6N&)c(VoK&6?QPamK2=0QYpWW$uHRe[AVqZfp"dDb=PD)mH>I,chBmk#g?iA\+_IFC_F;47]110"VA>ZMQFKjs^YG %?L#,8tJu56gd]dO*dM=@iLU=r;8;knX %4or)!@2F_?h?.R?%RD)k""U\"M*$Zl"%sU@32[7%822H*/1M-@"hcp:74DGh!["uraLu1)WJok6U^`/8On\'!'^:OUK70"E'H)pS %ig(1_F1hQASEh&)R\MQ9`@"K4c9?e70A6CVF!l-\R9Qr\Vm.Y^s2o*c.0CeO3),:dJ"8'1Wb9osM7N1u!YNF_q*qlTPY#\XZlu\] %r#2\X92B)t-Tt1kC9T_%:YMBnWW&>h:*9cN.1.Un3!prg`(VYU\/fHPJoVKWVZL(W\;J[V>RoKpYkJL7Ucd;I8BVVP&dW=;Ob9Hr:'`ENHo0hapfO>)M#,V.9h,&*%X#1j;11l,^%A?,s7'fh[_0E]@ZLm)D#Xa9H"P@]YH>#&6Ug6u'XEFY\eR\3"7?r2h* %'If4W,^ruBOBU:@M76CZ2$>08<*UUM&BQ4bTN.p)4_m>45-9#8=X\eP'kiS3'p>RJm>.o]V^hGia/(keJte_ %i!:gZH6dAWR(0!>Lg(35DFrQD\>9Xd[&g099o\s-(h+)UJRghp6FKf'C@J4_G$mCa:B7[#Ci]p+8M$dmk!kbK=cQM`Gunioa9K-g'Yu/r:n.`!6/fY3ZsinQW,S>+6jXT]0nki;Ot(j\qZmJ_\rlK;*`,;E5P-`mIhqPb:kmi^&p`!5lBFVr %;F*#m/kj)O]dLXdUQ:l&7jbYPf3CHeBmhTBXJAF0J%3-rU1,1M=M1]kr]W0GR.R`W-_A(DX^4%,bg;]KP8=Cf`\/C)*`b7)a2GZ(OF] %5)I:pqZp5_`dh94'@bkSq@W4K;(mM!K@V75HS&Za@&PF$W7ae$q#D?Kn!12/`A`?Rq0Z"CDGF%P<$5L#j3Zpk:N98"5o#emBo_IE %'cDY0SUi7G#A$#5>0g@q98I[$;DVprVDpRB>A=eLA[3$eDY!(L0KfTXoW3>7L_r5/IANk\;3=sO#;77A&.b+$ZRF=%kZ"&J._\i$ %VRC_(+LFCO`RsQ<0\akZF#QIjK5:dq[3AO"Y#=e\(4>fqR4YC&#cX0GTOJ[kT@h,>=hHTABL#)9[De471P/7QZ)"f>XauKI_D]fQ %7J%=!W0mnW%>&4?H_u>u&>h1-VR:[1DVVqHg*5lS'iOgf#iHEs_\cWm_,R!Z?n5k6grliL*]]&8Hj09HZLe+Xbak-D(#Qs$(+X:QCWuT/8%O=-tb1L@K_nY$kgE&6s2o^#h)E)(;dFV]L?na %)gG4g:,Sie^b'6R;0\(n.FG1oKNB'TLNlr5?*1dT;.Rp"%cMmdN'mAIMW8B&\t4st^1rb_@@:Q5U&c@`h(%F,b"tNY"bejK=M-Ph %OEm7IB-^f\>o/[8,gIHB_$9FZYG?g]G7c8Ii@Z<$,i#5-g8T6clHPOD#"qL)0`!(Ob9GcI-S''\E$+^U202XgLp"t&_ND.]"CHGu4R<5ld6kRU[d'ZD@Jct$.LWMKY2&UP7#/'->KZQ$YthOIR> %U4;hARcCd1W8^nGaOEZZhejFKSUXK[:jGYPZ(bRH:2J*kC5o9Zn[1s,24Y[M?qF7\-?6Cb>*X>9D=afcX&XPN@ZD2[=-V+*T05^( %FY,bg+&nYQq?QN8nfbR6Ms4#aqSPc)lm/Vme%CR9Ii)lSXPL8"U5JIC*"We!kmmEU3$>)0J!.K@#mlg/:C.n34]>d#.l[qjCFWP6 %?V3Z6jBgS5;Ai[MfEuCVP4(r"MQ2m594d_I,ppub4o4]\qU#+'gehu01`-1$>n,'#r@Cpa=hI"9JO8pAj-OK:)\^[eI %4PLJj+ikeB&(3HoNm\Q[4ZSf0\5 %oa%HN:(R&*FW=b@\9C&n>6D>Dg)'28S=1?XFnPB1(1ULoej.rHV0#".r>u`98sp6`\GrK(YpN@g+r;_?+*0^jmI)T`JqRusU**kb %/N:&ALu/gC:MbRH^=!T>+AMK%$!9h#:dJrmO/4n=O%E_adqZr::h"lA6;#I_bbb#qB53aR$mBeF]:GF,nJj/-`MdN0paNF9p>qn0h[V:I+fpQR+IY*&Z+sg?$^6O/\h[a`S%?!n %]J>m6%-r`o8UjNQ\IGJqeXB/TXMug)8IjL+Y*,a^q1K"P,&4S,m)U3gPi)J(Xgq9SES@'*]fH*HJPAi9S %q]q\Jg[OuoDQ.-s.PlmgP;I,*[O7rMc/J$RQBlD1e?V.D&1_+rAJ!$6/&tik[)$em95\`dPgU2tPZZ"'.TkEA-46''M1R$^81i,0 %NHV9EB%sEDg$4og9r6DkThS7uYp.*nR#7S@VJCGIf&/.L+4S/.GckW"%Hc,K:^-TnW-g%(lU7#M$BRWSaseU8&EsN*Z^>+CTI^1\ %c]t%s45]^-lu4O9)Bddm0!]Au%n314Nih)L)c!ij9petJ"*]'I`dnTr'Y2["H`LnXFsP51m2f*9i`ERVgY]GL7HJtq3G<5T6Z4)SF/-TiB2omWmIZC_YX09E`WJqT@G@[YXa+T&\SAR!Deg9" %nNP>rPKN7+9sq743Ms7.aiq>q;hj"*`Wjn[eQ'X*eKT8dgZW8+W-7O'=!T\/koLj$PhXI,S#MERc=Yd'FmP8Ldq5.LIT\IR3&ocP %R+ZVuZ#=Bg=(Vji)qiDW(@MHN&R!&_6&";LP,27Fpp(@>fC):Bg_U;P)H'oY:6DNrK@(LqS;+[qc;9(Jmq\k1R3*&PdC;.E$1]Q] %[S.1u9;J9[GaAEHem+M!4^L\m<<@#B9q_C:m#?c#t6EGjEY8'30T>!a0l/Afn@-a55u'WRqA3WDm:Ep9fqdfU&\XsM'WlL2."\qL?W;5'_Wekm+8eP,D!3P %>q9O9E>h*A_`;U5)_Fa!@&(]l/WCkU>Xae/5+Wga>#(&*ukCZ!i)h:PptGSUD@" %bde5;U#@+O;9l%2og;gFEM3IhfIr[YKLlHt]ipna^+B.RQcV7`*7(e'>(HT,V(:)gMQ+JNC+2N2>WVFap>eoV#0OsR)2@'P(e9/1 %l,s/`0Kup*\J>3\"K=k"7pA9sf2/"6)N(N']p,j^6VRdq=5ACD$%4loMZG#%`RY69=cdo\P`-VrtAr647M92&SKW#@T*N %n^NMs-8:H1LLVn)*:G29$Vk*@f1[JILtdGW6b"iQ48OSXj+AtJ?J/Yo=bgQAQMo;X>O%@kYDIJp*4pc=EhSXn@qo %q1'Z$o:B*Yn9N=bVWcES5)NJ[P38$tKct_*2-?&0M?7@3_"6OL,3mWrF@%*6KO)aOq5-sneqR';)G4!Z@q?&^#Im?I2%0@F>A]qR %.n1ZB$h814bpGC[3!@ %5O*^+`e#Qs$gULR1@+QA+_gh#7A9cT4V(G&.*N61Male?d#1$P-cP0Pd;4[6J;Xm0g)FE>FZ1.oJOtZ^dXl2EK8lH-eKY9mlF%na=d4NGY,/5^?Eh:End5)9.JP].,dD#!);J-11nRj %8K8i8j=s/bNuZ*dgiF,f>7MScA(AYi1oY+;C^f-GI4cJXh&"D6nEF7`"B1_YN&DFjQOWiCaH!/n%bL99ESegr=t?FjG3Y`fS4.sg %mZFL,UO15/A9FU5gH54W-;td>M%3\QI1ptlW%P%o-Eu)X4"naT2N.c^=5NB!=8SY6YLN!:DTmNc*u9?03$u@I,8mon*[?FQ=I9DR %XjN?aetlg))G]&,=5*""lSrj!@_Z'dJR,AmrLQN_I0\c:=n,^S5jKH!+&tNE %A(bqd[C#dlnNKSS.o0oJA)rf<>:g=g1KhnR/Yu/-2![,;B4@cABf-Ku$JS.cj`mPWSLd9tP'g6AC1ZYl=k?Pk8bZel.4HmN4KbDHZ>uAQY7sg<3i4rY %L`.eK9c#]J+,Z=(0BY^I.H22*;c0pejV/eGTUl\a@A)A3Gta^7^3C1"/GnaIXghein3a0T?nhA]UhTCYM/"C9<,uM6'pt)#eYGa( %E&K@>cS0!I"07*QKm.<-N9d0[9l.?nI]mEO=OI:)_u5aUAF>+FEK;uN8rlCCOWKDbd^4p8qmNn^2f.R+NaCDl>EiZtbu/&(@,p$m %iDOptb/YnVLkM5+D^pqTN?6`*;dc'5`!3NU$u4AOArUhYU6d8tSkntk`G!HcBW[KLHJ+b/@^[jH1_>BP(_Y,SiPJ(t9ODs\XJ4uIMpgmd^IC0B3 %Bg0=89er8jSJdA\P3GYO^6$,]3fn/<8Dodmd6N.5Ad/@QUl<1.U]o/Soikt'-Tr%mQ(D/QcARmp7uTj2'UUObR(@K:&LtU&R\0eC %53Qh*JN_FL\h@PMU^YU:*G#CWL;gJ^W!oBbi1(\37cFXSk>Q4@=H.qK7lTrtiOY_:(;3[(ASH%;/iE#3[,%I+%e#K&96c5B6imlU %fHa(G+fhI[TOfi#A'BC(QV@'>QQuA?L0+k!]VEj`e&c>E*'b)q5HFua8?8_&qCN[P+_;9O+`0'`XMRA`VjjV9k[%.SMdZ5u@$6oD %<>9RRs"L[,*0U:kJc&]'97bXo;diQ)V4FF6oI:tEA[KFPY@DVL%%J'@`L/=L2S?^pS7l47P^?MAH\)Q[$),9U8DG@g-m4BdBG-7= %W^c3\j>+87aABi+6U4Mn:=_&k_Rb=S=5&d?5Vt`;=e0,XD*4[?]f>>`"?$DsfG#6T9u-rj8K1C8ZolG#W&>aH'5(pb1%@>c6afc$ %>n1RArO1a$N8;@KJmSo*L7_Rse)X)dDcsg*JFT6)arB?7o\f]_DhqmaY'J51ik6ku;,RG`:luhcW[3Z.4m,9J`@'c5::nW+'J>Tf %Je6,ia!,Yjg5D`Q#fmemB,RT!#g=)L.G+J]T8/b"POK\"Eil"eUn1Sb4>[W1,bF!X0\8H&:cJU?J00NQd4$GmN+7mE9#J,';Cpdh %\1\l%;$!p'F6bukhO*.X7mmq1OOYD/+F-qNO*nH?(:cW#nG/#kgOTZR_jB*q0V6qREIRJ<%_j=1UZ51H9MR5,+N5j!<2M_Q+N6@7`'7=9qqM[f&,%XrBMNA\GYOLe$QQ6k%>KAG!)n)Q5Ns0TT;-X08b:N9$s %g`g3Q?\Dm?Up)h4YNMGDk_HA22[(N6Ff3:`Tl0Dk/g);V]SZ)L85%sS@Y?6+DVDc?]eF<\MrpC^VR,F-#/1eo%_em@Z@f>,L4jr2 %HBgh67/mTGeST0&DQ-GhTbO8e?u9Q;1&IA?HpUUPKf)G1MJEii+iPC6dS00I_RWPEL2a%d.ZnYK6l!q'BYFW&$MKGcg'^KYY:d]Z;?s6GCbQjHQ7Bo);DG4)4;RWt %@6h(PbKu'_&li3`,M(J'1/lQ;52"p.VW%T*2):)'dp!V9niA.1n"QSk>s3\po4gt&GLZ''A*6!ah?0:Z3mTe %bk*Ics+,2RMq`DOM2NZX-?)FuM3J=:d(NkEic$X*%$bK]faLmT\RTZI)'2-'%MH1XNb*1SWXb^694FnGLT6>F6rL:@.RuqPAOI.P %Pd':@4j:F\#E#_rrOS:,8HO)t2d,H[],'/7i.nU3p5AbWPn62B;j %Q\DDmH#$a1k-s.dDf)058@>*coT0BB17l8=Mc`YHd`pt:8<;a%!]Vl-H;(4QW*mit0N8pm/(8[b!+))8.m&'0U+F\pU21DoLQ;R5 %+tqn"$7lAE1>XooN%HeJF?*N&3aiV@_bm-`hc8f%ZauFcX2(V\8G#p?dhT;#E5kRab]qAM2=k\tUP1fM6A!nRk:(&5k:H6W3kQeQ %/IdKQS]WZ+Qo%O8`c=nD(7Kd.F#LI?`_f>tKNJPe/VR;)=\73(W"#nFQu\+'A,HiYqk+"[_GCFp8_Z^j*SUXmD7O( %m47L?fa4qtfGF!qu_k`-tO4m4X]gPgaeKFh]\To#$tbYo7"5Smm@GA)t*'$qd_K*6RXcHpZ3@frFgHX\'2I5(=fl&67Z %-=mh:-@2TFCYD]uFGSXS.VC>cU4`Z+/XU'6gK942>[Q3=:ApefojVn6H5MQ_2R!_9OM,YRFr9_XO3%@'.-OD%m_;qlNFjk_GQT;jZuFl(-t5'#,T$'#,U& %[#'5I74ekUdCcig>N:(Z7)'b`AsVj6j,LH$=rX7l;d(HS8DHOR%cIt".NoeK9&%fmc8&PPfI'_8(DJuk?>`)qYa[Wl]+O=QK6V2U_--YYE"VNUPMCa`eb7*035Xkf@&K?ML%%:?S\ %^D_F;$8&;pMX7Y/G$qGgqbfYBfI?o0M_`'9Eg3=?A]<+,cYN&>b;q/ng7WF(jAJH!MC-pnUr@om9,a2)(Y70+@1,"%f0.'Ab(.>c %[)V;]'=:GRA%K)mO.%]A&t4G#01!bWjC(^e2s&\^M:OnFs;>U`hVYGUF/ai-!f+k2/"p'5>B??fa?e,/.\M^3;HT>30MAG5)n(@O[M1$oN>W#a!\-:7afF?4c %[q;WL*4s+p25Yk`^Z"[??QT4>?fHR-j6pqHreQ11`jXlWe\]dOil7?CbuJ\#,*78RgcJ?:>HbqEbbg)5VJML_g[l%3MLcKGcnO9W.tUVkAj>711alKuUb_Z?iE(T`\&XS]RNn"YV-Q %7b88r.M>i4C,8_;TQD@X8tfGH^E[SIUORY,*)96*-1Z!5I\WNq-+1a?^i863K)"iG9FCAqM#YVBT1&diXCX\&C5X(I,,``^9M[iZ %'!t(n_9A'T(u? %8fXrC(Yd+u(o[LrdYJ_(m667?],XBqj/:,W@PKLu8hr&AaJWU.Gp"9Fp&ak/1FD0b0oJ"$,E%o#WPLb[ZSPF)$+A %Q_;6Z;FJO$9h8:RPE)9!"o#7ri`Koo,-=KOpic#'`gFo_M6cEOg3A#>V9)t:YjUcdEY!#@hPFlSI6OJ-^imPW#[8VGhK7(l %e'HrrF@7Xf/,/U@4!&0qMrbe@^c@o=ChU\--j+mL"5ZEc6+dB,=\g]*<"ANH %W[3YH9?:.SOKW4-U9kH#:f>/+4@J?Yg_-"gE'9A%+;R'W@c>0 %:$MH8#sE85kKrA$c4aeK>ph\7#`\9Cq?T,Y!_01O!Y@ij,@&88,ToblKJkFc"?qPYSD!Cf;?4Req;-l1;St7$-;a3/Kn/*/ %IQM?^K&86aJV+'o=TJT49ddIo&FfX_a;[A>r@9/!6QecT!(-b\:k8\,&pF-T$46JPD3)[)0bEJu!'-"n7L554*57@"#X(0=9rq._ %2_t-S2*^%Rkr"LW+[Mro:dkV55T"?G:#HsWl#EA^0t\8V01$)5s73*uh&2Z)PjMa3l6C$tlFFa)1[5>@_K\<=PK+9.r=UI/',86? %H&IO%`ON^e!!%>;hU^(kD_<"HtKS,C]^]8Km)RbDQ?9i?i'8F;a?LMS7+^j4s,X)QC^u]$A)RH(l)"@4A %OMGh4Fr"2J$Q'(?RY+G(BuPo3a\YOTO/%`b%;aMtRJE9(Y9P[i9kM32btH!%c+6%a$'gBf7MZCkEf`ckjr,7.+qRTkpmVlhRGrfR %@X8URN(tgAff6eSH.#S?=*#I3q&cCO#kEmb#NQ804i8?,:mW[^e_%h6)\ %*'=]9_q6&U*a.!#R@Z>O92V#s`jlX\1MBj<\8l\!M!?E9!gh.e*MY!CrZTM]X\u=eVWU\0H@-p9E1Hj5PfYoHBg>3@l-Mn=dmr[S %K\th-)eM8`$bFI&$"01iBhDbml(qWdb&q!8?=@gRX+OXIfbc@4n:3oWjIDZuOuZ8Y9'CC3GsCiJ1Bbq91Tf["lAK9E;pg=V$i0l` %FQms7>63%?DK@Sk%0/;2@N!Wo@[VUm`@Ytmalc`bp9[F,#H^':76ZSZd7;%MX'NXSITuM-k+,3+5@r!H!AT#03k)j(jedtHPmDT7trlW]N#@,Z6\Qr.h0 %W=D9?[DJ%'4\k!PsgB2Y`4Gk4C8Ls)D_nm>s%)%3*66Q%=Hl"i.a9'Vc?oEb3 %<+5Pn$Sj@5&f`tcf;Ttr)sO<:0+TAZi3>l^"Guc254=g.3hd.(^=c+"_lV39B[0e"AdHJ5Q=i$r`lY-XF46R'Vn@CH<=uA(WJ,m* %@c]1L485eCN#,;*6'm*n!?a\DF)22i3$pp2RJt8CF+?.C3N"nMAO0mm2IO*C3*oFp#Gr27:[&6\3Oh=H?NDOi3Dg;7e_q[L2AdY& %4Ue`oRmuUf19TY^ET]6'hp2TS")Lbm"B1X&ir[[c$-S_Xncd/I4>t %*AYhpnSmiMJ:`+sO@ndB5]]]t)_b6j_LP/d0Wan>Smmu]a#?51Ie3)rSc!Pbb8(=e/f7;I`3I8"_hA%@bM58(#*g+C2GjJ>Q[GV: %kVZ=MhJEVKUY6"(4*9L%^oRkg$F'YGMY\:diHkT!/FdCtKHkQuMJsd&H-h3CbaJk!SrYu=Go-&*Q+\AH:H1L8DY^dh^B%(D0pnQk %qeo%iG[1QKk&_V7T18Q*^'C95L^FA\E)2LgJ2%/q=J2+-NtsWM0*RX#GJV,$:("`[?@_JB""Xic>VDg10t#MpP,3r52H`Lk6D)'m %%]0]ZFY[oZ#TtAaCPhGO.?7I=R+N+gK22>`DU\a"qm`q#^5I#F5>b6q"N:@4;XbP88K'O[Y>C`a:;6:Bpd$"*Q_$K'`0=U$KFbJ?7/mV %#,m;B6E>A[!:V'u`K9M,[,>H[;UNE%7-T/rofN4a":kieAmu#.p_l*?dAiGG%?>>k@DAdS?eb]L1F=?O!5d8%!,1XcW3h/&"GXRC\IaQg7rUp&/6#]dV?L.oj.N/E;A8%EBS]#4Z$ajt6:ZMSRs85*mRPD8$kQUYnX:UhVYg]C*uQK* %"6e581+e(d+QcKZ1]U^+!.FsBKq`Sf68N0OK*-F3E5d>246.cl`gS%b`@1kfa&U,O#h=QW'*F(r,CmX>65`>h)?A2J/U3'l>3oXI %'/?8RKF$BiOG3ptdp*+$BqEh&C^U=*!$8X2`eR$hG/Keg(CrFA&O@N?o86/h37"o3dNTO-J`IDI!CeIoilIKR-Se7o6WGi2(a^0/ %*2"t/Z31m9B-J__]5CMa6a1&_0foBL#"^8jj3FpL[R^S5s-=F";2`S.&O:TfICaXH^#M9@=l7ZM%3mQWUI%(S'Q6X*n;+`sUV2F^ %qZ8sQ]hSu`Gkg4c1@U-*'9-hJ".8FO'nGG#*:P>k*ZraeTEi$I0S3j<4?'BOiZ=I'4$J6(Xgu?foRM]GY*3)=4bIDh_4uh0,#2#- %TA5(4glX^ek@#):;>*/grQ)N'c5Z/n+J;':@.=Qp4rGL%;QL"!,glk,-ff[?Bn8b#7UJ5=;?\4A`^UL_&1*'K-iM,soZ!J=bjZ`Q %&q^I7'nSM"V8<)C3atf.BE/F_A%?1Gi%dgFVOgIml$f;#2GgahA!2?m"tou:JZ"'Cj#RscYo>+AVOJq8T9U1U-%#d]"p',,1u\:\ %*E\kS^f7=r.M+TIZucDil4M:70$>BS`BUdFI+kF^#pB<,$PM/MN!'lSDck)6+SQ/4Cf?2EhXAh9cmOb!9-DO5A.WfQ#4=7 %^eY^K2EhadKD_Gg7m\L3r^\8$tp4Wph5anY6dXg7WA:OXQthh0kl%kXN_mDAqTqJ`B&FR=s5!Fluq:#ISKcD'6ILos&B6J_b\YD[rN %E3,BrO'#)8J\gI>,+o2lSU?%srk\^fJc[kO+Oh.E%&WAo%-""G&o9tJlc68&2(067L1lJBl0[L`T %Np*L>GC0Z:gNqLhB+#MDQ]Dc6!itQ''WVt$0B+o#_19l;0J(GEeH%q6q#_HVVKQPH#6u3!@NN>c1sAe32&Tq/!Cn+O;Yg]=>5&"^ %BG"3?`cBB3,lnE!W,;uZD[dCYj2'KjNp,3ioeI)H,=@!P#mQ)*349JV"%5u\).R+UZbU95c7\mM#>`GS(_jL/"f[,>T)_^GBu:;r %*?lmI:_k28%qnj#Yb%/=O;_f.4PVpj&JhmpoJ=#e"B^7&nDV3V!"6j1gS(Z2KaeVFat[20OBqq)p^Ds]4RTuk3q61!T71[LW+tP^R/!-=&)Uc$/j7qOV\J+nX)e"gH@H"lUQr%4RfQo5%JpD>^:Cr&1":kW!j<>'A6nEiiBGH]c %!*`b(:pJPL=pkN<$:2HBBI=Dq)Uou&^nY'eT64*hJg9&`=J1P/=q*kd/Mm90p9334;aE= %A18kY#1`d7.KGFC_>k'2"=snM!=YV53S57+."K4O4pg-Rm-u8R_a2$n-fFpi]du. %at[24fYtKI88UU&c3Z$;(\e9,Ske7>:&)FM'-&\2k^3A3$l7[7E$p5@.9)=D:D"GR*a`=Ng/EkSY\Q!Jn?d4D.U[Xa^kbO8LG[ra %J5:bl&fd?n"IU7q3,#dQ(lXl:-X)V40jVDiN=W>?0Td_,!s<[;#Z*mL:*9n>gd($0_9mLl^^#Lf(_i3uCaOp2!!P@N#'Ph,\d&1k %#b#2]N+?mX,Nts94=HIkIA1i%aT"Qc:7-@U\N)gYZJn*dP'MV4V"6,n#SQ6LY$JQSd=#^+m6U?3=+LL[9Rt%e_jXZ\rJ6P#moqma %PYN^E:!IUE`rMJ/]>Oe"@/C-bK7T6e(RY9gd#oP,Wa,uu!n2H=7CXXB9M`9]E"4,f3\r1'rIuL*]^(kT%Vf+e&$d,%[Hl;\Z&LgT %)nj %N^T='=A4)PhDu;uaq6(!OKRtAdIOXmmGX'k60n%8@+m=85S7E-92STnQLOoqp>sAU*5RdcpikX"L6h]\[n:qi.(@uH %T7>clA/4AI?fR28!Y%7k7W,JU\47ng^9V=_eD9\JHeCN?=IGP(G`<7K^i_f'HiR:,=po]#!.B0#:e[n1RTR>7'!l8C4FV1[STO)T %SZ(kUVJqs[ %I,PN-l:ZA4L#.T0=8/[c_ZA_#8od1mPqSD`M!&f1j/3u*=cUJA@X@/0);MWI:1jV&*J?$lHt>A,2$?,+<\=SWicfRVI4+nJmY^JI74/XD!]!^5N3Vso[Ahd8p4>Wb@e!E;(+.4u^>G[[g9+oTb9cIQmtSO#aL=_Zr2H#M %lhuRdesR-TGA2;cj!:-MDMO7.VrZsnRB*$$9ipLN#SgH=E.lq;oi>?cM&5tK;jYP5'Zl[87DAqSJR8D,V:^<$UsV;Z:"sD"c'9+SAb/`f_54Du2;q7no9kWM)lJRuVD#79#cpiO9jJ5"7?PPsN4-CWtK@ %n>661j)e7aW8Ms:mC[Tr0jIuR!kZ3j)C&6XLt]o-Ea]FK##!s3/=I^$\_A5hIVI""?\iY;V8X;X/i1Yi"+ms911eZVJM'!ar^rme %H;a_RcX;8-Q^a1K:=rg(q.Je$ejW&f!tsApJV[m;5c#4(fik+buF9o:-[iVR;SqqJk\q&mCk=#(BfYn=SVp %.\lY,\$JDZF7ul:bQlLZC_<]C=Q69*1ocX1nhCGAM.N)b5$6ljI?b7=Rj??QL`m-?O8#q20dCC7eu.WqJ3Jd %<.H?/SllTbJ!_c:0s+Y;dd>2"9Eu6Z,T\g+c+@8bl1dGd``oRi.Lr4Oc@ca0X6Z'5`4*PsP)JqZ@f=&b"qW>T#GZ1*K$4<,T5)f> %E@qBd5`@,K]ogfUe5n>KOHJRQ`lal:OUJ0Ji12V*[`q.Tb4.cg&IK7uN2,F*I7YW#5ENHs-`et-PbgT5tBZRQELQo,W %+BpJRV+eImGsmg>UI5sU_VMB($2O&f*I2UK@r5eC@Q#bMr!JaOed!(51Xd$/%\=.20_dT4:70CLIQdJEr"RaWkRDm<1Kd`XUIJJB9!ib=>R(S4/>mEA(,]dnj.sja1]n5Ph %DA^:(`4/8#%mStBeiYa?E'-lQN2H&(c_n9JO?BDXE%Zd:3#fiG[(Y7^2/@pd+Z"k,Lthgg7pcp4\?$I^Io!u=B&q]g.Xka*HRi$A %Ajhbh[H##SPg7Ir1U:asPs[Qa)G]]s:('uWMc3`q=V4?VDB_;WIg"%\,Z2Aj%3Q+-QWb8DYa5)`mR)+N5Uaroi7sm5rp-TI!HDh] %G$XC_4QI8KH?rVsi_qtYBP_3ResVYZ'I]`lXD9VYW>!GE$piZf6/"2U9^+fc&9ZSXG.gVkG:?hs3YJRihRH#:7BTM\Fg`r0j9?kG %k@=:Ak[$OUcU[9!BoVFFDkn>.V4NH1-[6NrT\lC,-cIjZ_16d>fgIeNSFSpXULK$P`hnj_s#72%tkmqLVc25L$dYaGeePf36l)Af/XfC@"03oeXZ71'[Pd85K!.*'-^'bUJ,Z9,)qVX5^U)C %H:S,X2n:FHK!P(+joE.8p,4/QB!uDLCg;?Bm4/119prok7/LSpZ4j,=ak3bm-97[#W^$5SUi`tOWiT_%^_DF%A+$>@(5+"(nlUL&oT%-YtLL=7?5/]TOhkAgg-1bA=WhISYXAuF)=9!']]S>(t(138T44PtQ`NZfh %q)5u?j(Xq/HT7gG^)H>`^d&a?As%uBP-f6#RR/20if?/4M6.epSY8:Qs%Tp8*;^p/)T;I\!UCAU %7^j]c&,S#XlTSt$@%0Ug%j%Fk;VS73LV(cc.#as,Jc#m*WG*7&Y*kJ]6RmLmADF/B.;'BQBB]mNpkJQtVau(E_5e(bU7QI+" %6P@Fmo"te#X.1g?iFsYq>LVrgc]ar`2c+m[N5]$M7D&*7Wjh6fO%KKb+,,fh]eg6J*"2ipBHr6/oFA2I:eucCVW)\98uu$g_"MkOShVD.\u#YSFAM %HsVui4\gX,EL;dl^X[VD0/?3m,4Z8OLpo.>Sn)b.Y8ML9l)KK&/CY&`QDBaM(Q;lESr?3,\9MgN7ZU7]j^9raULrla5&/Q/CXhkc %m%CBVf7D9_UF(HPldOaGrJ+)G;MkQt\V@)&0^aXMc+1B=/2&6qdgeWbEjl6JqrATW]iRnfD4Td)[W';37bejT<7^1lmY_tdPKZ>/ %Q;`bm4M:2V$J,4I'X"5(kWPN4Q=Ir"eO6_n*55?JcEDD5+J#"j2:q8r$h##*a.*fR<3`s[.CRXBQs/]+o^/T %K51]fPE\.W55f?RhrLT<8!qL$h#mRp%CuobSsul.G&#UiR;P[0bSUFYRMjhWrlJma[NQJPG:1[)5%b:MM.P^-BVtW9ciSMIbjhRY5m?4.O:P %(`Y)67rTFEpF/JrdmhK-jO;>Oa[;#4QP^O*maq3,:O/flF>`/j"&EW73d/%A %h",Xg\"S;DRk&(Ri\?1)rQ@9p7:LFQ'MgL7gc0EDH8IDB6uT;C4[U$J!W7<$3G=a[aHbSi)+2_"h`Q\>S:?W-0Ya-=+:?kZVu-lg %UqR>s2Y:po@.9!kO0:%ib?s-+rc@1>pN3F,M/h.H/lXn+MJ"/^NADQY/fs\,Bt4oE7"8AU]*>tZ8]r"H:kh1=c:So0Fjjf@BE)b7 %1AdF$^EJfTcT0t6csN+>Fq!0hAJ(7/%r=Qr=AW/c/RoqmkboQs=V%5N>R9V!4%ToBiFh5*]b/SA';6`/S\]@<%="Btl %)8L+Qhe,c)F2WMSmF&3-^6VSLKCB(#BeI[*>$4cqYd*c2H^peU;NsITJr2.&dtt4oSFLI[F1"MW!f(c#Rp:-_6#6qPZCN%9=i8MS %n'?J&q=giq'%LSGCGL26nkrk0Mg-=UNt4(:(/#EQD?hB)]< %`8NC6Y@!uI@.K'+?tk,'"pU?rS%d@TlL>)6rUUe8TfHg16>$.=$HUG %&EE>#$2Hrp;Y8IHF?#qe91kffd5M]R]gjQfK.@a&oGLoJ\4Yud9gYVPdfXMapc62"BG%8kZJ):?AYh`GZ-mb.OKamr'j`4l$%9$` %jJS!Ue75ZdPl(*bTi\;o@&VZIW'"4%4cGjL@2XuE!WUrI6Xqr1_s&];+CDs;^T^upZZ/!kZ+ %*<<6UY)C[2TTAj/iu(&`&0[,^FLDOs)$q90WR-7GVq69)4.6!HMuh3NqKd!o'#eqZ[l\$aCKoR1-h8jk#ItqVFTlL0FH)kVc\sa^h[o]cJAboj$ %n`3(j4OA)hbVYWJAA>VD2$j`2p^"!l?0;%TQlgq^MO@XT?R/!SA4`0a*B3R]Trgbh/?>#UXdC>5:m;"!V7=a*['JGh(_4LZZ@`+c %nQ#6A8,AQ+!tIBZ^V2hma!GoIqF(`u3>0$X=mRRYXq]m3EIP0PE2poGB7?3p1PSC\LFesjWY',V;Dl=d.k6LmNNNP:(8IX33C+fB %oU"tVq/NsV<98)=f(F(S*@OaYBe5\HOT7doAYj0ab]F?1R--GC9pX_iZ+6@1"g=D8<(#/FGa5C9DkkMJjs$kH6l((bF3m80+7b'L %0E)1Dd+;?>TB5,iR!0Qk*L/6c8*Pho0e4d<*t(o,fF[`&:2r#F_)fm?D+m(ehZf@qSp\tn5i85K?X,gV8,T`S>"hdl:F+O$UF;(- %bu;5S/_u2q-JH;Al"!J$PD`eJ[`P2G.Wp$N&NmAPh-<*L\'oGa>J+U-64W9bn_SB&1qPC>m"lRc>$nU_%<0B?:?LY+-uc10O+`f#&7SEd'l*$I0LmJgU.U"'[YnJsFK--U&"BM`DG'3GXLilp1dg%XjKF+*f^^R&PBNG_s0aZ2XV=nfhn[JroD/WK53X %k5O'n7_32a@6*?H=%8N('fs=hF)p_u:RIlEoC>qS1j@;,.!B>Fd) %8K\s\[,i(p27@[+U&[Uc)gIp33jC[[n,n9;7A@'C*q1l6VhK9#UinLEnIh(?aUNeIM8[I#C<_Tb=HjnB\HV?_5]X9c$/-SD1FV,l %@*-@25`!l:>&:4V(tb5!dXEWd[#!RPj4CE1">!r7"EtN4%MM4-]8J%05bYD91UddfE<9?'@Hk(]I9GpFI8*=A!u#LZ$kMoo2\i>W %9_D6l^PKgYaL"(I]SQ/e5Z5QlU^kiZE!k#hK>1!Yj%#EFY)*`88FCVd-5Gp7TIsh077@K8UiN6#@nr1k_]3W`_ouoZYV)UlYV($p %_-ZBsV3pgrBenLW!^'T72(FVqEm> %7aAk<9@"afd[h_*Op-]XPl`Hubk3D=TcD2dVCuIk68=%<`D.JKQ<=8$9X4Q$;8oZj9-XT[*#6@C/V8Z($>]D*iDeNfieOZF)HcCg %Oa06sf4Gkee&g;hWE9-W;[J&\D3kVq^VZq*C?.7P"Im]UZO,VYHHjC3i=n)t,on\$Qqc(!&f?HV%8F9%o?'_"TMVFnq6-;&Elm@c``b:h*%fH><(oqLoF&W@'bm&A'G7DR %OUY]!8KUEN-VRcFJ<5W4'+gP=5S5CBhU>RK_CPaL'/M!TP;\r8+.0*eDc3ZGi6_(X#]*0iq[qoB9bti[f5d^@oJus\.L8mUf]dT6 %b!_@Kg(^9>)IJ;EK12N-^QH+e<[clbfk=FA541(fHill8Q\npbd<2;cV0%`:_$D/+2'\6,enflL5 %Pg`$7b.e+]H,$lU#\ZJ!PPZ>7<;3"J\*Un2h[98IiLYVYa4(fF[Jn^ARa,IML%s8lYBE&W5AMTlJk;$" %V.GR(L!WH"pi/32A]rMa77r'#mNENQD>dI\[RE!R`WE=,GCt;N,cQAInUN)<0#*^M2bu^`5_W_#ONF_G`ZP]U%eD2]NUf0m#X>$s'[t%FP`Xme_A29P$`g&"OYjkQT>rH;R8`UDb3Ra]:Fbi45 %odO2N.BDaYh0N=Rjs_l/kPX*%=@E*WH6HG(:'Pl;C_bW^l#%=p1C7k@/^jE]Fm4%M0SbddhZE*5,mtC"r%IdLD9p*<-ft\A!sH?A %rTaA()XV-G15fUY'D*F*18.osDV:B^>8VYBNQbW;JTdERU6V^l'.C%Jbk3DEVQ+F$&=o6Kr_jF1sPhN@joXpYqppi^?Y< %5s6s,:^[=R#*`*1rI#gAfIV.?66s0&*!Hh0MGXm'ru&OLI?ZQK"eHE2\4MLM=nr7l"cfr29U+0Tp6:[g.r%KeJ!cM?PHe=Z!oBXm %0_=l]TMG,.Fb`%M%P%Zls6A*3*\Y\@,=3ATK$`,5K.X++CJo3$8M?YVqfCf_6daF2j2d1#-oSF)8Wh][M$\TBkD%OOkWYu8&aAX(].?X]%bG>+jgL? %C1n\KQ+b`pl4u^)VHp6.Com94OE#[Yp;?MXoOWdSmW#jmNTf5^^8"NK[*.oT\t3^a.H@Xl)].NIY%LtfKSZ-B`kPr$)H+3:YEq*N %J.l0s\X^"Q-pt9l#g* %-n2*ANr.;T0.!3U>,Bme*X9gM[UhJ03;L?o%+#q4N(Q9ApL^jKlX8Mn*lW)>m5FT[Fb!ECF5`4,m]Y17(>a8Jjb\"]GJM2Fs(V?b:Y#:0f$Gfe2;Ue@SeX@FpI8>M**@(k;EN2Z3- %QS][02Hs`rMBN2t3/ZIk#WMs(1rN_D9Q@KTRiu0&O9S'h"L/s3Ufc#@O@R\09JY@jjjo*%7%B%'%rE"s"#=S"@D*3Ie!)Dje[?o( %=j@F[27&r"&qc^0fQ)lmM)H*r5\smJ0GM"C2VCL'HMP"2Nbua&@SQA((\b`I?&>FfC4[1p/\-hX<]o'@V-:18jL$3E)h[l/3K;Kk %0Xs/h&sBh %lj!BGmDPOuXV-0O)Z$-u)f=gp*ql6-N=6[W9?h2ffF5nsS5J=@T7d,"7nQXrp7S^D[3A%-_OiT99,i_rYZ5cItO7K++g(=4d&:1mRt?7dV(1qU$obr':BGhR@qfG#"'E,b>3ciT]2XCQ&8bG[X"G![C:C&"fZ %Ts.RnIAl1)S>XqCQo1uSq8:qim);r3,Wts^>n_(4.G%]aFI=dRcm_bZs>> %'aqd3;PuEmNKJdc;EFJfa<)c^iCL/H7f%NbXCZ7!Jk2XfJN$,mea,,#CGo3tQua]BZ>/+Rie.n['dkV=>+?G&[qoGZt9nC08gQE)MK"tFZ_4$)+c'^a3);q0*2S.sY`haA"SIu%UiI$N2Kh(!@`#g?T)WSW@/b5*JTM#q66/MR^SG-Art]KFMUbA1,:i^PPe3sMqV"g+p?dO.Sl.Y7$/#j %4ANY++*3F"*jE5a6ZJ^L7+Wjrc-!o2@=a7pI0KEfF9e!cm^t^H*E7)2=QB3@if=aubO.:`c^ZpOa,#KSY$'f`mC.3A*= %fATFgPj@"g^kL2Td9l&^^p-9A&t\3m-ZIu%`[;:GVtqXI4?WH$E]>?0i,?K$E.OZCSAZ:>8#f=NmDQKXY=,V/`?^#h%MM/q74kLJ %!IpVs"'K-ohmil?Mh+o%(MP`q4'AEh32'NWJHLEaiIJsJ!,FD;g.^-+?unX(b72'PSn?TI6YI6Q(-W*<7(Ap5jplLQlWKI:#4pG^ %(IR^+7%VS-fF\"aU1V+'2N$Dt?E]2Ut"/G0[0?m@8[KO&u,30mEG"*+l8&T>hF%`>Q2 %,_%hrq'u`hW]UKs4^#0SU^;X(%S!2MmSlLn]HNRB:FaIEZ.F/[(M6kqMdiL"UK_If<8W'3psVnOjMJ,nVZ7#+86M%".PK>C\!kH* %p#LV)Qe_9M$3W+/<#IREEN!l[3^j4cX)^d.nu^&ANA%fjXuW0Yfc2s)2+'!i5rRD6V_8aQNA>VP69rqk;mE,hLUR9>791ICmaq1T %U])rW7F6GF[k9tJY2]_4<9T/mk\.QFZR>(!8CEXRetg8KNMf$8&68/oBIM8/b6bW2\ %:*<.i_EapYM_Ju2X+D.Arsk7_@QoUZ8)8\d@#e]"`91ib:K(?4ZH&&D$fV01,TOPO<%[N5LJQ<1_/N?$25g9RKmI9tnadl`L5\1q %,g(8Bg]g:NA&Qk11B\!X'f(ZN*6OZ=SSn/?eg7'CQe4*an`5En1D2C+YT0gS??K\\Ml4tVX>\^O/Ad@?@PCstdI0)Z)]KhFpb[mt %m2(;fZa:0X3kA1pC0G"+^gLPB,W`Lk/[J\C3'GAAm'Xs"94ff3\j(m1&.<:K(:@)Z7F6-`S8TZQ6's.Y[+rLc2XOVR5uB!Aq6A4W %=?cUK.>k-^^-CXcY`mj_D6Z]XNn2jM_J87E9=;o=(^E4,FSJPU>k'^F0AkQ'=WbZj,?JpRjJ_4eop %7,ZZK6TUdN[-7Q3RT:fPnV#YW&m^@"dgYAH\_'/D?)DX>;bV/EPE`1r*G6o'5U*6g%G[hnF(u0p=Ut0Qg*b;$_g^M&jt.sNTsfV. %A[lTKP,4.0CgJDi&?oFU5O9f["C;_+IBe4/,mYlQ$_J<&_qEYRJuijG-aZg9SQd(Br3Q(;lgaH'^'@!dBnB-E %?k?ee#A2Cj\*8,nESmg@S[itdT@a]XN\mYJ*n)ha`C@)`Ch'6VAJnE09s(a."j?"R1@$JG^iD\cT(#dMJ&X%H>8:D(ql\"Xr7bAMW0h5a-Ho!W^.NV[b>N$)9LNmPs!$&!IR^&YKBD&j,^5B_\lHF""ZqfeSoT':jY*8I+#e#eqNt$=jNmL+UehTQ9#V;jHq#$GS.F8^"ro_te[\.qDisO]='>9u]qQ$ldT5ch<[&n;=n" %GP7KMWFI%KM-J/fBTqCCnT4&hB$*ZT;#.e6d@ah-lbGAGk66I),nW2$[_lb]m%OY-+/:RU)j]-l6:!bE3%DjTKl[`9$X@Hd3]CKW %Ieu_La%@!HTAjk2DR6UORjsOS)r9F`2n8)R_poAnOB@3Y_5e1Oh.]QQ]3(&RiI@:S_eIJ4D"V9rWc?M.=c30hf+smumLf[sPg0*S %X`oI)!N'^Mn/:BFDUV\%[1'tIV^L"o0_%)ZeB6J\/M.LEH,Xh1rNL"`,16p=TrtAb&`T#dF!`+>qN,KL:/JuJFB!5Aq?DBfs//FF %phEo]A#X%dG%3]?Fs3DN;,\?u=/$YNZn4sN]s)M3Tr:3B$T4c$#68LESaCi %]sbKh9(*f)H>FJ@lPj_R_:h4S!kbXXR>k42O:CS[rW=BKS8P32,U%qkIrO*qgVVtl?4-_t8ZO<)(h+;o_qkAO][R8Lt#!LaT3c@/'j1]4VjpXt.2/5+u>N4p]l-/R(T$c:s#9:t;ZD %`3pjU]tU^F!U[@VIPD>.(ZC3#QYM*L2taCpVjLI1+J3ADV?6HANia<$d?gt!J$TC %+aF&5oXK*]deJW^Be.:e#$b`.3ZAVj_+31m[bV:?4M7J$L`c$,ln/TY#*#^foZ`qIAge6[_4*2Hsl7bKcLu1OE1[VQYmlL8s"-A %X#aRq8@hVEYso[8P2\>ngVqVUmh'_L>[3348'^)'C"NJqMI)0b=pViYNEGfV%kE's-/=gT#TTqJb=4GgD)bu97RZnN!=HYl8KbLi %6p^RbWtH7LGV8bM=;"3QD@/d8G6r^5er>_mj*R33*,\`#YGgI_qh3bjf$V88W4Ch^Ys4c/2ZNjCI>EaX(-@gY1o[AtTdd"WV:gp< %E"OuT*Z0cE,^=<-^sc+%jV%)0bQd(cC9[a=C<1HQeJYd+b0[(!YuI8/4!P,Hd^qM^$%So^C-OBt5k)k>0.Su6AW.L>)`KrYPhB1& %q5]I*Q)h)@j]'0C?g3Wal.r;;`/b9h.AT%[ZZ8hlI@>-1mLQ,o]Gk"HJ;4,K %#aeD(8RVsX8Mf9,EUk6l`V&agbEASQaNB#A"-@/WO*-YI^q)dsUPBtn)]pN'A>!:-(aJ)AS&':LD[Wk\(3sGk45aQ"WB4_1YA%?" %%``pLlf(+F3Lh[B`"NY9g6e4=$Erf@ib^h%>hrPLg>,MrAgQt1(^X?KjFdal:/fhpm#kq6,a?AX4(&E)MAVS$q4X'FIRdr:iNk(H %G7a1N">k$4q1Hp2T;WC8[_)a;L#pCl,1tj8&J?N'6CN=&:EH]V>@+H%Sg:sf0.%tZ#[GX.,Gk2+"QG'`U4-8O[e&iAUW:hQT4T\V %2oeMkm8QaAA>$LdLaE^I"11sJc8H5R/5$5Ab_B$`%p=o$%U^YP@(l,VhP*(@9-/OYfJYoiL!a8Y0Lg:FS=Wh`og./c=?I8T'/M-A %%R@u&damN3M"d^kQ$<^q[N$!C6,/1q\F\+*4Qf=!9!aPo@*lX]"D8M^GkWNrG"8H@rtm.km2BY>RqKNeTc %VPfP?c%0akN"<65fsm!`U+QrWo^418!cHp;Qfqi!C[sii6\,h0`[pgok3D=@e$r,]Eu6i"ig.;9`"nABG\osXR+1eG$4FHta4j;( %$6osZOSG9!WcE.*B7*l+(bt+RZ,&sI`i>RJ7m&BeaKTJM'h?X"7\=9b[jr5hW!h[QJmslg%9I3DoEIu#8J.1QU!ei<(_Kp!I0RRi %6]0Ndi2n>L_!Z)T)Ro%V$ff5s5]o_ZC\S!&^]XbrE`@iWlgg/.FoOHo+9?c\'M?arr6;0(.Si0C"6,Du6bKDASnY9.!d(V%$()1d3W?]@<8T:]Z/X=jBT9HYt*mMauThl='(hdKb+Td&4udMM\BcdgR9EBK7S->UXG?qPY\5"e#G%odr;D %%iJ)ce1fZ15UTh`&f[-F;A_;Ui`=fF`%=SZdFE)V2>Ffmp74$S_rO0Rb*;FbG-]?fq94pr$82n.B\8HhU3%\hfH$eW.ll_8U*bm^ %)>7[85NcPHKr#D25n#Y#JJ572nul:R66`\iKN"QNn3C[^%u7#QKYZnCD$>*<5DjaidLj57!?feuS&Rsu8q"4N&>HHe*dOk5%:49h %70c+Y[56P#fJF>HD,]l,o,7.QUL.t:_3U#mXSZAYW*-P'&j!]SINg?F@._o;T;HE8&V"XkqB %$2Q6N@jaXrVHpV67&4k2Y?hLCnl)f*\sJKk;@VI7><75#dlH';^+\5_Fe2f[(U'@bK('75n"^bUF9K[KE5Y^?-,`k=a&?Q,@j.XLVHVYe,)T\7hgJVs[H/JWi^"Y5 %@erS03%J7n593B[dO/DNk7?`AZs)ikD@H!jA83b7+8qV-R>O4``qll*B6H7<=DQ7q^0no,H5U5\*^:A'bobE-X?*W"c %63OAG`;2?/$]%O=gU^Fi%S2"9H?OsHPl6%e%XdM\0o,@lY#B9\')\G=\onbI4briI*g5Ln36/>[nR1'_Cg*%Q`?;@@>8R"LEa#)6X`sO)\]&1ZQ81AB)iHb$Ul-MW!BN@iC6/%RK?e'+`8(7Lp80jDO(s[ul-. %$RBS(;C;_N6ANas]!4'00WB+i9!HJ1F8iDD+rbYn-BM2gO[NN2ggZSP+0i#Z&BDH:LkMp":JMj#O7i2'],[8ARjB %fT%62@fhqJ4(Fl=\&!N^d?B)lAtL!j_I4bXU/T&@,q9RBAc8qtP+^Fb`]ad]b.oPd-7H3[?P\Wd`- %R]MO;.+;2Xq,0M:C'msN3G*#"UqBjPkjB[WMr1Y&bpG)%$3fWYQ'C9rCF:IZ<9eC%*XADtS@R\ORD8ir'FY-IjuZN86I %$%u)30=q[=mL13*Ah%#q]H\;F.h-DDlR:f]6*p3HQ/2`BBg.E@-_-j'Nk!Ga'KME(b%2jhU\sa:V.s-fQAF:]8t;id %/NHJr"/`NuYn:!9B,hr]%`)J`/u-f`91d&\)_HV[NW_&1*5#FV(df45.=SVd=T=mqiba4_,+Hs253AR4#R*2S`H@C"Cr5)?Lq/6O %*7]>Y6^gaePCfO=#;L%7GE`Z;>??-;`aR_5`O[!h+Fc>`I_?m %M77'gnKS'bm6+aFS"<=Kne"SiD*m7[EC.p%M>K65]tI1elnH^!7Ep3SqrF*ar1b-Ydd,(ObOUT=K>abQ0e1_;`A, %1=LeK`soUW&6&V4Ve"H/Ce)P(c*k)1q&Vp`,m;1;_%ce$DCKsOS28nW0O-./GI)TMA/O)A:*EOa\sUq]6r$sM6Fi2FPc8Ft5WBgh%,c`^"_7a:u7_hFmHR#]_!:V?],H4!kE$Qp/ZlT#]h.JsD+fEJn.PUb4; %9V%\G.3HR7gYLPU^P4oARL//+jkW4h.<\'8lY]WV1TLl4MA(qJ5:`X6:7[na18h_1]InZIkbsSiJTe>J&.Y)I;E+]=`=)eP"OU^-#*LR%8jECuEF[39A)U!oG'9R+9!M?ECH`Ra@Tm7P+Y'Ce?bO-J'Hd%B %aLfL^`/hoKo-:tAVkLh4kA3>& %I9n+fgK)HBD4^Ju]Om;H?J9[CW653-,E;pK8NEhu^2a(K_[tYZR;-S$OjK3o\6.2`%Y>atSuZ6Fr5):eW)21KdbI)pW[a]-(VM*4Q6Oi'PJ8`G/ %MGJeg*E#jJ1LmlhRB?usr=R5)rmitR5.S1=Bimu`q-M<0?fR6im@:S1Y:K?&UBoRKMipO3Mu!LD3U5VR^d&h_AZs%Uh"6;tLkhUp %C3?Rl!!$(C]6ACbTHal7_(TAa:o>G%4U(; %**V#TSe]B0Aa&$U#/-u)q3A,2*&c-8PB0A)H#a3p_N"\LFLcRG8\qV0/&tQsp/N:dZQJIBDXQDN.$_?4qN/L=2,j]dhEP?, %^)/3V3:CueiKCrnZG]:'Mg5HBO.T,r7B-``]=k2p0R]a=WS3=^1e20u_74AG8@f,)[tm<'IV"/9%4aUrK[nodY926cBt\4LN@4$# %E+^;52AFX)r;];!oeg0)fk!DoMK:G\15MEg$;*%H.*?14:Pl&g=lg3=J$C)JP>4O0ZHcpaIT]>uDIb")OW9e/A/+&44i)fRTJjRs %ZUjMl\.p;rA$(HKE8EBr1M;arZZu:>UlMYjqT,798TCPId?9l(T\8Rg,5A664Z/cDT6;\^8?T5RWGo\W6TtmZ5$T!*ZVNJ8mQ>.H %dlLX%#e4?7G/?XUf`9#_c?NuoZ\Je(FlCJ-j]61uf)sP@C)sa1CH^VPR$["?W9M!rWm34T22+-Z\Wnu;eC6Db-COhl+Luo3+(abKd`fEkp*RdU3_[nJ/Pk5![f7`iOMkW$;;J0Jqdfkn\j]LdEI@)KBE[h8-Scq7\.sY/* %(*Gj0cD'a5+WM(^"o)HP]^Qk?RS?qH82sX@4XP`i:r3B@.uBi@o%@fq(l7eK.bhB<`2R[O`l+.bHF?k`i:AlS*YY`Z(ep`jLGYRBN&)S>U?&;0W=q(OHe]^6%=20IlDX9ZI(gIE':(Ph0/H4O,O_+d+XUGfd*>6&sm[I%_>d",o %DQVrDD0)b:&tc.d"(t)I8Ud<^V>q*`$Of&u%.8Qqnum6KSu/no"&qHGJA#9.U9=2>r7L_4Y[$p'A6Cq:dB4rR?QEL"B;\*Gp"bqGQYG_g48: %s*)9[Xa8n@?US_Zi,5'.f"IIn)kM5Ycp_M%N*b8sNDcYDR3hroC_\Kdc7%/A]S'&c'&'TA@mh#&c4igTG`27n>&MpXR.a(8-j6sh %M`VfIA^ZFI]a$>$GB5hs8TMhu"XZ6#ZL_RT1@+,DHJgF"#\L:r5Y]MMdDW2+L:c.8gY)YGf>,qI7.j&s(Bnd$ap)&u+m((IOBrP> %o?/h3-goD)\^_2s6eQ3nbU*jZj$DF5U0T/-R>,lJ^e9OK\*K3J$?sII8_gn;'Va[9[,&op\\!ZHme1h>Oi/p$HrjjPQU-Lb5QTXI %VB&tmc:g,k2H*!sZ$nkfpM"Xh>XPT;aih!+MmE?4-]$gnZZ&2QEh].m?\cT4':dB*/$TGU"De>I*W?Pi*[S0+mi'CM7>iRG8hr@W %?JPKZCifNkZKgsq!Mstt^5/+2JL)8#r4BY30^a.3GDa2*6FIc^;ad[E*_6")35WI*^n1'`pKKpM#Ap(""]9M&6^p %k*bEt<3;+rG*^)_0J[%TCYQHn4k?6>;D!55QlqB!F[DMRbE[;83]]Rf:`a*A`JKXe>^<=>o392P/3`H_D9KeTZ+kj&2:KZpUrn[W %;cMa"KQ\WGTg2]fad2i%<$f*Do@$ZZ0G+I.$1.G]$4fmM`0=:$r(fD$"J_J)@BOgS.ICR.&!PeA7%[0Ln;hgC'LeH8b.;Z`io+Au %V:b`%VM@--Ife,7#VT#7X#[gDG(t?\PIkTZHWWs*4@C&k%!nm>SFQ(.n)bT;71J-Q*TNLn$>YP7T3m,=-X@&0!\)8oM!6.Vs=m-o8"!TqI@Br;A2'sknUD7;".C#71'%TI5@%]G/R5>>.qHY9:%Z!asb;7%du#NlbShXWsda*`7h^;W7ukb2Nd%oM!,0[0iq!,)YH4WaQIm=IpOe_.qW*VGp)I'C0m)aF>q=PaA(@[XlUlV)Eet6X0Ic?`;V'H2O>rLN %cER@%5O\$*.:BZ-Nk)!FnfhY %rA5V?L_fbUSVj!D[V-+=H5MEB.UL:p3C;lK04Q3sq=cKcnKll.9%$eAJU&$>*g>$g=j][i8n=hp-!8ht.,_\L7"!*\P,j\&!B11U %_lBb_''(A)?EAlK3,M[)6q!1\pclG%Of:VZ>1/IJ40t)91GJL0"/:j<6BK"$a_->49BNK*J+IR&:Xca0Gk;aME>"ROPg/JQ[@F/- %D2OgZo?rgFkoG8JMsu4"=h!\AT5(4nnn+$gl"Y&PBfG6,GCV81"+$!\0kkaHdLgEb %fUoGOJ'BI#YU3UpV9W:C1un:$mi\39K3g3aKHPMZEX-fXr]/)XkK,9g:A4tP"=fpHWKBnl^FA1%Qba1TU*%^ILOX]G.uuL*?DZkg@qg)LNp2Bc&4rc9>D0u*R7p%&dhuF@K35YA?QRdjHaDuh:%W;3#$JO<'H7G_C=XeK3eej^XeIhSnQ&Y=ff^5CM)#S4Ei>b,%;1j$OtVe/!`]\YL"H)s %o$OXs-j3@e1gj]OMR?0>fh>\VI5"B?"dRM;0i1Ph&A@j8BR27:T %\\["L>kc"m,7#r"ani,(T2>VX63WVVj@&5F,Z3ekVIQXJFp@CAfP?X:@5^d\L5V3Rg`((2i*lat@GE&U6'cLic=uNI[1s5qjmL4+;eTi;C^q*cXX5L2V5[!ZOC`GLBJ3QoRV@$*7Cc7q76;&[E.;Lua@HBXk:qMa%Y6N<7P\iP2TD5'r]:i(V#\rq[u:*ZgRi50IN+"Js([g%)eM/D#@L/O":aGH%1oINi4;>udr\V=,G3+&r^snAZ"VO@u0FTMt^RQEQ65o]YrdMFX7j]I`XZNA8?qgqE'4r1sFVi4e".MunB^E".maiECYg %nn+?ZKu2W]%>r,N/Xs!MlT,.NgH(i2eBN`qj3:K?lqF=q#![_')0O-[hQcFg1?9?iB"0jGO!dLbEi3N?rc*&q$Nq"0[c %+(=cR[]#.$lS*:7@=YZqbI'2.5G#d*RHJoOYbI"88V"ue4M5ptkb>ZO1*'BNX2RMU$5(BXWVZ2;q$:5ePf#VK?,Tt.(m$Fl-@138#6)k\!&!GSk@G]6"^#iBZ$DGs=s)jfO*eD?m/7f6-oJiQ/Sn/5-a!]&K>9SYT".n,>$Ff.>22WKRh^>P#.)> %p-GY.6G`.GcC96r=6cg"NOI3%+e1t#IHa_8I2#'Z-#`oA^g5mDdIWd#]>=37SgCnMVutCge_h_$og0rd`4!@LTi/rC?58W;L^fI. %Y1#e?9>Y,fdVf!.:`:g<5q1#(6%J;(mlnsbH+k*URS)6U'].,c_/j15#O.tsV.j6!VM9WM@-,Q2rkl@4Btc#9g-7d:TPmYT^t>HP %A$8M_T$J+EK5FL<_a8/n1aB%ZBIT*\;mrYT+`!9RCUp3C#oaGt6s(:?Xlh)sbtMQpZEAtXc"W:]q2cn%&ZinA@uF[qk6Lr"s1>C# %eK'>.85Io"9N0HDTZW0hro5;pXO!PjB$[[kO5rj':`QMOePV+?Zae\gJu2X5pj]"UOsH1#n])4SH5l%>dm[C$hU2i2/EB:[;Qf=L %@[*="6]:maAY>.t_A5A.WTjQX.!7@HS`%l,69;Xmjh+,WX(kt$r#+LOUhGI=,Kr3c.9r3!Nfi/];D2LNb2;1&&E8];@Zho8j&Ecd`'7im$NQjMn/ %!WN3lXd[2*\uQ7m.u)hRSa)dTqU>qH.^(*D::E7c*eq@&a1$>olF[mI4qTh"4jK3h&Z-.5!Z4R>pTbY*n@8FOA0Yl.b7_CY6M`OL %Q9=UJ%2I]RLZl-JV%J_]'&8qY@+#,7-HX\pS?>GYQ!(ro"r%C@!9[LENod.F(um)%m`$n][m#s)+Eb4)1Zj;smmY:ubhS;`ASdBi %f3JO`(M@i,/^`?Q[o;4J7muo)lYS\sc&6QpjK)Ogdd6#.!btiib?\e?IRV&Bj\l^k1$oq]o20^64AZ%Q5$M %A8pM\Z>YkOo(&,m(qgLQKb,ULM@c#@%2Tc_QAb1GJm_X'#leQCUm.DWAt2TBP3=5!=oR$Nfarn)NQ'HE'c7ack&?%7C1`aaN0K,& %=]*h3LkZK'E/qG<*k&c,aa`L6Wl7iPg#[lDjk5_DjXoVL*_O)n,8`5R]dOV!1lVs]J.3Z[JB:sJ.n\M2@1ta@e@ %&j]TS-\X0K?t7Qs-qOP-'cY^BTmUstBZd?]X1Ej1][3(_9n=N*s2JodL$3e# %o`f1,2ZHhff4:D?G>(KEZ7P+sdA[nf,d7;GeW9n8GCV&oB[^iU52pEa/^teH>`ju_R3e:,auD!/>"N(('cLHr'&!VhY7F3%\WBQ- %1P6#j3>P`6Kint+@O&8:Fa=36cTb-c_.3plimlBY8b.gVKDQ;O"[msmW.`D/:9nT[[BlF%mY]8m0I>-%RfBb\D*Iq\kt$]j_(^sT %glk$XeRhs:Wo=[eE85k\S$7fZZXo/PC'm'qX]>p)3JfDALrS>gi7,#qP1jptoh6;6pf.2!]!2^]@)aTLNEFX7j5pCkNl<1>7fpFg\leWHW.k`R%)94;lsa=ui"?q>XeNa;&o:@$t1"-um0C@0.,64L4VX1/^FXaBe\C`iR#iRL=, %b)%>!Zs([Ekc#S$_/))kV(UNOb@V&jpV3:h]hQMU.9o7Pi$'@328D7_"kd_Ls;0V=\1Y*H=jU9caCO3O^TJY*&GXl8'0BEs-k`JBhoEM!BTI8QDaW4t[C- %!d(#/_lf#?J](\R9m`@mmkVqnX0<1efIPNC&g46C%gQ`GPMW>[^hg[T'XZ]fTu?>]X>pc!7Vc5k>HoMGF2N8Sgn>1nquH3?_);=i %nq1TVrp3t#(8n-H-@0WfqGr3/eIL6gBdNmUp`9Ak@HSr87&pnXSdc>.@>g0m\#%R$/]a.8)IR/qM)E/3)+L#ZL'_mt.Vk1qimXj8 %<7/1#C)VQl`aPP=b6\Y2bG#)pq?hq-0ZiHr:"4&#bOqb*`M_'")HoU>_-Se!+\[alsD]X7Z;Fm<=^7R]>D@P`ok4;Gs=Z!X"b*9Xp")Lo)D1LlforBXbWVep?nnni7ac[]4+R< %+p']EMo^l/[dRW!9Z1D'Npl3UEE/j'0a/:sb^M@:*'4A;\@@.M6nMHt^lH35?;0"/W@r:X$SGh3;LtC7grEqk?P1R?Pf.uJet-UM %1eL!SDR^'CFE.%f%1j4PQ$*O@JB5]L9k-VntHFhrq: %9iDL!B]H,B9KB+hHc(m&Keh0f@llD'_2]q`7r_/5TEW=5Yile#='l:X)(u)Cf7rrRiH!KG4r"VfG?XPfn^GUI/YX[q=?1A.'m37IduY-^qH._4dpHM)\I5,m#V[] %k'K#[!K5(gDqhVD3!/LM0CJ$>%mkQkU#B#10An\*P&*JJY_L"n4J,X]rGn'R5m0u\n&nA`?V_N#4:!t*5ZRP?+^/$GG/iXblpkrcOB]/a22JYrANrC=(g>I"fb,]`3HeHfTH&-,#sK]%]11$L+K"2k^Um:ln9-5I0-0ZCE4OucBu2uuSQ)j3H7_mA&tW!WiA"i=3M %V;/`QF0q2 %LSKSn4##*K*LJ\LeoQ'3Sd7G5%)._adqh)!Neug9@_\f]$mHQ9\6Y!V^h+,Q]51.I$kib?8G-,sQ-"&[=s;Oe5"W3J'm#s5fG$2" %.)4Dq85B4"-1Dierf9aD[Y$q4fg-"=$.V#SRGD/"I#dBb%(8`N;27Z5dP`5J(Fm-i[k)*JTi.L/c,/Q=W(M1nIjW$QG63;#$l:OP %i=N20Y+I_1R["33(?-'7F\G&i*@F@os7O'd$(QI.$&D@E/c&EqX+5h1o)sCZc)6uiXg9*lB2mEX6_W`EJ;PUsDHa&l\Upgag^#T+ %c\I[:dG]%[$$iI!=h0?"gU_7;+(R].dh["cTNiX\J@VNEP@,K0!GhrCJ%aMDll)WS0rV=q3Rb)VpDD4H$!U[9";oWb.T'nfA0H8r %4!_$bb=2%`bXLlM&*JGl6S9PeU`ufrG@f"D@])o8"O"skKUS:4C`6uOn..pL*YY2L%i-SQJKf8fA9(AC&qN6O&FQ=h1eVRkEkoI9 %Co<"d8/&nJ;n,s[Q]#:+uNO5YJT %SO>`'HIP-#&7D"Xl2ffX#'ed`>^I)R(EHA/Hpje4h?3aoQpd*(UEDA8id"ik6uZiE`a0!Ci'-F:]\pFtf?)L80!c.UUm5HnUA;B# %k+.#'X:\mhqf"aD$+OBQOt@8FI!fJ>V1STCT.\C=<<,h[3eh*LB@< %EL(9:l9lc3PG1UG2D[>0aDQTZTS%SB^]DOY$rR(@V9Z]obHUPgiI;9tdq$p,*bc`^\[`-9c?IIeE9jC393s8E1AX%9=G&b* %d)JqX+o"`Np^]/MZ^P_=Ln)oQ1g.+sdnXZ;I=`QG$-Z6.eGNIt]n %T3/\:LZonl.dEep'\`],;+tMR3nZ.eW %QS#(5Zl+Z$OcA`l%8<,^)#U:GS"X4+c4cin^Dnr#/(lMc>tc[LaBUWD1K(Q@bYLa=Z6E0%9,eL!!4 %0HWHHYishqGhZ2HSECf;CD-W-.288c %aT_5Q5aS^3SBGa(oM2pgR)-V^+Mi&;*DRUPQmBESVP=:;]-T\d\+C?!75+/9,[.O[]K\+BdKiRC(BW^_oLp!=1pS0&?^Ui5IE:`d %"?qnq6HWQD9K&C#@+Qc!p^U"d^[`DdEo!SAgm".-igP<<`J9kIY)np-l+MEsZeYq-'006S?,n+_Z#&G%/eAFF:^D]_ch`#5=V1&! %C*hc:j+lH47e8XdM?JDQBc6u-aK;-h4mAa5GY^plg3]R>!NUUO4TK6of@kkE`FCHk-<[n[O._us-Ma);UTuH^Ih>KeAC3H7GElL2 %@(M8!==UD-]9eOe`jm(NaY7sZ?-ofnOaC?Ni;)<$OrNG(M'RL+T3L5O67JZ/SROO%iH@j3kV8H#'.hG3B8_kp"p>O-Ci@HSuGmO5UPDD-0L+Z*L"V4Wi-I%mM%6t)p(Uq3tZ)c`X)f7`lnn4EBK8Wg?9/URu_qe>^_F%!S5#92S-*cbR&retthrE%Hg''0hAq0>(nhib=K[9pdObt#]+N)324!H7)X8H]]ZhiV*cau31-M7ebg %-abES*gp;LT;ggf54S"(+YKCF?SCALSQg:Co8gFJ[B[::NoHkbNE+6^^[oa1+tZ9DWI2[K*J=m(Pi? %#te6Sl'*b)87Jj!mO]&in0u93XR-_S34g^@4nD)Z,gN$P6&V(]7S=hJHPT=&D!8F[RibTV)4m5[PFh\0G!m^U],0s;.fVn %it%rSoKHe6nr(U%cpp7uWr#oYQ_$bp6JZI\fj+%8"8Od1;O)dL/`20,:9cVNCF3Q2[A>N6WQ@[.8RlVi2)K>T/1hPp[hhtl0h"8K5&(aQ22KEYP&5RE"@WM`W('i/<7:5Fq(sHsI*lr)aoLFThr;,P/ejc1^aUrOM?1?F;e4!=EAj'e %B]cN*Uk>sLji2jRPcG%O$aA,`-2(ffP,-EiE`mpjRj(Cg3/7)W"GkB&U!_Uk50\![(FthU;Ifg:X?i'Nq,9f]e,r"j:1Zjd\OE^0 %@c%e4L/M7ZF9)D2;:nKcF+Dal)!'.%gSh'2ci?]heHQjO.V/V%U:fo-Y``QJKMF7650!0VA;$F:EP)H%VjJ_]8I %816!\Ro@l!Ku=]'R1,Dm#o);f`Xp$aL;1BcMX68Ncpd:;A;gO*2r_lfP.GYtI$=L@7ARmUs%+"s2afU&9?dQ0It3OP;?EK?#)NDd %jBb8(H:c8@FT237+\FYkU.nJh80PEE0OXL+il^E7H:Np+ZHS\g]"j5IcTle/kpn]RQ %S7L&AjPSp6i+ZMI(]TGoa`aD6Vl\sZG#fB*3iNG1@U(2-o_iPs`T*k.QS^+PW*rhX9*&cB71'U3_`!(a>MrtjV-C$FJ?OK:Ap78" %SdQmr)/=oA2m7C]Sg2.2L,EXh=IP9Uo4k.3*!04nUG-DL6L)am?krKY92oj0C5s^"!Z>H4,5]gd/[o2A@g,UWKLCE4Ijg'W?2uCbgP,W&g;OLiMVI'dmc`5OY:t_A9NegmV`g&Cm6// %VqUZuYTcf0MT7j"oH.!JZ[4G;_bi_EoHC4WZMSLP_(%96kq'[PCu"SYEEEP[r2)JW./B.YdEO!X,TeeR_UJ;Gb7gD2g!qL.1S,!" %3(_,Ek=o@+Z0i04h\KPD:8%1YYEJ@rbZP?@KpPb-r&#%1;6_JI/6>YKmQ;:A%\:?JNsZ^^24)[DI;k)+B$,Ci(0W>k$u*("?7ZQF %r\ZGl;CKES&_,>r"orqP6)U&@^c._rPk8k`CspO4N!t6_N]7s16h%?g!TKiq#UG^o^1c4Re4`O+jbqU*a!>$Sj%Rs!nTpUWj-Pc@ %U&f7s0*U_Kd'kmraCBoSF:+B*;h'N,,-E5l$Pkf[H_"2P!cReD=IQM>W+tV#U27L-[XJ5S'.ReSg(1.SNH;c_R6golS>odK]Z$*E %KVk:m%8$.P:Ci7DifRrXc0BTTFdhDR+k_l\a5![F=-ktAEf''"=@(SqrNc*r:.gqk!%MlcW`SS*fs!I#.L,?`Ng`$3DC0=93':#$ %`cT+Pj&i>)=g@l[V&?2Gc9cl6J^)&N/X6'3!>H_?4%#D %-rV=U))o*?3'o0s//::'QpD%gW(c_$9Is+%Vc6kA6:C<\=XrqC^kUb47b7b?N,&E1K(tg#JOTr*`-[=5B]M58WBEsqho0:3c1K'a %[+k*>1K;!fik`]Iq"^:qb&Ld_A@RErc9qdCKFH.18eQ5C\;T?j*p__p@P)F/sc)b#7grtj`@`HH-b3/93/;t7O./eD6rplP^=J'/EVWYE6DdaLJ6]Abhcp-mZ)]/a)i>I&)d'#pC!lPt! %mf?0Y'FH.g*F3P-9:Vf2;iYZ4["C@H6dh5*@&F%A7!NWPkm2[R<('>IW=Q@ocnS-.T1,erYR2NL-S3P>@E(m1gl"G>-,Gb$Im"o]t+b=o`L,SX1"'ei./,'=\Ado*m_HR_Ya %r&hRSjl@Qt8kfdt-D2R)fojO6e>Y54HR^A`7Ohho'TJuE[o@4TPMto$2OYB"cWoQ:6\?,8Fo4?JST$Q^m>i%Hj(o_'ApF$j74h0& %n*7JbP=Q%X@QHl\MO0:j%O_sbm'i9[6pjn@lGZN0iE/Ih)Q=JZL;E*.YZe%PV5:pfD^IkAPBj+K`JFn1+";XFd%&/94c>c*!Vh.3 %$i$(GPk&64QH-d:122cQ##_H0n<4C^]bREmJEWod6Ze.Z*m9j/R(JC`I#Wq%KN5*[+DUsrpR7e>=k.H*QBk##S2Y %9=jB2@*U0'C.[^@Y/WP9ZBG\':.T-4TAtO8,?(D"+5ga@W9X+rPImn)9Fo)\ES:mkUl8g:XUX;TJ,XaHZPX4*ADgsh0ea/7Iijd'EKQ(YJ*b?E^5eJH] %LIjJ0cO'$aAduRk=kQEtU&L:_6+^Ek@TXR;E1*Uuqjl`+25J^j*iG.1,b@b2r%\)k\dOGI"QRk]M6%#OP\Qr-"[MP"jSXfF70rPN;abRmd0_34,bPiEarCLMEV,Z+V+"Z5S&h@)kH^7U %"LL!1PaDNQ2WkEQZg&b+B;8-99+4/?8iR0hM;b)*$kpQ[/jq@,K=+$Z2PoCu#t+agI6cCujn74.*HcFu&j"Jj_TXD0=@;ob_^'p$ %M?L9'-+9a.S#G&p0Y+HW>)K'\Q(*T-LAf/"/lprL7:NAJ-6r$O^gH=r(3.5,*=pgDO@cHu;4B%gUq&+W5$GN>esW\hiN,Y`<2FV\ %9n]/e&)):c7#/ %O&o38CihD%e.:n"F`3M^+OH].B6>\T^LmaQN5MD?7FI?jl@*:*fo3jK5PBQKlJ-u0b=#"d^YU31MCQ`SdadrPb4r9+!s;N8hQ>9#HI"GU.9r,dlLf/Pq+P4#=,i`%lh:+4(Nj%_d/VNuP1)KG!LPd<*7J %he2$(Q:!T<+1J+WDTpBCS%Rq.ga:!YS2QnHMJo?3oY]W"+V+kL.\6Df`s,Xk*;.)F.:Sn$+[eKiXm1<>FqtHA>I>>*YWKE^E3Q+I %J94MSne9[_gmh4"2)uq&1F&ZH_jWEec!:4W>cH;3eXT`,YZ!4jk21)g[-r]_R2&6[*#UA&%j$7C)!$UH]#``%H!SX"!EDhanJ1!@ %,OQep#S&f_CNHM*.;)/de*=MQLUM-3-76VJI[e[dcUA.,Dm[$G#dkLRk^N;s>[/eY%>%=[)KaQ4CdG7^5&XJ^/<_/6.u2?g3Eq@m %ioT"@>&H_)a7$8H(2ji*"7@%'#2kK8lHG`WY0\a^%VYDVf]fg9@H1O8[+ %#`cOgMe:J8G8^N,fG=+/8PSq?)tm7N8@r`=ZGlJG#7<`>+0r8"6Aj1Vs2^G+'[e(8rt3ODmUWY(I2VNo?']pjFCm'2b0qHflWnn, %b/cW&%-Fb-0#:*:Z/Fu"$Y(.p'QCBsJR@[%FpkGD)p296I?$haPUk;\kpl9pkCci(UK1NgPV&2""L[:$8.=_0K3t0\IR=*%?3qu8RCoYDbjRMA8p(rt0R$I-*Gp,VUWA;PZWW9h\j/md %YV%tR;E%guO#FTuS6;b-9m*WX,[nMfr)`sn.O+3-<"q/&/bp&f+[/=LM5?#FWj*j/>9Y1Y>Rj)t,.!X?MSh,\?cN4"3em_oSRN5[ %D`FMP!:OU2&mS@'%>#cc[C468ie3Nd;*?#1H:_uQGNk*Hi&"q)]<3)9j$"GP!Y"!LF#2L]9u9du"4GM3h2HUmJo'j%[Mf0^N_P@F %.5l>c1o[5%UlB%rJ9f:B)X.$%luRKlJ[Tu_DN?J_'7nn5\9/MO_8q&%X(i-`O?Q?E^Iq!.B!mB5%W69u`.jhG/_GaptDHQ1R-IRo5[H*H&[jH^kdtQ3Rm9 %T1$)/d^LGF*`4pOaG^Qp0pb09)ess+LhY)Im4]YGHR0S]Z;-JI@r]1=dZ;[02W\*V6kq"8=X*i+oIHN7C')?kEIl7Z8a+Bgh9rI) %V5j%Vs/::VSOnti47!:M*Vr7@/cdj-s$q92M&.@oTYSqj[ibsnU:Cn;ZaHHl]0kfLQ061M,."SU^EK9Y!AgZLrur[4gs+["c&S>^ %)Ipec=lTT\kY)Ri98`RjLcuD/7H]86Xr,]nM?4OPVg(/J#kVPf#Yb*k53R6]_ojJA&Nq,]lVJE1RgC-n*n>$J?@>K+ %O.@p(=Vfi1Y/Vsm^&*'JSQmOV68E*GC,t'1!ejCsM.G(/_T%9#pQlF.mfu/@id2Roh:23Kho8WL0G$_hVCLd''Epp&+Edkda],8dWUZB7[Febi*Rjih[HcF-;OfGUg!q/7[t?P`TO'&>S?W/iX\;M*u@mnAM:N.B,fRT!G9WqeqIa_=FZ7f>s;$TqK7^;no$k'kTrT=57QC6$CrElOVg_n4.U,5dfQu[oYQ+gH#&rIIqn&R!q-&[a-Z2 %b9joQ*@6*TnFh3]I\g>QW7&OY?Rt:hB63)cB;Yfsm/;.l?p)3K8$-H!rD8i&ei/;!R/$%%GVSl/+5s]qr-Us'4VZ/s,D>S9cJG'0k?G+`]E_\'=5`7WY+I7Y7dX7#$"3Gsi'j434^,]'# %^P<0\DC9]>2]Op&G+BG^>MO>f\:[-=lWAP-d[&#rWf(JZYR_bcFVR8sb1[KiC4'FtIdlnDnT'*_qu$7Crpo6erqH?_07Wh:rql_p %rpTmX+9'1Xr&=ZJ:Oi8&s.I^<_r(HcJ+jIkq"sl?;YJk48k5.X(3q&* %IsCV0%/BG[T,CR,\q/SRJ5=\9DGGoY6%809(qN%Z!0rW-78D-KeY9#PS-Hj7=YUQKDD9BBbas--:GaCbE"W@INtn7?4Y_3el2HVL %^B@,+p0C`_ED8r+7R@)Xn.X;9PRoMsf%2U/Rjs'YDcRspoY=W*MGb&m*,^s*"CM>!"<9@X8_sFS5i!aa8=ljnXY!$q8gV>Q(!6do %Z@(0:#NqEbV8k`Nkn'O^2/ %/@g6^GpInZ$l.MhMW=4dT\n[CY,oTJ[*+-D3KQ]>Gaq*]*NX^U9pjNrJ+L&q=UFDX\_Xu5/'_jp!:*_-@`1%]QnM"GP&V)Z%h?8ei#@;2LFRXcAhWN5Ahk[61MF_4@Eu*-^dEW4KtVhXSn!AJI_I$FbsCOud'c;H %$Oi63^45b_MKa"I/F#dhdVBgJh(C<\S3@HRJ9lBQoWi?a]LDr0H.GPS\bmq.'gQK2cR,INC00(=P4oZQC*Y6>F<697,`:Pq@M7*G %4HS$[DV,1ZP@-T2,5T@^2\7OYpeUWcQ?a"P$MsjSn4Xr-p%A9Y?bF'^Z2pm!9s26_3D2..cq;U[V,D[$Le7-C/s[`4+I8<8('MJ. %2&?8YJadl[I"K.URHgEWDM,YeZD4Wi<#!AoFV/V@qYj?Q+*'!.59gr]CeaBbfLn/P:uX:S5O;nnqeNoM]S,*)f4LO$99^od)\-sW"n+c5*@jsjAn!mA*E:BBPKE-qQ,:^5`t]3,l9p`>P$qP6;d8rfUu\V^)lu; %dZ;ab(,X-?DsBXgh)0f`-G)YhU&]`M7c@."6lJ5*OQlYK975)tT="f!0-_A!1$*TS(LQ=b'f^J&p([N##h=1N!=pK\l&fNHXgnaH %bX/9L,?&Mdl=[8]&VY8/gamOuUG-1:9poqBtVE"m\;uBJDcu9US4U"KU]H %Hq82jiQ,T*'T:+6DU615MLGq+-_'$`TJ5SQQ&$ll#D/F3n,.@R1f)Tnl8R$ %Y(JQ=0fI[RRJYCS_Brb-SL\0u'G^TF.a&K*SIL$`3Op_&,AUGNcQAc\.7AD9/`AIWkJcnr%WC8nXkNL$;U5lEM]SGt'mGL+B1id/ %XQq&8hf#]LKptB]l_5uMP1rED(Aqc$]UM7'nc&&i)_!>"Y8;=;PO-W!)DR8PBJl9*X=Vt'n."QpcU7!eP-g&RS4O0gYAs4@?nZB: %?MN2d#2lkXr34L2'Ti,VHbsE@r=mZoi<3@i0pdRsB@@K2W*RRMaifgh&C3,0H58dEp4E>O@G^1JB2J2TZeN_Q=a^"NJ^8/"d8ahf %4dq0c\Lf(:X/g-E)aq]*KO76E#1\eX7^R1aS#X.$X04c`K&bB=DiZ8fhA?8q4OiaB.)L**gpP(9<=5i*Wj0>7F(=-`1)p/X%I.1_ %boNXUkAP/]C@OpagN#]oYcoW,'BG4(P-YB`e1EqoP5\gX`61&Z>kK^#BX>G!2uO?s^&_R1,O92dmZ*VV[UmD7h+>+L[t%BK,pgcE %%+O<5QYBQnY4C4RJp#ge$o'7Fo91?UZ5(AmHblJd;P)*i\(f6[#DQj2,\<[O>YJ[:`X$90>@1KZo?;QM'M78>qqT#1XZ]H7"N9?n %@jX+Srbh5nHK"D*q`#A%d#>W@Khp<7`PdR$:W9mP6]-RFQJQ;5 %Q21EIMU_Y'l*eSFZKM&BS`'JMZ!TV!k&'5E3c@4V*f<,GkrS3BcqLOLRb7)#/k_]OfC\%QWJ``nVeo[UZ2$S3DH3=0p7U'Xn*^q% %rVZc6.C^=7p^U*Ofu63q/C3@0^rX1fL6mM&NbNfe)c\aO1OAe>U@%XFf:1rFTBbBCi?r\mp;:ch1VC,nbBc]Y1=:,dr15OA8"0:U %#iS6:?&(k>LrWn4Zoa-o&gp12XnOcYB?R.!(2`O7ra^27mn449Kk>(.:'CCGpP6%1Id;i:WhIapfrMk`g[qkkP'ifo"+Dnp(4]Eg %E$>c*@'.FrNK#,G)q;pA,hfo[:t*"`ZPUUD?Z4]L\OINA4NZ2jO1RVkm#C5@i=O&q(A7L$_Z2=KcRufP/`P(h\YrW.^4"TV538IO %2nA4!"H8C*,=WL88BF504Fp:q1$0BGs%SjtSknAVEI*V`2@d7erEj-I49M5EpkTp@kS'%/hbT3mn9>@dH!2L`q%@h&2L8:9Tms2Ua\(^5o,B+PmSmFG`<6i4+3pB$Z''s==% %,b+B58+pYK/u6tsp63NfH!5!W%.h^uYJ^!i=F@$pT?Q7B'j"\r7nNEkbT8,`^pQp=BCKB)LQOa$/n4`(:M1@hRs,Mm>mu>Eg.r%d %!uDlM6cea.1QU7('h>#?S$KScEVui=Qt>s36R56\WA]1GlFC@cL#@_\VZX\KRo'E?en37gE`XP-0`+92qt$H@c*3Ejg&OA#.5%je %lE0jVX#t(X9VW&u6R_YgM?]/$252r<,sR9(p52@e[Y,dG8i33BRXH_O.*8e(,BHGtHmb)9*Q/8:e_:E$/I8@qHXqRnNZK&D!tBts %.q5fuVfII?!tqb)NoCWA!4!=5G1%ij`uWqk)^2.0'n,,"-t"g!H/X9@PZKd(-[ %85,ub0\]m_a&msJX0=KZVE8ds,8;(R7)P,G^%b_EP/^4V.kp\oDF&*W2g*d0=]^o)gb,.i00YpLiE1l4%Q"IMp,X]W*lfCq/cr3"/Ok;,>$EKjAE!<3cV?gb"M@]re %5XDm@P-[Q$OCOC).kKHUn"Jc55EK"q-o(1kdW$V]K'W>lUHki1O!*ikhZ4T%YRZue)5an'qTAn(gsuX#H[KD)gn!G7eV#$J0,lh> %0E17e%K4\R1uJR4"h$?k1n.=k-XOV+Z3`l#Xd"L^!KB$M/lcnH\d8GpeM:^g?'hD;J3nUq+rJJo,hDM&8e>bBiU8B+Zp?BVRE$Da %WReUkd6%/O3EBn!j0cfZK:re,Cb]H9Nn`-pg9pN"T!7V[\LDnnn)+.jm?5n-k[g %m)hO96BJ--6KaDk5RV1u^i*0EKiKW5Se`u,3'Ukkj+ou;%ALFD=Vuntf>JF#JCJu]"SL5%\-BPXel`PT_n?.f+]8t)2NplfC^M+# %qMJm$cp5#g&[bRE$K-%(.a&L&G02>EBgsc46;&^SN7]qj6&D$X"K3NE"?nf&^_BZLdNdoOR%8GT'0a?`[5q)Z3"]S_6=P_Q,fnR6 %R8r6!C#[SFIQSR?\ZTS)"X$hXT0VK55aE_7R]('pd0k78aen:UO38Hf?6gXUW$-FOOX(l(5793iR*nZ=?.V(3qE%R\RGnk[+^3DXe+pJ)+5YoU^oc'N6AIFoZBj0di^\:YJ`rMc^F)E"R*OrbKa`9a@aUu$ %s$*LS\DU:>*qbU1`!(=4GU5Zp..HVrFM@FR/6P(c7$Dp6'*1^5>Dg.DUI:OoqB6-/YU8`l;^GO2G@Y(A/m+;KOke*STqHFI(*ZjJke8X/_8]$i&Xd=p[>&gG.:j.78J6;$`(t:n7KGR1_2-!fWYc!MF9WI<-:817%U]Q#Z]*m<9F?dUS4!<(*!\ODqG'p/ %Gpr?&*MA2W.,3pnl)LqV.*)$V5*U[lSMK9KBi[6\k,3?GnN=%H2;(US5`(V'g\5n#K7MT9V$*eHres&'.ZVq*ng$uH86nbT0'pPW %pe[7c]*^*^#)V.Kka8oW9emb2O&-eMf7de3+Hb"D+IagMaipi!ofOQrnCJ.?9=#KC884V7PF9prIX7D!?O1#Vq'M)qFaLq?7#.pr %GRg8#e3@ue`1PNgg;K/c"#O],H=q:KYfKP!cEcd^c9>XXg(sJ/6A08;fgp%F2!.^,)NEN3>>d-4-UPUWlST`EaQ)Yg4PP,.6Jj6% %c\[;GS:>t3-SP=kj\Z!N5Q9-hrVAI&s77?3msk>+J,J($oTqdjf:jIg+dN9&)?'27=!\T_89QBVdfu#9a8X+Qj.:sIf@r$L*,mZfUmWlcZ3`qf[>F?s)r11N)(_O0N%Rjf+d-?r8qm1qbMSXPU9o#OZ]ZcXn$2!8L-@c$ZMge %*cl]FE"g*JI+K-@rVZWMD@\GnS*UF&i]ZWI%ksomZAV'RnlnkE&1oCJH`IACLkj?/cHrU&1EdWM1big;Z!n]fBume4947JaDd7ep%gO)Qu25g`X00TL_W)K2)(S"JTnm3@gq %>!naD7OG3s2@-gdc*3/aCl@b2IWN8bX>%W[MOhCW$J%Wb#l3Ic:sMGUK/[Z;h9U$-GSX,6!TpOR*m$g?Y4b&+a.FJGlceO8CJ(`eEA;CP]D[/&H3HmfsSK3PFeTr\XiBmK3"D&2JFL>[aY&^KM`3*P2spZ %EG`RR/gQ#E<\8/G5+O(q+UC[t_MlUYcK$_oM\Hk3%/$gb9\UZ%SJGehq*"S%KSAo%N"^irYU(JeU^fU_\^t2Qn?Hk7CjDeM-s.YX&cW19!cB!GOn>N>YJIH@SDJ1gFEZ?;:KP-$X%L),^_V_JXdXcCLb!\1r%JV5W>4 %=1PRfOmI#NR,1qI5",8!46[W9&HYL:m@Z[=Fm0d3B`Ri-=Gn/4^.0"+8a9eX-="RI#k$;+'0K[^%+@5rEAD/T(E!k"=Z"N(.%n0] %WWF#u'k&]'eh'+LnfhqL\a>K8kZ>f;?s>@VE#_,V>td3Xdhg.I4r,t?Z[t)HBmIocTW&3\3d\dA0mAq^&\!@CSQqHeB;WQL8P45* %]@M/[GnB(lp^7(;f)[LWi.gd(G-:1iR.UjTIS%p/ROZ#AkX=b&>5G35C_>SeMS* %QDWpar7Y %RJ9oa]d2u#[;=HX0@.R,P#4S-IL1//a!S>BO'%$>Nsk55>I'e[+2Y>2_6sfKfVAkjhOBm:&o^NBjKOYt#bC/q#T'AS7@]i@a'&0%>G"Pn8egq9b`N.@$8lcDrfL)7sF=$f!)r!0c:#c7%bJLE0M0G3%Up]XY(4%45u&#(AL%qP`@,H>/D2HOq@Dp7C04F@(I;GNM>XW/G7o$$36QD`9'&!<%!Yg,VDpTT_6 %9%KpMlJYXS$YVXlm$S(>0).D`Y4)68KCZ+?rS0],]-\TaoFR3*?u1fTU@\TZUt7d&]!rrDk]4EjIS_lmkC""8f)#'VR1r?\)TA,4 %Z%Adg1e8)8#RHDVJ-JRMTT?meJufG^%\)aLO_6\5Hr]+68\SJAM$gu_&ui-(a"sS>UbbYs2]t;;r=):HoKAIZKq'WViX[9G/0FX< %Y!X>g"6-D]7Lq9b=`Q4T<(Y1qcKQjLd)QVTUs3+8RDQA5GHF,%]P%q!i-NO1Q=Yb#\mHUSiR-Ld[@aOJHa@\qYPSd>VTf7Z(uBT[Sl%52njEIr0gV^D\e"k7^A'-A[Vr %%TURS,gK>N*)B9E!?trJC2t17-G6u[Cclq'kpe"FEAZ[7])7R^au.:s\)q-J/;?Q;!km@(*Y%Q!OdH.rVuTf!F?pHXfpDR;hH'cW %/V"M(.g`CEgBYT!/pYo`%3AJI`ePW*SsnX]3Pu0BlL,G:Ap*.3fME45or02t3PGS@FgDD4!q %ZiubPCi(IR(-PQbK,i7rmeaf4gRfgMFf:9dX-%`.$NCV:K7b! %I2_tc'R$e'mS4NJa%@Y_883'bKu2?3eabPT7/r6Q;FPPZbhHX]JO'dMkYON>pO)?cI18pC$NCYQRM^t+npLP?-L_<)a^>3>[_.uL %Rr6Z[[IMJ")%W,+/m9r40RNnodj.r/F5lhkK,j4r'nJGX.$@fIS&o/YnEG]tK)/WO=(*=);L(#/BZ&mp %O+#BMhto0i-$IBXlfc3@LN+HSJl?13#-p@ooEi\ha!7BcPbqh_Qj$=*H/'/m=?BB6QpSL4=S'_5YT=>M)kPVq;oV@#1m+*AV!$PE %TeLWL?qm?a@Zg#A;FZW]TSeH9P[-Vm@6l5uoop6:88.-lrF2CTN8L+jlQF#'rp/Q@:3omQEniY6s(k.;Ko.EE2:lSu;A@E+:k\O8Y$% %+hu_W@mjdmJs,O,a"+-'R@rXdc`q7EGSPGT,ujok]:s^#9J0$8P75E%$I:i^P1L@<$8;i %Ml[P-iYac\&+9V8!d=9X$O%Yn3NOTG)aIXJ=TrqdZ+fh[]?$-/p>!2QbOauQ+h0j\/N2@Pl;Q"1+H+<9oIR:Y,S!!YCM`-3^S\&% %;=Zp6l-QHZot_4.NIKgPKg8E(=X1b? %2#q%PEm&ZGCpE7eGNs91=`L&NSpaVDS(pbG"C!+7:h['?B6]a+Vc`g[uX>s!`Ir,Ho_oKpJ %)@BYCN@e1Q8f!7tgLXM`VHp0Uj$(%+[fXQ7Hn!fk#K]Z':6mYIL+gok!`.HFOKOP?N9hN_`s7@$]Pqp9EuUUkop:s*O'i8?&J`iW %qGj''K]T'F*P'.TZFLo)$$b&u$WRlgAClUKO*)/V:P$:$ZYE3Ce_lU7MJP)/G][M`[URP]Um!>-88eY=9d+@*)#u;Hk;,qA?!\"T %X)?=Wa3LVhF*dD_QoQUS_lt9/S]Jje7c?E1?SM-UUT\J,f'E+J4m\Zi4-1:2k>d(&)+e91.R;1m$'l>BbZTFW,IAc7e[6\lED,ns %O6M(M"42Bt!oi-e#\l/X[p$E$O#UBX+2cq.mDpdgGN:JO/4a+_K-V`W!=!Lrjs@UomEZte:X'#\j'4KsKSJHR4^OOjJGU"E+l@*> %c3oPBZ#MH7O/QQFW%u8i^_Y:,A\%\L^f0TCn8_B@B+tLS%!#F"!9"h)s3An),H-d'K\rq(L#>R;&sam__7->^a;[)l_jGPp[`Wp# %PAW@DT'R?dCbG;2](0sJ]k#^ij`:&2*$Q8tIGJ:US0YK*g(gD136n\BE&s<(fG4J'.#b[MljF4d%!e;TYAp.o1*'UZ=b+YfKO\_k %$+VAu*6c?MgU(^]8,[O"M.>Z5L4C?(=EeXR]o982^E6r`WCbY3<;aq[pL/n8$rX%26mbEW54VASpe_,_VZW/P=$\JR6GWCK([6LJ %l,.2#9Hu(.>e6=7"!9QmOJ7BJLPDlc\`]jh1_k2YLZa?B,L_JT&H-kWN[5a(MGq_7lYRgs&b.2;Q^_$A!2D"F!6OK$2A%"JgtfSY=!16tCQW2-Eh-b%Qu=rXrXN)1F"9il78"e/:`a"%@;LIZ0HI!A@q*2+^'DL*@eCimU[>^l/<` %/aY>7No8;4X'F\TH#i0I2.Ojp9!@Q2ba:q.oq9O#o&tW\@q_\ENC]][IiX=A5apZGjF'*1CoA6"l+$t.cWINt%CMLS2Tqh*D$Oqo %=aNS;/BAZ"qh$h;cG&?>S3:HM"*$f2=T'Afd$k.]"QW6dH1Tn=PYt4tH_+)"-im%a-58#!r>kJ9H7*EnkNPALXP'f1"AHksQ5,?r %fK`eU;Eof0Gr0ZH37A-t@M82/CWZ2u9&4R<+U$B"Bg;dc2mdiPTO60b_)$2kr%Or+_<<*3=sQ`rb`@ucj!fASl#r,S+R;]5S-YGq=!aDN %$"aT/T@[Jm7j7'qbfRVlKF=5C0tJsmTSc2H]& %kJ-tF7"<#J"%,SDr!+IfaQGa)qF=[6pCV/0pVX!gmVNs`Ci5,t4FRJ1HSDm)Q>>*Hm9BmpRG6#*JC]_Sldrc!md'd%30`rYS*p;F %;`pZ3HJWt^G>/8al,lI(m9H^Y72Ych@0L_jBWfGhFH%=!`$F&F68&7N4VV+bgJ^BF*(-[3]1H %0@=lP:FPgp:h"I7WN7eVVeoNG5)J%XWNA9g-Z8MKF?f2ILcho1lFi[' %I([G.s/NgqlKrG^Mc,B`\ZQ%=@rdn@MiF?(f^l!f`N?gCJH>.eVlt$Yp%(s$=piSC'd5SR%b9],$5IdP[Q.T0ak-@#GI&GO:d)_J %C^sNN[u'1D:>7[^Hfo"1_poOpollTM^@"0eaj440-Ck%Yp%HW"^?bJDmBk^,A(r-omnqp.fDYUgj8Q[i/j`+qm7RalLX5' %A*:D%6aE$c1n2^Y:Nu[3An6rgh"7lQfL,E=8B>VoH8VH]0UA@IA9H(e,3fd*[#9HeZfdN6eRtd9Tq%@FB+g(H;rA3"q2'c',kT0W %%7W1q.3"n/e^@g@J/<&N2$ESP1PbLfr%h'_kk2L_u5@;@7]MJu:/iqhZrO_VNU*5_gZ[TO/F[`*;=AL>%2cou`;5qEUc$c6_9/HF4Sm@'Yu>$p"G %;*E.l4LTj+REK+_+kD?^=QVLHV$Z9^VO!i7<^fUNBPTtGQd+OE(_b[4irF`2Ub04P`bW[jf8Jo*i9dj1eoF;e2#X&ZHSbS,U:k]>$,eHM@sT*j>22TAnuOTX4:g)UE*`ad):QS_HCMi_Cgp4O %J/po:&L:)sAI9lEJbgWZ+M1h7LGP%]\8IPkmhu7![4-^ME=t`rjQ@A`TYkZo-)r6R%Lb?#]0kN"&uiL1

F&AmU+?@qP5RqW( %h4/K_SL3C7ip+tX#%i.J6C0mRdr8V\hrRE'7A8GoXe:"A=H^]AQKE/CQ&Mm?]a'>u0T!YdS;d?IQ5"U32*.)Yak9?Kgp7-EX,YYH %M/U?Z^I7>U&kfGI<-qG9glb$fHU$`NLHf6f)bmCd@F]\G$sV(*HiT% %.S6)tZW7K6+eXYn$$Zt5l(TZ#kVdh83mW+Gp-c>4:2R^H**a6m,T.n@h>.ViM%07-UQ#Wj;(mfC&E6fn6f0JWqT7#-$M##Zg*A]; %N2:>t@YgAtHHoi`$im"^"Bo3+$G[YNiq%hH2iE+/Y\&l]BS2e8=\^)9=phC\C:Lh-.[WG/ge*h/492[m%3qEsQspbYk]JrX7pI^? %/qMXU:i>+BcXqV;!"-R\CJ=rb*/mHWS2dc?F8L61O'+Slf*cmAI6[*1jBOrS=ergZf"T(J"C2J\^-9LImP,fV9LdcuZGSSj&"$-X %NKKB6i.$MW+&PNfXatKmq;J-n"SGS>&%<E_3N'd?$_-m'5K[WH!>^%&6^LL;P`7$-O28go'/jZ0:%hu8;.8?1*3c%Wu(Nt@;!?aEtE2^Y6_:*@PFGC]ZZ+cf7 %7+/N=%A"?f'EH\Lp5kEZ6uEgWQZL57>JAhd=l83$YI\?6rH&LLoXcP`iFb2A7"<%]U.WcUMdtmh.uQjqP+e.q[W3rKC!''rG6/<_ %O>Q4!IDn@3Y9cfk/Fuh._fh=/DZDBMGh[JJQ#"iV6?o+\N"=F!E!qo/^k&:r)31Z@F2EAc_7VDK8C3OIoPVia&==RXe\ZnKB.8,PPtT`p".s4as9Oj!5X.T%&N#p0e]uh_pRcP\,:I:Y^_FrGLbi/1 %jpHW"=A5,741Zj7FP@,MJUV=s]B>i?lE65^#q$VeV-G@imCIDB424EFTru"V_^D%R2YY&:DliOOpRo"P[pJN#h"NeES[Rg4[[Ng%OmYp(j"/RI,6/[el';mPeb4^GFX<2#Y:-f6:h2DPh6VI@AG9DYpk)>\:U^ %1Y[3p[s>tA^G4L9S_;ks_9Hf:G@l1\a3/;r)meAXRI/8%5-is=f3?dp[gp&FOnS8^1XPZ.`R%D1JcuA9,s,R@Qd0_T>Ll9qDKZWD %+l!Y'Rs(HtC`(bi7&!*i2L]j"?@[FGBl!_9bsmhBn9)c(\tAfth&`iXg[a0?@S'KE"MS6HIcbo-UWHMu64qpcTT4hZ-#7(du`=jMP,ahu\S\)c\6 %kYIM-CpfUPa(XohCM^H5lT1(NS@rF+0uIqWhK-I-ABES,44^GYhe,qNrGo<*1RkR3=FT/>2'd3QOqAQ_njnYt+>tHq=VXeHCml5^IDl&1S4ER#^SHcJ-uQs# %rAYB(<^R%;!7ot+:/IIdFc13IVK3dC?:il`@04\H/3#JkAN=0"FMp9!*`-!4KSX"c6J<&<8RM]RLNN!b%k"HVaM=7TFhVPl %jqCTK^7KXP*c"T$+;ubDs)hEHdsX=uMcnM%gY89KZh8^Y&[no=7(-CL#Gqdc`2]JmS>,"DnW1J;Jf3rmRq\)LSM/sZQt.[(G>,gU\UAG.R[6S/)<&k'pP %(j%3?_uLOl+fh'c=\HoQ2H$e6CJ!;L1d@MB?IE9"XLVI7C\m%WMIM$rp)6mRcUg`@Zc"tY6Scl:Y7_;%5@`B"g6Fr3PJZV. %i.nHfA>3m5r>F!BE^a4#'A#oL.52Ec_Z8i3M'11*6ToqOQ)c,s#XH5cC!oF)%iju3UC^59NB4K9.#b953;%!DKrff#5\QYZR:jmY %j6d;C6jBIP;Kc$%`uSKUA*_c+2!2cW_Ft3@\6kk^;8i$r:0NOd^QH>DPFc2.Wo7nVI#/h_%\G#DuhMJ..VNY`Z!)B.P%SDGV'96j\c9pOqEDGjYac<)eB.,k3Ch+Zso/%B5@FiH)#3pka,<7p=fuhc_i[(?Yb" %?n*sK,9HlF*?(7UcEK`$;-hc^22!I%I3r$dTbN3(f/o.1>:#bd7&!ihqhE,Y]G!.JH.YC#Ik.eEh,d8*do`3LiU1),,P.+^,9Cb= %_m]n3'W%>#V,kulLkq85+<;"!"lH$`3sK7#[^qOa-dn=C*WWQ!jBo2G_aR:^-,jQ;S&N'2iJr,@(=5\i*"jVePc-gXb3 %bsQa8]P6"CWqfohH)`Zm`q/63V5tcm2_.]OB$7)>L'G5qGdsi32L?$2\&=g"ga3eQAZZ>?U9\T2ncnV%<&`c*<%\"NZsaEZH9jQK %^#aQci@geBJNeSr:k'<*2H;P;@%8VPbkBoeo?8k#iR_5@pk[nBYEl*YOsN`AoauLR<]Z"SL^1f.&=gs(aYs)i61&;@FHa>&QLX3n %J6]dm=:>3;&l@@/Gq^9m[6GU]Ftj/5uWl#6PkZ3l?7-@,TL8U@LAQ%H+]p5!7"X;dTGOXYUoA*Gc8G6!B^efHKVWSdLOG<;f/d>>94=.<@VNZ&$5T^ %T#R#Z@'mc%6D5"a%'$aEN%#JIW]Z%R;]^ap:j;ju#(qcJYY*B#!!rcZ!jdjrpkhEp@V^_me>im>pnG/UYY6;Z*qUN`q_\.CKM@@s.^b6P/U>C@>#'?$). %#0&DN*2im6+dcCMGm8.hQ02W1Bg3!W!:7gU<'39s#c+GLWU.1**(To4<>fn*L57u8]$Sk3-;kYlD$`Rtmgp<@I)Qnu3f48g);^ina>R\r5I'4_HE`V,6*)S.a);r`+8<;(XM_9;K^WQ0_&@*5e=VjINW4H@<%Wlru8)?q[%7=I< %$r,5DdQYKV9QfP"NfSA#4@DmU\[`#bij>&^[TqhM31#^k^RToY7)EUP^2g0>nYhPPK\ %'r=6r51cf[JYn38&SAhU*AZb_Vq>3[HiMQ9mh8h-Z?i*D&b[/K:^FBTm(PmNl`AMDO.V<#_qZs9I\ZN!8##T@."b\sXJChj",*u9 %]CG843Q6_EOPi6,:!-7^9MoXs3m,UJVE[D`3CR'EZ;6$e=N"#>Xm_S7WU"qtc)rS:6+n]7M^n]EmUttrSD]9Z=0Dp?gA,"])%UWf %kZ>!m+o_oY0[?Ikeq<)*o5nJ$`QnO)`7"+p(^uT`_m$EKF!0^h$++qQE&&@h51X5Wp=^%DP%bd+(1?^&HeftLS8j)&nU=C;KWjZ< %iY0`*0NmJ(;2'X/a6ruHf.d'n3/nMi3`Osh6P+X'PL&nM7'C6KVF8$oa$Ih9:;\$Fj!Djp_Z6hPOMjAIoBVk1RNG:(>pba %f453AOnK*M/QFN8ndZhd7b)"86#2VB2T/Ao:5 %Z762CHgf%:`lkso'S7W"O_&L?E+0>H5?.-VV\KYhP!5a#gk--8Y;!Jk_g %p-67Jk7?8hm_pKS-obfg/)@6UQlfXa;f/MsG>4Ri/B6PY=d+b0X+YGM(7llKamL/(pL5TS&7t@4Ss0Dqc]GYPXMYFj,QQO05RU1q %Hq"=O45Ph?act>+*$LmS\/i_"]$icpheDA=LG/OHjKZgGQbbG2jnrP=$om=kn %&B!'[H&5PL$dFAkiANH-ig^ppRIoJX6fumjH6'#h5M/P1I]OeB?,,Eb.i1k>56tme&R,]npnFHp'c;Gd?thRO**scMM`N;-IYc+BACCWNRbEr8VQ^O*2i:/7?(]/UkVZ0JuSlG %fRa=H;tP?Tb/SLe?jOP5q\"4<(q$G&$4\RMEX<[GDgS.Nr4jeY+b'R$/(NRh0i^4Kd=;1R3%9aSaM0mb^Ul14j(46lk/.DI%#\m[ %$37QTKKf9^h*4EhJj`i^BNDCkJ\0Y4[=;.a@OOLo*U)Jqp37i9q?&M`0PCg1=WS-=.6)6TTIJlW"#T53RBM0ic:0m?4cj@4u*_2TSb6KRUl,^g0Y`At@kM;jDVL)#`jQ2BK#Ic$oqIoTgCUWf %4H(3[ib65BXAeXLL(P2-nsRGgMXfB;a=L'J$/\/ujjc"Fs>X.beAi'Tugbaa(Fc %9[R[g"oBS+6fGTFJ1)MhV4&&@O.uaCfB"#)a6#Fb5'rkKKA:-e6(WRhT!fC9E(dQA@q[CAq/fZ&_;iZVj6TS34@)ajDt)lQelV*N?cS[c)V(e'!S0l;>s1ZXI\i@7A!ZPJoqgqasand.G@R7NQ="u#Q>F=&ijM_%S" %[3#'1.^q;>fbZtRM1g,DH5qrUQ-gPU)%q"O(%:#?kU"/9i!6inLf+SmRkX08 %C&D(F-KjW=Y'fI%ih@0UmT8ohd7[K.h:^k"aNLS?S %FYG"&jf"g*3S0bXHXSVaptQ175bZP>/+bR6q`)+XahT4cPIk8h0ni6iZl&m*I!N+aA%oVL#i`<-:r_B0hIW&^08t,bQ#/;V>iHL? %B0ZuclVl7e@jWf!A2:*eI8X*om1^>,,B]U^XWjmnE4(0u3aQh^b_)9nb\1,+TNY1cpNu"Gq$\*)(f!3)>KH\l2O0c:%KNC/"D!tW %N%o2Xa\Xl0`rknPaAcf81`'s5F5XT9#hQZ^MrS8&X4Do^oeMhelm;2ElMMT]Qu$#$*Y#9S$]2/$0]n_R]6+Ja2K@_.ka&2D"VSSt %/O#HVXbF-"BOf13_MqJ;=Q2n1&%7-=(q)c2+/Deh'`//.T3:J%i/:,0h)f5s6[S6f#%mup?=K+-JrBs"/`NH`]p3T1QGY.t+IrP[ %Mq>dGo_Nku>"XZP9bG**ABZpk,S(d*1=u=(IR'H=P*M>43``0Op-n(*_dj(fZK>o(lJ>Ja2dTUM)9IeUP]1dE90eoUbJP$ %[7!n8KeT"CJQZY1#+&t!'6hDA4-Q=s.>$!>>dD[_[*C@mi)!f\XElLhIPb5KW(4RI%%#X"c*uNqDRDqOiI4]O]n&'bXTJiF.Pg %*D*go'Itdbc9SrLf%/n!5BY)['U:3/nEd]U?DDG!4s4[?/)uEUgX9oF0XcD3'u8QI)i1pTO?\@K84beOYKojD5kgae"m3AtX9JQY %!crkq^f?"`n16LcmjdZk0,5f/=Ps8PS!k=uc+3RkQL*/(YOU&Vktb@i&UL(=7SL3Tga&aG3c4`s<_ot('-oQHE\7D0htur=g">Sc %mP$1SLaIX'!NJl`9BGZPBHu4/!kmFAN6-JF %<#:8Je>#5jTpb4RarGj/kpd0t\8qqI1fI9H_!4g$V0_GZ<1]@&aTC5dZ=TcLH=`7D3[mn"rj12&#dD'e60r76Dj@-^]pM\8'RTSn %QkfO(&N9m"3XcYSbs6D#_T68=0742J=nZj/>-n,;@`;_Jukc; %:6HKUHDS4^h*qBrFL52^<8]didW9gTh[b(IbL-"^<-lZGM+>+m-lP/dO2ErgX&EC.aDo.CU#:LL_/tC=?l.W+J;mT,gF8q/AqY,X %<";hT3c[7F_".Q[RK>anjm;bIS6KU`#=<)B'?#b>dA2Yli:q4B"e'Kk9;/_cC-]LJ).]jc:@_et;[oaX1N751_;*73BkFA5.c(X9 %bFha>-2R=,e!]3,\S9e%h@7qAR2a@mZKeH<:;g(_l(VS6X, %3^]R'M=rP@);.sq.,`,AbuI#r1=g`HcUj&=T@6I\5J/]a-iHI1H$h0pJ'W.*or\/p7X=ErD;H:ac+Y3h!'OC`Vk^d%sUB,5.,"=_R+Dj>e#"P,M8` %AB,*7:Ls`=#s4bm4i<6j&hPTmPT`hXZRnl_hQ!]17\:\d6Qh^?SP:YMd<[/!U@P@aAu3$.#G*8U$K,qA2guk0@iWf)\G13iP9G%2 %BN-S_;<*P(i)&AoU[^TPN-UFmP+kLI]*S7Y3)%kfe>U3=.0O\%(r_HAe9,sDr'5rM_5OQk*#S:%NdT4-TFR1[WXS:s@"[qQk']&P %)!>JqOBX]N)I81[h3C$;?M(LX'I!,uH]_%2o>M^Y`*Ej3Dhp@p"3XllTo)#rEA(rR-gD0=I>k[3`I$N9Rk5?)k':7RZY#k1pARDp %ikZ+cT2fp&;Jr>$-7V@:(((Wc$jqe#@2V[$Loj2PJ,gL.:@O1!A(<8fWENMf0(I`(Y519a %dHOiB/u""m79X.eq3`7/U3$^JI`p7eM?6V/UtoO=@":o4rJ\VaA!mZ*A9_=SR@k>OD/da7GrS&_77!A<]nO%sqMND:$*G_!,Y0tWh4/Vt0*D-!c6S_"OGgD!d,QUA %>=NJq&;H6Y!%cCi*Ph.;Pn`3B9p-[9RcI(un1"_cJVC:4.5o1CYWr]oKG#$gE^0(3>:)Be8>G,gU@WGMKl0aM&"Zm\\P]&r&:LIFfW7FrSi<3+PD?B-YJ\09?`k+&%!lh39?(Cmg.8[6 %Y4*MLJsOrnl]h7cljJWN@RL*-R'RfK8Si*]4jX-^VEgX(:lk^".u@X %iE3@=BoYGnSiR_['N=igB_a0#f%;FOk$mfrPE,&u;l1c-$]!W>0Fq8\Aln)D-1lsJ/[%P>c@#u0_0k:+`bkuiDSc\ijX)0#9t=so %Br]0@B%KP#j9/n2`Jc,i[$/[Q0)#hM%K,u1]h3f?j.VNJV][eW`\=ffR-KbjMtt@qrVA,gXdic6#TSVnpsD%XMpp9+1jXZ_Y?-KN %b0W6T#J=u[4Y4.+7RWBL1$Ni);TBn&?M,n;D<>36/8Y66"&:bioqq4!/U'rb-Sg+K4)@I^/[dF?sl)iff$e_DenE"j^= %/^un+G3@em]Isd>h9-q&gk+nf"R]^Z\TB;l#&[F'h%3=8nC0!OQ*qitc_TVup[opN]XIU5/J3+Vj-*_=LiKKf`JWN%l!70)E+)G']mL'1m8H,-P6T"-B8jl,!I!hu#I3FhkiG=Udf %`d<;aTrD9.mPqJ6=bk&B]CL_tXIH;l5tO0Gd\]@]?[fRWFf5"4W58o>M=;N_VFoYIWSq9Y."s)L]:4DMhe(dX=cjTFTXOp*[[\oH %:EAF<,Lgk?C5#8TO7uaGXXE4XDnIDrPg$Y38J-nr%iCo&jT`%ICWMslP2nPjXJ98*Q%j%_!@pcb_#-bOYZN*0!t:\r_i8f-ZA.T/ %@/OuolmJmS#P,ZM^i3>/WrP>$*2o/kL-0L;+1PEH=VEt&LA<$cJAI'k^D&OpaHFadUM\V4%p'mC*X1mgPNC[e%/(WhIE6_hje*TX %2_-@m8J45s7u1R*Lu8[pC.X5X5dCG$:bYd[O%/dSgjK!rR%GFu=QA$j[g$bk$F=4;d<@.k*Hm*Dn>C^s.h%J[.Zt[C&"Kb')K9[# %ahV(B=EX-j->t8:fD:Nr@*CcOMPCuM"@Mquq.6 %^hg+.ORGJ@bG%Pn\2`nCLMg4baC&uUP1U-m%?^U3[`;+s[#jF>;<,`m=0U>HPcqe6u$CV")L8nft=]&UC@cl>8n6B2fM5Fh8$.LT^=15&X&NRh`T#99>;(-&nIE8,JSfBg*mN5i+WF-8lW4T %gAhRS,=bse;&j3pr%m=8rdQ/GVSY.dr8p;J(O/kbeW#kO\'6j[TD="Gs1kPI'd];f=^4TQ3i"'(gV&T"np)7]H4\EYT,R3prq((Q %+#GAdgL91lTYskNZgc.hT@mXD6gL@)U]!MQ3n)+&#_`Ci(:R-,pGT[G:VHOGj;m`cf]1aVdfU#@i,[;bp]\FR,HLmi %5'I+Pr;[Y6`<,7]pq^p[?XN!BYXU$A6Q?0NL3nKUQXSQFG6_pHVP(SpJUG\d,S%=i!m8Bb'lWj$(a/t9W.5*=2Y60Gm3pkpI= %1OJjkW'YM-NY6L1>9HNN"FpCLD5%^ClLFoQo3_FWc[Yo^h^g4u9Kc*`)[9=7`/gNQD`6]]NN.6!Re4R=?%o+q521#lWVKI#GL-.A %o^WD4*Bd>2ZMMl!\Y^kKa.4.$:tC_]>%WGpI1a5!XhF(4-iB.E+4:AcmFm+hWO/:Rh/DWdt#7\p3aM8 %nFoT>\bf"h97P[l7!.^Zjhf/03Ub-1Hu+KjCMK-Pq9>r@>6OKI-Nh)tEf)YgQXWgb$H)\8@&U6Z#lALuMEV!nT0>4ke)=i6DY/n[ %$VYA@V6c6uM>o%m8!-f/fh]]_q1RFg`*VDr@F^h3;kJR+HGo9Mr,hL3iei196@(2VTYtPB%"L?O5mpUbBrD94qijnIJScE$&0&[i %oNULXD?K_&BaP2.*m8`NP,'XlN.iC)piZ/!,l]QrB9Gs[EfLKl9.s*2d0pPc:_np+aY'G<9C&jr,ngW!grsaGSG6Tn:A!U!7M-/# %,+p2R9G:<9_8i-s,G+8BVU#F?M;5W]3Aik3GJ5?45Kj0FDQ_I,FJ"$BYIq. %;iE'dI!6b>8*ZmU50jV-"D8W=Uhi(!X=OX2jWU2CGU\sOI(I!*l[=/R@,qYj#@EIU#t&O]>pW->:Oh?ahb9WYcl?e@nr1:1c53cu %#guKThc>X]o4\8@H9GT`9DJ$Z=jF%OVCE=F`)fU+56#.U*;4`(BR/k_mk,uh4jSalB.Q4W9`t*R29F1>'MH%4;+Ssm1]DKi8N)A% %lYjK>[/\]u&ahGTN5k#n,(ps,nR.,i6kB!1NokJ-UneO-["XO/E$s*ua)=).3ZDg*bu<9.:BFZp!V+l&D2m"*atR%d[a6\&#+?c; %BI!77MLjHaln7?lH+LNckXUO`AlX3^+@u]bCg%L;>1q%YdjK3gll;#%O:ecU^!0RmnKEnk==D_-o9,/3f2f_]h#Z#,!-![HZ7c_$ %e`jiT-m@6IkgA7>!,AR$=$9eaNI\rA##B(pM)@KZG7DcWq69nqM]Z9+MGC(Z=#[u$.ftQhRQ*7qPfTd6,D:i_nr_@9LCad@SB'U: %jY(3n(;7:f"\&h3!B;-aP4D?k$pD"ppO7*/Z'7WZcYUM_Jh6ATJ %0"VbGG'YQZV1^_k=;=(N$2=Y9CS'8g,9*9Ind=,^_)uEK3@b6I96?9ZdolbQ$fH3_`LVsDRX6HPhi>+eYJ'/eQ#_+F]pQ`R %ZsqKLE7EiZFX"s_,F2s>R?3ITYth2FZk-MFjEtT#pCe:EA>3F1U+E-u.O$?[o`"2QNS?3%dR<'fms9#b4bd^L<]bjZuW]Rqju7!6I]pIp/$@ %H'k2RXftkOPKpJ0fu]aFN2A,A7u"1M@7Z)&+@-CmI4eum!N]k"<=Wl=#=)KjSZ-j=Ve2I2Ol^$!2QOueDkHq&E-5YglQ_L4J!L83rLNJAHQagFRN5(F>K.mVPPBRB.*&ZcRXT&$UAe=W/V)QFm>S %H$Q,+]Zr\8\oe\f^1:Ooc,det/dO6q]S/OFmA@L^Q-8p+5!>R\p1lSle>1[=%CglSce,k_2;l.iQiG=;4PGl$T`_+R;6@-rKdc:t %+"1N(%N\ED\H!@=.R'b8.qD\LMTqcBof/;3K!:&Y$',O$KdOa=EGMRbQs)ej/^]AM[uSSlQmth.>Q&*DFHX5^>2sie7li.>%Z&qn %3UOm\(=VOkO1OChh]DBE)np;ETQ`lhiENYu[hZUYe4_=$3:-!pUUf2fWTg9O2E^+iggu9OB0?tH$$l^an'Ch"TVQ7RLEL(69%&tJKG-e[8m7GucF>;$#g%%=DMlD;$m0': %U]NO>%hOp)F!:B'_C`)\PuZI6/X*kEfBtB+*=p5cAmBitD\@nWS^\pu;VQ"cFWP7Gf&DRugJd;[n`YaS;Zo#l:TI2=mXuBh_!n]) %LW=VF8QN,_q41#rk8T5*2>@BTLp@0G/\j;sD$C)m[.I#3rb*oc,LFC%W/*D9O*PsQ]LbR(7?n4BZ6MqPKPDk$18m)S#KFZ_1d:g# %#g9l\X$a4:nS/oLA3J4[0dME$%+VMK %Zo!\R0QUV6?(/0l&a9]`0jI[`j_81nkC.lh'P/eG\]e(qJs;lW<]d#lLT-7Cm0=&e^.XTh<[^IPqO'h]$g4-j0O!b+WaE:tL*=RBoqASDq^-u$H8'EYW@h?VD'`> %KRrhf&dC0\e;>Hj7P$)J`3P&OnM.'4ZCF]IOek\ZEu7$^;*M\98'`YR*Qa,\oNJEW2UXJ8SL]Z;Gg\Ike_-:A"W)6q#M7NYqNBq/ %!m-J$;rXAtaA`n$H&AfBr;iTZ>X=*5kl;i6`'T?Z2uAsekqFNi5GocFoQ&EAmR,M*QnC4QCiei7-:om+AiuZ$O\JqX]EhJYF*ps_^]Xtqq6S2=LT*3Fj"+%ZT2'(>A$Mj?Uac^SD1)9H(QBaQA"-'& %$Z5D(n3:+B4f>jt/%*7$gdS9$Ab.ViX$0E[;QpYN"ha4F7Q1J8`KW;sY&so^pk#XN.lQt$Z@61EYQ8pLXoNB0iHWsh1TX`FV6GuY %#`aQ(3S'4\Sf>/1,K$ROZDu%BG1]BY?hW<5CI,XOc;dT\G^K\qMR^o%")PR%,*=q%c`rXW*Gn:ZE4S%7SHUMA,VLOG$V4!&[J;5n %80S003g/!Z/QQEeQmfX;^'dk_u#/r:7)\!1VZA@'9'_'l02&kbb[!3Ptt0#0%)oGeHtk-QH149F@:'OTZ2V6&q@B.uCK]hM6Ga1g)t(53dR["F"p\^H?DH %dJ']:ag*=\(\G>Vn<-!\7)JVh3"37UWWUqHEd7:W[^@&lD7'1+4L)Du3cgph1=uY.d=un7c2bR@ejn?A/6Q[ZW&^i?,k(rIU4Vd% %1%[FWJ'g/;(%Moo]XBrfV4kV0$6"0EOF&L8R6h7?j:ePK6#C6AYXFc]1uZ5Ek^HJg+D2p,M+%$FaEThW75_/HW.1D+l^8$KP2:Dh %abd(0QQoAen=OsrXJYG?^NL:U4DD([@2j0'oM-^iMF;ef6It?b;C:ud@PEX>A'u%78DS7!:Y/,MqN^^OH^)@cr>bg:1K5T!JZ9$Jhu!@Ti(_hM&]RNPnJhm* %D8F(6#.KU(Z'35#u,+7mkdURY5]?2VW7MBS9'gbF,DQ^b- %0j21#I`!4T_:g$SaDl57lQ;=ts,4Ut>8b; %!cke8b5]G\"25_-%uenF;c?(MTb`@g.D)k&mF>3%nCQeL@24Z1WRWip73)3-X!B;\mS3Q;;AH]""^XVQcP]HARj$TA%Z^AnK[):! %s.l1g3s&C[-@p!`^Q``WfBXJ;2O$!pKi!S/,BR1PNqhDRJ+A3(5MI[>d %_8V$s?.`V)G!F/%Gg#sbL(/R9h)GLj1F2>E!JK_$Cka\)4K8B^.Fd9[#mS3PP0jbhJX\S\<#X9ND`5f]\Tr]+:/Ie:.e@'8N %oPP4C*j,\:4W'S(EEiDDWn2F!:V.'WmN-pEoAS"DA--D:TG^gYH0Wm@t.-OP-]:c3/09Et\X4=m>J&H:sQK/:"54OO#3u_j@!# %E3L-oYcI9,!4XG85"tQ(05:5j9o^A.,RXl[(!'RJ5mm75r0lROn#fX*fMQ3>9^'ThZX9GM_=9NbE/N.8A&\*Pb.O[F%imqm/`i>Z %,?\sMe)qT2T*WbA(U$Fq#s8e.Dg-Whd5CYKG=YV<&YRB`NoaL&s%r,qRgcV0/br+XU2k%&E1p_aL92<`M)H=m;-Fr?JSKri5.I,d %aq2K@>u/PQRZ,)&l/%')2mLH*f-OTB8TNVg)?GLtaLUg(2H$up/8U1"BdgDb8MKXFhb#hoMHkq,#1>Q5noG+SbgkiFH]BB/A>NHC %A$/pQ%m0*<#'_o410oAD`4+1t9YcerR(O_J,0iQWc.R%43[F/61'#t9MFYcNlX>]T2sIsL5"<[Bbip:*LT[GN_@TiBI=I;h8c8]@.__cL7F>g(9 %.:d=h[71(1aUsOnVl#2uB"k:d`pI7NVk_!-T$SHbX*n_P%#,ujBP6]OZ*7465pE^F8M,@qFQ!?ahmm!;LLBJL#"ZF\.W+J3hrV>@^J,>t3r4J>uAo3I5("0[hiLJ:Pq+<5-ZQBep;((uqf %B-W93)cX)c5$#C@kf8d9`ZA\a<%1G)8Dhj[TN9:g-u-aqmEE@plJ6sMhU*q\@uDmNSGYAss,fJ!g(OV(-?:qIq!7PGO7^hZGR4o! %\k6TmVp21[3G+H0VPgZJ,S8QRUgGE0!8[^]P:;A]r[i@Rk-_ar#HfBpYX5bGHti-8$o9)_lPA+:P\+\p<<]Mjqik$q%Os%i8X!F;uBeS2?J_rfi7Ab+/d@$W)DcUa.:V([EuqLD@da-8'5bW>Le;4J,N-:1r/^CJK,ARK=,;6n6=oo_nnB2cX$aK<'>VdP.&k %5sr[bKs!8eBUm@S4"O-'^k_JOiM6+7J9[K^XKWse//BQ>nnd+p_SKR2'*qnWcHMG[#qp.BNkZ8 %GcD(m0p;iQb>qUR<`N:]K1^%@@4-s>`VG&Ukm6krbD(mtVAcW`9Up6pgBGH.jE;GPB-:oE=JePu8%;<./6F:Jj\nr@(V>:D;rrJg %QWW@IZ*[u\&=`)a5\&J33#hNGft>rl[j$-VJ)8V-\F0XJ6h''0Lj!0,U^q6`H7cgi>a#-j[M"8kc-sabbiUI#;rJ'[][&*QF$@t[ %,=g-pYFK7$I-Vs]`R,Af"*j7D=H[[@2M1Fe$lAPU\tpeH>qO)<-F-lO&X!\'7-r_R=&Z;6<(m,T[l@&S%&?O0l<>&8JTjYb9+UBg %leZ7^?:6Kgndfj?;6`^P3s8`U!nLMd2.0n4r"V>kDlG[f;#cH$$/;>/i8]PE!f8@+hWFK:7%/kuf-A`EQj1-GR&YdU_\-NRn7T3B %1Bro<`r2E3`c:QsGNuk\L.t`R4Nhm'5/2H9\J`D5J)=jMBdi_oZS^.1&I;aiFktAks).K!]hN"!YVVCksj5!c6[CNEmoVDq_*&c2`V3Ki,Q&nrIN! %Tos"n'S:d.hp,MfdQA,PCeDE-[;NNg'ZO0Q\f:'FFW'AkAP;P$S7E]?;:lcth`-/gII[.N+!iPupJf!u%2V8.Z&@R-gM6.Lbi>5j %%j(cJbLSP"lSbU;ZOFpi5/rZ9NTrW!#bX_cZ.'+i0c0j@;ogr!S[XEIH%$IE",Ie,MXQ#gS$r2)"6Q:AicFNHblYKpL[22+bOaq! %-]Viu&qlrcY:>!hlWtmKonj?I.4JBt7MmnX,K[O)7m(c1AeX(9\l(L5dl1QmJ`FZ>XU%hd*]LYJFTM4njlCGqh:EpA_Gl %DS)2\8TNH"e3DFj!Kp7pj*m,^As.P'E't9PVSId+&;(sc)?EtT7QjK8n%$^!bTlgF-aRiDmREu;Gc_u:$@hL./W]hC;iX5W_:etQY@F6Df)n[l8@^:Big:` %l+WC2/Z@iDpO`Kuf%$aK/_9Jr5DR;M^4q4;geT.N?_8gt+&?tJ3\oernO_>I[9&7*M6#013(3&C/]1#^mi)Uuoe35*-%=(AVlB^QMf4q.\?)s6Sfrrq@ %D;FMsPM>\4q9sn"rE<(ElRl6(NQ%CT!^Haum3$!eDePZnWdKZ)"._6-"5PVT#i`=ZHIMd=aY0qNA[#ZeVM(p3!0%h/dt\&*'0fJD %:I"$$F?3q>XV(SHP[*TI2=tmZ:to&&A;Z-o%of=#pEktuH7;:24rni")s=KBq&GaGg\e2J-WJDAkktpG %[-'#.8W`4EYABZE6OoMa#f7$@s!(mQPB>KXMR.H>:a]L\"_T7rY^/5,9$CZ8A6p&]CUM3S7$fK%3/4P"h)[Z>.p_9bDk-bIs3(d= %>2,@a^Ufs:U\;NU/0XSEP\U\Q[K,'T3H':XM'95e@P=oIMu0TT_0NX?C%/1Wo*WVnS#+P\\2P=Xn(^lTV/7j5qmSZD)^Er?i\OWV %*&:k-m:cf>T'r59f]RY>BfPCH=<1VEl_]*b@h*!5deAgO;Jao,CYuiO2!X#j\*qI@5G%Pq3FG)6h?O;dkeSG/mdt:c1%CN=nSM!i %$7_0U!U.(Aq9q\o6A^#SL4pYJBT+7[0gMkB>3%*`qZ++L@4/N%#N@sRK=%`d;SQ6&ifl05#dSH7Xl`Q8.L%pU2jT6Te@ %3-T/g;Q01j9A;U*O0qlpWql0QY4isL\s\V<\[ZRar8LY%fdH:R\&n+-p%B[_^11N=6Ti`ga`$)d4mVYX:cmP&]k$:d\qj2=,Es2d %hf6?DHl_),CTIlHjRr4JcqLB>G#]^CX-F4Qd@PgAY5Z-#MfcqeF43Kdjg(ssXSUD5qY[eFs&&P3m@*VZ.8f8i?]H@]pKDpIC[DWjpu#<]=DZ4E4a6N7iM\>@Cc$n@q6)uRop0&la/)LTeS45\I_&(D`(h%YFr?2J;6hdq7jVse)koV_.e %q88Qf1:6?GbZNuBZQ]EmKQ'[Q;kg7LC4a$2)'=9cEcXjJ[,kCULF8XR.D$G_.lT?473U\F::Dl&;F>X(_A_*Q?gVE2QhGRh %;K>Q]H7lJ9dq>r1geNV8b042<*SGK?96T!feup$#D=;D7PpEMX53[18B:@HA9p-2d-_/dBhZZt>b^/`'DR7%H<2EXpP^)Y<[8if+ %Mf2nQl)+PAMe]Sa`q/3]hd-Bl?Nkq+l>XBeqENW.nfZWFr@1b/FY[#LKR:'Ua>*8"7^YfZF9hpD=ETGc`cXK+eA*%d@AYM2p/WN9Qfm&[^CL0K3PB=!Em?C8k4FO7]!WDu[ %]>&Z(a)=]f^iX7d@Q3BC?+Y99/"$"2kjL8&K+hU-nq8ofHXLmcUs$T#R=:ebU[![/U%\:LejC5BGCGN!V%2.T9]< %07CU8FaVf)%H'!n(Wh4]eZfrd$s8=nad4fONb-#[aMF-\g[LrddFJbXqMo2$29N]H`0V:t`pn(RT]N70Pf*X'f*W<.(*c:d>5)L) %hUL^1r,UU,`;]G[O'3pp^2/$7X/!Dd4ek0niSNECUJ6+8<]3(Gn"MtJ>jrL\09%mb]+[,?dC0ePS0=pTo[i,P3Vm-5s-]bf/t;A> %]jL'RDm&nqTRN-';a[kc`d"XmGP@H/eZQeAh.YELJ&>?S)2@#[@n!T+XKjppg1]o7lPe/.C_sKP-WT`IP[4#oe!oqDg9e"!Ok2&( %kl*cuKg:?^G+d.4bMjL:*t9-O@YcT\PPiZiR0elX5:fOX %B0H7ETC@`2?;Sj*&RalaI)KKN2@Q4+WELUd(mIuOl.&V*E6T5'VGnnH_,1;iW+tfSa6p4\OYJ!G&Y4FN]H>,Bg/o7sf^__D/oY>E %]m20,6#D?$"GGJuAU#sBCZL^NLc8G>N=$j)fa4VEQ=4EeZ/(bLESu%DEdg&a.iYOB@7+$V`kRZSL;c`OphR(cll6\I<,<&Xo?X'' %?$[5PW4JVb0bU/-oC&a@.W/RLO!A(9I+d1[$ZdVE?t"V0Lodng2cY\*:X0l;lXSL*b[6AO5^C%CmBH:>m`pRP>ilm.CkK$NWpMP9 %=WDpI@0#_H225JPmDjFp#:!]#WOq?V.Lab,,QJ(FJOVgbJ.%u2/Gh?j`>!Wa*s7+`6Poi2RT@0.^P=_)+gD/\SXTh^9[7X.&Sf=o %D$]1#8F?.Nrd$U+bQ:SFq$Ql\qmXT+O#P:'f^-i&Mf!92O-ra$-qd^a''Mq19,DE %Q3"a1<30t+o$$::MMBf!i*Z[==jqj[=C0iUZYZ[Y/)rQnJ_V>jN<_/;G,):Npg7Sr<^DZLeH<3g/& %",-c)qW*IU?i>iJ=o/IEA,MLdo:!p-Lq?IZ/.7ea4J2\dAc2n^2!/GdDI:NsD3$k/ss;h$f#4+:HOA4"g#hXV@-FVs?di]g*V? %e=1hZF@m7N/b[WC+4c8(F&/4mAm^?JK\^^oa($ug8+aPZSbL*g;KA*D]&\$1JLedPKFXGZp6gP7bQP6j=YDH.#b2s5UNsJS1M!\f3p]RdqMls?,$D3q/]C2fX %?1Yu"@O>sU0qpc5#2KYg,[\nf8XTFA,^`2S$cV;,[a*XBmtnlgcs/S[;9iL;46^3hBg5oNp$M#.+2*Zo#?Tq.Wak).W#4:2GLj)b %g3%!`!(3u;;!717mM9DBGog\oL!f7:QF#ekR4;C(K!Nanmk5-fXq2>g!lJ+Nf;(op3HR/p%UZ %jmBU:O:LW"k$"5*F0&)o4@q+*X,Z9n\+artcc&M0=4?#Q\#2(FG.#@)6[1`bl(>Y!>VIRS8&$b59&RG2,(g]JEFh5)qOmNM8fNS+ %\_m9>IN%t&"04+%m-?5Ba/;-=,;\6)O]`T$a\OZfX1[G(E7JeQjZMo^+#!+&$JRTIr4VX"QIkCVY!?fU=P5=Fof2.^bplOGL.iRT %o:WG_D6R5$Y-2@)K0'o@J,B.d.\DH3S8N"28pqTjmok1'\a=?iE<`,4q/28d3qN#IRN@,*YMo+?fDB8ArDUo8e1!0(CMG6+65`S: %DVkX'rAEq;A+7CV*4ZOkkZ)%:*!oj_d1;lRhoStg)rWik;r6#N4M1I@cBtsZZ<^ge4.a=#Mr/YDC@k>hEQ5[DN`3^^%Fga=)JIC5 %A5=t4q8MXBp)99;bZWDbeajgHh]6mX!Q=AHSl<&(lb1;6rj)3+5-?#TT,d#%IQgZNc8a,\Ietn85AHc<.=3+Q'_U2Kc`/).q"]-Z %7OQY.d.!gC9R")mq\nJne6[IW!jKJ=.Fp?kg@FtpqGQS01ld*O*#U>q-Q2FfjiUG7eq0Ht_>UgO^ %i0o]_/sFKFY$[K(S"=V++8khDIXb=&+MDi,B.Ode?=H>8&eg]?66H1Ibs?f-l;.(\1OV0JLfq4Ig?pW_<*.t>(_u'kXNi?me]eAd %(_=_u(^dRsZVaJ%mH3g+2RfcM[KboDMB`Lo>`*Tkb>PV-MPV+R^$\Ck)kru5lg0@$K1]OI\Wqe.>pQ&/RFIj!TH.&BJh"bQXJa?-UL3]9/DtW:SWt5(c5,ia,aOoJW`l&D:\!pIN_J4lm>9&5W-<@f;af;RcIW.K*AP#]![`$A$eAZnU %\Xk]-PFT@uaC2^d=HNo6k[tRiaSmo76JaX>Z`*<4>QJ)j1$uPX,3JaOl\>o*VPdafIS6A<5^XK"3P+>urOdO3AR@MSeJnLfOgZol %U)W]!L>F[`W:\#@2QA1N!e)tN^:,?P978nH(HloM7FC's)k)WYJhbgQkgp7#:-:Cl7#-*5WcL:_pJK5nh)R4XT3SRL)(?#&nbR%W %H./>#2GYQC[dln+[VlbHXe`j&f+8@:43o[YipC#uE<+gZ(Gl]W>oo&U[!!a,$lUJ[\kq]r$"n??1B5pp?]MSFdkuJk`gNP_#f(0Q %!)\JOo7_u#_t*aG%pCKI"qLqEUu$4]N9@qJrVd`sNL+foTlK;6iG;h44]gDFI?04rQ;JD]N#D#Rk6NAL=8#PaV-G/9mSso#.MYgS %\sKSGeYe[J.d3F?jdHMc+-YjmiP`k^pp4lS+&:[-N>[,rhe*j`,&QFU_s2[/fatQ!]g+T1fVMWP.3*`uo1"(1L)^P-.5ak\S9PtF@!mtDq64I"7%-hR3ekm.,F=R=4OII$n.oeV)^ %I!t'h45as`;(it-1++]p8%[`]hAn+(*!Vrm5u:X9?gFKW.He7g)E"Dl/0-2"lb+,WBbG+0DiG:"EK0MZS_p8/,g*+:P62Q*gNb.5 %EbiD]_0>/"G6-)2c].8f6^(j6WqY@Sor3E_Bki_N(u$JL[d'cC[Utq'Vkg6aN2OB)hYI>%/2d"Z$/dh&e06Pf@?aR4c(JEL+XqEp %+R`A+'_6BB2LYDn7MbMBchD<_*fkmtS>k9K4jT%,XhrB9p6/j6R<[ie.l/WP>Xh7KIYNtk8*O?^3IDNR2s5.p"k6^g+]??J2S?+@ %HoI;o('^Q+jYh7klN!!%hj3;P\P49.rVbKKnQVk*BI@LFs6S&[^V^R$+u[uslWAYq_3W5` %@(c41Hb7#\GW+e*+#9r%Zb/=BrPj&0qO.,;CSMUBS>llR;E.P!RTE_>-dGX452+]KHV3/o='tD;9[+s^?5`<0ri#6C85:Q4^,(>e %.+3G.(&(S]Gt:X)SA0l+WAC3OT8Y96XXB7uj*JD%T)!N2i$8^-/0'-&IaWtZVQXfho@1%rqZi_+QVmXOaj=bhkB'Tr40-QfFH(7# %hQ6<[2Sf2.9Bqo-;;1B\q2Uf.IV=0pa6$L!$CCKV4JoOY$[bRfCdAeEY;:oLrgeJNrmIkjSQ!cO)$\_,]>kBfs0Sf3!%CU,eD"#M %$VG],>T^LDe#EtBnG&u(5AG^BLT0rgi53t=S`.Ni8L!B?%=::%d:QR=ldcP*U'H;+O*VF-:-UI'TKWe!qo-Tq=Y?G"!AZSdZ:El0 %6;EKuQA5",IJ1uGkE@2B!jGb=UqAF(\JNdGaYpHr)/pGlS[s<2I&ZLX)'FE[P"!(i=?#3CcDmTr*8YGV,UAs!Rq!hrjNCqZ\!@Ye %0eWm5H=e9F_-FmSCK0Do5NC9(Cn?uG)"?t3Z;K)WdZ&IjGj$&2jG$bjc5FMM,MsQTPYN%X*08ddS^Ru,Pe8d4h`m %"2V;DLmf'59\U*D@dDXg$$%XV^ree.c(WCWs?diB %AJ)b.$Zr]iPY7%/_RP4_nAB6)5:B\a7LZe(p80]u2m$m?`Z;F:Ubt"Z[cDi11XM_/)d2j__!;HO3:f]lCMOZ2U3VkZ,IUY`(WX4_ %rie]A)TL.7G=:cHr^t>`+9)\R.r'&9#?!_[#l?6tuUDeRs0rJp%9l7G(0Ndc4U03I53'U=F %%')*jQhQ>^ZuR-7Aj0?e%IDZq0oLa@#StUb7T'EX=^9"r53B2$QYG=<-+1REKt?7\0)I^l:tCU#`&a-M]k,)k4M$qC"I@5;Xalt- %\&)70/edkYh94MUmRJT1M+YCmN7E,0L6oreQ`9gbGIg:0YG!Dl3_Lok9sL4T?:BBlTWAX8rM"gjdV(+hhTB7'CUjs$;1B1gO&'(O %7;[h3UQoPX6]Qq+:*<8'hWt>]r0g`t=G7T:@jD76FR9ogc@g0a>Q#:e/sEWXS"!j?hp'b)r'HnZ1IKNi_6d6:HXhWGhgDpBi!Yc1 %VZ(0%5-,/ND0[uo_pcYApf,&A!V/\%mrVsHiC,]WkrRAd*eQV]dQ_7hZ$KS285c@8hlKSfMN:5=+C*^F/'22; %)jQKV/,?lp/WB7YaRhtO"QWfk4kf#EAe)'q3*F3>$o,1%L,f(f*t5EVD$"S$.Z2:j(78(#$j]&H<1;)=q(dC`8nVfp9arB)2j<^h %V$7#S;!$.SRZ6A3`%DQ0$]>L*]T(\Y4t*:SYl];a)Kr`tACkq/G^)PE'9TCOS)_S@s-^\<'1=@MA_B"8F,<'hs8"%Pr%R %aD>u:)m++nW!MT4B=$7K\!M1o_Ce&8c,0k&6Y4E%)'R8JV1HE@P61_W'Re4e4 %rTL(!R- %H464@g[&"2?YTQ"lArmc8'(Ro05h[<^hTL-:0^r8fN1Jc\4%`7'ML/&JJ#\4*"EsmA2*G/ko-eq:.opA[Ni/qp=tKkPT#mAeP3mc %'doC@bQ>WJR0mC\WLB-+KfKL@,%=+DLPij52jLeA;N#ta]/"YG"=t/66Ko<:.`X$T.r8oN:V@!)H!q^GCiJ1OTZ_9fTb9&Fo"mHX %Y>b,3-"TBn[]Q*[4i]!pii(p`-q87Y"$Lr+&>qKl-25@3W2MR\OGRHCbidV..A7IjMc`*_P@o+7,]>4A,:d^*B9lAFP"HL=a37]& %pFc?eZJGpc"PZlN!8#,iChJPVfe6qqa4[Lq@Mure6$3/QD].Z>=+[aCZ2"'H80Pi %D$V@\222:).(]GpVsQ01cVS2`q7)/\s8$>ESQT\p#Op3dl*/,mDO(-_CQbl=";oB_E^(![$i8NHL'Z:k3O$1B_=HAsS'U2bMhT,< %7CKjDEZo`-nf$BK0O.Imf@`/g(e2f"U>U*tEcQ1^*7Lf`p=\+:mD<[^1sC#prP9`18M[TP+O*s\B?UoEhaI0=kG1RSB9@/MZ7BQD %lj?ZEoJ\-+4@#S"i-B$p(ERZ>doMmm$mJ_26a)TFAB/SnF]aPd@jTlYo=6TpJ5JeJYB0A"hJV[>'UQXSZ(F"Z<`];`#Zh]j\^2o7 %E%;UcnO`d05hlhi[@)fa4i>Mlf'lOJWQ]q`.23P8?LHmj4P-9RPs'pV`EP*Ud)1jpbulr$l,iFXWmY.bkSt?iP&)h[DVcop`mGeC %#&b.f_/*_=a&WQu^t?o;kHfWG(KRd-PJUr+rEVPA$i:E8"@RUls(+A"*"m=b,J,_9fT^7D9%]G=>;^1sIge\H]b';S9RLO90=T.5 %9BC-$OqfQK\Jr<#A+Ju=?7(_gPW8t&2os\r0bp@VdfYBX\(c@BVC*uSe#ZqUfo4,/-=p=%&-iV"N'$KbE\(dm %BG)<^jftA2OK)`]ccs2Wcj=K%]=\L",*E_I[^;tWh;eVL?48Y5taZXL.=>ZOoh07#-'*4?U %`MN_Tjd@F&82l2.1deRY*Q&3U!*f!i.X@1&aNEXQ%.18fnJ8\*[R31c9986L[bI`MA@EbTRt=ijJ$Z_i7PDTd;+94u-po5Ir]7-" %\j,UsplInJGSrcDW%CMYVMHX#9=;5K^u"u5:d$BOjhEaJZ!@7*Yog[),2WAl>k*+f0[T+j/go?.Y6Z4rL96lELd],8XlgHL2IT>i %5jLlSk=3I:ebB!,po6.q+-:X!UI/'90XG:hU\8mZj0q'[`%R^]`G1p20n=N!%q^>:.h+FBBPa!0JB4%OF$q/$^al*]E^-LeCSYlm %(=7u#8T;%J$Uf*fnga'jIS7i11k#mK(&_6k:,->]e),rn/5HXD[TC6eg@Y5J?i>]]u7cna>OK;F3as %Oim^0Cu=ZY__+?bYc7)q*1%EYbaB':.hcjUI]"E(]$H:#o@)3M%O-o8UMJ6"NF%/h#Dn;bE*+6a0^bGo5(c)%J?Y6r.'*TA0=/;D %/5]UnWI$?#^?Q56p_JmK%XHWBF=8)!fa89<^DCK+dm*2[+"SrIqCkm[:$T05EUfnJg_%o?4a&@4GLQk8PM%oj@GZn:&hn*[oB1)>UAd'+((&9+4Q$\N*%9*6i(0tPDt2#IAW*QNDtYCV %[B\X7#4r8K?ne8:3kWgd4:Oc&8)$0DKf)Ke2)F6tBt9o!JOB^k11]JX,75':L8,'U8u9-rgVLoq6OO;hMJJa$$0@+s!^[Yn1==*5N^(0nJ'lgP,)bpiU5pcGcQiYdDir2JP %[d"=@Dbn'ee/QfOl\PK&3BE\f#gHTVfr[S"AO$\,qgrIE&$1E&q)8Q,_@1k'T*$Wte!UWH=s&LdnR\Xc]]>'KVSc.tZkZ\4MeFGE %J6:=j5sC@*Z-5=k,eW,he8E(J=M;VpZJkul!n^IT\['[ENK%1j!BTLU\8V@h9RccXYH4,5GL7fnf!iK=:a\Z,djGF=i%`kb7R6E/ %Oc\]-i!["T1Lp@-.^8Yc!+\K"_H71N"*heriXl5BZ%<=a8HYsn3aVWm9qEA'jP=s2>I0c0e&uVVE;!.SAEP)`9XB"nCm4[e!J:T6,]>iFG=1%bt?YuMi.,gLW@h-DNZlmWYn/; %QpRT9VU'%3:TkETfcUl9r*A.5HiM*/:pXUsfp$"?W$7ge1WY+:bEBig+(F]l*r8-^'3sId*+smIrg-LXLAC30"I5OZBNr2MN3j'1 %.9S61HDQS^LSOX9\quXX?B^%?Zm&T4TGLeEnF.LE4FX9_A>QUhm(;bRa5o+4@^;_]Q[^T %-bmafAMk(=%.]@=XWYs"qs;Z%e"6+?@/&4C>Go4&(J'`$:b7BD``Zglq3iPgaaDZQQ5t%)Lp;XCnSWNj)1c_[.uV0WXB?BDh0XS( %,eWm997!\6qs1VHSlUH&6MAfapA+HTrL*?NN2SbZV*Hn"om36"\37s*^?LDihg+ENdMWF@pK:oms+7]?ZF>7ih^_3,W]AhUd,I1.U?'%kli4#O(?Kq>>R-p3,i7&Nf"=V@b*%[k((Me#W1em^J6iIG2Yohfmd9"`VpJT't7g45VnP %Q(;K*RlLY9,uTA#"':+^jJtnk*G,m*2%OHVFg*q(..#`b'#a87PeeC@QfN4&]j]W&M-F8"GQ_Da:T$R0mb\Pe+OE_"If3H'--VYP %!4$-O`tT_'Y]uF+i$q$,E9]_"gl6XOdLWIlO2ip)(9?iiKLr7GLMM/;4;=)8ZqR=:6&SipA(K@1>aJIML)8'#8/RF#0\?ptC2q)5 %P05-E]a(dPGAn0CJ;e*E'+S&5Hl7h1qFRuJ8t^S=dbTqGZL\6d+l5-!aWtq_Sh1Hh)3^Nb^(O:_X]_bVF"S&HLg_b7?S1,6\mHTl %SM6P+O"W,fQT!DnY6Sbm"CeE!A#LfYb7:"$BKN_1b`/; %<](U%=7\dQiT&_%I2FEkre*';AW\]*bE6(R1[-0cjS2l^%*'Cu9RqL!VriL?lEV+ch7G)I0QnecBUu,5T*Df*A2n/0(,("pu/ouh5=oYNgZ>npn0q7R0Jhr.1$Y"Y*2OknhCiWcNZTg4(hbG/Xp0`(Am[]memG7@XOjdf3sbM?19Nf %R=K9*nsfg'Cd:1rG7PXu:$7@=QEbck)g3q.*UuXIX]5_\N\A0T+6:(7fGL3!grq+fA^^1Ts4I=5*5>KK/OYZG7k+ %^_=1KqeMC3f;_/=>L:UsU#r)9O7&'`0j@W3*.Pk9o#`pW49a?Ma>6>NIr\HlZ+1?jqb-J`c4D1$"E4UQ[Sh_P1)(3P`W\/F`M5cn.CqVqe*Ym*n %h'W3o7:9=Bb5:nKReWION?-ToI#aR]GE<565\"oZ+:$Y%J1)FGoYC9V-'!##P\js`=RfaH)IUA6>f,&[Q?*`jUA9cm'6IihM:A)F %b3-Rqo@t:fb^nK>73Cu18oo\5oW%1%QaX^/\i8Z(!$Z$1;nR7iOn %-u8A-'!cb"Gup`uNVa8J]i;bprjCU+:O[V2=_DYKcgprdJ4oKF5[+(@^4!u)SaIkK[@HXq(E(3bH-F.LNSZ)W_e5iObnZ7LIZjMB %Z\+?iZ'kU#^%0MD-t]+5>ku*\&+sW5ba`9)?13,3[sa]fZ;XSsD`[:!XMF:B^h,kfn-\/erma5C!j()O2,)dh+<7(@WG/g=Ud&q: %=ODrF1g(2Yapq"!"j_Nu+'-@aGSdQQkA#+E_Bb[&\4a,\-mc?Mpe8*6eF[3T-[>C.QOCNL\]PN2Z@!.D$cuccr:+/HW %)R>-K$,]%<'*[;g,2+ULSWGT]6"'%"#&VsQDICd$GeCN5a;Z1>6rEciCU(UYat'[+rA/iGcpp?W7?CH'F,j"JAV#C72K]r1#W\ %^:s>Q.K!,QPC7qqJ?mEk%RCe\Fn7X`J+dLp0'!>E=Qp)t)DB7A`R@bG&c=sg@!]PO3=9_CZS38#pl1`kddF]ENP+(3j$i%rK2-nt %Rs)+/n>(tYiA@,BK&4D]GIt,AH]dHX?.!Lki.E"U\3TBL\$.d,T!E.!b"qL+E$$JpeM;E>Is'LS!_R+i*QF_5BTiMIWfRo[=D/\PN!W@A#A%X\6+T.jL(MsK;KC[h!WH5bq[H$.e(.1HWb@UXB:U"!'h1Bt`q %FJrF+!;BYC<*$c^_QuA>m-2KnmVkrY3`+lc&D=)-ISQe0>6IZ4;R>E[J#/HGQ5jC:Hb:>dWneTYNq;_28''AjMQNEu%a//F,](b$ %r6QEI-HNh7CN?V=I#6\B[^Z^$he3,L4iHfr/qpI?q2<\jEU85i@C^S#M?VE)m62(m*FTiq17l\80@THDg`Jt=SGObB>ZgP,/c2pq %q%mF^Kf-b.lo<:-(d3$#r@B.FUf:./n)g9!&g&+H7Rp<=isW1Sl0!c;h3^S4nQL*grFou;SAb\Z@M,CGP]=)LJk5OM.e[j'6:Bep %k\MMnIP"(#2rEce_-iR#HPMWCjR3cZ%m4@.h[_)LEAsD?!]cGJ%X)A&G<:UOD/5FGkL/#1QM]*LO8p0)4_pL-BqAZS;5P_AhNRMm %G>F'9fNPu,p+pQ$,h\P#eN>+Sr\kb5p+*0p-T^)=Y)02Qdi_=t4)M$Nk^T^6*D %8*8`\:WXb8iJ>c[$BdLt#'fM&h6EIlGe]k0+.V#EK?*Q%VA_!g0'UhV#m9C"^ODGr]62)C2-Z^X/U(4;;O4]]uqo*O6/>Q\Qg16[jW"'`S3W-Y825o>^PKfuQ %@dS&GR>%d[#$pUqcbiCi%S'WA"uB_3K-%/V_oH;kbe1pR4;=;Og\JaL,F7&B#SIf'MrtP3HCiMebI3k2`J,84p'l2_qph;mV`O$a %P$-Ck@0.'o54ue2BoF9AXKV6diO2B#j#)0l0?p'L\fp-BTnkualZu5OfRD%k[;RajCk%dGOHc5KV8Baqb@Iju_cLc#o&7pV?Nke3 %P@`p/.ZmFa4D"_J%)b_L0uYZKV1/:KhTkag>0ChX()/O%;jmR4\6X'k6)V8K):+h]Qe^#$f#TVSc^D)Q/WUHGesVp\/$!o1o'@u2 %!nHo1T4[&;j%(F]LJst*@18OmAN$<3@4$NLr(K8ne3)1S*S.a^^R>14i.&:t?pWP,2k?E^SCH:&/f[Y`=ki9%rQ:$d[S/K8#\MZJ %S=ZF7>NN<8ZBIW`fHB:*/1r!K^D)k5:L1rj)>U[LM92kXK;t %5=hAUQ-6FTE24ED!T=$^Zg_BP^r61;mR$:sqIY>YYim9Q0s4^XXNrl4FEt=XnmSLCN:*iYUrW2X[E>G%mMgL8'l9p/rV_S`4VKT\ %cPn\+'4.3qfM)9D0Lcg5Mr%-n@&%ior:B0kWu>LIq!&ALAddg![(RTM.h,We6jh0SaDr,fBe;hJ9HH@=-/n.)eWqp,cjb#@;OC,,oD?"SnWLC?+/k]E//*.e\Mj8X$>^[(9b %s(p#F/&D5(6Z6&p"C0"')gA=,2a2&r0d_>4+-);jiX<_@5L+b.[Qfd6#a]1;\kp(E*`i6`"tUA>`9%'kB+6%qXkH57_sW!9G;Qo/ %n['H7r&_Kg]e%N0]k^ZqU&+(+bLqUG#kYU3B8pGkOP78)_Ls/Q^D@LK%m.Ru/V]$%s.X7`](g7cZVE?$Ek8K,8(<38"LuhH:F7>o %M2RoKhO_]K9VJ^ciaq7Zq61+%CG.9?CCO]5'=ZE?[Ds00Y-l;q,N3=bKk):%(suV*F4AV&b(U;kTa!(7kjlrgrJ6TE1&C;Oj7Z,M\"tMn3-i40t_#8>n@RahY(*n!oCJ4n0>5G7O\I^c\-IoF5c3+ZP*[4BQgC=8[]XU"I<8=*6bcm7CLch?-FW.`DoCdELHKF3<.A\B:mHTiKdS"s.i]#)nJ'qR$inTX,UJZODU@=hkV=aqWF/R42He %ai('b?'l]1Oe$o&:))jY?,[@sDF\3XQ7=4AS\Mm')_]P4Zo:``WK%,rt9ik3&a[W#dDl2]eQp+GTD?/0J`+P;P4_?-('[;'\t(Y1.DW:_%CYJZ^I6uN"dULPhb\'Fq46_uA1 %Hh7MSfKdWn&Dhpl?FfWoDWj>f13XtBK@k'?B<11Gl4nNB"!6.ESM^uL[gV'?(TfE#T]rpH679kFZtYMMa;Zg6,+3Rm](iV6-(*'LEA6GR$+_e3kT5o)TS'7=A82qXmki<(757VcY3 %[;f'GlF^/84P%A>e*O@q].9V09NE%VCnJl8kKIOmXLAP(0n_CP9un0QMsV81/n%j7hR'kok86R" %<*W\eVG/4e,,ncg4D>4A-n+JFkm.fUET?@)?e3GQ(g&fS/Yop83+s8_IY3R*T1h(elEN^"9%O1l\-F-%9\*:5SN`*8_#'gS8Kg@s %Y_oq5=1;,qU%R2#p>sq$*Bl)2nEG#MfaYq?YV]E5S7Q3:/^ihrd60MkU%s4`-BWidSd\"*$Pd]&os)b(QUOS"/Y@f2jpMb#E9#U1Oi]I\76sd %LdV&/-R/&*5f%Nj]mc>pD)Q5r9GY0d#OF5FI3nB.5cb3*5O-9R4P]\6)_mo:8,6858p%PCJ+ %NK^.5SJ?Y`?9,J0,1+T;b]l%d-#Sa2UXdR=gl_mEi\:Yl-03h"WE$Ag1lrgdT"Hd]P,8WY=FAOFdC`b[n)^\%@^RiL[__VNiD^V^ %(@XE"dqiLJ=HR.NRsAGJQVG^lCdoY(M##qR7Q:Ajk(O">B)`pAAf5Ys[:>bk57P4)(bt3FZtVA'8Gd,,PRN@Y65'8b>XI%mV:k#>#&o_5.+'PT#&KupYonq[L;qSLkIgZd7Xp@KlcBn3@^.'<9-qfnDoeF/!di'gTq7bl'ZZ`as5^oPga?"@9%^M3]\"86Y=f4A!!+^ls?I6Y*jU, %j])&(jR0u['5uj6>jd-K8653j;oUVSAl/TWU@h4e(:!q,nWtE:nroHBDP^i\a=4dqLVA;-IkYU8-h*TK>)e4D`;g7auL-eMJ,l8IVd+NN+jX9A#F9"F[)]c=eHGm#+gDM5@BZ0-^*-7BY %@&5%TDRgQ*7=$AF,7fKSMC^LuhYLbhl,VEFrK$!g4jBW>OJB>T'%4+Or5r&R%b._ZPQSj&,L9E_eF\ %.9BFncUSOg7p-k:KA1l_j9gQS/RLN]5Pq\Y8Qk-rfZn73KtjOl_,;(MkHgI_9&&3>"7RtSJ(+"Y(E8_m!H#`frA&&VFdp_">lno4 %S`DM!$:WqSS)K\=WYFaBi1mZ(jSI\g$L+LqFXucIL'1:;gi43;lL#a:+[+EW*q%_@frrfuiC^3A-?>_cL"1769`GD1tX/'DUj %_strYpB0rL42g@lmN,a6_K_&A_]56\.c7^_\O_6R&T+0nmR@`aRD5@s:6\W?Hj>bCaT"L/O-!@W]JPZTfH@u[F;NfY0DQC*b&iX) %;&.2^/FCQ=2YIlboW&QDf<*.$jH:K(T]RY8H*+2(O5KaN(4hRJ[<^p\9`-6=ZnM8=A$+S;OUK5%H`YcAG&*#t0.AGeTS4'%OO^YE %#(OALPd.+TDneUTdipoE^7BZD-C07U69V&C&.Zs7>fpHpjs2=Y]BA..G`8;5b\e9Wr\u.&A:ZVo2V1i7b)jMi[EYi%]+,dFDMTGN %0YOETM]$QB!_TTa=l+J/WZ;IT%>;;g<52R!fVT?RhjBsFlqmp4o-Hn:37%AX\RTH-[S %H)d%2i9ZKV%DIB;LK58DGa9Kj'UE\[$!O1SP_Ir,#BP)--sKb(>TNR)>pjOpHn9=7>&]V#&1&dI-_7*h`O1o^(L=![p;sthV-?JT_+3V]3CL%Km[.*Xb-`0BB/X8Al65bLV"63] %LFi96^"ap$qK;JK$1AZHLl[CSb@Ig9N48`JlFes]KJ.-aHT3;PjQ]%HAi8AD$gHi[*r&lO_DQVU2&9XXEHYnIaC8[lD %=J8/Q:6P;pFA_3^9FeQ*U[W78k7j0MbrUH.cW16,@(j/"8>4t]MFH`&$a-%[;O!4pRKH$Kj'`j&b#DZkb$9=V`Q`f2i761cTslIA %:\);s+g!ms<)Jgkn]Ag[8I\lJS;mVh\)^Fi"e>"S@uVtUG"9+`?cr^(9ZJJfPk_=+$tVTfL;Pa-TgF\8mXitO`3?$7N5W'jjA4d[-&R\\kIu, %*%Q*RJ)\k37>k,"K6-O6i6NF!QFA/b&1WW:mik]LUO(!`SjI!+CV5.GjXE2iOU0t-oMANWh>iM8XHQ^OBNX8jd6D$s>b=Y`U@'!pEF(kT\*W(5aq]=L_,pS9EOED1[4jT#?Sfmp)j=b?i@m7rq5/uq:"7$fAHW%+9)/`s78VMcTbRs['oP?q"\:q %T7?]m^]48Ir;=n@qQKqabEm_VqX=IMTDfVPremEKVoP#$bN")5CXp2^A\Bi7bA&d")Z\WlX(<")@3hlM.H>cdBDIq]]&d-W9Td:$ %8H(11%bmpjW"^G'JrG@K@6b\h#2BZ@@cbhh3gi+caX?]=#Q1Dfk[4;u*KH1,[s\pYrV]`65S(#nju3S795i6'<]&m$H00,rh![\/ %%`FDI7]%(8g/ouKL+qBA6.oO\fXK(3E4(k=;Oq$*l)=&V,.C',V;5@]W\UMu18EiiDk3.244?fI`LC-K@6B5B7V %UU.SOBiH,;5bUP-TZMLeET-F[lO[:#**[Pe4*m!PKJ0\$jY&I6^4b`98u*7"8hXg5UCAg`48=(e0aef7!3[R43mG4?rCkRlQGMa> %q3Dj(D%Dod/;0Cr(R]nJ1?<6F-dALRRL8PD_$3R86DZahK$DGum:q %+01]FS,qeKkG#;(aR?1KkM"e3\=.\?h"$'2@[(Rr1cL[Mau%?T.kr"N/nF#h'dq:I+es0V@WFGq[*-J;NVi8Ck%8euhmT2VA2N[U]>LehA^u:h-:_Mi58.]$dS6"MN."I %Ne^W7&/+G.-6De]51JMcjlsWVT/0_Nm]/T`)lt.o8T]K-)BR]0j<.5gM51a*%21*o;ZjNKb@T;\-C*5;H.so*!E;5E4(3F4-[^)X %$FIErjtVh?NQE/sOd]@2eUriuVHn,Am\Y.8/2rqK$SAg4KAYrF<*GV# %VD9!p#:*!e;]lGP#4n'6I1n4_7mji0YHg=D$.[6&#dil'5?%??i`#d?=R:Y_8?q!<)YO#`L)i4r+0H3USa-qK?msR:cLF$?88OS.-!6k7&AU60>:0A2DBg!qgApBH:iRaU$QjZ6s#6(_QYoWINi,G+ZdC!q.9=O7AV%q*mo0@#HHelGG5a*^c$/h:@@)3M_IN<8Yc)_N!N!b %D+bDN-1G6'rh[!o*@41fFPZKCa8c+o:ZF)C:]?:5>Sb?4QZ6ti5h)WKcdH?H_96o>jTi*dp$_7s9?Lh&)g>mC6%=<,Op$gUFk<7> %`>(N!1Yef4%M/hNqcPli.hpAn1/),>O2rg/\1mf>gKj81_i,G0&U\H.].WHoqF#@oHXMa$E_n_?9?D5('FV6PoJ_YqXTk-k('pbT %28u)3mf%jpN.)N/AS4DU')L'd)K*g,+%]NT_?0SLq78Hr>G7.fVmq=b8Ua<<81\KT26Z+f^hcG'W3?E7kS:e0OP_]<3qWXO'Cjn3IRCPI+c %J1K9uX_c4%r/0Ud]:Qc^l9Ik\Abnh6Q#kd5!o]/.2Wa>Ja&"8*(D@YrQ*MI)@CmXN#<4d#kq(?JU,1C\-!a'kQuPkM3*E+PFGi?& %7')$t4qlW*,dV`$mP0hU^=KTJ-tEj)pM(lD&h61J!lTZRm_`t_-(J`^cE7A9^>)](S`25N]GX=['_f0Q#c,WP1l>5DBpC6CPp19X %?"]"leV/TnV+/(#@)\[W5)NMKXQ@O"8=2s<.N9@I2RshnKo$[>)))PsNu%ImoIkjlVpY$R %,uuVhj1\DBYfr-R>I_Xr5!(9Y3cN2J$t%bJ\/C]G8S9P'/O3PN8E*)KSgU5mWt/7bhM%4[]C"H-[B!!AFV;GTJ)AgK37J;DhIJ9k4!)L7SparX&bK-*"XJL8';JW>hYqE/q!S\&6?HB]Up8Iot8'tP7M&RI\h.r %LYYR9%-9;O]!^USp*Z'P3(nejGD,.G':Me."G\0(nU1YLU-M[W#sESC,SrPF&@:t'Ssfp&OR6!L^n7WS+:QLu>&mVLek%)o&-dE5D,/r"nT$p6+g0i<93Clm_L)`d?&&056h.S<"Wln+#bO;>+2!M,pMt]O[[J4YY=P-KaQ/*8 %KBC&;IQ?Gq.*V`V\'qOrT"j=##3eQhS`r@cY@6Enl.tcK^oil70CbVbapiae?PMg@YZ"LHF#$Bj24>d`1Ok%N8d$_h^\_-fE;R8 %a:$AZo@OlMqu-H*&bWaUqW0*>P>>-4KJn20h7R9cpuF35o!=e+ZM8$=5C_>RkOV"aZ'rWgs58=LpWb>/5`\/^>:j[%$(dVL3b\^B %2M'cMX2I(m3R_cWWr$6g>GR$MoUYRKSp'S'6j?UlY,LThK_-m.Xkp+%TP.E@YJ0S6C/F;/&bE.aW(dm1B?Uop5# %M[bsf/Ni4P$OS$-RJ.OMoXf,CL-9.kZ7/8>lM]OqL-9T(6JJ=n7NO*9p5/:s:)9fAit&q`n@]/I+sDgEK'nb*$Jf_U\#3Y9&W[X_XHXTl %\HZ9*'6og1f_gKqM:khDo.lRWNVk1'gpl?l#&*]s8FmN^daX@$%6+6^%-_VFe9q:+IPe5:S(c#*0>fD/`L5%>)>+Pb1$Hi+ %Pc-:W["=4]Lr+H@>4&u+iX==t7'3V)Ke_3E:Lb@aXF7Fi7iB,k90Bc]XGG4NO+7eKhAkA1_Akm@l,(Bc+c$Y?3eF2:H_)2S-V8U= %4CaA78;_W56]'28EX\>!W@o+!#o(;PFs1$W?Aq_VV`slW5$$K %''3obfYa?F."H_F1!Y7C(hT+:OYI-"f%!`h0CP6i&NBimj3UOH;b'4KBU"0BQ^%gUq8ll;>3GO^"N4JtYe3CtAKHJB %:W;q3oJ9[OlKcb/Ut[>6 %cbFkDYm]Z_hYmu\ZoODSDEn1>U;rM+j-i=&4UANOiLM,aZ.h:krI)\\nru8V/k53/7Zec,+X8$&5u@i-iXI)=YdBsSq_M'$3u=#3mB.2I %Zc`1BRn`'ep0H^V)kC5aAYe6$SF0a9*iS':17#iQ1.'@=&eTnts1bUiR*8qj*+DdCYc,QU629RL'q9SseUula&s@YH#uEXkE!VYf %W92'_H19:K8oD60F-@_*;[;b,K:=S+j9*dUq?ZIDU1!"-U''3`0X>!6"aSrAhdH%j7+#E`O=kDUAd:g5]dsK`dQFF_P:"s+]leTu %C)oLS2*;M8*.`gkWab2!bEK:VZZ472Fm&*K0IA>M\or3U`p6b4<,4%k/o5>HP^#/!mH;Ogf,ZG[N:-?/ApL+iFfeWm %3D@qK1"sII:%&.dH]e3#)ZgDf5&"qfLL!ONcqu(b"BQ7pY4Y%8Tu3mC1hbZ5>#>0\i^.[rT`[a$5,u[=qJO?r*CH.uJh#.p%0>BW %Ee$]M=>rlik874=-TpNK/8C4P>+tP03n;kt$'*B_JdShD^m_r?U>h+9C0WQP'82(oB2tCs>8NP?HgN#kBYffu)L+-DA$gCW2tK;; %!cs#kR">HQp;9?HS%]$^dcOcbmS6:9R3/Uq+>#@6Werp[Tp-MSC(I3KD5?( %>="bH31#Hf6JQ7s=LQ`Ek6KHhiU9nuN(7;D=-->=4IniagZcO1>6R<@Q97CP`QOZEn>=m=H9)d7E:C@0o,MaAW$mTUh(8n$-*a0] %lTDpHBm\I[O4k`&.HVCmd9@oDTNsRT'G3KDaJk&ASFP`L)uZX2d%4]eY\]\Q.(H7I^.On0QS.)q"]>E5 %_V/Rt&/I"!e_!t8#9ZDTZ((kAaQd7/^'?KH7opr`hd0NOaJJ"DT^<];RlS=((F5ImIGW?tn(ZA#P>2Ih6fIeP0+EmeKHXa/MO,[# %T>mT=?*O6j:791grOuROYdX%1PKe$J+\rGi7<'GbU`qKH+7AB2Ah8^?bg[1n %0[LTTBE#U[TaUF7pSp))e0n7-hfn!PM80tMdf@-T9M1ok`et-ME6?GfW05*\"u2ZYjlDcPLE7D/!YU64#60/B-3*f$G"%#4,0:jS %TVb7p;k@0)%T-'jP+\/.;\t<'5'mm*&)7%&K0Ngbfk![+:QM=5)0UFe*D0b2f %HG&^_l.SeRlC.-+\8G*MI'1hKfV4gg?8G*+*.3">M.f^G+P(:4iouBskhCJG;2HOhBd6[R.WH#[2u<"ej@.9bI8pWbm3/":gHj&6 %ku!i!^nC2%NlCe_dY#lN"V-p*_iLQEO9-M?U[m[(&C&J;Y$QrYtUXo-7WI9ZIYY5eMc( %['Q8@c<3JS]s>6W/j;$[PH^N\&Tp1XVIjf\8m&:n''KA0lVJFXZ-O%fMIpFZkh$Z#EVBRGd`?B1Ga6D]15G/ASN":MM1R0n*&%V:mS1)8*B %>oA-u?$A@jCYuUJNo\4W_Q]Nff8r%rd\T!#Kn11_7lFcrmtFQ>$<%.2RiER4ECNDa,u\0Pb=hIZnekpV[G[C?nhWZ6Gt&O,QUd,+ %DY0n1l<./Y(>+n^\pb+Y$Ia*tLlU[VNtH_:lS:-\T@lI?"'K&3#b@:c6E\T-4h(_kNe,B$]Z!_eih-L03Vhm&hu3J!2?8>_=i]u; %0.Sg`.rt3-bu]b2c<.Wp7M^UmI+R%$$rT3A`&dQtcD.qgmpFqJ:=M7,[NAUY58HcF*[8Y6f>FDGe6#a.:GTckTlRI,9-5u@_bC8B %folDH\Z$nVfR?5pW&b%6LZ/u(Pq#R]'IZ^=4%,a@n/`KRJMS!Ad(9cmX643;`8Y3+0!NcGb!a+BZj_ZL0K.qL()c["5OI,B].3l] %[2n5LQM'#+Pd:WpZA;b5V3oI6&.^]BqFRTPYmhj%*cZLPj_$GIr9 %?_RlLR4tOX?CCiS_XjT>k1"?c]&gfmJHa>"B15$$4Xk'mPl-+o;QN!r>/+uj2=%>I]AsOlR-$F+)\ %*R*QfR:1b#lK@mLk]&cN=hOS'X4B_&\DAZ)i1Q[ONI't@[C$1*@,-s9A"mH%Ur=kNT52l]-SQ@qbK3;>5*OJVa)g!'%Z"a %1^qMUX2(2!1VTurLs=+DhG2d!^5ijBrc]CX*.q!2`H8*7P7Z3:3[:Ea+\YHRX@1UnEn!OH(YIsq?4PmIERV79?(_5X@p9`&*3X*C %SW^n&9b#+/"m`acn,#o-\"VZ1RP;e$f+@9C(d&F)\4)?KI^sB@9n)RL.-$XpO6ihJcOkK(e>*c$0&FI_'-L_;![CDk3S`1\_C=.7 %$Ud11l1F^G#?h;(rk+9DfG!e^>^@cU>%`%QPl!Pq?qb(8d\ofe3.nTZ/%A4$gmK4M%C5RVj&YlZX48?@hrhmVA.PW0Th!/& %?e?TS:PgOl.QrHhn'jXd`EZ.q:uG"9Hm].No!I?D=H(;$0S[RX!H+Y+'HPX;_Tb8W>Nr?1X]uB>f_ZjX#I;C):&Md=k2^Tm-Wd*+1:Q;0Fq#h&+Z<,TX\@44qp-i3=8jLNf62YDT0PfV1b#P5+PUK*l[:9Pp2$!"q %/QhE.I8249f+eI/UgIX:V-S=_3@=;!.Rc;Yo_NmE7@XtQ/t#?k-O %8lQ@SYUInmYINk@WM3Z$;aA>R8KB@a6XD750=sZ!d_6oSa9rkpaA0R+YQNNqfsQsEZD0s,fda"C/Bt\DJ-nYIU9(2s#U#'u %W0IAf#cI#Fj,3>LVa,tpA";?eFM0K'q>4^c0@)u[_?NaAD)l,#%#'Y8b2FZY7buUC.Kdr:B?&ot"t@UrH$7Gu&)Gh(%rB`-6S %51]LF**)"L!6&BtWZ>Z@P".)V^U+omN13G*EF>k)8G"#7^hk'H10k@Yp-u;J[cF0j;G;']/Z4QtOs;_i\dJ.5"'jkpfAKet*4%HN %RBt:nTos8ToP%n"[a\L8@LlP:(MLsjYMDKDW\^sQYXFmi"_N$8UW1:#A6lnRK;SP793c50 %_a`K.?9sWFeta3R02.!N+ld2ng-a-9gOCoO!EB/&nlfsA_,?Qp_`*XCQ2.MElt'1pkk*NQ2EFjo[g]I6#/l]gjVA&Q4%k6;/%7rM %%:=s_VuD%u/p*1&eg4NmW'XiaP)u(MGq#'Uabg5$*oIZOa!q=?6AAe5lD.7Mp$'"gec9s1V`Y.,,qp,5/&B"?5jTgs='V@k]QLeI %V>.JS3k?u-&I_"^ZgK8-m&*IL)/[SFVOqiIK8`9Hq0IgT-&H&$`NOF?-.e@h:YFOQ\mBmSk9[*2**BGW %9I;*/D<'0oA0hg#+;UaTR/%=hB16Q1o4tVF_A(_F$o'-taoRU%c2-NL&qB:NXd[%J06d0?\55Zd;YK$,$WP_9dq!A21L!l.jnoET %RpNsMYVM0?gC"$'7_k+^Gr(@.j[^E=NQ<#'4PEA&XYuO3F+>EJajN9@<5#T-g6])[VK3D1ePs8_,\NDS[23]1cSP`(&$*dlOO)4p %@TN:/9gMYo($1ntB".%1]%W/$e($]AaDFLIng`^(C](\<@6eL5>P68e+!qYp+k-uAa#r0Q,KU-nlG9.0_RJ@W.6c:[-F+f6@UX3j %GB]g'=U^RjU!e^4M(C.ic+!MA>eB_tbHW7%ejI,\g.?Y>Iu-2X,EQl2ifjR-ZQbU`]nq.\(8_"'BLZ3a!jp4d'-$CZ,n.'[WZ[eQ)gOeO5 %>oQ_M8c^_I'/N4@asRnq9\+#W6/nqc-Xn7!8]0%A5;]6.JEg$(;2&"pS^K%89UMH;3_b5Vl2js'A;R %Ls`;o8kYWC(1u-X.oLFi`>cdcHDh/']*0JPaXKmMWr>_:F$f9>*R!32SG'7j9pbLSl'*[_VcUH.G6d2K#`,&0QIPtKDd>iX4$nkC %Ls`Vj*+3YNRb#`#7Mh65'`C'nku:97k"CD+cSQK")his>>5jVmRZanV7rtRG2n,Y^&7uOYTRjUS#Yuai#"rMk$)k,k%$D&qGJi;<8D%#mK7A\K2;3qHJ>Z]E*q_;p7'R/(>D<^8b)cdGDBASrMQUEf#r\XHVS.Tj %%!\=h8prKUg-G%&X\q&rF5Mj>WB)?masP'5>p\mWj+lr6&hsghX]kK?nOiT_=#)pY7Ebk"mKPWWMjtB@pc(*?&(/Pa!fmbUMb+`)Gr$qBVtP47X&S %nji&fRrZ_$a8kAc8m*UJ\YE%U$6odc@;pRP-rFUKk*1_s%4i.^lQ'_!OcBpdk&Z_#C0-1Z-Y)K*A.KI7iu>s#8.=mYJ+ZH7Y]D&(=L+qk?Uh>LmqS?un/k8)aEW,C-qF&b):;CKQA;+;\kB.GAs6LTQ1\.7MqHtP:rbQoa&F!W/@g*5f$&PFH*rN76*jbfccKc$p6`K %qJM[K6LNTKo,e4&NZl2nWX&k\SfQJZal5fW=;JYX.BK=6AF.oo/DGD5^@m.-S(=o-h(&2]r_oT?/F!- %l.'/;nC.S6M1(lFO-K4DjSRmOe5dV_oR,!NpW6>'p6e3u"]4E*Y]AJXWQ'\OBT_\Uh[@,d:1A4#ZRDGWOe.G3mIL?>:C2j(^slc+ %Mlb>HV69ABMCucNR4.AeRM#A@TPO#d?'U1enn[54:Y'$b:dfW%bf.f;3W%XH>1WY^X4">XXT%fsIr!3:o/p %o!KtuF[p;g.aj778J(mbNY!_YQH?CF>.&Ap=e[kl1;W2-I2-R]ATtI:QrjVR`6EI,VEu-;GX)L=92-$Co@NG:Z[>tlBbpk2\c6b!B`*(3bJ_hg+Fc8!_WEA!MF+i/X''3KAG-&s0]CO5&mtAYd3FfVrU/#L(.@@J`Jc[2@(LUQ'1q1l]3]Z2&!(+U_ %WX^0*X_C"4\W\fp?p4%me$ %M/ri<0EkMtC+m-k[3?Pep3Jf/Vg![0lDT(ES@"R3n)h3q_!FR0+OHhu:)_MFHrc:tBs;W_VW02-7Q<=ffcRR+IA&sa-G,n[2XsmCVl)D53oUL!XefbG(.lRX>NGBYWS3.Eqcc-9Q %Jj)HYo6^VC[^`8NEtnO@,d57`_1/+.BXs;AX[&A'2O:hi:(^l3'QUNUN'8I5GR$o_7(#m)m+f2?)J%"?"dCql_;Q!ZJ@ %*B(cuJ'897%J$knM]`@Y32>'%*DA5B:_bUko-UVh#"p)m/LkfhOA*B'Q9j;:,V#:\X6,B^j@ho)YdrEKnMriSoh7kTe77Sf]S`dc %&@-+m^2Vq0AZG8/Rq,eYTs>^JVF04`spS;6PU+#<'rAEZ%R*'i/!hY/Fc3.$2Q8e=_(!)+A.^hbKcB.c5Nok',.dc>aT'%][c %641bgB6W.6M,9TG[E#s9k\"N;MX."X)hbN;MP@">`RmIQE%2A`Huee>ThDk>D,4L_9Mr,MXd*OZB]44YpQm,EpBQ;=0F;$2 %c:StQ!HD6&Y`S!q08UjVS/lL/6P)*c@OrT&oGXR_Qj]0IVq5WMVLVlR"#=V6 %6*u'8Ts^$1/t9/h'uDb8]^.$g1/DJe$utSKXWs>3Q`[iVB2tW*\irkdec\H^O %/!T_?c1]S/Ur*]`@-s;KS:TS^ie+`IMn.""k`]a=(kKq4Sm(j3a3pYFtt`"XX%]La7J#d`hW)abWu@sc0XJ!T34+$uA3 %BPL#;KN+hLaqVcu[o$FC7kgIe4DkI\;\E`k]6Xu/`a=r0@ZsZ8/>7<.#pCB2MI&3oK9g3;%1M>:ais?e_sS"*T,J>"K:aNjbeYQV %FB%'(0F7a_*]:fGTO]3*%-"pr!#m.BUL#umPJhjud#.Wc6fW;fQV8p>koE][I#>LgUH':Gb8qVig8%(E1&$,r;ToVf')%i7jL(t0UfbI7c'^kai/'2Xklk`Gk.=iJFXo(=@pYhh@%`AoZtZ>OJD2JI?\,o=F!D>-uW$h[.!8^E/eB6[%S %Io[H7.apnZ"ri5m=[mFNY.0^:0k)9n?)YIRV+!](m_hs"F*9Np89]!)m`QFXT&^:EY*@(4T:%7nK>>4$t(DCZXk`IMq4flX\^Vgu; %`]F!'(QKDZ^uHk7=b?1F.HYd:AfqQs>h!Vc#KZ2!Lj/K+;OrE+eDMI)Rb`irFg7Lf0U/%sIal/a-($'5ME^fcPjSq<&EkFjF]-RZ %(,2J`N-Xrpe`IJ.'UcO&R:be(,Pie9_8HOqkoAU2UI]bp!'VhehC`5hYQXPd-7 %BqQ&GAHDERpZkqWVZMucO[.l5m(/@\K^EFh&W'bjUBS)j_\o@`d4H]-=(aq;M-D8C=fK-:[F9YDhUsCs]Q"q4Zu"Lt;d9IBRKW`0 %.,l5hq-M7S/S]*K$s8ck1nIaP\5RY=H7PF87PSJ;?tc&)#!)kHUT1]%:A]9cpnh$`j&Apbk[@A7j[5#9^(r:GdV-c/&>>a@mTCAI %#^^fmA)i'&e;iVF%/P?,o"oIP&=s/9=o,hVXSom%Mdih_l*S/GF"7(,YUj^?R[b4fWb)iduCo';05e*dUlKh(^7Pk>BHT`1!pp %l$n34sZ@uDS&gZ'',@c`u%Ct1^GLm]p,M"gDj7GAY4"&LDS!i5YZl/8*qLM(8E^b&N3$*K@u(%T.[]cT9:o?dg+pb^,JY_f_+;,loi5,ak^9q86V_F>@[t(XF-W#\W\Y9>8pWu %\Vp+^2[K5?H],4a5(tqQ*s\'3/[n88'i&d[C\8a!AQ#S-@p7bMZp"7>,M#@]"aV+rP<_Xma@(\eDT4kl0Ii^@*R7aRT=\+s"l'u$ %g6+sG++]83/uLn:#qJ;rfOl>cdeSJ475.X#IpQY$F$VBPFUH5=@atRV05l22$Z!eDo%?rh-K52Q9)pmNHX#MB-McM<)mAJ3Ui\dY0%6Yh5-aq %/MDf(&%GHW]6k+>-:`tGc?pNAp62X.WKY9kQ7&^(O/\sZTUaU&W1V"PnbTi(F/90WH+F2^N,ED#Pdi-NS9Du+08o?-Lj:I %X#WMJh-YcflQMMl.oGQt+Y9fAf_01+KmhFYC-(Q.([n)&!nLK)],'jOftfE05[^tcG,3_=pn,IrCKpHFF7p_*KgkF'F#dqb_Sb'c %3H#VtaN>P5Pdk@sA3>%iEeb!%\0EC?E^LO%5?M_!^?AaM1"FS=EYA#$TaetiDBWkN(F?\Wh1`oD-ujCQE!qj=p>'MIQg(q %D%XiLF\8aB6fqPl9Ar46L(s@qqI#ioo8#0h&?fJd"Xs8-@_i&FgQWik$>Bkj9.Y.YH-H\g#dJm/.+J5J''k!$$S,-*RUU-"ot^7J %_[ghcmTPN:TdmfBZWolZL[^2SC'5`"n@mKDU$XCu3Ei5$u-b4.-miaE!, %1KrC^7FQEDk;Pg6>';(qD]jbMS4.GS;C"5f5[Dq]$"2lcC"AJkL^JY%XCAWY7]IsML\WE#?;IP66:TTm',\dPe"9T/BXo,\F^;Fj %A!Oqm07N*(e$U5h]R7NqlNhT(n`[Rm&&WL`X0i#a06=.K&cE9uDT9d.S3838J"9Y`q2<+=?4KDeh&?T!Lti!MF&@*I41kdCls)NM %nW2qrm>QO*8":L\2D&,%nue\6,o*ht?g@[LmG2q;=ct#70;sB!QN9WC]-fB%+[(r64\-u0KFp0f+UA1E8<0XgmK"^KKDBjGF#W^3 %WYKf*+LQklUJLd/*@ip$1;Y\Vjti72Z5(etqAB9t!$mom:76TcIO^ZJ%Y9,4=Xt>=++-H?A)RHG-L1;"jVJ>R5BtN0N/OTjp%\): %Z=Jf)eG%*d)SicI]a9u;G2VgGCMtVm9b$\,:WNm>hmi`OjK&sQQQF[sjSa@>/]:KV(7`1J3Q];MJaXA]djps!!cDP6D\7hY!oeN+ %"+0ulg*(Ws5>RWkD\HU/mr)Q2+:DF9'_PYU>[A;<.as7)n'>tC`,@'9*`_74BMi@d+'F(H4Bi@)I8Eoo`"FOOU-OsVe"-OG=-_Ep %99XBM?5Fcg0ZJsX'JPj<#pu65;b^eUfr`]8J?_Q]BIi/Wb^uuPRT.7"1'TT=6_C"Q(O'q %fl_UP<_)XhJXY:QY]>fo(NhM'*Wu!jpaolN.3b.A6@q4"A>3Lt*("'o[cp06-TBogD[_Y!%Zq6bk@ld(OQt`EqN=50[^^D\Ik:FM %kQ-bZO;GCTQtWtVoo0p-iB,9c%[ZD%?*5,n35.K(WjF9p'IK8c"Jo4?A@Y#6YXG\^P!W9Lgt4D/"\QlG4Q&TVs:"72?:tFHdkTqREU.7reY5NFa7u51?(/&;`T/n_8r_``\-5,(A+*/4f`[Wb8C/o5McVIkho`=tt+Hks0d.EUd(*3L;&FK\>cf07N"CA8eFXsKD" %Lg[].QI!4[]nM8OKCe8n5,jS'j>$ %4CMIjTs=cmEn;FF2@&OrABN?Y;f.otF=1E+OQ-@r4:CC@c.s#.">sY6k$DE3<\l]!A=c@kF!^5f=t_0>[ou#A).F2->-`?Td$WE! %LDlDdVL"-AZ^=rYj1`K,=44bK&5ruCq\eYZFX]^]7jqDAeo"!6`0M+b9Vkh",k96hDMLoJ4JZD-G!e'bN7eQ#=VZoJ%uaOL.7@9b %;'2U'!++U4o#K<4IdE5WL5I?=IVl6`74G$4?iF4=(\=?ant4Bhk/P#cgQCCDto(W;gZ_]]tZIEEORUo%dR%' %UG#bsWi=lWGN\$]YJLa.?7`tXia1G"cBgrsr(\m`YCL3:[>W:UeJ&==E-+#lCjAlEI*:7?f'Q!Agm:qb0h7"2E$BMfS^b_C%U)TXjhN'WOQts;rID8-67o@`@p#VJ7VW*]G`'](#JXkCmK(!#4kIJMKK %.1G9%#4QR,eta?Gi)F9'kSKrXE1&4=m8!P4MMsE*/hKikh8jKjc?_89EP!iTk*_?0njc^Y3E\4aTE[>Gr4=04%: %9iQX#WQk/PV"<$RYJIG3.6;SchF5L@DQU#7hLd'oB6!Zg_]u[DRfe4bqtoH0U/G>lU74/@DsT/obMZ:`N?#a(DZpW<*VtWs"Ce.^/O)#.S)H:2SMj&CuF6\ehg&YJR]WU!'Fp_%halF^pY;HV$Z(8Ke29B(9$26`[B, %&dloUe1&<%.3fgT9SQss*!p0#1LkH,1s`g74%cU6,_\M5CZpLbncqC\N^V6YqK/_K[G8C&Q#N^E7[b=j8Ck7IC0g[rmJ'XH:>bsa %l#s+bEXp/%3&U1&\/,kH[^+&JF/ZtXPltMpH>VJ+'2Uoa3Y8%Va*\]CA.(h*o":@mDCS-_\jnPCC=.%FGQ[5'KUO!hF3?E]oDmY% %'/.*q)@u0-(Y*N)rc(!=@p$Md=dos@UJPY%oANn0F&dUS2r\aWD3G,l$5BqY\D!&=lRBE %W]=&mA2eE-13=o`qMG\rj9'Km)#5QGgJH0GDl1#FN-4utTgXgK#I@Uq#.Dl*_#:S/!oUaSHVt!H4b]]`EhS1/?ei1DVsHJfh;/pFdsh2-c"?ILZF[j0>aiKIb&T)jNeok(Z#+P8>Wl?UMI"c@KJUUlA7e/^S7FqLtK#M#m)e\j!%=V_tVO;QSEe %-tM_mn"9n+UhHMY%9!-f4/Q4e)-nZV/OMBn&U/k!FK?C(j*C)PWVNMGfk]i<^>0tsp[cbgaIc`KWdW,l$VX?e!4E9h`S^r.BK+?0i)G98*Q=,oPUt34DHIBn0k2!E/Y,Tn4H+^<>m$H>AMaIDHU7_?($D:K/"k^^YS43FNW7Q4[j23gE?d7KM2'>`%D0/Z@"C-r+c9F.'3rpV)]Y^2IF:s %*UKCKfV6B/a&8#k7TCClHj,%75TW/]:9>kA)sAME7oCe9 %O^>P&/_#d3G1,ds)o$J.%loSR@QU$)Ltgpf+`B.\cXf7a@qI^ZfscZ3n(:tqPDB#;q)#B`T?A>f"`n!0ul-KRN<"tf[u %P7?TTnuf-"TkFRB-aObV?VBI#AdY*p1ZIFhbChL5PGg%$$mD%9;JT,@*6,M! %b+^VLIS9JDaY^SD-i(>^CWScI %Pl,JQVB;nSJ,-4Z<*3ECH(l'-5.qiOM&F27G.lB?qAT.:9>s($8WS#c>IC%#gk<.mSTg:Z*KfNQ]4o6'7&CpR:N"s1l]u!tlTm,l %*q$j]?-P*&FB]T5I%Mhf\C7uN)RSpmAQr/3d(:0Ye^,1m<_#BfY7_:eU^4K)`'Z%?3.S[>.2OE?\om1)"d=pZPfBb@XrC`bc, %:DT/2E2%7om<#rf6!ECca?MR/en^D+herR*cmpHVUB`CWF'-s*8?-,QZDUTEqX6?Q+J<3T7hc_b9W?fq-o?TQhcmp0_rZdeNl2YU"8>BBjGhl_6Ci9IO31L;h[FWohR>b`OHN4!aHo&lXcI3igD$^WWJ7F,a2orbo: %\#!ui9OQrFM1uQd>b'X'AV7J:.92F@e)o_0?#&5m]Z)@N1T-s>3+UE.fC6!W``gc@/9^/MNZ)Xj5OSK&;IE(NdAB)FYqW;]ikAdBCc@rF.[,9*e&G+1BV\ki6;e"W$?X:Dp8VW? %VpKU,7i].[U:O<.^f*,"6or$;58G,`482I>)IC&TN+bhC)O4C2a@Ck5/2inMJJh.0iS/Y5n$eQFDp=f3/+k>ID=VOUoS`)$k$`S= %:&F!pOo\PI]$rf'](E"T6@(1I"+t8_%Ynsl^YU"\ROo1gpG?sps)R_tj#om(#j#+V.@6`C:YRoE\CtG)47N#tj4:M?1(n("$"/#" %1=#79iYCu`@tCWNF33p,Ce,mh@"EL](H#7J:o2m=JF^,E"N=l&2RohRV<>NN9?I\Ja)gg3&JOr!j$n8/'&&`"=LJ[ %fA?u&#S/I1fc%64i@#d3Cj^+m#[:sWc'O'WK)nM3)=G,JZ0^'(>O#%Tp3Dun%,&._Sj4[Pg;//p/G&L9.:Pbq4tEuo0E;7qf'hUi %IX-RTD]PT;4/LO6-@(cKUC@' %]d[ki"6t]/J=<3pmY63I87VVL.s\T3_PNAt^7n2SHBVP*8/sq'm8uP0_'lBgVrGSdn.&JYr@]D!MIpZo1$"Y6!_\(N+lI`.-f0j, %<8aWChKQ/?b)heDBtU2+XWX4CKcnDE_HF!,@%!$nq"@-g+oG6fRqnP[;EUm^,8olKp#he\1]hYuX`^C&"$/!@h2_.@jS?B$/NoI; %[78@q6@Q-SiK*?sNbKrY'Uc+.Wq*gdZI;a+DNs5M#UR]0NF:f\#9Xd-a0`VCU2)iir\KdlnP`CuR9lH3!'BZ_)Ubcg%3aVj)FQBa %)lKKDARHK(HL]^)#eh3a$W?LEK.Q\XKR%2[DEjGuRb*JB=0GFP>.=+CE%-^sMDeM=>=3YGY'-Z(i/74c(cOW\Fc(`)OO`?ti3oAT %^#b51J67il->?Yecl*cfs/9"Tc])=NhW=fa1tn*IJ9Q,jf@A20+E!@&E_3XsEJO6=;fM]O!E.>YYeDH?;46.^e0X=O$D2NOk>0;8&2qXk.;YSBNJUu?k%bbtc %KA/_:X[cfB\*dp.?eVVSKU9<(?4_&^`i*97[oG4G./g'fY,QaS7Mna*,;SC1dOhTE;+4qSJfuotje`1dlB6D%_7/d/!nA@*oUo@K %V>"32]gXG6r7KHTNrU5N$U'A*BdV?=jDt@6)J!2mCJ7];NbF[;07W0XKOFQIkG: %bZ`qJ]P:].JkdJ'1##j/[bOPIJL*U5DA1Jd$uDrHpTd@)HREqY&]XtU8VR\FP/nUK1*NcrSolOnEaZA^5TLeEfLk31Vo)f9@+Dlp %RaUF'cAT?B)/&Y;qIo;?kCt)5c9rBX*p0UqZb8_.,1iefR18?J-r %'JVL''Zfpd11^,CDGi(Dc>*[SHR5e_KjeWFY(X`<%P.49IS7-,TX3It;UTiZ;4!Eo:fjmW %2KQ@pp?^VgOa8gH*pUJbKlJ,%M/AN[Tc1pu:QH"6m0^QflF\XuTf@ZViWY.(nOmW3PPAgOi25>!TX>d,"55>&d'b%PXAaXm*_G3H %5FB=3,#\"OO):"**&(#d#lF.EmLd-!F)Yf1G!dN2YGfDLmAm>$g'\t=g8_iS[=d?4Lc\"&Zjeb0U;1(eocSFhYM;I8]<0scWrEkP %o1f&Ns3Ui@4&CiIeD`+&9I@?.h^D#ba&'\bmm.R-MhtoJ?qGBGl[T>DA7M'H %IgQWQTP]fsCsfp,f5BJ_Z$>#.lUi=l^88EKP7tS"o\CV,fIY`:RWbJGS@(AH8Z:W!A.I[^!G]g]@ggQ$pWunpD2kn5E?:`/ms(H] %H(ZdXk3KX59=mXT[NbX(RfIpRgu%spW.KFV;A85)N)0]ac(R*U3;mN9YZ1$KdNM-5O9]Lh2alIaF0&6KL6^uS\@"gLCX(0!V*T6[ %7Y',ulaUXrPfqDU@>&Yc].9YE6r]FpJ"^*DPjZD?I]^b+1NF&?"l];a*9`\P;)XF;EPPVmo+TBApKJMDZ]9!AOscpi#`m>s>m_;@ %#a*DPP@t1h2>gG<3s)/!*=CE(GK.9)?mh0L!,l$uIEP3m;;.AXWDA(U-)`hp1E?R.H+u(@86&@F7('C6]POT!C4MfNX:K6()EaO1 %dK*0d;;p@5mU$29:9eu;El]2EdqAp=50lV?ZD%2DQa'r]pTJI4o>Kd-61>X+/ta] %cEQ6TqHgY@`c?8f3.U)RG@_;EVBY(69F3ka\4OqL+s-76aPbeGV]4Bi*K`K]0H]rV7j %`t.C3DV[.D:T8bP6UMD6][Ku;!O)@u]aT4Omm:a([YR3?n6PD^qb^A`9Zd5SJCnX+!._2@H5#o,8Z2PeCE0'em#mkf+o%== %(Y-dD*=d;M`EN:HEeF%CcgU^gW$B8KZa %>97r0/U$CHZl.N>>8NNn1"9@Nq!EH55^!!+J#1:86m.fB2YLdU1eV,Th)1SbPfooCP#/FQ*0g8CMSii)&Qc2'!u6\MjRdFmhsZ)% %"GV^\#l^%UX9BH`Ul0@/Ks&p7INSD+9-2q*9!_#\oKoukptN!#O1ULnq/YJWho6(+@Ko4@iZGErqc3jQgR<[W^Ms6oc*!mJ`>8sN"0`Eg2q[M)KIi4AEYD?(A7\`mCb;<%K^phgFbW@[t %Nl(P^fR+hg;Rqrm'h1MR('#UcAmPF&+:+O.oBL!h^GX>=sLZUC,Z*6TpIJgo[7P@;:!XSE;=+fKJf^DsVi+Z1*4a'7dZ(Er3!iPk7Xd %H?&,Scc1s$h?`=.l4B"rj,GZH.rZ;u\JkO#Y%F1^eHu`ADbP?`L?)6eIVMrf-2=p8a*pmS%fq3^Uu;+e*#pE$gHqF!Na4DLf8a6+ %B/T05TBZ5u&Dd0inC$E*iGX_TD#S"-4Yc:+DWIRn`l*\T:$l6n&?Lrtah_S:+(R#=I:CAI:CCa3ccm15W5t.9e06]Imac`H'9hgM %@JM>q9,pYb/;*gkZ[/-J/u,H-=J*tUV;9?A<*q5ZoDLe[*c_HF-+U>TV_XWBCc.?s_:'bbGk]70Re\9/ekO0D35>s^cYhS7IKu;P %UFIZ*Id,EkNhA:Vgt\aQX?8gZTZ,/i;W0m@5XQ/-(j%1-m5:l8`%O(=8+5f%@.ADQC3;7SGH81uJ(-kajHs^^,RenWOU_\DcaSXn %d7.Y*Sq_*?mLH-+7Iui\$?Fq.XnaTK]jZA!SE22_cA)QeCeJ%/knl%Z?@S\&.,uqi,_##%C%bJLftW;EgoFiTjf_Q %YmA_B2E$+MCZlr%B`kIYm7!+]&Lb?[p/&Ltm7'mu2*nQUUuah/g7gBY-E2Y66O=m9b?i+0=!2@DBBbXa;fK**j^.49@%C@:ga.4_ %l:e;7>'>jU2$FA&4s_N%'ML(B[jTOt]oDq]1UB?thDkB(&_qX"H(($pNWU[(h9#o'*im`;U92gpNi.>"H6Ko8p97&BA$!6>Lf?9`h6uM9dV0e^]3EiJ&E:oTrMja5eW<$hhC@7"qcP# %`?kra)jIJR]6,pCXe#S+fU_8Tr:un$]t(l(E`0KV7/rrO8QF.kYK\GJ0m\cGNdq#aF\7f[kg*G^BNQj7hX<_=#2omQ\8H97'cTcS %!;JXXl9CQa7(mBP^b>UIfO2!:?\enap5h^tb%JS4lFTIOaI/Q$9Q8gGB+f6IYFk58M"J7Tof3+?3DM %(N27*4"Icf[LbcP#*Z'-S%eLZ^%E(33E^E,\P6YEB4ljAe'JDhQB2-mdIjD-G;9hX\3^R79)Ydq!;?A72fXZa')&K%k8;UJ1p'u3 %(gQI\Yd@Xa;s*'l%^$S@8BKO!8H8E+q\FC\O&*CKo='4P\XR/3#7ZVDeR9`_oR0uX^*Xc5jU;mQ>@7(Mln+u5'ShF-Nn)a`[p',G %H7VoJ$GnK/PX8PBb/-9h>VTcA6u>CI=PD.`-+!ADTq8\:H0ETMU8f^Kj%D>X4O$]a=Vbo'cJjJD841oh-QMCP#'0mR^r;I/FJ^7k4R'\$XYiUYH:DOB5jZ&6$/kOHHE!K2*fnZC"_i`Ni5f$aU$3)opp1tYt\`@d$uNs2Fe$8V^T=*iMe>7dRn,h)P47tdc\u4IrgBRoU1=$ %=ulT[$7An(,oF>dB25uAV)l,sRNh"?5aIjA%a#1o.(7kBZbf\'IDPpAi;T;"Pj[hZQklTgU_Q=r3CFo\/#!c[TqquMSJ_m07R$1_ %mAl%5qs2s0YkVJ44i+dA/U=?jE>$"OqsrC\XCGI)S1Zsj/A4C)g#MtXCu5@"QJ+^j%!WZAraK3cell3cQKqGb %*G0W0l]T"jrk3qO@>qU*0NK8S$RM,fV+@BIRcp$[W4TJ&]FQ\ra_0DfpGJa8P?,c.Y7^']]34tK[sdFsQ8`Th5Xpa9V_Ig86)BZ7 %>2;8(q,\LHY;N&reeKYaCYTPrEX7trGba6'-m^Rna?3?t#QmIj1prqI7QA-ihIH_B]SP?'Mu %eNtEe95psJ)qT5-Pe>4'>,h4hk2WN!)Bi`;2\qi@W>V?7\Z=RJ^hoX7[D>kr"dV"52:X(S]6h'1X^?%F./>?Um)&,o1'm%?;o@S_ %>+nB3]qB9s@uIF`RWGV^=P26-;$amu(2\^,!4/gndmDL*0f\J+rA_UV07>nY?r8'd`opG@0-Wj04GTj;DJMYd^:\Xm70T#N;ehr( %dAg:6*ZGi:o\%XhkQfIYHTqa"[9Y\eFd;$V,D):5!,6LBanW$.B\07)T?nc?l?3-3LQhKT\64nsC?JX[XZc"oE-/ML%SD)OW=L[7 %M-CsSePnB8%!5+C6^CM:^E$6>r6;)[d^E^I??cPL2^?eG]jZ),iiiki'!!]^D>l)5cQ:eVhIAfN:C`Db,$ %:Fe\@ZYK_JbiHj1Vj%)T.9quGB,)4eZm!A+&`i_1>MnF`\T+<6Magp^?Znr)P]&MoTl?;bVYPY%mJh(k9&mn3s-63qE`,$u6t'B" %D)JFA9`01mmOo=AXKr*oQOkLYNV2m"X=oMg %h"I^""EnXm_JG!lN>agakrmr7GHaDdN!$OZX>/O$PfcU,!/@=&GQUfnE^\H8>R!,G2(ddJp(o5E[GW8YEc=J.ftaN.POf93tZ!LZdkH!lpP"o`Q1g8LR>4/G*t^M\HM:&F2iUL9%B&H %%,).8J8;+eAhDuR^\<&XWb.!q\@+g"pQkan;"hN2)O@G-_C,ELj[fgZHfi<9&XX$cEV"=0S-n;iV_LW+D37RNC,`N`GE+2*7<2N( %G?s%.U"*PY'V"Yq$e4Qs0o+X$%=)C=DtrusC4N_q?Qs^6^Bjoe!eClgj?>3T%q-/Urt8f6pegR!0@a6+fNTjC0pf5(NZ[/5AR#gB %pH^YZ1H1$:"pOcSo+2IkEJ,4)Y;!R/*ld:P.MDF;;rn3qeL7W'7ZLo1m/t"2h:asKC\"$H[d9BI6W8'T)gT%UmAi$N %d)kfCT/cajWa/X$labW$>;0FkI^X30pdn,N/*LY)A5N/kuCakeK/PG-e"ag+&p %R%9INg:_70MD:hJ@hAY.a.`0i76UB=BNFQQW].FY@nWX5H;:qm$A`&a?=rG:7D!;YI9*MrV`_4e=+]YAQaM*9%hqA1f3LN5$MiQ/6O>dY80:tR2PhmhrfbT<@k#^"^XrE_onMq(bGBsaq>16?b,D>a06(LqgbbZWe)h_4"0+uUj-Y`Q"g+3u!EppG^(b4_Fa %C#3\XKiq\3g`Ype*lagj/FJla!1D-Yhu9`.FQ5cu?+VYnBeM[[H(12/2/n4&KR&Fu,MD7fDVZM=5kjaJ2"P[Y+hM@+ehsK%*I,=$ %mJ\>&.*4?G5%TaZ.a^gA1*_cH)j\=+/r:k!21TL<,H+q/\Wl`M** %QW.Q/,aLB4j?53G)MFO=9`2ep^\Y7Mrn3onrTjLViLg,"?i1H+huEG#pq+<=VgnNWrf@*TDu]X*s8JYii5WP0qu?/HJ,%.`B7KT0 %5Q'p3huDNaro[Y:f=uS/pTOVGQ[a;Z-[i\B-Mu+rs6q&`uDn://Gs64=tqEKE,hulO %^9E(dffG&3_r#qbikZUEr5%gghgBt`nbR!+)QNb^.hIImC]=0Wq]2`/2@MPccLa]7SJ?$#(%F#[p@2<=B!cZB)f)"Wno[;8Ssn=t %nif+`uk?ZO8n_\J,<%Aq"pF=5R@('Y9:ORSYL07?6k>sS:]\YL4s5QU:Oa>YDDOTAN6!,JVX;633Qu+"KbKJ"F1q1MaV7W2@b?R.mB]bZ3k6@GN %gF_o!^%rOF*Mu/5k>hojK$0J4b"QWcN(jtB_OpPrk)KDb=NdPC]^&!/WjRjm0-_7kQp0e=*#0l^ghA=r4jM'TYJn`*f=/@I/QT3c %_S=D&"8E#Yc2(X[Ablk'C(ei5RT`lU+7a3BiO&=&rAMJDab=?&WSPWI"if[$AOuGB5_Fg2le$GFq;9i$a>%f(mFM3iN+;Qg4u4I$:hoSfB@`c:\A'n] %CXm)SRL58s?f1:InH/71N2SRP!72Y>!<<;.(YsYgY2-3u'WHB"_=)m`b3[j+r=1!F+!_0:QU,+W]WLPjL0mMaL7(,/+GO_i(@>)% %QMU86hga'uC!4ldJc&_.^\hNcY;&l0BPP1tS8iT\:Y/Y+[(E2d)gND(!]=J6L@;:W\Z,TGb0q>7hR-*oD0l8#qtMo,(YuT1 %!,n1s1)AIHG@SeN8WiG8Q\nu:d'XlsBf?NOlU^`Wb%DHZm:EG,*oXN@CLq:o^@Yp7e!O@eD.Tg\1Uf'a("\JF:H34OMHqW+5>5DG %QQ)_\W*+?6MZ7q1a:E':&IXrb5^p1J]9&69r40DA*U[3A$@#?f]P^\5T1\47EKl@l3L4iM^)uYqn.c6CQ2\eiU\6aYmf76O3pn;0>i*?a)$+dpSIQ"#Mm5J %ZJt>r#\>e\&sg'$^[;#FqdaZ@PpJEj?V:&5BV/`u3.U8-q(l3pi)"^uA,Bd"Oa %m)/D6\8Ce@;J]:)0X9\%\$RN&.!a1QiRQ,1ccVn7K5`9W\S/Gu61TFT;T#TA3@&a5oMKF?''*Vf4*o=BnmS)H'd2I*'F*6Ai %D#gLQH#te\OoJpa_9DE9!*Tj2(2!,$j:`D&PJXX,B(>SOAkqt:/RR%AI(9i$>[ZUeH!Jiq#Nk;9DXC%\/B+$ppZEI%R]K8>eeKhj %iu-R[;>cIQ[k3^2+O5DV$$)jIJL/B^0Cs//`1sQ[?*]l@DBReGAntM2K>.Q>DL6PKMnI8*i`3K1>>Q`sG#&^<31e0?J13>O(IiQ= %^MVrd=Ng#!UE0\ZcArs053q:=er$fuJ;EeM'Ph>0atm;1-P6\@o8TMOo'jduQ53LjbGFHNI/SK=h04qnd;JIu\3BV,-(5cY7!u&c %"5E+Xnc&>8Nu#rAjC2PYkVAL-dsV"<>(nhDGAuidT?:Z.38Th];M"2#4+I`QkIZ1sjLU!._<4-tJArC]]?M)kUKW\]M?dD._cK;$ %kSL_>.^KuSG3oBX168,j1_4N]iA[5c.(C[XD_=;E(cZPb1l0r24jiZb1 %7sK#(/4pu;*I5'$"jNA$jhkC@Ik%k_@hK7Hb9orOn5bd5GjW)mh-FQ7PFNQ%$+G"0OHJS4 %juY>20Jg`Rc/(Th_kX@bZ>hSL1%kV+X1@0O.AQGmJ$NlbXtEDmfLqW,ChuP>MOYm;Xt2N7W1>)Y5Tf3fFA:;JEt@mCr6m0VN>39Z %`Q@6s.a[%/Q+E.(XF,^Ddpj'jjUlt>Br:&h=SSKf0+-UPSFtkO&RNcK,D`X]U%Iaga8kn9b'*^IKA$8'&%nZeo>U/HU$22s)n%i6 %mcD$jPOg6hYfoWS9$*$nZp7Qr=<8;K$g5dek[_NPM?'^^R<][$rNM5k2_F8c,>W_tbe'gUR9q<^T!ijpc[c\e[^i0(NI]j+@WNX* %s7lXo0f8K;2>GEK-)[E4CH2OM9!^;V@])hl_#/6GVOP9BpM9B=GAKdHalD*QgZt\FQ-&&INrNZ[K6B17W9n.G%a929(V,32m(Q,7 %,g?&(VH/DM#(mn;!#SEl+$X:!pB,YnY@)OO70`brR97lPHo%j$%7S=Xsq/'kjt %%.FV)3EluNp&U>%2e[U(5*PqE[d[d73K?6&SWglR$2t4MjgQ&Oo?3_@R5\kTR/;h&kRdbJZW$eH=GjWnB[5sn3fLL>CiPK33J?bq %d#poK`8C,V`>V=g'@^PScEJ?U4eBFp^1Mh20q*%CkKj7_$as[>Hk/&tOYG2`r^J]XAtqCOE\HfA/s<4.<^,=P_@)K``#8R%Z"i"Z8)^9#B*/l\kkG6ttep3*ReqBRnNY.nAWYW[f='"LDh&Rb8!lAn32,".3Q, %IGSbnVUMMFVuc8VnSR$:BKj5!S-.AAi(krmj]3bU!/?7eZZ3U,g,Ob.>Um^Vam<-,%g!4B2LJ$Ut^!9uO\_FhT=+#jT %T3&2`iV>M6Z&@@NHjAk.IdtR]os14*:H=C"\U0gK[^7,<\-,9j3B&k@^u_qG_1uksNKdD5f(/*E_(4>J&amnS4*W4t@nPT'! %(ui]Io>TSl*K.`Xbc`ut+/1XLo^flUiLjqQ)\&$F`\_^m",Suq#fFtJI$b$m=`u;S_asg;heF?YqKYVa%tRqNXfb+O9?Z#kfu_Ec %dtF6uT3(72oVNADUY@QoAu`hJ'hosep1oR_a*D]KXq0f+".TLp&,:b>&VG8C^!ZT-RrM.`\kE9`^-coY(AG01'i_mk2l<>H^Z+9e %MQ$#@N.AP5GF^R2&Ya+G2B=dm0CM8?%oUXMaM,Dh@7O^14A%;K+U!-Li_J&Sq<>t/p)7\NUhr0HJO.$.T4]%@6JD]K>fdR$Z\ZAfPdLsLbElkQn %00^k)l10lV9i+*:2E,DIm8O46K:cBg8l\ZZlfp%Xe`]B7$&&1.rH-G=YA-+GH9qd(6+D6cfu@p<.7<[DP$ %!sTf1G2d'NIu5h,"s*_:"=#Sonb6BcTAJata05.)2*ZK_a$&FlRlp%"&%g>"5C;&[Nr.mW7m6=Ta.<(>Vk:HuVj$+^VOW^>_b"u5 %diQfLj&pXiB=$67#7t9XYffXLFQ\oK22`XP\4piGRtUCJ6)N?u5AbX_KL7p]7h+BGfkm %H-Z'+Xadk5]O+m3ilU6#HebEXg\Jb)]@ZHX>Rln),@.3!:*0iQ+CMEX6`H!RYEHF:>O:+k\St4,/(%T^Wd^*WsYs8GX1;*^ean:j`\EO2:NE/3cYo&&J5g %/b"ig32RXTM2B7u`\HFl9T:%@-r['?Ug+h%:*`o/d8?[P-^EFVpI^>A^!r8%gjJQI$"';VOL76beWX=6)6`i4\a4_hkCi[PN0eIc %B(QE[Cdb"Xm`J`4pCrVW4HcVqHdBP/N4kp[1TfSfLH?nQB^>!lWk]r'd":nTk6^G;"LGM!#p2V9A^`[91oAt*[DB=gl6 %]$7&PAn3oiQ#ku-^E9MtCK)>B5uN`K:^>:iL4D""15%q8ffNHNs0;J`HMqV(*.'kK'rF1AV/t&;RFX+YASbd+m-!sqG2[m(eAVY0 %Oo*.8)%"ZKUO)44W7:?X'S03I2!Pg7WH/F@mi2?F$&9GP%idP%-F\qn&R\r>L[G)T#HGJ$fh`o[I3@jYh#/XM:>0;DadFihP4(3m %U`9Z'RZ*HPCB.BR2rb3H_:7WSXY^lqGG4a3*7jl\GHWG&j%):-!35SFgj[J^3>9fA)O9iWdE/a$3gQoZ0XVdfq5V).*cLSOC2WCg %Z`GI[[U/(r3T8e5``m,GciC)WoG.'Z#6/^;Y5`nsDZTmp2bkd/,Rn_'@[bR#A;)d)^*.2#-\;(QLFunI&WRCkMOR\rq+L?PC*%5Znab"9 %5h1#DSZ=<]2tTS/Hr[S!G,m'9fL'4b\M+9%G:pI!DF*J?ER5Y>O8("(<>6?*DnN?#Z`865c%\(QDT$5U0"F+F65+nL.OgQ %68!8WfKDNr)F$M*?F-Vm\;^qYf]+`"@fV4m=`^)QFASL-M^MW^$k-%^RpojdB0_lVMUX"njoEQ2XuU%];1mEoq1#@\3_[^Be$u&J %,@f=-FR^(hN)>`Z5_.tsdFhHT!+A(NIT$-X/i\*6k?VhHen%VaAFVP$jUcQDR?1YNK_3'W;C?r[k$VN:_*dd$7&l0G&qtZ;1VoF]_*rRTUmK=7S/HC\6?he@fYU:l`ZAM_b=3#nPs5\t9L9Y,)m:3Ag75!-s"=u[NXSV12lmId %[eL!pZi4OfVXt1"Q_[CWc1U:;B2.=`g2^#$DOF4r^&?9ZQ))XK5J[]SZE38Mk6SZ(?&A`^%^MBENiNklHPn!XOEdhCe0.sS(-e-Y %[uY>KF.ah87G]&BZ(77?et/o-QNZGf3(U7JhL#PnB\+Va(p+pfj.KK/rD%//e-[/d59h8gRoh5fur %LgK*B2M;_,#YtM^9iDlR54)&l_#:CO;%5AB!t:;mE<1:#!H,Ze"(]dV43!muH;s/mHl,J(1.O&^Z10Tp.tV(2pqXCT)aS=/X(Y[j %M/g#`G!6>m?\`Wb`o_anZ=+r,m''k?ZJi=:&M.gImBrKSi`Mo(S:#2!)iE.p$%1>FTcen'`$n>52YSU#''7m940gT(6)6,$=^,^: %j\rsc!63G(MVH$`!3J3o)RE)=fnPY@bAmLHEgS@A7-<*VTkY=3?&lBLr^+Q/3['$uDMuQ/=pNchbTZ!3nI.X@bdYNassO5A?-:r4M?Z6qU.D]c?7MZ&3&t8%eMq(.B+Y,dHKfV(!D+Jk0.Wl %b)NV#j;jJ2>?i)sdakZ74TgFr$:2-Sj+a[M*C4AN:6o%An)jd0^IKr8H*Igu=qY7bk/+`mr!i_nK#r\!JB+s/$;V0JfsjOYYm>?1btf>+K$qF;dA1lr%p1Q_ue+_cH./,]:GRpR_#AKL23a,X;g %4=KJl+B@KZ?lYed0uJ%[SgW3>%()Mm-W %WCe$GPTZll+uJbGC@I)T;rL5pq=G71alH\T2jQY;rq?YN!_?=/hU4#u54U!V.hVJU^;'G9>Kt&.#_h$#fNm?5SmSN+i;8eGb(p_r %#CRfa=>4dtM[k$=q(C6V@tWUYmbVQajsjuO#(pe-S9FIm7"_eQ=Rml&gAh;l5>.BS!o^j.eaU7`[5#T.1$c0o["ffa?96-'<0d.1 %X;o`t7c!99&o9Gr8^W#Dl-.8g70ouQSk:X3KGnkl8[nc)1u'Nc:,&:6gdm(iL6<+a=Bokom)79aBN#UkQp&Or=-rj-]rkO_\Hq*\ %K:[ch9NPag-n!R))t$AL:NNq%;KOdSiW)C6d.o$b#mSK)DC&TY1?KWlPcEdG@(NI]%T?$s1"$92iK(&@?IPm=*K41["l-6"K"69L %Bu.@H1E:`a(;)D1bPfj6A2ITPFOf>?%ZF]M^gb4ij&AY%c>Of_$MWqFSJ2NuI+odh/%Wp1#C[sRd@Jo8%7'Z/UYRM^9_'JH>S!gb)8&Gn3"Q=rb\t`-`26Z;Ido8\ %:6H7TYL*"9iW[/"-35BE`!MYiVf %[Gn0=:m%DOjtg(M/^i2F)$PWI0"mLY&?i`Q\'frTa3)'.Itq=''s]R)0UX,NE_TE78?.H^BE]ZrX.A3(/:ni:X9C)-njg+$Q)1Lp %)D*GX7$=<&Ab6KC?oJl'ZfEu<`.06KaA0dSEP.+]=9G)SY@:VkldMV1-],#GumgPOcFIX6l+JZ7Qshd?O@MlOFgVl6O#Bc:kiWMrFrh&^fV;L88\DsB9HY@ %b'?p.NC2r7#.`EtX/]Q3?4&t2-X:a#<@Q>>Wcfb/`Jmq8ksfU==CRO,$Hjdl!7`ln4atrR"VXY'&(8n:-[B[0\&q@36\H@ %6%UM?Olmn/^.k*J:!pnjfCI%b4n+6W%nq@o5HYs[cjMMc'OFF*^>Dn@2Y:[o#a/Q*kMQ]>k$gh12m]ltK&d*k!HM8>kWIZ>p?D%$ %qnde%etm[%H(04tZCp->o`P;I0U9>IBJ!'bZFVRK:IS\HPO;XdHXEd32.)+#++"!2'k&58UU`Lu^PWdX3*m2e?TFX3iLNs'GS)ej %K$/(aQ!Y!j@j.3=q5&*]i([-rXfn!Ae.Rt;VIeA)Th06M`GR+)0H_-b^K.jT?)V&Xc#]U6&4<^fUa]n7n;!$K5om2U9HteZZrqRi %g]%$+pV7aX_1lC2H0(Bb0/$hI/W8?`R0!=!e.+o?L;fN[$)09l=E1C<9&0u]4i]>RNT0=5>G]4h!I"q^8.SsAbZLE^Ca+j=Z=FM'qO"^`V'>C618G.&e=&5d %Y/$EK'jRk\:,"&r>`"]8Z0,`]6W<'6m:IBS#n_C,_!nXuQegW('u!Zkfp4M\jBXKiDoSl&pf$"_42om'HVK3D_DgH\!#ujIi`"NG %o=t;3b@k)BN`'7iL/-M.b?7Pb*IZK;pS%1mOg@E"+D]r4.BEREZFaZWos1=Q%%P=B(M?c>9uC<$@HjZ+=HZ*1^$U+j`[0+;?rPB@ %_T4JP@&XW5>YI\UD(%0K@7`\cCeS\8WZ;1<72-Dg5uK$ZeKD;h!pbFm*@8iU5cg5q/U]a6NsI5iY!%Ek"KT/F1iAV1Qcs;?U8f-\4:9Y\l]Fil/5,Aal_!M#^):Hl8;SCVe8AXi7I)aVMAo %(bLU3:Kh6;#PJ;l64B+C#Rh1c1aSeaKEZ"L>&=7@IH5JV`\hr?<]mW<>a%]1Q;@>H`UQj#RZmdS,":kK74WF>W>'YK"EG/;mfTrL %1U=nEh8i4bNIQPeDq/X1<8]\F5i&uBK>TdQ.*%2'8H`NMqR,+Or5eARjkD-;5FH6"31h]5l&8RkVo;]K4hq?-P5dB(+C<';Xm.eb %er>pWcqi7r"iICD$feS60+dY:c`A[3\;oLaTjk^lL_+Nb?2OrfEWA'K0"ke[*_.U;:iln"*[k.4!(\lF/jTODoUPeQOgZ5pQNW*] %Ijj^ba]?Z.o;]9n8KE_GCZd!'.uOg\IrO"VJ@:m974/D#!nS57bmcYU&%;9'klWUAkiNVmB'B:0C%`FmRG!2O8JiPB$1-3mElTlU %`FE24l5;XXH]LdA!_^0$!7_aPDKa(J-mfFG+2$G8UH&Nr6q,1oTL-k)hhMbm %a3mt#/>k*$_hROU%9kP %0K+Z4CB4heGe/1`.XW12_gd!DLpi_@BD&muZ5niKL@0+.U-LXjeiS1:^B=iqYeaiIr/T\=r-E(RB[OIl2T(i5'e!?pjY %hq`h/K=;S\Q#?A%h/*p\\HZA24@!;^R33H?JCiXPjksD/deXA2Q9qp"0WP&L2%qG1sEk!2G.Ta"sM%(iY %-*Tob&HK"eQ.W500SZJ>m'^__nc>V^@/R*=,Rq[d!KJKL+HAf8[/'t9_H_eOi%ZsbH>Q.A8]M7\j1+Uj#:!t>1ZId'AB5o6CfFq7 %$@DA_8J_dt"Fc-?'5k_8hdaf%""kf%!e2YM0U;f%h%c=DJWPQb0r2D4Ka^VXEsqYM:@se!(0h88;n8$<@$IP?U+p5]^Y'gQ)#4pa %/Y)F1otmdJ$,p2AHh%2PA3SUghJaNK_E>^4/()HbD,hVS]a(78]'(DgMgH1tjC+_1ZfB[)ND#MTTE$UiPW\Qr7W!=l]1KR--nk'^^_oXD):eU^MZ4WRW%?-XW/F[_/b!PLI,Y"7V,72ZS6P %;dlIhJJcB=F-,l"pW$IT(#As!!-TrfT[Q,f&&qG_:u*8h22G9XaLl0of*]!l_F[ui'#!(lI/oFgHiQn#d,PT_Kg%'!*hN2Gf,)*2 %AR]n3j2S<5hSGt)g]>TqaD`i6]Y&cfF:&\20RMZO#5;e(DffDe"u:7*Wa?B\k9;poWYPY!q>Hei\Mp %iAiBp!7`_/Wc"UBnm5Xta+rff5kMKUhEN>,:s73C(RQg6i+\q4^RGQ-7/&"RYaD]<32gFir&"DHFJ'ES-;-k#3b5K!7ScMtSQIFL %QkTSjFj*!bqHT5_`#h[.8kHQ_988dq3"LqpfSCg<T9k[8#4@"aJZHA(X;T7`oDtD5 %ao)^J1OanaQ>!XGK]eq0h_PGlCT!uM&t4)YFINp)'34r[?GanYkES!V^q_ebn468jQPanj%BE"R&[lqoDE6t)GlteNBaUk4JRcml %hhVm#hi-\oT198kL\9bsF:t=;bb_oa-VMX5"\++Z;^4"GpAuT])rdO2$W/MKFpD`-mKGjY![hD#Y!9iYbh,=sZ3kEl^]k"NV6%D> %rlbk;Y3)+jEO*`4/:s"+YG4X<;e.!Qol:LtH.AG'&S28M;71r1bP[IZoY]-?WZ90D@m`1B!7Y0TbQ$(T+5VIk?C/fX-@RuM%f>\S %((!YC0I:enL4!i2*k629H)3<9P7VC"F?c9Wk@'gf.hU,a#X[a8=qsuk`9r7aJn'\^-.L-k\LL@SI!I9<=l97!d<,m?f7Ai3%% %@&@%!LdpDS,$;@RWA.DIbYK-)UmIEU!j?!i[ZQ/t_>P5mO$"%2G8HLH;+H7T$Pei*_ee/MJC08tTnH:Fkj?:Ne,E=-bF#a/H,!0c(&eSl2d)Dh1%@0p25Beu_X#1fk%*r0m)5q=^="K;3 %]0'pd]1YP?(^@"PHp0HN?m/MCMK+]79Fta\]YZbrmW8H&d)k.BS(-+hoH[u]Se"2Y0nhYU063G]Kq(*FDq\t0(lt6)WX*I'b@eHj %*hi`g=po30lm["j!AHq&eQS[2_n^r,YKX:lCa^W;]%*M25A`g##Bn&b0JoQMQ_M'^Tc#:8S6^G1"6aI*it;71R#ILpi9/?_E==FV %Z4r%LA.,grp(87Z6gRWZKlMATBCSUU>AR4HdL!@[ULsW"jJZ3@UqZ_3(c4PJhb0&)r"][Z?J;-9a,AJ)-?%$h(]X@l2!cp(/"?:( %os;"4&DXtYK1!8,9]WTm4VU2?W8`S*gkb-aC&qa\ZEWeGT8u!g9.%0uq=OTDq[CSbe4Kg+IYE[]b`+8Anhm3.Y0O:Mqtq+W?;$M-.Z^e*",pt#Vu\%a;Xt.q9S9(1*Y^'D@ZR7;C@YB %f\'sm:IVS%OB(GRHX9er&k1T1`6_j)BT-eaD@`[#mU>'qlYY@^eH='\r"k^C+9HqI %Cp9]m!n26=)d/qDuW5O*;9GURhlX[[Se&7LpOP>`PNUI3IY]^*0gP %rRO:Ek+TA:YeOeo**#c%MZ%;^gGWY-B;Q@R1Gm2$&Q.As1CNZ/g-1WL[enC9A5A(6HGc8X2h3KB4q(]9G?9A[Pjo0nF#n3sToo%HW:jF4c!sGFLdD5?4ULP7q&WcK\1q4 %fNF[0-t;lmG]jck43FKb8?NupfoAC:O.pOtJ[g>sgf\df6(mWoAbRU"GEg01M!7&.mlcL!*T[,>V#QH1JO`#B#P#Wo:>o'sn3R!A %.$St><.'d7I$/5,ME2d^+E8ih%q;b5iRj@2lrf;@-sV+b\:'IV4\FlY7?i%jFIUHSK0Xd%tmLp'-a;@-=b9'jM8&kCfg]#!@5B>o4jSBN# %s,"(3AG;^\!7%SF7t#pn/V45`JqLqVK,VU(3T6pAn=[g@e8@7G4?P#Y4K(aiF=&%c.A$/^N_1+#;+9Z@\+?]GF-,oPkl!VY"!)K:Nf$17l9n,g %USHu!K0Bp**dV#O6",^7M<`RjZ`tKta/Ydri7u2S;.$3Ie3_a6G7kT,\iR0#8R;M?F4l.O5hW!U?&).(*]9Z5oV@Mi;b*+QK:^VG %maY/ZlTn>4W4[7Pl$?1u3bj/XX+VMd`6QM8B9BJ)4gUpSfhj'_8Q"lR]lqh<4)2>Ie__F4iZ;(\Nr!f->'3>@];#GaK3I+t=mr<* %pRp,^P4gtP!']TM5%k.P6U]+5gn7lB12 %7=UBP^df-uZf:IOSbOUCr2=jf'Lt?e.%_3?O6XqZ*Tor;kEgt!;jd"aq/=911NlS;:qK&W>fB(!=kR/L04(%j+L)WE5JScNj0k*R %J"HaV[g^%Z[*Vdid*D+#&3:0a0rb-RB='lC*imJ_][B5l)N7$\I3]V;c:M^R+hu&ue/1N"@7>J#fXdI4=F?WR'-2)%eQU%n:SZ>N %Q31H0!ufs4>No,RD*\oPVfF5An-\hI=D6,r6.Z#80BP-V(c**0@WJb[Qncgc\'&lWBM:o6K8"ih: %c9Ob\KR--7iiC#>g)SY;9o-1aP8YUSM]shGefiS&H15/;BJ](,LT#(g='Wqm3j)[iimU('$;D;,MeW_-BkAcfEPj!NQ&G=`=8R("E:J_J#L:3O$pnm0bVHnI$3 %+W(%T&A"2@Fc[rI2^:s[eAl`YP$KI2Eb:+6NE^f$8K)tjPTtJSkY$/F73rYs^1K"_g?R;*rcX-$2)2)3YG4T0 %=(%)9^e];VH-Jl_s)^Uji?u,@;QqH$(5j8+iZI=+d;NUk->0Q0&<:q"jRC%*S2#QGNo?aJ_'Yem+*;.t>\RdcZHVua6mmp=Fp,Lk %V]28.`Q@#@LnEE#AhK-I4rdtnT[nSZqB!j3g\!)D*US_*"IHHVh.X_\HO6#"rkYO,g%Q+FE(fV?g&Q^hf)Uul?<=qV7RTLCTJKnD %\Wg0kHsXXh;L`ta8@:oTY^Mj1Nij7P$qJ`-(1(8cp!uau@k"3>`ZnPJ']3]>KWDnRX!p'9eU=`,Sf2A1d\tZD65k^W.Cc?0e53,' %NA!j;P]@GkZFo%Ljh+o@ad9F*)C<"nBuZu"Q2J/PVq_)Y4(ug.1P(WMH`B2VX%h_;Pc(tmT3L&JHU)^3^\'aE\`^n*K[C0Ph;#=COE2X4[^K)>%8N>NuT!+)-VG>frX^@Yro3 %:h[VA(t04WK.4`:;RkjUEZ#^slg%`V97&HHr2&#_I0KhE=_+%U4P(O#$5I\mAkISXCVAn&HlFd7f_jjo,9.gJf#1tU6:W(#I@'AB3"j8Nd2]#'T]-RXj`pNhlZJGGeeZh_JSI7.t&N2<: %Jh>dj"ut$I7Y-;=X$/cV/B].cgjZ7^5mCTGl$WbcSb!@!7i#!t%-."P1]7J%YSNRSI%AJUA0F%.gpkFR(`ka;YQ8]rA2/>-s4NiN %'HL]6.K.np.V^`;dJsCB\r3^Y&.F`H=c>`:GQSm2,/N.C&\L"G/\!+%c"!)p+]H'.1+?VjE(Rf/UM;Uhp4-"!27@[>Up.ZPj1/iQ %?US=[aVrT+6@,_0]5n,QYe't4StK*J)`GsV:jE/Hb>BB9.L4XNjj%IR6fP]#3#_O>8T<#%HPirZ:o1bR7p-3T.\1>r[O1fG+T4D- %LF^?sXA5,1!(m]i6J,?l/98q6HH3QkBdVNT.!+:U#aGS5Y7=hgdU&]lG?DdJhH)c3>!It-*IH%cCLq+/Zb_38*[S%@F<6C[S:t0X %>QN8YJA"XD1m:>.rPV,uWuE!Z+/3f%a[-,TjW4L06l`&"/fe(N;A,f"W&H.kqMgQ_*'>oU.!'"H`D'tl3_ZqO/Ujp:h)A)f171^; %q/4HREYt/(GACk:7T.lhqmRr_c>*df\5WV@7:slB%WSNmD2G@? %R!`'\lh_I.WtH%)bi*91LLdS7mAYpX^F!^7h$R"J9>ln#5!3^+78q9loEt^nL,`!U7-G"\q-]m-$0-9VZl<4oiYrgbtO^ %s"Juq[3c^#+X2;alqr:?b=dc3.:=BQ!VMU$IDI)fqOh:/Di8A*%pqCJ@*]8KjoRi3._ad_d#6j,m[H"#7nju4EW4..TAq!Qr %ISbDUC-unGC&P0(Oh"7um'DkN295-p!?H?_&b-8D&$SenAbOZ0k.P(kkuO-E1^:K84!4^l;Xo8^$X`rL"#?nGk:R,FAW=FtR'(qF %G36qREZNY"1K4JN,;37gFj5Vsm*-mqD?';10(Fc@q9b[f*;$b6foa_D94"3#?0iE-!N;&tO2,=U\HK[l!27Gg.6Pg1Lh$G?6:hL, %6P1ZA`*7Fc9fFi$%Ni)JXA8nm\b+m)Vb7nkej[6'nJ/rq0aSq>W?sPr:YF"$(0bus6l?Yt._;KrKVYE>!@Uj%QpcnGiXABQe!+*i %d:jo/3Gdi5ne0fV'=\sc_jNbAM2^O\=#kKBN^PjIZ@O#&cVd5%l!X],K4^0dK;YRtj %\t$r>FbDRT=R'*Q/Bt-,?(mjJBk=%,\uAW*Y&2c/\N%)Hm@*)N;C&5gitBZ\2D+O9ftp@,cI=&iG(kUc;[2f[XZY`'+*4*l6ftT$Kt7"V7?@N#e=haGes$aVk6Xkho]OG]EOh5eS'(V0^*@^GMRn0pBq %RbQ_@EG!gK5aH6K=L'K+[ik+l,WMm_&o(>3*R9=U\(!+oQGq?3'Ok50e$[Xu;9&^;-)pPq14khq$rD9Ci!VQY]g16N#0+I[Jkg2e %OqJnQWa33%KNT.K'lbu/^Jg:_kr6HPLnQ6'RH,1osKYr1q2\YJpocQ.3p'oFccRV=!gemS+Q%n?6:`Qa'B[LpYP %;##13[:MW!2(g?P2MsVr-I3r9@p=Ho(MWR--1\'A2>raX09!(=1^4ch_j)[)m#FGObr?u1Re+&_QiTct<PI %YN>!lKF`UGW1O5LFNmO-GKIAl3>:Og`_@5I9s7dW2!7&FM"3UqZUp>V5=@1Ds4p^saH?1YG.b]WDV]AqC %"OuFso^^[gc!dmfZ-:5W;cCiom_Is!f89*/al>H)^dFV-%3],$"sHb"RqCFaUI:f516WL56s"B6OBW0_)$I>$iosmI)ZPonn)p&=a@E?l^5*FR9>FZ17M.@27H0#@a\aO] %Qeo/CCC*G![d0DY8,2Va5<8uZ:;kQ=34^FIDTpMi3B9T"2sSND3kAo6DVU`!GB=6(8,*<8n#$6cMte3,_1eLt)I`R>7/nM)iPVDc %r:7A5N_Ao/7Ji(&G.KY8X2-lP1$PaN#^SFXp-L^pZFCg'i&>?2Gp1gY9'arF9Fn3'brL:R1dA`;I`BD=rbZ`OVTj[IFXBJ.Q_YA(t[0DZWLK1NQoTEL*[Z9p?%(igq?1;*m*2lDAJo+(.%@?B3b% %en1-Sh;Zd:%?8@[%np9'#_p$NF6*5Y0H8YmCi$iXh##?c=ur %94.gPG47;).dJ,@iZkmH<6e=eMX/a+(kos2oaJ`MR?0#)2`&r1`rN.WV2iQF* %WVA2KR@8p<:j_GJQfH.^Jm^GZ'1QHPb_[:Tl8LKsa-sfKHLOGRjDUsAkEe]:lKE[;2UgR;G`Q)$ceJ7+%RBe2>UAWY2Pi6mJ/E!E %%'a&U@oL9`HA#`=/=9X0=;2+X)-R!l_0J.Rcc>S%#PZt(^H:PL1bT(P^e@n!>aR7uuA%fO#M@iJq-qPj`RqL&_MQu^jV\b5d[2pSqnC&!>iHq+binV0id6m7TF:Oc.hR2-]W %0R=;km'M1]06,1;lOV7nO,_pj/`.Z(_ZRO75&mWZK^`),GH-9I'1X/1P %%qQlTU!uT^o`:]`Lugf'<=e'?>Gu^5&pL`lY`2a]@e-@HLnjO;&M*Gn@J0.p@\lS'e"['2;(a_Q50o@,m'1E\N^^lD]/+Q(=s_$K\^*?>0q]qbF]#>ke0%q\t"tF]81sr*^R[,Ml7;sFPL2D/b^IaNeKhu?= %-\K'TTr@,c@dOV4p@/P\42]Wu6+;!?Ub_#^:D4t,muCb"$W5rpq1`Kne+jln.uXL=XmG?O5'cCM'*-mjSi14 %mPbF>E*Bjk/\(MI)3n<<99BMjUIFks^$"S+,4YiXDbAN(`/)AP9nDn;V(N%3lO6/4KLUQh&GS2Et1X>onp?lfEtYD`SAiAQ'f7fhQnnn %d+igMmQRCI2CKBk9qTh<*P3UnCiht?\)*Xirf&Gl(($-&nQKeIgYRRQ5u%B*;[9QU?;"B-.3lQKHrs]emThEg%Nk6*94'DpfhjZ" %RU\CiC_s+\XM@M/)SBW7JflVETfmhCefQIt?t;>MKLO\DQF1G#EM$&X>R4hbB.7]hfXa*>-Pe59m?6D+>JFCc!a6OBY>4U_YMJ:X %k"Sff]G(?3eo1ML0l&*Qj0TqQ;-YnO %hH7VJ&CC`p?',0h,oD";PU]+Fd8"'!$FcbWZAn0uY,p`PH`])G@sdjNp.c9XU+mG4r88ej7hW5]*]k$8R1WS0O$+\$+&TMbX,b2.o-@b5dR`\.=qnL.,5hc$.)5.2a>34E1R*tpOUk23'Z&35)@@"% %$H-'#k8c:1h`-I`>1k@CN"!=(\,q@mH@#srFRWMgqibXS`fQ)A9Y:o'06@$-DZR>Ao7,3M@'SE_+Fe(^nrh%=9a+D13`J8M(\p6dA+L:Vgo21V6.,B!.GrePa %*Q=cpKVjd(<"JP"8#`PQ.b96"ekp2J6'ggZi:SYpoe$YrOq;u%)`p]V*@/iM`6KEWd>eiS%ruFjBssdmgS<]]=WHiX,PN<@GEf!e %$JCt=mu@Hp#:[=kft@WI^8%(QKCIbq,k*30Ga'73aqPm#%3NM!++t8fP):X[`KO'W;:+i1r:)Bf5goL%7gB@j]N4M6 %n]KBU41WM!n(Vh'?sHGdJ;R*e6\)OFX><(L,jX0OYBb=T=,CRC.g+g:g`k9Q"P=@P"EepR1k;CcH?>\^2TFM&,Eto;7%Ut6=j%]H %n!0EDdO[b):KP,^-Nk7oFUO-)(@h8Sb5o(VIG]+Ea_*Kd5pTNd6j'J\%bAiqd>?e"Gh*H->+[O#+cmP]$!PPoMnWZ>K#>/6Z*[U5 %;oQQ97tA+9=f:8u4uZ(aBZhG:r%<^pOhrs$@!PpAfT1To]K:oe %eQQ\4W9t7qX&#s4%5<#8=OJHONqLl;r]E\Z3t@lim:Ren@eiZROD.0+EAK\% %GS5-mj3X0mMUgFu-_3DBkQoJ0nPY63;J2:hPRcRL!,%4]-<]0KXM_ZVInbjL&,=hP`1+HRX:J,P*EiMs%f$Pp[5lsL:Y]AL8Oh$I %k_aJ=mTGB9$c"?/QAMe;B6`S-q)Q7?XQ;d %2$I"s.=-HGBa[G*N(;:3Uhh*2C8-mnf`\K)IXeh:\2cp5NYEem]QJaP62!0S9^p1D*F/uGj;efjO3adjT$Wg4NI2I]>JT/!>lKl^ %h+J#:\=.hiM&j4s7Io%!M?q]h.W*<%s-p\\?'6GCY(WDImneLI7d4E6iOc_U^)nUKats;TVPZ>;NK(>G(TQ.7Thm+# %1=H?5A?ujJdUl%$[j!uj4aaf`\`Z^G;_r>B\]_s(b\iH21I&UbGb"th7Hd_S*lhM%A?s2c_.%gj6hD\N4I"]%"*R]):p)dmao?)L %#70=.Dq[5eR:'_o`CDSfIE&2 %03J.G=]uaFI<./4q7DY5abhRr)T'#JN>ef4i`cCqnms"6f`s>\OS'-0qMm?R;9n'2<=X< %io?0.phhZ3gT9u %"UICC_A%CJ/gQ/FjI,eZ)\!JF_&9o(7S(]RC_`;'TP(G69o5qD%Y72PZ2gT^Vn6.JFf8j7:Q=M`oZ=ULek'D[>nSd!$FX&5a6"kbdX-@4.20LZB9e*#[8e>/AI29iUU)HK)WMJ[C5ad]cJ`MG1OVOsHcn71IAe?2BaX>Rgb:koVTh*SH%.//*6^;:02PF%WHI.VH-5*st)IT:g?$dRS %Q!FhF^e*t+#\UmDaTEU-iBXHTTFk,Z[TV-C:&ee19;*lZdp+PAEM:b,0&/1/0KIKZ)r9I`V$j33o&/MlVo>ehOGcD,bVhOUcl+'L %LM5NZf^D!jq#),KiM6L,31/X_Vc`b2_b[qN(tKJJBTWaij3#dZ3-A+d#nBE_b-@@HFPb/Q?WeSj`H8?R%O$W5VpinSQ#gb`hQ<<- %j&:&Eg($nj[oc"d/B&UELp,3?[eWC['Y9#7?;#dal]g(4bBUesgiE?=TYP&6(H9hlK(cHgm^Xs&d;JO++nKd*4r)KV9XdT:GZXA,Ag/lP,sC)0FC0@^s/fan@"R"(NtI9Pru\WeR-@[('3I'rgL %9<1Vr).LT?b#raU=7Ed<@r27lRMq9V]o6>s(eU?)if"<\NL7[&0*@\RQ-2IH?:o163jZdZ&lhLN1-!Bk";!F.d(:4HGH,^B=1*pj %1H?&@F1(!oRa\dgD(DiC"lg1d3A!\G*9FVG\@+r]PZ13eK&EY$oF,AH'KA6a<,`im!@5h>;G2djC)]>[66^fu)mp2sL:C-7f*8V% %1L3+7kpSANEN/]#!gK%t>('`jcMIF0Y.gXXO&c42R4pHH`l?'7:c[T&/b%EA5,1nu"*$_]ct_8CBV-h_A$*DbYS>3PBZWktPAr1= %;9b?UngYQSjXf,9;CifDQ;K*GbN)LqPME3HA`1-Bb(nRW9/Loe0lN@>4W.RZ-GOh&A9K7S^mQ*OQp25o:A64%!J:0cji$quN<\Y1H+DbN&jZ$soDP@WKO'k!RZ&cJH$R]WG`_hI.Q7N#A:QA7jh%ts^EY4Q5X9o]-25SW8o9DnTWGi&""I`UcjsdbgA[#G@nH9.-:$!dq"MT*)SL(.-d(D3^ %Kt.P/]<$nIOU\H8+()(PV3@].hL()C?3\GJB7OYu!%INJU#6d@2?`guLZRl)0R?I!(A=7=i %P%Q;62k^cbFVa*3Wq^)gbZ+F<@W"$YaS>SJKLb9GdI7lJGY5%ueX]Ta"-uKTWPg(iWXL)j&pQ?L9W1?l%*7d)!a1:3-t.dfl#SJh %#LmGg!5rNc2q%h!jc]^B8WD./Qm`R[TruH[iZj=Rcuj9u7k6hRE3"["I6^c&KZ_m4]rgTEXS$6l1VjiCL-D9A8[>EFl9Wg51CNN4 %1gj&_ikn;f@PE?.$Rd.#0Nc.+@_j=.ocshdX(SU0[UGBi-6?(KasS%Rm1+tu%nV.%ob_\V-ls72V0$6.Y\"T'6+Dm%M$0"P?tOHt %AIann,=NGKCJ:sF8-nq71hVkoWZa6SAWmZ[N%@=n)cIX*i1I]k-&"K6F;`2S) %,$g=3TjO-taZ0Ibe!bDK&7-\3ZN8SBeSK@heW'13^op1r:?S*!J&,JI:LsV$?#uag!YS(heZ-k@6T7rG1unKaZ_Fis/[$N)`=NB$ %jPrr"BnZ5-jS5)U]:T>AqV+T>.Q]R"BSAc^9H_:B_k8h.0?P( %j#p>[G\2+f5bo.1D3H)%7Ad.m8b3D]HZ.fR9Vt,a+HWaT-29H!bR]V"&N?KE$aTmKDcFAg6E05fU1dBgmo!KK\F>>KL=ccGTaY>< %')S&Kg;5"G&Z0BYQDr,.PaZ='O9$k(gEIaBbkuK6>a>^!=8mP\J1>n3DrIKl&]40V'$*6Q2GI-?WhgdkaX6?eSBjUDWN\HWbTu1C %e1@+X1#iJ4>PS+OScA73(*JT0&-1)q7?h7KV#`o;^^oR-c"+Oq%tG49Bs%:J4B#o9Rq]2O0D,c_Jul2M(`3![3ElU5>VjZ?lc(3M %Ga7Ju2"n'YQ"`6t/e'(&GB+hCiRuoCUMMD*XG68MMi27r-YSS+,\E',_9-ek,D-_3O.iDnN#6)f`&5g+_Td+u#l>asLboE#;2pjB %g/g&3'Xg^S4q3SL!ou$+<^[o8OU0,-5!#!Qh]L"'JQV^e;dAt1 %M_h[Fo,:S9&+g\f(^]=F:=teMkj]q@]s1W7HW2;==AJdeoXOhU+SNH:A`&Z6g5#*IUT%B2m5`,S/5i'b(+]\eF##tPI(*gRtoTLU\Y_/71=WJntl:GW(boMlm0oO6L%T51K9&W9AY^7i;8$s3>#q9R%!)5SHDVg7Wb)DI+m47s8>Cqd]8t$jKCeFj\PhZB3mM2Jb+Y!2J5(&'!I"dl6874XD3ZleE%gga@ %AEuTlp([r/&_m2E(k,"!5A$B,nBqgRm+9AI#K6C)$N3u9r;eeUOMlX&n:+O[?s#nVT]EmEeW!N3@.kU\Ws(BnTb_BL&IBK5f>dL" %oaNZ?Xd*1Z]gieW/Sq9P^k8X?LKi-<<,Vr%`K_+-aU/]g/5a"t_'uiap %b?cV9QE=b=Lg=`t$9Y,r7$I1$4!/W'E5C33SRtWn,*7*f2!VBh1L9fm:(Y.^C/UGUc!k6.bqhXq6r?4phA&asKir[l_E=W0?D2Q1 %\#e9caa@.BnBT+@Q-1coXCd3Ciso#i""l@%.RO;H+"d%q)81N\9=.m3RTtjKo5+D+rN9p>!-nS'hU7bm:Q%$U8og<9]k)Qr^>qE` %_#oeh#`ZJ(>i'\50,?m\e.IH8i='Rh]uBb-(mZ)jj&PR+%KdPpFk[A6k\rdC:02-3%5_r4)ug%jHIQtW"9pLp5VGY^d%#1NnKZE! %Zq[d`eN$1"cPCs$cB8YI&ekfka[$9YNCkR[H)N/sVZjYsn(2VU!5]*5Jn4!rP.1Q&N.jrjQAl>AM>@]"Q4BVIg:d\:uG>CWU#F7'^7Lfe>R+-'\o^VLTLF$,J&+KV\(,;sBAV*9>"/!sLOFoG+\qWn[a6.W."\!J%@gcE=R=lGa,sjF^L-[;0..o6r62itI3DDg_AL;D#8d!p0#:Af;Wl-Kpi/qbk1"h;RP:5EGO*=&_:R?_e9tu %[T]4b=&BI/)\o82OVS%>B%dno#WeQm-T1#)?;XH2!i6:=JqX[`O*X2qo6\kJ#o>%I;a;BVWXDjJ.i%0]8/2enK\mnU#j+ZR0&4Sn %"O0ZJg,=`H+&10L?KdB+LH20JCsug)l7e-=-/\AL1No-Q43k9?aikdfn.'MffCFM`3Q/gOj-@jL_\D6AVXmD\1iai'>E`d-5]DBT %\kT+=aBN8ER&o'!fRP:*^*.&TSK%cO;^KMCMZM]Gm)u2ekq[$tn9A*TZ2bSs7`#:H!29<1&i#IK=(aG1+N/H7"?erb**93tJTO9s %T4GM\(>6][eE/hJD2L`a,\1j %lC`;oF/a)##)Q/VnjO.72EsKGlO*3!\C)NMS"i.Pf4m]^nq8bD#N&pBfCfIp;a)qHS-6#9&F(c%HYGB#?83i1"5!de7rVo>8eSha %`1`>T!F8EX8%eAgTks7\GkHHTUifAo3i7@+'JX0S8^/XNPrL^\q?TNg)k;T>nKG.e9N8eJWGhla*3Gjq]F%a8M$I;*6e:;jAAD(% %i%W,hR#Yj"*>0mXQ-KpOk$CmL*isr*/*m;HrC4c&TK]X3ro;unp8f/dKM=t5,U[Ctge/PjKrWRc_2q`X"iZ]gcO"b[3@VGUk!/Kcqmm38#;c,S''"'6"\&CLjP85nNr#!Jr= %Nt'JlW11k'9$)#b,Q.'MBj=S2K)P'HmE,'P`[b(]c.#q2jMX[A-%Sqe2MbT!3IIQHuX[B)b@gX/=R`88OtrW\O:Q?9F74(,g9hZ'(gRB4`nb$ %\cT5[J?h]/m1l;g&/7<]O0:gnLTpCoJ:.Uf^&j686KhM/p.CI_kR6o69HGr$S"Du>BDU/\1# %;n:0kYW:IiN,Y'el6>IJ.YESIrT=Yq-*H6"gVMp[AfP`Q'EJp,N*E:HLNO%k;A*#prq";dKDP9TphA@k.kh/lHQA?25^r1?XeNt8 %pjp(FmC6:$AX'`?PtLh"W=:]Wi+_oG3Fcbh(@R5ieBc7Y?MsBBK4(iNDhNAlU<7S.C82AW4P;;_>s8`/]U^"@4@ %BG%'UQ5%ma^/*m_pAl\^/BAH)2\['qN-A*@:&b-c/4QgC]*R#=C9&Ba.g2Pb%7(B1Ym!MRbjcBXd-$A(8-,h2%`Vo2P0sh:>n@Fm %@]ft\PF>K,Y4n9[Nuh^U*pJ05h@%9IP+!t=3$m5RR)%T/I#]]BJYF,8ir,!O'* %ckRPb&95:5:)tH[LR?[.I-_D;4%.o-,'8TRh?!%g"XC[3-QXIm7k!IBU3V]G?GT2D1"AY`oa4TDM!A<_J$38!LUcmU!dt6S5")gi %1%595ebL]iC4O`96$/5I#3G*kr]9KQJ#:`Caf%Fa07;WNSsFMl&/PpF%O6JjKiD^A+s-)L)R %ol)3KEKng09RU/=P8pH!NcQjTdPMIj3es],.qt`qPgWFskt7E0.&1pPqRVh:4%uUo-JtsOl40#(8*Rc=WP[]&iaDoZC9mE7%a(GR %b+Q>gJI0MFE8ZfGc%uViZGhubWNU@a*=3HMk_uF0:ckWA`+$\hjk0hi`bgsYgf7cL/RKU8X7(qrcm!Ht&&:)klicFHL9eM4"[lg] %:sRkJqN%j[uQuH[B8$bn%7] %l1@N+k2]q1)&S$=d-K,R`H1/4AGFHq,4pd\l^-/cAe8C+9HYBt%0q`&nXE:VDA)M;+UJXKkdEmH1Z/Ndp %<78%>9g6h`mB&Q4$/mC0Z6Z99g#h+jNjItb"I:\c43G`JBgF.1QT$='"4r,/P_D;):"UdVXPjlKO\IUh?U>Xa6a!:0 %X4'*1<'_]GJt:Di;BSt)h$4s&lZ0I2\]]c(>rO79QKo?OkH5\j0W-gZp^B_qb]AY$)YEeS^&a(ckss`\3oL*D$O%$XL;O#O8hdP% %Epo6tM_iJ;@'3VJpLKhU'%D])lml6-\K]S%aSE]iK%uP,'@Q"Xber[(pjL/B8?1pr"=,4,!%iB#"#f7$DF":q]j"&ZIOU:qC6Dkg %jI1-AjZ"^^!0cammdE"`1)h#cKCoS-4VTr`7b]hsGT2g^%>a'$^X3P%lEG"6H0p=pGjB0k6Y="4#N&,ZH6lfZ#]-]Gr8B7Gm\f$h %)f3p\?="lB>9ih\;#hZa"cg[Pp3)4A-&2=0.ngUDuIRMcjJS)7%U'F,FNZV)W&IThki+fa]uL%aE,u_P8%Z %E=U'PL,;LQPY4AiVBM)NR.G%1%Q1&E>+qH)dSl-]XB%lqaKWsW;#n_UAEq7K,JDL.&d[,OGVmMOLb4TG\)j6E9M(Ir23(9IMs?!Q %J14kt'][f^ilQr'nFLhMr#YWT;?&KmPb&l.RTiGK'GY>R$?6,YPTTFSBN#ft<,/5MZa!^XjQ$tFD+R8Y:m\`p1gbmR)HrhGTfXR\ %^0TjE)Y.YQRCEI&?&.#05s"h$7R%*VkJJS<^ILWf5rT=B%rPAE_3kggNt**LG$rtUiNNOI"dHTW;sgcXZi(pJLk,WQZ>""Lrb %I*a3=o$hCp&;@dK1`>?[,=T.7YunSOO;/c9T;?O@U#p1AAm%WUX-0ai[&eAWZp&ZuGSgimSnkI@e$p%?TOcPEH)[',<5YG1.g<)1 %\Yc-te7&>k0lFN/$LP^\8F-]3r$jIm$eQ\E=jU[WFqq&?L0 %*P`1_/D-@9fg``W_A\W7f2>$UEMnu(fci%hbHMfp8?Ua+hC@JFkFcGn($hmc9il>CMKiCI'\X=p&gC<$<6>Rc.W$%p:>hT0&jp3E %3*78eTq=96#AjUE)/-enhMT5i6R*\N+EM8,b.9jM4()Nbm/eYdj]KH)Ml*@$l2+X+o6Fi]YV %A;-1W5[Lb=\1f+>(pZ+@0L":.c#U%)5b9Z7@Y;Y0Z>`k\q/AD([naBL-]+=,\$m:RHgefl0(Qi%(i5`TbJ`6dJ"u&R[,PU"/Ef(@ %#S]9I'Y(VAP;&_1(m6PR'/^25?4O#GY#Ngha:)rlL4j]]<''IqG720.LSV_@]4keea"[*j14U\f'(Wh(L7i;LKF %Y?!b%XOQiJjE,kCOo`8/CP^9/!_.b^7b*!jZpR[8"NnWOE#MW+l3:fX]W3147#9P.`H#335u8SAjf,(X;"U`;G>2#636EIs:g,DBTK(["n%Y2!]6s3\Fa1f\=IlfI`#p-pR.PaRdL<*6`ZuQTKHE"!Fk3R\8@'I*o!3k)CVeooJ\c].Y]E%eE^ %qXFS@/>PE[\U?Cab!?d:)\il6^(4trYLJ\A,A%cI3/kp"$4q5OJ0Oli)K,VuaITMuk7!2j<[`5ok^*LklNaib%qb=6C[5qVhl%Bk %`Y3`mPh%GaW-L-7I#X&S=:Y2L_&pWh+e-sFoL;-Ab3!g@rK-Eer#JJ`V))_/H%Z]0>QH/?:.RRIk$"H-f2NQ!AJ[ %=L:P81h&`h'.+1?a'^3q;N)%K8;>&/.jQKW]lA4#`>1`HN&R[\#=q]rN-!Ip5W+XPPZ,6#Eu\hlW`rbrk=(JEQBkR5BOMXV.6@TW %1aqi'H")"1NB(QNfOoq42-^_1$&csTitj01:1=$a=fZ49-ec935(L"tO%4JF!!F#b@M+>T//f'mTh=!,;4K/bjq:Jf[oB&!Bn+g6cm1:/3($(@dFM/o&qd<+)J:>'L2db\)aU(+VSbe7n+H.h=TE1uk-E5/$TF1a59"0UA`( %4*'FH*Se:4-eU]LrkA5N\8Q8,h%#6o7[-7joL*Io7RPV!'nW7!9etL!X#k7(8OpC4Ui`'& %AWos$f%=CE[0K`jRR^tdC>arG8Q;/3,a]R>m-6'^#j*7;_k=#4KQ%(=I4GkDd]T*\LhBK65S4,*^C7+AA5-bi7cf4<@FB[F&edbR %86.0aG.u@O$;X)_QB$!qNn7<\<+<%IL`#9pCuC4l+ucYjn5VTm9@8UBkXAco"PUkL5)9Xsrg6rQ$;gSsaVQS+cYU5'%4!<**R@r!k`3T[Y?$S'W&miR[tXRin0M-bq40]P4*_h,LI'M:+_,IXEl/^j`SPPfm+'(N2]nc'#):`m:]^ %8is#r+e)C.!-C(K/JPNCj1]-G$T>55Q<@RrJ]Y4ZeO&C3^fW!%LE[1C;DUe>_W9R*$?Gs$%Xs3`91,XEp'=m %:*ZKh*61Wa+IH>N*4qU`2-H1sX?u&!MFc]H&Y*nPfm0B8J`+hI^&lb)Bp!_QkO9tE6d3a^"-+U[pgd.^p&RhN@IhI/.57df!'=.UG@H:J/8I3-Nu>cAhmIt0T,7j)"HSOWLPd5NNqnk0L]W./d;lM$bgL\O2-HukHB?R9>aZBZhN1VqTN %R#R$$Ul[5O\1pL9_5QWK&jP01e?0Q4F%K8_7#,WP#GL^:(>o3"K$2f!*8nq0AHbVd8n(;/%5]qZ$^_#B^X+,2/Tb,6E0KK)7"eWA:`u-e$$gs>8:P28(h*X<*Z*rS5C[^,p&"o#"`/PtENYW[fUm=]T:J%-tV9/&\MgPDM2qW3K$1FG>g+_h0@T!ZW80Xj5DsrDl/NL:t2_Fe4TP9@B$88;6,r`=MnTN_m3Gr-+J]k\qYpPHp!Ya< %DBQ@kA/&^Qa9Wb:>.'\e7E"U'QQ6hV>:Df1_j;i77's$\5DQ(GL*^Je`G(8eN#^%+`okQ>O@EbdUhdcl+\6\\-XD:p%UlA)5jOt[ %WUg]K$OGG+A$Xt_m(KFggk")0%qq]galg#7F1_OXELla&g(cNEskM^NfG^olTC^\HFWeN^fpn]TPQhL,4tMmmW. %?G@-30M=p<;[9?d9lPGr9:D5`np6e\Rc?-#<(_$"N?.!ml(MMCEtqK6lU#MhFZMZZ=FhMDk<1sg9ff]a().P)V#=u3i`WF.,1@bfNe8B8 %Z``EL)J0ghT.T$/Vrq8Q>-%d0Ba-k9S0UY0s#IEM>&)!5;/MH_]aOF!L5TtpRhD[(fK'V88*1laqhe3d6Peg?jkI0Ym=[K[khB/- %2g5]@^TTA`%6K+).7b8mdl/aWL,p5[ZrC`/PI9*8qjrg>0c$@;L:$,8EoVFU%F!8Cj2Q/%m.Xhb\nU9)991-Z$5BisU\K`DaHQ[_ %<_bMQAhql1MPY8"bJ_3YKqj!K#fMXm(WLtsiZ*Sg$P$c4f7#aMIZmn#DU/.)=:?6(4.+Z5GHD#q'+qK'G08aC[VYc2=Z?h%+aU5+ %4PYj*ZQhF>ClA$?L2:L8AEILrXK0(HT\)@%*+HGnH#pT*inZMs"g!G%XWFe,OO`*`dc9pZA>CuC[[d.l_:R9I2VO[-'*:-F=Oaqu %_4S]K(7^7#bN:q?L2U]bHmGk@8-PkbI'-Al:M8tcKZ)lECF,F1no/!(9i='C?C?aT\:M022Y(pP4]1moHM7F+Z7n`RZR#W2,]&PZ %)?%Je(0-`kDRbBIAb-8_A*,arq7G)/tY58u,j`J30- %)kCL%k8nl\/?3;G9m0+J7FK1D!:bY@!iGpNaJf`L_"!$#0Y68)X$E)3`Aq1Ze]Vjd%D$XK5&?/4-;QBU'M& %F]C(Y%rIaSd-IMIT!;j2,Y_W'QZ/T%]Vn`A!@2(m2NcrV-=l6Uea/7`h4Z_mo>24b_P$'h&?=FB@Tok=Lg=]nhT9N&;2;dVV2NR> %SB+B%eGo?KNT]$(LLZVBWf5_S0-hXf5tXk!Y$tb%a))ARh6+;cZmmr4P_:[QC!^gkYrLgK\7J(L'R6o_PRj/FfH&JS0W1^n<)93i %W1M7j^0&ou;q=)Gm-i/K/"T5)s%.)h=UeO^?hKWG+.-r%e2:ZI"5"L,Q/HqIp1-W,-`0e=7hP-E>C,:!f'>^rBS5ek]X7tV747!!Z7X&`N("a?58a=2BSQX,>U5nZ]<.iP97j7As8pU0tFO!aX8!^!'22R78$a4kh/sN]BY+=^UeNK?[>V83i0I;Cc3=PK/r$I&![u^ei=(0cEaF %r#CDYMD3$5K-J\maLnA.+X_"9a[BW# %?Q?mfR*oNBGu<7Bh/atO^XmK,XP6@sBsPC"^-_Lc8RMOmYA1-Z<*gkN4755@8R.2\[mNS1(\Tf1EjnG'C1,n*fQ75u_c;;!6KWVRs0K`EV?Q2g5cil(er%d;geTtH+@?IDI4ID>:%V3aY*nl[[)$cg5i%II%QgI%T5j<6_4WB&15u/;R!7TGD7)kbN %Aob@p4aLb;5M.0epEk=-8O.-#%bp7c1%lsqC*OKoGHSo/qSD*SOjkh6Ka'?1fY%4u1/(eh1[FC*#"\3RBKb=153bt\rr:_r+3_i_gp=q&[?`pjZb %`3Z[#[5uu[EpqG\lt[@c4XrdO$-LK=Scp"L*uO72U^KoZa&$4aHFC]W<$'ri8Pc(sn6s/>Es&\&;]R^`M@gUAR%dZhQ6[(4?)8bt %r-@R6A"dG(O>+LS4RAD.ffuh.WHg>qf7m=l:0k!b5+?.XnZ-K!^C>@.=ClUH-rC&/H0_L!225H#o9K(M@kn7!@o]=6]&TB&jPPp1@Jgfg"DG2q+NF)hNaL %G>Rfuo]nYg_oS!D^I-^>2efi?m'LA2Jm^Sk,V3PM>@ES\"s<7C&QTErI**,bA28QX)@PDTPW"!?UB@j:@27FZC:Td?&e2)B8if58 %/gdune'$D*[.oP9Tp/D\;=a,N`n(QH]$^SQ3LeiT?`s:R1Su2c%0To$DR*r1"cp:;-rA@Z$_+i#nkEufG3BDC<2Y8+k %S4?+FUhY8degW[cd"CO:NGqiP<@*6XPO:FT'XZP^Z[IYGE^E`31GO`LE,m#sVLcBVYuQW#cW(f/`3\i!9uMHV(/%NM %q:TDS0cG=\FtU+:*URkOB3hOU<2ld`4%J*Je1Q?>g11D9&G<"o\ZRf`o2(Q^Jpn?u)%hi@Lkm8"D.F_B>Ds[W=[BB^"OT1`.4Bsm %:FcTiY9l)@!B':qWc6?f`^i'4<)UYWHZ48qPtcIU3]"Fq=5:H<0=)`o\#m\j^djt%;(Ln(?+dBcJH\5-H!pe%SII=$MWia8XsFce %W[QK*irUKL;*.W?,HB9HksHr#gfHbJ&Keuq20Fr^PIbPa!_%]g>#26@:d\09)G8=Z7$n9>6l7MmL>o)c!&d.F>;1os(cD`)q$)/o %`<9"#NsOchL6MH\G+MC/o&b_L*/MG`+/o9h;KKq_GH1j?Z:$Q)5"ri#/*fYtiXqi/SjYA\KCX`;_Gt00)CUt@E!%h6f6j6:rd>K> %2baIe\!I>R0oK$)WW>[-=e!%n` %/@Ce8X`0u=1EPpY[R1BseZu^S1\d0W_K/Q`610[,k[up^@Ke[95E^c#!J>licdEKh[]+.pJ.".:2dCME?^LknCA*pF7i7;F1tpQKeU:H. %8a([G/C4_73hVg/E!nK.rsRKqeRd2DS?UFPA.Sj %M$sCj3Dd<6Tk1_h/66N$Nl%4"N_2/Q5b`WSS-=LX7*[37Uu_m7-AFf#a@U2&ZED.T^\+h6G(Ar[uaI_6.X9= %"Cbu""#n#up7O#D<5AVp,-$Y-iq5'2=YK&*aSiOX$Y+1lN^^e//@]ZpjoW%;i=&AK/(r:UhR%H;VPcm(CrNL0=X`E">/n?FYlf%' %nY)?)@s7CkPA(5Pg3I"!AL6fLkZaa2[#pJ)+sZh%&2/um`:'c&M\/)[KU.5(B!nJ9JUugTZ?KtT`)f9:BI54#%iZ*iEU-Hkq\fJI %!^hF0@QSGq7W)i8/KG+:1/udD^a#Ph(m,1?h'*WnN&*0k*ju;9a>#7J3ipt*ZcP,i!g-2^jkaGTE"u<.DL30VRn+F?d"0F, %&X>(NS'?1WlTio>TK4lopbjZ/45?HB#8l&lQW@6_U=77t:^)M%/)*[dZT)I#N?=.,04n24>Ri8W&K1BO_:05DVq(aRF%[7H/9P0gE[2/9BS1@Hoj,%``L5L%ceJ31AcD.02 %fQ5*;&VA]YMq.425!V7Z0OCN`8:`8S3$]jBl`rE$-fnm22SdD$UM_#2$<(D>rjP2!q8)k/K:('/00*DqL&BJAtDM=2FFMJbtNq*<@7\%E*l(&+8!#UN)*bLcW*%Ujt/LWNJnFd6m,&Z$3F&SRlG1bo]'s/aJKMKd)%il;3OnJsB.URC>A!BdD7P7l"6j&o*_+Z3^!spBirjSUD6QTglFa %4?iOH&%$,-LDnSUUT#Jga3gUCEI]T8\iKe&`XkYbLt-!,0:]TU^!^D-E3,MF^T6h[%)b#`(XF2jfi/1%QEk1*L$##^.9LG'?d7Y.8W8Y)N= %1(`M,`23MZ>!kUYEZcQGfWMrMLs%/Rbc;K(+u4*B[B@cN,\k0sjtp#D&E9PeY@g7h-%J%b.6dC7MW^&$8S1:t%!N5bo+DJ\UR>1s %2[\dZD`,%BM74kM-&]hR7!<4=J^+[KNGn4Tff(JZ&j>j'ok9$I=S0qU3.rYlB/l[B+PZrWs4m.=HWmN %?rW+3hdS==k;/cD9\!ORq'M %7Np"k9QEWp"*oaDbZ7gGEL8"2GS+\)m^<7uAg<%A+/ROc85e6;0&6u\hhqZ\6k*fp\ZM2-$sTS&g9"e@FH5LRQn,496FXq>J6pKb %Q\*aFUH4eR2Q7p0Wq_#9QIphI3rrTmn3+t`M2)AKPk-=m==f:96lX`4g/CMoOPGPdfOLkYm3/`"p).0e$oaRJ(qL=heh1Vg/SkkE %/2JKVP[69.D2VjQM52P(>[fu-#mb=R-mr"n[]Dtu9-H?l*1%%6)Q8tGP>I7E0Gb!55eRu:DAJNV*#\f^9InQ4PuGV1dW8]^*A_Fu %YX)e'Z]o0TXXkGI7&j*,NbUZg]7lm%@Pl5=_dp_gm3`MS5?(9(':$uIhk&"r%=?ApX@DIe/Phi548S$.0nCO06pG.JCQ>gGcbnc) %:AWo8WdpAZ_OVYu]KATp*(`dKoPMo\8TA06c>Xi)&ajW->1)rGYQA",ka#7=UNn0p&c/+^,-?g&Qd=sAnMhWhanPir`2L)i]n*48 %]33+A\14jFWr]H'fc!QKD:Q@&0")YIkEC]A0B)9!2VM>c %6!=u8pC">C*#:qMPB65BZ>P^mK:V88)9HTG5QL\R7$nD-0o%MTS?)b!]pZ)1+(c[$A@kuINPip?tC3;Fn$5j6FHI&KL5/`!g?=Sb(Q5n=CC:-/;V@JgJ*@I %c,.N?['O:'Tk+9]['Pu"B;I(KOjam>4Fb:O?=D]&F_[*Ueh$:AiXj=/Naj!Tc9+IKK)d,rCRsC32K/c_EQtdc'O""1n*G)Cm6Z2[ %#*GG'mGLg3GL:IH1H&7ElQW_+)<@RZ&Zj8Zkbjq;!ct%03Hm" %/K38V*20HGIRpMCZ_U$BMK3:<$!GrcjJgf>TT<6Q<,rO_)=j0*3$&JSB6=j.#VAlNm?:DQ#4SDS[[&:h^aGbT+-o>&/qTq1J`1?p %.EtR8d:fI9jG>g]G&l=(2RTAK&<>TJ]q&>]aq,t&DO=JPX6KLXhnZW8EXD;!?)h6iJq?,JC28>+,f,njGGYN2WY+5X0=8ApK/VBnmc5pfUh37J9+-])R?>if%U0N[?)3dJ %NnS&1)'bdbhqd.>0:BF9qr9>_;W_ks2%-VTAW_ %1b@(j1+Pf/3[K;U]5]h4lbFJqJgO(&$N#j=P0EdN:1O3,!,`Q:=)lYjBmP[-IT.%q!n\fV&R2PDH:d%\BU5F3H4c7()2l)BW@2A"G-1#F=N'Ede'^MX,ds4;p/fs30\eWQ]MuDf5rer2!u7^^E9Al(-dJ#I'G#f`\N)LIL^\T0!k=X=/nc@E %3L>/b,+pD'RHe6,9F--l815t#&4'P&9t(gp1+#r>\e)%2[)b&!'5#*5J6:a`&Mr;\qd1b1pE1bBG.Uq4Vpo8DXJ %B'N9Kpsn9JBkfGjBVA>):n3VQ6fgZj:aLVr&bin'!To=j3p:G@5UWa7=;\;q=R;oPY@s\',k:58MG\.l\OC7&`W`4c0<,2WV#b46 %9lmH1l7EHT^1aNR>f&s<7q/,o"V1N:V=PFhRpLZA?dHh31>$8#H"iD^;`PH8FP!1j==W^)Tk;/c:Xr3^fdCj,<=Qae*GjYC\semu %/=DEJe-ho9:mU3gW,no76Nn'Sf08[1HD=*MX@k6^r]-QFJ=9]97G;AkS^gr6JX"@S6W=FiiF?#`H`E&RJh=md9c^GeTCM5iH&l^A %[MI%_8Wqgj*1%/F/XOP[XZ'knLLe+N&dB;.\uSE$S0_;hD=/9AD9tX(K--;XO(i8e92uK7qC()_$_C.K"shD.oVk8'q/UK<`@&QKRA:h'#jVU%RMB47SsQ=LOOR>,6Ed5#Fbj-UpD_&\$5A1'EDm[pK+JQ)WP)m:4@Ob0?9O3?P9%",R$^nP1Q-_-)3a;T^cd'lTe98h4?m<3cc_bN(q_3:akeYK^IOpEn=:9<6id=4U2uB]X %IP?HfIRG'(6BYM+b:;?%9a)Pu"NZEe,ZY@d._Pdd( %%9p&[lqh5ef^*A[:iA@K)M/YH9Sg?s@N9RXq&[lUk[/+!g51JirV#s8mpBG:H@,VUcfaI8AqKF3+.iE(48Ol)jA0.^nR$`nrN\BR %jQH6_Z[[;lo0<39q/:1Y>kNUGoG\SF_qEANI,!ENo@Zq>G4Y9)s4]R4(NFTt_qEA-N;ra@MjNo-cgL/_s8)$JmN:>8ruM.,kJ)9? %qVqDNQX9XLheD30IMeCE*1jL2GP%:m]-34/Z+$.Gk^@Fou3t=^3oZb]_oU$r;A1+YLe-9#ts?;3QFQ&U^Lpc#,TC5T>PiA0]XUn&gW2R'EM1Cd\5Rb29%X+:^lA6QG?:." %?=(9n:7$"irJuE(rr2Wfe_B9]:glQ/l#Gm15>T`bD<'A8gi,=C>2`M.J$A,8kK_r]mI^C-IX$MDIM^V*^41Y,DXF^XXn;e[ESnOD %1CiqQ:XAXUgR#CQs66`EY'VIEFIeH(^Gi$6YJ7WX]__3iipNLW"SoFZjh9X:*VRg/qsO1.eZ4&L_AaBA6,1J#H?T2Nc.e/'N,)Y8 %R_/O_\Fi([6i#%&`!24fcT"V'WASgZ!6$=pWF&uHrVa_.l7)Y9m-9S4UIXe:Mq?R!^V.1(]9Sc>-Q%A=%cb=T*#s#6DAulZNp_%< %9eY4*fA/aE_agHm;+LAlIcj;0Q*0uhhIXI4HN!"KiuT/PQ2]q^DpZ*,\ZImE+0<;+jR^,7lK7B^gYZ7`\&FisT',KEP]d`'m6*-HRor(5E0*kC %mqu[t*%J#H5Pt06eZ5a;?XCFY]"Eg5iYU>daC2Q%L\8+]%dW#\0s&91n(l^l6#pmSXh=agqZ0d;1P40Wk+Y(^=,_=/#0+pbHN3N& %()sMT+77_5ar]F.`4#pZ:MK %Rs4=X\h4t0Y;UDr/c31>RMRW[hd6?EcEY$r@NWf`L1?cAo^]1%hf!&3=I8cPhc)r&:.8kAA'iMMR)J^%2f`Fng="W2 %[f.+:@j?&EBPBS^kRA"ffDp]Fc7C#mdf`CZ@-NhF@59k6lsQgdlPK %d6NN4/>:)a+[52)]9/A"!^`sslVdjOCrEtG!?jZ%-TJuQfSFnCZ*')2*4V'?/2f9X58XsKSU_8UeS$mNG!C;BDe5t3At*^LmQ^Fo %`/3sJ&U[6@=hKglg)odrD^KT%REbW+1B!9S/,ZW-LO3!_prPGVmh*3ARj!B0*3\#$gY8(0g^s,M<.St\6b0>#YnLX$m]-3Te\Y#o %'Ra1X-X"a4osahRKYQM8q:.s3im&t;l$tf8:nQ&7Q+,0>/K@S+R>TGoocXjEX4Oh]Y*.90FAebq`;0&OZmJTF %e*2*<*D]m$Si3DZh$KT[<>gB59'5l;npmQI??>n2mF^@ju52LMUL)50b2>Ojis8^:Lj\V3T[5:!`b\ %R-r1HiMSJuqL;:RrBFZ]J+s!?7K:9Y2?l+8/g&>),jY?bXg$R%.[r9hnViP4]?Xa;UHaf+Ea,`t]hk\a" %+<19nEKJ_gm%Xl=D!7DcbW#5b19$;hfpfR]+2+j2?=1JGp?(Z-'aofn'.m](l]oH$Uo'\]2;j?k>'W(`>I?@HmEZ)]sJS]'b)\_H4X-YJXs8'^,?XI*P %qP*H&X"X=?FoCLX0E-!?qss%>(U(#KHu]&[imk&]nDgj7?KuPq^EhgrD%,`D"6ie3n73Z4%&B)AqALk53!li&2;]mY>?d]sCX %cs49NDn(j+RlB=/?$(>[bkdstRs4V"\#UGcM"ULt:,0AQc20h,r,'ZsUMC'Oa'sFL]t:7>0JIe0^&Fm9mU+hKb/Zu-J9SWV9I %5+IhGjm;&F3I+gMUsRn6'>Aiif0?c6G]FRJYg`<`3fDjnM6`PVSPRXAoFQM1qZn/o=>^'U\*pm@Fq9YWpg]*,7FP!Qe;QXUXOq*0hpmg]?@Y2ob4IOa)IB9BOr5N/$lM8o95i3=kd@,4OA8GPW:g&b5?d&h^M:sa0?XK64`hi+G2FEVn?$ %:[$\S9RB7baUUAb5pna-3sDf`G0oA.Ra9FmWnZb6A*fkjFT#_TSa<#5*OP',n,_mK4--RdQ[Z6"$2iQWfmDnaZ(8TNg`$d/5<%R9 %rs\8?jl$,arSem_Hu[l]$IeG2NoA`nHfV=.e:k"5!r`'74TU%Wp\O3"0<\]aVUM1$"H4e'$oB0>%qUMurWq*BdUU4:iZH;F/d59g'LB0`'Z?k#C_qu5jTk4Q^TgP_E5]tN8p_On72 %@(5^g7Z=m_)u2\_bP(R[]jC.;l.*D8ht>OkQb1)->@CN6p38fRFT(q(gHSrX]R)?9DSP7f[kX\LN^#@@EOhA0qa'#sDC<_1[_)

M03FO:V?LT%pdkS&pKa%/dU_n)4e(i8-ssIs]cQ4rPH47^A".r#f2>oP(;h)o5I#qHE_e>g %cM@A3ckl.=>\k]'qf'3eso( %7ai-mE&*kG:SVVKDT7mfF?$AhfGc35Bm3SVkXO#M@K"5#2Ep+/[>/#gg\DD5EmkOi\DN*nF@s(#>jC[RQuIQL^:o$QCAQjMqa?s_ %6,J.Z^V%7nCL(fPr7Oook`mCUDRAYOL+p2u^V@AfiA\,uV!cr$IJr`ro"Vmu'@H2k(RN`l^]14V3+d:mT8pt\e%DOGoO;]\5bGG? %F%Zbk,F#)bbhMW'6\BV3r;Thr?L>:(_Yhfp'V@qLmB+1\:Na-PfSFnN"4uAc<8GL=e$Ru]-Q)(3%k&@1OZiBORc-<^pF`S]N=d3' %HA'AM?X9`_QXpISG=hhYV6Qtl+pRItOGofGsDX`XN8e_j5IfiIOH %%I-B[qeTc#lSH/q[aOh=>\.-MKcb<"D5HP/]uj)=\-AAC+"sGY0jjt@r=3&EB9&#Y4lH4.#YMNn:ibaNfS!<(+I\HhNSAG'ENN$/ %VrTQRY`JT0AMEgr0)@qZj^2lu/A?C:mm!7>pg8=XhRk4P^PP>QmN&R?bN.$-jpp0pigrm@s$m#DaYj?[+['N%Ii:7Zq:( %HX1RY^cG5aF^$<\G_A]4pE0Lbs7#mEeXLJ@!6sB(hn?W![k7$oqfnRd?@9GOo5Wi)ipQd8?LA8P[LnSk:7iUtX415!^RS?QLL*PJ %bLq!GOc^WkQ@=*_9-8O5\W?8_qE(^/J*L,-YHM;OjQf!1'E$KWMbh9<+:dQ$0;j0ZG\o##i%oNsD""0G*2;eQ-[b]5hqFdppF*=e %^E]%/jtC&Tgr;J#L[,I4(O*n*gfCEe4M9arG5D3JU*K^8p@cIt?XIX27QFHg3?4>X>?PFU<#jT8+EW(LLO_q3o_U>7TVNAF=/k22f\6(g.]I\g\p$ %I=(6_LhG&@=k?OoEIM(pC%Ua+SsIS0:fG'0ZiArrbL;oX.*kX3G^W^dV+SL;S>s<)]$*t$VlBG606=,-9H#=-$49#O45aV37WXSb %)\"fQ&r*;E:AO6S3u_,[BDZN=O`>%4e(f<)L"sG[]pda*e3"-)e"$:,9*>-*;e9t7?_o#b@&gcZb>`R;fp>LKkm`kXT11bbSOJmY %I"gF[GE/9hiMk-PUCXWr$iSOT"+MsWP:W?B4`1&3C6XRK2CBAYH0S%r:Kq#k[\('>n`f,_iobI4NuLHN=2k0XH"QrS6L=+>Oe5?D %1Ng?gqkkqr@)/Tu&UNW02D>='V$CmQR)Jtlp4^G5lD)[<1,1eD/2QU\p9sV=GSR*A$9(dbId4Ts,4:B@SVaT>OsD:D/Y!8_)kS9] %+o*8(mmb8[Pct_"Ycm6m@IUqF+FJnJ.]-WHP;NpHPP+V'o%ZJ;g>1uAgd!IJad:58PI]p",,_4iMqRWU-nY,2Qumc;`!_p/+\%E, %$5mpF6EIJ`)L^I8D4m\*A`;2Un?NmZPf^%Eb%Eg-7D`6u+o8JN]Yp,^p5\md][pn*N7@C2*n:1q1-+T9.p8I?c.h$iK^X=DrKPhs %NDoGS9&nEF.Y#T5mI;+Z'?S90$2ZKZ1!>nS5)ZZ!_%u)_j"F7C%RJe];rRu2>E(5ubPD^Lng/%8Ja-!QKqHWBIpM81W7ll)VR!NP %AU:4YipPgnrMGXeZc[W->HE:'8+^DO/DS54kp,D)MVHs"Q+!t,CU#8agR]2C]ZdmA7?/tktmml0dE4V[`G:-2 %UZ/#?4h&F(PXN52&Jc05KTTo5K[^b9$75B53kZR13NrDP.Hu-4?Q$7YH)a`ESCfcWrkU)fcTq,-Ws0Oam@A,TP`$@(/)TDIbs0/*TUMG*V?aXCL4TJ'[T_5Ku#uJFA/uZC6!Z.qljAR %=j'W!k[hK3D4RF#pZF*p[q(SS1\K5)n_Wk?G)T,M,Y(Do=._T\+urZZHbSB8'>@ZV'CR_Al*B^2AWgA."`p/\b$XFUq9&0(?DY[5 %dZ9aIGWYR[0^A*_L-!^.m<.+/l,$M?m-!6T%mQYOINEb!C8:qV,n]jQh*7M;;ce*P>!h-D^0fr,g^f/kgF:KD6OH9C.k.6EWS]r2 %.R(PU#Ec0h64NQ3V_;+t1spW-gk#I"_Q$d2I:6-ecUl353-QM>J[rS@qL6bTU73tEmVKX79(ZFkIXea`d,u1B='os4D?1YX81EfS %O\HbkYGSC6F[(BQe9<&V=JVAEXDXI"8ZY\\YTB'`c[]/%6cI$nKqer?4E>/$b2?\J3+&)@-I!?ZKOkCADWkTe$AChgnZ62SI %@PPQh/%U%j[RAgS9`a.#Ef\%7.?^kpV]YnrX?.aS6:K!M-O*+%'-R4VMkm2IN.JDeSG?:KpKVD7T %[L_U"be^9uS?bh4mcQt"S#r;u+Z*J0\SnlXE4V_]&nLZrhWV-bP %cQjE:hoWV'']cb`6)R[NYpFD]??P:q1Ok&VIOGVQH$_\Rqe`M!)kT*V3`XjiERG@I3bW%C'[cl*[qbRNHUH;EM9M?im`?sHCH(bi %hSgA!GZW^uKQ65c8o()LUP2NFEShGSmlnq'=D1!R;r:h@t@J^s2ifc=mD7B^'7.H]IaHr&N6CO_>4 %NknM=6r_QdooRhWM/^n&9?T6feKEkO(2`E9 %NDFRl3HUp4ba="g".c,@Zb>$kUKgE>iFQ:7Z1(cH,)i;2-bG6aB6V*'4<,=qV'I7hp6#)lq4`MpE9*t %+H%#acfQLd%HOW>]#T)'G%&.9^$Wh]3SdB6Dc0F\l._*%U>O/)T=sfu2GGC^^CRCtco5cI^B'0qmPBUFoPBg897nSm=S=IZp %dk?gZal&(@W@C<4UGL!pd"*Sq4u^(3M^TMXD+&i&5C;-a87t6052YJ'^S!%&jUu9\_nJOb-iGh)M>bZ`jtK+8&B^Km'bLJj-Js*"XAr*t!G!<(N,rTq9^joM[=21+(8!)N[tK %Y[kA5I1^don0,h*$[bnBJOi^0m[Lp_X0,qsWDa %6Jp$=4^u'-m4?7okA=HLS/^\4++u)tIEPR04UC%j,H".AN@EF!QUW8!M[.H%r%h>7fl+dG/[7:c4&_=FOm^sR>$kk@*j9(@*i+a< %'q;ebXjfop5^n3IeX9u$e,^8gk1/T-EM%:M?7].=JpidRIP5mX]2OmEe]E$`1O*%j`J+(`=A1,h0+1^c#'/[$QBl0"0RHa\o8IM9 %WPIkCRA[7sI<9d6og(KZ=-4=8DP+!WS%0Ulj=C)M'Bio0O2oBoMC[@cP,B&GhTXK)RXL;fScu9O(u,F@B?h'Xr,0!q_<4#2gcu %6B5JQ4#=G"MX#dn>qrsA^2b'VJ.0C*/fB(P<^#5X%3 %l\A0[BBnULE]*Gg_$3Tla:tg%o'oE5Rj0S[`"i,/SmBsq`?41&7Mj[=(Om4T83m\Kk?+>u39nSI2mF0[e7,"7einBF8YE&dB!hgV %I&@r5''F171ij=3pVOpL+["#`Kspk0esj+J-bbdHL%`=Bb4)-`G-QN(B2S\2]H@"nc(RBPH4qra$?>;j24Ot@+pF'uC!q%#VXS5>>LIYa^$:;Hr6i7ZFX<2b&@?5:ps,[daW,"pmRRpN3QPEMWYT&? %m>A;j2I'CYTm&AtQ:uH7bU&1B`%&VRl9lq"@M8-7(?_,CcmYoji]OWIch=fs6A.cJ-X<.:Y0_/@qD-)po\&TmAT8@W)n1\9E?NlA %oJK8ajI%p!="MCnEmY*fSYY(^)WL/$IWB]K\Im77c.u[?>RjRk>?Z_*UEgIm$@\otjb=t2'%bX6RZ#BEk[U!Y+CQQhW*@dK%6(CRGU5qV7i8e"Rl;rG>A_EES %CdJIXLm'.U]b'9s-[RGn%EAfG+!d=pQb'1p$+a1b3eg2XDs#!l9ag*1$5>Ij]f[l["!gW-`Tff9@E(Q\E&\(!l)P93k\t)+1GLdn %_Q*V0!Bofl:A9H@1H'oaZMpVdL%9\20!/fb9tqaD9.DK!Q3RbR-L*nK8tt,Xh0]"AB6i0qq>H1O/d% %SE.2R*M?_o__%f'Wi+3oR'BCuq*rCOrbQnpb'huVZ.g@>)lWXh0%h)gYb?LA2huP0O$p1#Q=N$kn#d]VIH2(6ZUbSZ9=QD"^*amk %'5p:hfEEq(.Mk,pD:'M)6W`&!Fcn"iaj;B_1QOj,lm&FY)'q+0\ctp".KQDZl@`[M>3nC"(HMX@TR#NT4.JVIb5V:%It.$QYC?J/ %f5Gl+Cd7a\:]GqEYCCrOs6G&cG.Nf#*/Aa$-B:>R8`u*7Qsg^'K:'d07tJm[bK%EBIe)#JrBCuhVmZd@VAoKO0d%fjRNk(-d_la% %0l,]R^bL-2.-MLSGQ`7b50is0d"K_c'VpST3"FGkmMutqW?s4P(TSlY++[J1f6AiQ9tohE4-!S;4K7>/n!j5er^4g$#Ot>+3qE;\ %natUq\#8QiZsm,I?MI4koPSsKNf\)JLSM(igr+2G2JM.^cR/4X&8fk6&XYIMh;_@Ld_\kk2K%M6A/dII'Xj!*3"Fak47+GD)c$;U %&8lNC++nPh?2!e:2cD.HO)qYNn'OZbgu/K?2u1?gBK''Ha5GdXi#[l&Z`EG!QoBWGW=s+;2@2GiYY@ZbjnW03;M,qiSqA(j,e99`)5/HDW)FSS2>1! %5)u*l%O!2o*/0O8-B:I8albVj-R\6F.&<@iEF5f;m"Ke\jj3$1cB-)Ak&?JH)E7E7DX/O/F&6KkNLb_!oEb(/ %Y(\+iF63pX4G"&;jMFDE/_W$!L9=.@^$)Z#G-h+?hsj_H+?(PpFooJ;-G7D0TQSW(Nrmp!$TnJs#8bMp!'AS`O+GqLUHS\2R;MG< %QlS+?!nrL)HV^T2ZuTNXSNM=-\=Ga1"Q40h^jA?7jO%I&GOV@J!P:/Zjmg,Jm,91^GM%J-#N*X6*X0OhUEFqnKc^KXP9uG7fiI^M'F-kd_J_Q5.bSO&*q,,*!,E4]fQ;i@?ch.pYcm54M]9j.Z]A[_6\1ca:DV-,@GsUdtI=.B0Z?MZTnEWri^fVJc/T2*H`'4RlqRtIQgG0keRt>E(IHN0V*$'3mKso[M>cmPV&#uc %;%cV1"=%3rTti95ieioGAsd$>TbC.>.I=+#@_uO$i"/#/91jG0c;5-/8kYcj'Tjd'6cgXa>li#gE=Oa\jE`CaT640#7DM=SjsA(,]jsq-0.j&`"_MA7OHP=&8o)ABETJ/OK'c[Jm?PA+??kT0nc]\-j[%$ %^._-N]%&1oHVJ9e^PiH!]W$B*#FXjG,iko"!pgoj>`)p@"S:_t?I_"H@B_G+&D.Au8iI1b_)Rn!BJLsE/m48f@+=sh1mP!3f>8I(qLAbD-uKYl^@oYd4N9dXPTOKOP^K8 %dCWBS4W*,YlSN$+ %Q4iG"8R6II9#V]FXaiO>;=-VKP1[gR-gY;IPFDMb@%,mAG`[bZGUs>[^Z^(#BMn:3cF0?.hC'9.BpQ9)K*8.l56 %[fuP$6Ob;_3N/E"Lf@=:d#/27n%q" %j\Mo,pJ4a>\4&k)H@+4#4KEoNMOCrJ(@TaP];4"(NZFRkjqSia5fDb% %+g*Mf1Ac(E&]:Jg%_?@&'`tfl7l^"Oq$AcQ'*'_+.V]d*+tQ&Pclo*F^FdD*SfY`L\4L8%lD#taa_C+*]iE,UPQTUW1+J8[&r=FU %3fF&$#T#GBO9+5RHR2c&:Q["ePf/9N>`Brg1^OrCM6(!ac7uU3-ig9ab(1bV%n`]8l,6_XP6QDs%PX %OJLHK"(l_=0]=m+bdkp6.\B`O-n$hXWnrB*?-5cd?8Or3/8n.3Sk,$GVKuH-n#=1j[5..\.k5;$0VIgd)l1$c(>A= %JIP6B"-i/fVbDQV8Y(n.#Su5opE?X?`>XqXX,u<`;+YH&@O?+@;WHX;`gnl:a\r=/2c18W,-k?3O[pJ8[-PNdXJ+u;@c*8s,K;B, %Xc75'WR34l('W66oT]t)7;Q&Zd[X4S6Dr"o`2^uS(!HCBF3ZTSS!\1Y?7\tE,b\LXJ@]#$!u(b[R3W-\.ost_9%-\?X:+%k %AWP5aHp4e7RGiDG\,q].=racRGX7Zj882b %^0'2gZTUfF%SVdWiV9r*3Z^+/7D5!m9K/OcJfDQa3=.J+S7*".R<0OTH6CLj/;F[mM^TntA@6tI8(9!OD)!*<$`frbUk,URdl@MV>U_a:(]gGDGCkM)@GFT90O@)Uf*ZVE`3EY'e,#_s+c%D`A5\#EmGE[VgUEjJCs7sABE+Dus(-r"k %l8666$PGES!%$nVS4KRZB(HZ5\%#U5aPbuZ$&-Dn%/kltb!HEZ''Kcf89tgQg=`ETOru6nlqo#EKgX?$Lk6HT@DDJ<4&;$WM?ZDJ %RK]e6b&/[:5)u`T#,IisH]SYj1JMMRAhkQ":9td'pt1[EknQm2c8Zihj70-5Ep3')#ePV#ge).KD5gd+dC7N%1f)%Ktc,*T`\@]Ioh_:DO'X6b'kB8 %YWiLKFg+:^E:GJF!'0f!2iuLNT&_1feLqd;=b63]hE\aR/-F?h-t*5lU&i6rmlif@(Hn.>m$!!gm=U@6d/uG';qYro:\!MR>C?Fe %jQK7K/]=B9p@#+6X/XW2AXu/rnaJfU5m_J-GI4(Gc,uA:2bPQKTF$OHV3\1,_X1")o*<`U%s,(![13;\Ha4Ac!QWIWD$Z %$I*'@H6"=`J<2M9#Wp<)I%V%!J;#Ot,RJbV_`eep;dp]@iRqATna/Q@3Ne.oZJA(9p%pnFpn3\+STVKt^gb1bp;[!cD`&L0&AfT@ %G0A@fr?C4ESOO9df\5!uA9dfYpK@Gu03-6Jkfu\oR%T+.juC?NaXekInC:nZ#XT`$fOD3*n@F=OK,.cI95:%$NIU;B#+s*V?8S=+ %@SA@#/4'XiTpT9qa3s]XG+/c#bdZ=/NF/2/*ADQeaFcs2(nt#u.E.m0eCS`4PX& %/.Z2E0cH%gHspR2E"\(Aa\4@*Y?NL3gGlgkl6b7#@L+I%&;JL@>93EF*l@PK0f_k:=r4oX.[]UT)M[rA$I,4aMjR<;MkcQmu %%,[k!#9n!t_IlZ1:K@V%(-?l'ngr?Fg!2BbSLmitG=JqieEK5cBQ(6D^?c> %[b`Wj4C%5s\6N%HZhtsDbEMlg/=rDd2Rg#s#d!uFG?Il0^WUo+@htD8GX3L#[b"`#pH>YDAmo6g/FGS?"/KU)LfP=6R`flrgqC[S2Wjl9WXFiM80.ri=E-@AjV5-nmpDE;CihDjM42RkR8dh>bbLS3kN1qgpp9Z'7>(s1V %Tj+m]"qY`X]M)6\eqAB5R)Ot)i+5!e^"ApX%U1css*UiY96%u+//11]AbPaZ[(A!P*rP-X=\R(fJaNjU#uF"At+JjJGc"UjRrNiqf3][P$Q0_W./LV!Hf"O,3Qj78"C#M3J!=(`OS86r?Orj %dcd+LB@&s]m!(9J4FEiD0tN@oDJW0?mg@f_=M54,#5C[?9PMLZ&YZj,`l#c.nD^eUc'i>Iqei2mDKk^XL(nE2@EVUa7R'P!$eH5S %IO"!0`-D+si=4%nkiiQX_=&<\4<>hb[S-KJIQiCED=_#9jSlY)&"ti;!=c\QEs4Ol@X%ZE%,C8qq`TN:!aO>o(Ba-tCP:Mmq9eUL %?r4RJ9,D".59=sDL1@RCT,sjY4_ULDZgnhZ(H18k%iRc:Z!*>%7PGnie.$3a!WKZ`"8!"dT0_'56GOX+GDGA[:0sU7DGY:^cup50 %V7QpBMqV2^c@si)KjH$J1O>D>dmG)?!(GK^<]J=%!1J0]'lL]$M`8> %`ql/![Obm5'D,Gf^,G^7+"+B\b^t>!(ZcqM)=qHk8%`uN^`Q5u4t_)=`72!QHi?"Ur:=\ll0`9:Ir#u3bOaTKj^,2**JfC>Y;sGs %cfc\V#P10mjFg$bZ!>!gVH"T>c`[pEiUIOWr!*Q]7s\!\drpQbZiH0c:lkbBfN=Q:m2gfIbD94d^b&H$.A5B=iEcC+CUh4[L:?+K %YG8NXE/WY)&bJGFmKtp.:(&d[=dGep.!m4&2CAe/IN:7_UNoTnL'L++]Zk(h]C:>+o5p0om$O1rB\Cr*ZG++gS!!KZT+!,0/Df3r %:?J@B\=Xa3s$L8ec-4dN=d%/]P%P"O/amLWL$n`?]`CWNC %pjU,oiYf$,LIQT/,`c@9%jhi'rS.u7ilE*l\NN'@-ZZ2E7I3:Zq,n6R$p(F$Yk,oF^p?gXU%*l/Oei"^f[kr_=p %ruE9/D:0:^(pZqQITgcN`SNbm7Mth<=Ub%hNhZf)3l_mAVp^$,XIEJA%AWZ9%[ZReGnBBd;IeIYBTDtZ@0j8>=\_E4+N\6m)73nD %`L!'E4"d'2Y/+i"]*48tYUs&N_j+FcLB,.`,?Th)I4nCa3VU7&/:TIsG&2Hj#hh+R`5[mgL!p.(+QB1*glT#LO9-V=^gLDoh6/k. %3n4uCB]%&>Mca$V?jl[Aee-]!#9Zo%rcp`gU^Z**\kidAo4#67&1R>fJ;Em?FMi0[NRIa?$^n[TE#%_PpbB@t2d71:RcR7++^dm. %miJ/l"sSuYLpNu+\I<5J#Cc-QN]2*`hI#dI?Eb>caZ(Va@2=`d,QKpCURWssR4_tdVT`V!_nDR01]reV8dka(j0'>1h;K>&/[YA' %H^7575oJnZZfl@7:Ki_id_*m7XtTC\A^j,09KEVl==/cV^YfQYX6#g'N!^nF$/$+tVEH!H"gk^U(A\1Om+X?*"UKF`(W\k4c1lM" %5/.?U,3;j02^*n1$S31TlM9?Fn,7sJkD:"8+=Oid1S90+!;oF%Erj"hi>UW"op(p;MR,2kI$d%NN?@l#0uD3`oP0ADi9&0 %QYoZ7qq&N_moo+iRGn*%H%SHuXDj6.=UPW>*AqpmtdAQQ\3N\%Ho8=AnA/oLgP9`#[r %ra7cf;;QA(lle+oW>&`-o_CLF/9"X<6unKoA9 %W?29@&>AePR]X@7eB=SB*H8ucL`Y:,js51`U %iP,&3kS?Eigcr6LOMm4<7GiTMS\9"G/Z+Y2L/63XL%/&>RQE,oj(QX7.<#.fs3pFu]U+&Uqki0,/=S!Mak@c@0!')KXIK.,4=Io3 %iaU#V1uXL4lY>1i\cudgZ!Nh_7[:\XTQ5A=WhPjRSF]LPQ6E>G\a,QObJr57LR&<(QE4#XF#4B;AO#$F&S2BM[kbShS[UAU3TmSV %1!1DP,H[Hd[=>@nKE*#Tjn@-\rB/rkVO]+O35O!;o[2$-Ql"fm>P9@U/5_?!^ICk_Z#,GC"PVS>3o(N8Rc"NHI_2nm_$J-4=^fN` %fR&ZrIZK+&2OJC&r"r^&6t1q%O&=XRj1@O2Jq"7Krto&@6R6uG[m/NX7DKKq:1Z21_@hkSjPrqfI>`WJ0:;._mVh#f0`;[AKF`Y. %QFh)[RX_p\ic!M82d@PU*'E2VGhiPt5IprP.Irt_5JS&D"p&uE<1\'$6l>K,)tO*qJ0Qj`m$J+5pIm8"n@lFH(fU5fh8@-4HD#h- %#mk]_I8!u"B;[=^:JEjS0JK77E.@=p\jrD,25e/`*%>'_!8s@n)-YIbSXMH51j_+b9C\c0b9Ek"(i$M.Eu=l]"RG-X*/r %o^HTN$%FnKWAmGXT_>Id9OI/K=%us.Ag`U$,-IF(_cI_IV_'XD*-jFlhgrqL(j=JfFYO)g@O6?*iB4j2q>](DZiO.'7AcuL:V=CCtlF5.D_!7O9.P(XmQ/: %(2$'dX,$B2WT""tp?Us&q?c4NjeQU6'%-/t9';q!3Wg>B1[mPV+i5:,]>uU-&&t;&+l]1Z&Dlh.^i26u9>a@]l_ %Q)qD'A0N4)iCj7t]Ff)m"hP-B(]kQ*\OF.7kK(pG8p^EWN9[&Lk2[@#bd4.;FQ\C,/L4A`J^o]aY9\=TUt?2iFEZD(DOXT:o`hN' %$Ng'%>J:[s1kJR`/]#KZ#UbaJ`\JAa/Y&h"30Z2qQlTSL,kmnQ#ahW;iqMM1^%34"(0ur9os?rU5-m+*9D_s:@OQN/2B!8?Xll>;CG:lign(KYZ>N*30YL@8N4X:\dL@k$X>)'e@sb+-61rfOQl7_^mEGY*Pf?aV?&1.+)!"d"LGT5,*GH/A10RL$Vg*pAP"RL*L["i@"3m!ALE*i1NrV.;i/'))/;uoXlK+pTGXK%ED"`jTSE&/45 %c[3=@6)m^^-]WFU<9&dk`JImY+jVXQ4C4UQJ2PRJ6SOQ%7XB]B>s&`^4PKIGatoe#eW/#,`f[?#J9J/UVMS9h&aM<#hV1] %m)+)*;oV?7(e,uM,L!;G;[L.f<+H$[&;DRXj*`9q+mi,9A<]=]r<4TWMI6f,YenX!FHTWI'I1#_0>Vh[lT,3h5n`olB/S#:HtY>P %4*f3lH^V. %FDSecoSHncjKAHaXBLAIDkhWTOWO-K1BEH!2H"21m(^FLA8IFsAIG\uV@O??mE^Wf3>U/p9Gb/`?7r(6aAu6H>A5Q58$`RlK.,GjGh[FlNK+'V+j- %90`T3C:tK'XBsKsqfUT9N*O=`UB._+hMCM5>D\\>K@)91/QPQ(7^qAI2NfVE*,jqAERGXki24?4Mho9^Q1cCTAKG&#>>bIU_A;JY-V7&&[;6-O0!,\4<[QDV##Z?2nN;'acW'glP7%.T6Ebs,7K'h#r+8LE.+#M1r.^+Eu>+n4_f?JR5I&TGnd?`cihjR9GRUP'as#,7"7Yh<_YFNpfq_X5S.XTjXKV6( %#q.KS0VK?%0SiZIK1!GHDfGD970pD1Xg_(3^pQfsVJW/>AK1BrFUCAg+u>gc14U/i5.Vcj5fTC*pY_W>YR("5k_@Lj"O&QPVu9RR %THCsk"`tTi0e(6JQ.-#/bcNHEB^PO'oM<@2=qAfbP@QC=[lBLl %$tLR4(eECB*d%``DNo"F=>j!i!K>t:q/"+9)Jp6rd,gGe;b %J?%IL3.%^a#*t?s'L?I8*a(5+/J(Br;^Ig&+VoRT78t-t[6lf9\(-ML+JK=m[/T5ie"$c*+DgWioW-+*9l=^G$G+(QD`hhFa.B=]R(!!G3NBn5sj7(5q<;a8!Ba6NZjCt[#-p'PT: %7,HiN+@=`o%KSDIr;c[24E2&-d&1ck519pNgr/MAJ1r_,$rl_=dLHGX3Ah&68V4GeMfORhdNFtZNcisNXS)ppD6kQ>]W]BQcNOG) %+@-@E2TEX>a$kStn0iG\HrRF!CCaNEXpIY'lsPo9RK?\tJn!&,E'95UQ_YWqL9QW!Q!Ye"Qm6^9L9uPH#84qLG]db3Vq6qa*B=F> %$`p9LA(-s6^(:^3!7VGWT`E:Rk&//nUratLKRY\HKL9af8QZJAolVt+TkG%$8'=I"COjB5?#-Y7S7IU9'CJ:I4pfu,[]jn_QYm[4 %!fMS4:L]d,`8E4GY9(,"?%qWq5Cb1Jp,,UD%V@P#Ds>qeUO\DBo+be?,WKV6jc'g-Q:`a5ojCO-9PY"dPkH6G(3:&BkF1R1_)V^6 %h5]Sg62*mS#LtOH6l\rOTE[lo+GH"i=FOU&_fZN2?`)AWi-iLcWHna:jkp$`oVu)uWVGZG)#soO7.=1]3KjHK&)_KicI2TO-^jZ. %i%PF_R[\JI&?6NhPETD` %rMYrZV_35Q`TXe(cN`5VU39=2i8:[KES[U!E4K'6eO\DC!:sqnE4?hZ[WSoB-rP!JGIQb^"1af'W'dm(VhKXD?_QDj"f6o<#>mc) %`4Url+BB$6?;m1cgf;u/`)5e77ba)f^Ia^&Q*us5Z#/eB*sIa5JKIB'$n-#1a;>Ig6!Xe%8a %j4,\\%pbocar+Ep68L6,"Q7W76'klWk-@XFrhbG[*7*YOTCLgMq4:HalgNeGZr"4$.T=a[])BO1q"u&hj2@OR(F4-BVD?[bUijEa %?Y8S*'(R\`G\F)7<)]K.09B2KV+-E@>aL15!PdLLO!lk(UlT_ %QM)b*'>+p34)1ed*T%"trRFB2GH='%@/kLfbCki*>60#G"?>])iW?pu)Dqf_6"?/28e+Lm,/QAYnq8l2q,&A@?H.(+]'S^)G6#=ojUs`pIT\S84>4DtS1)n44<%qZQ9Kn"![XpN$c@c=7@0?&glA(FED%#OmV$Aqe0Sr!"3A5ou5 %T76hk8Yl`l,aHpr72L&hBhK-M*p)NpefHgGn$h/Ng`Kk]j6K`@NjPoa/q[95DJ_NPX]sn^#UlmL?mW19>kp?[Eq(465nUmi!SZ*H %p?QL1SUIHecp3Xam_7rrk>"qd9*_mh$8(-=O>]oNWIS2`C3O="o%6sjfX\;`L2N %\C]U;,3>kCiPj_u:+V.!a%b"An]Eta(;2:TiL%B7_OI8:,We9YTFY);H!7lM=WLYkp]a'@s/;oB* %\\'[f%hqdY3X&HMYfl4,+9fQ5Y&13E%>8*&,qJrD[_U,Z<7%a>O0>fufesKibbDD;f/.9htnV[(n)rml1-EF9+ZPBmMU/8[tL&RMsh^a,E]?FfX@M9p;#am\3)TR\&s_BSOa %W;usN[R`TK9Re4uX,N&CaV2\9/Ma6J4hRX7W*s,$"6[ZkH#4Q7/kYVpq;C#ce$NHR@_r/ %NFeFW_d`Jm5OVa/V1ktUEphd;d!"OMf'=Oo=8qL.s0fPXbR5[Ij2sQkd9',s]E\R-mIrmHCpGN52kWogOuoFXV::oC3B`]!gl<1l %$W$(K*\W2YJ-P!Q+ZQ!R]kr=rHYHlBs2cu\\F%KiTEaP7iI$+I!AD;-);/K#Oj=;p>9N_PMt0=s?n@cu8Ku7,&k"k;^k`c"?j#Nb %Qs^&hI07s,\Z)OWia=LaI;OLN)JE?N5@=^Pk_6gkGg0ZKaE?ZGZmY9u=C@-6:hY*2%l"6$+n8gs?D9UIiYm3gl[.A*>\aDd0gd"# %!^-2e'SDH\5)-L]&_9t*_5sim(l<.rZZtPn6Yg(kQ0+M`ZArq %%>fTU-.6oE_*5uE(^r%=s6dd)7D?/]BJDTY7*Zpq)]^1$/`\rWJpo4[ %D[T=G9pI29ot\E&Mj&hc>F:)>Jk@bk%^_Z3-T`=4KsE<^n %%hn(h"mPB8^7q@Lp^4kYR/EsNBUF`sTK\=,-]oClFF>[)h(f5!ag\SDYtS7*fL&5Lpd!h`;>d\JfsalWO^'^G,U9"e8+%ogSD9bA %(/:QHOBa0F7A!)jZJM'iD.Y4_CH*?9)sQ,ZnI;NJ.`qSi9VTYK/]tN@Q.[QJh9GqD'-M-bJ4O7p9/7!2U)!Y*#ETq/-j)d:"b1?H %\pYUC8sp]k(VTq7<>-#ufIF2*>bB`U0]r*f0^FC8-J/D]@o6q)Hn4p37a,"/P?Ai!8KidhZR@-)3Zh]RS?#T)>b*?%bCqAoUhg2r %amBZQn^gIAUrHFtY$;:D<9%E]IL^/l>`ifiS&GKT`G%B,4'g%R+uaM\ %Fj1)RpWPC,ehV1#Al)g/4JHC_J3IkJCAe32e#ba>XU:c?<4_81=:RK4l+UoYU4NfCVD#nKYPGGU1f.E- %4[d"Y>rg?_C>`n$hSU;j*^Tl2o,q`K"Q]=.HUrdc\%_qsL&dWI#J7fW>N8@pNO#g;Q!%-/"I-+7@%A<0&6e;IR*$(76GAY3BTi[*%5)XC+Qc5uiq9F,tmt %0\F#1;X#qI.ZHuB:%om1J$1s%%K.#\Tc\U]qX5"A4.MZPn>O_=<"G2E/HK>E5g/N1]`[,X1a:2FT5%'+.A"tqTn&4Us_"g`<:lq#5&$@Ddm'1uE@fZeQ7D(t`^4KM=V(P:;hX*n^ %1l!bo_Au",>?\u*6)Qhp?VZ/t!h\ctW%T7p%brD7A10Mj/*XqFb"W4"L(<'_$co%s2VdUm%hjlkfXadlHChOS;9=gl=m&5K"<)0>abCR/9g@RH=\)PWZ#j>;0WDt]Lnh5%B-b4>)Ybt.Cqg\lLUK-p_.mI*@sE^`9Om`q^C'J40T^Mc.i%X %@i_C/Qs0T-#CQH&eKH8nC0Qm0^Q>=V-(]D"h3R_KZg`Z;m8EEPS6YO\KQn,J\?Gf+c=,C>Tq.Mb*S=1TbO3e5?gYJn8QUC1FG@8I %qQ'[LIF&.J06g!Kn?A#KMtSoqL$9;-+Qc_@,tC5$<6H%I9-hfif[$DfdHa^OW!85j0uFf45[>B@_^%)1A@Yq>-n03h-^>B+W^H;( %E8Gauf0-dR)*PCp>t$*?#7bb_3Ab1abOJU6B%/rYBT.hR'X@nHse$2a['7$$;@6"md93kmt\BDK>m`LA#`:eXBXbbf1mL %??`=&$VkD_(j7=fOdrR_@#hb/f0kS&4d%VOf&@>(dd:d3C)/?n?AmK:\`M&VZQ4p;R%EK)V:Zt:aBNBoQ/F,NpfajP@M0%-Eg=pn %;OLMuCI;f2rB47@5b9uA^tf@LW;o*lUu_8NHmdm@?5m,msd'R"*oE;inOG6MCb+$m12s3R&bgS@j\>SkQM %n7#*DR]'c(7DMPhS$u&IM\]LO816D^g`/?lH!]`4i&?VIC[XR#O>[VX2/J%[k5/@KjA>KEb<8`oS]`9FX,p$?LaI %`Ai*orF&CiQk5gOL!?3;41*H!L^1$Kn0`1U'"FfpcE*b[Ms61nirP*hNF(Db9I=cY8/X>7N8gG9>))-,bp]:eHYp3$7@[eHD1Fo[ %UiYSK?E2V^NaL1coY&ba\r/,.B3l^20)T4S--*ae7?:4Lm?YTJVjo^[7INi7CK/\!hm(+9SReu^/I %R'=6Y,uq?(']5*bI,EkVfg&a/&&Y@th.e9p%Fk4aZQeg4]O.!$k2fs'*(0AOo2D@04O/8kT*'"CE'FV/G<`Gs/ %,D[<^F?]A$Aec%DOto"aa,aX;+3QGtIW(#?MDLNmALEUEL^XB0ZFDNh)+r*J?7p$7)8Q?&DHAu`sbWe+u`ic0KJ3[1^c>rn/n%(qrE14sm/aa8/g+\Zm;]+W %E@5Ml"IL"M',BI-?MXIh'laY+h[\r3@3F$3D4j_u9+i]WRZ$HCKip@Y4Q2:2&=9Z!nag!_A]-h\09hNuQ23%eRRE8pOT'_;f&'6@ %S('SS;s:ShBEL[gJ_,:9J4S?2g(l)7@8cJU85Gj_Pm-p95W(BKMu>JuP*($Po3oX=OD3$BL(]FK7k@T*>Q-R.3V5 %eOStWT25%g'0rj80Bk"D15k>OYO&(:iH,ju'-\+hH@nd^/r$,aZaU(mV!gtU#jZ25C %TXbfV:PW(Yq`kRhpF,>ic=m>eK1S6YU,QB/odjdnYGN\K/+:CMG`=9XLHC4hg:uKP(;$lWb$[46cIi"i7tTNDXR2O#Yig+k7$SMi %`I'*tfZtHTJWJj).C]Qmb<#kP9`?4U(Pm?/Fje>D@X&@*idi$h-fq-'W@=^a'HHXjr4rB"S,VgL?N&#"!SrsbjM0PZf&/OM %1`%47:$dKo&SiI4%L3YoA0-SC"lXa:CYipt>[6NSGD[aV(nlbnHDt46lKCMIJ)f,GcRdmk7-Z0UN.]'aC(RUu=u%:$>F5]A4e*ddbr"M#i9N?<"o %E[A7P`2.EZeX=DUY5_rLA)(:q#1K';Pp\J62f,p&jF*BbG$p",)1EEHHkM6h\0V]kVR7-4=,@:%-rHClla %be/B`Yg-J:TEa[jMb9[\oiq!no6mendj[FYqd'a-(E"GmgQ>.iN=p&Yp'aHlYsinLecp_@7/52Z>fm$#A0"]Jq"5K?0E2o %%`raV2i"3Gf1FNP,mfoIM(CoVO+Ec?pM^*`Q-buI#0Wb+;5A$B4eI'qlRU6uIB+e+T)`r98U.8k%\@hG[j/Y3`*G$j/A\2+^U:`A %"kV$?--b>&?alFW@ndQ1;()3k^k<+S!(V]pRDq6U4CGO\gL6dRs1<`0c=^kgXTRdTj?p`erYOK8F>Wd,:MpjCbp\=r0N2,YCN\bK %fu=jX?'(J*60TTY`kS2)bnr&pje4SQWaaC74dQbhQnZ %0rk7hXk[CKn8W^1dlnd!ISUNBD\?-%gq^_,=_i3T4&T\:/>d9-s/=1Yi0!FTIjkW3X>4ZGR7^AUpgBsI^b2f/AZ"Dr[sR8mL5H25 %X!Z&&,VemF(s%B?@nD<<0[MgRFT!^@EPp&-"At[;I+jTkU\udF"/R4!FgtmPC9,!KS%@qenm09W<#TT/DH*XEgi&#pWnc6W'nK5.ObK:G\5s,$3kW+FF1m%GG`L0i2Q/*W5ZHg.2!b= %]"b$Bo$`.S-cdugJS^`/>D?[XJJ%KoIQOQ;-h!mo^nii?,lf9l*OS_@4,ELKP$2$7)rGHdAA-,4-HIIVinJ0$Ld# %#eIL/!jL9L`j='2`-H63Kb1GW2;U.'3Wpj)a$H#?f:;0mhuVZ.VR%KE+J@FpX?amJmKrlF!1%]XE:U(NTD<(B5[eEt,+sKalZ!KO %b3^*]DtKR_bkV2dDIQ$kE-(;TBA>*J0Z'Qa;5`Su>qNTc3*RmE':nGe-,0K[us"MUY4mqs6WgK>gb'CNN.=\q2J!s4GHj15i3 %Q6'B%KRg#uX#mjSlj(mu!X^&TB8JaPJUA0IkLVr*r@#(hPMFer^p_Kjq`8OXEgg.%nVF&Ua'k;+*X#G\l*M8+3+U\Eat6p,OkRSS %\Wd(9?R*e)]di^APg.ZR;nK"3+X/ %mTgbb^2;\DTPDt6>5M_Sc.(n1pC2gPj;g+>3?/*04*uF90N1'uW9>?6'nX=(U`4FtJ\(Yp)PF-s2]Q%F,'3$,8aeeRc#GVK40LLZ,3% %n<,?6=lh>D+R^r-/6ohH@otVO;o-]R<7#\MT7_YEK7f=\LBc;RB]=Grc,h&UM5es7'3$e-cckkf"!,@OH<27rWLo'\_ %f%uhWZtj8-MtqseGAlD*T;HtbEuH5EkLDr`HIaUR?.2MmXm&*ip@Wgfs5\@Ah--sI$H`RaV)s#qMi8[p\SODUM+?D(QXXs2=bW`c %glQ*imLZY(febsK`c)QSkKqMu#d*UeTV3oCX!CFqnC0EAGB.,:U/HG/:^=)4Rp>'/??qs*gGKTX\XE5pc=*.TXh`XN@BUnOM1Grr %!>3cW2"7rg!&LhD%+@X]I0[W=cHM"W;#-6:eN;a(V)C"5`:F[g5QHks/+%d$^P)CBM#e=4MbYgpIu'ea<;'sE3SfhD*&:rUmk9cr %;L5j8OLlO$oi=%-+($8ZLLu%h"sO,L;^u%r3e&a$HO>+U0hd=39kY08>E)\C9KIa"H>?d7$Z\b$i]9HJ\qXVGmNd_#TnT+cnpR#G %6afDl;)GX#,fUArPWjg0m#=K'O2T::`jb0KKn,e:\9S*r\%4ipSJ&5.j]gTI:+jDc,S:VQ=XnDD6$e\D/U/=MUe$])7Lr#u?W!N5Nt6!X$Mk'MW]B["TG*!m*NCk3fJR %MraE(+aiYs;`_A5>k!(Eh^#s=ofJT5=g45'M$&\0PK%d;.n;bT,A?L).i=/X2ARjB:c1WlG5p9=REG*A57gZ=kfL"9n!*B %Y&pQs8$sWuCfRLr/\b]s1D?K07dGW6buBR8]B?jN$WQat@t@i:#(r6@.7#1k@D\gM[MfnDL*#ieS2DpFWptG!8-^Y<`[WD\+QeL> %g(+JI1d3\Jftb,t>-9XR853"P9+V9.Q,\6YU_4=AO2t$)O9mXsR$k$8a$k6FR#o3bXWrkg^5V[fX9o4]*fl,F$P:/>SjBb?/#lLT %:6Mhc'ik%SOOs`ZIgF\'$e9=aaLee?(2Fn>;l@$5Xr*_\Kk=J?"a)Q5.Gq/B9Nkh(\tU(H'd/=4'Wag4]c\c:\AH#2 %lcma55-"2(S\B_"@i8)F73K%ErQ[r/,a08Xq#?@.*CNB`')W5oA,ACq2)M,U(DhjW*!rq>/uehdZ.4<4LaJ3,n-tbEZ=U]2'(f"\ %A^4eF'b[@;"#I9Hm6!uR1nK,-YfT[+/d4D$/K==m:m;Z=RhfTH?&XP@KhnGMMCad])*pK<$jfhFVSW'^"Z%WLb94=g$Cc!E-nF=?#`^F/[@L+Ap=u`r=(1=NZ/JAga5X8TpOZ)>P(fS',9*#.CsEp]Z0"Z!@OBC\HDt(=Rg_Po %oPQ'2R5[d,fnSQ#5R\f?,mUg5OH5Y-73jBu$pq.9+)1!UjL4M.A[Cb,Bs>h0$H[,_KE)4Jh\h;JX4=1q[NY=UO*kgS_?sPYj%@3g %XH/?qW@SS.G)8.r2CZb[;O`br4@H.@Tp]I7A89hq=0G(!,pg %V,Nna.u7L`*pXqEl]oL=ZO)k#;Gi8kq[FstN^*#0P3XO-)K/Dp9dOs^\joq^,s-'HqBmn#NK93!R?b)E,KS1n#UhY[Y_)b!Fq6hF %5U_T%-RTse1^Hk@$Ls>UKR:%Q`5e%tXuRA.Ks_V?"!`U9R^Oj(`B+MBaF\]GbZVdkVVh.$^EE]/Z78Th/11,:6om#qFT+Pr8?2-h %R/SF<6a9`Fk[r"c9&/^/92$s.)YM>%?AU:3GC9-Wo[@c\(qHJK#+rd@QtDjcEI6IsVEL:Q!b>7M$;T6"Z*4b %-XCk5F^khB7jXS^LYS?&Q(-DXfc/k/T!kXo\'mKT:FZP4@+;]sqI&Wsh$Lo%CIL/EQHNZ-p7T8K1PQOO<.n6s"UM;&0UhkC_/XcSU"E3l9;M?gDYmJ8gg[r[):*BAC19UnbeA*ShpfnigH`qTYH0 %?kT-EB4pE&F>;JW_gX07-<5^QW>]2kXdKHjM4-Uj,9eGd0NSh]"X7d'@u7C9DY(hsc[a[Mc[eUJ@]:YWIp"WbC+=35J/^15e<;Q7 %kTASCDt&d;Cbld:NQVIor`*MmahjW5O/OLA4R=n#S=i0q\l)NOQAk2>C5D4,/N7gcL3$ggp-'K2&>$loi1b@f$$^k$f>tY7:t$@C %B+6m0ArWOeKYJ`si9%pPpuaHA1/!)D1V3XqqoPB=6r[bRgD)hc7u"4:iV4tEca8"8<%Cg(dr6#V"brT;m$]NhNhE[81(f,] %i7IsJ@iD$0rOkU\A8GI$=pC)#fn&[bMfN>ud(b-G8Z4s`;f"AVL.$e'E#kctXVY'bl/H+7$g^JAT"T#_,AN`];[]>1523e(tYn %iY-;^$RuuHF?5`hpPrZblJbbb#2o)gKTFgqAnRt2*fuMZ`YCYp&/It*+WLs=PT8>dQX90SjmV6.[sg&G^-:.H>Rq0frE,X]."cu* %)LI!DTU"*QrK,t/CP7mc0k\K492"$6H?%hq]ku=J?;QYb#j-.9=H/PT&7257Ui_@oe-+j'4>Y.*4(>Dh'pmS$/MLa.eInq#iZbQ? %:nU%1LIugV=q;*f4hRF;Qe-ehRm3oXC)0F^2j8M$+[K.A2'$fs"osF^d+]=,NNn%=E_oClkHi;D1N:Mb:1\"adG;B>5[?og-oC]\-:6#NlL>CTG_'pG/!gWk@&# %]X(_b!frN5-YGKLH%.\k:D8i+@Gk.A9`g1+<_[t&6H![#cL[>6[?Q&;-G((X %8\LuYh27.'b!O_Q$7jgc/3]h&[/+ocXCWjAa&e%oEij5PWq!9C9W*iuk^0&?$bq:WhS`LJTc_Mo.Dg%[i>#rm+SecfpigeG`bB!_ %RJ*jH2i0?Q%UGj^J1Ua2No1_pMWnbnJMJ&c62F'A43U@#-h/W+Xq"cHo/Km]_S@I'Rj9M#2;];3^o%)+./BI\pE0i\>)Pj\1-#0O %hsVGh/^Ln:cJog(YXKW5@sA$irEZI;IFaDCDW9HAULmFM^+)h@_A;-SCH,+Re#"mc7Egbp%/QRj7-EA1u0*AJ#n#oH(D\O#Cj'Qummjf\K6`Fd"6UC,22Fm#3Vi$@nrHFioRS!cci7Vjf`K$E8Di#!6B1\L%BTP'=*#WU[kqfr,@c=FI=hIa'#`*s9&qP6o>#.)aG %K?Hph-O$U;[`e$5J-^Mqb6)Fi4iq*ONm)SagT`o/+SBWt,CB[[ka@MDf0tT:4u7:&Q@uT3UBIq(BqCS;W%6n1]LcD?HT7U,.r$mr %+!Am*r][V7DLKj.=pZD@80_#@6eLrjGTJG!U5\V=t]JbYdC3Iengj*?f5Kd`u3"P:o"uBBSTH\%V)8eZVE,FO! %"S``c]uBloBp?ioC>Wa'BcFi:S6XiuGqr.Zq^TSMtSmLN2^K5'bmVI%nj@.M+;.tgA\sR`Ei"!SKZ5;N?Zfc;8'YpXn2o#He_L)j!@$W %1ikKHX"oB?ZZs:nIP_5_-b!AopPgP9`,b[_!LIsMTr.j\Rbn80AkiTl7F/8l4B,oG:Z_1j@i4i,nfXRq0Yq'/%@F"(TgHafC/ePp %Q!ZE?!bp,J=cj*)LTVa]Z8)acMuo(1isf6hH2mi'S?k(KY>14BL:d6V&RjZ&InLthS2&&=J/6dCfkoBMm?Yr5P;1F(9jZMN8/$1T %+0E;G-bajq>GeSk?+$cJj^sBmj<>'e:iKSjY73U@*K.RKG5m,#j!6@D)=a2$kd`=0Au0^$6Vr;?h,.b:qNjNO%560i=P'g5G8fq2(J(GR\0F7)X);R[]BGZ/oG1-N:C:,"j%(t9[BM5B8ND79?0lL!h^PHZ]rIkA,0"O+mosSLeQh!qX@)$7T=hg*=JlY/ %>K]c9Hj!3]ZKu/Lp9&ip$HI,JS`t %@(CJ2'=5/(hB+ARgj%2LWafY5dL160gM]+Xll%Y&Z`/"o^j1h+TOtsUFO(0fpo".X]<7/1;2b%Qe2%7q$Mp10o%5]8'W4a\^F1k/bug(GMD':@fUZ?V1-H139bl^ %gXdX6`b*'3du/QYq''CR"j#RGAB!%+0%c.l48(ZG$'`A:h/d=+9IMB'/L2%slYfVb6[OG1&%aX(A?5t.Obs]B2MLQ^p?19O5Jff\ %MP/5b:Q*Dt@W'MQ%c"T0<5%DSs3VC.A/6r)$=8%CL0phbj'a`,b&egRD:^HLnmU)L8jm\=[2tEl_BUZa5:Ut58"Jh!\N')"nh='[ %7Zo1m+;,otRNfmh%e%EH1H%\#Tgt%aP#g5+:k'epXIq9GU#COQB"R0]b[GTs-^]HF$SSN809hF*(+L#qd+]`F6:HtJ0`SiuA2-7OE1]O6As;"qb26DC %/K@*YUDLSZIcL%a@Q5/RPUG:E\%H`-hdAK((ccCj[4q_eLlZaC]tdl8.5d!HG%6$QcFlFT$=#!)E./'`b=h07B;oBDal"!X6.b$S %L)d?Z8NgU!$!88M+BQu(=0-aEl>p1ZlPSn7*s!L25kkb&F6k1YUT@ij2alPY354cn$H%_=07'G>N_mjQbK8Mtbcu@IV-M(hp4oC[ %OFYi*sXQ.A*N/P#dR%o'`1f7KLN/mm"K %1]PUl?u\c&)._7VkM*Y\F<*m%*s92#C>\XTpGL^,o\m:c&R4!/hXMCH/GNR!M^tF^*%I-!ntL\Um1r7,VkU'X[O,Q9C-bD?HI8Uu %W-)&#K8kP)""`"PZ:Gab$fdmSekn`K7b;[V*;WApf6KSUZ4#&e.a65&@Ee^=o&+b,?5cmoDU.H'"V[X0ISa9D:Iq7E`de,'tW %8JeaFr^CSacGN6.7=gmgi3oEV&/`)D,XV, %UA^4u3^j]].Tp]'pP.EYE %_sE484]S'(3WMe48jTP!D_:.n@$EL;A*D=pks3f5"*)coSCpKil_$gBm9q*Q+*t_uMK9TrXdS>IA8[go1SB"5PQgZKoo%&Y0JQ'J %#qiRicF?@HIE?&`=4,V*H"&MfYU+XH'dfni`EskSBZ8&e'nV=?a/\r/-YE*"=a%;Pg[B(3'&n(>PUZh#pHUGu0,V0^,_YDm9DNRk %]7c\foUCJQDdG2F`<\nME`V@=-(tWOMie8&<3`;hZiVui:Yn2.HP"rb!9WsqI7qEV\7@S3FT>ca/`s9JC72n#_T2gW8IJ733A@[hGAR]Z@FAhq#F`NYO,C+RG\MI#QLkT-a<+lY9'We@aUpK^&k2WQK %R=gSH)-&P5KZsqq-@fJ.2^S6L!1l$64)gqYRRt;?!\3CdB>+C:7T`H9!'/c"eGBpSY2Ph5In^o-abeIAlK2?]_QB_D`[M\%6f=J% %/%AR#,[bt;e@2Yb%mF2X(9sPr^.+Ke*I$SaQFpl.KH0^d]-fL\M12b-)s*WZeOtpk+8G]M5O`:bH`eKk&7cU;Sd,t3$J<.oLYfg(CL2jJP?1=#/;^b#CHdD=&g\5F/$g.Hj]!)$]j4rXo`4.XWehZcb(q-):UYRuNA(^I %Ff>[J&$@U<71XRi$/.*L21ZL,*paJa?W&=\_&7pDrLsKPJfABP/K]PM;rGl;kTJ*9.eTlPhRtMhQTM\\,NL_#=_SW/'*>sMe_:if %;@A^1+@a*R..E$*dfH0e`-atAr=]7J2sl9iR[5aDf_q#5VS>9Klt3]PNJEnU+.9IDa?K).o%&\r5W"=YJ+#V!6l:$nm3INs)dNNa@>"5HfM(D(*k"PEmoCZI3o!G`tV %#>"FJ[8bAn//-KX#om?k)%Qcm/?NDc6[1?UN-)-_ciWF.sd]oNA5Yg_Ci^-m6$M=e\InjX*PSX$f8?bDRJH"3KXJYL0I=:J_XG%%I>7%@Y,lZG@Gfn,s5hP;S[[@q1?G`FKJS %R.DsBof1/V]>,2#n,Ym-EX2R`jBB(2Fo3u&77O9!7A/36EbQfVkm.5#F>^+pL&a#(m'JlF1kW6mka>Fi%20`=XC+FnWmio#>66q( %0FZ23/lD&;K3faEI"`kUd*>S0"V#[!;< %BOP":([r#YWR%a[7V\2[F\;(pZADP""6kF=AM&7*D,E;]Hi"DF,F%?d28X"Q'^C!D\%%_Bi %-uB>+W%MRM1!gm-SY/sJ^nf#UoaDO)[6JB[:=4&1KVus %Y:U%9I=IW/g3Z5mK;]AihuQ$@22nIJ:g@;=ef#A@>MIK74.,8r"C<,[p4O=eMh,`co0p',$V"=WUT[Y"^e".PI4k6/*,9`)/\IMQ %MD#_)C>Pnfh."9N9mc0SYV"KELP=KJD"KXG.I9ZW9&UG";7r)i1HG&%Jo\f4RD>Y.+GfG5.;iSG@aMBl^9Ytm6A+@T^q+?76e\o7 %4b!qHedI/ki2(t_;'%$'`3?B[><+'%bMR%<)O)2DW^W"`41mJWr&obq/$hjY]VNf*sK4/Y8.L=,1a%/]\mkakM]i"BNWdH+^jV%a^+*8Q*D()9*6i%mOPpSBiA5.*Q3IA %I(TcYNG(3?'agUr8OdJ',PsHVA^QZ:,@F)C1RAOFQKM]ZBkS.k-FrtS:L":_`la+"-SA9QTY[tPcF:a0iaCa%L_j4KW'bm&G %E'5PX]fl:`!k.CtN9J@H_*JW]o9u6RLRUkRbCO*P?6*nU]/TLZ$Wo1W>!F4H5nE3s3F`i/O_Vc[.32q\/%:#qVbJ7sm*ff'PMFO3B?LXUcmQWhcZo)00u1AWXE#?rN82#TH@<<Au&D.lmmhY41[l:q*"_bhY %Y`@J_#.1F4,`'Di.(jAip^-_a"E8E=n76j<_,4fA#['IbBE"K9jr%<@n3>h"Lprc1C83!#90rRJmGHeT'$2lGi2m#JE+h0$'_4XMGj+t6'6B9+?4PD$lj1n"e![Qq2e@] %3!0RB[LMT?0P6It0&bfLT:b0I3Z"Y])+a>RQ+X.%K&adAM)1:A6_;-PR$F;gK=Z\ZCF0RFHX"=VZ:&52#[$j2Y07aTGhqG'7R8hk %!o@B>fY)IP'-3Hj-L6@E]h!PZWZCimc=H1?.qsar3dG+DHm2*"=gPnCBrXPefh3Zl0IkCWPjL@(@Y$RmJdq@pTU92OgCjl+$u %pgX0e&hHVuNZ5er*BZ-XVM!iNiPVC[T^tjoZXD_&i;9WjR^+nM9WL&G5m!"&_+n^TmrZ$7i"Fg49q["spgFJY]>$Oe=?-uMKIJn" %L=5lV>qWX6/WXA9!"s8>A9dW(pFDR7WHN8++?spIV!>nG3XCZ1PAl(CF0.4n? %GZ7knO:r$'X,r`TN([L!;J3?\'36pR3#l0ZOSo>)!)G0#-":qQ67TdlphIH>(W/\E.KsF8JW\Vs=>5aQ2VfbGM"t`u5G+mXhb+*> %7GA8?_icE>KaK8m5(AL(HU*;7Wt8g;-(emc#'plq-f4oG7=`F63P,m#Fqg^^ %;8o%m:c/DT^rCBr*Fo\>HfC?FR'=6kPq5NUMko17i(MpGV$DO#'OZ;!6(94O)ES@&eh05'#eE_!nb!E05Cd[5)LJ^;>@K=Lds;\^ %mK(8p3=Se^Y#qbfaW`4O]`d-R4<4(."%RAcSZH+4Zd[)sof&h;N0^!UC^\goG5AF,-P$$A!g3^ZcLmood^J4;d]Qo*m`QA]M..,D5hQ!VPO^"g_08K6Prrq[48U2i'ZgA+9"Ik%c+jYC+=ME:GO %N5AsD7@E#,aT?\>eqri(]Yd['0[(ha`LO(pM]]tign`+9*+3"T4:Dl]9FH/6SG=WMf=[\Gq;o33H'C27-&aWg3=rfNmZM&t[m?(] %SoI2(P6pP_q*Y>Fi(Ckc&?t8/4>MB@Ju=%?nGKIG-HAdq;%L")QF0&RK?_B0'+nb4mhp%h=5r=-7N<%9d7CM#1Z"NF1`oQIZfH@] %#;T`UT`'2L#ll-.5-0>,`Z2KE;mjjE!-TksUN)h!SNIs:`*FS$f7Nd9HlCj^.3R@mIB?RE,]'r&ZsSATlT*OW)f^ %Qt4nqJuIC4h&[A5fY,]<,]IN<]=HG]<_s-Sa#3oCg>o!$DFZS7?eTJb3,R %19eYd@,%Kmdk;qQnKQSHo%Nai%UqTW%]h?c)EVOdc/!HoM^gZ:iR_[YMm1gt.c,e@XO<5k.`i"2rZXf'=S>u),ZBoWKb^B,D$nV* %;UngB>Fo4i3ao-^/i!c!dR=s;0WEZM&"KG4m(no5o!Z:,HEZ$1A1=-:kN;nC3iL9/69F=g'[m390G`G#_gN-Klj0V_mtf"+61QW. %I)'DhQCBaQPq %7a>lRM^KnXnO-)AO,0YXo7\e>BistuD+=)Kb\]pu@)aYDNd3n2o4s$R%?'@:Yt?0Be&dH4S;3J;3b._O.7uZ^(!12Y!O_:^l_kKh %+:7"];fPHB-t+ipF1GB]m0n3.;ErZ3&m"P$I!goj;=W,aVh2758+8J(l/[U6!Mrt)Ur+`^[i^mjUImI*A!YL:l)V5M!1b#;S(p>l %)@sX(E3'sR@S@Y:`K&.]Xe"55ghAIRnl\%VW;QXS4S0ruTQu)a"Z*Q6^c3eG%-pprWFQNpW_J!*)MrtNj#VtclW^NPSfrIKASpB$ %#C$AM7oo-#OK9d1H4]h(ecT7$#:3U5<%R;L"KY)oI!go`.fq[aU*J84[W?jeW@:n"C;+D3=$0A83:dEj1=G"#PqE>]@i^f$M*9KIcY1%U^/]KPi.W.c!UTq[%9p1i %EsDnrKbIN^(msq-dWqHJkWXFR<`K#O3@@hA'A?,[GlW&jZ%:E-<.O'4ge?E]aN%4B82a92lQHRMd]krqU>@KKN-7W"i2GP$PA?jA %8,[k'3B(r!3IYBsg1LgQ%?cQ5!.+9*+]h %%0Xq!(Vl[YSHdNNp5"Z>9);Np\3PpN>=V0][#)j0Tq(]t?qEiRX!5FISj";>#DAlWee51:Cp>fYq;d\?;Sf.d;utj.k?!F7QAk*: %NkpTn*5`V04Dp_-2M,?gWZHAA1BV!D5]e0A?L'nn+J%,>=ga"W)S1&]4_'KQM6u]pENq5X=7Gi:+%Jd93uWHB0RY)[4G?R[LF!Gf %.kX)Fq%O]X@VHBng%+qX\PAHkEFenXp5"$Z:$VY!(p\@X]IUnb_Y%ILSU-"=d'm?Y2Dguc[kkH5_.450Y)HPkQK5kC-2&&j8nnMAi`Pft %>i=QdG-gRig(H(LG=,p7kq %!/opKk2BH5gi"B\A-KKX'V-,[WP5r1^lJ84#mZ7n(`eR0Ieg,\i763N&1BNU+XS>+.OZF6\.XgQFbA!G^?u-eRfF[5\aaN5K$D(Z %([)`!E,4#?7?I+sZXX@QeoiC-W,3W:.[q`*dde/iA`o7>p6lcf`8Xb>NKZ0]M)X(>9l?q'OV-,u"`u27OF2_p$L[[j/>?=N)@n:8 %\4l4s%+>3/ou&t=h,MCTE3bK1*u6FQZtbsuB:)mC-3:skI&XR4->#H?X9?bmkHGY2df'6eG"8<,Nq`L$_)Wud9 %7l.d3d,VnC3MJFoN:itLB-n4=JYg3TGdJ@B!NOm-b?m% %"uAeVD;.(7pBEe`mQ05)#%ue+J[NLSN^9+No,Y#[n*;pVeZc._@4l#1n'h* %7_fC:`rIPr4'$B10Atj(NDg/,i-"F:QTDICVe<_=o@ZnR9,_![U\@#[((9X5!T<.*c"se.$8H+\F$0(6k5< %e7HJ\kN?dW@)&'k$,s]dF>((.ci'sN^:YnF]r`O7-K;EUs)U[%l8mDed^E)tH(3r%i";cnd(mQA`OuZ#LRCVQ*aN,U9hSWm;)MLY %`AskOQLT.CgE9lmFZrUnc$6&hIr)_?ii5Re4fI48'9dRJUj637G)8m!0#m-\co*[0Vp'-p+MS]qjAaFS@Wu$bh/"U+^=ToE%r23W %-j<<1NNDqLW4A+/IP/52)^0s=%54N#C2i;u'UTVhFQ$$$UDn4-$/PJ<\0XXJBijhE;V-pkH,r'+j?c)=r.OJ5gXg%cNDEm3q])m* %g]c_0FO/,rM>bMrk:/AEoNG#AM8>2]j-/eFY?l-M!9;3UIk*N5+1P7B(pf/Pms=n>Qj@/bW\%*9KsjW+f-N!jr<2mHi!7VG@X/%A %aZtDZ90:)\E/umgT;,QdjNZb3Dj,>`b[7bV2g_=%VJ2nJ1MS!M3,cp-!bMm7G[+pja9"(OQc5n'7gRk04n&P2:On-g(>;=EaScDr %k3:S2#lb"J*Xi*47al3P`G2lQ/*q1G=]HK(1-_?4MlK6X;Q"Zj)RpfbBi4Nrki&Z.LuJTQ>td+ut] %JC@E/-SgV&7D1>4)S`l\V84@K5R)BgYQ?n&Zm("MZDp0d@>b'&+j>!bDcJA;Ts",.J"Ro)3";t!N83O$DO[.#im=kR7jA?ZqQ]9T %YQ=mkI$;lV#GulNfaQD^-(CTeG&;sK0-`8gP*Ak4YS@^Gg4'A'-n/ra@>;e/DQsGCR1N$m#NHogKf@B1I9`N`qRC30_idFpNF$eM %D]#s.CV"(d1eqDh)i$f6UZcl=)E;E$WdYg>":RHj17!`PdbGS]SW)L2OW\I#P%A#NcGGKX*N-9?JCfq(E406(>aAdqhp^dr>DZBUonVA!^e[97X+SU:\VmP%2;G_-;#i[Y2Q#1P-$E(uXh+,c %Fkj;sI936=]A? %:C!X`BWA_h1'KH$FNqq1ZJGD\VpWQD<_/sq0ZQ#!Lb("Wo;&& %!X9/P39RV=\l(1(&cB1SV5q/l-2A_ITU*B:'K+WPS&Ujt;C&kXR%n/@jcrj&Fjf,^PH&o_OHbfIhP<&hUT1dHAK %IOe-%9#"BPi+XldD&RZ:o[otrl1)hS:!NCRd#BB&n\4fINWFo)HGJH3btMk[-$%\(!fQ9hr.bR4ZU*C(&9j;W#Yld)UNpC8nZBoE %G@jtZoZ%>eU]]?(Qrci?,05T/b[g;dA9>>t1NklpCIZU5.4CJ@k9,*_Gp/Sb(U&@"Hp6n$6DuY,01KmjiidmSLd.Z#M1[L&)AoHq %"t"\^h$B)S\YX:]SqBgN'YrM,(V$TdPOQ.^6#MEi08Ra?f*1Q''.loPQqu@BV@GMG$&KO_3fF(A=>_B[6XAHf1:V,`J[Q9o&Qd_5 %YQc+i[1!(penqUp"_g=?Y`o*\^VV$c#S,0"JpNI$7p@dM1II?>jAHDqQ,+9S!7i90\2"LP^o6X^+:lC0\[e#2SB_/49^esI$"sM2 %V_\""8'g+-.]TL!o%'-9H*/C6"O(L]XJ.t8_4Irf'7Gd\p*k,_oCcuN(_e=3A,`[8l&Yl<'p[J8bX_X?0Gg1B9V^4o1P_Cn]1%+& %O(KT3Qen$>fNt-).;pNUqC`(8r=H`V:7pH)>`P8RlE$JW2#qX0*-Q<6Ma/&')t4e'FUm %?a122d"i`L!nL,45pLg,P+AC,\-@h@!c-]MpD#59kF>1>ic/)c9%!eFj`Qd)9\V^>qEkpWFAA*M=.WZ016AZ8:m5!5P@[O.^:`:De/is(N`U-i=ACYWFClhg1JM %mmtRcY!.J:pS0SogOAI"pd0id`uo3L#-W5S'-QtJFAgNb&G4VW3]\VRe)]ogF4XaW-A3u"A%qpZ_$,e_AN.0dMBEC1 %(g.-*D95c.=ut;QZd,p8c\"OG>,h#tAis5>r&+\)e:m91f]#s-/`u;6g!/!fIe>9nIjL+ii3cqRXG!;53hjH_?i=tp8+>69&QJ%o %#*Z>f*nET"%,fdC.nU6EO*dkfT@41t;8WMqQDf)u;E15r2NJXi0K8Y)$tjJ3VRi7uf,Mf7$a<-/-r#nmQKE[j,]@NTi+)'Gg7MP8 %ED:L-Z#22FQ4/a1N%B,i'5?BQmrKs2KU9>3e@sVPLnMojkO9QKRR7qR&EA`IPf(sL$ShR5\3>+eet%b%$=5CcjX %UO[sX@0L8PE\6udaQ;(/IKX)E*!P7'lYR$RDCI!;OI(HFh&ema"@`FYD(1IPc1ZFu&)O139b3Z7GlW"!RnjhsRnr:iFY&B4>pnQA %Z!bVBHO"`t..;SV!Hi9e+JJXQlekLZ3"W;=kI&P/Gc/AnH5XoR\3:#TnuOoB[H.>6/gFpcpPTE/?gp(Zj2IjGHp5>C3NcSLJ7\.d %TQb2,:ShofFBtG8>JWQ6([0$d^KXokjZ;0]it%fM(/hq^Yupl]]WRV;l=HH83[UZ)K%U50rOj9P*s-bt0XOe5LO5nqst:i?P_"MJ%>mY>q'q[oXg%5`Ws2Z[G"Cg\0l'_Ka2IPDfkg/bu@HDdrs2F2`1 %6![mQ?X3t74'A-51-On.DQBH@(UqObL0pZ50OD53bS1CX&r %%:*i+[8f)gFsSd\1[[k432XH-<+5"6%Pigo/\BPg>Mc@_>X?n)B[h^iC=M4f)8dJ/nAjef;D:=[J[]6kk+#EP\O:S_jndulU5'+g %/_rM:?)qa\%fV\rMbb2@&@'4^8-Y6IUtNUV`A6X@"cGF9+JgF\5qfZGZ"9XlQ&goNd^T)*>1c>*SO@n,QoWPc"b]c5$:mmt!nKbh %9X6l4RdkII98`G7<.@a9^HFpHcLMfpTr8eK\U:cV48A9:gQFg@!"f]/0HQOr6ZW,[ZJGkq&6hK,$Kh:9*./XY_H[$n^^+9[@mCY2 %%j9l(B]PgkPj]4=LOa=koH)p#q1Jad9$,VhJb32(d-mHb2ZY#S[N6,bf4u8/\k0BfMH%$#Y>@Sb2ea.4j7uFg7te.op$mP4"IrUP %N]Gi<1ek&_,![_q8bqRm1D%b$'?EZEN#kq@>o@KBPNYp)A:Q'fUi)3I_J\0`F'ed(QAk$$Q\ImfI`Bh$D7N742;!YaWOR#L-(RHj %B[EWa62?C0kADV`+W&(R8!_;+PQ,?KJ.Dnql[d2 %b.1f48U2slE]FC%/(@X^LXfI>+Mp]QQ\U2qE:-p;\f(20YH_Ro\]SQ$+@!E*;&c#EWe.r^s8=i48YK?qXF^:YC+3r12r2leokdhc %W.@r.8raXVGB!Td25+3rP1^D%-',&e_=@`2PO?>^.aS*5r79Q#VfZ?]:J8Q>0dfur\Z-;\/jhKFI\4G6<)\7ZW@=S)+G*oD'IrCH %.nU/tQm2YN=PAtcF/sg:a8SBRqUgG%F4_T.6#+D<[9I*mGp.!s.#ZR^LE6TK<\nES[OK$;,i_P@("Lido9Q=_h@^Qf>@K)+Wh$&7 %>)bOBOkP4l?D.QdU3+MfD0UUOPlu;f;e;.[pOa"C'Tf('2[MjX9A_5<,GG`b*OYi;O"BQ(G)9u+:>)'N/HKiCAZsm %M!sV)_@R.-*Xhg2h/WPJXQh2%C.,niS$g)4-r.lU`O724pt[Q/!;RA_>7j]F?*d"hb`+3K\N(8*MrALJ&Mj3VK:%IC%(*-t_6:&I %FUeiejouC?L*2g"Y%\LZ-_M0*bf.ZL8--dS@O]A1jRePFWL+aE7OQ#r%HIj.0IGfSqhW_eO&Cr0=Ta"uN@hVZ5O8p$eiPu6Qddcu %eCH8so9B]_]"ug,.A$i"qUC9U`[I*R%.f=LCSl6nel/ktG[&?mV4 %Fdj%M\8HA^cI[JB%B"7@/AnFmBMp8Zb4N;r<4qOk$]sK`RPEl3RJn[JhF_L!dERpkX%(Ysc01Fi^ffuc'O48A8ZKRcbJQ.N-S?hn/6E3:/BZQtCaMPQ8OI7=7f/=tt)1oN`5+fD;D8e/a>r4qc( %?+;HDX]N.e#0ZQTtH2@m/go-8VSs38(S"&#Vok](GIdqF_APni'e^fCf4(VD607TG?8oIU1s'0t_%Al4g->a"`."F-2 %_To.$:%b1O8Zgq=.OooYRq/RlcKA9K8pepNlqTfPngmEiel"L]G=RY?ZACWb/M6+=aJ5@.+?XqhQluUpWJAF:EH=sW# %%5kWTG,m6rTA74N._pQ6;qjTU#PId=!^u.l_aAcT8jq.W90$^'$V]rf_"P>c[r0r3N)\WF]!V`.^gMYXgNF7GCUNd7>3#AbcnYRe %-bJ[9V$6bsqBetJ<&q$ldS9B?5+@n-bsLLq;U)(fcl0tq[=qEt %CMaI'99Fh?3lWn9V-'qJ5k]?L.^IbdG96.RoO)oH*cjG@jC*2*amNB2Y?DWu`^J+:;Q]#M'W"'9+A:B!$`n#'U4JP8V#%a2/^7LA %TE_.-F>HWmm;.WHc)R]TRp-',Rr?$WoW?4')]2RJ&u5NSX,+fn$"1DdipM3P8K`*D"5nGLtoAj/]k] %Zpdj\/sRMekZGYCgO98g(h3EQjZ+!n\Ug7kl:r!E?QN7W%.T(W6nfW]_[T:Glg:!aX#g(MpgK[s;oqc47l/u]<9pQC:3AFjqA?%%+F0.]O#ZC_I %/Qj\J-gTO(H=&9H"I,ff>,l(=jHa"T(3fT)A]mob]'Ko$!8Eh>]Bpgu#-=3E?@d59RoIsTbT8kh+R2$84:9/2d$>_l&3WPo)2SU@ %_Nu16;.MO9b:Msf[^N8l3CkHPDQsEMb:>uCbi']"bE3M`M,4ga)H\m>g %_bfj_U#$I`Y(Z@T$OD@qeV[6?.c+?pBUKrX3NI!B2[P4pEgM@)7uS"ebD1A+eg#[\ZBFi^'ih);)`/_DogeR55HI))7TC<+b?dG?/);EmJsXHNV2^f6_;$nsBq'G?tKVH\I; %*UWEN1cW6Zl/?3FWKXWUBB4u;Vcg`Yh*kiq.D$;P0+H&nifh1a/T[mciE+Wo(,,cE7kbD8QO0>hIc%%(XV,\4[1lGWbSt#p6@c"0,-eY">p57c1!hr)!mVW,HTE[PYoMl!]$T#c91Z+fW>ubMhNrKu(b$.CT[G%F;/F>qTWc>l %A`*pTK4L<'E5;\s4a?mgJ9k>kTXoh&R`F%4gD"$hi9N,1Q^+D9Q"qpWiJ]g*]se<22^cC`4`;3@$J<1c/HbtSG^)**"$?!9,Ud[9rd.^7S.cccmsR`AqMU:I7l0>jPEf.5Po4iki^@U@ %oU$;6OWo?V4Y.l79G-"IXbN\WC9bWSVWibr*@.;C$efVhJuO.Z+`/Ri29S*8J!jU30"*.t7`31ikbF33CIAJ6m:[4Vhdp$gq=l-n %W2V?;>h;?_PZ5D:jkp,FopFEU$B).S05kff)5U"I:1fJg#8*hNOV[VWTVRruG(A;0*EXnrR(%6k9[j!sYeA)%C4:j0@E#[?G9DXt1XA %2].S2RuW:jjp16iSa&7%;A[@kIhNGb>;@,O*'(h%RliaY[\"Y_MsYN>d7M/c)&S2IqAZqsm3<)t_)CsQ'G7Fh8+%Kk%B@J,U@%g7 %*RHe.#WD%pF*D>O&D`?)>k$\M#UefeIh%63[-\A\>TI^J'82F$+PkUfnc[r\2[p"AVbU"P@Ik@,>OX)(O4YS8?k89AT&W"'=8(;J %LO+(#6r0Tr2AeK2@.?"uiHE*E2B``[FnXu\GK7.@me5;)'-r&@:VAhh@RpNbp(4JB\H`Y\38'A;ap8Me70Q"[`rRqpUt\ZB(&SMn %:&oV-gZ&L>V@Y`@\SfjDYekqdiE6r!'i'T`Con/,>LXM'SOgi6P,nW'"G#L#kr!#Db) %GCVbGll_O8=8?qLgA@B]^_esD[\^c\Db>Fjg4ZR\VHFq@5+28\1[eh"E'PBT1Y[Nom#u9**$,M,(GQ:?3!+_NCn"/e]\iBQkb=o' %F2RF.NhAJK[s`H[b3ol%)K7aK;n]K.89>J_0FD$=%YB1OgR,h'?0i.dH<;E9>k8p$1HgAhLiQ%(5I^S'0TFt\)'@Q:4$/&Z,l[Ye %_/Ur$Rq;hP!]be8IS2e(72/&sqp,e3-PaN?NYG]R+_@]iEp2*B;o0]*]+5&5[DfC1]W?@X%C[EIC6)]oYkQ0KkJ6(oiVXD^QW[5U %5o_sKJurl1SlK>&EI"LofPS<:5&6_u[u@^124Wb.j')iDf!/QuZ&T(Ld(qnI@otjGD]%cnn[s:#]2t?^I^e];nDR8-`fgQcg/c]2 %F+NheV3^Rpj8lnMb5#RFl6AL2:^JHi`/bE'AA*@\lnoL23+5o/YlcYA'/+LXK%mJV=)A@`$t;rHcp9)[(I:3\rq+^khq4P)FTg$coh'`& %]WqEQ[3auEVoLDL);=MYMW#_QWoE%hh^'8[nqWBpBLW=6MZC"p]be3]qnG3NuDB\inm'_(G+#jqn> %onSImEl(!t"DkIT[o^e4M=l]'/UH/A:b2RMK+3Tom9X.M(b;^cMmh+*bI#=ajH@q[0LQc--AAS*S9D!'nT%N24$bn^[,(D`4^cW& %EbuR=m3T@R[)faZgcL$7)9r^M*+G'haHGN@>6=SE$V(FAf(,orUXuo7"?\k-r!8#em.?u_f>i7IX*V8B9CNdL*HknKF[$X)J4Bd-_eDZFrVkG"MnD,1H<,ke0",q:T&-aT!t&Qih%IL;mK\,@"s'6!^%_,u?CD3e?Oi"F*'#tju3g+8mOL'$9"a&?1X2a1EfWR\o%2B:FS(t\q( %<0r4b&*a%ai:;Jp:7qnq]u6,TOU97;,0n"239D>sCg@kE$].4oM9!&Trrd$-W.U-U38/7(UThi@lLC)Zm!]0q+6!PeNkNIbBEooM %g*LJ?JW#It]+'[Fd7 %X10(Jl!VSbV6VAWc%gR8G1GRC!tDS`Y6N%65duK`)9$1(dNe[R4*J-VF`T'Rn`<(dGq&6Q19=MWcSZA'_i7gkeXOas\^;B\pOmb+ %`HXi_pEfZlKg4I&QfOjD:Y446NH>-2TC?*`S:S.sg]6eUga:cr#7^R^hEgW'eoaOX*_uJ5;bSNgA\bF2Fpr2Y\6X#G.Td;[XKt7< %J7'T+RqGrhmso.Ed?`Okg5(e+$_Vd5*B]nH@X0kD(i4hLGVs=e?JP5(,Uk$54,B]7T\V+sDlb(5.=a#HY'FCh=EU?%*G3#bqn.0\ %V*tpanOugKIf"C!50WqQHkG5LmaLudk8.A:ABYWNG4;g)b?c8[nFa[*hn-\flf2=TlBfd.>f(/D/gEOr-S8(i$'*&=.*fLeT.]g=m,j^_]EP38i`gX4<9f;#.&3J&gJ)27 %BdE'HI6cDI"X%X&(n`]i.bT#MkTj?]1*Bq/%j!3Lkj#Pt03n3--(!8fJ^gJ0gn %,nUQWP5SJnP!?h_%V#_EjKJ\MIDS0Vh>u;FTU4[ES73!@T5bY6-i7cd@!q#+$@W!6dI_EQZo[Mst/HNj342/i40d!>Al"(egb %[m2]4c=A^T*l#\HP&jR=1*3?u@=3]tn`7niD"kHEGjSQacg.)ON)^i?a>HS82%*iq8EP!kGb^PPfbBLh^jm6(:cf"'TSpSJp%,2ft %pUGF6i2AcQ15-et^43cb'+*Q6KYqH6[k2aRrpdlNXRR'ei82!;40*S\XA?JQ8)6`&lX`Y>TjY>;c=O7Y;!45g$P %)@`t5`csucdfDW33W.ct0K-'.Bm`de&UMj&*HnIVMc-1UKUml6Q8nU'/_NE+O4[qI072NJcH>;^p_U]]n@>o5Up0o7."HGZT-dHg %T6O+Y):c#N*l40!D_Z[h1ZFRghHlM7kQ/s\($\L.DXjZppYApTaElEjRj/M.g,p[bp2ke#M- %K-De@hMI5!P_SuU6!)\M\0c?K-.0P1GMSLn_eb6bF,D@/76C`k="7!_$+`'"5Wqk\n?IV@m0;P/5!eq@TD`NZc[aQ,&kURd">u*V %K&E5lP)^hcMU<+)c+L79-nr521U6Lq\4#[[^"AC='$]c.*FfGWGLAbL;FJiQ\.n1CG+`PVgKcAg2#l\_GV==gE95ZeP\To2/?AB[ %^cHd%aS+9&4csg+WCPri[;(GC$j=50g8i"FX:(hT79nYbLRJ %d=EPtbn4.5`HGIBE%\ejQ-FF&ndcf`iR#%*\XpT"X?(a?a,@cF*C8BV;?Nk3m+Vuo%Q4_CQ%1+0B99S1n@8W\_BUH5h\lJP4b#Q& %Xb25:Wp\_%Y\5>5i.dih?E&^_>')@N"-5.KG62MW8+\!ti:;i`-2t_Rh5te8hJ4:?ai,Wq]@fo"6;*M=!f&*c/YD0plNLF[>Kcj.[[06YF$Hj#_tGSi`U.#[;DQF=KmUQ)ap_0kul %oVEhb=7bBC82i_08]$^B#t9W3@?S1Jc/5%Y;*6K;'c^QP'8FR+"Q>gdE1IL9LH0=k$VA/>aBh=5X6NW?JH,b@:d>:)385Xii9\u] %&Hkji@109Tita`oi^LUp#N7bs_cf,R3So@CA%W20@>cdbAHtg>5@2RP'&EeQ&T$)ajTm')jLg_/DbhC,[MqoN5(Xq+7[=TqCgkND %S!Abb8P?*Tc+(+#D4K!ed0t8ZWGV2!?q0L[gZ!I;Pr.;&fdMUnHe_!G(T2(`r9M6)RcQS?-DFoObDJbgl2u!2Fu5;n-<2_r3!W5sNN1Z\.Sk#cnn>&'(9ns6Tj'n]rnZ+$Y"fBpQnm+DglO_Z4^n!8jA#iWm.+,03rkieOTHGob4F7pCQdNd[KJ %4n;e7@;GGe_6o4&pJ@1ie.XN+Yi4bTD8c.%db:%;eac_$%i9_B3bb@gAA^:\,]KVFs4dZr*f'_)-/`/H7=c;;_ooBgLZD!1:!6Nj %?#YKDF&["<9YmZE4gj+=pNkR)e$u,r7c8h]0.ut_JJ?N1K3X72T,Tu1ct`dIaRcA5E%pIo%WGr_+TT6)G\ijC[4BZgJHOVm$DBqo %K>9$,:q^5450*t&!5CmkeO.-LUI>0ZrP&%k=Z_' %(YseK&3c-G08YGIXaQQ+_YY*==aT*(Ib_od3TV=A:P%eXk^_P_(ojc3EDXAOF&:X'N%Kp:cJ:(b:#?3epSfh2a5(h4nq"g6kal`g %4I_CeK:JRUnP!iLkfeT>BC6@,[U7/XQN$O>HTHhiJc2T835]WjE/(R:bR$!6[k1nNHMI(;C4P$mLVKL!#S5ZKHA%IKB,0.gLE1]s %PNq?S_FT_M5n3fQf9mj1A7$lURd?>WCQ$,[6`A-hT^=ZJ^3t7mf->A1e-H(Bq]R#+aa@G=LO+H%+c7_#)Y*Ip\U#b[XI8PWG&4:9(0q&K[4[&GUSciFLrr77Ou#.:KlSgRfJ$a*2L0 %h4R!c#];Q?kk5`NfUjlo&Uuq+bLX!*lg(]ZZ)qNee"A:+p2qc3Z>F4*k!/keb5=@N %@G0P4BlYaTju;'!chDGRW,97E]V-n05-$nuG-!ph_I?a$"l"]Scir/4K'S)REZ^-LaWTrUM1m)<](lifOd/r-aJam[,.+UVQaY^l\'*]K"RQm6hu$:^p=`3gTe!S)XK="].C,UJ]U:hd:\lk<$#TZ!a<'/3?$/,?M@7'>+7?FrV#Y %K.mA8Fk*4m"'7HC#6kJe!O]^;P_n,$ZtiR%`a@(>K@88I5iW)TY"dsRK<\YEXGn5R7_\d$I(7\J_@&Jpc/WaN#A>CZ+mcVihDe[d %'SFh6R"eK5qLkOJ[<]de((N#l,gPF5%K.g0_GT8R%&N4*a$ntQfJ%[Uj;/>0rU@eHY:+QJ&CV4D'P_L*0Abfl_Srs$UpZR.nmK)bQo(%=ooCB?[H)^T5,Ih7VNdaj60oj&'_W!-Ij=P3#([_S* %'#/?#gVMX^Nom'FZMQ*2GA]13E$$t`P.8Pm7UGc?&kV$d.;4?nQjom]/a3A.n5 %YS0(EBGnMN?BNKTT-!IADQfuTP]ZE'#$,dT<7/CT+/!7.@GPl<3R!P==UC#`ilFP(XCmI3\>QHU[;NLCQfa%7^.W)m)>WZRs")8eI-BoO+iKn%BK[ebtLQ\0pN@`l%BLaBKcLDBR>A#,HJ?V?g@Xij1B`PL"h:)*'hq3lS+7jR)Jbeq5u^VAm3RE]f'(.%I=jA/;7:j9X]l& %;]!-qh>%pL\;ta96MB0J_-(KF*c2WME*Ae'rQ/`W^tEa]YgW$P_ABg;G(@5.M<5_'(9oILo3qsGB5h(DDD-ZU0\sJb^*MsC4b?dm %fYN;j.2*5q`OoX44"l;Rm!o0GbMI](o)85o;"Y.i&FkIo[;\?td-I9X(r>71(iEcs)I2WK"NN+`JVW!>*DDNM3+1Vj2AgV@#Zd#D %36'ksm'dNe(sj)kQ=">W-nTc3?4kZsIX"t.dIp']i0S^ZcRob3)u&G"lGh+(?td#`OK?$,S04MX4Zs:-@2hP,"+TPo=KJB?pi6Xh %rG\hon$S^Bj>gC=$CuiMl"l8(nHSYOB]/0^4a&Nt^*/*E:PfS(:Oha9f8Xprb!Jb=QDHtiIk@7Pda"-j1BHkVUHF@* %eaf]>e5E>\RE'Oh:M^iN4^`'n^V9(D96o=eI:GVJ("gh2qVG5lj!u%WJU[,dnn$Z#'Q/pI5ONB"QA:lLK2_FhU]!267*X&g41]8q %O)53kYB""UGq^1hlXslo8(%AI0J@ %i5-,PEdP>)^%uVkSe-*M*&0[M#"Uk%qMlQ3Vk^;_GlR/ds6AM?Mnf5Hn,MgJ^]+5)J+MuUr7rGZrjOiY&-)V,O2(M.r=A_]rRYob %,2:-hqmjYLJ(m2PN;^,`d[jm,LF+#8($+LaLTW#]_sH%TLP:78\H#MM0m>P1D8T'0>B>0XnlelnlO2 %0!idr%gH@+/96?kU2OhQ18VU@X!E)W(V$n+&XI:>2%JcCf?Qs6%1PGO0(d*-X[[q250"bJnAB<_abB9)@fg#-f]#\*'t#N/4!X.ZKm_ph,jX:#Pa8`A?]Qk;($d7`3 %_eN9Z0/tq0E7FaZOO4K/XCQ!G#Jg@!p_MU"&XOAIj#!We[D=fsQ91MH(,]9mJdhFGHkC")\QdO]aHbjCAGi39M=m%Tkcg:4HFfc"J-cshf&OHpY* %/'L<6T:bamGs:s5N*MRHkpFCn[]XF0 %QH_<@?#T[J\DoF?H6\IMa_-jr_OK#[C]JWd<=;AIAfA_@_mJ2J>Hib^qf?';XD`:lcXbFuM=NFCf&DVO(VA%5T#LlR\]'$$kPeC"MqBV(C6G8G`a %AK?&=5BuK1am^t4k+>Q!H:*4k4VNP#j7[-g_"9;j$+n24PBMHn(#`2F%^q(iLPG*KBBcr'R& %/P=0ciZENWm.cS_@'9i\X_7,q%ViO!G*/t^]dskiCcQJWK*%X+CkEY5F7T4V=p:9j:uP`l%9+rQW1rohl@9nf;]+J)$&+.T$gcka %EJA\[3'6??ohK6ib(esqQQ_ZmE"!VGS`F^kg3BP8(l7*XN*f);4s=cuSm//GX_7bS;04&uZ4M-#E1\`R]%CA2A*)Z2[c:hLo<1%G.o*[KY\ %o[`@)puYk`EktD)O@oV$U1aENW/T1H"b4T/iH\c!!-p;LHPH3iR%`t=cpo6cW4kSkG-QN&(Q@8llEWFdO\--i$p+beR"NA]$@)#S %BT6-KfMZJ"mVh1ciL4nB+$MpgT`-RE0%NE8Mh)aW=^AkjE`oEpe*nV\n7(G4)F]<8j=%lt42!rN6`n@$GC"aMG)b&1Lq,(gIT=LB %[$]NYCFHcmpV^DWeg.sAbDR1@e,m@RL#/ir?ju2JFe;qJ/oqZeS#f*>%4]Q'T=%Z_Y*;$a.%&HROW^r:!gQV$[7V"3$&`*O^rPVK %DWuK_6!b5:\6nMgc+b_bks`uVUT2rE*F@8e6HEh]'[=;cVIVU0\e))X/=rr@==(?Pj/,In#@N$:G'JVMbpk\3QkhtPl,sUJ?BFsa %Tt%+!`tu1HJ`TUh.#(K,fa=pf?RY[pgH<^d'l^72NAK='>ekY[C3LCWUWF$WF0k[\$oHG_>%`0p`I]HG*+<#BliMH3`:>JTAogEX %)-+f?.pV2TAhRS9P8#ZE"-(!h"b7"6"j=chd-l@+dF&.@N,TFN"fdn9[gR?KB`N5,iT*J^_Mo[l7R16lN!qTj!Wc@E0Ti_3rU/\% %;>ESIGaaFQ&Krle`3AE",7D=cqh=ME%@m:]5NHU_n,pIQ;E]XJ^.@`FFKo3Y,,npV[O[LMF$JqqpDR&O^@#Vj05?,^5#?4rad$OU %c.p#"BmT5<$"'>q+>1)Jo+jW__VlS@')nc1\eOL-HO&l/>nV:q3_0@,)!O7;s(VA^!E)Z5q;;>GfJ'>U3-:<$+Rg7D9 %o$G?"%Ab5FTD&kKUfB@'XS'9>Fn8,YDrpcq+F9IQ+:#lXlLt46@=FIL(T\t4,N)88WD>HBbC]D`i&7S]]g=_ieWn#9:;G"TW,[3 %R)0]c+4b\aqK`0[p==\+YIZFY9u+"-K&oJQ:/Hlh]#"s^igY9**(&e;oe,qK8APe2?j?AY %&t2UCAP@6,,6_=R`j1[BY4`[_:ea$;%!!)D%u[J'h;f+1_Ocg?_nfRc^_mVg$(J!nOA(a%6):Rm>Kq/m<05ss]!sq]A/?6J=_/D\ %1^]WJ7T:s)6$7R/)o3O=FoLuj+#9sfD"?,FP$`I>8.m.&5OP'@n=3"#0E=^N/r_&T8q&W>Z\3\&!Ur;9jtL4if6-'O@:4r*=M@=X %N\#iD:-"+AKHBW8E-5t*eVu/b-)3%`X+X>XCYqUQf;ZEj(k$1-T%ou;1W>&WIXsK=$?`q7DnB_`jNnNdh.O$M-Th)cBoB6/O'o8( %PR(lY4[2,fba>C)8\.M^r,a'RZ+JqLk/q/ESXX)GW6ean:09("Ea&YuR:aV'h"U5\963WsbrFN2_a611'JnMI@C^F/bHPq!!HV-@ %CG+B;pL8Gke'D0Da!)TM+;>[#jj4NH$<(6Md=q!unq1MQ.p+ku^QE6%%0Pd9N1q'Z4meadEQdL:;QS5S.eT52$pA-bV4$kVDt=<> %/^SeMX#d%cpJF/2B12F8)gpB*/_mW-eOakViWMMQri#elotR:nls>$Bl?PgG!8j2nWGIV* %YJ@0f7A^r);l=2I%==P_S.E4>j-T]L>gUEth?0[4$*]?dK6##:O!Z18+C#^e6G@,oU-d2F`Jt)F:k!CE3jI*KUgjCF'N2a?>0j>B %`@biq#Y7P"i20j"_qh#$Va<-=X0-D#\8\h.[c0[TaW:W0:&+gm((CB7&>"JDeNj#QP0nKi@b%D%rF')W\pZ(O^XE;?.9ZM"C!Od1 %&l\gUS)cTi#D@#u;NU#lEa@@uSh/i$2,[%Gb]HmlD`uZRbOk.=&?dbG;"&FNlp7-U %$U#UL?U,9>:ea-DDN[YTc%E*a`Yt!,Wd^T=#@7><1n]D#6md]qh@o2k=%\SD;mqV@SbN:)0`gYU+eU-D.;3ajR\I)(#>r[k#\WND %$u0CM[t#BRAKXU-bKtQZqcbK7`#k'p-6Ne6,32gB![q>[E-HT;Z'D4U`i;4pA[)MA#1`[r>;sb`U.C*ROWP.o0Y4gC$q)DXEA'nl %atbSRZ'C@k/2+tlpnZ1r'cVN'8%1tuOS@*RB'6FAK@"0#TS'#9JfI38]2X7s3-bmq5'39R>r:WR#^Du+@M^&JL=N<3Is-%30i\.i %-ZraI/;PE^XUVT)N,0uYk\'pHIj'SIgc?XgG&%3/4Dp]c0-O>!hj,"2>"TrFQi\Z=^)b.pjg[Iok#.MeeRkW_gcXom,>0d:eTcQ< %g>29@<&Fj/gm[t'c!5S__Bg@LPX1CaPaI.$>e`VK*>r9o%9jTGYZ(sq33t5#gqpH?GAr;umK=!>*O-2u"spna6).CJg]8VrLM:0l %4$Y'/HldP'\C2e#p[+OFZhM/FiJ&qH2U/Zd8.0kR+Y^4ZQaoZpO.ls?JeE-GA\6m/,s2`/Cm5\;EAF=Er.dcR._6u5dDG'!+Bu@. %LW"j<(7_e>5%fVTV-XaW+Va5nLOgiS9M.UMoNgA<$ %%%;J?_WC2^s&SEaXWBRNHt-qR?0)tLQ@m_0)84eW,.M,m1km%Yaij>tE?5@-\1HQIT?p!$_/?5\'M! %C8SRPRZj6LdC3oJ-W@E1Y[,INB[&ilU[g#gCi=LJOckr`TNpEDtW;:E%.-(W> %)J4',6-7Bm'dk,Kk64PGMChK@AV`I77$Ht%FO0$PTO.kj\`C?^P+0#"61fqs8,**$ll![rI5.GX\g[HXF-Jg=,a7OdeiUi8kN_83 %F&P7WWs4KUVO[$+TUe4XY%V3G';mF8IVEiM`K_5XAaG"bJ>?hQSDLPW77",3-g,t/_tK0]/:B1[edNFH`Z==J(DEOG3RKVO\GCj2 %>Ok.NhYQ6fKkCE&L$UDC[6bZJ@AZ7C!.Kdc<@Q_0OK:Amo[3B6I:h*J=fGiq6hLW!N7F.6.(_NGE\s99Z[94V,^*J!Vh(7),s1DW %m.]?[W:YGU-]ne_Si(emZ&I.BVT6c`bBSQ?0j/QA:f+c1hE&9m]9ah5VKl[;_2(7Mk)IimJ]=TgR'@sqJk]'f]Sg=7Mn-;3@;>=q %+^GCnFFlUP7=Vg.Y32&s-Y/bh_<1]V)1-=:qud`U-%Hf]R/N3d#Z9"pHjQ40W$-s=+=92^]OKgC%UK9Rb"!9I"0-u'=T!c4C%cT= %Y=;B1pu*)!?$O-=:B)!0gT,e\HPVf+s7!$-=M\7DjJDMNq6B=/Q%AAQ]H2O8#/5#V\1G,]`TljX$MU5s./$#'I&CON&0b(:&?n6[ %Ofob9cl@;Z,cBk3A1eVNhUc3P.J0`<93m#q[+'F?<6dD@,QW+O`JbJuAQC+(&;Oo;EFYg*`?:*D(.s:'$'9rdY[W$0"X,K"@-5/lJ,qr9t!rA4[76&9IiE$_bgd`Xhjm %V*&e0GUgHX5o+(22@\<^8&K:;AK:'.pMTRV:l$d1!?^"sesgR6Us)&J5H()i/>,D7,-,b'mB;)"T*i$X)kC %-4E:GK_3-1E&)tr`Z`"YJaD#pp46KT.?uTD##[S(0VN'QVdM=&,cd4%4(MsF%qUj>6ctF>H2+'s'2)C7?cZ=;+b>E9FScs>1a:N2 %U$D.jc@U8kIV<79S!g,\1F_;5i5Yrg37>k;boqE+.@.?5'1].?bSNV'kLgh67j>DW*T0dGds">U2UIO:`K"./HR?2 %5TQ3uJW[oZ#7VOZ?HU)LbO(5l@7DQ.EZY8B#89C^[06cR@f2VmaTN-6WBH=B%mLJhMR,!Z!P(i6$$2u=7)*P]+dSd(e+1Cc@k[7; %CNX/\:Y=Un5s87l?84sUNi0e4,-A %KZ8d-:$u!G;*Th*$"7aE0DX[UW1o&"<4/ %f&Xn;]R3W%.neM$V$XL:Qd1Jb'LZ'-Q%oDM,+31&fLk:k_^JLLbP2QkBWKK3iZD9/+LFL)Ze`Hr#sWC0&?li//h`kdVl_"-3:-r. %/&[#Xoi)\?d'XQ(VlKqsN1HfJ5?qmHQ!6L()mjc;6NK\DCe(j6jbN.g`5^p0`/UT$-n9=k(CCcpd4"P$mm79V(%$Me'eqM]PG'YA %MuCOVrL[<#C0CTLCU7Y#Al*/('#`d=&VW@KGF:R:@=iL(Ut\FF=+jC92Z*KF)0`I&dL%RV?"$%MQ)h=nIdn^"B.ORM3jE4#Po(_q %%*?ko]gQe/Pm%[pGMSlt[-%0f[;B'%OSX^,+E'ri+Nla_gT9SQCR7<@gWJXB3YWhhiDI#8r"rKiI;N162R?_qQ3p(R5/>a?5(jm9g6A[[d'?4+GZWNbb%86Zl%,B(a?<103PLG!/jX>]cj.aik#4JNd7I#0L4Pa;A %r5OW5:_/Z,:]lN&^]('8Yak%\Wqb^t(LFb_:Q(3=?="GS^(6G1EP7=`>*J>$`9Q%H+jF,<\>M*6hcZ^N^fga7?&MEn#n"WgR,*Hs %pp>-ND?/+2,+X:r:*Mi=OtWmL^Ula?7497m_4VQcJ>apsd"Sj(P,K?)'9[,gif0V.5Y@Kf-BL9Z"e*oWC)LKbFsb5+_@dWGY*%L6 %.osS@k*j@_-*JlXbXd]c\_/DBO@p#AQQMTcV@32T)&mCm,A\Gp.UNp+]-@L@>@I>Ms %ZlhpUfsa8cS04EP\iYYD"g_T\a8?QW$Kh$I'.-h+uji3P3[a[ee %O$jTu.@g&bZJ*9>1r_3M/?BHddJP>OkCm__'M,JM_u[-)A'A[]!a7XbJ?&_"K=PI&L9UtDWDMF"!kor3O`l/n]gPKT&Jm@XLSNC]%#\'3MIMQl!6&BgL %dd1hqGe;S1DqgW.W2Pf5]3t7JU*'p-V-t33RSsmP*Ep8>lCUkraneF,5.Q,^J()<.ieX@ARMt8EhYZ87^$RKK!S9>"c'0m[[XT\? %=rOQ;->.):G&4;mVb%/;a3B9#hf]gDiJ3)MUmSF;,g`PALR\6f)5p$Am_XQZ[<;41ng8\/+ht[Nr@h6dTi!=,I'2?bXu)0u1,rg"/b=R9($P*21T5Q!VSq0s._SA,1!D/HJR^mt2&/&ptdT*:p#&pX(8`-C7.*U1of`*7f %1-e&QMM_d%X:],[Q%'mcTNgHCWKEr_-XIj3KQej[0!:7bp"(;ciW$Ff/V!]1&+2]#*gc80aeQo14k#2dpIf>gGjlFQO8#!-f@t0& %(k)bfg6;,V&$T*S&2;[*_?)c&NssRl57rX#oVe2Rq.UZ@@M"+0d(^4qY`/h0RJ69dhd67H0kUM+^s_M?$+@?nYaejUf>ugf(hd2P %A`->fStp?L5XZ,i!#nSd]6j;:7c#1m7#"cHBDR&h3RNQIop$oBZrIf)eX,_b`)5$E+GS\:pip*uRmZQ(+MnDVH)kl_6SfgGr.(aj %TS8+.B_d_*lTt%+m_[':ZS`CEl*Gc^ST0p?@O&VS+7bdmYfBU$K!RCK3=5pjU[m^?K>rcffW>44jQE9FmqY[O6d2Da[,m"Uq%(j) %((HmoKhs>P>jG(*YE&0k/JT&A.NVJ3h.iUP(-Tdrn&$9b#X-I3"\lsRqW:"=^,@^B9m-@h[7aA_k=JSAD0O>_KH1pBFBm+lmQQUR %$rFF8Kqk>V5^e"LK@^#Wn?u25m%cl,IA)&AcT58XWp6?;Ln'4O@^keB*Om`jHEcT5:,N*I>j(^,`4,63dJ;%:J7;W4b/#IS0\*[] %",DNt.\S!qo0s763Hd!toE55m2Ws3L]qIJbJWi."*?H/gl;WE1t@D\$f!SJFBXFr9nT4Un]>K3%O=@Y>2!W=('# %jooK1hM&tt(G=jo+4qEbp%BQG._sKFgCf/a$hDC:=t1Es;0X1LK5Vjk>r_cX6bMI3Kg2#FYm=fHDm,f$B;t'2DpA8W$[>U$>k?^a %i;qY`=PY(IiK#'3!$?[)pL"+Ir.qZIp@Z0.LJBZqfqOg.30*Ar*BrZ>-]RXc0Fe''L>O+EV7J%[qHI=9_9aV@Tb01I^@((&5>q^Q %jZDLkp[jK6amih0]JFc'jr#%hVg8+6l%_EY?d/3[?cLj.t#^jQ(l_;Q!#>)0,/QqaC6/hbW*eWFWSg\j:=Z_`DGYeF^h&`d!b %dua/[<`PQN[3S9tep:3>QY#3GkA#l*=LX`8!9O'?-3j_AcrM[+JBrr%%j@'[WIo[oYcnCmC6<+Lca[_t>QhA%P,i&;n(gm %]nNI3)t_Z[A*K0`MOD7hW]]m0Yb;6uRB^U/4B5\7#c]DRTJS(QMi4$L\MmWKYLE``=@M2R?Q,,PFXJ93"Kcm(,*>X$$NafJl3Nj> %3GB=$B\S4/*aDXm"""%(W5KV%MW2IQ2321\(jMeoV;SkLjV-nR6egkjB"Lu5\:M5!!0KV?0S%PV$>JC^KK^NfE^'PUp'RhpnCuXI %-V!HFK?"6!]LOIW[b:4s?WCPhbOtW=C4dJ?=no2BR)kG6+_,=lV2m2WB5q/c+-Km10b4h(I%iiVHu3:MYign-cD!0&g.EKmid-7g %D5BpiBe.He3jBXR]Y6.K.3[KGmNu;H!U42U^9>uMSN<8o,Q9AX)89#nU/UOcrL4>3eEAk)Vi-6#$Pa[UM]4Ig"2\+>+&-$k(F).V-S6I@(&SDf*GJj+tHHVKq`ZQCA"SHB)gq!]R3f$U2PIaZ %_,$q.prW)Ag-E."OjuWP/mG.s04T9]Z:\0um0Rm=(U:+)R^9".M44K?.o9Xp31Mcl,.pj^JDbbH!BA/EGgDo#[KGteFcec-nra?E %H'eBbn6QkfLnu)R2Gt0t)F/6e0&) %PQd%]cA6^\GJrAXY>$l(Ol7(8f1-)ko7fGs$QgLb)k(ddTNF)%RKhDp9Y-=@=>KD2g!0%+tP^s#d/*H%V>,&1(Z.2itL:lSKsXE#uhL9M0R=D,M"Kj^&<)>[a&RctM'>^OI1 %6k,Q\7?J4C)ket0q#K:<_;n4lKt?>Lf-dn(HeN3PN*Z3&ZX0X[g.@J%([Qngm_)=g4eWbV-6br`e#@5Ucf`L1"j-`'C %1ZMp/%]XrDJhfZm3KInaWo$i?##\gBfoj7K\)hkSZf9Hq0Fg+%RP?(bL`"Iq51&Ja&VXQHCHkO+NB-G3[R=n+dtuK+?mKL?=+)\Q+b!).J!QR< %'#`.*]rRO'^5++fOK&L18X"C*U2&O'npRlem?cFkqtrF6$ZkfG*8u:Ua!&c,hV,k,`))$l]#UMqB'PH;i8lYQI">p-9h2JX3F>8u %e@--A^n^G_!a8]3(p]P,OfC?TrEI-H)mWG*X1l>(\E%DY5Zd %0?<61&MpCuOp$d6H'FHLURT_.8,#HG!:HLZ%r3k)L4tjq^K?Et+b:^!i#%?r"#nqI=NWgKqhJ[,rl'Y1a]_oYcI %6r]dV!_JPL/AD,?-Pb:L.uAIo0]7t=9PQTiu]OlRr_WQ,Rm@)l=WGuL/j/]1ch)l:KNaj %ni-UBn0kqO[D-]O3S4&Pn*UG,MtmnP0)X%^qZ6E,P9KG_[Ft'FSN[#+3r%Z>9B,bV5@@W>qD@(/N1Re8+$R@8@QqR(FZj(Aj*9GL %^:iAD5JOh<4`>s;]Xq`=?Ol+@?96tNAtR\r+$R>B;*Vh-qEA9SBcPo#hVWLJpPalIE//]U8(`fm08E^,CbpQfARBq9f/e@9UjmX@ %k'k#[5F&.!_Oiee4<4apJrf)McgMr5T!!flo"5ak*.;#$5/4GF]i^tWG],HdEO?m9kBkiF^V.805&\V/]\^Rk^UjS4?g`\6j+@2u %5Bu\6P;A"Zr(M;Gs8;%?KZoq\*A/L];8:!tUd!1umhW2nrsm)2Fmr\>+cbMCS3n&*qd&V5Nt_Ng%O)*>s*PWFp$c6^,4"7#gdKl8 %pGe&3KC17p?0&f\6Jr[B,/JVoDNge@_T`ip]$":J:I7(?iKWJ+92&D^]!\h7nDs+APN2MZ)f-ZT'U#6PINC*ksB-gdYp^k %PmXQ.GtOF)^[:-)nVGs;'e+h?b!\,PC-1h2$F3]CIX*76,^e$,lG)I5=U.iC+G8Xd;#3XV[='36C!`l\Q;+bkIO3lN[$GZ"'c*9" %H6QA#UGPo6SQH^4Ms@F^TsNSl<,3p:eU%]"2?A]_K!nn\oN_?`%Na!4pWEo!qB47Gll;9t"M.ja0>D1s1] %>NdW8@<0@tS/X#(iLPZb/9iQ<#^V_1j_1t29+K0jgu0i@ %7Om9_[;S@,:]Vp37`Ad]\OV^L:0uYJ24=YB?[[U`;ljto8C(.!jZM*P@ILOd'?LB1PesIo=tuI9dR78LZi5J\_FRM %!^ERI\*L4pC\JA[hJ8/mpa77@_gLRp_6l@LqAM6DkSNQ[XlR76`&>S*-0Ar//;J1uQ$'HV^%u9HHC;k5BO%MEeZ"^Ng`;M`>&Upg %CdCL""".]B(+-=7P"di+^*97'(i39ZgALf8+lt\Y*gr<'a$M9[p(GnCF<0MUL8^&Yaf'E'K;uJW#8Hk]<=Z#LL:_$n=U,,!,-klY %!^ICFb/RiRg]7*sGL`fQ%,8L+KdFtT( %l1*0FDtZaC0rUEb8bJ%t'oU209#]DuU/n5hW?7fMR[TJ`^7b5lQ*,M8BdL]J8NS@'AeN!:D/&,rbsRDJ9DXTb1L'ius).X@:$PJ? %#;5(mRj5H!u596NI_jUeEuRh^7P@RmR^*=<]=YQlq`N@2a?`XjFgMF,m*K$CukR@;m*8Q5Ja&CN>.V %!61O-*MVYc2Me%cB'u[bg>MhWXYVgE+D#PD&(7YA=nX&LBJO"jY1*1?=qAWkI#85;b6()-qP<'e[[;jO'5^tVf%jb*\m=TP(E %FCOQ:LdWiG:"CG:P^q&iT?R*2ql9G9pTDluY%l'Yf#Qn4]' %H1Ip!GF@(#Sq*+,1/2eOc1!;m$reN\Bg^"c>a6T=]$W5fq=._:ngcis.*4"T%m`pjYiB+c)ga4.@WOCmi,%u&9Yf=b8loUB7K!+, %RAd;$)HMqba_K[_`\TTL@F\0I?)`sG,ung,Ws=^e[scYC-CJ,#MgGD-Y'd/YhZ+-ZpI^nk#oLpO[4mUeNg4_s6$YFqIYI6aPjn=< %Lhmip)7,Fl2r>?<=XWiEea*]A(&&$3L0)1H$FROsC)B_AROKGh.*:r'8n_*;Yk_m0WNn%KpY-b(`^6%$`@AiIcfX-WJmJZ-bERs@ %1WJFHR0ELD*-KV`lP)Igd=VlC]?nQf*Pk<:U0:kN"=XJTQaBlk%m;G[eaY?6!PAZE84laj#u_e6;lH^&6Fl_QVgp\&QGDWmR0?^L#h#RKbl`BtnB %d%PtAqnCWIAeMfaQ"tVKhO7.6Jk.AX\UAB71R#$iX6jJ?g>tZ,k'NaR/*HJb(^t<\h34:_Ke)@Fl*!SkOA*m,`VNU@9U&87G.k!M %=oq)&@YfCG:JgsQd?eO'Q%I^!UW#Mr2 %8mmnHnh^=%n1&RkRGj)$8G72ZcX\6VHPQIeWT%IC8'"`J7QJajfD>VG*M5AO)h,@6s!c.(7K_8#_$7P-GJ6i %4:,K7]85(h(raQ,s3'_br7P_mWamVEVX>B-V-V:$Uq^6h#-FJD=#mk8#pA&F`Eq&ca\pDP4qTCcfj:e:]gSQo=Eq2a:,"O:QDfXe$bBlE4?H(aAqJ68R,8MVKj_3f$^_$ap\=E9;A"rOBF!2,VIE?KW'XRcKXMAXkKc#$QA2; %bF@,#ZV+r9PVh/_g"[%C.F;dmW*!gQNtqR&jmG %>j`MXSk!^K@@5rYBg=\b=,+XdPN13]BO4BgD\1'fohfPib+N]s3=u9.5DUnSM3eL$m5 %MS+-&+t^o5E!0#6NaJN/+WB?>ElcRZKl7X7;fZmf^RSu+t%"IoabDc*%oCN&$oU'0j6>QA8Xis(Zu/1P^^Y%gYCWB %F3Z[.lZ\o,m888W=kdFg<1b``Q3Ah)V;t*eR;C-i0^ssn)u#-UjQ<,:;)&BPdCaj`PY19[Vl/,:?8i+"ht:rY1;>R-kDitsfq2TC %bA=k;Fc(NkhKsB'1lnoB\%].Gpd9Z(j!>j3N3uQ/Ba#q&0.h64TSk:smuOE7)L"q\Pt>NWR_'"lUoI1E&LRdHcr/6cn!pJ,V:crP %Jj2d:MtA#>P8W%kM$2?+'>1<5u>UbYK>I>=P_jM13ES&]M"YiSN+ki>8(B+Uk9&L3QCtU>T4Nr;LAY %_MPA&8si5XZIESS[L7lj00"HIa`,"qGhLTt/)"_UOIsmC=FF-XIB5Q[J7;A?ke]'NYQEH7.>k6^I-L-%l2'l_c1AkM]l*N2eM>`K %4Gt)-qY`=Dm1Eoo]_n-N#*N`n"no6e!n$3r<,E7h(W-+'.lQ\hODuOEBjr,$Zn;EgXMrY>L64!5QccCSKGVC)+n\spos.0j[V^W* %Oa#/.;W3L+_H=/\m;S-mnm&duO=oSI^OUs-k%[J]^3k)/7$7V9Gch4>Ri[^e%YR!W!%MDH.06L.BpE]W(VYG=51OmVp8bd.$EO3Y %*cB.9mZ(>r[JR'B9&/VJ`Ng>WMOt%Z:(LKj@ou$]N5jTOKH%?$A*WV734X9eLmVGd+&4'F.Lr@JIub=JZhUQ>8_:(D-&9P+,@ %IarS8B8PoH`HeY5o\bmY756Iii0q`+JfqAHp\W1608*Klr6X$?_n*'[ldmN)karEK_l%bJ36$]1JZD\q3ek2/bq#jdM"tM/0t!)t %RBfg4p^(eq(.%;c&(/X*dD'O-%p>6&Q=/ERlRT6\29b&9\)^:t;?B0l3"?[dNaa%<"W@"VW@QdMN'kNnQ#'s2p6F_f!g/=c=g]Kd %fVk)bF8;o&,eOMGX!QuaWtQ$7!uF>PjDeDF[q<1JN7[9HOMDu1jR`J6:QomS`E-R4+%\lK8$'D(P.l(s-=g:ZR$S<@=qk16N3k6O %X#u=]Tb-?6TWOrf>LE)8f[cSIiZ58A\N3l\9H:W\)7V)G/`%uo).\:$+lKJ?X5k"p1:,DZ?!M)%W^;_L[]StA5i/7%V,"A%$46W^ %@,BJYEM38F,_>WHHSee`ZL6HFPc^=:J26Mn?\q8G1"^s1"tE>LS4^[-m@`)GAn$WiWF&2k94B>a[p?j`/)4k!10&i/HnOeY %#kihV$_lV\H\5t(Xu1X;bg%>bf*]BW2;<"X]pFZ=EKjnM;mZnl'(dT"0->(T(`?.Mp`m,ERY;.&-aHkF?.^=B*7;`#ZLb3P"7;l0 %J8#3[8]Sduo0,mc^Xub<(ue>]Yh+03k5P?)h11QUQ`&9 %%FRu>7FLC!q0PhG[;HpVbQs'9&d.+#S=QLH8_B-t/%Ih^&%.i<*l`8ojK[iqE(_f;?o36B`WOBJBo(6'3m0ZP**L+g_\#_tS?SP' %2$@2H/Ta%PV./eLdXE61lSU"7JuIC]OLQ5++:-CL69&k!/$T0kR19"+^;/VbXH^?.S2,_=L/BhFQHmL&L(o9I&i@km?)UE!(;=sS %[l=-:f^L\!D%VKlDY8&3PtA5sWf3d>!L!j(Z5D''RH;Z!''??-9-X/q6?]?IgW:@CpQ4at/ehL@WO`G+dI,Se.&M2>(+#%l6/&/9 %\se"V("S;/XmLb0h%'`nd7&>+aT&;jq:?_g`S^]%Nn,lt/>6!JRrjAgOj!C$VBJl'T(cpFs;p*5+VE2L?RW^ko[60#^a`$F*QLK[\?tAg^QjE.O,O.'%]3^3SX9eq(!p'-bfYYt0%:@:#D %+ScIf5[Q;)mP64C+o%NuA?)3;L]fSIr=NGLl?fn[WWaf,U.PbNVY"g*DLlS-K^Du]"jq`m'2n4ZfAKXe_aP(%?hkQj1NP%:Ik"K, %]9S->)+@XFl_0s`UO^l!*KVGE+B$pKI?JM.]P8FTjjhd8+tp%H!-OhI>G&:RpL*2e)5p91VI,q%#>m$L %dq_e_E,geLgZBEr.^,Q<*Gqs6LRKe'g-BlkeAU..R+;-K95H3($Sf5+js'V*?!rBK+g%uc9j0&\/@N2#f*p,EXp]E4"B8SS^r>Y9 %29er%E8!'61X,b!C7SXaM2)^%L^m[;04SG"%%CBj9A&e\]Q9)Y0jWtSN3S>PeeU]BP*uX9""'A(34:J/j.F`DX>R=@'d$pJ3fkF%M2nWuZrFRa(q6f^Nq'*cH:\;"C %q/9YXXSUE$5p9f:-Gsr`GEmYfj@i#KJ($fH`O[#1lIX]%6g?M]g11RU3UDEVd0DF$XK^kF]sP?lV`Vd6qd>#?-"\RHa"JREOpgrZ`A=>Sf('We&rnIkHZch*M@2`4rX.7$>S97eo<0T+NPmD/i0rss %PR3\. %f?WgHUBcU$!kUe6 %g#H67qN1'Pi:fphg/4rfdSb>:Kk+Ya$FU=IINNaEPd&)AK$3V3##K$M"Z`tK$_:!-o+e)\q)d$`4=5W?Jqdb7+SRKUuZ %1\Kfcd.+40W,!UhEkEO]jJ'IA>ARnn/,4qEI9479BQJgjk7(#>H'NA14qqfCNo`9_7Y`Hu5b6c,?*j*\Sgg1\BuGY9T43,#&.k'M %eDk3#K]42lktZn<.`3jgU7_msk)KT[c=;"5R3PXNEG7(5N7o"CHj99Q/pao?DTmR%Bja5\7A21#\\d+!3\=%a0iLT=!dX&]*e"gG %EXR-B!5@DKP@eC_/l!ghIt1b5G'3=aJWpN,8`_H`Y`k,n4e_(k1R*%/jp$`rMhf^"O@mB5a?tDAnf0gqVh9Ggm[!(4,9R"2)A%m3 %\3(p+nQZH-(,.hTn:_4nl*'I=,%R3lk,r6Tu!RsCuleI2D)m5".(W$-T,A[4G1UTOh0=N2f.S` %#8];WiA7`MOB>_epmIZMWnF(7=CYe!,Ydo[],sJkmXB`%6KcJgh4d[f#/E15)HC\#5fuYnGO^6l+_[(@l.O%I)A?XFJ:\Q&5f/((5ka%pAQi"EfkBF:LA$VE0Ob:g(CZT/+e:(AVLMQ,-aQb1`CCYr] %;0YpD8kr&#CG='D&kiG^$iDSPckbSTNetq:mdQJc":hVSX=/-?/J'Y"mbQi;\i,g5N,CL4aH8=G6Q_;( %.?iLdgcO"_l;`sM+22d %eu*h&$o0KEQo;)MUJ+6j@X-fK1lGHtkZe7f*Hqt*_V#r&X@BQ-8kJ;[AA"g5jYQ%4Rf,i.T"\K5at=#a,*juDo(>`k"89D,XsEQ" %$)i"jP8BRkFn$[aTb\)7q*7YQS63: %OEJ/$()>U3.e3mT[)3ouEk<(t.r6c7bMh3QbDG3C_j.K``qGV+CJ"!N`K %XT]S.?/T"Z;g3+S6/);>pPY!Gk]Hj#_#tuZ>EBd-QRXA8Y?8dV)(eg&FX[HiY)INUAk+0DV@B'G#>d"l<8\+_Ta\,T&Q=UO1KfC0 %DXPm)cjXK4L5bBqU`KY,oP1+$@`D\DR38cJ8Do<50dS/hAU5I92P6NHm:Oui[Y`4Gq%uS,>_A1.N$qgj2rnF?6Ga')%1ZJ:PauIe %KU@&IR$.qLQcK%L5k6GlQZ=ef)d,7;!#alG+iVW`B`W(P!a`83"g/7uFq-&jZqMN6V]cDLF9T.kmT3M %0=t\],WVC3CED-"[s7oc:6"p'R"V:k7a#hT062m2!EO.IYtaMKV1$DsEckYq %$^bHSq$$7&-1bL7i526MCM_'d=l-DW>Eb^`9_V@[]g(R3\J07K9@F4U)8^f4&/Dhh(8b')F-oMAX]sHQU-iGrO(UpKl9\)U-hHtI %EeF][n[`9e<\Ui`r&$a##KcHc.SNEJ`.6K=]e1AhaL4chB+.E^)Ud4]aLY3_p*%Xc5f'l(X-E*Tq %@Pgf#(3oX`6,_)clcmfDqd^l!SsuE[GWWY:%O!N$4AqHG9r;aBU9.T%"d=3+?DP-"'a(3LTN$ZfM;K'S#h_QY)G[3iCPVG\<$dQ; %'p0XtZ]I?r'kCLbe5Z/n4(q.rCR_Vu^6s,Ih=F<0K#&/S!X\.-6=-gg;44_mr!NDg?DRN9(>BJaKl=Nu?6NfEP'HZsmOl.Ubldd] %@7*r$EiIZPb(9b9qLJdn$Y^"6Zh%!Kj;_j-PeAs_C=0s`3sTJob9Bfo&#rqEc'AY]`?Z_?l&%_-'EWOab.N&<`9E1sENYY[AqA<< %q3\+hgo-&dWP[&WPXk*^\@7A:8_G2UDQ_4lGNZjrb8g$WfIm^7eR0Za^nP:;,2=:+"cc6c]s\g.VJ[f9Rg8@!F"RYLNVPUddb6r: %jT;qcn;kf)&3_-?(L\IPiQ;E`03sU]Y'29&-s/pkJj<^e:ZWSYS-B8eD!\aNp(0=?P4'E_3&3#f"^kdN6`tu)'Z=Z,`3@>qFkGf@L\Ya>8Ve/A0mYKT]E-(0B3,d %_->I7'Fm2C)qt]VITo74>n7in(PV+tnPc2#DgAK_]!/c'&q1Js%kCL#LDSA2-f^iI1]*\oT$8?Q?4 %MXp8JV?Oo.0nSo:X!#OdZb<"e/%a`Y0[8mTZ=Nanc3$5X/P>b"TsAm>`gF[p#=HRM5+,tPlB7i4eYA,COm+$g)Xg8_E_dHChd08\ %Pdh=!aN.Vd/)GO4Fh)LtjB-la/WsaJbM/9!PFlt9]iY*KtAIgT3['F_PrjF-'U0L%=GT_YX'_ %q8ZA@]F4%LJ14*[__&U7-;2&DK0M?/[**6Aek?;nM0scc?0C%MVZFjJ@gPb3m9?=1"q"bs"-WTJ=lBG1YZ`(d/R:-7CIogYa@TE3 %^KONTA,mm',B.l+;HF=>K=tGLWEHn!<4)j54p'1C;ODL=R1E=`UdlgX1;Sk5b4"E3p9q'aqYW-Za$P63d5MBtFV/a!;TMqQQu]E0 %k'PErPu,)1raMUmc4'8>=(PF/f?6^96`eAk;-K<5Ft7\qFhq&#_c>Y9QH=Fj%Eu6t %$Ag"+bcaq^*>D,%CQ)ogjL2!.V%M0!Gu9\_A+i`ohnn0m8qb'VXk^ht\Od984>IslDWH %Rt[)IAII:*8p&`XFJYla0lpO[Wsa!*1BU?S&drI@c66@7P-jQR$'DkKB<'KXlttM.U(NsFK+Tc4XXN39'?d`<1t\Ku5m4I%$Aq?+ %mh!;o!q1>H&]L<+;XhYn$CF6+DR"%*1T9(6m\'A1\U!Qc!Nuk(5YYJR?O6F)g$XcNXZ1]P1Y"3a-F:q"CL<^0`3?Go3oqS+<_j[- %$*5ScWXiK=1LOI,[4g5DWF."D_,!UO9nm1/N)Mc1=)+Naku)3\)1d$`IaU>oNh=`LQ^PYe0IDEO=Tu&+\aD5mRb-0(P_6#/>O-]- %JB5PDg$"cbSR;0s9_1fAou9ft7aXo\]iu1A1XNJV<;eI+.X6!oTW6^TG38KsWr<"o)h"07WWZP!A*/G'Ln`Q0[%kh]+2"W)Gh%eKVb>p%9j3%u\p7SkMp(f/#!lr&j_)-*Q)KA6)bB=n[OaAFtQJrk9aKG<&p:/Mus@ikT$c,6CD3p(cjVZd;:]J3LMh]i2`%PN>J %4e7]2Z;3]d^6hU)1,>X!""d/7upMf)jh8iF1ET?uHAXd;nFsOMoqT2Bum'7+&OpI;T658m#+V=-hC*hgP(3n>Kt[ %1HJS'%g!q=%?!0;^_XRp/=TJ*P>AekRi*CidlLVdV]k,#"Adck[]R'FRrg>HJ49EE!4`RF4K/!?l_T-r"MRNNnGd=2%m: %$VO1F2SB4\Y?plfR5!if2"sd/;isOW;a=FCI##SndtV>+,D] %$\B'?*@Gml`FNT#a,3Op9TQ:b=>$3B1rG_)X'0e3h`Qsf1,CNqDrcIl\o`H6>m61SZfQ2T;Z%0o`q$fMR&%8>/]DMO)$]LP^sq(E %*fl[#asJ6K@I56S!\_WMlm$-(LM4/Yq"UbNKM#A;+l[#cGK/"Gm)QHs#>CNc86)*jU@T-o'1h_m&:[kGo3/0h'MdaFRChS(VYCEP %!sIiOP,F"k6,O?/%HO1D.a9>K[8muZ*,7d\a^C-hJen6ZM.UnV,5]hmP7$/r';M22TYWUDpI[\Rk)0[gJoBC?@,doWb/XLJ)!f8CbL7LGjmm3IZ>";+[@9H_gb8WKFJ %_E/I-Cf,lJ_=quJck4Zgp!kubgCcV:M?7Y*YYKF0n>LR^#6Z4\%AtC#&rOK+oEJX1(g@D!%^FsB12keu3%W=don8ji*+I>I%GC/QOA4ifOm78+*GV_o`AT9tgAY%sYq_a7A0K"_",'L;3!N$m$T6Kr2 %]e:dSjA#FqoTl,%m(jDI:-V$5m]^"m32l!]q-QE-$&'O]AI %%e$'3Q!ukCIJ+)QPCs#6OsV^s!R!`$SQ'N<`(feg@'ViLVbc&uGg0l?2d\G!K"Za#gVLjTpP%1TJm;HQVKnJYL8iQHfhaW%j,g3h %cU+ZVYdkU[IneLBkfBj3&Bi3,TG68r@)33&l/UK[-5mQB(k:^k-E6n.LpX#\^pO'X7K?b8oYrS]SNtJ!UE$I,V+GdrCdgh5&)./% %X_:IgC.9[<,`9Lh,0_hhLNMpELHEp>75fOUi3qTPpe(:;GtQS=D@c$,`0nug/A#o4QLe[a4ue6JimACk>pG>[)_&'_G:1m'ADL$5 %na'nMq]"Oq@`Y@s&5.rn=3SEE+jNse$Ocn:>q(*?$&6Hs7aE`X@+8'!-_THa()g'J&Tg[Be`uRZO2.d5=UKW<,Ifk/,ZEp_HlNeV %60iu(4]=C>XNdr_JiA@+0Hc&uOp4f1(Vs2X[^6:Tj-Fp_g?E.qU/p"h6NPLOfIE/BjtW'CRIYO?c`(#N-=YSlnF_%@1d.;8m5X,p %ajb9)p!qp7/+63*PA08ThVRG0?//ar',*FR2tId1?p\/#H%qs0MWP5JLJ\li6Cb,\q>n>V#dFTb4>VE+eBJUn(0P"Cm1N[8'd--# %"^:Q)9iP3`N9][_HhA2HF=/JoUf:!fLG;XDL6`^A?!4-o5ZW_>b-50*0]EJ0#:R.tKS$>b;S"2q2-PF4m22W8QRf4bp3(Z-[VF\. %/ZfN:\QTG?!u^f7I@&.`]e[sp'a+_";E\esS`L5t#3+TV5pG^*L)=s92ka2U/JQ0_`="H=Ka$HM`(LXDhC2)j?SZRUmZQ'lM7MB> %17CgkR1g=4b0SoR$MsTO9%@pKLBj-HY&,pl-PGK<d5OuNt',cJo`3=9mXScLkKBG,U4pB?#"B1/$n2%c(c/COk@ZVs,RBu]4% %><:7J//8-[s-S.W?-ANZ8aHiM+'P@)i"fA+,6S?07nniU'UTM!,XJC_W3?s!^ZTceGc]+n"&LBSW78`2b1Q"tiF-VA84+X9\rtWZQZF;cA4DgNmqrQ)2f7;6@0pHb+4-?JaS^m6d.8$\E-Q@PFkR8c5/5 %m*CCF#^5CA72]ZoV^"],m-Mk6Xt.@J?R`*Gr+7]NF`S5mg6T!eY6f*(gN2uXT._B-ln(@#bn@!3Q+oQ=>;bh+Bo=ui'-H9FJcXqKK*W;/a*gX %,#\8>F4%I4(_[BAX;N=;pp`sT,t0j(>h/NL)RF4j-/g1Gi2-E=LEN+g^DBP&i4]tjpFW#Vo"V*[SYDC+^6WT(*_@iajgEJ=eF'>< %U"UU^T0$K$,i>aU]04>l/*O>5'(uSKRRs&=nG+HJBgD895'"2O^DpHIpAd>m7Z/`i4I04Ra&V=cL-I=/d^8WH%bLEtG$`uH;?Ril %;1(/HX2fA]eg"h<8dY$")85Zd4E#$-8Y58oS&.W-FKm3"57Cn&5^%*"j^TT+NV@*)'lDK.!l!cg5.:4gX(Q&G=5_$4>`bmt[J"9* %7]2aM#Dph47HrY0,fF_Cl\J\sWJ)G#d(J^-DQ'>Ql@oH4pBDq]381D)%:BbGH^]>:+#QI^Dt*BV[e!83KCgoA4j[4Cr'f8$"3KCu`# %IkDa;hESI(^XTS)qR'nur4ikc;c.cPCU1%Ne#DNDXgEi^iSQ<&#?K>&rV,'F)l']>H]b\QXX<^Oc#>48QEoC/6Vi#IJ$F]bRUZme %=Bd?C9rX8u@$rW5!=1B<\rmX8"]kmoH0JK@Qq00r)'fr>#sEB!V/2=9g=KF)+W<<_VjW0f?moFo5;Cd %>;='p=YJ2ZW37W]9Z4-I!ioV=`A[Q-,ukTR8%2J!)HE/^V"e.&n9?+Df%uC/cnK'X$8m\d1:UW!Nc;<_9a^jMK`("]3GYc"W[JcL %i!'FCQW/t)6[Cl*]5+gqK9IM#Bgde$-iZo3*dA:,O.9"d##1GJTl6 %Qh18a8##W>r*r2[GHt:Y6dZUdfAi?&/ging/>0X>f&2k%$Q34JKa?#(Xb+Ne@"hI">3j;EeP-DSZl$@C)HZV`KbHf:YLG.'T5gFd7?_rn8r1 %>:2N:mk"RSGgt[f[[m2^`@)4m54T,XM"]m^#4q1^s6\iZHSnMdkP#j!_Q_99?XMI]"cH=.LjJB.'8:`"7'BWJ#.#BpSDpCCn0D%2;Vi?'Z"J$e%IjKk:`O>d"4mote%"dBP0O3n %p-<-<1RR>T_S^70,t"[DT/>.bl+4VK)8A!n9D1Q+\%lopQf$Z[oob9Oe+O+7FF8$BFMIGsQR&CO %W&DZeUApK_1-=t$J"?"0F=Sa.a=_uGN7rpu+4#!'qa1MdbG>a)o(]AjF8;.=-$=(n79);r:(Y8+o*>$Yb?;O.]al'GF\^!G76VHC %"S5YA%m%R*?%-H]`F,<=c#_8HhUkWsW8f)51`X[FL-bNoJ^A"*rhu$F4ru@/:(%1e(X]Yp";u42H*8$"Xdj_>BDCArX8kB6;Cb=- %\jF]ghliHuPG4NW;3jGN6,&`DM\b$UH]3O"r(&Z;)JGFgDX`Q*(\lcTrp"BNXu8&.MsQWEWu@,*AFjkVTd*3UD]R&JWs[2GmLgb. %%n?J15Y@*oifu#t^dg4-$E-f86/[g@Zp)P,TDo*e'$9Kk@t(I=C.D@l$B82i!)r&hMGJ-*C,1]SK9jlt2t6hm$E %@WdN"q*&kF>[jX"I!Gd8Sd6,'D,uX*S1)S@2VGGR2&m&6p=/RE+0(RU1A;Kn")3))o/5qFf2At#OD#&6Yr/W<;UZG-Z?(.eI\kd> %qGH7V=RO&9lQhgDE*!aoQF*DlA;I-j0pQgT!Co?I^`k@`rDE`];cRWm%DYiuXB6X9P9,D#*XZYhQY'^8IR5Gb]&,4o/dnSlKZdB, %NfQE98:Ti7OK]4@OAfhaq[4IWXq-BCD;NGb5(PXA;j$Pgf_/b15K %Wut0'46hJ/&YS^%7R!^-UB9J)7Z*iKBSe?G,C^=+fIi,o:"mR3YlUT![F[TfP&HCJft:'&W;Tb>&9-8SMH,=..Bgg!/'\nQV!Y,& %07qT!YP.]Uk63NTNm"+n#dI,m=lETDGsb0qJDdImP;&N#kuaM@]Fp5^/8E5r2QKR%S#BBo;mYERg6`!S@b\p]f+FmT*6JYrY$OVf %8d*W*H:d<0@6*%2:i2?2Tp9!DMY9;3(2>()+2Q<5k53QIOl<7P=:I`Eh)0PUbM4\kDCu8rdQ&O5P._j0/VD@3[GjE'Zh8S7:o&<=FVpNTqS'jcZH8\%_oo)U)6.i;PD196mRe&l!>10 %#!Pui20jXg8WbAU_Pn5F$=qqj>*!,Nn/:3#K&3on*_W"(pIQDB_.')1a+tL^XqoIQHGh0AOE^b"`j$amE&>##r12o[eT%:82g)[K %:'dQ`Ah3B$gWR67rQ-PupsL\sbQEl0?M<$?B>[2:DnN)T(cEqOMp3*G9irRc/rde:4:]9;bCnN&BB%KK_(A=ahfT;&3eFA(BGa$P %'*cQu52A*_:0hEXoXU%/["'F_jo!X$0gXa,,j#?G0]"A_uP(iE2^9R-qWSHo*phhTaXRi;=!J6Jb<:@jD"rQ%>BhC9962]c6hEUU'NM+,@nOk[$OdA@CrAP/n9#McO:t;r, %[bD:%)tOTbiE,SW0RX)+-rpZ=Ha_bV0U/X(r>]T3D077R+aRZ[]d3"\Z'lEDj0s,1lWXTS>;P+#WCaI1S]4Ms.X``2MW!Sh#:cfn %Fj7!D2YL9AE$[soQA!P9=45!A/KnWSmfH+]L#jL=Y#>;!=4odSf'][&)6RouhUZffu'>(X7#2R;ie?h&Z=U75p*q&B6rgl]-\tFtp'lTf&oZ"8kgSLqQ %P):F1TC2j-fIrAT9-I*eQ\XH=O$,/dReufUR.XIGIE;-EP;>@Y9qZf,rj&*n+(UEPHgI-k\]a+<]X4#gBZcqS([]UJpMtuVXVS5/ %3G4F6hB:%#8`mL$nJX&LNMt%C,;"L[Bn`^UNf1+YdSZ!uhe:7";F?7oS$FNK`3WGYlZW+*`amCIC"*9nm2A@Z-dZ@"[ZB@08->es %?V7ts5lQt2>X.Ib<\3SM(H\RE!>u"pio;@`7gJmqo$iR:Y3l51"Lq)cR),a'%`7N(4YD6)H:O,'IV^s^`!=4`4Za=Z;/LV*],)f* %>D#NS#XPG>Wr:jKCTG^_cV8Iqb"a$6MRg=E<6782*0%22lG60O:6XJ<4O\$uJeZ!h0^lg$4"sC*`at,S`!"8TJglL0m2gq"Y/,Ch %7j'n8o6S$$Pj-J3"M^Joc=n_Bl*g?*0:W_S<^.e>:&j0*TpPlWFCrO&Lg695#mt:FJOr[o%LZT\Fs4n]i#JfE*'h@!`XMOC %/%jYi;;'M3\\XI9M]PR1j>L#kmE0h8Yt%s@dgu'K@6>SRpK>]Ub0)AagBf8@%N!.5pE$l)rR/A2RMX9lllZ.G`hXZ;'[&a<&DR!W %EjB.2E%oK6dXG1KF4$(N2c?M_)X'V#YrLa%X!N/o7:Bh6:;@6+h&)rDg9:jod]dT) %hNS@7`g-I8G%)]&U1Enk>n"'DQ)f#bG<1mZ"NdP>Y!MfM6E[/PM8Y?b^1U^d[g9TaDHQ!_Z7m*72Ua[!@F$_u39sK\gX$@oD/W1e %jP(7T/E)_,EaR,Yc3ZdigQP?PqEC30B)%I'_m=_,1\a=.c1QgRIgQ2#D":'Kot(g/AI;MkEA7nA0.fk"OD3Z?8Lo_Bmop)>+LcJ::81i&licJ;T((jKHb#5WaQSM:FU6'5RT,CD'@cX'LdG%uY-67M %3d7YM=F@GF.WD@ur_$Y!$P\jG%:1Xn4r@[%)iRU4"77[#Gt%D)HL`OPCZ9>,/%\sbQU0@iU`Be=i[6Bl4pa'Qm2O]FC/`T %l("2L="nKG"^NI%iogT1ooXbb^Ad9aaDa2DN$lFEkutoYTW0c0T`2iXY>+uaDJ*g[9$elRG'UKV!^peul]!OS4-aShP:PmnAV8Kd %DkX33ZEBlR.6tt'8>*t56%;nuSC:(Xgu"Bo/D@jf#oKQ*'Wt!gJ:7+"(;!uq/Ajc#nV"ELQ?c1U]V`i)+M,1qElHm0fI\`g54p-)#.\8+dSbLAk(4!oB5\9W,B-;j#:\BtX&=5F8Eua3 %<=OOL;I"bk#p=-WV/W[RTaP",bmOg:UI)23(,NFk@JMs.B1f&=1PhbaR;=nR>&M0!$_"M;sbmur@FsE^)UDONY8[dl]!cGmjgJnUC^:&9j2]^Y0RLO6l;CeKK1&B]#f(J'Wm;!i&'W" %jXQro=PgZ'=]>S48fA(-?'o-)\e2:Z3Q!)ZSBP#VF#5?ggg7,JG$tO@C_kubB"6T4XZ4ql17KeUW2Ja;^3Dj^HPtE7Yb03N8^g(e %AE4Wl;i^*!nd/CT-Jb+`d[O*`j*iuOP0T@82TOSqmm5G\f5[2DGuX(-MHWnS5D!IYe@)\)2U5F\!&ojd-=7$&oc">d5%/Q'7gGF-Gt.1i4L18tcu9oJ#Am5,CjW`bA$F\uqL_cKEd_)TlN\k-eS#>gZlII0/O %^.!Ul)q+tnr<8kt)([1DrA/(6Ou\Cjr\0.h9]8d$#=4=t!4$/SQcc\J#c_l`.TNInTSD6!)0L?VV&t?W07U9)fUmj+#f*(9[-K\2sEE4QV59k1+#`>rGDDq^8`re;,*RUNfR0qi&B)9lL'"L5NDbdp6@dmj)YGQ1?9H %+V,6imn+3E>d47r"K/0]jl/5E@J`\Y?Q,aQPRWAZED52/&&DkE3A]A5Tor!kK0bub:\lS$I=?p/OdW'5XDQ#;\U4i6rM.nj6(fu> %F+l*`n9p4Op]WuA1%SiGk;0Qg+=L7_H6#B)[d^_K2Z';_;9]meG2fr!_e-n-A?S,l7:)+EK%5SlG^_Lb]k3]sf2T\gjDOI\4Ne3A7130"V$>fO %Ul9>Y`r\oA21$=T,h>B@K>rPECtTo9r;@e?#r_X<\$`a7lf4HI74.%.oi5Ko0I/]6?)LA\W9$XGcAb2$Kh-(dXeD %,Z8$GcaBe]L'7N;Q2W)E(-ts$+ZcMB-(lF0Cg(a._.%IA9k7aO&6!6t?1@90ak&;e4[3%CVD0H;1P@25m16q0+ %luB;NX?=\(`?e(#]KB?]%$u2UXIop8\@"].kX_L[`p/d'7g;0L%@7kETbmg3Y"=pu"A.e:B!MAVRCmmin8=JT7#R_FiZd%H45.fm %CmcZ@b=kUKiWX*Jme6q[;SEB"gL5%[Y#^5-EF5m1"Km\B@_<,,Q!l9TOKQN6eI[]680H$cY.9oW=@WnM0DjbE8P3g,.bEB9Z!fN8 %p_NWGVHkLnJ?j4WA/XD/E!SMXM_O>,#`E\GSj]cR7'B@#fYOK9B]Wa\F0MHofYSZ1#^`j)qp$C-IBFJ:_L,Z%VY1Ij/9-0_AasZ= %YT(D*.Fnc_Ma5GQ+/fa,YT"BI(C((GLC%\"a#I(`'+`ueF/`j[Do_RC)j[F@;*#+iIV6:IS]:^YfG95t.=!.Lh7es5oa[ef1;^nQ %Q8E2ELc;3n*WLR^l:9T8eP!PaUK:0p2Uo5MI9Z,Q6BJ)Pagum.-hb)W(ZsFX9o;!F3GYTG+>cQNIM>2cD32ffRl(ied*1`^JegYb %qpGHkpb'#U&XG8!>t0P\eGd+ZhJ933BeimDN%p0b<`FI&;W(&catB.h-@]`d:8P0l61IoA8OOlT#kkqPP\C39`DmgpDZW5$m;.'r %KK]/:<"P3.SbF\4-V.9FQc72p`1XXd"cjcR3)k/3bpP0Q7Wp`[/I;huDe9Dq.QdPG$Z28RP=?]JRpD0YAcIRK[DUX'+'dl`9Nr&9^OmEikW:Cd#2VFOXp %(/HHPRg0KK&IZ:7Wg_,!XEX^>B)lHDQ*C[&TX'@EZ!L&8eUIp;nT/QX5/aXs0(:PJ[2TR3@,FFVIL.qHiO(q9Re<3p0h#V5fO?.& %XLQjI)V=.\aUfhgos=gYp6B*rqR]$&=F.K[Ch/#82m:1GTZ3K-DAU;Y)ZS7Od^9>4G1=@GRO1>C!^3^:>+UKX#X9m3nkO'H7X"nN %UDa1$M10:c(gk$AD:hsI?u!r"N*>et5(]sJBlaJO.8Yf(VQ9dE#`Lu0oD$^2pJYJ&Yr[<*!CEf_,2dY3=]XtM!^i4^rM!Du_8;Ic %T9=.Y %,Z0]XF^7?bLVUpT:,8ulWh[LB>mWbg,Bd>X7##cD>0OI'!T*277o91^K3M@UH`OT6m!+s\WRo%V`)udUdkG^pmq:a&aeE>c`U):X %;snBW]U1h-/,,GVM3p=mUQss^V(sjlPfYt?>_:AGqnd"k'kmjkBgHO'-,IaLJpHilf?'8QgsaM[Pi@Zrkc@RV+!kP:H!M>r[/%R1 %g`?c$\#0%+,>h+7Ln7#P=%d;g+h-*pU"4%9mCCF(f[no@TP$kDCaZVS'&G"os&5N,+PjW&_:SH-'IaI+)EpWO?K_^$8AEqt97+%a[P"Mi3hh %5I^`1Gq5q6Hh]'$?aBKpq^OTuCs.f$C`^Y@3%j,Y^(-V"[b#@![jb4*#;"'GoSeF,P"IX/2<-;ilKu^`O38Pe&9A.c[oDN>#t)(! %>:Cg;HaBZAdVEIL2Fdup8LGR@Eg9;I(M^9L0(=k'ofW8S3B6QQ87G<)LEaGcTDDhmUgAeHgl[^+l@_GsgdDl*&W^.#=jr>XVcmrn %h'3Nu%#sH0`\p/"miM8\/bV@sC'!nm,OnYKF*a_\%_OL_PL/9m@LiKF0A')60jNZIb)pK28brZaOiJT%9gZmY,52AQL(g6&p4;j; %>PT/6hcG_N^4F%uXuV6+Tb1oGdg!\9U``n);#JGo't-/Mj8U+93IXG$jE %R$1Y&IURk((SePr%*KpROi"#Pc$bKtI^9:BQ9S^+@A"\ln-@gkJpEKU[IYrO2j!Q&*huTVOaXlX=9f8a.l.mjn@l/d>@)3Q0ES)o %5]"\hBO9^7WdPjC^"PIP&-^$QhXO$8+rnRYf%HWL2Cm`$H<;smB`AR=ttbuEY_?XV6& %Z&$WZ&f-HgH39I=+'a.YM^nLUKTSlZ98*NQ:%-#l@JEq:A_(Aj&R9:0APg>CN@D%K_hg(HKr*[4ilOeibNaBV`B]W3]PkWMF>pPV %k-e]D+Br;OKac2HLR@Qum"JDA)i:\Fp0D.X_uP+CVTfJdFO+ZSRh8\6/otdFJ9GCMSd;o,FV0iu%2d'^UhOo4'9B\'gTF\BijrGT %E>I0]bM>Mo$"NM+d9JB2V@sb->f7#aP@d1d9)g#tPH:@+I?e;lJt@ihqH*q!+n(sG.o@,WZV65P24O^=@2UGSOk2MnX3B, %F=bW!.Ddr,GOI'BSPY?]Ci[H1V(7p:d0PY1[^%u,*;/Iq^sfSR;DSPKkQMhi?_E2X3 %En*DB+^^lJf"1E!g9H'3C>dAXfub=H]E?i1KPjdsJi%qJAWqpp>MVpmZ:`A[YY`%/l;*=Q^il=:MH8N8j,W#*IdP7`)FS:f$^B.) %2tmY;FnG`P\f(55A(0)r4joZ;^m)!F5,lcZPP?i(CdmZ?d#8`Tfnu^H:]j%;J2P[ukoiK\7%:L-%O&TB1QP6SA$ZNre),\Lfng=d %9YaJNL]+rnDa)C'hIr\STH`.qB/P?*/RQDWR8K#QcXqqt(/NZ0Q0KfBjS.'`$\Lg=6p,lq;uVbJ!W8WOhZVQ&]DYik[;oX.lo_g1 %SZbB;]K=kLs1la2r0a,M#gVkrm4_U;hFM(45V^4s*q\g]nn+?=\-A[I!CfSk^!0B'.n0n@W/jT"gq1,`'S>gJ7?CnG=_mE=>E)7@ %-qi\T4Og/+Tr!5F0c::-XLhp00:eYZ]Q+39Oa*_EW/WBb`[d[Wl!eC-n>Z^mfc5Y&q3Z`q0.Hb>AULBV/G3M3]d2FtAoM^D*&ZKp %Q"gG@Ul%M"E+41;,0o4PrjNO+;eE!>pXQk);gYOWlg@nMO0J29eR,HT:aL9\]:%'#O6@4OH>Ib+@sC_I_E6<45K1XCcHRbWt#7>%XQ-rCR1aAa@YtI:Ghp-L!YeBpP]r9GIIK0QbJQhE5Duo!DIc2ti(4 %n[e!6d@7U=AbRNaCC#U)q"!W@!43#D;B7a$9#>o*6t=[[lH\GM0C,4R1g]@$:?U?%3^uJ'9r,g/IETH.akBDHP=? %-857:!A)?s(RFj$hK-!)#pQEN175Bb/+@U#;U:-0V_m0uDGbS,22!3j1VH?tVL>*4ZE0>WJo]NMWfm-`D8:dIcB?7Dbt?J=ltUb; %:Tbji"mmQqm1$=$DC1sCS&_(3LJkku\]DPA4C8N5U,/:',<1&r&hYCL9iTYc+&t&NpKYR9GnoQuS,[HX7%H\,H";t8bD%Tf'qA$P %_%Q87l`Q)h/ntSb;a.!"l*W\Z2M&^A%JFDpYqoaWPnC[l;VoV)7kd0D#YUKS8POo0.=O+m/*2]pSV0m?aF+HGit8'm&H\\c6%WN] %LAVKD8[9oF`*MpfIj?k@p8r3DXXZ6``b[#qTciIpOgFfsXi((#+P=pI>4qT/PB@#7/UqC[$Qkr=>BqNrD/LLd92PiT\=^Rm@lcX) %ebpbu8MuB-AUjp-2^s1f:/JfPeWt:T0:UHQiKonY0NSL;G](!$kOpQjA:L#6NMtOtL[K_8q@Tm%oTb`,QLp(@VX2sS9%J"@pu:Ed %qfErbp3;!fifUWm2tB^ImM0#aY?%=^X%@Ua6]W-*RKYks_P;iQoZA\V&4*EqBgqiN^l(Zm/2>%NEJA!;Nhdn+Fbc5+<"[>Tg^&,= %"dj*G4F+Dj'.Bod21@;U[R8r$R]2PGm_Ssbli(,'Bc!+PFnOP[:4^T@.V.W$ACtc(nK%inOBGU.=O(V`AHZOG(%(@KZE'!*H)=5]*^$h.n2q1p,534(]CK$1>f+Z0h-5iZr>Oc$peC6MiFA4%( %qW_;m>_?qMEEuJG5C\[(PZn1KsqI.hS"H]C?QCH4'XE4YN8r06?9V281pB<9!a_?KUB(fp^ %R.^2V0@j[HDe2rh5P2-J#C]..M1`Gm*5'2%=7\q)GPRFH1(djd)G-@\+fB/7QgOq# %((u.dr_rt6Pfm7>)d;0)pI6#%%e*+Ej^9:oif(I$?76PEl;dr353SE9RQ,qJ`B0[VSYj/e'FK\dqRC-KLeareLLbEXa=[pYc1?k-#Gq0X2u?'nj1SgQB.jPQKn?+2)Z1S/lTm5U8W*\a;a %I7H>^@i6"60Xu?%AdDG`9=>j59ld:pGKX*b5N;36TeRL0E#,kiKQN+Pc^V4S8VUp&:CcHLR\8K&DG3-lJb8_rJ,38]k]P078nN`C %FOVlT!nAXs2N3me`u";S"Oqlc4o9XP-m6&6"RrXY6NUrXN0_$ap%F>4p\NZ`,fXQQ7GYYC6tMfkW&TDbYHk`JB8uf5a=>5ZmTI?io5:SSSO]TR"c?>BqUo&`=+ %j:qc5osd)5/tGW&O2_*@Qt8!oA_?6nCLig.Au!]k3E+M`]/3j*M6F&/E:;4J+(L;fDkh3/$9_?GW=Q3I2R %Hi1AV$"UCGAQS/;6T4#J(c6`'c4ni%Kp/+iO3fdurYBfQT$,9[#4):"%H'g[V`_rK!/lo;*=q)*l>XVK#^M*4=2lQ>O<>DK0A!eP %?lpEiE\?4B>:9!-"u5Db'u4I)-U6r%HidN[O-+jsd>"US3p_]_5tCWXUhEs@E%Lm+/=LpP^i@c>Bnn#sL)D4T^)KMJCAN(p*%p-n %Pq0WqmUhF9,WE&t5;Vl\R]0]+7eV=-M?EZ3oIMk@EJ56KVLd0V$K2CRMnLp\p^i>!dbJ9Vls5INUZHi1^j3ZdG9X\*:k(d.L>3SJ %NISSAOhaGik1Rs)A22\6E&q\l58F/09/pZOQ$F&;/cR?;?1-kfG-se#9J5a8I/.M^Nc7=s0&nSX+XktObW_A\Q7Tc&LUc1akE#QL %A8l1Zc*ib)#+#.alCE!,5(e:1o^o"5bXZ1EcX]drG&f@ta&7F:fAH*rO[lmPcX>n#H-`a5.=0_\'Z&:f]"9#rRR8HGY4f5fBeR@e %K$so)f7`D]&5IC:^IC@8\?W3L6l`c*Eo?ATPM;DT"<5TS\]RM72+S:](p)d#LDb[%SGR#kjB/Tb&Uf=$k%Z$dL@[$KH9FCDne\#Y %h+_uVU_Bb4^9G&OY,[*7aio7B^TYSS&h@h&g[b+aDFq,nGCjc/Yhr^jX!PkPHEM/OZts;\O77&7j%B&/K9?uTjk?#c1dc60k-d)+ %9(NJVlYa1s5bD8WcE.l>de$c<0>^L+HZ?WkElc@/Zh2)M:L1%W20Rs2FPK\ue']H/6-Y:_T!ltD$17"!_H&9hSj>f_4`A<(% %$k?uOSZIWV2tQh!]ICs4O"em5%([hQ]_gJg4p'Yk5(f;iRYb*QkD#3!%hTeqLT,qBd;D<-(Ca]!Hm^f!?YnA9Q#=Ig8g*UJ2iP<' %RTQ.?jcfDf#aT#tbcF;t,Y\4=<'_eg-^;98KJg-RT9kr8]Xd=d:AbX\+t#Ho5QBS+K0jM@b*`tHgt-;Jk/k&;#\j3&!(m'r_i2b= %O9uLCI)c_Hs?11"/+H9Ir7^TH/X3='38(7C.M$nZSQ'//t5T/^8QT\`H^h>GdY-&DX4B.T]om,qb&&j8-Y/\A7V_Q2@BH9cH`\-b(fF,)GE.&GYm=k4K7 %0P-#Of3.,XW+ro[d@ct#A+/*3^W@aIdrDJs^CLL(Up4%[_$h##gHj*'R& %U%Zj9X(pd5.Z]FI; %I9JBemC9XS)md;LR%j[7$,B2WQ$Xe&V8't^7qRme?F?3*d_i1p3r,TkPN5qk[iffMb\@V03ROLPNYaA/lP/JTm8saA' %Lk]_b/idgrOK88X02ouI2c0b2[\.p:>Fi=_0*BC>OA,08UmU7\>X0+fQFkGTSr?Ub#nbI&VofsG/lnT9O^-p_9eE=k`GVN4"kA;_WKM`m8+sg+A*h;n5Mb %5t49.AW2NnhRBaPSDfeb++Y#e\+tkh(:.'+F%.c%eQSe_Z,,cD3T^L'dEru:S\^ThVX0`A/6Jbj)5:/K2fT&u:1eJ(n:kdOQ#i'@ %P22/&eSM+P_)dsCH`*DiZlL#")_*.`4*pWaND*?CnKa)cU4.c=qfU='.]f7V!>V,pUkDLP'mI%`G"W.J%gPDF(=>X*U1+W[BZca` %>sMTJJZVqM5PRK._9#Hgmn,j5D"mV.1Q,3;m[UQ2Ns_]MVcc7Kf]t3B'-pBn_!+D:*jZr;/=HGJf"u2)ChC;eGptSnX2r*qE;U?u %HaP_?COb]nCWk-t7C-_sF3e&9XjP`RO)b%;?T#;N;/`4HfTJ,P:H\l0r\9d^'(KI%5p.iS1S]_L8)gN"@gTg46.6o+LHRm4,3i3f %!:nN')#kZHTBd("CinZ='C18JNNGkbRXa_65TiW(FL%_b`bN#CkbL:AO-b9?ENG:_cc[eTNm-o"dgJ@lIW=]$)"89\ql.\JNXH0n.lc'&Uh\b"7q" %JH90#+a\S%M/dkabUL$^+_'5:4d'(ZnAGm<@n0?Jck24JRsB!P93[.=6^,1(S$)3p>:fh>V`)Rdj.?QkdSPrid:V.L"@jZHpn<+d %^7YH7NtV0=ZQW8#9$C8?)sWU"BS)0riL@8''!7"CM29.E7%255hCr%$,(3pcj0"f8Q %MKX<1bP,JC!Y;:Ao?pEr2oggRe/-R:b\MU"O7?t`G4K2<1#Pf- %?Mr6nDYVW8OP7\a!+d6E&]kZ^eHQK %F31E0pIE!5\QY+XFT5J38H]67$VRI!)63%:*A^qq_Bktp?:UTY66,`1ODbM?0`Cu7nc^X>\,*+c19alUC).t%ctoB]+.h)*pC5Si %(0EZK,sg_t@;1+G\1[%+,5E)h#:e=&%l2PR%P5=s&Y&a(uj %J'N$.GgfF*.GS$tf&iLH@*/Ko]Gq^14b0<=rG!e'687<+PQUh0C`/9&$fF/NO!hp&6/^[``=-$S%QLpEVup\Oj5%Zi3s%^^E18'# %:6<8K;#%;"TTCl:0[nQJ;hfjr0B5dZ`<.D5T)[Bo`H#(pC4]K@igc(c/TMca$+Cs_Tjn+alncEb.Z6]3g-/mS<"RFK]Fi]`1?]cF101)&d(8O+mlMWRa'%0j3/q0 %?\/9?STSR7e\WOC[S(D7T5VJfP>)(Eq,tYm37p&AqO]t[D,_AkuqlX?25jboY_f'N]MKuG@*NMmS.Q"Kr("fAI[$#OfFN%/r]+O2C[r6Y(SO.d--e+q`c/:s-]!Xt(t(8!iGHhatZop.Q5^hmb\ %(=O*#JePMQl7NrGt;c?qhL=MnhOV7oe`.[G=!9'nl"-LiJe8h@HMDBN-QgZj^@>VTQ<4'!;pkR;l`G`G0me5cB[uOZclo, %O!*Dm#'CKFElLn8c++eTi7Hj+Al\2? %XGM6o@,s!];?D!AU'891hZ>V?j7dEQ]8MS@qmJ[3a@5d(@>AeN^E1!f_sm(cB!.VWb]22!i(B&%kc%P4Z6@&BOl8UZqe7E-_Q29paoD4AeVLd_fIamAAFVf;UV5`.JOM\P%smBU;APqklAn/,F^:1BWB:JgG37G5;8+_fHT(V;?-0a]UZA] %=[si#,6R0mB3Y&CQ%6cI@)r!nHfSgZ^ud,$L\5'8*#d6u]R"KLdmB %4<.jX-#p2]fdMFY[`*XVI/"FW/*1c;1r-8/*4.GeN!$O`?ihB\_@a!4*el6163D=-,,hDd[gQD2[jpFjeK',*W(@@."SHY#ODE"m %(NBQl.a[iHjWAgM@B*UiUeYg$ep94!`4"`-?6sT4loilr7aS(LhbNUWfAHRAfU/R0_BZDJf^+E.YrU//6UR)<<&(kbT\U]/^*gHe %[[e_%8'1KRNRNIoOPs*pAaD'M016llk(sQ7Yq9Dl[V:CSj""8e8-SBHP&/b%[-D\@X<_8\>`YRW?^lY%::n"qY@@fG0?rJKdN\WJ %9GYeW8AKn>(VpV+JlC2Zl&>QpU9U0lcn$0pKlFXX$G9L#"T_/IU/8,rFM8p)>`<7f$f?,Ik4@$+Z?fSU_]5c;ho!>^T@>MW;>+J8O[ %6RKR%=4(l0P_E/uqf/E(Ll`Gfo+`2>;\5k!E61]g#!JhI<-#LW[e4!R+6?VqQe/JDaS*3\@G2V'C>s:"Lfe(>RUDV3R7cWEnAp2W_VN8^?c<;AbL^8hB*4bkVcV;g/1'SCf"g#Nu@k3I$#W7;:56M %^DZD!Md7qN$]`Gh%"9+9qW1iCW=^nKS]/,FFQ^<)"]qjDkGmH1W^KV=l,ap$+?DkGkk'XrJ\N1?:YCbd;+ad#N*63&loZ@)%dSV1LJH %;5qMN62)#4f?R8t4Ke'U&A2nT(!&k*?+;`5"mB4>#?pbJ`XKqos,,3fc9f4F2N\?NDOe`D[b%ouU%/K)`9r-4jZ)rZ/s#hbTHS=p %F"`bF43U!=XX0C/];Jreo-3,2Y,T#IB&:<5g2ldpUA,-7+:iTWM=fH8Mg+eoUE*D9&BAS-]QEL+;I("m9mL!?m\?VD,^(%*DPdA3')nZ5o3[ks3-/Hcf.8IXt^L!C#-n@h\;X9`2#?b) %+2MJ24V[8_j]JaSQgRL*7;jPuXIu7-&Qn%/:\r_jBa"1W66+B-oB>6M0[P4N>B]3LLuOX%2Q7Y>b)>&m$#dYG]kD>O %JcV/E685>+A[=(DRh(ce,2+jdbN$2<*Tu`R0=StZn"Vn7@W5tgK3Oh^p$0WS&-&c1Vf60/qW3";2mlN$:FC<-)W,oE+tNcF/Q6;" %\#nt+6:\o=9K)q'Jefl40pFs7gb@'`m#pc6I2I#iC&C0SnK<]ir@+WN,?&qi]/Osabm2:$F'4DJQ %gXVSCm\gSH?X4H>3W*8n5%"dO'_oX+YI@oh]ZCP=@BFu8lKO47ZWI;,e!A!2!>g->XX4')hEJb#`3N::f(1L/`W2j8/Uh'f\0c-5 %9,pK8cu\GMk6t*.9=Imi,:U(R=&6I.n$CCi)`A.cG2g,:'5,Q!hl)]?b:S81.mP.4'0d<6HTtJ$`;]OugO3f< %L-=Dq"PjT.eKQ6^E\(O-&JQ/ls#YQj(rVb-oIQk("/2`T!>ut+It!Q-!MSF4.]B8QfuK53r,g6o_B.Vl#OhA:X+(7rV@Qtt^(GP9 %%[>CR7]6YMTS[hd=>u.#h/iZSX34\>lB[BVWBFkht!c/i`(]&Jb?OYhD&J=mQ=@F/N+^d("VnK-776-FJUl6f9n-'6c]X"]$: %jbu#p,QLP+/_D]9cn(2phl0fsh?4sTX]@_\Yq[)Y$jO9Eg9*MUn5-?]5D5]]I4memJUm,hn7g"$0k-'']k %dUVs%db)6j0Gs37$m5&RJ[g.feEG38LV#GP&01E.8%Mg@GFc9oGdp1!hj"uA5Z,(Q7^0D\%&6(K.o72erPt7uO"+$aP8S`@p_M^W %")p5O@6NS4I>0EXQl\L37^-&r1C'5IMl>44!H"3>FIZAHGS=A*6N_kXC#YR"A0^hiDqd)N#F@^DAfQ)D#/dqQ_P.MU_ZjL4M`obK %L'lWil"imLk",uCP)or*-O*m:]:5Cld,g?^?V]-a2%!LB9"T#T,5B[,O=<6bonnWJ/CgjU^U`14-qR-!LglgK!7,Qf9qRZXmgm++ %C*nlCE&N30;K7L8HQKtdS4;hMkCN9I=WJPqgSu?/Vi2XB#":mcbS'lRK=4@%QI@o;A()3(ET`DGV:IF+o.a#7Z+l5D:FMmS118QCj?8FKW5rubY!\I!4*d>2rXrsH]10Q]ZDN)`S=4%$V+GQNIY$PYs!o&cp9sP'6-6k62":+_]DSd#k&]jT3lX*^O[10l"7I`>:;T$alld&Ds<*kiU-AK3up[ %881BbAAS-tT`)pBLq=ns.F<#n-=M"f< %cb"ga@9&M?*ugDLe&S#&:GX@")06^Hdge0OL&oUHlV:+l:P*mrV&8gm5?aq-5-@01>#hPWC/fS4;A=jTn.H %Y6l3JZaeLs+Y7-;rsrbOHXseAbri]l2GB3:\LhjK++\1nkiW_Z2Q!olXX<(p9E'JN^0Uf'#((e%&4^`P17k\$P%8k2 %h^n*"r-I^oD[QP*dtB8M9aRe>ndu^@]b:-\XQmSql<9#6F$o;3`!u;q2\9G>hm@4nSfmghidbC+04+;(`bPGa=82@'d]I-*2t4P3 %8OaRUsO[kF_V:5ep8"B&Fc,4,iXQ"5)>m6;&+U-A)n&FW;uG0B7gDQbcXYn+6T%9bq0 %9+/:jC?](!6*-Fjn4RA1m;2N$1MOaOD[kG>M!sHAP`Ph!%$,H]HudX@*c#naLUmG?iZ>6*rVVs/p\J2:qbsBTO;qrLWa2Ys!:Lro!B%c_Ro&*JET27auW@AQi^6b.TY=' %?%?Xq(T-@Om*m`O*,6Io?\c[eaJYIA4l;,6Y^4`"Z&dOokk83bF.;Kl!q4l&*u=%-TUJ]!rRLrt*GpH)bYWli %WP,fPih.ug"=2C>Q8XeAZSr>9\]#_D>)"7=B[]aqdAoA%?cP&^W@o%A;KXDl=laQ@>O440Y$/.UG`"upC"C3LE=$"1A^I[PmZpXd %Wul,1(($&JXY0@GkI#._PGnDd]p>Q7.Elc?]=XCl=p>Lq"B$t`gd"Y<\s+OD"Q9(5gLG&F)%);R`+Kj+bT\PZB7klnLh%UOcB_$: %;B"(RF4?6?Z)+=89+).d14aAD6+'4=$R@Hm-s%Q23`B#)ePD4*tSKMgP?3mBqSs %H6/QH^u"pD!FXd_/!$?OZ%1jFLK.6H %&4KYa%\-_=DO(Se.m/HP/B&s&,J7fd#;dB@JcA>&'EGN+Sq'^ih%O4FqMS1uX%)K%s#]]'Q]!3@_H&8j5e6`)<7Qp^WjZdc#1,gZ %`B0$c`W_.og?!%@M6BaZg<3>/@GSe-O+"[7P;5+Z4UE5&lQd@sfm\lB%uHa0bIJJ&WHJ]=V[+j])Qt+6;AL08C]5+1(rQol;XE3; %iT:h>`,9D"duX=_VN0rHONk:?):0V)/:J--ajl2[?RCfV1pq&)DlW7[jckZds>`R9[)P %854diTsuaaQ;(qAe;oN\BjgP@P:RId#`PQ$AZVW%:.!BN=R9,q+#XB7Yp.8N;,8W_]oW&$e%R#o7\+)V"h5*OO$V*[K!&-9\de5F %%RAoS#.%]#?4ga,H7/IS@D=S,q_I)t)QiS^@n2^Le,sraSpp3e=;)TttD; %Y+9p:&Y@I,N[18.a^%?>4(OtOPCd?O0/N8HlkoXbq,7F*2>`Ce7HtSn"lc5IPTfN*R-?16_0efdFODhZ-Gn#HXms#B:XB76,lT[c %"6"*Pq;]pM8.;0L84Dqo:GlVI_S,C*\FtZm?(2%HBl$^c!3"`mq>3T4i?QG^i7sXtlhkbE[17NCjcA\Lm$7_qnZ-9Im9LW:ZHPC- %jSllF9Af%jPhRRt><9GD"7!eJT7oC]VU %jm9qK;c`%_4%DoRK>rHnPPI6tFjQcbeIopQRT[0c0T%&\I@T[r_#VpuWlq+E9j;nP")%KS,Yh(N=)AYl0!d6u0o.2[dZQ+PM"2?e %15ih,WUj0B6I;s(Y@b8$9Wf0HoNcX:,r]eOR6Y,MD>E'RXp1BV3N8@826TZs29;"R_]-9>/@IOQ$AP?0!3h>:1$qBEBpfhZ^:1N5JY,a/9pdM1U %$*b$+p>^E%T!;m,YapFLZ&Q\"V2V_Iir#jVYEDO\tnE5oFMM!h:\HTc2G33<\U-Xg?:&oDpEIanME1=o__0ms\KpX*4DpJ'%=ZLn;@/r!9g<*?]Fq3./ %P-DS02c%_GCh/qu%4l-b7k382qn3"(Y9rQV2d3A$K$::qF32VF!3du#H>MJlg:2mFX]kl53+6*c?0:X*c7DJW#'93fRK+;k$uoC^2g4%W^S"QpSdMtIaYB2dJNH,OHo2EN]k>.fUEOH %_M0?amrO0enPjW)Nbu)l>BGuocU[N(8rRTCj"o$uL2J6pjLKS*fm]7E7kOB(9[p25af8f48VJr<\o$LG*"A!h;)e[:ZmD"+j4Iqs %0%'-'K6EQ./`]>TBV`4Y/&WS/68Rg+Y(D@S$tJ:\r'HZp0IK%/V^VE'#u'gS/@bjO %9V_/q'_`WH:BSEkEWE[n]fZnBT;3UZ:9+rMr?ATP?T!11-@PIscKo3WY2J0bbO%ti<2HUJMiBWRW"tl>KAN$DcmAP%c@=514RG5aCEN&K0FjLWqk>KHP1gf[C`=aYh8k-?>eFHp- %Ng531'\Se9.[3pH#%Nuc4FER#ls'C:Y/Oq?*sJt&'E+F-8Y.3QJ>)lhBF"S@j[Yf(l$bW8K[]jo-9o)7&mht+b_oTN:X/a9&"no0)7!,?*-`d%O7>H*EAk;B_aiqJPt.8ls'0m(U/[b:1H3m.@!I+Sc-YY) %a.h7@3/6+tI`&!+\r.TI:'sSf+r2Cc*_>>a+Sit%I#mKTj=BIW9hTNG-S %*3+@@L>oA.pWi.?K&0HL#T%ehS!93ddA?j[ImF#O:P*/0!QU.%o0r$*0oY>PV;3::+M?or6sG-&"]?Ktra833gpdn__:Yt"_nG5p %8=P(hoACB#^SPd@O'R(I3Wj9gMuQlrg^$cro(r(`\ftr#q5ER&MBEZh5CEp!I*u+9[X;E3cQg6[>mFZbFCc[(4a?hnLF'(h`WQ`\ %]71;c\*ueal(W&lCY[6Xc3M5_(8%(.4CK"&&' %L_D!aRpk?2/))2Oih;R?\9[EG3JU>'6TS&mr$5k7`uSTTj$0%rqA^"hqF@'o1\^4VHP0;jiaY0d'5SL/'6Yd=ZUHKMZMCC1P7d@ %.-A@@O&U$^?S9GIb1Eo=7rWY_*W'TmHpg)*:FYem6i^_4BN/C81>UP#n/S(Ojsof(7kPG/Gp]Jc>9cCl`'\Gt@cIub1(1`6C(tZ2 %P9t'-q?R8Ej`G]XYXT:=NR.?-CkL^[c0FhNd7#:U())1q=gKNIDp#gn6<@#l,'P0,hCH[iG9q985$?JPB_TMhUmD %U+XJY6_>Vl)fB3Q)>'&&mamN*gr)FQhE!YE,6XZM>o72To%Jo>Ocm7.cJlZX48rUiGfVcX+8o^]7[#rTN4aMY@l;27`M8gmZ-:43 %Ybk3J44Hb9U\?$K_rM`\.TB#p_GfL6V>V!XBF8=Tcdr_m\W&h8J#&H]:YI<9+lFdPhp:b4%D$*.Lqhg(Q*u,rfrUki&4,3//^'6c %n_3nodQUkMj6&+Ck_"Wn5PO^&9t(_aNX5)A0$*!AM39Dr06^Gc)E#k%&=(09j;EDg]A48;/sT'7]3Pd0&?Y%\dX-3EARCJui#at4 %f!"8H`DO/b"be$"?!kNT]mS_Dqm8`:@e<@9&D6IcqV23/Glb^\[bq.\m)Oo$;E]'0]+Rgik\RNGkS:TY\+O#g>7kmn`n1\fWm %$*HQPo9D\I6QK9ek4XPC9BDu9gXDU9EYY+#KSjBP6Kp\msQN!i&K_+=?ggjd2pIuoo %reR\p(VJigh&fZ;n->4qG*f"`VAl*p\'n*2M^l)hY`9TMOB\b&Jr[D:qEhgTHQGmPI@r5@&'a2X]joAVN#M]P:E.Lo]2B92NcU=dWJ8Uj[iT%qacW?A*r?2rX>(('LceUS07e2r.BLOlmf/h %O<;4>,14rV]=1I3!R0H_:6ak(*1'cOpU%6[;YDj9Y"M:*-P>'&;_LYo>$b]&okQ'l[0TAq"4CrMSj[Z7gQj]m\XUeQ`AP\"5HT-I %P;24DiT(8Z[Z'.=/W*]U%$!01rT-)/"WfoaiXuM5G"O[CrCG)s#UWG"Va?-)Y*8s(a)=R>Q=$X8/m[WO)[10D!*h(m4r7+Z/G_bCh"gI)B+A>)qgcJk3c+2'e!+5J)@MIJnjpfkK,b`:([X"5>Gm?#Qsga)l]DjNS_^tnK) %1`u2Uk'b"J@WV"=q#57pg^Ug91AuJ?\GDW&R1pU*S+LGVdc!>\it:J0(E#;qAW]j'\=l9pX@Fb^JoZ[%.!T.s %I)(hI8&?hNDUUeuT0(3u0=\W.M')t76uMCC31UHnLN`24%"Rg7@TTsnWu@S6f/rDRXo3.6+*E==NKbZ0M]7A!>7e-TjW?\XOn@-+ %[tSM^B,LBF.XMR8UtHCi>ZdV(94a*SL.hUkM)3^cVe<7$-(QnbbU-pY/WG9kjkK`dfLs=s`VuE6AJQ0]8$5B@S/TM@Nb(gFZVGN< %T6[e8`Gq/BPea`M9#,1r^fNKH1\&2]Fh`#>#)O;(f;a/&G$^/qq68#ISZPj+fO#?;pqUYp76n*!>HO257C?oB"DqOI$3'sPNSR%N %'29*HIGL29W@^(-F_=p/,^-oX]=L_;J+iTI,/Ng%#Wr)>?$X)e".%cnsDT\=CK=E6['U!d+VEu?QdKs %$>5bf>.P(r+!>jd1iCOM3WRXh`]a+nI*4N9>^"a[9V;$OE\UP->&J/7`9T?U)TL/4&)r=5)#!mn9J&Rj0GIqJAn_u=q>^@9/@8#d %NCKh%[3Jh!guLQ6ToI:]pN)0B.Qr!F]_JKCE!Q>!a#c[Me)LpPhb9&VG.,bRq6E&!?RJd<,8(/=jjU$Bg7,CJ"6Mh51@fd.0<:*GP,Tdqrn+LE.hl %lQ"Ho9.`+`Q`pDVR#s:NfTo#7of[5_,Y=kT/\gD8b^i_D9[VB2*bh3LV'3bLD_+e'DD:)lcV+$ug-%;$['[7IU'"nCOBc8f9epYU %5G,iaX3(i:TAMO`W!%DGWO%;6(tAt30W8GjSd0R>: %Zr%ss6eGXX?0YtD#"U$m%%?rN8[S(#m<.Ti-mubN?,d?Q.er0=i$cM+\WYGk>kbnqYm)&kKH*\?A"Wk>:fHgoQ'pYp=UL]GES$AF\7V:KGI8KF_4MuM-0$2 %gAjqmr5"gL&_pCPP*Kfm#kfS&Rsj.;_A]W.RjehU\"Yd=8\1P%>"><3jg2HKQ^,h;%TWh,llo9hbu3`@q^gArq@GM,SNpG%fU]EC %CfiT[qFjt/`_%N8>.2;mo^aO/%jAU,ci'Pr.YF@=6,@<*`?;kPQ'mD%LZVo2Wei_Yk/^]Rg5:_sYe_k%rE(Ig9'"JaPbV,,rc#dl %3FZ"-%g&=[>:WE6k#H>YQ`Wpbd6DHe+sTjVJljpgUl[C!L6YuHYG#NLYR6r( %rZKZAh_I;dNu\pqTg//r7Ta1d6OuBR98Y[N&\M*rd+pN'7CjZ0k[4X>\O$=%@aH/QeIIldij8(=lYnZ#'#1!RQ=bHGbq1Q%F'WS\s#2@2Zfn8I4IW72uNn.sWtuCp$Y`iGim?XWp[gK/%-oFGjGu %5P+*Lh2Yc/8tO3hG&+#"h43%2G>J0uH\Lb\38+'alUs"]6JJhM9fP1EG/=j]#CD]be?tmm^9q1(1gf3a&tN".dL`/\l2VH9Y;#5f %s$h*!A6$:"O7_PHCrZeW%"fbs>U!LE'\e`3omoMZ77XrnD1UTq'jNC1A%0PGVNT)u+N"*ANDr4C4^D4<,5f9JMd1LJ0n_P_fimG(2<<[jN;PrG$3mW[ZFMX:l?J0BCJffNW%G\feYRt;G" %:h!GjmBFa%IJi#KV>34G!CBkdVS`,WD"J52WUQ_,toWZ0n-c+XY1j %Y>5dsoB)NlqXeh-8WiZM?jaV8N&#M#pqh-uC8tK0/,bC:`Z:bM'tfaeh7]<7YI-S(qR4gl%oF"Zgh`56".B#FG7&jFGj6gSFWV\? %<.6u6G24>!,eY(;6S=@VD!rn3(Q0Z4(J?J.*4Se"O3bBOi8[:<=;e@K`s-s6(Qr8>g>Dq[cN+BafqHTW:s<@pjfSrRf<5%,t!WJd""\O$g0tWTa"!J)DN:b?"FcbCJ%nAONaD=)gNsprWoI+Qd!Nr@,/U8?!9Bm4.-L8in4IFN##pRoH5 %J.\-W7IT0:,*s6E(X+mf(+,NKDH6U:\W^s>c8S.7W_tX>g1C3BKi7lSjY2.IB7>;c%MP,oi4iA!a5? %A^(-7#r5WP#A:&@0G94AeaFmA";._N^!C0a#LRMia(s^jpVe(9bEGF->Mf6BL>L8%1*qRDbter$XdI8)&UWYfA_`R<.8S9mJiP\W %,5ABJB+FZ87Bg'jFinBOc^G:BfRU&s0?T<&F&:jlDorp#&O+ZWf6cU#Y/jajLKicIZb'Ep^=;n"`&WrDem-1N\,3D).=rg>7PI)T %"`'8YiX]!c(f.j.*(;H.f?s-L&N[Ng,5.Q&g3Xf:7>!Fs&Lr\O,$jFoWh;-hg#(V:lD"XPF>ia:aA/U]n#;`_M_+I/kP>I#d %=^k:5(E?tdaTAO.>isEK:NZY"=n2jL!Zkq@Vf+*Ni$Fn`@Hp`$cL^]QpnTh0alr&4_KC1l+0eIj9W`Gd=7QF^`\*[4RB;ZKn?X(lem/JT`7Vq2%rP`EQrcE**gn4R$CP.?p`eU6(e)SI)]B<7c5LadFe%)A2<8g<=r70Fa %r?G8;?D`O\(>VKkR4he2,+#F&p*h??^T&Lt5+DD$RrUf9E7!EpYm2>IiqM1Q),d[_[732l_<&,'R(T`dKWeh5H&\;.m%&OMjL\n% %,po+'5R*)(JU/A@JDPt9Ab;c427,)Nn^6t%@$N"R+.&[ppk&D^jRM&4SRVZ>q61rdZ\s+sK]91R`)jZ*n6M;%>UPEuBDu=6o+qB` %W'WE0UOZ%X[7QuJjN232(pP@lqWLU=i%uslQ"f3&&)j)X+<-lf6C!OsC%5QVq80&eb9`+"aY*:^KX %9$P+*[9Dt+bGJf8%e/!Y(F?dISh.6rr`GE;H8PZD]nKHXo&.eHSZoAcBNoPY&U-cj1B:''OSGe.`+Gf1&& %:f;m89fT:5*%PJe6X&Ajl_o/(s'W*_#1-uca1E#Q\>X[nN,9l"Oes8M,FH%-sA9d@>k;$?",r57eg)_-sX,O$HciiFEJ7+0bu).-A%nMQ&T'rdnM64H44)!C^EfmC>u?*j,baH3;! %]2aJ%a!#<6[Q']QCsVtX8YF>P:1B9r*P;<=H>4bdnMe)Rf__/C`\ZY69%pYZBj-t(9nG\6D,XD!*)S]SJ;R5S"D8j;TL(t386$6b %JHMPH_L(27Fkpgrn,%"W8arY`UpW@lf(6"f4jUI+[I0[Q^+NYr3A06+f!s8"klK/iku$\LV6A/67[_(#re&+M?5"$C2SIS.p[t@W %@P>.7"mTNDknpPlg&SEVQcG2!JASV8a0pJmiaYsS84k+MkMHhoi>A*K7(dmtH'#)M.cAk'KcN!=jQ"Ad'd1*B4hnuh<_'nM0*V+& %1,d?FLO;"lD+'`-Suuo2/0X6F,Sb.Fa]MekoL>);Wc8ZbXZ\'d %4XqSYm-5<.SBT7e.BHT\J1;-L;OkYHi*ck<-$^+53$THR0P&Ejq-.uZ6_#\`?6*9t&?=PIj[AO=ZhL`>X?jm/FIGrPd@Ib1LK1ST %0("2=5]NmA:nh+X2!'?mE&(@jEs2M1IVquC(*pe4.WhE`[KQDVfU?q.B5\-u$l#U+csUt8Q(Sqg@::u#2S7'Q<2c\M>K7+6Ih:@% %P$jDlOU*@6_QA%=JZ;<+JEi:S>%OI8*Qe%`b_k,ai(t?"MB"\dAj9%;KRVsNQEBN?9tf7IOO6pV %H5Fl>j?sTUT[^s`F%V;"Z/'ftT#`*%NPcj7L>[g62!qb+-E>E-R=W@];!c7V=s)#)Q+bbd?)UmR*K*5'$j,O9MG?HYp3gi0M4h+X %)"]t*Rn-!:X=3UK3K18E1rQV[YdMJ*fshh/2m<,MEr(f2#^(\M5,u@T3rEj9f5QQ2YoaaiC1Dp4X_N+uU3AN8\i=M1[75buTn[D"C5Mg!L@<\! %\Im1]@h+G?j3,h>\>R_Nf=*pH*T+Aa\+ORYC`FF]nc*9rhea-b.NX]A-g+lX#s]e8[DEJ\dAa7g8Ir:L,Lb6I)n[T4;Lc7 %h@u`^1F0`h8D1im5Ena8:j?R-Mu6@t'#'H"Y(mL=H]?:C/kjl)6HOV;_e*,CKdHR*=dF1I0WlnR>kq"$%p/i!B%0N(+5mm!,')^E %T#jR_'/U<'ZmU1A8na%r9fiBk,j'Pbn$,>1,)Q+h%KWi['%0osY1iM5MG!DmNNc-X@B;"g(7M3`lt"L@BPB,^!Md)T$E_r[0_%We %/D3IRr[65C6>bZ5]FNn+b#\&!LrRl_'UdsNJ`Fc'OZ/iM1Xu8RQAfF'"[a];L?;HNj:Fa/Yr)-b4\_bjb"/mcQ%r0k:S`,acar[B %GFMQW56,o+WOhPn+GX(P0cB:D`MGC,Ej[6T[F@W/W"Mga!u/&[Oqr<(/QDb4(N-Y4g&X#8G[1lp!k&%P``':d$10j7*ipM9?=rJJ %e;fCtiMsh4.LU+8X)6YqPY$ne6@>ubX4F0[.C5q_R2%M_aHKN+*WQ38IcMN[2QWSG]CGq+(PL;QT=H?Da58tur!?RF\&G<^Y! %1u(4lgoGAK4S?p>1#1QuG5&u-hL,"XRkG)Ul-8%"0CP.&msX_ihfJWI]f(?#V)R7Uo_PU1Ie/Q>YIs_qLL5E,@paW^V7.P[^0Nrh %G5>M_qo'Y'p#V7JIJ9/]*ol.MIIu2o?:E%9+*cnRTDS1PDh$BPE:_<<5G.lE]f5Bd"_n%jknd+poMK1!(&HBDI.'=Q)K%``qM3Ch %R_F/JDE`16W?2R.0?Yac-$qbE&o]2RJaCrSa'*,7DcfmF7]RD?=NOep`uk:hb5'EFVt*TjED?<*TjH[?,Wc$VL! %$&d@$M<2r03<\`YB<,>kp=Et_:_j38bO^$g='kH]I#,?1=tqAB%iooOh&RBj"(qo%J7"W.pA(r9?sR\m2CX3 %gGC4^;TCfeIcHg0*KjG63^V&GKdSsG@<]1,3g>JsV"=8\GnNr_pu9n` %NK;Z*&lX:Kpi<_Op"!ab]Xf?gW5>>5dAVmT'M2BR@8JH;8mIRYc9.d?pB]$Q%XJC+Z;o/==+ZE[0I]n7 %-3.ue`D3=!:m(*uMNn?L/DPup=:(O^d/sB?,#.F))'u&pgkj]IfJrsi]_*ojK%1Mu3ObB91Mh#/Qa6A,B,;@eZ'lYug1[.RlC&]& %;e/4YW\b %Wu"hVM9>t$6F8I;5(O"(+T6Wi72/^adR@[;#o"krC;./5ig7[GO"$cb2YoMFG_ro]hsKHN?\2UeQ/:i5OYR@ZV+luAl74uh4i5^8 %VKFW=:s7M'0"T!HdFPp$qFP/.nT:%kJuopKO)?Y`a0;gB[THnJp,/4rV=ml(0Q#rPETZT8.([uc$6\f"?6FD %%8(jWiHPr9kn@U'8n*&&+MjA<(1N"b8X<[VT>a-ZM^]Jg`Y&mgl+Jn`g'<^d3&YuQJX#SQ2l_.,X])u1@j[B)[/m5TA#EdgW@K^p %7N>]IK7S-."u_LH`csKGKuK_82K&#Z^=\n%EMWl[Y9l395h07A(<0XFUHKb+>$PE%n6LimC50gTmk!1s##4 %i"d#n3QT@q*/g*fXZ*d(qtk,1.Z5T)ZLm4A,&D*?_67i/H%::t"pWESQ2LSJ4>!di#1Su'`75_:ct:IR0.5eN[2#oq;Bqba^>&s+ %Dn"JA^5o)-^mEfb7LX6.+tcB4ma2>]dt]cN(HutjUuj7]R(kE=&Mst7q)_q@SYI7m."5">WY82 %`dQ%-,kkHGd6u4sq1\l.;j,u-&0G7;GE2j.7N_?N=9DO'<6N=jb./Wfc$-SSb>*5\Mgb0gAX8/>F+'ghqtU-u)I,.>4>a&X-e?@E %U6.^gp1e(%RXmmK?T&^'daYrn&e[@:".6R0PE>Lo'?ZjEQYVEB4MBP=sG@D %=,R#DANX6_VG:!YlN(8MU8WYE`'XRHG:_e9fUS8K@feu=Gd4&bJYg&B&rX*'o5")umA""#K%oU0L;qEDRL$S9c(Efh$-YM %=62>hBdPs?^J@:E>a^1.Q])Pd>onPhHE*+\TP;j*6nNjiQ0JT1.b(W[Q$e6]c %77p@LH\plMeYp(qX"XYqD)ha7.I@:4U?%kd-!Y'YlImpK*?!mBHkW,A_/%:DVNSoTf=Jde/lq?+onCUaW>VATcI`\0Gh62H-,g*G %I5:5oh"AH=9b7=9PNk^)PJlpLc%;FM#E1LKmNWS-[1K03>&YQkSN;oGZ]GQ]k@6JZaXjbtpt@#NU(n$421as(!F.*,,Wn`b]a.Q) %AXesjh!'s<+O1b5QD$QX\gSId2>="o%'%^-*$k2Hj5^1O'N+aRptqQ+\=V-AJ<`S,&iq`YqY.7'!q)&hNN$c'3#1M6V>e)ZStC\R %6D:3/gV-tJhilJgGC78*AVDSQ,oJShI1>^D!H"9TaVU`J7"&FEEpo1Regb$Om,$N_6VF6f.U4`?%C3B$(/u27?+(BhTOn;@]O@B\ %Co%5SDme)B@/-4^%oqW.3KA)aaB'0"S`Fj\YR>fI(G/n8:7HeV0X@&1ad(k3?'fe$:/8aQNE"**FTN,BVYi>Ussl.:,[X):q$UW %e:DX&6F@$SGDZ>nSm#P1;ZqWnVJ?3'!7^:_ih17c2KIUXG]4G4WVE2Yg_g*IdeT)M5(G6]e5WN.*h.pb;"2V_B\'0lK+;#aqtR[j %&SpsVX;A%(95"`5T/$PF^6q:G-X@T#pgSXhH03B12Q+Oq&l3N/\0pDVICTb;(PH^D&Sf^ZSV3X:%`@H?os%^Rj4Pc=-XI-poE`FL %C[:rml;q?uR?/ra`XeSM5]BSRK>Iag-Vjq(,SF40))RDQBeX-s0"C,`[fR0/M[Idoh9`HmirVmq;A7MfT'Iibc&1T3\#<8k#uFb@ %V$Qj4$X!hQL5qX?i[p&>@!,Nb=IB4r\g@GVi %/L:]LAnlRO!CA5rAG4qm.el8eBpn/fpq11[U)GWg]Z#h[TqN+RpPQhF^u9[N %BmH/b.",s_FB=iqLHpUJ\H]8?>$omuYX],K876+[oUP!BdJ`VZ`\!8jDmg0@`74t!dFS.j>Qq'S4#^&9j_eWKfku'5S=W#o%Z>n8 %/59s04B$tU5)48,-oP>r)uJR_9YZ6qE6H.pC(WG@',u[Eic@(p[\kgP&.Na(oC207,F&dM-HBYBec="W/VYl)cbn"i^"S9?0&j%h %PJsbZ4F9T+u[d]Vf6c5g&*L_P\B_OtmPi/tjgCiiWtQ*uap %]:I'i6i#P0%0AbS\uNVKn?2EEiPaG*3)%gVHjeQ78ii8TgaeA9eT^_2M&cPt-TYu^;O7iu+@F^u/cdiU*a %ph=0&nT@W`LY*Zjmno0>RJ!*R(NrEng/1(n%o"8'"/i_l3@4%Ye;afGqtTj-jZ\.EClJaE#u6HBmp0co*[=>b7\NLh?%<;_i9Kn+%"\UZ:7\^.**[Bl2nM$:hqck(mPV?S6Z4c>6YgYNc8`^g= %ifYfg16.TtIcD#'+Tp5%\hnII'fHT'm$$n)UGem0Z:5ar9)[0^5?0BH2pd3A[1%Pn[Y\h!M/!-KE,-Y3(>c3O"kt71DQ8`tTii]; %jl^9,QiV55n05'\?&5-C?km]la%J66n.pkAdTFHM@(>:\nKLMcF/2nQoH=?"q/.Or`=L:\@b@IAdoRQY);3!Rbt)>DcWRRcKa2E3 %/0+o?_+YDD4=pt8Y51.Qj"0u[Q#k_s.h9_:VhGucn/cIU7Lu;%I(?`<5NnAMijco"O?6RT0Rb=d9#+Quqi,C/WXe\o.mcFUeQ__q %!W[j0@"dB`!'okD4bPWT>KoHf,"]C'9]V %',9S6_JpUVS?6\Tfj7LJqEKr[1@IsWgbl`ZS.ZGkk=l4 %U*#cX.VL`]h=YAq[%NW*Le6XupT?DY,E39$CqTJCfc"!c!bP*5GQbZZ4)1gH(t@TTP&:T[[^mG05YpVS;,cjm1]_\cQ!JG8N)U)bF7VXa!r&?GL66ib/2aH!N0'E.ED<;?W4>ZH"DBbL7j-DYZJcN*G_PMu %?h#l0.Lg?#_*B,([^k;u;b-[96r3(RpdT6]BRC8_P2XuM#eZPt16Iu8/8d=DKQRT"+Yi^,0!1N-ZsWb=NOfL4j,2AX0Y?n(;;+kK %jGAOagQ*M8U"?U$D68fU\K?g5"q9d(oqS_jGQYQ2*i)^hAm"U:[_$<"`R>E?r3OD$lZ&Vie(Y.$\,7,Jc[19WUr %@5Ze7k4Wq)2HqEiB"4DEFmj'$)U11+7X<#"ita&\f1<\@/2,1"_3gMU>L?qU:EfJ!Gp+=c^6OfCl/$-BBf9V#pAhBnSns(pF]bhLB+#C!Q9>e`$ZKYS[YM?@*H %"O@unY`gmrdUma@GA(S_T2762Xcr'[.7$GT9%dJl$#P=W=L:4l;VI:YWpKff.`iWs4Wt_;I<4/N;H92LrtMFV-5=%,!;P_Dkj/VG %aJ[dZ`3L.:7kf^FfKXZ<+RC/UAL:ug*eX1rnCVD7Fanqs/D7\%]aTF+_R,!G9CsS1.CS.43khH.BP4O:pA,_VI--[Z!?d#^;k?-q %1u1qC^WK9cN-LF>i($gqEPX)*DYAZa\07(f3I(4&.ZGDFo]eEk\jZd9P)9;IC3Qp/GP.:M!b-&H.h=AITWqtR)5/QlE?`D8IfT*T %.KeLf[>D;^T#"DB2 %,?+csrdGt.ediHDEQlJ%q(n.Bf(LISlGgYZq@TemuB1V0?g3lsk;)@m56p=cO>,;/&R(-\_+4.@H99dnE]GDLDK!64@\3tgOf[_%gl %DT)go1%CDtNJ`i]+N*\G!hdg/C2%,8+hs]cg?([N^n$$P5(B7u"^+gZ!o$%W$us,G"OF/De2F6X#[+5.P&d*Jr5?\e#NbVR8VeE" %_39tcOko]9m4FLl-khbgT%%qOa'KV`>f%>#$WeD+M*');fRut1Bk\P)5$t-Kr:rp*b>@tQXO9:_HdES4s)J=tbiL$N^IkrDS?Q0D %+uK/4O9i)..T5gI:]aG.Z-@mlGbKBVTW;@0oI@u4:eXJu![Y4GKU/f$f-K=;6ssb;9FP$P7Etreg'N@o=A`lCF>X_,2e4eV$bDZc %eA[R$9nj76*b-@aFcP/q4iXQF40K.@2B.Qf[3lK>>RadkT6'8Y+t(2Gf7GtmQ=0=^P>D>&6),<;Agm@B#kUh?'N0\W_$e.8T$]i!S/$4BZ %PK(guD(iXFc3!&Nb]r:T:DYk$V][P)A&TdODoRCQ>5XX&>r=o2/:1/oG$iBe(Sj0]3PkI<'"D.nGh?\oG*AbR+L$s#)QaWd3] %lC!5a.J0V-C8=7m;?>IDc-_it&-)@gFs,PX=/sXImPdrAoqn%@ITZUHai0`VnG;B[S7DCumqKcb7BdC$7/nWDAhtQBe]D_U#7^G3I&/,R9deW:,7t3)s.mCo4>QXK1[fR6N@[^3$A@ %eZ8D6GXSYogY,:1akI+NZm`CA`^U;A&85cf=pT+iNQ<,F,13^I@Q.mU!Gp80rkO.!8%Bsaa3Vp;qZ08V08 %DOE3ZC%YC+JhKG49,c?:>B:(!#?r+1r47dSX:sf0YAoU_fMB %S'Zd((<=.O.>QkLQ0?CP;F$rf7N.)Nf>\N60-aq9.^jJoYr<.)r8U[U$Oj:'=oc'P6_;Fl?nZ_X#&>JQf?$'iq[do>#O.0P3SNsr %PVS(s-JWVnq)A]9TGDRMpRtBXB*Euee.G7pp-5^O%b^fE6eotVp10U=VK#r-L3pBj7Rt!n!tn<2gLeIi80bcU %*lD.>WE51T\YpStiXo)RMV<9qVSa#0_oY37,dgWbokVQ=Df/2cOl_"b\J@\JR7(n]nD'8$:h3(ir#o09`CbsS3;->f"lZG29FM`SaEW8tD%`%$&J$P#WhN7Mp]qX@cQ5+6D>k@.7#ug!*D5>"::WFH*T>A!=C/-AX&nO`W'\?4qq,g/6;NeR4f:HC3Eg]#1J=Xbi8:U*O[?sTXM'Ar$J-\Z0Jp-(o1Z,lE8UrX@%s4 %bDn!F>P'\^I2*?9-J$g9!8$Kg0d%1!)&I'SmM_O!WR2\&Fu64.#l7Z]$`g&KKT62c885.+#N(3gOYfP&%%9]K&i!T(BRFE5*[LT, %_j&pE)_S;!L.Ea'(D"s58M7Y=ZQ7P20Hdf^WrStE,e=YsV%p=U=p$f=CqP_LWCUOqX@"&rG$`,lXZ_\UFNq %gK[LN+./31,jGO4hFNHmC[n]6jmFq1OaLR5Za_8BYWO:/?.G^U7aR'M'qBL<`+cS$_JfqsBR*/2E(W,$'S."4C/!37T\]GOTWc^9 %FQgG.lUE)7!G[QM[TW`*EG1ltf:_6I"[\mo26D5aQ5\m`1S[pE^5]SpNNJtNqU#R5=HLU@Y\-46XC=AsF#$,Fd['YN5V-=QTl,9m %oPPj\<(:0$n7X7]L+;Ep0l?0Q4*sNecJ"[%uDQela4iBJX0O %*K\B6/P`2j*#*$S=E#quVB=-d04-E@CBm&ekaHeI[AoIKKh%i*,jUXCRC("G1$=nS0srcE?#ErJ'o7dJ8Vu9J_A,Z28,5$8d((Bn(8_c.d'Q%0#9j?1i0_:ro6)W"fOSdD3-?tA]f+]T0u)R-:l)X>_%LR\7-a[7pi-9`=$Jmr<&hH*DbB&g*>%?>D]5s8DD=ZJcOU>ah58u07H %](>c6XUr6-<@_Atis=_+BjigAK^O]^B$0tSF\K8G6ee6KaW_sNV'Hd66dphER(0rgY;\=1jBuGuq?T"<,HWh\1qq)`a5YXo`"8r" %Jg`uG*H^%o2@P+M5A]Je^a5p\Tc<6.mor27p;c#enJ`t5NQ16O8232=;6ZUfj4:3E+Mnk][/NI_15c81Ag[T2=MX;'I( %Wk+]]EI1i'%?6r32:DRPd4V?E]h5aQ*-1qRj+%A*"^$>=K4K$A!$.%<-.GiWP`EbN^/A3?@idI[2c5W=Gpjk"jUO$KnX=IbU=!*< %'[9cce-!L:B&pgE2cOG*3eW`,=Wj_<#:ChDXb5VneKW";bQ.45!'tL"L.9c^kJe0H3hm9b.-t(3[(>k#S^)8G.booN#,aK+T$nId %3P?PYQo'@PG327BAu:Q=Nm2IMA/a:X&X`+MC"8#%ZGtDhYiaSnY^Ke<@eHe.rueU5g.4"m1Fs'f&>6A0`l,]m;9bAncZTF*CD<+7DW:hXVQ(Q*%;fEuq-14i5%Q+VLIGZh.p&J(Uc-Ud)&p[lRtIkF4,+%l5%T?Io.am`HO;qn-;p-$im^,1g9eT?WO0f;[(JH.pY).t %E*E>Zl\1Jkj]i3A$r]6#;dN.O1f(r1'Mkk=,*A95Wn#nYAbdkii01VRG?D8MCg;V$)1@`BBH?7)&"0"cl]*+qWBI'M]bLJTj.2%c>0mIh3PJN:<=?)`O %A_4RL3*h3:hANdsM(DA#8/!5PJ9WC7?,n*&mKsjDgs!ku5WP]QGq_FAl;nmT^/1[4`iAWJm>@R)?VNtG@Mg(A]!$E8\Od/RDe\fC %9jLX'Vnt4F"MYX:5br=>FYJIo\@Lno`^YQK`aG!T,9=^*]$NG*`#VS:CiJ]D(]_o`/%u68pZIF&P8%[3G9& %koq;@,pS@#e0bD0`_70boLLO,9!1.ik:@?uedA$*(rW=3@KASl&6HNYJXcs^RLu$hl:k#Xd,q\KZX\]&X%t1\5aTLEEM_5DY'$i: %gNI_VV]bX):;Sq6Qg.7-n]),J)pN;)#?PK6S"Xn@l/q8j>i2.1]XMNU-$6r6K-iVX]@BbM4Y3<[&%t+9=)8er[^SDZcj=3[qR'_d %&l6K?ei_&@iV3oRL;MS5#%"CR!c&K`7iS1+&pm_][..m%&ZWu1C(V7&A`%?+@nB;bLk)@YPW2S=LRBSY*S(^c3<7TO#jFl*Wq5e? %kqR4X@Pl9meQBe_k)UL^cWmW.+LBqub`0AHB[ja1o20!]184;VP&JPldO`S)9HqbJ5EWNQ1N88G" %^p6",)VIqU3V@q6!IR0QA-?>]l.LZN;!lrd_%V3YCMR5;,\%c!R&>78d2G:jlsjNQmnQCs1SIkY.c8piN@5t$f^6"'\75Z9R2Y.m %PUVNHLuo>=h-sCqHjF:9[#VdsT@;DpEZjCCWX*V&C,I9=;+\LgVOM?p8-`1Nb.S6fENl8!TeNj^L(po,Lug/:d.mCt=#LqY)0$"L %/Y$9=L4#2SmR&90GkB]TD(L-2#8[\1h-&^Z=g>PpW2OiTIS46Y9%o8>eS!cDVqnVjF6PqjGZrgAl^/Q5NFI&PqKj\:iN1LnCS(o4 %s24r[RE-N_+/V^e62T(eQjj,:RQARhZ8(*jqZ*ooM1(fXQD-eu\RT:_)]QVh1nlCq=55tVpS?'nBZc!/QTC`eQUG4V&=Tk`BHi9R %S1j;H@m<3RPj3,hiZh44[.!sQ`tgDI&%<#]DITNj7WZf?2p%"MW+S&KNsFF#Ooh,\SB- %bU@PuZf3;0mS_iVLo2\0D]*Qal4aoOh7#S@n"fl$hZ+@#BbuPn[hVsVQgA=sTJ:F:U<8=!=a9$4I^m&^L\DQ*DS#9e22QbGP6T_m %>*XoL_oO.0GVcaI45&2q,TS$^]Lg&;+9O"Ni(tb")U$E.ne_`D-q._c(K4%7RG@/pb[q*#Af6Pe.dFNsUm=^Y%:T4:1Ep_VC2KQcR84GaVP;J9@9N.R*_`*W.-%0XETOUO!#[e,gPb-N:/ %+/1RZFO4GtX%2(Z`@uhcQ89JBH7NhI>W+MngA=np7SU@";?gS85<5s@UhVnou^n_\X0ft %fGT?A4lK/%N8@+fgD1?0W8:.e5,E2A%+AmP4l%Y:q*21LL<5KNa+UB/gLB7q,.Tb'WPCrI%+a&?G8'i`a&'W_=Hu]Y6)/EVBIq'! %el0@c#]Umq!CUHd7HMEE]h(iPD/:EOWoZ50/AThsE6!:M1KS`Zmg)fpW_u!JJ(9l`W+c_@E:=,QVX&\bQ<,$Wn&=5Udph%62.N@h %*Xpa`L;iG8V=Bk1Rct5q9IVejR[nn[j#b9ZCu7;b2H/`MT9I/"Zo6N8aAu(a1IroM8=I$f:uAV,?D)G*(70.IDf3m[6%uElH%`*`E]>^g!dp %/C[p1!X:sqAfuYteC`0NF">uq=C.Z3fD(=P;3bLXN,u;p(lMp:c*7M5B#5*Op!60,`=N^P"_es5[)s]^ZcG/ceN.slCe^-QD5=6=PIFt9^QZ6^34Cc$l(lUKjF99d9o,J`!7i2kK+R_M4FcB@hj`u#d]3lVfQH;.L+ak8]^4m/VInT7jauj %W]I7:O6]l6(tm;am,hfAH;!PA.^(\7"!>BN:^>FIp(;fmQ0FnWegD.+7;=Z#s-=ui<(.3XoOC1j_ttD6dP:ZtQIEb2PK7Si3*B); %c+Tg%DgN&]51K#+.>l/\qh7Ge80Z\ih$t4+b!tO0AV\b*2.K%AQ1RKlpSK;WS7HC'.?rI!:s9t4I/1Q3]dl?RO>XkA`$`sA,q[?Z#Ja/(sEk:Er+>6rN#?BD=+6rRpSjFq]?Zr;EOSE`UhLsJHLSe/.jAf"YlTgt %!Y<_^3!*^UU&bgIh%1O",j3EHbs@#sjUUn`e/adI71H[+&Q5=5+`:B,E==m/)'J@7%"h(8(/]r&,$.qs`9.LTUGZiu)@PI7!dH/i %[Uq[b0We%?.ASf6i!S&uC"mQd38L9;,q0%lG6E,/qc=mQ?cZiX?@i=uEL%7"&03`+D-1TRo* %2DVtTB[g0p[heX.oDer:`=(X5em-n\fEg&W*F]1jAP(I/+V$JaiC;auSud-$0RHo-fDTT_%=YUI8YVSpgk;pfh%P/S7Z=Y_4j!FM %4:?-Zk*`OP_?>&Wm=\rC23N"!!.]c!Ea`5dFWVf1.ScluN_\bR#,/5L??8I:kW.;Or>[="'+>%U8&U8e.]IJ:gUp#2D9fIgYg'dH %\%I4^3Y8&m&/S0(8f:];AH;:_26*>jFWN%1EX-U;>R^9]f[6I1$#%cp#[Fm^;<>NM)/9CI%&hPW@!ob[B[rYs&??D9A8GnU6,&"V %/S5h;HDD25HKkb>%Sp<]D/HK5Nq-'S.\"mCXjE;G#]Zsb(r$adn^'A/dE*4B5qqG7:;['F8.G%VV3W4QG]W[VFF@VE1`/*nuk+.R1=0OjW63^";RFFfB^X9rF>/t%9o6kN=WC#Xm(7&**R#YB3,iu;mMht?AS=>FP`3@Tlo>)33?Y@nZ)cm/*;=bX(9F-A;?+XQ>O7< %7PJ8m?&F-XW*AE$OWCu$@MMY1=iIXC"r2a,+Sh=tJN/b<+;R.Nl;k5`7G50l-D\[Q">iTR9A"E]NgF5hr&Q6EBc6tB7t1b*ZT1D3)YK5qpoVXGh*94DNZPg]p#STgl%HcB&`Qb66U %]EK2Y[9X8b3)XoSGt>DUn.-e_Xb3jiNl!;`g];4H'AL^BBq_V:5[g[]*GmI+:QbVria?A5O*[WW11D"W@&@%L27'&=kEfXcCaO"% %TB,68Wj?Puk#^$[OW;^*o?MgNL:u*Ve;luDdSr#XYH1S=0!'&Rmuag-(X2e6GVFqB?[3dkdu'HSe;krqiRnFCM'fsb\lV[afZjI] %WrGP.0-N=^l;H/q;cN#e(T*D7NmVh\C89JE*BhOnB4MqeTrM&+N9/DB@\A?"lP!u1NMOV_k'!HTaC/_LJ-G4=8V_!e)_)!91aiPa %^/.OX46ZEUi*_?9$au1M0a!-nKPkKIq0Z[RXk^jFd3Q]4ae(C(ofeE0F>><$_GF-[9BW5$b2W4ZECL7;8']k!B&U-)1i1r9dUBMDd]o4dL:CiNT_2?@ %j[7Q8V:V,$\Yl>6J3"UVRCKP@fOu_\2e)>eY!%L[e.U7f/hG&7@8kLSFANNR"1P$Z/)5NGi^N7^Q/Xj.XDq6)*'4`)f#H.jQrY06 %/bVDI)/_anlDq<;Z(nTWatQB?-5B@rSWSr$^]sb2e&QH+a\R5t-j\X'E?\>[8T&%HS\k1l*RlkD,+'U2PPHE,_Y7iq9_f.ZIOK/$<:+1kIk/Rh+ %ZnZ"SJmp\MeRODq4Z](Mp"X]FN2rA6k,V_CH2oIN%f/Rs4J>K[YkDl_gIkshcLtRZAB[+rIHf;,fj>8`hq9_[\J[6Mg %90*>V)3poO8l`9]<^[%'g(pr\lF`8DZBYpa;&0iKOFuS]oo+^b%6d0//)u(VVbE:nJk/>5ef'hNjq.`R"Y-i6SR,_gj!gpngfG:P %+Db'AJ]X/a$b,_QVj^9`4b]m"5H#n'qB;-b/>bS_#9=5?YcNTq'38'fc#blp5XcTM971lHT(!a7;nQQEM+TE_/F59[SUs=+9Ef2o %BH2$&'NXuf!A:RZB&GKo<^*XTS#aFui/&#,I9Y*n@qK$InlF^!KI2j^=PG4W:$+n(Ot6($`6(X\EKNQn %OkHTIFDA\*SXSko*d?l?<4i-%0*oOqFaE3kRP2X2+/#d'XinYRN2g]>ajZb)h*=h=TLEmEWqU*FU@tfd#&1=m[F?']#Zj7'cp2QJDYfP8OHe",NS^e->^7okej/&e*@P<5#`;nE %k3?##('j(pKa&Kt/STjr9=So"7uA,1[9]uXHf[i]N5ijM;3_`]&EXCMUXSs&P\,kCld4b>h_N;`f-D=6.NRITs6Mr+oGRXCh!YE %>9c9H=&P4EEE\V=Hd`8K"90KAmSNqYfWm=P-:^<\[ITHs8.[;]kM\L+\AFC(sPe/5G``f_G(5u0rI8Zskc@hOdW-`m?/(^MhJ6QA!PkW?R_:8F*Dl_Gd&DmXIlRUYg*C,eg>^G:hd3bqF %$O#`oMU,%BqO6X&i(('2ku061&8HrnRoV%OD8me0r>-jA_fO%uI#@)NbD)DA0V"W5kQL@?a%9?(1n0hH",flO;(6&jU!.eIn!,+4u %(UpSG-C+jTGT.,KOe!q%6GBS9=@3.B\3%JN1jQ37_^)p/Grh?I&.0g"/k=Vt+W'@fXpbeP6;MM?Ao/'dm:c0.G1b)3L5p5Y!<*QNuMZRUWSBe,G/r$L6W*s@t,IA$iF:51?>Tn8oXS'CJ_)oL:3''nQ>XndqrGZ=Tq:EO7 %eFM).NgZ$)5->=I1bK1H+j`bqf!;H6hAi;]BQJBd'R"Ck'eO)l'FDJ,W6'[#$Csq!T\.2Q.G_NI?.&a[K5g=7[3JW5MbF+J9Ec4^ %RjM+9r%#c[(!TJ2O%L,@=M<-X?m2aHEef;ABQ^[?ciN#lE1(7`Mft=fA$-K)H.sCIG0*;SimPK(.]7hHU<7mt`>;P#oF'=!Tb@r0 %!<c@\JZeU(gCGtGXR&./fgSYWe\F3Y*dfU %MR-2]=(1#!<=i/t(fmNR3Gs831c@skoYa3?Qh7j3jWIG@M"qSi4k4Cj5J95t)fZ#U-Y*sUW[@<[L9l@?07-*G;K`(ABFUA<@Oo,c*HHn;92,"%h$<6V1$p=7hfjqC:1M.Tf>.,lWhJoq-K%AR$b+]pH0R"R^FXLM'%SMLVX$K&s %%.7jm0Pn+`Ms/o\]KPduOCRrK1LEr!!S14fNIpjK6o:ph$u[Q),#pM__h[)WU.%Q-E0lln406$ %i?V:7IPVU$3^HiXF\J[fFS]faC.&_cchl81G=k:\X^O\=j^M2.S2H&cNPc^afVWPoR^Q.4FTmoHNjIF7ZT)=20P41(^Ic$n1?>ZLip6a&42l206,K %h2P[pM6<*nle25]:!'IYVSb0jct9nfb[#Pt4fH1)O*>8?g1o55N4,c5\G\^h'"_3,XU\;9:Q:1s5>b(-)7K(LX"-%TN4&aR(O6@E %Q6-W@Z)lm,9p=mG7[oM`BEt?7`9s*Oq'"pop*!Q/ZcD&fd(PK8Wb+Uf$ac:8_Yl=1\K+tn4V#X8Im %\@3E.P$oK&ZJN"r9o7spI*o'92\d!OSE@?G*J4)R\]lLnSC_QlO;1<]P,PN,=M6hf`B];g],Tu?!(^U5r;PkQRj5@(`E3@.`KRV7 %X5,pj]Xt"]'fBdIUkq:)?]D/]Gi/!'4=2>/M%JS@#`MUk,AOb"hf3+XD8qU=O18^e3p&n^eA4RfQr"HV;msZdZ^CJA=ZE-'GFVl2 %_:U(,KAM7_,7-H6,B4PFGql/kYX0hVMji:LE^16;g8pc:2PR8 %'L81)\:nr?@5*id4\,[NZTeB&gjtmh;p4ZoNpIh2@[+>l<8D"Vm[#1;3+KKWVZ10B>Mec=(`<5R0NdWk;oX_nV"<+GHspma8bYsf %6k&1hp!+4Z4,9!(I!5p:cnVD!rK7:-ZK-P@NDK+UgmC3C.ICG!-PA$G-46'b@9ajc;c.N$4ia#S&Yj.hItP6H-Me>:?1,/ %eb=hP+M7RZO0"dbpL\gL'3?3FF\ekaUJp"2T7$Vq=)[a+W=\c?A%)Rs,>'A3d)LG[6&:+cSbkJ_,nn7KFD#Ja;GoR6 %N=@;MCE&@&K4o+=7,31D6,(R_R2OC_Lm]_/@@tBh4a[]9o+6ae'$PmEI$S"iC2!g)J8J/UFsJo<(Hu[ONW_^cY'35E]M\=(Jde$_ %I@/?K[SF,?mX7:H$`)TIW %$t-SsN62O$Luu]jO^k4amrEEe(P5AZ[6%Vh=U%f01W[j#$+q#i!Ga;SGT`+NJ#.9B5[1UJSo_0DR"GY4&pI20cZ@&sZFY-;.@F\@9nfY_' %1W?`B``Y$6b'gaV:R`1t'(4/i1#c-,Km@Y_gU7h;7bah(*Ib]SP3m*o/ZLA]^q1Of78hi=.u)^;/X294kl*29a6r2/.r(/8H8ZSG %q!*)5`Vr64"R1iVZOZSS.Vi8q3HiD*"lhHe;VE=*;@m%>bhqK+&:BEK_do"WFQ&[%aDX@5^8%?<-k(!'Pa%2A4*Ne$nk',g=)lD= %8isP/'RaUb2:47?jLij>DJRbO]/IZ'VmNpm$mW^,X7!JRdf+Tj %*3BcoC4=\BS?[un<>ID_H@+^!Lf_(7:q;YU>=h(lmRY52GiQf;Wt^MnSmI^QR&g15JWW.gEn+Fqirn9C&4eQ4s))rn#9psi5lJ-JmpeI-@(k'ND %$/!2!br/dAXMklpZO'!&@qm#&O'6_32On[]S)Ql0$FE1j:`CY"D6Y=/)4YC_'Up5V9n>* %RF7GXC1rktc;9tC39f#H-/tbrALe*/(0G-X#:bsA/i#h(-$!;pdaA_:5R"QRE(Ob>o#AU;j52Gi+=._BJgaKhOPh2pJPFD[CIk71 %YA)JYZ_Q'hXChP@<%SJ9"q0*l'3,Aq'hV?5BmD<+::?Jr:&8T9hhSpR5i!?OF+i(Dbk\6X\8l`>?LD>H4WgP&\k$_7UR7rUN0/3& %Fb=m,<_@68m>[s,.$&H2Sl!D`aV:gH68\2;0#C5LL838/Bi-:_#V%;JQVAC1o%05*Y\Skt:Qc@h6#\^6`ed=:q %D!NBapSVYaFstRcpZKJph._STf%F^b]P!SgPB1/G,.hKg-fHF/H/,gd-)M-Y!IBArh0NSSW$F$VhMP[:"6JiKEH_r,*I0LK#,#'a %oTBSX]8!'4b8%VD5o!'5&M]!QVF*F94[L#,D+oeGFZ$rF#X %WD0W7UdS$u+R:%[J&(/;Dm];'[oi-&@iM4kMebE%X#!?,%$GLfI/G;I>^]a^K39g%Bj:GDMkFOBUK6IX+^ctK`@/h*o37dqW$aHc %`drNfC)H?BFQQOQGh0dgi\/_n;'7a`-,.YJ#"gfh,>#IK8BQg68O?;UN$W#5F]C6S[-[W %RS9lj%bC)Ej3JZ:*c7k&*d23\n.EHF-ii/1#W5S*aLm@cRK]f-JJNTRT2mEe-P]I40u/cpgH;Y*2]" %k1[Xd3^"Mh)FJX"#V4n4JQfVTJ^4C\-=VUG7>i&j)5^,W+IB,`FEVnf!?uX>kU[S/@b8VrpFRacN3N.OS1IhPS^T!!4)1UTb*GTQ %7XZWfMUOWu)q0,gKLXNTcUe%^$2iqfO=5^17lrUu1?k_XIVmsF^W!`&ZjKro-TnF=Nid*'"D[!$aK)FWVa>?/a#5ZL]mK?Z8VJpY %LI)r(f2"b[##WG_\Pm+E$Hl^\Oi7g[JMbT:$F*(7X@ro,EG?iWaPm_3VFb/IZ;iVq'U5Kb/fh&9$&i&_DbtVrF@^XnMT0@PfYU"U:P?UR0c_#a=!cG:VKq,9MT$EK3l;SH9*l?e&n/%C8o_sp$"$L=C>kR4EI<3GHtuKFqF9ODd;W6>KUdW[m)LZ2 %,I:4Xdqs^$\0bBuF0$62YT]glu?thTZ1!%?G!qdnlXNKc^JUS6SeYpm>,` %eL!'AZ)Q9&[ri,J8Bti])2D,(9f-=g.n=mq3G'b9Ki?3^ob'ONZ$c9Od/;fb_+h$kPj/ms3/iTR^NtAPT(@0Fr[i[%2$L-g^+bHXrqCS+u&8:>.b">7pL3"hM9/gTut=]%-]6nukhR %oD0Cjpr_tCYIsSo9MogqIt+`Risop#VYrIInLLe,qVg%4s4A,pJ*H>jYA`%iO3?0/rm7]!J*cR7cb/rgs8MA[cbAs">+YSQ=$HMl2f:hQ`_3Lbf=c.pbiq?ar:7N[ %:]L%Fdsp`aIGnMD#q$\7rp>nfT/o/\qM3DS`1&F;Pa`3>I-O5>c-,[E+2)BIp:6J %mdpXSqS]G<^3',5jdXT1rmJun4?@;Mi/Mel>+k3X!jT0:9cNsmS %7gtT!>2^#?>H:rfoFXReo])>9P;')-3b4A[HH($b?D05[iJo3X2bs3_!lJLueEG%PbqKVQ:SlGU-nU)!p*#As9'mgc]L6.C1hkRH %V*k;*mF:!'&gBS"At-F.?/Fta<,G@q9L+q#*FdM^cK?AG?:luY@tUB4NW7"HSEe5F/E %OO[&P&'Q2Q$rqFg-6\*%buUN'-k"'qWCh#,gOhl7liZ)YUZ=a1bI.HA+3C?Krmp9pn"OO^8\=9TRea]fS\-mQA4/?L9iX8BCd:(Z %B0sis;Nm9ce,mo4D+n_RlI@,O?(J+Y%HC>C_0@DG''V*,WX$">9R8e\2Q>)LBVgY9A@BIa=S&]j9C+?5*W(c-$e]I-LuFi(=KcFp %peNDAk1l%Xgi'FaF68[bQ4LQSDTrlkO&n7S'-?"#j2lQFp10*T#?P0`0@Vu,hZ-kS)>ZnrH.G2Oq++u'0 %hhKe9=21QQf_YU'#qiEQJ"`d8F'O1<,-dLo>C@%LNLVg*.Atg,)d>Od"V)m*],#dF8k-eJk8hpstfI\]e)U*hJAdf;/__skW3_g1,31,-3 %P#-/-%oj(Y8o'L-Ulf(&%??pL6U>9p*/mj^.VWs/R'aanUiJ/>:&VT>UkPd1Zm[e,7LnjPWf\gpN&bO-9S4^>#sk2L %.#D7A/T3^XU36Ojd$T9d7V9K!W3F;&NN99S15EA*a82_=4-C`SNCosCm[j6WWoEGl!dM:+FWUgXAUcn\6s("dh`PT6H?5DnrjFX% %n`f2()a@X4eoLBBPu5k+-$a.git,U0euFu"(lc8DEbTHGmAN612TDk]C#E:DIW5&5kXD8N0QWQu3W#X7HPR8l)F].`mG8naKmB5jQUF%i-am/>R>`^aUE`@h1)e9*qqY_"0p3rPASjl %Y/^Rn^AZG:b9:ba%Ze0&_iZUJd-TUrT9YP:I0`C+W#A(qoeN'&E6SCb2*tJ+e%V!5^*oqJoTcDsqbZE`*@k^[@^KLC?3qm@ru?lZ %1Jsq5CJsTK)Y\rU&>[S[-1V^T7%0U&ZpN%/^5>d5WqrsT"A/lX>9tg:8\0@a?eRW2I)foj/_882CtmN7=iu;bbs]!mmBK:6BNZUp`],j%/'q\+]@],=gp?E_0AHq*`PB.Hl+%h`UFOYKU.?u:$]\j&fW_L%2]aT %S_F-VmANp!0:[[J7B3%B@8PC.1=DMcS %,G"]eCJC.g@p&*/?O]\[uU,Z--c':G,s;\Z=&D,0P3U%t'2>Nho4d %/?:IC2VS-Z5B<2Fk;STmAk>[Ac/b<^VfSWRSo8!\_Bh>),YnSB/$_J_^1TdTo %%Z<=UdiAru6`Q+qn9]mV86d?o!2lt'Y:*]%r.*EJPB,^kQTgI:Ba:'n)84I$'S*VDI&0PYqsu=>5%.+mT@jX=R$n97[):\r'pc0f %CE?%uh4I'iT0r0P\,[4qKA(Pk9%6>0nD6Nh'YUEgSjk,$^DPSTn?1$17?.fX-oKUK@:NbVpPFlQ&VJp/0\0)la=;\%_Tr!">\0L1 %@&p_KT1=&CL9k#q4$AVu-irQjcCP6Xf,)bn_=#4)cE>!1(mi7]`@NS$IX'`Yc6$'k,P`/ALiNI4W_;*V^-7r[3*XSJAS/DeT.oOo %L[AkL`Z&srp7*INs%8">Zh!YQhfL-7X3?/=9E>R_`4]VV"HiiMA`HRnA/k8+CdXM)$^A#lL,DnYBA;05&8murVG4G+btSK.\B1m1 %jk>hu3cj&e=75ZrUL/l+m9!I>ea3?>$.uTEAu0:P_eJ4T[ps5cJ^4fh]m>Y&-R=0qpOOQPK(:Z)fG<"PcF+lWDqg%4Ku7f7=?:e0 %RO@DbU]N-S-ARHV8g/n:KI>U]F5LWFB3FfM7TqhF1E1%>i&;Thjm"cDBk@"aCnuaefPI@;(t`Z#KeGEl=r/)cZZ-e!@C(\)aPk?d %?BBufdU(jgbpHdoMk^KSGD+H9s1?1Bc@Q5UYu@,[LP)\:!(;$%elfMW4+M)SDKLY[D./Oo^p(/<8Tu$) %(1QNg2tKj>GAPu9fVU`nD%#oVa1Q9JT^E)rZf"])4P^cfl5T<>K2UN&HA;K$h[k2Wm+S^o*Z!LmJpRoCLD>-N%?4b#pB(!carH^! %FUa2o'cm"[L^RtAna>ClcgZmU='nB[DIo,[UVh_H>>^hO()!ARb7d.,Cim'>qdUosP1#9U&!m"4*(jQKQ3;ENZC@1>Ge,$NHQ4T#;`Eg.b^>[&b'u3Zm^T=]mFecN2=e:7:3nZ'@o(76uBM+%N[H)_f %DnS?<`9'E<7&eL]oTa20`sjs>X@a=.E*\T:]@,4KiOsQ.S5-FI-R:8.GPB\AiX?lJ4.aMIh@">(UhLN!oPhOp$BQbm[?6Q3_r$[* %k5sY39129FY'+ZVa'*s06G'dS'Dki]3d63f5Eaj`*F`G\!g%ZBABZ]m6VOZ<>uO%4Zc%/D,U-uC*Pj'I0P`6RA`9SDK:EYRB7J4a-%78>G?lg>=R"Im3I1-bA;:I88CCI7Grq0)5> %K=H%a"U!SBJ@+lP(#lN21(_+`o58G:XoM";H"?RTn`^T3F[PMHScOcXiIHfKO/:K.Nnh_#g-Or>Xo"l3#;fA>Q2P@-i)u9)WE%0+R0!%pdl>`Fnd_a[&*r/hSt#*lCJ)k,8$`JJ0%%sA9t*DW@Zs3W_':_ %DII"'AN*Wd#*nG\O[I#WV?H2uQ3-nR"GWm\r>&m>&L9^J[H'\sTRa\lp&$GN4&klpU?;[-[S!WdNX)Mo5r:(mFH%3S&l*U\hhF'J %D[%%7-st[.%WI,Nobg6-mMK**C$`pT^etG,p'ld.+7Io8dS3k&Q(0^8o0-*'g./D5Rt-In3IW>5Hnsm5.0'LOXalq^ilJ %T;P+uk8ar*m7U&oA*_h-)cfXZ\Prfl2YMhVYgR^o!=8DC;;rN'G+-0k>a,mAe;*.4E?FKn/SR$=>@1XNQM0Ru)9U)AQ/`p[V10u` %@lqtjcH0:U7IrRVo53h68%:@LUDq]">V7r>(Iha_e:h79^,- %JegB>8p#Z;.*cCd@gL`?)]lq$Tap9a*s4B@-8kM/[;Phf,Cfj@DOFom^(fIl20`[CY/Z)_7anX2[k\3&?kR.24YRBSSKU9 %pFIo?NW>Jn]bobq7ZM\2B%Chr,r)SSa%%F7hGO %pLpj$*X,gC8=n['IN?k`V]bp:rm\u2Pp?)8KFadUmc@,miXm\pf]28_U+,aE`h64g/cGJ:9)/%FTf3\Hd%CHn[H %hDDQ]YMR:h*fZN0PgVL[67Mb]);\u#HRLX_rpaMm;0d*S`GL`[9u8ngIY/i&guuKL>QHH%f<1>,mAgc]Y\b?Rfkh_t1"V7mTX'40!%^1%QYT9INem9I*8MWoO*;]*.j1T9+L"WCm&HN@/H20#[rF5R#&#WQ6#i2^EBNS9PNU+OS>/(G)hi7KbSMPN;tIUX(jS*TL[JoC[T/3DbK#`=laK8rJO"@+>Nl"]AdJ=:\A,9SPgri8H!@Cru\k4)ihEZ`?g %Y2rY($b$b@L+h5[D_tgj-Q61u$]jI`9\[9d5\i)BA0P+@++^[aP==*5MmbG&Wpd_(BCFC+i<@rg"QoL)n5H7SH4< %R;]PH.!.qGQ_QOc&;!PX/%5Bt'tnH2*YM)&_?fsHKX9FC#,3jIMOVs#7'hLR3Sq(%2$^s3OpFqn;JrrUEo[Ld34/Mb29[9g1_$Vi %H2%h8A%R_hm%%gXDIl?D+QM-\>jakn*@LVLlUJ'%(p!&KMKPG)Sq\6/7i8\Of/n_C%an7SS__ub$>ZB:[`Qk\eL9Mfo^k-Ms)+W %d%_BT!:2gudmD9OEM\&H_&B"R5]]8AC=QB=AWf^!k"[So:s]4`0nSng\e4js?]32pIk-2%OUSPAW5(q[gctd4FOM6oE*O*%6r3Uh546Keg^theF&8=DRi]ZIu;+#d2Di92>F2!L0=5 %O#8H:P/`lqeO.D_8$SNU@1#%RfAt6HEl4V%AuJ-SW3jjV1bk5&brER%r,l^I7Xh*^Vus;bQpGaEUM@?%%A4?%J7"Mf6PZCKOWgl- %36o==K5?&b8S!*'.2bE*K63RE9%i5-0p(3TB.JisL>5(><9b5%]K1R,0-TT]L!;HJ&t?"?bZ/b_&Qb0M<'t-sDr-RL(Su6EEpI8_ %":DOmYuFSQ0qD;`q@Yd@JZ8jc"repmj)g-#9?1hIMm+EGT2ng"$+%N"*1=H-206U& %)N4Eo1QK#Z6>M6BJZKe(G>`o-N,+Ugr55b"UW`YN;JDms@9tD'$(Sa*hA?-TM*b6^NUZapQEFVD6S4Y'4tAjfM#A4Qi-e/I7VLK&[8=!CGW\Z!Y8QGFR$A--/RG.j %&U)33!Y[CDqZ-NmZp!f!mVKY7!`GrZrYAPSl*HfT7OZENVQa#Jmr;]G3L+ebf=$:Gm'hXta@+!Kq/+GWo'Kk"*(LPnS_b6gLGg]* %ghLo<_^<_2rSm*M(-kh^PniW7(sT=noeNb`PS-)*H>3DlrO#J+cgSHm89hf[YgVcUSeb?B)/=`7Aa0?&<Jlt4%jiVCT^cQ6KjFZ_o%g["esR)_uVbb+m]94.OIr_pITqUsJ, %H[PG7_cL1C_P!Bhpoe2;bT/QOFmUGq`8p>W(= %A649K=8/&-TD34$n(@'CSGllWRD)b#q1C?6n^@0f`7%WOpHJE.Dgg7;s*sThs3*S#>OUX6rNktNDggYaGisPA\%Zo6pU>V;H[bQJ %oip>Ee9h5+GNbs=l$Xe+gH5%3n,7h#Ic.p.bYS2/B:f.Q8&k"H-[t>DJ+/.n^@:.ZJ)>IK`g7NWenOK0s#Cbt4I.6ZurX45D %NBd9Qn%`kl:]IE/r!S#=a$9A0r7:?8OZ.aOQ[\0PJ,'c8q=XciEr0MLl7`1FT6^BfhthKqWGd.Y`aAQ'^\(6Lr_`^,s4"[;pS367 %YPtZ=q$V]3SQHg%o7-;6rEKl,nCR^*TDd1+rqcZEl#lsc^\2UDgfm#8%fFhg %T)PuZp%,rnYJ0l3?e6BNiH5)us74M8r(k#soj.(En.#4Yht`*fJ,3gWbff,6qHMkPNVYm.H2e\0o$@?S9DRoM>JD&a9_kqHs5]6U %p_A8DrrXeEhDbB[rSOM:nqA`Hl,W)@o='1l[sm*#d!thV+8F6q='p@;h+t]S)h-Tin[m]U0>L,*l@Y`.go!C+#G-2%Dts!/`4t=o %iqMG5IeWWiMa-p/qbOls)h-8>o>eSYHs_73rqY=Jd)SBDYs7m,5OmIbpfi2Q5PFO;bVR3sp@!D/o.PKi4OI^:%DV;^@t)0S5'ZK# %P:q]0*Zt2f0>.>,]C0\;mD&2Cr_r':54kO]^@uht_frcn;kJNt_7)YnqJZ;&^['KtBA\m0s,iB@iOKErmdGZ)jj/D@fpaAf`G^8# %2ug6efCDkdIJf9Nqr)d%$K(F@BAWJ`Dh%aRhsl@aqJG-h4l?,W^M9\2 %oM_B,i=dH>IH!g+j?6:ghtOnSRt!"Soj%re4F&i;-+Dc6%N7Kb)L:`K,FGpu*Uue@X/lIc3Ndqu=XmqqJm\f(7d?m8)X:gl%eOq;_(h?U!HKrkPji7"4Da %=1WkDC_oZ!B(r/n29@"$AqIJANZ5?P,8mDD0c+9/hMkTBiBs6`,K[t!Cu>k.[)jbH&"'E?4I %Gk?Vqj,O$*o'h?/I]-PaX4.)sn1X_fs24m5:]?E)r"&ep07@hHl2QBss4ks"oU?s&)BH\m54HUAlkBEYPP4V2Icg+t:]KU]r5q8" %TDtC1s//'[HS51;]`'_eqTo3&MdMqcoU[.LiV(_2T=Ddfn7Ve#5Q&9Fj]?omJ,A^7cHj7Iq-&79-iW0[rph`@o]MkBVQ]*jhY6PA %mQUT%:O%K[HIj8%A1@O?t5U:h83sN\oAa %Kaf!+cgCVpX?Ue_Ir!:df8O4bnW!",4+2@3_D=_f:;^rOHJN'u=)Gg?F6Za/\g_7S"]rj6J'>u*]AViHI],2)^a`3Q1=GrmDdCV1j=?18m-IR`oXTJ4_O;d_,Uj> %^%@t_7rL[.rii2*jp((\"p:bV>Vor8o0V1SBsEuj3;(HP90[6&(NOH=8`-+>?/tYC/K_CA(`1/kG+CV]Zh]f3<\ILpj8\5U-NhUbSXGL(,ud4/Xts%B+Q+"ps+ %5^c\,a('Uc['WI">J0k.l,0!&G0&6M?YDT1>'5r&`o%BJ>b@_?ra'$5'^\aqI %^In0(Zql\3gZS<[3P7ZS_GG79MSnpd[u[`XD5I4)9)FI;YQ&eEP0*)uNYBn9AH2GW*tjk&GFZA<4H.h>3u@N>TDhtL[\&8!pX[Yt %jJ@?Hm\n)DGO8WoIrO6=5kr*iDor"?M'ioXp132T)c"8=EW,[pRI*nAXMW?GLLJIV\92UjYLN%;;iUct2s`W1B?dfDYJdCXgV;W0 %rCkY4.lV.pO-nnV_dAICS/c+d\,(@()>L:b4/^Yj8tC2)2H/5o4*kG`Z8%2eq-PrO8H8PA$ct8.FmGUFrWRL!m/MGuZ=CX%V'mb% %\Ei/ZWLqsqnZLnbO7-9%4"!cs)7XqimKNL@s!R@*C89B#]n&%`C9kr\D/Zbo=9,[S+iJW^lG9IH0JS/Q:p[Er(QM*RZ0^H21Gf@:DCMFNT?u2mHN2m[Va+ %T0QBs^%U)QITO@FA*Z?m(&+5"H@NC'dbVNJ[nNfapoJs?c.1d"hS,C/d&cICA5G*63G44g]B1CHWK!)7]$p %)L*'A9W]&moABT;a%+S8p#jr,f;]P)-MTBV`io=Y>O9YGS[2NbYH./J/,E6LG;&p)G$9>`mW@QFY5DFNoB!Zl)TDOOrF=1O3B9gL %p%W<@21GGI0^e^ZLJN)b]0e0Y>`=Q_n#\co1O`EAS]cdII57H=optZkf,VC+?09=@Q[.*QrfX]SqJF@.c!0:1:3<.$b-o:GIHU6g %&"B?Iro\KMN5o:Kp"6]A,BEBuY=Q)D+%ZDu=pokS.t.nWm+XdMH0fIW7$2#jg-k[[b'1OE+Vk %Z$XT[-76J8$?GOS'gjLl(%u[5l>Hg)qkL'i]\Bhaa2Y=&rM08j2;:KA2iiDN$>gQ-QYm1ugn^0)ZA %_q^"&"qU1S-?1*pG+-&/4S8-dHfsS0T`%gfd45`797L$ZNK`,Zp*cgs8h5tXi*l3L`"k*]^K@OZQi(G1;O5VkCN^[QH:4CfA`C:L %A,%O$qV$KRHG'XlV0gG@FZ-oGeaJ:F:2XF@nSjmGn%pR/KP.`+X0qBG[nGc0anbW@j]hC"1[_rZF\SG!QZdHD>_Mf8[&cJeVpFFa %?[_-1`k0aUZ=*1VeU#O@mNO$Khm[\q_e1sdQ@4Jtm$,R,>,-P-;%ptZC/lF#Z;r%>%0pnTa.*_^8+s %dA_.kM.MIE;<(T_f75WH;PM:cAUDb#Fo31Ktlc58m]^q<(2[Z]. %>ghdm8[=hG=gmd(lH?=P?8b(9C.`Z@-bTTtJX'^`i&'LP+#7umK\i\4UrTKWHuJ$>6-U'ABC>\MfButu^SkqqK'Pol]+UeDP-e!j#/lk9>!Dqo(:$+hat5/]\Iu):DhKQ9"].Y[c#2AG:r=ZUfG:IELOSUr;-lDQX/9'2\0eF4"]*gLW"m0 %o=CZapiuHQj/5ThgbdP(qbu&C&JN4YDQ#)5lM8uV2t(#(nR6H@=*)oF<#iUoEUQb2bcAc %n='lT1jNb-D+.DC\*;,-]B?XtIP^(D\&F"XLT\Yc3kof(2(mYSU[l6&^Ak8N[;sC?mnKB-+?+.!pI)[q;a2>,GHY'H_XFZnscnecJHadn)>9i`:(:IB5T)sTV08s %Yp6inQ+h=@3:PB3?d7krDYOL>nQ!@B\E/DIaGh'[iEeudE2 %cd^Lp"0V!Yr`8m-N7Q14lP]`FpN)eOj--sDkHm=K2N4\3\!Cbd@!KFul%]p*[%4c'd':JM=3mN/n_E6\Na0Su?U$M72tL<^S^?i: %F_o=L=5dZd/j1I9o?F&2L=,Ab=HsAKL\5DPIM,[ikZ8#7?b:X`pq_B*%idaY'@-"*?On]QG%]+Qc12%j%mKG^(A?F.c:c,_qsfT9 %oI2*OG98`EHi:=STf-!,:;al^IJrH]lg[)ZC%&_4jSnn-EXdaU4-WiODP,[qFBjn$^Y!s(5BM2>lrIXl7Et^j*7greg.o!6OQD6Q %f6Gs?D4/q2qX=$Pb#bRkC"RMbR$2aL^3FnCL@'cAa5sq;I0tu&a/\792g/;Y8uZ(u4tFeh?NA9sep2mhhl:"XDVO#8a*tO;c-Dq7 %hbCZAmYsm&/mV8KSbmRmO71)'iZ"?\Ep@;:f#hI5i-#"jhDOo%:RsOphNt9%mQ>IT_N!pV`Riefn'h&\Xo51/-4ahYV17(i1KcpM %Wq"O-"+,4Zh#72FA#Ctdb:q^,0D/U1^7VDi@-YrH"uT.u*)moJ]s[XHII6UEMjLX(\95:MHP2Z[0:[JtlSNVLr/^^)H9D#'k?C^= %>3KT^pnd[7DaU\<,*rUVH&FoBD0^1s1Nd=9I,Fj$\,Gr>DtB:=:Rq:+g/k>Bapm^\lE)lqrrah"$)f6l@& %"W[&QO%&q!h`m$n?T1bsS_85(kM(I`q7ujkm8CN(V%IL'Af,t-Fko$bn([47:LC\XFOQ#iP/tA8RX_^;CsdQ2Og!M@/mc,ShU3:c%pM1'>9PS@L*DFfm7Pc)dOb=4tF5J%G(gpC"1j#8_SX*XnAUo[eHA %XeVp$-63IS"-t#)CXqD"1Z+3gSE7P#dLUi0^/8iphn4u+K4D+Fgc^.`4qDh^RLthEG7#&"gW4Vb=d>DnLASkjI!-"udurmSk`7YKr085Fh]F`nAU0a7cZ?33I=n&k9n6FG13g^Y4,&nuqUuGA^YJ^2LpK.D=Uf %SNTFi %>Z!TN*G`EW0qqlicM\=)cb81MaRh,EmJZ;!`@KPYhR\-5BZ&crSX\67>WdB(a:CA`I5,e:hj.87'o#+L?@SsDDSIV../25](I"#DVUJ*D;;X0rS#fF(=/@%C2!XM/Se?9o28Gc0(XMMCLtZ' %?Em,)]H.01N>OO!bh+JuR*hZu$m!^&7EnHdF%ZE=+WespbUHVe6H(mh>nnkjGeIqXi'/?GjDXaDGg`n"Rm8eZ`5]MDTs-"@#JsN` %*bVOKCL=+R'e@o#J,QRR`?=_0L%bd]PIB#/3=O_up#LGCGB1k)?f7-NpsS5q5q[VaF'=^#j"f(i%pGEf^H_?.B@p1fJQL%sVR %;r8]X:(nXGS[kYXJ1\J2 %"4kcA6g""96J#Xl %/0fq=--=k-\pcSseUSZPoCdle6"c+78A]?q"[Js0L`&1h&uJH1_\=:Nb(-HWU_2h&84*^[+ns4e(gDe#a!NrM+tNah%&Do>s-/>3[?M?FjH2c&Ln`2d4#/j':.:h9h7)h %%Voag>%q%SbHk@?9LrB8@S*kRos43&fHG7"1)#Y$4V$\\4Nl<@8Ap(pNagZc:W:bQ2R$UL/p/!VM+/LS.g/IJ2`9@.(IUN)iJT0+ %0jbP6O6_Hmjh_FFaQI&kHA%Q%VYh^QV!T.i@I8lTTFiH*FOj?f%l-o';TAQiqPKqk;^U, %:=_3(OuHO.BZ2_WWrHQZ!mOXdO*eb$%MJh=C_H?$NU04j%QmgWPTn0A'2oc3DlZ&RFEGTr8;p0BI@a+@K[**mZ4K?*VO'?[TXk[` %)M4b^`,+UVU.;;>RZf1`*iiG(1NF60/J`/\RhcWb04NTJNu>Xi]qeE+)U>WN+coUXJG;OlK`YDZR68QJq6m+&WV$G[!]4sAMiO\A %c\P^G3%nEF`"H*!c,u<;JIh#UI[K[4l=&Z%LYBPs'SpglX,cM&36PMLfmMs\J/O2Gk-8J-; %;9=/rogukJ"D222gC'C.6Ru_3$t4F<,3FaqP'E6_jD6M29H\.Cp67/Y9JH!Wu,9%m0eAkaijY:+Zl"6!,Pc7q^-!6hClP\s0S %l%[,>p2IZ)75!AF1?fL48OnX=rR#.2/C3jBjfCa&cR]i70mh2omY2hJ$2X+=q/Xu(E;g(*ErO,:4m3QIOOj;7%ie49fE7=83&qM\ %FagH1\HdNANV4qG0L3:jJ3e>GIol3@4*kY&Cp@,s?hMEg1:"puDbF=m`lo<-s8KJRY*(rGNGnGS:DaO1NG\5o:R(-!U@SK)/u8n_i.jMdO1!\Ac[)rq"sRf*_oqoSn@$dBu]7dF`9dk9ChR>'[rpJqAXRinnJ] %m[kdb/pGm(l#61N6OjkG*$,gof(f1u=XKm>doS-f^jgR`G.Z\Nf_DrLZ_enu/p.<3p>5B%'._Mg<>T!n\GCnK2--6QH=8?!it&+D %">/f?s/Z\0rSEZg]AL&`?TP=G[gN0*k@,l9<1*=&qMC/um^ub(mr89"lFb#I^[2GZ4WXE(E'ico@f,?dP$4o('O:Ell_heslaM%\ %Ktj4=O0=$8iUBPWI^aS0L[E]=IO48cG=_QsCL47O?;`?XfC@1Fadn_SoA>2[/2YJ$cieXKmMlV>9uN>O2=6Gee79C\Z\-b.2, %rh6!Xi7KIQZgtsh"U,\XTX3L3@:9+i_mRhY9*a@,58ntSrn5JQTp']Q%'LTYaj4%Eq[1$>n,>D8^8RnYBBE'5i,!53&r6Hg:iKo- %EI&3siC)X#i/8lM7@?6>O/,>%n[Pl.QDp*-]&gi5cV-`EJ!eIm:k*g2=W1E-FBmh4%^)akUIBdfLSn %obE!,Ieml9@&f9:<6FF4YFsh?6@d6ISHe/seFdG:p&G*bTgg4>lU[\na8?f$dLDW\ZYYY=aGL7o)>!\L='j2\l81\S17"?NAh1SO+=iGHoS`&K1')74+1?sj,H's %dN5p+7J4B,.kb5dh*^!uC>bUr/bp,=a35T/e&Ya;,ON+(IA/'M$?L\\r=(SoX`9t.Pg?9mIR_)=N%Va3[NCk&ipXXj&K>0Jp)cJP %51OW3li@_T=+BQ>eRB.G;RP;"W1jIggUJsDN`l:!>`n`t'DdQgC@;MLLft@[<1JK3TW\%#r)D\Cc %4RqH>UXn&LWV6"_?b:5?^(Y+]p)aak0`4Ok#M1i;2lL%?gus=.]="LgrRuJaNJji@)3*d-3DfJBTOWI/7q %19FXV]R/>]RJUGekaBchP0dUbN)$Cga4#?+_;4Dn/ggRCHUgSOU@sfd1Rf4'SPO_ZrVB)48YbpBm0>O%qWWG>'O4h?(XU"qDVcjp %s8DY;*>7*+L\os=f8_K[M$$1n@S[M[@aO).4gDJ_4>AI`@LIIU2a8G0?1`>_g0R/Q`cq!ln03D6k+olS"llI5fMmYb&ET)?Wgt_dXT&?92oNH8W %JD6's+4N/GY(e`US@]"_il60aehbaW._Xt_c&D4flgD`_;sL5ETWY<.k&'toBEhH!k4up,Q]K5sc+pB#gYO.kYMZTtn(rJ7mG5Be %a1?unok8NP9jZqo/j4RSQE+)J/pZ[n/cQF7Ilac3SC]XI"^eRH[eYa:nQ:qW%YF<)7::fMCINu/GS@1"A8ObB*$V&e@^.0c8uRT) %_*sIo3-GhSfnRABG0#X<+cEXVA8"O&f.((cI>PnW9\rnd\ZeU?bqn7o^%3^l#e_UEJ4o'`$gV,m7[?iPl+./+$hC %aXfU\hT_-nYee4Hc;Dq8#t:-/7)pEpRS];57l"KBOan.:aT#a>W'M)Aj=d;Bp;k/*%R?<$oX%iFdkB0V-!LM8Tk;uI!5>U,`%5&M %NKR-`Mqg6:F$Y\Ue;Q[E"qQ.u;2OlH0@YH]J9?*%+bsK:3\5arP$TKjX#aEPMEd;#piS:*@ci:GAIt_0i;P>D[fu6,Zh]nfYR/c^sENR#2jbBP#>X8nqH#lN^@p6MF[uPqM5q,V&Ub5+RiN< %M8Ys`!92H@fa7/%H7m*J&0F0`X!Y-k=mC&5!6#S?.ki6p/gR/tF@^HDNddMkQIKONY%dL0W!c1^ic,(QXL&4I*.C!MCn:n5io%(" %*kog>=BLEV#1[**GqEtO#8Xp4"&sLjaXFJ`+PJDbi*_]_$aKnojoBc3W^GpQGY;F+X>n25ICPW^&g7?/.N.f1l(Mq(*U*6]J34Oh %j9bn#7quj)L6J"#8;@rmRf`:g+0OMoR$RTjXmn>KJFVobrqQUStD[fG@;jOVX;V=be"_!Bt!\67pNaJH6!X9]slmbe'^'MiUjJaa\!Z2(:-2R10%,Ffm72Uf8nktceRT_,37-tui %quNHel#QC+,&R\7TI)Ui"`cH==V`i%>r(;YV$'g*PJhrIX,mLT/3H"&KC:%%LGm>.'M`E!r)e5RiVu@1\DR:$Dj' %cW:,._;<9F!a9Rd;)GB((\j4FN56Y)`[EhP?J8n#2+YBtPZAZo15i!.)cF01^1Q#L6lh,P2f;"UNg\bq4&d %-<`h'.j\A"^q'$c#2LRJpmp^*Nh1qj\!=\NMd_$Kq$SIq+[ng$/,F,b`hE]iMZY-,2'*.:+[H)o6Abr6TW!PW*s@0a&(T*m$P*U_6O"SE:H>Uiuhq8!7<'/hj!4MPE!D)l^&6=:W[?Wg4VC#bX\(E@ZPS6sG76juhJH1`4 %BKJ'7d)HQ/P4euD/q]Fmm3t9HM['Lp'>,"lWPN!8dP>-2S"q>\g5CM(Rq[F34a`%'`,V%TE2X:o)N.<[1fNoHHr%13OktY_AlpGg %atfI_U)Sl4Y"4$C#dCY+:\L"`IC%TBMgWMk+cj@C&G+3=ZK-T?1Ji4anGJIbjPl@cm;@e8Vd %$lstD76]A?Z7GEm[^>N;fRSY_VeO'#@b9o.a@,i@+/J3"M#2^+3\29.WW9>Pqnd]WmZG-PfXQZYiW.t.jPK`==(9Ci9G@id+fo4:":`E<#R17%7J,M %&fKTn"r(rApeU=0Wibe*Lb]5>[-^=dRFR25r.7>!eqK(uhWZ>pk)dfB'-O8F7sq`i#,LFF![oAk#]<,jBGj1)ls[eX^?i[4UR?:P %?7:^T,Y!p?/UD1@imCe?o%8orLsPbqDpPbZ5`7AE[)bp,j,#Nfa\ZrbBM=oaolqDFouSHB<-&6U=UC=D/!D"_.'dUhS1'Sm,MO0e %PE)kYI4pVGJ7OT1m!YMH0rFKQ6ET]l72jo"&NlNi@'Y#"QqDtC[p`'bd7*>,[PC,0Ra8fX8qG^IF\"/a1PKNI+b-U4+FH^/Lh.P! %()fu@BLIVo%5eh>KYFG%"0K?F"V>*AeVL)qPAOMT5d7+WSJDk@3P8p%%mJ/];1$qU^k$;3B>E[o@,\D5ZBh7TfJanY-:GsAnX^J" %Z+Xg'%J3m2M*B[Z+SHfOS,o5c6*-@uK%A:]$)A%lXe#rhL]Y4?LudL1aldh$dCPX8#S8]=b-caShGr#s3=Y/P>q8s;#-/2@s5@n2)<%O'&6(rCh1Qt>9ONbO4 %&H"qoSFA;=FQ8GoR.LG7^@Z/r#^abVLa-VN/'tE#?KQ:Q_Yt8("V+p,a4HNSCQ\70'LtrDZLicL/2caMrJ]oC?DLd[?qk]@O(1re %:uJjD)A1E)?nR>sap2n?6EgnZ7e$(mo'+PHOlt+5P+u7[HLb'd;9\GDLiM@E&a?jB13Ig[`aEJ(%1@3Gb(qb).fi;!_oKCjX.4rm %bR]I[\@9\-,W/_A2CN/GSu35BGht9bc?nK(I*AG8.7BG%11gbGuk#RG`G>l]=^KUO\-.Na0siC5B"8H+H*mW88[9k87bD?q%'X %9p6T5O\@]Q0$+\P&Gi.h<,cO_@n*i,e^VLC\-W@k_u80oU0,!t%Q!(N9>81MoG/-AF`%7fS:H_J3u(HM8]7Ft=o<]\lG@g(0?'#' %*JK0?"K"I/#H!2kAkNFs?+&mPj=V9AU.bt5*m`Uc7'>2)^I)st)5o0+Jtfnm(ff2%Z37rI:b/jUf"2'?TX;#n@jmVR^H5Po#W;Lg(Tec8SOI7"g]AZ8+K)U,SBGL2Vpbrbdnk6+o %)Z*l^rA((IeE``U%11_F(L?("d-J0[*aTHRO3^";6([SPME*h%*i7%D]QC)PWSGB!Fo#*EIdk(;r]p,oJ7Pc0)39f[_a*pOqL:OuWDM;P*NtNEZLRGjp`W3sHYDF,feGV.gB%&U>ff\5,8]g+pEm;A[5!hd]3K@5M2;p)l-@K,mOV2RW$7ktCi.Z`JYJ17,J28,]ts#6Se>,GH9j@&T0)gXceM0$]p1QCQAljchE7_9BA.-\hgI9u$iT.KL`9U@WkV(cXJ %BgF>c1N@.?2:g"'TT9nm;86@gBa6L,p[Y2D!q5c]QNM]A;Vd'c:1j&RoHM&jjH4u'FA'M>2o^cSQWWE^Kr;ViDdkm+5meJ8fJ %p$u/nNISs1=_d`34W=SC20pl8E8eb+QH;fMX!4p>[qpRlVKjdphqK6V=Tm[Vd7:0:-`[0&dn.6`#HsZP3ICRnZZce[Dotl,8_$ut %)$@W:\8L:rj#^Z@0rlf(po]D4&k=(E00>'D'up=uc#a1bbEJN\9/O.Z>^5V6J$Tmq"K*1$=/ %ZKF,PRV;ETZP12CO-P+erT+;U^:]H@_l^\f<,cjWb..bFW;+g73B](7V#9Q^W;+7#3:cUKNuFi"X>u4'5EAgf[p_+!FW$;6Yoq!, %ANaaHN]\4mEb0*hEs/b$?\cBH_Mcj-JqkLX%/J9mhi/0QXc %e)a3&epDHM^\d`0Y?DfDdpV-9f=!JaUHZ$V\F3ouqW4h(ZsZeR=t&1sT&@q5m-J/&fU@[3rb6[ij8&1?`]IOtNALQOMOk-HWEubJ %B]Sm9GlOQ!NJXWc1cI=:;,_@4f4_KcA$N6*r@!\k%I;N^=Zd04\97;!"0&*Lk8.,S9%7eMWmPO=PjmD@NtPEoYJ*`I*M\'Y]K*B# %$]_p(H:Z*SMFM5El/2DfH?(oh]bP"ThcZML&u)R.'@cLl19c(pacT^t0Xsu.^mK"FHG9.Hl,*$?\@1O*U[uOdlP]NQW!cs=QDt)< %i.L,uDqK@1hVe_&2pGU6@Epr(qosd$5;XQ1sum0?GBQbN15q=?h!dDT_<+2,-ZC*oL;CtnsfI1c#73k_>O;/n4:p$V5sGuUB> %lEcU_*i$G`rVa9V%h=N0jK=`1eG4@PhCffc`mf>m%VGio49H,Rhg>2I1MQ^)dE=c#CLg,R %Dq%Lt1"BEcM'qf]"65P;J+Mdel!kYs4*9@B$Eiie3o\%?1`l@M9WlQuQU2:%(Q"j\p?A>".?Ef\g*Jt]gl)n8Gs:UV4!3&'R"JdC %&L2a&Xs51AP>AedrJiJm0&(jV>NAS[[CmInSeG&/`L;.4hSQGE;iEXrFc%c`MR/B"s.T)NcJFTu/t*In4[u("^YjJ,S3QhekH,C\ %A]6?h)R7*BqiAU5(;*:BV8;]$qk9nWQ"=YU."^N?H6*,Waqo1[AJHRJ5kOKQ?:B5 %WN7uU^]W!5SlsT$4UZD_rUb'VRJcNDg,LF[G%[iZ58NdIDOfV!FC]P0eYr-gHd:HN0R'[i3k0P.QP6^E^scN_`W2uWf>a^'pp1!]Tm8[;H4]f=Bj0hZT[qaX.8[ZPYRo_"*Dgh&56>rjN[;FBOU>7a.$eYg5 %8)\b?,004&!m:pDpl&F6aAF9ZHur_A%f(VFfngdn%3cpU(`jXMJ`'!/X;#Do"lYaI"X]b%kX/ta4WP(7%TIF5RHh2g00WcNW8DFG %pL>:+`t,_4U4ek)TSfROBJtO&&H'hOGT8/`,[99FZSd1`A;!Q=o9fcbA[A:)*2>\f3M6b>4cgF%lj-)=&E$LBD1Uql^mFN%o!K+` %"`=QDn2,;r1VNs2H.ln,OZ'?"d,[no2JjDTo&@lTs'ZSL.R00`ElNB/`5'<0udNe>ZTdn %ip\0`;rgh]Q?^T?l4r>PFF9[ik,]1RKVda&/0@=`WhD:"K>`.fMZAbnP4,8 %!-:p*;MbndE$gX,\.,74P(=l+U@pFk.emJLF.&UB-dZYo8C/E1N57:rN_E7,kOMbRZ]ZmNOHaV_0`jI&+iZ8[B/DH@TXAb(Eu>dL]4)t\R#?P*D#+`-Q"JO]pd/a %W>PpCL_I+ka4P-IUS/A-dji9[g&s249MiM6Y.g!M5Ik>NDUC4F0/;rp'28f`bYPo2%W7pT\#csQC^ZstE![X:0675QN_!-OL;O3j %*4Zjm'Mp96TT&.\4iDUATa#CDgg\(lXTKXI%G(i:87+]Z4H>r[m80<^#CVqC5leHX#1,ouO<@,llqKB5>VRsKEr66L.-N'@PJT.. %i@i/(2]aksllUbT"89e@aXB<9\gNRH1\MU2S:LkfEKCso?3nd]Y]),BcSJ?F4?n(<6V>!'; %`A(@6j.(ZlOf5l:-V!#ZD*%mZd-DJPjDj>kFNauAi<,\H&?A+C>6S&Il@Z802Y3=@\^:ODb=FM"Ktst)8ub&1-/;Hd0!7g`!Mi$*'"_t %i!R8J:cK)BU3SJ7[dOP3LHp1tVoPn,J@^pMRn0cq+U=j@5Hb[,!JYf$N%MofK)E!&!?E`0f9l&LCj\CdgqfPK+:+IPUn\=dR)c.ZR@u2U>R^?BbHj %I"b?]jqh]C6G6h,Q:01UfN@>;"KrlbiGLcl')*_R"F->1O\.nf+YFW3(%Gh5j7Q)$WJJf&kcj#OQB'l9+?t5u"=4V]3eqPP37T:s %j!YLJU7.=!bofiuZW!=t#_.74"a'r%0.XG02[:/A!2GTd7KkX`'7imu*t$)(Tl7^P/0,qOgte3q_dQsTmtWca_9T]:;$O6fM6,38 %lYE7OZ-L2F7+&+;JEq%M4G,R+*bqorfcf9M %?3F%rL]ms-,:4(UKfL-*kR;u@*"3LD=Klm85#A5J'%7M55e/1CH;p;gjA))&,bQJ@AQ-S'gDCSl@hBp]JPDU$A.j3m;"XVMK/JWB %DM\:'7Kjl#,pSE`p.X)P5()P\C'J9RQA85=EUc*U.E!YM4GR=*EB.\uR&?A/qE/DC:qfL0H'pR=B\?]&ab.)%,>g(M, %Eu+.oeR,%aU"3,.,Gk9sbcF!N1H;1e9$3eQ550h[\oP+s3/rl7kCl1YT)+tUo;OfR?aCKo7U?$^?e-%S_t6OUre)KDcsF-]XT^Zn?N?=./7a>N6h^+b;eB/a,h6ek%urfOhW)&$N7b]W6.FR"RZ`1oEn.;Q#mE9;S*E+[MsX9Con=8m9_Zr0rA&!\k3Q8V:JeU:E4I1qjp&V"b)kp\r+oQ5BH@$7/EYrr2o+ %gunOYmtu@"@DKa0r0M&SLg9lT6;%,nNu?9@+=IW<0G[!ErB'=j_g*i5T3+'V[ZFPi_on`NY'Ne6D#@5j(%ZnkP5]4p3\?gHJ5MB) %<6RQQJT\^Z"TMZ.D3(:5';2`\S];AX(/#"#s5o_K[<];hn'EH^XT[AEdE##B(SoDr59FIeB7.C(X4f"EfKjdsT]`'?3Q71HQ)Idh %E%o;H-GSd?P&Jpq8HgNV>d#cR!8LcN.sWS\L/1jM%R?s?r"p5Qiq5>i?V4r`X %oLo,uD>Il7e??;uQr:h@C=i"i6b-Z3<>j,rohHD(pD\`t:2Q;bL!b/=Nh[s3+$FpXh;m.4n()Y"nu8eTCXrNf7&OOI*MWr`FmNV74inZ]#Lk**%Z1UAd8J+CM1+'3jZqCXkmr>GY(8CI&4$ %4&ms4B$]mH.SCh2^=g3,S'cW]<2RG`VB7@VqG*>-\pUblg`&`)p;=JgGQ(_[gX#9:p+r\oiY>pUKt);5*F` %bTcs_q`aJK)Ch=G%*rL>/RJ9NqPTPu]6qT==5bgIe$'=U@1reAKl9I-/B+o*#:6i2WO\`M-`V3I^<*mg&(C6JdZ@N4hg:,UWFJ_DJqnHgp"[""[A#+WfEIro2U%]qBPlL!^o$555X[7 %:6:k48Ohq+/k^iDS6H1oj<6_gX6d2Ro-WD^dWj'7Y7S3EDru6[#X<=lbgtIs\QZ+0#CN*?ZL;#;LB&O3FlN9U6ZGN.12+KTAFjXe %GjhHO^df]6B1LDm!p$M9Jn?3=k&DqO&pkC5?NJ]RN)_\mlSjbqr7amrtb=M>)rMC!WU"O]QjF-4,r2pcn %VjOq$qDCe0AP6;nWLl'o@AAbC89s9:_1_g6./E6\:]"^Fq9hgeJ//0CqJ\^*RcJW %r;dN:!,D:ZGF/uOq8t7RTs)B*(qJC2gVrd=#8ePuLcdO$PA5;X9WR7?e*k8tIJ;rg?AM@'?eoj9mq2m!aOe02%>IKgLUH)@Xi!*l %KE@au[:nWOJWk:EA):d]d)i\*q[],NHU;Kh\.rTr]iPsQ\'?'UnDj%<\C9!#^YcS5ff4tCmIX%Z@WsKns1G85Ae,!.P.KCmhoK7qf_;6m=VtXqO_Ld#phdG+H/]]F\=b9i;F6]MHXM6G%1'PibcPM(Qt\j5)ED>jqNYsQ$jjtjV':t'^o5S,7Ydq.B7Q%DcNYdjkb]-H;/,7+QL66kEbL'o27l>.r:(@$T*1c" %7[cQl-#RT$B/&oa\9N\4*IPUcF4nUXbRjpr^]Q*oO,<$EiZ9:KJjo[oJE^&()+YsA<\W'K(?6EgPKM@g?NDQN[p(btlD:ljIC.IMqqA]LY:!&L/ojjlsG:G!11=D!!+$)Zs0/5(0(kF!C-Mkr^7DChZDY#'_[-G!6NnP"J7E*Y+KK.mTaYm&mUDP3R) %8OT/7Cb&HZTk0?"a#-4,&-/Z>4./DE:uQpDaqn"X&YjniRCWd-\D2i@ifdof0roCd$'Ing>32mjkV`W!"Ia6F\?#s;!?PjB&2QFa %M3D*SM"-i9RSDCBY#KAZMN=4:!!+(TK^:EFX@b;U1(&l^YO$ %-c6aVXpN%Im?j'#C"-ZbVC#[V@q$WI$jRr$_?B-/RZ!i(^+"_2:o[V2gl"H-9LJ/V+-Q3lbR\Q):^%\7k\l-K,0OQ3r`26UP^o6m %OGtbG43B7Qq*/s`PhigE8c;'5l?\[#KS27u:6d*tlg/#NdTp5qM<:e3ikm'^dd?pP3#SHEXI1m1AF"Dk"2BY_/2$`a7, %&J.e"9)Mlp"Sh?C7j/iV"Sfr8?ci]]aDs3@!q6NmmsP3;NpZ`d$OHP)LLul&bai&#lTn'jZ^"="m %]!(TR0)M95\^u7`>^r(kqbt=p&"LI#r[+W;rV.n>*r%hrpj9o'-?eYZ'uPCRSAknip&FoeIVTdD=UdE2CVEs,8ACssdRhL[Wq#u$ %5bXs!2'm/;l"Z3XBP<"-`ZKJb][M@X/0tDYGQ4c0^'"_;^YGPN"$nELd\rba%fD7)E]ir68LS/T1t]_+WXYRhoRY]$Db'?1s.rcp %QhZJsl#q@3c.q#!;uuqseB:cd)Lli7e^.i?++8U,o9RPX+5r-MF*0^Hf"G8sp!/n28b,,0*^"*53Q/eLe71V!N2u8%a8u1jF"_g:8QPU5RQi-^DMIiZ/Y)/R5S;cX&c0#MYl&dA]dWE)c'g%X+atE=fupZ/[bNKlbF,)!k]hWs2Qo"amIboIP)i#ep5:m@'5;X(p7(=Sjr[IP>^!e/l$E]2N:bnickOU3:@@`q:6nkh_Ic?uLI=Y+X_. %=5]RNgo2Tg6U0*`h++ii#'tXm %ni=WOOSf"oG/CY!hrjC!(A7+K^K6oiic*1K7YDi'`u@M)LJnIqdV.2jT99/`iL&$Z$LG9Vh&!PLQoh6`[@#N4(iF6ZrF#Q/oaBWq %`4@``J)-T#0R7+[h:Q:oGV'EMb#LV%J,D7N!O]QpldNo#*rh[j+?>Xpn!fB7n$6mRF#8$s,L2><_>jO>4fg\lS+*Q8fZEb5KD(fu %[%p2LUX=\LgS[tSo_DhV0L5U.=ZqL9ZsI*pL/I5l6[/!hh6D@Yg1+41D'X\_0q)&#nGDLC0:.sgTui1f47rG;A/V?>3E5J'CZiP* %GiBD#SrI2oMlUW_)Qu#6,]dl!)+b"c>?fM$hKNVL;0ug=5ZOTN'/U_B=-"C]U;O&&)1B7mHA9]s=&n-g=UJB^Q0hKtXZi>hlf,W9 %+*Z)!Y?#F:QoElg9/"ObtQi6I`(Y#O'LB.]-#6-HM?dG0e$XW7a7nC %jGpooGfB1%$k21@%sQpS8"Oa,qg$*"D9Em_=3^J@+">@!gpqfS_i2lZA3:BFd:q1/T.f$5Vb$F8/'%C3rGe`%]n^Oe:]"nENr;I$ %AS8H]IHBPX27*1gat/%J*)5.2)u.P?br^)_;@B/*q!mFu1Iq1X>;N1QlIqn$aTgQO9Q3ZRQ^STNi)pQIbQ;[Mn#N;Qrh$iO[Yg?D %B/=\#\6.EaTPr6u?,:ZBm-mXNu/`*Rh^,p+P>1P[AoT2#R+Yu;7CF!1te/`1Q!`q8bPD9WnYQB!S %;M;Pol0'mCYt"g8:?Lak6:\ojYZ^5C=7lm6>O/q5#rIktfPM#!`_as:R@4.=H4hG-+k@])a[=-X>_X@6q$79hL8/D-AcW#sYbjh/ %-;b)98-'tD#8gWH636+7.5A%nXpH+:l&)B%$;')DZ;0/f0TXda=?N)4h>T&*0s!VA,h4_%*8Q %'T8k'cO2;hDWl5f3mU?R"*#MP+*;ljEFtb0+=.RV4bP3Pd'LOH(/Jc5qLFrOhfUo:^bqOL"@KB7UW(@^-j]-l3f?i20t7Kp=%!a. %2e#>bd`j% %A"jNK<$);eK[aVPH5dtuCaXsI^^__&i#j4/(33Be#Js"_4)$L"_R"(l/d0Cn*B+SJ[h-S-:3BQ8Y=1HK8dl+9*7FJL!Fm4n?_&n?)b[FjK.cVS\K %/@&qRB50hI;j530Z>35PU/IPUBJ!@te\BD0PasG,/NGenfE-.*r`G,>0gn&AaZFRj&&.=d\RRL(;Bf8Pfbg92IcKpi#(X.,\/)7+`4L&>'rqfS_>!%nDpk&@-m*3+#aWl!i0F %_&15`6:41Z6p9*[)0Gul!^!,?JQ+IG`M#A^3f>L7AcX(%U'V^Jj"_ARWeY)^V%=72e)ZSpjW;A#^lT?)75Q8d63n]SNh.[jL5,-I %!SejPTdW1o\6@8i,j*KSWD&Ld(;T@4bTeNhCPa8S!Dk2fm/[h1H=e1HTd`oj$R;'mmF2804ORaHP$Y#8f9le%d.`nVkHoT6\kd/gM=>cQaMurP1DEiXGa!B"HdSWC^CRO %rJbZ+A8T6RHl.12Rjj=e`,!_2=[tLW.B'oM[P!?7,:VI^oHPj3on %`+G#llm.`2>*9_[L**b;i0rdf;@6Bo%,'n3EOV!BLkd6,D$O=O%)kL.N^E@AZR?Dt;(\Rp5UG4HXZPNVW+;nofFmm\29c?9/)$B] %%Q[,S/2]s].\:@\>%u3_aC\%a-HNR%DP++R!8:%5Bh*\QVEU59EEPfhc/:,-LH;/f)%ai!`+3#8W2pNd2jmL3nj:tP>&;Ii*Z8KZ %"5.Q9WtU-&M'N8eBgN#%(;aP7X:"tkhb>9(AMT__cRT7$X;s71E6g`>6Gin=KecrH,@ULe]1:f:4K`$n-e"nfo2e4\0a<;T:)]4Sd %7Nr5N#RK\#`jU["j.&LR_K-"/,'h20#bsHNF:l)XVrGWUUo$T%--[]($BdS#g(8-E_p%42*.D;-/.9Wm4Pd>#2uoTW*f*9ULhBjC %W8:JI"=)e2KMhsXJ=)[bL!+ZFAGU&H1cN5Z#DA-R-O+`2B)i'A&c[B'M8^'T)jo8'/pFV\g"BhJP6>M<2P\0#pPg_r>i:FsFg*Zt %\K2AlCEV@_Ri2?D#e+HZaX63pBKceM'G,m#6?s6r"!ZVR:XVU=]<_5g!jT);P31ugXUL)XXCOHHLjS?I9qV+Z,+_T9Hkr\/ehAK" %\4e7_:%]pkBE>Wl_6*qB$m*5`+i&YNblKWDk?HWhg8,K)X]Ze6:(nV`95PGqkLge[, %Hmc4A`ZKf>JiJ(1e'hqZ1/,(:N7=+;*E7A\e:fE#Ld%Gd(!f@s<(Gi*LS48A*tCOOY0/I,R)oh/S2g)VUTLu;&>V`HL9f"R%^G:" %;a']7P8+n'G0HOGd:UAPVF,Fb_r[sZhDEGp*ITkuW::+?#plUC_si)2,!d3L-hAmR0lH>;_T2C.&scqfE26%Qk'4``\/aO>6HKj# %=>#pMKk.a+fJ`?Lg3f\'hn`j2@ER0X[fdHVP_27ED(YV'K$\WR3jHm0.,BlV]tu,PHAggN^M(EaQ=K3PZ"rklA*/chJu\.MH-B$g=HfV/#Y;ZBAQ`_MfA@Kp(7#2*WLlWLP:b],h;_kNE?<`07!O""Ak@3LkZ\`dr'8)+.`Z+HZb],!jn0;ej_jI6JW@02f6e8@F^, %UDZ$F@BP`IJduR93/VMCAekoe>d=\gf9G;>L:4eL+A3P)=87`i#"5'/Ps %2.6!^OVGZH3ZXJRTq(L+jZT,'8Z8&I:uX)=QIa^6in-4Mc\jnoQGpD)pHum=$o7Cfh!)bT.e&'XOg_Jk@UCVs",Acr1XV8Hog9@! %$#X79AqqL6/,i.J7iI!X__)L-LMB/_Ke/(C-i"@MW#cXY+#4*<(\/S\hQHb9-Hli0@R9UU"k#E.+N/1HaN*T5F %WZDHanH1:"Tct)0J1li`4OEnYG*O.&be.Wp].2d=L1M>f)]1P,L,Hp(cplR;!NNY5Rq*r#F>0#UX4[h2Ncdgo7]q(ci[PE?7KR*W %88b000WG57)Nu@&noR$g;+qS>6)4UY4Ib@6q3X'5e5WTr67p5;CuFecJm0LlcIPtOO;JTn\"-t`j4s`+Bd!R.B1qY%%+9;+UX,4o %6UqlW!<]VVd5=W.pdF@sX>Q+[]!5Assc$GD,W('(NU8'7%[9\Y&2A1g=CQ>FYj#-))b9$A>qEG3ETVn,uE+ %Deb_dQ]>E_2iqk]>RF2(*\k#%b%rhWH:EN4(.C2B-OUB\:=prW-%6D4\L!+\-CCHRLa.g%,l0P0/)bI[cS6D%,q)UGaPl/4SBo8M %U!m;O>MUuA^P!eF!#5'ffGQZ?nB`R-=#h-Dib_3L8t:NH3d`m86=V4%Mo3)(W0KVmUD7cM9OqRYr.F)6Ym"Z0@MJ$(UroCLcDN5Q %.2bH&Fn?&%BGR+YN[MeEgK6I3'S?NNp/5lr_UfCABe\$l+8_Nmk=l3>Yh>-SodTSQG\m>s=fFue$4M$4jDMB`>D]6&g4a&q8B&S_ %FB0_B-;X["&NRH!5u(Zm1?-7nHAO1UC&HXE3X:lt+t%;:$c".WI0(=6^(@rH=mX*7XZHUNc8(=>[`N=>VGle-`B&Nk;mEtn9q%q% %!!Vsq_6U'umb"dYqpnb/F_oU&FjkAJg/i4I^2_c%m1]6[qLH3ZKNPp'hE,RXn\6fqMGp+Ieu=)P<_\KPDqr'`b3e(.0oN^LOM9"2 %%T3K;66qr#ANHip:cP+_0Sl"d!]F!ZNu:Ak=:AjQK_#3/d&oq[*97ejl$V<<):`B_2M1-H][7$W'EI;;gSL%pGdM*+g]i\P30(^/ %U-!FLl3+pci!("b$_)8A!!IjH&Lu01SLTt=:L>n__bhRd[buEM:6R1oZ4lc-+*`W]U3/'\/6%SkLj"tTPDU%<1&rAOWY!kaWuK''>[)0#anR&>Dl)FZ_EKY]Iu$b\oW#GB-f?Yn %SN/hT$9nXN,hTrt!Wk(6Z-4BdRJeE:i]bo=&0^:Xs.a044GW)4%,T9>+p_/a5^siUK]'te8'Y6+:qA>-q:%UD@j\FR_$*gfHd7lt %q4A0\FA36bCrr6'HsGo-!FKQtRWlImfQb_X5g$ubA0!1n";jj6X%7P]4 %b6q%H^We][E^9A#@Nl)"Uu6NToE!I?EgT9]^^RY!_u_&;i^hAu9M($]2=r-A)$bD[!p'#?i()!-A=9Di#:8tuCnb]sM_'thlA3$B %`Foc[9JD0P-d]t!q,;S/ic,ZG[5Y[XH5YOWDkod>g&fiPr#0@op4.KD]clkLn_Ak6f^GrQ.&K]4AF?pBM?_K[aLE=LP6[^[%_/a#44^A;Y'9f_p&`j?l %MRc78A;S?P@dHR18VF0U9a.nsSMC*"o[10.88;c>d3M>M"l+e^I<7Yn,?Q+NZo3.tM8Lna8co %Zdb.+B4eC#UC2`1n6)t"P!c)uEZ)bd)aD3UJX;>05cP2V$re6&VFAh]23[fe8C+>;@U_e74^uJH)^`B!'k0["s!Y8k87g6G"k0L= %9D9.0&LV/6n3`P^Q-><@"0"=`ji[CX9t'^oQ97)D!Bd09lIjoVVUl8 %[=m'[O<[u]+H-D*RD=J16]\_)kiDeS!EFi`F4r`g>ZgI-0WfDjaf2Dcd%phB!9./0M0S;Q!.l5q)2YRpB`j9e=8F=M2&G;n7*&2& %&:)6[O%EkV&;!NN+@M!.;SnU[e"M%8lBGhj\HK/^pBqub^pgOY-"&r?`3D#Fb8+q-d,O\7Z'7saPUn7A"sFbZ0O)q-0r=`4Q-+Q/ %]o3GjPsH;oWdmD*R)nI@S?8VfY\9@+M-;#kp=MG26%tU:X2S@::=WD9!==b %(sb#o.=bJNT'b&*&Mfm.eGEe(%BX,YY?Y)1(> %O[3g9!gJg/Z-F*1_9tuL'<)+4g>osD]99^:ej1o$a6:+?FBulZ-oPgHb!`4mH1J7.L-UU-d=taG$#2`[JHgHhGVM7E@EbjKG?&&_ %moH!trl^h&mK-Ml]l`6''kpIMGh"LiUgV#93dcS# %$/uK=D5%heA<%JlI6nn4W`W#rsOjoU#_p1he$/gWL# %O_?;u5pe?PC^An`BN'QqJX@rX7qE`18eusKUs4Q[p/7a^LPucu8@0g"a:Y4BedW4&nPEF6E[j5rVF[As^O062Lt@F7(f;%ZZSb@m %0`R<\&SC"[!W?TjX8(Q9b3U3\W_O.r;ej/-7iK^a[SG.k_6SLZQHqY!cP#'Ql$^ %#[*<0B6[l(V&;=WH-E$.5*^p.""(U!."uFKHBLAu*X,jMI+G!F'2X?m&E$]BXH7\8,$BRFCu3(7=V")d-"/`g`[IGOW1'<=fOKHr %%Mp9$2.9$$LGpKY%P$d!+;,;i6l%jP=kXf-6h8u!U8\[Y1NpBn7DL>OLug!=>70MC*(W+-$fO[c8]Vg?cWc\TQprn@ge\rA+VB;A %cbB(:/=9Z]9YnN2aqP(s5k;XR8-,DtKig(($Xhd1jR5tl=`N0j'1`Kid,b+DA+u]hQl,'fOcX8Yh#V!k*H^hm3lW,nD!MpL_=8]D %6c]A`JWN]d!s_X5R&s^&`IQU.)"\,E(SMq^Mfeq0j;2rbOZ:qVe.AjEbOHWVTm-)Mj8),W^Yr[l2KS?i.4hXMV::qfe;:c[Ys&F7T+!(T[ %%+mUC*43g*[gi%J9WKa1l6p7Zk"RM#9!Gc@nOAO8K#EW4J.+@g=VVoNTl$S"!kN_Q6YUCpR#4,bDR'4k[Cq:9e.e:tlM,rt?MVA-VgBe1VaM@EO"@k,/0NXb%:rSjj`FiG6,FJId,#no-*8,</^hS? %@)kV:ep\;cJDQ#bB'^?UU[#(%3_V!\fb17mJS!'CJRmCI$h!52D!]mg]h:H=Oa5#l3E%(i0j-C7#Ebq]'`bB:>3A&4IYIT.Q3BJO`#b.bWE]7UO22JchB$/L[jM&4:iK-XL<8/)kLNf=]HRq94s(RA+q\n>V12 %;?4+!Q6>0g?-Ln0W0(eUHUO(Uo"_*=#0_j_U]W/n!CRA"Rri-KBUjlK!`I`3)7E)1B&YO#(H5;?74SBCbmW/gM^PkuW9t:S*&2e> %g(mND7Je!leJTp9sXkH1Qi'h\%K8fZJQ%U^h#bHF8&"'7>pTC-+S@>GW!5-??l[EsB8)+>m7!/Duhcp[*u]Z;]tJ@h[j"p88:E*6i]0i'j'l]@]pT"0^D %`RVaTT^FR@*WcWCVWqY$$()Kaoqj^($K=D:"gfQ&MWPK7Ja2U/DIg*\q$CMdRjrj_OCo!'q?UW%_,c4VG+(U"8'?NMoEqkU5`DTo %K-!]aeC;\O>tP'J4U=V!id]qk'J,4!VLH,7AiHIC%pmUDrP>GW.u>q %=qGHO"F-AoCJ"K/J5PQ>R$]!an0,,QEsYMC+X7bk1,?o2n_An.'<+EY5M7C-:-Pl!!VJr_'=N!2+Ii7KL %V8Zlc@g>Qe4M92PC!i&?b16u1*b\;K*?&'(;@3E6H&RU1N@%+^AE%%/BCUNgI$YLD?OA)3.ndkBVGB^MWtp5+?&I`rN@l'WH0eud %1XO+i@7s]dLbagO/Nf@g`&s1@!!X?*;mLMt(5Qoa4bFITq#l(rkli!k_hr"B23m_lT#:c;-Y8;]'F8b"m2ZQ9PE1oLUjWBUIZAb` %bb)eN5FBHd89?tIfJ,36R5,7I'1hs*FpA)FKN!baNhRMNA!IIIeOpUl$&(PL1#s\70Zh09_S8K6$pb]6#Zum@I3?7#fek$>%-i`J %%An+On9e %T_)'t&cnAW;)YSRBg4BMCITs1Csdqd`OK$M-CCe'fIu=ie:%G;0N"<1#P@!5c.22o>2hp/drt([VTGAt3u8"Y]-5L&m",THflZ6) %K_cV;1*k".Xc$VEI"m1;)tc'YQ;Y4OU1"3g(jSPl,*`n'qb/C1?71tK5>_L&Qha%`8j&+Z)hdl!&8On4#2n^q&N=$"c/**tK^V:& %""X[D47i7E-k$Ka?/1PXSI(J6$NP&?qtOFKAKDLTZbf#eQraKHU(d*g:?9DI@6-*tr/-(s:=^R[gGdQ`D1f(ojE;IQ&(3HCke;6"OR&nLj]%<]*=;jpSqNKT>a<#jQ_s937D`NrV_[0T&B5ACM4e_`dRHL3%QC%!.@M9fJg9)e,gd:C$>4M82OR7:U,*q()3u55.foE37j^2!"9Fk?'0\P-8c!cSgA4)A %Qt.T'BQ7M'9))Z>Qbj.tl6'29/sfU(.[bEPPHA]638:HQSo#hpL--ER@a\"8O%iocJ5I3.dL(If.D`jZ?/frZ1,07=ZkHRa/rC1E %p^!WSU0/Mn+,@36V$4i'ejE>DNb,O"g5!$Gb_Mp`>_/;&h#mQ_D6a&lDMoKCqua?%kg-VU&&du@qdp?82_F:5SrR"c&F^M,"rUuj %BeQ;$4eS"O8;7Q>]1?uPO(P+_iX2)C'I[^,/dk"j]p#8@Fa5)r3!^L\b.`en1kDmLQfC(7*_(B:aID^3RNdW+>&-tM2f%GOT5a%6 %,gsaiNuW56:.cpp4C79/[2HWXSco)*gO^bjD/8(ma;)c%EOA'^io,jS>F=R( %%bZfL-/-a6[Ob4IVJ.V\F;"umWH=A6"2qtiN1JK]EVgkUEKI/Zmqa'idQFM:D)UqmE$2I]"hn$L?FXB74pfP#,W %6Yh,%O!tJXY5LWW!NH>1'BVq?ms"oBlp?O8#@j$`!$P:F28gp*F#IP:1h@?[e5')B0":QE-)#/n3e`*D3kR*/&eCK9V.*51R3m_geeM\NtaKW#(,F83t3LS0Te]%+^i_uV^.[t*M %EAj*BZO"Zg4IRFi*q@#Zj&/#c>&nk:jFCg[_D:edT&Mo+U6/pf,g3)WhUBD@nZ2"I/1m)RVCQKFPTmU\tFBBP!@r==4(r#p=hn %dHAT^-=Kg%V8WrY!Tg4(6OKC5fVM#4(.JYu+-A+A8;T[O/ePOGe_]CuJEX`[N+:!/P6gN:k#kF_BM2h1,Rl;1T+noR@jEeP0R$D` %g7Tpr8bgr$#N#RkH&9:%(*@Qm8^*Ppaq%H'*5n(EYC+t*dJC3V#H(J\Hee:J)?F'&]l]A_]6Krf6ZT3Qr6.D\_1^PCpn5SM-5aZ" %'Y%sK#j`4Bj[mh.)4-DYj![&$UC@$]$o@U(!8SM#8K`F:*ZH<(LF%_U!iMc^$,KJ1HI84=h:7pThCBp)q'h %=X3=1c"uWlBT3Z+%2da=3SYi2VO5lD;Nk9fe%ujV+2DZS.QO^DGT,:O\mc6(U>cN^0-m+i"k-==,Hii=+gpHGhIs-eR;C=s=1?Ba@3D?P&t`dh %Z=95*$6>-44WCKo"uLK@V;#(_FTIe0RT*;mh`-4YDcKMZq`Y=)&DdnRr!$F!GK0=>TRER*p/SMLA^k/`'F#eR2NBa4P2b %\75'6M8CO;C:Uk9;CG!98HOC)W4N<"uN] %n4/P#N'W1g4p1rP,!7T6RF1"Gi36p_5EN)T5:r,:Ll"G+P^/rV0CF^rc,N1`!q?_na>?SMip1j*.`Xm8V/2BHH^,.0i5D#RYRm[c %J0c(9Fb#18@X3f,!#LhBhpA-Zi4t%mi1`R5)A(O<&o=o]-8J#k^D%@P/`L59*qJ_g;F3gVP`XB&]r49R^(kJuaO:Q)Rp?5>0Kd/qM.n/#V'j#l#SO"4S1)1mH< %gsH0^':S8"i']t.M)W.9Dki+j326Tuf7u4l@#Q*C_hbf6S/Fb6EY34KM=VIdO]Wf6!0g._oo\3#+f5W.jAW]fPsf_$*%iO:E/C85 %,WV^;G16@VA3JlnVGb'oT&deCq@_S:.j.Yses';$?Vl+0838W54GdGZKKE_tVo=!+KK+Hp=;8oV_I1t$08r42Ug3a2-E?U5HPkrV %_Zg:c8,0;(MT8Kk+gTiHOU>A5+kQgZ40td$AY.C_o2;h1A3o^D$!S5bO22YcM %.!uhqOO/]]DUG1jSt`&c@0@6"'])Zg@q;Es71tJ(,6_e9n(P%"3UOT.i@2^f!Q-5m]g5snmE6krm]L.:;s"W$ZOgVlKr4O,:9P7CTI'g-\"O1JGb(?9nbHKoWZ %ICX$Y4pF:@Ihdlr@D0'.^Fme:bg.0m0ueI(oe'qWH^q_%^osm1JbN`58&p=HBVH;r7TW]K60gk#"V']c>eDd7)4"/hTUd\M(JDUj %,kFQo(1_FhgiY*L=Sdt8];(le_1;i.Pt=i#:<6FT`2"9eT-Y:OND#O('@DV#_.PonZYj*&t'NR[>5RHOW#cMdYGb20YU-X%(JR=.RU%33WpuU.9st/PFY$3Ti*JZ:*JOH)4,4k %9do9,o!P!L#pU#q;f4=5%Jb$+Tn5:8?kfWT,ta;MR)SiFC/f[!l\H1c_7Haf%PF8-N7XZ>RVf:EX,nZ`!q>t7@'Cofr(tINO2lM, %6<:mPN04atNu6fRMtRqKN"$6J7?PcQ0eqkDk]BKD45U3"mN!)eO,KkOeLGD%]fo%1(X^RT!ZV0#bnRs('hD>EFZB`[C^"'U")eR_ %j[!91-?R?E64`ib$shFR=4^X$n\Aahi%dfu6FV9Aj%Ob2:%69>1#;uM5=BN0s%pAr0IfP7Lt>?9Ub7>A!BMi6ha1Toq+P9HldKK4K),AN(e_!8J.udD"/%Rr9\"$<6Q9o,sZ_YNrm`Lj=Z+M"3AI!dQN/$8ke^h/lBJh@-*9]g(4@sQ?P0K&l67R=q>O3i2b2C %_P25e.]g^]%Lu`3H&F7j/C^5FDAA;\`8de&.(l3C\qieV\t;ls]qN=CEM:sSOM(Xt7SQErQh`t8qDF)pqn5UXU2/$2Xr$[62jpis %o2-XG5=Tp0aqp*(-%(p;h__2LnE3O7KC,i_T%m`$A"@m_ZPkp/QoQs33Tgi1!0]*dkN#tcR-A]JigAhPdMH)q(Q3"K)0%:\cETJ_okD_aMePAsF;CTjaidWO> %e7;bkQ+qQ^"MTCgJn?K[4$cjACM0JR5FSPteYj,b)B@*\m*3]H+\_EE^m&'h?W2.0#[P^lJ'QFP+:WXSMbO^_EYm&l1NX'Q$RE;[ %%LA&DY[YLH5nFaRP:9T\r"L9kAFALtn5$`2!?n.n+88WJc%)oPr@$!n-@Otl&=02cK[J\T2k851FJ>"F_3u/*>IM9H_VbF.jI6HK %F->+P7kFqK4QGqg^;i*d3)-,5;7d(r*4sgWp8M1s#TOHonVp6:m8JE0E\Z' %K@AlQgo]5W+7/o;0H^KEIh^WW1LCS-grt\R,;7:d]lB@*rYXQNJ!<2#qhAnHW9H %CTPone^Jm8WMkKp2m^A13FU=QW:4a4kfs5L@hj[4OFtMgnp_k=peJB=)N^N!,!4ddG(k9cb7#^+5=8V%[H]PH0Z,Zp?S@N?#/q\W %]*=p>XC_h']@,16..7:(7*o&ka+GD&Tg@J_!'"nVkEX4'#;`Gu8se/GYuO'Oj%^QuX0dUAm6Bob&`UjA"\e5?t!WOAe4:mc=, %dpm89U+1GF7pU?jFdl'/kVZQ"h[.=,;fI&?PLX]rr8N4#)-)3eH40R@4*=nu_DJ&fFMTLj!k8eA7m*^M($j!A8JFKWJ!d3+pdEHJ %i+')scX[)1oWX`N%=PhOJ,VH2Z-%97bLL.=('1;4%Vu5Tl[hKn1Are)4:T%+/D8_UP@ZrNiWoJt-Zo]5LtE.g6>")QJqTHM"o!N1 %M+%(=/5n]3X?EH^WU.q"+N+ao:+& %XI\g*i'Z,r3s1C2r=HhSa%V`DLY=I%r>uXVWm$-;jr#Qls)o$js/+K>Vfh]H,R'0`nRr%Tmn%bUi0EoKQ)+AFlYmGpC_qro<&iU? %!b\7BBj[ji2qgrNUUSY-n3D`^!)Nid_;\62LfNmt:fb=Y!d%NpXb=+!MC:daVXoA=5n>\4+Ho?S+#)It&'KV/bQS!58s3V]t`S'Ih+X=]@]ZVci,hKjR.\IUd),*h78W=A'Tc*N`7bIXC>?hSlSl^0l.Jn)Q\4,87C3S9:":(SUbTpOb8.T %^+JEb)f+5k/bEo@m3gDhq6p;J](KuTA!biTb/UT1qQGm,[l3rN.rk*H^l3b0Mu+O]6ba?d#ub"c6=\[S]`fA.\\8]#asAqEoe3=Z %+.i*.rhY&C'\Z(WYQ=()_87e'G*7D\g?Kb6E6FgPNV;aIno#b!s&7Lp/*>H(nU#pomc'o="U7o^(i&'f`9`tY[RJDdKtJcf[T?+N %DMH%D]7uHgGil(*S;\B>%lsHd$"R"*+i?>W+DjLi.4Y`CeWIrB2D2f$qgEp?^A1hNa'^A$$_>+k['mr0JDc`/erlT2_SoFR=QbD>Gp9Q*+9Zp36&srB5h%K!cSlS4,s,J)HU<3XST6 %4e[@a6N:U)L$(Wj7o=jC7Ao.b$P!-2(Q(Um=>LI>'J8'QTj.:(J"q_gW#L<>;]09Vi^0F?k_8Rh)ARGFFJ2o,@fLTZNJe0u;-cX! %r>FG[2dC%U+2(LBl6_0?MUlRMd,[E;U&9otA+5A%M]GOjUDJeIVn%4F&f@Ph=m>AeGl$/#j-#9-ITE=M`&oM6,n>3""Z/j&;_apW %(VY^q$1[R5X:1/-2%]%Qllp?;Ij[u'[-j"NaJlp]M>9Y1Q\9u_aWP"0?p[LP]B0,@b"cf/.fOj^+NkVamJYF@S[7F%E(=9C@h80A6epZ+VM^MF<'.A'.NkTl%3((:ogkcItGEa)IW&- %BQPX[+[WL<]S;i38qr>7Tp0ro],7("Ck>q.+8SK>`^gM/Po6?C.OE*]hoq%AblF-\Qs^?Z8bYH6+7mguKl<\P<4g[1<(OeT=8n+T %iF`dar[%BtN>DJ\&=n=E63!;8n*6_KQ4E)m;^MJ4f.YjAeS5171U@4*/hEkuB(S;+(Ab4kQ8"4])37<30Yrtb=:27Hqtgg<]$cOk %.9G')1K:'e=_4JJojWq?S`uRSn[.@9W\G89V\)mad2UuHT1l'\ %omWrNQIIhNMg#u`20o#ihd=DZ]R*i]Hd`+EV]K3`eJXDGh0!!&,o6LnMn_HiidZqi"K>K[KaL8BWhi$5pqQC;^EhdI+:7;IT-X>F %g@\g`No]W[6)N*tMpcDri[2PLE^'I5C9tBYXCjpL%8G5l&sogFf%#^Vh`!(b@l!Z'AQNl/7o0;\,^'4B;1L7aDQtL1i>>?L,WO9q,8mtA9lC@?AHirko %[:1oTVVT[JOH]+c[CiTM!Ho3J!]5a':UmrlG']`t_:o\a.WE'SE%`85%c,T'?a1ABB09>'MMEku$U>I]H/Tnu[_-'=!/VQW1!Mqs %AI&..?oW^2UuEJ)GW>j;F=4C0$r5hQ#fagODSYc\#p]&c3ugcD"=T$>[V2n$NX-`T.%-Asj7!a@5^MPsd_(8t]Bg5C7\Dr1%S#rj %5+.8&7GpFMS7ht8cbn@'D?B8BA#(P"j_cU,S-phQV?A=Mrg/@b&"`?DA"a),?6`RGf2N00N#_o^EaY^p,BaW`$c@;]ggi6J_^f_/ %q0W*@A&GRs_Csk(RIu,4fBSFDJ@p%GJZi9V7bgk*cO^L4V+t02o&jQ_3>LGlplu,'Vjj+DS;'@p0N/6="u)#;4PmqeKVcfORGKT0 %"8"&1A-1:-J7+IiS"HdrUtNV'K2J!c*)6"g3H.?R+]p?VV0042AedBEN5E;[8m3aF'*qHG/O')'tFN&PsC0&M%?7 %Nu7fef74=4`fh]pa'7lVRIE:l;da47dkm>9BWYE\$FXk6iPB-[LUOJ;b:OhO4c%F]T1c1"6_s1RcZsf>>!d[9a1^^Qa?A\ %bMmSS6g4a1$_f^"GNYp_7ReEIhL[1hRYs8h,E6clbX.Ig8 %6"cc/a"krpc,cs^N;r'4dDq/dWGDu-/MKh8!m=nEQ;G.8pg3Oql=:<7'-J=tBofJ3obXir$YHbS323UqVXQB,&LKmfnI=G)2p:js %a@=J+([-Ql_RaYn8$1m+'@G4eHa,$tXM*TD;jQW'Z)N=BHRdK5&'RF-TH55F;E\$!C%70N%hu,lp+>fHnVtV_2'47B[P1SKQ,nD3 %?PmfpYlW1>2.%g-F](#U^lL>p.(Q_'A7_EMoKt&&Y/"A_=,=o^4qO=N=KD4'a^6otR]p+t$0&_Rmj+b]ZX)f9@_:>)A6p5^a's'` %)'N:L:;pcQigHdC#Dp@Hi^P(TmV1abgGd_1J20A_p^_tJZN.c>O2L0%0+nO_HS?A%4,HETh8dAgn51D`8\q.*.uV/7\_(o8j<\L3 %7[0V45i,M`o`gO#3ocV`d9[KG/f.eog_s^B.BTo>QmNmdI'M>>";`Lm7=eZ$<&jYGTo6eF%p/F>BH)^k4So5SXlB2Is3.?]cl`>g %JGrcOB"Hmhn,Hc,0nBd3Jl+i0HAr9Y_7-*Xcj+MG!5N#f6i;-U5]8T45@>fM5fjcL9dYAi,l[Ktr0:+"aDLe6a`P>'F.nQtD&!M2 %mK/3cB$D9Ki%)Qk/a3uP9cCXgRBlMpL %MW%)cR#8uZr;J=INh^U//6>3Z;S`J^=',/k%1_T?1:8^Y<+MZ+<*(MHl-ApM"C("st._,NOeqTY.XEE-='`K`M6=&]5?(24A\\FpoKeDO/R/1EUJ$&aO6aQCF]TFjUF'%f03)@%D0. %5AOnG0Ng3Fa`Og(LfunVMo;Cl;GMsN,P./+O!6Su-RT7EQ7YV>eWm(M:Vr&m3#YO12\!qDY\^;+J7[K,Nf!(kWDOJG8$OF7#4-.* %(Dq$FE/K>pd5Hhh:H=c_]""3Q2H-S!$fD502C!$[ZWSq?CZd8OX_Yeuaj+*+eQ\9PTjt*@Y1V:WiX8Adrus'U-_M3\B#2VmUa)9c %rgX(QIK:c#9n<@PH(LZBHS\S/pnBbD3:nat@>k\t;i&e>m8W:6RNiuM$\5kipk/qK_/^1F@G<:FAecOjJ:C+)i2h!,<9V/B'se9s[K+*u-tq %.Zdfc*4U:=%0K1RZd/Qd:5,i^>lDms)@Qjo%_uT)g@W0MQ5?4;>DRcqln:5a;RJ.%HL.<@/V]HV/9cM&,N49"c %.k)@M/SlgPU(%s3MYFL1BpDg'/?UZ&bS4OP$GFLM.B..nhHF59.U+B0\"Ng7N[haM.3bB@'@I(S=h^3J?V'<)+`>)tK"OZKX30Xp %1%Y3-``@Q/FcAf=>-6:YW,K26pFVg6#m(*;5X\S9+9,skP[tA1n"@L+3S7Fj=BY=D?`4ipV?&f=jp`)I=@IE[g`C#^QI&Mq/n,#: %!GbUIH,NP\;.$uCk"F+C7)Lj;alcFIQ1RI>RLfb7"m2"/U %M(uXiD,gE8f;d.+JnlJHLb^UN"Mm!sIXc6Y)#6)5Bj[)Yn77Ms`_>(D+,'%$->3Wg/\$qqQY@D4*uoie9pU^f`#Qm,/$Ro(Ym`b% %lkm-7E%kSN!c.[3/h"i34[/ebXKBPoQ]&8nZ%4K<@Y_u[J;Y3&!Gp/QXCoaTb9DpLUK&uurZd#l$Zc`Cg@YUGZWY0H]:+]@8$7r#58$oDhS]>PQM0FV>ID(@Ds %6n3$&BgW[:1\B%*M.1&.Lh7t%GV5>'uTAQE->cE %6Uihe_5rQbf[qWgAeqD4d7K%ETf@D*7N;sK\J5L!j,=c_>HU.;90bN#T2sGO$3rm#VLEq0Md?hu%Z8fYFtV.?e7^j\1q!FMF\6)r<%X]'%Mq_@B7Xi3'[(E>F,FCIdAF"4&Mu%kBbZp\DdK$>-L-NA:Ba&o*1ceJ1[E;RajbtkMVm2b %fK[3%bGLe1Cg708eReX%-r?H+1G,JZ_`721i8Y_d.CnbFe94b]5rcUYh5N %Vl#s,0u*'B;uMtE@&guL"&&EcD,=t2Z2mPl,rm*O(@stE$q"WHi5?RdbeDU/2/9]GYQn[27Z#.)K%BiJnfQpP'1k]1gu]ri.qi4m %D@5Sh@7u:?GuJ9\U4rXn2,bf,VOL,4JQ$5Tc;,[->e@WYCLNA<5N&`S0*AulnGToU53nAfC@AdIQ-%,:bM-m3g,:h1LnEe&0r&W( %7oHb.[89q(NGZm*#pD*PjsN9ZRqT]K;rf[4'afOC7-()>Vd/r;+IA&[HmI+#J;*RB9j?TP,SH/3q?$,28P'[m$nTCf+'p]%0p+h[ %HC2ncAQ"][Gr[acZ(Vh\%])odki?;MqcsKuD9Kf@@.CcY6(8N??Js$"\ODQ^f9ots-c[`f(;d'sZ'._S`?Pc7N*HZjXts %-($X>#@'R=CU.i"trK`BHPHf)TlAHh+IVn.%:BqP6?OYT_8eQcX %V@Rd(V&T\m'.1)g'af'$Wk$>_/QrK^8@$5B\nQkL@3Ymjo,oX"-cY)K/IW-D_VhXM$kD%.i33Q@Xa??G3+CQCK=b*E`l]LJ:M_.l %=G+9KfGN0`02AcK2((fKYT;d6gHf0"#^N93+-moY@kV[,HYH^:9A@_9IjMo-)K,Ud'*mA9cAohi]@AXpQ\OY`C#&dn\@G6jaGc3?=*8ZAT'ApbC8P[4jikj %pTm7864G\dg-%qj1UYbB=FRGlNlj!3';^!:42:6:4*i&HUmeMtp5*ihJnnIO!O8AI=SM&aG;tDEdZ*g+o3j*We^#6OLJ':kCL=/%nhZ&jIsUqK?%[SY2T=V!pk7\%` %mk(m?8$)m-3DDAuZ?L`$gG?/](7T\R!'q!6o1)O1@/(*EZjobPRHE"_h\#:A?Rl.Tna46Z"HFkq#`puJa?`XV3PF52Vq %_l[T2LKj'ofq=t4Hf=TODU?prs!hD1BPd$DNk-MnW5G`ACXi7J3sgt:fKo8SYL3<\jg:$ePUbiLZa`:ADD5mSs'X,t:[nFFG$h6> %n@F;q[,O,,UbCTYfKh%IcLjfp?0uUWS$P-q1o&r,:H.i$V7g9`J6s?3N5D>fS]V=UD&aR1#*$T6DbHik %hmf$C]PT?9QAI!3#IMCN)-0#!oClIa6)t5&:Z`NZk_\V:[6J8A21pLecO\b]GgF)6Ap)n%^8rRq`TDT$C*\^4c(d,]^("G\M.\Ui6d)Lr&T0#m,62>?$cK$X4I,l6Ic_M %)@h(f)mma?ijVT($jNO0g6L6]*Z<4qBG=mWM9eK`eS*;RF`mVF_@KiI8nUAulW`_KXiqC80*Z3OmpEB&#\>^R;h/VrH2$f\?<5bF %Vamp\*Y`QJH.`"hq8dO%f!tP41E*Veh-Vd1n:T::DMS+lS38mOY4[6hZ"H&[rEEiOD)CGceN(Aqb(GQkR32.fXRu5?I!NO':]c8=K%`SuGtYdVKD$Kqc(T-e %]oR$CTUP(a6=Q`oLq%hkk=%0,l7%mG0ne!n5L6HII747U0andRat8[0@R6M!C4Uu0+9Ym:pI(i)i^!4+)#Mug2`*u`H %FF#L@3pk%&cEse2>b)7@$c*M$g\-!U32_-Cp"r)fdc?\(6K#?RABXZ:oqa>\\"VtDGC#RT*^Is7GQ_mZ]Uq)Yqc46\qr(g2f5A2^ %Ld^@Y=+b1CiL\i=r*je#5BF?Ne&N\$kL+J#FcD3FlhE5&]DTY&NluqPg2d#H#&T^iah*+RCB,(H/@YbJD_\q'fH'(BO]E+=]&3\E %l/FLJO@ThS-@QqXM0e8VZM_.[B!RgN]iVl9mDm/A*R8\`i[[:CrR>0Kkd5>1A<0B$FRGe_o-?X7hp0'IK\BJL]Hq<:Q7b:B/_^:` %XESX\.CXB.%9jmc:L":N*om-nCB;"Kin!und,Vr)P'J9ckJ!?h0a)9KmmEu/-g:*!edIMVG5JUd@/]Y^`j,NMMUK=;4rmrh\3UM+PO7@Nrd$k](SA]pc\]*0k(K)+KQ?YRU:K-lL6!a>@A9*$. %-E+:$(f$,A?_0)2e&1TCoXagXRiJ/go(9M37+81V`(;:WC$n28A:C<<-*&M+0n`j,epMKo[YE\b9r[#]+8BIm*PX/V#,a^a.W;2@9_5+^c&,rom4J5T:r5Fq2)&hGB=VuQDP:oKBGN,UfidPFbdMX&k86Uf5$N=;/&>2[2DF\P %*P&)Y]DYYV'i97ff$q[(9?GqMd-5]QbBMMs>_#Zo1Q/G"F@Guo?r5q'Ah^Q=BZq7Jr#YnL3hWfK>gTppGg_nNAJCi#Tr_Qi;.3Hi %bA]!2J0UuL^D^eiCK4*tbLYb$WAL/P02fb`%l:b+_o]a&#h*"?9FkP[_FgNBMkna@2faE-mMdbqr,Kn5QabdYQ4&qX](p@eG';nZ %DbF%ABX2M7.ZG<6iXn:Dq`NDc?Q_)s5'`HogbjWEFQc2DKTFEX)Os>mlDc:2^.')!IO]qt!=I7"5B%HO93cpG1nFl?f(mW/<(#[KQ?YD[h"9'^i99-FTLlq.M1;8+GQWHi[C7;._G\V %((;'I?kF8kkY@>[OWhJ)r7,Ar%6NXIVn_Q^]U[SN[:kShK)XdT?.<:N\XK2&0rs65nWioK#q8on2(b/QRC#*WC&G"k1k6FGgT:jC'@'\HWOWs %.)PSM_?kMPi9PMS>5D.b44ue[\uN-056_gmIi]>W[s*;Sh2b#0?/9KU9bM[sN[L6QZ)SiehbV"*,a4H2nP1T %,qenZEY7thg,kVH!=imRisN0]?YF/ZL9m)B(TMm$n*bR0;?shjQP>R*@qT/3*7%9[6lN"W,+o9P=2f^<%P"d6l>W5M>pMg1f^?o\ %_JjPr:#>"LhWpPf.4?3SlXS#`be[0L4.t*E0E@JN'!**Mp/[95=\@AU(%XKr)jKuC"J,3'O`F#?``?Y*ecNm&d2jfSK_#^aXjDn, %L-qYVi-0[!:8CUQ*_d*^cABUIRIXUJQ07U&XLi\d)i1&ea@MAf:$EsG?A8LE:he0kBo[pHZE5A3eHS"0maB[NGRlHV;FGV\?qP>W %dFhT:fLA4#W/;1e:$cAQL>C"N>u.q=[jRbPimebP^T;bW_DkCu(,%>UntNGp%Jiqs#"M>n!Q3kC=2IhA&-e\4n3mF/?SaX7 %.4$9pCL1&,D^Vh"YgE-h?L72n(\MgLNa[=!2_S8 %qKaicP0/u%3@X?0,FsuehhREDZ!0S2/7+oKm@OdLYqj6K]ZhCjl9k3scY+SGR>sG;%$0g7NjhVj7[IF^'ogGPKeoV,jrN!p7sI'a %b&\_8LPVc7[@WE?Q#Mb],d'"_dgNu-3PTK>OmTjtfXr8@$TuPA6b&hrk)lfBD'8p11dApS7i6-<='"+jNFQ:c@iU+5%T;_QH6i13 %C&:ie(rl=?qISZuWjLoaN6^B/@!-G_gY[!08NO.lNcmsjgO`tQrkNfaoG(R&LbWX0H.+:e3Y&W&g*m#ZO=!(*"Q:R9G=Y:k2#4ar %A+aP%i$:uCoo&kP?shiCCG?BGi#F=2KS7k>%\B"mkULOD5.uAC=IMJDIj5jnf,&Z^AkEA^Al4+i;6";.eRu*GH-M;\02L@?I>C-XUf3uHn)(Tdph&=XEN6qNB\$F:q,R"9#ic>ft/r*'Oa=;&TF %r@U*#-:-JE8g@Z37bX>c-pcL>/B)B*F!OD^p"@YU]NH-joRZ64MJBjYYUs"TaJUDhreFb%s00T#c?koR5]Uk>K9K8%93Wtu]Ge<^ %oB)O[%C;s*Y!=W1l3^dl8j_P07B5\EO$D@fO!&gNL8i`-P]%!]8=\aETNf3\Q.@m;UcjE:?7BuN9aAi!i&0?Pf_kI/joYYNW7(?;Kj\C2DH5]2nar8S-Uo2ML(lU:S<",cYqrfmFgr1PL\6D1))UVqn:M(FL&+.p?$8$@ %*-bggI(jE.:F>B4f_8[nGf>R8Fej;3pJu,);3cdjTA7N,%0EiCR!09T?AJFljC$ %aVeeaNC+_NXV4\C-O2)Z/n+'-!W5BF_H#)tf%X$3)Fq_k3Fk._HC<,$Wi/(nNPbp&N&Vr+A1>\c)tB4>a@D\eU)"#oZbA.(D$p?< %GY>BEDk_bm.fdF`";'k2J_rF0R_U\B$p,+&i[A!^5<#4d.!H.7fISXj%][!`8*(0G:iGl+rb)P %J.9KP#%I:S1AFCekXZl)lr[jdK-S#2Y:,nRU$%tW;H?X-``=6mL`(O^bk5E"l/d+r4MST!_W^o`^N4]U0dOFd;0Y(*)l4A(,E>VH %8DPa?],pCi$2%[\Q9o@+1K,XFLj*6mDOJm]?jU-qQsYnARr@H726K[kC);`T\G9D(;!c7R$_ %0WJeAM0blL(HqNgp:aWF!OB]'O`I**2AV3H3-AhG@4;_(8W>nf1(#A:Z#mm,oQS..4YO@39;hPuWIGS.Q?Cu#dr72EHOkMmJ(`DS#jY7uj %=M[q8kL1cHU[aRblc=gEdQ7SgVPLFE8s:Hn.g/e6FZ/itYL]oe*0eglU^NU,gW),h[T/`bjj:N]c-'jt%:X:dXd*jh,\Y&3EY,+i %IVH2b>EdN\hEPc;Tr*"P:XC0tF%GW6=ljRU?e-:Y$4Fj3-'KDU>/d$-bc-SU$H9`c#@f,*9F3#hjWUqe?Z$b*XGhrHPA"ZnkTo.c#j6Dg,@.Dj %>P1BARCS'K&FANL>](G"N.[MPdel_)#q_E/:j@5o9[>%GCC[ZBlu.V4$i3&W'M/ia@0l'ChIC+QOq&G@gmAsOkcbgZo1"t(:Ng\c %:2*NTFDY#(!7'>bgIdTOIs2Sm8LB*s,==a3dt5QVdkh_q5u0'EQV'kq;WE`NAFB'l705@%"ZT^ED)%XOak] %g/*0o\'B<023(hsN'OPfT`4/WmRsirbA3_Q/SH7AmZK.(7?Lid0ZTmt!F(kq3!n7nZhHp+1T+d,AspNJ@ESXeZ/*o-6cmLuCfs\^ %dOKZj9=Cq.OJ)7-*O00fmqP@X-P_t:AI)@iTC4jh^>B!%I+WT>Z#I8#Q*gp"?edl)M&coi_0aJ@U-.Q!%iLI;R7QeossLnX3^H>`+DH$EWq/)_T(7V93J]/n%s=5m?T7F3;W^Q^K[j+i;5XkP%hg:]G\iI0!\0"R^elY %po*1&k#b.j=TDG!kYa1okW*1u;A:r_:7FdiBWl1'7FcQ+LFpq&%5+[#GS1aSbr7;U2O^.:9-V'JRP]SC7@(j'h*ok_rq*TZ/QFEdMlLXUn<.'VD2g%C>)4i3-;I]E?W1e] %Db5h6fScc3j"8#m;)JQ.L,XP8$m%>4+KX6b<%O7*J1PY`m,0YcL]OG1SQJkuYY]\kd^+/ajY97PZO)f$N?G[+dE3Rl>J*gZQc0^3ak6kW);.U--B:t$0,1!M/P!G %l.H3VL3tN#f'1ijak9:)_KRflNK^]XX(ne0cR&Xg;1,[/oPB-?Cti8nIr\#>CkC_aFk"Z:l.K9.b[q'U %ATG60Gp,^?-K*;^_F`G)^=5hJMRM>)4^1,s9\fEPe$B?:lbAjZD4R3!N4"CUA[R)A`%/f,hN@6O`ms9RhO[H5X)<*)2UQs4`+e7$ %KLqA;763T$G@t,Kg@+1lCmcO.DpR9d2cP!6'3EWZf%o"=$.^YgRRj7%/_BK0oJ'Jl(X#3gPXUT(r@RA^p?p5Gf'4Lb+IO?>?<:R: %bD[Yu?NS.hKq887k;($d.^e\(A":=A[tBWZIBMd0A;hHpCmQ%"4/d*hO>0L6iUD13j3!aiT?A'!\^B@4)<23bJ>:q2N9_^EINi9, %b-8c1)t,7d>g=$Y&0A2q1<-f:_p2T.\2hKNPq`d/PIJl/,0^tVqHeXu@iUt@^[mD(nlc1RaV\)lV>XB5\681^mP;e!eK3L,A)-R^ %XIWs^mj9^0.V%7'?ICbf`cX$*5E[b8!urQ,(jD'_hf!%aX)RFG1-n1 %gEL/*41/tI1WCF<(LDSufFVsQ-V.tI7`Msc]f`pO(cTJiIE&eQr,,MW+RGp8]?;%HGAuU%V0AC`cJOc\rR`^nN,^G'q3d1]LUAF; %#8uP7Kq\63D^F3`@slJR:c:,L9e7PObSUT5\@`\2=5hMD`jdTpI-Z`29T=iMa;@Db6he4*)bFW6'/IQJDYt7D]?M/tCQWYWIkG4NlP\B$`jk@Q+Z:igOYMmUq@'R;hc7\+FS6*Y %`6W"R>=@36-tD%5rNWI\`XV3oR:hKEiFJ*+%WfPH*S`lE*A6N0K0!L#nBEKCNA(fhH?mo\[5E[%)'Ec,) %lu7pmo0_3i>+m[\!GbAM-S4H",hLZ>b;SRmS7 %Yf#R*r'5G8$k.n;5&Ho4Y05f&OmI%mpp':"LF],*IP*]eTCr*qg#6NtMS%%A\+9%V-9GJX%C_/%rDn*O&]Aj^*A6N0P=,n!RiQAX %4h0P=E1,;cfc35>*A.Ft;cdD*g#6s*P/I6>g#7[$fkGW>S/\WMZ!Css)p9qIbRV[5Z/'&JS*\<.Zbtn[nD3MjdFI(1fG>K.GFN8n %hp)^u2]F"5mjpP*hJDBhs/G@(X";QPA;@4-Yoh.!-`X44%I;DS;c"t1#/\6BIUkltKYoBr8Bb2r$[hOVYP'ULXVm`/;0>rs]S'9B %A8[HnnA+laM/EG+mniCdAigK#f%%Uq=p3K5.N>49+^s9?!aK2j%ehS*-]E3,m:lV>gr!n/5a0!#6NA%I0JIe..QEA(J8c3i]PaQA#dD3c85-tc %C1NM)(-+o;8MV7+Cp:5Rh!T(m'mR"T>Q6=!H_UV7'"W_/?0\a9n,6OJ=^LknB"*HHdlY,co`@R0Im7fj9aMKuNN:Q$!%1E$P<*68 %cfHkgd=TL+hn1"1ZAtrJh'2%LFj\"9[(P0Lar>8ONL\o%ZkZuWfqrjioSQhke<.'2FOU#PD,G^]C`bq7ZdML_\l %iosHfGdk7uQ['f)nDGE_`?o',L+"\3_@6%eG>TrDcWXBliGGW1TWE;9mVpB&pVlZ/=ar_#p5!_47dtY<%V`5"*>'39Lsif8)4eG; %Xgqk#,l;Iq35]6oA6R-AMB7c*4A_*9AT\u1Jf_2-WQ2R%WDO;P*S*Q_]e:)(8HSVJ+?:BKhIR>\1GmnQo.0kB+K[doPacuhCZoOE %DO!D/^G*u.;FmIg^;B3mD![P-B,dRaZK0/BRFAlr\+\7i]*92i%Mfh&\*01P]7Hr6A %JOCs*fc753\[PQgb;>u]nEsIhY8L/dG?X#:cI#t3#NP]DmqpUu1/Gh(ZYR<]UqnHI$*3T!hfQSlo`98d--TTNWb<.X=L^DL3"mb" %AXK\l,PMEQa)%!!@.l)57VoU[ZXjMZ8][3i^WbB:%K=624cic'EGX=$%LLd9dW7pqQ;QLSD[/0:#W>&YXP\HLbI`TWIJN)8Bl[j! %C`0*W"1Gjp.[kb9\g^jlKk"2M"We*)ZItfA]49#FM^!8Tq@2+5R,]3DC8PF_`bTk(B$8,\X0S&```WXL\i\6?o@Lmlk50)PNqn.X %6X!='Xn!a+Ut6K%A?]RFIW$hpX'\YB$%]W6:1j/<(4m;_,.,6)P[#n8Bc^In>YmrK %3XBI=FMDZneC@F7`?]lLXOtM3>Ad_p(o=C!F(DTBc9oP0[@#-I^p^J@79^I2:nR\=M4NOa2CUF6(iNQ<#*%g.:6R9%Pb*M8I2u,:gC38N?hmb6bY7!G!U8io^C5I*A2EW8#3JEWP6':oVUW_3>jB5W./)-6T[\HE2)m5$ %b.3O&>Vd(5V[k#CX&ptipT;HCcsjmPgdb@&R6!N]3dBG$e^e&.Y'_2Blb:Bf#Hc:#dJZ(DeW8AQ1(\BS^YTTqKDI"nq0kK@A6Z%_ %olKfl^-s\.LTPQ;1;0`AXu?#m'sHffXl/f"FCQCOZ\C+hFL[[Oa6]79[ld/#(HHI%/_EM59c]0KhT'sBhO!e=H-X,6B(^9@rUr'< %SXf%dgj-Ki3e"&5\\e03W@u_]AuRP.IR]UWSMF3u?X-NpS*MfL:!NjrApaf]jm'p:h$Z^;WH>;N5<;+[jC!D^V*Lc(plS7?(G>=. %7+6pS\%t\kD(l3,m;TZuf9\Z/&8g9V %#KMVfLW2V81X3NNXieW1H`M<.9c[QZ_5d(/>W^FsLC*Nghe=LcJWi`;1G>r\ie>EoNc)o*2Q>,Qif.0%0(u8`o6EQeGfd81g?e_\ %RpNh!BIrt07UCM.r5hqme[T9fUslB[F2/S1"o1tSgu>S`\WYW-'qVR($KLnU([T];2$`iLU[%$aNU'dVpZ%V2`oS:l4MZ7ZpTGm0 %s/P\KncY=C=QSNDrfM1(Efl),&3>2mgN;QbbaZp2?U'p0i/$K4gWrBd*gKWr36'VC4$BT#, %LAc4P_j=+B5KuqJYXdabEYZSirD!.2(O:UWE/>nPcms'4/m[9\b:`g3\btT<\rP>k4*hn`C?Yk,C9\fm< %l5oC10/'@4nF_6,eW8lagmfPn(VV@8fYCEL)Ol'c$Aa'*i%Brj[6\q"kYB4r%+"p"D%B)2q$A+Ml?gb]?LEM()#LPM([Xq1o')P)14 %iV1L:d_h=,^$-__\(q=2Hoh6Xq'M0gpjV2a9fJpD?k)hkquH@oS&=iUsc4b\:Vad0uTS%VFU6Q4#!k*VoZ$dUB9ded1d4FJ8?)0f@T+Cs*YfCYt_(KJ?qt(lQ(MGR3^Sj3Z^L5'i4`\(e %:0\,A>"I$@SM%Ap#>E,*:17//G3NAhSfB"?BNQ,ikG6<#(Ojank%rBJqt:jQG+DO %-L&WfEX6!u?nK6H";<2hPJpJ>?$ZDtp"H70g_lbuq7HD(Zb/f_%?[tsA08Grl0!Em1OSI#R7QuVQ@9_4VnlRZd"5T:#ffPm!9^,R %ZA1SmaXtLka+=LB^DM>\Po(j63_S#?$QcTTebdZD=.'*b_>Dq;#&jBIoN!R8(Ef8t!G`R4gM]?ccCJETfsJUI%Z&UU+K]hmg!!pV %c/5Uj:kTkp\O#CNY7GG8_"a*^1OKS4+W)5d3M7[tO6I+@Ed1OJ5Fs(]GRM%6#m\f>"R\Pba9%J0ZH9F6%njXBHUXmX8.1D_"+=je"W=0[NnSF7J2i?s-;m=.:PR5]CZkJ&pTG_3U^Ec;J(9!(Zp:NZVPWrV\b[ %JkXd[]:CR89E!2?'Tdic!BAR3YpaQ.r/ZC+BD2t'T^kFIhMuN+^k.l1Zp8k!;G`1XV(8`8R.+#-/!l.MKVkTs=@'DD*\\mT$q-l( %EB]I:*q4h\q?&."X:',h]9d;>ZQJ,l7n9&_)?jN^JE3GLEVsnY\mUj3WNVp!>T88Z'n(G?4n1`PT?BZQgo')&kI2h0ZKL^g;X1YB %2^MfoaCbkCh8RS8H_gR%3#J@FLX0X!!&A=4"Q-^edrPIK_qoYdq>Ste-W#_R]iEb?R&#.CM>M&HrA/q.AD]>,jgXo-RSB.)N:^T* %i^$QseT2W`^Fm2)fFNGd6HCHH9`Z4('t+M72. %lkM0,*o@@th/$)7*Oc+@$[B#=`GbtR4I4(/rU^3YnKS!)1]:eYq.`n"NF*dd$%,5YVo%L>*We)qB9V6teOdLS\9QqWC*YT!!&X7- %RS@.=VXc[*jTLArl,2!UkB_0Y"]XJQfT=6OB?L:)FCbLMZ-Q;fG8c'-p4;9[]VH.ZbFS/1b@,31QcJ@m/pFp/p3%BjJ7CNl^_mb= %iPt&RiZFl*9)S0NdpZW:Q\j1^Uk<]\27=h;"'/b-0,!SdD6sWTdW7EuX?DID7Z?rA8!))?T4V!Z?C]oU-,;a)Vt@n.4tB>6aSaa`'j!!)8bk-j %]5.:BK"Ko"S/G"XY9S=0#Uac&_J>f3^$TI]X2"dSI'r%I?F58mEt't?>[u>'PmdQF!jqhe_BTjL9MY1Cm%Chon>g4R0!:'J^>o0> %ZkL_PeW\.`l(XD1T#Zf9ah'u3D)#AQ8#lsi?,"1?-2TL"-8W>mfjj*,ftp-lRA\j=6/VSY-`!%Y_8 %\1WD6^HP#XJjH`6@g5X6*&IUFH40+Mid4e.oU2=No/Q?#6SI5ZJ1U>[&.EAHB#*j7"@E2<2;ZD&A\c8YOQnZ]n$_b&N2bf?9Y**UduCgidK9JgN-r)#b-5*MS<)PE %cILl[m?L2+6+76Rp;[olG3T(1^PJ<$.UG/AY34ZJ@Rl<5ndE0 %LnrNaOSR5kMo583;.4]M3<3^5;r\>%m>LX#4E+K#"$([N\X1QG4q&1+\(YpJg?hLZ %g%9o0Oq/hKO^Nr9-7@D`e[*)560j#WKY(P55f`#@iT[iQeR%+fIH',u4(sbhogQ0LB@upb,M@Ki*[JT97m6kE9j%CEHn0n_)s);Qtr1`,OiCr2!6i\iV>5j5*o;lMZ1-E83joo6m:\g`7)Edt]kbT29lN %*cgl;nWu*.I/^JO_=@4R5oJl;TT2,OG]W8!TGZ0n[pcAi"^-fl_jAjCl\kL/d>tq#ZHh#\+'sjR+?2NGCjGEo`25am/t>i.E9;mL!n&lC-%"3BfO7PQ#F,gQ#Ef='%PaBOH?c&O\^fmYWIo1Y*9o6bFLlDumf'VqXt"iKeU'")p?`j>.A\=q %guRM+\<$B=5\C:[\8+859)a#6'RI[J"nqcO%31*)YJS^,c+I*=T?6eJ^6ATh7O6mOK*Ro=H-MnJjKH2<:S7JVA@I6U!-B9ULk"UX %Oge2R^7OAQbK%p1^sJQ6P_OnA&<6CLS8Fj4`S,.:Y>hH-j(E%L;%n^H!JDQA:]0IKGAMAIBeKu,a[[OWS.`k*hYj3uOn^ss8+X;) %r?cM:gF?Ibk&+kt#'j4%/5En=L:QK.-4J-bqR=tMR/[R"I %rYQ_>Q6$8IIbs#`RW*Z(6?q4)Qi&<$CGnQ9UUp`ia88+E3_L^M$&2lmaX>;Oa?nmt&\J83q@&fP?cfF$)qj2iNP2Z\&(eACk28MK %i<;(*1Ri*\)h:g^QEbSmJ??IH-:b;f"O*r5U!m$ZDf.Yio^^PUgR(Ebat7Yb.,:ZGJWl]iVp^Bg+l=gMoEFE(J\uC5ojt_$CDZDn %q.Xk6.@nF@GjakMbj;DR\l$W+r&!Q=M*GYAaEB&g/P(TUTgR1&X]l5$GnY;'?Lq(RJ7kFb\QiG$Y<&omT^n?^+*]-IW!=@cZR:qG %?YU0=Q5]4q-Umb(FtXpI:E'SP;D])JamM$XJadtEL*k?'Ra]i]47P-dmkO8d0B%=\\NjSbCE2uMG\L(-!cRF%6\\o'R)WKQQQj_MBahnH-B:73Ro4]3HH\]#Zp>^*JKOOiZAo:5D^&Rik6F %B4'$EE.WHV%QEk4#WGu(Eq]0_P8k\_^_/\Zm)hBt<8?TV"Edag*=![c81,F/OqPs]%'isr-9j$DVmF2\&6-pc,[S$%\9US:XnH^1 %*/=%5>g$J]!'%O/68h>]R"4UlTu'$6&N^GXreUb2;5G1d-UWDJY9R%/q>Nu@m.mFGOl+)V:(cOuKcX(<%15o"+]LXs!J9C(FXR7J %,f`\Pa(L9=8/_a'cKB=W#WSRIfR3=Rg>ptu`NdM`N]\VBfjEp;Z-cJC:8MEn<3OAl>^V.b1;!oM'sAn'KmJ1:Q#@B#a$TRZmKmpp %G!cbbE!`4ZG>,>fEO)7Q6-ATVa4IGBIWBFN"m*!Os+2l5^Ij.NfaJiaqR.5M8dX%\?4O=/@#fqs`h4aDd>cSPZ$CYGY'i38D0s=9 %+&6d/"?2-d8j3mEq>('9*/R'5k"J6C8S@711M+*9DDI[)SUO)K&^&X;qJJK!PW>%HZi=/E(]DU;SZeSuB.2@]!!WsI<.?W16$'NX %s3Vq2Ob%P?&ugp+ldUBBcQ3,OL79@)4N0*,(m4%`q`\3J]W,Vg]J@2#kiL^*R^nr<:;:>bl2,"2J$:@:$e=DVEF5'd$m17o?n+&] %En\_4Qe*&,bLGf.=Zu!PbDXF)]u+.8SfarkA%C>HTB8oG\G:sKAgG>%Q?c\2K]LG6di@b/ntg:_Mk&#EiEc=A=,jt%'7$$"5M*t" %"d@QrhfI9B*jio!nK-c'f.n"(>V=At;g;cpKm`0QpK!r.KX@uIHf.>Q[1h?MOP?G#P4g.c94-,@O@iB$ %6:gua+#4-%9RTL5HfjWjUM/$tbuPThphK8NE2kr05ITg"FWU.Cd'G="/i@ %"k8&i5(6]bS(8[384\0'\2aim1;*0)[Re7``]02ImXU2)nn5L)h^_GT`t`COa$&tU8J!?;ap%IQgm.!;CI"9"'^^-DO#Ko=*Fo_4 %-Q"&Q?VVpS*%8b4c5+TYhI\rphcu(SJAS;l4_JCmA2s")Ps)O1>A8/]K[A(2[YEi\Ykue6/nu3iSck((W3j(k&>RWCJYr.j9SeeFED2GFlL$VE."G!bJ8bE %&OOWJR$m$!'nYUT02'I*N^EP$s!,a)W$5]*p^;>h/u&?1FYj(B_q7/ST.5KE?X/$[1FM)!%I?8r<4'@(KspAkjWFu)>5jdaa=;A=qH<)t(Z*9l"GOu"B2%e["7U0.e"kQVr<]pQY>=:>P`t.5.[fADl'iR?NkVj5`LCbf%b6D %Tj'2CJccc;=M.]T0^Y-u8(YFKcjKe*tqru@?;YKR8kh"Ic?aK?'$&V`8g1j!A+@NQ9)$=:Mq:,%S2#Bl\p\AnET[9g`hCaTS"m4p1npo;Kp:Q]a9H1#J=kD(4cOb,h[;/IHP\dXeOHcSC,Ilo&F9O.dY*odV %Q%AYDf7KJS5VK9oe#9k1-i%:c=:YLJ6=\^m@;GmkEf %HhI\5Vls6bh58g!67[a5%6!4b$s1$LGBR:I>U`@0$Erkgj2ItFa\BldVUfj[Gp\AC]6W[:hL"4)@19KiSi[Y4cnOMHMO8'Tb %2ZR1"X1ErRNgASmmq6u49dtP\0k+#pfQ#t+o0fV]dlnHaejV-WOX&)s[m8j&Hk"$L&"kqZ&'MNGCaFA"qK1hA6iinNb!CT^+t %IOCr-+Ar9tFKf=9,n/,pJbUNn4F/;L$.*40@Ipl(lae %p"#7TifjG'm5-*OIURQraU$=\jN-iW^V$&VF.2+fX!Yt^'4Qiti&5R]ni=`234+uW`H`=jH1==#<,l5YO+5cdbi8&/)p8Y*T3.9p %5[f+nTkI708:;[[Z/7gH(F(R*/ofrh\i$52n(9lqRDNc%gV-hOe0(OmbJXQp4W/B(Zk$=!Yfn\[CDKA8)MVgHBBFd-O;raY]$3MU %YGCD^?;&m,g,$GRop9m=+EZdQjB@VIF[#_Pomq?DT;Q[7#e_GR\N46\"meF].Y-`;cr:2$Z6fQ2qf\t@CfqDOXMmq7J1YO<38CsB %!r04)$/fdWWX>tA9`TuZ2Q?gp=VCd]&oCSOfWliS(skTO'k#4R!0FtJW!]b?9`SjZ[8@[S[p;].LYGj0J1YO<5\b#..Y)HLRK/FN %g8G@_APE0?`U$P-fWlh(8rt=%$F&X56D7]5WW68S";&idBiT[8CBD;g#WA[appR40!;=C5.KG4F.^C/^)Et24]*+W,i#N%FG3n`o %^aog5Pb)bm>[I)Kl4#7+iHmsl^3HLirM@@-HLnpCaR_\[#(!aZY)U:Yot<\("aT`Fi@]++AAZVas,EJ0'SC&TE&inppl6oI)C_nLuUtj*]&i %k;8>!0^L]V4;G*_f2Ie`4WFJFa>_XL\LX^C*'m5pZeiQGBHc)(&^!&q)FjF>&[i#>L.[4/$,s %bB%oi!ep-[l$G.p=ZlaKeD?!7."AC*3h2kAd,OPn)C^"cEs])J,!S<;VFr't:%Q&>_/U'i=%/0>VjD8X-oILQg#&/-^RAi7!"uiB_=O[+AHQ45=bJ*4IOq %qWl74c>^OgC&$oNWd\#"3n$jh6!MJ4s\Re+Ct9L$=Uf^,p&RF"pBfX>ZQe14;-Y+L?dSG3fX=bc+.dYnZIC'm@MFF,9U&7nT1R:3F-2%@GEe-,D(#CM8!N\]rZ. %!YXW8_LUF5[+QE+4hG1d&[PVTbeuF:O0I0cqpY:qgt0FM`S``igf@X1@570e^XQj1YoP(;6j-&P@qdtJAN%fmH\OoG233Ws:a*7Xq/QP#W[.q+?S7B-"Sfd[M98]pnBDHCr)a*_TV7C=YbY8:Ki^5tQ:(6EJ0M8u2npAE]0@W&QUsq64Ok&A< %I]nTc,G++I?cH/:O!XYTXojr.7P.:U6.XuD"\YF(#M?8)]D<-5+tEJhW6`m1*L/CS@_-(I&dl2Z&:kI7YDd:\7\n=mSHa89c1jg$ %76sOhU`mnYQmHSgE')e'U%r/#XeJ]k$$2"Glik3hUeI$"G)WlIFeFh9-SNKDY3[tf8A9`ohO\m!$)&)V`&i/^Egf-k\*GUG/^I'Kf[_I\NHGOM %2o[T\*#s:e,)"cL.g?)RCgLX4U.,feJ=@=tfSM$,TT7qXapq+oR:&IpoC/;-XMUZ/20VH2"9a9-dI4\UE<`6,@GIbAP#\Mh32/Z^ %Uu0hZf7q[p0P37cgDPn]eWr(@/k&p>7[B_4Qqa1ml\JF*Qe,'mf>=#fQOSGCh0sA$%m2RQEJr;ToCa?7RojWH#<^r&X6k'mejgE49#iD_Z)_I %7L",!Ih451L5KX,Iu@,?G25S]E3*0U`fMe#A0cM2<\tk-_qseG8(dD;0V#^3!(.,0-Mu-i$lq:FBKJ[/BsG>R%*7-'#&*6$]P^#p %DX>ZP+o4*=JAJ1l"2)!^$21hUQb.I>4MC`'qT%L,+&FOV$%qtW/L*bD[J]I`rVbime(aaA0<8hgb<<'Zk^8Z\&A9#N"hBD;<<^%; %+>FEl,U#j])4F*Y+J,IgXdT2fo][mmUV.:g?6NSc!_M#L,oIA6T3qt(Y,Bnun[XIX$*%]mfkPpU?O0hE?>%iR2]aqW6CC:5C.SK*DRGi4_[h0ULa8ceB/LXbi'k2YYo,H,JmF&#p!q %aJ!`dQDtmuS[o;?Es5@g5ZEg#t-8r:GJk6W#CUNKAdI`+c@LG?]WW1cQ8r %9t4J>DQus`D'_[tV;UL8E=mZYgr.@_J1Nd@^W!%9ZRQ@*e(DNQ+7?"%s1\;R %R6Eai?&#k`l`q26ZcR2E7T*r:#Zr6WY1S$8P[%>01$Q/:--eM,KcA'4<.KQ6>9L^*5q8r30\Y;:V<\LhaCAm^GJg]nKo/nnJOm$c %U"Ku20&Im!aLJ6nS]oR1aj$ldB&jV".R*)M2G<(l%i,VG1f+8]qaX%Gj5sP]N0`$Ar`"FokY;&ef68d%*PAg7#jFK9' %)?tUY?O3CRS\g[",a7fqB7t+j?12l2JckTKoF,LTWV897]V5/;25B+a6td#t0L4]"HlI*cI1GsY3oQej[V5V?W1>jMSCjpsZH]Yj %"'bJ8f_n**SMuPK30h]h)M>M=;:<@:O[l`B?"h+1j+2O`iNASSlTFMr_SD%s%_TY4c(MfLga6k-Tlm);:14JZN^RrC-^HIjGb1TH %E>?Q]mhuOUegc<0VN##/#I"Y3ar&$)&]bo.aq$fW;d(;,XnOb_=QP^MdO.#5dZq##Q'n!V3TFB?VZKZ#tc3+uDHg %#KjO`*OiK*=bnDt"T"#[53Hto[RI:#[AR]83h^?J.%8H$Ps)OfjNsDCFX`"!1(6Vc.o`<4cSh\,^Tc3E+G^D[Y]XaJ099$3-hpnQOMeEsBMXFrn`7M-O4 %]2JX>gaL8r/Lh4jd+g#q7I`Ce@S3-GHlK3;62TJWJKR%&Dj,+Y-N]PaPsnEuX5aSB#>PXAspAW-03dd5J7_kD6Z %_h,I98*EX,ZKZ*=U5>`FUdCn/R#Ba"A@U9aHka6)P6&-@OYYZ`!njQ*kgrC,e %&4qY3^f;qn7=-;o(%)>IRX.ccYgI`\M`psahHT!3'3L*nP')KHW,[.*>sI^p8edK/1ou'TYPrFc6"0_i5K$g'o"&>KmLN(GR1fnT %7inhRr97Qj0ouF9/TABPhbfp&C]@V]Gut<;cCqTq%/Lj0l-C0cGDOt:<3khL*TJt,TU,HW>BW(QT1#4bQl2Co57AB9G-]MmQl&ak %=^'Eak@#BW=9VEZ=I3gJ1$19.F=E''04/-52i_qQ#I^.PWS%;87Cdo07B3H#n<)l7Y*b07S>[q;M>D %FF*uOk,6CEoC0Q/Q]Lnpe,-&dVpCE"(X*\VrultGlge,\^A7@B:B(Ec;,P[~> %AI9_PrivateDataEnd MM*}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}})}}}})}}~}}}}T}}SY}}}}T/}}/)}}}}~}}}}T}//}}}}/)}}Y)Z}}}})/}}S}}}}T~}})Y~Z~Y~Z~Y~Z~Y~Z~Y~Z~Y~}}})~)))))))))))~}})/~S}}}})~)))))))))))~}}S~~)))))Y}}}~)Z)))))))))))~}}Z~Z}}}Z)Z)))))))))))~}}~~))))))Z}}}T)~)))))))))))~}}Z~S}}}/)~)))))))))))~}}~~)))))Y}}}T)Z)))))))))))~}}/~Z}}}/)Z)))))))))))~}})~))))))Z}}}~)Z~)))))))))))~}}~S}}Z)T~)))))))))))~}}S)Z~)))))Y}}})Z)))))))))))~}S/~ZZ}}}))ZZ)))))))))))~~)~}})~Y~Z~Y~Z~Y~~Z~Y~Z~Y~Z~~))))))Z~)Z}}~))~)))))))~~)))))))~~)))))))))))~Z)))~}Z~)//~S~S}}}))))))~T)))))))))))~T)))))))))))~~)))))))))))~Z)))))T}Y))))ZY)))))))SS))))))T~)))))Y~))))}}}T))))))~/))))))))))))))T))))))))))))))TZ)))))))))))~~)))))))T}S)/S~Z~/}}~)))))))~/))))))))))))))))))))))))))))))))TZ)))))))))))~~)))))))))T}Y~Z~Y~Z~Y~Z~YY~)))Y/)))))))))))))))))~))))))Z~)))))/}}~)))))))Z~))))))))~/))))))))))))))))))/))))))))))))))))))~)))))))))))~Z)))))))))))T}~~/SZ~S~)~}}}~)))))))Z/)))~)))))))))))))))))))))))))))))))))))))))))))))T~)))))))))))~Z))))))))))))))Z}~)))~~))Z)))))))))))))))))))))))~)))))Y~)))))))~}}}Z)))))))~Z)))))T))))))))))))))))))))))))))))))))))))))))))))))~Z)))))))))))~~))))))))))))))))~}~~/~Z~~}}Z)))))))~T)))))))))))))))))))))))))))))))))))))))))))))))))))))Z)))))))))))~~))))))))))))))))))~}}~)))~)))~))))))))))))))))))))))))Z~))))))Z/)))))))))~}}~)))))))Z)))))))~)))))))))))))))))))))))))))))))))))))))))))))))~~)))))))))))~~))))))))))))))))))Z}~~~S~SSSS}}~)))))))Z)))))))/))))))))))))))))))))))))))))))))))))))))))))))))~)))))))))))~/))))))))))))))))))/}~)))~)))))))))))/~Y~/))))))))TZ~Y)))))))~)))))Y~))))))))T}}~Z)))))))~))))))))))))))))))TT)))))))))))))))~~)))))))))))))Z)))))))))))~~))))))))))))))))))/}~~~S/~~Z)/~}}~))Z)))))))~~/)))T~~Z~~~)))))))~~Z~~~Z))))))))))T))))))))))))))~))))))))))))Z)))))))))))~~)))))))))))))))))/}S))~)))~/)))~))))))YZ)))))Y)))))))Z))))))~))))))ZY)))))))))S}}/))))~)))))))Z~)))))))T)))))))))))))~~))))))))))~))))))))))))~))))))))))))~)))))))))))~~/)))))))))))))))))/}~S~~SZS/~~S/}}}/))))))~)))))))ZT)))))))))T)))))))))))))~~)))))))))~Z))))))))))))))))))))))))~)))))))))))~~)))))))))))))))}T)))~))))))))~)))))))ZY)))))Y~)))))))))))~)))))Y~))))))))}}}/))))))))Z)))))))))))))))))))))))))))))))~~)))))))))~))))))))))))T)))))))))))Z)))))))))))~T))))))))))))}/~~SZ~)S~ZZ}}}/))))))))))Z))))))))))))))))))~)))))))))))))~T)))))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))))))))}S)))))T~)))))))))))))))Y)))))~)))))YY))))))~))))))ZS)))))}}~)))))))))))~~))))))))))))))))))))))))))))))))~))))))))))Z)))))))))))~~)))))))))))~)))))))))))~~)))))))))}S~~Z~ZZ~SZ}~))))))))))T~~)))))))))Z~~T)))))))))))))))))))))))))Z)))))))))))~~)))))))))))~)))))))))))~T)))))))))))}Y))))))/~)))T~))))~))))))))))~))))))ZZ)))))~)))))Y~/))))))}~))))))))))~Z)))))))TT)))))))~)))))))~)))))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))))))))))))}S~~Z~SS~Z/}})))))))))/Z))))))))))))))~)))))))~)))))))))~)))))))))))~~)))))))))))Z)))))))))))~/))))))))))))))))}))))S~)))T)))~)))Z)))))~)))))YY))))))~))))))ZZ))))))))T}})))))))Z~)))))))Z)))))))Z)))))))~)))))))))Z)))))))))))~~)))))))))))~)))))))))))~~)))))))))))))))))/}S~~~S~ZZ~S)/~}}))))))T~)))))))Z)))))))Z)))))))~)))))))))Z)))))))))))~~)))))))))))~)))))))))))~~T)))))))))))))))))/})))~~)))~))))~)))))))))~))))))ZZ)))))~)))))Y~)))))))))~}})))))))))~Z)))))))~)))))))~))))))))))))))))~)))))))))))~~)))))))))))Z)))))))))))~Z))))))))))))))))))Z/~~~~~SS~Z~S~}}T))))))))))/~Z)))))))~)))))))~))))))))))))))))~)))))))))))~~)))))))))))Z)))))))))))~~/))))))))))))))))))Z/)))))Y~)))~)))~))))))))~)))))YY))))))~))))))ZY)))))))))~}}T))))))))))T~)))))))Z)))))))Z)))))))~)))))))))Z)))))))))))~~)))))))))))~)))))))))))~T))))))))))))))))))~}S/~~~~~ZZ~S~~}}~)))))))))))~~)))))))Z)))))))Z)))))))~)))))))))Z)))))))))))~~)))))))))))~)))))))))))~Z)))))))))))))))))~}Y))))))~~)))~))))~))))S~))))~))))))ZZ)))))~)))))Y~))))))))~}~))))))))))Z)))))))~)))))))~))))))))Z~))))))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))))))))))))TZ}Z~~~/~)~SS~Z~)}~))))))))Z)))))))~)))))))~Z))))))))))~~))))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))))))))))T}Z))))~)))~)))~~)))))YY)))))~)))))YY))))))~))))))Z~))))))}}~))))))~)))))))Z)))))))Z))))))))))~))))))))Z)))))))))))~~)))))))))))~)))))))))))~Z))))))))))T~S~~~Z~ZZ~S~/}}/))))~)))))))Z)))))))Z~)))))))))TZ))))))))Z)))))))))))~~)))))))))))~)))))))))))~Z))))))))T}T)~)))~))))~)))))~))))~))))))ZZ)))))~)))))Y~))))/}/))Z)))))))~)))))))~))))))))))))))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))))T}/~~~~SS~Z~)}}~Z)))))))~)))))))~~)))))))/~~)))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))~~Y~Z~Y~Z~Y))))~)))))YY))))))~))))))Z~)Y}})))))))Z)))))))))))~~)))))))))))~)))))))))))~Z))~}~~ZZ~S~Z})))))))Z)))))))))))~~)))))))))))~)))))))))))~~})}~))T}~}})))Z}~)})))~})}})))Z}T)R}R}R}R}R}R}R}R}R~}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}R~R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}})))~}R}}}R}}}R}}}R}}}R}}}}R}}}R}}}R}}R}}}R}}}R}}}R}}}R}}}}R}}}R}}}R}}}R}}R}}}R}}}R}}}R}}}R}}R}}}R}}}R}}}R}}}R}}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}}~)))Z}Y}}}Y}}}Y}}}Y}}}Y}}}}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}Y}}}Y}}}Y}}}Y}}}Y}}Y}}}Y}}}Y}}}Y}}}Y}}}}}))R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}}Z)))T}}}R}}}R}}}R}}}R}}}R}}}R}}}R}}}R}}}R}}}}R}}}R}}}R}}}R}}}R}}}R}}}R}}}}R}}R}}}R}}}R}}}R}}}}}}R}}}R}}}R}}}R}}}R}}})R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}})))/}}}Y}}}Y}}Y}}}Y}}}Y}}}Y}}Y}}}Y}}}}Y}}}Y}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}}Y}}}Y}}}}Y}}}Y}}}Y}}}Y}}}T)YR}R}R}R}}}}R}R}R}R}}R}R}R}RR}R}R}R}}}R}R}R}R~R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R~}))))}R}}}R}}R}}}R}}}R}}}R}}}}R}}}R}R}}}R}}}R}}}R}}}}}}}R}}}R}}}R}}}R}}R}}}R}}}R}}}R}}}R}}R}}}R}}}R}}}R}}}})/R}R}R}R}R}R}R}R}R}R}RR}R}R}R}}}}R}R}R}R}}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}}})))}Y}}}Y}}}Y}}}Y}}}Y}}}}Y}}}Y}}}}Y}}}Y}Y}}}Y}}}Y}}}Y}}}Y}}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}Y}}}Y}}}Y}}}Y}}}Y}~)R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}RT)))/}}}R}}}R}}}R}}}R}}}}R}}}R}}}R}}}R}}}R}}}R}}R}}}R}}}R}}}R}}}}}R}}}R}}}R}}}R}}}}}R}}}R}}}R}}}R}}}~SR}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}RR}}}}}R}R}R}R}R}}R}R}R}RR}R}R}R}R}R}R}R}R}}}~))))}}}Y}}}Y}}}Y}}}YY}}}Y}}}Y}}}Y}}}Y}}}Y}}Y}}}Y}}Y}}}Y}}}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}}}}Y}}}Y}}}Y}}}Y}}}/))R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}}}}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}RR}R}R}R}R}})))T}R}}}R}}}}}R}}}R}}}R}}}R}}}R}}}R}}}R}}}}}R}}}R}}}}}}R}}}R}}}R}}}R}}R}}}R}}}R}}}R}}}R}}R}}}R}}}}}R}}}R}}SR}R}R}R}}R}R}R}R}RR}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}RT)))}Y}}}Y}}}}}Y}}}YY}}}Y}}}Y}}}Y}}}}Y}}}Y}}}Y}}}Y}}}Y}}}Y}}}YY}}}Y}}}Y}}}Y}}}Y}}Y}}}Y}}}}Y}}}Y}}}Y))}}}}}}}}}}}}}R}R}R}R}R}R}}}}}}}}}}))))}/))))/}))))}/))))/}/~)T)))))/TT))/}T))T))))//SS/)T))))T))))S)))S))T))))))T))))~~//SST))))))))T))))TTT))))T/)))T))))))))))T/)))))//)/SZZ/ST))))))))))))))))))~~)S)))))))T))SSTT)))))))))))))T)))))/Z)T/~T)))))))))))))/)))))TT)/T))))))))))/)T)))))))))))))T)))))T~)TS~//S)T)))))))))))))Z))))))TT))ZS)))))))~)))/~))~T)))))))))))))/)))))))ZZ)))///SZSS/~T)))))))))))))/)))))))T~~)))/T))))))~))))SYZS))~T)))))))))))))ZT))))))))~~)))))ZS~Z~ZS~ST)))))))))))))~/))))))))))/~Z~~Z~))))))/~S)))))))~))))))))~Z~Y~ZY~Z~Y~))))/~T)))))))))))))~~))))))))))))))))))))))))))))~/S~~ZT)))))))))))))~~~))))))))))))))))))~~T))))))Z~YT)))))TZ~YT)))))))))))))~Z~~~Z~~~Z~S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))~))))))))))))))))))))))))))))))))))))))Z)))))))))))~~))))))))))))))))))))))~))))))S))Z)))333333333333333333333333333333333333333333333333333333333333333333333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff""""DDDDUUUUwwww333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff""""DDDDUUUUwwww33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff""""DDDDUUUUwwww8BIMPath.kkOpkkPkPkP.P..Op...PjPj=j0jܠjܠjܠܠ0=PPܠNܠN--"-"К FըܠܠFp׊׊Fp׊׊׊׊FpnnFpnnnn--tdB{c4~EtbEtbEt_MEt_MB*_?Pa<{bgj]k8nP8pb8rsqt)uPvhw]yiy{6~ Gjl{U ۲uPwDm}{ؤǒ<ދ_ W^MO^O^jjSSN"̲zދ5R4?ߕD㕐<R{VL?,r~uvokg_kWCYOH%<9H8ERZEZL8EyB&B\p@><{<8\4 Q0k(!rQϱ܀Ҫ `l) DzA_z-RN-RNJ)NfNBNBNBBfJ)-R-RB4̤B4̤E{j+F6ԅIPK wPN P RP蠄T1RW =p X XY YmZ}\\4_pb5pdpfzh.pklţl#mOro/qqU驽t]IvؗdyT>{Ϙ~75+B̤B̤BBzGvs[rmʦ qjo̤p@o:o+ZnPXl jdh.gvxf"e>n~e?c縝c$NadjX7WYދVmv$U)G&T?Ml)S4R1OKF B4B4C~C~E2WѼH LU.LU.LUkaDLUkaDGmEmqvCu~Cu~CCED[H{='MCMCMC+MC+HphE̚CWCWEtjEtjGjJ)jLUjLUjLU^&LU^&J^AG^Et_MEt_MKgT-!uKgT-!uQL-!uW1-!u]F-!u]F-!u]F!u~]F!u~W1!u~QL!u~KgT!u~KgT!u~KgTQKgTQPQTuQY^QY^QY^FY^FUFS2CFA4P5I$OK"MENKgTPKgTPLUdaLUdaLdaLdaMCdaMCdaMC^&MC^&L^&L^&LU^&LU^&MCMCP(SKzWeKzWeKzWe\We\VD\Uu\U-\T \S.|]DRb]_Pz]N\4MC^&MC^&WetWetY-t\(t^|tbQtbߗTdeH.(j_1 ^lk V^m* Kq&rwsN$"t3tw/tzBgt|tttRR{"!5y[Zv uMbzt%Frq2iN-okj9hgf3K{edecsaL`Y^ ]t[ySWeWe Wep sWep s\9ije|kaDmakaDtkaD{PkaDBkaDBkaDB_MB_Mv`k_S~#`^}!R^4|Z}^n{Xp^&z^ x]bx]_v]0t \ϸr\rO\{qB\p,\o\xn[ma[PfiZQ].[*We\We\WeWeYs Z˛<\+^qXǡ`3b5e>i~mat{PBBBw :Bw :{Pw :tw :maw :fw :[yWespWespWeKzWeKzfKztKzBKzBKzBeBe{Petemaei~ee>eb5e`e^6\eZ`YY]$WeI%WeI%Y^9Y^9Z?:h[ <]F_C>՘aG?b0?;d>ex?3ex?3ex!u~ex!u~b&!u~_6!u~]F!u~]F!u~dQdQg,Qi6QlsoQoyQriR.vuKgRzuKgRzuKgFuKgFoFjFdFdFex.ex.l+zw@U-!u-!u-!u!u~!u~vؗ!u~n(W!u~ex!u~ex!u~ex?3ex?3n(W?3vؗ?3?3?34"<4"<{Xp4"<w(4"<r4"<pˏ4"<n4"<lso4"<i\44"<h3$ex2ex2uKgW&!uKgW&!vaXbyTWS{XpWSWS)W-w(TЉw(TЉw(LA\w(LA\~"Jcq}Hs{XpG-ykFawFuKgFuKgFBeBeieVhi ߏjJl?Wn~oSuopӦr- stw"N"z[}F+ť;uKe( T&)e(e(~Q:>Fdda+@d-cUi{ aZv6*qZm!QejUzfe=[FcbbH=EaraCU`2`%eB`|B`|I5I5ux1Jy1Jy1JyJyMقH IM IM ..!]888w :8w : w :w :w :w :XQ7888H]8H]H]<?ֹ8^JytJytJy-Jy-m-9---XXX X8X8X8‡e8‡e ‡e‡e‡e‡e~R{JyR{JyR{Jy4"Jy4"m4"94"4"4"Jy.Jy.8.'.i.i.i-i-'-8-Jy-Jy-JytJyt_8eNiLBiLBiKziKz'Kz8KzJyKzJyKzJy1Jy11Y1818188YJyJyJy4Jy484'4i4i4i4"i4"'4"84"Jy4"Jy4"JyR{JyR{8R{'R{iR{iR{iQiQ v1JyފJyފ8~48~4'~4i~4~4~4w :w :iw :'w :8w :8w :88'icc: LMNu8*8*88S)YYYY^_+8+8+8I8I3I>ZYYYWYW_I%8I%8I%8h8h111M M 888O^8O^9O^שO^'O^'O^'‡e'‡eש‡e9‡e8‡e8‡e'X'XXYXXX‡e‡eY‡e‡e'‡e'‡eiLBiLBAqiY-=RR--m-Ay-i-i-iR{iR{L NW54'JII4"4" i4"4"i4"i4"!zww :w :w :Yw :w :w :YY3"&Qv:Qv:Qv:v:5H*"*1YY11j1s&A*5A*5A*i A*i i  i i i O^O^ iO^[O^JO^JO^J‡eJ‡e[‡e i‡e‡e‡eJXJXXdXA*XA*XA*‡eA*‡ed‡e‡eJ‡eJ‡e~4~4&~4~4A*~4A*~4A*w :A*w :w :&w :w :w :..&..A*.A*.A*-A*--&---O;bA*tA*tA*HA*Hlw'}44ũ4j4A*4A*4A*4"A*4"j4"ũ4"4"4"II`.NA*A*A*ފA*ފ:oKݾ_v:v:dRA*A*A*+A*++<KYv:v:v:v:dRA*A*A*׊A*׊R׊d׊v:׊v:׊A*8A*88 8/z8/z8/zM /zM M M A*M A*M mm*qo}xbrE&+u~wyVGwZJDu~sqp stiNb5[Pؿ%UUUNZCH]`KD/TgA]>?;O64o4o..- +Ϙ*I)A$')w9)=x((K.|G1rF7>4E@)KgR8X\S_rbeFj%Al(vl(v..7<....7<7<kkk7<kkk%tlllWlWtW%WWWŤ/Ť/%Ť/tŤ/lŤ/lŤ/l0>l0>t0>%0>0>0>lNlN;e (4\\\\ Ry!lele\i\ii.=i}i}i}J}J.=JJ\J\J}i }i i i ki ki kKzkKzKzKz}Kz}Kz8BIM Path I @RI/libhtmlparser-java-1.6.20060610/src/resources/logofiles/htmlparser_greyscale.eps0000644000175000017500000322344310057466410026566 0ustar tiagotiago ś >%!PS-Adobe-3.1 EPSF-3.0 %%Title: htmlparser cmyk.eps %%Creator: Adobe Illustrator(R) 11 %%AI8_CreatorVersion: 11.0.0 %AI9_PrintingDataBegin %%For: Me %%CreationDate: 6/1/04 %%BoundingBox: 0 0 361 302 %%HiResBoundingBox: 0 0 360.0762 301.3228 %%CropBox: 0 0 360.0762 301.3228 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %%Pages: 1 %%DocumentNeededResources: %%DocumentSuppliedResources: procset Adobe_AGM_Image (1.0 0) %%+ procset Adobe_CoolType_Utility_T42 (1.0 0) %%+ procset Adobe_CoolType_Utility_MAKEOCF (1.19 0) %%+ procset Adobe_CoolType_Core (2.23 0) %%+ procset Adobe_AGM_Core (2.0 0) %%+ procset Adobe_AGM_Utils (1.0 0) %%DocumentFonts: %%DocumentNeededFonts: %%DocumentNeededFeatures: %%DocumentSuppliedFeatures: %%DocumentProcessColors: Black %%DocumentCustomColors: %%CMYKCustomColor: %%RGBCustomColor: %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 108 8 %%BeginData: 8620 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD4FFFA8FFA8A87DA87DA87DA87DA87DA8A8FFA8FD6CFFA8A87D7D %7DA87DFD07A87DA87DA87D7D7DA8A8FFA8FD64FFA8A87DA8A8FFA8FD0DFF %A8FFA8A87DA87DA8A8FD60FFA8A87DA8A8FD17FFA8A87D7D7DA8A8FD5CFF %A8A8A8FD1DFFA8A87DA87DFD58FFA8A87DA8FD20FFA8A87D7D7DA8A8FD54 %FFA8A8A8FD25FFA8A87DA8A8FD52FFA8A8FD28FFA8A87D7D7DA8FD4FFFA8 %FD2DFF7DA87DFD4EFFA8FD2FFFA87D7DA8FD4BFFA8FD31FFA8A87DA8FD49 %FFA8FD33FFA87D7DA8A8FD7CFFA8A87DA8FD44FFA8A8FD37FFA8A87DA8A8 %FD41FFA8A8FD39FFA8A87DA8FD40FFA87DFD3BFFA8A87DA8FD3EFFA852FD %3DFFA8A87DFD3EFF52FD3FFFA87D7DFD3CFF52A8FD40FF7DA8A8FD3AFF7D %52FD22FF7D52275252522752277DFD16FF7D7DA8FD39FF52A8FD22FF7DFD %08F852FD16FFA87DA8FD38FF5252FD23FF7DFD08F87DFD16FFA8A87DA8FD %37FF27FD24FF7DFD08F852FD17FFA8A87DFD36FF2752FD24FF7DFD08F87D %FD18FF7D7DA8FD34FFA827A8FD24FFA8FD08F852FD19FF7DA8FD34FF5227 %FD25FF7DFD08F87DFD19FFA87DFD34FFF8A8FD25FF7DFD08F852FD19FFA8 %7DA8FD32FF7D27FD26FF7DFD08F87DFD04FFA8FD15FF7DA8A8FD31FF2752 %FD09FF7D7D7DA8A8FD09FFA8A87D7D7DFD0AFF7DFD08F852FFFFFFA82752 %FD14FFA87DFD32FFF827F82727A8FFFF7D27FD06F827A8FD05FF7DFD07F8 %52A8FD07FF7DFD08F87DFD04FFF8F8F87DA8FD11FFA87DA8FD30FF7DFD05 %F8A8FF27FD0AF8A8FFFFFF52FD0AF8A8FD06FF7DFD08F852FD04FF27FD04 %F852FD11FF7DA8FD11FFFD07A8FD11FFA8FD06FF52FD05F8A827FD0CF8A8 %FF27FD0CF8A8FD05FF7DFD08F87DFD04FFFD07F852A8FD0DFFA8A87DFD12 %FFF8F8F827F87DFD10FF5227FD06FF27FD04F82727FD0DF82752FD0DF852 %FD05FFA8FD08F852FD04FF27FD08F852FD0DFFA8A8A8FD10FFA8FD05F87D %FD0EFF7DF8F8F8FD05FFA8FD24F8A8FD04FF7DFD08F87DFD04FFFD0BF852 %A8FD0AFFA87DA8FD10FFA8FD05F87DFD0CFFA827F8F8F827FD05FFA8FD24 %F87DFD04FF7DFD08F852FD04FF27FD0CF827A8FD08FFA8A8A8FD10FFA8FD %05F87DFD0CFF52FD05F8FD05FF52FD24F852FD04FF7DFD08F87DFD04FFA8 %7DFD0DF8527DFD07FF7DA8FD11FFFD05F87DFD0CFF7DFD04F827FD05FF7D %FD08F8277D7D27FD0BF8277D7D27FD09F827FD04FF7DFD08F852FD07FF7D %52FD0CF827A8FD05FFA8A8FD0AFFA87D27A8FFFFA8FD05F87DFFA87D2752 %7DFD04FFA87D52FD05F87D7DA8FFFF27FD07F827FD04FF27FD09F827A8FF %FFFF27FD08F852FD04FF7DFD08F87DFD09FFA852FD0CF8277DFFFFFF7DA8 %FD09FF7D27F8F8A8FFFFFFFD05F8A87DFD05F827FFFFFF52FD0AF8FFFF27 %FD07F8A8FD04FF7DFD09F8A8FD04FFA8FD08F827FD04FF7DFD08F852FD0B %FFA87DFD0CF852FFFFA87DFD06FFA87DFD05F8A8FFFFA8FD0EF8FFFF7DFD %09F827FFFFFD07F827FD05FFA8FD09F8FD05FFA8FD08F827FD04FF7DFD08 %F87DFD0EFF7D27FD09F827FFFFA87DFD05FF5227FD06F8A8FFFFFFFD0EF8 %7DFF52FD09F827FFFF27FD06F827FD05FFA827FD07F852FD06FFFD08F827 %FD04FFA8FD08F852FD10FFA85227FD06F827FFFFA87DFFFFA87DFD07F827 %7DFFFFFFA8FD0EF852FF7DFD09F827FFFF27FD06F852FD05FFA8FD08F827 %FD05FFA8FD08F827FD04FF7DFD08F87DFD12FF27FD06F827FFFFA87DFF52 %27FD06F827A8FD05FFA8FD06F87DA852FD05F852FFA8FF52FD04F827A8FF %A8FFFF27FD06F827FD05FFA8FD08F852FD06FFFD08F827FD04FF7DFD08F8 %52FD0FFF7D52FD08F827FFFFA87DFD07F852A8FD07FFA8FD05F827FFFFFF %FD05F852FFFFFF7DFD05F8FD05FFFD07F827FD05FFA8FD08F827FD05FFA8 %FD08F827FD04FF7DFD08F87DFD0CFFA87D27FD0AF827FFFFA8A8FD04F827 %7DFD0BFFFD05F87DFFFFFF52FD04F852FFFFFF52FD04F827FD05FF52FD06 %F827FD05FFA8FD08F852FD06FFFD08F827FD04FF7DFD08F852FD0BFF7D27 %FD0BF827A8FFFFA8A8FD04F827A8FD0AFFA8FD05F87DFFFFFF27FD04F852 %FFFFFF7DFD04F827FD05FF27FD06F827FD05FFA8FD08F827FD05FFA8FD08 %F852FD04FF7DFD08F87DFD08FFA852FD0CF8277DFD04FF7DA8FD06F82752 %FD09FFFD05F87DFFFFFF52FD04F852FFFFFF52FD04F827FD05FF52FD06F8 %27FD05FFA8FD08F852FD05FFA8FD08F827FD04FF7DFD08F852FD06FFA827 %FD0CF8527DFD06FFA8A8A852FD07F852A8FD05FFA8FD05F87DFFFFFF27FD %04F852FFFFFF7DFD05F8FD05FF52FD06F827FD05FFA8FD08F827FD05FFA8 %FD08F827FD04FF7DFD08F87DFD04FF7D27FD0CF827A8FD08FF7DA8FFFFFF %5227FD06F827A8FD04FFFD05F87DFFFFFF52FD04F852FFFFFF52FD04F827 %A8FD04FFA8FD06F827FD05FFA827FD07F852FD06FFFD08F827FD04FFA8FD %08F852FD04FFFD0CF8527DFD0AFFA8A8FD04FFA852FD07F8A8FFFFA8FD05 %F87DFFFFFF27FD04F852FFFFFF7DFD05F8272752FFFFA8FD06F852FD05FF %A8FD08F827FD05FFA8FD08F827FD04FF7DFD08F87DFD04FFFD0AF827A8FD %0CFF7DFD08FF5227FD04F8A8FFFFA8FD05F87DFFFFFF52FD04F852FFFFFF %7DFD07F827FFFFFFFD06F827FD05FFA8FD08F852FD06FFFD08F827FD04FF %7DFD08F852FD04FF27FD07F852A8FD0DFFA8A8FD09FFA87DF8F8F8A8FFFF %A8FD05F87DFFFFFF27FD04F852FD04FFFD07F827FFFFFF52FD05F827FD05 %FFA8FD08F827FD05FFA8FD08F827FD04FF7DFD08F87DFD04FFFD06F852A8 %FD0FFFA8A8FD0CFF7D27A8FFFFA8FD05F87DFFFFFF52FD04F852FD04FFA8 %FD07F8FFFFFF7DFD05F827FD05FFA8FD08F852FD06FFFD08F827FD04FF7D %FD08F852FD04FF27F8F8F852A8FD11FF7DFD0EFFA8FFFFFFA8FD057DA8FF %FFFFFD047D52A8FD05FFA8FD0552A8FFFFFFA8FD05F827FD05FFA8FD08F8 %27FD05FFA8FD08F827FD04FF7DFD08F852FD04FFF8F852A8FD12FFA8A8FD %32FF27F827272752FD05FFA8FD0727F852FD06FFFD082752FD04FFA8F8FD %07277DFD04FF7DA8FD14FFA8A8FD32FF52F827FD09FFA8FFFFFFA8FFFFFF %A8FD07FFA8FFFFFFA8FD0BFFA8FFFFFFA8FD1BFF7DFD34FFF8F87DFD47FF %A8A8FD34FF52F827FD08FFA8FFFFFFA8FD07FFA8FD07FFA8FFFFFFA8FD07 %FFA8FFA8FD05FFA8FFFFFFA8FFFFFFA8FFFFFFA8FD0AFFA8A8FD34FF7DF8 %F8A8FD07FF7D527D7D7D527DA8FFFFA8527D527D7DFFFFFF7D7D527D7D7D %52A8FFFFA87D527D527D7DFFA87D7D7D527D527DFFFF527D527D7D7D52A8 %FD08FFA8FD36FF27F827FD07FFFD07527DA8FF527D5252527DA8FFA87DFD %0752FFA852527D527D527DFFA8527DFD0552FFA87DFD0752FD07FF7DFD37 %FFA8F8F87DFD06FF7D527D7DA8527D52FFA87D527D7D7D52A8FFFF527D52 %A8A87D527DA8FF527D52FD04A8FFA87D527D7DA87DA8FFFF527D52A8A87D %527DA8FD05FFA8FD39FF52F827A8FD05FF525252FFFF7D527DA8A8527D7D %A852527DFFA87D527DA8FF525252FFA852527D527D52A8FFA8527D52FD04 %7DFFA87D527DA8A8525252FD06FFA8A8FD38FFA8F8F852FD04FFA87D527D %527D527D52FF7D7D52A8A87D527DFFFF527D527D527D7DA8FFFF7D7D527D %527D52FFA87D527D527D527DFFFF527D527D527D7DFD07FFA8FD3AFF52F8 %F87DFD04FF527D5252527D52A8FF7D527D527D525252FFA87D527D525252 %7DFFFFFD04A87D7D5252A8A8525252A8A8A87DFFA852527D5252527DFD06 %FFA8FD3CFF27F8F8FFFFFFA87D527DA8FFA8FFFFFF527D527D527D527DA8 %FF527D7DA8527D52A8FFFF527D527D527D52FFA87D527D7D7D527DFFFF52 %7D7DA8527D52A8FD04FFA8FD3DFFA8F8F827FFFFFF527D52FD05FF7D7D52 %7DA8FF7D5252A8A87D527DA8A8527D52A8A87D5252527D52A8FFA8527D52 %7D525252FFA87D527DA87D527D52A8FFFFA8FD3FFF7DF8F827FFFFFFA8FD %07FFA8FD05FFA8FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFA8A8A8FD07FFA8FF %A8FFFFFFA8FFA8FFFFFFA8FFFFFFA8FD41FF52F8F852FD39FFA8FD40FFA8 %7DFF52F8F852FD79FF27F87DFF27F8F852FD35FFA8A8FD40FF52F8F8F87D %FF52F8F827FD33FFA8A8FD40FF27FD05F87DFF52F8F827A8FD30FF7DA8FD %40FF27FD07F87DFF7DF8F8F8A8FD2EFF52A8FD40FF27FD09F87DFF7DF8F8 %F852A8FD2AFFA852A8FD40FF27FD09F87DFFFFFFA827F8F8277DFD27FFA8 %5252FD41FF27FD09F852FD06FF52F8F8F827A8FD24FF52277DFD41FF52FD %09F87DFD08FFA852F8F8F8527DFD20FF7D277DFD42FF27FD09F852FD0BFF %A827F8F8F8277DA8FD1AFFA8272727A8FD42FF52FD09F852FD0EFF7D52FD %04F8277DA8FD14FFA85227F852A8FD43FF27FD09F852FD11FFA85227FD05 %F85252A8A8FFA8FD07FFA8A87D52F8F8F82752FD45FF27FD09F87DFD15FF %A85252FD07F8FD0427522727FD05F8527DFD47FF27FD09F852FD1AFFA87D %52522727F827F827F827275252A8A8FD49FF27FD09F87DFD74FF27FD09F8 %52FD74FF52FD09F87DFD74FF27FD09F852FD74FF52FD09F852FD74FF27FD %09F852FD74FF27FD09F87DFD74FF27FD09F852FD74FF27FD09F87DFD74FF %27FD09F852FD74FF52FD09F87DFD74FF27FD09F852FD74FF52FD09F852FD %74FF27FD09F852FD74FF27FD09F87DFD74FF27FD09F852FD74FF27FD09F8 %7DFD74FF27FD09F852FD74FF52FD09F87DFD74FF27FD09F852FD74FFA8FD %09F852FD75FF7DFD08F852FD77FF27FD06F87DFD79FFFD05F852FD7BFF27 %F8F852FD7DFFA8A8FD65FFFF %%EndData %%EndComments %%BeginDefaults %%ViewingOrientation: 1 0 0 1 %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Utils 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Utils 68 dict dup begin put /bdf { bind def } bind def /nd{ null def }bdf /xdf { exch def }bdf /ldf { load def }bdf /ddf { put }bdf /xddf { 3 -1 roll put }bdf /xpt { exch put }bdf /ndf { exch dup where{ pop pop pop }{ xdf }ifelse }def /cdndf { exch dup currentdict exch known{ pop pop }{ exch def }ifelse }def /bdict { mark }bdf /edict { counttomark 2 idiv dup dict begin {def} repeat pop currentdict end }def /ps_level /languagelevel where{ pop systemdict /languagelevel get exec }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr} stopped { -1 }if def /makereadonlyarray { /packedarray where{ pop packedarray }{ array astore readonly }ifelse }bdf /map_reserved_ink_name { dup type /stringtype eq{ dup /Red eq{ pop (_Red_) }{ dup /Green eq{ pop (_Green_) }{ dup /Blue eq{ pop (_Blue_) }{ dup () cvn eq{ pop (Process) }if }ifelse }ifelse }ifelse }if }bdf /AGMUTIL_GSTATE 22 dict def /get_gstate { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_clr_spc currentcolorspace def /AGMUTIL_GSTATE_clr_indx 0 def /AGMUTIL_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def} repeat pop /AGMUTIL_GSTATE_fnt rootfont def /AGMUTIL_GSTATE_lw currentlinewidth def /AGMUTIL_GSTATE_lc currentlinecap def /AGMUTIL_GSTATE_lj currentlinejoin def /AGMUTIL_GSTATE_ml currentmiterlimit def currentdash /AGMUTIL_GSTATE_do xdf /AGMUTIL_GSTATE_da xdf /AGMUTIL_GSTATE_sa currentstrokeadjust def /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def /AGMUTIL_GSTATE_op currentoverprint def /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit /AGMUTIL_GSTATE_gy_xfer xdf cvlit /AGMUTIL_GSTATE_b_xfer xdf cvlit /AGMUTIL_GSTATE_g_xfer xdf cvlit /AGMUTIL_GSTATE_r_xfer xdf /AGMUTIL_GSTATE_ht currenthalftone def /AGMUTIL_GSTATE_flt currentflat def end }def /set_gstate { AGMUTIL_GSTATE begin AGMUTIL_GSTATE_clr_spc setcolorspace AGMUTIL_GSTATE_clr_indx {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def} repeat setcolor AGMUTIL_GSTATE_fnt setfont AGMUTIL_GSTATE_lw setlinewidth AGMUTIL_GSTATE_lc setlinecap AGMUTIL_GSTATE_lj setlinejoin AGMUTIL_GSTATE_ml setmiterlimit AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash AGMUTIL_GSTATE_sa setstrokeadjust AGMUTIL_GSTATE_clr_rnd setcolorrendering AGMUTIL_GSTATE_op setoverprint AGMUTIL_GSTATE_bg cvx setblackgeneration AGMUTIL_GSTATE_ucr cvx setundercolorremoval AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer AGMUTIL_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or { currenthalftone /HalftoneType get AGMUTIL_GSTATE_ht /HalftoneType get ne { mark AGMUTIL_GSTATE_ht {sethalftone} stopped cleartomark } if }{ AGMUTIL_GSTATE_ht sethalftone } ifelse AGMUTIL_GSTATE_flt setflat end }def /get_gstate_and_matrix { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_ctm matrix currentmatrix def end get_gstate }def /set_gstate_and_matrix { set_gstate AGMUTIL_GSTATE begin AGMUTIL_GSTATE_ctm setmatrix end }def /AGMUTIL_str256 256 string def /AGMUTIL_src256 256 string def /AGMUTIL_dst64 64 string def /AGMUTIL_srcLen nd /AGMUTIL_ndx nd /agm_sethalftone { dup begin /_Data load /Thresholds xdf end level3 { sethalftone }{ dup /HalftoneType get 3 eq { sethalftone } {pop} ifelse }ifelse } def /rdcmntline { currentfile AGMUTIL_str256 readline pop (%) anchorsearch {pop} if } bdf /filter_cmyk { dup type /filetype ne{ exch () /SubFileDecode filter } { exch pop } ifelse [ exch { AGMUTIL_src256 readstring pop dup length /AGMUTIL_srcLen exch def /AGMUTIL_ndx 0 def AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ 1 index exch get AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put /AGMUTIL_ndx AGMUTIL_ndx 1 add def }for pop AGMUTIL_dst64 0 AGMUTIL_ndx getinterval } bind /exec cvx ] cvx } bdf /filter_indexed_devn { cvi Names length mul names_index add Lookup exch get } bdf /filter_devn { 4 dict begin /srcStr xdf /dstStr xdf dup type /filetype ne{ 0 () /SubFileDecode filter }if [ exch [ /devicen_colorspace_dict /AGMCORE_gget cvx /begin cvx currentdict /srcStr get /readstring cvx /pop cvx /dup cvx /length cvx 0 /gt cvx [ Adobe_AGM_Utils /AGMUTIL_ndx 0 /ddf cvx names_index Names length currentdict /srcStr get length 1 sub { 1 /index cvx /exch cvx /get cvx currentdict /dstStr get /AGMUTIL_ndx /load cvx 3 -1 /roll cvx /put cvx Adobe_AGM_Utils /AGMUTIL_ndx /AGMUTIL_ndx /load cvx 1 /add cvx /ddf cvx } for currentdict /dstStr get 0 /AGMUTIL_ndx /load cvx /getinterval cvx ] cvx /if cvx /end cvx ] cvx bind /exec cvx ] cvx end } bdf /AGMUTIL_imagefile nd /read_image_file { AGMUTIL_imagefile 0 setfileposition 10 dict begin /imageDict xdf /imbufLen Width BitsPerComponent mul 7 add 8 idiv def /imbufIdx 0 def /origDataSource imageDict /DataSource get def /origMultipleDataSources imageDict /MultipleDataSources get def /origDecode imageDict /Decode get def /dstDataStr imageDict /Width get colorSpaceElemCnt mul string def /srcDataStrs [ imageDict begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi string } repeat end ] def imageDict /MultipleDataSources known {MultipleDataSources}{false} ifelse { /imbufCnt imageDict /DataSource get length def /imbufs imbufCnt array def 0 1 imbufCnt 1 sub { /imbufIdx xdf imbufs imbufIdx imbufLen string put imageDict /DataSource get imbufIdx [ AGMUTIL_imagefile imbufs imbufIdx get /readstring cvx /pop cvx ] cvx put } for DeviceN_PS2 { imageDict begin /DataSource [ DataSource /devn_sep_datasource cvx ] cvx def /MultipleDataSources false def /Decode [0 1] def end } if }{ /imbuf imbufLen string def Indexed_DeviceN level3 not and DeviceN_NoneName or { imageDict begin /DataSource [AGMUTIL_imagefile Decode BitsPerComponent false 1 /filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource /exec cvx] cvx def /Decode [0 1] def end }{ imageDict /DataSource {AGMUTIL_imagefile imbuf readstring pop} put } ifelse } ifelse imageDict exch load exec imageDict /DataSource origDataSource put imageDict /MultipleDataSources origMultipleDataSources put imageDict /Decode origDecode put end } bdf /write_image_file { begin { (AGMUTIL_imagefile) (w+) file } stopped{ false }{ Adobe_AGM_Utils/AGMUTIL_imagefile xddf 2 dict begin /imbufLen Width BitsPerComponent mul 7 add 8 idiv def MultipleDataSources {DataSource 0 get}{DataSource}ifelse type /filetype eq { /imbuf imbufLen string def }if 1 1 Height { pop MultipleDataSources { 0 1 DataSource length 1 sub { DataSource type dup /arraytype eq { pop DataSource exch get exec }{ /filetype eq { DataSource exch get imbuf readstring pop }{ DataSource exch get } ifelse } ifelse AGMUTIL_imagefile exch writestring } for }{ DataSource type dup /arraytype eq { pop DataSource exec }{ /filetype eq { DataSource imbuf readstring pop }{ DataSource } ifelse } ifelse AGMUTIL_imagefile exch writestring } ifelse }for end true }ifelse end } bdf /close_image_file { AGMUTIL_imagefile closefile (AGMUTIL_imagefile) deletefile }def statusdict /product known userdict /AGMP_current_show known not and{ /pstr statusdict /product get def pstr (HP LaserJet 2200) eq pstr (HP LaserJet 4000 Series) eq or pstr (HP LaserJet 4050 Series ) eq or pstr (HP LaserJet 8000 Series) eq or pstr (HP LaserJet 8100 Series) eq or pstr (HP LaserJet 8150 Series) eq or pstr (HP LaserJet 5000 Series) eq or pstr (HP LaserJet 5100 Series) eq or pstr (HP Color LaserJet 4500) eq or pstr (HP Color LaserJet 4600) eq or pstr (HP LaserJet 5Si) eq or pstr (HP LaserJet 1200 Series) eq or pstr (HP LaserJet 1300 Series) eq or pstr (HP LaserJet 4100 Series) eq or { userdict /AGMP_current_show /show load put userdict /show { currentcolorspace 0 get /Pattern eq {false charpath f} {AGMP_current_show} ifelse } put }if currentdict /pstr undef } if /consumeimagedata { begin currentdict /MultipleDataSources known not {/MultipleDataSources false def} if MultipleDataSources { 1 dict begin /flushbuffer Width cvi string def 1 1 Height cvi { pop 0 1 DataSource length 1 sub { DataSource exch get dup type dup /filetype eq { exch flushbuffer readstring pop pop }if /arraytype eq { exec pop }if }for }for end } { /DataSource load type dup /filetype eq { 1 dict begin /flushbuffer Width Decode length 2 div mul cvi string def 1 1 Height { pop DataSource flushbuffer readstring pop pop} for end }if /arraytype eq { 1 1 Height { pop DataSource pop } for }if }ifelse end }bdf /addprocs { 2{/exec load}repeat 3 1 roll [ 5 1 roll ] bind cvx }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end sethalftone pop }ifelse }def /clonearray { dup xcheck exch dup length array exch Adobe_AGM_Core/AGMCORE_tmp -1 ddf { Adobe_AGM_Core/AGMCORE_tmp AGMCORE_tmp 1 add ddf dup type /dicttype eq { AGMCORE_tmp exch clonedict Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if dup type /arraytype eq { AGMCORE_tmp exch clonearray Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if exch dup AGMCORE_tmp 4 -1 roll put }forall exch {cvx} if }bdf /clonedict { dup length dict begin { dup type /dicttype eq { clonedict } if dup type /arraytype eq { clonearray } if def }forall currentdict end }bdf /DeviceN_PS2 { /currentcolorspace AGMCORE_gget 0 get /DeviceN eq level3 not and } bdf /Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget dup null ne { /CSD known }{ pop false } ifelse } bdf /DeviceN_NoneName { /Names where { pop false Names { (None) eq or } forall }{ false }ifelse } bdf /DeviceN_PS2_inRip_seps { /AGMCORE_in_rip_sep where { pop dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /DeviceN eq level3 not and AGMCORE_in_rip_sep and { /currentcolorspace exch AGMCORE_gput false } { true }ifelse } { true } ifelse } { true } ifelse } bdf /base_colorspace_type { dup type /arraytype eq {0 get} if } bdf /doc_setup{ Adobe_AGM_Utils begin }bdf /doc_trailer{ currentdict Adobe_AGM_Utils eq{ end }if }bdf systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright (C) 1997-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Core 216 dict dup begin put /nd{ null def }bind def /Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen [currentscreen] cvx def /AGMCORE_tmp 0 def /AGMCORE_&setgray nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&setcmykcolor nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_distilling nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSA_cache 0 dict def /AGMCORE_CSD_cache 0 dict def /AGMCORE_pattern_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_err_strings 4 dict def /AGMCORE_cur_err nd /AGMCORE_ovp nd /AGMCORE_current_spot_alias false def /AGMCORE_inverting false def /AGMCORE_feature_dictCount nd /AGMCORE_feature_opCount nd /AGMCORE_feature_ctm nd /AGMCORE_ConvertToProcess false def /AGMCORE_Default_CTM matrix def /AGMCORE_Default_PageSize nd /AGMCORE_currentbg nd /AGMCORE_currentucr nd /AGMCORE_gradientcache 32 dict def /AGMCORE_in_pattern false def /knockout_unitsq nd /AGMCORE_CRD_cache where{ pop }{ /AGMCORE_CRD_cache 0 dict def }ifelse /AGMCORE_key_known { where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /flushinput { save 2 dict begin /CompareBuffer 3 -1 roll def /readbuffer 256 string def mark { currentfile readbuffer {readline} stopped {cleartomark mark} { not {pop exit} if CompareBuffer eq {exit} if }ifelse }loop cleartomark end restore }bdf /getspotfunction { AGMCORE_screen exch pop exch pop dup type /dicttype eq{ dup /HalftoneType get 1 eq{ /SpotFunction get }{ dup /HalftoneType get 2 eq{ /GraySpotFunction get }{ pop { abs exch abs 2 copy add 1 gt{ 1 sub dup mul exch 1 sub dup mul add 1 sub }{ dup mul exch dup mul add 1 exch sub }ifelse }bind }ifelse }ifelse }if } def /clp_npth { clip newpath } def /eoclp_npth { eoclip newpath } def /npth_clp { newpath clip } def /add_grad { AGMCORE_gradientcache 3 1 roll put }bdf /exec_grad { AGMCORE_gradientcache exch get exec }bdf /graphic_setup { /AGMCORE_graphicsave save def concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth [] 0 setdash 10 setmiterlimit newpath false setoverprint false setstrokeadjust Adobe_AGM_Core/spot_alias get exec /Adobe_AGM_Image where { pop Adobe_AGM_Image/spot_alias 2 copy known{ get exec }{ pop pop }ifelse } if 100 dict begin /dictstackcount countdictstack def /showpage {} def mark } def /graphic_cleanup { cleartomark dictstackcount 1 countdictstack 1 sub {end}for end AGMCORE_graphicsave restore } def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def } { AGMCORE_str256 exch AGMCORE_tmp xpt /AGMCORE_tmp AGMCORE_tmp 1 add def } ifelse } forall } bdf /doc_setup{ Adobe_AGM_Core begin /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict /AGM_handleerror known not{ errordict /AGM_handleerror errordict /handleerror get put errordict /handleerror { Adobe_AGM_Core begin $error /newerror get AGMCORE_cur_err null ne and{ $error /newerror false put AGMCORE_cur_err compose_error_msg }if $error /newerror true put end errordict /AGM_handleerror get exec } bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err /AGMCORE_bad_environ def} if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def }if /AGMCORE_currentbg currentblackgeneration def /AGMCORE_currentucr currentundercolorremoval def /AGMCORE_distilling /product where{ pop systemdict/setdistillerparams known product (Adobe PostScript Parser) ne and }{ false }ifelse def level2 not{ /xput{ dup load dup length exch maxlength eq{ dup dup load dup length dup 0 eq {pop 1} if 2 mul dict copy def }if load begin def end }def }{ /xput{ load 3 1 roll put }def }ifelse /AGMCORE_GSTATE AGMCORE_key_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 10 def /AGMCORE_&gsave /gsave ldf /AGMCORE_&grestore /grestore ldf /AGMCORE_&grestoreall /grestoreall ldf /AGMCORE_&save /save ldf /AGMCORE_gdictcopy { begin { def } forall end }def /AGMCORE_gput { AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget { AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave { AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core exch /AGMCORE_gstackptr xpt AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore { AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt {1 add} if Adobe_AGM_Core exch /AGMCORE_gstackptr xpt }def /grestoreall { AGMCORE_&grestoreall Adobe_AGM_Core /AGMCORE_gstackptr AGMCORE_gstacksaveptr put }def /save { AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core begin /AGMCORE_gstackptr exch def /AGMCORE_gstacksaveptr AGMCORE_gstackptr def end AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def 0 1 AGMCORE_gstack length 1 sub { AGMCORE_gstack exch AGMCORE_gstackframekeys dict put } for }if level3 /AGMCORE_&sysshfill AGMCORE_key_known not and { /AGMCORE_&sysshfill systemdict/shfill get def /AGMCORE_&usrshfill /shfill load def /AGMCORE_&sysmakepattern systemdict/makepattern get def /AGMCORE_&usrmakepattern /makepattern load def }if /currentcmykcolor [0 0 0 0] AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace [/DeviceGray] AGMCORE_gput /sep_tint 0 AGMCORE_gput /devicen_tints [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /devicen_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent () AGMCORE_gput /customcolor_tint 1 AGMCORE_gput << /MaxPatternItem currentsystemparams /MaxPatternCache get >> setuserparams end }def /page_setup { /setcmykcolor where{ pop Adobe_AGM_Core/AGMCORE_&setcmykcolor /setcmykcolor load put }if Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor pop }ndf /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint { pop }ndf /currentoverprint { false }ndf /AGMCORE_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_have_reported_unsupported_color_space false def /AGMCORE_report_unsupported_color_space { AGMCORE_have_reported_unsupported_color_space false eq { (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.) == Adobe_AGM_Core /AGMCORE_have_reported_unsupported_color_space true ddf } if }def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_in_rip_sep /AGMCORE_in_rip_sep where{ pop AGMCORE_in_rip_sep }{ AGMCORE_distilling { false }{ userdict/Adobe_AGM_OnHost_Seps known{ false }{ level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse }ifelse }ifelse }ifelse def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ AGMCORE_distilling AGMCORE_producing_seps or }ifelse def /AGM_is_distiller_preserving_spotimages { currentdistillerparams/PreserveOverprintSettings known { currentdistillerparams/PreserveOverprintSettings get { currentdistillerparams/ColorConversionStrategy known { currentdistillerparams/ColorConversionStrategy get /LeaveColorUnchanged eq }{ true }ifelse }{ false }ifelse }{ false }ifelse }def /convert_spot_to_process where {pop}{ /convert_spot_to_process { dup map_alias { /Name get exch pop } if dup dup (None) eq exch (All) eq or { pop false }{ AGMCORE_host_sep { gsave 1 0 0 0 setcmykcolor currentgray 1 exch sub 0 1 0 0 setcmykcolor currentgray 1 exch sub 0 0 1 0 setcmykcolor currentgray 1 exch sub 0 0 0 1 setcmykcolor currentgray 1 exch sub add add add 0 eq { pop false }{ false setoverprint 1 1 1 1 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq }ifelse grestore }{ AGMCORE_distilling { pop AGM_is_distiller_preserving_spotimages not }{ Adobe_AGM_Core/AGMCORE_name xddf false Adobe_AGM_Core/AGMCORE_in_pattern known {Adobe_AGM_Core/AGMCORE_in_pattern get}{false} ifelse not currentpagedevice/OverrideSeparations known and { currentpagedevice/OverrideSeparations get { /HqnSpots /ProcSet resourcestatus { pop pop pop true }if }if }if { AGMCORE_name /HqnSpots /ProcSet findresource /TestSpot get exec not }{ gsave [/Separation AGMCORE_name /DeviceGray {}]setcolorspace false currentpagedevice/SeparationColorNames 2 copy known { get { AGMCORE_name eq or}forall not }{ pop pop pop true }ifelse grestore }ifelse }ifelse }ifelse }ifelse }def }ifelse /convert_to_process where {pop}{ /convert_to_process { dup length 0 eq { pop false }{ AGMCORE_host_sep { dup true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process and}ifelse } forall { true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch (Black) eq or and }forall not }{pop false}ifelse }{ false exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process or}ifelse } forall }ifelse }ifelse }def }ifelse /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots userdict/Adobe_AGM_OnHost_Seps known userdict/Adobe_AGM_InRip_Seps known or not and }ifelse { /setcmykcolor[ { 4 copy add add add 0 eq currentoverprint and{ pop 0.0005 }if }/exec cvx /AGMCORE_&setcmykcolor load dup type/operatortype ne{ /exec cvx }if ]cvx def }if AGMCORE_host_sep{ /setcolortransfer { AGMCORE_cyan_plate{ pop pop pop }{ AGMCORE_magenta_plate{ 4 3 roll pop pop pop }{ AGMCORE_yellow_plate{ 4 2 roll pop pop pop }{ 4 1 roll pop pop pop }ifelse }ifelse }ifelse settransfer } def /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def /AGMCORE_RemoveProcessColorNames { 1 dict begin /filtername { dup /Cyan eq 1 index (Cyan) eq or {pop (_cyan_)}if dup /Magenta eq 1 index (Magenta) eq or {pop (_magenta_)}if dup /Yellow eq 1 index (Yellow) eq or {pop (_yellow_)}if dup /Black eq 1 index (Black) eq or {pop (_black_)}if }def dup type /arraytype eq {[exch {filtername}forall]} {filtername}ifelse end }def /AGMCORE_IsSeparationAProcessColor { dup (Cyan) eq exch dup (Magenta) eq exch dup (Yellow) eq exch (Black) eq or or or }def level3 { /AGMCORE_IsCurrentColor { gsave false setoverprint 1 1 1 1 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq grestore }def /AGMCORE_filter_functiondatasource { 5 dict begin /data_in xdf data_in type /stringtype eq { /ncomp xdf /comp xdf /string_out data_in length ncomp idiv string def 0 ncomp data_in length 1 sub { string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put }for string_out }{ string /string_in xdf /string_out 1 string def /component xdf [ data_in string_in /readstring cvx [component /get cvx 255 /exch cvx /sub cvx string_out /exch cvx 0 /exch cvx /put cvx string_out]cvx [/pop cvx ()]cvx /ifelse cvx ]cvx /ReusableStreamDecode filter }ifelse end }def /AGMCORE_separateShadingFunction { 2 dict begin /paint? xdf /channel xdf begin FunctionType 0 eq { /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def currentdict /Decode known {/Decode Decode channel 2 mul 2 getinterval def}if paint? not {/Decode [1 1]def}if }if FunctionType 2 eq { paint? { /C0 [C0 channel get 1 exch sub] def /C1 [C1 channel get 1 exch sub] def }{ /C0 [1] def /C1 [1] def }ifelse }if FunctionType 3 eq { /Functions [Functions {channel paint? AGMCORE_separateShadingFunction} forall] def }if currentdict /Range known {/Range [0 1] def}if currentdict end end }def /AGMCORE_separateShading { 3 -1 roll begin currentdict /Function known { currentdict /Background known {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if Function 3 1 roll AGMCORE_separateShadingFunction /Function xdf /ColorSpace [/DeviceGray] def }{ ColorSpace dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] def }{ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put }ifelse ColorSpace 0 get /Separation eq { { [1 /exch cvx /sub cvx]cvx }{ [/pop cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll put pop }{ { [exch ColorSpace 1 get length 1 sub exch sub /index cvx 1 /exch cvx /sub cvx ColorSpace 1 get length 1 add 1 /roll cvx ColorSpace 1 get length{/pop cvx} repeat]cvx }{ pop [ColorSpace 1 get length {/pop cvx} repeat cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll bind put }ifelse ColorSpace 2 /DeviceGray put }ifelse end }def /AGMCORE_separateShadingDict { dup /ColorSpace get dup type /arraytype ne {[exch]}if dup 0 get /DeviceCMYK eq { exch begin currentdict AGMCORE_cyan_plate {0 true}if AGMCORE_magenta_plate {1 true}if AGMCORE_yellow_plate {2 true}if AGMCORE_black_plate {3 true}if AGMCORE_plate_ndx 4 eq {0 false}if dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading currentdict end exch }if dup 0 get /Separation eq { exch begin ColorSpace 1 get dup /None ne exch /All ne and { ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /Separation ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading }if }ifelse }{ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor 0 exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse }if currentdict end exch }if dup 0 get /DeviceN eq { exch begin ColorSpace 1 get convert_to_process { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /DeviceN ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading /ColorSpace [/DeviceGray] def }if }ifelse }{ currentdict false -1 ColorSpace 1 get { AGMCORE_IsCurrentColor { 1 add exch pop true exch exit }if 1 add }forall exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse currentdict end exch }if dup 0 get dup /DeviceCMYK eq exch dup /Separation eq exch /DeviceN eq or or not { exch begin ColorSpace dup type /arraytype eq {0 get}if /DeviceGray ne { AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { ColorSpace 0 get /CIEBasedA eq { /ColorSpace [/Separation /_ciebaseda_ /DeviceGray {}] def }if ColorSpace 0 get dup /CIEBasedABC eq exch dup /CIEBasedDEF eq exch /DeviceRGB eq or or { /ColorSpace [/DeviceN [/_red_ /_green_ /_blue_] /DeviceRGB {}] def }if ColorSpace 0 get /CIEBasedDEFG eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] }if currentdict 0 false AGMCORE_separateShading }if }if currentdict end exch }if pop dup /AGMCORE_ignoreshade known { begin /ColorSpace [/Separation (None) /DeviceGray {}] def currentdict end }if }def /shfill { clonedict AGMCORE_separateShadingDict dup /AGMCORE_ignoreshade known {pop} {AGMCORE_&sysshfill}ifelse }def /makepattern { exch dup /PatternType get 2 eq { clonedict begin /Shading Shading AGMCORE_separateShadingDict def currentdict end exch AGMCORE_&sysmakepattern }{ exch AGMCORE_&usrmakepattern }ifelse }def }if }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4 {4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ Adobe_AGM_Core begin /AGMCORE_k xdf /AGMCORE_y xdf /AGMCORE_m xdf /AGMCORE_c xdf end [/Separation 4 -1 roll /DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation (All) /DeviceGray {}] setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4 {4 index mul 4 1 roll} repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval {255 div} forall } bdf /map_indexed_devn { Lookup Names length 3 -1 roll cvi map_index } bdf /n_color_components { base_colorspace_type dup /DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse }bdf level2{ /mo /moveto ldf /li /lineto ldf /cv /curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def level2 /setcolorspace AGMCORE_key_known not and{ /AGMCORE_&&&setcolorspace /setcolorspace ldf /AGMCORE_ReplaceMappedColor { dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get dup /Separation eq { pop dup length array copy dup dup 1 get current_spot_alias { dup map_alias { begin /sep_colorspace_dict currentdict AGMCORE_gput pop pop pop [ /Separation Name CSA map_csa dup /MappedCSA xdf /sep_colorspace_proc load ] dup Name end }if }if map_reserved_ink_name 1 xpt }{ /DeviceN eq { dup length array copy dup dup 1 get [ exch { current_spot_alias{ dup map_alias{ /Name get exch pop }if }if map_reserved_ink_name } forall ] 1 xpt }if }ifelse }if }def /setcolorspace { dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /Indexed eq { AGMCORE_distilling { /PhotoshopDuotoneList where { pop false }{ true }ifelse }{ true }ifelse { aload pop 3 -1 roll AGMCORE_ReplaceMappedColor 3 1 roll 4 array astore }if }{ AGMCORE_ReplaceMappedColor }ifelse }if DeviceN_PS2_inRip_seps {AGMCORE_&&&setcolorspace} if }def }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /li{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1 [8 0 0 8 0 0] {} image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /currentScreenFreq{ currentscreen pop pop }def /setcolorspace { /currentcolorspace exch AGMCORE_gput } def /currentcolorspace { /currentcolorspace AGMCORE_gget } def /setcolor_devicecolor { base_colorspace_type dup /DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup /DeviceGray ne{ dup /DeviceCMYK ne{ dup /DeviceRGB ne{ dup /Separation eq{ pop currentcolorspace 3 get exec currentcolorspace 2 get }{ dup /Indexed eq{ pop currentcolorspace 3 get dup type /stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err /AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor } def }ifelse /sop /setoverprint ldf /lw /setlinewidth ldf /lc /setlinecap ldf /lj /setlinejoin ldf /ml /setmiterlimit ldf /dsh /setdash ldf /sadj /setstrokeadjust ldf /gry /setgray ldf /rgb /setrgbcolor ldf /cmyk /setcmykcolor ldf /sep /setsepcolor ldf /devn /setdevicencolor ldf /idx /setindexedcolor ldf /colr /setcolor ldf /csacrd /set_csa_crd ldf /sepcs /setsepcolorspace ldf /devncs /setdevicencolorspace ldf /idxcs /setindexedcolorspace ldf /cp /closepath ldf /clp /clp_npth ldf /eclp /eoclp_npth ldf /f /fill ldf /ef /eofill ldf /@ /stroke ldf /nclp /npth_clp ldf /gset /graphic_setup ldf /gcln /graphic_cleanup ldf currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and { bind }if def }forall /currentpagedevice currentpagedevice def /getrampcolor { /indx exch def 0 1 NumComp 1 sub { dup Samples exch get dup type /stringtype eq { indx get } if exch Scaling exch get aload pop 3 1 roll mul add } for ColorSpaceFamily /Separation eq { sep } { ColorSpaceFamily /DeviceN eq { devn } { setcolor }ifelse }ifelse } bind def /sssetbackground { aload pop setcolor } bind def /RadialShade { 40 dict begin /ColorSpaceFamily exch def /background exch def /ext1 exch def /ext0 exch def /BBox exch def /r2 exch def /c2y exch def /c2x exch def /r1 exch def /c1y exch def /c1x exch def /rampdict exch def /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if c1x c2x eq { c1y c2y lt {/theta 90 def}{/theta 270 def} ifelse } { /slope c2y c1y sub c2x c1x sub div def /theta slope 1 atan def c2x c1x lt c2y c1y ge and { /theta theta 180 sub def} if c2x c1x lt c2y c1y lt and { /theta theta 180 add def} if } ifelse gsave clippath c1x c1y translate theta rotate -90 rotate { pathbbox } stopped { 0 0 0 0 } if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end } { /max { 2 copy gt { pop } {exch pop} ifelse } bind def /min { 2 copy lt { pop } {exch pop} ifelse } bind def rampdict begin 40 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave c1x c1y translate theta rotate -90 rotate /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def /c1y 0 def /c1x 0 def /c2x 0 def ext0 { 0 getrampcolor c2y r2 add r1 sub 0.0001 lt { c1x c1y r1 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2y r1 add r2 le { c1x c1y r1 0 360 arc fill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r1 neg def /p1y c1y def /p2x r1 def /p2y c1y def p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto fill } { /AA r2 r1 sub c2y div def /theta AA 1 AA dup mul sub sqrt div 1 atan def /SS1 90 theta add dup sin exch cos div def /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y p1x SS1 div neg def /SS2 90 theta sub dup sin exch cos div def /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y p2x SS2 div neg def r1 r2 gt { /L1maxX p1x yMin p1y sub SS1 div add def /L2maxX p2x yMin p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if c1x c2x sub dup mul c1y c2y sub dup mul add 0.5 exp 0 dtransform dup mul exch dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop /hires exch def hires mul /numpix exch def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if /xInc c2x c1x sub numsteps div def /yInc c2y c1y sub numsteps div def /rInc r2 r1 sub numsteps div def /cx c1x def /cy c1y def /radius r1 def newpath xInc 0 eq yInc 0 eq rInc 0 eq and and { 0 getrampcolor cx cy radius 0 360 arc stroke NumSamples 1 sub getrampcolor cx cy radius 72 hires div add 0 360 arc 0 setlinewidth stroke } { 0 numsteps { dup subsampling { round cvi } if getrampcolor cx cy radius 0 360 arc /cx cx xInc add def /cy cy yInc add def /radius radius rInc add def cx cy radius 360 0 arcn eofill rampIndxInc add } repeat pop } ifelse ext1 { c2y r2 add r1 lt { c2x c2y r2 0 360 arc fill } { c2y r1 add r2 sub 0.0001 le { c2x c2y r2 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r2 neg def /p1y c2y def /p2x r2 def /p2y c2y def p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto fill } { /AA r2 r1 sub c2y div def /theta AA 1 AA dup mul sub sqrt div 1 atan def /SS1 90 theta add dup sin exch cos div def /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y c2y p1x SS1 div sub def /SS2 90 theta sub dup sin exch cos div def /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y c2y p2x SS2 div sub def r1 r2 lt { /L1maxX p1x yMax p1y sub SS1 div add def /L2maxX p2x yMax p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if grestore grestore end end end } ifelse } bind def /GenStrips { 40 dict begin /ColorSpaceFamily exch def /background exch def /ext1 exch def /ext0 exch def /BBox exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def /rampdict exch def /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if x1 x2 eq { y1 y2 lt {/theta 90 def}{/theta 270 def} ifelse } { /slope y2 y1 sub x2 x1 sub div def /theta slope 1 atan def x2 x1 lt y2 y1 ge and { /theta theta 180 sub def} if x2 x1 lt y2 y1 lt and { /theta theta 180 add def} if } ifelse gsave clippath x1 y1 translate theta rotate { pathbbox } stopped { 0 0 0 0 } if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end } { rampdict begin 20 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave x1 y1 translate theta rotate /xStart 0 def /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def /ySpan yMax yMin sub def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def xStart 0 transform xEnd 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop mul /numpix exch def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if ext0 { 0 getrampcolor xMin xStart lt { xMin yMin xMin neg ySpan rectfill } if } if /xInc xEnd xStart sub numsteps div def /x xStart def 0 numsteps { dup subsampling { round cvi } if getrampcolor x yMin xInc ySpan rectfill /x x xInc add def rampIndxInc add } repeat pop ext1 { xMax xEnd gt { xEnd yMin xMax xEnd sub ySpan rectfill } if } if grestore grestore end end end } ifelse } bind def }def /page_trailer { end }def /doc_trailer{ }def systemdict /findcolorrendering known{ /findcolorrendering systemdict /findcolorrendering get def }if systemdict /setcolorrendering known{ /setcolorrendering systemdict /setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { dup Adobe_AGM_Core/AGMCORE_name xddf convert_spot_to_process not }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA map_csa setcolorspace_opt set_crd end } def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup /sep_tint exch AGMCORE_gput TintProc end } def /setdevicencolor { /devicen_colorspace_dict AGMCORE_gget begin Names length copy Names length 1 sub -1 0 { /devicen_tints AGMCORE_gget 3 1 roll xpt } for TintProc end } def /sep_colorspace_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2 {AGMCORE_tmp mul NComponents 1 roll} repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll } repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end } def /sep_colorspace_gray_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end } def /sep_proc_name { dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not and{ pop [/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse } def /setsepcolorspace { current_spot_alias{ dup begin Name map_alias{ exch pop }if end }if dup /sep_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def Adobe_AGM_Core/AGMCORE_sep_special Name dup () eq exch (All) eq or ddf AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch { 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec cvx ] cvx ] setcolorspace_opt /TintProc { 255 mul round cvi setcolor }bdf }{ MappedCSA 0 get /DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc [ Components aload pop Name findcmykcustomcolor /exch cvx /setcustomcolor cvx ] cvx bdf }{ AGMCORE_host_sep Name (All) eq and{ /TintProc { 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK eq and AGMCORE_host_sep or Name () eq and{ /TintProc [ MappedCSA sep_proc_name exch 0 get /DeviceCMYK eq{ cvx /setcmykcolor cvx }{ cvx /setgray cvx }ifelse ] cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc [ /dup cvx MappedCSA sep_proc_name cvx exch 0 get /DeviceGray eq{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx }if /Name cvx /findcmykcustomcolor cvx /exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep /Name cvx /AGMCORE_IsSeparationAProcessColor load /exec cvx /not cvx /and cvx }{ Name inRip_spot_has_ink not }ifelse [ /pop cvx 1 ] cvx /if cvx /setcustomcolor cvx ] cvx bdf }{ /TintProc /setcolor ldf [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd setsepcolor end } def /additive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 0 1 numarrays 1 sub { 1 exch add /index cvx c1 /get cvx /mul cvx }for numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /subtractive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 1 0 1 numarrays 1 sub { 1 3 3 -1 roll add /index cvx c1 /get cvx /sub cvx /mul cvx }for /sub cvx numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /exec_tint_transform { /TintProc [ /TintTransform cvx /setcolor cvx ] cvx bdf MappedCSA setcolorspace_opt } bdf /devn_makecustomcolor { 2 dict begin /names_index xdf /Names xdf 1 1 1 1 Names names_index get findcmykcustomcolor /devicen_tints AGMCORE_gget names_index get setcustomcolor Names length {pop} repeat end } bdf /setdevicencolorspace { dup /AliasedColorants known {false}{true}ifelse current_spot_alias and { 6 dict begin /names_index 0 def dup /names_len exch /Names get length def /new_names names_len array def /new_LookupTables names_len array def /alias_cnt 0 def dup /Names get { dup map_alias { exch pop dup /ColorLookup known { dup begin new_LookupTables names_index ColorLookup put end }{ dup /Components known { dup begin new_LookupTables names_index Components put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse new_names names_index 3 -1 roll /Name get put /alias_cnt alias_cnt 1 add def }{ /name xdf new_names names_index name put dup /LookupTables known { dup begin new_LookupTables names_index LookupTables names_index get put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse /names_index names_index 1 add def } forall alias_cnt 0 gt { /AliasedColorants true def 0 1 names_len 1 sub { /names_index xdf new_LookupTables names_index get 0 get null eq { dup /Names get names_index get /name xdf name (Cyan) eq name (Magenta) eq name (Yellow) eq name (Black) eq or or or not { /AliasedColorants false def exit } if } if } for AliasedColorants { dup begin /Names new_names def /AliasedColorants true def /LookupTables new_LookupTables def currentdict /TTTablesIdx known not { /TTTablesIdx -1 def } if currentdict /NComponents known not { /NComponents TintMethod /Subtractive eq {4}{3}ifelse def } if end } if }if end } if dup /devicen_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def currentdict /AliasedColorants known { AliasedColorants }{ false } ifelse /TintTransform load type /nulltype eq or { /TintTransform [ 0 1 Names length 1 sub { /TTTablesIdx TTTablesIdx 1 add def dup LookupTables exch get dup 0 get null eq { 1 index Names exch get dup (Cyan) eq { pop exch LookupTables length exch sub /index cvx 0 0 0 } { dup (Magenta) eq { pop exch LookupTables length exch sub /index cvx 0 /exch cvx 0 0 } { (Yellow) eq { exch LookupTables length exch sub /index cvx 0 0 3 -1 /roll cvx 0 } { exch LookupTables length exch sub /index cvx 0 0 0 4 -1 /roll cvx } ifelse } ifelse } ifelse 5 -1 /roll cvx /astore cvx } { dup length 1 sub LookupTables length 4 -1 roll sub 1 add /index cvx /mul cvx /round cvx /cvi cvx /get cvx } ifelse Names length TTTablesIdx add 1 add 1 /roll cvx } for Names length [/pop cvx] cvx /repeat cvx NComponents Names length TintMethod /Subtractive eq { subtractive_blend } { additive_blend } ifelse ] cvx bdf } if AGMCORE_host_sep { Names convert_to_process { exec_tint_transform } { currentdict /AliasedColorants known { AliasedColorants not }{ false } ifelse 5 dict begin /AvoidAliasedColorants xdf /painted? false def /names_index 0 def /names_len Names length def Names { AvoidAliasedColorants { /currentspotalias current_spot_alias def false set_spot_alias } if AGMCORE_is_cmyk_sep { dup (Cyan) eq AGMCORE_cyan_plate and exch dup (Magenta) eq AGMCORE_magenta_plate and exch dup (Yellow) eq AGMCORE_yellow_plate and exch (Black) eq AGMCORE_black_plate and or or or { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def } if painted? {exit} if }{ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def exit } if } ifelse AvoidAliasedColorants { currentspotalias set_spot_alias } if /names_index names_index 1 add def } forall painted? { /devicen_colorspace_dict AGMCORE_gget /names_index names_index put }{ /devicen_colorspace_dict AGMCORE_gget /TintProc [ names_len [/pop cvx] cvx /repeat cvx 1 /setseparationgray cvx 0 0 0 0 () /findcmykcustomcolor cvx 0 /setcustomcolor cvx ] cvx ddf } ifelse end } ifelse } { AGMCORE_in_rip_sep { Names convert_to_process not }{ level3 } ifelse { [/DeviceN Names MappedCSA /TintTransform load] setcolorspace_opt /TintProc level3 not AGMCORE_in_rip_sep and { [ Names /length cvx [/pop cvx] cvx /repeat cvx ] cvx bdf }{ /setcolor ldf } ifelse }{ exec_tint_transform } ifelse } ifelse set_crd /AliasedColorants false def end } def /setindexedcolorspace { dup /indexed_colorspace_dict exch AGMCORE_gput begin currentdict /CSD known { CSD get_csd /Names known { CSD get_csd begin currentdict devncs AGMCORE_host_sep{ 4 dict begin /devnCompCnt Names length def /NewLookup HiVal 1 add string def 0 1 HiVal { /tableIndex xdf Lookup dup type /stringtype eq { devnCompCnt tableIndex map_index }{ exec } ifelse setdevicencolor currentgray tableIndex exch HiVal mul cvi NewLookup 3 1 roll put } for [/Indexed currentcolorspace HiVal NewLookup] setcolorspace_opt end }{ level3 { [/Indexed [/DeviceN Names MappedCSA /TintTransform load] HiVal Lookup] setcolorspace_opt }{ [/Indexed MappedCSA HiVal [ Lookup dup type /stringtype eq {/exch cvx CSD get_csd /Names get length dup /mul cvx exch /getinterval cvx {255 div} /forall cvx} {/exec cvx}ifelse /TintTransform load /exec cvx ]cvx ]setcolorspace_opt }ifelse } ifelse end }{ } ifelse set_crd } { /MappedCSA CSA map_csa def AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or{ pop [/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval {} forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end } bind }{ Lookup }ifelse }ifelse ] setcolorspace_opt set_crd }ifelse }ifelse end }def /setindexedcolor { AGMCORE_host_sep { /indexed_colorspace_dict AGMCORE_gget dup /CSD known { begin CSD get_csd begin map_indexed_devn devn end end }{ AGMCORE_gget/Lookup get 4 3 -1 roll map_index pop setcmykcolor } ifelse }{ level3 not AGMCORE_in_rip_sep and /indexed_colorspace_dict AGMCORE_gget /CSD known and { /indexed_colorspace_dict AGMCORE_gget /CSD get get_csd begin map_indexed_devn devn end } { setcolor } ifelse }ifelse } def /ignoreimagedata { currentoverprint not{ gsave dup clonedict begin 1 setgray /Decode [0 1] def /DataSource def /MultipleDataSources false def /BitsPerComponent 8 def currentdict end systemdict /image get exec grestore }if consumeimagedata }def /add_csa { Adobe_AGM_Core begin /AGMCORE_CSA_cache xput end }def /get_csa_by_name { dup type dup /nametype eq exch /stringtype eq or{ Adobe_AGM_Core begin 1 dict begin /name xdf AGMCORE_CSA_cache { 0 get name eq { exit }{ pop } ifelse }forall end end }{ pop } ifelse }def /map_csa { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSA_cache get exch get }if }def /add_csd { Adobe_AGM_Core begin /AGMCORE_CSD_cache xput end }def /get_csd { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSD_cache get exch get }if }def /pattern_buf_init { /count get 0 0 put } def /pattern_buf_next { dup /count get dup 0 get dup 3 1 roll 1 add 0 xpt get } def /cachepattern_compress { 5 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def /string_size 16000 def /readbuffer string_size string def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal /LZWFilter { exch dup length 0 eq { pop }{ patarray dup length 1 sub 3 -1 roll put } ifelse {string_size}{0}ifelse string } /LZWEncode filter def { ReadFilter readbuffer readstring exch LZWFilter exch writestring not {exit} if } loop LZWFilter closefile patarray end }def /cachepattern { 2 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal { ReadFilter 16000 string readstring exch patarray dup length 1 sub 3 -1 roll put not {exit} if } loop patarray dup dup length 1 sub () put end }def /add_pattern { Adobe_AGM_Core begin /AGMCORE_pattern_cache xput end }def /get_pattern { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_pattern_cache get exch get dup wrap_paintproc }if }def /wrap_paintproc { statusdict /currentfilenameextend known{ begin /OldPaintProc /PaintProc load def /PaintProc { mark exch dup /OldPaintProc get stopped {closefile restore end} if cleartomark } def end } {pop} ifelse } def /make_pattern { dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform exch 3 index /XStep get 1 index exch 2 copy div cvi mul sub sub exch 3 index /YStep get 1 index exch 2 copy div cvi mul sub sub matrix translate exch matrix concatmatrix 1 index begin BBox 0 get XStep div cvi XStep mul /xshift exch neg def BBox 1 get YStep div cvi YStep mul /yshift exch neg def BBox 0 get xshift add BBox 1 get yshift add BBox 2 get xshift add BBox 3 get yshift add 4 array astore /BBox exch def [ xshift yshift /translate load null /exec load ] dup 3 /PaintProc load put cvx /PaintProc exch def end gsave 0 setgray makepattern grestore }def /set_pattern { dup /PatternType get 1 eq{ dup /PaintType get 1 eq{ currentoverprint sop [/DeviceGray] setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{ pop }{ setcolorspace }ifelse }def /updatecolorrendering { currentcolorrendering/Intent known{ currentcolorrendering/Intent get }{ null }ifelse Intent ne{ false Intent AGMCORE_CRD_cache { exch pop begin dup Intent eq{ currentdict setcolorrendering_opt end exch pop true exch exit }if end } forall pop not{ systemdict /findcolorrendering known{ Intent findcolorrendering pop /ColorRendering findresource dup length dict copy setcolorrendering_opt }if }if }if } def /add_crd { AGMCORE_CRD_cache 3 1 roll put }def /set_crd { AGMCORE_host_sep not level2 and{ currentdict/CRD known{ AGMCORE_CRD_cache CRD get dup null ne{ setcolorrendering_opt }{ pop }ifelse }{ currentdict/Intent known{ updatecolorrendering }if }ifelse currentcolorspace dup type /arraytype eq {0 get}if /DeviceRGB eq { currentdict/UCR known {/UCR}{/AGMCORE_currentucr}ifelse load setundercolorremoval currentdict/BG known {/BG}{/AGMCORE_currentbg}ifelse load setblackgeneration }if }if }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /cpaint_gcomp { convert_to_process Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf Adobe_AGM_Core/AGMCORE_ConvertToProcess get not { (%end_cpaint_gcomp) flushinput }if }def /cpaint_gsep { Adobe_AGM_Core/AGMCORE_ConvertToProcess get { (%end_cpaint_gsep) flushinput }if }def /cpaint_gend { newpath }def /path_rez { dup 0 ne{ AGMCORE_deviceDPI exch div dup 1 lt{ pop 1 }if setflat }{ pop }ifelse }def /set_spot_alias_ary { /AGMCORE_SpotAliasAry where{ pop pop }{ Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf true set_spot_alias }ifelse }def /set_spot_alias { /AGMCORE_SpotAliasAry where{ /AGMCORE_current_spot_alias 3 -1 roll put }{ pop }ifelse }def /current_spot_alias { /AGMCORE_SpotAliasAry where{ /AGMCORE_current_spot_alias get }{ false }ifelse }def /map_alias { /AGMCORE_SpotAliasAry where{ begin /AGMCORE_name xdf false AGMCORE_SpotAliasAry{ dup/Name get AGMCORE_name eq{ save exch /Adobe_AGM_Core currentdict def /CSD get get_csd exch restore exch pop true exit }{ pop }ifelse }forall end }{ pop false }ifelse }bdf /spot_alias { true set_spot_alias /AGMCORE_&setcustomcolor AGMCORE_key_known not { Adobe_AGM_Core/AGMCORE_&setcustomcolor /setcustomcolor load put } if /customcolor_tint 1 AGMCORE_gput Adobe_AGM_Core begin /setcustomcolor { dup /customcolor_tint exch AGMCORE_gput current_spot_alias{ 1 index 4 get map_alias{ mark 3 1 roll setsepcolorspace counttomark 0 ne{ setsepcolor }if pop pop }{ AGMCORE_&setcustomcolor }ifelse }{ AGMCORE_&setcustomcolor }ifelse }bdf end }def /begin_feature { Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if }def /end_feature { 2 dict begin /spd /setpagedevice load def /setpagedevice { get_gstate spd set_gstate } def stopped{$error/newerror false put}if end count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if }def /set_negative { Adobe_AGM_Core begin /AGMCORE_inverting exch def level2{ currentpagedevice/NegativePrint known{ currentpagedevice/NegativePrint get Adobe_AGM_Core/AGMCORE_inverting get ne{ true begin_feature true{ bdict /NegativePrint Adobe_AGM_Core/AGMCORE_inverting get edict setpagedevice }end_feature }if /AGMCORE_inverting false def }if }if AGMCORE_inverting{ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer gsave newpath clippath 1 /setseparationgray where{pop setseparationgray}{setgray}ifelse /AGMIRS_&fill where {pop AGMIRS_&fill}{fill} ifelse grestore }if end }def /lw_save_restore_override { /md where { pop md begin initializepage /initializepage{}def /pmSVsetup{} def /endp{}def /pse{}def /psb{}def /orig_showpage where {pop} {/orig_showpage /showpage load def} ifelse /showpage {orig_showpage gR} def end }if }def /pscript_showpage_override { /NTPSOct95 where { begin showpage save /showpage /restore load def /restore {exch pop}def end }if }def /driver_media_override { /md where { pop md /initializepage known { md /initializepage {} put } if md /rC known { md /rC {4{pop}repeat} put } if }if /mysetup where { /mysetup [1 0 0 1 0 0] put }if Adobe_AGM_Core /AGMCORE_Default_CTM matrix currentmatrix put level2 {Adobe_AGM_Core /AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if }def /driver_check_media_override { /PrepsDict where {pop} { Adobe_AGM_Core /AGMCORE_Default_CTM get matrix currentmatrix ne Adobe_AGM_Core /AGMCORE_Default_PageSize get type /arraytype eq { Adobe_AGM_Core /AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and Adobe_AGM_Core /AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and }if { Adobe_AGM_Core /AGMCORE_Default_CTM get setmatrix }if }ifelse }def AGMCORE_err_strings begin /AGMCORE_bad_environ (Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. ) def /AGMCORE_color_space_onhost_seps (This job contains colors that will not separate with on-host methods. ) def /AGMCORE_invalid_color_space (This job contains an invalid color space. ) def end end systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 2.23 0 %%Copyright: Copyright 1997-2003 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.23 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict /Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined { /Adobe_CoolType_Core userdict /Adobe_CoolType_Core get def } if userdict /Adobe_CoolType_Core 60 dict dup begin put /Adobe_CoolType_Version 2.23 def /Level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if def Level2? not { /currentglobal false def /setglobal /pop load def /gcheck { pop false } bind def /currentpacking false def /setpacking /pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking /@_SaveStackLevels { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup /args 7 index 5 add array put put get } { get dup /args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch /args exch put } { pop } ifelse } ifelse begin count 2 sub 1 index lt { pop count 1 sub } if dup /argCount exch def dup 0 gt { exch 1 index 2 add 1 roll args exch 0 exch getinterval astore pop } { pop } ifelse count 1 sub /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def end } bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt { { pop } repeat } { pop } ifelse args 0 argCount getinterval {} forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse } bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end } bind def /@Raise { exch cvx exch errordict exch get exec stop } bind def /@ReRaise { cvx $error /errorname get errordict exch get exec stop } bind def /@Stopped { 0 @#Stopped } bind def /@#Stopped { @_SaveStackLevels stopped { @_RestoreStackLevels true } { @_PopStackLevels false } ifelse } bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get /args get exch get end } bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup begin mark { (*) { pop stop } 128 string /Category resourceforall } stopped cleartomark currentdict eq dup { end } if not } { false } ifelse def /CTHasResourceStatusBug Level2? { mark { /steveamerige /Category resourcestatus } stopped { cleartomark true } { cleartomark currentglobal not } ifelse } { false } ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse end } bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad /ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup /CMap CTHasResourceStatusBug { CTResourceStatus } { resourcestatus } ifelse { pop dup 0 eq exch 1 eq or { dup /CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug { exit } { stop } ifelse } ifelse } { pop } ifelse } 128 string /CMap resourceforall } stopped { cleartomark } stopped pop setglobal } if } if } bind def /doc_setup { Adobe_CoolType_Core begin CTWorkAroundBugs /mov /moveto load def /nfnt /newencodedfont load def /mfnt /makefont load def /sfnt /setfont load def /ufnt /undefinefont load def /chp /charpath load def /awsh /awidthshow load def /wsh /widthshow load def /ash /ashow load def /sh /show load def end userdict /Adobe_CoolType_Data 10 dict dup begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end put } bind def /doc_trailer { currentdict Adobe_CoolType_Core eq { end } if } bind def /page_setup { Adobe_CoolType_Core begin } bind def /page_trailer { end } bind def /unload { systemdict /languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known { undef } { pop pop } ifelse } if } if } bind def /ndf { 1 index where { pop pop pop } { dup xcheck { bind } if def } ifelse } def /findfont systemdict begin userdict begin /globaldict where { /globaldict get begin } if dup where pop exch get /globaldict where { pop end } if end end Adobe_CoolType_Core_Defined { /systemfindfont exch def } { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont { pop } ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq { 0 } { dup length } ifelse 2 index length add 1 add dict begin exch { 1 index /FID eq { pop pop } { def } ifelse } forall dup null eq { pop } { { def } forall } ifelse currentdict end exch setglobal } bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal } bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } { FontDirectory 3 index known { FontDirectory 3 index get /FontReferenced known } { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } ifelse } ifelse dup { 3 index findfont /FontReferenced get 2 index dup type /nametype eq {findfont} if ne { pop false } if } if { pop 1 index findfont /Encoding get exch 0 1 255 { 2 copy get 3 index 3 1 roll put } for pop pop pop } { dup type /nametype eq { findfont } if dup dup maxlength 2 add dict begin exch { 1 index /FID ne {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type /stringtype eq { cvn } if def dup currentdict end definefont def } ifelse } bind def /SetSubstituteStrategy { $SubstituteFont begin dup type /dicttype ne { 0 dict } if currentdict /$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin { def } forall { def } forall currentdict dup /$Init known { dup /$Init get exec } if end /$Strategy exch def } { pop pop pop } ifelse } { pop pop } ifelse end } bind def /scff { $SubstituteFont begin dup type /stringtype eq { dup length exch } { null } ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse def end { findfont } @Stopped { dup length 8 add string exch 1 index 0 (BadFont:) putinterval 1 index exch 8 exch dup length string cvs putinterval cvn { findfont } @Stopped { pop /Courier findfont } if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end } bind def /isWidthsOnlyFont { dup /WidthsOnly known { pop pop true } { dup /FDepVector known { /FDepVector get { isWidthsOnlyFont dup { exit } if } forall } { dup /FDArray known { /FDArray get { isWidthsOnlyFont dup { exit } if } forall } { pop } ifelse } ifelse } ifelse } bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 4 index def /$doSmartSub false def end 3 index currentglobal false setglobal exch /CompatibleFonts /ProcSet resourcestatus { pop pop /CompatibleFonts /ProcSet findresource begin dup /CompatibleFont currentexception 1 index /CompatibleFont true setexception 1 index /Font resourcestatus { pop pop 3 2 roll setglobal end exch dup findfont /CompatibleFonts /ProcSet findresource begin 3 1 roll exch /CompatibleFont exch setexception end } { 3 2 roll setglobal 1 index exch /CompatibleFont exch setexception end findfont $SubstituteFont /$substituteFound true put } ifelse } { exch setglobal findfont } ifelse $SubstituteFont begin $substituteFound { false (%%[Using embedded font ) print 5 index ?str1 cvs print ( to avoid the font substitution problem noted earlier.]%%\n) print } { dup /FontName known { dup /FontName get $fontname eq 1 index /DistillerFauxFont known not and /currentdistillerparams where { pop false 2 index isWidthsOnlyFont not and } if } { false } ifelse } ifelse exch pop /$doSmartSub true def end { exch pop exch pop exch 2 dict dup /Found 3 index put exch findfont exch } { exch exec exch dup findfont dup /FontType get 3 eq { exch ?str1 cvs dup length 1 sub -1 0 { exch dup 2 index get 42 eq { exch 0 exch getinterval cvn 4 1 roll 3 2 roll pop exit } {exch pop} ifelse }for } { exch pop } ifelse 2 dict dup /Downloaded 6 5 roll put } ifelse dup /FontName 4 index put copyfont definefont pop } bind def /?str2 256 string def /?add { 1 index type /integertype eq { exch true 4 2 } { false 3 1 } ifelse roll 1 index findfont dup /Widths known { Adobe_CoolType_Data /AddWidths? true put gsave dup 1000 scalefont setfont } if /Downloaded known { exec exch { exch ?str2 cvs exch findfont /Downloaded get 1 dict begin /Downloaded 1 index def ?str1 cvs length ?str1 1 index 1 add 3 index putinterval exch length 1 add 1 index add ?str1 2 index (*) putinterval ?str1 0 2 index getinterval cvn findfont ?str1 3 index (+) putinterval 2 dict dup /FontName ?str1 0 6 index getinterval cvn put dup /Downloaded Downloaded put end copyfont dup /FontName get exch definefont pop pop pop } { pop } ifelse } { pop exch { findfont dup /Found get dup length exch ?str1 cvs pop ?str1 1 index (+) putinterval ?str1 1 index 1 add 4 index ?str2 cvs putinterval ?str1 exch 0 exch 5 4 roll ?str2 cvs length 1 add add getinterval cvn 1 dict exch 1 index exch /FontName exch put copyfont dup /FontName get exch definefont pop } { pop } ifelse } ifelse Adobe_CoolType_Data /AddWidths? get { grestore Adobe_CoolType_Data /AddWidths? false put } if } bind def /?sh { currentfont /Downloaded known { exch } if pop } bind def /?chp { currentfont /Downloaded known { pop } { false chp } ifelse } bind def /?mv { currentfont /Downloaded known { moveto pop pop } { pop pop moveto } ifelse } bind def setpacking userdict /$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known { get } { pop pop { pop /Courier } bind } ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams /CannotEmbedFontPolicy 2 copy known { get /Error eq } { pop pop false } ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup /WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type /stringtype eq { cvn } if def /FontType 3 def /FontMatrix [ .001 0 0 .001 0 0 ] def /Encoding 256 array dup 0 1 255 { /.notdef put dup } for pop def /FontBBox [ 0 0 0 0 ] def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth /y exch def /x exch def x y setcharwidth $SubstituteFont /$Strategy get /$Underprint get exec 0 0 moveto cc show x y moveto end end } bind def currentdict end exch setglobal } bind def /$GetaTint 2 dict dup begin /$BuildFont { dup /WMode known { dup /WMode get } { 0 } ifelse /$WMode exch def $fontname exch dup /FontName known { dup /FontName get dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse exch Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index /FontName get known { pop Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index get null copyfont } { $deepcopyfont } ifelse exch 1 index exch /FontBasedOn exch put dup /FontName $fontname dup type /stringtype eq { cvn } if put definefont Adobe_CoolType_Data /InVMDeepCopiedFonts get begin dup /FontBasedOn get 1 index def end } bind def /$Underprint { gsave x abs y abs gt { /y 1000 def } { /x -1000 def 500 120 translate } ifelse Level2? { [ /Separation (All) /DeviceCMYK { 0 0 0 1 pop } ] setcolorspace } { 0 setgray } ifelse 10 setlinewidth x .8 mul [ 7 3 ] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? { .2 setcolor } { .8 setgray } ifelse fill grestore stroke } forall pop grestore } bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict /FontName known { FontName dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse def /FontName $fontname dup type /stringtype eq { cvn } if def /currentdistillerparams where { pop } { /FontInfo currentdict /FontInfo known { FontInfo null copyfont } { 2 dict } ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [ 1 0 ItalicAngle dup sin exch cos div 1 0 0 ] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal } bind def end def /$None 1 dict dup begin /$BuildFont {} bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type /stringtype eq { cvn } if dup /$fontname exch def $sname null eq { $str cvs dup length $slen sub $slen getinterval } { pop $sname } ifelse $fontpat dup 0 (fonts/*) putinterval exch 7 exch putinterval /$match false def $SubstituteFont /$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval { /$match exch def exit } $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont /$dstack get { exch { 1 index eq { pop false } { true } ifelse } { begin false } ifelse } forall pop } if cleartomark /$slen 0 def $match false ne { $match (fonts/) anchorsearch pop pop cvn } { /Courier } ifelse } bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [ /Ryumin-Light /HeiseiMin-W3 /GothicBBB-Medium /HeiseiKakuGo-W5 /HeiseiMaruGo-W4 /Jun101-Light ] def /Korea1 [ /HYSMyeongJo-Medium /HYGoThic-Medium ] def /GB1 [ /STSong-Light /STHeiti-Regular ] def /CNS1 [ /MKai-Medium /MHei-Medium ] def end def end def /$cmapname null def /$deepcopyfont { dup /FontType get 0 eq { 1 dict dup /FontName /copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup /FontName /copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } { $Strategies /$Type3Underprint get exec } ifelse } bind def /$buildfontname { dup /CIDFont findresource /CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index (-) putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy (-) putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch { pop pop 3 2 roll putinterval cvn /$cmapname exch def } { pop pop pop pop pop } ifelse length $str 1 index (-) putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn } bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known { get } { pop pop [] } ifelse } { pop pop [] } ifelse false exch { dup /CIDFont resourcestatus { pop pop save 1 index /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get } { false } ifelse exch pop exch restore { pop } { exch pop true exit } ifelse } { pop } ifelse } forall { $str cvs $buildfontname } { false (*) { save exch dup /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get not } { true } ifelse exch /CIDSystemInfo get dup /Registry get Registry eq exch /Ordering get Ordering eq and and { exch restore exch pop true exit } { pop restore } ifelse } $str /CIDFont resourceforall { $buildfontname } { $fontname $findfontByEnum } ifelse } ifelse } bind def end end currentdict /$error known currentdict /languagelevel known and dup { pop $error /SubstituteFont known } if dup { $error } { Adobe_CoolType_Core } ifelse begin { /SubstituteFont /CMap /Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq { dup $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse Adobe_CoolType_Data /InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } { FontDirectory 1 index known { exch pop true exit } { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } ifelse } ifelse } forall } { pop pop false } ifelse { exch pop exch pop } { dup /CMap resourcestatus { pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS } { 128 string cvs dup (-) search { 3 1 roll search { 3 1 roll pop { dup cvi } stopped { pop pop pop pop pop $findfontByEnum } { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup /CMap resourcestatus { pop pop 4 1 roll pop pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS true exit } { pop } ifelse } for dup type /booleantype eq { pop } { pop pop pop $findfontByEnum } ifelse } ifelse } { pop pop pop $findfontByEnum } ifelse } { pop pop $findfontByEnum } ifelse } ifelse } ifelse } { //SubstituteFont exec } ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $findfontByEnum } { //SubstituteFont exec } ifelse end } } ifelse bind readonly def Adobe_CoolType_Core /scfindfont /systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup /FontName known { dup /FontName get dup 3 index ne } { /noname true } ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def /$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin { 1 index /FID eq { pop pop } { def } ifelse } forall currentdict end definefont dup /FontName known { dup /FontName get } { null } ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using ) print dup /FontName known { dup /FontName get } { (unspecified font) } ifelse $str cvs print (.\n) print } if } { exch pop } ifelse } { exch pop } ifelse end } bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core /findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type /stringtype ne { $str cvs } if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne { dup $inVMIndex $AddInVMFont } if $doSmartSub { currentdict /$Strategy known { $Strategy /$BuildFont get exec } if } if } if end } bind put } if } if end /$AddInVMFont { exch /FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data /InVMFontsByCMap get exch $DictAdd } { pop pop pop } ifelse } bind def /$DictAdd { 2 copy known not { 2 copy 4 index length dict put } if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get { forall } def 2 copy currentdict put end } { pop } ifelse } if get begin { def } forall end } bind def end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.19 0 %%Copyright: Copyright 1987-2003 Adobe Systems Incorporated. %%Version: 1.19 0 systemdict /languagelevel known dup { currentglobal false setglobal } { false } ifelse exch userdict /Adobe_CoolType_Utility 2 copy known { 2 copy get dup maxlength 25 add dict copy } { 25 dict } ifelse put Adobe_CoolType_Utility begin /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch /eCCRun known not ct_Level2? and or def ct_Level2? { globaldict begin currentglobal true setglobal } if /ct_AddStdCIDMap ct_Level2? { { ((Hex) 57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77) 0 () /SubFileDecode filter cvx exec } } { { eexec } } ifelse bind def userdict /cid_extensions known dup { cid_extensions /cid_UpdateDB known and } if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type /stringtype eq { exch cvn exch } if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq { pop pop cid_UpdateDB } { exch 1 index /Created get eq { exch pop exch pop } { pop cid_UpdateDB } ifelse } ifelse } { pop cid_UpdateDB } ifelse } { cid_UpdateDB } ifelse end } bind def end } if ct_Level2? { end setglobal } if /ct_UseNativeCapability? systemdict /composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring () def /usewidths? true def end def ct_Level2? { setglobal } { pop } ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict /languagelevel known { pop /CIDFont findresource /GlyphDirectory get } { 1 index /CIDFont findresource /GlyphDirectory get dup type /dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + } def /+ { systemdict /languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } { 1 dict begin } ifelse /$ exch def systemdict /languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ? { $ begin } if } def /? { $ type /dicttype eq } def /| { userdict /Adobe_CoolType_Data known { Adobe_CoolType_Data /AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data /CC 3 index put ? { def } { $ 3 1 roll put } ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont /Widths get exch CC exch put } { ? { def } { $ 3 1 roll put } ifelse } ifelse end end } { ? { def } { $ 3 1 roll put } ifelse } ifelse } { ? { def } { $ 3 1 roll put } ifelse } ifelse } def /! { ? { end } if systemdict /languagelevel known { gvm setglobal } if end } def /: { string currentfile exch readstring pop } executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx [.001 0 0 .001 0 0] def /ct_1000Mtx [1000 0 0 1000 0 0] def /ct_raise {exch cvx exch errordict exch get exec stop} bind def /ct_reraise { cvx $error /errorname get (Error: ) print dup ( ) cvs print errordict exch get exec stop } bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop } bind def /ct_GetInterval { Adobe_CoolType_Utility /ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt { dup string /dst_string exch def } if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add /dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add /dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt { arrayIndex get } { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end } bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal { /unknowninstancename /Category resourcestatus } stopped { cleartomark setglobal true } { cleartomark currentglobal not exch setglobal } ifelse { { mark 3 1 roll /Category findresource begin ct_Vars /vm currentglobal put ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse ct_Vars /vm get setglobal end } } { { resourcestatus } } ifelse bind def /CIDFont /Category ct_resourcestatus { pop pop } { currentglobal true setglobal /Generic /Category findresource dup length dict copy dup /InstanceType /dicttype put /CIDFont exch /Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering (Identity) def /Supplement 0 def end def /CMapName /Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } { pop pop /defineresource /undefined ct_raise } ifelse } bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known { get 3 1 roll pop pop} { pop pop /findresource /undefinedresource ct_raise } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /ct_resourcestatus /resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup (Binary) eq { pop null currentfile ct_Level2? { { cid_BYTE_COUNT () /SubFileDecode filter } stopped { pop pop pop } if } if /readstring load exit } if dup (Hex) eq { pop currentfile ct_Level2? { { null exch /ASCIIHexDecode filter /readstring } stopped { pop exch pop (>) exch /readhexstring } if } { (>) exch /readhexstring } ifelse load exit } if /StartData /typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch /GlyphData exch put 2 index null eq { pop pop pop } { pop /readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse } bind def /StartData { mark { currentdict dup /FDArray get 0 get /FontMatrix get 0 get 0.001 eq { dup /CDevProc known not { /CDevProc 1183615869 internaldict /stdCDevProc 2 copy known { get } { pop pop { pop pop pop pop pop 0 -1000 7 index 2 div 880 } } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp /cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul } def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup /cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup /SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup /SubrMapOffset undef dup /SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } { pop } ifelse } forall } if cleartomark pop pop end CIDFontName currentdict /CIDFont defineresource pop end end } stopped { cleartomark /StartData ct_reraise } if } bind def currentdict end def /ct_saveCIDInit { /CIDInit /ProcSet ct_resourcestatus { true } { /CIDInitC /ProcSet ct_resourcestatus } ifelse { pop pop /CIDInit /ProcSet findresource ct_UseNativeCapability? { pop null } { /CIDInit ct_CIDInit /ProcSet defineresource pop } ifelse } { /CIDInit ct_CIDInit /ProcSet defineresource pop null } ifelse ct_Vars exch /ct_oldCIDInit exch put } bind def /ct_restoreCIDInit { ct_Vars /ct_oldCIDInit get dup null ne { /CIDInit exch /ProcSet defineresource pop } { pop } ifelse } bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility /ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge { pop 0 } if /cid exch def { GlyphDirectory cid 2 copy known { get } { pop pop nullstring } ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne { 0 FDBytes ct_cvnsi } { pop 0 } ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq { /charstring nullstring def exit } if /cid 0 def } ifelse } loop } def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto } def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont /Widths get cid 2 copy known { get exch pop aload pop } { pop pop stringwidth } ifelse } { stringwidth } ifelse setcharwidth 0 0 moveto } ifelse } def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known { get } { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup /FontMatrix 2 copy known { get } { pop pop ct_defaultFontMtx } ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont /Widths get def /CharStrings 1 dict dup /.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup /CharStrings get 1 index /Encoding get ct_dfCharCode get charstring put rootfont /WMode 2 copy known { get } { pop pop 0 } ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } { ct_str1 show } ifelse } def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup /FontMatrix get dup ct_defaultFontMtx ct_matrixeq not { ct_1000Mtx matrix concatmatrix concat } { pop } ifelse /Private get Adobe_CoolType_Utility /ct_Level2? get not { ct_dfDict /Private 3 -1 roll { put } 1183615869 internaldict /superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility /ct_Level2? get { 1 index } { 3 index /Private get mark 6 1 roll } ifelse dup /RunInt known { /RunInt get } { pop /CCRun } ifelse get exec Adobe_CoolType_Utility /ct_Level2? get not { cleartomark } if } bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility /ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped { stop } if end end end end } bind def /BaseFontNameStr (BF00) def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /BuildChar /ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString /ct_Type3ShowCharString load def /ct_dfSetCacheProc /ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup /lenIV 4 put def /CharStrings 1 dict dup /.notdef put def /PaintType 0 def /ct_ShowCharString /ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not { exit } if } for exch pop exch pop } bind def /ct_makeocf { 15 dict begin exch /WMode exch def exch /FontName exch def /FontType 0 def /FMapType 2 def dup /FontMatrix known { dup /FontMatrix get /FontMatrix exch def } { /FontMatrix matrix def } ifelse /bfCount 1 index /CIDCount get 256 idiv 1 add dup 256 gt { pop 256} if def /Encoding 256 array 0 1 bfCount 1 sub { 2 copy dup put pop } for bfCount 1 255 { 2 copy bfCount put pop } for def /FDepVector bfCount dup 256 lt { 1 add } if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont /FontBBox known { CIDFont /FontBBox get /FontBBox exch def } if CIDFont /CDevProc known { CIDFont /CDevProc get /CDevProc exch def } if currentdict end BaseFontNameStr 3 (0) putinterval 0 1 bfCount dup 256 eq { 1 sub } if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup /CIDFirstByte exch 256 mul def FontType 3 eq { /ct_FDDict 2 dict def } if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? { /Widths 1 index /CIDFont get /GlyphDirectory get length dict def } if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont /Widths get begin exch /CIDFont get /GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } { exch pop } ifelse } bind def /ct_ComposeFont { ct_UseNativeCapability? { 2 index /CMap ct_resourcestatus { pop pop exch pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch /WMode exch def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity)} ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def /ct_MakeIdentity { ct_UseNativeCapability? { 1 index /CMap ct_resourcestatus { pop pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity) } ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { exch pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def currentdict readonly pop end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2003 Adobe Systems Incorporated. %%Version: 1.0 0 userdict /ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge } bind def /AllocGlyphStorage { Is2015? { pop } { {string} forall } ifelse } bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix [1 0 0 1 0 0] def 4 array astore cvx /FontBBox exch def /sfnts } bind def /Type42DictEnd { currentdict dup /FontName get exch definefont end ct_T42Dict exch dup /FontName get exch put } bind def /RD {string currentfile exch readstring pop} executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop } ifelse } bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop } ifelse } bind def end %%EndResource Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Image 75 dict dup begin put /Adobe_AGM_Image_Id /Adobe_AGM_Image_1.0_0 def /nd{ null def }bind def /AGMIMG_&image nd /AGMIMG_&colorimage nd /AGMIMG_&imagemask nd /AGMIMG_mbuf () def /AGMIMG_ybuf () def /AGMIMG_kbuf () def /AGMIMG_c 0 def /AGMIMG_m 0 def /AGMIMG_y 0 def /AGMIMG_k 0 def /AGMIMG_tmp nd /AGMIMG_imagestring0 nd /AGMIMG_imagestring1 nd /AGMIMG_imagestring2 nd /AGMIMG_imagestring3 nd /AGMIMG_imagestring4 nd /AGMIMG_imagestring5 nd /AGMIMG_cnt nd /AGMIMG_fsave nd /AGMIMG_colorAry nd /AGMIMG_override nd /AGMIMG_name nd /AGMIMG_maskSource nd /invert_image_samples nd /knockout_image_samples nd /img nd /sepimg nd /devnimg nd /idximg nd /doc_setup { Adobe_AGM_Core begin Adobe_AGM_Image begin /AGMIMG_&image systemdict/image get def /AGMIMG_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMIMG_&colorimage /colorimage ldf }if end end }def /page_setup { Adobe_AGM_Image begin /AGMIMG_ccimage_exists {/customcolorimage where { pop /Adobe_AGM_OnHost_Seps where { pop false }{ /Adobe_AGM_InRip_Seps where { pop false }{ true }ifelse }ifelse }{ false }ifelse }bdf level2{ /invert_image_samples { Adobe_AGM_Image/AGMIMG_tmp Decode length ddf /Decode [ Decode 1 get Decode 0 get] def }def /knockout_image_samples { Operator/imagemask ne{ /Decode [1 1] def }if }def }{ /invert_image_samples { {1 exch sub} currenttransfer addprocs settransfer }def /knockout_image_samples { { pop 1 } currenttransfer addprocs settransfer }def }ifelse /img /imageormask ldf /sepimg /sep_imageormask ldf /devnimg /devn_imageormask ldf /idximg /indexed_imageormask ldf /_ctype 7 def currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and{ bind }if def }forall }def /page_trailer { end }def /doc_trailer { }def /imageormask_sys { begin save mark level2{ currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMIMG_&imagemask }{ BitsPerComponent ImageMatrix /DataSource load AGMIMG_&image }ifelse }ifelse cleartomark restore end }def /overprint_plate { currentoverprint { 0 get dup type /nametype eq { dup /DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false exch { AGMOHS_sepink eq or } forall not } ifelse }{ pop false }ifelse }def /process_mask_L3 { dup begin /ImageType 1 def end 4 dict begin /DataDict exch def /ImageType 3 def /InterleaveType 3 def /MaskDict 9 dict begin /ImageType 1 def /Width DataDict dup /MaskWidth known {/MaskWidth}{/Width} ifelse get def /Height DataDict dup /MaskHeight known {/MaskHeight}{/Height} ifelse get def /ImageMatrix [Width 0 0 Height neg 0 Height] def /NComponents 1 def /BitsPerComponent 1 def /Decode [0 1] def /DataSource AGMIMG_maskSource def currentdict end def currentdict end }def /use_mask { dup type /dicttype eq { dup /Mask known { dup /Mask get { level3 {true} { dup /MaskWidth known {dup /MaskWidth get 1 index /Width get eq}{true}ifelse exch dup /MaskHeight known {dup /MaskHeight get 1 index /Height get eq}{true}ifelse 3 -1 roll and } ifelse } {false} ifelse } {false} ifelse } {false} ifelse }def /make_line_source { begin MultipleDataSources { [ Decode length 2 div cvi {Width string} repeat ] }{ Width Decode length 2 div mul cvi string }ifelse end }def /datasource_to_str { exch dup type dup /filetype eq { pop exch readstring }{ /arraytype eq { exec exch copy }{ pop }ifelse }ifelse pop }def /masked_image_simulation { 3 dict begin dup make_line_source /line_source xdf /mask_source AGMIMG_maskSource /LZWDecode filter def dup /Width get 8 div ceiling cvi string /mask_str xdf begin gsave 0 1 translate 1 -1 Height div scale 1 1 Height { pop gsave MultipleDataSources { 0 1 DataSource length 1 sub { dup DataSource exch get exch line_source exch get datasource_to_str } for }{ DataSource line_source datasource_to_str } ifelse << /PatternType 1 /PaintProc [ /pop cvx << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1.0 sub 1 matrix scale 0.5 0 matrix translate matrix concatmatrix /MultipleDataSources MultipleDataSources /DataSource line_source /BitsPerComponent BitsPerComponent /Decode Decode >> /image cvx ] cvx /BBox [0 0 Width 1] /XStep Width /YStep 1 /PaintType 1 /TilingType 2 >> matrix makepattern set_pattern << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1 matrix scale /MultipleDataSources false /DataSource mask_source mask_str readstring pop /BitsPerComponent 1 /Decode [0 1] >> imagemask grestore 0 1 translate } for grestore end end }def /imageormask { begin SkipImageProc { currentdict consumeimagedata } { save mark level2 AGMCORE_host_sep not and{ currentdict Operator /imagemask eq DeviceN_PS2 not and { imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get /DeviceGray eq and{ [/Separation /Black /DeviceGray {}] setcolorspace /Decode [ Decode 1 get Decode 0 get ] def }if use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and { Names convert_to_process not { 2 dict begin /imageDict xdf /names_index 0 def gsave imageDict write_image_file { Names { dup (None) ne { [/Separation 3 -1 roll /DeviceGray {1 exch sub}] setcolorspace Operator imageDict read_image_file names_index 0 eq {true setoverprint} if /names_index names_index 1 add def }{ pop } ifelse } forall close_image_file } if grestore end }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load /Adobe_AGM_OnHost_Seps where { pop imagemask }{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator /colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ AGMCORE_is_cmyk_sep{ MultipleDataSources{ /DataSource [ DataSource 0 get /exec cvx DataSource 1 get /exec cvx DataSource 2 get /exec cvx DataSource 3 get /exec cvx /AGMCORE_get_ink_data cvx ] cvx def }{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul /DataSource load filter_cmyk 0 () /SubFileDecode filter def }ifelse /Decode [ Decode 0 get Decode 1 get ] def /MultipleDataSources false def /NComponents 1 def /Operator /image def invert_image_samples 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }{ MultipleDataSources NComponents AGMIMG_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator /image eq{ AGMCORE_host_sep{ /DoImage true def HostSepColorImage{ invert_image_samples }{ AGMCORE_black_plate not Operator/imagemask ne and{ /DoImage false def currentdict ignoreimagedata }if }ifelse 1 AGMCORE_&setgray DoImage {currentdict imageormask_sys} if }{ use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ image }ifelse }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentcolorspace overprint_plate not{ knockout_unitsq }if }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin /MappedCSA CSA map_csa def begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_avoid_L2_sep_space{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def }if AGMIMG_ccimage_exists MappedCSA 0 get /DeviceCMYK eq and currentdict/Components known and Name () ne and Name (All) ne and Operator /image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load /exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for } /exec cvx ] cvx bind MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ AGMCORE_avoid_L2_sep_space not currentcolorspace 0 get /Separation ne and{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator /imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentdict/ImageMatrix get concat knockout_unitsq }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name (All) ne and{ level2{ [ /Separation Name [/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub } bind ] AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor currentdict imageormask_sys }{ currentdict Operator /imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name (All) eq or Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentcolorspace 0 get /Separation ne{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentoverprint MappedCSA 0 get /DeviceCMYK eq and Name inRip_spot_has_ink not and Name (All) ne and { imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse end end }def /decode_image_sample { 4 1 roll exch dup 5 1 roll sub 2 4 -1 roll exp 1 sub div mul add } bdf /colorSpaceElemCnt { currentcolorspace 0 get dup /DeviceCMYK eq { pop 4 } { /DeviceRGB eq { pop 3 }{ 1 } ifelse } ifelse } bdf /devn_sep_datasource { 1 dict begin /dataSource xdf [ 0 1 dataSource length 1 sub { dup currentdict /dataSource get /exch cvx /get cvx /exec cvx /exch cvx names_index /ne cvx [ /pop cvx ] cvx /if cvx } for ] cvx bind end } bdf /devn_alt_datasource { 11 dict begin /srcDataStrs xdf /dstDataStr xdf /convProc xdf /origcolorSpaceElemCnt xdf /origMultipleDataSources xdf /origBitsPerComponent xdf /origDecode xdf /origDataSource xdf /dsCnt origMultipleDataSources {origDataSource length}{1}ifelse def /samplesNeedDecoding 0 0 1 origDecode length 1 sub { origDecode exch get add } for origDecode length 2 div div dup 1 eq { /decodeDivisor 2 origBitsPerComponent exp 1 sub def } if 2 origBitsPerComponent exp 1 sub ne def [ 0 1 dsCnt 1 sub [ currentdict /origMultipleDataSources get { dup currentdict /origDataSource get exch get dup type }{ currentdict /origDataSource get dup type } ifelse dup /filetype eq { pop currentdict /srcDataStrs get 3 -1 /roll cvx /get cvx /readstring cvx /pop cvx }{ /stringtype ne { /exec cvx } if currentdict /srcDataStrs get /exch cvx 3 -1 /roll cvx /xpt cvx } ifelse ] cvx /for cvx currentdict /srcDataStrs get 0 /get cvx /length cvx 0 /ne cvx [ 0 1 Width 1 sub [ Adobe_AGM_Utils /AGMUTIL_ndx /xddf cvx currentdict /origMultipleDataSources get { 0 1 dsCnt 1 sub [ Adobe_AGM_Utils /AGMUTIL_ndx1 /xddf cvx currentdict /srcDataStrs get /AGMUTIL_ndx1 /load cvx /get cvx /AGMUTIL_ndx /load cvx /get cvx samplesNeedDecoding { currentdict /decodeDivisor known { currentdict /decodeDivisor get /div cvx }{ currentdict /origDecode get /AGMUTIL_ndx1 /load cvx 2 /mul cvx 2 /getinterval cvx /aload cvx /pop cvxs BitsPerComponent /decode_image_sample load /exec cvx } ifelse } if ] cvx /for cvx }{ Adobe_AGM_Utils /AGMUTIL_ndx1 0 /ddf cvx currentdict /srcDataStrs get 0 /get cvx /AGMUTIL_ndx /load cvx currentdict /origDecode get length 2 idiv dup 3 1 /roll cvx /mul cvx /exch cvx /getinterval cvx [ samplesNeedDecoding { currentdict /decodeDivisor known { currentdict /decodeDivisor get /div cvx }{ currentdict /origDecode get /AGMUTIL_ndx1 /load cvx 2 /mul cvx 2 /getinterval cvx /aload cvx /pop cvx BitsPerComponent /decode_image_sample load /exec cvx Adobe_AGM_Utils /AGMUTIL_ndx1 /AGMUTIL_ndx1 /load cvx 1 /add cvx /ddf cvx } ifelse } if ] cvx /forall cvx } ifelse currentdict /convProc get /exec cvx currentdict /origcolorSpaceElemCnt get 1 sub -1 0 [ currentdict /dstDataStr get 3 1 /roll cvx /AGMUTIL_ndx /load cvx currentdict /origcolorSpaceElemCnt get /mul cvx /add cvx /exch cvx currentdict /convProc get /filter_indexed_devn load ne { 255 /mul cvx /cvi cvx } if /put cvx ] cvx /for cvx ] cvx /for cvx currentdict /dstDataStr get ] cvx /if cvx ] cvx bind end } bdf /devn_imageormask { /devicen_colorspace_dict AGMCORE_gget begin /MappedCSA CSA map_csa def 2 dict begin dup dup /dstDataStr exch /Width get colorSpaceElemCnt mul string def /srcDataStrs [ 3 -1 roll begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi string } repeat end ] def begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_producing_seps not { level3 not { Operator /imagemask ne { /DataSource [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse colorSpaceElemCnt /devicen_colorspace_dict AGMCORE_gget /TintTransform get dstDataStr srcDataStrs devn_alt_datasource /exec cvx ] cvx 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def } if }if currentdict imageormask }{ AGMCORE_host_sep{ Names convert_to_process { CSA map_csa 0 get /DeviceCMYK eq { /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse 4 /devicen_colorspace_dict AGMCORE_gget /TintTransform get dstDataStr srcDataStrs devn_alt_datasource /exec cvx ] cvx filter_cmyk 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode [1 0] def /DeviceGray setcolorspace currentdict imageormask_sys }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate { /DataSource [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse CSA map_csa 0 get /DeviceRGB eq{3}{1}ifelse /devicen_colorspace_dict AGMCORE_gget /TintTransform get dstDataStr srcDataStrs devn_alt_datasource /exec cvx ] cvx 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def currentdict imageormask_sys } { gsave knockout_unitsq grestore currentdict consumeimagedata } ifelse } ifelse } { /devicen_colorspace_dict AGMCORE_gget /names_index known { Operator/imagemask ne{ MultipleDataSources { /DataSource [ DataSource devn_sep_datasource /exec cvx ] cvx def /MultipleDataSources false def }{ /DataSource /DataSource load dstDataStr srcDataStrs 0 get filter_devn def } ifelse invert_image_samples } if currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentdict imageormask }ifelse }ifelse cleartomark restore }ifelse end end end }def /imageormask_l2_overprint { currentdict currentcmykcolor add add add 0 eq{ currentdict consumeimagedata }{ level3{ currentcmykcolor /AGMIMG_k xdf /AGMIMG_y xdf /AGMIMG_m xdf /AGMIMG_c xdf Operator/imagemask eq{ [/DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK {}] setcolorspace AGMIMG_c 0 ne {AGMIMG_c} if AGMIMG_m 0 ne {AGMIMG_m} if AGMIMG_y 0 ne {AGMIMG_y} if AGMIMG_k 0 ne {AGMIMG_k} if setcolor }{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def [/Indexed [ /DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK { AGMIMG_k 0 eq {0} if AGMIMG_y 0 eq {0 exch} if AGMIMG_m 0 eq {0 3 1 roll} if AGMIMG_c 0 eq {0 4 1 roll} if } ] 255 { 255 div mark exch dup dup dup AGMIMG_k 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_y 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_m 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_c 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop counttomark 1 roll }{ pop }ifelse counttomark 1 add -1 roll pop } ] setcolorspace }ifelse imageormask_sys }{ write_image_file{ currentcmykcolor 0 ne{ [/Separation /Black /DeviceGray {}] setcolorspace gsave /Black [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Yellow /DeviceGray {}] setcolorspace gsave /Yellow [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Magenta /DeviceGray {}] setcolorspace gsave /Magenta [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Cyan /DeviceGray {}] setcolorspace gsave /Cyan [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore } if close_image_file }{ imageormask }ifelse }ifelse }ifelse } def /indexed_imageormask { begin save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget dup /CSA known { /CSA get map_csa }{ /CSD get get_csd /Names get } ifelse overprint_plate not{ knockout_unitsq }if }{ Indexed_DeviceN { /devicen_colorspace_dict AGMCORE_gget /names_index known { indexed_image_lev2_sep }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata } ifelse }{ AGMCORE_is_cmyk_sep{ Operator /imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ level2{ Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget begin CSD get_csd begin }{ /indexed_colorspace_dict AGMCORE_gget begin CSA map_csa 0 get /DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and { [/Indexed [/DeviceN [/Cyan /Magenta /Yellow /Black] /DeviceCMYK {}] HiVal Lookup] setcolorspace } if end } ifelse imageormask Indexed_DeviceN { end end } if }{ Operator /imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin Indexed_DeviceN not { currentcolorspace dup 1 /DeviceGray put dup 3 currentcolorspace 2 get 1 add string 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub { dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put }for put setcolorspace } if currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse end end }def /OPIimage { dup type /dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /ImageType 1 def /Decode [0 1 def] currentdict end }if dup begin /NComponents 1 cdndf /MultipleDataSources false cdndf /SkipImageProc {false} cdndf /HostSepColorImage false cdndf /Decode [ 0 currentcolorspace 0 get /Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ] cdndf /Operator /image cdndf end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cachemask_level2 { 3 dict begin /LZWEncode filter /WriteFilter xdf /readBuffer 256 string def /ReadFilter currentfile 0 (%EndMask) /SubFileDecode filter /ASCII85Decode filter /RunLengthDecode filter def { ReadFilter readBuffer readstring exch WriteFilter exch writestring not {exit} if }loop WriteFilter closefile end }def /cachemask_level3 { currentfile << /Filter [ /SubFileDecode /ASCII85Decode /RunLengthDecode ] /DecodeParms [ << /EODCount 0 /EODString (%EndMask) >> null null ] /Intent 1 >> /ReusableStreamDecode filter }def /spot_alias { /mapto_sep_imageormask { dup type /dicttype ne{ 12 dict begin /ImageType 1 def /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def }{ begin }ifelse /Decode [/customcolor_tint AGMCORE_gget 0] def /Operator /image def /HostSepColorImage false def /SkipImageProc {false} def currentdict end sep_imageormask }bdf /customcolorimage { Adobe_AGM_Image/AGMIMG_colorAry xddf /customcolor_tint AGMCORE_gget bdict /Name AGMIMG_colorAry 4 get /CSA [ /DeviceCMYK ] /TintMethod /Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components [ AGMIMG_colorAry aload pop pop ] edict setsepcolorspace mapto_sep_imageormask }ndf Adobe_AGM_Image/AGMIMG_&customcolorimage /customcolorimage load put /customcolorimage { Adobe_AGM_Image/AGMIMG_override false put dup 4 get map_alias{ /customcolor_tint AGMCORE_gget exch setsepcolorspace pop mapto_sep_imageormask }{ AGMIMG_&customcolorimage }ifelse }bdf }def /snap_to_device { 6 dict begin matrix currentmatrix dup 0 get 0 eq 1 index 3 get 0 eq and 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop { 1 1 dtransform 0 gt exch 0 gt /AGMIMG_xSign? exch def /AGMIMG_ySign? exch def 0 0 transform AGMIMG_ySign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch AGMIMG_xSign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch itransform /AGMIMG_llY exch def /AGMIMG_llX exch def 1 1 transform AGMIMG_ySign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch AGMIMG_xSign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch itransform /AGMIMG_urY exch def /AGMIMG_urX exch def [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY] concat }{ }ifelse end } def level2 not{ /colorbuf { 0 1 2 index length 1 sub{ dup 2 index exch get 255 exch sub 2 index 3 1 roll put }for }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Image begin /AGMIMG_mbuf 0 string def /AGMIMG_ybuf 0 string def /AGMIMG_kbuf 0 string def { colorbuf dup length AGMIMG_mbuf length ne { dup length dup dup /AGMIMG_mbuf exch string def /AGMIMG_ybuf exch string def /AGMIMG_kbuf exch string def } if dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop } addprocs {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf} true 4 colorimage end } def /sep_imageormask_lev1 { begin MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get } currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ {AGMIMG_k mul 1 exch sub} currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMIMG_k mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_y mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_m mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_c mul 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get /DeviceGray eq { {255 mul round cvi ColorLookup exch get 0 get} currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf {AGMIMG_c mul 1 exch sub} {AGMIMG_m mul 1 exch sub} {AGMIMG_y mul 1 exch sub} {AGMIMG_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceGray eq { {HiVal mul round cvi Lookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def }if end systemdict /setpacking known { setpacking } if %%EndResource currentdict Adobe_AGM_Utils eq {end} if %%EndProlog %%BeginSetup Adobe_AGM_Utils begin 2 2010 Adobe_AGM_Core/doc_setup get exec Adobe_CoolType_Core/doc_setup get exec Adobe_AGM_Image/doc_setup get exec currentdict Adobe_AGM_Utils eq {end} if %%EndSetup %%Page: (htmlparser cmyk.eps) 1 %%EndPageComments %%BeginPageSetup /currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 Adobe PDF library 6.66 2004-05-31T17:22:14-04:00 2004-06-01T13:25:22Z Illustrator 2004-05-31T17:22:15-04:00 JPEG 256 216 /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA2AEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYqpXN1bW0RluJFijHVnIA/HFUlk80tcEppFlLfHp6tDHEP9k39mKqT W/nW83e4gsEP7CDk330b/iWKrG8n30293rE8teoFafixxVZ/yr7Tju11MW7n4f6YqpN+XkA3ivnR h0JQH9RXFVI+VfM9pvZakWA6LzdP+F3XFVNta856XvewetEOrugYU/14/wCOKpjp/nzTJyEu0a1c /tfbT7xv+GKsjgngnjEsMiyxt0dCGB+kYqqYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FWiQBU9MVSyXUru6YxaVGrgGj3slfRXx4U3kPy298VWw+XbUyie/dtQuR+3Pui/6sY+ED FU1ACgBRQDYAdMVbxV2KuxV2KuxV2KpRqflbR78FmhEMx/3bF8Jr7jofpGKsWudE8w+X5Dc2MrS2 43Z4+lB/vyM1/jiqd6F5ztL0rBeAW1ydg1f3bn2J+yfY4qyXFXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYqtd1RSzGijck4qg3tpL4/6SClp+zbdDJ7y+3+R9/gFUaqqqhVAVQKADYAYq3i rsVdirsVdirsVdirsVdirsVYz5g8m214GuLALBddWj6I/wDzScVSvQPNF1p0/wCjdWDekh4B3+3F 7HxXFWcqysoZSGVhVWG4IPcYq3irsVdirsVdirsVdirsVdirsVdirsVdirsVdiqldXVtaW0t1dSp BbQI0k88jBEREFWZmNAAAKknFUt0a4vNUA1SeN7WzcV0+zkBWQxnpPOp+yz9VQ7qPtfESqqpvirs VdirsVdirsVdirsVdirsVdirsVdiqS+Y/LkGrQclpHeRj91L2I/lb2/VirH/ACvr8+m3R0nUqpEG 4IX/AN1P4H/JOKs6xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVg09yfOXmybSojy8r+W5l/Sz j7F7qa0kjtKjYxWu0kw7vwU7K4KrOcVdirsVdirsVdirsVdirEtR/Nr8sdNvp7C/80aba3tq7RXF vLcxq8bqaMrKTUEHFUP/AMrr/KP/AKm/Sv8ApKi/rirIfL3mjy75ksnvtA1K31SzjkMElxayLKiy qqsULLXcK6mnviqaYq7FXYq7FWM+cvL4vbc31uv+lwD4wP20H8V7Yq35L103tobOdq3NsBxY9Xj6 A/NehxVkuKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsM/NbzleeWvLKppKiXzLrU8el+XrcivK8uTx V2H8kS1kYnbah64qnHkvyrZ+VfLNhoVqxlFpH+/uX+3PO55zTydfjlkZnPzxVO8VdirsVdirsVdi rsVdir84Pzq/8m55v/7at1/ydOKsKxV9qf8AOFX/AJKzVf8AtuXH/UJaYq+gMVdirsVdirsVef63 bSeX/MMV/bAi3lb1FUbDf+8j/HFWeQTxzwRzRHlHKodD4hhUYqqYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXkOjzr52/P3U78n1NG/Ly2/R9kOqtql8D9ZkHvHGhibwNMVevYq7FXYq7FXYq7FXYq7FXYq/ OD86v/Jueb/+2rdf8nTirCsVfan/ADhV/wCSs1X/ALblx/1CWmKvf6ioFdzuB3oMVbxV2KuxV2Kp R5p0waho8yKKzQj1YfGq9R9IqMVS/wAh6gZ9Me0c1e1b4f8AUfcfjXFWT4q7FXYq7FUNLqOnxOY5 bqGORftI0igj5gnFV0F7Z3DFYJ45WAqVR1YgeOxxVXxV2KuxV2KrY5I5F5RsHWpHJSCKqaEbeBFM VSzzVr1v5e8s6rrtwKw6XaTXbL05ejGXCj3YigxV8B+U/wA+/wAzPKlvfQaLqMUK6jdy6hevJbwz PJczU5uzyKzb8Rtir6V8r/8AORkOj/klp3m/zncLqHmC/muorOwgWOGS5aGdkFFQcURFA5vx29yQ Cq8B82/85Q/m75guZGt9V/QlkzExWenKsXFe1ZiGmY06/FT2GKpBafnr+cFrOs8Xm3UWddwJpjMn jukvND9IxV9HfkD/AM5PS+atSh8rec/Rg1q4+HTNSiURx3L0/upV+ykp/Z40VulAaclU+/PP/nJP SvIMj6FokceqeauIM0cnL6vaBgGUzcSpd2BqEVhtuSNqqvlzV/8AnIT85NVuWnm80XdvU/DFZlbW NR4BYQn41OKq/l7/AJyN/OPRLxLhPMU+oRhuUlrqNLqJx/Kef7xR/qMpxV9gfkn+dej/AJm6JLIk YsdesOI1PTeXIAN9maFju0bU+anY9iVXpOKvzg/Or/ybnm//ALat1/ydOKsKxV9qf84Vf+Ss1X/t uXH/AFCWmKpD/wA5oaxq2j3/AJE1DSbyawvoTqhiubeRopF/3j6MpBxVjf5df85la/p4hsfO9iNX tRRTqdoFiu1Hi8XwxS/Rw+nFX075K/MjyT51shdeW9VhvqCstsDwuIv+MkL8ZF+dKHsTirJcVdir sVYPoq/ovznPZDaKbmiDtQj1E/pirOMVdirsVdir89v+ckP/ACdvmn/jPD/1DRYqz/8A5wm/5T/X f+2Uf+omLFX2VirsVQGvazaaHoWo61ehzZ6XazXtyIwGcxW8bSvxBIq3FTTfFXxX+an/ADlV5082 etp3l7n5d0JqqRC/+mTL0/eTLTgD/LH8izYq+mf+cbyT+SXlYncmCb/qKlxVJv8AnLHXW0v8mtQg RuMmrXNtYK1aGhf13A+aQMD7Yq+DsVVJLieWOKOSRnjgUpAjEkIpYuVUHoOTlvmcVU8VdiqrbXNx a3EVzbyNDcQOskMqEqyOh5KykdCCKjFXXV1c3dzLdXUrz3M7tJPPIxd3dzVmZjUkkmpJxVSxV2Kv Rv8AnHzzVceW/wA3PL1xHJwgv7hdNvFrRWivGEXxeyyFX/2OKv0OxV+cH51f+Tc83/8AbVuv+Tpx VhWKvtT/AJwq/wDJWar/ANty4/6hLTFUP/zl/wDl95x81WHly+8u6XLqkWkfXvr8dvR5lFx9X9Mr ED6kn9y32AcVfG00M0ErwzI0U0bFZI3BVlYGhDA7gjFVbT9R1DTbyK90+5ls7yBuUNzA7RyI3irq QwxV79+XX/OYvmzSPRsvONqNesFopvouMV8q+J6RS0HiFJ7tir6g8i/mt5C882yy+XdWiuLjjyl0 +Q+ldx0684Ho9B/MKr4HFWW4qwvzUv1XzPpt6NgxTl78H3/4VsVZpiqF1PVdM0qxlv8AU7uGxsYB ymurh1iiQeLO5AGKvnr8x/8AnMjy7phksfJFn+mrxaqdSuQ8Vmp/yE+GWX/hB4E4q9J/IDzhr3nD 8s7HX9dnW41K7nuhI6IsahUndEVVQAAKoA8fHFXx5/zkh/5O3zT/AMZ4f+oaLFU1/wCcb/zI8vfl 9rPmHXdbdin6M9K0tIqGW4na4jKxpXYbKSSdgMVZLq3/ADmp+Yk96X0vSdMsrINWOCZJriQjweQS RA/7FFxV69+Rf/OS1n+YGof4e1uzj0vzGUaS2MDMba6CDk4jDkvG6rvxLNUAmvbFUg/5yi/O3X/K moXHkazsbSfT9e0N/rNzN6nrJ9ca4tX4cXVfhWOoqOuKvjvFXuX5b/8AOUfm/wAq+X9H8p2ek6fP ZWZ9COeYT+qVlmLknjIq1q/hir0//nN2+KeUvLdhy2nv5Zyu+5gh4V8NvWxV8fYq9u/5xc/KLRvP fmTUNR1+L6xouhpEWs6lVnuJy3pq5G5RVjYsAdzx7VBVfSP5qfkT+X/mHyVqFvY6HZaZqtpbSSaV eWUEds6SxIWRG9ILzjanEq1djUb74q+AMVdir64/5xZ/I/ypd+UIvOnmTTotUvNSkkGm292iywQw QuYufpPVWd3RjVhsKU8Sqp/85X/k35SsPKY856BYQ6Ve2c8UN/BaosME0MzcAxiQBRIshXcDcE1r tir5LxVNvKLMvmvRWUlWW/tirDYgiZdxir9PsVfnB+dX/k3PN/8A21br/k6cVYVir7U/5wq/8lZq v/bcuP8AqEtMVfQGKsQ88/lN5A87wsvmHSIbi5K8U1CMeldJTpSZKOQP5Wqvtir5v8//APOGGv2X qXfknUV1W3G4029KwXQHgkopDIf9bh9OKvn3X/LXmDy7ftp+u6dcabeL1huY2jYjxXkPiX3G2KoK 0u7qzuY7q0mkt7mFg8M8TFJEYdGVlIIPyxV7/wDlR/zlf58sNR0/RPMiJ5gsLiaO2W6kPpXkfqME DeqAVl41qea8j/Nir6h/MJaQWMw+0juAfmAf+NcVeLfmL/zmZotmJrHyLYnUrkVUareq0VsP8qOH 4ZZP9lw+nFXzbr/mz8xPzH1yMajc3mvalKxFpYwozha9oLeIcV/2K/PFXq35f/8AOHnnbWfSu/Nd zH5esGoxtRSe9Zev2VPpx1H8zEjuuKvrPyH5I0XyR5XtPLmjGU2NpzKvOweRmkYu7MQFG7N2AGKv hb/nJD/ydvmn/jPD/wBQ0WKsc/Lj8vNd8/8AmmDy9o3ppPIjTT3ExIihhjpzkfiCerBQANyRiqe/ nF+SfmD8sL2wj1C6h1Cy1JZDa3kAZRzi4+pG6N9lhzUjc1H04qkn5Vajc6d+Zfla7tmKyx6rZjba qPOqOp9mRipxV9S/85N/kddebJbzz3Hq8dpFoGhy87BoS7S/UjcXRpIHULzEnH7Jpir4wxV9Bflh /wA4q6h5s8r6L5uj8xRWkd7WcWbWrOyiKZkpzEi1r6fhirMv+c4v+OX5R/4z3v8AxCHFXyXir6// AOcIf+UW8y/8x0P/ACZxV9Fat/xyr3/jBL/xA4q/LbFXYq/RP8gAB+TXlMAUH1FTt4l2JxVIP+cs P/JJav8A8Z7P/qJTFXwXiqa+U/8AlKdG/wCY62/5PLir9P8AFX5wfnV/5Nzzf/21br/k6cVYVir7 U/5wq/8AJWar/wBty4/6hLTFX0BirsVQ9/qFhp9pJeX9zFZ2cI5TXM7rFGg8WdyFH04q+efzf/5y a/KObT59EttIj86uaikyBLFH6chLIpdmHYxr8mGKvkG/uYbm9nuILWOyhldnjtITI0cSk1CIZWkk IX/KYn3xVG+U/wDlKdG/5jrb/k8uKv0W/MEE6bbAbkz7D/YnFX53+a/JXmrylqJ07zHpk+m3W/AT L8EgHVopBVJF91JGKvY/yT/5yV0TyPZx6Rqnla2jtCAsuq6UgjvHp+1cLIT6x9+a07DFX1b5J/M/ yJ52txL5b1iC9kC8pLOvp3MY784JOMgH+VSngcVZTir89v8AnJD/AMnb5p/4zw/9Q0WKs+/5wmA/ 5WBrhpuNJIB70NzDirNf+c3kQ+WPLLlRzF7OA1NwDECRX3oMVfMP5e/8p95a/wC2rY/9RKYq/Qn8 2P8AyVnnL/th6l/1CSYq/NbFX6E/843f+SS8rf8AGCb/AKiZcVeef85t6e0nkjy/qAAIttSaAtQV HrwO3Xr/ALoxV8c4q+v/APnCH/lFvMv/ADHQ/wDJnFX0Vq3/AByr3/jBL/xA4q/LbFXYq/RT8gf/ ACTflP8A5gV/4k2Ksf8A+csP/JJav/xns/8AqJTFXwXiqa+U/wDlKdG/5jrb/k8uKv0/xV+cH51f +Tc83/8AbVuv+TpxVhWKvtT/AJwq/wDJWar/ANty4/6hLTFXsvmrzp5U8p2H1/zHqlvplsa+mZ3o 8hWnIRRiryEV6IpOKvnbz/8A85pW6epaeRdLMzbj9KakCqfOO3Q8j7F2H+rir5x84/mF5085XYuv Mur3GospLRRO3GCMnb93CgWJP9iuKsdxV6p+XP8Azjf+ZXnZY7tLQaPo8lCNR1ANGHU94YqepJt0 NAp/mxV9Tflr/wA40flz5KMN7Lb/AKd1yKjDUb5VKI435QW+8cdDuCeTD+bFWZ+cV9a80e07zT7/ ACqo/wCNsVTnWtD0bXNPl03WLGDULCb+8trmNZEPgaMDuOx6jFXzr+Yv/OGejXhmvvIt+dNnNWGk 3paW2J/ljn+KWP8A2Qf5jFXzV5p8j+e/IWqpHrWn3WkXcb1trxaiNmHRobiMlG/2LVxV9vf842+Y db8wflHpOpa1ey6hftJcxvdTtzkZYp3ROTHdiFFKnfFXyL/zkh/5O3zT/wAZ4f8AqGixVn//ADhN /wAp/rv/AGyj/wBRMWKs1/5ze/5Rby1/zHTf8mcVfMH5e/8AKfeWv+2rY/8AUSmKv0Z876RNrPkv X9HgFZtS027tIgDT4p4HjXc+7Yq/Mh0dHZHUq6khlIoQR1BGKvUfy3/Pz8x/LFppXliw1JI9CivI z6bwRSOkMk/OaNXKluL8m9xXYjFX1R/zlHoLav8AkxrLRjlNprQX8YpXaKULIfakTucVfAmKvr// AJwh/wCUW8y/8x0P/JnFX0Vq3/HKvf8AjBL/AMQOKvy2xV2Kv0U/IH/yTflP/mBX/iTYqx//AJyw /wDJJav/AMZ7P/qJTFXwXiqa+U/+Up0b/mOtv+Ty4q/T/FX5wfnV/wCTc83/APbVuv8Ak6cVYVir 7U/5wq/8lZqv/bcuP+oS0xViv/Oc/wD0xP8A29P+xTFXysASaDcnFXrf5df84x/mV5wMV1c236A0 aSjfXr9SsjIe8VvtI/iOXFT/ADYq+pvy6/5xx/LXyUIrlLL9MazHRv0nqAWRlcd4oqenHQ9CBy/y jir1LFXYqxy5X6350t06x2EBkceDNUD/AIkuKsjxV2KoXU9K0zVbGWw1O0hvrGccZrW4RZYnHgyO CDiqB8q+U9B8q6Quj6DbfU9NjkklitgzOqNM5kcKXLNTkxoK7Yq8785f84xflv5u8zX3mLVZdRXU NQZXnEE8aR1RFjHFTExGyDviqbflp+RHkn8utWutU0CS9e5u4Pq0oupUkXhzV9gsab1QYqmf5mfl P5X/ADGsbKy8wPcpDYStNAbWRY25OvE8iySVFMVYRpH/ADiT+VmlarZapbTambmwniuYA9xGV5wu HXkBEKiq74q9qxV5D57/AOcXfyw836tcaxIl3pOo3TNJcyadJGkcsrdZHiljlWpO7ceNTud8VSLT P+cMvystZUlu73Vb8qamKSeGOM7/APFUKP8A8Pir27W9JtdY0a/0i7Xlaajby2twvWscyGNvwbFX 5xaR+WnmrWPO915K0+CN9ftZbiFraSRIQz2pIkCtIVBoFLfLFX1//wA4v/ll5w8haDrdp5mtUtZ7 26jlt1SWOaqLHxJrGzU3xV7HqELzWFzDGKySROiDpuykDFXwl/0Kh+dv/Vng/wCky2/6qYq7/oVD 87f+rPB/0mW3/VTFX2P+Unl7VPLn5b+X9D1aMQ6jYWqxXMSsrhXDE0DKSp69sVSj8/vJ2v8AnD8s dR0HQYFuNTuJbZ4ondIgRFOrt8TlV+yuKvk//oVD87f+rPB/0mW3/VTFUw8v/wDOLf5zWevabd3G kwrBbXUEsrC8tjREkVmNA/gMVfcuKvjD8zf+ca/zc138wvMWs6bpcMun6hfz3FrI11boWjkcspKs 4I28cVYz/wBCofnb/wBWeD/pMtv+qmKvpn/nGb8vfNPkTyHf6R5ltktb6fVJbuONJY5gYnt7eMHl GWH2om2xVR/P78k9Y/NDUvK0VpfQ6dp+l/XTqF1KGkkAuPq/ARRCnM/um6soxVOPy5/5x9/LfyKY 7mysf0jq6UP6Vv8AjNMreMS0EcXsVXl4k4q9KxV2KuxVokKCxNANyT4YqkXliM3D32rsN76YiGv+ +ozxX/P2xVPsVdirsVdirsVdirsVdirsVdirsVdir5B/5yb0LUvIX5taL+ZWiJwW+kjncivAXtpx V0enRZoeNR+18eKvqjyn5m0zzR5b07zBpj87HUoFni3BKk7MjU/aRgVYeIxVM5pPTieSleClqeNB XFXlv/K9P+1J/wBPX/XnFVex/O+yluUjvNLe2gYgNMkwlK17lSkew+eKsm87eeYPLFtZzC2F694z emgk9McFAJblxev2hirFI/zyQyKH0bghIDOLmpAruaekK4qzrzX5iGg6FLqog+tCMoBEH4BhIwWv Li/j4YqwP/len/ak/wCnr/rziqceVvzZsdb1SLTriyaxlnJWB/UEqM1KhT8KEV7Yq7zd+a1noeoy abaWhvbmGgncvwjRiK8RQMWI74qkVv8Anjcgj6xpKOO5jmKmn0o2Ksn87/mL/hfUILT9H/XPXi9X n63pU+IrSnB/5cVY7/yvT/tSf9PX/XnFWSzfmD6XkiDzR9Qr68hj+p+tSlJWjr6nD/Ir9nFWNf8A K9P+1J/09f8AXnFU58q/mvY65qkemz2LWU09RA/qCVGYCvEnjGRWm2Ks8xVKvMM0ptEsbc0ub9vR T2Q/3j/JVxVMLW3itreK3iFI4lCIPYCmKquKuxV2KuxV2KuxV2KuxV2KuxV2KuxViH5r/l9ZefvI 2oeXZ+KXEq+tp1y4qIbqOpifbem5Vqfsk4q+c/8AnFv8y7zyj5ovPyx808rSO4uXSxWc0NvqCng9 ua9pivw/5fT7eKvrW7/3lm/4xt+o4q+ZtHvbex1O3u7i1S9ghflJayU4SD+U1Dj8MVRF6za9rznS 9PW2a8dRBYW4qq7AUFAo7VOwGKsg/NK6YazZ6Vz5jSrOGBz1rIVDMfpXjirHNXbS2Sw+oMxK2qLe cl40uKsXp4jcb4q9L1zU/wBI/k3BcE8nVYIZD35QyiM1+fGuKvPPLnmCPRpLiR9Pt9Q9dAgW5Xkq GtagUxVkH5VeWH1PW49TM8awaZIskkNT6rNSse1Ps1717UxV3njybqr+aNQns2guYp5TKeM8Kuhf 4ijo7qwIr9IxVJovN3mKzuUjupFuUt24va3McciEKaFSCp8OoxVkX5yzLPrGmTKKLLZK4B8Gdjiq S6Lb+YX02FrTRbS7tzy4XEsETu3xmtWY1NDtirMPMyXaflJbLd20dpcCcc7eJVRF/fvSirsKjfFW AeXvMEejpdh9Ot7/AOsoEBuV5CMiu67d64qyP8p/LL6jrSaqZ0WHTX5PCCfVZ2U8NqUC+/tTFXtz MqqWY0UCpJ6ADFUs02Nrq6k1WUEBx6dkh/ZhrXnTxkO/ypiqaYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXzX/zlZ+SkupW7/mF5ciP6UsUB1u3iB5SwRD4blKb84VHx/5Ar+zuqyH/AJx0/PSHz5on +GddnCebrKEqJXoPrsCinrL4yr/uxf8AZDvxVZPoP5Py6brFrfTahHcxW7h3gMJAcU6bsR+GKvRo LKzt2LQQRxMRQlEVSR9AxV5zrX5Q3mq6zd6jLqqL9amaTh6RJVSdlry7LtiqJ1z8m9GuY4hpEhsH Un1WfnMGBGwoWFKYqr235bXkXk678uPqKOLidZ45/SICUKkrx5b14eOKoLTPydjt7HULW7vlnN3G ogkWIqYpUPJX3Y18CPDFVXyt+WOreXtYi1C31dGUfBcQ+iwEkZ+0p+P6R74qo+bPyovtZ1y71S3v 4oxckMIpEYcSqBacgTXp4YqhNI/JNkuo5NUv0kgQhnggU1en7PNiKD6MVT7zz+XUvmW/trqK9S0W 3h9H0zGXrRi1RRl8cVY3/wAqNuv+rvH/AMiT/wA14qyif8v5pPItv5Y+uqJIJDIbr0zQ1laSnDl/ l064qlem/lBHb6XqVldXqzteLGbeVYypikiLEPQsa15UPtiqr5T/ACz1Xy7rEeoQasjx/YuIPSYC SM9V+317j3xVmtwhvZPq/wDx6If9Ib+cj/dY9v5/u8cVRuKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxVLPMfmPRfLei3Wta1dJZ6bZpznnf7gqgbszHZVG5OwxV8X+av+cq/Ot/+Ylp5g0dmtNA0x2S1 0N2olxA+0n1vjUM8i9Ovp7cdwSVV/njyPY6jYx/m/wDlBJLFZRSi41fSLc0u9Jux8bOipv6VdyBs o3HwfZVe4fkP/wA5I6V54hg0HzE8en+bVASPokF7Qfairssv80f0r4Kq9wxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KpEmtS6vem20Zg1jbSmPUNUHxR842o9vB/O9fhdx8KGq7uCFVTxVVVCqKKOgxVvFXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FUs8x+Y9F8t6Lda1rV0lnptmnOed/uCqBuzMdlUbk7DFXwX+d 353a1+ZWtUHOz8tWbn9GaZXr29eemzSsPoUbDuSq8yxV77/zif5F8/X/AJrHmTS72bSPLVqwj1O4 oCl6BubVY2BV/wDKanwdR8VMVeh/nZ/zinBqc03mT8vlSy1XkZbnRARFBK1a87ZthC9f2fsHtx7q sX/LT/nKTzR5QvP8LfmbZ3NzHaN6L38ikahb02pOj0Mw6fFs9N/ixV9S+WfNnlvzRpiap5f1GHUr F/8AdsLVKk78XQ0dG/yWAOKpvirsVdirsVdirsVdirsVSTzV5z8s+VbFb3Xb+OzjkbhbxmrzTSHY RwwoGklc1+yinFWPW0Pm/wA6n1dUhn8s+VG+zpfLhqt6n/L06H/RImH+6o29Q/tMu6lVm1paWtna xWlpClvawIscEEShERFFFVVWgAA7DFVbFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUs8x+Y9F8t6Ld a1rV0lnptmnOed/uCqBuzMdlUbk7DFXwX+d353a1+ZWtUHOz8tWbn9GaZXr29eemzSsPoUbDuSq8 yxV65+Q35Dap+Y2qC/vxJZ+UrOSl5eDZ53G5ggJ/a/mboo96DFX3Zo+j6Xo2l22laVbR2enWcYit raIUREHYfrJO5O5xVGYqxD8wfyo8jefrL0PMWnrLcIpS21GH93dQg7/BKAdq78WBX2xV8367/wA4 yfm15C1J9b/LbWZL5EqVSCT6pehAa8HRm9GZfbl8X8mKorQP+ct/P/lm7XSfzG8tvNPHtJMI2sLw D+ZoZF9N/wDYhBir1zy1/wA5Rfk3rior6u2k3DgH6vqUTQ0+cq+pB/yUxV6LpXmjyzrChtJ1ey1F W6G0uIpwe/8AutmxVNMVdiqTax5y8o6KrHV9bsNP4V5C6uYYTsadHYHrtirz/W/+cnvypsZxaaZd 3PmLUXPGOy0i2kndm7BXcRxt/sWOKoe31z8//O5A03Srb8vNFfrqGpAXuplelY7UhEQ+KyqPY4qy vyb+U3lry5efpid59d8zutJvMOqyG4ut61WLlVYU3ICxgbbEnFWbYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FUs8x+Y9F8t6Lda1rV0lnptmnOed/uCqBuzMdlUbk7DFXwX+d353a1+ZWtUHOz8tWbn 9GaZXr29eemzSsPoUbDuSq8yxV65+Q35Dap+Y2qC/vxJZ+UrOSl5eDZ53G5ggJ/a/mboo96DFX3Z o+j6Xo2l22laVbR2enWcYitraIUREHYfrJO5O5xVGYq7FXYq7FUDq+haJrVr9U1jT7bUrU7+hdwp PHXx4yBhirzLX/8AnFj8mNXLOmkSaXM25ksJ5I/ujcyRD6ExVhOof84R+TXLfo/zFqNuP2RcJBPT 58Fgrirrf/nDu4tv95vP+oQVFD6cBTYdvhuBiqJj/wCcO9NuG/3MedNXvwRxcKFQlf5ayNPirJND /wCcTPya0whrixutWdaFWvrl6VHitv8AV0P0jFXpvl/yl5W8uQGDQdJtNLjYUcWkMcRan85UAt9O KpvirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqWeY/Mei+W9Futa1q6Sz02zTnPO/3BVA3ZmOy qNydhir4L/O787ta/MrWqDnZ+WrNz+jNMr17evPTZpWH0KNh3JVeZYq9c/Ib8htU/MbVBf34ks/K VnJS8vBs87jcwQE/tfzN0Ue9Bir7s0fR9L0bS7bStKto7PTrOMRW1tEKIiDsP1kncnc4qjMVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqWeY/Mei+W9Futa1q6 Sz02zTnPO/3BVA3ZmOyqNydhir4L/O787ta/MrWqDnZ+WrNz+jNMr17evPTZpWH0KNh3JVeZYq9c /Ib8htU/MbVBf34ks/KVnJS8vBs87jcwQE/tfzN0Ue9Bir7s0fR9L0bS7bStKto7PTrOMRW1tEKI iDsP1kncnc4qjMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd iqWeY/Mei+W9Futa1q6Sz02zTnPO/wBwVQN2ZjsqjcnYYq+C/wA7vzu1r8ytaoOdn5as3P6M0yvX t689NmlYfQo2HclV5lir1z8hvyG1T8xtUF/fiSz8pWclLy8GzzuNzBAT+1/M3RR70GKvuzR9H0vR tLttK0q2js9Os4xFbW0QoiIOw/WSdydziqMxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KpZ5j8x6L5b0W61rWrpLPTbNOc87/cFUDdmY7Ko3J2GKvgv87vzu1r 8ytaoOdn5as3P6M0yvXt689NmlYfQo2HclV5lir1z8hvyG1T8xtUF/fiSz8pWclLy8GzzuNzBAT+ 1/M3RR70GKvuzR9H0vRtLttK0q2js9Os4xFbW0QoiIOw/WSdydziqMxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV8J/85RfmJ5m1/8AMPUfLl27W+i6BOYb KwXZWfiK3ElD8TuG+H+Vdh1aqrxfFXrn5DfkNqn5jaoL+/Eln5Ss5KXl4NnncbmCAn9r+Zuij3oM Vfdmj6PpejaXbaVpVtHZ6dZxiK2tohREQdh+sk7k7nFUZirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeDf85D/wDOOb+e5/8AE3lpo4fM0cYjuraU8I7x IxRPj6JKq/CC2xFASKVxV41+W3/OKHn7VfM8MfnGwfRfL8B53svrQvLKB0ihEbybserHYDfc0BVf aWj6PpejaXbaVpVtHZ6dZxiK2tohREQdh+sk7k7nFUZirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVf/2Q== uuid:12412b8a-b3cd-11d8-ad73-000a277a9196 application/postscript % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 Adobe_AGM_Utils begin Adobe_AGM_Core/page_setup get exec Adobe_CoolType_Core/page_setup get exec Adobe_AGM_Image/page_setup get exec %%EndPageSetup Adobe_AGM_Core/AGMCORE_save save ddf 1 -1 scale 0 -301.323 translate [1 0 0 1 0 0 ] concat % page clip gsave newpath gsave % PSGState 0 0 mo 0 301.323 li 360.077 301.323 li 360.077 0 li clp [1 0 0 1 0 0 ] concat 177.679 174.472 mo 180.605 174.472 li 182.324 174.472 182.981 173.569 182.981 172.192 cv 182.981 170.628 182.272 169.939 180.605 169.939 cv 177.679 169.939 li 177.679 174.472 li cp 168.563 163.406 mo 184.725 163.406 li 191.267 163.406 192.098 168.373 192.098 171.723 cv 192.098 176.348 189.445 180.604 183.736 180.604 cv 177.679 180.604 li 177.679 185.73 li 168.563 185.73 li 168.563 163.406 li false sop /0 [/DeviceCMYK] add_csa 0 0 0 0.5 cmyk f 205.513 168.596 mo 205.437 168.596 li 203.545 176.754 li 207.459 176.754 li 205.513 168.596 li cp 198.289 163.406 mo 212.737 163.406 li 218.548 185.73 li 209.126 185.73 li 208.546 182.882 li 202.508 182.882 li 201.827 185.73 li 192.53 185.73 li 198.289 163.406 li f 231.125 174.007 mo 233.933 174.007 li 236.001 174.007 236.454 173.161 236.454 171.499 cv 236.454 170.096 235.7 169.537 234.085 169.537 cv 231.125 169.537 li 231.125 174.007 li cp 222.007 163.406 mo 239.082 163.406 li 243.174 163.406 245.574 165.753 245.574 169.972 cv 245.574 174.414 242.796 176.222 239.968 176.504 cv 246.23 185.73 li 235.445 185.73 li 231.173 178.54 li 231.125 178.54 li 231.125 185.73 li 222.007 185.73 li 222.007 163.406 li f 269.876 163.78 mo 269.876 169.782 li 268.183 169.599 264.368 168.877 261.767 168.877 cv 259.439 168.877 258.76 169.316 258.76 170.031 cv 258.76 170.536 259.141 171.038 260.806 171.038 cv 263.308 171.038 li 268.637 171.038 270.457 173.569 270.457 178.318 cv 270.457 185.509 264.621 186.386 259.439 186.386 cv 255.958 186.386 253.177 186.261 250.146 185.448 cv 250.146 178.884 li 251.915 179.381 254.617 179.569 256.943 179.569 cv 259.77 179.569 261.086 179.537 261.086 178.634 cv 261.086 177.631 260.301 177.566 258.961 177.566 cv 256.462 177.566 li 252.974 177.566 249.386 176.348 249.386 171.159 cv 249.386 163.938 254.998 162.751 260.529 162.751 cv 263.181 162.751 267.196 163.222 269.876 163.78 cv f 274.803 163.406 mo 295.162 163.406 li 295.162 170.469 li 283.918 170.469 li 283.918 172.599 li 295.162 172.599 li 295.162 177.784 li 283.918 177.784 li 283.918 179.885 li 295.162 179.885 li 295.162 185.73 li 274.803 185.73 li 274.803 163.406 li f 309.732 174.007 mo 312.536 174.007 li 314.608 174.007 315.063 173.161 315.063 171.499 cv 315.063 170.096 314.305 169.537 312.688 169.537 cv 309.732 169.537 li 309.732 174.007 li cp 300.616 163.406 mo 317.687 163.406 li 321.782 163.406 324.18 165.753 324.18 169.972 cv 324.18 174.414 321.402 176.222 318.572 176.504 cv 324.838 185.73 li 314.052 185.73 li 309.783 178.54 li 309.732 178.54 li 309.732 185.73 li 300.616 185.73 li 300.616 163.406 li f 135.481 129.515 mo 130.214 94.0767 142.054 60.0562 164.758 35.7735 cv 139.195 60.2457 125.474 96.3052 131.07 133.974 cv 140.233 195.657 197.657 238.23 259.337 229.066 cv 285.575 225.171 308.337 212.514 325.147 194.531 cv 308.855 210.133 287.76 221.041 263.747 224.608 cv 202.068 233.772 144.643 191.195 135.481 129.515 cv 0 0 0 1 cmyk f 358.837 96.334 mo 349.675 34.6495 292.248 -7.92188 230.566 1.24073 cv 204.327 5.13721 181.566 17.7916 164.758 35.7735 cv 181.051 20.1749 202.146 9.26563 226.16 5.69874 cv 287.836 -3.46485 345.266 39.1119 354.424 100.793 cv 359.691 136.232 347.853 170.252 325.147 194.531 cv 350.71 170.064 364.432 134.004 358.837 96.334 cv 0 0 0 0.3 cmyk f 73.461 300.442 mo 73.587 300.56 li 167.588 206.373 li 167.429 206.211 li 163.172 203.661 156.126 196.268 153.2 192.19 cv 60.125 285.451 li 59.8834 285.596 59.6563 285.757 59.4581 285.962 cv 57.1685 288.252 58.5142 293.297 62.4566 297.231 cv 66.253 301.022 71.0665 302.388 73.461 300.442 cv 0 0 0 1 cmyk f 47.7349 89.6866 mo 62.6153 89.6866 li 62.6153 111.917 li 64.648 109.581 66.668 107.914 68.6739 106.907 cv 70.6827 105.902 73.0572 105.399 75.7984 105.399 cv 79.8633 105.399 83.0665 106.778 85.4024 109.537 cv 87.7422 112.295 88.9112 116.529 88.9112 122.234 cv 88.9112 149.885 li 73.8638 149.885 li 73.8638 125.959 li 73.8638 123.231 73.4107 121.3 72.5054 120.163 cv 71.6002 119.031 70.3316 118.463 68.6958 118.463 cv 66.8902 118.463 65.4205 119.228 64.3018 120.759 cv 63.1783 122.288 62.6153 125.032 62.6153 128.99 cv 62.6153 149.885 li 47.7349 149.885 li 47.7349 89.6866 li f 114.882 89.3785 mo 114.882 106.084 li 123.154 106.084 li 123.154 118.319 li 114.882 118.319 li 114.882 133.752 li 114.882 135.608 115.041 136.836 115.359 137.434 cv 115.848 138.364 116.701 138.827 117.926 138.827 cv 119.025 138.827 120.568 138.473 122.547 137.762 cv 123.648 149.222 li 119.968 150.118 116.535 150.568 113.34 150.568 cv 109.633 150.568 106.91 150.037 105.154 148.976 cv 103.401 147.912 102.101 146.297 101.259 144.132 cv 100.419 141.967 100 138.458 100 133.608 cv 100 118.319 li 94.5416 118.319 li 94.5416 106.084 li 100 106.084 li 100 98.0191 li 114.882 89.3785 li f 132.439 117.68 mo 132.224 105.176 137.503 82.2437 137.503 82.2437 cv 149.168 82.2061 li 149.168 92.7574 li 152.496 88.3545 155.852 85.2208 159.243 83.3584 cv 162.627 81.4961 166.713 80.5655 171.5 80.5655 cv 176.651 80.5655 180.728 81.5909 183.735 83.6319 cv 186.737 85.6734 189.192 88.7173 191.103 92.7574 cv 194.984 88.0342 198.523 84.8228 201.719 83.1197 cv 204.911 81.42 208.858 80.5655 213.551 80.5655 cv 220.464 80.5655 225.863 82.8594 229.748 87.4366 cv 233.63 92.0186 235.573 99.1846 235.573 108.929 cv 235.573 154.083 li 210.976 154.083 li 210.976 113.123 li 210.976 109.878 210.405 107.46 209.259 105.88 cv 207.584 103.4 205.502 102.157 203.012 102.157 cv 200.07 102.157 197.699 103.331 195.905 105.68 cv 194.108 108.029 193.211 111.794 193.211 116.983 cv 193.211 154.083 li 168.617 154.083 li 168.617 114.584 li 168.617 111.431 168.449 109.292 168.12 108.165 cv 167.588 106.368 166.663 104.916 165.349 103.814 cv 164.034 102.712 162.492 102.157 160.724 102.157 cv 157.845 102.157 155.479 103.353 153.629 105.735 cv 151.775 108.123 150.855 112.038 150.855 117.483 cv 150.855 154.083 li 139.141 154.156 li 139.141 154.156 132.655 130.185 132.439 117.68 cv f 249.439 54.6021 mo 274.036 54.6021 li 274.036 154.083 li 249.439 154.083 li 249.439 54.6021 li f 286.995 153.895 mo 286.995 134.763 li 329.492 116.077 li 286.995 97.5933 li 286.995 78.4629 li 347.94 107.946 li 347.94 124.21 li 286.995 153.895 li f 36.8785 103.818 mo 36.8785 115.394 li 11.1631 126.702 li 36.8785 137.887 li 36.8785 149.46 li 0 131.622 li 0 121.778 li 36.8785 103.818 li f %ADOBeginClientInjection: EndPageContent "AI11EPS" userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse %ADOEndClientInjection: EndPageContent "AI11EPS" % page clip grestore grestore % PSGState Adobe_AGM_Core/AGMCORE_save get restore %%PageTrailer [/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 Adobe_AGM_Image/page_trailer get exec Adobe_CoolType_Core/page_trailer get exec Adobe_AGM_Core/page_trailer get exec currentdict Adobe_AGM_Utils eq {end} if %%Trailer Adobe_AGM_Image/doc_trailer get exec Adobe_CoolType_Core/doc_trailer get exec Adobe_AGM_Core/doc_trailer get exec %%EOF %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 11.0 %%AI8_CreatorVersion: 11.0.0 %%For: (Me) (Mine) %%Title: (htmlparser greyscale.eps) %%CreationDate: 6/1/04 9:25 AM %AI9_DataStream %Gb"-6CQBIGOXU&6nitWj!GpQW7R!2MEcA9K=*9k]]?(gq#(-'\*q)hJ,!AXmX?nXI^+jTDXlb)*5;4-TATY9m`2oYGd[<(5dgE&gq;AnCV1#'kho>-91Z8BI/*F,rS@?H?[_kAmG3gf %*^776nF=OPGPcTf^\u@F`V$FcDiSbnh&S_-]RTlo(Tp4U>J@pgJ,&R,pNL!4n8BfUeba:BIK&[&X7Yu=GJC^bO+2ffi>_^llaorb %;VtC<;u6"BfDkBELX/26qJ_K)I(:3"`cX5WFlh31cb@!ic0p/ZS(jK<`nfV:l%T.M2l0#Q_&D?=CAdMfc+CUfQ+HnhNbUo0H9>P4 %Zg%F\rUSd"5J;M9_kT]Mf/u8N:I!aY_[YKRc[P][md@bN>c9I2-`QV#m.H7JpK/7`+S=$VhYm,j %h,ahJi8=S"GU+9DrqPaD\,SN5F,9G5:G\:8mdn'&O+2ESp/=:\7/TUErVFEUGON9$c2$2U]@VSa@tk4q<8mST5CS+V.8f8`GFnm= %?gb@b+8t?nrN"P"]DG,U!?_+(%sRJls5AH85CYBkGNIt0frZDlh<]=VQ!^DA#]\XCe!.j9Hi.1OR.pN$R];3.!6mf>neE;CY7`Gd %p>aorhnK-](\=.V_DikhiKc?LMng=Hq;oZ+h\CH3c-IX7NroNjaT&"4UCebZI/7sZSjsL/q>HpMhuDs>laI10Be"=*lM?fmYtmp\ %roWmOf*NE\[JS98_LMFc*+MZ,b6%]j&-'ZUruV_K\h*>t=lAPM^sckgV_Fb6QM45!HarYgC3^>t]K[I6c%KI4r"!pZqLQ+cKN^)s %/bf_QLK]H8e2eT-c,0RR*"Gg.G_E!8U\F9OnHdI%7s]r:9`:geckkpq]ID0nAbZ?+LKZAYp`F7eQt3#b$q:C"6QI!Ur"%g'8C4t& %-MS\N?psKKZp\l-Q=32N5E$P16Rds#^.H\ImmAZD(]4edN^kL]q15+NN!Y@E-2=+hUleUEWUJ=qqE"7Rk"'76&(H4$_>hjpboi"7 %T$`M5DlX$e5P6!gi.%[/j+IAG((!V>Y4R/;U>Q%D>jt8GN;?%@LKXg>JI@I-H4N0:IaNA=AXP3O+[8d. %7OOQ0UP$$ieFXHp#QI.C_J^85_1^[!s.Kp]DYQOP>A/d77pdD*(*")p&T!)k';c(^-aLJ3jh`O %drYAZSeGZJ2Ue00CoE%4rXf&EC8Z9108*L:AI4k6mLsaOhA?*B[gNZPV3b=#.$o40*XO+Nm/da]X7TK-9C:/sM8S?ar$JR+n]s>H %POb2lS>5uPRsp)FP&/(/nsb(pT_n;LI^Y7([nXTMn^$kc4Xn/1B>:AAnsb)_05b[+V#7*^gKV6B^ZfCT5K(lVmbiS`=1X_[qOPVb %]7X=K2_NolDt*4A$TIH;H?Qsk#H8ASL+hcTnR`3@2I,MV='ClpnHLiVo0'0<cnjRaqURL^eY.LU[A^^NsOhRC/QVndj_kF*nU_c\NrI]%#.6ia@4!V/#b4iJp_>^9NV&*V]nEhr.cfNgs2.!0Wlfu+W"/DX#-^T/ecVce$ %_m(;[8#&:(1e&?MWWi!RAYJM[EBE/#p3T^/3HEr_Ld7osS>@9EoKC&N^5)/X&;-:R5#IlLMKD>StCS?nYQ6]dI'm"c=ZaC=U`0oC0 %9U#H=&_C:Mi4*13t4EO %mngO=A,%"XD)J.ZZTPN5(VPk*`oHJbD]YhAR;cj)S#dkW#rbY.6VK'ojZp?O+O%.*7Qn(6Hl8gq.T%leW"@0Dk\#OW6(CNNOj0^#qgV?hIK&;/un2HU?7[8;4%R#](?#%M#=NUnNobTAR`h&<@i$d@lWCqP'n%hHeUmJlU %OZl0/b*T8b40J4G\4Bb&JE;NZ-M6KEk[h\D9[_fR#+Ddu-[m`ki %>FEARY28L=W-4%nS=)G[qfgE^KE63/6i/o]a!%)6"AF3#orScf'[O\>=2>^pD$>JI;%^H8FjjA2-2a=pjA6/jl1H>fSVV)P9WiL8I(c[k0]M>`2!RNa`feT!7i?.u*),c-`!; %@^QaW-``]"DkaWS0SAkZ/?WGtbpuA7)C!EGPgU!"45$4`7]FY@*kh`*7.t#f`A20Ym1\#&UWAGRMd2=XW-!req,Z6iAVFB(O`ldC %YA#>0FU87/&s?I?TQ(W&];a9rlB^rTl`/Tm)3VZ+YLX?1#Oi*GBd3>lCtddqN"u4)bKt%i-egNK4^$\&morq=P'3JT@srOGqO1XR %09W/oFiouB7bFdg-!Pi.:C*ArJgB&nKr;6=PUMK,k;(XGIMYZgfEObua4abn7ojlSRok.r-u0Ku^On%UYr1lh\`Yi4.66"3IEia4 %k8Tc[+jnpGh`1;!o^d.]3;&eeMj,(5IZR_'gd5?5imU'Ff;*Rr"o+?>\M%jXIg9:"o[i'>4a>]Y./k5oIJiU&_tWdSs,Bgg^AIQu %#P(a.qeprT+k;&=*^!2Phr'^cS$1[s:60l"n\aN3IeE]bLZ)mthgP:Kh!3fE-";g[2`pr]'h*K=c;RGAoM/efE@^ %SJ$-Q_;G#lIgfhSL;`&;i5-BpGSc#MY/W`f>D$H3#lfG[g+U69K.#j*SntditM=EDW8q6c2Qi*mL(tog[THuSSsj!GIu`.gMjd\`nTh6rU&S; %k4U\>lgZqTkM`oj?0^^>3X\\&l'fX=?#E?/*W;?*1i?eAj`m?!rL!F=-bm)mk<7bu0*VFP<MPaQH^qCM*,BTHV+(,P-6@p;HEVitKb"8C`'_oc'_,,P$Npk8g6S1W2D^1kO3d6YU!f[PA5K %%$hh:ai*+&:^dVdCPDmFWem)W%R&aSYBe3u4PUg0](.PMQ=Ig*#Vn!PL1^dt20sr0L.DL'4M<`7bOE)QT'fI/Qa %%E!>,k/SW?Gg6#S"i'/\%=>a@%2PgB(n>QO_Rn7o%#R7]Dd?5oK"MO@F#RWtlii3n(Zb#ob2=P!;%AX8Ma89-_]J=^R5G9ZO2iYnuqYCsPTZ%TtABQdd2Y/lpu %)QB$!>Nh@a>Z#BID^/q>B,PU+D_L+Y_`;meK%l;eC[-iC<&LS"q_nB@Oo %PEIrXZ``ISc2=64*[^n74pl[Z6hDed39`I#`)C.)G9Q39CI7tG_1##/F\FpV-?4iiiYO?>NfZ6BReY$gk%@;rG>&G/-F'=o@SJR3 %WfYla3[>&9dNhQo233UMh'CR\:Fn%D[MTX8>SEASBqccpk*S-o:#`MV`9(Og^`i7.20%e*;>ug,qO#q7c&he8:]6>g*$Gc)9`nVJ %!2kMCa#)_D2"5np5YQ\6#p=!bb`Vr_TgjHgqXYd$AQG=UQdM<1+V-6$3>GF5C0JW8-gZnNZonNu`RRJ;(7N:JV*EONQ`%(.SrQfVt&IT!A@W$#H4ngRfi %1(Vnom5#aJ<]ql62!(_)r[(ha`&Q,Q(]=-sGMg+5g[=CBr9`["^.GFY@OI7k?s5nH="r6<0!fB2Kh&]Yq;ZX*>mGH,R*5IKjVm@7 %ENH=b>dLsVF1H<#]FNAV2ch]bB!,m638ch)0BE./B?Ye<4?T/hp\!;";?^-<25jo7C3`44EjcaQiOL9SCU"b7abI?)(+,A=bf:"5 %iTV$)T9nO$'@WS?iTV$)T9nO$'@Sn:%G$h7HB?IaTBLc/ecK@4"[sNgB<=ue_jd_Li\b9++7ka"Wq*RYbOLkb:oHsC2Mm=r;C]/W %>)IWOSWulG1_3aF]ZEbn/"Xt9Ot[o^%Q\/qFO'`]kbKhHVP9XXXJ:N_.`%ClJGQ;0XJ32lZhA^d3iqPM\"_,ZNHWNlD7TpPDahVk %A(A(qI(;nQiNd4o=rt80LT?eX5(="PS#!dZ5>sXHGtG[A#.9^@F4^f`B43t3SAQ7AO:=.?RBSU&BQFWOC4KM2 %rFFb^o8f>u=C,GsMW--Rb?bO>WNOH\[*e]+>eJl(),BRTTLQ>P+doIRA4&Oq/5>DL8H2CWff=>WAML@M?ZoqK!1_G=0V%$>u2na=$@T0@YXh>Zdo&R'=H>'*)IR1[sXX@C:"$#:ShMijePLjl"> %"KO!$g4IlmXPT&cBZS=`X[#iXKUA7Y;PG4oqACd%6E:l*]s(+`<\u:KK+nftEbMkUAKBqN#IB?)BHnOpd:X7b4io1r?o8\(BT6W8 %o`V=@S-qG1?'_D$S@<4[S>/p8cmb,XTe:!o!pC!e%t)bGT>P7fYkco=b^C#FpHo>]"pn86.TLC;[GO5\smiDFBt$WbS@?DTesST\TK %4`j_>(U)A6Dl$X=SX8r/On:3j#OD>=;h$nVJUWdcq`Y=2#_WUXi3,`A0+"\Wj*5oE$GfG7%//q^QsL9%OYph_958U\*H-u&4#cDN %qt/]hZONlI5'=lA:jsHg@2nG.LAZM;'^k*Pf$l(G].A]&GC&[WNleCnC/!&g336]AHHg,*Y[S"m9(gaP4ZV%sB6:W?H?e#Y1kf_1GLq`M`Z[s%]j_q$^9XbaW*6c(/" %@RVo8pt1,4R$!rU2'Ps\ZJKVSbjE3Gbr%8eaJr$$?KYHOEldjf@YOXlbQJf0NlV9?=nOfu/)7IO(6KoK6U!hL7HWfq5q\u,%B'>g %a=E=m05j]n,is$,SF`3"b7-IF@/Y.8:?mq1/uVA4\m`No[j*E42oo>:XT)TOT8foq#Mb?Wq-rYnZ!XbaLmI`[",dj-3EYuHM^T9J %=N"V[Lb'/D,o)>C'ZjHfA!)eWHWgP_&Wq>L[E-H6.9T\$Bj'Mn8B`86o:G6/j^sXF72&9,/Y!Nt;KtU&B32"k2SfU2Ibaa`M\HK+"AmlP(sR%Ki]7!q"N#8r4CqE %"*/>=h8b7o?WXmE3;6Trm[A&1MrG5KHLn-W!N5uMIAml9(u1lRT*i_&SFd7\2SFAd2SY$JP4(g2P]%G&*+)/2j^rLo#da)qGd(pt %EMgPT&7Jc#/eVh %_b2l:DfC(&2)GK%^Yf3c7NJ\-mZj?(#31WkH6Z_"g=>N;TsOGTT"^0P;TFi4BH3Ie:/0mkS;aMtTKSmr[@Xq1'3+''2)IKoVgP77 %qaoaIl%Mm9Qb)Ypch"8R9fp8aI&gH"nF/QtWn+[94O:L:2$jeS$]"%brfZ@h53'5-9tWICq*2]1s3F6&kD7KR3Bu&OG\FVV$0M00 %b;OT?6sOgCO+-2\`(JYN:kcqre=cK]^%`ek]Y*V(&)A?\qZaB\s6T%nX[+]j4_+<;>m[J:W(AoE0So%n1l^;ZO:bhLcNQpl)j3i=JlF+a78nBg89`fF?FlcV!@a82^KYQoT'FmWQiC0:AFfth"9*qo*_ %m.&7hEf>;fla3Tl_b4.17D0UGauV->eaQJfBi2'gQa0AEH8W@"F]saQ""eo(ij=A"n7%&9=#*n$c:]heidng>U;Pi:)@lnRZpUSTD1e8-B1@>t##kNEHAI>V0]'RLk.$ge815baD(afpV^5mer3=j`&H/%Q:n= %aGJc-]j\9#:'t45nQIhV8&fT&DU#=?"8g=WT:(D\55Qqmc.0LJ?.bB_N9mHoW\G!K%te\nQ;(?KA15/#Z?(?86rG!COAptI?!=[/ %-`.g8,:u!QinY`(UJ?(oaPQ[E8D_gMmme5,0/[[?Y\4OXRBfJ;W6VehY5n`9g?YV_FnZHi%r%7+h3$1/h`:AQBL:l?02><,R@)sW %KUeWcZXMGJ^jI'#>r[uX`j6nhlQtcar(-+!#s(15P.FtO%ZaD7G;dr$lb>J2MG8uFp&^csB?fB?3g5h$MDLdEMk`)gCt[??48ULO %?Xc!H1R^LY"U%=$jFcrOG;n4fesH:6Jc;d#k"PMg:Jf-QRVJFrgBR4a3G#GLk3=Y;>6>s*9tj`8OuNE3CUCAisr2Fg&Emi"qH-SQmF'0-B!/I0/+6%[`='Rn?iC$5>2 %fK=T=os0#rZ2soUL2[LRHU1$o\d^<.#iEY\,n8gtrNl-sm@!?GgUfpHC4"V,Z0c,WceR!#oqdCqG'KtIU+IJ[i$)HB:9Eqpq.\#L %1J]l2)Kld$`]@MN3SbG4CP_'0aij>[\V9u9N"8fP)m1dU=9=/@5=N-Vl03nZC&lJ9!CC`liHCkK6$&pEp` %p1Gj/[-:1dLBlG>qd1D@WUlJgAmEg).go@986S)c&-MLm!`UElsNMo%iK*;IaR2&=]Dmp$nn#j$eX;)<:*PDo&Z$TO9?TL/d7h3 %UdK&8Y=J(mMmV1*f54t8)MsAU1%]q2Qj+b#2E!%,%-\9aHL"A@>RifHq!^,c=E17^37B>5A@^/t:tlcE<,:;kt-fM+$gL-ok`0b/9sNPn`OE^g=0&AaJgqja!:k%dmsTZ*m8rnLL#')"Tm7t=RN*kIGt)G^NV %!_^4e3\_/LG2T$VGSNOXqk_uWS9?Dj6cJpQ5f0(Q=.o#_?&IK;b,R6rA#m?ODGmH]liW-hiD7)Y.SZP8D'.,I8k)KEF_9t1+lBMaShcgI#Ig7+eQ$<7 %7;'a?@&OpZW]>*#?uC"T?;qo\)ih_hH!mLgG^q6QPOWlV'joT(SH*FG@_Fhu=VQcBdFM7T'm'o[+!h<<[e"R#3HR-(bM$_[#mh]` %QHQF^:X44/[@Y!b1CsF_Y+]&>Sph.DT69Ta@6]%uogfVb7n-Uo@)Bt8RHBp*)B[,HGU`e?HfD_($MS"5)I?;r"ta\:R2#(#rAm(& %.#`5*QJlho8n?>D:!];4gkEDZP@Ye@Eib@96RV[%/eUmSc<_ %"o"VjS^+OBOe[V*&N`GNQoo`u)MJZaJ%jVGQR.nJW^IDl.*BD?cK>>i$%YIh2)!'^Dt9TPEZ/=G#r&TBMY[1b %I.j3!Pn3]7^K'ZgDg]u?3Tol)\t&;GkPM6rrUdpTEDYipPr&BWIRIh>P&WuC0k(UFnu8P=]S8G.gCeG6o)Yd7/emGq%'%K@U!a^h %*/GNp:fP)@SV3L'"0U^FHpm8@CQY$G8mV5%<*,W8Ue`qt5"sY7W-4Q14CfD7f[^ki35?#hpM8[ToosrGfAUjs^mk+H&6%b)kS-0W %Mu8FMIj4ET8GjhJs,"[D,4V9rr$N-WM8XlfnXiAMmn;Y?``]SM/E>9dTO1H8#]4j?).*3cb"_^'lj9q4:Pe:D2_q7,![CC)(fmL_qpUge^BCt"8Q(hi5^g4jGq=DHc>.CqP:+`.E`36A4BCBi,od4bJ>9N\a1N5D"B.gGZ0DP-_D")0%qUK3ip@@27'?mC7[pI(TIN#7n?E,@&e<&'uWW[Fs1;F#.P_GY1 %>cuZWk/+*dHF!Z9?ILP;T,F!:q[gqN>\;m#qG;T\3e_%a$BJC<&VG)+7X28aHu_O/B;lG`G=uC'>8#7X8bDaPTQEc57sNQI5A/K& %"s9>hWqGQX3do[Pau'Y^)bC?uMD(>p&6S,bOspQcGn)JBiJeKp.M;to:0BLg]kGZ:d?`Cgf3'1n.p5c(#18)`i5"FhX^9K)W`H<= %mE0U8ea8Hb\+KfH6`$lcE2tka\Q/':EhQ.H-Jk,4mcd_(YAo?C&spI&Dl^9_=kUA+0'`%S2E#!=Ech"C-Z^Q'O1bP81R0$&T2]I' %3a:usXEs-:lD6P]qf-')09Q%sUj)H"WTjDbNkm@aEB_mQ;K8TtQ_Ej,;l.FIBZLZQ:JCn,I#Ng6alr3+VY^1k=K;&:oY,H\&F:$u@CaP_C-,c:J@+=ZioBI_n)PI7ZO8;2beb6,Dul %!ZK+QMfRq@\9sME$h<_OEs3=bI_M8A54e$UqE!b'0peh:"6@&$/:"bno*!4i'dtScSn3JII."-*rOJuhZqf6"]'Q''H?nB6,u4I& %Y+#g%r%fIkoVYhR6sT^2Ba3l8$9?!##'%a+ZRJoLJ( %#373d[^TT'?*M4?eH3"Aru7eU+0EZ@OhCnUq\lDTR+b>+6!"`j6K %KkYebE;0$KGe$3b['1NV1A_.ZZf*4:5Cb^4T"_M[k.&0u3VX\o5phuXdIE&(>lR>(D1b$mq]SmTU1':Y3CVS;f58obMfp@cJFJJN)jBqL7N8 %4;)usBBHum$HQO3i`=$\[ju?!d6I-/`L]ki^?,l`a;^"fA+i(+m7TVX2fK[nRD\eI$K];3rfNDGgi?Ns%;QdWHjm1u`>a(&WV)ql %M3G/'*>g_V9OS6fP5mT`,"Fq>Hqpk5b,Nj9Bm'EN':r"?q@$.]iV@Sscg\:TSkmE'$r8tDq/i^an?BtLQ'B;558\%#A:GP32+V^XO+G'7Apulc*hWNBh0IoePnhc&f,_C_h,DZS6fKkgU4=K#Luj0-AG4#j0l"AB3Wu`FJ<4bs42!K %Vi"^JmZK_JWQHg4=git%:=QTpSZVT&*<%%(hnS%8hgN43W*B7U[^*G7S-HA_SrUnDR13bN/_)-R-nsuFW\1KXTWZQ`a"J75X_;Nq %HFS,=P?F`6^+<4S""-;B-dQ^G>p)q7Suf-SU4X[C3uStO`o2IN,L.?WN77U8o8).tbOE19Lg.L/n@\@KgBGdiSF_Ogb,If-3\CB3 %Eq&CRq`29;Prht,%@(J_-!ri0&oZ`0)n=Glm@lB7:3.6tdahuT^j(9o.D!(2.ge<(QbS(JN57OU]!ML.qjMm>+MSSbG%W31\"?0?BO',ZcgRmAP %]).!+K(ATDIn?]al8H&=I?>1]]hMFG85jShb%s[7lAp'_^&6+;oh]T,rGQrX0Bpg_R0ru*F1YfJrqN,GmQ3!"pYUNq0s0;BR43M`(XhKV %oP@r]rB8<,lQ>W>^SU""+AboRU>Oe>qb-AU/A87!ihV'H=kaP?m;lK8$K#CX;'2u\0-XjI_+$P4m+r`H@Q$) %I(1)]bsS$%><$R4c0!FCrO;$^A\Lc:6S;SDY2`E*qJ6`eB/"eV)Z#!Zg!dD0K!&^>e]MI6(Ig5'Hr(9?AJ]r&D?Xgm)4;tq(#V:)AQ'EATAWkE,,rS@o7#9n>g6<'p;hAe=U!O %bZnXQV,Opq.Q!p:-3-bK8+3XN_3_:@(W>WEB=ll,;Tdr^#nOZjK89?BT"X'sLV9+/QQR@]a3mV"BLW'md`&I,%;RffTX%#\L)eL# %9I;8WG!48iaL,k?.t.`XPNfI\:_8A6HZo>=6p0;Ns1L$p'WLT"pOT1TD'sZ48X`B5 %`!`p%Qp3WLd?T&90t@_dVBZ-WgK5\AO?T7=>c_qQK?lEp>B8q($ptj8-EJ++9$J(o4MdF9gB%H\HPB&nQoY^d.?QdcHd#3%lTFG/ %1A3G`I898!Ul!U%V"_j!Hm\N49:?cY4Z/j28jN(fquZ#6=[@4UaNOAf2HMPDM!2cHaV,bTf24baW(C91pYW5V4,T/Bi&nb6;)Y:'1cTO#+kB1g%T7'a?)\'mtG,VUW?;8K2BJ %1%k2R79]Cpfi'sce\mkImEE0Dn0XlF+\lR[FK^Fj]5<=GB':*p(4:NW;)8j.B[/=W@9AhhF[5leN;>T?q@KCLVPO]s9;4V[?W*A% %,?8?-WL+[\UM9heR,IG/d/q94P*gbf'"S;jR42b)!a8,mIq\URQ=^uW!-(UEFCTiF%LWN^UCA$"1617(`^&6[I>E3g8[rAArCW0ECA#n:$9e %21YS2%*/6b,K-(%ei_ORDOb*$a!Jjj_!4:2Jh7UWOMm0U)6\aLJQW/s=ht\LJm9KEhF:HY/5R%sc^\B)@1-JU,9WEckk1^X_&lC) %luLdd0Y.>)`R"j+#P`I_)BbI,e71A,c/d(VqQ`B3bBlT7pJPNMb>MZ53n(=;Ca&0GT]):D_X/-'5#&#hZ3@8g=J=A0hhTi/kVodk %;e#B*XjZk4f;t!Z$YU?T.'T!<@if>&iI4r*H/.s@#r/t.H=`sT!qH(U^7WlbN2=BXPuY&G03Yg;,QgPVR$ObV9EYmR$$7)Q5gXK`#^^6+>*lL(];Ms'nQ1.BfFVa0_CN;4H'o;s$0Ta=_O,Y>W+K(rQW_87aP@tgLHs-63\o!!C\qMOpq"T=-n9C[/,[_AJF2-WBe`T %Z('G%9J//,tJ><3K!P13-bXA]GGfhfU:%u.3&O)EHQ\C8g'U;WUY=44= %\!(0C(*o6H<)-#("#C&+c3HCY0Kj4V_97*/Skp8gcM&KkC__JKA'!"US*eKW9dC]eh_hJU\a2E^B(BX;F,hcR!X %`1g'5bE@=\5U5ld#*\O;n_0hT_gkEGCb;4P\u]"$[B[)KI@1+HYa"/8K'dr[eL,Na#-^I58p?tBoS%0pe'5N,A*L]]#`h6l/9g,ka:t).V#J1Wg%fluEMZ=dm4eo"%Kl-3PM4HLcX.>+9=lugI %cE=/0X"Eu_(W`Q$XgBerTR77*[6"CKGhE1*e/kjm`k((AB.V9'.!aI*HcWd`U!\3>W^VW(,H!q((.Ui!of/j\ %Xps^a:s%i5hL]S]pR%dSfP;SP?FI9W/a:q*M`hBTPp68:g.H&/@8O'*!/*ZNc)^3&B`u.O,"$A>MSXKRRUpf"-$FO1mBmg3DreG[ %U_3)c)*e_6Ans`4%P>CD,8@XD,H1C(AT)3`@,[97M)Ia2h#d;e6_'k)5i`^i0dD3;O;,a^pi&0P1A\6G5]a\Q8p&X"^8$>G\@8m4rOD*!6Sq[.u8nQF0an[&HYsQ.3]DcL)I;k8*?bg(Ia=mq#2+&'U6euE[m(o77% %REMri>*TU%:,eCP<>b-\^<"!"CJmW@u"QJ.",]ICJfo';\TWu-`rBZ,&%IO`h[;r %g*/io=dZHU0Nl>])11Z%$uo5eZF`MWP_%U?/N"'i!i#uSCS7m9N"3YKBoiP*ZrWuU73tSfil6kO7V$XdB90f.bdZOjX@^59M#",D %8Y_]W/ZkK#VHT/bPIf2<1gus(+`4^Vo:e4N9#F2Hbgu@FL0Jls3VD+Xg,%Znet2QU/T_opFWeo@[\AJ&[?*#Re["%DFrPm@fMtuR %WMda2?#P$l@EU(7$C_I08(d"SaPPQdPP14'Yg1eAD4\Mf'O19?g!@d&@!:eElmO-5ouO:/D+H3&D!45*_MpQR%?f0-oqMcam1j)Lg\n'WL&PN)ZHi)ThcS'bSkMH`'HaW:Gk0QYq,eWf_&C>3R>=nV*"DG"GC %40WI),chBmag(KCbB-Bql,ZnVG3$bl>]pXZBD6&#X=agf;=0:EokH#&DEjNEM&oDr]RPHT1fBU1f)n+FMq3+#Ls&f) %Sqs%p&jW]QJt>#X]UjqP"M(M[d]gqkH&EF+A):XRUdaMgT*SYTYRAAZmh)u@V^N&DOVM$\`#TZBJL(d0S5Z=;jqs:E();V1J_lp, %U6KLfLb3dY>]-aEM_GMY'?f_7iM]M@)Jh%lPJ63QY.k^;'?NO-MB^4TN^ARC0pBd/DMK0m %TUZF!=(0::<\_22>f(Y.m(EHQ.1c-^d'?&k")M)862LZ7FDs6%B^XBkRbqjOKB+j)LlNg$&W455$+L4Xn5c[d37b303I+gPmA>'"3 %>bErpA`(ED+`7`%@N&8BZUW>LWM&fi6/&Pl%TKsL*)T$+EQK@M %RA;;SlS/DA[r*Jh@0BP,nIOZ;cC\,7"-fK<[mV9sX?,IiUKgWTN!j^rd25D.Qft2^plUF#_DTpN9%mAS,:dI@+D*!s9]-5Lj)M,H %I'3o(&niPa>%3%D_*H6fW5!MS/MPJ$9EV^(I60ZbPa3<-0f!+W;&gh@FVX-pZH1@s;Ageo/7jC.\AAP2jBcMdKjk/Gc<'jjZ+]O` %.5DW/pr3FN+2!KgkQZ!J@br/F9"(dkHaO42$_hCHe6,VA;kHHfi-bYW7q9=d\-Zng$iLEW_5NF1r]tH7p-q^-.N#2/1g7?9@m7[t %`I"F6@.?s!=$@_Uf"C.D&1S6pQY#IRXN.h!O._B?\Mcs;TSb9tg!2ht=edaDFff;iOuR8`KIq?Da %0dCI?3?lHQpUjDRN2T?"Uk>!FA;H#Tcn#Os*'2WJ^4u)5S>e/J$j\GHHSK^,*11U+KXmQqfKo35f6WRY%9I9=:(KPO*18CXh[?F8 %gn8'kL7d,;M-7K5eS%3H&?USF%Dm;9\juB%>A0E0lj\PZ-[V_A"q]UR4k"_innd*paP&-18/5%tNsOY`s2,[Y %3SuW@k@b!lmi9\#JC*fl_L""j,r8ka@EFJ;g:.sT0Q5d*p6bUBaq7s*oGlk%6$0C*<^i-nUH!r,jY.2' %IlWOa&*e=%Re^\aAqsrPh2;Jb5^.""X!g=E$!%boV.&oJE3\mf$.$]*9Y2ofF\/)dl@K\fs$fQd*UY+L6Gd"r9LuZdca;0fNjP9' %]a^9ph-fkFdt7[;+ZpQHf-f&sWc[KG%S-=oI7No`'60O4D1]d3jf^hWY]Y=Dd_f=NiK`+r57\=U1/9BPh@GpNje[ %=B*2V:=()_5WO]p<$5gR+P0PCWee=mYRT[Jff:"dDn_`ApSr`1#eK''go015rQ*J`!8lHhIQRS(6D3n62e#4hP+C6sh:*?E)rk_# %Lg)o!I)(o@-r&]7Q*i+3ZoZI8)QqZ\]nSO*Gi)=eLORN/&oV"AfmU'H`7$r&G?0OQNF,A/g=%-%)IOpqeT'n%T)N`'`NXO7#)atN %%rad-"K+?6CZ9l3T)D7S4s_IJp-'d5/GDhlQ#5G5m'g6.n\16@VTHN[Q/j^/+DsgeG1>1th:=VP"a88.:b2Vu)ga7fQgejm4m)?8 %O@-^PRA+KhrJ9jTYMT$"Hc($q\A,e;o,n&t1/AP@,BKhieTnSL5!k>sJfge(3^=m@]!Rd/N?#YX6D=]<$W7B'm]=q8gh%Y@[o`Q` %(4?Wlj>*/F\1Mb,GE_X0]9,6cV7VS^eq%oj%7,uU]!5k>[X!dBgmZMa:fC).Q6LZT]3ZdOE=sZD5`n;D$b1eq*HttN8b\)mA8JU) %fYc@]?>%N.XiW6ClOmS?_3Gc[3&n_=['d$Da]YZM4/HQK/S=X:LY_hQ>U4ooK7GTb([2Oj3Oe![4M8@*%CuR4%rfNXckmA+O?;W. %CpE?@n<5%ZXDDV4O-*:?L@r&jbA]$t[O_]m^NH2FSE`A4bik9s/P,S3lHHdZa_r5gS"N')4XW(A#HK#?HZe/$T^/,^1&Ns %&6JmY7ANg."=W^&)kn`O=@^[HD5lN=7/mo>TXo&`6jZBt4];F51&t9MS*4@m%dRU;(tZ/6Z36DZ %+-DWto-8=UIH6fb,r.iD?/TV`k#0`-+qa5X"-GA<,R5\fVmPd$FBh.dA7-$"e?tE@7oelrg2RY1/qf4B@Fkml`Xn%o4Y.hT.fg[- %F;6nfQs%s;>?Q"b#=/WriZO'F$sP9e=OP)4A#!q#f]Pubg*#7>bWCRPYn$C>X[cbKr'\GeQopS@JeV+sL"pt0ns!:\[]gVO>S$jL %*47c]_fKFc&u$P.<'iFQ"#n#0TQbGJU+p\s<`!:Q&@G1a2. %[4Jl+I!Q4$ia*(Zq`;/\<4Rne3Rt."6BVP8/l47&q6^XR19ga_g%i#Hh%%C6f7Kb"Z?+D^f'W.E.TF]uNVdP4ajs`d\'64J"1Nd;rZ^(5^B6HjNBsV\XIT\1J36]#MZ*N]4beC(P?C6$K:O_UMYW/AenEK!!I"MpZ+$ds'PL[sB[q<>hCB1qDna-&j[d!na$?*>3op*EP0CpD&cq7N$:r %`\=/6d%OHj_N#U1<-Hp3=:\$&J=^JH1U6(@^3XI);6bbRVpIH!]HrCEfiZ[;8FHt4.MB08hJ`Lf%pbqtfZK%>#SMu]csY>c^B&$> %X>B&l()3k7a1YUi5cgriUd:a#-[OT&h/%k`ScgkHFaA3VOERI9eSNO$##OT(Nn`>Y&((`HlmssZTeWF$T'>_r8CtXkU1\BelkP3,a%+;CJR.&#QRj^)Zpr&EJ2G2H`@Pp.C[n3M[Y@ %Y/"4lrZS*gf6>bE@;rW=Tgp^Uq61'DVV<;+@h/u8n178._!L^dJJ]4GgRVT-!%idZ,I+"\TFk?U]!6ru/t5EnUAM/7XeEMs//8!< %dInOR)RB4O9E$R*/E9RUM8N=h^p]!3SXZLSc"QHW`th8X3(7&g\X,'=>8?7BBX=4h&\1Nd<;nqcUX.(SUIo>u8`&MQ?q0V4o,D!= %CGC,g$Y-LSDALBc`H4*kA$$9fQos10:@uRJ,-pGgF2Z5DmZ@4hik$E6&`1k=Y4olNC:;d#c'J2SjElIaG8CVs\[gKFoT2g`A6*9r %3j6M%`%'TcG*>MNTj5g>hS_.mjSg%lXFo.mRa[^a*S.nX(!Uu,`mbViX0l,L:G_F#Q6j5!4F&l(AhPgX]6Q3EJXtjg25=p]Qsk+AY794[8E64, %[;@d>_VIF7]84`5rfSGEXHNcQ8#E&M%MIDhMKq.\ahMO;WnAqe+b"!JpXP$>+A(="L$%/hcN7l)0+g&o(jBe/Zg^IG7he;l6p9Q[n4LnTsB5X&=BBTUmgYWAO"^('#QSLp:L&cQW.^+A/'NdT! %:01P5VAAqP,]s*@]E1d/8(TF3A(A;[,%LDVL@MG:4AM;e@iI%Am_BjpS3-5u7/3j&#j#p'3L3N`3I3AY?KUF0Ntme1J16sF4E].3C-f6P?:T/!i1F8JS%E/3MTg30&/0-Ufd+Vg[QrA>Y=&'S^)OooCTq]s-d)i#P`Q0+KG*nMI#dADdJ[_^(W0!;TDYOIrGF/inLaQ`tKh\O)+HV,KE:a@d3Ht\ %Y:Y@:9MS&]Wf>2^I;<93dod14$C#OZQG^*g9'8=;K47Fg!BRe^VLjls0f)bXKt_K/$ggXM127FBZL[`0Hg.I]W?Waof./p9b,A&P %$1+h-h6h1p61&!Xh+KmcpGID%r9<1-pjt).fG8]_*(jUI-8;kt:L78WL/D_Gm2K-3cSGeh8Y>N8K$EIB;mPjd@+qiB#!#e"1K9Ic-@<]eQ^FnoB5WgqTIVTPZIDbcRl"=W[kM1>7Xkjl,0+u1FP?-f_\Raf&O+Xl7f(*3A.?9s2B+E[9lng5p %AqEuj41Vg?DrfQmEg_!3O+p`,F65>^/?HPIjbD1;OZ0r!o#;aND#8(ieW-2k6Sj,B3AeXWV8tSH%2Ir,&#n3KATM-XfWn/f9m[:m %jqB7UO+Eb]R&fWt/J8mGl/9r,?f'Z3>,YT&T#!JQABe[*dCEq$a%3tV:YT'Z %rQWr'TkD9s[T[\([T[[mpN<8\.5%\aDPBP)EgatO'Mu%qjuRO=)Cr'u(H+8qMNs_TkM9((EZX//h(2/nXM*f)FL1O]snn@qY7-P,1'0N?*UFEs%.iiU%R+UQco7>Mag,R5AT!cR,.hdjuhhOL8^tZN`@(PiEFj6no$r %U6d8tV_!n[3bb^_]pYs6gL@=pp>()7)5'=G''J@V6q'Q:?&+d_^g';pm!c,U9R?bgZ.7 %LAQ-r%NQD+\li8tp66/bLii?"jH__E+SaRU37%Zf[O=Q_*0FKdBr`h(WtYX%+>_l;MWf%=B`)=qJFt@h_PF=-?F#f8BBI %=H-l^%D1nE1cmX.m`peh1c?5HBP\]p5,1U@LL)oQ5M5:dSK'_:?(kQq(<_&"NM@GUdrVtj*8Q5012Y!kDrU8[I';P23d'pWVVFYe %nnT7dXi#&&WRj-/>0#Q"*i`N'J_#atHC6UuGWU*@:>r](.9eg6BAt>Adp)>?R%nP+D4B[W[U4gHS="ThqF4Te$0tr2P6*o])lUY=fb1,iBt;jFdX^]5nIIQeg66R7Lnu %'uJ>hp.m6=p;@\0Ei)NMKo_`Q;r#![b/GcK.f#SJG*%NM^K0/,-GX13Bj=e,+I@O)kg_L*fMe@fXX:l.Zg6mZO=6"d>'p.,km^5gU&1-c4iPSI^H(=2]Q15)Z[F&kOFM'%PD:UPsc %/Ikr(4c.2sf*s>(kbXt%964b0;U]MPgHGDrn.$>AKQd\m,k+'O9qmjhZ>.M_=r%2I`gdS*P,Z/;8n;;K&;riFDfiR!3n]IE""5AV %LQqiHBf5WYIt[tQUeChHY,FEN^0Nh)0.Z-9fIi-hQ9NhCj5^k<$V*JgH\M1(7dSAA/7MQK*1YQnLQ+eWL\Ve?n0_RcHs=5&d?5]f8&=e0,XI6=AO %]f>>`"?&[^fG$Du:!j)%8K1sHZolG#W'2n9%6q,qVTY/Shm.X3"64IV.rU6%dY%Eq %]HN="\CRKmLlZWENfjcpLPl!8E\28V(caOD-pBZ#FP]ac;Ws[iJe6*CQR[-Bg5D`Q#fmemB,Tja#g=+RP\^8#cGRi!8U-=!\Q2OC %d`%i"deq:&T %rM^+oEZ><)&l3KgR-U=N-l`;0^e[nck`h8qQDMMtjl'Dd.@0Hggm=&NBRn`c\bDY$DbP)],GGGSaD-c(OM)fg777m^d>s-rgf<%1 %H?)]E>oDm<;f>ebM2bT'"#_@dNYg<*W3W/^;^@NbX\P,ua0iMtHSa_JWQYimaBHhD3]s7^H#cMfF.UES6:NB&gQk"+ONg_+AMpZ. %>F/\[_I5GDI7DLT;d%F#J'[DE\W!jcQ%Em5;_O_VjE!R4U1r\06G&K8iNItpncd>_7.r1r:2/U/=m(orHT1D7S2/>KG^`3'jA>,&Xe&52<0H()#f %FehE#>s)o,Z,P<9;KiH(Z@nN`Y^7;MSb,SK:Q(`mZH"6:.;jEp>=:%2Mbm*/'NV.$NL\Hkk\WNYR$Fl?hCmR@61ZF`=:s+:&M(`P4/S-!bVL`/+JEcahe4uBTE"!%_qUL;9JRt2Vi-EGf<:04rA?h4\^i!) %\>HSFN)[.5L?\Eq;^/#*[0UN,JZ;0&/HeCY+]&MKB?VHrGesM#4rOM/.V%jPK]==TqeCApP6ms%'\l`GI]:`5N?<'02i"7*7nmkh`R4EO_BPL.X:jCkete %dP3c+$kK&!G7qbWPn62B5iQ\DDmH#I$5k-s.dmqn``8@>BkoT0BB17l5tW`Vqgd`pt:8<;a% %!]Vl-H;(4QW*mj'0[prB)q/uV!8a*b)`rA$U+F\pU?iIELQ=hu+tqn"$7lqU$Jor2N%Hg@%jbCW3aiWkKVLqF^2(r>Ap#WO=-69S %OQ`adV^n8q^_nr!1#mCheBGNnN#qP/#RP+8?X:c3cWTIYFEgC(=rn0/44Rh!0^5$$NTHff/T_#;cIpjE)+Q+n&Rm'1Bdpu`b"Ar\ %8*t8$_j#Lq)rlG;fEW/D'W4!r8\0ZFE+"lo8RPKXeG_Tt3ub_BqSd(1RYP&fH]AUe?eTh %KaMHD9\6T2LA+gLAGK:;oQGPLkrUgrFD.Hma1A_m!NL0+lL+IUPg#pJ?Rn6j7O@4![Gm*':' %0\5I-?@BtrmBP5ELGk$I_>Vq1/+ga'Pc7=NV"@FR;Mj:m15Xm"?J7h4MkUu@qe0>GX!=!r!3,$P7g)sLeVLI? %5OJ!rMBOo(1Y4Bc@\0CC9U\T!kH_(IGnMF(_mdq2Zl*+\5&^5-Ac'a!)cgWTAQNEo*Oc.:%6i;o7\6G:g+l&reD1&)b^>4?0l2-9Hm(OJi&.qO#mj %YH[n-c-BCs5Bc6b.El*)(2KY`\BAN$rXZr]f^Bm9LX%Mfo9L'(Ha %:U=%1m?(H^oUCW-jN9G\[/GZ9g,+57#;&MK_%Z*ELhS_+7T)%&[+9q,cF=b(jK7t%M>EG3I7:+1pd45cX/[j.:?!TAG2PuSCi2ln %4)@)Wp=QTfLpH'lhn),#]2"+=;@(**.r@>$FXs@:Pd\Ft]c3*"(@GW9+/iudG&X.6b4>%%0(`6_I39'Z3.bEkBp'$KO1;kkWWE+l %fYKtOBN%K!:Mbb6?j[3_V^/aEcrWE)RJ.N>^jjk.!FLp8:c;^VER=mLO.RNPWLdbu@$#mA":Bl4$OA;e0Tod-s6]!-#Xp0d$kf7i %Hmk6M>XI\*BWb=s`Q3j/,qL;UO`Yq)ZW`uu-0XE2MTE03M7EumVW6iM_*.Tj*@i^AUigAQ^TP9P4l"%n %(WO$a7sZZHFu3qemh0(E".rZkUQhU_]q7eW<'9i:dmE5oAB=LQ$\>lf-tT\=/T&SBHq/*];u;rt#29Edr_?9-W2)(EQM]!Ff^Yp= %YQn<`/F+fgE#HSZNse!%,)9>P_beGK#RddcAR`NUb"Wt!RC(:_j`LA.$_:[^lUk=J^FnuliZ^kQ_:d%Z#i4@c8jUmH`/RRo6f\6h %=0M%#P7LPqn2n9%N@m(jGFNes%rK:*cL9]c6;@Q3m=HVr[S#Vmq4@J\hn`rI6n>\rp[VTO*c$[,jVX8u3Lhd>aC.,oM11'ZSg+^q %FTo-3:9NUZYuPK_aGJY\Lt>lFWk!jIn/cp?_e.qWuY!nq!s4!G51(n=3EP3n%\bboqtT0+5bQGrpKZmn%%N& %h9QS7J,&e^p[tGFDh#:on`PP87r/2il%K;I4f!gMlL6doIceB0:A%6lc!LEVr#3q[5ZA+C5;Q0dS:$j8@8o=(NVEF!Y!=/mEl&B&6_DP$gNB%UA$/AH^E+-oX0#15kRG&.<6=H%ckCqX,][i=-Dft9#43]S8*4OI,G14^`@7=jOQd7&+JI3eji8b6071t-T %J03aYpm?Wj+:)iS"9^oC)P#LMLf+5)_gLp:LX`O:":#:*o)s_,PcquJ+nuL&&3)WLh\@8AgN8Sd!Wg&3M7i@;It*)=FpNc>#%._p %*\(!:;8R4C5Tp5ZU$],W*!9X;$'B6VJP^a;'/Yf;/`%#WJ"LhQ&CO+u=ZF'"G,V %`fFj\`(Y#CbCYKS#I3q6cCO#kEmb#NQ804i8?,:mW[_qZ*ZB,B3-Z>OL9]Y-4L1p%1-KP(QBEj`/ScZ460T %3gN#PrDQtE=/B0Pc0q.5mJ'(IiAgXM.?ebogOPAhd\2ZYC/!,[$,;7N2m%I,(3Gb*'>Un-dZhOdnjg6nPj>pO^;Ak8H""0hhj=f=jR\pThDj&g'VebG:+a?^&VPn2uJi:'$KA1.rOlVRJ_NaBhtd/C!aGT %;A>;(&q(J,^\UCsiiBL>o*GS,I[<],C]$g_egW%drCGkeYGpZ*;0c5hhCC)CRC;H01m$d84kO#:^m*aDPo2j;$d]-G?6G4HV2:U9H/d-iLi$X*rZig6:GB^d3BT>WK$VoO;F39RiV3K)81<[E %X.R%s,VgDh`1MP_m5_8-]9-3XG7M69h+TD/f!d2-^qr0/@Re2]juNp1g]g,>In(1rd'FC#i!pm9FW>k+N:./p0X0QI"U%&Qe>NI@ %Kf,jnj-l[.n0n7p8_Qu_Sigp.0_?\e#_Cq*papS9OTjI?K%Uui;MF'W/]bHo7r[h)>c3SfCo!g-^G;$YK?#Gn&1$g*`j/gkl\I:4 %q.:Rk%'r:\d@@UMXUpR)/[&jO9Tr7N2nLY7:AO[BWZkX.EsiWd`6)/sFriOr)1,0p6'm*n!?a\DF(u&g3+bIHR/Xr_4,lgU!W)[ql,*JRbK9bVUN):rl@\9".N+4^j`$+?`IK'AdAir[[3$-SS8JnJ8* %#9S>=higM]T3tASTXc*E$UD'3@5`dTFrW_;QKmYJZQ?:q70S'*Y'.a=C7UT:mJ#D,Zg/eOHKW7Q8$fbc3q&&1`:.W5!Bqh?[Le8O0m4*1<9s %KT;Sc5nEf"CF5-i54KWR?-$e?p555-_WcbpbGR5n'l]n#_=S5pInT>UkW084Vs?VE1qMT648=g`.\&3/4ZSB$`_=0XJSNUr>1c*R %'N@]NiXF!k.==Rs!8[N"=;XfC?:8^@C2"q>9+OshL<.`<['d %BD>;P81ntR`AHI6$L1?YQlns-^&nEC1/H1?`G)Fffgh\sYYKg&Qj%XZ.f_.H?#'FkX#-nh0d#S5VO24+1B.>!#e$]$@H'Fm/k__i_g49!46#I[0.o-%5U*\bH)*UlQ2/`_1Pd3#GQJ@Z6-8Ye2@Cg7uO/i %`+..*LM1/mScOM)r_hm'?'k!raqbBsg;*6I+[i4*"JLno.&[73e,_YEWAEVAH%2`H<,"(J-A$q-Z6q- %+I'en!boSQ`^U4kJq"F9M-M9U_I5bK8GF&&dcrq9@YY^\(n`*c1m/EDHNqpZ_)T\N^mnH'mSd=$+:%DOeM4eFOL6%AKY)K5)3+t( %$(*YNR[/)%%?S51U]s^^C]tZLcq#Bk$?]mBCkert'JN3;BfSFcQt6RPmOpt'`-5jlgkK4WfJ,Gf^'7.Xd,T"UNQk*"])S'3<(Vut %AI1VHd!`X#RjAM"!sJ-D8&-<;R"dJ\=eeI!GGEmkXEi>`M:^iW2_rW!Yej-O5#(fFoHT&W@ja(e1`G %JG7hG-LQ_9n]XLBTf%%79FlB8io]ATh_U)>"[%[P/E%:3s2dFVb@ctclT/ka,0IV)\=Y_s`d+=b)$Eot(bG)/mumbb0#_QJ,pN$' %4X'";8..8+2Yu.\OX^X!1:D]=JLE6p3uJj[V72Co@tke^Or-U&Wt='#.1PG.D'mi@J-Oq/*m6.Q#F@GKk!h+kjnjmpg-F%@/Qi-m %(q]j-#Mo[ANU'^)`q)Tt2WrU.ph[=)XPjh,2[J=t4,S+K4HM>!\j9Imi1j%Aho'_j[4 %1BJ$c02,@/0a:!K$f_b %K7X\k(t(0&Dh3lZC;]BEc^;1O`&HG.:PS+=9YN([2m:RNT@k\(9KiR561mA%jtasPPbJ#ksC1E %*Gn2^\A8?u9K\10!r*h1"FF+0eQV7R0%R\"qad#&Ua4%J,+RN;jAL:V:eaCt`rZSZY^4&%Scg#H%:'0/Gk0dGX,UsHjsrDo'EU"Y %YppluQjn9eh(]IV.Rm&@`a<%=nR9 %#0@pAq3Q)*_Vm[/T"C/t>`Vc3f4S1\IcT$4IM=>9kId"(p9g]gnV@X17K!69p[+`Vke!=\^7*#C6fdD'LlkW\niNuoD7^pOu8@WdhB)jGr]7SY)YV?qm0d>5Rl^i^-!@$pI` %-"La0n>HXhV*b!J`ek1X_6Ak;SjnVWnJ_oIntBN1JjAW-n<4$,NN]/2+M[-YOjJl)=TC)f*5L7+):54V0j=PoP\eqpXa*Ip]LrIj\(gOe$!Cbf-j;V(f4U\Is$J]`R:fe2aR'LAZ";IN.CqpcD %+:ns/$]o+46!%cbHkBH(>:([XLEs-/=okp:Ff)e$4H/R/im^.9(JXJT&qX>UL$85Eh#"%"*Fi0d6="+X5> %#;AD:mDe]-%Q4C-4FmNHR%]%G1[^!i5_p9aV+`dW,pt""fam)s9E$!gf9_-+AF29@+)24;\c?1%Y3a %k\Ug:gf?7Z8%H!1W'9, %19T[Sk%BQah:Qei6`Q:U#mS)6i16B7.KLP#@"s*I#ubhO7UHiD#R_&FBD@2E,JmoCj>I;[*7YeGcIE?fd^=(@d7`n\i-?OU;BpG3 %l\u2c]YrBR=V8l9)gR#8/0oH_nf\f`==$bB5lpgaM:&H&d$S0UD&Fb %.6#\c6?"b&-1J_n.0]t;,[8A6'0lTD]9-B.JZch=,(X?HS<43iE!3j2JHr"aW_\k>)#6Be>_f:+kBY=UComE8Y[mI3OIQEr%"^l1 %TM$*(E-*0?In.k5ekI9"/V2RE)Z@4jtQkua=cu_$J<&nc!V_A?qsAqF_JmYR+*`aOMJ508.i0]'Jn2* %,FlXW^ect'"7J;>jIc]QIZVg9/mY+GR;L_nf]YcL.>,u1*R@9D(ZZ'Jp`gc3]-8dsI"nqsn0;eH-!8A);b00e@)fNo=5"@I %OFV&:";L&@SA9c8\hK9@r!"MG&Q9Qni7*kBE%^'9X\2$007M"%>h+ %O?e@"j4WraDKK23K*%U\UF1+BJ-+Vr8?r:HK?/inC$>>PcV!:e-^o?RTBUk[i4r8n28c^H#^ZlRh]NF7*>"5a-Ju4ra1RH,A[G+\od5j`5;2,)p`Nfm2$Y5pX.:,HgtO?p/_;CgaOrbK!6#Z-PdShQfR43`[4Mn8LK-T,%;U29Rnn.;H@DZGCW"#M]:/o2OF[WQbgRZ %"6M?a#/IoF5kSSi7?[`tHO@R]-=Yu11iY*H!b%>oQ75\N0_-4WVGc0-:gg`aOK5T#Ag2q492Tpc/sO=nRO>+8"'3[f=X+A4Pn[E! %2qZj,;hBq>d5-me-O^.5(![EM.7pN[kA"sldgOo'crFJ;%7`BpARSKm4;hHrf*N]b+s05d8c(if"'WJV+Fb\K"3+UM0RYpd"aV#u %F:FNbYc,hY"q!nSRr>a6WL>>iJ-c_a]\H_ZOas4!GN5dId %WE#A:0#aFFCM^M4F.^_Jn8?t7V#9DGQ*c2a@^=4!AgEeq9%rRNSXW5bGt&YGEF$D1K$UBSd`^On$8'QVa.>%.5Z=sWW9.THU[$7* %68$C#,TnD!AWHRoOlQ+72FMDF5V""4/5SIcbHf'FSG?PbXFr'$-_r=X_ugn=Q^?s?eXfSOE'[##e&Fc:UY\YA>\nML,%les:8QWpB&:=O6\ti^:87;_cUL;Us4bO#&XN9[L %M\E2XU*kpUFdL1Vbs`St8(6mR-A;-p>R/hBm7S<7IRqMa!Xfo"-DW=k1I[r[dnUr^cC0<#\T!ljl$hb,8`#F>@<`0(]A=mq5NhLV %K>SXD/$fqr@?KJLY_9AIaH2mZSsX`kF9mE5^QEZUKV%f$_'eBC\8FWOfLqdW9(K.cCp8gm%61673^DI'9a#"3D'[u9,"pglkAhFi %$'\ctmWlNXkOqRSc4fCn1Ad'Y+SQbGdWsW&9RfeY'O*&8$[)m*YXm>tnMMl"rS1AB37E\R1'.k=co`k+Ru_KoLj/omU[^KHCX7r= %Sih1kpPRI+(I#VjZ=VeB&VRMNU78l>4tY5+&RpK3edWqA/@FSq,a5!ia2T/M:2EoO8>Y\N&EX68'-)gUetKoiIc-^6e#cj&T5"', %)X?:-1gC$ihV&([L4+K+'J-PF7''\/AjWH74uE,"tg*S.SrX1W&Gm>i0M<)!3-a/P:Nfq3JMPR1Y,4EN3G(IF!1& %`H?dn0cc!i)%=L;.))PFji4B)1ZSh00e>`JhCh+iR`N?W[0ZbY)YQ'6hkj?Bqc_f[RG'GAM?Kt#ruInW?=odkSh]2h*PuJ@)M;2lUj.cC\En4W$A0+GMZ<= %jbl^6WVAZPbhl3"rESQ!/eegsa[X!66uk-Fj+.'t<"M(o^,L#c_qSRD84h,OiO/'BHUQC$4u+9gTEUsG*o^jEW19]K1u0*?=3c19 %g^$%Wm^Xc_k:XUR`q.#d0(Z["fr,/Qle&E'SG/q+(,,V(Y(rAU=gAlUM@1)3F;tJQ1s9m^@0 %ieqMX!=3Pb*2Y+;2a`k$3$h,8FtGSnnT7e0\VDB*UBOS-*LleG-E5Y0:f>._""+6CjGDh!!BXSns&0.I*=Q117;3C3Og4rE6,`B2 %N-Sbh3`#CLL2oBZbEDB=mMYj2jmFRckDE.HEb2r\?ZY?e`"'9ORf(p>G(D<$^!4X-q/mQNbDb<$R1Y.+`CKe(>>UZ\;oB?d %fqS(1M[oL3?mbsZ_K[qr<1K;NNLSN6&qLUDgjr"4m3q?1"Z#jkZCTq+(J3!sen57jQV]NM2=YqDIlUg/3AUlo1a7/MM4)ji]rMY< %/__,.@0m3D-PZtXg-E^l?%GfhCPcA3lKYp7U>K2jf% %Xj\qWBhLq:Pbr<#]@sWU]G'n`SaG8J>%;OcP,!sC0p>*h=&(k"Y+J[r)(>d,K`a'Pq$\@.3$sk3:1.GjFQ!a+4.4cjAuC*LoT["> %i`fqEk!CNNNGhk29uha^2":!3#g(goo74]o&7C)J;TMZ&0ZsLi7+cE-:8af(>"&clO-oLX77JA]M1ST1;IhoskKYXM7!+PMa'T5P %$iZdmrXd'0lZ!fmllP#D+-9Ln)H2drQQ]@FW`g_Sr?8i)4j[4#%]_)Q*i^N+#Bd"B=p_TOS61URfAgY3CGlaW&'Ngm=+@/p\0cb+ %3PH468G-THg,9Rc$==L*3gkb6cnd$/ao,S3R3jLem%,riF-*o#=Z2H^/e!P?/1-)o_\1h[e_q0;C5S`fko_iuDjs$2Ke %/#2B$p/^gS@HWfVC.QH5]mscf9$)4l8B0W1La7Y3a/3A=fT]5CMtJq=E22&Sr?_.=fq4sY(n"lhj`ZDM((V`%,f-tdQZ`SFUad2VtWJ=0,oOeB3uG6TC"VJG47=[\^T`jho>Uh:)\J4aW/Yj^`V1$ %]9)!^kt5E_AmM"m[^=5:0`\&5Y"Dc^m1Wd%/1_>k:]V\6iMJ*q8K&73AO!L3s^J/ %42P1YIAi'HV<$<19479\i-3ji5rY%6NEP?l[`T0L[lNW\@FNJL)g:*/dkkl6*qP_Tog)MRRqgHuX9F#tptN$fafiRCPkF9ukC<;d %PP^KCqj,W`41_`d3_=;IL(FfV[4u?]V6c(4dAG/tmW'*[LQ/OGI2t5,p)#\$I;C3JDM/ef/W],;GWc"CeDFmng!9!Xb^29"V7i5C5$6-IRR-3`R^][]Rl0lgc.C2k#EYC73004KU:D@5?U@B*co\:"G^$[8=_s,7_=D^O\$:FT1;l@nUs)=mc&A)R`0b2Z %<<,6Ac*B\>A"RX%4YD!*iS*7^[e(=ieSMg"G,;^FmmH8eI38`Hh+=b6^TY@gtjH(%(7UF^dnJjM#W\JH-"ES7cEVWN>UAZ+GO`+$F)ts#_*GcZA,2etdo6@O>RJ:e&>Gg0N %FZa*fa^)8)dAoT9cELM.G*;AAgQd%#+YmQ)$D:bfMXZ!kUOLghhFPLhH@"dZTQpL.[! %D3A%c^6jks.aF`RP@r*#'(X1rSP@?Q(2]`I,"CDl`I&bQ.Bm>ol7T^m6SGP]i^ %9@"Z^*#MR&bCrUR'i@gB,2MrMph,2H38Rm%[J7cp"HtD#%cS[X4Q=CP^8ZeTF>re'qS=6W/3"gD_60N0_`!cRYugl#"L$H8>4l5?XKDqF&\[Qh\2>i$J.)5Y)cTf&kV$(a.ETG>TPL@IqVl?Sf3Ot#;gNokn>9;7KU*o %8-O6Wjl2%ZK?G'4.6X=qB[h-Mi9^h88!j&%7Do[#p`%m+&nO/Dqi.esa413Abe(4GJ#- %F2c6Yfp]s7q;W&O_eF[N/kJlk]jm2f@YT0HXatI#262S'-QG-)gQ$&[`0U+3BH3`fGd6)LP%SH&7?+dM-*]Z6'AaZIbQNLlnrt5K %Se,==nNl&A7"uZ4OaHUt^qsdCq4JObI8S\j#./p1\1M,r*32&.)#*2Fh/<\rSC)K@ZL=Oj^_P+:0tIAWn\0B5j(A?9"O_tK&a?1H;A?)P95<0^tD+_c`UncKXP7h14p)a6,3g']VmbKYb>k1D.$#U^_k^1l6[,(u'X %6C*Yap9!9cQAu07(-1@?Y-^B'mp^_GFLCIY`GjXDrS %=6QPR(67sGqq"c&t%$=dQZF\/694G<^8#(:>#_nofspsSB-Bh3Y%RG`\N_DpGT`4TqN;FTp;t- %Hs[rd@o,EF;sWb-A8$rR#rB?VAj.ZN[7HTpQ1DF"F/0/#14ZkKQPkodG2!bLJJ_`pnGbD\WZL=ort8qZ6)X\5QcK$6`/[s78Du'h %U),nL4iP=(69I6Q0=DHfeX5RE&(>(/n4;`(Kl^3N_@92=7X0#DL%2Y"(#dJJFS%(2-j5;(det=R/m"C>*7!3J?;A3:"\LV2-1a;5 %J-`?[FH)26LS@n>,_qln[?4'4D3N!X?AnOqCj)>$q* %0$cJ.7lIuKX2jOLR]^[hpP_tj6%(9?S*lVTf>X@F&S"l-CNcl^%_9QX49[6;2'(bh,`\8f"oO6\!TU).lZsHEh*rL;CQ[06`%TWu %.d]Xh!V2EtFi)/#^p42o].,mOdu(!7l#'t)'Y'-6L,$0`&d3?'kB]+Nak5Q!C*Y)n>[br2SM3TGYrJa1M!N\^.sX<>Lr[BT(ufRE %d%MbU($6iKU>)qZ,.s`JIV6;_5QPS1?fNmK&Rk@M;P+_ZMr;cD/^1PCl$!1-MiQpKp`UfZ#VkG;!B66=B7ae9J]/9sY^-M^=["0W/GjHCYO9k4H+K#7V/cm2(VA0_2Nc$a]TXmf&HT_#ImijDVNDC@uj3MSjdU`O2W %bJliP;VCNWa'i@1B>Ps-:!nq`W*mK9:\*EgY=8UMA0[&Agg\";ekSgOTVu6#YB*Pg2Q$V* %5]F)$1q)-@*iAe@Y`>%!:51'$K!I)@+g<5Spip)H3UmW"='%UAY_S`U'G"#_A(:DNo4d8TJU6""nY^H0lU&,npL5L!DO-.p]k';nakYVYeU&<.c$)Gp/Z? %C#>o4SErnc%tH0Ii$BY<*)/@-/@BphN:eW)T]g%r8>U,BN%[le%<5DKnq]Ffc&K'Z#VI'??AhIshDSLm>,P8pM9.?fdSl%KM'BqH %[R"efEsseH(H"b_C[[>>ME"S^>.NZA!Q!:$25_'7dL2D(l+Ri$J=Z?/(UNte02ML&Rmt99=a4WE3@$oEP@RFo+;)+]@"jBH4p<9t %6Q*c5Krdrr-?-0@a[=Q59-Ag8[Qc[M\2AVIUk")m@^r7'OAK+hm2eH]8iooJd$6m!X1^VN0*q:*$j1Q3=dpZO$\2h=5qob7EWPB* %(_oo-]LJ/oe!]kaB4>30A^D"N]rPGPri2r`<2EN)LoljP$%052Vr3=[Pu*TmN4A.pF)C4uLmJEt)-g4G=4MCN6$u5,RJ8Y0@YVIi %!sTCEM7Q4Z,E\graVJSsGpsFAMGu/,Q'4NeH(@j`EA+VC$CD%TfB*)+qoMOJlNu"!R*%X_oV;"M5psp19l*+!j`XjihYIY %)XBbX76kKpk%%uML(j7_F*7"IMH(')H9MsmNCd_HJipZe,$F89Y*>#S#Co)D+_hBHr=6gS_9hNUp8SAb6^.[0Zc)Xsn6]2rafZ2M %^ce^d5.aXGD0!J`(m2fRI6@9EM>L\9Q;gbP\ZJr"XaQ:g'I_*-S#96Edperd3iYhZ7%/gMROCo+[t$@)(RH-C%HqMHT0nV'r\U*i %OA[XI.064k1fMhTlosa$*SBX]@@o^<1D'JORY%]n^Ud=l\I>/Cs8)?;Xp='$bsY>]l*7V&C_,`9%c3CFf=ZWiZl*&Q!A4*E" %^Ilh\BSP&>^_QfcYYTfq_7d=P"_8TJoc7-L5;[HnuR7pWs %%=&`;k%KU_];:@+8kG!W7X"SCOK-D>Je3]2#'8M.18Q'N*_O,h`f)X/r4t7'>*P`kdANg)`N(+m

qIO,M=HV8_McJ%H_ZW8C-! %,`C9r_![&],+C=C%>/7>JM!Zd)BZ:<]oEii0Tu'45Wuhl@A9+gjo1q?H!'+F*8t[`_"Y6Dh>]j;h+ULS;64Vd*X#^pF:6DH)tRGF %,LdQ:+&OaAMKI1I5+aF6o %W[Usc;VPa6fB7:4.&6#OSlrOh&Y$V%34d9sL+^IYan=5q`u#GeDULZ?S#a3_pfULb-qZ=p-O(?$5p4-sP%qPB%jW*`Ke?_gA/C#r %^d1gPl=&^;_fr,AOs[*BP9LAn#r+7ehr(HKOk,/A&t?h21,LWaeI\$\lM*@d(E$rb9Kja7SSQa1rA_CHZ %LkA>3qKd1d7FcNT8kqG3`RCSs0@)%C&g`!t+RPP\Xi!DfU5n7[QH0d=HB'D9oulBD*5uTDA=9RZ7;F*gLP7t3(KG\M7;l#D5-,lk %JSJ)Dc\T1@-7^7,QL+34o%M>RempQ](`1_','bW^$k5%6qap"Mq"sYl5H@P'S!bfQg-AFCm/s8lf=FB+6Kl\$CUK([Q2VLRY0Xq5 %QsPN]b])H&DRZh^h-81m*@4]`9U@ef/-KndlFm@\=r9l %)#IFhY`Q3/%15^]C$NSoK&Uk9LoW[:KZS8&O)]ZI#[`ieZpW9j*eM,i*-bQ6U]4V17sO^5F:AKB=gcLu4G$[B'N %g(aZ5!*TS""PDFJ*(,\jl-!X-/),uq#'2&rPfTh95@-GJQccUWh>@0gNT]4m1C0]"a/.2J"$51`7%Vb1qUWB@+j>D/125] %+*`\EH=MS)aTq1hbZ8R$N8(mQi"j+["aY\)E/K]&&8hoY>[D,pi#o`cc@(lD^)quIrPF@m.o;JI7"C:1Hmm@KWA5;j$>?Y]!"gWP %Wapo&G9Fc1R`tZ=5>($l91f4meG?]b5of_l/L?$3aX%Z/@`5!EaEI/E$LS0W]fP?m( %cB_oq"KVjV@&T&-Q:%2W.iJcc-lR\/Aim?SR]qd-o<@h[NIl"4-;?%mpE>$TP(g?u2C0irR:3..(0!\2ORj#fD@n/AVBQq79hYYD %iYL5pRj_;jh\OYFXa!C<.3@L.5$4I.d8We6YX5]CQZ:Z8-X4#Y9/`-LFsLO,n6RBn'tV0HNSS%\JI2J:Fhp\d-1anLe6XX+qnSEQ)(:X+$cm//3L3"A?V)B%pae=&L6-q&C_s46N %:q1IKo"e<;fSVjpZV\4ne)qnW*7W5&QX%bEP[^If@_b$p:U.+maErsBirig+R4aA'8A!SRW^NRnr`TFaEqe/4BG*m-I$1sK>(XC; %fsR='B$f!^jG5Fd^5<*r,DeB %9)ao&URWVFK`ep(ORXSA'HpdnCR#,cp5s%.**)i@mRi#>,H$$)+U'#K4?ku[7^Y&Vhk?uj8X[g0U!C5rI54Pr[,E?_TDgB_/e`jB1pm1`@#hHJP,]MLH6:e&R-1s1SO&L$@CM`o1QN1tZct_ehXeobZbEN#T %,ll'sOc,.`BB-Dj42\a3cJ^/L'MiuLrrd*s@."6chF1DYtU>Ju#X>es)&cBF;bEOZG %a4H$FGn0Y&bZOX'6d.f(,SZ/Upjm^Wb,:/oIY&,IUrAh-MiSUn12:SicG:mf9f^s:34=t10./c0"bBd@a$@*]X*07T5qp[%8G(Z- %8uRA$`)>Mb-.sX=g@"LJCeJ;9N-';d9.bn`Ru[T"R]1mD(fol8+FsMA$SkN>V7Q8!;`UeJr3,dVgYP8J5\>[!UW,>)29o4"W1\?7 %/dY.at5o %)\<>";+uoC4:Udol=sGp(p\!E*.XH1_`+'b`SKeJ.JbS4DG%M&<1fg[O"<)9*lQHfECYOI\W3$2!(gRWR!N4r!9(XY7M1qR))K"U %c+_iA6koM2H\O>JgotH]!eq>R_q!>=/dupn1g6C!#$[*VQr-fk7Oo\Z4_JeF_nuVLB!J<5!q:E"[Xh.C2elAf$VUdB$quLG7lR;V %Q:hI\-eX6f2OSU-biM[qVf2lM@1D+gG)Ed8RdQ+*NMJ$0;oP5l44rAd*K)g(l6IQQ4To%\'7jWZnY.s=acasULY0@0+kT1=Dk`B %ca;oqL>@aR`&]#!8(I/K+l(V3@*UQ$bc>k*$>oph`\S2>J^%/R=G.B*CVDsk)bJPF\-3E^pO/2%ZmBYkc7e5q3g-OB?)9fBFr(9) %#oi:JoVQT)$n'EKZdZJC8;cmn^o*#BhV@rKF*]_aIB8jug%V582%3XCNXf+q1Gk'JJQDoNR^.^PUTlhB*(r\#&;-mKX;pPB?:\6S %msMj5M3MdSBs><)[a2AbiP]]o1W+5mqg)>*eID&%G&"=(M^+11[N9]Wra"=R5c?e>n7`LD6Ho5?9\Sej*H*:mHhFNt(XM+T)^*;EE-C+UC(^cjbT]NDD'FRSgO4d5Lt8NT^Q]#]WRI+%GMAZ0^M7g!3d?3`"6acKoI;@JGTE, %2agAkCn]1Z-(59B/mNh);BB$#QR+_-3LG(OT?h8+CeGtXl6Wm\fEmUI,9$"'hXV@eZ+&c=?F)Y7m%ZdbCRGfP17TbANr@F#)(?@O %^K2s)e>ms;\;'4[5S17I6:]II(la&OZp<\^1e)o2&fXq$W+QN/KfH/QcG==JCMcH%-4JLE?Rau:BgU`V4RUj=2YM8l,nagb)nbMA %2dKh$>(R%nX,nrY6j23fsaS.];VA7RtJE\5ZFlF;h6$I2o6^i/951l2ED%1@,+[1(c,bf@LOUpDLb.`:gLF@2G( %Ko)fG2NBj5onRshVGus`!4usc-)n*]%VWI/D`u>A'jkt"YAO*F&D@Sq@JJGFJ0CqG-\a"b5%(_n1cl"iVXl+.JG"Qt#2Q30)r4[. %_m$2>!Bs5XFn63^dHY/M,'_.I8HOW6c4=\.G7'oX8MH[70&p@*+tE`j7-*(Uk/fL!k0^WhA-WZ\$[ip %Z&01"TfpSK?poq%c1Ho>jKS(`:)deLGhg20iEr-JiB@MHkO][iL>SA5c*Y"c+k]M&[U,1sB7r8^@`?jd=L,W-E/%aP/CU/F8#cjQ %8h:q\c-AqM%k2g[d?K$m!^n8>.?5qqlWf+\'YN"SVeeM$>25:s'PU*aKZB.[%W1J>IL"1_IE)ZEVZAtU[o'uD0b'4=c@juPhf@,+ %gXMXkC&2K-fF#77W2_P.KjYki6raj.T)`V:X!?oF'+Q6+aF6CP^BKWGi`TRT6!4<[=Wq(UbccrRTArXAuHf2)ST&.6OUd %XEGY,RpKn,2r?4Y@7kG'p&YOh2mj2?!92g2DS#,IQki@bA[0WW4%,geB8L2NR5lbt0JbU4%tK2qKB3^hdGmfD_kFh/S#RZ)OGm0Fl$Be0/8/E]DA$SET6n*`aB1i%kM#$*JV&qCs<>i^L6`MSr4"`UrD2(t>& %O@DS#p-Xb#4k7Hq&U:RdnrN,ZVfb)-:gr/S6r?1j1'oKE--H<2"Is1^,+i`lm"1B8g8e%J"R[UCgUt05i]VJBiCX;08?*S,$&LRY %eg0ij%&%#;msGNpW%+@s2`lGVg=mASJ3t!'?`4P^9q?quS*$+tn`p7D>Ce/,(*n3TBPEW$C:M$$p:m.n@RD@,4%(\6#50F%0%#pf %"e?GGm[@n,C1^r3mT-8j.8XheG+eWl;KZ%;7e1](*EEZtKl/WRUmRdRP0?HjTQf?JQB(LK5NDUpm2u %N./_$;^BW2+V.N1rQr,$TE)eCC03,NZJiA*p$C&6(F>I[Cji+`j'iaD%O'r^mDD0qP0RT9HVe9+ar-_3_89Mn\+XV,+FNg[ZA9K=,jTk_?h]7h!7jW*UT3+kSFSj>NGTk^IbV!i$+K"oed"+t;5?JOo)Z_6:_e %nI]Pa06(]5`ULU6g]!'n4.0p1@&`tF7VolMH972<Ec'C[;)OYp!on/MAYe4rK0%P)`4T&E"$!o8,%J9L1@H#(.Og*lPRu5(70J;Y1,q %)3A8,ndP)oDXnBA(W^Xh&;52d,=Rh*oLfO$KH+AUpb(KA5o/&rO)/qD4:F;oa,KdNm;'`#G`QfLgda>ZZXo/AiZUc1o?p=kPoWZ5 %XXAe&46oeVgZd1g,eaL.+mYD`n,UIB.bg"iZE0.@&fGKj9]9"aK@2A:ZnfblLs/#0QDNpX_EEj.k05*"Y^,7BYG=$Fr7FJiQh_[d+/`WrLtqTBes#g\7S'?dC>a>sokB**HiAqe#$LcA_p\m,g:T(KQ+O($F.J=HTr@VoCS %]\CpVeP %%G]tV*@uJ1I`QUZ0I"Q)`Lb:Y]j5%b\*8&Gj2OUEd^Ot`_GL`Fm>)OA]"UmI@CP?CRjhHJKV8_c?dhhO: %[8Z+AVZe(YQHcAf#^Y4gdnK"L`F9O(Jc&DB9Tl41$8$ebJ-dDKJhe`RH>s$3,"oMn?oVOb&XsHHe\hsMh+^W(G+Eneh"V/RDQ.Ub %IfKeB@)-!,$B\t,4q_7Pk4:mh;KU=+CR^W=Cj]cM=hRi*huZo7$-(*9k(u/JfH&:1*RM[Yj00*`Ru'='VW)qb>)Ko7Cg*J;E1.si %!3b"TPVEU)J_6rX(TM$cJ:8geY'V1T>g;]>Qer-^R>D?qq@cka0[:\(2M`Z"b9kL]3!d$;XE2\S_UE_N"RE_-@Hi]i-`1F@=q^od %5]A9t3@S^hNF[)"W7t35XSl2r?uH8G1tbJUEE-tH_8?C-BB=mVV2[ncQ,LC%'-OcuKkL0(UZmdWL>)mqUoQmm__Omm_o>4%C:fG7 %77eu?\ui+>T9mC.P9t.6I&KT(11&F)Q8q1%)=gAX`M"+X4#0s'Xoo0FUU4\\Vjpo>`,R0Bh@0&>Hn<"9<$EWE_'UII!]EIGPtOS; %,aOp=.Pq/I#S$gmckM^)>)gRf88B.q-_S2pt!QQj9*!t?X'5-l^u5>Io>;-M%_Bg %UK8')&a.tE.V3:"J,Ip;[##P3/F^P+NE+iZ&54hlpdRL`[[Y]q#P_`mQ*aKV4(tW6"]7!?^Vt<]A-gqsbI2qW<3GrF$c,km.b7;f %&lM&rTc8>O`t*5P#d!ed[Z$hoHf+dB,iq!3iIDJ4We %Wc%UkQ*X[+hP','oE(/8!-o3;R-LT&p^6/.W_@C`K_3Dd.m$Hnd;.^Q%kGB&r51obkeffI?L"i13\5l)1NNMY8:6Bgdf_)Lp=S/" %jO+8J1h0dtkDCrC_EM!pC0j%;GEmHBak2p'5fjS7c-5iM#q+-tQ/K]Y %JLJOU-12G8>!.p;]Ss4hHYiV.A2_f^$LbD5;lhT4J1+&i1YL[+q,&&m7%g?[aN>rcFX[)e%_l"V(jOOf_tHd'`)ZBd;lI^A`JG6ZWV'bt(Q?r$,U-NJnq5O[OOiTFuTabgZGIfM=;L'!TUH;e&uj %XJB,9>'FB;@p;eBPYGJ?"P2uRNt>*+"-dL_VH>8>o_0iS$#K3B:s*u]OrY+^2sLCn-f7s@fA %q.6q*-KgCi0D_br\]dIt;K*P9Z4bb&**8MA:C0M4OSRnF`R5oTo-Me9#)[Sf/CV3q)+q)!I\PaAq$:]hjWEYW5*O]JE'_akgn%ehmMCC-o" %l*+ls@\WU:QeQ?!6,"3ch\FhEn:t[9V-mB0(Q4cnCe7[?%JJ7u)7:TK`'sRZb*SAa)$itZrcsG]dC!R9KOQQ,<[&mfB6Xffo;!6$ %5iua[eQ5[]6$nbR?Pi"m(l>muh92,4FaS%?=rXHAZ/]8g6c_[k>u2?Q-5*j#9Z5/:?Ujm+g5GMAW2?5U1FNY\N86SmA%/D5U)CBB %QhFIY:;-9EijMR#S!5^q1@F'EnaO.C4E-NSL6_UaPklCab:$HtG@66(mo[\GLGpa:GYP][is(giPXJFALj*k,U79)iQYmR %A_]F^Q1\X,nS@a!(N3*2ld['8Ad7&DtY1:T6!Z<%8^/;'DgG'4ObFG!9^YtDN^J`pcB9Hf+

qt=7ZpSQfoX!JAXND@\^^CCJWehJ$\`(9TWncA`*I^jihKbMbf5&#fPnN']kl#-W",^h-><@*RJn"dKG[24Z."+(](-*S>JhTGn%hp&B>1L-[o:cbLY52NCP,^C2%jh+/)d.1E[;ippL)-siAncC75<][7&5 %H-4ndT^]iF/Y2D/b1'k\$kP*t8=G1q=P`hlli4/dYXPo!6BT$S;fS;DDpXJLY_u2S;I.Anaf1Nq@2uo8SIPF2fFtHVE:-fa*H[]Y %2ak"?2C1/cW^*[G_+=7*Ef/u.aXLgJ?:\>7b_RcqS)af1#fnDL"6`kf>^\Eg`-/ZJg/-GR2&T4Fm+li--_Ap]TN?%[Bi;_F];(PWSF@!h%F@BNcn5?e_(X/]V'>p#A7VaJV#("cSG(mi(74>UMU1,8QLk$m"CS,"#J9g4]rGaaFG?GpLu6!S5ZA]Y![@8]Fg>>VFCd(K>>d,P6Ff$ %=*0cp*?VLodDB^Q[q7Zfg_0Zg!87IoB]RW<_-'C-ain;^6OFDi)O&F,paVhhqLY9Eq8i5SM/[?:.?h,ahF$h%736eikImQA#6^#G %(3h+dXR>o(nXg:YFE;)p[IHXO7i(#l9c#bpHBFnBa71M"0H7&dAdlne,l.]`YHG38M-fhoG1YMd4N.?0[%Fl*q4$t %5#'+:(Zi(D&:S>c>)Q>"IWbb(pbL1H*U7D)MR\9RR\fHDjV$3DZfRVg2MVf#N'dW[).+gV"]fe;;3fCbg#cqY2G!L2/.;;YgQ_Ko %ii]+d.3[i#2>_c\6RK9`f'9rOgrkX#BKIe<)@\7_$Y\\$Mc0][D2=Fi'#/J9(RcNhIX\_27ueR=&i0Pgs.N4$uL7"<)6 %R\I389[ecN"L@UHh4"V:'*1Uo.3/`L@K=P]lm/MJX*";.,8:Ap839@E[lq2G@9HMH5j[fu^BNh[SU"Fu@q`NRMJ1YSm($[F#0a@I %/KBha7P1)">8+tc#;HU#R?DK1jb)P=S:[3TY1.gSlqTN/#Q;PVcBoY>W7/E\E88g6-FXG./^ETho!9qY]<6TkcRgBp-M/SoC&i.Z %nQ09@TjPc2Vj?^*T/Sj=Hu-GkdAOA_P3->dAh1%FjP%52e8aCZ9N6]Y"BocE3^G["E-$#4A`J#9,b(-oJ&<2sU;H(p\k7%r:g;ON %*KF1l4K#QLRT5%F*/7.>2S$B52,P4p7sJN73FROTV1a+Fa6RP2iRig2YKO[,kL@Y_J]-5<9W.Ue(e)s+K^E?;!KeeU^#7$U %DJCXL`Iss6T8bu[VRg?(6eqXZILJt4&Y[B/MoGO(0u:A^O[MTXA/^Y/N&1)/'=NMH!(4sS\_#hAP^&1q(/D_lcfE?@4eBmWjYN#[ %_F!H2H\*Q_Oj6Bg@X`l?V_a4gZSqL+FA@5;WCS2C`ce8s"htQC/?ntiAc0kB$IA8rgOMKRVZ'8:!"(aD'$SUJd)*Y?qW %/,tiV8E!HI4a6baI=*2L^Y6h^TOs"11WU5EQK/`=8+FBIkL5mY#$%XUkjVB*":hHI!ln? %Lp01HjJp\b3]D#N&7R?4QFXqiMJ3:b*5%'+.du>S#M0-AbY-Slo^FS"Z5#mM]].8sJ>Ep37!7UB9=Mlf(MmX"gmbj?E+*B;cc[cX %cEj>@\r#HpOV8P*R$OP/cru@m-11kIi3EZZODos;9$&S;F_hC'Or_OUX4($r>O/f13n15&$l/GDWn>Cl(f5GmoG"Cf=ZKT7r4"hH]$H+M6kC*kImrtGDcCF/AO.O! %=<[@)"QD`S(N?K%H?M]?h)QRlooIs=8d;3+"XGj!F\+-6OBHm&']Ija8Td@SRLCa"4XT!()Kg]O"1.>2i=Il&&Ue_T:X)5FgcPA5Cr %iLp\hmZ;RP]?"fGj:H!E/'tl4#;'D(.3(B39R!i]i*QMrb>@j&o9U-SW1V-6M"%Am6&Ic*: %9Fo2e&NJuYIu'8Q3`$I.%H2N,g+@&EL/JRX[/l)6!oM8R9j/Go;ko6TrR8js-sO&J=]mgCNY3*SkgE7D#:BJJC=^YnS>Dan_eup` %r7_QJ1C^4r+.Yr%^CGTlSJh8t%:N^k[KZWe<$i@ja="ojTh'#"M8TS):a6R;5I;A5?-PpsY! %,,l83Vq@2WRkN:omRCPm0hA>/2rk5KFd'(#cpc.8<^H&L2?YJAVXj.g];*lB>%\r.],CQ3(ECf%#B''#`&8(m`bB)AS,'>JBdX9o %<&VYX[11t@AK%1T'%"^#_#i\V19J\lpiIXP*Qp3-7$6P(JL$/_=Pp=DB$H?MO$ngk@/I1(S#sH-%7#:M>b+MeJ$aDs!4T%GY_<^!?31;p-,D=N%!-XP0)^o:rK&^tXTlg^o"[4+[#HEd %F[D[6B\*@!PaHp30%m4C=1jp=Xm8M$8fg^]]tBcFMs0>AD[.7Rr$'C072C1eUkf9j^o_"uiMGPXAE.2V7J%5YkJM>4-Ki3&`/9no %//u5MlX,'l8FA/>(Bbp0lA>=Z=<''3q+S+-Wut$ML/?7Umssb%67_T/_$j/ILa&cCK>Z]fh-\,Za"K!E*krIeC'X0bGUX;.Z;J`Y %gUddPI^aO!#eVTsRo)=;[(>I@KV)F:bP+s4TjoUJm82%$>Wu(0^r(2bB#n0g%24hZiLj_QM>flmas_(==_n*`"'3(C]rTXmrL#"_ %ZBp+KdR[CdPki!tH&&Pt'1<>l+dQK*pfPP$QRY57/Bet.)gGC>S]jU(gup^d,p#Bd7hQaJKXHnX\^+&OP5@F-9dL#X %;8A=0N\@F%i:KK4=ln!0['N7Vb*`k(HDd4[*gZdZaULl7aeTIIM!%9*UcG0N3sRD[5/pKXh(N8aL]d;t5coe1!p-q\_olM%\CWXL %]9]aX`T4p(Pd/3#QR]oks$$F"c>cb3n3,;VNgZQE[TN(q"itu;Q!c2*U5Xen54Vj!>nZnbERjPB48$f-O/En(NpN'Tb)fRWC])\* %X4!L"rJ]u+[:\]SHJ&&B<&M=4L5HcT<_F&oS+:rG5#GG4h%N`4UgJFob!,j^7l9CS(Qkm*:AFPa8>cIZ9Y@;*i56'KIJk\%%c+:Zmj>SBOfJ!Sp_X8[\I9d&6;b>sg$fLUIDJq,D3#TY=e>WMQ%#C:FA2?I- %F\HCM'5IngQ2_%HUQR43F(4\dP/j,`'Rh1=Vf(+[9r*Sd]+faa*Tl;D9+!X%R(0*4G;JH\q-Z\!^d%*`oK9?HCFIWK394!->)(03 %1-^4*'9UVUG7fZbaYm1_^01uiZ`s+iPRbur0"P(-4*<$hb)SdhfB"=<9AYh:Kj5%r.0pqp?-SQU03S$Y2&sJIX1BT$Op&W$l#heU %%?f)$IUq3$Pmj+4WNR[ri<--I$LOD2$UCD*I*%G4qQ<d\f9$O(NSk5-hpT'>;Mtjqk06r+K\_s\Hh-7-KHd\;,kY`;:_?Ku1YluWq+@$abW`WEL<([*=ZjFP;JPPBqu<=C@Ead`fH:DIRQXJJh`sB7i@_gtZR/h[Thp!_0k09;CXsEQu;N$Vp6>cf/2*<2>7D[9^80Q%`eu%T@rtQVAG_o&DDuKKj$7HN:W#Qp- %8s^ZW8d@*l;ba\VGYc+]P8"A1@1k8!Pe>u3?t0?V',V,;:?be2Lge(Y8I?"kJY'clRHJp61-;G];!Z`=@6LGi(-$>IO;"S<$TS4< %jn`-aJ&MZ8Oq2-ad$Y(8M,H63Gd:_`!C[T(3mgK$dkM?Ej)D*X'SdMkPAauP-"^%YOd))I,OIIO!Shl)[&GgDBq)RdhJDeU;peDK %+FS[MW*d.7WTNBQ@@6PfN@M5B8&)B.\0dq@J!0,&fnK;8WkW&rW)Ug`Gbls%"SGijB2XIV9a&T %ar!O-?E^&Ij>k<)14RXf6S-+1bJ)&))A$'EiH'T6h-"XkA4()Vc;H*1PqlWm"J#`F);-p,j[.5!>NCWXO.F]XoF#EFp][>[`1A(r %e'MKcjj#"WK&_YK?G%#]%3GbN814J45(FLFUSC/?ZMXu,JTZWS(s*IB %Fb'XSa)9H),V(J3BF@91-ui)7IYm\"ia4ZUWl`YCj$Iu_TtUs'b?`CA^ip(9!%ASae]0(VVYOOHbT5K3=KL,[)1/Tj6SPaH_jNdG %C`#=l/4Ie.F@pB=,D_pg\,>V6bDn,@Y/+_)RtLH[Oq]0cC=_Vk7gDd>A6k:\JUW8J+,TM"2U?/sb/h"$".'i/3")ur>8-Md3R!t< %^)$l%WgJtQ\=COUM\hC+Wd?AI;:W?`>h#Y_OXuct07TOR^]d:ibZ!1`]L@h]#pVhe+kYW,d/gF8mHa[8N58%bXF[_A#V+=Kh+CCL %p-q)`6A,uk0OPrt>2fK(M>\FVbrjm!Iat2)8o=3-[jgJPGc\e\`o'=I':S>lQB6E?,$bW=h2MG;:'a_/J[+\OWIlrGX-QEN&t55Q %0;%P"#u*B1V'8BN/dG-Wkd3A&N%st-,m'EUM"C7UN&TL=/*^+\4bVfCJiB0R_*6]HgnLZ@]o;7EI;_$GpnDNSq+Ohk_WG9S;4W4B %D.$E+RXlN?:5/cB1Llb&L8E.2RTs^5f7`jJYn.d\'GNoaW&psu_Z4!F\*R<8F!032T1OLeT<)`Ah6IKPE(Q$m4NBg#m^YY3ObT$_80P8bCo, %:'KBB60(iD-SPYX"n!?nT..>jC`hqFK):Ed!)6N(:*Nss<3el-gWLHaKacp?+dn);!,:j^9uOUg**+ZY`pX>4Tjek'_H[]Va?K+] %_n;E#HU4g6PRTt<-Ijk&`!/RbZ>,#X,0;`S %S#R+,2JKUc4.;G=!Kg'/Kosr4Nq1ZC'K.Q/H8sWK(?pql=[Ek>3]oX8pa'm.cqj2HgH&+CSgNY,cf4s;rrcn.9lEsQ$[h\*OjnIJZsO%OOdH="AE+0A/m!1.9cA!mFp]Q8=*a1897 %FCaUsp!?P/?M[NJ@erl<5/Y9u[g^u7q'%fMK`TT[ft]M0j$mnojpF3GGmVWmeRJ.d+12!YA_#>nBPfs>-PPY1+ %75?AH9JtM:eM:H*hjdcl!oXD5X0[5W$HIbaHO0%8<(W07_QP8SkE=b)j;GaPG@Fm`D+tblFd7 %8lFYjX!?P2f\:LqS#<:3CSBl(Td/"G/3+GR)R1Q/HB[O %/Bu9#RP\39'eF8gOg#@8T%3%,DG#gAXto$Tr,QrG,H1`BQg6>85,dsWKH.eO%Ja2IjsYN2I85i)a>YJR\N.XMp2=.9O@iP36es/;W[(S35U(9&Z7J!l)>$UJ,*EK["$6)iOV %@6n;3kl*(ch@aEIhj7=#d?pqUX>>C3]"8pE9-$9\1P0$4\qj05V:mUs/P%HN)T>.abX&bV-H,DeRFgI %2?9`qP!Iq8n:V?ig5X*B]T&tG\tb06P&WIf7.WY]VkmTJkprf$"7/?@)r^G^+XnlWd`H!2:gk]k!_^$W$Na(>K\!b1Y5mYZV[5,G %CuJ+$)O_d?Srml/?R!478?a"tY^+)W2XS%u[e&!SZ2#-3,aqs/T6@oma+$iFP%&Yi%-/2uA5H^B=k97Gpk0;#G9>TelseU`RH(!0 %!fp6[Q,?Kp,"m37'oo9B/UOV8E-/s\FHR#'1?^n&[KB#)kotZHf/cH&YrfSCo5T4JV&>m_jCi@OCl+#J=.^W] %!??BU^9eY>?quEFKm"Q)1d+XOb./Yo[i/W'liTGrHCKh2Z^eN?VW?3X'o#L=F\X)M?EIK6$nO\3Qbme"itUAgVHIhhe[WWJ9MF)k %.9]s_OgV%WMo8Ol8tfAe(-#*u8QHus;-+0+LLT(EPXZeK"#C]!(Q(AQ4.P1em'_@(n-?qg%Fo2XSdkAsU81o!2-?[V1^R8>EiO=i %n:tlh\'S0UP:(43W`_ff$[+JpD)T+&WY-7VGh9/IaO@u:!i:>Q%p>4SR:GCAi5+,PVtOr2s.WZeJG;W?ai3ZG7.E(`k/lQ[M]Gi@ %jD/R:LU"Mc6H+U#u2=^ %Z!8^E3,`?aLKtJa^jh_lF@+^X9Ybi3cLd*3V#A()9EjPu!T+N_Ze@(,\fc2p<@Xl,$\XN?SYsr@X.roBE>D@!hPTAGbVAN8Cd]E> %MY3)7aD0kT_:d>6pF6D%)t,lmD>/E+EP!K3N^K2]g=H(#X9m>1E#oC2BL=I<_#&;Z9`V0j+Bj:[]@X1(Br[VY*aGGRQ/H/["1EEB %M*M`'a$3;NGmPtJC4qRZK1(1@ia^)Il#_"Tnt`c"R+Y\QNA+mt;'qB5Jt/g_RO!dc2!QYmoPL1gL7c+u(hiqiJqM7PkQ%?k6=D!1 %Z8l/'[2[.Acda2Oi)1q#EN;Ma!"VP,'mM1MolMnF$]G0LbFIV3ZnG\fCrqF1f,VhFV()JmT=N/E&nto2a;uA8Aq,^$6ck"`onjY@ %XZogVqH':d;9l8qb[LoT7<1Z[(T.ea\LtM6h^m^0(hRf2Mb\[C^_=\gfVhC'-9nSYbFD3<.bn=\10@7N[if?Y[_pO9Qe8*:5hoO %,Du"gSC0$'6#f+?3^r>aQU46_bkPg,"iSZVQMaAQF>>19V3<2h'2Jgn"IL&)CUJu5OKi;)i2,aN?c6-h,A0_+)_#a+ %$W1/f>eZ^#e(d1U!d;FP+R5]'!9I&[o:k' %jBp:f-`))]J?H?Ik]ou3AJidaY>Y`K2D]?ZWP`bHr.>uS/052#?9O/qKb(6@&ljFCRsV1tODI'0'<3UnW%_2maK>LO.F3:I:4IlL %B]H<@$n3%`$WG\KHsnJ)ZJrS3FDr+rRE3im%G&JA,(u[fC3"MTO="G4OM#$\$X*I,6MX#NcIp9VNYbllC&^L!&M2Ft/-I#Nh"jr, %6C9#$J.M](GbSJ;3f<_5nO$Bi)FB(5"iN&f0l=+ic;Pr_5gmH&,S8,fXL8kD63:;@nC2>)2sgFd$nU#YF$-'Aot_'Sr)QlO`HGX/ %'QCc[feR*=TUAGZ$<7UMQ$/l5d=<$U_IG#QoV71B^K0D6X='*(H-r5OEi,?(N-i"/_.ciRlI %2,8.'G?5oZj7t*UD3A2SiK:%F%>a;'MD*C09:97fe7V@Z0_mo4;Ou+*M6Pd+!+6V\KaV?L`+tk.B+CYJAHK;oGXY[S'@:@3acZ(B %IICYIVr)"dU6Bq^5#o`Ti#pZ7_;7ZQC$'[+lpokLqTIKt$!fYS!Td4&g38@\(*i_h5/n3MBDB&'MRF'?g %`S;[d=,7i(DQ3LYfS=/@RfU?4D`.^0`i)Q>.Vs+MFDJu]`q*'E<`]8%"uVW;<#QTVLn-71:5"r\fc"&Yl7"DHA="c@PtL`IV+*)ik*TMI+lqe/1`%^QmDO/H,@T[%REjUaY,9-GA %WaIcYpjc^9I:8TK'#\#Z5R`?ae"VjkS/ia76FMnD@(OHLE,6dM$ji76Cgi1Jm]=K>31je1&Wib/[1=8\(oN7;!-j1u*k!?GT#B#F %7hd-h;5o*?J:ALbOeg>PaGdELSsKp!>ag5KQN@f0O#e.333UeRnoUhRCkO*K,oM8I^2B3]-XZpi7%!U1S56JCQEp_`5D?:K]jJp3 %ZZhg4j_0rj[!7IRnnA6iIR$P%%>=([\#c(BD+q;,Gf2PPDU6u>/h@X#_ns1o'8bgk4"%nBP:@M^!V@/XCaE,#!g:T+50Ul6i>Z(6,uc?d&d9u[IE1Bt'uL;Bm?9M+5./?:fY+r&G67it#.LHUAO@WH[9u]ITu81r7tV6C;K-A^YRg-/+SE&W#qP.+5*>%$!$IS)>CPi#W8F %5dCBB'YmnOo.KShXF+FN+%,i\feesa)F`.L^N<4g/d&!Bh(gqE\nUSqf?9>9^TNLn8QL=0LqM252qWKuZ[_Qhr',dK=osun/ %f2X[c$oaMg4[UW.S0XfOgfPs+bq^Kb,[j3k5o))B,`gb>/$e8$G)n+C8bh-+&>T]#'Pu]=Ms1pm#,4@nA%PM=e"o23s(U2!.+j7F %"=V>E#7TfgG)L5S;p#(qQ]9dZe1;m:dh/aa86#?3L4i5#_;6Ld[T=u;]e0Z?UaA56OYYD2I8XKtgdIS_2a<7N:A@%cec/-/Fmk0G %b,^\<-.=(_;(ZN*bB=JTdQOlcF64'\2Fe[aCa_>hSL=dR6CAMu& %NUYEU'X%Td@ZXNT2G/fQ>AX'iO6oLYRh]3SUAVe4T=Jg(Hm]m$'u\h3-Z;d3%hAO %M1Zn6jEJF^P[JdGjJVg>I\O.3"^[K_CK?bq#DQP'To&D.TKJd:W!^m %I<6P!8L[/V:XhC4Q1)*c5]-O)HP!N.N9/M69,HLuFE?1^?W1B4[cQI$!m6'F>,V"qd]4'UG;0IuL%TEZdS\4JQNJu\"u!+e)V-K\ %O)#Rp+.Q8MA%XFVUlXYZ$X?:P7J+>nm,fqUDCGZN#4lP\`S'p#&TZQT?iarXp+.O^E\!on%lW2eZFA8c_I3r8;Ul)X`RR`#1X^\" %q)sEfZ1gMogdR6LXL-K1di$4_fm=[[m4DEM.r&d`pW %dr(^;e[^CmNg"H3Weg*](g#;BPXl%>"`\PA7hN:HoLnO0iBC38KV;4"'7LQjpG&%2'.ZfUYLqYS2[gJ0WiRWu"d;tH#hMd=cZULQ %g`M)L,E%J;AP6^:.f.N[8qnK61'-'XCD>'I80plmpEMnl,G#)@E`pL_TK.^`?e2%k]Qij;t5 %O+Mqp.YDBl9*o1sjL1m9A`Mt\6:QO/1j[XX)jJBJ#p`N?o^)>@#.OO2GjdAO:NIsb %IB;-"WP$nZ@>XTELW.NfDPi>_/Wd\.*t'A;rBqiZ(6(>EhfO %JHV'ua&kOLV,TJkfh>p3J@K`'d.oD8T\^a,3g8&O.Hm^p-5=p0-5@9XiSItlrs^C!/Dk.=JQ.iiLC?V#0f]=3W5i7f+)Cf&1T7fL;Fs_^`AB_QloVEllq1q7LX:;dr7dc/1L#V7g@`kmSH6UQ-Y0AFdNBs;7B]O4,&XQ83hnsBDh_fe! %.7c#:)m^;o2h([Q,bO3qME0)Ie][5q6ON?;T')dU?$T\96Qf4*h!ZYZYVChS*Fq6+5I"0,XG=UN:nn*Db:tgu@(1K?/@d1SVXa`3*&`@i:_p(d3"V!gocS8UQ9)(b?HcN7 %o\!+p$h/7:"K<$SYb$OKnTcT@H5k#)q2OBCj\ea//ARQ/L_:h[lA2'Y+@t7dX@OeLkd=IX>Cs^gMMm!;+J:+i>7#3XOLbUJI!TBD %("Em7?tlIk!(08Q$m8];f,Y<$Z>>6A.E9TP=T4hLE:YH;\%q&=PGBKRJ\"i:WFXH,Zru1gm'qea0o43q!u(lV`=9,M9e:0@;*K]D %B-8n^&gOP-?'H$_TF_VT-n#U3cM<\78j8F-,#s"0a>J#*qr'eROsP;2bC\Q-^?SA`[uSWk,j)R"@PdiUS.C!rU+V@Mm8W %Q^:U4I?>GZM#Dpa1#V%\r"rL52_LY>Z9P(>[.r`Il/Lo]kiQudGl[(>YgHcLi02k;;';1[X!gCi8K!]:T>*3NaTbbP.EVW>`"n7% %Jo:^AlL#Hg>B^Ee)cP3ei#.Er`)9=-AM,_.Uu-Q*Z`j2hcAQ.M-Hj"d)4N%=:=pDuZmD'&9U^h945:9-c0OiXT2@K!:A"%?Q!Dkb %b$n-o25+03Me&9jIk@XEr7((r"pGVs/B_r\5cpbO!CCt^-BNH[>YMPIMtISL'bJXVY,^/r_8JB%bn0[4eLo6jA9cM+"q;)9oC63p %buBWh!/kD&-4NmEI2Nd$,(FKelKqs'&OfP>6OZLr?^eak0fbP:-hA %;_Uol31%92kahK\?Wg\jeSJ27e*Ekfh:"c#\oLnD8Y3dDW9G)TWo]D]RTm\mfi%0qBg)IO %U'1L%orMgB6h;JjV7K0; %F*VX95qge640k-]+p7e&oHfe>Peq9-.f_7(qlc_uP0>e#6j+;$P".cLQ[%Qi7WH^C3V%6k*No`!dZg_Ub]?JX0m,4_-fZm#(">o! %U'`*VhpraJ6DKdj+rnDg# %`?8-)8QE]9"+_7'CZn(D%qu,&T9Yqr`qV`iF"C#J`QtZKA:fJ4e]Yf;k&`'Tg/1\g>6u9\D[Eg?I%I1p?NCJB/rVRHE5)Xp7e$=hYQ4 %mDsFoXh&OqW=pbJW31[dKT4V;>Hd=fPUR$6ig-TjeaA_4Mj(;Qn4r/F\MN/U!f)NJ"6F#d2dAm+EbkpW@W>U5hP@K8o1B_j>qF.b %LrS%E;/[Q>->P(!D%-D?JIsREaq4>Kos]I9jp@BSP%@1fTE>h`("9C#ou+h0qm77,+YZ&!-amB"h.O>*>Ru-[gg=h;pasVM %)hmW>@^Vj_?U[BsS>^*2T\?RE(YOtXGu9c8KjCn"cAGDWWLV+7f'"fJGm=kTS"fThMO34?)^jIHC0KTn9`5pnDKgLl.C]XY>V)mm %R`-=B^.?FBdLs?X!:`D^#BcY03)rQE1's?lT*/nUk4F=^C>LSm/^;J[\/Buf5`+HrTO<:*-"<9^PFI:O`3RN`_1RO]P^n\7'[OV6 %150dA[H/Q""RhYQ&ha6$pq:Qe4i#CR#1+]Q^BkTfP^l-6LKKU,Y!\f7dhMO^S2S_fO/tUY%1bZj`>]p@N*M+0O85XmpE`FdM\tAG %7'Jqti4Pm3@Aj"I<"h*[nL*_YOZm/H(WDl2/bn3qk74c?Y`?cM>NgYGmh0M7"*WMfBs]Q@\qIkiKJG_\B`TU_cR2<`RtF3JU0-ib %Yh70hKj3!:+@GMLTX$n5A1WF!eTV7m#k+oG"NVtuSPV&W#nDoZf`[-?mcJnXq\I4S2\[6k\6C.gXB^@s%&kOb %Hjlp#%R81S3,sl)O14I/^\Nc[=VbXrIS95IL7pfLptGfI_f!2>;4n_sdAI*FC'6%PS5K#%i8d;":t"(FjYjE_8P1u(aJM6bR'SIl %?&8Q))A#SqB.!D*SUh?M"=/smJC)XWpBGk!)EmR\9:M@!@T-bS/jLPLK'j0fB)AF+%%5[TJ`bJtVT!0Zd0tJX^""/g'=l";V7`c4 %&`<3gE6=<.[U!3(ULoaN^aDfEUf@>/X&l)I'f-#Ho2tgf3`#@<' %1(DLg[0SO-BNV>)`[TSE6msSC5Zfa^dQ>B6T\@Z6JWL^HH3;hSm5e]nJQ)p_H#,8>GJc7W_t7-bE?EWG:Et6_/gS)H>>C039-2Almi`1iKqR#jBO0\E=;#cm^(tU%m %EPuF8MqT9D_uQ-@Qe\9e*BS0![dKAbV29Cn9l@Lm)af>"]8aGsGF7_aEeAN*+p#tPFR^NNO]Z/dkos?iT>J:c'HBP.0i_9UEtg$#GJQ!cj\)hUU86,]UPiGR*[7<-jFCeC.[$;R\U6r=3lA2" %@Y/El'#mGhBPMcbeWr97hYq5a=],+@l`hKDQ9#bfS;q4+!<)E&:&O_YVc-pHcA4'4Ml]ARQ_s+Hp/(t2H\-7)KEM+Ai8/;$&?M1_X]->+:H9B$gSH?R %[6Xq^H.oX_.Ge/o3XtOt)Mq,Hku>VDZ`gIBY\6`b%Xfk><3S\XYY"p2QK"A%ipJD[Uo(\%E?(2)DD=j2^9d'U2(55UjN8rknQUfF %LBsNnRZL+?-MgpHoY+#ENsJU95d*@?"@j0.?kPa,9!P290d%0#TD;Jje.o9G4Bck[/'14F9/Ank.BmQ.Y0]&,/i%o7b%.cq+I'!] %US+(nre\cO6#>XLoTD+7.thM5.Lq[soUk"GFIcH=Ine9e2`E4[1S#`6N$F\lkpd_!WjGE!.[SaT#^Z'7SOZ&3BZ#Ur:<#^KCp7k$X_"R< %S#83GnO)WB4.rUrWn]](MBWFIe$=-Hq$W_I%EJoTrq=,L2%-%%_E63WbbPR:h[Eb:4P0+J($3\0(W/iC^^a<;7QCkYm>5jaV\8cO %Aq7i[4K;:)/a98&7ol5+85/\dn#*84/blbJ6kq/6FF+^IS=\`h#88)[6Zf?i@eN=(Ha2GR(`-V]lY849@ocQJR?E-=M1ShZ%'8o1.o-aA8rLi60HO'S\_$WgPU$`gn-`m5o7]pSgFS#0FCHCUtm#83kHd9iP;Z+OK %_g/(p$hKN@?YqWLaRm@.gUDj=@4,OD:f;'i[Oe';4#o-d16R"HF1+G8b8JBk& %eW7n=C9:U_M$4#D"]Jk/rDlDb?C7$]ETGE-iPP6F!D%u3^?DPSm*1dH`S;2)`?ZO4!?OGa5!k4dE!*j5Vtua#Fp'q0XrDOtqj)#, %17[=4#sIc_PT]TfMsH3rMm8!(LX4)][?B5dk]EI`BAL]GoW%-HB'%)hq-gUMaD@BQV:ZtuhVG9p2RIu3*]mg#-=K$pScNC&hC,DL %]\2KUh6Q'k-6Ii1?:uA0mMMn%m9"q4S!V+&Z,O\L=rt8kDq+D#p(KWR\,J!h8%O6BqMnhC5tiPfeSAqrkr`'cke9([RHEF7I3=Z.>)-?;J("O%'\C2EMTeac1F%G`j%cNYBIPTSo;k-"d4^oYbk7Y>"p[_6mi[c$R=2Pb,d%B&i:lDC$j5PM0) %(*L5k,t!4PQFp*gb\pk>kK,kGbq:pNeS:0cB4RomBAg=O>XKu[,qhoM,BAE-roq\02g:/;\3%H=7U:><+WuAR63!;$FK`#Z:M#Kl %gSQH)>i0Ln!4;YI9<0G9(qop09Z]mMrF,CAiB60r2I"^u!?]p)l,Q,'`hK+grP?2(`M]\oXM`+erp&e^N!(10c5sJL`h>[!2u=Bc %Ps0)pcoSq8N"t".Gf3@f@a.<:J;PMZ&e$Dl&UGRU/2L^QTe[g(`[#F>'[ClH&DXJ=]j=,r_aJ;W*G\WU8I_/l14OC@=B.1mQ.8IZ %@Q?kR40FL[J0$lKeQM#n"B7%r!`Htu+ClrWMcl]4%!2,b/C:,4(gtfA-6`>B1[588NeT(#2+?";.'cceX8FPE3%5s" %o5UgteE27IhUi*/1T%ME]$W>%_dOh+!7!AZPJ,]r/9NclrQNj;Qo?20k&+Y/&[:EMPc0mW@s:5&.Z-sSL_^2^Vp(ugY.qq>VcOjO %gP>"d#ZG=Mk_!:a8o41KY3]3d./GO5UR0J'(\ZggS?m\]tK3`fjZIVRY$oF])gbn5\(07P6:dJOl7Io+nnGJknZk*t'+P?X<5 %;>gO@BDc:Sf._r_*j=#[H@6qN"HlgbqrNXSl1;Qs!?L1kAZ^d&4be8%ot8t(KSfp4HlTKR2q5n.IO2<4.VJB'g&[2P+)'-,b@9BRB6-J$a:O2-HI9ASPtBll#0aj&8\o%bi,J3X<(eTe4!NYrPllZ_fH:lL)oZ033f1R@ekWE?RY!kWU;)4@^iib_ailS2I:lGu&W,.WMcHOrnm>>)I$9t=@B&9.C4og;^'R@*^4?oiq#g_uk %GiZOIP:aYXdLA:F#0c6jF\_aH#!b!1Z.Lc)I*QM.Wrai:Eg!7]BaPu*Fr#o\'?>XhDc_k7PhYHl]6X.^`,fX-81_F1AB,(LN::9V %LsRCDjT1B/.2WR9_rU]X#B_B"("jPYXoq9NAZnh3E@SP7\@%/[D1?[+O:qX`LDbX`Z:t%_u.U2\9O'h<>#"qJGDhsGY %Z`'UJ]P]>F)?G+j79*'59(>imRqMs$YUBW$I=32Z4Q>jNRRBOS8+\hV7`8njLS@<3[,GS#&qB7q!Q_S1(3VQA$0^3sZgZs=8J@8\ %\l[)6ee'FdAeJlQ3.HDaM=H$+A8]-E@\oP45NP+>W^86JB,.:)kP#Yo78Y7P"9-@g.b$oW!Ej*Ba!b*ta`1sE[&2")E[p'W %KeQ8"BRm!)$cOlu5$A71bC^W`kB+PV0M<[S@tH)&NhiE3FHSEiT]GnE]dAo,,)?B=3C:)j8T;t",>#l8lZ8Rj/Y98WkPK0BB5fu6 %__p^j>puXRS>kCBoh)RN4eB16Y_2;NcfYhp9__m8!`3`in+I)YGe40pI?0uO!n2(#f(KD;E,#RZ8-(X^%.2s$d].RE+^"Z3T/N^^sUA/XTS%G`&"IHr4UAb+jHb5h?OsE-U$2P\=7_gW0)WC_a %\s#b!&6T,>%_&qO5nFgVQ*?^Z"h!,+6>s%i5N^pmQ!O=t$!dh(6$<#?)&_CNmVZocm%!2goS)PZ/,>V.nU-)4d7iFUc0ZC.\XOEB %\uQD\lA=\;q`Z[bCr)ij7kXi>5`c2^AFTNadnA#"*>O]gcr,9;^<:V15!i-GH>sr[Ooq9\Ye,nd$Fs9:[+/&!(3F%^r^bnKOM0:*_E.G7qWUD%[-6j?2Z%ha3;==s3 %m]i*G_;Zko6b&%h]I?W5`)$N*%joE02LBsRJqV[qin^=s!TEu\9sR&_p=ks,8!RWuGp*9>GkAo_q"*h?)3\(3J_J%m:R&q<%YaRA %IdChe\jCZBQ&ipZ:uNn+\[Jf&KE.1n-`DO9+^gD6 %Y@.\q<UG"-^]lJ!3,W8j]E&^s\kDg\4BE\0S$uXe8q_sLPS#*Mq5AcRc7^>5O*_#Y+[VTu<3\D[ZCS7j %Gr!Ubni!4O%-:t^6m9-n1/.H`1,t#]6;f6l!mq$OUm)TV/lc:i#67p&PB_h2l@S4?^KR9ri]8>>`)[,d&m4ODa@$(U_6T"apl(_T6n:;.@84keB$I\9>N(!kO'If=qdnoT'+u6.6G[/Lh4k3IVB&Z=T %6=8W!#N=t!0VYSd2mirui-HY>>;f2SAL347(+Npt*H'm4ChmWSdZ><#9NGlX61d5ggVA\CD>0SE.RlKc02dVIVdREY9L2fqea-+A %\>i6RV9+O_,pgI;Q2hY]V/+,U?M!mJKmS8sqgESWjZ(XtqN4FIWkoCW5\;g.asL#$OUQmOKo:+EB`jqAMkRUSe$g9$M^a1D01`l2 %j!(!8m!:+r2`c3o#2Bb4b]us`E]VgQb,tTP\o146Q;%-M>PE;[#JK2sW_`e'h"S;-rd74hZJRBY@J"",- %c$Rf:fFIt8B*'6TYO)6k#*CO.AK?CLD:&tblb"GDV;M[./&Q!=q\9rIk]:9#3_dfAORe6M]E0($Ququ3uFn'fa\h+glLZjm#_ %6Nke\Bmr/m^.QZ\Dm1C>L4A` %:ZCNP$:VNrrnO\\N]BhI%#C:rmX=JO[@^7]kV.pQ<,a,e&Y.*(+@'7oM!ZeRooho<)2P\T`GL'ZR6*09AbBIEiS9KOg/K4 %od0I;cd,=T#oe6*#ajgj?S_CLptnc*U9H>`7R^$.&O;KNTHsD$gfsC2r^'ZUG1`Hs=hYsN7ad@E@hpoC?a&`\s4oPar[,6F+eesf %#Y*cK(PstPKH[PfcS"`RQ[REt7(nQ&8<4q'bJ3g-+7I"eoKG!uW0r7(JI>roP5H#MiN %DgYnUSb4$Pq5YNte&;G8>.l=Rc^H,\*/:8OrpLJt(g;Y0b"Vhg]qSoJ`rmsukaNTZAKWtZa?M3`+Mch$/j=beqTU)%TmCao7:p-fMMH7'_`QE4."lF:#Eun57Q_[>\i(RlNI>tj/!.1[ip;5->1B==YjbJ9XTn(>tg(QZnl_fiA %#Ue9aMRauX31Hda6hOb<87%JD7ZMT*=1bQ^:YKA+ofF%>KYq&A(E>.g$q[N*[A/F:$6$1c,$ %ak;:kl4tLH8cPtgiaj(^Y'L`sZs)AMRsp1thZ0kTOnH.BGK3>fgX>-NmNgSa=[4G4OqM@]#3t`Vb;:bG=*a-d_4#4#L6r^4l,aKU %faMAt^#7:Rc;/&kgT>,S"%0D)P-WH'D^MbD@tZ\9XY6chHKI@bMG)oaF7.tt>+_]0!oibH0b^TtJ&crUcRplq0ro(%JDb/4T0MWf %ip=6Y8._a,W*cVbeL^a`Z34hT::]QQKu[usj&kA/1\+cYTC!g*S'TbTYt$r_Vk"6bM8`L/qq]_4(FR3cICOFb,*(Z#lZZQL^/(A:dH@5e.(8[;I:BZM+!@)*dr<3KGe20Q#(g?!CaT?Tk4L[G %'[1\ne*YngWgT:&e)-"jf?[e7cfptbiF(Ule+N'_*HO$L[AV2O85q@lE]SYFQ^'-s]iTl+,G2-VU/&X:0JV9%`>"/mURg!-%IDbg %Bs^=`q`URq0(QOUEEB*9(?S#HT7&nfSaiI&b-$KU,A+.YS@7%u&khe<1(F#lGZk)N&\s5_9RsMho//F`phWbKpQB4]:.%bA>5)>; %T79#4X*osc[!7b;pE"NBC@$rD]C$6NlPB0hVp,2oim/s_b9c/o*4`"MVnRT2+[5"]',S4EGm'(e4sNN5lU],bA3>E=Qnd_A8cMMP %(nOO`%WQfS`AS49nblg+\i^)`n+_\Yf&oEmq3q*]N$AB/GapBhq %-6]M/q"\JM3$P\AgA!\3N&BO#+Ru"Orh"Z9@2(QLSk`PK\"gp*LA#&Dmfb8-.pPG%8M]HFNpOXd>tCpqlmIjVo!Ht7l/nIF?AIb[ %Z1ng*5FKDd.^$:kO-8jtR6=;KJ8:^Y:>j)Z%jQF'>f?D/SkdU,2QnT(\ekRh[=9Vf$s[J%%O&_WbWKX<Oh %%rk0=9XX+j!hN'cmS9U'o1J5snQ=DG8LWmMf+Qi+t-FdCR:*a0@\;PH14c7PS8]\-?c+<.AR:S8nnT#b=o;u2='&m"e_1o7epkLisO'`A=/TfY)S!cGrTB3"o&JJEd(<:ckg8YO:1!-MoXI[/]o5u1aYZ6=;. %g_5dG9++sTMj5S9`_%AV?RTAqNPpo>!41KaI>g#hZO1I]A\'NIFbF4VL+%;j %8eN]i0OC,WG_`$i+s&V!JI)$GjLA$5!bj@J_CeiCJ\@6?P^1P:h`%V=>;Wt%.kbXD;gL*"E'ojBAEA&l6YK4!P%p`YiWk=^"(4r- %h1fu8L??23;t^ln]E#=5;A'uRFuG-'G(.OP&iUM()/m8?4Bn!N=IjQj"HpAK9i*Yu$q%Jq]7&4+t;I+r8.o\1$F[Wa+XdkFNgo*l!l>=GT:`$N6pkn`c$C %]FiT/H"$&-.al1eB.YhC>2aorraK!h55/9qC7kp/Zd0MC^h8`_@k"=i8l]+#A$j*qWfekT>=mp'`t]HgrN^MsTk%K_S@L!U)f6:A %T&+aM+D&G:I[FNT/iZ[Ibt><8G`o5im/?K:G3GnGJk55BDhZ/,&%I5@&Q=@g8O\F:;P9[eElhH.grV9AlkL:RJG7F\U`W./'9nmY %?0O=$d=U]^MPIse!Zs_`"24jm'OVq4h:#):a7Yc$^:C@%P4n[n:q8[,a,10f?=,U,ia;W6WuLo1;ea#VWX]=J\?fJ#qUfW?B %Y%f'BMOGnJWa*\ER<"ds5J2PF[+H?BP3PS8LljAB"XakN`YZ2M6o;q-K[n53*(5#UbUka7T+E0UW&m?/O,uU7Atm(Z;>#WC.h8._ %075`D@W:@`5o1!)\p[a!LBZ;J(&EI1HkZ_Vdk\E;]+W[t&4j^P")B&X'.c&*:+^8h)]SX2Ao,gZZ7-Bn#e4D/%G=Ph*DUoAQAh_Q+EW``NMBm?[Qn[3iCk5.#mng&g31jd:,q*,1Uct7!qORsd.*XtefD'^)CJmA %7g^D,HibEY.sbhhs&SX,)f,MaFW*g70Y:<8'"^p:-nd^p4gXbSKP1P<3F/tQ6-iCZHE#'e:[1%pp_8ZW4er7$JR._NM3%oKI/>:^ %DnR\p(=*?8U`RNDJ.gLtU9EJ<,0^\t&-PU-PP1BC&hK\;Z>O\!X@\4=0'1JW:q=*:L_B[^4nk(SMPM-JbN_-5Zt4f?M75qgH!%G( %Vmp;Qb:;iUt@C:m)`7P;jMR<$7qhSM;8m0R(9%^1*.Kt:`J0O %NFen.OjE_DS&q2BbcE2b4=3hmf60YWP8O]uBmhug1T3nDoJ//8&AEnj9c?Idp4=lP%UB8.*&tX2J)kp45H,U/M-]BVd%CF*S]n(K %+u_MCe$>/sqg]u.=l;@J&\d=:,J?h"Qs7\5=*!=P8\KYH#Q]^Wf6BD%O1.dPCu[r?IAc!e-P"FCrq/.@]]bEB6iGd>oM9u2lehX= %c[Y`)s7pU4nSeI!?iK\'Mi+=A=;&hjo[A:oPuOt3fp+Pcr7(G0F],tfZc1#ds7&u@oj;oi\ISX7`t$sq%#u-4)Q4tXq-RVLI_=]N %J,8uUaJG#.9,.s8gX-3CT1H1pU9=7cE&((!=lj1_m %4mX*u0S[0EM*g[cd6sGr]&=BW1q[Vq=$M1a\,-1Yb+6R4Y_MOPCSD@76\lEC6aPO%c^"cdr+9/\p[amO*=kCua@e[h#IuYo5gJjV %Q<])]8)(QIH]YgMeosjYc-L=r[\(A,%)5>!Jk69VD0EOnhd]0$c$\91DaSc_>Po\58hQQB0-8h\Rk/S<*)_X82bihecYr7FOe+.e %o:3Db\"deHpO/KfA)9&]2a>'fg[?$sl.6[gj_(PE_UWH)79aK^3!RrL]P37AIXZ@IO%c]c%;Ai]RBSa++Q.u4__Q\I/\_,Xc2Bi3 %_ITu'2Y'r\\n*]k2 %So2,0dqukU/S3ctJJA8MnZK"M&+k7QO4Y@u&.g-9c2[0K6#Zo.(.M!cXZ(+rk3)4$ot(ls]%#dZI1/d=)hb/K1"?0D#U1"Q%>:?+q?>!(F>7,AN %%B6Zca++*X'Cd:,&uthKf\N'TO"oXo_-dJ4d$A-3UPlL*8V!ZH(]/C)"kKJo!16YsP<@S$cj*80RHU3^4^Frkio3ACPkmB:1@n^* %Yq$L3$i!IdR_GPi7RuF?PZotqn2H9NY,3M:oHYa)jeVnu[*&#VO_/V\4.VF*(tAU<8STduf-^FZ65$4Me^>5nds6!&JtNf&ba=o: %9J/-+83u4V;#e1uC&^IOoWYRoZLEFKIuer'eIWP`onm\QC+PTuiSn0fRLXSeFG2G=_r^u80\E.VFh%G/_o?S@i:L33rO %+GDh;.CgLs0Y06M5So!5+Ed]&29ct"#'?UHZb"-"+H&rH7`7&(VM*c0_?GlP5sti(%j]EE2\4=Vg`:Eh\X?C$RuRp.Y]M:3p.&J7CjDeM-s.YX&cK-KT6_ %CMca`=_(Y_>9!cB!GOn>N>YJIH@SDJ1gFEZSk]9;-$U]_),^_V_JZK6cCLb!\1r%J3NM)u=1PU/,2(l'0tjls]SlEc2:=8d,6X+T %>X\$D#B$j">Tn)PhW!Zop-n.JPpU34c#&507(YNE %!S`LrK]<&!lXI^3Qp+I:n?JVeRME1Y;p/Zc!DQ"MeCbetO1DTT)K@PMfZ@]MiQSZs+@ul8C=c@ESHi#0BJ8a:W_,fZJ*+'6#-XQ[Ns4=d.+M6s*MJDca/%$9Rp_e"b4XA&OcWa:j3R9I%?b*Qc#j-!8,3dqEY %]D<_^,`c&u>`TQ`3D6ZK.;cr-hS?Q/UtD=I_-2ba>7tl`;WP'BKF".4(C1g`SVoHdR?0d@9-mR`CK]T2jWQNM#7.nZJ@Kl/72Z+N %8(NkGe.'`ed4U)q&GZiW[h)0jmfQFYLL;=70CT@L&pB)p'HTZUUc-l0+s>p(<&.HE97AdJbe%!N@kq>*jLstkA]U6EZ198I?ICm$ %rjWtAm*9`9Oh4f^4^1n%k\[K`P2@,&.s^^`NMW-pbtC&\Y2tM`hoJTo3?R7lA;4Z3WkF19UmdK:X]#aslS8XAq%M`7?Y'%^MkA#e%A1j,\F,#WA"`YK/`p!UCa(adK/PV0WH7r %6^>Qh\n0r*2BuQ@phc+2=';8Vn%(oe:XS_)TaBu-'&a:U%q0qi;@7hJAR$CVnt>bF:G0fq5)\_kPUgK5VZr`(49AuL\+St>3g%ni\IKsqUa9B1sg %%BF4d>CrLsOCX&+%W)n1NaB2[@V2>uO1H?+G(jDJ[A`!'1aWiI35;5gG(IFCCW,/El"0fC\!]%3@#H<,*[im<#Np*IhOl(tRT]+? %+:tHlj$:7GK"+pi!"8t-$Vk^Ba[0SE)s/N[a5\li5Y=>;[mP7UMWQi,Xt*1mP(,7JIdQE^`,^tFMB[UJ.n%cc1X'K*p"8]#/D(^X %MT=f5PY4-p:d&H5.eC#i(!CSuC(M$

>e:63DA;RP%m'N%$[hijJ71L23#Yg`A-@'(68fs+IV$XkPfk79,j`(A>R#uj %:N$gQcWte,\h<;g<8rn+r/O1f29C[+l=).mL.$7f]j&;o%IW>,0`t*G!N92dJfm%YDYF=IY67[+!%0[+&mg-t%tq>m.PCh0m#=2p %b\OF:.^s\^2&mf8Fi>A4_a9&-YRi\Var<]>Jb%HRZ'5*\M@a1$\sDH$X!^`Z60DP5:6[_OY\XK@.CcXLRNEneO!6C.k9 %/=b0S0?1ZgfE\6X*nlS'4l@P!+(7L!p(HQp19s/=_q,c42;gi"E"(Ne,=r@2lI&D)C)@&PONX'P3'[Ng5ZOeW1/jbe@GAbYY.=$= %of2eYWIeI3"]/>t#*tD&E-Q'_Z+#h/ul%*%R;m,,N9' %'adlh'[+s!')bmX8HlpJ12lnq#6m3(X@!"Kh:''h[+R=a$iE@okf$Y/P4&cd21\7_:BhadZK9c8gN8XVXc6t*b]ppn=4Vt#KAd1< %SLUT?SeHlT*TUFE31cgN%7LX02+'_a,[/+:r^KU^aHPAcpYm)TWOldp`gnUWFh_gbqNd %HTde@[>flD@G$-J/#A'5q_T&'@FrDE_GX4eQNcfATh'(k1m>u:i6r3r"SK*'YJNb2V"/%=d"Y,/D#9kq^Xd6C;s]ZCf$T-]&*#p0 %"fKAE%:j`hknBAF[ms!$aAp'F0FOP2;a2$T=?BB6QpRp7=S)-YYT=>M$_GqN6cMYh1m+*AUrV_T:meh7Y_Gu!Yt-cF.AK??:rQ+7 %asN[]mGBcVsa[\1nu?a*pM#OC.C<0ds,O,a" %+-'R@rXdc`q7EGS024)(bR+9>Wg&mD$4lu\7-B,a>:oW8)[KS'%Qs<&PE_Lj(aMH\IL3V\WBaY]&m6O5`"R5"*o7-N"mkUO#R)>k %frZW>)aIXJ=Trqd[_D@h]?$,DqV8V]bOb/V0"=5i/N2@(Q)C2W5SfKQkZMH<80#9(f%A3EI_G.j7EPED]0hKOf4T;.C/qInRu!T[ %ZR`k117iiUP72%pbi0qJGSe1Q,YQM7Ygm;l$@^i#'5dn]mKh\r]7aI@=c2sI(2`/hr&-;."&V]LrGku\:K2NcF`>o?N`7JY.J1BT %S@=4.jYBI)Z4FX1@-N"!RUr@TbC[tQrWR_Km-4TcabNPOV^kM?'Z`t*C92!^ohhMTd<:BNZ[7N(#"5dYFIY?I9ArtgM(%gkShj"2 %k0'8,")7*XQa@;Y!kb#'97DA6);Ug,)l]!N/1rf-$"YZ[E^gJPFU=VcCk"7Hl!>B7_2G+Y3'MkR8G6Ur %(KQIE+GuR+UV:;%Sd.,L-p%EubGD^bW&Pud%t76C"`[Winb1ne4WIZHO-*.(d1(7n!dUj3hHEr,Ns.ODd_)O=Vs%CG;630VCSi9Z %"jb?(-mr'LTI,%b4Sie8Bn0H[=-Dtk59_HIU@^'0kXRE-!UVrZ_&l7KPDV1b_1O4p:[\qp]0pqPP7Rj+,7Dl*o-.$4cO,AQX:`^; %\Mugiha&/Y.`4qUT[:6W\^M4SIf:r]ETqED''61]!e[j4dP\(/PY;=I?=B+HA4I/i/7Nd8bn>E&3)#dN*1/o`\2)=$Z#94W*.s>3 %*gWcpk>;m3C`$0W&a4;r,`Eb9j'8D5%A_d@MD9t=\_LPf2&Shc":!#=*1]a84LNTJ*%_iF8Npo8=Kr&1bajfB#KIU\^2p2IQ]i.s %3/0qgj[DCV!3fLKC8$^]E(06g"-XRn,RQl/PGTF#3<9M>DXd4c@]AZ+S:j:Br=F\F+Tj5_VNCS3F9@,@a>kKB$Q"W*J]fupjNEeN %:6jaY%AKSKDfoH'uHEW'__9UO>M?d/1mQgjj_pn7Aj[YR'rQOojldA %C,kXVA%<=.#3&:tSi]JTWcYP20f+3.*Ys";\q5%75@n@q+$)S>CupA?':IV-:p*%/,_#qi.#Fn$IamfF*%!3QVYh$EFB/]Mi@1EQ"V&41,fEp0TkkdZ=$$T[4D$erg'lo"@6ip!r-bOLFG1r]G?nm@(qVQc718_Dhr3 %inTB<$u?Wl,Obk(:XIk/B5b>A0AOIZH+a<:d<&\0BU!rpb[(Eckr?N-_Laf6%s!>hA@S):UaU,[54gSC:N6A\02k+Ug^c\f-LtcN %kP^4SL%[7VD;UAdno.)?Zc%If757>264mT*7qg\PbK^#;6MAo&n2AR'UJ#8;T%W.hR0GXC+F!Wn_fB'c1p`0o_0A?gF$u92:'J(V %*\5FiDZ_%i[tC$*;ELX%3+.i[!X&e\@/*fDXr'Hi1aN!B:FZKKEg(jg=da4?KQMsVgq %c7e:m^Yf[F0^\01_rE#97JEr-28R"N"btL2/B5*u#Y&FEojqKm[Ci/nEFHl%J_T;jY"sk6^lW)"`Z/B":[U[c98KRQR*@6`2 %mMc4RKO`iP+n[V]r;M/(8R5>rT"Euh5/%P#Ug]?OV'RlW,4q#tZ<:(a;c %i:3KbX%_rlTg'!??.7priUt96+p(/^*e@gXLSEcBZc.6[#YRRuM:(FbQ)3UiKi'mkGdEg+UZipcg2E:='2Slp,*q.TPTdQ\lpF%\ %#gqm/CeI0^7o>Hr"fRA<=l_4J7WVSa!.qTCA?3+qYa3e,Bk %1SrOCg`SC"dV%5]Z_op3i63$Aa[.3bBZ=E"iBE?8\1`-bFpAt$L3.aA!SK9[/9+$/H)&WI-s>kjRmkn7;&'Ho7acbGc'Yi`.0+!V %)>c[hd4/b_LbnZM5mRKOdo[[Jqjp]cM6>/\$4%rNM=uUS-*t?r5!eYu>5u&lk(a1SC"7ug)1c"V?o1/Y`TF*F7&"+!IG;eG6.ri-$IpM7;:I!Zc5<`<+E'Il+EFo]f?XCl=+0Hp= %X!i*d;25]b^T%;DW*e0=]n(W4$O>#)Jb-d@M?fo5]PEZ]aY5qW7eN\KTr-Q^01"0W+ug/eaf\7id1XY?H9SOKP)hrTs8>1^j$3M@ %hu;_5nK2/0(rF>Rm#-Js\5GT6h9,TY^T+I1l&MotZoZJZo7$KYZWZdUDjl\>SlN6NYb7it<-/*7s7pU5+420LrkQlX,lb[d1@hu: %S,Q8#aaJirk&%G>os:c/K2#>XPK2"B5bD/4`\o/?>\=Z#OgrnXES]:!Z$U %SoJ%A8g7(\52(b+>OV;OJ0&f,[GJZ&mAj6nCUnU?g@fZ>R^m;8#&)h;^NR@rBthm=JjUEJ\*Es"1r\K8mcQ2!Hh[,T?WW8rV1&pf %=nbL3TA4;OGJma0+'8+KYZAfsC4+J"h7:RLpBcEZ*j\!F4mmO&Fas.q+&HS,?.[kTfMkYmpA&I@J,3je;G">R%i/:_C$OUVnOGb- %!,T<=B9Z%cnn>r"O109kde*Dpo5SkJ4OQ@9=4\J1Jn$Ur50Z]W*Wj#a5JCA"Ce*+:PfV`ALF%[s*lI"3U*"QJ6VN8_R!uNdNPkDc %eR-P5D"DM!l)UrDf+E5&[X=Hko)7]ZqJe`+#NFB5mce?4O6=T>l.>C$6hb`bB_-6J)W8O*3NhOd7)+BQj"UGm5!I$\40ra5gV>sh %efM/qjt464Yem3(.&>QFlPTFm0Z98+qTkmg(4GDDROm`c\b5bJ@QF %2L9,]:Y1Gm]KY/4HQaTZqn(P5XeRKDRBmMHIV(RAc-.m3aCmoq0dHq&heX@Kg3gC&e>D(aAE2]%qY@2kDD0&b65QI0>B4'U@)q1X %%i-*KSZq9Q9oGOg2c/2F=)AFk>I00^VbUGSLU2&cc/EOJqYJ\% %ZEH=plgcjp_h=5G\K&p8mlQSCWOqPFO(Er'hkR^9n,)oDqY@c&/j`+LDbL]%3UOnAqE4W8fQh@LOR/eFbp)cAe"+4e);/j5AUDn=gAgL7l8\k)fPA %/X$l=Xlp)/]0dM[P-+;N9:]@ou"32@Djp3dHa^b[`LIg*\O/LaBoT6'r+d"[Mpg?1TjKlVlP#We^D@a&[.*jtbU[LioC0QFY78BnA() %WT@cQ8Fg1hGWA[V:k`WZ%Q35D1OC!/-2nlg(_[B)ClGl'%P[2`'X:&cU0h@0E#]`tDFMs@[C>imJ_6f<9TPl#fkhua:F];_o73qNk@H?;0l:0i[n/^%-3cn"fE"qm6.5CiLQJeYW)#/OZE(C@3`Xs&m+Rj+dN-Xh*fIZEq*3_Yj_?;0co?oK^X&Y^oEaU\7%G#8..C-1@!'u'i)-\)8A;bNZcL-R4K?1<94m.bm0b7$Z@F35Nt %T]-kXdSLE9F9k:o$D#h'1ZhT_;3N\GfE"=@E2I#oLlOgm#%dm)K@f(pc/AIt4K\joENK'moS>r1/P@CC,^TEPX@-AUVdgi&^H(#& %G88U/:u&d(JRpSOX!Yt4=T!!*1M1H(I3qH<=0:/O[1s>Zo-)B&R%Lb?#]?3@qN6?('d\#?2F&AmU+?@qL5RqW(c(&eOSLW[;ip+tX$>+RN6BaUNdr=/2 %hrI>;8YOl+Xe9q?R$,MRQKE/CQ&Mm/h?1[uQpfmm%`\HZ]bG`Z2*.)Y_:_LCgq;m*Xlc^9@GjZ8ZRpfKb\1K36:3%6A_c,7VUN9]Z_J#V&FhE6]M7I" %>Y&9-kItl`@'ZdMKHr)YYtl"#@@[^>I8_['Zq,5S),&YsM]lCnlT';t1'!,B(MJAN.KFP* %MpE'jBbp$+@FZ8Ld0;NOZ^a:RCFZ\dX5W2QX'kp[E@XoWo)QkS2N78S`"]!9?*D_E5N6tiFU>trJ9#GNITH&m!)O6P=KNdgk$STA %il$ZgRbQ0K]?T?g]:RBeB^9Af+Qig[ng+0f[e;/q,NrlMp9c&uE0#8LAMVuNPT?(KI)(+2C5eAs"90lnqM72LBap:/a:DY#9Mc7R %nj&*@.$kW0'GYlqXoh9#^bVsqa/g^e=lon.f-;?eC(tYrAlD(d1ue&Y,L1>@BER?JKt`iR2^X*-7:>k58)Tj`eoUN-H70\@NNrd3U1TiIM%G5,8MV8V[aIp;/En/-&)9$4`>H4EqdiO7!Qb0@o9LMb)QF[)(2mRf]7/boSWpp(E5 %BM3Og5O1E/r)M@-[@XO0Q$tNc/Gr3)M!-ME<`BCZAT>pV/nM[1#Q)k;cs8S7#Y=Wm%u,OG[S2n1qnu)VE#b]d\!QW\quROQXjO-WZ-K&n5&PT[B-Y985bM %,o2S7?fGe@J*9@^4aV,=n4)q])o9GuIe8O/`Bt+Jkg\<,5/Su@O^0O&^Y3lZX`7Dg2:LfD$j`s)aQ>qRB=iQG@_0,FL.A\.Kq7'K %h/QINfGHT#EHE._fq[a[8#_=sK7;gSlXO/W,_tjt?61bY/H]r>6AMI0IcIboJJH;S7T$ffHVturCV_-6GALbsi0\kCNeT)0CKY[J %'L+,%4)TP4\asDSD2^Yt?-(YrG8CDlPo8B9R7RFl_UXt7=BL-s_0fsA-?O/:l>*+K88d&.8e4hQY#]oc<;%-JAX$Vj&(gT_e2TCXsm60Xt6LEX;am%pPF'd5`B#fO>E)`7Yc %JE'p)^di;:Y)LgW*..TWPK-6UH9A/;&+%1XbeJ!;Nrc';sO\61=tH0ru:X*h+X*U)=YCC-<$hZ$ZC&?B;2i %]n!m/eha'NM-,_Fce=:'"E:^[!28l4ElZsLNegMuQT.*nqNUHa-@`ooTFhmG(>oqMgP@XfVWJA=3`o(D/N^NlpN5."dXckHlb!%e %K^,_%]a6&(qP@FDnoHF> %0l$H,9A460ge-=2^@NP==o-tQ/B(p?$a]E<:=%5Zd&2;mG):O"GD=er2eLh$R-f)X%]lsS %b]\DI[\kS3B%t$UgES>!Qu.=_[d/q+XuBtI^,+O?2#Y:-kBCO-%o]pi5#(2W[rj54\(T'qbdJMO2YIua2eG.d1YZCX*+ms?1Y^@u %DmO;!b]\DI[YJ.:A@W_`[jm0B%_PN%p@'+Zd.&[+d!'tk"UUn\nr8.c[:2N7BH5c^)Kfuf2)d)n(3GhH/-RkE^9QYF^4)h9hiZNaaJIdbLjbd=4c9SqgRS8cM8M$2ikClO53l.hiI)K %HYIXYcFJLVg1nrTZ?qP%qCh^;\6n_%])?NJ=afO5+Of.r[gcno,d?139nNL85Yona1nID3K.HGIhX#QGDgF1XqQ>0e5d&H!`mL+E %VG@urlS&F%[utQ==(/Sq?9Qa*qk5j_O?j07hO&'[a:E# %8$mKtD`h1nZIS[EC<>Y?Wk2X+[_?DGh$;EtHWjq5fA6CLpZXg^p\jO1CYD+94pBl[rHGDNXS)ig/1Mm^%W%m&Fi19Bg%Js?gQ^$_ %feHQKf3s\5$k/)Ql"9>Z^@KW+B:JeG4',I9[-R`*1'kf>!`>bj8W<.dJ!6-%pLpqQe.Oe%c@6BM<&5o'-CJm!lVL71O %JOu_Lo%Mc3!Un8dKuajX`lsTLljeP%r%5MrUPYfIUWOiMg<&q$179_Nlk#(=X9?rA,mIW^)DOL2ECd+,G1Mg3Ya&0=bZYW<;3Zi_ %)9i]TY,?Bo0P_.K?qk#+;HD!PdU&IojQVhjfuPnoi/i&%i2]7uim1^bTlt"o_P".02#*cD$^iDI;L_.mNa0ttqnt?Z;@:VNi%T[A %D^#JZGZW40G3.`)&->\4Ga`_TbQCB4kU=BuO&;hK*JLb`$`?1*[ZD6n#mbC35'%6\F520fPK88RRECO>o!lPPF)2loL;l>[3_oZG0mcM4ij@c9c&I%[JLMDt1a*Xt!io]Y1Me9Ws+VO4QOqHH6p=IQf*jNi,0G<\ %=.Q$!Km(p,P%n2IRs[Vu=uuP8`pUJQ2'dJ"5fA.$Z,b[%9AS'!m^;"qYc!WZQ]`R7D\g7B#WZFlS;X4Ed=$h,PJlD5+:nmo72pCY %ap]hD+4F#]/PResBM6F]@Q@*JWmdkTAeq6`*=R..KY/YZrED't(:&Gl',Y"Kp8LLlPtmZ9rB^\j*^LOM*>q)`>43aO=cma?r?B(= %2S:N&NHA']@16FE%h.u'".CU$^NXC;Y?GJ:To"r%7nPN0&/OiSp#uO[`T3;"cn1inFoaE1i>:ZO`?%n#kCV#ISbY+6+%Iq0rQmU, %5aducT+2_Wkg&2HOs\mr=ZG4WF.RHB=Kn4#/ej/bZMfqFLsMa*#reSli?t9-CB2onb#,5df?4POp,!9O!K;R*_[*NHRb7c&6r@@# %\%8/DIbkIIcEc+n%.ATj5Ga\t;*qFHd*o;K3IF1V&CuQnAB%3Ll;o`U5HCKIgpOMJ%ke(HlA`cW$W(dC`D(A!6&d?i)P+#IqQ0MB %J4F&"04hq]E$!FNVH`[JR(qYi-HrmWR^a2Z*_2Q!OGa_G-"6qsSOLf6WP-uNS(]X$)>0_HA83cjFEK2j)6FcD:L6HSpuWdQ>LiYl %C5aa>BV4A-4>P>q?ts-R_*\,pj`&D9`,Mb6bShRs%R(l\-B=6 %KIcl]"KeIDEbWBdHLS?71l.;#Qbk&pA\5UO-J@MnAt3@NOeBP[hb-i$H.KKJS2nW9\PE?*K[G"4jY&RO49+3W*]#B"q>8)=Ls5c=0t5\C[TBu]E=P7QIoBFN=6A;(9b#2MA.KUI+Q1u(?-*b %br^s#NGlf.$FQFkOLZKQ`WV5[FENB[E@e%"jQk+=4':0A#TCRa:J^fJK@\_W5)b:(i^kI!@i6'me:=G.bcHac"1PASF#!'dT7q%\ %p>eCe*hH%.da5a.p7,BJ,CY+aadl(jml7rk&u"kiR\U%P,ccNB[DH_#_MA\OlpkE)M-QHX\1UN]K>#6!V2-gF %0g$EG]s>/h=b-Zr7&<^gJ2:UX4[/0_3p#&p.aq<]aDOCV>nE!gl@K=%d,Cs?Gr$I"%!`"41f5cip'DLEW^A^a][n1d+_lnUbscjj %Vo;;!hL5Ajmu+$\qW1s@d9WqVi>DjkA+r7?JpYJmhc1+Ui$1I0I=+/7H_6/Gl687\2SJ^U-l#AI\Q4\/1u162Z`8:(= %qk'I,T?&LDeapG2Y[?RF6C9oEpGk9AB9d(Rr(u`"k(\`e)kBbh&tKP"):W,)-*:,c+I)9[`j^le&/ur^Jn'!^.6dhg7C=0#-k!YU %rWi\j'Ob:r4pA)t&OR/;^0-2gbl([&47=!koqJrLWq`X,T=lmsJh%aG]I*8ZkBACdgq=/i?bsU6r%Bb>30Qg7&!eHddtQTl56Jt= %9>;QYcqVXk_b(E_JY^a@d,I4)afNtd=HE./CHl&rL1/S)JB;`tFdEAQ`W7^4q[E]?^8a\[:IMD(A9WMm)Y7-bF6\5LOFNo!,alQ6drr' %,ZR$j361@t=-]sUaDQX.T:!)2s5b&(F",MYN=_Ie/8Rc-g#`>c*!?)jf$8sjrJR3a5!i/5Lnoa\\6)37G5#Vuj6.H"4/].#\ojIh %s/GG^OYF@KcOn]YKN2%.*uAUL3r+TJ+.i0E__mt;&)&/o`?d)d3+aWjh5_rk+'sFs %D5l]B\JELoN4h0V->.s3$/lXO4AGC1h)W"6fi/.ub2?G$;AKO&6fP742_R"O!,+_"/LZnS)&_Z#GUG[^VQ:!_#k8>=m8+#9SE;!m %:/dKAI*&92O%k5<%$i=nk785:^`hNgcdX$.4H#a4N#sM7&VHNo;c5'O-*CMZF=@kX_e3D0(q/#:9<=:_BJ+B6[uk)4kL?HTU_dAU %18k-$lVN$._+r/D@jO/"qJEE@\QC'U5r\t(fOF?f(C`O._"\j$Dh.jS7)Q$&Cf:Cqeo]0DS1%'&ehFdMA/l%"esT8EmC\ %2+]A2;L;=S_/aHU'G!QUYD>1*Bn5Wfr1UV")rhk,,URocR1OgY,dFKh=7)2C-UOK]YS*Vi![6'DP2P[n%a1l`[nFmhA*lGoE*jud %>9j*X.`mk%ONk%-F=%4CA).]pU*>DRan-89)>EW.@s-$k;PF!la!lC:;'T0dWSu=7TW.u*[\-Cc'RcRCZLJnp(]lD<^4`('7P/>6 %K#f+(tgE(#V5HmbZbF_&e8hmiY%ol@no\[D-:5USbno#'2mk2i+Ga[rhq60lU_rBC/!l1omU%c9.f$BJg+;'qERT40Ii9n$s %miOuc(^^g4#J.Eu4W__'I`IBL%%;ceQ3RP($I5+XBSuGV1=+Kl4>dlm#b_qp2'U#2A3_mE"N4P;Q'76=OlC=ooZ;cSPr/!oZXOe! %KT$Zd[&FcFV_7`UkQK[Koe"D+jTCfpl,^gGhKf'2b8i_$^94/7?e8A,8]Dd@S76H6L[QajNB6sk]_**,N$kM%F %,f\?2ii:tE&U"qNY.!.ZZn4DiB\VXKimH:?_u(RqN4G%Q\ns)))VZ`T$5Nm-f!B,jO!.t.Go.>!`6j=c=Jt/"$mR;cV`fn$(#uWU %O]e-k'=NZnqVoU@IRWR7[]BbuX'f&D6NjPG#2(\jDMU$P>Z;SP#QUV:<4:V!-mZPMPOilRR@O(jb(`RDXac$0as*"nf?sH.SMpo\ %eBIY[B7!>VURR:4$@ieWjFLlr3Z\VR*8$#UI=m6%op1Ht%.HAK&PG/S(,"4*kA-l3hc66XR\-;5/V0J@4Y]L`&%=*(Lf**UXW^9l %VE9I&P;9a)E0U&/]/%[RPd=-E*($k50J)!'BOe;4_jS_O`SEMu:"^t:0b-64,(jt>?Bh>TJqrFP`Fac9$gS%!\r!?F)jV@OaK:\b:0($tpc"-T-@j,JYqles@5+W!G'ZksXYB<5Rb:kS %"LT[k%W"Fd#EMC>=:]*Yf=S&UL8AoaK7kK\k^/hU=il#mmC&A;&= %fptf3L:f)6.0[1TTrKAjk)nR,E.F"%!9_l.JOk>P'\]F/@m77,g3:9>F3*0Q(QhQ2Kt1?jbGcqm)L6?P@ %p%:KU'L?[*!1Wig"Y5N_-)Rac7kD>+I'B:$5o3g<"/L0lVpb;caD6tj/VTl9!$1C%;aLfhkS+f`,J8&r'"Pp4]?d<@X)'^e`49T. %]A4I(^m.C)0F)G@MCjSk_q?P7TX04D=d6"Z_$WWb3BD+]-6n"X[15[%LE,tm46Lq]ZPP[ONR+02#S[WJ %Q9lZ<]T8%F*t2Cp5.MVu*`K!O:R`Du_j=I%1ZlkrO!&mE!G21giE_2KnA:"5:t[2ccT,SN#?ag)AES%rdM'K/tW1)#Mk5,G7/[ecF]NJ:L>$S'h,&$EBG@^N(eA!P3.A`?k,+0PaBfL_XNj%L`+7n;nu-VHSOf"0Dt?=K+-JrBs"-/tUX^#cu%QJF!9+IrP[Mq>dGo_Nku>"Z)#9bG**ABZpk,S0.b %n"EX>*1>8E(L>m7TD/;P4&([ZOp-n(*`XE0fZK>ok_fBpa2dTUM)9Ie]ncfgF61)m87=p&CPeiP$=Pid"-_)"$ndU6->n],SmB(; %Un)ot %(#@u@`9e8)+^+1g8Z.QV_37]U2jfb %Siu2kC\5m!#D[&nn4$f.1%Brom$lPk^F2J^g'rk[@eU=?k0C@\7uQ^*r.M^VSYOh;HAsA"YMLD %Tuk.)S?oD_A?V$-`_-E35?p'6k^BHL1"?>FP8L1\[-\N/4iA+0OPj6`\HlGfp>\ZLZ,K;jDHM,p9`S;t<1Dg4b2G#$7^DmpH99`; %_0l/Y+I0N+>qS3nY*ug;\<^IiH41kPK"B1k(*hXWopl%RpP^8J/0I#HM-_6ad?2?SA1?H,h4Kt\34hDs59*fee:cOgFuLRf=D#5@ %1Blq/a!#uHYG`3sD7Z];?i0AqWPol2@cLOf<1r2,QQd%-`]q<%YTlJlM9tjfHrG(8pT'%#bB%1 %_d;eRFM0i&??0Q8;6D^4`m2Ta0TPSd'\ED+*&1bJG[PX_]#.^UMe3..8uj@_(K*"E69)lJ2cD+cE]WI#o)RLE!^PH#m.d*A>@udu %6>.8N`/5,RUl(f&phq_fRWF7\:g-[Q+CDMbZ;rkhnmJ_$FfL!KE,JUjge:RZAu\6KhKAqCTMf)AqY!M0RGqeWC>/pK%F\^R)pEG) %Y`teZ73lKnGfY,1K435_02]EFb8k,m:?E[;NgX$M,Y5Lp_#^/4r.eqJl"FOS=u6qrD'I28BdJcf`?jjT>V_i(G'/`Nd^$0">`89P %Hn?[3>8GXum.*g6,FUHEFki1X^bsg-61A6]!ZuaO-O4pK?^I&?U+#N+PG]t/fIb(bd'(*UlmZ_([K3Ue&gCdVFI^Ro6E52hD2.-S %kiaSF*&EYG9p>Mp-G\t*9Rt+!Qh(VcIIfM&*t92`K2Lp= %16'OK9a;on*?cc"';$LaP7'ii63!5)8[:-aUS+4\qo_?kNX3CP0WRa'NtdF-!QWIt5_9dZiBSru#cke`_V;[$SjAWPH_48W@JV`nA-O2UG4qhO: %hR7h:f7qRk()H+7qa/gHi>CK;B+r)^PCC[.L-ZKu?FiG&eS>EKuE.Ae*KOL)eQ@siiRtYgSZ!1Ft!_/Ws33HPah:j+,BT^Q@^Ko8Ia^KB+=N+fQ %S#*bAdtq?5>;P'$--95GJlJ@g1NcXh'pFgp>a+DCOE;PU3U:Wk#5Iq_8M$8Q(M.*La-A6cN7ui8$m3dq=ISbAJD[Ij.DjW),X[/@ %ad!S!eKoGC(;>0ofGI,p!nlZK8lWIFrPW>bRHVj;NJ5-68QF][n2]GmI(=3Xe.Mj[p]AT_HG\AK3V,Kk+D&$NG)hW(B-6GH#N)^4=9S2Uo0i3SUg) %`0M18glO["4V26=DMr"gD51"h^5?*jW-/U3e1IlCOC"+=10'LCW\u^1$VY\YU"eWen2W6GNYPccjp7c[Tn>'q0tH\(QG5b!NLceY %/d?e[l0(<1ALc->EVQpIo75q51faMk6@UE4niF_XgkVOA9F$n@Fu'\N'2Gb\2\AW\b"\?s;`,mW]@Q!e-O>V\7PlQfICU?\G2Ii- %^lKT$<<<:Q%t.,5"dpeuL7uT)?mk7)&FbTUj)LkcUM.9,$!#1B6LR,/H8i7M46BmMR`fubQ*qQ'L#('H>!5hUtHNK(Z+TFS4#)[*O_a6@E73dL54]cZ=7;E'>FOT&2YYo4?WTU8Pmo&X66RBH=9*?-S=Cn5!1icih]jB^1uFOYEIUo/ %>WNQE"1KbOXpZToG\S"c9%souB2WcKqc]3lhHPA+4[IW"+`nDsqr,^i=\Rg$%mr&8")r^nJgPsdqGNe;oBUb*.)r\[P7X %\sS[`*0P\\%jYaE_B4H6'NH*K/-,6Z%4$?G6NSs-4Q$u@ceK9-no4"_!R])`m'1r@]-DACj#t5l:fT+RGF[=,Ur26P?26i:ekO`G %THkQ^Bg\TZ00e9g\jLio<+,t07/2cj;l+A`eF5.gPX:W7h+YZ6NZ$J<+q,.j#s8:l^)Y+#HnFK %,nmG[;?WcK",:H5\\[W+)R=+b,l(.HlY%,#V4m0/?s0H=Qp9g<-;29sJ:SAK\?Se-ee!6MN$#3kD26[:5TVlp(s^9C'u7kL"4`XW %O@Sa/"#l,eCVkkB0ONlS0K:fJQ_MJ*=d!bYg,AnRG6P;:;8@'*=T/cJ?p!lD?.RIV#N_Vk=]&$hEq*(PKF!2SijN4Hu'EV(fF %?jNAKIm%qEqJ'@HJFG!M(R:A%_cTf!E%G*30'ZAYFia9N4ooHB0.osCGW5ohh5E&Gd,chZR#SKmni`peR1sB&2of4fculB&)%>q= %&pn&\+gSlVp:+e*(=IRdC)hNk$5WN1p*_WrrC(5"Bino1PYB\KQT>,N)fZc6Is %2u9=5OeGK>(o^ZXKp*Jq0hcO*jJFlronMI:(afk)$l*QsoE%Er\5Lci*\KFh\7L)ILduO7?jI1eC':?h8Oh7C3R:q&M5ldLa^'45 %FSH5rZXh,QW_lSH2@5gd2KuaB#iZKbEp73KYXR4@Mf-e%9eLXHMBmQsPg3An0.Yt;l#d\Lo`"YtScShI4nODPGJaE28.BERJ1ZR5 %)n._LZiNL5ZnZQGJ2D1rC1HmOCcFlr!)_,LH)MiV]D!N;:U!$!>KeO'Q*)'EL`<`c\N80s-4.a!mg6) %Rg6K2i(\Js1Kr5^2W+.Tjo`3n"/#R)P\@pFE@nlfOJZE&B,_0=e(eL,+J(Ze)XsQroPQg/1ajC!DWN:>`+Buh?_6s39g'W*nB6BT %=^aj,l^p24rBa1=e&H,5K`kg"QVd$])d^U`?MlkT%X:n!qYOcC/,8@1% %%Y83/]g14C[qr%UJOd(bBP+mb;YNSleb%>q^bPs:jso[c=L0M1)o(#hOjHE\kI<,=M^BE"HY4]?+ZTToM7WU2&1%X7^OH2@d0YGAj:).TGHHrRk %.H_7i;"tuSBa"A/<0oRM:RISQ#>U5TnD<@)oC<;S>"'F>^qp3K%X2)>;g7T"")SqF-D66C3Z/GFo6H24OLVpMh)#P?X6>-]2s[[t %dqh1\+j1tRAa&5!hlRo!*(umhhfKs)BQrY1\-O%!gVeZ92rdZ\aX4(_iqo70FtmP4aC4[$ZBV+-SsW:P4I3o=lGI][R1KKK:"39V %>`9X1dF[hniM6)^p\!nPFuPtM5SF;:MA0)BO-8G>r#DD)+p1!kl4f^!:liME_(#)*]KG]X;s:c5V>-lMD1*Thou_;bAYYdijUFD^ %6C9XO29N:[KOCg3^AO;*QO.RQ^geJ5E_OR;uQZgeZT %KnkC_CT:0Yriu>4^Rt)7a^^/XqQU=jZ%R]AVjCimbWuV?Gf>o%HGFYuq+EoUXb-phj7o6qCHp?(ORJbfUS-YPCr\*;PXUb?&-NQZ %:>V2X5KrA;8Z$bo7to*^Q`'UlL'L^,'?,o@(XnRRo_! %AO.^qFm5.19;p[NfdOXiO7Ho4qOFKo75Pq5']rJd"j1O1`CF/[2P,Pmuk?c\ZZ83\AI>:c)aV[93NL#s %W`2e-?S%'1r0-Yif^IdmV4htC]:?,!1cCYjZ1ug+%G4V1,i=ZG/a;7b+Z5J0pqqe4aW0lT^\JAdr`d];\Bdu+)P9ZY&9>k4K5J13 %4kRY4)Y_pIP!7+L"n+>DeGr0iR"o;PQuW4N?m[](kgIfDkfgNW[?j_!WZUiY`3cnT(mM3&?&ZWu0g&n0CPn*N5^tNctQT %eZ33eqbU1n6=#r='XW#kS`!)$7uarcmqI8p?hN$b9".nJQ*52)]]@HeT.r?3?=3a"EgL'u>mP3"4`iQXKJi$s'gO5Tp]S6FT%c%G %)kZcn$JQiB4D>W].0RD+FHFY904b0=[/pCF_!SRe3uJVfpJaJ %ZPJa^2QY,!e2TYLJ%WBOWM48l/mWH33\FP@S=ZKVp$AI20Me#*+=E2o2&mB^A0]5]XN?)W9M=YOfW1-+HWee`A54.7e!/c86eBpD %Us'R8TS;huBp!/K?;aNd=TO*_rGWS#"-kCF;P@^=i&5/<\(o\j-:/ %(%cIn0Tdn(E%kij5]';mTLoI)@,:3eB"Q3LP"\@>ek=AXU_Hh:aaN.ZY^3Z[)Wie+Gm[sMnjG]eSMU&PF;+biADABRaMXc*#W"TU %Kf4,AVRr1[b@aqL*me!]nTd>1Rga/$@BQ)<$3IPP.h8R6#3EBKa9SWsTg`9tI3G2ssUBm#M-Sas4Ma8FnNDk%4!SIp2C %(2_lERBHTJ;[P.#41jQeY3..TG&9Z]s&Y1L_lNH5A<)`#'9[X2X^b16[*$HJ]D %`[)(%]us=*TC;>mPU&V72DIa#*@Q@_ED(WSdGLOANG7>3i8ci"!HgrSF&/R*-6+h9aX93nT/Q'LQW.@)HpZNTjZ)jC3#cuS<\PVA2ln7g#=TH\*c!UO5Q@A)N+3inV"IchA'bQ5Z0b9=q2ou?"W)=d:FsO&G:sGeA#1Y']^j)63`b0-/@@:2:F_K2U?4=`[C'[V\Xnq.TL?+"Gp/PY4B9H7/&QU[s$6lH/&$l9X[H(*CJ %\Y%b27EJ/00!ggu+Q]Lf<]d#gt)-7Cm0 %=&e^..0`=,^IPqO&PEUc4-j/$!b+WaE:P2P=m^#rAZdrnkgFp<.0O8_],m1)Iu0*2R)4bY,7LqLOt`O]U/hsgTsAALs^?rH84O+RVQ2[0>=+D^l",aWN71D%r?bjX"1uT;)mF>g2q+r,q5o?.Y?\'H]GKY]BB%N'2l.BY>f/%[s05Q8L6DLL&$g#dQ?fDnCl7s^B9>%q];QpnC)729VF7[o(1&B^&r0uX+In)7ol^" %R\H9H9&t(-3#ELaIGjcf$(nG+3V-/,S;8G8J.-IW/%1TH)sD^[k=(Tb_rINKLJDeE(])>8`Z'?@3gqUX@X18S.h"*,1IeR2)Rs+RM'@1Wa$0]Jm;0mp<=G#Se\e&go*V]iOp3c%^fBTI<&Ge2,@H?rop3[D4LeNOX@9(;Ss[]m#b7(7GE^.*Mn56"OlPq\n`3hHhdM!$.b+9j %`JTFf^^ZfSJEcHg^ro_?DY+8IOA-ke6q-ZGT)Li<:,,Jk'8-ESsSU&rJ^3/Tq";M,[%ZXF[jOsL\mkE?`ZL#N)_9]M>m1@\WGW>L+\S,)9c[TZZ1#D!imRdAdMJg]^pPW\.[#(;BVO8jl%X1se6a>?L5GmWm3L6b:oG*h@tMl.Ei0_8I,K4%j#k%Zb9?J*Z#$"&LD(bWsDin %!S'e!8Qa7AkO&P/W/@6hC*F*6%e03mqI2[YoL39(1f@MJdes`+6un.YNA!Y%1CdS,4DC`Gh7Dn-+L9d.$fZLe1=>-jqup''V\II@ %X=IX:O.`nag>18%f9'02A&*HPlgC[IVR0=*TW?S3Q\]iLIm4>rGi,>P]$TlD'>\[Wa%mKZc(!W&fkPP+Wjmm[6_8"=!\4g_ePqtN %!FVdp)ZR&?mXG[5OQik\^2Sh%ed@WIV^Wb-7A^P<3Eh7I>]eZ`E!uWK52ZlRnEI<^1L`JnUUq0?6SghNXqa,BuBaSu42IOa[pf+rK0S %qS].EC3T*-Uq@m:)oWf?8)O>CmUhjqZO/;[9l6VFX+YGc@NgIX)tJhD*#haY**.W*LE\plPjZ[*`%#%gaL[gn_8b`rK=_o(aK3u> %=s$=Vh#\JqKO2a1nEttK9SQ5JGKf8(.F3pL'aZ!>$R0[qP+'4bcM<**sM3%n,O-+ %j8gTG8WnmN(Me*_gV+0>4,44Ep8-bG1=(:!U=N'8/q-fd'$M'M-;'o+qIP^,WGI);p+`](;biAMF5R>UQ/kAlE?R$mj20$'\CeUG %?`5L&.6Ub>T%dG`&_^\@KGFaPI.F([BYfI+.nN#WW]_=^.(sUAnkr_p/=`dNI+1/*K2;MSA+UXW;K0ZChZZVr0k^SADs`8R!diN*haO#i)!u=2]X3/I'?Rg7GZ(KJ*&NpCt-o0.Dm\_>sVq^UA'HWhQ`HF[/Q6oPF %X)ICKFff[l+N8P7&m^)30Ue",EXWV#Yg$M4a,oVRSf4GeGJ^AXXl>a6,2gp'Oq!H5c#A0OVS\Bk]#6H>m@[+JtmO--IUJA>3;OM?&Z3KV@Qj_i4G!ODHF"`O)^RUP8*.d`MmN0J6TjIeK$JnP/1*>_@( %:=r#I?Ba?"5#/HVKYFMKfY^+Cb994CY+LN`>NBPa[=i:/TD^*lBo7I`$;GqjE>NkTUq636T"=?<[bsRWK.R$fa);]^972L[92iVe %Bt":?/=XD+a7L\NjrN`:OY:.t:_:8]kTZ+U;WVcNhaO??l[CE@%=i/cHb67 %)MPG-Q0sAg=BrlAFP0Xk![jCkIh]?2_`(>`5[V/f`^bkYpcXm];8^A6^[7c-d'f>='(\)Zp4LEcrj$g1h`Rd#J!L-2f>mXu]29Gm %#lta^1mV<2/EYraAI9;f[J^m21XD+KGQ8?99_"Zt5IB6r(bcL!&YF-ZBbo@GfNa1hh4@-K40_!XQQQ_8H<'[^h"St=X`o^X%llX& %>'H/i9Cm/Vc!s?e5IM;T22rQ!RD"?*(cK6a@$[V^au\6/Is2rN?A$'$]'gGPj(<8SF[$8;b?gAtAVPR18_<2*TiBar)(FG_8D3>! %d:Z;&i*\'eoX%iXSUh6,309oWrI8p4EVI\hB>^%tI=!O=osq&622stiVT)_ErEe`6YPP&$_`1:P1iA%W.IAgfB=%JCJtTPsW-0"n %Iaud7[_.W!N/BY3t^n$]O*47B)UEU*\f\t:;%>%oF9 %ar]-FCr+R=N@u'V$WX`L1WUAtn^dF3uAa)q>8^_Oq.V5ho24'!8r;\ZpU+K[kpn.N8W8q[e4qh]mg*3q:r$*Z$lI42. %qQWC>=Y/8N+#]C_L6-Q6C0/?8pN&87(.?Be2X@m[,ZO]?S(`,@maThVbIYa#+$OVnYF_po<)qSm5YokMaIb>]5Nh>Mu2__ir(a!(Rccg#EPo2iIQYB+f$iFPeZLG+bFLUB:93`NY4*U]h$SF,\Cj8h_QgPR>kFhKl\Wt,Uomj:1g %55NWQ$a:'pk1.57G8L7nXM+#(,tW,&p&t=(ok+;GTrO*.N3AIpO[]82:g,GO?t1.-5S-XB2$0d,:r?H&g[?k<1XA2HhQ!OU#(sqf %p!+3g)'9n@mcNZ5,PL]NCN3]sC22VnP;Mr4rHSRsQd'QlI(4)O"Q-VdY*F0FOktS7k'M11\j1XRKrc_]Q-c.HOQZGRdu+!,mro\0 %\gQ(L(@&JVhi=5EglM%)j0UY429=Lt=:uZtnG2[flE)/SqWKtJhrii$#QX))C$b8FCE8iC3Phm>l)Q %WO7hlfUU:bgrWoVUUFH<@5)N#`0-A0sd*"pBFmcjTFDC<:b@k*OeD#?6pcIVT1FScXBeqEM8Wm6TakrG#9oFY\.nK_oF'+NLGDD,a":B##Wk?Y/t7Rb)6/:8/qYU30]$q`a?&0`Lq[p\nLF %j9fi8M-cF"H(UY-hsI>$)`,*Eht/Zn5HMu'YWRpag[J@9:Z$E\\[uG43Oi95>I&&)=gi8?139"Nqo\V-\LEuFDm^nL^]/9AYFdiH %2cga0Em[M@DQ*BCIbQ$>@.pq$^Q6ba3UsceYB!guf[X3eB5*=.ofI6]ma$1I4H6u(.f3la[/^,X:1J]V4EIWc*"uGG;Pp]G?i#5P %f(!$A2LrsV?BbH(*.c'7@_a=l9t`QNj]D_g9cRCA[uDdsSSd1+:uCe:U.-"[K(SULgGiQc"kp+:L6>Y(os/O&;__bBVN!!Y)GPYZ %_(YOG_(^X^(?2m3mrPot)_lg9Y^!S9(OnGc/:gpT)sPrr!(m'"Dc?1\-"* %:VVSF-UI]I:T&qYq2P4*EP&itN3.:EDX!s&5N<]sL5Zsu,0$'Y_lU.jBXQ%=S[WCQn?C`I?&#;@k=sWh82e/&^-\;1qaD3A9'Z'i %YPl/Aa*6/.d#bGOX+=3f96Nc7\%XYe^P/hYGL`=Rl-W_Xp._E?-K'hgVSoDNM7n=;5W>9&-Bl0)cr6"s6gk'UA`%HIg:"ngPbKfS %@U5SbG;1bZp+V5K_'iqgb8q>^?)6,^0:lmaQW]iI(`[Q1[(T"6dgeC,+7LFn]=CB,lFlh:EOr] %F$($L6)1(i3>#Za"al!.6k7,t=K8HUR"J9H-G:$L$J,^61@7m>)]U_SLq3fZ%d]c:*K^BeSD!`$chgR5/]X#f@HNu(?/WdjHLooX %KA)/,"GE5=1*`2X20)kI`"U_F;%Y(g"p$T")*E8eG2J%p6/TZBr,Sd=8lc7-6X;c#^/>i'/P)9$l_rGU*"uR,SAXRgoB1Og?:>F* %&LVmb"K:tPq[RT\pSc$.O^Jr3%JJDN>R;NT<1k6U#`eksFMfMI4D*$\KE.(d%DSqtrg!jORb^B_N/2Td1O!j^-H!\-i^*+4F\fsZ_kcAL+k %:XuXM&AW,O'[p-.?@Dk)R/HI`ZNE+tlK,u3S(2#G$O;A2J'sViB[Xu'J`Oa>ZDqM%)`9+99[kURf*'t6qo@P*&0fZ85)[5F*#7&, %.$=>\*'ppicgVpj\dTpWF`"HP4VBe`1]O^.&uq1FanuM %@7fP4lrG9?*K'D[n8\V<$o4iV6[+=Vef_=?,QOQAeX-ns=2MVfT2_,QbT21=]4FCLko:A"Wg;:n?$//-cF9j-CC(9FIa3(4U*9_^ %#e8*=aDQ7u]_Bj:prERbQK<.-<=C35MoE=RVldr%X%#5=>i"E@kMoeNeooD:a:Da1VXV+2?X,$66*@@L'DDQR#Z,Gr1%?^?U:/]I %=+=OfWlZ7NrAW]hB"EBbA:jc6/&X'$a5kga)2P+@MdF&;=\-;#W&ojYlOR9]mj9g"-TWC] %YQj7$T&?WcV5i(f,9W$snfcO3Z)R'L&RY%NgCaCelY-R"7Cg8i=UPA!r0*]\At;3G`1P9P1DI47V1B9#;4M,i_Ni>UVd#[<91]qjnX0$gGfjMfOg2gr1(.VYroNe1XTns6+;>5I`Q\U,k0g8B'5bHtP\@UKpqZ"#'l@8Eu_O %Mn;CqfL&FTn^JBScnM2`La6Zo]OL.Ndd;Pq]%Z]cZVjQM;bqd7^i4N:Y@4kR5WC(U6#>>26`%lRK3rM#YIro(i(6a9C[/g9eqboFbPK]O8:`5M,O4Y!dLlq;-IF:1N_$p69"lO(Z0&a*5`H%*IH^DA[7=E8T%e;]!8qbB?/D62'c52NZs>J+(SUH/+_r %XJV5dYBS[4I/6br1A["`):OsVI?I$&jXk?S=5=aiS6(&!`XD^!`jSVCJ+*/3k-[[;.hUMYofEO#_2#,1,Ym82q6h,dJLW$bhb&Lc3+mI]'lYp[K6k>JJ1RT.)j_fAFlOYjU(d>p2(NW8"u)]l/nZ\D\C&0CN\LpBZsGaTU`b %X0:7C>/iR8h/daEhr4Rj_eqGa[!f+?>V5@:?Lj;pCqZ@">EF7aNUmU.5"j&$EF/,3p18]&e3%_Kp:@V.en`$Mf("boT7>2?(h,N/ %)Lf,]l0c%%^5$qq[9$\D!%]gJLkp41;OCpEJ?9N>]ni"GiH#A$s/ZUDT/@% %Q)%2kA+FrlEI3/rpC[e1W!QjXpLtNo?F4IWMd3*g"So3HfA!h.-]7NkYG`9UnNPVtUb[cVX"SC=YL_\0SXR2NDm7^M"%tU4@U9c( %',q1_c&3+g)9t1(#-'a0)!3i>hs/N0YZ\R`ud5;&Z^0Ju6V;f[fp@83p;dRO1kkFXmntYk^;T=r0dVfq:?Rt)oDO2ogp!,3BFeHCCp9iU?E %Q.tKue(SXgjIP]*2AI8s--oB'M4I$'LY+.4S@[76)1;#DCDqjMmHnW*qL.V]0X]hY"6E3bQhk]k_Pq`CDmZERGhG^XS=hb+Q9Hp> %dSpgiI[,[W#r(kkp=kSe0m&*+'(G005(a^7ku1QF)+.Z4,N$D*^P-.5ak^kf/!kk#^DDVuO&/;1,G?c6agf-9;oQJ&[,uH$pALs^Dr9jShRDcKs5)5S+?^k%.1Wd2:'Y^^[[p798F;g@I;?Fe-hu>/jN/(.Eu:lF;fC"*!-0;M'&Mbt'_^r!dFC2.-I2(:NY3CC.W3sr$];_Q2#C&Z9[U&m!]1Jg'^]4"AX6(fJ51_/\0+A(!c6qY0UAZ@s5!EkfP\5I&*nd$2I2N:b]T&b0bk!6RlHJoA0/%b*r-j[NWC@UTmp103[e'ki-"OHWMK%&_6T4sIA%d?V/4^RVZR!EgHfBk6U#;QE.LV?T %E_3s.V73+^\&e6)41&+D:kZkbSbl7dA-GYDPRB+VK&7GP4HLh?St+I)=\,%('%ag(i/!L$p,M>+'Y35AS;I(bIeVG2a3@jWJcVl0 %0!\"+LdFiFED&*4dQY_7e+ppm70*$bPa!O_=*RSF8[aPJO2,3!GE28^k"D7rQN?Xn-s>VXJ9;M8lfos'1Z5B_VBGDfClUk^P:qR] %h-*E1`hFlWl^<Yu@4#a"3V'U:Cs0bl6r %L2hnh#bD2be6!QnS8hXiY$[J.e6E-jAd&QI;c/Q"5]0-m5V4Zl8*IR^U7f(cfD47`9C/ZCqF_7L7X\(!W-B2q>GfX=TO15d!Zs.# %3OPGU((pJR5W?$B>RC(rR3;5B2ip(TbGO)mFc^`-:,AXX5DtoX+E(39Td0oeSP_5EWs7a" %WIW)/"2)9"bTk;NTU>OQ))\X&9?1i`*YMSVWZ&ufE6m)r?Mp2:nQjYW4%a7?%h!O!0jOXg##LUTHr1nVbhhLOO@Qd;LOcr%#7K1h %]G8FYFIAf:)H#(O\K=fs,VJKT103;_(f;?806?fo&Tj(a?:.YaFd5k%9sK>;hF2s(TNHu?^M%#I,Y\I,XU*\=4+&/>qFenXI.AU! %2%Ql\.uTWZJVVuG+>$4B)?W]_9e9PN64>soM1H)kB+DOcJt0ra^B2bn#r[%>)&E8?Z#8M:dR;Fj6*I06=u#DM"VuTEi?H&R.!85^ %bOE2L)/O;d>F<%VW2'fG0oYnHM@>/VG:Mnb5+4bdB$q%9c143Q(uW/!U.OLRLgc3$DYKmmlUN=jrTXnSp&S*aWS8 %huZom8C:+o(D+2@1b:1=OR[L68&V&sojS*Cas;/BX(9fhZ?UU\AiGi(RE]a4_#LG582c*/&h]slUY%uIJ,k(0^S31HfO7'2bUDg2EF:MC$7KgnPCE>9+2'L4 %Pq>+5,R2>s`?GP6.2K:l)A$Lh!e65_*76Dn)6f3,PiY=J*9qB/r?-3-C13.\-@e/]rqmck;f&s4G$b@j9,,*tA]E@&_VhLETp$;q %LCi#BhFimVU[Pt;Eo<(=T.J8SB\l[9_%C^,W,^\mWcN!0/)tGcm*cYi(,G)%=LLiI6CDM_)(/?)^?:d%A4qW.Ck@@qS9(Ok$oks+IC\lHlmILNG+- %_8*bnU85WSM<-\B0Pa8#Tc]Bj)Jqa+<_b!Be8X1R(>k]m'7nf"M+A<+^s,LXFTqd41&TNEptI=#WN'PDA@mCoM\Zc0q9Q)M4Z%g'4bep\[`6k[ %BA(&0qI?eG&b>YW3uZ*@YhBoBM%NYQP5g`fB6$<@k&^^+=*c2\>.),.YOKa)A)e&pO!m0IQJ7d`YX8khs1Fd);\/I3[JZbUO, %V1Pou6fG1m#IIo'?bu9 %UVh%>KjD`?[OI/?j$^`H@cc)PFuZAFV"I4Z(+=:O@c_lbH]_LH@<^]O^# %%\8qk]^VT[QtBoQ)FUTCL0c#jM8sMm3]pS._ielO`8"0D@$K(,lWek![i7C=`F\OClmL%.lRH9IiJPL8$\M$$V_`lFY69@W`9koK %Vt/3\aDd&o,sJ>GQT61\6;uk**DR["o.bZsie.#(]VVV64kt:7cE`:!:W,o;8ooobF',e?ZGG%FH*^Y4@g"CmhBjM"EFrk%b0b#?(+j[>S%-=F %o(YL(PG^d*c2l,uZ?AW0"mG0-^`iF=aWJq&`5Q?9$DtsH>b7EaAUQf`0PM@7e1LL$alDImZc0"N3K'i^%b=bXV-qt?<(=5bTGY0?Sp2*ZIKNcH[f?dU,Yp0#aQIo;94!T-`f %0@hd2K;9q^,&UiR,i3n<-ho?($L)kQ,%iprPf4?rhLT6%pdOOt9Hc&T4SoNTjH2>O//h9s&Nf*]'*4?UNRNH;nu@jVU)UrPdZA9R %a(PN!^t,6o8mNVI@bD`[+V.ckDm:8M%&df;l1'(Rm7pV*iiOWkVVtRThs:rU0hS[@W1k:O<2#F(IiVS"g`Q9)GaCh&72\@eW9lih %QAd449XSLCi95.m3$KpqjhFSWA$u0:`d[P@MgPUPETQM=^qd.G\=D&f^ES%B)7DA'&W)1OHX+$VZO(D^!*UaM>Sn@1X1mc#`)i4h %q1,KoSfM:V^oEPp?.qN5N8Nn3M-hH*9@Z#&@K?5(+3X^T1Z.E'ti!+=a'>\K=en8#C28(!t-b.<)Xo"sSe:H*qV5 %^:`]#e!C<\Um[b>pi.ll%EqWK]MjGA,/@93kQ,1MMlmoB5=]5%lB[eq[!a_*1Q'NAX5;#6+(6c;-T$dNWVeEmp<3F!ZjT__D#$/[ %j3f`9\LJeFbJZKQhrP,IiU]sor+bLe#8+uWko0J?dOXPC+>G#K#6SC/ET\81)>qSX_Eiq:YSM&hWq*a*7(GM(LggF3eK8ei1E;f' %MQGS!:aJZ#"c,h,$`fBRn+J+=()6q"(b10%HEpj^^?GlH">oMeh2:r4l3"N;8rf*@_kY/f]*<5fQ#IYkn.9oIE:VTdm,0)7aaUKU %OSARNpD2Q-Wq`SiKtb^dPb!']G8ASUrTV0_E&Si9P:iJ<6F/FtL?B^9Fq*,?pm^K/VWt$?/2El,FsL9E.%qe*S6LEmXrndUJtPU&sk34K$jaX%&Qa0jYS1h&qjki#nL&j*)ToZg(=7Qf.m*hdId4YhYbX0N?>M"/OR)u:7qH2`gtG*F"g(:`DN\0 %0s;edL:,sV0sG[f'LTc^A0#4Qp5D6F+lk_jT&FU8)*V&W\ddPIqj^*F3-mBZ!?"kRT84@m/N`B]Uh*SFBQ8A;,H%,$#HoBCUZ^hL %INp[j)p#i&h3%dr%."@n/MXI1(>%F^8;8#%%R12##Zi\tZn1?9+%@IP+MQ4`Vu:aDjW!5u`;Jse@n0WY`VQ=Q(-]L5,g4QNA%BoG37e@X:V%nOnW %`O7@a_-VMGfTmj#KY %pYTopFVY@bfK(]QFLKA%(]j`s %\4PB%(+E%o%;TJ/A1!csd6AeU,?a?Ffh![d!!I,=Bfj`$E,X&.?OU4ha!iXmHMuF9F/6)%HdA20W@tR;Ai0n6%.]@Am3L#fpGnfa %=*r4SJDGES^CBJ_EB7'ZA$t2qNlS4ac*WQ1ctt;*iSPQ3rq)0?_VEEinVtrJ %qs%1A`)@aa^?L]OT:b9;l[?8:gTI$V,HfiZP=57"99ST2W]csN*TME-mGb#3]@sk(i0N,B^0-),I+Q_E4NlY@$OS4-;M/3V=+aFI&X,2m`"LWLq4G%tqG&D:+ijX3RiG?X'af[7_K)9Z@Q9+jpNu<4N.7&sNT% %4m7a7dHFI(To\^5`5S1Mg9-q`Q,gqCI)C2R-?kl %_'uQiCdd-[XAuAi;SBc %%V:bW2ER"+]U91j#kP,&f0='&[m1H@n#ieR9r %)*U474'$)Gie)p,.h/;3;\CE$>UNOqjE!@Y?O8rjST?QNIpeik0Ed(nP^%bSWiVUm- %N<)N@&I0@X/=9ZBWu(o;<#IGYKqf($`6Dfu*tEcJ^peD<"U(62JJMp5%2gV:E-[:B,&sA;&E',)'SVa[/[@T*NQ.S%n7,-,6l]cL %@`XAB!PAElVudo%7Lb9ZWm2hoIcb4FiksqEmRSdZIi(c+J0rd//8b#_,]KUK-q]:?:FHU0&cnT6:%GJdA@noMI;hLH#_^VpD]ddW %)og%!2B@9'@e.f(5Wf5%X.R.22e%('`ZbS*"R8X@&UV(kXQ0J:AIHd6F-IA1KisPF1n5ot1d#%eZB)".h;aOcSWSJU>\9&Q %-K50,]Udk*>#RW_7t#Yri\UXg_r_UF,i9q[&pC&_IkTnpYjs9mk9c`X_;kT/5U` %![NC5ckY@\jP])+0Vnl1*]Up=`)4fVZ4e*6/H4s2!t;]f--R^9SYK:!4`1s6TJO/+ap@jCQijq_[5UF?"1>h25aO4:YWMR(B.DY/B[Fml9HCOEqGRE(12HNIJM?31$U81d2eC(B2=aUL@QK*\oE]@oWY!!:NW#KarbF-`?&=+?j5V %T_nk\G+OgkNoQ+_[ %H%sN0I4sin:U;Zs$H`3?=*lSNn@KXD1Iq^V6/9]!`b-iQ2>almPI:u-7q>GBR[Kf?#;$c.NHe,Q.pCH,=BLW/l18ZnD>SM*+Kn9n!CMUq88Z3LZO%ClVejL%$1,B^?qP[),mBH53E\B=(1+_`d*L+sa96HO,um*7QZ>!8\EaSI+M3PaMgZ@imC< %?L+tL,!e7#7@tr-4LE+b9#(f/4C$]%c#amY/arKFV %S\kLNjG^qZ?AH:k[0cPko12gUl2C)=A&M:MYF5?_e")!ocPg&!Bh+'FlqWE><1'3%PjC$'LIRq)g5Q %qP&g!@U'X/Rkf>/D^)b0=6_X/Sj)110Xg5L_6h#Jr&+1$@@t!>cR>qs`S:<3fFA9cC8,En_D9\FWEmG:#<@`.i-ak[o`]X[jut:cXitaP1&O2oUVt$S3YCg(f]7`Ni%a_:N&,N>@'%dHg4>"G=`BW'A0ZOu0>WV>n4?rD-:G`Y!1t`> %nJm+O=>Sn2-W>]U=7qm"$C=`86PmB$]fR^2:@Ckh;Oqr3`+lc %#heLeISD2b/VYT&WB"qr5>+Xl-H?[5O-_(iFg.PO3<'S9KUPV9C`Q,ff\pQ]@<2n;LE>q>6fqOQ.D._8-'"AI(+p_X,6rZcLd,QY %RTt(&PLK#@m"#gYLNaYo"k!3'Hm$]q_DDl\?JC7%l1dR4O6/dSj!qFk<:UMNa0co_(LVE?25'!9]09@S4P#^t7nt('OM/q6PUZM3E[O"L'VStD'KrP)@`\;n]b&XB. %Xo1.tLJmach\pcdSXM>9A6i,u/1dsM@5[TI>_/jYlP]8O=/:,?<[aMZ4"P[_NmUY:\OOdrj$Ac/J]YTgY6`U[oebeh^7;m(;Ck8C*QB-8`_K,$,Q.?E&?iD[$` %Q[OVsMV7ghccQ.)_ %&9;/,@Z&>)\4e7%I`d$!2ioCKhSff,EhcZMMOV:QQJ*Lrq@"_nrnR$DY]hp,4;V7ZCk^iQ1(ZhbVjPFCYGb.nNYQpGe%99F^G/kf %aI5k:nh5$qi.ckZCC_qe\[\!CdT4r?VV9WqZ#;]J7*I]e)7-B%\!G,'JgGA(hYknSr, %j*+Vcb^ZGi6L_`q8$JY3j"8kW&PhUI$n`Mq:g%G\`VWdSM98LJ7KfdWEN[AZa0"pnAFZJbH+)I.);.FY %q,R88&/uraKLH0c[t@1HF!WS0SijNp![+`mbk\RrrQY-_gBP2A#"agLK+^1F[9^3NN`7bU#S->b$h'A_/D;3*0(_>kD^LkZRkI)e %``:%)`l^*\QY/K`0:#5HkjESPr7LgeXWk1"rPkF)-/0oIIloHp=$[&:l]"p;$#c@#fM(g71.F/VMr'jQ_+#ACpt)DOY=ch4l_dOr %p>,&=87V+QOg&p$G^_O72GWluRl$\lI@):[GKtW)=.$3rCJSkk&"b?_r7t.uqpW=WX8hkfqnN*s+90eSr;QHjoWQ$gmt&7Rr]gD* %Du]'/J+q^dJ+q\^J,C/C^](-\rnVMes7"Ker;Z7nG5R]ArmuYss8O1Mo+uoNgMd,]oq26RTfrDGVt/fM*rl/)s7XpV4oU5U(Q7dt %r:e5Rs4cR@rniLp^O>;frq?s'fDf,?r$.g3cTcjEFcacb5/*!e-WSI4LO(0di4Oo]4H!9qcCPsMLA5NE2g4Ziq!$KWcYioP&?CD< %\5cA.62XPEqa1W2=&hFW6jSJS8:lV273QgMkFY('$Z'4Z]BH&;pN9hlqQG8fd4FclnqCU8J@*-d@H.eW^cP_&-jdW<$G#H9W/W^0 %Ik=3(in9&gnjCLZLF/^ALN!e:&(*Y]=N.W)(lW)Ls(oC8XlLL2nBX^MJnZ]Fre/0hM^G3b+m-AfR2t)4t.O%@qh=EQ23b)qa0o4NB20[7]YAV!F_45=c"))hm<\AUJa3"'?qNtG+8.Q?,C*qCk/\<&Ap8D=,4A?lf'kCL#5mjE8tmJ(AKTY?)8]Xb'D#R %F`D@n$]#(B%+@OFK*[&q7e#*;;?J-:X<;8/_nG8V[+n"cm%.mB=\BoSr3D;\Hdu5.VgV/'!ZVRZK&Nj,fsN@Ng(E(]Zm"QRd6K^\ %SdjsP#g_=&$A65LHFep'MFUfi2]fp>$/oB50]X0YM>)W4/@Of##NPQ__G9j5n2Q.>XraaXr@f.MkeW!:`KdZi5Z5/g*riq!QipMs %WnBoUh#Lir9l5:IR'Xf$W[G^X=U_=e)lQoNCN?rYa8j]QeMjdd=,a-HMfC6S]5#RSJ3_BhZ3)Sk!,Biaei`>BA(E&I],.L$jEN5FHcYN)HVA"NHD'm9j!4?sT9!@3>F`$/lnBKjrI:^JuO %lSuK=(2:co#Jo(sQPaO83dVqAGZSh1.(mmCpt<"Hg8Kc'7c05 %@su)9l3:AW9B$*nBFS#aA9:sg\B<0D+U^M\d)[htC%)o]&[R1ic!@^h6#014p&)#A"A[Rn_%mnO&;b58lR*tos0UO#'fTs*>9A0b4))\NY%AY_E+uSq'=Nl@q8OWoq\bJ#iq"5\sK)Q(g*kQ.IT.l$,L?X %1!oZ$a9U(5na+)e"pas)^KS@.DKu+"jNNAp_$jf4daQ/V %@bG]O4fl(-iO\5R$ZuU@5T6tf]sn)tP5&UL\Z^;sF1l.[`i_g*T=iP_hMfRZcjb>@[P0&5l"#`rgO_T$jd[7nJfl*8*IjLs"c6jfVs4-4PCSks9uIZN9X.FtFmZoHATq!PW<'3R25.Ap\iD5!$Vpi=J.J/^>4A%WDmZM=BS']647(q`Om#cZ1[fOa,=4iZac; %_MgepnS!bN">Zk'CKf+e*\ %_1#7ZcApW=>)R+uj/<_oD)lR[O5k2k[.c$Uho@1`BXTn`5g(056!3m!-T*mZ>8VoSN\jK]WO@_eDB4ubq@7'@F%mP_N8Vs`J@"o9 %m7)X?^?op\hJ.3Id,e*.!i=;@([/KcRL1)@?UX""T$MOE7HsQa`Pm$_TWF;S/IUka4]EE@oZoQGB&rKu^?hn2LM@_?WRq4ZOf\ %h,:oZE!+fQRneeeiF;oRZ9!ccLgrkC6enBqU;WBMNH]9[odMd9YE[V:ON(.S>Nm>@+(F[>0p4\a[/#X?5K&_.'"\MML+J2F--K:f59lpK-1b.X=_$6>JZ0lGK5_m-Yd9/8OG %NY%.n=0'sT0ef;4rVKc-)HQWii`M%9AKuP>G0/fVg8A4qE@eNK4QEqUkkA(@QcGC/Or`4hagD:78;h6fSrMd%]XC`P6\drITZ:3r %gpm&%H1Kd+ooiEi/+6U@55$E1'j7kkg,!`8cOr8N7Z?MQ"n3Y9TYBH`M?5$2_HNrVTJ:'6I86rX(mApVK[D:D((E&=kX0ML<-+6Q %H/(/g(7Z\`ZlaR5@=g&&CiW)_Y$h3uWn[9I(E]4Gd?r8GYa[0i(uj(nf[?Vd`U8R7BB(C`6Yp-;\nj+5Si8t)[^sa*_DcE1SD@;J %aE)DBD.GRHB&\d@nW_/2VRnHcjm'gS-GH:*Eld.XU+Gj@(GU]`V;lSLf!n!7@q]J%H,#Ipl.%).=]fYDh547tb7&`"7-Q=iftP<3 %$fMr#/?ACgd6pMK1"E/$J-*?P#kj(cs2Z,U>aSe51dB>Yl^l`/BsZCi&j%?Q0rN`dT3/[E[=QfY@HqTB_3H\HU*:@*1/@/3bTKL3+][Va.[&2]*OPE_ej3Mj`%?[`(uiRhV/D;KpnZMVT %k]uI@iN$Q$4-)^sk]W#3Eu^OEnX@9,B;1pSV96is=R**\GOOi53SMg[b(U5^&TLmj(Sm);E,U2+N/'+5nF4q:n,+o/Y.IU&$rZc$ %>C=U*%7470o'\!ciRh.on6m;j++GecG'BOoO51eUCs,\ag6_Z#[Rn.mI9J]bGBN-c.hk=DPVt/Qm1S,GpUI[bNaR\1k[P/ZKZ?.? %NS;iI72hU-Ni<5o*D`.Ujn@9J)$GpQ8s>_t!ksaVA3l9LY0l7T%I5VXlQIf;q<[E![i8H`;]#1_&-qlA;+2[HbH_XUhG1n_*oSq_ %290D7f2m4mOMfTZl.=dI02>>PSVrU\i^JuY\Pr/lAcVr %c)"gODI2SSA:_@"FnD#ZYbs?3T;ar1>7N+u'2@)VD42NN(c[kjNJ'(Re*U=?LZ$dk*(F8=%M_hJGFZ;_`u.l,_j;1"**-cXLOR"e %@rh?"Z=]Ufp-H&dAJ+>b$W-=D\d?":J*2FEsl_HAWp*V[Pg&b]%= %TSMZ?9bj@Zo1_tA+CaKt,C2asM9L2,ELlW>Fb/1'_F.sf1PC%n_\p=)i*u@%ocV86"43G7(6)((JX,XT^0cnD!U\ol6dB),YR#?9 %:rF[8p(XBIT#Q@1roe<1"AICS"\U'K3\9B9qSZc) %k8@nWCY/-mRB.6.,p^qRK`kcSpS6H^`;0ubL9K]O"`3:TDV]L+ %-pu_dZ9J?A/R+]g"h]EKEfF'WDrHjhkqkuA+tQsh:FVMBed(d1i^AP+4cT/]mf&hoGlI[!ac^9KE,Ir_#%-cp$[;'pZ0\28X]pQC %%b.U8gMt15Jb*HI8)A;X%Hn`sJ4H:q;&#TaRjV]Q@9G9UCJ/up/WEg85QF3eX4nf=Y/HOgQj1d=a1F6Lj8,\pY@8M^bug$BS!gp; %_4gPB<_im,Go;M.hbc7/_>nZ$KVV6\pM>pS7F\.[U^-AGboM%sJ7&=M'-(dh?6^$H5\Y\4CQf&>oMY>/I//ja$[QD0e.>krQj4lk %3!t%$Sag^H.5gbH5Rhao%N%:ffYNpXS.D\pnDWs4A9(s!V:pP1=;35p&3Ua7R33n:$hl!u'0-l.armj,RY$-(84HJn4kTD#S=EsZ %F69!HQ_jrA$*O\93a!JA9=W9@mk8k/#M;$4H@7;^NJC#H''mF9$u:);7H@NWs'd:]Ya]*&4FlgVchH@7i!f1.r2V/&MLn3Cgt^iH %kp>)d*9Q)V4]8\Y2!07W5f+R@>(toO5r$bgP)tE2R2kd40l"&ET\(g,]U;CU2B[7WB'[ %:SHT&%iar(dgHlTlW;bi2,"9rZc+L%DA1kOTrEA*\m-_$$T?t&.2CCT$>\l?`9VN8L!7Hh[o:9-W9MG.@d+ITS(Be/%J3S&C&!F4 %.Yg*ml?W2MC+>]6dMnkK'mU:C#m<,ZA2Htr"gN5X%#j+k5[3oUG;0d)H/iOSXUm]t^W!K%(*-_Qfsn@d\@XRf3gnu1YDlgsP:s"h %Ta@>Q2:(kVUs8d]8l_1"E[Uq-j);iKA/q%FK$fI\I\ug\,*8'!kn2 %(i"mEV/Gqu1.2p4X&I[2O^ZkiDP:]IhWKh)EtgCns/Q?Yotj%s)s'(Ea^I6j65q\r^UEELIFdk@q.JnNo_#0l^7K"hpSQlpGX4Tu;MF^6%h!8Vl20Ut1#=B/Lq%329aTf"$=QT2.AoEeCi\?P[>+n#5X%u(Fd %)o+Br2c,,OJ\mmW@(FQUBH9X(7>[kD\q<8T!@+aRF=.QlY;$`8:?L?rT7QM$7<%XE4HrKmD"5F.$fW?@)p3Em)0?aif6$Z&pV!A> %1GVD#E^V#m(+f>+S:0*tS[5249/@7-qWgomb?e2#!upX`qHfLUnDh)SOu7TAb](X0=(]`C3";NI_6js6DstmW1n+_hkCKlY_8^Z` %C4LP(faaqIAZCAZ1W?:<(h/@@P!i!=MCdGAN.'Cc=.\c^11JA?96".O&)F$1Q&GDs%(=4K_k@b#_&5Za6S'ACZ&Rk5j>kT.>0akK9j\NiX$t9e"+Wr8h)ZR+_!VWU_(_p%.(j[?mCUQHiZk>VRN#W4A9ddgZc`7I;u6&U'C/[Fc%ID7:);"b,E5js;/mbmEg!VH7WnjbY+.gGcgDo3o7L*NpAIsUHB2(Vs %NQ=0n0i&a@jj$oH%7D7#m?p$&s&l_g/=#1PjGVZ#K0`U-\*Ae_@]cbOX2Jl@<5,!^8V?-`Z(e\m.]=2&k>Kg$Pp!?NBZmke:Kq=9D5 %_[CuKrDlr;#R1s]e@NPp7qBjEf-B2oR0\Ro9#,rXUZHTHBmKWUAe2Me*LQKRSF-S^G^6%j2"GT]&+.QiB[6IBM,h4L$^&Jkb[FD" %EB7r&WClBDI*[2G#f:PPj%:Uo"J,Ukm:V&EQ`UU2ppLE6:7N(eb0C,g*iqe&l)Zo54Jn)S?dk$rl,:W_jjsUPkZ"f)qe#S>SFEX"Vr"r/M(el>g!oZ&;=)YK^b[Ls@rJn+Q2ds.!S"?bFeH[6#1QKG0`0je8rnLPIE@Ec-c(KLrK %#^;e;Lb'`'5o.2\>QBKNUk#^mr8hH3MVj`alj'Wk^H&i$Ut %h11Y5=6'AWpI\SAFI8-M8qhp?;LhhRPR-5AG.E0(G/b?Q%eb*g!A:Iatis4>B>5iIELWjTiJ+"aJ=],6GA/_m9]YQfN,*F %fIcb.n!g#''ndkrRF.::[;TcNn#5q)#SKHTed`h#N_EP)rJKf!3ANAf^$Y(H:6#RG;E3n/p91%>[j+KW^D;9J %?`kh6]7ok2kXQo2,Y8Mq(X)@OZuF/Mrj.Xq7,J,C\TMM %U1+TUoOcai$X>]f$q+8ZOZh.'/PI>7]@met\&j.f*;csZc\*qk60]@t71./.m6%2Tc4m]c_Fm$Mn]+S@Jpps#CCQkL9&NhqdEg1i %+-dkCkrQEk-dnK)^<`Z/>k[To@EK4%:dk5&9<72Wr(fcbo4?:1aP>hV).>@lebd.=F8X*?QMIHfhh;Da`YmLHCU9-4u;HQF5=6.7Xa*Pf4X'3b!8, %d5M=]7\%Tk+Ooe;E5f8pqWHbZa1ULNpddr3DGrK=3pFpoZ5"B]Y5eA7mA[Pq@ojXA0>[pS9-*bcml`4R3j8&L/Z3P<.pdo$@2"^n %E!&;?\0CluEq70m-LWNrp8;pbD*P6qOcq!0d8i00g/]?@3GDk/R&>ta0&dF_h](C1BWrDB5mePYVJU7C(/k$MY&Fu+A[k=)GqG$/ %U^qOc(KTOPe#8khnA88o'j(_,GQDDr67a.o+Re%t)TIU;)[Mm,WXUV@1NDT67HSU0_$Hb-9/09\;g-n!&:Z]%SS>MPY/$Q[Vr=\q %K#3LT/J"Q7p^i0XB:Ys$ukE=QK*Vqsg;MUR(L:p,P"EN[/#Z_tA]fC2Mk# %M;,@21hp[Mjf5MY\9RTGQi4BMDp85cC&c<,#%5'/"5%J7>p\PHH+X%H)bn?2cmtXh/PX45/rQJM:PY@cNj*odJ?>:cfbdi:7AA=L %P.l&YF#25?u]'%Z5&T>\r)V^'+" %9rUQ:<4hBF?CLQa>.TQ&,b*mA\YZ!'1'`,Y4Y_Q.i7WJ[`o4S$VVupCr`MGFdfI6p17tFS0TA4uL6qn>?2H`=BbYKl7@brQKNWWj %jaDQ,TD=G;_(6UAe=J9t6^'g?f0",W7+I`5FU%aPWl!Hb%QJo9q^?*.5+H%M-1'ksOUsHs)#?".ENP]D8>pY\OE'BIAgl=lq,ZQ\]Jj`b6oFdit;.NNe) %VFJ'n@B*b7qb"A0'bgIT4X_!cg(V+\>__Rt4T"DZ]7;\Z%sh"l?G37tqmTeSLKtFZ[iYGjekk0Oo1-)n<>I%UK/RUZZORi([Cbe-/6/"78R9<=Z@+N/3q.=50m6CuEB]`=1+:qKoY42G./lhI\]=Mo2VT/&6$$rOg([q9oV:l7DmF&f).md%?UoE728' %b@,N])TlXq:s7/[cMO+/4=b5j/YR&s)4R!F/Ub,[VdJ>5f/pngq,r!&/N*c:VMVK\A-'Hk$+S'K;%BG5\(h.I'%rtc_@7R4p8!Gr %?(n%Za^Jq7&GNil#Q]g2/=n3Jc)#O#s\1$O+5Y>q/389QF<8[OiVdT;?bC#Kos'_:,nkT*cSLtY\(G^EB.PGS*%j=Z7uc`'`eI/+-MH,bAGp`mXs(7*_A;"I6Xh[TSg,4LU>S6ZD+6Pu*2IJ8!]a%CkT<)$BDC,2UP**$Q2KD,[X, %FG)VnYmWcjEA^8HlGjNAHh[ILin1FKG#Rq5=K3(\Cj2AWp[.9?Y>Z&u0o7U/49MEaaU&DRh,?>I-C'<^!C)n2M3gLXp^"s6cMY5Y %]p/?hk1-'rOsl50$%6/4Y%NW_BNPC-mboa_:smZ3:>4$cgsZiq!lcPA%Oa&Gp"_'D[oXKa'D-6=3ji7,-ijK^[ %;n)qMV*O+2B)R/$^2gA?fsq[;a2i)55j=g'0L@&_n8.a7lh#jqqq95c.CRN(;:bH;c'S/D%>1Lcc2ELS]@bmb$.'uaYaY!r8s7Bo %]Eph"pB!S[qC](Q[kIWA]b#P8]$]A5>cYhPQpOoE5rC30)8^E]%-pOG`NtEO.>F`DgW&/&EkT0@"'9-&8N<^QiNF"5o-RG#kTlm@ %-eNg/a42jn,psH\%l8(FD+3F+6g/L7rlaW0Pl]DqAQ\J7l%AJG//jTT@77DhXh5op4aCar=?%NW:Ss\1#^ho@`B#L*^A[?J9=+%e %9a]$dWX7GHW$sn..RDJGRF'KMcZ],'Pfgg$8J44PG<[P=&2u"#9JV:)QC9n@'I>^*]O(8,EKbuJ4+4Gk[ARt*Hh_W?nFt*D0kG,1 %?XN98[hBC"7V]L@U=M6Gn2ZOphL,K>3NLhJ13!J,d4=/YNIt\Vn'eZtI+pD>4QrE'$)54!@-!h7>JNJ4(?a&LLu0;oedtL?hf%7O %4oBPPIqebm\1^s^lf@Rp[^c[Cl`(mX5'hekf>;+e%sgnIqfu4^Ot_7pqVd7[<&D1EKdQFo %='cZ\^&,F=Z'Rk\k,D?3m)&pM'n8IZRb51R7u2%,Ep]B8@cE8*&?:`4(;QVjH1Q/Ai&[31o)Vg!(_N8q,^T@#NrOKIb23^1^^R^4jm,djmrF %dq8G[hmR;p8R`&>4RcDG28s(\`*Y'%:"0cdnqPKp-LSb6G)ZhB:OdJiRRWu]p'Q3q=[pD;?f@J+*+mRB.t0g+t/H1Q!CRr7[1KP,>M%HrG:p$B6#RAm#ESt;Kc2XpVspYe['mtd1mlhfZmWY=%R/^bmN&&Xup?'-hW^#Ysfr2k-ZUH)1d"Gkqn %RL9g9q0O7Fae,P %`bg%TqpQ_nnPrJl,4%R(9;Vu3dl+!Q@"j^0ifZCH";&0_jr2#'gHt]SPDV@D7ra8.M-IH3,!3UKKF+#u%2AXX[d%eJZ3#Xk^#ACg)C5+Qg([Cgl,+\l.'rML\(X@rIj48C%AWN(8S+iMH4H'Vme %b*e'fML([3Edqp(A7bhSH#ehjacagWY(Ip)1EGDrg_1tja&VRd+iL+7qf&9g@6edBm?5c:F[:#/CIr.Za=r':aU+jAaM(bT&ZXcD$Z;QHT0dJ#e %&j\`eWejqK6D`/if-3gO>aXTCf3_AS@osoDEt.e$VeQUA/[,)\'h;_P]BYB*Xbl(aPr\tdHJ^_<;N8/#pFHt*=1!VHFXc^3[H`+gCNeR)7KOl`*-ar+3?!8,CN9Y %WA`Llom;"",b,@n/B6NK6qn@k8\GF-7uk_*cT.HRa[?@>fDDV9V`'A`:3&$[9`qf[41Y&hO5kN^>1S\.fk<1gRS/Y]C160Z*SD4%k6AA]jDdSDc\L$#%1Dc?Z@q#"l,]snEJ)+ %KL@+#53_#%R3>10Qs.qTen\d&E.g8?WSA.&.BSW9?XqT5j %-(mm/UU@E\_?Q@I42R]cnU$)!X1A`(H5.VW``j_"jt4#.O#@fSSZ2ZjHPXI[lp$B3q&ppO\r#ek0'?*7B72jUZ.B"<^T\N./\rjIR_^me-SeK_2?[%:.AKp-XlY!h;J]f2Z:-pi=>"@>Qj'44:e[k'4qMKJ!8Cb6"\cERZ %N.p3HmY$1CLLQ<\_"E%GS`'cXFltG_lQ&=Ji_gCU#3TK4*=%C0>@-(-@>i:F>;GReQ:r(ja9m4;\EMCM;(eYm+eje4La`uo"s?"$ %4c\=Sm5guWmG>#t#q&LgOes5;giK2Q"3O2DlP@Ib1&3r/84nq4CFk'>JBm04FJJa!-4A;o!f04bZfGZa)BAK6ca*(^8r>s4rg&G.2&\jAC*)W1W)iQ05OHse_E^VOYS])\4$R2GNk %U!JNNO@bO:Bp6r\XU5]n1*"kWJ?QSUgt&hKg/50:=#7T7 %?Z*J*F#$Vc/ZQA?Mo'Z>To-"W*j/^0D!tZ/#KI"&/9r&icYZ,WotVru;Ob=P\,i@sC1]dQeO67cXcUD.F5q5%Stk+ZWs!`rZ$>$j %^`tdk[V]FW"JuZol[48*fFGbKF3gcREL;QS',A%3UEumW]+Md;<BHr5\7lIrsp(?]fpTa^q#; %mbOpBOS=l">oi[X;IAVF+gq_A8E]P@2oaE)U9LCFe7L1*JamUZ]5dNqC4N04S;*_I@%95/bH!FRXgoO>ZHV?/`W#>mG>GXhbNG?dS`1Y`Higf2K31R`I %=7HWbY#&qo&(t!MY!hcn9o$@(7@=`E;Nt=jK@kR]_?a!FnU&'.'qJSR$g:_.M=l%5>L_UGH,:EsIT;05dU#LRQfV=ED[ZC?(Mfn? %q0E:PcTLXmP\UsX+tf$BK/gJ5]jU#CU(G-2SE/j/B?q]^.pR*:OZXM$=CWma@ALN=oNGlVNTl&.Ac_.aSV2/Z._NeZ.`"%=@EedY %Lq=n1Sb6)":?Fu8cO0Q9]LcqKl1_ZmR4Tm$7X(,b_'?kAB]dJ%20o5J)\&Y&R/c4bc8ZSGdn_#;:7W79h]_"\bBc& %3qHf2@mQ;b]aUq8bAi!R"d@PK1pG3iAI'ogH&AWgZp,WSi7]t5:0P-\:TsR@^bfA?Y$=Pl>E0`:mWt-W!lWRBEsCeIa5HS;E1q"L %&kR4%Eo(b1,\KPp`1_GDOnSDkD<2q7#Y#t2PB8hP`=qr6ienn=ltR/V(E;PPI2$g5(TcTDgrJtK%Fa^Z^DNg2?e/"u$k[XHc@_WNX-0e.[q(Ep4U`q6k'O.RlL*^5:s,MR0'KEo&(EHUZBGUO`[n5UK)K'F[Q-FVW#8UqN*S3B)[CK420iQ!(Q5*/H,K %'R85K&[&*3%h7$!#SOW"eZ1LsUA]ENqO3)b%\`#*b;9.:rP[u_LRi2Nl(A8-e0QMHPUg`L_J?5"US4B$qN7@=T9(Sf<'V2F:Q;hk %3Upq/C%)k;g&\P2'f%btUq6"^e20')fApF'/_>E970+NK3tYnI&_8`GX0*k.):'3f^N'hCC9:fFQfZ(P=+eq*b8N+lgrnY:H@(:K %LoS\##"XV7S5%Dm0Yk"II@EM=-Q0+1:Yd9\[<#o$%^X0XqVP>[\,&^?i@W!_2dQ$?3)nL(%jWmLr8d%n-2[#Q?@+?YZ31%# %8?6B/Bl,*>8V,b>FARJkc^K*.(tLRn=^/L@@u04!=(7t^SPb1qX)YLWS'2B7i/>45R\Mc]3"`iP,B[aQP+"6/Hq)rer3`_9RTIk3 %Il2[]&*qU_eEVX"i/fW1:TZ+t_r[)%E[<$;3p\Wrh@$$KIp\DLQGd>Nc^qW(XU"SIqUP#G4F:Z$]XDA#;ejD]l4jV4C%a_Gr'*>u %F*(n!qK@T\b7Y`*3:gT,ZWpPH!*bs,IS1_Lj'!5[?8p"A%`jg4P8$GRqNWXH95nFQB?_W!1L3NW]hTAq/*HFL&K-9U%d,JLD:'8A %/WBZZZF!a6EF,7P;'9iD\ZC*hWip]H`^!QQ8VRqs?RS1+sa_L0Y(;hBd2kLl\]G!j%79oLkp)9.0F6^q@^Q9?((_Oig %!*`/_q$><")I5gK14._peufDXNNJkMm5?0^(d_6q@9-/cZ@OIY_/Za(2((p^-tb.\=Cm\2'mRo/ZR@$bM"GS%q955nVLdbg4K^qb %aV*EMR",Sn(_9`L9H4TgGK^KaP(16(flX3m^.9(:r\YqkDm:tj1BV::H\&/:!CH&'"O7WGB?ffFR^]HEgXmJ^]o=V$)3s1:J6\hm %MUC)b_B-InmgK3N<#W#.oBb[IMU87==k8/Xdn+X#KFnqr1q:sR=J+n?4N9;+G`#V2Fsg:r3mKLu5u4N$)pB]Df[gd:POHmXr`%8; %f($>Hna,5oQ3N"ODKP%b6^5n](F/AB&9?)YitL13O4lsClB-Q;2jWJr\d/@>([TY"[iVO1H>9E(h(Cj`(#DTq])TI.o49Rt6O$`F %?P2V.J*u'2P38#f3-;u&eKo@8R`C(43uM;f-:]c1=`Z6!jiN.Y`bYM5#Fe&^"BMjq)>u%7S=/T8?HS^f9 %S.jnL$A?S/RuZes"7T:=>1]]Q:T'N%/<26+qfGkI\& %CXI[KSrej&#/BmkM6e6VP*$N$9:El?5Zc^S#MAQI(=0Ds %$;`]egUh'G_FM3>k:sY:F:V[PLYFul+]Crn>b1FX=,niaXK2Q&?6,G*-n$,X:#9dH9F"".;Ph;_Oa[^R)GB'AR+3su;OAG6"'9'Kr\`4t;Wk6Ne#a=j[+l(+ %#[Qoq,$?AH25pgRRsKS<;DJ$&II^fh4"PnNS^jb=eG(-;%7,N?dYqSM"uJ8SBs&k=N@jIoh!Z9Zq8tUPJP'7GdV`WCPA@h-")(qN %`"*)08&TUlBk-#i]dMf=@h,KCoT?s`g>M-8V %VtQS>m?Ub#XXdWH1==[u@1_B-X>.YB/G<7J&W#4MRa0rWS-C:-eBm+41qHVX-C0"^YSgg[>$8bhg6[RD);\br%G?@M^&Z@Pn47Rb %o^$U\0P0p_den+rXoNHmht$C\>M`kmaO9JTJ(t`jO'/5;?#R\tO8u-\;>9nUDTB&[f1iQX#p"R8=CS34cfU^4-bN^/%^j4b< %K5?L:7*F:SWVC,PPk!^I3AE>()N?_X4CP.8YjbX](;`)%&d[59iilYnG%tXN/5ulqY2S=:34:hp?U)LQ1S"(,4KpASA8sX-IdcBi %<'ViKll-$=L\Z:.U5u>Tjo!V5`,Bs(hr1UBZ"lOGo@-^+%1qLg;$8d\n7sERJ;p@FX<_=Kr8atZPq_YaKXJ#-T)gp2gW'k"_oV?=YdTr2g:.uMd[PK?C)s^7JL&\>_Yu#1K3Yd1`AmFB:@>sTtMKePOZV7 %p^3g40S`;*E<_]+gHG/81_I[?@e8%pf#l9!#eU.?7I6QLcf5S-CL"br=bqE1_r-EKW_qkj*IUf3O08q=lJ6O%XrZA-7(b[Bj#"K8 %Z;DS_SZ[spC+0(,e3DpEC55Jmk;Y.6`-^`;O@pq$,10k+N%U#K5P:.d+_FQ@.NO?l?@5^K%=csT?"XT&S=G9XQ06%1l5Gt+oFt^p %SqMDBLVP*+;omj2,G2tr#a[L1E$UaF#e&O#/4i_hf_K?(2KI4V?0\^F9/0:kcb&$MM8eBQ$W4ii/G\8Zb\Yj$L3H3e_P/A$G?aQ,T_B1m[2;QFtqk41b3bCM>P6I\e_d*4M%c`OqP3aSZR218CfWKeaT`*=#"AN9Wsjk4+eY! %^31gAaGeqrD6FKhhO:UE6>@7]fM61u]b9/PY>;rbIeZADfpXk6#s47(^c2h]T2]-_lmf_KX`2gQ8)rCu.N-]#HB/KFMJa)7gO7Yo %Z-:NliSY=,(B<6K(2iJVcB*+Z]]42^3D,YU!0u9=pAHg5s.:Uaob=bF*)BIK<8WUa5$q94,%G]omq_ %gYHE!+8&@ka&=\KeXTbkcF-a8<,`r0&9tF\9*Kcp&BK/L %+dGdAPDP+RhK$*Jl*H.:!:d-VFQ5D^HTG6JL!aMIMU_pE;.&+`UcbBTcf1ON!:PghL,%r.]?-f"KX[+p_KbXq/,s2=Ca\9&pHVKb %fm6Vu`/*6#K%FRXL]-r-j^%kCk0P]u(Snj$/!=)=FgJhSm&NXCXl1E=&+E`Cq_chLf3)-q'>/#+(_0W'2>jq_SFpPW<:b[Xbq^3hjED3>)cKf%42$KLHT%Y'23nq8,@l2rFd= %lq+jO8Ef7qQ82!1O8q(R"0LkE$1XF7Wl#b&aVQ[TJi*U;<9?h>4uD0FmB %mc(Xq+6Vke9V[[%(HqrD.I*Cn,jt8I/W#YO[:N0GMZ>:Ot?[r@;iDENVs.6%_V_bA!*J).b$DqqT\Fe&:"0XTB$\h5'u %QcSB4'i32fGoMHK*]i)"%d/Gr#Cr16(/447EZH$8=HQA@#*L7(!T3[R_jmh3,)!:jW1[B3To+Ck %gQ!^pr/fq#OK[qX6qbaN&nj-[aX..W3IcN$"F?d(Ze2Cd9o@S$dH8L\]c2A%@rKR %#*ikUG58(TjY*q*@5M_k%j:?EbR2JK)Z8(rLn7J!*@AY?.mrQDe6#&bG0:)Lj%=(.Dboj,]S&<9)mPA>R%$aY`FP%2aN'B"qXY]Y %Ss&PUDeTkC@J=2QY@CNLIqcBeEEDXQ6A*V(>uLB_2idVlFC_LU8':^i[iF!Z5s,lTq%C;_9iC\%%Wg]r,=_km\$DZ%iRP;T3Wj>N %^9gj[o6H=QJ4GIq1Ur_u=UD!7*^i-7>qBSd3T+gE(PI#7BGk[7THdBl()K=hi5T/6R)Z9u>oIfqmH+3*JB-,>gsTCKMc@V<=P-5V%s[*>jRm5\sCAi&FZi=f#j@:aLQ7M,i>IMjn9p!'M9GSo8OHYF53_O,[]E-,Q"%6at0[kBYbXcs'V`!DB&"f]J=(jfa'G7LIE' %jFsb?CtcZ4UN`52P=/``If2gUP4X4f)A#^+LG\uoQ1IsB3\u1`/L'%bG1e"@p)t$M[r4>9Lk[#+d;2P"iE98a)h<@tO_9L]1Dd#` %)m@hP,;c`lYJU;,>3i]h\60.EE**".0FXP7Hs9T4?5au=`K57"FZhH^]_$C@c4C#8]E\*$*HHe8!b]PiQ`_KY!ooe_`SRnk6KOS; %.X\k-/.2,AX\si^)qL7F7d4fO&J@E#jO9WVWHQdtB),$Ba',W`aZ-70$f+N'&E#`L^UQlq^n*&[AnW\^rbtI`1($u=?)Lb?Zui'L %?[_Yi;Fl/b[H#RZ&-p=rrej-O11G7=bbE_>:S_%QWE9qIlIr#rhH$0;oMk1j7&X&AeNhfpCf()1;<_+/>aJidH1h#\q[e+Z,mS10XKXY8g>HPh#[?Sbj %nlYaf?/HE2@abm2>V]rqo!t!C)%b\Hl-K(;6UedW(-@``9jC)t:(FVh16*ZZ^7PU[RnWl,C2UD:p;hr7st %RX%bEcgOhs1';NICUll'6[SEU\SZF)VW>0?oi#cmE"Q]#ogi%kgM#mAf#Ed^r!J2O$#gp! %[kqHUcb([(W'akXis:U0R1+DsYA9DKr^6),=Y1[bpH"a3km/r40+tJ500"rfPS>)eLTPQp#A3ZCA@N8WE]%[KMIBf^_NII;E(EF; %0r$i&Gh[Lul$qo#IH"N5iB$J6[fO(4Mb:MLXQ[O\NVS@n=&\a+9lZ4Y5MgIX`,dO<%F[l2FSIB]=1hS+h2"fZ8AfG"(m9Z-OfC-O %*;5%k936/*`7BgcMY!X%QV\XPL.A2%@EC=6QPT?0=lc_4kHPtBPme(l,]GMVD!>h!>I=m$6F;UYlgMhoFU+fm4-TLP#+lI8iH\O! %!Sc$HA%pGq3_L\$I0Q\eJX4J`X+j45>%HUBK9C?$8C#8uU,8J7emRP1K+XXdql;lCI\6H=l_J`;&J,o-8q.#>HDqpG)Khf!R`?#qB3WN+F?HT_E^B-Zmo!R2`GsZ0#[efgb/3aHcaWPWN4t1\Q^o4r$>"XCS":* %aZ76nDNPf+MD(!2FYC,U"+SG@^#)qtM`j09P!/tTANil;QqYW('Ws8o)Rr+GGr"ll$6tATuF+5D;XQ %Y?a=!6Xcd1Z9!`>5nHp:c?I)#%H+N@TN3[pEsMr!89-',.MCEl3,erTMr$>f.`OTD'3(T:mU,@6H"Rc3#qs %/lb&9F5$bsOCNs5D1:Pl6o*Ws%Nh>mT?uJ(R6349KH^gel.J.&X?p*6Pqm3bfb(4lK=aGqbkcocI6NB.dJtdmd5O>F:nh_/e(Xo@ %3qV+R_#V5!NpIAq*iTM!hGVjBS=):+_f"fnW.p_Uf(J']S(1KE"Z4gL$o[f4:l=7RK0d*ME$/UpT!!SEF1nrZV1;Y+Hn,#&Km:VA %/h`(k0V]3.CJ,-D;D:0/M^SelT9mX/c;KB:D%[Lmb6]?:3&26,<+J=4bBUaM+XNT %jS3V\8&a7;Ze;u2_&HlCco2OR)^*.#oub@UBJ+kZ#W8/[YHE1E69Mf*M&a[g4r;af:c.OdBemf]+b9 %C@*O00_.kl8);`f*s?:67sd-dYOU]a2,,c@DS4&l<]r$Id=M-#a(_Sm8Wbqm;134@CLkq>XpG!FnYm_b=HMt\rP0=_*7I$!oO.hV %MN]5qO\+64*!8m^3u+F>2ie!S$D=SaMtAbq-+\GLsd'rA4YFCqdpeH(26.>6JD,1XP+`4"`Y> %4=Db"&hQi`kQi*bl+]2%?+G;Es#Bk27f&oN6K&B9n;=["I^jg0mmqFi0FhIIWBu^C`dUZV31^+m%hD=ZM;lO?e580br;FG4ZFA3# %h<$;4jD-j;()PBb"eV&C#(.h4&]nE>K+EQhn\fEai/%]!g(aGqD2]+YG)V;%uS3&cR\E0@$L[5Z#_V:MliL %>8Lg:ilkN3]]3mfUl6,_0f?,@lJi"'eUsrW[%u\Z"_bb>>4^MdM3,_VBmL'Xg)6X'\o*,^lY*&i.eJb'g-(,2@X\'?mN3o*PJ(2>5ocY=+E"FIhit,\2d$9?5_K@LQ.n?1U:Z:",la %e.8t8Pb_Qsha5AFJa%Z?Dbqo0#i_))[fRe6ln?sc[aLtQ>RF/2&LXgIbHU\MRMVeAXF7#O3:8Nc#W@3R]+Rs]dDi)VN]5()^AMJu %fVTf;qYR"Wd2D$n*NO7#15Yn!Ar78)BVb%$D+^a[k0K8)URb50`jkn^RCVQcb7*(P#go=\h%uuIqt^<.hA%Y:JoJu5eRiBi?Z"12 %025LPDr+&]%5ZFihT%M7S^[:BV+%ZVC\ssemEnA!@'7JahEW8R!ssm:V>$uJDY[RGDF]qNglb^rVAqY^i9En%U-DoqL`OL*UD6Y\ %4%@KB3%T^nJ]#e`.oJo!)9PdXd*Bg+CdkJZWAj\P.X8j%r%R*T1`FnB!;^k5IpYS/'ska_+s27!oR9U71b=Y6 %e#DONK#m"L&)a5Z"YJ[[KEAtS2M[8g#"aB^(9MWET[p?%47d7"1ja@/Z-+DP>;*%J?D#e2Qpo7rOLTC"QMGW[M^G0$6@D>MM4a[A %ALr0m[jA.>r*WFkB:+$&gh"g][SF.il=QD83p#JermsL$>g9QrXd2jAjna'$\?k7eDW+0egJJ&ik_%`_RR!cIpc%Y:aIKnh.":[d %8dCUJ^1d.,mR>Q"m.,[2p.U2MOORX?KXt?LjL71DaZCJ*g)Fd20'ZP@-a[cl\j"eOJ'X@r3Ma8^UIuV[n90hmj=uR& %U%D=iGn/H3W1Usu!:f*qe@+a!-YIs*(mC3(G@KPm:0T6YC9N-9'r)W)eTQ*"5VP;+* %2;6IFUrWGqrisPWS[.),c)+nUoW(E[QAZEKo0G?'0S3.2OV8T^?.;gXt04sLo]Ns\$tY2dona* %FeXYse-*%\`tP%&5.W5#]_9qH39W:Z5`2G,Rt5s64/,'Bcmg86BYEXK2JI@6quf'Rl3ZNW9"oSob;Ua!*+1r&K#6EWm"--O?XMgI %(QKF/<0KePomXt%?'^bYK9:#Q:TO7FUF5`hr#!1XWCcIc1rN:#.GD#@&O^I*H=;+)DA"QeP_HT&6p,MFesZ-SIphL@Q/X,$V!!7p %CfgDl%ZmE8S>LIk-6A(+OCunTl'Z-+A>R=sgXi$u9$ufn4U3pGONQ'#CVKR0X$3ND4!KYO#Ii*Zs4XUb[/fffP8JG;C@rBpaGnuP %^8,a.=P6Ll:G>,cIh/TEjaCOo]:uRoiffo$`DntL5f3qfd4Gtg,EW%-$*$0T_%gL!d<;I+`pRb>a';,r)f5'Pjao5GtT6G.[0UI;)l^&%+c)"%4*j/Fq5)pP:SZ$cX7bBgTX/fK,^N+@ASE_V7_a]#? %C`mNpT,),EpJ_8o%>DH_6snG*&KF16jW]#kb^hN!_8q"NHE:K@`VB<_:pO'XAeHK7giNT.P)/LE=V-\oi-ikG"iO_V2?hL`?#gW8 %1b&n;01ZlH5lP#`E5Kgs*O+1[ADu"T28@8Q_9Cp^3KR#MUMVQ9k*W9D`NQM9?^O`b0][ECb9 %(2#q%!l\,1UtQES&_Qa9[D>Uc]K[5WVDXA#dnT %VOsWF.2>;tCR8-5!ic;NYZ70/7semJ8T8fAI>F)p`9gg[RRM+.MdH'oPdaMY>^1jQ$`m/YVed)jrAQ9C02b]an(9*C&[X3TQ'jc=3Oi0Ge(YRR8jGFr)8E*u118Og=X$_[aDE32(7Z(T@OZ7$spe'oFP %D&H5f>VfbD>ts6N3\HASGfGe53OQf0.mC9f%,'Ck67W>:A/Y@]kiNnp-.M`p<]:US@0;1Gf6g5W1Y#qY<`oUf#_LjUH;,">B1T5b %%A[Q"'K)g0$7dn^mE2i+D(*lWJCm8k!b$2$]kb@\Q5+oJ\$XP*?OhNr@2.)D5o>hO" %H@lQ4@^D^FG"C"_[(>X@j;pp);bRJ3QA>/G0JYjFn72.9nLl3/YU,)O[WBM0.ASnB.p!1a!4RX6&Rcg$PD=]hMqGp>FaO6N*TFui:!%=_p-8EN %?.=4-3b]nu&oZMBHu6R"Xu*STVZPq.A>,s"A"]0g#7t^MHESG#OS'*lG+Bhe?Tjl]Grld=Saqgd93K[?X/tP!OJf%HSJd:8a?KuP %;&7>Mja)$:G)m28@U&E+o)TD[Ba[Gt/Bm`U33iT$0D.M139t3*279T`@[0Op+9t+m.IF0G.$O4-k.ZX4Yr!gc&Rk#< %_Ink]Q@iAH&77k/[h0j#/8d %op;'j[?e>+7j3q&q7%?J6#;7.hk<#l6]Wm@5mgR#=sgOm%O>ffK/0SrfpUSpoGnS'^(1/Igj/m=Mid-je:nq`$AcC!?#o">PUJn# %ZNY.',gcQaN:"CNn)&"jW,B)sE<8ni('E;jDncq@X/umi>``mJ*KmpbK^[$-GWR?c2F,3,\\b"+?oVd4- %qi+(SRM:Ue2jj+?@"g?rPL6Sggt\&SPWH6#6+H/=:W!tU./7Z#bG=d9Be$9\'h[/;mEJ#r;@*YI(Otu`fB-okp!"6BMNCS1T[;_W %-m=4:eJC?p;6/N)r8ZCQ\ANoKV23MN"C%)tR,La,d"p@ng;[tY&e8<=[9;T2'oAp&+]OYt-@ub`;?2+t5_kai9HgP53AOUUg*35S %>i"^uAju>`*Gu9YRIml6>G]*Rh'kZk\?SX>870a_Mo;H17YW1%MA's[:=2Tojo]d`S:"2j3"IkfGQTc.3XYs]SR_'B6BS5FP<22cn*#gp0E;1QjT!a'3g3LdS]%]D5Q+ %,p9'JG+\hXO$N3r2Z\'Z:.)0M,)k8i$*f1;FlbRbm&`r)qYj1"#=_8[g:ZfK;6Dfg[0g=e4Zi^Hcggb+r]4+O7&U)!$Z!GhCY>1fB,PpVQ2U:*M*gZX78gY6=1H`^g(#X0!;6cLlJ#3@l?N$b*c22C8"spohm_`VrqkdK_cZ$mMHgUc2Zg@i6I_X@ %e_UfI"b^dOIcJ!"$#R23_@KVQD->^,h7#3Rm %%_gGj(k7$=hFJ_63k)i,fD/u)(J!r/,4Ep#U>4I7k2;t#:5sNe1Q<;GJsdQ6g`KarU*22JSm[F %m*LZ8lYb2.X,!KcJsi8ooVb4>Ng1g!*\JPjLpM`%A1gO:_Nfn&=".L<%t!NhEHXsZ %W9C6=#N_dGAF<>k,j*mAdVitO0U3EPd$RV*ph3eb\]I_?B4H`NRdo/2`dlY8DuN?D9aE^p_.`2]5%pfGQFSXlTTkdj/G=?G%1:E7 %R6.UJH7_E,SL'T?&o'+cbE9E!<\#T@sApJR*q>C[=r`69o_pY)%(,>_\`_nGdV4t0*[&"aksTJ3ZNptdT]^HDI?4m\A` %-j.c&VF;suc1["_Z;SiDH0.A5Y(S;+p>>=+o2U`?cq4^HG_\E3Gt"4?R(f#6D;ZGarc7dJ(3kV/mVb*W$/k#8'B4#B!Po5mE')c- %j+qZa@1a/B3jIRV->^k)Euh:;&E.dN([2!na5urgN3@D'VF!\iPESZZ>Z[T:qhKTK)E;bR)XF?-TJ;:D3]hhHZ6.F]*+$W[[T %3nA_jXm^8AAZ-E!iO;!a-9Z:-&APQF:L=si>es)/NEV,1r*"s/l$,e3K2BPs(r1s!R)>U9hsP]bgSM!8X[",sqsDu(7#VlmolZ#L %h,@J6mmCdT/Y+;"C271G;#sQ*NSlQ^2brt.^>B/UUNcEBlh:;UhVc`BT?#=2.)h%OJDATY+&jM%(WFqb%nU*/+0]`n=82Uol*5%!2bg>BBtW%mbALOVa5uKj9(]p_Na;XW\Z'Y#WLYMsp$u:o8l%bq,VSD\>KZ+*I:te)$@YQjhU[]LKLl=d/RfftlO'h>5T=D9rp3jQ\ %U:q:cA*PiB.;L"/Nf`*)gAV`=;7,QMqeCU_!i&sUb7@dUMef$38Zf8B'5hD1\%%?E@2VY:;1j]!!i'Uf"q3qH\s %FOn&X;KEFI,[Dir1B`X4q1j'g@`9B+]H2WEb"$TI#:O;V^Qu<.3W2+&FpY"q(>]i?NTuI'h]#CXVV]sf#q/["BZC1heEMl:37Z"7=EQaKo_p)l;W[9\IT(%!ACk]>*.:ae6@p[V\G;PnES6@q$)V@':!En'&;k!9Ee)g[Esi,c633W)_[; %e4f&s*LuT(8);P;>CDiN%r'FR"qhk\.4;0;J%lNb4^JFNiW)t$dHmoQ#B9-&6U=\H8L,naXes1HG7R]g`I1;!^be1P>+snMhZN3K %TrT@gj7tNk:,l]S1jLrpoC;YUcStmQYZbaW2J5'jd111#E(/l3loLiI2l"b*Y)OfbL<)[8l_324q5O?V1Ia]pDK=,("[$Gu(W7*=]gnK@3^'R7g^g %-'5.!DthV;V#9%2TdD,3Bal!Z=mTmYEl!_+8ER;0@GCJu18C^M2%l.'q71E`+6V"X''mU,s'Wr?)sa27WI&n*8G"[??D&`7$'AI, %YXA8^M(gk+P+pSBI\F?P+iP9>OmPn@!X`&&2"[9Y75"aeASEC,sYPRbD4_bCu_<* %(b%=UjG.jF9>*^5+383?BJ6c9NdGg_r"@,,0HOD8:s3Lm7cYj:dj/>JN@`B."AfcUb[mdHW2liW)-o)1,^j*3\RtQ!3.q%7Ab*`G %Q#u,e7P[\\e5t#sE_3RFUo!-/b[*i/c/hOQaDX9??aH_MW_38&Cm3*KR4'g8HY#%E#VaQf],HQCG&8>l4R&*?2&H"^[QLWbk:X#'g!AutUid)u(2r,q7E9K-#&fa:p5@boG.Q8A#9T2sPo0KN'ukN7t*0@5Z""l&j] %?=.-gH#Rj*[e_d;TltJPl/ZgR@i0:U]J9uA=1lNS2lp]Ioj-.FG_]rF(e:*3R@4@7%Y]*237Y6J'2'A^NB(U***b:7%9eVE#FI!\ %/)'bnF48QZl=?<$RlWWo^YX:L=nM?[T8%-^)Jg"eO%\fe\Ln2`!bXkBi=QVNj/pM)1eu2PjCSoE!-a^YB>$/85Kpd)S'KXAJ@=M1AaGm:)ij$.XqHB4l3:ja3io.a:eGIdA&?q;85EA'!l*4`X_u"tP>k1J?lDp950ij0e$HM5gl_`j0b0!T.D!UK%b %k+01P;Cujq1JNjmS)QCFmS!DL.G"FOMb#CJKA]8Q"l.UDr,j6:CG/N]>s_]$`T1]hX(@>tC*XkBeUt$Na$6-&cc=pu2G+K,/:Xcb %PsGdoN['2H'd7I#80L@8ad3,[(Yf=`PmiF!np#6&-(daj%$iPq.j(^(%X6:t<%TOT-T*))d,c,k.1N$:# %do_AD\VFoU%^VlMhZR2,()DZGbSKm;4N+8.1n3eI_8s'qc0M:bm^F]BDb),kV[5&o+#;=FY/5b+393pJKCV)oqSQfZA]73%[6*M2 %?Nj3;gt&sE?Z',idK2t4q]/+R!`kc1KqOqPp[mqK0ok"XZB4HPYt0o+N<$7^2$*,R(K"8f;]-k]0bL-SV>1N_R]jp^7m^($Cb^CS3%Xq1e7pTBf-WDK^$O7kI:K#-+9&E^e@\hNjADqibO^ojej\o>+uKDI+'^G#H\?Z&-$ %ogHqjEIbDPn5[ctj'AW0<2ObVE7>NG@=Eg@$6s!Dr7qt6).lG:K([XeX*8CC957/qGXa,jDF9m*ld[]?&R/nm@GD3:Pkr[:LRa7? %,]TY!EHR,_'enm-dclqJW^o-`]8?e?0^#Q.0ZJjkf%-:%%rl?1o8lQ)0OrQA`fq@bTR&$)fQ]hKDY)SE5H`W9E@n#uN(n2lEaYE? %iho^Tj/-LrSi6$XA(=ejMRQdM#-hKiHR3mT6j]$Hd9jUMIZeiobZL?0k#>aV:%eKc2.;un %]GYbIAm6QNn9FKpYikcAiC%PF[8^.M1r#%(i4,*:4IB2q]8?EuZ"!^H9"'C1-"PrR>-ss3I-=r+9Y2allq;^=jkTDDg&niH_%s#! %9'=&nQel@_Q0aWi9,VL;A-9%:D@^=#MY?C'a$e5/#2"O>%B&.=O3q;PU4pHd>_m_:?i8gL&#L^l#kI`o6%n]Zerpp`c4ALo13l;Fm;EK6DH(P)M_CZ",(I\(-,7ELE=W9spq*%m-Fn66=6O/N$M%%gnj^LnO/"Gfq8pn2d&B]0QK*mEUf>K7mi %V,9:d;;q98aSNjoD=5E5UK)%o5'V7t\=u9HOsBWoaOjDRni^[U&4U;@# %+bb]=T5a>n-K>4bQ#rqSNnpT'W_6XnR$/i8H1Zd64S7h'I:dsNm0j]3[ua!_H8+1?i89U(PVS?/eNB8#(+gc/6\%&0C[MD_>".": %&\+gef(FCYVC?%ZB4ig?pNXZ77r:7A[bO37NKG(L'XHRn1puqgPfasXN".i'^4g;%4i2@d#i@S-ba&8)AJ&Tu[&=4IO%2D+CrHda %464RW$`4J1`faiO2N:`GMV7)0h>X6a`dAj$H0:gf5e"13#V[nY4U/F2=mQ<_ZnGp];ZBVJT^4m"kms$n.B)HN^XuNW4,9(DC),[V %DBT/^QFC27gt,+E8A4),'3H.p^\<@RmYk.?RIc:;aJ#Y>`dO>MK1oGp-Ko,f8r:+F==UDj4Zj%q6UYu&Tp\W)c4f-bcg(_$;(_#b %&G73QZDU)2_)A#ma-?):VO$E$qrrRiT+<(_FF_R`/4CiVq8\3Z*HIs1#Ibe^*iCb^iXk7J`$+Ap0^9Jp_C0jSQ9X!'$R;A*%FO-i %bVf#)I\Xk:_Q\9u$+?h@&NfF,=&K1K"rq@f_9C=IH7lmVW$E^q5Z1G[m0c]hu<QZqCj! %ikq4T2ue?t[li\c`dn=X04T_&5`PjrO^[C8E+56?U13;ri>]p[20H`>4Zm;:&!qJXtI %p_,hsG(E53%#aEDnc=+#e$YS>#!^.HcBS2(h/0i$J@0iRq..`+hX\f*j7Url`&Bo_VJ?F(`bmVEMVjoZ^,'ERgCeJT[/![Uhn@:M %ru\R_rhl0dTYcCG#&ipP9#^N/XG.Upn>PTrS-c-IQ1td^i]HbgAcJAe*IsrhU!_qpc$24k)jo=<:`==#^5Ul@aM+f/$8gdd`.;'n %]o)c:8]-l9(mhsR5[BW/1(d&6qY=phSeoY;bC%uhb[Z^9^3)(cfS(b3DX2/XM\p9#oeHT=ZL#bHS^">p(Yt(D`qeA?pSM`NrURQU %d$5JiM@UXS-Mo)d?N$E`53h+>an[i2ho"DhX9iFXn*$DUQOVoL8@]$-^)kgh7:Ur`m3Vc1MDK0Q+BkJ>hn[;c,n,D^_K`6(oZXRr2ceQ)oQ8A,c18'+X48Eqsmu;/'M)G%Z?edcue/iOV[pMUtl"Btj1IL^;=u?5L %p_pGI`n<69B@G`c4fqnAfb82iGc3Ok\%lOB1`ECKkJ]Krpm#AoR(:Wc %!`$a""rODLWh)`[m5j-S_KQ=;_;^A,g4R&\QSVNacdk54mN^=0@ish,T?\@ppe5WRcbYWL50*"`s.iD:;?*cRA2`fs^FL@hc.b4k %]=N0`qG)'Y;o#F0Y%Z/8FK)OADA2Legr9@Ac5bS^!T1qkEj'WbEl7f;H@=I[GerLGm=@>5/s96q>IhMmi/Ypkooc["1X`%g?(^[o %*(dtl=D%VNqUIUcDB'XhZ>Z-K:&2YbYK4CtJ/[9ZFU]r^Y/sX-;<9R>*>r,p$gjCdDjP9IC>%f#Hh9W"pItDAlmMp\^R$^qU-;c^'P0 %9ddfMCAI%LT;B;)*I=[c"p4jY_Y6#iC1uDeg^t"!akY5j!crT2UOAMR;%AW6$leu\M %;tZdg]EX?2;S"TD*IjCUCfl=&? %c%'[Hr_Ohb#1D+"iKndWZP;oGn0pouEEV\b>Wn%sN!-f?]M"IJ3RsUDqHW@AG7K\^lb\eZo'="73#>*I7d)CNIL2nhe23e6cP1_s@6^ %ec5%mq.3.rop;TGclOIQ`Y5)b&Gh1A8"NF7mfkG,9G,0/LZQmWK/>#\/nT![%QGf@R[>Zsa&=.mKL*FDf=2iT&DG %f`]R!i@>:fhR2&UMcob`e\Hu!=ZkJZZ\=Ion9+83X0qbA=U(4:\iZ[2o=E6#]U?T4/;cYrKrGPpJD.-.Z1nG+WRDOAWMS])2ga9(.@fb^DP#3I>-=o]G@4-, %Plti%5,+l%r7ad=q`5\&1;XQJ3"YiG*Mu!jJ9mjtqYJ'u_OR4mX>T;E!+p:Vlb;QU**H\G:,&P)g.(:6Rp"q,@/\Z8Y?c_2/p]Y) %A36(-8d^_fk.[(^EeSEfC3ptY>hY4o'gtpD?NZ^s.,@AU#(N85!)hk^gPDDob;mGD.IhL$b\I7F4(qidWLi2oIlED44lCeVD:$>\ %^YS2JRBFk#SY5)J>'^&)J1_eke0_n5#1&a@\f\3l,.&#E:n^q0`S8gr#pZ(8H0+6/j6t)87/*R\IKtM1'@K;jjg=&?2i%@s&JA/\ %@fp0rb*sd.e;^IR2"0e(!T[ZJ-Z?V:0'+6#jZ5O7UYg7W0R%)r<6&a,48W/]Q#W?To0T3:Ba3j7m]5HZ[+*31XY5aNrS(rV8<,qW %i@VSJF:C%h&!MG4A5*B<##KA7LtP'N;c#HgkH<"AZ!2XSJu4M["Bc/ed/$f:3aU>V#idDQm'`g+^MWdMdYDk]sW+i;Ho"^kdj/gEaNf^WF$M(s8BC5[Sf7-7[8>f9q@ %`&Y3-1qJ7s8a!KPpNd!Nf$[AaCE)e!68q!'TR23"At'YTLU1U:R.q:fQlp1o`a]6cPFa[Ro+,8(/aep0cGkk"ZgLX_9K_";!X!6KfoK=-b7@kh?+.Xq4,TkrX^b3RS]`8a<3m$j,MR6;:`4D%90O-fssgp^;E7"-qhg:.QHqrodQ:Y^nO`"YPd_qu79*gSdp %+7i=*G/YQHQ1qj/bB=B%S'<6HrN%Wr2D]Ei^3cj1N1TNYR!a`>Ye\B)g#Fh)JPG7(>`p.d;-?>.;P,_9@/,ct\XL^K4puQjAo2A# %HDH&md>IAmFYR*?.-GgrEil>M1\b<`9/E>U-U:^(Zc@i3Qk2&XNS9BcB=>qMdOL7-VVQH&jd;?*A2di\Hoj-iMN%YJDs38thS/Af %O)[%mo[7bk(l'a-L=BS%H=SC#/!7!A&N%c>>d(=Lt!Vp)-DMCq=Vf`=77b%Q_bB %>_hN@e%1P]CP(du!afF.FHN19(4M]lZlUS%d;64:gN#5.+bhXaqn,2me@ju?KbN1^\N;uCISF0C8sf'2Hab`mtl@t=5\3I+OYBXcKq?.ZheZn %[\]#Y.#W?e/-+.TnXh7:l$sGj<,l'tq=(Gq`eG:!LB7,#21O@KM>YNgk*n.O1=U)%m/*[Q[7<1DHl"@Qb;aapV$=4:Z$BgLY`!pUpusE&*M:#XL]EepZ(^g %;I7]!a7K%G<^3,>%j&O*>BoWfY!0qW?[;-W*kWU2eR2tlMFpl(#["KpG<2$Q]*fRPGl.9@2J*B`)*\s2r4S#ug#6_"aJ6pUX.-GP$[Hs)q4D:R&oKkAjI+ca8K!ms8#@:Xt46pi]hJch1omi3U1;F"D2maF4)9m9P59jndOl^-'-g %lWSO82qKp1>E/B2HXGgbYMo#p\],PSW8o+RH&-VrER@,^oal%I,I;/"GE)C#Z/J%iH&XhfdHO"Dq[iGW_W,DWI>thAnbGO'rt+p3 %1'A-@KSRdh,tDrNB09]gXuVY\5%P&qM;1bo^PCD!nc_*!mon!:VTk=-\U %QuP1k@-q>m)#5NK%Q;jHm+Ukka3K8>['Qg.boO8BZpJ0s*bN:8,XIddd>TZeDH5AP36Br636$L[_R=U %Ur'$&6GeNnXXpK0+:4%B@fSOZ0ZubMls"VGReNo.oGN'tc^J4"m`6R^6Y2h+YC`/ik^Q %"\9W+\9t%h1BZmna^')h:^cF@Km`CB1V-4s`%j$P?/qgk5DU.;+osHfbhD]NM %K6HL!a:8.cN$pr5Sd*pQl.eCbIXaA@Wj$iDgIP0iLt?ph5]jkL!(>aKOZ-(7JdFg7m[%!lFucV7^B&.&oZfR->RTb,KVjsq[.1b[ %-c@fNS4q4_e'n)l$q]Ed`ELK)AP5D;2njcTZnMiAfha%[IJd8!l"uqSips-cDYZB1f'*:HG,CnD`37fdF(=g?!lj3W1;P9[(lm8f+O1.jBPt-B*n&u++r-:oLsUKH>E'6lO*8Xmo/[8cNCqeT"aoq=UbO`a""6(ZkaoBC4M1b<'ER%Sd2C70aEHY %N(K,*j?OGDWW+uJ!ck+M.TF)gNa6Cr:,ap5L,B9rLgVu,!^:A)\>Fc>@YkoMFJ.VU[/_"^"9jN:: %;/m@lWaDGH=7E/nKN=1,a1E-R7g`YAjJXoJ_NkZ9Z#U3m0'DLh79Y>'KjMbJTF6^p0sL(`S(DhEb$aR')_6jH0J5kTeEP'm+(.+c %TC7=%[Gq`Doc7@9D#/e@937B"7anheZ_o!UAC@[pD?XNn?nh%+"um^Kl_hB0$_tg?s)\Ojid:ti_@a,@#]m'VOnr[H.Q`rk01+1V %Eo`U<1LnrsUcWM7hW4n)&==#>B^Tj46l9YP%h7KVf8R13^8pZ3n(7$CM^h_>lo5OWiE%^MPAsfdHa8Y0)uj5[E3#;< %kPP!#Uh7fI4Gg[eAIQU>E>0hSQ)k<$Z[ooq8o_7dAQ%-%>d0I96c8m=%g/Bf)6g=ZnNV.>\?($PQ#3W<1):7=67DAJb!NM'1 %Dp3%e"UCk[PlnTOaDimkW3@g)4,+>e!c$)h.#7%;R:JTgX9S:/Hr/>eD[XT0)1I8D&3o<9,Y(,Y4GkX4C).-.Vnkkq_ %JlZ8Ok$th:&f@i:ESTh5(,m#L?,;mhq#Ucsp5()ie3X#HaZq(;:B3dW+kgH/_!TnY^$cq,NDg<2C#Q-N1U\R=8[Ig"NKsBq4f\Kf %fu"85n&\3]j-8/XMr]Y7'.bs%T7+je7aSEtKjj3s6"B-?Vc1H#?"R0:TItb,P0!nbQR@\6in\rb`-(7PebB>uoI])$oZ>s1$WE%O& %7SbYdUfP^\.:$6sj#0"4;_=jMWInT[V$r5-+O"L+lK_uXba=rC=_H5sm""=mMg0!\CodpoYA!KKgc7`lKmODX@n.oI=ZK(7TsNjYPS<`R$2Iac:IX0LJ_*mb/5:l;&OE`L[XZh)/Gii!e(\(9T(>*aUf]g48T %;PBpUH?X5X%JHPGM&cc)a!mO^Z6K`DjHHc)W/E`F!R7qGrqB%gH7U6%p/'6fWYB/Q62It.JJ[r0l[H7OMcInkXn[jUlCR-Oo5GeC %P*T$ao&qoW#_B`Dr.lV%Z#HG_,pQKq.G@MQs!Ul37FiS>r8rAEoE6#9Y(KRZINQI@<9TWslX2^5dfZ\e>!R44Nt5&Lb-E+qG1SQ+ %;SZga#)a:$r=uKO^rT_?lHEW_QT\c*#$GCh["ZfFPMojmfMsdS10Yg$l?Pl"Mk:F1jAQd3C)1Xi#UK^;25kAQ4edZN^ckCZ9HuPXl@&'7"OI+*KoIE:fb]2pcBM^7rC`^eC%=biH;9mH3tHT_XQ_ffs_iV!;!j@=/2%M3.V(!cs?p.LDKVUp@?u-B7Ad=8l[@ZcSk!i,qmYbsf)C9iJZ1 %YLEtHqi`Mes(G5nR8a__R%lbmTnPCYP4=Y*f0aum1f+tF?jnIul?W95En>lI2Jpgj*&&FJdo-EIPoUE`dqD$I<_9!J0^h=RA6Vm& %l5LDUXCL!S+E#hIs")m]91Z3/:Qt[pJ*+ftD9RNMupN[O+kK@$,8]N*%rr\mD8Q)g- %Ng@.eF^ph#b]Yt!&/o4CU*Kun!cS8a.BfE5EX&I^W<)@LEc^nDBT!k6>5Z(G9gkT4E^0Qt__hVq0J"]sOLeSU&.9sNiFN5W_1_Jd %#m"YhgJKG@*[$CU'15Bj]Qmd41mOs*[89Mo'gWm;FB_tdJ6K"Wj'dY7BF2ucV(D@s)]OqkKB"M^b#qplZWRIRs#rjP'eZ/OgQiAm %!\,qrB``HAX3#Ei.^dCscU[D=LHh(.g,69#-QD*K@M_!/D(=hJbr;%IZ@7I.G#LI'F5AeqKt$ %7g5[d,)"d\==/)cWM"C!A]Y5eXVrTF&Jc_r-DW-tAsLc0L10FhOo7RUd_'n/"KK+^9F@=KNW5n7l= %B@X/d/4#VAYq9$Zj[uQ*>YGi4W,`D^%;DLBOagOWkrUp$Vq+t-J0b2tDD1^Yd@jY!b)U_j5TRe/eqhC?(%W-C@2Ha@W,di@b@ncB %@4H8qL/Z\(#/DE8<"H4GqBg`p)n59dKmT-bSi\'4J8uAY#/NRtEfB9#C%O(tWmlTbls+Mq$-&6"+\ab-?S,81?Q!e@5RI3s)0&tk %$G)e&AXl1l[9&[g=s7Fl4WqYMjK4aK^=iAB9?`Pf-prFEC:tHdH`"n7"-L-KP2FHO$00+4(O@>040#R#: %hZu2N@^$ij47MX'"UfoEVaJ5PR6L-qF>2)d?n=RPk_.DSMd`Z^S$"JMnUK=eT`Gg8a@:$OdY+S4Z'JRI!s1IN;4%kKgo %IIWPT%^XuQ(hD\C?1l6g:;p(nG]Dm%@F/bPGctu#G6EDGi$7\Cm5aKtk:@RZN;#K5/.0N#:.][9hK@DA6P=a.%V98\Z(iW?5b0=k %:oMDQmQt6_@)_0Fp`T]0X8qol>"XO5jla4fObsZ'4[n;k?nRX0Jo/Gg?j:CA@W#?J`W*X[i)S9E`t6>6UKe5mGr_XF:MtECD=bNG %IO+c]l!C+s9,u#`HY.f*h<82?[ej %_JE=QQ>p%&VGuhm=8%?1\a6VOK(31LE+<7o_Zff%plU: %KK_;hlGN]O(@3Tf1eCm%6U>BqXH"0!8!I-OA9AbQR:uJ(O`<"F]rsS^3k^NS]WVOLVH+@JJ7@CBhq-jnSYA`VD`>92=0=js[3,GN %Rn]\To8[A\pJ$YllJ5EL9[2=B4.O2=&hb3;B4/o@:b'7NYZeZ6[mi]Blc*\KfDEgk>1J)ns)IbB->t-]hi/o^"*BB`[7hl-hKC=I %qkY.^jSmt48YNcD;LeaEC\0_),U\6]bXj1V!?lPrp<7Y@0k"8&4191nLU\r%J`KI[d;GBr79IDW9\uD_+WF'nfgN602])Zpm(P*A %#XASr-f1Q-S)FJ9:fFHe'm5S1'6V_*qZCC*(7)p7=a:NEB@N$t!b>f`7\+^NdT/Vpj20S\41UZ9Wk2Xec*aHWo=_D/#;,0.RIS3? %a`YL%:j&mf^T(NuH3$Q4`s*Y!a+WD!]e&PNh=l,;k_N8p1%Mi"#Xd".GAhVZ:]g^a^o*g@>A;s[r>V:tVBLLW@JMQDXKiJ-daFR@ %HN'SNVkDt]AmLk(-ChRB\%YnCIt8n:DiL"H#f.LFL,nl?%aZ+so/\7O]&Gk#D$DOi0)(tc9RDE(#:Hp%\J#ap3)gAWq*#"BDiI\o %bWi7)!p;BibdrAIRk6@KLdh*GkQ''8R;Y,(`1TJ"hdR2Dlu*H?YQro78"nEhlVlCb %%`!Bj`Xh2E3?40?N_Hi/c8J\#.#6M:pV7ql775R8Y3a,n(T<;^1O9Q4nQXal[OG3)l]g.C2jS*QVHSer)B-17nY_g==Cc`EM]2'4=tV_f1/?q:FkG^5_C;!05B=k`FQ/T0@oM.4d0=!k5"`?4Z+V\b('d3cH@N)\q+;RhN? %K2po6$NSqL7l&/WN.^B:(544T"7hArf8KM;9:Y?4<5ZQ)?HI6Jg6riLs*Ofn@D#XPib`p!6G(f0$@aoq5O3X:9@([k:[s#&?d.YU %jiERO:.+l*2>\a[hGjX[b(+i,9;uDj>jVOVJIgi,mdCHrlAtbTV)`3=!k+l8J+sT+lUhBh%ORgO\c^2cD0WM)TkY[5F^&<^BcX.Z %#g?X4+n>ldcu$(TY/b/Qb#N45B+1kHHF]i'@GHcD+]WE0'X(#;% %SuY5M`N/fL'd\IEg/#TZ5q+Mh9WuP1&.5Jt!IO(SJ#Re*j9I2E;D^.]dCm6"jN8;B?LALAg %Pq,9pCrMDlJu7+C`)FQ"DuE:o1YVKQU7ru3)qZG2"bPss=:iuj<_3+OI"?]&aE%n%p5JFoSr!Lq4%Q3s@U^eTL[n^"jtT,C\Kb)e %qW^F"js3/RZLa,_)D`E-#g6;?qo2\j.m#a.`h]p4&b0`^7g_kE$[.O1a?\XE>0k^CphGM23rU8G1k!1oHhe2PcTHD[gb+#4eK!'H %DU!UCGp>!R.7gdm#+66!,+FMkD%%*&TcAmq9!/60`"H[j4,KM=WSLlfXY"V?ICQ%/'pn6.5k*Ukc<=94BeZMk\ji %cIEkA876+]0'WdfQ6$qt0\3`hK.?SI.ptfT0?1 %31HSZiGeD6/kK6b"PA5ck@0Y[`i5L1qs$O-CWP7CcW^,E4^(j_Lk)BrLYJYBM@ic9R1HD/[B'K(b2M?!dX!%I=Or1]V%s<_.\V?6 %.%Dfe&ZM1#DSMEHiJ/J.3^DGr1b&cE9Ik23$KsbkuAQ*_mf'a2ZNY#c7"_47\&C;V$(l4L*$#.5E+n; %BhA@PHsg!0TuXqg8.T_fZM.ZBK+W!Z%hOMNSY^/"5Ud3;HqEBeEmfk/Ll;B*pAp!O;rB;@WOR`%?SMf&n4kii^eZOnpNE'gB^NIg %UOO/\c@qV#,MoRs>V2g"r9Xkp9ls=,\l"ra8hLfg!K>K&dZ=Z44'YM_a:k3%=Ru'!CXFV2Vic5CJ62>1].R[e+?=p1m_QlMhZ'0p(hjs6$k2jgR4?RLk[$fG16u9@">dA8nY,'LV(FF0PEbO)_oso$&93#A6nerF^iPjH+`Xl")0NM]h %Wj=E8Z3OCoKe26''(sn/7;#pD91LE9'-2(fQ+?gV9po9]:sA#FlrN-i+36GH#Wf(WDoPOJ]1NIg=@T$bWKFk3*@$8OSBYYBZW;ZP %qhXd18F]-qg:*GFPVko_fO3KHF>=;5:%A3T;3q^PSXh]mo"'TjNDL$B&t`TA!F*dIWfh'@fg8.sAa\[.(_Sg`a5$%2.qH_Fgjr;O %BQg^=!*rd(?C2o0-RbN?n^O0e6!_eP&-D+HZrQblC(Q/tf,EEm`UCXEkB`qqje0.Yhe2bf#Y:GDZ^jnS'jobHH%S+j].9gAB'^5/ %Ft1FV,gTbQFq9hM4+$EgoXe!&DtLjreaQ=+Hlt-"\;jWgj9'u(9")C\1*7p72nJ1;)#?WE]b4)DeC6u,l\4nU--&1\Bs4>e#C>g' %b54I$]b#i=aM_0>nWfjH5\L'iID1l?T*a%Lo(A9FIA_0ol/-]Zp]IMnJUi3CW^"kaD\Vss=oO7[IjO&\l1tq?ri6ICi;JH %E"OXG&3%*++l!bFmb/"D1(6+XL:an3<B5ug\]UUN %Ki9$\M61=B<%oT/5ZD:P&e#V-c<>bBYU&#n@HBi*UMR_O9?E_e]@m6ZH;1?P1LFVbtQS[.uXn%025YGAu> %K&MuOGU"e(&0.lQa?+08)-IM%LM30&W5F.Sc9AHrY6<6'Q1W?_^%5/U7+OH_omn02-.6*k[o\1LQ-/thqn5m\+3;AZipi;0I&Abb %:nMYWkpr>$Oa;GLBjV2&=6fOF,^uSR5>]\02"_f[rIOfoA'&*BoT.N!.o$%"U&T]As!/:tOVE&%+1OoX4GXn\"V@hG#o?Hm#Pj(S %<5VGZiBdJ%.M_Ir.WO(4\4]h,74mp/(`0H9S#XJ\!68*@j!O)3ON=-'(X?'WDN7*4lnAQPS3 %X!l\cJD+"t*hWEcZG9\snH1K@o"40]$FO]rTfBK.u1_`:#2MG?4ur&.uRt%GmleD^pKC[DTU/@L8+0WHTVH %N,gFEV6;hc`c"8WWW.4$RMJjFBA\$emUSIr93u`hYDST(EQ]^Mbe%?H7:#Mb`-IR5Hr0RM.Y1n`6QbtiY?I_-oT[WDoGqrALF^Z/u%5@:?EE%%;Q*MZ'"4bgri/0XH73M9-&[C1X67FSgZf8oGnT^qU^VhckPFXM>-Z)Jqd3YHT\s %jp8&I*242`\DZt"1VOIAPradA]DN-40i$5XCrMeLqk)6.X<-"c*Pc5DmCC;@'?R4f!IQHO&_Gq9OgI0:+htcDhUgDjK)P7 %Un?gIMJo[U>oMCu63J6d91J$@bcEB4jP;"cD:^p:DFV6GF3'XbZ_ukEeN6muHD>_Va_f$hj1dpn7LMqo&ZPsYWW@g@R'2h2)L9eVi#/<2 %`IqB9YG/+:)2B&@S#!4Ria@bIXP_cKNN@r5bb0`OOIIq$/-Y]S&4W'b"VJPic4oWIUn?c+Hk(digm@SI>[(PUiY:Ll;.6;(Fn0fZIE"A!gWHL3n`.5Hod+7c"%Q[Qr?.iFNC^(l5%=/RYT\`>K;JmB%5BQT@l?@T5N> %A;\@GbaMP]1Q@!W!,>hujq[B,'kp@S`6CD7J]sat>Oet&a@Bo&D&pd'I]QV6.;_^FCp=Q3+ %3+k^F?\V'`BuABB73Hl]9!(LQaZC,Rb00$cVnF:L=\hKqlA+fZI_(*.4+830->#2+J8C.9Qle/c)cUfW1Dm"t3NP.kjCS8S..djJ %Nb_u3%\7U6a)$9Y@IP6VN$lIM"i52Yjj6?#h&StYc]We90Y[GY+bp4WlWd"V4)F98?F(3V0FGM744W41!"8>Sp00lqQK2bbb7sq: %l&po6Y)ukCaYmII'#7>,AYA41T`uB@JB,C":"u0\@TI=q0N,"[$%T+lB2Z080>e$nEY_j.Q=.ps %Sq*9#97l(s)0CEU\;41;\N"s:6ph9$As]W>UDNr=A4=5;8)6+!$o;X1?A$iFGM-A/V:1f!%8ghJQf;j+SNR"a942b3[lQio%(4FGn*`eiOY6Hh"%`'$WY:^jT5Fs/Y_ZjT277naD"77/lXPS4 %P"n_^1CiMu$r0IKMfDA:bA&^DND#;GJP.+X.^q*4uI@dE^D>K?to>]s=MGVcr=puY7/C;4< %>is4^<+"%q0!$'^A-bQjOa5/R %\()bO8lQuUJ/(&>R&^EK2p#t\$9/T.'2C\+A5dCZWt/C8(Y.*K_!=u-p-CV1XtY3bU4&-*]h7'd`GcoP %F71$Z=#&R$DXUTbpH]5_.NEgN)8=6*5=cSTa;eOjO[!V/?Y,NF"IU@MRid,KND7CqmYlDoQdM.0A:U6 %NXUSr'P=3&d0N];.UnH*N_C.J,$YHXVY#s^G)r_KYL@Ikf*6gb>q9Pe>A(X_V6N9=Dj+@&H1'=M]RC=S22W(+jX1oTSaQYkEJcfj %EIXg,]tge@?:k2Zh/f`\_b,N]V^u\4HN][R"A-O(4FIQer+Q?gZYW2IYBM;e1d>ZNN]:39;"Y=;2eHHke.tnG3K#2u;7_>QAaUfK %o?,GIQ,^hi)/4^]_^H+.1OF!]O1TU@RqNLbV1pdZgT&-:i5]*"&<@qG=X;U)IK&oI;0^=cbJkS'h(&e]TsCDn9o'>b+5"$T]Ru5T %be(\_9VL6RF.7CZe87*Jk7*6Ao_BeHq>KTYuUMClb%2iI3D2R*$!R",/;kE)P%?EpM/H %;'%O=j\u`@*O&hE5&&,U[[l\I)kKt2q_gdYi&N638RO`X3hOipNfQTWPfhe_r=H""Wh,WgHjZ5/"mLJsI&*M/ %6$%5e-`EG25>BiunrA_l-k1E-4B#?L<<-n[&1&\0dKHQ_#E[:^_@r4Idci<7CWZ+!R>gnd;H,i?cK?Rb4m(6I6[o?am=UZFj[-5K %F:!n$pBb8u^4eu7R %eoongC3]fH]/tdrRX>l]j$qLor^`fBi,!=,CuE\D"+VFU\aY69-!q7UcSRKahbp-@2$;!mFFJeB)lS+Li:Ds6kZ_b((jA$;3l3-4 %nhcUN$,Cs,=6S5,ok;E`It**nL3Z3M"588Ml16(_iPORh\FbO3K1Nr/X&cgb#&&BcK]WY^H-6u@XSQ[gE3"bI)Mj#.E)AFaUE'tOCRbGX$"'>]C3c+Y!`OLCgdoX@`42\/mmiLr)fCV'0r"qnTEMA7KkER! %)Q,ph^-:sLFfee-ObJ)>YJu#6bbi$5n>M'L;,fY5EoX%;[!WV)icuRR3TLHr-8FMH=:0c10C)dfoEudhlKZ':)GdB[X1_F('^8\c %Bk8a"W""kD,1>BiN9Hf<8qSYk_)uL(mOZW*?s!P+g=I552JRaVQE6;O!`qq]?]8e4&!F-Vi_bC.I.gYXe292`h7[BY7a?ZK>.9:6 %$:ZNT]kRkS:G9ca)sBlQ7*NQ8r._bR6]"*69@"Yi!`'6@PqFnm)&q6h_K`$H=ZIac:iJ*uMY>\l0?$Q+!gtb!Yk@&R"%6U@qqKT7 %#4CZ.fkVH8Z:WG5.>JSB;LGQK.<&bu`:Fo_bQl4Pf"pr6MZ`$6;:m$^DAD,!9/akuK5;[KUt&dP'hF,E3lokm,X7!Y9Hu8g3n<2R %IdAbuZN1hcBQ\rXZ1*#&g@SING@7"8;Hc2k?u5?;WPo$NQ<*WW?uOF]'5qDBcea+D2S)`Y6VRqJ\l$7*Ou0?Z1*_gA%THG7dXms_ %&#b;@S@?ROe!>tg,4UN^o5"oqlRthC%d"d`a99NBcNTe@@e%;p;i(sBjg$F_<`aYeHrQ@jT2+e.!IsbF*k[6.LN.B(Y!1%Z]=GF; %%j'2`GBNSrY!1Uj^UnfDQS\Lh`U<]EZDSAlBM!+Ae=+\\?V^*?U-sB31*9jE(>!C4ITingi*L"3"2cmUa;i!qSZ?^m12>h8NLl@4 %cel+d*9*6b41g$ %qLjj&(3&Y(07i;1@U*7&*Pq$+!\Bb6#N]Z9%99G79YX9Y5Lh0$JCZ'mR0h_ucqLnOAhSaq&]BpV0B\3CGf1^eTG8N0%AG.]q:2[Z %%T[IJen9shZk5cmg(DOZ,RXkoZA2/c/[is`'(k&!+'e&?-ASD!l"`u&u\YXUj;)R8\^=[o?R.)!2 %E!8+aL%^_\ciL^bZSpG?2Bk@oZYSIT;UA:Ms"a#5#bV@A;=ntVEj^7AHBGJ`0r_X!o;e3I=@#[btD"WePHI..+jVE+Y5oNYD! %]`=[?.n>kKi1WB]^crtWFucro^-&!+fptP&%:Iggfu`IK!Q`)n^W(apmA-qfVlss;Y77TURU899b.`#JIV?HDC".QJl2B96qqPEIPpmp&^b]k_Rcut9ZjA_.afp3BNK5bhH%LX2tnj3`P8hp$9b9_M8RV;&fBUP8'jP^P_Bh[N@/5IX\n)nu: %IPgk:@_8"0<"Og>3@>l`o."rZ3DpJ_oEpFI-pp_OltnE7c7*74$S/2SBGaGq6=LQ:Npcm/5)gS-FH)aGl?)`p2?:*I[VCM:`utm6 %/0o.bF)/VkN<@tI[=<)[Id$k4H*@#(U47-UZ,'WhL51[BJ<"_u?&+ %\.)i>OMdka"8h5d1,."N-CoFmm89>E.V!c>4M?WI(.Ul`R@`fO/B9(]NXZh59GDAnF1IU!E7K\pKk>[8hc$UlY@+hS$'e:hd/h44 %Vece#&D\L#i%A36^J*U'T)2`!lmaCIAK-4q:2^KkT9*.k72^\j?%UIiCe,Z,6A7(s;B6Sm[*R%Qb_Y/Ln %GG1c#p$"j4dFY,rg!HhJ?UhZoB(nV9C5\$8:Z3m?7nh[ZC<&J`e34TZ6+i*Rs5)7_"*A1SpHD/1ZGPMZ_N.%X.%T.T$$7"Lk;aTtcqbXn0B@<6L(3?ma@&OF0H*D[8U<>uV]E:_F6G2pZUC%d#HE/Nc@PcV;JNM@Bf> %ChQtJp#aEk^rB!"4\,CkcVJM*bRCm[l"Lu!q1E:YZ4pAOF+Gs:_kJ2 %&7M\l)9=Cq6ZisK&(!YrZFQ4N='$=OX[#m?F-gA;A*GcPb]@HSRnA-Uk`7bo+jl*G["O2BCN;GVD7V`_so6COUe?*s/f*06 %7oTOE%Pu"@HWki!P0M.C=.7tahrjYZ\h(&f+=LR_W&_H6!^4NJ#l-=4cI!UN3ZF;$aO-TmVGK_-BX='#!$N8Hqcbc8Hk4k5eYg]F %_pn+R#a.<3f+OB!9$sQ.Z`;05`VSn%I/DE;9\f,4.3G!h3kO_ib1GDoj[#Sg]Of20R$O,SUE#]+e*-o;47@K,'')X\fkD8])F]<4 %iBnHkS)i7s"7*Jn=7.QA*R`b7dcsTM5sSh1En*a"'86,Dk_p,`g$)d&D&CqPfSk3#d1t((a#^a$!if@h088"pbW31Ig;ZC#N%*\\gQ_L0Jp`2_`bL?M,*cSg%9^ns%pBSscN$Y9u %*98ncQV-es@)Q+)f@b5]c-+F3R(:,<'fiWH[1VJ,Z>^%+rd;\FPglK7Om7M9f&o0`fAF^G?F.PY9JY$"S+W(9iScX/S05:JU1NpR %iVu^n\/#[*/NDNAd@Eu^53XMEaEgck\g]Jl`14!I:KNCO#leN7SA&RS*_;s#0%n?D[D(:Z3Z2F0c8HqZb#%EhX_``53mC2b2&>`KV]dsV3n=ukB`PqK\3$]4 %FdCgLKt[EU'&;TEB$rra:UU%]E\.j`hRC>?'@O.F)dlNX3eEV!'R9f;;oaios6m+#d5PHl$d#'d %U>KEI&Q:ec1F=ed&E>#j3i7Q1\Qj]ohMP,lCVU[h<<-RYJJB_7%oRFK965slPp9TD@!>KPdK0L+J>CRnlsmO-.eYI&1@R@BRd54rhigB*"`&B7SupZ090A\#g@"AWcU&efo1s=^Xf6)6M;AJ&bJ=9(QHgmjAu!gRB\(M-^rP)Fo1-\P"Bj7-Jl) %oO.Afno8If='6>V)YE>ia\Q-.hNC(Sn7QD+A'`-;llM+nXP6J2M`;bq8RY_YZA>bFV$Vi!qkue6l5-KDA2RDJaR#2Lg %K8la#N'^MJRndfB/mTlC3GLfgVLF1;JKf)kmEh(,Qul3j3rj=ie90 %-fM-KjBb2+^cr#87ki^*+$2`Io[smq#X^($;upSpM[]672,s2dPUtq;$P8=&PmSqu6lf2o:S$\h&m1G:(6LjICs94Z %ZW7WHZ22HHh?&"+0UfLZ]Z?Vd#%35;^Z5bWJ3-IMlGAH2X\qH+YXiVg_!]hQ=` %8OIR<0ro-Gm_6$jol-#`Ei9OOc'4+7MPn97lGY"+mM"rD"7CddD1'E(?*/Q&,(qfI$biOJEa#N&)JcRs.Gg*#7C6Z`7)D>\X%[nP1D`qbe__UioO>G7d7q&GtaIIC2O*@)s8?0+#.A%N)^]gP1 %19[P$P5-e3a-p9bUm8t4LDfU+@3RTL:oBCY7@D!VXJ[ot!:Ws*(Zo0;QC$.=9\polQfh%-dcd5iAZ]+gQt %c0c510#kkaMo-p8i!*[0*=P'JjXkrSc3ig=V9Z[,Kcb1S;)^-D:UBK"[s1C1S>X&QpDmm'ekre*WF9!"d>0K42_J89[.HBD4d"7A %^_DaDA:tf$)IaD_(u^M8H@jRr!8)FI-HFeaR^-e,o>n:>P-lEER(PVOM_%sePR/7dRaE6J+1,d;bUPX%/eg";8WR[1=--9/30*%] %dK"Rm%A,@T!d;TSa^R\:GiRYTFWqA7B?AjYN"_KdVJ$OTE=q2r#f_D_g&b?F;*=6]!=dHBQ"CSmTM,K9&4n3,ag/V;O961^n>H`t %;qP4be/@Ye$W=O,70]N]\eD;.%5Sc.Qh^WP\[mH/X*c"a>)H6a:*rd;fo/]E4hb;,A44,dr2(@G"WT85k_BF9iW+:mK=cF0R0>9= %(O"8]k]GcG$c&An'FjP-37]#rD_&b8-B+2:J$laW]?9RC*btH"iO6,g8T)ORHACdQ@ZTLQ3,TIe`I![ %>1=f'S6Q4@/ScdV+=h#[-&Na/4=e:aU_":B1noeXu0h;NR_]]f0B,*<]/sZfFFh/>'mXh/k,s^X,ao>]d1MjtlN;;3aErXl(dPRut<-(kO(mUOb$6VoM6Qj'nssZ%s-#'`DLJ %Ls^mJ3E#WH<,("#\_bGjU.Gs]QI;28HfH1ieT;,MCg+k@J4'e7,fachWX<1'_,k8/';$/lS*ph_$QnKm=Hn%G:+9G>u^.n>W %Z#],PUSo@K18[OU+fMI$'Pe1J3C&;>V#E'UW\p'9Rn^@PkGYs0@edc9qU'qb@CE`,6mrltPu8M;,p"\bCN;`)pWZ&GaD1h\R!Tk"qCFkSn.1\S?MSfROAp5)s%.)Gk7$qPm!QPEMVq)Q:lY`5r;bMimJ)_4DVurl+5o %KBaWOP'J)E7q1'iE0#SkK@m@iDQtpJr%nlOcrgJra&uE.)Ngs"<,3^q7$tnAK>U(qS#e)4C&d\a?k,MmA[$kA+0AD#J*3FN4WV(T*7Ya]2XXZ!` %/j8WVDT#g1h&bbI/j8ZWSjfIi*>iH\6aeJ"K]\D\+='oX*5qS!^J@nXOMnG_W,eNqNIr*)mF\N83Kh*,V_Nf"6\3`Q^RN!9ZGn\pn#/W`4YTTrH$="iG_ %"@]t^+F'8Cs/1lZ\E-t#4o,9 %bS(_i$h,,iFQ&Sn0;4F2Tj'Pn`_9>%K&n",OX=ldSBXI4=lJR1*bMEQRkRGD+)W2sE&_l;aT\5jflVM-fBg9YjcrkBIS]H=oIHu: %a[Ek59!JOJ;=5Q(ZkB'"J*s&MV,8Zc(sDL,QpV,0F3?Y %o+'+eo`GbfUB"jc\=o*alj0%Ab&Xn[XZ1;)=%e[5OtUk"Uq,@)4aX[Gb?Q,Xje+@G(bZ/ed]p%*:.CL9m=H[VI/Orq("-B4TTO7d %>W;?[Vkd8N]!5@0e>'-j1TVhD4>MUj5S#3o%^gVT %HJY4P.O54gCA+fJUJ_PbkpHrQc@?hK>cgU>,phe*nlES[19HKFS*OTp!)]L)UTs.uf8NlD<1Qcc&`L"AJaAK09H5nOg;>Zs_&P7[ %U+m=sSZ:@&8ssT'Q5tu`qQOT"=ehb2?hIO1M7u6IhPFE5Tk%LQDsn=PG:DJeki7"ho3G8j,m*rrfmT2& %It9r$a0jfujBnSKmo'+.MZR]q%ldR##a[`O'*roK1o(/tq4`_.,_TOXW'%"NJaWOe166VU;ZeBp %d]P@7'N!-/1*@U3c?sp_!tr?C@/akt40)(09"N;&"#-XX9dQ[:AUSeJ/ZK57_WCn'_lQic$6QHRMWg,RY_,uX+k#;-FZK[:J-QaoJNLbE6(iT>4T\U/Hu5 %O/DIiH"e&[eL4Lm2NZ.PWZQBBf&o^5BG_XMTIFm-H[J(fmcFS"!(*uUo@j?[G7hlRk[^K19O@C+"XlO5^*r$g$qBYN@V:69NSi-0 %=0TSUJ[XY\f@c]&qfmJ-7*9hC$s(p4$001,+'l&\iN&#d+EX%5/mu@#D-r%6mm?0Ki;*U"rW6cJ$h*O2!d%UX)ua5OF"JeA1C/tQ*e$HCWW.V]6I6\co[n? %bKg5eUoQaYHa$9/1C'^,%EK#hKWqrI;5s=F"6gTHO3lF5n`PBd`@m98@cVZ5VM9,Q4Eu!EYP$.^*'F$P)ZMV\td79 %K4:X%#lkF`<3[SkCXAP#)K]3R]&IO[1>sWm%=7YsD\js6XZGc*q*oPD'Y\0T_a;pWDm'o!Y2k]!NPXKA#f`#3)cR&_+WG %3+lG!]HpS*'I%X,Y*FWCdaZgn<N&XmiLh?l,"e,)>%BAs@@qZBWFU %F/*1rekCoqK2KT'c)Ga#)fiU8@,!'@mBGS&jqIDcO1I>D$i*JBPYh=#.2L)X`g&^$@8K0NO&VJi:lG#]o:j49#6>j$:j$h0b"f5c %K>TU&1_K4ldN0W/,lf6>_V+Zk2mR8Zi7#J'Kde0)"0,(>[Uc*AR,N"*a*KLeTa+GYEpQfbpQc;4k(kiO_>-&Q$T*@8nQZ" %&8j(N*p;i!JGhsV+f!%2$Mb:iN]da`B!=VVV*s3ok]@_Z9/G1O;obsfX@d+r3^AB.PS@**"@2];!u)=u %!h^'[Wq]tpe-,u#(MqqsV0;q+l>UAb_S+6pjNn=F#^XZG#ei.BKBm`4rC]]^h1U>sC;E4T68)iBT@pH4"L1V=)1eJhA##t9Ob!-- %dO.m4cp\=2A;f@uo.Y>I)uJ]V>oq'>B4R?7EY3!B!TeOaq[67#A4Z/CE==3fB+*i)>fnqfjs>+*(qR6fJQS=^@_b%F"AC&q-.o7[ %hlm@Xh;Kou;6c%XK`F(p7A[(tH.FZ"q7drYIMq)/AAl0Lqd-gYN>RW?-A]"W:P9HS@(=Vb/Kc<'?p?>F#98Z<(W/Z5TZ0X/j=Yt. %'3'N(N7rn2G2gGLcO$*f7;J38,mkE]3D<$+XakOn%[q/T(q070F_B!IG\YtHk,AY\WHfC"ffH4*4nO62FZJV3$8GQ8:h %2&d0gEq50*"6r4R5";eHoUGn.@uQ-V:GN=jJt%@F_]n@.nIe.O!gVsNVRhDpmNT(9T^FH3]*B$W^m''5 %k<5L7!iCAHs5$&a07iDR$\9tG&\ePb1g5ujG7F3\g($-F/@9/Sn-#;SKZK:M%p"2b8*Xs.7)oblK"("lp\6Zo2M#q0@a!SCZ/b:FuX@aB:`WMZh\s;3:Q6fPD6,-i1CJ@H9TZlsVX#Q$Tj?Sbu %9>X##C%M4c!9"u5)5@6[6_/YU+I4)U!>qZV/H@[ks#*oPIP<+;">uU#n2Mij!#d77AE]J&=\![Fr_boC#YhHOV6G6OQ5#m[O!;j. %D3)[=:VmAg3V&5p\E2i>UNmW=;>8'ZR%,_+'1X;'8M^?J%#0a9$";o<)D7$.e"0Ap?^=\;`#+:";BRte!utf/ %OGq269SXr#>sbDJqobf<=>)8+P"&j %[P%Q]Mj7L3eTDIK?*rGiY-3`am,A0bOG-sS@Mc;ZJ8OYg+M3HO5.5J4LY9X_p;!4,37%iQBFe@ZJ4&.HXELkNI2Hc:1#'[u0&U[b %0Y:V4D\i`8!tG"O`=#5t5&.WdDdL4GGB));K_5BbHNC\5K6T&B_)oa.0#i8NO5@^UG>[cK&Cp:`i2Vj^=o`QM8_,;:&dTdhE#!=b %U"Nbp_!:&sos2/p1Ve0t`HkZu9,VEVA@6;UgHl*L2d:/CYHF@If?Mq5B(dfe!Hp7']=EWRH&0@5c=/`EE@DQA+`"BQ?eN]Cm,i.; %A9`:(6+`P[h&OmtI+3'%C,a=Y+X=Ff4PRu`?-(+S,k#o_Hl!EI]=Ghm,icjkjP:.jh*NMO,u\t\=&*clJp=S=DH)SiYqr5!b*"!C %3Xs!F7..Q3%2K70.Yl.8bZ8Lq&1^h9&I!KK:]Lr<<@ep?Jl4Ku(7&[""cY5TaUa@r8LBE:R>$0L.g;P?J_Vc?YN8S]Nl:MU;3sV' %iXR,MK7k4+F4csq@P*Hu,OA]tM66tJ[,*1skA#\/8R\6bg4!)Ho;OWuHEWT]WX4$%`2(8b_,`@$q@SiY[[WP@YSr6u:'o-9o%**g %&3Aj1'eot<7%hoPNJ^_AT.PjUTUabEH_*!=$cpmHoQYD6NF_=-4IL1XIubKoFE8bXZIl\!>X[J3Z,Tl&T[bH0PU171'foB*0gd], %W*KHG#O6+0F98Fp1o_^6Wsfr[^u]3/esH\401prc<%DXf4,'5N:)5;N<>\i"1D`.\Cfm!F+R0;5dO6.sF+C1QAqH2`AH4[0)8ULb %Xb8,2UENr/,"CrT+VTcbo1u.C1_eG3jrk-]5og$^fHg1+I;oB28e+*Ba?AFKJmM"oLPIk.e*4RkK-hD*A$Gr1d^p,EB;.B^PO/]3O7GH3.; %VQ5t%o=FD3+ANb"X,4'/IE&8*MPpfg`]Ph9?XZfM%A8L@*A"[QaCN1f/SV:7<27`l8sg$OO3n$lN'#Su\Ze$_<*MesHdSSDPtRNT %)'^GqJEd/HX=(o;J0YkP7@cK8LnqE[^4p`ph>[.6EWIQ7(hOo$+TMV^EGI2Zpdi=dS[l4C"jcJi7/.'[r_oL9eD0cH-;b"1rFpbYAOMCj\ %qsO?JHJH4WpNW0nlUHR^0JrJK6I5lp@5(S8\0/JLPsG[odcA)>XE2)g@*gTjQXYL$G[WP:\.F?fZTL>EQJ'MGK"8a&"5W&/DBepD %b5+GNqcJqT1@"DHTmhAH2WIf9kRqODCEBYH$;UL26^.ID+Cp#nl0W_T,]:)u)S%ZmOmj2>=+"DFGSHIY'BeihMeO&C$';[(msJ8-aqROX7MZ/hEP:^!gTVAEjn0 %h'+gE;:Q-o8s_GIJRW2ANb+QdAWbt`QOTfb)m_daPKb95N/)OLQ?V?4VX76nlroW8>XgY%mdM9?)3PcfPe,(3?&kcc5,U%-;jSeF %JPiF;51O/B>%4k=7^q_9,sGAY7&CtB-Xp(/mLj5akisbM(pRpN3qGh&'XM6@aH-n!JLj9kIT3Oa@J)UtB#JCJ%"b@qn$TAMM%p:d %?=*;Q\'7"77la^uarlR%5!cNRYgG>._(fSA=!?-/UCl&eP4s'lnS-7p(pnUO/;sjh+^DBIKNMONX=hauLQZH)Wo$Ag^X:Cu-dB;j %NW,Nueos0bbAD3niXa1Kd!`@[B_VJ]^37NG@44!MEPoE-YN-H:[(b,A-tsa<8d!Jh+T:CiA;LeA*a!QF3D[2d1GBq@,=%a[NlV^7c2[*XQ=CiNk#j;\CD[ %*\.9&oU5m;O^s=_(lUbO;U,r/MJL`GVlP'h)L&Jr#Ma`T9ZVMbbe_OHVmL"j.^6gXW"D<6@!$P38]hiDbD;f3Q2VPD($O:=(^5W: %A<%-g_GsY\X"_/b!NcF>m:ne&X,u_GGg$ec`=hQ,QQW&!VU6^HkYcMEkrcQ,+'k%k"[\=TnrXDVaTB;q!Z=@l[UFsNi;j^[SX"9f %@W@YbXN-%&gKj!U%C*-]o_@D3e!`1]\^R5/4-oAe`N\!i;U>L)Tls:sn.qdge>.D_dQeq-6ftC(GY2+d^HJppR %h>:ImTrUq1'p"B9O^E&@S]M',G.-3JT/Rm_lm'n-N^?t&$TED$nf-59ic %XGoP323=SA:8`2ih(AZ0>H$08Rhq"#lV>CXUq$W3KG@,)1P0!`pTZjCmeh0>Z8:g--CsBUCNMQrQMQJC?C+?4crgfOR]9.D$Y.$EX2Y-9r?S$6R.>Ze3Sc'DBPML9G2p.f?.G`i4n_UGQhksZAOtuY9*#&BS %Cc=@!"!@XNE3Ll+j)dk7\o^"Ae3)R0oA(>X48%stI:MXsll5'7RF6o1f?(l0n?9@U=b_=U.#s/mYUO-_]TT##bhFofA6b$Z^.d[! %*f`5)fp$QE'KNrrL;KtD,rY"Vb+a,E&`s3S&U*+T^Pe)McWnu]39kqcmLncfV1iL4i>CgbOXr8S^fmKF\:b'F:dsl8/=]^aNO;pl %&L`%`o-1592MOT+a)"&#[Ko>5$j.YeOG9cM&qi9UA[iOaj6=kkSArQa`.5,kNML4c[U[B9iHq97hM#1+i_F %]n%s[9j7fFY5DfI;39O:Ss>Q#df(I"KhXfU[V09Ti]:5d]HGom]q;;jAOolDn6(AI2`Q0T6IubcfY#3oj>bBiDm3!0gB`lN^'IK! %<=E165:82h8?i&o`L+l0i= %[-tSQ[(i"Fp3l[okaj+_-dTDQkCdHrXKb(h@6iZmDfeB)bK,4'\aJ;UksMeLjd9QdKr,rH4SW[`^&1 %bWW!6/pVN$Un]lBZ7D%nBM_?g!d\"AN0^EX^&^sfj2HfM`uZhCSuj!&3p\*=M=ca9M@`@ %)!\a8PCt@k5p2T/dh`s&:VN?lg2Ss=LgX(\'-8i=dSL/G5"e4r-m#.IpU;gC9^Rq9lr<5RoiaB91=?TA-t5GFX%!iFL`N%d3!$cA %82O;9Tp`gP!+h?T7i^Qc6Q["X)9E"BI$G3LGRLbFsF0]KXCPcB9/mbR?`r9(IoZJVqh>A7o?i5S;e.TiCQ]4gpX9-"`GH %%[Sg&9=G+C[p&2809T!oQU@aq[^.KWOdg"elS)*HEY*I5GHaC6'$bdDY+6(&bU@hRQ\o\m$q9 %TtGKV'QpluohL)(M\is51>#`o@Y1V!:1PcaMmtSk(_:js>j*e.*jjGD&fH&s8TUb"2S6&3!Jq]#-Xa)E`eK70Q@NN/;o%$3=G&sC %DEr6RQ;QaRUk&&%N#,ob9?=nKH4N$+TO]B;L%rS97baG&n@32NOC>2$Wh^,a*n7`J%\dcd`ZjK,koN:X)&4e63(ptY'5--/eIn#f %P!mr=6#_2odu_Lc"S7nqGY"b>PZa@Y]-mCVm,aelm5GRqLULOA>llp@``<0,qrQ0^b+DcFAf%HlnA=*L3(4$:kt %a6dn:GM/hM583_%_hPc?6HO"aP&jJG+]Q`;k#?F.PXn8M0HEUJ`pgWq^^MWc4)7/QQiPdqGfN/cJ27R3!pp6ChQrRZ\.(d1rC8R_ %:shrZ^io!Js$#K;rqEG#nN%:\F=e %lUJq;q9L5f5N7@_$POPdEem:BL(.20:XcHb&&;W<$V6[g2H^/I1k>A%N@,"oCg9=N&: %Y8dr`e@j62;F4WrC.)!d*Is2Ggi)D);c*R`;c46;b;"*"N.W2H["f%EXI1?<^i"FoDBYm+dAC5uVg]efKq_H#!`RoQ<"!9<\g=Mj %`NYZnAp$^^Fc15k(@LI4%(a0,NY.%Z9rnoZ6=;djc0AG47Us7UB)2:7"EK9FH4&gfF9D\G$3o*/N7Hk%7Xme74T]@,WY48M'STMU %+(L\31MZu?:mkDh*Oq#!LhpZN&3ga.`962*is+5s1*e8E7^P#F;/aHoVt/FQ&?st_@,78[n%HBd/kT[ed(*?iVHYrjTu>0nr"Uc" %[Kbd`$:80E]SPb;69i()d02dL(OWdo;geWHFkjl;@@Ho*=hWkKa-G(u!0ON"\4"#n4T^t.cZWO[KML]Yrf7lNh^BL0qWj2)L;1HM %Old0j$@_]LIk+n)p@dUOn)(kYp.sjihH\ppMX]5aJ%N;J&HDYmDK!j>/mf[)oLQt$e/J9cqp/WaDj0m\-dKt`nA!\lr)XP[Ih[ol %J+S6imr7o^T)NqnMD0U/)^$S2.3#=hh\;]"MIR9Lf%FX[$f\.J>OL>ip"MO8;5RqU"2iIj?8JiYjTG-?e#k+*K+*t2N_'UkmCO?Z %RNgWT1!b)@3TS;;!Mse_pH2Ao(>oe<;>G1p3t&;s/FmG!P3Yj3PO)[?eHQ5/+N,`0+RQBYk"s?[-B^/:N'+'B1oEBl/C>FMlVU3T %#$*.O>H6+,;(:D`Z-:kCkSP65n=^%5b#mb#i`6F(Ji/1;.>R$pL]U=-#3'$&kLKh?RisR,0E`J0F0ICXp^XZd7dX;$J'neEP.r%G %PYV3=6$oID#Pc-Ol0h.&3ai6'KR"9h'Q7hh0BnBD8)s%7:T\,c;:F3X;oeMGi30$?D$5`]h?KQ\MM^N-o-koA-q-bMCGtBZs)j^% %,^qFmTs:DTGj:&*Vp(Z5FnrjEoGeC^l6SCCkmKVCFnI_j)W=^1Q;l)dauN4'i-08p6g?rKSL+6* %Ve6X">ES(kcdJqLLcZCDlhMgmJ[-c5n/jZR`4ZeOfkG3:ql!sg((dQ_][q.9A?+&S#,D51;CCI_)(j=hAXnSiba+2i4mV\j=-#pZWa6LcMg2,YKO[L#,rnSLFeWcrcDWFbUlDS_'sh:OD]m?2 %L%:Hq?R:*86=a_L.3dPW9Ytk."scEc`5pQ6i]>IfrDC$+g,!3+*nZSkb=joAnu=N[)]W]V;mE&/A%"1NKWa#ubXddq#W@*&UV*>& %ko+Xn_1"#9eG:oPN055tMC3g1iu'.tPqh=:f74'mG@$k@NLb%1E-C#*&dZR$BeN\$UT3EkN"l>S;#VUEqmQs*D.8\E`4Sg;6r?Z@2COW=_sLOe-11D/#.RtH#DGg*M[7:`qoZdC:lGh-lIe1'Y;CHWBcKUNo6?$k8&>am2**^8Vr78kT+Bl+u&O%@StZ.2QK<*@VhaF(R0@W!a>d'8"%g^*@dhl$13l %hH;>W$<:^Vrup"r/Ioh8*ApT_pA-&#MSilg9AVfX6X9iA_IN$q\*l,W3hIA&._Ug!'gk1(DE&[q3ZFBRmf2![DfDC %;,ic3V?H=9?W*=E57qX:c,O'!QGWd("+<*)XfIBV.__KG1XmJ):l];k2.[8ph'd)k3$b=s-ET$+GF8^,=pS:EL^6&9WO2i@G[m$Z*VisI %VTr/b7!?/-[&O-dlQe[7#i[fGC#3< %M."HeT^H<)TO^2T/QIm]D`\B>N`aIK:15_T5n%LOXtcI,<;3m8gW_qL(rW-sF%_=\$rF!0#05"[(^"#=TXL[$P%idq/jqiV?%@]f %"uM#gB#EMbjIdN1.uOM"KGEd=8"i0dDYkJ)*]0lchg5X+E!A#=BS`#K[m?s[.0bP6ce"SB[5\0r31uMXjN]HF;$s95\9:B\X/Nn/ %LHWG>L[9\-8cuS!h9>4qm:M5h#,iQR5=gT1:c7F!lU(lIX=8pppjoQNCaGUNGdK7:4eS/l'[o/gpkf6E/M0P]LrV>V"X5bkf8Q91 %K]sDn8N)H7,Hs',I9Jm+L#Q_u-NE$jM0a+W,Nh&mnS4k''/.H?sVC$-)6.9'D9=FKBum>Yo^Q %dh1a<>jDaEY*,bF#R/O)b\]f\M_LuD`gJPQ;lqDegRK[3VFUR.T;Hc'./]]-gW"Q[AM\2G'V+8("quWYROFH-h7U]4M8q=7Qq!^< %,bIfF(L:'fn^P3c]*>CP,.eRi*/1@P_LBk+0uV3#0F('\9OBEg9p7hZ7*gmtM'Wm,e:b&;>4&=-cp)]"#%HgZaN0NhZ#jMBrT55M %-(0t'36a,&A05hm]I4*_9c=#;JfIU>$J?t!"%DrXOq=;FGher"[OV%7/TDb\dI]7lj-U>M'+2R(X!oSi-"f4:4QldQBFh2h#N<:e\ %KT:RW&RmBQd3g$JecEB6dtYhrt,eQB>+*ja3c^@`LB^7F.VVk@C_I %3+R1OdI.[2\;3NRUVfR"efk`mM-OkYrPcu`KDI7O1D%*qN@Jnk.aGr/b#/=hIqmb/$Cj@g77!.tJpEZ8;[KH9>g)ahaq$O3nW;`. %KSM2ng;*$\\C@6-7'_)g?ucoB;s!\HNc(`JQ6M"$oQu-lE>6]l[MD_diq`k`J>tW*&JcW_f`l479<2`61@q6s.9tlK_I'W#7NWkhGc0bd0dMgfs4bJ;;SBkX4&eCg;D#U_W[\K %1ZaK"F2ke`Jg,2"mTNSoKKKWb,?lHOSuT=3'#/X5JBgq&[5/PQ;,:ke`=Z2OLeCTjmHL[=2i2HFqcJ0jjb`ABYTT1E9%O5aHHpuY %n"E)2a]/nS_XYi6M<#;&o,EuhUal*SWuR,=d%Sknqb0>]G*R3,*QROlMO6YB3!5F@Y/tX9-"L]9maPcEf&Q)'QO!-9)IqZ<0rSp< %4AEn=Ra]KNC'SLi)$*JI&ir]Qe<68*XTeGEIiC5;,TJoJNue]5GGM#W8kD2E%WlNOBa@JdDJ+u$AtI4cT]rG$sb3_=?F*b&SfU5>o!)VOG[`,el@^*G27$8Bp<\lNVg2.VEQ9IurGH1IYeE'!`>*(Mn]glQ' %DM4g@l@Q6b1bc3%PITO=!T+EM5FU'B5%Lst5b4*e-F4'E`,nQo3:m2.J#QWSbk3E47QlR[%c@mCTkYJahX4^EH?[h\iF,lpIXgsL %D*:G4T'g"A%.,s.+#;U$ZILF2=-0]hLZ=AO'oC5UR'D[g-^LY[8d4=#2EZM3f*,EVn-Dlq*fbMFe>+r5iT-@@`%9!]UGlQcf,8bck4I?CEX.hugLBmo:U0NAsU1u)V8e!bmC+pi>dMDsc)=iVn"``dS%]V3*MpQF>OZD@)9'+nVS?2Mt61>_ZSdLB)fWRqu.i;Z] %7&dM!JH2Wf7qh%!#0lW`EIb)PWQn$DjChuRC7R,>.bgA`.'/7'"NVXlRS1MPZlUKNQu]uG)K;F)'_AFJ$i[Z/!A!BnbtClG5"I/8*a4KJkSVCXNpJ&ak=sqK!TnN %BK]"r.9R>09s$dTe+uFV,rUmb-fh>D`aFM;^51`?<;C,r"7UmePf0+&kfo7F$j"5b%.Z!EbGI*],Ga.(7gpW!9cP]2Pc`$0S,C>0 %G1Y="cje,//NT&0JM^,W8DP&/Sq %mK:-&!X_56-",R'P%IC/&.ep_/!OES%qmo]m$\)(Eob %c/E?7;BsMV3MY^J2+BkMdY/AqL %HI6:.".BR?V`MkDWW,!o8aW%.*-i1?>DJ(?fTi,idY1Moim-]:>g4C]3u.t&Y7m]Qr+uP0+:0UhP*%:TqVAo(HC;6Bg,s[Gf %9j*seKIC.JAkPB`l:c(5gccT":=taPRrV&/&!]_+FX!EmHnZKqn`C[QeYB'\[*sHEJ-9LLo05!#N\ihd3BWu_EtG:_Fs2CIHj]1- %p]RNHY\qfJ#WkteH\:.Qh`-DE]:dqi8la`%Kb@7/R'7fEY2kDuc?,GPhFpAM%1^83GA/0kc-J/ScF[Jnj,Y\#Io>mN5RFub"QCtX+b19Sff>`AiV:F'<_/^PTr"a"4Z#pbVQ=KHn2bOmM+fK %ei0GA[(^;8K!2W:@6iqNh5HC/[W),"#fmYd%gH,L1X]N?(1j+.i%V3sYfW>X80?D&0U^?_-L[VWG9ES?,3r4"H8IRckm+L-ZJB5< %4H)(-g8g.!)R(pq7LphQ9@4a$m*-k$;d,2E&nZ6$8ueYtf@I3_NSr&hSh4gjecEM8D$I\m%9,b\_nfo%?9SMQkfk=RRMC"c'O[uI %$upJ.0Wn<\q@&^j<*S:kE@@fBSM4Ji;Oi2#44)[8K<7\A[ko%XE'W!J@V2R=@h*YQ4&?#5.&L.C8!E2%)G6dIeS85fUFJjOr0\;I %#]2gO+1dW\<#fk,R10tN;'nmaEb0lb1M@"e4WES=2NJ]lUnbu0JS;iVH'rQgi=&T01(1C`!Yo=aeje[l:D<(VUIoZ$Zc!1/Rd0-6 %:p(uL+7m4ucmMC:K15Td8>^)UeKVs?T.?KAE">>GMBsk9/jK*XKH"j]?L=7p8C=!`-32*VBsr)u9rU#aA2obSCgS+rjNANfV'3+h %@;9!FVM9HH&NeTO0n6H@;s6?%kr(+Xb^=K$l?)dRl"+qpQ9P;-Y1dD8#]'a`=IIZL?>X %:hD5$NAJ`"_1O$lCA$RBA[S,DX^mVE=YW#iEegt4?llEVHOA?p@Q/Y^FBL:ld'BkSd2(;$ATZS6b: %%Ma^LR`@`_j=<*QXT[QI^cW^bNJ:tl@D1>Z[oI&N85l&E3:fN<91fNH(D0d??qLT@0q1ecILh61 %7Ag#kM,@hRgJA,OT!;F!0j:\<5#[GSX<&lUKOHb?`F2e?+=4<@6eIEVU*TS&Gf^/r1.j:RC:,H;X`:kD*s=eNYl+S\?P)FEI((!7]7LF9LN-dj@i7Fhf,OZ:3U6h.&eB:sFO %YnpjPR1^'p0m\LU.eF!Mc>aW87a4CH*uPMF!f&e`FA/$E[bjkp?8/I=r_V(",]pYauE1&-5%,Q35UkV %*(UO4g8`M/X$#9Q+:.XU;ul]][;26tSNMUn\<,!Ie?`-B!8rT7eTu/V`T4i\G+-64`$k4@)WHn7HM6r>d;VP^SXJ+g3E54)O";0" %_QC@G9;sg[4De?@nJ=Xe(=5-RbB[hHj\(SYB6R %"A3i'?n_3g_0UZ9OG.@RK`UFH]^Ab_$n537mk3:PpcNE3 %/:;t'Z(iq;VT9[+@u=EN3*HE!E"i2R\KPS%.DK`BqOeeW"#(K):f'\'0orpj?HX=a>W;(c&%Cglok[t]il=tE$bO9Kl:f,5aQ>"+ %Lbuc;eheTD_,'#9@u.-@H3[i?8QE%5&1Cp5]7^sCY-:LNZ>ae?`Ct&;d`[MF>o1"uZGVYm3h1r[Vtm@qpp^&oGG]pk5W:#X8p+S\ %8S;Jkbi-E-;'Mg?%`lVWcjZ_gg%f=(?8D6fFph<.S"PmuC9Po",BOTiW?0ls6sMlD%4?(uSr"G=2#.3gTVWlqIGh"c/O[1l5V[Lp %Se40>8Vf0h9!XkG&QZH,A.qG9==oB6:1,Qp_.+>m#<$/_Hfg,7Ap9&-Miu"f!)]ojLeg`_P]ZC_8o^"Ch0]req[:UahQFa'dV?/'&.!cnUG+ai9p`%gEAsDL%2jG=HpF^qadoHJOIOCK;-Znn/r'pQmZH0$OGGq?tp8O>ANnFc_\?C0oTm#:ZXGf2(T+5[hmdp1105au!H5IHMcM.@S,kh%^S:5X^7D`"E.`5/k9L^r/C;g#+E6JZ=?&9S8BDlE6u=sq6>"SO@':jon8[A,s% %@@mj1;c&2m,2#%,6sNC[";n_EED,g7nWj^d:J2>>6NQ3`7_+_H)W!b7bUE4#s*fl?-K%Sb`%KKb9n9$'Z'= %Vh"V\JcXqgH;7Fg03@gOo(kJtZ>G3hVa8gkU3+4jNY91il=u2*-&8EcR7(kr8kqH4;__e!-F!p>n=frEl?kJK-k]]H&h<$UR)Gku %A8@Nqj^],2/L$Q5;/1-D7S=r+##/a86:^6VFOl=GM]U9X3:W4P*J>A`I?3MSNM(9aBo!uP8EM+cA5d5*(E^ZcSHYP&MkJC*.1%,U %KjfcuiEWVS<9neKMYN"[,:rKDl*-S&&KOPU)IfcPFHS\A$B2'dhob1+nO-Q^$,;8]\lr..*%nZ(,jMj\ %\n&E'Wn",rG,K/a!N/1C!TZ@h'Gm=7r>$t7oAm057C*j.<`SkfjT^g2Fh7'q[)hLKugWgm[&*89m85rku^&V(QNa %L6##,&(aQ``\ETr"eXcPB,Jh@K*&mJ`RpJA9)S>=q;cN`VOab5h1opo6JZ060( %$KIu4'9i30;KMh>WegmaIPk;?2F=lF^YH3O`pr?:NI5W&nXjeeo(M*OR`/bCBkq6,Pc8*$',Z2qfXcK9FR! %N!?#H[(Jl9Umdj=oW!S.P/OZE2mlcq@TdB5OG2mOD?.XWj67BmV%L5!PY`$26i%M`\`#Q8cu>FuaB8krai8Y0;VG8,LP!rn`LD1L %,Goced<*kDQ'f`sR=8-LMUTD[W1kgA`UG[% %@mO=I4`]!OFN%\J;m!g5V^$%"eU_!TaB5IodaJGd3k_0 %-N'GCO@],Z>k%BaGM%t&C%'IsA,JdJB.4iE:D5-UJpc'=60d99AibF)_s1]s*h5G5#u6+%cWjKqg-4'=/K@#N37^"S0]K_]gf@=W %Zj>32?m50Th2\%CnS7gtD2C87P45M:gthtorp'4%ea;7SO%%9Gg@IPApqnWYM]:_Q?iK.oIs6%kRX+Erqq%TmH1B(mrr26pG:tW( %^]+-M(B2e10>Dn`gA'FMc[WI8^28?]VLK.9pHK\si^NmNhjn,hjZgAP?iJgIS'=13q=,4"m?bT!^H_a\,.O)]X(s0J+M"mXH3@ool9\%>93H>?b_#1q3i@?J$9]$j1)jOrV$*4@n*ba0qc:NU\O]` %p#YZ10E:odS*V4=)@RW`lPRiH[l;?LqtB05(N7U6USm!4+MWrabWEHtPh0iVhHYI*kH!p(a)ZP$,sT&&+`2?!([l\B(L*fhl.sUb %]@U,&7m,mrs]t1j@IrkA2S^`,"NZh*prPd?3G\@4ehS$V;\GXtUo2jgU?*%Ni=18]XKdSOp+!*PNJ$tBRs02G. %+22Smdds%,jm(qp?2rHiIJ'Z,=5TU!jjl-hlL?MgWp,#g?G1XR@_)C4^Fh1rr;,jKmE>4MYO@dCgeU&0N=ft:mea&ODjKfW)jVGo %ZGO%MmO0@QIUbC[Cj\ %(=Pl.R"NAb408)l)[D:8F&i5#(=U$i^O?(WlMUA-f5H.rQTt;-J"3A*olBM&@;.jtcK:=3*XFQI/Bf\:<-'Z>YFO0p>#[1fR(B)hZ(q!2qT3rEP68epQ'6Z*]r.\mm3$3nbU']`3l2.`trsOGPD..rO9sVae)h9j6giF %l0\F.k80Il?CX5B[$;c+2S6UZ*507=qnoJHgWS>AfYT-Vdn[[Tj#XlcIJr=+&`['HYbl;f3c=mlkYQ^^5-[F!q_J^\XD1Hm,!b\? %D!.L'Qa=0Gt:T3kj[>i*3jrVJI,K('&&%lI,]Ks,qEV0=oIm_g[j1SbNgf7Y:hOMiNN%,3X2nE %mEK)g[2+Iq_:Y0Q)qCFJ8da3W]2;,rU8(e6P%.L=)24!]W:cKO(kj3$h`25NKn=3B3c9'RJYg`JiiIp]eCGbs,M:% %eSY6M3l["R4mAd=M&?BW00d4b\lk%2I*_udS#bl@LHR>XQiFB)hi%,No@qtdJ)DA4J?jV`qu8#bdT6+Of'WFlbsqiePcenIs39@i %ich)VDE3Cm4=5LuQVQ,(g+3)E8+18ogr8aN*lLJGr;,^PnpDb)c`,5pqtoC4mEOC06sXGcYM5>4;tE1kNTT?GX#F,;4ZJc)9D63' %A2r0)*SpA4q>J3%V!IKqIpC*-YqBrT^Sun+K8S)L`h8n$0T#1(YN3cR[\^5ED>cJ\`_,BBf@"mNX3sTSQHtpul!bs2i%p$PXC^[h %"bS5hkkbAbZ%A&+Hsc!S8toLE$<3S.GpPYg!t\q_m7]TqjXcPHk,Z'+=nZ[i[g=[LF86@@:0G9nd&!/+Gkeu&Y(=G_CY@XasB:H)8mQ^Fo`.@CB)15)X=hN)Wg)odrY9nAeREbW/1B$sf/%f6- %_]u0Pr+mDFpC(B5eIY#0O&t]?mdBr'.tX?6.e%S&.(>L"G$n"u>a7Oe>.A=!U@[Y4^KSad*-TDYh][7c94;[!A0o^qEUJpLS>PKKo&ahPMp>tBp=1?B'c[YL=@NGIW+oPcOV?ZF/ %62dEDRCDj:LAgW?/$Xg%_"XJXh7U=G]mMkh"FKtH6ho]rPuK_lFpe'qSaJSmk`:^U/08CF9b:i(kL=.YYud)[[HGhAe[>ABI=6Qo %p#b"ub;X2sU7T-7f6;B(C/]Uh$;!pGdQ4s7*Sp#Wd]Qk]fA03RQ]N2&bO)*cDKYoo_e:W-pJ8HN%`tZq8Od"C/\94q]gmdnrcIhN %jn57Kc[Yk-/T^`5V2RPOeX20aLSMABgL\t!6cAOYSpd5,`0(om`@UuW`JPH)+\K;?=fiu`EN%K/Lf45)LNA8L*Z^u>s0+.sLf1D9 %3ujuZCZt_0*i8eZeMlBuI=6B1e.lg;#8>1Uk-HdnI_<>-^AInf^YN7'hL9*iQG;h(JP:P5BpBr?Z1l!07Bb60 %=\[VqVs#g\MSI,Y":c5!Rc",6W[VA;n@5Q29KW4@O6b2bUm7Gn]D^U,rR*7FFUW%=hodC/[JS@Ac(A"]m`1rX^UeR\3MtkE?bQ9a %q:4IFops6[uj%f>18[KEAMd=G3X4e@(W2!ppTG5)>+gtRI+8ttoLcHeWdScAK02m4l9#o.a@QFPuSe$d!*I(>toodRoD?TqF7F"K9+ %W2!R&?d]9^fC^3q[_tDeQ<K6mGY^Q4/G\aCYmlU9`;s_hq35n)aqf=s2n#p%],+U@q.p6<7h9@[%HhiK1eXsHn/V?<<5=SGa %TASLTrV$*YFtoQe5e#0II;>`bGnL;&fB9=jIs6D_N:qW!WUes`s2[Aj7mc!T;KKYg9\n*ufbbK-MIsJ68 %37,EV*k_gTQ_0B=jYJ#TH*W/ISUL6SHujddn`KcG%sM)j8bfV-TBoUm=G\caG9]=AI9E1KYgr'a+l0lGq.!Vlh`VAX>mm^M]Z8b= %UoQEjhu:eN_B)_2fs4rnRHQC^;OD)&"t?S-7[*&R=!O16%XZHDl, %>c_NK#K4T:[$a+SaMrODmIt'IXX&>f4W-sE)9p!23Z(Tk5]u=!1p(0p#G^PT1n%J)Aipo)]>Ig5]l>`p2HT!9DDW@Hepe$:j!2iG %HeK4=Se'3t2uSD_qir!hLP5QTV9XOI$24u!laqACV@UDI&&`04,RjJ(p"eFklY=E%c\dTL0,ut_UJ9>rK\gSDj24k&^S*M1Fk?WS %lg+/#^OL5KU:XLi(KYO(r0PqnAp$)*NlUV;]VQ_B@]ji=T=$Ir9aB?-Pc*-WgMj`u5s,n]ru3DjG,CNYIr[3]-W5,7/[4t:h/,*R %`'+'MlY`o+DW9hn>-I3)FS,2Q'FeEkSpFJ_E1QAdQe#K`Lj"+#6f^A4Y5:6a[*dpY_*"hlq"N[K-7s\M3oOF\c+emg[@`>aNhp^A %YRVQeN5)b8oDB<1XA;M]_4(2e&$PD=0-?maXQ7UXm<=%b+.;i1g[0X5nk")05FSqS!5AC36[6>[H?JQ=aaE!<^ues)^$]P%lufjo %%Y`h*&uaY7>n)6/HJrqF_67G$a.9@tGS7-TlVFVeJ%3\QEgNn)007m$.pH8Nfi>JHY!:qr>K\VrN2pbH?%;->Fst5Xa\;\Y+aq]4 %qB,0M=Q;QNImiK,hsWg,Z6k0d#J\8.[-B$dP^I6$NbaJeIJQ&PcgcO6bZ?6GZ%%8[*dT77C:.^Ec+A<%d@A)Rg3W8b*F\hF*5W6T %Lp^M8]2gb4i8G@DB[HeFrL6C00h;`;8NZt$+?Wbu27"Cp_28HF5o1Pt"$WH]n]-o`qp4(@lPmt6%XC#7s*,iUa`B6,O&rWdT:CN5 %#t2L@#da^5]G`uGB1K_fH8'cu:p$#9+&=e*57MaY^<9T@,l?B_H@6%LIL<2]93K:u<*I!@$'>/Lqt&Rohg>Em^#-N:^%h=Zma&pu %RbjQa]pA8pk@ilCrT-oE%=b_tO7Gc4T15m2mK[WWLekn45^F;rnZ1LW;IltCcq-AjcB53->/7?W&kLV);*[D=O%`3G,JIJL@Qg\Dptr8EpL_12=Pa.':$Y1p\&5QCTN %omaGJ^DMu[ec,0lmpE_Es7ODK_at\N3#YPdbGkGAC&]&lMFW/G0nG2\qIBCEs/Z+AIl5XJ8)`\+8,qcP%S&1OTmqQ3>_Xu(p^kkN %)2^XuhPHtd&r5Ga%>,mF4:+A+7jN1(1";>=iM6n8Z-],i5=dc*jHSHI.CU6l9''Yjld_*\d;_8TWR@P%SV3Bjd=:_^q'7;9eSp]4 %anDSC99``d2i;RMTfRI_$W14E>$%_Fntm=?k""1\IIn`U@m]pF'J$l2S9QuIUC3Un(St4'A>mUk=+0CW%O>j2(i*\kCTEKFX#utu %+.P5CSG8e`31LCp)"lQeEfucKhK'3N-i;oB2q3L6-dE/iL6bGsO5T=qFe0]$-Y4h0SHpu.1SJa%$;Q7aRkXdHmNg2=b#e3;5>/*g %b=gI30#cO0"&7JTDL%-@<"tt5FG=7MaSrQ.OjMThJD4&G[!f-XlH($To&);Al=m/[j;th=srT/G`&+09L85drLhE.Ma"QYL'FB2 %[@G`MFG2Ynb[)6-3K3fN8]g;A>Uf4Ug*HI%a@5GcSH9UtY)P7PR?t?J`Y`4n,(3S;@7WbI*e]cRJMt^=W0)oGoS#3cMM4eaPA_Ob %Pg)%3[N/&uQ-E?8>D=;dm2e*(b_+2!T/P-_OQu6]f_SeJ)-u!$6e-lmF.6b?N37Tpbj2%+ANm%`Qqg81UO7jj,8"N-Bl,$U[K5GN %\7iq?f\5F-h&:FI382BqmGmbME,>bZ3>?1k#6):&pXj_mfesB;Y*<4ZY=4i_Idb:^D8Hp,h-Am@S>9!Hp1A!_#4@fERb"=pGReAu %X%h-;6^mJ^Tse;=?<1;OOu1N$W\3bK^PbG]>B>3B+(8gf.%c?5=?`$J^;3(4\K".7SGB*0R4il;GWIW\-j+/"eeKj1?t^p0n59'e %j]l`;Xc_3tSR"uTCjZ1YS_Q(iaEjKgm;p@SD`>l_Qc7=S,pt'TO:-TRiBZ9SlIj3.NJ%W$A=K!1lt5WM*:r[[EUhk1jTH)9!(!_E23Yuo=?Lf)Jtu) %O@4Afo.on\9F]?AOGc?2UWe^/6e4GIWF"b+P.'?H[VX7]"H>dqLT>+Nm0)P"KpTCjAKTO4Fct4eaa1%Y8aRc1 %E\N[a;gAi&p+oj=D&_S!o"qL#=_![*(NVZ&Z*6^FmHMtoc+9HQ\hIj=7m.Sk=!MfW51NDJ#n?e==p(&h9jWPf[,&f5415()0+4M[ %nR4>7g=nN,W`D'T+iu2T*$*FQ$.4lVTsHU;4^L`/:,bHMh61rO7+$j*B8@apac'ql:"F8>\K[[(D%]!L&Gi%\._.p[2Is*$[3+,a %^A0&-?t7`N.ES,;P&Z"*jlmJ4$("rJT9gZ:r^a(j#?6=,+51i\qX(NmRP?OJg-$^*D*(.,(5XCPi0ZHi=p&k*'WB9-Q=j&@XGfa; %S8+o:D,.8MA;Jl;R>e\MlDp(hHF_B-AmtT1ER;\Rc8a?)kWF"0^6?UDZ$9Q(=Z*''S6crrTP>ttLT]>4(>Z&4B-DRPodj`M]/,B> %ATM([EBE^qk3jiWdmi)0!o8E>;75Mb]:s.8fb>B'h83foifn[D+1&'tVc#SjEm.AM;_!*lKE8."gU5oKX%ET.=ALft*KW\@O@I8m %oaLR,gAFLDnId%NNlkk6P&*sYYg)jVb'=Z3>kGY8eN+I1ME%PS5EZ4)C82XeLccP+WsS5*XkCdN9tTn`g)Y9D\1C]k0nY986oh?< %2FhMI/<#NLUeT&ukM@rnX=ZFr6X-a!MCP\R<13%0Jpu>$5"CcIgpVX[9'FqrmYR[MH??eSkqppbf_0\!\r#-\(0$,19GMKdcBq]q %VK\.,-:0bRjV+Mi1I0BWolITFin84,?TUaPg%MSrU!]_[E2/%fX?6SqfD(Ls/36-9kd6:("*=UeEc9ZDe(K@I2K'5n6+[3Q,Zj1G %j>\8j,rZ!7mWA2`/.8hhpqG%Jj2pcS)W2j-[*[mqpWXO(.Uu\ShHrh8:SJ%]- %:XI*=YePa:?0X+X+3A0Hg\=qNWcZ@-6]&nbeiQ8$0;k$b'l=RS206'6,n#%HO!T7nTDrQ:Q1O/0Y+(?M(EH(R)N=FoP< %ZKd'NMI@4ocV?(CjR[g/jp2AJ-E+lSuB!#l#s@p=KL50p`3QLZaQX#k>':0VKo*,Re7!@*G@Ae&CBJ+6EII(RStY;B*(j52sW$lFJBbc)MH?e"SP5A&IGlenu^@o>[c`+&A&R-n2l7T"oMZahYMku[`lH:m\S %)PgYBaofqF1>*"SeFS?YJlD>%6&B?O@A@22Y[WBH*coV`qTM*1T@jCL"ii8@/Q;"!kLAN\-YeYVDEk`*jWi."O0.V72/EAF^$%r\ %OJ3X?dX]V.;g\i@KYq`,*j;FA3%*9G];iR9\Gr>*Xg[/n:(-klP-3(r>aV8RWSaNd`.H^TWXkl-:%^<+Hc%isT<#'q030&AmmH)I %8T>A=F""?:`9ZCCm"UT@B_iG#OIOS)&*lXB*7TVe%7F9:rK+'K4ArO(a+C@DbSGBmN/;al]3j6g+C^k+M=\"%(&Zp@bF[>/[hldM!neNV# %;3Suaa9+'kAPq=c^HKa\#U(g*ol<`eNo\gcBMuM6];&H22#4=1+#E7\6%l.MGWC`:L`>G"cSWC>^BApaD:Ba#peqndWbD4MglmBG %El\*8+tdR&d>@at.GTPt/Wm&uJscr1/SePNW/cI3AHdpZSn0uP$4:eakg*e>o$l+2.c5l8S5BT)7MbJL(H+enY9F92_#m1.l7no$kePnFZK#EM:l>ujDqB(*UrU`MiN`9iZ_.W;*5UQ %K.=k-2GtKY_WpK!B4&-#rR,!k]Jc8/jk#fGHU:GRNQ[UgOhsNHcFPjajEQ:/3`&+k^HSp0^2If!I>pr.=*B(E=qrXfK6+4ei)K^fO5A=M=5iKG3%CR6!%?u3P?ELjC=LL %O`@DXIo?9G>.7h>B5p%4'N_BjG0u0$T\V3%'1"3Y%0X"YN/o#pTT6>J7lcX+!P@0$FZ?q=.p5Z#0!CqG@\$]QGa(l&D+>(ZOR3hF %r%;Lh@-?LI/Yj,BpuZ*K@cPC(DSdTk+'Drf%n0c^:-L?.d@;gmetuu/P,0#FTbCC\Dl^US>URBf,PHT8Dkf/)Q5n0kT1@]\BbX>` %?-lGR$jFAC7+"nWH.%4f-]@XgKb[$3\Z9Bm;E.d3:#FD?1:VkPP70=:mV4'K?gC/D26/9@1+T^\2,@E]&-DEsH=@(d[V%CCgVK$6i$%,WmA8X0W-<$(o8pnX-)7cjc&E3-4kP>F8-SnG7@4i/8uDJD %"RJs`%'6AB5\2HPVA>&(DG*Lg)COA^;3\-1jj!3U=^5eG=hW*VPU8-S/`m4Zjo6C %aLbC/a*&)*&>ctZ&]MR:Vi!Mf[bV8N+RFTjpl?4Uqs'N_\pq&;>Pm)TJ,TE%5Q:Iqqo<[egiOcjfFQga:$`%&P4%^k-^.k!&lBtd %59EfNrS7i]p9Us:C&amZ3B+AS=OM,o(M$*@fF&lM;mdE4baNbj9FN"`&"jb?jKkOhno9\:&12dj]g,9H`-sBeFRRne1MbqE^b]]a %Z-Y9Xk@]Fnd(g^l1]+DgQmhp;H_@,.p\WpDU^MOCd%lLgim?cFI?8,Eb'RODVN8$8EOrCmf`U?cRb/;:,[Y^:@%+I,(GnjTGU,7C %*o79rL7-p$TI+#h^a2M=H(J14cF;K@RH3&6p(8A79iq=DcCVF%Jj!isAQZ^E$7HpjH<'[Oh,g&:Y=<#]`FD-S$?hrc6=A>SXHD8Ti; %"5RR5fq\%Ro"oedDO@orA)-.'4r`Sf,O!f?2cq?O8%OPjpjB04r;Ns72gK^&]Gif7+6$"`fF.9t"5*eL#!7;>pU9aMV^(),MsQ"C %PcIZkQ@_8")#mtH:Un%9G@NgnZ/"ii4]KnJD$p-Z\g'740HW/:K"E72TeGW6baIY]uZ*.))QA5V`JMN]A.M2RRGn5s3@Nq5E< %E>[UTkVs"?\bJ-G4e@^r_\)TYN81Dgc?l5FUkud(Epsq6JWu@)m"L]\n'CUQEbM2HU$`223Oh_NI7mj]pDu[jNYdZ8A+ik]c__?R %6*A3N!H:>\4,p]9_W[YDmffLS'73"/A/tJsl/4MS"&9*oGm@/Y[_O[BFo;+XW(mcTa27,;RE#BpjQX]Olf@)LBI@l3(XrpFF:YUHpilF`gPN+L+2FHBWV1r!D7MrZ^cPf@HU.%1iB/30-bnODIYYQ5f`4-m"S=s( %:b)3iiJF85(D%+carXAABjr/jYH\(mpZ1`_8ag0Y/\;+YiI-@0/YRbshQc:*94e2;n#OpESo6^fcAmu8^T5EO.O:Qtk %2O%"gb?eR?F/qDBc3LPqo)X:!*SLnL-hC$!^3]GCIldGls).l1cO1@8pS[UAD_CKss7l<4p!rHkn*]VYI!'rZ8>-ilj79Cfn7jfm(1G#Vf?/&)p#!N[Rr0XkmhB!kO@u%/4@1X%0VKa'=3Vb\G %nVTNbQCDY$hknX;b=SRVA_(jA8>kitm+)@!]@RkT+qAt/JJ$p#+nY9rd1=r5LbRiYQ7B0s9Y^lZqJ'BNBjG`,CZ %cftY,W)!b6W"*:E8HU3Q0]W`]7/\:LF_77c)g@MNV/<_Maj0*+2(4SIqq(*tWorJc-lcJrU"sUo:ac#rBUS&ci3d0W#[' %Im4PaVcOOm"1pPVAlKM^'1a83ZQ/bq'K3pf2?k'j!j3iSHM^8^7K>C*d6NR91npUch9"><^N]BbF^f.l0kcU#L$VeCM;lTG(:F8l %8PHS9[>LGWTMJ(;=ccH4@D]jF\g&_k>#!pJ#ms##_LaBSF[>mbL8REn.V;fVX]JM0eWrsr&7<$il_&oT4tAT3`q2"_iYC+tAcO5H %#3k\&9F:ibXqD5d4Oq*a4;?U'/kU)(/@%SFUk[MTH(X,%-r^ClYqI?[l8W^F_>=:B^Ao+sFT@>7]7;.h63hCkUTJ5n=\P!YcE#tLi$aU+ %2dmuXPGCcHDriU0(2HO<#P*8oHD7X/9JP;'GNN;Da6[X3WXD4#6+$&*Jlrda.RLgjg\&aFZt-BD3Rda?K&o>(BfT@fGq]kVlraW@ %rM,Caf\6Xn'hmgU^%,:&0KMHBPD@=.;uCqi;[/#"?M#_C/c,>F;9-+=DC`2Tok+6$q?% %SH@^]PY#2a'Ge!tkYu2fBsml?`bKV*MKkhVCk-J`5uCK9\N0sj!Z_p#0*?OY`#!.U)sUBslD.qJ++>iB!'.e64EjA_E6<@0:1Hn* %n`/5(d2dC6E(iKol!4!YTCal&&]DLp&Lqm`]REFh)ff+nFeMgqe4G9M9*gR]BA`o/6Y(aQ2_"6sg>#*#F%5_lH5-Mb:=b6t1nAGP %0d-#e+Zhn@/D$o#HZ55-);?Q:c!/hXA0aT'E2Z^5b#[%d,CgT\+kd>H-SQ&dQq3EMon:6b80kGA<`h?FZVXH=EiO(,Yk`^I%Hub? %_cD6eL$>/J078p_'beemqJ4I]7i':q7'(l1CU<0Emo]5@s$`.f_/ur[kO:bXM+ff=t;%jP%C32KsjRB_#+<_Hl)9_4* %BH#WUXS@ZL'5n.Z?mKV/@^pU&:EZM>S%Y"UH15Q:Z@<2jkWoW^N!gfN;#l(i9F9,*38fCa[3^Z!_4,(ngbVO[emudXSIl1e`i%9F %92hZ%U[Bf;<]O#T8Qba1)O"Q/75uUp>"!?F9*9#SaqZqF2cNp7Ja+j\6$%j'gtllN/`OtV==(2lEW;JG!\tR,u+!l86GZ.-=I(!7DaW-Q7nCm#br;`U.7h- %#qCj5p.l5M>^kSEBjqOBQ@G&RK^c4O,Uffr1:WB;ju7SYm%1rD(;o;lR;Sg&H8un!!e`]ee]G=4U806$Ys='hGo@%,1B`bqP4Ck% %Ml`DJ'K=FM7e%pHR]-!G.KRok`$T/opbYP?/%hcL$D@qP*fA<@#q2T?rg@^>:VS#%'Ga77V%b<>U/=SeRV\UHC+^,))C'Um'O"co %@3d*E`2ua4&\XA>0'Y^%k0ou5/]U_BDIp0_Q8\pch&:3=OU,*!MHNA4[I,94295Dc*KA#XhFGqa\ %8Q$Fh!r.&N#SFF`H1=m/j!%I#1:i?Uam0,$U\_2#%Ls4"Np<\i>so;gS?+di!F7]sc`,Z^.8,3laZR^nV6W\R2;$)=c/,Nma86l'K+l[`eP`FC&LpfZ(o.X41T'Hbhd=GNY4*"TBK%CVpjJ@c%c'#*IXJDo %#133EIlJqZ]/&6%P7SXE.WsoOQ$KnI[q$I/3n:\MP*HLHAs[,EVc][L$>WXcV=+V@h"=O+YunF`[54U!ZV4J %<2/+VaGiciOmBc\`N=pN]\W;?>i+`GL&=D!gJ8Vi^Rqr;,!F7jmBaonLCbdsg@aT:,_)YD.-I]f6UNo'_?Ztl2P8Og`L]^XbiM`j %I7AAsQ>tKop63nT_/'`@)R;A.B>D("RF-[-'u7mE$Q@^Nr!\52]i,#%UVHSa3b,"T_FqTDZ+28f5m];2^=[7R,M1uP7f/GMKO_P7DL!'T8fh9XZi_'CX[)`WuGkR %L]OFc,Nq>GD7/,Nq%,LrBR:#$e87,uA3XoW1_H?X4Pe_Jg@"+oSd?EXcln&Y(#iA7k<^4B[QW39MDnV2$GY?L@N3Wg_V*^>6B7C< %]\%,2*C!u1@u.fm?;Ci&GC%I"0"*h.)^ibVgS]]\^sJ5UX\RZ=>OD8h[u\X6"4I>%-a>o[*X#3GH1VO].\*n-=M:*(B,pt#-Ho)) %Yq6AohS(WLSnE!^h2PRSq&3SgACGt?or+WkeDimoKISfB%uG-Q=pcArX]/]T;QLD8/#e8]YX?\#(k*7O9J+0$'F(bS55j=bL9XFV&KSnq0iMYI3!ok=&tBt,sel='HJ?DZXs'b;AE %/"dP7SqVNL65D:)k/:h)b_CAlI+f$<<*l@0iDaZ+2IFQsRl5rtm'5Q_CRMSf"qXnkGT#g8bJK5[9]B1crZ>WWXs6TB,l7c<%p'gF %)R5C/a>k+%W,mNP'6mEa3">N;^N@&T]/_[JH\;J@=>:[%"rCXko3h\q5!30lZ">PB"to@LM%NBZ`&h)+B;t>.8%a?h_4P'jbc/]G %<5I4Gj`PY%f!YnUFTj>"S,JdEBpg(:"3<0kU/kYNI25$JrJ1b^EfZmgi!:*?c/i/QWIGHF4R6!`GrjbN?J7h!m %P3)l^*jWC^,U[foCACQ-HA3kiUaM5#]3e.e,;fMd&d7#+Wpl,R7YeUoB_@k2@8$4nD!hN@>9]4Lgd7LE?H^mhpniI^`]NWs-,l;j %1R$3r`(IT#?u8S$K@uOJA<#E3E1O(B_nP)Tf[bu=CISc/NRp[nnF5gmIkps`#VHq%Ht!67,HRp4Gdq&&#RWP#iOal5nc2+W-XP7q$Shr^?c\f/cZnMS44KT$Gr3t.5dI*ML7TQfn1D:n*`h?S43B*3OuG`R+E*Oual2Y^$jjMMLd]E_A: %gO!SYn@le71`?/-GV?fR49#%Ucj'*bAGc*7UOXrar*fJPrI^MfFi#6,UNnE:c8_[&(>Jjaf/V^r1:CS@*ecp._=MG/LCJ:@_K-jP %e\ZJ"%kU:0Tjp1>8HAR-qD6JKXT!1ZUbe`q,?0^E,j`Y>`>s!0n*;X:(qP&3CKlCV+Lh&'E83&;;8@<_IT3rIIne3%9AK`o9_^g8 %l)UJRKCAG\]GA6%_O8m(P0fqBL&4YIOFrPB7UuX*B&@R-%e0+hT4UK`S/S.6\DT!K/@/\KRtpE7dP@@SpM]f7__:;+0EXEJ-L'@l %>t"o3t*.D^;<7FfSf>\![X)641GueW39OhRH/^#+\m"QJ8"VrTj %7o9:WK#SHcL=s3[\t3eN"k2.KGTb(LD@iu/3MMe^6"gre8%Y[/b5tBlr]"56^gIVP59BDmYfg`1l?E="k;Wf#2lXiKc'LqNdL9$f %dP#05[]d*o'I1TGcSe^I&WsUaKbJmBKZ2E>TSGiCE:lmUJom8%#JdD^]DH`qNpEjr&S/=VPHWL=P87W %:A@Be>oqiUd#$P'rY333VQ3l/l7]r/Fal`MEJn^N %.8=OVE=hJB(W^L2-+juqe4AOXi'!sBCk-ji)*X2N0m")6]=LYg;c@AjFV&Xip7&L#X./@uZa%C@4T*D/QD[0$31:E]6T;g`#r@D/ %2ZIh/Vt@62`uBj0A#&J*:<5r%mB?Th!_gUMfRU\k?i+j[hfU.RB7RH]-J0oZ0">4\gL2]1"kY7W_RK-Qh-EJXZd'5&Msr'gY!Zh# %$Z'ZWB:OTLI;g8L^<>C=l@taYh>C`UkFf,'j;Rue`/LitI5,[iQNkDi8ZGYoc5X^8T(t1uoRT93/#<$$ddmO$fK"t5o[Y,IB %UD!:6:EMGYs64MmO09EbEJN2lF.L$sGc>u!iWFoI;SPK,S&Q70C5BB'4MT'l2ehg["W5?d@3*ltY,cgNU4W`+\lsd^:%6f,1Dh&k %_=YNV5$6Y5'!InI"&AuKli9VmiI)R+$R5VfFYI!*B2c/,j(iNocAu>]&OeL*3R5d`Qf,*\ZX8B8dA"s9OhF34]/HLF>`MpRaEd2# %RGp3O9?V>rn:8Qu1#F@EbhX*p`&j\l@7`#XXb[;:EXPBaOWH&[ih#7rbnDo5Hu$>:L/1'sPS>*Pio=g/6\,$,K-(0A4pJ&6\:?58jKHO@,Uu:-.9`6gqn)&W.4pFc %@BTSk"\\+aO>jq4#]I..rsJ3LGa.NfGcPMZD4PTfP3W@B"?W!hrU6I4*1l1kLBWbhqT$#Q3W&noE;*/taBbki@M]!\I!pfh<%ugh %&D<`rc1M("H/<<0lHVH`g#d..Z,_?Z070DBo*s4 %[TqleNbr8,pM8,BU$:Jp>A0$>/L08$B$3OrI3?bGq6hoFDNI\$CJ4`1,eF:XQHs,YPA?Yl8+t7]8`2!A_c:sg?YN.<'\97Y(?WL@p4K?U'G!]*&6EAifq);[pl5a&LLnsbXr*H %]<1=q'T+iA)uXjHW>S0;krC$eW5FnAHms:Al!ZtX]JpR+1Rm1//g)P>Dd7i<$iC;Yl0d)/#ZlMS3'MQ4/BfFXe+L.4e's?Wca`O-o"EZAN2HEm5T %]\uCRFKE(u7u,Io^HYda6Sh54^a#4X$[=oCn3T@B$\j"BpumK7;3'rC?;>9,n,\#fhiHd(RG*\5_#j`S\(C3e)3_`W6UGZ10Ce)f %fm`g-rr+W4.m&PKDsGmA]MB[W*m&@=cXWh-(h:sF+GTeXGe60?_hD?&H?6-V\XC6L>sLNX^s-*ai"'.^H!j=hQi#lc-CVV3A!FHV %M<%,T]_N<`*6'MWgdVU'$:7d%#;FN;,S8B[A5e:FUE*!WK^WYBpD#".(5AhgOO!t&Qlb-/8Gi)Xq]nnji1mCs1(&I-/$gc4c_)$" %H0aCIUsL]f2$[88cBF`pf>2HT8#Ith%[rlS4sVd&;;,dF);WR\6C0^_XBI.GG*5sPUrQr?c(B+_Ps^SG4F^it?AQRl&d\TMJ>d6Q %nF9N;1YFu;2Sge]2q1/sC%>a<0g>XCB(Z0ddl0:g9Iqf(R=ab9d",,fHEVdA=`kk4CQ>f]@&*bpMK@30(.`kWTX$/aVk\:JM!]&\ %52l\6Xkf02;^V3]U@%,#L\,]b]%U>;"&Z:c+K#3Sk8L85eY?9;]g";RZ;[cC5(K4'+3T$9bJp2oh*M"[P!L,;jbKK8\Zod[V`Mi>&(MG)6m1>2W4jM@r7hBf\ %Sl>+9#t*%1CHKA3"4S,C)J'UA(a)I\X[`eX*Ae)Y0+VRHOla'mincgF01hPBna#Yci^DA\4U9>dOLdkX$3R@%LL60_F8j`OYs%l" %$TMs#>Xht(4ef!@S]Ys[RJ3=*@;+XUfUU50lq\;9$k<=.$9S]$3nN9XF=l/[TPUa#"c,q3:)q9%$!Qg+`?grT[GZp1e,9o-ep,Su %4&ME.0eP8,"GP'G7H@,M.P<7@kW**>'=\q68[Se,_\8`7(R9`+rgK(F4_P2(>PC.X16Tck!luGHi,o0E%O%i/J7o"\n%O^31kiRT %m_K2]K'=.#pUdeIH+X(nWGBFMcH8S^eK9<[^ILcCe+fH::U`CT8;c+S-'M8dW2hXhdlm//+8R%i-`hTPr2Lkj5%EFV*9BDlK4-TW %&2m!LRNF4]Rj6;)@h[[?(mZFKF&*7mj6n.O)8uk0J$"CGetGT2l55dY:5&V+_p1?rBMZ!%f]Fdboi8U0:"%T.6971G_Z[l'n6R'7 %.dY8YAp'Mb#"CDlFKh;Uo.o3UX@a884k7GG,m;rOf=!rV^CH]7XCBjL@hs,7m1!K_gZ$d+oB%3iYShZj$:d*nm6EoJV&0$G:j.&9 %Wfg?;=>TBMq$CO^+]qq8@,sZ0]:8$Q:Rt^%U8m=BY1bj:W;*'o$W1UR)5/h+&poJ/audr %#Y\iSPdMnTm3A5Z>S#ZWOl>"6MD^'bB;o,'e9DD<%o'@e@(_Oo"Y5:aOJW\7O*:9m6of=nVp*4r;gaITkf<%KQ6?7 %LadSCK2GXG)QupTJK!a4AoJTT]n;!%l-_];*Y>:Di%sR*De271pkl)>`_MMX+9nYN,L1GHgQM`Q4iau0]RZ[N,=j=cDmV81]8LlZ %maKMD3FYVsP\&e6`ra'Y`Z?KP?u;B@R'II>p\[/_?oiL?KbWfK)8P2sP+91[0>2A`pI27!p1[.`chCf.h@h)KY4a(!!)1ROGd=RKEDBC'PlVmjXNL&c:]6:>PpXA,IOH<`r[)lD#H`fY#M:1f#)<%I)0uY-F0II'AQV.25D\6YY8P#;8a@H`=BYHI %'\?3-rCpR:0N5N?%RH)P[/C8.%0AMi6)AF50aK]f%JP=icgt"56D=I4fRqWid$^soTq&*h"j$<^=Jd_c:78eC]'(fH=[FLpo,/Dp %Wf"5r>Z0fdFJs"[*gUYS=F:fJc6'fY4=mC;[%^ek)0.dSTe%Y6(nUjbkk.j>\L:+1;7!9Ocm6rIhamoC3@"8E!cMg881r@,ArP!< %YBjZRoIYhs$>Ok(d'YtVn.F$L8$;[cc(k9iF;^N?ITBJnqHV?o3XVM.Fc6lcDcMALq'@@?JH&#:5u:;nVhO1^-V<<5DFB@2;Js/&$/qf2nAm %ngn0N>^q2sW973GTb`_g#]LEa`ODDEP)EO..n"6'!bfW:rEg=!g/:nm9g]NlT=,OmM!%j%T2_s`AXUu_Fu*:%L-t#+'.#u]Ghk=/ %k3jNE24";_LOYE^j$5d3$e/a2]eX[T:J",^:j>FV]E7r/XQ1a_3@+E&,jf#i])bNI!Ubgm=COi#+rLlYFmoJ]Bb*r+X'gV&"9U]S %#FM5O%smnbl9`FmRYh(oi[fI:DK.7r#\fhMR0Y55)KFCSkl>iB,)lCuP+XY0&,9IXn]I@gBbZ4e,8C7@`[]TjiZ>m.ICbiT5j-_- %dOJ7o.;_-dI*U5`WmG2\r\-?ss#+LFTud)X>@%NLUo(X'[sN0,W=+7L[Es-)a`r`iic>>a0]t]3#NIAR5GScSg!/D9'PCIEem(%'^1lL3ae'A'Q1Hg:9/eqdBuYGZmg-7#MUcLU2loG3UtS!>Gq %VFg&6f8Aa<6CML-)o+\cQ9c(Y/O=.0")JQ^V9_buGG8QBF42agA5MH^[,iZoDkr_A;XEMO,DhJIP&eT0-%:pN+%T5*6jgsMJLBDPuLQS)IO=$'tF(#jZ!?7<]Ss=.8/2O-K,h#Dp!k9KMqb;JQV+ZF$.NjF2k2Zmd*ShkB %ba\d[;eLQrn!1L]R/74]?bF+RIn+'@LQ@-EZ)+*MD3!FqE?pg-M5kQ'Y\hs+Qd5L]\RoS^6ihIL<58eC75!W"F5=iR4?]CH$EMd7;8RXKLf=c<@'XJP?_MRlR_65D&#X`Bp,m*dc<(M;sQEu %VYD`R-d$Yk#0"$+F)Q[u5O=AiD;.oBF'Mph]YV4&o!%r6RT1RB*_V-#P1thBP\c/G[42dcdrOJRR\P=:#+aJ!V@te0N %jU50NL,V#Ve"Sd?![OHK:n9i%W@f9M"CKXP4*sL93IG4aeX;;hg=d7*PnS=I_9=9AR$R$ONBZ#ApBQ'W=LL%b03H)R0!b;?+topF)"A!,Us<<9"bB%+GGu`U8606$:=#J %g/Fgd%#-Xf&j@hd)f'&6/'H^Z'O&>$7t+>hf_#A?h27@bQ4JJ.A.QV*-mRjk3VpPdq#mT-#LG,4?U %.3+`!NulsJ9Y>HaJs^ar8A_-WqAYalPk %A>*/fYY^7D[L%6aD?7(-kJYTU5r]QZbHfR+WX;g>/AOF4XcoY[R4`PX@p;.2AiR51K!Hu9(n3)k;"kO9CGoS&,jBf7F=N[U@i6^P4!:7a#/&cm7D1.3V$q-pe;aO]c@)Z8+pJ4Pij#oDM7+I(Zi/s7kKToj@_* %pAg*A(dkJgAVVT3EaOElgHqD0j_VVC;M;\JeDdnO&lmi6_;Hf@[07e8'kMB/e9S?+ZGmVPV,d^ia2n %VO7thToh_fU3a*0C(9_@6<)Ff?:qZ&AR8!;V.j9uD9P#iP&9G%i%F[tO+*@25!WXFnsjs?Z@=JC`2NX3'*)5&[JiWF[4"^\m7sMn %]\n/2l[/='%NE,80fsGR7P,X_V=<@M7`qG>LasV6p'J7?h#3U$39'F!-.Eu*@qC7"q5%@.=tD&`>KqJ7I&:22@O-)+CksKepCeAE %#IOYfr?LS5loq8V/OmO@0j,i5_>F_If@#4Ea:8^>qhQ^S#]5pFj4)"a_l@,Wk/u-]+JHp;n>II6Wn*<)7Pp(2U7R-%bN]I#mGJBa %c5T/4-m1]t;*51*U]!]%bQ/1>.o(\fa5ZD=pRQ!Lb1^R*J6hUHFV@d!gRZuoGqNOFK]VE&>Qt%[iSaoa>\"njZ$=W6@pA`DXkqsd %-8PrC=*B\pPsh@NE`=>$p(4ZC#?CN#SQ\;>;2q3QFKAJiq.J]E(Go4BeG:W:4iUr#F?V#7&P#:T%inJ?AJ2n %:6f+`][%f&'mBh*d'a\D!?O+$HK8N*\toL21tXQQi$:]kW0nH=CL/M.7Zk1!.# %jTXSh.8s>VH2\Q!f!p-DbIj!d`H^)4([T@i%dq0\^>6.IR-)RkLf)/jr?XB[UL\TK?Yor3-\o32HRYm<*ue6=l#(GKI,,^Bgst@0IA$^]N-#_BHXW?4)ZUq %#X6gC.QI`:&\8s#DKEa%k!s]_*dW6&W37c+14M^]8,K'k#d5Xg,7hqKdX">RNM3ijJ%u8HDHu0Xh@ANs]72Ulg% %deNlPpMimOiWP0hk=-Lk?mdEJa)#gOM>=`XeCb:@kb9@s^_Zp$gU]iTOe$oTOE=BH/_8DQdr>.ZTNY:ce(1u&Y\GGEK>a##/Som@ %%)negh^^;$[`k9[UY<)_D:l314Kdoc5l#O$*1&:9W_ZaCYEGOqq1!)$GL]Iap`Xb?0mKst4(WP5*1?1Wk9]FYOL:d<=)@@^SR %?jCbXi&0H!&M@qHhVnZD4ndBSIRb7b>V0!a!3'l?hEc)4Z0R)>k)mb5-lR(lAu0hY[m1AE5#3]mG8[.aEd_*FofqqjcZkDh9Y?_h2"Bo?]b5)h=+o8j6oHI %NIh&dmro:TpN:Y5@;"[ONOZlcJW%,7$HeW@5jh*e:#3@'@^mmt],^M)lkF+m-&2(+Zfc9,_Hm:1r#FS84,\aEIpKms+16Hq*Qg0m %muIjD_f?;$JA,%EfBD)!s2R=r9PpD;pp)"r4,@PiX[b>$r..AcM.+doDSIoF5?RpfV;/0$3<$$2tQ2R8;Qmnb"s`+;T(aoWe[-Gb^'_/\]<-<$GC>#5%JPE=egN]KNq1.l?1"D=pFj %#?UY$R?E0UiYFMe_%Afb3r]#?grK,8MYsA"Nqfr`#Y9Tqgh`*CPITA<1WZororuV\+E%R_N,W1=CJ7%Wh:YgeKl1'[KZVd%G9lpM %m`4hBPN;S;4`^iuk]lWZh\R"Q_>mkS1QXo'(E$DXfB_;Q'2X37J+nD3#&p[qYLS;k&LCs9_Kc@nDla-BO'p+lR1C&7X(E'!&?="Y %p.?DoT1!9c?SEq$)&t.50.Cnib5ra.&EL5+Nl__n3^?`"e1c#0Mc1f57^$]3]NCQG;`-7\9;kqs]V45k39*B%FUS\--Ged=)sq#/ %W1D//-9H.*cEH9B2hL+!>Kl0gcL2F$9aAA=LWN(0FqF+Bf$u=C1'WG+T_nA:VegLi!`A)*b:W""<_Rr`fH<9?OE,b[f6L(@7m$'M3H[ku5A5XQ#Xl8!)$Mdq^47HdYlsi<$`FTC:$/4BSK* %PH6Yf"rmL1#!3EARYK*,.96LU;.dYH78C6MMYA`^S]94E-=7%=I62PXr&n!$A5<"jpbg(d5lHY6>QH//srPEfs$Ul`=+)gXkK]+CD#V5s<-?j$+A,-\G).*8>m'Qe9 %JGkG\J!Tfd@,(DQ((c5%D&C#b#0B3]p1m:!83_="Z1-_ULO9F3f877O$mM2Ym0jOA\JKMbSBE]t/m/bA5VGK4TVW"..AK'AUl-7^dF<5$.d0PA+BudiKR17f@\8C7[cX\jpU,0+MsXW%=a.?Cn?6e95),m@&THbOLo*aH+?iXh!<7 %RG!"NS/i@="pio;^a35B0KPi':Rlb]p'=K.,=)F!Mq3VgZ*Vo[HJW:`FLmA2c\)0%Jl2*Rk\e?u1F(LkkL&5!TY]llic&8aF++E* %%:BUHZ/:0`p>Y%)"!#oF^me16Q`TB#X$di:L%g+kF.AZmn`Mh5oa'Rj@l81Hll?Zg6[Q$dp>H\E%^rU[80bBIR%:sK/+9j!*RL>R %5(H.nDUA%>1$%R'Sm:k\d4B55[_XbR]SSAKqr5]*]E"XQfZ;dgFaeuO`9T&cn@TTm3J*IJ!Fu1W(0o'pYT%&^hqp[WMAKT'?e2QR,UbrgL,F%U"Ymq+lcU.3?*^.83*D%C\:#<)$=i]nm4cIW8KK7\Q+(:d\IX?oqq'5UukrJhR+MV)Rt^0lP2F8WGgr: %ppM.:jN>8q9eRi@9-<@l!FV:',@gjUT?Kg]QCM(\4<)LTbEXQ4)0a^)es?]1-cV,:a"Hrbn;MUEJFZ7+T1hD-"WjOL*.LJ2H5FC! %$c@,r>U;6ELAoT:_WN_.i(UChAX;F?Jei7SFGhoc,N!4/SJ,+q0nCBkaO,in=PQ3<\g!9U4<%LR<8%t\K@`bA@3bA]TO@OWq0KoZ %crrrr:1!$7>4r4H=BI^7%^oT;S2,U/1>o7/F.6eaBGE*9ij^F5TEq+!bYtg#N*uL(k5JISM]FKge)N9_ %cb3n=neQ3ab?Z<_pool&io#iM)RC8&;d*Q)kMs^+qs*\:\"*,X'LsCp*WeJsl'_](+q^f]>u%uTe^2o%2sh2K#]:64TjL,.L88?L %[/7oSi6=!$?$K8Zho!ZDR=@sJHeQ)Nd&nA?)CI[=ip,jZK@$* %ONk:u8Dp.@hf=,5N?GluQ3+:/fg0[^hr#HoD5.kiXM=:1[NLV?ft>K?>02LsDO-!KFplBC5P5/E,Ta.ne3!L>po%O,Wlpk8P1Xb'-H0+XM#fNFjd<9+]VjL/6e,7Br^b114(lYRbDPcKZ]1CNg*RT]%4=!T#6u/ %3q?B^N=TGnZ%,fh`id'5_6hhQWa,^U#!_lDlmI'V2S:G`l8\G^qmOYU.7^9jQ?G!V"V9r\SW+ReVc`Wc/ %;E5$J1@+U8TF%eI@h^a50FE'A>&-q)E%!Fh%N&c/[;@]];os'Co&LG/Xqga#!2*`-492'N7>V%C566YS"A(OV^;dD<7I %Fm9'b/1l$qZT]"f7u;7kk:b27E4(ii6`/N;iB@)B=^XBjV?_nr=otD*n9XJPD4?m>q:<^Q"TP>$<_e\UENRX6gbJf"0E]YopBAW08bcNUVZ-dZFo2**iI+p5>8&0=h":W!LV`%b2\Po$Z^gkXX7di^\X>Z@7[mDZRJ6/e %;=?RVjJh7F4[.6ob3[-)?68eB33EDQ5[hE+b/4RRNuHsJlc6FUHW>"qT'Fb?crM0'j\?bV/'W)^?;a5(rgH4AnCC7!\7bVVF@nHJ %dU`GVQCB"H:DdmbQ]tH5/G^bE4i8Zm,!gL?[*=`Qj)aWROhn6A[3fh,3+#_fZT9YPaCADiR-@sbA\GGCYIE(m%68h,LjlJN':a;j %m!/UqgD`8_)AV,?BcCb#FarOVa;gRfnulT@>CP`c*sP@""&Yu9/`ge`A$F*EoaAi:V6M`S\:,c;B2FO9a)bk1I:)?52SEjE$47%NSo$B3).##D9KTi!G5*H8!&Q?ram34AX;5UE=*OPnbR4F29ecf %JT4QElYA7_194D[13N0\ktma[\[_;]*W8:,eXN]TehbYH0_+Gln).=CcPSE!E91N]njiqbJ'[`u`8+ %2BeWLk2;tZJ\qQ\KPUaS^YS5s!ch*ogMOWL[D4h`5]8(]Y34Q]([=g`*ulXQac>TYhS:)QAHeW7o.M %0Kopr&M5pk&I$F8@gLolJ^M+9d.S94X-"j=\]Ni8RA90E>b1N%J@'0"6F'=qS>HVtT/Z5"7rWrr]G47ibG(7kOR^j4/9)t/3O'r@ %Q-qY8]"C[V0\MWEaX9j$H[1/NN07s.8@%ooe@-?_jeH-&]IrNn(6IKUKc&cXlF<[6qYjeRd'=P\(io,S'ET]?85$&kb-m3"0V[hVbZf`FHA4"G#Sn-[bP23/A-j"Q'/EK*I %,A<0S!$)"#4rKL&"6>d4T(;GXiZl'b.sA-MoHCIfaO43)h>"s6P/Ki8%)9t>Rb758i+"-#$fW\IL0FB1S4cT.9>MI(l4,p/!O.6F]++usD-_I$U-7dD#`]7\UZEnd_WN-HJ'?H^m/fTK6qG30 %Mb@,;fi`G!qt4Au!urJm%rNS%!$4]dPB8jhf/b8b5E@VYi*=)NZ"t\n\U;qhoJ*EP(@`!iXfUG^,1SX%q3"#;.=Em'N@9B>F^[k688-"dD>"*kk/Z+Q9LiBA)64*"(84('8R %l60fdY8KO_e6&H`VbJ^Q=SjikRY*RBDqed9mmocQ\GhI]e>m19/6P^./\,9o,n5HA@i@YAProD\]pI(jZAsU6'2PiSOASY8B4o.L %$oj'-XlsK:#cKar+c8AQM6@F-+u:&r19Z6R,f[3k4d/aIP)$LX+ZME?V^"$?B>Ga%W!jd>R`QtG\.TCcGGP8PKY;NgHSHOQ%?o7k %_8KpNleFK%VJ97Qks"L2q?gSX,dC`M]43G[Iths.MB1d*2TTA!4GQMmcKP&fTELbAl]pEP$3=l''*4t7-feUEMkQs %mE?5.1H(Ub&WaJ"]%YN^%iYF0WE.4tc;43\5a>kl#R0]q"7kD`g>5'Tm3B&R.`;:ce#O/CL %L;/A1E(%;1afWkU`@3&AJfML/#XPr_ds[S8-4h6FK?f.7.jHsS#VPS,89^$G@\VA9EFduZ\WZD2Y<]GP?kUS1/f4+E;0^LHXM/jq %OB-N/7RXth8/A+&Zk,ROcX>h"MI\NZHU_Eh(kJ)@_I)2n$#PB<5RjcQJFQbgkc:tUT^d%XZEl9%cQjk"c/bWVm&Ph?iD5Sdm#;A1ML*X(Y3co$XFE\FOD %P:T_q3PY+UjhCrE`'f8J<)j:d;+3IRprEX?Rp=tdhuOWDe%VD:bp5B"rQ(pnV#=KBq6iX4UT@8,ENH? %fb3eXe\$JZIX_oN9BI\B&]dts2h3X:T%2/d[,Rb?3Msa`q@2G/8@IDL**9#6,]tY3959WO[L5eJOh%&2TosZT2iQD^Z-!(7,gdUO %['EkC.Z3QU#enSAl<#5ka3oYY%CH@`NWg?d=ml+,Q;=eUSE1b7/Cue6l]JrK]82EFAn#*AZ6T&*$D,2ANFi76KI*;X+$cN-,1@]@kks^0nf<)2bOF#*"j]MV@".WU(C"o,/;DV*6"7PANKF*)UrGq')OWYh\Grjq5[slqe'H$83[ZC^U %?$*YOm7A`Ror)/;_@5e/PHS#FP[$Ou_O8U:8IcjF-mPb?f$h`3M^6,HnXC/lRIH>qNuN/dV5/s$Rf],@II//eoJD5cKk^T^9AAB? %cUY8:b.Z\R%'5b%Z*BmJIU=bR(?hV(]X+9"?h/t4S@`$gY%&R0WO(mamd>:h_'i]4DtN3`]P`e8^)e$5.\J5p+JJ9EA9u;(l[7FpR'?cC8e`E'_bi0LBPTLM_7Ggg51fB5mCc7;jD5-\T5tCuFHn2E:([cB9KcfE(?AK-bsS %c_:ds/,Opl$=C1#X8% %kqk/>Hh!J+NjZF2RbPBD6\p**;5^bLO4daA2+B=k%d%7r6(ijdXA67O@O]rfb2N8JK`;6eofI]:OpLNEJ?^m2_Zn:_R`\2\BB#(u %,*I,]\Qt4e[-]s18eX1ceWU/Q[-]]!i(E7G1H:U4Q/Em)A`(\Nij&arf?IX*Fk4/!$=WmPaf',L9bt3YhkDH"b2s`0I`VG9qY"Gu %*V,XPK(ZUGm>#,1`@.e0XI57=J\QGm>$okV_sjG%^prYd=eY-Vgg9)8:uSok3//^,?Rd]/^4-BJs#q09B21_Y4'Vuf[j]@)G' %`D!K)9BoS)N-cI#>-B(GbO^Hg6f[bIrO.PZQK;5phsTFF9<@5@]TWc$SLG6>O=K"IqGM\RK$V#Zg5.!o^&splWa0QolE#"+SA9fq %HIs)JA8TG.*QP+dgfEY>Km&O$S'Nk%B@8pgLq9dsK#7TB7"d_E18#A%ZQq3>B0F>*:b0Q&JjaGpG:L_^&N2I>KdL$fP %>\a[ehQ3@+G)p.0-]3g>Oq*e3%+SCU),YZ+,@88UAm=b`l8'A"8QL4a&.,n^*@770VapC3K\]EYF,WV.5[upA_,gj4\1#;uVh@@W %1$BcUDWbhKL5@bla4e@K*2F<:E3,V4[hJg/@3dpi8a@,%UfMu6m_jnn@SuE<"Wh04N0!as-rbU$XVqQ`5JAW&i<&LN&,rm %CekM2nEQk9YVnVkR@h-F+lFbqi%/!64cZIse)2;[&9C#6VsEg@]f&.BV4XH$EOp %#s:i#[70C(ZtkSAEi\2;)g(+VGB`NB#T,4'5.gW)mWaA\TQhtO[eAj_[O#D#5h(53BdGlo.nK[I3,H_7!hf7l[Q&D9U:jcqG%3L< %)!;$'5Z&`qTU;Q\Tpf`bHTS3)>4O%UulO#"BFill21:Ql-cu,Wp.? %#f^1VV2-VjCgaaO"fDn;^*7OI^NIXf)[M,P.a,iek[:pO<)+hXDK3Tk]QPM %3NWFrHQetf'uh9aIfbC`J5a8Z#$g?g#;FWIXFgV!B89$^#'4*4Im^m1\h\rV,_A,+)D$\sqU3HV"GjslB2Y7>p[7VU.*=EC(ai<< %OqP@f0@UN82B0@,hHqe+mjFGUJkaAp&@eEA)8H^>@*!Q][3mn9Qg=]Li2@Wq*7E#Vb?He$]pCbB"!=;fg.Udm1_TCG=GQ9gl3gC1+`u:l*8eJLHi#&pG6PF %#6!k*qXV&5W$&e@-Xne.FBd.(7!g]#qLpM:KVio7auDrJm!))I[=RL)e[0^p_jsrB996.#d3:$oj`"h]5="fJoX"kpH8K4+UnA+q %k.[T)X%9Vq4bZt1(+.:LXqU9$hfhu`,-:&%lO1j2JT6[o?sIpggs2tjn^[^YEKemRYL38qc&$'Te"UNtSuZ8kWo2g>AHuIVBZjBZ %X`30&XMG7`(22sKaO+mSq=,fe>V.+XQ[n;07U=M7?J.85[!>&ojFM4CmA+(k!F'm]_X+olpVR^g*[;A2@'TG9i&cpfup7 %aLl?YMZ+'P'0mf4e2A)953sLRCc^p5rSF[ueaIp=lg>CG!OITSe-T[%grdR!*IJ"Y4b""A?(ge"4"#.O:#PK^"9cU$G(IccgL=l, %]m37I#n^\QE44<*\[gbD#3jLI##;@<@9YWq`-8-K43jHB'&ph",fNVC/5296BdZ-8R.Ip\cGd_Ea7E(pd.j=#]Hh+`\j+:3k7rmM %c#U;\e80CXY;5jg$=u5?$CsK[IE[UG']aRuP`6F/#)e3HM?@*0FV-9#P-ma6:F>-h/\F6,i`hUg\_9uZp6593 %bR[VYSAq?X6/?I'On7__WC[%DY3-6)ep,e+Lr*66/.kN=p2Z[oebKQ^:"eZZRm-q#F*D5(=X5"X+EMa>@`%%N%-P0.euSn#_['8 %[H]@>XjUQ\i%_;;BTdh'^UE"g1pcHY&F3?QJDrtFJ^/&7 %YE:#=oFub5FN+JiafHWA@XQg>jVMm:Hr=V1B14Fl!JaP0#Jce<>SrKP"t3aUQOjR.+N$N[_?_Mo[3giFGn=-9iBb&.\Z7?6I$i"u %NT:fOXuV*0VQfiQo>hN6f8p[UhLdTdEK:]iTkm=63T:0AM\"#5lSjth+i)HV7)6^%,Z"A\IV\C[,En6YjW$3>WZV?:1X`H0$c*H\g:Olj)K %$]3T'M)<2gVm\0+9,QLc\?;J48L+DV"lCt7!',Vc7(4sjUBB]G0^q9Y.hX'f-mE+63Q68VnsV5uR"?9)6gNhgfA==bk-:,Ij70?( %=nRLRe*j*Mq&oqo[+JkS%:e3t#O'.mI_2/mK9OCP\qAp.<`T7s'``7en"$5eo-Aq%.`$E+'aSg_$'2l$S0Wo\bkT'J@\WV%L>R?n %YbjtHU4Mb+4Rt$6*Y3VG)9aNG'8hbu(8ZQJbP2fjTnr$SlPS6Q0uYJ\$MVSLBnk!*tmL>R04_'FSK"MiK+[Wb=>/>nF*kG1r[geK2Xkn'Q$nUgRP<;"`pjlN/[m'9=Cq\$HphgX(lYd %K$Vt)YqVeUI$cEFhPNml*=hasS\h8*T5Iif %E?\Si=EA1tjTsL)j1*0NAcoPG2hqNkAqb@P.RDd)iR9tnP1Bj %-WCL.q7$pgm=W18KJS0"+StXk:r15d&IV19K'+=J!"(pDm\SgtBV7g?M3'0`Oe+/8Nj-KUIOsmaObS$NKT4Ie\g/>0:n>;6fIs`k %1<#8W[<7$]5?FAtkn>42T*R"=%:J+ff6a\cVa'3+$UB.p`hrJ[/R/ %!smVYAVb1`JAqV+;9+nkfBr2#6p/`q;JgGJ\qNF?ZnKK.&)UN!5hAFHUS/06hQIShUffh*FM"A1.N2=d*Kj-/rItRjI %K4g_D`+[+J"EWH/GdL^W<;nMf+up[\O*8=61d`:7'^q%&YcJj)_o)=*G9A"PSI"d$E7nL.4*UUF8`1c$@"McKj[.1j#oE7F+K'RE %U43@'0jhZ-j1W=CQddF;aDM;>)'Rg70Z"S?j;dr4#1:d%3WVHo4[S\OrQjS7`-M'TfB!ks*cpl>gks3\FiWo2R'S'9\$-S.`L;7@ %GHTLoFnGA$(MM[Df*`%bbYE?5TkN7)E>jl8561.B"+4F(1N\g7/l3#Ir"O*mVu.BQJJkOC5]W`DSBCe<*=RN1FKj[$DjjQedtRtr %kDs/GrN0cDMKGDcjT$B@*I)&Lrrjr,0^>^_Dm8Wt'+ie;jKSG`99^0'%TRqV*jrHm(HFI([Tu34OYQe7No\c:!gXDFb/4?ulOIkf %A$LZg0An:j+Q!S0h/Q*B)-he)]tj3C"Ne`PO/fD1kUY9:D5<9A?5j97&:ArOD9'G@#JBWH%Ti)R+M0\sG=pat1^5NH7&I[iJNSZK %oLO]patXkIB"G]JH$4aVAAB4MA#G*5Hk3+^Y0'$JZP%qlh+1AZ_I+G.Q.;of=Gn#Zhgi/W-!"Y9aXh<2UL]n7)sb]d=X"5I.HYMe^&A%R'R`a]5[du7Hq %=tul*9kns?[\u#Z0F3FcU=b%m"R`WjQ^3K58&aQJq]KC>ILX@H">9\B-,rtM@f51(XYus2Y?PHe-I0eFYjDj:48&/oC0Q!I5f!M@ %mbm+2QI+e%3,H:p+T&!pX_jjUX'jKohP-$TJOcQF!h-o`82Q8#G3:s'W<7"eYbF#, %8GVl%U[AE6D>b*Rr.8<9k7tFtbdTP)Q0!7+3/IEG_qgk9:].q^$#d3LrG-<,3<"O2@n*')"pc7Oj&B/qHS7)+Q4(3R&Dj/U@)(FN %(uZKWEX!A_bN2q-hLf9cER24K/B4r>$.1+]5\c)i;R0aQ^JFfsbK2W7CjXr.+4YhbDAuj\QHp*hEVdD!!\a9iTMtj(3D%kC8+],+ %]ttMbfJ'`s^F#2=PgZD]ds$C*r(i=.&((kYrl:kY$34'3#^S+h^W,s6h-JV':s\$&ZcV6m(okm)/ilM4Fg>DtNI %Ze#8!"M7Ufc`ciCXh<9?*'E+*;;)YI?58\:Cl"G+\';<(T/Kaj54,ujH^OEca=/5BkO.V2OL.Se3*gCIqp\hg[i!^"1#sp!E1"J-J-S27eJbTAIdph^&CGl7/A1'#!o38P(?0@O\%iJ7_h,iZ^hZ.?SSlAU$qf[fm$m=t:N,PZ %s5WicdWbkhdm8-KpmP#[f(oEj/oq[BQlBAI4;tM(4\9#EII9TgM?W>YU2.S"gF:eQqpL^MP*_$L+*RMpo@K"2W0[C"JM`p?MH:MO %):b!tEt6PY0VS0f>OM5EQrg:VLFh&!G8>/)AA.(T(Aoa`BPC:Du-t!tB$967Ice\\$J/8])\c*fZ]$>);s!n5A_]dak;>&:tL"k`8Pde[30 %(j>3-fDMl#p@l%INRkkrbrN8I=7*TmOG7oR]c,j@&:iper;7=Q`T[@(PNN<#O8mujk>8b.-=BLG*Z)=G/7QN^.g[!2*!Hp;-Ta#e %33IfqlAsE;PO`NN?fD3tR"LkcW`)M(02ioVCg3L;Hgi\\mKZSe3H"$+IDSSLp3V,=A2<,@X'\5bJ$Ku!$LHk$5FK0+*_NUa,!!bY %=4W\];16GZbIq@VN61,OZ^aKKnc!dEJ)pd*AW2+!iVo[qk881ln/iaFfWdl% %9a5oVl#*#[CB9k:S+*5!9cNs!chHE::aeLS)AkMncFhZM7E_LXJi2u%aL=@ %RX&U2qesJtQ7`cu+Y*Nn/9LtJ-DWJ`W0D[)M9O(38SF0,J2!u@bg<#1.u?U8&#`lG>\&\.MS!64TFU"i*B-duYlp'$Fs4h&JXJl, %^eoIKYI`HU/4,r/76AS90iLg4dricMb9b5Ll$^YYn\,ti"#%Cm-C?o!#2/o4l*EkD)0lM`r"aE!Es\N$KO']ETr:*;Dm>H'2-j79 %lTG+Gmeclmq,?#UfdX4/!R>HirRPmj5^rb($G!>#D<&:X@4[37A-m_5/C>(]%[E+Q[Wl)>MB:Wf*'8&&mc??)Z&jo/P686;RphY %/7Gb7D5Dm!X?U->#T;7omY)5D'U(^>'ONB:a*Hbe]^Ds=7JtfhEabG$be^H;i"J<[eTG_s?joZDnK:$1l_+4h)Q3.IqC.KZndkh' %:QR)n`SBW=)$.Irk4A%R5!G-'Hse_u,BIiCkkSH#e[EdJ4;5?MXD6GQ8i %(bsO+9+=doNNk#Me_>Y.g20_nJGOgbQ8CZWXArP]\MX?PA2[CEVT0PI9/cPHI5d>XN8aujZ]R=b+;UeHdO!Ghuf!(:M %G(HSF%<"9#$J[m$@tWM(dlS[BWW`BT6hpm(@j57[?F:I??%XcK,0]\eO]+tS"&_*A3^]Ah+aM]k:oFHPdHr/SI]!4WJ0j/TN'04/`1>dJN"! %,ZfW/8j1PQR.,GRi%7,Xk4;_LD/_0br7$VoD>5NSWXBiRP?Pt'@p]GHI+4ts)pjB/b!OUml:V7`7O%bZ*m2L7tnj_^gieGJJY$c:PND>dr3R"'l674]"0MK@%qVNV-e'&ofu(aARMj12bT]lJ^*nP7r6g0M2[?) %#'7*t9#eFlbTON]e`.(U!jL_6PP%DC>QAqpqOq]\Jj.C*'r&YF)q\O+QGYp)gt&n#P=a^2c:1&N]3\3JbSaRjK(_V^-'2h14M2Dp20>GZbmAfRqucQ_7bYc4iS,;c>m%K8ltU'qp#7$unbJ[Er&e %Tp.'S,o]GT80bYBn#b[BHYM;TGD;0LiaQ'cFeV\[3JOHXgf\JM#%?G7fY:%W,@Q4UAQ/%30if3X?(S"+37:7*L%RN^!nS\Z;>t.8'o']-T/_FLm@0/oD"+m$DPe=EFb:Sl)OX4L9#ho8@BU8I&T$RdH1H4RF %G!rW:0\6\WcaX=m30Ob@f!_Z^g`0Ho\niWpneOHp>gaBlp0aqqZ+p?`knSkabsiB90XC3m@YDjajA09"ujKtAu7l,J8;l#Sd)Kgc*Xo% %BpYZEdO6V6@&E0A.q2uVQSoY'HBQAepV2K:$k@OE&;HIT %Os7r6oa;Rs@kUgb^J=ribf^_&8H/T0jYZ:ESEYocDPjbq,gdZe%7o1dZZi_+U.$_*ObQ.e:D1#UAo:GjgY7pP^_FjbZE[/m9OK(l %4*gLlL8;&Eag+<-%Y3k;ek06r8M;G-+rH'e!B48-NZY\mYq4KAk)`\c>X^9i"BQrp]E%/-b0;PYp(WNkA;*@TX=^1Ucud*SaGFt_?-$h]$#-pk1jCBRX/^Lae%$H`XQMAN6qiK,DY'a2`N>nN?uEu7Vm?:69g3@pMB %@iZs2-hmo%$S+2]oN$08UXX%gEMNe];&XHhS\/^/EbOef:(\^u_:=McTr;o#ot'(d]4Vs(DU,.m&Q %MJ>H/U=.]Rg#Q[5Ubq5U\O)9XRLZ*&"i477_!b.GqqBhS!Fa2bbK,hX0:LL^`N6P\LEqGI9c/K:HD3!j0FceDRSSd7'X$g8otJne %%$/$j&g"3@R*;jT!)$i(R=Et6hE$/i)p039Y[9N9;j=T3KQ^7X6+'0VuTnHrONL81R]]+^@FR$::12*V>$g %a-K8IbUj\5\MVK3(J-$=JXJ.sDW_uT83Vsi7W=[VDSI);GqRn?.aU&-%).RDF-h_\DAI5r#D)`.$9R.$H3$#?:I1Br]_rMYhtj=V %K.V8?J>eEBq)69b"!F*JVr_?^D1*+%Z3*:lFF_uC+9I%-#8)t?/"j92l&\2'j?7&ZrFklJLi=Dd4N) %"55GH#rfHd-6^lF9hFTNJb=Sk7]0pi?ponR=@W7Bj.4RN^^+M7s6HToUuS)]k?A`;V_l#!lE %#hU=K`Fe&`d/gRdA6s8;4hiK%_WP>N;>ApI7eJ#4qM*0%V2QG"g,H08?05[&p^LPb-@06s%=(osEdr64>P/@fTR`EQfUZ8#E5-`N %69fOnE)2C?#f::K'ggP=?YGhANc8+=an!;pgkC#[*Qa/)-ef46J>q$2Ufs0?/EQ!ff1i*5&$hW' %eM-U)/A_l,RkJEaHG*4e7$L9UE#\`hA-bSW-s;ck;-G^EDZc3UX@60P61_]LFl1JV/)4pb2pb-<1kEjj\LiA0\;iL$Jf$/orp^+(/eHhtB@;fH7o[ %rF5rj7d=c%>Ah".(Mo(N8d"_?iEdhlHA"8JfNfFg,[1\gWsXIf)%6a^?U'sH'_G`:[u6sE./m\KB-Q2:\A>9Geo;`451%.)inN\k %-Cr!l_<$%5ea+Zg5nECu[hE`@;8e^.L$Yi6k5<3UE$Fn$)J@??K*"PtVh.$;$Fh1ejH.;G^lkf82K2takIWP;F!UJAOmtgEbAjoR %,dDIi9-8nT]p^S+R"Ko,GAG1#e[uKHO_t&Dd/%LNqCj8d7g=hf)'_RiZYa1i!Q?[:r$r&[LXCs %__s#/:/YjS`EP5hla'i*'r9DrP$oo]i*rn&M8'(&2:n"T_W"f.mDf2MA]f]0G[2N1qN1U3;"NscS#.`RP25EAea %$,F(ZH:X\R/@Y$K#b_+ofbPpH1FM<3Z+J,hUrL.d4*YnOOiGj,iQ,D'OMuQebJ-;&cNbC-"RDa/3f'NU-J7?0b2`83*l#u1')pPW %"'@A^M^mQ[1]h`T/aX!0cU1!)8]SF2dVl\pF9Dr2n3qMNX-R].AH[#'f2lW:5;>,>JmSJR#>o&8%UP$_DJ4H'#@&cT8[.6ChgH#<_ %rc&rd@ae#6p[;`k$e36(YlnA(:EW.]FYG">#Md,,BG\h%_u(j7;E4g0fGWin.LM#88^@+:-+d?s8p$"CXtJt5Z=l$"+I.KbnkiRkYeU[#.3M-BiX3Nci95j_Mt=>5'#V%^ %UJ-Wd1%_OSfRepu5,0Y%eolt!B3`2n2bpif`@&#PHZ@LE$Mej?+hDjp2&\fmc+9AJAB:VfW9Qm=F"SKT1+sMT_)fKeOr_29!@-7f+f^4_!48E9cKZJuuNCJB&Qu1D]jgBts %M;(1S8I="l:Ks@bq79%%I"uZoq3$9Eg^9k[jD$X]?[b4mb*4HpGp8PnKKSECPZ-:JG\*Ie-(lFk9\MB-G=HM8PH2V^RmmEVjWdlF %?-ts68^^p19e0'qp;(*!3df@rq3oR'JIjd<182lb.u:+%qjI[N)H3!K^"? %lqTZMoB6_iqV4$lgs?AZ.iX_o`p/W.+/;)/S_d8U$7RW26F%p7/btAmk(XiT%qY0WDY70Ij3Zmr.96>]AhdZLK=529:4k %*tZE$isY:F(fH/*&BU=1Hi4"k8a*d@2P[UA93BY#Uk;CT($m'L:o'q"XJA^"nqPR>DE$u$_5R^=?m:SWJ^0)9=i/BuTaRNJ?YK8Z %J4Dff#q$MDr\B#r@S,QW]!4lU:4\g?;nrlQV">"UDD\j8-,Ct(2me2CnE$FXK:Ees6,[##16R0V]OfKQfLW%i4>:Ac#n''#LX4Ht %EFB"f8KX-Q$HX`T+=;\M"9PdcNOG3lpMZMKbM_anoO\0Z(dS@[Rm;a=YI#>C;]X*+^&`6Wa9?!aS\G5(meO)*%ARBASknA2&tQok %:q![X85I^taHF<#L3Nq:eOXbrfIuQVR5[*Obmoh-CtOjnT'*B]Nem%eJN8@4Ag*S\YXIZdH3Xd5@Bb8U6d05n3X$,-.Z'6)jf/t5 %iEc$\fN(%hLfth8rY!2:Q`P]G0;e)`8-b8lkA\*jK;^D`V,q`[Pq,?anp>[(Z^E*CmX"`](+-3XDYG[qfK'2OFb?2:m?VkL`RuDXIhP %IfSR_PNl`<#<,-kF+'OMKapT1N.oLL$f)lNpFJ5R?_dp`LP<`ok`]G1V"]$+cPt(FbagU"%:f`Xk20pZo$/X06P1Cp^geVAUJ?i9 %Rl<$WXS4-kD(pQh/D]);h?LJDLV<)&K,h\LHJg]6%B8`1U]kD>GLU91Dg,Mji5I3A>0A,lR2<'jApp7fMJbnUI"-%h,]'`(K`q#L %ecfH>_g;A:7Rqpe+,"V^[L@iFRB:!BF'">SYG$U(qKpTON"1m3!9\:l$h`Nc*aes9lTb@fil&Co&-iD^b9+7T1RFPHF;DmI0$#Xr %MNS!I-,I020u^YFIK;nHM-O6gj<9gD,iu\%6R:!d!_N\(k)gUF%W^E;9SNI069WJ:Qba_`2J/lgHi9S?g97lC\.0/a\$j#%RAp3b %#7r'E.tAOsi:G!u'l9co<3RsSU.,9AN\mIc#la^:L1R/@VuYpV\XN+ejg28=+22l#(PkGARoIs8H%(A9XpeadV@ee:;jAN3ocajU %=te])A>H`,,L3f*jWOY?#E_TT_F.od'o=P@\O?3k9R\$bE\dPkbL,AMI!pD?4AZ(MQ-KY'.kl'_4,6'9EX+&6qr)&jfADihcOFCT %XX-=3!I2O5H@dF+Zu[U!rW,#!(#5QJ;+@OI:sS0Rh;^ptoKUnU%*+aJGH\CgoYUOD[LPXsD+F\=#I%*1'riKL.^N3RMi+0?\(LQ>hQqUu,A8E4^9B*:a#:nu=KY!*;US55e[3*! %4mus>GVT"Pg_sm.+^Ecn_*'+s!D]Lo>ME5K/23q>6c:G3aLdu*^]N'3aVHu1n=FIb8!B7&3LYn-heM?k:+--M9%gqU'ahr4$S"*O %KVa=j35RI2\sUP/r_#5<"uXo;_X6KZ0i6W]oUdK:C8NEk_l0!SI>Yb=+MKJE.1ej[QuY9V %1B[;AnsCTXdU]-OgpW!JRRUV8PEf8)7YIlA):WaG*SCt,FiT\$iDURnrV3H:i[>0r<5tg_]2OlGW[+=JZcGfP&P]djm]KaC5/GnD %r0h%-j+!]>Mk\QbAdKbO"qPUMB=7U#qkqZ)4AmA0>3L7p[SLG4M'ClBY/2do\l&i/[K%U()"2@3@8`l:F:R_oeX,N@/ks46]_Zi16T*E!T^Hb:-Jd'X!']H>hO.#]jH?')=tQ] %2O8ZAjHV=+h3%df76CS)V$J9*rE5s)r4]Q)MhbZ`%0nlMT\td1n%WD;3N!DTk-Ira@1f#9JSK[[h%*oG!iFlTC;3oDV[I %7o'"?:)jk-o0O&r>?&;j$iA5L*[LK#\<%!*ljO7#4><]^?*??]-*I.I9YJZ+]N5Gq$*L5Z.7sY,Scbri8DDX#6mG8\ASBEWc@i!EiDK"cj(+8oP2S3_Ql_:3btu+g5jnAi8;fTR39K1'\n.6",MBa;g"FWU>WEEXoSlUhsl0U;b-o=%N7#JO6pGoej3* %1I<_a$IWfh[,V]FlPQjmRRM2So#_QW:;K*eD2nU8*J%o&fs3%$fe;:[+b'L2`1S-PqmB/%.jg!ug!W1A't%n10`hO!HTh@H*QYHE %ZS7qh&in\%"3Ts",@DQW>,";[Q>"@i[aV)3u8V%t%OqcQ7&i6\:[?AN%Xc"B@hms'P:=[=\TQIta+F$k.E9M`YUNm$:e'aaUQN>94FD!i8oej4=.O!c]W?@+C!2N-K %6X/sN"DRe["%tV6U'*]p)a](Ns67DjhT0aq+;r8;>'^CE?YEM;rJ^qh@L6iKDKCtMgQ`R6)>2s5WU>$3&Jh!>6c8)ap8VR4^+^4-SHgl26(nK*LPcchP",buueCif)=^QOIcNSKVqjW!bRi'Ruf.68c`'+gHqiJ8*t[CBQ>f %a]I2npI8?'-hKY/i'l+oq4Ro!<<#hdc%uNP8MBC"jNPJga9cKMV6Po#/e/(=rW$hu5q-d,IUmH>U/t079rniXFh'Q/e$m<@ht)M_ %BB>RXgX#c5_)LTY=j,W`C#b6NV'+;fHhN5AYH#8h)P8E#pgU%CILRXX^VVKQ+VXZ2TW5W_?n`;5t7!oCh,t\k5X[,cBYQ1g/P^1nW+aWt!QS)N)'[_S,PO)AC]g#0Zdj2:T^Q3Ht-&N:NVL@o@:,J %.O(`2?`!/1B/,WDT>]?R1nOZ+Rc4BT;34R[p%3)bR21aKrsY/AgNKA:Us;Dj1Vgh!#;Oj]8tG(%2&s.5q$m.H,R1N0@f^.Xa>&:S0qWA%A62$6N<5,OptigmaI=7u+HILmO0?)GD%T!lJB)OF %60bC_[uc5LHAt"\$p^:O_9+m6$^d^3EfKNd><7lE-&#t4^44+8X.V!gXFa*fAP5t'qJqr:r:?s_U9+4@dWGO%F35fLn!.b1%]M+I %Ro'OX>"1#:]/&*h$g3ck4.Lfmht?9?qG(*rVlaJEKoTm%8k!+?[EXU`fA0Flp=[*[+,A"@%!_45,<3Q?-VMY^\f8Gt=3;'6"_:[( %VU)F`hRd!mEkuh&.Yq6hk('gLj]C.MGg'+?0c49m"Y#dD&[33I.rpns$%rF_$dsc?W/"L_J[/c`Zn/g>`Rm&r+tQ)phm^8]%1AFm %9oUThVl?q/0Js1aIZTfGjZ-`r&M38Ye$%Y5L9`*[_56+]Fd#]V8B4a\An'mT@%,$WnE"'b8d>LL%3thKjRpjW0],qFLPUC7e`gcr %TSUpf_5ZoA)Oq0(TgMjjC$;%$/Bn[#fB`LsoA"nQg7d:7r2\O2oO3m,.]2%G:b;^l;S#s=X'q,f,ppI2Kgc]Q>V<_4KI<^)*%Bd8 %Ek/gajRU("jt=/-jiu57PD,4ClA3Rc@S2ual/p9c>'pGO*m(n^[[F`X+"Rf>'jH&$(_JVRli5+//7;YuZR1r*9M#-AZu0N%4IV!H %k^[64e*((l7K"phO,HN7^bL[+0tG>9B%1"!=='PIDA-kbeR5nOm@0NOS9,;:Dq&k38 %5-13!\`<`YG#WEOUbl`#r`H4lk6RH7,*,'oP?Cj,QH+o*OJ&Jb'KAPn(=3C`A"DtdW\-]CU,*Rh73.To`t]]:-9ISGE[kd8>EMM; %3%ip,>5CYWQi5':!2eJWIm?Kq5+R(5o=8e$[O0R8V*XRLk9G) %K;7Q"m<+c_R`^'D/*+WX%d&J08k1M%_em)0.ps66P:%@-2E.dP,'b.J:)l,31YP,7MQ38dO]\\U!aeQ5JMXE[HrSc+3O$qtTIR"T`bIV%daSQ*Vhc7Rf)F/2'-@/9M**gZ89t4'6?Va\*g:Mb$opA#N#."<\%U$]%eGmmY,6lZqk=c1*] %^0(TnUd-KV3^ %\)mVZkB'IcQKa=ZDWqFnXdu'U4>;X?]poP[6+5ToOCl+Lq'^]jUQ:Rqg1-@SjO547!2US?f+)?dfb36I5([n8`ZN/PFo9Ke#2c=C-gO,)19K7r*dI4%?2T!\`KnXS6h=%5H:_V1J8&62.h;h4/n!NF@OG#,9G\%b]Z]En %:HM.ZWs^lq4d79A,A8d=a:i91PeA[rOZXEk%Eb59@o""#nlSI^J_4+)-dQQUh-Y3*$(*'-o(tO=9A9TKdhf6EH.ah[lnL![($5l< %X1c/^qVPgaA-R'XeM8@V-HtoK=[[MYV,<1L$Ia$db>9`iK#n8AQ'M%n*>30_1*lB-Lle&3*#A6qJEA`m6\n#$hi:6,J" %pOhre2OV2qMbQ[U2>t\gX],,<"]Q=AEj^e-,]2"H:r%2+Vg+lGAI']YKVkUK7=I"nWLGM?V#jOtRl\X!U%BiP)RG$23r`*gh4=5k %6)oH)r>$Pb['@:3QXrb?'Ef-0bVj %2$G+nGB!3A7N6Ztm_^oA3>qI#_Sf)6LjM?n8d?56@F8#Ee\hZ@b!78I)gqV1[PH %&hd6M6lTRl5JH9W4:X+P9q;3Zjcu5fA53`CSjY[%+XQYZ!.=iEq3@l56j+nCV*nPp(o]/8:Bll#AB>scin#-lM:LK>)C(X2J3EF< %7*K5[aS@S'FcDV/Uj"O-_M8j$6#rYigGCAq0Fc\=Ne"IW7&hA-rs<]KCb$*1fk\/)jLl[9E<\*M2<9k07nD#WT=(thAKYLF9kdP' %SL(.)SXH:<8Y$`>p_c_mWkaa-ooJ#Bo\MY83]%jVAF8XV8'C's=hlfFS3BNYNN>L4as=kuZJPRFFmlbS8Wm>8I6mj"^,434FG^ZZ %%gdP)&#B<''LiWk,pibGTFP`s'J$d74l&-^^K6fU>%SPTpSf>e?Uj7^XK3/N4Zkhhh!M[(;UJAbjTEibRkWlNPlL,?Kia_>&1gV* %p]?h_H?Z[c,1WfUBd!!u8p<>]S0jBVTQDV\Gg%;mH'IoQkskH0Eu[qWCX9,Q,iLtK["i`B[,]t&d\,VMR]h9a$Bi>t%sgL=`r07o %We7fa)?C)>BeoTH63$I(/Z_uk:NYm!Hc`X'I/5]l#3I/TTMjYQ33B,hbc,_=L%Kf.:%^SU[7V8=?U*?Cp"(!s,PC."#1lZ`cJgoQ %fEj0N30S*U83P;1VbV(/).rlo$)63NiY4Gi;e!ql4)a=j9G0qm!5sdMgJiE[NrC0/Xq-f;h[VnOt71_<:0#>Aqp_+,G='XFV&&r %F:^p5A73Jdl6*n([@>Y*V@eJ=-M8:ST8U]0D3Ms[YrihaQCEfL)hAT!!bL45FHY/tU+J!@O"eW\+flVX(rL=o)&]^t1Gg[:$ng4b %0KQ9l(GO&frS4>*#MC6+U%326c!NbIfQ10%]L:Lbk!=rL*W^3R'r!Ege3'QFIc.d7.?SP3e6e$bq^Vg"C@g,&o*N*Ua0(%4p?mK6*X7^X[YP`&KafKi%?m+,kd %S=DWPCO4h*oB3M4J\%cS_UKh@Ll+&AB5 %q'_ku>3;8/l._(n.Hr?V*Q3t`)Z`1ab6Zb:"lucchJEdia,RN6&^TXu;SOkGaJJ_gW5V`N52=@hf[#.1K#c8bQp]Fi]Y3i7E%uN!eu-1SH6,1$q8H`E%J943;q]ASHUfqLi>YO@"?f?@eDcU_#eNEcer/<,-">K$V'\(m;g-[;]Aoke %TC]L.kHRK\N:m%G\b9g-(r5kUSq*On\&SsYha%sP9rh* %hbk3W$`LJHBpT2e72uKPg>;?7&\L=ol6&Pr4]aQ7>4!$8R2-+d_:/K"%4RAkOUQVjJ=j8u$=620>"pK#*pQN*h)$QlgWq`sO,.A, %p04Gr`?%Lq9/60_03!,%:1:<'cp=@Cc5uM>Y*_s=RlCt&*mSBZG(_;q,E^F]P692/YG]m,]TL>g;->h)+MiYT %"_#h@_1#5@%f=>1Xu7UL_6D%i0A/D'QM1lb;Xe\L7:.g9He/%VaPb,2\5c5S^:#V"J,%Ht$$H(06O2J66!dV$jt)*C;^8ofK.IBK %7^<[i]Im,NM66&Ioq@'EMo@Zp\fF&\^a0-!OF-"&!WC]aS!+\JMJ;TtB*[]CL.`R()`Z\bEo)qWm__1,r-cklPTj#:Ipc_!@LM'O1uWMq*D&dLDSq %L$0j__Uf;T/aq=$/t[a-/s\>5Sc`dl9.kGN*Faq2iq"^0^uR*sO`ZQ/7F^[gll"+]Jc1[W2a(sGQ4^j&#k*;GE?.M*0B#![3XB]^ %B7qmY"@H:'`pN[:#)`@K;S\Um")qA$j7NOLk?"1H'%HBDj)KeU^4JMG$:$;\8]fjgi(9hh(8G,jE".Sc%0]&?LIpD18b*lu`@)(6 %KHVIEDjEZ_-54&'Y,?rkZR&#u\U2;2Z.!oD0:O\Zh`U?T]X*'oK0q3@r=M^el;/.&3dJ7ApgRb_"BJ%]M %W:%e:4#3@0)-b[XU8Bur-*f;Y[._kV/^=`]1;bZbbkolN!#H-"=a,E0fUHSXg470M;[PIBrPH5j]T %LHF;WH>NHm<*KMrTPFACKG!egVM^>s.=.K"m2RTZ`gtreeb+)-J!a6a.sM:uCD"U*0i,?ZgF]hYk!fn_bNf-j\;9Vp9YCWI7C$F*4J0SW'olZfMj)B"h1\nri5r%3WO-_@i6Ob6Tliel7\VHhr*AGjiBX;e1c?9/bW4HUCGq_SMDtfcV;tM_MnQ>I(p= %jl8rj*%rGXAYr>@bAd?=8UPq,C^S5,]kYaf';V*dO7,p"ZbC!XQV*p1G,,ab',q?;)_3InjGkcl=KT*:4m+sC)U.F$BS1.D>i4G8D#c#\5ft1#FouF^Y'@OV/bCB0\^lRoD@_< %/)Nm%o)>s94mhRe%akC9O%PKin?d%_IKJU@'YI.KZ@W$BatG4+7$Ls$$$nn %aX=uN!\_4kQj3%TgY9t*)qB?>#aE'3V9G+YLu\Fh#;Lh.i8kOVLM]7I2[Ko_!.L$=lTlN1r/G]cKU>0)tm`sJZ4O?UBS1sjuKq!H3Lh9F+IIR-`8'@";0!cGa?:F2#`T%ST?@?o(V01K9T_!c`09m=<"lu4,&+E?KVnE9o %f&QK@o,O,Z]@),ugu!V[j7R)soZ9**)p!9>e@^8PO>j0QeDhj'2EF$?-,^:imJ]>3[5"IS&gmBteGMS,lsU%%C>B%d'Kq?21QIK#r&?2jDg#+WEL32gq>s7G7[ %f1kGPLDc4nMr]X`dPY:i?kaR04)nLRbd^BY. %GKl"f-KEM\SoSm0O?AG4s6c8Cml/OuFjS?;`9hC!!!q,kb0/Y`-u6 %)()G\g6sCjHc3$8Z1(\ai+D5N"Rj+?Zji,BlO+Q$nk6aOd1?IU_r?a0_.Jrb %kS=a!giAG_kO6.>rjk#tno]GbrOa"`=8)3Vf[qcZ+_/ca$E!;('`W_0GnleHZD1Y^i!M1"4ILPe*rqU"q.V4[>3QJuEEU %a78mG0(?:9d5=3RK6^FO'6V:=P!f'Ic@KP\eJM%nG!J#l:ck!,*Q6tN]QXp)mRsb^YQTm?EkoS6D8._TGY6l$J@i&d?(B+dW/S+B %34AY.0O8`IfT"TLq1p\3o??"W0O=Y:@,2S3_Ul?dmEF<33?dU*[,2BJ>:_KSg15(!]>O2mkXdY9=A/h1QoYYhTAM3sj'(RX(,b@%aF*=Vu7fti6D#-h_Lg^D%=f)ZSDT=B-5cYh)-T\Z1t5VZi=jEOG#>!Ng=*_X5(I8$&*<]>U;HS7q)?d1BZ %[t?L>(FOK[_kDM[l$>S1IeC`G/qSg[ndENFpJ%#:8fE74_i;e;.44!$QI,f6f,SLD_Xep#iB=DP6PWol4RMn"JU[rN=HQd7Gm$T@ %]E_J1TOP+kTGJo'\_bO9&)P,TpBR-NjFf6i,i&[_li$"GWFL@9#:s=i:=L[WXt:[c*m`*W9$c=;+`M;ZhrhF^)r'OQdY;u7+DmN. %aW=@05h[3_Og9UQX&A^?m&pL''bNmAMnCgLBkrYnhOf(`h=gU/&Ja61j"Sd7I$jGWNY=/L^216=2%JPoRb0",>Q0b6i>"8I``]'66H %%RM"[+um#1pER)*W/9"S_!`B!-@lq!C@e/;3tA(uLFM9gbUCd?7YF6o>QMR5"*Hb4"oT"'07l@knr!j>@96kmkUK73qB[lQJ,r4iRSgi1*Wbp\G#dgqdCA0.@qi:d"49.J4DPJ %CJo%'?tJ8S@_D`iVGB:e%H-oVEF7G&f$ROKqg/PdH?4FbVtPZl\B;md2]P,jAaiF1bc*%#%/]87Q=K8+JM\:8k>$A;9/-%M))p+C %,D`"aa.'bIlm&Q/E%8.c>!d.ppR&2MAM>m>L7%:D&leUS,k1J9YS#=*rR'K^7NfIh-'fs.m?XT!e?8HBV-PiLV%2#Wp2Vl;?**3t %PmRW_.D)Yf9=LC5_cCr#E`JmB^02i#/=5.YDO(BJ1Ws'-ZHin\T)YBo\P(ZW4cCkClMGqI"OL>=>_;EpSHBHmi]4MUg'W*ZB3/_^T%G %?HWN5HbFM49-Zk6q!1Ol%+,W+$u`U4PenAs;,1I[aIl"sE=Mk?>7UjpB>"G-`H7rb52E3e=BV!JB:,*J(Jo`JXrC,n"Q>nlGR9fn %%-;Z)*1cX1LdQpTAP^RE35-k_BTQ$H2:L48<(`)B0/,gFAPD-QDBEZ>$'4t]YUlE/$cQ41<$DG9UGqAtqcD#Frn$IURRuTrkk&os %Jg'J1'.#-3pt-7(]Z\hJA[ojcM1HcPP/K$9mg4jII/LDB8Y%!K=*1K6Lf!$>T]G^1h,.]fL/>KU!^CZA.=j1b`iL,=sBIRsGNiYcrM:F+t^&m3DsJ;kM?+)ocdDf^RMifYDr/R2Q %E1#!D'_RWKpk`!$N;/nX)Y$tB3o/$)j]CqpX.'R4DT4AWIfp#4L45iX$;5:UD-.Md;,peRRBcSiPL(b;NTi#?0X%4XN70P@cQK0Y %dV"ptaeb%K.'$;$oGtHHn\U3V^A7CEjUQH%Fei7'U=e_"%o0-HZQPl4\%6t0ma8YT-$\Z3^rm"n`MH(\NAG\ggL`&HIXt(eS\R(` %kS55LA+%"/K064<`Zml7^WXelD.C:4q0QJJPV#kD?_+l+b)sHTdDEPafuT\$"iq %d1*WPk5:CeZ`+ROJ;N)<9WfWKUWjQde3k)7ia++i'!VM)b-)*]f$Ok-b;hjq+52md1c3K.#gngn:#\hlAf&etO9!+pHF"e"[opSB %f'-VBk`"aa_4Ng39%0+g,r!?7i9P7T5r8N3i:9e20n>_QA"F,ZT(=^d=:eE-l6LrcRr0Vo/GFFAdrFm]Qi>p01mZppQ(L_4TrL\:G"<86p?hh<;AN//s0D"cT3%hq[[0:p_Q"f4fNagG9_UWfh_Ug0FJBR:t"?BPRK[_o4D=%#] %3i+.@DVb0F/#G3oE%\THlYX?9ndtpeO0!Bf?jEZhNhDb,kQL30GB=Au"+2-?DW90Rj^s+24i/XNR0hg`;QGY>Fk@b?c8/<--NUjP %YMe9^"F5PEO1\/n[<1\m[I9-@+T>ObOrE;"**<;qH,Jh&[]S5aT&5-RYauje<9Uj.6dL5ceUao3e_&@j\F':nkD?\cI'hOL1!;V% %YXi<=RPSC.g?QI+?ZlXKjXH%:L?So3\)Qs`V[TE-b,&05$qJ*aSN>!'fd*/%P/U+e^Y4HZFRqK1DJ6:aQu;6J4HtkLD0gAO==j+O %[UTk2pVHd5mn^0(T/(@hJ9>0d0rjh5&XhYX"QrVT[;JceN^[Lo"mr*k6KZl0?Nn%[N7VM+cHG&o[!g!8bI]qmY^kS6$>N[!2p*:M %_0_6T8!)jlQ+tn[dfmZgT&?P;/>-[WnGQr*["gm,a>>n#4oA18>0ihf+XcE""Eb6$qf%8<-8ph&-T8W\S^5GV-GYFTf0$i+-19Q5ou'rkfcMius&(C1ZnuritQ>GR+$bGR&jPJS`I&[@80nT3<,^%_f^GYAF(\ %i*f+$gdS,iQd=[lEM.@]*87sjC)t[eo'kQ6ijadN1#_B[n]KT8O84gRD[%>.*,I7Rg\,]5SKM,40qK/O?Y(bsu`I`:F<(B!kK\B^ohS]>hJo.p?7KE!dR3Br9d[6AFSX %VAYKAg;joZdXH[pQfJ(VjD-tP\\?^kP.9Y[#\9>tHa$U@LVtRJ]O1p0A0epk@_M6=*nh6cmo'F.%#Pi%ncJEh]mq9o?M`dHnMi4L %KVS.LihO'"rj]Lk6Tkb`2C!e66GAL=f!i;i\\Eoncc:h6#8lMmj&cJTVe1%01bH<1SSaGD<_RhlF$$a$0^jR-^U4Qsc(pWqE3fOC %#9:SAL$-j0gN2i&nWB,BDOKWP[.\KHhre_/psBrSSUTLoR[>!_3K'9)>ZYUr-6[8$!-u_,EsXENG.c=9*/@ZMbY:O,r,e,c6J%1f %3+H#aQq8]--nbbcR3Ia/h"]jkbXIA(6\53OXk[U)CRgO=R8ugkQ>S%p7 %[)dT]K1Gr]Y_U-?J+hHnUIU5_OsmBR3;/JG""JpX+:<>\IBb+p)icmlTUrNO4!5*Z?<>/s]@#Bl!DrXn&E6>M&I46k@YEXTWi\j$[hT^.iM&h8Mg#op>$)-b73sC]LuO4[gZ1FS_i\cW(Akhnbc8i_UP:dbUK[rCi;oTUZ-3ff %AFp%lHZ@>7q/.h2U"S4E@J:?YEDO;2EtZU$NJ8M(H_(ErFjHBqOM?**L/JcFIZ;ZS$Z.GK)iljo)fXO![pf)dCAf#@DifX^dZHYI %r!Mb!E5RtL*LU,pls6!Y[l&?VN7Ccj/'5jb)MgMRD1q+^d4iOsnsfI^#Jd^J,b9M)VZY5Tc'%Y>MXZcd+/J2&GAd]mBPc.36r1A=N9qbcS-a$H;qbiDZnh;*?=3)O:/,Y1tVCT/_55-pB]6.`(lApc5l$m"l0J9 %C?po(YAK8b\gVpCrO1s9=t/L@*odHNFtgOQRS3Q(lhF&+1:qdochpQ#o.iL5bkP2r:-JnUu2J-^d3O %_ZNWS;a-=6mLf*\o1UH+3DD=r._9lAQL]]/jaho8*B[nKH&(#5`W6`Y4CO1oat<5#6c1P5@BFfEDf[5AM%7?#4M$@Q#3raq+QY'R %b9CY"NPhNu9_uc9)l$43Qd>2l$7Ir[arA9./Cb+NPYTeR!S`Pc3f>Tt+VVeg$VSs"d%"a-:@)HB?6L+M%P;'oKj>C90dNmH^cHNI %h&E!'e0i<":221a=NJ/'gC5eL^DTbXbiD<)b:Hs@H8;!0Wr'4TTTaWfIEPp_?HC0NE5m*(<`3&G#I.'C\7jU%$Ys3OPf$Yap1)/A %lK/4\M2!U3FbAcajFY>=IS(FQ8/Jor]9st\mU0]Wo&OWBlZT0/lY9qA@pi+(0pqe"b-cuF4TS&a[nqMVS0O*Rr;?FZ(Yq[b#e3S6 %a2"`VY?Z0(SM>"+P#pl8`_O61Af@817d6<:XQU@`Y1X`!]RZ!+J[7MD795a]VC43Y^.:7>N9s%4,B5@)Xc'b0%Wo %l?b'(n4ql_%Xsl3o,/i&aSjaW4#ToQmT`[<36Bh8\[sUJ2B8D@.Gjc?JREKE\]c5]nm66K-:pR.2XfX)1&,E.8CjmCK,uI_j\bd[ %fR;INa@Y(_#%qR$dYX:]$V`e.Fnc,i(TJTBK"HY-kfGHA#[B$Y$B_7]bp0<:NR;g@P;cOJkr=Q!CY:Y\I'E$0m!n%*`hGtajU';Q %o3qpmPWcOA8;Jmi'NB:CCRc8nG5ZVhI"b.DbONY(L"B/ai/9%*1fX&9dT> %^rXu&,`bquXG;!lS3/6Tnt^5^Fn&4pQ)=dgDT,hS$O!8q(RPXVJb(4F$-6kIdrn(^eR'+u*+fir"a384YQY>!9$jdPo!15a"n`^? %&'JTg$J%l\q37!\_9*rY%s/7J4Z#P(\emtI]or+a!88,Ae)2D%XpX3I[a"Rm_8iK^.dH,=J=93? %+ad#HH58lYV(#O`,,?24PV]FFA8nlkY2[0WU!udE)d+218;eSqLWFp^9g^I^gZAPSb@dj&-E[9K0n0(4lMT33/.9r/c_ErrWl[e,/Mm\`ISE@cBjk,ZZrn6'T_)CC^Z+ST;8lG %Nf.K]"Y3c?;J$X7V!'/'?WrD_T%^PW@#!DB,,4N/rDUe13aneA8b/o&`,%4'(03+c/bTOCVff'99qc?/0X/>8!:Y>R9graCrumbT %$q46KF&3qSkQK(k+1gf#/@fQk]TM5\bSE:P-l-Ae?VCUm%SZ("nHSX'>=Hs.\di:]gDI\&1dV9QFl.5dSbP:<,?heOA)HreKB@jOh?/+Ki(FmZu#L(@\?k7J:\?d(WA"Ph'oqs %]Kj+!mO=E,,=g+_7e?^$jFBRZ7-d2!")J>NOfjTWeiniE=e*'ES]KQf0q5)`!Bij-/r62i3AF,1V,=POPU',4U^0'1*g8$m4q.oj %C1oEm'[\Bq>Hb_<()&0nH*l'g\cAT&#*rn0SB6(#9'rH-=926$OpN0k7ksT`Aml^b![c\T%\a0sgs8%31_:*JA']tQ>`0?FHnsLh %,)`Fhp+O'C-I7h@M-Ypdf1NV^i,1Z.jGWm$X]9/C$_S;7E'nCV;iq4;6WF0g7igiKF'E%>dK@J>:p^&@rbk,+#K)L+[<+.h@0g#e %Z3t3X&C:IbUn/YXmg3YgSZG=YH=+@D;m\e60F_GoF3pMRHgTfFHE%^,o^#t7$Qq[D[LSChCFiGq$#.5u?)YlgBE=.TbKGRHFs'aEY;u.\Ub;R3CDK&UUB$KI:hFjT!?$k#.'oY+23/]CQ@O[j>8?N$o#T(3 %'W*kpnsV(>hLZ]YlQkcBV"/Y<^S""BponS\$Yhu>K,Wit#=7BtT8W.-;XmU2nq[!b8;Iki!'[g/'dcG_q,3^/4qE8?*8!#1iDTsH %++o7+hCmt+g#O^nPV(?j1b3f->T3.tikg:u:_P9G\uDd]WX/\L*K4lO\]3=a7[[;I9i5((r=i"'UB5KQHD$fFg/5AZSe!m`nj0.L %;&S"ZQ;KKg7P?0bMLk7n#mdkr4C'3'8_kVETPH54fN6L2cUmgFd^R0G:B$S>UT.mq,[qWOCN`u"p&$4RiQ7#\R)Cln-Z^$c=JK,t %[%c7XUBF!oQo`8s0i'Nj]ik'1[>$?.?WcBdM\pSYhJ<]AXL'mT:L1Dm66M[c[j=$sMkZ+jckYnoptrs2bR:p(8@74SX76=sMn$"Y %Fuj_Unuk_VQWf!)-q:IE-rj_1l4pc$TU:r7cD%k"E)m)*M7[O1'VdlUd-R?0q5l(PlnocFk@WfkOE1Dp7Vr*AV:pqOf<,=Z`L5Ea9!(ZI'\QO8<3Y> %e:+4$PN-qesS7'f,cm@ccKQd^6D+e-)Wb]##(ClBtX.jdP2Ed2ZA<>ql^iPc:#1E0kDB1<9FE/GifMDtLp(\e@M)XY]^`\S!#?u#l-]KA5& %DdrjU]If@nP-`Qq'BOqc$lAnOnhZ$p)BS"O>?(2eG-%V19Xao2XiE(Yh#<-Z;p"?arpq.,c">;5+O+E7(aPQjMU]sc)%d/\C.LaR %ZB^`%,B*3f$Z\0qBEjWC&gq2-CF%b%l"mY`OW8Z2K(H$4Hq56)&U&1VAS#2.=jebraY0lb336\$1.sL8!j-%m3PATu.O'BiYm$`W %YY`Ri7RRZF6mc/KE56k;$Wf#QEA&G:#TpZ$%q3BcaZ;k(8,LahLc!saTWB4Op$LCD$>NG5ThR@8._X=#YFm@ff:]> %[<.a7:4?9cQBC+?*M;FJ@[5%=P7lpXXBUj?Yr@-8E6(\<$.Yc5U5UCjA1-fALEP+uNt7;Y'8_oF_&m^6dX6<@2sUW^e_\!f`&K^Z %rSXFYA;JFC<@6B]gS.lJ0p436T7LUOWFaH\RBI3hpnA'Va'.\Y@:$Q9'3F?7ZS#MQQh.V1lW#k0b$N4cdQGV:RM(=NlfF+S$ugP$ %[dEG>Pee]dO:8U=@=_AT-l_cJ3,Kle@aZc(&LS;Vo[2%)nA`^`1Hh6jRn8frm;P[T\Wjh^3ptV.6./ie0*Rm4[ec-KHNrh0;=$U+qTu](&0$)T(Eo+pq)O?P>:#'K^%"a&DIq9=?:RcCNJ,eZ61dDc$c7#\q]oeiJ<'.(>q-cA7^L %_@%$:8S0(^/0rL"'A.q62AVBp2j,FZUecPT%5UI_UqY"1EhQ;>fC2]@_/seAfVptWaG4Lf\WL/SF0Os6,qq"a=E&!mZ'YV.,AjpS+LBQPtS5OPUVn!0o&!jUT( %HdI.IdpU#`/`hpc(fQ^1ZPY?Q.9IdOpYaR9ODON_l1W2A8skqr-oe0XJQF[oA0s:A[e?8[%n3:t::rl.a*@m?E1Ci8;Z?FVmF72( %@^n)6o?f.[qdKn/WXp'Y3+jVKaM?o@=P6.pLl!u-fRo^541+[OX=`Hokd\6'W(N.eD-YY0os"m$&'K1TXq>IleC=ffoX[JH`/!ju %4d^X`0!(',e'hrtNR52!PU:33JIeq70(d!g]mK)-i!chN\9dS;9KZ]aZ,]u#N)A^?Pm\R>T/:`"Sju)GYZTnP@?>#%TYr8?et1&R %6k=Y5/+4&d:f;\V6eKK=7I()gBZs.X`J#*SpHueE9a6L&7$@4h-1V(RU$M@YK)12t[t1p'B"e1m6/tk-faRuGU8]6ScR+=H0'+1U %#+^hiSgpr^BLj[>'J2Ri*Wu)1#V`jR(-bn=])hDqX;GPKW:dB"daSAh#7'NN.G.h%$FGadps;'fX^T'[`:nP=b-kMLaDUC\H%n<#M"Sa=dg.4.NN1o8HUQG=fdJWV2GAWIA$u5]OA-#5tT3q)j9`/gAZ0`iYc+/HQLGp %G69FPi<#`+_V:8,(>)q(R_EH80bA%Y;+0>DJ"I%Og]qV*J4;$KQ565V2=")0Aaq4foTl]F[>GM:uIe_`>1)&PeBV %U;9d_5[un1%CG?*^8:Tu>U[*iY*hrof(U:P>[4BD(K"g>Fc_WW^e\UJ5m)m2RI!L32$W#V6Yj$C(t]\_@=dqU%TEt[;'pSR %]e2Ts7inR;>\%HeA40)':gU*/3:2nOXs'28!)]!_grRhn3.lS#9kEFFIibtG5XfrT$@&nKUa2&osZ_hhj#!)o`7);2H-iEa5_ %HXeI'*pdtN[90&<`RRL"):K:H1bZ';i!n1GpZn$o?iX7X=u@:B-RV"`e%l/[S;KY(4V,!?Z/d[+4EPJ0GA %pMJ3<*MCh#)q_;n8YZ[T4GXAhd,G@MT_A9VYNpc@qDV6-1EX5:Kio^5>[BWW[Y@`Mg+m:NlNMrC%tm@h&m %%t.nKR7K0?,ruTLdj:^fUs7FH_Sq2_!Kt^Q_@J3^c5sR[9X*+F%5\Qf)i+RbO'O^MW2-D/8H)GG4G"SF-"/@Q$h+6h_@#U4Lq(SI %+%t!YO@1pX'nt:/1NTBt3;D"mZHO1:ZSUEEnr3-#p7s2^T@KGn"]'D3;_B=e^N!dl?V2#/9'Q^I$Ws>9".e?Sp6FG$_Eat7i09AR %/28r1H?-i7Za"J*;ukl%2nCr8VTQV'.4U_;)L]XZ-:q>jbEmH_X&5B*L!tai/Mj6o_A,3%0X1]o;hh]VQ4RUDET(VI#tqZnj8uc* %(Z9G$MBnZ3,/F>mRNG:fmqYq=,X\b15DRfb"s&!.P:7Em>^Mhnc(mT,i?7^`_9&-J-V,Zp6If1fAIAI,L2_)6k;#`Ol`Z_!a:Q)==,0(7Mf)p@H\[PBT39.a].-0Y4F=Xkn$iEd6-e)=-_>o$GIHX4idK]1"&bH %72u%*+n1i.@(%&cJ=:<]>Ym$5 %P@)u9L$T-k*QS,Woh8s9h$98O5)j,?0C!iY,qbS'VqEiCUR`tp7mIdE'@7^&U/`Mg[U.kt\)F%.Q@Z3+`uZHJq4bg`0$oTZK;a#9 %B'MQD7t/P#h_<6iQb`>]]JbhUhfWEF&9NGkiF_m0)Dp@S'RGR%RfoZA"YBA+P3Gen0eiP[3B$P\[hD%5%g2fYH"0qf/:ACSCnD_[ %.5DMDBH_$j1*UnI,.)l_'ecW.FpI9#:G^5;DDj%Ba`Q\uDTMWJ?0q5n#.r]PTBYBWp`%Dr"f;?KnI*EkoP=R29jeR;dGUZZQ=8'f %B3h!W,j$Oq(]Z,`dNspY\_3a;K'8Vc/CVc&DIG7_KQ9pRpW@sNc-F2bnfahp`UWKMJ+iF$rm11Sqo?JNi!s8.U=2;HohefbI:#.O %T6'%RiQlu:5et^,2b\)[XhISDg4R#.".Wh\B4,!=&;,BbJpg.PoM-,YT0\U,B\s%\K/`GBJbKUljDBi6[.i[4NQj]7A,I?ET4r(&SGA,Gb9f-m_R@uHc[^QU,(M12okg?1_T]= %#h%o5BX[cs(NpdS"'G[0>0OI+_l[A:Gn:CreS_8UC[6&jT*5$e(sf_04;]?XU^NBSp/IA7=NbfUL?/bIQrIu?e7NQ*Z193hn#5X6 %do#0LM?_>R)bM+B`@la">9&YOMm,=5>fo&@YE#pF.>5Q9Qq'>\=Ie/>U^])Ekfsd#\^]!`8hu<.)s7l+Ks/1AAh%(UBr:V4^pp6%]mFgd>5QP/W5CO`YpBQR/-gY1NTAS*.ojQ7%aE_!cT,oV\-2hrU5Kl'1d/Ri>c[Y\9\_l_6 %J,IW*VjIARcXdL_QJGJAk`#_KR\K?Vn88Kn$F6nlM>bCg%u/@4%Z>sbqf%*4bU)79=(0@WD)O>Gm2,7$hqe*rp01`5.On&#+tQK" %VP;71`,)48Ygn#BNSbhi;t.'mh"$Ct7XPH>!t_$\BX1Rkeg[(]Pa)\#@@J-tm.V!J3s+qu_E#1DE/l,V9<8UmrP"-ma6<[scjL9] %`@10a4M4im=V%'@1gnr9p-okI"LDJL&[@Mk&-8>bUYEkCWh;P,R+NtF5IWf(c,bq`+F3[^K7GJPfBFVGV_JiWFB56W$O!i+A`;nf %$r*5mQWi8R)7.,S32UJAUGDaC7IQ7*,WprrW>^W[UcFqCjr(\g1p4Q6D]2%7ZE,;O:mrNG'+A?O0WN6o!]Dc`3e/Z,>,H((>9W[I %<@Hf@bNr=;gl3f*3cMT'<<#sB/V;V$pCsF>6:VB8=1&_dI=ftW31F(C.M6cq'22fCGf8>BKSLN%8+Bhq=SD&l%LCc]&C*tm1QAiJ %1fCL`bTfYtN)nTAXQj;A/g]8Uj$!]7"@%Gmq-PPsNX_klMGbM3+K(?-PH1?1B<#eSla)BYUh1-%>;U`+,g<[uECKN[g/Q-[G4\?i %fYAbdYOgq;*mWluZoZB#]d%_k$(q?X:UQ-#*ISH1Sq]4^ANAhBX@c/i?;*8Q$/.9M8H:$^HOS]oCDO+[B,`@o(m5b]fNg %'1jP63,/M?NfSh2GM]crph/O?=j,u1<_oT?B.Qd./^gYQori[e%[/.6o(:oEFt6)Up>H?s?;A@k'@I_bXLMJk;1`_JKTMQ=9t,a: %>4e5eI/AG*pa$XOM,5MHB-O$Ul;%X4a>&qD!'kabHe$OsOnI-3'cn*kF %=;'kVk)/NF$qJZVT[Sd\g2=NhfGJM?#uK9T`>)r)"?bHE)SM_O#^nK`!ePfRIC+@U_&"o(dRL"cEGQA1N5dMl')+g5iIrpchTX"1 %E;gK'KgS?Q5uIpuTM5]/=Ha?Um34/e&tp!`O1:1eW.NXHj;``/eJtgGU8^R`bjpV7AVi01J@$0EG(a_:r90o?s/PAQ?UMXOi*uo1 %LoCA9\]SBDmtDXj6&jbSFE8`0_d%bL(no;LS:P"8HQ"ki+COOBh+`3;CZ\VQ/_EOEAR$- %DSh^P^4]u3KjGkhp=Y0Da^9hJhC6-^b_8l@=aarig`=iJ;4N"-Lic$F18YB!Or/R@/9j<@gfDe#L\"Q.-;]PEnh@i;[D$Z6!s9k.pg,>%Yd33@nZL[16_e=+!NjMO"-OLY_N/JATSg(^X8".KY7KQ]>(eqCkpD %f?KmiF2aKh"MEI$ZqAYuKFH%9X>?X)ic9/.gE&4(G*:oWEG.q9s,?O\be-G%Xj!kb;dqQU<b>3Ds5.'ak3W+e4Fk#.7: %mCO08#Z=9?%l?QFY/EYaFK34lasIc=Q=fuBI!R^[6_]-+%$J\P&XU6t>Xh^hU!/*S76(;c`O.E`4CI%QC/0o5gIk3mODiqCX^rh% %mRQtqIIBY+NWG3@h6]*T6@D)L@L$*^d8Wc^2<;D2QHUJ?d.A:6!Puka_2DaABNLf %Z)(/$W`K.On7,k?KZ2RFAgP,\9%&0;I^`,I@%*%R`EAU1eGKn+&;:7`%bWNJe7b\)%;h@]4(gC?.;Z%ac3 %k;e-m1MYE3]VXa3@9$YM\+D?TphIr;;0Q2@h_-sJ.VLuBjU8cc.bN;R%uFnaIE"0K8&]f$&&`YC_?,g^=\!c9IQ(CVJ,UOm:5-aU %q?p)^lfS32h1OX*(]XKj*WPYQha8l<&-0F,',EdFHdY,N"lI'F5s4!4UNl\dhZ&0KQiHe:#$aBY:[`a7O13"d*Y5h8c]?%@n""0R %a5?X[*gMe1__<.?bkH>5a1_$?%o7Dt:[d__%sPXHK'12O8'U'[E>o(BQ.m_8&bL$$N8d].rpj'0!mmVi]ke+`>!A<1rP0HO"aIOC1(m,MgXrU[AmdsD>gj5%HL)<^%Ps3ZH0*h5L.n-s9. %?iBrb_Com3R32'*>XA"XIY0FI]D*^sOS/)p%O(/sRp89"`&BZ0/1gLagd3&1r/2R_g;CD1L9-;OEXl4ghr5^**kolbA6jSHMo`L) %-7@2X'YhR\A@))+NhY:FqB`9g/rO*)/@$>2`Ed"]kr1S\XFkG1);.E,PLIUmn4ddF5/o6t*8P5chs*73.*O>g*ne*q%IPGNi>Wb- %m,Ash8Ckbh30?>'ka/oD-jBNh8!nJZ,S(XgV=(-drVanu3g;b]n/&^$4HA`o4-b6uijE]D/,]f+>Mn@@Z7`l5[H+Xb %06]$g3krMEA.S5_%OR10J*(3LGl9:>1?GmNS#nX?f"SuS)_#dAf\gUPI"TP1*W0rQ\'NJ9dj4I%0MYdfhdi=c0##.ean,:oRj]qH %)HZB,A8;$_rtLNn?gOJ\UA56n3hA(`i26DO6Romdqu%$ir9!$HrpFtprc!^*N?Hg>h\O-[o]4"6.-@If2E7BuZt*M))mOKaU")5< %Ui[CKAe[;'(%7+[OPIN);.BC;=Y$#Y`K;WS=g)'%^koTjmW/%?JOmG!C(HnI-c[O;Tr0sa7_]#T"[YC]ra5MFQp=p3q#go/cR#.p\PO";ZPK>>u;E0rE& %]&*=3K6[tZS$s)Ya%!3sFt)eO"'NEco/DE7\S"K"\?8+!pLR*:FHTP9tG3*!!HZ,Fa\Rf)H)s%o#Sl8ZWIGd6T)kV+hj@42OTQcPd %ml59)iJ>CmN?sjnfC-US8i6Th[oP,@@W1E=;*?Qu-[=#L1'q%@EarDlEum9tibVOk*C9#Tg3ApKAWtZ*qSNXmHkK'C %qkAi*AOK);Z52eu,&cpN"^U=Obf?up@b?N;CnBhe.CT+H[;=5Z(q=2E0_1oHT0H\nQ>&3deRBqhcBh,$gj6Fr?4bN>9gV%10XgC% %6T1BkXcU%Y,b_"1g-XK9[(,g=Pb:'M#HBf(@nIIL%iR'S`FNN8/F\fZndVM`kot9hAtU[Ck8V&XVd>+JBUr/XP/&&D%bk+QUV^Q@.>96F58Qr*u@AZXnP>p-SX?Gq.Yej=Bo[62ZF>G_2CmiNdaE]2Sb*bM7)##oaY((e<0Is("gNHMCS2FAkbjN0E=kDq(`]qeA-.$&j!peD@TX2 %QP)PafBI\Z-&1/5KGE^;U9j,i4,jBP6?S3c(8bV(_M+c;dk\;5PPUKCW[B-kT[\YiR,C_9)X'NIWoa!4bgrT\@KXl,QMN?9cp9n, %Cu;XQ@SA5h4?6"ki>!Z$9-p(&,fJ"q;]*U4KuM8gRUrU*#:e:^[`+7a#?-^+kPt2uDfV#[AATs3qnL4TC1rtY6^mRNaObpUG2;Bl %4K#NQ4;C/o_Ah7rF;7Nl6s!5pV20nppS#ig*S.8/.f&6HJjI]R!=\0R%/F)\:qo+9>c6q8:@0_>s378J?85$me^dE6ZV3o\*o#2O %Z4i)$a;=;m:Ng]0j&ZF=(5q(#]0t?:c(-JXmPXt"?BWBR"RQ2OYAjXHr1H#Va_68"LB-aiP7=G9'os#&hU(FTj4m&,_V"W8h\`2_I/`EW@;C842\u=$IlnDe<\^+`:$4(HE"=Q:eX,J)nke>fkfIqUZ:^B %oS(-t-)V:rdA:6B3S=rmj+C2RPe-1LO4LLG"t-F^iBV"tNNhJFBJ %0ggDC8Dr=^-1Ij"V/;J8%QE=7+RGGVmCR"K %+(Qt17t>`'DGb7CMRJR4Ofsj$iV!af4j4gq7HYM05PtTAGVc1!N,@(UMpYASM$5E[q;&&H`YP0/HjI?Ud9qs!@ahf=(i'Vc[?tUR74sr[-^gn#D4WilQZkcn\8Mm!NXE]Tt6(k72hAEj0?BL?mbM**Y'e5I5t=k8p2!qC)J0U5>EB0r^JO+d>`d;g%:pW %T:6ePN#)etB5Vk^Cgpj0&in*@B$mPbKr$SV/?<%$6_YuRo_Z(k`JH'P^78o]j(;STnm$u*PV^bZP%CuW&\+.LE"sl`,8?WtlNcDJ %o2+!9I#ItRbp,S/`Zm9'i5JVQi/ho<@eWD^8LQ+q6<]I.rU]qE(#0GT:[cG %KFjatdhi2bc0C(XcDqNZq;kY\Zn<(CB^Zm&EY!99,P+n'^gr+EB2W6^WllL5MKW@F(a1["<$:NEg.eYRgcl>@>q]cQL"EYe@h5rk %C<`R"aD#H6*E>10b\`($W-GT$$1]cnYcR'R6KG.t`ac#Jcc[h52Z()%QV0E)RL[lVC,G$un:5dYfNn#iMZ@XPpb>[XS#E>uK:gYTV.6(#'RI:*3;p\>63`5MNa(F@2e]Z%1#V^Z+Jd+gt@su\WA5/Hr/Y:pUH#cs&JT8c_Q.GIc2V?4I%dqT8D]gP]MRF %=Q^'b_RKq5bh^3>Im\],UL[GP0=iPRXMPVM(XY#`a=IhG9\\ouS)gfQo[I^&T%SFi3(_N\jJS/QWIKh=?g-)t@ %fe-bUeRs6We(s?C:1p>HZ7A,p4WcUdNtjA*0\M^QL_;4r&P;;e/>`SdbYaKqC0"AU&c-[:Hu,%KjXJoV_=k^DJ_+U<+als1GO2o* %9WLWD0?*WAUR&-;NgM/4?;T?iIXVMg$i=>iLZqkI7JU0N %I[#j[k-r\Y?$gHBXgC(M:I6mpi`8Pc]f(79Mr_iQe-H8-rc2T(r6sQ!:7H=sRhTV,LMp%h4nQZpeWO)e@&Y^Q3rSdMNr0r2IpuVMm"F]FEQ8;I`[,[pmAF%"T>@3XSoqQh*F`i/,^V\L&5&KcdoRSZf7=848>ZpPfO=Cj%?fCH> %+jOsXA&Hg/]8UI9,L(CM:>[r]e]#70e1sn,mrNW"KuUNg`hfq)eZ1#-Me(L7V#1Ygm[,&cGLYlh84>G!QMU@`7C6P(/n$?84Hr8* %Q4/MoQlN'LUH!2"8F'j&(Sr(g=3BG?,O>'ciL[9I'KtbGdm+,X5O\CS$?iNJt&A>7m>lJ_Hq7_Ggu/ %)H;cu^:=Z#SiR4MYOp?10T?=PNY)d[rI$f1q2=3,OS0$l8G!_b)%mgBT2OW%Is(bcK'Z.5OtMpY(6tLIX>s^S3:i %2UR6R*lLHi!%bEin=?9*VH=268HWj!adm,h+7/aOh[b?^"ki81[[mXblAU2:L:^9Zca"$>opNdV(AERQ.CWG50:%5Wf@JimHK=NRb"cPHN-:k%]a_& %)u,$(5`_SA:q!KVZ#&9Pfg4n4Tl"e#9r9oYCgXfAEaVF%(`#-J,5;o1'EUl;Y@]@@k8oE.`K"c,?`1+FF`CW`'J;g^,\58J*@B_o %bQ)IaV8J-GCrcI4[aRd-=hNuhh!JL6h&qW1'E]=:@`&`?p6'9+9kU`r%PR*jV.CBa\(jE1n#op.KGP(kUiO#6D#9V)I=,_IPGJcW %g%+YJ^2WTO=,8FA`_K)7YZ2f$E28.'E,42=2*T?+K %`&XH/<3.(hTY].\@Dn7=A3[Gi`tKc//Y-6YI""U%GE]<3jY:07K5iZ %8*%a._[BPcHg;fma5Te^dK7_3h9>]7BcqO&#&_Gb49;^DDHbZ]/"<"!=p>Ib6.?o*,Gm*XSOl8CX-S#=!^JDL+JsB/_@0Bp\%bpl %39S@kL6dH"C>,br;2gW\3_>\g,X>^m]p1p#HNR-Q"q+PJP.aKued\Xu"9H'h9U;7B4&+Ha(q]2-WqREgJoa3.g):C:7iI5iWGabn %Pn`?Yo;OOQ#P(1?]j4\;cM82;[>e*\):'8HL@qHim@,gs]cUjUmSCO$O"AG*(d)+5hMMRK`2aWsk6^4Fg63Y6q+p"R+fb[Im]?Sj[S,AdsRlsC?YTH^>2eBPsoFjqb(WjT-6 %Hq%=20BX/j%Oe=QCjnSdq4s5TiI]odZ?TNICPTq%Ps&FZ`1#%mP$1X5%_\J%]%!K0o!(;KRrAb6uV5ms'IKI:*.b044ds4;bnB-705DuUr[ouCG>Xm#J.p#?Rt %q8ZEhs%e.9f;>hQqL&##A)cA87N9 %lVol>Q6h7;b1?u@4L__OaVtG7=+6a\bgmFKP3+,N$:PA6a4\#ZkWP0t*m3_hrC]O[P>arW&KL"DS\t7abh;XnR:orSiPQ391Z!i9Z@^7(7\\4U'/&X %%.+rr;=s1RpOYLg05R2BkKAPG8h3e$_jX/R![A%>dY?A.+C#tQk9Cb#N"CPR@rRf;U*4^%*kGV=R4S/-h+4Td6(W`5*GDX19rg31 %6eg6UT@:^Z#V9/SP9"!1->f33T`Er6Da^:eX(=qfGtW@=;3QfG">q[aehK$"Yjd#=Ls!SVE!X=Pc5Tng*_Y %C^#tEdic+WmSG)u2&addYAfk"]?r;]g^F">Zq3E/5,0Q!1[Z$\o:hP9g.^j9W7G]a(n8O"`)[Pk%dn^]H1$2b2@i=_.\)!c)9CWkjPqA2[s<[J*rIV=`1*D!e>pG50UMHL;m^VFaCYo;/#rW8u/^HQ4E@;,#3W[sla %^k6=G6p#+/sD(piF^!fS.dkK#r#?H"/)FX>/$#&b,3+9N;\6\4Z%$T?^WS^5" %]d3#bEVFM.WT7i:me&/_Q!bu7],6G:Io<4Wq_DafH`2@j!sJl^!LlSfFXBchbiG;=oGlKi.Us`fVdtf)!S0""F^%t(J017B)0E8\ %L)A&k`urE?FZ9WcG@&e"%+CA1(6HrJllKnFbB,f#c'Y(:Xpif?q>mLQ((u'n`cB#,sX^`(aZRqKbU=V$`L.0UClh;;X?&sG,,O3^6g=S.`3Wm<59P`73BBep0EKc<@25ZL/&WnlObN1[kPhArRC$jOdVOmF294U@`R28;!TC@f?G\iGdmK#\TY!](clSE.%(8gE+<*D=5VW,r^b##*8p_K8g1\#=jH& %UQ1Fnn*$EC?kNt^#t^RSPq"1(Y"+?m^i[*1-nfPV(9@uO?l@tQ2[dU&I1^Z^>qFO9Q6]#!:[D=MV:56!&cZbgo5=Hj3p!NHdC!XpZWui.8p3AL%Hqi#@J[_2pDdj:hlY347[i&iLq,S=$Ou(e>jk_a[(q'CsTTL7(qm,4j*:Q[kK#7uC`6g)^SsLMM!. %iMGW*enB1=)n!^B$e7V>PEOY3<+7aK?i1Kq8JG]/?3YC28RGrMZ4RL<">R(i7HS4S6fse%k+Eg-MD:i1 %iIfE&->=">M_;^S"hTDgDpqf)?-m)Ce,l-"E'IkP>XMKG?'R,j]fNKPq"lmgE:0TT^R2,5hskTY`#CN;%3C&9Tp$AtIS<>T`p'M] %Ej-ReEknTTn=Z>^R?^[X@-$"^Ok\dr<([lPl9N?$1-b&P]13p=g=]At4$iTE9Fm$ %+uVD/4jjU:#8n,VE:4*^0l[f;F/8"K\/\aa4;\"+!G^K\OmV(IEfXO?M(I6 %cshZWl3U5CY\Y,!J$J2oHiaCQ]jbF)2S9ir`0)4%D/?];K"m(f8]'r$#,MKHXIp8VZqS2Jib(9jU5s%gX<0lgr$]Z6kKX#1G\`CEGE/AkQ,IApi;_2!X>;o$[2&8h9Y-*K$qXpY4%4@l!GIOpu&aOF]O3&fFA;2'`nI1Y!NAJA@;rC7Y %HZMP&D8?8tIS3q04p)8I,o];'d2B.DO-kH8Sl>g2\&5BjRd&dRWF\XSR#fa8NV@@H&T(-`qr.@9bNbnXW[`01$\&r3ZpUeYTU+R5 %gF`.o?uAbo?PLEF!*\0CJ=Vsb"rSsK"E0D<>YT#q-?[<0/>P@dC*Wku33b$=bJ6E)N%,IKBd9jhY9^`:d0unsKB=Se2Bp=^kP*R< %Uot'RSF->IVX;&4*g!brmiJPYTXc0KFP0S17lDd2j&e-HQ:WP47$L;7pVo8'._B`rnEb;m_!P"2RJ+UF"ZF9TNJ(8\1[7j8d(7&p %<`2Y!Qe>j?O,)s.7.eiCN1^P]"0eMW&IWL6A]NM;*:pQ:M%\Oh'[\=WfX[?puMGO`N':TS"q[`l\D/Dcg-c5,!:=2k(!R %XqiSgeTQ3?_0\[YpTJ6<-],hUg$.%U)fhE209)XW#K2mg!"TC22bg`u4(R90$HKc].a$*hUq?M)fQJ/RPcAW;8Qu]=>tl6;/'?IG %FCsG/.'1_[TjWPe_>i:8$V#RU_caoo81p0E=q&)j;2kh8gVnAC?#`h*h1k-!jc=,3=K%lf/(70p!#^t[P>bck&,SNL(\MK(K2EjQ %,=pW9UVN$n`L=J]JV]oQ3AQY=5MUQl_btX(Stis"XsbB28Lk-@Q^CnlI]ida(p(9kUucSa:>9@e@IhOWk,S\S]@V!8WdsM"cue8K %]Ndi?aA,<*oWYQDCheSp,1pnR;%PSb#IB_B+q$/d#oN0e=Gg3Al#aJ1IP?pb)%eI6[)>JGN92*5EAHT^p"T3hdiW8/hr9OJ1]]$$c^"1:e@+a$N2Rd`b$`3Y"#n;E#sPVS2TF)huIFWgVY_nRCB6E3l0H'BPg^!2m$rT-lT_d %;o4k$\T5/UKGPnpFIYYA:O@X9QmT_l@:Rg9<'>!IP+M!&kZsEdX["^8Ad+H4m5T!T"egg`JKnmofP3:(rLd.UFW52`;+@$F)&4@t %?udU-\^b6E(U^=eGVXR5ojKdKkRFGSfS!*?OsD'?kDf].LD%fNgnmX,1f>LLZHFto=\_5kG=^^D$tPjJk_RXP@/Um!Tjo5h*E[bX %a^''"F2UX8$0#5:<67IBMmH..SL3?a]g!7c^VQ!MA,taG;r-;u2dqT5/_d?bM^AVO*I/-l'[_qPKV4(%ig%J!,,$l1HK1cMO\6Qr8VWhtB?'?:RtM&?kHuIdaC*(DQsf:U7GTt001.(21%9/2RAU8#p?=8h=P]> %Ocq4Hdt8qa4;m5L'SL5;C,?jg6`*f+TP^ki*U""'f0ed2CWJ-Ma21sep_a%:G[F/`5+=k&BrMp6q'n-4lPX.Ff8PPsk7p\Ck*q5@e33 %(,;t\I/B,q?3M"M)ApP--p!e6!94(n8gTr,%O"DbESUe)=lHakbH3mhl'&D_Jl>9N#nVT7R$3:p9CB]Q8"s_F"1&7a2]6@Hi)U/i %`h:*_/@:"Opjes)@`=hW5KY><@H#I2n!QL:]Vq3.*PiBCiS+@ri?,Zn%hB1,PT3of[Za:RD?tre7Ga9P"%rPtYW%_8UmL-kgSkii %ZGa'@rLN3uBIj1ZJkDf84CN[BB\!]"6.DL,B/14R(c7n"K-aM6bDTL9.Q1=M[@?k2B1$m68!;'L_Ipt9@rY[1qY?!j6NUb9/+1.$ %jhtY>+IH!\Rn0>)_u-\HUOlc<(+bGFPNUT\`H30gO"ab_D(;_s'78giUHpS_ %=2Ik\&[#@['VclhSGZC*?qAe?&DDLsB02u/o,9ndg*HNA[(I=qp)<$/[1kEo:mI"V8>Na\iGqJ"u(meWGk7bXr2kp/1eDYre=Mkj.@1*amX5L!C\R>Ihc9fY#3^#I',^4"cN1f!K2g<`T %'A&\i<%b8FOQ4=35!,`1XgAGn6;Cp#==>O2+ph5/0Ph[+]M,n8(Q-np;aEq<>X2!:'Pg[C!s-#b>,0LKJCoJI-p2=DJ`hh:!"6!/ %2jN:VYY\)K)5na#M=_`tar:W:>Q!LK.d0^FW:MKBoXl0@I;C_^Mr)D` %B_N=n(D0*A=Nqh`R4-h\]ru7ZSDs#P,9q$3bAB4eW"I>[.X"7ms013_#"&jb@A]EpRInd@0o\HSG]m'?*bDX%:`o>2aD43[M3:aY %N1JW_27^Vcl8WDZ[#c[>MfW1mbX^MmC/cCt[RP<\6?"7H"GZBiKQWf6#@fM"s+l#u9[jlb.XLi*TFiPLo(]Q32](lI2TodanlEh*_6/KV6tFeoJrF1!dDK^lCal"R4.;e^/D@/*lkmL5NLa>X;te'g:P,KcnPnm`c49NVq0E>7u!< %6&-Vl>1ggKY`O><24'Ai9<_d48/:NnF!;ij8"`/T>6Kp26m7:Qb?i#B`=RBQa##5=^rZitQ(iUQghGebUVO%6hOr1+fdeXlRXG'j %k0/I4[%5DLLCp*YlqDb/$leXO%>Dg,@GV<&m*a6a/HY@ZljkFcG&T(_c8cZ/C)G8EBW8lt=uAe>TUKLba(j_k,9I/NFbO*EL-jUV %&H9h(G)E8^5.-S:J_O@.%N!hD2\bNg6,(2+(D`LOGd<6H\e_ig\64PP;q5WO%Q06sboO/2Z8QUVHt(&[^%3OLo<#(`FG@%FgalrF %D9t#\/RM9?2)L-7745FWQ<_j>cA=3F*KYnkdU1iCX\4S93bND8Gc3,%LRW:Q@Ao`2LiO4!rZk"irFAsHaFoh"P#?"^.3+,^*](#0 %;XBJ(;6g#"0PB\%":tSd]=m0)p]cgHVm%1CR]f2<8_/ub+pO.cOcW"a$+"-!=_FunNhF]H:0mt[9'AY[l7'Fa%gsu4X)'!R8jls& %PWR'<$7I)'/a/_CR_sjLAlM-KiDFd@"6Ri!'H[5ZOcIBXBP!m?a;8IQUY>F!l4@>PP76FX*=F=l]B9+oop/"CQ4]>KSE#'&7/mm!s^-+=MjP %o2KZ3aTjV0BH2*uWelD;9NMg0l(e>C=os33t-TX:?NQ_9Ldj7a`3\R_Sk_DjtAaJ/nB50G*>)#Mn %SQdMHCjF;>/$Qu3lGPr;g6`Nu2UTF-Z@R6W0^;MdUMXLdm$cQ`-`:0)[LIn\*)7;R0B$4^_omrF["u%+#EAS3+e\3n.B!:Yjp+h6 %;14))T"2-@4IC1pSFb\:4=Z3%pLOgfOZ`#a&[t/t$n6dI0&Y$R@?JrFedl=Y1dkgsR%&!t,@!;YC#e_ZfF-Z+2%[#VC'!b0MHZ]o %3p^P!fFU`7`#U[ON*`;fWR\!D%bj`F/N"X?R&.K%$t5eO3TurY0LVB&ZCXDV7g\B\Z_at=SUEF606bEW$r@I_!GkuJ=Kt!4nOd8EOtYV$m)[6^_uFJE?8 %@F8Q(1)l"]&r6Ns:GVnlOVi;'e0R8Bptu`C,4T$"5'Y?GL;aq%$RT\2YLr!Z;H,7ZUE=g&I/nQRqXQB^_ %fWKDEo8@AG.;F5(^qI_Y9+*=1-i@6[/*J^"7J%:k.9@GA;C-pYlBi=-g7 %dU6m&&Io7UCE+pJC?:Q1pfp=Mh%r@4@Qd'c]QV*;[t?AK/&\SnG,j'u6BK.J`=-igpilpN=7-Y,d[^P-%$5GEC0fRh5,2!Q#ddN]O]%f*XB!=d0Hu+UR2]MYU3`sZRP57gP+.q! %=t&oFio93lEs/W7(GCNDWbl:#%26U0(dce>kNni^8%1aP0PTC7r\7!IH)JbQJ'Si$^>jb^IMANH`9Ro]aJ^=&TqY&$7l6sUA\pk3 %@B[%M9sajc`#PkleuEAePF6/25J6mF"bku(MFKWk_S.5GSH73WhT[E=e/c<%/ZW#O-t$SjOn-&:9N-6_(g*=G9.au@,-q&CdM1@b %D.EQk2bOuZ4GR'K,jW"&[AP4!:VTO8K%.n\TnE.;/$ud^tbqa+GN:GGKNjFZKQD#eSDpmUf\0E'CXg(!Scf)QBlV"!7f,^,/WuOKSl^;b;TtdSou24jUb-$m+Y1 %YXt_HnlFgUX?46VGcMC?226=Q$OL]oaVo9,O_o?J:o;r>@Ka.h1"LOEW][qsgQ&*N;Ve%!k5/UWHV813,<_.ukb#/9H"O8;/eK7MSD;`UNijArD[c3f'4_YD4-LA#CS&(imCc'P\hr8,BiOB@;`'/cjQp %K[Vb2Q>ENVOmfgX%,VFC5J:bh"$4#-[_FrllL+*][<.!BUp'HA]K#e %U3fIk_ZOQt<8+72!KU.U$VM4s)l%%%;FeMi[sdrZHO(>uGSk6^N0fLO@+Ac+2)KlV?sOJ*/:\&=77W[Y2`63d5es7X+^iSoKma0(o0q4*ME:#&rUWD86bo7*.:N:q/qPJ[!M,'@ %"$65UFB?4c3,aqmZTNe(/%%.W0WJj/+TS*iTOEt$eSA`BhK3>5Su.hHkrZ[u[8-psPANmM[#Bb?dKGf(Q"iL>e^+q&"D36B4RbZ/ %+B[Z5;u?,9jIY3URoW==$"?o\cu)V)Am@D3Z&2\T'r>aYOcC'p`*e48jp_K,6nc?gWh5f0Jg"C;7T=P7.;E+@9I&oPoMtl1 %nL!g4+OR;OqnI[!Kn."`-%YRuM_rWA9,ZG7pH;HRSBrgTi0d3X2>?fY(f@3IPIba4o/:_3&p8HD@HeG>Xs;-RAC(Vi4.MRZGcHQt&oksnW2V'#i-URdO#L`: %nXeSM?Z_!JqJW6Oh[g*-ga-S"6pJ:\p9s:eh5igY1"ll*'jFnc5u4Xd"k5]+RPHiAF9D, %md5-S8WkC)-b/WL$5EWmM#W8F.-r"_,Q^&88Ha#=9".*?[t&mR*cj./aO<9[:`(a^bV[!'jHi)n&K^)sB"j>f=%])mB"i,aD8S(m.3guklmM#AQ*+(m3=nmHT/\u((KGh %(NoIU1.82''r6HldRu($pq/g#XE$+OoirpR+Oi2&QuM/9kmggf0%uVM7ud/:6''K)m[_amO:6PrSu!IEO;cBc`o3QDAZ,\CMMu.: %$mt^-pfkcsX%^/9D5m?gr61?-0iqO^O6\I'$+UtG4o&;rAb,\omQRJ3(7O-h$-51L+)<$tO_EjjFc);WG)+B-BE#VohU39Or:LZe %Tlc3',U[pI2[$fRNE>[cSm+r\L)G$F,R9$_JL;8^WB46=Ge/&;kL>uoFL!EaYs&l8OgZ7CgC$CKd#;_#3 %C"X/EKfcO11t69C7`b_aW.N7,S1rNKkEo)4nBY<"o%"!)Ufe6Yb:&qE^<10O,Hou+eo%0%"38&`Ep,6FX=;!_GRqMcDU%%<]f7'To9QWeo3Y\5f/OU<^i<02a:,*XTJ!'0KFipP(0e>9@V\$c-9H[>kXe8;o4c!Vm(% %`5QW1()EI#]@p='l,J,d;],uY%-\%I%k2_g>ek@aTH_;=Q^6.MOll(^E1o+g`"oAKO@aYbduu;Ahb$>7>^D0Je08R/h(e9FJFI'& %B]k3sgU.Ve4.?rTl`%TSdV:P/ro5Ude(+;1>BnD\ipg61+AA;R<_II9I:HAj,%Amc$$H^%aK8'.X+J+[s %9oX'F)nSD%HKB2O&:?CA"Wft70LdtuNLAV'j/%nnX<*8_bl6Y_a4FPg_Cj<@J>r808^<+>rUnG==iR#_=2*g@ZN6#!oq@=4"%EW1 %`r!q16lt(g?C2!`eB!ZdF>KDIqt3u>0tO?0Yj]gQTXqpHPDg-GmX)?)7b"/\j==#]VlSK>(TQ@4^.3=';j@7C+@H612Vj9%+e#NG\kOXa$UiB:p&YtZ3 %Qn06.aQ<^1LS*G(:k28ra)r.)*^ZIr/SfoD%d\G^gd%660]aR7nfp'37eGi4lrbc")j5?i-2+hU2,jDgFJ7]7S_M#"Y<'b8.;M'' %m14?,RO"TgB^$Q*%!6(K/S-q\Z!^hsX_EXE(]iHCfd!fKYcmU.6:34HN9p6GCU!)DFdhipDhoWHaoRUpCV@^e[4Z8NS+Qk$&iQ-b %!5TOghWl)FORp;8.qXGsQOR3:Xs/6VbPp`nW^eJsP-6!#@4m %q6:'!(q_/1pOE,6EIIh1?'YE\^X-!F^WOI(g;E^Os8L>o>I%*)&,IB#,Wk%J^K;QW#cW2CJtUCF*uc0f/?CH:I4:0L]US>sYb@b' %g-ID``?`m-7P[.MbPTdj!@I:=qhn$9%:Mj*6cr,!F:ko9n]1T!V/b/WrD0]I[m%L.hXgXFP7LLG4YT&o+D7B_`Mu@5&b;n[PjFR %aJ6`TT!t1EKs3H(WXZ7ocpiA]Lb\POPfIK7R#5`#D?@/Q]i5>=3$3Eor!7XiBhTMZ_0!mgrXg*>V^/m]p9^nS`/X+e/hY[Q-ln"L %EIn.+VD:8PYqOmX]]PO#438_0KfEq#HY3=>k=JV+Enp8B2o"]THSJ%pdD_[,`(ifsfC13oNc#6o,o:c(1V:_3fN.CF^iCI9Me(9!JkPQiT<(ja@$ZP@%N%jUoK8@,VKpI-VC&l'^A8EDMiXp.Q#Yl1pD#gFP1E.!CBTieF``D235M$D;DT:#eQ8u\ar3J[ %3DE`[bTt7P3D42UrP2d0_tNEK8;cEXFpa8#W><**J]*.9@m_#m'\VnR,*&9V!Ai)t?3eEGq9u67_)d/tJXo9gLjqXRlQ%PsLo!H9 %.>3n6ktkR2iVGTBD)g@W7o:"]h`g\bl%.'uG[+#t=s7!aML.Js@1.WS8dN@/_.AhT>k$/"Rjii=?ccA2?nQV`GMDI %EPb?=>G&Z%FWs=q;Gt7:*^ln^=G/QDDjCG>do[.h7mZB#Wi>#'rdJIkVYSfU#9e=dhE>k`-=mqWK7<#n%D``rK7<*uZ*#**P7:ld %Hh&7rB`=]>g]II&Z2%:]Ks6EoHcDU%I04ELSuS##+>na!^N;sb'BXHe%HZgj*k[e %_=Of\.irf]3r0i1rs.3sA$_/X.(@r9_PB8IR1\0FJ,UC"AQd4tM-5;H:9IuB %-s)M4k=AAYkEiqORC)>IZ.P-(bnq_pBZjfH;noN&]FXZb32KjE5X$J"2YWj'=HeBq6tU<.H+40D$cbdiH$9U\#/%L?s7H)iVKT,b4SUF`1i6"9#7>)'5^8')oF9DH%Zt31J)dah/;Fp[htM1(HN@CE:N3g4IEh@)ORk&3+/IlKq:f!M+L"bU&-6;+\26RXc&_;4_a %5:=WZ%k4?[*t3;ZGcm8FA9O+k52cb/4-5k=:p_;lJ"kF\?T;Bo+Gjn^$8n.\S\R?`WCJtj;TatE.iROp-u$'8,4^/]V"_O_^Q;nN %mCA.gMIc!,T0>.bcF[tbU)3sAl2o\T47SaXh,a`c>T)#e;J.NE8VsNHEoeT!R/eSdc+$#>E4b(4*#p56S=86Jp00PGNAqthO[WOQ %\:U1QPf7OKPD!QM/B%sPY)*iW7)qIpce.LDU`E(0DV#Ap!>FYsqeV1PI>qD*K@H=SQ>4^q@fJR>5s(]dj]IZSEL=dY:)lpW0BI8q %NQl/\fuuDcCYW[GYZgZ]]&(o]GhW?/pSQXeeBtR;14k8S:--k6($Y#eD-.3'fQp;Slk&_uHT*4S*XdH%T&^#GHL@I13U?iVSUm4R %GKkH*;*qO\lM"u$&Zl:Oc*B'?9:#GW_b'>rcTi2YTWN%bk*et+/U#ZPm'*nXM&GQqanF"PJs]bbE^OlF8d,M_Khp2pfso=/,D0-* %D.G))dEOsCnRL[h_C%%C5-[YQj!-7IB9D]%HaSCDb3=iLrQWemB]eW/5M@Midl(\')nHM,5_r(iX^3qK48$,WC>-qj5>&Q*FRb^ %V;!olXcrlfm!AICP#D$Loa=GgXMF0Qb(1AR5#l!2WD(mKb7M1YBMs(*bWs))p9C0+-a\TcC&Pc^lI2>rG.pAQ%].pfYN9iFAchIR %mpE$Pkt.(R.5#gJE]PGT*ODn@9BnXTcr+`9X*!Ssb*Bfb7ZScKEaO>R(U+d>O9/`r1P0Q56j.pi#kA=kfDc,SVn,M$;>AF=;&/-" %3?ub*T>R1Pe7a0"1h+FW9ku='g885N\AtrZGuO0\!cuATO#eI)g_idMki$n@_T,#/aPKin-3S,FG+C/Al;,(q2&e\FD14m(8;ck5 %$d,-JqZsc-/]'<]KFe\/c49Mo:/*TWP`]2Q[6XX;!\60i2dqM480Hd(Lbat7`"IiPu2>cR^eU'_k %`0q[G!g:GdYj^_IL_8Q\5Og?/\C"9Msg=3%3P37YIU^>-b[V"UM4V#\k@("?[E2a^sU>NeET(hcX!(/([mM^%BQBZZY]( %3L:sJI>[;TU=#93FsCUInHc<,F"Suf%F7o`75%4D5D9Dt %bANkS[c^PV93*_?F&QZR\Xl!qT41nl]oU`c(?gQH*in?ln?=tkKbq9lZZ*rYk;:`]@n.je&LouHX:3Yg2T+D+]WDH`T0Rc"R!dN6 %Q;4Nn,6@(*m=umTA=^%5,+j$b_5dl.Ad/PS7^.2;3cj`T;TNF+Dj`f)q+/>N?9t/jW:B55`'(Re(*J,SOT8WbYa>]gBh9;t0,$3!JXNE/1,hrNYHDBo^c6nfEu9V5f0"Tk9;cG;#)FJo/&k6O1&i+F %).YEt^qb[t!:s1=q(XF_-2a`]P6LYgX[BRt17li2#Ij8gfW4LE+oF=d)K"b"mO_N)#YMU(JsQZaKh);rN/l2.K<\P %HMM7\Lr0Sn>=/SJm:%]t=s$h0mFn;!og?^!CTX0]]3?%a9AlDNlD3bZ7p0@j&$iRq\D %0dqN7"Dc1YX;Lc:MWH8nU%U$^,,g*'B.EhQd3],j)Xn_Jiou3Slng?\?W(s#+^DpE9l"t.Pm)4^#)P(7X[49a^44IrKeOZgl:D7< %+lF^c>:#a\(k+%9)9HX+_'LVKkMC\IHO)o&-iVu93ITEW_L\6bXAa2mC$m+M>PG$Z!k5!GFd0mn,tkBe/QN&*](f)7P#iB(F$-,I]a%Ei:-amg62[I>5B\5Sm<.l;qu:; %L0#DQlD%o9R&a7-6_SBDkhPY,#U%U)S<__3dp6th&DW[AmqFY0bgfI75;b>6RAstLPoXc\F5

oOGj=p;VoKEj=^5eLiH`ON_;c"dr-6O-?_.*\mP?2^k"ILTs7lRlNCJ()Q-JAi8^FVWc %bHD<`2PN,o0E!(*])(%o1=UY%hi+cTU!5>7n&qi,4'aH-%U7*MA@la&b!*a>,bWMQ%?uL01qhYYC>\n4L0rh'YlkZ1\fn]8T/gBQ %[qWP,[9q`6n=oTLccH2$>!/.hUS'M?-q%2R!TE0=A7?eIJLd>.%2j;l.b:X!'P'')=aHC67ftZ^AHhk"f/7EIpC(sBWCB?B`P,g\ %dT3DEeuUA`h`g]?eX-FpJIs7-M>r1)r$3o>692XCp-?*9Z]qE[!GWS %I&QTR(lV^!Yc")ZPDC?Tgr\p,W1>a*Q*_8kH(lPMm%X[D1e_0\nB%l\CAsRG>EA1

3JOS3E9@MfD(W@p28bSn[Chi[Dq6.SXnbJ?(W*;9d'&YA;UM$l"hid/TPM!H_0 %$=Q\V&O)Y-%:Y;"Z!,8,I'oT0EX[8m&]:AT>fBm;" %J=n=PSTT<]T\b4<:.B[UuV_2DbYj/?0t"M5*k^e$?6m8@&T\*6/sOsH[F5'V[B %`rZ'EAV-ANqFF;J^I?MQ!+AXLJQ]5#\7@o?7.9OO:q>3EDdS'C1/>)J-X]o!ac82X8+1sX6A(OqmsA$%h%Io_D/Brk]1Oip-7G0E'ZL>IRj"F< %+uU[u4Q4srJ=E7k!Coj-dT*SV7\s-?Ckn\2U#o;I00F]mXCH<=80/k%C_Bc6E-]7=fJ;A6#U=jAU0nLJYDm!\r^UQoc2NVDoR)Ne %e.PS:QQ84@;r`+c=U,5)_^1t?DAM*OSf&.:#ai_64+J[k$)::jprK#n'>k\A!4bN6%uLY59LMcLj%-"\(l%]tGllq;(p_/^RcdRV %<1DsC^E\kt=RN@oEtQU!:#YRPeH@FMAm&"=eW2pna[k:Q0I26XX+jflL!);,AAXQLoG+/>jB"%XE_.0JU,Z0<$N*?B'f>.m_UK%a5:K3J=R_?< %opu]9g)bj$?UjMe#o9*[9q4-;\K7hV)rnZT\^Oi%UAK"O`M/8GN/dPP6t)oDbpY0)&acT;[?mmCG9e^b,oOgBC@'klQ4"0R:<90. %\A64mNDA][/np3aYZ>G=/f358aICHR$m%>L#6sE]:Pp`3j/UGi3@8'B=>\I:T5F275c=A!>>RX#H[A*!ccFD(H.S`u`o2:W\"Ae! %bRrDu`[aJ?9#Y?W.[,/sJdKFIG<0Pcs+DqUNO0OBl^2.,LoDH\kdJ]+e-7.R`djm&Ip,hiF18kg/<*`>e1IqG's]3dnRrkW][AR/ %?"eHcYO6cpmJYV@Q>M-V;Ft]2fl]*hoo6N$GepP\f %`>Y_WjXt1g%JU([3$+jPiqCl,XM\,TWZZito]bj#-=RRP:4FSGC[1CQ,5CbI2$8j)q5lffH.IZjHKqU`160%@'PMjjKBdSAh\8H= %q^SS2IZ^(&di3LpJG+W*oDBPbM'e^'3^+r^IK\6g\u6+#)El\&N=J3>eDM?)TS,=CAOSZX^gro,UIW0HIY'gC`oRuhhse8ti9^qm %r\-^EVE0rT]#ICP/H:_G-A"H.dE6W0gdc2p_2n-TX)HG1HUAuh;]7tsld,.a`t^tmkk1$r&cdA6$:=]MRL+PM@d7XK?<] %Xm$0tQ\db-m8fik*&$;=GMR^O@GjOQprn(()&-Z6FRfbkSA-BEq;^0#N)nS'6"Y?jTtr;WZP`KGp#*5nqj2A'4^1QDC.?_RFFh?iU,krQkZc&=DeMd&Bl)dTmu==u:.3O?!?%\01HjqfQ,2T2Bu,XF"h^oQH=R:.Aa/GjuroOJ#ooBf*0j@Q(+d"$<;pVK/hoqs4H %q@$!.>:k_GD_VR35XcLa(<,hYCsR(Irlq]TYVsF^**apa52(KWjUgqCEuh&5-_E1=F^_UZa;JpMls %?)l2!]QjeJdTgZ>YX$=@7@Z[kF4-S)*a9p/Z;'NhUj!^Q]X*\oW?Nl\SLmo>*D9k\51tMrH)U+3BFE;qH\(!>eqneq/YpB;]]IQ)UE&Tc$nK\hq?MrR*`M?_4]g@s.&]5+Z'k4@9DSmYqm1^LCY;E>IQg(- %T10[n;iJ;YfOp?KO%2gmAs-Ys\Q()]fbYbkT4id*IU0$WJdu2TGo=dm/t[R"BA)?S]8FR?osibcRTTIbObtQpDNbuW0'e`P0$<#H %7D1Sf5.3\fg&h#d"rO2+Kqt&K71Vs"&Q8cM@cOts;Gp?^\]rf'l;U!II"[qZO[Mh6"aRP]O7g'M`GXMj>G,X_P0:u?-QmF:jSQHqfquYK$d%: %X^_2RH;V=RO--\OJs;Su3O]iqJD"P\i@e]5-/H.[i7/8b&/P+ZMB8+OY?bE6 %>ZRs_>."Y).@J[UqeB0s.5Ebf7J8:'06NldLa'Ico2j!ES%EAYo]1ApWQ\Ln>]@r8DTb))]Eh]!VQ@GaRLqb-j@EhVJr %NFj)^)T95rSSf*QUSM;#Vck:2Kg$\ogVH2Dphq2=WFMa"?bM+\.;-73^'[aYl&tZR<'<*,Y58r-]^"f+ASQamkb6`r\6dNtEel*[ %-SaJGrCq9EqKoh*iPrIZ>\!3lhU(7#o--jge*_Wu[4:$e+2A^-3V:W,0B5)\i9 %%;N%S6e9QCTjAIr4tTm9G54M)(:/7gpL\\d>7QeiQWh0:9_*X/Qb>>eFp!Oj=(. %q:MMU;8-%+I/JCqP%+6Rc".p!(@[IGj#-33!&84@!/l-cMBFNZc*m'2U6#N:g"cN/EiL8YrJa4Iei'".=W2#&Ojn:acQcom37n"'rC"6GU"khPj9GBcm&^&`aiA5c4"pu=?.)i[65d@OUbI@mg6KI(:5%+r7MH(+_FY4D %a),e9g4FsU]3jLPL=g:FQK/F5\)c77.E22_+fo3sUl7XRRJg*ja`jk-js25HR7!Wla)h.YAZLTR^S,*dAb=?Qr-]5I-4);Nee18N %J)!o?:DgB-j4q[nAYpcF8Xr`X#pGo5=C"[-eWA'K*K/-L&Ztp`jV5'b[4?^#S_<.KfjDPN6oPk%OF %qT#)I#d0>V`Cj?%n?H=K_V3"I[c/b]<,:Gfc#;['Ct]&'Q]uH"RM=ch8N-T3'iGi^kR-S=bI%%3Ir12+mA12I9I3O9Vg: %M3QQ$-c4.PZD&.7U&97SN-c]#`Wel?$WYfY,9u[8>\/acCZ>R[/q7)_N>n^_AJ1h@Q'pKmJ07cnmd#eG:#BDC+=sdPP'nq>c`6UQ %C*AXN0SHM"h73ZG3hjAb2TYJ&S).>be1(-*>0c9qk>%=Y)(`X[Dfl,+^)1dSZg-[jY.LTQ5RJo`9fZja=%2+59!ncnn]: %4BJH4k=JqC3N5P6+u]>iEAY;i>NS"#Z.X66co=h68rMN>RVUINM_-Y\_._mYq+/C`t_?S5]9W8?Ckh,RJC]4Ar-9-jr7bE3T7W[R6"GX0p>k"Yc*j7_XYUpCS1k(n_lS6$#gMH"TZFPp4D3pEk:/cYFM1_c91Kb%TLTI\;^YBtj!30^!3EQpIM2;W %i$C_D__fNgf(>dOR,XgV>+XL>I,2c[7Pm6;#s@8ErOJ^N8=64Z[7uLYV6[h5>e>PO(Lc.Qo)'ap3#\cs+l]g:n"&'Ze-PT.l&@`- %)&0Ib43Uh[53Y+88K)CNC"N>[K)H_6'3(%0fGPBNuN=DJg,lH@]5!+DD7)/DIYE^LjN?>\leKS-A3QM*B.:LgD>\j"57!dH2HkZ]dR[$QT!2:P5?Uc`=0F;j>j*ir."?m!qC17Q/rqVRJP4pHjFH*WPCqN;u2Om$8IS$U*P3X6B2*!pBA$S=d?\&mJ6AGr^Y2[XIOh&+3?kl6g.8GtHbk$(p)UTr^=Bajf %a8=X^0O>diDVboshb49Ie6#r>,Nd42ha)BORp4.&I4CNZ0Em/FeWefspi-m/dF)a14hT.5A?cLSWDp+l$+,FTC&RhIN,,k4UkV6i %Ru3phbg17>ibsIJ(P^ZW^adg9OpJXI+49N!4;FJ4W"L`V%Ye066/7.EY"M2Vem;_fbnhLji"pq%fa4ADSd2^mlJ+tO"uDg(8mQ-c %HkD#Rs1ZsRSqLeTQ@OO8Qf.ZPNK:M1?\/+j&C/&b5,kF^BUO\mo\BCYD!KAm`MTJ!].^'F?@_d,2I$%O#'tGV^JATQNKX,M&U^2I %q^Hj[-MKU8_IMcCQdc57VB5/fB19nFX]8B<'=)LSGiW%iL7e6 %??`[`_R?cAEk7*79!n/Hl#p\$:@-\AT0Rf2]Z'49E4%hnXfQHlQ[IkW*?p*[=(!p.'@CeaQn7SCLXRJK)Op,W.iG`@=-?%q"V3I\ %o$ZLu:TESXAP$Bd(C89*>[D0bj%1hL`;[#PSQ4"r):fO4BjHT,)/D@-(VF1!\ogD=qeqKo9q6s+^e\9Du.Gdb3q;2Vt*:\dg3G[C:h(S`<7U^8N< %&Np&S+\T2:2a(m@()*aiG)+JC0c8"]DlL'!BOp>/;u,4;_74)\h'0(-@MqLp*1L-QL_k2p$[21TEE(oIcFj/[L,R?;qKZcB[0Bf/ohF\s%.`*19BH7K/A(/2m*saDf@KNM*3Ouj6RQ`)$UX](?kH_ %'\X6H_cLcSoNI?Np%5t;m91QBs7CU8s3%^X&Wa*nT=>Yt@YuO\g,D0Q7qshSM4DQiG\5WVhHn.(,<#5Q,C$RoSQQDol2]eJ!nLs2 %'_0Aeep+-7jJ"_kR^;.PWuk-,gKGG:9BgqBWXL[cXks=-C\_\GV">(\+5t9E20\P!5m-4f?M@ %BJ,FETJOdS*Jsj0[E?7^='5"F*8;Ya>q01QQH('"-I6kakgtbRbH01)>mNn>@p9AB)F>BGC'osHqN=bYk1)eP9XdFW7R#9." %gLlcbctB@N5J3Z>i&A`"i\.^opDbLJ+*?\EFubVPS4u*#K<)T#O3lYU/mKm?[M9:4l(K&AH5ifRqn#)JTZ7FC=MjBs[&+q7":otI %=DK07PuQDJ33=JDfTCUFLB<]jb3/\nP)\SaXek),_^:T[_,LEc5$RUPN-ma`5An[lQ9dR9AfE`"=]+-g_Ft2'E\l;/8r1BW;r#pt)I@ra- %i\B8c+@=tJQVP5KMou/.F5QRAQT!dnLP.Jn(YQ/Vf39n#>tK+Bp0hZ.J,P#"4TFg]_KscmI+4rX52JG`6"b(!FjZgo9,/Yl+80t" %4BFZ&-A3tM.Tti$Z7&DmB3+;qP[O,/Fh&,lnrk=Yp(]a=j9#XL9pQGk<$IaX]YHs%HqU,b`-$%IPLs_"$WcT21fGX[.H7E`5p]J] %2p/uQ]q5X)K4S(]>FFMb]/a['[Q^A#F\T@nCKK$ng\A1=Kf6>eNQ%ID0-,E!.3b4q,[oR22rq9m>F!b0+k(2XNoGs8g-.74eS4ZO %J[1lc`,.@!(O/\tgl10C0VjTc=/_s-3GtJBm&4"*$-Q:AJ>9Cfn;C62YYZ5HXt6?eDjeSj %N?1%KK0%U(=5'"%&f_4mCp&"'nl/[JMaYp@fSFA`m>(Y=IG_/E[F0[WIBXE%H0Q:[3&8V&I/[FS)$okW3;r_*:BR>Pu>Rc2"bo&=.dA`*SYfTR)TT9,;lj44RD$S9Kk2IsH)E(9b^"$'2;jhI9,%Y-OF27[T&FXR(DG:ENBlM:3IMd@@is70OroB5:dr;",,huD%&JRc)&s&](8 %J#0XIm_uThZLiub*8BO=9kn)DNmGqOUJUYD>2/*7pDUI[]/2]S,nkYEJ-^"I>gSkQC,l-S?!3)\:XNb-X_:4_>(+&(V(\:s;1Vn),bk8k9:KL3!\*rs#`3h?2luHZ\I3:o`2-W6KAtR52 %C(oT::fYNL.5-e0kjXWJo6,I\DN[U"bso#L)OhP\1;_^CYF,]tkK;pH%@02f,;h7Son5BDWAK^o@om5?5o([W<:d3.]WcDM#h)-K %-pYtuBB\5m9t[d597"'d4E$8qZ%Np'^!\,22q+cgLc1\IoTpsqFX^hk"Hir(=c<+R?4T+VGhrt1FVE_;/M6n)os308`OJ,tcN*$\#5GfZ]R:mH`kQ(#eki.ArWC/^8!Me;OR %Ce:a3(rq1"SXV4:E?\bQK)[T="1aNei8KC$FLtV;Wb$8J\=.F)\0NsNPC-kE>,&XQB7@dt<+3:$6nXGdW=uE=^hH-LT+/(00+W?#!:p_VAIseojZ= %jG*R1!*`N!<4Y+?Hc&uAVihfM'+Cj5^K+@J;Qdg!/K;HH>1?TPC+VQmI#BVsAP:d<3C*@hkrYH[2NflOKA;@W)!0Uhu)PRFNQ2,:Ta+rBCqKZ"F\&S(g/RZSG1k08,r">n.F %hMoH%,Dl/BMij^?B@/C&LCa]>;*-;0&ZeT7YGjocrs49hD1^Q8ZhUn^ZsJSDTp"t1#da@j.to0-nC/uh9Sp(rmZ8O_'KYod@3YtD %<),E^O5m[Ofof0Jiu)in")ZSd?B^OdOo0dJ+>55$]B"4sC;_G7_CUduq![AZ]aH3l39$=JI0;+lOnA\iJ+l"d^PYDG/71=Ot#I7_K*g %iMXjfndY%u^&4Oampd`@U,<"gZSV<-Js]%sV(25,Lpd'dniCQpp4#/)l1nN)rb:'&*4>EM4hsS_0uQFL)U4fEV6_%/[YdQ$oWJOe %GF83+Re,?"G,Vrajbc67WY&DBGbnsQo_jZg8+>o`LqGAj51h.oe2)$:Oe-f0?3qcb=CdF#VBag=QHO^^ATcL.sV"[N'5Z# %o(SW!^_&cumFNsuY&D5%su@2*B?`>A[B.?c%CV?0gC%=h`^eXYg$&5I8N<63IDk> %`_)k1UjXKL9IWPcW`Vp1$?bDu0Z><,]0HpNA,aQ4`fl?D";C3\i.l*OKDVLsZ,s^I!r=H,d>MKjeNW_ALu]7M!K.ejfH.)BFHq"\ %U`7Rg>'(,'rVbAVNN_Ae9_?,X0#bA:Gh9k%.HqEB(I%\+;G=)bQKckqaqs,aCo:F\MB,DU?TW^qtF %.\!&J?fQc))08!Ef#^#\M,/,rY#EGY/96\6<#=$P,:n8IkMlA3,[aqDRDO"eV/%=o&K)ZHI;@6mU]_d0#M5S7kN7k1+rK)ZT[[V>njAklisUI?"JI&h#!>@PiZVJ#^(-&fnF$-P8HI('+m.a0:pr%KtP#Dd;,6;(0M/Gd2Ehi+u!HMq)LeDd-&FV%X/Z2l5^/hT]Rp'9Q.UL%h*F'fAK#!)c!75R%45poI@hP:id.!8SMS_-c.cb?`c,]8Q\2/uCg9Cr0c3<2)/ %;lq&P0I_XpmY@KD^V%f!RD*qTd]Y;MJH^feuh<4]4^ %\5:J#ZrS>$mPWWaldjsNP<-ha+kSROKXk%/96es-"JpQb[/_DY@RYQ^.M*Tc>5-,B-ig/Z8U.ARrF?7m+?,Af5!(RY)`?d*ZMV1* %[t)<3'GI8k#sqODE#&05(rbB/'SL0g(pX5,4s2,nNjiQUZDj=0W"@`DpX' %[.K=Bbf>4O^.?]*VDT3Cr(Hg_2F/hhNoK+:q\kVGE!r&-rZN-Nm&%aVl@:uKGuCClj7oIqSQ\L%[F/jZl'aX?M(HEKPB9*pj;cRZ %[F7rRRVlp-K=Wf@6A[FjOt_rTYdds0&_0@2Gu>.h'?9Ze7F9t+4m+JR:6MtAHd=gT#=9Roo1/^kTi`l65i2Y2EGFn_`QB>K'hPX. %B_'-U%'O'D_f^N7&-YN)2Ej?*,Mt:-rOU];bRVI0H/[Fb/j.^*5?iS?nZU'Zq"endCgqoiQI,c[b5;=?atH,e[)jBK<#T+Dr]BW9 %#TcFGeWdO2;J_#/l:2YS/cFjOCr(`Nn58i2ADB!&S66!\9L(jmX3202U_VO>D$pK2[8:m!ba.$N %`sh8Yht_:_f!1q\?VP6Z7*Q/Z6nm'\$1BlMC/7F_s\9`@!Y#GGQVW&h+"V/G7T<"LW?h]$!GS`0ErVJ0J %.b#$^`X4gj]6s*JZdW[_FA>0iAU1auDKf]/MLE!,UW;phZ6cV.6,BoORdF*G763cWmO<\''C;K\D65,f8#m+\iG4LjQ5K&fL4RL0 %]7uJ7lNu)rKlPK;-?1hV*fA'E4F$A'[kHZTFjq3+B&0,2la^9Rc<=0f3G;g,'%g@/*5Hm1LEN+[.g0d4P6Z6'O)V3@R"`?o$6o$X.is)[_IB1nGKTuALV8.F4TF&>WouN^`>#"GF!>;g+2:+: %52q=1Nif;C[;$=;_Nt#FA_hNaH;`FmE;JLt.p:t'N5KUK%0mPhHS#!Q0[D4'^%l1l0_0;9aRHd&,aqURFCH;7F>2nbDWV([+:I`M %3q$,`LZNR&G]X'F`Y<[4\f\u]QL1f(&3K'`)bTMZea\Xkk[j5%*sVn&CA\/QB0Vk1\:-X/[L-3R:bJn!SV-=3To %g(#%teM)l"!gdG?bauNiBLC.il:J:AY_3mG&^S.:2uu0KO*WbWVrFV,hYUSRr9N!>On=#BO'kWda37W3'+qT(Bt1tqQ&EljBM!6* %PUA\J_h&RpoeuAD/p#:(4j_En;I3q/RKg3!Eq_]4+M2@7),;o'dE^"X&EQ)bSA]l=dus\"A3L]:^K#7:2,So+Ws2$bB5M8DVREs[S0 %H5e<:$a"*^IY?]lVomnIaF>N(3@`jJ0CILV1l$,%58=Yi6giU6Q\8V_&s/K_ri,BC<$:uJi$D#LKZia'd#Pi;nQ"dV9Mn;u#)a6E %)D_T]W-@iXG/:MiljT2QB>(Gj8%_+KRdGg:]DF]O9Z-Q-_K0HK"r=eV %hP#s_k?W'Y[^6Rt[(*R+FqLg]_r%0QLd<1+\)O5"GjMi_^3m"B!\@?P;4)Whm@Y+8KLJ,=]W.(Q2&AKu!t6f2[+H`Oj9GR1n_i"N %&%1I>mO0p_@B2$lFMM@rK.oAK3iuPm[9<41hnu('MR^l_@"-<(DAdbV\[TT;1:atedN&nN;(g1*XuV;4u1?nCCF_C%\_tI!L(bM %832E2/PgaGNOSF$qbiQs1kD6l9V`fg'nWApA/_XdMo#fBL]$19q'5%*37-'JYcDh2'(+h+WrCG$IAR!:AG-:pVgtD&j>1Ute6R4& %V&DEB+n(3!/OQ+VGdtf-)Y3OS=&[!e\/^@ZIbfu,:KM8(1;IT7^Qt.aSUD@FCMk,+JmNapri;KrZ\+`81\\?UM!\l;edeD+,%;Vg %2^G4(bbuP)p%hZ[8223n?.ursJpu*P"b-n/&1o3N+5G;IZNc!*A1PQ?e[jO!>q45K5L"]F %8^55KK(\o:JJh:e]Rq`InTF-:7Spil*&TG"GGn^1Weg2^SQ.$:;e1%+%:?0Hn/?dhi!A>4.HZPK %CS\5bkT_r$D7P3HHdnqg2>DUQQ/]U"^L%Xl5^96eDQj-:5Zc[BI90hRmP'O(+ohDDL*OQ-Ke]B)&ldDHJo@B.it9W2;o:q]YTmor %UIo;;N/d8?G$,i'D5L>V4M5U<2AF1+1'o*N5mGSd"O'#&V!RLRS2F=C@We`^m463T\Tk]rq*Q6/fHhqnr:ndm1U$(K:U\(Rq8=A! %ltZmGC/0iaQeNQuoA`9+p'TsZ>L22fPpYH@q,r:?\9tL"HD#7DdB+P)L^T_iQ@hq!N/?r)Qk<+oR_[.7eTfus*O:t*&QCo#oX,3* %js3.:P*9*kBb6Z6LTaq"VaRsW"dfM>9#t%S68(p5D-#)'O7t#Z)/ke:j;dDHK16'22SlnLQmq`l1'K'Y\0?X!g1Gq>`KV2^%YcEtMiRHcVQYU7=bQud=!rKK0i$f#K?7XopqC9=e84&2H.4(:lik4\qh_uO+6 %(:VWkIrtNe.+<=[0Pj4H*j[Sr]--'5Z`@+bCpXBd\`]MfI!Q?d5N^%E!*30h$?j6r_mO %&RO>&5M``FHn*tM+0bQ],.i"uo:&$jgY\>@KK-G%khiiZ<.271\P&U.*P5*VH=^BXEGKm4LLOYLU9U-Z0fZNFg+QAGn>oVVT9gn: %M-S*$h/cQ:j=au>)V*"8I.AM\g\V^Eb:"bOft2k@JGiX<0?6g,Xc+dQ>uOBWe=L[hNl4bdXH;@BrOHLD&E;:W_0*TVkIcC2[#6k< %=J %RK=AdR`su@!U,d(lK6EahgVod<4_J-"e??bo`]0SRj$6]dL86u/Ig_de%*-NN#1+AZ=L4?YpsM_GM`0HI>.[VoZ$To&ko0_hU-;#bbro@4N]L.tC@Z4CdGh-[t?:=f%go0cE@`2Cq_S2^ouF(hfHs71G'Sl^3utbO%Tq] %.G0PQ=O$Ed9Iq]KVLO*_D@rS_='D%SOk\$QR1-R9j;PA;dl@d;&XgtW"trEEeWqY`0SI(g_)F>5fKdd@?K&OB:-Ar\[#H8B5\T %pYSWT%FCfJ*V[24[ln^.;*5/VZu_3iKrZ6kUd1WYMNVahS''JPs.YpdZ`K!D=NiJ?=]l9SI&3YFLh`)W,@1;(N`@/?m_Bd$och8m %K_NZG-sLd_btaA/o+>@:[m3_NDFYXID@161q7=#MaS&`]/NAgIoGWk6JfVI,@](gb=7n+4cms#\)#;ojF*.V8417[iX\mk%V38:) %mI'#2gk`cm1/DhsZ,(k]I@3_i='n=ZTNUO48fNpXL7VE:1)J)M56YWnhHFr\qOPpd>;1/0%C@E1\jOc(5:<:I906-(aJGba.#NE< %@#LN4C?,bS/Sj[p*n-0i@O6Uh>ptJIrSPJ,'+f$CTKNLt#*D-No/&?P"d(Y'T$0qH*"5$3BQ-M&%_jf-:\mmXAm>qLb=A/B\U',[ %R^ifrN;f>uD+[);h9hujht]Ec11dT>?o9ugV`X`n)fJYq(rP4C1^VS7?HV=kK!'CR"qnaekVqu>T-3e./R/MD9]5o]WXb4J0G06H %a=s)3K4ChB6!nfnMS2hA:(<*LFKcBen$$RtAFsXn'p,eS_d&?P>ouAScF,g(&RiH]XZuC'3i'62g[]+5hTc2Bq;^$b/oft"8qBTj %g=8f9@n.$%-_Z!:7G.k-Wc1c4D=$>P4,uZKB:(OA\jCa\n@ZZWB=PY@\N=A`mp"MBTV8[[KPmph#`nJ8/tI^D6r?Puq- %(d(Pf)@Cq,8oE?WJf_Z>X4(%_-qCI$>s#ei!l!&[mF&70>0Zul;[dl*ie/rMQt!^KO+Rfr)9!%Jm?l**L5Pdt-PriHnrXu;]h0NA %#F\+bZP<]0.TZHUp<0@OIn\=%#Pjf.Fe@&INA6i48O1JmW4I=bmkfEe(,G&$X7Y]:[s7't^0rg'@n/GD\qpA+Tj1MM!kq6VaZUa^p%B7,/_4aD`Ym4L`E %DIpDXan[T4D/#6[='`GK@Q.X750`fGZbK%RXeo9?VsH=&D+QOE=\?MmcRKrD>"XeuXB?pD=c9039EIW5k27OSU&BJ<F<=nieCmO)L\>n5O>QO$KfEpTY8s.f-DM]Qn]^TZ?JE0Je!"OdT#EI8tK) %^ppGYJfje$lhnr2bBgO*^N")3j5XH=![.)WhFF&"!;)S3H0`J43prY4:):A;G-!FI9gDLjeK%[)tUmGD^P= %;ZN9?IU=Ru3**SBed;UMKso4(&\(R:Y`K?XZf5JQ[hg>7-uE2!rq-SFP#uS6]IHFjeI$"W7p_Z#@OunYb[eg.A]:XpS5-Ed,5UIL&,/QL[3dOMmC*o..SnZR&t_/mJ-\UV!W4Jaoj!p8W1'ZbXp'hC&lJ %YN`)[1F[].Jhl*"kMBrs?N'0FlaK*]R)JUUJ/,o,[\b)NmH=<$k7$*jTUpugbhMXVaVl0G/8oeJM= %k3Y!rtS3Ijrh8poF\m@,N:!BY[L %:SN*e*eXo.51U`Loq`pL5oq:Dbo6&Qh*RSM)J_rh+h7HY;bm`/8Dc_X3_)j/fANE8rcQ88Hh%8C9ROR>PPLOeD+t1c-IY2>\!]4O %Mh7\d3<_:DY?kY^DVuHUem'(KL_X-.VkE([S1kD3obX@_%hh72o'JlL7:s3Vbq'L*!(*YQ6$3L)?n\4#n^"oNk;ka\Ad"/Vg:mf( %F)\fgTP2aUkX!4U]'Ku<>o"6AW]1$a0$W/M@Tq@Ee-3oq[(CBo]_e?f.3]fph9J3Ie,Ja9UKDFkAs\#B%*Lg4$"]-u'6W$ArR.S- %Y"6*CSF33\H$29R!2^JMYM\\krSb4#>Gg<3$sqV4,8)t6X)B@oa2%#@^4Q8H/pB3ggYmV+*V %1!BQ*'3Yms69]AiO$MFR"P%;]hlKe$`j+8$h<=-':tag%X@rK*c?X+Wl>r9PD8;2DVj4+NBm9O@%n'6c/i6V %ZCsnGHs&s%pa$Wa0fb(QZ!k:I+K.^ok+Dm %p2!LBXu2M5Q)u<_A!J@sZ9Wd*GHW<c-q#]AeN!Q;CDWGlX %iKEEl"^SE8.`FLibeu5kn`sBhh.cS`%dQ+$CQ)'%Wrjl4Uq`;&U?2jh"UE^n:p %Sb6a#CGjT@DoXm`^[6H#;Ym:8kUUU9N:8NWD_u1bfsE%1FM;D:7Q!(N"]'a6;TX6A%0;)_$aWePI0E\R.%R1!9:.helSW82(%a;l %;XSgHD!IQ*<28[JgVbbqClh;.S&HIL9VBkWS@+X6iYb%Wn>lE"?H:VZ2C8b807\GHS;gcnckS)i^p(>:lpSX;uf*:O5ioo&/2ZaKeDb`8*Xc:s&mg<9`D-g]*VX(O>7l1q@ %)DY-6IGd9):\N:RL=mHep=YV/TMrk_.R^(Ra[i]ZIG"WZVsWBd],/AtI\P>gK`k\ZAffo`6X=LqtTCn5"S;W\X?AP2eZP.W$Lp<\Et_%Hm;rS.6W^4pJA %Am`L&)JM&4qa&#HH';X3X]g#n,,PN%Q](%5HmL2/jrA"5299q3'!c&A*Oe)Z.oc%V,X9i&A-YWFKHe_[?;pd %p=+L[Mt+7K5!#N+[T)`9X?%tIStGhM.Hl"Qo?qD\/eK)6<;a=[,+&a.IX-BfYmMO;\S't?S]E*L'&q]klR]<\^Ok#76UrYlhg[,5S4?m9?U5+,(uGTc5smSUi(t"c_Xh`A5QfiGU!WRem$a+iD%(rY %*XHbC-Soc?")a%5*U2G.#G`1sKkHLmj"h+A3uHN+3<%Dl/AD$Abm>.0STq^D_RWb>XWSZ,j[!C5mKDQh0ud4Ep:MVj[aRUPjs0n4 %[\aY_'0N$M(qkM0dY@".(G'h=OH9N"30pqL(N&CTESQdH:n9WPjR&/g!o3^p)TVWCE\r6hqEA3I0+m!h693[lXW/ui>#rZT\#bV& %<_d'X-&,'k!(f`?["Rqcc]7J*ZH;7Lt,SfD>uW(&cu^Xo)tLV:,W.Ua%nMT0b]tc[1PuFDCQUi:fiX55Mh+fWG%lHPI1%3\B_TiX,5=!,^oj&Y1,CTccq^pT`<8 %++/9,8+VAo<@jad0\=p_#Sd+@^\FdQP4J.N@U?hL0^,-Rd,*NYqc'NGF&j1sP]#L2=U%Lh'\(#]l^A$r=/Vf\B_b.TDN3WH`nL0, %099u2B4YRj;$#`.G^ZIYA#t)!a^P#q67'57++h)uK*">d9IlV/THuukq4qsccN'Uc0B/d8HRGg7_3>-#R]V#!ZX7A/1t=eR>nfpV %q*X=:4tr?;/8l[+e/X-j[LW@r`sOro[sqAh %e[_rUVNf-mWX;f@!"\#YBDUC\JW6AqgbBi->\"]XT$m2bdn@X.Q"V5=_Z]%QVlY+ %;u"oBat*#/&br3+#Z.nZONfXYQT4H\M:rl/?A;7[,!Ytu_GmXTJW'KLF,NA/A:)Cjpg[Dn`lpIAWW\jUiaGBa9"Q4q11GG!pce,R %Z0N4lRsWYKA;b$\//L>rZ[c#2ojU-`%!nJuT%+:;pVYpo:e!;FJLRq7r!8rF_)\qNgT*hjG-kARjk>a'jeph1P\4YVN1K9NMgg5e %L4-R5ckGh7+spF_Srpl<`0q:V@+>AIR@)JS\8n*UlpL]fB0KpC+and/r"<0+19]=%gn:ko=R68Rc>FWKkI/'-0YfIsAS`oJ>LV:7ol:h$kr0ft`K9>%O34jfer?#0P_EXuY %.Z>0hM(P.n+\'b:F*3OK?:Eg2>@n?PEqYE!:Ese(6R'$9HTf&0cl2pl5pK2H@WgL7F"n-CL7^3%mSuX8]UfR#lW/I))+I? %/YEB@SOm*,4nXHi*^t&37]a'3ddR91mE4Rgf2\oOURs^7J,9/'>8m(+4@")/QMg&]?A7`1G#-%K5h>$U@_dh??U52@E4UUF=]bSj_;[-km,%QhH/b$s8.HNDhi!.1aU#!k39lpWa2j5k'XWPjIjQ=oH.-p/P<_t8u^R'!a'7K(G/ %`!2,AKZZ3bF-!3OL_m>F2eR?;#X1]BQ,OgG4s"qcnYH'b?#!2!fI\tD(rT`u9p6=3kq %ILa.B=)QPV:3u@pa^hfp;u8FaY[XS\#_-C %)Z4j+7jE@5jr3YgcNY_dqAHEM'(UHWB%)1^#\;h=9`/g %*O)/g3XbIH:cehHP,`e^m;`=.5sce]-s79k1Z/X(i]nf'IQFdt%#LIFq]H6I7h"mAE:b(6p;-B$Btmgr48Y:ETh0$"G$cajFu$Gg %n^"u=d<_B1Bj<`^[eW`'m8lJ^l[GJ5`soPCh/e?OaPV:8f5r;2.<>i>Qu)##ZW/\[V*'E/9$LB(CTK_-km+]Y4lT`uCK53]N0U46 %.345*4N/2hKdn5Hb'5Z>'o!-A\,M0*SoC\kBe[g[m0=F`FPZ#*4K[Tb?:PgTM(NH09PJf/89JjBigBK\.g>*35@?)N)US)C)[=>i %bbSREd!K4rITn>Hm4'7X93"CXTk(I;]`u-f`*h^l.$qq'78,Frp<$qQ[.=_LJ;s0-_*jj*&!SH"Njb,SjQEOK&;'E9MjU@kcc^0n %8C?g2g7T@Y6!]-,KVV&dQNg(]Llr1ap($FTB7RFm\tG;E]9+Do[UGl7oNm)9u\;QN+W.<=_D]/,t,:SGOj,$K#'oh %f_Kp0NG_UKM*,YNpF;*?#\kMLOHTm#mr8Mk8='?GQ+"q2Ic;jFPCUuU*/b1TR6C^80Ka234\(Tq.tW\;fh=30/4L>4@c5K7(EpPTh:(P<]mTRYZ3,H_5o?IH %C3sM5R""3mdhZsO>(7YLji0:H4s\Spkk70UOSGZZKR`-O='@^B]uPZ"ro[hXh*:I"A.TKDCq=>;J;6@Y-YN@Fkp3QKOo3U(/HJ!; %:Z;M%fkP#78Xu.o^Jmc@rm9fF?*0ZH+1_4"a',2U[-Z.=-aXUpU?hB<%Ybl1:N:F&W9J+(SM,TQ(_"'_i6O-`ce,E1hJ>^,Xaq/` %]`14s!55Vc#&.GTY[V48+aC$A\H2!O?/'%AK5P`;$J82%'[kW((S*lUUHHLLmXkF`j;Yfo^iXIC*B)dN>->2#KS^;(hmIP"]R@:?dZVb07VAiA6,]@A-k;)".0ApB/.DAMo)6 %"2uaUU(0USN>4(bc*ts#L2[btq:Kh1q-D5kobSnfF&6ooB##nQ>]kN-5q+)A[$pC'L*SC#hfE`%0Uil8&&)1F/s*JJGr)[T2[1PfrpRNR![iW3(eejssh%4@&Ioj*0j`rM1eOGNOLCL>dNs222W`eQE(V %/*Y_5g2DK'FC&`6?<"MYJfmh']r,J[jF%m^arSQmMCYeKH^JH51g-U_Tda.#HI=>=a7].=qnVHY+03Z7Y3m:q= %2R7MM%=0$J9C'$=rfSFeQNn=6makXlH"4:"Jpn7/OW\r@li\<$eh_\qWnJGck)3;A2#q%->O74Zg>kH:[d@KOZVfHf:V.Eg[T[-S %45kp=r4ML5V_r0J$9.:YW8G\i#=c)jTi;mcGVOp_Ej>W:gUh3F`^_U_XZ7!9J^D\_tteq%PG`[KBnWebL7>IG0PAUc+e"GpK<\h=eMAgX`t7pG?Sc=ZPf.O[=@>u2KD7\3ZD]/HG+ %]UsCtN%M"jGL+%p_+B0Q;nMU5Su#6_J\D?3u`.0K?Ku]^cr6%'>pGBX[XDICWkYt*F]2hi %7)qoK`BD+emVXS'+)L\3^T%)*cU/>0mo!?p*':5rH/&DPoBVK3ke2SNDNf*&4M,ZPI(3(2D,J)CD8"QJ7fT$.YNF01,qh)*Mf7r8 %%P7G=.tn\\m3tdR`HM+p$If"$VgSGlZtOO/]ll'J-HKo>r(iidI>04Qn8hkGYtKA<)O]4->bV[!s1>)#2<*j]g9N%2Sus_&VpHap %?l'4J1X@3.0MMDu5K+LbabrK+%'F0Zp*a"uM\+,Gs%lb>UUu+,HILYYKAa6Y_:Dj$rE;[bg@F9#VYlR+;3\=[1t_MVC>YC-O@e#T %-'*ZT%tdhZ'Qfi:S$A`_)!TsrM8;J2mQnNMP:SDEG>F2]=VaUHTaGD;a&O?(iQYum3q&i8uXT+TMmFXn;' %74)U=9Vbia;SlO0Y2Z!%@H%MU45HAYV%H#a(V8tKIc$nL8V"5.OP]kF#2LZagHE$)$m8LcUj4`LVT2ED7\:WcR7fn#\eoPWZ1QIC %TqlpON8Ub."^2kC,+N*XgVl$bZbq$g&-s`(]`[6^>Oj;_5M2pj]c*`O_jk(,\^l"Hp_.sJaG#.=`##\N!lkMm8YIq)L$ %X8p!Nba#BifB50]%S+LY#g07QZhI^M#p\1o$5G%9nCJ^H97JdsGR1`oMlK2$(qc+5BVka"7s?E&#%_*4:j(/C.G9hRC73A=b;o#D %)`lX*'dl^988;d-9H(apB2e6Sfm71*qk*LbPothFB#!n=EP?u[%<4`9S%LWPm]DI9"LD!re3hUHKi_t*6*fE+ALdP=j7;M;XANRc %8'HWe#]kV9.%+XM[qn1;2O%YKfI`f1O+JG:r$HM]0i/u %e6JckG-eaeA`0Wci.e6N7AZqM1L3q#^Tj@B85>h]nQC6As` %Z/tQVh(-C@kiq)(1VH4R5jVeAC\m?kA_eI(/<*UeG/3TaFM=UNa&UFM'$KU(Ia8g#?'K9Jb%)GGM.n/IVtQK'mm+2hiqPu)K\%P0 %j!^Y0Mc.E[PLTb7E5XgFId84G'm"2PP[L44oO?9=/TL>'*mnM+c)H<"Z_HV48Se( %DoK^QDL;k^h+&MMdLe,UOW_9.2kpJaZ!EL7hqNmM??M-WEbAJL,:9r_eU5VX.bhJUKOAFI?5hc0g\09NIZM&CIo;Iu4oWr$?:Jj4""_E[N^eg+a_5uk#$K)Et>-l\si-e(h.TV';\#<0BbcAYN`r,VZdcQG1C %7:30^Q%ZtK_;2L3o.\^]&oE_l3_.cUaEr==#X1;c@@ObZH3XmUMFVnY6.iJ4ucYnQ+*a0_77[r4VD0At:FI1s;.NNG'L %OV16A:bWU5C:e1`+\'PX"`-g`5N&cPSd0eZBE#?mh$LAV?1-b;Vhe4a,Oq%>dTm5dMbEML0nY\s:YB:eOYP?er=,Iamn?mrcIk17[ %=MQZtd].muSjO''PqE.*.njiI.'Wl%QnJAfr<"2%WkfE&L-,jK!XtF?k$rMSOaXbcQE(B]:N"dR %,%HA0WoVp<9qDW[PhBQ!EOC,<5s(?HE9>^+)(UI-;KpN*c^"c^cm7.\?0R/:3[oqO^[KQt?+Yo6p(cp0WS6"mq96?t;NnPJW.4`O %Q?&Mkrt6HQp;4uprDO"RC;Ds[bB.S81T#dgb1*r*O`#XRnS=8.hgQG)%[96;g_`s$;UP0JFsh'!U]Uhab],*B%k7Q-.iK!9)9%LI#O%fN**0_Y(mb\K'^:KZn4egpl'IH<%9\ %G1eXsJoRk3)lm!"I0OQRU[aRk2`Q\Q\mUGT^KpCcd#0_\1:F-gEMJGN%Jdp14F0m? %@-PjD:jjPR)R?_`[>qf*J*UrgdF[7N%gLWi\3pi3du\=TT4<#h_RF]6W;F>93i:Z/Iqp`^rt4?rB`fu1fXS#%XE0(oZtc5.YPl-e %D-1!0+V?_djk\bd\8]"Hg]Gm;)9%Tc;CW)570`!I;Ke?lZrWOk8Cfa/8#@>IUU$Y3pGsOS^Z]iBt&!Qe8Kq;]98l!uR7+Vjmr.r1!Y8:LTR+\"i=c](:Oa24ji7]m#Oo2ET+!;A&HkBr+Hh %.*C]r0L1(Cqn2Y:>%$J;,SRp4aC1Sn/"'([1FA<5^R91=@2@st+9Wr@$rJ:mEM6L6+L%)1Mcuo^f&^@TX/f7C>-?G"=fZ#.0"$Sb %pV-+^](^[1p\i&3bUid-P[nCpkI9@I4O8KM^(8hD?-YHsB*_.u[g-%;Z0$b8HSX+D68ia6ZaLr3l"1EV6th,])TEfY1aLbLYZM@X %WXL@EEJWC!).:1A4c;Vo2\LNHj4-V&6m[e\6QEgV:9QSm95\:_)k^IrGp2Ls)YAsL!0`W"K;qTW!a]?B=@tgs_/:C.or7H'>h:.7S=l'=["gQGlfObAR>lqgIj[Ye[Vi.hoQ17Vi]P\F]IDlB>ZeG)_9%&:`,*H&2A,5rh;C^dX=id:@QT1=HSoSRS%cQ=uq6+o63 %TE[ug:;YeSCugmI*>4cmE<44B!eVj[jfUF4i+^I;F;2%2J7^u5b?\9rN`EVub?!o:(=jX`5mX;F%;2EL,ZP)5ZF;k6c#f)fgil-H %_Y-Bl$l%'(M3(YC,hiN*+Eu#d.#:9;o/_/2/=G&,ajXJ6,LTlX_af62MQF*B@K^_68Ros`?i@E.!\qb[nUGR$+B;S^+IlY6)2P_d %;rqEeB6JBp:Bt(P;)%n&(<[;Fq?Ej2B0$:eGT2Z"tO=aeFs+be\,-^3QuWHlZf5oZ_FmVr-_/!=S&$7DpA"d_#(1 %\1pMYs1gT\iNQ4%9H1I\`\EBu]1(Kd3?'LQB#TCA*d97lB(-=o1`RZa!/MSj2C:>J=^g)'A:[:>haZGcdjO/!;$k_1=<.Tp2>@kd38M"GRA*nmR6hDk^hg_(M, %\%E]pTjSN2Ef)rXX]\g94'?P.=?9QOXiCOt&3#q6`;c=GI[UVi)MeEN17G3uXrW['n$gpu15#ZE,mdX( %Qm;UCnM++@)KB=_BIo)%+lsB*"as?MQH"Sea:8\3).=I426:M[!`RL0?0_F`7[G8Y'e=>lLS#1FO%>8S"6QbVY3[gq\?F&H!jA?Ran, %k?LA#)K+DQrtE`6]^+GOA%6g[jOO."I.iCeDa#b;V)PTLHuu27IJLbkIdZ10o\0)[8"P"gZ)=1<_m@\EH2NN>^A,gJhYdAN*dRai %Vj?X-OI3ae`d[\_:H\L9kHEb8j;n0qI?2)=nL)\(f4uFWpNo*naRc$P,M]s+n:(sti5W)^K\A85`:SJ5IsR;6V$a?hn$oWt2[q]Q %Hh`Bj*h#93ZeTrac*tALgjE'jH./#-"Rnt@Lf^8([huDuRJ;F]bi;4tYDPl8]j[Tk"`%g/7+9Um@mI8n3"$@6G9uRZ;>DGugpdeX %4B8r'@C+PXqE,KFdY9H\VJbj!1]_#%([R\O/#4Mt/NcF$W(sZ(Q\sDJdk^-.,[E$FRDBp/H5VTNR;M?Ftkb1jn>8(XdL`W5sO\?W_&`@OSf12GU,12jceZRuH$g_P:S[YCV.+&XBmOY=P'TWUu %4I2))A0su5"1OpC_M.G4p'-g%6?T)I"11FYO-n[p$;_o#+(Eq %#D-4Ui+D$gH_MgK.Dj)2.mSj)?f=q.d-motZd%qt_rJD9TH0*)j[@*65mJE0='q%X+"m]KtXu-+QKk0"Z._hnJ %0mj9p)`56"juU(5Gg@M]@(7VcH8#]=PpDDX\CQ8)_R>HWR&phM5aKBtB`FaEV"%U%b"fP(=tLnT`F,?FiA%9^Osc#D7dT"6Kh[cs %+<$Dj->-4*D>B+E^?BXETo'G"fb[Pg5cRSRobm"q+ORpq09Z1\;PcFAiBt[P9N,T/c^g"93\3c4@j;#R6\;:>==u!TAHYV:*c6b# %0H^;-[2eVLHN-p)4oP"]?B7=!F_!]V/;CcjmS'p7LQ\e$Y_7:\'1Q*^dk>GTfEAO;04.%J*LdH!k2PCIniuKNhC5TG)m,+mo)HLilq$$gFF7=j'2j,Rj+7")PL`b]e\hkUq %Q+d*jUJQWl>7^l$1D6EC?YMT9A1Z60JZK`ug7,?"U\V\Yr^IA\9gm;%*cjiVGV&[LT)1$8&g'24"cc.I- %J]Z]oBP]eg3X^T&Rk@,KTU;Qc5=Q"P`o*=CneMH$q\$9!B?3RF/:bA=);mEAao$uNdbB!Y_#U,K+$SRXW(oCo@/Y5-p2p*2hqGhQ %61T]Sg].RMFtFUe^i&6[!YQkYp6lS++-:XTEg@WkH=G7m6Es0q16:GeNM8WI55[7Fg)JGLP#\^n&o4)_M>E@j3GJ1]5nWG6 %peb\@[Yc=o*#0%S$Rgnc`:WX)TSe5GAEY3!B`SH_]W6uJ!r*E.M]qSqZa)N0XqS`2OCZ=%mH$eED4,*Ehk[Tpa, %Q'jILgpPhqh>C(alY$S/ZIBC8$-+\m8(,?(Wc03moY94YNp.M?Qe>#iZ:P((C)Y^ZSo8kAdl3Hd__]S8nK(I4J&\!Bul_ %O$N?u#cI)%@cB`Q$[A6T".;cL=lGA^uP0aRj18=[r.Y> %W]NM>'0*it/-UMV5UQ[1ne"^pOj2fr`rH3g$B7#FBZs*g<>/*"E.9/Up27sH2fO'A`R'@%[(cY=2ES%D.-q\jEm8V5E@=LoEb#ki %g:*Cs+J=[Fr$5RF6T8p%.k(FZB)+47%&gb;'-)IQh_1eP7+VOr4424uL%QE/nXSRdFAtD'2uqIh %A-UPP?a'-8P?9_*$4E`4GpqN^<0,YObQsqV]$/2cD&Q[$a,%mN6aNYWmd-S69YrFnZ+;]'oMS?Xqi*L)XRkoRW4IVBA2;D.`*S!O %p(F+K@ms$4&!QR(RrKZ*Z#:CW_;AaRNJXC_p^!]nDL_h"Qj(AB&/Bq0sGu-GdtB0Zr^t_#Q,nHa-&Xn1P@-6Ln*< %C5kUO7D0Qn29KV#Aes+Qr4Qa&nP_.DSm6FYQ`MnJf'0]EWNPEHI+Cj$#$+&@ %UTu1NEjOsJBLLnSl]VWh"(f(O9(;2;Ts@Z9Cc\*-"9+>_'gQ\*R4btKS=/NnABBE %2EPX==G0>V]8]g)J:ktp7E5WS6hMH^(Ye.)8pQo.XeSl,+Z:.3aV(]XGq!r^p#%TIZuiY(N%MnWggDV@&7Fo`?Z1p2QjenCIVKS. %*Q_6WU>sT--D7%p%T'A1V^XIW(mu;a9s)ktk48G*,[]2LYrpQ3m4l9s'uLEsN:qkRW?e*;BVku7+IF@riGPPYE8imoTj#jMl?"n\ %;7\F"c"]$&?nI"X=&:EGdM?S]$@n(IXfW$6W,1O(_JD<,F#L,Kp`9(48dmUUR5S>%4:0WtA!H1BT339*&WSumdXu?%ABRqV,7;2^ %Z1dSfoLsN[7dY5(opLaG0h,l1.TEijEI^n0HU/"9S>c<90Hj3,l(CI_b)5DfH!''hfA9!'VM4Yn+dTf*En+[brc7-_+3]m*bOO:Q %!!Z?XcCgbmEE_DaqGQn.RtGR4;/o\WDZS:m>Vd*]7u6/.@lM7Q3=8(D/$$"n;"BfHak(j6q:*OD#1@QA%jE7QadTt,s!ckKX74mE %QHTUimEEB)ZUPX39W\W(CH,\CZCS^Z.$&S2Z^0p450o8s.+?@i_ZnqBe[68_\J-RMK_&FDjQ43;8? %\RqD?(]oVPg[_T8n%1*):Mqbp'\mJ6P&Q$7*JeB4gl_XDP\oTI1k`THfKYV(ftJie %/iRG4(_jQP'c78maZQ3HAi5M@58J&q@,0g&RbB+b!,G87MHfmCLBoJFYc;&4U>4%\3dmIXCc7H)h`:o,-2hTZeJ?ut&C1ifadY$# %>aYC&!J/u#6jgC[U5%%"9\53q*O?Jk,Ma?D4,?*L8ZOHlG8)6:3m6Xr9YtD-%c-M&&Ngd.\cm[#N;?S*I<7E'=`q/n.ZH`B"rg4U %q"KDr[(J*pfb%DljjC"I*YDY]1nhR9gDDl<9!lIt!lOH3h,L:Ri=Z`E74(G2G>a^[-@[mENWgfl5Gp\"+2_W^#ug(,@V.LBkHJ:G %V?D2)5$4#H\KtF3>L"!A[CPk1-\FDK3?0p2;a@^a!ho/b*_lt?IWGD.3*;t&,W_fkFePBLWj1,:];?/D?,U'[1Q,m-^U-E`IC&=' %5K;5-r8\GP$lG<-Y1CF$.rnb[3;^TF';u]tl-r.q$:g'Mo3cf*T:EQ:-.fu=&]+G:7&Bj%RDBLQ_i%,Nm#.UqEus.0YS&>t.&QN8)^Oc1Pc2m>!"Vo;:* %opFJ^@Qs^29NKbe@;/b0(tM6g=?Gb5JgM$k`-Sb/3G%REe:osLfDP>n'B(iue8,6&U#;@/^l>\Fqh#%7ecRl)Vag<&VF>H77FK3= %Ga,#Q9>,3lr?rG_!!aC %D@o"$#QDID&g?!rNR,LWqrHe,K*K)R`h[Uh1g1g?QtRIf7NN1N8m3/J1nkkdp?1IR,B=BH1L@3+s)M2;N?/20A!J-t?_1_92EVaE %S!InSq*Pliaki]WbIKRh4CVe4S)`Ij+2rMo%\$&'kn7+8^RH=a#Sl5\>)7<\Xq+l\BYMB,%tgOd/Lj7AN5I\nQ!s;a2N-,5Jbe$uJ8MLP-X?Cq1i):ir2;egJe&%R:K$d6!_5E>t74LamgG+uDRLGFOMcMA2>tWH\ida;kQjZ3"JW?R %.q131c1]4\i!#iQ4+'hmD#fqGgtNm[EOOO)Yg^(4dSeD*!H@#kR\L)KoJP4][Sa:Fb8Ik_kV=.^`$_UG/F\j;rV5t,fkV(&9Vk0&%pMqprT@thud(lg-)3FV?GWJ0>0@sJZ0[VBRS#q>L=TZ-U,:=NCs"Zm+gDV7$ %-Egh7%V9,10Wk8qjPY7m6'PofO):I#&n81tM3&UjL+2%&YU]Z88B4e4==L@j8B\/'4j_Nb/ANp@T&GacbfZ7,rc_F#i=)bWI6 %W3u;rWc)Zq(;0J.B[tQrV=F$?r1mt8n_2:.E+CK5c,b_Hh>W>an]*p:Qbt$O(BIj9]K&3J2`#.FD$KG.;n"(m`&D4;ulfiT'OaO7^H %-^3!f7L(*t`:.]'X"CSlp([L?ZSgDLB(O",QL+pENPQ^QdTdc#Y`)c`V4G>RbOb0,022GJGRTEC80HMAhnSaW2fd`q,DiR`!2%MW#@Y>0YlMG+0R6EFGj*d3 %L%V./#e2dma_QC`)5Lr8hj^iO7rm>3%[KS*VV=T5")FdY4LMV^+$,K=P`)ENo.ZKgPUm`W8bI?:6oAK2 %1:"%u8fb':;)@5i*a20d\nTHl0Jo#e`M"3N-'B;a/GOT'`hPR3V.@Br(lt@\)^kA9Wu%U,V&505Fb@ngd\&=kYVf4Z_i9LLL*+-ib8.J&q9)&\r*).AA4cIYs+-mKn`@+V^6-P='G_B*rNeneGsq(]TK+!>LN\NX-sQff.h=,c5.)PR6NKk1u6 %U,TrK2e`>-/p.gq].c'?,^"6K01S#2#E[;+1oWAH.r@NaQ=S#C"J3p^f]I!@fkOp]4V6kMSQA9Y=pC+PqLPnkB5[DV2M"G95bc/5 %18oad@ot0NS7/cc2XF"`L7a0IMH@:R*2&GRi.G5.X[ntL%jg)OF/mnO;AP'"Pl=!>T.$IanH[TaosbFOP3&!-oT[54n451krZ!%](R*2q[7&A5-JB^h< %]k2+B]V42a>(:_6*&_t>(0;^Vh6E#D,=io`ER$YXA4l %;mFc+"#l=m+@aWX@TcuiT,&;F@>V-(6=8klJ#jqud:%%gh$hP>I9g._+*akF*;9!K%,]=Z`LLFVVYmA=L7\E)=@fq_!'>S6pfYdW %$glksZ1,7;B+@q4n2%@b(P.Ig$%3r0GjZ\\*LF9B9@4#1HCUh$glY`)[o"lZ1YFtF]f`0CPTFnTPqMN]?2F;>_([\u/]Oh>#*'6S]p!r7"N"82Nd %LZ?W4=r-E.SjR&r]NRAo,F`ITR46Nce%b9k"Au+>,d5(>eq+Mb-@V`73<)&IZu0/.^"^%=g$_Xki,GR"OB8mGX4^o2:g2RRW-f.R %q?W723WW[NNLte0OC+5J;hG`a#g9(GW9XYT,f$TlrXDABZH*7\?)P:FGZg]h+Ch?b;=eB,_9;jC9%_F=,>%^`lsSVV#Zr/<$NIK86T;l(-DV-?(u=S %MlKui/VS*B*("K%`/5K($qohX!e;>N6h6[K$_\%%CfBI;W)*]_dP?"#J]+gB$9R;l"9Tt`LCPB&WIMlT$eH+$BTG4-AV1MAU%8k %qg!;X:?d;!2^p(A5S\q'\S]]NHKl:,Ne_7-I5"Or_]"2^U2K3#O(ene<>11@!E>; %JF"#t_.ZheTBX]N&Nc/6-A2[WO\@cnlEqJ])Gt:_kBDosVdhKrb4PkViBeYbF<3:#SX_h;JfAN41sP%@@'[)Hf9CFkm\BCoc2R^@.pW2k!_LHq-''\B4a/J#U5\La6"<$.-FlZr&n8KaM@:e[:Ve0GY]0,$=skd@J]`mG[edJ+jF@s?pNZrW?BC,U]I %hY%G:Bl-e09@tsiJ)[nrk6s3r10frU;d'WH*CcEnNA>Kh1j8J3"s'Zm")V*;X@\nSBE-N1&_s,6>j4)-kb7)eJ*OGA.h/S%o\,T@ %ILA7uaT&"3aCrbXbos)cV6n31=LO-$r(OF!*3[f8pC=_/s3'e<1U.jI&!&X1g+2Q-(9/DOkod!=+>@4Q\.!D5hR# %H*bk5^rOjocKs6%nm^_c9"P/<@3eVm^]'2sd^Vs8"t-F2VRlWD_\UPNZ?.d$)jYX5Z0Hl?%ig%C"kAMqF^q5TZ]'5#m9H]rY,[M`l59:=l"Elp97asm^4D.G:l/n(eK %$NmiUb5Et6'e'21b*nqO'[LKib`6RmeRE.s9PNbD>_]k8FTbP:U%?')W"dX2Sh*nD/R1QZud_9MI"M< %MLeM#HlKF_e71dSGC@AtAn.WTZW]!'mHstp_A\=sPT7"gP+P`Ma(:(N<70[H0GF]#2o09GD!oPFiWS@-sEUeK8\p(Q(\F*dI1;B=\H+0N+Q!`k/62+&I'arZMDi)9+K`.FKl>SpqgpZfLO(Pj/!0/(FP%pCiGrp7ufO9cUq3.1U=;jJi %FN]FFd!%mSj.pT^.U9K"8H14>4h+go5/;=o#]^CdLX.YEbsk>K\@08IaPdi:f!pgoB3T(:K=,Q3UdQF?7YN]KfWn'g$'Q*5C`8V= %i5ZbQH811g=hg!%e,Tgf>XtQQj*+..C1CGq,na5CJK<+IOn?$"h1eS4`Q@]Sb0/a\2G %-:CZ1rh5=+=[?PpSkkq-.+Z58U&J[ln7n+,mD^_9(bIfD^WiHp*DLYG %V'=9f!9&''jDYf:QOp8i1o6WXpE3[[!AuS4/(e$iUgP+)h'qe<0Xqs`:+rG@FBG-S#:tiG\Im:2$p^62b3g8[^RB`fa;V= %NPaU;oML>:CiKM67TuqM;4!,eMFsQW8^]RL00Q>s%[N2d1287hfLC)1/J0UpaS(PPD^cbG@a(@>G)XS([RLC_$(?gQJq:6K_&F7U %1L+T;6i)_D)1q4Ar-b-VWAm]X,[h0Hdbi'*'sSu*o&ZLGnl"09#1'hnJ=[?YHh%%5E?)C.+?l'bPI:U2%V>oi"39ne$Y1UW>riLh %&tW:%O?LigS-M%YqZ_O:3:9Aa#7Vl&4/m/rX^0/J,]Z'Ef9kf0k`!Q*oA"2Qhj^6DpZJX3l`eY\`IBc".hcbLpVLa\m/&Et<"#c# %Q;dqD;7X5(G-JiZ9-44d<[H<#I(rS$9?)sD)#4@?/B9j+&-BHggTD>7!p]VEa9=JZ3B?\.(pEq#.MA4i-E'GZ.aMu[O?J/%D1ZfdF,X^MYm[UUX9i7FX%7=S6A#5O%Nui51EM@6-`Og* %n!DI0R-=ZZ7Q/^N2(#.Eqp&E`1e5MGK6',#=kdq>0>uVn=NE7!LsH]0.jMb2;ILXcRs:BX$)&:]JJRLq;tE^/.Ug:Qcgp";d0OEc %eC>0=/RfnR`AIn-EMac5CF4[>R.:TuE+RU>OepI$<[B42#8NM(0Z.ch:CW1\\MV_[lE>(n0*S*`Qg'm-<0JksZg?@!hTnW#AE,u^ %9*dsI>3&nPLr7YL,iN5K$VFpfq4&f=m:#BkLpBG4[%lSp%21@(GE*+F'VK[l %OK)8;m/m"^/;*YaB$4Qm@C;%jY*(AW,?JA3qFUcRS&6R#hDW'0,5#XPgH4)kV+Sr7ioP<7V-+]M1KgY"iXj$&#C?,HN9iiuptu@9 %Z]e,^jMV`*4#e5-e9nEb%cShd8?-cRs+<_B9nlrKIGSXZR&?s6gffFZ0/cHb:FG_[NJ[I/Fp3=`;Cd,P46G]0'Sh(u^8IdX\07N: %8K,(+e.\\Q_74X-Ch3F!)5#?glP]+c)LLnqY33Q$qRYOH73\S!Yi<[n7K(FlgC0&hD/oAR:@A#QHmhmQONBa_g+At %hV=51,ZD6'JN`P20atY/GsYpkqC/=6Y/JAg8X,Y'MBY0a7!**sEPh'-O>0#@M5q):.UGQ&N\HF[GMO[r8<7@6&e98A@&I4X\SLuI[eBjFp'`4[TuDA&]A(?+R2Wo>7U)dRWH:e2/rFN6F(HFXLTb4O#O]B %?q=R;PTo5EBW')\ZuhP>/I%`uL!X8U+WAI&Bi>/hOQYI(Kpr\!a-bUj1!lb=PSou,EakOKdE5asZ/b$\_Vmg.&*.&.PqBS\ns)X] %,]3p37NIaM2j!a>1_T_`"oXOj*.tk1+G]"0I.O_t]Q17a:Tn?JS&>n]E?=Bg/3]n7c[>no>ENK1)*MOUWPog!7b>f %V[0_3pKTd#D4ukmoXse83e2h9f\:lQ*]>qk-n80cm!s[qh.P#*,S74UXERO-FVHJQ3$WT`,W2;CX*NbRDU12Pa&N8HY^mjTYR)am %c\(k6I;UdVF(K*<'b$*=8ib9Lfp&"uh$s#18Y*%PeBG._PdnRTPoB$AJq.`@5X>UTTS+n+(ZLhiI44%2eHSk4!:r^]aH1:Q %<2(3>dA5p?g.<_;oMCBTYtTIW'e[UZl]N`_%a05lLCc5rSfN.3db^jB<$akt;&.tbQQg"I_4F*#11trS^^1A:elX!m0Hk9XB1eKK %'cIXA+kQ#P/kQ0V5kq:_+V#Z7jp$jkK2ok!IB^'!,!A1E,*Y6h?ra]H&BP`b^))_tZU5T5BiMdk't3M035n6\1'.Q7%4dMb!`ldZ69"Yp2dip*/Jc9dK$9;B5Te1`FAk6a3OPZLaM[si1OWbVpBJ+3V:3B*e9kE[M:?L(MS=ju90W-uW %ORfOIM=ioO*3;6+%_#Ss#,ncKZYp8K*UVN-LSrkg"am?X[_20jH4,;Ri^i:o8Xe$IfHfS.<`iJ8Ja''!":jg:\eqkhZK:H7d>H<= %6dl([,c50.V`'\nq"X-kXXWneYO4S4Bt/aDVIEodb2TL6X1TjH3OQe@ofc# %R[s(T+I/r7J!XP".X'#QB?"Lca.\QV!CQp7-I!or<85qf8MLX-$JW:LG&k@_oBP%L"Q1?6' %jb]O.h=;R;EE4s=4$1<<"\M9%CnCtUV.kqQBHaqXC$7R&N>+/$R&#l/9/RF^r'=7P&)Xn,q$?N4K:(B,Fl7VheI20Gqo&pK>Y$RQ %m&t:4KIcLVe3Qd#/\,::"QUNH.O%0CmC[M$,HF7E\j1-tcU1^P#HAY`Qml89S/DC+?^MtsS*+&?Xh#Z4b%,$@qj %!#K-CNRW-V+W;&tlI:`N.b')h\e&?'#TT,L4p,kXaXJK+Y)T8d,Rs"_dAW]L<)3!WA1-[)T>T&_#!*gbr48&.A.:Oh^hNIHZg*)D--jj6N,9Q %4g3gfRu,kkAtpP\-%m&]1eXk-n0bFDQ)TP!??0CZ7'PU(F@b>4!V0j0f?%+OJm$L?$Sg8lJ&-X5IGR^bL+YB150JWE4Pegti`^#Wq1_MVVV#3o! %36Z?Uj[29e\\_"1@intEA/th=O2*,ILM,)4pCdo":lZluq>eM,A %7X$$sI=]ITBe;BYE)0TlXF::`gcWprpbC=?T#Vr&OelOjC5l93/IS!90GJ!=N%jS1B:<$7k6St'R7b[+)0*Phi7U(A?pT<3li63; %8-$4DMS[9#(&8f8IH/2K#D#C1qY1I9AR@LGcX:JR"^=buAt\>2A@lN%jL1"dE;M=N23k(.7[F%;NbmT1405]Hh([EiQ%=eUP.TgC %0FADO%#naiI\$c6;+E=:\dB#FdSWSD\.+O.<+[^sE&gL,UrJ"8B"*/DkScMYeo%,E=AA!b8(`nQ.Ek9h3A?*KKhCK:fSq1%-a`F3 %eH0V<_?u$MQ["nE:cpRA`l=[HiY%QdPRIM#Z#7KGDXP3cln(P"Mu]"C3MXZ67ID+)h=.O#8/UM&JVE##'!VlqE1GRrVarG^lB5%? %'?aJ6YuM]#Y+824VeTs2BS%=M<-]]W(B!5MLG6ub&-M.]=DoKMk=>1T[jL\H2-johq+>.BU5F2sBA7%[kXuI<3Y(>_0l\7E7:SFN %?KobqB##4R`C=VS`%Dc*fk#[LGV?FH":)Xq3#?)r+UY*>N&f&m4n.\H2a>-_U5^VZ4So3UNbtUh/k'+NT$eOlGXp$X/nc9pKIIoYQ-RCVXG%N-9$QkX5 %Ift.cE@m=d5/71@CH,.S_(1i\E>!Skb-$q79$Al^Eg2UBCS]UK09(c=b)+b/Lf:6&59F8l%KmBV@WD7ago1#%>9F:uZqo3q>g7*C %s5YNj->aAgWN^W"%uY1;fl.+^H>@dR&K@l^4m"g,9@[J;D%a>^c@c#7@-)OaF'lo&\dFF[3k*tS'ne6iU:/'p-e(^*k]X++6HZ&R %?@d@*h>'/VjuJ-]jlMaJ3]Xe7]krbK)k>r)Ig2[H(%/JX>6^`e9qQTO[#hbm5R.$$](+(%W@9jJBn[QI3-6S%dp.GPY-)8);C!8` %d39TV.;]dr/$l!'rd\WI`>GGHRE;L2-eY,$bjA'X%+%4)\"O\#lt4O*`jJ^hMW?@J7&pHS+'Zi["T>^d\5T"5[pQ(Z&W;S$pC2ZV0c^G]L>W^,ZNa<3qBSJ,IK3U@QnH^gl]5h.Em'N?6,uY[A0.G9^YNMX(Mo`[W/c$Xd`<eY<4gdQSl0g4BuCV*p!>XG"Ke(E^.)Z%Prtc_@1@4*]ojC2Qdbj7:2^?\V`Q4U$EV-:sX"G`VtO %0BGGY"cK\n-&AA]1L.Ro6',OfQ`2Ic/ZPVa&d`M&,8+bd`P]B<)nGOC9YSn>=nnKXAlQ-Mh2,9mm %B$!e^Cje1_Nb3K7^(Zdl=nfpL'>jADM!HY&Y,%,Umf[t_irCj+$G0/DdQ*]n:$# %)4ui^Mji\T7aV!&A#4+B1T%(*5^[6ZQp&o7jHAjIXTQd,U^(Tr-FSS:(JkgLq14YF5=Z+jQ%\KkB;7jsk[$e7kPE@#'KZEBPb %0]ZQI_]r$"'$\7j3o,Td01lpu4pd3%C<%mY2A<7OUf!S;fl"2gd_=Y?iuf\ltNYr@Jd %OnVseVj>o8#TYPFf'JM?A1"^(_[s%,2-q6lTFM4f>-SEF]Wg;F6!!5Yf!91/JS.P?CaC]%1l;B94"@qRU$E,VM5b->Jo4;:!PRM"'O96i+KS?-VAZ=-'nD_ %G(cj@2lTV67*-#Y131pC6k3@Z?FQ?OOK_E0%LC2_U__79F@iC.:,>$\41(.c1h21M89uZ\22E(q)+YW9PKhYL!ZnJ6=b4Q]g-LTC %$Ii:T*QCU/\TVmr7nATtW1dd>0$S3A2:cG?AfC&>GQ]:%ZdB4R:6Yj_)/:#AK)fbOUp+(XnZ-a6:^-`2nR\0WO$$d<8&E2V\S90* %:-KY[\ZA3:O=s@elC%P+J8dPTR4f\BX6ABUI77$n'5[bb0nZDS4/ljO!]\%p:;Ij00/`q?f %`R2L'J75OXIf&itYq0'N8`GN00Zq7b.l#mXBrI]m9XV/e?'8BSqM;k&:08Y"bZdOP7L:Ru1m6"o$3C5:dnct00f>=ZcZZSK=OS\*$Ej!1 %UfaJ2+=(u_cs@JYFJ@8("f`9$S^FC8]`iCdKGeVJ(P547bZmMHQo0I+W+Df:i`nom#Z*l@okN`!DC00Mf";dTJ3r76T,EJZ#5WRKj;UF"L8;gE`mtqgT6W0iO>^m:UsZ]8g*.Fm %Q=m7X\)n5VpshctAXAb-Q#;&jB%+3YuP6o'7*Y09+c///Sg5n[=$eS"eW5`@TO\i@'K6rX;=U6D6;p3j3 %-DsObfk0dPd#hfseY3PW5Jf^DW2Q_75cGr>J_'kcNO[h'QKpkcG^`]k,r`jq-HX'qN9g0iVEoBQA-U=OAgk#k"IJ3/;HU %9tZSdQ*WefG;1*ED<+a`fOcDH>#DS`q=i^`O'48,L>1Q>@YBusl7eLAC;:&@a(lV)Rt%L6c'>%hd"iIF.(6X'HTSIND=7b2ck$B$ %=RBJF;TRFV3i,&n)=O\qMnkraeP0gdkp]4J6[/^<&N`B+e/0C!]-Uqbi='LG#8_JEHo[SK[d4BuJX>ED^;sS$/E:3!/7]RTG,K5H %0)Pk]MPm_@RdXDd0b(0kksNXJSAE@]>.X%T(0>7t``fl=Htod(3NoE&8^S@n<#=dMZBA=L@1Di2QlL1k]/Xc6t-$Z$YNle5hn`_d4d]j*

3']=VU$0Q[!: %h[C^>Wb.,I,CiZ*K:]:J8Y=b8'!5R$dPjWl9T&l8_GD=fZK)2,N.:rm %ZIh!ert#";J4H]l9%fI[_(\oneG>4(4(j.\>FQsbEq/("ilq9hQ[GW$_[`FXZXI@>Cf*MA:jrfL7\j.n:BH;/+*]cdlEC9ne4;nYS-T2ct@^79\bSZN>Qs9/:ohfELKo#t/0"M\>jBXejs'hg' %eW(9qiB"Z.S4[9D'VRb$./<;\i_0`ob)jSOKjf0>l.c^-B?M:1$6cILRE_4PemuYJ*gV8UdkjeLVhT %'1bZ*/s90p=rrmc_Q8k)M0-=L4b3co.]:F;D&hNUFZD`q8JOli3&?hYp1eaRC9hP=@^4QDHDJ7s96+Y6#!26SgAODI:H'F`:H:3.?OiS^<>k%!Qb_aS8^dU$f@;lG&^3J`f50!6$1EUKUu_\Q7qC'QA@JA"KuG';1@FhhJ/[4-f1 %MA7@>a$SopPh/"UnEbVA_eA8Pd`4'm&e]nGq4W)'W[^W=dc>o9tSU.32&fE*';L^8<'\?FNXK5 %].]/;_#WnOFhOYfLt&E4dJS-2+Ko*bO6[c^8>>OVL$%H2UpmZ*WbT;S#%JoV9PB,:G_AgCS*ctUpAFBf9D330mOG`F-MhH"pbFB$2]:+f_B %B5U=6ngp.TcO"n0C/ZM;VZV\S(NMmGBGnZ4I+@nopF8C03OQl$57%YdE1\Ia;-CNJCDW:eN>QT%2RteJh %jETYao..dm7K?Ql@6V;K0;+c.)LWPVNA5YNbq]_frg'"kc'&=h,eSQ]:b0LQ,,)7_Hat[B^8Pq5NeRBWh/+>7(7Y[h:T9N85T_`P %_Vg]rSoF#,TA7bjF;f+uW&Wt8f%IDrRL;d\1seh,[doVT^":,ICU^t`<8+KZ?)D5L#0*oHDiYOF=Ru`bBWk%r56cIhFjkr %/4VXD\\%_M)*(V^rM^0LfO_>QTUi)u%E[\FHb9Jq&%4q)7>qCfAl7sK&%LN&L %L5;Or.OR3=UfFtJ):&GMWk-oF.1tD,!Kc3'C`/JmQ)'&[&cf25c(a7p0PasQ`Fe5XLFEd;/]OO8*Jt"SVf6_o0-E.*16 %\YtROW!kRPIFni0>pR1CZjgQ!7?&ceO6csYC$WB>LdRhR#A@b]%CgjO4dl?";S6/W<=(=#3<`m3k'\8!Bkd@iqO%@2L9@r(Y]/ %L.5WKi<3?J,,HM>j1/.RC3r34G0MChjubcN@C@@\)@9Ts\nu6,Kb-a[rKf\Nl_J&KQj4BV^D1Gc=^5ok*sD[?ArKQ'$am6jNX40n %\Z=]g0,0KT>'oAXQpJ1=,"D,o:q%X.K/c16ngY"]A#Hh:]Oj`-ZY&lCW:Nhbr9&c6!$HtlNP6"ngt6UNh*kUlKuCEA*%s&o78I"A %akdV_J><5eW+Q%ZlnBo.\_SP50-(!ToIL5$:TYgFRMrjW26hTdl]F %A\(1;S4"$a?R'$tM@?*K %+Y&D&'oK+p%:31[@q-7fda`")5Ec>c?d@X4B$;MC"l^$Q12A^2Kh<@Sg-iTP2<[Xt@% %0%\R3XL"ouF@[4)9^*s)CK-%bgTr+7rl(lA?7:'OssEl7PT5lI,g$a)-+0HuLk %Rgsb(aLLA$PIqG9;&2%XTL`RA0SgU(AunuPb1B4M[7Ympd8KA\!Ki?M+hti;]V'<5(nlS@,BQ;kZ1DCmcC$QD %1#GfqEB/g,k+:(-2q#*I>njVl114#tnN'"TRs&qd?5hPu^c>[gkP*E8O%OX\U>TBuV,p;[WU*/T\:Y8Z"mPmVT<<<=KO-\^[h+^, %CQ`%['pA"Aa?$P[l:u!$X(5,m[+n6sTFpld-IpHK9".V*GV.39W6=X3,=6;-*4B^!_!*q8B2*o-fQToBa@e6WA!s%O`V\G;U]e]/A-\samX:3q86.uj/ieNmK)VqVaA]Z5WA%/T`g$NkT\U4-uD,Y=21::0MTS3qtiKp4+*+tV:H\J>K3#HS$AK9p4+=&^j*&OOPNB[=]6EU5kb7LX(*N)7UNHr5.EZO/peRuqYh8iFt %e1Ttt2/9^1Q[:SXD[#oeNL?;JLEl)8AP/L>-SDBmhf5m=PlbKN[gVn6pCKdiR<'@`0W.[R]qnGc`LQb#(2M %P-Ej:jLXt]LbK1c0_cZh/muJWV@[V41(=DFD&*_^c:u;%SgfnV.$.R'+fmOD.+2qk@O/t*@.u-cd"r'!@RaRNPIo>uY!2)\2Zu'F %99'c[Rq":/E=J-e%+c5nD?!?2[gF,k'R*S[_B?[fao"!." %\!>I*7^C$GKd`[u10"OS1t,c1%ph8o#G\?7-83V3]p>VAp8-\s:om&nBF?hP'Q-iZ/EDVe6]ZR0RG1W8@\`aLDGf:IQR@,K?X6o^%8NO*=+ZfCPp*V6=M(JaNNlq!F` %+#^f8R[rAb%`bh&pS;47(1P.?6-4k5r,kYGFEbd.\f8Zt4Pnbb'FWKC5e[(B%`#@;W2t4\a89cb$t:d"FYp6XD=i6>7"61"YLH.J %a0_VE[I'W.eH`VET$!$(ju(^645-@:XaBld^<,l-g5/IXdIYKj/Y:[$h?[+tV@YrG)dg$7`_3qkek66Q/8aJETocO.Bt.I)qen&2 %KYiZ%3gJ9@EfDZQgq4==3eFPV+WLNNCpHS2lc+EDW5DGYo:L:a7a_.5jo]FWkH0"pbh7S()dDnHJjsppCIGWr_ %%fcRFcTV2m?5qesa>;.)p='aoGkROeO$E0e(I.`FS)=7q,L8UJe8i8&\;^CUX.FS.c-Kb1lcD6`p\Q"YpZ#&Bjf[3"rpKMCF7[Z& %4S%!7hZu104oF2i+1Uk-iIB^'pcnY*n%4^"L:\u8mD7rr*NqX(_g?=ARif.CDSGQ$gYNuh4t;'XVAj+eG#Q?3Jl1rCh7*He5XAFH %H2VX21a06M0?HnlXO'R^*rq?/5bMA^pQ?QWUrR\]Acb=\NS"FuknL*1Ao<.uY]D(mefrI%pq91((mBY7$c$S>tGkH!d %+df-rYJ(V8N]nT#.ce/mYA`?6hd"@I9W`SQ9mp+4B[=;!j/(VE'Pid7K%Fb=WK7"VZ]R&J!PDQo)DCWrTV>6j*U#Ka2X92GaY)2j %gRb^Ps/Bg0cg"8IG__(SOZ3&QrV'mRMhD!0q#;`!.RUn"'b3t&/sYPP_;$)ITD+@hY&EiE@Q-]L*=X(e$O)@7+3OIYthNXj(",GgTDZ<`rC>&+>+SO5(3e!ugPU='1, %M;aC?H,/*:Z2d5\JN^7W$keP(KG.D.==5YZ'ofmYVIOS8>G$XQE%VO.K%A"0SRJ8\-KEE3; %Cocga'7M44pQhZi8!qF+Kj]mG$3Ru1Y!#Pr:gm0Va0BlD9Xnm];HJ&;DIHF8!?KHr>ZjPGMhB2_-2Dd=QN!CA(s&ls,;l^C %,$7!S0@"PN_(VYEYG"_h[SW*TMGkZ.[@O8=O5p+W=X8YJsggJTutS\uJ+r-K/(1((Hd$J2+-,(Qqj$e/k,n %.TUTc7bbD!gCp:k<]Tj8WGMt3RISgsJYT=Z@/o)B!.'4lS@c?L+&&<$dl*,-AepE1=QeI*=Je#YH#rTl"L#.Xb'@*Z;%,1(Ml7T_ %';HfK%n?NH`Hka+6=PEV=&[&\]N\'&/,?9/Dke0RhS'dMqC(LC %PggX1ONqlNM%45.;47K'Q>!&8jS!J;^Dqbh:snO)p3SW9GAF"U][4+@L=4?7Qm6F(^ZRn&@@Cb;5qQ_Ij_2#d\_.;*Q%DE"I2EMd %@UVH8ND*d#*naT:b%q:0!9o$,T!2^m9dG^.,8$73_/upXbn1@L^;&5emA18lNlnktHjY!TKkbV=mQ6(UY%>AZ45YDk544lb39)Yp %7jVN&rl#QV9m+-8'5)p+!nE %[keuXFVh7!]'S`r%Hg54Go,2g:!VB9`BZ(&oo8agQ)iDPVlPAFUC?'!md1M9-F&0SN5urkJB2> %(amCR3C5sMZg<.Fq8N5>QV$g*VuG).)m;GPF%;;NQ4K[IBc8:6jMdh=[Sb\eX0`3f'!#)JAoNRB.WT-WMX>8!6OBAMf]q>Q1@g%* %\':-jJnEYMa^t!e/aY@]^9$U'I;^9dZAY!r*gr3aI8T:dp_:@A&fG9BiBg-"O\mWmq>>gaZ2Tn4,lFhVd@Nj)ShW[?Dk(r<6G\Er,d'WVOTSa6dG2R:HfV\KV?n"k=/>-a'2ngOK\s#LV-^iJ %iGh4?J=^p*c=o=fEb2t#9SP)>I%FK(@;,gZ"I4VZ"X^WaF[QG1C"UfX407<,W%frb9O=nHon+3u!^UhTKBZ!bD[\#k"60>/)BqEg %_r*)N';J;*AIYCc=X>Y]d9]-pJn5&Ql\s^,l4*#Z1X_IG-OJPJKsEm^&o`u5EUs2#N&TjX_BDFs.HrOVee60K)jO9dW0d'L160,( %aKd/UDXQLudUp5e&p][1<)E#CFOJ!WHNs-g<#[ECj(G1QT4M+:u*'YVFPmE\^UndZ#bl+"Un8/EnR%N6TNkkNW`_fA>82/Lu8; %=?d%lI%c?)re'u8KYSH)@e(+*HUkFL9;`d7_l//rDmc<=Y\a,!h;kT/8(\\lWc"21J]=EE2DREC/69G`hT`H+W#!Wg333\DG6db!s.GeS-55 %^(T5_CPB4K/DaOmOib"M2!M*!`;;W\3-;>oc[nIKis4`Zm]qmWS*dL'(=pFo*'DHZ^21gLf2]Z>rQtuC3<-SDi\DpKV5Fiaf5Phc %fQm#?;:c[:?]e#?nhK^!F8F)Qj31PeGPWaYo!I\;T9sYUOrn,0;3+GS;p+Lp)]=UhHc(NpgOcYeG54q1_]9*,+9DF`?LcHq]h#4B)l$(>!:apG=5 %E^(ooB5ps"FD#T.-d_%t"XYX2EL.\-jBhM4)'+"\'9om!lP%">GkMg;F;+tId&87*0L8Z2Hsn5%NhR+!T=)Ti-B`/$E_P9?;+tMp %`0L\O`02dXQAIdeMTebqg(MGoTXGa-=V,QLnBccRS&(m(=Z<*N$P%(sUKUK@1SV;8qe#&-5m-NWAIE[#L=N@;5qt#Bhd,ILd,u"] %?Emp'N,YO](9^J^p^"6oGkF(Aiu2(M45E$[Qr]G^GGZQ2_6oEtqk1sX-VLV;Qt?Al4^!:\-XGOm4,>e:(A=/S!o=$-f"!njJ^U4&1_aPJhr7oQah8R!JWNL/H(qu/.I1'rn] %fCbY+EJ`/$)$N&f2r0m#M.sH`1'?Q=V*HfZDVNUm]AS['j[MaK25;q%o1#QaZBF0WS#6oF:,XJNN0Af)Yjph*@r5&56I4.XhMhMi %SeE)Z-p@f!hOn.99`O8A9e>2'9Fo8YRtV"-*@d,@jnX`-'.\S>8.nOQ*K_h5lWP7B)A9-3FdSU+_9=/F3AVqB<'3Lh+uuCN7Qq@( %eS;Xqcg9jZesd@HVkZ(Gc&jOFW.@rsDQG4)SOcWpiZ`-BZ/RLhYjF!MjC$YaA?kN1[A\?!]PoGaMeujFO9ed;D*qX^8aK2iA%bC# %iUG'6Faj(P.<)8sDd'Q2:g=5?(/Y35CdBu1WPpOqL(TBC(a:]0mR*ph40Z@f&7;Xal5]<916&h.[Fe5mA%bA=Z2t9(/@np>%[0L- %#*!;)cl+B)_=]mbYpKb%5oe_""3CuP#VUZY?M9p1Tk#b]TF47$@Nb[@h%O["U_[:R\XQ]>n1[(jepRl#q;N5 %eSI)HeB;EZlpGU-l[gudTfXl5?7cJZkast]S5)?p63"FrZHC/?#cqDs\W>i!"iORMP#>n]/+;\QYe[Jg^k`i=s>T[G\RtW6@4!h@2De$K$*Q5A_HdmiedBa"nj2nj#'q]/7XPDf)fOKrJ[bHCC`'_Pe!cnpS.7hn? %Jn!i,FbqiPLbQ#U?B!rAZL1t6-hjn&UW9^%DmK2qY`.)%X.jr1U8LD)qHeG;ZOF`lguh"(<^"u=2(0=YVqM.Jb]<4c`lq.IJesn(^;+a#`#rUSL>E9I=j&PAnR!#f.&C/ %<6V(rJCKupF#Lm)j59oA"P:PCF6g8YQj;1;1q5Aoe#Ako_Kp^L[>6oab&]pNc[dSr1Cg/:mB6_lJR)_M2ZQ0]%g'hY9KRsZ4Ebre>*o5fSp3Z-3nuf636]WGN %bWp)i9$8M+]V"0r5h;tR5BcIJ#*kr$Q.DR:RD-\FkKP+-Bi!-]Hh?]YjK:Juh>NnZH"7&\:<($YBR:MX4*E9[:N]G65;+[-J:rRU %M>'IS[f8oDRB*!=lTs9[@i6 %Di!'L40-Z`aSmeX\Q)L-0^hoYi@OpbB9UOCWFLNY[@`Q=_ni`S&Q*[B_G)`^$8p-+rT=l]bUiX'klcZ+ik9+#_$H %I)Bu@fF*j9UR*bR#u9k/6e'"%+fflfPgSj9Q#pZrHiR[Cgl68)lBuqu]/bs*\e#EeU-8KVa8!PGW649;@9S-2BFfo6tf6rOB7`R;bY/taoERlmUhL&L]Emc(I?>(/cP9SJ_H-Ler'^s\fK[+tD%cOAR@KbkL %hkNN*R$NF_3bqTh(nq1Ilk8mY&I?d->lDc]S98le-B`(I8C^"T"ig[+T,1k1\ %o`A@KUrbRt3$6tthW54dE@sj.4lZlK^tO`kg)@e\VZ8$p+<-:OV\.Li6J)QKo'/B+=6'Y7--K]J;:.tr3ujQZm<=ugA]MlX]2d9=/6S&f.e,>@V]YRW.I/Bjj;F7@cP@+[VWQGp1#\$6.6SH7a6*fYrLE26&mE;g;hR]_m;guZt?[f79"/(QpSrc!"F0'I.ABfo7WQ0:8d/>(p %HV*;=7[dXhQgr9*c>gP4M:;+(VeCl!RsCabWaj1$P;HM.5`'41nA6pt;"Hm1gaVAK@>MiF8uVO$Q5m\`n:fGqkEZWue8a5);Efj) %)mZSclunVH>&eNYe@"K!NqVAo=Pc3>m0rdW@mK.W\9-D<29"1(IO!E8K]9Zj-LJ$X\rM"3]aOoD@\+"+pT[N\,,\$Ige@&QY[f2c %O]60EA1j_&)aE\:4Ca\O*??:_l7PkQV2h8jcaY8*h!7.s(r9ZsW&m-*`+?(rJ5u7&2YJ#7jMm7>"\Zkq9NF%H$fp(FlBiEcdL89O %W(-)HYCejH:4[*'\VH.kKW"4r%ZA.8B76#=qWtmsVi]>c,%Bau?WOR):#lpV1!BW1.)UTUWdT&KJnQhZ;c2b:>lZkg0S'79cbZiO[P8QS:%l+O9\:CBLAgg:nufc58eB+d"Z6TJt#In %flT'Fg1Z7N4M$Spi0igeWA?ALodkJF@;d3i6#3^G_MP]9()]&0LDuF?%HQk;:J]qCRFS0-?n.V\YrQ1=-P?2+2YBW]h8cg=(K_R1 %g51(W&&mN2:UHS%b7<(W9Vb+Jl^>"bODqfT'\*S8\N5fbaJ6^17Rs5n0`>Z*@WO*_K\c$6A:Kr!rU%KM$V55+,8N84LFr4uc6^J= %5Xe(4>`i`)3)40_87V,rlFsAuDb!pSPs<]:TK?[3mq'IgmV\,1s6hoHmMhdEo'3JmhXfC+:[e(&ahSj&.-n#aY$.g,ChpU4*Ekll %cW5L`[1%)sL9W:PGmO[fqHR8QH./":[lhJb!][YDdT]4AZWXoWLY\4'SO^Z6nZR87tWE3AWDu!e@[H08P %.-,p\"fT\Uu.U_8 %67V39$KWDZ'hr=bf>q7CAh]_;-6X9OQ2i@C;eCfk6-HeW0Yh:n!kl#VgXN\\Kp?uLhco,L_d'XV99=#4'[T05BW/c+Hj3$K]2csNR$LsXP%3X&b%5nnZ %a>nlRCb+6LYhPb8CZj*O>aoQ34bmTG[aNa?:j"W=SKtpTL;7Y&ROe=h'`2IV-*hi3nE!en)`!+m'nla\bXd=3_42D>d!cAFCnf9X %TrKK?m/",hc_Di,?N3)tT&p)ZDJ/9[3E<2BOY]FtaC$&h/[$MV72`eA5JLOU%Q %oY[_,lel/n[_"ij-C*gQ@6TJ".O4iZ5"t1Sqp*rkpT4CDo:FPuq953>KfYl>B6)=f*dctnlQ1?6WQ2bQ/_"#!hZ%?G %h-5@&P>>Ie(MqQQ!W2)Ems=?ZHgfi55"snZcTH^?Z%qMg/f(NjSe"#2oECS?)lbd*-pmoH3aa[1:qG!#5I5'"Y9nsfNgr6<)s7A2]Y`NlJ]bg46oQ.0krZ2Ql@7<:s^FAeX@P&T/lhC=o %r_i1uJ'J!6bPddFrsLU2Qg6KCk`KL!H0*:!,4mf8]`2'JjT#7@r9$:h0n8N.r39W&,6$.@rpglo[sn".[rQukVnMFu^0&/CWHZ&R %5C/H@lB;`_aeumE^\..N]`/@Hro3k*Dn>[o\%QeZ`Y[[5?M=1*4oW0N?i=28N8M50JLA5!q)`N-lUCTJht5Va^ZXp4h_W%='edFB %eTZK(2h0m-^\#>YiO=:-l_"""7mHjp+*d*aIJeSq>^jr,IFkrXkc*0_g;j/i55k12J)IrQpS2*i=T>o2e4]4YqsX?hn,;[8I+aF_ %1q*.-_mb-A+8reFhYR"3_G>O7ZQK1ln,2ZrYQ(^HpRccR>n;D[8&"$<^?4gToC;j[_s@0!5PR`4r7n>ZKV*S44n&0gDu%uAs2=)K %>^lm2e&C)@o5FJkYC6?/]APp4'D-cTdip8]P^^A"JU?MOoBAdak_e6^[D=;l9en863r?qU@hscQ;ZVSiLIcHoIa0lETda*9udZ/qlaa3Hrk5N4b\R4Af6kU$^>^qu_+rJ@3STp5/:I0E(_X %II5L%]l&D6m%.:-hVFgpMts@LbGQDhs5qotqp"$t*?Y*7\(u-)msb3upV$9#obV0L*2s94%2bn,J^RieRR+GCTSO?[2RH %IF]3!nB`,_?bh_NEqnX0Id/6D4WjKnTD6SorhmO(\Hb=mgn2=YreKD&kZbJOIsK:gIbT9X,!Yb+1L7cWS_s"5J*j._lEC6?GQ6OW %H#A?6f%3+Zbd3@[aU:"/?hVW$4S6F)lhS*)iLBi4^\.@$dGOiUJ*E#Bq3RWAqEFRPn,;g\rj'SYkQThqD_/@>HLQ(Egg(s"o@e-\ %$\.>Ps5h#j7mHY_5PkBH9`O;5q0h/m_.VZr!Zf.i?Ltecn^da$])DR+&,l;'rr;uqci;2gl[SiKYC4T43pj]Te;+%m[sZ`D0?a]J %fbZhoq9IaHm]`nnVP!X15POb6s7?9::]K(V4EC:%Ie-dYi`j1`UE=mP]q>3hId?F24FZtK0=p9P^>pTTit)'3J,`jtIdkfOPfp,f=^8KcTX+em=3q^rqh3?DtLOX;dm*\OY;u!!eajm]r]g)3?[ql<%*;;[rUfRYa>Z6Ob%iYTke$l7ccU2)j1kCs5(@n/Dh%Wh^\7t_i&e[LD(jrP]6MBJr6b!/ %_d@`IFo@s(bRa^F5VNrqM!9SPQ+uY'oV+s6;g0/<-;!#=&#iO.Ue92rF-&\,E9Jq11d$'lUg3c(G$A:K[VX$bl!)Ic@R0 %eN`riGFjk)>WhreJ,>iZDX3qnSNlkbqbMN&n*6DB`/ji;pO1M;Y?ckO7-m/4IcV+JK-?hR!>jMuc0a8X$/IuILGNL0X"bJ/K)=8^G&3ddtmpQ,@;+8s3g+!1oprJ(?5^%VNXWlim] %s*Cm6T"aq_h[*S:qK04#fZ%F5ETNjZBbMcP,=iH`%2TR6R4VZ!P!OsN5sU-e+G^(K(.]-*^`nD]JeTChLEaWbF/1hJ+#[rb5.C!_ %Z`;a9b^Zb*k*g;63PP$39D?>:>sH!7O.Ggq1E@il]&oJ>$R^(Eas:Teao:h%5:.j7kWEYHBc*nk[sn6E`QZYs^A0%u]@VN.X>'70 %$Uu^M]5?m!Ns7Ns#K$LBk*G@@m^k.B@J;^/qs1#]Am@O4IR]+b-EAtFaaTU5MQ\%(gcPJHr`m)8S?I/(fs,R4k@[J'f(SQV%mH47 %kUI!Equ^PUEW;BcRjLYYUM\lFF94Y,pr9QrUXJ>]T\Yit]+,n7Z$8rO@/f%dH_c.>jK[baXLe(*B`I(]B6Jbc+PF#,OAZc/TAB5? %bNYYSJ&/S2-P(-bh^@;,V@?eCIfGf,nGf!QGKnMc%pm)@3jrIC>@V_sVW#FWO$3%\MD39;A %=Qh"8`03@HmDN#"psQlf,9#jXr9<(1I!;/gV<3bS1HHfD=4O(S*5?OepkHo`'06$CX<#_pIspTb2dp/Yd!YE9LTb0nSD60;Rm)D' %0m_BDX8K-[.u2]ge&M$MBDR"]qqTGc-TA\D47QJRS?+?GJ7g?5oFppeq7[5[StQ\lEVZQ%SGI3jkr=_!]!u\/gMQUg<,UXRI;7]2 %feTD,algG;nP=@?^?[GueZ)h21+)c`9uaC5$!Zc9WNEM\5,t[Qq[<7#`Ac-AY\IoMAaXXTL+`?pIIm9*1RjbZIriq'In#iH3rR$8J?gH:LF44brs/7nBc1[7TeUq4h6JE_u5:u2,`E/)gpjCSlC,r4Li_-4;e\Kr&Fpmqd4]A7M %itpa_Xm*U^2t&r'?fuaT`d%:/$")YA^3OJBe.saVXB&965&r78?,]m+n+_!LUBa__hct^J:[s\pl_YGT/cXS8?E:NZ?S%]?@:&!^ %K874h/o_s#Fd]T'2"^;/4$P3H62Th7UR1A_PkhKA.n;PCkug;hPa3?"_SbHXM61;pI_9RQY!jolV(J7!f',;-oSC45bF,rD142)G %I;.#?]q:"3kBkM1Fu$B:eaNB::$Piel#<%?Do+!YN+]SSCUWWdYA;VMPOn/`/%4\,B&&m3)H]&bY8q6D3",,gDfL8s:*1r&^LH)S %XEUYSjl=1\eElkU[q@_[oWCV-)F)19[dH5!@$a9icl.miNg_qF:n((sa]`Q2=3ur1r4$8[fppB3Sb:7db?6J[s8D+JX/G5W==YWU %g554gqXH$S'_E7tZ@Cg@ahE"DPn(\Y:)_ZXTeS8CmkXA/Mt!mGKBQV8f,q;+g[V>4n%,lUafnC:kPHoqoqqN,iUtY,W>>(Dp)Gr- %A<6S$f"K\2n(:4l#I[7k#3nt?GRD3Dhj#\GAAl?':M.?-nptAi.]34!7[XK:>@-*sF@7@\"R`F!1ih%>5qUMC)>@1t1i21+,J$i1 %PurLf8i8e4HOVCD.:o!.?+fc>7`W8a@-Na[WDrPQb@qGdfC]e]Ap;9*Q$U%/S!0b/l;Bdi!U_l1qpqRJI2\MGb^4csr[YsSp+G_/ %S0U,>a"6(i.fEqFpFdS\Fu<(.5$*%8/-=#7]St=$hf?f&W>#-(DisIehYGEQis2tc9Uu>/mCdW5_X@6U9UaL@glgKke#()WHU$bo %Wou*qa/qNVV7;!@S+k[rLbASIJ4\3:%=C%h'(QFeG\b0P:=[V/WPunB>e4ou`s6Go#*.HtXX2kq8\XQ.XuV2TK@f5Fh0MV^feKrT %RYgdil8a=YjMB*i%C/4M-lOg[CnJ_Y'('"4r,hVOR4[kSQZY/e9j#-mS67Y+cYe0/*r]&Yr&WXqcL5)dM]1rmcD09b1q7hN&OauT %aP2o5[anJIc#N&EgphWUe"df/DY%%+=LmmpH.V;?'5DR@Q5l,"^@9r+]r@9hB`$qf#m1Mi[WD1#*&-LQnTsqE(X;jF!b=/C_fBtT %]Y!TfWPqdT`pkC_`I]28lL12!PAJ[Gp!E5=qn?O9kE2e"Dq[];LP^"KDrNgF$-m@54*-`"G+?8;I.FoEL0!GBB6VSa65:3C)DlV* %pQmXZNg0iu\Fb]I4g7Z:qBMr[6RXOY(hJ)J`hG#e%_C?#n@aF:3(Jc.0]5-T$K;X"3\UO=sJPTq6R6Pl.Hi`qn:OAF`IJ/]M;R)R;poG9[ %9%cZsL(3Ir.&1RVc./]O0^u8Q^3K1RR>9)TS6M65s#sKBje7V,-.\CJVfj[2fCQ,j[\(nWS_lH.%@L.7bPi`AFfh.gBh%4urWrNfI=jY1!0\pSngb.5uu9URg5o+c&MmQ#CO9()T#F`RFb1qoUJ39m&+6X'>ST=+J_cHh)W %4El%rNicNpJ%+mnn["Rf%(GRrI2@q4#9"&=1?4ok:"(*fPm?Ji/\\Ap3e-kiq28=Wh(8An`22/qVk<.`9Ut_%HZ.EI2u0ID>>O!U %ib.*CV=lFC5ct885@!jFe/ml;E>8[1qVgH$o-j!Kq7r_RC7J8f5C:B7-.BFhRs`aRc/2ZRm/$,@..)0KeCGL3eaWQGp"$5qhsZ^4 %Nd.Ser8$OST1/"JX%,(nkVqJL9gAQ_B?ddnC#-#YLm84O%)6.k>rf@ZS'?;@T0%C=h7G8%aM%m_^:3WCl$?I2YNm"MT"BCKk1*u- %-`*pYiTkQ/T"Fs]5NfV'C?)*na`fo&n$B^B@P:Eec>Ip*:@_]P#(EgAHW0G">Sk,Fd4"gnnq3;,GhY7HB3pr!0'Jff(bS&:DtgDM %#F>rp3Yq8k/DBj-Wl(;R^)d;6BGRAp2iS_\[,MFQ$5?e*I\R2a'?9N@KqhgeoRm!>,<%Qe.n+9W;TD\B%g!t/!G-7Dqme-Ef;d%_)Pr_Y9@f)kj^WNJ1\8q<4Y-/X8mdo`8 %\K`B4(*c%Mqu*c-^[uA%Y?a,5i7g,]9^:*$>_sN@a'\93m\1.TS@J>ehKE1AK_K:hq=33fRoQs5cM>9`/I+sR]Q)9FZ^60elY^%D %E^B*&\#fFBqM=PCq6r^j5Oq.1+k&V^\+@XMB.mN(HL:QgdLChu2m-K$E;&A?"5e$"rRm,arE<9P\g/P)o(m-ufA;nmn^=i"^AHm) %_8Ad(T/q&Pda`+lDVWJ3eseU:>e>#R^#c/?hei7&p!O#m8,$n,o@[#3.QgV&=neU'B$C."amq)dYMH.#Pjls3-Ve8\-VbXCHK`E< %[st`1q4d[@-]K2&osU_"LBJqV"@1`Zj+ %4a3EuNimf5;I$(cQiHkG]9RrggGIn/#gq1E2OXiJ@qWBpOrVWPlI>IV2A2^aPOmP9C>Za*gD1[KQ.d!2n(:e2IM*%X9#dn\AesB] %Dp<]_lo<7389%DiS35r76T,#hFTYBt64?:!D%\og60E]"00h8o=8`;M.7/&_;1uSp'41_O!\e[HYcKP'L#n0B'6$&Zknof#_Y8jK %+?_G3l`bo'jUsc_Z//U"_kN<+oBL0-C-rUmY!Z#&/0TJjYLI`I"KU/MRE`>h'$Aq@fYlY.20g.dr&P$Ig %CnOHEL%`a=U.-8&OKd(B0J;%=-pb*PECB@;;ui9'!DG!V$]O+,be]?>&6&Y,EDl-2 %8J[GnVnG9;M5uk4BPd$Q0p$"WL2VgW"/?-D>"+s=FZUh?A:0<2W'gt-Z.`Je^53A>4Q>5<:)ld@%-*#j7RV.3*,r^Tj+r5@:bmT" %&dqS_#7&=-7AM_RBpN)Ge&5K'0`Hcr.n\S>25P-r!u;.D71QYPKrb[dgqP\4Gb3LG9dK9D7iCOO_up,59uNY0eBako!dQM1NiUiU %<0q1uGL*$-Q%r`k'F5GfZVHLMpbWo42;Y>XgK/Kb=`K;:=VDe5*B;T11Z49d2:E"EpTAOE?.Amn-]B %ZSEg6/u.$1Rb"f:%iVEPR!7#3T1(=Td,\+;FnE%0!Z>[)L.sIAlh@=/<@h<$WjP\^3fj']Lf`IALc^:tAa(Wb=h-:CE.MjT%amSW %M=peBEj]R-7B5ZM(tTb$Jq8[NM=8[[FE]J*M<>4uQP?KN=j2spM4&Eu.PW5'e#ms[D15+4C6kI0]cd)\oCu?b1J[=OF.oToT+or9 %0.)M\_C1ps<5TleQ&rU4b7U[e1#!NR.@OYpck/]$i/N=#9b^uch3]&$*BX'#b]3l79q`^LA$\S*\AH@TD$'Yc %'KLH=DhI$edF6a>lK4*?6]V3N.pJ8HU`e1ccaUCl8C!_\5,e)R#<)3(:cIrrRTU"f4t]+_+1cSp@,8u3RZ.6*-eHP3"9.P8FB(KA'/aSJi0cu/H@i;7o%?AY@UlM@iZ..iE< %&Dm,&_(3!Nb4hJ]8DWj?pI=';j%\5b.5A!,Cj?,AHD06NK*ahEWC*Ru,s:,;Gu9'%q4[EB%j=c3h5'@P\KfPh->cIJ=/SJk=7kFc %T4l\2'+HDnX\gs(o.=9QBUj55M0)gU,-YGEln:c4h.: %mFGMk0)iSgq6=gm>1l]I>#(XAT)X1Te`GfM4oNTC[C`ii0cF9?r,`(Z7hbS&=RL683enH/GcsbX"3%;$YTp%u%V6%37'L47"po3nf&2g2')hj_;:k2fRBqh@e2jO)Z2;]XFq.Gd8jmV;F_XSrV?IB)23E=GiHAfo3@i7\CcqcYO4H[0s6Fk>(EB2K*ng\n1438g9"R+P:T]YTD$Wh0)qA*d:WDB:jJcS)"8[b&:J4s.!bbpJCL-Vr5419@03n\a9ah(Q$3mHRK^p/lfh/'M6= %h]&:Upf72#DNM`lTR,/X<)5(%[?V3bf7#fbS6atueRZtg"*IBM482fTFSG0Aj,*M.PHgE,IE90`3`K@3G124^p[+Acn1TdY.!d)f %mMgg>*a2#bJ+K/Ft-1Rb/s4.Z18k4PKCP,[UlDr.gDrf=O8T_R;)]mpULFnJoe]^OJ(k^_%Zhr"EV\@-M0:[BOd %'0CN_'8-"FmYRLJjb[t['jJNgIJfYuI.-C,>I9S1olc$&MYBjpJc;MGrYuN5`BsD)l[L#HmKB7o+*N9mSJ*%D;)Nc?C2&d]UU=\"(#50]L6a %ml!jN>h+1NZnXY^MlrO^[n^h&q1-%koU`\_]7X6OSZA[_DdP7H4"pc?C@1nW>d.h`Nh&7UdC"&YN\.S5>lX'":30^majb[Zl.G,cIQ([53BRR"A1p4_7I5$e4C9@Kd;_XuKAmK"8TYg\RScUM%f'ti\F9P\%B!H6eD'T/B7;2u(<;HGKlg]:P(2Nu=:]2WB&*jVX^#pbj%,e:tL#-0AOJ&H_Z#YXHil$rDnBFM9l@`CE`PMN6-&392<5F;Ihai+#c6^^9Eig*O^q%:6oJjG5q(qCI\u$/k$)7E^kEfI1*Kk)hh8lW^%?Vp1eD/I1a/[;:t^ %F$-"E%;d@7C/-&&Rk>)A#$RGRrEcB%V!hI %I!1.#=D4c>q&F>Z$Uu@K,_6U@\-*`No9UppNt])YV%5R/AeqY`=.fs3N*R\**ZHAT9kkFEaF[M;ItD?J"Jd50T>6=U5t(!7q4*$4 %?VLGsf3pZA5V'>q`Z[rtO9#dmOK7!N5UEb"'F;7U(YD#N4B?/.N=OJ2#oW\NTEKf.#Xr"?nk9)&XXC+^Ni2/=2!8h>:^1[)38.^h %]tdLKF]jXYA(RlY`daf7l*[/h37rV]6J!"?)V!2`fKLtl;:_VnA_rFJO/L"5__7BGS`ZIkg[M7Q^n:=[_T^:9tS'`-lEcQdkh %csmqBXi:t\PTp6bK@F(_-7"lpm-0Qn3:&lm)Lo'[d %6k0qNEX25(DF.,E^L5%jpnKt%`.=3[e9E1>dAF2Y/ZkPd)SH/&1p15lD"u,ggk1\H."n<;V?Xl!j,;u0$g3"4HcS\f!9NP[9;1Dg(ddSTCHE"jKm3m/DR09C,8ft&J]Sm%uO#:H5-e1M5F)t %EeP^oA.*Vi,Uu7W);8!K."&:25g)*^)-]2L@u\"&8/m`'FW:Q9kS1nn/WZq]0;:<+A[dhJg029"P^"dK_4VhO[Y4_Z7S>Y,D4q7- %U.62)S<2>L(f`3A4DqIs!ECFK3*PuYPlPf`Z-6tJ5)1Im&;Uk9&ql9sZ]uJ+Vkhr9EW_/m>c!GZA^Y4 %5Th_AO)bQlkh-(`dc`u[NV+9DquZI[<8]=I01%msed$^/1pg5T=D/bXY1+aA460Z>]E\>QARc8p8\4e\l7A0c#GC?SU"!JoEf)b6 %V?*sc!T;o:E'k)SJdt?85;5B5=-Rt4!dhF2l3/;qaM8OE5P;:_P6K+uNbAO$IMrR=HNns;P8GDJXRd>9nu*h3#d>ueVHDOdF5hin %@0Ijr"SST\GSa3QEce"b##o&F;lMmJ+Z4q;e-&d,;*unqHVjq`Ws-*VQ[gt#TG4=:JQOU]X_^)Iih(lK!ZO:C7Jr?H;lX@&=tpNp %9Ag`@-?(=6#qq52'0NK!Po:c+.nq9e4YE9bel)h[R'EBhV,os*VdkQ7H0baH!^kjRl1=.b=A^*l9H[XI!RGT&JV=O8#80B)/Ai1CAs>mt[((3KrJhPjXo+Q&-V/peebWjY\qle]Cn@W&JSYf] %a\jK6F]-/2W^MW\lnB#YRXZ.8bIa902IE6o7a28oBUhRIOUYPlqh?spQb]IY-_bGZ,c^.&;2"Ej9/6dpn96^h'PiGIFGPIBmB^@s %^N+V=i^P3j<"/o9/deBd#YO5'4u?fT293^Z'Mt%(+2C8[iIeh'--!.m>ou6qm2'a0TE65o&P_@HE^X^qp/&-JiJkFI[5#ZrD+tQp %bR/0^TB`q^.S5IZ]/aJ!LHPi#D.J6.2oL#N"ZAmI0d^)2,uV`HerXtu2R20Rcuc,LVE)O+X_[8A!B(]U%t]E/gkMtk<=$2m>dZ:b %*qG?T94FV_HZb)K]G,m<(`euNK2?kFp.R1!@@j8OTCa]URfol%\.eGECI`2_i4%,HL)mOI5T4rLKE/WGVES][5-9@cQ8`??-.B2; %`!o!c&&/FP#FGb'N$DJMYguA^n,sO9?p7Fh<;F.R@j5_3@LtCfbD2BWUHCKg[ba`0FlhSR)Ce--OoWGo.F:.a_a/?@\>>(IZ/3U+mdNK[AF^"B$Gu?B?S8\e-BQ@iLgf\JNAmK^FtkR7B%Z %foE;qF#_919JaKKomRfWI;E',elsehAu:@d22B7F#j3/6b6RCIh@N&i94Tj&e`3Df=DJm]FW>JRJr*MrZQP]2P^uH8@VsB:N!DDl %Cj4P.^_)+4P_&*Y&Pkag#s@7afd3,p^85JT8FL1V8"*n=i%RaC7sH0t$0'-='LO(ZbgE0!?6nhMPQ6`M-j/n#e9?1>%N>`#B@BFg %$ole6;_Vk6Z(r\ %:dkj9UY5KcdC85I#BheKLgcOH!Un:&_Lrad0C2X>JB60TYF,`G!9Lh_)">NLNs^$eFp4"LL>>Dgs3%db%/T\%I\?$GS)^(,66rS0\aceMQo:>p<.Fh %^9%5dd%sckD*WFSMobKXFPA_ZU_&DKOXC\]&@_epO,[$iLuQPn8BXL!GRI/Po7;bCoa5o+73q')\cd-AL3>:g%3WH;3_&&mq#PjQ %e6`=.0Xbm6fia.Nc9Xd?9#0S?Nbh%q\O0^9Xp76dG'Epkl,fV;1U.(da@T,lX%8iKlhSW@ND0FYRZHET9NF"#cY8$8^;.5BoO!"^ %T6e>A;^f7^Qu0pCo6KhEY3aeuoXP(b9!aQH-[UCrCT:"8AK]\^8c-5&a7^KUkp8Yo9#)Toct-`bG7rX99,;Z*:GX.":+o2CeYGPF %#gACg'lC"g\P6U-8;p9l",o%8FW$- %!JH-ESj\@,Z>pM,g,[q<6I4jXo#fUh.oTG]_[-=64[J9cq$,=cEQOYLK@j3\h(R9(^0S#C=%BSn*`pFfc3ceQrL!\*N13I %X^3HY^sCL6>^!$Ah_+5X8j-FUk"D*C.JMVie0r.pT>qkWWgUN]nYU.(:-EB4Ef:l\oUA9uT4eV>`3TF:FWCLFa %%M(Ou%SII;d\BJ450LFm?hRoq0'dUM,LjB`L0B%Kifp$LXBEk8+4%"DW5?_VpM(uAq/mnchs&am!;'_rG9>NqRE:*.Mh7Oa7KVf% %HQFN>C0eDM9/ZS,39P:,b?GD(I_8G-meCFqBcdgWZ4H+]WQ%Jg@INheSa2ti:R=p=Fr<*CDCX1p,:SNE^+7]r%7\Zm:GmBsrlbfj %VC.LtFp/h)i18E=<3$:%.5-_Xn/YN]RL9CeHN&iBWIMpMq=O1<42)c#WnhILShim&Zqb429bjAHgr0@nj]WF-otBqqb5$R*++95c %Fe\/n31VmrZhM>9Xg=>[3-hk*o"(Q+S^aV8A8:$]HWO!jDgWo@^M%.jgjBW]9gdqb<3c,2UCfJ0d[WJ,uDQn %QC-%>hqaiLI_a*iR/YQ:[="lMc'P%-BYDfG34cU9%F1(@9dUZW)4;]T-EKE0-gD6^7Wr\/V5hb_!'VK1d"6-VJ&in,>@Etu/9K9W %S#Atbr-m<%eX\(!@%m=l34R\M_$!]@@gYI<"Fs-QZg'/?tt,`'oMDroi'kpl*X]BkUk=P3Ytdk]e2#;X5?WEc6b3O5nN^i/$_T1oQ=u%)SSQCehWX5R$g?pVeQYX %e%KP#2nqI]EZW2dYhTnI3[228@AA/oA1_$AZrdfqXfi@2+t@8 %O5APK4d.K+2f8Q^[ZG`V*FIGEJ8BCMlrH]6BY,P2"DW;ZH]t %4$RYH8klirj)?=VaYRlhrk5(V16^jm*BaANga9"7[gfqu5,:54C>oj'HdB4_dbf)%HMZ"B:\NU&O5e?pVMobD#E=LE,EqG6dm[)d %l_PdR^4-"<;9Iqil41q^WA+9ABqEY\:4<=]WZ`N&<6C;p[-PLup#Lb^"2AKl\a/CM5o09kC2L_/V+8JRCpigLUUR&bpuGD>/mXEi %=*`AjgHUpJh:VQ&]_QIbUF4T9qp5&/)lJaGs(U4U:KdPcR!;E1l#3;n.nn+pD_0^eAlZT689j;tV3qTEY8[^1C7aX-09"f^1E,K0 %=2PZ6G\ZbqV_k)1l.;V?UT13>Y.E)r]0dq86OUM;WDqH>[c`\'Bhp;KQC3H<)LT'0oL/[;Nia=c;nB<[a$5gZMlrT,]kCqo&_4DY %#0#]P[Q>m5t+>G5(tL(Tq#XET?n\F%8.7l!IQc %(=10(YsjGBY2/1(hRuFOTcYggo?E#LhlL,_nZWXXTh:MeZhBrJMRmm\Cj[ajL;/f85NALoihLOCl6GEi^!,NE3d4P7.J$*4Q;-*m %J%eYK[`rPFmG,!F3I:!93J62R+)]&E:-E5LtFFr'M?@grZhPWX9cbL&)'*sYIDLr)NA8i6f#LCjA2P5OM71>dW4I]Wug,U'BS-(at %fE^YdjM*$C]"m8JSBCC^i6)-kC`W\ZRG9PAYJ1=I.HlQgd&eNX:iP,%/dS,n/ck.O;'t4!+[\\"^WfRVA5G(r7[JB42:7sjYuLMG %Z/Z-=L^WL[8YYdTubW2%\O;e7R!9'JI+Ju %BKVuD!G3h[;ZS!f%;9K+&H`l7j`+u\4OC*11#_Mm-9Xh@@:*N3IHZ@4e.)p<+B?q<3qHWPA<:f>"ASr@.)QuXYRggR!"sL`#?RZS %0e89/oEE,9FV-@5Veu1c=*gCl1"9eDUhgdWUj0J/pp2_mGdV/%$hS %/Q&KBS:lPeW*U_T5cG=s0nt@h_:K$!';H9e7dTDRa$<#aJJ(kNrJi7V;UPPj'J(*r%.k_\/nVo')M*@G";/M8_9#UQ,06"jIGumMtq.f,$a7M_nFU^=U:k2'@Vb%j3SYG8[fEua%Ql.`bFXSrj?L!UrKJRWmLXiBdefdV^%KQt? %5$;Vjq$B[oE!HWD\@01Z50O&JLP3#f)jQ2HI6^4@b"PtjV1BbhBd&k66@EP$@F&eqT7Q`@5qTSI4EoJ"KEJP%1&TZl6)URU0 %3*q8E7#'cib*qZb!Q2P__qhuHn^HM2)4'HQ-q)gVQk[Th-k;`!iYHiA"'a"Yp5g=H_r86DFpm)[[148n%WB@,,#olnZf:<[[qoKUWS)d/m.K96DF$:CPM4KH;iYYM-;JVR&Lpj%>'IVXAZB`[f%bY_B%m3!p<* %fflZ-iRPCWNQj=d"[\k!(E7-D)alsUi'nC8#Ef6;ifZ[./W0H(["^jOJZug!gWJLI&EcBF*H66u*edog&Vh)E:/\ek %@_!LG_bp[>E>PR-"MUml_e1t"*Yp_'l!qDO'K,;'irof^0V:X!Pg9t)j4gk`,*$LIs7%@F(KmNt:8XJ8=F+.m0f:4C#`.n;mK?2t %n0jU)-p:H7!d:gR;Ws)S?:WlAdo:F8$O,EteK`L%%g,LMcfBGA0u26(#"a^p1b:&T&@Q*LT;7>X=U6)GphDOYc.nR4V&RlqRKC>7 %Ld'b;"%&PkQr]MAnQ'<2">N>c=Ir&sJ3bNWgl]"uiJ7][JE,GWkbFdo+8Z=3#YCPUY2mO,BW;b_&HLI)O;_tR?&N2+0Tgt7+JLXe %q&G-_(KH>]U'-*a9ng]3RDYn84R$E?RB-04>[!r&3P$o=.aRb9'S`?+/H#6%d;<+p?#MhDp5:^Vn! %__X=r%RNl<#Q\NBhOfCE6nEmN5tocc`flmCp'@-[+Y`'KR[g%YW]+H0C:XFT0cY%.miW#bTd>[BM\%h#_f5H.Gar=!*$i]2$4BtK@ %ibqF;mD%J@H8l?M=Y_b;"?,W(gQ/5ekE;Qq-"C=UB_=SR'r+pAj?7cge %[/8[+'#0`(Wf[8STl^Td\R+LL\*0XkL@"?\9&pecZ"cKAk7h3LTlliNBe7kE7;8DbiemPWae-^V/dLU+eA!?Fkg:baXHT7d4++&: %"7ki+FW4?Re'n`nY?D=l:%neqm9'(9qK8CR,QN=oFcY*M^!<[LS(ai+ruq3mZ]/:=..sKN.dIj$gUO1T2SEGMQ>_fK=XfW9h1'+% %<9b"F@u35T)`EROpJe)dBi`E$+$I,/JmsMW_@o^;l)V12MYaC&kK@9#pW_H!&T=o>0)!fib+cIIR3W+-sY4l&&8,eAKH/1Nh-dldeGI>1G6rlTtjP#?oG:LRl$11_S\MQaZj'tZ`5/o:VKqQGG/DZ7r%;dR_27G#kONiS=hU>rJ\oUUJ/`=<6d[!rC_^hHZq<;gh*j,e9J1%RUN>!=Hl %k=9n\#:RTal-Q1CG5d9b:K]7S&+;d$Z!*J(0;ok^LnKL^fABppUXq;i=YuWIq0RopWnG'IoY#VM#?-oa]u/pH:Nl+%R]<'oHm3G\ %2f-=)pG+t0r7E;g7m7<1"^Qk*MGbo'aa6oChu%F/er8Kpe8T)R]F$dE'MMfapVGBJN*:MNa)g,&d]8l6R]pJfMU+c*QqFcT]j`mK;7W$oe+D%4b-IjBPFqE_KH95/D*e0P %C;Ui=rH-'/l/Mg%:k$pB%4`g=PT$c(*Q`Gi-G=W^c1GQ`aIFY0Vdso>X+n[[a[8n"te;f,ZrZ %FVqjN[9"2%oYR9sbMG%"`g8jnd*B%i;r3tXDYJ@u8%b4(207m=&QMe/%pT"]M'Mmn(Di]HVMZD/qH>J=CT:-4Z"TL=UW1gPd4p.L %pu0\g0-Btn/i:qTD9GCM;bd2hXqN/n+1ti`I-gG`g3;i7^s'*&I(<8XX8/ML-Qs>LZ[ %g81XZIl._k>&hGVh?Q^>jiJ_^$&1Z\ZM2ej?F1#/9$0+)CH,#\DmfG?h(SbRf!XKRSTN.5tRLT$K-LVKG9+B=g6I+(Ms1UAJ^eem(MEu:PKoGa!L_U*[Y1ZWsocUZe@V&j%8q=5UIc-AX_ %#=hEGBKba85,pD^7sjpZhSu@;SX\%Wq80LC;/P2Q\?Io$cJDHC?.etp?7>C+00rd8C7er%GZF)%eL^fN-aq8A3FLd@ %XjEFo)>eJse_'kR-I8.-Q3V<(R0RYq7Ide7#PS(73$#qZnYbiaDHK"r@p?SC*:VS)Zb&HhV/;@Y:D[^ %VjU2#Vs_8dnCW_mk+mQUQ)4-0Xujed`fVPf;An(Ze*a"OQObVbS.1^_oA7bjf#Q%Ya1$QF4r;`6V5ZOLd4UcGmFf3siKtTc,@%W( %D`W@7QHro%^>mBs6[Ej!osrjUgnW#:(Rj73l,Bg;h?(/,K:1ZI4+Y6:)#/_bo&j5'bP@BjlmDU&2FHo^BWmK %>c@bKTH+?./$O:,-UNLM'_^0J#u61VI!,R)5]8fLSV_gu-od#q!VD=.o;/M@dd1'\e^RY6Y8L5W;H8@=Q3knh@c.fn$A5W\H^LiP %r"atW!PM<:OA8K^"+EKc0PjmS`XpjEl5U-e#M0]]6k_-h5ST09E[WmhnG*CD2Oq]i%#R>OM^!nO396#p0D,KLB8PLO1l@]i"PuTF %2"1O7Yh_#bEip`o#@@Hm?>N?G%[B>=Gtqa3HNR7f"aIG %K''o6&l+(;AI1jQqYcA,D\X1Z[9l+t_XfV+6ue`!@B!`9u#U*:T(pU0IDWDl+lQfee8C*pB+nD)%e %+G!c8\e(RI-1cDC.#$m9L`ElFe"[0mK%[/c2a7uX@O@SM[#Z"g%OB9aqD8j$Ud+;p.*la90o=1m&He`c&^sPi=*'BV_&LU*KVGac %MW1'Z*U5tLF9>En>iH5TJb+\#O.>AC,Ot>l+V,IYSKLKJm4i$lU9GE;F:!S8`%(sMl3T-J1PK^!b7c@k`*6r6^!i"b(5Q:#?L#XePQpNa>-&;iJeZ1.h%4H^Z!VN&-%BX1O''f?SljU0ZTOPniGqmCgfO2(n<5W$Y#_D9^S %1?,p5^XGL*XH7kBOr0R4Yr%Cg&p7aUJMQJpkusAR/D9)o9mb_kMPj[e+?6$&QphDrRA)=]=r&hVb7Z3%Aqi>H_@PIf7/tA_nd-+3 %,QImT4@@'i9t+ju&J@OVV[V0[$Zs9qMfa7&aUa;'0_GGtfOgCh+s<`$+-nXYJhR\"Q@O`=<\_^\BNSuQuq(:fb(TE_ug#'#&"/(Y;&t;g'1'cckM!8(s&+4 %+:OiToP20P><$u>,':V!Z'r?7rmr]BQBAS!(_T73/Xm"TJXDlkF&nG='$Lh@.hW^"'UajoB`r[H\R-7+5Y+(TcU(?DYbl91?1g>T %GCX4#-"6oG!.CLe+Z'ap4\7'FW!n2i)7Z^C5iD3g,38Y$80gI"/+N'7#nVo2htJr?+=O!3Odnsm*-WV?!2#qahA-FU3q!$V8:]Uq %@^;qqr7Ij[mY%nop[uS^54%$2s%U6,hU5@%Ug9kaAa[1\I3i6tm!jDt*=9W4Y\'*a)Nu:-n[n34\+H<\8]r7LqgVXh?PWdjT5)p@AUu6l %e"i\A#lKSbEBNmC'2Zh,)0gp`45n;Pf*dLAYDV#sj\aS"HP[!g7"G4L>p91G[#$CC)a%RMV[8JM4I%'rb^#dC0WLHXe %1p^13Fao*ke[0GhK.d5dcXZI1r;Q.\+!@Jjca7NfPko>Mm5$U&&^ogjDfE+:q>>Res(.Y-sC]ack>jJ>)cjh9:f4cl"e)to$C%3=q@5`B1d+=M"9rjrcm.4n,^k7Xr0*4p+5A\B_SoMHenoRIZ4ghadZ;*>Bd1I %g&p6#4)[a;]'._E5%_osh9/V&[Tq:9NB?fHc*"7:5!N%PI-M)Y8lt?,!>#+Ac=;Ue_0t^5+"s/8S`jXb:#'^Ib/Ko=Yk`SS)t@Ot %`mi`n:>0b&Lg/dnC38or#M(be:EPAY.+R1E4(g6E9Kb=^4a>&nHk%4VQ\SA.34'FpcH]btFihnq5iM6R^EW#l%GkF\?5*)YlnNVq %'B6Y[T?&C/R+"#pme+u&hft-O7HNF_LHg1dL2*;$,qt012]3R#Y1`%\iIZD>+;lRWX-PO_" %aipqP+ieT_0r*D,fQdSr/ZsLdB2JJoL8@6CCTd)QBDgaH+2[5fAoj!D%1?V].SlCrf[LjPHrO+%8Zr]-q<&OML %Jp$,7MUCHRFF$tOUYiOPQdD]XWp6'*:*X,WY^+CG.h3rq3kK1hqjfRrX3JdD,)m6d-Ve!5_#ncOpot6_grYN^@F\!!da`Xs*C"^o %hqO:4]bAbRp<.C#)O#03rd&gP(9[T1m<@[m]m4YcQo+6B<1PI^jG1FQJ*HIp$rX&@hq``3kBP^'l)1`BDdP5aH.@1U`IZHbac5ls %^RkFNQ)s/B0"T83pX?[R[hN,^H/\7Q0Al4rU>)nEdF9h`hQm%:\_KRff.S-"^2d8h2VI1fQD7U'mK5[UZ$skSbu"Km'gE[$H/dcM %9e0lMCQl+"=[d&]0qG&5pQ4VIk"cpmeERkF%*Q?^nu_+5rXQ+2oJk]Ya0Cml?CV^NU1`SnY9-WX@RR28(/!8s6:^fk>^<8PADTKY,+=LW=a%q/14@("p;Y`.3Tt0Oc58Tf:6t,Z)Tu %&fXC\3tQWB32R[aHBQA^W6IE8VtrC#7[B&l"_ghS7>.>iAEd8fLG:\WaGTMPDa7Y/0[_`LTRoe!_i[=paL:HB/0%\WNZ^$Ar6>Fi6;_S=+Eu0aH):Rk2i`A,'R"oih85AN %ZA>lB1(Y40.H#mqahL`A"&XAr&8@.5LGHL*98m_if`hq!_O[[_iffCJH7>N%ahW$VfnIps>/"Hi9.Qk %aQBa\ZXgfL%bi??-!?(j(\Lo^\9Jn[Cc[kt4#=t3,=9`qOU0kJ=>5$IA7q'\THKQYP(bt.Bf_Wq04V-b1-UaY1I010&n!0W %DA"d#5^5\,"*QV,H/>OncBZ^=LOU,PaQ*X:8uk4f!KrZ[#(q_;K+W>&LjPkF_*N3U6JVqgVN%N;:_4A3%6 %IIGt5@T1aE&ddCVl1%n)i?D@Cb8#U@c5Cr'ei.$t[^pZiHBUfrrQ4hJ8c+,f#V8UGSk0Uab-Tm5RTY"]V9jas#q#hNacp\G8 %O9qge*ZgQr6Aptr(2Mbo9fSl+NoSDaZ3M=0)Oa\T&tcm.gj^AZhGIaJ7]9j[/L[&dGr1:K.HR5bJr"XhD*>dgqPe$\H5=KX-o%BK %d>^Qi>Ukq:g&X$B&IJiC2e+tg!dffm6ZDKaHmg`:L@Z'!-t]1f2-n>68V[o.2cBn)a%29QM'ceIj2eP9-PQPni@Kj7RfN1tk"K*l %JP(j&Z"sm`RHGetr*d4Z1bN0L6nVE5=A8Gm0aBU(Ug,%:'q5hVn:a@YEla'eP\4$KhbAM(Z,T'FC1!jEYfRBj6A,BaA2\8=8FAJ` %8uTDX>VNNC$N]+ %-BW@On5ZbZfJXsleRGQ#N+,Y1Nh'8b&Zj78rQ%Wr!Z,\NJTs3>j/dbCT95XtH?+Z@i@9/G8KU9hL+]$FjW\'3YOAk$*!l$9Scqpp %T$MUjlj+!HF(g7rq<.(`;_?#UCUBQU1onmLd'VHd#/4]>UF/mD3T7>Jd+\V#n_$1`/5U85ICED->e1m#.]IJM'G2$XO9bqg".ZO,\^*X[39pHU%s77@Z^n"1M%s%jpaH0M<5j)L5qHO_0E!Q6=\UL';3M`TZ1%aG$lZQ[q+H31.I>N %L`s?^8T]At?bi5>G=/fU-VfuE(-Y>&!!bgR8Fk;?``[F]^t$Dn`cO)i6F5-t,&tpsO_ca>cXnt<:>[1Q.Adc%TMO/cF>4[\k*mSI %.-le#FmSpuM]D/(uR@snhca7n2U^MT0DgfH^Fc?Di+_:Kc6D=t;B#O.p'Z_7q(26.]+sgtQ73kBn&/*&^mhAqp %BrVT)`cu@)Yh_:,!s]cRl*Rg89Zo$SBUh=O/k]F#1mPs'g5F$_.b*_$JVc*KY)kcH>mW;oLGg#U&>c6kN\FL$$AdYVS8Pr*1@7([ %LLZ1c"c44Q@KR]cSB)jm4J"j#c&WLj:C;r+=9dj:9M')"I@6iJhWr#h,!_*;fED+41:K7``96BH %.[s189FbK)4J`Vc(.ibDg/B`NWFh+8ClNhk;IGU?!M;.CZ1/g7++,!OE'P$KT\ajFV]O-U,a:tE8uam($B-QQleo7fTibEB+^,Yc %'ac7B-j[a%PrM@?_&j=GAZ)%(f\gKj+.u,ZeiCK4Ij>1\OIeL8/s1N,rZI>V!P=B=H-,J;a/>bhh847N!p?3PHlRWDAj/20N?a;& %i=,to?h!SD\9`"Y'C@44!bS>:AF6uU"Gq:B^2Ys.M'81P&@<)AFWjaD`_ %FX-sP(2GF0'@,3VFo!8'fKAdKG_$n+*_rGkkcm^EeJnaL[Xsm+0I0j-j"Li5%jAL1U$);heH0BX_dpB$.[qq8W^,1CAT]T'*D$Z?W#bkPbN5#JF4?j.&mY5@MoHKbYsDb"-/+[0iLJ&>Yfl+/M<)1sb;,Rm5Tc;3)tLg)SFA%m7XS0A %J2Vktn_8=/F5sSobYIp\_<^/ig""nn@e'83Y!DOc;tkB@leHYcrn:$Sd;JSTbrgo5bO#$o?g*PHR+nE0WiG\K4tuWNJ332kigm" %>o4q%LML956q@a)]p8Xd\AgmP-[AF'VD\Z0/*-Al:NMfGMXeL%FC@02ckBjY!]3A5L8FZrW*-'U>E3/;05389G6)UtAnOX[h\_kA %1!B\&.1DESER)E3:;B)IHq9/KFA25qLH3Z?!+.3iN)A" %n@p]"MGkRqfqi3U2U0FpC>,q\b3e*TZH>97=M<=Km\:b"IRo],lV+fpM)`74FQ+gWT+)L$2C`u3>>_6`j)!c#Y38B@r+L:7%6nLJ4W(DhehpGubTgrE0ns72XEE,O6V^7o) %Ks8i7OtQrEI@l:olOk^q.)h@ud/:N>D37$J(D;*$ %'"%nd)8h5sK-Ci@0VEP#Tl+u3#D`gJ@eU+Fa=2a48/D795pIra=J&^%&m1d^=n3`+;b\_QpulefURLb$O!bQuR:dL!W5Pf6'PV7l %R;d.S`s&e%Zda5.,\FA4B[pA@"A"2p)uk=+=3qY6.l7UfM%r#N#tmlpVg6AY_H^KEtBTg_GBVm;35JZ917!MBYPeCUPTc,s%h(gn\F^ %Ir%b9BRpQs+=P[Z:%"![!YWZDN7ltELk&kQ!P1? %UW`'R4C$pO)`YFDA@5&oCIdSf><#SKklcR"Ne!I&8A!EH@C(\k3P=nHk/]9,Yk*-P&RK2pkO813PI=UG&A>q=i"4q+Q5^hJH^?L?KARgq- %RYGO.XF/;9baK"dO)$*<"d'4g5YoD,#R+mq7'>+( %!q*54B<[9#(!'J)EeS:;luL_-DP8c8P">^Q5X:J$i:mO>qcgs++n%k*Y4Y]]=UijoYGTS-toHKi,+XNH&i8?/4s3rFX;NA0"YRI:,Vi'_rJ %J:MX=I,=mWk+!@j36DT'Yq?rIM+!t0Q%HWrP78fXi(binOSE:N6t)/kNm-Yn#\$*3#`bH&'40Q`(3V1Le8dr]"@*SPgP(.n&s5bT %&'j-XMp>3f3jY\%;#=RgSKpO2"AdbcCepI#msF8B4A7.K^6jH5sGYA'+]22PaX@\b:mI(Cs,`[9-[j<+lGrCiYJ]&\s]7 %qCl[4N(Y(2B,OsGU6)H3'j.hah94NmpP\TaV>^6Q@r^lNj#p5(nVO?S<_C8oki9LN.#Si3.Zr)BP5$ZlrJ;K-$IV# %#`:n_0Xqjl?:[6ic:H$78c)3%9dK;\e$lkkd2bi9GkR,^L.Cb;r&Cm!&=CJb1LT/G&eq3es5jDCZ%-UT0S,(-+db^P7Ab>qn:k*n %/TQ,rKg655RX(;'I$lS`FBpDJ"rd?[2M>#dd*B.&R3?+Xj%10V@8%jfi*`lX)44r9:hD''+CO?4A-!rQc9GQ3`(o0i(.D$+4U(E\ %HTjKK`?6Q`;de);`rc(u%u:Cj%kDLk'9\Je,ucj4m"BD,K+JCX"-u>)M%FEr$Sb[8T19K3iXc,a/fh#.$N4qNmP;-WND6f+j6;2f %X"9SF`mWBKPY!)8%9WV0Ldj3J,12m%!M<,V+ZP)4FR!/so>TOE' %1Kd3#F)C.)c5ql5O4tJA(@(#.C`X4E;R!(W%]DV61ZY!N'(acH/J(:s@Z[CWWjUgPS&_i^iEp(T]N%@=Y%%rbRf0OE%a)Z=]8MIc %A=2SEa"`P*779X'4rT$70DJ6S=V0./N&UqG',fR1q/Yh:p*lbI!?FaT%d5OIC4=6[i1`W[k0P0$cK*j[:_pfRq]i@3^L..3\C"Zf %"elESp*N=lYN@]_!0N^h^?!/oC.B[2rsI'Rk4V&&Wfp74?\fX+M^A %JOa^#H+=HY.>q:i!Xskc&oCci,?Ko@SLB^jn7a1hL`ML5&s7%ph\MPEk](\2D']E?2L!WSJ8?YU"1%Sdq$aD30+E;`PEmfW1BRE- %OZ*-Q&KR.H]9F;&"WNCb0:&X!@k3@UG%``>,DkF`HS:8aY:oNjS-F?PmjMG#[=TR`o.G[/KeQHX#'^-.Bo7(e@seI_6=4k(4I8"0 %3>O9j^``t%rP/ncN.?+s;%!HB/-QGh_L9#WR)\W@Ati*77rKVSa#oM5UKlPi$#KD4)f<^UkARc9VtanC[W/k![G@]%I`[=K04p6f %m:!s:kCuA3/r+2N$$6Q3bTIAqUbG?@[H[[RWnKf7fcCfIk5O35EWXQ)6`3D3EGFOmqEmV=EVMScC6k %"XUNi57M)."KVqeZ4uB9)0HC3C`$m7CBd*Mkr$B%Cgp]Uh>'T/Q3_j\4&I/[%S=eYecFV^=<>Z:7lJ?*dZ#4f'!YA&Lk/\g)0CuQ %g4%1(1r89R=p_8\b0pb87cJkcf'.=joTNa-Hg %LMjp"!C>Yl'4Daj8"3(Fp.\%"@2=(pgaLS1&.aj$$Vdp%dg@k4"N'_l4pm1o6QO*)W^;g4Rjp6^LqZ$0(s#0C %If_;n@+G'*F)*iMNKJH'`:$SH-$3@\.R.tla;8sKUTj*T'0jW_GS%ocN(=UaNdqDX3NW9 %"OM_i#Qdhq5p0VNb]A<^opAl'"tu+LC82aK:Iu.NJo'2.kk[F.6'tke"')qYAF1B+BELei_5@llpf(]f`j_&C`t71%P!)07j>2^V %%8fr@C+*?M4u!Ds\7BA?Wf%tW:c$Q#5r=i&!$8TQN'\\bE[1ou&-rI@_BoH=#XYtMFWutN=J?.4P$q!/66j4;C;D_LitX#s6TIVn %ZqLc%Jagate!i+^"&rq>40b!3W4!"@BZ)GW>.dS/LMi%U1Y;[k]tBGIp+b,"CX/S]d)uCPq$FPWS&WV8Yi]UP5C04/M %&2li*)+[.pW`0P/hV^*N0H2#g#n?&g^a$?$@",I;2S][mGbUVM[[C?RJMDFTW %HelW`*#X+=#_H"`0Vr3"P,P%@%s+0-"6L2e-pjU?aKAZZ$[N[3rgKg`OCpg@gINubq;;5h[j#.<4mJ1Q46$^VRS1RHN_]^b[.5?+ %&5JO9$sp^i$6r)]ZD@"X9Q1R(MnKPNSg(UKI%G7./IZ6r:WsN'W66l`;@8NE(hcm&U"4d"3E %JQp3e;mlh&Abh/!Z\dMZk,F^N^3n>LJ-tFK,Ys2#3POHO#_al4'[jk>!-fp1ctAt;g@K:[,-LN&JBr1T#Ui14JU&M%"mfD*,0s]B %F:?J#LZm?1fSX2L,H5Gt>2=b7b1^*CF]5\h-HPh+608a*42"Du:"?%FS:)W8K^.Ndfr %!7^"k>6,k4AG.--P8Yq,(n)p>I>C"YJ0&)?&HDg6(Y"Bp+GFsA$!sEAJ.TM.7602\Y3P+g,`6X=GuttEHl[f.=aVelZF_dkSF%T7 %#QRhb4H:ia,chPdST.5V#!C]'@P6Z'&)>J_aGti>a>C=k#T8bP7Q$Q*W1Ak*/b`KXM>QN+6Z]gqo-eR_gs>U@PY"W %G,lqi`@+b(.L]KZOPCgF'cNqUL_(_@7.<$!\;pPJMCaKL?A?<"L;FDL[!WaJUs'Zr&0-+(+K'lHOP!s[O?ASr(I^5!StlZ/nsOb( %pDRYMJtjL4d=+a^a<69Odk!O.VF&,>MX-du-;=-O8^7pH=M):BoKDe?1(S=L*7RS+IW%+&aq5;^(53#0'7CX?U'"RGdW3uhU'#hl %l@CsTq&a"f9sYn\lA.>s>."^T+,9Rsm1SG^Z(oF"ja2he1EsM#f]mhEG)"?na(DbBM;-/?/8PU-`(9do+JuP8HBHqNE3dIZRP4l3 %";h!l/rQV.baqsK6K:*9&fu$%JC"ORkUm@i+H\q]aFNGJ@]\srJ>[!1$i6?8#,/r>=+^!pds=&0J\_l5WNph(G?nT1R4rphE>/d8 %NcD/9;PiJ#Tq4gN$%4)K6_pb[Bc2Vf?+2Z6JnG\8ZYJ6"p4OI69Rt0r(q*Pf-8+mAJn>f@p43+^$>m![,`_S;Mba%aAk6t7+dSX- %jPaSam>l*#pRqX;VUi's,+4uHn6,t_fuQFp0l,duZ9dh3Pl6?]LCAF2=DX#8&ZmsKGK.:e6`_W+2rV35"82c]N4g'OD%^gu_4n=$ %"oA_.Q?H.+-,seXjm"#LGTqnY>9p298'ut-?5+]_0j>=R,RJBP*elr-k1HD"a:X^L*9r:VIPrE$kac=Epj07il"]=&BEWA-"FpF+>;Oe$Ar= %lSqml>kul8&+1Z!.Q[X5gHNkAi78>.1NZLCS5UeE/GThBDQi/%Z_V5D24ad#`I3:4bfmH_o.WaJ+dJ9)K7KM)\16CE!I>NmYlI12TiX %Z4of`IgZ./P_;LcG:V)CNh"%n"Q[]>iY`W"!FHr26o!XkW+jqXMqAD\)W@n6 %U.SkgN7>6l3Duq5Cm/FGWMasmjZ7AA=MV7Y(s)fW:dO>i=j3A"LRSdGE7k4;iTM&)?;@:9%;c2I=u;Q8k_V8SWTQc'M[l//QF`hi5LR(AFd=lBqn4!XA^U1qp@2=+q@06S9<(1W`pgiC$`5TdI0Ft\! %;o68bb:-@VEioSYG_jd9UtL%oQph[Tn*/LV5e*.KRmVj!!A@F=/4(Np>:;Pc@19bc]i"l15p1&#k5_>54-4:DlIigct9>ZDrZ">.SesN+o5,i>GYaN!aKE]D2Jf!ssPjdF).&JiE[BqJ/%p[^,1jA<7h8j"Yag49FM_4K.'qFYK$jhi9m=M]kt`"l\G$gnUf^1i"^%Ag7nf>699N/U2/NC)L5o@]i[BG;B%Ff9qG[)nSV@36[I:,&LG0SfMQ=E7`('OX7"NR/`8:0i9)jjUYj`ZE$+:jdd' %Q!l&W#9j0jim@T;LH=4MR6$EC7cNOVS1il#A(f#YH8>RP#89FZA:W)HJT+@8PrY(Zf&C$"C=G5m*T[X49fZP)W`j)%gWKES6t?Q6 %:+lH6%\uU4Y>g4SC^c^>5#=8u0Ka(E[cBCfo %Zi_Z%69Z7g#\%+"#?kYk/J;?K>h?C0V@m!/\h,8#@8hnfV0B$7[ %CNX#&If2MA>1Mq*2q/G?l,NupOIb^!Tqp_)XJ:[Y2)f[/5tA'kOW9-(P_19E>+qikjfis;Fn?at/L)3Hb_P4\#kQRrSZSELC%"/d %s*noYb8F*pWA^[*OAI2uqYkQ!j!$fuWPnNpggMp+2Ck\>Ai]E)/F %.7ht;/l7W)'Cd`:*Hntul'+V3a*UPtI>0Q8n9nk0rj+bj6MQhp5F]i[S'1+j--ka"cKS'KiH^`8bB?gNi6P/BI@CWh461'JEI\%o %Y>9!\d1h\-+,[X\DaJPr>!<_='VYATit9=?K03#u=W:W)S&7%+nij>IcAgm5'JuP;h^6i&K'^T7`2.i8L;D*JR-L7_E'$o>DY8t+ %nGf,opKUB48K*>u)rMdQ"rg7!6jGs9j["8k$+g"ISA,b+K_4Cnf#*QAM7Do>'c2e"R@2*'k16GJikJ_9rFIB#EW'9)--93k16;XWo;2+iHUVaN6P7WM-$5G%Eb-H$7bYO,_'I'$J %Jfh#7K_-dnOH[Q+C+>F%!6t]s3f^$!#c(sQnMpS'699@a#gmUkF?p5HkkV9$r*"D!0MZBrMljfFq>=*DToiR\05+CM*[8<&CXZ3[ %ndC"dFbpA/7gs$0L3N74S;T4Vj9hu`o[^N;1SRj#&nHIj,/U8q`ka=;+EkSV$7&3JJem\s8b#\< %&Jq&O>YR=_",WgaA1,Y_G9bnJioj-p/+f0mC2Qs(D3LFi;A^ZrT?f6BNWe;n`<_eLagi#Y>E8>LY#=Lj9g!u+EZmZJu'70B:C_,04^HZ6#57lNa %!H-F'T<^qb/"Mt+&E=)`RiO&>VBN>6JGF[U)lP9!0pl-$n'V2##Kte`Fga6qnl'2HW%7[&jmA-9qj\f>irFrdn86KrCToGl5@m@e %ImKkrs6'CC8dh?mRS@q6O[X*H#*-P"`sM#1E+neI#"H+\ck['!IT"rnJb4X'Y*)#ThM;NccBnn",kqnhH";A7A3p<2n2#[IS03'T %P!PQ%o79VNt2U%T&t[Po9:-Ac!%9\2RgrW(B`]k<6@CX)\MWO(2//*I>OC>_>EXfOV5.#hoh^"lh;0tZ_XY]o(:TpYuq%jU.VOp]Kn$?5aD[SUgbIh4Wb>!m4/:fK7KJ0lJ %r6h+F-08!^+m>@43AXEcdjs_gb.nlB)V(6q35Z2oh<:r:YZqUGduD1!j<*dmDUiD3-KZD;64&)n_$F%[E2%iQFpdcWFpb1)h*RK[ %g#U!6EI.*)9^*("EB>.LJs&3Q*L:$57n\$n6dq0`jqZc59CuTnnjNcYZsm?oJ"EP>QMFB"NOUF+Y_tr3M6;C!&q&ZG.@WakH2ga=b^)F]kYs4.F$,!'OImHoF/sJ9Fj$SUq]4c %8,9:gBGmS6!d[iOb+DFIpEmT0lh8=RUDY1i%seb5[]i#i?4b@o)GH7?2D#E[?=KTn9NYDD71TBd7E^[HbKVWY*+DhiW?i`%hHL7rJ)8,i=sWHoW:U?@$do/Qr/4IY^L-Dm/1&cN_5(`U8L3#TTS6AcCl#CaA0-;SV>EN %k8HL\jUbD5.t,p$a&97cUkN-Mf);.Y>VH>Z[l@ZsB(RbE-^mm9W2_Gr:YMfDaqU^]\Y9IDiT7n0W&ip("fPO!s%fF%1AXAa"MuO2 %2MN=.ok#fgGeSt#!c$r*jl#aVl'daL]3DD86`(,C.Y-Vg;5Grs"D;O9/siga7hj3E`Zf %LRsG;"FX7U$V%?=EOm=mOu\IKG'OmO?4N=&20 %HnjgXY"S_ %cdTB!A9_UD40jLQNP,4W=uP"+ImgdF%;kGURo\1o'i4k;Z1$;a^3:kU*oi[Y:M=a_K72sm@O2_^Ag=*()^0E5,CA$Di_HJ5`kVLA %-10//IDLDIh`lhgO[!ZtqJWTWMlN=]i"ifu#7TBckC97T4-]ZtLu//rp%+XO[9EPN+d`'cW.0B7PV\&_pc!?hbt?a-B"`TKP7ZKL %-9nu7d@/b(aCBY\X8X*")VGW]q5Xg4<'qfXN=1h)U6($CKoBb;,diO$]PN%Ki),F %$iLt!ml+KbiZGj1Np7td1Q'b![*[kuHD0,S-=cO+HA`eAUk(9#47iaR)h@s*NJo/=b827R!89p;]9;ln)03Q+M/to %pm%$",5HGYPK^=Np>l.b!^qOUdN_5,CJqhsD<2@l\*6j58ZCS"W]VI3L]9f>OT*3b7I$ZX'\(#)$kuB_#6c@PXVghW %<6Wb1_".4!rpQ3FRU0d;1A%S')DQl(/d@UZH8B!6M]7I6%E$K#l[Rqu_&6SX@[DHcinm%Dg7P4:Z!D`$Kg.e+dMiX127A-5n2FJP %*W4n9*JmLpcj\co8e=kIYjjUaP7N*YKkfWq7+GMD5_T?R %VY.\@'n.M"k[0MQh.Y3.$.8Q]+7t&>rk;/(Ds;6?4&tkOIf5us?*C_f1=Ia-kJD6tUWs0A]nsf;.MlIt&J3CB([=pSJ8j:;))g=!na[]Bd!+9.^&g(4Ua[`W$j]JCbd=:n]::[?Q^Us&X[EQR)JE,U*-\ %PD#Q%]Da>4Okfstn8qiI;49/YluY'QcH#rND71b/H:I\Xcicoeob&$n\sbA5qe!fs9P-K"lmbbL#\j@(`1DMMO"NKe>?V/ZZP8Y] %a_n7g7Squ[*rW7t4IS)bSB!ub,*FW4BO457EhQtLb,?d2"$WOC!Z`3:OLF\XnF %^&`Js7Q)-+dr&kSb_c)\>$fe7!4rS5!LcEOcemMG3k\<@n9,8$$=*$-gl$rq6h@Z>OKHLVSP1u$llh>+!g!RZSps9rIftqYp;4&gQ9lfJYE'rk%==uS0F_3=9A31Wc_S0LK%l2+tiG9`G?&[cS^.8mM?4J``t.uIEG@8gYkP*F_5,b`%Ubo^1%!D(e9W!bD[\i^cms8Hb?dnE:qFI;?M+KeA--Tn2!gC) %^j]9j(ij2]!QUX/?ci(c;Des1O&[:C\[9Fg-(o(^6cf'UcX)<,LrX6oi1FadX70H@?WE_eY[4R@ikOdI7&DN??1AqE]BTnP?6#YJ %0r_#YT<:b_iXuH8bZ*,FaC.YKUC\OA2KCaIgRAg@)5&;R#=6[=J7&>s@J#Qn$$`:0'TG\T6mIBIA,[A@W0%mm?pWG1`*^&[m'p2< %&i=nZaO#&Pn&jaJ>VFd\AEe^\ID-Vp'R(W5G6*quKc,uW&PUQfEopCQ1tr@P#%732K5QqTo*;2Q:\kk1b^9RBiu7,!e+MKD8?-MLW^G.=b;lns %0\`uGM74u@"TT4O#/GlB'_LQ>05"4j1Y`VYU?)b:"pD^@`T:J82m5bjBSYb&/Go]%*;h,37H*]jlhV'tNPcjp_]dor&P&1Dl9`G#_r9\S#/"r&eg'f=WfoTb\HlEgS %ar1?;"V?g`L,01Qn;iM`2Du8]hpgDlfl$4^+rE#(T)nk8AolZ8kj5m5>5ccu')7Oo>H$GlSB,^['n;)?Mn^\0Dc> %[0(Na5le0AKYoi, %g>'!_0e@lf[6287qO9$1]7AdleH4%g&*L=s@lJb']Zg9RT*W7?\Je%#74SQR-+>C;SR.8aoU'VVQE0CFKt?K#"q/*oIk].Xo:M#K %1n8IIrcC'Sn.[GqMa_+7!%B;?DNJk\3C%SSUluP33m3h!cK:#7[P))ZN/CM)j//%t!R$e7$!=Y'CKS*TR1aZ$HPCb2U;=PRIY$IT %6`3aM&oEg4p69WPCl@WDHoi#-YlIfIjYF\B\(f/B]5b8mBNsNc9m3r^<,GM1L5[Rq\RsD+M_>@TrX66sS:Xf6L&if;OG7<"pi?H= %qB_LK1^*AojaD_5m-S%9i/?s_l_.s:"s\4tPsU.Y)lHC,;&orD>l`r2^aB9+%p.5AC:d?KW$0T*/QI`;7#1&%#h$&p?u&N6 %gVS]X);9W2._)ohU7-:F1O?<. %9%_;R\>GC=>3iS:$agGQMh+;1+@-!X%'bVGr8[gY6B^]/f/mZM>Re.X%G"QC%$jN*TP=I&UNqLR!nP_(o63]mN5`8jOc,Sm9>K8G %6lrTG]p>b2V+BKC%2BROGNW&_^74RPBE[OMZCQs#WLHZH+i?(trQWCa3o6`n!:72u'@Sk>_f*n>_2N(F+)fl3O0U4!14ac2')C&C %A@1!Bepr.:/.=ESc;s:F.?\L1/E<2DJc*U4>Ir`6cTadU;bakI1P148bW;CmN)AVrAUcMlbV[Ln-P[,GU?p,CYs:-Vf*q#*2-qtQ\c/,%!9II5>#@@0*:WKbg@\`(q_]KUaAs\A\NlofU[>]of`i/A.D?88 %132O0%"a_pXEfkC3i*n.' %A";!OZKOO`X_/3o@\tl,&)2dI'VT*_8dM'q85-@2;P3Xe$ORtU*:M&Z?Bti^kXo+'cr:(lK/-gh?qJFW' %C:^r,rQ@A]Q!`2HVXdqQY_6B;#,UT0)j#_[iWJat\QB=g0ORolSGIs_ZZ"AZNLF_jm(jO;;67$F6#1o`\IW_^M52@Qm]b1927+u< %2[/goZR%s3]W!Y>;F:GIR]2H&d7kn)^aX@nkGOG'Y$PG$YqX9*+)mS$QN?"Fq#4O(T64"![J*t`b%,&XAS]nsG"bUc_In.-bc%#c %OVDY:(@$dOZ&Lcb+_6>Rgk;R5'5^ibMEE5n6@j?7#[GmOPY41XjH?d>O!sj5YY\*+l,YuZ=Q5H7?f4'p.7qC5J]6:*_e]*5-?:M8 %&(?6+9T&F)-`?*,2K\<3U"%0lSXdo<^C+A^D-OLf/3]CGBQM&0$%08a]Bn"93rOtFV0E0jJmXckG%-<8qT&a0U=PeFpeN.p;]%as-CPC`kC- %6=+_LUt!JdVcY@9@j3R;#C.a[a@dEpY?:\>Z3+q0-#I'DBa]8Z>M)U&_-U#j]jrl4NC6^2rC],?!^o"#7F<$%Tg<4;CUa3T)i.1f %&D8$Z8Mq^XM(FPHR#"Gi6"JCR+qmG%bZ.WIr#-N4$!UM*fYV+7()@R,YaA6pEInV<@"D4VrbZ+!TuH$$jWHIcQr%4r3Ed&1/@Omb %'8m/Y=A6f@fL5KP/@Rqr_8otfHob[WZr7Q++Epd)XaFZ^F1KsrcQ""ol.(E)"8]R`(.5Qp;jNCYVZ[`! %=Cpr^gMX/S8MoY:Df\=5!\ZLkHosY7nGU!QZRhSKG6$h.21c6cUs\6_.-4Y:`o1&JbFR&f/WNLi&W*WK7m5%.fS %ok>gP:Jq,_MX)\%VUj@,2YY3X,9Dc:ksg;:L.:M %9mTpT[B>]∋"]V,-^f>os@;ZoUu+#4hP"Dl?\'qjnr+ZDbu2o$l_EQ03I,"5(KEA=/%gg %C$Q:5ELe/5QZ!o#5q>s8K*I$B?OL9,n\"IR"sm&crK;2&]Bo._]FG1kB_U$2M`f6T*uHgOO9Pl`E2Z_`o))Z1a2b2GA$Pjab%T-\ %p1:Pn(^uk0j,((2FEgd&nu-[#hD-"VlAg*Fch`9c\mEsC';hTE'V'ShfOhsDroKa'o`k)%B'FAh6"?+BMoY1drh.YFO!po^)h;FE %CHX),'COGA]%%aa.)3EZ%0he6H9N.s"kB8R'Ob+4W!(uGo`qT1\RWXKkim\CEu;FF#OM]..e$d"7*hGFgfYprc_"df=s$OsH6Pns %5u0@j!G-5_%.].Wb4R %kjqE!!\Pf/H[i[F)\1Sn1uJ1"K3!g*X4=3KT_4,]iOLIO:X=.7HG@$R0HB`aX`CX#)YB?Z?-7p:I+d+W$?7eN9K^SR:XlR_/qJ\?[d(&fN1VaZleh;%ZSBd %H`Y[DBNXQpgfmd][8+B,UiUM%F4HqVgQ+"=kf:U+6.a;T1Od]qKcfZ>EilKWqT6beRdZ@r,q08,laq3S*&O^m8[Y4qdSj%$."GEs %H4]7o]caM1.T.*c7;k.\'60oX=3+n %RcOD'kj&OPIJ7OehZD514>M-hG2UGKnF4qj?p9s2l?tcd^'XC;IjW]a(R'IV_mbIl/c@66ea.aJ3bc8HI\!"UYK)B9F4AUt5jp9X %_pnXC$d.u)HN//Q0mn=p0^)RIhBo9ne^M.CbH4ShA?-_XRoNqZ*'uHFr>bbI4hDC%,\dG?5%4i %[lhSm2N:_enE\DI.c3(149$k(^DachTPA(J,/gkW0<+12KAkS$U>N*m]fgBVeXfQq+a-i-?2#5SY:ll5"4HCMc:,9lBg[]qW^Q+< %6s+TcRo,_jJ#Biki85;:VlI4spW?'&r\b[.6%[PGPds-MU]=rKc0Ftu0V3BZk;RU.SuT@FAp(f"[X9f#)lS2NL[>!'Y+=m#4C(@L %Eh2N)Zp_5r*e/XL^6,!I4Q,Ja0qr`'1?lA9`6<@EPp'Fa@]Sf%gqU:'J[](.jaH]:iSPOR"[YD#4V9E/"f"T^,*I5hB]lps?IKa,M'#']5/?CP\CM1MKm&7CEaa'X$t!?s$1RQI0UI$S75u=@#FOQ8 %Pf"/D:!I^LgnIJI`hFh#g-Egdd$A1+`-C;I^$'V'EUYgm:XAmOpg^sCjn7cS&M#Wp6>lUAkCXI<]-TZ0`RE%YH;KrW_3s(ER1@?@ %$AR"Sb#bJMeb!s-,C3:9f:*bSQI>DODckJh\DoQ4X#(>/AMV$JoTE2XZ5CH]f.rs<^bK_BDm&MJVH58'Pss=?F7$c@)g'HnKr9^j %J78NYW>`h*ZDir+Z.J!6;iJL@8)_lkV3R3p4#/2nb&/F-!b5%Lo.,Sbdd`?MqU@fSd&]cpDd2^L5RIHae\J6gTB3pY\rF.(VHL#!kNA[O0\c:-S7;i,qL%BFY'Es*d_Nr+FR5FW %mLIR9<'VGag+sOL/gX_1^=/RfQiF^p%$T$HCl$mu;3_G>*01HgDb#V5]l09\lKh+IVP]5P2en4/C@/n_fD=YIq[<,oMoW:?g4uY[!2BMl.',0WK3W:$RXc$;eo"Jj-]Abb5LmP$n>EnK_3uT^8j*(UK@3D(Fam.Q/^?qZo6PF"HDc:Q2DJ@]T`n8YWo$YX.@m->K5Q%i>eE %d\4GQRgUcade%4Q+Ei<)54Fg"Wh_b,(Lk(1U]!IEI#UXB6u>OHTlVst5_hsY@7tYuS<@_0=^Q#r;sLK$9o8K2l;%bFY$arfNQ!sU %8e'NGW#f#_KPD1tR&FH&1J67t9Bc*!RnLE*6Ia2iT.`kNeQ)/)l74MICXA^r2.Cf(QOkhj*df7R718@Qo?2Gg5l_lG*LKe8@.I1$ %\Q?Z/*$0asD(NU<>C=cUTjBVuC_Y5pZW53!.bQd>-,\QkplBDBkJ5a[(kZd?f)d5LDA4r'_HYgZ&W#8*DaK;p=$(fWJBHKf9k\Q= %#oB0"S'[6"CS2e:!$WZAG6!F)S7k^\V2qda&q3,QC=F+p':Q)#pJPQjgX5j1EMpKfZr_d<=W>aB:,hAkUuop"J"#3&4PfU%q^+-% %Lae)\_Q\V&pOV,hrS78KI!A9+Xo*S]Y!onjcJ74sjR#)<#aN:R.M0P/#ClFm?oqaoWkWuAH!U>3<_,*W*2C5Vdm5! %(F"#>>ImYrl+4M?cLD=`[:XE)+kRtTpRQ*4h7!HTcYIBKa#S>L2`0)Jh"<*J,[c>gLD]ak_bKbpMVGU[bboH>lX5AJQi!KuEP6JZ %ra\!cj84*"1@\XMg'_.TkO;l`3k5'Xn$niT*Eb*e4!`9b5r)kui4N1g$E\X(0krt!djN6u%ZaNA.0,6e`]P"Ri?JkW84c*(q7C9L %rFnRU6qkVnMuWoe?f6KN0bAWg*%a:+R+1@1SsOlh.WA"/XaQC?,gWP&8[Y=*eiA$JZlXM-lP.,+^6_Y0^e;^notkaM]-AHf8T(<@,Ce3?QSY0)FXXZTn %"^m,:Nk"-GoE0>kr(7p8mp==d\2004'RQb(Q;IiFm*WW'n/Yj<,[l/?Q5q$[87k+llBj9A@EU'rG9>C'3,]Fj_Vhc^k:^%UfjSF&e:]51V'T$)pA6]N_9pu/L>2qEX6VnMlT&r/&k %aZWcUlceKDXK*Wb3E@4CF<^TVUD9W3h9Hkcj>V8NI/dWiI/f26_=rrU9DX2CI[HLuZK?<5W##8V:/TnHPC-?_D %(X4mo#A-bu>es\+eJ5_jQ2&;^b>ce&R!a#6+!LE\$ra89.,PqDO>tLm5NefiTR/DDCFR)Yb[-ELT@_7M[L19[mc/?X1O&o+W2%#$ %`$JMEWguW$^Q':*S2PiidBAi3_5oQJp?&(qm?L8T7[R$5]c+@rVAgB>f^4#6W7T>RdC)`43$TN0?Zg_F[MstkeoFUd^`7V7_-.3t %O;5[uYnBaPg)4JEZKnlI/ZV6JSB)XtR+0+O"@e6\V[$PG6sf)`ODP:A_O-qp1c'&Q:+h!?p_D[M9:g@f4Q@g%*:::*!]aU*N$p>@ %*K95'eX=P+3XM6P9b(j?](t_Pbm+[0&Z(tp$HC(H4Gq(,j68FF:5h@s$d3Jt4!,DR@qTTelL;mG&*j\l12,1hi!/:;$h]9k]'Q-d %3H2^.pgVe!Sk_3TYj]2es'uthh3&R[n8*HE'!Y-c1$(!&WUELFJ?]6\V_g8kk!ibr77jMcL`AUp9V^+u1FdN3R3tl"0K%,oeX09S %->0,#23'Li[SBdVS/e=YRY7g3"Rm4M'X"/kZegGZeMtRobJDB\e]NR=:dsX-D&b.t@`/;p_b4/+gPE>W5sF)J'W"'.SFs#Ed'`os %MRPFcqSik5[K7QkKa44rO;iHg"#:[Hq"-6A$Mq#HoPG&uOh4B2Vc-'#mrq@u)"L+O'Le^!k0l^2SPueC*RYQG7KeF^do<'NTH<[Mu%b3P^YP %`(8]6,J0Q(WT3<\l<"CqD9R)>2^@1QZZOA!*[#B6%5N0_'e+dU4D+d]kL;79KC=]l-=A,l@YpA]EgprO?Nmc>%sBEM[VVp*#KF0mR#_$UZgtc>:p]tg+bh2KpB!'3dNckD %7`_fgVc(^99f,B#.G<:7%4@up#\$M"Al06iKgf&sVBkDBk%A&#@2h0STp&%]18Ab0;ealbAStNnj"`PHl`iL,_;VY"_G-2d0t58U %R3qg-eiIYB:??d$W0rF0g(chhP]Z([%N,;063SJY4McHi99Np;l!i2UIE&>+;:*AmV=!`Ra.9ZG6d.hSs %B/Vt.3KO"rDi\#5P %WHD^OSu=+pf<>s@]j./0*TNO[+Qfpc^LCeAMkptq*o7pdZZ49Z""uh7Rj$"g^(2TF'*O11!d^^3Z*G6=V]3/$QlAZ]YSK(oL6[aZ %GAptcBh0gtm8PA3cJ+Z>8sWsuQmUPdG$M:!;g9tGJ0ERN>MS&D!ZS<2b(5hlr7u`E:)ZXE`n5Ek/Mk't9(pOiAud\=_`H0]p5#@' %X38bu;7)1o+,nh@AcuRfFG?""-S[ZEmi,:Mpg>W\-E93dJ& %C45uZ%E2n)CTN:Qj-]Ma#l'hslAs`b^*H@[]^_KAJd,-351q\f'_/"-F"HTcY[oPI'9b#s#B,taF)n^*Q79Hg[LBqegJ9CYPe:hL %Q;s1tXjWP[ABPl!#teR]'3h=EY4kn@&cp15/OOsD?KNU8Rr,TmD,G,:`H._@"(1f,&]kBjJ]MAu2"tf^3 %[hdrorNnMp=2#2Wq!#f[q\W>J@Eu?A]MAr1r/JZ+i\egSjDB;n^E5E+'0G[Sq!=TZ55R5^>npDTr`Wn+;eQq#Q$&-g5:Z[egfi8K %[M_[E'>G"!(!&K^`WZ_Yd%\:p2(N-;TBkmVqHSN0D-"S(=&9/KCn,pdP\&VB/rVaBDRfh-ZOa;?]B'BE^est?:%tCIP>3aEj$hLuCT8DH+1\=RF\O`fr;47->1LpWq2pT8Y@ZmTWX[Rc %f8HY/f2TX['L-P6[GFX8qnK(52*$HT7kUh8/$GoVC\`gFW`>6M2V@t8<30)-Ho0q30CT:g-g(.FfXVqo1Nr9%r023R(AN;a<,FR7fHQ='i1as,:SLOgq;t,r7[$bd8[oR:j!KkknT&ku];So`T=.duV94L5;73MG?G)2rX\jdV$hd$>fI>"d %CT93jG[t@%m:_V.]8Mb@?X*NFB);Oe.PpS8I"2W_LgZ82\tVla*"NNKK`J;&9]i4W>V+>8_Ri;gS/_ %&@7cjBpkK.F^?cMN\S&N"*7?uZS,VcIT&D/\aFf5?H\-mVK!% %`3Ie2N=N,d.oB-d'7.q>*5/gC/oRmCeXrOg`f1<0!((]2Jph]IkmIG*?.K/QZWChAVfCoK&!ArNd+G5Y+S\8e@rI:eFr %fh]Z@p"+B.)#m@5)uPY7#KDJLh\S2(>K\a!>/$+RDKIPXIP]!gED2iVDE#=7;&r4%dYId4N5I`ep#;hBRk`4EOo#%//b=p@221jo %N,aW\-"7B&j!'1#%rcG5h'$9Ua4a?J1WE-?,^[`P#L^,L1]AU:j+o9+hZ0t.N,e(d&0#fsgWgYVn;Q]W@pDMsqLOTF[/5UB`;@[o %QXr>?)Q\/((uMI4U"tZI>FP?4)<3b8,(:YE*+]Q7n+1EBL"271(jC5sYINJ.`].(YQo"__)<8<"OhGCd9:c`3Zf2H4j!_(Vn;@*k %AW2O[^CX$8>fO9BV#?l?`bj6JgGrd!T`1=(`jcdZ-5kht2]U\jrDVD.;JnHRq`gAe0"$kg#:B?'Xodb3BJ36Zi7SiiMt,u+3G)&bcK\pG.,9:1^J!+J0Y*A.YQ]U&17 %g#5CTnGCH?=33-\PT?p8.K)q`q#50R1Wp9c+^]&@lu:G.9D=_m0'.iV&CZQ.*A/pFpXY9dAV]S>FT4UL\8F_/hQt*G2mu/H`OE.j %osCO.AVUYte'#)mJa@=^(_02dg-%N&PJd8Bg#72GA)GN@QU_Yc>^!V8lhMp6_p)X)pQlnfmMr %M&bA045:s)E6m4r'!LK)3IW58>QV:4Y/4MO_kg`dLZdj+_[Y5'fBdH*2dD>PqofO/Q=9KT*NmH%p7E@CZ7gRK%[V4RpU`(J=*K.( %?Yj!'D5-QK4$-^$C`SpnDqX*tAj`3c:M#;cAT@,c4'\J;rE+5&l<<0'54Jl62>i"n$?,Kg-6*$-7k@a5fti1#4@[=83jc1((\ %X8>NM`N6'_EI1st&$545lNZ9kl4mL*VMti/!gWrNRPZi'b)_nV]9CXiYS&p_Sjk1.NmSI2 %kHT"_Ml"h+AnZ9CO+T=HNFQ1J`^3=um8fCu/@/Y1,j]kZJ;Xi`iRp`_KS_%g>mWcKH[&6bBG.gl#XC`p"t$NX"c$Lg&<6gUf<+ZO %*d0Ra;C>pq4Z:E1Mmu\9SBM1")smK#DteI3$G>0kXac]7^!QgV$-g/*-=t7>QcikQU'6b4^NhuBBH:(u]1">5S"bIVBm$gnPde@92KEg#=''q*AXh+B_(078;hrQQdnSk4[R8$u/,KA(L(HH&u\Ta7$s/t?79LNfYcG3LrU!Y5db<,=,*CP^uu/^,neI36u`\?'i7&`0pq#0L*[ljq/'EaLud/*S^ca$)DAfa&X;0-EtIYTlJ% %%osUX25?@Y^V)KEuGG**!(&1(VAchaO1?*"Q_pK,5EopptP %klFG\NhW,%'_=(RfV=T+6P%4RP`27G.MkQj\LXpr$YkO?QCkq9fs2(d66A>J=>fd(Z9]KDYktrn%YlX2]\!-(Cb?98L2:#)qj*Rm %@nZ[HdF4r6h7^()R!oLsnfFfEE`q_*CtTSa?!A(h0OW(9GLl5D/Scnpd-V`*ABSA@G;uUjMCfdNjh[B;@qVr:>1+@*.9L-)Lk+/aLfG1#%"W %O"JM,n]NVu(IG+7hPJ,Ej'd2V%EB,4lL5QZ#fh7he.3)P\]#]$bf+2KCD@@F6fhrSSB.:NhEI9%Nc#$[1<:IN7k5[L]BVT2`I.qo %P*C7e901?I!5EsSkNlRi"&<%e'5J+^\&'M]Y[T3_rKYfB3kdqN].IWRFbF<,3kh0dhN4C!m* %+AEA>KD/8rAZ9gtFY[QuiLhQH'^8rEEj<-(4fO.%>MA$rXtn,Kai0J@n\A/Zpft@M.t#]jNMkV"mU=N7\S0TURE6oqDqDb\&td)< %3;`N#1V$uKWRT16p$9=dY-(7]8TQr)X+[[cpMUe=p[,*@pO2[C+1Lir5;R>)PDnt85.L?br7Bfs %0DE,NVVYNi3TB]'J7UC^%G/]pjkPc`V3$?&4dUbW %qU%egEDa6gcOrr:9&9b&m<$,`R%[lbi.=^o"1OI(O)E&ChfP0)q.J)%*'PR?DOR;\S(Z7u29I5P+6UCBqCnM'dIuYHrP`@bnJd8( %e\/Na>C^Da*cdkmGodmlA7h/%1tn5mNIpB'02h.mY"qnsGc*a]s$<:fo> %Q[$V-`S17L+e)fOS>n.9J4'_Ge'-m4$h+LVhI_?[KlM@rL*h8d8fi1jO*9t%JQ'Qo%"PC %Hp#2j(\b*Z=5^[ei:7*:"'F[E')n#5"`of\.i:HrL"g_;$8.dn0)m&YK&DIH>+Oj:;P2#U:u@+IKG\a_f^Nesk-ZoEe@4`IX#`@s %eUX]qQQj>QJ_YWU?\;@$^YlG,\WD"UA3UQFZbhq:P6A.>5:ZAFhemJV^hW*eh*4k)j+d^jT)Tg_^IGn:LB3!S4nRgu[kGjD+h+;S %X#8QHDYuVX%g&TDi:&"]\blTNrp"6NPU;"9D@X#>iK2:hPHu3[4SFbUmD8]X:^VAU-Eh227"jfDOe1*ls7>h`DQ-h %(/b)*-pXfk#56LrNaB;Rr%'pf^`JV&aAnTi%CYM:J)gpq_%iD$5d0*W\TE7l/@ttcEr!uSF;<]7?5m:U/coE)/oP=m[d&KF4[^Gf %^>/RkRCWdWeNGoD?>I0B?$faC(LQruVEm=$5X8s%6Q%$7?A:%";U[e\/cY*s$Rq'Po$PJ&'oFTFckY32:f %$A!_YE,5Z#YVg?cTfur*!a1U>V_lVQ&E=N!.ZZk6r9@H %0%KHM+#92Y6+;6HXu+;ipUqOXVE.S!V"2'>d!]305$J_GC,)Zjo?HFb?%0$1^@M/a>`>:"V1/":b(<]gpdP+S;CJrI)]f0cHF(Jm %)sA&-c1N#$_KY)Sah!B2q?sIa0j"k5Vap"AiqO#-/*8E=l\d/%4'+7mKHMCA7]?0\r"ce<6SZ"uE)Rqq&V()=SH5 %Z#,P,/kcmZ]S.,!1dIt^*QS7[n[gSZ'ejiUP^,cY?nIKnr8ob!o5m$InTaF&o=du:kp8uTfXieV5H@k]o9-V%5'=X_F1Qa&H)_ur %L7Y5[`gLOeqO/CT(F3)jIiuQ1MTg2<<:NqZ5>(lL.400A-sHU&r]m[Td<7nQPS<*lHDZ_u)(8ncLK-`J8E6 %F9HPH=t4leMjN4>EdPZ=@+'tla&@hlA#]'!NEU@a]rp4AB%b#ZjtAt\r;tP*Soih>Cn3Z:O_)usZT'(*#Cs2< %\[.^c]U-Chd-D+(p+/04XL;Gqb4##jYnSK,4VOkRSq#!^W>Zm=-B?PF9.C8Oj0/>rG]QdTVde%Pn@-liCjm8DJ1M7g+PR&^nJu`4&t-R':t;`05DbH\B-7(U %W?9@8\EFEHAlK4`Ejs!P)Br@EA*)HjU_!1sX+Opr<0[hfJVO:>BYc]iH3$>1)B`JK2#(B`9%CP:WF^==CN!8.gsr/Q$.]1*:\M0' %pj=^eO&"Q3B?u\m-P#$_q$-ZLmBIH?ZYFLPHLP'#CfNfPb!1)Y@A'g0p[Z30^p56\Y-q&XJ`,H!J[!$ZJh91lSY[`"!69kFNZVV[ %rV\bYJkXL[CX#m-V8;=r$:mFm+<5-R=;3_'JO`!)ZNgb/:jJ`j?e7M2?pVt)=s1I!.E"a2P*OW19R&!,PY4GP6IetNX<9T'0:3A, %!M[uX,Tf\rh&N+&rr>Y7irU7.%W]f5jo_.Pk]f0cU&_82OB`PS:S-@7$YC]Kq?D5\[3>V66?IMr0uBUs=ihP6EO %WSbGDQMgCeQRSI!'X.)rOn/+j4\!$oT94X(A2Z[Y^3-8ajhZ"m\arPeK.6gnaSDsa0&t$%+'I_M/mSOi#!V"f_P=)C3*F)RtY/$F=G\[V(u+<@+6ncAH/RK"Ps6*^?84YHOXYE//U^*AP7@JUQH".?.#9sBcF1gb`;5&`VAP*rf\ %NP(*[dl3nur,#q$"X6\;..tEfSfAdmPrKC7,4`)9.``W98\fcp0EfRjKjg04+M!H68;-M2B:QhZ'O+2kZ$LrD[1:?n?=O(Vm'[Hf %7fk$mp`*8gK2=oYUj6arA,VQJlc_H69E@8rY3]6X0Uk37%#:eF(U=bqI`8eJ%Za;Ne;i.B^:CG,JU:$*EHQhnfA4?UnYqWiZ?Lo*( %Gpr_.[hMXb.KG?S_He.@RLrDXobBif=s-1;N*N#Ipf6=u%SuB`IXG@KI9pqf."+J,hW!9jU^Qhng(XLAIGnC?!'m^?GM %KVEn$r(c?_*0-S%jt21bhJS7:9nLL-MSXZ(/V$r8E-i$R;.Bnl;2PRBGd->mK>`<-4"76(-_D%0T>jfU@KE)9VZ^OZoq[K2[c+%[ %RG$DUr@,S=D]I"2-H4Mt]J5)'Z^)95jOW5NK?Z0K`qc-.H5EMB*ZgOLU3'nU3\K#Z7X^WN$"pa^Q2EU*[_!.A0(oP;r$Oa8;cJe1%F9[/T %G2ESeAicaN!`fH8"C,bmLX5JR!N?SGWCDSLMIrSg8F^C(9U[s?^S0;g11]2DK2tugW$::k3b9+PH<4OGaS&?NBqdc#LB]c]PrChC+oA0>B0-^66+2$N28o*k?7=X-9IeGU#+hK$g#GC\X7JscY %O.;38o^s3M>WmNO!/B>OTJS3qL8_JgjF$i(/(WkS6b,P^)F$a(MjcUf#pB.rIc=/tS7A>K:]!+jLcuI.iflFeF7(.3Mo:tZ!mU%7 %n=.ALCqFZ:b2&6!/b5q2=e&[9%=QPC9c0=OoP_!+1&jh!r;*R_TmI6/iNQ8i5;X&%PQ3&J8L7F=C7YAU*_upBl/sjC]pr-:(Ssal %jeZ1;S9<,&YQ5l:*j:u5k^%O!IpW$.nUpC:Z[Cb*P/mcb-qnNh3borfN*to3>r^/E;eJfGVFKe&!jp66!]]oV1/2ZV/dj" %+618Zdc9gP^cD\r\JHqKGh$m_u[hFjNCc_-0e(#9dS,I %?9lt'Z^LNa!@[V_(#(S#9]b@j3JNNj?tKiLS[QCGgZiD"X&gBU@hp%6/`a!q\P&Uu-U2rQV%GFL^/saeMk95<%_jUF=6Y1:;n*e. %B?A&eGSUhJ\Z9@!oCIRl7Oe*&Z^@X;r1(MHgF7W]+@3ua8"cJXY8BIm--1PKjs-gtGE]YP>$pEq]QoXi%738[^g=;^0=m_LdDCufZ=!,M[cTk>HtAb6H9/k3?l %dFZFMe.S%^c[KH7Vu1*?>et6Jls8b,puK'o]G,Dc %"W\)NaLC-tE8D&(faa:RY>;7`!6G5,cjaU=^3QsB.7^86Za/mBoLMB]km3N<(f"\)]ILDdGr\*Y%hF2`Eo@dZjkA\P*%A;LK=a)M %k@_>KTY:PJE_Z=FNqb"'h(^.BJ)W5,()6Z[#u73e23(F%!.A1oMK[GHPsX-p8)Y]-N@CAAa<:mRTRn*sT&(]jHoqK6aZXE9!5M0` %T+[42%)n;bh!sgqc%$MC%5hQkW#FQ!Wf16-=V7ZqtRiNgZ_9S`GiVRRU^kKIDq9KU/&Foegn5ck76 %+Tn0['V:E&8;\"D!g[f=V7Q*^a8#QE&9533I.U?"Z\G`Q?@W(:[Dot-:+n*'qi?4*rOSE?"W$/lk(:6A((Z2T;R'&HIM$aJV9\aR %GVH"(@j5Ra>[V\qRCu4pc]co.DQ(3qN8?WY-2..s-pErDSaoqOCnN^/_=Z3>9%K8LL>9#o/bT#_<^3_H\nak;[ND)*XcZfcd.(KpD*)T+dEb7(@jSY;8+#5MkT-G=KGla8!SeeN4:6.3TEP)=mH\+"E %*@M6c!/uA@n0'Jj@)5J;:`_7lK@qC;4dtq6ac$G@IBcC`e;,B-0?Eqj*B&U!VHh3?:,oul3`/EiMnTF'Uo6B3d1,m]qC1],d^/Q\ %)%J/r(+>2b:(JMK#e\*uDs'.737^d&.@jLOkIjcC=TrQ\j76BqFm#J7P2cGjWTu49]F@1t89.3'7N4_GL&/l#W:KNG9c'1?j%cGq %.,ANQ4a"j)8RKrk$]`_-45ISVe^3BBC'XB5?[Ttfc+V//n)-2OP.OQ$fQ[hJr7+Ui"6?jJ5D*B]ZQ9ek;@7[sj3Gu<4IMbtY+!!* %Cil52Bj!\E38u-mj\fjl!=4J!-]4RL^bFS[1@JqEjYH:'5R)\7[0 %S5i5Mi2!CeAp,We,L7N%=PHKE1dd^pE&8XYWT/&<P'q$([@dk:_Tuomm@uP^pX"HsBBSUgY\Ol"r$!H%A_N %B"U2YL#UifMU?/pcS&qW2heSYDD3-Ii3F;e3eTiLieJf,%:?S/3O_gDOH4;N9j)-J\brHOh@m7(!CJKS=c8pZ.W %rr;KNB;+ieXt^dDiOmn.&hcgBGr^Y#+l'AS[kM*[Osn45R7O?Eka^hTr8m+DhT,\+3b.VkjS8OVoHm(uDNRRoWSEWp_tC#/0#M^h %&hcU*qM#M5K)oVZGErc7HbCoN%m(-`@fqcGbFsfL)<*=-.C4sC8oLch#?]/89JUc6X\T\-`h,\qNrU&ahemt5alR*u7J\Hh:5?#$ %9]rV[""+0.eHHAn.*TYL25'Q]:GcZ1iPhXa=/s6B-QeW_WEK %/kg#BGcGb&D#48cYp8buFBrHA4 %aKA1t++!TX5;Zo4Wl=eS!RkBH$5RtqiT%TBGo+gncEf3TL5T4+*[)Lc5AI*orq"u%"Q=GT-sbX\PV+Rc\:4,;oq'O1Lf$sQd`_?* %M[S,L+Bn])b8cJ2H=T^/FL=-H)J9BcueuqURFRl+0Y_n+"pnekVFC*d<5cPp*brIm=U'ji&_;C2h!!;@n4U:W$)f %1[M1,1k8M%aQW,=j\juKTQ8U('s[sbpc0i"?Kj3&\=Id,OkC_J,7JSYGiZu<`]g8]'tf(mS7NhIE^FYABn=>6H3Rmn.[!NTogO?# %If5e/k+:I'rFSii/qhlbme]"@1_1@5'WgHd!0thgJ8o.^D*8T\X2J^2rW_EWV_H]2=UK7?@;0?;/j4a"?[Td.MRFj1\bGH)[1Ipq %AbZO4IWs7K?eU(tU+i-]2Fut\2#CGhpUS3UT\?Nk^)i1f#8ZFMnrQh/p7.Ek:EZ\R):p>EmU*;>]5>=QKiSP5)f.p&)6WVii;B(sesqg0"OS!,IPW[9N^97;.3StOXh=gr0D@lG!!gW\b*0`.q'F$%>ADs3nCU&7UDmYS$LZu[IC[pu&g'0FT;W:<.60L[DWI9- %*Th\9Ep0Mn?DLn8Z1lm/qOg_RE?KRfB?Tcgq*iUb"gDCo6l1Ak5IPF[qG)!^6-KJEo3fVS8f4Ms"-H9]N:^;B&tmA?!q(5hK0]td %dn-ATS"4$hKdd$BgM:cRrR1?)it8(-acYQ8IsEu6lnl][=&lo".bGG4_-J8!UiW\_i6Y[$(%GiPn&:P^;+,f.]n(T%2%.%2CK**k %JmqGd!/:4TL8%!`+S?%3`I%ce?AuDD]?$+Yl.1Yc^[$V:8ebmhfac58W.n_`J>QXderrt?,Q!SA%aa#$\7SU^Y@2rnDf-V:%a"7- %::E6^ig!K68o*[Z`dPi;U&OW.)hdWAb?Xql[E2A9f,of-Eu>oUL%$TJT.=tA?GQ!pecucA&?>R,4&uRdBAZI4J/tZmJ@4%/&$TPd %!/JTqI/s:beH$X2>P/#?X:>5MbXR#2*NK9-:SNjF!'=3d&40STlN?KU*<>XH)ta5TX:>5IYVtbKpiibKi:,C!&$TPd!(\\Ye-GL3 %9@7nl2^a-_6"6P@s%cR,/H`s!<6re!PlF:eHaH0ZEcU6\r+gK"#'a'!I2Wd %Ln/d=;_X+rf6KAB`#9FpX.,\2a=,(m%QV[&2+0pLZl1nQ#D %3L:]q;XBbB//O@0:Q[Se)Y5k=k4>:`]?qnH-cbRSEe$E@n.&R;V_::/+8*.hXtEa/8pm%]_;J=n(jtnt]dgoS8sibJNXD!580CEm %D\K/KJ&lL4-*SUe!<0d"pFW!p>0%^/pJ7Aq)hinBo-rrN91CVO^uH2paJCoRba-DkJt4jb#j9Dd\<<%`4V9s$$AFfK)d9i,?(7!f^!/@a7aS_9W=mp]Z+OK"l\` %7t3Rpc>2Ul$fN)BO'<)LSd^a\Gg[HTj3\DU:IUgq#FUO*,-bZNp9^0.H]An1",T6:PM3lLJTX:c(V7B@8h_*str<3C[DcMR#DYYn.Y,VU2UTnCM2Kp(6is`_FDb1"eoL %8VQ/71]\[!5XhW=iXl@Ja5V(+ZA2iY.2&9Zm#?gp+c&sHT]/`BW;In9Z@uq6SLMIqSD8,=&!iGPKMiL!hLEH:B09V!K6E/J96@.>l$@(k=5b %Qj=;'84<,Ih5(`r'LdTgOJEM$&HE+m(/_q"8qiEr;VmRoJpeaQC;f.?`&K2q"?-g.d_I#U#c[a>#UQNG]mU.#r'*sqA_%$888">6nB31H78Yq!efu/c!JM6co"kHCFE8@gT?sRa3?sf$eKEl@I+Q0.0YYcA]n;dd2RILgRg?GWa!+8YcZ!9ah_P$93q4\c&.%mD-B %1<(J?4A#T1LkFaWs0m#$]lb;r&H2k2&$lij"VBMYa"e8I+97N,M1[c\66[*G+t6?GoCqk,l(0tb`ChHa04!q4krt0.3dh0-Y+-%B %bG)YreoeO>$hKUc_L6&fm4$_@-d5qQcAmS-RehQ'K,$^m<)d3JSh,t#nggX`[-KCQAUd`fmk-5G[R+fBEBIQOJ.tRO*HUq9PP%)_ %Ss6/5Qoh)gjQkS+B:mc&:nur^>cOEnka\[!@Lq>Mi=E.BC0"BgPE/SWNjmDn=o3/`+QETmSueb@d)\LnUS%7&"KmJFEI1t3OP6R5 %$fur!FQd!nAj;D3Z^6"K$`%]=bIt!MNds$Lnb$XIBFM/oXk\u %S/N\M)_'?ZWpK)IkEX;1<_rrMi_%@Chk*iC4Z`liYSd-kBKBm0cK$2S2I8a13t9_\?+s6uki`C]nsN;[N$[)B_"I4r&2&RlX2k)!W?0HBZ0"lDk\9>C %O&Z8(n8l3fXO'O%s[)nQ7_n&s$\;S_=%T3UWM(?BspNS*fBgR$8R[gge5bU?0'#!X]WVD=X*g?ah:25lin- %B_)P(Pm*t+Rtp>E0ao9u63qWXRI>E&UL09GeA\C[IGjK^,+'jX([*C"RH9r4`^V4Jrh.61h$aneKCe"ju8QV=AklC#?j% %<`F3]Y'M[^W2]DJgCJf2p@QPGVsX/hGJF0n@/&9nDmrnr2HYqn.[!"I,7UHd.`-U5C/Qj0d`3,dO2s;MC(8=:\9$\4m)\q('9K/d %iE4ZK#!%_n8s@%m6f[=Q5q_;)Ct5=9Ja"\*DMufe6c:t*$kU#(AW0/t))=LR'4\oq'M8(OppD_qTMh_-:dd706R6!NOEj9WO!kpW %e=P;Zn$!,G-]=abW&gRL$e`f./B)=h)Tg^-Hr8"6etO#GGrU<&S>kNk#%n8_3L:?;]eE&r@PNOJZQU>#7#`*)Cj$hl.o@/HYK7_1 %j'QUGCb!ka`&WnS+Is`lSs>c_m^-a0U]oX_&^E+."nONA.KIJ);?g_H$-6pO&9]]+eAH[6icPM>(4mu/"f8b4=Wim[.!89dQnafk %'6C%"dtlP<10PM:>+I%ENRZZEM/`N(LdLI;k7N(@@T(.Uf[Tc4P2`nlrqPu">[;.f*q-j+rqk[7p@Ve%?gbB"a,bF;lHi@BN58kK %Lkj6>mJRcT);;>_2[ADPma;:D0/V-:YPNlL&5qX?+n/9i=CQL7(u.Z(WD3mHEZZp*7$g5-TH7nm%>:8K%C&XTCt+L7*&?45MR>.u %WOHLi#0)=HbLdGF?+_HBX/<$rVR9]FA"ir8'8H_se5&%!5-TDi/S$A7pKrH&lG^.)JDqs\,rqClj7OmAcAO;gRpm.h=Jq?;1GeLs %(d@GA^"@H28AHr`1b"XmTup?Dqf?6^6-)M@+MH6NZC%L^E.9d22Fe\VfVH\imZCqQ1q("=lD9lfEt^W%E2oQEpA&u6h4..XUW'HA %qO?;Pgb5%8gJY<2$DLPTT((p9f5).C"0t%<&X8NZDpQ6T6r-XY8TBbi&HO\D;:"lOhI<2>SsjIRcU$V5?ckFd&Q9`Ieo[dPb/JD. %6[Fu?a>PQ@erfc967[lf)B.XLBMKRT-)pI-b0TE0UsIhn:8-t\WKfeflDLcZ@b6>CBJD7uW`>$K%uBu=V^R_6Xs:M9DN)'HGBoPK %-u/t8%@J96<2(+.;L<&Yo>;sYe\Qpqa`(AJRdc;t,*t=BPGBjLSc,mY %&BQ"'QeI=qHV,A^]BYtu@%UgElof.6%Uc:ItWo`UP`bDlF$.`*lZtg.A^#%uNYf-rLQCC,ki"6Y$3\^#]/qS%ZS:nY-'L\8k"L?UffX]tul]

    ,odjIgjZ[E3$B@agREfC@c>&D_ZAgqn?%-s`^Xf:Q43/\djA"6eC`&Ps>\%Jle)OJ=40X%*`ZHCH0;).L`g+;RP %Z;:MMTUAN549dg:*c>k.&>>LX5/8J9d;CG_!835^!Q8^i=[-N-c;qC^7/-"eo9Ar!78@9Tq#+3kMN2@ca)2Z//cF/9-h-_]2]eJ> %gKd.8DrGX.\HAYl15':!3YGl5d6[V4lull#==Va9Zc*Z*cq`-R8;:1FE;E26`]jEH"EZQO.gLMgu %5])a%pDTrP,cRTrcS2Xrs%=Nl])DJX,Vaqk1CV;Hg\^f` %AI9_PrivateDataEnd MM*}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}RR}}}}''}}}}}R}}}}}'}}}}}}}}}}}}}}}}}}}}}}'}}}}}R'}}}}'}}}}}}}}}'}}}}R}}}}'}}}}}'R}}}}'}}}}}}}}'}}}}}}R}R}R}R}R}R}R}R}R}R}R}R}R}}}}}R}}}}''}}}}}R}}}}R}}}}}}R}}}}R}}}}'R}}}}}}}}}'R}}}}}R}}}}R}}}R}}}}}}R}}}}}'}}}}'R}}}}}}}}'RR}}}}}}}R'R}}}}}}}}R}}}'}}}}}}}R}}}}}}}'}}}}RR'}}}}}R}R}R}R}R}}R}R}R}R}R}}'}}}}R''RR'}}RR'}}}}R}}}'}}'}}}}}'}R'RR'}}}}}R'}}'}}}}}}'}RRR}}}RRR}}}}}}}}}'}'}RRR}}}'RRR}}}}}R}R}R}R}R}R}R}R'}''''RRR}}}RRR}}}}}}}}RR'''RRR}}R'R}}R}}}}}'}RR'}}RR}}R}}}}}}}RR'}}}RRR}}}R}}}'''RR'}}}R}}R}}}RR'}}}}R}'R}}}R}R}'}}}}R}RR}RRRR}R}R}RR}}}}}R'''R}R}'}}}}RRRR}RR}}}R}}R'R}}}RRR'RR}}}}R}''}RR''}}R}}}R}}''R}}R}''}}}RR}R}R}R}}}R}''R}RRR}}}}R'}}R}}R}}}R}R}}}RRR'}}}RR}RRR}'}}}}}'}R}}}R}RRR'}}RR}RR}R}}'}}'}RR}}R}RR}}}RRRR}RR}R}}RR}}''}R}}R}RR}}}R}RRR}R}RR}R}R}R}R}R}}'}}'R}}'}R}RR}'}}R'RRR}R}}}}}'}}}}}R}RRR}}RR''R}R}}R}}'}}}}R}RR}'}}RRR}R}}R'}}R}}R}RR}}'}}}}RR}R}}''}}}}}}R}RRR''}}}'RR}R}}}'}}R}}R}RR''}}}}RR}}R}}R'}}'}}RR}RR}}}}'RRRR}}R}}RR}}}'}}}RR}RR}'}}}''RR}R}}'R}}}}'R}}R}RRR}}}R}RRR}R}}}R}}}R}}'R}R}RRR}}}RRRRR}RR}R}}}R}}}}R}RRR}}}RRR}R}}}RR}}}}}'R}RRR'}RRR}R}}R}}}R}}'}}}}RR}RRR'}}RRRR}R}}}R}}'}}}}R}RRR'}}RRRRRR}R}}}R}'}}}'}R}RRR'}}RRR}R}}}R}}R}}}'}R}RRR'}}R}'}R}R}}R}}}}}}}R}RRRR}}}R}}}}}}R}RRRR}}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}}}}}}'}}'}}'}}}R}}}}}'R}}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}'}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}}}''}}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}''}}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}}}R}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}}}R}R}R}R}}R}R}R}R}}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}'}}R}R}R}R}}}R}R}R}R}}R}R}R}R}RR}R}R}R}RR}R}R}R}RR}R}R}R}R}}R}R}R}R}R}R}R}R}R}}R}R}R}R}}}R}R}R}R}}R}R}R}R}}}'R}R}R}R}RR}R}R}R}R}R}R}R}R}}R}R}R}R}}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}RR}R}R}R}R}'}}}R}R}R}R}}}R}R}R}R}R}R}R}R}}}}R}R}R}RR}R}R}R}R}}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}}RR}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}}}}}}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}}}R}R}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}}''R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}}R}R}R}R}RR}R}R}R}RR}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}}R}R}R}}}R}R}R}R}R}}}}R}R}R}R}}}}}}}}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}}}''}}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}}R}R}R}R}R}}RR}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}}}}}R}R}R}R}}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}}}R}R}R}R}R}}RR}R}R}R}RR}R}R}R}RR}R}R}R}R}R}R}R}R}}R}R}R}R}R}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}'}}R}R}R}R}}}R}R}R}R}}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}'}}}''''}R'''}R''''}'R''}}''R'}''}}'''RR''}}''R}''}}'}'RRR''}'}'}R'R'}''''R'}R''''}'R'R'}'''}}''R'RR''''}'R''}R''}'R'R'}}RR'''R}}R'RRRR'''}}'}R''}''''R}}}R'RR}R''R'}R}'}R'}}R}RR''}}'}R}R}'RR'R}R}R}RRR''}}'}R}R}R}R}R}R}R}R''RR}'}R'R'R}R}RRR}'R}R'}R}R}R}R}R}R}R}R}R}R}'R'R'R'R'R'R'R'R}}'RR'R'''}}}}R}}333333333333333333333333333333333333333333333333333333333333333333333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff""""DDDDUUUUwwww333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff""""DDDDUUUUwwww33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff""""DDDDUUUUwwww8BIMPath0HUQQQHUQQQNN!WNiNNNDDiD!WDDDNNuCţ=D=D= = d*E``=Q=Q^QʹQ Q Q o oʹo^o=o=o=eh=eh^ehʹeh eh eh i iʹi^i=i=i  ^`   Z ZZ^`Z Z Z ˆ ˆ^`ˆˆ ˆ ˆ  ^`   ML ML.K }V ַ *}WwI!?r)pmc[0j_2iD3hIQ5g7ibf9T~f&:f4 d}m@c)AcDlcEbEbE_E_BA_?a<b9vcr6@,d,3Hf/g- <j")k&m#o r+w0K({  5 _ _   |%ﰓ2;u@#P ^Ku?m.*Fz}utL}~F#cB*А\r\O,j]ĪLmFڴﰓ {3@X.O⡋BHJ!֭D[%^jϭz|z|zzMͬRڂWsa†/`2݂r~|/xu5?nT[fN_X+qLQ#SP׺NL#KhI?VG3CC"@9 <[5I8.'jA7=pX` +!̈ ĺ   -[-[JP?f#ddddf#JP?-[-[BBERG&ԦISIK|G MT_P WR\TadWOfX> Y4XZp\=`Ia_aDcf?rhQk,*?l-pmYo7%"q/ t! yvx{VvJ}O.q0)||~r(|zYI|v@l|sd|r}[q*b;p{o"!n2lU>oyj+hQ܊gpff[!e7PeCc緩bEa94X%V.ҝnVeU*MPTX(ͦS vOR|OB|J|F|B|B|CЇ}CЇ}EGLJLJLJkLJkGlmWEHqCЇuCЇuCЇMLCЇMLE>HMM#:M#:M#'M#'G2E$:CЇZCЇZEj_Ej_G:j_Jj_LJj_LJj_LJ^PLJ^PJ^PG#^yfE_E_Kq,Kq,Q`,WO,]>,]>,]>!Tc]>!TcWO!TcQ`!TcKq!TcKq!TcKqQKqQP?KQU QYڳQYڳQYڳFYڳFVuFS[OF56Q`HUOkJotNaN2KqP" KqP" LJr,LJr,Lr,LDr,M#r,M#r,M#]MM#]MLD]ML]MLJ]MLJ]MM#:M#:N+P.Q#S6UWO[zWO[zWO\08WO\08SH\hvP]MM#]MM#]MWO<WO<Y<\b<^=<b[k<bNd*Ie<Kf}buZgOlgwjٶ ARk;V 8lYZ qfrdrts sgtL0t<wn<yȞ<|w<&<&<&&{3x v@l tKs!Qror(qapQ`o`Nl[k;Vj2g\fNe-e ~adsIc vag7`6@ ]d'[e^ WOrWOr WOoUWOoUYnZJm'[8l]k`kMaDkegjibzklZktj>k{"kdkdkd_d_`_c~}_a|~^|zp^%xq]Mu\uqQ|\08m[\08i֠\08fѱ[zbE[z^[z[\08WO\08WO\08WOWO[Te3lZtj>{"dddw"dw"|/xw"tw"m[w"jw"fmw"bEw"`w"^hw^K\9w"Zv\YluF:WOtLWOtLWO[zWO[zf![zt[zd[zd[zdodo|/xotom[ojofmobEo`o^h&\9oZ YlWOFWOFY9pY9pZP:`[G-b]>-bZV.wZ$0sY2YZY2YZYڳWYڳW]Wa3mWdWdWdBdBa3mB]BYڳBYڳB]>=]>=^=ξ_>aB?b%{?\xc?d?d?d!Tcd!TcbT!Tc_ɿ!Tc]>!Tc]>!Tcd/0d/0g9~*yyi,&,&,&!Tc&!Tcvd!Tcm0!Tcd!Tcd!Tcd?d?m0?vd?&?&?&3n&3nz3nvd3nrd3no3nm~3nk;V3nh33ngn3Pd2YZd2YZdQdQgQj>*QlZQoQr[JQtRBtRBtFtFsKG;FrTF4zq*bF4zpFJp<1Gox_FnGImrFlZFj>*FgFdFdFtW9ptW9pwu_W9pxkW{VvW~W~WtUUKK~:J-=}H{VvGy`eFw[#FtFtF deh>deh>fgpg\JhujNkvmrlnlv;|m~y={Hszmzmzzr,yqvmm4yj*ĪfS?Yekm&adJcGˡbqE_gd`qvd`qvS%S%h%%,%,%,H,HHhHSHSH,,S ,%#'#%8 @ @ w" w" w"&mw",w",w", , Qٕm#`l"w""w"""}6 cZiypm,h,h,RB,RB}" Sr r r m m m&mm,m,m,w,wwwBwBwBB5~q,i,i,,nr"""N"NrNnN,N,N,d,d+吱n5 x x Ծ  Ծ Ծ &mԾ ,Ծ ,Ծ BBcv""""cvBBBwBwtww w w 6 66t6B6B6 ~:& ~:&L Z Z Q QLJMn3Qn3Qn3w"n3w"sw"yw"'w"'w"'W'WN5]4</v.vȏ#UG5G5G5mG5mmm'm'm''IMd5} wn3Wn3Wn3Ծ n3Ծ sԾ yԾ 'Ծ 'Ծ 1*71*73lST 6 6 6@ 6@|]b 1*1*.-b.-b+-bs-b/-b/-b/`q/`qs`q+`q.`q.`q.eh.eh+ehseh/eh/eh/N/NsN+N.N.N/-b/-bpw=%=%== iI /I /I //;;;N;NNN/N/Nn3~:&n3~:&~:&A~:&;~:&;~:&;w";w"Aw"w"n3w"n3w"n3sn3ssAs;s;s;Ծ ;Ծ AԾ Ծ n3Ծ n3Ծ n3 yn3 ym@3m;x;x;;.Xnkn3܊n3܊G5QG5QhQQ;Q;Q;m;mmhmG5mG5mG5WG5Wy[Qwa;(k;(k;;jI} QG5:G5: 6 68:;;;';':'8' 6' 6' 6ML 6ML8ML:ML;ML;ML;Z;Z:Z8Z 6Z 6ZFm5/Fm5/Dn3npCqvmrS9u\vm5}Iw/Ļw8vm5 GuatXHs C@qt=pG7nDhh#Lfb"[z݇TNN=QGDP^A.i=N:7y3n3n0808I,})}gk)!T (r.aS0E7ٶ>+$DeKgYR%XA['_B2b%eu^ ijFkFkzzP&|||?|?&?P?z?z?zȯzȯPȯ&ȯ|ȯ|ȯ|W9|W9&W9PW9zW9zW9|f|f)fr(f}f}f}_}_r(_)_|_|_|Ə?|Ə?)Ə?r(Ə?}Ə?}Ə?}`q}`qr(`q)`q|`q|`q}n}n9@jMLML9Z}Z}Z`q`qf`q¯0`q`q`q¯0f?È2ЈЈЈfЈfÈ2f?fff8BIM Path i. S@SRI0Ylibhtmlparser-java-1.6.20060610/src/resources/logofiles/htmlparser_rgb_5inch.jpg0000644000175000017500000110360710057466410026436 0ustar tiagotiagoJFIF,,ExifMM*bj(1r2i,,Adobe Photoshop CS Macintosh2004:06:01 09:50:39Yz&(.SHHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$CkJJcvUu_iژ%x!˳h$u+9ճ;igMu+&\y$}SIM/u[ȺyeO5|K?jI)=kE{l1-]IQ$c]gb_}~E'.NǸk5et`ή/);I(UmwVjp{%STI%)$IJI$RITA7_M@ lבV>;6/}tInTt ~m0X5܌яOY~#浭hk@ 0x.n̸4o;cWM?eWCa)$MJIb}vėVЏjK=g;Gvc=qYk5[hgCg嫘0W:'I|eJcX`~O'wm\D,=[,vkƹSmuުgftps4@{ k{ߢj,%(Tn-ca:hh?\RuoXbՉ2>~ޣnm鎶}okڱy=Y9̗O-ٹw4znYMJ>7z8mnG\gR<\_$ ?r̋m_V?'OMȡOev@ݶk.vTť][ Yqܚ]w6ڞ9w^3\ߣf#>n1lFFRv1+&>#{/լq?.]!|[Xx%׽K]syxuU1[ ,nNj@xu{?+7?ƗIk*Nw/o_]Vumxs\ߤo]-O"}_#WF6ˮY:÷۷&cmkd6ʜ WUGO^cr]jeVuSTokV-Nﵮ<6!iowv틞-rܕ8tm2Z?=M9a;qQIhO'﮺~`ksI{0Nǃ,{gUϯlo?7~>ٛ]F!]dv,?>f8nK)cn;!)b{pEDhW#Z>e=x'cci>6;Ou_z:B'tFhw5|}' $InEy,pew?Gv?<?͟4Ƚ/ ?i?{g_AfSߟQi>-{oH.CoNևֆ5m.mC"zetP^OTC9ַ[Dv]nlw+oظ.[a^+ƸUPGѱ۽kj}O_aƣfujV3Q/e_x9xoŵu-uṯ8=o%e,{l^> F/v!.Wz(n@O8o*#{!#ʰCS9nb!h.#xlUKn1ʫXXݶTu$A 4GP+ZoSs 챞XT!۽!]}yg{mѿRN'axOE W,vk>bn_;Y;HsH%cж?ZG.BbL1/MKO;:ʶgڅ2}*s?l/XU{ǕqksTdUGt:InJֲ.>fc,'9Vi 7Wpy.^*7kSY?\~ga uPC)c\,u-J/zCmbj,wӲe[}?Zmkm[M~7u4ޔeŞRդIU+Fow:\ߙMkcw8Agt-e:H; X=㎥}W[n4< #.kq>sYk?b;0 ,&%cxsT,%d';(D@hZ.]]shm.GeeczvnVasnWz.!Cr'BoV~/R纏I7X7zZsM֎Nc.N""4}^m5tv/Fh~14oK\yrõUc6ݮ w;ӱz?YǓH~Ii-/Ҫ:_eBR :1n}_ od phjs}] edN]N9\e[/*Xh3 r:UƸOZ}=sx##C@@U=n?3f,2n#oYptc?y6=>Aq%w91sTI%)$IJI$RIq^75/?~ qG']5W;o6ZXB1J% :m^_>tc3S}Mt]U.b?~>о]a8mks gԥs;vYekqneGK$n'p{mSYR:9}jcwe}&UkvB'?UT&zV_&dI31.FI9vտ U-Ѵ3#Imy9=/5'uFw hc˽,W`5ikPA3R&PAs@̯5ֵ{_\鸕UHWYAikZ&Z\<[`ml!tFֆ6o՞fNC^- =k$Zm==x6~WC Y/S[c^Zb*smXxX6nppvC}KWO(>.&]nWS,74Xj[윏WE_}5gA  g)j_TI%)$IJI%zސt[t-ivK_kIY(UzC_[mзr5.oU~g+[_kD,y}'%]yY #'!։}X=ϱN^'U=oU [KO u?֡8YG]:H;њļ:לqz{?/3oK"ûwNϲA5e繎o$|3Ux/>ρC1'sFtGmZζzI&IlI$ TI%)$:+:c7 m?ӯ!$b,׿ wK5/ozLʫ#+!d>/g=IW^N^@c2Yc̝O,wrߩ?Ri4z8jZZdW9}?h}IOAffml9V'ZIfd,2YPRI$$I)I$JRI$I$$I)Tʩ$'~oۡ;̰;xc=;(8ݎkku۟^b_5?X|>\oY5Wlc+Euz3Y^UI3zW6?U$UIW^TU$TU$TU$TU$TU$TU$:Photoshop 3.08BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIM,,8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQzYhtmlparser pmsYznullboundsObjcRct1Top longLeftlongBtomlongzRghtlongYslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongzRghtlongYurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM o@SJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$CkJJcvUu_iژ%x!˳h$u+9ճ;igMu+&\y$}SIM/u[ȺyeO5|K?jI)=kE{l1-]IQ$c]gb_}~E'.NǸk5et`ή/);I(UmwVjp{%STI%)$IJI$RITA7_M@ lבV>;6/}tInTt ~m0X5܌яOY~#浭hk@ 0x.n̸4o;cWM?eWCa)$MJIb}vėVЏjK=g;Gvc=qYk5[hgCg嫘0W:'I|eJcX`~O'wm\D,=[,vkƹSmuުgftps4@{ k{ߢj,%(Tn-ca:hh?\RuoXbՉ2>~ޣnm鎶}okڱy=Y9̗O-ٹw4znYMJ>7z8mnG\gR<\_$ ?r̋m_V?'OMȡOev@ݶk.vTť][ Yqܚ]w6ڞ9w^3\ߣf#>n1lFFRv1+&>#{/լq?.]!|[Xx%׽K]syxuU1[ ,nNj@xu{?+7?ƗIk*Nw/o_]Vumxs\ߤo]-O"}_#WF6ˮY:÷۷&cmkd6ʜ WUGO^cr]jeVuSTokV-Nﵮ<6!iowv틞-rܕ8tm2Z?=M9a;qQIhO'﮺~`ksI{0Nǃ,{gUϯlo?7~>ٛ]F!]dv,?>f8nK)cn;!)b{pEDhW#Z>e=x'cci>6;Ou_z:B'tFhw5|}' $InEy,pew?Gv?<?͟4Ƚ/ ?i?{g_AfSߟQi>-{oH.CoNևֆ5m.mC"zetP^OTC9ַ[Dv]nlw+oظ.[a^+ƸUPGѱ۽kj}O_aƣfujV3Q/e_x9xoŵu-uṯ8=o%e,{l^> F/v!.Wz(n@O8o*#{!#ʰCS9nb!h.#xlUKn1ʫXXݶTu$A 4GP+ZoSs 챞XT!۽!]}yg{mѿRN'axOE W,vk>bn_;Y;HsH%cж?ZG.BbL1/MKO;:ʶgڅ2}*s?l/XU{ǕqksTdUGt:InJֲ.>fc,'9Vi 7Wpy.^*7kSY?\~ga uPC)c\,u-J/zCmbj,wӲe[}?Zmkm[M~7u4ޔeŞRդIU+Fow:\ߙMkcw8Agt-e:H; X=㎥}W[n4< #.kq>sYk?b;0 ,&%cxsT,%d';(D@hZ.]]shm.GeeczvnVasnWz.!Cr'BoV~/R纏I7X7zZsM֎Nc.N""4}^m5tv/Fh~14oK\yrõUc6ݮ w;ӱz?YǓH~Ii-/Ҫ:_eBR :1n}_ od phjs}] edN]N9\e[/*Xh3 r:UƸOZ}=sx##C@@U=n?3f,2n#oYptc?y6=>Aq%w91sTI%)$IJI$RIq^75/?~ qG']5W;o6ZXB1J% :m^_>tc3S}Mt]U.b?~>о]a8mks gԥs;vYekqneGK$n'p{mSYR:9}jcwe}&UkvB'?UT&zV_&dI31.FI9vտ U-Ѵ3#Imy9=/5'uFw hc˽,W`5ikPA3R&PAs@̯5ֵ{_\鸕UHWYAikZ&Z\<[`ml!tFֆ6o՞fNC^- =k$Zm==x6~WC Y/S[c^Zb*smXxX6nppvC}KWO(>.&]nWS,74Xj[윏WE_}5gA  g)j_TI%)$IJI%zސt[t-ivK_kIY(UzC_[mзr5.oU~g+[_kD,y}'%]yY #'!։}X=ϱN^'U=oU [KO u?֡8YG]:H;њļ:לqz{?/3oK"ûwNϲA5e繎o$|3Ux/>ρC1'sFtGmZζzI&IlI$ TI%)$:+:c7 m?ӯ!$b,׿ wK5/ozLʫ#+!d>/g=IW^N^@c2Yc̝O,wrߩ?Ri4z8jZZdW9}?h}IOAffml9V'ZIfd,2YPRI$$I)I$JRI$I$$I)Tʩ$'~oۡ;̰;xc=;(8ݎkku۟^b_5?X|>\oY5Wlc+Euz3Y^UI3zW6?U$UIW^TU$TU$TU$TU$TU$TU$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 1369 1146 1 300/1 300/1 2 2004-06-01T09:50:39-04:00 2004-06-01T09:50:39-04:00 2004-06-01T09:50:39-04:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:782e7c46-b543-11d8-8f03-eb6b4504ca4f image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@zY     u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽t=vk11XاHWfUIvzt_!Wzɛ@`pyEdEJO{.ුtѸyנk7:Ȼco RU_)>`5+S\Hv@?Wxog'ǧWGk_=Z/xKg%Fn3n B Zͭ?ǟwS ԧӠ!6Lv^Np@( 7qp/{wD<.5B E԰:1%H)gDkN>?T!G굋MVG!H:JXًtS… \l~u#OԻ{Иڋx6q]×1F@3 JËqWuMzTQwscZN4Eđ>@X5wE7PEO?~ά%pczZW[7-%72ܲ7+I5Ň#O">]XO0]8]*jp)܎ 0bZ3b 6"#:zt&aGvNuepz^\Vq&|WBOwvb͊gřdrtOOvǀ;yMp4zz!3~lٷyWGΝ{{j` dgRdOK(?#C|$պu{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^LʪYUPY $/>D2G;o,ED%džj @#p4DOEwu0@CvFR&Jeܢvh]3'Kct]Ez-[v̑DO zy7B>_o hkO N}rp}Tozm8Go4H=}{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u$A pG ^L];@6bnt0iQ mV0iAVC7:pI"'ywVz-iQ,,IYTXp/Oўh^#hہbNu~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uK5nB uMK`5DQWXxu@oϘ&xośl| idžR!?0o""'i#^w{ߺ\FTEgw` 3*I'ulOvޙ(d\;s*6ce'!4Kt2 GVd,Nm6kqX)i)Tζa<]qNi:ϱ٘\ly̑Β* Rg}'=\Z? Ղ!vZ]q{f?P,uu~6{>Kӂy3 YjZv劬tXVTSu':qiC&>dnUmE?iMľ˫ h}?JOhF?w5OWVI{y|p@.ͬ~a~ aם6޼i/8SISI䏩I[Tm<-\v&u[_߼Y?޷D?MB]3>ڿI^$i~?`n i_Hk)J O=kGM?z"͠WHFHȤ_=kGL~;u=<3;-hkҿ+eo ?-[^.nܚTkJZH7m xf$Sx{n$R?:i?s|]g3k<)7 =>2H='LTRezJlpoDyV:޻9dya![!ތ]rN܃-Sc #eUѭ]?oO-M:1;k@m6ΓpkT\G$]tTַħΝY%[;U4ۃͧѷ_spYo:}2~΋CICVm-Bz:SԪ {Z׺u{{^Dm:Ͳwoej*Fy z%hS2@OǟudGztx)=hm2P&i8T'Wg?RbENxLҤ<~Ώ]U"ݎ :|^z#b\ -i sqt:T [Nu~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^z8%ZjxY*%H $y%RTI${w6c}?k݉Z-6߆d%t)5S-ݲ&{ v_.쯸p4gبdj/#<0 $OϤq#|-$I$M!>1LAw=tZ˷Kg7^F?{atm_* }.*e : 44,Tꨣ$`u3޺^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽tvݴavqYKP!BֻGj8Vb{ W*i֊ 0Egz|& Gjuf7M„;8#29醵c>v~Qx-F̔7k6I) k {}nX;Z8MDv ym\ۜ#TST&:T20Tפ̌aNzu{{^rI :$ȍ$0 A>5]iG]]Jfy+cqEVh ('yQo`}.$LV'2z 6?)^p͡?ny]+7bIȪȌjGG^#G(뗿u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ETWk)h(i"ikj"jʢ(Vf{āퟝ;i}+K\{NQV5AP?݇ڴ"y^OzvC^X WE,RW֐!Cky'^̪*ƝUQEz<ywnPA[[kS57+q V٢ҏWIh.iS<حGӔun;'捵GQ /SȿfGgJӀр,>mt]^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^GώPQe1I㪠[GS=-J:) EO~tUb1[- ,;ZU_6=0@/o-ċ?oI6_}Q!x+΄ mYO>E*D}-i.Q0?˪.i7k9mcuPmX]!gyf䱷G<'/.z?n$f)maK5!mH%Pxb=Ds $=XZ|M겳2}J:?_=I ]ZZ 1XV7 ]4M 6: -"/}rI59H t]o{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺Do^؝C?{\>TdJ`+d)SNMϪ evCU4꬈+ G7dzsyli陭CO$c(\Itx8${O8z՝5ƒ|l䑣!>*]?/J^r%cJkGх:۪u~{ߺ^#;C 5xJ$ڙ%~@ZH )%dMFÁomI'^g8:sY*`puC"<&qqNX,RR6Xڊ) t|w &F?׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ_ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ@o뎘.TV !Pm,KEU/ -, Բ)Ď4#8RL\}:^U]8TvΐTʢܠ -aU!oQ] x^I;ɎӮ}M7S?^}x,3S};sbl**9GҐ=DףL>Ϫ"Y}|د+ard`i`d?{F:[i'Ѣ,>l]^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺ue1XN+3c+c0cTWPDy1Rԫ#e> >mkOk?";5UbI- }K|Ze1gzK6M% a^o׷%6R],!G-1kD="x?tM~{ߺ^Ѹo=Ɠmb1Yj/5 y-=G $b+ I>FJ#tqsqY I.GohF֭bR<-$,xY /h/TUOBǺt^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽tך.7,LTt4BEIH&{]emL}2o6Tdٶ2MJl}1D7S2~ΑKtOlw=T|KTdw횳]#z%]NBbu] ƙ%OXCR%5gD/}WKMo= Y[Ru͆zH:xIt;tj]V7`uo]vQʂlfN86/'h'P d\UOH SuN{{^ oo+z DymTu/p Az C YF|남)j }cJҧrc)jP#T1i=?خq .K[KWAMu DUTut򮨧:02dAL׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ_ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ߑ^,Hnɠc66d!6U)GNx>IAf1G!cȒ uU?.xSTi08t[;jYcLDBMSR4@1EpwL|#R AA4,6.q+:nk%bȱW\3ap?JU."DhG(DDAxOiU/~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^;{w*; a,UtnUIA"ce<{uTuZ6Ujs]JVTQV̿X禨 "ڠA# C}u~{ߺCJEU֚c&Gg'o,7'X/dp:{tEf |4 &ck8sx6Ws6Q*aԆ6Dўьrӡ}9׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~qwH8Vy$v5;'{QMSIff귤P5LmH²rJԲ74jR~[vǓn]p=rs 5Lo74JV/PA*%¨R;fs_zͫvSm`0q,1 w +3嘟hًKUUEPt׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~=yܸϳu%-3rct}EVKy" ō<nSUq$xoMH;oUާ,6 !n|];ꠉ.)wox COk$|FM2E'$54 &1$&8NEG'l^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ #hhXFXUxK"5R b=u_}En%{**vs-!:b6btX*#L^Kj<O.pm7&& JadiޚFԌ,Ȥ 0H*h=3{Z׺u?yθ4;?[tSQdIzՈY"ZvcҢM,=*kyA۹:<)dh&Y"cbUAWFV MF:w׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ_ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^S۝Dzgn6vVX ^96Խ]G G |P2WbjlfvT]R@ 4<=z3Uj8m^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~],-|=yx7omfI/|NHѼꐅX4P 'b:Dk|(!O!?zR;qd޽5MI< %`,h,~y v(:q9c:kzu{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{%ևutLy}^I*1toxΘf&EP~$7t|}:meV?#ISC_Ek)*}ֆhG<` Tyj"TQ:jr8٧Nklⶦ4cqq|KYVJjrIYW8 =L̒7Y,j$SՕBu{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{>NkxێPS\cJ,NĖ(ļeI`+FqӦe̓zr=ߋsmAX28ʢO-EX+(1VWFF#}۪~>mɜnY*FoRx#W]]IIbpQв:D<:%MG |7xW]ÁK%L@,käRJK%ܕhhgz4a*gu{{^׺u{{^׺u{{^׺u{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺUK~nNs/r onS2yw_|d[#a)4y}{rr)]/rrE(Ԓntr-suw*<6kw-Y/Fó[.sBerCÏ̐Q>#yWY|QwTu9O٭ݽwTnݕ)w7pZVUd a<Ѻ~Q[JQ x#bvKڈ*xime,SYݎY?{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{[Ckw~|&m3BM$0akEZiHQSLX2QhڣeZ>G-N=]rGwcڇ'B5=N؊l.%!dWE2GW]K[#inzuCwn 1;k%fIUGS*m閚#PsDWBTze 4Օ6z;i.VÏu呙񵲆UR=OIS6%ѽѤRV~c];׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~Rchw[*6^b>OuWgɵ7cEc5MM)*jh'WA[ 6㜽e;!,w'#[x(TM3,Rϩ91$iB;,Wi&4´,]Ղʔ&H*z?Ve7{74 WvӮzݙZ*bZEzܥnO'&whVYYEAƠ**IKUU(3Md-q$Ry\ԖbI4:V$řg{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߵ EЬm *ZQpERT dTur96bYV 7XnݔB-pCZ:9nԙ,uE jF UՕLёHv{ߺK޴};_uj:bf+%P Ȉ®Kutsj^Omv )XoJ0xVX $ D*X:I9EԽ ^u{{^׺u{{^׺u{{^׺ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uH?Ϋ/]YsA_$3X͟ӝuE޻hm5Vv;15k_->i2~8YYh|6Ijmv{Pr֭%ńQHgCɖD Z)@;M-6= P(5uTTScP#/K_~PfοZ]s;%Cwqn;+T9g/qa9ZEC/< hokmSLw #!1H(QCVko5LA`[5ldai q>N}{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~vڡMXknV\}KEVbGQmGΓiQKإ1|jXO?#ۏ+w>>lfkT+mU4@C*WC) 2V 5R׽t8t/v:CyÝWmuVM)ƫ@Z}M%4K# r$Z>];&m̓[6B7Gv:t fI#`8  'X0 8}~{ߺ^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^U7og7ƈ]9ѝwPPn(QVSe݌SXa-]f/8є\,׵>IFQ-ʤ1gC@,eNbv iԑJҥT1Dƭ9$ujp yɾҏɟ-w?Sm}Q:qt5ѭSS'5b6m6lTK/_&' 'N36Im2w|D0h G1i&}oqve?&?ɛ JyyjWZv-U(2TZSg_xԋ׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~qٶcL+6-Km$ Je%zLf#Tꏲx̆#]Qcxکkjhji*0O,G `L%EM 35y]]fkҋYU|g޿e<*_bRJX x`{'67]C?¶^7955LZZ3u.j͜G"o[m!' #DrS.n|'<- m<ýN,V5JƚUM9ioaL{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߘ_6wI w^"+ =RWĠDhD:DLi::Kqx?{_w^׽uk C?N*٬e;DdoK$="+=1)a\EC/>M_n>]X,׺u{{^׺u{{^׺uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~2Mɷvn M0]ɺ7F۸*27*j:*:h"$i$eE$?kks}sm42qww!UTff!UTIOTH፥I$$'u_RO^\_ =uSU)]LG ݪy3Yxl}) 0( =Ufw!N^_{ey;nqxdrkl$"đO h27oY[ բRI5@5Iv_>;f>8^޺ŀ?CYyjZʙgdi+'y~t̻;\ܶ$zU#ETETUQ8ZZ[X[%QTp$MI$I$'*O^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^Lb6MMV8XkJDr0Y֎v2uH.a|Ey{U>{C bk'1tY U!}X=E[Q|uv*l)N Ōظ$"B"K ZXIXII,3SˣXe|mt^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~hk gs-ߊgK?#׽Նx? wX~#,v:)r/'GlJ-2i.cϥmuit{^׺u{{^׺u{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^|Wo>||W뎪esq<Ŗfvx \mo[WP)dYZڪJD!'(iSuvW[E $8݂rܪ;mɸݒ#TTH@ jH#_2ѹsX\'cjyvLaml2׮Im2#I̭^B\uxy[kci-vҨyހ<D%x{q>`>!IΧ`Lh y*E{g yS:enL=pm++*eM:I 1^;?sw,JU$]JUMB1F[ kґEP5&q$^^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ@o;梁?[Kcu|먾_O5l̼WvOK?V~6Z[NjԭI. ?]+smh~ڶ;xHF׹ׯ\MqM"jP+.eaP*:1 #VM $Atu{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^|U݉-E#}!4Pjz;ݓ  mŭuTE{ߺRk1y,}Luzw1KYI0E]U=lpwG\c7<1,~>l4Jd*ЭL6T3EObcޞ^] +׺u{{^׺u{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^_3~m|۟ >/|kdW 6fYMݧRnUM'bj삻njJZxdX[zѾov6϶՟MPsA[Ө\JeDi5tmIi&FHVMId5CMN#7 5{#)Uvxw=uSd2=Q9H4[-w%ER6)Եs d~rLR2nPG YXaƲy+`mvY%Pm튼NJ&̽h * Z4}Ǭ׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u|=?O/?t=io8u{{^׺u{{^׺u{_' +ʯ>?׬OUm^.׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^|;a){av0[)wsrǮ흙?奣dr1PQS`=M~Rm_ S1DGg5y\ #3;)FGѨ&ORn3:jHE +ZŘ(:A(_߿z3?g[S>ߘO;{/2 TY孛W1ݵYKkLSZ&m/vLd?e%nQ0RhuRg~⮄]{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֗]3?y1G@-Q^׽u~{ߺ^׽u~{ߺ^׽u۞!~Uӽ'Z\*utޅ{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺUF[M[~:|fxVE0Ar0f i(|3t*yq}^Ыݛ_]'ZZ:!?GoV-/`̑-D!^nu7#C展Prtt :EE5D-WF >ʈ l"u{{^׺uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~iq 2yuWs Ψs?w0Y'YZW{y{EVZn\er/C"#+{boI%hhkOU 5gάws_ݮ fFdd⥭?20~|Pڗel}[FjKG &F@ٿyBQVs`E/Z٥cu?u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֗]3?y1G@-Q^׽u~{ߺ^׽u~{ߺ^׽u۞!~Uӽ'Z\*utޅ{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺPx :(IOWEY SSLꮌ{QֈPyewOvFwgT Ƥ%vs XxӐ%6$7 nez}ߦuolx~G:/VC{S?v*I6 ({Crmc=ZUxt_^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽tXg >-woKO [.9E('Y͍WAwpV04_su*)W{j .xPɠ:4!t]Qml۔¢%3 ZЁZs;Dvٮ.K?,-]hR)*j:*:hh`(aN{[LZ[.JEI$K33Yvgvgfc7ww7/yxI$5f&*UMNTUЋ{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u|=?O/?t=io8u{{^׺u{{^׺u{_' +ʯ>?׬OUm^.׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u>^Y7n*>rј >Cm-1*ȯ{xE[Oh}'5zP?+{0路{^Nūޛ/I YuraIYvhp$Tot5^nqyZ ::~J:V&?Utee?+ CѸ5L׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u*/z>̮׶3WoO6+?;K).K9*'BqtA߲{|j hg퐃FL.bf+y!=;VkUbB*Nk>ucvPR4vgWk25oܾ;''ݟw-mEP7@mͩyk\|6GտtnorbjhQ7=]?JҎ~rTC B;4un{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u|=?O/?t=io8u{{^׺u{{^׺u{_' +ʯ>?׬OUm^.׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u$ȋ$r+$GG]|s=QӴ[k0;Q>$d%bc~hYi,X#+Tr8zg{^ kQUL^-/KQ2,bj5- / эM'Gnu~{ߺ^׽uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^bg,ݿ(w/?+-[||Q}ԨVQ_#ן?Hc]U&.K}GRi¯,A~={QIz,׺3vi9 /0;p#W9<`cDMqǧ@|gF{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֐ż>?!ٻ{?%L^C+K4vkrk15RA.?;"Nԙ@m|O鴵s+ѵ0RO Ea%Qþ$l5|: 1 *h RÊ_>:F+5WtɊn, =YX7Fw 2bSܵ0Ql󫐁@f0SOswCmIf"Ȯ Zš.JjeһZJF APꨡqJnnc{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^KW.R^#O ֖󏨏{^׺u{{^׺u{{^׺uyPo|޿-zȮDVn:OpoB{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺$qKxF*A ,GuOԽQY2h#`}q1чOu~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺH=]uc/ternl5?mEMz`>Oc}SfmfH^I4ܟeIfb@=A-U5/uP~]׽t}v!cgӎ֪F4FQa_5A4q-MtM~+z9C:u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺZ©>_\|8;CoLV=Ci记|; f1?ŷx:u i[ 1LթYsHw.mkkmB_ƒc 팫2;Q%4+uX6۾v i?rIRt8:lnۺXWgwYxL ZʙbWXVvKaVy$v 31 31I Xi(1 $@$2O__6k=av%No(vEX|Dqk㦩qenw$Y*zI8s%7NzO$^C)XcvU@Qe{fj(bsPVڬrMI$Ku{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u|=?O/?t=io8u{{^׺u{{^׺u{_' +ʯ>?׬OUm^.׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^pۣyN/=d!6L3RbU ؎GT<ZomۻqۙLg᫄7>94gٲe <'e*OI{)6~ٛnncۙvf%z 4n1 A2>}YX]lu<ps >`AdR$Q}AEGNu{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ_,_G -M㬳Uu;o7wVݭΪwNxm*H[->cwR3մ1eVښJZi=I}۝.]WcxݘF#`0h݇X۳oӂ q :B*PYPr~Pak Vj>&aa0]<>~қ[+0u1S-$ \[vJ)Hyvnu[@ &#5ԋ+ b7(Epyi]}Yj<^0XPZ}'=׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u|=?O/?t=io8u{{^׺u{{^׺u{_' +ʯ>?׬OUm^.׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺Ot1nE i7m f;E$"؞WZTQ>ڮ~]7w_Mݪ˓9Z++ɮc')E=,CX}=ܮ+ѝꎞiQ׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~Vj]W?|wqZh򹽻%f/sdujz& m&"94z$gy&>offҮA ]dhv l%֥d+vmd2 H[1AY4!HH{Xk|~ۗtnOt96fpT㿇n7QjM'>&lѧ¹oN򠾻qhgx.GSO|Fѫ]Q4*@GOFuH{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֗]3?y1G@-Q^׽u~{ߺ^׽u~{ߺ^׽u۞!~Uӽ'Z\*utޅ{ߺ^׽u~j_ĺfu~_=-t?ij~͹c`5M\"R* F\%){1_MWQ1:Qm`dH\K)ˆjsg6n\E dVhRqJԢ(OV |ٟ/^5lWmIܿw c[#w[= x-=MVDk6s,bĕ%Z>ݓ6]L: !G^TbF:= u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{?KnE<&|&nC+Uas}*۰jt=S׽tw>oUmZU(w"Y̊ȕ~P9৹ZǫӥVM>\zu{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~i= 7]6Wc𹏓}C>nf+[LV⣡)_FOHdhcY2 ο*ƶ۷;2C> 2b2( N'Ĉ=Xm faABI)Ua:h΢n>mߊ:/~|-V3zhJjPḰ>MS-nH5UDU,5 |0FI VqqQStg.]&|o;[jtM]S^*kVJe:C+,еiOQ1s}{f}|mD*r(c$Z0bځAXѴIy.N( "ΠkQLT.U2 1}{f\+6Zv}Vڕ ))7&xol&Jjcb)TQSKQ x^V{cos32F@%k\ ,ct$/6E$#IFj8+?5?/^'egw_+CZ5?/^'߿m[wm]{_T}{p~/6-F_;{JP־U2 a2{yd\V+#7'Zv}.u*&~glV&:WaMKOHPuFI`Gfe'`B!I :T#jvj4ܾ`H8bV q:dUh:nuwg/kˣ1{iΟ!7 6\-]pwRE=#}Jأbqꗔ)ON5O ŕ{$z2 BV\LF9?"/:ql֟#oWǶ0;7n-]Ru{xRSk;ULy ͞;Z@{wKЁR63E.d(MB1yI {8#3ԁ5P+ժ~{ߺ^׽u~{ߺ^׽u~{ߺTo,/t5kW+ ޻<.?ؿ보9m~H)7-G[FTd+1EV R :~~sT|:[*a`nZۺ4,HP).mkp&j$O C84Eio?\{v{b><|2f1j]ۨwOl|VV9(r"Ik"V R;壂neUfܸ(bHg"7$hVF0ζv48jBJTWU2 1}{f\+6Zv}Vڕ ))7&xol&Jjcb)TQSKQ x^H{cos32F@%k\ ,ctI_0#v6k>m{Sqf65ɛ`7FSzfiXik0S4uH=e1Ulm"+tƶ3jE2Q  Hd`  V懇Vw{'|mLVxlMﭻWMI7'`SIYj ,DkT#buq5Hfk"dsM7i@tʳ2}ۦFnTV l#=44?>Fuj갹&gxK2;(wN*+䧆:ZYgIqǚnI4 eOT "\Ǯ $Hu 20{wenII:I(h+L*n=z4׺u{{^׺u{{^׺u{.?_OO/f~c;'K{?7Z[>>{{^׺u{{^׺u{{^ =BC%OzO@"U[_W= u{{^׺¯]3[G>og7u{%k*O{Wo _-{kbGcj|L.#N ﹞S;_9ž?v2jo o\C,$Heҩ* Nt޶m0QJ*Q֤' ~ M;j7o\ugOe|__Ϸc c1Բ{(0:kac?J<dPy1Ndarٯ}]]/ӽ#.HKxg8 +&HUz789׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^"Aֽ]ѧl]F,}^J*?r a`A&ց(4HWo>{/wD Um/5`>*dkfUS${.*| T5*<=Btjʷ20#AG Tu+ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~|ɺ>>QUr[K{}~+s >9m7XN Xir[s GU sNE-򬜕SY4Ry@Ia/{c1n+ow7AWr@("6A($pK܁/^׽u~{ߺ^?:ˎ{{^׺֓”4|]_,^pÅ=ݘJp\ﭯQUS+qu?a0BZzQC׹#wmȱ @Vd_$pȯDk5ԴI$HK̟G.SpfJ5&kk-:cd vVŸfkt2(YiH>F}rŒ1]2\\6+I#CH=ߘ7mM[-J( 1Sc tK׽u~{ߺ^׽u~{ߺ^՝o:cKG?~ gwIw檳UMןtd+}^9+(iADՙLN. 3?<}C^GqVs/#Ar J!Y6i4E4m9kDGŸNDǟQFePEm7У{^׺u{{^׺֓”4|]_,^pÅ=ݘJp\ﭯQUS+qu?a0BZzQC׹#wmȱ @Vd_$pȯDk5ԴI$HK̟G.SpfJ5&kk-:cd vVŸfkt2(YiH>F}rŒ1]2\\6+I#CH=ߘ7mM[-J( 1Sc tK׽u~{ߺ^׽u~{ߺ^G:)|9}KO?.Fq^_/wrsyYjTP㱟>E~r7u)o׾Ҩ޲HH8+>U:':꿰3ݥ=Vmr@UYldʚ:ϳd=s;kM0ʌxc&Dx̱&ϳnnVjR(HjRCcC߯{^׺u{{^׺u{{^KW.R^#O ֖󏨏{^׺u{{^׺u{{^׺uyPo|޿-zȮDVn:OpoB{{^׺u|xL.Ϻ;[Yh]Az_/Zʾ{{^ 7_p]1ގ}G~tq^oUY[B!|~_=qZxWOb\nȖ%,"ЏfcZK!hPS,Xeink{Wg>iUsr:{+/~~};A[[;RQl'?͍~Yw[# {*j~)m,6nw:Ev~_G#?ĴP]a2Bǡ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~U zh;C/ TP尬mi#I66G zVڶ ~}!LjE׽u{= _%n݂hV5 bi~u)[vc)힞׺ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽tDɺ_QU汻du~+s >\7XN Xc(3GUE-c@c_pZ+CFtWŮvn}E1y癧Q7'giչE>j !YtA.0sn?-{r:"RT Ρ呒4 m_ʱ cJEYeؿwz1KwK1ؔmQb/{5K]SESմ%# Kc`?|oތZ^SC 6Z)UeԬ"i&GEmXL {괄x68⚐hF .U[&u{{^׺u{{^׺u{{^mMųwxlkjnݩnM6VWGg\TE-U<,R+![ki,cYY$::8*+)* zrI ,LU$A A'(Gzm?Gͳ72YLlrc%-&#-=Kb1uci3sIj5Im\ЪX̯\QRfҲh1ȥX(}7R_^׽u~Y߫7vwfV\fZe ̔AMHVT7CusAGGS {̻\ܶJU $BU#EgvTV`/Gbǀ$*I IgW]_SD/j_v/9Z;1yϿpovȦ SVKS[޾4Ohܿ뺟 adfZ,rhTeA\{q@j;ȥ`:t#~{ߺ^׽u~{ߺ^׽u~{ߺ^ПOdgIl]v]fဖW,/ISi-5ee4䱵MI]I4uOK<йV<˴ϱo-ͥ7TA2 ^7UteuV m.l.RrFj8A:'(՟vN试x-.C-8^]OS*::vudte>G/6^lo5=v1R; -g"$ JUPU(K²v}ʈn@ZdwAjB3op>#em>?6r\SxT yЊM+;@R&} }4WNgϮY8?> i⚚)$TLn6crq.eK4$T*CI$,c ]vG5TS*ƃSP `(UZ#E׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~} ?/eܙ>uu3)Cg(qQ-5O[R,&i*2 INc{^0l-eDf2 cX28T1uK<ɜ#ex)uԐ;dP@׌+@e$Loqs׽tX_诃]A_ݗ|xV+=v ]O4AG5L`AEuuE&:W|-.YDp4TTг1XWulk&m(eQ 1 2/K2z~szpPPm܌ٝ)UݕIWPSN8Q;?i[;M%޼j'B-4[Pd1(;5U[!miUQ5=nJ CfGBMIG'>O.gY& ;;2FXe 2&RZtmT˥0r߀]ϗOTj>TCdwrum`RykLxG[ywܹ.Ok*\EE Ygdm>SAL{G1ԒhUQV[{n-??{Kuq[kɷs10o$ՔUQKUO+,NF̌ Ż[,chf$ԣ*2*A:9Yb`AEA`2={c~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺXj)૧%i!qt ,N?) ^\l񻶄mŖ#i^Je$!lCzL륊tnѤoݤ"ev[9*&uRٸ]Qz~ٴ>xi׽uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^`?Lm=in>;]P,o JMS-`I*3rooC4055HQ$2)[VTT Iwӗ] fLSZSwѿ {)g.뛰n?c{]~i_kb뛰n?c{]~i_kb뛰n?c{]~i_kb뛰n?c{]~i_kb뛰n?c{]~i_kb뛰n?c % g]]7v?gɰrnn.t? [ʘꤧU3G 1NX;nhl`EInK6U,UHP̠UJlonⲊ)Lꀕҧ4˭WCν{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ϑk]v_Ql gCyi2x:xnk5QEVx]))iy˼۹vrܽ.Fb3ydd5=$`7WH<ҦGb,izg1ݫ񓢺z:[ۚ)Ȟ?Ƴ>M62hsYdثm}`ո [ S7R/B MUS:^o~%۬F$54jZ 5fIA^c?4׺u{{^׺u{O(?ӇK|Keǽ}s2?anCYWNFܻ_ :S}%E:ST/Q켻[;XܥQCF Io2:մ2|}*`U]M)JPZ&u{{^׺u{gʿ}Yg|/\uV+mn,vc5KbhzܮZK%]E=$RβRR$1qsyWvndm)b"VGv hC9 DhUNUn{c&vH!SARI 1T Tcʻ֣;b||W뎪esq<Ŗfvx \mo[WP)dYZڪJD&9GwnvKNV›*"(Ui$wlƎ3FTsm7Dq I=YMI|_U޵ݗ_:[>9fX#)[jhOHRc1{c/]gNjrپ!MSHdws.`t\J=m'D֨)WL9UFdͅW**+M XTс] >W׽u~{ߺ^׽u~iq z3s?_kD~Xzq~{ߺ^׽u~{ߺ^׽u~{ߺ_NO/W _y/};BYȟ'WI ]׽u~{ߺ^ϛoR޻9@k}K9˨3/C<W%XyWu׽u~{ߺ^׽u~{ߺ^ľk|5ߐӬ0ٍ׮oɐװ~<ԑbq"ƮAiU$Nmyt76m]U*xs.cufljpSJ uv)Zc ©:{~}3ri V}=YW=s)p>:xpؚOO=Y0㟾ߪ˯cV壊f~&IXUEQٽʴq-@Z?ruƕ*I'@j잺ݟ>/!|]4U?m[MSGQ᝼s$Oi#em{zno-tѼR&²VVA#* .ںȍZ2e444 hA)׺u{{^׺u{{^׺u{{^׺u{{^׺ϝ{Dm|(6۸2(28 ȀU XɒمV:zt[tj:MϵFڍF3m.EVc0t>lMSe5=e,55TT̗,%EH":9?uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ֱ_woLutyWҬ ?пn^|9׽u~{ߺ^׽ttKG.ůX/`os+/^K_\^P~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽t˹7&ٻw?7 6w&+CۻondfRH颖T(vVQLʑƊ]܅TEPYUPI$ =RI#6V $TN$ֱ?_sqf/N=fFهš ;!nK Y19Wc9H>~-2/9dFd;ub`gVkt%HZfQ$6AVsi!4tE?/=K~Pn39UGG1x>Wכn-XS}M_\FÔ"鬠-$gefrK瞁{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ[.l}|p>o? p7;`afRgy[^'T55 .ؤV#>\->l8c/40RJVTRq=г/od ⠳"Ԗ`jг0pݻOxtyYʚV%\ˍ,՛Yi0tI<2qdz^m>&YJ**yD PsO4Εvџӏ̞ޘ.GZk)׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uG%o;vc o ߇`0k>soN^_&}K4 kǩs]Mdr }f=n:u{{^׺u{.?_OO/f~c;'K{?7Z[>>{{^׺u{{^׺u{{^ =BC%OzO@"U[_W= u{{^׺¯]3[G>og7u{%k*u{{^׺u{{^׺u{=w_«|^Y'w|W7$5;er1)jO HYT)͜\d,9+Һ GVFo d+4ZhtB>m-S63DOe[ JjMF59q?_Nߟc>|u ܯ?z7OVi/\n6&lkj&FL*FXhٯdߧo-IF-|8Q|g9or';~ ]qE'_>K_ L~u8Lnɼ:}юJZ-ʼn5,jZ)!y 9mrސIgJ#vS#b4ʝCe`//7wL.@K{S(H u{n-??{Kuq[kɷs10o$ՔUQKUO+,NF̌ խ͍̖W3B̒FQЕdu`YXe` e4rG4k,LX  FA#lu~{{^׺u{.?_OO/f~c;'K{?7Z[>>{{^׺u{{^׺u{{^ =BC%OzO@"U[_W= u{{^׺¯]3[G>og7u{%k*u{{^׺u{{^׺u{{^׺0>X|t|oN霝VkjgtwewxWl;^q;J]$TT, DNOnoNg@"cVxĠ,)B{dpUX0eR{'T,@bR.NBA'>©?o+S`Ӛw6‡k{muMW-5E(GI5RnWo<݁8>O>RG?;uSW ?2%]42>ߘg9Ksm,岹J]J\md`%zlo(Մ*554aX* d}+׺u{{^׺u{{^׺u{{^׺~Qm(0`q]MSzSS~} ig]Q0gTϢ{)ҕXpe3@uS桓YO{/+SXz;>ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ֱ_woLutyWҬ ?пn^|9׽u~{ߺ^׽ttKG.ůX/`os+/^K_\^P~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~9>4|̯j|.ԧ MTl`}Ojis5%HRP-TuyJ!$4&61,$XAn1q(R.r(R$BJmnmpJF"E,j@>KZUB1RT9ޫ|JTsGp/M_v]Y})iR<,&TQK=!uغʚI?+rޅ#x]5"3\4m](U9Q]arVc0ӸZA#) G(zu{{^goJKK{\O;[YhHzoo_A|s׺u{{^׺uo\wEGҝ'CX s;?.⣡߽Y3%W ܕ8,n)IV)k)$,[ A#h&%A@Xg+.50h˵g9VPtё0@vЀthA{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u)=Wnߎyqe2}J,YRmY[O\tOP*W,~\+zVRY؃1e QO UfEG@GC&ۇ.DI % R@j@$Z7}c׽u~{ߺ^׽u+er}du?aKyG׽u~{ߺ^׽u~{ߺ^׽u~}:<翈__(wU}_ hdW"ʫk7]'7w^׽u~{ߺ_>oUKKzc{,[.s\b}_Q^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽t4ظڻӨ3?35<Uڋ5M_ST<(tF4#.YmgK8mDKd|QJ$HGSX Z'jiQPhÃ) UX4=mI[0޸>^ڛ~kw1'8xq#]koo-1Gr?I<6Or}?A?ҊL̇V.?򗮱v_n ffi:=ݘn5OEQ*顐<[lg-TJPoX#6xI(3ԣce@.%YP *U`W t4#_^׽u~{ߺ^׽u~{ߺ^׽u~Br܆*uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ֱ_woLutyWҬ ?пn^|9׽u~{ߺ^׽ttKG.ůX/`os+/^K_\^P~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uj]6ǝL_+yTniٷ41%V>{W[z\{G{2K/mL|OyM$,07&x;]w'{g@P UM q>^;?a80xrOS[STtiQĖ5Qҽk6k$v{x-"51v҈WS31bI=@Ou)GjU1$@!N^t^׽u~{ߺ[;P?][؟*}EEK;Ⱥ S^׽u~{ߺ^׽u+s|F-[k8oٟ_lm/s? ks瘼ZUViX>N#O]M {uM<8WiJbkS]\3.׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{˿#CMfxld^U[v]ýP>&I2HJ0Q9.69cX`]L4%rDƢGP#tHziFg]3*fFXS\n:u{{^׺u|=?O/?t=io8u{{^׺u{{^׺u{_' +ʯ>?׬OUm^.׺u{{^Xv.Cv]FΖo tucYĶgE,=#1Nj]^v4{r2[J-nZDLP7HFIɯQ:r:V. 5.W`X*hߟb亟7UoNϼTc?boʹj,[ sSSTܿͻbykib$_)BEIPq1}a{mohy0EH FRT {<^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~-z{oN{ כ9.|W>sV}MMGuA,=㑔ܶy}xJkhXK]Hᕴ F\Ok(7ZѕPH?#N5 ;3\=s1[_fw _μ^y*&bi?˶ʊjgn~lo.wˏ[[cMP $mbđA/f* C/Y?a:TSàg.Ogo۲w Vc7̦C䆋p`\VA1{-SI++aW6r?65 lz.G%)2  fZ[m#62a$ Jh]& tc׽u~{ߺ^׽u~{ߺ^׽u~P'o?Is8]M㺑ůTElA!5OL⒰=鮎3Y7"5E%e&aA$GO( !=Ьu=*4_я_ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ֱ_woLutyWҬ ?пn^|9׽u~{ߺ^׽ttKG.ůX/`os+/^K_\^P~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u+er}du?aKyG׽u~{ߺ^׽u%%ˮ},[ޤ_l7\Ͼq9~{ߺ^׽u~{ߺ_4Ra mlޝa7Nseo l\<}Ͷ禭*: Y"{#)Cm{fdnoݴѤ+ieVQ=n+aQCB"~FmUkI;vgώN{i>3OPb=_xTM mBuFUb[cWC-r($zze=tkߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ֱ_woLutyWҬ ?пn^|9׽u~{ߺ^׽ttKG.ůX/`os+/^K_\^P~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u+er}du?aKyG׽u~{ߺ^׽u%%ˮ},[ޤ_l7\Ͼq9~{ߺ^׽u~{ߺ_$/GowckX`MWG^׽u~{ߺ^׽u~{ߺ^׽t[~5nbo][qgk0 &.9jk+k*e'Y]cYյ,0¬HgvbUTfb@^8E%,@I$I' 'ovlBazcio|,Ytv^;Zn׬lmmCq퍗jJ,iLAW9[_Mh𭠕̄8F1M"j2Ƈ@Llau!5&*⺤uE*5(- '4TF@b_/>_k(;ލ?~[IZ_ʧ|2/[?[e~^>{{^׺u{{^׺u{{^ =BC%OzO@"U[_W= u{{^׺u{{^׺{V׎z ge1{>m:*y_~Yj=AWLXe|俼,0_Cw!V;;mnȺ- 1%#$!lnV:`G(5pGhJMjҁ ?v,wm>ɆUFm}qSQErW3SRe* |;{urb{&cOԶ ]/hgXE_q =K;G0m;zC5*c=.S` .Հǣ?{^׺u{{^׺-:pFmՇQ (kh^&x[?:Ex>X~tr_;ge%3J\(h AT#zf),U_ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~RϏWf|ل/gvk1q_{_>m}k'; wUߩr_xv4\]qڭijO'vdn;:l6u2 (t̋Pt|&+1.ٝG6-7Kl-w#+l}Ȥe3Psk䣗%TXJI#){[n2CRgg8P fZ3E|ٹs,3cQZ"Yqm-JT =mUu{{^XUt|oc{ʿ_} ׺u{{^׺:_s%#K,7y/F%//_[|q(zu{{^׺u{{^׺u{{^׺u{{^׺t˲g9>?Կ׺#׺u{{^׺ooR>SNp-R/_^yEg8u{{^׺u{{ߺ^׽u~{ߺ^׽u~{ߺ^ո*޿xn9;￳Ztb^]kqdzRyjpGj*zURs~_%On(bIlcFY4D(ʄ4Ri"*PP&R*5RTTjn\R ?ůUy񟯿__WaNr/gg6 0tY繲" QWˎQB59nm#s]˚n|_ X$PD$/3F%-'cv( tzuSSVr*gHX7F{ߺ^֠w^]ڛjaa~{n{nVwHlT{%H'PDeqfwx r.ky=]w5rYf=&ܝ2lC[E(ºPFQTxh>zu{{^׺u{{^׺u{{^׺up.e]OOO{wfc;1E$b9a|J-&:%=;oŞ]Kml*UL+y^(=6 a[^Z$"eXZ ".}+0N:}vbR'>oV7;>KIIde7^swQW`]-!.+(u)!2%qDYdͯaEUk#PhXEP$t{׽u~jw<=YڛwAc^>Y](`vA&XjH-]&w$1c*2yjW'm6ܥϮַ%ӏJH&y&,^IQHiQb#.kKkrDBL* 9PEHvӅ%iB{ߺ^׽u~{ߺ^׽u~{ߺ^׽t4m^D'~w?zſyѦm[_{_mg?_. G/]|ӯxԺէR5 ץ}}_">Һ5+CJҕMeg^׽u~{ߺ^֗]3?y1G@-Q^׽u~{ߺ^׽u~{ߺ^׽u۞!~Uӽ'Z\*utޅ{ߺ^׽u~{ߺ^׽u~{ߺ^>۲G;iavpSL0iZ ,mNf)K+]TonDz[TҒc- FE#RT]ߗ=;A J0![RjS֤?1* +>^0fsu`RzvqQQV{drkn*Z ~B]Z#%UCcO9˞,l}* % gFhh$Iw?B*-}E1rXZmɎw_]n*Y]Sa7%LRTX&XN*}cf/`XIo4s pCebSJuugwe 'Z0WA0kn{{^׺u{{^׺u{{^׺u{{^mMųwxlkjnݩnM6VWGg\TE-U<,R+![ki,cYY$::8*+)* zrI ,LU$A Aœ>Ro>_a?٬ZoQߑ;SMm ?a} ['W1D}߸unR/r?t^6^G>#GmT%$v-MLxI@ QZP:j0Y,.+'KvKNݭMnܵJlnAlܽ%gMnK}UexmK>"zGm.OV#˳j_8 ЍB QK ȵAiq|ٟ/^5cb#|WmIܿw 㼴[#Uw[?o>!qK}UV"mc"zIsOe#zuCxq*Gꭥ#joG(.-O]s>lg"e%睿]}}ϯ{^׺u_ۻzgK7ʾdeuoarΠν{{^׺u{?_?t-{{NטYho^{^>r7]ގڣo}A;~w q"8om3TOf[B&|g^A_qxVm_[cn&x*%wy歗c]˪Qi?P ke+jwoW#hj_:>.+x$Zn* LWmF?J|d=_,JSXMLh~ܓH.9}՘j>BU]cy',L0N(U[Čwrk)D5$(E lFH5"!><>N M_B(ikr1O[1v&U*ɒz"X`v8Mjv;f,qzA%׍"Qf$/u\w [AT= NxZPVPv?}n*-}ϻqZm_b* G]SQf]eLTQTUGJYTmwNk'_>B}_?|ܿ5ܿw'L?uj{.}vmO+YVFĦգFMS^mK=^ U+xWOqZR2µ75Ԙ eVk1=w`dWa[uvRtjWG|nq%%@hj2_sf+P!P_{tCj YIupXw [ 5hI `xnNP{'ʿ2z~4vvz5rfT=v'q`fX ɵE-[ZOW.N e^yp㚹G9'v;45U},U#I#gE$,:dFQ(۝l.EEAqOB 0A&o{ߺ^׽t_>[v_&gar[>>w?lm|v䦮۵%0YL]MLRĕQ+DYc'!I=0vհ^,7ז2$$lP ĩe` *c;Ԗ[e@)ZXVTfyOĿ-w_v9틨kswͿ̟WK|}߿@S?kl]{swͿ̟cO>CftA6Ix{py|_?osy<+{e-{Sfx4xPJͫViJwf? 4uiW^SR|zOrAν{{^׺u{??s-ћg7^}a|;0;a۹ׅuT?5ZթR$r=["ygdxq7gg[kvG,`$R2 (5 l[/ݵ풣3!B1,YMjΔ: ϙ[_c{?@S?kl] 7~|[zĿ-w_m;sֿ׿7~|[zĿ-w_m;sֿ׿7~|[zU2o}ѝ6ڟ7_lc=O;X.{>xn3Q56v)S*B2I G(_6sy4^Gnq$. ;xVX$|0noez*Lࢸ5(ʵzC&$u~Gn[|nwy\K;J` Vۯu{ߺ^׽u~{ߺ^׽u~{ߺFÎ_9u^+55Fcwa!7VSe7lnJjm1ST #%JoK!}\ͻ 6brbBT(X#<qMi޷-#SPQ@Gs~-tWU|y|ó[/ 0j<S12ݛGfZ1Tպ &o|nb/9xmw7BWQ5%HYFGY3aceDG qc@f5f4bOCO>~{ߺ^׽u)p#p<:6ɭQ{m6~{ \fs&JZ77<,F'$JZ~}սΗ6Y=ݍnv9i2idr~(d8voVK( %* fl0f-W\u~{ߺ^׽u~{ߺ^׽u~{ߺ^Ϡ/zWǞ03Vb]ٹty |.jsh<}5M[GŶr/s&-i^6kdS,8XXϹ^aj*QƂXEY ջÎ!񣭾9u^+ >wa&Wvi)7lnJjܕHӉ#%TKh(i!۷E~r7u)o׾Ҩ޲HH8+>U:+Ϲcp?߽f3 U岟xW~Ui٭?Km wx{X#Đ0WR[.DL ~.>ͤSU:qWB.{{^ }ˍmdOIs;/ А^4˦.Ea?ꋽtW׽us_Pvіߺ^׽u~{ߺ^׽u~{ߺ^׽u~k{Wm>Tmẃr{~}G?A[E6;'.S\'?~qٚ\{-*(衾,^(o<핊\G>hA&m'Aj=n˰czcrXY0~:cuw59\6mw{)n<OӃ i$ŚCw#};Zڶ)3AE8Q,^:`%tw=xA dP@l0:,*[Av=S^׽u%%ˮ},[ޤ_l7\Ͼq9~{ߺ^ֱ_woLutyWҬ ?пn^|9׽u~{ߺ^׽ttKG.ůX/`os+/^K_\^{rmݛsxgSimL.Wrnѹ28- Lo?$)j*%HIQIx6iR8K 33 $'H፥I$$'uOW*ˇ=:`G<^ħEEyYh<61dXbIp%_ opeNҐ7J-;vZP&Ry]׽u~{ߺ^׽u~O*A6:Nٮz\.cmɛRas9mc`7&؜=\t:⊮%JJisW(;m'cE,)WC$lFԔgW۝r. REE UB2H/ݺdx^WXZZj%BE=%,5bXbiusGIv Œȼ/_ LMYY;{f[Žqn.>QID]G_ z 督ϑ이mf#Op+FUQ(*o iMeJ`T" ;1+M=Ro^׽u~{ߺ^o8۽p[a>oئSCK]&ZE=E<jN[nQSXY)xf);}c[`Ug{ȭpHv~B4Kk@K+(*Ck.^E! J?^ |Zr>R3~{ߺ^׽u~{ߺ^׽u~{ߺ^ż>@|[Wl?%?U vkmcA.?;PUImCO껺A+ѴZ`DO'va%2vQKmK$|:G 1  ( wx׽u~{ߺ^׽tQz|dgƊL-VOz=2nLOi7GPLSj,E48|Tp,@MKW M(jyl,tit*; w(%< *0+ݶLBԐ%sEp Fȣezž{{^׺u{{^׺u{{^׺GYq׽u~{ߺ^׽u+er}du?aKyG׽u~{ߺ^׽u~{ߺ^׽u~}:<翈__(wU}_ hdW"ʫk7]'7w^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽t˹6[w? vCۻnhd&R9i()'XY͍wR43BȌQІWFRYXVR ARH6U  AP#||Y۳1vGXΞcqAcu͑x!7|oߖb.n˺;oKG2; leI/ោf*(%QPȣ| ۲^nL bݍ W3mb;EbedF`颞92SNxmmWMcvͦ8/BBcUdgy$+/X F+3}M/. NB-KTk)׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ_H/Mo%zwqn]wmnN; >cwL<'IOQ$)c}yg_X-v+(,aDq5E5GT0Dj ]ݚpiY&e ƭJ5 $00={ߺ@Ⱥէ [DzUUV6Sk7xnOG>܈EznaX_Ofu~Nߺ^׽u~{ߺ^׽u~{ߺ^־_9G~)錏9}O7.:^_/qi?tSc>EAs7u1oҨ⎊ޱȲ6.Xxc9i>AVz/Z϶dvOI+?ÆO Ke^g}RxW99~@Mi-Jsv6H{%hČ(#WQ[TLG *"T0ͤM:OrAν{{^׺uvĻ?uϼTӵ?{ԋvu>>{{^׺+n].O*UQ׹AzϗG::u{{^׺u ɷvoxgSimO&+Cۻon໏ SQQE-EUUDQ#I#*) -핔m4mשhUDUUU@Ѧ$pVrUgH"I8 pV~:[S~Buo v q|X*o-厩XhLQmUJYK\~?{=̋62 K$qF6Vu$L0KO8s܆SRwk%zu~{ߺ^׽u~{ߺ^׽ta>*|? KUi{Uy\${{nsZ6#G#eq5ʩ)*)v 9ܫ-ݨVJdDGPDt,~ٸ76 "5Az2   |T7՟2~>u~UujjH&laU[_tm.F4ekRRTTRK, -U]#S/wnIKVF :0eY#tlF+Hdٸn16 Az E 0~}.׺%̏/϶{vE$_$/}u{{^׺u{{^׺u{{^׺ooR>SNp-R/_^yEg8uo5n{{dv_ <*^ׯ{^׺u{{^׺u{{^ZݗuKu_~cqj%n><|ƷdTPOS%]R >z/o9nȭ+{s4Ʋ,, VdE@t)ݻ] Q[ j$I=aNzu{{^׺u{{ߺ^׽u~{ߺ^׽u~{ߺ^׽u Em{.76cfQ/?alMGEQ[Uw_5BKFdkx1Z-e5D2`3iP j C,~P "K)c@K*@[oG^׽u~{ߺ^׽u(cgjm-_mp[wmqqxL *j:*:h"$XUEvW۫o+i۬IDK33I$I'[#(*$`tW׽u~{ߺ^׽u~{ߺ^׽u~}㬸׺u{{^׺t˲g9>?Կ׺#׺u{{^׺u{{^׺u_s/;*_w ^+?UzNл{^׺u{{^׺u{{^׺u{{^׺u{{^>r( ﳽ՟~ڬoϝA>;a o"9nKc0ZOf')>LgK'e^Aok_Kg=^ZVy"$ ewy]|ŦSY?B kV+=jC7gRqޏnژ:o9ϳ\f e2ve:֊%11x[o:G񴯋Rr9Һ;mnf 1%d$o~V:ڏ*tGqJVhַ݇݋[1םwXo?=[[sclH)i抦 9RȬrwm67-+i+XdIc},QVhMr@ 絔t*XTTT Hkg{^׺u{{^׺u{{^׺u{%]7}O*US_AzξS{^ Tz˱q?7MGߨժ-dÃUP\fu~{ߺ_ߺ^׽u~{ߺ^׽t˹7&ٻw?7 6w&+CۻondfRH颖T(vVQLʑƊ]܅TEPYUPI$ =RI#6V $TN$־_1K;pSXo& Kduf2mn*,NR|tlՔU*Y-FRSVGrOo>e'-*;Fe mVV̖|+4` {X)K"n-UYTH 8AM/Ws_k>0PA}='{<-.jٖyQI\e۝7x+-|AU!앢o/0_]D5o[R]1$xP[6]4=ʽ:u{{^׺u{(.-O]s>lg"e%睿]}}ϯ{^׺u_ۻzgK7ʾdeuoarΠν{{^׺u{{^׺u{{^׺u{{^׺u{(1i_}ѕm.wTǕ%rԇ km\KverlMUQ%U}LXcF3ZҮDKڣ@2+ITLͳHF*@:ցJ5+#$ {nN{[ݿ=K~RaO+gaiQtQAyuB{{^׺u{{^׺u{{^׺u{(.-O]s>lg"e%睿]}}ϯ{^]Tln.XS%_ Zj뱻wI:jݷ-%LZmJ"4F!Y2Wn~ كw v1ڐRJw20 Tui K~\'Z5I8P^׽u~{ߺ^׽u~{ߺFOSW7nkLu>=A{?7[SVSE[5dK%E$,ZHe@Q\(Mcgsq% ȡ²Re$Vz_{JHY M**_`|[*zu{{^׺u{{^ݽOw7n%zcS۩۵]^*u2KSG+QIV^l;ŷ0v[}7$Ѭ+2 0V` hgP[)H- +BQTJTO.f&׺u{{^׺u{{^׺u}mכ?`?^a6^͍!+8kj~ڊ~ⲦYӮY$#no7r4E]rJݴU]LT(eZ )4USRhIiOu~{ߺ^׽u~{ߺ_.כ???̽=鲻S'{{;19%_5tAM4 }dnW$R i H#Si嘖8ΐEmq4ItWcf&h((:sAn{{^׺u{{^׺u{{^e^׽u~{ߺ^֗]3?y1G@-Q^׽u~{ߺ^׽u~{ߺ^׽u۞!~Uӽ'Z\*utޅ{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽tXQ|0Ogo=%w Rc7̦?1vۚp`\V=2t{+MW- O9M)e#XB9(ᡗ@x1t=n[Fۻ!ܡY@\2kWIjSCRׅٸjI=5.qUmݩC\T1fmTVn:SX7K{ag%N[ Fŷ3$,RUV#}5y<]`)4PKPAڡYIIu/)~o ]򇤷Qf~ZN짙i5!\>x.y7iMa Y#: -f7)"xRn[FJ!ܡh\`UWI4&bzu{{^׺u{{^׺u{%]7}O*US_AzξS{^rWsTrh 7j#}$֛=kMߢ^{{^ߺ^׽u~{ߺLrmݛsxgSimL.Wrnѹ28- Lo?$)j*%HIQI\eeM4̩hUDUUU@$8cie`II$2IkIky gmP~~nvڙo8?h\ 2b2ʿ-U)=so1x[:Iʹ@!ޚ> mhκ-42$ ~m:ڇ*5pOpJ j֚_5??̏ۊ\gv>jL[jtɚF}qMQ[bwePU*$ul"%bdԹms7pWhF/ ,!=Dۿ0n䚷 K-j#ZQ@b6ӂǢ%@藯{^׺u{{^׺u{?';oqU|MT,}˶{ Utw_q켦esqirTlE,ҬPI RS~Vd(Mc,Gmr:uF5v2 b dlcSX& $)׽u~{ߺZ¯ݽ3{U?_ҲoJ:7H0BչzPg^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^Ѹn̏%TΪW{Gw=Yg=nWkWf1MQNK: U$L@pV>vϕ){bΈ[;upΑ2:d[iݭH8-@ (pY Bj9]|j):uo#v-K7;s<^EG0ym c{{^׺u{{^׺u{{^׺uvĻ?uϼTӵ?{ԋvu>>{bWޙ*Y7Yu{$ܽ|}s3{^׺u{{^׺u{UH]O{,5A~G)TIbgO.F3ES۔T(%JG8&#xomY!#EܱFSc h)eeHck8$J5i8,:V׾Ju]{ߺ^׽u~{ߺ^׽uBd/_)g};vJE^/^Dq%=u~{ߺ^׽u~{ߺ^׽u~ywwnjaR﯎5vRdwFmޘ_]fpcpTPK=i)0Q<2[|VoxW{Lnx*@T<2W,eI Im7x{F&3R )SR)+^ ?gŠNf' ܕ=4Y-v]-(qռ3n>*)j&cO^shu;* [#H9v!m䘨x;/ݹG}ؙ2F>$UtXr]T*zrA{{^׺u{{^׺u_wosv'޹?<VCiWN~oo[:N^{.*?Nןpv7+6m36c+>oA#-n]>Ϻ6s,KxTy" ֌bC*RKBQ&c }LWڞ1%YGĈ3iUō*I9)ymn:Hbf4Ȥ RxFwSo#v-K7;s<^EG0ym c{{^׺u{{^׺u{{^׺uvĻ?uϼTӵ?{ԋvu>>{bWޙ*Y7Yu{$ܽ|}s3{^׺u{{^׺u{>!~^߼9m?>סw"k7̝}:򫬊׺u{{^׺u{#|K;ӵVX,]b0zz&-9裯{^׺u{{^׺u{{^-x]/_^ӵV_,}o}Ǭ׺u{{^׺u{(k (_o9m>uZY[9t׺u{{^׺u{{^׺uq\u~{ߺ^׽u~iq z3s?_kD~Xzq~{ߺ^׽u~{ߺ^׽u~{ߺ_NO/W _y/};BYȟ'WI ]׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ݽ1лvxwnLm,jmGlo[vqVP)0YWGM-luuҤV U)5nZ`eR2LU.V5f K@YEjGI-,ʐ4PBiV Vq=jIg~N{>3OoF=_2x۞S͙mm<5T(ϖ\H޷ 7~?'E-Ⱥ׉27Udoケö5)BZi|-[w>>uݻ5sYwSvͺn=אm[Is5%:I7-^K9W¹ cŽ3w[n ky!QU'葤bF+@D0,P!-ĀMno{pY$"* ocR{MLi{#^׽u~{ߺ^׽u~}(Os{yV?үz n.uH{ߺ^ֱ:$׺?OWhc]c<3ߺH잺->/6|쭟-1$Ts[SMGO|Iy$U+ݯsoSm廹"7GҥJ fm*ƀA'Zguf`*h*ITӭU~r©:{ariVٝ=GFWssJy8R~;gV٣h~T"9@#fF\b5}ʴpV?pvƥ5@#XPo=>d|ɮ/3WUHNW<~,mCUA%D2Uc0K+TUM+®y䍚 uQ{G-&@J X {'{ra\_j{k /Lχlg__ܖ&pPfrԆ9ji(9)o54;}90vd.RFEZx*ե UeZLJЁ*;)? {^׽u~{ߺ^׽uW*?]w7_U+&.s/[/uu~{ߺ^׽u~{ߺ^/_O7̏wiv_𴛓k6nrmObeV")S}y'f٬m)$17 N5$,0eB}7m5hT3  4rMC6$}.Soqݴ\T7/NmMPo+MTTfWKO,2VU:n̏emYjs#tȷ1+Zu0Dj%vj cPM2@11SǪC 8=wS y:<~퍟\n*OC6mbU؜y#⣒ UR5dXb#iϜvFTY.m3 VsnȒG!%*LP#ܽ7kI:hH*r$T u{f, ݻS5{kLUv qmłgH⩣ZzZXFEWRc[_[G{e" ʯete%YYHee$A]$rC#E*e$AhA AS{^׺u{{^׺uyPo|޿-zȮDVn:OpoB}כ?zu?a;^!>9i抦x~⎦)ծ)#+^{nvͤ[D8tm.[K(4e*iBLAk8Ԓ++ U`A"N?O_PmdKޟ=٥rYg^y?{^,?헯Q9WQbG_MOSن773'7_1^'8eWݓܞu >т-/xE^|Z5bڶOR qϗZʾ{{^׺u{|5wf?.Io|b}{M]yd!yjZh̉&?ߙ wSK/ÊZ.WLȢ BAr.ӷ;~",,jeTc=n%@'/(6_I{G4^o'*/Uu=!~Cٷ%Oz[:?|߿_ial{ʿUfʿovމFp켏^f3?7s2]rQ+q8*e|ZAȮvݱ6~l>9VeO*HT0Ƌ#+P19kd٧7[l>'\H$QqՃ{:=׺+n].O*UQ׹AzϗG::u{{^׺u{{^׺OO/W Ӗ޿zr'Vwӯ*Ȯ{{^׺u{{^׺!2?x]/;^^e/soc:u{{^׺u{{^׺u| ;^aeѿ/zz!z{{^׺u{{^׺†//l}UӖ/^{m՘sA{{^׺u{{^׺u{{^e^׽u~{ߺ^֗]3?y1G@-Q^׽u~{ߺ^׽u~{ߺ^׽u۞!~Uӽ'Z\*utޅ{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߖKO| 5Mپ{"z-#.'!Kr\j֦/jROמ[r-q %R(C.3G  MXM QFAN,5СOi:?*%vWkL/[*.okw ;ڻ7hM׻_$s[ȶM/[2*SRҢKBmcKk+}=1Ev,M"xҬ5xUF[21fF#\SԁB T֚HS~|_폐ݫ;w3QVnO]hZz܅l<=56>IM gOYRg8DJST#|RU<3Awc{su+J͍h*MpU*[Hu{{^׺u{{^׺u_wosv'޹?<VCiWN~oo[:N^{{^Xgu~X_4\^zYбN}>sܩ{6gOQ~\l&oiᪧ1F|Fi|Yh?/|ߩoE.Hّr ;$~3&M|::ӳ4.CݻӷsX? ,U3g_7^mh c'Mµ5~jҶj##YS7QřM.#5bh:w-rnS4ppҢ+ SS_E{ߺ^׽u~{ߺ^׽tζ^~};?67^ml8_gmS[ST5RJ6`r6͚-+KhYHMLu;U̪*EX2GOAo=Ԣ TiEU,ƂM$z%o/a6/]:ceh?[^>֚lOl _.=|Pwz2>3f~+q?Ũ;sn!^q:{,߿M63EhHeD0! 'hoj"k){.̫P.D`JN8i\(~{ߺ^׽u~{ߺ^׽uW*?]w7_U+&.s/[/uu~{ߺ^׽u~{ߺ[;t]|辈ޘ}: :۝Ot{޶\.עυ%n|<3UTPeqUةs{(9?$w &YƱ%cNYeQ*Qdy }p]PU u JIrUYOg8u{NNˣ7w̿ظ,.ΧuVMzsfzmϕQPGLCMA-\ KKu_s7k.dOm k řTtV±pR cI+CN{[KbwT,АTQPIҀhiB{ߺ^׽u~{ߺ^wOw7W%j'нO'PCY?yVi*gj%L]?Կ׺#׺u{{^׺ooR>SNp-R/_^yEg8u{{^׺u_ۻzgK7ʾdeuoarΠν{{^׺u{{^׺uo{{{~_巯^܉+U2uʮ+{^׺u{{^׺uH_̏%K/,{aNחYahu%7D碎{{^׺u{{^׺u{?_?t-{{NטYho^{^׺u{{^׺ub|'? 'U~_מj_f>oG{^׺u{{^׺u{{^׺GYq׽u~{ߺ^׽u+er}du?aKyG׽u~{ߺ^׽u~{ߺ^׽u~}:<翈__(wU}_ hdW"ʫk7]'7w^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uR/a[7}_K+ӽ~e!ln(%X|-!Ofz8fNKxݾlݷSP)(X`6fW*y`oTc[WV +)8Tu \"+z/έsx 0]~qߴt;nbr滧tcb!Ul^߫Z$3;~~ri?0ޮՕͪ(([hܫ+)E.dI aQ1f~,(g d"R1H|&[qg^yrekrn,tL?I-MemeLUUTJ+3;r:;+(aUHE" I$4fbI$I&rI9$䞙=:u{{^׺u{{^׺u{{^5 @v7.b|ʱd?{fquTE׺WPt5nKO5C[S,YV q~k)NIQ#I,Yv҈}I&{[cyW=k=cգq~{{^׺u{{^׺3~|*7ޝx?h?h/!~{rME_+ :oTB/ⲍ9-$dV@Kȅ4 X;Zݣr0qpHƊiAS ?w)w|vSn7xCU;rx3Y.G j~G*~{ߺ^׽u~{ߺ_AJt|o\U+!ާ?l77[}R/^׽u~iq z3s?_kD~Xzq~{ߺ^׽u~l @w7)obxkcK8//M<W"3}N}{ߺ^׽u~{ߺT .{w;Le3x .c's]6~G+WmMUgg]\o% lS%U+$IYULXQ2`WH%vx2#,kx,6r7nnw"yqGQ(Lf Nܹg{^׺u{{^׺u{{^׺u{{^׺ P?ݽ؟z8Y^9e$硿]l:zu۶趦欌!zMA%e* qUok[ߢnreB Ovp!nb`GU<N}ՍVAW:OG=գq~{{^׺u{Uq?gzUNYu[ ܔYݻn]-貑$0Um>V(Zj֥G{mȱn7utmm \N7T$ 82ĕ$TW6; 2%%TpiT@k 0 ;(q;_6Lc!f09s9jhk3]CZԕx)^!Pq?zv[c+BGI<{$Hv5J1B$aJG[M6큨hP@XbM Wvۻ7n6~avژ\V_mp[wm x&54QSđE,q1Kify$v.K31,K31$I$1Q(UP0`u{{^׺u{{^׺u{{^׺+n].O*UQ׹AzϗG::u{{^׺uA'Ȟ?G8wOVOK4;3 h~ hխHz^zxO.z[N:uim5Jto,uhDJ[*+J֕}S׺u{{^b?^׽u~{ߺ^׽uۻ{K?ϾqXҲJsH3Cո*u"~{ߺ^֗]3?y1G@-Q^׽u~{ߺ^xs'.{v?oz}r.>׽u~{ߺ^׽uKs?;'mӲ_]tUn^{ߺ^׽u~{ߺ^׽u~]'' +o_ i V_Vd]dW^׽u~{ߺ^׽u~|K._Y}/ҲbK׿7\noE{ߺ^׽u~{ߺ^׽u~{ߺGKnľ|Z?0Ҳeߗe={=e^׽u~{ߺ^׽u~|?C_O@Oli]c=u6}R߹ˠ^׽u~{ߺ^׽u~{ߺ^׽uÎ{^׺u{{^KW.R^#O ֖󏨏{^׺u{{^׺u{{^׺uyPo|޿-zȮDVn:OpoB{{^׺u{{^׺u{{^׺u{[>FtWŮvn}E1y癧Q7'giչE>j !YtA.0sn?-{r:"RT Ρ呒4 m_ʱ cJEYU_ rf!E6ϮcwԹ\/6߃5pEQ\B)MOW<@|~V^U т$)"EH.#*1#Mأfgħ $$)!DbT&z|]WS_gg25ܑ윮yYXS}C҇kbRJdaVVyd09WIrdU5N2=̚KBTP;1; I4@@ADSJ(&Re_^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽tζ^~};?67^ml8_gmS[ST5RJ6`r6͚-+KhYHMLu;U̪*EX2GOAo=Ԣ TiEU,ƂM$zګ%ow?6an}52K㨇 *j?%o}.?ƮVHmKPd_EW_d[6'!C/\aOt-Snocꮸf7$LU^k1]YLrnU]ּqGUX)hd,#nNvݎ7mwtUSSP8#A%(.!ݘ;vc M1`ARIkbs)Aj9)jB6\rsskg]$R#4rE4rFQj/VFNDUU)Z_?KDPⰝSyY K{fNr*N.|/t|lTtTtc곹--XDs֧>9-H]U\:bB"33XK&U35m>lI VBI R@(,d^$z7mMxlu-ׅnM6V;w&ǔg\VQVSKE-U<:20'nnlndd7R#+AsV *#F_{^׺u{{^׺u{{^׺u{{^XUt|oc{ʿ_} ׺u{{^׺:_s%#K,7y/F%//_[|q(zu{{^׺{?X׽u~{ߺ^׽u~}(Os{yV?үz n.uH{ߺ^׽u+er}du?aKyG׽u~{ߺ^׽u%%ˮ},[ޤ_l7\Ͼq9~{ߺ^׽u~?慶[;{ܘ_ 7%6;?Pn-=Rdc4ehڥQ--]<02MnW6~r4Nw4,TtD%H%d7^ q" MUPAdu\~{^׺u{{^׺u{>!~^߼9m?>סw"k7̝}:򫬊׺u{{^׺u{#|K;ӵVX,]b0zz&-9裯{^׺u{{^׺u{{^-x]/_^ӵV_,}o}Ǭ׺u{{^׺u{(k (_o9m>uZY[9t׺u{{^׺u{{^׺uq\u~{ߺ^׽u~iq z3s?_kD~Xzq~{ߺ^׽u~{ߺ^׽u~{ߺ_NO/W _y/};BYȟ'WI ]׽u~{ߺ^׽u~{ߺ^׽u~{ߺU=_ӿ\{jgݍod6|m<VQGBUdiG/^aJmȺZ+@AY<6'\pQDLQ"yeٕuֿjCIR2}+VjwWhr?Ra~:ck77ovV;O%hfvNG6ݭd"1VA5$u$ѹol/y7ҤBr$V_ǙUZ'ChkdFW1e{}p-!n*{ڎTi!HЄC FaObvlop?{t7 ےzڟN8"$qvfMg:(Sm(Uu33V$o=RvY I4wL~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺCOAs_=U;wo3 QQ6hZz܅5M6>̏WS gW>bn_-d*5u0F},QEF8e8s䢴x*EYQ\+}ÿ>y uWk>_єXD8l'ط'TMKQ.{}oc q5rEl?nNZ$mr*s"I<} '|K x߆l{_Qar~:Z̞gf1_ߞܓV K&3N젙<4b\*xy-]X㪢 -b4/xST+mF۴DaaXLdYQ4aNzu{{^;_7FV&ڒUW/M|ֿ}G>݄VU}P>z6 1%mUiԸ,F˿Ѐ .GҋaYʽ]գq~{{^׺u{{^|d#u%OƏX\crIqYuf[qgLruJzᎫ'Xh& o5{{<Ni r+&EDDrITA AW`M6vX$i$12T@F@؟?X?qe6}?=n-CoiqY JnO>kag-Yܹ܄EV{m׼NڪHUc%%"y^Pj[RaWH^2FIPK`X(SV!݉SZ gE|ol|y]ۻ'pٙ||frvwf*[Sd()~dJhd:}71r0r?2Yer:%R;&"%7J; %nP VT>jkC@hÊUX >W׽u~{ߺ^׽u~{ߺ^׽u~{ߺZ¯ݽ3{U?_ҲoJ:7H0BչzPg^׽u~{ߺ^[/_`k?Yz7/YD?qzYC׽u~{ߺ^q~{{^׺u{{^5 @v7.b|ʱd?{fquTE׺u{.?_OO/f~c;'K{?7Z[>>{{^׺u{(.-O]s>lg"e%睿]}}ϯ{^׺u{{^%|vテtӇKvP{?]??~~>6-Z72xAsχGJץӧVZ4I7 _V7MT5ZҢiQ_Qgj.{{^׺u{{^׺uo{{{~_巯^܉+U2uʮ+{^׺u{{^׺uH_̏%K/,{aNחYahu%7D碎{{^׺u{{^׺u{?_?t-{{NטYho^{^׺u{{^׺ub|'? 'U~_מj_f>oG{^׺u{{^׺u{{^׺GYq׽u~{ߺ^׽u+er}du?aKyG׽u~{ߺ^׽u~{ߺ^׽u~}:<翈__(wU}_ hdW"ʫk7]'7w^׽u~{ߺ^׽u~{ߺ^ /?;vXh~WG &GkMɀu櫡ʮ|w.Z9lTY8iH)cȔWS gW>bn_-d*5u0F},QEF8e8s䢴x*EYQ\+O j錯=gpB]ݿ%ەqM'ϩCdd>g)=em_ze}6fc)GmٕVUX(k󙊚gixo\۹̗ܽFX.Ϣ5b3HT5J66[l%T @f%2OCO>~{ߺ^׽u~1ArR sYPJ]YsW_7!oO<K~VQuH>z,¿oq;J!$fHkK ^nh>Y~][O=/ՠo_ >R,IoNd+sy=e݇߰+L|OO2UjCD>x.y7iMa Y#: -f7)"xR;ѹmw(Z"xW*aUjjM Eد޽{{^׺u{{^׺Zd/Qo ?a>ޝa7Nseo l\<}Ͷ禭*: Y"{#)Cm{fdnoݴѤ+ieVQ=n+aQCB"~FlI2Wl덗`AܝT}aޫSxCtExn[NJ&T **S>E5$Kܜ2Ӷ2`nc$ 3Kq .V,{k:p,Dj鶕 +;o@i~p &^JX:7|i3ܘ(z?4uo4RMmKK['0=Bot(d1#`4G755ĥCjMyU)[ %B#AiY5. `㎏zu{{^׺u{{^׺u_ۻzgK7ʾdeuoarΠν{{^׺u{?_?t-{{NטYho^{^׺u{{ߺ^׽u~{ߺ^kno].>cJ*/ = Vg_xԋ׽u~{ߺZ\¾?v_'vOQo}D}{ߺ^׽u~{ߺ[;P?][؟*}EEK;Ⱥ S^׽u~{ߺ^׽u%テ{tP{?M]??>]:۵|Y9kn/ h.|=Z?$F+N:WH:=oկU)] ViZT {<^׽u~{ߺ^׽u~]'' +o_ i V_Vd]dW^׽u~{ߺ^׽u~|K._Y}/ҲbK׿7\noE{ߺ^׽u~{ߺ^׽u~{ߺGKnľ|Z?0Ҳeߗe={=e^׽u~{ߺ^׽u~|?C_O@Oli]c=u6}R߹ˠ^׽u~{ߺ^׽u~{ߺ^׽uÎ{^׺u{{^KW.R^#O ֖󏨏{^׺u{{^׺u{{^׺uyPo|޿-zȮDVn:OpoB{{^׺u{{^}]Ee8=Ų`_76䞚kjiӯyc/$v۵{m=w2WDPTiD ͥU($ XNҬEMI uOTľ۲>.ad7&wuWLl%$mE9u}>* Ea㥫\oo8"~yvTj4h\6x"WC"$ l{GhSs!b#RCq)*)֤?1WϏT9]nfyX[1uՐw kNTq킓xVKظާ[ӷwO0?ṋ QC_Tcu0u{#.fRxKȬ\SgRUQHDcX^S[W>J+AP*ǂ$Umd0>oڛ=~kw حxq]k___Ir96Om~OCFҚ^GUj;t}迫l^xKqa[5iqHlCĥBkQ7'v=X?+{rmg u-ׅѵ&*;w&ɋ3LrVQVSK-=U-DO;G"1[lhf 2 @ :4mXAF8#i>|c-w S7n/ۯ9Sg9ݝmQޞ|F'Iڽ'zm mH{ٮj4W_sLfW`۽TQiMN11<8R@UE"zKqKҨIönM].qhirTj.̭r:Z]*8sqmzLTw1#-**FE@d%RW#wcNU6R0 HVrTtD~{ߺ^׽u~{ߺ^׽u{??D?kSjeSԸ_%WawL7;?{}q53)IG Οvl)t^IӶ0D hOU,)2R4ڹۙVi>!dPI|zPb|8/?ح.kgcap ?Vd7v91[[rbR% _۲Z:*7J80o{DŨfikUe8bDBCŹ0v6?BhK :h/ᖨ/x߯{^׺u{{^׺u_ۻzgK7ʾdeuoarΠν{{^׺u{?_?t-{{NטYho^{^׺u{{ߺ^׽u~{ߺ^kno].>cJ*/ = Vg_xԋ׽u~{ߺZ\¾?v_'vOQo}D}{ߺ^׽u~{ߺ[;P?][؟*}EEK;Ⱥ S^׽u~{ߺ^׽usA_ͭoلQ{_/}xio\޿{Kx^lujѳZkxi٫FӨW62^CUd/ZSP%_:VU9׽u~{ߺ^׽u~{ߺWI |By/rB}BDnՙ:uWY׽u~{ߺ^׽u~{ߺ_$/GowckX`MWG^׽u~{ߺ^׽u~{ߺ^[/_`k?Yz7/YD?qzYC׽u~{ߺ^׽u~{ߺ_1OPP謹vr/E}X]ͯTr#׽u~{ߺ^׽u~{ߺ^׽u~}㬸׺u{{^׺t˲g9>?Կ׺#׺u{{^׺u{{^׺u_s/;*_w ^+?UzNл{^׺u{ů>|ݗX\r'7w1|65;q(&Z 0iTW|ͼzl9N[Uv_g+ ZntJ&rݢ!62 **MBA54SݗhL0C_t;vqmJWW]d\fo7iRnTBRQ܋q/tFY 6-ĉ\ #x*Q3l$fI@vZ Ej dg[Q|KOxR=۽;w5UQ6~^?uۆo,V={<+SW-+e)?)r5;zk( I%|Y28OV(Vr-Q63JG W*(]"@59[׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺF{4V[ӷsX-3g3aI dc'MԞj0S9㔹_eVQt%(it}+Sі۴n[4® VM5R(*q+}=yS uWtlΞ_ыݹ%<˾Α]+%h<4B+4Y.G߷{mҚ?Կ׺#׺u{{^׺?M?ln.k=_XZg}utu>+M]=v7n,M[天8k[-tIUDFZ+3Q<}{mك\FQjCI+)S!դ2۩-8'IZɌ8N{Y׽u~{ߺ^׽u~|RyW/nMߌ]Y}[C)Y۹1 劓F:y3S5D^{[%xaQ6 rߤ* or aY#2Œ9`ΕQAA$o@{{^׺u{{^׺OO/W Ӗ޿zr'Vwӯ*Ȯ{{^׺u{{^׺!2?x]/;^^e/soc:u{{^׺u{{^׺u| ;^aeѿ/zz!z{{^׺u{{^׺†//l}UӖ/^{m՘sA{{^׺u{{^׺u{{^e^׽u~{ߺ^֗]3?y1G@-Q^׽u~{ߺ^׽u~{ߺ^׽u۞!~Uӽ'Z\*utޅ{ߺ^׽u~|W.-]tvl=?οr^}G]{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽tg.0KOxUlo%;w56~^C1䚋o,VA12t{<-MI+99K6_e@rZI(ȭBA hwҵ=mFaaiHL*kQ"n'kwώN{>0PewF=__m۞S͆R mm<Ե(\޷ V>ZW+'6-F׉+{o!ö4B:[Uu[uQl?^u>}a66ell̯}ঢښʏ Y%{#1mtܷndfEYJ4PIP[k4ZUBRI?3^^׽u~{ߺ^׽u~{ߺ^׽u~RgLwR8q6ji[q:\HlaHmѬH hii8!Y\GhXI3h`bOlmJ`(,tt b}z9QBtߺ^׽u~{ߺZ||Y۳1vGXΞcqAcu͑x#7|oߖb.n˺;oKG2 leI/ោf*(%QKWsgh3POߝ=g)2{n<.ىIGlz9m6߅x _} ׺u{{^׺:_s%#K,7y/F%//_[|q(zu{{^׺{?X׽u~{ߺ^׽u~}(Os{yV?үz n.uH{ߺ^׽u+er}du?aKyG׽u~{ߺ^׽t4s޽U_7QoL6y3xʁWiof> j>r~SSH#7..kؚ'B˨vȚKi'*$Dp*_ښ_^Vt3nm!yHi"ĒݨJJ.^dO{l%t%`I6q;?ڛw?2;#c6+maML\ ulk-.7EQWU)X)gH)kGח1EyYQK(/$Ơ瑕UAF5($Tc@+RYp=TɿT~{?~ qX[yc.eHWD+'fÀHOG[G/v-hd=Vc@`JӐU>>uv+x|ȼ'u?VcwfݭdTT4*|bRBJ9᫒ 8o2nq#ٮؚ NLl2x"ʎ.$nFvm,mKn b@:AR<3A6ζ뮢~}`m67^ml?I_gmMEM555?O4ˢNw뵿=ָF/YPmY+!{ +i Gl쯣n{ߺ^׽u~{ߺ^׽u_N_}:cɧmT} 쯋F7=d f:*O~]mlIG;~|lf+r.WF컣qQxC ˹[AFbh)Y ^[?_R^茺v^σϛzg6Sn.plTy ԴSSܗ׶\,6[}M_BA"-o$SP$)y;$$gZNHê32*8Ђj?[{^׺u{{^׺uvĻ?uϼTӵ?{ԋvu>>{{^׺+n].O*UQ׹AzϗG::u{{^׺u| ;^aeѿ/zz!z{{^׺u.#~{ߺ^׽u~{ߺ_AJt|o\U+!ާ?l77[}R/^׽u~j {vBo v\mfX}sze7F3SOEa+abIޖe?Opw$2mb;ek,*1geRR4 U$p%Ex^{{^׺u{{^׺u{';n|⦅Mˍ˹3{^ ۋw_Nl^pjiU8l=T,UG ;_| [nxC&܈!㹹iZK":Jֳ2FvY 5,QP8$q`TӁixԑ׽u~Po)cb*n.O{?cg%ܑUO$KޙJ㥖QW,f&! 7.m, *(-RX0\iUw$H0!~^߼9m?>סw"k7̝}:򫬊׺u{{^׺u{#|K;ӵVX,]b0zz&-9裯{^׺u{{^׺u{{^-x]/_^ӵV_,}o}Ǭ׺u{{^׺u{(k (_o9m>uZY[9t׺u{{^׺u{{^׺uq\u~{ߺ^׽u~iq z3s?_kD~Xzq~{ߺ^׽u~{ߺ^׽u~{ߺ_NO/W _y/};BYȟ'WI ]׽u~{ߺ^ϛoR޻9@k}K9˨3/C<W%XyWu׽u~{ߺ^׽u~{ߺ^׽u~{ߺG_qEҧGùmN3C]ͮr)+qٚV-vrJjL]R!yC}2=1]Q'\W+O/yP_ݷ4Z{c\j]O!O[ZaYT??oۿr6s:'~'E<2_u{?p<^.qmK=|DZ26CM X=K;'{mS2<"SxqV4@{wf .[S {_kU n`0⦣*zZZx(E5TP-]\\{{#M4$fwf%ff$I$ԅqU(_{^׺u{{^׺u{{^׺u{{^׺Ko{uJʩ6o7C63%dqn 3 U_ O(}z*[uû$I#3#wwsݹ$I?_f?%؛xM6ڋNqOrU)B騁}zUhrރ=[=u~ߺ^׽u~{ߺ^׽u~{ߺT^5c'zbn)ܿw|T[#Rx)[{s xV>?-=+%Dkᮛy,bÉ+%Z{.mČRu|/VmLq#P `uϏCysل /i krŻ_tkm}[;VwK੝8r?V>?M+%W\ᮛyÉ+̺YW{f6SF ]>$9jzsA{{^׺u{(.-O]s>lg"e%睿]}}ϯ{^׺u_ۻzgK7ʾdeuoarΠν{{^׺u{?_?t-{{NטYho^{^׺u{{ߺ^׽u~{ߺ^kno].>cJ*/ = Vg_xԋ׽u~{ߺTz^?7|vdw.&V-:77tvnyM-mɋs#QLu4Ucwi-7-%I O::j$b5(SnU;FAZUB0.GH%EkCα˯{^׺u{{^׺u{{^tH?/-7gηSQ\'͏os{^׺/-qwO]p;GrTQ ؽqJ^.*(k"z)'b +$ۗjUk.RFKR3(&`3Kݲ"M t*+@M*s@M<X׽u~{ߺ^׽u~{ߺWI |By/rB}BDnՙ:uWY׽u~{ߺ^׽u~{ߺ_$/GowckX`MWG^׽u~{ߺ^׽u~{ߺ^[/_`k?Yz7/YD?qzYC׽u~{ߺ^׽u~{ߺ_1OPP謹vr/E}X]ͯTr#׽u~{ߺ^׽u~{ߺ^׽u~}㬸׺u{{^׺t˲g9>?Կ׺#׺u{{^׺u{{^׺u_s/;*_w ^+?UzNл{^׺u{7*%?w˱sNs-Pg^yKֱ>{^׺u{{^׺u{{^ +O_8rW`n%Tq9T<~cL=:,&N%d\uLƑ:{߿862v\eD0!-ho kC'W-[/@XI:I⩩hc-to_f٬7mߎS9M9ݝk?a F[WJWzm/mtYjD>"W_mL!Twdm۽LE)<8BQYM zomvgjm-m*vPNj`0L\qSQQE=--?_?Me_2駦(1_~Ҙ]ylGE2?m/ϼ?cۣҿKrYF鷛2(8[E険|:Nj|H'Qf5Z0ϋt9]6\RpSWt 9i[򻧥24垷+rTOAeQcJĤ:;~>sde=U$]X fcV1PZ0],YrQp*թ y#{^׺uvĻ?uϼTӵ?{ԋvu>>{{^׺+n].O*UQ׹AzϗG::u{{^׺u| ;^aeѿ/zz!z{{^׺u.#~{ߺ^׽u~{ߺ_AJt|o\U+!ާ?l77[}R/^׽u~"'6n~xvgכC)9}psV}LLSǫ\RG V f;Ic'"p\2PhT҄+q$VV"*(EA>|~FtbZ^gfg4y<^ceA6[QQ56c_5?yD̾;<Ŷso/&bYR .gQ,M9P3h f}[ G44 (h*>og#׺u{{^׺u{{^iIT<;ggTK;rL׃+]n-{/\$r jm6g1OAU4M-%("uE-0 yi;1Zwid)cI&3jr$;f+9vwjPPފ4@PTP_~u{{^׺u{>!~^߼9m?>סw"k7̝}:򫬊׺u{{^׺u{#|K;ӵVX,]b0zz&-9裯{^׺u{{^׺u{{^-x]/_^ӵV_,}o}Ǭ׺u{{^׺u{(k (_o9m>uZY[9t׺u{{^׺u{{^׺uq\u~{ߺ^׽u~iq z3s?_kD~Xzq~{ߺ^׽u~{ߺ^׽u~{ߺ_NO/W _y/};BYȟ'WI ]׽u~{ߺ^ϛoR޻9@k}K9˨3/C<W%XyWu׽u~{ߺ^׽u~{ߺVwk@|`_c鎬-g|;^Or['t9O d)<sΫ}żZ[>]JJIcF{7*[-1WRBMTt_/vw>;ڧ3kGد/|o28̍,U(r8r?}YmӶܷmwDqGF+oXhFLr˶R[r"/t =zu{{^׺u{{^׺u{{^׺u{{^׺u{{^ S;H1AY5p¢Ea+*sxYh[ p_ϪԥJᥥKK=ED(aGՙP?`Tuڰl}6CI=CUTxi+ &Y1o^t_Nպuߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺU@|`_}~g| d^3r[{19OO2c>Y<*Λ}ųZ\>!]Jҷ S/*^-2TxPZ]49K/_vt;o3k#G8/oz299 Fb&h/YzuvĻ?uϼTӵ?{ԋvu>>{{^׺+n].O*UQ׹AzϗG::u{{^׺u| ;^aeѿ/zz!z{{^׺u.#~{ߺ^׽u~{ߺ_AJt|o\U+!ާ?l77[}R/^׽u~{ߺZvœ??+6,VڧǜmtOluo4RVbwnV'S="$tby:\{edž'>[G&%V?oibG}gb-&ҿ U]$(LV#H?y;׽u~{ߺ^׽u~{ߺ^>F/jla:[zoช~O_?iߺ7}z{K5ӧW)^&5|={(ۻEM|xJ֚hkckcu?u~{ߺ^փ_|x/{Gfe=ۗ࣊*{tm<>2Jڊ5$Jzj:?/Cܛܭ+ɷܬ4;#Jh.$t P;6 POSL1hYEiuU=F{ߺ^׽u~{ߺ^y/oopoKPkл?jfN~UEu~{ߺ^׽u~{ߺ^ ľ{|l?+,?.{?{=Q׽u~{ߺ^׽u~{ߺ^׽ttKG.ůX/`os+/^K_\^P~{ߺ^׽u~{ߺ^S5o{{dݷQu:W_k-~{ߺ^׽u~{ߺ^׽u~{ߺ_h|8.:u{{^׺u|=?O/?t=io8u{{^׺u{{^׺u{_' +ʯ>?׬OUm^.׺u{{^ t)o]o}ӵeouO:׺u{{^׺_WLug_k>3oϑ}='~g*{<-VxS'QIXnu[~-R,9zTU~HHB4#ٹWz(iV?Зʕ:j[|;?X>y߽qOdibWVC 7ߪcovf忳n#:1_Kz#E/2e͛6]ݏ1H5WY|ˤoqs׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uC-ǾM۵4F^% \`A5n?L]1z+mR:Nwφh,$uV\~H~,ǃ>~xQW췣N{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uX9_mV}gΠOGU7%Z\-'D&3쥓̲ [5imԯ|+})?PK { Bz-S-%aW:}=fog&NеQJHмȫOCr*LIZ#4֥Ce'$/c?4׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u[rlͣey_x,jeco(QJդe OGUcK.We+uҴʚݦ*%b,InDj_b}W YJ wPaSG&ckORBzt(z_i:Y׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺHm_/pv_Zo_usx?'}}kzn?rDG*tvxu1?OZӣ^MkU+ZW4KOhz{{^׺u_1ɺclgynڛKjv~1mLq`kgQV .v;VF)!eQ]$=||"inG@$RrڵDPi$KVhWB+/V*֙ꝿ?NskܯA? [-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qjN/L~=?.2[;?`nMӕvquJ,&/aQE-MIU=\E9rJw?<ñ{r}2Er$ѴlP(`JVҪF:SgewRZWt%0#}lOu~{ߺ^׽uW|щѿ}_8nl(˷7/߿+Pvum{l(˷7/߿+Pvum{l(˷7/߿+Pvum{l(˷7/߿+Pvum{l(˷7/߿+Pvum{l(˷7/߿+Pvum{l_?LnninvG#P,**S-`8ޑ22$pooPC40-ȈQ$@HY[VX E{ied\*MJQJ(kg{{^׺u{{^c)_:: ݥQO_-ܙג m[Q,M,0O'rO^ii}"LhWi$YY6 mEnW72^_meޤ] O +WU]m(3}O~U[kV}A螙撽3J +G"Nӕo|NQ_`o.f-Cl(a$ovŃi j,P "(֘(CZQ` W:3Ptz9}[S3{?vZ1Nꝩq5u4ZѼ2)( ,̵@xo*ljK)FуCtD۷if)\i5 ?&SuݭofroXi"tT>ĵ2A-TrTb2L$xV#Gr] P;{hY7BMD,(D Yy(1f5A5'4~*t.LnܖmwGS\u۵JnogheJW B<6eЫX.f,+23 О6^e!(X* *TN7{{^׺ ;}tnfcvs}ёu44{n.ԫ^R*ة%zY*)'e C*k?-=K[D.eÕ+%Zv{mĐPt|OUmJqP`?CWoysل/|iz vk1źtm}k[V wKੁ=s?>?ݺMKŗ\m.,Õ+U[sd佗f6qCHMQ>.9jF:OpoB{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺ugνT*W(N39I:|R Y+kt jI*%!i\GQYfuORxzۭnɉUda)a2)6bٺ)U3r~[5Ё}:}ӫ~{ߺ_ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~|˿C_(~53ޫaqKfo۸Vcqfk+ ٵ{Mƥr[ TOI%]*SteKo5I%flgveEB FY].r- &PdWj@R zu~{ߺ^׽u~]'' +o_ i V_Vd]dW^׽u~{ߺ^׽u~|K._Y}/ҲbK׿7\noE{ߺ^׽u~{ߺ^׽u~{ߺGKnľ|Z?0Ҳeߗe={=e^׽u~{ߺ^׽u~|?C_O@Oli]c=u6}R߹ˠ^׽u~{ߺ^׽u~{ߺ^׽uÎ{^׺u{{^KW.R^#O ֖󏨏{^׺u{{^׺u{{^׺uyPo|޿-zȮDVn:OpoB{{^׺u|xL.Ϻ;[Yh]Az_/E''|o :5O!eU=),^ .݋"RQV=$V@$o϶ܧ#mҶtY.ed.1:PirQ,-c$kPT"05UiP QCCQCWoysل/|iz vk1źtm}k[V wKੁ }s?>?ݺMKŗ\m.,Õ+U[Od佗f6qCHMQ>.9jF:OpoB{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^~wo{~ M7aa) :\RDo-G h&i^T}:E=ÿ=L\>V92Fl\H x$oNNc?$gcam2$Pʄ5 _XDh Y4?Ns +PvumJe?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]߆?H.ߓUe}_a:+c^&OZZB-3l 9\ZmwhbY,s.2(Fi PЃvprfxP3!^*jjx1Fzxӯ{^׺u{{^׺uL~=?.1?vmӔ{vqv.,&SaVTEMdKE\AVIp]Waeg460Co_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ] % н]gKvgɿ:rn.t E*:h*V4NCNv;݂nXoFHC6e RUHJll⽊YB`ң4 ϭWCν{{^׺u{{^׺_?8~H?.ߓ{C7Ubv}'+a6^Z?%&Z6B]S#+d$}㐹bה{[-_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]{@]i>_me?ޣ]l:zu{{^׺u* ;G? [C%;wuO헻OW`RWM +6ZE(jfØ/yէAQ]zk]H)Jy?NsVܯA? [-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qj KF'F/po^[-qj>O믃S淦a<-*)y_ ITOŦ_\|~pxH*aUIHMlfmK2G-ōH 8:3~{ߺ^׽t Vs謧zMe yc9o  >Dמ'QZiT=|0SR|rr7ǷI+LcFҪjXKF$6Mz7LB"5aIkVTAJu{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^q[o7.ZO3fk&6'?,UP9&r}֘Z}Ðݛ;2[/Ve 8rKiAP{6(ytNij>}[^]Fe WFΥeMi(I#UT2Ih._S4Ǩ?OҞ{{^׺ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~#:RWjyo=ۻ/33<fSN ݛgGakV1oSSU!_g[)s2lU*\+i=ѾF1J.К1%B*<*+Aєр>]|'7Qv.~wXoMכC6Vr}psTm4LI\RIV=+-l6-hip(aZ:ŋ%g^6eaPhH"Ў +mMųwxlkjnݩnM6VWGg\TE-U<,R+![ki,cYY$::8*+)* zrI ,LU$A A[?ŮCa{we+p|gGxc+&}1kn ,cႷM43q9Nι,(\캍󓞖ME]LoÂ{zjo-]WeC<+slx;4%.-%]v+ie2pQj[^ºRu"=v59[y9{^rJ?Mۺ\.'U"k#48׸v7gǖ'I+cⰙ&3yVqVTi0{7{fW**Dh]䷖I%W@ "f&YwmZ,h-U*ւBMvx)Կ׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺT[tgτ٠lF|\s5IJל,q$| MS\:25Ik'N4ivA Wr+)Tu~{ߺ^׽uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺT'Y;_// Y<Y;dj',MOhNt|DދddH|F:P#g>^o4V 5B@v+SUz^{~v/ŮꯐOzaY?TOsv1\TGq쏙wl_u^=]CD֮XL9V"#U,m`Í 8 #ϯ[v޺=יcg1?6~6cVr jooxh8 [{nw>ͤC*U[D9G]HY[K)V*iPHYMoB(Qz^׽u~{ߺ_ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ʯ}1>?|Lvtmy &l:?7 Zo *]1*|G~4wbS~/۬j歛- D6&cC%Xմ=ʽ:utcu/F&=Bmv"}[3Q[[zXRtso?_pW 6Ys|[xi5?^l>=$ǺMxӵjI(R^׽u~{ߺ^׽u~{ߺ^ignɴr]m̛QLDԍdV,ϔFx̑6(H") q;o{_Yuwϊ?v׾__G/˯}d??׿>(ο߾_^~þ|Qm뷿}.g^|:? o~9~]{!νGu~rCs|6kGQ98)RH`5UsȢܑmfUlN7!YZa+O[R;A/\Xx+) t^׽u~{ߺUWSv}aWn^|ft{OKWQ!heKi \[YC gu1SZ__G/˪d??׿>(ο߾_^~þ|Qm뷿}.g^|:? o~9~]{!νGu~rC{k@7]u﬇:nwm4mn KUİVK ZcC:+Yf;o{wtC{k@7]u﬇:;o{Yuwϊ?v׾__G/˯}d??׿>(ο߾_^~þ|Qm뷿}.gY`n8JTvTO C\KB?O{Yt0o?}CEOt{^gt iW9cPE&eqz\*'*h+hk)fDaʺ1}A=>"׺u{{^#д"oYOIyr;!1D1)=|іLNcSG>MuZu6"Yߪwhƕ),Lz@\ ڕs?I ]\J {>K+Vc=6 n$'( ]SUoZ$jiji yu_Γ"ꖪ*٘L7ƌǒD%?Οh확E\&`KJ $uWzu6Kǫ Qշ?7[U#0jByNܸP<1ޭ$ߊ&am/r'fƖS{d$IMKQVl@դ6NOOˣٰeؠޝ}1ke(3xuQ5%\@VWThFP=ee:XPԦunߓ]qwkweAgn۔ qJ8a!U9M)ܲB;|:? oo}.~þ|Qm뷿}.g^|:? o~9~]{!νGu~rC{k@7]u﬇:;o{Yuwϊ?v׾__G/˯}d??׿>(ο߾_^~ѽ׳A#vYvj-GG~ ~LMIRMP 6%7[o$Chn=(Eut"}:aܩ\ n(ο߾_^~þ|Qm뷿}.gJf*ۻ6-;$0Lq2]*/}VmfUouob3;ko6m-FH(܎mol220OB7n{{^׺u{{^׺u{{^ꤾ|o /Xj ctC/ 1˸@RQ H(ϟEoV<πM_qeg/MlpcʗIN;~֖A?BQh}n:p}^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ֱ_^mq չ:vM4ybquK*ʿm)t5;"}JVҏ,-bu{}v7X|Th Ip ecϗG::u[g^C溋zR+p|]g}1X?ܞc枋~EL129甯N"ÑHxeү eI4UF:X]rrTզ;ᖤ55)+Z+Q:ttugȎ={ ؽ[ظX?x`%rt-3T=5ZESG[GS9,mt=dUA4)Ǎcݹkvb`kkf$oJ VVRK$̌rv/,IÁhA#?WJzu{{^׺u{{^׺W{wW%Ƴٯ?7KS{^׺u{{^׺u}[7%&ۛێO[%,Ũ3VU4a妨qã=\QGVWd5SCs~R*}D9Lu1c!< O'YG]DL\W=[%oub{^sn n{uff} A*5blܛq`h< OZ>gӭv3d7w{+PjB+Բ5 ye{5;`{1Aq$k{^׺u{{^׺Y{JeW_Z`??bws"zCWُkǢ޽{{^׺u{{^׺uV_F={kҷUF֟=X)|Q z_nž֚^:%׺u{{^׺u{{^Ww}Ǐrv$릡j H$K,E=0 u)h?7aM;[z?ܛ.*= jۀiV=يtJBR99#EwxFmEϫ={ߺ^׽u~{ߺ^׽u~#{zen=a{=sE#T :< *ghjq~=T}U">]kڕg+/(5*4E{=l;ml|Nc )2R/6iItt(V]>Q Qz^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^.{wym .[ {kLUwnMgH妬ZzZ)bvEdb W671H +"1GGB]Hee`YH AuI#h)T2 B8 pG_'Oq|2f6 4w'OnuMcu:>ٺV%[OL[ *t+Cr)ILΔm/$ssoN^_&}K4 kǩs]Mdr }f=n:u{{^׺u{{^׺W{wW%Ƴٯ?7KS{^׺u{{^׺u{G{W?=OmK2vz&NiW[x*@6礗萑ͽ:>}Z71q{w=[0u+[ܘ|f{XWQ&CRIdh|<Qǽuo*a{(CP){z 3X9N?'V" ?<_˪aIL'玵-mG^׽u~{ߺ^׽upɻ]֕U*^f("f%glz,F45 IX=ZoCY5[{-ϯ{^׺kr?k^Nwu~{ߺ^׽u~{ߺ^׽u~^e걓N<2{3kSHE%M-L;wvϝg#[[#bަ}_t]WwZ||OէF>T&oPDQ:UTGnaOx鹟ÌZhY F/erY,Fi*k+ӵUem]D#3If$sDjz{{^׺u{{^׺uV_F={kҷUF֟=X)ȞĴdc'Z1路{^׺u{{^׺u{?^?UuѵV!?Jz-2~B%ޟ۰jhozu{{^׺u{{^׺u]]ѝ}KTx=AA!H6ZO[aʝT3Lc,@YJ+ӑ? nKK^׽u~{ߺ^׽u~{ߺUw8NTfsnTnF$Cp|9_k-S ܜ#i믁=;w&ni Vf$z_w7apKb̟c֑˫E{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uW)?~}כok~a9;n*}<5nNh7 7d1D]Rʾwd]6{<-MDe5ȨR4iG^l]Z#ǂ|3*BXΠν{?;Γٮ.E,+]X^ Zj*igcki yrcyib`[K$oZ0 ee`Jn]\囘Xq A$u7>whoWOmYMt؊jRkp58gҭ}#)#j I?rN4r ,B 0g]2Pcp9F2ofݭ;b;ԠԣjCj jaqѧ^׽u~{ߺ^׽u~i+߿=ccY?O?%n׽u~ _=Pf*7QeC IEGDaOWHOV  ^nwiօ& G1 q S~}]5GL8Au^{{^׺۷vnٷ~arJ`Bbhjݽ;Ti$B@)8mPltT);5_Ku%-@ >tHmPcKxs n~'/o?>u~{ߺFzzOgK;Se^ +s[%HtYQd\PRɨKzu#ӢΚ׺u_~D%zc}77+^Ŷʇ l >\L.Jsd~{ߺT;Y}}]{{^q{3ڽzoT(qb&35U>&-TgdYv ǽ3R˫"`ϫ1k;=CO?Kz~\YO_u쪅I lQ.c(h?D_o^6s;tm}Ųci=~ܛ~|fg ͢X'22£IH*tߺ^׽ucʣ!SGgbmM[SG%*zHoP#B{'Mje]uM{tQDq&G=UYF۲Q ++AEoklyoA+]/f~{ߺ^ƽQzwv{uMIO6RkWcӥ1%EzZꄉ*Z(xFIdwOC4+׺}\/CzE濓:fn-3y`¼e._0?Se?'SǺC)GNe:T<^V!#i,Et'MvSh7ek.OŏK#FQ6[6:}U]EGSmStǼ6dF 5@ huyK/[GV㞎z{ws"zCWُkǢ޽{{^׺u{{^׺uV_F={kҷUF֟=X)|Q z_nž֚^:%׺u{}[Ov4u-şt"Ok #q$@NQ5gRH?ol<#|; 7?`\5mp?۟tȽ?V)}G7DwŮ͗vJ <ɨˉ/sƦ:)*`?A _TULIhΛ׺u{ຓ*ީF3׻/*P)|ۦc ^/#93?!Ѕ[{^׺u{{^׺Fu{462zXG t,xT{v 妨EbP񗉮:"b=znTS֗z$׺u{I#|,1NcXT8IWw:6}*=j9{vGש}u^b lf8ڬnA$t>yܶot^׽uJ-I_~i̛mGJOM_"{?KX83*o[)@Թ<6FO]jJRDe?{2(hzn׽u~n۷: jSPm{c72]9*V^9E!_CM0ޣ:s{^7VT_z/?:kA׽u~U-lo/:ܷ7G]{ߺZ7 ui*(+֛./$ *1[IMK?-+g!aS^{{^fҨ|}lnyx֧,^0kuۋfSVjWѯTKgzOʠS,AY"3SO)$ s~/ ''T+wE{ߺ^׽tumA0==v M*smш`/DUH㖡@@[Ƥt̂M? e,>oq͏s[-$r?& [~֏6o[ɾ_?΃{RSA]A3T,*}}xoQpɒ`cu&2/8uqs~J3]#9ͭ1n<ȹ+;})SNӹcXrD8lrzӝ{ߺT?Dg%;'e/Ho:ُE{ߺ^b~'9|m8TY")3$rFVzoY>1OE}a>a.?+:+ @OWuW6{[״诬?l/S?i_A׿_Xϸ_oo^Ҿf+QGblt-#AD9VR5,ijIމ''N>-2~B%ޟ۰jhozu{{^odc_iSqˣo^}?ltU1ؚ߇#O[YI;BH$EQVzI6ž`x'jӢ{{^f;[Pⱴdru 8FkgZjZhZIUG>M2z4o7m흻C2pX(QB$,/{2jI :}׽u~{ߺ^׽u~UN;AnH3;fv1pKO/@.|:Au%O<=%&؛2NxNLg"¢"z W btq56mк'*׺u{{^׺u{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~Po(gz/ wRm, 5}}%v_qoV=.NZi񛎔C%S.qcQpn"ې٬7 vUiHS[L(fxZJ'3Las&񴉭TIJRYM@qbSB_6/}@u{cOg}Qg'7S6}f0urlo&k=/3Geg!JPe('!ymۿ<*4XdY#"EF5ʑw9 o{_qsV%߉,/c?4׺u{{^׺ukwktG'T׺u6ݫ|o^w`"f8SU,4Q+S| YC/JWFD>]?T C hC:[}GDN?ݝWjq7/G(Ѷ2pg38槦i "S$j 0'SR}:ٟE]{ߺ^׽uڵONG,Uy=ǺI}ǻ+X" OL$ܛBYanl 7]q{7kF@T s,GT`ϧR˭yeZcS2A2:Gf}AA 55=5^׺u[賡z/fCM+GYe]-C<ؒnI,BާȗDj[^}͋/KqX{Ŀ>mŽ[T_3\މg{^׺c=v:_{**}.9%#jMzGEv撌D"! n# >-%5dK+ˍ].33.> qKUE/)>z㲰YaUBB]J[H&՞{KҮuu^SQ_%i$;k/ֈG5MT21`Ѵˤ5Eyu>u{{^׺u{{^K]]yPXq:juJ&t)"#]Kpj^=nEݷ۪6Gkhqs*M>''O3f`QE=386@GwC>]FD<ӫNsdOVZO~Yh~1p[׽u~rGh]у*n9A׺|n3~z^n3~ڏ^n3~ڏ^n3~ڏ^n3~ڏ[O+ʺS]USYPyj&`αP4<eW_b?>~Z>e(K?M/a~SbaM/g~{ߺ^ÿ'}qc6'-Iٻ%<[% ]AK$2^k e[Q r>]ږ r2['p~[!qK7߫uQ>>|:ﯶcm 2p,;t)%z lMGMpZWemWoow1NJ4UOIzu{1X?=ޘPI:k#E+k%Bew1r,BJB 5]O:Uky5 Wѯ^׽u~{ߺ^׽twi{sƬ-|qۘIOqVJTJ.{DQG6znYh[Y.:û<˽rA[Vֳ5dXB 4w[4$:A fY*OW~*"D@QTYUTp=tg/~{ߺ^׽u~{ߺ^׽uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ_4q>]A:֟7׳3g_] ='8 $><.!QA?%MgVKɦt5v FR\ eÑe$d>ʈ17O N{ J$7׽tt;^)z^Py_[*sm`;-me2V}ӸnD=+VܛtSGx&CT9;$MzǼOnQ0 Zjj@u8*iVX:ttugȎ={ ؽ[ظX?x`%rt-3T=5ZESG[GS9,mt=dUA4)mcݹkvb`kkf$oJ VVRK$̌rb/,IÁhA#?WJzu{{^׺ukwktG'T׺u{{^׺u{{^}s}g#/޻EDsYD (Tx7?zvVE.G[={Wl?m{ p`q@bEDzBKϣˢ{l/@'h,9ڪ}J>?A䋿j='m0뎵KkO^׽t;|`y۫WS6\}5>+iӑ.~}n엣t|(wNv=9 ode'tƵ;S&Q#$jUXV dP ,=^r:kzC׽u~Z쁵G6L(Gcdh q9n7-=^vmItu/΍:uwܳgO/{ߺ^׽u~{ߺ^׽tdɮ4l5xUPv٩frnsGE,m,b)C\]$t+*zʣn[}oۍ qq>"u3WXɖA*0mKT 2"Ka uIG޽{}eYev3KGZ#'tq$@"R~i|߿FO=dGJd$nXfnAQ-١@)bfCTֆt2e#XgYE\:)ݢ5^7O׽u~{ߺ^׽u~{ߺ[&]W^뺚'co\>aGCsDi!'*f?#^7FVMT+Gީ̉KIvO/^^f>uzu{{^׺u{{^׺Y{JeW_Z`??b/G/"]i}Zi{8藯{^׺u{{^׺u{;*f뎽ޛzi`m=G@!g$tႱ ;(#L*; MTM➧OWojZZ&AzɞXdEd.Gfk&a' ׽wۻ[Oࢡ K+uY T%EDI'콙6OF*xպu{{^׺u{_/ŋ톲eLMI%yʉy}R9Jxڕdf=mg3I|:GN FŔ5용V_OJV$M$̍8ht*W׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺD$k~3k3;n.s{mV x*,|fZ*::EfG}5B}~m杵|_ RK wDx$$7Ѥo<&9ӪZa¿A*YC ׯd.Ox z|?bO6z* 4I#*ǰ^e%Qї\rtm.R4e +BXqK̬* ITT=:E{]={ߺ[;m,>[/FQlMvav6!ȕawE%6I_6BMB |l׭+mQiY,#%S, *ѣ/LŐ@Ew^?rݝ"fҢgKOj=}}ϯ{^׺u{{^I^_{gqf`DrhiA/uN{{^׺u{{^׺2+;D@YUTrI<=u?OCwid׊jM;Z O"CD@Ii'(ˮ|483@][ߴ},_oA³xtTRo}ip;px18ZʦL<2fKt]zTOkzC׽u~{ߺ^׽u~{ߺ^㱟;Ϫ;i鶦 b}֏qyh%ƫ2$ z|2TA du߿uwܳgO/{ߺ^HgɥDH>#iPMAf? <~c׽u~{ߺW]&OT 2*VIwF]&g72R%e4@ pW?FTxM{ߺ^׽u J%9i==D$o~>Z:| -U#>Grxػk:0 $emvfŽ7$𾚌6v4הr7ȧT>[ǭ2]#I/k sQ(|MR.kn>Jq.xm7KҾ{{^׺u{{^׺u{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֠y]ػv'ћc5 ڟ%~vHr]Yrxyzevb0}Kf3n>g}=؏l>o[3Ic$=Vw( 5Yb<?V[U=Ƹ̪PIM(Ħ.'c$>zu{w'U7>u܆ݏ{4u[kSQfd%KU^Yq{?Fޏ7lQϸEg\˴A /$.<8!gE/$gČVUTSvA}u{{^׺W{wW%Ƴٯ?7KS{^׺6OSveEzӰ7)ͲvnQc%WzH`9 bB b~"z KV>N8wxR wǾPv[ŋ{—O=Htxj]W`U[CK6\X~׼ъAOdz#1s- 2ᚷ$X)(zP_f)sP|xMP{S U4Y>]kS۴jbpv0_=-UWO]:ĭ{kzkr?k^Nwu~{ߺFG<)jij{SgTFAQh tu%YXA {no=;xepXi}NvI6*1 O3/&:h:_;9=Yi?Ye?+Nco^׽tsݝϷ7=VB:x=mmo~"l}:O{_oiC__뿣 g}w{c?~__c3gO߾_u{_oiK׾?k}/{ܯwSaž΃4龛9JץIzS|Q z_nž֚^:%׺u{Pv|Cg̛clib.Kf>ɮ7p4q&.yjv}Fx:nE_/ /u}ta׽u~{ߺ^׽tߛ[K9%HਞkULHH@i%d$.@U.GUv˪qv=63Iz U0 KFfޱ`d!F՞Ćy XUT**T Fw{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^.{wym .[ {kLUwnMgH妬ZzZ)bvEdb W671H +"1GGB]Hee`YH AuI#h)T2 B8 pG_1OE/4xAY>8UUm:rc u~[vy|]yz֊|?_cֶ?P6;we`ȉcUS O"\u\y4T&*Z DZU_s_AN{?;Γٮ.E,+]X^ Zj*igcki yrcyib`[K$oZ0 ee`Jn]\囘Xq A$u:\?{WESSwwd뷇Qo y%h#ਜ਼n(i!RIch9)wz:*+)*bxjij0STC ]X ߢn=G׽u~(r{v&S3Wm*5&Z-]v54q;J:z LO_#ǭNbw!Kq9>VU%S-eu$,N>젂 G*:t ɋw n}_گ?rdaZZ{9蓯{^׺u{{^׺u $$ߺ[t/?GxoS)<~*'㖓OCDMgYrMR450XiI౧f%=<`Jz8{{^׺uӹ7.qczg+vҬpg.:jW\I ,Tړ0mE~#=!Ӏud[+fzkᶆ٣Z,6))3]Ee\ sO!ifS<}=f,ڛbEҼJu{ߺ^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽tKNa?av3vr:DZv`m炢'eVdqWT ۞{niW$tIqGH+LJc}IFmӝ:U F +0zU>޽17QoLhxʃ+vm%> jlj(~SMV#}˖yl_M^IJJ]C7΢XTrf":U=cUmB}:G׽u`ˇwZ~z_0EݟCQ$Vsc3m 4Txy,m|qw.*;Fdz? iL-Q%{h0$ʣfoލA.vM2܏P+e3G͈sƆ jmTѪW?K&Bo_Ot|bd}ܿ7֖z$׺u{{^׺uWUSPOY[Y<4ttQUUUQ ]w!QĀ'ߺOp]+q1anFN)E"*v -61ϕ$:Mg/5$h:0׺92'?-'?k,?gzE{ָ~z-׺u{{^׺u{{^kOedc׿+}]l/tmiՈ{OҞG̿%w?گ:j[=i^{{^׺wWsdlWL)ft=UY2) FN‚ת[ɞZŏG+thّՑъ:8*ly>ͺ(돿u{{^|E)XMBu^vݧɝڵS)B!kUй+iXE,1*ie1>/>;vm6gnLUk %5~3#NTuP̌ 윂£޺^׽tKTjc;V;RcVIHS$x)ēC?IO/tHCeC0n,uR=-!)نKJCoH@yrdjytQ~}~޽{{^׺u{{^׺u{{^׺ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~kG>}{:}ɟ/z<^9nlP'qQ%$UMV I?q 1;v 1kC&U$ )i@ӓ9KЕU9&[w6~ &o+Cۻnhca3 .Ii()WXd[,chf$ԣ*2*A:hX2APA 0GO^{ߺUݹ=ݹww>s-rO Y2U YX]J1Msoo_I{o߾oI{o߾oI?: L%>UFo56el4SDie_ Q&>OmI+M~]=IByc}ӝ{ߺ^׽u~{ߺE?N?ӥH7U6̛3QΥ,u֤*VUD[߬v9^*"Iiˢ 7tCϫ:k!?MA>{{!?MA>{{!?T_ʓ e%jwCRTTUo:fjyD*Lc\mk:ߐH﫛:B3CzOiS׽u~'^ܩ=Fqb)(5$ѫ 2EAoM$kxt̖ڛ@4+׻\/I{o߾oI{o߾oI+֛jӡT[ggq Q.TLQS4戛:3)\T҇-Jj>}iQh7>Qsҵz9>uV_}6MWc⮏>-O8^_Cz4+׿}\/׾Cz4+׿}\/׾CzXl7 qn-,2XʁSJ eG5̬M(zĬq>(?>ٽ˰Zg})#ROPOR5UQ(A]̌x讥[MA>{~Γ$>i?߿Vׯ~_}$>i?߿Vׯ~_}$>i?߿Vׯ~_}$>V_v>+5Qq9:d WE[I;'AQ*&G6&{QֈP=VR\mm;4mLJnHz]Q^DSkjVQƇ_.5'GEp%*7c&Sjn;1n U}4l}t%卐cw25mdk -,{֧DL:KL do#dqe FBj@EP1EK? w{П﬋/?t%TL|'Cs}P.RE4oS,͇Fc%޸ ݋tƺdim>ˍYW6,ʑ/y ~7N-_ƺg?Ǟh׭0in-KFcy鄀$TGEO!?td=ӽ{ߺ^ wY|X]4F87=0ypHPM ,O }l܎FznHQGMA>{w~ΙH}O8^s|g^H}O8^s|g^H}O8^s|g^H}O8^s|g^H}O8^s|g^H}O8^s|g^H}O8^s|g^H}O8^s|g^H}M쮄WY}UEIY 2uJBY\.#jn=>Ы_;Du2mtU-GVܝ9ZzXp8>U#RMA>{Qs|gICz4+׿}\/׾Cz4+׿}\/׾Cz4+׿}\/׾Cz=U;[muɊ )ji1dk!Z&'<8l;b"^ zUg>[|vnfw-tg'WRcFXҗNL@BJytaf,G_O8^s|gUH}O8^s|g^H}O8^s|g^H}O8^s|g^H}tIUF#Yb' :ELy*<#%W˹7DXJ^N׽t wo:wgI!i6AgP%<2=C(OH՜3#SϦFOqˤr{CivT1SRVC(Oޕ)M _i/4Rz5{{^׺u{{^׺u{{^׺uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺZO]ŹŝiM1ӮN"qc5u^K9nT3MYEYM,)GK-JKvoz^m 敁B*b++mc1,Aܩ'ڃM+:5ZGOco8r2Qbv^Z6œ N^**XlF{!{R %Ͳ"뺎:"K(hR8"H)EضO0i5*SEj(dߗ`8fҼOUfuO_xǽ.NXBnƫ>Xv>ܒRdP?^2ňYth]Y?!:6G^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺLms?x`0in.Wm1T9ݻ6vL^oe#Yij"x9/\{e#C4,ete!ee $9hPE 0A|wj {wz6x_ 5힞׺u{{^׺u{{^׺u{{^׺uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~jB?-l; zak; O_9C3x*9#+) M$Iqo.}\6{D>Bݱ *$Rp`usg=~m>xEUhjbcJ9UA*c7[W{ɏ4ϟA4óX<&x<PU*1ǝ9/9&dž, 挒h\'e`ȩ*:(jl%mH ᕇa0C)*A"wttV|}ٲpս6~~)'B%]4T{ߺ^ȇuMuIoyoJJ MA:7=~#]mYẻs5Kp:Tf'MIMJJ`pP0}~{H"fhvY^< 5$ȌL]/R%&ϼ;$E#UHj b׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺UK1 31U@$׺g))Ej豎?o2%M&S'' K*5;H˕1}7M|~Nu߿u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u{[&_;6oGѷ~7z)nf?{GZZH?ܟ5u?"?p>JΟIg%Qɘg~Lz'{PVWϷ?_llL}&-7QZ_|j`dUU?)EESR9\\9?v^[Oxi)-ᆐ/+XU2DʮI UYyr]pKA*jIKSt$2:۰n펼xvg콭{??)9 ɶs³SV}L}e4SǫD e6ݛs$m%R$:BYHSJFzțy⺁.:EVSB*T-E|lb)w_ yv^g٬wa` j(kuuΜ<2ra4d̀q=EC+6IQRnUd7˩ 2sF VI)ǿz-^~اlO1чTP55m2?;M۳T>>ybtWWWs_|)ҷ6o! q=0P( %_wߞ?=$ْ1(g~J>c?u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^rnMvxo jm-MѺ7&VvPɔSQQE-EUUDQ#I#*)![[쬣i# 31 HzG m,TI $I8msy1m[˭:>fϐ{7nߗY$b2{8Y[;_MkrLVRc1y3}o>2B#ʳ܉I;B"0hlMm$%RV$4`HҀ֬͜.- =ŝߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֤?{oO3O~%Ug3F~|n߹뤤mw߻Iii r|yn(øm+s:}&gȖPD?&a1B{ߺ^n/VO5IVgwƭŝjٸelVT%VT+˘cǰ?3r,;***/Q9VuP ؀@DB9-Ǽl Zя̘9eJAjԯN{n-??{Kuq[kɷs10o$ՔUQKUO+,NF̌ խ͍̖W3B̒FQЕdu`YXe` OѬ0e` "0A`󗢷Wϐ{WŲ!䧡(i}yfyex%UQ 9/9yd幼))hz V $l:v-ɬoR6Aea+ S.ZQO{cj#j(e٬wŷf||-^:꯶>r<7SťnmB 4z1`dPA *Kx{]1~0Ե%I*U=u~{ߺ[U&OP*{? _z^ C+)Mfod[x)%KZ& fQPe(eaNm1χf+̌8}&H_)sȆۼjxV7SF*F"eHVR7{n-??{Kuq[kɷs10o$ՔUQKUO+,NF̌ խ͍̖W3B̒FQЕdu`YXe` MQѬ0e` "0A`u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺EdQla}a6Nell.Q3iUf4 8g#=Ӭh3QSARH>fk/ƝSzcv/*]\0:_S5L?;}6+yòC*I/F*7voi[DMVe?XT$?؟mvgjm-m*vPNj`0L\qSQQE=--o/?c;lW̖Tyyw~箒~ic~￿<{?q%YS#g鴭_Μ}["YA<|TǢwu ~{ߺ^׽uW'~?*3_:/zJPwFw?һux"mZJ,NVt1SAVZ^K yd/yQD]wQ]2UCIsM G$IE<ȼ#bRBM#fUhEbV,SoE[={ǐeqS4A> óX< 2<PS(|Μ<2ra4d̀q=EC+6IQK]ykԍFXpe9 cˇzu?lSx^'~*(vn⚶dvk禇qm٪e<:KW폹ܿ/g>i[f`d@Ma(YBJ:/^-r5LrEu*5-IRFJfr?D]{ߺ^(ˊN_\.C8m^]OSZj*ikvudTYSe>G-N^l<{l}ڥ]wE!(Z+DIpVVr!4Sb9 w*f&kFR -K&tugȎ={ ؽ[ظX?x`%rt-3T=5ZESG[GS9,mt=dUA4)Mcݹkvb`kkf$oJ VVRK$̌gKkdq$r pA@ e])׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺uɿ>ue_t/Uu.ki3YLokzZV㎢J\e IOU[*%%L 9Wya]gҥT* wFHPHP F wU(wi7{(x,lj 8i:;_޸~>!7H O02sd0Ms9ARazeK7$Gn\g^x .n@+i%EGA{Ϸ4;T,|8F $~a qI؛omݛp?g0SimL.+m}T8- <^b㊚(iiH8Q@uus}s%43<;ww%ݘff%I$ORlq kJT lu~{{^׺u{{^׺u{{^׺u{{^׺u{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~jC|$I4ͱ_2[Qz4mJGۙ}9Ė'gOFb;ҷ1:skwle?TCfS/׽u~{ߺ^׽u~mƽu檺mfN|V[p--S,FܧevU4txiLX֎\6~>sEШe`nu$IrX6vHufTVPEas'r<.&%  2y!4\<=6ۻn7w^x\Vmhswrm yL&-5ee4TRSK#yukscs%m г$tt%YXVVYX GSmM]._2z+l$rR.߭#&ܱQbryYXw=ocTXQMìeP*E I/Ӄ}q{L> " ) I'Đ,uٻw~ 6oCۻonc0 &.8颊$(cUWW72^M33#wwrYىffbY$I$(GpƱDU@ `:zW׺u{{^׺u{{^׺u{{^׺u{{^׺uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u{[&_;6oGѷ~7z)nf?{GZZH?ܟ5u?"?p>JΟIg%Qɘg~Lz'{P^׽u~{ߺ^׽u~{ߺ[$_u,g_Y<_S=%ZC]_vr;f㩖ZͱYS,[mR.cd[!cW{l(DDXcEY@X'bC18IH,/kF?2b$q(N]kWARӯ;'wg=yp{g?'m=MOVTxgoIHG6-sٯ_m-崹7DԡR8V]J UH#u:qB{WYFV   :dϑYO6Nzp73PZd G(+*᫡ 9ં|ݹkv}اkkfJAVVRUу$̎iwimlw$AFSA Ac#\ٙz>֢~^ciwkjeQ,Kɏ Wb闳|C33Q1QO]XZ}<5N>‰WM4cO>b_ݱ~dtJFMq]K$u9e8q榕82USLgT?磩 /Ge<uLm2SKM- 6Ī}A_hmwn`ruڏ3Z*kq*DZV8# '>Y{-VM-!4ҌX2KP,v =zu{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{b(G'?f6wU6O/zm<_[&"NR۳e_vϜ>9}6%dH*svIjJmY./qƒR2=fŞ{-m}XvXݯ"[Qa7q%O$4,u*M%5y8JS(HEP&5{u(u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֤?{oO3O~%Ug3F~|n߹뤤mw߻Iii r|yn(øm+s:}&gȖPD?&a1B{ߺ^׽u~{ߺ^׽u~{ߺ^ժ,_cn,'\G잓Y._:3}e۵Uqew_6>喞X3yCƭ,G\oVXn Ls+ MOR8:R\M˼Ӹ-$.AhڴEYHӪMJVCO/;҇6è[wv/n)1ld>|,qrS1uUxuqSF**~mO9{i{oi#:YQ 1vvNcؽVA5SQFhH`@=ms?x`0in.Wm1T9ݻ6vL^oe#Yij"x91͍wR43BȌQІWFRYXVR AIsFJ A`:o®^g\.E6ܛbͶv S7|mEm eeq1di+<[n1+PoPD82Y|cǮx{yHyz2ӾA]HXpi}G0j&;{^׺uWJ5[] _0}=(zI zD0crSN7,ZgURcv>{N!lndvρs!}t6!@$ܹͫ-Lђƴp I$HQKGV|͓ݝ'ս?Y'B=%LUU4uu1OCA ] \3ATBl{-n[ mwl$U4A*C#d]iwmln$AUa4 П쫥={ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^-ߟ#:+]dc7j쾢ϼ?e(uWjj[5MSRSM yg9s]役z)m*]S\gPjFzI}enXyM ,EPX?}ozzm.\|tt?${1uu76c _e*/SWksaK;/*)rl!Y~*?VTH`ifwqܹ_ܛ LE _P$1T.]AYVN?C ~UfkvR6Ό;,<{GS.疦)S*1t,)Ku_> }h CaEЬq;(+4kn@L&8$[l[IkMISP]@%~_bx{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺZ=_ >o/?c;lW̖Tyyw~箒~ic~￿<{?q%YS#g鴭_Μ}["YA<|TǢwu ~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u_H]v}UʿFtLzۻn̾9sq5ttjԕ6J'ʴ{x~-9YvW@/v AӮgu"-k>MzY>y06R@Ck4lOxԛ׽ubt/v|Ue=ŽvovtPtJ-U82sQdŚ%[-Z屹9Czob.AѨj#1M'F#/P3-l6$uZ{m`ԺwGK~'ݛ'5]Ypgk UOM#MYEYM,ܕ RWRMe m|yi}ا[KZ0@ee`Uтn K C2 2 f&׺ug}w ػ* M[.mܿl(ii)[BErU* u5Xǡ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~jC|$I4ͱ_2[Qz4mJGۙ}9Ė'gOFb;ҷ1:skwle?TCfS/׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^?ȇooͿ{73O>%Mf{G X~&?߹諫O Ȝ?c>M ?7,69/F'`;皩ωJJ{ߺ^׽tD}.̃1cjf?;7ab0]u3@7 OqfhrT‹3MO__AUIPOP`Zue߹-HL&PȊڢbZ7GGRYu{6`{MUցIQ84ԪG(q`L/dfw{/ݬ;Iw=V&3jSnIzWgUie+TM?J8:LE.VyvE7$,ZVTjRm-J.t׺u{?G)EW`49'c·}6/nv}4\Cݴ^J W%6}OQ'Q4jq7Ϻ-rn|Wkf avop! $G ĶʒF%-[@(\K.i-#:+/]c{cj?+0t{1WZ.j!E5~1MM"UC!y6[+*ԡ5 F ,lQgr]XJSZFU"0@iGҾ{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u/l]v_Qar~Yʪ̞gnp KǾO>2젙jj4Q_)?6; odJk(U|Y1kOe(wv۔<+lt55 g)K*UR%t٪9߸ ٗ/hv⮬>N)M|*j⨥:]eM${NH~ouoBjlc.H6K.*M+[m_1iJH ^O&׽~M 폚z|b躏=o5K.bʺ~E]xgǨ5j)U(Q&XVo˾4[CH4e!NK|~՛'Odzz gS-2fz穫yjk+k*e%j깧zo2swrV4 (TQQUDiimalvh#1EQNI5$I$П쫥={ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u{[&_;6oGѷ~7z)nf?{GZZH?ܟ5u?"?p>JΟIg%Qɘg~Lz'{P^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ["C6m?s̖5n5b*0J~碮?~v?_x/ߞ?"r$9340D3CښhKM🭃Dg?ߞj>'(#{u(u~{ߺ^׽u~2Mw]6Pv۹1y Zj*ie'hVF kuscs픍 вr#tt!єVVGT8换C+ A u6۷CQtOisπ?󵞓1YlcO{X"NhD^EGosD?i6ٻ?57nev][oq`&R8hhb$)QUԁVHC2"0ttp]IVVRYIA IJYIAA zdT׺u޿{Wzu}?ffcGܟݝيQf)yj}ghƟd|<ͻclgCibo)B6IQ(sݶqua+DM** pe$ > ©:{~}3ri V}=YW=s)p>:xpؚOO=Y0oߪ˯cV壊f~&IXUE\ٽʴq-@Z?ruƕ*I'@lM6۸ ]״^6yZܛw;CS frKMYEYM,UTR$l?6hYHJ::++@#69#5& ATF# ׶:^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺH잺->/6|쭟-1$Ts[SMGO|Iy$U+ݯsoSm廹"7GҥJ fm*ƀA'Zguf`*h*ITӭA*>]÷pl-2|⦡E1(& SQ7=]-u$r3;?ll O@Iǹtʢ@[*1юX Ϗ^|v:~e;ܙ$Ll4;Kdr[)MUۛ?lRdrE6;]t| QYMM.U\{y+ elll،LjJƯ5쑂D2FHQGH4n:W] UB" QR^y>|% Smmbzw/niv&׫1*\MU]T1ʍKpy Yv>ut؜T4k3cVj'{w;{c#.Nk+kt wP=I#` ]W;N!(ȇKPi4 S$L.R?0鋠*?Arl-7{SZ9DUTc瞵hyl{c&5Go ؆4 *T!6Gi* Z@ƫJhT^׽u~߅̟GSpf[J5ktt-c{M5v*69Saqu[ 9U2IK$trs@&^Ҽ $Br::9vշUkSBYtn[k}y ʟmW~~q|vyʟ?hlnN 18O-~Vso.%u7@> +4ҽ#u,m`GJh5qh:M*ғ{ormpgin.+rm}Ѷ9ݻ6v<?䖚X)jxHّ8ukscs%m г$tt%YXVVYX GRrG4k,LX  FA#lu~{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u}=u[?1}_Xl ?=Ӄ[?[)csnI騩润:'8HWm^ަ۳ws%tE o,K@UYN t-*TTT ZRt?ӞOѳ:zW^/v缔fq5ĥe[O U?7 7Mw_G-{KxDr.uF̍kia#0JkЀF֝(g)wޝyQg*?h/qmE_+?oTWrVQ5,Zit'M+ASn(r#pU] T~_ˣ-k]lƾak24wW)hr[>|VG*/%|>g OQTgޟ~96A _3:РWuWK  ee[bq-[xHGj\ʃ9 (+o-+]czUlϳS?e(t{oͻ2jjE ~s1SS w69[ۗ+ҥF Qv)jcmZD QJVo/?c;lW̖Tyyw~箒~ic~￿<{?q%YS#g鴭_Μ}["YA<|TǢwu ~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u!D?[oA=oYV/~ Oz*ns'"O#?OAK(?9D?MfK俤Ѽo 1DG~R=R^׽u~{ߺ^׽u~{ߺ^׽u~kk7ʟmWq޳q|vyʟ9ϳln2v18O֖V*o.[o:GtPҺ f 4ҽduo~ڧڏJjtq:V(֐(|Y)v7ޝEV)h{?w}/qm[aW?:eԆsǔ㔹W5%d,.hܧ*MKC=m(r'rNV]$КtX}-׺u{|p iTfn܅_LoiTf?G4*l5.pa9 5&Rq<_>d.SbHDUWaĀC ©:{~}3ri V}=YW=s)p>:xpؚOO=Y0ߪ˯cV壊f~&IXUENٽʴq-@Z?ruƕ*I'@hޘﭻ[:3zù75S;]Aix ϫ*jJ)^Q*<22 bnr[32X!(K(p*R +Pzo-/c2J(4%\@iU$Vq ʺS׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^-ߟ#:+]dc7j쾢ϼ?e(uWjj[5MSRSM yg9s]役z)m*]S\gPjFzI}enXyM ,EPXUVm/ҙݴ٬*>V-qQCܛ[vIwv;\A^l㙨v,']H|~V{B$Y$DbhELkt"!os-S FF"(:05rP_3RvNc<(Tx͟~y/||e7 KJٝ|\dl9N+(ޚIFv_g-4 wՊ&,ܷ}wMLґ¸UJ*H*EMNz:_ˇ2|cJ|ހ[ GطmL?_jIGGUOz&esQ{ɾDm$ g!%Ţ}Q̭#,UGor鿶++ZHB(̤a'_Nj%Mf{G X~&?߹諫O Ȝ?c>M ?7,69/F'`;皩ωJJ{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺHnݟ;/cv]91w$4U?m[MMYO恼si#V sٯSr%%GDԥKV]J̦UI]D`EVPhj* ЀGWA%‡1]OøR-|V⩡mKϺ+rU"3SO R%]Uu\i);?GlM1,GǶQtĦB$h-o۫\ ع4$$ *I2*FϽ~-v.KCuV-ɿo<5F3.9YO+faj+qg058 %Lэ^?yl]"z q0m,Q_DE(WRH"jN://vͭM&ShJ`og#׺u{FwŮǞޝEg('gvbY-En>jbYD11r/n?2Y{l:%PX&P%DJ:m]XJ8SJFIAeχ𪿐}uC4: /3XH*{{갽OxݻYk7W5qm-M%> ؈y䮃{{>"`3Q<*άһY+*-ܻun Q޴GQ*  cu 6:[_ ݥ2t`Pdϔx\ m[;&ϭQ,y*,ψ|H05vxhVt[HMjʲV&;)Lj@>R *&==:u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺Ώy(oocsYS}[^Ӣ[WqQm481;b%[=.bi+aZi)˜o<">`ֶ=$Fx2dd kx ^6r nݱlD $*;H T"M"jIl8덗`O}qT}ޭ/xMtEy6n'::^;O%kSf'j)r˒ ;]K\11Ӻ0 d.d,2o V;4{Lkp \j鮥*U9vv?}n*-}ϻqZm_b* G]SQf]eLTQTUGJYT<[)6}cf,Go prKUKURTQZ{uyw{ W. J&$ӅI|+[2>n(:5T𻣸w m&hkTQ5En63CeIBSID#S}nzWTv2$+ ƳK$^T'mM;|E2+Z 0%WSS8_~)|w9}O?g:^_tdqXPq>5n~7mo۾⎌WޱK⌙f lcp<1 ER A_ 2=lz~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ_ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u{[&_;6oGѷ~7z)nf?{GZZH?ܟ5u?"?p>JΟIg%Qɘg~Lz'{P^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ["C6m?s̖5n5b*0J~碮?~v?_x/ߞ?"r$9340D3CښhKM🭃Dg?ߞj>'(#{u(u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽t w>KY. [/vO&?Jfm< VAd(0u{L+CB*єj՛+> ^kmNk7{mՍCTSb-mǂc&IyZ(**]jk.Iֲ%?-!U~窣y!ZWQZ@ʎ4#};iɳLcjS(H  +MBB 7.C[ӨY?? -Og_7avw"''SS̴~.gr_4_8r:w`n,T<~|mg:,!%dLHI~!E !sEԪݗ1 G(:†"P {&}lԕa h:r?D]Y}w:Եs>{3y=l W?ּ)(,Ur:˿i)l[gu*C*ʿQ$^$a^!zܫo{H^hKJ M5Pg~hwf5٬&~<` evUl\^)i()q))+थ|"o'|#v[FVMvZD {h0gtY{X({nUHP0 8H`ݷ۸ ]x{wC/ a1qMGEGMT$QDj qFiIK33I$I'q kJT lu~{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֤?{oO3O~%Ug3F~|n߹뤤mw߻Iii r|yn(øm+s:}&gȖPD?&a1B{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~oc4n~=A2[aGpՋa*aۜ}~xȓ;@#qQjk/4o~ Q~yԠmxqԡ׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺLms?x`0in.Wm1T9ݻ6vL^oe#Yij"x9/\{e#C4,ete!ee $9hPE 0AkWSuonOplj|vlnpLAzjoCۛǤTOK<y+zȡy-ADArIi pՕw3MdZhUIhEATtUɿ3~1U_\z(X|/}|dzen 'XJxEQf6""IJ)*~T`&|Y+[ (fbmY;5* H1y+53-@ H% W"k)׽u~{ߺ^׽u`_u.ap{.6{;w}bpO{~}TԴl3SH馚)#b.jlI)>i$mZISI3vWz;ʤ6PZuQJGԫJGW+>-Y,ԁ33ۿ}4{*_M64S͊ BX$RG;̫!x̒$)@?ph*\oc}MI\Y 9p5 9+NE}r淥뼾}8ْ=xib0QVW7EEjSQu2eka%[QegZu0I@Z5UBT ~b@HJ1e֊40 46$;|>n ݗ???߲߲OM}0~nxSx4өuiKZTt),/} ͢:+ZWI4 +ƇӡJu{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{-*t.kLnܖrclw?\u۵8Lxde:4jpMm`گ/V([M2Xhє0VV*M@e4!6)WBTR+F Ҡ=So›?Zw~B-Kt_ gOy~OiS歗t6oOܫxWG hxuԺ5wi ]{v|zֺ##M)14ׁ1Z'V˭KKtF+0wGrb]~v}>)hf6JSNUe5GŐ@2&sH/|):`M@.j ҬL׹Ob *3Ph) 7 g}Wz3;q6O:is%[O1GW Pg)GJ<_ Yf`N`"IQۏ1o{wR*D BPsR ^y݋ۻםOwgCͭ޻9'>s+l*kj~ڊxI^[ٳY>\Eim54i.rEHH-纔Aj#hTI[|@ڻ۽3{/6>J#{֛[;o;P`kjabwkcA^8ާ9rY6nchh\HQܾm*D'@P$fd^Wʳ^FjPt RhUhj/?-5G/!]űfp8^'nc+qLY f 4PR)O>[lmtxRPD+L!G*G&l[<o/?c;lW̖Tyyw~箒~ic~￿<{?q%YS#g鴭_Μ}["YA<|TǢwu ~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u!D?[oA=oYV/~ Oz*ns'"O#?OAK(?9D?MfK俤Ѽo 1DG~R=R^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~WiW/uNro㪟6';֓9l}0[E$?cı _uGv(Vim %crCMG}v$u彗yV[( %BXi.Tu'ɿI^↺/&!axz=v neZ 򵯖66:$+%cF)9WlшyiepL,;QmpcQsu).{a bM E@O: EoM,j!.v~X.?,U7zC7m,4Ƨ31,x5z&6NrsZݠffEC;O[αL]#)E~ꣅn<*^@t@I #"^zu{{^׺u{!zcqVc'_OM⯾t5Ug滏MZ$cS%\q4G:QQ쿵;^hZ=@ej K* c䤑N*&@*+Bkg}/ adSf|f5tg^av۳'dPf+CUA!ckrty sSotm''۞EQ48@fK܂IJƺt=`TKpq*UVUX"`5u?+3v]m(3}OSVZh1U_xb5=5\WbiRXhIzxx[+3jKd F #YXGkEƴGY j1FXuZ fnhvBsU86ltn, 4qnJ*zbVi'82Ui2R-O4\{lX, Pc%JIam&bV2eԪyk,F^Y 4lI1"$Pן͇hv~3 !T]ۛK2ulTaw?T=?!cM42^^|GJm丌PLX_KU1 ꍃLa#fܛwym.[ ܛ_tmwnM)3x%*Zy^)bu6d`Lukscs%m г$tt%YXVVYX GGQѬ0e` "0A`u{{^׺u{{^׺u{ö;:noް鍥Smv:n*&7*饭:TA4"r>þs YlSL]I *ƬC2b( (H5奔b[R&*hM* N4]atݢ25M'}n(모jr1O[1wZGK*ɒJHh`u9G;?o-ie^#&#hVK6j+#S*AE5rbIo" v7kB~E+AZR%i֟fƿD=txF_~omTyex] 7*&U(5xu.]I}> I=k]k֘|+1Ewp}a2~L\elm7}i;q?IZmr$&G5!t۳tXSKP؊tYHgLP5Pjq+AU] gh> SegOԵyŒ][MyZ)*$V%GTD3˻?Gڝ姽*# ISX*HRBYCW^sa" R%I8Fi @* bG]vN}ՙUSjd]ˊWP!%K"i'fy$v?j}MdGmqJӣ2+G5F2*UU9w{9CB) (G$ԓ tK׽u~\WO3~NWR5'\Em)3YS}|zWbvYywecKOam#UbyJj)aNj{SʱiWXir\3蠙HVZ3IpT)/q^\ǸjAiL~v&r=퉩' 2+,RJF$ii݄v-Q $#8#d4|Pۯ7_Xt2 0q}ż(vE ?`o9m[KMS vIj*gwy$>di}{ #FdCH!*W%DUBUcmd~ BPt M99bMI$ԞKu{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~jC|$I4ͱ_2[Qz4mJGۙ}9Ė'gOFb;ҷ1:skwle?TCfS/׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^?ȇooͿ{73O>%Mf{G X~&?߹諫O Ȝ?c>M ?7,69/F'`;皩ωJJ{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u[ /ExwN3[reF;7[޺o~q=-dK-LoWTfoot9NMuLhˢ#HXIU:t0!H~rŻBbJ2ōIcRժA&Mu7 +۳P|ct\<=}oC&L+W=WAC&*12#Q&tdHkw*.VA;*YŊM-Čdn %$n>FTrAQfk FcQƇ~C~_ǿ~Ow>#ʟ]]od?ߞM_޴xiyO6Ҽj??uUԟ'VLJ|>̖:)ZLJhMf(O+Hv[v/Qo ^vޝaseo l\W񍳹 *j4 XK"6llr"%D7Kem,с {YLHѺҪUEEAzu{{^׺u{{^׺0O_Bݟџ&Afw&Gk?s?]mYCM6~JZi)xR$ 9;yoweP%Ŵ38@Yf`cJ]seq,*MHI4RhӶ ڛ1;\UdkSnOMv<$2u؜V7)EQIUh*`x؊ڏlo-#'RRH$=++q0E"ȷY]AUVtm! y{a>6-F_;?|)_J׿! y{a>oej׾jk{~o2u5WRk^Oں+CZ5?/^'߿m[wm]{_T}{p~/6-F_;{JP־w'nnS&j0\Fm/@MCW>xlCVr3RutxD_{5gs["=ܨJ{{^׺u'''tGOunPg}Ώ7o#޹on66gFzu&wm,k1<{_J ՙ}_WnL&ewL5Q(" hjEl _{vc6gҌJΟIg%Qɘg~Lz'{P^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ["C6m?s̖5n5b*0J~碮?~v?_x/ߞ?"r$9340D3CښhKM🭃Dg?ߞj>'(#{u(u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^/ۮwg:6݇{g? bmMOVSVSoG*ZHՂtkܶ{m.ca5)FUR)RA=3=Q.dFU24 C~O~O7ww>_?>ʟ]`Q}%d?ߞo=M_#/ެxvoҼg5??mifԟ#NL<>w])JSL*fjOkUv$s3>f]m(dp;SVZ*[gv5=5$1>iRX$I ysgo[2o3j%ZKd EKUt5uu ƴtY jsUh4Z悤;cznf|;'UOC= M\/PTGOQ Z6w;Azo6 XIqn@\ɨX%ᴫ;xNIz(sTzcqQm}{c'_St5U8蠭ۏMZ$V\q43QO$>G;]ohZ=@V( ԡ+Euʼi [9I" T=j8ZP҄Vw&[7qg~fڙ_rb[m,t?GMmLRRD*4r*${[khlYU::8 +)  z"9!J 4 A ׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ =AOONg ݏs ̡/*ϴo=^'Gs?-r߅bmqUn%[¦zfJM*K0;Oo|NQ_`o.f-Cl(a$ovŃi j,P%sy5 ֣a΢kALYKQ ]ݝn5WxS`+gSufOsLngqh1 nJJ*o=MU tV'bEq-K zt,"gPM,̦B+Zi8`J E-é鍻[e~j?=OllzNQUPcxwn<5&OZO 5ED{ǽo+w{#Sh;_6j#J*וyr3VqM{5 pI{zu~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֤?{oO3O~%Ug3F~|n߹뤤mw߻Iii r|yn(øm+s:}&gȖPD?&a1B{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~oc4n~=A2[aGpՋa*aۜ}~xȓ;@#qQjk/4o~ Q~yԠmxqԡ׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~mxIksC}m< cͽ_ialQ9WQ塽wcsmޢ^ui,gS6r%uG*m<,a _(;gލ?a\GZ0}O Tukpë?uYö;}a6zjH7FO-E KUj̵ *{sYې(SLAcs&R@U̺Yy(1f5A5'4w[6ΰd8 c#nCU]Mz-y}ljRı蒮8h#aPϻ^ﳢ+bzC%pF5FbbH2YE;H)P~q ?:qV7nK S;c:qWl^7u2KSGIQ%+bi`FR!P><6eЫX.f,+23 ОvC-P%#D$TU@4*Fo{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺZ=_ >o/?c;lW̖Tyyw~箒~ic~￿<{?q%YS#g鴭_Μ}["YA<|TǢwu ~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u!D?[oA=oYV/~ Oz*ns'"O#?OAK(?9D?MfK俤Ѽo 1DG~R=R^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~jC|$I4ͱ_2[Qz4mJGۙ}9Ė'gOFb;ҷ1:skwle?TCfS/׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^?ȇooͿ{73O>%Mf{G X~&?߹諫O Ȝ?c>M ?7,69/F'`;皩ωJJ{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u{[&_;6oGѷ~7z)nf?{GZZH?ܟ5u?"?p>JΟIg%Qɘg~Lz'{P^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ["C6m?s̖5n5b*0J~碮?~v?_x/ߞ?"r$9340D3CښhKM🭃Dg?ߞj>'(#{u(u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֤?{oO3O~%Ug3F~|n߹뤤mw߻Iii r|yn(øm+s:}&gȖPD?&a1B{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~oc4n~=A2[aGpՋa*aۜ}~xȓ;@#qQjk/4o~ Q~yԠmxqԡ׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺZ=_ >o/?c;lW̖Tyyw~箒~ic~￿<{?q%YS#g鴭_Μ}["YA<|TǢwu ~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u!D?[oA=oYV/~ Oz*ns'"O#?OAK(?9D?MfK俤Ѽo 1DG~R=R^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~jC|$I4ͱ_2[Qz4mJGۙ}9Ė'gOFb;ҷ1:skwle?TCfS/׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^?ȇooͿ{73O>%Mf{G X~&?߹諫O Ȝ?c>M ?7,69/F'`;皩ωJJ{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u{[&_;6oGѷ~7z)nf?{GZZH?ܟ5u?"?p>JΟIg%Qɘg~Lz'{P^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ["C6m?s̖5n5b*0J~碮?~v?_x/ߞ?"r$9340D3CښhKM🭃Dg?ߞj>'(#{u(u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֤?{oO3O~%Ug3F~|n߹뤤mw߻Iii r|yn(øm+s:}&gȖPD?&a1B{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~oc4n~=A2[aGpՋa*aۜ}~xȓ;@#qQjk/4o~ Q~yԠmxqԡ׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺZ=_ >o/?c;lW̖Tyyw~箒~ic~￿<{?q%YS#g鴭_Μ}["YA<|TǢwu ~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u!D?[oA=oYV/~ Oz*ns'"O#?OAK(?9D?MfK俤Ѽo 1DG~R=R^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~jC|$I4ͱ_2[Qz4mJGۙ}9Ė'gOFb;ҷ1:skwle?TCfS/׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^?ȇooͿ{73O>%Mf{G X~&?߹諫O Ȝ?c>M ?7,69/F'`;皩ωJJ{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u{[&_;6oGѷ~7z)nf?{GZZH?ܟ5u?"?p>JΟIg%Qɘg~Lz'{P^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ["C6m?s̖5n5b*0J~碮?~v?_x/ߞ?"r$9340D3CښhKM🭃Dg?ߞj>'(#{u(u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^֤?{oO3O~%Ug3F~|n߹뤤mw߻Iii r|yn(øm+s:}&gȖPD?&a1B{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~oc4n~=A2[aGpՋa*aۜ}~xȓ;@#qQjk/4o~ Q~yԠmxqԡ׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺZ=_ >o/?c;lW̖Tyyw~箒~ic~￿<{?q%YS#g鴭_Μ}["YA<|TǢwu ~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u!D?[oA=oYV/~ Oz*ns'"O#?OAK(?9D?MfK俤Ѽo 1DG~R=R^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~j s{⟛|޻.9тt^xfC2QF\tTqt)Ieݿ .o>sl~&-EԑTP[F@D,LG1Os6˶}XիEZ3SBTY&^%׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^?ȇooͿ{73O>%Mf{G X~&?߹諫O Ȝ?c>M ?7,69/F'`;皩ωJJ{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uw[w>u ռ49ݻnhV:eUToDf369J=ϸw)̍  {CF6eXu 0(Kp8s{$fa" Fewt&[qg^yrekrn,tL?I-MemeLUUTJ+3;zWkkmcmk 0qDDUTUUUTP4I4,YI$I$NI9'OoN{{^׺u{{^׺u{{^׺"-ofi {dvh?OQT'=ui÷9~'wwq'ɠF%3G%_h7l#?GqU??AC{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ֻm߀w'O hn,/WVvƭZvXꕖsSKVUQIŘD+?>ܧ3s24;,h*Q] 8Q`VyԂH0DI-|쑛 Ȉf CQiүܛqo-ş?{u治tnɕ-ɸe3yo)$52QUUQ+,HI]vVQ0ªƊTEPUTUP@I$4fbI$I&rI9$䞙=:u{{^׺u{{^׺u{{^{Cз7ͽsAzߦ =_?EF PUէ NDG1ܟ&Pr~S\IxbTg{o{Î{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺZ;u~ܟ_<.][CۿvjqycVZjYM,u[kmUF$Oc1cdrpGt4haFXYR $8GFl,k""ap.FQ)GqJrnMżxo kuךMѺ7&V;&IVT-EUUD,I#3'v6YF G(DD@Q@UUPU@uI$Hř$I$I$䓒zdT׺u{{^׺u{{^׺u{!Bߛ6of }?K~7hL%BsWV? ;sx/9wwr|n"YA!mMs4r_%&xO"?w5S::u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~kr~:uo wnj۹o-厩Yi7=e4mUđu ռ49ݻnhV:eUToDf369J=ϸw)̍  {CF6eXu 0(Kp8s{$fa" Fewt&[qg^yrekrn,tL?I-MemeLUUTJ+3;zWkkmcmk 0qDDUTUUUTP4I4,YI$I$NI9'OoN{{^׺u{{^׺u{{^׺"-ofi {dvh?OQT'=ui÷9~'wwq'ɠF%3G%_h7l#?GqU??AC{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ֻm߀w'O hn,/WVvƭZvXꕖsSKVUQIŘD+?>ܧ3s24;,h*Q] 8Q`VyԂH0DI-|쑛 Ȉf CQiүܛqo-ş?{u治tnɕ-ɸe3yo)$52QUUQ+,HI]vVQ0ªƊTEPUTUP@I$4fbI$I&rI9$䞙=:u{{^׺u{{^׺u{{^{Cз7ͽsAzߦ =_?EF PUէ NDG1ܟ&Pr~S\IxbTg{o{Î{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺZ;u~ܟ_<.][CۿvjqycVZjYM,u[kmUF$Oc1cdrpGt4haFXYR $8GFl,k""ap.FQ)GqJrnMżxo kuךMѺ7&V;&IVT-EUUD,I#3'v6YF G(DD@Q@UUPU@uI$Hř$I$I$䓒zdT׺u{{^׺u{{^׺u{!Bߛ6of }?K~7hL%BsWV? ;sx/9wwr|n"YA!mMs4r_%&xO"?w5S::u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~kr~:uo wnj۹o-厩Yi7=e4mUđu ռ49ݻnhV:eUToDf369J=ϸw)̍  {CF6eXu 0(Kp8s{$fa" Fewt&[qg^yrekrn,tL?I-MemeLUUTJ+3;zWkkmcmk 0qDDUTUUUTP4I4,YI$I$NI9'OoN{{^׺u{{^׺u{{^׺"-ofi {dvh?OQT'=ui÷9~'wwq'ɠF%3G%_h7l#?GqU??AC{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ֻm߀w'O hn,/WVvƭZvXꕖsSKVUQIŘD+?>ܧ3s24;,h*Q] 8Q`VyԂH0DI-|쑛 Ȉf CQiүܛqo-ş?{u治tnɕ-ɸe3yo)$52QUUQ+,HI]vVQ0ªƊTEPUTUP@I$4fbI$I&rI9$䞙=:u{{^׺u{{^׺u{{^{Cз7ͽsAzߦ =_?EF PUէ NDG1ܟ&Pr~S\IxbTg{o{Î{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺZ;u~ܟ_<.][CۿvjqycVZjYM,u[kmUF$Oc1cdrpGt4haFXYR $8GFl,k""ap.FQ)GqJrnMżxo kuךMѺ7&V;&IVT-EUUD,I#3'v6YF G(DD@Q@UUPU@uI$Hř$I$I$䓒zdT׺u{{^׺u{{^׺u{!Bߛ6of }?K~7hL%BsWV? ;sx/9wwr|n"YA!mMs4r_%&xO"?w5S::u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~kI῟V|Jۻׅ쟘Թ_*l]ECfYZ9-K%KPP`䬤 &4Ivne8Zd*Fz :UB [H>_=x{ `&XI$iwQPo6ܛyn,ݻ5ܛtnLvwqnMŝ)yI%Z^YevFgbOG-mmmaT4P*** I&3I$I5$I'$׽u~{ߺ^׽u~{ߺ^׽u~{ߺ["C6m?s̖5n5b*0J~碮?~v?_x/ߞ?"r$9340D3CښhKM🭃Dg?ߞj>'(#{u(u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u_?[e~N|_>[/վ|\ݭg|s  )Z(i;.xjyYnKZhHriخo/ 3@%P5(iZv{^׺u{{^׺u{{^׺u{!Bߛ6of }?K~7hL%BsWV? ;sx/9wwr|n"YA!mMs4r_%&xO"?w5S::u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u'*m,ܦc6oˎܛ#Wd(vݪ 7LW& f)>V\<>:FOk!D#I HDvb#r~6E$$XHQE TĎy~G׽u~{ߺ^׽u~{ߺ^׽u~{ߺ["C6m?s̖5n5b*0J~碮?~v?_x/ߞ?"r$9340D3CښhKM🭃Dg?ߞj>'(#{u(u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ_ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u[E]|ԛ#}|NڕqnNm\:eZŚ:jR'{3̖ܧͽV FyI\4#V@B,P4ɹrդUSPK1 PIrE*A5~R3~{ߺ^׽u~{ߺ^׽u~{ߺ["C6m?s̖5n5b*0J~碮?~v?_x/ߞ?"r$9340D3CښhKM🭃Dg?ߞj>'(#{u(u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~|?Euo/f !>[fnƲ-+ vO/'mݿS'U~_v[]jmR>$Os΅ҽc:lVOY#=(CpUTK~.={ߺ^׽u~{ߺ^׽u~oc4n~=A2[aGpՋa*aۜ}~xȓ;@#qQjk/4o~ Q~yԠmxqԡ׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~VC]Y>4n~,,=õ0?kk&Wui-#(rU#lfjif5h*)C3vǚbm$ce3FMn]ljK5BJ?{0mm"A1?LTN 5R-~{ۤd봺5.xlPv2aJi੤yi()jJIzYɱO20osir+F  0WՑ]YF8]\\єEAH {57^׽u~{ߺ^׽u!D?[oA=oYV/~ Oz*ns'"O#?OAK(?9D?MfK俤Ѽo 1DG~R=R^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺTݿOV3~# _* UMӝSK2VirC`blVT41C5^i2|//55.^b5r*~Q ITG!RKSyZۘ-#~DqBx'RWwGK~'ݛ'5]Ypgk UOM#MYEYM,ܕ RWRMe }|yi}ا[KZ0@ee`Uтn1$f? * AٯIu{{^׺"-ofi {dvh?OQT'=ui÷9~'wwq'ɠF%3G%_h7l#?GqU??AC{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^|X\l?ޔ?vz>۽{w)WlWg#뫒*h1R^^G.jHΪtDdK$@Eш\_%R-&5SSU j`k![ɼtO4G59_ݯ:_5 -v;`To>\qJ-U#xklE>dJs.U/zٵMǀThWO(cZoG{^׺"-ofi {dvh?OQT'=ui÷9~'wwq'ɠF%3G%_h7l#?GqU??AC{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺uߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~h lu۱?tz_GLo}sƹH?`p}Cl'gG__Ry]o,-d[._X_+ogY<Sa*T_S_/u"q%VqЧ_A|s׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^libhtmlparser-java-1.6.20060610/src/resources/logofiles/htmlparser2in.gif0000644000175000017500000000677310057466406025126 0ustar tiagotiagoGIF89a?6N㆔hzw큈䣮VjAX瞣ܣĒLa9-61#=*C稭闝, *!?,pH,Ȥrl2%T"O62 Pa,z- ` |NGCh9(qrx%6SUv#(dg%q5'|e'5pw4!!ouN=W%4#t#B6!!=t!93!6Bt3~;T6s52y0 5!O$=P4|HČ~(jaFGzXS@=,'V3`##h11{|"3PZMBaK9C<RAkXz=$F8xvI 1\'[|HH5r<5<H\xHN9 vXM4[5 <ȞM,'/!pY> ^C k(N/}0町Ulyt\޿)6&0z\b@I7r 0}ᗟEe <`t()X}HBu}"( -ȑ\U)P!!wH\~f >|Ò#&$`l&PW#6X>,X >&}Jq``PvLTWNT) 1qe0D@ &cBXe gK00gBL\ #xD >!M}"@ip@T[B*ܠRy 6Q õ-\~c.@NTЮ*FĠSAL/^㡑GȐa,hDxƱ s;QŸHl4t/CĀ@5@#1/tC `w2X S#Z+uC\0z|0A heJgܣv6C7h@pp*pA '^R.*qzW8t=[0 N+иpͯ[l)* +΄ m F`Jp, 0 pcN)xE` | P<F<o8#t\@;J?П`g;FzVT ,pF'hYr\깑 O DD~/|2Te;ʧ,+ںXc"zo8$("81:HAXBѶ4V D `lLL`qktQ8q =njɫ(txZѭ[ dp)HhCH"4|Ụ |Gt ?qĕICR=.cI  *H(A͌jJ35o], j^;6eK154G8!0`!a@>3\(BsbN>n/ 2* 7 I6ET9Kh ZP4 섞C?gً=ojTG"c*!5P~ 8cR9*_sM%J^_1GxQA'ZhRML}*Rskt!ĵZAU=F]D[T PR*!٨]ӊ!@Q$0AdXBcA}]&~'eȡ@w:!0 ™*]:ۖնBU eD z؇DzRՍ oe7:A':B~'&"3IFn;o 0 zJc\ᴠc͕s' NB >&Ln%QÑmLÆ*˦w=BEŒ9 fp5D:B:lVK ,BՐUE-$f̐V(E~>x`KZc Q (@F@7@Fk,ȃ͎@VSl-*x@|tno_ ` !P"N6k%{m  ${כ}. P%h8 P|;%6 g޾AJppo@vn<1:-`f 00o0@ fw?0s ⾕: 0v dn` \0I]YA:pr>x/ 45ׁ_ hj|dJ {*87@ ؞._%0eUD &<^ =wW>`D/No+u3k(A?|$8mr'\{g1qqYe}fxVSr76Am'mU0/+6&x ` 3S,H,2ȂQF{ 2|,&x05?gb0jDV"d'pJX*+j| YH!|iA{G.<E'OX0p/.`%dJg9f(=P+PP8,GBa8v.HL"ZYX.(2U-MA抠Bf0h.(z Yhch^@-B&jtZD`(ǰE/`؊?Ԉ8\+pT0E.!H),0Q9 P`bŌH)-NNqp pjRC,p#0 &01TX PZSWQ 2p-!/0P7UtmB~`1+T/I Ũ•- $Ɛ=98 e36*ɖcїёg\IBpB!+7%֘))y"oٙ間)i]ɚ2^ ᚒi&@5 iYI)1.II˹ y  YpN鞞I)<  PQU U/HqG  J0;libhtmlparser-java-1.6.20060610/src/resources/logofiles/htmlparser_cmyk.eps0000644000175000017500000312612010057466406025552 0ustar tiagotiago %!PS-Adobe-3.1 EPSF-3.0 %%Title: htmlparser pms.eps %%Creator: Adobe Illustrator(R) 11 %%AI8_CreatorVersion: 11.0.0 %AI9_PrintingDataBegin %%For: Me %%CreationDate: 6/1/04 %%BoundingBox: 0 0 329 275 %%HiResBoundingBox: 0 0 328.5801 274.9629 %%CropBox: 0 0 328.5801 274.9629 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %%Pages: 1 %%DocumentNeededResources: %%DocumentSuppliedResources: procset Adobe_AGM_Image (1.0 0) %%+ procset Adobe_CoolType_Utility_T42 (1.0 0) %%+ procset Adobe_CoolType_Utility_MAKEOCF (1.19 0) %%+ procset Adobe_CoolType_Core (2.23 0) %%+ procset Adobe_AGM_Core (2.0 0) %%+ procset Adobe_AGM_Utils (1.0 0) %%DocumentFonts: %%DocumentNeededFonts: %%DocumentNeededFeatures: %%DocumentSuppliedFeatures: %%DocumentProcessColors: Cyan Magenta Black %%DocumentCustomColors: %%CMYKCustomColor: %%RGBCustomColor: %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 108 8 %%BeginData: 10936 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD4FFFA8FFA8A87DA87DA87DA87DA87DA8A8FFA8FD6CFFA8A87D7D %7DA87DFD07A87DA87DA87D7D7DA8A8FFA8FD64FFA8A87DA8A8FFA8FD0DFF %A8FFA8A87DA87DA8A8FD60FFA8A87DA8A8FD17FFA8A87D7D7DA8A8FD5CFF %A8A8A8FD1DFFA8A87DA87DFD58FFA8A87DA8FD20FFA8A87D7D7DA8A8FD54 %FFA8A8A8FD25FFA8A87DA8A8FD52FFA8A8FD28FFA8A87D7D7DA8FD4FFFA8 %FD2DFF7DA87DFD4EFFA8FD2FFFA87D7DA8FD4BFFA8FD31FFA8A87DA8FD49 %FFA8FD33FFA87D7DA8A8FD7CFFA8A87DA8FD44FFA8A8FD37FFA8A87DA8A8 %FD41FFA9A8FD39FFA8A87DA8FD40FFA87EFD3BFFA8A87DA8FD3EFFA95AFD %3DFFA8A87DFD3EFF53FD3FFFA87D7DFD3CFF53A9FD40FF7DA8A8FD3AFF7E %54FD22FF7E532F5453532F542F7EFD16FF7D7DA8FD39FF54A9FD22FF7E01 %2907290729072953FD16FFA87DA8FD38FF7E53FD23FF7E07012907070129 %017EFD16FFA8A87DA8FD36FFCB29FD24FF7E072907290729072954FD17FF %A8A87DFD36FF2F54FD24FF7D07010701070607017EFD18FF7D7DA8FD34FF %A92FA9FD24FF8407290729072907295AFD19FF7DA8FD34FF542FFD25FF7E %29060701290707017EFD19FFA87DFD34FF07A9FD25FF7E01290729072907 %2953FD19FFA87DA8FD32FF7E29FD26FF7E07010706070107017EFD04FFA8 %FD15FF7DA8A8FD31FF5353FD08FFA97E7E7EA8A8FD09FFA8A87E7E7EFD0A %FF7E072907290729072954FFFFFFA92F54FD14FFA87DFD32FF07FD0429A9 %FFFF7E2901290107012929A8FD05FF7E2907012901070154A8FD07FF7E07 %012907070129017EFD04FF0629077EA8FD11FFA87DA8FD30FF7E29072901 %29A9FF2F29072907290729072907A8FFFFFF5301290729072907290129A8 %FD06FF7E072907290729072954FD04FF290729072953FD11FF7DA8FD11FF %A8A9A8A9A8A9A8FD11FFA8FD06FF540107060706A9290701070607010706 %07010701A9FF2F010701070607010706070129A8FD05FF7D070107010706 %07017EFD04FF0707010701070154A8FD0DFFA8A87DFD12FF07290729077E %FD10FF532FFD06FF29290729072929290729072907290729072907292954 %0729072907290729072907290754FD05FF8407290729072907295AFD04FF %29072907290729072953FD0DFFA8A8A8FD10FFA829010701297EFD0EFF7E %070707FD05FFA80701290707012907070129070701290707012907070129 %07070129070701290707012907A9FD04FF7E29060701290707017EFD04FF %070701290707012906070154A8FD0AFFA87DA8FD10FFA907290729017EFD %0CFFA82F0129072FFD05FFA9072907290729072907290729072907290729 %0729072907290729072907290729072907297EFD04FF7E01290729072907 %2953FD04FF2F07290729072907290729012953A9FD08FFA8A8A8FD10FFA8 %07010701077DFD0CFF5A0107010729FD05FF530701070107060701070107 %0107060701070607010706070107010701070607010706070154FD04FF7E %07010706070107017EFD04FFA87E29070107060701070607010701537EFD %07FF7DA8FD10FFA907290729077EFD0CFF7E290729072FFD05FF7E072907 %2907290729297E7E5407290729072907290729072F7E7E29290729072907 %29072953FD04FF7E072907290729072954FD07FF7E540729072907290729 %072907292FA9FD05FFA8A8FD0AFFA97E29A9FFFFA807012906077EFFA87E %53547EFD04FFA97E5301070129077E7EA8FFFF292907070129070729FD04 %FF2F0107012907070129012FA9FFFFFF29290707012907070153FD04FF7E %07012907070129017EFD09FFA9532901290607012907070129012F7EFFFF %FF7DA8FD09FF7E290129A8FFFFFF07290729077E7E290729012929CBFFFF %5429072907290729072929FFFF5301290729072907A9FD04FF7E29072907 %2907290729A8FD04FFA8062907290729072929FD04FF7E07290729072907 %2954FD0BFFA97E29290729072907290729072953FFFFA87DFD06FFA97E06 %07010701A9FFFFA80701070107290701070607010729FFFF7E0107010706 %0701070129FFFF2907010706070129FD05FFA9010706070107060706FD05 %FFA807010706070107012FFD04FF7D07010701070607017EFD0EFF7E2F01 %07010706070107012FFFFFA87DFD05FF5A29072907290729A8FFFFFF0729 %0729072907290729072907297EFF5429072907290729072929FFFF2F0729 %072907292FFD05FFA8290729072907290754FD05FFCB0729072907290729 %2FFD04FF8407290729072907295AFD10FFA9532F0729072907292FFFFFA8 %7DFFFFA97E062901070129012F7EFFFFFFA8290607012906070129060701 %29015AFF7E01070129070701290629FFFF2907012907070153FD05FFA901 %2907070129070729FD05FFA8070129070701290153FD04FF7E2906070129 %0707017EFD12FF2929060701290153FFFFA87DFF53290729072907292FA9 %FD05FFA90729072907297EA953290729072953FFA9FF53290729072FA8FF %A9FFFF2F07290729072929FD05FFA8290729072907290753FD06FF072907 %29072907292FFD04FF7E012907290729072953FD0FFF7E54072907290729 %07292FFFFFA87D0607010701070654A8FD07FFA807010706072FFFFFFF06 %0706070154FFFFFF7E0107010729FD05FF070706070107012FFD05FFA906 %0701070607010729FD05FFA8070107010706070153FD04FF7E0701070607 %0107017EFD0CFFA87E29070107060701070607012FFFFFA8A8290729072F %7EFD0AFFA907290729077EFFFFFF540729072953FFFFFF5A290729072FFD %05FF540729072907292FFD05FFA8290729072907290754FD06FF07290729 %072907292FFD04FF7E072907290729072954FD0BFF7E2F07290729072907 %2907290754A8FFFFA8A806070129297EFD0AFFA807012906077EFFFFFF29 %2907070154FFFFFF7E0107012929FD05FF2929070701290153FD05FFA907 %0701290707012929FD05FFA8290607012907070153FD04FF7E0701290707 %0129017EFD08FFA854070701290707012907070129297EFD04FF7DA82907 %290729072953FD09FF07290729077EFFFFFF530129072953FFFFFF532907 %29062FFD05FF540129072907292FFD05FFA8290729072907290154FD05FF %A9072907290729072929FD04FF7E072907290729072954FD06FFA92F2901 %29072907290729072907537EFD06FFA8A8A85406070107010701547EFD05 %FFA807010701077EFFFFFF290701070153FFFFFF7E0107060729FD05FF53 %07010706070153FD05FFA9010706070107060729FD05FFA8070107060701 %07012FFD04FF7D07010701070607017EFD04FF7E29010701070107060701 %07010729A8FD08FF7DA8FFFFFF532907290729072929A9FD04FF07290729 %077EFFFFFF540729072953FFFFFF532907290729A9FD04FFA80729072907 %292FFD05FFA8290729072907290754FD05FFA907290729072907292FFD04 %FF8407290729072907295AFD04FF290729072907290729072907547EFD0A %FFA8A8FD04FFA85A07070129060701A9FFFFA829060701297EFFFFFF2907 %01290154FFFFFF7E0129070701292953FFFFA807012907070153FD05FFA9 %012907070129070729FD05FFA8070129070701290153FD04FF7E29060701 %290707017EFD04FF0707012907070129010729A9FD0CFF7DFD08FF5A2901 %290729A8FFFFA907290729017EFFFFFF540729072953FFFFFF7E29072907 %29072929FFFFFF29290729072929FD05FFA8290729072907290753FD06FF %07290729072907292FFD04FF7E012907290729072953FFFFFFCB29072907 %2907290754A8FD0DFFA8A8FD09FFA87E060701A9FFFFA807010701077DFF %FFFF290701070154FD04FF0707010706070129FFFFFF5301070107012FFD %05FFA9060701070607010729FD05FFA8070107010706070153FD04FF7E07 %010706070107017EFD04FF06070607010753A9FD0FFFA8A8FD0CFF7E2FA8 %FFFFA907290729017EFFFFFF540729072953FD04FFA807290729022907FF %FFFF7E29072907292FFD05FFA8290729072907290754FD06FF0729072907 %2907292FFD04FF7E072907290729072954FD04FF290729075AA9FD11FF7D %FD0EFFA9FFFFFFA9FD057EA8FFFFFFFD047E59A9FD05FFA9535A535A53A9 %FFFFFFA906070129012FFD05FFA9060701290107012929FD05FFA8290107 %012901070153FD04FF7E07012901070129015AFD04FF012953A9FD12FFA8 %A8FD32FF2F0729292F53FD05FFA82F292F292F292F295AFD06FF292F292F %292F292953FD04FFA8292F292F292F29297EFD04FF7EA8FD14FFA8A8FD32 %FF530729FD09FFA8FFFFFFA8FFFFFFA8FD07FFA8FFFFFFA8FD0BFFA8FFFF %FFA8FD1BFF7DFD34FF07297EFD47FFA8A8FD34FF53012FFD08FFA8FFFFFF %A8FD07FFA8FD07FFA8FFFFFFA8FD07FFA8FFA8FD05FFA8FFFFFFA8FFFFFF %A8FFFFFFA8FD0AFFA8A8FD34FF7E2907A9FD07FF7D527D7D7D527DA8FFFF %A8527D527D7DFFFFFF7D7D527D7D7D52A8FFFFA87D527D527D7DFFA87D7D %7D527D527DFFFF527D527D7D7D52A8FD08FFA8FD36FF290729FD07FFFD07 %527DA8FF527D5252527DA8FFA87DFD0752FFA852527D527D527DFFA8527D %FD0552FFA87DFD0752FD07FF7DFD37FFA907297EFD06FF7D527D7DA8527D %52FFA87D527D7D7D52A8FFFF527D52A8A87D527DA8FF527D52FD04A8FFA8 %7D527D7DA87DA8FFFF527D52A8A87D527DA8FD05FFA8FD39FF530129A8FD %05FF525252FFFF7D527DA8A8527D7DA852527DFFA87D527DA8FF525252FF %A852527D527D52A8FFA8527D52FD047DFFA87D527DA8A8525252FD06FFA8 %A8FD38FFA8290754FD04FFA87D527D527D527D52FF7D7D52A8A87D527DFF %FF527D527D527D7DA8FFFF7D7D527D527D52FFA87D527D527D527DFFFF52 %7D527D527D7DFD07FFA8FD3AFF5307017EFD04FF527D5252527D52A8FF7D %527D527D525252FFA87D527D5252527DFFFFFD04A87D7D5252A8A8525252 %A8A8A87DFFA852527D5252527DFD06FFA8FD3CFF292907FFFFFFA87D527D %A8FFA8FFFFFF527D527D527D527DA8FF527D7DA8527D52A8FFFF527D527D %527D52FFA87D527D7D7D527DFFFF527D7DA8527D52A8FD04FFA8FD3DFFA9 %060729FFFFFF527D52FD05FF7D7D527DA8FF7D5252A8A87D527DA8A8527D %52A8A87D5252527D52A8FFA8527D527D525252FFA87D527DA87D527D52A8 %FFFFA8FD3FFF7E07292FFFFFFFA8FD07FFA8FD05FFA8FFA8FFFFFFA8FFFF %FFA8FFFFFFA8FFA8A8A8FD07FFA8FFA8FFFFFFA8FFA8FFFFFFA8FFFFFFA8 %FD41FF54010753FD39FFA8FD40FFA97EFF54012953FD79FF2F017EFF2F01 %2953FD35FFA8A9FD40FF540729017EFF5301292FFD33FFA8A8FD40FF2F01 %070607017EFF53010729A9FD30FF7E7EFD40FF53022907290729077EFF7E %072907A9FD2EFF54A9FD40FF530107012907070129017EFF7E06070154A9 %FD2AFFA853A8FD40FF530129072907290729017EFFFFFFA9292901297EFD %27FFA95453FD41FF2F01070107060701070154FD06FF5307010729A8FD24 %FF532F7EFD41FF540729072907290729077EFD08FFA854072907547EFD20 %FF7E297EFD42FF2F0129070701290707015AFD0BFFA829070129297EA8FD %1AFFA82F292FA9FD42FF540729072907290729075AFD0EFF7E5407290229 %297EA8FD14FFA9532F0754A8FD43FF2F0107060701070607015AFD11FFA9 %532901070107075353A8A8FFA8FD07FFA8A87E542929062953FD45FF5302 %29072907290729027EFD15FFA95A54292901290729072F292F2954292907 %29072907547EFD47FF5301070129070701290154FD1AFFA87E5354292907 %290729072F295353A8A8FD49FF530129072907290729017EFD74FF2F0107 %0107060701070154FD74FF540729072907290729077EFD74FF2F01290707 %01290707015AFD74FF540729072907290729075AFD74FF2F010706070107 %0607015AFD74FF530229072907290729027EFD74FF530107012907070129 %0154FD74FF530129072907290729017EFD74FF2F01070107060701070154 %FD74FF540729072907290729077EFD74FF2F0129070701290707015AFD74 %FF540729072907290729075AFD74FF2F0107060701070607015AFD74FF53 %0229072907290729027EFD74FF5301070129070701290154FD74FF530129 %072907290729017EFD74FF2F01070107060701070154FD74FF5407290729 %07290729077EFD74FF2F0129070701290707015AFD74FFA8072907290729 %0729075AFD75FF7E07010701070607015AFD77FF292907290729027EFD79 %FF070701290154FD7BFF2F29077EFD7DFFA8A9FD65FFFF %%EndData %%EndComments %%BeginDefaults %%ViewingOrientation: 1 0 0 1 %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Utils 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Utils 68 dict dup begin put /bdf { bind def } bind def /nd{ null def }bdf /xdf { exch def }bdf /ldf { load def }bdf /ddf { put }bdf /xddf { 3 -1 roll put }bdf /xpt { exch put }bdf /ndf { exch dup where{ pop pop pop }{ xdf }ifelse }def /cdndf { exch dup currentdict exch known{ pop pop }{ exch def }ifelse }def /bdict { mark }bdf /edict { counttomark 2 idiv dup dict begin {def} repeat pop currentdict end }def /ps_level /languagelevel where{ pop systemdict /languagelevel get exec }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr} stopped { -1 }if def /makereadonlyarray { /packedarray where{ pop packedarray }{ array astore readonly }ifelse }bdf /map_reserved_ink_name { dup type /stringtype eq{ dup /Red eq{ pop (_Red_) }{ dup /Green eq{ pop (_Green_) }{ dup /Blue eq{ pop (_Blue_) }{ dup () cvn eq{ pop (Process) }if }ifelse }ifelse }ifelse }if }bdf /AGMUTIL_GSTATE 22 dict def /get_gstate { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_clr_spc currentcolorspace def /AGMUTIL_GSTATE_clr_indx 0 def /AGMUTIL_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def} repeat pop /AGMUTIL_GSTATE_fnt rootfont def /AGMUTIL_GSTATE_lw currentlinewidth def /AGMUTIL_GSTATE_lc currentlinecap def /AGMUTIL_GSTATE_lj currentlinejoin def /AGMUTIL_GSTATE_ml currentmiterlimit def currentdash /AGMUTIL_GSTATE_do xdf /AGMUTIL_GSTATE_da xdf /AGMUTIL_GSTATE_sa currentstrokeadjust def /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def /AGMUTIL_GSTATE_op currentoverprint def /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit /AGMUTIL_GSTATE_gy_xfer xdf cvlit /AGMUTIL_GSTATE_b_xfer xdf cvlit /AGMUTIL_GSTATE_g_xfer xdf cvlit /AGMUTIL_GSTATE_r_xfer xdf /AGMUTIL_GSTATE_ht currenthalftone def /AGMUTIL_GSTATE_flt currentflat def end }def /set_gstate { AGMUTIL_GSTATE begin AGMUTIL_GSTATE_clr_spc setcolorspace AGMUTIL_GSTATE_clr_indx {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def} repeat setcolor AGMUTIL_GSTATE_fnt setfont AGMUTIL_GSTATE_lw setlinewidth AGMUTIL_GSTATE_lc setlinecap AGMUTIL_GSTATE_lj setlinejoin AGMUTIL_GSTATE_ml setmiterlimit AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash AGMUTIL_GSTATE_sa setstrokeadjust AGMUTIL_GSTATE_clr_rnd setcolorrendering AGMUTIL_GSTATE_op setoverprint AGMUTIL_GSTATE_bg cvx setblackgeneration AGMUTIL_GSTATE_ucr cvx setundercolorremoval AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer AGMUTIL_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or { currenthalftone /HalftoneType get AGMUTIL_GSTATE_ht /HalftoneType get ne { mark AGMUTIL_GSTATE_ht {sethalftone} stopped cleartomark } if }{ AGMUTIL_GSTATE_ht sethalftone } ifelse AGMUTIL_GSTATE_flt setflat end }def /get_gstate_and_matrix { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_ctm matrix currentmatrix def end get_gstate }def /set_gstate_and_matrix { set_gstate AGMUTIL_GSTATE begin AGMUTIL_GSTATE_ctm setmatrix end }def /AGMUTIL_str256 256 string def /AGMUTIL_src256 256 string def /AGMUTIL_dst64 64 string def /AGMUTIL_srcLen nd /AGMUTIL_ndx nd /agm_sethalftone { dup begin /_Data load /Thresholds xdf end level3 { sethalftone }{ dup /HalftoneType get 3 eq { sethalftone } {pop} ifelse }ifelse } def /rdcmntline { currentfile AGMUTIL_str256 readline pop (%) anchorsearch {pop} if } bdf /filter_cmyk { dup type /filetype ne{ exch () /SubFileDecode filter } { exch pop } ifelse [ exch { AGMUTIL_src256 readstring pop dup length /AGMUTIL_srcLen exch def /AGMUTIL_ndx 0 def AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ 1 index exch get AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put /AGMUTIL_ndx AGMUTIL_ndx 1 add def }for pop AGMUTIL_dst64 0 AGMUTIL_ndx getinterval } bind /exec cvx ] cvx } bdf /filter_indexed_devn { cvi Names length mul names_index add Lookup exch get } bdf /filter_devn { 4 dict begin /srcStr xdf /dstStr xdf dup type /filetype ne{ 0 () /SubFileDecode filter }if [ exch [ /devicen_colorspace_dict /AGMCORE_gget cvx /begin cvx currentdict /srcStr get /readstring cvx /pop cvx /dup cvx /length cvx 0 /gt cvx [ Adobe_AGM_Utils /AGMUTIL_ndx 0 /ddf cvx names_index Names length currentdict /srcStr get length 1 sub { 1 /index cvx /exch cvx /get cvx currentdict /dstStr get /AGMUTIL_ndx /load cvx 3 -1 /roll cvx /put cvx Adobe_AGM_Utils /AGMUTIL_ndx /AGMUTIL_ndx /load cvx 1 /add cvx /ddf cvx } for currentdict /dstStr get 0 /AGMUTIL_ndx /load cvx /getinterval cvx ] cvx /if cvx /end cvx ] cvx bind /exec cvx ] cvx end } bdf /AGMUTIL_imagefile nd /read_image_file { AGMUTIL_imagefile 0 setfileposition 10 dict begin /imageDict xdf /imbufLen Width BitsPerComponent mul 7 add 8 idiv def /imbufIdx 0 def /origDataSource imageDict /DataSource get def /origMultipleDataSources imageDict /MultipleDataSources get def /origDecode imageDict /Decode get def /dstDataStr imageDict /Width get colorSpaceElemCnt mul string def /srcDataStrs [ imageDict begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi string } repeat end ] def imageDict /MultipleDataSources known {MultipleDataSources}{false} ifelse { /imbufCnt imageDict /DataSource get length def /imbufs imbufCnt array def 0 1 imbufCnt 1 sub { /imbufIdx xdf imbufs imbufIdx imbufLen string put imageDict /DataSource get imbufIdx [ AGMUTIL_imagefile imbufs imbufIdx get /readstring cvx /pop cvx ] cvx put } for DeviceN_PS2 { imageDict begin /DataSource [ DataSource /devn_sep_datasource cvx ] cvx def /MultipleDataSources false def /Decode [0 1] def end } if }{ /imbuf imbufLen string def Indexed_DeviceN level3 not and DeviceN_NoneName or { imageDict begin /DataSource [AGMUTIL_imagefile Decode BitsPerComponent false 1 /filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource /exec cvx] cvx def /Decode [0 1] def end }{ imageDict /DataSource {AGMUTIL_imagefile imbuf readstring pop} put } ifelse } ifelse imageDict exch load exec imageDict /DataSource origDataSource put imageDict /MultipleDataSources origMultipleDataSources put imageDict /Decode origDecode put end } bdf /write_image_file { begin { (AGMUTIL_imagefile) (w+) file } stopped{ false }{ Adobe_AGM_Utils/AGMUTIL_imagefile xddf 2 dict begin /imbufLen Width BitsPerComponent mul 7 add 8 idiv def MultipleDataSources {DataSource 0 get}{DataSource}ifelse type /filetype eq { /imbuf imbufLen string def }if 1 1 Height { pop MultipleDataSources { 0 1 DataSource length 1 sub { DataSource type dup /arraytype eq { pop DataSource exch get exec }{ /filetype eq { DataSource exch get imbuf readstring pop }{ DataSource exch get } ifelse } ifelse AGMUTIL_imagefile exch writestring } for }{ DataSource type dup /arraytype eq { pop DataSource exec }{ /filetype eq { DataSource imbuf readstring pop }{ DataSource } ifelse } ifelse AGMUTIL_imagefile exch writestring } ifelse }for end true }ifelse end } bdf /close_image_file { AGMUTIL_imagefile closefile (AGMUTIL_imagefile) deletefile }def statusdict /product known userdict /AGMP_current_show known not and{ /pstr statusdict /product get def pstr (HP LaserJet 2200) eq pstr (HP LaserJet 4000 Series) eq or pstr (HP LaserJet 4050 Series ) eq or pstr (HP LaserJet 8000 Series) eq or pstr (HP LaserJet 8100 Series) eq or pstr (HP LaserJet 8150 Series) eq or pstr (HP LaserJet 5000 Series) eq or pstr (HP LaserJet 5100 Series) eq or pstr (HP Color LaserJet 4500) eq or pstr (HP Color LaserJet 4600) eq or pstr (HP LaserJet 5Si) eq or pstr (HP LaserJet 1200 Series) eq or pstr (HP LaserJet 1300 Series) eq or pstr (HP LaserJet 4100 Series) eq or { userdict /AGMP_current_show /show load put userdict /show { currentcolorspace 0 get /Pattern eq {false charpath f} {AGMP_current_show} ifelse } put }if currentdict /pstr undef } if /consumeimagedata { begin currentdict /MultipleDataSources known not {/MultipleDataSources false def} if MultipleDataSources { 1 dict begin /flushbuffer Width cvi string def 1 1 Height cvi { pop 0 1 DataSource length 1 sub { DataSource exch get dup type dup /filetype eq { exch flushbuffer readstring pop pop }if /arraytype eq { exec pop }if }for }for end } { /DataSource load type dup /filetype eq { 1 dict begin /flushbuffer Width Decode length 2 div mul cvi string def 1 1 Height { pop DataSource flushbuffer readstring pop pop} for end }if /arraytype eq { 1 1 Height { pop DataSource pop } for }if }ifelse end }bdf /addprocs { 2{/exec load}repeat 3 1 roll [ 5 1 roll ] bind cvx }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end sethalftone pop }ifelse }def /clonearray { dup xcheck exch dup length array exch Adobe_AGM_Core/AGMCORE_tmp -1 ddf { Adobe_AGM_Core/AGMCORE_tmp AGMCORE_tmp 1 add ddf dup type /dicttype eq { AGMCORE_tmp exch clonedict Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if dup type /arraytype eq { AGMCORE_tmp exch clonearray Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if exch dup AGMCORE_tmp 4 -1 roll put }forall exch {cvx} if }bdf /clonedict { dup length dict begin { dup type /dicttype eq { clonedict } if dup type /arraytype eq { clonearray } if def }forall currentdict end }bdf /DeviceN_PS2 { /currentcolorspace AGMCORE_gget 0 get /DeviceN eq level3 not and } bdf /Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget dup null ne { /CSD known }{ pop false } ifelse } bdf /DeviceN_NoneName { /Names where { pop false Names { (None) eq or } forall }{ false }ifelse } bdf /DeviceN_PS2_inRip_seps { /AGMCORE_in_rip_sep where { pop dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /DeviceN eq level3 not and AGMCORE_in_rip_sep and { /currentcolorspace exch AGMCORE_gput false } { true }ifelse } { true } ifelse } { true } ifelse } bdf /base_colorspace_type { dup type /arraytype eq {0 get} if } bdf /doc_setup{ Adobe_AGM_Utils begin }bdf /doc_trailer{ currentdict Adobe_AGM_Utils eq{ end }if }bdf systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright (C) 1997-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Core 216 dict dup begin put /nd{ null def }bind def /Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen [currentscreen] cvx def /AGMCORE_tmp 0 def /AGMCORE_&setgray nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&setcmykcolor nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_distilling nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSA_cache 0 dict def /AGMCORE_CSD_cache 0 dict def /AGMCORE_pattern_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_err_strings 4 dict def /AGMCORE_cur_err nd /AGMCORE_ovp nd /AGMCORE_current_spot_alias false def /AGMCORE_inverting false def /AGMCORE_feature_dictCount nd /AGMCORE_feature_opCount nd /AGMCORE_feature_ctm nd /AGMCORE_ConvertToProcess false def /AGMCORE_Default_CTM matrix def /AGMCORE_Default_PageSize nd /AGMCORE_currentbg nd /AGMCORE_currentucr nd /AGMCORE_gradientcache 32 dict def /AGMCORE_in_pattern false def /knockout_unitsq nd /AGMCORE_CRD_cache where{ pop }{ /AGMCORE_CRD_cache 0 dict def }ifelse /AGMCORE_key_known { where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /flushinput { save 2 dict begin /CompareBuffer 3 -1 roll def /readbuffer 256 string def mark { currentfile readbuffer {readline} stopped {cleartomark mark} { not {pop exit} if CompareBuffer eq {exit} if }ifelse }loop cleartomark end restore }bdf /getspotfunction { AGMCORE_screen exch pop exch pop dup type /dicttype eq{ dup /HalftoneType get 1 eq{ /SpotFunction get }{ dup /HalftoneType get 2 eq{ /GraySpotFunction get }{ pop { abs exch abs 2 copy add 1 gt{ 1 sub dup mul exch 1 sub dup mul add 1 sub }{ dup mul exch dup mul add 1 exch sub }ifelse }bind }ifelse }ifelse }if } def /clp_npth { clip newpath } def /eoclp_npth { eoclip newpath } def /npth_clp { newpath clip } def /add_grad { AGMCORE_gradientcache 3 1 roll put }bdf /exec_grad { AGMCORE_gradientcache exch get exec }bdf /graphic_setup { /AGMCORE_graphicsave save def concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth [] 0 setdash 10 setmiterlimit newpath false setoverprint false setstrokeadjust Adobe_AGM_Core/spot_alias get exec /Adobe_AGM_Image where { pop Adobe_AGM_Image/spot_alias 2 copy known{ get exec }{ pop pop }ifelse } if 100 dict begin /dictstackcount countdictstack def /showpage {} def mark } def /graphic_cleanup { cleartomark dictstackcount 1 countdictstack 1 sub {end}for end AGMCORE_graphicsave restore } def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def } { AGMCORE_str256 exch AGMCORE_tmp xpt /AGMCORE_tmp AGMCORE_tmp 1 add def } ifelse } forall } bdf /doc_setup{ Adobe_AGM_Core begin /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict /AGM_handleerror known not{ errordict /AGM_handleerror errordict /handleerror get put errordict /handleerror { Adobe_AGM_Core begin $error /newerror get AGMCORE_cur_err null ne and{ $error /newerror false put AGMCORE_cur_err compose_error_msg }if $error /newerror true put end errordict /AGM_handleerror get exec } bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err /AGMCORE_bad_environ def} if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def }if /AGMCORE_currentbg currentblackgeneration def /AGMCORE_currentucr currentundercolorremoval def /AGMCORE_distilling /product where{ pop systemdict/setdistillerparams known product (Adobe PostScript Parser) ne and }{ false }ifelse def level2 not{ /xput{ dup load dup length exch maxlength eq{ dup dup load dup length dup 0 eq {pop 1} if 2 mul dict copy def }if load begin def end }def }{ /xput{ load 3 1 roll put }def }ifelse /AGMCORE_GSTATE AGMCORE_key_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 10 def /AGMCORE_&gsave /gsave ldf /AGMCORE_&grestore /grestore ldf /AGMCORE_&grestoreall /grestoreall ldf /AGMCORE_&save /save ldf /AGMCORE_gdictcopy { begin { def } forall end }def /AGMCORE_gput { AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget { AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave { AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core exch /AGMCORE_gstackptr xpt AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore { AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt {1 add} if Adobe_AGM_Core exch /AGMCORE_gstackptr xpt }def /grestoreall { AGMCORE_&grestoreall Adobe_AGM_Core /AGMCORE_gstackptr AGMCORE_gstacksaveptr put }def /save { AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core begin /AGMCORE_gstackptr exch def /AGMCORE_gstacksaveptr AGMCORE_gstackptr def end AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def 0 1 AGMCORE_gstack length 1 sub { AGMCORE_gstack exch AGMCORE_gstackframekeys dict put } for }if level3 /AGMCORE_&sysshfill AGMCORE_key_known not and { /AGMCORE_&sysshfill systemdict/shfill get def /AGMCORE_&usrshfill /shfill load def /AGMCORE_&sysmakepattern systemdict/makepattern get def /AGMCORE_&usrmakepattern /makepattern load def }if /currentcmykcolor [0 0 0 0] AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace [/DeviceGray] AGMCORE_gput /sep_tint 0 AGMCORE_gput /devicen_tints [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /devicen_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent () AGMCORE_gput /customcolor_tint 1 AGMCORE_gput << /MaxPatternItem currentsystemparams /MaxPatternCache get >> setuserparams end }def /page_setup { /setcmykcolor where{ pop Adobe_AGM_Core/AGMCORE_&setcmykcolor /setcmykcolor load put }if Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor pop }ndf /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint { pop }ndf /currentoverprint { false }ndf /AGMCORE_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_have_reported_unsupported_color_space false def /AGMCORE_report_unsupported_color_space { AGMCORE_have_reported_unsupported_color_space false eq { (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.) == Adobe_AGM_Core /AGMCORE_have_reported_unsupported_color_space true ddf } if }def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_in_rip_sep /AGMCORE_in_rip_sep where{ pop AGMCORE_in_rip_sep }{ AGMCORE_distilling { false }{ userdict/Adobe_AGM_OnHost_Seps known{ false }{ level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse }ifelse }ifelse }ifelse def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ AGMCORE_distilling AGMCORE_producing_seps or }ifelse def /AGM_is_distiller_preserving_spotimages { currentdistillerparams/PreserveOverprintSettings known { currentdistillerparams/PreserveOverprintSettings get { currentdistillerparams/ColorConversionStrategy known { currentdistillerparams/ColorConversionStrategy get /LeaveColorUnchanged eq }{ true }ifelse }{ false }ifelse }{ false }ifelse }def /convert_spot_to_process where {pop}{ /convert_spot_to_process { dup map_alias { /Name get exch pop } if dup dup (None) eq exch (All) eq or { pop false }{ AGMCORE_host_sep { gsave 1 0 0 0 setcmykcolor currentgray 1 exch sub 0 1 0 0 setcmykcolor currentgray 1 exch sub 0 0 1 0 setcmykcolor currentgray 1 exch sub 0 0 0 1 setcmykcolor currentgray 1 exch sub add add add 0 eq { pop false }{ false setoverprint 1 1 1 1 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq }ifelse grestore }{ AGMCORE_distilling { pop AGM_is_distiller_preserving_spotimages not }{ Adobe_AGM_Core/AGMCORE_name xddf false Adobe_AGM_Core/AGMCORE_in_pattern known {Adobe_AGM_Core/AGMCORE_in_pattern get}{false} ifelse not currentpagedevice/OverrideSeparations known and { currentpagedevice/OverrideSeparations get { /HqnSpots /ProcSet resourcestatus { pop pop pop true }if }if }if { AGMCORE_name /HqnSpots /ProcSet findresource /TestSpot get exec not }{ gsave [/Separation AGMCORE_name /DeviceGray {}]setcolorspace false currentpagedevice/SeparationColorNames 2 copy known { get { AGMCORE_name eq or}forall not }{ pop pop pop true }ifelse grestore }ifelse }ifelse }ifelse }ifelse }def }ifelse /convert_to_process where {pop}{ /convert_to_process { dup length 0 eq { pop false }{ AGMCORE_host_sep { dup true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process and}ifelse } forall { true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch (Black) eq or and }forall not }{pop false}ifelse }{ false exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process or}ifelse } forall }ifelse }ifelse }def }ifelse /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots userdict/Adobe_AGM_OnHost_Seps known userdict/Adobe_AGM_InRip_Seps known or not and }ifelse { /setcmykcolor[ { 4 copy add add add 0 eq currentoverprint and{ pop 0.0005 }if }/exec cvx /AGMCORE_&setcmykcolor load dup type/operatortype ne{ /exec cvx }if ]cvx def }if AGMCORE_host_sep{ /setcolortransfer { AGMCORE_cyan_plate{ pop pop pop }{ AGMCORE_magenta_plate{ 4 3 roll pop pop pop }{ AGMCORE_yellow_plate{ 4 2 roll pop pop pop }{ 4 1 roll pop pop pop }ifelse }ifelse }ifelse settransfer } def /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def /AGMCORE_RemoveProcessColorNames { 1 dict begin /filtername { dup /Cyan eq 1 index (Cyan) eq or {pop (_cyan_)}if dup /Magenta eq 1 index (Magenta) eq or {pop (_magenta_)}if dup /Yellow eq 1 index (Yellow) eq or {pop (_yellow_)}if dup /Black eq 1 index (Black) eq or {pop (_black_)}if }def dup type /arraytype eq {[exch {filtername}forall]} {filtername}ifelse end }def /AGMCORE_IsSeparationAProcessColor { dup (Cyan) eq exch dup (Magenta) eq exch dup (Yellow) eq exch (Black) eq or or or }def level3 { /AGMCORE_IsCurrentColor { gsave false setoverprint 1 1 1 1 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq grestore }def /AGMCORE_filter_functiondatasource { 5 dict begin /data_in xdf data_in type /stringtype eq { /ncomp xdf /comp xdf /string_out data_in length ncomp idiv string def 0 ncomp data_in length 1 sub { string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put }for string_out }{ string /string_in xdf /string_out 1 string def /component xdf [ data_in string_in /readstring cvx [component /get cvx 255 /exch cvx /sub cvx string_out /exch cvx 0 /exch cvx /put cvx string_out]cvx [/pop cvx ()]cvx /ifelse cvx ]cvx /ReusableStreamDecode filter }ifelse end }def /AGMCORE_separateShadingFunction { 2 dict begin /paint? xdf /channel xdf begin FunctionType 0 eq { /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def currentdict /Decode known {/Decode Decode channel 2 mul 2 getinterval def}if paint? not {/Decode [1 1]def}if }if FunctionType 2 eq { paint? { /C0 [C0 channel get 1 exch sub] def /C1 [C1 channel get 1 exch sub] def }{ /C0 [1] def /C1 [1] def }ifelse }if FunctionType 3 eq { /Functions [Functions {channel paint? AGMCORE_separateShadingFunction} forall] def }if currentdict /Range known {/Range [0 1] def}if currentdict end end }def /AGMCORE_separateShading { 3 -1 roll begin currentdict /Function known { currentdict /Background known {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if Function 3 1 roll AGMCORE_separateShadingFunction /Function xdf /ColorSpace [/DeviceGray] def }{ ColorSpace dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] def }{ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put }ifelse ColorSpace 0 get /Separation eq { { [1 /exch cvx /sub cvx]cvx }{ [/pop cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll put pop }{ { [exch ColorSpace 1 get length 1 sub exch sub /index cvx 1 /exch cvx /sub cvx ColorSpace 1 get length 1 add 1 /roll cvx ColorSpace 1 get length{/pop cvx} repeat]cvx }{ pop [ColorSpace 1 get length {/pop cvx} repeat cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll bind put }ifelse ColorSpace 2 /DeviceGray put }ifelse end }def /AGMCORE_separateShadingDict { dup /ColorSpace get dup type /arraytype ne {[exch]}if dup 0 get /DeviceCMYK eq { exch begin currentdict AGMCORE_cyan_plate {0 true}if AGMCORE_magenta_plate {1 true}if AGMCORE_yellow_plate {2 true}if AGMCORE_black_plate {3 true}if AGMCORE_plate_ndx 4 eq {0 false}if dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading currentdict end exch }if dup 0 get /Separation eq { exch begin ColorSpace 1 get dup /None ne exch /All ne and { ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /Separation ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading }if }ifelse }{ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor 0 exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse }if currentdict end exch }if dup 0 get /DeviceN eq { exch begin ColorSpace 1 get convert_to_process { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /DeviceN ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading /ColorSpace [/DeviceGray] def }if }ifelse }{ currentdict false -1 ColorSpace 1 get { AGMCORE_IsCurrentColor { 1 add exch pop true exch exit }if 1 add }forall exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse currentdict end exch }if dup 0 get dup /DeviceCMYK eq exch dup /Separation eq exch /DeviceN eq or or not { exch begin ColorSpace dup type /arraytype eq {0 get}if /DeviceGray ne { AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { ColorSpace 0 get /CIEBasedA eq { /ColorSpace [/Separation /_ciebaseda_ /DeviceGray {}] def }if ColorSpace 0 get dup /CIEBasedABC eq exch dup /CIEBasedDEF eq exch /DeviceRGB eq or or { /ColorSpace [/DeviceN [/_red_ /_green_ /_blue_] /DeviceRGB {}] def }if ColorSpace 0 get /CIEBasedDEFG eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] }if currentdict 0 false AGMCORE_separateShading }if }if currentdict end exch }if pop dup /AGMCORE_ignoreshade known { begin /ColorSpace [/Separation (None) /DeviceGray {}] def currentdict end }if }def /shfill { clonedict AGMCORE_separateShadingDict dup /AGMCORE_ignoreshade known {pop} {AGMCORE_&sysshfill}ifelse }def /makepattern { exch dup /PatternType get 2 eq { clonedict begin /Shading Shading AGMCORE_separateShadingDict def currentdict end exch AGMCORE_&sysmakepattern }{ exch AGMCORE_&usrmakepattern }ifelse }def }if }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4 {4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ Adobe_AGM_Core begin /AGMCORE_k xdf /AGMCORE_y xdf /AGMCORE_m xdf /AGMCORE_c xdf end [/Separation 4 -1 roll /DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation (All) /DeviceGray {}] setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4 {4 index mul 4 1 roll} repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval {255 div} forall } bdf /map_indexed_devn { Lookup Names length 3 -1 roll cvi map_index } bdf /n_color_components { base_colorspace_type dup /DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse }bdf level2{ /mo /moveto ldf /li /lineto ldf /cv /curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def level2 /setcolorspace AGMCORE_key_known not and{ /AGMCORE_&&&setcolorspace /setcolorspace ldf /AGMCORE_ReplaceMappedColor { dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get dup /Separation eq { pop dup length array copy dup dup 1 get current_spot_alias { dup map_alias { begin /sep_colorspace_dict currentdict AGMCORE_gput pop pop pop [ /Separation Name CSA map_csa dup /MappedCSA xdf /sep_colorspace_proc load ] dup Name end }if }if map_reserved_ink_name 1 xpt }{ /DeviceN eq { dup length array copy dup dup 1 get [ exch { current_spot_alias{ dup map_alias{ /Name get exch pop }if }if map_reserved_ink_name } forall ] 1 xpt }if }ifelse }if }def /setcolorspace { dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /Indexed eq { AGMCORE_distilling { /PhotoshopDuotoneList where { pop false }{ true }ifelse }{ true }ifelse { aload pop 3 -1 roll AGMCORE_ReplaceMappedColor 3 1 roll 4 array astore }if }{ AGMCORE_ReplaceMappedColor }ifelse }if DeviceN_PS2_inRip_seps {AGMCORE_&&&setcolorspace} if }def }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /li{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1 [8 0 0 8 0 0] {} image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /currentScreenFreq{ currentscreen pop pop }def /setcolorspace { /currentcolorspace exch AGMCORE_gput } def /currentcolorspace { /currentcolorspace AGMCORE_gget } def /setcolor_devicecolor { base_colorspace_type dup /DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup /DeviceGray ne{ dup /DeviceCMYK ne{ dup /DeviceRGB ne{ dup /Separation eq{ pop currentcolorspace 3 get exec currentcolorspace 2 get }{ dup /Indexed eq{ pop currentcolorspace 3 get dup type /stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err /AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor } def }ifelse /sop /setoverprint ldf /lw /setlinewidth ldf /lc /setlinecap ldf /lj /setlinejoin ldf /ml /setmiterlimit ldf /dsh /setdash ldf /sadj /setstrokeadjust ldf /gry /setgray ldf /rgb /setrgbcolor ldf /cmyk /setcmykcolor ldf /sep /setsepcolor ldf /devn /setdevicencolor ldf /idx /setindexedcolor ldf /colr /setcolor ldf /csacrd /set_csa_crd ldf /sepcs /setsepcolorspace ldf /devncs /setdevicencolorspace ldf /idxcs /setindexedcolorspace ldf /cp /closepath ldf /clp /clp_npth ldf /eclp /eoclp_npth ldf /f /fill ldf /ef /eofill ldf /@ /stroke ldf /nclp /npth_clp ldf /gset /graphic_setup ldf /gcln /graphic_cleanup ldf currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and { bind }if def }forall /currentpagedevice currentpagedevice def /getrampcolor { /indx exch def 0 1 NumComp 1 sub { dup Samples exch get dup type /stringtype eq { indx get } if exch Scaling exch get aload pop 3 1 roll mul add } for ColorSpaceFamily /Separation eq { sep } { ColorSpaceFamily /DeviceN eq { devn } { setcolor }ifelse }ifelse } bind def /sssetbackground { aload pop setcolor } bind def /RadialShade { 40 dict begin /ColorSpaceFamily exch def /background exch def /ext1 exch def /ext0 exch def /BBox exch def /r2 exch def /c2y exch def /c2x exch def /r1 exch def /c1y exch def /c1x exch def /rampdict exch def /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if c1x c2x eq { c1y c2y lt {/theta 90 def}{/theta 270 def} ifelse } { /slope c2y c1y sub c2x c1x sub div def /theta slope 1 atan def c2x c1x lt c2y c1y ge and { /theta theta 180 sub def} if c2x c1x lt c2y c1y lt and { /theta theta 180 add def} if } ifelse gsave clippath c1x c1y translate theta rotate -90 rotate { pathbbox } stopped { 0 0 0 0 } if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end } { /max { 2 copy gt { pop } {exch pop} ifelse } bind def /min { 2 copy lt { pop } {exch pop} ifelse } bind def rampdict begin 40 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave c1x c1y translate theta rotate -90 rotate /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def /c1y 0 def /c1x 0 def /c2x 0 def ext0 { 0 getrampcolor c2y r2 add r1 sub 0.0001 lt { c1x c1y r1 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2y r1 add r2 le { c1x c1y r1 0 360 arc fill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r1 neg def /p1y c1y def /p2x r1 def /p2y c1y def p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto fill } { /AA r2 r1 sub c2y div def /theta AA 1 AA dup mul sub sqrt div 1 atan def /SS1 90 theta add dup sin exch cos div def /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y p1x SS1 div neg def /SS2 90 theta sub dup sin exch cos div def /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y p2x SS2 div neg def r1 r2 gt { /L1maxX p1x yMin p1y sub SS1 div add def /L2maxX p2x yMin p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if c1x c2x sub dup mul c1y c2y sub dup mul add 0.5 exp 0 dtransform dup mul exch dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop /hires exch def hires mul /numpix exch def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if /xInc c2x c1x sub numsteps div def /yInc c2y c1y sub numsteps div def /rInc r2 r1 sub numsteps div def /cx c1x def /cy c1y def /radius r1 def newpath xInc 0 eq yInc 0 eq rInc 0 eq and and { 0 getrampcolor cx cy radius 0 360 arc stroke NumSamples 1 sub getrampcolor cx cy radius 72 hires div add 0 360 arc 0 setlinewidth stroke } { 0 numsteps { dup subsampling { round cvi } if getrampcolor cx cy radius 0 360 arc /cx cx xInc add def /cy cy yInc add def /radius radius rInc add def cx cy radius 360 0 arcn eofill rampIndxInc add } repeat pop } ifelse ext1 { c2y r2 add r1 lt { c2x c2y r2 0 360 arc fill } { c2y r1 add r2 sub 0.0001 le { c2x c2y r2 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r2 neg def /p1y c2y def /p2x r2 def /p2y c2y def p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto fill } { /AA r2 r1 sub c2y div def /theta AA 1 AA dup mul sub sqrt div 1 atan def /SS1 90 theta add dup sin exch cos div def /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y c2y p1x SS1 div sub def /SS2 90 theta sub dup sin exch cos div def /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y c2y p2x SS2 div sub def r1 r2 lt { /L1maxX p1x yMax p1y sub SS1 div add def /L2maxX p2x yMax p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if grestore grestore end end end } ifelse } bind def /GenStrips { 40 dict begin /ColorSpaceFamily exch def /background exch def /ext1 exch def /ext0 exch def /BBox exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def /rampdict exch def /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if x1 x2 eq { y1 y2 lt {/theta 90 def}{/theta 270 def} ifelse } { /slope y2 y1 sub x2 x1 sub div def /theta slope 1 atan def x2 x1 lt y2 y1 ge and { /theta theta 180 sub def} if x2 x1 lt y2 y1 lt and { /theta theta 180 add def} if } ifelse gsave clippath x1 y1 translate theta rotate { pathbbox } stopped { 0 0 0 0 } if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end } { rampdict begin 20 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave x1 y1 translate theta rotate /xStart 0 def /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def /ySpan yMax yMin sub def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def xStart 0 transform xEnd 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop mul /numpix exch def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if ext0 { 0 getrampcolor xMin xStart lt { xMin yMin xMin neg ySpan rectfill } if } if /xInc xEnd xStart sub numsteps div def /x xStart def 0 numsteps { dup subsampling { round cvi } if getrampcolor x yMin xInc ySpan rectfill /x x xInc add def rampIndxInc add } repeat pop ext1 { xMax xEnd gt { xEnd yMin xMax xEnd sub ySpan rectfill } if } if grestore grestore end end end } ifelse } bind def }def /page_trailer { end }def /doc_trailer{ }def systemdict /findcolorrendering known{ /findcolorrendering systemdict /findcolorrendering get def }if systemdict /setcolorrendering known{ /setcolorrendering systemdict /setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { dup Adobe_AGM_Core/AGMCORE_name xddf convert_spot_to_process not }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA map_csa setcolorspace_opt set_crd end } def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup /sep_tint exch AGMCORE_gput TintProc end } def /setdevicencolor { /devicen_colorspace_dict AGMCORE_gget begin Names length copy Names length 1 sub -1 0 { /devicen_tints AGMCORE_gget 3 1 roll xpt } for TintProc end } def /sep_colorspace_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2 {AGMCORE_tmp mul NComponents 1 roll} repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll } repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end } def /sep_colorspace_gray_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end } def /sep_proc_name { dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not and{ pop [/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse } def /setsepcolorspace { current_spot_alias{ dup begin Name map_alias{ exch pop }if end }if dup /sep_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def Adobe_AGM_Core/AGMCORE_sep_special Name dup () eq exch (All) eq or ddf AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch { 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec cvx ] cvx ] setcolorspace_opt /TintProc { 255 mul round cvi setcolor }bdf }{ MappedCSA 0 get /DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc [ Components aload pop Name findcmykcustomcolor /exch cvx /setcustomcolor cvx ] cvx bdf }{ AGMCORE_host_sep Name (All) eq and{ /TintProc { 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK eq and AGMCORE_host_sep or Name () eq and{ /TintProc [ MappedCSA sep_proc_name exch 0 get /DeviceCMYK eq{ cvx /setcmykcolor cvx }{ cvx /setgray cvx }ifelse ] cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc [ /dup cvx MappedCSA sep_proc_name cvx exch 0 get /DeviceGray eq{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx }if /Name cvx /findcmykcustomcolor cvx /exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep /Name cvx /AGMCORE_IsSeparationAProcessColor load /exec cvx /not cvx /and cvx }{ Name inRip_spot_has_ink not }ifelse [ /pop cvx 1 ] cvx /if cvx /setcustomcolor cvx ] cvx bdf }{ /TintProc /setcolor ldf [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd setsepcolor end } def /additive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 0 1 numarrays 1 sub { 1 exch add /index cvx c1 /get cvx /mul cvx }for numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /subtractive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 1 0 1 numarrays 1 sub { 1 3 3 -1 roll add /index cvx c1 /get cvx /sub cvx /mul cvx }for /sub cvx numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /exec_tint_transform { /TintProc [ /TintTransform cvx /setcolor cvx ] cvx bdf MappedCSA setcolorspace_opt } bdf /devn_makecustomcolor { 2 dict begin /names_index xdf /Names xdf 1 1 1 1 Names names_index get findcmykcustomcolor /devicen_tints AGMCORE_gget names_index get setcustomcolor Names length {pop} repeat end } bdf /setdevicencolorspace { dup /AliasedColorants known {false}{true}ifelse current_spot_alias and { 6 dict begin /names_index 0 def dup /names_len exch /Names get length def /new_names names_len array def /new_LookupTables names_len array def /alias_cnt 0 def dup /Names get { dup map_alias { exch pop dup /ColorLookup known { dup begin new_LookupTables names_index ColorLookup put end }{ dup /Components known { dup begin new_LookupTables names_index Components put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse new_names names_index 3 -1 roll /Name get put /alias_cnt alias_cnt 1 add def }{ /name xdf new_names names_index name put dup /LookupTables known { dup begin new_LookupTables names_index LookupTables names_index get put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse /names_index names_index 1 add def } forall alias_cnt 0 gt { /AliasedColorants true def 0 1 names_len 1 sub { /names_index xdf new_LookupTables names_index get 0 get null eq { dup /Names get names_index get /name xdf name (Cyan) eq name (Magenta) eq name (Yellow) eq name (Black) eq or or or not { /AliasedColorants false def exit } if } if } for AliasedColorants { dup begin /Names new_names def /AliasedColorants true def /LookupTables new_LookupTables def currentdict /TTTablesIdx known not { /TTTablesIdx -1 def } if currentdict /NComponents known not { /NComponents TintMethod /Subtractive eq {4}{3}ifelse def } if end } if }if end } if dup /devicen_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def currentdict /AliasedColorants known { AliasedColorants }{ false } ifelse /TintTransform load type /nulltype eq or { /TintTransform [ 0 1 Names length 1 sub { /TTTablesIdx TTTablesIdx 1 add def dup LookupTables exch get dup 0 get null eq { 1 index Names exch get dup (Cyan) eq { pop exch LookupTables length exch sub /index cvx 0 0 0 } { dup (Magenta) eq { pop exch LookupTables length exch sub /index cvx 0 /exch cvx 0 0 } { (Yellow) eq { exch LookupTables length exch sub /index cvx 0 0 3 -1 /roll cvx 0 } { exch LookupTables length exch sub /index cvx 0 0 0 4 -1 /roll cvx } ifelse } ifelse } ifelse 5 -1 /roll cvx /astore cvx } { dup length 1 sub LookupTables length 4 -1 roll sub 1 add /index cvx /mul cvx /round cvx /cvi cvx /get cvx } ifelse Names length TTTablesIdx add 1 add 1 /roll cvx } for Names length [/pop cvx] cvx /repeat cvx NComponents Names length TintMethod /Subtractive eq { subtractive_blend } { additive_blend } ifelse ] cvx bdf } if AGMCORE_host_sep { Names convert_to_process { exec_tint_transform } { currentdict /AliasedColorants known { AliasedColorants not }{ false } ifelse 5 dict begin /AvoidAliasedColorants xdf /painted? false def /names_index 0 def /names_len Names length def Names { AvoidAliasedColorants { /currentspotalias current_spot_alias def false set_spot_alias } if AGMCORE_is_cmyk_sep { dup (Cyan) eq AGMCORE_cyan_plate and exch dup (Magenta) eq AGMCORE_magenta_plate and exch dup (Yellow) eq AGMCORE_yellow_plate and exch (Black) eq AGMCORE_black_plate and or or or { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def } if painted? {exit} if }{ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def exit } if } ifelse AvoidAliasedColorants { currentspotalias set_spot_alias } if /names_index names_index 1 add def } forall painted? { /devicen_colorspace_dict AGMCORE_gget /names_index names_index put }{ /devicen_colorspace_dict AGMCORE_gget /TintProc [ names_len [/pop cvx] cvx /repeat cvx 1 /setseparationgray cvx 0 0 0 0 () /findcmykcustomcolor cvx 0 /setcustomcolor cvx ] cvx ddf } ifelse end } ifelse } { AGMCORE_in_rip_sep { Names convert_to_process not }{ level3 } ifelse { [/DeviceN Names MappedCSA /TintTransform load] setcolorspace_opt /TintProc level3 not AGMCORE_in_rip_sep and { [ Names /length cvx [/pop cvx] cvx /repeat cvx ] cvx bdf }{ /setcolor ldf } ifelse }{ exec_tint_transform } ifelse } ifelse set_crd /AliasedColorants false def end } def /setindexedcolorspace { dup /indexed_colorspace_dict exch AGMCORE_gput begin currentdict /CSD known { CSD get_csd /Names known { CSD get_csd begin currentdict devncs AGMCORE_host_sep{ 4 dict begin /devnCompCnt Names length def /NewLookup HiVal 1 add string def 0 1 HiVal { /tableIndex xdf Lookup dup type /stringtype eq { devnCompCnt tableIndex map_index }{ exec } ifelse setdevicencolor currentgray tableIndex exch HiVal mul cvi NewLookup 3 1 roll put } for [/Indexed currentcolorspace HiVal NewLookup] setcolorspace_opt end }{ level3 { [/Indexed [/DeviceN Names MappedCSA /TintTransform load] HiVal Lookup] setcolorspace_opt }{ [/Indexed MappedCSA HiVal [ Lookup dup type /stringtype eq {/exch cvx CSD get_csd /Names get length dup /mul cvx exch /getinterval cvx {255 div} /forall cvx} {/exec cvx}ifelse /TintTransform load /exec cvx ]cvx ]setcolorspace_opt }ifelse } ifelse end }{ } ifelse set_crd } { /MappedCSA CSA map_csa def AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or{ pop [/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval {} forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end } bind }{ Lookup }ifelse }ifelse ] setcolorspace_opt set_crd }ifelse }ifelse end }def /setindexedcolor { AGMCORE_host_sep { /indexed_colorspace_dict AGMCORE_gget dup /CSD known { begin CSD get_csd begin map_indexed_devn devn end end }{ AGMCORE_gget/Lookup get 4 3 -1 roll map_index pop setcmykcolor } ifelse }{ level3 not AGMCORE_in_rip_sep and /indexed_colorspace_dict AGMCORE_gget /CSD known and { /indexed_colorspace_dict AGMCORE_gget /CSD get get_csd begin map_indexed_devn devn end } { setcolor } ifelse }ifelse } def /ignoreimagedata { currentoverprint not{ gsave dup clonedict begin 1 setgray /Decode [0 1] def /DataSource def /MultipleDataSources false def /BitsPerComponent 8 def currentdict end systemdict /image get exec grestore }if consumeimagedata }def /add_csa { Adobe_AGM_Core begin /AGMCORE_CSA_cache xput end }def /get_csa_by_name { dup type dup /nametype eq exch /stringtype eq or{ Adobe_AGM_Core begin 1 dict begin /name xdf AGMCORE_CSA_cache { 0 get name eq { exit }{ pop } ifelse }forall end end }{ pop } ifelse }def /map_csa { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSA_cache get exch get }if }def /add_csd { Adobe_AGM_Core begin /AGMCORE_CSD_cache xput end }def /get_csd { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSD_cache get exch get }if }def /pattern_buf_init { /count get 0 0 put } def /pattern_buf_next { dup /count get dup 0 get dup 3 1 roll 1 add 0 xpt get } def /cachepattern_compress { 5 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def /string_size 16000 def /readbuffer string_size string def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal /LZWFilter { exch dup length 0 eq { pop }{ patarray dup length 1 sub 3 -1 roll put } ifelse {string_size}{0}ifelse string } /LZWEncode filter def { ReadFilter readbuffer readstring exch LZWFilter exch writestring not {exit} if } loop LZWFilter closefile patarray end }def /cachepattern { 2 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal { ReadFilter 16000 string readstring exch patarray dup length 1 sub 3 -1 roll put not {exit} if } loop patarray dup dup length 1 sub () put end }def /add_pattern { Adobe_AGM_Core begin /AGMCORE_pattern_cache xput end }def /get_pattern { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_pattern_cache get exch get dup wrap_paintproc }if }def /wrap_paintproc { statusdict /currentfilenameextend known{ begin /OldPaintProc /PaintProc load def /PaintProc { mark exch dup /OldPaintProc get stopped {closefile restore end} if cleartomark } def end } {pop} ifelse } def /make_pattern { dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform exch 3 index /XStep get 1 index exch 2 copy div cvi mul sub sub exch 3 index /YStep get 1 index exch 2 copy div cvi mul sub sub matrix translate exch matrix concatmatrix 1 index begin BBox 0 get XStep div cvi XStep mul /xshift exch neg def BBox 1 get YStep div cvi YStep mul /yshift exch neg def BBox 0 get xshift add BBox 1 get yshift add BBox 2 get xshift add BBox 3 get yshift add 4 array astore /BBox exch def [ xshift yshift /translate load null /exec load ] dup 3 /PaintProc load put cvx /PaintProc exch def end gsave 0 setgray makepattern grestore }def /set_pattern { dup /PatternType get 1 eq{ dup /PaintType get 1 eq{ currentoverprint sop [/DeviceGray] setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{ pop }{ setcolorspace }ifelse }def /updatecolorrendering { currentcolorrendering/Intent known{ currentcolorrendering/Intent get }{ null }ifelse Intent ne{ false Intent AGMCORE_CRD_cache { exch pop begin dup Intent eq{ currentdict setcolorrendering_opt end exch pop true exch exit }if end } forall pop not{ systemdict /findcolorrendering known{ Intent findcolorrendering pop /ColorRendering findresource dup length dict copy setcolorrendering_opt }if }if }if } def /add_crd { AGMCORE_CRD_cache 3 1 roll put }def /set_crd { AGMCORE_host_sep not level2 and{ currentdict/CRD known{ AGMCORE_CRD_cache CRD get dup null ne{ setcolorrendering_opt }{ pop }ifelse }{ currentdict/Intent known{ updatecolorrendering }if }ifelse currentcolorspace dup type /arraytype eq {0 get}if /DeviceRGB eq { currentdict/UCR known {/UCR}{/AGMCORE_currentucr}ifelse load setundercolorremoval currentdict/BG known {/BG}{/AGMCORE_currentbg}ifelse load setblackgeneration }if }if }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /cpaint_gcomp { convert_to_process Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf Adobe_AGM_Core/AGMCORE_ConvertToProcess get not { (%end_cpaint_gcomp) flushinput }if }def /cpaint_gsep { Adobe_AGM_Core/AGMCORE_ConvertToProcess get { (%end_cpaint_gsep) flushinput }if }def /cpaint_gend { newpath }def /path_rez { dup 0 ne{ AGMCORE_deviceDPI exch div dup 1 lt{ pop 1 }if setflat }{ pop }ifelse }def /set_spot_alias_ary { /AGMCORE_SpotAliasAry where{ pop pop }{ Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf true set_spot_alias }ifelse }def /set_spot_alias { /AGMCORE_SpotAliasAry where{ /AGMCORE_current_spot_alias 3 -1 roll put }{ pop }ifelse }def /current_spot_alias { /AGMCORE_SpotAliasAry where{ /AGMCORE_current_spot_alias get }{ false }ifelse }def /map_alias { /AGMCORE_SpotAliasAry where{ begin /AGMCORE_name xdf false AGMCORE_SpotAliasAry{ dup/Name get AGMCORE_name eq{ save exch /Adobe_AGM_Core currentdict def /CSD get get_csd exch restore exch pop true exit }{ pop }ifelse }forall end }{ pop false }ifelse }bdf /spot_alias { true set_spot_alias /AGMCORE_&setcustomcolor AGMCORE_key_known not { Adobe_AGM_Core/AGMCORE_&setcustomcolor /setcustomcolor load put } if /customcolor_tint 1 AGMCORE_gput Adobe_AGM_Core begin /setcustomcolor { dup /customcolor_tint exch AGMCORE_gput current_spot_alias{ 1 index 4 get map_alias{ mark 3 1 roll setsepcolorspace counttomark 0 ne{ setsepcolor }if pop pop }{ AGMCORE_&setcustomcolor }ifelse }{ AGMCORE_&setcustomcolor }ifelse }bdf end }def /begin_feature { Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if }def /end_feature { 2 dict begin /spd /setpagedevice load def /setpagedevice { get_gstate spd set_gstate } def stopped{$error/newerror false put}if end count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if }def /set_negative { Adobe_AGM_Core begin /AGMCORE_inverting exch def level2{ currentpagedevice/NegativePrint known{ currentpagedevice/NegativePrint get Adobe_AGM_Core/AGMCORE_inverting get ne{ true begin_feature true{ bdict /NegativePrint Adobe_AGM_Core/AGMCORE_inverting get edict setpagedevice }end_feature }if /AGMCORE_inverting false def }if }if AGMCORE_inverting{ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer gsave newpath clippath 1 /setseparationgray where{pop setseparationgray}{setgray}ifelse /AGMIRS_&fill where {pop AGMIRS_&fill}{fill} ifelse grestore }if end }def /lw_save_restore_override { /md where { pop md begin initializepage /initializepage{}def /pmSVsetup{} def /endp{}def /pse{}def /psb{}def /orig_showpage where {pop} {/orig_showpage /showpage load def} ifelse /showpage {orig_showpage gR} def end }if }def /pscript_showpage_override { /NTPSOct95 where { begin showpage save /showpage /restore load def /restore {exch pop}def end }if }def /driver_media_override { /md where { pop md /initializepage known { md /initializepage {} put } if md /rC known { md /rC {4{pop}repeat} put } if }if /mysetup where { /mysetup [1 0 0 1 0 0] put }if Adobe_AGM_Core /AGMCORE_Default_CTM matrix currentmatrix put level2 {Adobe_AGM_Core /AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if }def /driver_check_media_override { /PrepsDict where {pop} { Adobe_AGM_Core /AGMCORE_Default_CTM get matrix currentmatrix ne Adobe_AGM_Core /AGMCORE_Default_PageSize get type /arraytype eq { Adobe_AGM_Core /AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and Adobe_AGM_Core /AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and }if { Adobe_AGM_Core /AGMCORE_Default_CTM get setmatrix }if }ifelse }def AGMCORE_err_strings begin /AGMCORE_bad_environ (Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. ) def /AGMCORE_color_space_onhost_seps (This job contains colors that will not separate with on-host methods. ) def /AGMCORE_invalid_color_space (This job contains an invalid color space. ) def end end systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 2.23 0 %%Copyright: Copyright 1997-2003 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.23 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict /Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined { /Adobe_CoolType_Core userdict /Adobe_CoolType_Core get def } if userdict /Adobe_CoolType_Core 60 dict dup begin put /Adobe_CoolType_Version 2.23 def /Level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if def Level2? not { /currentglobal false def /setglobal /pop load def /gcheck { pop false } bind def /currentpacking false def /setpacking /pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking /@_SaveStackLevels { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup /args 7 index 5 add array put put get } { get dup /args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch /args exch put } { pop } ifelse } ifelse begin count 2 sub 1 index lt { pop count 1 sub } if dup /argCount exch def dup 0 gt { exch 1 index 2 add 1 roll args exch 0 exch getinterval astore pop } { pop } ifelse count 1 sub /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def end } bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt { { pop } repeat } { pop } ifelse args 0 argCount getinterval {} forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse } bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end } bind def /@Raise { exch cvx exch errordict exch get exec stop } bind def /@ReRaise { cvx $error /errorname get errordict exch get exec stop } bind def /@Stopped { 0 @#Stopped } bind def /@#Stopped { @_SaveStackLevels stopped { @_RestoreStackLevels true } { @_PopStackLevels false } ifelse } bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get /args get exch get end } bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup begin mark { (*) { pop stop } 128 string /Category resourceforall } stopped cleartomark currentdict eq dup { end } if not } { false } ifelse def /CTHasResourceStatusBug Level2? { mark { /steveamerige /Category resourcestatus } stopped { cleartomark true } { cleartomark currentglobal not } ifelse } { false } ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse end } bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad /ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup /CMap CTHasResourceStatusBug { CTResourceStatus } { resourcestatus } ifelse { pop dup 0 eq exch 1 eq or { dup /CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug { exit } { stop } ifelse } ifelse } { pop } ifelse } 128 string /CMap resourceforall } stopped { cleartomark } stopped pop setglobal } if } if } bind def /doc_setup { Adobe_CoolType_Core begin CTWorkAroundBugs /mov /moveto load def /nfnt /newencodedfont load def /mfnt /makefont load def /sfnt /setfont load def /ufnt /undefinefont load def /chp /charpath load def /awsh /awidthshow load def /wsh /widthshow load def /ash /ashow load def /sh /show load def end userdict /Adobe_CoolType_Data 10 dict dup begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end put } bind def /doc_trailer { currentdict Adobe_CoolType_Core eq { end } if } bind def /page_setup { Adobe_CoolType_Core begin } bind def /page_trailer { end } bind def /unload { systemdict /languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known { undef } { pop pop } ifelse } if } if } bind def /ndf { 1 index where { pop pop pop } { dup xcheck { bind } if def } ifelse } def /findfont systemdict begin userdict begin /globaldict where { /globaldict get begin } if dup where pop exch get /globaldict where { pop end } if end end Adobe_CoolType_Core_Defined { /systemfindfont exch def } { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont { pop } ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq { 0 } { dup length } ifelse 2 index length add 1 add dict begin exch { 1 index /FID eq { pop pop } { def } ifelse } forall dup null eq { pop } { { def } forall } ifelse currentdict end exch setglobal } bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal } bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } { FontDirectory 3 index known { FontDirectory 3 index get /FontReferenced known } { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } ifelse } ifelse dup { 3 index findfont /FontReferenced get 2 index dup type /nametype eq {findfont} if ne { pop false } if } if { pop 1 index findfont /Encoding get exch 0 1 255 { 2 copy get 3 index 3 1 roll put } for pop pop pop } { dup type /nametype eq { findfont } if dup dup maxlength 2 add dict begin exch { 1 index /FID ne {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type /stringtype eq { cvn } if def dup currentdict end definefont def } ifelse } bind def /SetSubstituteStrategy { $SubstituteFont begin dup type /dicttype ne { 0 dict } if currentdict /$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin { def } forall { def } forall currentdict dup /$Init known { dup /$Init get exec } if end /$Strategy exch def } { pop pop pop } ifelse } { pop pop } ifelse end } bind def /scff { $SubstituteFont begin dup type /stringtype eq { dup length exch } { null } ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse def end { findfont } @Stopped { dup length 8 add string exch 1 index 0 (BadFont:) putinterval 1 index exch 8 exch dup length string cvs putinterval cvn { findfont } @Stopped { pop /Courier findfont } if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end } bind def /isWidthsOnlyFont { dup /WidthsOnly known { pop pop true } { dup /FDepVector known { /FDepVector get { isWidthsOnlyFont dup { exit } if } forall } { dup /FDArray known { /FDArray get { isWidthsOnlyFont dup { exit } if } forall } { pop } ifelse } ifelse } ifelse } bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 4 index def /$doSmartSub false def end 3 index currentglobal false setglobal exch /CompatibleFonts /ProcSet resourcestatus { pop pop /CompatibleFonts /ProcSet findresource begin dup /CompatibleFont currentexception 1 index /CompatibleFont true setexception 1 index /Font resourcestatus { pop pop 3 2 roll setglobal end exch dup findfont /CompatibleFonts /ProcSet findresource begin 3 1 roll exch /CompatibleFont exch setexception end } { 3 2 roll setglobal 1 index exch /CompatibleFont exch setexception end findfont $SubstituteFont /$substituteFound true put } ifelse } { exch setglobal findfont } ifelse $SubstituteFont begin $substituteFound { false (%%[Using embedded font ) print 5 index ?str1 cvs print ( to avoid the font substitution problem noted earlier.]%%\n) print } { dup /FontName known { dup /FontName get $fontname eq 1 index /DistillerFauxFont known not and /currentdistillerparams where { pop false 2 index isWidthsOnlyFont not and } if } { false } ifelse } ifelse exch pop /$doSmartSub true def end { exch pop exch pop exch 2 dict dup /Found 3 index put exch findfont exch } { exch exec exch dup findfont dup /FontType get 3 eq { exch ?str1 cvs dup length 1 sub -1 0 { exch dup 2 index get 42 eq { exch 0 exch getinterval cvn 4 1 roll 3 2 roll pop exit } {exch pop} ifelse }for } { exch pop } ifelse 2 dict dup /Downloaded 6 5 roll put } ifelse dup /FontName 4 index put copyfont definefont pop } bind def /?str2 256 string def /?add { 1 index type /integertype eq { exch true 4 2 } { false 3 1 } ifelse roll 1 index findfont dup /Widths known { Adobe_CoolType_Data /AddWidths? true put gsave dup 1000 scalefont setfont } if /Downloaded known { exec exch { exch ?str2 cvs exch findfont /Downloaded get 1 dict begin /Downloaded 1 index def ?str1 cvs length ?str1 1 index 1 add 3 index putinterval exch length 1 add 1 index add ?str1 2 index (*) putinterval ?str1 0 2 index getinterval cvn findfont ?str1 3 index (+) putinterval 2 dict dup /FontName ?str1 0 6 index getinterval cvn put dup /Downloaded Downloaded put end copyfont dup /FontName get exch definefont pop pop pop } { pop } ifelse } { pop exch { findfont dup /Found get dup length exch ?str1 cvs pop ?str1 1 index (+) putinterval ?str1 1 index 1 add 4 index ?str2 cvs putinterval ?str1 exch 0 exch 5 4 roll ?str2 cvs length 1 add add getinterval cvn 1 dict exch 1 index exch /FontName exch put copyfont dup /FontName get exch definefont pop } { pop } ifelse } ifelse Adobe_CoolType_Data /AddWidths? get { grestore Adobe_CoolType_Data /AddWidths? false put } if } bind def /?sh { currentfont /Downloaded known { exch } if pop } bind def /?chp { currentfont /Downloaded known { pop } { false chp } ifelse } bind def /?mv { currentfont /Downloaded known { moveto pop pop } { pop pop moveto } ifelse } bind def setpacking userdict /$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known { get } { pop pop { pop /Courier } bind } ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams /CannotEmbedFontPolicy 2 copy known { get /Error eq } { pop pop false } ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup /WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type /stringtype eq { cvn } if def /FontType 3 def /FontMatrix [ .001 0 0 .001 0 0 ] def /Encoding 256 array dup 0 1 255 { /.notdef put dup } for pop def /FontBBox [ 0 0 0 0 ] def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth /y exch def /x exch def x y setcharwidth $SubstituteFont /$Strategy get /$Underprint get exec 0 0 moveto cc show x y moveto end end } bind def currentdict end exch setglobal } bind def /$GetaTint 2 dict dup begin /$BuildFont { dup /WMode known { dup /WMode get } { 0 } ifelse /$WMode exch def $fontname exch dup /FontName known { dup /FontName get dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse exch Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index /FontName get known { pop Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index get null copyfont } { $deepcopyfont } ifelse exch 1 index exch /FontBasedOn exch put dup /FontName $fontname dup type /stringtype eq { cvn } if put definefont Adobe_CoolType_Data /InVMDeepCopiedFonts get begin dup /FontBasedOn get 1 index def end } bind def /$Underprint { gsave x abs y abs gt { /y 1000 def } { /x -1000 def 500 120 translate } ifelse Level2? { [ /Separation (All) /DeviceCMYK { 0 0 0 1 pop } ] setcolorspace } { 0 setgray } ifelse 10 setlinewidth x .8 mul [ 7 3 ] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? { .2 setcolor } { .8 setgray } ifelse fill grestore stroke } forall pop grestore } bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict /FontName known { FontName dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse def /FontName $fontname dup type /stringtype eq { cvn } if def /currentdistillerparams where { pop } { /FontInfo currentdict /FontInfo known { FontInfo null copyfont } { 2 dict } ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [ 1 0 ItalicAngle dup sin exch cos div 1 0 0 ] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal } bind def end def /$None 1 dict dup begin /$BuildFont {} bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type /stringtype eq { cvn } if dup /$fontname exch def $sname null eq { $str cvs dup length $slen sub $slen getinterval } { pop $sname } ifelse $fontpat dup 0 (fonts/*) putinterval exch 7 exch putinterval /$match false def $SubstituteFont /$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval { /$match exch def exit } $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont /$dstack get { exch { 1 index eq { pop false } { true } ifelse } { begin false } ifelse } forall pop } if cleartomark /$slen 0 def $match false ne { $match (fonts/) anchorsearch pop pop cvn } { /Courier } ifelse } bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [ /Ryumin-Light /HeiseiMin-W3 /GothicBBB-Medium /HeiseiKakuGo-W5 /HeiseiMaruGo-W4 /Jun101-Light ] def /Korea1 [ /HYSMyeongJo-Medium /HYGoThic-Medium ] def /GB1 [ /STSong-Light /STHeiti-Regular ] def /CNS1 [ /MKai-Medium /MHei-Medium ] def end def end def /$cmapname null def /$deepcopyfont { dup /FontType get 0 eq { 1 dict dup /FontName /copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup /FontName /copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } { $Strategies /$Type3Underprint get exec } ifelse } bind def /$buildfontname { dup /CIDFont findresource /CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index (-) putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy (-) putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch { pop pop 3 2 roll putinterval cvn /$cmapname exch def } { pop pop pop pop pop } ifelse length $str 1 index (-) putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn } bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known { get } { pop pop [] } ifelse } { pop pop [] } ifelse false exch { dup /CIDFont resourcestatus { pop pop save 1 index /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get } { false } ifelse exch pop exch restore { pop } { exch pop true exit } ifelse } { pop } ifelse } forall { $str cvs $buildfontname } { false (*) { save exch dup /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get not } { true } ifelse exch /CIDSystemInfo get dup /Registry get Registry eq exch /Ordering get Ordering eq and and { exch restore exch pop true exit } { pop restore } ifelse } $str /CIDFont resourceforall { $buildfontname } { $fontname $findfontByEnum } ifelse } ifelse } bind def end end currentdict /$error known currentdict /languagelevel known and dup { pop $error /SubstituteFont known } if dup { $error } { Adobe_CoolType_Core } ifelse begin { /SubstituteFont /CMap /Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq { dup $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse Adobe_CoolType_Data /InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } { FontDirectory 1 index known { exch pop true exit } { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } ifelse } ifelse } forall } { pop pop false } ifelse { exch pop exch pop } { dup /CMap resourcestatus { pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS } { 128 string cvs dup (-) search { 3 1 roll search { 3 1 roll pop { dup cvi } stopped { pop pop pop pop pop $findfontByEnum } { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup /CMap resourcestatus { pop pop 4 1 roll pop pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS true exit } { pop } ifelse } for dup type /booleantype eq { pop } { pop pop pop $findfontByEnum } ifelse } ifelse } { pop pop pop $findfontByEnum } ifelse } { pop pop $findfontByEnum } ifelse } ifelse } ifelse } { //SubstituteFont exec } ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $findfontByEnum } { //SubstituteFont exec } ifelse end } } ifelse bind readonly def Adobe_CoolType_Core /scfindfont /systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup /FontName known { dup /FontName get dup 3 index ne } { /noname true } ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def /$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin { 1 index /FID eq { pop pop } { def } ifelse } forall currentdict end definefont dup /FontName known { dup /FontName get } { null } ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using ) print dup /FontName known { dup /FontName get } { (unspecified font) } ifelse $str cvs print (.\n) print } if } { exch pop } ifelse } { exch pop } ifelse end } bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core /findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type /stringtype ne { $str cvs } if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne { dup $inVMIndex $AddInVMFont } if $doSmartSub { currentdict /$Strategy known { $Strategy /$BuildFont get exec } if } if } if end } bind put } if } if end /$AddInVMFont { exch /FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data /InVMFontsByCMap get exch $DictAdd } { pop pop pop } ifelse } bind def /$DictAdd { 2 copy known not { 2 copy 4 index length dict put } if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get { forall } def 2 copy currentdict put end } { pop } ifelse } if get begin { def } forall end } bind def end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.19 0 %%Copyright: Copyright 1987-2003 Adobe Systems Incorporated. %%Version: 1.19 0 systemdict /languagelevel known dup { currentglobal false setglobal } { false } ifelse exch userdict /Adobe_CoolType_Utility 2 copy known { 2 copy get dup maxlength 25 add dict copy } { 25 dict } ifelse put Adobe_CoolType_Utility begin /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch /eCCRun known not ct_Level2? and or def ct_Level2? { globaldict begin currentglobal true setglobal } if /ct_AddStdCIDMap ct_Level2? { { ((Hex) 57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77) 0 () /SubFileDecode filter cvx exec } } { { eexec } } ifelse bind def userdict /cid_extensions known dup { cid_extensions /cid_UpdateDB known and } if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type /stringtype eq { exch cvn exch } if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq { pop pop cid_UpdateDB } { exch 1 index /Created get eq { exch pop exch pop } { pop cid_UpdateDB } ifelse } ifelse } { pop cid_UpdateDB } ifelse } { cid_UpdateDB } ifelse end } bind def end } if ct_Level2? { end setglobal } if /ct_UseNativeCapability? systemdict /composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring () def /usewidths? true def end def ct_Level2? { setglobal } { pop } ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict /languagelevel known { pop /CIDFont findresource /GlyphDirectory get } { 1 index /CIDFont findresource /GlyphDirectory get dup type /dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + } def /+ { systemdict /languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } { 1 dict begin } ifelse /$ exch def systemdict /languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ? { $ begin } if } def /? { $ type /dicttype eq } def /| { userdict /Adobe_CoolType_Data known { Adobe_CoolType_Data /AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data /CC 3 index put ? { def } { $ 3 1 roll put } ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont /Widths get exch CC exch put } { ? { def } { $ 3 1 roll put } ifelse } ifelse end end } { ? { def } { $ 3 1 roll put } ifelse } ifelse } { ? { def } { $ 3 1 roll put } ifelse } ifelse } def /! { ? { end } if systemdict /languagelevel known { gvm setglobal } if end } def /: { string currentfile exch readstring pop } executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx [.001 0 0 .001 0 0] def /ct_1000Mtx [1000 0 0 1000 0 0] def /ct_raise {exch cvx exch errordict exch get exec stop} bind def /ct_reraise { cvx $error /errorname get (Error: ) print dup ( ) cvs print errordict exch get exec stop } bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop } bind def /ct_GetInterval { Adobe_CoolType_Utility /ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt { dup string /dst_string exch def } if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add /dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add /dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt { arrayIndex get } { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end } bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal { /unknowninstancename /Category resourcestatus } stopped { cleartomark setglobal true } { cleartomark currentglobal not exch setglobal } ifelse { { mark 3 1 roll /Category findresource begin ct_Vars /vm currentglobal put ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse ct_Vars /vm get setglobal end } } { { resourcestatus } } ifelse bind def /CIDFont /Category ct_resourcestatus { pop pop } { currentglobal true setglobal /Generic /Category findresource dup length dict copy dup /InstanceType /dicttype put /CIDFont exch /Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering (Identity) def /Supplement 0 def end def /CMapName /Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } { pop pop /defineresource /undefined ct_raise } ifelse } bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known { get 3 1 roll pop pop} { pop pop /findresource /undefinedresource ct_raise } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /ct_resourcestatus /resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup (Binary) eq { pop null currentfile ct_Level2? { { cid_BYTE_COUNT () /SubFileDecode filter } stopped { pop pop pop } if } if /readstring load exit } if dup (Hex) eq { pop currentfile ct_Level2? { { null exch /ASCIIHexDecode filter /readstring } stopped { pop exch pop (>) exch /readhexstring } if } { (>) exch /readhexstring } ifelse load exit } if /StartData /typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch /GlyphData exch put 2 index null eq { pop pop pop } { pop /readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse } bind def /StartData { mark { currentdict dup /FDArray get 0 get /FontMatrix get 0 get 0.001 eq { dup /CDevProc known not { /CDevProc 1183615869 internaldict /stdCDevProc 2 copy known { get } { pop pop { pop pop pop pop pop 0 -1000 7 index 2 div 880 } } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp /cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul } def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup /cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup /SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup /SubrMapOffset undef dup /SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } { pop } ifelse } forall } if cleartomark pop pop end CIDFontName currentdict /CIDFont defineresource pop end end } stopped { cleartomark /StartData ct_reraise } if } bind def currentdict end def /ct_saveCIDInit { /CIDInit /ProcSet ct_resourcestatus { true } { /CIDInitC /ProcSet ct_resourcestatus } ifelse { pop pop /CIDInit /ProcSet findresource ct_UseNativeCapability? { pop null } { /CIDInit ct_CIDInit /ProcSet defineresource pop } ifelse } { /CIDInit ct_CIDInit /ProcSet defineresource pop null } ifelse ct_Vars exch /ct_oldCIDInit exch put } bind def /ct_restoreCIDInit { ct_Vars /ct_oldCIDInit get dup null ne { /CIDInit exch /ProcSet defineresource pop } { pop } ifelse } bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility /ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge { pop 0 } if /cid exch def { GlyphDirectory cid 2 copy known { get } { pop pop nullstring } ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne { 0 FDBytes ct_cvnsi } { pop 0 } ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq { /charstring nullstring def exit } if /cid 0 def } ifelse } loop } def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto } def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont /Widths get cid 2 copy known { get exch pop aload pop } { pop pop stringwidth } ifelse } { stringwidth } ifelse setcharwidth 0 0 moveto } ifelse } def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known { get } { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup /FontMatrix 2 copy known { get } { pop pop ct_defaultFontMtx } ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont /Widths get def /CharStrings 1 dict dup /.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup /CharStrings get 1 index /Encoding get ct_dfCharCode get charstring put rootfont /WMode 2 copy known { get } { pop pop 0 } ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } { ct_str1 show } ifelse } def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup /FontMatrix get dup ct_defaultFontMtx ct_matrixeq not { ct_1000Mtx matrix concatmatrix concat } { pop } ifelse /Private get Adobe_CoolType_Utility /ct_Level2? get not { ct_dfDict /Private 3 -1 roll { put } 1183615869 internaldict /superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility /ct_Level2? get { 1 index } { 3 index /Private get mark 6 1 roll } ifelse dup /RunInt known { /RunInt get } { pop /CCRun } ifelse get exec Adobe_CoolType_Utility /ct_Level2? get not { cleartomark } if } bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility /ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped { stop } if end end end end } bind def /BaseFontNameStr (BF00) def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /BuildChar /ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString /ct_Type3ShowCharString load def /ct_dfSetCacheProc /ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup /lenIV 4 put def /CharStrings 1 dict dup /.notdef put def /PaintType 0 def /ct_ShowCharString /ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not { exit } if } for exch pop exch pop } bind def /ct_makeocf { 15 dict begin exch /WMode exch def exch /FontName exch def /FontType 0 def /FMapType 2 def dup /FontMatrix known { dup /FontMatrix get /FontMatrix exch def } { /FontMatrix matrix def } ifelse /bfCount 1 index /CIDCount get 256 idiv 1 add dup 256 gt { pop 256} if def /Encoding 256 array 0 1 bfCount 1 sub { 2 copy dup put pop } for bfCount 1 255 { 2 copy bfCount put pop } for def /FDepVector bfCount dup 256 lt { 1 add } if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont /FontBBox known { CIDFont /FontBBox get /FontBBox exch def } if CIDFont /CDevProc known { CIDFont /CDevProc get /CDevProc exch def } if currentdict end BaseFontNameStr 3 (0) putinterval 0 1 bfCount dup 256 eq { 1 sub } if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup /CIDFirstByte exch 256 mul def FontType 3 eq { /ct_FDDict 2 dict def } if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? { /Widths 1 index /CIDFont get /GlyphDirectory get length dict def } if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont /Widths get begin exch /CIDFont get /GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } { exch pop } ifelse } bind def /ct_ComposeFont { ct_UseNativeCapability? { 2 index /CMap ct_resourcestatus { pop pop exch pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch /WMode exch def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity)} ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def /ct_MakeIdentity { ct_UseNativeCapability? { 1 index /CMap ct_resourcestatus { pop pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity) } ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { exch pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def currentdict readonly pop end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2003 Adobe Systems Incorporated. %%Version: 1.0 0 userdict /ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge } bind def /AllocGlyphStorage { Is2015? { pop } { {string} forall } ifelse } bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix [1 0 0 1 0 0] def 4 array astore cvx /FontBBox exch def /sfnts } bind def /Type42DictEnd { currentdict dup /FontName get exch definefont end ct_T42Dict exch dup /FontName get exch put } bind def /RD {string currentfile exch readstring pop} executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop } ifelse } bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop } ifelse } bind def end %%EndResource Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Image 75 dict dup begin put /Adobe_AGM_Image_Id /Adobe_AGM_Image_1.0_0 def /nd{ null def }bind def /AGMIMG_&image nd /AGMIMG_&colorimage nd /AGMIMG_&imagemask nd /AGMIMG_mbuf () def /AGMIMG_ybuf () def /AGMIMG_kbuf () def /AGMIMG_c 0 def /AGMIMG_m 0 def /AGMIMG_y 0 def /AGMIMG_k 0 def /AGMIMG_tmp nd /AGMIMG_imagestring0 nd /AGMIMG_imagestring1 nd /AGMIMG_imagestring2 nd /AGMIMG_imagestring3 nd /AGMIMG_imagestring4 nd /AGMIMG_imagestring5 nd /AGMIMG_cnt nd /AGMIMG_fsave nd /AGMIMG_colorAry nd /AGMIMG_override nd /AGMIMG_name nd /AGMIMG_maskSource nd /invert_image_samples nd /knockout_image_samples nd /img nd /sepimg nd /devnimg nd /idximg nd /doc_setup { Adobe_AGM_Core begin Adobe_AGM_Image begin /AGMIMG_&image systemdict/image get def /AGMIMG_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMIMG_&colorimage /colorimage ldf }if end end }def /page_setup { Adobe_AGM_Image begin /AGMIMG_ccimage_exists {/customcolorimage where { pop /Adobe_AGM_OnHost_Seps where { pop false }{ /Adobe_AGM_InRip_Seps where { pop false }{ true }ifelse }ifelse }{ false }ifelse }bdf level2{ /invert_image_samples { Adobe_AGM_Image/AGMIMG_tmp Decode length ddf /Decode [ Decode 1 get Decode 0 get] def }def /knockout_image_samples { Operator/imagemask ne{ /Decode [1 1] def }if }def }{ /invert_image_samples { {1 exch sub} currenttransfer addprocs settransfer }def /knockout_image_samples { { pop 1 } currenttransfer addprocs settransfer }def }ifelse /img /imageormask ldf /sepimg /sep_imageormask ldf /devnimg /devn_imageormask ldf /idximg /indexed_imageormask ldf /_ctype 7 def currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and{ bind }if def }forall }def /page_trailer { end }def /doc_trailer { }def /imageormask_sys { begin save mark level2{ currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMIMG_&imagemask }{ BitsPerComponent ImageMatrix /DataSource load AGMIMG_&image }ifelse }ifelse cleartomark restore end }def /overprint_plate { currentoverprint { 0 get dup type /nametype eq { dup /DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false exch { AGMOHS_sepink eq or } forall not } ifelse }{ pop false }ifelse }def /process_mask_L3 { dup begin /ImageType 1 def end 4 dict begin /DataDict exch def /ImageType 3 def /InterleaveType 3 def /MaskDict 9 dict begin /ImageType 1 def /Width DataDict dup /MaskWidth known {/MaskWidth}{/Width} ifelse get def /Height DataDict dup /MaskHeight known {/MaskHeight}{/Height} ifelse get def /ImageMatrix [Width 0 0 Height neg 0 Height] def /NComponents 1 def /BitsPerComponent 1 def /Decode [0 1] def /DataSource AGMIMG_maskSource def currentdict end def currentdict end }def /use_mask { dup type /dicttype eq { dup /Mask known { dup /Mask get { level3 {true} { dup /MaskWidth known {dup /MaskWidth get 1 index /Width get eq}{true}ifelse exch dup /MaskHeight known {dup /MaskHeight get 1 index /Height get eq}{true}ifelse 3 -1 roll and } ifelse } {false} ifelse } {false} ifelse } {false} ifelse }def /make_line_source { begin MultipleDataSources { [ Decode length 2 div cvi {Width string} repeat ] }{ Width Decode length 2 div mul cvi string }ifelse end }def /datasource_to_str { exch dup type dup /filetype eq { pop exch readstring }{ /arraytype eq { exec exch copy }{ pop }ifelse }ifelse pop }def /masked_image_simulation { 3 dict begin dup make_line_source /line_source xdf /mask_source AGMIMG_maskSource /LZWDecode filter def dup /Width get 8 div ceiling cvi string /mask_str xdf begin gsave 0 1 translate 1 -1 Height div scale 1 1 Height { pop gsave MultipleDataSources { 0 1 DataSource length 1 sub { dup DataSource exch get exch line_source exch get datasource_to_str } for }{ DataSource line_source datasource_to_str } ifelse << /PatternType 1 /PaintProc [ /pop cvx << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1.0 sub 1 matrix scale 0.5 0 matrix translate matrix concatmatrix /MultipleDataSources MultipleDataSources /DataSource line_source /BitsPerComponent BitsPerComponent /Decode Decode >> /image cvx ] cvx /BBox [0 0 Width 1] /XStep Width /YStep 1 /PaintType 1 /TilingType 2 >> matrix makepattern set_pattern << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1 matrix scale /MultipleDataSources false /DataSource mask_source mask_str readstring pop /BitsPerComponent 1 /Decode [0 1] >> imagemask grestore 0 1 translate } for grestore end end }def /imageormask { begin SkipImageProc { currentdict consumeimagedata } { save mark level2 AGMCORE_host_sep not and{ currentdict Operator /imagemask eq DeviceN_PS2 not and { imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get /DeviceGray eq and{ [/Separation /Black /DeviceGray {}] setcolorspace /Decode [ Decode 1 get Decode 0 get ] def }if use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and { Names convert_to_process not { 2 dict begin /imageDict xdf /names_index 0 def gsave imageDict write_image_file { Names { dup (None) ne { [/Separation 3 -1 roll /DeviceGray {1 exch sub}] setcolorspace Operator imageDict read_image_file names_index 0 eq {true setoverprint} if /names_index names_index 1 add def }{ pop } ifelse } forall close_image_file } if grestore end }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load /Adobe_AGM_OnHost_Seps where { pop imagemask }{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator /colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ AGMCORE_is_cmyk_sep{ MultipleDataSources{ /DataSource [ DataSource 0 get /exec cvx DataSource 1 get /exec cvx DataSource 2 get /exec cvx DataSource 3 get /exec cvx /AGMCORE_get_ink_data cvx ] cvx def }{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul /DataSource load filter_cmyk 0 () /SubFileDecode filter def }ifelse /Decode [ Decode 0 get Decode 1 get ] def /MultipleDataSources false def /NComponents 1 def /Operator /image def invert_image_samples 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }{ MultipleDataSources NComponents AGMIMG_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator /image eq{ AGMCORE_host_sep{ /DoImage true def HostSepColorImage{ invert_image_samples }{ AGMCORE_black_plate not Operator/imagemask ne and{ /DoImage false def currentdict ignoreimagedata }if }ifelse 1 AGMCORE_&setgray DoImage {currentdict imageormask_sys} if }{ use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ image }ifelse }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentcolorspace overprint_plate not{ knockout_unitsq }if }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin /MappedCSA CSA map_csa def begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_avoid_L2_sep_space{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def }if AGMIMG_ccimage_exists MappedCSA 0 get /DeviceCMYK eq and currentdict/Components known and Name () ne and Name (All) ne and Operator /image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load /exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for } /exec cvx ] cvx bind MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ AGMCORE_avoid_L2_sep_space not currentcolorspace 0 get /Separation ne and{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator /imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentdict/ImageMatrix get concat knockout_unitsq }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name (All) ne and{ level2{ [ /Separation Name [/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub } bind ] AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor currentdict imageormask_sys }{ currentdict Operator /imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name (All) eq or Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentcolorspace 0 get /Separation ne{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentoverprint MappedCSA 0 get /DeviceCMYK eq and Name inRip_spot_has_ink not and Name (All) ne and { imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse end end }def /decode_image_sample { 4 1 roll exch dup 5 1 roll sub 2 4 -1 roll exp 1 sub div mul add } bdf /colorSpaceElemCnt { currentcolorspace 0 get dup /DeviceCMYK eq { pop 4 } { /DeviceRGB eq { pop 3 }{ 1 } ifelse } ifelse } bdf /devn_sep_datasource { 1 dict begin /dataSource xdf [ 0 1 dataSource length 1 sub { dup currentdict /dataSource get /exch cvx /get cvx /exec cvx /exch cvx names_index /ne cvx [ /pop cvx ] cvx /if cvx } for ] cvx bind end } bdf /devn_alt_datasource { 11 dict begin /srcDataStrs xdf /dstDataStr xdf /convProc xdf /origcolorSpaceElemCnt xdf /origMultipleDataSources xdf /origBitsPerComponent xdf /origDecode xdf /origDataSource xdf /dsCnt origMultipleDataSources {origDataSource length}{1}ifelse def /samplesNeedDecoding 0 0 1 origDecode length 1 sub { origDecode exch get add } for origDecode length 2 div div dup 1 eq { /decodeDivisor 2 origBitsPerComponent exp 1 sub def } if 2 origBitsPerComponent exp 1 sub ne def [ 0 1 dsCnt 1 sub [ currentdict /origMultipleDataSources get { dup currentdict /origDataSource get exch get dup type }{ currentdict /origDataSource get dup type } ifelse dup /filetype eq { pop currentdict /srcDataStrs get 3 -1 /roll cvx /get cvx /readstring cvx /pop cvx }{ /stringtype ne { /exec cvx } if currentdict /srcDataStrs get /exch cvx 3 -1 /roll cvx /xpt cvx } ifelse ] cvx /for cvx currentdict /srcDataStrs get 0 /get cvx /length cvx 0 /ne cvx [ 0 1 Width 1 sub [ Adobe_AGM_Utils /AGMUTIL_ndx /xddf cvx currentdict /origMultipleDataSources get { 0 1 dsCnt 1 sub [ Adobe_AGM_Utils /AGMUTIL_ndx1 /xddf cvx currentdict /srcDataStrs get /AGMUTIL_ndx1 /load cvx /get cvx /AGMUTIL_ndx /load cvx /get cvx samplesNeedDecoding { currentdict /decodeDivisor known { currentdict /decodeDivisor get /div cvx }{ currentdict /origDecode get /AGMUTIL_ndx1 /load cvx 2 /mul cvx 2 /getinterval cvx /aload cvx /pop cvxs BitsPerComponent /decode_image_sample load /exec cvx } ifelse } if ] cvx /for cvx }{ Adobe_AGM_Utils /AGMUTIL_ndx1 0 /ddf cvx currentdict /srcDataStrs get 0 /get cvx /AGMUTIL_ndx /load cvx currentdict /origDecode get length 2 idiv dup 3 1 /roll cvx /mul cvx /exch cvx /getinterval cvx [ samplesNeedDecoding { currentdict /decodeDivisor known { currentdict /decodeDivisor get /div cvx }{ currentdict /origDecode get /AGMUTIL_ndx1 /load cvx 2 /mul cvx 2 /getinterval cvx /aload cvx /pop cvx BitsPerComponent /decode_image_sample load /exec cvx Adobe_AGM_Utils /AGMUTIL_ndx1 /AGMUTIL_ndx1 /load cvx 1 /add cvx /ddf cvx } ifelse } if ] cvx /forall cvx } ifelse currentdict /convProc get /exec cvx currentdict /origcolorSpaceElemCnt get 1 sub -1 0 [ currentdict /dstDataStr get 3 1 /roll cvx /AGMUTIL_ndx /load cvx currentdict /origcolorSpaceElemCnt get /mul cvx /add cvx /exch cvx currentdict /convProc get /filter_indexed_devn load ne { 255 /mul cvx /cvi cvx } if /put cvx ] cvx /for cvx ] cvx /for cvx currentdict /dstDataStr get ] cvx /if cvx ] cvx bind end } bdf /devn_imageormask { /devicen_colorspace_dict AGMCORE_gget begin /MappedCSA CSA map_csa def 2 dict begin dup dup /dstDataStr exch /Width get colorSpaceElemCnt mul string def /srcDataStrs [ 3 -1 roll begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi string } repeat end ] def begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_producing_seps not { level3 not { Operator /imagemask ne { /DataSource [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse colorSpaceElemCnt /devicen_colorspace_dict AGMCORE_gget /TintTransform get dstDataStr srcDataStrs devn_alt_datasource /exec cvx ] cvx 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def } if }if currentdict imageormask }{ AGMCORE_host_sep{ Names convert_to_process { CSA map_csa 0 get /DeviceCMYK eq { /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse 4 /devicen_colorspace_dict AGMCORE_gget /TintTransform get dstDataStr srcDataStrs devn_alt_datasource /exec cvx ] cvx filter_cmyk 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode [1 0] def /DeviceGray setcolorspace currentdict imageormask_sys }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate { /DataSource [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse CSA map_csa 0 get /DeviceRGB eq{3}{1}ifelse /devicen_colorspace_dict AGMCORE_gget /TintTransform get dstDataStr srcDataStrs devn_alt_datasource /exec cvx ] cvx 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def currentdict imageormask_sys } { gsave knockout_unitsq grestore currentdict consumeimagedata } ifelse } ifelse } { /devicen_colorspace_dict AGMCORE_gget /names_index known { Operator/imagemask ne{ MultipleDataSources { /DataSource [ DataSource devn_sep_datasource /exec cvx ] cvx def /MultipleDataSources false def }{ /DataSource /DataSource load dstDataStr srcDataStrs 0 get filter_devn def } ifelse invert_image_samples } if currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentdict imageormask }ifelse }ifelse cleartomark restore }ifelse end end end }def /imageormask_l2_overprint { currentdict currentcmykcolor add add add 0 eq{ currentdict consumeimagedata }{ level3{ currentcmykcolor /AGMIMG_k xdf /AGMIMG_y xdf /AGMIMG_m xdf /AGMIMG_c xdf Operator/imagemask eq{ [/DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK {}] setcolorspace AGMIMG_c 0 ne {AGMIMG_c} if AGMIMG_m 0 ne {AGMIMG_m} if AGMIMG_y 0 ne {AGMIMG_y} if AGMIMG_k 0 ne {AGMIMG_k} if setcolor }{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def [/Indexed [ /DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK { AGMIMG_k 0 eq {0} if AGMIMG_y 0 eq {0 exch} if AGMIMG_m 0 eq {0 3 1 roll} if AGMIMG_c 0 eq {0 4 1 roll} if } ] 255 { 255 div mark exch dup dup dup AGMIMG_k 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_y 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_m 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_c 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop counttomark 1 roll }{ pop }ifelse counttomark 1 add -1 roll pop } ] setcolorspace }ifelse imageormask_sys }{ write_image_file{ currentcmykcolor 0 ne{ [/Separation /Black /DeviceGray {}] setcolorspace gsave /Black [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Yellow /DeviceGray {}] setcolorspace gsave /Yellow [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Magenta /DeviceGray {}] setcolorspace gsave /Magenta [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Cyan /DeviceGray {}] setcolorspace gsave /Cyan [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore } if close_image_file }{ imageormask }ifelse }ifelse }ifelse } def /indexed_imageormask { begin save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget dup /CSA known { /CSA get map_csa }{ /CSD get get_csd /Names get } ifelse overprint_plate not{ knockout_unitsq }if }{ Indexed_DeviceN { /devicen_colorspace_dict AGMCORE_gget /names_index known { indexed_image_lev2_sep }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata } ifelse }{ AGMCORE_is_cmyk_sep{ Operator /imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ level2{ Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget begin CSD get_csd begin }{ /indexed_colorspace_dict AGMCORE_gget begin CSA map_csa 0 get /DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and { [/Indexed [/DeviceN [/Cyan /Magenta /Yellow /Black] /DeviceCMYK {}] HiVal Lookup] setcolorspace } if end } ifelse imageormask Indexed_DeviceN { end end } if }{ Operator /imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin Indexed_DeviceN not { currentcolorspace dup 1 /DeviceGray put dup 3 currentcolorspace 2 get 1 add string 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub { dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put }for put setcolorspace } if currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse end end }def /OPIimage { dup type /dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /ImageType 1 def /Decode [0 1 def] currentdict end }if dup begin /NComponents 1 cdndf /MultipleDataSources false cdndf /SkipImageProc {false} cdndf /HostSepColorImage false cdndf /Decode [ 0 currentcolorspace 0 get /Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ] cdndf /Operator /image cdndf end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cachemask_level2 { 3 dict begin /LZWEncode filter /WriteFilter xdf /readBuffer 256 string def /ReadFilter currentfile 0 (%EndMask) /SubFileDecode filter /ASCII85Decode filter /RunLengthDecode filter def { ReadFilter readBuffer readstring exch WriteFilter exch writestring not {exit} if }loop WriteFilter closefile end }def /cachemask_level3 { currentfile << /Filter [ /SubFileDecode /ASCII85Decode /RunLengthDecode ] /DecodeParms [ << /EODCount 0 /EODString (%EndMask) >> null null ] /Intent 1 >> /ReusableStreamDecode filter }def /spot_alias { /mapto_sep_imageormask { dup type /dicttype ne{ 12 dict begin /ImageType 1 def /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def }{ begin }ifelse /Decode [/customcolor_tint AGMCORE_gget 0] def /Operator /image def /HostSepColorImage false def /SkipImageProc {false} def currentdict end sep_imageormask }bdf /customcolorimage { Adobe_AGM_Image/AGMIMG_colorAry xddf /customcolor_tint AGMCORE_gget bdict /Name AGMIMG_colorAry 4 get /CSA [ /DeviceCMYK ] /TintMethod /Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components [ AGMIMG_colorAry aload pop pop ] edict setsepcolorspace mapto_sep_imageormask }ndf Adobe_AGM_Image/AGMIMG_&customcolorimage /customcolorimage load put /customcolorimage { Adobe_AGM_Image/AGMIMG_override false put dup 4 get map_alias{ /customcolor_tint AGMCORE_gget exch setsepcolorspace pop mapto_sep_imageormask }{ AGMIMG_&customcolorimage }ifelse }bdf }def /snap_to_device { 6 dict begin matrix currentmatrix dup 0 get 0 eq 1 index 3 get 0 eq and 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop { 1 1 dtransform 0 gt exch 0 gt /AGMIMG_xSign? exch def /AGMIMG_ySign? exch def 0 0 transform AGMIMG_ySign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch AGMIMG_xSign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch itransform /AGMIMG_llY exch def /AGMIMG_llX exch def 1 1 transform AGMIMG_ySign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch AGMIMG_xSign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch itransform /AGMIMG_urY exch def /AGMIMG_urX exch def [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY] concat }{ }ifelse end } def level2 not{ /colorbuf { 0 1 2 index length 1 sub{ dup 2 index exch get 255 exch sub 2 index 3 1 roll put }for }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Image begin /AGMIMG_mbuf 0 string def /AGMIMG_ybuf 0 string def /AGMIMG_kbuf 0 string def { colorbuf dup length AGMIMG_mbuf length ne { dup length dup dup /AGMIMG_mbuf exch string def /AGMIMG_ybuf exch string def /AGMIMG_kbuf exch string def } if dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop } addprocs {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf} true 4 colorimage end } def /sep_imageormask_lev1 { begin MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get } currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ {AGMIMG_k mul 1 exch sub} currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMIMG_k mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_y mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_m mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_c mul 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get /DeviceGray eq { {255 mul round cvi ColorLookup exch get 0 get} currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf {AGMIMG_c mul 1 exch sub} {AGMIMG_m mul 1 exch sub} {AGMIMG_y mul 1 exch sub} {AGMIMG_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceGray eq { {HiVal mul round cvi Lookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def }if end systemdict /setpacking known { setpacking } if %%EndResource currentdict Adobe_AGM_Utils eq {end} if %%EndProlog %%BeginSetup Adobe_AGM_Utils begin 2 2010 Adobe_AGM_Core/doc_setup get exec Adobe_CoolType_Core/doc_setup get exec Adobe_AGM_Image/doc_setup get exec currentdict Adobe_AGM_Utils eq {end} if %%EndSetup %%Page: (htmlparser pms.eps) 1 %%EndPageComments %%BeginPageSetup /currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 Adobe PDF library 6.66 2004-05-31T17:22:14-04:00 2004-06-01T13:21:04Z Illustrator 2004-05-31T17:22:15-04:00 JPEG 256 216 /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA2AEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYqpXN1bW0RluJFijHVnIA/HFUlk80tcEppFlLfHp6tDHEP9k39mKqT W/nW83e4gsEP7CDk330b/iWKrG8n30293rE8teoFafixxVZ/yr7Tju11MW7n4f6YqpN+XkA3ivnR h0JQH9RXFVI+VfM9pvZakWA6LzdP+F3XFVNta856XvewetEOrugYU/14/wCOKpjp/nzTJyEu0a1c /tfbT7xv+GKsjgngnjEsMiyxt0dCGB+kYqqYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FWiQBU9MVSyXUru6YxaVGrgGj3slfRXx4U3kPy298VWw+XbUyie/dtQuR+3Pui/6sY+ED FU1ACgBRQDYAdMVbxV2KuxV2KuxV2KpRqflbR78FmhEMx/3bF8Jr7jofpGKsWudE8w+X5Dc2MrS2 43Z4+lB/vyM1/jiqd6F5ztL0rBeAW1ydg1f3bn2J+yfY4qyXFXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYqtd1RSzGijck4qg3tpL4/6SClp+zbdDJ7y+3+R9/gFUaqqqhVAVQKADYAYq3i rsVdirsVdirsVdirsVdirsVYz5g8m214GuLALBddTH0R/wDmk4qlegeaLrTp/wBG6sG9JDwDv9uL 2PiuKs5VlZQykMrCqsNwQe4xVvFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVK5ube1t5bm5lW G3hUyTTSEKiIoqzMx2AAwgEmgqXaTNd6lTUp0e3tHFbG0ccXKHpNMvZn6qh+yPtfESFnMCO3VATb K0uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpL5j8uQatByWkd5GP3UvYj+Vvb9WKsf8r69Ppt0dJ1Kq RcuCF/8AdT+B/wAk4qzrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWGzznzZ5ml0yP4vLmgSr +k2/Zu9QWjpbbbGO32eUd34qdg1csDwoX/HLl5Dv+PRhzPkGZZiM3Yq7FXYq7FXYq7FXYqxi+/M3 8vrC8msrzzBY293bu0c8Ekyq6OpoysOxBzIjpMshYiaYHJEdQof8rb/LL/qZtP8A+R6f1yX5LN/N l8l8WPeE90PzFoWvWj3mi30OoWschhea3cOokChipI70cH6cpyYpQNSFFkJA8kxytLsVdirsVYz5 y8vi9tzfW6/6XAPjA/bQfxXtirfkvXTe2hs52rc2wHFj1ePoD816HFWS4q7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYqxP8AMrzXdeX/AC+qaYol1/Vpk07RINjW5n2DkH9mMVY128euZWkwicvV9Mdz7mGS VDbmmnlLy3aeW/L1no9sxkFsn764b7c0zHlLM/X4pHJY5VmynJMyKYxoUnGVMnYq7FXYq7FXYq7F XYq+EvzV/wDJleZ/+2ndf8nWztNF/cw/qh1Ob6yxbMprfVv/ADih/wCS71H/ALa83/UNbZzHbX96 P6v6S7DSfT8XtOahynYq7FXYq7FXn+t20nl/zDFf2wIt5W9RVGw3/vI/xxVnkE8c8Ec0R5RyqHQ+ IYVGKqmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV5fpco83fnTqF6T6mleR4PqVoP2TqF3X1337oitGf cDNjMeFpwP4sm/wHJpHqn/VeoZrm52KuxV2KuxV2KuxV2KuxV8Jfmr/5MrzP/wBtO6/5OtnaaL+5 h/VDqc31li2ZTW+rf+cUP/Jd6j/215v+oa2zmO2v70f1f0l2Gk+n4vaKioFdzuB3oM1DlN4q7FXY q7FUo806YNQ0eZFFZoR6sPjVeo+kVGKpf5D1Az6Y9o5q9q3w/wCo+4/GuKsnxV2KuxV2KoeTUdPi cxy3USSL9pGkUEfME5IRPcrcF7ZzsVgnjlYCpVHViB47HAYkc1V8CuxV2KuxVbHJHIvKNg61I5KQ RVTQjbwIpjSpf5k1qHQ/L2paxMAY9PtpbkqTTl6SFgv+yIplmLHxzEe8okaFvjDy3+cXn7y3Bdw6 TfpCt9cveXbPBDK7zy05MXkVm/ZzrsugxZCOIchTrI55R5PefLv56R6X+U9l5l81Ti/1u8luIrWz iCRSTmKUqNkHFEUU5PT7ztmky9ncWcwhtEU5cc9QEjzeMeZf+cgfzN1q4dotTOlWpJMdrYARcR2r LvK3/BfRm3xdmYYDlxHzcWWpmfJJrb83fzOt5lmj8zX7Ou4EkzSr9KSclP0jLTocJ/hDEZ5973T8 mP8AnIKbzFfxeXfNXpR6pP8ADYahGojSd/8Afcij4VkP7PGgbpQGldLr+zPDHHD6eo7nLw6ji2PN Ofzf/PnT/Jsj6No8ceoeYgB6qvX0LYMAV9XjQsxB2QH5kbVq0PZpy+qW0PvZZs4jsOb561P86fzR 1G4M03mK6hJ6JasLZAPALCEH35vodn4IiuEfe4ZzzPVV0T88fzQ0i6WdNcnvEBq9vfH6zG4/lPP4 wP8AVYHI5OzsMhXDXu2WOomOr6e/KX82dM8/6VIwjFnrVnQX9jWoo32ZYid2jb71Ox7E85rdFLBL vieRc/FlEwz3MJtfCX5q/wDkyvM//bTuv+TrZ2mi/uYf1Q6nN9ZYtmU1vq3/AJxQ/wDJd6j/ANte b/qGts5jtr+9H9X9JdhpPp+KTf8AOVmp6jpl55PvdOuZbO7iOoGK4gdo3U/6N0ZSDl3Y0BITBFjb 9LHVyIohIfI3/OUut2PpWnmy0GqWwopv7cLHcqPFk2jk/wCF+eXajsaJ3xmvLoxhqz/E+gPKfn3y l5stRcaFqMV0QKyW9eE8f+vE1HHzpTwOaPPpsmI1IU5cJiXJkGUM3Yq7FWD6Kv6L85z2Q2im5og7 UI9RP6YqzjFXYq7FXYq+JPzz/wDJseYv+M6f8mY87Ds7+4j+Orq9R9ZZp/zid/ym+rf9sxv+oiLM Ttr+7H9b9DbpOZfU+c057sVQes6rbaRo99q10GNrp9vLdTiMAuY4EMjcQSATRdt8njgZSERzJpBN C3yf+Yv/ADkV5r8zerY6MW0PR2qpWJv9KlXp+8lFOIP8qU8CWzp9L2VDHvL1S+x1+TUk7DYPffyG /wDJS+Xv+Mc3/UTLmj7S/v5fjo5mD6Aln/OSertp/wCVt3Ch4tqVxBZ1rQ05GZgPmsJHyyzsmHFn HkCWOplUHx3nWOsXvNK6Ro7syRKUiUkkKpYsQvgOTE4KW1mFXYqvgmmgmjnhdo5omDxyKaMrKahg R0IOAixRUF1xcT3E8lxcSNNPMxeWVyWdnY1ZmY7kk4gACgpNrMKuxVm/5LeY5tB/MrRLhH4Q3c62 N0K0VoroiP4vZWKv8xmF2hi48Mh3b/JuwSqYfb+cc7R8Jfmr/wCTK8z/APbTuv8Ak62dpov7mH9U OpzfWWLZlNb6t/5xQ/8AJd6j/wBteb/qGts5jtr+9H9X9JdhpPp+Kh/zk95L80eYbPQrvRNPl1CP TPrf1xIAHkUTehwKxg83/um+yDkuyNRDGZCRq6/SuqxmVU+W5I5IpGjkUpIhKujAhgRsQQemdIDb r1Szvbyxuo7uynktrqE8op4WaORWHdWUgg4JREhR3CQSOT2fyN/zlB5m0v0rTzPANZslopu0pHdq PEnaOSg8QCe7ZqNR2PCW8Dwn7HKhqiOe76D8nfmR5N83wK+ialHNPTlJYyH07lKdeUTfFQfzLVff NFn0mTEfUP1OZDJGXJk2Y7NhfmpfqvmfTb0bBinL34Pv/wAK2Ks0xVDajqWn6bZyXuoXMVnaQist xO6xxqPdmIGSjAyNAWUE08R89f8AOUmi2Be08o2v6UuRsb+4DR2wP+QnwySf8KPnm403Y8pb5Dwj u6uLk1QHLdnn5K+aNZ8z+QbXWdZmE9/cT3Ad1VUUKkrKqhVAFFApmF2hhjjymMeWzdhkZRsvl/8A PP8A8mx5i/4zp/yZjzo+zv7iP46uBqPrKY/kX570XyTq+taxqpZl/RxitraPeSaZpoyqLXYbKSSe gyHaOmlmjGMe9lp8gjZKf6l/zlb56muy+n6dp9pahqpDIkszlfB5OcYP+xVcoh2LiA3JJZHVy6B6 b+T/AOflv50vhoesWsen64ys9u0JYwXAQFmVAxLI6rvxJNQDv2zXa7s04RxRNx+5yMOo49jzSf8A 5yG/NnW/Ll9N5RtLS2lsdZ0hvrE8ok9VPrTT278OLquypUVHXLey9FHIPEJNxl91FhqMxj6e8Pl/ OkcB615G/wCchfNPlvQ9N8uWmnWM1paExpNKJvUIklLmvGRV6v4ZqtT2XDJIzJNlycepIAFPQf8A nLa8ZPL2gWVfhmu5ZivYmGMKD/yWzB7Ej65HybtWfSHzJnRuA9Y/5x7/ACz0vzjr17eazGZtJ0hI y9rUqJppi3pqxG/BRGxIHt2zV9qauWKIEfqk5OmxCRs9Hu35j/k95K1nylfR2WkWun6la28kmn3N pEkDLJGvJUb0wvJGpxIavWo3zS6XXZIZBciQTvbl5MMZDk+Mc651bsVfSn/OO/5ReXLry1H5r16x j1C5vnkFhBcqJIY4YmMZf02qrMzq27DYAUznu1NdMT4ImgObn6bCKsrP+ckPys8tWPl1fNWi2cWn XVvNHDew26rFDLHKeIb01AUOr03A3BNceytZMz4JGwUanEKsPm7OhcFMPLzMuv6YykhhdwEEbEES LleX6D7iyh9QfoNnCu4fCX5q/wDkyvM//bTuv+TrZ2mi/uYf1Q6nN9ZYtmU1vq3/AJxQ/wDJd6j/ ANteb/qGts5jtr+9H9X9JdhpPp+L2nNQ5TF/N/5aeSvN0bDW9MjluSOK30Y9K5WnSkq0Y08GqPbM nBq8mL6T8OjCeOMuYeE+dP8AnFbW7Pnc+U75dSgG4sborDcAeCybRP8ATwzdaftmJ2yCvMcnEnpD /C8V1nQta0S9ax1eymsLtOsM6MjU8RXqPcbZt8eSMxcTYcSUSOaFt7i4tp0nt5XhniIaOWNirqw6 FWFCDkyARRQDT2b8uv8AnJDzlYXtnpeuqut2U0iQieQ+ndJzYKD6oBElK1PNan+bNRquysZBlH0n 7HLxamV0d3v35hLSCxmH2kdwD8wD/wAa5zLnvMPPP/OVGmW3q2nk+zN7MKqNSuw0cA/yo4tpH/2X H5HN5p+xpHfIa8g4k9UB9LwfWfMfnbzzq8f1+4utYv5GpbWkas4BP7MMEY4r/sVzdY8WPDHaoj8d XElKUz3vR/Jf/OMHm7VfTufMUyaHZtQmDaa7Zev2FPBK/wCU1R3XNfqO2Mcdoeo/Y3Q0pPPZ9JeT PKGleUfL9voWlmRrS3LMHmYPIzOxZmYgKNyewzn8+eWWZlLm50ICIoPkD88//JseYv8AjOn/ACZj zquzv7iP46ut1H1lI/I3knWPOfmGHRNK4LPIrSSzSkiOKJPtO9AT3AFB1Iy/U6iOGHFJhjxmRoJx +Z/5Ua3+X93Zx308V5a36uba6hDAcoqc0ZW3UjmD7/flOj1sc4NCiGWXCYJR+Xl9PY+fPL11AaSR 6ja+1VaVVZfkykjLdVESxSB/mljiNSHvfRH5/wD5R3XmSW684R6kltFoukSc7Noi7SfVTNcGjhgB yD8emaHszXDHWOr4pffQc3UYeL1XyD5XzpnXvZ/y/wD+cdb/AMzeXNL8yx63FbR3dZRbNAzsvpys lOQcdeHhmn1XaoxzMOG683Lx6awDbK/+cuv94fLH/GW8/wCIw5jdh85fD9LPWcg+bc6FwX01/wA4 kf8AHC8wf8xUH/Jts5ztv64+5z9J9Je46t/xyrz/AIwSf8QOaaHMOW/PTO8dK7FX2/8AkmAPyq8u UFP9Fr98jZxvaH9/L3u2w/QEm/5yS/8AJT6j/wAZ7X/k8uXdlf34+P3MNT9BfHOdY6xH6B/x3dN/ 5iof+Ti5Xl+g+5lD6g/QfOFdw+EvzV/8mV5n/wC2ndf8nWztNF/cw/qh1Ob6yxbMprfVv/OKH/ku 9R/7a83/AFDW2cx21/ej+r+kuw0n0/F7Tmocp2KqF7fWVjbPdX1xHa2sQrLPM6xxqPFmYgDDGJka G5Ul4f8Amd+f/wCWk1lLpNvpcfmttwDMgW0RqU5LI4MhYeKL8mzc6PszMDxE8H3uLl1EOXN8zXk8 U91NNFbpaxSOWS2iLmOME1CKZGkeg/ymJzooihV268lE6B/x3dN/5iof+Ti5HL9B9zKH1B9vfmCC dNtgNyZ9h/sTnCu4fE/mLyr5i8t3xsdcsJrC5FeKyr8Lgbco3FUdfdSRnc4s0MguJt08oGPN6f8A lN+fGleULZNN1Dy7brbEBZdS09Ql2w8Zg5Pqn/ZrTNbrezZZTxCRvuPL9jkYtQI7EPo/yl+Yfk3z ZDz0LU4rmULyktSTHcJ48on4vt40p75oM+lyYvqFObDJGXIsjzHZviT88/8AybHmL/jOn/JmPOw7 O/uI/jq6vUfWWZ/84nAf431Y03/Rjb/9HEWYnbX92P636G3Scyyv/nLdV/Qnl5qDkLmcBu4BjWo/ DMbsT6pe5s1f0h8/eTf+Uw0L/toWv/J9M3mo/u5f1T9zh4/qHvfbf5kf+S780/8AbIv/APqGkzj9 J/ew/rD73aZfpPufBmds6h9r/kN/5KTy9/xim/6iZc4/tL+/l+OjtcH0BhH/ADlpYs/lbRL8D4be +eAnao9eEsO//FOZnYkvXIeTVqx6R73y/nSOvfTX/OJH/HC8wf8AMVB/ybbOc7b+uPuc/SfSXuOr f8cq8/4wSf8AEDmmhzDlvz0zvHSuxV9v/kp/5Kvy5/zC/wDG7ZxvaH9/L3u2w/QEm/5yS/8AJT6j /wAZ7X/k8uXdlf34+P3MNT9BfHOdY6xH6B/x3dN/5iof+Ti5Xl+g+5lD6g/QfOFdw+EvzV/8mV5n /wC2ndf8nWztNF/cw/qh1Ob6yxbMprfVv/OKH/ku9R/7a83/AFDW2cx21/ej+r+kuw0n0/F6l5j8 2eW/LVmLzXdRh0+Bq+n6rfG/GlRHGKu5Feig5rcWGeQ1EW5EpAc3h3nT/nKyNedt5Q07men6RvxQ fNIENT7Fm/2ObnT9jdch+A/W4s9X/NeF+Z/OvmrzRdfWde1Ka+cEmON2pEhPX04l4xp/sVzdYdPD GKiKcSeSUuZSXLmD0LyN+RfnzzasdzHajTNLehF/e8o1ZT3ijoXfboacffMDUdo4sW13LuDfj08p eT6J8h/kD5G8qGK6mh/TOrR0YXt4oKIw7xQboniCeTDsc0Gp7Sy5dvpj3BzceCMfeyTzivrXmj2n eaff5VUf8bZr25O9W0bSdYsZLDVbSG+s5ftwTosiE9jRuhHYjcZOGSUDcTRQQDzeG+ef+cV9NuTL eeT7z6lKasNMuy0kJPhHNvIn+yDfMZudP2zIbZBfmHFnpQfpeC+YfKXm/wAn6isWr2VxptyjVguB UIxH7UUyHi3+xbN3iz48o9JBDhyhKB3fWv5C63q2tflpp99q13Je3hknja4mbnIyxysq8mO5oB1O cv2ljjDMREUNnZYJEwBL5n/PP/ybHmL/AIzp/wAmY86Hs7+4j+Orgaj6yzT/AJxO/wCU31b/ALZj f9REWYnbX92P636G3Scyyv8A5y3/AOOF5f8A+Yqf/k2uYvYn1y9zZq/pD598m/8AKYaF/wBtC1/5 Ppm91H93L+qfucPH9Q977n836bNqnlPW9MgFZr6wuraIDarTQsi/i2cZgnwzjLuIdrIWCHwCysrF WBDA0IOxBGdy6d6B5H/OXz35etdP0Gx1BY9HiuUIjaGN2WN5ecqKxUtxYsfffamYGo0GKZMyPVTf jzyFDo+i/wDnIjRzqX5V6m6DlLp7w3iCldkkCP8AdHIxzQdl5OHOPPZzdQLgXxnnXOrfTX/OJH/H C8wf8xUH/Jts5ztv64+5z9J9Je46t/xyrz/jBJ/xA5pocw5b89M7x0rsVfb/AOSn/kq/Ln/ML/xu 2cb2h/fy97tsP0BJv+ckv/JT6j/xntf+Ty5d2V/fj4/cw1P0F8c51jrEfoH/AB3dN/5iof8Ak4uV 5foPuZQ+oP0HzhXcPhL81f8AyZXmf/tp3X/J1s7TRf3MP6odTm+ssWzKa31b/wA4of8Aku9R/wC2 vN/1DW2cx21/ej+r+kuw0n0/Fjv/ADl7/wBMn/28P+xbMjsP+P4fpYazo+dM37hPSfI35BefPNJi uJbf9D6W9G+u3oKsynvHDtI224rxU/zZrtR2nix7A8UvL9bfj08peT6I8jfkR5C8qCKcWv6V1RKN 9fvQHKsO8cX92lD02Lf5WaHUdo5cu11HuDm48EYvRcwG52KscuV+t+dLdOsdhAZHHgzVA/4kuKsj xV2KobUdN0/UrOSy1C2ivLSYUlt50WSNh7qwIyUZmJsGigi0J5b8s6L5b0waXo0H1WwSR5Y4OTOF MrFmoXLGlT0rksuWWSXFLcrGIAoMG80f84+eRfMuv3muahNfreXzB5lhmjWOqqE+EGNj0XxzNw9p 5ccREVQap6eMjZTLyD+TflPyNqdxqOjSXb3FzCbeQXMiOvAur7BUTeqDK9Tr8mYASrZOPDGHJH/m B+Wvl7z1a2ltrT3CR2UjSwm2dUPJwFPLkr+GV6bVzwkmNbssmMSG7EtN/wCcZ/y80/UbW/gn1Ez2 k0c8QeeMrziYOtQIhtUZlT7WyyBBrdrGmiDb1nNY3vMfOH/OPP5f+ZtSn1R1udNvrgl52snRY5JG 6u0ciSCpO540r882ODtTLjHDsR5tE9PGRtJ7D/nFb8vbd1e5vNSuypqUaWKNDv4JEH/4bLZds5Ty EQxGliHrWsaZb6rpN7pdyK299BLbTD/IlQo34NmrhMxkJDo5BFinwrpnkTzHqfmyfyrZQK+tQSTR NbvIkVWtyfUAZyo2Ck/LO0nqYRx8Z+n9bqhjJlw9X05/zj35A80eTdK1e38wWq20t3PFJAqyxy1V UIJrGzU3Oc72nqYZZAwPIOdp8ZiN3qWoRPNYXMMYrJJE6IOm7KQM1sTRDkPj3/oXH82/+rTF/wBJ Vt/1Uzq/5Vwd/wBhdb+Wm7/oXH82/wDq0xf9JVt/1Ux/lXB3/YV/LTfUX5Y6HqWheQtF0jU4xFf2 cHp3EYZXCtyY05KSD17ZzeryCeWUhyJc/HGogFLfzq8ra15o/L+80fRoRcX80sDxxM6xgiOUM3xO VXoMs0GaOPKJS5bsc0TKJAfN/wD0Lj+bf/Vpi/6Srb/qpnQfyrg7/sLhflpovSP+cefzWt9VsriX S41ihnikkb61bmiq4JNA/gMhk7UwGJF9O4pjppgh9f5yrsXyn59/Ib8zdX87a5qlhpsclle3s89v IbmBS0ckhZTxZwRse+dNpu0sMMcYk7gdxcDJp5GRISH/AKFx/Nv/AKtMX/SVbf8AVTL/AOVcHf8A YWH5ab378gPJXmLyh5OvNM163W2vJtRkuY41kSUGJoIUB5Rlh9qNts0faeohlyCUeXD+kuXp8ZjG ipfnR+U+q/mFf+Xo7W7isbLT/rZvriQF3Am9DgI4xTkf3bdWA98Og1scAlYsmq+1c2EzpM/I35Je Q/KBS4trT6/qiUP6RveMsit4xrQJHv0Kjl7nK9R2hly7E0O4MseGMeTPswW12KuxVokKCxNANyT4 YqkXliM3D32rsN76YiGv++ozxX/P2xVPsVdirsVdirsVdirsVdirsVdirsVdir5g/P8A0a/8m/mV pfnrSV4LeyJOSBRRd23EOrU7Sx0r4/FnR9mZBlwnFLp9xcHUDhkJB9GeWvMFh5i0Cx1vT25Wl/Es se9SpOzI1P2kYFW9xmgy4jjkYnmHNjIEWEwmk9OJ5KV4KWp40FcrS8t/5Xp/2pP+nr/rziqvY/nf ZS3KR3mlvbQMQGmSYSla9ypSPYfPFWS+dfPUHlm1s5ltxeves3poJPTHBQCX5cXr9oYqxWP88kMi h9G4ISAzi5qQK7mnpCuKs681+YhoOhS6qIPrQjKARB+AYSMFry4v4+GKsD/5Xp/2pP8Ap6/684qn Hlb82bHW9Ui064smsZZyVgf1BKjNSoU/ChFe2Ku83/mtaaJqMmm2lp9duYaCd2fhGjEV4igYsR36 YqkVv+eNyCPrGko47mOYqafSjYqyfzv+Yv8AhfUILT9H/XPXi9Xn63pU+IrSnB/5cVY7/wAr0/7U n/T1/wBecVZLN+YPpeSIPNH1CvryGP6n61KUlaOvqcP8iv2cVY1/yvT/ALUn/T1/15xVOfKv5r2O uapHps9i1lNPUQP6glRmArxJ4xkVptirPMVSrzDNKbRLG3NLm/b0U9kP94/yVcVTC1t4ra3it4hS OJQiD2ApiqrirsVdirsVdirsVdirsVdirsVdirsVYv8AmT5JtfOflC90SXik7j1bGdukVzHUxtt2 NSrf5JOZOk1Bw5BL5+5hkhxCnhn/ADjx5+uvLPmG58g+Ya20dxcMlosuxgvgeDwmvaWlB/lf62bn tTTDJAZYb7fY4mnycJ4S+lbv/eWb/jG36jnOuc+ZtHvbex1O3u7i1S9ghflJayU4SD+U1Dj8MVRF 6za9rznS9PW2a8dRBYW4qq7AUFAo7VOwGKsg/NK5I1iz0rnzGk2cNu561kKhmP0rxxVjmrtpbJYf UGYlbVFvOS8aXFWL08RuN8Vel65qf6R/JuC4J5OqwQyHvyhlEZr8+NcVeeeXPMEejSXEj6fb6h66 BAtyvJUNa1ApirIPyq8sPqetx6mZ41g0yRZJIan1WalY9qfZr3r2pirvPHk3VX80ahPZtBcxTymU 8Z4VdC/xFHR3VgRX6RiqTRebvMVncpHdSLcpbtxe1uY45EIU0KkFT4dRirIvzlmWfWNMmUUWWyVw D4M7HFUl0W38wvpsLWmi2l3bnlwuJYIndvjNasxqaHbFWYeZku0/KS2W7to7S4E4528SqiL+/elF XYVG+KsA8veYI9HS7D6db3/1lAgNyvIRkV3XbvXFWR/lP5ZfUdaTVTOiw6a/J4QT6rOynhtSgX39 qYq9uZlVSzGigVJPQAYqlmmxtdXUmqyggOPTskP7MNa86eMh3+VMVTTFXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq8E/5yO/KeS+hfztocR+v2qA6vBHXlJFGNrhaftRgfF/k7/s77vsrW8P7uXI8v1O JqcV+oc06/I3834/OGkny9rM4XzLaxFVlf8A4+4VFPUHjIv7Y7/aHelPaWg8I8UfoP2M8GbiFHmm ug/k/LpusWt9NqEdzFbuHeAwkBxTpuxH4ZqnIejQWVnbsWggjiYihKIqkj6BirznWvyhvNV1m71G XVUX61M0nD0iSqk7LXl2XbFUTrn5N6NcxxDSJDYOpPqs/OYMCNhQsKUxVXtvy2vIvJ135cfUUcXE 6zxz+kQEoVJXjy3rw8cVQWmfk7Hb2OoWt3fLObuNRBIsRUxSoeSvuxr4EeGKqvlb8sdW8vaxFqFv q6Mo+C4h9FgJIz9pT8f0j3xVR82flRfazrl3qlvfxRi5IYRSIw4lUC05AmvTwxVCaR+SbJdRyapf pJAhDPBApq9P2ebEUH0Yqn3nn8upfMt/bXUV6lotvD6PpmMvWjFqijL44qxv/lRt1/1d4/8AkSf+ a8VZRP8Al/NJ5Ft/LH11RJBIZDdemaGsrSU4cv8ALp1xVK9N/KCO30vUrK6vVna8WM28qxlTFJEW IehY1ryofbFVXyn+Weq+XdYj1CDVkeP7FxB6TASRnqv2+vce+Ks1uUN7J9X/AOPRD/pDfzkf7rHt /N93jiqNxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpfr2vaToGk3GratcLa2FqvOWV/wVR1ZmOw A3JyePHKchGIslEpACy+U/Mf/ORXm2988W2t6YzWuj2DMltpDH4JoW2f6yBszSD/AID9nfc9Ni7K xjGYy3kev6nXy1J4rHJvzb5Ss76zT8zPyzeSOzjkE2p6ZCaXOmXI+JmVV39Ou+2wG4+H7LgzmJ8H Nz6HpIJnC/XB67+Tn58af5sjh0bXnjs/MoAWNtkhu/Ax7/DJ/MnfqvgNXr+zTi9Ud4fc5GHOJbHm 9ezVOQ7FXYq7FXYq7FXYq7FXYq7FXYq7FUlXV5tUvDbaQwayt5Cl/qXVOUZ+K3g/nfs7D4U3G71C 2mHCLlz6D9KLtOVVVUKooo6DKkt4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYql+va9pOgaTcatq1wt rYWq85ZX/BVHVmY7ADcnJ48cpyEYiyUSkALL42/Nn82dW8+6t+1a6Fasf0fp9fo9WWmzSMPoUbDu T1ui0UcEe+R5l1mbMZnyYFmc0vZP+ccPJ/nO+8yrrunXUmmaFatw1C4pVLoDc2yo1Vevdv2OvWma jtXPjEOEi5dPLzcrTQld9Gb/AJs/845RX0kuu+SUW1vyTJPpAIjikateVu2wjav7P2fDj3w9F2rw +nJuO/8AW25dNe8ebHvIH/OQ/mHyxdf4e8/W1xcxWzek126kX0BHaZXp6o9zRv8AWy/U9lwyDjxE b/Jhj1BjtJ9E+X/M2geYtPXUNEvor+0b/dkTVKk/supoyN7MAc0OXFLGakKLmxkCLCZ5Wl2KuxV2 KuxV2KuxV2KpR5k82eXvLdmLrWb1LVHPGCM1aWV+yRRLV5G9lGW4sM8hqItjKQHNIYIfNHm889Si m8veWW+zpvLhqN4v/Ly6H/Ro2HWNDzP7TL0y4mGLl6p9/Qe7v9/JiLPkGYWtrbWlvFbWsSQW8KhI YY1CoiqKBVUbADMUkk2WxVwK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYql+va9pOgaTcatq1wtrYWq8 5ZX/AAVR1ZmOwA3JyePHKchGIslEpACy+NvzZ/NnVvPurftWuhWrH9H6fX6PVlps0jD6FGw7k9bo tFHBHvkeZdZmzGZ8mBZnNL0n8nfyd1Hz1qP1u752vlu1el3djZpWG/ow1/a/mboo96DNdr9eMIob zLfhw8e55PsLStK07SdOt9N023S1sbVBHBBGKKqj/OpJ3J3OcpOZkbO5LsgK2CLyKWL+dvy28oec 7X0tbsg86Lxgvov3dzEOvwyAGo/yWBX2zJ0+ryYT6T8OjCeMS5vCNZ/ID8y/Jt+2reRdTe9VKlfQ f6tdhBvxdCfTlHsG3/lzdY+08OUcOUV9ocQ6eUd4lEaL/wA5LeddAuBpvnjQ2nmj2kk4Gyuh/lNE y+m30Bcjk7JxzF4pfpCRqZDaQem6D/zkP+VurKofUn0ydv8AdN9E0dPnInqRf8Pmuydl549L9zfH UQPVnOm+Y/L2qU/RuqWl9Xp9Wnimr3/YZsw54px5ghtEgeSY5Wl2KpTqfmzyvpXL9J6xZWRSvJbi 4ijOxp0Zgeu2Wwwzl9IJ+CDIDmwrV/8AnIT8uLOQW+n3Fxrl6x4pa6dA8jM3YBn9ND/sScy4dmZj uQIjzajnj03UINY/OrzcQLHToPI+kv8Aavb4fWtQK9P3duQqqfaRR7HJGGnxcz4kvLYfNFzl/RZJ 5U/LPQNBuv0pO02s+YWFJdb1FzPcb9RHyqsS7mgQdNqnMfNq5THCPTHuHJsjjA36suzFZuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxVL9e17SdA0m41bVrhbWwtV5yyv+CqOrMx2AG5OTx45TkIxFkolI AWXxt+bP5s6t591b9q10K1Y/o/T6/R6stNmkYfQo2HcnrdFoo4I98jzLrM2YzPkwLM5pek/k7+Tu o+etR+t3fO18t2r0u7sbNKw39GGv7X8zdFHvQZrtfrxhFDeZb8OHj3PJ9haVpWnaTp1vpum26Wtj aoI4IIxRVUf51JO5O5zlJzMjZ3JdkBWwReRS7FXYq7FUHqmjaRq1v9W1Sxt7+3rX0bmJJkr48XDD JwySibiaQQDzef6z/wA46flXqRLR6dJp0hNS9nM6f8JJ6kY+hczsfamePW/e1S08D0Yne/8AOJXl l2P1HXb2Bf2RPHFMR8yohzJj23PrENR0ke9ZB/zizNB/cecruLanwQFdh22nwnti+cB+PgkabzKI j/5xasZWrqfmrULtTswVVQlfCrtNkT2wR9MIhP5YdSWQaR/zjV+VunsGntbnU2FKG8uGpUe0AgU/ SMon2tnlyIHuH62UdNAM/wBE8seXNCiMWjaZbaehFG+rxJGWp/MyirfTmDkzTn9RJbhEDkmmVpdi rsVdirsVdirsVdirsVdirsVdirsVdirsVS/Xte0nQNJuNW1a4W1sLVecsr/gqjqzMdgBuTk8eOU5 CMRZKJSAFl8bfmz+bOrefdW/atdCtWP6P0+v0erLTZpGH0KNh3J63RaKOCPfI8y6zNmMz5MCzOaX pP5O/k7qPnrUfrd3ztfLdq9Lu7GzSsN/Rhr+1/M3RR70Ga7X68YRQ3mW/Dh49zyfYWlaVp2k6db6 bptulrY2qCOCCMUVVH+dSTuTuc5SczI2dyXZAVsEXkUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVL9e17SdA0m41bVrhbWwtV5yyv+CqOrMx2AG5OTx45TkIxF kolIAWXxt+bP5s6t591b9q10K1Y/o/T6/R6stNmkYfQo2HcnrdFoo4I98jzLrM2YzPkwLM5pek/k 7+Tuo+etR+t3fO18t2r0u7sbNKw39GGv7X8zdFHvQZrtfrxhFDeZb8OHj3PJ9haVpWnaTp1vpum2 6WtjaoI4IIxRVUf51JO5O5zlJzMjZ3JdkBWwReRS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FUv17XtJ0DSbjVtWuFtbC1XnLK/4Ko6szHYAbk5PHjlOQjEWSiU gBZfG35s/mzq3n3Vv2rXQrVj+j9Pr9Hqy02aRh9CjYdyet0Wijgj3yPMuszZjM+TAszml6T+Tv5O 6j561H63d87Xy3avS7uxs0rDf0Ya/tfzN0Ue9Bmu1+vGEUN5lvw4ePc8n2FpWladpOnW+m6bbpa2 NqgjggjFFVR/nUk7k7nOUnMyNncl2QFbBF5FLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVS/Xte0nQNJuNW1a4W1sLVecsr/gqjqzMdgBuTk8eOU5CMRZKJSAFl 8bfmz+bOrefdW/atdCtWP6P0+v0erLTZpGH0KNh3J63RaKOCPfI8y6zNmMz5MCzOaXpP5O/k7qPn rUfrd3ztfLdq9Lu7GzSsN/Rhr+1/M3RR70Ga7X68YRQ3mW/Dh49zyfYWlaVp2k6db6bptulrY2qC OCCMUVVH+dSTuTuc5SczI2dyXZAVsEXkUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2Kvjv/nIPzxr+ted77RLpjBpWjTGG0shsrMBvO/8zOD8Pgu3jXq+y9PG GMSH1S/FOt1OQmVdA8tzZuO9J/J38ndR89aj9bu+dr5btXpd3Y2aVhv6MNf2v5m6KPegzXa/XjCK G8y34cPHueT7C0rStO0nTrfTdNt0tbG1QRwQRiiqo/zqSdydznKTmZGzuS7ICtgi8il2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvGvzv/ACMk83z/AOIP L7JHr6oEubeQ8EukQUQh+iyKBxFdiKdKZtuz+0fC9E/p+5xs+Di3HN5d5D/5xw846nryJ5ntH0jR oPjuZC8TSS0P91FwZ92/mOwHiaDNlqe1ccY+g8UmjHppE+rk+q9K0rTtJ06303TbdLWxtUEcEEYo qqP86kncnc5zM5mRs7kueBWwReRS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FX//2Q== uuid:12412b8a-b3cd-11d8-ad73-000a277a9196 application/postscript % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 Adobe_AGM_Utils begin Adobe_AGM_Core/page_setup get exec Adobe_CoolType_Core/page_setup get exec Adobe_AGM_Image/page_setup get exec %%EndPageSetup Adobe_AGM_Core/AGMCORE_save save ddf 1 -1 scale 0 -274.963 translate [1 0 0 1 0 0 ] concat % page clip gsave newpath gsave % PSGState 0 0 mo 0 274.963 li 328.581 274.963 li 328.581 0 li clp [1 0 0 1 0 0 ] concat 162.14 159.209 mo 164.809 159.209 li 166.378 159.209 166.978 158.385 166.978 157.128 cv 166.978 155.702 166.331 155.074 164.809 155.074 cv 162.14 155.074 li 162.14 159.209 li cp 153.82 149.112 mo 168.57 149.112 li 174.539 149.112 175.297 153.644 175.297 156.7 cv 175.297 160.92 172.876 164.805 167.668 164.805 cv 162.14 164.805 li 162.14 169.482 li 153.82 169.482 li 153.82 149.112 li false sop /0 [/DeviceCMYK] add_csa 0 0 0 0.5 cmyk f 187.539 153.847 mo 187.469 153.847 li 185.743 161.292 li 189.315 161.292 li 187.539 153.847 li cp 180.946 149.112 mo 194.13 149.112 li 199.433 169.482 li 190.835 169.482 li 190.306 166.883 li 184.797 166.883 li 184.175 169.482 li 175.692 169.482 li 180.946 149.112 li f 210.91 158.785 mo 213.472 158.785 li 215.36 158.785 215.773 158.013 215.773 156.497 cv 215.773 155.216 215.084 154.707 213.611 154.707 cv 210.91 154.707 li 210.91 158.785 li cp 202.59 149.112 mo 218.17 149.112 li 221.905 149.112 224.094 151.253 224.094 155.102 cv 224.094 159.156 221.56 160.806 218.98 161.064 cv 224.694 169.482 li 214.852 169.482 li 210.955 162.921 li 210.91 162.921 li 210.91 169.482 li 202.59 169.482 li 202.59 149.112 li f 246.271 149.453 mo 246.271 154.929 li 244.726 154.762 241.245 154.104 238.872 154.104 cv 236.748 154.104 236.128 154.504 236.128 155.158 cv 236.128 155.618 236.476 156.076 237.995 156.076 cv 240.278 156.076 li 245.141 156.076 246.8 158.385 246.8 162.719 cv 246.8 169.28 241.476 170.081 236.748 170.081 cv 233.57 170.081 231.033 169.966 228.267 169.225 cv 228.267 163.235 li 229.881 163.689 232.347 163.861 234.469 163.861 cv 237.049 163.861 238.25 163.832 238.25 163.007 cv 238.25 162.092 237.534 162.033 236.312 162.033 cv 234.032 162.033 li 230.847 162.033 227.574 160.92 227.574 156.186 cv 227.574 149.596 232.694 148.513 237.742 148.513 cv 240.162 148.513 243.826 148.943 246.271 149.453 cv f 250.767 149.112 mo 269.344 149.112 li 269.344 155.556 li 259.084 155.556 li 259.084 157.5 li 269.344 157.5 li 269.344 162.232 li 259.084 162.232 li 259.084 164.148 li 269.344 164.148 li 269.344 169.482 li 250.767 169.482 li 250.767 149.112 li f 282.64 158.785 mo 285.199 158.785 li 287.089 158.785 287.504 158.013 287.504 156.497 cv 287.504 155.216 286.814 154.707 285.337 154.707 cv 282.64 154.707 li 282.64 158.785 li cp 274.322 149.112 mo 289.9 149.112 li 293.636 149.112 295.825 151.253 295.825 155.102 cv 295.825 159.156 293.29 160.806 290.707 161.064 cv 296.425 169.482 li 286.583 169.482 li 282.686 162.921 li 282.64 162.921 li 282.64 169.482 li 274.322 169.482 li 274.322 149.112 li f 123.629 118.185 mo 118.823 85.8472 129.627 54.8028 150.344 32.6446 cv 127.018 54.9756 114.497 87.8809 119.604 122.254 cv 127.965 178.542 180.37 217.389 236.655 209.028 cv 260.596 205.473 281.368 193.923 296.707 177.514 cv 281.839 191.75 262.59 201.704 240.678 204.959 cv 184.395 213.321 131.989 174.469 123.629 118.185 cv 1 0.73 0 0.02 cmyk f 327.45 87.9068 mo 319.089 31.6187 266.686 -7.22852 210.401 1.13233 cv 186.457 4.68848 165.687 16.2354 150.344 32.6446 cv 165.217 18.4102 184.466 8.45557 206.379 5.20069 cv 262.661 -3.16114 315.066 35.691 323.423 91.9761 cv 328.229 124.315 317.426 155.358 296.707 177.514 cv 320.033 155.187 332.555 122.282 327.45 87.9068 cv 0 0 0 0.3 cmyk f 67.0342 274.159 mo 67.1495 274.266 li 152.929 188.32 li 152.784 188.172 li 148.898 185.844 142.468 179.098 139.797 175.377 cv 54.8653 260.479 li 54.6446 260.612 54.4376 260.758 54.2564 260.946 cv 52.167 263.036 53.3951 267.639 56.9927 271.229 cv 60.4571 274.688 64.8492 275.934 67.0342 274.159 cv 1 0.73 0 0.02 cmyk f 43.5586 81.8414 mo 57.1377 81.8414 li 57.1377 102.126 li 58.9927 99.9947 60.8355 98.4737 62.6661 97.5552 cv 64.4991 96.6377 66.6661 96.1783 69.1675 96.1783 cv 72.8765 96.1783 75.7999 97.4366 77.9312 99.9542 cv 80.0665 102.472 81.1329 106.335 81.1329 111.541 cv 81.1329 136.773 li 67.4024 136.773 li 67.4024 114.941 li 67.4024 112.452 66.9883 110.688 66.1626 109.651 cv 65.3365 108.619 64.1788 108.101 62.6861 108.101 cv 61.0381 108.101 59.6973 108.798 58.6763 110.195 cv 57.6514 111.59 57.1377 114.094 57.1377 117.706 cv 57.1377 136.773 li 43.5586 136.773 li 43.5586 81.8414 li f 104.832 81.5596 mo 104.832 96.8028 li 112.38 96.8028 li 112.38 107.969 li 104.832 107.969 li 104.832 122.052 li 104.832 123.746 104.977 124.866 105.268 125.411 cv 105.713 126.261 106.492 126.683 107.61 126.683 cv 108.613 126.683 110.02 126.359 111.827 125.71 cv 112.832 136.168 li 109.473 136.986 106.34 137.397 103.425 137.397 cv 100.042 137.397 97.5562 136.913 95.9542 135.943 cv 94.3545 134.973 93.1685 133.499 92.4004 131.524 cv 91.6338 129.547 91.252 126.346 91.252 121.92 cv 91.252 107.969 li 86.271 107.969 li 86.271 96.8028 li 91.252 96.8028 li 91.252 89.4449 li 104.832 81.5596 li f 120.853 107.386 mo 120.656 95.9752 125.474 75.0494 125.474 75.0494 cv 136.118 75.0147 li 136.118 84.6431 li 139.155 80.6255 142.217 77.7657 145.312 76.0665 cv 148.4 74.3672 152.129 73.5181 156.501 73.5181 cv 161.202 73.5181 164.922 74.4537 167.667 76.3165 cv 170.405 78.1788 172.646 80.9566 174.389 84.6431 cv 177.931 80.3331 181.161 77.4029 184.077 75.8487 cv 186.99 74.2974 190.591 73.5181 194.874 73.5181 cv 201.182 73.5181 206.108 75.6109 209.653 79.7876 cv 213.196 83.9688 214.968 90.5079 214.968 99.4 cv 214.968 140.604 li 192.524 140.604 li 192.524 103.227 li 192.524 100.266 192.002 98.0596 190.958 96.6177 cv 189.429 94.3541 187.529 93.2198 185.256 93.2198 cv 182.572 93.2198 180.409 94.2916 178.771 96.4346 cv 177.131 98.5782 176.313 102.015 176.313 106.75 cv 176.313 140.604 li 153.869 140.604 li 153.869 104.56 li 153.869 101.684 153.715 99.731 153.415 98.7022 cv 152.929 97.0626 152.084 95.7374 150.884 94.7325 cv 149.684 93.7266 148.277 93.2198 146.663 93.2198 cv 144.036 93.2198 141.877 94.3116 140.189 96.4854 cv 138.498 98.6636 137.658 102.237 137.658 107.206 cv 137.658 140.604 li 126.968 140.67 li 126.968 140.67 121.05 118.796 120.853 107.386 cv f 227.623 49.8257 mo 250.067 49.8257 li 250.067 140.604 li 227.623 140.604 li 227.623 49.8257 li f 261.892 140.432 mo 261.892 122.974 li 300.672 105.922 li 261.892 89.0562 li 261.892 71.5992 li 317.505 98.5025 li 317.505 113.345 li 261.892 140.432 li f 33.6524 94.7354 mo 33.6524 105.299 li 10.1866 115.619 li 33.6524 125.824 li 33.6524 136.385 li 0 120.108 li 0 111.125 li 33.6524 94.7354 li f %ADOBeginClientInjection: EndPageContent "AI11EPS" userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse %ADOEndClientInjection: EndPageContent "AI11EPS" % page clip grestore grestore % PSGState Adobe_AGM_Core/AGMCORE_save get restore %%PageTrailer [/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 Adobe_AGM_Image/page_trailer get exec Adobe_CoolType_Core/page_trailer get exec Adobe_AGM_Core/page_trailer get exec currentdict Adobe_AGM_Utils eq {end} if %%Trailer Adobe_AGM_Image/doc_trailer get exec Adobe_CoolType_Core/doc_trailer get exec Adobe_AGM_Core/doc_trailer get exec %%EOF %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 11.0 %%AI8_CreatorVersion: 11.0.0 %%For: (Me) (Mine) %%Title: (htmlparser cmyk.eps) %%CreationDate: 6/1/04 9:21 AM %AI9_DataStream %Gb"-6CQC$WE?P)cnitWj!@6Id7R!3]Ui9b8Wk-A(HR'%Wo%FJf(`^loN6^_\3J0-N=KDDnQgl8P6"Y<56XDE"S`m4O(6_;oj2GCo %n;Aqp+$RI>md9ln:*9JeY7BSL*elZpk%-ZbC$r_1ikN2*rV]O#c:s\'"Y/C(IMcS^iFX,X+!5J]bMn9Oh!Kl85iYSQhnQf' %?a7eHn#7WjXU"SNC,S9UMgp!GiSWP*UZ#(FnSJY`T>1>P041mW>lO.552P23QS0`O%/*7BI/3IZ4Zn_q$nlQ5FFBaRilr%#gl^L, %H1r`uDD&NjgUBEFM8/EI9APZdI=1YcL\)bq%?G;ppfI23hu;a)q`hj-cY\X&)nq2:9,#\":k&<0o7K.d'JKLbrHG6cif!hVs6e]u %^W:rhqSaP+J,dF@T0@[NoBGXtp]'q[6Bsdj5Q(BdkTU*'[>0A0Yk2oFk-.b^N8F=/ %nb2r8^H-ab-@Gd0Y:g\Yl/Tf[?bcQs&U/X?&'HY)l0gjO]DqZPn)&SO(lEPZkdfSuq!S,e,d-e+jkUlki][gD0<4Ms2]mOZrtJ&r %_n45Kia3_WT"k-hkD(_Jr:U%6OT<&PG5!SuBq_rHN_>M5h`id=,pu3!cr;H#P:N']^+!O5O %Da:"Gr<*P&O$D(rJ!U?B1Xrs?i7lFd=lAPf"hq`VkS`Y?op>MBDkq=18bmh(\hDtpe:KEk?`4-XKe^D*$(CL8W!245^JO*6JMNW8kW-JHTL_n2^[re2S9dtZVnUR5U$"1$;M0Fk(5re'6;'.f1hulIAdgks(5u%$ %R%Qdl_YE%Bgqi2fro#O'*(o-Be:R5,?^aF#&qVXI+5SD*!'M.rOZB39&_*Ki_+iiS,H'Bcc`(:D?>\?mj5J0cXfRVCt*[--#]^4l$<,sI]2EtR=rgA %k6)`=iIX:I^Rf#>8]$GXX3 %hq#R7h;rf?9-&N:I6lasDL8R&_kirD\Q(*EDc(!un&*k-;>YP+q0c.!TBU'mEN<<#hl9^1[q"pBnoAa)iE?=@.I^>?d$C'Q! %[psfd][>Q_W(-\CeNHdo2!FqK5js`p;m$T(r`mrodYl65rkZ2eZl&;E:csA?olm\=Urt.L?^Qn@3+Gm=(7!3Er(R'Ls.?"O(oT=V %gN8DShaM@$EKh^G5>U!r5:1ocG'a7i]C0u%Ymi8nT*^"XKHkBK^96U>4_q_KJ3e,(2GLJ2#*(r,H(C#IY-(IHL_G>,G]pC'LEL(]a1F0s3cAb %"B1(Yc/Sf1$gmV;gVMd`7Gmci93;tuO+=3(R,SXl"QA[p84FF&]R(&W`,k2kNbBO@N/4tAbhr3n?,RNR`m["X^@U^S1%bp=6D*;- %#6g;t>(kT0[0Y/>dq.G$(\eLgCl?W'P %U>UID3/[Z9\-=P'VigGc9OmmPa05kcrOW=+r$sqdi[ou6Qfca!e3FkPFriE97be"b!$oT^8q9">3$O@X$ASk\Di<.WNOiAnO6:kB %k6YL0[5q(lF.XkhS.gtNS/!\K1EtU>A*SjiFKViOSqM#T\rilomMe7m\R=62So9c^r@D+Ri`Uf@*Dm2>1pGo*&2$h/:U<]U$6X2> %QCo"6eVd7P`bCr9e/PG<>nd2#:A#O'PJT"(T[1n;DYc0Vp2[1h4.g' %1f#K:]%SN",+VLeNQE"r1qfK#[c!N.3`m&XFp.Cq--_2/Bn:#O2Mt6o$];?SBJZ&goUH8RB_p5#+gS$u#E@j'M/k:kLN4-3T1TZMFi#`T.rr[`kKK2**Gs,4X_EfL5(0OaXECCG=bo:M4)=E:[-e^A %&83kGjqK]0P($`aUGEYkd5VepdaF4faYDH@g3(ijXr,EF\jlIZEN?M,'4dc)msQ(Pk\WN#369s0)VPMMUHa[Ro?]o.Gp"K`SEMh-h0or\S!M@g3aG!.[ %L,mS^XsoeRPtA[%dj(\[)l%[V`_#ms_!q#QKcYE*W#tXO>]_X28$qGGjnV'h@p3#3NDuCfah&c`joDNlgbX4ZT!T`=pQ-u6llY-q %ohNLY4&d0FaaDL=a!C@]erasb"E1;94ej(@89H#Q50[2a#k]V?Y^DJri\udiYuNcGE"Y=Kgt"oe,2X!(lWQ&e_&.IG[RTc6fKqC6 %coHtH;!:j<"-&CS9V*V&jL5E-Lq=7:6TtP,k5I"cX_qEacO]Jk?SZJ,s)d*:Ljdn %I7om^=GuATGVSTq9$>=K-$h]>-)B;CIM23og^t]dYLcrgdhKMXhT:3of<=P:oM!sX5`Wg0K2*Y_T@**.O4#">9&]]m$&,'B; %IZ;%86$*UA_@p8p*D&QN[:Rul\pV%Xc.`-Ke%Qqt4d+gTqA#k#8[sh_B8J,Ka"6Bc@Um"TfZ'JffSm1`=&PUVE29hO.7'Z_2`U@L %>Q>/A>,QYu$WUL>ZI=7-(<-q*c=-%R:jBA`gZ:;)'tS9C,^A(QdjNY8>Pl>bNT`h#D'S9C-/2>>0Om3qYVO,pWS)s!pegKE2Lb>J+V %L!$1.Q%^++8Ts*u`iX4FAL?[3`SLF[^nm=q4+DJT0B8\Cg%DD,+5VG@J\FeWj#:?&J,9'f3U#K$2o#;&CVP9.m^M"jnXK3@YMO\f %?i@m_&"e@Lp&"2BFMBeapYk#u%psmsmDnt9HQW:`e)Brho1sisr8GPKGJ?8)(&0:o"hsp08_;gI8$'>YIW"@PD4f^uHh[5hO)KLF %e(\eFbr<@4n(E#1pP"rXDa*%@2XiVQmQUI>[g:,W0?^Osj,GG[hsf6QJ,f$+m8"8'@9&KjIgdR]7(p3^s4pJM)7n'5qss-(8E##- %\+ed0q"UMZ(/+,Qs2Y)M%mMNtVNNn,^H;A:Ru]dO2%.+prpBUO,#l;Ur:\TfT'-[q5=2N]R$8*mG %LGaa(m(t3A]>'D44\eLkS<(k@UXRNYGWMFW\&Z,@jj]oWds.+F4qpB/MDo:u4p2kWc=3fRD?%4fgNH`jB]:88TW,f%biU1r7\i\g*hVCWnVnWY,Z+E[G(V;`Hc@SE!]Z,DX %Qg5l0OXpJGA*bq_0$Z.Wo7aA0^2Ea-j)sAIaB.;8jibQl`BO`;o&K5.p_rrHq!.*a(V]>4\tuHcGRE&Z %Y9R;.)2Km@>)THZ3>U5G\B]2=r6K5"h%eO1?cTmjL>n(HdD6p=-FpAHN1>KkKV3pk&P44-$C2Fft2S9!d>2b'n:Vos/uqgP,3&HH6C-U00p'jS\u %Z&?]V7igYC,4%=amP,pU)UWhe38u.5NY0tAfZ1Tp!9Zl[a%."^UlZn^Nf-jm%cC$0M:?Vdl0?b?]1?TcW^F%$&c(J9IBQM^8Yc_, %l+06X!tsjO6olQTH6gqciIh;qSrlS4O@X^DdLh=XRnRa_9J7][!g,r-NA+N[Ua"iX0FJJ5Ojul;!Z'Qc0O[+`N7^0jLS$RnI>P1h %N&JtuOdZ+bBF$+YtJp_"BGt4fm%'bLh)Ff^Oo6hDZ]LI:pK^Ws&L)7LU%;)K( %)4YZPbe)m4FG`9pDk0bZK"Ub)F&un?*"dbM(Zb$:b2=\%;%E=KMa88Bh$NTcR5G;0"bj:\;'EtCU6n-iYnu@Cbi-o[Lp6= %Ji(qi6)BNkV(cIAm6mNaELJ=6$e1>?#tIX'NO[[s\IubS"hjb#YCsPTZ%Tt51ts`K(M$0`NDrQL/TaVkXsc68[iVog?%uSQgT.i$ %\&WAF\8?^Oa1eKI'm$Bf)2)D:CLD`.@G6?l[%FJb]eBu@Iep1UVKB$7#rmZ %URlOa4=*CEkG&MD8(=.Tm"^C&QcKhX,DS6IIM!dmn<&pYOfqGuIYNZ*QcO\p,P5L:773Uf?p*D.XF[A2qMdsZY[L48%^nYkO);SB62mtbPkc-lKI9V(Y<&td9MmG>eW7*#O-"YQT*N2Y%![K %iAq+oVa[n/g&X%UCgV^hq;Ve\nkj"&fV:m2T1&f2"Q<3Ag#'_V$aPY=q2cUls*9hHc`T$2b[0^Y#5 %3[@FA9_t^OUb6AYU7Eo.8+gRrJh*%F6N:/#'ts:)[+BBI@7?6j'5]XA[!gAi.*Mg$X4A8=4d/)F-%8o.eW(pk%7]TOk0Cc#j>p`6F21bVQ%q1S=lKPuS:JkMKHiKGMQhPF4O6TC7 %2n"p7QcNBL;-URbLE2J*-K_YMBo1HEBKeU8a$$2=clM`6CqH+HA@Pd0$#>`a2V4V$#.Oib:Z\K\2"F!M" %>JYd!)A$YVPr`+U'b(I,n1JEgV/F;!R8V.!Ff\Q\PS2On`)4Yn=r:,$#5@rpCC6K%m4@SDlmZ53uc(F4;2,f]mG-hd5;hDWCUhn\*n)m:%H/fGPJe29*r7k=b1*mIRHt %?/%L>I-Yb'2@i%03o%-f_p>e%GFSIlca41+ei^&.d>JHu[FdW&2n$.:h(.g@p3*uL2Q"a)RJG:"G0PB*fO6.B@bfU-:m:C.BI!&Y#4SQu-54aOTQhO(KPElOh[Jjs#hQu%BL^OH4$/q[]X3=(#+LWBhpK<90n\mH(QpO64nrT*+jcC,-b'E1!<"JN*/&NkpX0A=[6R2 %RJ'I`SBR.ZAYkQU=^I!(bVD!AWHLjNB$$HPVb#,b5I1J-)4I?LajDa"RUDOrlk4"^nha"h/5o!;B"<6PP%YThR`0%TY\=1tbLl/W %+W_B(%i^r/P>nR&26-(%2Vb]0e\/tW]@Nplf@Y&o)HHMM)t$n)l<[u<^"@7aI%.&7#'iVW/trN1_d+>Bl4'?A.@.]6/3S:@$:jOu %j_0+7>]5IgGD_s;R@Pj7hA/-Uof"#DYJXFMpMq2]UNC`\lNK*j82M'4IT0-/^lj3'[R0gaEXFIT/KFO&h5l%b+pZ7Z\"L@Vu&AS%%kd*DTO(s2ARc %Yq`u41/me_mPU;uRO<9^Z-:][Z$VIAVWNa8(V4O[1LYs[pp@0EX0,3#-=>m"?J`V$KDp"rm^3sJ2n6U"lDfHQ?gnY'UP@Ato1I:u %Saf.K]ofI"mHSh.f3!B+[P-[QeF6u5.Yjme;q%=jPAta1[)\BAk+0[V5o&fa?0)a-jVtVp-\Yd$=$"$$lb_,abdXT1m;t#QXf>+5 %h912HC?&(`1>f+c,htO7*3Q^F99tq6K'O=5n`kMbrrfD$59jH?,!nrbr*1c3\`1IFbkZsZD/`9=>]k0bIUl5``N+?e_G`+&d!Fn^ %I1]t\?MF:Lh&n?I3jXP?ip4?_K4If)_=FS5HKnfaL*Nmn]%;etaK)6,F^d?$lD]-$(ll7Tl$6!;9C*ap.G%_`trAa?TsW_e14\"7D7tmb;q6?1"/`eSpQrpgmK+<1Ln,_`7@);*-pqCW%#MI+=a7ckkN`?7foI2j:nl %(J`YMh)Xtq*q %c"*H7M:"N_/YpYAPB'r2Q#hoNVh1qrGD-Q[Cnp,e<:OM?^'q;gHH/F:*?(#=]!Pb3[n6n&)VH@[4/Cll+FBkYGrWn%pMM8F[c.)i %`pRWegD^pqmP.X`:(Ysc:A*.GJ4tCI2Qu6a6N/-FZFr?*Xo.Rc?Ub^_gUu11-8RC4c@g"0_/>Y5*gjF1g4U^H@(\I^\m0i109;n] %Q_<0X,H8j4B_V/[GIsPT8cR=D;/B,E[MS.d3-,Ekd$^t7;OhVP094>:ZR/a\mHgn/I>Qngc<0WhdEV65P#j%7mdQu^3L2Id`*kYG %P7s)Lp6+b+f'6n8QQNI?^Lk.W/U66fdT0Y9n4fesH:$>aXfPBj8anWTGf#qDN64Y8/Fj&A:=9AE`lhH,F\1ZN+hbWWVFr*+:8n,* %QA[81(Jij`\__@8UXa1n>!$2qc;@Ej]=O!_"NKN0OcuHjEZj0',`&QfiKnAP2Qm(5c-r"bYNr)1)pkd%#cF?/=#>TVC\PDpn?q^k %dh#:-5BFU)T%Uj.]rRBn\qbDMlX&0@9KhcF?`H)!K83V_>4^,F>bk$;WRdUk5HQq\ii+7t_dVKH=9iY&Vn9fn%=oK]H+=t>2mFI% %b+&'K^(-nq6XRBLT %dh8LAGfne;3oG3 %A=+[lX;GUAmWYt_G/crIR$#sj-9])p7>9d4Hd/?j_!\esC6*\*YEtK+,\X[!'R0hEG-+cW*l507dUp*u[u"g4,VEiOd/+,Z)MhM\ %fI5W2Ud+;2X^CmM3Tpb.h=EU9_4@ah9O#0OEi3uV[OqDXC`7@D)k&+d9"5U25fYZWc@JCD:aAf^ghY(7>hFS=NQ@TK\/PpiBa*@4 %kY3GE@?/'a=NW_N#f-fk3"kD=o$W;8Xm5Ja30e:4]CJA,5)AA-OCHg/(Qq\&:dGr6;QlijbSOC9F&5Hh;q.aqIfKDl_u4e7+1N^K;H6TN.HrQ-e]ub-A%l@\4f-nE#Bu/0eQHT;=_C>(TIUkrX>tj@YE8^-@DncBjR1+nZgl.>8\:2'CQZ6\7a8gpR6soBPH;gUi=ZGfBtXh@I,RL\u4X>O[Y0d4g/U?kL1&>Q?dSoYsP/o %j`IGa(bO$<`u,b*G;*reb0N(R-bbW*Os>T[^*9Aa><6JAi@CItF=YBN:$Ig/XZ>2^>E[P!j^#o2[*js3F5lMQ/ihNs9p]g^b`*7e %b=kenXRP8o`0oHQ0cc,Z--BuifAAGPSTh4Y$iuQ5VkoKl`87([rs4-gKmP5RN#>GpV%A'cuSntrD[%!m?$&m@;YhReh['N %2*>\Z?Fd\qa84L %=JR2r8I;t]D$ci+Qr8Z*[sgN%j;!>NpY<\k>8B31kO>R:$@b6NjZi3uQ,c\&Or\%\ZI-W2!1D0!6TXP)FCs&rI<)V`cHrP]7AAq/goNX&iK*dK(@\)9CnW`$jjRFQs2iaS/CSt[JN&-7-#tK5)q_4bLaVLNh^l[F %GH2da8_,0RZ;^SOS\#2GdeR0,X#/+YYu\'j[kG#W7%cFH4]!'S0rj$U:DGUr6DdB\.FqtjRf%N/YefD/7tnd)q34=.(-5UbAAMdH %n9&CY3_TJJ@Q.PX<3iG86%ks\$)95G'8S"=Ft)%U,a5o9LB>V4JGCHUcS?uGoDd7lJ$N/4V)/-`[:?rA8UpQ+^Umu>it'K1;ht87 %KDe-7cLo@nqMG0,c8m93N`]c/)R?5=:QN/C3Kr21Dn#<=W')aI`cMWh91P]((;(WC)WX^o]P*jhS+7T&j=YgJC)Apur\ccdX.g-Lm^"r+?ZBRDaS%nXiDNB+k64`.'-(T1Srn %'*$^LG`d!3/-/\!1JR)";]S2o^VUD_D.ht1r+5STd'P/'Fg)f&;^e]`/(q"\7K"T\-9boA[X10,[4iDDK>I*?F([HHAYZ,;]"b^&fJHjd?lY/T(A`/7@'#qBT[h(b1hA[]K^ %_iacd`&q55oYR,%64\lZ+.6c6E0p5UEUGn2pb":?3mD<]Yt)"mo/CLTH081.f5hJ:]Y;3+8kRjk[A@0`g?VR"*UK[5mcTUIm[(fQ %Y-%,$GL%XgBZn!tr56mr/tME!l.9lE7J9\Qh_sfd8t.?:]i)GO,q$0^gg6I_10@=2npH]s(YNsd^9:gcI\dOhi[u$\'-6O^4`c[b %N`#.`6o'n[:^$W[B+VNBiNs9BW&V7e`iF8$X&`Q,.b.LbcuLN;FP\dg";[5USHE,7k4[rS<_^81JKD#bK>V?u.I]O>F;(NkWEO_O %4uo0#0k?!Y/X(_$3&`u_=_Bq/U@*q=Lp=K:0q'\NQ_u,*>:37YVV2]rl<^&$BJAFfes&%^N\5ddjhOi3'#CjV;[<`nak\G+/kF3]?NZ %XE1jP\\,rL)G=DC8FBH',_&^[WG8orb?4GeACXUuN;(f<`a9t\gST2e<\249jlKZ:!u##tDh:QSd*/4/a(C@u&5#FCm(DABrBP0(-a=\6`cN>8 %"#:jPc!X+$K/I3P&:8u5'm+7ALm3T6I`Y.g/Qpl60Rh#%$>iAiAPnBm"[TtBXo^)nTrW4qV7:o;"V^FqR<&OD?%0F(SNcZ0b5+0] %5;JRu;?N`+V(?o)m`PaUg_;.mKUsK@U3uC2n,;+nE*B0?X'PG.Y?%5RH\msdhK=1aQ%$=9f$ETmpV7^n#-c^8h>+XNm[=c"R\+J/b@CLe`6.bXLAV=>>\upk*m?I@U"Q>r2%slT2[jg$S2U:OQOPX]DFS8<[4k'($H#i!1O\_n$ %53e`cYb+!@dQX:QWkHpf'B>eH36jt&7e0jR;B/.DCnUq\b,C0Xb>+6!'lrq[KrKFTE;012HbDfi['8n'1]%7[ZgK]W5Cb`ZT"hS\ %k.&0s3V^?aK1muTPN*;u\c+*:==CLWSY]VRln6\/l(n)kZ@.[N+&/s33:ZEuDcSc?9LFl(YTi)08]?`>V,s&9%5!cY*;FdAPrH0s %MiWiZNXpN74bf*n)/ub[K8F9.qi4&0j41C_B-Rh']`m8J=?-VAkD_N[^7TZQO2TnrR5o5I!j\0c\5dP-m>ciZp'M#KD`C;j`3t,X>+[aAJ$=T@5+InD %K]h`)TC-tP4E&::FO*&-GrsTTHeo(TgT`ruF,o;69,HKno>Qolqldo7?`V$CH\M!=KB:+BVi:J#PYJAQS]>^-I/UQG%H5;qA6.Ar %Y,b@g3OAdX-o53P=4VOnD=YBog:OXS/];9,Dh]Q\>d1i7'7(,%>O=l&Dr4`Hqq?7LN675GpiR2S-afW%;!/p%kj,o+<"!lUD-V?) %;GUUV78TY1"^^/l+>,\/X,FYs/%]k!C_^Gha>c8!]nq!B2GHd_(!HB]C?%lEZbfqXk5ggV+34':i;/N_Bu[AVsPJ%u$Bc/J<_ %o6j$_r'.QRbXLMJW86uc7)$r_0WJngCR6cD74RNe1,V::nl*#CIT,V8\TrM,^:L?TNk"Lj %A5jDX7h1L14n]_jo4@(sf1VIuA`jZWG),Ksk7Q;RQL6'^&R1JuM>D?ur`S@@f,=<]G5WV/W6-&/ahi,5I$c29_C[ZbMs]7jAbn!e %DAhgF[I6's-DRKsT6hVj59`6@b-hW'a'S\;Zkl]u6dfH3=@am+jh+O/W\<1q9QKp+jDWp8's;]!>Pk>c-s^hLmM1bM.6'f+b;?Y' %;VsT!]fp>rqSQqE7`Wd'#L5Hl5l"]iF;n'14.'[T!;b9?4kCb8dtG.mE+\QR9L=)0lrc4C=*qg4eNG(-i6ccNSnGC_E)HI,hC?^j %r(cK;RLKPZK]n;aLqF[h1?YGBM7b:"2^\+X7,"ZAu7;ls;'XgCtQM3L^TeOgL?'19/_6(+fMkj[9LnPn[mC8GgJdPQ*#hb2-Y %Z'ALr[AkSZ#X$`#(&)!!L[8>ghZ_N%mPX`E5lKqRF5I/NTC+T2>sSAQ??0Z$h>p?T0O,jbkj0F,YuQ9B$$O_@+KbtFgFCPLki`!*qf%-pEB\4&T#D'K&%@J4h?<98.I.nB3]ApW&pl^dGI>dFG9T_Fl>#,2p4M<&S3NW#O`u %?O+07q*+K`+7V;Mcj+6m&)P3>QIRRBAW7%M4,i[VcZ"h.J;odLokXt4hc]kO5HP=CnZ[]LpX!^p%GuXST:*]g=Oj=TC$%H/QH.US %qa!B_A[B/A9->'g*"-7k7@J_ %II)O/DnM]/`.Klb^./H&FNg#79lUq8m&CFPED,*&OI%I$h-+Us309,i>kRH*id %]uS%#V?u-)IIUeMh_Z=KY6ePF:4LIJd,3d4*'2-7ef*LKd"':b3VBXAWFQpX`Y_@(Hoi$U7Y?[#)Z5/XT3$XuCOn-pf;[&AZ\GEC %_gN4?Gi/B%mN['b"TK:jRu)@rnc<_]4p6XQ6i^"W*37Jk7+2>i>BI'i@>AA+=W+M\O_.%r20h,`!":lRooM=&5dJ?&cZG4UK;jbA %>b47.6J4K]Ha#Z$?Aee$@5td[_#Fk^e*[&tkV>Vi!e4B,W&de"Z8I`BfgJRt0j>+OV>V<;^/ku3b$]-K+Af>&3A:\Pj-dm*&m$%I %>[k>lLBb^OKMc-oWmRNiS.WU?S@Pq#0MnuDOd$9ZiujX3fgEOOeDrZOK>,ZAn'fq0q!:;8LqS[l?T?,B@^"C^WR9@.o22=eA08W@ %@#Tol"2%ll8T8OLCcSt5lj^7j,7gZG-*!DYC^`[Q5j:3b7PeU,EnE*_,#Z;5-5@b%Xh8MmA01(=K+G4i#"EuO,YW]lo5`.JaA*9+ %WYk&$dn)Dn$]$\K1L/4G_&@sd!'K6##]_4$WLfGciln2Vk$8"4(""lN-aI$(:d\%7 %[_pf:H30-2?^jWON5RK?4_>rJb;-F/LqhhE?O'URHr/P(P_!q5e-G_HCt#S`ap]s=K7eMM/`7WOr#[e"TU87_"-?&AG7PrTKZ%([ %$]4-Z%3NaP$tC.t/nhs$h8_r)h3X#BJ-n-?lGbfK5YQ7[66:Y>]6k\U^nbcM*=$O*FIpS@F@X6%>^X*'+@&M@VrfQAGODh7qUSi+$tA@XO"@@\SN5l*LR?UId%i'&d2n\/?:nHPYo"m[_B+(.G4.EZ;Ll9fWE/J9n% %`/^Z4YD%a_=TQQ?_%BXu<$EPnHW1\1:_^a,S7"Ef$XgUl+IX,1oqSn109(YO;V<`Y\cThShZdm!pi^[-+IV2Q@l9fOjNJ#.]Kf68 %HUB\%;Ih3!;I5PJj05b(,4,B'YqQ]AgGR?+S5OWCoi/u:6Er.jmmE#+^R#\'&u,tPQ)9n_Ap)m45W_b1T!\tDF&16jpX@@DLG_4- %&X/]X7n.gC';)Jhqju)E//8r#XF_17dB_"4i@U026pQCK)[M/Q!6_tU60)@9OS#$E+m[A1^umrfN+6-YTpmFFmV.UkKdE?%P@/Iq %j&-VXM;TOj;T$S>\/:#Q%>[[]F"RH,^tb<6*At^JoRRiMfeM7Op>AOiA!rEe %<9M95^J%pe,9^tZRuR0qTOt*j-c4hG$Jt)L^rm;R*&K4%N2rY\>1L&ZI9YuVK>\0%<^[j[n4\lG?D`C$^q"Qn0W#U5.[cR`AJT8; %E`^?>+HSb*8m'U(LdaH\`'F'Q9DnlNT]d_$PbCb"e`GX^[Jo/N)$Th$.Ze^Km)F/ko2KQq&oNbAIRr68NquF:a)aI8;6#^*_*JN/ %KEh%DGjCYM,YE#0O$^,:*.]4Q%JXHOPirtE+Ql]:\?tK^@pbaj# %B4RcQa@<(p'`jW2L0gZ5(A;,5mR$IlG]gVE6u`k=kD=9Cen5"@H[3PWka.C$3kB=0Ja/^'Zlgt=RXGdGCrirU+k\X>?f4Hto@\TT>#qaL4/-aa1q %hsm@-7p=[%[=?@`@/FC0fbb*<.7tY)i#]1AASC^eMb6iTjN*Xc8`IgIWtsm*bdCon%4YMILppb2`][pJ'_^8X]U,a;78s,e&)!NW %gWBPI"`6]8C+q'eIfMf!Mrn/ccSP\f.$:2_Ger;W%*^Oj_\*nNe+VLSW\s?Hk2Q_lUC;5b:E.eefc;\_do %Be<:!\=JA^OCMZ!)V-4VZ"Ygj'lBr`<@.@C:fXBl<)r!#$&CH..2.[r^,O?L:\WSuU<:ic.%71R(0gcPU>EgLb6gFMXPU`j:pb*_ %e_'$DJeS)p`W[*eMl[e6K%?MGp'h[S4tkelcq/TarJZmRpP>/r\e?K$7e2(X:*X!iI![Z769,)IMQ3ZSa0V[MIhY1t72D %Kr9WKHVR2J6K<:BnkK$gYp<$YWXPdqp_;&GOK.`S-m-lK;*Lf!%:bd1?oJMLRmq?OPZpNO(*OF2Ar3cYYKY[0);$YV35FUcA56KA %CJ0@4;3].r5Lq=CICZ[Kq4UNGOU12JHO/LNTb! %DU\M@VV&0jbC2?>K%[!9dlkKmMcam1 %j)Lg\n'WL&PHt5p^o[UP2PRt_&6?QPamK2=0QYpSW$uHRe[AVqZfp"dDb=PD)mH>I,chBmk#g?iA\+_IFC_F;47]110"VA>ZMQFK %AetVTYP,rpqB5?t(.>pAeES6P,%I^l#46iXQXd^_2D(cDe]";N+0cMi'l)6#Vcg;9Dq3^kXNJEj+.c.cWK&BgZ?'j?5O67J`bD?sb2i %7>@S.\7NVF>V?'hkB_lNjsUXB]QZ<12["_4JXc)SIQrfG_`e %,Od!Q,#'&48Yl6WG`*[jL.OoT&gjl7A0i-t,cq[3i4>V8#-mNLD"SpY+t(hHB&InHEO$"W?d;b=O3R>LNp=DCcJt'3(nN %%&snm,%VC=`/dOo;@@h%nQ&8sL4J?9MG&U&,.U)IZjN(mB.YONVtFOd((+GB"^3-PKqp1k4/+7[WQC#db<e%+\s %2$^2p3._LE*f4).->k7hig,1Q>EUliDJ=_G/aFig;e,e9L0+Rn+PDd5OR:PM)LUh[*SAZq'7_V6gK_U9'$G!t\P_KkQD7GFhGmc_ %eWKfK`\.Q(GM<'$PXW%of`7@j,5$J)[V#X!EE+s6U.@;B+b.DAa%AjO[hR8 %:+>f`'bhnQ_A%CIHP4O_qPY9\A7E/ic..H0f&soc8t#m=fa5b6\D_MaY@Wb:FJ2)(od!LX/5RQ.W#>g3f+,1m`ZE2X?n9UUojpNVqUM%4l+rttFq'f>o_*imO/.5&b+W$6+1 %bu$X&,#_=H1JgO&TT!MXlWG`K$'>]aC8O\V'IP8:92,Jq9X`rt9j[2mdo/M*c^IpmLp=kR=,O!i'o@Wdn.L<]nSlT,MaBR\::7() %i]@lfC5Wl164;jTN8:'-ZgF8:G;B@`aEHKF.l+Nl.M^iT_.V)Vfol2aOF#"X.V<,aM-ZX=`Cj-h#';+r>7@Jb,Im@Y954j^)X(9H %C_NpT6sm3QRX)^*+F&(8B,YF`_+i$-Xi2f7j6f@e(1B_5OMZK8!2oT6`o+`0T'8=*,7&^qJ1^kUN^jZ;M]jX.nOa3_@_B\"^$(2b %lX$s=[!/\\C)p5rmmU6Ah0T_PHM:`&/;`Xa.bJFB\$;dC'ld?M%Ac<@!HX.:ZBOgGjXfX$jm;(qN*m9h5sgrl.#VaH@9P,86C:f2 %[qJN^""u.JWJ8n>\-5Sg$Ek$u-$iRKn4KJ=&2+EcX0oD\MQ@]7+oF!IE=De")6-63T[5"p %Mq<[kR?pKi7cJ"5FWm_Wip9MXC_6X@8kS;d(Qf=CmNQ+,_Hg?BSSEAEhE5LhY_;'AUL,d_/CGPcZJnmdpHbu_1DdH8[S<*e9LpFn %kRu2+s/r3uQhu03-Dlbd;'aUcT8:HqX&$ZCMX_:`Qm0ipR'`WrR8H03'jkQM'bf>p5?*23'UPa`cDj.4V#hADHPKp=aOdc))o$=J %S5f6WJ+X)9j0[U?i`GNge4'GqDB-E^Io.@cGtK$\U0br:Cs-^2NN8?7[7S:oSJsb#8Q(d"EO8>AQ$?JLo;dbLt^7S1_o(JDeCE_)Jq]J]C2fprR9W-h)fNC0B5/cJ<.p<"Sg&C %C0,PLD2F;bA<>^Sl'`*D#bWfp\SNRI08Yd(_97G[K"O)ojZ^0,#B0!pInu!:MCMLA9b6%A\V%N1/\8QF4^t8"Of+LrFIS#Xb#VeN %ZaXf.@MuYPo*oFa.F(h%Me_FELaZ""70G"O-t34DOga4DCbb0?EJ9'_()pHp>M8>D3Nk@:H$W]sX9,o[63IMu=D_9sC7Ca$g=9,: %-Ji3$$[LC<:VoO%#W`7dic("q&am1E=6&9,Q"&)T:g/B*2M0)-d"L2GB.FfEN"cram"3/3-'h&E*/buMW`ccMUempaAMn.A: %A#HINTe#0q@/j6InMQ,La0W95E8.%6i==/4WNfB':Tn=aQ3D+7Uod`k(W=l(5nU)\#m#q\J%D7e+r)JGTi1S=(Bi1ccCu^XfS1d] %'%YHN6^ru.*RXo*#,pr?*Dlmd7*h*J[0-IEe0b#oWl+\#"NE=$L+E?Ok!p\m`;I\]C*._uAr4_C@McQ/\[bbKPXpH4`B^5X?cg+j %dOFRp/fg9T+W6Z#$8lZGekssYZ8UJ?XUAS!@bC<>/2>(P:^bI&kt43r0O4jC!bPK@e5k."`^(0QW]19Y3PuU?/=*Xsak3OB,PJjN %>8tL2PBk'MhNreBU@edcKqE%G&sHtV="896.A() %-PNm`_TB4qO,rLj3bGKLK313,e!=Hi@X?`JcCSofl1RCp]<_LBnmu#0Z(/+?XMmsS4P-gu(=u#)/WibaKaaf0V(HMX?qHb7=;$A< %i`t)KQPs>Ac0Ck%IS#qX[9a/VC(cOA+]cBX%+R+=_iqP6Dh7q](:M)$/PBt8T,*&/\5u,\9,Uq]Wn^U)*(j4++\@AY="'HTr)s;9 %)-D6gm!RO_Y(pJACVeBufj8c_FaJNb$C,[KjZ_FR#k6J/"VkcQ`L8qI[&W3ih>l&8!&$5EEc5cDgQ!#6qaKV>Z0;_2JUG_%$G2j/D0WJ;2`AP\D-.Vc1rY/cS,0VVU"/8)g$68Q %C"UH&6pFBqZhlZ2`m3_6g+Fa/l_^F4e>=uZR*Me9NbhQEP'=3kDWZrDOe)-%`.feuULT%!]:!q#F_$iFRJ'NKG"J0;ZYi`k=YkCa %N4]l[Zg5KL^8^@'R5(LR@P?>9]GoKlA.du/'oK=gQFl!BE?P&$^NS2+CQiaHG]R849Bj;Q/\mSdQq(\Q:3;_gFA_HH;HDV0G/b+)?]Ta`B-0_H2/M_ORU@&rqL %@WYr<[,#of[@GDFNJa-BB?I0!lF:^.qt1!F>%FD-r;YTlXOPoTKOeq4SbTP)uqR97oe?S++@W7XAc %/Ta`9Db6Zh2O:^"db>p@7DbA/.k\'%6eCN5[X;NrJj^e01t_HrDZJKJlO8)t"W;+0EGlTr&8OlhWK=(KMH2Z02s[0A-c*lQSI7Ll %8A!NW-FEr#C?<]l5/Z4NZVo"u?ubK5N;>2RAa.1smKb,?h51D+SA`Q&tO5PM6ooG&"=[d;g,1j*4sBd6fdABZ$i\ %G*X#Sckt5"O*(.4UhemFdGn[Y]I4&lO,oO%"1u(&-Rpr&>XZ\2OSqqp8'C*F%A<_?%KB`rF8H$WpbhE_Vf/X6]YJ5nmV7Q9Xb5K`pO_!i)pme %J_B;2"#2Jn[Q1l6!GVb:7Uekl6,V;NFF=V;<&Tn]7/(+M>!p'Z=X^_lU[:,a1h?9+Vt=<<=iR/4",Epp^p\p1SXZXWeS+;_q\i(f %3(7&gH&sdK>6X+GBJZ9@&\*^*V20ZMs5Uk``sRV0e@G83RJpqLrcI:a:TpY %]0kR6e'\s#:[j)sE.&i=pd7j]l(.db?casWCODH,MVg2[^5lsp*@KX2G)21*#mOBg!WtQ %Xk%7#/^:dk>*ee1o&SW>OhJCIn)fVr#.DX-8k)hN0uN8b?5p7iOiEtZ[B:fo_VIF7]84`5rfTHuUm$$h8#<\>cGl@=E&M%MIDhMK %q5NNZMO;Y8Aqe+b4Wg&c8+67%Amn6%:MLZ"jS@;59b&TZPgof\LSp'/:W(QdJbTe".9ku)660/I8l]OQZVG[_Glh$F&%O+D$;E$j!eM<#u(RaKp=nS?=Q49[30#8Ep0^Gm'LFPrmsGtnSsqHSr"m%-GX*`7788]iB'\Td$Z`@gt\2c%S5hhd\!Y2^qh5I^\RnSO]" %j,"Gia#SFhOlIYkYr)41`6FUc`l(t:nKpuqR0jm#[pG]M-?8e!F")LJf+u2%-7>Q_`PuK,^,<1UkpV=&H-/*2b2HMSV/m^.5qtBX %!$0l?;o(uuR$l(]6JK!$q0FAd))[6\=m:?p]l[5?e.EAHl^=:[AQ0UH/tVGkqeo$YV)p$PjEa^<@^nka8m8I=JIC'DcAG6NkOVO$shbVR<#O86PK8HITlYdU3LD62-/Y$V0LIk %f<.ie6rfYAN;9Hi5(fOEK3Ll!):pki_QfFIAmh5h-H/`MS_2NS=2m::bH"^ulo."Hi0IlffoZBK=tBG4O'_\n`+-.5[haPG4)@-] %IQ#3OkK[jWoc`@DQ5EYoe2#(c,qHH.*40=`Q3UVdEU5MDEnHC^Vcd^k&Yocg8\O51,KEQFe!Q;G<4ltlRFbiOYkF6H)b+a9?L^5& %)dE6Hm^F3<4a(uY:%2TScih+P,/7c)W$'E48AW:sRqo=HRU$hLg1%Q:T3*7`%+HiK>Vub#Oh`)2"-7VQH!Aa5Tk:"0K6=3SG$t"$ %/b?Zc8V7>YR:16#WiTON%; %FlX)k2?j;AW]9R9c\AFBk!8@N>3 %UeEb;Q_S2\ZaG?a_UHB62(-E:d(1R4g_[_,1a+F7JX>>E8OYCY_PXi`RS]j$U4Gjr70@8X`N4LBg:nRbEbe1Km-H;rZIEKcYsGU6 %DSU3?]RAmOPS-ANc.b1B8V9JCCr.VTc!k,a=^)(fCN-UL3Bkh`'I1pOHAQ+%k:fR&.X9)Di?DgPlW2.bRrt$R89PUeR"C7UicmVrb)spMI,S3\ZM8WRN?^;@2BK6soghl=2rgdL$nG[AQK_?EmY> %jHZ$tmdSuTOtF_WR/0^\8)BTt;et_7Hn>21&:^=m.$X4o,bsA%"nQT8)U"-jG1GMaG&GOZm>Xt"2Ar9'C^m],;'Xg_0,q8OCj!lq %Nh*h[cn9U%jZQi.BSPTTS8B(&DS^C^f'LF9E;38@=)h9#3d;cGC85A9[19au@CP@JCE.i+A+5e>C=@C"p*-bJ-C$1>NZGf333Gco %Ae+,E3(dt5$bdX&eEj5Qe%F0'leIpB1TsO1#jX]`r@9eHdR5bC/_O1'[PQ-NQe`-eD#u7N$j"Jea+iu4A.S%OD)o3G@5f]?BPgWH %&b_Xi.3?-L>DGSd?%-,%VC>,&PE7IZGtr^.=bd3p21O]Cg-ql!?h1:A4f%@4;Os3cAKu'GQ?>BbkqoA.q3T:(7%UYNijU %"Mci9i2e8ncG7^6`[8fLVD;LL?ksbR[N$Q3bF6n9iTZ,;Q4AND(BV@jJ'hqi"gS%87]*3&\kb#aSAB5D?+Wuo_ %!t@/F;I[_I.0jNh%*09l+4_`:rQsZI^4[XFK,X2lFMi4+)@$LD"O7N.!>NsslC!)/#>dsZ"AhW.9f/n)dGjC;.LWhSeBfD,4U7?" %-@6IrS^]k4m%9$.s%soRQJbZ628E1Y<'Y.Fkr$-]Le\h)1$S"gS3@$fKl(gAbIe:&D\=Fd(BW\>QIqd:!b+JEYm(hb8/2JfiWbhS %@tgop\h1HdD@nX'n]DD><3qdrMnQ?tTZi[EU_XLN:g$h3=^`81kt!JQ\h&D,_#uZM7UT.KJPFQ^P:eEtZ95/3a7R<<=`$k1NoQ5g %dmKHhg/>]Q\/Jkdn>Y?tK!F8^QJXNEP3#o6Y;K_#VnMYU\0sMM5K+T$R#YsRnqMBRQL60#J9Rs5O!)sc7tR=RUP[uoE_E=dj@'Cl %-a=f4Er)b+*MrJh-o;"r`PYi5.5h8!`B31MhrjV#;J6[aj?Tj_'V!UY$C(jnoW/at,_[ZeWTV`#F*s-SB&q;l[J!4H4eFtinRH\5 %7Q?e"aKtV3S6)nSP>-Tp;OAY\kT#:ZKaK]tdTV39Bri'g9pi=2CLFn76&Q`'6&3BWS-S2fVZI3\^`;j]O>]/]jH"#tYuGH4(.a873#q`I,%&ii[K*[]>u6;e9$"HJ-eO<_6c\fqj4Y^q&LEocg?9B_iF"-tA06-2N(. %Y/\3E;P6uu#:X2cA/PiJdc-*fPWUX().PgjPESla"qWR`nqa4@Z?YFa[VS;]WpkG9W/B:-GHG04(0=ep((1RtEZcd_PHTG#Z% %o/WL=b&$QK_gu$.>/Fk?=FaBTbg!t1lq[,#=090ETEG/2+8D"hU(6/i^e4g2ij_A4l5.Vu3V[>!+)K"!;)AfU0/7X6AJ.J]kFc9KukP'`'j %g>j"]bPNIt'-r:N.==;AF@SQCKtf&j6)Zk6-4"aPQZiH:g#,SP=$g('h\@A8_0=Ar^$(/aqd),"4>`Td=#TQE:j2=s9pH`H/MSO3 %9@U!V&gmHVBW5lb96Em]U'[Y5XTWE$,ELO(]]'TN$7W&J$<(2nW!k-35a,f;^C\\U!\f:K2.sXS*X71!K;sZ4"36!i[M!Ac8tkHK %.J>7m^k1f*rN1ClK*HKTZpXUrMX:s=\-;569$F*=qHT#]*d^P=58J'9)BmP;O5<"'3t&18LF"5-X12N6jRAgf'1],0CR9hl@I4NQ %aS3n7$B?7&E>@B03(ob@Ut!p+npsqbS(UD>R2Z?+F %9KQTb8uDA*Och-n8>Kd;Ed"2(bW)$T>:l)AbdkdUCI4L@NgKD1mei#?&91??<9_Ag>i5KT;X_@c#5)M\"qCsTKU&!dDK%.#_feg9:<<`#>X]XmZgdK %Q!pP&nc',alWN#OK1]B"OYVJD\kAhmi.UM-9,*/>a_%J>PK@F8]$DC\_p%T]MX_fdC[4q(f<"6K$F(kR3c_1Q<(8,J)lRdVe6GHg %iB[ccNmtt*gO,Y"qp;N^)3H1`[r[b@Nj``.h$\Z[b@JB?mO-V5c5c[*';:G]T\TA0\umEEU*b,n,pG[;6/?1[PYXi(l,+f^JeF*ue]`GC"Xc10?h\rK_tl9l/N+=Z@H$bhG9`$F/d?B4Xp:+q,"_kb=pH@ZFC/.Ft3iOUd][g_2[RCoi#2^lf]SL)DoiH"]a %i$@k+5,,hjJ1fl!_o:7PdmKIs-)D7j+ZCAe.e?qWhD;3:M7s=EH@eOl"[64#gAkm1FN09kS5D*2(,9"6_]^:mI=??"gH9,BDpdN$ %6#10o*:?ddftaCt3]34Ub-]Lugn(jW75Ks%1*XY/Qu+:jP0-D&(.W4\?,Mn2HlM*qnCRs\fG'&qYXuE\cZ!9UPY#7]i7.`X6JIK) %1]:c=FNHm%O58j6MH:UQ]]/Q'5U@G;!3.l[f&19oTU8U@3qe;"VTR1Slm" %^m^KZ5b$u.Ej'1QQ-gaiCT3i3%#PZ1,dL65Jj`Xs"21:#MVDO-<`;<)q+NYEf[DT%83p%J.`4.jEe.RHNpXDR&k=5GQ8g'+=2RR> %Hrq=?Y*J^!*=T%Pin!H4(h,4uJRhD79*cDRJd4)<$T!?RAS5URKX"!Jp?F61p4B^K1:0nX%.:SO=eQpLVG(:4-`)$UQV.11PY(e- %nBrZ[=VS7lgd^n`[Vh)n9b[JK+IcNFVi3Rc`b94N`_:*/e08l?d5ckI=K-sm#V0af90%(De2@o3@7@9AN3t*d6d8%!P>F'_s&qmQ %CVna3-*t%;=L1TBZsnAkHeKC`Ss!dn=%=qn!E."*L'Y(oWY/eNIbNel"[fF`Ah7N#`&pVdM):Kf:Lum2o-?q/K5^.sZl*+\5&^5- %Ac($).op=dAQ*-+*Oc,d%GmHJRD`,4!*b]`I@$]KodD>^Ap@X?03Zq01"HPgdiau4C/HguefZO[<*7SaUqO"@edPcm=h*lCSgsmM %e'K#.[nP.(ac5Q=MEGXb*(srTT"G1Tl][)Y*SclhF'>hc;G#lHUm:ZQ^NE2P*1,FJc'8rajX.\&Y$6$Tg`7kcHcoEeEos?l'64X& %+'=f'd&NJ6.tb"YY!po?U2m)D!PFke7jf+nA;9jp#6`T)dkTm %fA)go2K8!mcdnK_3W=cN07J3Af7/YWI?)([iV4W-()Ye`"',e*ZW.J%O]N.eRti'H8j?4\rIBg[3.6no9i5!.'C'+aEAcAR;DTr4 %eqI1c\/@B)Xmt&#ns/Hb7B#JG6KuOW7:B_s`(_$"J]g?bW@a\-Y^/UlA&H#(b4]Utms_$UN=C5Yf-;kA %gr0C[:tZoWi'\HJji];UiIZbln`1i5HE^%39bLq'&\"Z'28HsJ3uEegD(6._Oj+F@$pLER&EO\Wb$A,kB4lEn)]]D^(M:B%Z6QU. %H&(uS;ML:m*6Hk5ETYg9k'Lmd\<8*ahX4AX_5K!iJY,eC-]3-l6.GBAFdOk8-^=uq^o%Qt(g=<9&lNDe>9g1m.MFl$PhDH5>#auX %,%u'M@Ab<#Q(g/M"UI^J!h^7-"oaRYX_%-cc[s'6Btm(8/_k::F(@kE0cr(hpqIq8HnJ0&ILG[Q)=Om[i0Lc%LeDTI"'@C[F$A': %c^+cO;,AsQjI$0,^s-"!,\9hqBY8%6gm?-8[QnLu"E_3o[7CkD4OqLJ\ir;X.^[/]_.Jm9L^hfcS-Xkfqm0hkInJ+=%nI?^)mI^D %klL@upBS4Yo->Cd&s.W/_([,8J`R&)o&KW9I^t82PTmse&rObc9IVV@PQlr`6=laIN(?pb6:)8UP=AkH,-;/f`@_Tgm*_h#74+'B %FhEqu=rf/YRG#^jTaVM7R4q$gjm+C:HW^pD7?\N"%<6KJGm`lI2)?RV>_'K\4Q %ok@Z_%SKD+)4*6)Eo+8AT;S%N'/43*dc"CU!lofVgGY% %5i'9>1>/%\2WS3$UGoBUI8"%$D0T-ra/]VJdMF?*rT?**Ggq2pUT?bIo`ZnV$t>n,$(Vlp6d:m'dHntfkae6FF/ut"\I#P<^HruOTQl$(Ng7XI$!'6TAeU>FK**flZeMEq+ZS@C0#4[q^./d^*?a&Aq#l>dh?(W'bVH_c\o %7Gq!+rN\6RLb6Ci(Lb-rcRE/RqnkYuKLZ!VNA" %n*bb;5Q'L-3s&B$O6N=78Nn?]mfWBa_']?RF$5OR+BQ#JOA"X4Es3]%jH8$.0'^L99FN`P(5t8Ya@g[oUg)_VV %$hIP#3kj:@-gi[KBQIEkLY5C'7u%hQd9U'#5mJm4!.g=a:_lV&_?>=@la24tMd6Q@[sZ_/ftb %@J'B_Y[%N`_[HYX%_u]\#hV&+jFTY4pJW8Sr8dUUON7o_&D7$l!Sg$G$8>*)m1Ulni(p^C(;ImTQj3]R0QA$T:r72H0"rS&i6:@d %TBL3(m\+FQi@sLR,J-#BrEMD.$)rCI79"TU%=F(,7I/%$pqakfC=k1d+aFGKHeEW55Dk%O4$0Y$`oApJ^NCNWAI50Y*dJ %!+*&'I_^Z*'!\Sq$PpOEPt$a0!-Eg'^&eI'\Wn:#J;XjhJ)VXlN,/P"W3ajT4`'WiC?(^9"GZPp:J1ro""tkg;#g\N(Ltp]"dQoS %Y@!"eL,66D^rfot0Mp1;KYgD5:*`Ab6@sY+Fein_ULTCRT:,Y<`$N.C$oktHM0Q4,\#1LF;DHJ"[nVDL10hXTac);]4MG.`3Dbe&OCuqc[J,W)c7/eEXClG^OHA>9DeY8a[iO/HBK6A!)MAWg'Qao(;Y& %T_lO@j)?]2rIO-o71GRIGsehNFm3>'$W/d6G1D?u7gFdISmim_fdtT,H1L/@_OTL5jf33EhUJ[J-^"hWa\PQtN)Q;PK[c.pD$2eG %Us;=%4[-Mek+f5TS#i+[QMI,L"GW+Hb&sOcf9PM6('h')N(Z>R@uNN4+;#_VVe2]7Ng#52HC[I\4+;L1JD#.Di(IrIh(C%=VWIV@.!INX:\N=Rh%kWA;C, %9Ghga,G4PFY;m9N`jGY@9L>=YLoGE>FCG6BVeN#]Cs9cd!NH`/cp:\sGs4i24A^i@!=@IY=;uH/ZD,;uliqVh[Y.f@P!fSA2TqiShKLBB'q,Ee-4Qd;T[U/aCb %0Q9:Y]EN-7IMJ(:!idI.&hka7,RAXT9jngX,`!\oT@dT_YQd>T<%"CkW3"DO9UCCl"k@s-8jW-7^;,tc$`*D0DuuOCol*eL*cc"J %+d1^":eSB6KWZ]_3fY##DI`G>S3SjFp=)Ja*ReJ&@!X/.3E&348F(--pa&/>O@Ch*?qo@M\K1bY=LJ9=)5%QTB0>''W+@@.&V*ae %!`"#r%.d.T*;^nPi*HbdP.C\@SC@HA$rs;]+Ar:M/,bX/=Jc#ebn$H(I/IP'ruC%(AV;WON2@]V=Q8>ViBPL@GL*Q\V+.[`'S-$+ %?`F0R%2G:TS&4fr2F@']]($5;s`-0KAa/]DhL<.`<['dBD>;P81ntR`AHC4$L3VD(a)BW4p(im1/Eon`G*R!fgh\s %YYKg&QjIp^$NNmH>tY0KX#-nh0d#S9VO2LtAnhZ\?O^$(6QlrO"d?d("L(&qN',-a!3E)[<`Y5a)osBGMub%ZAc;^"&8Y5%_n^Wa %>S]?q!peZamtd_`^:;f4",Yf&a.E";BBDFra<66$i;koS!@>d-<^:@G3!5Cao,5mZB.^PL9RoWVYR4"?9`FHND??Ze:OuE2^]#2pIO6rRlah1&;79k_cjGfb$m@Cf7gSq3 %5X?DUV[ef&&S(mH&TpGCTX>$_(D'au.L.(Q6fpTmTP"I1$s9`$Ic>+D)+%2j,*7+UAZUP]4nprjON99\-laRuJV:3-+O+f?6gW0/ %#6T(dN-Z*\FO*2j(,/L))).uAWVb<`"NUU+E-7*M9k[nVeZ2pP_*)f6#=]RO@SQij+A= %'`BER?nWTnT$6f1$A^,-*oMM.>SuX`G%D4]+^hOa_n8bL8@T?aJJT6a\6&[]s;cAkjiLm5.N6jQ2;U"`.'EA"r(-Q=j( %Lm5h#!a^T=N_=(?J$1*%V?o)0"m*#E144&/,A"#*;d$[Rkbnq)/]3eui/5>Y^j+dOi8(o'"`?F4P\P90SUo*ZMocSqJTcYG5,32/ %ra,n2-V%PoeOUF27LHLB#E71XRR:AH6%k/GCao.d9@X\B!5KBr1cJ)2'o['5aFk]1#c3eK!E'r"LdQUqYR:-,J.W(P\UddXB]8F- %\;G/4clFn%38n3_85U\$#)bn9=YZSFLCO<")%#4/9M76D"f-UEGS^_bm#`0:LAtm5.eFP[-J*<""`UC)#D.3iZm/"Z>VNl(&W,1$ %h(t"%34pBa$)ATb4`3'$6I$2@:79(2`%Vo%T(]h0lUP8??j[<9r=TEk.c[Gaa+ %$]r^P%o!S?SHA[VW76?\1!`C-3;5BtLPY#c,*;418>BNsXqU"]9m)N[K-EEg)?FlQ(#pnLXCD)u$=HuXEf0a"(.rAHWY(W1",b.? %$W`?FYj"+\rCoYpJo\(&8eGeCNe?W=JIsG:ScjNG#\"iM^rRku#rL(e&2cH$Lg4qP$`KJ<');_#4[KJKW$&.Ke:Co,EQ\$,/6,54 %OP*&^]q`]GoN\&XoJDR7'HgfVbA)87E(i*1)'In[K*/87ehrr#i+,[j`2ptYJ2Caoi/r+O:TPuIBq[]dER)UbHO`m81;FL;:3Fl\ %21fdD*,.]L>;54`WWE:Yj!(:s/.L]KA`9Z03\o>M[53[UmV*I=[mRDD:dB=[g#Fdd12]`Egh4TI=&PC.;(C[RGEor8]_[BP2Kihc %0ZTd&Wou,k>/9kq"*un)]@ieus*K3tdHOBdWJ>^U6PstfXa:<1V"NUQc?rbO'n.Pg(V[WP'kf@GE %7RfX:_hna](2sZ#;%9l9*G(iS-PH,9(iJii,"gTR$t-1JLMB6/Y/hD5Q@[HecLUWseBMQkON2lPXf/ANGXE74hS>sZ\Bb+<_j:k5FK!`rKT5VV]P6`PtL?):Eh"^EdcM4!KHP/qNLKa:G[W!X": %XWd%eY$-.lLX<<.LY[-^E'\UA,[i+*R[ugM=u#drIPW/b&GcB]Kt4QO!!kH3!!C0hXt9V2?mALl,8brc)%*l#K5<'rLuUip564OF %*WQHtJdTY&mQ$sdJ7/N0D1V)VJO4*6Gl-,*?+[gW"sS,!#d?,$T^W'(G%,'6#RWe+9FP;E36fIr"b6(#.9Q_)!dD3uFV*aM!"(i* %GTihL"N:Gb!i5_p9aV-VdrH$u"&5#8)s9E%!gf:'-F\O+9@*f*4;\c?1%P-`k\^R7J-3`%VN!j="$/Jq$s@`V9Y\)?!.c:h&J-!'GWb"'Yg(!medkGM"NSQ.2O-a&OMM_G^;,>@RE85) %!])NG9/WS^=3U/AJ->q+r.(]s!sqr\$O>!pEg4TH`rQsSLB;f*PRX3hS/E)%P@5fQY[sVTes/CR(._F\+Mj_['0MHk8k#E5!R.cd %3++3Gbijt:!b$XglO6!"Q@Q4'+h:=#"\3\=Z?'#5\oqp1+'^(8JmWaI$rS<$SC\\n.P)3:%q\6a0%A\!<"%ipNbV$#$25;QW1p"e"-HF'b^PmAD#&WH^)bY0Mr=@Qejk&UXE#r;'EAnIe=ZgQ %VI^oRMFk7-21VG/!$e^%J-->`MZRMk")((4[K[o_i,Gnr!dFcn]EjI]RH_R;iZ+@W5fQ(W6-qV7@=JCal6?^&,Tr?;0OkK^J\XkT %#6I@TVCNIpQraEi%Hq4?"W#8up^!F^:>qsBpqA*h*&%W]HiR4V(>ZcF*Pm=AWf_*n&K&#!?XW]`;i2j)CGIU5ZuTP(@!n!MLe*5T %1uS.Z:P)=S7PkDX16&BqT\Tra0P2)lBL/f@FR>e\50,d;,>U]3#3q?_TS=MY5SQc"J^,!^U[]a`%gGT[-n$Ir9FdHj$?4i2lk0\J %%K7"Q1kXhIA8m&DkbSkR.$[VWU3+>ps$>X*9KbCrF*_A.`IEUgo)]86%SCL1`L,=2IF %Dt,e`3iN6@28<]D"(2W*&eCXcm2OC\##YNBa95=pQ4/UIm90c.R+;Wo@U(\-oX+K$k:hLk1P5b\D^a&L]5DV/:r>VKOO]Gq?(W_o %gUQ:Jd>OMn#,-B)Srk^%a;sL67lUcu7TbcIoQ`I%oX'l!@5/6c+Wg<.&^SanBi?]N!iBrK:nW/S":m-Mr'9-1/"#gQ9P(^6VhW]U %@g4#a*Jq-8@H$u$]QGPtPTs)!+C0=>7Ea/S["g^I"g,]&K5&@;Zo6]7kXRfX-r@L-#RViEKcRqG9'9b@.*sD*/7]4q:uF,38QJ)f %&/h/h%3;'DP#=(T05_'=M]f?YH-"*0h$0EPk'jFc"h %#7?!k?@($#!!4#S66H9PT'6:eP8XarJA33>#>4U+j%$B_4Y^6($G?:)e--`j?V\\F20sP$&)ukg1MLhSfmsK,"1=o7ehDZu3(cA+ %^'MRZ5.*DBhu?(+"ML.eDubONnnVhV %qXpDXl`?t&RGN>M%85tZG[uNbLNlnpWCau.iEJop5bsYuQ&gaaEe<>L+'r*1`Q)G6jn9SI[QB!3dqJ=5WO/*i^RAZQL)jQilo\?b\In3o=<,i[#bFuZ-UA3HF@e%VflVm8, %^!4X-8K.N+QUC*;L=4Y@&dEPoGa%/5S2+u;NejUojk?-'TlEe.k=Z'q=Aa$jg.M$=>sjGbq)VH@a0l](QM3h_"+Pl/!.UitJ6>l; %lD#dE3&(,P1k[:`Ck%m-^NLM?rXdC`J-M@0P@IA?>_DibjUp'47UqdCe>g`-QX\;42)\^U\^+l5GW5#,;Z8aj,qU9qQn7j!)+g^5P.(4,kGAkq %Se20U>Z^Eei%ljXo^]Jt6AopYZ)>eNd$/>YWqfcVW-U;#OA#.!#tTnaR:AE_jEQ*<%8iT?cq9*;$P\ZrZ7I^TB0M[q/"qjM$#,;. %nN]S>j^n:([3nq(-YK#R&*/5-/1NBV>;ajrb&pA_'@J-I2*K3r?*EMf5'P"NXj&=*UJfBj&6>jtQ93$o_%`&jo?h%G^NKem/=Qm> %DOQ1$!tLreTqbfn<+4>/1^k0Ra#q=*I %9G(sZ[$-90ZXt=a0&39s\t=79P'V8AiJat>,4jUV(gn*cGGlkZJB"p&=j?DU&3fi$Wl-IJ(@S5 %f[rR1M64o&WK`qq_AiSdJch.]3])**%t'Rc\og[B1CZQ76Tn\8L'rPI+.qP,Muslf80@6C7p`kZGMs68V%_K(8>a5.9b\CgSbnjF %P_h?'du?,:!Pej"@bn\7O\1P0R.:,S!-mlA^l\5&,JVSd@*K:t7D`OE4fgmBs7L)_?mL4tH#(?04*]D,T#WRpkJ!=5lo;%lDSEVlU#Nc)i1>^LI9s3r=bLn%+fH,9Nd&Cj=cN>mY.ibs!m#Fi78CcC;tdHnjkC(#NYgq>3aaT*tVAL#ToufuVd$8FJk@&If6J*LF;K7U)#-r%Q81A2ePLj2+N1%4EtkD>e\:l^<==Y`1Z4[\,#gcZtT>Z%Mpb0-kdY,k_)CX0SIf\mTQ %PCG[E0(?ia[i,!"^FnP\RF-@A1STu8pdj:l$gLW3MKhHI>BF1cdG_eXlm0A3(p@P6MY!"K7Ka5F0pUW%Qn]e)Cl1g<3!tQK-OM&7`%k&D+!@DJ)L&CQQZQ)e;K`.e- %F;dcQTi;\)k%oH$7*g]aKmc!R.!Eg_P0bqf[),eGNWb$4t+2VgL"'meQYc;1$ %Tir(Q:mVNcPu+O$M3Wm94hat-Acn1oYjS]M-(Dr0*m2.u9mLAF!hn[Bc3qWqJqI:r %Z&NU4P=;\jYR>hbP1i&oK;NXUNsEGMH+kpe9M$H!&%%/%19-pVDagiIFtW$ZL6O7=$](+EP[##`A/q2"84'h2CcY%H9c</f7% %m.3DUdueFqnIY&[Wr1J"ckN6%IcftFhhM)b9`@qI"*;#-WGjQZKnmp`\V2Rf,LOsM5]h%U##>'V(m;R69]Ku\j_VAEa]'mso)tb9ck-(Te*_1Ua"l:)K'dl-'a_1jLeJdoAHH:[;]fA9HR,[/E!,h]`m6_ptf:\ORH69Nc %Z8$$:p15EHfoC]##>^PJ4+0Uc\kE50eMrpo\?jNmRg?Q;\-,=AiIK.tBW,HURoLUpSh8tKn-";[%$I[@_`F@.M3QrT_eWsms9Rra#t2Vm/t@HT4, %9uFF#0n5Tn+#F_?WCH:!>0rUk^CC(0r$i+H=eDjArg1qj\KAAnD])ijUFZ5EP6C&c#gj2d)hW<:3kOSgD;$Q'/pD;TfEb^9f4"8a %O'sila&_cn7VH5enq`lra7J1XrI#HFmG)$o]Q[lH5/r[(EV&Eqg3X_)KD!Hc)5KHjH!Vk %]sF/\GDA8M`TA!W/71nd)uK@Y6gW8kb'`:!bc&WNN-U^o"n6$N/3?6Rp?C/Wj+@"FXrZqE95bD@c)-tA=,L5Y5'65EpRtB.VD30M %j^\HhBj*Q@\I73aFTAnEJ"N2\Ad%*JL2Hn44.erNG%VLb1=b/>FRFH31?q8GY\60e(QearHepbrQWD1mh6n1gcRRg7LX)E>OC']V %S<"d"gPDd*$::Q&%cB8;DmNj@M&MGY.c/?UhZ*Rrj_sm8Wh,&ef;UB%3qnME,CPP-*3_%:olFiX'CA2;=r+^S^(*`X)>I$_56fD* %(Z';`@WQ2^CR?mSQfl+,PJ5@'iRH4]QN21;gui5\QN.P469\LJ=m@SK+[tUn*qreJU*A%QWK\jFt8Zc[cb')?X&,0Safj %QTp`Xg>C9sq=aHi@=Op%_7!br!m^$eNu+:SM(]+`tQI`gdTC!]de]s%(dfq-Q-9s?(#m;!lEOcD;8,7kPN',dQTC)omgSN %:"["t83'a%TmR`nD$$LJ%PsiQ*6[ke#ueUHM2=>^lV/k/mM#PLl.o?7G1c-+l"MD>bu3''>j$LP;%qXTlCUZ,PXT"%0e\=Q97 %IC(bk8-2jVr]CbPno+p26aK\_e6mAXTV5"NT+KC/'#;1N._pZe(I.O0>e[^?klFLFUScKBDbp-g_@1)iWmJ'*WKCbg6J/QkFVBk@ %P'n'O-KC"gl&'3(.JDP#JGBKMor1]TEV.2D$g+!=N(li\3For %ITsVNN34[tI30I0Y%Xtrd062(pZ:EQ56DH?O=#(X$HF"j*%%Z3K%$XLHX]()quDZVc6iC6G!4k0Zipi!)14+E!`%,*7D6Ng%:/"4 %"'[5Z`k_:G2n>;+Se(WO(5E9jZR(8PFc;=u2"XTW+b]b0Z?4$nD[hc3F>Tr'a9cL'V=c!Y(\7a%X(AajL?g1eH5k]T(?ZdOR(Q2W %<\`d\;gs[B.EWK%pVB9>MJ)MDpF-#oR44/aJ:jS?E:%LsZY7=+`B8]\Oc6=hFS69e2MWa#u#-4,&=>QW%lo&_J+c5F8?O,*WIEY4_TfCrB[Lu\oJ#4-`p %e%%UuC/i)r\Dr"QUf`tN.7BPn.OXhU%i>e&cLB1fo>m"ho6SIH#hMOEHAao&r@pNk0i5=i9k[*'7O1g?mY?)fRJFk^)G$!%Z*IrM %!]$Hnar\'n#=@tA6nUUKEQH?\QB>^m\+)<^%E8)JXdi\Zqsp*rK*$pu>$kV^6Yg4(R/%a]o1>XX7C"JFPfKnn,?7R)!Q:hEb_WX3 %gTDA'`;$Wis0qMuof,Je+^"?KS.3>W+ik]V`Z&N_&`^FHgQmOVD7llDVS>3(rDI?@"_P8V2N5(@T %#_*VbUL-#I+Y`PTmLT,5\[kc%E5pK%Eq15!:nhYTRJ2gD7!N:>CNRdB%`"Ip3,)*Qi7PbOjp@X2dUD %H5CYL6JWaSKBb,h#4Bji=)sqpj>30I*HE0c/n%97Lm0VE/*J&_:ls<@p!?HR1#B`-cM_TR4S[e4[#S<` %;,^79f+"K'N*ab-]2^H=LV5%g_6W<99PBWJ?`LQVTW]hfH+jkQZJ"&=4^PVHFHp(CB8f.elE_E %`XXq),:Oeq$@?s\KL%)G`DJKY>fSI#an*nG4;Lu;&=3cW%P?Y@0K85/h2_.@i?d%K46&1"$:l]E)OFQe0%gbNjLaatd\=n:2'1CR\/=pO,eMFG3lA%.E*mqD:G\o,Z-OC/:Ij/c&eZ@=1"2E&@>nj(0Ka5]EhfVd#1U[RP]%:#X %jMab]81JpgE'oe:0U&sn(8rIASIDb@_It+?3,*B`DB?7_ZjL)\EWPnH'SThH8&B@S;n*"IdW %-8Bfj,7,3(m\<-eKl;PGSX4a>YD%"@6SSqn)$PU=ofrU`2@b>(b'k^%%KhVL'.u:\MJhcH"VVAoOp<(S2&_j]H5h*c^F?Geq\o#L %Cq,(YmU<)Ub2)4Zg,DL4AqOMPir3"KQRNTj1a7\=p;@80El,b&-L1=qs+ID*rn\:g?_pS2&MEL;JlRem0[*T:o/Y#SKhDm %3nRkSn3q!+"tiIi)e$,8(@sDlG#G%770OWTSVoP63>M#cJtkc/Z/$Jj0\*(TFgRrf1+_r.P_I3gJL-/ka6RKbM18Wl+)8=im,pWS %[Fkl?,'#Ifh[j2;`6:K&djJ=8Wl#\+R*3p,.;p!TZBK]>m'_=:8mh`7 %Cpj`_ns)-KW]s2M;%:9r`.5q94N"gfo3ag]`CQd7dg0n"dSGM18ZUlAQFO)S&L0j7Fd=?hm?aIuAhQSA#_]!oURYghP$>gDE1+Vf %CZhoSTcgQlFJcl\l11[$O,^[`Ouc3gD0h9Pu#>Sl0Z*'JWXm%<>+3@u+:%W'Tu]H[k*W`1_e6arNtY#c7g/3L)Rd?FYqfpRR*Fm%i7J %R+7gXH/baT1_N:'_F$uB+UQSg,]f+PM85AX.m2&K.57G8aq1F'A7\(^JU>@2*hns'!YJ,2rNT5=Xk?>l"WSKs__!HlK[L3Cp[I-@ %g54gEXpc4NmH'IU6*SsQ(mrdog*EY"!&RU\K!B0Z$UDJDW/,3L26$eKcE*?m'D!t4K8))K?1$qM=&$)u.\/%VCn65Mi4GOD"[>tc %KSo\;`)W_)CKm,k]M/+Di3I[BWi!*/i^8%:`38,61Xm]k0T_Yre3sueM(B*1[Rg#49;/"TUgj/'S.p"cj35MH2X_V;c<=1@90`%V %`EZH<9M9Q\FR'f0k-iMoN="qs<:5J`+Su'Qgb^eWlTKAI+"bf:T6i %4X`O1-@188O/8[aMf=Bs9""G62K36NdZHsjJ"?!N)d7+We+QIF@mq=*$;M^R,8e;*IA?rLSaKpsd7n_@f/PW$>8ntF]ZHK_-<)(@DKK*KtR+''?.K-L@;!M=EArK=B %&$@qAU(ha+4tZFV?3MdYlHS.2>^YZ_/LKZYg[/*2rC2)V=hIK6G#)ohfo505(c4#TC`tCYpm?3gFf[9POegk9lL?/.'>=;spBPQ] %_\sob#[[Z:^9@M#rZ<'GAn!NR@VleN+Q,#K>Bk&=Qj6h4H/=P)>Rl=.R%U1=WP0#oY[pb)=#U7Ktn+Srbo1f9(PY.)\>`fN0&PNJk% %>id9Pc][9U;5-?>0sFI^!\"><<6P5g+PGBuFSS6K]/Uc6%Z6-@%ibNd^/KHE1cY`2'Nqq;LnRuI#"JiWZlVo*fHg0TOXVeq7216= %Q,Srl>=/JKU)l#[o-Bu(oI4p<4%To4"CqJse5@>@b6B1X**e*Bf9:h=Wig,8EmdN4SfUmYGt*@J..QU+Bud#c*7&K2" %F$tkd?QS[r-q5.$bA7nH=qa1c/Gps2W4J0GH@nQX@0N>5<0MWU7bh9'=UDpOA=kfDf5:eu-CYmh\>ZhKa\->[BV:LB:I7Rjhk(_^ %=`q=1b[_mE#'t#t+#oP!eg9Ss6>r`,X'KPCoWO?rI1GtgoJ6&MLAUCY]7l7.hNGUJ:s?;imqoY-CaCOjY`0SLS7]S0Gtf %@;m,_]C<"j2$SRE>[g`GIqG)m?Ct-1VQ$kkcFMKB%;d3&fZ2EpKq'0$:f&W8;]iF['VA#g>j[Xt9U#QmWe4Rn` %"`4D"^0=:LZ(Il>HJYEi*!d'[b6\2+/Q,0Cs5_F1]Ld1u@,t#V\!th]dADYB*;(B&LS_K!Y9;eWlb@q2-%*Eh:bmL7>VQHpi03UoB %M3;8[gFA/\mu`qn*%*XKAQjs7#51$6gT(T>"Dp!6?HZ#^[M52S?p0SU6Yut2*9s>%d85opd1Au,gR70SKPa,ILRerm'Pmk,BjtMa %&,F\=/@:(9:2K-aWkB5q[?D99Gu/>n,@5m^=;( %C=%QbnJGGMpakb9r/9s\SHQ&-JF+9OTh$,>kqX=RTE1#\)(nS,C)>M2b"\C'j.`/ur\R,;;8`+#Z@fP/77>"b14r4=M70WgF7u$g %]>VI?5cFiJaX5jfT"=9aD)#*1fP\?;f,*Qa9XaZtJ^b2K=_=JY>t&okhbl-SF@KYG+M_I4_O3D1I4/UF^sT8>+N"1gk)Wh1G&Sr10/mMSM(ne?S %>d&8+TE^&:qm((]Fp0i_$WFCuUHl*m),HnL&VW*Sg7Uh`?GKZZU,=HQf"hG7?2RYCl8e'('9H5*MC<_NHnDC9d1`C(ET5uT6'29e %!o&TiBA4B4\BTe^*groaSEo)_[Ac\f%c&?:Jkk8B<``"H_M-a-&$CN" %.=9EAAbm*6Cm"Sk\/.-MVAg'!)$hT>/TO3T&G\?ENt[%DnqUHfjXdAZ*7,^\N$nG*Q9^nIPU:"(frfG5:RX$o3;&L5:NDBI:uif' %h^BsMOFor`&.Uft^M4j3NJej^]!atGT%?B^.1FJD_R3g'M)]neq&XV_P;DX>4m3ncF"CGRq**f!'7!U5-@gcVE\/_N$;e)rrY5[Z %1'&+L]kf,=oAJ6Z9g=m.fp9F-dMgM?k9RjJ6kg9*jg?IThr2R&%t:GQ,I]ctq;lWV,jO<+_O>FpTK8U]),3W$:7(@d\'2$DYeJ(% %J_LYJ6:+*mWODnXS;IDOA)lIW"FuD]<_F6C2+9T0V@5GX>-*8WJ32_?a&E%S1aUjLfEu#-61N,-]1&<'f:YKE(2amO$P>e:TciJ- %FN3WLP`uCDf4u0inIn<^b?`a3rN;l,^$.G4i!3RlVL5X2^+NC0F3#G6`kq0^@Km/aTicuc&'VXb5$]`4'80aPB<663]^Q3'i3aYpEUG)mGO>9\u7Ur/s3C,&]FHjof!9GQX*YY(en#mk"hgsW8Pnu[b$U,]\C7T@T`j$g2qg,V/tkQhfl!]@'Uk":FS\aODPBb!6c].^=cI;mS8O5d:^:7;pmP$q?2Lu %A=;uZ+HD283s$\MFhHK68-3;>e.XV@#ko&hMQe)CR.6_bp;PT/U=bgb1S"!rL.*m20U/d]Y-qYZ@BbZfdFtZ[fQ&O[N1sc8=qT0N %3KkC$*[^Y=Mad"LJA8Ft%;\):;6t"@?ol)2?qM\*\hPeC>WOi-aYrLnacoG1/r.#&Kf]hRC\S[Q;oD,OFC1PV,ZR-t.c.Pf_Y38_N('d!@6/hbt=Q>!C+u;Ve+TL#UV/L7hs!X3;>qpi.GF,e4iJ?$E1CEjEKmr);@2ehKcf%E('O=YTIf+/mpM#1SF'B@De+`&+g2bDA %j1Ktj$Hp8Za3I*2f.B?NS\2>o!$7S0-c,>+gPunPM6bS=k$YaP5Yta`E`#b/E5%O#Xa;($/-%pZX#LRDVS$tb%LuVOpEnTAdFlEd %hr`\cbaDUq1=er!`BC$th;$\WAQ8!&u04_$H$`*n@@ %%V?)RCE#;n@CUd`8eK*9'*=fcEQ;t'Z*0WHOY@a1i+4jWklScQ&knBhKlk/3&d7$)9Ur^sNK<%JRPr&tct[Ci@lC?,e&PUKrOUSr %SB:13"\b0*qpVZkKa7^VD/A\Zk2(")=22-O_tU&VePn6m2i?,-g(l7l&%[&*EsV`KC!e-Q%<%rCWLOR[PRqm_,7F@0CPbe_a),ot %E9@!$IN//c[uOL#Xa6P>WS.,>iDH.S[I^'GoNK_Yq/2T2;fZ*O(J#scWJ(TY&FY?odoH.]ZsYX=MiDW.+VJ?M %9.UIpbZOssRB[o\!$q3HGAP_&Lm)O'aZB]//su^";IDnP&`Ekf!hM2:qn12#)R!l*+mT&O%p6lNe*TuYAB`M?7gQ@n>NsIG3@F)o %E![t?IlGfR=Zb+gY_qD+!9@PJ+r<'f2RP(dJ@bueH,8j!1_N-a+'OWiW?-5C^l+JCIq8R=XkT7t$KK,RMY]o18RRZ/=Ut3Li(QKP %q/kA!(R2#J?A4OdE&[=@k2iENn$2a"=#,k';Uq.,8@0PK-CNIp#lSL_k@7mcK`[lF-IKZiV["]e/>YoHWdq,&(?nH'es-LXmaP"UM8-_g:!u%G-$,B8aUI@;J;QL>)!XKBZ82uIMP@Lu!s %o`>.$_1"ru\'[T0pVX$E(fbf5pbu:f8^VD_6s=d@IMLFnO'(FhRDU"^<-YUFir]+2h!S,NQ;BE; %V^%laWkbIaO1'!>2C9I^MIRoVEDs[%:`nd3nKlB`io+XW!!$cTF#;Db[CXN-W"H:6SJ=42$Y[u#3HYXYV[R<)0I/pQaNZ@g2hP\# %).smI5#RWu=QoR]N.G%%j8b!lOt8@+8I#>8Ii;l<.K"eu`\22_RT,iW<@a?8Y:ep9`->YRO1a`5W2[^r$U#r74,1(^:Fgj^E89jl %V#\.I=eL;#!-\^9:M`U2$A(i*hudui+NDCnnO(K_U+aU1J.)OAB980sPE3Mj5aJ1#+KQM(.AC@G?W%^cj8b[cG6)UiZFCZqA?.fM %@G%P@B#Lle?S`24H\C_E5/K=M/T\iD%l)e*QY$T.m!.N,4X"(d=dRju:7l,EnN@]q=g-n>#;AnOfm`:NAVDCoaC%);$Fbm0P]lkr %Pt?EpAFAE_/7j#:mU65TD\i/$bo<:R'"kZc"JUV3aMB(QiAqP`.1\b6I8s&aYAIKMXmqu.]PoMN,npVic.XD=q!nRIK@HWE=pVS. %lnbEWdmfsA/cdoO8ce)\ %eqmKk'AsN[.g->I`:;:,jar<_UsG>d4B %Qp&YELWb,pH,stV4/[MJ?)D>lB+Ur"O&YjXFSTIc<#@e&pjZ=V?G$SI<2hE$((.P@:6!l6/Xa]>4a$($igNFp"!FSKVl*)dkTT0dXH]RKu^jJn%s/8PshP,a4-Vh3R>7mC1LKHSa$Ha]=:UX+Je/*[YP\.mI8eD(PO^ %,k_D1!4hbS4Mq[I9m>)@gb(i>>pU+&Q=3Z.2Ep,$gL\;T8lF'eD07`2]F=M)1hjkg6Uf.^nX=X,bk_(YOA?3:%`N,6Oia>>-",@G %V*umpjijGGN]S-PAtVBOA+>8L&h-*T2CX1jYT`S@>V\ViZ.t"2TaC3RB_W*nVFZBUlUG^pG)&;>H3DY.^E!=tdL2Pa8#f10\?$79 %Z8Pdmft,C_%,-D+mn5fe?:S[7J>k?2q+S %T`<$E:AbUD#D4YL[na@W+4r1?g'W76s#a'UP8Xs&S6/?#]o(I'3:C`_.7<_'j*r\Y9sg9qJKIX$XR]tX@$6Yf2Zg"`h38++^^jAI %Un(uP5uZknLl)N8/Z*#*6eJ8A[KT'pEj`)W#e';&Z"CS6O:kG#h:PpmI[JSEfSR?6=fe'o+V-qDf>F12U!-qIWtD7Y&q %gj!_1ltU4]QVi4#4XD$]+DfS3\47ePTlePq?XFLg6PHP#Fi,$!SDAed%R'9V(Pm/9aHLS]<'M\I="qZnAVst@UfXEsfkDXf?45Y= %=Rif\+"#u5+!tIh;O@(,@1f<)Oo(J5ia\dV-:"Q=a6'6CQTh@@)<7GS:Y]tjW>CqX]EG$D/aP==_88Z>0+'s="frurTM+l;2+^-f %V.@(gXpk`I^hh2g\s,'Ti\FduR5k`KbsY3,e0'gLo?'LcKA?KLJCe5gTBAa0b$mtqEUd9"6jW[oNfZTIcC&RMGZHPQnC0]JmL6h? %CpEXJKMl*\f<@REX>@fk2/WeX:$(-@b)UlQ3-1.GR\cY#9gPUl]D"9&d-2-Bu[,8f@"+9mlZN4J`M4\[C:/pqul!KY) %K#HuAL7!YMWn<>mRHdikeEUH?d,9P#%G`g&N%j!K\r20]0;JJ&3HqiVd:_"QAL?].K%#77Q+3FD\ACpd8h`klbSS#GQ4D$+[mfq. %6>h)S;R!]r'!%J&NgVnLJ8^&'>9I=gh'Ipo$'`$Y/jXt5=E+4"hTZ*=PV,39=!PoYb1($W!._t %0&#bp^8s`F5]HShcXXVEXu0-$'Q[E_&i&'(_cqAV-cP!K1.P9F^7$ebg692F\klJK8E=(A?FH*$j(h<:g.5M/*=jA8670kDK":q? %OiW5a,%cT-1=AtI?BjV<2$M6p6"*;mm,$D;]1":dc*/M(['rAElD5R7[r$`OUn"u[EeF2m07_q-q"%+nn %a%B)g]NN@jlVZt:e:P-R-#jKN.+hh#=cDE*g.tXL;V5(s6f>;*R961Q)_kh4o%>Rch9;8NFI/DU+>Q_^*"g]K:6oGLa1Ie8BdQG6 %Nk;I!qb=Btb>JY":Gjf;%=.@M+7<_j>IhBk)1a:ID^Ocuj6f4>oTGKr#5`*uMO,]\TV7CUd!ZTgOqG)lR]-F0*-KD8,k@`.oIctT %=YZ4ugQkI%W3\'99Cr=`[e$a9#ldAgrXXLDp+a8h1ODePKQnF)k+E6Oj`se8Y$?XBQc1ukhk;+gM'Mh^_aEn[n'L<$4:rHA? %;o%3]XI[=^>c1VT[&Z)GHu[Z6i=-MhS37T$SjLMLBG4LPWVE&EHqm.slpLI?;2f[FY,a5G4N[jh+o6oZIq`@Jb=qqH!;HuGN2gGLZi/-'n#H8/qIg`0'4;^f5EdhP8G>E_Ca %OI293CK*PY&3tEYbljJV;QM6Cm4&MPk0OQ:B9$<]X#2Wg_aVnSb:Wc,I&J5d2VMnQXh=]g;lpHS-\>(3J;5>^qJae%n\:Z[/sm/u %GZ0=Sc*k)Aq&Xc?7!sN34%7D5R!k442L%[haf]&K#mWt>="*LB>:)f%[OM`HTuHUuRAV]L`g])k@P2Vp$^o$9qeDdL"7'9H?UJ!!0ukUcFg&eZDW[rr79O>=8iA'`%&T't5Xi %#2Ro8]?$3deV-\fS4Y4P`j+:Sfq?*74n4sIkC2OK6'j$D6T"+H;_g/0$IjqHN)W"lVcZ]bS75OYKuDNbN4>Uk8U`@GJ;b[.J=Zq[ %eMf9ZCkqni%>B49P5uE9hJH>>?Yi06s%p.LW`N>:@]oQksqA=H[rm79N4V<)Z5(YT/=_YMrZT-fDPRJ6J8b) %RC-qTHt-l4KkN1Ued14[P"7fD*+C%7BdB2eFHh8#X)H,?=N)&.XVB!$*rRR!< %N=ti?, %C[1AeW,=":nh4-F4"Ns6]=G)f'Ch&%0,fCbZ@3>pR)W#`!Kb8/!X8eT@jhPE/X&dl!?Q5jbTUKT8SWElTmKD:<.8UH(b&ot@h0_4 %Vl!h7]hT7`p7]R:0SNXg)7+hC[:L$H5Qk^=X`Yk)m.*+*3Wp24$6V*F3YA,>SJugou;c%'-4&R_lX_A,n_XhJFTV)S7ZcmdsGZ%W)BNr;cP*P&L45hIO^s'-2 %:Y(1F1>p3kI@A=`k7m3[l]<+fDo?1>WKDc#+L&39A3j27(#o%9!-:bC]`E2C1Pt\8,e\8r3:Lbs#LpONHm[[9d#fV?4dLHo@ %D9je*=OpFU&GnNLDZMn/BAOEa(`G'-+r^/-HYuu@!HTf@$caKq;2_=LejT&\6-MZ!VW8\%q4Ms=VkBon/+m4-]+[re62rX.1T#p= %l?$qE*&hukZ>%;WF`]ckKOJg*ujZIoP*]FUj6+Gfnq:?\b9neFW@mo'31_/ %JJOcU:65o6gfth&ff5Q9lBB;9iOTu&`+@&:=rrC.:F:@nN*.:3&Vr; %lgeu93AhZ!dJGLJ#\IACr(7Q,`)c'M1iV*citI[r!"/`9MW*e>6s&>[-+0ET7YBXsF.PQIggH=GWLX6\ %%PV=Wl]fY%$Y8?.eP)_ddF0_,XdpiJ6)'h%fMSA(kn8jU,eB1\9+-#c$!P3+!ePO)G(E6$YPp&m;[iA"+tBo@l=4`"hjPsY\XWGW %^j7k;"CU(N?K8a:-K7#RF]%+\^M^?q84JM_"N$4l9e&T3$^nW?WR`bOUi`TiN@QhUB,natDEUP%$)Y1f5h^ZuK-!k)`Kp-K41O1chO!h8Yq+RTEYRpZPSmY-0UiXqHQsZN>l&6h]XA(i8SJ.W=.T/g?Z/)Bu_663i$`lNs %)?7$=2Dab`BBdl+=e#c-@\%\Z6t+aK`^nC"B:lMc#K1cDb!4ugCf]-ieJW*B[X;jRi;/h-kQRpL]rS0Y/iGS@470SD1[NW@1hHlg %2n$qKc]b5q+`S6q!Ibqlj*6PP[U%rWmreHsQo6FLMkuSG!A"^13oO//_-gE]_eHZZ/Q,18b4$mH5eK=(WA+<@?OM'1ntq-e,/XW^ %Y:FJ!%,$\;>k5nqeU>ZiT*p%I/!L5n.AC2i#D77@?_<&S,&@f@\a":Gc4(aAKG[CfAM,^3@[]SF#Oc*$b'WpC_0&$ho+JJI4abJ7 %CrOdVYP>F`@-PTP;-eJ*dVU_r"WQ,KpL^QS>hGIho5`!Yo.9.>DW3W_jMZa#VBtIO[+:stM>Mf@\823o,b3i(;Xt/g*LhY8A;B]n %l82MueiKt:%Q1<(q5"Ne=A=1;M+eW"=]/2kgJ$GGPM[-ad'Sa$Jh$=cc06<_,A#J[eOn"^ER7SfQ3hGL"6IrM-h=&g]j7^bUO=1g?;!.q@i+D>YeA %R`PCMY6tJ'BSeGCiPU%%X++>c+d(HL9Ms=]tVT-W`K8l;&RO"E$E;EFV#CdP:'(!>oiT]GE %-]8YBEkr$Ihe44fa?"kaW,/":6A[BnFZ4SD`oq=2UmdlJG\@234(R1-/i&n?3%oKW1#>1`#+oI@"]1%_&:^Y(=2?4=ci4I[R8PA)UC37jr %Il`tuAW,+f.r0p[;8U0Q?2CPf^uXBPc+4d`Z]oNUf^0H)Ip9a&-6Z^4.,3O!DSAbMn'6OcVUD&LLf4"-J1IIe6+\XH5[\3Yi %b/D-tq1P-`$8lk0X3GWT_O#cnFDtK4LdW:[C;LUX152)k,aC^Y'RTCgo;-cKh<7K_#"^]NL)e%&DDLnk\nLoo.VSe1L*23%<8JX4 %GEhr%lg2N82l$Cs_#^Zai"fZfCt%<[S9EJsR3*B>G-]I`AM]9OgYe&hVX^'$!KCn1/3qK/e#L'6:BqNdYq0BQ'M6Ra8@!Jup&/'3 %f'Jdt8::ZW,uB\0&fgMd0R"o4dN?$M%gbVVC2hBD%ufO7gM!,>UMMOLug^9o!?7O5o2GQ//6nbfo4tQGBEZSIQXE_k1ZGDI)rm`BPj:8M85p13BSsWl?`=WcRcSR/W$DIZ>#R)7J%`f\;ZkDgG %bQ((i."Y&H3%SCkrDdZTr5,c)nS80%G2U)jQSO+<)jU?5]pg_DGC+Ok^md[!):_YRX,A#hpo.9#Hp>"\3jpft%`NhAjYIVQ4=p5@ %L:e8K0EI"I%SGlOkW`%KN5Bb(`>1-_@)Zp9]1P6;T4q1THPr1nNF[/uRGZ2QGN_(K60(i`@en!"O(DRAWUfXb`Pa;km>u2._Mkb7 %JS-jhaaBo,NK-q:iZWtu,dF%.=:<6:qtsD>\aT.=<,sZ)"WRj8pnA*+:2e(8G^^>q %RNotdF7A2J@k=J/rA(7*3)G)+e7o7B:l_S:]I\5\HYntYCFOU49KkR,)-[MqWC!-Fn)Nm!*%+/ahbtQUQjF+8M\VjkJ=Ium$.]/, %b#jJa,G.uf-#oOt$#n4u9$MO*c_I0bYWg+ccjFO=>&DC6X*JM=EfWM)N83.FMGWWuqpqT.&GFtE=4-H9Y %)!XC*;qSU>WGC;Fd5KFS%QMC*KuoFN1ilV,,Cc.o`^IULT6-[(raTYqBi.Mr"u#ehQ.f%(.V>R@oC#s8fJI*gXS_->` %lqUI0f4C%'PpFY[!%pM)p=:FHPXH2Y6NGa(1JnZ'LJPq*2Z,<3jJc:/&Aio!jmI_@OTZeEo<(M%jrIQf;qi_]0YE %8HC1A',PfdD?g%r+3]NVpd^m4Sd2];%7PR[LKl<8b>:2ck/T,b,4bR(/gBg3fu?Y4=0$mt(:G9Jd_T)67Ft.BVbSO?fhj0U]"CFY %a]jq/OGa,u"eii6X*G?=-0nm=L-mq;)T.l8Z2AVn?l(S#,`)P9B*1J"hkjIp-!alHZ#:V=O1hOp1)bD&?tGkWGP@-SA<=Q?ar:8[:77-]HUc>>d<e:Q2R)d.oRG:`K.A9g3K`[r^VP'.tnJooO?1HRnf&:E%\">q1J/\DU^8et7;ql7Ga&D79^P\uQMa$j17q-u1ku,6Y-C3N2IKUS/-0P,=Bq %N>)Fo%=X#_pegV0YD=S0:i\C#?oa+P9oi:M)6Op(i.pbRju7_g0si&&o24O9[miBP^gZopDKWn[c=<>s5Y^tHQ[V&._?s.rN=R-6 %J0WPj@FK+60-R8Uant;o)osf[DDc#TM=mHDPN%uXRmJpQ1.^Nc.9)k#[L1jj(dSs4$s7m('>SPH]:%d8]K%dePsdf+C(\l`a=Z>C %L8SRo.+jq(.0R2tg=0C%^Z$ID02]jfXZrFT!C]fo>[OPiYP:@cntBk>3jX?$;9GaC:DRb)TI<-"-Q4FL3lYTP*0(c(iXd>J %nr6>G`(WcRP*3+fU`JVQJGTh-2H<4%D=][*Rr/-d'b-u>datsdqPDr=C4:UNL'dlpQ!#&<3tV^*8pgaNjP(+TW+Y&"739p"<[]2c %d^^Y@7^&U7d=HY3,fq7l%o=?J$n(Pa&/^L%SlMF^qWsNON'[+"obr]XSqF[,o*:70`$4!Mm#1e %0RX5A&ID5PL55kdKE<:]",MLm3\!NHbE"=l=@X3_O\E#X(HBcdlrLeqZI5J-[U9f"&dN"8QUjmpre3_:RN-0(/qg,:lHA,"guXIr %I"uYMO>>cuI>m`/RdYsIgqaGW`Hj,*Ym9SU"9[C>S-d]iL=,&+;T.oqVo/d(K'4(pbMV0]m)UsC)Jj#q3I$T48O7BpAtAp@FPsMm %ece&OkXYF?OVf0Ko=VN1N,7f6E/A"RZOkLTa\o,7o%3[C>`b2f4I'3j %>N?W_0LD!:K&,6'*UrpS^h&(\(KFkO1(^mO/3[hnNC:Q_cTp\LJnu3\&d"K;7.Ukg/Eo>H$:7Hm\(dmaq,&g\?3)AGOGdGZ(U0^jJ6R[s= %GdD*$m*e,D/SaS#bGajcpL_m30S=Co*>4H_n[+F?Rob_CJ2#BEZgPTop+5n>clOhhYE,BQ@@^lB$HXXXn$m3(h5-e*l1:d&W7F;On1i4XID/eJWkOJ$d$Z&I7/q]"<3Ucb6k1M^!].Vti6KaARA.=0p7\'(\?Dh5cudgr,gu?P,s0&R]ptco %a:MYmP%f^]OQN^p7''%u@F`eDr6A+W.Y^5Oh(#&&JBC/kF^3l=Q\Jg %%/ha<7cI=KlTSdBRVtQOr>oOCOV,GG5G+q?!qdsa1f^+)d(;V*\JF;>85$!u?B4q$iejOFKo%%u3l3=NQT1"fh<7`i@\1a"iQVqo %!')RB:K.t+#5T2"/\LpV%h3+=V'"eHVZ5`>1Hb#KbFj9M07n7N(_@^Z%;[g\DWJ66Y-=+^ %Q_9jP/Oj[K6/0.YYi$FV!a(_$#gQp\,d['Y<0Q-B/`YCRc$@8Z&<;:H3nrhtE%JN5LZ&/"Pse3_'>`SG>-;mf %RG(.PHhNg5jtHi9!_BG^`2:,H%,!.cgeF@)SdbJF%%o)R,UH3p3W^@W]hQPVH)g/B(2?#F3[-`4P#Dsi&PE0B94IY$)"@%)rJ"i- %CN%B/\t;=c1qAo7mh$!Dh1g^K[907;N_C)@R]^&H!oPEIdYs^!8Y_PR_=@dE$2X_c=cJI'VR.3#.PpM403>VHOt%Ss\ILFXK*q'9 %a8sN?OKW53Nfr"""U,]TFDWVWgf1a]i0$SunhfZL3kijsEA-CS<)8o:*tSI/u!:!f'e-4*iSf;I:5L6mn=ebU!t(T?J8 %L#Zo[Q._+\L^%!ZfT(cB&E[ql\76Sg^!4ZKkMrS];8V#JKJ_fDO=93Bk(XpL][A#A1W$gR'j[CABdf3gdE9)0HEIg3m5SoK3F1kCWKdC4&mb&,8!ID(`QIEoL,eP"uHd %(d>pg3JAGu[<;^-YQPD@$Hm^U;g`5FB"\LOiu1]L0jtTiBQ5=des=T7&l2(JKjt!bi&o[>=bZ?5>qo;!MKNu;)M)E0bZH,q./'%r %E.6]Kg\U0M*u&oX<3,tB2V8h%P%)tm@$M)G,[ea8WSVp:+1a&Z6X$"N_ESjpCf`j[C%6kJ9#,!n0MQjdiD,6$$+OJ";"QW(&PZVdI'2F*>JWtK\K %/1W1WV9950ZKSPT^rtTu)mCLhmh9=sKoNN#O$"R33+:aaEhTl#]TII]G!XU[s'a't$#/]]!S`Sqdl4FlpAaD6'ps%FHqT"8C;5Si %K%rptWL,k%&39l7Skd2+NcK]h=ZfE*S!*4qa1/1S&V8Rbejg>qX-jJ'B2b#NWuSok]^liEh=I>Ym?4P2%UhhB>N]4q-:i3qGq@aE %%DhrBn(YZ:!Mo:=BEA,!?FL]JWG3c+E/FElJreFlf\UsoO!V93e'TbgPN!KgAoEM`_N5X)R6ZK5 %Ei(=%Oso>=W4,aR[s;^,Ie(KeT`*%?%PGr!",Qd\Kn1r"k&=&EDB-h^=,69s9:\VmXVT.]4;`WLi2%jRe%pDb0FmG#F,h'c^2ssk %,o`RbEu_*CWW5G:jt?O(Um8b=HZ\nKr@+bZ[aiAR*#:m?C7X-DfbJd %DB-uQ>7"=&k`I%j2fjnuN@_O,@/*F6@Zlc?kok%HV3s%A'jSt31R]:F#/%IUK&T0M@f_;NU[IeI?"M0fHk..)nbs9"U`"`Vm%)'WG/@$6^9?"+f'YoePKHeb_NF&3"f:ngj7Zad=WE %:6tZK4;g6o?t/c3eKXuZ`f>n,Q`c['&SiPNS2JE)Uqir^6uar%q/4bZF8r`XfEipVW*a^PLTjFgE+\q;/QsR/?&*n!km,#;RaQX`SSB4Kg(&]'B'/2`fK[t+kar?BgqKA.`)NsL"]LP+_1>o&NF##+-H0^``'"]"M$r0Qe-0Q6bnA5Rcu69_ZoTkt:0HbBImq,BPiaOu]%XHbkC"=;*KK&;irVakb?0RY[(m %nqu*OAGJk)jV(o[B-Y#K?>+ner@"cRgO[=@_"f`sbE/iXAhJ?X<'?mSg5/-a"('I`O/7MG!dID_/0P@p8S/[iJX"KB %/#Q(Q3`;9O>A8kfL.46YdZto@2!`_6GP[m:4>@8YNT\c,3nfUNj;VRCV]?0i)()k!MWqog&,EhR9F2+@"AhY^=h9m?EbJW"fU=uq %[d"TKSjM'D2)H_rfT/R!!#-aK)\`439V&VE6U9^aAW!0ZT-_b!jSPlJFZP"! %_K'i%J6`R"/r8HtYALG73Ja,h$.p$Q'jYrU5arcA8&GPD876(6:]K?F,uu!+``+DV='OT+/T'T"pBFhfaR3cUG=R&Yf/WOXX3]YcUS:G>lb'F %e5.VlBjbHpHDWbLYVFC1)(t^a*`oL/UVV_mE@P=Xobr@>._&d4Q2pCuk>hK&(t:"+L4@Kl%Sr&9A]h0bh2nM`MVnG(>qfffC%&kp@@cZ&u+A,[=*K %KdB4#ZQbIhI%$To5`U0?5'.?DS1M;(1!Rl$&`;f`4_GS@YXh_' %$NhJE,aQX@S-YTZWbdb#cs'JUPut^+802::0FKhiD_]IC9YO1(W4;d;0+VV$#J,i*6lL>][[X^h$W\qo:1W/1f]P'0G2b5;lfnC* %)'d5J(r3-h#-.e\-&MZ+XQl1/:dj1^AU'FQ"6c>$":8>e@%35WaSJq'GGHRur5aT;lK!,JFV]?&1"nq#bL%->rKdo7B&'N$[bdQ+kK%%,=abM7(&VR]?+ %02"(s3a5^=4[m`;;55<09QBh<1Ie^>D$u/idc*)dZ=hW]C>sYn+0c-r;"TgT"$>hN,'Rtjjkp?pojeOd5+APYYR4c,$MUc)i)2eZ %rb4]4./f-X@bIAU]"L]W]um61tQQhD9oVeMWo?l.*%THLuh0VBrL/\54].0IXr2KCTOZ]NC,8%>iK;;Fka&i'IjH^gPX?EGdP %\gU+5Re/F)b"Onk8VPu?'5=o1r%S+1iW#9Fs1^=hHV\0O?BmW'R2ursC/G(9[YmtHmZCM;1QTnh3RU0(,@QeLRHMoh %VL!"jrf8KBS%cuJnej]ZY_emnCu"YX\Fc0)_93t;EH*!o*;l0L^C-p6"O"D'5L$\0'9u!>n?Oe*NdS)[o.-VO4E9glbe*QW9WV:=:bQWW79INQOaR?k";Q&Ot@HS;_]$#pV=>)Q\,+el5XirUhE$ntK` %K=B2'Hm2])n"shGhl5Xkh/l-X3R"7l\c@eaS(f:cRL5gq/J!=C %:_%$`3i.%c?DV&@Mcj.3XG=ESNag#=*0A8rG]@$9Y\oSM>f5Lqi1,rLj)p2(I5IR#i)2ljUApcn2g=5(9,ZqJQqnAHcE:fB6B/)u@>8ahsYi-@[]p4$]%W`bZW_S'rY'(GLOmYTYmjXc`]a)^A/ooHOV55N/c9Ru#=uJVmi%ZP@M+o"SamH+,&,,E*/U/5V %8"#X>UQde?8LqSnf>79P?#%]gV'/=N+rWRaj4UH!8D']0G3dYWc7KHKS;^*<7==)7gd>)mH1(5%_$-<*MUMqPJ.T)qQ+8OS0nMCf=b=\?- %bpcVnJcUFb'7Jf"Z$_d8C%C5%[Pp-@%Me3#g1le!Z8aNoJ-`IhQ4o-L3P36nbFMhZbm!!fZ`^]C_H+oO`%[-H9KrPrjkr]5'8,2) %>0G&H;dtTrMod?S.MV>=q)"qrKZ-;V1u,[FO[*._Vr^g*'F`bs)*A".8gnI&[k2/?)b3[81(&-"dA'IH8q?-$G?RA%:*[fh;%cOu %CgOOMY.!]26\Gb<TNknD?WeVY\tnmZ<=E)<_,phq<"meH%\Tq:F)"-dk[cs&=kk_1&<(LfuOp4*\+9T)r) %rf[MADZpOR-,;'OCnt\)$5=5pD#dN[CRbD>k6U)"U1?:l,_2CI`q!OjV:)WiAg3E>`3$Y'cB!MYp%AsJRA@8_5t@b.TpW8DWMhK] %pBIDlDa703q*sBTUmgp>A17#,aUuli4oVJY=Q>a>8L6^ZCp)GrnF$JT1l5+qJANnqK$[8t1\kf5A&bpQ0/]`N8,PqgD:g^&E`XeD %'K!D,rZ3$kajT,F>Hl\9'5"*e)T:Y2OFp6"5E%R'fJsn`0'_q)!k)b_\Ne?<27h;M^+u4:c#eb2[df!eF82IRhM5 %N@>"p+PUW,M5Ap64TlOU)ATbgNgWaOG4dRY4s3%('6H*fb63uFHi4(9#">I[ELk5Pie?:L\$Rb%Rbbb.0GKBF %]A6Cra[L2-Pm;!bYR.+XZ;BZ&JQS/;#E]Cue6+*k@`FS,c^&TSJ>\k\8Qf-L!C]l<8pGE-e1DNudkfaWW/f4)9.SNs(cj-X!6LtJmV&hfALiF/0kNVho&jP:Rm1o*"X^.7,V;Ro %e?+m*-'P4'c/OIha#3LK6&aA3THJJ0DNH_m@WB#:ngVL?"+ejc(i`"/U85R*Km<)P6$_[7cDPb\nr\SAWT)YtY*!MW%gPFb/?okt %,#bFG)ErMKKZ6P2/"`;0e`DM''`=@-QOaB:i((cu_bc*&]Ted]Sa1.;DETqk7r=MJo`@q6_(IpDP2lB/H4F,?#,rT) %fL2ET_T)AI/\.B^dS/`ZiGRRf?@NdkN2k!CU5,YJjJmB((4/*A$-cpa,h)DaCIuM*Ve28P.$1B9=aj!EC)'/E&@023J](dN@]H8/ %XET2uJ7rP=hLBggGP"D*t']:(+/p\ne<-29t0mu/XI/7 %I7dtI(;W:,.e[4V\oQA]W?0[Oeaeh!S1`ld+Wd?!MQff\-oO9th,?p!T1=4?^S %/uoCpZn,N7%H@@E1-/;]_XnGieNa<=H*9N3QV"tORhM%YDXhPkbZp)8JBs68)VILIZ![UlU<*ZdQA`Ijg+UrL9Ch2&e&03O?fpBB %e55[]R>'[fNYS8hEKVsYm0M(J2<`+kKe%6PQh"()L'Jp*-)q=g4#;5S;Ek1PRW;CSLt@Co/]YXLcj[ZBs,_GH2r)VjZ=X=Na0W[W[h/;3h^SNl5EbjfSKL3or:bZRDJqRDQ0X;m;CU]39_msmrXSY %3s0@IE+h3n:d2m@_hI.qa&]u/(:U.#9ff=7Y=)gV`M1S:BRDBHp%EBCZBk(<`o%@B\F:Z5ZA9Bs%"W=sIg\e]SoCYY=bcPU3[!Be %0b'%A:L*7r:ReU1!n5&,@f,9'Loq4gorO(4-hi_fi;95mb96+!n8;AYnH-L\hs3b`"8n*n!,[>_Rm;No#rokMM"PHB3om8' %9l](0B`lWPa9o'pMdc/;[U>OCr:OZQ68b+!\gnP-auV]8iRgZA)aC.@FnI)8iN8k#]i[#<9c8f"$fX)"pH+SmEcNQ#!l %#;mg]\Xp:C2^rRFCK9K'"m.6b/"KZi't8:(Z:f>.WqMte_K,B+i@`!i?;`kY_@gL.aE6^"ik2OP>TJAM %k>9F-*?'mH[0HkBP&J2`?Bs0D:HRJ.-qd>GomcduED7Vu7pNL3W;Rl8$ujmCaW3FpZ/[`[lV>Q%RWoY!jH^ap0iWD1gUMT[LWM_* %2cqF\'&_P4(EZNnM+,E8c!,WGMlmfh2A8J\/egk%f&bOYr.m?bBb^)Q>9l5Arn/-NW_;jlpi::fCd6cg7G((,f4khE=FW[+F;^H-9[6q3AcW6*#8$"=u*IL4Ak %a5T7?R\^&[ImXV=Qf"%u@4IS`^eZ_"Nj&^cWXSB\&,s6WVUC"YVqaX]M"i%7Q8k8DNs9ukL`D(JXBm#b!-%\$Tp&X0DnhTA9Jj[2 %nD#e6/Ck#&:ch=]l-!J[-s::VlIE&W4(kj_$jf["C:p2!K"E7+UlZ\VAn.e)pMc>.X:.c5`>WaM%Rm1PA(dsnj$/%mH7lN@&!cg! %r2nCd;:10X[:J-]c9DiYm;RQNSE4/XF!%Y'?=r/):_A"/XFC32q\*hV#d"BH*pXtXWDc++l"JWVcjpZB`,BRD3p"oYN7d."aD-BI %C!%K.+%8H--Q%V133^^8m`f>Q_.m-+9%BX7Pdp5]YUK-K_P$A-s1aA6P!in6B$=1"',4fHB9GU806J4sj$G))QT;W/3`)\KY056'H6>/9Ri]mf;s7q(.f4j@>f*!+:F/'@/dj`/X %-j!LeDYK^4KuZbn)tW&'pAg=e6kZ'njRUBm-SLo6"+a'UH"iP\/oXXPSAnFOG&kslM/_\F1&fc?/GWd7O3.YOV./u_$<\f]Lk %Y0u:19"S'!Ed:B4TI19(Gr.pG2LO0AA6`*N"q([a>/k<]H$Ze85I@T)"0/B&b.Zi<.'`h3/Sh8I^VID9J@m#dD\)bCZgaA1]JKN% %9U[[8c+pa-Eugk#W^m$,R[m(Y5q\,U^-kT2Lh_/[EL8#ZhVg%_KRu9AYpdOGJ"e%3%n[>GGOUY4 %XK[?ilE8NV_TLbKjP#ne2d[Z9VIOMfc5<%`kKM^.`G_8)S@=AoV8r5Gi=R4D#kBI9qCT_l=EtnZ^\oTjT%G2S4o2;GI0Xp2$Su"p %))SQZ\j:;>UUYhr9q(Vdfa6H(:uO8l,]Y[cUOpCP1pP;1rO?+3er&"J=?s)h0GWa-De6^^RuOSt/NXGUnfcZM[IdngNe*YQNYMi2H!+r&>?m,dje3Xk7SW>[5N+DD %lgH$@U^K/cn&T&]`'c@`]sdX!c@b55m]/-Ook %[\K"MQ!:\-.COasN*-Y-MQdHQ3F2=OM\TudA$pXSki2'^pq-'BkW@63pU+:mA`N;q+u]Wq^hc95`^VUY/T8#IcqU;,Cqp'Hq&tc8 %rX'2Gbf[#&2!B'kgNs`P$gnL86b7HpE(^/-DS!s[F0B=f!OCH`1'@l$aXad;r:X]MT%nD9lsc_sXTlme7Wph;#+cdT25C:To!61n %+ub>=TAJ@LF/K;(]CUqme>7@-![?84oRBG,pGs8e<5qJ@D5sn\oaM-55g(7T[!G&rdHghRPcPSI+(kNbc9q#1ZW2Dkn8Va"IOoSQ %/.0PK+5H0fI%&4!3fFL0YJ)X*8Dpc2m"#OS*#]N1ZYtD%l/QppXn*LS=Fkm\8*lHjekAI=W#0P*_;O;pTa-1j1)'?s.O/D79]D@( %iG=8S_>R!^lW$n@9Z2,%Ysu^$e?J0eo1.ts#iSRm7;!('uu-Sq1'X`VeU3%IUD(XXp\;nF&eHJ5.8 %M;tpFNNB]V9)YtH3c.bR>JuR\]-s1PVf#4OY8SZp_,L86!;@reldJfI1_VJ:'4;tI759XqLi'/s,r]$P+@TNF6Dbs5Qj&Ab0P=b5 %!\HHg!B-KX'%1\XUQ,?CBXe[[;a_(H,!33@b2;33PO_R6+1HPfD>nbDNK)jQ@lh6))a34F*(BuDd%0P+:94rDkE`)\PYb&0)mf$@lLf5=Cn_d\KZ)imt^DX%b.F%(iJ %VoIO[+(:\k*+?q\njd.'c(?`c#ISDu7u["O^8W\<\Q/GBeK<^s`_VnD%:f1unLEq/f,$b>+DKrP?]KB$50nQpclkS[er&\GA#Qk6 %c^V%,W(?F(a"^596[_)b=#(_gE^m7,*RIpdJN!K(DenUHf3!)]^@rNjbYU\2^VmNfCfi]8RfmDchm%00B0^G,^CK(c5kNNBRF#QlD6sS\"EMN1'"?d07caOLtc!8T'/-[_I2Flha%$=)W(X8FIRIhM; %_#/PL'RZ2O%Mta*[<0j+,9e1+3AAO5%72e95n4iKJc^aBbeEHu+?b&t)M,1hO6g@r]en/uc8.B?=qj@>,stfZr]9[%SucZ.`>ETG %asK^DbadM;Y,J1sn3\+(k5Eun"&S2TO]P2uo:u/;n-mWp8)DuSfciO/h697^^jM_PkEMTN!&V#'M[aaRkIbE7._nA"-X"TUV>sM, %B9?:OE=BAVG-s;'\Xa5FRs2&/4I;q"`5:h7G.cbT#VQC4#X,J#*oK#Bs,Xb#gR0K$??q"D,;Ld]qAU'Y&28b%oIhsT_VO#'h!EZRK(72B9\qG5:hMOfOhH>-8q80cp=b2C%$mLSCCtt=Cl6LAb?Qcd %3M-A)@M?Af22r&4:'\&)CuK"jI_#IqH9)+W6[U^-74%omF)q]9#fsUm<>>Ze`)#o@U(QV,+q^47omP3W3/!daV2loVaQdY)/PmaZ?fFT`&BU(bYGR=pP+kO1&I0]!=lbf0<5:#;ne6j$=P';.SNjfmjSU$ %U-S&Lr/jEIaG]$Zp!@<1;3V]Vj3@^?9pro\:rH![7->g9%Id>-Tif=a7k#V-nfUEF3F-SXN"V!.(uU6L7oE6+3li0H;"FGY3@Bt( %,)?69=[HZ.,WOt4,>#l8qr]r&>!-@lchH<83J6Er'sZ%>OT>"@O`8EnVlTk9oK3\eVFY,7.,@BFp8RI_&HK+m71u+.@Yr_ju=GYph%*/4J1(k4^%4h`='63 %K23)9E-/,T+oI/jQ\](d6&Bnq(].lcW43.doh+:Kk0oqI.*`NXGD@A&:V\eXgDr5c*J'E3%1!2;239RS8ANGQB2c3C(nLeO:s?kgPJ_YZa72n6E]=UkUnUBD(c/unH=4OFj1$#i(q,Wd%?!3$)-X&6gI7>V)_qmDk,K;@kC %0pRbKb:N3N#6+,UR2PMWf0;'gW,r-LM#j6IOklN7l\#,ff._<#nc1-]c&8*^jf1aJ)`S:[@C'Dg`8+gm&XY`Sp7>qkK]"*aPTD>; %$[Z@R%at:n(Oc[RV!P^rHK(BRZAaG:ZJ[+/IjcIJ:opj/#WG`fh;>:tId)EineIuH&3/GlJI'$q0F9^V'U-01'S*bfplR[?+^/*1 %>a.j6V^doC,%UMJIh0gX+\IfB"OeM\RB0Am3)R,TZ(-(obfK?5U1+Pm@m*4+\q2\2p`2+LL7gk6.6%CV!El4_'g+*K?k`hG=o"8, %L48E>kSdiDiE1.#>4P2a2]+$QPn_:!EBq:Tf3DI:]4dN;O`MY))Xo_K+T6t?YjAu[h&I@:oC;c/N^.!7"\2KJrIjF1?RYDp&=c9` %%]p)dlq<:+"B\VPQ=nZCna@YWBu,&LbbVr%;^>u78"r=Whu3c;gfU!4=aH"DnDn80Xqls!&7iBJ0j5"S0&_s.DRkHGn*jJeBD7Oc-9ck=D-!:A]($H!J-"+Esd9gn3"_o8c=$, %1n''D&"mcp\/#o.H%#_V(DQ>r(0K(KcDB,P8@i)3X>kVLNWAb=dcb8u<-XB*'_8>hL3!)i!\8fL:7k6Ocdf2(=![5`,1T4^b31r# %T1B[6e\i`/Bm:bu1Yo8GJ0r*[]LDIT"`>GbM".,*Y:T8dF;=KO!9'>2#jUaQ8&':qa(,9Io:'!7"`ouA!2,UIoh2.Ta:XWqB3d&Y %!'r.f5:d(l[qdSrecXn"9)/U@kq^dRH//[QI:PiVK;^2YkNX8Nq"4N[*^A^j7"7ZWL=r$Pfs-l]r1Lu@BKH6'@b9VUY\Rg:`%BI& %r_g&%`p,=03LQ>Z5"a6eSA"Bho6?n!*pn!:.\LYJQT"]\<#C,7TX.VB*jQ5sP:hR]-6UB!Z"4PACM$R1Ul,Cj>0oF3;@j[u+k"0> %24;ngj0)W;VTsV&`UIo4H!D2`)g>K%$!d"Ha=ZTcqe'ni@"ff\,Cf,_/]XA'8N"LYB^hh"qC,emFS#''=AUNXq0aN,509p9'Z\SRcdC6W>kM5)]<_3#L<\q' %Q.%Nk@M!r)O>:7gBI=?&p9\A"h7DM;m43?EEn@sYs7:BVJNN/F\,(Lm%5tUd(\@:VBonB." %mBAmqZ@"h%NMIYia"1ne^Y[ImrjuqKrCqHl6::hU&WFT!&rAGkKH\h=B:&CdbRprrL#2XmRVA@jld`hWU&ak/eTUlNHLUYbinj;_ZbFLt-[BT, %2(lY^(MiG=!aGtE^g_,a2`(3'Q%_rP.QUYLVC="kqc/q0W]D*seoGe8F@Oie1nQurY>U2GA6Qi]50o/EB-#jEM-@=SZ)+$63YsqA %(FnhcPKoI8lrhq/%_gh,!t.&?ZI_NLMC#`ihCSHHBQuIiJE-Ugb;N7#+C?eeAgZ3'?Su:4oiPA"X5FrBI@l;Ei?`1O(H@Ts %:g`8J&\q`,N4n_ecO@U'2u-mSI4-60KD'uEo(jf2.DcD"\7.&u$-oCogebVK$^-i$Pp)`1:A$/gqX"Lg'#M<-=3mQ%%qiA@;6oud %B*4dZ0Vb\oCjRuNDfT&Q``?0sAiGO))[X9>7Lc@@6&]L=:c;=!s&WQYS-6m5CYg+.ke&VOY^!,$78S[%r4-U"f;]Neq,LpSoB4-/ %%qRZofc/GOI[W>j8'g)F7b$F_gpcC$G%"f\;C9I,s!24fNi604CaK%p2Mmc;jLFJ\=O:Z.T5XQP(464si^_SSinPP-6#=`#^Uo\K %QYli#kY"O8`>GPoT.\Ts4C.'R_Z];6i>?$),j$IA^h#$TdIr/^Dl#Ra'lURRXUbibN_.A[>Ig-B_Mf)T=LPrJp?%e;1b"U)&bihg %lWSY,@L.e1lc2\8Nr@er.t2YgBoZ?PWW3/tPQ1Wg?6\fC(CLNn2$*B.oqn/=s1U#b)MM,XIJ(J;Fn]l,EhO@r?ONL/du&toMk5fK %'o!D1:Fs3,(+]"T1DQnfq9s2?-Y1Qp_`P^5$"CYo]$/pOdrjMpmQD82eC/Qoae5&(D)JTU4^F@50s9cYX]$$U'MmJng1'Z%qV8)7 %=7&;YNSiV@G5M.=KMuhKh!c>UY-X%;i)lSk$%\4ar=(C`Euia%pbo-eAnL]'mmPprkH?hjks!Y8_89"1o^%@hk%8jR:RCa9W+;Xa %meAqN+uG$=?Q@*b-3UFk3Vn,:Ap,2\_0mL%4g_OLo&ZgSE9BDgFX)j7Y[!7b;f,f-ceCY_fGJbSaf.H:Z:PSsU`1L=WQWqD#-#ukf %:4<#B6[[$D-Z3tTo*?0TI7B/Jerc,NaERcY0Or9==Aab;_@d;0 %AO%nt45t[.9nWZ0*l#i:A(33Vnac"AQZNPFN[P*O*$jl4_Bbq"Qp8>:"h2S>4`1+e=2l0J09GtS5Q?d/r@eQsCX4+UnCt(aP(r[= %RI:;1Pq-*03Cu-l(QRk2"C4Qt!UM1pOn,m165epT@pXrT's[O/V*CBc;(A`[\;ug>Kpb)!>(CCZY0PtE6k:Mh=C&l?8Y43U:,_Pf %9Y)&D`O2;==dObZJj'N8lFOO\EkFpc%rRna3;eMa04riFA9a5sHr3ahZ=GK`>*>K#+De_[U*(kYog[#Z9p1t%$Pa,oI=Z-(YISc2?)+NbOOSMWs)*uQ(EE*eKg7a[8N+1agP %-f@IQH8a=R)-A&<8M`T2Pn][g"]0DDi&Ab0)t_&PWYdKmXo/Z$,!"o2lefJ[;P=n:ml-f<(qRS_@ZA0q&2PHbKM)lVBk_!+E3Y;] %`)m>aoa=44XHAlJ#@P!PW/n1f@9-fRU.fdj;F`,nBS_8\XCfjH!TSl*L3KSr0B,j()Miq47#hY_-]eNW/hEtW%.'7dVo!N;rI)RE %YXPmVL[q2%25U%F"?/a56;`bu3/$^1+K6^a.=RAG49,SNeSR;?A!I&?>L0=I7<5jBD.kqF5%QsPaU:?a.OEJ>5W@]c=MA5GOm\SA %Pmo(nq$?<&?peA^okdIthsaL#^'o^O7a_?Cc$[lt#,',X,(EWeq0f&iP":bQ6=R!r-DiVR,-ASZ"J@@$@1dGYQ#W0EeO"-@$5Pg7 %lk&l*MHEiEihDO4W,e/-SU5tXHi-LE@Nc)t.J0CHa/:kVnO?%WkCn0oWCRC1T!cNWBSH/f@IT*@ibG'4Oq/WRd@)m&>@0T(>Y1[:*/0).$EOBTF:HW(?q/]L0L>XRXqm_^dq!7$L\g@/4jG.X?#4t94Q5EiW4F91) %5qf6ehA;<%PO#T`M-3VtX+\m-N9L3Q0"A=?P;oS*o]f90ea*C7W-KS^8lCttPhT19i=2$G`T@_o<(Dg4N.bUg3.]^=^;s"rU,`], %XB&):&E+K\\(Hsq6A-IYGD+6`+b:EQ7"O6ml3jXn*'>fZpi(]#i5Q@]/fI-#a0IB/$a,=:oDtrg-j]+9D/]r--*4EqOG8)eej?/Z %=DT=T>1aNI2Y7a/fV!e3;^,tU&er.Gpf3V-9^S'GDUXPN]S2YJ:)L6K@"T(L:C'ccmj %-ABAJ>tL-[pG8kg?.-Zh$iG6-3ceTQ)@Jg3,!LS!o78GcLc&&aP+icb.[!NR[38+d3PQl"8UPQm]u#DRR5R?3PL-`4LtSE-+Hmeo %@&0l/)m!UJ"^33b>pTQnO6eFEC]+hOmso(@4&&2M3P!(+&mGGatM"[BZ9!J"CPJV4MK87aBZlbnkTdK@lQ-\"pJ<\U)n %2%(;o'#gS:9?p*]t/Vjf$qX@+11f3,b5O!R]AQc<`_o$/5)]Pb`e+kY)-&C&)!DAXCeTR!llEkQCh=R(S!Xm.of7g, %:H/i+MY3O93q?,4gH%S1iDI&0D:;Kl2c5V&SU;gjPr`KtQ.)gT0$R2Xmc&M"4);-eY^mE3X1%Kc(^:#GG=i0@;>_;[bZ,XZ;<1<= %Js!X+MHnelX72f6)g2ru5Re@<-."Af9:KHS4C]#j>@jdEOMZL^e]W6_q&Tc*g+Lt %Xa%;EU4p<[E1[dKk;iS=RSR8^8'@V*m=5&3^\d\Brr2(Fr87PP2uiZ^s621dqQ<7U;F;uAjtlku^TL0Y=HVrBh!b0jp7$2&^M'sm %aT2A2;D@cNG'gb0s%^TEhO=q6M(fCgP5P6]Ym`kRnZb=Wr1E*!8?nutL]6\l"rX%(Y[O9oor]aXq>&:kd.X+,1al)<`Zob04^-sr %5a+`\hA>*<9g%S50&S(0)u6Wg^A@[&]A4N9kVq0,P/Ve#2]c@%F_)AChR?]&C"D$iPr;GHS#=t(@O)\P:gV;<-TC@UI %-T[#p[nWJH%0H@M[eT:R2tspI!;.IuH9`"(1^$(hn27XZKQ"?.REg/@\n/9n:%?KSDshe?_".uL83qhr$+48dVeo[K7sN:)gJfdm %GeI>Z,+2%9c#H\nD6tl13?&I-`8mDbpu^`uGPaqWf#W+hh>5m.D5HP^?,\O:Rc9g/hq[UCNJmFERuHp=[N=CB[Xk0Tp0epClS[NU %`A^#r\_BV$=1*c>.ud5)*Gl@,6^qL%^Y'C[rVYf,+'E$0fbHSoUD0ef2A#Gu]:b[LU'GVjik(i?h!]QD+0<"*ItG]PVKgh7c0gaL %pha6GXQ/u&nI.j!0Dk:sY*KVd#YRY#cFYuaoCI2#qFFD+h4s;Ehl`9VY+*4aJY%,iGPCsiM+1ccEfE8;-$ZrU`k$A(.q$*+eJ@'@r8rGM=_l*^;kBhFUCH=pnKKYoSrDR6`HOP]\_k#AS.VT\:\!_ZHX"1groZA9&;t49sXa63]($X2rcVLnp[amOI:u4*H5"`3L/su%b.QR7?3ag*?!D^No:,W*AFV#8AS/%5Qs[3t %KCO10U]US!-,0-Lc+W-25C1uX_ghTrJ,GeNJ"1NV+3]:rV4u.>9X?gZLOek_r\$@s]\`>9XY"Fl0_Tr=$JFmp"8^Z5Vdt]CNRrXL\NHc:I20?WJ<'Z\D=(4fs]p*J,"kFOdUmfIN3MAVrD3F\8!^b5p`n?(t'BJXkj\`WRJi#_fUG] %.in\feC>kk[K6"$PBnBukAa;L.>#&hP;&grcG%O#ejA`G!qQK-;imju.&bNjGUVYh9d'?cU9eW\M^LY\8THoWrs,Y],Akk&Y&($- %E=&BYTI%^Njl>'J+'hD=orVEOC4&'rR6_UX>`=JM5"l9p[tG,+ %@=j:@:``/rRr9@D3Oh03$;3=U@W*Hi!._8R'YKlKl?$MJh]11@FpZ"(?%i)FI[&QGY#9ea@kkk]S@K4?APES9b]U';R#5uCW"["? %VH0g6Z)i*l!?Or\:2`-)T(;AB)5^p#MM"oHL:9_bXdP8G?Y^D9!YBSDN#U9J6d+Ud8SEeNY1=H6i"0`P$d!Um,fTXh*PYATG]b0&'G:%RM`#5Fn`8bCR:bFLK %I'[L\V,0F$)cQtp*\5*2DQR,l,iqJK:ikA7'@F"DcbQtu3oN&Kd(5T`!2_E64+&SmJ7\t%b0ojJHU(LA-?]$:pLEVB;'Tr^"$=%E %'@':,$'LPBUirm-[dtWa%IL"@7nj:=lH^`fDnu2tj\G"_pc&j;+RRHR7%pENm4F"3;%B"NYb67PZY8:F9ZdZ^D!\2Xq[_CI[[#a+ %UN(f3G<@;il7G`\0rhUg1C7!Bs+L$Q#psX>UrYLSg-_NU`i?&K"<+*U1@sk3EXH\(:k<$363QK9YWF\>MP:K:nuRXJA^Zkg!J4MW %1I.8`".-.8Z81sVW-V%hASTo$-"!7#O!LKTFSld:G)o@<8KP,@\K2R:F1,U@F$>7gUP!D&8?k`$K"X)t[j9n!UrZsb#n]5G0+]a0 %K8V]JR?0ek>:!8pCY@X]jWQNM#7.p0J@Kl/72Z+N8(Nlre."'odB8.G&GZiW[h)0jmfQEnVI1UV0CT@L&pB/r'HTY8;B+t)&WlNO %.[_c^[6,Bmk$9P80q$I]jfJ>])%'tWXS`s&f=^QFJ)$&1G5$,APIk#`4\&Jfk\[K`P2DYQ.s^jdNMW-pc!*1lY2u(ph^hR(3?KFk %R:2YAC@>RQ\Ws6n)q;d%H5FqQN7]oqb$FLV'OBVj:Boo`9Dc8P13ZGTeEJ,'2o+&a>t!o`j@QP%l?.)8)U[Yq?2U@/k0NoOP-"?B %Kek0Fehr=@1LgS[KkZVe`"G:f-O=)M2l4B9h8o_#]DtU#l>R&;WrHWisIeH %-H.&rG$.#u=^6_I]EcAX;iMi1*4"X5_Pr]]I@Sbf32)BRDFg8+Otq`,=moOF_#=Qg5!6Ei_^XCa"?Or[6&(U@MV'%YL4ReW-TQ]f+gZe1o98"jq%sJ^V4c3t+M,$Mo:%,Z'rF.9 %58eLVG'->b\]FqBO[,i[U1gSHjti?Mm.UAi(8Cibo;;qh>,23X]HTF:j?RD]hX+U3-q>5b].<>)X0I*^Q\C"an7@0)jQ/hgRFj %R*I(>L.r3sJK:bP%7m"e+uu6`/-85VT%)gV5YQEJMqE:Bb0s?_f&LG^)g1rsR?VKM&T>q5:fn-_n-"'HJNXq,b9J_D9Mbbg>3UV] %33k43"h_#A:g3oI2HLMtJ[Q)B[9+oB!*](c+%p47/;u',h+"HT=F`iZ/(X.QRNhA^Tl$Uk)j]jn]5,_k.,t'pBV?DN!h-Bl6q\]1 %6B:BV4!CmT`bpTa,Knk/W!Hk-<*9Fh1RYU.laRPiDu5b\.A8'A;)33:q$A-7QDuHms/?i5ibq%J4,RMh-:Qb2o>Af\?Qm6LbX',\`H-8!&i:@N)u+oVqp6P(I3%Y+/X0?ti.j %SZ6*,Ud?\Hc.`73#Q^qt9pM.;":*SeJ@*AJg+G]Km)tXi6u:*4hq3*R)tL[faogrM:1ZOgJMNY-'(>mb %ok/q`k":MLMNlG<@o0RX1SLY">@n5fF`D&8VhXmcfq^:&n*@0Njm(#gVO*DkM>XE(%=2WS&epO/hPBo. %qG8NJOe/Qe9`$[?#q5.NOklQZ6aVD9aDh27Ca41L#L%/^LP2G]9K=Jt%@6,^Q^25ki[Pc\5L#J\g %E"E;e6.1M=B=!0Tg'hKuX6HkoK[CJI!$7W'bIsNA-66Tij2of;3".;]-pCiRP5,BMY">0C9VlU$8I6\T<[OF9jp1+n2EJ3eY\:f %P\;6mLIoh(+$sE$`ke*1iPd"o.A_tA/O1$YGq$@I17H`AqJ+il<]:BhDDt/;rp_19o;JE48,V=fnOu[n"&q6j9@Lcl?Wk5-gV"Xi %0ARn:j8-FG&W9dO_a@LoC7$4.cF$6"&U1DAJ59f6=G!Vl\DjO<1HeP( %^Z!1O#Trp].78Ql9?)e+/cd9e@Z,o]&S#+Zhckf'HR>a_&Sg$U7;5JlRWE5$Ki!;Qi*6V+#B_b3gBXPf7U+Z@^b!J%:lDbT %7"2b8rdh!oRsr%#j;4i.ZT>V[0LmUXSJD"Y:!VM5mZNNl:A1A?&hHDRgks=?EETN6_S;`S4Q3e/&O]eB,gnXpb(qIsg*0$H;RM8q.!ScoU7>?QPFCuHn`\IgdK$g?Y9_"GIRHk5U@^'0k[ugQ!UV6F_&pe!PDV1b`IfXt %:[\qp]1%!fOq7a*,7Dl+o-.$4cO,AQX:[%E\Mugiha&/Y.`4qUT[:7DFj^qcIf:r]O`WP`M/qmZ^``)6\n4s#P3JXe.r:B0*9a)! %7*P)#=b[G%LIi/G"4N#3=-r_=p8&g`@hA4Ndk]J;4DJ>X%AP@1!e"sVKX'QYS?"KYJWuX%0db:/Qhs0SP?F/>@%b`cdC$s:di/2# %faEA$jKh=-'l*fbguXjji7MMhGOEuFEjF[ua7-%5]]l=h!7iVq/bH:hY3<9B?kUA@6p[bmde%#f-X]Bi%:3@B/9N>V8P!AMDPGK? %A71*>'G=c8DEq#/3G69Pi<"!WE;?AkHsQCka'FYb,@96AaV'JbW-Ok73ZC-Cl]!bR@jOLBX9RTcdVY:DqhGVN)/q>C#2i7-6BcQ0U(R %b9+P58g5ab+8)ZoLC)-u.6;L-/S/u^0a/MNA?[6lrAS%JJ0Rd/=]:C4dAP7#-kdNgA>14jF?NKH/= %?A:3!VJVUk?mjcL-9^$;">+:"+mF/=At.Nk'6f+U1,PMBG=mNt2\&ATH*krFmbJRLd^NY=GH'&KprA#TQK"'G[O5/_8ZE=/dD3/q=fAi*4oJ3ZPu2:KG$G3V2=[q.n!;.@"5k!LY[)^?S"P4lt&nB?&:j&K6cs1]BEFpOP0=IEDA03nR7bUsjAmaI]YKR2]lm %#Aobqak@6[/@+u,W`Y?;P4f-!`ghJ!!B>GKfE^Dp]HVQI]AdSj@gdNW;B8_a%57$4bZ^4hWtNd$p#Q6Qp7N8jl5[lK0]9:2n(GL[KpI=nJ&5S!u'ZF %%bPeN>:&::><0PZiE?L$>U_6mCIsO@Dm0nk\/fbXkqE2A)J]@[#1Io0M=diD]rBm#q5k5Fj$fP>nanE2tNWa %7*%TC>lXV;o=erI`CJ\TGMDd3#ge4,WO;&9Rsh\VFtM=K7GG?_:c#SOhZ0btn(4aeX52D' %=`>eLo/>G)Ml(_]a7[+'l2p@JZC$QcW1(*i6kD]A]Dm=%4Mr0GAfOYOI*QlY!LJ;[C9Ril.@cm?NDnh^Sg;\7UECXao2q-*ehn#5)glL'<3-Nkg]%Q`93QfV=gNV+Tpptce %o5Y!Qi1&tP>jouNr=8O^S*=S[nU55g1WqtC%:%@oT/!B*dgsp/2j<+URJD5W?%02\Oe;%4eV5a+s7*BjC9C1q%O'D#(Q:8&cpJ3^ %%abibj_@H&/mk@;aIZ5j*MLF42H*ae>Yj+Y*./C.d8O7p\k_&AmHK)T$P@YJh^uQ[hqGB.\L>kaB84mhbmY8HN$cI`6W0TQc.;8` %]C32#g=1I.g%]fMEW9$gGLYC%65QI2>B4!S@)q=\%i-*KSZq9Q9ou\To(a]h%9kMc(fTPhg'#A.5R=45!l=YeZd87%S@DYV+`I*F0(7^jO)P5a=`t$[kT5>(WHI[rCL4:m>]_\S$!RX+i)iFENJ8`\nLq) %H1tqG^T-"o/THI&n?SO4k!&F0@d&T%*_AZYVP/YGcnIK:?\\%gqM.LLru>&R>t',+3"q*R$HMcsoX22g7-.Q_b'4u3FlBtAL,5]d %C\0NAa4S>'a8e;Pas0HGT$%gG('F5$L-Tpi^(4j!iGm[%a58`WP%mnuQ/a-K%a!$O?9s@gEnSClIKI-$23&5j@8D()caJJgmkic" %c`?g]J2mWEYa\hN3\gh9aVf^!j(-3^.p?Nj10@3;\-Ec#+HhJ"i2K'd&m+;8+e19RMLh4L\\\gfC5"GI$Uf(NOuG'&-lT`.k@FkT %TAjiBR#PV;O.f&p&oC&e+XGGS8[8t?l^Wud9R_&i:%'R1"e`ARjTPO0P\b^Bnjag.tHW1nI7WQh(W@t'J&#:)L?i(aA_r[9j"d%>@P9VCtPl;&.Xp=UB[Z=1Lu^PDihsO)!:5$,?dY^FQ]Ap %NBqT`XahDDm(5:_coG$!jEr20eCT.]IOk*ms>QV%q$$(j#@qN>:h;pL2(f_\!+.d %FLYri*`j;]gCiD$97D`Gi?adt)[9fZ4M>W1nM>b,_a'NX7^0EqP]eJC[>4o+1@\j=]XYQQ\AlauI0MHf4%0S>sR'#MPJRRJ, %ij14hE6N!*,XOjE'kQ1VoqopI!jeX3cP5n&NkAZYB3[u9#5X %eEk!#h`L0kSlCk0he0&.W'W`_"VU;G>gc&@5gaHDTQQk!R-]ZG6_)kXY;j$C-:fmacFWZhC_IcWUIQ7>)PUOPfc\5<=GOUp+SCqh %7hk#=8@1s/_AQ#"^;LR9U%Oqh/f=XWEsT.g5S\f0i5Ojcm;<^:RUOGZ0@9t_+1%J&TX5D:Vq#a-ZW/]/_RPjZq0;sNAK+*"#r0CI %r6XbOk)[#Y5[=Gr"/+G\Z_,M?+93+/1Y/!#Z8ibcLcBB`L$&+#p`?bdp9#5(0`$7P+iq3E[^&GRTria"o*DoGR!jC?+l$Qk5adS> %+_?FG3$0iHJ/TXYa2%]bSN`d.E*r1^i_oa!*Ehhp6[]`.a(M)Hp-IdX[Wm=Ai;LL:EppQ4lS#j %M`+Dg;Wqm8E+9M/=9NecB/POq5tNJb4+b<h#$=Se?T3*\B8;M+3J4=#UDA`diPZU0hI>OjFs.LAlcg8?h_]-RiD$CXupsB`sMME/sd&FE7I>6M5,DTCLJ$n`? %>2u;KC8TH1)%]p1;9XsBcZ],E`=-hX9oj**$Tl%!]&Tl&YVC)$j6/BIZU`DAN`$Zt#5uJ7f>k>88Ij\s]KBL;>6a"\KFTYtr5N@g %""TP0NM:Zgp7stCd"4REmQAM)^bPQd*=Z.@er/UL."54)G?k+qF6D@Ag),7r\ra1nmOehb)DenP1QqlbQ)cL]Z*FFrK/^jmoJF?* %Fs)M`*`%Om"+5U`[1o?MN=KH8V]NMe?n9+%sY\3lV^PThcJTH[$9&HD@G((sXY9(S$40 %[UVHC5*oa^PL;TcLEX;am%rm3'd5fD#fO>E)`7Z.JE'!d^dmhEY)LgW*..TWQcDZYH9A/;&+%1`beJ!;2m!^T2PV$/-3XH+Xbl$Z %';sU^61=tH0ru:X*a:+?U)?p.C-<$hD>3g6]H18\H3&R=XCk"&'!W9jT=#J.#iO9'!//)@l4nB<3?gdq?fLQWl>sK;S,<`]J4(A&d[h38W9[+:PFg.5g>BY*cmch.nU]^SDd!*f%$.W<)HP9.0oLl_gPhU?F>^(X`BL6!KrJ"*1:MoNPVr(V>4mkUS]l1U@UU]c4 %Jidi"rG4>7pQ`a8krejmVrQ@+h:IqH\9Z2(C$7F?)P_b0\)u._`i\qjjsMh!RAJe(cVj-fZ7r>Llh#SrZAhr_qd>"4VVipZ?eb\kprRuB6rE@\t+fWgd",ApZFOs4@W-F(O^VAh\bOfo5:X4IHaZQe(oM?%2F.6Yhsb# %K*"G+:UJ;%SkS^-/+AMS*.!K\H8XE %`fc+ZnSZIn,LN,7-/!#dl]0BL:Y+07[F]OB76#Y76=Yc-U:o`=o?!0)X`gdI9>8`PG5C<8)eV'9IB`X`GAGFc\uYk65/"tr]&0oA %/R.G@:B5.U.]e@3p&M2+X.5hBAa:,j_G',Re@h$R,JjSPQWS3?@`rf7RUUF039Z0B^ce?rQ3\)=<.qV)Js*nV=q9fRd&bAe1]T\6/E05nMH]UB%"a?S,I`6M`BbV%0j"&f+TR$]<#aIfIY+SjR'6jE4$g^JX[%e! %/`'X48JNWf"Yf?E7_F-^='8sH$KGQJVi^0P>Ebe$GNIlI#u!*#;te=6$[?T=.7B1-1hN''@WqgBiGZ]C(gSZr(f_n+nk#GAONHil %A;=:Z@3p_qD_^HRd"h]PN'gW'[Bl0`JSh2l@FgUOM5i\nb@l>aGJ0fiL08T(!nR"_0,;J(+RM%b6CsC*b[u]W#)?`V"(*>m'S"-. %$+2:9(++acQba2[7!/CU!GnWK:a+o!?YU`dFL(Jle`RCW@@NIM_7n4_oIN*EEhbb4p\T$i_((47G %T7G9HkqgYYGK8MU15QE1eYVW2,*+gu2TOCRDeR@Q4.W_mFfUU%*MS4!Y`?Ps/hr:]kl!3T\>729BBqJ(jJ".s %PJk9;*AUV&D)tM5Fkj__r+9.WL5"#3Ht=j'K#XuJ%N$StesU$^o1TLe#$'KZ7>MVT-b8sKNSHpGh,Wa[kY8`+)1j;>Wo*q\(/a/Y %pl./"4&f6O#IX6?L=Q3dL6,#K(-\Y,Xrk!Bml8;FMg(,U(fbN#V;7doLklZZJ*mWX3Ukf3Wi;osF%G:l?pQVu#5nWsaAKidaX\o5 %928%^cN6RSCDK'mk"#"Sqg^8T5Vq^+ajJ3N]Zs*-Q&#/1WXP0`DKD^S^g$L@29jfN*pG?U7=gZ2p@L=I5bFJg6e^0 %K)9L:FVt@_UbOh6!UN'2VACCbl(SL<>"^05MY/32/`lB\T!3qGL=3M=DM5V`S;/AP:(KQt:t=V1FL\]L&/nFeCVo76cgVV67ZOji %V8'EO67gCc'mB1XYe[A(.q1qGH%/(-ih0CA_8Fj!9M#ULbO1VT]\u2eqCW"uE %?:O'),tC)S/;A'TE[XO?=%fZiq[a>eM*X0F&.6-?)g2Y4$uC&.dncbkbrl&?>KFQo3D8_=bGSf](7#p\%!QN@]I),+gFI=\Z@Dui %(gTi/WD3th:7"I6+bKfVTS_E`N1XX_pC`@b8A2k<,/K#i6>WZ6[_Ok"'U\:$mH9mEcGHckD"/+THXA@#kp8ueOR".`[&e?Zh[g;;<(5Xd.K_tFe9TA..$f4$oemF;`_j=Md?VZGFZL.\Q2uL(B`"DkS=PH2$1N^9E;W0W&ZfE %2qpr+>N%HG-!Eg4p&[iff+sRt?8;*57APr^WIhf@c$uh7fJ9K#8Y4-N,>AB>/k-DRmSe1n87D97r;GBYLG9#>J3#2Jo+=/[XiDY[ %3''P"aCA#q/)$HJXXT;1LO[+X0*P(-6R8h)%:0)VLM?V=1M.#Dml>k2..b?J_E*?JY/3AqZ[)@ZX?)FEA! %?AJ1!3!%1r=gq38aP8S,H?gk\#(rcq%u2bQ"4ces6qKAVGf1:QV=Jk$aT7p6kbYQ(qdODh&(b+'e^ZUJ/40ICH-H* %$WOXu^5U;uJD"^pXTdJ#!!-^eeItiV8@dZj%ed.=[lS=hE;]*N/#HCHmC\.s"bAHV@)Sb.6gTV=6%tu-.nB&9j_uAV#fAhhjd-K] %B=I^k+sr*nR1,$c>W>O^SjG-;1@bk/Z7=2>[*sI>Xo[1=ql"aa$5#g-s&.NkEB0'S&ZRVMp'_O[5]i]r'252SG2!Xa1>`hfpoEO$ %2g"[5j(UqT%RQrs702@\?NBnm,aJjZX,gtb?P4i)(muM/(-YgO:=70GYQOR?hFJ7k](aj"!r.3`^aP%ILkFd6--LKP?3lBaGpZ86 %JP2/+_7Y*U2.U,`LHkL-0=jQS9Jp&k-a(SJ@]**lR(+!)%Ja=!>i`!%JN9H&W%u/V0p*NLFV\9Rm!k;b.3N.[,-ihW7Sn6D"`ZOcNZ3_cJf1#UQ)&h[`L,r;!urEMKR&BB,'%`MqKd'_etog%JocgRmU`!lfEA %QfJ%A!XN/`UVnOSf3tu+0r#'\]oLqKMm$R]l#@UdicM-3$&9Yu(+5a?;2AQ)nk=m`V2g1k24]I\7)qrbTrW.PoXPC2aBB2Yl"sKs,1-3k]a]Ui %85uE#Lhgb+3eNOH/k:#/YnNHtQe#=b\!r]\V&Tkh`CH9-@p0D:8eGCN>2L_)qI(RQ(^MKZdVIF?hU$/9@(+at/1iVVH]1o'HVOU? %[;E38#$?V4)e;q_G4sdT+,uV0RhZJ2p6l$;Fps/'LB5MsHm3QjfcsCYY2=bV9mA.dUtq!>UWG@ifFK %6BD,bc3td<.n`:Y_I6\#,7:@GMj/5RNTm"_fT1e+$``8D0PB8tjg`O\j24u$umR!190qUU^G %D7qsPW%k,6RB@j`mWm7_a,E:D2j!.+7iEq&A;c1t!F:!ZSR"-I2 %*(lBTEWQg4QL'*I^X""/6/7Ak>#B7_<*$S3mb4po(FEbA2T9C_)!BEJ/")p>d_/uT##f"j<,nFAVl,[@ui@]ao$Hr7_";u1"Qf0a.#Y3[.rC,Y %(BRmb7',l\Qlq-cFn-0GU_fI-K>MJ9fYfd-C,>+n2hoPU5P7':?[o;DZM[fr::bnp.p"?haF=cHJ0ME?r:!-BcRLXJLt#b?D7%![4t\'G7Fu[R9R=K_ML&e"-d-)U':LqnFkg&PllQ#Fu1[=%3hWNcET5 %R<9\Vapfj%8hLZA%4DP.0''6QWd@BB*Z8bfTn*#$$/IZ,f2YD.Q%nXcNM83`YTE+j5SY#"FA/R(JBt`\#90^ZEKU[j0/u_cZ\f[; %$:t]!IKWXSR'6`'MPo\0ifoGc.)?IFJbCD^,Va%:CD7ahI,knuFPc^V6hu:58jiR\C0.FOF^qFl.\ctB'ld+ciK8V:TRV/ocGn$I %kKJ\jQl-[kDA3(gN5K':053C=86$nb(o5"T?2JXEZnBatQAE1CKE! %5t."Ij!,B$/7M6_^I%EmDWJtp`omqSMBh"4X: %EpH.Os0j.\:O*d9!lWK@cWI+)Ess9E]]:l*knW6bLQP`.bS.F?;>T;*,(#mFK%h"(`4hk3H^ZhTf=."7#%GV6dk%K$djo9a/<=9_-!)66-R?&e=9GL;(L@^3[u@Es?k1UPL3:,7Bk( %bO[U>[i[(q#L1RonWpscq3i.rmY>#428gn^kLP`kDDN8!03O_!(cY-7M-V"^ABJ%fE=O/E!Z2\j&[\fFT]&S1U>g'\k*G@u3bcKb %'D'@D&'(rrRQYm(AlOp>@"Yp2V%8c5j\0_U;GQ&_%*'6rgX4sXLiHY:LbTB#73[A+"(%4hmXg5\lG[Xo&e""Q=1X*`iu?PaA&td: %Mb[,C%JVl@+XV`[&@"#"@:_-+(j;@6ZrS%>+jFh=0nS,DM^h]8Eln*41bXk^#R(pS*\i28S+[_S$!f7+718BN7PNN9-fbQr_sTgeO!bO#:@BqP>V@j4*3;#6NaXX&E@P]:l*\6*\ajEb;MnfjF %<=u&AGW0'^C")j^bY6=2o3D+T.n+/5+%1qU*9acMiX5NUh3WDo-nco_s=!"SL<&E$es57f7tLI+3>Dp3tp62U)Rm2Y]d %g-oOOU+eM6Fu_FVGn^0*oWB[9&p"_+$Q#dXg5hm&a-%Um1+3)!`p9@_^nLLmHm*-3L;;Pn4"G*ga!^TR]%L9XH]A@Ua,5W0%c0ta"e(! %2$F42U`OXp95HUn)",)c"\O-5+Uj74$DWIqLe"4XPfTQ](*#I]A&_2Gk/h.1?i-Y#qV!AL3_/I!$X,u&TAaPbZ?3b?A=*TVadCJ[U-Z2[m-j\kn+%>MIP@::FLRA+!Gs;F %@iYPE#7/C-],>,6(6YA-.#nPnNKL3c,\\m`%d(QJ^C[Pjmha$`Alc#=)=(ib$e\24Q.>[h*&6-VQol9l>8Io`,@J_KYBT:J#]/M= %>L4s#T*cimUK`*q]itkYh9a0+9nXI`6EnClC`[C!:G?U=<'NpM$n:l^PWlG)5JS(t$G(H*Uke[!0+H20C:qJ3`<7%he6BjYEI'.q %5V7aioKYG>TGOeaXm#HNI^G=RX-t5[K?0Eq`^q4,SDQ]1*'#d@M_9asgTdpY1O#9*SL"XbCHS%RS?\>(LG9MC@ucW+(D:HOE(:WL %bi$X5W^pPd_/"n'5RLpXT`_XJ6jt]oTI0)a6/K5$CIu/4q,6J+/CmK!.9-uM5D(7T@2jTS9J#Rr&r:%Q+1s1'D3t.NNus$#O??(C %Te)qMT6+R646%JT"%oWu-)7#^@2.P0-[@@!&%9mh.'u7ZSc^;P?u:P^'$#f=p9;5]V%M*+FFKD!75EP#7oj,!mN(Q@_=U"uPBb3` %#q@4'<5ZTbT0&3X>:"C`o5Tl3P@o>*.:*):fkXIjgV)>BOP`S=t>-46T,Km>p+V$=ceecEaPH*Y^l.# %iGq_LL)H&o!,t6ju5.X=IXC#lR^_i>@6EeJ^^6o)C"f;2iX2>J[e9F;fpae$*9_-$RSD`DWP++ %0#%)?8$fJN8_mfWGS!RL=TVQli0VUFDp_%[qZV;XY8NQ"poQe2FbtiXFpqY4D_l>aUL!O04MCuARFNm$^?FiBs0M,26O$[YG*EWQ %40R#_k!UP5'[E*&<9L\g3O)IbkKeju(#C*,;U,KuLJmZc9F/&8/9GGkU %j:^hCaMcrV,H*4%`Ml@WGX=4<^Q^bTr6nXc$utGA4DC[en:B,dZqC#B>GsY7:QbmiiFU2#MtP4<[rbN@7/^c#Tb1[^m=O!:W8B'r %dN3P^JXbs`YjB?iba;ThM2,A5ROp?VkBhihH/NBU#*@l$nNt%oUP%e3Lfpq->@](,D")$QIVLl@H %UXI@cM,_,.!gZ-K]Lqh`PGU.TbAu(?$bRFU_(ms:l`+>A6)TT2bbFWhnZ2o3V@-b*HDAt?aO6U&6/ES;Z`-KWFSgXl4q78tcd'_] %`:gQO-sYLqR*3oM*)W_/fF>?$34GOF(_rh]A`pQ=lV71Y9SE*`Urtm^QdSA\Bb'I=(JTHrZH\$[^YArUoZg5BndN:9.*Y1Xi(#.J %=\Q5-MNqVGEhMd0BSEkqY_Ec7@TdfCbf)oKFusPqjTAPNP>WApBjDQp'*0XI(d)e@VaQk,H;2iX+asM,5X9psU(;<48$&*Q>;:5A %Q=u;H7kU[\rXBNKp)59n@c?B16W;mTNpB1;#KpM>G$?JO8RC.COD+VpD:?78%M"23W6H02I0]0sHf-FIR]Pk)"$ri'1if_#]aKb!(PG'/!V&6)mqM%OP'_,M'2! %I:p2PLmPTj@"%/EHXZl_%#FMfgjVZe.=kj.K&?>Xe!&=gQK+ %6-++"66oF)\B'[JAtI-R_@h#Ud<^Nd+XC5j`$n'F%VK"7+M:]Y#E:o/J;-8;[6Yf[mo:7\ %"i(?$%F"]]fJ1[pe02;?Ai7.4F1NlEfY$EX%k0j1;t_E)D!-^<(l5dDDVbqE4pI=\QpVU:GiE&T;GP^\q"knJT8NBYQSr%rWm1.H %OCug'X6fe?/B!/]*^?^Bj=F]Ga.A!&=HZat9&tnnbcg('nI:+n"JsmG3DEJ+[Oi1;+rD"**PsRrHk9ME$ig;bjIG-E(!!=_$raRB %+C4!;BjLCY#boeUC0a46R>SAiK^po\\jYcqB)S$r8JD?$$q\(O(;U!;bki93ji9+k"N^)@82EO`]%c/3ead[0R&YgJPTQ3EJlS:o %E1jI?>Eo7ZR`.7h?)Cu`+kgUlh5n@YdQ#ogG7n#sACu[6]HPa\>m+@fgm9V7=,MSdT6^lf;tUlhP7q2"kX^eW*kOGuE*ihEpRFf+ %R3mt\Pd7&UL8Wmnd-TlhW94G1U]u!AroL"7muP'mL%dEGTJaP %&e,Po:pNB&[YHFpBG\N=APFjta+^ILcdF>s`2f*ZKuZ\:2lu9%XWLaa04DpVAsg2\('k.Dg3jkDY@JEXa`Zl> %[:1`0SMS=nO4RS_K6LLco1AisumK-h+;.pn'_a1kk.`#84( %30oN@#.9S0b?a'k/d*c,B@eU*NS,*Z=iH-ld4f2pern\6U6HV&a/TC(9YtXdCpIn7C>:aFX&RW0_468A[2@?8nm.PR;KgND7Xoug %DCoscr!#>TiPVp0$e$)He3%k-jsd2"F3sJZkcD$f<6`D?0.%^qLSda6hA6[:@XD3t,HVO(V'4_r11rEkpN_[b"hOFEU\27(S^N+Lq[/nHn!gaE-TFO:9pEGe,&g@,S"eGUdPt+J26IU$h5D/pM7'?1e=pZ\Hh(9^RTg-Y5#h %QTP\mU^t9:_$[dODaP#F&>.T8PQFt$5LOlYB)jQU,K@WBK[Ps(4reHgX9\l)OFP`#O_^GV,FM$s^+=RpuH"[-p.d*'>;#6dLK %K6#!&\aGL%Q&PG?pHhfh+P^sG,I7l@Rs3s)j]FHE=+cZ\'VnHWWk\IROm5^3V,2j\p_2UJU.gi`#u\[Y5Z%kcrc^:):VY/i+gN:J %Q9fEi?u7o,pn'Uc6Un$?@+>ULS0%.(N*9$"q;-?jW$n'R7?\o4eK-D,e&r24B@`/%UF"$#MHEBh!%JH.D?Eq(l@A\o:11=p*![77@WnC0MN=Y*$j+-*i$s*IWgc/+^M%"[j*^=VKR'J&d$4QMp4op9L;gp01N0#?R2b)Q)ruS=.2E_E"D'mH@JJd`4 %r;)NJ%*Lps-uW-ce<2)+)NGBFYS"\h?IY,L97^UW*2$]8c5qu1,ImRC9eejq:pJ$FBl4C:j:l4FntYYUW&s>O_;J,fG#fG$k>W]_ %66A0kY;G1s%$H1LGd-JmBh[AY\?>KFhnb\,g_<73+pj"n.Iu(`a/Q99eGok^_K/S2R5U!M`<4/4e`ielAQPdG0Bs4T[f#.5,_Ce] %:u70Mis%m-!eAs+]-6'a\s>dIeo>]bKauqC3g%8:hBfECKY3JX6uD0MP7XAhTLoWU;g#jMHVJS"b%.iNd,JQ@,H'g(P@XFG,dFAR%4:Yn=kV[m=nX2dUDP:53`iiP8Et<_P/3[&,?2:#Y&_ %,E,jSa,"t^-Olrgn>o)ElCDHbh4+#I<1g*]fob'd-V&s,1,qpMXKNNG"_4m3R:^NT!G0CoVA:[Fd!M"`S3!/T.Ojp'Ii34!mEF%7/l'XotI/oT[,DRtC''1(AO\0<1Q5JMK,&!q_i1aU3u@n1tMH*pQj %=M`Grb*8i>]se"VQq!+Er1Z0r9)*&;$2jfm#Yg"cpA)sc>VGTD]W)o&Bl9DYqEFKO_u>3_Ik+,JiNftZ??A_2YdSlt$0Cb>AG%(: %]0A128c@o07QtK^3jurK;*]u?33'\Tm5pb_5\AuA"$a-0OG;=NF%6%\Quo3b[1N`P_CTSuf^E[%+eO)Nlc;0G8[6=HNMZpt,/NB< %M=Ct&O[iLSRXOT.QMU\8_[#`tFSCfFif;Hu,0Z$dgi %Kn@Tq=n!5%3+hmPSPY%$#TP/Uo!^lK,RFDGrS'^fr70j-qrb`hbFeh2hnN;lP*pWbco)<4k_UBGH/k`7e_Yc[1N;c?UD+o%`"2t56$q!k>H3*ku,26dYH0q,t+hq+KeBDBk(iiiS%*l*!0e*;V)Qh9FoUBi&)&(MpWb2le^Yf$bSDr:.K0]fbAf[A/Rga`IEMmXl/>iERE?@3]^&3"Y^ogaNH\AG'8V %TDPG?9UPp%fY*;]j_0GtVN\c49B$c\@D7Um#_J6eC900C7ZN2dlZ]Q%;1"5uH?OeMRdQ)!(BkS3'Qu$gP2O:VS=rY$"23%2,rQp> %*iB$k9C2J!H/S.Xcu\rHig9YOonhn^/'EX3NH3mB2u)#4@FipXL\%!:"1AKpX\T.KJ)qAWeh4q95S]%F8\n5/XV(9_(_qDs[6K(Y %BVr\h9&8\Kknf`>[Rt0U.h_k^L5mIY'XOEnmILXj0oW]:DsaIN'op&PaEenb^tm=s$f-(O%l5S6kd+P3HAkVI.)GSE.=5Y)GKgEIb.qk1c&?4cM?lr%Z]%1]6p1d3XO(gJk4R:'NeKL$HkdtV=@G7lhPXL.G"Ck5f(MVSdrIQ.hdZiYe*MnSt>quahO6+KqUNV %jQ%2,:Rj(Kbn-\C'#(I`9BO\+eF\("VO-f4Z*Km"@80`O.#G-n7",'VGW>'anBgaU3Sn%:=F6VEbKa4;*h!<".;P*=7k'aGnY;27 %a_1P96Bc3qq:FMO#AF.>k9A\oWYg`A,t&#!jQ"&dh2!-=i>g,.lps\iAn_Vn2;q<-I?*3013GM)P+&;QH_1GHSc[oZDqZ,-Fd-=C %/o@:h7L_1EXO'H)HP?Rg?eJ`+Qh#6D$:'a[r7JA'.^cRIF/Daq"PGdRKcq[OCO2JP.cNf6rNT2!CZcucUTU_N6b:,Q_pI-7.cE65Y#`9CMi=9O]H-#bK_(d03\0q93`eIt?ERFZbVN!hY\qFZSM:L54C"O2&F.mk8i( %5UHP-="+^,BGcesRpEq"q&p]F\h'bPpIj]Q:P(]DZqYmCkHk&#]_5@>`$21.NAG./8"4qH %jE,ZqrO9sUEF!`6W9s4Rl:M@ue?LKR<"e[,Gh5'e(Ig;Hl/`Ygab"fd0QL2"I[B7@Prg@)!N*7+!Z&T=[Ym3b&N0;Z2SU8JQ!\mc %gFMCTSpE,Jf4`.#J`*KEcg!o_@n&#KLqs8E2\+T!QCp]1q7VDE]H$($?K=b>IRPrJW/&ZS)n?RmF[1fDFR"2Iq!4NJi"JFVLuVrn %0kOg7q\jNnLg+`kR]"J#LbTOf=:&Iuqi_calFZ=LbePRRZ$4ct=G*<:`bYd[d%.PFCL);X&1TJK_"Wb.Il`#iC[ %BX9Nh1+[\W@.NkV5Br`Gn9+%F!dr,&7%06n7pQ[%]Dt$QQ'oBg7PWoZYR@'5;)u*BmI'/%71:j %c_FZT57:?@a$*>8^)T8,:3-FcRT+Z0\Q6eQ1_lKErT\AT6Npm1q%=_f\dD/f=6%k2aY:,SITrNYT5G[5b;!"c::L)AFQk&nTs_o1 %E/o$@2B3:?#BSU]QRo#a5ot0jgV,i5%l\mr>X7b:d)3>+)f@0R"fRheE,jO`,tE$g^JYZZ/+P\[@.YsIW=s>]7M"i09`%kUFN1UL %]5k)tBLot(]S5g#IE^S.LN'[F_`Lr7G35lB4cl^`h!&AqB`RI)[^uJ;/l+u/1@u=qK4NM`i`@nEUo,=5mA\^*#0m]RIcD?nVM%(X %1ob<-0dE-7_P@$Cf.N2]!jgl"b'oQ7bfQlH\%"\4!Gm#)M7C_?*R8s\0G=!`*8[=Zj$?8a"qO#>'U5CD6O5&sA4&Nf'kUH%gf,51B&*(0^q=N<4:nq6R75hOc.`"1*PJqV8%*nN,.]UH4!W/kE+6>U]#rL?2UD@"DCN_/!csd349R)t8'-UL0Q%o"RrlMP'5`i<>Ab;5_>oj8H\[Ik[GX=TXmO4:7B8X)9[BL6/Aap@8o)L&1s=LU_pEMp_Vk^kd[Y:N,q]8((gB@"1KVGF0p,.hSe0 %#O0UV>GnAq:R6gQ^$4XU+5M^P"#+"o'\VWsR7rcO.a3-"fcloiWd#,SkiVZ=npq)[Y4H:i8Ina<,fWu]>!AM(N5oC#*Cs0EZJ,*K %eLqh8+N?='GSf)ljl(]repC/7'38k%Bt9.&(!G`L-<>PjVPIT?N!jmb6&][ee;Gboem.MJI.7AG#?G[%?"NuMH=-jA>$V0cN5G+f %eRhpi/5'Cl;%XcQflO583B]<=4\(6.2e?!QoBicG5/6Hr("\%`h41O7P4A;U!#0FBOTsH[ZUH'\J=gq>',\hZ5XA!/^[:*-$"_H*"7cF54ElnKMOS/S=('N-R&j<+G1Xi`E!U["2,6>]P+TsG^S$< %cjB.&6@X:9Gba_/8!@L]/2-42L#F>-7Yl``5B.NVa&NAM5NVD$WGH?/gtHH9K6UjF>BT'l8S,+0WhKsm1n=YpH*!(0WEHOTPYcF! %,t[#$E^^/d2e2&k>5k75H7Iu!(3sbBe4W/W]bE %K0a.b)%^#;IdDf''IH/Y_.J"o.I!Bq^(lLuTS0DoJ##d#=i=\\Xi@.aR$"u=I%RR(,kNVOqtDLkMu,O4q$b$#Bd]qYKg[]RPGH7o(j;0E[#HE` %qC@5ZK&'[]ZX^:e+8gjVqLZ+@P`b"e.+UU0C&\utB<,j8"\brFJq]C-igmodo[^hHXGW5XbZbTRA!<@]?Z3eD0BD!5f)31PnU30W %dmousU&HJG"^`MG&'D$mq5A=bTG-oXN) %@2p9[(C6R?UAmeH$$HHMqFq%EWdcJXMQbVpE,7)ga-j_.2=k/%,f9AR0<.Tcp\ejlm^dFeETfiaA/,!Lh6a>6EkiEq2pq7Q%/13L %M*R@@jqYu`KS#*eO1MR7hPpd@$NmnpZEqqQKIidHl8>"U/E_V+G6:33"]V\g*7'hN/)LhtTXD!"e^RCHO]YCh^jD;fp!Zr?hC;UR+ui!!RbX,WDIV(ZBA/un$A;E%Q0(I7Qml2b)t$GY7gRHUJD.(T*4NPn4PE:G/g.K'"e5n[qW9+/BX6(HTCnL$nQ>?[ %LEW9_8;8c^\_pjKemMSW8JAhO2d(C+d@7L %59DqLVKGWl_2V_2;@IM-lL(uF]W`1q,9=720G]HTV1eJucA^Ajn^br-GO'3asrg-k&R#iS+h64@'Qj:cAi2PRQ< %X9-o^[qF]m?0^!feoSW[C=bJ'6Z/eto,3=Vd,`^<'!T-H9;qi#['m*t@^MDIpEY.#;f>#FL#f%kr9%Z:(4<=IZYSp2rp_3Fi,oD\\=rH.KkK[;OE:nZ/s[@-&4a;>OhR072JF %AHR%ZO(lM'Ed$61"%Tl(,VOJ&$\@gh(M8uO`\DFa-6^,3QQPNf.RG+'[rRAIZ`kA-Q%`T8ec8bW@<;n+h[^@IgISJm:[d_o3 %miUeh)t=O^Lio!.C/16s2fd+f\P5k.WC\5891ZfiFo]/UA1(:iQ2FkUDTlm;9+P9%4CEkXV>8R!dhuacaO#i)"'._HS'&bl?`I0R %Z(KJ*&L.QZ-o*JMm\_>sVp"IF'HUQf`=>gCf3)h+Y<.;Te'miP7!;%\Ae*iC_WT%j)CkW\2k>Je'Ah&PZNeUf/uniHRP_&=q+L$eCj;0Js"ZJ;I6i/*Qp88l?%[llPmUf2[]LO1ZCMQtKkRYF[i2h15Cf5@[^PNX&ike8BIVa*Yp5=]MMgbuhLDG?AZ7BmHFbS&M"*,"Q"iEL>#aUX %_eC?<):5f!nF9HkP[c$NaHis.*iuBI(^H>]`5>=c'8lA^kL1%*/X?h\m7]BD8XML'2Ra'Ie&^o5aNd'!&@"ogaGt51dTE_KUs#[- %JhD3MS#=F-`\4U>:Le+XNZg=:Tn(.gIrI=2A[6Td@r=a-(B;%D$ZY&5Sql7A7hP.(X@OGalL\8+)n@9r#](dmq4":E".@D:m\[i9 %TQm)1nE,+m)+KX\d9\iZ8GUh*%Z7#1L^*A(ENpeLKP^kN2&S%1j)dpikdt#Y4\TCsS0B4#qMEk:7BWLobG^a#fl(ktQ5E/Zd+#NW %*Wkel<0nZY;qJ_/(;,H2OQ@SJpnM;^`-2Ko1^0teG&+n3MYScI9]&`d5,%rlq%C,1"i84g>m(d=Wk?UB]8/9Qh60>G!AFt)mk@`H %gP.#sQJg),,A%?*:Q>63[uBA.qUM.^P";^2jfT'Nt[q>T46j*R98,%#`u?;.iu=ia*Z %]B2mR=\WGTlfDOp9ZsH9Aicq\$.G_Ed4XAWW>mdc"us3cd\cWJf?I@FF?MMGOiirS-?lO4o5lk.DW87V[KP6oY>-(`_BfIT^Ksq<1=s33FR'Yd/5o<(Mq6]0cI-aFm,B`GO!!,V^7+5=].@8U5R\T?682&1HY)*gP/"VHD-hk2$@;+V %D=_4U/F>P-Y:EqC5\5[srCPW)rh3:Pe/>f%*(\'7nZC-1TY\HF"R0X0\2j^2&of&'-MRPBZ`C]N>s0.8['&.nZ#@r_Xf,sjFD4p; %AK'/mc[3&IobthQg.gU>.[JM$#5)eU+&!6Qs-L-;gU/S(P/G#,rh3X(OG'nVpP\Z#PN7@L,Dr-J"Vq5l)!$e.#fr_ol=kj"cY`)^ %*jPH"R?[kr2]>uBC[G6/io8qUDJn=]WI?GMnle85a7?s!Jc4A",;W]!.b#P9F7D:Hj](bAf4q]pMT1LReRbi)bE]WqeIJTCXDl!_ %X3ar"^18[AHXo"*]A%D[4EZ3IMnW`)C!5.\AAgMA/SCjihM6$fM1Q;Lm06dc^\!D?hr$KN=Z7KRk@s+Z%WBC6@ %(hhBR"90$!<@1L+kDXLDA.#FNs(IX%m7B2-ELfq\="Im>LFj$9UQBVVC0--5+89J3=V.iCa"6s3OAL6P7=@??G:jitZ,-5UQd+:_ %XnO2BcRS/W%#D:R/ON*kl\=4Q.1re12Z?=m?hIr9(Cb/fa.>\c/PnE]XZtW&4EE#Y %jsP);r>u!_#tA+QQH6hPSH5MZ_1F3]nrArM%!f8]gRpQFHtS9ZZoVYLY<7a?XJs$]]-h=^X4m.PatK6\dX8P`)M7G5<+i%E0%0X+ %45Lo$f*L@lH$kbIG86A@mAE9O4.!Cef\bc^*GQ#i:FGHb#^g!p!Gd-5N^f-#QX))+meXh %CRm3MQ"0?$9q)J>O_t3`\U7A2>m61N0HL$/ph%5"m=Y/i7_g,9_/kO,lhV%7Fm0utX;rlM@hN9smSFD6g=DQ2:[@90V&u6/i$$(] %!LaO(+).?lm_Ur-CXl=]o3+fA4\q-H;R`\%nO0PS*PAtOO,UWZDmTB$;g[1FnEIF(n*frC,qQc??^a>Ed.PM!i$ghTnf(CehXA-g %k;g,0:u*@\*?!aS]tSk7hWJ[U$ErO`p/fU7W)n.B+lB>c&)Yd+IbV%)^$CSu`RAnW6Y#5`XCA:-e!U"0[`e\Jp`8ajo+EKLkE'&2 %,Cico)'+i86u.VE^utGqH`q5P%lX4@=pS5Hbi_-5oG?Jb/SAlVLA1MI5+_G5@U-sM8+hmHhnE=DYPgQ?dSLJ(+KaH6J_aW/BN*f" %IYF]g@\r^pmpc+1QgZ]:lLSXk#1'U]M"I$p1+&9QO0[urb==^3I&k][&#&=ocA2PeT#F1L(il8*[Ni8.NNi=m=349qbi<7 %b0.>FY>$,CUrjcaaBlTS?KY;\G"R)NV%kNPE.4;/?G:k]k:<-^c*sG\eG8eQI>NlmF?BoQLE]jjgNkkWY'E4qFO+TgfC2Lt'Mg*Hf.c(c<&r0Kms/fW^%#'u %.mrPm:Sm[Ip?.\>=!B?!PZ^/W&iq)&6!t&B=Is^I"]I`nDfVJ'\g#Dr[;s/9Y="K#OZms-Oo"IT$4(/=U;Ya=9cdFeJFe(pW %oL/:SjQiC[D&E6MkI\LlR90Ki+jgpd0^m]:r7u\Q\3@7bqPKT6qI*)nKr&eMfXfC<5CI&'F15_T3OgZ$7G6@=P-&M+7]_eqYAETj %9@5kMX"4;MrTCf-H=k39:)1QdBVf/sjS3#mG).Z9orRBG1&?M9?Yf.qdlM!*YK5&N(n^I_@dNOG[!/+]SSQdP-jR-Yr\I>[I[`QC %ejkZ*/5I`o?^!-k^T)F(f96[%14g=aJM5QY(etKALpb?k1RX87^tQlGQ#PLIU=7N@%>"A9B+d)E^_+MO(Z37&Ea,3uX>,sX!ijiZ %(DIW07W)E(@]8/5k9'VBh%Ra+p!o+,-g89\GTEi[^>D)K4k\fNhCYKsHiI,)4L4FM4g&&Z(+h2!2Yalt2f6sO'Bbl/Wupucj*j#b %@"83EVZ\WAnI3*HQa,)D__'\Xf=-7I=-jeZh[j9dYHb1741*^TmZ-TOd5>_V[7_lIo!joipLMaB %o+fudXr!5P.EUa7?Mf)Va*6-XkE+#3e\Fc;-/5$/c0t;eYL']=?+":rtlLH46b;++t0>Drr6Mg(tUY!o6Z9gajQJ7AuH`.bRAQlo#j4KReAJkEbYFs-g]Z!gHXi.7$Am$Eu"4/kX!a-L4 %M2JuIFl#]WOSQ2J'M9V@.r!kQ"Kmlei#;]$7qU6>CA$8C#QrMTK(d_L7lW`WTBjMTbI:aQlaqj9Kq*=ZcI^8!*)7Rb)NnQc/L-JW %bs.U&NWq^!:"*`kdNL*HhSg.#Xu1(e<_PXpTh=Kd\k+o0dtW9omZB90=RQ`b>dG?Js83bg/aX+XnK,.-%KB3JTcjNZElJiM"=Ef)NN9pJh-<3W[G+:U0^&pZ_Ra`oN1>b];A&bf>WYCfZUb:,XLinjdQ=J>O3Pfo_g"8?8cTcpj$f1F?ie3EHLD %"T-5C*Y:*,F+0DU^LL6EDFO-?kJiC6fkTGQ">!^)IlLP:hFY%iX)'hDI.::GLmA@ss-3(6;(]M>_e/@QE2j:IX7dQB#l`ekdE4KI1:_=l@gInd);G0ca %-)_`FoTLB8Y![YM<9`N1rWt'm8g=.EQO5Iu+YU#%0/rC>+J\3aFI+Lr%RO;n!^N2SNetU@P+-[je!+E9A,0JE[ref5*FiQSWl[2/ %@pMiqo5-&;RN)COTA)Ct?4d6""C,QhZQ!47n"XtMHXm*iCZTSGAQQ3TtG#*Z>a1?p6RUPoXK3-8"ZPlt"0E2GI.)#UVjnLHj^cgN\H@S"0kB_`\MChi2:-/O:W%pQ4lm4Q8IB&=%og:%jULLq:,(,rU9lF$Uf%rK2t)L5=>ORf>ctM07*H^+'r3q($d!b %Jsl:t_Da)h%l386\VlOZluhGoRb)V^9oD,*/HMo3k:F+:F+qrZ8q^9phKu`02!/th`tUmc4S.g0]jk;$."+V#0\f:Y^>;WLdA+5+4(eB/Rr,jK]L2S>EpTEX5p=@=+e3k\JKe9a@lHAl>QZ:5Pe""t[*U;N&G/F@!m;njt[C#85`_ZT>ojU+f+FB_#k6l`&;TR-CcOYL%1;?%gSgZ%7*c2Va %g@*@f+3=6QGKrZ*dim*-UV'9E]-@+jir7G6HJJY,^o/^52&4j9pGD_El.7bPJ<_)l/XRn'nIt$,;/+OG0?a'[>#G<;D$b/5a6Ge- %l7VmYDm*Cq(JTEF'abp18]&<*^W[F(Ao7'q8N=71g.GRL);&rZ06LIX^QXojBS(2OB5&\)Z310CMkAhiS`j %j#O3d/,If@#aZA=a^Z.pZI6'V:0[,JmI<*DXHBpqkC/:5$^FtSF.19MZ0$q?(I,V$8#mT'TF:$m,<^bID'05RG+#QCq7bZ&Q;/Ip %6(YUMR>!.h*4KJ+CJ4[*2Fp3l.q)-T^8D5bJikA\]f!p3Y]>235)*W? %:]\#CbIc9CIi>kh2COcZ^:MBo]E_Q$$$YTG'BI760lfV;2]B$$m`/Q5>`UW,\m6NBqUFhd%,RkZ?C617Tis^/)LjcYjs9o*ri2*h07KW7o1k%s1/b(C`+M!..*_mC1jHaD,O.pM43\R)FgjfeiE7+gM>2ZWebeR^%,XfB22akXHHiI24HB/5cJRG<1%(Z= %YC@E=%:J`&CYa9bS\[3[,C-`g7W5_R&Xoht_aN)f%!k"]18X!t?$gPkh38^4&DCD2O++HZ-"RK'-LJB@lWOU-F?),Vesg$,[aiha %HZ6umU,rXrC&J$/L0!o"L]G?`r>Z>O/!C/J#7.-^FRG+N^@hI()`itFG$Ue]kel@q?=l?%g^/CiM.MuM(-[Zpm@EDG-#6TU;Y6ej %+SG/&'*'Ks;5(RfY0YXrQ"ql5SSdJW$4S)@k6Ktaas$PdD\aEihJ/#fI+[=h)MfSSj_;WtIGrij[:$[53J5t\>/jCgX5D.$3o*Z-X[0#pJoiN1lV.lA:NSMri2=+jrHU[]er\^26PVZ/1f.HBa-(a!H)B[q$\&"dj$na`7.V*H-LGhh^@]6cl.pOad2^Jllha&5?JhdWhHTZPIiiB>O<,7n.1WfOVh;EiR89`VVtQ(I^(oN$"+2XWo&L,83K2H306CWe %:X..W?X4g(ETeP6%]!Va$VbtX=ATVPm%p-U\*Y+Fh$`;O,2\Zj+"U6,*)X#gS\%k'^(NkM8C9'/YTn<9-ZuNYFJKsglLu0VA3blBe9;NcR?QG%iZ]N %e^!J_J)S50b&Lh%pA93K^@-;)ko1^"XTc&D3[+IAGCB=Upl'!`'`FQ%#rY[@;9kV3>L+\B;]e3Wg#79MhYpS`miG0I-i73fnk]7` %mP[U2-i^n:J^>gnHL)C@;;HLg9_k3nLjH$VTWk&I.hf$4OmV1T]onu_FfjRI$i;IpIcu7/L:3t_CkVE0Z.AdWT"UIfqjtpVC$k)* %;GB6RbNEu,E0&kWo49hqq\i,mR-.?#m*,9cQ^R\O4iG&)DRr%QL0fK&)K6&k,P[0h7m#%);\Ya)P67 %U4E>#2_MC+iJ9fqN8^(Wo;$g.cSt$N,qB&$=1k?A0m'rBeLJ[!ZL\rQ)#g);Iu\oUm`+=+d._kh-JjetE(eIHDeQ\-.Em_lD.e$IJ^GK+mk)F3A<=>8#<_^cth*k[_4(Zud!ftEs*$fb7mGtpk, %$$59.@3s;TY4)P0ZN,fM'o#E:&*m]jf?+D?/f\4SSHZ1#-qAEA)q$rI$OkSuqTc'2W%QJBIM_hn)s`Rajo`%ghbtgN?3]oAPkcBm %$OKG`,=X2QlPX7G_1)i7ZPA]tNh=1uK0SkCEAp*1=t)oL\5Dss21[]gCa-k>["+r02(H&qI.oGDSnf9Jp!^_B%EUU$8LnRl'mcU" %OZ"GmZs;Ejj7TLYpq_9`>]4?[Le0QqqiJ(Z)qjED9sbia<;=d<2g9351EQ#c3a;%IQpG; %BJiKn,i1JDn):)I""mF3djUZEj9]m7Z:dirW32s %,Pr3MJ]A6VDq2pFFVu.#EP8:VkTjfIf\j6*F>^of5@G_ie"/Yp?PlNV:[7SoUs,)<'REjOWlNZJ0=XUTj`;i*4]Eq]YsXNIVN,J(SsQ`'m)+H%akFYeU!b %AYE$fH)$i#bI@H6V)bku@EkA\5gpL,*:0M(d'ROQR"YkEeIQ[g^VFAfL"sT4$p"_G>=E0J9f/U_2l8cd:\CYp %JK_rQu*Yo^5jB:GRVIUESl`A'l0t!%4Am?`3+7rW+8!`^M*M6ML_)cb6P>BT]0I2f"D5K0M'HCU=+JRVag^8r\gW[GoqnCa'F+1(e6+1N;"n`,l1^DEduq6h%Qc=CG4S %6HFL.A2dB\5I6q7`3G%Mkl %aSP1oBW6;k#U+L&RAns-=.'2L*A2/IgrZ54 %E"eoX0UD:H3q9CPotr(e6.WKHSW,eQ.D'blR.4NN_!GPEG%/.3[QDtRb/ %:k=d%(4Oo0OFaS$3,>C%M"e7!Ps1tW#0M9YfA\%WHL0+EOAo4)AC-r6qe'.'\`BeC,r/tiYYAOI[buA^J%42JZf^ab&e<)bq]d1Gb %ghWD*jdM*]`C*/']P;I1H2d@QhWQXu;/Y"=3Em=ic@2MGF0Tb+E]Y8iVc*6Afbs1oCiqSYF+sS/,M,LBZE#+mjFof_/Llo5]G_/HTN33Q@a %!BUQg'J$`@/I?AH'BnsY!%:+f%NVsFLV>phbpV*3;.Z`NJak0'(2dIHjMeK8?(+k\c %0XYfT/1\`f*>\ou',&,tAr"E-$S0$Fc*HN=I^U%nYjIXkB(u704P^DB%T`d$HeeX44pW,@F.X\h19oJrD=Uon6Wh#5 %jjQnNB]^tWbR7)*E41oE/QK>#^VXLOm"8UkO,&r[#;A*Xg*&0cTVKsDD4"E^ %S9j"8b*E\APi0NX!u^3g-+-9&KF'J&ZFCpm$1n4%nbO_\OsJ,kk$SVbYXS't\ad*q4UXoDk7b;YW((=,,+k?V>:"d*]!"RV_7!30 %gG^NJ,FSNlXDka8mV2HX7'LnR5c1J37rY>]-ripJ[iE3?r$"s#/KX#g2kdK]rMQnB^!7hZ!(gGcH7(DnlN]$ig"ih;+*r[DRB)-3 %_VD9V(+M4N:(9JS7MY)U`d-,/r0@&W1a=*(FkWTX<\Q56A5o>tG:2F[3b6/^SuK\DS=)*^Gh!=:J0QQR2dC$4QD8uOQD8Lh+P"7X %TilD#W0D(nDg)uDMiUGKZt0V5FOp"4mZN!DduU@ZGE>C#EjF]F3GC?QL'$;(*5(\?^>qZm(e\+Ua`.74)`+R5nnCJGgQFe7pjBa> %UJ14Gk$h4T6dLn;s0?Ium\drT7('7un$!du()b>a&YU]gDqf`=,A=[7Ma?s`e;k(`NWZ%ld*%DTJM.7bM:$9E+KR9bS39&g5HTI? %PMmpk"e.0O]Ika4>9Bhk0`f#R%p\lFNf4HnenoLW)bAWh&1>4/Ag5\gm#N5>/-br)<4Yfh[X)r`VB=S*d'PrZ/)GL"#B#aY3)3Lt %O-1O?fn&H8\^M\5LJVK7P(L>c?kNA#T+:S2G%9?#\pTYQc"[894:djaCWKi"hhDUi %XDYW)+p/`qH*ZOb''ePo\`t^bu)%K[Uuc<&ppX]TN3 %bGAd.W]Y4n,6>3Wi$/Hu$I<*6T]\AKd!Ika7Wh5U4W&l19'J2hij*:/T]Uen#1G>5"G2NLseJ987OeS3HK;n2m9A[__/K(.YK]@X/\p2lntTNe!D4UDOub)Kh.hg[0P/K9.b4HA93)Ab]@Rl5IAHpUM#YZI'Ud%;8$R %r/$dAf!=<786WIe%E36]]uSVAdD>.)r9-.%SDOUs>Q`Z]68rI@%0QKZB9Nk-K>mXF#L^HtICYsP/;2K?%'<\TL@+MBW'\/XNMWMi %:.;N)=@S3^-=;:*eF5afO/0&)4HCc#ie,`u^s?,r_of:E":#"\<*?c;dlEDI>^QQ5l=7>BrcLn`prKY?R)sR"-o';^_95Y&7&89Z %#fGRTfN(I,mm<.ujoaNL[lQ%n38*dib2/#=4:Y]Y)^/%;G@OYYK@.I11PXMceVU-C1:E`6-WgZ\ %f(OAi!+lZ:D8nSG+b9@"3SDIO'.!'7[J&ur.&[kcA^E=0rkC0:VMV03YL&fUce68&W;Q/=ln$VPbb[VDSb[A^?rPQf'-Z$O&RtZDh:m;V`cb1b@R8\3A+liFSqSuAJFUgG`QTE5n(AcY5`QL_i11j#K-C5\;>GtBm.LRI %SZHL/^/U&u%MgKr/RWn"4HZ`jlTba';3&WB#m.t`'=,_3P+I-gejdDb,+D9_59d0l=_hAf&kb@f!F'Ts:?HN*gCqF?6PnXbalSu; %DhU;D)G@_e?V2]\aQd=o&]G1LN0(.aca`l=ch5bYnd](%eam"C^?l_-P7UPALNLO=A/tE6,NHmnenC?iF,PjZKamQiG/kJODqZ_" %^V?jQ(g>aBIG,sZpZY=sXJ5UX[#1GUJrN+jd>IYnpRhDPp%43A3Qe0`2*:JWT16=Rae$62LMbpokWmQ6$[qbP@7:-I[cFa'IC7r_ %7q5SkAm36hla@\Wf\[[,p@Jdb_UQkLrf,ddHhB-aii*GAht.0;kGS.RHLLQNmCElkipp3?#7O(Wmp`J*2ng,fIW %dl!`cf&/XI2)LShAT4,!"d:61K3SL[K4!]?9#M`^&K`k@C>3m83r:>lgnYS$n+i3a*WVPfF)&Bsg0fbA?"nNd?t3!16\"O]&%`t2 %8fN6X>(e3GQ2CWfA8K:#,$hEtPtU$b6"t<'5nDb1HLoPqXh0Y70@go>mHoQuXB(*lGlp/CQ8#[>V8kl[=FXi3g/)%@=%i6+IReaZ1;/r^@XXeHF&Tih; %.KWs/hGh'n+V:1uS"Pii(EX"eX>knkA#:7i#,StAYlQ.[A%0[EZbauW4Ec'6?UJkCqlUZdDI1'3NB#R70;J'4%\;s>RDT%V,bD65 %Q5L$jHRUd*>Qe(b'b4=:6VQJ!gpVVJ.H(2Y1CduY0fI4;?$8$g,cg#$=g/=T*RofIdCPf[c+3hUG("B&J7(guD1e32"/r$S-FuQW %<&-IgcN2/6UM%CNX?8`c;",JXJO(pVQ_F35]t<*uBD%:QRYpm5604L=P0#-Z'+qC29P3iM'WB=^5;>64>:;(m@;6STo&9$8#p<]) %TbuBiOCDMb0H?L2E@CCJ"3>:D5.c"L)mW3$M-ZFPHSHI_0_HIV7sqF=$J:@l^^;1E]N*T$SoEK//9(A>*8_#e>)ie>i>OB@Rc'J3 %1."D%](=o#FRc-bg2<='3%)7n%;GmMZQ3>+mhaS6"rP`X*-bSj?uc:LU(a>cBukB3NY4/^2j7!a3;f^ %/h\8=1u'Jh"F-gh7:FqfbLiGZ7cU*Pn?\K3LcEhA`/sD@"7-)FUC(i4(c^+(].[^&L8:ok0UAlo$b6[5>F)tc\ %_n!g?hZCoPcVpSU1]ZdtQ"17.?NOC6@j`r.e?D?h?@9uc`B5t*1Gm)o%;%^-qgqos,&>FT$G-nndr$^9!7aqRI*AgmbJ?e35cee< %5+/08Od%CIdOYjhM#e'(Xq9;WR?6ic@sj&Ei#n@hA%)kd"DnW[q^,ML'+Fjr6>msSK_S#ndRW+@!:rWe>9M)cp;*3mSl(Iff$&N%QpZ(Z$s#W'FNYd3gK&hQ*FSNTq1U,TEe]fqACt#S?[Wi#^tDu0ejPgF'J#pR %N?T$XB!.!?SUS`E^teP:)m7D9g7C_Tmq,15HCqZj+8!I4ki%Y`@9F*Z#@#oL]##oA?1)U2I)0`-Ia"3GW]^L&)(Fo-qXFXF>QuG# %pgdK1p`&B+LVY2.OF],*X25_Um,#ZXBL(5&jHNaJL//XCkhb0GcQB4gb@NBELVR&C-HTp3cFq&q86ga%bM6WK\.2PFP!uZj'W._! %HHn=[o^$WgR_p8`6(>Y"Q>1@qMX9E43S:UIn,@c\US9EH&Y_uVd(nAC@WKs3KfB&qV_po2NB1G2m?.-6"-Qo$2`qNTJuGeW^O8\N %e3:-]FK_**NS5drn_4\^G]%e.U>V%.&3@L(^XE+hhKD\DH?35%Dbn^Mq_*Imo4:0jr%c!7`NYp$-[)nfmLL*O`V"N#_T\"r./(Pk %VHh@\Nb!U%q.mR^3^C`B`$#DAiO)bHV(\pRWYo7:o8.lmCfU:mr#pQ5r.p:ib&2?5@Xbrg%mR"gcci# %Tg>Yl[eupcF2:u+LrV>V7>pLJMq'&Dr;>nIgK(Md$\u#ISgtT;1_(O9e)g^M+NSnu^>Ti]-1g2Bc=.]ZKoqhs8 %_o)G_Y5RB:,HCBsLF77rd?*JBf="k3P:?:<\EW*jjjFea&!*:i*J7jtH=gk*S'4$=hKePN4$V51bDgX0]L9/aPm3=[GL*p\5Q-N6IHdXLO]]K5n+J2i(YEL/HME(1,2(&ll?:If/deWcOY95\'`89*cOMEq2GP7De`*l]\re9GI*WlmTR`MI %;V+08p(3k$;WJtZ^n"2*KrJpb(cct$VfYmrU%cm7?EAs`g?=T*e6Q+DUE>sQRo6qh>HD)gMisjliM!X6^(]IEatd='$+bDHLp@/V %;.44-[Fb>H2/L"@pLPfO;mqmbt/C2'S:K!3_"VmB,iPb$*m[t#[SE&b-o:<;iVIf6;(^4^6CVbE,N!9)-ZfpRa]^Q\u1P# %h*9pgjR%RpIoi+_ZLdR]Meq?/Sem"8_ngQ/Z&jK,G*?NRb8`C>mYcFXMI=@FsNL$ %DGh1I,!ahZJ!%+`E.hU>T`Jc7)F&D%_d^HS+=UH`cRk9Q0+-qfqPhhER+Zi"ajA#:;MS]ToGRZ3A)$o=QkhZQ^\[pefVbh=mD[U2 %H(0;+gL1.UD.m+GY_7.2C7!nV*M8g%^i1m=?aZj_"7m"Ls4*_q>MG)%i-]>0of7=:k.XiURZZPaI/'2O7h#i=eVWW6Jk_j'#BgN' %nSu"m%iDA0,Af]`[O=+Mr++W5DI.qRl/BO).1-XrdfFit9P*AmoY_^Zcek%GC@ia)a;Z\]_.[_K+,b]4fCAlIEhRc$ffgho$EIWE %FPrkB<@0L+_c(ZU>NPq[=s[-K^XC!*4MU7I`N\cL:Gb+/j2^*@p")j*1BdJN;p&7lkj)@\HnbKhijnUoU=7>79/ %.C<>^nd[8K[2euY@!75]_`@'Cc>=C]FlE9M,(l[j:W;ebTJI3&*8*eO;*EqIZT@@6Ku2Z56j)s_G(]a-BqCj6#('ekU^iW/[2OWf %oYE$NE?7G7iTB??,^t1o8%CS9k4$2pQ:ZEA/oeTLe)AuQ42s)f[6#^dVt9J)7)JARWE27 %?Q`4C-`c*fnr\,lM/q6P]u9V#D/1EMQkn47,c:Q")T28!X"5VZh;#/iX%^ofI&lGp2:J':Yc:AYaRM:i.4\G+Yr#4c;k:84=(2Vm-`]7S0*!jT/Rj^foC^*o#7IE/6Q$k-$,"1ZWg.IH;;L[KCoZK`RE9u==_mkEm$%[ %jF9?g:uq98WYr,O)`)r_a]m8:HnTuN&1a5'(1@q8ch%p?8[Rki$L!Rf*R$hD*G$U>-MO5EX_*XHPl^d$E8iFE@/ekjRr5/7)R_[( %^WSL5h1:d7VUAr@DJ,AkXqq:Jm8VEL95+l+=E4U%@WmAFXl[I@A?X4i`SionS3bp*_iZ10g5H:M'8)5+%?Yt.d94Z$R\%KQ)6NTA %G/O4-T.m0(k]N%kf7m]8&q`C@_Sg/I,@%=RoCCkK9-3+NHXSSPS`RF+jC"[;5q;2H9IAD@b^6a90V3*1QVER+Rq\_9\Co&9YoU_` %Dg1d2cfJL;H\[erkCP1G9fG1H"G.'#8S0]r/$c"#q[23*oM/T5DbLo\18e'=r6r/]E5Ou>\VD'KS@4d>dUq(O1:>GrZG%oO&6[SP %R5$4mG\cm:/m&2*oBr5_iJ6Ga,XI2aUP`IgR.+ZFUO?PtJBe!c4iYu6deFj6\E1Jo!Fju:\W1&`gPn._Rj+BPgC5bT:Jb3Klf.lc %MaY!I1Q)NNf&N9lToN@=[`Ph=6Kd#O_h-@\c85(Pj7&HX3O6`q+ZD3#&O:f5^'MZ3#SCJW6LcYjdGnJo%+.fkgg'rB=5YJJ34!^P[cd3iW?dGjY%+9Jp=$FlW.jXYHTW$Z %X#BqTM7Gb_1:YXL1[>]\SF"m%r_tR@(,Cg)9U9(]FXm=\l,9V@A,c;ge$+8p3_[uSRkbV"mcr-%2S+m-*_)?fZb)!LU3q%Me%EPN %?*-9'4m2icg^E6Ze50$%iNMgidto#">*nkLm3Z'2aceNQYmdp %%k6Q=D]ca[mAKu#c]]lqrl%6C=768sa5%\YWm*IdCrA%TIHVc5N4IpU`G7]`It+mkN]RN5B5"kQ]iuOYrQGHs&_Y+b!:sh4,%Rh0 %7In@aIcbi2]);**+\qqs\u<:ncr@\oj/ZWXr@6,(2dabbG)9o=la*AogB[_ZG+/Kh%>o.S3dH\l.%IBbm/F;OdgdjV! %`s*K-giQ1OgXN@t=9[S!*;d1$#]@%UCc-J5D%e'=>jt8BPmB]dV9&Z&_r,\]I(Z,")eP@=7Y-K0:]?Q$Qr]O%St3j8D-Fbu$M."N %$GahY,k5Xp7!0/eHA&V^b&Am;t=i^[$\TmTgZ6Wjc9F*,e%jTKGhH+d@fX&*1XA#h??jT1VRBct*rD(jI995Yk3cNo&9Me[A&src-97X3Xr=LBBkV`GhtZiD=^qPDgAC1mLN[dTDWXHj`[;kGU&JO#2O/H5 %)t33tq/N`lYfBm,h<3c,_#(\Za)MjnIOuS!.h)e`=ZY]l<=RUER:Bb!T,b'pclNG+7e(K/iMj(PC=*&0U`JU@i>:Fjno<=m54ac+ %Z2X)]e+d:K%q]nEP8ocSh#Z4kJ+bV:'[B\3e`pf4,P),,fJKoB#<]1:1oE+$*/U`iERUq]kHkr3qeQ/`g/IYc$uY4JP=@Y!+$7JV %TZs/6k%PB+X36c3o"^`1jjZAQ=gR+e_.VA7hGjn"0e;WHb>.\B/[`_?TVe2IYJN:aW]Gn0VG?tUKeb/=Ec"$=JY0h%QYH'!o?f^4 %;bW*No'+f>7]m/.pOkii+pbTeYbt;=AF/R]iOJS6l"OGYEp"RtM<2SUQ`7B-EGQHB/@2;J)8EAmQcDL3roTtc %/.T/7rAd6A/Pg`c#%lLQbInJDJ2(B@nsF=Y5Zfdc,H6=JDGt2Kk18f4GGtZcg!cKL&G!:[lQi'aRZ]PNI](h0NKBc %F`=qeZ`PQXj1X^OMf7mt*OAD^eSI;TF2YXV;U!^R<3DnVE,L(i)Oh0iN6-7`$;6N1o$HH8d#B#.X_pJ@@AUkSDOEd+4S'56ATp)c %UR'j@+h1!WB;;kS;6B,r&I;\uOp16YKG(>iDPS+bV&=>9>tA$uRIAm?-W=%u>5clPs9_b^p[63Sc9_\McE\)qTOkMpS(i1jSAk6Zu)R"=:P_+='Y3=.,UC %O&j'nTmfQV5l@jD\0+k^;sg:Ogc5#hfM*AM/i)q\F5>LY`Z)-=="TqRA$[c8kS)?,3WYrMJ9WE'JI7tW6lHFJEcUiXbrh=]9J%ig %LN.l&I_X>A(>9`,W?qFjo:lDWfO%S:o%aOpa>RX<*I\b]EaeCAK$8]LTg9Q0;m)o0^"#-mPGo?Z>GBKF_>!NItd4S(M"V90%& %#ja?s?,F*].8u$g-U2;aRJ(Tnl$(uJCc>f)Q7E[0mGXlXifPb++ZU#Sio\O,\%.eF6//QhqHe7"\ZkSGS!D.Z@W!MTMsJ%09s3qb %)?E/YVD\o:9n84eU\UGqJ.,aE[hU+6c*#982TI+]NgZZmbU_J3#6Ws?#2:HbgVp-l[Q?=-+:4XP0j9a;$hIJJdO6V4`1fhQDdLffhl=962Gjlc&`n'E5ti3@/r)E.*pb07:5'm1(nP %4b%nKGq^X$1<+GM> %e!F[rIXY;L.J-f'$eJu.F'l=bSWc8I])W[&kFT%p1p]aMBsNs3Lh&gbr^0pWf79^Nk6hK5Op`\c.q8d"TocN%MVX$,csl1NnIG0; %UA"5s2!-*!jMo"WFApKMEFO-dp$f)so@_Ma%8)=qk&!+.OV(RR;Io:XPIi?2]SG7J$N0.VF[jLuh(=l?BnTnpI/#``'obRme!4F) %RBPs`UX603HCa.sq0h>l`Cgk_iNQSTJ?qdIn):Jj1pMd6Hg2O*gcLAAUeS;s^6,mDp!+mWD6)^ZPP(s[P8@rcdZ?,"PIV;'k^',& %(To'OX0dkE+8g%!^5]hYQ5,:<=1mUp%'AraXF*]/G`6GfiE:KJ?tf(nPFQge1Y]%7Bb\%NV+-Xq)*I6&%f"77=3="YQ@\ap#2JjA %Ssej'_G4SOL6-7O#V0Bdfrl0s!1-]=66Bgfmh]ebH^#<,qtHjmJ+JjjC%jhp4RCu'rc_/cYWiPZNL(d@5;c+]Q.u6_Z$Ct!fj,%a %r:VCbXDZ@XI!]Vh)rdn1`68/A5Q6msrmt6(%%3t.3&Bbpi^MZid+0.GJecKmJV-1)AaCA7"N@fC8a"j4$6:TH'&g\F:-ZZ[r1d]tKA"@RLXJSIOBT=5dBT$_\/98Q`k4 %KKS9lp$?]p1%Hbp;^B[Z&9LEF*O(1NIp_7DKP<#F3QjYaYkCXkjW<("CB'"&VmF3;(KT_*Q=3D?hJEAa0=cS]o:$O8Qn/8T_nH"( %BUj47ccTMpDOR-W0h_pCiW,J,QNsN)lHJ1][!:[.h1uF&W3^UslUHU3:I*]T)-uOq+*A_if)Ql[g#CVh`2rs'm%D(:ee)/B>&?$^ %bYiY=MutTRBU$F)b[C/InWQ&QkmZu$?i@idNE=";Sejh:7Vqa7O_[e]`2PMrcT@ %/8Ci3'?ZEeZF'md^?1ZbVXSN=65S)p4Ij-VI.SbOJtG@mU/_a7c$s!@@)qCT-a:5GiJ2Z:TPhtk(ukNS,H>:*2;L1B;IIY/_g]#< %XjXfk)jP;s+Vc]EW18b`EjPm?XmfKMHEaCi$XaEs\g2JD`?f:)HfW(Of'0E1X3G<#;dGh@p4_,=75$R'&j2f2%F/[mYV5HNiS8f3 %Mr>,@'Pj?^97D/dP-R%m_eQ+SHr%7jDBS$oKFR31+=BX&>p9Pg5s&&FTi)p+*LGIr6E$mnoU'9@D;mHn/iA:2L]ZI!S83ap\jnCc'Y5RdU=BEYQ)_bn_ %A'+!Zo73Y./p2q#q@UEr-(+OOotq+)(DhmgM3,nkYMtMMr9*@Y1:DihC`n'a,m!)l6,7(igo:bHkHZ0(=_PZ0H,;ES@Pi(JAMD27 %A7f]Bk:$k&==..D77L%8p*+TUk;l9H\+ZTdE=q@JPjlpYJqD,a'hOK>9]St!H>O/;HX0nm\+-M.`6F"\f>)##UrHf-=E)5X15L<&'#Hn:KTE*J]ri-$TtNN)K*g;oPMXaB5$#AJo9rIt$K.3E;1IioK`.<:SfFN2s%D=$^M%ihb$e %@,P:^6'N'$*5B^r.ST))q5hR(>aY70@a1Ru?e@W4rp5FPQiTk^kWq#hrG;d@_ghA%s4(KT_k6r$hgbINhuD<5H?`83PbhP7I4P\%+oAKrPV+0ZUrXBm.O!V8`':Smu*)at)?5E4T6XBO463Hjl'ZYgqAW@UX0P1%aWs;^)3IY]F+Z;PpN!uJ#N6?7D=+*&V%&RCk %TUfg]^0##a0JT?/]>\J`*U,h_6Th$`H=([NnOi*Y>H/ZIF]UYNOHY>NZgd'01sEVAS;K^[!Sc7X6`/Tpo_hsp)G&>l[T'3`X,WC<>4]s$R^/0 %SIb8P(jF"RXE`TY+nUs)&_Se+"mn?U&Z]EOc*IHlKJ78r!\q?hUVE$Cijp"mhsn31'!I>\$a*ALim)&?Q,.ApmlaHZ8%uj@M,DWJ %s"W^OdisO+k,KN(Q>W2nk>198ZZF4VX2X8UhSm!nGuk)'F\lOf31.(r`mTkDnb_H\ %G3.ViTVtl2JR#TZ1n>+F;A"A6d#:PoN4<,i1oDu_G-XY>Z:'k5\(h8+;%1eJ9VtRh"g"R:Ig8;&]kIq-X9RP\/WV&fA%^5gWe!_F,m]e2bAn0pMD:K]!Z#niWENnTJ!l8WYa1 %rY4mT"/bT6ZUV!)Z[:>YF'I)6U9eHY6u#pX9u!CgF5]MgM;c=U2<''/?R?pW^Z>3%pa\e0*_.:!G7=eWisU(*'/@9\E8OFYiLPl\ %6cM]mq,`L\8RlU1&%X(V?BP5`[.G@b7_Ej!n_M7crS:900,7:^Mr\+Y`n?\uE-X^uV/O].A9G`3F2m;HZM=+]m*n\NAVh@MAgp#q %IoYR!BkrWMc#Mn5$H]^bq9peTrQ?%oU>bN(:nu]9lIW*`L6kL4DT(c?:^@Ad %0ofp)=p-3*4/N8^(I]7#CEYfUOX,Yfklr2kf[.97I5EX3.,mf&=jf_1k(3@&$]N.M0_Mt"begX!n;tr1#UWlYCV3J6isEUD@^i?G %G+[mhD*;ZhH%CJrf[$[9b]DoO)nCCndo#*cjW<5G-b/UtDN8oGF<\eGFGb7$4b %;nHb//>8=QF(&?eM5SmXJo@JT]38U]ST6oO=pM.jaJDFp8F\/K*-!mI*C,=8)+kc#%],4%pK@,AKD8I+'9)Btn_;?IS7./F^:bOO %IeIOL#[aLWnSfdT/bA#:;Co&rNmCq>`HOL-/!E#5a^5H`gPiW[R:Ss&.k3,9>RjK\LqLXeP/c+FXSa_NR*VN1sMC(3`5E]Vql3PogtW-S7j3&JA@&U@^'cr0%[m]VrK8*s2,J %^bq;d@"Wp)FL[+^8n\Xp1^L\#jG3FVPL;E`JF@]8kEcjN;7Haa+p@Fa#IL3j<)a/eH42&840B.$o1kmG#T8`kKQaiLf_6dX+ZJd_,.*F1'nKrH%^$0hIc:u6#RpLit>!ep'8H^$_q!^q27W1[Ftd*kktdZ5)^SrMba"eIIO\6 %*H\JURmG-VL>mjJ_X)_3j+$@r(!nHuZ)_"5RH/A#P4(FSY(>QlBD3"MK=UShHM2pI?/VMW5$oYD?q8^Y:/>m&.nq1)CW;'Eqo/Rk %)pfUOlbo>m&>QUB-;N\K)GU$<=Ycle*E`:$)9N.Xg&g-LA8KS,COYhR6Xk`>'bj(=b]V.$3UkP'S0MKu*dE";.*CSf7TIC!_)%&0 %5*4YP!EIbT$STR/d-:/S(\7J%r4EX7],^\/-bkj@;r!$aHe@/eA=3/Q19U2SR`Mf0Am[cPf^@qo66`\'`AIVQIE_H2/B'l85V61l %Cq0kDRlrfH"=,mVhs%2[4%hT_CV?bF@QdqkLJRQ5o(el#n#Jh\<*-6$iI?Z?S^M4*rAkr_8bR?,l<+&TOGOG6l!*8>C!8D=b5^u6 %V=4Jebl<1m3iSS/<2*(A80r?ecTl#>81Pqp^:A[J-FD]MAtI;)M/U='6tW^7`t6aDTF5!IdmGN*kSj.F.H;ktPPHnaXKHXZ?E\=# %Rj-QYJk+'S\I7?.N<>ZRC3(jO^O4WOV9)aLGn-[g(jJO[n=g=Ti`(qE*q\t=3Y*sp%^AL(&^K1^dh'1tbqI3F %::jMDKTAh.kMk_IQ9D#E%+M#JJSd\u[3'/=$;RlU7]#DKh2-kLF!X0-V)1X_/2HpUnDI%WW=n5%^l.]q$5t*3M?/=sO]r1KE\Fo" %@94&%'],pU)4S/@>F6(KQ:'=&L@^8T;o/&\PpMFf-iVo2idD#Ep-M=A'LL6tO>rIhG%1t?rM9qeD/@^Ls'pL7Y7-oSb&T/Q/jdOF %cU/TC&9fkmb]oAN0Z^VQMp@-qH3@F=]W^<&erE/#Y%NGCfBQ.A*#u&.ZbK!J_'hr=\b`C`cmOm)&@C:6h;Q3j6^!`PoYIMW2lM( %^C$jq/OHDN]rk@$Wi6Wsr,E"S^oCRZnN"h9Lo>Bb#Xm"u4_-0j#T\n67oGCZ7]-aASf[-\8N:gM7-[ca8\7[],`+u!8(tV:V!"LN %.;)Rf$;C.13H/P^oMN]),^I=-&0FPY0*PNMaCI$NIeXalQWTA)#`I9a<1>Q0Q]Vk>!itA.:*`b.6hY2XKM%Sr#QOVA>YePdoWSJ: %>(s2n78%25K5XQ)o<\'F>-$rScQ@=;ho5/&mNXub/m3OAYcVjh_6EM:NWJ-tbb7VHh7=I\WoC/mMc'U-3&7c\6R3g8e$>sFfU_TU %Y$bpnYfW]q.;R8EI)3&qjdY-+%JmFlQ*,!i!#_NOPdTP?6LHuB[t`k4+\K#o3S=:Y`hW*h4N9!Cm($IY+:lB8ncGUo.@1!R\``MJ0VWVjO4;.^FK'o?"b?tFr@9c=$PKt)8\NK^M0)e>&*u#kC*V_ot#'8c5,%%R]SV6kr %:kLhGOY6%((!Er+qtljWkB$?&j/3ie>_$C]i#&!P?\0>tiYjS<_tYuRd+/gALT(6fX,!(d?nNF.;5^Xs`b@a6jpDimI!X=qir]pW %I0BpR3O`r5PE)U(`KPT:e!(@$-as,nEm%RDGk %>CKJ:inN][l_$*@4g,"*F89^IH(Q"bprcD700Oio?t/LNVp(U@+sf4e^/Fm5Ed8b53H;09#Zb-)2AIi\C`nse3"YK?a8OU1/T$I7 %o^ZU>U2Y7W<7Ep%e9Wk'_66T%!j6m4qkG)3$cbGFDhEgN9)[+6,l.XF'8s$d5Vf%NWb4/%gdPCCrK?/,Ek.kG7DhLr4;8*H?_Y<=![0eDWOoXR4ECm)W %N%Ed:#Xp&EU)<2Y^HZFZf@#`6+O;M!(44G5-$u:j3MmK&4_r-($JUko:6nX\2pupmQmGP3bR!L0jWL^aq %S.q;Bh,abX!kQ8&AYfqR0rWXT=:b][6liP&![YqQ@e[SA1kJ5!,U_JU>Em4*jj'Od)o\:,_8R39Rim.9d3\89eI.R9$EunVp^o.g %N?s6$@'YZV-FobgU(^h:r0'mDaHc_'_3]/R5ju1)[_#SbhruY7i'T$@#!Z+DR\r0JFU: %l#()aLKVjN&4SA#(<1"d^(m=Lnojc-2)*N.;eFp2i(T!C(s15,^Ih0lT+o;'#o2tcB.ATDTI-QTpoLH<4^dY<4qp=iQk9Q@rEGK[ %@E1?nA%EVtj).tj?R:_E)DrU=\oX1![fZnkZ>U7:,T;I[.h)kQAq?kQF+)pJ%H_WPc/tsf`8q1XSR^dBQct4+)kmBHL3Nq&Idn`a %q;ZWeK%)!d*IaZY88;(p>%S7A;!sL>Q^:VeM@i%!&X*a[r>^GS@WC(47tXTuUu`J;I>h3sKdeINb)!OD\Jk=^8]gV'0`sK3eE"g= %[F%o@4]r<]/&_kV;bS>N"bb[n.7e>*r2^)nA^NYWoCh_?3$IBk-uKrOLi\`HG&,bi5sIYs)\j,6$NSLRdZ@%WA-:1Gr4.RGs7#t: %pb7<3e5M:?8t&`E5cFX)_uBj7DaW-j>httBR11E++trdl#cHlLN@at%%VY"_GnsqjEZ'an%n8B9?ZUhmQe:":UPSQd"BuFRY>'(7tr"2Gd`HB:cTZLC0]c_MtuSkHob,],P,Uo8,<;/Ms<4D*?O]'k-CmFHUB(Lpn:kcEO(- %\s^%g@W^O-8&k8#hp\>%/PJB:M=M3#%%ni=KVQYHGkTU:!"-5q/U]o.q*%@`fRkMAc\OB^/C>DKL@tHPNhXb.W!>'\Ze&GZ"5EDl %?j9S/T[U6?9cF]*^/S1.IJ3Rp-JI43FF4E=tlGYPJmq!PReq(lbfH&mU<+AW>p+(4U>u"1ck$E*7FNapp1^lHl(\ %^?nmZM()eh58gVJI:)Lc?K?X$D^@,Mf&cgKeXu4ob#=rKTfBG#<\SjMi(u$/qj4@S66511ip*Z78 %FmBNKPghH'cF$pqJ$WF)4#q*6[sO.r`r!WWS)Dn[3j-o-3_tH\)f\A+@3+fj:TXt&#$@?7+Q[T47RAD"?`_FDoI]VO@iMi6Q^[J$ %6i_L%'oSDKO77&ZW<;EgCb5S!s"@8mN'QN]^Yc1aB2#>L50bC$tA;&eMf#),)5k`ap& %r-C7$Jq[@Jmp7Xt1C#FNnpAV_M7:c4\\glPK,8pefd[D.4GC^7oj5q=\]!rDhPEus3*Na4=C49.8)541a1'[-3;bJ7'igQ"5/Ih'8_u(:P'9/:-:U+TW.E%)I7nM'N`Yn%U?'tBue0O@9,"bdWEW"_PFOIL#apGio(Xj %nh`Sufc%IQ!33FIiQIP[g\-l<#ZS*c>^WB8bR+ml2^%rgVjO^u+XA+KH@"[c2,I:j6RZ)Q^c0m;Uj3;gQ7tq)]^M6c"2f$hbmX+o %?E5,V1FHWHl\,#U7,Q^3PZ %lHEnXP*>bHXSUOfCF?[?Zh"U8E/rln%M&F=YPk&qocCmNq^'W7/fNB9WkcM89]65bJ`hfZdb=i`06 %i2W`laj<$*J9Tg4`@@,_1`RV,.1+3FCU39scB %J,uQ5/F*r"i?0rcasjC,ReS\QXg*],b?!Ipg.f;B&JtFj*V^V,:*[`"WSE[Ke"JfIUZipq8L:H+e_>,o7@G%Fkoj@Ci%T0"ZZKKG %!TITn(>9b3C-eDR_n/VP`g6kp\sDg^:XHSEhL_1Ma2QXAlhD;Z&kof(N(SQ0Dg+p)n/3Y7QWB16W<:HYHE5Pk'?`#b_S[$0@>+b- %9eAB\ekX(2f_Z%E5(`%kpJ2#t"ebk-NnDttn[)PI-];/@G>+7u45""8A$OI\978dP[)ac-9%;Xa*g]q1I74UNo.8p&p9LaL+O]01 %_c1.WW1BVPa/NFu,CrXI.J##PKWspp6'B1h;,rY&1aG;s*IYESUmgo_A1#M2V6b!eVoBT+W\i98<`U[XKr %8O^$s$@t&7m4BnlmI#Bt.3mFZ"`^>FA-Sl9G\oGfncL@12s0c/C6>GlU.-;S.nJ/,1A%#Ma4/;MP9PC^CIG1Gi(A/-SV^c!Vgr%X %2;52dR"koMm+(k`[j\%/?M9G.\/6)7=*Cr,(@T@).LZ^_1o/rfP]BMOfbpa88Qs/WcK`3LDJL_^;GI. %6X$4cV6U@LN(U%6!EK?+:c2(*/?:T%Ij'\Yr]>SU:!lmE@`]>N:E&U117[#p/hE% %j'gQt=dC&61Xqi!d=\-UD3=I)A`pMO>2*Ks=/?^Hb,MT#4BKNoE\OA1-B/\I2c.:X!0VSSJ!EenrDe$U]Q28BWO-c.-XHMp]=th\?V?QDR2U?"QMS^\"KEO$&ou#B#C8^k?1$pQ:ndRH\Q@>^Geg4>"jA8H(B#c"^`,Q* %-<+&OT1ln?\iZb`[PBnT09QnU6J]!9.7!6t8td,>bU6GnPC]^uF>YQ:?B1kQn*-^AE>sOh7XOrWLQ!O9@7\A@Fkn@qPRC:?gsioA %J*uJGWEL9DYe*RU-?X1ce^7nR&J?3%U]["[&Pct-C/4A9Z+e'hg;j[W-go+XOJgA"jX1[jm9$KZ^i_;SpXH]L7e9OOi&1sBf/D)g %D\P!3Bl3FoSNSi485W6]#8Q510jB??s\5-NuBO>!:c6OJY';6T!%NNMOh+f3:#$U<.TY\LSh;'MD %eYab"+iRo!E#!S@UN9QHQ(t&$LMVeu.h^+9q4M!)pI!-/,%T7l]jobfHd[D#3V4PXE0oRK"?Wq6PL[@'I3BB&r_$oo>DiQicqEOQ %Gq'"c'VE'%.QT5V%nt3OGE65Ua!s6N4W*jrC1_G*.ppd6T87D:^4.P2#P$ZM![jNHXW:r,PrN1q[dMH..-/3[7ha:+WN7Ch-_9`: %GSIK7S2]2Sja(2O;mf3u1K5#D8WV"A'_G)MCf*LXX)]Rs+f\,Oe36)RVFZ7&;Fs`>?2K1sgSmOSC(p@Ba4Am0)j(=/B426C:tL"f %lf(/c:PSmU8i):NXIMmURdh/*erD7YF'$="`LD1P$/)oo,kT2-9C8bY9m:YFmEQ`qgS(/2ZE6ifoW@AB.dEp5\l3eXjDbH]S`#ga %!,-:V7a=(^Mo1@u[>l57DF0fCc##odP0Od?3`bKE8r_t+Ki65R(loViKVDZLOLL[AYcL?9V\qG&VG[t;&d=qZ\5rr3-$BJcANgF! %Z/uIX%2t>Y'6>u3>OW/s7BHT^BD&K\bQrqnZ3l8jJ?Kld&F7200:kP;obocV^&^)/1'`A94k:haqRob1=AB>l*Xq^.biCGsD)QAi %#I4opD5t%.LB_`+QoC4>@@.GK;*B[&63WI/E`ZNtn9@gl&\A>Qi.ec`&1[N\HtL"lMkg-u6t-VotjaH %Z*L5BUj+ul':\P_m)YZ:bUCO4k3#?>.C$FY;D/A%#@h1]H]0@MB(Y5MM>%H1'(P9.C,_98%_q.IP8%b5LRKT#lfVdh(?+9m`B?a# %m@\t%93&/[k.\5j`0b9Q$-7o*N6(Jj%np"5VHTkL2KVWY_q0LH1Wn#*G*iP]9E?eEQ=1\i9b@PR4_[u'S'^FM0<)WR0:J`O$>(.j %=ggqG@9mb:OO-6-co6l[D[-ig`Y?9-S$]E:J2,+3'X6CG,jsaDeh.QQK1!.JU;,_sYm1MP\3O?pl@,@cMbP#l#/\QA;\Lf[LjNYQbWThM,"''D_$QO&d.V/l57_N_!VY^/RN8iUpP]Yd/u %7jcn4OgPT[55=tlR!h0pD*_Q'Pcg1>I;XsIK6%T8:k]O+MgGl1PL>cg.m@iDF]p_]*EJh(NT4O.VMHB3: %!BO!_LsWre@(qQ#dN#*dnh5kQ_QfLWlTpsOq9GXKn*s\KLNN*&i[7OQA%,9&HCrF#bdoh3e9K<^_7$)jOUk&8#bJ,[0HIBH]>.Z> %N[i_hYA?2j2sTtA.k>a4D8n'RMrI;>rof@R/&R[pZ"R=KE["Y\3#=?dkh1A!Cm&@RZSPYGk=fg8(ILLq$SHdZde@4J3b?u&9c;J.W3NY.BUNkaf^3O.+WO"0FXp_h=boC %f:_k/k*i&se;=S5=PP^R>Y!<7]Xg#(OdUu08#Ct\qeBMnK,"5d>NO0XU%bMI.>B:>9?@u_S/k>)cr=aJT6[LbiQJAY8?T'S[S-;E %mA?[f>YD(AZ'N%^D.B?7;-Q#]DRu!p-(ciNW#iG5Mlmd/>Zj/Nm,f?Al4bXE9MJFE?=f]/^5HQbdiE1@2j4#6>k+ae.sTi$`SF*> %f9NGBJrhVPaK9hP9-n4CAr5#l?5P2r:f$M-p9e]NV#`X9?@mr!d"2nl?c[Dlc,dNfc/%iA`EkQ7\b`$qCT8hNZu^g#,U!t3?8+4F %dF1-:i`Q7J`&F\++PNr35A.NfXn&MDo3eT0#C!0\#*APUQ!C)U-ZZ.qDA[4F+UcBX#kK5ZS2E@9hh9M[,I1>s,HG,dbmPq7Ra,sZ %IsAOJlA.MpbZ]jE"`?!t?c]"YuH7rKNsU)$KBd6N([O%*ifBuTo:Q```u=L?$;Wh=SD %76RP2@7Hli@Yt`;c=^7q?8b1$WcIe?hdc5%Z[/8U"?$,s`N,r#E>4^A&Xgrpb@4u&OAC&#0"1?uY'pRJ+PJCsF!m&C^1rs"gghZ[S#37KN?.(R6Kt_bf]M]a5TKGj %7o[uJjX7]uXA0>4Ci[7/hH"3fnI1mt>qhtX*Xno5iDs.S+Z,^EmiW]-kn[gn3N=&afQH'F.$uu@JGVqM9samo*)F@d.[=X!3aMDj %MgEh4HW:^18@h+pa+n;OgocK1R0^4@]e\eaB+9aaU<":,ZH%isVb"eZ5u;MM%mYM[CjeiGP].(AKtEb3]T8aZ[s2ad5qGOKjA?Oe %g+5%&`.^(MQEa?;0V_7`(PUp4n;Mbi7'P=_/Rbj]oPsF9`MnNiXl$25`A,+NS0uWUk/BHlW9!krr.5rt%'_nF/"K\l#m*9@Vj)Ug %iAgQ:JsnA"?$adg)5mRU=QH]Jk'\n>+g@IWDNI3s2%O.I*s2'QSt[4dc>,g5ZNl.mF^7IZ^/>K6\HaCG?Rd';StJup7m*.HPshP% %Bg\bJ>?M%`C3;hLIAp<:S$l'G=b1b&1Tk*Eq".0@.R+T_qUlT#nO*J7jK %`BA^:jhW$*R29OO7]V2AVQ7iR`*9]J?"QS\SD$)C$&;FlB@=D<%j&_tPQ,*U;0jdeG]=$5+!$5F2VE_KB^?0:jVl7bo45c,%S331 %&iG<6-`P>+,_C,;h$YnC!C.sVHeW9V/Brt(&*2sD.e$ch^ONO,`V#>i^HNESI\>u"k#=`FehEZ7:HPoX5/hb/*'K'1/_UHC&urul@k`B2#6U&dh\RSQn%kL6nLD=m%S %02Xm6`\kNL(t-Dbqd()!)L9-Y.7dTnnZ42%Fm*E[%MN*sD5.?WlC*NQoP.9pJsY!F+GZEAMGA-.U8s5unZ::'&a:!pC:gVKk9:-#La\s]GF#_Z-;:^DpX"`Ir:`5:j:ooHiNpb?YtF#06G\![0Kiumc[!2@kshS, %@l_KJpo:FRc4>#[ZnZIVe+7--BVAB7)=^a,oBda^9"`kJ8X5s.iH!>*6>L' %g]18X"N$T2!Q->F*6S(`bIB-=CjQRmPu'Fqo5ikDg\"D)_r^EW:44&rn1&lqogO0HC=?R %PQ-gNiPbbTldCJ=r"?RNNromQIaoPHk^?P[qS)*^V;LW\RIQUr2::#epS=p[Ii*kn';6g"mH9"2MQAt@Gc0PQGT.P[/1=;\9Z'QF+[L8^oR&.$D9.WNY%r*%F+3ZS(Gg=Jc27oETJWa+<<76#Q3[$_bTTp]>O4oUegeq.,@S>' %73u`"KeQPI"uR0q_7'Vl6=D+?D2qRrTel+sfNu,op(]=F)YDGpPpFG?"l8hT!dPR-m:U@E1:8_aPB0VFW"h-3uP/.\S#:rp7r%b;ssM_35%)A)V+Xsp=UE@TB)kMdEPD98uA''HD?]s+*ZKUf?d(?7ul_`q9a]j@/QYa4-`;3?AZ %ZIa0eBVb.YK+rRq1If<,HOB\eM>m6kUDgd]`(-W?Hus,S2sEVS^.MMM-LEg4Q0n2dA'(89WcL>ieoSK7N`I;\JD1rcP]9D')a7guu@p8sq9lAX0 %"7llT-pHDJ*QhuUl.ZVm#?N93*>nFc+#b#o_%6`]e.Ud6$&;;W'Mmq00S!f^KJ?mNbC6G%V`,rUqWs4bl^b:ojbUdnB8XL(@W=r^2o6D]DNpCmC2SH/8;1@5XV@!Di'qi,($!3=k=+V"in$Qr(nF/!s)$D.U/J(,mrr[ecKIPD3\ %;Uq4FD3jk1p!LYfF8PB/MaX6g^Hf,16fj*mMV2_I,)W:pl1YF$DS]`\YSnLd3@\CF(-[OAn)%l1Q1G_qKXe*;Gff@VjFF=FAlIX( %/Eb1G0=BeJ"W&suf7HH?G!>(J70Zq=+p`*0Ku'9JESaS=30lg8ef>')jmm-:PBM`hJ+9UL[`:k;.hIL3.TTkOWG"UffK^)ea6(jC %<(:Q3*;jqb[VB<;_`BH"kJkuY*_O(m_#Wd,F@l#d]*f.eFJ>hD!o,GMWeV2b&DqBFaUXh(->\1&=*==s_L>f$7?ZIG#??T8!60(W %G!\:'#0uR?33)M0l/h;kIq2'>)Ws"1>4D*cU!Y/$[CBT/$KeI"Jb0e.?3"^?P3[:db]fbQMKQHqi7kYQ"lo?>D^^&cHpH4I?#qL- %?u#^LSuI[L]8?4VZ8[YSM-%Xilk..T+2#;AXsH_],k_E7&+q[X.;8HD`]^+F %ZD7^3-&aMZ7jJ4G5SV"!oi %H`'"-'!<^h':1'-@(\*Y?=Ad+D(/jDeItV=NM`/c#d[a3Gl_E71=0(CH^P%C@l10F2<#n3J8O"H %b1%_0[ADZ';HmY>PZUAd5?QV%_$Y"X_P?%impl+IOZT(OFl?5:8JQB.[rHQ;)[c#ne-nmOHj=7f %nupPIbUYmuDmJ^$b,gW]`r\-+F(")Ni@jJ,i]RM.C%,?BU/FB5,D?8AYfK5M.QN1!Ebs3[[SLeT&`+?EQQ.1i-I:.SXDET5/ %>f5HCdCLPEN^"Vc^JZH_7e'nkkj7FHdSA=](Ms/>RJ3YBDDR^\@/L\_I-U:^AnAnr+Js2O2M7,r%uaf2'.rE,H$`TBLoT`3+A]M$ %Z>3e'o@\&JeH7Xfi5+9SjS$OkdT]59rt>bUFl.9;Eigh)Jr/R*0TkNMZ8#diJmh3E($eG?G[E@]M<@H(M; %Jp8c:f%l7qH7HJ,GQ:P0QB7bBneSE2D#O?U?\)?9V/Ir1$((BO`aXItS*DuSoQ7< %iRI?WoNb*@f+Gi:fdrb@K<*^GT;AV*Bb,%F9=e8k@WOMG>H$(LQL8<`E?FR]"Q2"Uk\gsnLi6@94W`E`.^tp7a`A2Z^S,Vr`nH#^P=?AI#(?C2c,gqK4YZUD-5PFDa14J_:Aunl[?Ba!91 %(rN^k235GLC5VVtW]=3[9`EZFN7iLBW9&)90BPBhQ@S$'t/accDCl+TBeWLhuJ);jomj/;UcIA<19c^U0XNQ/`g*"qj)u9SL#DH>dQcH2f"O/_Gp!Oh).AB6'Hag$'$(a-d@W@`` %CMOYF_QI'FcC:a4CJpYj.nJj"MdM*FMc+Z^.(kJ"A_^Hln%Art3mQaQl\7oK#<)khmIp:r%n3>/Qp`lSUu'a4fTs@Me/LDu3St/` %0K\n?SZb[kg,7Q."ojTama"Y!Arr/8(6PFTM:Zm\3O7F*'P\7Ti0beMnH7Nsq`pH]V9V=&-[*$A,>PcOXma(DPT6U406 %*5UABHoLA0WNot$KRUcNffe5.[5CB#`8D_`=6e(\=D9Q)^)3c"*?24UL/^jEC6'k`IfZNg$?X+YP+-::6S!K %<6aF/BSTVoKd@G'PGhE7fi(@"lBi!t4?*tpRV0Y$Y%XDPX*0_0`CUDfW7TB*c/]Ca=<36k.J;q)+_nQ3D(FRCl&7GZm#eAfUXZmI %*S^+`Jt0RN/(3fc($-Es+`M2Qq/J&9g21Dd5Nbju"Y'hqW:\fTM'emE3cuQ5jcB3iN6)imW8r4[#M`:=&p01HK[caVR.1C1PmB63 %B'5Iq3p6UQ]-gp6SZ6koTPE&#F&aapWZjLYkG\dRY1Z>"fNk@B)Q(Y5@8L3qJ=Y=MeZ($S,_6IRJBfb&4;7;r^XGkE6f'D_JV`7; %F)<`fFA"*%X=[F8)Ne2%nHL/@h*1kBr;VdZ`VnBt&omD#r3[.HT1V3HdPf&4'X<-nsDYN8(Y5JFXQ %\+^T"[r7,_(!2@-?AE\/i(_/"C5Zo@M:M5I,`O:!]lh4`@pE(i`FmBf(C%D$K]c?g_Ild"?;B0t5e=W\:8e'aH^i:<@:aS4_7;CT %hj/uaa'1f&-mh8P54`l*I %ThfH/S"s/eM,D@JUYe?J3_7XfAK%B@HZi)l\2(Wlem!lDUa#42PNZ++m)JYRDc6%4B+fg_H/4q.%0l/^3ie_-qPK:7V0?]"cc %Ano!L'#2EBRQ.Kl(;EMSlmU'9q%H0A,$^N".RhU;JP-j$44.maD,LjbWC_=c@tRJZ!$Q^\)@ %nhRN8f2(uqP,cot@Y/K^8%/BhO[O*32f,>49PF<5]J)Yk46PN,O/.FfIOITIU1"AZ&X.nqW1b'*0^ga%nDF%^cd)j;_IVTLZ3RB% %pWZl_/9IF$r6d\BRgAsJU=s:SEKW"AO#GKLiYj)@rS4]igq#6K3ObKmS^0R^YWmH3or+I,Z%Y` %JkL/MHu-NK9033^CS.>!;PONK@nS^QZ(VT&&600jlpTB9&o]mqQW\>tMA.\q-Mhm8RCGrcs05"Pm>e"cl&D]$./=2MdssQ0k+,[M %:cH`kUlM6K<$T(q\QYpNYO/.A2)]pJ-6@1E\\rYJoanUO;+'2P7%VSJnA`[k_R".gU#*&h:aQbZfFUV/k1JBT9-@VEfhu#_N*+f,6-!>VG*c^n>%NY:;QeL/QY(!h5UGP5sX[E#O&[\3YP7Hl@#09R$e__l[ %LJ>pD7LWJmpEgj#>NK-r[mJIJcq\13.)2(hjieE"f4W%BS!F@d.OS(r1`8V89r63aP<+7!P_+90eR4:JhG.R@*WiK[ha3A<\T+u5 %/WiYt_E!QpF-T1()#]ck'p<9QeP>[X_q'cdWs>T`-[mVTLfg2-GM5]u.b=Rn[,gY!RONfTGDgAQKB)\Td@_qr8'<0rS=j>dh5h95 %4\Xd]q&0arU+,os>YI@aJ,f(DH)\$Z0_.U`?@7&TL(c@t$g`2=/+b^gCR9p,&s==%k-o(eqmd#O&NfG.b<$oo1O%<*iJ:/dWh8(V %lddZ,gt%*]i'#kJgU`h`VWbHB!r5#Y!-"iWGr03j*QtmkU7c]d,cdUp(p/gIH=%s:l:;M+7>ZN\mpZI0UcW9\2^%?3CYKkEGdS/Z %+OVHEo@Q6OL7TqCL#GGW6JC[I:P,st/!,6s9!$Vg(Vei1`1U1*H:JKN&E^3s-'2*F?t<'0me#CT*'cd0*f_W_J6=U=gIiH_hQ((X %A%bRDnD62?mi@j.(,.PUVR[1V1qq3(F2)h$p"m=3g1RDFTl'4i1:QHIXM/!3hS@ZMJS)Q*m-6pYCUlo)>T%>A2WW1KO8DQ+Fr)cB %;N%-uG3W@Wa)4Q+U7&gUom_kp'HJu8#TCo);[=B=WC"YeJ3EG(mEPgE!H_eH?%&6OF11FZq=iGg(PhBq:)c\6^7])07qTqdB^4i?k %N"kK7&a`T=L/4N1if6!AMa_cf[Xb8jDM`I]]72@ep3,kn3&S?lr>F"I)Ds"JBT\>[='08o@0/6PqSK`5\DM3THet2O)cu<'B%l># %bifkre]l#(>atH/m3De4e9.a7G')tK#DMePIKg#(SfA6tN./H';D_T)f'[89#l`rJfuJGukRkt>i);6qeXj3l-ucT7b]_q7#KNrX %[q$c(#SOrBP%C0:WPpCIX2Y3>kNPT*kkgA(Nbdu-b=DQ-=hGR77!.\nblA&AR^#8q[G`;>g)t"OO>PE/L)J;f%0P)DbAh3MQN^Lk %crZ;DJd>+^&$EY`fF]0,7'\[`J&>,II+\5LPRt:M.[i!q70`pVMDEt2F^s+,c*u2r3:6;iM\ra>5u]@sU?k@- %_c,<-P\a&a5(1BM1WOY^guAahJ?`eq/"3.BcbugBSH:oH/I+DS-$5gF7dj9&41K&8RG@50LJOB3=`rU7Bk5CT,?b#*?+G(^L8-Lg %8:m(]3s[RE,C3;FNX!uF0**q!,M`h/Art%/X]P(2(PGF+Z[>3*%eV0VlB+&XC>6"@C4];b[8+\plerkcE;Ep2?5:`;N+0j[HNf]: %'10M1E_a7dRAmtrNP+^dgQWj-^XIErf3:O'CC"K>95_hsg#kbX2*$W&NW5DLc-!g]9(_,Nf+<-r21NT!bNY8(oU?FP[YEaA')c+t.^CG9XRYj)o) %@j%hkBu+XT7siDuB`PCXa%b!h?D053K)SWN&>'oXhRq)6oOtTX@fYu_@]lc(GsL.1*T`Gt_rD6o=f1-RK*.pF-*#O-R"_80Z-oqV %>Mu75U_IeRr:%9Xj_g8k5n@h!HLDoee`U>#1Ed"DX3r2q%Z?-U=q@bG+?5%DpYC$-k05ZcXFRKVolKG*TAmn2`B?YJ0RR5--\4!5 %oIW[H[6"f;NU3]e@q<6E0_FRT?p,+ii"Pp^=d"\+eFWPQSj8BAV7.b12SO-SkBG!)DA`O)A(B3_,m-&D8IktOD=]iEQcW4hY>Nu; %Q=HC-3BdM`$Lg;7'kU#2bRb2T:;IHh1[e.n%oTVACu!a46X"8YcS9hsBjAWUCKKEI<"Ae/+oa9,:K^oeBf#YFmRIC#coRlRP,38\bN2q7s#*Ca$D)^UIAF:Ik,Y$IUM$;>7)_;D`X:V7mEJN0T(^fO/6`T%atJ$FQ,q`,;eJ?`!1Y %/HQ$TiuGGhFp>F0mTP[gl>GG*VS9EAPmB$e$,%J>&r]](N,G\.G#8$2R9`bc&r\N/^d_kY;l!W$Q_TGVEWeaA:_>oW*E&^&?D9d?q,?:ucte8L4K,kURL@UBmZc>K_(*_)C> %+iG+0glP\i2^i-OC+,2.NNG`a[pThR1Y;`1KHAI&MKT@YO[[HuGO,fq^nu)BaT;J]d43>Z^D#LV(/T %2AsL"IMp2U:Z[\T=^j/E^'OLd"B:`bfkS=19,q48WJUtZW3F4>J:X@$t3>Jpm\/`W2IIOF[5*5P@]2*l"m)qn@rH*nGNKXFg,1M[6/oauD(UhC]VN(&<2>3\E?FC2S4 %3d4fCSQ,VB0]nkqj8YkTmWY<>c)ATeP*o!c't_q1h'cf@^PSQ7*3?bj09&GXjRhYjM//MW#6I-.,8Y-Sm065$rJk!iEnI'/_'N-G %SkC)dg5U:]F3qhJ$@Q,Y/t8%Hh3bb%20Un=$P5X;r,VU3=tnKl?g23$O1="B:2l@KQ)(_X4'.ruc1RiZJ8=CMDk`gZ6lW3$"`gB& %gY2?A=3/BFYAn?= %5h;Bpmn8;u&<-[p^XdDRL+&C^#Jpc.IWed^1Pr%[mJ]G]p*ngO"oVVid:VG^H4.U_]f=@jIA1Nt$0$K;L?BqQ61;9<_IahIg*BHZ %gCYL#.D$9Bn.?k8j!N.`Lhc^adWYg^Prf\_AabS')o,2s*rt0)CAO6[EhfupO].kRa\#BN3bLJXaRXdi^6#@^b)'kIc$7o@=k!F1 %pK8Tp$oN8hjeN!Okb>r-"l-j&0UuV>7cf^jn>=Oq7m1`F!I]['_emApBWnjMVnV.-BAHkrA9p$VA>N^nqPG+`0Ig?KU+(LZ\pF,\ %##%"J90Q64YFT+EK0)JIW,;/dI54!)GNZA-(#&fap[mW@:a-"3Gm8#[L;`c1MTO9t%rsqH6M?]KlRcD>."3`27mbah2WT(:YiTr7%[BS`eK3j;L#+E$j0i/qg04Q.,Ta,J8GmLi7"&F:>ib<"88LiigGu,4TMb=M?!W\2t\N[]ou4iWRa$s %hq058;aTt(frFro*^Tr?k^./W$V$,;;dF+bc`62%YgZVTe1C6FQ.3dD:nteaEa1B/5VQcXjhA.VlC2thG-'Ll\"hiLJ/I>,;s'2@ %(.]ISkg'mD7^kMH5$I=$h.\[LQa\Rq2e/emRdo/.[XdZU-CZKa'"@ %BuoQ!XM3Qm]a,#Y;%WXQh,t+>PXu\W-44%X`V_pl3L2e?/X0k.QKX$=\a[(8q]9r)NUu8M,JT3UY/Ca)3lF6lOnPm_ZF;[nI=C2V %jI0@I\Z@ogjGL<8Q:f_np$JlY1G_fC%J:\]"'l>hUl'1mO!aH0-UW_.+(,6DO"H=ha0mm&).EGS$MGF=62r\aT3`,+J;csqFI$X6 %#_?on"dsRLef9D4kHXhL8u-JRYpt]c:s)jU&AUFS$2WC`\P`;`00dkd,E\b]*7=%_guYK@J/>uUJ=q`JE]W&Fc&mjpi=Nt@^RI4g %`9VG'3/lIk)bTh[qgDSl5)T>.*OlOMo1=!A1?Y6.NZU]\WWYRE9"'reG=NCPYD7EDM7HhX#K#!YOuU]f%'Y*>^#.K:\7=LrOs^6P %a5lr"="*=$g@XCMB:k/&'>5")Hdj2[j2N$DA6.V@6?>'c"C983D5n`3(,sL&g1:"%?c@gpccc*./LlJ:S&?E:7n"+(f6>@IAoYI %:u/8J+=AMj0>m?Z6C'U"DHI,;P@jJI]j+$,ag"%).n[FA9;oR.>3Gd.Cd$hfE_:@`m8%:IZe0":PCoc/?L[BD"#][Cr2lHI`GpDG %`1PksoDK.U+%B7,-N);o_&PaXoXMG)TilYo`^#HOe"jj3<.TcL687V"=PIUh5D``bi/caJ'uAnscID,gm-[nm8cGZFUrY:BW(7cn %`ZlK:oU]t1.AMmDDEJB_(>U!++c>D8.hq'SB3@_AH,N+c,#]7#g^):ta9/XY$&5QSi2O'/L0U1/J7S%@efbZN9>K_8iYl9?^_*t. %53+VW6:8_"p1"]-f55=*IFcb4`mY,q4kbf:nKLeUg[1\`RG*XlTPK-k^IZOt1:9P`%S]h-/VXm'_X@(JI0gasEg?"2CX9;U@^`:$O,QBP%[p'`1L6nHc>p[EJX)R2PdUA?1UI&K.+O;6Ii8IKjVIhCJn1S.#[:fBQm;g]O^^V9`il,h.cuf6'70mNfGah"#X\" %eSeGRe.mPd5CGO7$O*oPfL"b*;a(%fktnm;Cnr*@0uW %6dIK]=_V'Kr\1k9Z!h@W;Pq[W>o[*$6BRG;.?OPt5P?\s@NV4caldUB>]VjIXpu?e>H5S3`9I0/H@8LEI`iTYVRO;+9A!HApt^_":a'@MF'*@ib'ZI]hZMmm(rV7Fjr_,TtN'lD%h176m7hFh5,*X,t(,UA'XHAUQZ+N6QD5%IV"6FHW>]a\"_4hY4Su %S;iiC=MQS"lUR]bFf'8p*_C[E3Ueib'!B;t"9r^ZU*oJmDjlh#.%LtMi7E]?#uuZ9SB/@.&oe"THpOG1pO9`%Nk'`CR@L,J8[J&H %PB-/6h)[)[?3%uY=ZiE#(!K<6!f:t@aJWbLVamDb@%D8DAGhs;+cs?f/:r+QVhsBeTi6EWfk]<_s_A3M^GQf?XG&-bBL;b2/`<:'eO@TE.Nrd %>u+nqOb-1KPI.oFI.FI!+C8hOPH??7<7\Q*6KJb0/+H*HAPl'-Srn;oU(@NbSnMjXZ1`C&,=%p=eO'drqF>G)dIMRerjl9$#0@K# %rqA\0W@+f](9<-U^mGDaW,;%UT#68@AJYn-sQ"+da(&Dp#d9l`lp;*Ii2N6%c11!A+RX#B?#MdmdSpbnQ %#`8sAQ_r7r;km?reibo@lKGRLpX'MEn+M2?IVQK29'[tK2+Id(If,e %'$WC8lADL41S.WtaCa$2[$\st.o.Pio2E.C+3l>g[V/$ah]g/3mC'aJm;h5ROVWqbFMI1&.Oj7o,XUH@LJ7=:+PZqPg6K[9OoHqs %MWLXYqME)#:to_g9:5MG]\QpEfNDhrH7g@7I]_g)nG`=^],Mp_D-L]/R)c%bk_`X_jt;(uU&+6T)#i#8g%H:S$!,->mTfNEeW0V.2t-bB[_=D*U[WeB=$irqFWph]jfo^uOSC&ig]HHV\.//DDA>C=I-7 %dI/&V"H2?Fm-hNs?ULm1C+2(&Ynj:m$"FI[.iRuq]\i5EPLKSL$,/gqN.2KB8d#2;B$#I+_B6WC[/MAilLCY/h-R+hWj&s50OcYI %'cfNQ%El7*SF2#E5\=m@V[X"&?03:Q(?5ZV7UKSI4$8JF+&jNNc_nnpbc4NH>E'W?#hoT/a1C*Iq=`<&m'^$_XOlMp!H$LE/Vg4c %VDn'hF4s].^n?nOJNdd[#Dh$1bdJ*;R5]-S4<-=.Hg6-gYg\gGOL/.h`tDIR/+p:`ni"9]f5U>Iq.%(<9C,Ro=lR8mNN":SHS@U& %6c@#8>D8e@0Ip4HD;>A3$)4Y2)qB$IA<6`50H+5hhu.]8*;Bof8X_49Elc3s?nC977YGiqBtoWKW!##Pq4q/p#UR#hl]D^ISKDVX %ML0C>i,@depLB,cEc%/`bi*UjFc\Woj(8Hk8_P%9WX79'jls\/I>e!tAY+#dU08lmesLG,WaHf[5?F-/%H%3U5n:*k*uH#\-^25B %bU5cgh32DsJ1s&6`O(!BC_^GJ6,k&FhiC.j-]<<=RF&%jY>oL[OiE\Z/+f?Lm1^,H7_R$oeV\P#Zj%Hj;`?"eiGfbq`r5iGj<6As %EfnGIF6UD(`j%lC"ukZ+aSb3CI[[(1A@lXZi=> %f^NY[!L<%8^XKjM=:2CG1>/=6RY\DS('pACFk6)Y,d@CMVi6@0lH=6UnB-CYcQj>(Q,#!GLWS5!sM< %N3-kpmlU#f#MT,HPYdNY;LQ\-\Q#;e?t;_FEKDQ)iA=(++F.>OD]D"D:q,Ipg^6eD?N&V!a;s[,:g(_.Dfjbsbbe(.R8`%)SPKOO %4pW1_pc^0W/amkE5cf0]P4M_FV!82E"<('5dEG-re^>/H?0g9N+#W\O4I^H&K-1!AINDY$`n"bC5NEZ,`UZkKP.-)W>\hmC`T3!-FC"E4Tp\$[L4`)$T3h5GuAihNuCb"FS=RG.V>g-mG+ue(6 %H0+@H/3GerJ`M60(4Y3:;kA]N+'M4/R'C5s)pE,ub\$:>:0u\;$T"Qgho>u;X8c9$ra5]E5Q12'pQ%QSDiS6]-9.QfscDepp48*-Y)9^4tj/$qiRaFa*DKN9u2t'uElC!\?PuJYT %NV`5Ur(5eX,u8p]_<]^"+%bqRK0D3qe`jP_mC13@(S;5jP.qo`p"C?+p"ae;lN[@L#F0Sr"M`f1L2_O3=Bq?,?:+(kq3V-'-Sh(X %l086JQs"Jnbri!QesZo7D=1Daj2#QTi1Kl>1_$da*m_$+n9M]]gAf3SL*H;pIG?Zij+FR0PZ]U5UbUUj>*kS>h.U\e),#02S!U[1 %HI0khX3V57S$lPZ[sI^#W]Eh-`m1\#!X+iAZ'Ca0Hl8D#&qrR;n')gORB`&N>C"hY5ZDM>]3[rX_D-Jg[5]X4*4aO#]R-0.CLETB=85m-_>7->4pWJ5'TjF7SelE3`J,eV[lekC9f`9.9 %]RCWiU1QSQIhuKE-\,u^<@P>:pT3]'5h^DCoP(VWm)jK$`RJS!k6pF3TQnO*3Sp4JmisibdbR?:O %\j-\YBIql:<\="1EPDIKn'[MqcNF!PAq'QnS6od!]$]#Ph)OHW*hKO:_J+3g"#od1!X*8XoF0V_GB6^_0pJRr^sX7a(:V8bio]-] %5G\DU<>iea[BFo3U&dmS?]T9t-eulACJRVDg\([*bFsaHq/go8lr_I,S@'Jo4g?l!>$C-M=ES\!SVtPSdq2#I6dn+XNP0+uf%Tft %h"L8Ja=k,E`;naGm:@iO&+7H%\W\5n75#C`ih:-LZI3V1rmm4uCR*3q38;V]]fa/IIFlWmG^\hs;Pu7YU>*go+_GV#Sh$ra;kJ$_ %`YH*^Spm'>bV(nGF&942i"c:^DNQ$l!$`73`I[r)]65>F`VFRt>s$iR_A)L2k'5^\IQj%>2rc;&+*&q"+FQK(q<)O.g=jo=`Jq!B %%cE%*1QGPdX&\AC`6Grl#'_/4rjphN)`'[2)sqj[?KDK*CECJ;]4TT(mIu#b528G^aYF<,4kCUe/ApX>OCB*1W?7n5FC0dq[Z9&7 %d-jWnKb(bIY@Y]1QP%APMBj`mm=3mhnb1)_7Oq,P!5=]c44$11IW,;9IIh*_Gb:'/XaGFri@nd)G;2Gjd*1))gWe;Agl/*>il:-[ %"EXW?@Ad1,q=GO?:X6U6&140mfCfY`u8og)drtm6Xs,P\`eBds-I<-i.6mZ\gdmJk!\@VP1A!^Q-O")5o`jLG=C*@]8N%<[!BPX\;\+'&+ %/#R""@gq10](EPcP5Xq4iR6bRcbFt>fAfdmc@BMMTe!][MGAK*h(Ej1G'ZiDf`+/4C#s@"*1C^h[eR8J;[(K+E-P[/(]1WHIWN@' %ZFKnrbL8d?0%l$ANH*_6\"qZR5[e-DHZ!Oni_]3=Hc)nN)5!09B>Ze`I=N*n:cU>WmUoM*)Ej(`fJS,Dkm(Jqeo[]iBa"2O;$\I%g#CcnQtA:Sr#sGQb-caleFbu2oIl0gk'u.&]s3mTMafi@hOGZJ."0[gDljaedfC'D?RXLN:m>V&C/6#fAEFh$^#\.;Te%dsN0[,cq=sg`S@e54-)05T7'A`pVd7Ma*KI-ulmGc_U]r/U%14d*?k6$H[Dqdt>u#c2`hW&9jTq!(O@9 %?PO*]P)$5uma3\*F]E$.bjF*hoOK"1+_`"S]YeYGEDUUO#-TkFSXbo_"$#epSp".m;irhLrXr%(9j4U+R);:K)tR+LAi()Is"6og %=FCl0Eel4;THJ,gd)BL'hXa+0.TC\IqT<<4W@,1qb@K`qID`JTWJeNVFp,e5%?j6>D):c7>O8iW7MF6iUHG10.53[rPn9Uqmhp,( %CQd[hjN_N3_Q:r/cAMPJP+./S40MAL:I[:`)PHlD?4k(\9-,,IL+um@:m\%+.E;T^\1.#MX0QHg,=A42FFFPZCEH#o\:`ht*hVaX %#LhYPrlUMPmuHns<`kSKZodn*=&Q,=7:60]Abp%L7Sa;epcqR>Z!RMp4,?R:[+=J,Ng-3 %!ViQo*#gC^;Mp[_@oT,7'.\2OSQYaq5GlIJr6$>_psVp_T;O#h3]q9JY+Ge@_JO?a %3u\44Oi?HHI/id=W+'H&f4sfE>tRjX9@n1iYa&g5#fKK'6@nsol:j3aQg`PgM=9)W9U!N):UeqK`@@(lFWCG)N!AZeFAU`8<#h:s %1+mSRc.IH2kX_*2O%l_`;[ipkkQ!<*G!:ArHE9k#%PK],;5cB3pVd0gOYE7dj5\kfKLrM3HK:WqmV!n#D>m&&R\(IW1AWaAe`s_' %'!P@jct5I_!&OrMmG#/Kc$g)'/!?HS:^L7WNS2:@bh-.Z&q\+u17-cQ!\C#2VJ9\CAPcXgNN[TIDQ=pB5%4NCDK2eN_AuoUWjus` %eM_p0Qs@!.T9E4+^rQ'dB[1GcCL9q#2K,sRcW7'_Q0+FHN2FH4IrEO`]@8/3`pVP]Aup@bkca#L!D&dlShr-jEfJn*7?29H\fO!+ %gc.IeN`M`sN>URgP?' %G^sZC(MjTLRG_4N'7"F^bguQ0[BI3'OEWO&pTV6(!=B&[8h`V4`X?NnoTY$.Xk+Em=GbJMF`Fid.+&$kq,WNq)-'a-D@'q(`\k(9 %nBAsG2?kkSDYq)uZq[GsX\],PkMt=*&^buV0f]KAVnep.grlfpTE,H3D._gOs0QXq?JK!r$Ff#Q'M1+8IG=(6`Nu,e:(NW0ja3Q5 %/p"LMBs.4D!C*bmh8Ai*raQbRe+aF"Qi,j.=6jE^JY-s"f5p[E?#=:?G&RbH2KNbPRXrXN_0sFPA80%tCCQ6/n[/1GHb4Ds*%n%ltJY7@7G%P!29L]]nU1^V`@f0K0mud>Vf#&dK%hC_2>nEVM3oB!Uc(DMF;QEPL$lm.Bn2"s3oUJm)H< %_O$Rr#I9P[qkaZ[Bg8fJ\*6U;N^pQiiltG\:Fhl)HL9<"ToSa*ls(X^_Zi(,p1+_j+nLLPc %7;bdfpOC0&d1fI:TbmfSlgHlKj<@"H$>_bD.ULtebTgUdP*8'pop=`8f$iV/Gc`"CXX9o7k^u$n1ND'Lh/'TT %T&8ll!kh?Z]e9F[::j_V?+3hp/s&Z40cimQp14dr0QHAg"Y?lAV$*c1?Ne3E/a1.Ma]H60&>3h.j5Aoh<8g?S2YbBD-ck93MACeT0Fge)Ne*qm9*dbAN!BbRI-eep1B%tlr!YXcQO$&emc3cNS3FX4099K)iG3o;mZ2_5EAr0qGoh.._g_<`pDs"Mj,SHBI?-J_Gu$YCs%b#] %ktF)Z5DPHfGc!WoJ&endGcErt^rOq#iESVD!%3!L_68+Q6&tre_6\FVJh@ee?uC"P;QI=?Hh`Q,seY]*?Qm'IU*X7j3=celQ+i,ArW*l=%pd,bi$*!;qUi9;(l*CI,Bpi[)=N^;VYHoqV%a,opJHp*4qa.W2E5TbXG %@p"2?i#dRL6X&CkKlB^E*"s!H8W7/rj-U`FVGX3eT1HLL-Cm]118CU6HVZ-#O7&8Iqg5:i]=IaoBbJ-D>9I^.HE/F,6o/0>pN,$b %7a;>53uBX.>g;II<7m!p*Sm!gr9l'Qj*;nGZhL&F!>p/N8#nc0TTCo:Qa%@qQ,-_^d^=hBn9[mK+.tlA.">eT9CK(ip2.$0%ZF,\ %Dp1,q]$>JgSogGp"3ei,1+VP-l$bitOk6Nmgk2CBAYBU(R101,k%"aM5-fCBG5l(JGP(a`7QC*hW%(JhTM+IBZSS^nf#u^_=P1s_ %AaI;4@&Sto0I$7NgG0D7)+XALBi1kijX:2.dV72](fTT3mb^#+0G4jQZ6)&DlqM@8)^E/2mLS(NI1K;(-aTL90)Iob?+Ki0r1(.= %I$-9oAgQ>Iek%k5,W-GePLff91iC;HY_&k#'3]*(2Y0po %XZYJ"?.I`_X(PR.BPkH,!HQ&hiJJ;Enu$%IXKjq#PPFuleNmOHil&QiQ];R:g79G7?)Y%'Q'M^M!O=r#Do^PGHf.Gb'eueFZIu7E %@a1dqotW0UG0.Mn,m.VgT5pf1lP"'HGWWPCl$P\1^rO`9?-glVecaB[c;B,>O;W/n0*gfc#f>+bT)@N-=Z:;[RTZaqH[/s;>miI% %."iG7%.l:VhkU9"^TY')kdVh#1S=bJFm1FCE=Dj.QsB[g9\ojM]l0E;C.T?%ElBl)_oW6sJp]r6*)6S,E=Q9edNTYQi"\2SVXp/< %Q..qM0]V8ea+17J#F%3u$f-C8.X/'YX'5pON<78H`g^k)4.+XTN#T&1bQF4VPeC>"Y.*%P/M)po`B'`$W"H+'b^iBqi%.Uu$:M(" %a6(TQ1(9A(i.P@p;R(S#82YjJ1;%3t+`SG?FKiescGfhkEO4de3U!+q<>SH8\/?-ZUc692`6Wrh4VaqlilhFfBjGf$hP1:UnalcY %0m&eK8Z$JnUIN8+#O(.t65ZIC4b*OW!MZou&cojs`;QM.H`Nh8iY9VM3)nFe`pb0OM7_a.\42qf.$HWE(nTD[q1"@BD_"g&mg\FA %:E#l8;ju&LA&k7Bs8%/+-rK+[)Se*Wrqd_s:#6Yl+u&9dY2I0-p'NZe;d..ZiiFJ=C:G/@9SLg*;%5TJN+6S3\Tp_0Fo3ZU6_+W7mX%f+?AVh1u$%BfA-U'h+IGX9'f-=[PoHe,Jbrc#0F[W %_p,#LZ02V9fsSArn.3%rj[]ua&ITmlVWT$]s1XW0_HG\\G(Bn)&[[LBj6tRo/q3Jo4Z8)ltAn %Vk)U=!Z5RQ>_5U%&D"NG*.it,_2)&,=!\4J%VC;I$%e*'BLskH))sG7G_PSgj+ %nf8U8VJfQU:2TM-i+N#3Y"e-o\1U@F!1N6$gWl8'rO(a[b1nbA9RHZ/>:W:5Rt$#)U1IKT*R>=>A%NE[:*!js73#AX:A6M1X7eKf")J5hck2iP*1NfZ7XWpZ:4W4GK;0>u`Wm>)Xl9EMKEL"YIg=&fq0.c^]C`&OHh]:ZqIGUqH=GoGS6#j,$LiUd %f/A67LfVp1$5;H;_sMgg^qUB>-B6:M5\.c#rn(Yq5\.cPQQoVfptBLFNPr(gWB'e.S2V.]W>#'04$l470o/bo?u57.![Ppth03C> %,_JWnLpFJA7*DKY3rt;:0bh*PeGrcm-8]>$>-eYa=dJ+EfB"\fIYc4O%n"ks2S0rIAc.7S)"j@6a[E2CRIQ.fAd`t(n#(o %O0Vh*aVKE)I>R`2@,K2nc['F4\m'qGU6deZ)W6KUmNY.t;d_2LI/s*rL6P\ANQG3G@!Hu6+8)IQBUnC_7j)^%`?"/j2H!FIcD&_6 %bq#(\43X,Gs'BosV@eWhlh-+aO>$'bu=[fEIHF#m$)ud1i/n %&5i`S*njiVnh't*>;plIbdW8e`?Ss2n%._8\$\93nEDcYK\3-b%PCOqd"eaW%7o9+&+,toCeL2r;o/9t(AUHkj#'>ZXlq-o*?UchMZpX7-@8o+Zd:l;n6V&\um\&D1FMP'i]SNU&K[[^$]bd732]Q\NW3,$nW4=d+9$p$#a\%/QZ>32pCVgp.U#ZZ\)T_->$@/YseZ/'7Ij^@P0KSjCMI< %A*gtVOYdWY`DVsV1+5F`1IZ!6("M4UnYa6bqXWkq+HjjW:i7h4E;f59#R-DXaGWgQaW?<5nFC40sS@'WB@pr %(VobqB9a&Ve.;CDgp(8L";W$KB(K<0(WQ`lOkm^qCs>u(C^gU)-ogVT2i.`MCU)qt,.@RUKR]:AEs9F//#qQTbA(OC).M00V.gH- %)SL6Q9;sE,[95MgCQ5pQ_'IZJjHH>1(<$<1g7e+4oFhXp[G=Hdiap=sdO8,;"i,4ak8^@boOF[+@`'9j"2(L0.m"TU %^^IYVNT^R=D5*ek3m0:iiN34clLijgl^S9Xk9kBF/h=3S[VUD0sj:%Ala#?B+Oo4@\Prh8K*-Ik=3'f*1>k\0Xr0%XYY3][W*E"=IJ'8 %"c,mZ!;thjet"'4e6ep:lbs6`Y=o!g#)O!AGHA54Z)u'D*h]OYCH5-SL]LZ:D(XrKHrqB'HJp)Nl/DrcHP/S`#7P,p_4]IjWZ+F% %?8,II3UOA9X)#[Q$)&P/XitF\b$(UAo.p^V\QsM1D]rG4]l'YQSWB%]HiFSf67ZSVEa^^l/EN=p?BJ1tL!^5uITJVK@orjmnlZ?" %$K[=`HRh`hI5P2-MMWTKCWbi_*5HGE"D5bkRYV%`G@k"ZAmm*5SX![%`lV^L\LUdNB]ANo,;^u0&q?]5I!FAJKKnk]:k9"M#>J/U %GH.iZ&o>n=iq6N(^gHAc'Osa=<`-"SrpA4$[lQrFVUGi2X(6[n@e-[p`ZcGb8;Sn)$&j83I(p@F6m)Z>&r-m/LnP7'gAB?>a+:KD %:m'N5N6W]bhN[W/l5GH+[g[;`F&uAX[_*<+,Ykl5'WP'*R8rWLi//JW0%,a9U9VWd+V^5:nc>b'13l8a?D@5:jtR0L/L7][NLYI% %rEuXrP]<'n0nKO*%O9:eOF!#oNGTP>Grhp5>B>(o0SZ#oSVI&!+8&C$@f0sagt<\VOQa:@j$M8.nN[`DVu$GnU`f0 %T:&/`k!AXcV+fHE=Q4/[+WtIg9.^7o599m(/@!doFnf,R&(Ucqk>65/)<6\A$l\CnO %YK&PUl=rq"A0JEQ4I1LTrI%71PKNA*dXEF,"LE!-V(4U5%>sNTAE?2'*5ZP>GOC;sS_`(D8Xf":,7#*eFE;8;hniHWIrU3,:dirF[n3GRA92eppmU^Uc)X:m&aVd't\Lu1/OICp;d)4:+Ks;n]C3nY- %7Z:!=$,EF0NJ*F*35AE4U:?SP0\]E7DSqWd>1o:sN)VkCTSb-E#_SpH<2r6#2$MP7@ld5H:OlOtnQPd6"s4FV[U"4a[0]lXF(sD\ %"#$(sQpaR`Vu5i]a9+qo/sHR'HZ&D6'c)+DrKc*@W?rHrBBW8dc*.YVA4U6ad>#C:n_ikAG9_<,262?Z%ouaa<\:69_HuV>O,17@.<)/@RG'e`O?mYhe %e3Ua+s'!ri3ij8Lc_6u6ZO2Fg>o1LnO'a$hH_+ACdVp5CKgWh*]b)FG)S>bT`oR2><*Xak-p1&b#)!KsRRl/kua6^'PH'A(N&E)m_lnG_@KgAl(Hj,6YF(^7&q8t$] %5SMeNX6#@MP)IAl(tCEa7e[shl3*Dro)Yj=2Vm_[UJX])dU[^%j2uoFp2$a+QuiEV>aHehh5Due2M7,6&Sg!`+g?cV_"\m>To*Ec %O_tXJO&Foi;[Hs_$skl)f(/_WN.tF,6UNir9@+,!#8M*84-ZeiY4E#G'A>.sE;eR^l:mnE-%X<['R:T"_uRXlE'AN[%n:UKgk^iL %9gOK#Z+^_lrfB\YC709]IV/-k=arqji.9*[W]`_W%W-Y.&3DiaCh.J[p"Kbg&bo>=fdLYPS#DS#?I/m`iaP7;sK %d2#.-G!kFsJmiI(pXTB_6L]*gc;jWtSqd:;F:i@G2p^c5b@Nd1@!K9qhmp\UlSk7oOaDS0#]2g#[0; %@T9LF2\I')SkEIR7Nqh=#:m&`j^AQn.G/Lj#3>q\7D\b%cU\t1RfXR(5X6\0f;"`P$iffB?ON2A$+V$ukAnK!9 %"iucm37t1NN"l!Jhi]T/GR43WI4*g)UVFj6QNg\a$3^?+!b!VbFLitVf`NB(s'nTBY6u56?KW*h`LQ-@V(K1oL8Ju9q7nCQY=2sD %>(tCn7rT;7Z_oC(9SBi@tg,VC*\,94o54)(\n'"`1b3l9F?2M %F?MbXM6ARWFj%_mpr8;%a1R$ph7*QQ9p+CBH47h+n6QE3hUqOq"[O\A.F:J-l7crid&!T1mD]82o8hpK),?&ld[X*TXoH7ZS))F+NOlOh?0;31uS2CG%;HDSX^hTmo!7pkeE3Sma?`Q#TXFXS?N-6g6ih$qutI4E\_S %$]L[;69;AR]J(c9i9lscn1P%I?K@_9J3GV2SIF9SlN1.1 %ku]a1"6]hD#F#$*:hT\-D_9@MjTs0qZbC&Z]%9\KP9i'WcKI/4asX4aQ_Qh(E/ %j3n]APlf!lhnKaJ]"]--Tg"MQYR^!B1[-/Q2jm<_,u0bl!=Ohj/#GdF;XO]Z4>t,DNu+NolKo)0o\9h)Z33q>6sP4t@@4fkC.UC:RMrS?5o2l,?l!?lBrhdb%#3t:g&G)n^M'L.UY+fY3]9i=:^ZgNOGuQeg,KGOVL&e0[#aYLi,sT'@R_:>= %m7dFun/_5Ya"7pk(gotuZ46W`Q99-H9(GSei$KVmlKNaWGL")_D-%pSB+TaC*ORAo\;B#H]`c@iR7jKH?#ir6jFjQN`q/cd^K7n% %Z:?]tL>E0.BEl2GT"N(!K;[-7&Elec.M'iVBn,]Qk7t,_ndL@i,"$d/)>huRqAK^5N2lBh;@+9L_]JR4:9T%DlfUj3j#[D*_f6ic %7I$mWP)+\V7AN!1/`;KAgW#X5bAG_VGKYiB"crJ<8skDnI]uYm9%IJMpqmKa6PB+4(&G.,op55V %Th5ZP8Bkn.7)2L$Q4T%qJ#t2SU3Jr6>6r8/-Gl"aPLp`]f7F+PPj2PFm6mLHi@"dF7?$HQhnp:E %.HiNJ3u[DG/C)hK5$J-_$Z-?VV.3!kgd%.kSH;LIgV4kM93R.aZT;^I,gkg!I2AfZ\FaqSPk/M-X:Tf2OmHQL'pG"JLcA*I_ub?R %7:YU\mEIMFZONVaOHM1g]^Z^D3A;*%2V4LX[/1YufL&8q7hMLm<4Asu1IiE\d,o-o(!bh5qWIKNu6aK)^8dt`J\=^RS.j4I1%^3$DC]mnalFq>#3hl)eEHMe*d"dg69K&A5kFHD21 %7:[SL6HqTge$;Z*^'"f]\FqfE>ZO1r+YVejB>foj=!YU%/2U;4Ge()OT(,?$i%,>,&`(-*/;:(V"GKTS.e>OnE6;e8A8 %8_bO4sZ#q%>gdn-I3M"*IL4dNV]c2)U(Qk!F^K&QoV1:g_K_:kdPEQI*PD7*bK)IV'D_GH"RoL't&H6=)@W'/'4@s=nIG/@rD?O,(1<V1.72hGt`JJi:dN*"F-[snsQ1%9@3t_ZlAATS]n4Z],TJIXgO%5Ao %"/59V^-'h#+"3Zbp?.PbqEubqdSGoleONO'JH1%mb!+6gNtg@O=ndL"H_^W`W59(PiZeX&8610^2P3Oe8%S=+[JEG34qb"W.UH$=q %4@i]sjY2_3)35s\DgEBniJo:JO/!i=K651ebfE)5j=">Tei>`_U)]t-*^j%hJh/;2Q3WP=G<)%cCs8*]bYaD_-sZ?dEcVr53D/Hs %aQu#[nf5VqN^>rX9q[\nd%eh36'CF[?M#XfFOEQkG7`5M&DhaFkrZu^4\5SnAHIpEJe-jn %-_8,LT](OuiDD#n,cUP]^\B))GSG9_$:$e2736"dNtR[I\]U\Ojb!j$;)%SiXna*Wq&n@9&GJ9pJK@6Icgme@;PXi/V+6*cP8p?6@*nO2A.LL"WdLm8:Ce/91P0LO5924c8Si#kA`SBFm>t;sZqLb15&!294cZ%o#QDe+dH&)5H/Phfn6F7tQkO]+aKdhsEK8hF,L>Po#^TkhSV]f@7a_Bcl,[s-EhXWM;b+"@Od5UT %i&["6Ni]Gi#2+iLG%@F40\@H!DF\$gJO=YBgH@7^*a!e;_V^InprFXA0Fj_bM'jA)RIYU`7NQi>OdS)P-,E0l1te6#YphS*(pSF3sf0e-7tt %#TXY8*n6%,8k)=qUBc2m'Ku)qb(IPJGnSZ,!G5h%pl8??IDECIA#$b3TrEaIU[KHV0Q_GLZ]_s*OQWnQ]n!C]PIhVU;\U[ej4RHBUj9b'+H@ %#JJ;.D9T>Dk!="YW6T\8)NE"O#j/!R\qNYe9;q`UZ1QAS+T(dor.Y39)%cJ/fDm7Tad=SIu!FEuc-o#G6j'iPCRsg, %s5^ejFno9IE^DDPr?689-0cUI9Q*CdI]/=poH_%Do&\(,',h2LIZ%0'<:Xu[OgcZI`03%QdO7WX!77)%n;9gdVL?]oe@!i1Jc4sK %ZYErI=^O[[5-D[BpOJn0W:HC>ZMs*CGf!6q&Yrf-?n<'XP/KT/Q_WH\n4h29pE1IC/BQk)M`G8IY8tMNeUgLZM*L4L>.N)*/7b17 %l\J:Q8aH_/Gu$@_s&5Y!?X4N,gAN8GToMLg^*4PoO'c"rWGsG:^D<2X7E0cGrgRK8`='H76MZH3mZ(.p#YiBWM#@[6-=rfVMHEqh-d= %oi#g.?)XGpD]2uG-n+1(Zt4Nr&'K73k)qB5j#'GP:Xb7q="=#mD2q`<[.Da#1qrsZH,#`IE[dUEgJ'7C4jik\eQ^Jj,]KT3#_6IU %oRe-HK%/,>TNhq,19uO"b$2iOa$/Z9gH\t^8e^pmQOpfo^seUU/pqS3WgJ=3%$X_E=je6#Jq'.lS*a3icn!+ %DjM>lmrACucZ,+u^s#_)$\/:gj">FPg9WUp?(suaHVV'Ea*,gq4(eUc*n@H/C %'-QI-Jo#;1&F'[s/ZOZ(J?E31:6OgcD`&-@f5%iIL0"Wut1S=dPXr5Kb[s(33uBQi/\>esBYN8-=rg %CI2s57%j.J7)nR#,"j:/7)^K?VtqQ.(DN.:)>3MMoEB9(iRQ&B80]IoiO&2lLVQ1m?oaf3odF?Pa-9!2O,8S%CTG^bh@T8>*iF;&cri88mcY>ci>.2&*^fk`nZcU3E5ZQ*olnnNLH7u5T6![Sq%8lIc&c6 %N"'7CoI3G?dFFWkPsZ6Fh)uq_1-Sr*]]c %#g$QF;#djZa!a!gW`/c!8QF8N:o+0sl?*nKLEIEZS$NrehXLe.8jn9G'-_[<6s=P&7[qFN%7@"=@:W9O`8Ql.In%t%$L@egDJF"T %b",rn0ue:^rk=3*'U(DMVhF\ETm#T)pgJ@M83K8>dPl!2JYDW=?C.EP?rRWAn&h3GeqV+cQZ4kMqi]m/TD($G6(pnnX,jP%A5kVA %4D[a_T0W6u%LuQtZWWhOV#cf!2MJB=>Zg'QUJVE=jZ.N*dU:7`rjd]noX"8f&8Pm18_o%LhN$AMWW(Z;,H:Vo# %1`Q3ba%^\-odXNN$$Ka^%\[<$#eq+^jt[+i-%uZAb4/C?^+n#j^nUOqm"<(2:J$9gWSNmdQ+)3=PbG^S?Z^.-fL<95V/WC@)N)b1 %9-*"m6eW/UT/$/K6Itl_E`XP4E1"Pl6k@CG9A3;X/UgFDMRsUtMO'&?DgcrUmcub2XF403OdbFT=b/rnhZM;J=UL[BYh7?5[$X>S %\9n:'aB`"*3p%r0-T?0%3( %nkj?$XN^U8ir#JEI+3o-'%6V\3?rU;aOk,O8Sa@BE;.*7i&l?.L'E_iQkdF %#g+'6m4hoHB'mg-^#V5QO(P;`p"'jh!61Ud0&NT&p6*hf4ad9Y&ah$+Z;?K`;h]@?lr,N*mRfPj:%o[_? %B+W,]]7lC\QA6YX8r:%FWg[g966/7)NEDeU7W[h5m7s!'-EW2N"lh+f$Y'f5gepjaPb,1MD(W3adYKY*)HClRi@_G#,BX>>'&??&*5+M9dam;@Y<@MdV.]j@,*hb&E%+i>/EhUr_(aX2IkjpMja5:!oDgtjcleA+5!IjWVk6,:pT)R1)eod %g6%JsWCO7r3T&BMW3bl*$Xdr=\#Q=2i(s0PA$50c8PD-ZqG9TBZ\r$F&$hGZ^D3Hb2U-(XpMph/uYo9O6DU20*\U:YI\J/#5^6pVnMN6#9`eJ[:&qnsl[JY3cQ&K;T.=0jAqI %CHglGKnmlL!=%XpA0k)9%rq@O%\JWTp+LlSL(*mRGrfaTnZaoH;sYJ]oKl@Zn0E7RXG0XPg,hp"*Wa0&:D*b+?56A>?$?is7;shm %I5$iiOH[a^X_f61[mrD@kD5bur^D7@[_pTB[Zd58r(cqJ?-cIS(AB"7;JeGTn,pp/?.5X=XVoe=&s\Rs`fN!\lDkjq7P>oRLI;bj %oMugXD"Ng8"Ie-EII*fjP4esB#;Je<4/.DK'<9jknc1%]-a)!mY`pK9Q!N]en'XXB`k)Vdel#NFDnHn$gZ9+n(GV0,.X.+X]IpDI %S.;\7;J7AUn;d&o+!ESTf;;)>MK2brHQq!P1@+(5I`JIBSZda\\p0$Na'-3ocOu(ot"4c^FjU5 %'#eJ?=5["tpbfOqkMj^gomeUHbct\]qJJUSZUo+<^EqC*g,kf2h/93#bUnaPD(*?.d\glYRA,]D<(g-TD.Ec&#oK?-lG49WH@(4K %!=Xp>!sG1MZm6q_J5s4'/IAa;&gq(2lUQSamTSbiP+&66HF/%pG_D51="QSV`^I&7>%2:$c#ZDFS";_0J1;7EMD`jPkcDVa#p,&j %Rur>%m4e^+i2Qpa8dkt6 %+^Y@N<,A\Qq!O;bpN%\*d>XPG:n(e#K[hSA;9bIWp\$?toa];+@+M_9+/gI[LGK2u,m=@!5?+3>&T(t6OIp?]TDhlmhjcElI1Xa_=X(C_R8-#04iIqA8ZZfRaJqfegS@ %o83H:lGJBGoD.KfJK:*:08oNC([Z$+gaJMn\J+-.Pa`3N2:0`!bb"H"]\Wfu"Hf3MWSAq[Au;&oRaRLIf@p7R`), %G2\C(eQk%,L_6r87$aGSKKp1hK"J'B*A.2ocFic_7,\0lDu`'aJ0`EbMKdjp!M]*kS7jS(b(m-Zl;goA/^m.k.ZmTG'"Z/fR#-+R %OS`6bA8`2XF';5'Ik:Xf;SHQcD67.Z0OI6b@K%4dMqN!LbA+ec@VTI^jS^/sM:=[bj3c(\.[IG6 %mqbU1+osFHmMKEDhSuFIht.2n+BU>,Lp/9AJ2=M1Z%MXmaI\IQT+CA!=akS;5A=F61k;""19IRcA)!e%A)$;,feSuJmiD7KF2p27 %#%n(6*UF9[,rDfUp]+Tm*m:,XB:ue-,_!06Z4C9j$D4c^miXK5%?B,M>`rI+*SmX'iZSLd7OrD>c211%_+q=L3Gq'ke'5q0?k\KY %a&WR>imY1*>=[K=0K^AG4(D(i%<'Wm"jRucIII@oW55(?l+r84HpU'BaRiIA@.a=1r%[<;pN,ZlbAWnja4'Ma)>K494Q6gBTSYuT %\"EYk;DKg\fO4=oaOt;)jBgi3?.HpU8e!C\'?p\M!UlN0=F>WnOm_eaE33Z##ebUFqVP*:\#.NE1`mZ-+'MB'[&&4b@=;g4rQlDY %To&KBg\/02pS!<8Z.\kM?gpDjnRJoqa2[1q-K`?lk7=]BO)1>M^?-7JsVn=Y&%3!rI%9^^QaY;'gemS=I2uogJI)ZJT82gbL7 %[De-eEn$u;+]4+N2gmG*7tqX95-A2291WLGha?_IJPMRaqW&3JkM'HUS3q5gDuB5$546IOn#,UCn%6Q.S,Pu8HbPn.giOUj0G_N- %Vj)4TjQ(Fq"QF_j:Oq.6$8`p3`GVf@XTfZ5njZ %CNa@S7^YjQG6kCQ)_4u1.ThG6a//&jgUO@9qC))DE\u;6&oU$pc4.29fR-2V_"UD_c#ek46=$roRLN6YOD1F\HSdMC(/G-[m6X[r+iN(R_!L)!N-9rXrISqQ?:e_LXe-q0$Jul=n.qbhj6/gu5V`1Knbb5r1!qdZu'j*(GkOc"/-=bb;#![5:IjDnL_j5sI+t(En`g^kPr9GJ3`@3'HF3-,/f;SPP^9hDHIH %\nP5:U4Ebf$nRm6S>27M\4n=+NJATrdL=O]E&04*@^j1Ba>(KC3V&ngfc:d2p/e4Tkl[UWQLmS0"IeGLa3(U<)R3#nW?JSGmq\SRPDa1(\FR.RKel.Khc==sQ\(<=o/((Z %SQ*ib:#VtO:aoWjHEpOB2hh#BbS"m,rR=doH7X)/!^i(*McLB.;A4#:=hB>d(cUEaS])ICB,HuRS'%%M?f;sM3#gumI_F(sj'P9m %Cea"i^hgC:,m/I>`:[Q5oPF,W!Vfuc&T_Hl!GcbQ6[cq&N09o&>uUURhVPA/;-sHgRrjO79R'Z`(qMZQZf`L:=i$3J3e"oqi4.;7r4!'N.DJl1hKqbhTg6QlSBM %e!IdXk-Cau4uLB&FP/9GDcqXZW&/bB?3EPr<'u$/MQK*H@)0j,=9shpUFg916K:8'ecE+Hsn\'%D6gAlr7'l.ERK3nMkNi15>N_?/^sa$\D68+o9MgIt5k.9+A_+jV"o.?0?,[S`42uJ>^\;9;%''Ys %ZF--t(8A[?1"10&k-:]VYS%uOH(T$Y<@%UW\Wu($h"K! %"C(j?Er&@CMl!l7LA,7i5;sfg'?Bs(H*saJ)'=2ndQXCCLK>LU_raP-1o6>c\$RQ&b=27<[S_M.GE?Cm*G6cDR3E`C7OWkb4#ie5 %nD$_5Y;?q7p(W=f[*LgC#et?l412@mL`%(R]5Ro\_tq0@VhFV_"_LQo;i%pm748@Q.I&sB9`72@$'#1C?],HXN-+ZMoKd$P;s'ht %do!^@,kH,BKK=u\4U=b&7B%?hX,^(Z-WR5Qq5g@@eq5O*6,;ehm-@polm*bJ+?+J0-9Fbc4c#Xl#brCde/m]%%ao/`&[t9H\$J'L %;+Bt>Epb>OG8.>EMr#HXnd\QD&$gNm&q*8)^B``4UIa$5u*a+$KrV*[MOslAI$\`hT3eU\NkP..Sc8Gu1+q#ur#m %/K`IqO$]7)6-TZ!c(dtq6.#3hr3M&1gY.X@C\S5e.aeuQ2MLI$4VqDJbAIYAeCr\%+5[CGYn/7hiI/or9V!j$S\aE38q@T%#G0hOW:HjPG/`,hsd]l!jk.$!^e(bNYAdek8&Kb %M?ScX.:R"r!2bX)d>n9I0=+EmMg]K-__52p0to'dpiR)YgS;\c@@LJKsXkg0p38`QW]LSW3HR4')gr;k1Z4\`5nR9>;hBE+D9V'#357>WsMHW_G`7QRmZ"s*7RFD>m( %D4e>UOHPQokKjt.'&Bl(Z[V8C-shg9Ke+m^R+[o>gjIK6lD&[K1X`Y(tD#%"gSG@9Dnd,a)H*S&fiDnZ?ba9q1@sKhO*5d2`eM_7*.M5_B5CKJNTVZ_]&># %jL0TT#Is[Vot-P%H>kb=mLhU)hi$Qti=us'CK0#NmjVj`laA!CmP/4dG3.NOnX8CM]FaGL9TsQJAJQmihcn_%V+V7t79KLK%,%of;J9-Gt&5Z=mb7)n-i-kc6c[gm_T7O8^A%IX7.mnK/08?OK%-bqgn %+.?('=CCplY.!d($&UKtJW$KV%V9-[D:O>TG"F)]$Ob)-duWDJgka2H5V:Z*"G!is;W+ZJ%sJOkmW.a+8D@mc8Omq'-9S>-SZO"C %]ki:oWhpHOXL8k7kE7>i+;.C@bXR=Z92LP3e'1gAggG.rR+7Ye5jLb;5'Z-iYqo5eTFlJ?Ha.8e^$/#*d6#f`4g):MU!?/tKV"=V %$WN9uX%;Zl@.B"aBl+"Fc,gZ"<<[tOh:B,i$T0G[QuesZKdK[4l*RI6Xf,n8ASss,>>Z"RC=nitD1VVJ&-]`1 %e"A7=`js=GYMf%UV42]?qIPJI).I=jn2KfYgC96UJ1P-4GRNi^r?)OeS906.E#`4N"n"VZ3+cgRZ"@YdKBFF@lRmdiCbF<'_/7K! %Gg5^B=Mg[H+9\MH;t*f!O;-Q8BAs/71ea\MBCHNQ+YC%).L.8l4SBd^/c)>N"H&0fQEL$Hdc?Yu28O@mPo^2-"c#cK])\25NMR&qM %M[Andh_9IZ?Aqp&OZ6[U783SV;VCmE&hi9^"ZVcP5C0#,P0&BuQJKuWlOA`l^KK1=NL0hQU&>S,;OX$(fYJ7ZZ.sp7r':M&6-j;U %P.Y395GL\*#YGIS6"jEn=Vte0C)@\]P+#_ZAO)d1T2;^B_r.VN,"2Si[*r_! %J;O,Fm;\XtFu>Ka-b8[iSGCS\%sTX\"0Lj?7SJ*^Al\FZrKkVYKrut&F1nZoKgJ;AE6%Iaj?QX\FGH'F/tD(HK8W["(;$_7/d>`= %g[$IWCP:%TU3TgJ^\\;qpM11mP6MHT@"O0+@cap*5Olm*=Bdb[75e8..n_hZe4C)q3#L+:,bsL %cEYcB[rOBe:XS-84$8qe@L[%W'N86TmD%co&>NLIn$s[UZ=j"p7SYp>>Ul-eNE"2n&hR)GUqiY958s*=1'Og+Ui9rsUdm`tYot9Y %@+'UBcER\l:gn5EDusS7Uc(,)+M6$sJSO9X-R7Cn?JP[h8A.9AZ!!_V:`c!t2pG/;WaJeEjBRmn[8eX.gFVtQVG5<3>18[el@N:S %c0/8dD:Qj!G$"eX'^X=HS-m@PBJp0I=bR#"0Llr^NI9.!WZ=c"/W=Eqp`r3mqap.'q0eFSde[Yl4dO>:RnR09Q^a@aHkiOs'#e/h %R2EnS'2HLVc%p)5k2+[8hZ159[%0Zj!/a-GDq[L'NI`iP:sAuhZNAZ[Jb9uaJ6'HP/%D;crb)J8PZ1AKi6*D)r-kbSc2]7eW,!#+ %5m,rA<J*#-fK<5h'=0mqPhZ %WQs1%eLJSaj@"[HeVX`K:?*\1XhYD^N(5/TZkPZEPhWY*g*1*,;C+m?Ju^BK1Rt:=i:M\"_0&][O=4I//KNuQD>8biM=;[,e3:qk %i^seh)pfMLFR^WQUX8MKV;>hl:gQ>$omKCklgK23qMIa,4JV4*b$(4c:4K9Z9c'ZW(TQ3D%h$O.#"fsW_p'i0qX)PmX`C/d;Y_`CIj.sZ)M)s-MK'=8n53`2%S=kEP7i>o@Z2eu,/N:"_ %AQ'0g:t[\1F@95/%G4erH#i!#`Nd@lq],NQ!K>EJ?RYWj78WEY.TBBuPWlFu=!lIp_AUu;BQb8]Vqe/6_0-"#'-oCkQ(r^>ptdlP %QC'Qro?ol?jsn#DW@`C%$"&LH)!me.0T]gum9IV';HW^!!^@\[I7i^?^7:V);_K)Lb_WJt\D&UWRjsPG=@W]&UZ,f^R@#mkihO.j %9XK*-W8s@9n#:l:S5.ps)Wo<3NH^K_V$J4@+T/V;XHl3I&UAH1![RWiL"TtLDj6$d`*i6bC_cK7b.C&/;G=q*/='!\9FDu.:Bj352+g)@U.@h.\fuocO!lVHf=fENXT535XVNDY!E!tP.U07R[]YOmetW8j"C&)JqLIiXag.M: %#=Yi@/?DXqJ2nL'%jP56_#WUNTRaPh?j0Vf"d?ULP9b[[T"3_4L/#[WGY"MYT3t'r4!`rO,k8RtA&QolG[tcYdZNY,RSab'iA+"Q %&kk?:RE]<-3D:?N'Oah?0u9G)+kSm*SGc1FCCVHgd4trK3lbo#$,[B5[_O;7&Cn_%?(?ec<[jQ_cD!Y(8fpYa>QuuE?[K<,'Nn'k %E-c7peJR>(F@BAeIU/6ck7!SNCXs@hGaY5K##MX-Zdn;>2pU^j^D:ZISSu+;"b4WVPmQ)ec&#%#80h&5X#?FUh+Y6)N:X6sMUi]R %]UfZK6R^lTO#*o9&`2u=j'V*?'p;AKd\&'=H:g1ej-)at7#FZADL0\[)bg$pns4qPJhkquJGP%`!Z6$H&T.khl/IX8>WiDh_Nk_- %kp(&B#ctn%pIl=^RFr;UO]DIk9nM:;RBh,bbrM0PPKYj!(,V?[IRDg9VI#RVTj_*e2N$eZGM?*>i_C9C^idR %brDc+)j@5[e%DCaOk7/CZg\gghGQ %=e8SL'5%OT#]J-06u#p_U`ucM`sla7'B-7dIMXI\+>*M<=GAYb*l6>0[i([21+Fe;bm["e=)jn]LMcX2Y-!FI/2e@IOB.K4@i$X* %>]@s;pr!oF@7Xu,#"I4]m\s_:eRfdHUng]b2">\!Gq41i1Ig*+YMa25#qeh#Bmr=R/IedXEY$7'=,=SGUu4W:n.htn'jC/OJbb]! %Hq9/Z,Z#SGXUg9A=")ioD!s`#p`Y@hQu.;f90X]+?RNH-&E=9MoN1;N#LrZ=')r]`s']nt@2XWKOos$02c:B@fltB:(>)$.>,Z^8 %,]n!4)qP>H2otd$G_tCMDt$gE7SUd_bU=VHc@_UE;IrK& %8OdDn(`ro6H_kCX[[P/YG,Yp!n70,Dq=#?<[B&t0B %o8p,#L"a)pZ>'mqo3#YB4!Rs10"XraRMd<04&?4l\B'3#$k7l<[)e_Jo_q!+d;%KPE]*..Zh[\q]<5iKj8jp\94J;k/^?U3a^GPN %QLQ!jP4p4)%m\,Z2"E,8H/I;h=:!/L7i;5\1ULP-<)90,%':cMQ&#:VJg.\/ieTr)e"(?ef5?dC_5#V3h$P*rpQiX.Lr(,Aln2Du*ml9!34_X@`O7`2U/ %Pn^*(]$i>fC*e^O-/iU+RPde!)Q%na-&7HnabEB"_t:=$<&T8o!b1LA"K,?5P.l!4V*djoO:N]J'[WN%=3UB:EYE\u\B2Mi!5>I5 %EN$kr53'^DV-"(qZ[JC,SYkge&nZBR#gk=D#-#\;eA&Ktq==aM1^S_tRD`eg%=$nQR'r68#issIA!`<2MDf:eT/FCX];8f %=IVGaUMVj?C3B5T76.Si<1N)==q&K?Bhpi7k]d0$ebiW?!I;2R/m-5t<0RJ0P#!"."?3L6N-iEY-#\Poq_4#(/Y>09\l&bH0C5j(/tK!`1Ed#nsrPK^s1T`'=N3S_4^0&DQF^o_8Q1 %>d;QWdLfo8P3JQ?A/c%WS+"G*.2'1SPbkB[1,E/%6O@mX %b4AG`."Y*jKA&')V7tIt,XPMQ(Id-4quj^8/','U8r'?]Nqs`#WtC'-'?ZCVI"N#;gEVYNq8D?7'"iBQW3=G3V:k?_`LmVJ?l.`B %_2/UL8b>=_LJ$h7F>YWkn]$oMZGf2jeampHehN`]R/0f[`0;8h24qB[inQ*M,8?hhE"[cCLW$2H;#tm:_?K.C[!nJ8.U:p[*cMu- %=c_0u!Cr!!_\C!s3hjT98??c33^Z#sHU4WXYR3k$YQs+[)\n]kqSZS7O,M36ZYI8e2BA'GS?NlN055A?W_-1o6XDVc'N=Qb-eJH" %NK&A49;Q+Fi&#e:P^nM"d7Rd;*bbCdHYQ*0U$33l*24st#?a5[To\-s,@l-4Pdig_qEQR,6PafD8FHR=?Q'a^q1k(3[If!7<.[Ea %_+Kq%05n:t&QrDhj %&,;_IKL*Vp0XkIJ&#-*>3\r`3R@)*KN_ZMAi$49O^B^j;2_'h["lTn;hh&*tHXTP_+i?jOeWg]96aX-):/B.n1PL+rC*TE,=jUke %O\=DArLgke2FP`]DB_.k-,W<5nAfNG5r`<"ZBaBor*J.6N'rGCb5FT?O;BYi!#P,07ZG_]pBuX8iSh)TeXB8'1 %(oD'W=_NS<[0(=$6WR-(iFulV]MUEQOb=E7D@"bJ<&T5h"Y;-"hsaVH[#QR(`;t.!+:1QBCjm'F+n87e'%I":-#cnH0UFXh %d.;DRclpa!$IF)!ar[7c=+K-p;"tSc^&g/6_U=2>p(ah/$8?o7TjNB*.n'N70>tUZH%8:s%Q3U&\;EaKm=;tF7`Ec<5gc9nB2;eI %k7%%l[O-q&\[fh"%km1n,1O`0"&)*`iLYJDL8B'L=0WN$iE8VdM>!\P`HcOJ&Z[b2[5r@!3I!89r9Jrs"*nrQGN#'VQ-F&eak/nm %nK/C$;QYCBjZ7%ik%nB\_H@eUMknOp$molcT0%"W\;DeR#ERo6EP,"D"Ajb-DPa?TehmG!8Q\jdcS*$AlJ#+mVdVfk^_m"9F\k+# %q7RHNMCP+T#P&A4j(8ab;J$4fTn7DeqK, %Y/qP"=G&Y`-Bn#RQA11+`$"FK@LUTaKh9je4D@n3_Kd*J"4A7sA?IOD_h1$QL87%5_Z2YOOk#R':g*9YeY<$fq@-aN-[B%ho48\Y %/Im%!@_9=I7?ghT;HQlm5+-cS#G;p?+A5hm:g@B`hEf[Lq>5rQ(qiu;,$Y5MXa2\&&;7nX">/9G((>mQa&A'cT/-Zr"gi#((kZZu %8io:\5qkif\KV<8K*^G1Qn930cb,oM9=[=dleg1l1L`So.PsNXEWVkA"-,BUp3Bqih?_o#i,]&.G]JC,Sei.9J,i%S7cP?A\KKlg %No6"kb_S5k4fA!!0T8B+itrXo6rB!7Q7LV3 %+c^W"p`+oR=)as&`9@UiFb"!C@U<.*YsU)0&9YUBclJj+#IrY+N:71GG_eI'Tp1=gjtZRT"XcIO<"IC..nK%NWd=pL]n-t@ilVK3 %oG+b0&D97c^^guVkH!OA!D7,2d7)b/kSV.;9c%(;%MKi;.lgeNFKRp`f4ooi@5?Lim;+(9D4&O*9RBu8OW11H%2822P4XJ8IDaRL %Pr-=BPer(&_j)Ld;*s:sol2QXEgT`bcFmISdlbk<*2\1fUkoR[8k6Fi.qu#YN7MG&lUmW40Vrr[I(PQ?4&"o[V>m]o$BNYnLC)&& %ai_L^."dC+KBaok-7n>rJNpk--Pif,(/$9W^3HHR[$m9gr[9KOois"Zr.V+W;^OJ.L&IHE2_RQ@M_OVPabqef-TrJ1+(iE;X""InJ^[ji7kQ#g'#cOB"T.(1;'l[UE %U>Q4:*Ep=Udj$`=PCnj-?kAbqkK/0RVSZl"@Q>_g+k<[W]cdg(l'k*dOp$&Jo]1e]5-G15psj=S`jVduh[1!>K9HOQnAoDn%%D9+ %J8?VfsnNaR+)IOa)ZZj];?cm8I#'\)%eY!&i*I<3Ir@bN=_K]q"2PhfMifDf5TL$^N@$W(6rZhh)SlR+mN@W-m2#^6r&#DBqA`/,]$6Np;k6N]-T)sU#k^^JN$,eDGp`11V"#PHp,@pd %8p,@kL6NFV;G$qX(mJr94Gqog2No'1U(m;R8]t9%Z<+ZOai,aMZC)H,R<=o$T-paU+^qE358_3BPT&olC($gW77\.(1R[!PC'e[\ %C^UK3:e@[ERa^%b7WqJZJ5u7krPV3c&g.gd*j*d+E9S'$s'@i6eblB\VcQi2Sa-NW"ekQnhOor>>RMHH(A_]%@@R%rL/W%]2T^K! %$"[c\\XJ8S:?r$Z"c6aqG#G)-JQ)Ym+*:nmbM>MH/g$7"h5IheY$Y"s]4PTjSD!u&1F-6\cRIjed,V2%"sf5++,TURKElPj.t0,9X9G`^XoR.Cg>0meghm:;!?+AD;103D+Fji+HCgK7Q]\2_l>l\[2UmZXg@*uRIpb(Hn-B(Q#QC=Ye@@5 %LV%*,T8#FGYXO=oH&\nDNS&/;!I-jG3$M#MgDp?])"L1u0MMsY.>A6H"0ROs?AoU/N?R&r!Aas!d$1Xh.n\9$1q4FMI-R"AS4Su# %hKp0/can&F.V'/OLE-lEc'8rOm4]Cu3sS:*Vul9;!=C<\%_,DkX=>_//46k3+g9&r#L&8_AqaB"a?ihL.@.*#ifoR\64Kl)45bWL %1b0(BO)?em3?Ug1dO;4o/e.'5L."dHcDM79eW?_"poL?Sf+COZrd3LXn[P["!Q@D@Z,uO6` %3%AVnWYa(`VLTsiN*csN-Q>[qceCbWHf3@ArRYj^H?/XmDCqP\<2=dh`!MZ*I`+%:9kg7sWKACN`bpKlP><=/,pDA8?0VdDHjp^( %BSDb+mZ`\-G*Ok!aKII3iYo%E*Er1Bl/XcAr>;?%&!PNC*XV3=h)o43\5Dc$B0I.r3c&ojJRN2H_]"V$N!_N4nT:FCo8qF2_#CU% %jBP@fW:4-`6(:Qi;lb%+'_5SZA<8$p']g[\@d0aU`g9_Pcm?ZWC/o?3?VZ(d3(QQkaX@A[&crbRu %R`1K\YSZmB1%A<[9\j3A?ph=XABUU;jX?"l!4bjI(8XD'L:+0_DG$gG'B,GX>3r&n]O7[ %_V5geDn+AB!'`lV?tYX5)uZoHCJ:%#9,20ZSP$b2Mn$h[_dYkR\T0?LX+]f/K:X5cXK/K_?,bJHic-,?BNojVLep65.5,)-Zt1LC %JSVtm%$CMJ@!tk+Ibo#bZk9BOTE-]j.hZV+NI77Jbba8JlN6JAJ;I^C$_.?'21jSRn15cAF(Am:j'muX@n<+E,2!eGEi`)]N*&8u %KHMep+[_]\'hXViH-%Pr_MF^jaPq0Spi$HsbJCIbH,=NW%2S!H_Hg=*_sK/53nY"8,]9L8hJ2QK]aK%oa9UI.Y]WDd'76YTNK-rd %MN\dZT]8Eb:un9Gi8,AH_MD)u8A;<'e1dhH3NS7O;Ftq3F`UZWo:VE41\Fg>A*JdAa3=3Q6$Y,>YhLY-J$VHg%0SAqd?UAd.I*3u %#p[&Kn*9XP'F/j)nFB_mW)bOYiUs[#JI_[C_VZ6%oh6Npkr/.<8OTaEPO=5L,**e#u".>D2S\/'hbAlp^0^SpKkmFbp=g0mG) %EUhd1)Q`kN>4Gk%;U9]Pe+qBa#5%Jh+Zb5_(^Y@&`s9PeOS5p>p>)5e#?BPt<'78W5,\q*;Fc1qQsmqk0Htil5fbY\MX76U]E'E*GJ6hD1F1[WU#]@MmhsWV+4R_`R)-D; %Xi%PpULL#;:[ip5>.=!rk/glt2(ioY3TqgqIhXPiCegnW)[23NS($?j6ae*.G;*HlcC!_T&O'H>"dHea+o.e"CPAWj;dGoU9ib00 %5s3$HcM9M0d2KRCL]qKdQo&%iK9`f90f#OL)%r:;OIW9B`n>>H>6HB/hOp#O+@U-%c:pY.eNit.:@ZKPEL`l*DKTBZ(I=Km>$=4d %KiP4Olj2h&TYNYMM;^l[k*0"WT,BE7E(+.[/1OGV?_jbbL$_fNXeJgdB_V)p!7E>\*p*>$&6,#HKT-5soXS;osVkF3o4Q%4+N-Dl/o[5,8 %L^<[j=K5EiaHcXEE:Y-@AG`J*qs)Yh^:DX64!5.S;%B_T'Dm_$@_*UW">NB]NNL<%EPdI[>FL[]0_Rpqaj %"pQe+\Wjh7'Q[h]]n=T;37f(ppX%GTM@$A)U`Qb>%Tuk7)-Vf3Y!_'t&P$XYn]Bo:oBZfWX]pG\fi]ReB=#iSj!*R5ZuZ,6]')Ee %n5iAKdV5/99g[rF@u!e.*`t"/*gr:nJL?m5;/'X+?ufe`X/eK0R"KnuK;rMq_@\X!X[&gV]5l%;SiKpU71^aB18Oo525R\tPm^oO %8HZh$9H7ah=f('0q*ss)4;B;J3m-DB?tNq1$k%-,4OS %GqE_j_:(b=$4163F&F`65mYeo*[]A:p_1/rXj-M!Ph.66W(`\pImhGbcJLB&H5Vm_N9f[;$h!F[.*2mVfTq9!9Eu8,o)"\E`5A%_ %_tqB:R9,RPDWKh41Ek)%_X%LYfB7I'-/_lG=!0f(Hk30"^4P<#&c#P>fsZf+3! %#KQY5rqd/C9!mu)ATIltLW,&f\SHh(H$7j**>Rf4Gpj2CV1P*4!U;olJS[Jk)XW_Xhl(Y<00Nj?rkVa*/n5E4J0uS,'d,dlM&j8ed+#ES?k/G!6AHtrd!6'm %%AJCu9+<4EKVWE]A=B\.6B*.1R:['dQo:Z@AFUnefp!B,)']n'V8b<&a9&6&"fClb^EOV5M8f<8c,%s-u:.]EiVY,p,c=fLL7o7RV(s3OSIC\s[_`d:%?"d,bA+/Di#7pI)A`$MFUeg"#t(&s^oYG[ %Y]p2K9k8qYs.Mi7,ZH+-#2(YcErb^O8:;Uh?OW7i18-I*D$YEmdh#m&92[djj8o[CFX9uL!<.u":n0r]\R/e`(t`!5O%H8fd-RE] %+IrP_:XdCqJ_1a";4s$q,B0l#eQs:3&\Bu,G$%^[V>SsV?`NH(dBWiP*0ua*QCJg.V_QINE\+71T//8h)Nf0)XoUbB+OM@&F9QtO %KW,F^X`qXYc:=6Q+ClRTaa2:>pSu)O#@:n)TSZi"Nt5p6J(5Q>pgHU1I-)`t1dlSVSE %Ag5qcMk2Rj?:%lBkMI:Pn?Z3ONSit*FD@=Z6W$*XGb*S[1kCXPApXqdoFAGmp>*t.E.CIP^G)0(mLOt*')T,f9=mk9fnJ]qIAX1U!^Y`\Ms$g;[LT\pJNjq8PJeBDi9K^`T_;IU-#PTGeOp@i?p4!NqeBYR,jlF%g'+Bj"K<"? %0s6>6-CVNUCd9gpRP?K('#Dm_P.J>P*cR?71M",4R8]6VZaql1?Z<"a[8?p[mN'l.?>F:fn^$p7oTaB=ZlU %9TQD;%XRWg\sA7iQsjNR[Y3,$So5?XYmP3U]%>0mL@t?t,ba[2,-'7)Zsp.>+\TZK6FF %i@pXQkcqG`E%dC!No2n$/`+)VZCRPKR@DU1Y57F8@diB!Luh[uc0^+>GMBnKYSr8'HH:h.HSgIZ7_9D %#b_a'LY;mU$WhiaK:YS!W+LgCBsGf)G+n_Y-`_5V %*U_LF/i"eq+u;efs6%9XSnm(%N`FZ2131^SOF0S(.5gY+MLA2?[m:.>]B5R1WmmhB'"Xa66,S,jifM(;Q4Y9=i5nko5%(*pG>RnJ %S=H8[/I@TB$p=nbasX0_QN$@re?^PtpXE)Qc2!2H"LpW>h>70nDSRK@MT86e:b#b\N4U3LDV+[n^#"1YRcKYD-i+9A)_ %YUYqaG'4RlQ@(K@9h]PHI8JJt]#+d#QG&j>hR]ud3pd/,",A-V'@a>A_Fg7ZG"W-a2.V]L4_odjj"1.5+TjB1(K%VIYFA7\c1,n<*)I[a]Cl>MXjrfduIF5)(2GZU_!B'F?XbcL@*`ns'NM_., %6TObWBJ>9A/O0VCc(PMD[VgX#PAK6WRdOE,P=dr:BZ1`#Rh.'H[3-,U6lp'ZVXe[r:B\\-oMJjB7A(1^Etf69_A&aUMF=Kfo9P,d %S>\_!'92C,E\*7:l(5c_2cb?HWMVDC\S^an#0$$IsbUJH:S@Wj-_DH'M@r\F\W*EA8fq%Mb76f\\+#h%C$nJU)`Rdh)us %-^]i>@7nUZUoR1=:**Pc/L26s;"\ra`&IHSa+.83 %EL.<7HI.oiK-5u,ff!:M(ZU]h&mIFfBX2/W23]k(1pSMD>U0JG_q7L-\S^HT9"*FgQS7`,ER?iQU/=tNkB\Ok"0.r&+jC"f<>c9< %Aud%hie[265\$Po89j,,[a)1pn6Eq\D*TC5(VET8bD[ZHlYXn$7@',.?r"R"O=`\BBKsLK*.Ue8^C7qb[KEoXie %1AlfF69u#H'%f/$jGE&G`\1V6hM?o'2q^>q(:ML.SE3s%7q``sHcX9$?I!@&/=`khOI"8:P*rjHdUVM+Bk>nfALp1TWe)Ru)U?RP %&IPQSRir,OLKQ;8j=1M2N2qN^Mk1B^PEDM*b!JdK]()K&!B&r2CGuf#(gD)?[$\700ZB4%GocA5!mUEj(Nkcq4&LYr=cd\57gb#e %0f5dIa%M'scbd9Cl=@fS]h?8KY?@[nW!Et^-o45;(1[i'@&.S$/i8t<6]#[Dfa>&aH$n3k4c'B\LBZ#L%E';_FjRcO7Ta2/MI+\6 %P!m64Q&`6@kG`ffKp$RF_?=ZEY[;.QdNMHSdq@;N[,VNX&lLBo&FL!G2XC5(`i#inLcClCpNjH5%m,<@,SFLp#.g4(%I(gfgM/>h %It6mYI9T[8$=-q$BCp>`-+EXFH!b9c2:aDr+"T3$1"#/\R0uc8?CfE_NTg-+=\sgHN-S,#pBd83`02'LIhC4s %"C*A_U>>sTSA?am*XW,%Umg3SKX(!@J=kp#9eZk$/9]=D1AC1;EJBbumMASCM0_fs1Q^V6^u*O[o&sRq^tps*t@2 %9TOpE#SPG>6,aYfYP7Yu,>2YI%VbsuV!2?me!bOgK&sM(YaEsXKfs#dI(27+=?RAh.8Q=pan1R+/9hh+gA"O+%a=d(/7*[*P+WpqrKVsJ@g&#.*$_GSESPmBQK]'"lGct7(=p)sX`#uPum`$@slaa*6B#4b+":=0d.%OJAT!9\_n=(.I-caFKE %&beRo/4DS^B:jmtB]Rk"\]h4![*'>WFf?!PV4M;e*-HU)]*M_XP8X!Ye>FYT]%2P[6UdRQqFRc$6o7LY,)S4dOaY#]0nQoG"jLWl %7,u4]TH)6?XVB!mRa@u:e@5U\_F7rP,N4;P8J0SA_<%Xt2Veu1bj[r+EV'1Cb^M8%[NE4g?1u%8@^T-p;>X@4'b@@C-:ZMOSVgfE_e"_'GU^ %fI4Dp)sC!4'0u4Q,)k7o:?n>$GquYIRi`tu+9l>*U^$H_bp=%YXV*>0'%Oqq0F?42X;`aJ7tB`I'$]VLaql60=-Z3hTO8DK%E-%f %o7?'"pJEX$1^0hk6G+fno%okei?"6,\:pr=d'^+Fg+pr>,5EHWjaIi_QMk_=4"@lL";aMIl.sYmJJhXS'n*pj^*?G&+ %`er1J6*!N@).D$oc%;TI#3(;gZD&HFM%ruTdU7;'kZpU*lX4;# %C7N49:F>,-e671,_M-"TGdKQc%OjA;bMpCbi(ks5cUB\o\M**?TBRJS("bYK8/e?0%/sg%92Cr0VRcd00$G$bE7nr)OVjHAZj::) %5m,)X1Pjk5A,0^_YMk;dA5'Gbls_t7-"-okOL$g$/Dd=IN\D3*.m6u(A=i4R9i]te@r=@h/:Y*Mco;`L#_"RY@0WO-fiJY)@6?0j %BO>7MpJp<%T`]VF5V"t\J6j/1/^PX<04\9dQVCCt\pe=6R%6\V)3[OCK2;S`NXeGdqAd3VI3>>HS0LT*^K(cBB'hCp>X^W-BFmq5 %N"#qaVWFBs1'A`\5j:UjQJouj=K)<_$>0E%.b0=TM=R?Z('pWH3MR:OQ6Te,(^C<_Frkpm4-H; %6:R(A=YkgHLm]P!g]4t?K=W1%"Uj+AW&biQf?7uA]r2#VpY.k_N5YfZ('QY'i54TF$fI%u1G!CGA4+[he(U(TSf2aU'shXfTpQ@) %)$:Dg%`iq9LLP.^fu6`_VATMOkBSqMQ+Y#/DhS8@7Rk7NN8/J>]J'C"^TZcQ7eA5C=pk+peX!?B#)\>]hOuM5?O_"&$Z?&ko7lXD-l:e/.Yl1tQb;Oh %!RhHKlk*83N1EK?l^Q/;W"CZ8i4@hjH+@q'Z]dhHoa=#"#J[+kYV:TMk==6NfH0N)a0Z-9Y[T!)-JP=(6oK%MH]'Vo%KFF:+Mr&'bICHCb'MNif(u;IPgK+Qr-S!3NOc#AE57C4V6mECj%Oh %KbF!o5>i5@'oBR6O\h,6Hn8m.7YrTZ=#$p)Zi/$,3']Q>dPV=u6R6l\5g'3d$JP+siOJ6Go6o*U@+)@8d\)4O"Z]cA8^OUpIXdWI]qBD5RVXY!a_!-c4OT.aF_f %=4"'0O,iL8cQ0nm#\GS?2!;3##G`CQ("fe6UOI47qbM'IrP`pOL!$c!6W^U'G\:>,+UW^9L".!iU%&=,Ml*/qN^tXOLCg]HX %'CjCY2\pQ+:t=i=Lg.jA:^K\!FRUI;pB>5uGol5'%':.!1Ei2eRIl!HI2NWFd,.SP5'\#/=7)fN\(Ic@1-uB_JL&ns#XDC.iiHG1 %gD5`ne-ApugY>'e^]NrRnj_ifd.JU,#f%ho-!6HkI#kTPJu\s\X@'E1M?)5,6Tkb`<^MLNhYP$aO][5Ua_65rW*(mt,/ig)/*Me3 %p/S&G)V$b9pu$K^d&nB1C.MEbVN(Wt7u*PR!O=]Lk5:\d6Q@s.2b&hJSC3fL/W-EJ%1P"IFSi2+/<[%VYcIR;\aL9o?=,4[5^/3`* %"bnc[Fb3N65`k.?Rf\O^%1*KbJV_6Q]D=i@@QN@?TR,7B!&ngCgHRN>Rt0PZgR#8TB["F>kn'0,>rL24t!3[U(jGCmEjm[tZ?[3LY"uY,kA) %h%n08H8SW-$&\@$$(j[K%<]TO#XPMIEY$cELm*n9Nq"P=p: %WFTaS^hihcp[VLrQDnpWs3d8gRAJ*CWNNa1@O8>H;M=6^$+dp=)N55^(oSfDW&-_h)aFZT+ObeFN2a$(DIBmtS&:=BggJuKkXm[6 %]:c^AYVi)Xb_XJ@HJ+7d/W-MQP+lc4M$5UZ+KWtbS5`59Z5ujpL$4V=>V9,mTNX*H68cp&>Td\[oj5/>=]fEXBE3!+X[j[<:(`CU %cZNfBbbu,i#*BYE;PjW+Z>dkrWCDFuWprLD(4J0"d3t=jP8.T8T1CO2:bAA7<([OGHS0@slo@#0)Q?664DFBTk`^)-"H#;SrJ4mb %3S#fI%uZo=l%?=C!`h2eGB1([ndt>3,V>/*[lo'a`J$<4_g/1M\AQ-u7F/lg$>?-->?Vo(k*[nkk^W/ZZne@^5-$W_j*^JHire?R %UXhX'#-P8uAef)f?!ILoP-[!KKq[3/o8is0A&9.:k8VL?MlX[QO?4,FBp/pc:Ksn$cHVIUqR[pkR`N^Jdd[Lm$ukO6eX:jiYLu1F+Y;RpEt1fG!iLV)B'*HJaLQt4WW7W^]@tquYh10KObuF-aY+r+E#(cY %A1cc.*rg:N+T02(S5NR=Yk,-=U$X0/UF!NOTH")#)lbTd#L;@(cGBD"\igr@G,F#+,c;4U!UP:K@59[[*6KCDZ3JhPB#5a>R"]LA %m:J(Q/megA3!pQYD&4)j1L?NTb$dRD7eahtW[QQGOOCuf5IDl,;Q"B=3`EUt$e^=g=$Gjmk9JYi_'5f^9JXHbL %+51ugPd7Z@PbT<,\FJ<:\B!2t%WA$!1 %+Y?eT7!ej=;E?q %#aXTWL8tKT1cM*rP8Q&"+?_e^%'7#INif.WVK@Y=F9o\qKs--s%epW=i=cV$KZWH"N=)*_B]:&,c%5lD:0>*6R!?*N;MDdZ3"B?_>^W]7HpPnt%P_]CqH %Y%_$MS-.sn#09d(k3,`5`"j.7?&*:\\8*pT-OP-`0_-iepl(MeY2ZD26BY%6F07t6k:TVaMiLBZIggET`s$7e,k.V*6#8i808UM.S-t;6nB)m2iPJb:cq71S>T+`bMl8NF>C&%hbnRNqRLG=uBb3-0$M'^fXT9c1"D9(=R1d$1:09lRW)QCj %aF*0AEtPgC?jS$e>DhB5dfSSuieFEU?1YU!?$:+OW_?2A@bOdOlqB$s,_lo4_S2i'@u4a^b/*N@L>6E'i;bIh.I5&@QE',lhV!$.c#N %"-N;E,4D;RYXel>X:t^$PQ4VK`oRK-"*;NhRO%PUloQ7\1@%RpNU_&j\68`7`CXR9kpadP;,s7q@$`92Crp;R-%T9p=cO-\D-?3= %AFR/2=\WhWBQ\K4d>+i9/F!G;U6s3Y[AF1=&Yhuo9*=FBfQ&n'?YTDQE8prg;W0qIjT)@m<1K\uS\M+n3*R:u4:&O]k0U1R1?_^E %i+@/BTRgM3>kW;tJ?!-jWf)un+oF&>Tr@HI"E=`)h,5fHQqSC`6Fa>M,0u?GQjL5%@Y&;bb^U8`T]#oeF9M1K7R3;@Q[c<"CkH3KI\4XXm`@&)iEV*uS(j[;)W?%^.+WO-#eRL.k7T?LG=2#o:R %Y^q_sC0%4:A1e3e07:2q=dJ6EcCp[:'grI:qnOTCN@GCD0#=L^kBK#gC2S_@BqJgUAZFhjl% %`in"U4fYd@=tE#e8T+-=>WUfO>U$M_hOF`hP52OW(i0cKXsTi_Q=R8-\S"mL5nCd?IS?n.VP2s"'ncV\Y-MbJg"gT+'moP&dWJX:m:$\K+_&^OD\1qY:_Yh+ %2;sDnTSNrX.2QGO:JPc**nZeVjL(C/AS4;Q-.Lq+Lr-Sl55*9XWB=HAFVRq+8MbH?AEIo46G%L+D#'hi4%!XW=.1W"2:LLUE8pG3 %VQu[':?=[8h@+fiKo8b0+_"hRI&^.K,Si0>E4Ro>`dP.7$GnB_G&>4n]Nbk+/so[VGs!R,MH %o,0RFm'd2o_%]B6&S1qL8SZ'mq]p_8&`SNg^!"_*/,=\9]9N;V?%rh.;Xa$"a"i,/PbtlshNVk2=d&dCkqX>BrMJ0ea12dAFq>G7 %VErZ;UF&MiCr+i16]m47Z`bZ?^#^)G#Z?=0+n>\mES.PZHT^&XJ#tG>-PCn$gY5fEIsq:\mIdMET:_%/$+?1MGk0VXkV$h:5CN@J %J,/d1bMLI,TA)TVroqPNs7DfD^V,&8ec5HoDclcFB0ZFeD/\I\B0Z@Lc-'2eDs-b"`7=esB0U_urp*oD?G>Ga]^qQmlale1[MGIMLnher#S\ph&qA2^sX\[/osHi)XLl\i6]GMPjhVqW'*gu"akI>>F(nE'&Lf9]S= %o(q@XDm(h'0pq9.GA`*>0?CoaH"R(e)h\1Fr[5AU[b43t&+5eM(O($#(]X?^04',%mDW.E)ag8>s(n?srqib^[s).0[pT0ue`GOm %hS+@0U-J:ngU/@%,EHPO"M9<`lh-1FC\OJ2b=u2D@+sGm0mn=jrTA+f<%k^:#k[l)#MdXTFnO#4(FOk"# %/<0P`fmIgX@j#f%mjdBOIWb=MlO3Rf7q,cjG54G8q!Yrmk0;F^$ZEpeig0KASo+FgClIatmDBt7i_Dp[,Q$Eq$cg$Ph! %D_LN5Y&+V`me3R=f)LC5jZDK9)`4ibj"SHLf$lha'VF0XIX1ncpD;G^Vsqa4X#IJI*ke=%?=1JGp?(Z-6+ %DPll`K?=&^l7Z3l^\mfb`U.$ARpL%u4A">NQT,1FZC+"+b]o<.gqNdUgY8((J%f^qDV-SuLi[6G&Du*.Hu],U@Oj).@kGesH0cT$ %eo.DN#D`3BM\k"6mK>heV]3a\7X#rOjaI79dRHLpVZUWpHhe8ocph'`kBRJalu9hF2e&IC)N_4`mQYIDDIi#C2t#Msa7HF+#etlI %IQ_6TD^gnFl`D0*5=?R_7`P!$jUlD6:%dc6&O5d!gWHA_Qj[gW4%(^6#@&1^\pj8,bDXQES#]V/Irk/9(2o4[T!rK4g.e*HpV;Gu %AdKKp5sFhP]9/A"W2tIJm+[G"YHD2\H1gannfIdf?Yj3pLY^f-f&%N.XFK!EYR\:YGAH(@ahT+hq[(FM>ZV]lW7.()aSqu %IGW`9Q^@/YhRt<%\o<&1g;l:^m.9(I?G*dsHi99ma7B(aI4uTXNck1`2gp&CqJIS,bJ.A2^QHcM?/BXO;[JFF'r?nK5s+sP'&11X %aH?F794KL+qI;(9NQh?pV=>*tV2ZlST/!Cpj[MGMB*a.Bb1&W_##VkWpCdsE"!?Ll^<4WY7(#c)W!7J;7XTS2+N-aQNQ5:L)qj\P %0+d,`,LMcH"!KS/KH:5Kpo*rT7TRe@#dH.d:C.<3&bFubK_XJti!A@P,OW7c\i)Hfi'-;/fZ;kJ?pG!A!^^^'UYUaZrTJ+4Q*'VE %D8).Cs4j@\-bcWOn1AKhnNQ5RJ%YBeRF(&.2Xd-XoKOD#nA?FkmSQF4-ek$'8+;CQL'['a]OK3)DdWKa6dX:\"hoNtjgMJ7:5io! %X7F;4$TCdVoQd_=HkaNLpS5pbLc=[lA2t1PhsPP!re_NRcp[r=2`c8LDs@`$e]fM5+"-RPAR %(lSc6pKN#hFn,0,GFr*kY?kI^F8]jeqY?3O7BGOA+f,/(c.&D7/?&T4..am:k)D"RVE5unN&O!Y.*Sp&XSVPTn]'^YbVk&uJ+-VYp]j#TJM0en'L&M#IDc\TAs751HYI63QT3'1f>u?TL3.Et^)nB5iI6L(NJ&&DZo8-T? %@]#NhT>&t)_ELC;%lC>h">*CA3_iPp^[lD>;9H4DPk+;:78?_&D1%+;P]@/Fs3.7&^UjF,Rs/eRSeH68+3)D*ZDmY99VCjX?G=)N %lPG&"IG6`1BqeOMCh8Z,]Hi>-&iQL\m0"VnuqW)MhI(_,s>7ke3\mF%REq6Z/]IbLL %bJ?M,H!6:5#48=DPQNYZ%KL5oogD"sOD!L;WnT[!R_MS9R#9Cg@rakif4jh%BM"E?m!I;h?2$E11qkrJDf,'cl04+YO %p3J4qJ(EV3h9)''1$6JnjSPl/gX?Q(HG)D9=7:$Uf2p:*mKSGaKiMR7j8B83p"RZ.s)@r-m_QQIrK88Z`fP@)rm8a*j]:C0#B>[6 %SN'j,mc(j(JH'iBfmtO5LCZ.n,HA+hAK1P4559n[Eo12>-6r(;nDg+QLHk-VHQOj7aYq0.K4sMuVkp8/"AeRPC[!3` %nY@ac&8cDKkO7:q?b@%lZ'A_`_snLHl1sAd(:+AAeJcKG8Q5ZYLl5stX6^\A`F]R %:.E^i;-c4#9j8IPa_:N5NM_]F),E`NiNTb#Dk)c`h,X9G)bm5`ocM*(pkU`U*d.^'k[G2Drgu+/R+:/C3Zc%3o9R,> %Mn.@=IFc]f/KJA_:nHMtDo8mj%H=)Ns'J?C[HC^"o1/OQHm3.2[fUn@e_PCW,OXe,>^(NnFV?u8ds=rb@%aD^TP4*ip=/tSL?i[5 %]B.f).V/=N@CCgK4e1%I9fu_>)bg1!`WmbPK/A'Wd^PrnDY+YHI;eV/55: %3:-Ba>T]C-FkH)F`pu]GY9UGIhp8W#)#mZ]-Q>cg3.99%P/)Q#5UuI`,6pQ**@D.Q\C()It1E]TBkJI/T-#4)FGY3BeYZJF@\+.+o5!adldK'3b']BM(HG %DTAlt[6B#1P/hg_53Ao1_:ZN5kRZL7J$mt9pu["% %c^HkSpg?Gk)5)m__uUt-f(e&jc2G\#OR8%gE/35>J:G9FbN(Aqpu`ULe.5o&LoBiK*4aF_s<4^Dnc#I1jcudpZh>,[^\Qjj(Wgdnb#r.a-!-R]D'?m\MsH>7QegTI=<$8;I<#q %E`u$VH6k^+B@GO'7WR!^qW2ECIIOZ*5/q*sn#-TmWF+&f^4*bXYPVErn7+C/4q[7731.1iSF2g*[B[Asce*BE]p%`$Lp@\cnDW8Q %CPU'iUWCIRN`c:J^NfQp)tPa*Y!;8Xg`7VY>H(*]n<,$Nl20LuNr8A#gD>?gIBf%Vj]$6\E*+`0AVhF+EF^kXGY#f9TD[\Uh=T5^ %^Ns=R7nAk8o$qYs?i@\LL,gC%7Jt?05@;0/ro(t;^XG+9:LAR#oC_Lo^@,B8I!t\M^\at%9P;-(s7t,NT=jLikBB_!V_P]+2Ead; %jSjXDs%b%'Sc.0(),0\#n,*.[?i;)HfgUBRMeBdbq`k+)3dX.%rS*P-;Q'FL`R)nFDl*K7f!?;.]A?S(Z&=$K3J92O\Yh=9/2A;V %A79`JVNC$9mAXkESitP7>t]aeq.XQ>dBcbr=u&$%:%bs?re$gp:MZPr4?J8TojoG7.fHAeWqs$d1-\p6VW*6@bbb:oBqY)I./[cI %J<*8?brIh%2!!^h(nTkLjg.VICeU+dmBbJ9`gucuF73r^ErQL@C3!*Ko.6t=F6_4-%J68eQ,TkTQ'/M*WTGN\;piEl?U":_2c*\+ %)VsIs(1$Y)'mdLK3I9P;V`q#;5/a`[oM8[#r4Ta:Z?ulN[-7gr;'q%OS7JkcW@rrhD/$]0ZT<>PO!LMe6kacYG^_FGJ*k81X')N?q(D?JAO$92X`8hc@bcGU6gX81Dgd#TLWVEH1M^I1dU"DLM&M&0-027B/2lT;2jQ`*acW]S`GIPt^9FeL=Z %C(FL9b0Gm/l'ZRK]8O/mRm-,_.drpFZ24D>d@2_nE#6-aO.`*oDKh^Qg<)1P`LcF7HWkeiZ>bHA<^06!NV?Aa+)tr2l$au:U%EQ9 %(uu(fg6_,bMMlrWg_qhC')@\Y=Bqp=7\3`q;HNWDPgm>2oQKH]]_9OHUuuTEA^l1jWCFF=@c&I-qu1S6d-I\)A]=-'/',hte)VG* %Y?:!=b'DSl`P,1Dfo-$>$i+&'\`/p@LV#*hhJKk/]RGH9@bS@GkWqD_QT#;SX>2*2EspBbR\&)R?dY,1F!:#.D5Hmd11e.(H!?K: %+12FL:mBGin3bSuqT!g9rr3]j7!CF=/:M<,URXPZJ(PR0A2VmaZU;?T[QUfu/.nNNH'a/*OEVRdd+?"6H0LJi5Y#r5#6-O-1!.;3 %3UXU8U?(*b\co"J#UoY %/&.^&Po@tA5@.gZmF:U?W5$Xql9puGf4@=I$X^TPT6jL$r-2EAH/P[&OUd>77+etls*Q"a?.G'O$%;:>IZ\ho59-tFVa*0M.27oJ %Ul5MTIfIKiq"3Pe7(TB*2:.DS^0KpM7-cFF#PsJgX(isRKiRA$-QsSkgk"5cjoRL-q`Rl8DUKN7Zi*3>d11Ro, %-`ab\h8C[c(M@"4?$2VL`hbUBXb$J2(.)0CI8;]7q^gK2T`l$'I4(VC%c<=,4\Bc[Us,4l92G4tT<"=[Uo7[+Tf=d2@fNMamEIra %LKW!)Z!Z9m?:Lr6jrVmQng$P?[R#ug=tIK]!-E=:.X+Kl?G8fjjB1qKlT$gcdWniNNCWk@%UV8!1--Q$QA*.V(%QVt_FZ[=/_f&^ %K8?R3['?5]5067Td"/nc@h'[kFG@r^p1@6_E[g[8QZ[;d_H1<,0TQ"$lmea"h>Kt8E,><$4,'e5QhB$\l0u@X?:EH0CKFSb5Gr(u %/)BpSK@"Og/6Y_3S!3J&OLLtJ*p7t)L&D)H[MpUWF>LnM8O]>KD_'+jIP9l5p<(#$1l8I:5-VI\hlqD)"se(h`A*9FhM'cZk$`BQ %.7**;E[$E:^Hh'3K.m(sWXtGUc6O&g#GSrR4jI?sUGt;rD;@BX2Y$(9DeM\KpSt3lkf;2#A)+#6*acMP!#$*7H&9W!b2,W^/kX&4A=EZ6k'3PNo>CetU2m2p33*Oh+Sp@l5Q>RsO1(.GoO=+.8Fgt`@92NTQ %8f;8@AKN9+I5eM)M",5fZP^0B[rIOLDP/)$&>j:>NiD!G'1;CB!Tq>F/kB9p))#>i@-=.<"(IEM50Yum8!p-mF,^"c3G:.\bn-f7MAi+3K8(ZIej0qmgE/54G0aG!Dm>+W"8 %lqNno1U:#Y!jgKiT#*,PdHOBU#MIa87:KB/IBo;Xk'jOrYNRW8TSr>t,?7IH&h.+(Ek9.k(K=goR5&9d;b67Rebq460nHBX;:Y[] %-McN*d^-"`02B)OogWI>B31U_r2@=K>"'*`I(8+V:?ct-;/Ni%romlORRm%AptO;3j!)/s,[H/3J"N]tRj&>Gn#C-uUngdbQ@T4I %@Jc0H9heD?W2%JX(R8LUUKnX2$0$CME4`BEBG/A_k;/qG9,e9j:_dtRE1pU$* %UWE4B6+W.*RZaUnaQ/go"oJ_\N-(b#lBKEGG+fc9I;6C-Xd5poIJ%WaEj7u`]kYGXpqUZug`MMuVEIkCC'kMYhgr_nj %cm,8(JrTm;!aX/(Q(PJgB6lacI;Eeoj\7rqr-CT&21'L6]98^!fr_Oo(i8_7tUWY[_d9D8Y?Pt7c)5JP/(VSjE+O`XhUT8B1>,5QQRn.0WsGc)'9ugZ8\B+IS86P9/'33C)hFBbcYeOu2fXl3n?f[8@soroE=6-45\Y^%9o?,+CLUdD`-$Pf/rIFM0U=AJo]c %.Z,LiJu-X:30h@rlaINHQD,/\52od2W%f3Ze+M:WY9]\P\ped,'R$HAWk^G,^%r5ru2lW+7dkE@UX>4pKhqP@O9c %?hq[,ARE<[#q;Ym:6ruq6Bijgm'TAC*%N"WODMd>lDdH&k['\@(amCYWt1>G)$BQJi>CpZY;Qre %_i`Wu`7T/fH]Fe.R(VGj0>j.uj7>FDC?#e3?8Wq"<6^pWm4:2t1O.96`PgCE7)E;`:"IPd['9Wf[ %rQ.jLqY;dN^YOIHrT("DrVui2rpa:oYO`@[kskYk*8X8U3!/UqSN@$`L/H_:@O=km"Yu8o*s4=ra]IBls%k8;g)<5DDY+I[J=,h? %NW>&1'1]jXXFY^!a5lK[TOW6*&`>D>39MMO'0aT:O="l)3)C:"G6AK%RWpq/%8GUgN$_=B"\1on7f_!(iuWfJo]$ttPN!pL!_Q$3 %N^BU7'DKJCajWbRe)\CdK27uOb9$0;`[9aPk`^CZA&(mg_@\abC#Bi(R^@$@XI;8""Bl7Aj0%T!%\6MIAMiiA9lM]B.j16F+]TNl&)A'??g"UkqH$S&gXWZq1p$@+m;WO%6TL$V010\;B7-D;<',fJ[X+3-:YV %[%m,-3:W%p\B,V;%*$P6fuKlC9VltrcHRuV7jHi/LEBp[j:=bSh.4&9K6P4bHSja,Y-NC_hW/fLT\_A:8)W7bP9,F*PD+,np'l3- %&a20Y*07tO8JChe^qiu5!X$J;*/B-0-B>sZaZtkQ_SPe-^r#L=iSeH0)!a]MiM7,W+l];S@k_mXb=A8cjBE^[MrQ.E6cO*Z7q(Gf %Kk&JLd_J`T3,[_8KUal='Ln+P3"@5^TAq>iS?/cdOE/dfIBdgu([d-G6dnQ`jY4Ip&9H:<;4'@*6QV;W_b'Q8gtX]tXcG`m6(NE\ %Fq3rh,LCMA(662VR5a@"#Waf)$Qmp+B[^K/\gi.%U;*kbc16X=a&i4lglS>a#loUIn00rEej1fN$=!ffn-F7Z>UW)BlpMpZ#%@gs %q>b&=[__!4G21"ABIAQ&4e[&Ib'h*Lo(7@hG4P8;J@g(.mfBt_7um],_2iaBm*>fG^YU( %i5%Et":.fY=%C*rFrdAG0V84$-o`8W)FjeuUkrS(H+6Kh&'@7e?jOuo+-(m6M9U#S3)>u&#+d1o*!O]Q-B<]AM6_RE8.SE7!Rm5Z %NWSKS=W@ImZXn=df7Wk'J3=e.;33qTiY^%6Zu?FicXu@&^qG#'&&*mr$!>nWe%]2pZ2hL'\?h::0f'>XUK5P7JF:]LHEqZ$DAn[%ZX(N82;]mfXdGAghp^Uj:7mHZF?H[YG_ea(3Gp2Zq; %'4SNRGX&BKGk,_Kb\qa,3O]fhmA7(FHV73DI1]:Qf`t+)LhZ7B\D#^-'>k6kcf1Y[L99V%dA6+h[j0'`j %^oRg4"R6%K82>kT0n(;X:bEGt+9ddrpYEh.KS2W$*e(PC;4CLG!:Ti]1dIa:\fFB/SIU4T4#&9m[P-]BT4s$d#Xph@ns%Y8.r7Hu %p:lNN>+Bn/8N8"-N-$e0!kYsu.nW-t@>[L,:,Ke`Ych)b$%kg%6guWZ.H+Di6V5?I/U^Mn7%T>J-(!P5"X):53QNJ/la:tcelAsk %q3pD*TGSUctURfO?Zk[;lgoTR7PLd\ETHW&VR5NWiE!'E]&2ojOfL2 %&@r(?+M`m01+BWpt_8=8Z?n^"Zh)$5Wj(JLhadh.tA3mY/'tC_l %Mp+N>Q#"S7ngu?ZLr38.5fTg;&N%;tT`fWfEBYR,RW6"\;ekUK,[oXS7MdhEjIDdLS3"lK=YoJ!dWh5U3?#72&lq#D]9'q'qne^c %aO8&P9b<'d?L"C75SI\7$Bkd/>+dF=6lTh1Z7ID**\Np<,##;)\raVY8C1C2-&K`]H)Y7r+0rE@/s%IA+-OCCXlD[h,UE %H@&[YIP\W,mo&CO2:J/$O8:VkYtJ^9g[[is/+@E.dinqWD_h)2_g$GUdR%X*,,l4EdcD)2Y'qk@`L7BI2dt.N6<]7l#;(Z%Bo89T %]>Eq"U'D;eiT3qq+\23?2HTPh>;0j7of>esle]D()^]Im9/'1XSQobB&8DK]MhbrP'W$2/nh>K,PNgi>:`G&M1fWo;PjX%G;*2\UduK'J-OY2&8.InG%eIU %=):P4&XR-`\ADq%m)N[-%%Gg.kbb%Q#hYjkiP>3M-cADI!5QOPW*RK%YQuO@LP/.r[M/skH3ac6-C&SNO1G`HVm0%khg_p#(0M=Q!c=/7@s!F&f6RK22[LE,Zm#RZ?EK6a2fa'!2p5T#Ds?_.%+D;'5%nP'#XpBR[7eFP:oh:"Ks1O %(D]m$?V@O>0aNe"oeClCbO9?KEX*28\YGUn=)`E;W(TH&oU%mfpL;HP\"TFXFV %-gq:!IkE\a2CQZX:pL1q1AM5(FZQfQ=EI3lLU7C&CJ;=A6AgC`-)%T$RE1L]NIMTYGKL1<:D!lg6r=MPaCaO%,&o0_XojHcL9f9a %I7+!n(r%&u2S-l)7^"pW'NF8C=$g:/Z!D':F%R/TSM"CbX"*"./E=ds3R^B4@`J(cZ2E8IaO=%MKQa0ml?6/9:]uSbOshHV=?R$@ %9hVn"/rUI.4\"W)q7uu6"`%c:D1AZueZl@La\@"1DZgjoa'KQtg'M1jPH515h`FK>BY9B]WKe>XO@__,/1sqA.I=1sQ'%9+#`?u? %IT':.n$=D=@Wb2cp)FB!0J,VFj6(mTGgNZ/oicMnh0=MWD@"kT,flp*L.+dIdXAprJN,0c*&]?#U6q%(eHXkM;5^(r`H]TZXFd=5 %#*Q!foIPOm$Xr'$JB.jM8A@)aW]n9>pbnl"<\ucF>N.t<&b>+:_/>QE;SY,Za^^Y_q.3;)nR?@3L7t[,ls.UD'09=`Mj15 %-1t"$jlT*cj#ZAmH?2qNebk->@FShg$S"H(?6$KL%Oi-u%C0?tECQ`k%OF\nE5;>5?uZ:+9SjcJ%uRXmN=D3/9aZo?P+3]okPJ#i %O]e5W":8nEe+eYN8DqPhPc0pf,,#4.btIQ`ibBb_K7de_'HT%boG>(f$RIW&TJuKcks6G*B;5N#JuBBi8!.$j%T,S9$=Z8RrRPWK %4@p#5)@3H[(9eu5];[@V34:jbOF#4?5r';&1nAo\abUcoc!gh7@mdPu="qHNj)d,=a/f'T%E'HP"Eoe/9iL>ok/?.V&-/R3OR-\< %HbZHMEIo;E)Oq1jcrMJe%ModeSajHoH.,/8Qu+c3G'jja(q8b'M>-t4V+O!^prce`5Q`>Ai\-[Q:cA204FD;fqH=D`%U9&5>sWMA %.KFpn6"r*]Eqs5k=oO&H?:BkF>%l1FZ&*S[AAZsWJ %`KSnknbEQVUG)#C&;q%P^ULAIVH+MH=$1Y>Fh\0m3-OImB4`.d(;q.tbQu:QnNffPU4;5j:9L\AfGoGO^gT>@ZgVm83%p4a8apV` %m=0Z^aa'a51lpb^FdTB56H2tLlnmJgJO8u0(:)ST,ijpqqc)KIM/A3+B4iC.\,WDh\/ot>FsEj8n+V@lK0Co2f&^cOM[^KT)t/!c %eSO;6#_rE6/Pg$RMhEm1)GPloCM.^MiRsFNBD$&R<&%aT4!0SoJeC88itTZaZ_Sk^=+a'e#`2YmMpZ.PlP?'%>'Rk7WHf+5riu&4 %Hno2Vd=;FY0t!CQ#UPjk@YuHO9A_teD'DM+heir]IW<)D^p"C].t'.X0F*IA%%>[k%nio1fsNC(d:#tFkD=l#h)_kjQqgJkB-4b"4%n=\oP_?4s2T`VZUA%^!3k[Z9*_RK'-`9beuF:4]i!Q^9[7]mM84&4,\Dd %.%0BJ6j'dJHFjm^E3\m7-pU$riKp?5R\F4MJOJ4TU>$]Kh %0&%[f47A`$b6I)4W_[)Lbi8U4_sODEO:aod[[Q?Y1WsFQGd&`r=m-!1]+gD/*Q.kFl&p]%GB[O2s35R;`jr%ciqao-U1OWmH'\.f %ir!>NR+gZYNB3[XP`_!4%;->c;rSYV,?oWRYMm:Q_R1Q(=u/M0\=kEdrChL=9ZM\aXaHL38:#)3WO]-)R%ibgKW%d"24\9QT@fgS5oP!7"EA$e=UMe:i6#b*S!/VJR*>I0\NMQSA\ %duJB^'uE.gDUBpP5eq7,1/6.u'CPO$(,'uaQgG(Q@XGCACsgW/o;V.1`>NU#;!\1Kg!f]Bm_4d0n<\c?0fAP+\gol_m(@%VT:CTP %m#H$>fXY#5BC?NP"DMR@kRop`)I*Z.iR"*->$uqN3[u=7M&1]0D&-FXnp:_-(]-bF@Zrj!bi.H!hPt$-:!p(^`*c+"Q %H_q8)nR`DAT:N@"EM-ZLRUWBSnRX>LlL^i>3!kSDdr/U5N^S/>&9u*Q,E^Fq7&4g0al$Tp/GUp_?h/99FDR(\]o;i`HA56oli7OP %g#oBPI915Or8dl4p>n?@,eK4H;#eo5"6q*(7F$[NN]Iu$EWRJ.MfXIKqalr_UsV!!c_,tEf^WKsGkaVg@Pi&9j6cRH+p`-n[p9ET %c`[q(qrL>[Dh(.LOtBsidJnI@Po>\-Aq,,oVY$O4*mVo0TNp-*^HH69@DutU4rD+`+Ab"uaTqV,&e<8E:jrUS)[HIkptQm]pH*YO %,.g.WNBu<)^m=C,4=k5OXZ.,#*u91-bhWq6-]b6bbR[n,6gdY-)LdHLdshgPACnrdZ*_@R>V^2V1BOj5X`3)SR8lgCinLbpj\=*7NVhGbVgP#Y"u-Mb).&Po-tLPk"Wm3bblWAKU%l.U0bRF"Rd^(4=S'kB&Z*+;=oYa<1b?t"K9pr( %:37Tkb.m'Ao09">"<>Ycn<+G+6,ms@P*f9i'Kj-"pk6[\5k,pE\/aa!q+]Ti@aG0=p-V+QTOVJCNja97_Cm-?#m%M+[AACgMhH(ntPK5o[oZVo_WdX\;fW2h&%1EiUAatH[7_&]JiLB2<#-i!M;\7?pPNV)*ZQ*__3$j7%6U"CXIp4]YQoQ^il\8e]WNBKBu>@)_(tlR+33q^KAsi@O2H[\`R(62l(]4L[mpjC$%mXnc\Q0c#-1r#0"rDe(TX;`]pWkij'_/=]?0S[!'Q5rXbZ^H#Q-_ra7pK1Lu=S"_q2Dh]Fb:1ZF# %6%^GPm:Xe+E>Do!!q*R?._#\\7IM!W$Ga)`d19;ri>_n%09'?g?M1uo\`_cFWj2KH+PX0_Yp3r2]Fc)MrY80=W.Khh12oV?(-i4_ %S,n7^m<-2/'^8Run=tCj+"Ul(l%:S?UKL*+6QUbKebJ>+N0?#APNY=bd*@R2)F1+R;ZJ#m-drON3AsM$"#"3YR_Vq-TAdiS%c;): %>\KE^nUuE=?+tZ=)B">^Ag>Ti7cuP*N?7l.lT3nP\U&bAj*SUW\0^1&["VX2>*8mP#`j#;N+]_\@@/g:nI>55)USsU\g]?:]T0a= %N-0nsUpSM6qs@N55m1blf?^2/Gs,k!7S*,71Ut0Cqj((m5r.[]Lgc\g(B/nE.'AkS\hGV$TI",UA=<.94;ZAu\ln55@'FRu0GGYn %h-M3+FZ/:;$2aWAA;c[VD;BjZE\FY-Lo]]k/%kTmet+6q3.dgirlfchh#d'np!*a9qM&cj^HL59!XaYckB+kGWLF2V?RZ$]1pje$ %J?@pS%r)YW9<#Y_L:eLW#"J+G!+HKGNanPb?Q6q#%u3]eNB[UbI!\*[ZXPD@a?g]oja-g8S-KgGE`N\XL'u2?8BMr<][o,]nJTM< %.:8c2:^0Ba8bl^U4)@"HZA&8ZMG17]RS"Kc;=:StC:QS1Ioe%+LOFl:@'4&Edk;r&A:<98G^Jii[2At?J4L^3>b0JaJi'cR.2Y%: %Wu@0D?bJ&bX^AY.VH96^f)82B81]_RH?%G)nX(TF.D![!'..lU%WG'rW%RSe\E^XV5L_<3tWd,D$PJ4>,H'*r#1h6VHF[X7S`,r^.*@"@BP0\ %1)5VDZcAPce>.O)n3_l_a(Vm_2c)/c,'LnuoRq[:m[6;"=P(,"M:u(@%jN[\N`%TO:S?kGh)'F>=YK'=6^/Y:%(M=A/X^IB,]@Om %LDWt*T`9KPQ\YIpkFl)[H#`l:[R(TkJerk8*Hq.r&[[op=rBLm58M739kj%*.#juRpSY[s'DtY@6h4RWh1`be:(RJKni5`T44-PcdpZRE2f.06S?YI6gA`'C?,j<-g(A"6j6C_fr+L[40_t+Y %dKUp==(d4AMdc';[eW&rHIuW:*V3c_oals#!^9(jIuNjq*")[*B`)@^q%&VOA`!Doo+h?sj>`FHr!?"UP)t_\C%j1\I_K3uGItV@ %Do)'AGS<7DhHTEbM.lnU6AWBf=5InQpi5eVQf<-(h#HRJ*2^eqDZ9]@g_p=Rj\pHAI1fu0Rr-@SVur((TWquRB\tV^gq`gL:1-cW %f5qN6A*JOK^*P&OM=iTK@@s+!=?SP'`59$nSC(eHtt%$_6c@R9XK%gc;DB4"HF?3de[gaRH[`D)28.Rdl4brCR?>P7OF;G %k,gQt/Y$L*^g*3m8Pcu^Al9+.)f?VB %K@g&Id]ULpA-@4@i2,;s!iM\sI1-/WJ!BdggA8)=n@%_K>H[Q:KGdP?ZXZAXnnQL']6Tnb8DdAKkI_BD9hk,2M]:ruD6Rm7VPODS %,!cS*1q'jm93[o$!NmKpT;RPW\Cn'`j6.kP':"cYfh"THs!aLs!pU21+O@jtpk9!#GjQ]eA3Ccbie3,CqET;;^Au1-X=k#5?+?W[ %*(khYa:;Ep+o4;G6,@Yo))^g989hZiNnV4pRl/$Aj$^sE1?6"I7L,WtKRar+)Gfmn;!UIP;"_(5fZ<5m*j,]/H#UB!K( %&"JqB/@7?RRocoL2NWcOI"a?[ORP`T3>Cg4!+6(?=Q^Ii(7ZU.o.0(q-SqcT:7.5TGVII0HIA?'p9fua>m==cEkRXk8WmOIR*jT( %"1`8H6.?j\*\7TP;f2>"SBqO2h6[;,?R)(/U)D-^]X2XXhV_5Qlsk3hrE?>7iubs5R?QEQ.O/?$k)%uZ6hS`GbZJsIY1;##I/;(< %gaqi6JV]_Y\FOEXB&3oIJ.6+%'75,.m].i3aIqrejn0V5YIpPeYEj;6i.daOW`Q]#Wn;m4)^BFI:#>Pa?c'K'*:E)A)V8uLYf$,^;0*O%VhnhKb1K+-.ioS@E*56CEa*DpkQ5XAMDZ5R8Y-Zh;u6oj=5e/1Xs!5r&+a<'qLo303g)FG."k23:Z:%J1I0J16(%<58i";p\*:Ki!`XR_ApZ8[%Fo(^EXf %=.Rl(Zgsg;=R>*;CK)`q&suQX,GSX9YTd:fs-o3irl@@O1Y=M^4tp;lE-:+##?B.Wru1;nN)T=Hl,;CF!`jRk6DW9:5PNl4rBdfP %SDlq2]l1S2NR>!7e'f[jl&r[P]lq\4nARAk %;[O-bkU)tCf*H"$&I#XOO#IV.7np8_b/6$;8@K;17VS5H/K)'jN18!=5D,Ye))V_fK<5d/&d;\6IMN)_%brCZ[gN4P)AqYAOSnqn %7Gp@D+F*5=6R+t"JMUr(Oi!kS_jQ0j?KZ$^d+/V_1sjda51tpo2!D)_KW6e>3k3i@+LH[J4'>5end-=<-FKB>mGL&:p;T-SHYRlW2_t]Td\X %NGM/eC^XI;cOHWnJDG+>a6)s8U?a^f)jpXQgVa!)nkdL%Ka"So%NLW_]q\Q*])[-*hX,d %5[#%pJ0Wj%)O#'oF!ouA1Oe0uI?$#Z@4&q>SAFkupINg4J:A(N.0`JD`_Nlh?.V"j.sF976GXl(2kV*^ %*tU-D%%d/kh10qSdhU5C>6S=m:I2pabu-YPXo %gJ3pN+Pl$FdP6i?<+@%flZgo&34Vnpd:1coq$&O)s6$FY:R0'u98Ab?'6CY3M-W77(K<4c9QbtM)@?!/"j^-cl537QR2 %F4b70O)7Vgo%a9/m($4SAm@A+7E2e3fk>iVH5(ODtr;pAi(K9J]M]f1A%S$L`mN4.!" %XRNqFmlqU"]RU,6i7]"YEuc&']"t/o"n5C6R]JY[7Ca`f_6S\Zl=^N@D$c(_>J]tlMI)Hh0H%__7TOu#oO*^+8K-"aVB&29O5e]h %Oe#f?b&l\iTImCBJrEEF>5CQ>0EP',r.b>-A!jkCF-@r?X:tTLF:o)&fd:,f'\CsQ%#:QG800?-l)t+'Mfl/8b&`_'dS..eg%Zh/ %9A786fj;7$,RH"'C-@Dfq@\Fi9YGc)Sob^Q"9&:t!85s`TfSRgAA+gPRuIJ5[`qm8D3dI6N/<3mT/%B*lbXj>C7,MIKb0?H!#Iu\Ll?"P5*N:k9W_dep8-/,%SZqY*Z(M %6Ytk%P.#\V#`i&n<'>>[+t@5AkmG\FS.U9=0*GR(WLD!_H[Wn`lfNO`XffEoUX;E]`iDd%X6]Hi:ZCt]KT?dn;I5I7 %_3rGFpQ3u)7XUW'@nFbVJDm2uJl>Bt]"L@0rK\?VRW;[P&dA2ZK0P5aDeuGC/Jl'A595F,=&j!M[Qet0"Ak`.E;es8KTE.UK8rO[ %K;bSuX'XTXCg5Vk858SC)"+?%b'/4HnFp!'L#0'9I=hF\XXt2A>&OT*PnN#RK8U,ML8GS=7"p@*rZ!Q;aWR67!48Tj<(dJ-rGNJi %mM9&'<2`4D^V_t/!`%&Y^Lqg+f2Gsdnog^7^@'aPkBCp4P(A/I`4l;!8[Mh<;'^&%\G>K-69a@ph/!ET#+^&B;c[:TB %rA;m."IpG1NJ1.t;Bmr$i?qIm,rRcqP%5n<'-q2B*)EO`<.K")lY=Bl^rTV+`M.u9XArsC/Ps920erJLG2'%G7UZOYr>+fE0tUZ0 %_D6&cJ"o\/`DcDTDA5%q<*H.s751DH-qVP`ggK$!X\"AN>$G@-_#cL#(l;(2#n*!%Ah=E9C(sr[mVk7B[`'gu*)I)rT %aNa;qa@m"^hO_T<-0Z"g'^JZcY@_W.!N6R**bYX/Hq8Md-2nN(/;9p;<#4!M##fuFRL-go_%e8+HJ?UM_!Zj)$^D;/Shl)l.jufD %R81Aifqg8t3-^[WP?E7ji4n/qRrX"'Ko`EA3B>Nr5.M)2dCQaY=L;t2O!:70JqB97,')f*=NSO/ %S-MI_f*#bkJ(Us.Z$#c6<^QsP._5GV4.JB,4Y.W+qC&^u(I6\>=el+:Of@0-h9'5/8Rpr+OrCo7f&ib*D&t[V8jk,$2RQ-WP3l&S %CF^45%:7HmhW%phs,3,F\qLrQgGuMUVB.ZfMoR@>E*DnBaFkcTagr:@-FBn,\=X^b/p&)U_\CD6;*egj1oUtj\(.a"qZBsh-)Yq7 %q"5[N^9T:>Eocf6*'I+X)=%u1A\p'lRt;=S&%]3O*]+FWq3J,S;qh@0do/QA.QtMcNb-s=PUm2nO:ufc]e_3HC;SE-U3m^...:,c %CO3b,lD%NkEZqHcq:YsPVUfAP8KgINPhjco,e6u\]#jF227A46$=_=E8D@S8p/"VdKNFK$-NMGC/%c#6Nq %\sP[V"rJ:d#2C*Vc83n?+N-)H_h(_QJY>LHbg3REr\(LB`oWTRfNC-uraJl7^OM^&fq'lkm8Nl6V*PTq&GUfF[jScf+U6 %(-c.nB4ZBi=#H:L"q6FS=9#pG'p]WZ9eOf1f_Ne#3 %Nofn8b&]XNbUkrZkBOWNmK+;_F+iIj6M@hkP4#/t)?)#(!9(@BX+2+U,DPgceH`_mB4PP2Yspo%5]2/65:jqriIJ1LZ6Y8L>>#Ot %E!%=gKRsYthd_6MI.e"CgZGB-;N$1H/GHOQZ>#tKOoBkObb,aR(ZRB.#pRul=4*VL-XqWa3^]V".6bZaTS:=*M0k*QUl0$X0sC%_ %DfDfb36)GQ]F"A[[V2"JlUfHMOBa4a+SRL8fLltD9IWgUGpCKH\P`i"VYM(_Y!lGo/Q^'XQA;T1(>D(d5]@$1V6L7Uq>-!Xf"cXc %YFu1l^DVC&V)BS#G*GPL0a.A!^LAn,,ZeRW#\TsooTj,DPK+W(0IPgCL+&PI4r4ODL9LB(WHH]0&H'-NR,(OpW\XKK@Ip.\,jEU_h1b-mTQ9[P+WS;RBb.77KSieigc;GXf'#4KO+4Co9./3h.18 %oa4"e=tQQrP!2R,q\5j46i)[t7cQ!)G@:!B$DCl`^4H,7I\&rJ/CX9o<-HG)9IAZ>]#QR7+^bg,_;PKQj$iLYqISPVnOIWI&IlkY!j*QrbI_R5f."KgX)Y\p7X$cG!*VPkd3$S[Da)n.6M(0>+Cn8pVdj%Y'2/HI&\/MG4*'T,r`pE)Y@ %]V5f?"Vgm>/aE%P0Ip^XG[C.LUfU8a\6uAYU2kZsbJKY(gVBm(g6l=Zk_qs(WUm7E,9&@M0hl7s1aRhi?Ho4/`9M_tNGu$q"`ngd %e1;E5Ul_ksll_4"*1FiqgpY+rDq$@6gZBP[TTlf]!IJL%^V8E>TR<50@""T$c+@-`Z/u/'#7:$=\(3F5E^Q.VJjbUc!%SU.+N7C9 %Bch"7gTakARY:s@[a*"]Cj@;!m:;O=@70K5:[['"g\_g:]A7nF,?)=V]gZ*0FgbdHm]GE`8t!P\:C>?Rm9"4,LV0q`m\+r#hGQgc %I]k4EFe>n,QM9=>jLt-S\o@Z#s8ADdphr,*U.CAoj7;CPduCs\%(=@E*rpp2GV8t-$bADX:6M\JJ)VKC/Qd3ZVIi+u<:2fra1rQa %-O49U'#9rUhJZYRTo`0_#7U7GBA2<-JB0,<$EJ^=2Z#X49"1(*^9=n#j@f$QncUeK4-CLdn[NTcjALtmh>946olER)ASr7o3#ALW %K^Nq61Q1&,("Y;Z9\qSKUfkmRH(.*FNUhmk4TYDhRB#of6qt/]d'bEW#"M^ie>hgWQ)"Ve0D.FJ[t%i?41ClqU3[>`dOYsr_U!Dq %c(XqKe"?'&Bff"bP(ON^EQJVTF]GL]\FrfoRF)?mi]f"B8*A/9ampYss)s2Ti2_hXn]>"5- %>,>VE*%im`'!'"QE1Ws_+.TSM-f5$r$,U\"fU:mZYb0ufQ;aI7V5R%$s(E5+Y`rZk5(C'QO&A,uTM(!tY$5;&J@_VMajV_`s0I:t %[0K\l,0`7T3l>@oek;j_4K((\feqTHSGp4i\2X%]^kI7(!U.9gOR-pq;S]%s)c/[k?FL&nT`ZmQ#PS^Q?da`eYCH.5u8YCd0R=<)/hIHo3(&-:]L[_6O)KlHq]5qH,a@'>+RNAJ)Re:ZH:bdCsD,K8M*#I>MrqiS=hkc7`aNA4P?9AVVM %@ba8Y&iL'GPhU*Z_5EuY!X`87.+3$!f)]n#TEe%?R6*`f*Mc:SYFsJI)m>6)^d3%GJtt>@!pWn[Z1WIA+6")\s0?afOg%+4_>T0/ %g:#fc>qj/C@-_E^*o(`H@,ZHAX+P[4ZF7rq[Wg/1h^Ohjr@oO%^/mn1jc#2Q/A2_+^B3R[SO#PJ)EkU5'X5XOac6NA'Gp9Hl2(g" %=dQ]>q0TRu7FN6nL^A868T&5SNsD6Hr-^R/jp?F)3G$>>61!g(mp28.[Il?AH;!a8Ul=DBPpBFeBX0MT$!2Duk*(4:IG#b`h.+iM33m %[@C2ojJWR-T>5a,j]qQLdUr.$[W`ISW#dq>1$$];D(N_3"e<+aRt-+0_YRK`\TlTOZG\6n`nUj=s!Q/f&eqQs#c'ZnkISnI'H#QQ %79=8:0f'c0,^\@Ko&*PhJTp"gF:3ICtKqYroe %^20!:4`F[T\&4+][:l:td1ua9/T'>sGqW?7E?h14!-*)D@,uU07tKPO@^!HMksF)dK[m:IRTUXelg)!pbW:Z>;:?"04fcWeKQa'7m$ZT2oC(]b1"Po*BU"lIC.qt %YZRPPn6!/[XC/p9EgKbUZ;>pEP4j43WSl470njR7Og@)!mR'Kfs%NK&"_lX]o$N]@k!`F?GkhU2o,c?q9LDodf&jiHoS[L/bPuN8@k*QJrW\-c,lD7V;c>rd',A`]u2'^bMWs %[0J!%`W52GX+Rp\ZFEW/G4Bp5&([ra/Qg/,At,bHS#HapSVkGg;X'"IhK8!UMD4O/@`SuCbuD[H9*mpZn?7kU[N%k'cE*OOJ.Fh!798MOa/;jaNFI\SVrhlW\)H1UnoC3%f>]0DIhg>#H^BAXS %3g9SiK3J348"Y;c5=EX,`&'Z<#*7aO:nfsS=I=kg9[s2n.L<^a7d;^IHbZf9l?NOA-I %r+`0srkc,AC)lm)q$#@uEou@FnSnOM\U(ch9p%`\eT5,a9N_\k+JGrj9ZGu\Jmqn)icBirol^p7Hi*AWj\m3uMV*1X3d*BUDC/`"EW %e(ekb"'h/I?o`'TM"*%Jhh%6`.jD1,qC$m*oQq*`&&;2+:.9=X(jk(_pMIgd?ofRV/\MjG\oMC#P.;*G2%EnnP5YZ*r)7N3n:W^i2Wq=]4(26F&ABCr='1jfAK]dD^;Fuss&%G[!Ah@XtF %Lp@/QK)F3j[MN11GEaq6++E$X_Mg?@N(0B%#6GPofDlm'%V?XB'_-_$;Jq8D9)\5TrAgLHmC*RuB9Ec/(\h?fK@&$(q`_Pblo1[V %;Su1>_62=V2e3k;Uf2@59#_tGZ,-;K:2m'+pP^O[APYd:JcrGA]ich-RSZ\nI0,/4>f3+#tI?Jr([ %ioDuGDKN0tq#osq4(5!404*"m**c,:>WcV/UK0(F-Y1K,O_mri?bY>kfs-JJ$t;8IY>Te(0sJLiYQ(0"-\;^"R+L+E&5):(!-VrT %,H>>/.l)1DRDc''YI/D/S\rM,I8B`^R.rg1@(o3;!HJ8EZY$>mh=!n&4gUNag&7[(Z[kWXTDYN*gp5)4\R[0]U#L]mU&_g7-)n$;?>\u5#KV*0HVeF\Fh:MMg2aqS %P,ND2Qb>:$[,#jL0$q=[c>oh9PH:/""i;$,HR]l^^!Q-QS)0P[7t[_N %PG8of&uS9NXQf_I$HQ!JrgY+Klij+TcQ9C]+_=G+@Lt1rgtMTF*#CN5(g/c1#JOi5^k@1?[kt?I!=CXT?63]5O=647'(%i7.Z:Z\ %jSQ?imC=q*l6GNL:("dC0,`)*^CfY>PncWuDUs'Yq!&E`0HCC$qH\0FYCd(%MjhqKn:Q7+Ha*VubIK"q%g#kY?,OdjG'rGAK`Hh+ %`J]6N7]j]s!%YNoUqP/sShoF,UUZ-qdDR1f\Q]'KB5()7hbq\s1DYoGq)+lo->WlH@_r'T>/KW>LCsnus3$57/fhE1J3)g.n#EWiQGm*Ep]4I5=>'Lu[nu`2Zq4V1n %DDX<`+BJ.U^aZU".LTD;b!L!=+.'55Y,GXd7k9N27dgL.glcmUQYpb4/Ct:%+OhbAd"-nnb5om#0)>Xk)P6&N1P+rp!@RdHPuj1p_/khMbmnS50;Ek>O[mq0WYRXpbe410'NC(Gekr=/h\tmihh6nqTnLaSL2!6>Vg&bIAMQ(eD0F'O_#7_<`0N6"fFloR**^' %*W3pSX`N>=S2[m+R2Z$WOolMN*V1YYB9Nt^O)E_RN!2B@lA,:;C'O;#=4Bb49&j?g@dTD@a#QpI3FaXe,'J1KnQT3uO=sG>I&$/& %H&[J7h)Z,5Hs2\YlhrX^ka(Z',qUlq&Eg@lQm<_u %$XAS.Q"Cc"no@*`.D%scY%H,_)&gCa9V+U51F'9DbCbPTGcd,gahUj8Ltp++iJC2&'gWkEk&,4)(OG1S?>e@c:ul6J[lT:Y::((< %kCgO/4=(1UTEdkUn'f),rW:68lkD6qj,sO+:ujtj8f9D?E^a5=o8olO!b-.,VM3`GlAk@>#O%G`T;23 %5'+eu&\c"FL.^^h7RHNdACauDaF&ApYTK>4AK-F2XA5a61$ebF)"/p?+iZ2RN]!M%ODZpZM)4B!Np<`d9eXR.9oA6F+mU%uA\4-W %ieA4tm`G3CAdm?.0gsF9G*!P."Anq30!I8QBg*.g1E#)E$P1OK]Zh?H#3J`"gWp;Q[j8>?Nt3<287\7^kER."C.$U'M""?K3[#BR"F(G/_OQFX;!p_H6BN?"d.uP*P%e2;/M96[jNs.h@?J@5a %%Pehi=E<,HH:CHXg9_Hr!`Ij$`u.-CYpF+!:O(2dcGMN(1^?/\SI]?ArgZ:Pp@=pS/k^pU[!:AH&]dl8UUQj;L,;2WZ"a%KL6Aeq3,JapV\pa>?bicdSdm55d;nrJu!6G_gRRa=rlWfgGFs5GJ4CJ[GD2h,HO[a^mVgPr\'GTPD8S7F%kiN5'+R/)0E?cB>"QU-#3Zlr;Ii3j\d'-a2+EO:IgsI077A.b\!*Uc`[hNadm^_\u5iM6"@=KP*%a> %#%VRp%Q=+`r4CCJarJrtaKS[DP.1@D&^3q)RM`.3g,;kYWpQDPL+H0K;iLru\JP`YqPOIUS:q95NnJ/HS/Zdi]5lK4kc)Sj8Ko1V %//bLaKRfF7MJGF!JCF;7A7l#)rbK'ee0?hB`@jLkYZ;\:c&t[m"?[ke2*`M,*+ENciZ&cnI:>MQ;mhWFRenkg(U,A3TQiRCAhH=O %X*Y'$cE*s:eN-:=dSMm^`8i8_j&K(;4%!Hn./tGu6S29`XX!;[Q,YtORJ(ln"X,h12&6=3t;!cfR-^:U3;Zc,uBh'/:QL;5`U %2Th?URS2!p3L2[d2-*84M@RkS9"+=>8^M_URDC47!P&p:8@E?]PV5nopQ*J_\C=nbUnJ* %g+.!VBd!Np@G#m&6!4ie"^8rs):l?0aPKfd1\rL+p=a1I0]hfF/6A_K]KZ;&0uL=s>GiVR!IHRdbS=NTf.9kQc]]LHW9kKWa\n(L %4YD8!d0oE]f(RCfrEIURZ]r_C';WH"9.M9oob.BDG^a9R6EO:dlIgpAmlpHI]\0)+mn.F`p@/^%r]1e_4d50_$&5Hk#XbFW-kE&)a]6g0m>>Ti7hp_]e)\-]K#tPB\]C(-;S0/G %#DO,)QW>6L0:,FRWidIj[Z;04:5g7`Fb7c^=E6-4#]1E@>Ynr9A5o[f\4+ %&+jA5U)(tW*h7?&^"&)sn/R^(L*(GO_H(P`[q'E-2gX2X3o*R*W'.*oUk;P)k3@T$f6/MEDljc-S6IUu-/!nXQcp:=gen_bOVAX/ %:O6P`_+UUe0$HDD=st"g$?/i66)DH.`l&Mb'h1A\iV%-)PXt@k1fu@`6 %1!'6B[H]\d#(T9qm[fu?j3tt\0+@`_n=*Ah_PCq"l*Y+IO="`=n;N0f@)H58j;3WV*KMM\m^^RYs#gHr$TnY8Q&DK)B`2Mmbc%MZ %3<3s4+AkqK9V[)VpUn=(!j^'IkVb%,_#%2uocsolqE1LLV"(\<4E5rW7I*QGKig+=1T2J&YI**7obu,4;;1nh:dB7D]7>gjKdPaN %&R6RThEjqTi1)[g/=8;P[M&S"!.gUM45lgXfZGc@7F1<%f^:,23Y5/Va_Y&JW#ZbiDMI2X*'_p;[8F%ofhB:\E#0@7_R"$dS3)>F %f#T7d_IsP\+G4%ua,Oe`_Yt!LPMZ[S"NE+=8e25Jt[Rh6Q?tB/I2\X%QGdS',q$kbN#_@8f('>7Os]g!(ru;-_/F&&&-XS^3kgN%G"&gc8>P[t.$q"u&h/>nnY?+'06eer"\:A,gs,6lJ<.TWKhDa>q]i79_eb9&1j2Gfpm..t.do3ZAq/3TFDd4`#a %-$i]gXYoYt4,?\NXXpDY][5nJ#2D:pAZ:SdI2IL\Y7Ws51RO_ub'QBCNZ)!kJ4!EmXbUjP6rS,6k?`JNK9j95UYbjdV"sjl96!*C %kk/G2*ha#=-#2cIMLef32to[kc`[pUVT#&C-S-idMsA90'DAk;T6NX^Ag*Pb0jlk:N^7oX>*75R%T!h#GOis+47A!=k#Yes9=M^$ %.90$B%Z?7X;F#g4-lsksWG=XVi:ZSkWa&j8Y&=6;EiE1i*T'QQ;1o'TS^hi3eJJ9+^-ZaB+>q.CDTP0ropj>X93@IO)osMV9n:+& %&l_l=IfNaSB4=]M[YJ.eQPH-)/XF$Uhod$P'S(9i$dlQ7+2i3W(bR;Oee[Vc;P*iIpsfU4_sq>?V&Z!]Lod^: %0AjrP`i/HCX7=JE2%)N=^7Uq[gu\XC-)l<>]K6.Q>hYo-!F]?gHA7r#)@b2+Z9WPDHf!g4UMe)OZUln %7at?,9pt?S9IBG$eoWDt7OSXMf.3q9bHUc#1=>C=ag%/.O<7gMT$"IPJZ?`)!]$<%:8@97"u#l]:3mR\@>B:g=/6,>+bj'c&V9") %*TGu$>oKW+9kE%rmbB)5QofDL@KX%=3&lLs+=j=]`U@hYJW`Ql0=1Z-I,Q*r*mNWRKHhuna-c)icX$Z9CYlr-gk/[Ie:k[WJ*nUc] %js@GVPa\jZTpWc2=Un4EMIPJUQq`(Y\76Ph@+.9\BX1ck&5q7nVuY9&&2Y(*]BLVfqpGf>!-q5A8=d7QRXi%d>I]l$))mJl3H'qN %o9$^OMf54:2*u^L)rTe[4oO*40]">R/aN./`P^K@ADilp,&;!$O!$H.)n>;-:0YbKBIj>g'n]9),2gdCL098[5@m$gOj()kVb3Q5 %_GK8;^p&G)5r0"^5<)tWLL4]c_)rPTaL/;83]`>cN6c]\`X)ZIKQb9j`$\q(p#ZILRo.fM8XI'W',I&HQ]*CF?e1c`8qN8NA*MP+ %1H7JT&Yut3JSQUHg/3fUdM.#a[i22=!-64#=:2(!qq$.9A_'28EDr@UKJ*B,;F$V,[;BLsfbq'6^^;uTDh;J$nBTOahh%F_`Za8b %"7G4J"'F5d-b)+p5_E*VO[m_nHIU]VNh7\:$0;<"/>@dkVjFE2TPYC8ak$u@hO!nP$l%hdC1%NfJ]^l(mupfcc8h*M^3H-hIM%K( %N9HHh%3!G_B+?OM"e6:2Y1kS8P6)rpfe3l/mIhfX)*9V&D/@8d@"Qn?3KNYEW2!ul6ZSVpr.)p`MZ]f(I.Q&?(9?+?f5p,3h>Ah!J`Akk`u3*/eUraP %.:`keAAGU(>8#ju]_!!.4/Yq2A#k$USYg6(Vf6ZrqrPpZV=1H!B+K0T#L'3%PVS9:d^ceFme#H=[AGM<>3[\g:IUT5*PPO#Mqes$l\T$F\A1 %"RL,$+cM`nFbH4_GA;R?PaaZRO;C('%e`fE&t4luY:4*&Wt4M+N)XBL*`Vc&F_#tg.9sg4:sQU%)+`S038mTre]@CPB(e)TV,Jf7JV%t7geXNV]\@#SAmsNCk %TGsUcp*FpCb:0OWK%U=bcGZ7@"-"oJA'#<=JT:2KHo!KSJMN7GeRi$@FZ"a@5dD18CQcLe-":5Bb%*P?^GC7akTjTFQn3RsJuoj7uG=3\'1d,-)FR%=XO!$erg0 %6AEg8T>Mkk"?"XTSccWK3Q*NLa>$i>3&T+/E$;-_SJckD:<87I@M5Ca/q^n-DZ9WeG79\J<9VtXpItLh>JR[URZk8=cC?m[34Gj) %7u4)?a,^)s_1Uk+WD(Omc?OiK]Q3$u^T*<^I7c0Fl#+9#*3a5"/C13]7E:"=1XFj`bK5a1+TW?I6J(OGLe!cVpZhrX\N?7@K,O8H %U6ONp(kFL!L3L3I/DPE,ao %]pJR9PMi86*Go/A:`>f,2bu*pFleOG]bV`?O,t)T0=YCKL@*XV5U9/=LNUqB3AI5+S@+GTYckf-W=SA*N]c[Rb`]4HfLIDX.+oqKJEgl@-7B[\.#R*116A;\1'3aK\Zbf< %pgt_C^/omY\HtIr/9l=-`$@<.Fm%C>hgH9o?t;a.m1ATj$QL;]d!MlX3h9X_jt+0D*kkH+i``9WQpP_L":,`.7_ns!6BK1]'Yo,0 %XdMn(k:(n!EO9ZjZ&W/[#5aD+Vi0M=W)0(-/)Kj>Q$e5KggK3Ig!n"IC`u"!p%/<,nYFY_:>1^+=ZcBW818GNjMCX8+>#7KpR\4A %AL2t=Hj!`-itugHp*B_;_?]k\)n=:'H%:hs6(UtOM84^9935rR6(p,D&3@jl@@WLk!NPKp5Je5,Lh8si.tJnlMIO417d\/P277+M'GUE)0`n-l_V]uM_6BK_"u<;Pr%UW;,33c/:N@P1;b.Y3Q,D/kAClY2ZDl3\?:CP09)fTC:Fg$EE/[^@^"FoV9P:Fj`R($[rkEEGfLkS5gZo7aHZESil`dY)1G<%Bi81T`>uHOS1jg6*p*E_2eKREi)hORp>[I+WJF/ZXCp[i,S/ %KQN>!5b!hD*b5aIP%7PB^_&I\`1$aY);LJ7!s3_q>jfCaVJ@LZk6\)[]:A[$*#W0Jr;ktm?W->gi4F_Z:B!+ji$BaCkGt(ni+,&-'G7rU6SOK$^PDT-O%OCI/l"$a7nJjU?SEkGg6[^pLT#.4]8p57Nj;bfBZP7m0FaY5jtp> %X?`TAp.*4Tm*)iffA2WS8u->U4[P5nW4(Qf5JNpM9CKMMW$!"mQ8ON([\27]E4QQXad@K83jqS549RQI94gV^W7WF*KU0/Vmg&qm %O?kmh$&3WK"4P=c_IRUG,K((@\:s(!bBY.*ZmoGcWucQhf;s6D!`!&JNNa\VZEO'8%S;m]]WB=l%$jh#_"MqsU"'78' %J56FN>?,TGTL^Y2H@Qk2/tg!)8k]JGM@f@kC%b=.!8k."rq1VhJLHi#[Nk!b7/#OtD,]_/R=5LW$i&?Vh!Gf7,/`sJ'"c',Fu^TB %EfCoSL3ltjlfaB!;f%H'1BUc8(uY;[V/:dVB'\AC5K[QhK.rkK,R`lR"[rEth%QT7n04[`hDVd:%f21Cq)-$,\.*CMj^197;%R7K %#d9B2g]adAj<#MdS(COm0=+>Gk9Y(t&Qe4-.q(i\bVHM;&H]:=\:EgUad[RL?XEu\XRKcY";Afq\H!=_,u$Q?a#]%S8-?]3DQhVp*uLW]m;KY\<]A5:]\ %^5S$tXq['[jC?KM5h+gJlg+[W]YOg]Z,ds\F-(1r%bL6kfG5@$.MmY>&'1T0I&A(a8'oefOr=DG1pPO#*752KG,&\N_)4o*I'\D: %7B'2:Li*Og#[l8eF=9>Ldgdg %&o^;'i#lE%7\bZG0jVRbd%rq@7Mr+)-IjQUK?>N=_%!1N#*cO^6+'/C&FJjTE/mb`kLU!35uXQiCEQ5s&nDL[Nm+M=,/&nCI"B/I %Z83Q*.)L6=$nnc)k![@##8_"-)8*eLSO#dN,&-&N,FV.,)!GR0$:"_Ci=Qb)"_PcF_2)RK[W=4GquHSg@LNt-_XH?X$0nni0ViS0AcEIt_s2kIm$Q_#FNS3&bjqO(dR#+jdMcrjV/LF)Lg)kXpm)['3bM3G71heX,D %Ph(l64jRA%f>"a:FSG`Bib@in`=AV3J:Rt#Ut.5o;F#5EnQK^9=DVh=kO)`T:D.nt4P1<^&1e$o*R>PP`[r$AI?2*?\H4#+C\PBl %"*:F"c*m+V"t72bN2q6!U3;G(q_dc?:W'VK@iQ8%=0g6.N2Nm1!@ie!YXS(W7a:#<3sj%A]4M,2MLcn]T;8uN?&M"hmeY']isH6Y %G6@0:%1[+$@eT^[**=j*Ne&<;j+>&)D'kg\bJHH&JK#KO!8)LDh6X):IQG %_`%s?r;`-_?,mE:RVsBls:/^%f4Lub8:sS9QC,S]g)&Yo2q?nin#J7T3Cac^A^4t$j!f`:Hdb;*8ikS %=$,6aoBfrhd?8MX7KeEr5q&FqL-/'cN]FFPFPD8ZZ/jFgq1\!dI@)q-ep>nElm!h/IGTsOgG.G9+ab_Md#E\Gq[Wa^-q]#V2*54[RbO6pRc):5` %';0;M.@UV"F^#q-r;3NHEOhLhf+R+1DQ*!4?KS^o1rInP*.8O^C;3q'/;[KP2Xl=EAY4a5Xe9*"RtlNr#:4Sf+&p6\X=asp(qQp? %)Pg)E._Q&1p+3p*(.\I0WLnP!B6-pnO:DLgciQ^0#Mau\;Cur>;4G-Diq)-#3k1?H^5]#<\+)_5E&P='FSM[XM %?W#FW/!K7^P3qIB%6/dc'jNF4")^Y(!06B;Uq2jV$7N*JN9j7K7K#(./+h%H_tq69d+5Cq78r&@_(j&k`C#N[eFYJ?J"$I_9Xp)oi1k68'\'T>.<4jS`ah!F%BRi1L0>.q>" %>]QYC'i\"?3l(EUi:cm6EsgR&'/6.*UB_#ips!T#&fbd9]e'JDWs[IZu!$>b?nE"7+eqZa>2G7dc2!'>kr;;&J$aXGVGSXe&FYbWg/)%$2ifZKAne#9rF)E@SXX0s4[>5Eo! %]F!6IbU-UFQNobs^0Df/l'1%;GS'JdiMo[U4@O4>(CF)EGb"g%h$af$O-AL/f1RQoX4p8[gL'K*a`2jD5k8TIA;8*$/kO3*[]fgo2qt*jB_150EM_/qu!@q %^b=9Q6@nMSgrHi4]eq1WNHea_LmBh&B`^+5X+b*afDkfL(+^4,p"YJ0VNU^`WfP8PV0o/+QUZSk4`b^^OVuY">rmZ_i9eGnlOocpD,Qd(`ed %HedKEc5*&bDo"JP2]L,H?BH?GYFtBjL#OKV)!#& %JJD]Z?fXR8iSk8"]\#-H$cA?'Wjm_?2h$4='Bi\g&nN3-F'%q8)@2?:.j`J/7LsbKK4@r22@o'_hQ<2.&FOB=F35,XJK\F[2n1VQ %d,T84f,4b:4:6=k]jUTg0i)n!!h-2,hXi#b/Zk2;"@r9aL[ %-t;:+GS?t4'H9[-hfQEem^507N<2Yd]p%Eoj&GPKpWA\#3#JHBc!9`u/Z7NV%l->Gaud7V_0^/?JDb<-,('LNS1V:8GEb5o]o"*> %#H^=C)o6Tqa)_54Vgpp!SL*$EUEGReQj+'apM5d2BS)0[*Of\)._^)Q[5-"F9%\^;GEGVDJeqH'gfPD-G"*M(+:DC/&r#[D_?r6; %;7!fcIaSfjOqhje!Eas!m=u7F'.)%c)9Z_%^-+Z7ARC,?c.b^qW$6@?0T%GC.ictt4I@J()kiN9@#!uu,qD7)!V>>@=X=0RX'XbD %/b_U1&r\@U$Etb8TY/-q!"jho#3qdG4nTHo?DmK53J.g]GY+c8i`TbQ1eOq4ABsXb0IJcq&@\I0];%P-"WSr^Eg,Y<5glo?VX4E.D1I2nnciJM\[%O' %`L9*G1qoJ.9Ar`^5snC$"KXq%FtkUp,tjfVMG.-sUuQE5bs:t=HiQ:6CmTt&.13$S,NGip8mMiA\Z-@2"U7G.QXR]iB%V3tW$CH& %:&KC5^4%^I?l!T<'Fd^0,S_f)9`"Z5f]kp,+/L;=Q,=_5>$*Gr^`j8c5[ESQG8f.O@RaKH(HQVSJ]F,,=q@^P%5VLp[ma2dK1Am[PY"DPW*%+G'&aJCe;b_77a#nUgDf?Fpmuj8ckQR& %+6MoZR+bDrk!g),%RJVZ9E?*U$$;7l0^ad%(1P/O\lZ0cTe)@MbCVBm_j)8Cr_\494ToVj<,:hS3*Ein!@-e`_8k.l[/C!=4_j?" %:2c!.6r*&BCqBo`^ZRF=7Ccm4ng'-l#knsNTC[$SpC81b_/uu+Xj'To;q9cuAhmP1-F5:+X4lgUqOBP3B*q0F-oon;7S;Eu>=lGQ %q6ffKN53EUBZ$,Ue\^IFAcT?\Jb&<%N\7SC5-QDaS]+;V\9In8?D)h;cB[,if]ipiX4`a!H#>$Z!1+_P>)s*Wk60;$0,2W.I1>%A %U[0XAm,N@.lreKjlT)L>&/5s]Lt8nEJpG-BOK1-dS?O+=+QM=mPd@\W$.h!S3NSfUY>oLVZ?h(,\=<'\HdF)RArFgV^h`*Xjnu+% %$C&_U74INSG;'AVGnah9M^AheAQpOr1[klM*PsLsbS>31qCI(8YAf[XK5c?\(%0W1?VNc8=)$UK]PJc %p:3hVA_[JQc?dJFED7d]KB3aUN.WVeVaA1bTCL"tE=8B3/]71pcBoS-=[YEsH\WPlaY\4fAM:(="GU9Q[4T7%VlP%Qp97.Z3iXGQq"fm_d::jN*KWrh %8'$M/ITj%I&PR-Fq2G!(du4!5YI;lTK3M[]p'9R`O7[hWqji09E#X#+_@o5j=pscO0',1K$m[=Mn6[dgYt>>dGZR %HG1UFIg!m*!:U#a0j/DFbZ2)2\4G_O/!rsp&;32T1hKoHi,>!W)<'nh&AH,"h'gElDaDHSi5#=*0C(KG4?Bn:/M](cWZ`S%l2YYd %0JK0OU>;:qD]:^K%4n*D*5iLJ*BbU8Nm&?VuHaXg6%l1U?m=?.Q83>r7+j[>(hD[!S'?)GTA5+F!>&kZnG3Ot-,GcgUjA[D* %&I$[i]<@u)d"=hr9U[mq4[RJ/2:S/!>/fqjdYc![,;?W5!EKLa;9\k.sEfV^+jG[5.j/9*3 %Jcg+01i.1?6#&L^+2b?u4Gbe(6kqd=DmX\*ZZE%\kfRQ*@%m/g2tG=^oRl904r);knc@dL$o"be%A].M*3(pqR;4&L-B.71`ijj4Q0'3Yok.3FdjKi>7TNi`TF^ke"UK@nKB*MoWe,th5UJ&!I4Q[?tilm&,TA[.0>mu=t3`+#,5l[D;3F$:-mdb;`=bp-4/ehjYraj=e0aYe*>OPQuis1'q,Wp6)U@t?52<0$D-mock4766l'Pkb1R]tl==M&G)#YHib$]K %`h>B*K1@q3%ho\$(h"$JOi)DOu`Qh1VKDbm2sSN75U>A6n^r`Serbr5qQS-Wdl%^locVpM[BG?2X@^J+3/W$k5Vq+/ %3ImlRB25U`WZ:]D]tEp9hmq/oNWIYD;/7F*"/?4_63;@\(]kI94D$qkYTLaekcNp %&"[,K5$9Y@K/j,db&Ii"Yjo5G%bh8DZ)E!(.F&?L2$20ZI!Vn""bUo'+(j%AenaL#*VG@O"shX.1WRJSi*=+Ia*\jE=mThg6,E2I %=R["gq&Pb\I':$[/`ouBP_l5&`+@-TDr`r^Y/ZUg8(]'O;)YEFf3ubWIIaNLWsdOG20A*u:.*obmFS.`N@>gbO>@2VD0:BE_F3p! %bT4\I^5D),2\V\.91EH#O0^MoKF?@ZQQULIK("%)"dl'(--/TEX&?A^G&/U2_q`PiFp,9IN!@r!D3hst?Ye?W'=]f4d9;\80BK,L2<$3*=q'@%t)X33$e\bXou^Ya(bTo%7_]a:jJ1/N6GMS1!0$%lUtp/k&6/)]$esbX(e3p+!T4 %?a5E%\S=7&&E>OJgG2G)%+Z*`k]KfA5JkN'-@Aq&N6nS5*h?_WEL6k70CYglJt&/'TX#1a4.jDgO@f?91UlmJ:RU;a*QKbi"2B<@5lpFO1XKXfNu\;C@q(SgB7OUL %A!kAiTUk<3Sf,`pH*qMP9\p``%(PVJru7JRUBT3Qe%kQ=,TS144Y"Gi31]6K_'[olX!kAg6jG81F?bP_jE:<88NVAGK&%W5E/f=[CE#f%VJF-I\KtW"pq_h1q/;)Q^s'=p6Eh8lu3mD;%;(QEp4ceG%H!)]:#6]RL;`:u4ask8nBi6A[]+tS:CRb[/ %M?p3?VHQf.##^ckVk9Trfn964ng"nOcdKMZG!5T/*r,<'!;GC`8Gg-PlP.i7q4+6u'[h\"ac:8WD'sGoj5?4CAYi\Oa%9Puo&Lt_glMpBeFF9]kAO^s %oeepY=mpFMVK3Q4-db(1#:9'gYF_fI`6`9[>pfh<2N1G7Zb:[uAH@`?_u-Xt^jP'8JRZhYZFoMnK4,s[9rbWi\JNsP[9T'*I.S*1 %Z[a,_[u'2QYU9MV@P-sY^V`4g5^\T(m?9Jmlb-$HD(pIi:>P8r[[O(]G0Hn5B]-NLCC6Fd/E(TBfcggBaBTLU(6Ql:;+F>dJn/+m/8JS;^G-8'a-"U)!5g'"L%P4UuPt@r5FYVfW`puh6qD)%#[b_0%QuAX*fpV+*&=ZX9eI(H9 %rj.-9C$?9uhqp:B#W5)*cG:PP3>$*Z>Mp:]mm%$`YdB'Zs8D.L/6Hph3rT#3B7gV:*ILUa]jT>#^.#SlRU6K2eVg@-d\^.+LH %kQ]K2d6Mn;;ZKQcnXdfQ.MqchKPUMNm["-9J-$V@dD-+UYgJ@+9,R>^=e%3L>P\*69"WWJNQl"UE?h\Q"?KgFD %+Uq'[,rBr$-,3mDiiVI2M:";2l#%INAWNS?\S9upFfP:L^^r3lm)rKT,"coX0R#:(_a9Y[`B$a2(>6E[`ur`O,B$E+'D2Y_/rc:) %H!+qq&L'/lIO\GCS@+bC:NGiAi^oGeWAk8=^3,soOoer[*lHZg8TS$dnUF?0Ir-K83Ro3pP6*rTAZQ@o,Ng\bT%.f?Y"&NZ=P9'V %Mj2jWq6oS6Qe,N$R\Rm'U'GHW1][faN*mp;Kl)4ZP=cVNg'q7S6LAb*fdUbgfWt4\(0"/n,]0$^3[6W<`mmDJQRbXsB9MJuNDg-qi27Q5IP92K: %JEI/BDBql:TX98DeJ&&T!V2?!GNDgoa+P,9V/OGYcZ0iOcRU6:[B/_[1r3r7;4>853'D&10q';MC;Ob.B)9]B(0u-;mRY-eR56'0 %o24KA9%!_(62I]?M(/C(4bKZKbdD0C%F\gNHDee.j"rXJ-UTh]!64ouUGrGt)X.9T0/YPbJX+;fVg1*:AXXNh5K:68+'gf=Vd$j0Ua[,K.ag]4+X6\7E3Drg%aEcF,F %Qnl@Q?7)<[]V!@%'-9;hVl?VpY/jgS1??!+,SMl(A[.*o*Zdb1PJ:!MG!X^Ftmr/UTf^8=-ogK.?dT/.Sb0>Lh+;DO5< %DpKD8ipRZQ*BoW$/n72Rqh^j,$(!g(5\GNS;LG_";1SC<8ZQ0T_dW*Q;D!j9(INJ9o\*30=+hq]Ht:Wu2)o%b>dFd`I;K+jar--N %_@@g!a-1Xhk"3IoAu['KgECig7`)$$Yb3FdKI-T/._mSiQr!WDC0c-iQ=5,_G$cE.m0VZ%]b+0<%CgeLd`"E%ae\RGL,iWT,ijP; %j$qJV?\G[A:)+/K,'h9q`X^Yq3`ZNbofjb%cAf-`&:e'=9N_+&6Ot5Fs6&^_r\r-_Bj.0YGS]=H39Q^\\L3B-\Hb$aBWSdC>Ym$0 %g,p?:[nT)6IXT1)&4%OeGR7J6=U'lX9hTYmg>Ekt!Xc#W2e*eKf?5k*-@jJaIFl[;%c&9aZll4EcW?Ifg4lNW^gj"o_+NP`/>2W+ %H%h7U@0E2e^M\U<"T45:Z-.YffLP6Z6ST5OpX][DDqVB"pair0%`E$:ggOcr4]:+rL^9SI2I=#@(dABrqO'OhS3o/]"-:O[,ZS8Z>Js#MRh@(3Pcp6 %(LT1;34sm<]9]i>SL4kWJSUe;&(jc(81jZ#!d(I$i4-A$*eWK@F8M-p:u!^2BQeo,i5V@Tf?;IHLu^TPXM-Qf/<$U)\fi=W>$1Bha--X3sR.pI!;;\)nOoAOaGbRW6Sd)buU+e'D[_.d4LQP7=_m80\'6t_eiXHIR;8Y=,FJ"3/b@^.lqnS-G@6>5jgUVTZXl'k-i;H'=T+LEWe&cNQ*V*XY3UlJIt%(2 %!?T'm^ID&!UDchK3dFg0feJ"ea0$gFgct5'Q@DX_:e(s.gfU<5_+Wa/:>7m;=MW_A"#-7UBq+C*ZT(SK99R=N2 %WYoC3Fp%!;88t**X_iV>\3_*9A7m[6A]<1:$UHd3FXli?J^d['F]5Cun=;ZoM'IXUn/2.8[Y %SD*qDWitt"C0:(-ot*nCM6FI8h3BaZ3fpT0M6_\N"*e0.`0huC %40!SKm1PR+%kCCKd6I^2k=r5&nG-g7!B>;t,UYRCStM>7@o26M15KU(C^0aI\aDP87GGh_k1=1TCAZkSX_89RbB\27QA63Bh9*.X?QkbGDu1-"*gVH:6.g%63=In`R@C4CYkXiZYI1V83C %"*uIM4gOg5MoanfG/fBC#?0-(Gmlh9gj:0QI;LDLH^3o9s,90m@Tl;'Vo<-4g[Md`>,[d)!pZ/7[L-UW'_M-Gr-o"9h877]AAUX. %1$O]TV7,W1O;=]obX(2=k"o*NAg,#6SnE9^`^)_fTLFU!rOX0&^$S=OVDlj)52HF(4g9KOjAO>lhtY00UhF!2 %@dBT!!nmeI)$b;8D1?[S5j`*)L7:XR]5@_aBbsRa4'ORk64,:L&-Q.DP!f8>@\jXlh/cP-,c.ZRuJKg?Lo0 %7H'X5[S_aP00@5pDR\t5+)ZA)&o\"Ss.E4&DQ?Wi4(etGUqn.Nhb1f`i!%u+WL@m/"lp)J"i'XE`'P@C``_qS^;_646.%V&1]&.b6HC9d6PHb52HEiB\Ri0?sTsI`9J]*H7MnHZFrR6:#2UVA<#b6BcI`) %6J'6[!YB<_eMu]-MpO;cQAGULX._HI"?.ReARFp_=)(+IYABEpQm&s5m5os'6Tn*IsAR->e@_oTn.HkBn^V@dKdGudLZ%;i6C.<&ZDQ!p=7fE)9cm4<_IBa"IMlEPS %mG;qTbLX.6_4V!5i@$]eE8JP7'\%eN.8+8?*0r^el3,9DZqe1CLT3K6_sprDVk2=jV*-C:X2UT.iTI49A@N&uV"f?Bf2,3;oqnUB %Sq@;pM,:.LUTQ!o9Oj(gBOGOM6I2b8OrX?(:$Z:"ZHcm.fE\An:Xs?>%H`AKJYF\n.i`jH<*RV?WggB7!X[@]0$='XGCYjLHnu<]mDG^J$c$['Vr>dLH&]W2VJ?Z4L"X.hR"-PbC1%-)QDGQHl,A8an%oleRuBehWUM!!hf]InrFj[[DULCRc; %p+aq&4pJd9`n!.,,a]N9//s1G@^r:,4Igq"#Vm2@59g=SK8??H8!)1elDA$:$lb`?h_gKG7)51Gj6n3fY?d`eD)3R7T=K4j;R&j-S3k&OX@*ZRES6hW2UsgHo\6dQ@2+-3@;@h8gPH&2$@]@1Ic1*g[*F8!: %b>J;Af;;%LQF;qd_YVU_r6Q5R/r:C1QEWC[G6;i6eK%Ach[M,0\\*MV9L07e?o_nhgoN*t>L9MKUT($\ %5e/_:%mn(/9\4,VFQ'gUM)o#<8N!$\h6RNf,+qN(!%?=b!`JQkM_78`95)>,LLp=_R!C3Y[7*#Uf$""<$c3TdcD4:V#T7t.hf;H9`-tTEiDiqXCIoHokH#&n1;YGY7Laj>ut@AZ@1hmA\kopR*Up@H7P.>_Y"cM<3ph8ZdPKR.>=:h %DCIRS>O_g1B6E1=J@AkT[TN@Jc.Ue.*5`a4=lerpP]NT`Jp:0sTknUQn("c?(&>hl)3dQug/_DkVX9UJID#Jl;CfFPAc6]COYrNo %YaVp>jJ)_'cj2_2*]MW%dO2GS];qn.4`$:`IQF*.)(Y)?>H2bTDmUm#Ms3GZ0QU_Bb,;.'ZsgY7K991&$mi4INWMO]I!gojo0l(T@E7rD.88\K02SUBhEr-P$aTD(-&k:G:h*[4O)?Wrh&AQJB&gQSDB\n*8IB"9F/R=`2tg!3ar$ %")*\S.mV/QZ_-Tae!Cj>"6c46j\k3ERRoHg,PZ(]C,QHb(J$EQqGjr"8hR[l'`GeYQ'NAVpZM&ClX/1DBVQ#h %OnOKG7dWEb]in?JJo!K"-R48u!,VP[$\c%Gf:_-ra&s[sO.%coCTNl=.aL[O26>a6YdJj%qW\p<5aGlm63Gom9rl?MgY@(]\'fofAU2Mi7$38TM'fiQS\Ai9//f0^;bFH\F&J5(c%.EW6S,I9m>(sE %HBILad^CuNd=E3l$Id6V?+%!b@Q(9]8o/A[jDM^-#1L%*^MdLZ/P2$*5d)@QRjN[Ub#Qj#Kd&@@OTZ,X*Y?8b*a^!Np?1pW'm1W> %/)OWr>E5o\B$qG`]t76mKV;lZIr+uooO*LFj-Jk%'^#[@G,RJs[![.$h(lnf`Y-+0<"1@Z-B_X!,Y"U_J@MP;T$EdqXmJVT/qE'( %7b_9W@ios=OLnhEcr(PVn[03[;]!.l#:M;qJ+cF$6UTeX);uq):k.?[OZn/PbLY:Ce)Wi0-+M,N5'J-F!75BX"R"JA8Ig(8V%g(J+;F'"08jGI8l:@A`=eM0311SJje3Ma?AAZ.q %`JMep6L6!*V@>o/O,&$[!4WZaM_-%[5#a%)=f?R\=e]JVXQ?OlOk_3!,0F0q7NX?Oe1Muc!jT8Vc!8bsoS8:;V&2o_rR\EcBZn83 %Y8;$%p*d<7mF%bM)bT;DMD$Vdr\tc.H2ALY[EI'4&L2[O'\+@J@W^@h_R*_&/6%7eK(8q`AuQeD]1%(1FA)QL1[sn=$.U-V,leBhuf*Tm7%@;9W$g2d'6%SVWnMCqV@o+4f&Q%n@^;AoGD!O7Zo4r051sm0D-G?NH+0MI( %=N3THjubZl5sX,URXeS:9u*1%AVd!o(o!(#eN^dfL,T3t&=6Ep!7EEAOa(mZXGD/*,+iCeWn8hR%g[t(Z+7IU`.8j!:si>RA1l(? %#Km2NQoBX'MdLD,\*bFc6mHF0#f[6R'V2V5]Wh4>W-gmfhP4 %q:16i64muEOhoS^DW`gV3'9d5Wj\(YVP*""B)[tUIoaA@%q+X&%F,ZhhgeQ!7KGiI_jnr4FRBgd8sfRL4`kFG*?GEJ-:D%!M=u8\-pABReo?BcnJJ8Wa!n=GJT %#OI])D0sJ1@aMZs@Y`Z-s$3E(q.>jLV\YXA@=NXR\U4KT#(>Rr-JIP6/+AK5MQda!cMrSXP5lfARUdX&2=:mF!J=C1N.s-Xn_!9" %g.AY2KW%VQi'"<2OI\[s[bM!i9%/pQl7KTl#n5DMTTg@baiXq!D6$,T2"OD\hnGlmN?RtcR1;^WscYka6Q/bkRO7r/`,YQr31 %cZ,SO/,S[`6TmJLU*n@t)[m`TY]uT!E4]N]Rudri3rSF":.AV:;nU&lL>irBrH %dVUB2$N>dr-@P2QDltF;S!63Poc"/VdPCc-!>#h)3V=bUoQq)6mDIWN+F=[5I?";aL)e#cL#a9@gC6r%h^h$5=>/El`55_d@O;Df %^t%e<'A/AjboO-6^[a(nh?!A@;'(c=m.oc8hPL_=!KRh/HI4s>#a4=0=NBpem'#CCoGPF]U8E*E$:k2HGRQ/aem?@8m^TC'GfNL4 %"(ilI!/jpP42;j^FqDg-X*cr6mb9FOAOO\RG5'8'mgagV,`hjnB"#%6,BaWEr_',W^c@(kjP/#Jn0cD9Ur$0(t)B4ff6-Y5&P#R@Z]D6ocO%TA0>NR)\U?N"9cX %SK1"=&q>>ni&DIM9s]F8JK-pW^Ejr%+poKJrT=F*PDWcZ7uAn:OL!Co3HT'2.H(iPh$8Q+g>Z3S?<02=L>*4_[7@EHf_a]aF("OH %E.//jb:G+;+H@H`_:H%)c`4:$\3*_rm'^4XT/BE!>K0j))U22-@B:7i(Eb]6O1>GSg2nFEu740+:O0p!r,#MS@?\MTuu5@#-fL_kTH,iMkHY>IsPkqDsYf% %3eHPBHDSB#hUm:dg6-N3dpj2a$uL2g`UFF9(a9B'PJYmP:-7%OGW@4TSKOI? %g?s:A*\ce#\MahZp6+59>%CkhmN"QW$tfea%P^NoABF?1/HL73Kqe_[CO&tJdHfLV!ZiF'IKW"CG5BRklXN,5fG*j2Hu54@%>C4j27$PM&Nu#comM56]KagO9LJM77m#@'%322G:.bE/EWO"=8FTD&1J86\4_"j/FVg)]pZneEUIM %)\-^:%."!OWlr5BL\-$kE-]8s-dW!t?K0)ea96*X&a/'T*-2ZJ[]YP^KuB[H`+*#eIf_HQeA90;*,RX%;:sq0om"UhG/&Zt%rh^m %a55hl["FQ7m1Qg[^dU_uh1in^kbItq6e6RoGLf2P`WP!9rY/JdGJOlfdl+l0p"]7-mAAoA(XIZq^d;7`V0a"`4NbCm!PrM^V'!OB %k:WQH*3hW02dl;H]1?n"BE$lT1hg%juaV.4,_D1>l2)3sIT=goe+4 %'s*4>ele\Y5d1iQc*OOoG2tUf[]73s5Z\faHbF%Pb]'$0_nTa8]5kCBaR@CC^psA %`bFg*TXdG&G/V]-1?Jib4*]HPAZlUhq"is&mp0>np$j[:oh4HR/n$R]QP#jJP85OE"NTOY'^&en:D\?YG4Wp@hL\ZWnL_BU.Wn." %PgN=$mA;W,ZWKY\fHr>6&a\/F:7'oGHERp&:@%6_PZ21&_.fH9.hhtJgBJSf"h,@p=QfA:r!jt(:Y(B=o5TNt`4!somO.n;"-C6X %*B5noVfEo.pS:;PH\fQIV?`"4@iNP2T.Ra&r:u=t9Fe*BZ[rh\SaOao@%Rbg%Ru\&hhni=]otr#5"IT]_oX[=G@c*bHTPtn<]:f"3fR_]\%i;:>='pLW%*hpn[,%5KnRVG&@;%mN %T4!0;l/rPO3)?^upj'_q=iIoi^j)ht$SU8Ke#S%KZf_US#9H/j_Y0fIhSN1r59?."<<^@Fb8maikPi_?egG7p+ut<"nBu" %GWm&7i5[2^^8TZfHr9DQo9OdgAi^*6fUa2r"5EE_0Ji'KrTV<3?@r%!T'*5bN>(3A/QW()#3S#-\D:D9_D:HU#=N+uK7O'p0/1=`/D%LB]@=[;R=3dDD_omGL9(X&,#glm8gEhMJ.6lQ;/`_"!qFkXnl^'g`=1HeA3FkS>FQ50nQ %qtXJ)o\F>R5nOi0n&34!9#LRfTIXga>a%4aP3Ci)]5C6r@CF.l3Q2[(,+\kF/![$@"PoP!TH:!ipt3F1G(XaRT:l)1c[N:hB>Ee& %M'V?mJso+f6#]Uq8]QuB`TW0PB&;-W'H#Z*R94_s>U"?i?L10YM.Uq(N\Q7<4)(@6.ACH9>`//244(@?lcp#A:*\$T#eJ&e0AtE=uF2\"p3XSm8`'^ecjL;U,iDEmBmG8`F_Lcn6F5t3$,o88d>E4EkHN+@e\dC'd< %%s/Wr=Aa;6kWk;ujp3R+@_8a13#>oFb%A5#q1fKAE+iJP>Yj9!io^Y%aYKn#PB(=[QVIb_\K[`k_!Ei(HZ/"5(^pu4H,q;PXT[]9AA=r %dDjqs@(ptFqGNLBX8-]\U`5r),[j<\KVHB*0ZdS`k&4#=.%V6.$4\`c$,bePK(."m\5%hX_]62FKr!W/A?R3V3]hM&^@Wke1T'Eh?DXPO3VYJ8LA/9XEg*\=V>==??m),=6oH>U6SIIf45o7:aeY^m>43m!p<`PLZJci<\U5NK*=FV%Q&G5T;FhIo]%L0iGb$p"P/O0LL\Zrs7V!$ph(GhNuu$n1eZpq&@Quc@/r;GJ8\4"nUo[&&S/"FnO$?5]T20^ %UFebBa$.h6*dK@,YVl7Ci*+-NH`5*ol3Wh&f^SL;2IcPMC$j*YCAFmMLPro1S[?dDZJh6i&ie@4Ir59IO$eDP&o]O_U-K..iT8bD %6ZT!)VWB:p0"Ac]3N=u.VI7o^T%\)/HbJg%BjB%I,Odsj(Dlu@5`4e)6*+]RPDd.SC`h`a0rl]F2SC4q,2r=G%&AA57/6bP_#&B,>LNHfdI>Wn-1 %?@R`HmACTYanB!D+YdlP7i&jhf$*l<41<^-M_9Ua=r0I^.o4>:k^\?tIV[;KKA+iq:"l"?.:[F!.FO!K*n*^5/:'Kg)]=*-f[-.^:!Qb")DR/pZCbm*D&sLd.L&Aa0C %"NOhS=D[RL/m-"'ACSM>&_bm<9A=?qgLY=`Jp*$,Dgj)?HYk+ockY;Of%(Sj'Nrd5hTVOC-iFpYKJriKA<6/UXu[OZ`]f#E^d,@CEM5$[A`i<::Ik&Inb"#LYh %&GFgoD]GkmMF$JV9Z&9+IDSg6g,rkm$O7Lq''JeVLAhp(iMc5dL=12&j.c$cC`#>;nr&:)Ie_p_&([lBFiF6$# %.P]N"h+&_sX;8&$J,(eo0G=.YFa;(-b'\\*^+YbH@'knDQc%X,'bPcbK44$elAi7j#W(c(3& %!U.MUcOkgAR?th.bs(!9;2V(@FYlHkO>ial:d+5tV""5#&VJ)ATK$&gmGZR5l@tpk;q&1,6O0=;?T %cRdK-hZo#!,g/Bm`)GE.l"@GLjA:pX'8`r4@bGaIiP>%5%'S+LpH%"!a(4'tOpVb+r]g2tQ':\2nP?d^*gsaif=uT^2968#,Wn@cI %c-:<^R@G3;(1BZ,\:Fo$'=QYgNRj`l@-bcglq@[j5G7aj=Lq7[W@u[$nB'6 %V7Ih=]_hCVI_b-6L./g>[VVr2kq^K%;7b;GZ2%GE'i8G)=6R)7dm09n?]=P8i$O.u$uACbT3sCbSDY@K]5G7s]E8*uT1gmjpF9.e %3T$0K(cD#_Ygg]"B,CY.W"nDNn7!S.o`0,blp/7n$CBQaak152VM;7).b)`ND)ni\o8[3pGu^J()p[l[#ksUd>g_4T*XkPhJ_dQQ %_[(L:;AqSJ:K@ur2`U7(_]mq4\?1D\IOlg/[(X;M&_.eeNMqAg7H*IJ41Uo#2[hln;R-n;l %?]oN]*^QkqlsR`FP_k1I@c"?USX2Z9G//Z_AT'e$q>U4HW;6XEM"j.>YJk]KZgN8X5)%(EHJ%5.?6K&[XA^r,QZ%]2`a*3a>p %)[s>["KTR]*+SIJp0.eC%-S(FbHE`B,:i*NVd`!F^sSO0XTRk860"Q:6EIQ5oHpY&A1nf05/KhfLbFLK/OG_:;b1iW-@*]k3JhrTP'p^D9U8BkPVF %R=P!f;'&-PCACh/C8k4?b[Wbo-anrb*j@Nr?f-$]V*+2C^9OA`$>a@)IIAZGnJ.&<5em(Bq(ck"$9-"`+8<3!bJVQ7_5[9odJb++ %U?:Xo*SiWIa0l-F=#mL;4ID07b`DDs\$:9bN8MSF^^MckQu[R&)ihDn*RnV_8Hqr=N9&cB(i>Yg@p#PTqd<^oWIoF'K5,-@XanmM %L%^/H(%6lMDX68)mq#>]ah/"a78E]6n(HVNZ3670E+'&c\\6dP?@=ap:PcV7NgQG7"!jI#I7K=Ue'V/j]`7]CJ+`:0`S^[_pODq`?[r+%^\ROerpGghs4\LhL]@AQa5?gR %reLF?rp."AOmQYErENga^[3+8`dV)kC!X$'6PGLW$?GaA6e<"?@*%<$X?o&#g5-Z)@(?2CZctVL'F5b(OBQR%E,JEgNb\J`O](j?f)poW'iD[GP\7k0kI*K>sPb+4COIDR,."fV?8=DR*A>q$sNQ\91Z-a0\VK_*N*82C5YdrQ2ia %n[J'4%4)qFL"6(MO6OMqW$2mT>5Q.:P,ht`G#9Q7KA95=Z*s3+XWS,>69]*;U4>9"jLWSn,S/DIMCrXq_-$K]+/sDQnrnOcj*t/Z %hRnc%L#qq*@5TTh(EAr(3,3kh8.r54f[>odXUE8BSTk/C@F[:BHW%[DT0VdfGL:'?1sjYb0\qoGhu]39PNmVVR'jM:U5MlF%7d<4 %T#\P:O0gSQ+b9>sRp[&,F@$(ml<*>B9JA>FYqK=iT2`$pWP0LeQr^Q<2SifcCt[HA"ZYIbOY(NGF>9pu65LQGBWX@T/918f!#P3f %?L>8h@fN[92[8XbT%!n]atAN5D>/!@7;&&g819s"JH3p3/D$<-))V$Q>td1Bn"\iq[-;jcBpLn_k&s44E*-7/G#?IBD-U64C^m^Q %BJIFN85"l&($;1VcVODG4J2KU7]o>5F;*\r.\b*1j/:A16><55H76IZ^gM]V/4T+ZG`R(MK_B6pO&bC1k&19a2F0uLW>s[TUh4!- %Ri<+#]m>`!MQ*(qG%!mMWH=Vr?P($WpE*SKZ?4Lg`1!.9J_$XkkHK2Z"V]<+`/RdN,3[pO33m?,0;.54*%`t?Y@dKI0DO`h>Lc5e %0hi6Z>?A6Sb@[61Y.&j5gi8d0]b/0DIiQZ(>2?5hCWeI5_1Q>o1@9W)Yr;bhG^g=ZX:]G3aUD;ftpRksep&d'Tk?\n'kp"hp %YL7AA#\C:LQ0>Rs5[_]Nbe_lg?=Xa1naXgE]-ufQd([p$hVKjpls^Ue6dFf]T]aEE"M`n)hB/;3EDOu_&Y,nRL=E^@Ceitk"&$<: %%e0R+*SI)3YBM`l0oG_r9ODD-5%Lk&MjLuW0=,+pAC+Kric5u/_I`_E"?D\S_UIp*QG[Q+EgWklmOig'<3(EQPN]+"p';k)Qp&)U %4+<-"(+4nM[&D/kK82iqjt=j\T7/`isE#[r$)<1#/fL7)ql?M.>!cC?^=I %1f$^,]8JnAZAuT/+2%9)AGDL*o1ph/]\ptdr0OD[0@Kd#Mg%Pi?HNL88I_n^(W$;.,n+,$*EX-HLa0Qs;0\1-Gk3Oo$8hZP.0hM_ %?sUFK&+M1pTk(k:iCd%*fCBXe;AZs'#AK.C07J-pV")/]a4D,5]Fa<%dh3hji`T+=V=_j89F8<*F.t"be5%WnMB0>D$PY0A8PIW2`a`Y3!!RJ4Au=a`>q.-eY0K`Cl=: %/++T(MCFA&OX\APaO+i$@^9"nHX!W?7s"/]-Y6-%UF,<7c&qV>5+r"-.EKPpe#GK#>o76_*B8\$g=U$3!.3gPJ[&JA@5W;4Y3WfOAL3*i8F@!f@V1R(um6j %LQGk7PT"9BX)`K`rcKf0nl*f,LU*4)SnrdYo+^I/l]f)1H4lF9#C=j'F1c)i?-cVU,C:+b`VX>$dTs6p9'*2)k>T,+qK_F:M2_ZF %4pHX3ITe@kZE(M/,hNj&Z=AS@o#1o13_lL"N+NV-]]jItRN?#Je7P?fc["Q2Ksj4a[K6CJnFE<717kcIH43k^>W`rE/'G5"!]?&U@?5ADo[[ajg5ljbP[QtAV3Ve);XTH]pW,OEG"tGrc<)IroFheLD.?*c% %KYg*e"a9FA35[gh*$.^9ln2TYLj3&pii28I]D+0N.Uk8nZgIuYGZcaJdMqQ4SO+>M96r^cs'QWrMhSep/+QYk`4C1rYiMA' %-;S2LXG`E6;r/t,nl1L#?+_`Do!63W6TLOi"l`OXGRQ(7b>CUN0a!UUgXa>5_7JOgIE7fY4ktrj6"?8f2`R[9\nNSC,?'&NcikJs %QG@4I?>4ZtoX["XFa;WYM^goolMWis#!s-0.g`nj3V6:CLg@Ylc0/`pUPBaZm,J#/V\`=T.*s:Q!>WG7qS#cSWf`\!:gA2&2T9;' %'JtqWAHG^qCO/tE5s<@$CJI:d@09ZL!.&ak]!2ET1c1'qU1S:Pli'\u/4h5q(5pm@,OG])*NK=U`2c6)>k>@M[JMaP%K7ABW&#"/ %R/$Vr%h`giHL#^%I.Jsk\_nc%aJFDMdBifb<5rX5Jj3e(n2r@KJ@l`74c9+obg?)/kbA\B<*u=F]@]?$$V#(FFkN;C8>V(oL7NuC %be`:?"h]%:Zpq-6Cah5LpG[-mE6UG\&"aqn:k+g3(Mfb-`P@GGd6dUN?Z4WEYRKKS_bLbTiU3M42&Ba]>eT) %`*AUD^T-?\>0Lfh2&'?GHf?[fCD,N\ji%U0C'!5:6>okI0F%.6]$Du5QT9on9ie%Z#*n<$ce9ij=%XMA'MN6:8.aH-J]]C#=sXI* %KZ,Qbi8\l6\+I@k+KpW-gb8>ok$JjloV-#f;:Y"3%^0Um+_7r?MIp1B;_jhS>mOOg(/NL[X:e_9ERUbr"0b!-4$5gbAeggT9T,R9 %o]:j50?ANl:g@#!isXV__"&gD'LSe'Ck^Kn0,/esD4Y?m$96VT`gQ3N/mu@>[C_#+B7@Xg:0I@_i]^N\IR\G(Db* %@X48eZT4e=N2kt0's@+:Z^3AX8W&k3J]?Qo!^HsVJn_4AEbdLldum@b>b"ObI2BrBg:3##9U?+7_9jp]9;9WLcB`?R5C^\lc0=OjpQfgD.hb\KCLIH]9Lb?hZ@F(U_(? %+"0,Jj@V6e.k\nI?.Tg_d!ZLnaiK?DN+Od3QJY"3HS721#,;(7YVd.SII_)=-*!`oDZHgY*VLo62h!HbY;?=UK=C!*W-SnUNQdeQ %[[f5t../^n5NZ9T %P9ITQc%B^WH0A_"L=-X^chiJ`d]/d$f(r_0](r,Y=Bp\$^:nEOX8ja]\\9bR7d\-&?V<*>/kDKm+!SmaIefK,prO>CI^*(513!:M %5u]D$\E7n,peC8Kkd$Jq!r+=XHRPFmhVc@.!,>F!0$6U'WnOI+T"F7\A\n4@E#[>j?D/@El:U#W %-Xc$YEjl.XJ:jk..)0G$aDI>Gd5L>:+XU'(#qAcP\4DK*9+?BI[u"aq&J]o'P.mbj`BcAKaoH*0euGc]Q!UNsM>V(L7bVLFG#_N+ %j(oH/d*uD*9OS@m%r8gkID#V>HYYjQ='Z[=-K*\;Ej4r_+jP %4UeGr*2K>4<*.TcRJPpFB@0OZ^?o>T9]Kge7L.4M2(+"oTII9A4:i)?if`,H;NPTK9g(NSk;/3rf#p&"2!C2Yh)^aY,bZ,`*,$+*UJ0Gg7O"(]^BbQU[)e-,5n0=i*>N!-k,WF-nYplah'8 %0X/K%/70Yg7i&r]V]8)164`iW\2lO&lGaUlP0oSkSp!km\7P8-.9:+:Q$U[TL*!YB %d`csf[s8.Z(21C7AoG`B7`E:K"CTZPd-rFtZKujb9D&BY( %/WJ,r<45;P=(#%n,1?t%WREW5L-WCGR>B(j;A<-fSVYgEqMhZe,#Z&:3C7oucalp?EZ"hdNr\-#fh7aVchrt10 %PUudL1hYkSM5gNf:%FhE"2Zuu.7eLq\ZTaK:R5t#)CZs^Aid!G[iT<.dT8o/D!ai.LrNIL;$]lL[_'Vh]+54C5Sp/dAU8MYLt@u4 %W-:6bp)m+fKcUea0;&V/W$WT]2p%o;k!@Qk@u\QQ\@XlYfZMYe@o]/IZ<.5[KBdpJXW-C@;'a*:a:APr(u8G2 %#,7:=\_DB4jD]=!3(*k0FmQ]N]!Dp+#)/Z"O^9E>h/h[X,IEnm6rF",;nC9u=jDP$Or %OX6EXC-4_.mI'`[WgX!(DU&'OAhH5jiKB9aarj5A8kd*MY$[maNf:3HL+Nc^==OJIS6;1"DW+c[4#k,uGCkS0Nn=UuK+d$lTM_^5 %mJrCJ_mD+q*?YtR4qBc$gh@GMqtG5BscBBM,\9+ZG4 %M6X[!*/_i5kWZ/L5Ilf:.5Sqfs@$kbfV1:a)t5u %<.26#'_6lZ%C]SY?aj&W"+SnIJ,Q*'"p'fpJ^6h`CPE6_ista6M[<84 %S7idb>lDM*/bu)7Dgh0D_R"cN6M?`2>+l=`0[h*\!5CqmWYFl(8Cj7GqIk6,5-o%`XOOKIU&'@K`bJ*VP[0h43L\4Xffe,;'"]dL %e%j2%Or\[fp3Z6><;O;fPK8Gjc^MMr=N5&1dplqAANW60R&i:[.&^E)Dk11rh91sUe%@EY@)O*ao>YLr5iYcnbh*PI_'UQnhF03W %`SB4*0XZ/IOKJ^G3l)j9U-Dm'fCMUu'=(Ao@.SifN'4[-IY%of'#4libl5]mKIH's^4]0Se.BP/&/-)j?86D2#;:ZdjeE4`!S'IN %/:Kn+1jce/=/2]Sr9t,L0"g(YVuMV)m8^pi4c;n&IsBKQXC*Y]o$Vi8r7H2(b!:/c?4XeW"5gRf>aAUj@eKGbmqXY9'`-CYV63#s>3`d0.VG5[P(:0c@`A`K196R$Lr6RY\1pnP@Lu!2$`1^$Ke3iMa2?[n %n2SQ-#]4dO*AER9n6V$g]%EbMLLr^rn&J0)hWjsXl"q4GPohEG'$;m&!AG9rB]l*-J%uBg"EC;&6!['+(FdTIIe\QtZ6TYVLcPL^ %L!\sBis0tr;B@i(4I'9=+:Bu)Rg/4fQY*218di85_8d'/.j,N6-X[b.M&+c:9sjN#BSKY?"-UQo9HXG%L^44O%7E,Q[bAV&ANq\. %N;8ZpKrfG\'*]X46@*')317Ptit,Ph5^)KHqnOh;PY.<2""BgOR*`.d;m;[#P1@_N*AXt^LGDEZ+_=0Z4T&$JM5@8,0BB2.OMF4W %])<%Z)A2<*;"]&EB>HZF5;Y-XbtM%>X+P7Mka^aXXm-F.T^SptmCTdqW@+L3%o'PZ+$-n(0Ai:fMR"pDTb\2]e1Q+m4P\'Z;)j88 %W/Z)(('0Y)TFT2!^rTuhK8'd=0BHT7j`\Xq0Vae'3KO42K8C_jg&cn90n)grA:fTVe=O_\LED7D`EAS>JD?uVKK7LYU0fgj&51BO %C&)2BYo!/.[5tUi-Z!brTH5UFYF)(Y_:9S:1"pZB$dC^A?"CO%=Sh7dB/>`A@V\Y@7._U7_'-!u#HI]0!^M(YF-0)DYnN'o*s%=, %XqRuSC84+\WrVe<4Bk(5Jj$&NaU^B%%bCjrGAOltJdI4FWk]HU!!&K"emN+JVA3-5g %gT`0s#>KPRCNL1FTUO$"@nZLr,a6]1a9X0Yt8$dVU84.mg0WRsfe4N'#a#Bn[>sL1KMs?D9C(b(9ks]C&HJ>4[-Dg:"(M8:ABQO>j%EOC]EkD:\=9[7d1[D<:>1SHp!&1Z(i6r'BEMNpTG2jdDG][]Ij_ %Ugn;.dTZB4/tVuE\#u5t",nH5.7X0*bY#Jc*V6j+(/p3+%)*0DTgTmC$0/)4=fbAlL8B?F#&`RA0.STUa_=!(EYQ?BED^@pKD/?C %,5"'6T'e41IUg?+W!CCQVu]<$?iSP,=AJPiR+=0`n'1e\>!mPFf[1"cl3tl+& %@0m<4f1>>,'e<`0F%t_kP#iE*("fm+WXl:(Y`ch&Sl3Jm#=iA,ZWgfKQ;4.;GR[[5JUhKtPnappTirq83MFk-"]Z)QjHg=I5:"AJallQ`\;%cepjr %J3L&&@oQL]JXC7Fgn$okpsc5:W&jVX(k]tEU]/!i^.3iV\fWkiOL&9Z=iM_BV3NPk>.! %Eaq^T>O!Gn7jj$D^c7idb.P0kN9i!A,'L,B`KX5%c-HIA %d`)6m:WTFhqR78*\;pDY`UtU$p3lA"Kpf<]ijdklhih@(!u7cCMCM"L607 %5E!#LTYrp6C%euI]\RAT\*Zh'<)grV>qgR5;32"RdP)(Tc)D$9%P;(/p!5#JAGr5&T3T.@^Zf0'EPt^19b$Z3n,;aWhY*<6JEn2L %B$-HhgHUo0/Ig<.P;BUX4#U/rdj,(.j(?0"DnCq]n3b&a;U!d.&nog\_p/1n$reH[G@g:DVSGn[mSOC-kbI[I.md&7[&51a]l %^::U*+#>uZ5t'go.j1j6;AVYnd7Aqal_9GGHd8ida#h\:*u/`9X!6S %2E;,A+?^5%*4?&LlX_pSIZKsF@IfpjM2/7"SsEKq:I0%9W0=p%0_0?\[(``g>S>Mr0X.ei">-7$[tc&+pHc%S2_oWMD^4%ILjoY< %n882e4+A+#U[W=jp-N,Mq$>TkMM,0qScb2gMG,e"H_SV^oH'j%kdm,nLZ!:UbD8/4LtGp\5^>*H0?6`'P[HMrrR1+\#BL%@@Ke>U %D,*]Tg$EDU6f,K"+C-"pn*Z5q+Za#8k`b-T9k3^T&feL(jeT]O"c%T)cSlJ;cbM%R@GmXTJ0`65c!3MT#RNHukpk3s"1VA%Ui00V %'P;)Hm/I\n)5*T97E's#ed/Xib.eHld&li]eB$%@'/'kT_Rl$>(Y?^BqWj4Bn:06nQ9YB)#Bq:LO3@7)jO%K)T'=/mq^&[n4SXed %a8=''lg;-#$pTDnmE,1<#?WKd#T2kP@0)q$7u$"1g+%uPlHAoAi[AP3&4:>XHp"U!boue$&7L7<][\t@ %TpZE^I_\npcpGVR[/@u&ocX$PG@BS.fpW53oNAojcFD"ZYn>me%s^hqf]/nM_:b8+_FXk %g@@Sfr!-nOMh]Qs67A.8Y&u)&=%@PFQ3rO['b;aUDDfd8Mk4JJpL+VAKHB?E4]le+V]#S5Y4MHQi`gZUkksR-5VXfU %jku>:QtkEjJ]#01;pqQ %VrgtTpb2X>YCHTBYQ"6&kOe<1Dnc2D2h1Vq5CNHjs5>&Lqob&XIe-@Mr9KFDc/%["]Dm*T^OQ$^msf$*r4i6kmskA\hu3E/r8IB7 %rq!=Cq*4l@GCTYIhu2RWJ,-_'hY2Naqqq>_^](.Gs5UTgq_pb!^]3CKs8>1^)TZ:!rStBErqkTpV>pBZqY7Pos8LtAIJC^8r:+]T %HiO!#h>d@2p]'=So#G*cOFPu6rPK`Gs7i5SJ,+S4kWaK3+9.[gs6'EI55pafn@tZ[]Q"q.e>jM[[g+n!:5^0<4,eL;Sd*lZ6*#6Y %0uA[Le-2%Lo)c<)mm:OK$Q!mH%r;ZlHM\7^'jtb4D$e(A"aOX-/JX7u.(kVa_7'sF/falg+l75*_B2L^=9L@_\(=FMZdeTT[q>Z< %"h^g"Y5)qln,Vi@XR6V`nAc%TJ.KEPHSC$_IRMk5qtf3(6RNeICsbm'*67cJ%\N@ZPK%hlR"g*$_f$*^;V`!hrN39X@-A;[cj6*_ %?[))$T.'j9nssdFH[<`VjENC(hO-H$o8JXEe%GVVoY[9=04t*>0B;HYI_mJ=frrHbmc=]M1u#H-pFnZn5Q)/UnuGpnr3X"RrYN1Y %ri=qup"k/q_gf<\4dO@-Od5Nb(AL[moj8GED!fhRr@9M@]%h30D',!ssL@(q)Gi:%"LX[CW(bU1bVQ^?q&lH$B:mJ`^/fi#^^ %=C8DE#]_HlBup)hX/\k8=q[VJCV?\0bHc-4F#?B%XBSCWJ9$'0PCnI1BWID&^un&NLQG'>eA4?r=BL5G[7IX7B3_iJ/co1#ajmcp %C6fOcN91r6d55D@nTuj*o.rW(gZ1Q-@`CsYoSd`C8%ag`*?6=6bB@XJ54:09+)c\s&1TK%<"OO[uD# %"bAB5FTbG0S2:X"Zu*[(&$Dnr!L!L$<+:i#7If%(oGs;K,manqhJdU$ZrEZe_T+gd#.!J4Li0(r5>fKsYbj66D:n\K:f; %HNdDsq!Dn`'-m4^_.*TKhP6>/Yqd`7Z54tjWM)r2>nh=URI^IYV%\e<8UqVjQBq3Eqc6<)GlC9UP])`p!A2[sqdaupR0nq31*XCi %2ifgfa:B_pT`iUC/Kj-TdY&`K7Gt6-Gn0-1WMF$bT(dOmT_0\[i3CBQ1E %Od.<<6;]V7X"h`"BjFUAC!.W71UNDN`)aCpk6@"5#Imu7ajI.Of3Pin,9Zar-b!ZE&@(V6;HsR7hOOusiU99&D/h:]Z-U:\%6es? %b`^QeS'^!>i$Zu'r+((1D4k,"aD)e8Q`\\uQa+1i=f!X!p&mG/MqD'Obun&(`(^60'r\>H*6srq&`0Kj5]FF5!$(&]]P#N"gO]*n %]#^FQGtA1^]M&3AGV=sn_e!+9=ffOSEr-%$Se/l:_3XrlZAI[k+B %'T5FKb4o>4!cLmO'2(khhfE!,,T\5prX*?poB#,Bm0ZD:KQbBDN$smu>09@fM6%=0.2.7*`+n6#BeZFJNP+!^/NS'iK %(u)a(Tk`OOb(<)?B10BY^KqL/@" %UKGYc>B&>nPFW]9D6l#p$mG?83Aj_`n!q6='/0[0_0]BK(MUMc?tLnS%Q@7/&N)&>'FbF6W(&9JAi"6Ej#Y%"0g# %c#a:$Y!$8)U5$n?U.>U2NDLJSHiS*Y?ui*q6='/al]YJO4`.S8`\)Y$=YEbhm3KgN$hcpnpYI6oT$WF;'9ONAku>.;kO[g)K&lq$ %.\I&`gh5T>G=!QksT-2 %MmTV>F)1Zd[1EKmcQ0-,Ptl*OB3Lmb!kk%Sc4a`*C5^1TK-D"=jk#1Trj4`c>W=#=-C:RGV>kQk08KA'Zb)qaR/3(i*$4Jj4M]s->qAni8^tu]0-<._'B7M<4%kVq %Xhg<#\,)HCQfI\)Lm_3u8V0G,4N^4adEUpRU\gc^!-_8>LGbGO_a6tt?S"Tc*j?:>o(AH5XieUA."YIM#"fGLH,B\ba.rL-FHej6&4O;Z[crG'Bd#@sjcbM^cXl/='Y3)F-_ko8`q&rUJ/-8e;nILeqbrI:cOp7a%oeW:K_l?.? %)BDQGVlRpEq3uk\GSFJcg>BE8S88&cGP?aQ`VbL8(]NU@r;c`QaUn7@g2-Q^cCY&P*W5E0-1QAf+0_h/I2_R(7aKu-%j,,,0q[A% %\t1R1EBN]6hd5c3TASJYT!uNXhVBrZ08FO00:hPbZd3FJ%j,,\W1VsQI@i1e1_+CLmr(;6HcEr_\ALFf,O@nGQbtA&[[FnDZEHL- %CE5VWdQbB[F$F#iT?>VKiD1FCSrNqs_8l/bkP(#U:KPFqH!ZDFN]sRMTANf4?E?sf]XO?C\CqJ-o0$o^hqm1(T=nhqhq`jU %0DEAVEC'TK+$B>VaVi#=I\o2_J,]$Z6KV#?%[Ra?W8HPJ;P31!G73)rItqOT3qt>Z&BF8\c68+&r@[i+`sMcn#8%'0J%gi^HMB*? %O`g2"DBeK-HQ5K*_=tHsXG?7b(-N)ckI?H:=al^TkaY[2\H45^;H)O)u0tFP'-;#c6SH%qYBP))?\mU:gt.&GIWl"8G2.,Prqt:kI[!1hY+Q$9:g5"F'VE[ch6n#9@h(+ %\X2YSI$]K-](d<_PM=AIf?(sDq=EE9Fq`cpB[SM>\=+7DruKC^Sb)Nqq0q)ncXqTLHJHiC]kn286[Z4qT1sb2,C2dSg(3(0:pTQY %TI?q#mij3k[=8EUH),5GNiF*Vqt")ngb"#iZ\i8fq>NEm1#Lrpqu9#-^q]a%07Wf`O+7&]hubGNuF^QNLb %>"cB"$B%V!4cq5M;48q.b%]?4?Yf&&3Y2Hnq$]mK;WXkU]PmNI];a_;rG]X(;d33Rh,;.nSPSkL(?et!8m@@%dmEiOj52aOj@<5> %bh0ET8uaH-;%rbnJhFXt?)OTL)9L(1Qa[\B,Z0>d]h8:JY\HeJ7dq-&*V;F;#?!U[ZK,7KH+!ub@0@O8it3qf\aJ)2*VcIqW96O7 %Q'-+Z[R-,?/T_cW0KXZ7q\CGH52!e(`!W);_X.P(A,4H:?f;MF(dVii]n=TBLq0'OORqVFXdn5Jc4(Q%nBO?A(;,iY"?fATEjXMT %,mS$EmdLu[,8G.kg:&2&VuW%U.eCTUSB/eI/Vo]BhJSAj6X-N=5ag6h1M5>;@K9Buq8M)'!Elf&aYBbbBN_;2)8rM5H!lK5V@qYW %6hIX`ghkeaJKIh`g\'0s[o.]oS`Ci^l;U>7 %mZ'gkXZ,$D[\0A"JJ0h1$PV2,aX3K&?]e/$%(7ZhD1;H-OE-jgO%d`OA"f.hH\q#2\dn=;6W?OhACS6$6.Oc=IorDeVn,5@IMuMT'+(V;gfK;(GWEe;qra9he5k?dS]G8lraWZk?i`Un*_N1PoP.[PW&tk+P5`-%/7lR4\HK %J%,?[-?U]0!uLOG.MB)<<+aqniOVS@?^*tI9Z9p+]J..-Tn%oE;Pp(:D\I5[c(PA%/0m!?+F6]i'"8j!=piI/Hb'L;o8oV&ii:PUR*SrN&D'S1,mh3:S1n&K#(f2*Bp^UKXHlCNSd6C>*F %i=$Z'W/0>3RsH\;&HBO,r)%l;n>tq*?>W/2X6&KcEW-XMUJ/4JPmmVKW0!=ESNbs;8Bn2ceSQh[ %[V$ldL.*T)IGbdh[7\A)NO09R_\TXW\*JCac+?phfJ_1_QF69=SNj6\ZPM;Iplr\P>!UM7D8^Q=$G,hDZGQhH_nuF"H6s8=r>9ma3$GuTKJ_s %^V]_A8pGYY6oKtIN*46qS*p]YX:tH3C3G?1MYdNT_^jY_Kj*>J2%6C1bnLaoPiR%$,rDS.fR1$)<7r#6qe_C$@j+O#@[1E5BCg%f %5qdlRAP0t[).W3_bQ<52N]QCAFUB2DkeW"2h:TD]8=d++(SZnBNlWcnZQ-l*N\aiD-/pCDl=0+Kc10*,UF^7tKiNl[q4j(.^p!OiDH[E7^2tYA)YKQQD %"GHIGiZXI1kYT'\I:):_1C;rlau-g`Db[*V5pV`=gqG_,R7UMEeb1aZm;a@Qo0#p:Q#h4A$jO3?mRb[@_A.0^o[b;p81%s'@XTa0 %-H[Z,]3a'7/HMRY\#eg?3`-'^$;V%29MMMd6;7n[K/Z!ukX/JCI8-V%@gC"l0F3*_7OjJm=,,d&Uadl\C*CM?jMAVL3^V,9uIa=NQT&sm606<$2jiRQ\WXm3TV(K"Z9P`b,RtEkn:!"V$@<_@:E3q:Co*i)Eq3W7MZ+0&ZOl&IWc=EQL4R>#2'^.BqfP! %m7@ss9NJJ4/p@agc_Ita0[0"=1n^Al.mr-h&j@SKf*du;Fk %[l)A^THC%03FQS'CXn\ucb#1$SmlP,$[Ao^[`+MK+C]W-NpM\C`n[ifXA$rUfW4\j#4Z_VI(>9O=E?XRT]gep][%M'$ETn_0'+W_ %<\4U3g`3S(B1"Nnq'!#/A:oH82_s8:3;?+(BnL!\e71ju&FE>HD*[u)\BnO/8q+"#dUC(jBU7:*TNOd9N+3!(LVa"PiS&.NWZ3.fn)9>PCFB=Xrdfla^=,.CfqCj>=KOcqS`qM-^l%Mr^8LKQ;$(bHUc1:JIuMt7)S %9#'DND=6i\3G4hRot*uQp*dZX"ms6rgRGSkR %F2ouJlqah2A[^I.3lScpn%Cb$R`F(2>@1M^r#nB%nWJtT``f@S["9!NQ^50*cp\\upIA1VNB=&?as8`fc/"*q;H5*^L_GD4BIRWm %G>;2Qdd.K85fql>6HCfR'mnjl%@\.\cqAH%VXI1(C8p?ae'rUP14r9Ji^Gl%HE"okY(U'P07 %OZPaa`pg\3rTEtU`?oA$SQ;W.jna$%k:uM*kVE#1""/W<#8StTY1i^S.cX];k,/a`/Ygmp7)*3:LuMO=E:<)Fn-`$\&;JY#6Tc\u %;/e*bIXa1=iC$^N,toUg=mE@:gP*QF(S!_5A@UMs]PM?K'lC>eaA6J2X?NY=5$"7h5d@70FQ&Tb=97cW'ZF*?^3'.NFFEq@k':F7 %?FP7TC7/i`T#D+'rI,^3p4tIr?@GQb"%bBH!diTmJS=ZtW]#^E$Xs&$'cV:Da>f?^1bk%"=r.3Df&GpZ_oS+V94_-d_Md`?bjKQF1%f??Tu((,"Vf-4P,209ohhm#K!'@%9RO2JB8P(?P5c;a4re-,@b^!jfKe;LBU,C&3APCOt&-U+].@KLL_T%0/b!4hf\VBc-a\E,p\5:IT)'Ptl %CAhK6dZs#N4%6k)6s=3$'E/-dGgaI0!^l!MK@rQ_nD!7c)7.rM(#LIbnn,J#f&\T<^q=grkg%F94K'(o"[:UM_TAk`ocq%E)r5b% %%"Snn$oQ%0^Zml-ZUAr_ik/>UH>lHhU6q9oE(sk&5nM`5qgIVV(W%_FIVp$7fOoM::aiD[C5*+M@T^f;gs*Q-[Sk*=JB %`-a;SQs.Ru9\Cm*r.MLIM]d2mLZi?Pkhe;'LTF-#9/,b:op+1i)J8N->B2)J.06+q*/=km7kkO/Jdd!fe_eIqNAeVOP,JW$48o!g:4>I.R5`bTZ_877N)Er(=,Vb+J:iiB?UO!Gq6,M$1$8`)RJ'/D-hbY&1[ %/W-YV7bSZcb*E>-4\k?$s]%4(@RNH%'i-M&F``00!7#MT)L;F+=WIYe3W3?8^adVKCW<(cf[g:r=*Z[+[\tl*a_81iYo2h\J35u?EAN2l.OOpZhI0SSS_Sm[ %NBa,9d7IN-#3i#Z,&)/!r4Su4>.9J;Aq\*-M1P/"cH]>5,](QuQ!>DjLK_q.&*#ZHnlYKI\0Vq.0H*+\irS961rSWNS`QFcNi_0o %i!jO)M5,_(-3Jc;DIl6Bg7ZTobnJV5ud5?86h.&&-Q\a+WNGLQ.UYFbQ`JP?f:AlJr %0%;1K$X^NegRES-D"nmL[YVeF[sGUUb+r,ttr&<$L:.(f(MDSmY?Frkb>^PjT!cFr9KFDipV@M8*c4cp%NL8s-GtLo%3n`TAfgf^]$;VZ2`ASr,._urK"^Q1k=4H %p\Y16I@L46c<(Q+pY5NZG-`4,J3mHEZ]a%L[.R4`FNiRBHPkWHNaZ,3^\n:m#BH/=a)iO"4Pb]#PA %&b*ea1Dn<6q=:u[V*(+ej;,`,0r=-#QBjQe(jX/:Q-i.$PCK^4Do9MEnV6FrL4%]uNgQIU:\P=%&;Na9&i/%OD/&dg-CMPKHNVDn %==JS#-[-L]OSjhnTJ%1%GF=\]&H'cu1=]-.7"Q>`rWo`6of_#>eH-FQ;'cAb;u3tP\%oC'_Y,RjK'9qG$)r*hC[`gCi?AO#YP\fp %R5pPX58>]Qh+GTZN$>?^oha"k;8?oK/'LDmiF\BXCi9*B\@R84DkW2arI7sqB$8JpeP\__IMpeY[F2JK[q2"2'rb-+fJ"rq<89(K %Z>+O%^U\25)BgfKV#Deh^?T6cBc`AcIn$aN<'&s_g!Qn$UOnKZ%`f2]&1R"a505`'?8W5;nnRD,OVcS_J@a$`X\W-dHSBQC%+M.S %dk=MNK.*%al*[Gj\@=u7D0(\IQ.Jk/N]'tV6d6AND'1qFC1;'Rbj,1a-+4TOKc")PF-6C&0!I\6OB,KB-ES">(0fXMCPHO]f*/cU %!ii@:i*uDXRV!rM3,KP,).rjK[Ebql`'XhM6jG?YQa*c!L2K.SLDfI1\UR[_Ip+9*fXsNm*pE504]Y+fP(s,TLDb"][64'9"[b7ZI`A/n?3Atm.4RBV*T"j4hkj_ie+Ual4P)'[M1KUp/C+Q[%" %-^o$8h(%:o-@Kc<, %0?id8@6Z_^8l7PY\*hBqWp.tlHg8QNiI.X]+Y4<.4,"ocPUaXI#bQVu=8+NgFs3*s1[sZ4\`K[S)uR[.)7cZ%_EjU%^4:JU7)8%f %_)nl^7@>Ye7O0CLg#ahNG:bjS$,0gW)L3JQG0T#,>+J6E*jM<=9Y$`PFC!i&/[YXdC\\?C$-/afpthMUX5Pij(7KJo).%>fE#\-+_="J[p=;dpsQ'Jb`JGKdcU$Z""&%c*S2X29lMC=+(S^Y6a\:9ZTP2 %9-V7Zb(NF(CM.k_d/ueM!.u4j)Ah7424dt(kuKUrrI'g6^4\DB43r(;brS0S>#j4\."L9]&IMPDg[l(g"ChnD\sg<7)B:^[CBi:m %J9C?=/peo,m-uWVI7SNcn9ZKom3pOnBdl1.68C8k"ks25^CND38m((1_<#l*"/rTbJt-#6L!D$'q$7RcgW34 %r'IA[Yd!$iqXA%il'Z>3.7u=Oi1%mu!]R>DkbUWZC<.l`Z[=)eBLu5o>\6l.$77q;&WVCfd;)2YMhVnZ.QG7"/]LL%kfd[/TGufI %Bl,&:9`f">RcP4[?1uc@- %:GKOL#RF$7lLD3"6?/.GF=0C.Q/S$D;:#JJF2rk>kHVVVb`O?b\?qSU7dUO24p--9(VSN02eKhN1pEXiUiG'KSJJ*lR&QiY %JNWT?%mLD4\HTW\!8haa8[C0j(FKpE5JSjU]=N6l5Y;4QV",6@fZD1HSksOF)9P!RF+_HJ`PZA!80q\+j<6`1Gn-Htdm62nG>!&+ %&Wcu)%>[J*>b7%QGcl`Q$^dL;W[,#P*2L+DCp%kU>'u-XVHkA'Y(nl*q'k+`.mj_Tp4uQ,d,7et[W7I5S!INVJP-fMP8Z/hT#"m; %86tYb)n'dkK+"1$[o^$$_N*e0#caPC'=7'.G/@gJbd6k+Yk>0+rTQ_caH)ZX+'`]GPsh==X>2/FrQe:Mn-M1d)E0SP0=?)K/.Ee)U1;.\CJ$J%7c)R_/khhu8Mnbf`Q.^Bd!'E]0"SeO)<(:3Np %W?ZT1!JpgLcN5Y.>.sQb_F@]7N&=kAUkQ/N]a/Te[ocS*eD-d^?k+#X%$hAcRXnQ"X+Fj!V2cE/@qF1kee\"XTS8jVQR2fpi'm-O1=7`:[@shKnR.SZ(mK %ElhCg]?+rWnQf6.R&k#qY52[ol"Uu^XbtM,7p/,RCsK-8X4`]@9XB)[Qc32`O>GER5GgF+]Ne4ojg[5rf)egR+ttKl3l(<>)=7D- %TlZ%POJjd9_M#-\+GFG!Y",+1ifR,q4F&u[EHX\tL,s%b3A*t!1f3sp@kq\9en^k_[9]8fQ_![Tg*1?C;*7U;\h)H5K`-QlreX-Y %]]6OIi@h,%YK^Q_A:<%:h%'];9Kac?,kQ)NK6.QC$Ofak%=2h"*-KG-^'99tYA7TY7&#EDn0o&5a1^Hn,2,9udE.`UA7b_[BKRnJHb;Xg" %iRDnJ7&.+BlVkJN#+6939H.&b;5U-E0g+q6RRO:uF=mXDNk5L%iTuRN<[6<'V'L1>1>^KVnelL*c$grR:Z&<+AJ^%A&PEu]q0Jrq %!IJ.&=-@h"K[E=$W+>@$et/nhGR>i6T^j^!$^F4mgumW7<")U5VdK$UTN$^g*OI?2_bh'MY8HQ**3A:pl% %,;G,=b84S-a?!UMM[F>*(&7teg>NNK\Qt,K'fM@VX2'lsd.n3'NA+:U@)`U&DO$[11d^p/[,?=-UTG>anl8l7DG0@247nppQ%>tI %]Ttd6JWRq6eq/jR0(?$hWB3&:+DlUZqaEt^FLltM@"Juh/]`p'99k^W="NBfN#!nN\eK`o=%9e;Z_J.]dg"+_"/luF.WC*k:ki&e %LoJA8R4L[(2g=J%BSNfU6cSbI;@`gQH8SPM1#oF39T[n5,]L]VQkGUo1-H0WS'TB5Fu/IogI,Y_Hjlc&Y/*YR7[1!F)fdYZ+lS+P %#)B7-b0I>C6HhQ5bXi#7bN&R6+SccG9=YmnNN=-XJ;j&_OQ'ik["(&8!A@XU!`t*u3sV&p=sf<,dh%46\q4-Y8-hm6>1+-9Il-A= %@-KM0FG?-7QX-jiOrR6U2%ONL>@VL'_ihB-d*>`-/6V.kX;%,jB*L^IGo$WF(P3D?71eh(]cd35fJa"nq` %FWi&fPBm!_3C8CiGhk+m/""ukrYhHMK4O`l'rIc`@R0:Z?5JZDA6YooX04VliPeKjN``A7PDr'MNfb72O3IkO;BU@l_e]iH%MgB+ %CNq$g'3%eI0q+t"$bZDA+Q@%Bok*F]IBnrKcco9>]H,mXLCb:M*iVc_-;ug1d8hiNJk8(P0@JY"MLeV6:b'BD`,?"dK^>B=%B!.p %[DVc>WY3@YMT??u=\'Wt$8O2AC8uWH*Af$t[7sduhor[`mWg-(_-i.:JHYX'+YVHoW(^>qIYIcD0@Kh-Merdl_REcuYE6"38\FnJ %G8FSfk(.p?YTYH"\^YCcAO1o-rBLGHKsV$Vfm+t`EXjp'b$LP@[:j$ASV&cHAW`qH#?hZTr3/Hq[LDDU_(C<8hLfb+j+jgtTf.V!JUe2qR2G]CTHtAWHNflk]nWC+tfk?r8X.&ak_Q!llVB?J>m';`BrXbld^!3>Vda %`dAdBBl0N.EWKDlpd\q%#To+[Mm*bcE+O]kQS-9&,5!A7R=C'lUbU]%f8J.oJ680(iVG@oYGA_##+-!+&BJ-?Il&_Hi8DcRqM3iD`J4&kX$.4b=W>BSoee/4q_rQpV4k %k]Q84dZ.cd3ekVH8FaL!"VM[",oXY2(m;qTHY1A$>V0(,Uf9"9j2L@Bm8[G_?XUH4),kQD,i\h[.8@$ibI$Oul1%&(G6N+s5N2Nk %JF^+o.[mj&),)VgMD(XIaL3^*>!1@j/V*kaR7u\qiBK %.HIO99KC`So=\eJ8uQ#SIkf>GB*S10X"pa(lXcm-+]`.F.':ZU]9Tst\mVQ"i:^tD#m2ggK7)boA%6gjV3APAHNK@SNmQHo/lZ=- %b@J;F#%h'JKu=R&k1;&@%LON#29%FnEa)M(dYMV!]Vro@0mfkHDddNq,spS<,%-+`Fg]$f&lQoV;>eV1QPR=V4dM$5b[k7Fa,8_Wk:KLfF61Y(b6*4_2&oU8-:>'R`[RIT.lGbAF=FTiN'P$@5A?]Ha%pE7b=l;m(m@7cX9)N&>^%&qc0K.O %b/%)SXnBCQ5ic=3D"PolcEDTtVKnu\H=J?JUM)"?hCT)1)&'g0$H:fV?e4*19JHViI7H]+."J`C+F?lHNcNB!]PA\3u>a?:2J9%)4Am!X2;\V,^c;/;=/$m(:3%bCOpDWn??_:YVu`=BK>\t87M!eRh7J$U?GjI4uWQU,qLRF/L;fWX?jg9sQ;+=&aerFFbmY2EBq;>mdh$OLJuaRuE(:"-^R&KmjH#,=Dd^F=u&3AY?V]8+'=$*ZbB:APc8b[:MXsO(k"CW+BJ*]C!\8p"9Aq&jN8*?o#$f:r*S^*`'b-o&5kQG::$3+i$2LK!CR2Hft2tFaF>rk6,Xo_):g%%+:.=MSHA,4t79[[10QK#=8 %$j658?tsO3O%7D"AJ5WaY]^TdJJ[B7p(=Y%6aU&gI/MGb67"2Y&95"B4(IJ^p>aiu"/\`lUaf(pd7'jI;OaZ63:uP`=0WGenMXZAUUF/oKgWK^`'.7)Xh=eFst_>>dGPW[n4\/k\K/R-=gsZhK6QkpojRf%^/LlU;@6,6^qrG*5i8'[O=K6i-W"5k_NooqW]#lD$_7-7=hmP==63SGZ;>@K:d]oj8B"JIfXcAS^,=RgtmZ;O5(Y*GFJDe099&6jqK%c %8XDq)pC4pXJ1aQj-[A9a\+k_(l0"ToMfq@&+LT>!/H_*iL/X3L#t86&H35g)N%Kc!LKO%\R5aIK*1#aCH:#no%P_[`L2;(9WZ7T" %FKldt=O=d-&DhB6XP>pO]%H?E$u:6%`_DW9'!?=g#9dlXFa>e!CtjPm"7&W6[$5WYraRPCLY %%C!'5$;&FU#ZD"A7-MLfSm342rZ$Se1-OeRB\Sl;J`&%*4Kg6D,sDkN1e"]81*oocG,,O%]U:%AZ8`uDZ;,J=r>J*[Qlh%N$8?15LNh+U8hhC25'r%98Oj:*A`!;3"_QdNlDI %[NZsVLM[(#<\u0n2'WhY'#e9oOldLE6bN>1'@ %]+aHNZL4WVGkNr7r=/9s0kA^JLa>NH/*:33&8*GCKn]MXXq\S0"@HZtUZWFg0^:(L'2WZk$]QS6#eHk\C3B9h7psm+/-WfY&R6AR %Ot$$@5)orM92;ED*qjm<#XI;60)ETn$bbCm@U\o9`+]9R480k>\N7'=$jqpj0S[ %RNB`-G+A)sA84*%qJ's,Q1lWPag?.:Dsqc)/oIktM$Y3dS,%qS0VL,M4Mss(7IpZ6_^Goo+\l&irIA5fKNJ=lSsd<&l=PkrMl\S] %FpTeW$4s'"!\O9%-E8S@7WnBk^%r+4\e>cH;Q?SD_jIA26d#n\Y,p+r+KImZA_=.P)"E=)!u,#J6G_5l.:!Ut)Qc3UFpufWb8")A %Hb6n'>IAC(Q<"7X>ce40JIHn,^.W'k?5_ts$3Gi!WLgMucLQZJ"7^?<+HcA%6O^NXRntT;(5cS@iWYb/_?+]ai['B]n!'ZF0,Z_e %G=cPG`8#3/),2Eqb_Z[*j_+#d"atfcV:XbREC@O"h^2c&ko29WXF2;g2+N:i≺D0cA/cTKg@A>HcN^c5sqJ+Lo[4Q&V<>1c9=D %5,CruPL=kLY@cs$c+6aNYq?6\ED+gN&sFQc4(KVIKJi+:B5LAj=l<;)nCoJVZoUkf%aJqQ?b`<;']felX-.K!fD)n^8:$^n@&^m4 %*=*':Ol?S59Z\0ADj\I\1!*W$1BEGB;%Z::biS>E)Un5 %F)#1 %fdS&d1h1R#/KJR5(5i-&qHjCI/A%8e\3'(7BHV@SDiifZIrc9qQ'th]@OT.iUuhSg;6*>h"O\u(^A>,>Q2iJFA_X`D?(V`u26TU+ %PDRIoa8J^s4qn:1.#9-$"5PKrJ_q\kIrlA4fP'I1s,X^7f?Qi]!&5WgfL)f=$XGHVJHXgn("-s*PF3?uP91BU22[WVl_RhPtS!8R'Da %S+nB:@6DX-#ka?V7rlnTg9he<4W/#q^rW6G$o!Yh8kb&9(*0r,5>fZ>mUp)+3(Vo\r4;PX>!iQ`s!$cqN^UK$QXf:'6q` %[e&e`OoUrhZ3gd'##gk6Ha7Ru5(H=Hd=0SPD?:D5B,^&-%+K4g:YMl+c+Fh&)Ebg5DaIDDeC@CPH?0ZBY==)1'_` %qhm%*e/X+F_:i@,Db?!o#0V)p$:',MekTf.tR03Fa57atY7X+F:lc4tsOaVB3/ %2_\3MLAUpI:BP!rRVe1HrYq2OH,Td,ZF^qo_['i,=D29!!K&UJ8*OoEh %S&T<+P&r$1[g*hPT#!Nj&KZ,E-lGp:pnYG)9%X$taS;S4WY2W/L@]S*H+>PkT5&-H&<`U^=gIcn]ENaG]DV@DYErc>T!hF&VrNE1 %T_kQ]\KiU=6+&G=(]CPmP1b-4s6FdIU0BX/7s4nY@+6Nnpir+Jh]F';?S6cbQH+2lS]ed\.&h!/0<2l\EInHkT0Ki8?d@r5mX<`T %XE-FO0Cl)5,ac&%H-d.hlLI;X.L,dWC7^?\nA]pW7i`DnV;YNO0FY7:%"pNknjf7Ho^R0?EEXLC\VR[G+NTANc?m6,CZX=b35bdQ %AHh"sQ(j %>?,pNGF'/7HnaPM"&aI;(9^uj!^<>-;*^,0#QfJiVY)t#s84fHP"90q*:kt?a+)Vdpp+J^5$5;le'RW(\6:f,aG'O*r_q_J:ucL> %/GnmBs+g?'3Pf(V(%MlZ&5)-cSSi:9$R=>E($\=2'H_O/G\-AY?O'^rD^EYdg_0ltkapHTo%0B(j1fBQ %oO%TO[S6]q-HO.QaIiM/5QGB3:_$+b^`gI<-<"sB8g9P&l81t:=beSV%E[^WhHft]h4jR4Fb;s*7Cl'ajlaaV!>OHtV?,=7 %/l.hj)T'OB'!"Z)b4h=Iit=^*il`".o0fgMDmO0mj$[#k\&kM\W8VDtYc!5Bpe[fgQFWp7*D"X`T!*-P\<`j0JOEurMlgFLQC>P/ %PF\bDngiPad#Sfp`Gud7>pm2p&1B`O1iB#P,9SFdq/p/"S\]egD/ob0[.df#2? %EEP:"-![V$FaX,77J]A)K7nBoK:G:"ggBR'FaZg1DY$%Mo*guf\('YPnhB?M)]u[.`)p-qA':"VlIG(M_GnN)>Gro:h(j]\U)]&j %>GtAiC6:Hs=TrfNgefG@L]E^<2=`I**u,Xe1K"?u5YH4P)YoQs^ij/9D:1&^M[^4tXhFGMPC.]kb3!gJ61).]K7Lj_;61t38pNl! %>>N+`0_DIM%P$HaUTn3\P^aG$GN:6ATb.apR#5cPoKN#6\E4R=sN-9ulNmkEU"f@8T+P[omRBhF,%DR$n2Nf>](d&DKCW\W/?a %j\T9VFnIfL<$I\ff1SGK#g:URJng2P%^#X9=0r3aZ;;J`qZqol1Z+6_NXSEPjdW1Ni-)4GSpJ&,i;R[p,8p#,!il3C%A:C5d&uB@ %n_22=k\!"\Ko9Gl(Wg*S7MVuX.h@J"5NsKMlc?i_03RVGHoa/YqOf)"D_1at3%M*YNJVWrH8P6g(.J?S#Fr=U6&j_PJZ*?f8MQ6r %RpI0m9a;k@Z\q\6C#BjN,TX_a*#YVSn1PHK5a/I'jE"6<* %99KT:9:kTsnu[niOk8,^ROi1nPiEaE,_^6Q4'.C2nG`T9r1SVoGbNLhf.$7BVb#B`/2BpdKJ4;53t$>s9%po[QB %f+Ct^6Gj(DRkRBnoBEDdGNpY6U!J.7V?J4g0B]79O7?qM\AN`2i:q<4qVD-Ia %!X-0Gq.,t/i@=Cs+2<)Fe`EWpP:VYWn;VkJ9]^Hl_09,"@\#GX#nW=(Uj>8>0YkbY:/eH<$0!&qo_t7SC'5!kNaJ6;N4]Q3lb@.9 %:a5V;JuY]u[bZ*DgR*J(%_n2,K'=Ln7BoHUhm;^!L7qjXn)mfbBraVS$dg3Jkp:>QLt/R4*l"PP>2MB^fp_/+:JIQPlSOV_;X$PO %RGcA^-)>]GjK^4fA*ho`N68SlpJ3?T:G.;C]`.&nsAb1ruc[LfOMslcWrFVi2+,O6rX(a\7gqh %\sFppDmb[5Cjl. %Z@)kB6lJ>`qGQ=\"S/1TjSDG,ZXR@0\Ca+?$cjHH&K`ro3]bWKQ)@sDE,G>F-GWp8_$j'RE"H'RmrA.beiT$Wn70'Z-9`QtlIhS= %NG?omftB'ggDX$`5R:!\;safs>$GieI;YKP;g/#!;9[R=VFp!Uj_0=T<=`^:e.9=MSfIc7)aZMG0L4_tO_D>Fcm$,m>"V_^+M6fbfm8l.3G%8;@?FBJ$QZO8cW"Qrm@ %jo>_u2eK"4?/aldN68S`a:4_7=S,uF-F]tsDHGs.O$1WpSpm'q&**0[\^+`n:gS%ugJ1"rE4@Tf^A#]cm$I-WdCa`'@/o/O1FDdF %Uf[hQK%S*#Q]i/ZJV.+nQhIJ#R>ZeNE_^+[LfR7tT%_?5q,7-AGdbrU^50c)WGu!5\WJWfdm,Q1Mo?9@>V51B-ji&rEWTPqlGar8 %e:pE=Q%j,`p81e+19T\.ZP+:G'd]Usm:)H:X^%\)^XJ\4,%uF2KKjObL>"[[GE$$[\Ho_HEMR %fS4":CjU4A-Jshk?jVm!PP]B4G>8Dfgn&>Fe+^-F0uJcO)kQ0'R)'k2C9BLSr)3T/As50rY2>3=/Q90rNf.W(G\LU'JkQRPg"Sdp %$EqkZCd%6mH\]*LZJM,W-Tph;r&;a-8R^j93PJ'Ic!ce!4f3>E>$6J?mdX@pOk2th91M*6Uk->X@#7me"hT6T:hdR %7MM9mGC>J-f=>B3_;^qI;LqImo3VPt?(e.WB^g%6nA,*?g0fSc)ea03aXaA]eWX&H=qcs$>1qF-\.%*b+mi*V&jLZPBt`K[R6iVou:A^UMM9>E5eVf5'S#OJM+[FbrS?l9I.M^QG#[ENDqiAFU^"OZ&MPq2QG %Z=5Dp#:Q`?+%p!C/oq.;Y:/@16R%*rd6l:F;gaWKX@C2^YmaRKa0ZYQpOd>:u1DaS@3I>g$*J%Gk4\3td %?^8cL78iR_WbN)%P2Zhu8-!Y!085=\#[PO"C0j.:*u0C`Z^A;r%*R854&[mTSjBG77$-jh(t*)RY]E6+4"t>8V?fL!b!FndYnRbp %!gH=YN>\mN.R^Yu*R-91IL^EC30n$Q^@J;TISk_n06SKV>"0cTEPra&#E+UepV7Y26qhamTN1s*`MdUg8"L][^CjtRs %YT!m[*j*f0qXAK-bqWf'=Ho)^p2qOc8G$U'MTgATT#E6_;6UFJi8l\QkE7%o:=d4Pi=3Tp2E8f %!a6g.`/K\[HL*10XcuA!\RI'k"<6eq\Q5pCG81q,V-aN?f"8^L6VS0:G*JB=>]6^SHXGG4*JKVp6p3,GoYp^dfZUMu %L])<99:@2B,U:W#T5mW'O\`L`2X/dtP2;/o)u%69QZT\6YW:hMGn6XP\W4R4c_FB.&duT.Bl?V[8Us %50Le&h:+2o/&HCnM4hl:W_WWW&Rli&RlZ-g/e-N-US`BJVtl(C/KYa7.%hrn4sNW?3oT,_B85,+*ZCBSlRS\@Y]e8V%G$P"C(pBNc+rD5W5p:sF#3Y)?I&*PP-<%*"F4eP1)] %4b0P+k\KA7p+6V&hO#p7m4S_kaC%:7l^p1!Oj$ZjnqTMYA.!f94:#[i!K\n^\5]?e78Str;lNB3"uYJ%b,FW!.K(*"J,,:f_Yu)s %5QLe2V-S"ZFjF\__*NfR1cMWN16/%[T>9>'&\O %J1:MCf2^i6RdY!fm#_.(5PdoCj>V7*i;=6bI/&/CEj%BE395S_-V_ %7'1[cb0e6H1t.4$Q,rp7HZRos'S@2`[9?ALa3+B: %,"`.aZ;60PYK_!YD7k1pTgs')LDoufh`uTW&LPa[ju*IF>P\othChs2Os%u%!n9t&^8';Q*#/eL:uZ_1_`^cE3= %;K!nZm%/554$hZ[Ho0^^"&a\/OtRD@\-ph=8MlCL+@ip[S'3bQ,e?.oM2It?+qUaEhdc9'2hUSWgn[I![b@^'Y2"a*.jkpe(+X^d %gikDT-&KKRmu'gj`=D4lSU&WZ/c8=YW=/eNW%Qq&Ec`AmH!E3Bm35;"gU:+FOk=!a_7>cZ=PR8Fe[=HiQ,!@M>_;mN%5Ep+?2W37 %et^uQYEUt[%XFFdI92SFiI_#P-TF7X0,MBC%bk@=q9g[NTPQ=;NFV7>HO)OAbaHio$'e1n*Xpb-I*uB5t,G"4M=);dc-!?c!0!0NG# %$#>]UiKkUgI3IoFTdrh`31mHM#!o5gfBX9b[Y;2uZe6_fNG?1HYS4Jt)E'D.+FE4t0Ck"E'Wa4*_"4V+kV^i]\Y^QO-$OtPj]Qb' %-sF,)-oLM6-Y8O;4;M&!XkDae-*\fn*]+pCA]t(7jmN^g9sE#P]WK/$?Q\0i-o)[4W37+D3C1J, %W$s,(`!H48-BS?SIBHj]0I6GFWUqk>[0Wd9%FI3/-ijd>B%)'9#o9#"Bd+L;K:"uhl%4-B9>6]@mK%('X92P0MBXHLd3=Y!BY-pI %Rfj+*Q`46!@ZQF1B'!/Z/M9>0k2j]WB=Pmt?j0R*`N:/477SOJ1KLET3&9usDn*HI#fR'WF\T/p,=jj;2iIX$bN.J`L3KDg,[(>I %'c4]XhpG1/B$3\7Fp(,&coEPFHBQh!MB:/YQ% %CJ4%]*?A(?%79GMTo-AYT,^OT2_[\l47OoSPSqA=@`"qcK7G*eefln4*lZ:TA&a&\B0XYig %A;U1f/rOpXL#!"m8[1`e>QdrJs$29'K\a-d\i:hR3_W)&4iXIqS9XhCS4cRLGWWA.gos1pMpc%dniPU^mQ:\=_6u=f8]_o#lh5`h %YBM+KQOt"QZ_TH8Cm0433gg&\hMb0C/WRGbum\V!MM62oV3N1DM('KhQ3,I %J7_O]'=8&)h3S="_0mc'[A)YJPQF(4;g-h^0_n@7F=N!($At`"8g5aa7^2@KTM-"10!:aDM)1>rh/ %W>X[\g2A@Z,aCTP/<:Jjn:G'-I+u'HdS20LTXj6<-`:>f[*jI)Rijk]Br*!DBoa;C2-h)pJN5`rr;FuDnoJsHH3ZWMP+Kc>X9icVrGi>DDo5e7o-;s7*doYSSE:]2kJ)RACPOg& %I<(uV1HhbD[`]f=4!T985FRXJ[(8['(1Ue_^gN^s^,CAL%*4\9TYQ!B'"-E4[e6deK/8Q``Ke[\F*m"Bu@q_"B0)*A(6Zcp(;[p8=MD;8qB$V2.ZrA7UZ/IRE(AS\t9%FNRd:j$kQ;g'`kdZca%R-(Ds/g %kSM3i%2Q,5qio;3DG7%E_+tXW<]7J)I-"'Z2:'WebGLB;\PBuIF+5/?NL0jiQD[L!@G`hF.9ogc3]!%k\)j@FF%KIUmt %@,?pQEl[1E+R\rFCD+2h_W)13l?`2P;B8qZ%d1O(>ZJV-E6$?f]+X?@'fFiM6#b7ib'EI5[-Qi<"'9kl:>SXip4?[NLDo-#%)Qa$ %1ttZJeQ\69,`.E.Y3R!03(]rr?s\D %aQq9QV9KfOiq>p9\i&[4(Xs1o.Pb?J+tgV[*f;K#?kIpDEGK:#:3 %];7Pa8Jn1ug.EOIfUG=sP[60#[Q-AK8NQBlPcJ&`^/1;)Ee/.NXloL]c,#6L7M9Lb4V[F7q:+l-,5!_XjGo0u:aZZ\i[1ZjM0Rh0 %b*lq,51OE6mN.3mB4sCD2ms<-HhY>MDR&pb;@AS)+,Q?$R+!kIGMn0hT7d]0'mg5MHGP?!LuA\b:l\eM:XVI(MED)?C_Ad8'Y-`L %24OYH[L]1Kg<._qrOuH7o*tUlFj2Yr%#m5VQo5M1-3`'`O#jInBE7_D+;Gft%%)3LO\g7]8`.!/M7L=UOqGc9t04-(2 %`MG/OiXgQdZ8@NEBN`+_QaZ/835h^aUL\U&,];r1"RMbi.Il7-X*Ulj0f8[:)XZ4E_pt+fo;lPA[#q$I71kD835P@mN'@_uR2j^k %+G426"U.(\f$,R-$!2dSoM+S#fT?MgfQNKHE$f*UF76O':f$YbnPP-4&htqH.]#0?_@fJO8fIH1!8QXsp2c]'[=;P<%52*=hI688 %PiR&l;-=@jS'^:.5CqBSLc$Tb>I%e*PtM]/L(T??"qaU%(AT%,3(<+QT4M%M&N!Inm5'Nrlc&#jN6*Xa6)e$]]^9(K0haaA;p[R^ %'O@DaAM#_E_OSQEp'Vg]\ertW@9=lPNYFZGD!kLinXD[$\,>cr%KlZ+JNrWn(?!/Hh7WWMD)U#`Uh9QBR2'"%)^,C.'judO5PUG/;#//DbPH$(f#`U/M-kg&l2Pc>#s6"-jH-Y %j*_<,Uq<%s2Ra.="5+<>.V)pV5/`*r@P=P"g.6&IZgSO--3hh41i6R?TR0EYgl/HuF.#rG#.,'0o0gs%Wf*OoBtu,\,u'jbT6SSV %g31`('\E#hM6j_S?LAkD8/R7lNTPhT24_80i?DUtSMV:;`ZAWn@Q-sa[=MFL^LZBa6#j/>0Q!1oMTOd\;O&^Pl&9[$`7-\u9)j;U"'>Tft<=PV4?0pN6q %Zg@,d(>a%`P,nS%&,?8qYh#'ud>mV[;?M.2aB%^WiuQ4L,BU!_&u>'h/=T&GgZi,1OB$%EK8&U8=+=CQ"1If;=1$t1*I%Dko4q-n %eK@KM>G.ec\[beGWN-8Ce'5+h+.L8Vmub?N!2akGo1q$]J/StC"K[.q8Im8M,heK*FpRn,S9\o`)4OXQ %T)Jp&btaK?@022347)^4IIglRoL9dZ#8Q2U33+4hC&&[%b`$iNHT!qgZ?Xf@Y#J3-,JT9l?PjdZ,i\'PRdtAj$K)H>q'NWFh!N-s %XHi\2B'79Ql$O6Bk2"_)q?KbRjNm2*7rWVVDhklLnjWsb"H"Ybn=XDQQT*BX`\e;9;p6@E,(j5/$lV\"Mo.Y7dR %b$&TTh.fop6s29hiLq=k%k[`QLri1)A).T@J*H=Dj-;F9M8Uo=7Vus-1g]u'9c$a/Jlb+.b2sNDcc6GNInA$`0&o#&@&Y5Xlm:mc %2hQ`=jJ^aDY#HWr,?5F%LD/EH(3(DIo"UGlT/'&f\?FJ[T%[-)?$FV0HA%Q5XSutbLFTQUg+P0'/%JrV6X[LAMoCX@KuC(d4u[&moLF#03`plko38F0hLQ=:UWsM;GmV._@W">?_*EI@210YcCo,(%pc"9JmD]3uDN&4T9UbR6Q5T[-\iO^!!R$j\c%Y"I%&jn+t3upg_m#d@PAc %bKG@&GJfSm0mVH=$XcP\]s,G9oq%@a9b:I8P/3[-=Fm+1OEs+?4f.*qEf77#X!&GhT'8tl0^\b]QY!:((R3*4:mJunC',NaF-]4; %C0%'X@9:(AIrZ"g.qgBN;=j2J,#O%0\3DO.=1eBH?6-"Mntfd&OR9S#dj%D>?7L=nq4Qho[HXD0$(>>)FL` %a8H//*n/6aY3mZo9r_(/.K^r(^.IjQE.S_BX1"PaJ(^XS$,=-3L:K?I`,iO:41B]j,l>ctCdcNc5BIF3duSJ@Up%/$[%q%s0P/9W %mGU[MT)#*l<%EBM %'[2>_rX>Qfl;U)p]1?jJV7^$jJ>qk"[p))#n3o6Ofu3KGlk+i<$Y`iP %Cf8o_^8HW88Vr8-<#jJQP'jG6+(r0Y='KT)\7'hs[GWb:!fpfnVA@NqBK$u0Xb[>qgmX:]9]:lr"odMO[>+9!^]:L]W2p!b]fS]DA %V5DghTPG`SelV$4i#6_'NpDiPc-32,]E@SHHruYpA^J`'W2o!,5Qqr)h]$buKHKhSlEHp5/]"aR+aNT70(8alhr"3>N6AFSs( %`obOEHR#O_ohM[,beck\?c,*HUh*C^e.8#a+FkGc[+p%PAYh38;F2@g@e0FM\M&b! %8PV(k1UBjb_5tDtHEegWI5;8KZ^Cgl5QE/2]tGn!Jn8#Yn4NEXI^S"DP[]"lH(U:Il\fmK\q#*8/N;M2qmj2SA0u@,%q*HR_;6Gs %Rf(1W?.#6a]O1C+;Alja_<86V@TM1KegQD`mj7H&rR^I8RqYS.d#HP*mZ9+apn<0h3q+r29H<,1iSYa=]p_0c]??f\ObrS5f1=%P %%ln2'^N:92[ZCL=oVWV#TNp'Zh9Z5d\i7bCE.D;A.0gM8(MD5Y(OID;(WF:/SmKRHHJ;2kXdKOQ&2>"%1Nl$!,RWAOd_npJp#6N)W>[k;BVNatqbe)I9cmAhdnHQ&I=j-/&P-6>9h$22&h8#aI0?jhPKbj9mgf;L3o7nqA=#GIN*E><5>Le(A@%MFhT8_=4o'< %&hYRXYq4hRguHF$80FZR.(`BD)mUVg`h<-SFJc9C.\-,^ItY6ro=*(Nnm#4E2-Bm.BE1hC4ln,q#$?7HmmN^NAa2\emV?j$p([1,=U?rJ7I8nA's)D"HJB]:-1;c1!CJcoA(gh %*?9,s;YF&I-(Jr-jcbV2.lN"ik9Pd,TecV&A_ %--nTg.\6r?A8k)?l=<=Xndtlro,6&be4dOO3]ESqIu*%P4\R0/Lis`+\S1Ktj#a5sraNd:X)o#P %chqp355:B6<1CWr[j5ekiSf2/kHIj3+Du;@m:2KOm'(7C>";p(LG?-e,tSt^f@&DT0%^G %67LI)ca)+-JLNZ;]?V<25ulACNX"<5)LKeZr(SNcRuV!LVT\U#5[dNM)lr54-N/VY:?Fp)gb#651"%4kAoI16%:b'05P1+Hh+;Y< %ini9V*k*qL$akb5>u`[n9;08e67m@5pJ)X(*^f,`16:b.(<7lJC:/=EU-'(f[K!H/V+OceU7Y;PY_W"94mA9j1,V1C;g:L's/(;7 %Z2?L^RXJ_Em*h-FBudoXhO+9'`#K5*8H<)&X5"qF0)[Af3&6D>or?8iPoafHe&a9!QmCRp]*51/=nZR]DV,\c_UX@\dS't1L;e7, %Ohs/DhIi2@cK4KS+-cIWTirZeG\(l,gojjR*:5EkL4&t.QFKt[9MW>[gCMHEu %.<[4a[*#h(\s`[CIE-Ia?4g/Bij4B#N8GUmU3g.@?A:'ZFNh[@S_/ouT7Y00/2eo8YfSAtDtRcYX>WWY^#>MN/m=>m0p/Y2eC="B>H@ra:Pao]88>jG;=dY %LGs$BWgnupOmI7EX_'BF%+`72gcOnfU$]q*fMF$mgX3Y%Bk47/N$i=5'(mKVgTQgT:gs;r$`N"E,UIQDXgk.n[p)IlI5hLI[YR*k %'GYsK5uZ&kmK1hj%W&7.rP8a8#u5XNITHTnA@o%3SQVaLE9E1NIT.G,5L'$ra'O8+SfiUbtFa5 %?:>@TJE)uhhQ*aj>Pho3?<`^j.[j?^RXD(77e@X_`IZ%VV](q;;2.L\D[f8/GRWpACTKhr% %QV?bm&fs"&F%;]TRE=\'<#jl'Oj$Dh3F7H-FR=PNd-5]GHr#f-aQ"8ErBj$EaPd/.'*lE)Q4H/o)8"RRen)k2A+JL0cb5-`M=K?/ %Q2"BT;,4^($4Ho-%b]T@:Q4'*?r"6Y%h[hCl]LOCJ1$(J*BSjnJW=+hgWYSF>1taU*1GqWhK40IgM-ca3OLk:)ZMorPD4)dMDj3! %-9)X[`=M>D+Ga,GQSdh)3<+;_fh,'I)72'3Z$/`*QO_@H/9LLG?-dk[po2]iUbSH\.U'O\I`i1hl-!I@2#4H.MYQt_73tWP+LUPuY"EQJZhY(%g^ZW-%Xs/ARg)Rr+?"#+4oM`f9O"S:abP5>$lB2at %\&c`pEoBIL;mb$N]ZWPf,Dc?OT/mb$_8n;u#*#aR5,$&Vim[hnI4V9PYdkQ/H[j`(rqB-Hs*1c,Nq:tQs4@;I?[hqJO$EZrs82il %5N5f4ci;Pha0!ehQlC.L]MnoheMMHpIk&[2&&*I9QYq]EnL`PVY%G0]#b%"r@9P-M=M>S-'mNQ'R$W8R]K'$RVnSNF?s_k$I>h5p %[?DuMNraI1o&?!2G/Hha=11>rD14>'4(HK.rN.?hTTQYgdp,#Pg)o;W]"\$MJgpH2R/>T15ZCZJ@/>`U'*6,6\It.$9d52R3u6dq %L;V,A"`B2pT1_qE^-DJmc..^4U&2lV:EhK+>?FM"b"uY>l^6XO&hY%Bp,_d:']QVMK7$lgKB`.)OY:Z^]%'l1P_$dlBXCfQGppiD2-a.%5j:>s4hZo7)X##c!CiT7:GmK"]GU6rtk#K-C&B_HY-^4`B.8U)%:]FZ_i<=q63 %-FmL%q]1oKVJ)1lOdnF2I#=T&bjLHN4B%$,PjkijZ9Z%U %X2'f&CN;mnaRhIq;V:]TPEUbEhq\Q]oeXNjVR6gQW6`hka-Ob*P.?dZ#r4_a6ToUF)!Th77"0 %;$D&!Jo.dE(s9K-=qQ8JHn]g0RCA&='f9-1t*C.J'CTiYC.Oq7YAp`a<+2'hgk5,Z_bfFJ,t+.5jB]l%lMIOK`C %i3Q^FR3M&fQu^"\jujm&MhM^[,`>5fJV'c8+W`1sbp^u$V20t?**&2q@A4lJX;UX\:s=Rjm9"5b:na:OYJ;bbVj4'QD-&cO7s?7K %Gqt&l[^XNJ+NpFE$UEk0@$L;-_mQ$s7;ReKuo!FP;/>n,.!4'ljnXp'XEI;\m,>I/9$,K!-^Il %OS_3H^]*@Ll\%'"/d$MFN#dG,HGAH5EmR#7(B&K6KeKJ.^':k[g[_'nEY!&QhfC@2Oe0H %;16j0-&Qq(/Lr%$\P,+V]*/Ys%H16iH>da0>nTSfB/'+grH`8n?PXB[l=PB`0OR\"?'[\sn`Y;bcUf8_nuJP8KEc&oWIrT)/p@oa %BDcphnSB'<\[JS9XB>>9JWB[_GRHE0[rXZ-CJP^gWu"/,-+]f.fA@QsVSgl;8_OtKAc$';VM@tR*%#IRMiaSc %"i('!0WSZd@nkH?![EKZO:nKr'eSoLr>)%l(r'uFhd'Jtg:-_]5q]0U%6K59q=WCJZ;NU&i8D?LE9>otZ'4jm9e#==`D&5,a/J79 %1.CZVTK1?D=^T5C`"T>Y4+^tTK'$981b_\KOt>&t\$uR-K8(5%-o\$!kNqd/7`eR;mH?DPp&P2FAp$@Th2pWgF6ubN!ek\OInT9\ %"N;:>'6o7lCsM(V8Kr$neRf]V7Sa`iIL'Y`kpLW^gmppHDK;K*e/mN)IGg*BPbc(mL-Yb4),:.'J^Y!ODRq)@i/'MKeFj9sa.E^& %DoZ/Tb?FgW.kT6GFch_]E(upM;o:<+Re_KR2=207TrO?W?^(@*1OSkAK5J)4nI.+Tp$FQBDGp:;N8VOAsu$();:T8-`8:)VJqH7T3mlgm/gVpjmFd`"q$t %NV\]#jlNR\aZ@:hUD=St+.n*U>OL:;KWP5P9<(`Ee]\DZ\VW;Om"+Z2g:o.sL&J5ZCWQc_Z;U2_6fIME %8[Oa\5]lQbTirYp((EV"4oM-3M.&:3`V*aT+gGaWftAnp?rY^+r9]iI.`11Z#L@)[M7N47Jrot!E2LWR'W@%afM2Z4(XWQnSJW(> %,(ck$-UaC0iSbX..uB2WbXN1dY.KA$.#ZL+_,^",8[FVBu-FP50ng]KcA+-CW14i!'pi^["^Adh%_o=fE&g!Gea(@h8Mp6P8*u^lTU5HL( %"mu;>o0(3DZL'2?4A*=XBq,s?J..e@/n9C1H6N-(0McLuO)5J-YY?@\).1K@6n2j\P%;2=VH&tpAL.qPja%?+qUuW?FP=^QGo\sP %HYEtnQPShp@Bs!)5QW9[]Eirt&Y,l@8S@CF&WPU'J7da?077iJp&-N0bskh3?\*J?gF5OKNP=]=/($ %'F.+t*#[6>kU^N?##pqmG1sLq@`;Cof@3291f&GR?rgjkO7p$gDg`mLJ5&Mi#h$1EJm7nC]]%VWRB@?GR-YR3`EQSTHVaj#Pm-17 %6q%)aM/;X$G;tc#;)",:eA2fB,X@(Qf%om'Cp.%4mjU^G_4gk$puh"jl8q'`:ncjZ$NbQ.E0S*tk[umH^:]I@5do8J%b&uW:_T1" %2hVsXG/U3bpT(iqm1sq5Ya=dN9?qKZ.f,)T"VScnrW2O %-:Gf>&/:[66%cAjYmXgRo3"nsp_nm.nf8IeNVN'nN)+>k:J]l(A,5@+eTu4JRo&7?X+HrO'f'6Y5qJ(t$#eL[eW0Lb@"Uf+Ia$__ %j,4U#O,DN/rQS^t?gMg<=E%eWAFS'8dkAa.:Q:Huln$FNTKD>]/@]_;4')SM;C-AS:/C";"OS*U6)QrS%/f3hHcgM:N)H,0[0jaM %rVO^=S&5Srcu?/A2h7nO#TMO;+%d\"C5;@k5FlP=8\%Spr$^F3^-?fFd0#t4E %EI#e&"q?^LR!YMHg0kKVCG!X:h*(/BSehDTG"peh0_5Kld%6.C'4p;Y!%aZ- %@a?;aR=8'jK[gU[0-VAB%D'Wtr+@@XIMN`gEK+*t*UZ6XXil>ppf&#>C/[\#SiL+C_t*\&+an1K>5@go$)ETfI%8"6!/YF/1QWo] %_.ARoU=##\rs0qZl(MMb0?8[`]Q@Ml.=+(l@g*>/LqjX9Hd]rh:*[9((?1.1R7F.Yd+qq^&YaJFi%[-UbK9Z9?Tg0"V5t].5!/p+ %Ij;]C(Ts.g!hrb?It;2K<&7k:kKXPZQf(0W'-qO!2INbNMh[^0.bKon2o3i#'@<=a]p`7+Jl)Fs!R]4gA7_a:gW3( %:3[/TlpZ9='F_3F&:uoj0:RY=gjH'E'%*S==m>A28K\VaZIu62JoG%7)3!tS"M7F#mO2;,:O%S&H#uT=-SZ$+Sn\Cc)Ndnb*81+dSB;[@VTA0Erq* %D=RKIa#/-p>N.n/K:Y`.3bNC5=h:G]+%``V^3\N3YOZ^C:0TfM=.2r`I\2Thfs#10ZkM?ARQ,)#pdUOe>&F@G?NK_jRJ=Suf__@7 %,50'lh!S)S0^STN+R"91WtlR]Q=KG/MkJ^)ptscj_'$H+U1Z4Z)$j5b%*82tq=Bg*$O?pf;*d@Ibs%.]jJR?B&G?+%3I&"<>l>nW %1O\IbpPlD8G+b'X1I>*/!DTq:_R`n2l)"i]@4bV(X13VO`bb"2WZ+c"o(%7rl$hl:\HYC.qSc^k&e:5\0@8K(GEXi_DR/Vj.X1gC %1+TfCFb;n:NmCb\od@kePLEKSJNp:S"6lO\bn0ra3:!LcBeE:6ll@5g-' %agMZr.X?CrP9-b@PfE,kKY_@%B)%JV%E.qOTgj8*52_1lGkWcciI8l?' %REXsu)d%;1Dn+P&/KDm %(cDBc=mX8m2H8%h8S:E%0i)8/P_;Gl3AL$?g"l:"KeA-cqJrT"X&6t':&,4V+>acKamQgK+8<4([d*1FO14@[?4R*OJNB[%-"K(n7rVM`ZDN0=@B#R#c6uO8X2P %<=TEn^^_X9^[PMG_Ra/&%*b?Dp#@JbUkj %5Wl4W?Z>N#DuR#1`t!a#,4c&.0</:uSIdGFYE9BlQrR9];g_]-)]--#e%c,Yl4 %V;i+,`S*JRHJTZ!%',ihqq.;&RQg/HH^Zr,aI(EVS9C9>1CSL\=a+?'GS8NT.`Id)s3WU0o5OpHf;_GSo@e/?.MSpLU;44RikggI %j>?FV/Op(]H<&>eT>dXU3S*aM,Mg0`$"4_CrI6f=h':t!DW^J+Z!i7>b&*8nrWlJ57mFIB[5#'(CGd!E>k/D9nFZjM1t_CEJ2iG@ %Q195:PU+GQs(5E+jk""?Hs6TlR3lI,C._$^PE3MplBTGO@oWbO;V+6oT,V6`,ArmP\Ub<]qkdr2pB8;[(C0ltI.SQi^4H"^XKlnq+8JIhWUG#8!SJ+BTYVV@`]Vd=7[A8?]R7&1n[Z"%KD#Ir_$\G77ZNo4[DC`g1b%Tr_m6j6(k76NO9S&ZU&WO+c3^b %[E<,fA>"YGPHJ0@W$R>P4Ku*k&TjIKaQ&>HFImAtCoZlOOYHcinB<5`!dLRsYEKAJlNSLo*ua&lni5GmJ6t'ICM19:RRnI+#((f96dD5U!!A$np?:[]GL>.VL$C7.!_bm!^uc#:2@rAm'D6pB/&kkS8tJCTk'MLEE<7(;&/R+kk!'mSWMq62j)"N:MHIQJbaopQ`aYL9Tk<=tO; %HOMS;@"SRB[&<`,AkonWqk#1c,?HX33(qt%%/QmA9>(7gjO]FY\;3OrGMUrrT7ccR3"cs?-_JDNUVY++n&#@!2,b1s_5\:hh$VGV %eQ`qiR'T2Koa/PT*af;6Hke>cOr>nB`#"@BM/&TjXH4O`TaRC^pEBp(P;\=)me&X7pJHDX5\b8rRqC]o^X&JM4^aas[i)(r(cE/c %+s:I.$1<\$GVMA1R2a("N`iI4;OdGJVq^('2Yj;YA>XZh&O_;;&G&,.XP2Ul,.ug#0@DBu^[FW`g!KmlL?8A?9aX$q1#o(r@ma?d %m:[H_B8-cc:[Q+I'*j5R,Tqq][^:=%S%WO7b:O29e1r#[5b!4KMdG5=s#RTf8U[krQE!S,aQ%YKZq,FhDKWKS4g/^lR7-/7mBo(,87@Ngf\O7%d5#rK,`mnojT^%Rd\Se:+ooXgh]?:Nb>;?YF=OU6D6%B;QX<64')n>Ks@4j:YD6h+ZGA:s>2K9$WsUk$ItB$)isiX;1BWRUt$2ctH*LPWGO/osSe\b"U02>iN="!SE#8fQ#j.![AaJr%!:Ijs^X8NaRH6,Co[i)0o=Et&: %MZk)M3388UKdaP'ET#=RG-alH=lC7BA19FI*8t0:4eUJq$iF)KT`C`kpB6]fm%+LKdpIck?8ZKDqql\N^0ELo(:J5q!6Wh^UT.pb %;71Q40Ru(@.,JC.2(glgC=H9snKX4@Np\d!4BnQEnm4=nB*F %`uoQ(Q"&qEYEGr)d*t."Fg?&M1kSA+DE=or0>N9DGRSoD %'Qgb:d;>!FFTD9`17/72nVSa$d6"mW&,VX&h3S/ge7b,^*]oO$V]NY&jK(bBbERe2o$/9I%8d+T%">`dXm&BmXE?JFSaKR]]4MZD %eHo2d$4TIGEp_XS.mMAGaYNY@E7=+ae'ceXk@oG.8m(2/J&HcU^Vfm^eAZt#j+d;TTag:2A'h]CQ75* %H\*Sp-h4B3*scdHbTEH06"0ft7k/ODH)_H\([cEia0di/mb0M]94OH3"$lP1aPSXc#p2aa!9^f_?g!JCY'&)107Qs)A%*HQLgN#\ %DXZ$CP%EL,,5:gH>l%cnU"hibh9sC[oGNHdi3;s.bA2a>ZmXCj)^uE6#;2?$016qG,dH76Q]n/u>:+?=%oGc)1*OAC+Sf1^S%/mr %;r\U?D*Hc>hCckCR$576!U]%gq\A`d&7,@CjY[VgharqJB9_"+Sp927LC,ZN*#L!TAm2,4*FfY2GW03fb3,% %'*rF*R'4Pi/8$=oT<^4jh)SBU*Ae7:REX9fWIkC,W0TEGf$);8JPd-OlJl\V$3llp:gFiBB\LV@*B;da+`V60^1sE&G+"&pN'TSJ %P*T@PES&m6I_0q\&o"c!,Z/"ok?Z6$?QOkJPpOb1U.R20c@$%>>q,LeVe%^2rIFe!r>esm@V7O0fnI27OoJ&CF#4b&QXPO1I60GJ %e*K;)XI,ks8c=O:q4XHC;Bg>o,ih.DY[VA7S]%]'Op6NKD@&nGT8R9S/6<:)-!K=BSHRep)S0*W%CAtR\)?s*XuYqZqU3(eVH(nIJK^t4M^b#9f-E]C!JY.`-IrsP^^k$n5G$Jl!ePp`Z7/Cd;nnUJ_.1Hm %2;dnq>/m4>QW`\*8Y*?%(4q:[Ho8N9A9,A^T^T0:/\-G=blmn.Cs2kXEAcAocUkh2XEe)\Y!JpY)W'[`@Bl*6gHZGlLge;mH_BXs %PLa2,OY_j92i1CW&Meu4$=F-r&O!p!0;G\j$Op\aA"U-i_V#jR**G7YGt)K0a@0h#?/on%'suhiMinkK %Y4%i):D[N-jD081fILGb:]eZaiWm#3O*aKjK0PEM:`Qj9c7K%YYqmaP&IibcFTSMJM$#;'LYG4o#k!$O.E!4bHZQXAbKB)H$3Pf5 %e5i0XZua#@OG)_D\9W,O@jB1pBj`r*3`=XSg[>6'4bGJT1`KK#(U"4dpr8%eAaAID;?*q^^9<.m4sIkF(RH'1mi>K %e.bGee>$RDhgWE?r.b1BJNBW?RSC4dS\MgD#]ANMFNPJA&u.(r4#*eBb]_Rs_c+nE2'8T2op&1@<\=0P]16ucp60YWMr'M%JuidD %E9na.`nm4^&iM:$H(QTDLo6uZGANJ&hkH#CH9R3V5&-dXB;0:o9NDng8Lg7Pctt#Ri+RXWN5?G< %V_+lq+3-"_G+hC*i,lRF7'V+DC-I0re77"ql5;^]@)="'Vs:@%TlioT.NDHMgf0M2*\>J*ebnr)"/o-6?9)/[d209qMTl`78\oP] %cFrNsWOit_a2U6i'1%1?C:]\A8-\H4/p_XIJPe%j_,,pFOho9O48(RdW#E"sqZ@i,lOj;4iGK/rH>3CV=K %:LJK]B?;/B@N(MMUU]bXI2WC"OTWt4lfEs'rZhZ@G$9T-mMDQKpo<#J1?k9`E+VV(E!?!%?>aBgU+0.h>\pcU7((YMNb*N]lN3@"i?b=S@%qJC[\^QC/:ZX_CI0NS#qt8TB+.n+P"5O$=5mp>PhU<,TC[O/I17-on[SgDIO7k=Y %Npn%'+5>R^kT2WnaVXot[dWF6&mgn3d$/Ejj_JG+oF/F##;*P);L>i`=)*0$^k^?MpqHUdh-/j9VJ7*22$0*^;gfBi&G5*T$14q: %cK`_nb'l>D3Q3f3`GXUXl!qanhET7on0dsK2=Hf^(Q4k#WS(u^T[[FD6Uj@^KH[Y-/f&jCNENWf02O0q26%U?][Z]b8j\06A!N2F %g\hAiEg9_QB:sVhiT`#YD-Y13[3cj"]Vj8hbssalXe!_uhH,mHE.#)PYH'lrnY),K<$ersMlH"gA`FBnp=hq'YN%gQJJqaiG>?+0 %T'1@>Nk+J:;cjN-E8P!hPA/-[canD))5e1\\)%"kA"QEG5qjrOnhok66:3F*V9Z&<6``qh37VLXPH#Skj$:o4WENZ %<\hfdTpGH,ENBjJUWBm6<2$C^0GqD1io/(.A`)MAF"J`fr$[ZGT'5?28Fe$G"q9T`5skVp-pQFU9_Z^2+e7[:2>PW'Q11fu=UnoT %ofk+sG*6R;4_6Lgf,b>:(\fKtq(G0$7JpCY53!=#k!FH4IqmP9I/n-FbE.]ejhNDBI#S*iN3g&(*^2pjXut-+q<-2T(8^jAS@Po5 %"2jHZDMC?a4r2Bq`%fKeoc#Lud9Z+K*Q8;5UT^e4TTRPS#+]As!=-chEO.Cd1HsM'fpr;q;XGHNtiD9Ch$Jo,M"9d^-9"05gB6BaI]&4bl %jT^K%_3BNR/>4cmK9G!:,oQlTqZ2cd7uuSU08s29$6-f*LS@WkRK!eW%KGk85?R?Q:T_#:4A(?T+SDsr0AZ7N%PcK]*e1D1FuOX\ %5tbY\!6(CYjA=Yo1_b04]Q\7k&G2h$6+G:Zg8))mHL0&^eerFR?i7s]i'rMPQIil!ckTu1a@B5H;$=.[q<;*sjHIU;YiYJVINAOHmQ0R+VCNT_keY`/ %5:gM[2^W2Tg\l24\qMLu:&b>)0qF3B+,9F%-G0p0K/PuQ+@q1lQIc[R=jJIj-KjEYrZI(#mg(On:@5bTo#^,?rW(k%r_TG4'>D5P %DoKhP+^BLYXLO1[U!I5j-P_+ZHn/f.-Yd5>NIqgrV,ILs[Ib$tR?at52=SNAp>Pmi`N86#b7j6FSUL?fC+4t#cKiuKeENEP1]&G;i*>&).OYqp(/7W@59Rd7:.b,!J;I;e=&eCOd`Q_mWa>n&L*R]M-jsMT&5OJfh*<5!YdH>`[d6HV9T"/2uhNOVl'd*&; %SR@X8-^oI9S?!iiIZsXk`d.MKB2OSJmO@>ENI:po\a0,DaP+Q+&UBGO]Obi,Hqg!WrJ/]K!?9#ZQ`jn5pf=H0;c!+fM167+i?UDd %Pd3b1Di91PO,dOFEp5m]X?$t%hq("S1mF&)ZU6[Y7k.:d]rLR3TY*^tF-#T0>2ut.CYZ@o%j@hff=cS\SmZ!1.J(b,2KqnYqFQNf %P@)&:J*&.j#*tGRZid^j>tb'nfCd*4;7M*'olK,)@.k/gTBHG..CSWbE2!.E/ds+SE8MZD0j#>Y4W9Xt#%nr:J*`bL1Bo %?4=&5Ri1"l7PPDpIAD2dq/T%b;8/&R5(^Cnkh&s(js/jlHV/i*-NY,h6_a_+Qg)68JEQ^72HOmZ4`Z\;c8.a4h&6<',T_8i&K?5( %PZcr#:nriQRl":.d75T=/uQ<3K/K)WCOESJo/uH1Z\lMkJ>0T#<,in#IO!a>fE(jcViVQCa#3bQMt3N.<:"sl]laQ%Z>4`BjH*gK %=Li%@:-d#2Ge5rPkDa9d-3?&YQQ\;^@p>P\mTRV*q3>RTO'%5e-i(^VElNMN,Js*A'Va$j3*5<&XU$RXj8&T/o"HP;;#N/5A&de)WMFa$-54%*1KQnBNeD#hJ6a %K>P`7=YEU`5G2NG/PEFd-\@hsZrsG]6PQrPi=@egRVD)Di"achC5ZK,R,&of&B5fnPquBA5u)@a]h,@LJuIAe)4%8->7;[`4QN@e %k#XO4bPNo8C><&p4#h59U%ZP%6`4l/ILn7u&VRP1K2b"Q&V^,h %$Z%B(.g[PLf^dGQ0puj)X0Uh'bA)uH5*igG* %.iu[*O(C5`K/J&ign?p;(qh:o)^a0M+OBPPg[2_JE2d)'f^2R=LM/7UP2=)D %./S;n!<:+`[!k0YXjRg:I8lc*Sph-u5>V#2ldYY-9F@]EW]D:8'WTG$W-P2#A,[^.aA3`[Nnb/EdnP%rg2%TNeGSe[IVSPsI+5F$ %:Oh"6T>Ai38oP6FRBIT^*U:FD1q,F1>q.45hk&E;MaO]Y"&,=Ljce"!D,Xuj\D)<1A_=KW=orU]KN0MroF-&".E#3Y[e*'I-Cd#m %i$S=N^2G3@oLE^D^>LTXl2IpHJ3TuKZb%Jo1u7XH\t+"R>Z@C[KQYN.KA9YL&9Q.8f,*-eht(MJl3!#[PjsYS1e\/.kXs#+N'Gh: %5FC*P]1A;$m*'3.'6mp+$@Y075=&\BO+rD)&qcS(&B%6'+Hi["oOIDRLY091=R!?n`JnYX-DB;J3=3&5]@4oqH6<&e5KP`/JX/4' %/K?l5'reIcpSc5mRJrFr8(kh4@*(euDT>]-efV7/`'%T'*HG4j:Z2m0EHoVZo5]V\da9/tNt@,:N%7PI>]cG%1%_RA44'=Tm54Y& %P!hTT'[G6[bZ.F)Kq+I4*+It?[T;YV[DGABbHNWKW?=`T2$_d64Q&DBJI@\T[GeX7HR;Y("*E:F%3IO#ID2Ggmgl[2h;V;5XVr5/ %`%U/(Z+5Pu5%mUHo0bQX6-GkS7Kgh2%Q[,L:k%8r0uumX=3p/UoV;^]H9WHNs$5u,IO&C47%#?ms*ZUc8bV9g`%CcF*:ZMoBF+^J %A(G,U46k+fY/QF#Uf.3>gf;\)G1Arh=%d`7OYk!XNW@Nf.?0n`fsqjh@&"2F&,6'3Z+Cl'YIqr&XL<_ToId[^*_ij5_s?M6K3Dmt %V]4o$;#oArM#A<`'=([`P-AhFMF?RlZ,-BY)`b*#g,0s1`I'HLdcRjr'AsSegfU8#hjZSVC5VpirnlW %i#hm7Alis]K`(Tc&;dOohS!K`$=NicGG6X\jLE.>];LqEQElR6G?m6j5)IWMRX.!:f('aNWF&k$X$oiO)N\!(pEZK.fX@l,b2$TO %.'>T(q.[N`RuB(7%OXbCZXj7UD,JMlAoOQNln?uVOshM`F,Cfhf$!V)fDC+fd9Uq+UajPF;Do5qWR$tr9+Wq;A9dj_r($uB6K4L>@mVTBnpL_i$RuT %I(SGg"n%*eU%rqg2t-Wl'q9PW`V5GJiGQ_2QKc`m^t$cDc(s!jgn\$#OUghO)NQl@^<"rP/;oJP`=3iFAN`p_(6h0C9Yn?o5@-2k %Y(lhZdfNuahue_`3YH&0GFS;ornLWtGer319*?\',B@Q1`9Cg:34+Sc@/t\!(V?\9>h/=s^#!`VD!cEsrMVMWD58/F>MLY!gObgc %/cY=.O//[#\1L*Y5Jt!LLZTXo"sd0M'uT]iN[I[I\.Ob_K2am;/W!_#C'A`WogK.0>)qhJ0Ir.&pQ',A71c %9(;lDC[<[2SnO;^lKbl88Su$&Y<1J?,dHt.hUQIHrNiub'aYp7[b(O(kIf@#>Z#lI96O,PAl/DcgnJg_T([86PK3=S^^<^=*P1iu %L=Vqor;oja;E2kLdF)9Q&D@,eT,/(,[S5odP-\fGRuej_Q`31B5/$qJY=5k5YYUbXgJT0As1e`bVM:&[*87i/t\D]a=]4&AgaN[=O%G@uBE@CTX5YDB+mPZZLKpLm>mRWhf %SShq!3:'1u?K\7>?>@_5Un4<0#.Ld8uIq+UUF+YA)G[A5lddF);TV]%b&02U/ %KB*ZGDj#Bms7mZ&>ZGAAqY[dq5paVL:Rs("`2H^]HZA.E,%/cW/"QIrVVYkO6XZb_kU,G%,G7r2^/"adt\ZBUBG-F%&A/BeXDjEEphIjZZdYFb% %klg"?_sXU3@`,LFe7Z@=1KG\+fBYKT+F3]-RT;GG@90h9NPelGHaK+2FDkf6#P;^/.% %TcB>$nV8@'a:YI&ILu"Mfii(s19Z"6]PM./M#Lg=[^q[&\PodhQ:s27bX2[kNBNUID+:)LCnP?W+O6No7$[JaTBQ.FJZ>7gD,cb7tBB&qfnNWHPN<&>+)P?\b+2QMBhU[PZGP %c"9nX\N*,e01:20AbmHr^)_]p@TURR_d6m'Q/`,rH`F[c&IU2>SA*?NjB!S/aV(`?&XRo-OgPGHnW,fA:L9qVPUrK;mA"?(Zp%,F %,`.cp8k8g#L\/s61&aER?+^mM;$r'3+bQ82kG@0tR?#aF#4YTj-lhs-ZC'm<7h?;Y")\Z!0;$mcLmZ\9mLjgac@Ma2u?)=^R>S(>>A1C;S@AZP/@T5M2a,VQTT.p9!.[V"kA$PN\g2Q%g,U %:^<)4H\G#u,-0^'I&&FYANN*&B,D>^k7[=EUtCDYY7DoD.luB9BFFaHY2FWR(qW4K2jI>p"VL/uDkma2n*.uP(;ZV'1%n#9 %"Q$t'EEhnVcBH^HH6N:^g_C4^0ZAMYqVGl%8Kr=3#l?TO0dQ&_\ZY:5TD:N;&jG[bCZdlRYY*SBXh;1aE5*&F<,?Jd#7UDqaPI5= %`+(<s/'ZtN%hQ<=2&4-'AtsRS:JD*g+%,rlX^E^qYEmrBkru?u3TD<2=:`-Xl,cBmdAp'I]`Q_d'o:#H\e+=k%:@s+3;qJ^Jb+P %_,F^WYP\*nT^qErZKi"r-L&dJ)ffXtA:%\Z^0!Mf]NC%7iP9k&I!jMA!$=-L_odcu3&]uq]9""bd/N_E;+J@`%g>_qneZ$de1Bfg %(Bp?6aV$NN1T=:8Ip_;-/enY?fnXNm9k.Q^!F:sO)$BbWn&J`mAe8l)'eH:TGoV^d91?$#q#_G<>dhf4>6^U8.3jH;\;C[Z`)f\N %F`pbg/Gg=$[T!^P@]1F.ed1^,]S:[^bAGm=-Z8MbQ13e4hPISiXuAVhIriP'Dkb@A7_\jL^GtG3i;='eNE<8@pB&2GDYe %mA!_2]E]_m",sb&/U@Y?'tN+E\mWhJZS:&pFfXNBb+3p\FhT$);jEf^e1Tc'09kbRr;9u%)t4BF=f>%A"?-Aq;R.!dJE[Bm!.tWZ %o;JHJm-VdM(Ag@F_d>FB`4[*$5'_PJ,g62/DVaPhgRp!GF`p92ijspT8nmH[Sq<+E0&a$f,Fdc%6]RIp:6M6&c8C:-@kI;7AUE9A %Wl.[4NmR9T7XU]r*h@qkM_66Ln`X*fD/\ocHlYRh>Q]RBb#+VT0jBA-5s;#&ld\&,HQ,;Pn7]dN6]9?+H;Ig`(Gg"g&?+Whlb+<0 %cZh/rHWQ/P]0@'$s@Kaab4iR9r-[9[?J\PsO]S+Sa(s5(De_EXHEA"R>-p %([b$ddh:qj-tDu&8W^c?5<)TtJrrU"Wd[1s-AZ&8l[9Pt5DY'c5@,9n]J&.:=e7a-f^dl(1A$$=Q73^I+Dj'`s-&`I8P1KRtD?'H;hh.NUW?*]A>(4E(/'h45:I`S_`+JnYNt',L2/` %9bAXb14fPd.p/":&V$I2_Kb?/k9t*8]8hn!O3lSY&[CNCfA>PD.N5*[NDNcB&Eug=;$EN\aStT;<$+PBVmDe@7WpQ[HV`0k=Cdg9 %ZN=/oT7f7AaV'fKomGO3(pg2Z6qg`N,dhi^p%cMgPc"H<9i4UF)=3m7,$7Eh/VIGQ&nAPjEATg7-sgUm>9M5Z_(=#WNEHPMkrB+S %&\f1K249/Km%a;j83HN#%,h<$0l2+QO!Ku&]8L#,9t$d+`N)9l.s^s;7H8_3PY(T/`;=R]S^,fo_7QYb[O3*h;(L(3j^',k%sGl> %fS=&NPf/%-U\29sM.uL4<4)eX1WnYp]5>#T4?K[4rn;rFA,fnm2I\0AmOpbNor!EmiVrJ9=W92F0g6#ZQl\3[hEAX5r1TuLRa+'U %TaEaTjKHT&koZ>ApG,0R[HKfsc$\2R(V+ALZqiEer`'ulnCc;5glr28K7iSEN'6Ya'u/WQacM)hWAW+$$SJnO`T3:9-[ZAmc>237 %A+/K*-JogG-o'DN"#@Ue+HQ!bl5Tm[cA2A>RpF6Z-PV&Y,JN_kJa]TAiAshh %5P#D$R_Jiq5o$\>*sH11Y"ebo+\uFNa+u<-cpq^U!iK2#X\9,KHO0*,#MJ;L(922`9T/pscrEu2Ee(?:\1$lanRS?To>dTDet`%:mObM4Op?2[l%G&07,+/7NOV?mP=baF'<>h[i%V%lqd%f)F:'u\ %`RA\!^a!_FK9?j0C;OtmiE-[B)UeJj>=[LZq?Mof1k7b738U3Fa$n7:ZO/Pg7WkpnC]);N3U4cQ[M-TNJ_h=8K5O&WF?J\GDjeaL %qqFN,[bojB0#,ZWFf&d)BNeV=rqA(LbkhL!D&VYuM]sR!jr[VWg/*W2(eH*3&8*:d-BcZoc1n"?O0:8hX@Ne+(2=+i_)RL9*ZeC) %2?mOeAlo&!G'\?.L@mD_hJ+kASj0a,oK&/njQV*Lq0]pgML9+j^Rtnn`uk$A55(+@C"d(8CS8\Q^YZEn2]@%%Tc".l@XmN!Ufk2i %.f(6WE[[dP^q?+43B@_CCordJ'f!EqU\F/ZL"c2Si %:Tq$]e^6%l9>Nd"N"'jU+eR"sS%:;+#L_6RY%JcY-_H0IDm0;=d<.Ma;?PMb$TJ83%*,EJB:AdWA^r`5TE&1>Y[T@25lX9047R:`O7)P\?@D:&/04SBM]4*5VZ:T,Z:T"j+!;$CtkF/O;QC[UpQ%fp`$u"3%5N1`2d'-0W<]=;];7c#3(W %'rl!Bf'rgf+2ml7,ZnS^,Qc,QE9jWMTP@@cTXlD.4%RU6h-6dU=nP=F9_6-aH97j7#R<+h1r;:&?N$M(3U9AtZCE'KblDejhN8AZtcG(M_Mma't,bK0X^R %U/TF/I@m!O,&$/e6W:Xc["6 %W*u0L>2h`!iO^s6D?TU[QieSSpi<_RmV+N-o`H:fNc/1AgNkbg2@bbjpj]ZtmktPA'bAC\PB/Fg"JCpW>%*5ikg\2DUk`0aOm-Y5 %%:0VG[p^.:*XaB,Di.E@)3S?DUhjIr+3Gj,.(lkR7K02J$"$4Lf0]eZ]uFY\(T(t%Tk(mY@C%Q2_@h9P/B^'_(fqGdY'd)##:tCK %1MS9%O73HK&\2m3cfCnk$(?ZNg(V/1-+(UJVO[]p&p$:BpK/XSOi2VoLO`K>$0eNJ=)E7+7A]dr7bFTg0NOJn$dDWkG-^<[['Z1@ %J5KN:KiW">R!>BCQL#eds-%12Tf-k+?AJ#&AZPT!6t9q@MG/$8^iAE$aICK7)/B+991C_OJg$@X6Z]7bEepHS=IOQlSu,CEAL(Hm %b!RSF-doTAB3fe\]1o<<++QH&<8I:GO@-,9R#H0]i_g[&\QY3;>3[:Rsas>#C+hh%BPhFO@b_d8jj@L]_XmkTf9*18B77hUd<,Q<24I_r2k/]t,G+ %V,<&L09^>NgE/^A)K$UGlD7R#*dcnG(iCD-I/CI@?[M&5S'MJMl-8V=cgR*qDh%JUhf8KG]f(>t\Q<-diK]bds4XLa?[V*lmsY"s %%t3l2kMCIBQ0nDSZI?;+f[%:tV<:)8`pG-\IY`K'nqBlQp_$aOHd@VBqXbSqHfNlKKUX>as7anogj/:I:nS#SSUU;):ENP*[&W]`4rDmIuA@9-;22l(s_6=R"LX]Br%EB&HJUY4'I3Q;?1R*pbA4UZj2c3hbbQPq6SLi%*4GQKjU]B$em4_m9 %p8[\jhqRIiC$*=t93A95:Fp-JaWY?44^7T"Z+icgK!Hd1=J"+P]CL"2h>-,uACoo]qQ.<1i&+BbQ+;'&1"-=9Nm(40(h]h8DP3n- %=j`*P?ZKHVC"FJ\fqp3\Prd3ApD_0Fm:\>F[W@'U8Z$)BD6(CdrN2iALXTWMT!YN?F^!R=KCiKenf^cMIIF,S[OJj3F21QTj#^) %,3Mg++uDd6=(XT,a4frYCRpua,qkf/_n,WL>7kBmPRgRE1ob?+GX"P]+/s*qPT:AKWrE"Hh#7@+PlW8see)@T/3MUR%(j,'d@j5Z %-(V5Pc'*[h`>?9qCj`VhQ'hEs`0[6AW"4:,^oL*0J1=5b&<3.R6BQ@)*6+.1&<+TisL\h%2%kZ+drJF[Q$FA>`/`(+khC1>UnApY2fT1-Dh_I=@JR5f=KTKmQ`L(/kn'n[&5?o+B>>jWZj\6FUcTF %+sNGV=uG3l)=^@0o#I!A8/qLJ>eIu[fAGu54.h:7Y*Il0Z]R!P %';\E`T'@ggT0:'@Q_nm[c;;^:].U\5cI(4T8bu"f]CC!.UOoTci/_b0]8*Vq9X\&!6%G7HFDnYuiGN/<^4LOJW;ZP?eJ;;8AWr-1`<:Lb`7 %la6bldpo:bK;g@Uo0s^*BS1kXP6Nq*Z,V#K",4^eeM_=7UV>BLd;buea0-gK[6W8M<#3JZQ(pJc#[1J?6h"B;F]Eq'bmD)&8:Vh5 %'Z`,;?JDcd)`5Y&.GtsUQT<.0fGog8#H]qq'DqZA==T4T/[G$0P9Og[,/LI&.sZYmg]du0!1!K\I69*cK*KhlhT+.a&C>%4K.eV4 %S[B3:IoIYa/ABndB5b96Ek[I-_n_Vn[mgdF=EY"I_7HbA1e5\s/NM0_"h$d8?ms^2`BET-J\T!e2cGmqndlmL2Kt2aX[XE+cr^BLX&R9_[`Z-'9?h[giQFu>Wf);roOX>Em;m]NZMXFr %$Q<8-EBH(X*%0=Y?)!HHdIq %&oF1*CX"dSYe*$N35AZQ:-uc[KLi:Cp/m1d%?$)O2%F#:lMcpZhM%CZ\KZ_/2&BWE\263+YQbg %?ua>qM.^?,=BZpr.T_N-6"N/a5Gh1QSEg2\ihEB'!Q7>+aEK2qjk-)haC>9`P`H@9gX@PUBtKJWFIIgCI=.5Zrh7T3AN+"I^)&UA+$baBp]^7A %[M]ICQFB-a%/BlhaKE[&r6e8`:4JmnoXHX[IkDTb`4A&4Q1S$#ZU*'9Xbg6ZYU\06AlP^7_^kNkXYN\@rH)7>2Q[\kH@XF7X:!-& %[F+Jaf";2`J,1iAt0l'2r)d.GGi^N.p.cSRoj4A;b"X\TSE2`;%]b2JbJ0hPG;W2DXd"k^NR+;D7 %9*B45\<-22WV7T1AX716b&XCM$A1V3!o\GtK*#'l&P2-(5j7+GL'b@K+ucC- %L#H!m2jX=/%XNR:%L[uR(2j"mD1>>R=5EBQ99g6h(med_9QrA47g686rZtp1jqIE9[E?0URTlh?iN[`NU/;'B#r:5SfVGr94fbsC#Tii$9X59M=&Q3/k?#B858561ag(WTZe]VQK-FgA45E]9e"U3\Y(rc_p6r.fi8;5bIJCk]GPn=pJXit8:Kn@hQnBCaOZ>F6T7<&S"i5Q[TZpCddc)mtgo2SasOn4gk<7H2Sm30_^\[.=<7dANjNAb=V;XFc%* %hFFnQAJfO1!nbQ6h2GI"04qn:V-H>sT_alr+SEtf$:!dt\AoEObK)JX%_"GU%Zkpm/&se-cfiP`@(@D-CPu#I[d57B%<*.JJ#JDk %i%gm@dWjcJTLOu=gq1#O+'eaOllZs^7G[`iP7.^LMJuCZ+R8%0TS>i9$S[4q&N($;9ZdMTSbQ5.U4#ntH*SAm[W5W'a[9fP3m;Y. %7D)ccSGF"dW\OT)l_5'oT5>`EJMgV2RPmcd+uanL3GTE%+a3D0PkR\KGe@jF1^KRWqS5^(Wlud[m#3:>9L7mfi;(I+j?(FO,j\Q) %?3>`FUV)5%"]B\2!Nr7ETu9V6mkI'UjcRb.]M&JNBJD(PSH,:k/6PrIA4)/9^k63>0mrYB1_ZKXC^[b6[f_Yq!T;kQbN>UZ96Qtg %6ulQ#5)O^";20YE=6A]LG9%+[ql8g]D7D^0p/jiigWi5R'V&41#`?R$5EkPkBh:5LsNt\1a^Ja:i8hFB.La/2otS6muKj %3%aX@?sY`PWjtaV8*&LOjQE67m\C&<+%KU:i@B.SHLc#aD&F5AR^I"M4da`m].72BRtl %**U"@Vab__D(U9REGKrmB1X<#qKD7@gjZ>hJF+]ep\]$HY@c"OkKCkf`-O--b/o"8b[)0M_%!b)ZPFIm`E9:UF5NBp/RZ$'9Q"l#K@U:I&=*Ck6-I`uPROR3G.o7`1F %cUf^71'ZCqS!^#BN"g9R'dsqi8lWRqLn9\/C+rq^\W$rcLK4&ipWHF'd7@CbNCfsqBp##;R"cRD_=Uoc5?ll12Uk.&!CXFTOYdGa %=2fdY&I(2E7tAsfP5OnB1I0.a\Lr,hfB+^(cZlZ$\Zt0@RM#;pM3$(e`9(I;jQH%W8<@ng=;CHO"?cKt-Gmarc^&%mU[-B1*L[l! %`QcXu@oUcWZOhfqC`+cE"jb"Y&6_1J$r!i#3DJNbptM'Tgh\JNb.jj.)#WkEDIH!FUgJM[&$CE//)A-`L[?7oY]=1M8r/a_Z/G?q %f7m9GlBPD'HkdPFO9(p1&An %c5j;Sb-9G:]3OT0:rCPHJ//m$GQl\g[M?ui<@fc[cUS#t(i:+@J8NDJHBg2)a*6Emfdg9YC,A17hP/_/hmn5eqTXTDs.O5ER@-"u&uEj,O,V)q(> %[?Ju@cj`uubo&354_3Bn7t_r#96\")<[Q1;;=.$i[`us,VH(al!/^-,]QB#_7:49`!t>RlKA%/3nd2PMW-U3c@U@#2R6%#'3nY+< %iPZ^e>W^&^=")uA[SM:ia+UKM^hErSJ`tbKJe(Nql.6M1W?^=?`S$pS22"SV>;%2i@b/^jAs0F/eP$S+,ts$2h!;JW@^=I3oh.., %/uXa[<[5HIb4e>=7gY8)&iOSkL+%d_b?DB_2M1+@1q";VW.3(4B!:W=*fcc)ai&@O#9:M\f\1/3M"2;uKUOD^$(l&t/fR'M!H#]Wg5Lg;Cce'>f6u=gNM)d"G4PL#X3G<7gK5BU)*a*bTF>0P!W0+6/AD<\$^)pTt1U0B,?Faj/EOH_!9^Kd$=e5]T%_Z?7M0IfJT>rHqM"u/JT@`1DdoBLQ3P78#T8)$,; %1\#b9E&E@R*EgWuDY_E@!OGN(Ji6d8GdcFmfUJ;H^ML^.QN_/T@ZD'q&V2u=TM %d?8SLaoE"TJ+tH&E:jc)COF,sd^Vi;i*m+ %Ul(O9kcOsET*q@!-ZC9%DI4%">1ah2*:@88jEZB^Hd%eDPc8s;hD`5[UZL#(!HPMWo31iC!3-@S&lLC1S+ro6IeW1'Q4B[\]t+I# %hrqs6Vd'`4)8r'9m'3>MI^8`KDYdq_K9QC$ZJpcM::YDO(W=0"Tk)9]X7&r#gu,)3a5PT$.R91s'M)'4M_2K?^H<)>F%]eaLuAMs %'oU?C>q([F0g>I:TVo"\b\Z++Yd6Q$NQ#i9cqHR<@F2MhZa1J;i;.f:$PU$"U,/H(\nb9VM>eY9O+g1b%W#aFS05X.5/EG$cRV&h %XXmZN!_p:,82"adoE6p92/qsO#D*Qqa6)\/:s`$p258;7uKtPpP-e3BQF2Xg[-(=fC %d4PI8QsF;o6A0!>0%c]PRC.n*#1Wl#C\;%4 %Xttg)38*8`]\Y(Dd3Bi[&i)AN]3_qZ78b1<65%V.g+N!L.g(;p(o)!-b/6;\#!Q$6P:.g';R-qVq0T %c9Rl0>Qj@oanD#6E8'^m)b[B#6m-(,[/8Z>FWK_CVVneL>V,Wq4q9FZr;!R%[f=hmHf5u81E %MN*1iB#C[0VZp(/>TVt;4F?$R.XtPeH+B9@hGgY06^_NcB,#CJKk1!^2V_-YmjO'Pa)ai>t:%o3s="%8,?F2 %,7.1-e`ifoB2X@MD[ieM>"[IFl`BQ;"3>b%c)e;]?6WDJr08D8Z_r$LESAfLbpFU;8\O*e2]fS@no8o+,$kolq8rI'" %H0&[iH:N5=Tf7=p2:-]uQs$Z\jk%CQJ6[aFn(cjcJu88VKZ//:fHg"3=HH[D^CmXXl]o1T[O3o;]`Hh %bZMV:>19?IBATbW7$U0LbSYl;qC)H](SQm9NG?D63J:)75"42^pSH8i/WE>N?,_$=$$[R&0L]p6*NZa'.oj`P]`Bg#0c %n`9M/;'KX:rj0Si@VqT/keRXbA)G@l_sj?loOT$l+AiCh%E-J+@uB$-&[=&*gH*a7)i"^uE@IplL=dP!!8P(-:ZWk+Qb,S:23O^" %A0&+,LcY<`FN/qQD0RC"RD^ThDRl'\S-3_+$b=jc9pl,*8pl!C5Nl!Z#;kWXD3`Xm+\2];3G%TVMUs$tN`LKN3M,0Jfh2*Y(61e5 %Y.d6:?eIf[7/kkao0(iSSLAeb/*(m>M"jMgfup9`VF)=l?h/P#3`,-M^^Z/.$7,6nm:j64&LR=e8'UHcDW`m(1//G23%oEl]j2YR %UYMsPM'dgk1ZNSQ&`,4&iN2Ou/'-(Be;k:5#Usmbm5nk-i<])7j<.3\g8_LU2<1Jk\##&)o"NIUMkdUPU:*d@DG!_RZD17q&1j\f %,t)qsH`FSrdplAq3)][QpO%JV?p1lcjQq]Jp=J]4KsqO4$OK@Lbq)Js`:UIC'dkSUg6Ms*)QB>],ZZ&m7qEsf.[(AfN5/n'V(9'6 %Epj8fpaE<3Agn1kUDRRoVOCQ?/]$JeMK@$)=W=^J"V[7Yb0]b>Il0nA$7pE;.t!E%Q\m%G].I$8BgZZJnbSac>Ef+a>?D;_'2ain %F^8/Zd]lDefBI;++ia1d7hj?&H5YPQM?l6VCMY/ECNYs\&.6[@MmX[O%8F"TBFYG4)HAKpI4XlAe^8"r7tPKO1tI20DaNh^)P^.6 %bp.:dR&pZO5-m6[&q.E$b3aB^(KXa,U_JTB#AIdJok7fDnK?B-Z;u)`2M.`hr=b$C^JJcArME[<=A9"952\l+0GD39`BE!\CWMEm %WQ.Bd/-t,]hgP22kA%@dpFeQmh6oA;N"G7UO2sd^O(lVNl=&rb*GJb)JF;h4f!g+>(mS3u6)l`9Q<_jP!Y,@ZcW7+uR^!1rljV^( %milI3^n1c)I\ieEIar0@fr@UX3)n)XgA7Nk(>Y_.d#3_qS9OMABs]#"E"*FnGt@(:8i[Cr %JJGk59\,#m4n'1O?_NnOcs;X^NC8@#e/2n9[02fTcoAS:6-GH"KL-hs>5,lc29_n/7]Ak*)f=s]>=V3VUChsZ+HbDdc[a;C`I)"T %A;8=)/b),W=MbtCh>5R`h*f&WN4Nc_b;u^JGW7h)\1"ahTUi9XdQ2knT+#Ga\K0>12TDdjEQ0aGm$\W\@O,'7O3uloG#ua*%1HYp %mm]Yj!B-\nU4I:@4"-FqQf+16?Nc$SgoOprclsZlHsD?"63B:Uq;+l+@JX1NO3*)17lncmF&g!>S?_^(dN4aoS6oI?eB2$5_qX<;^`Y!6 %cq_`H*XETZ-Bi(i9*i'aZA\,Je@9Z?KSfEBEAW@I8S_E1]'Zp0Ag@?,oMV,+&M1r:@t2.kS3&aA"B1akZ`A4;[Q0sd%N-2U7]K\. %J>^";R66.J-]pWBlFP#U'B9cn+[iW=JAhUEg5K8Hku,M7[1 %[+6YRpa0>iMcVhN6`:1rU($"&cttGi0EA!KYaNN5Q_7Z=DPWc8D\3l@++$MsDl@V6)QOMp`U'*`[:7gC]"'-3+s#r.eTKHb6Rf)o %"qFlucRb+0l1.m:E7S1jZa_9F$eM]:;@b.c"u]aR,IW"!/R"?j0.4P0I\@F>Rm":eRW`3Z;N)8o\^-H-d,Z6p5/D %Tnr?*43.uOCWKM\p@e"3@AA"M$r=)I3lE)c)^_N(-@3Y[ceDlHXa" %3m2NCE%>fESE;YT:0ZrEoRb_(dKJ:VR2_ieR5P712S7Y*Bln,\@)eP2RC4QLA$f7DMg,TS75P(9$3!AW:'BmO[q,@uW&)&i2hD;!Se$sWgPBUa`S#!?E$_A)GHp5s#:Mpgn%IJ8O\4f/^^\!Z*2bS!<)m,ALbj3h3$b>+.'hN8':`TJ43>,b%iX3Q %U0)1X@O.cK#d.l,7ZCTF3KZI4%5Do/s%-ASDp_>VPb%^n(5]H$>`"3!g-c0WCa:rV%_?!6(ac?ZPRRi@a.19>.JV8W86+)r;tn(A %e+u8+dOH3`o'4laCNGNRD$=1G(IlE2F"s1=9^S?EGqg&^49a>64Llqt6tUJ<#'R(=Aon>lGOEo`U`Kj/&s,SXOeBkZ8>E%9oQjhig&;C*J[J$.qh1e1FLoWjd;@q_>#je?YKZ>6CB#7X3S>b.tVA^2&.Ep %@;sTW^?Wi$-7t1hV9N(!F\*mL$HmN)r)*XuOhT)j_%;dfk,Q<<)[U6tK2(?bF:`*L6K>]lG;Q/&_6%KU1oFFX3=nup)aa9ZDXm?e %$X.5r^q;Z?j,L(_&h!'2P7\ICZakiRHRrjn(6ut.-p1YND.K\Bcpg`NCsg6:Yd\7iJGQ'/@O&VL_H`.fY0>/BJ/bLUk<0qa$]bbI %"'ciPh8o*1:&.W9MU^OZMhK$8N%h\:T+j7%1L484,I)nO\`*aaZW$p..t#WM&>.s<"n5V[>k.XpEZVT%7Vo*)2`Y_@S't-VNYS:j %5,AAa>oIM!Q!2eLf!3A9gXQV&K$`+2$/^PDW\a=d+$5-m1r!`F>a:^pLZ5lV+j8s;pg,1,uo;_FQrVURHR`6EiW&Y29W:eWE. %cKPi.2.a_I"jihsG/K^JbNa1`A4%*ne9a@^n-*fn&VM1&B+%0q[:`PG:[gfUX`]nmN,9\FT'C;aCBSX]O,]^C4!B=%KO-C3HtVV# %U4cWY\'NddNY.(ZC66b>VCWo8RS.=;Mcnm-+dBOa3q>mk:1(WUJW*g4,/f&5eW@.--2Fj9DQY];*EX=3pGQ^(_30h6_U.!T;T/DU %QEO+Pj5ZJ5fjmK_`$nfsE/GAJnkF#5&!]!0d;&ilZ1p=">U9)dB8%jK`TeeEU=QUF/X:T1BfE%lT7(XKG/s1!V#slZBkbbm@qO@N %MV5Q/n#;8!ZVFT)I3qeh'*fdq,)8F2Qnlbdm7Yo92@(.8l6Q,I`b[$j"3;rTNhJILC]osMLn^8CEVj/!P;\>o.2,lj %l?o=2&qN&/BZ;s)M'R7`^::M/rVY_TWk/k!O#Zs`^@sQ->Jps-h`=<e:6?I%W"4%mq(Gnfa6 %C/scjl<'Yq?l\aB@p]g&UWfjdMO3tI95t1]Su.%OA]2Ec;bS$Phthl;POcbB"&OrQ>o[V95o6XgD)Ig"a)NmoYD`2;&TC"cB?bHXf#$V0')4[uLL[dq4NZ5+I-:9K7bO %3F.c(NVt!M/"]u*?K*;?B+Ru6KKEQ1ro&-7O)HZ&*G#QK,ce!*_P%*U>`3>hS)K,=lOJ9(c`oWr^(PBn,MeTfSN/<:70PKbh(98sO``k35VDG/*V9gW)G5;Z.mhkf*IIB;JW#LMgA2J2PpT8H(BMRu"9DOa1FWCn,;ej4q2"">u %2,rS+6dB@rQ<`U6Z%i[L%`)!Bm'GNl9=HB`Y$m7#2J<9IX/tOO8NFmZ,aE,(:5 %.]6XteJFnb7j[X_;'VF(6]5:dRgW?0MA;rDF*k`\!gMTLXJ,]o`0+Y?ILS.N-J4cE;bs>rAYmjam4f2dAhAO6c1JV?.&#$MD'UDhc#f.5p@C"MKXnJj52S0J4+)&FG_ZX!;0a4_OMuQXmd@Pg9S6W$GAs2F]5[1rB\N %S!H/V5'DaJ>/bV%q-IkT.(`KL6$>\UlL-F?JP?TDfVV_+GGVlX;];Z)Tbt8'%UQ/T`Vu:1jp&g-S4e$>j.f8]aoP %_biPE@G=)qQuXh6i\'Fcn(?o0`(nQ8lf:-rHm39V"[XXRn3KKAHVT=a=e?fS(QsJ@bc1iUQUHpHDs'&4Hj:p_7\-I05uo))ZkG(( %BAuV-'cU5#9M&arDl"ed:igac(^M"HJHUR&@n4#RX_b1KH%G6ej#=SINb5M(D4?M>[Bg>>g:;Ja<:I++G0.'\KD":<+0`8G-Y"DLFqQ?c<>__[bSD[ucC#-@ %(jJCp+g6s8&?`,UR>g.(lEnPnY$YIDA4Q6rRu^;//ZBDa][Fk2HjCr_*CusZ7f[.#VLP1?T1n/ZWR8rg>FO2@'es[bNs33,mr+:\ %a7,^):(N7Y,.FE,A3l&2pP&mdm6RiN:qOoJ-m#GV(D9FeM-t+A4'9QR)jpqt*DXf0N"KK!dMJ>,S":bICMr3JSkVtrWI-()nU4jR %Q@.83Z`i;t>(&8Jn#X$/n48N@D-+pb1r="*D?juQTNnGub[8K_=SaO#02:r+$8;62\\6V,81$D_NJ@K)E$m)BP6n(le>\U#G %T.cRjf!%;N/:^(ni2)OhRe9(cZr1V8P/CIn>d=ZOHM!fTU,=]?/"u#R.'iK5g9+r'J#\5HbbC9Si@hFW??UuelAfFBCa-p;kmUSa %%?%9h$55_;fK%`;.kmE>1=qI!smZs08,*`F(Jik,?XhcL_[Rf-!;II38b4")hEWfZJGVulsY$BGIrtqprQD\M.5%U %'?81::[i'81!V]L,i?*#/B"ZXB?KWM'A29Q'8hXt8BMYL!#@c?Klou:I>DF531\JW3hNIo,;VX3R:mF2X_"/o)?o"5`C"T>X1G%AR'YK!Q[XZW.oKFH)U5U*Q2N11"=NW7usr%TM6pZE8`9:Q2<1GW#[!8TLK`JnH!^* %fr)*g=IIHAh0;n0PjNoft\?n8<+@pC?`;$D( %7W(1'9cr0>Fe",Z0$%"j%[AX8<0\'N0pG.(+GBDLTNt1]N2s/7Wa.u]lDP&9CeIC$r7"2uNa=aDeOHk=6C)oqW0,YE8)M,^Og6LS %d2P!J]H!'Rpeb,[T'D@$4\;00Hd$:<<,cSWY;=AoO0-;XCh7cJ51"2TVKWbpBVB".?!4+"a_E#E+kijCGu*FQeqN;H[#,%,Y7^i: %R/^m&Otj_5*AXKp[dCpM_1X+Y.K2K*DOCl&G2sEqB(4l/C1@;>.eMFAW:EmW+7DXJPe>rUs:6YY2l4;7et3XCl585kZbZKd8:FOo:\O8LC?m4c9ZAFM2Ab&*Z<^6aX.M4Kc* %:*Z.8hN9;T)-9C8nkS$1(2+];Fue(28D1uC+l/I#5EHGc%`7Wp$EpgV#I)RC$ORP,D*TcF+mb?VO0`E]f!#48Z-!p/2i.57TtP;p?;rZ:8E8Yf8i?8%r_B0W2==S'_c-G'+pXm&2H=$k>I% %Vk-;8Vd%ATXi(G,U[Nk<2/qYVPjs_6%N?]3$lcd$=EQI'DS,!cC8)E*f`.FD$)K%@Ci4aM\DEHk!KF);_&sMAjalbo.p>PC5FN:A %B,f>IReTM@?9KTD3s5DZrYrhiK]FDW93"V[;5kXBQqe8U7`SB)NFnZ(oI-K)O_l4oW_WLJQ:&uSJI\!I:S^Q>Orh6)gP'quLRhuX %(8tF`*Mt9%W":r;TGYoJ68bUE9gU-dY\/a9Vk.:u;TEj@]&cC14l9!]lEP3GM[W8WOb).u"s-%],VaUb^Lqc;]-ATnk03H'tHL"@g$Y]1IN %LXA:Xa(@LSigLm>els/\%om,(?=sK(St7\;l=e[Zil\uDUSU65LrkRcp)%sL92O*IYT/"E9g,u65s]H!glB7QE:\d@(UZb7MX.p\ %``;tVlp0'))bX[N>&Dctf`/Tq\-6HEYL\`PNlnp]_]WZ_@&]c$(C+\`mF2d]$!pWW$`)RfeonJJ*Hu]=EXFcuG3="$)o,8:KZ2Pp %d,/Xl^E_WH0O<(@5im-Al_t/]nj9!/ZEAfZb^k//!fg;Y=,:sk`mJjJ1V6RCoD%F2,$Frq7G9aYgqj@Q-DfLc1:CipeHS]EN, %L==7u<4,5?68>Q"5?9J7Ng:2D?et;("'@R*cmR9$$#Rh=[:`Fk?4'>H[eEZEA)>Vt9=IAgLMFMJ %]g4]hmag(EjNacOL6=\MJS_Y1@J3St$>S;Z,`j59"KQ).kp+Ce\BebP.K&t?K47$hiQ-=f_?*!DNq4jAO/T^3B3U5c\Mk`i'Wa71@?N4atsDPLfEGMX\lWE*^QH$ %TJA%HknW>:Sq;:1?$283_H)@3Qs?VpE''\9Wl\eu;ja$QK3El1+&Y\U@bQH_d(t5=bBdhV@7;Kk9R!fE<2@@?`)fIn$/\$'`@H+n %W:[C5_JW<*.;7e\<3XA`VHRKFQ72s;Rsh"MJi5^`L+%pV@>d->-\g/%GFG&HY%tj %m[Z8/Lp=4c8M&CiSC>?3>OXNA?7eT[D%im>>+$;CV01Ei:?_Z##9e[jjUfO\N65`Sd5AM[hUJUB''7>D\]EABHgT5[=+e* %A6pN6\IsrqXIRcO(Fb"KR;H\)V^BXBWO`#kEL/jb[Hk$gJl%D0VmkNVq,/2GeTo&*KsSgqa])"!a\kLo$W61Em4O#n7%2geHC(KW@O;>H+9:[ejE:q*V%0Un?VE_$\8_MnMkhXD' %Q.Nle%Fe,+JHFtgT\)\CY(#JAEKH2[BX#>,P"&McL00EnL<4H$7Pc1ORfUtc5tN1rCdu;$e%U\O^o8T?679L-UXD4FS:7pA1/7I4 %*\hLW;3&!(]5[f2oh)P8n<-_l8^+_#&Y=oEe=S>;0;$TK0X'q'UMd$L>'ZRPHW?c0a?uS,pdgXVc=&.2iSs9o+*&,%eW&D/PDjIEWh%o.j$4!"L3Q*5#eNA>ZLfK@m(qa@i2^bFduc#GeG%H %bUSKe[#s+J4QM);G'9S$;FOUU1VZ8]8--1dp'uXF\Qc@NX>RV._)SjQ-Zt=+9R,6J]!jW3E\/1:Gi25Inp]7D1!N>ek&,nO3FH!7m`6nN<@!u@P3 %dUX(58D,>19U4$6Ej_1nX7)M_6*SDUlk72^`mheuXP8LYmF3jib.RUU#B)o/OR?Hn#rDn\J1L)^X[\t8e6^kUnf91fdPPHs:-LG9Gr<\=h.OirV6';Ds>bM3;>6Q#pVgYcg"Ar#+j$\JehWY'Jm%:/_-%gRWN,rWo18QjC,l:;VNgn7SL %0l2/6eQ7p`)bt/7BlN;S^H2+D%U]RfhW3K%XB+-LY=(52X0f*k"a-@g;`eD5P"<)"!>1RiRRq&f=D=1/__X7l5U'5Cj,,&'W20glLU!r66'UtIGV)qbQ900k( %&.[R$G%BlcOU3.fWSg*SdtEUDJ&QZ3U:CU.;2Ja$X&n!]/-K!FmVqY:XcCs:3oHJ5/s?]id>fttb]TX7Dqfoq/fDc<>ah!WjYSY[ %<4NOApnI&AIK;MkFQ-^X!9!jaN]]9p4pmZ@Z`[&S:U&,m'UQM0SqAp>*b=\pe<33k*V7V9ip3OcEDTQbIiK:pst>GPg#>a4!#k;@0O3`=lA`[[XINb)NrAi71dF']n%N]I8%2Zk?2@nR46 %O6@,.V;q/Roe769(%]"'EE:6I.L\G6$DIk@_ogIg`rk3FNK$g^4gC-i-+tp%3J\@S@Qq^s:NbFI:Tk;K7NB6gjk=/7B^gpaomkmo %?>20[7Ptd_$(0F-"t7+8buNCW'($a++3J:1#:pH2]p#?CeUh)g6?68+8:qX7TmBW4:,h\sAiK[>BTV?Kk]3,Rm/lcSQ['h9*=W*" %=Yd]iMMYG?h8$TJa07Z=l`j %bald[h2,48_c!2YC66dJK=`$4$l^e\,5QI/DbiJ6jB+Rlbh!MKJ2NTrUS.Pk&WNeH_])4N86(ZFn@j+6k`L$Z*Sp!?\XAFE'rq,o %Ve//^gFGj7(&F[]*K5VX9UP>sW#+j(ro< %X:?G<\mbW`+fV>'UWuTQa'BnRTArri-U'jjV!-nPRt6&gHJ["O)2IKoiBpd1N:)PP&_\`+:<*krOjHp9Qp>>b*F82>VO9T6cHJ:>9.O7>_YL81[C>!)-EV6@d;6hWj>$(lZH2!I*Xp_UeH>AXA()+$ns`kB %YZPIj*g1!]f7])sboEiVG9[oJU2-UJH?MMZ;_mZol*(RH[+XjrF4]86%r1UNiuM"NIBq&[gDJml7Sg2If8/7pIem*HNGjlJSBn9W/9< %.GJ=m=j6c1/0*'$43fFT@-j'Q6#T)@ObB:VOZ8;^]U7,p=fFF& %Z:[.p>\b%?0Z,qlVmaBW$6W)%gd4#[0Gqom*i&hb=W`-#m_I'EWFbir7s5DT1!85qWc#'fpIc,.S?Z<7oi?lHS[kaM5uZ^\gLFAdA_$T:HnfIX#GA&Fl/gWro@ %5G916DEkOf%61Te+h87DS\r5^03kYIa"3`)PnrE>,>'A3d)LG[6&:+c %SbkJ_,nn7KFD#Ja;GoR6N=@;MCE&@&K4o+=7,31D6,(R_R2OC_Lm]_/@@tBh4a[E1o+6ae'$PmEI$S"iC2!g)J8J/UFsJo<(Hu[O %NW_^cY'35E]M\=(Jde$_I@/?K[SF,?mX7:H$`)TIW$t-SsN62O$Luu]jO^k4amrEEe(P5AZ[6%Vh=U%f01W[j#$+q#i!Ga;SGT`+NJ#.9B5[1UJSo_0DR"GY4&pI20c %Z@&sZFY-;.@F\@9nfY_'1W?`B``Y$6b'gaV:R`1t'(4/i1#c-,Km@Y_gU7h;7bah(*Ib]SP3m*o/ZLA]^q1Of78hi=.u)^;/X294 %kl*29a6r2/.r(/8H8ZSGq!rY=`Vr64"R1j!ZOZSS.Vi8q3HiD*"lhHe;VE=*;@m%>bhqK+&:BEK_do"WFQ&[%aDX@5^8%?<-k(!' %Pa%2A4*Ne$nk',g=)lD=8isP/'RaUb2:47?jLij>DJRbO]/IZ'VmNpm$mW^,X7!JRdf+Tj*3BcoC4=\BS?[un<>ID_H@+^!Lf_(7:q;YU>"LtkmRY52GiQf;Wt^MnSmI^QR&g15JWW.gEn+Fqirn9C %&4eQ4s)rN!#9psi5lJ-JmpeI-@(k'ND$/!2!br/dAXMklpZO'!&@qm#&O'6_32On[]S)Ql0$FE1j:`CY"D6Y=/)4YC_'Up5V9n>*RF7GXC1rktc;9tC39f#H-/tbrALe*/(0G-X#:bsA/i#h(-$!;pdaA_:5R"QRE(Ob>o#AU;j52Gi+=._B %JgaKhOPh2pJPFD[CIk71YA)JYZ_Q'hXChP@<%SJ9"q0*l'3,Aq'hV?5BmD<+::?Jr:&8T9htt,q5i!?OF+i(Dbk\6X\8l`>?LD>H %4WgP&\k$_7UR7rUN0/3&Fb=m,<_@68m>[s,.$&H2Sl!D`aV:gH68\2;0#C5LL838/Bi-:_#V%;J %QVAC1o%05*Y %\Skt:Qc@h6#\^6`ed=:qD!NBapSVYaFstRcpZKJph._STf%F^b]P!SgPB1/G,.hKg-fHF/H/,gd-)M-Y!IBArh0NSSW$F$VhMP[: %"6JiKEHh/j*I0LK#,#'aoTBSX]8!'4b8%VD5o!'5&M]!QVF*F94[L#,D+oeGFZ$eU"!\;)"`:OhXU %4lAEN"hWT+O5:H^#ODbVRal\0Ro@@kO.5QpFNb%X!KA8.6]a2,-$or*U"FH&rFjYP0CGRc8M(udN%H-/X=Q<*B2A)e9_/S0bTT?* %luZKk)R<]+(fH!`(=(d]7)'n#Vq=mUq\b`VG!jc.%d^Jdf(I?"c8$0o; %6GQotMc#T3kI3Pm:etgONqDW`F#FgU-NJI9739t%$YWZ7ZqkuOH^LKP(]V4(e_qHl`+R0C[Y)RL\n-I&U+H+ %OA[/%V9rRr?88J`S_(A8247]^*N\.j`h,2S4PEW*4m^P.k9GMr:]S4@&Se94OEhKO2%*S:!\O-.5-7dT:+DXt#.0Wk7@+N2XhhqR %WW?fZqbRt=ToFrV>UQ5"c*`2SFF$%Z1kt:#&6?`G!k!(14eDm'9uI7nMAA&^1/+285V?,Jkj7dU"%;@[d9/0=`NG1nmorPQ(h**( %3*EU*3i>j!G19,1PqA-,NVZBW'W6-t2Q$/W$&u$3SrrsF')9^U+]/CBNco5tAC==:r7\jkIZ&8+BGIfg:O#nZ**_$,$.R$(OB5Z8 %:5.W=Nbr6!HhZ[?OpYb;%tuq0Y+LI@%&/hHEi7,h'pcJC,)[J?")4,S'k3/M=d]h7j4$c8Oi8EF9U!7qA?01l-n%gM>rl.R&fA#G %hk9=nl&bDg'T\O:SI00So]j.-A?pQ)Z%[s4T*U/.@lc/MY"GdR:%Q4R'T4]uFG;*oQ4b[S-,O,fPi@kj'#("YeA="GiqWH>q:;&k %oo7%hU>`BZ#rr0AfT0/B7qSH:Vq^Wi9lsC+8MPCcTXI0cEFP@D"o".%^4nhV*U2,K\*%E[Hej=OdYP6&KD=3D\LGXr]pf>")BQql %VP-,%$U4t43OtU/lOM<%PH`F7M_Z*$/a\Tr-/SIOk&Xdg,OFbh %AtE-qg2#T*psksPgfIm!TjoAMVIO"@ELfK(bue@[S\Fc&N-+d\tQR)I4TZS-3[(a+^=hXd2\5QSprb+))_?lf;\BKOn!:Y=3Op;fcd2t>"PS@!E"[j(%F %$?UE=[V$]XFfY8kj^0*Zig!T[kJ[\0^A.7lcb8nhbr^'gIf-13?G1XNM5OgmH1:Clk?`W)V<;b\s68]1pVP2BbKmrmD)^?t]'?n& %s*+>>+8q5KJ*FB2"4+[Wl3jf.o`!HKIJDep07<63YC,PTY<;R!$a4BuqiAqQcbA_AkKnn55KspYFY[UrMT\%s7b2.kpDp:./UK7^2`F_n*(oXEt`K+E)UZ2GOr)#LR[Jg00a^%9_AB7c=SUA[s.7lGb?0> %=0ejSgsrFu%dB-Bb.$E]c2Qu,@;Kr%o^All=]t=cC;KNhYF4(`?D:C)^i5(s35O%(VPFk$%_8eb1dS%pB^@;'FVd=Z:q%mBtD$i"F)_QqKJ+hbqId2q[U/-hRrq.oD7;%M8&5J96Dsr)EZuhpf %o$/IP"O6]94K]-2$%C`T!o3#5e7ecQ8R/<($XID7]OgKGSF5^H!2-St!,tp6mqIfrJ@k6'mb#-D;%O=iHd248` %K@0B9N*&^>,*KT,?u%T5fK2)k`L("M"oNpTWcE=+@iGInmAf$6 %EUa%-^R=/F29t3D(7?C;aJel1&Qr"(8KO;M1k'N!B@[M7[>(X!bT1Y3=CVlTdN'9k:KK_eo7GEe_?sBrV*1#o<"&MV2&8_=$O9@@ %(dXM2)PUgGME2NP.q-/gh1d!W_Hf4hI8$DKiXit/DlNNBLdIqgMn6[IRAgH]TjPL>CFM(]*R9+=]s;;aCp$YX_$'I`Ac"GT"6rZC %;P<`:_XL:a'c]3MaCoKe'OF6]gB`4ren2.,?#,t:@u0Qi+9o*4[]sh;8sE7+Fhqoh?JCXGpD=pLid>:e"M4;?KFs)5#P@3(*A&,& %1hR[V\nt+#JM;5>kXdh&k8qO[9V]G"bqP!9l]/Ef2U'M/eN.U2\8e"W]K-FN/rk!24u9f4'%$kfl\]'/go<4I61&B]npMcnWS8Frs#C?+MEtm%FH!u$6YjHMoPGjcX\pSD?'Vpdk2\ZoHhFHVJGlIDIMtRBW>hLd[36kQYKT*g6,t'2b_g7N& %"=LJ&2kaJZ_ZM@?_hoOh..,oHf[s9?Urh9crnRl5YF^6;Vk\<H95FgJ4S1o+itQ %[7=Q:O.3;s@dU=%R$i=TSs5H+&@:8;m0OuEZTVWE0XYm[%g9gg&Ff)JY`ai'H-RtV\Bq?CEB,Y:kicL2IXW_45Lms+:4FtiFuUEW %k^GT^^Vo/sX3:=ha)SRk[*+[5I*S-]?b*e,B>MN#Z69$"9\>\!J&B_`X`80Rumr\AP+rWB@O5^K_].aoODgaC2/= %K!Zkj*k('ZMP@O8oA9,3RIYnbT_onf,/3J'85V^t9WBWc6`!%\JX6Fn6l"p:(3eA!)I$mr:i25QeiVN(\(i/ZR0`Gdi'=7[3OhNg %mZsl8/*DjOB8K<7-[Q.cT9^m^?4\],4("_*!8>eeI]u:R_3(\#`oN,[YXgO)\3\13W!5>H+RY4]UJ^HNq6$aWmWekY\ghhE#+T7S %5/K]i&=239B]XP]QQ?(61`GoKk*[/Q?3So#oAc*5cVl-8BBnLg?tIohPj0*F^:nW%Dh[SW5<:^BXc[>U?-n%>pXeUtUTcFnQPhg\ %V)s#>'2]Z:KOl]^@`4-;D2>MH'kFXun0'8+*C^IL`Gh%edN$IGm4mbEEZ#foIN>5Fj'm&!*Zo"88LYufRH9<%Bu`d&&g5kkcq1*h %J/I9P7S$\'=16Mt"\m:9K2qitQl2kjoM$:Z7AN\J#:"AIl=lnLP^/)bBk&Dm`"jr3%`UdH>I;Dt%T19g\ZNc30;Qt]hHun?Of*U58EQih7.^(,SEb(,a86JM3B_mU[)\nma<$JKq&^Mc3u#i'4""pRu4R>c1AZ,;0f2<>u2V6fnp64&kmS.fNB3WerUrU`sPNEH.hlOhj]/[i"q!Tb0? %]13oY7e*ktLP56qfq0-oguFn3.9S#MUD"m8R5t2qu/n7jK-T5QuNP,!3d5 %,Ar1#L0[O>_b:[^2B<5D'2Y7S!+tVs;J\"VK@r\nTfQUYdYK[+ZW0!O-C60l3@h3LB;ULK`38)HOEA"*p!s[dpmEHOcGo-1omJi@ %1al)'CU<,9IMS-Y,4Slmnm!E1q_Dq]QZ^Sj#W%&IDb?2NiWTUIYet$WCOLBPq^duUmelA!\G9T=kjVj&JcZpI3FB>/C4NS4B-C&' %?9Yp#c^5p"GU)s1LpN,<7`[-]0Q/l'r[Ck,TkX@7f.F'NM6cq2[S9A1*;kHS__aJRY2i):Ai`&#EH9VmIV73JX-ccMTI5/`RUM9CLlg3hcg5l&c'iHJ:P&8+(7oc'qDUm/J?D+*_.NMZ%0,Z#0!ha2-$7o)i]_gkkMpF!HC/iiC;LJ(l %#nCZ@UU79?+sm\i-#GH?W,E0(3=O@W%oborN@OFEL-eF9,)6/rXp)!W?-`@ufI2r(j9h5;O'ZN*RI(m*dTI97[Olm'9lp4'.p"oD %9FIKG%$m9L#MZW'h"qhPZTDqD8M&\i6en;$nl`I&'SD%lGTKK,7]Gn66\uMjVp(`%-qh;lf@]Sqc([Xe%07k7f1KI]@Uo.hNHPnd %h=*,L;+SbXJ!%UnqB&sRSm#O&[V)4&FrH+A=_BfZNqXq&kr-hY#/f%/c]5j0_irBK_0[#c`l5nJ/ED8)h[IdPX$-?K2ZL%hqEna,.T,b;![Jg!eg%-5@?@Sd2j!pF4U:UFXOpH<=[Q>?qn[%W43;grB6 %gI`#pS)L5=['n4R#jJk@Xu,7oO]OSbgU^JSo5(1/M:1cn==Mef!*KW\Zf>YoCU_2qj`S%BCh81D%R%LON9Vc9Ik^VJ,EdZL1(2_M %eS^$iKmeVEh?S,ZB>8(^o$'X-3V>0IBk?3])enF!2]HIBpr9dDLH_^e+3ON_kGA-"l6F^Rm`$aXL8*sG=^:f\=u'8 %CC>$%LO*fGORBogZ_0m6(tf[6l&I^o:eZ(Lg0*(*4-FFgnoVpbD;h/U#e@;";0P.Y(2E+Ro$2kch,/KR!*7tgI3.b/Z%!f1gQ@)7 %$uLb7HGBuL?sNF-o_loPQ7[4gMuUCbT^5aH5.[5%Pg,pST$MsV%@prOLJ %?OrG*GK$kWQT+\Ih>Q%%Rpu:aa#HkUUW<_CEJ2tm"(75j$lPKq+euG5s8FSn(sRuNH5CtHMmY'cUIouhFaLDV %#Ea,6=VBi\of1?`%ZtMJq68b&I9qcTLKK@1TDdt(f.r@*DB`2J0W*d>,0>#)X#InBof>+(BP1(2=O_9XXL#k`4Q:NHO^Ym=i`8Y" %-t_]%I&du)=(5nh+WlKS-_nuk`&3m;NgsAAg-h"0r\0"KF7gmRY?#c5#0VH@]?*.Q_R'FgnUS`K?S$u">e.JDK'[*+ojCb$Z`<%Xd.)@9)%"elo-A&OUX*DHXtsn#c0=]3s^im01r]A%kY5KU;,DP4IBs4TsXW/Z5l3>aiiZ> %;8?KQeJi-uW:@$B#fmkodUSj(aF9K/kb+'hG1IDeORs`52gL9Fg#;-00ohC\*6)!d)92r$$m=?#EEqYZ&8E3ZoBa-C`e/5=8ulT[ %BtKJ]j_a@n.)FMggqWFIhKfEHlZ*=:\fh)gjgckZA^+a.Gh)!5glPbAORVh^l4r=-+\_0UfE48=(`1$i'aHJhV"n"$j+=jg,Ptc< %VH=/=BXo[>n-\8"7=4+2U)5,^;7m1Jc>$*'r>sKP#LGpa %84rtHKT+%F9'9,U^^X8,=?G?U`;IbqWqHlOdq^1`L65.9egE!PoT9Cf;n;`V`h4MHL(%h=LZgu(H%kS[?#4_`lKL^_$)DF'==YC& %:j%D(spi=cmVE. %UR/D6E.O%3+\H2U3U#*05KVXO;L%0U@SJ17b_sT9OW7ntS@@nF2YL?cJG]6[484GWTLMferCQ/od@ebG"M9(`LV#Qs5'bmX,Bj'J %UuJcRZU`_`K^96Lr&47Q4MjZc+l)R.bR"%MipJ$X7#8mJI%tm$XWe2]1mrB)&jL %\:?0ue%%9!PrU>74[_sC<8PZ=S.2$Q[jm5Z.sS7-+bClp&O %"-JR>jtVLuSK6S.b(;:pO*VgUYRs@@PoJEFZ9eMB2Up0[St0mlM>G&'1!bJdVDEHK@_IZ-'Pmq)EpAqR":%eob9Ftk#2LI&63F@#]]Ma/LcG:7M]>)2`BpNVLF@jD6oLXmaF9HXl:(-50!4"]]X/rnYI[?r#X&H*.#IF[/ %c4Skd1g35Y_B79L@b>e*SOhVDZnOQCAErhsLpJ$\hW5VuFPWe!QKq?j9Fb&Xa*.hP_;).(<]S%j#,&)e)mI>J-j+7I0guSLi;oma %U[D*>=Z_"dT?q_h&^nqSgGn&baVK.9E8;aaH3`r%(tiMJXY45PnOoTEOuJ62IAd,g\U]VRO(5%h;3/-o;sm6?sDrgWXFARuQj0aIr@LP;,Mf^"jL67Fj=&k=GCXMC`eCqsJM/\;X\):;XKD %5+og%D;8d5EP0=s-^'&')SYVo`A3fnj=Q*A1)#q*[2&kKk]C.60b$/fc?F5LG;)5;I>BP-N2D-@4peHoC9k2@F$AI#dA.VP\P*4H %=XM,Pm"bL,VdUrR6:R\/oaULt*V2D:G*=CpBkcZMZOa=Fe8A2]QLP$%hHCs]$lK+%'-bRb!lQg8Q,X?1ltF9;UA/imh6/B %a<=[H\>*7!H:HSdQ2l*N7-B_S]e6AYlmDH'@l^OI\]0dLP,eBCi7:H/lE$L3fZ:1VPH_1&*(TP(&HFT<(lKL_<)d#fX!73Diq3oY %fHZQf/DTXO7eVWp.3d(*&fA+'TcE*9"V(3>kaX,2idMek.['>+l^_+?aGn&NpB/H(J0L@CeBfj=k[=SN4mF(+YP*+E_X:5#f/:P* %G)Idk(8"@KF:<;kcBUTXG%b8l(C&-:2l;Vb;mZ=!>A8F>^Oad6f4C=NL9MD?jZY`=S/g>ciJY`XY]YFYDbdg#KY-V %T&%EV*\Ba.Ah@+KI3$Fh)0tZ3PJJ_Ae,'jN#'*Adf:-2ElA$3iKij#\P3eS@8#\#B(ek7lb`hDa>p2+0+j$F6B/ai6,8f(LD6=&O %W.h1`1l;*6Fr2*?'MfQ#&S5R'Y`1oA1W$dE`GpVD>fp6TmJ!RCD):^D:f7usa;6(kh8V;`NPS]OKO,di*F-\UQ6!.h#YpROOBRb: %?lL7ZNo5^\X%uR04;(!0n1'NTh]ObagSi6NM3dC,L3*DNT&%BI%M[]Htg>8o5a1:>HaME7W@4Q`=@u0=k/X>&CS\;21 %-G!r]r2a4q,%R>B!]K2tgf5SNkj1M,F\?P=Ha`5e,C[*C-5.?7PRb],-L2l$FZ@#AK>X7>&>fhmcM(`f_=aDrFW+m%lN %pQbX.DK5jZmEq+<.Hn$m^0q@3C=*R-c3$$X`!dPcau:3>&aBNV-hO<;IJ$Jb\\r:OoTB[f4eOl^-T_f[^HLHM5Mai%+*co/gD=2p %oF%jNr]n_$Eo-R+'(UoR.EZVQl0Sb,7VGn"Rm!R[8mSiM8a+&d1T+F$_s>I@)\)F'KQ2,k96qp^9sQeb8n93HRG_MI$o5u7RK`iE %)F(TFp1cF9CNILY;a3hRV5W?_c-!Dh1$3Xn+)<$mf"3NpmO.>oJohhl$nI5cc2BOBfu- %>&IjQW'hujf4=MM"_gV?Lhd`c1N;V%)k]b8=WU:07M*cdSYiqqp,G>HA@Kn8TQm-k?P-8/6@>d1*F@_V/e@rAKs)Bhs#lc-l6e/nnTg*?h$0Pp#$]4!u3Y^n*[a;q."E[&`kZG3SBg*fjd=3>LaVf0p(kgIi@nP %V,8h,HB=:Lkmi=l)d2%iE&>FDeBK!O2)SYGmg1W2FkVA_*+t8B^Y/(&j4YJPAgC39482:5*VH#!$)H5B=!MlW?YY>GLpDf`!A/npAs8MOsF^SV,1Le$_?Y+G6VhrW^V.tPnJ\qINq2b=l'Tibj/XND".mKP[r>F_T>tEO9B\Ce@ %:p%W[4A8_X)!;lc&4mdC[CqleJ;Q&^W3`a8bZ^L\[.*A-YYZ*%>EE?^3Q$6'V[Xu9\[tK7P7)`7' %D9l2Pm9s]K7h@>EhANPQ2Crt*C3-f#-I;elip'ne5ZBn3($j?dc*=\L19eBT&j.LeC&bj9Pu+^2DnFCfGeF]ndckbC(021gC4X!. %l2o&c.BDU8/'oGho(L?N3R-a/-a0#7O73*toD&'nr9=MoGjt8Sc_%*3Sa(K, %S]Kh5I,VVkmsFKQ='ke*2,Na)n^P0jF!(B+0>DOC>qeuKp?V<'J+A;+T6P*7H^_a*?@Ckm$dYuJh$dC?4?r]?f`Op_M?c[]HbKF` %oCroPq;^pjmdm($Iu61G5Paln%rWN$s5H\DIGoI@TX*8ZWVsr-Y0VRcM[s0>-iZUelOQ2Rq3-5UC-)=7kq:h@qPTC2["Uc9oNn>( %5`\MtFUd8.M\Sm4r$J#l?9GWdm-7CHo);PU'7\:,*S^OZe,Ke2e$nX"^ZW./T6o`q4>#*4kG(iO`jbmGs,m?Z1N2Do]pV+Ycb>7N %osMQsc24X#pu\^6htW1Lqt4mYDgfN5Du]"WUn@LpGDuGoDpiR;rO\]um^Kqk5P7+0Gktnl(r-$opo1b$^1UdMm'H0[?#R`$4oY)s %5PW79%m9P4r7(1[n&%B`'0l?Y+8X8AiOA)"Ie_6#T?i@qsrns9N2!/HMoO%MHs6>Ynk2'2>&Urd;?Mg/*r0Moqp$_e6?hL%;b@;XmTeHDA^[NU8rp=(k %T/sZg+8M9'Q(N@#?#RSU^#eeQs5BUK\Nf]6GCQWIfJ;Rc^[NI4nEcM:XoAp5e2q%3lh#ZKqnQjZnG2OV?d7L)%H$qT^IA1])nu40[kBoA`*4=/jk'F1:#`XrrV+0"HgJG< %q",rjo6VO(jfeL1>/\2;>N0kd4I/U80Vk,BqE7Y"M^[JQpq\T:\(]W^>*l%\u^\.+E %htsSQb;+R]5/69uf7*!:Du"gRqq6JjhtnA-p_,<0p[smHXl'$J1[gsNN$%r.n@anXWOJ[!J+;Fp]Dp"1q&;QmqU=>Am8)X=e?bcr %rkn?M?U!I6^ZW^'-pRC5.p]pU'0l@Qs7=#"p\p)coo"=t%p`B_^\b\t]_^??J++sH=PrhtpHS9AHgC@8^&P#1rVu"%rhFu4hu6.G %g(4.u.ph*l]^%@C,6rr'V)Zd2pkQJ_M#5PfH9 %nFJmDR4#`:/,?;kI/(\8:OLJ5T&Mo(E:Oh?2kJebDhtP+ioRH^e %oXFhnc[>*AU3jWH1]R;Yq^Xo,ihHb2rfb+s#ClB$^P"uKJNs1,rQhC6qPF5Zn,LWSHd?9t]AE>Y^\2UGi_M]38drg[])VRjo>Nrm %dQ8Or_)&k$?i=L1XoILtrjUao]^#6?r5\j&?iP?Ld\$%A1@O?t5U:h99KF/6@t05T9sI;[qDBDnNnq-.X;\Rlh&Nc0;PE<]OeLAe#DT?u]MU4.Thj+7Bb %e>mJXfJ#>[nVj)IC,^%uU:K;G=3ArY1G5lmkW+Q6%B`UYn#m4)H1VkOiV-"AAT!U$DD6&+_F6882_VHGOr!BT*N+@kB'BP;lltl" %3U*$>Wb^BR^#d-I)<7GZeZKSKI6)jucfug6Gl5>Sf>Km[l8EGF[VqIjDNt)6UL]/UqlcsE\pA&Ci!L@:^5t9op8=P.)Y$Rb]o[F^ %FM6+lh!3taZ"R\^Nd`g7?b;^.FP6na+$\7=g.Prr4>UGDI5N1@U/%( %o[gaD43jgs;/g-rHWAODHh<;8;a+KnG5:JJG<%0uk]d&spfH^OMtX-THMdWs08;DV?Pk7&?#^]Flh9jK]re[!?>;^pZh<4W?S]1j %MfE5&T'W'jr^3CmrJn4.SqjRsHKTm/jjQG0`qH_mn)!p*o=X]kc5j<;j0"s=jq"U6*shn5oI\b24SiaN_]ESUBurI2r%Q>4Kt!'ol]qTag:slM_Z%jc,Wk^8;Mr?.Mn;/fOS[)t([jD6p@tdZ]lW2OP_"bEn"-qZqL9.XXu:UNd2Q1dVmaf_ %*S[)[2ZM^)e$nRIf7.&^-Y[BZp@a0ILG)soWCD,AK)]a,>GU.?)q`75nNuu(HZ@Ra]QRuMLjFA"0AYsCmk3(ie@`&%B"Q"ZWd<0T %dl209hD1p&,,]q7fHEEMf,%e;&gl2i9rDeeIM844m*7Usoa+UJd;+g!jED?q34AhbeYm5QqGbWU30*gGH>)]Aep8qu1N;"j2=N6bQs)#ckJ.&UNt8)%lS#G@Y>m$1:%0MLNF2Pr[b.-l4(l$O7T\RC %=7iO#$SMC^G$9>`mW@QFY5Ck>oB!Zl)TDOOlJX,jP+3lWHK:>M)o)&8(jCA>_oFjbh4YTg/k/:kG?5ls)8E6AcK2s54s&(4qG-kF %CQ@5&0(VN;bP]KSrgL8[qX*m^S%$PBSEN5'P\l>lqp+FX+#HKor@`*\(luGulEP2a7c`RP?@2FIj6Booc>8p"/=m:m%WYm\duhtXU(d4*c6UFiBOV(]LZh;Va#&_O4`D)m$B0]flp@eZ$?9h^!P']dsY.u%)b/*t5)eR&hbpIA"YH)GG=Nf@D+qa^G_C:8oa %DBAak'\XUWgZ]UE._KbIcPNA5Q-QYm1ugn^/6BA_q^"&"qU1S-?1*pG+-&/4S8-dHfsS0T`&s1d45`797L%%NK`,Zp*cgs %8h5tXi*l3,`"k*]5?Fn.Qi(G1;O5U@C3CRPH:4CfA`C:LIJ>:>qV$MHHbBgoYP+?mlYLknWo">jS_Uq_j5Dan(;MESKP.`kWjV9F %[nGa_POn/`b.$Y#B&("(l^Bm!YO1K=\HqSPBN]hT:7o`N^\Zbk%A?@uZCZrbsIU#'uCsJBZbl6c"oo,5Crr.hLO(5f4j4<=5dF8 %#1:%(X#";VY1#>Yhf\>UnmN8l=8OY9oqq5un]fPSW"r%WlS3/0aR41KXF%ERThIV9B%0/[$4#0qpj8!e7555B?>i6-W:c)37bb0PoaE&Y1DlPur4^)Ds]YHOVC@.A`Jl?+0KD>0"BtAAsXNL/DOC.[i`TFo0CC %3Sgo,)5UQP4([]U:/t13i(g%2mnFkX]7+"A,s*b?I&$2b_'OM9OX.R'Qt?0?V7u %MtCtRNpf^_5H&j:lHGfKn63YnrJS8,BkF\kbP.W)R22tHr3V6ZU;&N)\*gbjiqB?i5&,]p]$spd-;U6rnEj1JaNNuFhLlI]Wl,jS %Ada'tG3@kVO'-P!(Ud%1h^&EmkNomPr%>^W7JsK>;'I2P5Wn'XQY1Z(=+C)G40%p/!LGZ_/hkpKmSL44F+r3`TgO!!/d %pV>2J4Q5'Zrmeg4Bm8]uh(2o`rSY"gARV4EkIad\[3%U$8Y8n\IeR9g]%9aD)JX?$m5,7LgXiW8]cPKeQhJ_J:[W_)/_=CoZ9sJV %jn?6u9?6^Mn+5@JoL"u>c>H)5<7JS\aC/@hVHaDCtO4#HsFAngS`EnI^iS\ %]46V=W0H!ni3T^?nV+1eD4NUFpW_t\lF-(CFR05?fBiG"E^@hg"ZJ')]6$2uG4(ji4MDc8M/R(aMlE>F=t>NqK%K\EHe6K25'?/_ %H!dZ0\F[M@$TGBK(LLf6^IR>]Q1h!0T0/p[Qi:.BcXcu*W5_KN&+%u[F8'm6Nh*n//]2PN][V/apjTmTJ>k?^+4N:#EDUXop=A6h %p9i'[04)A=j&SInpEVBA?9%nrdV7^rq&f=2ognXRca94V[E-\*s%D`\hL]!R7t.c9ZYA5ocf<.W>l)@gHfn8]lhZa?IFU<&^&OVQ %l]t?8noF;$:H!WNo;UL=cD.mN_7?*m)lqrrn[b8Qf6l's"W[&AO%&q!h`HbU?T1bsS_85(BA7n1l+m/[m8CN(V%IL'Af,t-FPSpa %n!i\L:LC\XFOLK>P/tAXRt%s@D"2gRZ*2n`/mc,<]AVhNc'))WM4jIQ]pJ0cps6JXc>B+W4o)7IqgO"`([Qi)f>Sd!f1`oZbePkB %B5S'*RHr#)1[?FGJ&#GH1SReFY/cuZYiX(^4I5Y?E.6EZXV8CCnqbgdr`5SbnG81rLV04GHb1rdHgu%I@<^"7T@kjRIm'2]C#.1OfnWir[!YjOfV$RT %[:&a^?Z6$=\Sdu9AnKZHom+[n%EGP0pp]OGGL#PY1o*Eb.V6#U[c-FUN11'_DP#ReBR"D3+9%SjouXWUJ!65T\TDN`XM/hZpg&s4 %)n("3hr84V0-/`OBN30FUmYMgdI>-0Na;I7H[`g(ZNiE@(mUEl#:eDOq#&B$?M[*;j37s%GH[Sq\4Pq,VdcWOI:fSZrp29sc>HrL %[WgQEELlE[1,?![.Wh'UjmHWFJ!!O=F5u9MI2`qtl2C=VfcqctAg8+.r;P32#CTgmXXe%FI(TC,ah=1/.FP!d>_>3^/D]m7RB$kh %[bGOAHsli?"dAd>.06o2m6T! %GkU3\mrtl1I--g1/ZY*g$Ak(]r`\9OIT%#`fXU7Z+-%=(Ie*-A$WjLe]QNC46.WL\'\p6Aj/RFK:PZ[=p!(&_MeA":e[!oP`K!oB %\m1G:6RU)_pr2f(?`i(ml3HaoFO5KF*B&0J`Me5[)4h/NoPY`^A?-su#*/q!p6)*W*-Um[.,X]i>SrJ$:N %2l0k#2f;a4G4i/[1FA&!g:qFH>*[7C:n4Q/HscY@RI[O]XAURPa1u+.7ZAHF2TmsioV`?h#BXf[ZVpUhkC8$oO/JVr.9E30`RhG% %'e<=0XmE+)Im>-uhsCU;Uh*ahJS7r;NI=Mf@9&a+KWUD#c;mHe^/?+(;6JCJqHmN$5icbhmgXs6C,R$UK%%FYh.0+fAQj1hr,sTI %d+-5uX]i)KgS/hs[,_Rro:*2W.!NFV"aDQbeJ'eIn\]RK^-Qe0-9@q^.s"HWVQ*#W%lXJ\q$?5)+RYfM8UqjPLRidg!Zq_:!jbi3 %>UdO1i)#A[&.k6S7K,)]/Fj5]dm`3#bS(UP,UjUe^]LLapg%kXcju:_PBn9=9SrA\%YZ1D.0Y)37(3f=`/5-,ZU.p^(IY#b6$DB%KqR._unOkl]!u3>j""#!t!X`35A9nN68@(X=IRP+> %r;J4uFE1N8#D9V8nN.7@d4 %!E4VA,LCXsL(a,Gm[FeB[L`n.9mWm/=9=p.8>W@jMcj/EJUiOtJ=Rk78S:caJ5lVJCC<[SS1kY&E>&+f;9kX;;_0725pA20(4I.O %$UQL;Zm*o0G`L$j87i_)Sg/e2<&Vmn;[/O7/?t&$OD%H1f$JHFd]P3gB=$H_OLFr&P%=ITAa(MF6fKS,-5m8=*7/2@QE;["L]`2K %`Nhq(MPWCO@)Hqgl7baANB2qt#aD]6C:8sPLk+-p(KEM*^*G`\f*RkfKc/g1cc6go%QC8u&J;\:n,US-ct?rO@F9m9c-5:JZ4QUJ %d/5sXP;7L%=b"A,AEg!8VGO&uiK-W;9R/0]`tt_nrGb[=PY5&Eb0;'g6IC)[m;$ %"@Uh;.TH8&?;Z5m9c1OQ<4Q7h-ucuW3Mr'FJ9^?RA<<=VP5!,aPC-F;bfDEG(GHe`8/0]$K^+m&h>W_(YbV4Wt&WWBE-HLCa9Mf4"rK1qe2FmtL %O0q[)A%pYuRlpmPVKN92@"Gmm8LFR;d\$a,O#nL`\hQ(>)\VntKCS(<]5[elUf0B&*@V3b8!D'!4NA\4ZN_^H0nq)b7mq&fWU^JAB,>46UiG:;:bpJ"9=jP94Tq3APQmdl:egUFiA!:^s0#1^9Y?-0/8kc$_N`F]j5eJnPYa;Xfe/TK;X %1M;+6Hf(.!T'n[VI&$Rb_ItWU.<4eTC=/rp7*L?+uh4=Rp^/^MAa<"V%]CsfCm`gH@c>8Uj %N(WJ!AhDW(6\`]V:i>:lS%$0"WSa<%[97hJ$s\eLH`nUmfjrci_SZ8bohR6JC6N5s.adDWWAU2JsQ#[J(fYWIeQBA_)LcCQVOUUXhoScV*rH>'de@BINg#647?5#4.Lf! %3q)RkD`YdC:W35JS.N95f_uc'Ut2ObKblr7qWY9`qQ6;oiNK0=j6PSf3.-pDheo%&@6:eJ(Z*lo%f`W=n8)Ol:41+2nVI'"bTZ(4 %g3[dA$iG59[C9,?HIFBfh'p"E&S%Z/:&$G^.3>k^"S^Qbh\R%D*ZG94Sk?NR1ca%pmbVY]M3V2\gY$4G04"Lq.TBgA7`?#Oh&%q+mUqshB;lL`Pi %(QD9^e9;FW]BTnI/q#fp57dhDotO1E@"6q_W4_>AiN:AOVdJXJF]:MQUACPANE*[<4HfERorm*emsKPsnGFJtlY;KOV:YGgmu;$h %(u;Wr4!d\JWFE6hGbact#e6qS#IF:`8G'm8e&Tup?Cu9gm=AJG<:=V2o&B>u4k*c6#L8agP$_(-bj;SlNP'Bmd_>V2a(b[T0__Ko %?UI33)Y_?Aq2G11BCpPekctS7qdIT!rr-[PYn71Ys8E\q;[k,"*[!1YouBg(*Ob-;\F%cN7c$mdilC:CC:eo-'aK,]#nre$K@_+u %9%A!$ClH8Hgatqgp>r+b`n'tOh2;7rdq$=og@@Y6+iETe'0cm`C41f,C0uJe[JT+H4(78ds5=Lu_lqR6E*WQmKBcISN?237>ANNP %YC60%\@AQ(d:hqa"*IBM3qcWRFLU(Fj-^F;.9OdF52fj=*@i\R\F#K>LCVOb&MO[kjZd[jq$)D1a&Z*](OX[MJ#g6iH=t(%40%`& %kpPa+;bPsd9*j/tLsF0_7s@htna6q!I:sTuoo:)kqUN*>Bt`f0h92\@g_XHec[;aZKEdWPFA`9+T%6OA$a*jHR/#k3*?F6ug/D%r %Cgqd:55g?1lUR?gNE<#o5Ho.TO8!snnBsY:J.CF[o2[UDn$gp7OO4!ahtqT,G'),-*%9YWH[Jq2gq#P3t %ikM8;p0p?B^6L(#(\9EiGOq/&s1F`GS:YUKH'I\Gjt!T_KhJdMITA1=WpmrCl6VFVS1EFu[s#!peR2h^A6?cmC*!Ui^A?]q`Ib[- %h4T,FS(%'H"+YH&p\24Ur3gg-Qb2no6`Srn1rkr!s+As=*;"W)AXWLNm;\uPIm %\*:N"),Qlnk7@#f4si'B"0]jaH]MFEI`J%nHhYpqGOM+DlP@4hUY4H]H'S!4o^(+4Y$O9&jJ>ARr't#ll+Bc2?IqjeI*([-js,>q %@n@:m#gQorJJABj'c@589s>h*[2"+0Lk+cJ`KDVtTdDAr(I]t7fKCKm)[`@o+Z&89/BS$WTcq*VX)s3m,ng55H"U"8_BN,>]9GnJ %r91XuC3c9gC_93mRUpC=ppqX]ZXbdK8k+dkEo2u&"Y"mu1Bt*$4SW&I--d%6;#B>Uf&6X0=dC?7%5*G/D-<56 %&hP$W-oZqf=*/9U?Yl%WpHC8`Ul=^bUZL\7fjOs[g!"]dcjU@6%T*c?s/g)FN+hJm$]mr^@!D6[ %9Z3YNVR.Ot%('d^K[Xcij6W7%#@820A5I>kt+&#L@_t %6T=WSJEL'+8q!DS(P9[h$J@9e+s!WI,@52NEf^]]^h7L1&pL&OLegfW-bpP`\I>)rHiQ=5R`H7WWQuRb'ME8F^lU[jOGJ51+j%tj %qJk(j;P+]6VTlTE/gOGS`slF_dN5?,q!e?gGp3BIK?)\jpb($(@3q3X<.g%g[D6&f=R>;]:uRN^UWcVeBXbL&K1T)pa:^1q"7Qo$ %%[k5o/V3;niY;:`iEd-iKFG5dAB5F]LU-#bT\iNHnk^m$.ff2_WNlC=:1BA1*EI\@E^uA\M'>&lD`iU8TL+hi'"@u^n`[#o(lj3r %WL.Pd=p"[hV,Ku#!?P5m2W6/+&2T:JuO?>-*oS^CI"&DU;BN3 %?T?S*>$TWk*HhDdpl#Xg[6,Dn>M0o'6o)>5Q'd0DElfO9'.J_SkAUV\/VbI0`3h6BTg>bIW,?]Gs!lOp.V`O9>uoVb(jH1hX#qj, %+s`54Vn/Z0?kDOgkfZINFA%l6@2p?293J!'C8$"f[<(F##Co.;bK]4-\04CqRbW9+aO-5_=jV\AaaDF"&m1u(')t8"65FOG1j2Md %d3ACf?=7IQ"UNpW)i/f:V#BJTNT1DBc."-n47l\Gf`E:VADl)gNsY:o1D3P0ajh1B0@\r##K,*!dPLA[OnaR4-+tj#Zoh]V:U3%ZJ5u^hb;RKD!p##/+co2?8O^G]Qi_GA6d59;Q3=Q" %aYNYlM@BhG)ToGKLS?4()5)R3U3f_j;o;.'9b9M>F%Io?Le.+VWs';&/ck>Q<%!Q3JQOUaX4t*?A5o3iWc))mG81F'$8(^;:q%Pd %8anH5Fu:].74'XCe+2](E2mjJ:.58_+9V&P38IJT_tG9nfpn;G&4?eL,kI+]8jk[ZRS+W`h?D+C8VS\+^kDD2M:,LBUr"Ti3BWq7 %>&n:!J0(u7XT2B5D$_DKO+^b@i#-?AW.Q(Uh"%rX!^$g_mEhLn)`s]ag(+=s$s(*NVu/e5*Zuk)n5;fQ#(tH!bBRH4P*W1_0*ZlA %V?P]Gn/W,Ta&PaITg%gW/2eNr9Z7P34k]*gH3]1n@A,(tbA?I%DB.ZH,5hZf^s7*efi((:;-MV:V[9[]4b4$'7R.(NF4=A0n_&p>OIf)PTTnXb\/C!qAIN"QLCNSFZ3NaVB%lWtTe(q[(e$3hkcHRq7pD\/@l**h52-=T4jS!I/]L3-+u9C^-d"\#6c%HM %0l=YVj(ZH`-]ap!bo&o[,u=fK9R8CcaK>\cU.flnCi<-G3l73U]f9$oOtG+gpO++'R)\S%[D&gZBl%]Un8'S)al7kZ.LG\&L-5u8 %(TDc7aoI]B4pQ]h"_q8n+h^Ro'W)b$r3^9in0+VNQ>P8YBKU^;&KSSCe51)qqPFH-ZiVTh5_N!7,FX3Z[V`8L_3u]n>"f@cnL!.od>)jM0hgEY:&1%S#HWFt%p7f)ScuU?UqJ95bfQ67t#(.0hZ!*G!>!no.O?2U4H89"T$Lk>DP(Nue %TA.1MlWSTUn7^J_65`37pC([9pn`9J^fdXi@:?X,#&mk*>u9iJG?9$;5eCWpJH+DYkhoOq6\o:!O^ZK1``eoL-O8@G_I4:R*((h1 %brc,>Z%spk.n9`.Cepc(P^R+?YrI=>L!j\\9HMSJ1']0mn.V@5_TTmGNC-$?dL4"gd]4N8ln+PKNhj(b5e"1JREIGqqbq;I3.M;U %?VdQ%7FK@V*'N9&dLTB`e>t%k1S/B-O`&-g29eiYN]d\6J`Ae+6qGdY\Lu?TU7HYSkaCcH.18(msuGK0lO!l1N4Sd9T1,aT#A!< %[)#faTaV,Y+4ek`63N_50GV):>`j;\.46-5[!upKoG,@d/%sb_4Ft %q#WA!>>SGP\I!Y'!_/LB<%sF^&X1dYnb;RR$g6'Q'LT$F'G?-5Qj/BeQkluq/L:[FeY4:O]3m%D1,3KME=*??XVd?S#ApQS^_iH*48hf8fft&c8-#\(3EGIfQ&)M;Ha'cf0\oE221p*HA,;4`Up[LaR %>NYZUl=(UlHOS"PN+U8ZhDr9LR:3H@dHgJT9`,6Hnt1E=T/;LAK-q1&P"O:B]kIE/nS8,!H1n;D6YF[]<&#\[-`bfjM.Cr_:mofS %1M:GadkIT#C/*O^_r5)nFa3`&4e!5\89qK1I)Ge0&j4LOlJq/(Qp88WC#]_"P>"<"b2]rY@*7YV9lI!!rse1GQ>'AQ3RRcPL*"]\ %inSOu9]P@C]>N[;d;DAS8pYMHT9oBIa%AJudq-dI.?'^V=]!:[:Rp-+NA^;Bki3t)e1]E]g-H1d]tA'T^cT6pja^^>FLRs'PF4N6 %]u]XsGpHcMh,e#/X5'[QAY]7&V`Bh(45OJ3p2`+'FMg=I9`JX"P('q%$YkW"*VOqhe[_8&;n@Y)Z.#)6[1&fX#>u6Wr'7bWB"$AMTIlWX,`h/K8)^BqC75pXViM %('1pnoMMX=M5l'bFAd&F_(4\lcVECB!Jcbn)]gSA=/tVAb2AF+0=LB*o#b?+c&@2r>tA %M@?7blg=l,T"B.,fXFL%YU=ANnWR;jW+AXLo^C%q_t)YRp>!Y\'?tuRG!^H;iTK*DD`Il^05i*)E9j\['jf\1Epc4?._`9<:(Iaf %.6flp._`,LNdUclT8ZhVX>u4'5E/[d[p_+!FW$;6Yoq!,ANaaHN]\4mEb0*hEs/b$?a__iVSU-QY&.hL7XaF"j1^Epl'Jl>d"4j8f0\G^ %G6NJF@qQ=I_q%e_n;l$K)pa1e2W"H2Cn1%);tNcYAG(915U3b1`qphuDbNh6Uq*b@Mje[e\ji03)N0#dmtYnaCfmS^cJiij^o`6] %+%R^&5/4%b;6#)/Q]4aEUkI@nI@-[BIJGH%mMPUqim"I1>'TBseO)C[=#;rG9)n$te!%,[CTS.8rV#MMPn8A7R\5E(OFbsB9TI=h %K#*H3"3,HKddu:u:)BHkiO(Q3(nEl0?dHgN7U>f[Z;`-K#4F5FC;\?7G7Qnt^M2i!%=1;]]0D>9Pobd?rlgN*sHZ3*B-$Q2M %Us;IlpO:N20W*^/EB"U;j;E1Rs5)3hR7YlRO'_g"?6`tV4elm%O/^E69K[lU*uL>LqO9->:ES?dl(NId;0[NHe.EehU%,@*A9(sn %]G-6B]3#K\[ne)/8U4QJf.QkZj^t#2cLYc%g%hkL`Z,,6MAbrJEZH$sSp\D'r-)s;GM2sOfHPfEXmOZ;n?eRO/_8]goG2S?Smo@h %WDdWlkujscmO*dJcfBT=eAa4G[6%SEpn='^FQ<;uV'E=I %W(*mRhK/*kKt29deA9t1^R1B?#+ht9msVJ6kf"K0X%D)/^?_g[6b9aFF>jPg=.AiM\T7<8?+Y=LhS[sSq[]=0EoZka41B-53jF*N %s1CsJH![ZEc._9'kpfcDDV]XMrHS/7DmjK\B&flp_hs8(.Sd]Pg31]dn'jP)iS>=hr][Lb%$+!gO37`7*8+ %2f@CBeQ,CK2lYBR/Lh"rt-jOjfYm8\YKH7l7*!1MF].G^B%f#UC=2%]Z]>3fA$D,6ICrUZA/l2B2#nhp4Ab+)s]8WfA'1Psj[mf@[%`"R&TV(9& %ZlmdrGFg:B,rBV5-1l=Xe1g.V[b-KF[H3n30uhj]Ls$,f2!W %`0'9jr*2EYC0%Y%!Ktk?+@^kd.)]3lj@m"Y?0@rkT[fZqaoE<&8\6"k3/iDZs!-)JVoGCe,DD[RZ@9S@e7%7R2J-cRm_:9?Bn0b](`%>/ilQlaa %C8+9cL&%_B`k`,6ig,ifQu,,G#;-$Fj^i]R, %qK_30Kngotd+<8,WnnpmR#GkjZ\(Y9ifnNo!\=L\[.JgfZ8e`(A"5>/.2$cIjMVAX!08\LTELk+8Okh?(ZHk&:8COPlpSQQ^@\@"]ZE*2!u2]FkJ]04!)oQk(!dOq#9\=emdDJg %i$HN:&#H0$41&-]sZTCjg/B-It1ZS1(s+!-"L2T4dY*U;K5i'L?;AlD+L"+cgWY?f35?0fd/j %_JF%D#H/,]Z8o]\`Bm%J"HN?h2.]!?^/05FOK6kS-p%POb)>1L$*g-GDo?0QYV:iB&=ii`MM#>(&dt"ca9O2;;dt%S%Oedh991P9 %Ok^8lOTa0eVJN9"HQ-IHBIlJ<5Hm`.SP2?\(5cFJIB]R\`XU>1bc'GeW+r6fPpiF06-Oh?fFX_("[sFuZt?+DW'i]kSdg'aA#E"6EG+#r#=Be`&pmNP_LlSP3ndM:@7j$k@i9 %!AECQi2f@E!b-:#$8+%M@@uu@]Ro_N'3BA"=rGpCKPNS/@a:]2Ykh!,/_!thEWd)H&gV4B"#U^LXfjZJP&!6ObaFch>d(-88>.0: %grHsOJ6i]EhSmmjSkZJG.:Ys/>"Xq^$CP]A6Bn"$fEsl?,Y)`=e=jtr0G8uuEj.brnAI&&Lt9Q5m4&c4@VZro-7#h9Z3>Y*_)dG9 %'AEp3io)a1RWk%"'9gdUSE:Ln?0W+;"%`dDcrS,G0r<$EYtJ1O"IH/tA"b@PXQMkKc^(Z$ghkil@&[,34Wp[[HYNJg6V32?NIR9k %;BY+1-tuLE9f.'LP/_\jPSBa_s5'7?h"$'s6_U;if<=Ujb<<#cr2uDG('Q8eVgiulR)m6R'iE\7HeVdT4 %UZTWn5'aWKd;e;B5SH7e54P1>eS;#ipjBbY;ZB`$IlK=o_=S-6(2`non^K5$DO=>>E,+"q'19<>>u_b<^\N$jrqG`2B23<0R>'%5 %p5Ymq%Ndi[@,9npH107+)=jc0B55uuX@/mcDfNr*h58NbRtZ1dV'-dQ?,,sZhYl2q:?_9"bA%%UM'8dnlW+/phWsR`NiJe93Q1DlB%Z+>+/XN[fs/_%N-lNBniICA3$5mEi1KrnnsmT]^=lD^).*hiYnTS9PgO(s6/e!BLom#pp8NBHRIdB7]kA@O00]3 %eV[iPb^HZnc`ZPKK)AcP59KQQ@C2E.H4GC$R0HZ)qIhj2jbdco:O-foT$,`/+OOudiJUcb2KRT2nUQ9@4)2a#2&"h'#-?_Z-%8_E %V@oS]Erj('DXF"khP*aA %^KWST%AUnD29SJ%Y*s[h\t@9<3./HEnA7dtm-*h\WlnXGC$Ou[_k\,LVgXUYr7e-1T>,jRa="BgJ_'6m3P)M2ifEf(3IC\fotnRE %?hA-gTmbaAQL4Fs7Y/#1N8C-/C]&uVkFGWo3rJYIeLKBVn(kP8UYY3q'C06=BpoSb(pRT.kKH*FoSYLsjM3LGVLJEKj&_6n%3OG %47d,@LVhg#&1fd,E+.]9j,L&`-M;a(hR!4&^6ns5Nk3R9lIust-@Csg]"-#4+>i8I!>Kh#O2*5,D9fd#34h#=Zft*cY19$;m01@& %gc;]`2Kc0'CXW;k-bnmBVXX\;88k'oDTtutOY7/I0FQQ]>7-tuo"iWVpSj/2,'dr[+?122Xo@A]^$D;&"KC=OV4#('I %G\>meO&^&hr"eR+Gp>k+Tb_kAcJ.c=d^m"VJ=17UI(s/pAYVIT!WbOq+7M0Ei\k/3V)%[cGTJ)RHYg<=Ies-*I2J*E-=Kg>Nf@b< %Hu8`934TEW0'S)R[.i'U=8%)h&;kl6/'q\&e9b::?I_)aI9.iTR9b_?%N%0N-T#E9UP)CF*SZ(jPh?^Ro>%I^lfd01.(j^%aFPFn %Vo#"-rq,$l/^).J'Ps\>!u!2p\Grn,g?/9X+L1O-7OFFP2l;%./7`;^]!6HOMRc]%gA^u&RGI[QD@.@c=\9e(]<=?bS64Xn8A!`K %IQur(IUr949Lr1.&,-jG4pnHbhYhHKCnRjgVsQ'*]3IF?@/%YeA$T3rE7L>]mI[Nm5(EP'T!.8dl/(jq=0h"^g31]Gh8_2)\:(7t %S*]jNMa)*n2_$AVH1)VXY5;hs[dA>,:tMj5hjq?#j6$#-5Ajiu@HXALD,RNW\SXFjGOE=Lf<3qU%\((Fj5peD5OA>DTNQ7pl:Q-Mr(!gK#^bAM+X(j=uDpP>Tl!+RP!*h7+.Te:S'r&f,Q96bGW1M0An54/EPRKDt.<_ %M9YD4jFgqC!aldP>_>gGD8Ok4')rf[pfMu%'QaVDK<`]ZEc;S8PTQ0J(eJ1^_Y!)J6DXsEb[1eV38g5;UfBh4+J'6F5fC`W_iOqX*DLm_`AAT/M`Be5G7n?uDh0(45YNUn#jQP5BiF=i%(K)f[@>Gme %P\7c6d]O6^(=845RWb74)8$Mc8,@KX[=[F_#.Br&:nW)oY&6Mm&4FS1M6K@m\J`0dlq8L[^k)rh"Gr">[NmRl&%DW[iR%YTN.r6Z5n>-5',DtbfgY$)o)P+[#^(,,N9ag>_5ED %gjnWgnejtBS5q>oGS]<[KTjR-^0^k+OG^6A!LsR>;`!nV"R25TR7-4='5-BFO4.nl#Xr`dR4Jb7Y+6;S]i]bH'RFnhj^Ul#!-41! %h"/YZ9$dk;WI'TT@h=>AUkK-#Bp\XtPD'Hs$pN`,j-YdV#R!p,FHO/J@(%;q76Hn[Lk8K[EL-h?"jKia1[GK\YC7AajLe#K&.p-> %OlRniU!sM;(`!\Ja19OF]tR=j+``,<.%i,-O\]r+DoA0Ci'\?t2"8O@03)DB6p#[3)-m=3F`oop6>Yd3L`6FtQp,qk6ZXIFA4iR: %=,Wn@:2VV[N36!/\0edfT^b^+XDhGu/V>_`0!PT7Tl-Np"\D+RP\_jKpn;8]'?;st+:nOO\N?3G%8c#6)p/sr!>2)XB:6==XLR&@ %!ofDS^G2d27gY>N?s;Zp"m@iK0Edh_(V$OPiQ>X9]#"u5+Iden[i//\h=3gkqBL/cp3[" %0/]aWZig?&YoHQRpcOeH6lPFN&_2V3+o8ujfsd`$hZ$c[rX8YC-$6a]qF5Ai;Q>7r.dH-ca,E5DKPG0U[#[C8c$<7Ln5&Pm:V431 %<9rDCL3i$@0-tn:*XSDrrXr]!?g'597E3mN$KQ_cm-,=o8p?hg;u2_:%&_Nh#p=rpnm@A@pfR(Z`_7>S[8ea,/'WM/OYULEe;^@Z %S^kS2*\1=(ZBe[Ci\fX"H5>A#e,Q0\"6:$fV<1KZ<$.-sIAs4H6X"oHCX`'aWg9YCW[V'nn!EQL3R]D2o7OT;g,!;-`NFhsR]>q2 %''^QMlNe+HJ,RK!bJ=X(epjS53FL+Omf3C4PAdmC3IL\YWP.L?b-mkJ@/;tS!O&H)))c4"1?U?)s/fK14oer=eTT3ZWE$?A2lurr %"5f`[E,(G;khW3nB)/%s.oAC:9]LF.4*5D_*j@T<3*04,mS!%D=74QJci)[[@trq;I>s?sQ;$a:Ho.*9DE2dulJ<]:Hp*7EGdgI9 %lL![\+".,d(\irhh)aN*Fk,G,`Z^mFj`fn4*DDu&Y70:sNj9%"J7H+*n0o$+[c$#qnS@&D.G,*"*tA)/A*9mSC%6t*pX8$+@6_d?^@.tgVu)9nfKa@L?Ts7T#BJ]@_bR_mm/+Hoj.bBnqtFi(>o_/#bD=O*pis]tqd9c)9cD:Q %qGZr,2]OWB?%F$*Yl!G2pN$SIXVTB3#fFp3^$h"h[XQ%SQrnRpk-'*[$RSZnV&R&5&?j'H=h1PFs,[3"3M;ZsApsONg#HEO&gV,\ %p3lP;oN`6X@udGSHc4V-*VfYaX+s]1D\BdL)`sJeAC-pSLR.S2Ai*\qHi%o"Ma$%_*!W?k5,H:2MUq+ZcnJ'4EN%g@fcA7KXZ^k# %gdVoY*MYV@%_nq@q-mKp*h'0$\jOds7$`C=T0`,c>WWIf`tKO^pM:OB>?kIge9Ifm,FNVrcU]P4hV*j9p:`U%NnPFV#HA]5T:kF. %]6a+Z&KP2Dcfk7CdPGu_\Z5KQb>Qu]Y&'^kC%_#W>o37;q5AqcI'm.A_Rsl#c,;&HdthLOSj&G%QTMf:+iIPmHE+RF[F;&Am=IF) %XB,H(dWX0SBkGero,EE3H0!,.hgL!'d"8SCa/"gQ))\>KQTOo`i>'7/1GFbH51k9B+*l"OmACC8[4QD2XobWRs45IU_Z42n\`JTB9)E;[UrRt %<`t?Q;3[sF;`QFU%@OJGdI[J8/KV]M=JeB:]CBn=*F/X/Ge=R-@hJT>gn6j[$&_n#s4^6GQO[),X\R%rJVc^B0KEgf(1mS,+:T== %X)s/_S52j6AC`P./i>$%_6Y,qR0DA$hcEJ,rBGT)Cm?D9cXuH%ENugM5%W9"b+^1N=_&2;.RKgY6d:L/JC>O2A'30i60DI4Dm:Ec %8DtoRA'kG@kiIu=0dR;5fEk*g"AXH/;h2dk/3-TtruHeaWHq>#i&Cb<%u;hUT!:l^(rd\`bT;m8T92![.r1q^7T>ac;+(gq>.duY %I1P)#.:\-tYKnduLZ$qJX8blS/q?qlK<9qi7QOTJ&h%PY8oKEB/M;IX$f>SB/SdM5Q)'U$+gA>+J!!KX=h$Yba@ %4UCk"C?_4MV$1X@>V7-:Un]I%1HZ\2+37m"9IWNGJfRD,-l,T-SekMYh9bJVFe4^.#NA.+53Vc^iljH?5YI+rA9JtPmY,V(+A0U(a$_*!W'1VT#cZ()oeo'ufM2jqJ/qB+^d1A=/EEaS%tp'IG1("#KP0$b %==Bg#1J*C8qak@/_M`Z!8J;9R61GJolAi#h=H?FCI3"%LU87"@!+fZiLm(U=?PHl]:e98J-!d-0lr9](1A<2j8rCSQ?f]0d5jY8Y %:KTYEdGb?ZAouPRdW^$Lkt"$lg10RH,f]2NC9b`:T:tBu=_,p/cI@ZqVC%9?ACmD*6DZ_1d9.6Cg7>B4[fYmFt%P4H.W %=,n#ZOH>U_PBWEF![_@1@EK+#Vo,6[DB[MP%Q,TMG'(bO3Dmp#efF+3QE;O9:nTDm7[@Yf+G)2k2FS%;Z7su-%3:aWP+WLWQ_8Z! %nDD$::r'40M6JH"+[.olYnpX"*f_e`+CkX3E5&J7e&A,H@G.FMt$FM=jQbm'B0GWkD:bO:".Y.P9"NDl1KM1_58T8-hA\&=0Gp\kJg;d']C,0AGHK"%Z#4FDT'> %KqCYA7mK,RJ]p@\jd9l$i#82^5K!/MHVF)Ta.dkf=:u>DF+iR(OS42^`RRU?.e&fHcRkU1b11R&WC<$aM1C3-Af$anP+fo]W@[jC %Y6PK,Z7RY3ZN.aAJgmt'++l5uVi"Ds&haWA8>'$ubebV_/,2H^@ku^g5W,Z?d#$uo>EXOm"@K2#d0d6S*XS2^=@c)Lp*(9$PqmlU %*7!Be:ICc2LCaR=\(>YQ/o)cn,ct^\=;Oab#pS18fb,8)qA\25aP)C-q(VGC2cCWULtA"l7=QBN.cj8PqA'ZFonlpN=V9J!f\S,300pNP%Sj(>L*t9&D2)U/ZNS(qJMHb(,`V'\oCk0jsUU>4ZoF31EF#qeleZU %5enuu15ZSFm6F*64sU\CYqQ`\.MV2)"#_:T9Zobo.+JWfLs6obfL[>CZm7@?%6nHU_)9JWU_Kag)7%`Ej),sd&._?7g((W')2a"; %*C]0"Al0brU0:)jJ4d>n>Be$7:ru[hYU/YBC75TP=0s^D*H[>0=_a%E<'8WA[F1FHOj0,R9TWt(h*,3/!48#IdZ+=,9RS=Qij+TY %S&&19%s:8V1E__"LrlqN;->!RD_e"Ejb9p+[+Ll\4>P!>#.!&Q<[S**'1iPTdtA.*/:=^+e1AHJ1fQWGamb.#S4]3#dmd@N@?o?! %\CHXBT@4H^2IO*'**9ld/1mT=oL*42^&OK %nBBJtXUSl8`5#RCATVSG$2GZ9Vb:TiDTH?>O[D5T2D?+RN'nG%&J3B%NGT4#a#Su/K]`o<7IlC?&Opp&kot5;:;r'4855#(9:AG0 %'I8*%Zm"3iL7-5C3;gR8=Vdjc,KZa7Wt-4.sWCds3%mMf:m\\JfplX4?rF$1ecej-ZH2DkWg&8og=P>0Ckd!QU$-m/^%K^pIm#=Q:/Stq.YG%L8X %"Cc"T--aiX>8\,:=ikoo&bjWqRm-3?6p.)Pq(,E>XC4l"ELBQIRd*b_d/n9bK3\id(d*DJ6@]1&RKI/fcaU3Z[7_r2>-gKJSL-=J %QeEtlca,QX#SYS\//p*B^l0eK!Qo*(KL_/dCuWHq&s`.7peGAaN'@GZ"`a/AVl.j?A=.&R)6#,V3iMbBW!c]%&:H_Q/")BkWK+\3 %%mfFb4rf)(>aJe70U!N=3-"#57pBhU+\7Mp$tYd-*FdP$VL%;L-S$f-m?g%nUtr]1_M_Hp[8c#aJ'o8Idg[9Qm/Kehn-gKWi]pr.#/%r"+sGHKs=[(E;SV#B!I2:2GdWKWBRK2EjqCg73sELF':5LPn;4 %BIZN4C4cTq-H*@"OT@E;U#tc$m:7@kRq##X7i[bi".cQje[KCEFq8-tc` %E]=0AN5p?OD7=qi@VUVC^qKt8_?DMCSO_cC87Pf!k_H\;p"Wc1RE"ppdbq'oT\RZFYXsqC[X?;O`P)ct/.CtMZ5"]Ke %,//f/.lP$_d2.uXkp#.=,26Q*8u2D14,D[j'E](i)REU7RMd@\C1u(So8gs1_^ln`1+AWS"4Q1Zo-6k,[*/=%A?ST8C@u[.c&Hh> %YMU&tE=QC33]sen4$J/#,F"(SHTn2bEcbMON07n#I->+pC;AnE,:S;pF?1n.693e5b'Q+-P#*qpTu:4Z/?Q1J`NaE%Sel[h/;nR0 %mtZ^Y)._fV\^QC26(_NaK)7uIk!FHZKGbFX;m4(>,R!I-jG#cCX%Eg_W2DB*7$u:[. %ToH(U"&s9J2T\e$l!Q&4=0iWD*:&PgNEl3Q`)Rc]N!.48OPE6>@8mIM2'tb,jQUtWUR36[K1H55dR".;cBd6)(o6O57@u*fLQ3i8!sW:7U2-2;n;5Qo=_f3AFCea4@fb@Cjlml^T\M:qGn(^G5]cAj %(3orM4K0SrjgaY%o+GA&=9\*-k.Al7S6:l/Xq/_*SKS\A"XleP^&]`TJ7mctQt*KSCG,b:jOae5?XHbqqS(mKi,/ %,iX(O-M!7PF$J7aBstl,[l=a&8jlHQ'F8]hmEj67i!Gc5hUFCR/fh^HDBR[D\.kC/4CVt)PhBU8oS`uG/;eCc:)4aASZko89DfpH %E_@*B9JAd.&4[L)8G%$?$6DqG'\%6"bIL/Hk!%@%UYqp>]iLs+:Y&Z9g`7p=!PrK#pFSKaNKuQM) %(Pd(0:b.+d7P!K$R)m/'C,%SRn,.D3NS[9rHQ:8ot'tV@n/kRP[`)!".klJn7qtgp(ApIH.J)gF)F@o`9=?#dJ^- %]XQY&idYHk'rO0"X],,*XdYQShRItIQ.s&7!Ic!eHphQ^^VpM(H1Rb!!iXo,#k9A3`RfYT"\gHL8.)RCr,^$S0huS>7.OTFTkUJJLP:t0[<<$q^@-\\%SGjsfgOEp(KhmZeIcpcMpWTAQs^7):Sh(M;D>=0-f0D_=;\K'.W.GcA>8"X!nXXY(i-A)BQ`?PP %U8f?86?(-4`&Ikg[:.*GE#/>0^nh7l9hKM$8L/j76l:Mk9R6^p`/ouF&C:RnJXD>gdm7YY,W]+n%$EcjFuZbDTL3rfKK3FVIS".h %,!;Aak^jd$^-[;L%R#i)L\bI*K&sqFHb'\<-RNCj,K^ac'Q]>NaV'[+`7U(AOpG44RL3^o4(J-W,JAJN3Wibid-ZN5aPiQ9jgEg< %[@/FA?VjXVSE%=#\#p\5X/DTN@NVO+6'?kF)IR2L^=3""tO?JQ*G7(oTK+9T,LC %CF8QTOe,XV`5ITMHGkmo2GAYu/&[I$r_[D`ONOBl$`6qYQgQ;?,=j.A-:l%\FMo4TLCPS%dk[)BH=s1gN%\:T,jXWSoa&f8M=J6= %M,XK*IiXRX_#?#YN,a+d=VW(Fl06J2f[@C>S)/bi9Y9POC'gq@+@ilC5o9j414]aAL)t90dE;R1!icTIkHoNY\?Oh8@9Vh^P>b\P %Th>Wd!5u4>'CjS-!!GAk1D4,kdKUISYOk]%C+dMeM3+F,+S(C?+-Xd7+9[s%6&6$BIpn4TP38TpoLl6>&rt2/2C\j8_obSDr[,(nOP"XkU>@\#$@K;Fo"-W18H[)m[fG9q=TXFjb'NmVu\l+2c>;/Fap %P_i9coAjJ<%"T%8UCFIn'%DH?!tFs[n7$Jh_jFXun#F5IhQ8hqrKeOSW[g?BjLlV\ose)`dk/V<"(9"3q,*eDHY@/5]U$miUQYo2 %S:J5%b1)J'8X(l)HV!\Z-+;C%egp>K,h=[VrCpoFjQrZN#e6muH"ZDFCaC<(Q4adcKm#MKfM`)mD3?t#Hipc&+?;5A*7/%8M=eG6 %&AmMA5&lX;":Cs(hLT>BT4OS@C&ajj %U)]9i/m6,LHND'#0q;;f@^$Rmh_mr$nZ$#\8\p"RFSH'$'>tuYgI*^Ua;ckaqh-lG;\:kJjAnq.LDC9#-Mn>Vqf6qse$]``_iF-e %+Tf&Z"W!qIBGN\jUM2iZcuYLe#Q0&%bB?2^6m?-lk;:[R`&)"`P:hCU'bjW`coVIpQunK4C@AIgVB87K6m+s7.-;[H)H$Z\S/CHM %O3Qf,4[YoQ!qsM?S;.]oercpfE."3BPUJh,f%"OJQijUEC;u+-?6\DM7H3NgpWh7pG_QVa)@p:ooX@C\#jM\EBl=F-SaIJ9? %M'__1&]Rra61XXY%r_qD=ZE_K:d9b'bm")Im+%E&>tT(%,LKVtK1og+fFY^IdA@0m!\mc:NljJAPUlgt8Xg$Am%m>E%iHNuOD%R# %O<[;cX;`A+idnO+jA^Ge9p%\pJ,ZlI&?cVK0qp3?A8@Ea@K&9V,L"$@!t#O-j03P@Pm!,c81Qkc[8.T5"Q/2]6GY@. %/V3C5FC9F'=4D=Z=TibuJQ&-n`$$%.-b%E&[EZ@cLAb/8i(Q7o9`$8R9>YQXNDVIs;)LKYZ,Zjn*A0Z(C;Q''%W=m;*E:U"5U7V\Lb*_*ZEuP9L?,h!6rP2;BC'dfMh"\( %&^*sZ[M6pd3KS>:(;c8OPE7X]T=6@30TB`_\=ke`6QuXbR=4BM=YRBER"BlBPpm3qJE2,-OTIks$F+&.(VmUBaPWgbZBDTb-]f*] %TZR#g`pQ9Z0JV"V+sGD<\c]q`3p>RcFc88fg"%n#K&]5fLQDbJ"!O?R#7dCJ0O):+M?0t:1$B:j/j_cV$X^aZ67no!k\-eD4)p\V %*agWR=oA3R\FqQTr;ATMr7Q8SoYUduan=(o;t[a:1;\kfXfe[qgtA&cr8]#BEl9JHRWF1@pL*D(ncJjI3e77f(AU\ZQRLI_baVp$Q!eM`if+qO"Gn#F!?#cYZ77i& %6JG!""a'L-KX_6;C()qMfKY=n'_5]GC5.g_P/'=KB%17E+CF[*!r"\fHpGJh9F)%i)rmY8.T,tg>u0)Q?k5Oj(X,P[_U+.M&#J,u %an[;$@?N.+.\DdF,Ff`Paot;'*lg*I!"GK"+XRdQ0I5EgY%d\c;\'\[@8Tk.%G8Qh0OLO@fQ8LT<90gb'!9f]'Xn+5[hBB6Ob)a) %#``4<@BMN)Th7)rMpJmK7kjlR7B-n93O7ZX=I+KR2+pKY8OG %,ik_EgQ-;e"X"2SreAf(350WfM9TpJ#Cm('f4U_\>,7!\_2a9TXSjPP!5/iNbh+X47b(r)FI5tAZR&Ke!m?sd"3Ibr(>R:Bg":7`5euo!_*@I`]o&+`?Z8Nht-M %R2)2aNC%LAAPRFq&J.HP__,'/#gY%n!ZtBY0Vd8E\UjSWps(:.7Ie7Rcs-k/%t2IjC#]q\c876`+c8Bq5?fBd!fqrM#8V#+bobu:V=]O=2a&'Y'H^.nsL^/1.C^AiDU8DU]>/!/4%4X\sTZ?:a=F3pP:04jag'Y%@@YH8I&Ag!f.a#2X/3uco;Vu %"JiDE12N(@c,=+&/oIU]MH0ceRMW2X(/JUt:u*E/3F_]\Zm"dC&6fLR,*&j!,Q]KNAn4\UnQ*UM\e&gM".'3+_2IB) %#9!2s.g]D[&3TbN+X5Nlg0ob'q.+LOV?]t`*'+8N:)$e@OcOr*b@O'uo&0kk&`s[\#-M\j52F'/_[n8!I9]Xp6,!gcC8(TN1Q"jM %!=huZTo%1uG`c9r!-_/^$jOLRiNgfE@\.[,f-*9j4`_:gMlVD35i$"_49Q5d:"@9(&hkmKlV0q\'uYgS$YW,+(!RoM"4c(=h8j7C %ne8qQ2c]_H+jV!-ob#8)K<5E7lnj.#Ng9p$kS7R3JJ_0i#!J?LW2YF,7Su3de0Qr>0/8Y6!NpE]796@B&^Of*e$MrGj\n_pC5V<^jIg@X705Of+YtO$>\A2m!98g]P`t"3TH$HA+d\7t]PcYhA4OBUu3]+-/U_EfJo,&.A)bl9GaMbu< %cf,$Ypb!qg^(a1EBhcYLj:2^!=Uf4VI\qq/J-lMH3Pl2nd5'mdgJ"` %LD@udC+A=b4GaAT:WaYE-kPN#g,g&Q-6FW"8G`[3r>bRKQp6@%IkZjROm%#qZ"%HL11_Gq-BRj3lja.j$)\IL*CVt&a!qtrWg>,a %'+0.#@`V9L@?Q3![(t9;r)si+*T8;o,%2Nba[<(7)K@X0_1+b6n0],pR+eA]hU!! %I\Ht*0Ct$JQ$=9?2@/V!+P)cF%D^Al,At0$R_?bi$/^M+#?VIhG38>h;&C'L]=9(;3YNdJ(BE1]p[Peub<.,3AqblS0s:uo747.X %S]Hdr_K90V,De3q=nrPgTiiiX`ht1\"6A8NIjVL3@2OYHrbIDK7=UuJIU^qdq!=iq3%0>3nFC)oqW&*)%GYk';PW8?At%cKP0&76 %l*0?.9,gBV'`]iUi&+/a,f`W=s!)0Njf^FK\23 %YV_k0oI$u[O?ES,L=^9MhJsf5LD.2+ce'l$HU@HS1@='(%eHoH,a6MI<3g\JqV#.ka7op#+@KkE*,\#!;D^IU"\6/U8>7Jd(!c*O %D).MS7;"l/1FtII[0819se3U=Q>V<./<&3d*-Wr?A7?MYBIC)L>SJ8hnI\5^7'eqe57VBL8dgM,XbW^h*6Vq#Zk$jmQk)VI\H4R,\d/!Hg1'ra %h%i#fp]kQ)d%>%4*f/h_p<=TNDd(SI4WV!Q+Q+p6%5Q)_dU#O'H9`j'OUN,[GEM#+*mI*H`"b%e-rAF7>S`!]HRDC_lgd;oE"FuA %Q$jIfB`__"0?8,N4H/cSO>l4E1dr,5[+:s$DUuh(52jrK8>MA\*]`@JSWlqjH+_Q=CGU3:4UM+3[A2-FrD#PKSV53Om0]6eL8SV#7b+3:4]SG:_K;^mpcJi_-'>]8!7O5M1=-EECs%5U=U$/++>pj^Jn`q'!#OB0&ud%FauBmP%rZ3";]osS4(Fl>R!BD!iFmQD %S;7k8?'9H*aNuL_g=F'cOXlM*ibF%E`PWS0[kQ(/*O6Q"9=1ILCg!>p:"*:Cpa-[t;X#UK#)Ig\(cdq-&a41qV<&i\!^la5 %\IS]uq>?elO2KV-k^8^08V7c'D8_*ZheAQk=g;KkYgM/7LXu=)+&a";>l0*7"&o^B-Hqf]hXL_bfnC%P%`TtI!CEYkCPYj3kA83T %BZ_ZV[h7ObB;@,@Hk:"b`NcaKeqeQSkr=Rp+iresoafiS_MB"JX?Ql\H(kK`b$&W#>ZS;TI-(]?#T,f81%5cFWl7UEckR1+W3$@6 %:m.<.FJ.STWbk!rOC;e.7kFD.E\a11X,H-G`2?(E=Alc>'\as!s5-O %3Kl8aoj1*DJ4=88J:mM+#oe-d8,Ehdd)mWmYtb9o&jQReUX,'F9u<^)98al=!m4;/L(l\HYtL"H/;t:s59a5aOV3A(>p=(mX1c]u %!7?9@(rqg<-P=uSc*NoId$DW@8K(^B4t1Z-a%0[*@IBqKZp@\mPOPh'&&&2ane-G)/3`-dP*dtjPTQi-3/B#i?MUf3U@i46%SikA %pUKMs2$13+Hg)_IG4@cVL?)=+q3ceCJdJmen3Mt$9JD5".<*t!&D/Acb*/K:1G0boT.%ndBW %e%U_VEEiOMq`""\(U4[a#Zs1u!*9eOGZZSMmU^Sclp6"ZZ:kud.!6/)Xp'P_\ %YPE`d6MtS')YJ-k%X22)dNj78NE5gsJ'89"UeSO7X)[%AM#cu;Ykuk(\50f]!"R%RR(:cHrGk]MSl4>Sa %\2;"hYe5l]qcmhNE[/0:[-e7V(k\2`dG].626t<6Lr9UMo:ajed:ZE*m6#(G&MaP$*XMlKHP)]?+Ym5#^u8=`"sf<">>0b0M9uA_ %0,XqQA]F1Ge/o/Jru%shET %XmiW8iJn[U(5BRH,9#ae(4TTb!mM8jPi@]=\=(]SNrUOOE_="7*I8Yn`53B7X/>URNU_?Y:rh52r2A:G8N4d5X*&?[88u/ndgl=(5Z#Sg'G6\T3-8)\sWcmbBQ\l^r3hM:seA9,V>C/jO3FIbr#p5 %XV8abSTCf<&#F1d[Ht>M&!34d!POUYiGY4HJbE8Ws%;.M"O@)r0Mg\RU5IMe9aZ=l/DT>30,T840)Y\ %m)m2VZ`J@:oAAT`eHUJ>N=WZT;`m)nPXH1u+>g[H %8dnl>Ot:9;2r`hV$-BE9.K]!ZWOQ%C-6\dI_R(GL/)[R/EQ-@=]\+=e6jaDdBWFgaic@GhMBaIm#lZBcOD8%#*1D[Q`+#l9%;cdq %'+ks_NAXtrIB;g@B4p[*"(JA5D'XhQM4&1-1X-X8MCj"'8cji(\KZ!r`Q0CM"N\F(t9I_]Pi-D12\d$@(6,"tp %9S2C3X(hr\=1TeE;-;3L"kIfLj:FXoYTYVQOe50<[-0f2]P-ef"YF0bA6E$#EZ.NKM35>R$_oPZ"qFIgBeV=+TnK9ods$u"N2k2a&Ac0]3%RffF?DKKl_4lS70)( %,h?da"^Zm>3>@"a38\1WYDDN'E4a$ut:,2)cEY]9-A#^KZ3]r4t?A+0(fqRD?1 %IMUT2Ir(t^-EBD3MQ=od^h,+T1)kIB!%nc`Rk^U0Xq5opB4C)12S-KNEfLA_)[)Kf+r.]>>9.A)MeI]G[Vk&bS#,0F,+@:Q#!1j#dSKI.a1og7U@4jlbM@b(FA.d[Z[rf7GpmY'p1GVs5& %Wk6Ik_UPbT>i5!M653^@rcYuB2n6tW4dh?4!WFgr.oX0$>VG'*,la_rh1._.H66sQmI90@M]V3.F.:_4H,\!q&^*1Q\,htMq)]u( %ZG9/3P7bhda-46aZFs@66dCL/\TZgr5_Mh"HCY(l#ITW1p>ma0G+,g/9`^>1IAn!G57lQb!H-HMT8H+:.niS9Ls[(5c1MlBdh(9B_>HNg%Fc+SmnYL'G8Pk&rP`lp3Ep9:nVNYil:UkH %Gr&hq?>#A?3.R_QI+pC4)XIjI:Bcos?P$qus7q0?8jqmXAlIN'A-q#cJRe3LED$3p*1HkXJJ%;oZpb(LT4*2F5[6R^>Nm54DaX\@ %B1rAJ')X-$HY7en2#[IS=g"`dm(3MR96/6!NQe$.fbnT+C+Lj%g)1sK"7j0%[q4TGrM?O1Nq]8KUh$d&2upN">BW+8&J^e %!_(R3JrV?o!BG'$>-<=#16>+BAeP,Z_4`41>,_A5t%s.nAfD %^A)c0IK4*/;d=-bY`cVCk+&,\0NfOGKlTFlr.>_'L'iO*=Ir4&1?#,2)('DPhgg4A710A-:&MM^>&+=YS`rXiAi8g'^OWOFr?R@$ %5/#p.[\+;1bR<"/=PpF_"V:kCn0Qsc=IPG\5!F#;nB8]",l<@bX*ikmhMbcbfCqc;P(<[#B*_(j=90d\:i#&L;"GRmIAs<6.iPp)a/_5I=]G9*3a0I5N %X'90i@JC_gii?(OR=Z5!0L8"ZoJiLg8V@."EFGsq %dg'D!/N4k*2`DiKL^ifo&6g>6d?tEoA(CRC"s`j(&!i\?9Ct>;ae/(/Jrj:FmqBs-p7C4i%%J^&5W^^nCWr0G"rL2:p=(Jp"03W. %J*E(-4c3Y3;<2)1oIiB(LXW"?-7quto^cEa<(tl1Tk-r.0ESV=qNF.F@nlO[(<90DLVA#\3ng-W!jlMaO;k0qT;s"nr'@!HW<7P4":YMfFaqU]rV4n?0 %i=WkZW&ip("fPO!r_K7"$MqY67D^Eu2?k7meTrPUGbKo;*,=]d7K;u*abj*4]3DEb"1AIh@eoV`:YCGXKDeBG!!5IM4!6*&"i%6Veu=&#f>.7I-AuC,+PG=cnP3I51?m=S6(,6!m5i0k6f9-Y0Bsr4tId#^0bAgqab%aS3JI %pP:`#&I5*RKU3mHTbZ/Wr!7\8cgP1"D7"b=YhWqILP9#rneSq4R.\5%Qe9sHp6&?g$&Ht0Ml=-S28JV)>Ub*!<+q%N^'YP7jBHr7#XV\ %:jGjR'*PM/s/dR6^KcPP?t?l?>c5Hd[M:b8rD!/]XhN1parA$Rp4`f-e-:FQ^^M!.l9MFsLOlc-4V=@)>%o:a'im^/Z8\5Wp05'^6W,[`5)\5\X8&l:QkR>r`S4L=te=S8S^EpET:&FFU0CUX^qkqe)qM,M^rs]`]8[X`jgsT7'J:Uqmr,8r\#EsWVdJKQAIU4bDQAaWFjDl%A %oe/"do#=K>s!D@8XL'QgegofEM6X`tnoHT,Y1PUj4N90amH8$0aF;4P?VMZ<3XQbU\H$=g$;"AtaJb+eL:;.'mb[F(g[i\)l8SuH %0j*WJhO5-55+(ki&*@5I0Z+Knk`X`W_3B;5A=)BGE%p<:GqT+t:;W.5rsl94=E6*2dU1m+2(Jr1;fQ+BVB+m7LS%hO8'YGPXjO8]Um8:;\0`` %rC8N*hpJC,US\FT+qjd^>A.8H.#dFH>3O;rI_Xi.'E@9Mnl.OkS5HY"UP1&pd0o&[1`:pIe6D9Ql6!]9`&Z*01QoO=rQ%T\O206% %7MqIk>k#'Th'1uYq'g=)UFMp6ZCZpSNO\IHN),7r2dp9BFK9shY@8;fMuPkYMP,*AbXYG,rCY9u._6lF9M,Kqb5`2Z$JI?J0N!". %4&kb=ZNOFN0Q6E@%dTW:^OnV:K'\q\i`A`tWT;qWMGp"j[jC(W:C3.+VP3&>[NZ,/:D&]Z3#tXW,mDlIVh-X*XVR0^9md2Q,>AmK %B`2`BGF8o8Okg]G^JgNsrUPX@qft&ln'&@-mO]8nn2ml?J$El]13'cVGA$>)-:@:&bn):!irn?UCMTWh%*Ng3"]]i,AKSZNP^JTuq0KG,c6B'drIf3e$rSC2ah]MFX3W(J`$.ak %U+'%i$<8Ym@_r)0+9!Pm^BI2"s8=5%-e#6ub&ntR^CE#i(0Zr7M\.lc:6>);Io)WJ'k9BO6>:+jVN\NC"gP4BN;C7knK3s_O"S&% %;`oXM!%"lpT_tRCNr>7Z_;?dIj`e#"j3%_fmH2gbg\aC2`kr^A@G;.ThmCRj98\r0f.f9F@17RP) %7DV)jPM't+0i+oWr`0A1Z;]q>Qf8s78$!Gh5r\1sk(B1Gc`ZA@]a_3Hi"VhU1j[$`9siC@F:6s.^eo[KI=Zb8Y]As!2Yr<=GWOm, %RT2J'O]VUhJB800BsHb71BL+c8<7KanLZi\*sKOgA0Mcg#fFh'J=nulX^H)d5=.%NIWkmSf16aHBAVT,asKA6Up*:?7a.4KIF!U!]i5qjTU)=YBtb^8iD(E1lgMrb=2*0Ya-[cX.H[.iV)f(YKN2aDVgEKngd0m6TKommX$Jq6>*)S;=4@D=!/P"g70,p.p3Ybg<(K\J_Q6 %HZm=5a3h7176=a5%?:UD@/Grj>`HFhJPeheS"eE:Pq>BS4dF'ph>:^EYDRKC9iN@"i9r%02O$+.%:5,&4h/$SZ';R %SQmkD%Drd+/N/![KG2pb"$:6L-_-!Q(>k$EiFhNe\"9lnT8?8W*84>Z/p^nP$3Kl#fp(d$JkM#? %,^Q+s/[95N2iDTB#-I\dagZt\MQ]GAX80Vo.uOj]eu\[>_69&kE6a`dp^._\53LGMU!D/ch1;>/Gb#oUH*[om[rNms's[:tgQLR+t7i %6KpZLSq2q@GtA>YKj@jZmKr';Q_s7r6Q>-P_o+&BQUfKZJsFXK1fpD7E77\JDc@)"t$iNkpjiflu^AM>)9"= %J,opMnZQ-2B"c.tG4Y`"]$L"N,`+f!++WBd_(E\80;Rg4D#mKSJsKWbf_(WfXLq*:>s]q>QiK#E*o'LUJ'RUo3^GjF0**V-\H$,)#l@t6oJ^a\MThN/\DKX4DkOt`?OC'Q %rdMAW?UNR-r8H$2af[M#^/V=D0Jc %q^:pCcf)'\6:PkA+&Aa9Nh$Pp1h`q'#]pkJ6oJi;-j3oQokR.&(hh'B8)c2Y=Q1X+B+2P[Su1[i^3])I'"+*<$lUYY*<'`_6!T%k %44&oX+(WOsGe!TU(C/RM-UGd)YlLjGT^+H:L_[";5]I"sl/*"Nb#RYf!FC$U`G_gMc$?MhDmhQDp-4B;2JBqqHrpZ*UgEq5pugPS %!E[`As1a0aTnTih)m7NLU"oKKY"=9;Q;\2^_SK2>^?>676$40,qdm;V3gL+".(Qq+DmGg=\CLN!VuKu&-k]8Z@nDRWbuXJ7=M$i1 %W\M]O26>.W&IkVsiRDeS/91C[FnHMc+I_i.]1A$Of?25lEsBQ2>%nd"JsZi=/i97t?TktS%=[6W7$Yui7u%?PTcg_uTYS:)*n8NSq0Yd8.+iiT@OD0ln-`59o@d^X!n %Sq(BF`<7aHp2iu5hb9$@n3)Xl=YaAlqnKpcPCZX`,`/s$"FJ;%7+T?-A@@mu'j1MqOL#g5URTMS\QM"4)/*:hDGGB3ZDcWSoF2g> %I<3B1`YMoXWr3`RaZ0C(Qo,7Pc6=:N[.3*S_0F"@_`f!aiC)fGm\&'@%BW;L23\Rs3Vem&R>Ct"i)KRa:FT# %TOtXVFL'=WR\<&"#gAGkZt'BH>*>pHF.;hhJt=ZYKT)idjW$lKk"rD"+"WAJEV>bK1[jY=>4p!(\2\(0Ngfqui``K]*8ScMEIU#P %!fVf@S,\$!0EP(WpgPZnH>&aQ6Mm_N5u`EZ_WJYYCMjt[&tF+<%sBFE/`Z,/Y1?u?Y]BdcX4F-Q2R9sq?/@pG]4?DjacrfJC"?c! %%;mnj9NgtQSaiL?f!^goVeXp6Q=7]X(gT_Tn82T$_%:J!pf+o(`D3JX)IRQ5d:]?C#ON_`5`C[fpG>#EsNq77"ELi?>`!PL]0Wb %(c2][Bf'b4R):Db/)g1MPHfe,$??_7BF.e1R`H^SJnrJB>>"N^dniK\YWKV\pYC5K5pJW*eEmrt:>9m7$s8NImr(hmdIB,3"CT9J %R$b>0*.EN`F*>L;#^Olg4d8a9Q3jo3QcUVXPMpm0>QOD0Z7spA0O8_:Kg`4d=N3:h!VoTS\$4d3bs$b9LAP4-L;P.;5S,m;A5.rS %om3kgDEA"_N!'-5`dg7W"7->4PhS"P0-WNP'-*C@S1 %@3E?!A(:9`d9BDt;k:Hm5=*5F+D\HRk":Tk2//iF+1P@"D@g%TaZu)1E@2%#=nVZ5Zbskn=\ejgKRkLdHo#BW#6,f^2`\ %WDkR&B09(="_43>bMFPb5_ibJZYRl^l,]"fd.((l!&2\s9FGf[_kh[j1*"9g>Rl02UBZR;XfGeJ9@+]Mm3EZF+3WHI\G#1.0+u&]U %]3+]?5]BQ$::>4p7\rStH)%VRW2roa)jk:!b].FtL(\/c1pp*c?WG%u(@Wj2@V)@"8Dio;RF"*8DTNic>D/s`k*%^Sd%YF,1,?-( %bmMh-;@nd;[n>ZfM7j;j?t/2kPr?JS68lkD-Z`hGJK,S@&CY-]kG^@nEHiI\p>,lNEB4J46_db4_jaR5Ru919`JgHu),-g@/:$jX %KJcV6`-s0IC>e<_a.$4Mc:k)^4Al%=I_u'jr`_;BZsr&N5cP=KKATeW#1Y=S0)hC4@8`GUq*9MjUn;?U4WMIuB*KI0+A9iL(4XDO %Sb]/jo9MLGo:8p3-!:/"%qCn-_AN6;A32[)>`SVk+.DJuliC&`XW:N\05Z>>o8sJQ_Cs"3H*s"mqI:?tMZY?`&7kL:(8t*Z%=pYZ %"#W\-2AW[^8!3foa-fIZ@cK@*R9`,EJot!Wh[*L2AC$_po+En`+K:bYkq_'_64BAN>B502WT2^oF]]$8N;*F']mUau*e<_*"nu/d %6r\NjjfM3GL0reT44Ud=8OiV/%uhHLF$#PbmB))RU2"LS%S@"piA3^WakT9'(7QM/8Zbf#>Tk:-2*L',:Bn@?XQLgbIKV3dQYtLa %cR4j"AC;9=cV$m9E+3302Yup#q2^@P9%:ahDCC^3I*^!8H&W9(pi@j+$:6*nF5$(LODe>=D?c$FAI7(\E:F!:Y0S\Gbdu*t@Q?GT %!OND=-&J0\+tXj=?tRo'*Pck:1h?*]KZ0q)pG:LM^I=fG4[HD..D9 %%L.\g(i8$7N5-%K`Z!X/Ji$LD;1;sVH,CQ]293_@(3snWKrR-VnqQNSDqGQjdRM;.M)U'_Htq3pL %[HcWr(/oN1Na!!&",eT;(7V'FV8Zoec3^bCZ@g,\&rTJ;TDi:E[M"St[J?^6AjSRZEFi;S>:qA$:5=R0n7gH4hn5R-3Y?+g@FOX)qO+=b(;o]iI+7TLDVc>7KQ#/MB"?)[BqOG2:4##$o(jPWR9H.-X!aHGH1;`b06,=!<:R6KD3n%>Vg['en*G/\NijQ2:#Gbk*HAS\ %k@8![be,^Es6/S%YF<"lInmao:*'fU#,LR[=!>TRcO]/eYM=31[F*8M"#O)]fTNr2rZK0a!W%s-5PTg9]:h--T1BAZ:*eAMj.=+6.sh^taK %gn7V,J!n7bl>VAaj80(&c?kERE4#L7Q&!sCr1FeVaWZ*&f#A2'WJ9/@:jD^,!"M5b[GTB)oPq$8;X\@UHet:CiLh(eSpIu1V^_!: %K*M8ETO8HTQ0M=T=DQs\82Fp12LAXH%Jn)XN9>&16*j6I;*LWnDU#Be.\4?3)@]k5Lj1]$pd%\\0<>%+H`J"uS:,k=B#/ifFYKlV %#5)Q)kqdrXA)lV@a6X7actKm]PuH0i^bOVJpWB8L_9mCJB0db-+9e(9+@pQP=nqg/g?4_-Pr-#An%4 %!.Q_*COH/FD+,k*6(\3Xlcm%s+7uk]?9^T!4n>7rMoiln+3d<1K=8eEpR]d*($bd=H%I-F*cX9sGNJ25.<_ifbDSO$61<\\HY]BB %DlCtWAPjLJjN.8'=(eA=fB16aG0lSFc^Ngc+5PSBCbY'/TU+*NC)Xmkp%i/Y]1F:nfKnD0J[sa4S@dm(ab)o4VECo'<,","^^cgG %%d^a307a`Q1_S:ZRa#'r9c15RnS/Pn_sMlR1WO1]nBmZ%Wa9J3H9Y0fi1O_O5s_t%?R!mYLU;]:(5Jg)T^-Y@fGF3a?-g`YQQJ'A %V/'gDkiYujB.c/W<_noo!HFq`Zt<,7YtT9nc4>7s?Nr?_d(bNGo:..JO=je<#Z[8INa&M`f]eOmB88n%Fi%@G]rJp'AG*0QEjlZ)2E^h.Bth=Q9gnMn8FNC_DgN;&\`).Jh2h*E;9f=i.k9+:RUp>m*kC\aC9%A#a)+ZbsePHJ[hbZr2T);=1*hKE0'qq%.Ws#+Q&4AXfC %r*'8ri+Kk@\9s5!Q,;r;f8R)"@+GK'cqYCLnUj5E#W;/4YY3Ir?]sN[oeVfV/Esk-Kl91&0(!VD>81EFRdR*I_FLM`ZQaa$Ehd[\ %eX7csMYM?)^*V:;;W]Q.]AN_en&sfR;a_=Sf\M2m_"XukdSLr3IdKd:Cla=0-lb9.l0Jfqg92F1GG<']ZskNW;=(\MC_n=8b#,[U'7$F]s,IT1K6!GPJKbpFaSb=3O`\7tTYC&- %?%R\]&Ql"$-9Ei=UMn#`!)`?(=Y04bmC6h,*,S=H0)NFK'C#:'Yr4QFP#?Q]9k9\O%;8cN95eb-hgc@=RAtg@q`i8Xo5k@W]0`i+ %q9I8X7prd-@lVLO>4pRs1KXs\)RY-Y?g5Wpc/%cZ6E,LhbI+3"Y$=TUL4i=*qd7(D`o-uX!h!2=m@c&ILBiGU0/eHNj[3OdkiVmF %GgHJ^2<'4r"icb7">-ASN=9Ck15ZF>!a:=_nHU$orVk><.p/ieH=+*-LJF]1oQlWLDL.\l*?.``Y!n`7MI_#=6P3?+4^KCnQFi:V %'6i>Q_;LAYI_!,Y#.%R->h.)cl`d]77seI7MEmAJ]2<:d+;0an6/(M$:Ab0MZ1lAH<9:7`1oE]"qBLB0:=\8jC/S,-On(BhT^bqm %ljHXOmKrWS!;RE&EW2_,dAbbg2NiKA'&90NZPo^l/0%2k1(XsA0=SW9Wufoj9Rmh-%^OPaH2dXM!+fkL!$RSj+2<4h %A,qAUO/WM#[o@q*('$''m1r4>Uf5t>0==WRQEQ#0-s?r&VBSAqi5g/1<%\^?aLBgX00S3o21$'BL/JK*?6Sn-E#TF7`Pleh1i4(g^n[-d$0r %$f@p766K1AT9fqLknSeGV@YhR71nYG7E/!RpPLuG/JEu:(Y5j=ldLdc"ab^A35Gs.nZm!(KR+=PCT@@RDSF/4:[+#JPnZpS.YXd_ %@(AC.Q;/H`@5R/mPJiB..SqWLK%[aCRmRdZ(DT]d9*\h-/(2k4Eo5"4iR(Z%rVSCCkkt%N(qdQRbO0g91?e"`PA-2q.rd\n>`;\U %polO:E=TGb&Zt/rcfEfogu`RFp:/e8,UdZ;c]j?da4&nMHk(*t$QE0?FoOd$P;Sl$7(lFabBSNgqiX"motI5XZl;+(P2pjoC*h:n %,npA[&A'CrP]flcV,iB+<9teP;SmTYmMCVI").6`a7*EUA5#;RE*FDONb/c]Wo!iR7YUrZ,a2X'J?lY9>g-*g[]PqSC"T)Smj%%t %c\RfY1,63eMm4$W-B%S"@3_:l(i+h#*&&?>V$"L0lZ47ede%3f+EgLJ50/uOWiS=4(Ll46_qdTECdgg>,]-.,U%:#J5_hsIDG,%- %S<@_0)6Ys6./N62W^g'J:i0Y`P;MW,7dYN5'tZX!j:\Z!@/+<`b880TlEYY[q3;be2/(?t)DsK` %8dH7D2n9Q]U4k;br3Dbq&-.J)"-]_c9Km2LpI^sG_eh*@[=q^lMsi[]iKpsA(^4kn[V!'r-(DiMA@NRoh\#,6*$i,s@hA(p>(Djk %NJ]'TH\uSYJ_2%>`aR!`C54G\;#-Qj#u)itOeT11',m$A%2;295\*:[%KI)lPO-DCo[,Bo_U%HSSN9,O6GluQ0/Q/*/Zg[gK='eA %m1l:(ej_KJdg^U3C3d/@T5OBT:\X4m^'W$a@VR.AedtK&;>TmiNP0(M6"!$#OA7:r*>=n"jl%RuA43a5VjM'gJ;Y#t]ZO9L_K__3 %&/]%#AtjnhEcRpo,+b\OCEk4d-,fBfTgdA_ILe,Ohps\70NjAsb=dhSbMZJ6WQaR*Jf\8Wq+Hm'#6-C?.Zs>7Zq%H(5dnV#d_1El %$5c(Q].8\Gq!^1tI=C@>kWQT5&-+D\iR-80iKR<57*A/9:E/P_2#9D+P`FQ<>%@*nZtfVG300=JB&RU`(f_ZPc[J>.U!%QETk/Ij %[rK&\)DetsZDqSKr[jX#"YfDD<^+CL0iFSN&N`B3?)[FO6 %-9]4b'>:^2p2(f@l5\h$N,Xl!?dp="QVQ;-!lm"/O4Q#uhc6L1-Y7B02Z]t3]ANUJ]1LG5N]k'D;[VMl!W(W^i"F"3R*> %=k7T&e^@1n:kU[aYoj;oH+646$DPZ"4WCFt$N_\a19"mh&-2S/%pY$Da91U=i?9JB:3Z3?lp=d);tB2?S&-@XL7Jd:!b6*Fp=CZp %'K(]?[nL\Y?g\_$?.fgMq=M$`Bbs$sOD;h@-/F5^Zh3gegr9hEeHJ:ecuBKIP4=:sBA]#qUB"WM3*X",A5gV"7H#4`R\*I9g,QKuEnn;-n*2JCu2c?cuXNboMXLM+dYK,aMti,/7LY5se?+(ED'2_L72&=5F$ %9M!ekMWrrNoaoE<-DN9UD#*nM(0bra=CPU+fQ,\5:+]&i176j\Q*S]9;'(1hur-87Up":^LFN%D]_YJt)%U&`MDS9]^Tt=O0+,j-]m=#6FCGV1hM@`t>KCOm3Kp!q5,6./CB>0R]B8"p= %#UW/Y<*#A$!Q5CO_f1WOXlJ;BOMR).rp4jN3ALp+p/W+%g,.77/49f]/n?D;$^`/AHEGMBro),MaIj&;7o31VI=Z7W1.=AiH1aD_ %>5j:GmWRI!bQj;h)]bHE)Htj0=lIoP'ppr;*,_-,?#g*hO]PWB,#o6gV_:qRQ[eq\L49?bZSG4^/tdT-=@(plfD;!H9E!.]+0MFC %1GZR2VKGomHatU_Y9"[KMk>P`Qpi#1,UGXj\l!<'9"n-V?T0&4?q6KbT.0s_lYrm;s,Er.gc@1dpb\e^1#dRsR#RZA %25nEp=?ilG[*>7@DhB-20J1crZK\Za&a$n+P2c(E.sj$S5JY#%9"s=O0R#mVGJLQ0SjpXREQ=;&S>EqQWrp?S4AKU**6sM[0T*/8 %B+[.O9UJ;Kb@af?IL8lFdU?m\26&I1OA*qj955I3TPU0t@Q6A=@<;f[h[/3o@MGu>2RD7pb1/HqcH@BSiRQ,)p/"3FiGBPeaC<'g %d3D:ep=Y82,XFWBbS7HMBUnaTEG/PV&B.kBAUP3q,[19\NZs!Mk7.@/!RV%9R:Os-;8K-#4L==3Hbl+(T'k7ZGr])c^rhDPqOmutRXg-\@;WFa+*',hkL*I($3PR'G@,a5NkOtaCj%_8Bqr7G= %Kbm5A\,;fGMhrVAKo*[aM;9Sna<#>[,!kKp);4\%VbX/qMm3t"gR+BaBh#`;ZZOA!*[#B6%5N/4'fgoe4D0=0kL;796g./3-4hIq %&rDlU\IBM0=!=Zr6_):j/6f.#JT5Q^2M"^oP=a73e\:7XcaWYf\d4DRI3B8,D=%^6,p5;&b$)7h[#f[53"sM:[a&E(fK4h@_Q+H: %;RLf*TcpHC6i]hFL4R.IoKLt4V4?"FSs*hl0jgQ$iRjfnpSqeXgFMFP1G'P&_D+Wha5b"7C.mZMC9$K@^Ih&Tr4I.A*e&Mr4IRJ4 %0^A8\b4GI7bN?9g(lHi"$,jnUO"?>0+i=YY8j/e)d2\.DA6VP^S&=U*-"=G@O9YF/j%N/!*-=[__#D3dMFDY-2ccW-8]jW4aj;.5ISc$-)a%?lZ@b#X\EI= %o'FSQ1p&?LYZ:B1J=&bt(3q5`H/+*Rg+dR_L3\J?QjLHa`%Hfa:?q^2W5=c-9P?>aSLF7$@\YT1?kVcP7GD"bBg!:p&Re9[@4i(Q %rVgi\?tNt/#P=-c1QU3[H9-!22h:S_TWl`IB/;7IbQfiD43+a/Kgm7)(_G"XB'S=3>]4H:Ha]W\HV.Y96KNZ[riM9"r5RBeC %0C^)6RuqgF^u`S[:dTrFTU@a5Cj`O@$Zepm>+o`4.KOMF[bOo@*%So`dFPeeMKP?(4/iDm_3Wo=m_0Fg8:=PLU@dR9jqI:53(c(U %Y#B/)l)dmi\&L.,Pn>"eM8$2anha])2s3]Y-i/:r*lFHZW57FA8KOMJkTml\=FoC_[4I\]l#,LW5&$$cnpGMh8&P7IcsMU=DNA4e %\GUIZ-gO=R9jrpZcA%$7(.@++OA.30`$0og0$folO>F.S"D59s2d6VO#+<>S?d"bW]oh,MD*l@f3r:6fd[h_4ft%3;bV_SEcu'Q3(=4S<]12<%?F#U]A.GY[.`R4XnrZcnir/K_RkaN-lBtlW1jQR %:/6#4[jZ,o(Tq03;?Y2(jnf4\`b2]n?.F\h1VIq^_l[q&qITkN9a:8\DfoEM-!O^Qb\BEGWGn2?)(:C'dY0[sFU6X*Pf658QC5EF %_O*>0>;jY=h@3Zn@#OELQ5WA%2IXdtb*,ljb?M8`SV73C0CO]K1OE1bW]Z,gA]9t/^2G[r'7e=c>:-d,2U(0k:a2qH>BVF&-mH+t %`nA]8`32V#$Z%J"&XW6kUWK0?O6"k9Ek\1>7!HfJ_$iO=8GPG8eSgiHD'SM55SJY-aFe^Hnid4]+3O%"c28j4q`HpQVle:ZNC[-9 %eZZI1=T)3f"\`L`U"(fdIi)uQCC])--&%35#3?1+Se:"7"U8Yf>EP?hM6"sFG?oX"[j!^\P*@IF";<]=5$?%6mmWO_(o$bP=m)2C/?STSf\u8e^-+2q0+9=9q>;0QumVoc>ahSkhU?^c^0#$F9eXC9R*UY#[W*47:25:#\ %^Sk>bcJebbMlJYd<1C(&l\hbPfJ<3;RY_u1erZ36:^?t]iC<\Wd %0M:^;/umJ2$?*uaJW$Pe*#."(93-c&?<"&h5"Z4\/ha65)`__s7VQg=29(iYODMXV;74g4Zs"+,7Fe1?j=@MUhX)qqf(>lDeS2"' %O^(k&.u0JXU2"ICiR^DD;)N@9ZML#)j*43pjMP;'D&mQjh2A9f!&V@QgLfrb3<3L4/tugCU^(F]]42)4@7L_kSa"(m8q;WLCR1R* %@kWm/H8^?1:3WK*%dW<"ak[5d^q'5 %TMNik\B2feH8]c%ij[@B#qThG?68\0CkC_aq,D7&SkVK3%+dh;SkXTJq7"eY0q5+9c8LtsD"MD/]85KV2UeuI=DO.kD6bgjl.Iug %jW!I;==C1t%6N5Z9Bk&?X\N,Ip@iK5-V;W2&2rTRRC5l:-:lE_H5"#^l#*#]]j4WZdB<.eF[S"m&)IbT\-nUXhXj.;?g+`VpFq@EkB(i'58lE%`p?C9,.:M5U^R^rjQs'I6oPEjSCh9\*>Uuia*$ei> %Y4@TpG;cTn\+96/nm$=D]l@pI36@-ahp3-`=9KW2-=^:&61bg.j&1UP2VE=V)<5b7E.[SPD3H]gm2^BD1<.Q^[]>@,(n\HhmM'BT\CUEN1E#6*bkdlCN0Dj; %peJi=3\0Tq1<.RJ7sC:SDQEKhef!M&[q4q`@sg4\8QH_h2Y*$FOYO"sJcCjknK$O)6,pEeSGRa[@pF^t5F+$AkK`qk1WBmlXP\$; %33!6&-M=NZRka>MlgHsnIE)&BEi^fI`YFk7Ssj7QA":%$)2UJfar'<HA:03_e1ct7$]c&?Xt %/_+FeN,`^ZY+NfQ2m1ZAbD^EiqrrpHrn8,*j56hY6_6%#+Lpq;qne)4CH4[Qb;V2rNUGo]D8s(GNp/@>mH/VnWWQZ_IFqiF34sk_ %(GEJVN,eiWeF1FqR:hIo.Ep+KN'"*m&Ne&NQRE9U7sZ]M()c.:eqUJu0lCGDfjVl[ON+,enK5ji7r6lR#*<,&N6=/1fXNHaG/cLm %B4M5bitsB4#;X"YJ':#b>Rr3GN,b4(%e&?TWU+Ra2]S@d+3P.\gHgYo<-Ge, %cJec5lu;R(lmb)%DWc!=>^!WICob>8H["0%Ec/CW26cuEE-ZK(>F9W)*DVo's5!$\9kO>7AVXK%f'akG>Y``P1B3DHLWd6e,(KEF %lu7M%9Lg$%Yoh.!QN]`B9DXe;E2+9Fh.DFXA=+I]%bKF!IO7.(G;nWOAVY2d0=F;m\EWCW43J,#F2PJCkp=UbQ^NAq7.m"`K-1*6F>_F+Mcf,28_e!48/FdHOlu65?muM"7PJrT22`k7^7IYBOiVKY=T?%L$Mc&88G.2k2.6Gh_S(KBU,lB8=[C?HD:(OmI$)d$hNQ43\8%K97/AT?@^'>g#mK_r]Zm/WT3R450mNt##V2P:SFuW?)"_q/#5+@.%@5e`5Y4Nqh![Jb' %0goKj)IMElIsAAN!GKaIm#S0Y9&q;"WZcG1XFpi0pITH/n9apF>-933#MK6Endf*]Wn=aX3HYn>REB4H1"(@aee$;3rj>V09=6TD %(#IN+O=0RX-lgA*^2u_OAK9<7#Uc*5Uakb31T;t+\/@<Y>?/TmUMl=FLS_s9fZ.g3,!0tnOm-R]Cj`p7_6Ho#;5;Khsbb!\= %*N9i'iqrUmj(M&P:iBU8u]?N90\W02:&Q0]8HDm,''etqKiQ;QL`)f4U5cDRcEZctD)S"a!6.]/5j]r.@> %a)$Zke!Kb1]F?$-lJ2cb>[kG"2Zp$4$%g7>DZ#0OqG(k9_T-kWZYaLb-]Qa!grj1RjMTJiP&N[Ar&/$/^/+r+>o-;?_Sa"99tSUg8V%*O@4F/Ij#'5Eq%dS0\%[c8&U`0@q?V"D<BP_A&B0*b9YP7[T)m4PidOC1bGcgE"hl"btU@H`D2DU@.(67P3m[kJ5$Z\2[@IX %!:qh,+J5@d?Ctj2#QST+)5>p9j'4rYHZ6%XZ296#DQ7IG/Q8p8[oAtVp1/gs]?*d$l.;Z7oXk#)B!#;#VNTq@7Md2@2'SGW+;im: %O.i%H6O5uPSE(MW1g-p/!T83=(bA:GSdQf9+jT5#?-Bp`;H]k7`IrHe&pqlRqRb2pGArT9l9-!AO*klH?C#j\[[:@tm33!/+\Gjr %chaO1D6+8Xq^Z+3qGp%kE59?@;8ekn#qs2L4W:jqE&_I)A-B5?3B(Ej*LSK`:eO-`r;:-OQ>Q+-B((;hWek6/#'EJPmZX5('"3bi %?@+c<\NmA:Z=X"&>@-/\/Et>J%ni*J4(HGfr>Mp%*E:GIZdqk(Z7R'.Z7PKQ^m<75XPY%&el`]\gXU5`QGFR085qAS>;fg2K/Hj[ %c1C-:tZSe5*q6(9b\^*Wrj)%5$;.i.CglG=h0! %G-ji/Bu,&;H8K=Z/.,+6N(&)h@D/XZ0CCC_ZS7^q'd8\Z6u8'cfO3))j.Z& %F,.`ndS&aU4-+MuT7N:RBAO#o8DF(@>&GrOk&[p5R+-'Fe"hmS>^)WQq5!X&"RGAub2-_iQi5(AH=1=lY7=*!chh;+@j@IW2`EET %\sa&;%QC4Z^>i*5Y"#[gAd5+2H`=i$iDn0G4Q;g'J3//rl!22JZ++^0Y([W1`o0+]ZH:Vdq:!1?Su]l'rSFJeoqtIghn&f_FFYKko_sb(43U5[9O5nO7%G1,CjiS=`hb8HdIPa]_WUhpGh!UE+b5UChWn^j?3GrjYi&9UO5V6&-rp*lE %;GX-1Xo6WZ8g+H*HS,I7otui$ik05uT-g!jPe7H+g2;O'YQGuEhuY7NJ_s%S)d@@!4.2sN^1jq\LQBNTRgq5Ec0S#p)W_XdO7HYe %GSj6@BPW!>nASu%nS[.>ZhPW(5ppu;D+]=<>B\boO"#F?gRm(k.f(\!KE/!,ZG>_18\/)7!X=('m4G5;!N'EgoWGM@R1.eT`6!qi,J7&U-Y %N=GoR@:'s`5^b^8Yc@X8=:Mc$Hmu?@kKhBgobCS/k6jHmPRDcg?M7kn2_@^j&5?$&pVUJ/k3Y3roIh#pdeuNJ1k+'Zj8%OTphSit %lG-3CYP[bcm,fTs0'"oaG.F>oif0RCn\2cfn*_?21Dc\AfO%sfOjZXO2s^Dn[m/gAJ`QHlU5us^>cW@]aYf-CpUS6e=GMLn6+hP) %^W`Qn$6Q,=^hB9%3KLb0q>,L]XsN%GQf$\9(A!')?6b)M($qIup]bId1k"=2)`h`.L]>H%94PMfS(I5$<()Dp.6$n'biq]mO[I %]fPn?M7>[5p"QbW/19RjjMb%\pWl;qr7M; %LK:DC57+8(Go[*Ak3'g-,gS4FH$(&-Gjrqn=p,!sgPWmr-Wr(A*l@u?](L(mlif/'!Z^1t\'Jk9+8XoFd\F_^bdOaZ=O?/>AYGLh %C&+feFq&90;_uU6b!uFL](]1B[?iEKDoP5QM*N+$c8#X8VQ2c[b=GkP0A]ccJDZp3:glRMc,[/]0>q3HHI88bde'chh9^_=YW7>I %'CE!M,i<+mC7WW*'_:)>A^,A$HSM6I:gKPh:VcuOn(-s5j]D/K>HCPIf>Z^#46$WK,h"fu %NujebRGk#?J;F(2c9=@\]QAiuR+1?LZO+BJ:6lrur9d8qTtB\]R,cZcB?<)X>fZRH2fH8V`P8u %$@$m-A3:GT(V=NK!*eH>$El7r<5UkFaB[g'SauTVdO;lfGB6$:C.I6Fb3)rZK<)l>l+A-8Mgg)>D`2P%o)8CH(/Wqp4"Uk%r_@Ic>eNEIHrhrJgd0?6I)-O[#)XSdj=i`c+5MKn`B6S4FWM9*kDH-u&-QOe8@ZAd^\R?I:lK6@ %eHVO\.U;EBjNJn.r\[5:#5eW\[dB4#KlQ*MYg>^o#3^0>%67fGIWl."!p8n\1[h7SXRL,Klr!AoU)3p&Jg?432"LZYobSc)`[:g-+UVYhEhH/AKdq7rjiEr(O-AGkO!^V.tP=QoI\[0#CI.(k:@S6gNd,0,9D: %JA7X[A4*EZ3I#Od;;Dg4p8^a"9&'[FY0-37LC(f\\BFt*8UX9N^m)a+;ZH8$0umM6`D/C;4st:[C-WPj7$-d; %T(k3)Ef!Ki+eWONnf>c+n^EP*Xjd_hCOC6E6"X4.[<":Vnd6RENG%@B=el;rr2Yff'3(5):k=B'&no*AO*UdlrTYV9j!=,#?HC[/ %P,Ul`QtrgjS)!,#2[S%:d80<)G5h;Bl5^q\ %9DLpb2\!4n%!7dB!s1I9#B]n-!poC-+V81qT%r^TH!KWaI\hPtPRG:#-AY*A_r-"Ij?L83YQU4-3q[ZD'*K)X>bhP?l]HccZn5R/ %%DmdbdU'I`oHlCH[DiQb4n4%O;.C^em>^^gFRal/PgUX=.:c_WKA4(Eo:#UXB0SH2o[P>ilNJOM`J`cS"4.4`<(MH94Q+p)r2Jo7 %e*W"lZ1qQVqVsaCs#e%Zl'+>d09];;Fh&ssl9RU43:AJ+k2.EFkJ=t?m65ne!s4Qe"!RHZQ("$9cPcH%43@63p,IV,*:0fMhSpi. %4%n@1$h'_`j!+B7Gq?_4a4"k9lt3%0HO_tW.5,mR78fo\I=;+lX'YF %A$d]JAnf"^rFg;J[T_E_)jFq'!XIDDpL17MH1CZ9T^QKnZKo"8OC,em,qjutYii8Z545IfT1HHijdGKCpFQsQf06M0OF1+ %=',rB$b8B#(N?q>]s>-%=9BPT.0RqXJ-e.u#8Qt5e5.Q=hYQb%T5;b5oh7.T!7-cXqj#p^Al&>W!@mr"C^']Cn]d?:XUliPj#%Mc %\;Xh4f=i^SSi:+MR&FC:G9Hqqum7jDoa7qVCmbIX2Tp!O_DJ"tbj\Ge$)Qr174_bFV\g>71-@93K:B:&J^M(*?K.:=Hn3rUt@>1V!K/\P/eH %L#Nrs>0-7tOEgUX6U1<"HE/WjG/Us$E+RP!6$"%:`Kt7&P8&V(5'Gl5=:tP?(adQFAmX:?LUW:I8*Gnig\[n %#O)&m!U-En6e2fND\:(KbGWtI9tgB/7Jg]m4e.H#3-LIQh,<4sc)+TG-eNgJ(q>pi!f1Fa2ckMC2&:]UV&2ISq^[+Z8.=.`du%mi %asdAjBfr4>%e*V88jMOj:9(g=),A>@RGM6(T+]rX`o5-L;LBM,CI:(\WteqC*U7K+RpH76E9!uFht<]Q'Urm2n`:[qeu2j;h\Mm@ %k7JcGE+*dUpL+@rZKg]^Qs1kG+Se*ibf2Y-j_-!)eM/WqBpJLl6O;J?)p;TOCiQHCkr8:8n4gRQOEi\RHWgEZV/:joGnu %oLe5LBc=b8la&7mS^n5g*]4\(&Hu:qc,OlDXSVT-!Yl-4m2Roq9&Q*4?dW(k*u!PL>,BRCUmf>lB,l6VV?CG'cRYb>]qQrAc,+-l %&/(F'a_tSsc54nXJb(']lFagE2P8Kb;f]Bb9hLuioQtmUaV!\%Rh;GJaUtiOFdKP@?ZY:]"1^$K@g@_.&`VHd`J>=E\nV>cg^-!WK.amL4s#C9/6Tms!JWj5cO9C7O\ElAqF![@=5PDB4FUM %f4*11&Y3gPI?>QNJ7IZHAQOWB;WW<(`c/'jpM-loU("V=\@+W)@'7ptL"3L=%]nLHqE?YsY&GtXC>On$GNT1dp>6:j"T\Bq:]X*q %FPR:8RA!2#_+gjti@=`c&d6GO\IY.U>!O@0p4:G;IU=)'?]GK2ZcW;.6_537phaB>n)8hu6J'*m\rVpH<.+3K0"]CqZWhZTAcf6` %_V"Um0,hpZZcg$uk42rZ:qbDV'@C]!g<6?84Hk.8ac-Eb9JSW=I]K%LSdSa%9-i?0+:Xs%B0!kk3`o_VV"1mjK1(uPrusm %V]EnI_s8/t<'i/]F*Z."9@>eaSdpe'`K/u)WIO8LJY/&lT]O0tV1:(8-iT([Q9CS!]3+t*.Z)ImDj>o;e0]o+2rH?CqUaOhW?:lS %nlP;S,DG/)igoN?S`]@5=IVLeang\EA+PeO=-(+lali8foad(lNsWroB*!/9_8)OUhZLijQ=""3:PsV^c&m.W %`qf+-6ik-gJRlr>IkEWmI0$"U+,E!!nNp5q%aa57<-I5bHA=:8C_Di$Gq7RSVSWgai]jAh+?Y`J.!(3d<7Sn`1s2piY=K[m,N;O\ %8YFOd;fMK7AT_#;9<$d#fsYh^0MX&KiSl1+cc(=F2Zu/t@)Q@B3Df:Uqkqd[[P"f1(N84c*-`3ahIu&Z.fW2NTC\WOV`,gq*ZmN& %<6B"EbTq\oImf]8N+;g^,,$J:?KRpUk"2 %dn>%5E(E/*_;^\=md]]eoo$c?_)[t9Q0:/`F4jUQnht\Z;`Ddu,%P]Y*B22*Il(SI%ar+g-H5mq39\8l?3UWbE!uuJ@d'MROJ`48 %),;ZloS6NDcf3>SoU:4m,M1+1eT5&sjBc.RKue!*9E6"3_TC2_I>+hjfDOfsmi]>GIVY71]h'-1J.[LW/XE:djFe*s]n-XT)9cps %A07s=Rih=$:\k",gRuFHj[Q3cH']qap$'m_NsGcXpd%"jr<-mcLE%G>7uqHUkMCiGLq2*"O'AIVR\JB[<0@HhEho$3r]Z %gs+sG,(J."2#roFV"h_]q*dI9pm=44D"pnd#dVs)Im#6da1$EkE-U)%i0C%1E(kGYnI1*&].l.)2Un8*%c)u>\Ts6]Q[&o+]?19a %K3[H0J&OJgKcDTC>JOU5km(T6h0kED;$XYqlXO4bc*tq+Sd>Jh)Ppd!5 %'].pQ):1h'q=5gl*0*G\Y&H^To%jL8$9A!8%Yk_YgMjZJmmah?$C8$%:RpJGaT.XR$"R,o=eOb,7jb1@ZKjLF84>T(#aCQU?=o;4 %.Q@0+3Bs&Dp4/fVIN\1'Q,Cj.;JNUpKAnSLTB9>Vq?"IS2&b-G %/=5R@PUsEZ2nBn_a&5u3"k4Nb^ %D$P,56o5*:6'#oJ5)mh9"*Eq:q.eYGk5B7N.jVVjr)<0KnBTA[GNMFA;DDf>RS#V.\!nhih/JS*AFB(O16,267alSQ_4o/YCn(CL %]"$sBB'ap49KPVPkEn:9_ssJg)Iak+:^K %09e,DX'+Loc49YorL1gVI/1>Dpt>6&=s4ElB7aB5Qs>PoNTd$'0/K"QEr!j]&+(Huc4H#4 %4Ff@a:5YC)-V#'J.,KL74[DZ8%TJ(K+3(rMKYSBfSDY[ok`(@O+`*8$*_li;"u8a1Sk_SKjqa %7Ge2#EibhihM0eirKOZ:q-!QW%Y[l>$5>h\-i8ukpg7Ll\$I&a*+>_qO%q1RZYlbOVugPjEH.i;[51DK8-rVfeC>@7g%rNP,d/Gu %U5p;[5V;%O=F#2cU^M">EMq2me5!=c:'ksNdoT67S0p#]:3Wk,2)KTdZ2spRk?lAE1XAqOdshj"6nVRo2BG3m0/Z_I!)]lC:15j2 %ZjVS>PY0*?*9=#6T$GW!Q;,3_27uO1F=X!g*:iXS9%gTN!(90='?/3^i0WDf2mGda7PVoVr,Ds@`0ER1:&819H9&-1.mNHY5>Ql% %@95([s5gC7%pf@TjJ?P1RsM`(,3U/%#X#p7EW0u68`2iWVKK=L54gc)Z2rf$rc;!&T=sTDeb^FF %;Z^]/o5QdAnV+gWVrr5`c3n`21uk-0.2^stVHCMAoDEY*HsJ]`kPCr;$n8g>-p]78/\Y"ZS^:C&PBR4Rr;#P'hc'`Sd>P1XiogqB %MFH[ei\$]\hlLC#)2RahNiYCBV#Cm3IMs1Hk8O;-*R:^>Y3qJ'P*[sQ%Dj^_HO>te$'"K_eENa,@u]ql:Cf?&%AY-!gcsoSjD[#/eY1T<&SdpNft?*d/7?a8$fcDF5-N1W3Y9;g&c?Qen$\&$VA5Qu(bI\t16*9fS&% %$NZEmYh]::PDb@IMu6KfR.alaE6`n5L.hK`P]E;@872t4dH$r%hRr)XD/fC@HVL\Bip %7Bi9OYqG4(k)c<&Co"B-i)b]%AVS[VW14l>T,!e2SaVR"G3UcfeES%0Gc&p:\.]S3+FK`K\4T9__^:``rM0m=#?$+C@6Y3N"M[>, %(Z3X_SFP!4KmkPSNVG!-)[:$s/@+Dmo+0Z'W>?PY8AX$iscfY[*:-:5C4>s.nA\Wtp\PSpn@3+E)o#.0o5qQl7CNg8K9CMC^?dVW8ZlVF3;^t.X %'EV+5]WLlO1-Z(n!SHP64C5Z[@Uk&ZuB %^rhKO8YnEk1[#^<9u<$/R]4X)j7fV;r$;%7?KsD[P&qj:XEECGJ9nab0;B(9LDqX^hEHlFK5BkILgDB&3q5-G[6K3S^BBOujUqK5Q#Gg$SZFJ5YRfJ.[Y(lU]Mp3jm*pq-Xs!aaCtN-DZ,Ndj:J"):HuK9$V.U;2d6LRBMn*LQPod',-3_2K@BL;!if^?02Rk'dD>TejZ6C0V=F6?Zd?^9)j@'J?Hd.hWWZjUi7r2VS!>b+l(m&(;RRKS(C87A`R'u@[d %IbL,=gm!JBakam](f&332KBjGDs8Uh3Q[tI*r1i-rqXhag6fQG%7Pd)gs)-N7EXqe'ae?b`-![6h0qcHo_(?i%0hq-n>:gi_^T#= %`Xg!@_;`imGtNT6gC(@B.f'=ZBhTn>DQL=-r"Gt2E,;Eq3VNp1ZVO&P[Nn@tBE.)L4J("9pKodT?CDF(6j:&Vo9.E[m_GO(lmg<( %0Zo;,MP?""8pgKJNb&uMJ(n(;=Sp%*bQ&"A'+@<^;F'L\Oc')A;S'>WS8<>Etk'*(p')cZodgXQFW][B8LJ1YO5lhM3=(p0]'XX8=/ErgHc194dU9QH!n.66 %0F:nAQc,PtTugX$:^X%DPK`3GFj=NQK,jD-5Kh"jcP,A6#`f*-61]A/jkXTJjl7S',mSS]".XFJ`?D!Bma!'q*Wm``iBogK"^E-pXCj>+=[%"i$74Clt_\GKRQOUip- %+LD8@A^<(+$Bs\#q5/LaX>jm&bh<@2M48(C/`F.#[Oh&#n_EAh)0!G\(lSI:I9 %E4m`I1ciFlj0k&of&b;j5`rso;4JU]"E:-+ne %L1;t-,6jdkHO^R$l_M5>qV:%Y$g"m@ERJ2i(3>6-j\3Q^%p/G9>1&a]nnm8LgPjS`Aja7_f&2f0#.;-q)88*ZB+Fk:n>BdV38T2# %h)Hf>4r'#:595tB)pmR\pi-?6nc9g1l&7[,S51f&Er\G=F[VD_?m6AC3lB'A0GY$DS23["U4Y0MSbZRD(IL*KY+ %4J@C,)#QgOP"5^SnS$A(G:9%OJr/^khoaL:k&D?f-dXsAN<,qB2B33>87'k=$5=&uU.s#,dZ@HfW%8gpS%a?t)1K3@:YMJTaHbg" %Ouo2+1M8*Y7BjqcQF\a&qqA+f+DLM5-KOSa]%,5TH\G6A=o\FUU[C)A.DQCIfYac5_?g=\LfRXY!+p,^7 %>eA9P>tnVAl5a[0!*i&?]>AKoYLZWVVXIfPq6h5cHX\LDn[fl5[(j4%U2-g3?UZU!27_F@j>=(*SnAS!N*po%k?(bi/413'-;$u$ %CIIV0PLQ`tc7"%J/*M\4>7aD%>:QJW8M+@1Ya"grGQJAWefo7D`j^"qF1Fc3+83oOMQc2Uq/(^&4S+`$[:u2U/I#SA6U5`F%-iBt %9"ZhJqnTEh[C5S#dPZfBc/:"!YDZ!qOm$;Ij"%IV$@QaBJLWXSI,&rS___5"AOpa_EejgHuAmVHJQ!-[)R?PtThj2E< %^a.9h[kt8iJt#mci[IY/o-=bMbZM`s@T?!.6!LIb;G'Z!cOoLOJpg1X/?'^.D27FB+nJH8N+(PpBgRo/"Ym[%3A;_32Ui?-4DaMm %7]Pn.])]4n0AU#CUYn&],lmCmV$e957cknJ_bh?W"%quYA=cYnKhfEXX#Y>I8hFa"pkc9YdgRSUOPr/<6hd-c"S_+r#LYk0D7F#lOH90>ilY-okY`&T!i*F!EuQmOSpIqN`MV5+5rD;@?DdST %?4$k+RuUnNc%BkBkGA@_F@ %ZOG!^g(+*HOG!Q\m)&cb.;&j0j*qUm;ML(li.&pH(j=_(9lR2$?Xq.mkq\Gc0rpbhZ"`ZUoeYr[".2j>)h=Uc$^6!R!/?N'Ejc&p %;RG0*!@D@C!#'J=!5*25:BC?bXKC=sZ10GsfP$RWq\W7a]LrK:-JBo$Hna'S&UD's,bCUCU:V`!!K$>t>m4.pQmEYr)lO %N!rMn*pedPbp5aO+=Z5^.G+m=Qj`=a?jRK^,T@GP==Q"gX(l4e8qms%/QLcmO-?B$Ke#u"Lc0IZ=e'MpNSMeo:l %@(Ror\#G#cO`T77*H\+)J[A@e,1)RD&/Oq$cr_%./@]7LW0HdGkOcW;:C'*%+,0ugKX9&ZK#d-=%`]acf9RTJ$jk@/O72cL;.snk %S60aBbT(*CUN_T.,bO#WV/m5ti=s3kd"H3rNO._>B4d-''Uu?N\#,:8iPV#-r/Doo]ZN!B+U9eqZp5k.+B@"rCC"X8cD'6jk3ViH %8"kJe(c;3,cn'3FLoPL&@Yn]=@c^jZKLH"k4$AB81WC0Z,sj'M$%At`_lZ7Rf8P-8(cY_$9,>bhdB#Y;iW^W,+OUfL,#og>j@g_H %$UmOFiPo"D5b)nG;-;l4R.u3)D5a^2TO`%JmNZ(<6n`TeD"t5:]9rN5?/PWr>a-uUMuQj`ddkX)+2K]VXd_oJ[)5JC>cs7>Wu %qrP`E]DF%'k`fWHE&JT7j\0.-*#M,ah`ATl#'9]!"Qi1e0aWU`._X`Fe?Sbe],bOp2q3@K2978_IRr"f%or90=jMM&"!SMCG#uen^4CX&))<`ahko!I5f= %UlOD=_=C/SLJuh0JN/L'Hq)a61c3AE,acl$?tI81He@RdDk3LUbZ7W<& %"+0b.fY^9MhI"0XCP+K4`g[gO-ul@ULP;j^g)+PD@eM)gfIj;D,2 %=+OiV(84Q(]eQI!_&-Pj!8GkXN%phU\Fg9aWs:N43a[Ln]V1OH^tMZWE2s)ldpGBR49g %PBdn==R1+6&5>CrN)p42/nPK-b?3TS85Z;9TPNL7Ra1WfO]kV&BYdT$YX*.EL7*`1.T1=u>L77m=B_+(`!(eB[VoPPr$:DD5KBXC %f_:tGKsM@3Ieg,9+6BL.>Q %N_u%uZ!JX^k^!RK=f<0Y-_JBu8\IQT5Yn'3']gtaJBs(^]eVOU269BUb;#1"S*T!8Hjl`,`)378$6q"]W2UE;Frr?;WD[V2''A4l %e5S`@)L#,gkX*jrl;;'66'Y>"V8OW<$>_4//I$7Z@?cqLp]PnX\h9\8-C''nms86e:t.G+s&C/eCbGO %1ieGVD4TsCodA8g#GT9W0Ca_"@C`]V,`=$?^;ne\#e(mCc4#s]F[-^Xf18i91XhE:D3P4OrCRV]?T=Q>XSf;C+R1nTl?,I6;$B(V>s+Q %3]&.c@]!`qSj9Ds\ML[XZ&07[nF,9GqF+ %6\!oeld3NfBQD+I>jHqqT4)5#8^)=+Kot.MYW\N/Er2n@s(h=/bRODu%:Qd4DfO"gS+.lOmiUH++!SK!qW?>/5JMVrs21bD5Om4\4WgW)hP^&NogZFp3Zs7sjeVgHW(:]DSi/_fhtYJ1%c+)_&co!C*0~> %AI9_PrivateDataEnd MM*}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}})}}}})}}}}~}}}}T}}}}SY}}}}T/}}}}/)}}}}~}}}}}}}T}}}//}}}}/)}}}}Y)Z}}}})/}}}}S}}}}T~}}})Y~Z~Y~Z~Y~Z~Y~Z~Y~Z~Y~}}})~)))))))))))~}}})/~S}}}})~)))))))))))~}}}S~~)))))Y}}}~)Z)))))))))))~}}}Z~Z}}}}Z)Z)))))))))))~}}}~~))))))Z}}}T)~)))))))))))~}}}Z~S}}}/)~)))))))))))~}}}~~)))))Y}}}T)Z)))))))))))~}}}/~Z}}}/)Z)))))))))))~}}})~))))))Z}}}~)Z~)))))))))))~}}}~S}}}Z)T~)))))))))))~}}}S)Z~)))))Y}}})Z)))))))))))~}}S/~ZZ}}}))ZZ)))))))))))~~)~}}})~Y~Z~Y~Z~Y~~Z~Y~Z~Y~Z~~))))))Z~)Z}}~))~)))))))~~)))))))~~)))))))))))~Z)))~}}}Z~)//~S~S}}}))))))~T)))))))))))~T)))))))))))~~)))))))))))~Z)))))T}}Y))))ZY)))))))SS))))))T~)))))Y~))))}}}T))))))~/))))))))))))))T))))))))))))))TZ)))))))))))~~)))))))T}}}S)/S~Z~/}}~)))))))~/))))))))))))))))))))))))))))))))TZ)))))))))))~~)))))))))T}}}Y~Z~Y~Z~Y~Z~YY~)))Y/)))))))))))))))))~))))))Z~)))))/}}~)))))))Z~))))))))~/))))))))))))))))))/))))))))))))))))))~)))))))))))~Z)))))))))))T}}~~/SZ~S~)~}}}~)))))))Z/)))~)))))))))))))))))))))))))))))))))))))))))))))T~)))))))))))~Z))))))))))))))Z}}~)))~~))Z)))))))))))))))))))))))~)))))Y~)))))))~}}}Z)))))))~Z)))))T))))))))))))))))))))))))))))))))))))))))))))))~Z)))))))))))~~))))))))))))))))~}}~~/~Z~~}}Z)))))))~T)))))))))))))))))))))))))))))))))))))))))))))))))))))Z)))))))))))~~))))))))))))))))))~}}}~)))~)))~))))))))))))))))))))))))Z~))))))Z/)))))))))~}}~)))))))Z)))))))~)))))))))))))))))))))))))))))))))))))))))))))))~~)))))))))))~~))))))))))))))))))Z}}}~~~S~SSSS}}~)))))))Z)))))))/))))))))))))))))))))))))))))))))))))))))))))))))~)))))))))))~/))))))))))))))))))/}}}~)))~)))))))))))/~Y~/))))))))TZ~Y)))))))~)))))Y~))))))))T}}~Z)))))))~))))))))))))))))))TT)))))))))))))))~~)))))))))))))Z)))))))))))~~))))))))))))))))))/}}~~~S/~~Z)/~}}~))Z)))))))~~/)))T~~Z~~~)))))))~~Z~~~Z))))))))))T))))))))))))))~))))))))))))Z)))))))))))~~)))))))))))))))))/}}S))~)))~/)))~))))))YZ)))))Y)))))))Z))))))~))))))ZY)))))))))S}}/))))~)))))))Z~)))))))T)))))))))))))~~))))))))))~))))))))))))~))))))))))))~)))))))))))~~/)))))))))))))))))/}}~S~~SZS/~~S/}}}/))))))~)))))))ZT)))))))))T)))))))))))))~~)))))))))~Z))))))))))))))))))))))))~)))))))))))~~)))))))))))))))}}T)))~))))))))~)))))))ZY)))))Y~)))))))))))~)))))Y~))))))))}}}/))))))))Z)))))))))))))))))))))))))))))))~~)))))))))~))))))))))))T)))))))))))Z)))))))))))~T))))))))))))}}/~~SZ~)S~ZZ}}}/))))))))))Z))))))))))))))))))~)))))))))))))~T)))))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))))))))}}S)))))T~)))))))))))))))Y)))))~)))))YY))))))~))))))ZS)))))}}~)))))))))))~~))))))))))))))))))))))))))))))))~))))))))))Z)))))))))))~~)))))))))))~)))))))))))~~)))))))))}}S~~Z~ZZ~SZ}}~))))))))))T~~)))))))))Z~~T)))))))))))))))))))))))))Z)))))))))))~~)))))))))))~)))))))))))~T)))))))))))}}Y))))))/~)))T~))))~))))))))))~))))))ZZ)))))~)))))Y~/))))))}~))))))))))~Z)))))))TT)))))))~)))))))~)))))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))))))))))))}}S~~Z~SS~Z/}})))))))))/Z))))))))))))))~)))))))~)))))))))~)))))))))))~~)))))))))))Z)))))))))))~/))))))))))))))))}}))))S~)))T)))~)))Z)))))~)))))YY))))))~))))))ZZ))))))))T}})))))))Z~)))))))Z)))))))Z)))))))~)))))))))Z)))))))))))~~)))))))))))~)))))))))))~~)))))))))))))))))/}}S~~~S~ZZ~S)/~}}))))))T~)))))))Z)))))))Z)))))))~)))))))))Z)))))))))))~~)))))))))))~)))))))))))~~T)))))))))))))))))/}})))~~)))~))))~)))))))))~))))))ZZ)))))~)))))Y~)))))))))~}})))))))))~Z)))))))~)))))))~))))))))))))))))~)))))))))))~~)))))))))))Z)))))))))))~Z))))))))))))))))))Z}/~~~~~SS~Z~S~}}T))))))))))/~Z)))))))~)))))))~))))))))))))))))~)))))))))))~~)))))))))))Z)))))))))))~~/))))))))))))))))))Z}/)))))Y~)))~)))~))))))))~)))))YY))))))~))))))ZY)))))))))~}}T))))))))))T~)))))))Z)))))))Z)))))))~)))))))))Z)))))))))))~~)))))))))))~)))))))))))~T))))))))))))))))))~}}S/~~~~~ZZ~S~~}}~)))))))))))~~)))))))Z)))))))Z)))))))~)))))))))Z)))))))))))~~)))))))))))~)))))))))))~Z)))))))))))))))))~}}Y))))))~~)))~))))~))))S~))))~))))))ZZ)))))~)))))Y~))))))))~}~))))))))))Z)))))))~)))))))~))))))))Z~))))))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))))))))))))TZ}}Z~~~/~)~SS~Z~)}}~))))))))Z)))))))~)))))))~Z))))))))))~~))))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))))))))))T}Z))))~)))~)))~~)))))YY)))))~)))))YY))))))~))))))Z~))))))}}~))))))~)))))))Z)))))))Z))))))))))~))))))))Z)))))))))))~~)))))))))))~)))))))))))~Z))))))))))T}~S~~~Z~ZZ~S~/}}/))))~)))))))Z)))))))Z~)))))))))TZ))))))))Z)))))))))))~~)))))))))))~)))))))))))~Z))))))))T}}T)~)))~))))~)))))~))))~))))))ZZ)))))~)))))Y~))))/}/))Z)))))))~)))))))~))))))))))))))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))))T}}/~~~~SS~Z~)}}~Z)))))))~)))))))~~)))))))/~~)))))))~)))))))))))~~)))))))))))Z)))))))))))~~))))~}~Y~Z~Y~Z~Y))))~)))))YY))))))~))))))Z~)Y}})))))))Z)))))))))))~~)))))))))))~)))))))))))~Z))~}~~ZZ~S~Z})))))))Z)))))))))))~~)))))))))))~)))))))))))~~}})}}~))T}~}})))Z}~)})))~})}})))Z}T)R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}})))~}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}}~)))Z}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}}))R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}}Z)))T}}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}RR}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}R})R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}})))/}R}R}R}RR}R}R}R}R}R}R}R}}R}R}R}RR}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}}R}R}R}R}R}R}R}R}R}T)YR}R}R}R}}}}R}R}R}R}}R}R}R}RR}R}R}R}}}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}))))}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}R}R}R}R}}}R}R}R}R}}})/R}R}R}R}R}R}R}R}R}R}RR}R}R}R}}}}R}R}R}R}}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}}})))}R}R}R}R}R}R}R}R}R}R}}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}~)R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}RT)))/}}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}}}}}R}R}R}R}R}R}R}R}R}~SR}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}RR}}}}}R}R}R}R}R}}R}R}R}RR}R}R}R}R}R}R}R}R}}}~))))}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}R}RR}R}R}R}}R}R}R}R}}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}}}R}R}R}R}}/))R}R}R}R}}}}R}R}R}R}R}R}R}R}R}R}}}}R}R}R}RR}R}R}R}R}R}R}R}R}R}R}R}R}R}}}}R}R}R}R}R}R}R}R}RR}R}R}R}RR}R}R}R}R}})))T}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}SR}R}R}R}}R}R}R}R}RR}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}R}}}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}RT)))}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}}R}R}R}R}R}R}R}R}R}R}R}R}RR}R}R}R}R}R}R}R}R}}R}R}R}R}}R}R}R}R}R))}}}}}}}}}}}}}}}}}}}}}}}R}R}R}R}R}R}}}}}}}}}}}}}}}}}}}}}}))))}}}/))))/}))))}/))))/}/~)}T)))))/TT))/}T))T))))//SS/)T))))T))))S)))S))T))))))T))))~~//SST))))))))T))))TTT))))T/)))T))))))))))T/)))))//)/SZZ/ST))))))))))))))))))~~)S)))))))T))SSTT)))))))))))))T)))))/Z)T/~T)))))))))))))/)))))TT)/T))))))))))/)T)))))))))))))T)))))T~)TS~//S)T)))))))))))))Z))))))TT))ZS)))))))~)))/~))~T)))))))))))))/)))))))ZZ)))///SZSS/~T)))))))))))))/)))))))T~~)))/T))))))~))))SYZS))~T)))))))))))))ZT))))))))~~)))))ZS~Z~ZS~ST)))))))))))))~/))))))))))/~Z~~Z~))))))/~S)))))))~))))))))~Z~Y~ZY~Z~Y~))))/~T)))))))))))))~~))))))))))))))))))))))))))))~/S~~ZT)))))))))))))~~~))))))))))))))))))~~T))))))Z~YT)))))TZ~YT)))))))))))))~Z~~~Z~~~Z~S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))S)))))))T)))))))))))))/T)))))))))))))T))))))T)))))))))))))S~T)))))))))))))~))))))))))))))))))))))))))))))))))))))Z)))))))))))~~))))))))))))))))))))))~))))))S))Z)))333333333333333333333333333333333333333333333333333333333333333333333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff""""DDDDUUUUwwww333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff333333333333ffffffffffff""""DDDDUUUUwwww33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff33ff""""DDDDUUUUwwww8BIMPath.kkOpkkPkPkP.P..Op...PjPj=j0jܠjܠjܠܠ0=PPܠNܠN--"-"К FըܠܠFp׊׊Fp׊׊׊׊FpnnFpnnnn--tdB{c4~EtbEtbEt_MEt_MB*_?Pa<{bgj]k8nP8pb8rsqt)uPvhw]yiy{6~ Gjl{U ۲uPwDm}{ؤǒ<ދ_ W^MO^O^jjSSN"̲zދ5R4?ߕD㕐<R{VL?,r~uvokg_kWCYOH%<9H8ERZEZL8EyB&B\p@><{<8\4 Q0k(!rQϱ܀Ҫ `l) DzA_z-RN-RNJ)NfNBNBNBBfJ)-R-RB4̤B4̤E{j+F6ԅIPK wPN P RP蠄T1RW =p X XY YmZ}\\4_pb5pdpfzh.pklţl#mOro/qqU驽t]IvؗdyT>{Ϙ~75+B̤B̤BBzGvs[rmʦ qjo̤p@o:o+ZnPXl jdh.gvxf"e>n~e?c縝c$NadjX7WYދVmv$U)G&T?Ml)S4R1OKF B4B4C~C~E2WѼH LU.LU.LUkaDLUkaDGmEmqvCu~Cu~CCED[H{='MCMCMC+MC+HphE̚CWCWEtjEtjGjJ)jLUjLUjLU^&LU^&J^AG^Et_MEt_MKgT-!uKgT-!uQL-!uW1-!u]F-!u]F-!u]F!u~]F!u~W1!u~QL!u~KgT!u~KgT!u~KgTQKgTQPQTuQY^QY^QY^FY^FUFS2CFA4P5I$OK"MENKgTPKgTPLUdaLUdaLdaLdaMCdaMCdaMC^&MC^&L^&L^&LU^&LU^&MCMCP(SKzWeKzWeKzWe\We\VD\Uu\U-\T \S.|]DRb]_Pz]N\4MC^&MC^&WetWetY-t\(t^|tbQtbߗTdeH.(j_1 ^lk V^m* Kq&rwsN$"t3tw/tzBgt|tttRR{"!5y[Zv uMbzt%Frq2iN-okj9hgf3K{edecsaL`Y^ ]t[ySWeWe Wep sWep s\9ije|kaDmakaDtkaD{PkaDBkaDBkaDB_MB_Mv`k_S~#`^}!R^4|Z}^n{Xp^&z^ x]bx]_v]0t \ϸr\rO\{qB\p,\o\xn[ma[PfiZQ].[*We\We\WeWeYs Z˛<\+^qXǡ`3b5e>i~mat{PBBBw :Bw :{Pw :tw :maw :fw :[yWespWespWeKzWeKzfKztKzBKzBKzBeBe{Petemaei~ee>eb5e`e^6\eZ`YY]$WeI%WeI%Y^9Y^9Z?:h[ <]F_C>՘aG?b0?;d>ex?3ex?3ex!u~ex!u~b&!u~_6!u~]F!u~]F!u~dQdQg,Qi6QlsoQoyQriR.vuKgRzuKgRzuKgFuKgFoFjFdFdFex.ex.l+zw@U-!u-!u-!u!u~!u~vؗ!u~n(W!u~ex!u~ex!u~ex?3ex?3n(W?3vؗ?3?3?34"<4"<{Xp4"<w(4"<r4"<pˏ4"<n4"<lso4"<i\44"<h3$ex2ex2uKgW&!uKgW&!vaXbyTWS{XpWSWS)W-w(TЉw(TЉw(LA\w(LA\~"Jcq}Hs{XpG-ykFawFuKgFuKgFBeBeieVhi ߏjJl?Wn~oSuopӦr- stw"N"z[}F+ť;uKe( T&)e(e(~Q:>Fdda+@d-cUi{ aZv6*qZm!QejUzfe=[FcbbH=EaraCU`2`%eB`|B`|I5I5ux1Jy1Jy1JyJyMقH IM IM ..!]888w :8w : w :w :w :w :XQ7888H]8H]H]<?ֹ8^JytJytJy-Jy-m-9---XXX X8X8X8‡e8‡e ‡e‡e‡e‡e~R{JyR{JyR{Jy4"Jy4"m4"94"4"4"Jy.Jy.8.'.i.i.i-i-'-8-Jy-Jy-JytJyt_8eNiLBiLBiKziKz'Kz8KzJyKzJyKzJy1Jy11Y1818188YJyJyJy4Jy484'4i4i4i4"i4"'4"84"Jy4"Jy4"JyR{JyR{8R{'R{iR{iR{iQiQ v1JyފJyފ8~48~4'~4i~4~4~4w :w :iw :'w :8w :8w :88'icc: LMNu8*8*88S)YYYY^_+8+8+8I8I3I>ZYYYWYW_I%8I%8I%8h8h111M M 888O^8O^9O^שO^'O^'O^'‡e'‡eש‡e9‡e8‡e8‡e'X'XXYXXX‡e‡eY‡e‡e'‡e'‡eiLBiLBAqiY-=RR--m-Ay-i-i-iR{iR{L NW54'JII4"4" i4"4"i4"i4"!zww :w :w :Yw :w :w :YY3"&Qv:Qv:Qv:v:5H*"*1YY11j1s&A*5A*5A*i A*i i  i i i O^O^ iO^[O^JO^JO^J‡eJ‡e[‡e i‡e‡e‡eJXJXXdXA*XA*XA*‡eA*‡ed‡e‡eJ‡eJ‡e~4~4&~4~4A*~4A*~4A*w :A*w :w :&w :w :w :..&..A*.A*.A*-A*--&---O;bA*tA*tA*HA*Hlw'}44ũ4j4A*4A*4A*4"A*4"j4"ũ4"4"4"II`.NA*A*A*ފA*ފ:oKݾ_v:v:dRA*A*A*+A*++<KYv:v:v:v:dRA*A*A*׊A*׊R׊d׊v:׊v:׊A*8A*88 8/z8/z8/zM /zM M M A*M A*M mm*qo}xbrE&+u~wyVGwZJDu~sqp stiNb5[Pؿ%UUUNZCH]`KD/TgA]>?;O64o4o..- +Ϙ*I)A$')w9)=x((K.|G1rF7>4E@)KgR8X\S_rbeFj%Al(vl(v..7<....7<7<kkk7<kkk%tlllWlWtW%WWWŤ/Ť/%Ť/tŤ/lŤ/lŤ/l0>l0>t0>%0>0>0>lNlN;e (4\\\\ Ry!lele\i\ii.=i}i}i}J}J.=JJ\J\J}i }i i i ki ki kKzkKzKzKz}Kz}Kz8BIM Path I @RI/libhtmlparser-java-1.6.20060610/src/resources/logofiles/htmlparser_rgb_2inch.jpg0000644000175000017500000013701110057466410026426 0ustar tiagotiagoJFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Macintosh2004:06:01 09:53:50&(.HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$Cy{/?5SЂi\=1x.-洶z=TP;F:NDIM/فoɾy7EmLz7ND{?_J41yGa_cox~T7n=?U-e@u$IRI,_ҝT΁WOI;Sw\'K,xq*1AЃ UX=,';P#|Bǯ&`GwU.}0{>l T@͹0K;)NU&s.!虯ck2k?.1DˋJQ޵u61KZ_I;ZZZ\n~պ^{2.m6578V.g`l踵c8H}7nϷZW7KTێmT@yg˿W=Zt̶9p=[ cKZo~7c6[e_Y21h!?s&@{_,Cݏ*Y5Gex؞[c;;67{6.|ޓ)7}ѺV':mw:۽W?3fYQ& #s^Ƿ=9>\H1Fâ~oRe!oV3f\Yz{iYS*m6/8dXPd$wU_?KZ?UzC+XNj^u,Gԍ|&e{#A?u`R tp}v}:?I+b~rՋu.,[ۡkwU^2gԜ dtm}WyhɎP2݈_f@U̍Zx^| I-FXXp`9itz?f`z7Q^WiU][m kCG\kZ`aua.ފtz? k@rq2W4 >ϑSϤϦ~/X=e1u6h;jq\R6_ے}=|=*iȌQδDcErq7Tz~k8ޗ}FjTBYz_NwGsfnnv"SKf~2[D iyN7! LrpO⊈Я zG[GEͰ{qk+ڹ>PGa0x]r*\.?g}PwO_̇3_Ӄp>-4ehC'Hy.<ڽfC'2yf?X|qD 'w}+2[cy>0Gtսx^C.n:'T#?X7>OJGcbݔ?7թv?US־}b -}a<ьMr?r'Ut/=w?k:o.Kf\~YoHr13Fۜ%5_PQ.1O-1R-W3mkOeI7 fֱ?RfC!#$];tzf[n>;ߵ[]S7p䞞gg-qz#]֯%w~uϳ+ֶd:-\}?o: qk +=H 27.Fmwe>kuA oeW!& e>_U R]*ҲfFYs].ש13a9ˇOO̴pGv5ՓoA 汭_Y]>]Z\hexָZlEg wծvu^M[\u}#Jd6׹?}KUWhaȲS=G1@/x}֣OѵzdH$qBtP@4.y}l>ߋ,]UwDi>ٹb}dszr-հ!t;}Yv;jι>ls998x!*1n3'[X2:oՊz51K6~zg5Pgc"n;.ߤWzݹk#skc˟-r9r&Al1'סt˳,w?Qu~яw$3UEC~~gQneb,y&=X <##BI0 [gV{wwfQƤ\8͏%;- BsTI%)$IJI$RIr^>WwOmZ~q-sQ]_ο9dE@Z?\_/䱿Z}^nr̆;{OZ]?pMΫblnF8swYMUvkY}/-{w}z􋾦`-`}kkweWN^Ok[2,oڶu!Bs֪=?/_M$|G, 8iTn>ӭcrQYF_?EX}=~ܺ5sCC ATgxHWc2Aw=:f6ˁ H64q>`aZY˥?IU$ĸ5}L&׵pc1g}ZOʸ,xh!CFڵJNK>t`Y[`pݹC߫, m6[SXmkL4;of冷gm˰MXRRv[6UښӺ&ol7OU w :_F7Z |=$RTI%)$IJI%}x_C[gVNn;]m}\mǎY$#d}x_C;9uk0Kmo\׮K|dd?ck>NGd?Yc[cQ蕷&έc}kT~sO~<_995Ye!oQ起u&];[!kTG׹Y_v)$dIH?ʃ`W]'c3%s|뵻l\ֺ9.֬ǫR0sL~g$aq eQ/ Ϋ13cu7q/mdۿfjA;ں9bwGyY'mWيehX̺F[[?Olt !#Mw$gF-nXfI/X_uzIl>)RI$TI%)$#} [oVm w\?:4,ǎY$#d}x_CmZshkZ?:,HNFNF2rl}ZuȒ_gן/X[zRklkgsqU?{S|/ޜٟVYv_7ftJԺ[gVkT~sOI,%FR6OI$ĩ$IJI$RI$I%)$IOTʩ$+ 1rsHnmz6oqz>~g)+{KN_c>-qӒǿ2s,J}u2읟,ggzJU$v|_N?m~I|%I)%I)%I)%I)%I)%I)9Photoshop 3.08BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-06-01T13:47:55Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQhtmlparser pmsnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM @JFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$Cy{/?5SЂi\=1x.-洶z=TP;F:NDIM/فoɾy7EmLz7ND{?_J41yGa_cox~T7n=?U-e@u$IRI,_ҝT΁WOI;Sw\'K,xq*1AЃ UX=,';P#|Bǯ&`GwU.}0{>l T@͹0K;)NU&s.!虯ck2k?.1DˋJQ޵u61KZ_I;ZZZ\n~պ^{2.m6578V.g`l踵c8H}7nϷZW7KTێmT@yg˿W=Zt̶9p=[ cKZo~7c6[e_Y21h!?s&@{_,Cݏ*Y5Gex؞[c;;67{6.|ޓ)7}ѺV':mw:۽W?3fYQ& #s^Ƿ=9>\H1Fâ~oRe!oV3f\Yz{iYS*m6/8dXPd$wU_?KZ?UzC+XNj^u,Gԍ|&e{#A?u`R tp}v}:?I+b~rՋu.,[ۡkwU^2gԜ dtm}WyhɎP2݈_f@U̍Zx^| I-FXXp`9itz?f`z7Q^WiU][m kCG\kZ`aua.ފtz? k@rq2W4 >ϑSϤϦ~/X=e1u6h;jq\R6_ے}=|=*iȌQδDcErq7Tz~k8ޗ}FjTBYz_NwGsfnnv"SKf~2[D iyN7! LrpO⊈Я zG[GEͰ{qk+ڹ>PGa0x]r*\.?g}PwO_̇3_Ӄp>-4ehC'Hy.<ڽfC'2yf?X|qD 'w}+2[cy>0Gtսx^C.n:'T#?X7>OJGcbݔ?7թv?US־}b -}a<ьMr?r'Ut/=w?k:o.Kf\~YoHr13Fۜ%5_PQ.1O-1R-W3mkOeI7 fֱ?RfC!#$];tzf[n>;ߵ[]S7p䞞gg-qz#]֯%w~uϳ+ֶd:-\}?o: qk +=H 27.Fmwe>kuA oeW!& e>_U R]*ҲfFYs].ש13a9ˇOO̴pGv5ՓoA 汭_Y]>]Z\hexָZlEg wծvu^M[\u}#Jd6׹?}KUWhaȲS=G1@/x}֣OѵzdH$qBtP@4.y}l>ߋ,]UwDi>ٹb}dszr-հ!t;}Yv;jι>ls998x!*1n3'[X2:oՊz51K6~zg5Pgc"n;.ߤWzݹk#skc˟-r9r&Al1'סt˳,w?Qu~яw$3UEC~~gQneb,y&=X <##BI0 [gV{wwfQƤ\8͏%;- BsTI%)$IJI$RIr^>WwOmZ~q-sQ]_ο9dE@Z?\_/䱿Z}^nr̆;{OZ]?pMΫblnF8swYMUvkY}/-{w}z􋾦`-`}kkweWN^Ok[2,oڶu!Bs֪=?/_M$|G, 8iTn>ӭcrQYF_?EX}=~ܺ5sCC ATgxHWc2Aw=:f6ˁ H64q>`aZY˥?IU$ĸ5}L&׵pc1g}ZOʸ,xh!CFڵJNK>t`Y[`pݹC߫, m6[SXmkL4;of冷gm˰MXRRv[6UښӺ&ol7OU w :_F7Z |=$RTI%)$IJI%}x_C[gVNn;]m}\mǎY$#d}x_C;9uk0Kmo\׮K|dd?ck>NGd?Yc[cQ蕷&έc}kT~sO~<_995Ye!oQ起u&];[!kTG׹Y_v)$dIH?ʃ`W]'c3%s|뵻l\ֺ9.֬ǫR0sL~g$aq eQ/ Ϋ13cu7q/mdۿfjA;ں9bwGyY'mWيehX̺F[[?Olt !#Mw$gF-nXfI/X_uzIl>)RI$TI%)$#} [oVm w\?:4,ǎY$#d}x_CmZshkZ?:,HNFNF2rl}ZuȒ_gן/X[zRklkgsqU?{S|/ޜٟVYv_7ftJԺ[gVkT~sOI,%FR6OI$ĩ$IJI$RI$I%)$IOTʩ$+ 1rsHnmz6oqz>~g)+{KN_c>-qӒǿ2s,J}u2읟,ggzJU$v|_N?m~I|%I)%I)%I)%I)%I)%I)8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 166 139 1 72/1 72/1 2 2004-06-01T09:53:50-04:00 2004-06-01T09:53:50-04:00 2004-06-01T09:53:50-04:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:782e7c4c-b543-11d8-8f03-eb6b4504ca4f image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@     u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺ^׽u~{ߺ^zL},TTT<5usMKM cS=D̑C(f p: d$&cVsu]뺪&Yg3Qn-`lkI o >6dzپtSy~oK)pWz{TIɶ5+d ޴_?۟:ևoSO?<:#39u[7Ed;A_JeAFxg^MfΉ >:EoLs|\eW!/sTψm7A墥DK4߃~2 Ur0sEgkv_c;3iSޝ~O_Oj9 GGͼ{ ѽZ'DԾC;3= D%hw8l$!BIrx*H;Nz}ӧ:u{ߺ^׽u~{ߺ^׽u~{ߺPjk SOIS5Dp\qTE։I?櫡o1-,|^MT%-YROGUPQz֚պu{{^׺unYۛҴoNn)mhhkӐr6yO,ܓ"=>ߎbKe:bHHtI(Rt}mM+-.'p0.Ft0Vע̱pPܑ >$FW(?Jzuߺ^׽u~{ߺ^׽u~ݟ[wuvySU8>Vn ۺ}>jݳ/=ѝ"ȞYCIJH[Ns^ek#i$sR4PHbid,T2Mx뾾z\lUqxU-QoC01Z֍&Uy*cGuMh6XV"'^ Z"EH,ށ$ ^c<e?׽u~{ߺ^׽u~{ߺ@yt.# "n*zUf ,ʮRYLj!b,i96R%ZkY[K]~NUSy[ua)xkc`XɪtybDI1IJ:ߺ^׽u~{ߺ^׽u~~RC=Ttoč˸:_A$b]:VJ>dNIfӔsS{)iė3eZ~w W }_Im!ܷ)?Rt~=ǝ~{ߺ^׽u)O_O8fG>ɳ~CYUfq<4: e4/3)v5{O$rw2}a{xhc-(gRB@R}z=ݷK +-h6HG*+h:!|O+;3ȝ7ObnM{ozgv=ҏ-e(k֪9H?Pnyhw-v}`RHGC Б'*0mp\n-% i<퍡RrO/ ]f&yL -GP.cKWGp}6yG@a*/~}X6;"%#?"uoQk2TUxrU(xji*x*iCG42a߁GEEwa?Uu2eL˱ndk*aKjҮճQN"O?ezߺ^P;Y?#_ GooM]H?_`CZ'W2\3o_#dڹNY;;_mu20: ŗ.Vs2Y}־1P|͉wiiw/t8L4 WP-C Ų79$![-ťib *OeRGzݷYa@cQ]h+ПOK6Q~O=wpfAg1SMOEIf79iú+F+z潟,nCRF$($(h@HϷ]n3F@ Tԅ~dWּ?e1n|M;>!6zEF孧\0bU}čMC?{=Ok}fCn$Ra| )8(4jv ʜӸr,݊ƼւcBEp3:Y­bj|$鎩}D{o-%Y)rfs@?[{CCw+{q yUۡda=;eE[)|u^>?e`x6}o~8*AY>uu鬏 ) l:-d1x&  q6}rIƇXIB2 8Ԫth Awql TV WׁMϫ/#K}w[[l˼kǸC| y?zy{vv3p6_‘$ pphz :QP*>Ρ-{m>ڛcn VڛP<.{ Y ~3#GԠmVQࡥ&cUȶ>S]h mllDiidcnf55'2[W,JM]$(G0f)軭?')wf"#fSrmzʙ*?bwu~K TRƓ~ u|PGhֳ!W-L_/k!To90 V] 9҈8(crHo ĆZzx­E?w7'Ny̿m]Un$?zJg?ߏt\<'ʹCn| 5sz2otۗu\3klP'͍KBոe3 ~!9p6_AG!Vh#"B0S]x;t>#Yj`W ,^ݩRQiasu$815;%l2/GSBnyOeK{-cUI4gHP G ¨܋~{utBwPވcj3cvmOdDQLCWFm5?KrY#u GfY?_ݔYt_͑ҋ&3Tf3:e SP.&>H70{zunU|7咫{HǗ|m5 yI]{Gx>b&G;ӭr1bZؘSpmᝬ8*z֠>O+PQFaRx.]i%y{o[dΨ񠙉O'EFU1}Yʛ:3ҺC#N8`̫|g#>I;gcnݽ;9KYW+vbTd)ethY6 ߷sw/%\ɳCR ;dh|)s;Eu1 jh%VJ=IQ7AH,Rt jz]m f؛gs+麲uf{OK+QI5fsvRl̷ԩ)A*Ԥ_uiō32Z\$kʺ<^4rS*M>zP_T/?'lnq6j*(rǹy<'Udc.cq"I{nϺ-7^@D᪨#37OY)6ֱ $A*IOg}n8zm.:<^7VjLN2!$"T2t7 [vvwcVfbrYrIcwha@-À5&$D\I juHZڼ <[/dok_7\h3gmu[޳Cx}O< AmP[߾Ju]_>/|Gjd7%88y6-ٶ&%/A[NoS͜u|\YZoOMX|OEۆӶ[JD0i5_LgMOQO>O񷾲r0/[N7/4brX' c߮rڷFm,IeeM2tKS!<:9wHRHT?պֿk:Gyb yu¾fػ+3!\"JJK e=m;nw`rTy#=GW6rs G_P.z?h.vo~#ws"w<_I#s<~?!66FiNkM8Zy4a|-_xu_֭.^-?'r+GĽG]&FwTJ ox ֚`R JKS~q8atqO5etqAB:݋t۴ܶ5kVhe _B:w^Wr 'ITt{:JVP${C⣝ԙ'cpM#Gi{w~~(ff(Myd;FX4?ɔ> jkɜcsG0ټ5u.SWwWTq*gdh2>?wX&mah#ke`U)EAџ;Iʛ dJGֱn>vmm]=M^'M|fXY&)Y~o?{dOmvG!x0`ArQP;Tf˽:&aBI:vihizZI\(f<61of?Q'#觞ӹulmkO_:XxWR.N?=T Y#[+Ś/bjniDAK,IXbw>b'oMϧxh  OR@HO@m]}VոCScwΠ v7xizz{$h'g:2qvaݹj+Am%Tj" ЋUrPL4_~_[9?m DL!kj{>h]9;Vmju>`̋}]wJmv{}syՙWRS]YjjhO]YQY͟n=_s;[uVI_JFH344 iǩ} _{d!UEK*x bO.?w[US5h2? h">?$/fiO[n3Y >\{;?A|&bL`zp>oP߼ Mկ_۫?oRCC1yi}_ߣ+q\7i'rtfF69k)*"bH nC4<Ne$2(ADg#(E9ko9]05 =Dos $Tui Q!wzjҪG2*I!Pj ^n;,a+Rd$֕W0M1ܿ OSܝ v6ܙq뮷 QǏ8U_)+&uOrWWluf3ôRɮpX{?Xޅ;o_dKdZ1Wp3Qgvw OMLA*'?;?qe1-'=?el+ooݟq7-n y`iTPz1_pc}d-#3$Βkt:]9b-# 2B8TW5s5R&_ ]M-&j }m!k>v:~Z&.yq}}%JTP y7<ĮU|㮃ȯ`/|ne6{sw *j޳ٔ=g58J}UNngrY^ 0̈E8{#ζow7q&,wNگn̢꬏Yw$xͫ{kjd&nSN*NhǬ_z e=gxmn30ًVC|< xtw[[m? )x(?aoW]ϴzeMOC6NnY h٩p*:DTtDV8Գ>'Xm~lw6k2J`pg!EIN: 9n+xY/8q*zO/#^SJ?\MevFF_P嗷Sy|); [q9ݿ1l+Cqܶ'#5~:tdI#pCGP{soyO=]ZNɺܲ:0ee2 dH=dw/#űmȅd[hP`z4_*_mgGvOvKFgn)r8;mTPdh*!9AGQӑ/9m=t{Ub yٹKnENѵÐDnA#}t|u˟y.>O㌸n[y^C$;7bUnL.6$v6*C{byn }7=Lj! TTЫۋ]l de\To=_<:pu_Fwf`(-Mfw{o,-.Zڹu]PC^J Jߺ2rmV J&( 줩 iJ5ܖ*Gs 3EUrVtE{f1mRͷΑ I"E Jۿ OYe{?C_ =#klEVf7~OI"8I!d9d=ݣy_u-txVPXN}7 =o2H$rNQE?@KwMo{wDV̓S۝MR}74JBnGSG{<},>}L^ᇪGU [yƗ>ӆozGz_fa]ac6HQ#ÍSSS3ݝ'w]t/kCVWgsh<0I +T:_{.ҫk*;zglT0؋jScmtۭF ?:eH#_ߺ^׽u~{ߺ^׽t{Cnv[ xbK{mZ-KۏUc*TL"{sV7;me) VHqWF >a=74QJԩ:֣#oKg,bzzo.̙+ "Fd)wL4ėiFQs,rKA; ƘX)]cdw ˔OCzW~`ooEn.>J*ii4# dSLtEDz,+}_Gw{w_tԔ}Oוn_pR%]M]V3KJ){i4j>cVWf,6sdg;O].6j~C٭Ӂu8z|K'G;1VEQFQٽ;tx̌^DF 4n_swah3I. )WZ1ym$#'Td:$FPPHXHu-bDz <7J7V-fuXu5lc+Q܂PzuRE,>ӨKiy}%V?Gc=_|w_o7O{uWUOE|ߺ^׽u~{ߺ^׽u~P/]O#uYϷan,Ħa2~n<-fƫgkYvh+No lXv].`i6ev.q,(ub$+{,,*֚fD_,:Ytsg%cKn|:e JDk9ߞxH\8Q221?ʜl/ka7v=˻vӊ,en>odDR7ӬtDKh)ϦPS^neSmO<~wo ?9;v3bǒ8:f[E0kg##+8t|i 7awfݘ,>pvPf:emω5lR[__Oci<Y$O!rjF=R+yUe+@:6oOqrf,.JQ HqŴ{klc ,/:SŤkP\k[i@J?+6^auoxӃmsmfIrRH#4,If8IOMnL_G}iMc0{~p팦礨W|t2n)6%(ѫU 4cn%U] ju X$X#hZQe8_m穦Xw iW<?/_>?N? \S?^ۭ_7bͱAU={m'p]ݜ?,'+:To25@Mdݖ7>O(Mtf[94mrI! $`ݥPw?[[p;eyONW4'mھ71=Oۙ$Ox,t}W ~0>o!wԧUR!U8;gfF cpQ% #z6hq#2<=ĝ zu{{^׺u[ym>9wim=Hks[pd)Xm7!Y*jʑƷ,VV7665䆊 388'NM,PFM Hd@?>;'q̭MqY-֑~ (?Őd,q1Ŗ`U*(p#6fTt?20hG7RcQUB C$ )o7̃&:{^ߺ^׽u~{ߺ^ j*jʈ)( Xদ6zd! ; &2)gc@I'̞HhZ=?Ss+ww;>w#M%X-~ePQS fgtXa%HD;|B#550B`v;+߰6cIX#z^ ii?mneOsw%m;Ա8h.bajqJ!3NUI,u=߽ps 0$>mr\ºP˼gւFē͏Q?3SS#yef'|ȦwScf-$ni2;nr8Q<14"~dE7Ke֗m(xNZxI7Y ]>?7`p9oͶ|]8t'~;|~yEkc\ FݨW-&Fru!{#.yLʬEtXde% x^=m7+Z?O_(a)W*6|PFOR̉uy`TM35 lx>Nb˭#I^ZZp=B'5ǝ9r!2 ~g16haE7:u~sQL*.B  ϸiv [qo($Џɀ= "}UaQ_CI URR-$ j%IQ@'%G`ӥ wOQ7o|蝕QL$/썵_1^:=nO_evnQ'S.#`,:+6{M y@54~+Oerd-'_Ɵ4)ƮÞX5MBml(f-mݮⲱf>J<*H}6?O͋MO;kvQc*򝥷ޛv,>r_ϯ?_c}ܞ~uXnpJ)GaٷZmޅA2?KY|'ѝܸkwoQSI'L ]2R€H$B&_Y-mtF܅%-A1_qEQ~-M/߽YX '偹D;մ-O;K`ߑ15?.`ѥɇG4.[ ;Dba[BJ2oi>߽gG~v#6񞎬-o!Q m׽u~{ߺ^ߺ^׽u~` jje jjh#igVHmʬ쨊K@I'̞HhZ=OSt|;q):ZovJjꩅ5GiVŢx: UR2`Up.G/-:na 5Pr$p7Ǐœfɵm2aE_\_Wsm~W7:Z2kG@ᾷ4#]>l`xfJ<*H}6O1콉OI^⯤H;I;\(c@45LܯS]n a,- `<~ ˶|i5]0$A~f-!׺u{{^׺u{{^׺u{{^׺ߺ^׽u))]}?~t~ϸvq|cÉ:E#JRwіv𡁀+ .رTiB¯BWh;ic8o3P08 kw|m=7rH0[_E0"o\NSU &DKRf6n;0s>בty>dݶv"7͘(? uY?M.pź[wSck;4qEXI\n1y0; S4G`ij$][پôBX[[)I`<~ ˶|i5\$A~f=Yo^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽uߺ^׽ug*ʿTyXOdMe<_/_a)oyUQvǯ龛tϨxWħfq/ݶ'|F'V-}:?*W]%Knx?G?чhv>u?wi}//ݧFtO鯴}6y^tbzۋ(~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^libhtmlparser-java-1.6.20060610/src/resources/inherit.gif0000644000175000017500000000007110056155704021767 0ustar tiagotiagoGIF89a, DrjԐ;߀Q@N;libhtmlparser-java-1.6.20060610/src/resources/license.txt0000644000175000017500000006357010056163434022035 0ustar tiagotiagoGNU Lesser General Public License Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the library's name and an idea of what it does. Copyright (C) year name of author This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. signature of Ty Coon, 1 April 1990 Ty Coon, President of Vice That's all there is to it! libhtmlparser-java-1.6.20060610/src/resources/java.header0000644000175000017500000000174207733731336021750 0ustar tiagotiago// HTMLParser Library \$Name: .*\$ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright \(C\) \d\d\d\d .* // // Revision Control Information // // \$Source: .*\$ // \$Author: .*\$ // \$Date: .*\$ // \$Revision: .*\$ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or \(at your option\) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // libhtmlparser-java-1.6.20060610/src/resources/cvs2cl.pl0000755000175000017500000022151707733731336021415 0ustar tiagotiago#!/bin/sh exec perl -w -x $0 ${1+"$@"} # -*- mode: perl; perl-indent-level: 2; -*- #!perl -w ############################################################## ### ### ### cvs2cl.pl: produce ChangeLog(s) from `cvs log` output. ### ### ### ############################################################## ## $Revision: 1.1 $ ## $Date: 2003/09/23 03:41:34 $ ## $Author: derrickoswald $ ## ## (C) 2001,2002,2003 Martyn J. Pearce , under the GNU GPL. ## (C) 1999 Karl Fogel , under the GNU GPL. ## ## (Extensively hacked on by Melissa O'Neill .) ## (Gecos hacking by Robin Johnson .) ## ## cvs2cl.pl is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2, or (at your option) ## any later version. ## ## cvs2cl.pl is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You may have received a copy of the GNU General Public License ## along with cvs2cl.pl; see the file COPYING. If not, write to the ## Free Software Foundation, Inc., 59 Temple Place - Suite 330, ## Boston, MA 02111-1307, USA. use strict; use Text::Wrap; use Time::Local; use File::Basename qw( fileparse ); use User::pwent; # The Plan: # # Read in the logs for multiple files, spit out a nice ChangeLog that # mirrors the information entered during `cvs commit'. # # The problem presents some challenges. In an ideal world, we could # detect files with the same author, log message, and checkin time -- # each would be a changelog entry. # We'd sort them; and spit them out. Unfortunately, CVS is *not atomic* # so checkins can span a range of times. Also, the directory structure # could be hierarchical. # # Another question is whether we really want to have the ChangeLog # exactly reflect commits. An author could issue two related commits, # with different log entries, reflecting a single logical change to the # source. GNU style ChangeLogs group these under a single author/date. # We try to do the same. # # So, we parse the output of `cvs log', storing log messages in a # multilevel hash that stores the mapping: # directory => author => time => message => filelist # As we go, we notice "nearby" commit times and store them together # (i.e., under the same timestamp), so they appear in the same log # entry. # # When we've read all the logs, we twist this mapping into # a time => author => message => filelist mapping for each directory. # # If we're not using the `--distributed' flag, the directory is always # considered to be `./', even as descend into subdirectories. ############### Globals ################ use constant MAILNAME => "/etc/mailname"; # What we run to generate it: my $Log_Source_Command = "cvs log"; # In case we have to print it out: my $VERSION = '$Revision: 1.1 $'; $VERSION =~ s/\S+\s+(\S+)\s+\S+/$1/; ## Vars set by options: # Print debugging messages? my $Debug = 0; # Just show version and exit? my $Print_Version = 0; # Just print usage message and exit? my $Print_Usage = 0; # Single top-level ChangeLog, or one per subdirectory? my $Distributed = 0; # What file should we generate (defaults to "ChangeLog")? my $Log_File_Name = "ChangeLog"; # Grab most recent entry date from existing ChangeLog file, just add # to that ChangeLog. my $Cumulative = 0; # `cvs log -d`, this will repeat the last entry in the old log. This is OK, # as it guarantees at least one entry in the update changelog, which means # that there will always be a date to extract for the next update. The repeat # entry can be removed in postprocessing, if necessary. my $Update = 0; # Expand usernames to email addresses based on a map file? my $User_Map_File = ""; my $User_Passwd_File; my $Mail_Domain; # Output log in chronological order? [default is reverse chronological order] my $Chronological_Order = 0; # Grab user details via gecos my $Gecos = 0; # User domain for gecos email addresses my $Domain = ""; # Output to a file or to stdout? my $Output_To_Stdout = 0; # Eliminate empty log messages? my $Prune_Empty_Msgs = 0; # Tags of which not to output my %ignore_tags; # Show only revisions with Tags my %show_tags; # Don't call Text::Wrap on the body of the message my $No_Wrap = 0; # Don't do any pretty print processing my $Summary = 0; # Separates header from log message. Code assumes it is either " " or # "\n\n", so if there's ever an option to set it to something else, # make sure to go through all conditionals that use this var. my $After_Header = " "; # XML Encoding my $XML_Encoding = ''; # Format more for programs than for humans. my $XML_Output = 0; # Do some special tweaks for log data that was written in FSF # ChangeLog style. my $FSF_Style = 0; # Show times in UTC instead of local time my $UTC_Times = 0; # Show times in output? my $Show_Times = 1; # Show day of week in output? my $Show_Day_Of_Week = 0; # Show revision numbers in output? my $Show_Revisions = 0; # Show dead files in output? my $Show_Dead = 0; # Show tags (symbolic names) in output? my $Show_Tags = 0; # Show tags separately in output? my $Show_Tag_Dates = 0; # Show branches by symbolic name in output? my $Show_Branches = 0; # Show only revisions on these branches or their ancestors. my @Follow_Branches; # Don't bother with files matching this regexp. my @Ignore_Files; # How exactly we match entries. We definitely want "o", # and user might add "i" by using --case-insensitive option. my $Case_Insensitive = 0; # Maybe only show log messages matching a certain regular expression. my $Regexp_Gate = ""; # Pass this global option string along to cvs, to the left of `log': my $Global_Opts = ""; # Pass this option string along to the cvs log subcommand: my $Command_Opts = ""; # Read log output from stdin instead of invoking cvs log? my $Input_From_Stdin = 0; # Don't show filenames in output. my $Hide_Filenames = 0; # Don't shorten directory names from filenames. my $Common_Dir = 1; # Max checkin duration. CVS checkin is not atomic, so we may have checkin # times that span a range of time. We assume that checkins will last no # longer than $Max_Checkin_Duration seconds, and that similarly, no # checkins will happen from the same users with the same message less # than $Max_Checkin_Duration seconds apart. my $Max_Checkin_Duration = 180; # What to put at the front of [each] ChangeLog. my $ChangeLog_Header = ""; # Whether to enable 'delta' mode, and for what start/end tags. my $Delta_Mode = 0; my $Delta_From = ""; my $Delta_To = ""; my $TestCode; # Whether to parse filenames from the RCS filename, and if so what # prefix to strip. my $RCS_Mode = 0; my $RCS_Root = ""; ## end vars set by options. # latest observed times for the start/end tags in delta mode my $Delta_StartTime = 0; my $Delta_EndTime = 0; # In 'cvs log' output, one long unbroken line of equal signs separates # files: my $file_separator = "=======================================" . "======================================"; # In 'cvs log' output, a shorter line of dashes separates log messages # within a file: my $logmsg_separator = "----------------------------"; my $No_Ancestors = 0; ############### End globals ############ &parse_options (); if ( defined $TestCode ) { eval $TestCode; die "Eval failed: '$@'\n" if $@; } else { &derive_change_log (); } ### Everything below is subroutine definitions. ### sub run_ext { my ($cmd) = @_; $cmd = [$cmd] unless ref $cmd; local $" = ' '; my $out = qx"@$cmd 2>&1"; my $rv = $?; my ($sig, $core, $exit) = ($? & 127, $? & 128, $? >> 8); return $out, $exit, $sig, $core; } # If accumulating, grab the boundary date from pre-existing ChangeLog. sub maybe_grab_accumulation_date () { if (! $Cumulative || $Update) { return ""; } # else open (LOG, "$Log_File_Name") or die ("trouble opening $Log_File_Name for reading ($!)"); my $boundary_date; while () { if (/^(\d\d\d\d-\d\d-\d\d\s+\d\d:\d\d)/) { $boundary_date = "$1"; last; } } close (LOG); return $boundary_date; } # Fills up a ChangeLog structure in the current directory. sub derive_change_log () { # See "The Plan" above for a full explanation. my %grand_poobah; my $file_full_path; my $time; my $revision; my $author; my $state; my $lines; my $cvsstate; my $msg_txt; my $detected_file_separator; my %tag_date_printed; # Might be adding to an existing ChangeLog my $accumulation_date = &maybe_grab_accumulation_date (); if ($accumulation_date) { # Insert -d immediately after 'cvs log' my $Log_Date_Command = "-d\'>${accumulation_date}\'"; $Log_Source_Command =~ s/(^.*log\S*)/$1 $Log_Date_Command/; &debug ("(adding log msg starting from $accumulation_date)\n"); } # We might be expanding usernames my %usermap; # In general, it's probably not very maintainable to use state # variables like this to tell the loop what it's doing at any given # moment, but this is only the first one, and if we never have more # than a few of these, it's okay. my $collecting_symbolic_names = 0; my %symbolic_names; # Where tag names get stored. my %branch_names; # We'll grab branch names while we're at it. my %branch_numbers; # Save some revisions for @Follow_Branches my @branch_roots; # For showing which files are branch ancestors. # Bleargh. Compensate for a deficiency of custom wrapping. if (($After_Header ne " ") and $FSF_Style) { $After_Header .= "\t"; } if (! $Input_From_Stdin) { &debug ("(run \"${Log_Source_Command}\")\n"); open (LOG_SOURCE, "$Log_Source_Command |") or die "unable to run \"${Log_Source_Command}\""; } else { open (LOG_SOURCE, "-") or die "unable to open stdin for reading"; } binmode LOG_SOURCE; %usermap = &maybe_read_user_map_file (); while () { # Canonicalize line endings s/\r$//; my $new_full_path; # If on a new file and don't see filename, skip until we find it, and # when we find it, grab it. if (! (defined $file_full_path)) { if (/^Working file: (.*)/) { $new_full_path = $1; } elsif ($RCS_Mode && m|^RCS file: $RCS_Root/(.*),v$|) { $new_full_path = $1; } } if (defined $new_full_path) { $file_full_path = $new_full_path; if (@Ignore_Files) { my $base; ($base, undef, undef) = fileparse ($file_full_path); # Ouch, I wish trailing operators in regexps could be # evaluated on the fly! if ($Case_Insensitive) { if (grep ($file_full_path =~ m|$_|i, @Ignore_Files)) { undef $file_full_path; } } elsif (grep ($file_full_path =~ m|$_|, @Ignore_Files)) { undef $file_full_path; } } next; } # Just spin wheels if no file defined yet. next if (! $file_full_path); # Collect tag names in case we're asked to print them in the output. if (/^symbolic names:$/) { $collecting_symbolic_names = 1; next; # There's no more info on this line, so skip to next } if ($collecting_symbolic_names) { # All tag names are listed with whitespace in front in cvs log # output; so if see non-whitespace, then we're done collecting. if (/^\S/) { $collecting_symbolic_names = 0; } else # we're looking at a tag name, so parse & store it { # According to the Cederqvist manual, in node "Tags", tag # names must start with an uppercase or lowercase letter and # can contain uppercase and lowercase letters, digits, `-', # and `_'. However, it's not our place to enforce that, so # we'll allow anything CVS hands us to be a tag: /^\s+([^:]+): ([\d.]+)$/; my $tag_name = $1; my $tag_rev = $2; # A branch number either has an odd number of digit sections # (and hence an even number of dots), or has ".0." as the # second-to-last digit section. Test for these conditions. my $real_branch_rev = ""; if (($tag_rev =~ /^(\d+\.\d+\.)+\d+$/) # Even number of dots... and (! ($tag_rev =~ /^(1\.)+1$/))) # ...but not "1.[1.]1" { $real_branch_rev = $tag_rev; } elsif ($tag_rev =~ /(\d+\.(\d+\.)+)0.(\d+)/) # Has ".0." { $real_branch_rev = $1 . $3; } # If we got a branch, record its number. if ($real_branch_rev) { $branch_names{$real_branch_rev} = $tag_name; if (@Follow_Branches) { if (grep ($_ eq $tag_name, @Follow_Branches)) { $branch_numbers{$tag_name} = $real_branch_rev; } } } else { # Else it's just a regular (non-branch) tag. push (@{$symbolic_names{$tag_rev}}, $tag_name); } } } # End of code for collecting tag names. # If have file name, but not revision, and see revision, then grab # it. (We collect unconditionally, even though we may or may not # ever use it.) if ((! (defined $revision)) and (/^revision (\d+\.[\d.]+)/)) { $revision = $1; if (@Follow_Branches) { foreach my $branch (@Follow_Branches) { # Special case for following trunk revisions if (($branch =~ /^trunk$/i) and ($revision =~ /^[0-9]+\.[0-9]+$/)) { goto dengo; } my $branch_number = $branch_numbers{$branch}; if ($branch_number) { # Are we on one of the follow branches or an ancestor of # same? # # If this revision is a prefix of the branch number, or # possibly is less in the minormost number, OR if this # branch number is a prefix of the revision, then yes. # Otherwise, no. # # So below, we determine if any of those conditions are # met. # Trivial case: is this revision on the branch? # (Compare this way to avoid regexps that screw up Emacs # indentation, argh.) if ((substr ($revision, 0, ((length ($branch_number)) + 1))) eq ($branch_number . ".")) { goto dengo; } # Non-trivial case: check if rev is ancestral to branch elsif ((length ($branch_number)) > (length ($revision)) and $No_Ancestors) { $revision =~ /^((?:\d+\.)+)(\d+)$/; my $r_left = $1; # still has the trailing "." my $r_end = $2; $branch_number =~ /^((?:\d+\.)+)(\d+)\.\d+$/; my $b_left = $1; # still has trailing "." my $b_mid = $2; # has no trailing "." if (($r_left eq $b_left) && ($r_end <= $b_mid)) { goto dengo; } } } } } else # (! @Follow_Branches) { next; } # Else we are following branches, but this revision isn't on the # path. So skip it. undef $revision; dengo: next; } # If we don't have a revision right now, we couldn't possibly # be looking at anything useful. if (! (defined ($revision))) { $detected_file_separator = /^$file_separator$/o; if ($detected_file_separator) { # No revisions for this file; can happen, e.g. "cvs log -d DATE" goto CLEAR; } else { next; } } # If have file name but not date and author, and see date or # author, then grab them: unless (defined $time) { if (/^date: .*/) { ($time, $author, $state, $lines) = &parse_date_author_and_state ($_); if (defined ($usermap{$author}) and $usermap{$author}) { $author = $usermap{$author}; } elsif($Domain ne "" or $Gecos == 1) { my $email = $author; if($Domain ne "") { $email = $author."@".$Domain; } my $pw = getpwnam($author); my $fullname; my $office; my $workphone; my $homephone; for (($fullname, $office, $workphone, $homephone) = split /\s*,\s*/, $pw->gecos) { s/&/ucfirst(lc($pw->name))/ge; } if($fullname ne "") { $author = $fullname . " <" . $email . ">"; } } } else { $detected_file_separator = /^$file_separator$/o; if ($detected_file_separator) { # No revisions for this file; can happen, e.g. "cvs log -d DATE" goto CLEAR; } } # If the date/time/author hasn't been found yet, we couldn't # possibly care about anything we see. So skip: next; } # A "branches: ..." line here indicates that one or more branches # are rooted at this revision. If we're showing branches, then we # want to show that fact as well, so we collect all the branches # that this is the latest ancestor of and store them in # @branch_roots. Just for reference, the format of the line we're # seeing at this point is: # # branches: 1.5.2; 1.5.4; ...; # # Okay, here goes: if (/^branches:\s+(.*);$/) { if ($Show_Branches) { my $lst = $1; $lst =~ s/(1\.)+1;|(1\.)+1$//; # ignore the trivial branch 1.1.1 if ($lst) { @branch_roots = split (/;\s+/, $lst); } else { undef @branch_roots; } next; } else { # Ugh. This really bothers me. Suppose we see a log entry # like this: # # ---------------------------- # revision 1.1 # date: 1999/10/17 03:07:38; author: jrandom; state: Exp; # branches: 1.1.2; # Intended first line of log message begins here. # ---------------------------- # # The question is, how we can tell the difference between that # log message and a *two*-line log message whose first line is # # "branches: 1.1.2;" # # See the problem? The output of "cvs log" is inherently # ambiguous. # # For now, we punt: we liberally assume that people don't # write log messages like that, and just toss a "branches:" # line if we see it but are not showing branches. I hope no # one ever loses real log data because of this. next; } } # If have file name, time, and author, then we're just grabbing # log message texts: $detected_file_separator = /^$file_separator$/o; if ($detected_file_separator && ! (defined $revision)) { # No revisions for this file; can happen, e.g. "cvs log -d DATE" goto CLEAR; } unless ($detected_file_separator || /^$logmsg_separator$/o) { $msg_txt .= $_; # Normally, just accumulate the message... next; } # ... until a msg separator is encountered: # Ensure the message contains something: if ((! $msg_txt) || ($msg_txt =~ /^\s*\.\s*$|^\s*$/) || ($msg_txt =~ /\*\*\* empty log message \*\*\*/)) { if ($Prune_Empty_Msgs) { goto CLEAR; } # else $msg_txt = "[no log message]\n"; } ### Store it all in the Grand Poobah: { my $dir_key; # key into %grand_poobah my %qunk; # complicated little jobbie, see below # Each revision of a file has a little data structure (a `qunk') # associated with it. That data structure holds not only the # file's name, but any additional information about the file # that might be needed in the output, such as the revision # number, tags, branches, etc. The reason to have these things # arranged in a data structure, instead of just appending them # textually to the file's name, is that we may want to do a # little rearranging later as we write the output. For example, # all the files on a given tag/branch will go together, followed # by the tag in parentheses (so trunk or otherwise non-tagged # files would go at the end of the file list for a given log # message). This rearrangement is a lot easier to do if we # don't have to reparse the text. # # A qunk looks like this: # # { # filename => "hello.c", # revision => "1.4.3.2", # time => a timegm() return value (moment of commit) # tags => [ "tag1", "tag2", ... ], # branch => "branchname" # There should be only one, right? # branchroots => [ "branchtag1", "branchtag2", ... ] # } if ($Distributed) { # Just the basename, don't include the path. ($qunk{'filename'}, $dir_key, undef) = fileparse ($file_full_path); } else { $dir_key = "./"; $qunk{'filename'} = $file_full_path; } # This may someday be used in a more sophisticated calculation # of what other files are involved in this commit. For now, we # don't use it much except for delta mode, because the # common-commit-detection algorithm is hypothesized to be # "good enough" as it stands. $qunk{'time'} = $time; # We might be including revision numbers and/or tags and/or # branch names in the output. Most of the code from here to # loop-end deals with organizing these in qunk. $qunk{'revision'} = $revision; $qunk{'state'} = $state; if ( defined( $lines )) { $qunk{'lines'} = $lines; } # Grab the branch, even though we may or may not need it: $qunk{'revision'} =~ /((?:\d+\.)+)\d+/; my $branch_prefix = $1; $branch_prefix =~ s/\.$//; # strip off final dot if ($branch_names{$branch_prefix}) { $qunk{'branch'} = $branch_names{$branch_prefix}; } # Keep a record of the file's cvs state. $qunk{'cvsstate'} = $state; # If there's anything in the @branch_roots array, then this # revision is the root of at least one branch. We'll display # them as branch names instead of revision numbers, the # substitution for which is done directly in the array: if (@branch_roots) { my @roots = map { $branch_names{$_} } @branch_roots; $qunk{'branchroots'} = \@roots; } # Save tags too. if (defined ($symbolic_names{$revision})) { $qunk{'tags'} = $symbolic_names{$revision}; delete $symbolic_names{$revision}; # If we're in 'delta' mode, update the latest observed # times for the beginning and ending tags, and # when we get around to printing output, we will simply restrict # ourselves to that timeframe... if ($Delta_Mode) { if (($time > $Delta_StartTime) && (grep { $_ eq $Delta_From } @{$qunk{'tags'}})) { $Delta_StartTime = $time; } if (($time > $Delta_EndTime) && (grep { $_ eq $Delta_To } @{$qunk{'tags'}})) { $Delta_EndTime = $time; } } } # Add this file to the list # (We use many spoonfuls of autovivication magic. Hashes and arrays # will spring into existence if they aren't there already.) &debug ("(pushing log msg for ${dir_key}$qunk{'filename'})\n"); # Store with the files in this commit. Later we'll loop through # again, making sure that revisions with the same log message # and nearby commit times are grouped together as one commit. push (@{$grand_poobah{$dir_key}{$author}{$time}{$msg_txt}}, \%qunk); } CLEAR: # Make way for the next message undef $msg_txt; undef $time; undef $revision; undef $author; undef @branch_roots; # Maybe even make way for the next file: if ($detected_file_separator) { undef $file_full_path; undef %branch_names; undef %branch_numbers; undef %symbolic_names; } } close (LOG_SOURCE); ### Process each ChangeLog while (my ($dir,$authorhash) = each %grand_poobah) { &debug ("DOING DIR: $dir\n"); # Here we twist our hash around, from being # author => time => message => filelist # in %$authorhash to # time => author => message => filelist # in %changelog. # # This is also where we merge entries. The algorithm proceeds # through the timeline of the changelog with a sliding window of # $Max_Checkin_Duration seconds; within that window, entries that # have the same log message are merged. # # (To save space, we zap %$authorhash after we've copied # everything out of it.) my %changelog; while (my ($author,$timehash) = each %$authorhash) { my $lasttime; my %stamptime; foreach my $time (sort {$main::a <=> $main::b} (keys %$timehash)) { my $msghash = $timehash->{$time}; while (my ($msg,$qunklist) = each %$msghash) { my $stamptime = $stamptime{$msg}; if ((defined $stamptime) and (($time - $stamptime) < $Max_Checkin_Duration) and (defined $changelog{$stamptime}{$author}{$msg})) { push(@{$changelog{$stamptime}{$author}{$msg}}, @$qunklist); } else { $changelog{$time}{$author}{$msg} = $qunklist; $stamptime{$msg} = $time; } } } } undef (%$authorhash); ### Now we can write out the ChangeLog! my ($logfile_here, $logfile_bak, $tmpfile); if (! $Output_To_Stdout) { $logfile_here = $dir . $Log_File_Name; $logfile_here =~ s/^\.\/\//\//; # fix any leading ".//" problem $tmpfile = "${logfile_here}.cvs2cl$$.tmp"; $logfile_bak = "${logfile_here}.bak"; open (LOG_OUT, ">$tmpfile") or die "Unable to open \"$tmpfile\""; } else { open (LOG_OUT, ">-") or die "Unable to open stdout for writing"; } print LOG_OUT $ChangeLog_Header; if ($XML_Output) { my $encoding = length $XML_Encoding ? qq'encoding="$XML_Encoding"' : ''; my $version = 'version="1.0"'; my $declaration = sprintf '', join ' ', grep length, $version, $encoding; my $root = ''; print LOG_OUT "$declaration\n\n$root\n\n"; } my @key_list = (); if($Chronological_Order) { @key_list = sort {$main::a <=> $main::b} (keys %changelog); } else { @key_list = sort {$main::b <=> $main::a} (keys %changelog); } foreach my $time (@key_list) { next if ($Delta_Mode && (($time <= $Delta_StartTime) || ($time > $Delta_EndTime && $Delta_EndTime))); # Set up the date/author line. # kff todo: do some more XML munging here, on the header # part of the entry: my ($ignore,$min,$hour,$mday,$mon,$year,$wday) = $UTC_Times ? gmtime($time) : localtime($time); # XML output includes everything else, we might as well make # it always include Day Of Week too, for consistency. if ($Show_Day_Of_Week or $XML_Output) { $wday = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")[$wday]; $wday = ($XML_Output) ? "${wday}\n" : " $wday"; } else { $wday = ""; } my $authorhash = $changelog{$time}; if ($Show_Tag_Dates) { my %tags; while (my ($author,$mesghash) = each %$authorhash) { while (my ($msg,$qunk) = each %$mesghash) { foreach my $qunkref2 (@$qunk) { if (defined ($$qunkref2{'tags'})) { foreach my $tag (@{$$qunkref2{'tags'}}) { $tags{$tag} = 1; } } } } } foreach my $tag (keys %tags) { if (!defined $tag_date_printed{$tag}) { $tag_date_printed{$tag} = $time; if ($XML_Output) { # NOT YET DONE } else { if ($Show_Times) { printf LOG_OUT ("%4u-%02u-%02u${wday} %02u:%02u tag %s\n\n", $year+1900, $mon+1, $mday, $hour, $min, $tag); } else { printf LOG_OUT ("%4u-%02u-%02u${wday} tag %s\n\n", $year+1900, $mon+1, $mday, $tag); } } } } } while (my ($author,$mesghash) = each %$authorhash) { # If XML, escape in outer loop to avoid compound quoting: if ($XML_Output) { $author = &xml_escape ($author); } FOOBIE: # We sort here to enable predictable ordering for the testing porpoises for my $msg (sort keys %$mesghash) { my $qunklist = $mesghash->{$msg}; ## MJP: 19.xii.01 : Exclude @ignore_tags for my $ignore_tag (keys %ignore_tags) { next FOOBIE if grep($_ eq $ignore_tag, map(@{$_->{tags}}, grep(defined $_->{tags}, @$qunklist))); } ## MJP: 19.xii.01 : End exclude @ignore_tags # show only files with tag --show-tag $show_tag if ( keys %show_tags ) { next FOOBIE if !grep(exists $show_tags{$_}, map(@{$_->{tags}}, grep(defined $_->{tags}, @$qunklist))); } my $files = &pretty_file_list ($qunklist); my $header_line; # date and author my $body; # see below my $wholething; # $header_line + $body if ($XML_Output) { $header_line = sprintf ("%4u-%02u-%02u\n" . "${wday}" . "\n" . "%s\n", $year+1900, $mon+1, $mday, $hour, $min, $author); } else { if ($Show_Times) { $header_line = sprintf ("%4u-%02u-%02u${wday} %02u:%02u %s\n\n", $year+1900, $mon+1, $mday, $hour, $min, $author); } else { $header_line = sprintf ("%4u-%02u-%02u${wday} %s\n\n", $year+1900, $mon+1, $mday, $author); } } $Text::Wrap::huge = 'overflow' if $Text::Wrap::VERSION >= 2001.0130; # Reshape the body according to user preferences. if ($XML_Output) { $msg = &preprocess_msg_text ($msg); $body = $files . $msg; } elsif ($No_Wrap && !$Summary) { $msg = &preprocess_msg_text ($msg); $files = wrap ("\t", " ", "$files"); $msg =~ s/\n(.*)/\n\t$1/g; unless ($After_Header eq " ") { $msg =~ s/^(.*)/\t$1/g; } $body = $files . $After_Header . $msg; } elsif ($Summary) { my( $filelist, $qunk ); my( @DeletedQunks, @AddedQunks, @ChangedQunks ); $msg = &preprocess_msg_text ($msg); # # Sort the files (qunks) according to the operation that was # performed. Files which were added have no line change # indicator, whereas deleted files have state dead. # foreach $qunk ( @$qunklist ) { if ( "dead" eq $qunk->{'state'}) { push( @DeletedQunks, $qunk ); } elsif ( !exists( $qunk->{'lines'})) { push( @AddedQunks, $qunk ); } else { push( @ChangedQunks, $qunk ); } } # # The qunks list was originally in tree search order. Let's # get that back. The lists, if they exist, will be reversed upon # processing. # # # Now write the three sections onto $filelist # if ( @DeletedQunks ) { $filelist .= "\tDeleted:\n"; foreach $qunk ( @DeletedQunks ) { $filelist .= "\t\t" . $qunk->{'filename'}; $filelist .= " (" . $qunk->{'revision'} . ")"; $filelist .= "\n"; } undef( @DeletedQunks ); } if ( @AddedQunks ) { $filelist .= "\tAdded:\n"; foreach $qunk ( @AddedQunks ) { $filelist .= "\t\t" . $qunk->{'filename'}; $filelist .= " (" . $qunk->{'revision'} . ")"; $filelist .= "\n"; } undef( @AddedQunks ); } if ( @ChangedQunks ) { $filelist .= "\tChanged:\n"; foreach $qunk ( @ChangedQunks ) { $filelist .= "\t\t" . $qunk->{'filename'}; $filelist .= " (" . $qunk->{'revision'} . ")"; $filelist .= ", \"" . $qunk->{'state'} . "\""; $filelist .= ", lines: " . $qunk->{'lines'}; $filelist .= "\n"; } undef( @ChangedQunks ); } chomp( $filelist ); $msg =~ s/\n(.*)/\n\t$1/g; unless ($After_Header eq " ") { $msg =~ s/^(.*)/\t$1/g; } $body = $filelist . $After_Header . $msg; } else # do wrapping, either FSF-style or regular { if ($FSF_Style) { $files = wrap ("\t", " ", "$files"); my $files_last_line_len = 0; if ($After_Header eq " ") { $files_last_line_len = &last_line_len ($files); $files_last_line_len += 1; # for $After_Header } $msg = &wrap_log_entry ($msg, "\t", 69 - $files_last_line_len, 69); $body = $files . $After_Header . $msg; } else # not FSF-style { $msg = &preprocess_msg_text ($msg); $body = $files . $After_Header . $msg; $body = wrap ("\t", " ", "$body"); } } $wholething = $header_line . $body; if ($XML_Output) { $wholething = "\n${wholething}\n"; } # One last check: make sure it passes the regexp test, if the # user asked for that. We have to do it here, so that the # test can match against information in the header as well # as in the text of the log message. # How annoying to duplicate so much code just because I # can't figure out a way to evaluate scalars on the trailing # operator portion of a regular expression. Grrr. if ($Case_Insensitive) { unless ($Regexp_Gate && ($wholething !~ /$Regexp_Gate/oi)) { print LOG_OUT "${wholething}\n"; } } else { unless ($Regexp_Gate && ($wholething !~ /$Regexp_Gate/o)) { print LOG_OUT "${wholething}\n"; } } } } } if ($XML_Output) { print LOG_OUT "\n"; } close (LOG_OUT); if (! $Output_To_Stdout) { # If accumulating, append old data to new before renaming. But # don't append the most recent entry, since it's already in the # new log due to CVS's idiosyncratic interpretation of "log -d". if ($Cumulative && -f $logfile_here) { open (NEW_LOG, ">>$tmpfile") or die "trouble appending to $tmpfile ($!)"; open (OLD_LOG, "<$logfile_here") or die "trouble reading from $logfile_here ($!)"; my $started_first_entry = 0; my $passed_first_entry = 0; while () { if (! $passed_first_entry) { if ((! $started_first_entry) && /^(\d\d\d\d-\d\d-\d\d\s+\d\d:\d\d)/) { $started_first_entry = 1; } elsif (/^(\d\d\d\d-\d\d-\d\d\s+\d\d:\d\d)/) { $passed_first_entry = 1; print NEW_LOG $_; } } else { print NEW_LOG $_; } } close (NEW_LOG); close (OLD_LOG); } if (-f $logfile_here) { rename ($logfile_here, $logfile_bak); } rename ($tmpfile, $logfile_here); } } } sub parse_date_author_and_state () { # Parses the date/time and author out of a line like: # # date: 1999/02/19 23:29:05; author: apharris; state: Exp; my $line = shift; my ($year, $mon, $mday, $hours, $min, $secs, $author, $state, $rest) = $line =~ m#(\d+)/(\d+)/(\d+)\s+(\d+):(\d+):(\d+);\s+author:\s+([^;]+);\s+state:\s+([^;]+);(.*)# or die "Couldn't parse date ``$line''"; die "Bad date or Y2K issues" unless ($year > 1969 and $year < 2258); # Kinda arbitrary, but useful as a sanity check my $time = timegm($secs,$min,$hours,$mday,$mon-1,$year-1900); my $lines; if ( $rest =~ m#\s+lines:\s+(.*)# ) { $lines =$1; } return ($time, $author, $state, $lines); } # Here we take a bunch of qunks and convert them into printed # summary that will include all the information the user asked for. sub pretty_file_list () { if ($Hide_Filenames and (! $XML_Output)) { return ""; } my $qunksref = shift; my @qunkrefs = grep +((! exists $_->{'tags'} or ! grep exists $ignore_tags{$_}, @{$_->{'tags'}}) and (! keys %show_tags or (exists $_->{'tags'} and grep exists $show_tags{$_}, @{$_->{'tags'}})) ), @$qunksref; my @filenames; my $beauty = ""; # The accumulating header string for this entry. my %non_unanimous_tags; # Tags found in a proper subset of qunks my %unanimous_tags; # Tags found in all qunks my %all_branches; # Branches found in any qunk my $common_dir = undef; # Dir prefix common to all files ("" if none) my $fbegun = 0; # Did we begin printing filenames yet? # First, loop over the qunks gathering all the tag/branch names. # We'll put them all in non_unanimous_tags, and take out the # unanimous ones later. QUNKREF: foreach my $qunkref (@qunkrefs) { # Keep track of whether all the files in this commit were in the # same directory, and memorize it if so. We can make the output a # little more compact by mentioning the directory only once. if ($Common_Dir && (scalar (@qunkrefs)) > 1) { if (! (defined ($common_dir))) { my ($base, $dir); ($base, $dir, undef) = fileparse ($$qunkref{'filename'}); if ((! (defined ($dir))) # this first case is sheer paranoia or ($dir eq "") or ($dir eq "./") or ($dir eq ".\\")) { $common_dir = ""; } else { $common_dir = $dir; } } elsif ($common_dir ne "") { # Already have a common dir prefix, so how much of it can we preserve? $common_dir = &common_path_prefix ($$qunkref{'filename'}, $common_dir); } } else # only one file in this entry anyway, so common dir not an issue { $common_dir = ""; } if (defined ($$qunkref{'branch'})) { $all_branches{$$qunkref{'branch'}} = 1; } if (defined ($$qunkref{'tags'})) { foreach my $tag (@{$$qunkref{'tags'}}) { $non_unanimous_tags{$tag} = 1; } } } # Any tag held by all qunks will be printed specially... but only if # there are multiple qunks in the first place! if ((scalar (@qunkrefs)) > 1) { foreach my $tag (keys (%non_unanimous_tags)) { my $everyone_has_this_tag = 1; foreach my $qunkref (@qunkrefs) { if ((! (defined ($$qunkref{'tags'}))) or (! (grep ($_ eq $tag, @{$$qunkref{'tags'}})))) { $everyone_has_this_tag = 0; } } if ($everyone_has_this_tag) { $unanimous_tags{$tag} = 1; delete $non_unanimous_tags{$tag}; } } } if ($XML_Output) { # If outputting XML, then our task is pretty simple, because we # don't have to detect common dir, common tags, branch prefixing, # etc. We just output exactly what we have, and don't worry about # redundancy or readability. foreach my $qunkref (@qunkrefs) { my $filename = $$qunkref{'filename'}; my $cvsstate = $$qunkref{'cvsstate'}; my $revision = $$qunkref{'revision'}; my $tags = $$qunkref{'tags'}; my $branch = $$qunkref{'branch'}; my $branchroots = $$qunkref{'branchroots'}; $filename = &xml_escape ($filename); # probably paranoia $revision = &xml_escape ($revision); # definitely paranoia $beauty .= "\n"; $beauty .= "${filename}\n"; $beauty .= "${cvsstate}\n"; $beauty .= "${revision}\n"; if ($branch) { $branch = &xml_escape ($branch); # more paranoia $beauty .= "${branch}\n"; } foreach my $tag (@$tags) { $tag = &xml_escape ($tag); # by now you're used to the paranoia $beauty .= "${tag}\n"; } foreach my $root (@$branchroots) { $root = &xml_escape ($root); # which is good, because it will continue $beauty .= "${root}\n"; } $beauty .= "\n"; } # Theoretically, we could go home now. But as long as we're here, # let's print out the common_dir and utags, as a convenience to # the receiver (after all, earlier code calculated that stuff # anyway, so we might as well take advantage of it). if ((scalar (keys (%unanimous_tags))) > 1) { foreach my $utag ((keys (%unanimous_tags))) { $utag = &xml_escape ($utag); # the usual paranoia $beauty .= "${utag}\n"; } } if ($common_dir) { $common_dir = &xml_escape ($common_dir); $beauty .= "${common_dir}\n"; } # That's enough for XML, time to go home: return $beauty; } # Else not XML output, so complexly compactify for chordate # consumption. At this point we have enough global information # about all the qunks to organize them non-redundantly for output. if ($common_dir) { # Note that $common_dir still has its trailing slash $beauty .= "$common_dir: "; } if ($Show_Branches) { # For trailing revision numbers. my @brevisions; foreach my $branch (keys (%all_branches)) { foreach my $qunkref (@qunkrefs) { if ((defined ($$qunkref{'branch'})) and ($$qunkref{'branch'} eq $branch)) { if ($fbegun) { # kff todo: comma-delimited in XML too? Sure. $beauty .= ", "; } else { $fbegun = 1; } my $fname = substr ($$qunkref{'filename'}, length ($common_dir)); $beauty .= $fname; $$qunkref{'printed'} = 1; # Just setting a mark bit, basically if ($Show_Tags && (defined @{$$qunkref{'tags'}})) { my @tags = grep ($non_unanimous_tags{$_}, @{$$qunkref{'tags'}}); if (@tags) { $beauty .= " (tags: "; $beauty .= join (', ', @tags); $beauty .= ")"; } } if ($Show_Revisions) { # Collect the revision numbers' last components, but don't # print them -- they'll get printed with the branch name # later. $$qunkref{'revision'} =~ /.+\.([\d]+)$/; push (@brevisions, $1); # todo: we're still collecting branch roots, but we're not # showing them anywhere. If we do show them, it would be # nifty to just call them revision "0" on a the branch. # Yeah, that's the ticket. } } } $beauty .= " ($branch"; if (@brevisions) { if ((scalar (@brevisions)) > 1) { $beauty .= ".["; $beauty .= (join (',', @brevisions)); $beauty .= "]"; } else { # Square brackets are spurious here, since there's no range to # encapsulate $beauty .= ".$brevisions[0]"; } } $beauty .= ")"; } } # Okay; any qunks that were done according to branch are taken care # of, and marked as printed. Now print everyone else. my %fileinfo_printed; foreach my $qunkref (@qunkrefs) { next if (defined ($$qunkref{'printed'})); # skip if already printed my $b = substr ($$qunkref{'filename'}, length ($common_dir)); # todo: Shlomo's change was this: # $beauty .= substr ($$qunkref{'filename'}, # (($common_dir eq "./") ? "" : length ($common_dir))); $$qunkref{'printed'} = 1; # Set a mark bit. if ($Show_Revisions || $Show_Tags || $Show_Dead) { my $started_addendum = 0; if ($Show_Revisions) { $started_addendum = 1; $b .= " ("; $b .= "$$qunkref{'revision'}"; } if ($Show_Dead && $$qunkref{'cvsstate'} =~ /dead/) { # Deliberately not using $started_addendum. Keeping it simple. $b .= "[DEAD]"; } if ($Show_Tags && (defined $$qunkref{'tags'})) { my @tags = grep ($non_unanimous_tags{$_}, @{$$qunkref{'tags'}}); if ((scalar (@tags)) > 0) { if ($started_addendum) { $b .= ", "; } else { $b .= " (tags: "; } $b .= join (', ', @tags); $started_addendum = 1; } } if ($started_addendum) { $b .= ")"; } } unless ( exists $fileinfo_printed{$b} ) { if ($fbegun) { $beauty .= ", "; } else { $fbegun = 1; } $beauty .= $b, $fileinfo_printed{$b} = 1; } } # Unanimous tags always come last. if ($Show_Tags && %unanimous_tags) { $beauty .= " (utags: "; $beauty .= join (', ', sort keys (%unanimous_tags)); $beauty .= ")"; } # todo: still have to take care of branch_roots? $beauty = "* $beauty:"; return $beauty; } sub min ($$) { $_[0] < $_[1] ? $_[0] : $_[1] } sub common_path_prefix ($$) { my ($path1, $path2) = @_; # For compatibility (with older versions of cvs2cl.pl), we think in UN*X # terms, and mould windoze filenames to match. Is this really appropriate? # If a file is checked in under UN*X, and cvs log run on windoze, which way # do the path separators slope? Can we use fileparse as per the local # conventions? If so, we should probably have a user option to specify an # OS to emulate to handle stdin-fed logs. If we did this, we could avoid # the nasty \-/ transmogrification below. my ($dir1, $dir2) = map +(fileparse($_))[1], $path1, $path2; # Transmogrify Windows filenames to look like Unix. # (It is far more likely that someone is running cvs2cl.pl under # Windows than that they would genuinely have backslashes in their # filenames.) tr!\\!/! for $dir1, $dir2; my ($accum1, $accum2, $last_common_prefix) = ('') x 3; my @path1 = grep length($_), split qr!/!, $dir1; my @path2 = grep length($_), split qr!/!, $dir2; my @common_path; for (0..min($#path1,$#path2)) { if ( $path1[$_] eq $path2[$_]) { push @common_path, $path1[$_]; } else { last; } } return join '', map "$_/", @common_path; } sub preprocess_msg_text () { my $text = shift; # Strip out carriage returns (as they probably result from DOSsy editors). $text =~ s/\r\n/\n/g; # If it *looks* like two newlines, make it *be* two newlines: $text =~ s/\n\s*\n/\n\n/g; if ($XML_Output) { $text = &xml_escape ($text); $text = "${text}\n"; } elsif (! $No_Wrap) { # Strip off lone newlines, but only for lines that don't begin with # whitespace or a mail-quoting character, since we want to preserve # that kind of formatting. Also don't strip newlines that follow a # period; we handle those specially next. And don't strip # newlines that precede an open paren. 1 while ($text =~ s/(^|\n)([^>\s].*[^.\n])\n([^>\n])/$1$2 $3/g); # If a newline follows a period, make sure that when we bring up the # bottom sentence, it begins with two spaces. 1 while ($text =~ s/(^|\n)([^>\s].*)\n([^>\n])/$1$2 $3/g); } return $text; } sub last_line_len () { my $files_list = shift; my @lines = split (/\n/, $files_list); my $last_line = pop (@lines); return length ($last_line); } # A custom wrap function, sensitive to some common constructs used in # log entries. sub wrap_log_entry () { my $text = shift; # The text to wrap. my $left_pad_str = shift; # String to pad with on the left. # These do NOT take left_pad_str into account: my $length_remaining = shift; # Amount left on current line. my $max_line_length = shift; # Amount left for a blank line. my $wrapped_text = ""; # The accumulating wrapped entry. my $user_indent = ""; # Inherited user_indent from prev line. my $first_time = 1; # First iteration of the loop? my $suppress_line_start_match = 0; # Set to disable line start checks. my @lines = split (/\n/, $text); while (@lines) # Don't use `foreach' here, it won't work. { my $this_line = shift (@lines); chomp $this_line; if ($this_line =~ /^(\s+)/) { $user_indent = $1; } else { $user_indent = ""; } # If it matches any of the line-start regexps, print a newline now... if ($suppress_line_start_match) { $suppress_line_start_match = 0; } elsif (($this_line =~ /^(\s*)\*\s+[a-zA-Z0-9]/) || ($this_line =~ /^(\s*)\* [a-zA-Z0-9_\.\/\+-]+/) || ($this_line =~ /^(\s*)\([a-zA-Z0-9_\.\/\+-]+(\)|,\s*)/) || ($this_line =~ /^(\s+)(\S+)/) || ($this_line =~ /^(\s*)- +/) || ($this_line =~ /^()\s*$/) || ($this_line =~ /^(\s*)\*\) +/) || ($this_line =~ /^(\s*)[a-zA-Z0-9](\)|\.|\:) +/)) { # Make a line break immediately, unless header separator is set # and this line is the first line in the entry, in which case # we're getting the blank line for free already and shouldn't # add an extra one. unless (($After_Header ne " ") and ($first_time)) { if ($this_line =~ /^()\s*$/) { $suppress_line_start_match = 1; $wrapped_text .= "\n${left_pad_str}"; } $wrapped_text .= "\n${left_pad_str}"; } $length_remaining = $max_line_length - (length ($user_indent)); } # Now that any user_indent has been preserved, strip off leading # whitespace, so up-folding has no ugly side-effects. $this_line =~ s/^\s*//; # Accumulate the line, and adjust parameters for next line. my $this_len = length ($this_line); if ($this_len == 0) { # Blank lines should cancel any user_indent level. $user_indent = ""; $length_remaining = $max_line_length; } elsif ($this_len >= $length_remaining) # Line too long, try breaking it. { # Walk backwards from the end. At first acceptable spot, break # a new line. my $idx = $length_remaining - 1; if ($idx < 0) { $idx = 0 }; while ($idx > 0) { if (substr ($this_line, $idx, 1) =~ /\s/) { my $line_now = substr ($this_line, 0, $idx); my $next_line = substr ($this_line, $idx); $this_line = $line_now; # Clean whitespace off the end. chomp $this_line; # The current line is ready to be printed. $this_line .= "\n${left_pad_str}"; # Make sure the next line is allowed full room. $length_remaining = $max_line_length - (length ($user_indent)); # Strip next_line, but then preserve any user_indent. $next_line =~ s/^\s*//; # Sneak a peek at the user_indent of the upcoming line, so # $next_line (which will now precede it) can inherit that # indent level. Otherwise, use whatever user_indent level # we currently have, which might be none. my $next_next_line = shift (@lines); if ((defined ($next_next_line)) && ($next_next_line =~ /^(\s+)/)) { $next_line = $1 . $next_line if (defined ($1)); # $length_remaining = $max_line_length - (length ($1)); $next_next_line =~ s/^\s*//; } else { $next_line = $user_indent . $next_line; } if (defined ($next_next_line)) { unshift (@lines, $next_next_line); } unshift (@lines, $next_line); # Our new next line might, coincidentally, begin with one of # the line-start regexps, so we temporarily turn off # sensitivity to that until we're past the line. $suppress_line_start_match = 1; last; } else { $idx--; } } if ($idx == 0) { # We bottomed out because the line is longer than the # available space. But that could be because the space is # small, or because the line is longer than even the maximum # possible space. Handle both cases below. if ($length_remaining == ($max_line_length - (length ($user_indent)))) { # The line is simply too long -- there is no hope of ever # breaking it nicely, so just insert it verbatim, with # appropriate padding. $this_line = "\n${left_pad_str}${this_line}"; } else { # Can't break it here, but may be able to on the next round... unshift (@lines, $this_line); $length_remaining = $max_line_length - (length ($user_indent)); $this_line = "\n${left_pad_str}"; } } } else # $this_len < $length_remaining, so tack on what we can. { # Leave a note for the next iteration. $length_remaining = $length_remaining - $this_len; if ($this_line =~ /\.$/) { $this_line .= " "; $length_remaining -= 2; } else # not a sentence end { $this_line .= " "; $length_remaining -= 1; } } # Unconditionally indicate that loop has run at least once. $first_time = 0; $wrapped_text .= "${user_indent}${this_line}"; } # One last bit of padding. $wrapped_text .= "\n"; return $wrapped_text; } sub xml_escape () { my $txt = shift; $txt =~ s/&/&/g; $txt =~ s//>/g; return $txt; } sub maybe_read_user_map_file () { my %expansions; if ($User_Map_File) { open (MAPFILE, "<$User_Map_File") or die ("Unable to open $User_Map_File ($!)"); while () { next if /^\s*#/; # Skip comment lines. next if not /:/; # Skip lines without colons. # It is now safe to split on ':'. my ($username, $expansion) = split ':'; chomp $expansion; $expansion =~ s/^'(.*)'$/$1/; $expansion =~ s/^"(.*)"$/$1/; # If it looks like the expansion has a real name already, then # we toss the username we got from CVS log. Otherwise, keep # it to use in combination with the email address. if ($expansion =~ /^\s*<{0,1}\S+@.*/) { # Also, add angle brackets if none present if (! ($expansion =~ /<\S+@\S+>/)) { $expansions{$username} = "$username <$expansion>"; } else { $expansions{$username} = "$username $expansion"; } } else { $expansions{$username} = $expansion; } } # fi ($User_Map_File) close (MAPFILE); } if (defined $User_Passwd_File) { if ( ! defined $Mail_Domain ) { if ( -e MAILNAME ) { chomp($Mail_Domain = slurp_file(MAILNAME)); } else { MAILDOMAIN_CMD: for ([qw(hostname -d)], 'dnsdomainname', 'domainname') { my ($text, $exit, $sig, $core) = run_ext($_); if ( $exit == 0 && $sig == 0 && $core == 0 ) { chomp $text; if ( length $text ) { $Mail_Domain = $text; last MAILDOMAIN_CMD; } } } } } die "No mail domain found\n" unless defined $Mail_Domain; open (MAPFILE, "<$User_Passwd_File") or die ("Unable to open $User_Passwd_File ($!)"); while () { # all lines are valid my ($username, $pw, $uid, $gid, $gecos, $homedir, $shell) = split ':'; my $expansion = ''; ($expansion) = split (',', $gecos) if defined $gecos && length $gecos; $expansions{$username} = "$expansion <$username\@$Mail_Domain>"; } close (MAPFILE); } return %expansions; } sub parse_options () { # Check this internally before setting the global variable. my $output_file; # If this gets set, we encountered unknown options and will exit at # the end of this subroutine. my $exit_with_admonishment = 0; while (my $arg = shift (@ARGV)) { if ($arg =~ /^-h$|^-help$|^--help$|^--usage$|^-?$/) { $Print_Usage = 1; } elsif ($arg =~ /^--delta$/) { my $narg = shift(@ARGV) || die "$arg needs argument.\n"; if ($narg =~ /^([A-Za-z][A-Za-z0-9_\-]*):([A-Za-z][A-Za-z0-9_\-]*)$/) { $Delta_From = $1; $Delta_To = $2; $Delta_Mode = 1; } else { die "--delta FROM_TAG:TO_TAG is what you meant to say.\n"; } } elsif ($arg =~ /^--debug$/) { # unadvertised option, heh $Debug = 1; } elsif ($arg =~ /^--version$/) { $Print_Version = 1; } elsif ($arg =~ /^-g$|^--global-opts$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; # Don't assume CVS is called "cvs" on the user's system: $Log_Source_Command =~ s/(^\S*)/$1 $narg/; } elsif ($arg =~ /^-l$|^--log-opts$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; $Log_Source_Command .= " $narg"; } elsif ($arg =~ /^-f$|^--file$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; $output_file = $narg; } elsif ($arg =~ /^--accum$/) { $Cumulative = 1; } elsif ($arg =~ /^--update$/) { $Update = 1; } elsif ($arg =~ /^--fsf$/) { $FSF_Style = 1; } elsif ($arg =~ /^--FSF$/) { $Show_Times = 0; $Common_Dir = 0; } elsif ($arg =~ /^--rcs/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; $RCS_Root = $narg; $RCS_Mode = 1; } elsif ($arg =~ /^-U$|^--usermap$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; $User_Map_File = $narg; } elsif ($arg =~ /^--gecos$/) { $Gecos = 1; } elsif ($arg =~ /^--domain$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; $Domain = $narg; } elsif ($arg =~ /^--passwd$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; $User_Passwd_File = $narg; } elsif ($arg =~ /^--mailname$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; $Mail_Domain = $narg; } elsif ($arg =~ /^-W$|^--window$/) { defined(my $narg = shift (@ARGV)) || die "$arg needs argument.\n"; $Max_Checkin_Duration = $narg; } elsif ($arg =~ /^--chrono$/) { $Chronological_Order = 1; } elsif ($arg =~ /^-I$|^--ignore$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; push (@Ignore_Files, $narg); } elsif ($arg =~ /^-C$|^--case-insensitive$/) { $Case_Insensitive = 1; } elsif ($arg =~ /^-R$|^--regexp$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; $Regexp_Gate = $narg; } elsif ($arg =~ /^--stdout$/) { $Output_To_Stdout = 1; } elsif ($arg =~ /^--version$/) { $Print_Version = 1; } elsif ($arg =~ /^-d$|^--distributed$/) { $Distributed = 1; } elsif ($arg =~ /^-P$|^--prune$/) { $Prune_Empty_Msgs = 1; } elsif ($arg =~ /^-S$|^--separate-header$/) { $After_Header = "\n\n"; } elsif ($arg =~ /^--no-wrap$/) { $No_Wrap = 1; } elsif ($arg =~ /^--summary$/) { $Summary = 1; $After_Header = "\n\n"; # Summary implies --separate-header } elsif ($arg =~ /^--gmt$|^--utc$/) { $UTC_Times = 1; } elsif ($arg =~ /^-w$|^--day-of-week$/) { $Show_Day_Of_Week = 1; } elsif ($arg =~ /^--no-times$/) { $Show_Times = 0; } elsif ($arg =~ /^-r$|^--revisions$/) { $Show_Revisions = 1; } elsif ($arg =~ /^--show-dead$/) { $Show_Dead = 1; } elsif ($arg =~ /^-t$|^--tags$/) { $Show_Tags = 1; } elsif ($arg =~ /^-T$|^--tagdates$/) { $Show_Tag_Dates = 1; } elsif ($arg =~ /^-b$|^--branches$/) { $Show_Branches = 1; } elsif ($arg =~ /^-F$|^--follow$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; push (@Follow_Branches, $narg); } elsif ($arg =~ /^--stdin$/) { $Input_From_Stdin = 1; } elsif ($arg =~ /^--header$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; $ChangeLog_Header = &slurp_file ($narg); if (! defined ($ChangeLog_Header)) { $ChangeLog_Header = ""; } } elsif ($arg =~ /^--xml-encoding$/) { my $narg = shift (@ARGV) || die "$arg needs argument.\n"; $XML_Encoding = $narg ; } elsif ($arg =~ /^--xml$/) { $XML_Output = 1; } elsif ($arg =~ /^--hide-filenames$/) { $Hide_Filenames = 1; $After_Header = ""; } elsif ($arg =~ /^--no-common-dir$/) { $Common_Dir = 0; } elsif ($arg =~ /^--ignore-tag$/ ) { die "$arg needs argument.\n" unless @ARGV; $ignore_tags{shift @ARGV} = 1; } elsif ($arg =~ /^--show-tag$/ ) { die "$arg needs argument.\n" unless @ARGV; $show_tags{shift @ARGV} = 1; } elsif ( lc ($arg) eq '--test-code' ) { # Deliberately undocumented. This is not a public interface, # and may change/disappear at any time. die "$arg needs argument.\n" unless @ARGV; $TestCode = shift @ARGV; } elsif ($arg =~ /^--no-ancestors$/) { $No_Ancestors = 1; } else { # Just add a filename as argument to the log command $Log_Source_Command .= " '$arg'"; } } ## Check for contradictions... if ($Output_To_Stdout && $Distributed) { print STDERR "cannot pass both --stdout and --distributed\n"; $exit_with_admonishment = 1; } if ($Output_To_Stdout && $output_file) { print STDERR "cannot pass both --stdout and --file\n"; $exit_with_admonishment = 1; } if ($XML_Output && $Cumulative) { print STDERR "cannot pass both --xml and --accum\n"; $exit_with_admonishment = 1; } # Or if any other error message has already been printed out, we # just leave now: if ($exit_with_admonishment) { &usage (); exit (1); } elsif ($Print_Usage) { &usage (); exit (0); } elsif ($Print_Version) { &version (); exit (0); } ## Else no problems, so proceed. if ($output_file) { $Log_File_Name = $output_file; } } sub slurp_file () { my $filename = shift || die ("no filename passed to slurp_file()"); my $retstr; open (SLURPEE, "<${filename}") or die ("unable to open $filename ($!)"); my $saved_sep = $/; undef $/; $retstr = ; $/ = $saved_sep; close (SLURPEE); return $retstr; } sub debug () { if ($Debug) { my $msg = shift; print STDERR $msg; } } sub version () { print "cvs2cl.pl version ${VERSION}; distributed under the GNU GPL.\n"; } sub usage () { &version (); print <<'END_OF_INFO'; Generate GNU-style ChangeLogs in CVS working copies. Notes about the output format(s): The default output of cvs2cl.pl is designed to be compact, formally unambiguous, but still easy for humans to read. It is largely self-explanatory, I hope; the one abbreviation that might not be obvious is "utags". That stands for "universal tags" -- a universal tag is one held by all the files in a given change entry. If you need output that's easy for a program to parse, use the --xml option. Note that with XML output, just about all available information is included with each change entry, whether you asked for it or not, on the theory that your parser can ignore anything it's not looking for. Notes about the options and arguments (the actual options are listed last in this usage message): * The -I and -F options may appear multiple times. * To follow trunk revisions, use "-F trunk" ("-F TRUNK" also works). This is okay because no would ever, ever be crazy enough to name a branch "trunk", right? Right. * For the -U option, the UFILE should be formatted like CVSROOT/users. That is, each line of UFILE looks like this jrandom:jrandom@red-bean.com or maybe even like this jrandom:'Jesse Q. Random ' Don't forget to quote the portion after the colon if necessary. * Many people want to filter by date. To do so, invoke cvs2cl.pl like this: cvs2cl.pl -l "-d'DATESPEC'" where DATESPEC is any date specification valid for "cvs log -d". (Note that CVS 1.10.7 and below requires there be no space between -d and its argument). Options/Arguments: -h, -help, --help, or -? Show this usage and exit --version Show version and exit -r, --revisions Show revision numbers in output -b, --branches Show branch names in revisions when possible -t, --tags Show tags (symbolic names) in output -T, --tagdates Show tags in output on their first occurance --show-dead Show dead files --stdin Read from stdin, don't run cvs log --stdout Output to stdout not to ChangeLog -d, --distributed Put ChangeLogs in subdirs -f FILE, --file FILE Write to FILE instead of "ChangeLog" --fsf Use this if log data is in FSF ChangeLog style --FSF Attempt strict FSF-standard compatible output -W SECS, --window SECS Window of time within which log entries unify -U UFILE, --usermap UFILE Expand usernames to email addresses from UFILE --passwd PASSWORDFILE Use system passwd file for user name expansion --mailname MAILDOMAIN Mail domainname to attach to user names for email addresses. Only used with --passwd. Defaults to contents, of /etc/mailname else output of hostname -d / dnsdomainname / domainname --domain DOMAIN Domain to build email addresses from --gecos Get user information from GECOS data -R REGEXP, --regexp REGEXP Include only entries that match REGEXP -I REGEXP, --ignore REGEXP Ignore files whose names match REGEXP -C, --case-insensitive Any regexp matching is done case-insensitively -F BRANCH, --follow BRANCH Show only revisions on or ancestral to BRANCH --no-ancestors When using -F, only track changes since the BRANCH started -S, --separate-header Blank line between each header and log message --summary Add CVS change summary information --no-wrap Don't auto-wrap log message (recommend -S also) --gmt, --utc Show times in GMT/UTC instead of local time --accum Add to an existing ChangeLog (incompat w/ --xml) --update As --accum, but lists only files changed since last run -w, --day-of-week Show day of week --no-times Don't show times in output --header FILE Get ChangeLog header from FILE ("-" means stdin) --xml Output XML instead of ChangeLog format --xml-encoding ENCODING Insert encoding clause in XML header --hide-filenames Don't show filenames (ignored for XML output) --no-common-dir Don't shorten directory names from filenames. --rcs CVSROOT Handle filenames from raw RCS, for instance those produced by "cvs rlog" output, stripping the prefix CVSROOT. -P, --prune Don't show empty log messages --ignore-tag TAG Ignore individual changes that are associated with a given tag. May be repeated, if so, changes that are associated with any of the given tags are ignored. --show-tag TAG Log only individual changes that are associated with a given tag. May be repeated, if so, changes that are associated with any of the given tags are logged. --delta FROM_TAG:TO_TAG Attempt a delta between two tags (since FROM_TAG up to & including TO_TAG). The algorithm is a simple date-based one (this is a *hard* problem) so results are imperfect -g OPTS, --global-opts OPTS Invoke like this "cvs OPTS log ..." -l OPTS, --log-opts OPTS Invoke like this "cvs ... log OPTS" FILE1 [FILE2 ...] Show only log information for the named FILE(s) See http://www.red-bean.com/cvs2cl for maintenance and bug info. END_OF_INFO } __END__ =head1 NAME cvs2cl.pl - produces GNU-style ChangeLogs in CVS working copies, by running "cvs log" and parsing the output. Shared log entries are unified in an intuitive way. =head1 DESCRIPTION This script generates GNU-style ChangeLog files from CVS log information. Basic usage: just run it inside a working copy and a ChangeLog will appear. It requires repository access (i.e., 'cvs log' must work). Run "cvs2cl.pl --help" to see more advanced options. See http://www.red-bean.com/cvs2cl for updates, and for instructions on getting anonymous CVS access to this script. Maintainer: Karl Fogel Please report bugs to . =head1 README This script generates GNU-style ChangeLog files from CVS log information. Basic usage: just run it inside a working copy and a ChangeLog will appear. It requires repository access (i.e., 'cvs log' must work). Run "cvs2cl.pl --help" to see more advanced options. See http://www.red-bean.com/cvs2cl for updates, and for instructions on getting anonymous CVS access to this script. Maintainer: Karl Fogel Please report bugs to . =head1 PREREQUISITES This script requires C, C, and C. It also seems to require C or higher. =pod OSNAMES any =pod SCRIPT CATEGORIES Version_Control/CVS =cut -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- Note about a bug-slash-opportunity: ----------------------------------- There's a bug in Text::Wrap, which affects cvs2cl. This script reveals it: #!/usr/bin/perl -w use Text::Wrap; my $test_text = "This script demonstrates a bug in Text::Wrap. The very long line following this paragraph will be relocated relative to the surrounding text: ==================================================================== See? When the bug happens, we'll get the line of equal signs below this paragraph, even though it should be above."; # Print out the test text with no wrapping: print "$test_text"; print "\n"; print "\n"; # Now print it out wrapped, and see the bug: print wrap ("\t", " ", "$test_text"); print "\n"; print "\n"; If the line of equal signs were one shorter, then the bug doesn't happen. Interesting. Anyway, rather than fix this in Text::Wrap, we might as well write a new wrap() which has the following much-needed features: * initial indentation, like current Text::Wrap() * subsequent line indentation, like current Text::Wrap() * user chooses among: force-break long words, leave them alone, or die()? * preserve existing indentation: chopped chunks from an indented line are indented by same (like this line, not counting the asterisk!) * optional list of things to preserve on line starts, default ">" Note that the last two are essentially the same concept, so unify in implementation and give a good interface to controlling them. And how about: Optionally, when encounter a line pre-indented by same as previous line, then strip the newline and refill, but indent by the same. Yeah... libhtmlparser-java-1.6.20060610/src/src/0000755000175000017500000000000010442553350016413 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/doc-files/0000755000175000017500000000000010442553334020262 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/doc-files/overview.html0000644000175000017500000001160610232746732023025 0ustar tiagotiago HTML Parser Libraries Overview

    The HTML Parser Libraries.

    These java libraries provide access to the contents of local or remote HTML resources in a programatic way.

    Components

    The HTML Parser distribution is composed of:
    • a low level {@link org.htmlparser.lexer.Lexer lexer} that converts characters from a HTML page into a linear sequence of nodes
    • a high level {@link org.htmlparser.Parser parser} that provides a heirarchical document model of a HTML page
    • source code in the src.zip file

    Getting Started

    For novice users, an introductory guide on how to set up your environment to use the HTML Parser is provided in
    HTML Parser for Dummies.

    Building

    To build the HTML Parser you'll need to get the sources from the HTML Parser project on Sourceforge if you haven't already, and then follow the build instructions.

    Outstanding Issues.

    Bugs are by far, the highest priority issues. Various reports of bugs related to the HTML Parser is available from the Bug Tracker on SourceForge. Issues related to incorrect behaviour of the current parser should be logged and tracked using this mechanism. Please use task lists and enhancement requests for issues that would not be considered bugs.

    Several task lists are used to track the items that are not percieved as bugs, but are viewed by developers as things that need attention. The following list summarizes the purpose and target issues for each list.

    • Applications - Work associated with the sample applications included with the HTML Parser download is tracked by this list. This would also include proposals for other example applications.
    • Release - Work to be done before a major release is tracked by this list. Items included here must be resolved before the major release is considered complete. This can include refactoring, code clean-up, out-of-the-box experience work, build process fixes, platform (JDK) issues, performance or scalability enhancements, memory usage issues and other 'quality' issues that are not associated with a specific bug.
    • API - Work needed to enhance or fix the parser API is tracked by this list. Standards compliance, additional classes, method signatures, changes to parameter types, refactoring, deprecation, new or enhanced constructors, and other programatic interface issues would fall into this category. This list should be limited to those changes that could impact the developer community that relies on existing behaviour from the parser.
    • Documentation - Work associated with documenting the parser and it's example code and sample applications is tracked by this list. Javadocs, the web site and Wiki, Sourceforge site maintenance, mailing lists, forums, project documentation and other developer visible reference material would all fall under this category.

    The Request For Enhancement list contains items that are proposed for future versions of the parser. Users may add to this list what they feel are extensions beyond simple bug fixing. Some user entered bugs are also transferred to this list if the scope of the fix would be too significant a change for the current version, or involve API changes that need to be vetted against the current user community.

    Mailing Lists.

    If you want to be notified when new releases of HTML Parser are available, join the HTML Parser Announcement List.
    If you have questions about the usage of the parser, join the HTML Parser User List.
    If you want to join as a developer, please sign up on the HTML Parser Developer List libhtmlparser-java-1.6.20060610/src/src/doc-files/building.html0000644000175000017500000001243110232746732022751 0ustar tiagotiago How to Build the HTML Parser Libraries

    How to Build the HTML Parser libraries

    JDK

    Set up java. I won't include instructions here, just a link to the Sun j2se site. I use version 1.5, and you need a JDK (java development kit), not a JRE (java runtime environment).

    Test your installation by typing command:

    javac

    This should display help on the java compiler options.

    Ant

    Set up ant, the Java-based build tool from the Apache Jakarta project. It is kind of like Make, but without Make's wrinkles. The build.xml file the HTML Parser uses relies on command tags available in Ant version 1.4.1 or higher. The version currently used on the build machine is 1.6.2. The current version of Ant is available here.

    Basically you unzip the file into a directory and add an ANT_HOME environment variable that points at it. Test your installation by typing the command:

    ant -help

    This should display help on ant options.

    Third Party Libraries

    Any needed third-party libraries are included in the lib directory.

    The unit test code relies on lib/junit.jar from the JUnit project. The version used on the build machine is 3.8.1 which you can get here.

    Sources

    The distribution zip file contains a src.jar file. If you've unpacked the distribution this file should be in the top level directory you chose.

    Unjar this file with the command:

    jar -xf src.jar

    There should now be a build.xml in the top level directory.

    Building

    The default ant target 'htmlparser' builds everything:

    ant

    If you just want to build some of the parts see the help list:

    ant -projecthelp
     Package        glom the release and source files into the distribution zip file
     Release        prepare the release files
     changelog      create the change log from CVS logs
     checkstyle     check source code adheres to coding standards
     clean          cleanup
     compile        compile all java files
     compilelexer   compile lexer java files
     compileparser  compile parser java files
     htmlparser     same as Package plus cleanup
     init           initialize version properties
     jar            create htmlparser.jar and htmllexer.jar
     jarlexer       create htmllexer.jar
     jarparser      create htmlparser.jar
     javadoc        create JavaDoc (API) documentation
     sources        create the source zip
     test           run the JUnit tests
     thumbelina     create thumbelina.jar
     versionSource  update the version in all java files
      

    Developing

    For development purposes you might want to get an Integrated Development Environment (IDE) such as NetBeans or Eclipse. Mount the org directory where the HTML Parser was installed along with the junit.jar file from the lib directory, and the tools.jar file from the java JDK lib directory [where java is installed]/lib/tools.jar. "Build All" should work.

    CVS

    The most recent files are only available via CVS:
      server: cvs.htmlparser.sourceforge.net
      repository: /cvsroot/htmlparser
      
    For read-only access use 'pserver' and anonymous access with no password. For commit access you'll need to set up ssh (see an introduction to SSH on sourceforge and a guide on setting up ssh keys).

    Short instructions from Karle Kaila:

    I have installed SSH software from www.f-secure.com
    
    I think it was something like F-Secure SSH 5.2 for Win95/98/ME/NT4.0/2000/XP Client
    
    It is a nice grapfical SSH client both for terminal use and filetransfer
    and it also contains commandline ssh2 software that CVS needs.
    
    To access CVS I first set it up with these commands
    
    set CVS_RSH=ssh2
    set CVSROOT=username@cvs.htmlparser.sourceforge.net:/cvsroot/htmlparser
    
    username = your sourceforge username
    
    In an empty directory I then can give CVS commands such as
    
    cvs chekcout htmlparser
    
    It asks for your password to sourceforge
    
    This retrieves the latest  fileversions.
    Check the CVS commands in some handbook you can find on the internet.
    The manual I found is called Version Management with CVS by Per Cederqvist et al.
    perhaps from http://www.cvshome.org
    
    Derrick says:
    I need
    CVSROOT=:ext:username@cvs.htmlparser.sourceforge.net:/cvsroot/htmlparser
    CVS_RSH=ssh
    

    Other

    Some of the build.xml targets (like changelog) rely on Perl to execute, and need a sourceforge login via ssh (secure shell). This is unlikely to be needed by the casual user. libhtmlparser-java-1.6.20060610/src/src/doc-files/using.html0000644000175000017500000001067010232746732022304 0ustar tiagotiago How to Use the HTML Parser Libraries

    How to Use the HTML Parser libraries

    Step 1: Java

    You should make sure that a Java development system (JDK) is installed, not just a Java runtime (JRE). If you are working in an IDE (Integrated Development Environment) this is usually taken care of for you. If you are using just a command line, should see help information when you type:
      javac
      
    Java versions greater than 1.2 are supported for the parser, and Java 1.1 for the lexer. You can check your version with the command:
      java -version
      
    If you are using Java 5, you may need to specify option "-source 1.3" to avoid some warnings.

    Step 2: Setting the CLASSPATH

    To use the HTML Parser you will need to add the htmlparser.jar to the classpath. This jar includes all the files in htmllexer.jar, which is the subset of classes used by the lexer. If you are using an IDE, you need to add the htmlparser.jar to the list of jars/libraries used by your project.

    NetBeans

    • Right click on your project in the Projects Window (Ctrl-1) and choose Properties.
    • In the Project Properties pane choose the Libraries view.
    • Select the Compile tab.
    • Click the Add Jar/Folder button.
    • Browse to <htmlp_dir>/lib (where where <htmlp_dir> is the directory where you unzipped the distribution: xxx/htmlparser1_5), select the htmlparser.jar file and click on OK.

    Eclipse

    • Right click on your project in the Package Explorer Window (Shift-Alt-Q + P) and choose Properties.
    • In the Properties pane choose the Java Build Path view.
    • Select the Libraries tab.
    • Click the Add External Jars button.
    • Browse to <htmlp_dir>/lib (where where <htmlp_dir> is the directory where you unzipped the distribution: xxx/htmlparser1_5), select the htmlparser.jar file and click on OK.

    Command Line

    You can either add the jar to the CLASSPATH environment variable, or specify it each time on the command line:
    Windows
    set CLASSPATH=[htmlp_dir]\lib\htmlparser.jar;%CLASSPATH%
    where [htmlp_dir] is the directory where you unzipped the distribution: xxx\htmlparser1_5, or use:
    javac -classpath=[htmlp_dir]\lib\htmlparser.jar  MyProgram.java
    Linux
    export CLASSPATH=[htmlp_dir]/lib/htmlparser.jar:$CLASSPATH
    where [htmlp_dir] is the directory where you unzipped the distribution: xxx/htmlparser1_5, or use
    javac -classpath=[htmlp_dir]/lib/htmlparser.jar  MyProgram.java

    Step 3: Import Necessary Classes

    Whatever classes you use from the HTML Parser libraries will need to be imported by your program. For example, the simplest usage is:
        import org.htmlparser.Parser;
        import org.htmlparser.util.NodeList;
        import org.htmlparser.util.ParserException;
      
        class Test
        {
            public static void main (String[] args)
            {
                try
                {
                    Parser parser = new Parser (args[0]);
                    NodeList list = parser.parse (null);
                    System.out.println (list.toHtml ());
                }
                catch (ParserException pe)
                {
                    pe.printStackTrace ();
                }
            }
        }
      
    Note the import statements may also have been written:
        import org.htmlparser.*;
        import org.htmlparser.util.*;
      

    Step 4: Compile & Run

    Within an IDE the compile and execute steps are usually combined.

    NetBeans

    • From the Run menu select Run Main Project (F6).

    Eclipse

    • From the Run menu select Run... and browse to the Main class and click the Run button.

    Command Line

    The above program in a file called Test.java can be compiled and run with the commands:
    Windows
      javac -classpath=[htmlp_dir]\lib\htmlparser.jar  Test.java
      java -classpath=.;[htmlp_dir]\lib\htmlparser.jar  Test.java
      
    Linux
      javac -classpath=[htmlp_dir]/lib/htmlparser.jar  Test.java
      java -classpath=.:[htmlp_dir]/lib/htmlparser.jar  Test.java
      
    libhtmlparser-java-1.6.20060610/src/src/org/0000755000175000017500000000000010442553334017204 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/0000755000175000017500000000000010442554070021363 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/0000755000175000017500000000000010442554072025270 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/SiteCapturer.java0000644000175000017500000006541510226721236030556 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/SiteCapturer.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:41 $ // $Revision: 1.9 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.HashSet; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.PrototypicalNodeFactory; import org.htmlparser.filters.AndFilter; import org.htmlparser.filters.HasAttributeFilter; import org.htmlparser.filters.NodeClassFilter; import org.htmlparser.tags.BaseHrefTag; import org.htmlparser.tags.FrameTag; import org.htmlparser.tags.ImageTag; import org.htmlparser.tags.LinkTag; import org.htmlparser.tags.MetaTag; import org.htmlparser.util.EncodingChangeException; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; /** * Save a web site locally. * Illustrative program to save a web site contents locally. * It was created to demonstrate URL rewriting in it's simplest form. * It uses customized tags in the NodeFactory to alter the URLs. * This program has a number of limitations: *
      *
    • it doesn't capture forms, this would involve too many assumptions
    • *
    • it doesn't capture script references, so funky onMouseOver and other * non-static content will not be faithfully reproduced
    • *
    • it doesn't handle style sheets
    • *
    • it doesn't dig into attributes that might reference resources, so * for example, background images won't necessarily be captured
    • *
    • worst of all, it gets confused when a URL both has content and is * the prefix for other content, * i.e. http://whatever.com/top and http://whatever.com/top/sub.html both * yield content, since this cannot be faithfully replicated to a static * directory structure (this happens a lot with servlet based sites)
    • *
    */ public class SiteCapturer { /** * The web site to capture. * This is used as the base URL in deciding whether to adjust a link * and whether to capture a page or not. */ protected String mSource; /** * The local directory to capture to. * This is used as a base prefix for files saved locally. */ protected String mTarget; /** * The list of pages to capture. * Links are added to this list as they are discovered, and removed in * sequential order (FIFO queue) leading to a breadth * first traversal of the web site space. */ protected ArrayList mPages; /** * The set of pages already captured. * Used to avoid repeated acquisition of the same page. */ protected HashSet mFinished; /** * The list of resources to copy. * Images and other resources are added to this list as they are discovered. */ protected ArrayList mImages; /** * The set of resources already copied. * Used to avoid repeated acquisition of the same images and other resources. */ protected HashSet mCopied; /** * The parser to use for processing. */ protected Parser mParser; /** * If true, save resources locally too, * otherwise, leave resource links pointing to original page. */ protected boolean mCaptureResources; /** * The filter to apply to the nodes retrieved. */ protected NodeFilter mFilter; /** * Copy buffer size. * Resources are moved to disk in chunks this size or less. */ protected final int TRANSFER_SIZE = 4096; /** * Create a web site capturer. */ public SiteCapturer () { PrototypicalNodeFactory factory; mSource = null; mTarget = null; mPages = new ArrayList (); mFinished = new HashSet (); mImages = new ArrayList (); mCopied = new HashSet (); mParser = new Parser (); factory = new PrototypicalNodeFactory (); factory.registerTag (new LocalLinkTag ()); factory.registerTag (new LocalFrameTag ()); factory.registerTag (new LocalBaseHrefTag ()); factory.registerTag (new LocalImageTag ()); mParser.setNodeFactory (factory); mCaptureResources = true; mFilter = null; } /** * Getter for property source. * @return Value of property source. */ public String getSource () { return (mSource); } /** * Setter for property source. * This is the base URL to capture. URL's that don't start with this prefix * are ignored (left as is), while the ones with this URL as a base are * re-homed to the local target. * @param source New value of property source. */ public void setSource (String source) { if (source.endsWith ("/")) source = source.substring (0, source.length () - 1); mSource = source; } /** * Getter for property target. * @return Value of property target. */ public String getTarget () { return (mTarget); } /** * Setter for property target. * This is the local directory under which to save the site's pages. * @param target New value of property target. */ public void setTarget (String target) { mTarget = target; } /** * Getter for property captureResources. * If true, the images and other resources referenced by * the site and within the base URL tree are also copied locally to the * target directory. If false, the image links are left 'as * is', still refering to the original site. * @return Value of property captureResources. */ public boolean getCaptureResources () { return (mCaptureResources); } /** * Setter for property captureResources. * @param capture New value of property captureResources. */ public void setCaptureResources (boolean capture) { mCaptureResources = capture; } /** Getter for property filter. * @return Value of property filter. * */ public NodeFilter getFilter () { return (mFilter); } /** Setter for property filter. * @param filter New value of property filter. * */ public void setFilter (NodeFilter filter) { mFilter = filter; } /** * Returns true if the link is one we are interested in. * @param link The link to be checked. * @return true if the link has the source URL as a prefix * and doesn't contain '?' or '#'; the former because we won't be able to * handle server side queries in the static target directory structure and * the latter because presumably the full page with that reference has * already been captured previously. This performs a case insensitive * comparison, which is cheating really, but it's cheap. */ protected boolean isToBeCaptured (String link) { return ( link.toLowerCase ().startsWith (getSource ().toLowerCase ()) && (-1 == link.indexOf ("?")) && (-1 == link.indexOf ("#"))); } /** * Returns true if the link contains text/html content. * @param link The URL to check for content type. * @return true if the HTTP header indicates the type is * "text/html". * @exception ParserException If the supplied URL can't be read from. */ protected boolean isHtml (String link) throws ParserException { URL url; URLConnection connection; String type; boolean ret; ret = false; try { url = new URL (link); connection = url.openConnection (); type = connection.getContentType (); if (type == null) ret = false; else ret = type.startsWith ("text/html"); } catch (Exception e) { throw new ParserException ("URL " + link + " has a problem", e); } return (ret); } /** * Converts a link to local. * A relative link can be used to construct both a URL and a file name. * Basically, the operation is to strip off the base url, if any, * and then prepend as many dot-dots as necessary to make * it relative to the current page. * A bit of a kludge handles the root page specially by calling it * index.html, even though that probably isn't it's real file name. * This isn't pretty, but it works for me. * @param link The link to make relative. * @param current The current page URL, or empty if it's an absolute URL * that needs to be converted. * @return The URL relative to the current page. */ protected String makeLocalLink (String link, String current) { int i; int j; String ret; if (link.equals (getSource ()) || (!getSource ().endsWith ("/") && link.equals (getSource () + "/"))) ret = "index.html"; // handle the root page specially else if (link.startsWith (getSource ()) && (link.length () > getSource ().length ())) ret = link.substring (getSource ().length () + 1); else ret = link; // give up // make it relative to the current page by prepending "../" for // each '/' in the current local path if ((null != current) && link.startsWith (getSource ()) && (current.length () > getSource ().length ())) { current = current.substring (getSource ().length () + 1); i = 0; while (-1 != (j = current.indexOf ('/', i))) { ret = "../" + ret; i = j + 1; } } return (ret); } /** * Unescape a URL to form a file name. * Very crude. * @param raw The escaped URI. * @return The native URI. */ protected String decode (String raw) { int length; int start; int index; int value; StringBuffer ret; ret = new StringBuffer (raw.length ()); length = raw.length (); start = 0; while (-1 != (index = raw.indexOf ('%', start))) { // append the part up to the % sign ret.append (raw.substring (start, index)); // there must be two hex digits after the percent sign if (index + 2 < length) { try { value = Integer.parseInt (raw.substring (index + 1, index + 3), 16); ret.append ((char)value); start = index + 3; } catch (NumberFormatException nfe) { ret.append ('%'); start = index + 1; } } else { // this case is actually illegal in a URI, but... ret.append ('%'); start = index + 1; } } ret.append (raw.substring (start)); return (ret.toString ()); } /** * Copy a resource (image) locally. * Removes one element from the 'to be copied' list and saves the * resource it points to locally as a file. */ protected void copy () { String link; String raw; String name; File file; File dir; URL source; byte[] data; InputStream in; FileOutputStream out; int read; link = (String)mImages.remove (0); mCopied.add (link); if (getCaptureResources ()) { raw = makeLocalLink (link, ""); name = decode (raw); file = new File (getTarget (), name); System.out.println ("copying " + link + " to " + file.getAbsolutePath ()); // ensure directory exists dir = file.getParentFile (); if (!dir.exists ()) dir.mkdirs (); try { source = new URL (link); data = new byte [TRANSFER_SIZE]; try { in = source.openStream (); try { out = new FileOutputStream (file); try { while (-1 != (read = in.read (data, 0, data.length))) out.write (data, 0, read); } finally { out.close (); } } catch (FileNotFoundException fnfe) { fnfe.printStackTrace (); } finally { in.close (); } } catch (FileNotFoundException fnfe) { System.err.println ("broken link " + fnfe.getMessage () + " ignored"); } } catch (MalformedURLException murle) { murle.printStackTrace (); } catch (IOException ioe) { ioe.printStackTrace (); } } } /** * Process a single page. * @param filter The filter to apply to the collected nodes. * @exception ParserException If a parse error occurs. */ protected void process (NodeFilter filter) throws ParserException { String url; int bookmark; NodeList list; NodeList robots; MetaTag robot; String content; File file; File dir; PrintWriter out; // get the next URL and add it to the done pile url = (String)mPages.remove (0); System.out.println ("processing " + url); mFinished.add (url); try { bookmark = mPages.size (); // fetch the page and gather the list of nodes mParser.setURL (url); try { list = new NodeList (); for (NodeIterator e = mParser.elements (); e.hasMoreNodes (); ) list.add (e.nextNode ()); // URL conversion occurs in the tags } catch (EncodingChangeException ece) { // fix bug #998195 SiteCatpurer just crashed // try again with the encoding now set correctly // hopefully mPages, mImages, mCopied and mFinished won't be corrupted mParser.reset (); list = new NodeList (); for (NodeIterator e = mParser.elements (); e.hasMoreNodes (); ) list.add (e.nextNode ()); } // handle robots meta tag according to http://www.robotstxt.org/wc/meta-user.html // // robots = list.extractAllNodesThatMatch ( new AndFilter ( new NodeClassFilter (MetaTag.class), new HasAttributeFilter ("name", "robots")), true); if (0 != robots.size ()) { robot = (MetaTag)robots.elementAt (0); content = robot.getAttribute ("content").toLowerCase (); if ((-1 != content.indexOf ("none")) || (-1 != content.indexOf ("nofollow"))) // reset mPages for (int i = bookmark; i < mPages.size (); i++) mPages.remove (i); if ((-1 != content.indexOf ("none")) || (-1 != content.indexOf ("noindex"))) return; } if (null != filter) list.keepAllNodesThatMatch (filter, true); // save the page locally file = new File (getTarget (), makeLocalLink (url, "")); dir = file.getParentFile (); if (!dir.exists ()) dir.mkdirs (); else if (!dir.isDirectory ()) { dir = new File (dir.getParentFile (), dir.getName () + ".content"); if (!dir.exists ()) dir.mkdirs (); file = new File (dir, file.getName ()); } try { out = new PrintWriter (new FileOutputStream (file)); for (int i = 0; i < list.size (); i++) out.print (list.elementAt (i).toHtml ()); out.close (); } catch (FileNotFoundException fnfe) { fnfe.printStackTrace (); } } catch (ParserException pe) { String message; // this exception handling is suboptimal, // but it recognizes resources that aren't text/html message = pe.getMessage (); if ((null != message) && (message.endsWith ("does not contain text"))) { if (!mCopied.contains (url)) if (!mImages.contains (url)) mImages.add (url); mFinished.remove (url); } else throw pe; } } /** * Link tag that rewrites the HREF. * The HREF is changed to a local target if it matches the source. */ class LocalLinkTag extends LinkTag { public void doSemanticAction () throws ParserException { boolean html; String link; // get the link link = getLink (); // check if it needs to be captured if (isToBeCaptured (link)) { // add the link to a list to be processed if (mFinished.contains (link)) html = true; else if (mPages.contains (link)) html = true; else if (mCopied.contains (link)) html = false; else if (mImages.contains (link)) html = false; else { // this test is expensive, do it reluctantly html = isHtml (link); if (html) mPages.add (link); else mImages.add (link); } // alter the link if (html || (!html && getCaptureResources ())) link = makeLocalLink (link, mParser.getLexer ().getPage ().getUrl ()); setLink (link); } } } /** * Frame tag that rewrites the SRC URLs. * The SRC URLs are mapped to local targets if they match the source. */ class LocalFrameTag extends FrameTag { public void doSemanticAction () throws ParserException { boolean html; String link; // get the link link = getFrameLocation (); // check if it needs to be captured if (isToBeCaptured (link)) { // add the link to a list to be processed if (mFinished.contains (link)) html = true; else if (mPages.contains (link)) html = true; else if (mCopied.contains (link)) html = false; else if (mImages.contains (link)) html = false; else { // this test is expensive, do it reluctantly html = isHtml (link); if (html) mPages.add (link); else mImages.add (link); } // alter the link if (html || (!html && getCaptureResources ())) link = makeLocalLink (link, mParser.getLexer ().getPage ().getUrl ()); setFrameLocation (link); } } } /** * Image tag that rewrites the SRC URL. * If resources are being captured the SRC is mapped to a local target if * it matches the source, otherwise it is convered to a full URL to point * back to the original site. */ class LocalImageTag extends ImageTag { public void doSemanticAction () throws ParserException { String image; // get the image url image = getImageURL (); // check if it needs to be captured if (isToBeCaptured (image)) { // add the image to the list needing to be copied if (!mCopied.contains (image)) if (!mImages.contains (image)) mImages.add (image); if (getCaptureResources ()) image = makeLocalLink (image, mParser.getLexer ().getPage ().getUrl ()); // alter the link setImageURL (image); } } } /** * Base tag that doesn't show. * The toHtml() method is overridden to return an empty string, * effectively shutting off the base reference. */ class LocalBaseHrefTag extends BaseHrefTag { // we don't want to have a base pointing back at the source page public String toHtml () { return (""); } } /** * Perform the capture. */ public void capture () { mPages.clear (); mPages.add (getSource ()); while (0 != mPages.size ()) try { process (getFilter ()); while (0 != mImages.size ()) copy (); } catch (ParserException pe) { // this exception handling is suboptimal, // but it messages correctly about broken links Throwable throwable; throwable = pe.getThrowable (); if (null != throwable) { throwable = throwable.getCause (); if (throwable instanceof FileNotFoundException) System.err.println ("broken link " + ((FileNotFoundException)throwable).getMessage () + " ignored"); else pe.printStackTrace (); } else pe.printStackTrace (); } } /** * Mainline to capture a web site locally. * @param args The command line arguments. * There are three arguments the web site to capture, the local directory * to save it to, and a flag (true or false) to indicate whether resources * such as images and video are to be captured as well. * These are requested via dialog boxes if not supplied. * @exception MalformedURLException If the supplied URL is invalid. * @exception IOException If an error occurs reading the page or resources. */ public static void main (String[] args) throws MalformedURLException, IOException { SiteCapturer worker; String url; JFileChooser chooser; URL source; String path; File target; Boolean capture; int ret; worker = new SiteCapturer (); if (0 >= args.length) { url = (String)JOptionPane.showInputDialog ( null, "Enter the URL to capture:", "Web Site", JOptionPane.PLAIN_MESSAGE, null, null, "http://htmlparser.sourceforge.net/wiki"); if (null != url) worker.setSource (url); else System.exit (1); } else worker.setSource (args[0]); if (1 >= args.length) { url = worker.getSource (); source = new URL (url); path = new File (new File ("." + File.separator), source.getHost () + File.separator).getCanonicalPath (); target = new File (path); chooser = new JFileChooser (target); chooser.setDialogType (JFileChooser.SAVE_DIALOG); chooser.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY); chooser.setSelectedFile (target); // this doesn't frickin' work chooser.setMultiSelectionEnabled (false); chooser.setDialogTitle ("Target Directory"); ret = chooser.showSaveDialog (null); if (ret == JFileChooser.APPROVE_OPTION) worker.setTarget (chooser.getSelectedFile ().getAbsolutePath ()); else System.exit (1); } else worker.setTarget (args[1]); if (2 >= args.length) { capture = (Boolean)JOptionPane.showInputDialog ( null, "Should resources be captured:", "Capture Resources", JOptionPane.PLAIN_MESSAGE, null, new Object[] { Boolean.TRUE, Boolean.FALSE}, Boolean.TRUE); if (null != capture) worker.setCaptureResources (capture.booleanValue ()); else System.exit (1); } else worker.setCaptureResources ((Boolean.valueOf (args[2]).booleanValue ())); worker.capture (); System.exit (0); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/LinkExtractor.java0000644000175000017500000000620410226721236030724 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/LinkExtractor.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:41 $ // $Revision: 1.52 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications; import javax.swing.JOptionPane; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.AndFilter; import org.htmlparser.filters.NodeClassFilter; import org.htmlparser.tags.LinkTag; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; /** * LinkExtractor extracts all the links from the given webpage * and prints them on standard output. */ public class LinkExtractor { /** * Run the link extractor. * @param args [0] Optional url to extract links from. * An input dialog is displayed if it is not supplied. */ public static void main (String[] args) { String url; Parser parser; NodeFilter filter; NodeList list; if (0 >= args.length) { url = (String)JOptionPane.showInputDialog ( null, "Enter the URL to extract links from:", "Web Site", JOptionPane.PLAIN_MESSAGE, null, null, "http://htmlparser.sourceforge.net/wiki/"); if (null == url) System.exit (1); } else url = args[0]; filter = new NodeClassFilter (LinkTag.class); if ((1 < args.length) && args[1].equalsIgnoreCase ("-maillinks")) filter = new AndFilter ( filter, new NodeFilter () { public boolean accept (Node node) { return (((LinkTag)node).isMailLink ()); } } ); try { parser = new Parser (url); list = parser.extractAllNodesThatMatch (filter); for (int i = 0; i < list.size (); i++) System.out.println (list.elementAt (i).toHtml ()); } catch (ParserException e) { e.printStackTrace (); } System.exit (0); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/StringExtractor.java0000644000175000017500000000614710226721236031303 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/StringExtractor.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.48 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications; import org.htmlparser.beans.StringBean; import org.htmlparser.util.ParserException; /** * Extract plaintext strings from a web page. * Illustrative program to gather the textual contents of a web page. * Uses a {@link org.htmlparser.beans.StringBean StringBean} to accumulate * the user visible text (what a browser would display) into a single string. */ public class StringExtractor { private String resource; /** * Construct a StringExtractor to read from the given resource. * @param resource Either a URL or a file name. */ public StringExtractor (String resource) { this.resource = resource; } /** * Extract the text from a page. * @return The textual contents of the page. * @param links if true include hyperlinks in output. * @exception ParserException If a parse error occurs. */ public String extractStrings (boolean links) throws ParserException { StringBean sb; sb = new StringBean (); sb.setLinks (links); sb.setURL (resource); return (sb.getStrings ()); } /** * Mainline. * @param args The command line arguments. */ public static void main (String[] args) { boolean links; String url; StringExtractor se; links = false; url = null; for (int i = 0; i < args.length; i++) if (args[i].equalsIgnoreCase ("-links")) links = true; else url = args[i]; if (null != url) { se = new StringExtractor (url); try { System.out.println (se.extractStrings (links)); } catch (ParserException e) { e.printStackTrace (); } } else System.out.println ("Usage: java -classpath htmlparser.jar org.htmlparser.parserapplications.StringExtractor [-links] url"); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/0000755000175000017500000000000010442554074030126 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/0000755000175000017500000000000010442554074031771 5ustar tiagotiago././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/NodeClassFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/Nod0000644000175000017500000002010310226721236032424 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/NodeClassFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; import java.util.Set; import javax.swing.JComboBox; //import javax.swing.event.DocumentEvent; //import javax.swing.event.DocumentListener; //import javax.swing.text.BadLocationException; //import javax.swing.text.Document; import org.htmlparser.Node; import org.htmlparser.NodeFactory; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.PrototypicalNodeFactory; import org.htmlparser.Tag; import org.htmlparser.filters.NodeClassFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; /** * Wrapper for NodeClassFilters. */ public class NodeClassFilterWrapper extends Filter implements ActionListener // , // DocumentListener { /** * The underlying filter. */ protected NodeClassFilter mFilter; /** * Combo box for strategy. */ protected JComboBox mClass; /** * Create a wrapper over a new NodeClassFilter. */ public NodeClassFilterWrapper () { mFilter = new NodeClassFilter (); // add the strategy choice mClass = new JComboBox (); mClass.addItem (""); add (mClass); mClass.addActionListener (this); } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("Nodes of class"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/NodeClassFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { NodeClassFilter ret; ret = new NodeClassFilter (); ret.setMatchClass (mFilter.getMatchClass ()); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { NodeFactory factory; PrototypicalNodeFactory proto; Set names; String name; Tag tag; mFilter = (NodeClassFilter)filter; factory = context.getNodeFactory (); if (factory instanceof PrototypicalNodeFactory) { proto = (PrototypicalNodeFactory)factory; // iterate over the classes names = proto.getTagNames (); for (Iterator iterator = names.iterator (); iterator.hasNext (); ) { name = (String)iterator.next (); tag = proto.get (name); mClass.addItem (tag.getClass ().getName ()); } } mClass.setSelectedItem (mFilter.getMatchClass ().getName ()); } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { return (new NodeFilter[0]); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { // should we complain? } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  1. indent level - the number of spaces to insert at the beginning of each line
  2. *
  3. filter number - the next available filter number
  4. *
  5. filter array number - the next available array of filters number
  6. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String ret; ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("NodeClassFilter "); out.append (ret); out.append (" = new NodeClassFilter ();"); newline (out); spaces (out, context[0]); out.append ("try { "); out.append (ret); out.append (".setMatchClass (Class.forName (\""); out.append (mFilter.getMatchClass ().getName ()); out.append ("\")); } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace (); }"); newline (out); return (ret); } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } // // ActionListener interface // /** * Invoked when an action occurs on the combo box. * @param event Details about the action event. */ public void actionPerformed (ActionEvent event) { Object source; source = event.getSource (); if (source == mClass) try { mFilter.setMatchClass (Class.forName ((String)mClass.getSelectedItem ())); } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace (); } } // // // // DocumentListener interface // // // // public void insertUpdate (DocumentEvent e) // { // Document doc; // // doc = e.getDocument (); // try // { // mFilter.setPattern (doc.getText (0, doc.getLength ())); // } // catch (BadLocationException ble) // { // ble.printStackTrace (); // } // } // // public void removeUpdate (DocumentEvent e) // { // Document doc; // // doc = e.getDocument (); // try // { // mFilter.setPattern (doc.getText (0, doc.getLength ())); // } // catch (BadLocationException ble) // { // ble.printStackTrace (); // } // } // // public void changedUpdate (DocumentEvent e) // { // // plain text components don't fire these events // } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/images/libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/ima0000755000175000017500000000000010442553346032461 5ustar tiagotiago././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/images/HasSiblingFilter.giflibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/ima0000644000175000017500000000012610203710654032452 0ustar tiagotiagoGIF89a! ,'i;MzU3&mD H~=%L\ZfYj;././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/images/StringFilter.giflibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/ima0000644000175000017500000000012710203710654032453 0ustar tiagotiagoGIF89a! ,( 팠+hO}@EVdZoeH;././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/AndFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/And0000644000175000017500000001531410226721236032416 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/AndFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.AndFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; import org.htmlparser.parserapplications.filterbuilder.SubFilterList; /** * Wrapper for AndFilters. */ public class AndFilterWrapper extends Filter { /** * The drop target container. */ protected SubFilterList mContainer; /** * The underlying filter. */ protected AndFilter mFilter; /** * Create a wrapper over a new AndFilter. */ public AndFilterWrapper () { mFilter = new AndFilter (); // add the subfilter container mContainer = new SubFilterList (this, "Predicates", 0); add (mContainer); } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("And"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/AndFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { NodeFilter[] predicates; NodeFilter[] temp; AndFilter ret; ret = new AndFilter (); predicates = mFilter.getPredicates (); temp = new NodeFilter[predicates.length]; for (int i = 0; i < predicates.length; i++) temp[i] = ((Filter)predicates[i]).getNodeFilter (); ret.setPredicates (temp); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { mFilter = (AndFilter)filter; } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { return (mFilter.getPredicates ()); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { mFilter.setPredicates (filters); } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  7. indent level - the number of spaces to insert at the beginning of each line
  8. *
  9. filter number - the next available filter number
  10. *
  11. filter array number - the next available array of filters number
  12. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String array; NodeFilter[] predicates; String[] names; String ret; predicates = mFilter.getPredicates (); array = null; // stoopid Java compiler if (0 != predicates.length) { names = new String[predicates.length]; for (int i = 0; i < predicates.length; i++) { names[i] = ((Filter)predicates[i]).toJavaCode (out, context); } array = "array" + context[2]++; spaces (out, context[0]); out.append ("NodeFilter[] "); out.append (array); out.append (" = new NodeFilter["); out.append (predicates.length); out.append ("];"); newline (out); for (int i = 0; i < predicates.length; i++) { spaces (out, context[0]); out.append (array); out.append ("["); out.append (i); out.append ("] = "); out.append (names[i]); out.append (";"); newline (out); } } ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("AndFilter "); out.append (ret); out.append (" = new AndFilter ();"); newline (out); if (0 != predicates.length) { spaces (out, context[0]); out.append (ret); out.append (".setPredicates ("); out.append (array); out.append (");"); newline (out); } return (ret); } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/HasChildFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/Has0000644000175000017500000001635010226721236032430 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/HasChildFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JCheckBox; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.HasChildFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; import org.htmlparser.parserapplications.filterbuilder.SubFilterList; /** * Wrapper for HasChildFilters. */ public class HasChildFilterWrapper extends Filter implements ActionListener { /** * The underlying filter. */ protected HasChildFilter mFilter; /** * The check box for recursion. */ protected JCheckBox mRecursive; /** * The drop target container. */ protected SubFilterList mContainer; /** * Create a wrapper over a new HasChildFilter. */ public HasChildFilterWrapper () { mFilter = new HasChildFilter (); // add the recursive flag mRecursive = new JCheckBox ("Recursive"); add (mRecursive); mRecursive.addActionListener (this); mRecursive.setSelected (mFilter.getRecursive ()); // add the subfilter container mContainer = new SubFilterList (this, "Child Filter", 1); add (mContainer); } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("Has Child"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/HasChildFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { NodeFilter filter; HasChildFilter ret; ret = new HasChildFilter (); ret.setRecursive (mFilter.getRecursive ()); filter = mFilter.getChildFilter (); if (null != filter) ret.setChildFilter (((Filter)filter).getNodeFilter ()); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { mFilter = (HasChildFilter)filter; mRecursive.setSelected (mFilter.getRecursive ()); } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { NodeFilter filter; NodeFilter[] ret; filter = mFilter.getChildFilter (); if (null != filter) ret = new NodeFilter[] { filter }; else ret = new NodeFilter[0]; return (ret); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { if (0 != filters.length) mFilter.setChildFilter (filters[0]); else mFilter.setChildFilter (null); } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  13. indent level - the number of spaces to insert at the beginning of each line
  14. *
  15. filter number - the next available filter number
  16. *
  17. filter array number - the next available array of filters number
  18. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String name; String ret; if (null != mFilter.getChildFilter ()) name = ((Filter)mFilter.getChildFilter ()).toJavaCode (out, context); else name = null; ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("HasChildFilter "); out.append (ret); out.append (" = new HasChildFilter ();"); newline (out); spaces (out, context[0]); out.append (ret); out.append (".setRecursive ("); out.append (mFilter.getRecursive () ? "true" : "false"); out.append (");"); newline (out); if (null != name) { spaces (out, context[0]); out.append (ret); out.append (".setChildFilter ("); out.append (name); out.append (");"); newline (out); } return (ret); } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } // // ActionListener interface // /** * Invoked when an action occurs on the check box. * @param event Details about the action event. */ public void actionPerformed (ActionEvent event) { Object source; boolean recursive; source = event.getSource (); if (source == mRecursive) { recursive = mRecursive.isSelected (); mFilter.setRecursive (recursive); } } } ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/RegexFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/Reg0000644000175000017500000002443110226721236032431 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/RegexFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComboBox; import javax.swing.JTextArea; import javax.swing.border.BevelBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.RegexFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; /** * Wrapper for RegexFilters. */ public class RegexFilterWrapper extends Filter implements ActionListener, DocumentListener { /** * Mapping for RegexFilter constants to strings. */ public static Object[][] mMap; static { mMap = new Object[3][]; mMap[0] = new Object[2]; mMap[0][0] = "MATCH"; mMap[0][1] = new Integer (RegexFilter.MATCH); mMap[1] = new Object[2]; mMap[1][0] = "LOOKINGAT"; mMap[1][1] = new Integer (RegexFilter.LOOKINGAT); mMap[2] = new Object[2]; mMap[2][0] = "FIND"; mMap[2][1] = new Integer (RegexFilter.FIND); } /** * The underlying filter. */ protected RegexFilter mFilter; /** * Text to check for */ protected JTextArea mPattern; /** * Combo box for strategy. */ protected JComboBox mStrategy; /** * Create a wrapper over a new RegexFilter. */ public RegexFilterWrapper () { mFilter = new RegexFilter (); // add the text pattern mPattern = new JTextArea (2, 20); mPattern.setBorder (new BevelBorder (BevelBorder.LOWERED)); add (mPattern); mPattern.getDocument ().addDocumentListener (this); mPattern.setText (mFilter.getPattern ()); // add the strategy choice mStrategy = new JComboBox (); mStrategy.addItem ("MATCH"); mStrategy.addItem ("LOOKINGAT"); mStrategy.addItem ("FIND"); add (mStrategy); mStrategy.addActionListener (this); mStrategy.setSelectedIndex (strategyToIndex (mFilter.getStrategy ())); } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("Nodes containing regex"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/RegexFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { RegexFilter ret; ret = new RegexFilter (); ret.setStrategy (mFilter.getStrategy ()); ret.setPattern (mFilter.getPattern ()); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { mFilter = (RegexFilter)filter; mPattern.setText (mFilter.getPattern ()); mStrategy.setSelectedIndex (strategyToIndex (mFilter.getStrategy ())); } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { return (new NodeFilter[0]); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { // should we complain? } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  19. indent level - the number of spaces to insert at the beginning of each line
  20. *
  21. filter number - the next available filter number
  22. *
  23. filter array number - the next available array of filters number
  24. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String ret; ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("RegexFilter "); out.append (ret); out.append (" = new RegexFilter ();"); newline (out); spaces (out, context[0]); out.append (ret); out.append (".setStrategy (RegexFilter."); out.append (strategyToString (mFilter.getStrategy ())); out.append (");"); newline (out); spaces (out, context[0]); out.append (ret); out.append (".setPattern (\""); out.append (mFilter.getPattern ()); out.append ("\");"); newline (out); return (ret); } /** * Convert the regex strategy to a string. * @param strategy The regex strategy. * @return A string for display in the GUI or in the Java program. */ public String strategyToString (int strategy) { for (int i =0; i < mMap.length; i++) if (strategy == ((Integer)mMap[i][1]).intValue ()) return ((String)mMap[i][0]); throw new IllegalArgumentException ("unknown strategy constant - " + strategy); } /** * Convert a string to a regex strategy. * @param strategy The string equivalent of a regex strategy. * @return The regex strategy to use in executing the regular expression. */ public int stringToStrategy (String strategy) { for (int i =0; i < mMap.length; i++) if (strategy.equalsIgnoreCase ((String)mMap[i][0])) return (((Integer)mMap[i][1]).intValue ()); throw new IllegalArgumentException ("unknown strategy constant - " + strategy); } /** * Convert the regex strategy to an index into the map. * @param strategy The regex strategy. * @return The index of the regex strategy in the map. */ public int strategyToIndex (int strategy) { for (int i =0; i < mMap.length; i++) if (strategy == ((Integer)mMap[i][1]).intValue ()) return (i); throw new IllegalArgumentException ("unknown strategy constant - " + strategy); } /** * Convert an index into a regex strategy. * @param index The index of the regex strategy in the map. * @return The regex strategy at that inxdex. */ public int indexToStrategy (int index) { return (((Integer)mMap[index][1]).intValue ()); } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } // // ActionListener interface // /** * Invoked when an action occurs on the combo box. * @param event Details about the action event. */ public void actionPerformed (ActionEvent event) { Object source; source = event.getSource (); if (source == mStrategy) mFilter.setStrategy (indexToStrategy (mStrategy.getSelectedIndex ())); } // // DocumentListener interface // /** * Handle an insert update event. * @param e Details about the insert event. */ public void insertUpdate (DocumentEvent e) { Document doc; doc = e.getDocument (); try { mFilter.setPattern (doc.getText (0, doc.getLength ())); } catch (BadLocationException ble) { ble.printStackTrace (); } } /** * Handle a remove update event. * @param e Details about the remove event. */ public void removeUpdate (DocumentEvent e) { Document doc; doc = e.getDocument (); try { mFilter.setPattern (doc.getText (0, doc.getLength ())); } catch (BadLocationException ble) { ble.printStackTrace (); } } /** * Handle a change update event. * @param e Details about the change event. */ public void changedUpdate (DocumentEvent e) { // plain text components don't fire these events } } ././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/HasAttributeFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/Has0000644000175000017500000003125210226721236032426 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/HasAttributeFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.Vector; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JTextArea; import javax.swing.border.BevelBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import org.htmlparser.Attribute; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.Tag; import org.htmlparser.filters.HasAttributeFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; import org.htmlparser.tags.CompositeTag; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; /** * Wrapper for HasAttributeFilters. */ public class HasAttributeFilterWrapper extends Filter implements ActionListener, DocumentListener { /** * The underlying filter. */ protected HasAttributeFilter mFilter; /** * Combo box for attribute name. */ protected JComboBox mAttributeName; /** * The check box for has value. */ protected JCheckBox mValued; /** * Value to check for. */ protected JTextArea mAttributeValue; /** * Create a wrapper over a new HasAttributeFilter. */ public HasAttributeFilterWrapper () { String value; mFilter = new HasAttributeFilter (); // add the attribute name choice mAttributeName = new JComboBox (); mAttributeName.setEditable (true); add (mAttributeName); mAttributeName.addItem (mFilter.getAttributeName ()); mAttributeName.addActionListener (this); // add the valued flag value = mFilter.getAttributeValue (); mValued = new JCheckBox ("Has Value"); add (mValued); mValued.setSelected (null != value); mValued.addActionListener (this); // add the value pattern mAttributeValue = new JTextArea (2, 20); mAttributeValue.setBorder (new BevelBorder (BevelBorder.LOWERED)); add (mAttributeValue); if (null != value) mAttributeValue.setText (value); else mAttributeValue.setVisible (false); mAttributeValue.getDocument ().addDocumentListener (this); } // // local methods // /** * Add the attribute names from the node to the set of attribute names. * @param set The set to add to. * @param node The node with attributes to add. */ protected void addAttributes (Set set, Node node) { Vector attributes; Attribute attribute; String name; NodeList children; if (node instanceof Tag) { attributes = ((Tag)node).getAttributesEx (); for (int i = 1; i < attributes.size (); i++) { attribute = (Attribute)attributes.elementAt (i); name = attribute.getName (); if (null != name) set.add (name); } if (node instanceof CompositeTag) { children = ((CompositeTag)node).getChildren (); if (null != children) for (int i = 0; i < children.size (); i++) addAttributes (set, children.elementAt (i)); } } } /** * Add the attribute values from the node to the set of attribute values. * @param set The set to add to. * @param node The node with attributes to add. */ protected void addAttributeValues (Set set, Node node) { Vector attributes; Attribute attribute; String value; NodeList children; if (node instanceof Tag) { attributes = ((Tag)node).getAttributesEx (); for (int i = 1; i < attributes.size (); i++) { attribute = (Attribute)attributes.elementAt (i); if (null != attribute.getName ()) { value = attribute.getValue (); if (null != value) set.add (value); } } if (node instanceof CompositeTag) { children = ((CompositeTag)node).getChildren (); if (null != children) for (int i = 0; i < children.size (); i++) addAttributeValues (set, children.elementAt (i)); } } } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("Has attribute"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/HasAttributeFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { HasAttributeFilter ret; ret = new HasAttributeFilter (); ret.setAttributeName (mFilter.getAttributeName ()); ret.setAttributeValue (mFilter.getAttributeValue ()); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { Set set; String name; String value; mFilter = (HasAttributeFilter)filter; set = new HashSet (); context.reset (); try { for (NodeIterator iterator = context.elements (); iterator.hasMoreNodes (); ) addAttributes (set, iterator.nextNode ()); } catch (ParserException pe) { // oh well, we tried } for (Iterator iterator = set.iterator (); iterator.hasNext (); ) mAttributeName.addItem (iterator.next ()); name = mFilter.getAttributeName (); if (!name.equals ("")) mAttributeName.setSelectedItem (name); value = mFilter.getAttributeValue (); if (null != value) { mValued.setSelected (true); mAttributeValue.setVisible (true); mAttributeValue.setText (value); } else { mValued.setSelected (false); mAttributeValue.setVisible (false); } } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { return (new NodeFilter[0]); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { // should we complain? } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  25. indent level - the number of spaces to insert at the beginning of each line
  26. *
  27. filter number - the next available filter number
  28. *
  29. filter array number - the next available array of filters number
  30. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String ret; ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("HasAttributeFilter "); out.append (ret); out.append (" = new HasAttributeFilter ();"); newline (out); spaces (out, context[0]); out.append (ret); out.append (".setAttributeName (\""); out.append (mFilter.getAttributeName ()); out.append ("\");"); newline (out); if (null != mFilter.getAttributeValue ()) { spaces (out, context[0]); out.append (ret); out.append (".setAttributeValue (\""); out.append (mFilter.getAttributeValue ()); out.append ("\");"); newline (out); } return (ret); } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } // // ActionListener interface // /** * Invoked when an action occurs on the combo box. * @param event Details about the action event. */ public void actionPerformed (ActionEvent event) { Object source; Object[] selection; boolean valued; source = event.getSource (); if (source == mAttributeName) { selection = mAttributeName.getSelectedObjects (); if ((null != selection) && (0 != selection.length)) mFilter.setAttributeName ((String)selection[0]); } else if (source == mValued) { valued = mValued.isSelected (); if (valued) { mFilter.setAttributeValue (mAttributeValue.getText ()); mAttributeValue.setVisible (true); } else { mAttributeValue.setVisible (false); mAttributeValue.setText (""); mFilter.setAttributeValue (null); } } } // // DocumentListener interface // /** * Handle an insert update event. * @param e Details about the insert event. */ public void insertUpdate (DocumentEvent e) { Document doc; doc = e.getDocument (); try { mFilter.setAttributeValue (doc.getText (0, doc.getLength ())); } catch (BadLocationException ble) { ble.printStackTrace (); } } /** * Handle a remove update event. * @param e Details about the remove event. */ public void removeUpdate (DocumentEvent e) { Document doc; doc = e.getDocument (); try { mFilter.setAttributeValue (doc.getText (0, doc.getLength ())); } catch (BadLocationException ble) { ble.printStackTrace (); } } /** * Handle a change update event. * @param e Details about the change event. */ public void changedUpdate (DocumentEvent e) { // plain text components don't fire these events } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/HasSiblingFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/Has0000644000175000017500000001460510226721236032431 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/HasSiblingFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.HasSiblingFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; import org.htmlparser.parserapplications.filterbuilder.SubFilterList; /** * Wrapper for HasSiblingFilters. */ public class HasSiblingFilterWrapper extends Filter implements ActionListener { /** * The underlying filter. */ protected HasSiblingFilter mFilter; /** * The drop target container. */ protected SubFilterList mContainer; /** * Create a wrapper over a new HasParentFilter. */ public HasSiblingFilterWrapper () { mFilter = new HasSiblingFilter (); // add the subfilter container mContainer = new SubFilterList (this, "Sibling Filter", 1); add (mContainer); } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("Has Sibling"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/HasSiblingFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { NodeFilter filter; HasSiblingFilter ret; ret = new HasSiblingFilter (); filter = mFilter.getSiblingFilter (); if (null != filter) ret.setSiblingFilter (((Filter)filter).getNodeFilter ()); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { mFilter = (HasSiblingFilter)filter; } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { NodeFilter filter; NodeFilter[] ret; filter = mFilter.getSiblingFilter (); if (null != filter) ret = new NodeFilter[] { filter }; else ret = new NodeFilter[0]; return (ret); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { if (0 != filters.length) mFilter.setSiblingFilter (filters[0]); else mFilter.setSiblingFilter (null); } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  31. indent level - the number of spaces to insert at the beginning of each line
  32. *
  33. filter number - the next available filter number
  34. *
  35. filter array number - the next available array of filters number
  36. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String name; String ret; if (null != mFilter.getSiblingFilter ()) name = ((Filter)mFilter.getSiblingFilter ()).toJavaCode (out, context); else name = null; ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("HasSiblingFilter "); out.append (ret); out.append (" = new HasSiblingFilter ();"); newline (out); if (null != name) { spaces (out, context[0]); out.append (ret); out.append (".setSiblingFilter ("); out.append (name); out.append (");"); newline (out); } return (ret); } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } // // ActionListener interface // /** * Invoked when an action occurs. * @param event Details about the action event. */ public void actionPerformed (ActionEvent event) { } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/StringFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/Str0000644000175000017500000002533610226721236032471 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/StringFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Locale; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JTextArea; import javax.swing.border.BevelBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.StringFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; /** * Wrapper for StringFilters. */ public class StringFilterWrapper extends Filter implements ActionListener, DocumentListener, Runnable { /** * The underlying filter. */ protected StringFilter mFilter; /** * Text to check for. */ protected JTextArea mPattern; /** * The check box for case sensitivity. */ protected JCheckBox mCaseSensitivity; /** * Combo box for locale. */ protected JComboBox mLocale; /** * Cached locales. */ protected static Locale[] mLocales = null; /** * Create a wrapper over a new StringFilter. */ public StringFilterWrapper () { Thread thread; mFilter = new StringFilter (); mFilter.setCaseSensitive (true); // add the text pattern mPattern = new JTextArea (2, 20); mPattern.setBorder (new BevelBorder (BevelBorder.LOWERED)); add (mPattern); mPattern.getDocument ().addDocumentListener (this); mPattern.setText (mFilter.getPattern ()); // add the case sensitivity flag mCaseSensitivity = new JCheckBox ("Case Sensitive"); add (mCaseSensitivity); mCaseSensitivity.addActionListener (this); mCaseSensitivity.setSelected (mFilter.getCaseSensitive ()); // add the locales choice mLocale = new JComboBox (); synchronized (mLocale) { mLocale.addItem (mFilter.getLocale ().getDisplayName ()); thread = new Thread (this); thread.setName ("locale_getter"); thread.setPriority (Thread.MIN_PRIORITY); thread.run (); } add (mLocale); mLocale.addActionListener (this); mLocale.setSelectedIndex (0); mLocale.setVisible (!mFilter.getCaseSensitive ()); } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("Nodes containing string"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/StringFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { StringFilter ret; ret = new StringFilter (); ret.setCaseSensitive (mFilter.getCaseSensitive ()); ret.setLocale (mFilter .getLocale ()); ret.setPattern (mFilter.getPattern ()); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { mFilter = (StringFilter)filter; mPattern.setText (mFilter.getPattern ()); mCaseSensitivity.setSelected (mFilter.getCaseSensitive ()); mLocale.setVisible (!mFilter.getCaseSensitive ()); mLocale.setSelectedItem (mFilter.getLocale ().getDisplayName ()); } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { return (new NodeFilter[0]); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { // should we complain? } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  37. indent level - the number of spaces to insert at the beginning of each line
  38. *
  39. filter number - the next available filter number
  40. *
  41. filter array number - the next available array of filters number
  42. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String ret; ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("StringFilter "); out.append (ret); out.append (" = new StringFilter ();"); newline (out); spaces (out, context[0]); out.append (ret); out.append (".setCaseSensitive ("); out.append (mFilter.getCaseSensitive () ? "true" : "false"); out.append (");"); newline (out); spaces (out, context[0]); out.append (ret); out.append (".setLocale (new java.util.Locale (\""); out.append (mFilter .getLocale ().getLanguage ()); out.append ("\", \""); out.append (mFilter .getLocale ().getCountry ()); out.append ("\", \""); out.append (mFilter .getLocale ().getVariant ()); out.append ("\"));"); newline (out); spaces (out, context[0]); out.append (ret); out.append (".setPattern (\""); out.append (mFilter.getPattern ()); out.append ("\");"); newline (out); return (ret); } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } // // ActionListener interface // /** * Invoked when an action occurs on the combo box. * @param event Details about the action event. */ public void actionPerformed (ActionEvent event) { Object source; boolean sensitive; Object[] selection; String locale; source = event.getSource (); if (source == mCaseSensitivity) { sensitive = mCaseSensitivity.isSelected (); mFilter.setCaseSensitive (sensitive); mLocale.setVisible (!sensitive); mLocale.setSelectedItem (mFilter.getLocale ().getDisplayName ()); } else if (source == mLocale) { synchronized (mLocale) { selection = mLocale.getSelectedObjects (); if ((null != selection) && (0 != selection.length)) { locale = (String)selection[0]; for (int i = 0; i < mLocales.length; i++) if (locale.equals (mLocales[i].getDisplayName ())) mFilter.setLocale (mLocales[i]); } } } } // // Runnable interface // /** * Background thread task to get the available locales. */ public void run () { String locale; synchronized (mLocale) { mLocales = Locale.getAvailableLocales (); locale = mFilter.getLocale ().getDisplayName (); for (int i = 0; i < mLocales.length; i++) if (!locale.equals (mLocales[i].getDisplayName ())) mLocale.addItem (mLocales[i].getDisplayName ()); mLocale.invalidate (); } } // // DocumentListener interface // /** * Handle an insert update event. * @param e Details about the insert event. */ public void insertUpdate (DocumentEvent e) { Document doc; doc = e.getDocument (); try { mFilter.setPattern (doc.getText (0, doc.getLength ())); } catch (BadLocationException ble) { ble.printStackTrace (); } } /** * Handle a remove update event. * @param e Details about the remove event. */ public void removeUpdate (DocumentEvent e) { Document doc; doc = e.getDocument (); try { mFilter.setPattern (doc.getText (0, doc.getLength ())); } catch (BadLocationException ble) { ble.printStackTrace (); } } /** * Handle a change update event. * @param e Details about the change event. */ public void changedUpdate (DocumentEvent e) { // plain text components don't fire these events } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/TagNameFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/Tag0000644000175000017500000001664010226721236032432 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/TagNameFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import javax.swing.JComboBox; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.Tag; import org.htmlparser.filters.TagNameFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; import org.htmlparser.tags.CompositeTag; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; /** * Wrapper for TagNameFilters. */ public class TagNameFilterWrapper extends Filter implements ActionListener { /** * The underlying filter. */ protected TagNameFilter mFilter; /** * Combo box for tag name. */ protected JComboBox mName; /** * Create a wrapper over a new TagNameFilter. */ public TagNameFilterWrapper () { mFilter = new TagNameFilter (); // add the tag name choice mName = new JComboBox (); mName.setEditable (true); add (mName); mName.addItem (mFilter.getName ()); mName.addActionListener (this); } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("Tag named"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/TagNameFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { TagNameFilter ret; ret = new TagNameFilter (); ret.setName (mFilter.getName ()); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { Set set; mFilter = (TagNameFilter)filter; set = new HashSet (); context.reset (); try { for (NodeIterator iterator = context.elements (); iterator.hasMoreNodes (); ) addName (set, iterator.nextNode ()); } catch (ParserException pe) { // oh well, we tried } for (Iterator iterator = set.iterator (); iterator.hasNext (); ) mName.addItem (iterator.next ()); mName.setSelectedItem (mFilter.getName ()); } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { return (new NodeFilter[0]); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { // should we complain? } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  43. indent level - the number of spaces to insert at the beginning of each line
  44. *
  45. filter number - the next available filter number
  46. *
  47. filter array number - the next available array of filters number
  48. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String ret; ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("TagNameFilter "); out.append (ret); out.append (" = new TagNameFilter ();"); newline (out); spaces (out, context[0]); out.append (ret); out.append (".setName (\""); out.append (mFilter.getName ()); out.append ("\");"); newline (out); return (ret); } /** * Add the tag name and it's children's tag names to the set of tag names. * @param set The set to add to. * @param node The node to get the names from. */ protected void addName (Set set, Node node) { NodeList children; if (node instanceof Tag) { set.add (((Tag)node).getTagName ()); if (node instanceof CompositeTag) { children = ((CompositeTag)node).getChildren (); if (null != children) for (int i = 0; i < children.size (); i++) addName (set, children.elementAt (i)); } } } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } // // ActionListener interface // /** * Invoked when an action occurs on the combo box. * @param event Details about the action event. */ public void actionPerformed (ActionEvent event) { Object source; Object[] selection; source = event.getSource (); if (source == mName) { selection = mName.getSelectedObjects (); if ((null != selection) && (0 != selection.length)) mFilter.setName ((String)selection[0]); } } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/OrFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/OrF0000644000175000017500000001527510226721236032410 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/OrFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.OrFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; import org.htmlparser.parserapplications.filterbuilder.SubFilterList; /** * Wrapper for OrFilters. */ public class OrFilterWrapper extends Filter { /** * The drop target container. */ protected SubFilterList mContainer; /** * The underlying filter. */ protected OrFilter mFilter; /** * Create a wrapper over a new OrFilter. */ public OrFilterWrapper () { mFilter = new OrFilter (); // add the subfilter container mContainer = new SubFilterList (this, "Predicates", 0); add (mContainer); } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("Or"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/OrFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { NodeFilter[] predicates; NodeFilter[] temp; OrFilter ret; ret = new OrFilter (); predicates = mFilter.getPredicates (); temp = new NodeFilter[predicates.length]; for (int i = 0; i < predicates.length; i++) temp[i] = ((Filter)predicates[i]).getNodeFilter (); ret.setPredicates (temp); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { mFilter = (OrFilter)filter; } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { return (mFilter.getPredicates ()); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { mFilter.setPredicates (filters); } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  49. indent level - the number of spaces to insert at the beginning of each line
  50. *
  51. filter number - the next available filter number
  52. *
  53. filter array number - the next available array of filters number
  54. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String array; NodeFilter[] predicates; String[] names; String ret; predicates = mFilter.getPredicates (); array = null; // stoopid Java compiler if (0 != predicates.length) { names = new String[predicates.length]; for (int i = 0; i < predicates.length; i++) { names[i] = ((Filter)predicates[i]).toJavaCode (out, context); } array = "array" + context[2]++; spaces (out, context[0]); out.append ("NodeFilter[] "); out.append (array); out.append (" = new NodeFilter["); out.append (predicates.length); out.append ("];"); newline (out); for (int i = 0; i < predicates.length; i++) { spaces (out, context[0]); out.append (array); out.append ("["); out.append (i); out.append ("] = "); out.append (names[i]); out.append (";"); newline (out); } } ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("OrFilter "); out.append (ret); out.append (" = new OrFilter ();"); newline (out); if (0 != predicates.length) { spaces (out, context[0]); out.append (ret); out.append (".setPredicates ("); out.append (array); out.append (");"); newline (out); } return (ret); } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } } ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/HasParentFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/Has0000644000175000017500000001640010226721236032424 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/HasParentFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JCheckBox; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.HasParentFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; import org.htmlparser.parserapplications.filterbuilder.SubFilterList; /** * Wrapper for HasParentFilters. */ public class HasParentFilterWrapper extends Filter implements ActionListener { /** * The underlying filter. */ protected HasParentFilter mFilter; /** * The check box for recursion. */ protected JCheckBox mRecursive; /** * The drop target container. */ protected SubFilterList mContainer; /** * Create a wrapper over a new HasParentFilter. */ public HasParentFilterWrapper () { mFilter = new HasParentFilter (); // add the recursive flag mRecursive = new JCheckBox ("Recursive"); add (mRecursive); mRecursive.addActionListener (this); mRecursive.setSelected (mFilter.getRecursive ()); // add the subfilter container mContainer = new SubFilterList (this, "Parent Filter", 1); add (mContainer); } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("Has Parent"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/HasParentFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { NodeFilter filter; HasParentFilter ret; ret = new HasParentFilter (); ret.setRecursive (mFilter.getRecursive ()); filter = mFilter.getParentFilter (); if (null != filter) ret.setParentFilter (((Filter)filter).getNodeFilter ()); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { mFilter = (HasParentFilter)filter; mRecursive.setSelected (mFilter.getRecursive ()); } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { NodeFilter filter; NodeFilter[] ret; filter = mFilter.getParentFilter (); if (null != filter) ret = new NodeFilter[] { filter }; else ret = new NodeFilter[0]; return (ret); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { if (0 != filters.length) mFilter.setParentFilter (filters[0]); else mFilter.setParentFilter (null); } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  55. indent level - the number of spaces to insert at the beginning of each line
  56. *
  57. filter number - the next available filter number
  58. *
  59. filter array number - the next available array of filters number
  60. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String name; String ret; if (null != mFilter.getParentFilter ()) name = ((Filter)mFilter.getParentFilter ()).toJavaCode (out, context); else name = null; ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("HasParentFilter "); out.append (ret); out.append (" = new HasParentFilter ();"); newline (out); spaces (out, context[0]); out.append (ret); out.append (".setRecursive ("); out.append (mFilter.getRecursive () ? "true" : "false"); out.append (");"); newline (out); if (null != name) { spaces (out, context[0]); out.append (ret); out.append (".setParentFilter ("); out.append (name); out.append (");"); newline (out); } return (ret); } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } // // ActionListener interface // /** * Invoked when an action occurs on the check box. * @param event Details about the action event. */ public void actionPerformed (ActionEvent event) { Object source; boolean recursive; source = event.getSource (); if (source == mRecursive) { recursive = mRecursive.isSelected (); mFilter.setRecursive (recursive); } } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/NotFilterWrapper.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/wrappers/Not0000644000175000017500000001370510226721236032456 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/NotFilterWrapper.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.wrappers; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.NotFilter; import org.htmlparser.parserapplications.filterbuilder.Filter; import org.htmlparser.parserapplications.filterbuilder.SubFilterList; /** * Wrapper for NotFilters. */ public class NotFilterWrapper extends Filter { /** * The drop target container. */ protected SubFilterList mContainer; /** * The underlying filter. */ protected NotFilter mFilter; /** * Create a wrapper over a new NotFilter. */ public NotFilterWrapper () { mFilter = new NotFilter (); // add the subfilter container mContainer = new SubFilterList (this, "Predicate", 1); add (mContainer); } // // Filter overrides and concrete implementations // /** * Get the name of the filter. * @return A descriptive name for the filter. */ public String getDescription () { return ("Not"); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public String getIconSpec () { return ("images/NotFilter.gif"); } /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { NodeFilter predicate; NotFilter ret; ret = new NotFilter (); predicate = mFilter.getPredicate (); if (null != predicate) ret.setPredicate (((Filter)predicate).getNodeFilter ()); return (ret); } /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { mFilter = (NotFilter)filter; } /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public NodeFilter[] getSubNodeFilters () { NodeFilter predicate; NodeFilter[] ret; predicate = mFilter.getPredicate (); if (null != predicate) ret = new NodeFilter[] { predicate }; else ret = new NodeFilter[0]; return (ret); } /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public void setSubNodeFilters (NodeFilter[] filters) { if (0 != filters.length) mFilter.setPredicate (filters[0]); else mFilter.setPredicate (null); } /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  61. indent level - the number of spaces to insert at the beginning of each line
  62. *
  63. filter number - the next available filter number
  64. *
  65. filter array number - the next available array of filters number
  66. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuffer out, int[] context) { String name; String ret; if (null != mFilter.getPredicate ()) name = ((Filter)mFilter.getPredicate ()).toJavaCode (out, context); else name = null; ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("NotFilter "); out.append (ret); out.append (" = new NotFilter ();"); newline (out); if (null != name) { spaces (out, context[0]); out.append (ret); out.append (".setPredicate ("); out.append (name); out.append (");"); newline (out); } return (ret); } // // NodeFilter interface // /** * Predicate to determine whether or not to keep the given node. * The behaviour based on this outcome is determined by the context * in which it is called. It may lead to the node being added to a list * or printed out. See the calling routine for details. * @return true if the node is to be kept, false * if it is to be discarded. * @param node The node to test. */ public boolean accept (Node node) { return (mFilter.accept (node)); } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/HtmlTreeModel.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/HtmlTreeMode0000644000175000017500000001376610226721236032413 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/HtmlTreeModel.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder; import java.util.Vector; import javax.swing.tree.*; import javax.swing.event.*; import org.htmlparser.Node; import org.htmlparser.tags.Html; import org.htmlparser.util.NodeList; /** * Quick and dirty tree model for HTML nodes. */ public class HtmlTreeModel implements TreeModel { /** * The list of tree listeners. */ protected Vector mTreeListeners; /** * The root {@link Node}. */ protected Node mRoot; /** * Create an HTML tree view. * @param root The nodes at the root of the tree * (the nodes are wrapped in an Html node that is never seen * because it's the root, but this makes all downstream processing * super-simple because every tree node is then a {@link Node}, * not sometimes a {@link NodeList} at the root). */ public HtmlTreeModel (NodeList root) { mTreeListeners = new Vector (); // for simplicity we encapsulate the nodelist in a Html tag mRoot = new Html (); mRoot.setChildren (root); } // // TreeModel interface // /** * Adds a listener for the TreeModelEvent posted after the tree changes. * @param l {@inheritDoc} */ public void addTreeModelListener (TreeModelListener l) { synchronized (mTreeListeners) { if (!mTreeListeners.contains(l)) mTreeListeners.addElement(l); } } /** * Removes a listener previously added with addTreeModelListener(). * @param l {@inheritDoc} */ public void removeTreeModelListener(TreeModelListener l) { synchronized (mTreeListeners) { mTreeListeners.removeElement (l); } } /** * Returns the child of parent at index index in the parent's child array. * @param parent {@inheritDoc} * @param index {@inheritDoc} * @return {@inheritDoc} */ public Object getChild (Object parent, int index) { Node node; NodeList list; Object ret; node = (Node)parent; list = node.getChildren (); if (null == list) throw new IllegalArgumentException ("invalid parent for getChild()"); else ret = list.elementAt (index); return (ret); } /** * Returns the number of children of parent. * @param parent {@inheritDoc} * @return {@inheritDoc} */ public int getChildCount (Object parent) { Node node; NodeList list; int ret; ret = 0; node = (Node)parent; list = node.getChildren (); if (null != list) ret = list.size (); return (ret); } /** * Returns the index of child in parent. * @param parent {@inheritDoc} * @param child {@inheritDoc} * @return {@inheritDoc} */ public int getIndexOfChild (Object parent, Object child) { Node node; NodeList list; int count; int ret; ret = -1; node = (Node)parent; list = node.getChildren (); if (null != list) { count = list.size (); for (int i = 0; i < count; i++) if (child == list.elementAt (i)) { ret = i; break; } } else throw new IllegalArgumentException ("invalid parent for getIndexOfChild()"); if (0 > ret) throw new IllegalArgumentException ("child not found in getIndexOfChild()"); return (ret); } /** * Returns the root of the tree. * @return {@inheritDoc} */ public Object getRoot () { return (mRoot); } /** * Returns true if node is a leaf. * @param node {@inheritDoc} * @return {@inheritDoc} */ public boolean isLeaf (Object node) { NodeList list; boolean ret; list = ((Node)node).getChildren (); if (null == list) ret = true; else ret = 0 == list.size (); return (ret); } /** * Messaged when the user has altered the value for the item identified by path to newValue. * @param path {@inheritDoc} * @param newValue {@inheritDoc} */ public void valueForPathChanged (TreePath path, Object newValue) { TreeModelEvent event; Vector v; event = new TreeModelEvent (this, path); synchronized (mTreeListeners) { v = (Vector)mTreeListeners.clone (); } for (int i = 0; i < v.size (); i++) { TreeModelListener listener = (TreeModelListener)v.elementAt (i); listener.treeStructureChanged (event); } } } ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/HtmlTreeCellRenderer.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/HtmlTreeCell0000644000175000017500000001357610226721236032405 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/HtmlTreeCellRenderer.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder; import java.awt.Component; import java.util.Vector; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreeCellRenderer; import org.htmlparser.Attribute; import org.htmlparser.Node; import org.htmlparser.lexer.Cursor; import org.htmlparser.nodes.TagNode; import org.htmlparser.nodes.TextNode; import org.htmlparser.util.ParserException; import org.htmlparser.util.Translate; /** * Renderer for tree view of a NodeList. */ public class HtmlTreeCellRenderer extends DefaultTreeCellRenderer implements TreeCellRenderer { /** * Create a new tree cell renderer for Nodes. */ public HtmlTreeCellRenderer () { setLeafIcon (null); setClosedIcon (null); setOpenIcon (null); } /** * Render the tag as HTML. * This is different from the tag's normal toHtml() method in that it * doesn't process children or end tags, just the initial tag, and * it also wraps the tag in html a label would expect. * @see org.htmlparser.Node#toHtml() * @param tag The tag to convert to HTML. * @return A string suitable for rendering the tag. */ public String toHtml (TagNode tag) { int length; int size; Vector attributes; Attribute attribute; String s; boolean children; StringBuffer ret; length = 2; attributes = tag.getAttributesEx (); size = attributes.size (); for (int i = 0; i < size; i++) { attribute = (Attribute)attributes.elementAt (i); length += attribute.getLength (); } ret = new StringBuffer (length); ret.append ("<"); for (int i = 0; i < size; i++) { attribute = (Attribute)attributes.elementAt (i); attribute.toString (ret); } ret.append (">"); s = Translate.encode (ret.toString ()); children = null != tag.getChildren (); ret = new StringBuffer (s.length () + 13 + (children ? 16 : 0)); ret.append (""); if (children) ret.append (""); ret.append (s); if (children) ret.append (""); ret.append (""); return (ret.toString ()); } /** * Express this string node as a printable string * This is suitable for display in a debugger or output to a printout. * Control characters are replaced by their equivalent escape * sequence and contents is truncated to 80 characters. * @param node The node to render. * @return A string representation of the string node. */ public String toText (TextNode node) { int startpos; int endpos; String s; char c; StringBuffer ret; startpos = node.getStartPosition (); endpos = node.getEndPosition (); ret = new StringBuffer (endpos - startpos + 20); s = node.toHtml (); for (int i = 0; i < s.length (); i++) { c = s.charAt (i); switch (c) { case '\t': ret.append ("\\t"); break; case '\n': ret.append ("\\n"); break; case '\r': ret.append ("\\r"); break; default: ret.append (c); } if (77 <= ret.length ()) { ret.append ("..."); break; } } return (ret.toString ()); } /** * Render the node for the tree cell. * @see TreeCellRenderer#getTreeCellRendererComponent(JTree, Object, boolean, boolean, boolean, int, boolean) * @param tree {@inheritDoc} * @param value {@inheritDoc} * @param selected {@inheritDoc} * @param expanded {@inheritDoc} * @param leaf {@inheritDoc} * @param row {@inheritDoc} * @param hasFocus {@inheritDoc} * @return {@inheritDoc} */ public Component getTreeCellRendererComponent (JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { Node node; super.getTreeCellRendererComponent (tree, value, selected, expanded, leaf, row, hasFocus); node = (Node)value; if (node instanceof TagNode) setText (toHtml ((TagNode)node)); else if (node instanceof TextNode) setText (toText ((TextNode)node)); else setText (node.toHtml ()); return (this); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/0000755000175000017500000000000010442553346031374 5ustar tiagotiago././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/cut.giflibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/cut.g0000644000175000017500000000013110203710652032320 0ustar tiagotiagoGIF89a !,*r@|ĤBAzq*>s'w=);././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/save.giflibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/save.0000644000175000017500000000014610203710652032322 0ustar tiagotiagoGIF89a!,7i9ⴵiI( "`n`:)=Lmg(-7udBX:zQ;././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/new.giflibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/new.g0000644000175000017500000000013210203710652032317 0ustar tiagotiagoGIF89a!,+yjD)I7`Ui"뒪Fq   ;././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/copy.giflibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/copy.0000644000175000017500000000015010203710652032331 0ustar tiagotiagoGIF89a !,9 í88ZB1T(L K5H/V"& ;././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/about.giflibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/about0000644000175000017500000000013210203710652032413 0ustar tiagotiagoGIF89a2!,+í7a(*+[qIhmXR>^ ʹܸMz;././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/delete.giflibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/delet0000644000175000017500000000011410203710652032376 0ustar tiagotiagoGIF89a!,#izb-wmtZg$vP;././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/open.giflibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/open.0000644000175000017500000000016010203710652032321 0ustar tiagotiagoGIF89a2!,5$FV0\I(vJ,tA׈ Vi: ;././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/paste.giflibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/images/paste0000644000175000017500000000020610203710652032417 0ustar tiagotiagoGIF89a 2˒!,K~8URaHh*zAI\M|P҆a8ܵjB"AFݒw%''[:+Wl+';libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/layouts/0000755000175000017500000000000010442554074031626 5ustar tiagotiago././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/layouts/VerticalLayoutManager.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/layouts/Vert0000644000175000017500000001664210226721236032476 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/layouts/VerticalLayoutManager.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.layouts; import java.awt.*; import java.io.*; /** * A layout manager like a vertical FlowLayout. * Stacks components vertically like GridLayout(0,1) but doesn't * resize each component equally. More like a vertical FlowLayout * but doesn't snake columns or align things. */ public class VerticalLayoutManager implements LayoutManager2, Serializable { /** * Constructs a VerticalLayoutManager object. */ public VerticalLayoutManager () { } /** * Calculates the minimum size dimensions for the specified * panel given the components in the specified parent container. * @param target The component to be laid out. * @return The minimum size. * @see #preferredLayoutSize */ public Dimension minimumLayoutSize (Container target) { return (preferredLayoutSize (target)); } /** * Calculates the preferred size dimensions for the specified * panel given the components in the specified parent container. * @param target The component to be laid out. * @return A size deemed suitable for laying out the container. * @see #minimumLayoutSize */ public Dimension preferredLayoutSize (Container target) { int count; Component component; Dimension dimension; Insets insets; Dimension ret; synchronized (target.getTreeLock ()) { // get the the total height and maximum width component ret = new Dimension (0, 0); count = target.getComponentCount (); for (int i = 0 ; i < count ; i++) { component = target.getComponent (i); if (component.isVisible ()) { dimension = component.getPreferredSize (); ret.width = Math.max (ret.width, dimension.width); ret.height += dimension.height; } } insets = target.getInsets (); ret.width += insets.left + insets.right; ret.height += insets.top + insets.bottom; } return (ret); } /** * Returns the maximum size of this component. * @param target The component to be laid out. * @return The maximum size for the container. * @see #preferredLayoutSize */ public Dimension maximumLayoutSize (Container target) { return (preferredLayoutSize (target)); } // // LayoutManager Interface // /** * Adds the specified component with the specified name to * the layout. * @param name the component name * @param comp the component to be added */ public void addLayoutComponent (String name, Component comp) { } /** * Removes the specified component from the layout. * @param comp the component ot be removed */ public void removeLayoutComponent (Component comp) { } /** * Lays out the container. * @param target The container which needs to be laid out. */ public void layoutContainer (Container target) { Insets insets; int x; int y; int count; int width; Component component; Dimension dimension; synchronized (target.getTreeLock ()) { insets = target.getInsets (); x = insets.left; y = insets.top; count = target.getComponentCount (); width = 0; for (int i = 0 ; i < count ; i++) { component = target.getComponent (i); if (component.isVisible ()) { dimension = component.getPreferredSize (); width = Math.max (width, dimension.width); component.setSize (dimension.width, dimension.height); component.setLocation (x, y); y += dimension.height; } } // now set them all to the same width for (int i = 0 ; i < count ; i++) { component = target.getComponent (i); if (component.isVisible ()) { dimension = component.getSize (); dimension.width = width; component.setSize (dimension.width, dimension.height); } } } } // // LayoutManager2 Interface // /** * Adds the specified component to the layout, using the specified * constraint object. * @param comp the component to be added * @param constraints where/how the component is added to the layout. */ public void addLayoutComponent (Component comp, Object constraints) { } /** * Returns the alignment along the x axis. This specifies how * the component would like to be aligned relative to other * components. The value should be a number between 0 and 1 * where 0 represents alignment along the origin, 1 is aligned * the furthest away from the origin, 0.5 is centered, etc. * @param target The target container. * @return The X-axis alignment. */ public float getLayoutAlignmentX (Container target) { return (0.0f); } /** * Returns the alignment along the y axis. This specifies how * the component would like to be aligned relative to other * components. The value should be a number between 0 and 1 * where 0 represents alignment along the origin, 1 is aligned * the furthest away from the origin, 0.5 is centered, etc. * @param target The target container. * @return The Y-axis alignment. */ public float getLayoutAlignmentY (Container target) { return (0.0f); } /** * Invalidates the layout, indicating that if the layout manager * has cached information it should be discarded. * @param target The target container. */ public void invalidateLayout (Container target) { } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/layouts/NullLayoutManager.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/layouts/Null0000644000175000017500000001636610226721236032473 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/layouts/NullLayoutManager.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder.layouts; import java.awt.*; import java.io.*; /** * A layout manager that doesn't move things around. * Attempts to set the bounds of components to accomodate them * but doesn't move them. */ public class NullLayoutManager implements LayoutManager2, Serializable { /** * Constructs a NullLayoutManager object. */ public NullLayoutManager () { } /** * Calculates the minimum size dimensions for the specified * panel given the components in the specified parent container. * @param target The component to be laid out. * @return The minimum size. * @see #preferredLayoutSize */ public Dimension minimumLayoutSize (Container target) { return (preferredLayoutSize (target)); } /** * Calculates the preferred size dimensions for the specified * panel given the components in the specified parent container. * @see #minimumLayoutSize * @param target The component to be laid out. * @return A size deemed suitable for laying out the container. */ public Dimension preferredLayoutSize (Container target) { int count; Container parent; Component component; Point point; Dimension dimension; Insets insets; Dimension ret; synchronized (target.getTreeLock ()) { count = target.getComponentCount (); if (0 == count) { // be the same size unless we have a parent ret = target.getSize (); parent = target.getParent (); if (null != parent) { insets = parent.getInsets (); ret = parent.getSize (); ret.setSize ( ret.width - insets.left - insets.right, ret.height - insets.top - insets.bottom); } } else { ret = new Dimension (0, 0); for (int i = 0 ; i < count ; i++) { component = target.getComponent (i); if (component.isVisible ()) { point = component.getLocation (); dimension = component.getPreferredSize(); ret.width = Math.max (ret.width, point.x + dimension.width); ret.height = Math.max (ret.height, point.y + dimension.height); } } insets = target.getInsets (); ret.width += insets.left + insets.right; ret.height += insets.top + insets.bottom; } } return (ret); } /** * Returns the maximum size of this component. * @param target The component to be laid out. * @return The maximum size for the container. * @see #preferredLayoutSize */ public Dimension maximumLayoutSize (Container target) { return (preferredLayoutSize (target)); } // // LayoutManager Interface // /** * Adds the specified component with the specified name to * the layout. * @param name the component name * @param comp the component to be added */ public void addLayoutComponent (String name, Component comp) { } /** * Removes the specified component from the layout. * @param comp the component ot be removed */ public void removeLayoutComponent (Component comp) { } /** * Lays out the container. * @param target The container which needs to be laid out. */ public void layoutContainer (Container target) { int count; Component component; Dimension dimension; synchronized (target.getTreeLock ()) { count = target.getComponentCount (); for (int i = 0 ; i < count ; i++) { component = target.getComponent (i); if (component.isVisible ()) { dimension = component.getPreferredSize(); component.setSize (dimension.width, dimension.height); } } } } // // LayoutManager2 Interface // /** * Adds the specified component to the layout, using the specified * constraint object. * @param comp the component to be added * @param constraints where/how the component is added to the layout. */ public void addLayoutComponent (Component comp, Object constraints) { } /** * Returns the alignment along the x axis. This specifies how * the component would like to be aligned relative to other * components. The value should be a number between 0 and 1 * where 0 represents alignment along the origin, 1 is aligned * the furthest away from the origin, 0.5 is centered, etc. * @param target The target container. * @return The X-axis alignment. */ public float getLayoutAlignmentX (Container target) { return (0.0f); } /** * Returns the alignment along the y axis. This specifies how * the component would like to be aligned relative to other * components. The value should be a number between 0 and 1 * where 0 represents alignment along the origin, 1 is aligned * the furthest away from the origin, 0.5 is centered, etc. * @param target The target container. * @return The Y-axis alignment. */ public float getLayoutAlignmentY (Container target) { return (0.0f); } /** * Invalidates the layout, indicating that if the layout manager * has cached information it should be discarded. * @param target The target container. */ public void invalidateLayout (Container target) { } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/Filter.java0000644000175000017500000003701710226721236032222 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/Filter.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder; import java.awt.*; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Hashtable; import java.util.Vector; import javax.swing.*; import javax.swing.border.*; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.parserapplications.filterbuilder.layouts.VerticalLayoutManager; /** * Base class for all filters. * Provides common functionality applicable to all filters. */ public abstract class Filter extends JComponent implements NodeFilter { /** * Create a new filter from the class name. * @param class_name The class to instatiate. * @return The constructed filter object. */ public static Filter instantiate (String class_name) { Filter ret; ret = null; try { Class cls = Class.forName (class_name); ret = (Filter)cls.newInstance (); mWrappers.put (ret.getNodeFilter ().getClass ().getName (), class_name); } catch (ClassNotFoundException cnfe) { System.out.println ("can't find class " + class_name); } catch (InstantiationException ie) { System.out.println ("can't instantiate class " + class_name); } catch (IllegalAccessException ie) { System.out.println ("class " + class_name + " has no public constructor"); } catch (ClassCastException cce) { System.out.println ("class " + class_name + " is not a Filter"); } return (ret); } /** * Map from cilter class to wrapper. * Populated as part of each wrapper being loaded. */ protected static Hashtable mWrappers = new Hashtable (); /** * Create a filter. * Set up the default display. * Only a border with the label of the filter name, * returned by getDescription(), * and an icon, returned by getIcon(). */ public Filter () { JLabel label; Dimension dimension; Insets insets; setToolTipText (getDescription ()); // none of these quite does it: // new BoxLayout (this, BoxLayout.Y_AXIS)); // new GridLayout (0, 1)); setLayout (new VerticalLayoutManager ()); setSelected (false); label = new JLabel (getDescription (), getIcon (), SwingConstants.LEFT); label.setBackground (Color.green); label.setAlignmentX (Component.LEFT_ALIGNMENT); label.setHorizontalAlignment (SwingConstants.LEFT); add (label); dimension = label.getMaximumSize (); insets = getInsets (); dimension.setSize (dimension.width + insets.left + insets.right, dimension.height + insets.top + insets.bottom); setSize (dimension); } /** * Get the name of the filter. * @return A descriptive name for the filter. */ public abstract String getDescription (); /** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public abstract NodeFilter getNodeFilter (); /** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public abstract void setNodeFilter (NodeFilter filter, Parser context); /** * Get the underlying node filter's subordinate filters. * @return The node filter object's contained filters. */ public abstract NodeFilter[] getSubNodeFilters (); /** * Assign the underlying node filter's subordinate filters. * @param filters The filters to insert into the underlying node filter. */ public abstract void setSubNodeFilters (NodeFilter[] filters); /** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: *
  67. indent level - the number of spaces to insert at the beginning of each line
  68. *
  69. filter number - the next available filter number
  70. *
  71. filter array number - the next available array of filters number
  72. * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public abstract String toJavaCode (StringBuffer out, int[] context); /** * Get the icon for the filter. * Loads the resource specified by * getIconSpec() as an icon. * @return The icon or null if it was not found. */ public Icon getIcon () { ImageIcon ret; ret = null; try { ret = new ImageIcon (getClass ().getResource (getIconSpec ())); } catch (NullPointerException npe) { System.err.println ("can't find icon " + getIconSpec ()); } return (ret); } /** * Get the resource name for the icon. * @return The icon resource specification. */ public abstract String getIconSpec (); // // Component overrides // /** * Returns a string representation of this component and its values. * @return A string representation of this component. */ public String toString () { return (getDescription () + " [" + this.getClass ().getName () + "]"); } // // utilities // /** * Serialize an object to a byte array. * @param object The object to be pickled. * @return The serialized object. * @exception IOException If the output stream complains (unlikely). */ public static byte[] pickle (Object object) throws IOException { ByteArrayOutputStream bos; ObjectOutputStream oos; byte[] ret; bos = new ByteArrayOutputStream (); oos = new ObjectOutputStream (bos); oos.writeObject (object); oos.close (); ret = bos.toByteArray (); return (ret); } /** * Reconstitute a serialized object. * @param data The pickled object. * @return The reconstituted object. * @exception IOException If the input stream complains. * @exception ClassNotFoundException If the serialized object class cannot * be located. */ public static Object unpickle (byte[] data) throws IOException, ClassNotFoundException { ByteArrayInputStream bis; ObjectInputStream ois; Object ret; bis = new ByteArrayInputStream (data); ois = new ObjectInputStream (bis); ret = ois.readObject (); ois.close (); return (ret); } /** * Serialize a byte array to a String. * Convert each byte from the serialized object into a couple of hexadecimal * characters. * @param data The serialized object as a byte array. * @return The string representing the serialized object. */ public static String serialize (byte[] data) { String string; StringBuffer ret; ret = new StringBuffer (data.length * 2); for (int i = 0; i < data.length; i++) { string = Integer.toString (0xff & data[i], 16); if (string.length () < 2) ret.append ("0"); ret.append (string); } return (ret.toString ()); } /** * Convert a sequence of hexadecimal characters back into a byte array. * @param string The string to convert (must be correct hex characters). * @return The bytes as an array. */ public static byte[] deserialize (String string) { byte[] ret; ret = new byte[string.length () / 2]; for (int i = 0; i < string.length (); i += 2) ret[i/2] = (byte)Integer.parseInt (string.substring (i, i + 2), 16); // todo: hopelessly inefficient return (ret); } /** * Returns a string serialization of the filters. * @param filters The list of filters to serialize. * @return A string representation of the filters. * @exception IOException If serialization fails. */ public static String deconstitute (Filter[] filters) throws IOException { StringBuffer ret; ret = new StringBuffer (1024); for (int i = 0; i < filters.length; i++) { ret.append ("["); ret.append (serialize (pickle (filters[i].getNodeFilter ()))); ret.append ("]"); } return (ret.toString ()); } /** * Returns the filters represented by the string. * @param string The string with serialized node filters. * @param context The context from which to extract meaningful values * for GUI choices (which aren't serialized). * @return The filters gleaned from the string. * @see #wrap */ public static Filter[] reconstitute (String string, Parser context) { Filter[] ret; Vector vector; int index; String code; Object object; Filter filter; vector = new Vector (); try { while (string.startsWith ("[")) { index = string.indexOf (']'); if (-1 != index) { code = string.substring (1, index); string = string.substring (index + 1); object = unpickle (deserialize (code)); if (object instanceof NodeFilter) { filter = wrap ((NodeFilter)object, context); if (null != filter) vector.addElement (filter); } else break; } else break; } } catch (Exception e) { e.printStackTrace (); } ret = new Filter[vector.size ()]; vector.copyInto (ret); return (ret); } /** * Get the enclosed sub filter list if any. * Todo: rationalize with FilterBuilder's method(s) of the same name. * @param component The component that's supposedly enclosing the list. * @return The enclosed component or null otherwise. */ protected static SubFilterList getEnclosed (Component component) { Component[] list; if (component instanceof Container) { list = ((Container)component).getComponents (); for (int i = 0; i < list.length; i++) if (list[i] instanceof SubFilterList) return ((SubFilterList)list[i]); } return (null); } /** * Returns a wrapped filter. * @param filter A filter to be wrapped by GUI components. * @param context The context within which to wrap the object. * Some wrappers need context to set up useful choices for the user. * @return The filter to wrap. */ public static Filter wrap (NodeFilter filter, Parser context) { String class_name; NodeFilter[] filters; SubFilterList list; Filter ret; ret = null; class_name = filter.getClass ().getName (); class_name = (String)mWrappers.get (class_name); if (null != class_name) { try { ret = Filter.instantiate (class_name); ret.setNodeFilter (filter, context); // recurse into subfilters filters = ret.getSubNodeFilters (); if (0 != filters.length) { list = getEnclosed (ret); if (null != list) { ret.setSubNodeFilters (new NodeFilter[0]); // clean out the unwrapped filters for (int i = 0; i < filters.length; i++) list.addFilter (wrap (filters[i], context)); } else throw new IllegalStateException ("filter can't have subnodes without a SubFilterList on the wrapper"); } } catch (Exception e) { e.printStackTrace (); } } else System.out.println (class_name + " is not registered for wrapping."); return (ret); } /** * Set the 'selected look' for the component. * @param selected If true, 'select' this component, * otherwise 'deselect' it. */ public void setSelected (boolean selected) { if (selected) setBorder ( new CompoundBorder ( new EtchedBorder (), new CompoundBorder ( new LineBorder(Color.blue, 2), new EmptyBorder (1, 1, 1, 1)))); else setBorder ( new CompoundBorder ( new EtchedBorder (), new EmptyBorder (3,3,3,3))); } /** * Set the expanded state for the component. * This sets invisible all but the JLabel component in the * comand component. * @param expanded If true, 'expand' this component, * otherwise 'collapse' it. */ public void setExpanded (boolean expanded) { Component[] components; components = getComponents (); for (int i = 0; i < components.length; i++) if (!(components[i] instanceof JLabel)) components[i].setVisible (expanded); } /** * Append count spaces to the buffer. * @param out The buffer to append to. * @param count The number of spaces to append. */ public static void spaces (StringBuffer out, int count) { for (int i = 0; i < count; i++) out.append (' '); } /** * Append a newline to the buffer. * @param out The buffer to append to. */ public static void newline (StringBuffer out) { out.append ('\n'); } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/FilterBuilder.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/FilterBuilde0000644000175000017500000024240710226721236032430 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/FilterBuilder.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.5 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Event; import java.awt.FileDialog; import java.awt.FlowLayout; import java.awt.Insets; import java.awt.Point; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.dnd.DnDConstants; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.DragGestureListener; import java.awt.dnd.DragSource; import java.awt.dnd.DragSourceDragEvent; import java.awt.dnd.DragSourceDropEvent; import java.awt.dnd.DragSourceEvent; import java.awt.dnd.DragSourceListener; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetContext; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.beans.PropertyVetoException; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.LineNumberReader; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; import java.util.Vector; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JSplitPane; import javax.swing.JTextField; //import javax.swing.JTextPane; import javax.swing.JToolBar; import javax.swing.JTree; import javax.swing.KeyStroke; import javax.swing.ScrollPaneConstants; import javax.swing.WindowConstants; import org.htmlparser.Parser; import org.htmlparser.beans.FilterBean; import org.htmlparser.parserapplications.filterbuilder.layouts.NullLayoutManager; import org.htmlparser.util.EncodingChangeException; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; /** * The main program for the FilterBuilder programming system. *

    ToDo: *

      *
    • thread the attribute fetching
    • *
    • CSS selector filter
    • *
    • table row filter
    • *
    • table column filter
    • *
    • trigger filter
    • *
    • undo
    • *
    • handle bad URLs
    • *
    • StringBean type secondary text output
    • *
    • context sensitive menus
    • *
    */ public class FilterBuilder extends JFrame implements WindowListener, ActionListener, MouseListener, MouseMotionListener, DragGestureListener, DragSourceListener, DropTargetListener, ClipboardOwner { static final String TITLE = "HTML Parser FilterBuilder"; static final URL mDocumentBase; static { String p; char ps; URL base; p = System.getProperty ("user.dir"); // if the system file separator isn't the URL file separator convert it. try { ps = (System.getProperty ("file.separator")).charAt(0); if ('/' != ps) p.replace (ps, '/'); } catch (StringIndexOutOfBoundsException e) { } try { base = new URL ("file:///" + p + "/"); } catch (MalformedURLException murle) { base = null; } mDocumentBase = base; } static String mHomeDir; static { String dir; File file; dir = System.getProperty ("user.home") + System.getProperty ("file.separator") + ".htmlparser"; file = new File (dir); if (!file.exists ()) if (!file.mkdirs ()) // make the directory if it doesn't exist throw new RuntimeException ( "cannot create directory " + file.getAbsolutePath ()); mHomeDir = file.getAbsolutePath (); } /** * The relative position of the mouse while dragging. */ protected Point mBasePoint; /** * Selected commands. */ protected Vector mSelection; /** * If true selection moved. */ protected boolean mMoved; /** * This component is a drop target. */ protected DropTarget mDropTarget; /** * Enables this component to be a Drag Source. */ protected DragSource mDragSource; /** * Kludge: Used by actionPerformed/filterAction to remember the filter menu item. */ protected Component mCurrentComponent; /** * The main panel GUI component. */ protected JPanel mMainPanel; /** * The main panel scrolling GUI component. */ protected JScrollPane mMainScroller; /** * The URL input GUI component. */ protected JTextField mURLField; /** * The output panel GUI component. */ protected JDesktopPane mOutput; /** * Create an FilterBuilder programming environment. */ public FilterBuilder () { JMenuBar menubar; JToolBar toolbar; JMenu menu; JPanel panel; JScrollPane pane; JSplitPane split; JMenuItem item; // drag and drop support mMainPanel = new JPanel (); mDropTarget = new DropTarget (mMainPanel, this); mDragSource = new DragSource (); // menu and toolbar menubar = new JMenuBar(); toolbar = new JToolBar (); toolbar.setAlignmentY (0.222222F); // file menu menu = new JMenu (); menu.setText ("File"); menu.setActionCommand ("File"); menu.setMnemonic ((int)'F'); makeMenuButton ("New", "Create a new document", "New", 'N', KeyStroke.getKeyStroke (KeyEvent.VK_N, Event.CTRL_MASK), toolbar, menu); makeMenuButton ("Open", "Open an existing document", "Open...", 'O', KeyStroke.getKeyStroke (KeyEvent.VK_O, Event.CTRL_MASK), toolbar, menu); makeMenuButton ("Save", "Save the active document", "Save...", 'S', KeyStroke.getKeyStroke (KeyEvent.VK_S, Event.CTRL_MASK), toolbar, menu); makeMenuButton ("SaveAs", "Save the active document", "Save As...", 'A', KeyStroke.getKeyStroke (KeyEvent.VK_A, Event.CTRL_MASK), null, menu); menu.add (new JSeparator ()); makeMenuButton ("Exit", "Exit the program", "Exit", 'E', KeyStroke.getKeyStroke (KeyEvent.VK_E, Event.CTRL_MASK), null, menu); menubar.add (menu); toolbar.add(new JToolBar.Separator()); // edit menu menu = new JMenu (); menu.setText ("Edit"); menu.setActionCommand ("Edit"); menu.setMnemonic ((int)'E'); makeMenuButton ("Cut", "Cut the selection and put it on the Clipboard", "Cut", 'T', KeyStroke.getKeyStroke (KeyEvent.VK_X, Event.CTRL_MASK), toolbar, menu); makeMenuButton ("Copy", "Copy the selection and put it on the Clipboard", "Copy", 'C', KeyStroke.getKeyStroke (KeyEvent.VK_C, Event.CTRL_MASK), toolbar, menu); makeMenuButton ("Paste", "Insert Clipboard contents", "Paste", 'P', KeyStroke.getKeyStroke (KeyEvent.VK_V, Event.CTRL_MASK), toolbar, menu); makeMenuButton ("Delete", "Delete the selection", "Delete", 'D', KeyStroke.getKeyStroke (KeyEvent.VK_DELETE, 0), toolbar, menu); menubar.add (menu); // filter menu menu = new JMenu (); menu.setText ("Filter"); menu.setActionCommand ("Filter"); menu.setMnemonic ((int)'F'); menubar.add (menu); toolbar.add (new JToolBar.Separator()); // filters menu and filters toolbar addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.AndFilterWrapper"); addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.OrFilterWrapper"); addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.NotFilterWrapper"); menu.addSeparator (); toolbar.add (new JToolBar.Separator ()); addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.StringFilterWrapper"); addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.RegexFilterWrapper"); addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.TagNameFilterWrapper"); addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.NodeClassFilterWrapper"); addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.HasAttributeFilterWrapper"); menu.addSeparator (); toolbar.add (new JToolBar.Separator ()); addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.HasParentFilterWrapper"); addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.HasChildFilterWrapper"); addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.HasSiblingFilterWrapper"); menu.addSeparator (); toolbar.add (new JToolBar.Separator ()); // operation menu menu = new JMenu (); menu.setText ("Operation"); menu.setActionCommand ("Operation"); menu.setMnemonic ((int)'r'); item = new JMenuItem (); item.setText ("Expand"); item.setActionCommand ("expandAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem (); item.setText ("Collapse"); item.setActionCommand ("collapseAction"); item.addActionListener (this); menu.add (item); menu.addSeparator (); item = new JMenuItem (); item.setText ("Expand All"); item.setActionCommand ("expandAllAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem (); item.setText ("Collapse All"); item.setActionCommand ("collapseAllAction"); item.addActionListener (this); menu.add (item); menu.addSeparator (); item = new JMenuItem ("Fetch Page"); item.setActionCommand ("fetchAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem ("Execute Filter"); item.setActionCommand ("executeAction"); item.addActionListener (this); menu.add (item); menubar.add (menu); // help menu menu = new JMenu (); menu.setText ("Help"); menu.setActionCommand ("Help"); menu.setMnemonic ((int)'H'); item = new JMenuItem ("Filtering"); item.setActionCommand ("filteringAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem ("Instructions"); item.setActionCommand ("instructionsAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem ("Tutorial"); item.setActionCommand ("tutorialAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem ("Hints"); item.setActionCommand ("hintsAction"); item.addActionListener (this); menu.add (item); makeMenuButton ("About", "Display program information, version number and copyright", "About", 'B', KeyStroke.getKeyStroke (KeyEvent.VK_H, Event.CTRL_MASK), toolbar, menu); menubar.add (menu); setJMenuBar (menubar); // toolbar panel panel = new JPanel (); panel.setLayout (new FlowLayout (FlowLayout.LEFT,0,0)); panel.add (toolbar); getContentPane().setLayout (new BorderLayout (0,0)); getContentPane ().add (BorderLayout.NORTH, panel); // URL entry mURLField = new JTextField (); mURLField.setToolTipText ("Enter the URL to view"); // mTextField.addActionListener (this); mURLField.setText ("http://sourceforge.org/projects/htmlparser"); getContentPane().add (BorderLayout.SOUTH, mURLField); // application setup setTitle (TITLE); setDefaultCloseOperation (WindowConstants.DO_NOTHING_ON_CLOSE); setSize (640, 480); setVisible (false); // main panel mMainPanel.setLayout (new NullLayoutManager ()); mMainScroller = new JScrollPane ( mMainPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); split = new JSplitPane (); pane = new JScrollPane (); pane.setViewportView (mMainScroller); split.setLeftComponent (pane); mOutput = new JDesktopPane (); split.setRightComponent (mOutput); getContentPane().add (BorderLayout.CENTER, split); // shenanigans to get the splitter bar at the midpoint setVisible (true); split.setDividerLocation (0.5); setVisible (false); // listeners addWindowListener (this); setIconImage (Toolkit.getDefaultToolkit ().getImage ("images/program16.gif")); addMouseListener (this); addMouseMotionListener (this); // clipboard buffer mSelection = new Vector (); } /** * Creates a new instance of an FilterBuilder environment with the given title. * @param title the title for the new frame. * @see #FilterBuilder() */ public FilterBuilder (String title) { this (); setTitle (title); } /** * Makes menu and toolbar items for commands. * @param name The name of the command. * @param description A description for the tooltip. * @param text The text for the menu. * @param mnemonic The navigation mnemonic. * @param key Accelerator key. * @param toolbar The toolbar to add the button to. * @param menu The menu to add the menu item to. */ protected void makeMenuButton ( String name, String description, String text, int mnemonic, KeyStroke key, JToolBar toolbar, JMenu menu) { JButton button; JMenuItem item; ImageIcon icon; String command; command = name.toLowerCase (); try { icon = new ImageIcon (getURL ("images/" + command + ".gif")); } catch (java.net.MalformedURLException error) { icon = null; } item = new JMenuItem (); item.setText (text); item.setActionCommand (command + "Action"); item.setAccelerator (key); item.setMnemonic (mnemonic); item.setIcon (icon); item.addActionListener (this); menu.add (item); if (null != toolbar) { button = new JButton (); button.setDefaultCapable (false); button.setToolTipText (description); button.setMnemonic (mnemonic); button.setActionCommand (command + "Action"); button.setMargin (new Insets (0, 0, 0, 0)); button.setIcon (icon); button.addActionListener (this); toolbar.add (button); } } /** * Get a url for the given resource specification. * @param spec The name of the resource. * @return The fully formed URL. * @exception MalformedURLException In the case that the document base * or name of the resource cannot be turned into a URL. */ protected URL getURL (String spec) throws MalformedURLException { URL ret; if (null == (ret = getClass ().getResource (spec))) if ((null != mDocumentBase) && (-1 == spec.indexOf ("//"))) ret = new URL (mDocumentBase, spec); else ret = new URL (spec); return ret; } /** * Creates a new button for the given class. * @param class_name The name of the Filter class. * @return A fully functional button with name, tool tip, * icon and drag recognizer. */ public JButton makeFilterButton (String class_name) { Filter filter; JButton ret; ret = new JButton (); filter = Filter.instantiate (class_name); if (null != filter) { ret.setName (class_name); // filter.getNodeFilter ().getClass ().getName ()); ret.setToolTipText (filter.getDescription ()); ret.setMargin (new Insets (0, 0, 0, 0)); ret.setIcon (filter.getIcon ()); mDragSource.createDefaultDragGestureRecognizer ( ret, DnDConstants.ACTION_MOVE, this); ret.setActionCommand ("filterAction"); ret.addActionListener (this); } return (ret); } /** * Add a filter to the GUI. * Adds the filter specified by class_name to the menu, toolbar and * starts listening for actions. * @param menu The menu to add the filter to. * @param toolbar The toolbar to add the filter to. * @param class_name The class name for the filter wrapper. * From the wrapper, the NodeFilter, description and icon can be obtained. */ public void addFilter (JMenu menu, JToolBar toolbar, String class_name) { Filter filter; filter = Filter.instantiate (class_name); if (null != filter) { String name; String description; Icon icon; String text; JMenuItem item; name = filter.getNodeFilter ().getClass ().getName (); description = filter.getDescription (); icon = filter.getIcon (); text = name.substring (name.lastIndexOf ('.') + 1); item = new JMenuItem (); item.setName (class_name); item.setText (text); item.setActionCommand ("filterAction"); // item.setAccelerator (key); // item.setMnemonic (mnemonic); item.setToolTipText (description); item.setIcon (icon); item.addActionListener (this); menu.add (item); toolbar.add (makeFilterButton (class_name)); } } /** * Adds a set of filters to the main panel or a sublist. * Sets up the GUI components as drop targets and mouse listeners, * and performs a relayout to display them. * @param filters The filter wrappers to add. * @param point The point at which to start adding (list == null). * @param list The list to add to (point not used), or null * for the main panel. */ protected void insertFilters (Filter[] filters, Point point, SubFilterList list) { Dimension dimension; if (null == list) { for (int i = 0; i < filters.length; i++) { filters[i].setLocation (point); mMainPanel.add (filters[i]); dimension = filters[i].getPreferredSize (); point.y += dimension.height; } } else for (int i = 0; i < filters.length; i++) list.addFilter (filters[i]); setupDropTargets (filters); setupMouseListeners (filters); relayout (); } /** * Sets the position of the mouse in the component. * * @param point The point where the mouse position is. */ protected void setBasePoint (Point point) { mBasePoint = point; } /** * Gets the current base point of the mouse pointer. * This value is used to offset the drag position * to maintain the mouse position at the same * relative position within the card while dragging. * * @return The current base point of the mouse pointer. */ protected Point getBasePoint () { return (mBasePoint); } /** * Get the enclosing sub filter list if any. * @param component The component that's supposedly enclosed. * @return The enclosing component or null otherwise. */ protected SubFilterList getEnclosing (Component component) { do component = component.getParent (); while ( (null != component) && !(component instanceof SubFilterList)); return ((SubFilterList)component); } /** * Get the enclosed sub filter list if any. * @param component The component that's supposedly enclosing the list. * @return The enclosed component or null otherwise. */ protected SubFilterList getEnclosed (Component component) { Component[] list; if (component instanceof Container) { list = ((Container)component).getComponents (); for (int i = 0; i < list.length; i++) if (list[i] instanceof SubFilterList) return ((SubFilterList)list[i]); } return (null); } /** * Makes a program like: *
         * // Generated by FilterBuilder. http://htmlparser.org
         * // [aced0005737200206f72672e68746d6c7061727365722e66696c746572732e416e6446696c74657224c30516b2b7b2120200015b000b6d5072656469636174657374001c5b4c6f72672f68746d6c7061727365722f4e6f646546696c7465723b78707572001c5b4c6f72672e68746d6c7061727365722e4e6f646546696c7465723b8f17479b1d5f7992020000787000000002737200246f72672e68746d6c7061727365722e66696c746572732e5461674e616d6546696c746572b28b2601a614890f0200014c00056d4e616d657400124c6a6176612f6c616e672f537472696e673b78707400044d455441737200296f72672e68746d6c7061727365722e66696c746572732e48617341747472696275746546696c74657296abdfb3b0714cda0200024c000a6d41747472696275746571007e00064c00066d56616c756571007e000678707400046e616d6570]
         *                                                                                                                                                         
         * import org.htmlparser.*;
         * import org.htmlparser.filters.*;
         * import org.htmlparser.beans.*;
         * import org.htmlparser.util.*;
         *                                                                                                                                                         
         * public class Test
         * {
         *     public static void main (String args[])
         *     {
         *         TagNameFilter filter0 = new TagNameFilter ();
         *         filter0.setName ("META");
         *         HasAttributeFilter filter1 = new HasAttributeFilter ();
         *         filter1.setAttributeName ("name");
         *         NodeFilter[] array0 = new NodeFilter[2];
         *         array0[0] = filter0;
         *         array0[1] = filter1;
         *         AndFilter filter2 = new AndFilter ();
         *         filter2.setPredicates (array0);
         *         NodeFilter[] array1 = new NodeFilter[1];
         *         array1[0] = filter2;
         *         FilterBean bean = new FilterBean ();
         *         bean.setFilters (array1);
         *         if (0 != args.length)
         *         {
         *             bean.setURL (args[0]);
         *             System.out.println (bean.getNodes ().toHtml ());
         *         }
         *         else
         *             System.out.println ("Usage: java -classpath .:htmlparser.jar Test ");
         *     }
         * }
         * 
    * @param name The name of the class. * @param out The buffer to append to. * @param bean The bean to extract the filters from to make the program. */ protected void makeProgram (String name, StringBuffer out, FilterBean bean) { // so we need to keep track of filters and arrays of filters to give them unique numbers // each Filter is responsible for outputting it's code and returning it's variable name int[] context; // 0 - indent, 1 - next filter variable #, 2 - next array of filters variable # String[] names; Filter[] filters; String array; filters = (Filter[])bean.getFilters (); context = new int[3]; context[0] = 0; Filter.spaces (out, context[0]); out.append ("// Generated by FilterBuilder. http://htmlparser.org"); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("// "); try { out.append (Filter.deconstitute (filters)); } catch (IOException ioe) { ioe.printStackTrace (); } Filter.newline (out); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("import org.htmlparser.*;"); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("import org.htmlparser.filters.*;"); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("import org.htmlparser.beans.*;"); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("import org.htmlparser.util.*;"); Filter.newline (out); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("public class "); out.append (name); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("{"); context[0] = 4; Filter.newline (out); Filter.spaces (out, context[0]); out.append ("public static void main (String args[])"); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("{"); Filter.newline (out); context[0] = 8; names = new String [filters.length]; for (int i = 0; i < names.length; i++) names[i] = filters[i].toJavaCode (out, context); array = "array" + context[2]++; Filter.spaces (out, context[0]); out.append ("NodeFilter[] "); out.append (array); out.append (" = new NodeFilter["); out.append (filters.length); out.append ("];"); Filter.newline (out); for (int i = 0; i < filters.length; i++) { Filter.spaces (out, context[0]); out.append (array); out.append ("["); out.append (i); out.append ("] = "); out.append (names[i]); out.append (";"); Filter.newline (out); } Filter.spaces (out, context[0]); out.append ("FilterBean bean = new FilterBean ();"); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("bean.setFilters ("); out.append (array); out.append (");"); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("if (0 != args.length)"); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("{"); Filter.newline (out); context[0] = 12; Filter.spaces (out, context[0]); out.append ("bean.setURL (args[0]);"); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("System.out.println (bean.getNodes ().toHtml ());"); Filter.newline (out); context[0] = 8; Filter.spaces (out, context[0]); out.append ("}"); Filter.newline (out); Filter.spaces (out, context[0]); out.append ("else"); Filter.newline (out); context[0] = 12; Filter.spaces (out, context[0]); out.append ("System.out.println (\"Usage: java -classpath .:htmlparser.jar "); out.append (name); out.append (" \");"); Filter.newline (out); context[0] = 4; Filter.spaces (out, context[0]); out.append ("}"); Filter.newline (out); context[0] = 0; Filter.spaces (out, context[0]); out.append ("}"); Filter.newline (out); } /** * Extracts a java class name from a file name. * ToDo: make this package-smart somehow. * @param file The name of the file. * @return The name of the class. */ protected String classFromFile (String file) { String filesep; int index; // remove any path filesep = System.getProperty ("file.separator"); index = file.lastIndexOf (filesep); if (-1 != index) file = file.substring (index + filesep.length ()); // remove the extension index = file.indexOf ('.'); if (-1 != index) file = file.substring (0, index); return (file); } /** * Save the workspace contents to file. * @param name The name of the file to save it under. */ public void save (String name) { Filter[] selections; FilterBean bean; StringBuffer buffer; PrintWriter out; String ok = "OK"; selections = getFilters (); if (0 != selections.length) { bean = new FilterBean (); bean.setURL (mURLField.getText ()); bean.setFilters (selections); buffer = new StringBuffer (); makeProgram (classFromFile (name), buffer, bean); try { out = new PrintWriter (new FileWriter (name), true); try { out.write (buffer.toString ()); out.flush (); } finally { out.close (); } } catch (IOException ioe) { ioe.printStackTrace (); } } else // ToDo: grey out save option if nothing to save... JOptionPane.showOptionDialog ( mMainPanel, "No filters to save.", "Oops", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE, null, new String[] { ok }, ok); } /** * The action to take when "New" menu or button pressed. */ protected void newAction () { mMainPanel.removeAll (); mSelection.clear (); relayout (); } /** * The action to take when "Open" menu or button pressed. */ protected void openAction () { FileDialog dialog; File file; dialog = new FileDialog (this); dialog.setMode (FileDialog.LOAD); dialog.setTitle ("Open"); dialog.setDirectory (mHomeDir); dialog.setVisible (true); if (null != dialog.getFile ()) { mHomeDir = dialog.getDirectory (); file = new File (mHomeDir + dialog.getFile ()); open (file.getAbsolutePath ()); setTitle (TITLE + " - " + file.getAbsolutePath ()); } } /** * The action to take when "Save" menu or button pressed. */ protected void saveAction () { String title; int index; File file; FileDialog dialog; title = getTitle (); index = title.indexOf (" - "); if (-1 != index) file = new File (title.substring (index + 3)); else { dialog = new FileDialog (this); dialog.setMode (FileDialog.SAVE); dialog.setTitle ("Save"); dialog.setDirectory (mHomeDir); dialog.setVisible (true); if (null != dialog.getFile ()) { mHomeDir = dialog.getDirectory (); file = new File (mHomeDir + dialog.getFile ()); setTitle (TITLE + " - " + file.getAbsolutePath ()); } else file = null; } if (null != file) save (file.getAbsolutePath ()); } /** * The action to take when "Save As" menu or button pressed. */ protected void saveasAction () { setTitle (TITLE); saveAction (); } /** * The action to take when "Exit" menu or button pressed. */ protected void exitAction () { exitApplication (); } /** * The action to take when "Cut" menu or button pressed. */ protected void cutAction () { String string; StringSelection contents; Clipboard cb; // get the selection string = serializeSelection (); // copy to clipboard contents = new StringSelection (string); cb = Toolkit.getDefaultToolkit ().getSystemClipboard (); cb.setContents (contents, this); // delete the selection deleteSelection (); relayout (); } /** * The action to take when "Copy" menu or button pressed. */ protected void copyAction () { String string; StringSelection contents; Clipboard cb; // get the selection string = serializeSelection (); // copy to clipboard contents = new StringSelection (string); cb = Toolkit.getDefaultToolkit ().getSystemClipboard (); cb.setContents (contents, this); } /** * The action to take when "Paste" menu or button pressed. */ protected void pasteAction () { Clipboard cb; Transferable content; String string; Filter[] filters; Point point; SubFilterList list; // get the text cb = Toolkit.getDefaultToolkit ().getSystemClipboard (); content = cb.getContents (this); if (content.isDataFlavorSupported (DataFlavor.stringFlavor)) { try { string = (String)content.getTransferData (DataFlavor.stringFlavor); // deserialize it and add into the selection filters = Filter.reconstitute (string, new Parser (mURLField.getText ())); // add it to the (single) selected object or main panel if (isSingleSelection () && (null != (list = getEnclosed (getSelection ()[0])))) { for (int i = 0; i < filters.length; i++) list.addFilter (filters[i]); } else { point = new Point (0,0); for (int i = 0; i < filters.length; i++) { filters[i].setLocation (point); mMainPanel.add (filters[i]); point.y += filters[i].getPreferredSize ().height; } } setupMouseListeners (filters); setupDropTargets (filters); relayout (); } catch (Exception e) { e.printStackTrace (); } } } /** * The action to take when "Delete" menu or button pressed. */ protected void deleteAction () { // delete the selection deleteSelection (); relayout (); } /** * The action to take when a filter menu or button pressed. */ protected void filterAction () { String cls; Filter filter; SubFilterList list; Point point; // retrieve the source component placed there by actionPerformed cls = mCurrentComponent.getName (); filter = Filter.instantiate (cls); // need this to get the underlying filter prepped? try { filter = Filter.wrap (filter.getNodeFilter (), new Parser (mURLField.getText ())); } catch (ParserException pe) { pe.printStackTrace (); } // add it to the (single) selected object or main panel if (isSingleSelection () && (null != (list = getEnclosed (getSelection ()[0])))) { insertFilters (new Filter[] {filter}, null, list); } else { point = new Point (50,50); // find where and who to stick it into insertFilters (new Filter[] {filter}, point, null); } } /** * The action to take when "Fetch" menu pressed. */ protected void fetchAction () { JInternalFrame frame; Dimension dimension; Parser parser; NodeList list; // set up an internal frame for the results frame = new JInternalFrame (mURLField.getText ()); frame.setClosable (true); frame.setResizable (true); dimension = mOutput.getSize (); frame.setBounds (0, 0, dimension.width, dimension.height); list = new NodeList (); try { parser = new Parser (mURLField.getText ()); try { for (NodeIterator iterator = parser.elements (); iterator.hasMoreNodes (); ) list.add (iterator.nextNode ()); } catch (EncodingChangeException ece) { list.removeAll (); parser.reset (); for (NodeIterator iterator = parser.elements (); iterator.hasMoreNodes (); ) list.add (iterator.nextNode ()); } } catch (ParserException pe) { pe.printStackTrace (); } JTree tree = new JTree (new HtmlTreeModel (list)); tree.setRootVisible (false); tree.setCellRenderer (new HtmlTreeCellRenderer ()); JScrollPane treeView = new JScrollPane (tree); frame.setContentPane (new JScrollPane ( treeView, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED)); mOutput.add (frame, new Integer (1)); try { frame.setSelected (true); } catch (PropertyVetoException pve) { pve.printStackTrace (); } frame.show (); } /** * The action to take when "Execute" menu or button pressed. */ protected void executeAction () { Filter[] selections; FilterBean bean; JInternalFrame frame; Dimension dimension; // JTextPane text; selections = getSelection (); if (0 == selections.length) selections = getFilters (); if (0 != selections.length) { bean = new FilterBean (); bean.setURL (mURLField.getText ()); bean.setFilters (selections); // set up an internal frame for the results frame = new JInternalFrame (bean.getURL ()); frame.setClosable (true); frame.setResizable (true); dimension = mOutput.getSize (); frame.setBounds (0, 0, dimension.width, dimension.height / 2); JTree tree = new JTree (new HtmlTreeModel (bean.getNodes ())); tree.setRootVisible (false); tree.setCellRenderer (new HtmlTreeCellRenderer ()); JScrollPane treeView = new JScrollPane (tree); frame.setContentPane (new JScrollPane ( treeView, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED)); // text = new JTextPane (); // text.setText (bean.getNodes ().toHtml ()); // frame.setContentPane (new JScrollPane ( // text, // ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, // ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED)); mOutput.add (frame, new Integer(2)); // layer 2? try { frame.setSelected (true); } catch (PropertyVetoException pve) { pve.printStackTrace (); } frame.show (); } } /** * The action to take when "Instructions" menu pressed. */ protected void instructionsAction () { String instructions = "" + "Enter the target URL in the text box at the bottom of the window.
    " + "Choose 'Fetch Page' from the Operations menu to see the whole page.
    " + "Pick filters from the Filter menu or drag them from the toolbar.
    " + "Filters such as And, Or, Not, HasParent, HasChild and HasSibling contain other filters:
    " + "
    • drag new filters into their blank areas at the bottom
    • " + "
    • cut an existing filter and paste into a selected filter
    " + "Build the filter incrementally, choosing 'Execute Filter' to test the selected filter.
    " + "Save creates a .java file that runs the top level filter.
    " + "Right click on a filter displays a pop-up menu.
    " + "Double click on a blue item in the result pane expands the tree." + ""; String close = "Close"; JOptionPane.showOptionDialog ( // not .showMessageDialog( mMainPanel, instructions, "FilterBuilder Instructons", // remove this: JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, // and remove rest of these: null, new String[] { close }, close); } /** * The action to take when "Filtering" menu pressed. */ protected void filteringAction () { String instructions = "" + "The HTML Parser filter subsystem extracts items from a web page,
    " + "corresponding to the use-case 'I want this little piece of information from http://yadda'.
    " + "The web page is considered a heirarchical tree of nodes. Usually the root node is <html>,
    " + "intermediate level nodes are <div> and <table> for example,
    " + "and leaf nodes are things like text or <img>.
    " + "Any node that isn't the root node has a 'parent' node.
    " + "Leaf nodes, by definition, have no 'children'.
    " + "A filter is a Java class that answers the simple question:
    " + "
    Is this node acceptable? True or false.

    " + "Some filters know the answer just by looking at the node,
    " + "while others must ask other filters, sometimes looking up or down the node heirarchy.
    " + "The FilterBuilder is a program for making other programs that use filters.
    " + "By combining different types of filters, specific nodes can be isolated from the
    " + "target web page.
    " + "The results are usually passed on to another part of the users program
    " + "that does something useful with them.
    " + "The filters available include:
    " + "
      " + "
    • AndFilter - The main 'combining' filter, answers true only if
      " + "all it's subfilters (predicates) are true.
    • " + "
    • OrFilter - A 'combining' filter that answers true if
      " + "any of it's subfilters (predicates) are true.
    • " + "
    • NotFilter - A 'reversing' filter that answers true if
      " + "it's subfilter (predicate) is false.
    • " + "
    • StringFilter - A 'leaf' filter that answers true if
      " + "the node is text and it contains a certain sequence of characters.
      " + "It can be made case insensitive, but in this case a 'locale' must be
      " + "supplied as a context for upper-case conversion.
    • " + "
    • RegexFilter - A 'leaf' filter that answers true if
      " + "the node is text and it contains a certain pattern (regular expression).
      " + "Regular expressions are descibed in the java.util.regex.Pattern class documentation.
    • " + "
    • TagNameFilter - A filter that answers true if
      " + "the node is a tag and it has a certain name," + "i.e. <div> would match the name DIV.
    • " + "
    • NodeClassFilter - A filter that answers true if
      " + "the node is a certain tag class. Not recommended, use TagNameFilter instead.
    • " + "
    • HasAttributeFilter - A filter that answers true if
      " + "the node is a tag and it has a certain attribute,
      " + "i.e. <script language=javascript> would match the attribute LANGUAGE.
      " + "It can be further restricted to have a certain attribute value as well,
      " + "i.e. 'javascript' in this example.
    • " + "
    • HasParentFilter - A filter that answers true if
      " + "the node is a child of a node that is acceptable to a certain filter.
      " + "This can be made recursive, which means the acceptable parent can be
      " + "further up the heirarchy than just the immediate parent node.
    • " + "
    • HasChildFilter - A filter that answers true if
      " + "the node is a parent of a node that is acceptable to a certain filter.
      " + "This can be made recursive, which means the acceptable child can be
      " + "further down the heirarchy than just the immediate children nodes.
    • " + "
    • HasSiblingFilter - A filter that answers true if
      " + "the node is a sibling (they have a common parent) of a node that is
      " + "acceptable to a certain filter.
    • " + "
    " + ""; String close = "Close"; JOptionPane.showOptionDialog ( // not .showMessageDialog( mMainPanel, instructions, "FilterBuilder Instructons", // remove this: JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, // and remove rest of these: null, new String[] { close }, close); } /** * The action to take when "Tutorial" menu pressed. */ protected void tutorialAction () { String instructions = "" + "To get the title text from a page:
    " + "
    • Choose 'New' from the File menu.
    • " + "
    • Choose 'AndFilter' from the Filter menu.
    • " + "
    • Select the And filter so it is highlighted.
    • " + "
    • Choose 'HasParent' from the Filter menu.
    • " + "
    • Toggle the 'Recursive' checkbox on in the HasParent filter.
    • " + "
    • Select the HasParent filter so it is highlighted.
    • " + "
    • Choose 'TagName' from the Filter menu.
      " + "Alternatively, you can drag the TagName filter (icon Hello-BOB)
      " + "from the toolbar and drop inside the HasParent filter
    • " + "
    • Choose 'TITLE' from the TagName combo-box.
    • " + "
    • Select the And filter and choose 'Execute Filter' from the
      " + "Operations menu to test it.
    • " + "
    • If there is unwanted non-text nodes in the result
      " + "select the And filter and choose 'RegexFilter' from the Filter menu.
    • " + "
    • Test it again, as above.
    • " + "
    • Choose 'Save' from the File menu and enter a filename like GetTitle.java
    • " + "
    • Compile the java file and run it.
    " + ""; String close = "Close"; JOptionPane.showOptionDialog ( // not .showMessageDialog( mMainPanel, instructions, "FilterBuilder Tutorial", // remove this: JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, // and remove rest of these: null, new String[] { close }, close); } /** * The action to take when "Hints" menu pressed. */ protected void hintsAction () { String instructions = "" + "Hints:
    " + "
    • There is no undo yet, so save often.
    • " + "
    • Recursive HasParent and HasChild filters can be costly.
    • " + "
    • RegexFilter is more expensive than StringFilter.
    • " + "
    • The order of predicates in And and Or filters matters for performance,
      " + "put cheap tests first.
    • " + "
    • The same node may show up more than once in the results,
      " + "and at more than one nesting depth, depending on the filter used.
    • " + "
    • Typing in a tag name in the TagName filter is not recommended,
      " + "since extraneous characters can be added. Use an item from the list instead.
    " + ""; String close = "Close"; JOptionPane.showOptionDialog ( // not .showMessageDialog( mMainPanel, instructions, "FilterBuilder Hints", // remove this: JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, // and remove rest of these: null, new String[] { close }, close); } /** * The action to take when "About" menu or button pressed. */ protected void aboutAction () { String close = "Close"; JOptionPane.showOptionDialog ( // not .showMessageDialog( mMainPanel, "
    The HTML Parser FilterBuilder
    by Derrick Oswald  DerrickOswald@users.sourceforge.net
    http://htmlparser.org

    Copyright © 2005
    ", "About FilterBuilder", // remove this: JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, // and remove rest of these: null, new String[] { close }, close); } /** * The action to take when "Expand" menu chosen. */ public void expandAction () { setExpanded (getSelection (), true, false); } /** * The action to take when "Collapse" menu chosen. */ public void collapseAction () { setExpanded (getSelection (), false, false); } /** * The action to take when "Expand All" menu chosen. */ public void expandAllAction () { setExpanded (getSelection (), true, true); } /** * The action to take when "Collapse" menu chosen. */ public void collapseAllAction () { setExpanded (getSelection (), false, true); } /** * Set up mouse listeners. * Sets this up to listen to each command * in the list as a MouseListener. * Recursively descends the tree adding to all contained elements also. * @param filters The container with commands in it. */ public void setupMouseListeners (Filter[] filters) { SubFilterList list; for (int i = 0; i < filters.length; i++) { // set us up as a mouse listener on it ((Component)filters[i]).addMouseListener (this); ((Component)filters[i]).addMouseMotionListener (this); list = getEnclosed (filters[i]); if (null != list) setupMouseListeners (list.getFilters ()); } } /** * Set up drop targets. * Recursively descends the filter tree and sets up * the filter lists as drop targets. * @param filters The container with filters in it. */ public void setupDropTargets (Filter[] filters) { SubFilterList list; Component[] components; for (int i = 0; i < filters.length; i++) { list = getEnclosed (filters[i]); if (null != list) { components = list.getDropTargets (); for (int j = 0; j < components.length; j++) new DropTarget (components[j], this); setupDropTargets (list.getFilters ()); } } } /** * Expand or collapse filters, possibly recursively. * @param filters The list of filters to expand or collapse. * @param expanded If true the filters are expanded, * otherwise they are collapsed. * @param recursive If true the filters are processed * recursively. */ public void setExpanded ( Filter[] filters, boolean expanded, boolean recursive) { SubFilterList list; for (int i = 0; i < filters.length; i++) { if (recursive && (null != (list = getEnclosed (filters[i])))) setExpanded (list.getFilters (), expanded, recursive); filters[i].setExpanded (expanded); } } /** * Retrieve the top level filters in the main window. * @return The top level filters. */ public Filter[] getFilters () { Component[] components; Filter[] ret; components = mMainPanel.getComponents (); ret = new Filter[components.length]; System.arraycopy (components, 0, ret, 0, components.length); return (ret); } /** * Redo the layout. */ public void relayout () { mMainPanel.invalidate (); mMainScroller.invalidate (); mMainScroller.validate (); mMainScroller.repaint (); } /** * Read a workspace from file. * The current contents are erased. * @param name The name of the file to open. */ public void open (String name) { LineNumberReader reader; String line; Filter[] filters; Point point; Dimension dimension; try { reader = new LineNumberReader (new FileReader (name)); while (null != (line = reader.readLine ())) if (line.startsWith ("// [")) { line = line.substring (3); try { filters = Filter.reconstitute (line, new Parser (mURLField.getText ())); mMainPanel.removeAll (); point = new Point (); for (int i = 0; i < filters.length; i++) { dimension = filters[i].getPreferredSize (); mMainPanel.add (filters[i]); filters[i].setLocation (point); point.y += dimension.height; } setupMouseListeners (filters); setupDropTargets (filters); relayout (); } catch (ParserException pe) { pe.printStackTrace (); } break; } reader.close (); } catch (IOException ioe) { ioe.printStackTrace (); } } /** * Exit back to the operating system. */ void exitApplication () { this.setVisible (false); // hide the Frame this.dispose (); // free the system resources System.exit (0); // close the application } /** * Show a pop up context menu. * Shows a context sensitive popup menu at the location of the * mouse event. * @param event The mouse event that initiates the popup. */ public void showContextMenu (MouseEvent event) { JPopupMenu menu; JMenuItem item; menu = new JPopupMenu (); menu.setName ("Popup"); item = new JMenuItem ("Expand"); item.setActionCommand ("expandAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem ("Collapse"); item.setActionCommand ("collapseAction"); item.addActionListener (this); menu.add (item); menu.addSeparator (); item = new JMenuItem ("Expand All"); item.setActionCommand ("expandAllAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem ("CollapseAll"); item.setActionCommand ("collapseAllAction"); item.addActionListener (this); menu.add (item); menu.addSeparator (); item = new JMenuItem ("Cut"); item.setActionCommand ("cutAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem ("Copy"); item.setActionCommand ("copyAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem ("Paste"); item.setActionCommand ("pasteAction"); item.addActionListener (this); menu.add (item); item = new JMenuItem ("Delete"); item.setActionCommand ("deleteAction"); item.addActionListener (this); menu.add (item); menu.addSeparator (); item = new JMenuItem ("Execute Filter"); item.setActionCommand ("executeAction"); item.addActionListener (this); menu.add (item); menu.show (event.getComponent (), event.getX (), event.getY ()); } // // selection manipulation // /** * Add a filter to the current selection set. * @param filter The filter to add. */ protected void addSelection (Filter filter) { if (!selectionContains (filter)) mSelection.addElement (filter); filter.setSelected (true); mMoved = false; } /** * Remove a filter from the current selection set. * @param filter The filter to remove. */ protected void removeSelection (Filter filter) { mSelection.removeElement (filter); // no harm if not contained filter.setSelected (false); } /** * Select(highlight)/deselect the current selection set. * @param select If true turn on highlighting, * turn it off otherwise. */ protected void selectSelection (boolean select) { int count; Filter filter; count = mSelection.size (); for (int i = 0; i < count; i++) { filter = (Filter)mSelection.elementAt (i); filter.setSelected (select); } } /** * Clear (empty) the current selection set. */ protected void clearSelection () { selectSelection (false); mSelection.removeAllElements (); } /** * Move the current selection set as a group. * @param translation The displacement to move them all by. */ protected void moveSelection (Point translation) { int count; Filter filter; Point point; count = mSelection.size (); for (int i = 0; i < count; i++) { filter = (Filter)mSelection.elementAt (i); point = filter.getLocation (); point.translate (translation.x, translation.y); synchronized (filter.getTreeLock ()) { filter.setLocation (point.x, point.y); } } mMoved = true; } /** * Check if the current selection set contains the given filter. * @param filter The filter to check. * @return true if the filter is a member, * false otherwise. */ protected boolean selectionContains (Filter filter) { return (mSelection.contains (filter)); } /** * Return the last filter added to the selection set. * @return The last filter added or null if the current * selection set is empty. */ protected Filter lastSelected () { Filter ret; ret = null; if (0 < mSelection.size ()) ret = (Filter)mSelection.lastElement (); return (ret); } /** * Return the current selection set as an array. * @return The array of selected filters. */ protected Filter[] getSelection () { Filter[] ret; ret = new Filter[mSelection.size ()]; mSelection.copyInto (ret); return (ret); } /** * Serialize the current selection set. * @return The serialized form of the set of filters. */ public String serializeSelection () { Filter[] filters; StringWriter writer; PrintWriter out; filters = getSelection (); writer = new StringWriter (200); out = new PrintWriter (writer, false); try { out.println (Filter.deconstitute (filters)); } catch (IOException ioe) { ioe.printStackTrace (); } finally { out.close (); } return (writer.getBuffer ().toString ()); } /** * Delete the current selection set from the filters in the GUI. */ public void deleteSelection () { Filter[] filters; SubFilterList list; filters = getSelection (); for (int i = 0; i < filters.length; i++) { list = getEnclosing (filters[i]); if (null != list) list.removeFilter (filters[i]); else mMainPanel.remove (filters[i]); } mSelection.clear (); } /** * Check if there is more than one filter selected. * @return true if only one filter is selected, * false otherwise. */ public boolean isSingleSelection () { return (1 == mSelection.size()); } // // MouseListener interface // /** * Invoked when the mouse has been clicked on a component. * @param event The mouse clicked event. */ public void mouseClicked (MouseEvent event) { Object component; Filter filter; SubFilterList list; int modifiers; boolean contained; Filter[] filters; component = event.getSource (); if (component instanceof Filter) { filter = (Filter)component; modifiers = event.getModifiers (); contained = selectionContains (filter); if (0 != (modifiers & InputEvent.SHIFT_MASK)) { // add everything from last selected to this command list = getEnclosed (filter); if (null != list) filters = list.getFilters (); else filters = getFilters (); Filter last = lastSelected (); if (null == last) addSelection (filter); else { int current = -1; int recent = -1; for (int i = 0; i < filters.length; i++) { if (filters[i] == filter) current = i; if (filters[i] == last) recent = i; } if ((current != -1) && (recent != -1)) for (int i = Math.min (current, recent); i <= Math.max (current, recent); i++) addSelection (filters[i]); } } else if (0 != (modifiers & InputEvent.CTRL_MASK)) { // add just the new command if (contained) removeSelection (filter); else addSelection (filter); } else if (0 != (modifiers & InputEvent.BUTTON3_MASK)) { if (!selectionContains (filter)) { clearSelection (); addSelection (filter); } showContextMenu (event); } else { clearSelection (); addSelection (filter); } } else clearSelection (); } /** * Invoked when a mouse button has been released on a component. * @param event The mouse released event. */ public void mouseReleased (MouseEvent event) { } /** * Invoked when the mouse enters a component. * @param event The mouse entered event. */ public void mouseEntered (MouseEvent event) { } /** * Invoked when the mouse exits a component. * @param event The mouse exited event. */ public void mouseExited (MouseEvent event) { } /** * Invoked when a mouse button has been pressed on a component. * @param event The mouse pressed event. */ public void mousePressed (MouseEvent event) { Object component; Point newpoint; Point upperleft; component = event.getSource (); if (component instanceof Filter) { // translate the point relative to the enclosing container newpoint = event.getPoint (); upperleft = ((Component)component).getLocation (); newpoint.translate (upperleft.x, upperleft.y); setBasePoint (newpoint); } else setBasePoint (null); } // // MouseMotionListener interface // /** * Mouse drag notification. * Invoked when a mouse button is pressed on a component and * then dragged. Mouse drag events will continue to be * delivered to the component where the first originated * until the mouse button is released (regardless of whether * the mouse position is within the bounds of the component). * @param event The mouse drag event. */ public synchronized void mouseDragged (MouseEvent event) { Object component; Filter filter; Point base; Point newpoint; Point upperleft; Point translation; component = event.getSource (); if (component instanceof Filter) { filter = (Filter)component; if (selectionContains (filter)) // drag on a selected item { if (null == getEnclosing (filter)) // not contained try { base = getBasePoint (); if (null != base) { newpoint = event.getPoint (); // translate the point relative to the enclosing container upperleft = filter.getLocation (); newpoint.translate (upperleft.x, upperleft.y); // get the difference between this point and the old base translation = new Point ( newpoint.x - base.x, newpoint.y - base.y); // update the base point setBasePoint (newpoint); // apply this difference to the selection moveSelection (translation); } } catch (Exception e) { } } else mouseClicked (event); // a small slip shouldn't stop a click } } /** * Mouse move notification. * Invoked when the mouse button has been moved on a component * (with no buttons no down). * @param event The mouse moved event. */ public void mouseMoved (MouseEvent event) { } // // WindowListener interface // /** * Invoked the first time a window is made visible. * Not used. * @param event The window event. */ public void windowOpened (WindowEvent event) {} /** * Handles window closing event. * Performs function exitApplication(). * @param event The window event. */ public void windowClosing (WindowEvent event) { if (event.getSource () == this) exitApplication (); } /** * Invoked when a window has been closed as the result * of calling dispose on the window. * Not used. * @param event The window event. */ public void windowClosed (WindowEvent event) {} /** * Invoked when a window is changed from a normal to a * minimized state. For many platforms, a minimized window * is displayed as the icon specified in the window's * iconImage property. * Not used. * @param event The window event. */ public void windowIconified (WindowEvent event) {} /** * Invoked when a window is changed from a minimized * to a normal state. * Not used. * @param event The window event. */ public void windowDeiconified (WindowEvent event) {} /** * Invoked when the window is set to be the user's * active window, which means the window (or one of its * subcomponents) will receive keyboard events. * Not used. * @param event The window event. */ public void windowActivated (WindowEvent event) {} /** * Invoked when a window is no longer the user's active * window, which means that keyboard events will no longer * be delivered to the window or its subcomponents. * Not used. * @param event The window event. */ public void windowDeactivated (WindowEvent event) {} // // ActionListener interface // /** * Handles menu and toolbar item choices. * @param event The action even that triggers this function. */ public void actionPerformed (ActionEvent event) { Object object; String action; object = event.getSource(); // if (object instanceof JButton) // { // String url; // url = mURLField.getText (); // mURLField.selectAll (); // //setURL (url); // } if (object instanceof JButton) action = ((JButton)object).getActionCommand (); else if (object instanceof JMenuItem) action = ((JMenuItem)object).getActionCommand (); else action = null; if (object instanceof Component) mCurrentComponent = (Component)object; if (null != action) try { Method method = this.getClass ().getDeclaredMethod (action, new Class[0]); method.invoke (this, new Object[0]); } catch (NoSuchMethodException nsme) { System.out.println ("no " + action + " method found"); } catch (Exception e) { e.printStackTrace (); } } // // ClipboardOwner interface // /** * Notifies this object that it is no longer the owner * of the contents of the clipboard. * @param clipboard The clipboard that is no longer owned. * @param contents The contents which this owner had placed on the clipboard. */ public void lostOwnership (Clipboard clipboard, Transferable contents) { System.out.println ("lost clipboard ownership"); } // // DragGestureListener interface // /** * A DragGestureRecognizer has detected a platform-dependent drag initiating gesture. * It is notifying this listener in order for it to initiate the action for the user. * @param event The DragGestureEvent describing the gesture that has just occurred. */ public void dragGestureRecognized (DragGestureEvent event) { Component component; String cls; Filter filter; StringSelection text; component = event.getComponent (); try { cls = component.getName (); // (String)Filter.mWrappers.get (component.getName ()); if (null != cls) { filter = Filter.instantiate (cls); text = new StringSelection (Filter.deconstitute (new Filter[] { filter })); mDragSource.startDrag (event, DragSource.DefaultMoveDrop, text, this); } } catch (Exception e) { e.printStackTrace (); } } // // DragSourceListener interface // /** * This message goes to DragSourceListener, * informing it that the dragging has ended. * @param event Details about the drop event. */ public void dragDropEnd (DragSourceDropEvent event) { if (event.getDropSuccess ()) { // System.out.println ("added new class"); } } /** * This message goes to DragSourceListener, * informing it that the dragging has entered the DropSite. * @param event Details about the drag event. */ public void dragEnter (DragSourceDragEvent event) { // System.out.println ("dragEnter"); } /** * This message goes to DragSourceListener, informing it that the dragging * has exited the DropSite. * @param event Details about the drag event. */ public void dragExit (DragSourceEvent event) { // System.out.println( "dragExit"); } /** * This message goes to DragSourceListener, informing it that the dragging is currently * ocurring over the DropSite. * @param event Details about the drag event. */ public void dragOver (DragSourceDragEvent event) { // System.out.println( "dragExit"); } /** * This is invoked when the user changes the dropAction. * @param event Details about the drop action event. */ public void dropActionChanged (DragSourceDragEvent event) { // System.out.println( "dropActionChanged"); } // // DropTargetListener interface // /** * This is invoked when you are dragging over the DropSite. * @param event Details about the drag event. */ public void dragEnter (DropTargetDragEvent event) { // debug messages for diagnostics // event.acceptDrag (DnDConstants.ACTION_MOVE); // System.out.println ("dragEnter"); DropTargetContext context; Component component; SubFilterList list; // find the enclosing filter context = event.getDropTargetContext (); component = context.getComponent (); while ( (null != component) && !(component instanceof SubFilterList) && !(component == mMainPanel)) component = component.getParent (); if (component instanceof SubFilterList) list = (SubFilterList)component; else list = null; // so either list is the enclosing list, // or list is null and the target component is the main panel if (null != list) if (!list.canAccept ()) event.rejectDrag (); else list.setSelected (true); } /** * Thi ss invoked when you are exit the DropSite without dropping. * @param event Details about the drag event. */ public void dragExit (DropTargetEvent event) { // debug messages for diagnostics // event.acceptDrag (DnDConstants.ACTION_MOVE); // System.out.println ("dragEnter"); DropTargetContext context; Component component; SubFilterList list; // find the enclosing filter context = event.getDropTargetContext (); component = context.getComponent (); while ( (null != component) && !(component instanceof SubFilterList) && !(component == mMainPanel)) component = component.getParent (); if (component instanceof SubFilterList) list = (SubFilterList)component; else list = null; // so either list is the enclosing list, // or list is null and the target component is the main panel if (null != list) list.setSelected (false); } /** * This is invoked when a drag operation is going on. * @param event Details about the drag event. */ public void dragOver (DropTargetDragEvent event) { // System.out.println( "dragOver"); } /** * This is invoked when a drop has occurred. * @param event The drop event. */ public void drop (DropTargetDropEvent event) { DropTargetContext context; Component component; SubFilterList list; String s; Point point; Filter[] filters; boolean accept; // find the enclosing filter context = event.getDropTargetContext (); component = context.getComponent (); while ( (null != component) && !(component instanceof SubFilterList) && !(component == mMainPanel)) component = component.getParent (); if (component instanceof SubFilterList) list = (SubFilterList)component; else list = null; // so either list is the enclosing list, // or list is null and the target component is the main panel try { accept = false; Transferable transferable = event.getTransferable(); // we accept only Strings if (transferable.isDataFlavorSupported (DataFlavor.stringFlavor)) { accept = true; event.acceptDrop (DnDConstants.ACTION_MOVE); s = (String)transferable.getTransferData (DataFlavor.stringFlavor); point = event.getLocation (); try { // get the filter and add into the target filters = Filter.reconstitute (s, new Parser (mURLField.getText ())); if (0 < filters.length) insertFilters (filters, point, list); if (null != list) list.setSelected (false); } catch (Exception e) { e.printStackTrace (); } // signal the drop was successful context.dropComplete (accept); } else event.rejectDrop(); } catch (IOException exception) { exception.printStackTrace(); System.err.println( "Exception" + exception.getMessage()); event.rejectDrop(); } catch (UnsupportedFlavorException ufException) { ufException.printStackTrace(); System.err.println( "Exception" + ufException.getMessage()); event.rejectDrop(); } } /** * This is invoked if the user modifies the current drop gesture. * @param event Details about the drop action change event. */ public void dropActionChanged (DropTargetDragEvent event) { // System.out.println( "dropActionChanged"); } /** * The entry point for this application. * Creates a new FilterBuilder and makes it visible. * @param args [0] optional URL to operate on. */ public static void main (String args[]) { try { // set the Look and Feel to the the native system // try // { // javax.swing.UIManager.setLookAndFeel (javax.swing.UIManager.getSystemLookAndFeelClassName ()); // } // catch (Exception e) // { // } // create a new instance of our application's frame, and make it visible FilterBuilder builder = new FilterBuilder (); if (0 != args.length) builder.mURLField.setText (args[0]); builder.setVisible (true); } catch (Throwable t) { t.printStackTrace (); // ensure the application exits with an error condition System.exit (1); } } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/SubFilterList.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/filterbuilder/SubFilterLis0000644000175000017500000002033310226721236032415 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/SubFilterList.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.3 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications.filterbuilder; import java.awt.*; import javax.swing.*; import javax.swing.border.*; import org.htmlparser.NodeFilter; import org.htmlparser.parserapplications.filterbuilder.layouts.VerticalLayoutManager; /** * A helper class for lists of filters within filters. */ public class SubFilterList extends JPanel { /** * Padding for the drop target. */ protected int mExtra = 25; // for now /** * The drop target spacer at the bottom of the list. */ protected Component mSpacer; /** * The parent filter wrapper. */ protected Filter mHome; /** * The textual title for the list. */ protected String mTitle; /** * The number of filters limit. */ protected int mMax; /** * Creates a container panel. * Set the panel minimum size to the same width as the container * but with a bit of extra length. * @param home The filter we belong to. * @param title The border title. * @param max The maximum number of filters in the list (0 for no limit). */ public SubFilterList (Filter home, String title, int max) { mHome = home; mTitle = title; mMax = max; // not quite: // new BoxLayout (this, BoxLayout.Y_AXIS)); setLayout (new VerticalLayoutManager ()); addSpacer (); setSelected (false); } /** * Set the 'selected look' for the component. * @param selected If true, 'select' this component, * otherwise 'deselect' it. */ public void setSelected (boolean selected) { if (selected) setBorder ( new CompoundBorder ( new TitledBorder ( null, mTitle, TitledBorder.LEFT, TitledBorder.TOP), new CompoundBorder ( new LineBorder (Color.green, 2), new EmptyBorder (1, 1, 1, 1)))); else setBorder ( new CompoundBorder ( new TitledBorder ( null, mTitle, TitledBorder.LEFT, TitledBorder.TOP), new EmptyBorder (3,3,3,3))); } /** * Stuff a spacer component at the end of the list. */ protected void addSpacer () { Dimension dimension; Insets insets; // set the command area size by adding a rigid area dimension = mHome.getSize (); insets = mHome.getInsets (); // todo: this should resize with the container dimension.setSize (dimension.width - insets.left - insets.right, mExtra); mSpacer = Box.createRigidArea (dimension); add (mSpacer); } /** * Remove the spacer component at the end of the list. */ protected void removeSpacer () { remove (mSpacer); mSpacer = null; } /** * Get the components in which to drop commands. * @return The component to act as a drop target. */ public Component[] getDropTargets () { return (new Component[] { this }); } /** * Add a filter to the container contents. * @param filter The command to add to the container. */ public void addFilter (Filter filter) { int count; count = getComponentCount (); if (null != mSpacer) count--; // insert before the spacer addFilter (filter, count); } /** * Add a filter to the container at a specific position. * @param filter The filter to add to the container. * @param index The index at which to add it. */ public void addFilter (Filter filter, int index) { NodeFilter[] before; NodeFilter[] after; int offset; add (filter, index); before = mHome.getSubNodeFilters (); after = new NodeFilter[before.length + 1]; offset = 0; for (int i = 0; i < after.length; i++) after[i] = (i == index) ? filter : before[offset++]; mHome.setSubNodeFilters (after); if ((null != mSpacer) && (0 != mMax) && (after.length >= mMax)) removeSpacer (); } /** * Remove a filter from the container. * @param filter The filter to remove from the container. */ public void removeFilter (Filter filter) { Filter[] filters; int index; filters = getFilters (); index = -1; for (int i = 0; ((-1 == index) && (i < filters.length)); i++) if (filter == filters[i]) index = i; if (-1 != index) removeFilter (index); } /** * Remove a filter from the container. * @param index The index of the filter to remove from the container. */ public void removeFilter (int index) { NodeFilter[] before; NodeFilter[] after; int offset; remove (index); before = mHome.getSubNodeFilters (); if (0 != before.length) { after = new NodeFilter[before.length - 1]; offset = 0; for (int i = 0; i < before.length; i++) if (i != index) after[offset++] = before[i]; mHome.setSubNodeFilters (after); if ((null == mSpacer) && (0 != mMax) && (after.length < mMax)) addSpacer (); } } /** * Return the list of filters in this container. * @return The list of contained filters. */ public Filter[] getFilters () { NodeFilter[] list; Filter[] ret; list = mHome.getSubNodeFilters (); ret = new Filter[list.length]; System.arraycopy (list, 0, ret, 0, list.length); return (ret); } /** * Check if our maximum number of filters limit has been reached. * @return true if the sublist can accept one more filter, * false otherwise. */ public boolean canAccept () { int count; boolean ret; if (0 == mMax) ret = true; else { count = getComponentCount (); if (null != mSpacer) count--; ret = count < mMax; } return (ret); } /** * Get the bytes for this command as a String. * @param indent The number of spaces to indent a block. * @param level The current indentation level. * The first non-whitespace character should be at * indented indent * level spaces. * @return The string representing this command. */ public String toString (int indent, int level) { Filter[] filters; StringBuffer ret; ret = new StringBuffer (); filters = getFilters (); for (int i = 0; i < filters.length; i++) { ret.append (filters[i].toString ()); if (i + 1 != filters.length) ret.append ("\n"); } return (ret.toString ()); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/WikiCapturer.java0000644000175000017500000001737010226721236030552 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/WikiCapturer.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:42 $ // $Revision: 1.3 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.parserapplications; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import org.htmlparser.filters.AndFilter; import org.htmlparser.filters.HasAttributeFilter; import org.htmlparser.filters.NotFilter; import org.htmlparser.filters.OrFilter; import org.htmlparser.filters.TagNameFilter; /** * Save a wikiwikiweb locally. * Illustrative program to save a wiki locally. */ public class WikiCapturer extends SiteCapturer { /** * Create a wikicapturer. */ public WikiCapturer () { } /** * Returns true if the link is one we are interested in. * @param link The link to be checked. * @return true if the link has the source URL as a prefix * and doesn't contain '?' or '#'; the former because we won't be able to * handle server side queries in the static target directory structure and * the latter because presumably the full page with that reference has * already been captured previously. This performs a case insensitive * comparison, which is cheating really, but it's cheap. */ protected boolean isToBeCaptured (String link) { boolean ret; ret = super.isToBeCaptured (link); // eliminate PhpWiki specific pages if (ret) if (link.endsWith ("PhpWikiAdministration")) ret = false; else if (link.endsWith ("PhpWikiDocumentation")) ret = false; else if (link.endsWith ("TextFormattingRules")) ret = false; else if (link.endsWith ("NewMarkupTestPage")) ret = false; else if (link.endsWith ("OldMarkupTestPage")) ret = false; else if (link.endsWith ("OldTextFormattingRules")) ret = false; else if (link.endsWith ("PgsrcTranslation")) ret = false; else if (link.endsWith ("HowToUseWiki")) ret = false; else if (link.endsWith ("MoreAboutMechanics")) ret = false; else if (link.endsWith ("AddingPages")) ret = false; else if (link.endsWith ("WikiWikiWeb")) ret = false; else if (link.endsWith ("UserPreferences")) ret = false; else if (link.endsWith ("PhpWiki")) ret = false; else if (link.endsWith ("WabiSabi")) ret = false; else if (link.endsWith ("EditText")) ret = false; else if (link.endsWith ("FindPage")) ret = false; else if (link.endsWith ("RecentChanges")) ret = false; else if (link.endsWith ("RecentEdits")) ret = false; else if (link.endsWith ("RecentVisitors")) ret = false; else if (link.endsWith ("SteveWainstead")) ret = false; return (ret); } /** * Mainline to capture a web site locally. * @param args The command line arguments. * There are three arguments the web site to capture, the local directory * to save it to, and a flag (true or false) to indicate whether resources * such as images and video are to be captured as well. * These are requested via dialog boxes if not supplied. * @exception MalformedURLException If the supplied URL is invalid. * @exception IOException If an error occurs reading the pages or resources. */ public static void main (String[] args) throws MalformedURLException, IOException { WikiCapturer worker; String url; JFileChooser chooser; URL source; String path; File target; Boolean capture; int ret; worker = new WikiCapturer (); if (0 >= args.length) { url = (String)JOptionPane.showInputDialog ( null, "Enter the URL to capture:", "Web Site", JOptionPane.PLAIN_MESSAGE, null, null, "http://htmlparser.sourceforge.net/wiki"); if (null != url) worker.setSource (url); else System.exit (1); } else worker.setSource (args[0]); if (1 >= args.length) { url = worker.getSource (); source = new URL (url); path = new File (new File ("." + File.separator), source.getHost () + File.separator).getCanonicalPath (); target = new File (path); chooser = new JFileChooser (target); chooser.setDialogType (JFileChooser.SAVE_DIALOG); chooser.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY); chooser.setSelectedFile (target); // this doesn't frickin' work chooser.setMultiSelectionEnabled (false); chooser.setDialogTitle ("Target Directory"); ret = chooser.showSaveDialog (null); if (ret == JFileChooser.APPROVE_OPTION) worker.setTarget (chooser.getSelectedFile ().getAbsolutePath ()); else System.exit (1); } else worker.setTarget (args[1]); if (2 >= args.length) { capture = (Boolean)JOptionPane.showInputDialog ( null, "Should resources be captured:", "Capture Resources", JOptionPane.PLAIN_MESSAGE, null, new Object[] { Boolean.TRUE, Boolean.FALSE}, Boolean.TRUE); if (null != capture) worker.setCaptureResources (capture.booleanValue ()); else System.exit (1); } else worker.setCaptureResources ((Boolean.valueOf (args[2]).booleanValue ())); worker.setFilter ( new NotFilter ( new OrFilter ( new AndFilter ( new TagNameFilter ("DIV"), new HasAttributeFilter ("id", "navbar")), new OrFilter ( new AndFilter ( new TagNameFilter ("DIV"), new HasAttributeFilter ("id", "actionbar")), new AndFilter ( new TagNameFilter ("DIV"), new HasAttributeFilter ("id", "xhtml-validator")))))); worker.capture (); System.exit (0); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/parserapplications/package.html0000644000175000017500000000604710226721236027556 0ustar tiagotiago Example applications.

    Link Extractor
    Extract links/mail addresses from a web page.
    org.htmlparser.parserapplications.LinkExtractor
        bin/linkextractor http://website_url [-maillinks]
        the optional -maillinks argument causes mailto: links to be printed
        
    String Extractor
    Extract text from a web page.
    org.htmlparser.parserapplications.StringExtractor
        bin/stringextractor http://website_url [-links]
    
        the optional -links argument causes hyperlinks to be shown within the text
        
    Site Capturer
    Save a web site locally.
    org.htmlparser.parserapplications.SiteCapturer
        bin/sitecapturer http://source_website /target_directory/ [true|false]
    
        the optional boolean argument determines whether resources such as images,
        audio and video are to be captured
        
    Wiki Capturer
    Save a wiki locally.
    org.htmlparser.parserapplications.WikiCapturer Subclass of SiteCapturer (see above) that eliminates specific Wiki pages.
    libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/0000755000175000017500000000000010442553340025110 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/tabby/0000755000175000017500000000000010442553340026211 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/tabby/Tabby.java0000644000175000017500000002474010215033540030115 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexerapplications/tabby/Tabby.java,v $ // $Author: derrickoswald $ // $Date: 2005/03/13 14:51:44 $ // $Revision: 1.3 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.lexerapplications.tabby; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import org.htmlparser.lexer.Cursor; import org.htmlparser.lexer.Page; /** * Replace tabs with spaces. * Convert tabs to the correct number of spaces according to a tabstop, * change DOS \r\n line endings to Unix \n form, and remove trailing whitespace */ public class Tabby { /** * The default tab stop spacing. */ private static final int DEFAULT_TABSTOP = 4; /** * The file filter to apply. */ protected Filter mFilter; /** * The replacement tab stop size. */ protected int mTabsize; /** * Creates a new instance of Tabby with no file filter and a tab stop of 4. */ public Tabby () { mFilter = null; mTabsize = DEFAULT_TABSTOP; } /** * Creates a new instance of Tabby using the given regular expression and * a tab stop of 4. * @param filter The regular expression to apply to the files searched. */ public Tabby (final String filter) { this (); mFilter = new Filter (filter); } /** Creates a new instance of Tabby. * @param filter The regular expression to apply to the files searched. * @param tabsize The tab stop setting. * @exception IllegalArgumentException If tabsize is not a positive number. */ public Tabby (final String filter, final int tabsize) throws IllegalArgumentException { this (filter); if (0 >= tabsize) throw new IllegalArgumentException ("tab size cannot be negative"); mTabsize = tabsize; } /** * Process the file or directory. * @param file The file to process. */ protected void process (final File file) { File[] files; if (file.isDirectory ()) { files = file.listFiles (mFilter); for (int i = 0; i < files.length; i++) process (files[i]); } else edit (file); } /** * Process the file or directory. * @param file The file to edit. */ protected void edit (final File file) { FileInputStream in; Page page; Cursor cursor; int position; int expected; boolean modified; char ch; int last; StringBuffer buffer; FileOutputStream out; try { in = new FileInputStream (file); buffer = new StringBuffer (in.available ()); try { page = new Page (in, null); cursor = new Cursor (page, 0); position = 0; modified = false; expected = 0; last = -1; while (Page.EOF != (ch = page.getCharacter (cursor))) { if (++expected != cursor.getPosition ()) { modified = true; expected = cursor.getPosition (); } if ('\t' == ch) { do { buffer.append (' '); position++; } while (0 != (position % mTabsize)); modified = true; } else if ('\n' == ch) { // check for whitespace on the end of the line if (last + 1 != position) { // remove trailing whitespace last = buffer.length () - (position - last - 1); buffer.setLength (last); modified = true; } buffer.append (ch); position = 0; last = -1; } else { buffer.append (ch); if (!Character.isWhitespace (ch)) last = position; position++; } } } finally { in.close (); } if (modified) { System.out.println (file.getAbsolutePath ()); out = new FileOutputStream (file); out.write (buffer.toString ().getBytes (Page.DEFAULT_CHARSET)); out.close (); } } catch (Exception e) { System.out.println (e); } } /** * Implement a file filter. */ class Filter implements FileFilter { /** * The compiled expression. */ protected Pattern mExpression; /** * Create a file filter from the regular expression. * @param expression The regular expression. * A useful regular expression is ".*\.java" which accepts all * .java files. * @exception IllegalArgumentException If the expression is * null. * @exception PatternSyntaxException If the expression is not a valid * regular expression. */ public Filter (final String expression) throws PatternSyntaxException { if (null == expression) throw new IllegalArgumentException ( "filter expression cannot be null"); mExpression = Pattern.compile (expression); } // // FileFilter interface // /** * Tests whether or not the file should be included in a pathname list. * @param pathname The abstract pathname to be tested. * @return true if and only if pathname * should be included. */ public boolean accept (final File pathname) { Matcher matcher; boolean ret; // match directories if (pathname.isDirectory ()) ret = true; else { matcher = mExpression.matcher (pathname.getAbsolutePath ()); ret = matcher.matches (); } return (ret); } } /** * Run Tabby on a file or directory. * @param args The command line arguments. *

         * args[0] The file or directory to work on.
         * args[1] Optional, the regular expression to use as a file filter
         * args[2] Optional, the tab stop setting (integer).
         * 
    */ public static void main (final String[] args) { Tabby tabby; File file; if (0 == args.length) System.out.println ( "usage: Tabby (|)" + " [file-match regexp] [tabsize]"); else { if (2 < args.length) tabby = new Tabby (args[1], Integer.parseInt (args[2])); else if (1 < args.length) tabby = new Tabby (args[1]); else tabby = new Tabby (); file = new File (args[0]); tabby.process (file); } } } /* * Revision Control Modification History * * $Log: Tabby.java,v $ * Revision 1.3 2005/03/13 14:51:44 derrickoswald * Bug #1121401 No Parsing with yahoo! * By default nio.charset.CharsetDecoder replaces characters it cannot * represent in the current encoding with zero, which was the value * returned by the page when the Stream reached EOF. * This changes the Page return value to (char)Source.EOF (-1) when * the end of stream is encountered. * * Revision 1.2 2004/07/31 16:42:34 derrickoswald * Remove unused variables and other fixes exposed by turning on compiler warnings. * * Revision 1.1 2003/09/10 03:38:26 derrickoswald * Add style checking target to ant build script: * ant checkstyle * It uses a jar from http://checkstyle.sourceforge.net which is dropped in the lib directory. * The rules are in the file htmlparser_checks.xml in the src directory. * * Added lexerapplications package with Tabby as the first app. It performs whitespace manipulation * on source files to follow the style rules. This reduced the number of style violations to roughly 14,000. * * There are a few issues with the style checker that need to be resolved before it should be taken too seriously. * For example: * It thinks all method arguments should be final, even if they are modified by the code (which the compiler frowns on). * It complains about long lines, even when there is no possibility of wrapping the line, i.e. a URL in a comment * that's more than 80 characters long. * It considers all naked integers as 'magic numbers', even when they are obvious, i.e. the 4 corners of a box. * It complains about whitespace following braces, even in array initializers, i.e. X[][] = { {a, b} { } } * * But it points out some really interesting things, even if you don't agree with the style guidelines, * so it's worth a look. * * */ libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/tabby/package.html0000644000175000017500000000424007775270446030514 0ustar tiagotiago Tabby The Tabby program is a demonstration of how to use the underlying Lexer classes to perform file I/O. The results could also be achieved with a normal Reader object but then there wouldn't be anything interesting about this.

    The task is to replace tabs with spaces and preserve any indentaion that was a combination of tabs and spaces. This means honouring the 'tab stops' that would be used by an editor and not just a global search and replace.

    The mechanism used is to keep track of the character offset from the beginning of a line and when a tab is encountered add spaces till the next tab stop.

    At the same time any "\r\n" combinations that are in the file are converted to simple "\n" characters as found on Unix/Linux systems, and trailing whitespace at the ends of lines is removed.

    The trick is to only write the file if something in the file required changes, so a boolean variable is kept current with a true value indicating the file needs to be modified. libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/thumbelina/0000755000175000017500000000000010442554104027237 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/thumbelina/Thumbelina.java0000644000175000017500000013205210203710000032155 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexerapplications/thumbelina/Thumbelina.java,v $ // $Author: derrickoswald $ // $Date: 2005/02/13 20:36:00 $ // $Revision: 1.7 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.lexerapplications.thumbelina; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Image; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.ImageObserver; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import javax.swing.BoxLayout; import javax.swing.DefaultListModel; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JScrollPane; import javax.swing.JSlider; import javax.swing.JSplitPane; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.ScrollPaneConstants; import javax.swing.border.BevelBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import org.htmlparser.Node; import org.htmlparser.Tag; import org.htmlparser.lexer.Lexer; import org.htmlparser.util.ParserException; /** * View images behind thumbnails. */ public class Thumbelina extends JPanel // was: java.awt.Canvas implements Runnable, ItemListener, ChangeListener, ListSelectionListener { /** * Property name for current URL binding. */ public static final String PROP_CURRENT_URL_PROPERTY = "currentURL"; /** * Property name for queue size binding. */ public static final String PROP_URL_QUEUE_PROPERTY = "queueSize"; /** * Property name for visited URL size binding. */ public static final String PROP_URL_VISITED_PROPERTY = "visitedSize"; /** * URL's to visit. */ private ArrayList mUrls; /** * URL's visited. */ protected HashMap mVisited; /** * Images requested. */ protected HashMap mRequested; /** * Images being tracked currently. */ protected HashMap mTracked; /** * Background thread. */ protected Thread mThread; /** * Activity state. * true means processing URLS, false not. */ protected boolean mActive; /** * The picture sequencer. */ protected Sequencer mSequencer; /** * The central area for pictures. */ protected PicturePanel mPicturePanel; /** * Value returned when no links are discovered. */ protected static final URL[][] NONE = { { }, { } }; /** * Bound property support. */ protected PropertyChangeSupport mPropertySupport; /** * The URL being currently being examined. */ protected String mCurrentURL; /** * If true, does not follow links containing cgi calls. */ protected boolean mDiscardCGI; /** * If true, does not follow links containing queries (?). */ protected boolean mDiscardQueries; /** * Background thread checkbox in status bar. */ protected JCheckBox mBackgroundToggle; /** * History list. */ protected JList mHistory; /** * Scroller for the picture panel. */ protected JScrollPane mPicturePanelScroller; /** * Scroller for the history list. */ protected JScrollPane mHistoryScroller; /** * Main panel in central area. */ protected JSplitPane mMainArea; /** * Status bar. */ protected JPanel mPowerBar; /** * Image request queue monitor in status bar. */ protected JProgressBar mQueueProgress; /** * Image ready queue monitor in status bar. */ protected JProgressBar mReadyProgress; /** * Sequencer thread toggle in status bar. */ protected JCheckBox mRunToggle; /** * Sequencer speed slider in status bar. */ protected JSlider mSpeedSlider; /** * URL report in status bar. */ protected JTextField mUrlText; /** * URL queue size display in status bar. */ protected JLabel mQueueSize; /** * URL visited count display in status bar. */ protected JLabel mVisitedSize; /** * Creates a new instance of Thumbelina. */ public Thumbelina () { this ((URL)null); } /** * Creates a new instance of Thumbelina. * @param url Single URL to enter into the 'to follow' list. * @exception MalformedURLException If the url is malformed. */ public Thumbelina (final String url) throws MalformedURLException { this (null == url ? null : new URL (url)); } /** * Creates a new instance of Thumbelina. * @param url URL to enter into the 'to follow' list. */ public Thumbelina (final URL url) { mUrls = new ArrayList (); mVisited = new HashMap (); mRequested = new HashMap (); mTracked = new HashMap (); mThread = null; mActive = true; mPicturePanel = new PicturePanel (this); mSequencer = new Sequencer (this); mPropertySupport = new PropertyChangeSupport (this); mCurrentURL = null; mDiscardCGI = true; mDiscardQueries = true; // JComponent specific setDoubleBuffered (false); setLayout (new java.awt.BorderLayout ()); mPicturePanel.setDoubleBuffered (false); mThread = new Thread (this); mThread.setName ("BackgroundThread"); mThread.start (); initComponents (); mRunToggle.addItemListener (this); mBackgroundToggle.addItemListener (this); mSpeedSlider.addChangeListener (this); mHistory.addListSelectionListener (this); memCheck (); if (null != url) append (url); } /** * Check for low memory situation. * Report to the user a bad situation. */ protected void memCheck () { Runtime runtime; long maximum; if (System.getProperty ("java.version").startsWith ("1.4")) { runtime = Runtime.getRuntime (); runtime.gc (); maximum = runtime.maxMemory (); if (maximum < 67108864L) // 64MB JOptionPane.showMessageDialog ( null, "Maximum available memory is low (" + maximum + " bytes).\n" + "\n" + "It is strongly suggested to increase the maximum memory\n" + "available by using the JVM command line switch -Xmx with\n" + "a suitable value, such as -Xmx256M for example.", "Thumbelina - Low memory", JOptionPane.WARNING_MESSAGE, null /*Icon*/); } } /** * Reset this Thumbelina. * Clears the sequencer of pending images, resets the picture panel, * emptiies the 'to be examined' list of URLs. */ public void reset () { int oldsize; synchronized (mUrls) { mSequencer.reset (); mPicturePanel.reset (); oldsize = mUrls.size (); mUrls.clear (); } updateQueueSize (oldsize, mUrls.size ()); } /** * Append the given URL to the queue. * Adds the url only if it isn't already in the queue, * and notifys listeners about the addition. * @param url The url to add. */ public void append (final URL url) { String href; boolean found; URL u; int oldsize; href = url.toExternalForm (); found = false; oldsize = -1; synchronized (mUrls) { for (int i = 0; !found && (i < mUrls.size ()); i++) { u = (URL)mUrls.get (i); if (href.equals (u.toExternalForm ())) found = true; } if (!found) { oldsize = mUrls.size (); mUrls.add (url); mUrls.notify (); } } if (-1 != oldsize) updateQueueSize (oldsize, mUrls.size ()); } /** * Append the given URLs to the queue. * @param list The list of URL objects to add. */ public void append (final ArrayList list) { for (int i = 0; i < list.size (); i++) append ((URL)list.get (i)); } /** * Filter URLs and add to queue. * Removes already visited links and appends the rest (if any) to the * visit pending list. * @param urls The list of URL's to add to the 'to visit' list. * @return Returns the filered list. */ protected ArrayList filter (final URL[] urls) { ArrayList list; URL url; String ref; list = new ArrayList (); for (int i = 0; i < urls.length; i++) { url = urls[i]; ref = url.toExternalForm (); // ignore cgi if (!mDiscardCGI || (-1 == ref.indexOf ("/cgi-bin/"))) // ignore queries if (!mDiscardQueries || (-1 == ref.indexOf ("?"))) // ignore duplicates if (!mVisited.containsKey (ref)) { try { url.openConnection (); list.add (url); } catch (IOException ioe) { // unknown host or some other problem... discard } } } return (list); } /** * Initialize the GUI. */ private void initComponents () { mPowerBar = new JPanel (); mUrlText = new JTextField (); mRunToggle = new JCheckBox (); mSpeedSlider = new JSlider (); mReadyProgress = new JProgressBar (); mQueueProgress = new JProgressBar (); mBackgroundToggle = new JCheckBox (); mMainArea = new JSplitPane (); mPicturePanelScroller = new JScrollPane (); mHistoryScroller = new JScrollPane (); mHistory = new JList (); mQueueSize = new JLabel (); mVisitedSize = new JLabel (); mPowerBar.setLayout (new BoxLayout (mPowerBar, BoxLayout.X_AXIS)); mPowerBar.setBorder (new BevelBorder (BevelBorder.LOWERED)); mPowerBar.add (mUrlText); mRunToggle.setSelected (true); mRunToggle.setText ("On/Off"); mRunToggle.setToolTipText ("Starts/stops the image presentation."); mPowerBar.add (mRunToggle); mSpeedSlider.setMajorTickSpacing (1000); mSpeedSlider.setMaximum (5000); mSpeedSlider.setPaintTicks (true); mSpeedSlider.setToolTipText ("Set inter-image delay."); mSpeedSlider.setValue (500); mSpeedSlider.setInverted (true); mPowerBar.add (mSpeedSlider); mReadyProgress.setToolTipText ("Pending images.."); mReadyProgress.setStringPainted (true); mPowerBar.add (mReadyProgress); mQueueProgress.setToolTipText ("Outstanding image fetches.."); mQueueProgress.setStringPainted (true); mPowerBar.add (mQueueProgress); mBackgroundToggle.setSelected (true); mBackgroundToggle.setText ("On/Off"); mBackgroundToggle.setToolTipText ("Starts/stops background fetching."); mPowerBar.add (mBackgroundToggle); mVisitedSize.setBorder (new BevelBorder (BevelBorder.LOWERED)); mVisitedSize.setText ("00000"); mVisitedSize.setToolTipText ("Number of URLs examined."); mPowerBar.add (mVisitedSize); mQueueSize.setBorder (new BevelBorder (BevelBorder.LOWERED)); mQueueSize.setText ("00000"); mQueueSize.setToolTipText ("Number of URLs in queue."); mPowerBar.add (mQueueSize); mHistory.setModel (new DefaultListModel ()); mHistory.setToolTipText ("History"); mHistory.setDoubleBuffered (false); mHistory.setSelectionMode ( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); mHistoryScroller.setViewportView (mHistory); mHistoryScroller.setDoubleBuffered (false); mPicturePanelScroller.setViewportView (mPicturePanel); mPicturePanelScroller.setDoubleBuffered (false); mPicturePanelScroller.setHorizontalScrollBarPolicy ( ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); mPicturePanelScroller.setVerticalScrollBarPolicy ( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); add (mMainArea, java.awt.BorderLayout.CENTER); mMainArea.setLeftComponent (mHistoryScroller); mMainArea.setRightComponent (mPicturePanelScroller); add (mPowerBar, java.awt.BorderLayout.SOUTH); } /** * Gets the state of status bar visibility. * @return true if the status bar is visible. */ public boolean getStatusBarVisible () { boolean ret; ret = false; for (int i = 0; !ret && (i < getComponentCount ()); i++) if (mPowerBar == getComponent (i)) ret = true; return (ret); } /** * Sets the status bar visibility. * @param visible The new visibility state. * If true, the status bar will be unhidden. */ public void setStatusBarVisible (final boolean visible) { int index; index = -1; for (int i = 0; (-1 == index) && (i < getComponentCount ()); i++) if (mPowerBar == getComponent (i)) index = i; if (visible) { if (-1 == index) { add (mPowerBar, java.awt.BorderLayout.SOUTH); invalidate (); validate (); } } else if (-1 != index) { remove (index); invalidate (); validate (); } } /** * Gets the state of history list visibility. * @return true if the history list is visible. */ public boolean getHistoryListVisible () { boolean ret; ret = false; for (int i = 0; !ret && (i < getComponentCount ()); i++) // check indirectly because the history list is in a splitter if (mMainArea == getComponent (i)) ret = true; return (ret); } /** * Sets the history list visibility. * @param visible The new visibility state. * If true, the history list will be unhidden. */ public void setHistoryListVisible (final boolean visible) { int pictpanel; int splitter; Component component; pictpanel = -1; splitter = -1; for (int i = 0; i < getComponentCount (); i++) { component = getComponent (i); if (mPicturePanelScroller == component) pictpanel = i; else if (mMainArea == component) splitter = i; } if (visible) { if (-1 != pictpanel) { remove (pictpanel); add (mMainArea, java.awt.BorderLayout.CENTER); mMainArea.setLeftComponent (mHistoryScroller); //mPicturePanelScroller.setViewportView (mPicturePanel); mMainArea.setRightComponent (mPicturePanelScroller); invalidate (); validate (); } } else if (-1 != splitter) { remove (splitter); add (mPicturePanelScroller, java.awt.BorderLayout.CENTER); invalidate (); validate (); } } /** * Gets the state of the sequencer thread. * @return true if the thread is pumping images. */ public boolean getSequencerActive () { return (mSequencer.mActive); } /** * Sets the sequencer activity state. * The sequencer is the thread that moves images from the pending list * to the picture panel on a timed basis. * @param active The new activity state. * If true, the sequencer will be turned on. * This may alter the speed setting if it is set to zero. */ public void setSequencerActive (final boolean active) { // check the delay is not zero if (0 == getSpeed ()) setSpeed (Sequencer.DEFAULT_DELAY); mSequencer.mActive = active; if (active) synchronized (mSequencer.mPending) { mSequencer.mPending.notify (); } if (active != mRunToggle.isSelected ()) mRunToggle.setSelected (active); } /** * Gets the state of the background thread. * @return true if the thread is examining web pages. */ public boolean getBackgroundThreadActive () { return (mActive); } /** * Sets the state of the background thread activity. * The background thread is responsible for examining URLs that are on * the queue for thumbnails, and starting the image fetch operation. * @param active If true, * the background thread will be turned on. */ public void setBackgroundThreadActive (final boolean active) { mActive = active; if (active) synchronized (mUrls) { mUrls.notify (); } if (active != mBackgroundToggle.isSelected ()) mBackgroundToggle.setSelected (active); } /** * Get the sequencer delay time. * @return The number of milliseconds between image additions to the panel. */ public int getSpeed () { return (mSequencer.getDelay ()); } /** * Set the sequencer delay time. * The sequencer is the thread that moves images from the pending list * to the picture panel on a timed basis. This value sets the number of * milliseconds it waits between pictures. * Setting it to zero toggles the running state off. * @param speed The sequencer delay in milliseconds. */ public void setSpeed (final int speed) { if (0 == speed) mRunToggle.setSelected (false); else { mRunToggle.setSelected (true); mSequencer.setDelay (speed); } if (speed != mSpeedSlider.getValue ()) mSpeedSlider.setValue (speed); } /** * Getter for property discardCGI. * @return Value of property discardCGI. * */ public boolean isDiscardCGI () { return (mDiscardCGI); } /** * Setter for property discardCGI. * @param discard New value of property discardCGI. * */ public void setDiscardCGI (final boolean discard) { mDiscardCGI = discard; } /** * Getter for property discardQueries. * @return Value of property discardQueries. * */ public boolean isDiscardQueries () { return (mDiscardQueries); } /** * Setter for property discardQueries. * @param discard New value of property discardQueries. * */ public void setDiscardQueries (final boolean discard) { mDiscardQueries = discard; } /** * Check if the url looks like an image. * @param url The usrl to check for image characteristics. * @return true if the url ends in a recognized image * extension. */ protected boolean isImage (final String url) { String lower = url.toLowerCase (); return (lower.endsWith (".jpg") || lower.endsWith (".gif") || lower.endsWith (".png")); } /** * Get the links of an element of a document. * Only gets the links on IMG elements that reference another image. * The latter is based on suffix (.jpg, .gif and .png). * @param lexer The fully conditioned lexer, ready to rock. * @param docbase The url to read. * @return The URLs, targets of the IMG links; * @exception IOException If the underlying infrastructure throws it. * @exception ParserException If there is a problem parsing the url. */ protected URL[][] extractImageLinks (final Lexer lexer, final URL docbase) throws IOException, ParserException { HashMap images; HashMap links; boolean ina; // true when within a pair Node node; Tag tag; String name; Tag startatag; Tag imgtag; String href; String src; URL url; URL[][] ret; images = new HashMap (); links = new HashMap (); ina = false; startatag = null; imgtag = null; while (null != (node = lexer.nextNode ())) { if (node instanceof Tag) { tag = (Tag)node; name = tag.getTagName (); if ("A".equals (name)) { if (tag.isEndTag ()) { ina = false; if (null != imgtag) { // evidence of a thumb href = startatag.getAttribute ("HREF"); if (null != href) { if (isImage (href)) { src = imgtag.getAttribute ("SRC"); if (null != src) try { url = new URL (docbase, href); // eliminate duplicates href = url.toExternalForm (); if (!images.containsKey (href)) images.put (href, url); } catch (MalformedURLException murle) { // oops, forget it } } } } } else { startatag = tag; imgtag = null; ina = true; href = startatag.getAttribute ("HREF"); if (null != href) { if (!isImage (href)) try { url = new URL (docbase, href); // eliminate duplicates href = url.toExternalForm (); if (!links.containsKey (href)) links.put (href, url); } catch (MalformedURLException murle) { // well, obviously we don't want this one } } } } else if (ina && "IMG".equals (name)) imgtag = tag; } } ret = new URL[2][]; ret[0] = new URL[images.size ()]; images.values ().toArray (ret[0]); ret[1] = new URL[links.size ()]; links.values ().toArray (ret[1]); return (ret); } /** * Get the image links from the current URL. * @param url The URL to get the links from * @return An array of two URL arrays, index 0 is a list of images, * index 1 is a list of links to possibly follow. */ protected URL[][] getImageLinks (final URL url) { Lexer lexer; URL[][] ret; if (null != url) { try { lexer = new Lexer (url.openConnection ()); ret = extractImageLinks (lexer, url); } catch (Throwable t) { System.out.println (t.getMessage ()); ret = NONE; } } else ret = NONE; return (ret); } /** * Get the picture panel object encapsulated by this Thumbelina. * @return The picture panel. */ public PicturePanel getPicturePanel () { return (mPicturePanel); } /** * Add a PropertyChangeListener to the listener list. * The listener is registered for all properties. * @param listener The PropertyChangeListener to be added. */ public void addPropertyChangeListener ( final PropertyChangeListener listener) { mPropertySupport.addPropertyChangeListener (listener); } /** * Remove a PropertyChangeListener from the listener list. * This removes a PropertyChangeListener that was registered for all * properties. * @param listener The PropertyChangeListener to be removed. */ public void removePropertyChangeListener ( final PropertyChangeListener listener) { mPropertySupport.removePropertyChangeListener (listener); } /** * Return the URL currently being examined. * This is a bound property. Notifications are available via the * PROP_CURRENT_URL_PROPERTY property. * @return The size of the 'to be examined' list. */ public String getCurrentURL () { return (mCurrentURL); } /** * Set the current URL being examined. * @param url The url that is being examined. */ protected void setCurrentURL (final String url) { String oldValue; if (((null != url) && !url.equals (mCurrentURL)) || ((null == url) && (null != mCurrentURL))) { oldValue = mCurrentURL; mCurrentURL = url; mPropertySupport.firePropertyChange ( PROP_CURRENT_URL_PROPERTY, oldValue, url); } } /** * Apply a change in 'to be examined' URL list size. * Sends notification via the PROP_URL_QUEUE_PROPERTY property * and updates the status bar. * @param original The original size of the list. * @param current The new size of the list. */ protected void updateQueueSize (final int original, final int current) { StringBuffer buffer; buffer = new StringBuffer (); buffer.append (current); while (buffer.length () < 5) buffer.insert (0, '0'); mQueueSize.setText (buffer.toString ()); mPropertySupport.firePropertyChange ( PROP_URL_QUEUE_PROPERTY, original, current); } /** * Apply a change in 'visited' URL list size. * Sends notification via the PROP_URL_VISITED_PROPERTY * property and updates the status bar. * @param original The original size of the list. * @param current The new size of the list. */ protected void updateVisitedSize (final int original, final int current) { StringBuffer buffer; buffer = new StringBuffer (); buffer.append (current); while (buffer.length () < 5) buffer.insert (0, '0'); mVisitedSize.setText (buffer.toString ()); mPropertySupport.firePropertyChange ( PROP_URL_VISITED_PROPERTY, original, current); } /** * Fetch images. * Ask the toolkit to make the image from a URL, and add a tracker * to handle it when it's received. * Add details to the rquested and tracked lists and update * the status bar. * @param images The list of images to fetch. */ protected void fetch (final URL[] images) { Image image; Tracker tracker; int size; for (int j = 0; j < images.length; j++) { if (!mRequested.containsKey ( images[j].toExternalForm ())) { image = getToolkit ().createImage (images[j]); tracker = new Tracker (images[j]); synchronized (mTracked) { size = mTracked.size () + 1; if (mQueueProgress.getMaximum () < size) { try { mTracked.wait (); } catch (InterruptedException ie) { // this won't happen, just continue on } } mRequested.put (images[j].toExternalForm (), images[j]); mTracked.put (images[j].toExternalForm (), images[j]); mQueueProgress.setValue (size); image.getWidth (tracker); // trigger the observer } } } } // // Runnable interface // /** * The main processing loop. * Pull suspect URLs off the queue one at a time, fetch and parse it, * request images and enqueue further links. */ public void run () { URL link; int original; String href; URL[][] urls; while (true) { try { link = null; original = -1; synchronized (mUrls) { if (0 != mUrls.size ()) { original = mUrls.size (); link = (URL)mUrls.remove (0); } else // don't spin crazily on an empty list Thread.sleep (100); } if (null != link) { updateQueueSize (original, mUrls.size ()); href = link.toExternalForm (); setCurrentURL (href); mVisited.put (href, link); updateVisitedSize ( mVisited.size () - 1, mVisited.size ()); urls = getImageLinks (link); fetch (urls[0]); //append (filter (urls[1])); synchronized (mEnqueuers) { Enqueuer enqueuer = new Enqueuer (urls[1]); enqueuer.setPriority (Thread.MIN_PRIORITY); mEnqueuers.add (enqueuer); enqueuer.start (); } setCurrentURL (null); } if (!mActive) synchronized (mUrls) { mUrls.wait (); } } catch (Throwable t) { t.printStackTrace (); } } } static ArrayList mEnqueuers = new ArrayList (); class Enqueuer extends Thread { URL[] mList; public Enqueuer (URL[] list) { mList = list; } public void run () { append (filter (mList)); synchronized (mEnqueuers) { mEnqueuers.remove (this); } } } // // ItemListener interface // /** * Handle checkbox events from the status bar. * Based on the thread toggles, activates or deactivates the * background thread processes. * @param event The event describing the checkbox event. */ public void itemStateChanged (final ItemEvent event) { Object source; boolean checked; source = event.getItemSelectable (); checked = ItemEvent.SELECTED == event.getStateChange (); if (source == mRunToggle) setSequencerActive (checked); else if (source == mBackgroundToggle) setBackgroundThreadActive (checked); } // // ChangeListener interface // /** * Handles the speed slider events. * @param event The event describing the slider activity. */ public void stateChanged (final ChangeEvent event) { JSlider source; source = (JSlider)event.getSource (); if (!source.getValueIsAdjusting ()) setSpeed (source.getValue ()); } // // ListSelectionListener interface // /** * Handles the history list events. * @param event The event describing the list activity. */ public void valueChanged (final ListSelectionEvent event) { JList source; Object[] hrefs; Picture picture; URL url; Image image; Tracker tracker; source = (JList)event.getSource (); if (source == mHistory && !event.getValueIsAdjusting ()) { hrefs = source.getSelectedValues (); for (int i = 0; i < hrefs.length; i++) { picture = mPicturePanel.find ("http://" + (String)hrefs[i]); if (null != picture) mPicturePanel.bringToTop (picture); else try { url = new URL ("http://" + (String)hrefs[i]); image = getToolkit ().createImage (url); tracker = new Tracker (url); image.getWidth (tracker); System.out.println ("refetching " + hrefs[i]); } catch (MalformedURLException murle) { murle.printStackTrace (); } } } } /** * Adds the given url to the history list. * Also puts the URL in the url text of the status bar. * @param url The URL to add to the history list. */ public void addHistory (String url) { int index; DefaultListModel model; mUrlText.setText (url); // chop off the protocol index = url.indexOf ("http://"); if (-1 != index) url = url.substring (index + 7); else System.out.println ("********* " + url + " ************"); model = (DefaultListModel)mHistory.getModel (); model.addElement (url); // this doesn't friggin work: // mHistory.ensureIndexIsVisible (model.getSize ()); } /** * Open a URL. * Resets the urls list and appends the given url as the only item. * @param ref The URL to add. */ public void open (String ref) { URL url; try { if (!ref.startsWith ("http://")) ref = "http://" + ref; url = new URL (ref); reset (); append (url); } catch (Exception e) { System.out.println (e.getMessage ()); } } /** * Provide command line help. */ protected static void help () { System.out.println ("Thumbelina - Scan and display the images behind thumbnails."); System.out.println ("java -Xmx256M -jar thumbelina.jar [url]"); System.out.println ("It is highly recommended that the maximum heap " + "size be increased with -Xmx switch."); System.exit (0); } /** * Mainline. * @param args the command line arguments. * Can be one or more forms of -help to get command line help, * or a URL to prime the program with. * Checks for JDK 1.4 and if not found runs in crippled mode * (no ThumbelinaFrame). */ public static void main (final String[] args) { URL url; String version; JFrame frame; Thumbelina thumbelina; System.setProperty ("sun.net.client.defaultReadTimeout", "7000"); System.setProperty ("sun.net.client.defaultConnectTimeout", "7000"); url = null; if (0 != args.length) try { if (args[0].equalsIgnoreCase ("help") || args[0].equalsIgnoreCase ("-help") || args[0].equalsIgnoreCase ("-h") || args[0].equalsIgnoreCase ("?") || args[0].equalsIgnoreCase ("-?")) help (); else url = new URL (args[0]); } catch (MalformedURLException murle) { System.err.println (murle.getMessage ()); help (); } version = System.getProperty ("java.version"); if (version.startsWith ("1.4") || version.startsWith ("1.5")) frame = new ThumbelinaFrame (url); else { if (null == url) help (); System.out.println ( "Java version is only " + version + ", entering crippled mode"); frame = new JFrame ("Thumbelina"); thumbelina = new Thumbelina (url); frame.getContentPane ().add (thumbelina, BorderLayout.CENTER); frame.setBounds (10, 10, 640, 480); frame.addWindowListener (new WindowAdapter () { public void windowClosing (final WindowEvent event) { System.exit (0); } }); } frame.setVisible (true); } /** * Getter for property queue. * @return List of URLs that are to be visited. */ public ArrayList getQueue () { return (mUrls); } /** * Getter for property queue. * This is a bound property. Notifications are available via the * PROP_URL_QUEUE_PROPERTY property. * @return The size of the list of URLs that are to be visited. */ public int getQueueSize () { return (mUrls.size ()); } /** * Track incoming asynchronous image reception. * On completion, adds the image to the pending list. */ class Tracker implements ImageObserver { /** * The url the image is comming from. */ protected URL mSource; /** * Create an image tracker. * @param source The URL the image is being fetched from. */ public Tracker (final URL source) { mSource = source; } // // ImageObserver interface // /** * This method is called when information about an image which was * previously requested using an asynchronous interface becomes * available. Asynchronous interfaces are method calls such as * getWidth(ImageObserver) and drawImage(img, x, y, ImageObserver) * which take an ImageObserver object as an argument. Those methods * register the caller as interested either in information about * the overall image itself (in the case of getWidth(ImageObserver)) * or about an output version of an image (in the case of the * drawImage(img, x, y, [w, h,] ImageObserver) call). * *

    This method * should return true if further updates are needed or false if the * required information has been acquired. The image which was being * tracked is passed in using the img argument. Various constants * are combined to form the infoflags argument which indicates what * information about the image is now available. The interpretation * of the x, y, width, and height arguments depends on the contents * of the infoflags argument. *

    * The infoflags argument should be the bitwise inclusive * OR of the following flags: WIDTH, * HEIGHT, PROPERTIES, SOMEBITS, * FRAMEBITS, ALLBITS, ERROR, * ABORT. * * @param image the image being observed. * @param infoflags the bitwise inclusive OR of the following * flags: WIDTH, HEIGHT, * PROPERTIES, SOMEBITS, * FRAMEBITS, ALLBITS, * ERROR, ABORT. * @param x the x coordinate. * @param y the y coordinate. * @param width the width. * @param height the height. * @return false if the infoflags indicate that the * image is completely loaded; true otherwise. * * @see #WIDTH * @see #HEIGHT * @see #PROPERTIES * @see #SOMEBITS * @see #FRAMEBITS * @see #ALLBITS * @see #ERROR * @see #ABORT * @see Image#getWidth * @see Image#getHeight * @see java.awt.Graphics#drawImage */ public synchronized boolean imageUpdate ( final Image image, final int infoflags, final int x, final int y, final int width, final int height) { boolean done; boolean error; boolean abort; URL url; done = (0 != (infoflags & ImageObserver.ALLBITS)); abort = (0 != (infoflags & ImageObserver.ABORT)); error = (0 != (infoflags & ImageObserver.ERROR)); if (done || abort || error) synchronized (mTracked) { url = (URL)mTracked.remove (mSource.toExternalForm ()); mTracked.notify (); mQueueProgress.setValue (mTracked.size ()); if (done) mSequencer.add (image, mSource, (null != url)); } return (!done); } } } /* * Revision Control Modification History * * $Log: Thumbelina.java,v $ * Revision 1.7 2005/02/13 20:36:00 derrickoswald * FilterBuilder * * Revision 1.6 2004/07/31 16:42:30 derrickoswald * Remove unused variables and other fixes exposed by turning on compiler warnings. * * Revision 1.5 2004/05/24 16:18:17 derrickoswald * Part three of a multiphase refactoring. * The three node types are now fronted by interfaces (program to the interface paradigm) * with concrete implementations in the new htmlparser.nodes package. Classes from the * lexer.nodes package are moved to this package, and obvious references to the concrete * classes that got broken by this have been changed to use the interfaces where possible. * * Revision 1.4 2004/05/16 17:59:56 derrickoswald * Alter bound property name constants to agree with section * 8.8 Capitalization of inferred names. * in the JavaBeans API specification. * * Revision 1.3 2003/11/04 01:25:02 derrickoswald * Made visiting order the same order as on the page. * The 'shouldRecurseSelf' boolean of NodeVisitor could probably * be removed since it doesn't make much sense any more. * Fixed StringBean, which was still looking for end tags with names starting with * a slash, i.e. "/SCRIPT", silly beany. * Added some debugging support to the lexer, you can easily base a breakpoint on * line number. * * Revision 1.2 2003/10/26 16:44:01 derrickoswald * Get thumbelina working again. The tag.getName() method doesn't include the / of end tags. * * Revision 1.1 2003/09/21 18:20:56 derrickoswald * Thumbelina * Created a lexer GUI application to extract images behind thumbnails. * Added a task in the ant build script - thumbelina - to create the jar file. * You need JDK 1.4.x to build it. It can be run on JDK 1.3.x in crippled mode. * Usage: java -Xmx256M thumbelina.jar [URL] * * */ ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/thumbelina/PicturePanel.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/thumbelina/PicturePanel.jav0000644000175000017500000004566710226721236032360 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexerapplications/thumbelina/PicturePanel.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/12 11:27:41 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.lexerapplications.thumbelina; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.awt.Insets; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.event.HierarchyEvent; import java.awt.event.HierarchyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Enumeration; import java.util.HashSet; import javax.swing.JPanel; import javax.swing.JViewport; import javax.swing.Scrollable; import javax.swing.border.BevelBorder; /** * Hold and display a group of pictures. * @author derrick */ public class PicturePanel extends JPanel implements MouseListener, Scrollable, ComponentListener, HierarchyListener { /** * Scrolling unit increment (both directions). */ protected static final int UNIT_INCREMENT = 10; /** * Scrolling block increment (both directions). */ protected static final int BLOCK_INCREMENT = 100; /** * The thumbelina object in use. */ protected Thumbelina mThumbelina; /** * The display mosaic. */ protected TileSet mMosaic; /** * The preferred size of this component. * null initially, caches the results of * calculatePreferredSize (). */ protected Dimension mPreferredSize; /** * Creates a new instance of PicturePanel * @param thumbelina The Thumeblina this panel is associated * with. */ public PicturePanel (final Thumbelina thumbelina) { mThumbelina = thumbelina; mMosaic = new TileSet (); mPreferredSize = null; setBorder (new BevelBorder (BevelBorder.LOWERED)); addMouseListener (this); addHierarchyListener (this); } /** * Clears the panel, discarding any existing images. */ public void reset () { mMosaic = new TileSet (); repaint (); } /** * Move the given picture to the top of the Z order. * Adds it, even it if it doesn't exist. * Also puts the URL in the url text of the status bar. * @param picture The picture being brought forward. */ public void bringToTop (final Picture picture) { picture.reset (); mMosaic.bringToTop (picture); repaint (picture.x, picture.y, picture.width, picture.height); mThumbelina.mUrlText.setText (picture.getURL ().toExternalForm ()); } /** * Find a picture with the given URL in the panel. * This should really only be used to discover if the picture is still * visible. There could be more than one picture with the given URL * because it may be partially obscured by another picture, in which * case the pieces are each given their own picture object, but all * point at the same URL and Image. * @param url The url to locate. * @return The first picture encountered in the panel, * or null if the picture was not found. */ public Picture find (final String url) { Enumeration enumeration; Picture picture; Picture ret; ret = null; enumeration = mMosaic.getPictures (); while ((null == ret) && enumeration.hasMoreElements ()) { picture = (Picture)enumeration.nextElement (); if (url.equals (picture.getURL ().toExternalForm ())) ret = picture; } return (ret); } /** * Draw an image on screen. * @param picture The picture to draw. * @param add If true, the picture is added to the history. */ protected void draw (final Picture picture, final boolean add) { Component parent; boolean dolayout; Dimension before; Dimension after; parent = getParent (); dolayout = false; synchronized (mMosaic) { if (parent instanceof JViewport) { before = getPreferredSize (); mMosaic.add (picture); after = calculatePreferredSize (); if (after.width > before.width) dolayout = true; else after.width = before.width; if (after.height > before.height) dolayout = true; else after.height = before.height; if (dolayout) mPreferredSize = after; } else mMosaic.add (picture); } if (dolayout) revalidate (); repaint (picture.x, picture.y, picture.width, picture.height); if (add) mThumbelina.addHistory (picture.getURL ().toExternalForm ()); } /** * Updates this component. * @param graphics The graphics context in which to update the component. */ public void update (final Graphics graphics) { paint (graphics); } /** * Adjust the graphics clip region to account for insets. * @param graphics The graphics object to set the clip region for. */ public void adjustClipForInsets (final Graphics graphics) { Dimension dim; Insets insets; Rectangle clip; dim = getSize (); insets = getInsets (); clip = graphics.getClipBounds (); if (clip.x < insets.left) clip.x = insets.left; if (clip.y < insets.top) clip.y = insets.top; if (clip.x + clip.width > dim.width - insets.right) clip.width = dim.width - insets.right - clip.x; if (clip.y + clip.height > dim.height - insets.bottom) clip.height = dim.height - insets.bottom - clip.y; graphics.setClip (clip.x, clip.y, clip.width, clip.height); } /** * Paints this component. * Runs through the list of tiles and for every one that intersects * the clip region performs a drawImage(). * @param graphics The graphics context used to paint with. */ public void paint (final Graphics graphics) { Rectangle clip; Enumeration enumeration; HashSet set; // just so we don't draw things twice Picture picture; Image image; Point origin; int width; int height; adjustClipForInsets (graphics); clip = graphics.getClipBounds (); synchronized (mMosaic) { if (0 == mMosaic.getSize ()) super.paint (graphics); else { super.paint (graphics); enumeration = mMosaic.getPictures (); set = new HashSet (); while (enumeration.hasMoreElements ()) { picture = (Picture)enumeration.nextElement (); if ((null == clip) || (clip.intersects (picture))) { image = picture.getImage (); if (!set.contains (image)) { origin = picture.getOrigin (); width = image.getWidth (this); height = image.getHeight (this); graphics.drawImage (picture.getImage (), origin.x, origin.y, origin.x + width, origin.y + height, 0, 0, width, height, this); set.add (image); } } } } } } /** * Get the preferred size of the component. * @return The dimension of this component. */ public Dimension getPreferredSize () { if (null == mPreferredSize) setPreferredSize (calculatePreferredSize ()); else if ((0 == mPreferredSize.width) || (0 == mPreferredSize.height)) setPreferredSize (calculatePreferredSize ()); return (mPreferredSize); } /** * Sets the preferred size of this component. * @param dimension The new value to use for * getPreferredSize() until recalculated. */ public void setPreferredSize (final Dimension dimension) { mPreferredSize = dimension; } /** * Compute the preferred size of the component. * Computes the minimum bounding rectangle covering all the pictures in * the panel. It then does some funky stuff to handle * embedding in the view port of a scroll pane, basically asking * up the ancestor heirarchy what size is available, and filling it. * @return The optimal dimension for this component. */ protected Dimension calculatePreferredSize () { Enumeration enumeration; int x; int y; Picture picture; Component parent; Insets insets; Dimension ret; enumeration = mMosaic.getPictures (); x = 0; y = 0; picture = null; while (enumeration.hasMoreElements ()) { picture = (Picture)enumeration.nextElement (); if (picture.x + picture.width > x) x = picture.x + picture.width; if (picture.y + picture.height > y) y = picture.y + picture.height; } parent = getParent (); if (parent instanceof JViewport) { ret = parent.getSize (); insets = ((JViewport)parent).getInsets (); ret.width -= insets.left + insets.right; ret.height -= insets.top + insets.bottom; if ((0 != ret.width) || (0 != ret.height)) ret.width -= 2; // ... I dunno why, it just needs it if (ret.width < x) ret.width = x; if (ret.height < y) ret.height = y; } else { insets = getInsets (); x += insets.left + insets.right; y += insets.top + insets.bottom; ret = new Dimension (x, y); } return (ret); } // // MouseListener Interface // /** * Invoked when the mouse button has been clicked * (pressed and released) on a component. * Not used. * @param event The object providing details of the mouse event. */ public void mouseClicked (final MouseEvent event) { } /** *Invoked when a mouse button has been released on a component. * Not used. * @param event The object providing details of the mouse event. */ public void mouseReleased (final MouseEvent event) { } /** * Invoked when the mouse enters a component. * Not used. * @param event The object providing details of the mouse event. */ public void mouseEntered (final MouseEvent event) { } /** * Invoked when the mouse exits a component. * Not used. * @param event The object providing details of the mouse event. */ public void mouseExited (final MouseEvent event) { } /** * Handle left click on a picture by bringing it to the top. * @param event The object providing details of the mouse event. */ public void mousePressed (final MouseEvent event) { Picture picture; if (!event.isMetaDown ()) { picture = mMosaic.pictureAt (event.getX (), event.getY ()); if (null != picture) bringToTop (picture); } } // // Scrollable interface // /** * Returns the preferred size of the viewport for a view component. * For example the preferredSize of a JList component is the size * required to accommodate all of the cells in its list however the * value of preferredScrollableViewportSize is the size required for * JList.getVisibleRowCount() rows. A component without any properties * that would effect the viewport size should just return * getPreferredSize() here. * * @return The preferredSize of a JViewport whose view is this Scrollable. * @see JViewport#getPreferredSize */ public Dimension getPreferredScrollableViewportSize () { return (getPreferredSize ()); } /** * Components that display logical rows or columns should compute * the scroll increment that will completely expose one new row * or column, depending on the value of orientation. Ideally, * components should handle a partially exposed row or column by * returning the distance required to completely expose the item. *

    * Scrolling containers, like JScrollPane, will use this method * each time the user requests a unit scroll. * * @param visibleRect The view area visible within the viewport * @param orientation Either SwingConstants.VERTICAL or * SwingConstants.HORIZONTAL. * @param direction Less than zero to scroll up/left, * greater than zero for down/right. * @return The "unit" increment for scrolling in the specified direction. * This value should always be positive. */ public int getScrollableUnitIncrement ( final Rectangle visibleRect, final int orientation, final int direction) { return (UNIT_INCREMENT); } /** * Components that display logical rows or columns should compute * the scroll increment that will completely expose one block * of rows or columns, depending on the value of orientation. *

    * Scrolling containers, like JScrollPane, will use this method * each time the user requests a block scroll. * * @param visibleRect The view area visible within the viewport * @param orientation Either SwingConstants.VERTICAL or * SwingConstants.HORIZONTAL. * @param direction Less than zero to scroll up/left, * greater than zero for down/right. * @return The "block" increment for scrolling in the specified direction. * This value should always be positive. */ public int getScrollableBlockIncrement ( final Rectangle visibleRect, final int orientation, final int direction) { return (BLOCK_INCREMENT); } /** * Return true if a viewport should always force the width of this * Scrollable to match the width of the viewport. * For example a normal * text view that supported line wrapping would return true here, since it * would be undesirable for wrapped lines to disappear beyond the right * edge of the viewport. Note that returning true for a Scrollable * whose ancestor is a JScrollPane effectively disables horizontal * scrolling. *

    * Scrolling containers, like JViewport, will use this method each * time they are validated. * * @return true if a viewport should force the Scrollables * width to match its own. */ public boolean getScrollableTracksViewportWidth () { return (false); } /** * Return true if a viewport should always force the height of this * Scrollable to match the height of the viewport. For example a * columnar text view that flowed text in left to right columns * could effectively disable vertical scrolling by returning * true here. *

    * Scrolling containers, like JViewport, will use this method each * time they are validated. * * @return true if a viewport should force the Scrollables * height to match its own. */ public boolean getScrollableTracksViewportHeight () { return (false); } // // ComponentListener interface // /** * Invoked when the container's size changes. * Un-caches the preferred size. * @param event The resize event. */ public void componentResized (final ComponentEvent event) { setPreferredSize (null); } /** * Invoked when the component's position changes. * Not used. * @param event The component event. */ public void componentMoved (final ComponentEvent event) { } /** * Invoked when the component has been made visible. * Not used. * @param event The component event. */ public void componentShown (final ComponentEvent event) { } /** * Invoked when the component has been made invisible. * Not used. * @param event The component event. */ public void componentHidden (final ComponentEvent event) { } // // HierarchyListener interface // /** * Handles this components ancestor being added to a container. * Registers this component as a listener for size changes on the * ancestor so that we may un-cache the prefereed size and force * a recalculation. * @param event The heirarchy event. */ public void hierarchyChanged (final HierarchyEvent event) { if (0 != (event.getChangeFlags () & HierarchyEvent.PARENT_CHANGED)) { Component dad = event.getChanged (); Component parent = getParent (); if ((null != parent) && (parent.getParent () == dad)) dad.addComponentListener (this); } } } /* * Revision Control Modification History * * $Log: PicturePanel.java,v $ * Revision 1.2 2005/04/12 11:27:41 derrickoswald * Documentation revamp part two. * * Revision 1.1 2003/09/21 18:20:56 derrickoswald * Thumbelina * Created a lexer GUI application to extract images behind thumbnails. * Added a task in the ant build script - thumbelina - to create the jar file. * You need JDK 1.4.x to build it. It can be run on JDK 1.3.x in crippled mode. * Usage: java -Xmx256M thumbelina.jar [URL] * * */ libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/thumbelina/Sequencer.java0000644000175000017500000002500510102736746032045 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexerapplications/thumbelina/Sequencer.java,v $ // $Author: derrickoswald $ // $Date: 2004/07/31 16:42:30 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.lexerapplications.thumbelina; import java.awt.Component; import java.awt.Dimension; import java.awt.Image; import java.awt.Insets; import java.awt.Point; import java.net.URL; import java.util.ArrayList; import java.util.Random; import javax.swing.JViewport; /** * Display received images at a constant rate. */ public class Sequencer extends Thread { /** * The default delay time, {@value} milliseconds. */ protected static final int DEFAULT_DELAY = 500; /** * The thumbelina object to drive. */ protected Thumbelina mThumbelina; /** * Pictures awaiting display. */ protected ArrayList mPending; /** * Activity state. * true means fetching and displaying, false not. */ protected boolean mActive; /** * Delay between picture displays. */ protected int mDelay; /** * Random number generator for picture placement. */ protected Random mRandom; /** * Creates a new instance of a Sequencer. * @param thumbelina The object to push images to. */ public Sequencer (final Thumbelina thumbelina) { mThumbelina = thumbelina; mPending = new ArrayList (); mActive = true; setDelay (DEFAULT_DELAY); mRandom = new Random (); setName ("Sequencer"); // only good if there's just one of these start (); } /** * Clears the pending images list. */ public void reset () { synchronized (mPending) { mPending.clear (); mThumbelina.mReadyProgress.setValue (0); mPending.notify (); } } /** * Compute a random point to load the image. * Generate a random point for one of the corners of the image and * then condition the numbers so the image is on screen. * @param url The url this picture was fetched from. * Used in computing the random position, so the picture is always * placed in the same location, even when refetched. * @param width The width of the image. * @param height The height of the image. * @return The random point to use. */ protected Point random (final String url, final int width, final int height) { Component parent; Component grandparent; Dimension dim; Insets insets; int minx; int miny; int maxx; int maxy; int rndx; int rndy; int corner; Point ret; parent = mThumbelina.getPicturePanel ().getParent (); if (parent instanceof JViewport) { grandparent = parent.getParent (); // JScrollPane dim = grandparent.getSize (); } else dim = mThumbelina.getPicturePanel ().getSize (); insets = mThumbelina.getPicturePanel ().getInsets (); dim.width -= (insets.left + insets.right); dim.height -= (insets.top + insets.bottom); minx = insets.left; miny = insets.top; maxx = minx + dim.width; maxy = miny + dim.height; mRandom.setSeed ((((long)(width + height)) << 32) + url.hashCode ()); rndx = (int)(mRandom.nextDouble () * dim.width); rndy = (int)(mRandom.nextDouble () * dim.height); corner = (int)(mRandom.nextDouble () * 4); // the panel has four corners ret = new Point (0, 0); switch (corner) { case 0: // upper left if (rndx + width >= maxx) ret.x = maxx - width; else ret.x = rndx; if (rndy + height >= maxy) ret.y = maxy - height; else ret.y = rndy; break; case 1: // upper right if (rndx - width < minx) ret.x = minx; else ret.x = rndx - width; if (rndy + height >= maxy) ret.y = maxy - height; else ret.y = rndy; break; case 2: // lower right if (rndx - width < minx) ret.x = minx; else ret.x = rndx - width; if (rndy - height < miny) ret.y = miny; else ret.y = rndy - height; break; case 3: // lower left if (rndx + width >= maxx) ret.x = maxx - width; else ret.x = rndx; if (rndy - height < miny) ret.y = miny; else ret.y = rndy - height; break; default: throw new IllegalStateException ("random corner = " + corner); } // if it's really large stuff it in the upper left hand corner if (ret.x < 0) ret.x = 0; if (ret.y < 0) ret.y = 0; return (ret); } /** * Add an image to the pending list. * @param image The image to add. * @param url The url the image came from. */ public void add (final Image image, final URL url) { add (image, url, true); } /** * Add an image to the panel. * @param image The image to add. * @param url The url the image came from. * @param background If true, just add to pending list. */ public void add (final Image image, final URL url, final boolean background) { Picture picture; int size; picture = new Picture (); picture.setImage (image); picture.setURL (url); if (background) synchronized (mPending) { mPending.add (picture); size = mPending.size (); if (mThumbelina.mReadyProgress.getMaximum () < size) mThumbelina.mReadyProgress.setMaximum (size); mThumbelina.mReadyProgress.setValue (size); mPending.notify (); } else place (picture, false); } /** * Place a picture in the display area. * Places the picture at a random location on screen. * @param picture The picture to place on screen. * @param add If true, the picture is added to the history. */ protected void place (final Picture picture, final boolean add) { Point p; if (Picture.ORIGIN == picture.getOrigin ()) { // never been placed before p = random ( picture.getURL ().toExternalForm (), picture.width, picture.height); picture.x = p.x; picture.y = p.y; picture.setOrigin (p); } mThumbelina.getPicturePanel ().draw (picture, add); } // // Runnable interface // /** * Display pictures from pending list with delay between. * If the list is empty it waits on the pending list for new pictures. */ public void run () { Picture picture; int size; while (true) { try { picture = null; synchronized (mPending) { if (mActive && !mPending.isEmpty ()) picture = (Picture)mPending.remove (0); else try { mPending.wait (); } catch (InterruptedException ie) { ie.printStackTrace (); } size = mPending.size (); if (mThumbelina.mReadyProgress.getMaximum () < size) mThumbelina.mReadyProgress.setMaximum (size); mThumbelina.mReadyProgress.setValue (size); } if (null != picture) { place (picture, true); if (0 != getDelay ()) try { sleep (getDelay ()); } catch (InterruptedException ie) { ie.printStackTrace (); } } } catch (Throwable t) { t.printStackTrace (); } } } /** * Getter for property delay. * @return Value of property delay. */ public int getDelay () { return (mDelay); } /** * Setter for property delay. * @param delay New value of property delay. */ public void setDelay (final int delay) { mDelay = delay; } } /* * Revision Control Modification History * * $Log: Sequencer.java,v $ * Revision 1.2 2004/07/31 16:42:30 derrickoswald * Remove unused variables and other fixes exposed by turning on compiler warnings. * * Revision 1.1 2003/09/21 18:20:56 derrickoswald * Thumbelina * Created a lexer GUI application to extract images behind thumbnails. * Added a task in the ant build script - thumbelina - to create the jar file. * You need JDK 1.4.x to build it. It can be run on JDK 1.3.x in crippled mode. * Usage: java -Xmx256M thumbelina.jar [URL] * * */ libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/thumbelina/Picture.java0000644000175000017500000001404007767441764031543 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexerapplications/thumbelina/Picture.java,v $ // $Author: derrickoswald $ // $Date: 2003/12/16 02:29:56 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.lexerapplications.thumbelina; import java.awt.Image; import java.awt.Point; import java.awt.Rectangle; import java.net.URL; /** * Class to track pictures within the frame. * Maintains an image, an area and the URL for it. */ public class Picture extends Rectangle { /** * The origin for new points from the zero args constructor. */ public static final Point ORIGIN = new Point (0, 0); /** * The URL for the picture. */ protected URL mURL; /** * The image for the picture. */ protected Image mImage; /** * The upper left hand corner of the image. * This doesn't change, even if the image is cropped. * For example, if the left half of the image is obscured by another, * the Rectangle fields x, y, * width and height will change, but the * origin remains the same. */ protected Point mOrigin; /** * Construct a Picture. */ public Picture () { setURL (null); setImage (null); setOrigin (ORIGIN); } /** * Construct a Picture over the area given. * @param x The x coordinate. * @param y The y coordinate. * @param width The width of the picture. * @param height The height of the picture. */ public Picture (final int x, final int y, final int width, final int height) { super (x, y, width, height); setURL (null); setImage (null); setOrigin (new Point (x, y)); } /** * Construct a picture over the rectangle given. * @param r The coordinates of the area. */ public Picture (final Rectangle r) { super (r); setURL (null); setImage (null); setOrigin (new Point (r.x, r.y)); } /** * Construct a picture from the one given. * @param picture The picture to copy. */ public Picture (final Picture picture) { super (picture); setURL (picture.getURL ()); setImage (picture.getImage ()); setOrigin (picture.getOrigin ()); } /** * Getter for property URL. * @return Value of property URL. */ public URL getURL () { return (mURL); } /** * Setter for property URL. * @param url New value of property URL. */ public void setURL (final URL url) { mURL = url; } /** Getter for property image. * @return Value of property image. */ public Image getImage () { return (mImage); } /** Setter for property image. * @param image New value of property image. */ public void setImage (final Image image) { mImage = image; if (null != image) { width = image.getWidth (null); height = image.getHeight (null); } } /** Getter for property origin. * @return Value of property origin. */ public Point getOrigin () { return (mOrigin); } /** Setter for property origin. * @param origin New value of property origin. */ public void setOrigin (final Point origin) { mOrigin = origin; } /** * Return true if that picture is the same as this one. * @param picture The picture to check. * @return true if the images match. */ public boolean same (final Picture picture) { return (mImage == picture.mImage); } /** * Reset the picture to uncropped size. */ public void reset () { setBounds (mOrigin.x, mOrigin.y, mImage.getWidth (null), mImage.getHeight (null)); } /** * Create a string representation of the picture. * @return A string that shows this picture URL and size. */ public String toString () { StringBuffer ret; ret = new StringBuffer (); ret.append (getURL ().toString ()); ret.append ("[x="); ret.append (Integer.toString (x)); ret.append (",y="); ret.append (Integer.toString (y)); ret.append (",width="); ret.append (Integer.toString (width)); ret.append (",height="); ret.append (Integer.toString (height)); ret.append ("]"); return (ret.toString ()); } } /* * Revision Control Modification History * * $Log: Picture.java,v $ * Revision 1.2 2003/12/16 02:29:56 derrickoswald * Javadoc changes and additions. Stylesheet, overview, build instructions and todo list. * Added HTMLTaglet, an inline Javadoc taglet for embedding HTML into javadocs. * * Revision 1.1 2003/09/21 18:20:56 derrickoswald * Thumbelina * Created a lexer GUI application to extract images behind thumbnails. * Added a task in the ant build script - thumbelina - to create the jar file. * You need JDK 1.4.x to build it. It can be run on JDK 1.3.x in crippled mode. * Usage: java -Xmx256M thumbelina.jar [URL] * * */ ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/thumbelina/ThumbelinaFrame.javalibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/thumbelina/ThumbelinaFrame.0000644000175000017500000010202510115473456032312 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexerapplications/thumbelina/ThumbelinaFrame.java,v $ // $Author: derrickoswald $ // $Date: 2004/09/02 02:28:14 $ // $Revision: 1.4 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.lexerapplications.thumbelina; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; import javax.swing.ImageIcon; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JSeparator; import org.htmlparser.lexer.Lexer; /** * Encapsulate a Thumbelina bean and add menu and preferences support. * Provides a JFrame base in which to place a Thumbelina bean, and * adds a menu system with MRU (Most Recently Used) list. * Also provides a Google search capability. * Will eventually provide Javahelp too. */ public class ThumbelinaFrame extends JFrame implements WindowListener, ActionListener, ItemListener, PropertyChangeListener { /** * Window title. */ private static final String TITLE = "Thumbelina"; /** * Preference name for frame location and size. */ private static final String FRAMESIZE = "FrameSize"; /** * Percent of screen to leave as border when no preferences available. */ private static final int BORDERPERCENT = 5; /** * Preference name for most recently used count. */ private static final String MRULENGTH = "MRULength"; /** * Preference name for most recently used maximum count. */ private static final String MRUMAX = "MRUMax"; /** * Preference prefix for most recently used list items. */ private static final String MRUPREFIX = "MRUListItem"; /** * Preference name for google query. */ private static final String GOOGLEQUERY = "GoogleQuery"; /** * Default google query when no preferences are available. */ private static final String DEFAULTGOOGLEQUERY = "thumbs"; /** * List of URLs to prime the MRU list with. */ private static final String[] DEFAULTMRULIST = { "www.a2zcds.com", "www.stoneschool.com/Japan/", "www.tommys-bookmarks.com", "www.unitedmedia.com/comics/dilbert/archive", "www.pastelartists.com", }; /** * Send Mozilla headers in request if true. */ private static final boolean USE_MOZILLA_HEADERS = false; /** * Preference name for status bar visibility state. */ private static final String STATUSBARSTATE = "StatusBarVisible"; /** * Preference name for history list visibility state. */ private static final String HISTORYLISTSTATE = "HistoryListVisible"; /** * Preference name for sequencer active state. */ private static final String SEQUENCERACTIVE = "SequencerActive"; /** * Preference name for background thread active state. */ private static final String BACKGROUNDTHREADACTIVE = "BackgroundThreadActive"; /** * Preference name for sequencer display speed. */ private static final String DISPLAYSPEED = "DisplaySpeed"; /** * Main menu. */ protected JMenuBar mMenu; /** * URL submenu. */ protected JMenu mURL; /** * Open menu item. */ protected JMenuItem mOpen; /** * Google menu item. */ protected JMenuItem mGoogle; /** * MRU list separator #1. */ protected JSeparator mSeparator1; /** * MRU list separator #2. */ protected JSeparator mSeparator2; /** * Exit menu item. */ protected JMenuItem mExit; /** * View submenu. */ protected JMenu mView; /** * Status bar visible menu item. */ protected JCheckBoxMenuItem mStatusVisible; /** * History list visible menu item. */ protected JCheckBoxMenuItem mHistoryVisible; /** * Vommand menu. */ protected JMenu mCommand; /** * Reset menu item. */ protected JMenuItem mReset; /** * Clear menu item */ protected JMenuItem mClear; /** * Help submenu. */ protected JMenu mHelp; /** * About menu item. */ protected JMenuItem mAbout; /** * Construct a new Thumbelina frame with an idle Thumbelina. */ public ThumbelinaFrame () { this (new Thumbelina ()); } /** * Construct a new Thumbelina frame with a Thumbelina primed with one URL. * @param url The URL to prime the Thumbelina with. * @exception MalformedURLException If the given string doesn't represent * a valid url. */ public ThumbelinaFrame (final String url) throws MalformedURLException { this (new Thumbelina (url)); } /** * Construct a new Thumbelina frame with a Thumbelina primed with one URL. * @param url The URL to prime the Thumbelina with. */ public ThumbelinaFrame (final URL url) { this (new Thumbelina (url)); } /** * Construct a new Thumbelina frame with a given Thumbelina. * @param thumbelina The Thumbelina to encapsulate. */ public ThumbelinaFrame (final Thumbelina thumbelina) { setTitle (TITLE); thumbelina.addPropertyChangeListener (this); getContentPane ().add (thumbelina, BorderLayout.CENTER); addWindowListener (this); makeMenu (); setJMenuBar (mMenu); restoreSize (); initState (); updateMenu (); } /** * Access the Thumbelina object contained in the frame. * @return The Thumbelina bean. */ public Thumbelina getThumbelina () { return ((Thumbelina)getContentPane ().getComponent (0)); } /** * Initialize the user preferences. * Reads from the existing user preferences, * or initializes values from the bean directly if they don't exist. * Sets the state of the view checkboxes to match. */ public void initState () { Preferences prefs; prefs = Preferences.userNodeForPackage (getClass ()); if (-1 == prefs.getInt (MRULENGTH, -1)) for (int i = 0; i < DEFAULTMRULIST.length; i++) updateMRU (DEFAULTMRULIST[i]); getThumbelina ().setStatusBarVisible ( prefs.getBoolean (STATUSBARSTATE, getThumbelina ().getStatusBarVisible ())); mStatusVisible.setSelected (getThumbelina ().getStatusBarVisible ()); getThumbelina ().setHistoryListVisible ( prefs.getBoolean (HISTORYLISTSTATE, getThumbelina ().getHistoryListVisible ())); mHistoryVisible.setSelected (getThumbelina ().getHistoryListVisible ()); getThumbelina ().setSequencerActive ( prefs.getBoolean (SEQUENCERACTIVE, getThumbelina ().getSequencerActive ())); getThumbelina ().setBackgroundThreadActive ( prefs.getBoolean (BACKGROUNDTHREADACTIVE, getThumbelina ().getBackgroundThreadActive ())); getThumbelina ().setSpeed ( prefs.getInt (DISPLAYSPEED, getThumbelina ().getSpeed ())); } /** * Saves the current settings in the user preferences. * By default this writes to the thumbelina subdirectory under * .java in the users home directory. */ public void saveState () { Preferences prefs; prefs = Preferences.userNodeForPackage (getClass ()); // don't save size unless we're in normal state if (NORMAL == getExtendedState ()) prefs.put (FRAMESIZE, toString (getBounds ())); prefs.putBoolean (STATUSBARSTATE, getThumbelina ().getStatusBarVisible ()); prefs.putBoolean (HISTORYLISTSTATE, getThumbelina ().getHistoryListVisible ()); prefs.putBoolean (SEQUENCERACTIVE, getThumbelina ().getSequencerActive ()); prefs.putBoolean (BACKGROUNDTHREADACTIVE, getThumbelina ().getBackgroundThreadActive ()); prefs.putInt (DISPLAYSPEED, getThumbelina ().getSpeed ()); try { prefs.flush (); } catch (BackingStoreException bse) { bse.printStackTrace (); } } /** * Sets the frame size if no previous preference has been stored. * It creates a window covering all but BORDERPERCENT * margins. */ public void initSize () { Toolkit tk; Dimension dim; int borderx; int bordery; tk = getToolkit (); dim = tk.getScreenSize (); borderx = dim.width * BORDERPERCENT / 100; bordery = dim.height * BORDERPERCENT / 100; setBounds ( borderx, bordery, dim.width - (2 * borderx), dim.height - (2 * bordery)); } /** * Restores the window size based on stored preferences. * If no preferences exist, it calls initSize(). */ public void restoreSize () { Preferences prefs; String size; Rectangle rectangle; prefs = Preferences.userNodeForPackage (getClass ()); size = prefs.get (FRAMESIZE, ""); if ("".equals (size)) initSize (); else try { rectangle = fromString (size); if (rational (rectangle)) setBounds ( rectangle.x, rectangle.y, rectangle.width, rectangle.height); else initSize (); } catch (IllegalArgumentException iae) { initSize (); } } /** * Converts the rectangle to a string. * The rectangle is converted into a string that is of the form *

         * [x,y,width,height].
         * 
    * @return The string equivalent of the rectangle. * @param r The rectangle containing the window position and size, * as returned by getBounds(). */ protected String toString (final Rectangle r) { return ("[" + r.x + "," + r.y + "," + r.width + "," + r.height + "]"); } /** * Convert the given string to a valid rectangle. * The string is converted to a Rectangle. * @param value The value to parse. * @exception IllegalArgumentException if the format does not match the * form "[x,y,width,height]" with all values integers. * @return Returns the rectangle extracted from the string. */ protected Rectangle fromString (final String value) throws IllegalArgumentException { String guts; int current; int[] values; int index; Rectangle ret; try { // parse "[x,y,width,height]" if (value.startsWith ("[") && value.endsWith ("]")) { guts = value.substring (1, value.length () - 1) + ","; current = 0; values = new int[4]; for (int i = 0; i < 4; i++) { index = guts.indexOf (",", current); if (-1 == index) throw new IllegalArgumentException ( "invalid format \"" + value + "\""); else { values[i] = Integer.parseInt ( guts.substring (current, index)); current = index + 1; } } ret = new Rectangle ( values[0], values[1], values[2], values[3]); } else throw new IllegalArgumentException ( "invalid format \"" + value + "\""); } catch (NumberFormatException nfe) { throw new IllegalArgumentException (nfe.getMessage ()); } return (ret); } /** * Check if the rectangle represents a valid screen position and size. * @param r The rectangle to check. * @return true if this could be a valid frame bounds. */ private boolean rational (final Rectangle r) { Toolkit tk; Dimension winsize; tk = getToolkit (); winsize = tk.getScreenSize(); // all elements must be not stupid w.r.t. the screen size // we assume here that that means no more than 10% off screen // on the left, right and bottom sides return ( (r.x >= r.width / -10) && (r.y >= 0) && (r.width > 0) && (r.height > 0) && (r.x + r.width <= winsize.width + r.width / 10) && (r.y + r.height <= winsize.height + r.height / 10)); } /** * Create the menu. * Initializes the menu and adds it to the frame. */ public void makeMenu () { mMenu = new JMenuBar (); mURL = new JMenu (); mOpen = new JMenuItem (); mGoogle = new JMenuItem (); mSeparator1 = new JSeparator (); mSeparator2 = new JSeparator (); mExit = new JMenuItem (); mView = new JMenu (); mStatusVisible = new JCheckBoxMenuItem (); mHistoryVisible = new JCheckBoxMenuItem (); mHelp = new JMenu (); mAbout = new JMenuItem (); mCommand = new JMenu (); mReset = new JMenuItem (); mClear = new JMenuItem (); mURL.setMnemonic ('U'); mURL.setText ("URL"); mOpen.setMnemonic ('O'); mOpen.setText ("Open"); mOpen.setToolTipText ("Open a URL."); mURL.add (mOpen); mGoogle.setMnemonic ('G'); mGoogle.setText ("Google"); mGoogle.setToolTipText ("Search Google."); mURL.add (mGoogle); mURL.add (mSeparator1); mURL.add (mSeparator2); mExit.setMnemonic ('E'); mExit.setText ("Exit"); mExit.setToolTipText ("Quit Thumbelina."); mURL.add (mExit); mMenu.add (mURL); mView.setMnemonic ('V'); mView.setText ("View"); mStatusVisible.setMnemonic ('S'); mStatusVisible.setSelected (getThumbelina ().getStatusBarVisible ()); mStatusVisible.setText ("Status Bar"); mStatusVisible.setToolTipText ("Show/Hide the status bar."); mView.add (mStatusVisible); mHistoryVisible.setMnemonic ('H'); mHistoryVisible.setSelected (getThumbelina ().getHistoryListVisible ()); mHistoryVisible.setText ("History List"); mHistoryVisible.setToolTipText ("Show/Hide the history list."); mView.add (mHistoryVisible); mMenu.add (mView); mCommand.setMnemonic ('C'); mCommand.setText ("Command"); mReset.setMnemonic ('R'); mReset.setText ("Reset"); mReset.setToolTipText ("Reset Thumbelina."); mClear.setMnemonic ('L'); mClear.setText ("Clear"); mClear.setToolTipText ("Clear display."); mCommand.add (mReset); mCommand.add (mClear); mCommand.add (mHelp); mMenu.add (mCommand); mHelp.setMnemonic ('H'); mHelp.setText ("Help"); mAbout.setMnemonic ('A'); mAbout.setText ("About"); mAbout.setToolTipText ("Information about Thumbelina."); mHelp.add (mAbout); mMenu.add (mHelp); mOpen.addActionListener (this); mGoogle.addActionListener (this); mExit.addActionListener (this); mStatusVisible.addItemListener (this); mHistoryVisible.addItemListener (this); mReset.addActionListener (this); mClear.addActionListener (this); mAbout.addActionListener (this); } /** * Adjusts the menu, by inserting the current MRU list. * Removes the old MRU (Most Recently Used) items and inserts new * ones betweeen the two separators. */ public void updateMenu () { Preferences prefs; int start; int end; Component component; JMenuItem item; int count; String string; prefs = Preferences.userNodeForPackage (getClass ()); start = -1; end = -1; for (int i = 0; i < mURL.getItemCount (); i++) { component = mURL.getMenuComponent (i); if (component == mSeparator1) start = i + 1; else if (component == mSeparator2) end = i; } if ((-1 != start) && (-1 != end)) { for (int i = start; i < end; i++) mURL.remove (start); count = prefs.getInt (MRULENGTH, 0); for (int i = 0; i < count; i++) { string = prefs.get (MRUPREFIX + i, ""); if (!"".equals (string)) { item = new JMenuItem (); item.setActionCommand (string); if (string.length () > 40) string = string.substring (0, 38) + "..."; item.setText (string); item.addActionListener (this); mURL.add (item, start++); } } } } // // WindowListener interface // /** * Invoked the first time a window is made visible. * Not used. * @param event The window event. */ public void windowOpened (final WindowEvent event) { } /** * Handles window closing event. * Performs function exitApplication(). * @param event The window event. */ public void windowClosing (final WindowEvent event) { exit (); } /** * Invoked when a window has been closed as the result * of calling dispose on the window. * Not used. * @param event The window event. */ public void windowClosed (final WindowEvent event) { } /** * Invoked when a window is changed from a normal to a * minimized state. For many platforms, a minimized window * is displayed as the icon specified in the window's * iconImage property. * Not used. * @param event The window event. */ public void windowIconified (final WindowEvent event) { } /** * Invoked when a window is changed from a minimized * to a normal state. * Not used. * @param event The window event. */ public void windowDeiconified (final WindowEvent event) { } /** * Invoked when the window is set to be the user's * active window, which means the window (or one of its * subcomponents) will receive keyboard events. * Not used. * @param event The window event. */ public void windowActivated (final WindowEvent event) { } /** * Invoked when a window is no longer the user's active * window, which means that keyboard events will no longer * be delivered to the window or its subcomponents. * Not used. * @param event The window event. */ public void windowDeactivated (final WindowEvent event) { } // // ActionListener interface // /** * Handles events from the menu. * Based on the action of the event, executes the necessary subroutine. * @param actionEvent The event describing the user action. */ public void actionPerformed (final ActionEvent actionEvent) { String action; action = actionEvent.getActionCommand (); if (action.equals ("Open")) open (); else if (action.equals ("Google")) googlesearch (); else if (action.equals ("Reset")) getThumbelina ().reset (); else if (action.equals ("Clear")) getThumbelina ().getPicturePanel ().reset (); else if (action.equals ("About")) about (); else if (action.equals ("Exit")) exit (); else { // must be a URL from the most recently used list getThumbelina ().open (action); updateMRU (action); updateMenu (); } } // // ItemListener interface // /** * Handles selections on the view state checkboxes. * @param event The event describing the checkbox affected. */ public void itemStateChanged (final ItemEvent event) { Object source; boolean visible; source = event.getItemSelectable (); visible = ItemEvent.SELECTED == event.getStateChange (); if (source == mStatusVisible) getThumbelina ().setStatusBarVisible (visible); else if (source == mHistoryVisible) getThumbelina ().setHistoryListVisible (visible); } // // PropertyChangeListener // /** * Handle a property change. * @param event The property old and new values. */ public void propertyChange (final PropertyChangeEvent event) { String url; if (event.getPropertyName ().equals ( Thumbelina.PROP_CURRENT_URL_PROPERTY)) { url = (String)event.getNewValue (); if (null == url) setTitle ("Thumbelina"); else setTitle ("Thumbelina - " + url); } } /** * Updates the user preferences based on the most recently used list. * @param url The URL that is to be placed at the top of the MRU list. */ public void updateMRU (String url) { Preferences prefs; int count; ArrayList list; String string; int max; if (url.startsWith ("http://")) url = url.substring (7); prefs = Preferences.userNodeForPackage (getClass ()); count = prefs.getInt (MRULENGTH, -1); list = new ArrayList (); for (int i = 0; i < count; i++) { string = prefs.get (MRUPREFIX + i, ""); if (!"".equals (string) && !url.equalsIgnoreCase (string)) list.add (string); } list.add (0, url); max = prefs.getInt (MRUMAX, -1); if (-1 == max) max = 8; while (list.size () > max) list.remove (max); prefs.putInt (MRULENGTH, list.size ()); prefs.putInt (MRUMAX, max); for (int i = 0; i < list.size (); i++) prefs.put (MRUPREFIX + i, (String)list.get (i)); try { prefs.flush (); } catch (BackingStoreException bse) { bse.printStackTrace (); } } /** * Opens a user specified URL. */ public void open () { String result; result = JOptionPane.showInputDialog ( this, "Enter the URL:", "Open URL", JOptionPane.PLAIN_MESSAGE); if (null != result) { getThumbelina ().open (result); updateMRU (result); updateMenu (); } } /** * Query google via user specified keywords and queue results. * Asks the user for keywords, and then submits them as input to the * usual google form: *
         * 
    * * * * * * * * * * *
      * * * *
    * * *
    *  • Advanced Search *
     • Preferences *
     • Language Tools *
    *
    * Search: * * * * *
    *
    *
    * Creates a query of the form: *
         * http://www.google.ca/search?hl=en&ie=UTF-8&oe=UTF-8&q=thumbs&btnG=Google+Search&meta=
         * 
    */ public void googlesearch () { Preferences prefs; String query; String terms; StringBuffer buffer; HttpURLConnection connection; URL url; Lexer lexer; URL[][] results; prefs = Preferences.userNodeForPackage (getClass ()); query = prefs.get (GOOGLEQUERY, DEFAULTGOOGLEQUERY); try { query = (String)JOptionPane.showInputDialog ( this, "Enter the search term:", "Search Google", JOptionPane.PLAIN_MESSAGE, null, null, query); if (null != query) { // replace spaces with + terms = query.replace (' ', '+'); buffer = new StringBuffer (1024); buffer.append ("http://www.google.ca/search?"); buffer.append ("q="); buffer.append (terms); buffer.append ("&ie=UTF-8"); buffer.append ("&oe=UTF-8"); buffer.append ("&hl=en"); buffer.append ("&btnG=Google+Search"); buffer.append ("&meta="); url = new URL (buffer.toString ()); connection = (HttpURLConnection)url.openConnection (); if (USE_MOZILLA_HEADERS) { // These are the Mozilla header fields: //Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1 //Accept-Language: en-us, en;q=0.50 //Connection: keep-alive //Host: grc.com //Referer: https://grc.com/x/ne.dll?bh0bkyd2 //User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030225 //Content-Length: 27 //Content-Type: application/x-www-form-urlencoded //Accept-Encoding: gzip, deflate, compress;q=0.9 //Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66 //Keep-Alive: 300 connection.setRequestProperty ("Referer", "http://www.google.ca"); connection.setRequestProperty ("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1"); connection.setRequestProperty ("Accept-Language", "en-us, en;q=0.50"); connection.setRequestProperty ("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030225"); connection.setRequestProperty ("Accept-Charset", "ISO-8859-1, utf-8;q=0.66, *;q=0.66"); } else { // These are the IE header fields: //Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* //Accept-Language: en-ca //Connection: Keep-Alive //Host: grc.com //User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; trieste; .NET CLR 1.1.4322; .NET CLR 1.0.3705) //Content-Length: 32 //Content-Type: application/x-www-form-urlencoded //Accept-Encoding: gzip, deflate //Cache-Control: no-cache connection.setRequestProperty ("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"); connection.setRequestProperty ("Accept-Language", "en-ca"); connection.setRequestProperty ("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; trieste; .NET CLR 1.1.4322; .NET CLR 1.0.3705)"); } connection.setDoOutput (true); connection.setDoInput (true); connection.setUseCaches (false); lexer = new Lexer (connection); results = getThumbelina ().extractImageLinks (lexer, url); // add 'em getThumbelina ().reset (); // remove google links, not just append (results[1]); for (int i = 0; i < results[1].length; i++) { String found = results[1][i].toExternalForm (); if (-1 == found.indexOf ("google")) getThumbelina ().append (results[1][i]); } prefs.put (GOOGLEQUERY, query); try { prefs.flush (); } catch (BackingStoreException bse) { bse.printStackTrace (); } } } catch (Exception e) { System.out.println (e.getMessage ()); } } /** * Display information about Thumbelina. */ public void about () { URL url; try { url = new URL ("http://sourceforge.net/sflogo.php?group_id=24399"); } catch (MalformedURLException murle) { url = null; } JOptionPane.showMessageDialog ( this, "Scan and display the images behind thumbnails.\n" + "\n" + "An example application using the HTML Parser project.\n" + "Visit http://htmlparser.sourceforge.org for the latest\n" + "version and source code.\n", "Thumbelina - About", JOptionPane.PLAIN_MESSAGE, new ImageIcon (url)); } /** * Exits the application. * Saves user preferences before exiting. */ public void exit () { saveState (); System.exit (0); } /** * Alternate mainline for Thumbelina. * Similar code exists in the Thumbelina class, but this version doesn't * worry about java version. * @param args The command line arguments. * Optionally, arg[0] can be the URL to preload the Thumeblina bean with. */ public static void main (final String[] args) { String url; ThumbelinaFrame thumbelina; System.setProperty ("sun.net.client.defaultReadTimeout", "7000"); System.setProperty ("sun.net.client.defaultConnectTimeout", "7000"); url = null; if (0 != args.length) if (args[0].equalsIgnoreCase ("help") || args[0].equalsIgnoreCase ("-help") || args[0].equalsIgnoreCase ("-h") || args[0].equalsIgnoreCase ("?") || args[0].equalsIgnoreCase ("-?")) Thumbelina.help (); else url = args[0]; try { thumbelina = new ThumbelinaFrame (url); thumbelina.setVisible (true); } catch (MalformedURLException murle) { System.err.println (murle.getMessage ()); Thumbelina.help (); } } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/thumbelina/package.html0000644000175000017500000000672507775270446031555 0ustar tiagotiago Thumbelina Extract the images behind thumbnail images. This package is a demonstration of filtering the tags that are produced by the Lexer package. In this case the idea is to find links to known types of image file (.gif, .png and .jpg) that have as the link text a reference to a smaller or lower resolution image, often called a thumbnail image; hence the name.

    Besides a lot of support code to provide a user interface, the heart of the process is found in Thumbelina.extractImageLinks(), which has a wee state machine that notes when an <IMG> tag is discovered within the body of an <A></A> tag pair. This triggers a fetch of the HREF (image file).

    The fetch is performed in the background by the ToolKit image loading code which runs 4 threads (on my machine). When an image is received it is added to the list of pending images. This list is drained by the Sequencer as it presents images at fixed intervals.

    The TileSet and Picture classes provide a framework for displaying the various sizes of image that arrive in a random way, while still being able to repaint the panel when required.

    The images are only retained in memory long enough to get covered over by subsequent images, but in general, the manipulation of images is a memory intensive task which requires a higher than normal limit on the maximum heap memory, i.e. use the -Xms256M command line switch to avoid java.lang.OutOfMemoryError messages.

    The rest is just the UI code, that can be altered by intrepid programmers as they see fit.

    TODO

  73. Fix race condition that background thread adds new URL's after a reset.
  74. Send output to log window instead of URL's in titlebar.
  75. Add pending list items as greyed out items to the history list.
  76. Make status bar a pipeline with valves and limit switches (better on/off buttons).
  77. Fix race condition that sometimes doesn't resize PicturePanel with frame.
  78. Tree view.
  79. Drag and drop support.
  80. JavaHelp.
  81. Allow filter configuration.
  82. Handle OutOfMemoryError more gracefully (trap System.err?).
  83. Add more background threads.
  84. Find out how to honour reset on the image fetcher threads.
  85. libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/lexerapplications/thumbelina/TileSet.java0000644000175000017500000004011610102736746031464 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexerapplications/thumbelina/TileSet.java,v $ // $Author: derrickoswald $ // $Date: 2004/07/31 16:42:30 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.lexerapplications.thumbelina; import java.awt.Rectangle; import java.util.Enumeration; import java.util.Vector; /** * Class to track picture regions. */ public class TileSet /* extends java.awt.Canvas implements java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.WindowListener */ { /** * The list of Pictures. */ protected Vector mRegions; /** * Construct a tile set. */ public TileSet () { mRegions = new Vector (); } /** * Get the number of tiles in this collection. * @return The number of pictures showing. * Note that the same image and URL may be showing * (different pieces) in several locations. */ public int getSize () { return (mRegions.size ()); } /** * Get the list of pictures. * @return An enumeration over the picture objects in this set. */ public Enumeration getPictures () { return (mRegions.elements ()); } /** * Add a single picture to the list. * @param r The picture to add. */ public void add (final Picture r) { Vector regions; // this will be the new set Enumeration e; Picture rover; Rectangle intersection; Vector splits; Enumeration frags; regions = new Vector (); for (e = getPictures (); e.hasMoreElements (); ) { rover = (Picture)e.nextElement (); if (rover.intersects (r)) { intersection = rover.intersection (r); if (!intersection.equals (rover)) { // incoming lies completely within the existing picture // or touches the existing picture somehow splits = split (r, rover, false); for (frags = splits.elements (); frags.hasMoreElements (); ) regions.addElement (frags.nextElement ()); } else // incoming covers existing... drop the existing picture // but be sure to release the image memory rover.setImage (null); } else // no conflict, keep the existing regions.addElement (rover); } regions.addElement (r); mRegions = regions; } /** * Split the large picture. * Strategy: split horizontally (full width strips top and bottom). * NOTE: top and bottom make sense only in terms of AWT coordinates. * @param small The incoming picture. * @param large The encompassing picture. The attributes of this one * are propagated to the fragments. * @param keep If true, the center area is kept, * otherwise discarded. * @return The fragments from the large picture. */ private Vector split ( final Picture small, final Picture large, final boolean keep) { Picture m; Vector ret; ret = new Vector (); if (large.intersects (small)) { Rectangle intersection = large.intersection (small); // if tops don't match split off the top if ((intersection.y + intersection.height) != (large.y + large.height)) { m = new Picture (large); m.y = (intersection.y + intersection.height); m.height = (large.y + large.height) - m.y; ret.addElement (m); } // if left sides don't match make a left fragment if (intersection.x != large.x) { m = new Picture (large); m.y = intersection.y; m.width = intersection.x - large.x; m.height = intersection.height; ret.addElement (m); } // the center bit if (keep) { m = new Picture (large); m.x = intersection.x; m.y = intersection.y; m.width = intersection.width; m.height = intersection.height; ret.addElement (m); } // if right sides don't match make a right fragment if ((intersection.x + intersection.width) != (large.x + large.width)) { m = new Picture (large); m.x = intersection.x + intersection.width; m.y = intersection.y; m.width = (large.x + large.width) - m.x; m.height = intersection.height; ret.addElement (m); } // if bottoms don't match split off the bottom if (intersection.y != large.y) { m = new Picture (large); m.height = (intersection.y - large.y); ret.addElement (m); } } return (ret); } /** * Find the Picture at position x,y * @param x The x coordinate of the point to examine. * @param y The y coordinate of the point to examine. * @return The picture at that point, or null * if there are none. */ public Picture pictureAt (final int x, final int y) { Picture m; Picture ret; ret = null; for (int i = 0; (null == ret) && (i < mRegions.size ()); i++) { m = (Picture)mRegions.elementAt (i); if (m.contains (x, y)) ret = m; } return (ret); } /** * Move the given picture to the top of the Z order. * @param picture The picture to add. */ public void bringToTop (final Picture picture) { Picture m; Picture ret; ret = null; for (int i = 0; (null == ret) && (i < mRegions.size ()); ) { m = (Picture)mRegions.elementAt (i); if (picture.same (m)) mRegions.removeElementAt (i); else i++; } add (picture); } // // // // Unit test. // // // // // and need to add: // extends // java.awt.Canvas // implements // java.awt.event.ActionListener, // java.awt.event.MouseListener, // java.awt.event.WindowListener // // to the class definition // // boolean mVerbose; // int mCounter; // java.awt.Point origin; // Rectangle last; // int type; // // static java.awt.MenuBar menuMain; // static java.awt.Menu Options; // static java.awt.MenuItem repeat; // static java.awt.MenuItem clear; // static java.awt.TextField status; // // // checks if adding the rectangle causes an overlap // boolean checkAdd (Rectangle r, Vector v) // { // Enumeration e; // boolean ret; // ret = false; // // for (e = v.elements (); !ret && e.hasMoreElements (); ) // ret = r.intersects ((Rectangle)e.nextElement ()); // // return (ret); // } // // void paintwait () // { // java.awt.Graphics g = getGraphics (); // if (null != g) // paint (g); // Thread.yield (); // try // { // Thread.sleep (1000); // } // catch (Exception exception) // { // } // } // // void add () // { // if (null != last) // { // Picture m = new Picture (last); // try // { // m.setURL (new URL ("http://localhost/image#" + mCounter++)); // } // catch (java.net.MalformedURLException murle) // { // murle.printStackTrace (); // } // this.add (m); // repaint (); // } // } // // // // // WindowListener interface // // // public void windowOpened (java.awt.event.WindowEvent e) {} // public void windowClosing (java.awt.event.WindowEvent e) // { // System.exit (0); // } // public void windowClosed (java.awt.event.WindowEvent e) {} // public void windowIconified (java.awt.event.WindowEvent e) {} // public void windowDeiconified (java.awt.event.WindowEvent e) {} // public void windowActivated (java.awt.event.WindowEvent e) {} // public void windowDeactivated (java.awt.event.WindowEvent e) {} // // // // // ActionListener interface // // // public void actionPerformed (java.awt.event.ActionEvent event) // { // Object object = event.getSource(); // if (object == repeat) // add (); // else if (object == clear) // { // mRegions = new Vector (); // repaint (); // } // } // // // // // MouseListener Interface // // // // public void mouseClicked (java.awt.event.MouseEvent event) // { // if (mVerbose) // System.out.println ("DrawTarget.mouseClicked " + event); // } // // public void mouseReleased (java.awt.event.MouseEvent event) // { // if (mVerbose) // System.out.println ("DrawTarget.mouseReleased " + event); // if (null != origin) // { // last = new Rectangle ( // Math.min (origin.x, event.getX ()), // Math.min (origin.y, event.getY ()), // Math.abs (event.getX () - origin.x), // Math.abs (event.getY () - origin.y)); // add (); // origin = null; // } // } // // public void mouseEntered (java.awt.event.MouseEvent event) // { // if (mVerbose) // System.out.println ("DrawTarget.mouseEntered " + event); // } // // public void mouseExited (java.awt.event.MouseEvent event) // { // if (mVerbose) // System.out.println ("DrawTarget.mouseExited " + event); // } // // public void mousePressed (java.awt.event.MouseEvent event) // { // if (mVerbose) // System.out.println ("DrawTarget.mousePressed " + event); // if (event.isMetaDown ()) // { // status.setText (getDetails (event.getX (), event.getY ())); // } // else // origin = new java.awt.Point (event.getX (), event.getY ()); // } // // public void update (java.awt.Graphics graphics) // { // paint (graphics); // } // // static final java.awt.Color[] mColours = // { // java.awt.Color.blue, // java.awt.Color.cyan, // java.awt.Color.gray, // java.awt.Color.green, // java.awt.Color.orange, // java.awt.Color.pink, // java.awt.Color.red, // java.awt.Color.yellow, // java.awt.Color.lightGray, // java.awt.Color.darkGray, // }; // // public void paint (java.awt.Graphics graphics) // { // java.awt.Dimension size = getSize (); // graphics.setColor (getBackground ()); // graphics.fillRect (0, 0, size.width + 1, size.height + 1); // // if (0 == mRegions.size ()) // { // graphics.setColor (getForeground ()); // graphics.drawString ( // "Click and drag to create a picture.", 10, 20); // graphics.drawString ( // "Right click a picture for details.", 10, 40); // } // else // { // Enumeration e = getPictures (); // while (e.hasMoreElements ()) // { // Picture m = (Picture)e.nextElement (); // String url = m.getURL ().toExternalForm (); // int n = url.indexOf ('#'); // n = Integer.parseInt (url.substring (n + 1)) // java.awt.Color colour = mColours[n % mColours.length]; // graphics.setColor (colour); // graphics.fillRect (m.x, m.y, m.width + 1, m.height + 1); // graphics.setColor (java.awt.Color.black); // graphics.drawRect (m.x, m.y, m.width, m.height); // } // checkOverlap (graphics); // } // } // // void checkOverlap (java.awt.Graphics graphics) // { // Picture m; // Picture _m; // Rectangle r; // // graphics.setColor (java.awt.Color.magenta); // for (int i = 0; i < mRegions.size (); i++) // { // m = (Picture)mRegions.elementAt (i); // for (int j = i + 1; j < mRegions.size (); j++) // { // _m = (Picture)mRegions.elementAt (j); // if (m.intersects (_m)) // { // r = m.intersection (_m); // System.out.println ( // "overlap (" // + r.x // + "," // + r.y // + ") (" // + (r.x + r.width) // + "," // + (r.y + r.height) // + ")"); // graphics.fillRect (r.x, r.y, r.width + 1, r.height + 1); // } // } // } // } // // String getDetails (int x, int y) // { // Picture m; // String ret; // // ret = null; // // // find the Picture // for (int i = 0; (null == ret) && (i < mRegions.size ()); i++) // { // m = (Picture)mRegions.elementAt (i); // if (m.contains (x, y)) // ret = m.toString (); // } // if (null == ret) // ret = ""; // // return (ret); // } // // public static void main (String[] args) // { // java.awt.Frame frame; // // frame = new java.awt.Frame (); // frame.setSize (400,400); // menuMain = new java.awt.MenuBar(); // Options = new java.awt.Menu ("Options"); // repeat = new java.awt.MenuItem("Repeat"); // Options.add (repeat); // clear = new java.awt.MenuItem("Clear"); // Options.add (clear); // // menuMain.add (Options); // frame.setMenuBar (menuMain); // // java.awt.Insets insets = frame.getInsets (); // // TileSet buffy = new TileSet (); // buffy.setLocation (insets.left + 10, insets.top + 10); // buffy.setBackground (java.awt.Color.lightGray.brighter ()); // buffy.setVisible (true); // // frame.add (buffy, "Center"); // status = new java.awt.TextField (); // frame.add (status, "South"); // // frame.addWindowListener (buffy); // buffy.addMouseListener (buffy); // repeat.addActionListener (buffy); // clear.addActionListener (buffy); // // frame.setVisible (true); // // } } /* * Revision Control Modification History * * $Log: TileSet.java,v $ * Revision 1.2 2004/07/31 16:42:30 derrickoswald * Remove unused variables and other fixes exposed by turning on compiler warnings. * * Revision 1.1 2003/09/21 18:20:56 derrickoswald * Thumbelina * Created a lexer GUI application to extract images behind thumbnails. * Added a task in the ant build script - thumbelina - to create the jar file. * You need JDK 1.4.x to build it. It can be run on JDK 1.3.x in crippled mode. * Usage: java -Xmx256M thumbelina.jar [URL] * * */ libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/Parser.java0000644000175000017500000007205710442551424023475 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/Parser.java,v $ // $Author: derrickoswald $ // $Date: 2006/06/10 15:11:32 $ // $Revision: 1.120 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser; import java.io.Serializable; import java.net.HttpURLConnection; import java.net.URLConnection; import org.htmlparser.filters.TagNameFilter; import org.htmlparser.filters.NodeClassFilter; import org.htmlparser.http.ConnectionManager; import org.htmlparser.http.ConnectionMonitor; import org.htmlparser.http.HttpHeader; import org.htmlparser.lexer.Lexer; import org.htmlparser.lexer.Page; import org.htmlparser.util.DefaultParserFeedback; import org.htmlparser.util.IteratorImpl; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; import org.htmlparser.util.ParserFeedback; import org.htmlparser.visitors.NodeVisitor; /** * The main parser class. * This is the primary class of the HTML Parser library. It provides * constructors that take a {@link #Parser(String) String}, * a {@link #Parser(URLConnection) URLConnection}, or a * {@link #Parser(Lexer) Lexer}. In the case of a String, * a check is made to see if the first non-whitespace character is a <, in * which case it is assumed to be HTML. Otherwise an * attempt is made to open it as a URL, and if that fails it assumes it is a * local disk file. If you want to parse a String after using the * {@link #Parser() no-args} constructor, use * {@link #setInputHTML setInputHTML()}, or you can use {@link #createParser}. *

    The Parser provides access to the contents of the * page, via a {@link #elements() NodeIterator}, a * {@link #parse(NodeFilter) NodeList} or a * {@link #visitAllNodesWith NodeVisitor}. *

    Typical usage of the parser is: * *

     * Parser parser = new Parser ("http://whatever");
     * NodeList list = parser.parse (null);
     * // do something with your list of nodes.
     * 
    *

    *

    What types of nodes and what can be done with them is dependant on the * setup, but in general a node can be converted back to HTML and it's * children (enclosed nodes) and parent can be obtained, because nodes are * nested. See the {@link Node} interface.

    *

    For example, if the URL contains:
    * * {@.html * * * Mondays -- What a bad idea. * * * Most people have a pathological hatred of Mondays... * * } *
    * and the example code above is used, the list contain only one element, the * {@.html } node. This node is a {@link org.htmlparser.tags tag}, * which is an object of class * {@link org.htmlparser.tags.Html Html} if the default {@link NodeFactory} * (a {@link PrototypicalNodeFactory}) is used.

    *

    To get at further content, the children of the top * level nodes must be examined. When digging through a node list one must be * conscious of the possibility of whitespace between nodes, e.g. in the example * above: * *

     * Node node = list.elementAt (0);
     * NodeList sublist = node.getChildren ();
     * System.out.println (sublist.size ());
     * 
    * * would print out 5, not 2, because there are newlines after {@.html }, * {@.html } and {@.html } that are children of the HTML node * besides the {@.html } and {@.html } nodes.

    *

    Because processing nodes is so common, two interfaces are provided to * ease this task, {@link org.htmlparser.filters filters} * and {@link org.htmlparser.visitors visitors}. */ public class Parser implements Serializable, ConnectionMonitor { // Please don't change the formatting of the version variables below. // This is done so as to facilitate ant script processing. /** * The floating point version number ({@value}). */ public static final double VERSION_NUMBER = 1.6 ; /** * The type of version ({@value}). */ public static final String VERSION_TYPE = "Release Build" ; /** * The date of the version ({@value}). */ public static final String VERSION_DATE = "Jun 10, 2006" ; // End of formatting /** * The display version ({@value}). */ public static final String VERSION_STRING = "" + VERSION_NUMBER + " (" + VERSION_TYPE + " " + VERSION_DATE + ")"; /** * Feedback object. */ protected ParserFeedback mFeedback; /** * The html lexer associated with this parser. */ protected Lexer mLexer; /** * A quiet message sink. * Use this for no feedback. */ public static final ParserFeedback DEVNULL = new DefaultParserFeedback (DefaultParserFeedback.QUIET); /** * A verbose message sink. * Use this for output on System.out. */ public static final ParserFeedback STDOUT = new DefaultParserFeedback (); static { getConnectionManager ().getDefaultRequestProperties ().put ( "User-Agent", "HTMLParser/" + getVersionNumber ()); } // // Static methods // /** * Return the version string of this parser. * @return A string of the form: *

         * "[floating point number] ([build-type] [build-date])"
         * 
    */ public static String getVersion () { return (VERSION_STRING); } /** * Return the version number of this parser. * @return A floating point number, the whole number part is the major * version, and the fractional part is the minor version. */ public static double getVersionNumber () { return (VERSION_NUMBER); } /** * Get the connection manager all Parsers use. * @return The connection manager. * @see #setConnectionManager */ public static ConnectionManager getConnectionManager () { return (Page.getConnectionManager ()); } /** * Set the connection manager all Parsers use. * @param manager The new connection manager. * @see #getConnectionManager */ public static void setConnectionManager (ConnectionManager manager) { Page.setConnectionManager (manager); } /** * Creates the parser on an input string. * @param html The string containing HTML. * @param charset Optional. The character set encoding that will * be reported by {@link #getEncoding}. If charset is null * the default character set is used. * @return A parser with the html string as input. * @exception IllegalArgumentException if html is null. */ public static Parser createParser (String html, String charset) { Parser ret; if (null == html) throw new IllegalArgumentException ("html cannot be null"); ret = new Parser (new Lexer (new Page (html, charset))); return (ret); } // // Constructors // /** * Zero argument constructor. * The parser is in a safe but useless state parsing an empty string. * Set the lexer or connection using {@link #setLexer} * or {@link #setConnection}. * @see #setLexer(Lexer) * @see #setConnection(URLConnection) */ public Parser () { this (new Lexer (new Page ("")), DEVNULL); } /** * Construct a parser using the provided lexer and feedback object. * This would be used to create a parser for special cases where the * normal creation of a lexer on a URLConnection needs to be customized. * @param lexer The lexer to draw characters from. * @param fb The object to use when information, * warning and error messages are produced. If null no feedback * is provided. */ public Parser (Lexer lexer, ParserFeedback fb) { setFeedback (fb); setLexer (lexer); setNodeFactory (new PrototypicalNodeFactory ()); } /** * Constructor for custom HTTP access. * This would be used to create a parser for a URLConnection that needs * a special setup or negotiation conditioning beyond what is available * from the {@link #getConnectionManager ConnectionManager}. * @param connection A fully conditioned connection. The connect() * method will be called so it need not be connected yet. * @param fb The object to use for message communication. * @throws ParserException If the creation of the underlying Lexer * cannot be performed. */ public Parser (URLConnection connection, ParserFeedback fb) throws ParserException { this (new Lexer (connection), fb); } /** * Creates a Parser object with the location of the resource (URL or file) * You would typically create a DefaultHTMLParserFeedback object and pass * it in. * @see #Parser(URLConnection,ParserFeedback) * @param resource Either a URL, a filename or a string of HTML. * The string is considered HTML if the first non-whitespace character * is a <. The use of a url or file is autodetected by first attempting * to open the resource as a URL, if that fails it is assumed to be a file * name. * A standard HTTP GET is performed to read the content of the URL. * @param feedback The HTMLParserFeedback object to use when information, * warning and error messages are produced. If null no feedback * is provided. * @throws ParserException If the URL is invalid. */ public Parser (String resource, ParserFeedback feedback) throws ParserException { setFeedback (feedback); setResource (resource); setNodeFactory (new PrototypicalNodeFactory ()); } /** * Creates a Parser object with the location of the resource (URL or file). * A DefaultHTMLParserFeedback object is used for feedback. * @param resource Either HTML, a URL or a filename (autodetects). * @throws ParserException If the resourceLocn argument does not resolve * to a valid page or file. * @see #Parser(String,ParserFeedback) */ public Parser (String resource) throws ParserException { this (resource, STDOUT); } /** * Construct a parser using the provided lexer. * A feedback object printing to {@link #STDOUT System.out} is used. * This would be used to create a parser for special cases where the * normal creation of a lexer on a URLConnection needs to be customized. * @param lexer The lexer to draw characters from. */ public Parser (Lexer lexer) { this (lexer, STDOUT); } /** * Construct a parser using the provided URLConnection. * This would be used to create a parser for a URLConnection that needs * a special setup or negotiation conditioning beyond what is available * from the {@link #getConnectionManager ConnectionManager}. * A feedback object printing to {@link #STDOUT System.out} is used. * @see #Parser(URLConnection,ParserFeedback) * @param connection A fully conditioned connection. The connect() * method will be called so it need not be connected yet. * @throws ParserException If the creation of the underlying Lexer * cannot be performed. */ public Parser (URLConnection connection) throws ParserException { this (connection, STDOUT); } // // Bean patterns // /** * Set the html, a url, or a file. * @param resource The resource to use. * @exception IllegalArgumentException if resource is null. * @exception ParserException if a problem occurs in connecting. */ public void setResource (String resource) throws ParserException { int length; boolean html; char ch; if (null == resource) throw new IllegalArgumentException ("resource cannot be null"); length = resource.length (); html = false; for (int i = 0; i < length; i++) { ch = resource.charAt (i); if (!Character.isWhitespace (ch)) { if ('<' == ch) html = true; break; } } if (html) setLexer (new Lexer (new Page (resource))); else setLexer (new Lexer (getConnectionManager ().openConnection (resource))); } /** * Set the connection for this parser. * This method creates a new Lexer reading from the connection. * @param connection A fully conditioned connection. The connect() * method will be called so it need not be connected yet. * @exception ParserException if the character set specified in the * HTTP header is not supported, or an i/o exception occurs creating the * lexer. * @see #setLexer * @see #getConnection * @exception IllegalArgumentException if connection is null. * @exception ParserException if a problem occurs in connecting. */ public void setConnection (URLConnection connection) throws ParserException { if (null == connection) throw new IllegalArgumentException ("connection cannot be null"); setLexer (new Lexer (connection)); } /** * Return the current connection. * @return The connection either created by the parser or passed into this * parser via {@link #setConnection}. * @see #setConnection(URLConnection) */ public URLConnection getConnection () { return (getLexer ().getPage ().getConnection ()); } /** * Set the URL for this parser. * This method creates a new Lexer reading from the given URL. * Trying to set the url to null or an empty string is a no-op. * @param url The new URL for the parser. * @throws ParserException If the url is invalid or creation of the * underlying Lexer cannot be performed. * @exception ParserException if a problem occurs in connecting. * @see #getURL */ public void setURL (String url) throws ParserException { if ((null != url) && !"".equals (url)) setConnection (getConnectionManager ().openConnection (url)); } /** * Return the current URL being parsed. * @return The current url. This is the URL for the current page. * A string passed into the constructor or set via setURL may be altered, * for example, a file name may be modified to be a URL. * @see Page#getUrl * @see #setURL */ public String getURL () { return (getLexer ().getPage ().getUrl ()); } /** * Set the encoding for the page this parser is reading from. * @param encoding The new character set to use. * @throws ParserException If the encoding change causes characters that * have already been consumed to differ from the characters that would * have been seen had the new encoding been in force. * @see org.htmlparser.util.EncodingChangeException * @see #getEncoding */ public void setEncoding (String encoding) throws ParserException { getLexer ().getPage ().setEncoding (encoding); } /** * Get the encoding for the page this parser is reading from. * This item is set from the HTTP header but may be overridden by meta * tags in the head, so this may change after the head has been parsed. * @return The encoding currently in force. * @see #setEncoding */ public String getEncoding () { return (getLexer ().getPage ().getEncoding ()); } /** * Set the lexer for this parser. * The current NodeFactory is transferred to (set on) the given lexer, * since the lexer owns the node factory object. * It does not adjust the feedback object. * @param lexer The lexer object to use. * @see #setNodeFactory * @see #getLexer * @exception IllegalArgumentException if lexer is null. */ public void setLexer (Lexer lexer) { NodeFactory factory; String type; if (null == lexer) throw new IllegalArgumentException ("lexer cannot be null"); // move a node factory that's been set to the new lexer factory = null; if (null != getLexer ()) factory = getLexer ().getNodeFactory (); if (null != factory) lexer.setNodeFactory (factory); mLexer = lexer; // warn about content that's not likely text type = mLexer.getPage ().getContentType (); if (type != null && !type.startsWith ("text")) getFeedback ().warning ( "URL " + mLexer.getPage ().getUrl () + " does not contain text"); } /** * Returns the lexer associated with the parser. * @return The current lexer. * @see #setLexer */ public Lexer getLexer () { return (mLexer); } /** * Get the current node factory. * @return The current lexer's node factory. * @see #setNodeFactory */ public NodeFactory getNodeFactory () { return (getLexer ().getNodeFactory ()); } /** * Set the current node factory. * @param factory The new node factory for the current lexer. * @see #getNodeFactory * @exception IllegalArgumentException if factory is null. */ public void setNodeFactory (NodeFactory factory) { if (null == factory) throw new IllegalArgumentException ("node factory cannot be null"); getLexer ().setNodeFactory (factory); } /** * Sets the feedback object used in scanning. * @param fb The new feedback object to use. If this is null a * {@link #DEVNULL silent feedback object} is used. * @see #getFeedback */ public void setFeedback (ParserFeedback fb) { if (null == fb) mFeedback = DEVNULL; else mFeedback = fb; } /** * Returns the current feedback object. * @return The feedback object currently being used. * @see #setFeedback */ public ParserFeedback getFeedback() { return (mFeedback); } // // Public methods // /** * Reset the parser to start from the beginning again. * This assumes support for a reset from the underlying * {@link org.htmlparser.lexer.Source} object. *

    This is cheaper (in terms of time) than resetting the URL, i.e. *

         * parser.setURL (parser.getURL ());
         * 
    * because the page is not refetched from the internet. * Note: the nodes returned on the second parse are new * nodes and not the same nodes returned on the first parse. If you * want the same nodes for re-use, collect them in a NodeList with * {@link #parse(NodeFilter) parse(null)} and operate on the NodeList. */ public void reset () { getLexer ().reset (); } /** * Returns an iterator (enumeration) over the html nodes. * {@link org.htmlparser.nodes Nodes} can be of three main types: *
      *
    • {@link org.htmlparser.nodes.TagNode TagNode}
    • *
    • {@link org.htmlparser.nodes.TextNode TextNode}
    • *
    • {@link org.htmlparser.nodes.RemarkNode RemarkNode}
    • *
    * In general, when parsing with an iterator or processing a NodeList, * you will need to use recursion. For example: * *
         * void processMyNodes (Node node)
         * {
         *     if (node instanceof TextNode)
         *     {
         *         // downcast to TextNode
         *         TextNode text = (TextNode)node;
         *         // do whatever processing you want with the text
         *         System.out.println (text.getText ());
         *     }
         *     if (node instanceof RemarkNode)
         *     {
         *         // downcast to RemarkNode
         *         RemarkNode remark = (RemarkNode)node;
         *         // do whatever processing you want with the comment
         *     }
         *     else if (node instanceof TagNode)
         *     {
         *         // downcast to TagNode
         *         TagNode tag = (TagNode)node;
         *         // do whatever processing you want with the tag itself
         *         // ...
         *         // process recursively (nodes within nodes) via getChildren()
         *         NodeList nl = tag.getChildren ();
         *         if (null != nl)
         *             for (NodeIterator i = nl.elements (); i.hasMoreElements (); )
         *                 processMyNodes (i.nextNode ());
         *     }
         * }
         *
         * Parser parser = new Parser ("http://www.yahoo.com");
         * for (NodeIterator i = parser.elements (); i.hasMoreElements (); )
         *     processMyNodes (i.nextNode ());
         * 
    *
    * @throws ParserException If a parsing error occurs. * @return An iterator over the top level nodes (usually {@.html }). */ public NodeIterator elements () throws ParserException { return (new IteratorImpl (getLexer (), getFeedback ())); } /** * Parse the given resource, using the filter provided. * This can be used to extract information from specific nodes. * When used with a null filter it returns an * entire page which can then be modified and converted back to HTML * (Note: the synthesis use-case is not handled very well; the parser * is more often used to extract information from a web page). *

    For example, to replace the entire contents of the HEAD with a * single TITLE tag you could do this: *

         * NodeList nl = parser.parse (null); // here is your two node list
         * NodeList heads = nl.extractAllNodesThatMatch (new TagNameFilter ("HEAD"))
         * if (heads.size () > 0) // there may not be a HEAD tag
         * {
         *     Head head = heads.elementAt (0); // there should be only one
         *     head.removeAll (); // clean out the contents
         *     Tag title = new TitleTag ();
         *     title.setTagName ("title");
         *     title.setChildren (new NodeList (new TextNode ("The New Title")));
         *     Tag title_end = new TitleTag ();
         *     title_end.setTagName ("/title");
         *     title.setEndTag (title_end);
         *     head.add (title);
         * }
         * System.out.println (nl.toHtml ()); // output the modified HTML
         * 
    * @return The list of matching nodes (for a null * filter this is all the top level nodes). * @param filter The filter to apply to the parsed nodes, * or null to retrieve all the top level nodes. * @throws ParserException If a parsing error occurs. */ public NodeList parse (NodeFilter filter) throws ParserException { NodeIterator e; Node node; NodeList ret; ret = new NodeList (); for (e = elements (); e.hasMoreNodes (); ) { node = e.nextNode (); if (null != filter) node.collectInto (ret, filter); else ret.add (node); } return (ret); } /** * Apply the given visitor to the current page. * The visitor is passed to the accept() method of each node * in the page in a depth first traversal. The visitor * beginParsing() method is called prior to processing the * page and finishedParsing() is called after the processing. * @param visitor The visitor to visit all nodes with. * @throws ParserException If a parse error occurs while traversing * the page with the visitor. */ public void visitAllNodesWith (NodeVisitor visitor) throws ParserException { Node node; visitor.beginParsing(); for (NodeIterator e = elements(); e.hasMoreNodes(); ) { node = e.nextNode(); node.accept(visitor); } visitor.finishedParsing(); } /** * Initializes the parser with the given input HTML String. * @param inputHTML the input HTML that is to be parsed. * @throws ParserException If a error occurs in setting up the * underlying Lexer. * @exception IllegalArgumentException if inputHTML is null. */ public void setInputHTML (String inputHTML) throws ParserException { if (null == inputHTML) throw new IllegalArgumentException ("html cannot be null"); if (!"".equals (inputHTML)) setLexer (new Lexer (new Page (inputHTML))); } /** * Extract all nodes matching the given filter. * @see Node#collectInto(NodeList, NodeFilter) * @param filter The filter to be applied to the nodes. * @throws ParserException If a parse error occurs. * @return A list of nodes matching the filter criteria, * i.e. for which the filter's accept method * returned true. */ public NodeList extractAllNodesThatMatch (NodeFilter filter) throws ParserException { NodeIterator e; NodeList ret; ret = new NodeList (); for (e = elements (); e.hasMoreNodes (); ) e.nextNode ().collectInto (ret, filter); return (ret); } // // ConnectionMonitor interface // /** * Called just prior to calling connect. * Part of the ConnectionMonitor interface, this implementation just * sends the request header to the feedback object if any. * @param connection The connection which is about to be connected. * @throws ParserException Not used * @see ConnectionMonitor#preConnect */ public void preConnect (HttpURLConnection connection) throws ParserException { getFeedback ().info (HttpHeader.getRequestHeader (connection)); } /** * Called just after calling connect. * Part of the ConnectionMonitor interface, this implementation just * sends the response header to the feedback object if any. * @param connection The connection that was just connected. * @throws ParserException Not used. * @see ConnectionMonitor#postConnect */ public void postConnect (HttpURLConnection connection) throws ParserException { getFeedback ().info (HttpHeader.getResponseHeader (connection)); } /** * The main program, which can be executed from the command line. * @param args A URL or file name to parse, and an optional tag name to be * used as a filter. */ public static void main (String [] args) { Parser parser; NodeFilter filter; if (args.length < 1 || args[0].equals ("-help")) { System.out.println ("HTML Parser v" + getVersion () + "\n"); System.out.println (); System.out.println ("Syntax : java -jar htmlparser.jar" + " [type]"); System.out.println (" the URL or file to be parsed"); System.out.println (" type the node type, for example:"); System.out.println (" A - Show only the link tags"); System.out.println (" IMG - Show only the image tags"); System.out.println (" TITLE - Show only the title tag"); System.out.println (); System.out.println ("Example : java -jar htmlparser.jar" + " http://www.yahoo.com"); System.out.println (); } else try { parser = new Parser (); if (1 < args.length) filter = new TagNameFilter (args[1]); else { filter = null; // for a simple dump, use more verbose settings parser.setFeedback (Parser.STDOUT); getConnectionManager ().setMonitor (parser); } getConnectionManager ().setRedirectionProcessingEnabled (true); getConnectionManager ().setCookieProcessingEnabled (true); parser.setResource (args[0]); System.out.println (parser.parse (filter)); } catch (ParserException e) { e.printStackTrace (); } } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/0000755000175000017500000000000010442554072023035 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/HasAttributeFilter.java0000644000175000017500000001003310241624440027434 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/HasAttributeFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.7 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import java.util.Locale; import org.htmlparser.Attribute; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Tag; /** * This class accepts all tags that have a certain attribute, * and optionally, with a certain value. */ public class HasAttributeFilter implements NodeFilter { /** * The attribute to check for. */ protected String mAttribute; /** * The value to check for. */ protected String mValue; /** * Creates a new instance of HasAttributeFilter. * With no attribute name, this would always return false * from {@link #accept}. */ public HasAttributeFilter () { this ("", null); } /** * Creates a new instance of HasAttributeFilter that accepts tags * with the given attribute. * @param attribute The attribute to search for. */ public HasAttributeFilter (String attribute) { this (attribute, null); } /** * Creates a new instance of HasAttributeFilter that accepts tags * with the given attribute and value. * @param attribute The attribute to search for. * @param value The value that must be matched, * or null if any value will match. */ public HasAttributeFilter (String attribute, String value) { mAttribute = attribute.toUpperCase (Locale.ENGLISH); mValue = value; } /** * Get the attribute name. * @return Returns the name of the attribute that is acceptable. */ public String getAttributeName () { return (mAttribute); } /** * Set the attribute name. * @param name The name of the attribute to accept. */ public void setAttributeName (String name) { mAttribute = name; } /** * Get the attribute value. * @return Returns the value of the attribute that is acceptable. */ public String getAttributeValue () { return (mValue); } /** * Set the attribute value. * @param value The value of the attribute to accept. * If null, any tag with the attribute, * no matter what it's value is acceptable. */ public void setAttributeValue (String value) { mValue = value; } /** * Accept tags with a certain attribute. * @param node The node to check. * @return true if the node has the attribute * (and value if that is being checked too), false otherwise. */ public boolean accept (Node node) { Tag tag; Attribute attribute; boolean ret; ret = false; if (node instanceof Tag) { tag = (Tag)node; attribute = tag.getAttributeEx (mAttribute); ret = null != attribute; if (ret && (null != mValue)) ret = mValue.equals (attribute.getValue ()); } return (ret); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/NotFilter.java0000644000175000017500000000522410241624440025603 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/NotFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.5 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import org.htmlparser.Node; import org.htmlparser.NodeFilter; /** * Accepts all nodes not acceptable to it's predicate filter. */ public class NotFilter implements NodeFilter { /** * The filter to gainsay. */ protected NodeFilter mPredicate; /** * Creates a new instance of a NotFilter. * With no predicates, this would always return false * from {@link #accept}. * @see #setPredicate */ public NotFilter () { setPredicate (null); } /** * Creates a NotFilter that accepts nodes not acceptable to the predicate. * @param predicate The filter to consult. */ public NotFilter (NodeFilter predicate) { setPredicate (predicate); } /** * Get the predicate used by this NotFilter. * @return The predicate currently in use. */ public NodeFilter getPredicate () { return (mPredicate); } /** * Set the predicate for this NotFilter. * @param predicate The predidcate to use in {@link #accept}. */ public void setPredicate (NodeFilter predicate) { mPredicate = predicate; } // // NodeFilter interface // /** * Accept nodes that are not acceptable to the predicate filter. * @param node The node to check. * @return true if the node is not acceptable to the * predicate filter, false otherwise. */ public boolean accept (Node node) { return ((null != mPredicate) && !mPredicate.accept (node)); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/XorFilter.java0000644000175000017500000000707310432304476025625 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/XorFilter.java,v $ // $Author: ian_macfarlane $ // $Date: 2006/05/16 09:11:41 $ // $Revision: 1.1 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import org.htmlparser.Node; import org.htmlparser.NodeFilter; /** * Accepts nodes matching an odd number of its predicates filters (XOR operation). * For example, where it has two filters, it accepts only if and only if one of the two filters accepts the Node, but does not accept if both filters accept the Node. */ public class XorFilter implements NodeFilter { /** * The predicates that are to be xor'ed together; */ protected NodeFilter[] mPredicates; /** * Creates a new instance of an XorFilter. * With no predicates, this would always answer false * to {@link #accept}. * @see #setPredicates */ public XorFilter () { setPredicates (null); } /** * Creates an XorFilter that accepts nodes acceptable to either filter, but not both. * @param left One filter. * @param right The other filter. */ public XorFilter (NodeFilter left, NodeFilter right) { NodeFilter[] predicates; predicates = new NodeFilter[2]; predicates[0] = left; predicates[1] = right; setPredicates (predicates); } /** * Creates an XorFilter that accepts nodes acceptable an odd number of the given filters. * @param predicates The list of filters. */ public XorFilter (NodeFilter[] predicates) { setPredicates (predicates); } /** * Get the predicates used by this XorFilter. * @return The predicates currently in use. */ public NodeFilter[] getPredicates () { return (mPredicates); } /** * Set the predicates for this XorFilter. * @param predicates The list of predidcates to use in {@link #accept}. */ public void setPredicates (NodeFilter[] predicates) { if (null == predicates) predicates = new NodeFilter[0]; mPredicates = predicates; } // // NodeFilter interface // /** * Accept nodes that are acceptable to an odd number of its predicate filters. * @param node The node to check. * @return true if an odd number of the predicate filters find the node * is acceptable, false otherwise. */ public boolean accept (Node node) { int countTrue; countTrue = 0; for (int i = 0; i < mPredicates.length; i++) if (mPredicates[i].accept (node)) ++countTrue; return ((countTrue % 2) == 1); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/HasChildFilter.java0000644000175000017500000001175310241624440026526 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/HasChildFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.5 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.tags.CompositeTag; import org.htmlparser.util.NodeList; /** * This class accepts all tags that have a child acceptable to the filter. * It can be set to operate recursively, that is perform a scan down * through the node heirarchy in a breadth first traversal looking for any * descendant that matches the predicate filter (which stops the search). */ public class HasChildFilter implements NodeFilter { /** * The filter to apply to children. */ protected NodeFilter mChildFilter; /** * Performs a recursive search down the node heirarchy if true. */ protected boolean mRecursive; /** * Creates a new instance of a HasChildFilter. * With no child filter, this would always return false * from {@link #accept}. */ public HasChildFilter () { this (null); } /** * Creates a new instance of HasChildFilter that accepts nodes * with a direct child acceptable to the filter. * @param filter The filter to apply to the children. */ public HasChildFilter (NodeFilter filter) { this (filter, false); } /** * Creates a new instance of HasChildFilter that accepts nodes * with a child acceptable to the filter. * Of necessity, this applies only to composite tags, i.e. those that can * contain other nodes, for example <HTML></HTML>. * @param filter The filter to apply to children. * @param recursive If true, any enclosed node acceptable * to the given filter causes the node being tested to be accepted * (i.e. a recursive scan through the child nodes down the node * heirarchy is performed). */ public HasChildFilter (NodeFilter filter, boolean recursive) { setChildFilter (filter); setRecursive (recursive); } /** * Get the filter used by this HasParentFilter. * @return The filter to apply to parents. */ public NodeFilter getChildFilter () { return (mChildFilter); } /** * Set the filter for this HasParentFilter. * @param filter The filter to apply to parents in {@link #accept}. */ public void setChildFilter (NodeFilter filter) { mChildFilter = filter; } /** * Get the recusion setting for the filter. * @return Returns true if the filter is recursive * up the node heirarchy. */ public boolean getRecursive () { return (mRecursive); } /** * Sets whether the filter is recursive or not. * @param recursive The recursion setting for the filter. */ public void setRecursive (boolean recursive) { mRecursive = recursive; } /** * Accept tags with children acceptable to the filter. * @param node The node to check. * @return true if the node has an acceptable child, * false otherwise. */ public boolean accept (Node node) { CompositeTag tag; NodeList children; boolean ret; ret = false; if (node instanceof CompositeTag) { tag = (CompositeTag)node; children = tag.getChildren (); if (null != children) { for (int i = 0; !ret && i < children.size (); i++) if (getChildFilter ().accept (children.elementAt (i))) ret = true; // do recursion after all children are checked // to get breadth first traversal if (!ret && getRecursive ()) for (int i = 0; !ret && i < children.size (); i++) if (accept (children.elementAt (i))) ret = true; } } return (ret); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/CssSelectorNodeFilter.java0000644000175000017500000003045310241624440030104 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Rogers George // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/CssSelectorNodeFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.6 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Tag; import org.htmlparser.util.NodeList; /** * A NodeFilter that accepts nodes based on whether they match a CSS2 selector. * Refer to * http://www.w3.org/TR/REC-CSS2/selector.html for syntax. *

    * Todo: more thorough testing, any relevant pseudo-classes, css3 features */ public class CssSelectorNodeFilter implements NodeFilter { /** * Regular expression to split the selector into tokens. */ private static Pattern tokens = Pattern.compile("(" + "/\\*.*?\\*/" // comments + ") | (" + " \".*?[^\"]\"" // double quoted string + " | \'.*?[^\']\'" // single quoted string + " | \"\" | \'\' " // empty quoted string + ") | (" + " [\\~\\*\\$\\^]? = " // attrib-val relations + ") | (" + " [a-zA-Z_\\*](?:[a-zA-Z0-9_-]|\\\\.)* " // bare name + ") | \\s*(" + " [+>~\\s] " // combinators + ")\\s* | (" + " [\\.\\[\\]\\#\\:)(] " // class/id/attr/param delims + ") | (" + " [\\,] " // comma + ") | ( . )" // everything else (bogus) , Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.COMMENTS); /** * Comment token type. */ private static final int COMMENT = 1; /** * quoted string token type. */ private static final int QUOTEDSTRING = 2; /** * Relation token type. */ private static final int RELATION = 3; /** * Name token type. */ private static final int NAME = 4; /** * Combinator token type. */ private static final int COMBINATOR = 5; /** * Delimiter token type. */ private static final int DELIM = 6; /** * Comma token type. */ private static final int COMMA = 7; private NodeFilter therule; private Matcher m = null; private int tokentype = 0; private String token = null; /** * Create a Cascading Style Sheet node filter. * @param selector The selector expression. */ public CssSelectorNodeFilter(String selector) { m = tokens.matcher (selector); if (nextToken ()) therule = parse (); } /** * Accept nodes that match the selector expression. * @param node The node to check. * @return true if the node matches, * false otherwise. */ public boolean accept (Node node) { return (therule.accept (node)); } private boolean nextToken () { if (m != null && m.find ()) for (int i = 1; i < m.groupCount (); i++) if (null != m.group (i)) { tokentype = i; token = m.group (i); return true; } tokentype = 0; token = null; return (false); } private NodeFilter parse () { NodeFilter ret; ret = null; do { switch (tokentype) { case COMMENT: case NAME: case DELIM: if (ret == null) ret = parseSimple (); else ret = new AndFilter (ret, parseSimple ()); break; case COMBINATOR: switch (token.charAt (0)) { case '+': ret = new AdjacentFilter (ret); break; case '>': ret = new HasParentFilter (ret); break; default: // whitespace ret = new HasAncestorFilter (ret); } nextToken (); break; case COMMA: ret = new OrFilter (ret, parse ()); nextToken (); break; } } while (token != null); return (ret); } private NodeFilter parseSimple() { boolean done = false; NodeFilter ret = null; if (token != null) do { switch (tokentype) { case COMMENT: nextToken(); break; case NAME: if ("*".equals(token)) ret = new YesFilter(); else if (ret == null) ret = new TagNameFilter(unescape(token)); else ret = new AndFilter(ret, new TagNameFilter(unescape(token))); nextToken(); break; case DELIM: switch (token.charAt(0)) { case '.': nextToken(); if (tokentype != NAME) throw new IllegalArgumentException("Syntax error at " + token); if (ret == null) ret = new HasAttributeFilter("class", unescape(token)); else ret = new AndFilter(ret, new HasAttributeFilter("class", unescape(token))); break; case '#': nextToken(); if (tokentype != NAME) throw new IllegalArgumentException("Syntax error at " + token); if (ret == null) ret = new HasAttributeFilter("id", unescape(token)); else ret = new AndFilter(ret, new HasAttributeFilter("id", unescape(token))); break; case ':': nextToken(); if (ret == null) ret = parsePseudoClass(); else ret = new AndFilter(ret, parsePseudoClass()); break; case '[': nextToken(); if (ret == null) ret = parseAttributeExp(); else ret = new AndFilter(ret, parseAttributeExp()); break; } nextToken(); break; default: done = true; } } while (!done && token != null); return ret; } private NodeFilter parsePseudoClass() { throw new IllegalArgumentException("pseudoclasses not implemented yet"); } private NodeFilter parseAttributeExp() { NodeFilter ret = null; if (tokentype == NAME) { String attrib = token; nextToken(); if ("]".equals(token)) ret = new HasAttributeFilter(unescape(attrib)); else if (tokentype == RELATION) { String val = null, rel = token; nextToken(); if (tokentype == QUOTEDSTRING) val = unescape(token.substring(1, token.length() - 1)); else if (tokentype == NAME) val = unescape(token); if ("~=".equals(rel) && val != null) ret = new AttribMatchFilter(unescape(attrib), "\\b" + val.replaceAll("([^a-zA-Z0-9])", "\\\\$1") + "\\b"); else if ("=".equals(rel) && val != null) ret = new HasAttributeFilter(attrib, val); } } if (ret == null) throw new IllegalArgumentException("Syntax error at " + token + tokentype); nextToken(); return ret; } /** * Replace escape sequences in a string. * @param escaped The string to examine. * @return The argument with escape sequences replaced by their * equivalent character. */ public static String unescape(String escaped) { StringBuffer result = new StringBuffer(escaped.length()); Matcher m = Pattern.compile("\\\\(?:([a-fA-F0-9]{2,6})|(.))").matcher( escaped); while (m.find()) { if (m.group(1) != null) m.appendReplacement(result, String.valueOf((char)Integer.parseInt(m.group(1), 16))); else if (m.group(2) != null) m.appendReplacement(result, m.group(2)); } m.appendTail(result); return result.toString(); } private static class HasAncestorFilter implements NodeFilter { private NodeFilter atest; public HasAncestorFilter(NodeFilter n) { atest = n; } public boolean accept(Node n) { while (n != null) { n = n.getParent(); if (atest.accept(n)) return true; } return false; } } private static class AdjacentFilter implements NodeFilter { private NodeFilter sibtest; public AdjacentFilter(NodeFilter n) { sibtest = n; } public boolean accept(Node n) { if (n.getParent() != null) { NodeList l = n.getParent().getChildren(); for (int i = 0; i < l.size(); i++) if (l.elementAt(i) == n && i > 0) return (sibtest.accept(l.elementAt(i - 1))); } return false; } } private static class YesFilter implements NodeFilter { public boolean accept(Node n) {return true;} } private static class AttribMatchFilter implements NodeFilter { private Pattern rel; private String attrib; public AttribMatchFilter(String attrib, String regex) { rel = Pattern.compile(regex); this.attrib = attrib; } public boolean accept(Node node) { if (node instanceof Tag && ((Tag)node).getAttribute(attrib) != null) if (rel != null && !rel.matcher(((Tag)node).getAttribute(attrib)).find()) return false; else return true; else return false; } } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/LinkRegexFilter.java0000644000175000017500000000610010313366354026734 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 John Derrick // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/LinkRegexFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/09/18 23:40:44 $ // $Revision: 1.4 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.tags.LinkTag; /** * This class accepts tags of class LinkTag that contain a link matching a given * regex pattern. Use this filter to extract LinkTag nodes with URLs that match * the desired regex pattern. */ public class LinkRegexFilter implements NodeFilter { /** * The regular expression to use on the link. */ protected Pattern mRegex; /** * Creates a LinkRegexFilter that accepts LinkTag nodes containing * a URL that matches the supplied regex pattern. * The match is case insensitive. * @param regexPattern The pattern to match. */ public LinkRegexFilter (String regexPattern) { this (regexPattern, true); } /** * Creates a LinkRegexFilter that accepts LinkTag nodes containing * a URL that matches the supplied regex pattern. * @param regexPattern The regex pattern to match. * @param caseSensitive Specifies case sensitivity for the matching process. */ public LinkRegexFilter (String regexPattern, boolean caseSensitive) { if (caseSensitive) mRegex = Pattern.compile (regexPattern); else mRegex = Pattern.compile (regexPattern, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE); } /** * Accept nodes that are a LinkTag and have a URL * that matches the regex pattern supplied in the constructor. * @param node The node to check. * @return true if the node is a link with the pattern. */ public boolean accept (Node node) { boolean ret; ret = false; if (LinkTag.class.isAssignableFrom (node.getClass ())) { String link = ((LinkTag)node).getLink (); Matcher matcher = mRegex.matcher (link); ret = matcher.find (); } return (ret); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/HasSiblingFilter.java0000644000175000017500000000663510241624440027075 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/HasSiblingFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.3 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Tag; import org.htmlparser.util.NodeList; /** * This class accepts all tags that have a sibling acceptable to another filter. * End tags are not considered to be siblings of any tag. */ public class HasSiblingFilter implements NodeFilter { /** * The filter to apply to the sibling. */ protected NodeFilter mSiblingFilter; /** * Creates a new instance of HasSiblingFilter. * With no sibling filter, this would always return false * from {@link #accept}. */ public HasSiblingFilter () { this (null); } /** * Creates a new instance of HasSiblingFilter that accepts nodes * with sibling acceptable to the filter. * @param filter The filter to apply to the sibling. */ public HasSiblingFilter (NodeFilter filter) { setSiblingFilter (filter); } /** * Get the filter used by this HasSiblingFilter. * @return The filter to apply to siblings. */ public NodeFilter getSiblingFilter () { return (mSiblingFilter); } /** * Set the filter for this HasSiblingFilter. * @param filter The filter to apply to siblings in {@link #accept}. */ public void setSiblingFilter (NodeFilter filter) { mSiblingFilter = filter; } /** * Accept tags with a sibling acceptable to the filter. * @param node The node to check. * @return true if the node has an acceptable sibling, * false otherwise. */ public boolean accept (Node node) { Node parent; NodeList siblings; int count; boolean ret; ret = false; if (!(node instanceof Tag) || !((Tag)node).isEndTag ()) { parent = node.getParent (); if (null != parent) { siblings = parent.getChildren (); if (null != siblings) { count = siblings.size (); for (int i = 0; !ret && (i < count); i++) if (getSiblingFilter ().accept (siblings.elementAt (i))) ret = true; } } } return (ret); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/RegexFilter.java0000644000175000017500000001524610241624440026122 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/RegexFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.4 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Text; /** * This filter accepts all string nodes matching a regular expression. * Because this searches {@link org.htmlparser.Text Text} nodes. it is * only useful for finding small fragments of text, where it is * unlikely to be broken up by a tag. To find large fragments of text * you should convert the page to plain text with something like the * {@link org.htmlparser.beans.StringBean StringBean} and then apply * the regular expression. *

    * For example, to look for dates use: *

     *   (19|20)\d\d([- \\/.](0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01]))?
     * 
    * as in: *
     * Parser parser = new Parser ("http://cbc.ca");
     * RegexFilter filter = new RegexFilter ("(19|20)\\d\\d([- \\\\/.](0[1-9]|1[012])[- \\\\/.](0[1-9]|[12][0-9]|3[01]))?");
     * NodeIterator iterator = parser.extractAllNodesThatMatch (filter).elements ();
     * 
    * which matches a date in yyyy-mm-dd format between 1900-01-01 and 2099-12-31, * with a choice of five separators, either a dash, a space, either kind of * slash or a period. * The year is matched by (19|20)\d\d which uses alternation to allow the * either 19 or 20 as the first two digits. The round brackets are mandatory. * The month is matched by 0[1-9]|1[012], again enclosed by round brackets * to keep the two options together. By using character classes, the first * option matches a number between 01 and 09, and the second * matches 10, 11 or 12. * The last part of the regex consists of three options. The first matches * the numbers 01 through 09, the second 10 through 29, and the third matches 30 or 31. * The day and month are optional, but must occur together because of the ()? * bracketing after the year. */ public class RegexFilter implements NodeFilter { /** * Use match() matching strategy. */ public static final int MATCH = 1; /** * Use lookingAt() match strategy. */ public static final int LOOKINGAT = 2; /** * Use find() match strategy. */ public static final int FIND = 3; /** * The regular expression to search for. */ protected String mPatternString; /** * The compiled regular expression to search for. */ protected Pattern mPattern; /** * The match strategy. * @see #RegexFilter(String, int) */ protected int mStrategy; /** * Creates a new instance of RegexFilter that accepts string nodes matching * the regular expression ".*" using the FIND strategy. */ public RegexFilter () { this (".*", FIND); } /** * Creates a new instance of RegexFilter that accepts string nodes matching * a regular expression using the FIND strategy. * @param pattern The pattern to search for. */ public RegexFilter (String pattern) { this (pattern, FIND); } /** * Creates a new instance of RegexFilter that accepts string nodes matching * a regular expression. * @param pattern The pattern to search for. * @param strategy The type of match: *
      *
    1. {@link #MATCH} use matches() method: attempts to match * the entire input sequence against the pattern
    2. *
    3. {@link #LOOKINGAT} use lookingAt() method: attempts to match * the input sequence, starting at the beginning, against the pattern
    4. *
    5. {@link #FIND} use find() method: scans the input sequence looking * for the next subsequence that matches the pattern
    6. *
    */ public RegexFilter (String pattern, int strategy) { setPattern (pattern); setStrategy (strategy); } /** * Get the search pattern. * @return Returns the pattern. */ public String getPattern () { return (mPatternString); } /** * Set the search pattern. * @param pattern The pattern to set. */ public void setPattern (String pattern) { mPatternString = pattern; mPattern = Pattern.compile (pattern); } /** * Get the search strategy. * @return Returns the strategy. */ public int getStrategy () { return (mStrategy); } /** * Set the search pattern. * @param strategy The strategy to use. One of MATCH, LOOKINGAT or FIND. */ public void setStrategy (int strategy) { if ((strategy != MATCH) && (strategy != LOOKINGAT) && (strategy != FIND)) throw new IllegalArgumentException ("illegal strategy (" + strategy + ")"); mStrategy = strategy; } /** * Accept string nodes that match the regular expression. * @param node The node to check. * @return true if the regular expression matches the * text of the node, false otherwise. */ public boolean accept (Node node) { String string; Matcher matcher; boolean ret; ret = false; if (node instanceof Text) { string = ((Text)node).getText (); matcher = mPattern.matcher (string); switch (mStrategy) { case MATCH: ret = matcher.matches (); break; case LOOKINGAT: ret = matcher.lookingAt (); break; case FIND: default: ret = matcher.find (); break; } } return (ret); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/StringFilter.java0000644000175000017500000001324710241624440026315 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/StringFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.6 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import java.util.Locale; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Text; /** * This class accepts all string nodes containing the given string. * This is a fairly simplistic filter, so for more sophisticated * string matching, for example newline and whitespace handling, * use a {@link RegexFilter} instead. */ public class StringFilter implements NodeFilter { /** * The string to search for. */ protected String mPattern; /** * The string to really search for (converted to uppercase if necessary). */ protected String mUpperPattern; /** * Case sensitive toggle. * If true strings are compared with case sensitivity. */ protected boolean mCaseSensitive; /** * The locale to use converting to uppercase in case insensitive searches. */ protected Locale mLocale; /** * Creates a new instance of StringFilter that accepts all string nodes. */ public StringFilter () { this ("", false); } /** * Creates a StringFilter that accepts text nodes containing a string. * The comparison is case insensitive, with conversions done using * the default Locale. * @param pattern The pattern to search for. */ public StringFilter (String pattern) { this (pattern, false); } /** * Creates a StringFilter that accepts text nodes containing a string. * @param pattern The pattern to search for. * @param sensitive If true, comparisons are performed * respecting case, with conversions done using the default * Locale. */ public StringFilter (String pattern, boolean sensitive) { this (pattern, sensitive, null); } /** * Creates a StringFilter that accepts text nodes containing a string. * @param pattern The pattern to search for. * @param sensitive If true, comparisons are performed * respecting case. * @param locale The locale to use when converting to uppercase. * If null, the default Locale is used. */ public StringFilter (String pattern, boolean sensitive, Locale locale) { mPattern = pattern; mCaseSensitive = sensitive; mLocale = (null == locale) ? Locale.getDefault () : locale; setUpperPattern (); } // // protected methods // /** * Set the real (upper case) comparison string. */ protected void setUpperPattern () { if (getCaseSensitive ()) mUpperPattern = getPattern (); else mUpperPattern = getPattern ().toUpperCase (getLocale ()); } /** * Get the case sensitivity. * @return Returns the case sensitivity. */ public boolean getCaseSensitive () { return (mCaseSensitive); } /** * Set case sensitivity on or off. * @param sensitive If false searches for the * string are case insensitive. */ public void setCaseSensitive (boolean sensitive) { mCaseSensitive = sensitive; setUpperPattern (); } /** * Get the locale for uppercase conversion. * @return Returns the locale. */ public Locale getLocale () { return (mLocale); } /** * Set the locale for uppercase conversion. * @param locale The locale to set. */ public void setLocale (Locale locale) { mLocale = locale; setUpperPattern (); } /** * Get the search pattern. * @return Returns the pattern. */ public String getPattern () { return (mPattern); } /** * Set the search pattern. * @param pattern The pattern to set. */ public void setPattern (String pattern) { mPattern = pattern; setUpperPattern (); } // // NodeFilter interface // /** * Accept string nodes that contain the string. * @param node The node to check. * @return true if node is a {@link Text} node * and contains the pattern string, false otherwise. */ public boolean accept (Node node) { String string; boolean ret; ret = false; if (node instanceof Text) { string = ((Text)node).getText (); if (!getCaseSensitive ()) string = string.toUpperCase (getLocale ()); ret = (-1 != string.indexOf (mUpperPattern)); } return (ret); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/LinkStringFilter.java0000644000175000017500000000620110241624440027123 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2005 John Derrick // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/LinkStringFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.3 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.tags.LinkTag; /** * This class accepts tags of class LinkTag that contain a link matching a given * pattern string. Use this filter to extract LinkTag nodes with URLs containing * the desired string. */ public class LinkStringFilter implements NodeFilter { /** * The pattern to search for in the link. */ protected String mPattern; /** * Flag indicating case sensitive/insensitive search. */ protected boolean mCaseSensitive; /** * Creates a LinkStringFilter that accepts LinkTag nodes containing * a URL that matches the supplied pattern. * The match is case insensitive. * @param pattern The pattern to match. */ public LinkStringFilter (String pattern) { this (pattern, false); } /** * Creates a LinkStringFilter that accepts LinkTag nodes containing * a URL that matches the supplied pattern. * @param pattern The pattern to match. * @param caseSensitive Specifies case sensitivity for the matching process. */ public LinkStringFilter (String pattern, boolean caseSensitive) { mPattern = pattern; mCaseSensitive = caseSensitive; } /** * Accept nodes that are a LinkTag and * have a URL that matches the pattern supplied in the constructor. * @param node The node to check. * @return true if the node is a link with the pattern. */ public boolean accept (Node node) { boolean ret; ret = false; if (LinkTag.class.isAssignableFrom (node.getClass ())) { String link = ((LinkTag)node).getLink (); if (mCaseSensitive) { if (link.indexOf (mPattern) > -1) ret = true; } else { if (link.toUpperCase ().indexOf (mPattern.toUpperCase ()) > -1) ret = true; } } return (ret); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/OrFilter.java0000644000175000017500000000651010432305000025410 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/OrFilter.java,v $ // $Author: ian_macfarlane $ // $Date: 2006/05/16 09:14:55 $ // $Revision: 1.6 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import org.htmlparser.Node; import org.htmlparser.NodeFilter; /** * Accepts nodes matching any of its predicates filters (OR operation). */ public class OrFilter implements NodeFilter { /** * The predicates that are to be or'ed together; */ protected NodeFilter[] mPredicates; /** * Creates a new instance of an OrFilter. * With no predicates, this would always answer false * to {@link #accept}. * @see #setPredicates */ public OrFilter () { setPredicates (null); } /** * Creates an OrFilter that accepts nodes acceptable to either filter. * @param left One filter. * @param right The other filter. */ public OrFilter (NodeFilter left, NodeFilter right) { NodeFilter[] predicates; predicates = new NodeFilter[2]; predicates[0] = left; predicates[1] = right; setPredicates (predicates); } /** * Creates an OrFilter that accepts nodes acceptable to any of the given filters. * @param predicates The list of filters. */ public OrFilter (NodeFilter[] predicates) { setPredicates (predicates); } /** * Get the predicates used by this OrFilter. * @return The predicates currently in use. */ public NodeFilter[] getPredicates () { return (mPredicates); } /** * Set the predicates for this OrFilter. * @param predicates The list of predidcates to use in {@link #accept}. */ public void setPredicates (NodeFilter[] predicates) { if (null == predicates) predicates = new NodeFilter[0]; mPredicates = predicates; } // // NodeFilter interface // /** * Accept nodes that are acceptable to any of its predicate filters. * @param node The node to check. * @return true if any of the predicate filters find the node * is acceptable, false otherwise. */ public boolean accept (Node node) { boolean ret; ret = false; for (int i = 0; !ret && (i < mPredicates.length); i++) if (mPredicates[i].accept (node)) ret = true; return (ret); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/TagNameFilter.java0000644000175000017500000000527010241624440026360 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/TagNameFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.6 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import java.util.Locale; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Tag; /** * This class accepts all tags matching the tag name. */ public class TagNameFilter implements NodeFilter { /** * The tag name to match. */ protected String mName; /** * Creates a new instance of TagNameFilter. * With no name, this would always return false * from {@link #accept}. */ public TagNameFilter () { this (""); } /** * Creates a TagNameFilter that accepts tags with the given name. * @param name The tag name to match. */ public TagNameFilter (String name) { mName = name.toUpperCase (Locale.ENGLISH); } /** * Get the tag name. * @return Returns the name of acceptable tags. */ public String getName () { return (mName); } /** * Set the tag name. * @param name The name of the tag to accept. */ public void setName (String name) { mName = name; } /** * Accept nodes that are tags and have a matching tag name. * This discards non-tag nodes and end tags. * The end tags are available on the enclosing non-end tag. * @param node The node to check. * @return true if the tag name matches, * false otherwise. */ public boolean accept (Node node) { return ((node instanceof Tag) && !((Tag)node).isEndTag () && ((Tag)node).getTagName ().equals (mName)); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/HasParentFilter.java0000644000175000017500000001115110241624440026724 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/HasParentFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.8 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Tag; /** * This class accepts all tags that have a parent acceptable to another filter. * It can be set to operate recursively, that is perform a scan up the node * heirarchy looking for any ancestor that matches the predicate filter. * End tags are not considered to be children of any tag. */ public class HasParentFilter implements NodeFilter { /** * The filter to apply to the parent. */ protected NodeFilter mParentFilter; /** * Performs a recursive search up the node heirarchy if true. */ protected boolean mRecursive; /** * Creates a new instance of HasParentFilter. * With no parent filter, this would always return false * from {@link #accept}. */ public HasParentFilter () { this (null); } /** * Creates a new instance of HasParentFilter that accepts nodes with * the direct parent acceptable to the filter. * @param filter The filter to apply to the parent. */ public HasParentFilter (NodeFilter filter) { this (filter, false); } /** * Creates a new instance of HasParentFilter that accepts nodes with * a parent acceptable to the filter. * @param filter The filter to apply to the parent. * @param recursive If true, any enclosing node acceptable * to the given filter causes the node being tested to be accepted * (i.e. a recursive scan through the parent nodes up the node * heirarchy is performed). */ public HasParentFilter (NodeFilter filter, boolean recursive) { setParentFilter (filter); setRecursive (recursive); } /** * Get the filter used by this HasParentFilter. * @return The filter to apply to parents. */ public NodeFilter getParentFilter () { return (mParentFilter); } /** * Set the filter for this HasParentFilter. * @param filter The filter to apply to parents in {@link #accept}. */ public void setParentFilter (NodeFilter filter) { mParentFilter = filter; } /** * Get the recusion setting for the filter. * @return Returns true if the filter is recursive * up the node heirarchy. */ public boolean getRecursive () { return (mRecursive); } /** * Sets whether the filter is recursive or not. * @param recursive The recursion setting for the filter. */ public void setRecursive (boolean recursive) { mRecursive = recursive; } /** * Accept tags with parent acceptable to the filter. * If recursion is enabled, each parent in turn up to * the topmost enclosing node is checked. * Recursion only proceeds while no parent satisfies the * filter. * @param node The node to check. * @return true if the node has an acceptable parent, * false otherwise. */ public boolean accept (Node node) { Node parent; boolean ret; ret = false; if (!(node instanceof Tag) || !((Tag)node).isEndTag ()) { parent = node.getParent (); if ((null != parent) && (null != getParentFilter ())) { ret = getParentFilter ().accept (parent); if (!ret && getRecursive ()) ret = accept (parent); } } return (ret); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/NodeClassFilter.java0000644000175000017500000000461310241624440026717 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/NodeClassFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.4 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import org.htmlparser.Node; import org.htmlparser.NodeFilter; /** * This class accepts all tags of a given class. */ public class NodeClassFilter implements NodeFilter { /** * The class to match. */ protected Class mClass; /** * Creates a NodeClassFilter that accepts Html tags. */ public NodeClassFilter () { this (org.htmlparser.tags.Html.class); } /** * Creates a NodeClassFilter that accepts tags of the given class. * @param cls The class to match. */ public NodeClassFilter (Class cls) { mClass = cls; } /** * Get the class to match. * @return Returns the class. */ public Class getMatchClass () { return (mClass); } /** * Set the class to match. * @param cls The node class to match. */ public void setMatchClass (Class cls) { mClass = cls; } /** * Accept nodes that are assignable from the class provided in * the constructor. * @param node The node to check. * @return true if the node is the right class, * false otherwise. */ public boolean accept (Node node) { return ((null != mClass) && mClass.isAssignableFrom (node.getClass ())); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/IsEqualFilter.java0000644000175000017500000000342310241624440026405 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/IsEqualFilter.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/15 11:49:04 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import org.htmlparser.Node; import org.htmlparser.NodeFilter; /** * This class accepts only one specific node. */ public class IsEqualFilter implements NodeFilter { /** * The node to match. */ protected Node mNode; /** * Creates a new IsEqualFilter that accepts only the node provided. * @param node The node to match. */ public IsEqualFilter (Node node) { mNode = node; } /** * Accept the node. * @param node The node to check. * @return false unless node is the one and only. */ public boolean accept (Node node) { return (mNode == node); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/package.html0000644000175000017500000000354510020116454025313 0ustar tiagotiago Filters Package The filters package contains example filters to select only desired nodes. For example, to display tags having the "id" attribute, you could use:
    Parser parser = new Parser ("http://yadda");
    parser.parse (new HasAttributeFilter ("id"));
    
    These filters can be combined to yield powerful extraction capabilities. For example, to get a list of links where the contents is an image, you could use:
    NodeList list = new NodeList ();
    NodeFilter filter =
        new AndFilter (
            new TagNameFilter ("A"),
            new HasChildFilter (
                new TagNameFilter ("IMG")));
    for (NodeIterator e = parser.elements (); e.hasMoreNodes (); )
        e.nextNode ().collectInto (list, filter);
    
    libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/filters/AndFilter.java0000644000175000017500000000652310432305000025536 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2003 Derrick Oswald // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/AndFilter.java,v $ // $Author: ian_macfarlane $ // $Date: 2006/05/16 09:14:55 $ // $Revision: 1.6 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.filters; import org.htmlparser.Node; import org.htmlparser.NodeFilter; /** * Accepts nodes matching all of its predicate filters (AND operation). */ public class AndFilter implements NodeFilter { /** * The predicates that are to be and'ed together; */ protected NodeFilter[] mPredicates; /** * Creates a new instance of an AndFilter. * With no predicates, this would always answer true * to {@link #accept}. * @see #setPredicates */ public AndFilter () { setPredicates (null); } /** * Creates an AndFilter that accepts nodes acceptable to both filters. * @param left One filter. * @param right The other filter. */ public AndFilter (NodeFilter left, NodeFilter right) { NodeFilter[] predicates; predicates = new NodeFilter[2]; predicates[0] = left; predicates[1] = right; setPredicates (predicates); } /** * Creates an AndFilter that accepts nodes acceptable to all given filters. * @param predicates The list of filters. */ public AndFilter (NodeFilter[] predicates) { setPredicates (predicates); } /** * Get the predicates used by this AndFilter. * @return The predicates currently in use. */ public NodeFilter[] getPredicates () { return (mPredicates); } /** * Set the predicates for this AndFilter. * @param predicates The list of predidcates to use in {@link #accept}. */ public void setPredicates (NodeFilter[] predicates) { if (null == predicates) predicates = new NodeFilter[0]; mPredicates = predicates; } // // NodeFilter interface // /** * Accept nodes that are acceptable to all of its predicate filters. * @param node The node to check. * @return true if all the predicate filters find the node * is acceptable, false otherwise. */ public boolean accept (Node node) { boolean ret; ret = true; for (int i = 0; ret && (i < mPredicates.length); i++) if (!mPredicates[i].accept (node)) ret = false; return (ret); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/0000755000175000017500000000000010442554076022327 5ustar tiagotiagolibhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/Html.java0000644000175000017500000000306507775270450024110 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/Html.java,v $ // $Author: derrickoswald $ // $Date: 2004/01/02 16:24:55 $ // $Revision: 1.33 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; /** * A html tag. */ public class Html extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"HTML"}; /** * Create a new html tag. */ public Html () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/FrameTag.java0000644000175000017500000000554010226323276024660 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/FrameTag.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/10 23:20:45 $ // $Revision: 1.38 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import org.htmlparser.nodes.TagNode; /** * Identifies a frame tag */ public class FrameTag extends TagNode { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"FRAME"}; /** * Create a new frame tag. */ public FrameTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Returns the location of the frame. * @return The contents of the SRC attribute converted to an absolute URL. */ public String getFrameLocation () { String ret; ret = getAttribute ("SRC"); if (null == ret) ret = ""; else if (null != getPage ()) ret = getPage ().getAbsoluteURL (ret); return (ret); } /** * Sets the location of the frame. * @param url The new frame location. */ public void setFrameLocation (String url) { setAttribute ("SRC", url); } /** * Get the NAME attribute, if any. * @return The value of the NAME attribute, * or null if the attribute doesn't exist. */ public String getFrameName() { return (getAttribute ("NAME")); } /** * Return a string representation of the contents of this FRAME tag suitable for debugging. * @return A string with this tag's contents. */ public String toString() { return "FRAME TAG : Frame " +getFrameName() + " at "+getFrameLocation()+"; begins at : "+getStartPosition ()+"; ends at : "+getEndPosition (); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/ParagraphTag.java0000644000175000017500000000504510331415564025532 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/ParagraphTag.java,v $ // $Author: ian_macfarlane $ // $Date: 2005/10/31 16:26:11 $ // $Revision: 1.1 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; /** * A paragraph (p) tag. */ public class ParagraphTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"P"}; /** * The set of tag names that indicate the end of this tag. */ private static final String[] mEnders = new String[] {"ADDRESS", "BLOCKQUOTE", "CENTER", "DD", "DIR", "DIV", "DL", "DT", "FIELDSET", "FORM", "H1", "H2", "H3", "H4", "H5", "H6", "HR", "ISINDEX", "LI", "MENU", "NOFRAMES", "OL", "P", "PARAM", "PRE", "UL"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"BODY", "HTML"}; /** * Create a new p tag. */ public ParagraphTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of tag names that cause this tag to finish. * @return The names of following tags that stop further scanning. */ public String[] getEnders () { return (mEnders); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/FrameSetTag.java0000644000175000017500000001014110226323276025325 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/FrameSetTag.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/10 23:20:45 $ // $Revision: 1.37 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import java.util.Locale; import org.htmlparser.Node; import org.htmlparser.util.NodeList; import org.htmlparser.util.SimpleNodeIterator; /** * Identifies an frame set tag. */ public class FrameSetTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"FRAMESET"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"HTML"}; /** * Create a new frame set tag. */ public FrameSetTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } /** * Return a string representation of the contents of this FRAMESET tag suitable for debugging. * @return A string with this tag's contents. */ public String toString() { return "FRAMESET TAG : begins at : "+getStartPosition ()+"; ends at : "+getEndPosition (); } /** * Returns the frames. * @return The children of this tag. */ public NodeList getFrames() { return (getChildren()); } /** * Gets a frame by name. * Names are checked without case sensitivity and conversion to uppercase * is performed with an English locale. * @param name The name of the frame to retrieve. * @return The specified frame or null if it wasn't found. */ public FrameTag getFrame (String name) { return (getFrame (name, Locale.ENGLISH)); } /** * Gets a frame by name. * Names are checked without case sensitivity and conversion to uppercase * is performed with the locale provided. * @param name The name of the frame to retrieve. * @param locale The locale to use when converting to uppercase. * @return The specified frame or null if it wasn't found. */ public FrameTag getFrame (String name, Locale locale) { Node node; FrameTag ret; ret = null; name = name.toUpperCase (locale); for (SimpleNodeIterator e = getFrames ().elements (); e.hasMoreNodes () && (null == ret); ) { node = e.nextNode(); if (node instanceof FrameTag) { ret = (FrameTag)node; if (!ret.getFrameName ().toUpperCase (locale).equals (name)) ret = null; } } return (ret); } /** * Sets the frames (children of this tag). * @param frames The frames to set */ public void setFrames(NodeList frames) { setChildren (frames); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/Bullet.java0000644000175000017500000000430107775270446024432 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/Bullet.java,v $ // $Author: derrickoswald $ // $Date: 2004/01/02 16:24:54 $ // $Revision: 1.21 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; /** * A bullet tag. */ public class Bullet extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"LI"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"UL", "OL", "BODY", "HTML"}; /** * Create a new bullet tag. */ public Bullet () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of tag names that cause this tag to finish. * @return The names of following tags that stop further scanning. */ public String[] getEnders () { return (mIds); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/Span.java0000644000175000017500000000306507775270450024105 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/Span.java,v $ // $Author: derrickoswald $ // $Date: 2004/01/02 16:24:55 $ // $Revision: 1.35 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; /** * A span tag. */ public class Span extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"SPAN"}; /** * Create a new span tag. */ public Span () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/ProcessingInstructionTag.java0000644000175000017500000000432310407253046030200 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/ProcessingInstructionTag.java,v $ // $Author: derrickoswald $ // $Date: 2006/03/19 15:01:25 $ // $Revision: 1.1 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import org.htmlparser.nodes.TagNode; /** * The XML processing instructions like <?xml ... ?> can be identified by this class. */ public class ProcessingInstructionTag extends TagNode { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"?"}; /** * Create a new processing instruction tag. */ public ProcessingInstructionTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Returns a string representation of this processing instruction suitable for debugging. * @return A string representing this tag. */ public String toString() { String guts = toHtml(); guts = guts.substring (1, guts.length () - 2); return "Processing Instruction : "+guts+"; begins at : "+getStartPosition ()+"; ends at : "+getEndPosition (); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/LabelTag.java0000644000175000017500000000435410226323276024647 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Dhaval Udani // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/LabelTag.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/10 23:20:45 $ // $Revision: 1.36 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; /** * A label tag. */ public class LabelTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"LABEL"}; /** * Create a new label tag. */ public LabelTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of tag names that cause this tag to finish. * @return The names of following tags that stop further scanning. */ public String[] getEnders () { return (mIds); } /** * Returns the text contained inside this label tag. * @return The textual contents between the {@.html } pair. */ public String getLabel() { return toPlainTextString(); } /** * Returns a string representation of this label tag suitable for debugging. * @return A string representing this label. */ public String toString() { return "LABEL: "+ getLabel(); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/DefinitionListBullet.java0000644000175000017500000000441510331415564027265 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/DefinitionListBullet.java,v $ // $Author: ian_macfarlane $ // $Date: 2005/10/31 16:26:11 $ // $Revision: 1.1 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; /** * A definition list bullet tag (either DD or DT). */ public class DefinitionListBullet extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"DD", "DT"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"DL", "BODY", "HTML"}; /** * Create a new bullet tag. */ public DefinitionListBullet () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of tag names that cause this tag to finish. * @return The names of following tags that stop further scanning. */ public String[] getEnders () { return (mIds); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/InputTag.java0000644000175000017500000000317410071121412024710 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/InputTag.java,v $ // $Author: derrickoswald $ // $Date: 2004/07/02 00:49:29 $ // $Revision: 1.36 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import org.htmlparser.nodes.TagNode; /** * An input tag in a form. */ public class InputTag extends TagNode { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"INPUT"}; /** * Create a new input tag. */ public InputTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/BulletList.java0000644000175000017500000000405607775270446025275 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/BulletList.java,v $ // $Author: derrickoswald $ // $Date: 2004/01/02 16:24:54 $ // $Revision: 1.21 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; /** * A bullet list tag. * Either <UL> or <OL>. */ public class BulletList extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"UL", "OL"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"BODY", "HTML"}; /** * Create a new bullet list (ordered or unordered) tag. */ public BulletList () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/AppletTag.java0000644000175000017500000002375410071121410025042 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/AppletTag.java,v $ // $Author: derrickoswald $ // $Date: 2004/07/02 00:49:28 $ // $Revision: 1.41 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import java.util.Enumeration; import java.util.Hashtable; import java.util.Vector; import org.htmlparser.Attribute; import org.htmlparser.Node; import org.htmlparser.Tag; import org.htmlparser.Text; import org.htmlparser.nodes.TagNode; import org.htmlparser.util.NodeList; import org.htmlparser.util.SimpleNodeIterator; /** * AppletTag represents an <Applet> tag. * It extends a basic tag by providing accessors to the class, codebase, * archive and parameters. */ public class AppletTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"APPLET"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"BODY", "HTML"}; /** * Create a new applet tag. */ public AppletTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } /** * Extract the applet PARAM tags from the child list. * @return The list of applet parameters (keys and values are String objects). */ public Hashtable createAppletParamsTable () { NodeList kids; Node node; Tag tag; String paramName; String paramValue; Hashtable ret; ret = new Hashtable (); kids = getChildren (); if (null != kids) for (int i = 0; i < kids.size (); i++) { node = children.elementAt(i); if (node instanceof Tag) { tag = (Tag)node; if (tag.getTagName().equals ("PARAM")) { paramName = tag.getAttribute ("NAME"); if (null != paramName && 0 != paramName.length ()) { paramValue = tag.getAttribute ("VALUE"); ret.put (paramName,paramValue); } } } } return (ret); } /** * Get the class name of the applet. * @return The value of the CODE attribute. */ public String getAppletClass () { return (getAttribute ("CODE")); } /** * Get the applet parameters. * @return The list of parameter values (keys and values are String objects). */ public Hashtable getAppletParams () { return (createAppletParamsTable ()); } /** * Get the jar file of the applet. * @return The value of the ARCHIVE attribute, or null if it wasn't specified. */ public String getArchive() { return (getAttribute ("ARCHIVE")); } /** * Get the code base of the applet. * @return The value of the CODEBASE attribute, or null if it wasn't specified. */ public String getCodeBase() { return (getAttribute ("CODEBASE")); } /** * Get the PARAM tag with the given name. * NOTE: This was called (erroneously) getAttribute() in previous versions. * @param key The applet parameter name to get. * @return The value of the parameter or null if there is no parameter of that name. */ public String getParameter (String key) { return ((String)(getAppletParams ().get (key))); } /** * Get an enumeration over the (String) parameter names. * @return An enumeration of the PARAM tag NAME attributes. */ public Enumeration getParameterNames () { return (getAppletParams ().keys ()); } /** * Set the CODE attribute. * @param newAppletClass The new applet class. */ public void setAppletClass (String newAppletClass) { setAttribute ("CODE", newAppletClass); } /** * Set the enclosed PARM children. * @param newAppletParams The new parameters. */ public void setAppletParams (Hashtable newAppletParams) { NodeList kids; Node node; Tag tag; String paramName; String paramValue; Vector attributes; Text string; kids = getChildren (); if (null == kids) kids = new NodeList (); else // erase appletParams from kids for (int i = 0; i < kids.size (); ) { node = kids.elementAt (i); if (node instanceof Tag) if (((Tag)node).getTagName ().equals ("PARAM")) { kids.remove (i); // remove whitespace too if (i < kids.size ()) { node = kids.elementAt (i); if (node instanceof Text) { string = (Text)node; if (0 == string.getText ().trim ().length ()) kids.remove (i); } } } else i++; else i++; } // add newAppletParams to kids for (Enumeration e = newAppletParams.keys (); e.hasMoreElements (); ) { attributes = new Vector (); // should the tag copy the attributes? paramName = (String)e.nextElement (); paramValue = (String)newAppletParams.get (paramName); attributes.addElement (new Attribute ("PARAM", null)); attributes.addElement (new Attribute (" ")); attributes.addElement (new Attribute ("VALUE", paramValue, '"')); attributes.addElement (new Attribute (" ")); attributes.addElement (new Attribute ("NAME", paramName, '"')); tag = new TagNode (null, 0, 0, attributes); kids.add (tag); } //set kids as new children setChildren (kids); } /** * Set the ARCHIVE attribute. * @param newArchive The new archive file. */ public void setArchive (String newArchive) { setAttribute ("ARCHIVE", newArchive); } /** * Set the CODEBASE attribute. * @param newCodeBase The new applet code base. */ public void setCodeBase (String newCodeBase) { setAttribute ("CODEBASE", newCodeBase); } /** * Output a string representing this applet tag. * @return A string showing the contents of the applet tag. */ public String toString () { Hashtable parameters; Enumeration params; String paramName; String paramValue; boolean found; Node node; StringBuffer ret; ret = new StringBuffer(500); ret.append ("Applet Tag\n"); ret.append ("**********\n"); ret.append ("Class Name = "); ret.append (getAppletClass ()); ret.append ("\n"); ret.append ("Archive = "); ret.append (getArchive ()); ret.append ("\n"); ret.append ("Codebase = "); ret.append (getCodeBase ()); ret.append ("\n"); parameters = getAppletParams (); params = parameters.keys (); if (null == params) ret.append ("No Params found.\n"); else for (int cnt = 0; params.hasMoreElements (); cnt++) { paramName = (String)params.nextElement (); paramValue = (String)parameters.get (paramName); ret.append (cnt); ret.append (": Parameter name = "); ret.append (paramName); ret.append (", Parameter value = "); ret.append (paramValue); ret.append ("\n"); } found = false; for (SimpleNodeIterator e = children (); e.hasMoreNodes ();) { node = e.nextNode (); if (node instanceof Tag) if (((Tag)node).getTagName ().equals ("PARAM")) continue; if (!found) ret.append ("Miscellaneous items :\n"); else ret.append (" "); found = true; ret.append (node.toString ()); } if (found) ret.append ("\n"); ret.append ("End of Applet Tag\n"); ret.append ("*****************\n"); return (ret.toString ()); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/Div.java0000644000175000017500000000371107775270446023731 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/Div.java,v $ // $Author: derrickoswald $ // $Date: 2004/01/02 16:24:54 $ // $Revision: 1.21 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; /** * A div tag. */ public class Div extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"DIV"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"BODY", "HTML"}; /** * Create a new div tag. */ public Div () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/BaseHrefTag.java0000644000175000017500000000547710226323276025316 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/BaseHrefTag.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/10 23:20:45 $ // $Revision: 1.40 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import org.htmlparser.lexer.Page; import org.htmlparser.nodes.TagNode; import org.htmlparser.util.ParserException; /** * BaseHrefTag represents an <Base> tag. * It extends a basic tag by providing an accessor to the HREF attribute. */ public class BaseHrefTag extends TagNode { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"BASE"}; /** * Create a new base tag. */ public BaseHrefTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Get the value of the HREF attribute, if any. * @return The HREF value, with the leading and trailing whitespace removed, if any. */ public String getBaseUrl() { String base; base = getAttribute ("HREF"); if (base != null && base.length() > 0) base = base.trim (); base = (null == base) ? "" : base; return (base); } /** * Set the value of the HREF attribute. * @param base The new HREF value. */ public void setBaseUrl (String base) { setAttribute ("HREF", base); } /** * Perform the meaning of this tag. * This sets the base URL to use for the rest of the page. * @exception ParserException If setting the base URL fails. */ public void doSemanticAction () throws ParserException { Page page; page = getPage (); if (null != page) page.setBaseUrl (getBaseUrl ()); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/ObjectTag.java0000644000175000017500000003102010071121412025006 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Enrico Triolo // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/ObjectTag.java,v $ // $Author: derrickoswald $ // $Date: 2004/07/02 00:49:29 $ // $Revision: 1.2 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import java.util.Enumeration; import java.util.Hashtable; import java.util.Vector; import org.htmlparser.Attribute; import org.htmlparser.Node; import org.htmlparser.Tag; import org.htmlparser.nodes.TextNode; import org.htmlparser.nodes.TagNode; import org.htmlparser.util.NodeList; import org.htmlparser.util.SimpleNodeIterator; /** * ObjectTag represents an <Object> tag. * It extends a basic tag by providing accessors to the * type, codetype, codebase, classid, data, height, width, standby attributes and parameters. */ public class ObjectTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"OBJECT"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"BODY", "HTML"}; /** * Create a new object tag. */ public ObjectTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } /** * Extract the object PARAM tags from the child list. * @return The list of object parameters (keys and values are String objects). */ public Hashtable createObjectParamsTable () { NodeList kids; Node node; Tag tag; String paramName; String paramValue; Hashtable ret; ret = new Hashtable (); kids = getChildren (); if (null != kids) for (int i = 0; i < kids.size (); i++) { node = children.elementAt(i); if (node instanceof Tag) { tag = (Tag)node; if (tag.getTagName().equals ("PARAM")) { paramName = tag.getAttribute ("NAME"); if (null != paramName && 0 != paramName.length ()) { paramValue = tag.getAttribute ("VALUE"); ret.put (paramName.toUpperCase(),paramValue); } } } } return (ret); } /** * Get the classid of the object. * @return The value of the CLASSID attribute. */ public String getObjectClassId () { return getAttribute ("CLASSID"); } /** * Get the codebase of the object. * @return The value of the CODEBASE attribute. */ public String getObjectCodeBase () { return getAttribute ("CODEBASE"); } /** * Get the codetype of the object. * @return The value of the CODETYPE attribute. */ public String getObjectCodeType () { return getAttribute ("CODETYPE"); } /** * Get the data of the object. * @return The value of the DATA attribute. */ public String getObjectData () { return getAttribute ("DATA"); } /** * Get the height of the object. * @return The value of the HEIGHT attribute. */ public String getObjectHeight () { return getAttribute ("HEIGHT"); } /** * Get the standby of the object. * @return The value of the STANDBY attribute. */ public String getObjectStandby () { return getAttribute ("STANDBY"); } /** * Get the type of the object. * @return The value of the TYPE attribute. */ public String getObjectType () { return getAttribute ("TYPE"); } /** * Get the width of the object. * @return The value of the WIDTH attribute. */ public String getObjectWidth () { return getAttribute ("WIDTH"); } /** * Get the object parameters. * @return The list of parameter values (keys and values are String objects). */ public Hashtable getObjectParams () { return createObjectParamsTable (); } /** * Get the PARAM tag with the given name. * @param key The object parameter name to get. * @return The value of the parameter or null if there is no parameter of that name. */ public String getParameter (String key) { return ((String)(getObjectParams ().get (key.toUpperCase ()))); } /** * Get an enumeration over the (String) parameter names. * @return An enumeration of the PARAM tag NAME attributes. */ public Enumeration getParameterNames () { return getObjectParams ().keys (); } /** * Set the CLASSID attribute. * @param newClassId The new classid. */ public void setObjectClassId (String newClassId) { setAttribute ("CLASSID", newClassId); } /** * Set the CODEBASE attribute. * @param newCodeBase The new codebase. */ public void setObjectCodeBase (String newCodeBase) { setAttribute ("CODEBASE", newCodeBase); } /** * Set the CODETYPE attribute. * @param newCodeType The new codetype. */ public void setObjectCodeType (String newCodeType) { setAttribute ("CODETYPE", newCodeType); } /** * Set the DATA attribute. * @param newData The new data. */ public void setObjectData (String newData) { setAttribute ("DATA", newData); } /** * Set the HEIGHT attribute. * @param newHeight The new height. */ public void setObjectHeight (String newHeight) { setAttribute ("HEIGHT", newHeight); } /** * Set the STANDBY attribute. * @param newStandby The new standby. */ public void setObjectStandby (String newStandby) { setAttribute ("STANDBY", newStandby); } /** * Set the TYPE attribute. * @param newType The new type. */ public void setObjectType (String newType) { setAttribute ("TYPE", newType); } /** * Set the WIDTH attribute. * @param newWidth The new width. */ public void setObjectWidth (String newWidth) { setAttribute ("WIDTH", newWidth); } /** * Set the enclosed PARAM children. * @param newObjectParams The new parameters. */ public void setObjectParams (Hashtable newObjectParams) { NodeList kids; Node node; Tag tag; String paramName; String paramValue; Vector attributes; TextNode string; kids = getChildren (); if (null == kids) kids = new NodeList (); else // erase objectParams from kids for (int i = 0; i < kids.size (); ) { node = kids.elementAt (i); if (node instanceof Tag) if (((Tag)node).getTagName ().equals ("PARAM")) { kids.remove (i); // remove whitespace too if (i < kids.size ()) { node = kids.elementAt (i); if (node instanceof TextNode) { string = (TextNode)node; if (0 == string.getText ().trim ().length ()) kids.remove (i); } } } else i++; else i++; } // add newObjectParams to kids for (Enumeration e = newObjectParams.keys (); e.hasMoreElements (); ) { attributes = new Vector (); // should the tag copy the attributes? paramName = (String)e.nextElement (); paramValue = (String)newObjectParams.get (paramName); attributes.addElement (new Attribute ("PARAM", null)); attributes.addElement (new Attribute (" ")); attributes.addElement (new Attribute ("VALUE", paramValue, '"')); attributes.addElement (new Attribute (" ")); attributes.addElement (new Attribute ("NAME", paramName.toUpperCase (), '"')); tag = new TagNode (null, 0, 0, attributes); kids.add (tag); } //set kids as new children setChildren (kids); } /** * Output a string representing this object tag. * @return A string showing the contents of the object tag. */ public String toString () { Hashtable parameters; Enumeration params; String paramName; String paramValue; boolean found; Node node; StringBuffer ret; ret = new StringBuffer (500); ret.append ("Object Tag\n"); ret.append ("**********\n"); ret.append ("ClassId = "); ret.append (getObjectClassId ()); ret.append ("\n"); ret.append ("CodeBase = "); ret.append (getObjectCodeBase ()); ret.append ("\n"); ret.append ("CodeType = "); ret.append (getObjectCodeType ()); ret.append ("\n"); ret.append ("Data = "); ret.append (getObjectData ()); ret.append ("\n"); ret.append ("Height = "); ret.append (getObjectHeight ()); ret.append ("\n"); ret.append ("Standby = "); ret.append (getObjectStandby ()); ret.append ("\n"); ret.append ("Type = "); ret.append (getObjectType ()); ret.append ("\n"); ret.append ("Width = "); ret.append (getObjectWidth ()); ret.append ("\n"); parameters = getObjectParams (); params = parameters.keys (); if (null == params) ret.append ("No Params found.\n"); else for (int cnt = 0; params.hasMoreElements (); cnt++) { paramName = (String)params.nextElement (); paramValue = (String)parameters.get (paramName); ret.append (cnt); ret.append (": Parameter name = "); ret.append (paramName); ret.append (", Parameter value = "); ret.append (paramValue); ret.append ("\n"); } found = false; for (SimpleNodeIterator e = children (); e.hasMoreNodes ();) { node = e.nextNode (); if (node instanceof Tag) if (((Tag)node).getTagName ().equals ("PARAM")) continue; if (!found) ret.append ("Miscellaneous items :\n"); else ret.append (" "); found = true; ret.append (node.toString ()); } if (found) ret.append ("\n"); ret.append ("End of Object Tag\n"); ret.append ("*****************\n"); return (ret.toString ()); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/StyleTag.java0000644000175000017500000000535210020354034024713 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/StyleTag.java,v $ // $Author: derrickoswald $ // $Date: 2004/02/29 14:16:27 $ // $Revision: 1.35 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import org.htmlparser.scanners.StyleScanner; /** * A StyleTag represents a <style> tag. */ public class StyleTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"STYLE"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"BODY", "HTML"}; /** * Create a new style tag. */ public StyleTag () { setThisScanner (new StyleScanner ()); } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } /** * Get the style data in this tag. * @return The HTML of the children of this tag. */ public String getStyleCode () { return (getChildrenHTML ()); } /** * Print the contents of the style node. * @return A string suitable for debugging or a printout. */ public String toString() { String guts; StringBuffer ret; ret = new StringBuffer (); guts = toHtml (); guts = guts.substring (1, guts.length () - 1); ret.append ("Style node :\n"); ret.append (guts); ret.append ("\n"); return (ret.toString ()); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/HeadingTag.java0000644000175000017500000000465510331415564025172 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/HeadingTag.java,v $ // $Author: ian_macfarlane $ // $Date: 2005/10/31 16:26:11 $ // $Revision: 1.1 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; /** * A heading (h1 - h6) tag. */ public class HeadingTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"H1", "H2", "H3", "H4", "H5", "H6"}; /** * The set of tag names that indicate the end of this tag. */ private static final String[] mEnders = new String[] {"H1", "H2", "H3", "H4", "H5", "H6", "PARAM"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"BODY", "HTML"}; /** * Create a new heading tag. */ public HeadingTag() { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of tag names that cause this tag to finish. * @return The names of following tags that stop further scanning. */ public String[] getEnders () { return (mEnders); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/OptionTag.java0000644000175000017500000000661610226323276025103 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/OptionTag.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/10 23:20:45 $ // $Revision: 1.37 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; /** * An option tag within a form. */ public class OptionTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"OPTION"}; /** * The set of tag names that indicate the end of this tag. */ private static final String[] mEnders = new String[] {"INPUT", "TEXTAREA", "SELECT", "OPTION"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"SELECT", "FORM", "BODY", "HTML"}; /** * Create a new option tag. */ public OptionTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of tag names that cause this tag to finish. * @return The names of following tags that stop further scanning. */ public String[] getEnders () { return (mEnders); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } /** * Get the VALUE attribute, if any. * @return The value of the VALUE attribute, * or null if the attribute doesn't exist. */ public String getValue () { return (getAttribute ("VALUE")); } /** * Set the value of the value attribute. * @param value The new value of the VALUE attribute. */ public void setValue (String value) { this.setAttribute("VALUE",value); } /** * Get the text of this option. * @return The textual contents of this OPTION tag. */ public String getOptionText() { return toPlainTextString(); } /** * Return a string representation of this node suitable for debugging. * @return The value and text of this tag in a string. */ public String toString() { String output = "OPTION VALUE: " + getValue() + " TEXT: " + getOptionText()+"\n"; return output; } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/TableTag.java0000644000175000017500000001106610226323276024655 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/TableTag.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/10 23:20:45 $ // $Revision: 1.41 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import org.htmlparser.NodeFilter; import org.htmlparser.filters.AndFilter; import org.htmlparser.filters.IsEqualFilter; import org.htmlparser.filters.NodeClassFilter; import org.htmlparser.filters.HasParentFilter; import org.htmlparser.filters.NotFilter; import org.htmlparser.filters.OrFilter; import org.htmlparser.util.NodeList; /** * A table tag. */ public class TableTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"TABLE"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"BODY", "HTML"}; /** * Create a new table tag. */ public TableTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } /** * Get the row tags within this table. * @return The rows directly contained by this table. */ public TableRow[] getRows () { NodeList kids; NodeClassFilter cls; HasParentFilter recursion; NodeFilter filter; TableRow[] ret; kids = getChildren (); if (null != kids) { cls = new NodeClassFilter (TableTag.class); recursion = new HasParentFilter (null); filter = new OrFilter ( new AndFilter ( cls, new IsEqualFilter (this)), new AndFilter ( // recurse up the parent chain new NotFilter (cls), // but not past the first table recursion)); recursion.setParentFilter (filter); kids = kids.extractAllNodesThatMatch ( // it's a row, and has this table as it's enclosing table new AndFilter ( new NodeClassFilter (TableRow.class), filter), true); ret = new TableRow[kids.size ()]; kids.copyToNodeArray (ret); } else ret = new TableRow[0]; return (ret); } /** * Get the number of rows in this table. * @return The number of rows in this table. * Note: this is a a simple count of the number of {@.html } tags and * may be incorrect if the {@.html } tags span multiple rows. */ public int getRowCount () { return (getRows ().length); } /** * Get the row at the given index. * @param index The row number (zero based) to get. * @return The row for the given index. */ public TableRow getRow (int index) { TableRow[] rows; TableRow ret; rows = getRows (); if (index < rows.length) ret = rows[index]; else ret = null; return (ret); } /** * Return a string suitable for debugging display. * @return The table as HTML, sorry. */ public String toString() { return "TableTag\n" + "********\n"+ toHtml(); } } libhtmlparser-java-1.6.20060610/src/src/org/htmlparser/tags/SelectTag.java0000644000175000017500000000550210226323276025043 0ustar tiagotiago// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/SelectTag.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/10 23:20:45 $ // $Revision: 1.39 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import org.htmlparser.util.NodeList; /** * A select tag within a form. */ public class SelectTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"SELECT"}; /** * The set of tag names that indicate the end of this tag. */ private static final String[] mEnders = new String[] {"INPUT", "TEXTAREA", "SELECT"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"FORM", "BODY", "HTML"}; /** * Create a new select tag. */ public SelectTag () { } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of tag names that cause this tag to finish. * @return The names of following tags that stop further scanning. */ public String[] getEnders () { return (mEnders); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } /** * Get the list of options in this SELECT tag. * @return The {@.html