From bb3f60e5397bdd40eee883eef80c2dfe3b45315a Mon Sep 17 00:00:00 2001
From: Dong-hee Na Version 1.0.6 of 6 September 2010 Copyright 1996-2010 Julian Seward This program, Version 1.0.8 of 13 July 2019 Copyright © 1996-2019 Julian Seward This program, Redistribution and use in source and binary forms, with
or without modification, are permitted provided that the
following conditions are met: Redistributions of source code must retain the
above copyright notice, this list of conditions and the
following disclaimer. Table of Contents How to use bzip2 describes how to use
+ How to use bzip2 describes how to use
Programming with libbzip2 describes the
+ Programming with libbzip2 describes the
programming interfaces in detail, and Miscellanea records some
+ Miscellanea records some
miscellaneous notes which I thought ought to be recorded
somewhere. Table of Contents This chapter contains a copy of the
Compress or decompress to standard
output. Suppress non-essential warning messages.
@@ -478,7 +479,7 @@ consistency error (eg, bug) which caused
Set the block size to 100 k, 200 k ... 900 k
- when compressing. Has no effect when decompressing. See MEMORY MANAGEMENT below. The
+ when compressing. Has no effect when decompressing. See MEMORY MANAGEMENT below. The
The sorting phase of compression gathers together similar
strings in the file. Because of this, files containing very long
runs of repeated symbols, like "aabaabaabaab ..." (repeated
@@ -638,14 +639,14 @@ performance improvements. I imagine
I/O error messages are not as helpful as they could be.
This manual page pertains to version 1.0.6 of
+ This manual page pertains to version 1.0.8 of
Julian Seward,
- The ideas embodied in
Table of Contents For general background information, particularly about
memory use and performance aspects, you'd be well advised to read
-How to use bzip2 as well. To use any part of the library, you need to
This interface provides services for compressing and
decompressing data in memory. There's no provision for dealing
with files, streams or any other I/O mechanisms, just straight
@@ -800,9 +801,9 @@ to these functions. This is a flexible mechanism allowing a
consumer-pull style of activity, or producer-push, or a mixture
of both. This interface provides some handy wrappers around the
low-level interface to facilitate reading and writing
For very simple needs,
A program and library for data compression
bzip2, the
+bzip2, the
associated library libbzip2, and
- all documentation, are copyright 1996-2010 Julian Seward.
+ all documentation, are copyright © 1996-2019 Julian Seward.
All rights reserved.
+
+
@@ -211,9 +212,9 @@ Programming with
libbzip2
bzip2 compresses files
using the Burrows-Wheeler block-sorting text compression
algorithm, and Huffman coding. Compression is generally
@@ -228,24 +229,24 @@ describes both how to use the program and how to work with the
library interface. Most of the manual is devoted to this
library, not the program, which is good news if your interest is
only in the program.
-
+
bzip2; this is the only part
you need to read if you just want to know how to operate the
program.
+
bzip2 man page, and nothing
else.
bzip2,
bunzip2 - a block-sorting file
- compressor, v1.0.6bzcat -
decompresses files to stdoutbzip2recover -
recovers data from damaged bzip2 files
bzip2 [
-cdfkqstvzVL123456789 ] [ filenames ... ]bunzip2 [
@@ -287,9 +288,9 @@ else.bzip2 compresses files
using the Burrows-Wheeler block sorting text compression
algorithm, and Huffman coding. Compression is generally
@@ -329,7 +330,7 @@ ignored, and a warning issued.
bzip2 attempts to guess the
filename for the decompressed file from that of the compressed
file as follows:
+
filename.bz2
becomes
filenamebzip2 to panic.
-c --stdout-s for everything. See
- MEMORY MANAGEMENT below.
+ MEMORY MANAGEMENT below.
-q --quiet-9 (or
-best)
--fast and
--best aliases are primarily
for GNU gzip compatibility.
@@ -502,9 +503,9 @@ consistency error (eg, bug) which caused
renders these flags irrelevant.bzip2 compresses large
files in blocks. The block size affects both the compression
ratio achieved, and the amount of memory needed for compression
@@ -574,9 +575,9 @@ Flag usage usage -s usage Size
-8 6800k 3300k 2100k 828642
-9 7600k 3700k 2350k 828642
bzip2 compresses files in
blocks, usually 900kbytes long. Each block is handled
independently. If a media or transmission error causes a
@@ -612,9 +613,9 @@ cannot be recovered. If you wish to minimise any potential data
loss through media or transmission errors, you might consider
compressing with a smaller block size.bzip2 will perform best on
machines with very large caches.bzip2 tries hard to detect I/O
errors and exit cleanly, but the details of what the problem is
sometimes seem rather misleading.bzip2. Compressed data created by
this version is entirely forwards and backwards compatible with the
previous public releases, versions 0.1pl2, 0.9.0 and 0.9.5, 1.0.0,
@@ -665,11 +666,11 @@ build yourself an unlimited version if you can recompile it with
MaybeUInt64 set to be an
unsigned 64-bit integer.jseward@bzip.orgjseward@acm.org
bzip2 are due to (at least) the
following people: Michael Burrows and David Wheeler (for the
@@ -690,14 +691,14 @@ patches, helped with portability problems, lent machines, gave
advice and were generally helpful.
+
libbzip2
libbzip2.
libbzip2 is a flexible
library for compressing and decompressing data in the
bzip2 data format. Although
@@ -765,9 +766,9 @@ library clients.#include <bzlib.h>
into your sources.bzip2 format files
@@ -839,9 +840,9 @@ respectively. That avoids portability problems associated with
file operations and file attributes, whilst not being much of an
imposition on the programmer.BZ2_bzBuffToBuffCompress and
BZ2_bzBuffToBuffDecompress are
@@ -871,9 +872,9 @@ I hope to document them properly when time permits.
The library is designed to recover cleanly in all situations, including the worst-case situation of decompressing random data. I'm not 100% sure that it can always do this, so @@ -901,7 +902,7 @@ value may be returned -- those descriptions are given later. Rather, it is intended to convey the rough meaning of each return value. The first five actions are normal and not intended to denote an error situation.
-BZ_OKThe requested action was completed successfully.
The following return values indicate an error of some kind.
-BZ_CONFIG_ERRORIndicates that the library has been improperly compiled on your platform -- a major configuration error. @@ -1008,12 +1009,12 @@ kind.
buffer provided.typedef struct {
char *next_in;
unsigned int avail_in;
@@ -1137,9 +1138,9 @@ BZ_OK
if BZ_OK is returned
no specific action needed in case of error
-
int BZ2_bzCompress ( bz_stream *strm, int action );
Provides more input and/or output buffer space for the library. The caller maintains input and output buffers, and @@ -1329,9 +1330,9 @@ a bug in your programming.
BZ_PARAM_ERROR if strm is NULL, or strm->s is NULL-
int BZ2_bzCompressEnd ( bz_stream *strm );
Releases all memory associated with a compression stream.
@@ -1339,9 +1340,9 @@ stream.BZ_PARAM_ERROR if strm is NULL or strm->s is NULL BZ_OK otherwise-
int BZ2_bzDecompressInit ( bz_stream *strm, int verbosity, int small );
Prepares for decompression. As with
BZ2_bzCompressInit, a
@@ -1364,7 +1365,7 @@ internal state will have been initialised, and
library will use an alternative decompression algorithm which
uses less memory but at the cost of decompressing more slowly
(roughly speaking, half the speed, but the maximum memory
-requirement drops to around 2300k). See How to use bzip2
+requirement drops to around 2300k). See How to use bzip2
for more information on memory management.
Note that the amount of memory needed to decompress a stream cannot be determined until the stream's header has been @@ -1386,9 +1387,9 @@ BZ_MEM_ERROR if BZ_OK was returned no specific action required in case of error -
int BZ2_bzDecompress ( bz_stream *strm );
Provides more input and/out output buffer space for the library. The caller maintains input and output buffers, and uses @@ -1461,9 +1462,9 @@ BZ_OK BZ2_bzDecompressEnd otherwise -
int BZ2_bzDecompressEnd ( bz_stream *strm );
Releases all memory associated with a decompression stream.
@@ -1476,13 +1477,13 @@ BZ_OKNone.-
This interface provides functions for reading and writing
bzip2 format files. First, some
general points.
All of the functions take an
int* first argument,
bzerror. After each call,
@@ -1532,9 +1533,9 @@ general points.
typedef void BZFILE; BZFILE *BZ2_bzReadOpen( int *bzerror, FILE *f, @@ -1594,9 +1595,9 @@ NULL BZ2_bzClose otherwise-
int BZ2_bzRead ( int *bzerror, BZFILE *b, void *buf, int len );
Reads up to len
(uncompressed) bytes from the compressed file
@@ -1668,9 +1669,9 @@ collect data from buf, then BZ2_bzReadClose or BZ2_bzReadGetUnused
BZ2_bzReadClose
otherwise
-
void BZ2_bzReadGetUnused( int* bzerror, BZFILE *b,
void** unused, int* nUnused );
Returns data which was read from the compressed file but @@ -1697,9 +1698,9 @@ BZ_OK
Allowable next actions:
BZ2_bzReadClose-
void BZ2_bzReadClose ( int *bzerror, BZFILE *b );
Releases all memory pertaining to the compressed file
b.
@@ -1717,9 +1718,9 @@ BZ_OK
Allowable next actions:
none-
BZFILE *BZ2_bzWriteOpen( int *bzerror, FILE *f,
int blockSize100k, int verbosity,
int workFactor );
@@ -1763,9 +1764,9 @@ NULL
BZ2_bzWriteClose
otherwise
-
void BZ2_bzWrite ( int *bzerror, BZFILE *b, void *buf, int len );
Absorbs len bytes from the
buffer buf, eventually to be
@@ -1781,9 +1782,9 @@ BZ_IO_ERROR
BZ_OK
otherwise
-
void BZ2_bzWriteClose( int *bzerror, BZFILE* f,
int abandon,
unsigned int* nbytes_in,
@@ -1833,13 +1834,13 @@ BZ_IO_ERROR
BZ_OK
otherwise
-The high-level library facilitates use of
bzip2 data streams which form
some part of a surrounding, larger data stream.
For writing, the library takes an open file handle,
writes compressed data to it,
fflushes it but does not
@@ -1882,9 +1883,9 @@ can be used. If you require extra flexibility, you'll have to
bite the bullet and get to grips with the low-level
interface.
Here's how you'd write data to a compressed file:
FILE* f;
BZFILE* b;
@@ -1949,12 +1950,12 @@ if ( bzerror != BZ_STREAM_END ) {
}
-
+
int BZ2_bzBuffToBuffCompress( char* dest,
unsigned int* destLen,
char* source,
@@ -2005,9 +2006,9 @@ BZ_OUTBUFF_FULL
BZ_OK
otherwise
-
int BZ2_bzBuffToBuffDecompress( char* dest,
unsigned int* destLen,
char* source,
@@ -2065,9 +2066,9 @@ BZ_OK
otherwise
-
Yoshioka Tsuneo has contributed some functions to give
better zlib compatibility.
These functions are BZ2_bzopen,
@@ -2108,12 +2109,12 @@ and fclose.
*errnum to its numerical
value.
-In a deeply embedded application, you might want to use just the memory-to-memory functions. You can do this conveniently by compiling the library with preprocessor symbol @@ -2131,9 +2132,9 @@ functions:
When compiled like this, all functions will ignore
verbosity settings.
libbzip2 contains a number
of internal assertion checks which should, needless to say, never
be activated. Nevertheless, if an assertion should fail,
@@ -2143,13 +2144,13 @@ behaviour depends on whether or not the library was compiled with
message:
bzip2/libbzip2: internal error number N.
-This is a bug in bzip2/libbzip2, 1.0.6 of 6 September 2010. -Please report it to me at: jseward@bzip.org. If this happened +
This is a bug in bzip2/libbzip2, 1.0.8 of 13 July 2019. +Please report it to: bzip2-devel@sourceware.org. If this happened when you were using some program which uses libbzip2 as a component, you should also report this bug to the author(s) of that program. Please make an effort to report this bug; timely and accurate bug reports eventually lead to higher -quality software. Thanks. Julian Seward, 6 September 2010. +quality software. Thanks.
where N is some error code
@@ -2176,14 +2177,14 @@ are indicated via error return codes from functions, and can be
recovered from.
Everything related to Windows has been contributed by
Yoshioka Tsuneo
(tsuneo@rr.iij4u.or.jp), so
-you should send your queries to him (but perhaps Cc: me,
-jseward@bzip.org).
bzip2-devel@sourceware.org).
My vague understanding of what to do is: using Visual C++
5.0, open the project file
libbz2.dsp, and build. That's
@@ -2218,12 +2219,12 @@ Otherwise the resulting binary won't work correctly.
Table of Contents
-These are just some random thoughts of mine. Your mileage may vary.
-bzip2-1.0.X,
0.9.5 and
0.9.0 use exactly the same file
@@ -2250,7 +2251,7 @@ work since the release of
shown complexities in the file format which slow down
decompression and, in retrospect, are unnecessary. These
are:
The run-length encoder, which is the first of the compression transformations, is entirely irrelevant. The original purpose was to protect the sorting algorithm from the @@ -2298,7 +2299,7 @@ properly and fully understood the performance consequences of doing so.
Improvements which I was able to incorporate into 0.9.0, despite using the same file format, are:
-Single array implementation of the inverse BWT. This significantly speeds up decompression, presumably because it reduces the number of cache misses.
After some consideration, I have decided not to use GNU
autoconf to configure 0.9.5 or
1.0.
BZ_LCCWIN32 to 1, in the
file bzip2.c, before compiling.
Otherwise the resulting binary won't work correctly.
I tried pretty hard to make sure
bzip2 is bug free, both by
design and by testing. Hopefully you'll never need to read this
@@ -2379,7 +2380,7 @@ failure, it will ask you to email me a bug report. Experience from
years of feedback of bzip2 users indicates that almost all these
problems can be traced to either compiler bugs or hardware
problems.
Recompile the program with no optimisation, and see if it works. And/or try a different compiler. I heard all @@ -2447,9 +2448,9 @@ is the file that you were trying to compress or decompress at the time the problem happened. Without that, my ability to do anything more than speculate about the cause, is limited.
bzip2 is a resource hog.
It soaks up large amounts of CPU cycles and memory. Also, it
gives very large latencies. In the worst case, you can feed many
@@ -2472,47 +2473,47 @@ X J Oberhumer's LZO real-time
compression/decompression library, at
http://www.oberhumer.com/opensource.
bzip2 is not research
work, in the sense that it doesn't present any new ideas.
Rather, it's an engineering exercise based on existing
ideas.
Four documents describe essentially all the ideas behind
bzip2:
MichaelBurrowsandD.J.Wheeler:
-"Ablock-sortinglosslessdatacompressionalgorithm"
-10thMay1994.
-DigitalSRCResearchReport124.
-ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.gz
-Ifyouhavetroublefindingit,trysearchingatthe
-NewZealandDigitalLibrary,http://www.nzdl.org.
+
Michael Burrows and D. J. Wheeler:
+ "A block-sorting lossless data compression algorithm"
+ 10th May 1994.
+ Digital SRC Research Report 124.
+ ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.gz
+ If you have trouble finding it, try searching at the
+ New Zealand Digital Library, http://www.nzdl.org.
-DanielS.HirschbergandDebraA.LeLewer
-"EfficientDecodingofPrefixCodes"
-CommunicationsoftheACM,April1990,Vol33,Number4.
-Youmightbeabletogetanelectroniccopyofthis
-fromtheACMDigitalLibrary.
+Daniel S. Hirschberg and Debra A. LeLewer
+ "Efficient Decoding of Prefix Codes"
+ Communications of the ACM, April 1990, Vol 33, Number 4.
+ You might be able to get an electronic copy of this
+ from the ACM Digital Library.
-DavidJ.Wheeler
-Programbred3.candaccompanyingdocumentbred3.ps.
-Thiscontainstheideabehindthemulti-tableHuffmancodingscheme.
-ftp://ftp.cl.cam.ac.uk/users/djw3/
+David J. Wheeler
+ Program bred3.c and accompanying document bred3.ps.
+ This contains the idea behind the multi-table Huffman coding scheme.
+ ftp://ftp.cl.cam.ac.uk/users/djw3/
-JonL.BentleyandRobertSedgewick
-"FastAlgorithmsforSortingandSearchingStrings"
-AvailablefromSedgewick'swebpage,
-www.cs.princeton.edu/~rs
+Jon L. Bentley and Robert Sedgewick
+ "Fast Algorithms for Sorting and Searching Strings"
+ Available from Sedgewick's web page,
+ www.cs.princeton.edu/~rs
The following paper gives valuable additional insights into the algorithm, but is not immediately the basis of any code used in bzip2.
-PeterFenwick:
-BlockSortingTextCompression
-Proceedingsofthe19thAustralasianComputerScienceConference,
-Melbourne,Australia.Jan31-Feb2,1996.
-ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps
Peter Fenwick:
+ Block Sorting Text Compression
+ Proceedings of the 19th Australasian Computer Science Conference,
+ Melbourne, Australia. Jan 31 - Feb 2, 1996.
+ ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps
Kunihiko Sadakane's sorting algorithm, mentioned above, is available from:
http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz
@@ -2524,15 +2525,15 @@ described in a paper available from:
Finally, the following papers document some investigations I made into the performance of sorting and decompression algorithms:
-JulianSeward
-OnthePerformanceofBWTSortingAlgorithms
-ProceedingsoftheIEEEDataCompressionConference2000
-Snowbird,Utah.28-30March2000.
+
Julian Seward
+ On the Performance of BWT Sorting Algorithms
+ Proceedings of the IEEE Data Compression Conference 2000
+ Snowbird, Utah. 28-30 March 2000.
-JulianSeward
-Space-timeTradeoffsintheInverseB-WTransform
-ProceedingsoftheIEEEDataCompressionConference2001
-Snowbird,Utah.27-29March2001.
+Julian Seward
+ Space-time Tradeoffs in the Inverse B-W Transform
+ Proceedings of the IEEE Data Compression Conference 2001
+ Snowbird, Utah. 27-29 March 2001.
UHK)kZCVp)(y{Azq$Y28Cccj#_pus33(E!6p%g?JfYeeV~ z6BDv>=Pg)hF7^9UJP&@SQ<=Ci_9zmih%rgC_fY1k!rKpDK0WMGIuueYb73UIuvSxZ zo-1u#16C&aequOn^Jg}1CkRdy0kXyy$X08=FFKv?ae=a-X>DJNZhn)X?V4;{6yj zQ5cj)5n}xi`kXYL3>B^qg9BuRuN*c*f78sUfhy&Hhm|Xx*Co@;ot6iXbX) zlcfW&5LaucypieoW=Y3~{$EWQ7Un)I@q=CjsZ|DvBy6DwIMP4yS%%$**z<8rO2gJc zU-&7rB!T*0nBcxZk+Cpp TyX2IG+(83s!dFIftPVP z#ZTX||CT)P!p-ww`A53r @$Q(EbhAu*C;ou8SMtiOAdBcA~1 gNT&PPrZg6>lZ6*{Z|r-P z+<<00?zOHnA83P^<_OF+TueK*(qi>ZM%t(64ZNP}NVTVb_KF4T@;a_86E2?6A)w3$ z;+PSm>NYgLve2Tc4Va-U#N0CKcA6LBVC^n`Tv;Cvc;t0Vu?K=4_Og7~taNW**I^VC z&-9m6pgYAJt|wB7J>2XC%VWxrWv~}elmo%#ruSLNG03w(C)9bwHr?_%g()S3Y&-xy zKG^2b&39L4EJ*1!^%Q0w+Y@+2?k)!YY=yd20ISd3% `Cz%^&lL;pJeZ@h71(?Z| zWa$7=Kd|H(%gP$4Z1|&IesnkPkOQX}&?T}pTw)(5Vi<}%8$6?s?P=`UP-}93K7tx` zH=Wm1X)>DC4P`6c4;YOLl6ypHjBB>Jx@X0hgb)65W|@4qSSjL_%u2ML?CW%`D7IN9 zC@ygitFolfU4=uN)fs3Gn($sFKGAD^_09||<;at}=@q*>-yFvM5d&Y|G_FIWZ$5lX zIdM{?tzZtqr=3K3^SQ*nBWQF)nX^+{7~NQbE5G(@j%voCvH#v(4&}io?hyc#Y#`Q1L+o%w| z4wwEL8WgD!B3llDhlPvd|1&@2`I{>KH$P~m)W#j50p^xn9ln)x3NH)9l@jY4W@l20l+c7^3 zjvG$!JnUxs0THvqj2UAl24TuvE*3M7v5?3T{sjFwX@2B4AQM9I$i(Uz0l=WILC+|V z${6m*0s5nqf>}rptwI2j)caJEX=$s-`R_sDEk@r6U@CG*QVN2&j#w?sSj9eX`jsNO z3x8zPLtzcCxFWKokoJI5PK+CyPtn2^8Ren{ww`fmVNPc6xzh0ngK$8=1tGs3S&5vH z)WKFkV6X@m!YL`h+NK~7u?(i06h<4Z@}T>`0B5psKvD@ZakM>9 $zoplJ$;>@^`YvD$07IPxj?9v%X7mnBR_y93x(3G6iSQJF;0oS$Y z=&}GvSsJqY;RtvD`c#x`AHp~0(xC7@+CE}eMX`Pu;mjq`GR=`H04+H aJ;*5(9Rf$QjufJbzADIDM>*Gu9F+3cW6U>Hcaoo9lvziv!OWrqc}D#Zfx=(~ z B-4PvV~bkd!*AAWYTk z-hQ&E4S0h*xAYK1v)Wk^DKidKryvw{;225+-0+c**W>NJ)yMhd@>C2l6V|pjyT8|` z`!?{8U(au5Ji%XSHx`qtMEk#XVt|BSoc=n3F(XVCi_KosaaWYILCa@m`BjtW{$}gw zk3`ww$kV@n;(jf3pHKbHeEsFzll8}z=o{Yt?w4djmz$#o)9^rDhh3$GWQNX36A-&^ z^!3=co0lkr0Ty#GEriVk$7;_E5;Y#CKEhkxOk>NRPtR@gDfrde?HeB?Hs)Abv _MX?ZX2MqHDcD$or&x!0vHPVw zpWf7B&htvGzSup7F#7x^p^A%{G8Yw1N?P(I%)sr z43*A&csk2C^?Uj9VWaDHWioH@OY*SPbHcXX095n~;pwNkM|aMQh9BD+@M-jN+xNcs z-PT}mdk(dK%}?)JK0OO|^_@iZ%O)mKMQnx0ynq{981D$LGvQC-U4qfC##ZIITM7xU z6?&X%(cnRC6fB?aFK@Rc5TMxRuH+{cC>&bWE*mKhwU8dfia!AZ`kNgTGw&KjSGSJ) zsM!zCX!M}~(C#jA2cQNFIATu#@SC1j3WaN2#3;%HF0Vw+1?Lbl%$j!K%PwRfC0t6Q z1<}qjPfEDMS%HLZj$O8OM8Tf@k8m*bhAm2<-QtoxW2fZ=DX~KdJ@8xpHj{a3R+fys zy!d&>dB#QCdK8f(S5Yn5GRqRnO5z2zo1EK}Th+yDN8Zb*Tx2st;#{jp8TJfVo!HV~ z!i)F5iL=+#&J^F~ZiO0%sI0R91UPu{w*-R?GY};qDOfL{f`Om5t7hfvIRv{JhA!Sr zlt}@YQIf$MvjSq-5HN^ Kk!a-i)xH&=p8gvDUhF&;EbICyn| ziS&j;YE8H!*eZ^Y?Kn48L?Fx~O|}oW(Y&|z9*KXiFr#Jq_Wfk= PR46=w!8^RhA3v3d zfOq@PpKI%uk5b(M&PDW;G|;iM_ 0yf<;3spgZ IP+E*j z5Ke?pB*Uj)Oe^G5sHq6&x p){<9%h}>R{ zjS2 tvY4j+Gf(-B;@)r+%hMgB~p7e|lJO zFRI}?4NXUiC7-qksP|tO&%O}rK#iHGPh1Nqz8Nc#X6j(<)jB3zM(1_jz)N-qmJ_CT z@`l6BBN9r_@LJbW1Xf|&pVxEazjRH!Dj-Yh{~+xC0y!jTq5dBTZu*xkC}z4GEGSH) za%D6;I4kFWgZO&eAO!Fm*CB=8Q-e24^cMXa#4vPwwz+D11P^Y*8~S)A#$aG{1rFRv z^U%Ot5RKr0IC*G(dsHg)kkz(y;WUer%l?{rH#On;HaoX+M+$vnBh7@zC^iU&$^;V> z;zZiiB cs-3pb}THwoK7{p`;Pm>=Uw^&>0Yi$a(e9j;aO)3!X^* zWL%@|+444E{H~jA9fL;1HG({cZzu&E&1M@Gi(iRZMQ|cj;UF?THR}AMc5iMjJ44=< zBqVy8-kddJ6J0N(20WeeihQTa;^5Sx3fiyiO1ES qAth9vuyGGcRU0Flvop56J=_5KQ7G}fffMgA2!4MU}{Xk8rkIS&(jaL-#*B(&Kc z`kGE{mC5i50}lNomH0Szh$q7Uc~n%|{#JKJ6p}x>gBW-#+ihzde_Sj<#MG*@2A3(C zA)es20mp%1v3~$DG!7e6jFsCr$J&Gt{TU#9)2a|rgBa#{CIY_u3i{^uMJ?|uEf$_~ z#1F&gL ;PN@L-XvFq0 z1iqy8ivUf{1=cDYjoLRc5Xy*GQ8zq?m5ajl9o101+g*Z})5@S_mcU3&dt0}t$D #PQmW$DdrEhv#9o_y8%upk+- Yl;@G;qnvT9P{MzTs zaR83!=-PEF^FyDKUiO<~r3w*VysnV?Uo8`My`L7^>MdRgFby(-h2=D6%xzy@K~$;W zaEc&D{j@Npm8X;}s-Lt^l(Z*;%wJJ6|K;j;4Yj`o$G_^a N{!=wLUc9+NWe^ zxg51$dQ7~BG$CXT zVqIm3dZ@;*)m(mlysMRMgNeIR5O zc}+T`Y+#an*uvmmVYo<9iW_9bb(3qFni?Rbn ~cv`JMB=kE!M2`ez@8fm5<-dU(b26-Og*7bvKy~e*Nx< z k=n dU {R!t)PO0-jAHUNWnF0Ww;@}Wmv0HoezGENo7{q&lmNBugxz kc;oIrt7`t;}ZJq zVKOZb@#EZti0EOLP6aCR6#j_r*J} FdH&2((h4B#h@pcN$Dp7c`9vsZ* zj)Ue`M`PX_eD1q!cUzD5Gcb!b-uVbR!+RBewlpsu7B1qk=5!| Ng4Bwm72gvdnXUwBF zB$)zZ@6A!($*~UxtBttvq_wZiO^D7P)l697YW!tbBK;$oRM4k49;iFx%On(7yueN% zy2#R$v67$J7j7}P*KqaA0t~U# Jy6ms(av(1b8&ahvjDzf5g~{NO>SB3 z?$A@D*x~DFNA+c_cKXyBM*;EgoSO)i4XWvIwYZ3gP U6Vs#Fc4d+!40gbI{VCtPTs_0+^%)DOSLOg}?wcT+L*JR40;e@a9 z2Rfb=$VshY9ugvQpCp5_fw^{;Hgna084-R_3m1DCNJvDN5s>6yNKJ6eB!|q9bBy%2 zGz6k#$XmFO$%`(#vdWpQ@fKjeO0zUDK4)_8z~-#1OnS(wC>@0rW!)7_r8#?Vxc3*Z z#L%GRLcZkT<3?KT5r$X>)#mD(q%St0p~D!mOj-FZM2kl(%r;T@Moc1KL_APjGI!>L zuYN(i3T8+R9*D_F-W{_Io2oh9rHD(KP^=K9Cx*C<0{Wr4hlT1a6|v_N@mqR!rbvq= zjGPJyW4BcA7YukzThd@iAU9~Re$V+ |LH-b &IrRmwueA!hjkYFMNSa%8 um7nYQ5UAgOK3 z$%W(gp_l*#DCriBog#aYFzjDwy(i(GB+*(a5qRzZIcJ@rKJ*)Ugnb3QV2~%_rV-!h z77=%L!7JZ)=M<*y((0ks7F`t;5UP7qj&om}`}={R`BNJV4E6XKu>;e{P!Mwl18#$( zObrQN u}%2ddslsObZQG|fRx3|Y5B_9#@EOyTl~T}>7u$$ZVV5RUt9yb_C@jNryPbX zd8TSIQF)mCqnzIm_@9u+4**>4(>qs(6|h@aTdh52LR8r%>e^!fm#?GS$h`WY0-+21 zr;$|Q4^A`#Jg#&4DtFy87a|?;GO;0s6Bpf%&F(4zl%HQAAYLG5=dX>11B$T) S~EEwm?jK zIQ{Xc_8CiU_T|^W)cSFE F140S^D9kSqa(Pvnq^i0Ydq~^-}XR`{Z^%T#9IR-SCmw+u(0$Ky(X$ zMXOWBa4V-gw|r|TV$BmTgB=UCH8A_)+)sZEN@6M{Erkq9dce2HQrsYoAjW?2YIo!W zUroNeVfT!?1}+O2SE2rTqV`9>2Fla{^F(kLMD!d-C2l61b#^vwlY_YaqqRD`Z}7%o zt@g;QnfPq9WbKe1dUxIemac(a)OoiQxP^~CwTy!!{X@*nJZSv}uy&ma3k>sguaN_R z`_QwG4LuX6k>$SdL+S7LL*di%#_@#|M&p{}qK_z7dCTe*WVSf&`(Vn-+GNfkt@art z*TR{~61uu)Tvyf(>d%0kdYb3!d>+QI*dn7GscW{ck`eY%HzgJ*C^`wi?$u6J=K667 zR)-FN9$>-!79XwNp`WH%1O%Cuf_*&}XyEEg958Q>lZ1^18J6{fB$B6^^brMAB@g_T z_=$t-j|Or>dl{V?$JLIQb{2N2%`-L0f{~$4p{s!$xbnm7yqvA33VnR3JP z_~n5Y3wuf+_XsXh4y48f+&%67_M-9QsqO$5%?@#*c_TqOsyA0pNmlmn%qwxS->njH zfls1P!A}mc(eKXD`7JK(yg@Ihl11%UXkj)LV tt*=#Zf2 zPcblC>}+__Mgr8MLhLs{*wgHmaHL~!(40HVN`TK6FoO-R>-_9wu8|`}CBQMuW{+!C zhvm!bk$9pXwKJ9W;_A;k^udxmsVQE}e_g0yec)!suE0Rx1u4o?yWWKMwN^9KH~b_% zHurA&UnV>3|FCQ5jry-4h~RAO+^v6$oFEZ+SUH*h|G;h@X4d};cC)gu{uk`d+O#KV zM-96 ABP^4qg0Q-um oW`p1zYiF25#Iyr+52Hn#hDv}H`%7*>eh>n$lGeJiT7lEf8cf4<|B|N3h z1VdBEt0*%SLS4?>^Qql|z&ezn3^^($2*$`$ZcPYGvS$Br)C7= X%u8Sc@Kq%E? z8&pR2^OdVgpXfRzudzvLuTW=g!0Tcx~8)57hjkBae7X5MwBYC%Vj!f8(ra{sv-WZNn zb1r#Y8_PzMnoFW7g95VJ%7Af745lo6VaS)G=Ap7Lt9#LA%g~Put0_ H{(lY!gDz%7xg;KrxZ WoUtY%MsV 4sOsjwz5(2zYrRwe{9bF9sGXk%#x0&D}+CjZ1&m z{w?mssW~p)9!fz~A@dcIqU&eS U _Ml_fIw=$^8{})nc_NTeW8J|D!!f<=}?W1)2=45JLBB`L_5otK* z=8hgJdSSENr(C5&^(RFTs{Tpzo39<&vcmESzx}Cc3(V*G-I2rH(9K9PQ6QC{^3_pL zDyrKQW1Go0?_X2C8NIN?zx;t=v*)8%?$DZ+pHn0{W(UAF`R (OxVpe|tEetrV>N z)Ad(S6cs56+En}WdOBSuE*De*7XOj@Onf7Il01)J`fC8H0DUiRD(B7*jq1H!T%0az zzuI^Hc+|grZ|yyQwp3~GX?=S?C$3EQCK2|Cw3^=G&E(FsO^O7FM;osc_i;K0uE+Zk zdzxwhH@mlSAM<(%Jc!e?uYubqwP?Q;3rW2#zX@^S&QE%#o}|qiB{b5=N-|;j5wlgt zhTdS-uhRpOxrhaFZUhxUME}yX7Ax~sMvhZ3Duy|!3i09v@~*(_4^9fCWtP1R?eK#> zokfe7=A$)A?e5MPjgDS*`?!ngdvBi%BpFpUAulWrM0wa2Pi=V(eCC`HJiF(YR;AWm zCLrIgf!)gHi( 0A&{Nq*Ii|z7Ug2+xUjY zHRE9|yGU1&3E5QEzm*9rfJ|-4qW oqYzu!X)@BZ?PqH+K!q8|J;L7#i72d1 zyF(yd3E|X0V!aZ4>BfmVm)ngp4|wKj;^LlX7@U}#M4t>aX-o5wG6%Y&G6i`0dMZ2l zjHxW$9U5wb&;cysa|BdY30Zj-=wxG=GW!p;i{qaWF)edPIc_|;I+8W@+PjANhVF`r zKVfmprfP~&$Jf!^{ZLF*$zd*b!*i_i{5*jE&F^b=R3L@CcnR%p>;yF0N%fouyliF^ z7pmSuBM{VTg8?QIh=`&HpJBC#BqaMAf=hTeorlxUCv)=sqQeOMd7^UQ=wlN$xcTOo z`USD{!{Hkz&W(I>ECFQ+pc7jncqkQVl`+I??i8R$^qs1)58rzQ+|dyMv}PcztqDM= zA?)Zc9O1Qz=y{=G=LqCq86aU%I7U-6g@KOaVdQjdRmd)(B_UAWQUhxG;-Lu4Cs>6- zZ4>zNuU6-_G51c~Yke IbLajHlM2b!ztQdp2(w z`fVr%2#d2LG)7qglDY;j1#ihHtVDonO1`&G+Ysbx!$Kw+n26$2oD@S4ycTK5qxU11 zOC!GyPTt zLy|0g*h>0owt4IB4P{2S`b6I$ZZSJGWVD(@h+6m#X+jbM6;@>a%I5L1MUWzgyx1X2 zCCrVI3r}BoK}xXiCp-xy{Sr{9EJq8KAn$Q7vny5BIjcdMS_^sXDL?UcB4<2uqW(d| zaLsH$kjpx`fXb1mbr1qz`8aY}cp1YVy8#LDv-gyKan+sv 4yb^~=>E=w^t z7H>wV+Q5fLe0)&2oG-lOD4>eSqunRy+$UZ>^me+wTxi#;N=|_%F3fyfA0HMy{oR1o z0=sUoELGwP#s-{+kmu#D(LL;varBWoj-dBAgSekXFv;}KxuazZ!9^RP=`fO-sk JalkI$=TeERMb)l07+pt=t z$Us@(!T$31La?A1t&vQizhJ@Gxc{jT!)gWR16_en=2}Hcmk$AjZatF(odHjV*+Tla z2~K&?16Xi29-e=JpVny|& gFL4QI0)&A==v {m*qcF`(}MXx#t$VpBjbAi&xGi!HS#W`h>MC0jltC4cC{ zw6d0gl0YYWy!=Nyr~}3S+bBC%di@}%P%Cu@DB|DVaIm!gRpnvQ1z {$f+K z!1wq~PP9LMUvNJJ$AzZOKBbfkri+H5x|=+ !P`ET3~*vx zQ8+pskX50Ibw(AdcTwi4-6D4DoFBF?1!hf~;11>a{CvAQc!@r3b%p&rPX4o?CZ>&~ zzNB2OQTbv`ymfbFsCj>RaJikS=+KiKMmi~~RmjB3 cjQ VTfo975q-9BhQrE`$`bV3yqlc&*h806y!E zgPqA>d)GgHd&!bj8=MUy);BD7Z(mU< VaW9EK8}`N6J9d(gEz2*VC0$!p4hvEEG;zCeR< gCSRmmzJLwS^jmwM9wVUpQJ#fEMzp}lq zbEo<*DcA%lP2NS_viAIYb(P8A^K)@{@qzgIkADXc7En#RHcR)KeF_;{C8el+CSXS; z3!0nIq#O<4lwlU{@&aHKbFR%Pc{*7)rN{J5@(MjdsXvEWORzg+Z!9tY4yd!g=otP{ zGoq1X7i@i%C-8>dbs&~a1zh>~y}I{w{)xV(!q9o$rToeN^UZ+vfWKMCkJ*8a a<49gY_>-e=~1SIG?j*t}R73VVr0H>~(t>#gHWG{~_$1 zV>}JIf5EnG+qSJ~+qP|g+jjS~ZQC}cZQHh{we!Be?7cVH&2G+ Q~Zk~hekcUmiMpz?nuKK o(+{S0C93DM`4PrsGI?#BzQR7F?v&g}friKi3>npZc{xhO}}mmqoGa z-sP+*yfY2j#8s52KJfq=KSoDC$$0y&tDsC7POEaJptLayNEwPL5caG 4^g-rM3#0XU|1YSWQw_ zhfh`I3?P^i?E)cODmH{&qNQ)lRNOv|yV^ITu@;&w&oesZHeG=4!O Z5Kc$~o7e~m*N@xUfsYKJd_RF~H_@MwO|?zggm~7G2c?=| zgE *#sKrf7aY|G+cC4I}jFhN$_nnW_s#;xk2tIDMJHrTT(&T4lHgUtawa;Zr(Gy zx@aBNMLNlGql&$vZbDKMEMzw;B$Ma^*wR&ikhE8m?*EtgC3tqan5VB&|gzPSB%_eA|%w~A%Yqqm>Qp3l?tqnK93$Xs$RRJE2>w*dM zV5yT!)x`m`Nm>||%+G^P@%82!F{YqhHgD9c?a(&4crT`-_>|cp?t_Zf6rbb}qPy42 z^2%YNUuqImlfs}61b$4{i>~a<;iZHDce=Z!5b1sU(rnD0_QZOP2#*N8q6DIhdR;fa zOh8aW0~v{Q`@V)%L*saT6W6eVj;BwI`uPSE!} C z=whtyVb&dxbf9)@b}oEJ<7zz8Q1 J4;XpH69DA|s~9L~(~Xf-C`MR0 z+RlLS7$6Why(}pT*?2+{)W 1+ae{~&l$P9l4OG1vnZ$)wA_Qx9+ UTF?ChUneTo#K3awBt55rf}qx%z}Vz)(c^pda&;osEoe z H+t1f S%bJ1 zr%o=mj~&)D-MfjpCgs;Pf$2!u=}o5ljtW4GVYK1l)1Vogh+r%(mlFvLzM^M{=mvMS zegh8b)N8RIAa)AS4FEfd7E}O-sBY!KXq)y+Fh`U49J5}vTNi5*f1s~pv!ct-fJ_0A z*_8$Rfj0O2HC9^v;m2Ll?7kqRd|ehZXoMI@!7d(w`N`Rx!^q}+>!L12UkE=Dzpk6^ z-P6ad;0Nujh52GF@#A4vBitdH4vJoOi|!kWQnWhO9ZW+4P! na{e#f9y81TWLOx{nvBBZMB84~u*{$ |;gQ!JUfE|po$h{!*p#`kuR|X$pG+Ptd4Fr(N3{dF8tUHB@)P|IW zD9` lt2b+#u|0t*OOhAVZ0S6x%53#qF z7+}(;Cy2(x%7I~;&R~Cn<59&j(Rk9$F%=c8;eoJ4HJUT0!V2)5uJ8g5N-&H_RlG}3 znzV($S0qh^80^0ymZS|tXSNY>kzuhK;dl p)j5hJZBmf!K*aNkfHZ!3H>nCenaRP+KshR>J?W53I;L z(HELJI{&5O7R%DCq~Pnco*)MmwP%Ei^sI3d D3%1br5r&6EKi@o>oNzK zOrw)(VpQB|goxaO=z9^U((2lTr1t>b3S}CC$X`gjTv3NH+ttH)bBd;eA!eb+W3sQa zMjUC|6EKd_*h{?a&^$UiF~`IY{igg^F^#&x{2E{383qyr*m}kOY^sVy-`_v)A1`j(wZj}9{z^0QZT0cM6>xvK z%Iov+ygzuh$095|-2Q%nIJa;Rh*5Co4DY&3>&mi{P*Cf;(eLrP-@9Yb^%4&wOaug+ zVx5ezZw$(~4dOcmSqV7*4FpQ#zBPgK#9V6%AFz!Qfc560#q*o-aGIK@6hVYs6*Ca% z M)8st(MYcEEr@5% FExo_|(;v#rd(i+eKwS4l;@{-wyDH8K9#0 z`64IwEZhvDug uIq|16I2tpNcMIHlRwW#g zigdHt$vnz#BRpKaf3Xpbe}x`Zz*aY|@x!x;^!L5pcN~e#YdGYFJ9+7vJh5);*f49^ za0}dczM9e^rS@=IaXcZrJ_J-t^rhL>9De94xRPmAky;synM}D-FwWQcW B6%jU= zza)pRW_kmG&3YN6v}z86+@xk+*cZkJvmRGE0In?n*FeD2l;B2Tvp|e;O7|B>jTu9H zO)4d00%aaP19fZj7l$3&>2~Tp2luI6#q0;xVYid-#};L;i>_HVM4JJ_!$oP9X$cPQo3+fQX}0>o2B?Nf#oYcU;W{CnN-eMIv M*S8CHZ%!zf7I9=y!M$yL7>=PP!F4Q{3ors8joNzuy8x_^&9Y{XduBKe-0K zJfqdnx|{|#J9N!+Nux?`xm${JS~Q-zEwl7Fdi?jUb4Z-i8Jsy4f T1sCzr{L_bdM(@PPkHqn4tek2VzPqq z+gp?Qvk~vx&c~G0{7G8ZPop1kAAi-`zcAv_sG(Syg12@Q&wkD`;af3-z9G(ykAoE= zf90XnOZQoK>7!Muf8{o-0<8EYzZ|tQE$lPJ i5sx G(@8i=Z_%4d z{dg6P=s!q Kz`AWc=7QI_A3tG^L7xMCAZGWMTW08oRBV^GE%K^CHr ze|8e1`cex;9KE=>B6Z QqzCn2Llhn2Nn3#vc{$ z(X*NT6Y(fq>B5s|NKuH^nAN_kE z2LT7Ut=V~ 3QKhJr1-WggJVEJB4PS6*i6VI;{k5ke+s5gP?rFS)8ytF}S+;@<<)Y zWkOMcdLaW{g5RaKFw|QMlT?*UH!ZT5;d{Wc&fn!sRPL5c )``82J}Q|?ABQxsb@m|(UL*!$EEj2CQIvHyOFs*3v#J6; zVg*`^K=i4%;k*2=0)CeRT`X9=ni4W;8%sy`rJPA<5emiNxVs~;h9l!uu!N`co?v?; z;K8v&Ro;eJI|8w9e6W;daqTLY*KTgBbMVI&2A|hf07~~m(t1fNBvzq95y+4sv<%JL zhm%v5iYY&zdZjbl^*IL1mFSR;Ch94;K)FBp6e`?EHC=|bJV^H(nsAr1FkbylTv?fM zRFc`N^rhr#iaQ#Xw@eEqC&Us_PR)z{z@xj#p)QVFx5D5F+E8rD25p$!ES!#@aIN&( zJj 1FRrxlz4qXO%S2Zb8_t#mIZ^D3 z4v8DL*eaWE-6*^y^=`Y@d>;QAA44Le`C(YPF!gV7tHz8CUN yT($Yh9iU>Nl zI-V3NdCNGc)&Q2KIc3Obmk@=tP>&;XByhe0layS~=sk@?WUZPfWO4wiQQ8I(rTtwa zjY?>E55cycbJ6?( ufj`NxTJgw2cgICBqwa`QkWPu zZ(XS>D#dk~KoP?Rq+|BZI5I*%)EOF2mMvNV^1WZtD}Z)R9#DEuoVTUo+IHpO(Me}) z{((ppFgt5dg=O59@CRY1 o`n; zz2oJ99)P^ZL&LbHX#*?DhhQMOK#uM%J*8pYcztbP%92>UXkRjZP@uq{*hU_a;#T8j z*5VlkXT*(Bp?ADn4v;TWf9R3eezQ?M6H3i>ZRa*6EYA&-FLUhRR+UXEL~B{|zKnk_ z9NGeLHomlrQx}Zxd^1Xk$$COCuEch)4qWm17(jbYy5LkGUrgeNtA=bl8|&w}K!r3K z4$P+d>(t5M7W~kj<~{HY(*98PJSCV9`CQ0gLpW%1@Y$3Hf;@sYRxUey;MwsP(41vA z-pZ=XoX#> i!b0vs{3Ewg4OnYeJnNJh#dM>Zrg?lu6K3J@|+5>HJ zv={ee3@q+5*i!lhjw9}4?VSY?sfVjgl490C!?X>V_l3B!O%MU=_dq*_e~S&V{x(5q z6jXJpLca9w?pJqE+TuAdF(5u>kIOUaR5j0s)pkG#PttKL28CyDB?DE_ehkg)0*f8^ zmyS@d8-G!`3d2A}>I8zh{2_)7HniK`bi>Y20K(0DKFF|wr$=fqSij;p$VH~U_*PjG zGkSbP5T`H=V+Ikr>WQS= WjPMxD3K~ zUx|Vu+tj$;K{ia-3xkP$F$D5iL%GV$1QZ=t37v0oe7Ql{(Uz=SyQ=UoV7)wjB)q?! z1BYM5bWvGOlymppZSBT(D=g9px6|%eZ-1}UE|w68Z!o>AghYk(U(iK{D4BP=syH7U z5Bdoy6Y)@bC}U; q?Ic%h70RDiJ0rUV*7)GssyZ5V1? zjHphg(>g2^7Z&fGMS7)^dj-OlzeK0Iy2bS&?kHLt@*zZViobk0s6gV{8(lWWU5mTJ zm5{Kd8ooq8mni98lPk@G2q3Zpx5po}5jR~v_Ae5$*+bl;nlS4aZ?HI~zefp_Ooxqm zCj7G-_&=rH&H%@RLPzKpv*t>`Jl#}z3~_3Q6MIt8v`^kj5;u_A><~?wMA{PMUI&zj z`MX}3yTNVY1-KN4ry=t?zf>NgNIb3~*?`g76Yg*vj=A~!odeOAyMZ5ixU9?VHs^#K z%YDfDnlIsJnaoVX+TNif(D1#q;qK(Xbp900{#N7t9@Up^%R?FujFgY~qt5Ztbw;+~ z>mQ9BHTWI1elZt9ybiHxCLqyZ4zh8b;%7E@$RGh*S|`)?qyE?TbIHep;mzj5AWA$X zfc`IXVf>}nyv1Lud%dy0tCLMXAS)b;C~1b=z-YkiZK^N8yl`n0vcUgik^^I9`LFvB zO`9n=$U6wYq`fRMns%sC^KU5cqCwj})(tQAt&ihhY3^eqt x16L)DXiH>FsdS4;7azWDM-YTUwO ^@xeTHcu;HjjpI(~DN z8UeFxqT+_~{I=*!?u=JKd~^y!f+5QuYyK$;t~S-a$6>#DJN4W4TRw>pt62O-;prQT zVGgf=>9pk>+a;y>gg32^#5Ds!wHabJM~K-0Z_2Q6K!~KTTF@TD{>3p*J}f0kj3EB% zl4MpAW~WZ*R~Pc^ETFrT&lAc=m<>V{f5dM|25w~9yW=l%@t#fh7h5@7y1GmUC2TKG zo=>XYk1qk{ME{%qF&xOS^H>dwZ!TsY2cKd#RM zuKA`xX%}Iri7F{zb5QLMOssqA_#KfB >+@3=84L0kRYi fP77f9++b2Veq}uZ+;TJ!{KqU^CmQ@6oT9p~b)sC(|oa&H0!R2JU z5}NXagn}>hfdLoGk(rf?i9pYvL2gS{;7Gs_GGBSbDiUELpu!tX5;5!gLzC)+RZ_HQ zf3b{uMG`;whDIqWW;|M>y|ae}fH!`OL>37}$A?u%0G$bIBo3)i%o{eAf+^4{LSGy< zsIGqX_8UV@_}dt0>XfdljAWQC D8GA!zBfjb>Wj%&wE%F9k&Pk){ZD!R7?U`TMgxu#7G z_=vBuMTg)~)AE&25U4rnTuyhiwxQ_oIr4nZU8TaAwD=gp_WJ)Zlr4!V `bI7r_Y(q&xn`bL!Wgh1*_v4Sg%T0mM;SP$ zTJtwj1*e_=Jq8ohTA1%$`K)AmAh;rcX&y~MlP^O_#pp(&)VMk=i6?Gp0=vHVOViGJ zrB+aoqR$cf)9aIv%2N0XGZT=SFCWl}X{7o)J$tmZy4+j}rZ7(nz`rSw6zT8Z`wnMe z)Ix<2ZOUCjh=hcO@@m^Yh!Ia-=7D-Snp%UCnH$|(!T+ajZpt9}o*z!XUkHObp+880 zXb(NF%c5L#nBpNM${uJDpL>N1RseL n;N)tIkS8_ikxm_`0Fr@w+Sbo z%JZZzKPb%>*U;{dk^ov19(s&Ds&on%I4zN)DY1biMr}GIeyEkArtqR)4={WuLq(c| zk-m9yu|6=y+cTdiis;)v=?PrEXI@A& ; zG{}W}uBXI-OQPH%v%cN2$w8^zhT9W#PjKk}qsepxI{8EL@_6O|`KL9W5i?N%W=Lvc zHrCS)c$DcRt>0~%H}Lq^CD@VI-F(MS|I}@}BCWm<>wC!`A9F_5eR;0w!0S(IM~+o# zpRs+`<2UI=!1L|=g4Uh?Pyc#NLbt9Xgx&V?_1rgyP>!ir`q(;JIq^94 jB$G0J#>h19^oh^WsuE;f#ExTUuH;J?e!tyKk0G^Y`*Q2*9k6taro?9 z`0*eweTFZuyWQRyh2}k*c`TBBu4sB>y4UJ1G Ohde@TrHV$RP0KFr`C* zD1gy$iB6hEBm|;Fu_&LvPTz^NEQPMczlcqCD 7xe~5c; zdI)CT= w)wlZD8&||Vo%@!;*YipzozHm7In!-S?3Bb0&fpS6p(W&aF%CM@8pM0))>g|7 zXhKuO7kJN@*mcbY!eb45pd^-mD72Xf&32AxpwxA$U)FwzHc202FV%Nxo+drW!>}~5 z$AJ_*H5yl_SL!)PBJ(fx$s_|cHpJ60DFIF93-WbxYz>|GOw)%8`(}Eo^BsR<+Kk64 zQy17}1iOyG2DxE>xZ~_a`ea&ihvPd32;+C3ikS-NP%(SQe)0kSeC&Y3oby3w^B0)q z0*m;bw$DtlprXypxdBIfcqRli7WZuh_V#dlp5Z-Go+?fWW$zR357+9)*8)q%jJfw6 zopB3bRhwa6Vi?@EQ1l9sQteyW`bepcYlk6te-x--Nigda3}5KD>7IuV^7=q9q&vUe zcLWDV)B<37-T)tmLVM#<>A+?Z;mJa9(u0zV2J4)B?lnStKcM3nQd4Qdb-<{=Ovy&R zsGuxN9BD@Oz%&3Y9hXfG4FA` Y*62~8F1%4@H>UtXUaSKUVdo4tG(C9#2>kdtghq{ z@oXP*>L#kk8+CnU46=9_Mg?gU@(K?PAHq+YTACHMW)pzx%i{Ji=GI)-zZlTmkWNf* zFWD%Tu$qu!DC0V71%XdAPxcr+Z{WZjZ(jbU=OjLIsZ^1!dwYd%=eebZt}nb`zJ~`U zB4DWJ`=92_=_0;o!jXX3;oa%M{xUs>;Uy^Ad3$mdX-V3fi%=U*U+N0q<|@wa4J>XA ziRJ|uwOPOs9rULP5=Ma_Rq2(pq76lBHM)et1*3)19-=#{&B`WqePnN&%8JO+N7rFt z(}fYhd?AdcTTRG>AgoySx}>f9klxPGd7rb{LXRC5I7BP;0zZ|T>Kd&sgUy8j`}!mn ztF`ol{#fqu%{sNTmj%TH8D~{>Cu>D(drBm4;vB#hTbuA&_NyJDO- j|>?)o-t3~9V3xWYRh`-Ai6q?J95Ek{V(dSb ^^ v zIlFaCICKA|60Fb-OAM{z(#HBNgX#pXXqkWESu}GE#k`)mQHkCl{Ap&KI=ww{u@VrZ z%h-au9zVyNr=B4S7-=vWUXB;+j*(Q7ec%GPPLdT(cc0R;@-_$va_UA!CxvJ=&XUJK zMrX ek(PKilwIp RB1=5Wj43q|9$r#yhTz%-|#dNho0?P3X#dqyRh0gH_eu~@c = zTWNtXA*V^E3 ;OQXSjLZe zg7Q_$`PorOY}>Fe 8n8a(?K}Mc|^{rX1`aV@-5PiiM=r?^WU(MD5@E~xQhbl>&X(%;I2koNBJ{ev#b`hv@giT7OWhj! zCbL(H;jKEYz7xJ_Y?w5k5h-2%ExFEpe5oG;(YLQWdDX3M^Yz?))Jwl$OP%-_X;0gu zP4vjR`h&Ttu3-rPT^(ag{o!klf%)9{gDLNO|7J_wW5cGJpJ&IHaSC%s4T0wooUuB9 zwBF@Zd~@uy>lBhul@>s~F+1y#4c_Oyir6iHMf8NzW@`P_gJvUj4Uw9(%v_P17^IGc zV)@FYUo}a&sHWqFw8G2RB3^t+?cu?bi|!IFs#BKwweN1}EpVG>zt?5dVvT>HQVU$9 zHTf-9T}~uBmpT^(_X_JNCDT$4*cpjFOxN#Z@-##C1BG;0I|Q&M*w;6<1Z*{WPrG+_ z3SO{b-rdz}TnAN+fbV)rOt7iPo7=yNPTIwTk2^W=_ynxJpt>ul; *1`w+{ktQvm`sXG8D=u69jrQ2;*4b`Ma~Jh zYxiOUM`ATOycobz2$?cx&J?ld`wyUpH1=B<)Er1~{_8jPG5%lPKRy;NvSDxEQiBt9 z^jy0e^DQ;%tF6^1t{8v$7mt@!(U$_Za0amoTDnlsd4+C*p-r$Rf7ws|($h+0)Fcn3 zo`Ek@Qzp2eJXxhmDnu&RTRUCyS?Ln;AK)pzyDS>GhF1shLvEeN`CaL;c+ )7})K(h!br?--|6r{i9z%NqYYX(qIrPovPh#pT?bpP~UU zrAdDlG9pDEb9hy&DSwrj7*E+Qa2cAT;G!3Zy2Z0YL5$xd*Os GC~tmJO3#zym?g*jH*PpJRlqMVs51Xa0zi>84* zXJQ$ZIaY-inq&p+i%>-|hxkvtN&<8Bj}Oluq@ZcNsNvDW0pF9bBy6%Y6%`(b&=!s} z-Hv<}2|0gu>wOjieT7nhrL4>`L?5eIeL;RR-Tx50tfrj;yroda{SwxiVu~ATqz{g0 z1K~bDF=LyH3;!!J{6p?&dm{wl1_fnj=1gNY2SICNqzCzp`;X=RA9h*_#OEK&!rb<+ zwF~oKiS<7X=xxvbATF~1SoZ(07;S6QAUcfy*#FM*uk{<`O)<^U=bt0Ej56pUHSoXC zv@%rk|JRJ(+)P~m%h836iS2)a*sgW7TsFB-{8#Jtiu80SB5>EF?bPBXY&piJ$TBia z8@&?DHcli^@TLDeU%uKP6;nee87okHG#(cM7Xm-6LgK(D9jKd%kJe17CQ{e1gb(J6 z>!gsNYUi(840gzB{g!f7k}%hHN}*xJs*4$AVpkqD%`Ii-I1DX;)*Tfu04UvKr=g%n zS47s*&9+m|VWS4{n>SD#BB(gk@Avk9rU&_0{mPcirD$eA1?MaWQZ7&e)>rbZypwg5 zLeDQnh7o}t7+9*1l?>XKr9fkL!$7x^fH8(Pi=@_OD}&K)E}bzf;8$acPfXY>GUg5_ zP-_RF _OHt d9Mk($SOsEpc^LDr=A4S5TMsHn^M+Fj_{DKGX-cf zRiGoFr(s+2Ev64r&HU1in8FIoaKbK|`;|UL1C4=Ym@_=p?gXRh3fO10AjX5_+6yWa zdPquk#EBy^;?MHBejm5kp*h2tM#xmI$7F BDlaXE*tF_D(CxQj{|s?)CXu7+fVSJ4#Q)S5 zm2Ic*)-vH6roD>z1mwWV(FAsM)ZZc0^owE? V@iEktwtx^U_*jD? zl9N4yB8tz{xoM(g#@}pVH$blAf}heho?`nv|Basti+lj_&aEq5Y%2nMnrH~hX4{;( z*6a>>_fFkxO{|HcupxL#f^2Ap8~K$RgMD;VP%{28d!aB91PFSjH>4exnXM?iJUpsF z555)RHGHJEXES0tvdRzry7KBM*O)HW4GBQb%uTgee$)S=_EE_Xyt3%=gylGdFbQU^ z*cGBs(VcW1oY&it&E14CdQL@B-;soJ_YkOKUd}=ygoYg%Yh7w!YiMq8ZLozG8fc*R zq7$d$%!d>p1-ux$b;7+WRK9m1cWH21m_3F`U^uJ`u9Lb8?j$IpS`In4Bd@feaf`DS z$T5VB{7K{XCEUJ&80j5fi+`Tv3FeL~U9Q$ J`6QO)1+wDH+Rmg429Jx2ElAtQ^GMc@YIPY+jqWlfk94(mkgo+%O@dc{S!)#t6S z{J^A21KzS9T13B!_wV3*>htzUela-L6Ry&f4Ik%A%ibg~Uay6HJQ?}@I *441+Qb|33)N|dPv%X-JaFVJN3%K}@ZYG?#W*n(G^$s~9C~y*cP<{^<$Zj#o}|&= zTA|S=X#G<^E5L65f=aO(-sKb@dUhqZJbqq%44CFru4EW4RX(SCW0x*LotL1vFp)U_ z_kHEYu%Kr-aZGp;W;uyWp2JyXkMrX%Dk;0$bWi1!to_?W#LLx94sRf67q6E3b9Rqm zp8!B?b-ps=`{T^Hqx&zf38A3>RG)0sVz)iRx1Vpf3E?}8BNJhcBCq41lP%HbY;e~< z{jc7amm>@2+H}mr98ui3HW1y7Tp+#1E`hF}Hb+{O*7{Mh_vl5H^G@e9&KhKM%|q~| zO^pJS1<>jBYaDH7{icl2t|c^_84KVz@*y^vrD??s#mr+qh@DFb2JiYjSK3I=@+Y$@ zEBxe)!TR+nKa4Mv!4@_(cXimOa#0*`n4%n5i~Iz&TkoI&p`Y*ZT0q!R6w4qL-zUkC zA{{}X5uWJjdaTG%xwzc2$>lC5Ftt9tJ1vY=G5qWvBBVk@>MM!}^#i!>$tO3m`+lBr zv!jan+ZXo}?tYny6Mi|_{y9vPG7OHHOM)Dm`U{FOH5a$!Cqf=Ev1@Kopu!G7-%G2C z9KIP=Y2UGkw=K@q6Hx%s2tTBN>D;L(Zj_HG+&~~AfthKHg&W2d|K8OJ9iL@Z$LXEA z5?W~#aq-6p>at<1Q*M0Q2=BraYe8fj=9VZ*alz%lM#hz&D!WE*okKBw1b%|Q*$6Ip z9C-t{fYq%Sa+BCSi8vH0XVV!#rOvn$kjGA(J=${+Fw`-#-#H(SCokz?2V| }mxbnV_eRj~Zv-Zh>=-6jUJL(CDBOiu)Kv%uA0ryr>J!|_jj@PV%Ke!a z!1sB!v9o=+CRwudPpbQ1 AiR1QyrSpi` ztkQ2!t<_tc!p5q`ii;+|A;#Pg%;Fixq4q4i2khJ3drul8ASi%Q{}x5@?P_>&Q+7rw z`meT-qz^B!T7yBql~=DW=AT`$azTH<^HA~_z(;*rUL(5f`Ez2T$J;wKRbDDRUUzli zH$9=I!gztBc65Q`U^T3UYvH~wOUg8&8Lt_7RwHfer)CqQ%>y*RANBoTa?ZE;!(XEB zxoMbH&A!=Ns8ZZ<#MlVVqVG?gzV1|cjl4%HqW6-ps|VX=uWNoU0bl(Djf6wMHwIVC zK7+Z97FU!ntRJELW7t>ZAHTmw{VnR&Y+fL7{~f7(H`eUznkREbr5QUvt&-kg6Xxxj zCv;6t9IpFD3?(_>U0lazJFoKgkJ)aFw@iAy6#qyf;#kLedQL+U_;9svAC7|7yA=!m z>>4+3oj}SJ-WaL-07IrTT jn4p_7tUW1}5vliou->0uK?RfpXxu%&Pr_~S;?X2D+iFpipr>mN`X3V3n z+eogX&tZn`Yc`_pf)|UK+)2F-`I6{ooVSkoQeu1I#+bx;Uzleg2zdId|5S*1*i#kK zYsZxc?w6!!2&?9g1QvqzSE>E_OY%<7e>gm@xP x1&Eg!`ihH-?e1z`*?Z|&hwY$LeK(ur9FCX{80JrXU&*=W h=VsbhXw)A$5wQSTZxM-F|QDD;z Xo~J1`(2x3tIA%a9Q7N z?9l@T9JEgn>^C}8%A)FtTkLo3w0m@nmA1_z5mJp#j{i#IG3?mXjc5^TH? Ty85_z8x}xR~<4bKqt*pcwV&)u) zkvTN1yC7@5A%>_~o6)hxp7C-3SljTIY7np0OZ(-)hU*PJcio z@gb&Ld=)F$_Y1k% n$_1_t>tg@aScu?X^4YH>i2P!#@)@$X~SLF$v z$An71ERxMS@Pf|Tr3TyMq#K312nX(x_}%4}I^`kOImL%Jetld4hY`_8uCj>TJMnEQ zY_D?9x~Xfgv$qv>k6n28U2uud`)dHe7tj+Qj&+A5O0Zqk`{r%Ci{}ibia=@A!{^(D z`&4U!Z4gF_e1D0%pK{5yEbLo*OIM^=Q~gCG%`7b7t*9WcPd7IGz-3e8!KP2oczKfE zn`4K&fjHUjcK okF|ss(E;%tQ%I_aVX9+2P${ zs9oXSO7!6!XgJusb6MOFBUx)CP7{Wht5hK@U(R-lO#~;qxlI4F016=Rfa~*xbYMwR zu8}L3M4J(`kVKfx5r-;-O0aaA{#TbWlkVM zmn>piaz;hWh7Vdd9c-SKPyz!wH$q6-r1;4@uOI(rX^kI5h45Nc_^}G@5u??WLzpd8 zIW7V^BgA!pxa1zX@BlC{TjE4bA_h%*Z68?YR5p5pu4(!A8D=^!s3w#%uv|sVV*GP~ zOf_^1ff_bqqcmazolUvSbHn{wy5<#nYhONgo3Z|PDEzo`J-u&;?7W@prI?Ku7PYci zwS)5S6RAQgGn&>&NvV $hypc)9aNE}fgvUEvAts=12;ODSjNFwwj zEm@waKXJ0yA)J-ygCB@TyNbyxY;`uAM2dJ+hsP182$@Lyf-Zzwq}{F%K_xvs#7$cZ zuvLu{II;?Wjnb;=(7vu6+0FV)z^SDfobqR1pUhK-4N{j+*tL6EJSoibm-N<3f%;aJ zdN{Nkm69c4gmHX3|HaZ;&jHPmB;VAm%2a4ck0_au$%IM>1~n -ofK_AfBr8TPLB+Cc^=aeev(%MDwR23J5y#%pa|7UxAF+Q!e=#$2YQOrSm3h zW^M#QafCLPDY+$2o$#yN`ad<>fbrg2ETL~q@Hx}+|ItHmvZQe}f~x%s?2c;$C1&7e z;$&uJ=4NMNVWVYYp=4sBq=sRXb1)S%ay28O660ZEV*Wq6q-{5X%5kzVu>ZpgXJcYu zW+S3fHPa-LwQ@Hj`qz_{n#jh{$ko!t%!tU{%-O}t!JdeNfti7s8b&~XD2=8R7? Hy1OxQfgpfzp-~#-N?+1)m(5^ zIkw3aSA7mOPoMvUru&ihIdT4@SYo`w5+q54DiICvxH{}_nno(NM)twtOj`<;zr@;! zWns1qMC?a~%D~E?egQx^12C~@2~rOQM&s-NOX5YmbI{Nf>JnxNNpLj4s%en9ilIs9 zFk4x?uH=w_mNX$ZARqy||Ki5J y6Z z4T%`B#5F=vge@$>_z302spU&|#Y|9!+l#;U=61LK09bCZ;)Up+VQ3m@ND_ktn;1i6 zn1zKj6*Z}foH@_!Aqo{xBtl%Ro5Yiuf`DXbdLo+4Hsy;(TJR@H*(O86YT|kM9D?>} zy(v2^(NT*$vdE%}LJF_OqT5+QgpdRV<)GP-pL@iL8sk@ZO_3&E3i059VS7~62s0}o z1|{sVvTi-Ql76<^L#J@e^2AW9VlhIgkq`Bxq-3t95WydDGO`eW5><7IR`zc#1$igs zVWCPULgWN228kJ7CotWQt!6i;t$T=E^#-et;;YW4OHUmiEgg-k$-_V-+*>ATes22l z7W>st_iH4f_tcBOehW7S+CgygitA(wb!njBB3B)5m~+Wj`tj2hv>62tE+6J?>$a5- z=Sv)r0(uxSxQ(8G!(Kx^xK*>Z!`_KOw9}ae%dKVSI0KSNCl!{9LkE9#DX%N3+n^Tp zBCrCPm1})Ki64)IvA^t-q)O7o_Ma7JynP$ zyIeC?Ajl*n>YjtAQV&I~@(X|eiqe#iOBM8<+K?58ffES^uuVGkeKO@1G&M-^CM+%( z48@KeFKKb8o5Y;6nJH~b{(1+c&NrOGlkRlU!@Q w5vobn;sQFmUiEM%8{ngQ<3 z-7R;7ixzGN5K;H8>V6grdzDDH#Mmmu e9dA E$bHZW`r|Y{KJRcpHI2 _0^qMhzkzW+GN1=6{vS z4i2vWDw+RHq5Pi_<_`b3|G*gjhZ7^x;gevOU=!!$5@8jS;1(C=5a(iM=H_JP5NBp* zW#(jKWfx!~`v33qZ=wGi&VrTsKbBo;0RD=Mtf~cC|NX750G1bQL?M-cBA72Q2^3U$ zKz@KKvUr04(S38IpIw&wviNnQT$g2X?L{R=ZfRGm)Z*CS30 SILcI_S>@r00m# zSpez1kAxRS>WCI6O!zbegcmN%1uV)0M`;8mVFV{Xz$M#HmL10Gh*4^YbHI`l-0tdv zr11(eH3UL8D6ScFx`(10X4Vb>p>;&B9iY(-$E}Cp-1lk+Z`()M3UynfGLc=57?A9j z>}OFGK~FJ6WwJ6^z(BQ4Q0>7H3>eVC7r&c`wX6m{>;K<`RpS&HTV ;mQ25Vsw%;`*Vn0D(?ipca8|ZWt%~DAoOH?Z9n& z9JY4_?=pJ%S_@m}p6%f7Lj+t<#TH}^|C>_mbjVx!urO2MnGQJrLrMQnYJ2PX-vj mO b4NC%6M+nK62zdV-K2v-hOPNj9vP4Vd5f zq@{n7nbXc)!1_w%?r(*4D$-9sZgbti;VmG2e$~^{2c|t0^;};gmfw9=+d`}VTm9LY z7UjYbN6sicvn~+7*0?t$Zu!RPpOtF&A9X&qLUhu-)t&8k;-~!XzSQ{X@3Nlgop&|1 zOQ&9n+IPM7N7bI@m)euBsd@76?=DtZ&=Vc4YWvUZ+{6Z>%-qReu0FPKXZHfaQ(vaO z)ONlWJ855~d7L|s7Z9G~^`E)3%=6br$ND`j5>phj*Dsm>{E>{I1}6|YU#s) a#h>S6-|6Lac4rl z?pacA->?3{;j!|O+cVbdbxwJAbTd!f&i>b%JPsc(?8_+O4RejE?<&^WZIrTC^U}q7 z!RI$Bo^Q9zeGxlx-So$urJDOBdTtvm{>n9R;nE6;|96kr8-D!H?F>BbCuh%bbBRWa z>UTc3X6`dKS}!D7tz5^I{XS>U<~Qe-%zbHn`W?^B $hF16I0NKuE`_|az-C484I3<0uZQ4mI>(_65Zbhc2&)vJ{ zoNM`{NA2yMA5heRh_9V)Z zT}5_&=e>DvntAi4l79b4&D{Gw@7#0GJ@>3XvO1>R>xA@oFg4d_(m6`~Z`?k6Ux`U$ z(1JW>DvcOHGZ;rRun2Mvq8XUd^diE%Lj&9c>C8d2QKOW+1HI5MaqutedBpk!vuN&t zUNnC{5A2trv`FvJFu$Nc8k5eT^9B(^xTN_J;sJhv;h{lvmiY7nVtPyTGp`8GaF|at zlObs)VxovJzd#?!iI^;6rm;a$wD2GrybTS5IS3(uG1)Ta3v>_grnALyF?qyvc1E^l zB0x;Oj2XgW0)v9X{K6z>VKLCJBS1#Iajtgu4&yAxiKb%7S_UugFwaoGV3ZJ~*+gq$ zYBtWq$ %G+b}hyjyD^#JdHpwJk7U=ep8?*Q+>a7lP< z(F)j_+1fj~(rk_Fj4aG-%@8|h5lXhKB?$HQ3<7pS*HvO6*rJ7SGBdFsZ{}oaXF)SH zayFuwJK5X9|7_tIrZjU)8?%O2U`s3$BF5vv-k~#sP%if*EjR~TDs-hB%$&^aodCRv z8O_e#S!`O4tR?ewkMwpACsCL~EEl3@Vl>{&$hiR@N7h=oM}+$Zg-TL@BU&jV7w56| zP9j=zWGxhI(BRM@(FQ?;JDDq5ADRPv8tNVp0Mw>M`Gxz6wlqyNIak&~g$D)e`+G-v z`%9waiq^@Q_yR2~JQOx`1QP1qFs;POh%JnFXsEs~NEd%84&aGa#w;{6D3nHgOEf1> z*0T5qMWIj;GFBe3GI}<`Z+QFDKsEtuxO+B0<;hwkUw?hkw>pNf{<00$ f(mR}xUV 8`_I|*bhY?NQ1zL!6V0|la0wRN9`KF*ys!4FtJ3JIf`+SoMADr;Q> z{K7mX4;6uEJ#FDLZ-0OHKyUYkiDa#!zh8i#m^47JgVa#8h&JfQ?x=hZqXo^tsDjcy z)H^K9+lw~C&)=Jd$*2ZG7|L4Q;GocOeZR1<2yYV07>d@`AqWW#cgI&%_*Kyx7|L2w zj|d;qgiMBL8#;NTk3}hreoZtPlObcd5WQe`&slJ0NNyG;L$qL~eqOYgpa`0ecQ{6l zP}n`;G)(u_wq{x=?R-FDb#nWC)kf352?NL@01yD9uUuMX@PmETS8eiN3HCjb>o( z7fzcZrV=rktjwF5avE(x@T7-y&_njFFtRV9bvggxSC bD6+JAH2Q1iEaehoN z^2{)P*La^pW(TUeKlJT%&g+_W|9OL+-LmNI-~B@m?UiG{-+fRXWaZP#TmIr~8=m{^ zv)l5wEV&bQs^{b|#h))tHb&1E6x{w^wx7|Ru}S6n?V-`nH%&dVe*N>2oT)FoN{+vF zt+^~vUCdd(EoHFoqq3Lr2OdxD@(sCIaq7# nRIgD$l+Ym0aj<*bfW)TeGy`YvXkc3OHPanCXt!k=ax+8x -XTE$+?(dnb;ay1`KUOmr{iwk@x
~} z*Z8&%$7nBd(VQ?RL~Y2A)zND{xNN<*V2#02uUkhK(=OJ%9-_5c`|il$+h!M(P2iRc z`xKYqV^;2bR@?f@K0l4!d9f41N|dhcygViE!m{yK7pufBy!zqt%qd|LPikIWvE3(c zd&cmkR|>8yy1sVCP{hvo*wx(;HxIkF*_2|A=(CLcR{4c>8UE$@Oc$2!;;V@tFANys zFehFYS xqThY>?{>Ft{imHi2_E+Ao%-B8y04R#_kgz#?krJU zK0x#L!|iw0ee_%+%6Z9yhd>*WYZ)L`~!T8&5mz$$I-CUM^C9yx+n3$RU5%L*EOk z`)KBUFdF4va9k^CR!xywxb2~CzS=6Q?>vt$8OPnu)t>!CZZ2m{nB$wx`$A8w-Q@Lb z5#1+9=UCp!pA+9-d+$x_oY~$`?c0Avxr4JN2Y2dXH^E*rX;Nj6ecF%vSZ=y9gLUnJ z_eJ@(GYyC8tz3FLG4R3*nu*hl<7TDEU8_;_ITdLyC&bjx&8s~y|FF*KBO7<@J~1hq z^*pfurBub|`cEDd_Kn{5aolTOhS{*V2by=RcRjBgJa|EsMdGz-+?f7DUv1-U9Xu=Q zbyb(H4*oh$ydhI#@A-Wm-giLK);PC9x1r1S=N9hJ8mLo8^H^qjwT`#O%^=cand^-u zg@2G4^S9i2HEi@A-yc@T5{K_nPaCzts6(xV^NAJb;?h^TtnV{5TCH-H)xG!=VMB9I z3}#q=^}e=yz@E|jPFlpo#4Wk&Huk^BWsAlwsxR34@xStLx^um8v}47X%pPqwOq+R8 zFZC&R^Q+Jig?5jJ4D;I9r=4lvRRb!_7VW$^uAS W^RRL-$ z=0y%CPQIO%T*de{7EzutK&enQy+f|*&U?PSJxhbPNB_5Qy#Ecl_LXy^d@8PPKJIrV z&;8^WN0Z?B^e=YZ1l@i-4PYc)E)Ml?^WWtYi8D&7FBKne!|^JOezxp9$NO&Op?%lW zLNsp(RDbPeZk*O}KwXdbJ?1+y#&$XHwU--w`eKJ$Z9I~ jnR~rU)+LkW(su|| {FaL*;ro#{Rl$k$(|H@Y)^Fx3-r9Hn zZqle>j+@?Xkv9x*e$sx~&*Gs bJrGaS!WlxL7o;#=0X>@i{ zy6(dJ-ycj-w;R}Ix!t;(&ad2RXD{q>GG>fp=iH%lJ@qy?eor#jQWVS+tPTCrYxUfx z8VSWi2ZmR>+8NgW(wqCMdP?c0qsg65tTVl`=7+C*=sMG $m4=Mxs_7-?m pPQK#4AmON&o?eKam2;HY zh@Ppwk*h6UU!LRf>XDxFUA-AP-j)2-oq5snwQYhXTt_PJvDIE0zL`AtOkiO4o<6UR zmqom|{!_)|L)k9xwH0;!=I`y1ug~-F{CuUY%RSzy4_%eUjSDDOo1MGj%J#cwH1tP0 zWOrV$Dq+i^ B16~B{_ppsR}b4e7LFZKlWSCVHRpt@`=q-62HNjFtNtlZZWD77uyG%~zkSH1h`nlbhCy-sbO`TzLxY18DAExPBATztbj{P548(63$7 zI<8neS}sOcJBvyiz%?!GBy&b6)d9?4LQ)4%CGKz30nx!uSXdg)TNHs44buh?S?T}_ z*R?4}!NJbs7}D8HuCz+P5>p9;8iCm3(18pdoewIhP?tc&G!Pc9tjl^NSHPsRKwFm5 zLRh%|E^{E4LuWFmunG_$1)-W@>Wd^;E}KW^@|n_)Wa3vM?2(lEh=DnnUzjXRu>(zo zZ3w@hDi&xeVv0&nX-x&!;#jQA8=7*O@&Z06*Mkw)ab*{@=2m>uj6K}v(X04l21nEx zNjtl-l>cENuI>B>gem{3{n~b5=|ntv@SlVuE}?^^ k3Z2e%ows@3X{8Xmgc{D* zLiYQak2+jGt`IfD@rcFB_e1H6s($yqxLMaN@=v!vpY}| )052o!s|K0uwVv#dgwRZRJdVZfD zQH;~ec&E=@J^s9A{&e;rwQ-x(d9`n|+l{=Y+;?L8k;ZAAH%F^YQm>zLbL-~1i`V{> zk2+))GFg91<+GpGakl02d=yScE|UK^m91s}^LV6l$jL#LpC0V|u6k|ol*n7&o9iNP zL@h`^Gqy+V*mYy}xm!iE=3Dhc>~3Fnk2VNj89V&PJFn>2$ha3bqHmA&RT`!|5qWfV z)%YzD^WW}7rXN(_llc3=@9MANaU({A`1Y|fRjFp*@UiE08g$Ea!iqCLix*^mRlfIZ zo#7Hc-?Ndcd#&y=IrYY{ZAPxWN}m`k&D`@*z5mq2-_r%Jt!{qXyU w3gJTBBZI5@5C z$9!wWSE ZcwsD_Whi@ad#W8KaZdtT=FFiq5b;=RfQXdvdF8hFYij zoi|*p89(Wi_Vm5Wcb`79{Z%DP uiCX>SU@rmplou&e01Lq>6Vhr2UJbt=8CdT?_$zd<_JkInwJ zEmEQL621MJ={0AUT#DIw*}UrVZl8o?nr-o^1ogu|raNAk6gu^^6Jlu8CpTKlXJbcW z`uK~nh9#kHMZv1=X6|PsRj|%n<-a+Xdi~sltybUt3dVNqw(qppu*)Xx-VeUSSdr95 znQ=PZ`cgOboB@lUbamutcit8FU;FzdqioiBImRwGXrnyPuC2m({bMr}*saW$a9Q zG;u&u^yc-vP3kJnF1}C7|5R^8UQVm;TK9%CiM}jd5caBEF-JGqp@^P(LsflG=k&^U zI^X_N|754DT{%W?bGIwp>CfcMJf0t_30161=^Qz*-!HG%PP4}5Z2fPqoayaJCOU&( zdl@bt)w%do-%8qA|MMA#N@neCqm);sxgq0+<-DT{ iwEH$^Q)H(6diyXtps^t@z?aQ|x6m@L%=*V v#`}&(9)tu&4>IlYDfL0|QB&(XeV0FdXg^}tDyt8>HT%DL zYsneCY}>duNap_iyKFooMyli )ZOF+vo$M`=_O8ub4ABG<2R);bY$J6~Rx# ztnA`u8|@ihHmzTW%PXcQo!5P{ddvye9Mi1}MqHe~egC*eAI5i$LC#( tF6x#urlutXRjWNTesRQU+K_kFItPND4VgLKY^!ksN2mAm+|SO* z)~Bvi)}2dK$^9C4{BD=0%I )^Q!L}i 6~FskA%)a4~OVM!!e?<4p?p zxw_;TAzi#}9}Qe``N@sgviDXQ KF`nmI STS>av~VPSJW)Y?``j&wbj@-FNl3hJ2b8*zxSe!__)2yn!Q- zuOExOI}9<(Nc{1$AXi&|)26XOx5H*D+qzT?TbP;d%j=k~7k)HiVZ6$Jr+1`%DSJQl zR^;P=R88}^`Fr1=?|r>$=%ea%x0q3R+mYPZEf=yfjSiR%>olcai+Pu+;gI+~XmMiP zXv@;K$dwbW{ci3#Fnmgm>(TDJmSkRbdB(C^%tTH*)F>^gV!8$`4bCm?xaIegar*mv zn%&dNei&f*!Re9f6#9CtR1JBvevH#q -#b?9`uQ<< jdrXmgl7(iUT{CNiW4Gu09GgE0_a~>>tF;J6QSdT*!$# z_saTw_|@@Nzt 3kBgA|`Fc9 7G_U(qOmZmIr>uwki`%JMD>02 z1z4cI3x5g$vKYeoSeS7e{T!bUH&?TS=2IHN5}H 2dz6@PhyC~0Cyt0< zI4lvtS^x`aefiGh&>5h(!O2e-fOf%S!GUNfpd?m+H$sZllA>E{3VU4E;{Y+TA?T^t zD8i-ywp8*91wX3)0cj*v2?h(;j7MXE3c&&0nFpu2A%~jX8sgEUDA%k50BM$vBjPw5 znTX?BhD_`jKyZh9OXV#t*SLnTwr~w$8UoY7wSx;k4F%LpCl*^bhz9m;aVI-=Lut0~ zXjFC(G$Wu9G?Rn|L4V@0trFNs&|3X4;PM4@gb5n}E`D?_=-XTYsEKT9M#EzVrMT=L z4+6M c!Lu$p@aAk9|rxjY`|)WBkFCa@L|i_fJq_|z;WjE^MK3cKBs zm HlyB5U517`b$)Z5)->@lVG(F6|oz+EIN8WgG(Nr4R>=ck4* =B9^t!N+Oz(n+F5il`fPa*3OG}`Jfui9LefX)WH0u$r}n5MXFL*O<_?$Y!3 z*AI&b2!KdVDT1MPiXaa}JnE~ZhmeS1I4}{xnns3DL2G?U&*Z^I1QrtjtAUY%%i_~n zT$IHSY3l^U4a=h0KMH#aS#Qq8p^0cFg7!DaGM_T!H2(E2$z^cpY_NZUZHvwWiy$0{ zz-QEqMMOZ0lL`^nB#3Zuvcmr_vL44LA{7ZABCbhL0hGYk>WV)HF=T kQS=41le$4BC`E0G6ZCXlF(Jt z0_j1a2;u51hl85(QGNr;(Kui_ p7hVVe7f%}Qh1HA)I2Q*xZf_5l4Q^>6o=9f@zRm|7c81>*T z-CRvlL_Qp#i0A$VAVMTJwZfTC5D<+2d~oD2L4*j<-3pga9+QgsfPjb?1*KT8h4%xB zT_K_!j!i^6gT}y7U`sa~+w)&_HV#-B`EbRA%mJ`60)d!@z;R787_mFW;~R-YvsPF> z5sh$oA{vq5iTU3oHUNQ7Ec_DlAvebV&1Zj{yV!<21g!sH(?HJxI7k_M2>s+zQcpaa zP>Q*zPJ`wh1_;@mN>C24VbDaBYbmzIEkP~0f3iXE5P+qS$p`5MmTori9-o?O9 tW07lTP8Nd( {S7^ zKT}94NJfkZgen43+6Iwm+Nd}~niu3C+Lbsu5y@JPPIxV775*p08R~OI&jMIjK1A-Y zxo~I-8rztj{zy=ml 4q`_S3F{)LjA(MDdkzq&H#ieq(;PTI5ZK}S_rL?BcO$Mb~fsI zg)lZWiiHKv05%(Jw=#lQaH5eV8WyRA7TsucfBxn6#9@gD)+8)Miu }5w-pr6UiEcfcd|rW_O%SECJa6 zA^ea9%+7?kNHzm}!7@Txppt`rs8>{|XfxtPN0>w*f>vZL0+)zZRJahlsF4&fJXM@1 zeb5TH2y*dJ+doJy9%|G;fW5%m%B9vY2qUtHTm-6?3401zkGK(>#S-EosMR7^jR<-f z>KN*OZY->m1x`7L!vI$%WW|Bb&*Fm@SVlC9N32K0j2YoU=)Z&|gG4!DIIY;8{1^Tg zQ4Yr_BHdqLgrYZLVNxJl{RY57qdg&PoCOCI8mGbHf$0_vX`$AC8tCXHvI$9nY?T`U zg2nKPD2c-qQIdd3siidwWfR8&y8g{IS`izV1O5R}?ja 1rLzpNFT-$6k(uIou8p{1h z;cE4p0mxq*nTTctGzy+;1X&9&22?&Xg3rLD%mMyFF9tk_aA%?3Z5aVCLSP;-WNlIy z{x2r)$Se6b{4d(2I4}{#S_DjZR@Y(lYy@F&Ibf%Hq=7^VM1W`V8H%Fg&V{^ z$_RqN%W9D~CzeRk2&+*_T7>%aCx}MC5)rKhuo^u9g!Kjf@&sUlp^68oN@yq=4;YOJ z&TX!Y2pF_lm=vWNoB`l76^ll0NpJ#gO(QT7lxij>QBfoomhbbo%SXL>1W)n67XVQ& zEKqgPj5;*>g^NYKG`NXHML&hb(4;8U>H;6lCBsk&35CEaQotgLV#+|(LSawg%n|KB zE+1G4VyeI}1;GbcFal3T?2A}6Hz|7k?Zp7izmuVXi}oN6O~hGngtr75<>dfrQS>Fj zU>q>~qX92q*M@vK>`Emg-UTZ`hgOzoaOkkm%(d2z* +*Bb2iLGg)BoM}u2n;TVwbislpYA-IJqcmy>QLpebyVl{~OCZ#*lM0TTS6XLK$ zeANP2;<5p1xxigen19?@**nmV#f qY#3J8U*lvD$fB}|z{ z-E~9_NR}|Gy4f`#8*=hlc>XpTzJ_KwBVa7V{=>o(xLKGP9@3Zb1a9&4W#M3gy8kAl zp=1*WoIVJe&4982SOPJ}1{Y$TnACRzs-#@ud$b&qL>d$mtOls)6Jde_9|B(>J>@Sk ziHnZL$%HhO<&Dz`Hli?)8VzWI6nHG9fTU73=x!cpd26zC7W#ciZl4y0&M_fW6lxm~ zs37ScqJ>%l3TZ{J4?!vjb>V=FLN6&?Ft2k#R)7hR@*oR9C~hgO= ^xy+ixYr)gFAQjjYmEBlam54@O4Z?K6Rw;Ip5C;TNDjGX3&4XMh3dTxE za|xj@UZ72;XlJt+>FsDnh<%xr+MMhA@1LJIGk^A}PfIkEZOzo}DifU@dmC4_NjSsd z?R+>5x%)WJJ|R0a(IkFR@|me8F1@`nry})yuHs}lg{5waImqrI(}!=F@#3D($^78E zXU910;Iv!ezC*2Dso9&K^7Gcj)OVm=I4oarXl2JD-32zmrKj3f-L0^{bkQF1tr+-u z!i`wOv @f{wu3? zD)g9XlvKtvnsHutbT|K{^Vh0$8gZ$tJre(?UC%fqsb;?3yzCo;4zn%$oKV%e#q*f; z>6uqbe}i>DHFQt7mX1`pWifHPlhJ(drDJMeKVm n`fQi@IM|`rk;8LM`89h| zd<>8!)~REXU6$%j>hqmpvC;k9y1^wYF8b@nmpt-YXRN7iWj;`~!*j#?6XUDT_A2}i zWzcFBf)L(C9e!2YtoRt^yk);mj#k{|*?Y#r6AI}Mo%ZXTGq77#*~amqZpGQ2J@$8M zpHx+J;e+bP#9wUWc28}$-rCy~1Roja-W8SJ4$pmsY;hbm`fU*X_3%U51^o*(PMr=m z+cDSXz#{v)d15rA<%XY8F3ta4!e@UpH?Cdrc0%cVuEu<#E;RTq;$v^nLgB82HP_ zO7FZv!1N1mOp+=+SB9Ea_qgu=*y&o_%T2p&Iw@pK;=j*de!wEZ(THZ&?vhu$@sdd8 z;U5J-e>CDa7mbjWYxn^t+w;|@4ysvY q^My{C1PUhhqMxNxhP%PSwVH|Oh_zb&+0xZ125 zU;FFX;JBBON7p^L#