From 2d514544fc0250c846f12706d004d9b7728d0575 Mon Sep 17 00:00:00 2001 From: Serge Lamikhov-Center Date: Tue, 18 Sep 2012 14:21:21 +0300 Subject: [PATCH] - Add const attribute to several functions of section interface - Doc change --- doc/build.sh | 2 + doc/elfio.html | 428 ------------------------------ doc/elfio.pdf | Bin 138043 -> 0 bytes doc/elfio_members_table.docbook | 17 -- doc/section_members_table.docbook | 31 +++ doc/site/oldsite/c18.htm | 250 ----------------- doc/site/oldsite/c63.htm | 146 ---------- doc/site/oldsite/c66.htm | 264 ------------------ doc/site/oldsite/f14.htm | 151 ----------- doc/site/oldsite/index.htm | 165 ------------ doc/site/oldsite/x35.htm | 187 ------------- doc/site/oldsite/x45.htm | 214 --------------- doc/site/oldsite/x57.htm | 163 ------------ elfio/elfio_section.hpp | 8 +- 14 files changed, 37 insertions(+), 1989 deletions(-) create mode 100644 doc/build.sh delete mode 100644 doc/elfio.html delete mode 100644 doc/elfio.pdf delete mode 100755 doc/site/oldsite/c18.htm delete mode 100755 doc/site/oldsite/c63.htm delete mode 100755 doc/site/oldsite/c66.htm delete mode 100755 doc/site/oldsite/f14.htm delete mode 100755 doc/site/oldsite/index.htm delete mode 100755 doc/site/oldsite/x35.htm delete mode 100755 doc/site/oldsite/x45.htm delete mode 100755 doc/site/oldsite/x57.htm diff --git a/doc/build.sh b/doc/build.sh new file mode 100644 index 0000000..274e7a5 --- /dev/null +++ b/doc/build.sh @@ -0,0 +1,2 @@ +xsltproc -o elfio.fo /usr/share/xml/docbook/stylesheet/docbook-xsl/fo/docbook.xsl elfio.docbook +fop -fo elfio.fo -pdf elfio.pdf diff --git a/doc/elfio.html b/doc/elfio.html deleted file mode 100644 index 14089da..0000000 --- a/doc/elfio.html +++ /dev/null @@ -1,428 +0,0 @@ -ELFIO

ELFIO

User's Guide

Serge Lamikhov-Center


Introduction

- ELFIO is a C++ library for reading and generating files in ELF binary - format. This library is independent and does not require any other product. - It is also cross-platform - the library uses standard ANSI C++ constructions - and runs on wide variety of architectures. -

- While the library's implementation does make your work much easier: basic - knowledge of the ELF binary format is required. Information about ELF - format can be found widely on the web. -

Chapter 1. Getting Started With ELFIO

ELF File Reader

- The ELFIO library is a header only library. No preparatory compilation - steps are required. To make your application be aware about the - ELFIO classes and types declarations, just include elfio.hpp header file. - All ELFIO library declarations reside in ELFIO namespace. - So, this tutorial code starts from the following code: -

-#include <iostream>
-#include <elfio.hpp>
-
-using namespace ELFIO;
-
-int main( int argc, char** argv )
-{
-    if ( argc != 2 ) {
-        std::cout << "Usage: tutorial <elf_file>" << std::endl;
-        return 1;
-    }
-

1

- Include elfio.hpp header file -

2

- The ELFIO namespace usage -

- This chapter will explain how to work with the reader portion - of the ELFIO library. The first step would be creation of the elfio - class instance. The elfio constructor does not - receive any parameters. After creation of a class object, we initialize - the instance by invoking load function - passing ELF file name as a parameter. -

-    // Create an elfio reader
-    elfio reader;
-    
-    // Load ELF data
-    if ( !reader.load( argv[1] ) ) {
-        std::cout << "Can't find or process ELF file " << argv[1] << std::endl;
-        return 2;
-    }
-

1

- Create elfio class instance -

2

- Initialize the instance by loading ELF file. The function - load returns - true - if the ELF file was found and processed successfully. It returns - false otherwise. -

-

- From here, ELF header properties are accessible. This makes it possible - to request file parameters such as encoding, machine type, - entry point, etc. To get the class and the encoding of the file use: -

-    // Print ELF file properties
-    std::cout << "ELF file class    : ";
-    if ( reader.get_class() == ELFCLASS32 )
-        std::cout << "ELF32" << std::endl;
-    else
-        std::cout << "ELF64" << std::endl;
-        
-    std::cout << "ELF file encoding : ";
-    if ( reader.get_encoding() == ELFDATA2LSB )
-        std::cout << "Little endian" << std::endl;
-    else
-        std::cout << "Big endian" << std::endl;
-

1

- Member function get_class() returns ELF file - class. Possible values are ELFCLASS32 or - ELFCLASS64. -

2

- Member function get_encoding() returns ELF file - format encoding. Possible values are ELFDATA2LSB - and ELFDATA2MSB. -

-

Note

- Standard ELF types, flags and constants - are defined in the elf_types.hpp header file. - This file is included automatically into the project. - For example: ELFCLASS32, - ELFCLASS64 constants define a value for 32/64 bit - architectures. ELFDATA2LSB and - ELFDATA2MSB constants define value - for little and big endian encoding. -

- ELF binary files may consist of several sections. Each section has it's own - responsibility: some contain executable code; others describe program - dependencies; others symbol tables and so on. See ELF binary format - documentation for a full description of each section. -

- The following code demonstrates how to find out the amount of sections - the ELF file contains. The code also presents how to access particular - section properties like names and sizes: -

-    // Print ELF file sections info
-    Elf_Half sec_num = reader.sections.size();
-    std::cout << "Number of sections: " << sec_num << std::endl;
-    for ( int i = 0; i < sec_num; ++i ) {
-        const section* psec = reader.sections[i];
-        std::cout << "  [" << i << "] "
-                  << psec->get_name()
-                  << "\t"
-                  << psec->get_size()
-                  << std::endl;
-        // Access to section's data
-        // const char* p = reader.sections[i]->get_data()
-    }
-

-

- sections member of reader - object permits to obtain number of sections the ELF file contains. It - also serves for getting access to individual section by using - operator[], which returns a pointer to - corresponding section's interface. -

- Similarly, segments of the ELF file can be processed: -

-    // Print ELF file segments info
-    Elf_Half seg_num = reader.segments.size();
-    std::cout << "Number of segments: " << seg_num << std::endl;
-    for ( int i = 0; i < seg_num; ++i ) {
-        const segment* pseg = reader.segments[i];
-        std::cout << "  [" << i << "] 0x" << std::hex
-                  << pseg->get_flags()
-                  << "\t0x"
-                  << pseg->get_virtual_address()
-                  << "\t0x"
-                  << pseg->get_file_size()
-                  << "\t0x"
-                  << pseg->get_memory_size()
-                  << std::endl;
-        // Access to segments's data
-        // const char* p = reader.segments[i]->get_data()
-    }
-

- In this case, segments' attributes and data are obtained by using - segments member of the reader. -

- The full text of this example comes together with ELFIO library - distribution. -

ELF Section Data Accessors

- To simplify creation and interpretation of the ELF sections' data, - the ELFIO library comes with auxiliary classes - accessors. To the moment - of this document writing, the following accessors are available: -

  • - string_section_accessor -

  • - symbol_section_accessor -

  • - relocation_section_accessor -

  • - note_section_accessor -

- Definitely, it is possible to extend the library by implementing additional - accessors serving particular purposes. -

- Let's see how the accessors can be used with the previous ELF file reader - example. For this example purposes, we will print out all symbols in a - symbol section. -

-        if ( psec->get_type() == SHT_SYMTAB ) {
-            const symbol_section_accessor symbols( reader, psec );
-            for ( unsigned int j = 0; j < symbols.get_symbols_num(); ++j ) {
-                std::string   name;
-                Elf64_Addr    value;
-                Elf_Xword     size;
-                unsigned char bind;
-                unsigned char type;
-                Elf_Half      section_index;
-                unsigned char other;
-                
-                symbols.get_symbol( j, name, value, size, bind,
-                                       type, section_index, other );
-                std::cout << j << " " << name << std::endl;            
-            }
-        }
-

- We create symbol_section_accessor instance first. - Usually, accessors receive the elfio and - section* parameters for their constructors. - get_symbol is used to retrieve a particular entry - in the symbol table. -

ELFDump Utility

- The source code for the ELF Dumping Utility can be found in - the "examples" directory; there also located more examples on how - to use different ELFIO reader interfaces. -

ELF File Writer

- TODO -

Chapter 2. ELFIO Library Classes

Class elfio

Data members

- The ELFIO library's main class is elfio. The class - contains the following two public data members: sections and segments: -

-

Table 2.1. Class elfio member functions

Data memberDescription
- sections - - The container stores ELFIO library section instances. - Implements operator[] and size(). operator[] permits access to - individual ELF file section according to its index. -
- segments - - The container stores ELFIO library segment instances. - Implements operator[] and size(). operator[] permits access to - individual ELF file segment according to its index. -


- -

Member functions

- Here is the list of elfio public member functions. - Most of the functions permit to retrieve or set ELF file properties. -

-

Table 2.2. Class elfio member functions

FunctionDescription
-
- elfio - (); 
 
-
- The constructor. -
-
- ~elfio - (); 
 
-
- The destructor. -
-
void create - (file_class,  
 encoding); 
unsigned char file_class - ;
unsigned char encoding - ;
 
-
- Cleans and initializes empty elfio object. - file_class is either ELFCLASS32 or ELFCLASS64. - file_class is either ELFDATA2LSB or ELFDATA2MSB. -
-
bool load - (file_name); 
const std::string& file_name - ;
 
-
- Initializes elfio object by loading data - from ELF binary file. File name provided in file_name. - Returns true if the file was processed successfully. -
-
bool save - (file_name); 
const std::string& file_name - ;
 
-
- Creates a file in ELF binary format. File name provided in file_name. - Returns true if the file was created successfully. -
-
unsigned char get_class - (); 
 
-
- Returns ELF file class. Possible values are ELFCLASS32 or ELFCLASS64. -
-
unsigned char get_elf_version - (); 
 
-
- Returns ELF file format version. -
-
unsigned char get_encoding - (); 
 
-
- Returns ELF file format encoding. Possible values are ELFDATA2LSB and - ELFDATA2MSB. -
-
Elf_Word get_version - (); 
 
-
- Identifies the object file version. -
-
Elf_Half get_header_size - (); 
 
-
- Returns the ELF header's size in bytes. -
-
Elf_Half get_section_entry_size - (); 
 
-
- Returns a section's entry size in ELF file header section table. -
-
Elf_Half get_segment_entry_size - (); 
 
-
- Returns a segment's entry size in ELF file header program table. -
-
unsigned char get_os_abi - (); 
 
-
- Returns operating system ABI identification. -
-
void set_os_abi - (value); 
unsigned char value - ;
 
-
- Sets operating system ABI identification. -
-
unsigned char get_abi_version - (); 
 
-
- Returns ABI version. -
-
void set_abi_version - (value); 
unsigned char value - ;
 
-
- Sets ABI version. -
-
Elf_Half get_type - (); 
 
-
- Returns the object file type. -
-
void set_type - (value); 
Elf_Half value - ;
 
-
- Sets the object file type. -
-
Elf_Half get_machine - (); 
 
-
- Returns the object file's architecture. -
-
void set_machine - (value); 
Elf_Half value - ;
 
-
- Sets the object file's architecture. -
-
Elf_Word get_flags - (); 
 
-
- Returns processor-specific flags associated with the file. -
-
void set_flags - (value); 
Elf_Word value - ;
 
-
- Sets processor-specific flags associated with the file. -


- - -

Table 2.3. Class elfio member functions (continue)

FunctionDescription
-
Elf64_Addr get_entry - (); 
 
-
- Returns the virtual address to which the system first transfers control. -
-
void set_entry - (value); 
Elf64_Addr value - ;
 
-
- Sets the virtual address to which the system first transfers control. -
-
Elf64_Off get_sections_offset - (); 
 
-
- Returns the section header table's file offset in bytes. -
-
void set_sections_offset - (value); 
Elf64_Off value - ;
 
-
- Sets the section header table's file offset. Attention! - The value can be overridden by the library, when it creates new ELF - file layout. -
-
Elf64_Off get_segments_offset - (); 
 
-
- Returns the program header table's file offset. -
-
void set_segments_offset - (value); 
Elf64_Off value - ;
 
-
- Sets the program header table's file offset. Attention! - The value can be overridden by the library, when it creates new ELF - file layout. -
-
Elf_Half get_section_name_str_index - (); 
 
-
- Returns the section header table index of the entry associated with - the section name string table. -
-
void set_section_name_str_index - (value); 
Elf_Half value - ;
 
-
- Sets the section header table index of the entry associated with - the section name string table. -
-
endianess_convertor& get_convertor - (); 
 
-
- Returns endianess convertor reference for the specific - elfio object instance. -
-
Elf_Xword get_default_entry_size - (section_type); 
Elf_Word section_type - ;
 
-
- Returns default entry size for known section types having different values - on 32 and 64 bit architectures. At the moment, only SHT_RELA, SHT_REL, - SHT_SYMTAB and SHT_DYNAMIC are 'known' section types. The function - returns 0 for other section types. -


- -

Class section

- Class section has no public data members. -

Member functions

- Here is the list of section public member functions. - These functions permit to retrieve or set ELF file section properties. -

-

Table 2.4. Class section member functions

FunctionDescription
-
Elf_Half get_index - (); 
 
-
- Returns section index within ELF file. -


- -

diff --git a/doc/elfio.pdf b/doc/elfio.pdf deleted file mode 100644 index f7fdfed4f1a8afff5f0d42fb839cdd952e185538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138043 zcmb?k1yt2d(^o}VRh;&Pb2uP!J z`~5*t6nyk~zsGYt=N`SYJG(PGJM){Fy)?2yB1~Xr7#dAmS8XpE7{m&))-yxn<_57S zfLN|sU$+La2!ZJIO>}SA8`?61=|Q}_Xogk>`(J{6`!d}%LwkEuD`Sv?y{@gjp#ezQ z)ZPRnEGZ%;Lx1>Pw%-hFXQ*#)YHh^~{&{GQ!=ZsuKq96Vh9G%ET?0eg@8fa)aXiRT zR>6>?11fx-6eOf;uL}~;*Eh7Yv$nPSJ~kNo$HAdL4GuptxR8V84UnR}sfDS%^N$hP z|2QJ-=!g*3BO`uYzp||#c6Nq8Ru1`- zm>@rk3G!V|2P1(DEsRX9fAIKQAvx$B${iT+=OLlrC3PSjOG8UN!y~eR{#G_WkNMN` zq2C20bub*r$ieDB?S8Br`X>oNn131)_FY0>SN?51-`5WNoqX($^7+el!oG{?w|v5W zBO!Iz{u<>$AQll*dr^?)(PR2eNFZ)*G!{uiD`VhrLZBR=uYb@00t-O107460dqW{Z zeQN_lG~kfi+1ncGTB14iKMs>JM*w5rS=_{5%q~Gmeds1h+jCp|sjPU>rO)GPI4f=9 z(<6&n0d2KfF5;lp(&h2h-q-pI*ix`uEd+CkOL$elRCw4EZ{+C#Fg|EHu`PRG;H^imLKYrOu?SjQ*&ABf+ks&F`zw#eB5!DC?O+QS6A)})nSg(h zGBhyNy=v_QQs37WHcmEX2s<3a0RuC0aB89fE)Q%u=y1w!=jLEaA<&^{ zSyWWjKulmbGnADb#L3Fa%npWwtQ;&XG>_1-eLFrU(Xzpr;hazqI~yl6E1csP=>gY( zT|Xcd0agcm0JMUg9mKZJzWn}Y4iMYEVjq0w1hMTOM)`eJW0AGB)>kmJ2dM+wBP0T1 zxo+rW5BiC*ZwKsP^lw_o2~7F7T3Gu~%DR*PKnqzfe9KXyAK14Rh^ zx-2$o)rc|afJ8(wb2E~SZL(yXYQ=I(7W=yy?~a-2(KJ$SuCoF(qH(1RBaAYm-T_=* zVj@xZXWUepq*DUhg*P7wCIyhrNa34BpxCFq@eg~H>HX|k=34vt|k7XZd;MgjTh$mc8>=E4P<8kA^A&ZJb_p$gcma2ahFXijI)$sJ1m& zz42VbpvzK$BDwS-lVe>kCo@k!Zn6lkrdV zx1}MiJdfl;Z}(1cTH#X6zq>qtGtyu_+Xq*qbBh<*pOl4|g4ZT1me2JKlmjj#TngzZEA>+&2t%diaj&lMftcXW&5KkW&370 zf0$CX{rm2JH>GSx?>@kk9FrQiE zTeE)iQ9#ifGb6k^WAKI$^|%k{qEMGZOLt6PAIEm|Jsm{E)0Fox0_g?AYVc?q=eEvN z!?>@Y1QoY`Dr?uc4I+}G^)B_2TcfWI-GTAb>#211yQsl7ZgVKMZ`Hd@%r_{vt7bc{ z`BEzDnhRZ%>S#UtrkFi{xTL!@Ug4JOMeWF8=?~)>GWM;TEH;Ha-udaam~zFWMxb1N z*rQX!S(>w!8rF}kTh56Dh25|~BNpjoOtYc85I}%prJH1L8ko-Ho#l+RYKJqpcOS*7 zDe%g3^cz^8W*^<4S5IKqCo?;zUZ^WEU~%o{*pLhUrBq**#Fd+n=ZXc)nI1VR*FMQ4 z>Z2s;V@*jfMr&V8Z5?KMRDnfc=!maPD6_W=b5-QhPF1~Sc;6`WF4IV3q2h=)1LTpQ zG=2xI!$p|lrb-z}1K~p9<%VqzPE|Zb!%W24S56|DGN-QtrhHhnEnWKLYl3P$!oHPtS>x&2jw$(M;@;SN z$0x>yiZgOXaW&QOFE@)eHmp7y4X&TRtMBu4^RcHW->Jo`xtPZfFZ)r);zU2_K#PC! zgV+yzg@5S>u?SdMSp#mBItc#N?SOyvINkLc*AvM8b(EvN$icvep3c{`988MFqTrxsf8gUunp&Bov0Syb1%l24?~PTHMU+L1 zMNoa88&<%3lLvyxeS^Zv%n3MMY#f}-96;d624`pH1i~mbP7Y=`JMcAu125|LvGfnO z?_iz(F<0z>s|omQhfHy>GQ%M!b9ESy9fo5^_&P56|MzaOL76!Kzxg|3a0uXDh7?^{Zl>^YT zL&hL*W)8@H6meX^e(cy+P~iw;N3XR1hA|i?D-cZpF~T>-V4Og70fU~%*ddB^OpwPN zga5CF!PtS=8i=gEv&8{sW@QDR$kyS09Y*6v_UmZS@*nLN8;ltO`5{Oc9J(Kkoy^!# ztl)%$dDOZ2kGO-vnIRlNWOpb{7#lMf`kRCKGk3>?dNhjtkGKO40TgiIzHlT8z@R$KQ>FAsi-kx;oaTkXD%%=A{8!PzRD&a#f*x9f7xu ztV!^k`=y+C^`~6S-ANr|0tr&kXAOo@gZNt;+}*2!I6va7qIL==07=!z@-Lg%>V2p z0+7_c!m)pK_Bg&edmLX~#-l#p!S@bT{J$|r2R`4CQ~wV>pS`Z0g(33^$Nj%Il5G1v z-wzAU2KapJ(35S^Ay>az$b(({kM|1j_&9-R{Lpl>0UjUQZ!VTYwtjW14y5`YvjyCD zto!czp<4y`d+^`fD2HtQ>Qr(3Vs;M>!FQAW&lm$>?S32>z+@k#{b!SXaBL1Y<6oNW ze`lrv$oL13-^?_yM}Lh@JicBP63dERwv1oiZQ^T=0dG@RpI1^<%+3hzs=kSZ$#EB7 z@5LL7d{6CIu&GkN0*fy9veR;$F@o?Fq4uKjMy^dKWyLhgU>$_)B2iWAOMIaK_MC`a;X;9bB*ac`j#Z+mYLeq&5ORA2VVe zp*G06N|MLZ&A82z%gMvpxLV&{9OIBT2g|p`_)gyIlAxr?OjvK= zh=m0BS(!a1m+W%03{7mhGEP%b82wyahv&|vI@}O#Yb(&y>KpNGwAy(cO7p0>{JtuI z7|ez%hLKSV@*9Hmv)x1_M5i|6!g@{4-xUV&ieKxf}ecv#cyqF?MtHfiK>84=|#?uWuooszq)1+#mqA$CBv_ zMHI>=djr0*+JU?p);RjU9#l+(>SucWo`JnqUOw3)-Y-rn0L(_I!_lZdj1PE?&8(cL zx;C49@34y?2<&F`(#u?1tU*sbeVyLNuC@plh)Dz(^k2*2H2|i%q`|1B@hmG?W%W;(U56Kz;9sF@9 zf0_254adQH{};pYS3VsW$W8rV>@eF10TS8=fBu|pY*rr%9e9J|Sy6FYih=?8-LS`E zhZK6Uhy@4g1z33^RtU}~>X{I*%yrR*7MiIqaeY_~)WXAZeXQ_>TaDdwb2rL4wn@lC ztf)xKiZ^aQNJbeCwQz5EbP;q!tERQN0V+;cy4b@m;c2m++9BS?2rkB(A&D8C z?h|*!9&#l@cBjLlrr$tI)LuU_cDi4xiCg-~XT7!xJz{R%xzOr!nKVh&U6oRHa|~Bm zf4N%@Y}41nGzk6rO@dj>GS3mg`eiMiw?t%!GqT6e!Q+-Z7AJf4A`rw(9dqJ}c|5tV z$LSZUfAo`@!Fci^nv(9LC_hN&l5mW59>UPVIwBmg2=6*P^4j@R+l$~7XEZatPc_<; z&N40wOnKCSu8t!F@0ue`qbxf_)G`zBt4Ga>3B%7R-y$p-XU<-$?_a=(aaZKF;p-}T zr`w%IFyZEf*izv>fhgK(Kwc)`q6Wkz**}uy-JgBnD%zpCJ(B<#)yX2O2=tI zG^ELxTk?0sP>i&&@6x@;5yG1)mrSx`+$$NpV=Tii8X`wgVNRsw3q+jRFQsq)Qc($`+; zl3}`F1>V!s<6WFy!di*z^I2{1Y7nF6jEB71L5#w=Ja_j)2nt~ms>EWVUqk7ul7*WW z5a5X+4mGf)&fCO=+uK<-f}Ylc*uF5i<(K03JrgpUXtR{hM2jLm>x*okphyeS(QWl7 z8I>sJ^D`)MQ6n0p$&t3cR<*7&+TIha$@b7)emHA;E}px|)jc+Hh{orQzn8>AmGI}T zm92af9}o<=kjw({44l|k(C*YxpPwZsK!?RQIu!eHY9u5iwbbgd3PjX-JkDU7H|y(L zc?V4RQb+faPe#WLpX6LZjr6rAugGj#uIb$X<)~~ezh|?aTC^O(V$qA_b|JW zug#+BwKS``g}4A~ti1mgQQC|Y-!mR}F0G_z=PtwSF*aWJP3C=m`XxI&cE#YCpZf>Y z2anvBHgwH(D)wx~@(eG|dk@5=N7@(FqcG;uOEVBh8ZK8M^X%P{zHoVtSQ^b0GIrVr zl8rTC^%niDfiSvqNNdUz^A~<$KeQ`xFU~Qr?A-hEMZuv?-zN%H0NYi$g9Blj*MK1Es}dd<3&y}>T@gAoPRi(WD2SQf z<}u;}4oOYT+fAUopjlzF7*f7PJ3B}&-w+q}&`_6eD!XP_qT4_gJeV%8KXK70W2KPw zgS*@-qkxz6g>ex{7B0#+a|U+qsk}siUw;$#)YO-Vt8>b<(dI4t!dm}g`JMS#CI{n2 z1?$<>8zCF&trtckg($9EDvUxzGe(jYRD3+AfrtoY{5(x7dqtF^dNgm1&dbhOrMhu& zKA+wq$^TY!V82w-AS~71SMTvgdW~fUi4>8# z`SQziXQ7RWtvY+n*f$u6GNMBUg^gx(kQdrJIa(zNQqmRyv-xfpm^d$$l{+eb0*46P zL~|`&RgsagOJTi~+%Bd?9ecX=mYBXnU7Nl|<*ydc?zQZ3V)}-TPRGwiZ-iuyVybUM;aLRAy^FP6p z_xt29GBHu@y9GVJcK%j}0ekR5z9m>(jhv5;0}=VD$`hhiW&gDelzvW?-f0sA-^&tu z{jSeDqyNAW@k5N1RBxTwHWQLQ~(GoP`bdv32?3{BF|SKYFc$iMI#`k-BzSr@AF zXW(V};QpcUj#%&$Q=iym>6Rv4p|f-ot8US=OIZ0Dxw)NoM7J2td8J%W;W(gvLfRb`{-Wrpz8~f3H@cQ2zK|H0>82lW5v%l7XpQBeJ0$3gMld=F$ivQ`HLi9&Emw` zbCzAq8&4)&FS41r%T#Px82ex|!1lsW`Q>-?k1)RU+H;-ac6FC}9Y=vtFN0c4dxK_q zwdU0v;zj1`T~GvRA|G*{J8GTvYLg2vSZqwm4&o{)!`y~>6nc%S8@ZX3N|1jt1#$tL z-(p#JDD|wGCkNMhMb$fhZ)0xEPhk9Y0U>lBXD16>opZtk`6Jgom%LUR2}Iu}ucST0 zW8!X;B;jsrig9Vub1>=v{;qA9zQQ|4g^_nH(z=pJQnh9qr%jfU(nN5)Lwch2GFI@T zfw)mE24^Ac=H%_vQx#6?q)kP;M!YtNeWkF@;A@lfj^(ccxt0A2p7fC~mENjsCj87| z{*mh1>G`_(o7JUD#fGQHq89TQgddl3u2?gZvO9FW{4%jb!i_@eblm*}vmW)zzJd(D z_@7_>qn{j5Fzdb>_`f3{oL>Y?xV{{%tUfQ$`0 z2nyz81_N+590ue~I6zPcfYAO9{kPV)vj0}>_rrhw%JzTC69h;>z#;JOJh5^B$)=ML z5d8z5e#Jk&ZsC8*6L=pHX5~EO2@D|F|F})RVjo|n`Jb``WGvZ%y4Y`$1M-!e(37F` zubcEM>;YyyntlL6kgwYRm!Z$mK`~Lv@E%je)Hf$dk1hA~*Qy+~Zf5$fr$ejTI>~Z3MQqAvt z|CahM^a}=s0BJke@u?3>xBpR85FnWcSp8#sA69k$BQcnj84OhW9w+{bGXb?R_(%1Ga&Q2t%j1Qk;KTCre_|WT4&>@in)nwCT>piB0V!f2e|^G|q5our4psa2)PG@x zAYec{0VwL&h8>pX|C5*@KqeGe_X)&*pqCjfWnXC zQ~!mEfr0G7eqQ=G@n5JI7|<3d;7J`LK5z>UZ;byH;b#$nfxy7J_C3MB1Mm);5Duh# zn3dhXf&LP}8`2oE8z{!{T-UCeZmcgme_IAulKF9cf!Kmo_-w&iY(#wzr_ZLQb-)KPo>f z&8Jn^Rw?V_jNOikL(g`>z6?Z}=!1e+3&FI-zic*REkB!6#_5$J`oZj!#Dl4K zF)NHyn8Z({8HK>u#G$H}FfL;Uzljj`E={H5R%I(h*dofTEy(t#<_|>Bz3UTpbDrD9 zz{c!M>-}3yJIfPdH^Aq>aXWF<47O5(Chk%NzQkQO?&WmnMzd{qnRtH8K+_K)qD-QH zB|IY2xz{utru}TGn&T=}NcK{o?Qj_5bsmqwK)?FS1NXDnL?rn3oXp}pXBN2-;91#L z&jmT%oacI-A#F&0;gqyfPCBL?>qvp@dDpyzUn3RQiocqY-zB;HY5oj#(SiuNQ5pq9 zE@Q=PM>a9~o`3g3XKGO>y8rfUrm?Yc(Ap=dEbTh;7QA46>Rb#Ww7aou+alHoG6*s^ zUXOWQWG3$3O+k_)pYaR3H-AkHL~c<`Wj5H_p4*$ecvslk2t^0S9{1LRYEiF7De}r2 zL;TqJ&t8q7Rb6~}ePHv|kVo!W^s{4Y5oZobO#{_%f4Vu$7koZxl zSuq9zF+smoGH{Lmdpc|cc*)EuqoSJF$Dw7pGl^|E=_;1ORO$RS)ZX;M54d8Ubx+Fs zU2qV!cs|n702}BhBd@U=f>O~<@^`FoYJ4GcLnraD6f&#g`Xm^t5w-0$`}!trQy*p> zu?zF5jcrQl^omlxr+VR8>lp!C6B*tD2#9FJN{H}h1lA(=Or1<(CN#%c5iIll`xGp% zyh6`p!&Ox1N=l^VP9dE;izq97I+!c#)7?{7DF{H7%I7Gf1YOWY4g5uGtWKW|B>|}# zY|_$Ox(n}FHSvG2YVsoEmlHKN%h@j1^va2ud22^_=3Z$WW>{>D>_%iDYL*mm>4~@u zapH!CB`4oa<5j=TLlVt`=Z~K2_8@^ZU_cBbE4rpqcRBi#77e&}+_yMd!#s(Td!ftZP7hgC{q+Nm7!1}8Phk`z^PgaO-kyv>Zz*eVz)zqX?)aqi{@RKFI}KB z7G_3ie)fE2aHd32-l|8=;Pr6#ho{XtRbOantMaoV=!M3Ni5GEEdW#G`WfY=a{h)28 zWaeWBceZKBg)2=)bg)oFG+SBb5%r5wbM^SFsa0>~2cN#8Qcb~?W-}VTexaI+$x?N? z%IaNY+DFCdmKMs8HwIs}c>+=5)J z%zGeG#SX_!jsjurc&u|cb#oz#6qGH71OBB8$;LsVz4R1)VWAdiBJYqdUNU#Bgc!ym zA^JAjo1(Ws?Is$;heaJSl;EjvkVq|Qxa1#k=!%X_fzFOn8dUbe!Nh#JQQFsg?@NuD z6@cU)-%i$+e22;Xp87Pd(=&&xB?C>xm~(HP&~$p@FLBYNuT_<2;j&*<^KfLSsVOsz z8Aa(iGn&^~t(5|5&aC4P^^Kq!NJEq`41ZN2nn&Av0b!pt{P#TBf>Vxx8WbSwH(llN|4rmx@-QFY(vfj zrqPvT!{v1iDvj{!GtadzISYC$=rbY8Ryo3e&UEej4aJ~2zVsrq(~R}FKlElsV{c$*Y(FsezA3(2`xvMlG-Lt%WNZ;zSgN2QJ$LP z_OMJ?`3b)+{&SvFU(V^4Y9miHgEsh|pu6^xNKFCv!PRxcHG(JTR^#A)gqQQ5IIk-Y z#=Q_ZLQFa?H&N{&P)9F5pRNnrg-yH8)ZOp%FupB^SAV0I<^$9fk>_nA6BNsOLvLw_ zNo$Jr^>VUgNU33R4aZ87K%&6#d7QYcHN@Mv)R`I~C8um^(v1tnmt>sBH_ckEIL@=N z-*5>nJ2P;;%A^vw=!9}u^2!JW@Y3G4Xv0c1bpV_M>e7c~ zJfT6ToxW(FpNm@cbY)`58Qi9iZKRTRsT>T3`iK%^xka{4nwg21TSZU0evDs-|RQkm2JNlmmPLurSMnSmF?hNfFpSM zVQ2Y4eD>e)1mOgFRye-%1O+f6*vYL0UwMKbRR5%2~Q%10_E92mGZF=`=E9EP`$`AM{}Vj`$D*`aSipIN=F=!#RLn@e_cUgO2at&HPPNZ~%yg z1GSpR*ZeDrbJE1X!C(jSNymx*NyQFl2Eb%?ph4_7@n2{d9KZ=VfSlQJ;$K0Wlh}p= zMYq7)49AIo#R-oRe;3tnssBR7;1E`z$Lj?B{He?BH_8nFqX$R-7~elNqy2_>zuuYi zByjYgRqqd40%Zes4Cq)mKJ(FQ;5Rcv0YO8dC&=ocE$~k>1A>O0IP+hq7!(i{>?AvM z(1Q4{EnCv3M3p((9WN#>wiPc z378R}@*y5zlhg%XWthO>vUF6r&^<5S!IzD+N+xZ*D@dhUK& z9!b%D=6Slk@+^OszIY@Gh~$Q`2r8PUGJ4*0&{oy>)AEgszHR`f9eIXo?@u;XOuodQ zM}a%8J9GJ+a(soJ@!3TW8`d%1QSQia^Ew(LxydT`Ik#6^+xT!1{VA!TjK;cGMt9tr z$l^=rK({)w;uP@CJQ0kvpE7u@x(akuji?NFX{&N3`@Leu@`dHI7YbqbN9Nu@MnBD0 z9ON~FjWcJeGF(c3uhMY6FFVP4@AKz|P3~pZI15`FbLxC86X>>tb!>e$ot2V}eQXhl zdlmB?zQlNTNvn=ZuUZZ?ovfr=-CfpaqqCo1tJFJ9H8^rh@%GXjx^5|jH-e|N>z6*+ zB8595_AZ(wPaEekc*btbT*O8C&>Z6W5PyKK{BCrk3n1-y(=WvSj3FSO%o(jDgqrLwHC%Uu7I}1U9_ktGF?oB6E zl7Z0sgtj%P&Kag-$V9rWWUcd3yU|ufY-|1lh<6@H)Wu#he=eO@$7hh@#C3)A-2P;5 z_a}QOvwr2VLfAy@i}^L>XInVu>mgQ+732Y-nde`(e=?mZs;PU|E9mwbdou`O3CYH2 zEt*A}-0$POUVBTvi(#Ps15(M30?`2Poq1=zIYcHE5#g>#ZYi{!huLe{O^*d@s(}~UGE7`3LS;Gyx?GkN!NtJRY6{ra!iqh-=uVHlzX^krpAG)T7=N1ML(u#J7X)Zc(AsB%Y6yXd8))vD@63~Osj2TeSu)4kdk zls~$=UM_BO3kFe3+C7kaRj0^C)!y#ycaNkaW5|QHunTJFr+ha`q4S}Q{ z8Ts2=EkX7L!TOzc(}jz|191)2TMqfdH7V0nn#$#uFo;&L?XzK&J>@u>CVlC>YpCN-#}`=xj{vA|M9fHYqyu+U^L#j`d2lXN<^=ixF21VkPn9z%&s< z+a33AFo}m&2g4OiyN#kreLeBd;d{UA31iwtDRTWne?DlI^Vy^9%Y7dApARwa10(ZK-TZ+J!CH2UdMWPStp>hS3%Y8a_|Rxam`%( z$aoky=%d&)aIk)y?9#)X$x35ASklMk2ZQdqm`8KjvApPrhL=nLGD*<2G2zfO4!Z z{i8I7ck+A1+Cr(AkG5L1@l@F;DOaz5cB?B9d7FN_IHuvM+|Ab733-O3q~eI!mv0vw zU&PWej_Z+JqwTURBqpM<&5spicpD?N_AJqf*FiD&v?@Y?c*)ebw9J{^E)|K`AzYO< z++8>36>rO&o{O&npB22pc8qLseP|`+N@g?~wPayo{~#*KO)Kyt!v$>K&4jq*Ne8w% zu`8cChZ3}j?1Gk1((mIM26s{3lI*Z-$Ja_U>u!hE6syrH;-!^k%Bpk`1VlKWT}G%u z=%EF3?oo!mckSJmr$;=?Jht^iyG2?({lddsv1i^~p*5W@8uu@Fj>vJ9j@p_z%m-05 zL*>RBTBo-zE{QfD>vAM+mb0{^dayGFZRY0PD9nF zeTKS5vExfhmdj^8U&}W2Myha#&xs`5*(w%$Y$@}2=jM45ve5e}-BK?!*L|CN`X?zo zrg~Q9vCyKz&b@Lgg+7S(kVsJ{x#BbZh-&0g+rvzxn%Bt=%Y?KJT@wy1H!Ya+n*)HrWI(fy0^aa%#k5$zq; zckdQF|LApF6EFM*N<(u6d51+MZeN@HN(A7&=bmQ-FhCw zF>ap}la+0mBPMF!BD=^yFW3T><*h1-E2iz~YeW$?PiFi3&fRJ0yb|1=U_Mji)6(B- zm#|Fy`q9FNQ5m_?3)p8?{fx^_dvns1Yhwgw+HJHa02b5d&HmRu)4e`T;i&X<0wq@B z`3EjWvU4SX&7Bj0zT@zohFQamVXNv~)xbCXo4{0Y%3p|V`{1iPg0a@daXt2yp3<;s z$u^n%X>pJYY`Q^13*&L>^-Cp5a(U?^;W6*tU?$M|wse8bX`7QM2V||!W@V>;^dZFsHFyWMNDxe#cUNr=#7bb!XEaQ{nTX5?VTGj) zomcXd&$8QVf6xQiYaYN}wn+r zuNNZlVsQ#^mYdhpJu|3?pP(7JDQ-h)BGRT9I>z!f%B1gmK`uL z_e9yFtaS-N%9u23gK0$MbB@q$Ir(Q7WXB$=psFe%q=l}%nOcZ};D#;rJWf%^d1lbB zsF32pT)@Z^XwT50G;y(I?IQbx@=P9|A1{XjTL$mP0;+DMOO&qz@LZorMGAl}3q{9L z!3)fwdI6|rBkmaiSPvD2O-IWuO6VG>QUw*fv2iAqQsC#CsgL8bg zv%{WWCYR}{93nn5F%8codMSE;(sbH$H7#wtA@RIJ(iTIYQP*t76&~;Fnt?7{Bc^>B z4P*|C5z*zw1^p2_4?SK+^4of?e`echZFv2v$^V*7oY|8XNa92Vv-!AbnVq-qq!!m_ zsrj~$8}pZEXlbPPFisU^xMkvVEtp&6=A6}#y34=-5x#oG;FX6{OZPL+*AgC%d!Fb> z^#&(^u0J)eo(#GkIF>(yu7_RRfA_%QA?SJp#02n)pCP{kKE4Bn|J*hQ2HqU_J@p}A z2t3Tg3Oo;V%smJE?LQL(DD8eB+A(6zU#qW<@_jfnlmiHbP5@+n>b%p0wCs z-|?A$MeR-^1|ElmKu!pxernp{o3Jp(vsmE0GI%x7zoK?0%?!Nr0tJ?LocNzK><}-617HsH1ReRQPX0Ih1!wyWsQecy!nR*+b`mNA z;5&a*PAEH2Vs}E|36$Rb4KWyam+JU_L0EsS3_M}8p}?792Oo!#AO|f6havB8_6rJ} zDR$sFzh5NXQAfo$!umltfVx#cq{q4b3k8F)17+0!igAqiSONSA`vn0W zc3=hWhvUS5p}OQ zy_ZqFL7^Ws7qpqk&YN$^)KjF-sx%z;yC6V9@rPQS=y!eH*q{6^2#|OHa@GGf+5N-s zf&jMY$FzXm`O3$4zv~Z)+M|;GmH5#4`OV|fUs*pq3V+tff2)PSW%^@b-?R{DvG}Hj ze|~nLTN!vlRRp_yR(USFLm<|j&&7h=@-~vN><}r1iK*rJ1fi(p*_4X%yg?dadFqRo zuHGWYkXxE#hmN>GAJI&m##xyiyWc$4eI@%|trFN5zAg&Rfl_z7 zwTG;Dz0w8FNaC-jy!Oh*F_EG#ls}{YQVnVu{p_{hS{;EkdmtYn9x1NSz3VEcUligo zzHYl&QT&p|1m(-N7b?NKgpd8Uq0}@FY>-=txAZ?d3%CfV3!RHrlA{nuQf$x>kn|s4 z)wj*kz(LRjdjt|yKO&lx!O4%t6{H^GHeU{%*1T6KCmyX`&GIZS`Ld?!$4(^NM4euF zhKuA#mBQn}y8X~=>|WPIz0f|(Vn(8JB+ht^=0C>`nq6itky*y^Lo$CmF!1cdEjB+i zqW)KpZ|u;fhle!}&o6piV7Lzsi#r3tIwO#-($Spctq`7%RHd(Ueq}W^Y6W{$W}BMF zC)M(?&h7&dH~lLck>(Z&Yt`H+x~zf0?ZNn30@34ml6CcPzU!mh9+?*cx49da@FN;O zu6)A&vR;Z1#O=n(J7hQw=Uzl$;|-39S^7AdV?V&qOfof|i;neld5~vr=m|n2b5C_^ z+}e|u{*$66A^6>b^UEP?z6B~KLuM6zRWQM;a%tG{)gY}{qzh2~E=zsMB23&F5WbF> zq|Z6-3Sw59;VROtAz7CwY$2X28z3ZQtH711yA-h$qlzAW%gc~cNRRz=5Ux%bC1VWg zcS?Y%i=a;pa3|y9WPBwoB4?I*DF#?Kym%?;Xt_Ij%^Y9dR{qqKey2}AEQ}R3nsYhMqnR646cE^`=s1|;Yj^0rcjmIE-RlyuEfj)GQJQjC+{?whVb@R9 zH$||S{u$NPp!LHJ!DcL@M#=d#!h*|8NwB4D95q;}9=$6u)6kGrWMVH;{8Gql)mHE1 zJJZl|19WBl^vse&2EPR zS9-zw8HB^I3D2Z=!vs*8q35pUpa+$b+aczA6+9fL22QZyKXq%JY{L)C($6;hph4{a zW5a)K)q))G@!f|1bL{++o!qzKM~VMr!+-7bI*FJKc+c_#Z}}Hz`R^%z?RPqna=$p} zcueyv$Z!%VlzqSD=$Hcq)E4}>PJXjZP~dkQU?+s?z)x%Zkru)Mw0E6QwDD8!@Hg`U zUL`a1gx_!2e`M#!#Q)}sWf1`b+YCAQ^%p>oj=bY|^nJ&_Y9HF~5B$Nzp*y(WS@pMR z$XHdo@j{%skyZMQ$foPUtPA?f`6X*yv;EgG(;2V|%>!eePy?wwG_h<6kGIA$-YC(e zwjlD{czXfQgc8poA#Wm59wCmcy_uo;Zgz^u01OE5_|F<|IGz~3X%;s0@~fe1d{*V# zEAKz>74nVjof33N)=e|GN!P=wv^*7qZQzrJ(m2ni=&~%eE8OQcU2N{;d+reMmK`A^ zh?kD8;`MBMe9HS!-U->npb=c!usg+COQs|q0%6!v8w39D-Y>Qz^o2e*sjg@&60#02 zmV6`H?yvifW@7VtGFGa=Nb;=yqn;7fcbN4bhbWl?w%9$>D}r_qo6c+6F=lVKPLAg{ zu1!xriCU>9s-llQ)Vb*imX-RUC;*sE}6z zbA4I`6N2X3pP%%iL_1vb?u?C3yUY3NOl*}7#Ven99i++4w9Y@pPR(EJ%GbQ1#!D-e zuT!_O*EtYNA~GAFmp3B8`-&iu6}L-L4Z|WS?WSO7VhGn$+}n=iYkLjlL$;;PB{V)3 zRz-I#hdX507thR+hHPy&Uy-SOAk~;_z%S6w7*7~MU5YGd672t80PW13E#Vlc70qa} zH-W;&nK#~!?QVEn73*g@-)&bKqA0g8QhMtJrt@y9RyId%oq>FcA8Vf>S8}Qa`4x&Q zoIH{S(qSF;V&pv{LuFms*{vE<19gTPo{sUx*HG-1DW>ULv}c6mNO8oroaMLASw17K zip2_ZTdin< zMP@N}gqyYi2Pxpxik!Yu*G12v+iDuc-HYLgCik_t7w1CPTm7mVm9}moE^iWz7q)r% zX^(Y}$ECe*wK~l$M@CiRdt0r#J7|u1j0xGrLNfgG<&V3~{Jod4bX;O5t`aAkA`Wg3 zE?D)WxH#G{UlUo*mF~RE_r}ocQT6U+C$^6(JC8_I-bp;uoVZgq;Qo2J?o*IYELn!` z>sv@qj5J?Mb$+@;n$7b(@u}%@a5Y^!x7r)WGUL8W2^PA_z7*k0V@3h`y$UhNWa_7u zHKZNpXWOT6QyaAm#j6+i@)AWC`zzd@E7J0Emqa#2RONJCb%_QOuBCnOYGHGIdx=gK z&|^30&QHsCIdN5dM?2Tt-N@o|(YG}CD3%gAA6q}8 z?ON*Rz|yq4&y|dhXR%%qkYjp5>s9fcJ1ss5fh2cP)y0$t_CoC=a&Ygg;L)x4Nf|TdrCr&)p%(yDf_!2hLIO@yXP#apwGV zb+65ZmAkh;GuQ2*(WAarW6^aka}F`2>%0!bU;4ny8I^8WB;006Te53GxFBX|yXNAj za|>aeu@v(i>>Qs;+XN$xpqF7Nj~Gf;MXld9PTGU3L9xu&L&ZvEmRg0k22>hB^MOJI zNExdsoM{~P$ZpBJT#q!KWCd^L@r+x)xqfrC|9J_aNk6xJv*tz^vn;k5jb8s{5RgFV6eJxVwj{g&M zqH{Wl`uXM`IFi;jRUe)Y=}hHzef!}9g0yig?`RhT-SdT^w?gOmQgyH=sZOOz3S7+W z&hVgRNDP6>*V(ow<1qs7YoDJdq zVa?Gw8m#x>MAK0{_Oxaj?{CKlsbClTl+~mdm8Y|midNm(n^iX+iFE;fU5YCTODF$g z$Uv;aIU9Dd&FxXRW0~OK1EgrBF}PH9D2Z;H_nE3-v*dnP0d#X>+4cVV_|solIFrum zqzMLHRY<4{h!HfEpXG8D6Aa)#{j5|QCRZ(i(~V8=T2R)9vm@^rA%16XyFVI1xeIb` zxp3fx-X=zOt+GiQHdh|RoGb*&+2WYA_aDX4rmC;r5M~p((}+wau(Fk^CDvI+_N9!zNoE?R{oieu&8r~e!s-h@xe5r&nytSB6 z<$L)<3zH?C!*Eg8Lk)VaXPheJYGIvAco-v>J}C%yeTn!s3qg4n6r1+m49wCT>dg)GEBl#6l<4j#6Y( zW3{-i#QuKfimmA;hl_7Z^^iuyoxxkTKQWfJ3<1Z&QG;LRn&1s%P5q7AW0Sg=$xk_0 ztT3l&kgdwfFh%If9=%;gSVxKA=!v7en*c(NUB+?h4OqLJNzasul%pf~JOR zT-Pd=?}u2-4RZBv8m?GyxonBk*9qq&cRXY!6T5dks3|4h&O?f#eKyS%Ua5<=YWQOGSZcQFrtcs6{BvN7?6 zsq{T1tKlUm!N#o5n9UT+=#|Zv$f0{yU<94l#f%>Ato3j-JyD%ob@dI&+T~kvFINAL zySI+Zvu7Gaad#>1?rsH&ySo&MYjG%6+-Y%lcXzj9#ogU0PI2elci)HSeZJjy_w1hC zzfSuL$(2kdGn3@Ha%VD`xr0Dx`BZLOw1UiAI`5A60H_f3TB%O&{v>gGLjpfvHBqwA zHsVhy)V18mBE1i_a&^G8;2zIDfgrd)U@R;=Gbumj{O1T|}UMo=w@W5JR&ciQ@_ zjnO3e)hTNOJmC5QzEw8@j* z=Pt?d+!T$a3fuUt7Sn|W9^@riS*YJBB!RreeCtr;*osb?h5E#zw8QkSz~@DO;qxoy zg}zv<;S)F3V_S8m$p{}S;f}OBD)#cV=X6%qP4U;J8^UgD2fp#K%v|jpEp*Z5cC_-` z@Eg(XC<5o^}8v;0n_jh-XK`t1JH=A!x~^;bTQV%*9s)$3Gz>M z1P&*BA!)w~&yR}pI_Z~eT5XViF~didW>UV5?G-|;;myEST!lVw^NIFXsQ9Y7`WSmB zpmtlkUzB04?`Jf}G}*FfF2`QM5vSw?^W`VLQa`*~=JR2BYFs)^Z_{#Bd?w^t|Hu}3 z%KeXSkI#}^l1Ai=?*VS+MoEi@ygt?Bk8>Tv8)?0&ldH{&E5#6@9rf9B--4cs^><{J zEj=_Uje5zG3N$fj0ke#v`$}P1WImKjb8!`z`?8M}|Dyp>7Pb6DXQy zTx;VOcm_!sVde^jn#1aaJL)~`g^u@e*7}qbkjpM;P+%Tcg`HE zRkFaBvECB)>^uE_VHjbjwnU=`hYy|{z6MpR6BT^>&HNu8guw#|c!Tp$5DZe%1>~&f zP8un*3Iy_%zIFt)OZYR&gvQaU7ueLav81N*`M527_tVyYTo^!Z=%>77Oe*|jJ0L(O zG)^kc0-;*^$@V>phVNR9(3(?Ll8<z9XS@0wC?sm2_ zbkczuC;UP{Th&EFBnfHYF9HF9?u_ksM8-PMI*_%7)hMP-G{&)>y+Rvc9W#H`oy0#{ zmPzO0rgtm={ssC!SZ@Ly>HYhQ`JXpK|9n*c>)HfxaR2{Iq4nQw)cv93@3qPQd^7aF zJqq+MCjP4Y*V+Vl+Jfspm>T`JCxQM`T^7JzC_o?n-|a2}?G^qltpBg;n*X)^xW9cL zf8+$55Ba|wbb*UhfKm^R^>6>l|F@d?2kO6e6yZK{F#{a0{oUeUt5UfCTP^EFx&Dgz}4MDixVKTH9h|E}{_8YrAUy#f>pAn)%w07C!Z1Lgq< z1`-8?0fav|0Zt8o+5|R0%)$DPIrnCJ4w!QQ{{G3spXYz@_$G5;KCoFJDSyiXC_|vk z{*vb(*{}kf?7dCxH!TR<$2X4tbPG_tfP*b>dBFHjGk>lX1@L43jbt|9lm*}ghCgHjMDfoy{*e8D(5-LnymjfDSXr0>N~bs3 z|4;iBz|{Z7F#V7H`bGpWW(Sx=zX|e<@jrt8O9()iw|t-=fB{$zjQ^gof58IbfCBwf z{#FkF3*_ey&VPOp|J;rN{2KrFuj0Rk(0|jff2^f}{rdJI0h0DV?N@+B=G&W<9bhW@ z7YYBG4uHCE_}@qd+`{`e{QvHo_)Vlh9B%TQ~oq z129G2%7EkUtqdsAKly;Vz%;P#TiM@l?7wgV@c`)n#(%o?ukjD01IYV76r1ZIFF z={88{q=Bdj!h1_&SYtFTz8wUige)pXY{jIi)TUn1ZC{p@Vwton`3fYc()==Gj5lmv=ZkPe=cX4*`acp5j znLnowoOD!+_mrLXC|!`V$gp`rf-NOKlOTn43$d33I370PV?|L@%}iHANcaCz#07h& zh=NT%Yn2exOMmv#5~GBW8%G<*j$%w1 zg$f5_*qzf9mhl^eIutLoNLa4=zUUnVhB=fB^C}^vK@PW14XGJ<2}_D1i)BTMBDTpz zn8|{CaEvQVzN&DHl4IB{Iy!sr!W^EfV`Z9{@_SY@LSiyW9a9Yd&#G+#(Y=g_aUo{r z^u5VFtR&zNFqvnKlki=-AcrhGT;g%%& z=7=Ms$wZn>+voQnRLoGuU9x^VBWh*_)TwK={(|W4QQxW@2cScKb3N9l6L6%FVg~WF z9F)6-R;Q{oeB&G`&IpHwR&kHo9z?YZ?;v#IQgsnrhBy9^Y$>Ptl5CKo4JlV&54U7 zO%ybK3&}UrRKsj0WFZUKqKKEZ9msezw7p;ma1XJ6aHpZq(%+|o9F48d0XQhD9u~e( zvg!RCSqJ{pMS`RJSm5r(MILg#rliD@=Cvv)uja9Vpws;0=Oc|%l89fyXWotj4POT? zY|hyjlq>pBFSY&LB4Try$uFkc$AXzCpT7Fetl_x}XWp}P z*n^4v&WWhTj!?e$M} zrI?pUc&?{aoSsx@tS@WLFLARUcF^Etk;-}{e$Bg9;tdlcS=mr&vj3dzuD&#-SX zju0M}kVw-Fk)hr$w-pYB^OwutfB4z>UI2Mwc0rcZLi2uLvk7nNSE^pGb0Ak==eJI! za4pTa03DAU+b|sDeWx|{qgoaL25h&MSHlSfYn3fHwtXVJZlX2Gc9)w~aQ+nd3~zhw zwTiL#4>&CL9IG`u;NE(ZUo*hY;8u%Kj_STT8%ADE4#Ez0qYv(fCgj}u%UpMI_Ro15 zTl=2PeH(k;HeS8n+HPzc52OnrWIfyLd)eYDo%_gh0#DuHuR52urqkh4^yF^&Tp-4) zhk8la#(AH2Jc%4X2@M7PauEK$q0$DqiH~#h;@K6Uj^A<|&$8}Uh4zwGTh8=BPkcC$ z@z4jXhY3A=g}U)l?^3s(UqfSan1Pn&DrI(CW$CfVdh91bqZy(`x3NYvlFGh!Y zj)Ph-K7I=C{qXAfK;67zP_EatA-Z0kd&I=xwJ+m)e_^k2X{(pGf>(IqwT~C4x8D+> zaVWL;B~SEY8Dhzv#@U^sTU8dn%zATVMvbx)H50l*<}>ROD$C(j8E^iDuhGfC&o+wD z>vsZ68waL2A~MKoO^B85cL%hz>(_R-srln)o^fH`)AmN1)Lyd+h078*=VWZa$Lj+tk=wbe^p#J+W_hkKRiw(GUBx>SlQs@(bf{8lNFIt7LgTW0erK?tqjZ@iP`@JBrI&}O8k)lu()6* z{?}htX24H*;2+>+WR6BAHcr3~y@-LGq=|)@`JV@1OMm4{IT=`47zx>!S(yOARGdt# z)rr{wDb0U_i4G-PZ3Z3c`P>4c$4uQ^h@1Xk0CaA5M2@4>q0)#-9 zm|+B^;XqVXRrB_s&9hlPXa>OJBcs$Y*JGfeqCO|?yTEk~?h~PQOW}7zLZT3RxOPXG zhv6XvQVBj~BB%V&2jRnqvJ)pZ0AVmf|LhsXD5!{K3_1~*t*^<9roXirASwtV4g-S_ z=no5;HmM16!2}K>l$#Z@UcT82tBDJ^_t&SVix{SxC5a0n=$-%#QeR(_3j#^v4vN?g z1dAR!kZJ@Z5{g(6B@gN}-z6RIHuGdep`q`y8YHlL5;tmwymrVLkZ z?AKOKBq12^iLn4#YTT{gt@#2hU-R*0b8$<wqk{yitsK^)vC#``{-Fv+`@&tO3S9PO!{O&9`ApBgvt3RKWwYzB>( zJwp+V_|98J>q&s>!dr0bHKgkm)$P@L>qR&B)jssK^Y;F1;ys}xIn1%RrcWm!Hpph6 z5O^3!=X%m>JiN0AvFD52%{n@Rfj7&O3-N<1vjGAwHI^Sn%vOvy4=Oi702hL#Uzf-R zh#7MXbFP3FJO)OP7^xz&UxIf(3<|ik^b3P2l7yg+QfDyZqXtZn-%C1=P=-JoMVM2V zEuQwbr)Q4mSQBAI0^3u65|qcY52sn#uk2n%=9W3_pk9WoQy?rfZje4{U?^F{$Ov~_ zvoBpBuO{oD+to0(J`C9=QX855uaCD(!!NeXjY=r&SGNgCn?IZnpV8q({fR%%X>Eh;H-Te=F>%|pm{xV>u+!jWDVpJp@|smgDibFzAJ zy_(Ulp1Q*!-F5)@5L@B9w}Yhx(Wx=e<~d`?D7#a8xp4}O|cj0xEJ zCl531xgS_d`@M>5#vjrX&c2AGQ13X`uOJ;VPBJJo`q>srKS#RLc-}mlSF378m{+Z8 zx@U|c`{(6w%tKosUn(R*k>{_Hz=C=9m(?=fo0iT99nKn!bdoQd1UOP~dgMzbwuCx} zwloOX7TnTRUH=eUo$)J-M-jQXE8yB)?5#M9T3#|9kWjk{=FRtOpIuGpp-)*WJ|>Qq zVhGP|eEvz*jF8#(KG;E|vI{qUwI`U!6yLh7o$H-<*_M~dtASs0ScQG;t5-d1X^hqe z52SKdQs(vz^FyJ8fe5O8kK57JLcZ&VhsEy_U#9Tka3`x{TWpf{`(A!a3e`J&dD!~G z5!dxlN;-sh?82xL!mJkqr9S3^d(l`_UF4HmfJN95Oh?8l^lf;QCSZ$hh;O!&2nN(9tve2!N^Bb z0b29@tMzVyzY(L%BW2btE2KExVNP7iH(6muxwFhDQTe{00=m>@fw3glGy+cTUOXi; zr)Md-#GyiV$F4FL*dxfZ$|NPN;GJuYKy8(H`}>Nl`soyMl;7FPwDyuWxVd0ah6o-n z+;@z5)ExTxy&LD)pjy`_dW14_w()Zj@pd&25R8kr2B(0dZXUx!c|RV=SbPW&kux6m z@1+t;a-q}QzBaLs)#9(jVYN>sEUGKh{~j1mTje3bsSCZS&O%;Bx-8$$sHMG?4YJ!K z#4`WX@pX<~LcrBkO9H-L2I0KC?9q99tdKXfbUi!m{$bMwR~&~52UUR5ao&Vq&z~Up12CCE~^?2ve7fznb^H38%~%D0phRO@Ar{f z@T2SYJK659hm+OS>Nl8b`IiTEAcKrLdy1kXkfHQ7pG|9XY3Au@tYfP8%;-mKC1kPp zKlWfL*WruXZ^Ub6;-VU>YfFG?Ej4`l(E7ndHtvvA;-)BjZEB#6cC2-E?tm>ib_xAa zJ$B$)G=r(FOv{t>L8sG6_tb}D4YEDOIh`k7V|V9U*j9>_I-Cz&s5XY!Y2fC4*9tj9 z#pnGTcFTfhXnd}pV?d)3JiD{-SPWT%weiizVThX-<;;MKc(UhDb9?zy&_*2`TTs6KZwxqPs{@w|hqI5G6H~5|B!IN;!tR zC}ETDrmZs7^}Sp8LVtPk%$~JnS55a~x#AHcI=o=~nMtKeE<2W^m9#rHq#pVzkh-Dd za{kEF3@r-NvsP8Wmj9?_i;egF%baVqBil!!2Mt7N(U0)|Iu(GHVN_RW|)vop%onyMfnv&JkH~;nShQ_7rd9IBssEdf(WZ-q`0VJq4E6a^r!Hmy0{B zn(~`S)PITbDxSuvj+5Dvuux>`}!!b=~#S3#$a)j@b zpr*rd6ph|2c7uQn_?@b-oQHlxMW~y2Pr~jd-k(N}qn`8plfFsAwPeI=Yw5{BVz0 zep3;yX!lFbA|;G+wBLf$^OsOkK$LtRB-`(vj}Mu0kUNxz@`}NVw0e6An!Ncv#&lmh z8s}|K_XAdqd(03#uB?+gZ{`+!$60%>2+dP-Tj`B{uBjULX8WoppOu8dU>RBEp+bwe z_q+FjEo+4LENBz@{76W2k%CD+@mkex6pJ>r@_8X0i9j3*7gv3$o%DI4#I>( z%ND**f1|OXFYNO#U8!gLF|nmt$+ z*4Z+b4#|lsC|L8b$>At&W8Al0i0_s;PX~}@wCm$?qW-y67E3l?`m2co9Utqcm}u^} ztDlmF7iOc%Cch0pAQtYKd{&exGUc6@;JU|vyuXD7sgTDK+KkOpLB=|_)jvJ&Ak%l$ zzw#XhoL{b>0=+!i+`2F9orQ&_hP*AWY-21<9E&)qgbpE(sM%@7W?~_N;qKsNB|i{6 zo}H;yEU`(6?5J3G45uP(C*mm@Q_H`f+Rn!EEX{QsrGly{Ow<#1I!;J07$r>BJjM8d zT>0=RA+%G@@ypRvp7UjV#pl}}BMZY&Eck{R(Fm38(G`I90&2}&6!1m2;CmJ)ixGS2PuGv%^z47vU=NII%oR(wk$z-8Zi=*5sT zq6A-uS5kbrHnC1NNT%LKNSb%RuI0I!xg>R`dVUP0!OrlUw&kDIIvkUXn<0^sjZZ4r zzOxFYKLPFEic>dJexX&*#bbt(Kj3|spJ&MeZMQR)SP*>2KkM04EEkQ;VCG0n6srenTES!PH>KM^ zGb(r9q|!-*qT|)bjE>1uWVe^jDB3ubtSFO@lEFK85{cfJj`qlT>Y#0}Eo3~sEEsN? z&s6zZME;b{tEqq5biZ4T*?Jh|l9(-%clkw}DG(;7QAh6Gp?&LmSv}l>lyM4cOM~a6 z5X)ZVv@^P`zleJWcQjL@wsNKUPHntvSvNM5#dsFwXo0|c4|Q?tp}9>tDgbw42zGfv zg?P5Cu+C#IrXh-D@#7v5OQII~zC4MhT&X!rhfvT$B3ZRj?47i~$GiK%jFLkge*T>` zm_nj*qf2@n_uKuvOFHLkHkWF@=LRo1)HfJ(ZpcsCqHtg?V#&6j(TM(Qy&=`O+*_OgtROQ7Y z)TZh##1b`^#P|F#RL}QAekevCvmkpgU2J*>YHGzXzd1gpm~i>sgsK#A@cVu?QPsHr z#eQ%_?}!fC;ELFL^Nx_00k)vXR5PdXi*#b!68MBQ(zdHe~`bEge*gZ4fQ*jl~lre&)YSv zWxb2P>_o?dOCee8UZ%>xeOntG6quPZuig*clC*nE8|LxSF3gjLb42bl-Hg?lP@>NG z;E_>LsY^`9l(KI|!8~Lyo(CW8Lh3zJ{G{z9!!3c?T&vl+QrfJKK?0Sik(Xqt_{qQ% zaqyI}EDk5alfWa-t5oMH@9B8ZD$t;VfWRdEfTwXJP%c2!cA>EC-Wd+Gqtbxp(_?=8 ztyN>OT{l)OT5ueJSQ_1RXr>>vGVUj;M7T~qC7h~drNYEfnY7qCVa;nLEAZnP)~Xh} z1KMdO5MR3^L=N0da=N}3#@q*<+@g<2n3!x&BdrLo?ffydL=L^7BF~oV#}xEyo&;aX z%B}A_mvh%itVF)u@NNr>o6j<*$7HheaWKWyTz-y}R^1*k_dW_=Ublr26(`%Y<~*}X z-uxk;?d3aK=(vbforpyiNU3L!oTeHCmpGn;2LaNM32hU}rYMUk-TC0w805rq+0CLz zF3q+cmd_sfq3j(0@n=0%dGz9)Z0DH`)XqLSkM#RUD{$q{F(QM0g&UW_tE3-v z{4^s)t51e~FBSSRsU7w1HSe55pxPAL=%bATuGwYwYso$itGtR=~~dB1Pm#v@z87QJD4gk3g+e&L$y*`L|cuIP%P zd*3ckgm$MX+wukgX54xC*2b%7ZAJLGEcQ{?`{N0&tlFzmS;}CSNR3=FtS?RS#~ZH89Vzn0F2m9M_f%dR3?2B3GkwXlm)@yiev|Z^t@=J9&iLui-2+65 zl1Mo!qow#LduoMKZl`Rr!#veDQ`gI8H*)o$F+pwl1@7uUy*#cD3#P~hlVuUM@2@9a z%YIvA@oeyDrOx}|;Yk_al~>bmo`fH_GA4ajl&SO57gJ9$CcKBl+;!QTvFZOl;{(O; zdSsF$-C5@Ndl*A_m^W`Dv9>%BmDnw#`^@e6(b56F@9xaYLa?GKc0@zNgQ~@yk`_$&;GTic!YH3ag?)!wa>Su(Q4T-~vPd zujYn;@8v2&C4O7b&}EGMyEx@Jy|>ZNtj+*6kI{4VhC%SOrhvjS*~QbruLtBD%Fj9K z*&`goY4dkSCxIs;YY2Ilic&0(E&dK^XhGO<@}XZE|=#hJhda%uVfH$)~6U zhteE|VWvZh?gdw#J^8((9Vd$#U2|)Qx8h(5<#SGQ`es*a#%)55b5+Ykqi4}w)Tt1& zyGTQx&&v>TGL)sHU)pn-*0({kKyr%k5E_QBtX|z`Jswj?EmU}p=QkVgw{_C!8mcEQr|86`Mbn18%2$m**oW2nw=i1kYJ96r-WYVp9Q;lhRJ&z=BZ`yt)w%-!m)>&6U(hDK0 z@$)ybRx@1t)lJP*r1X7Ch{bw+h3mivg5-~{4&LV#2ci^@?yQ@YAcK!JW|ihuwBn*P}nLG)>3E;L`VyW6rApHms~zmM!G0{?cb(F=dr+{MX2}F{Ic^ihRDztP@K8 z3eWPG#F+RueJ)r8I+11$WN(?N4djPz@IcE$tz08mSj;SWFp)f;2XCh&6m1R*&9Ms6kPLkSiYK22kyHkntV3Tsg6YxFPrvjIlBKlBWWXeZS1p^hb2mzr z)j3I-ren|Hw$@r+8@+E^>aFRkcZ45sRk-@W8=<|6SK!B+{XOOaA)OnXq_8sK!9!d= zdJIxjuZJ{Y^Qy|ED|v#z;mC2vfTiB$`Uh>4z}QYo=QqU(^R#yp2)yW^dp2>Xi8B+b z4BjLU?DOM|jAxx77q!lO|4IM#*FoTac)s}`>%U~h6~tsT=;SS|4Zk?b+1ki52-{j2 z|7R^2z$XU-@E8uzYY8_O%fA(1oUCmBRDp4Du);CDDZv<6SOI5Z{-YiYaP;ioiZFII zfYR#UsxTua6DCt83nnWj8zx&OM<%ELsu%lX9QR-JV*fP0`?p?<1whH)r*k*}&S&2q z|EU;b;RIeK3H%4(+rrAp!~t-*gO!1kiKvN@t+5H988}BL2NMHpIM=1}21i#@y;@5A zW#^0t>sq7bJ@jSy_YL6@;SnbhCr(z&@&(>!yk=uM`>AJ{$(KJnD%wjdSHEbi*3Yf& ztYfJC3Y0ww_uaa2X1p3fkmUn$llf?*VaD^7SIgZbtC?=2GMXSFO{W*ue8_-X}RV6)ysx*zj!Qz}UiO6D&(vWiG2AKmSo-Sbzk?X#Dm3Y4yO$ z!Uj6)?r{sMuG*yva;f<#@UC;M2n+&Dhu#N-O$LuxP*g}sM*0(&AO%S!R20Y(XnL3x z$hV4q&IC#jEgAHzbhap5ebY0Ds{30oeM4I_%X`4G;0yNEMPh7r$Q_yU`li9oa z^i5&U&7-&2GZRt*MK5QnrgvxP_nksp zukU|z0O}g>1FrnT3hXeTfHK6buwXht>g6*62sr^M^v*oJiG?r zEov{hz7TOf%?l!KbV|LvZb&v`KU)VyrQhobC1EGMSl2ndYrFzUq1A3l(gYa^vwCqp z)N|(GRmqAC&nGyq%z3q>^vOsLJ?OksWuTWUJ9)9-f9%v1tYdxwL+aIshFY{U8zJ!A4P4N_8(bx1#ugVY-wU1Y_VU^NfKAE0pqXbVu&F1*| z;64(*UY%Q?O84CAksySt@MT(Od@n>IdYod1CTrK^jN>ov8ukFwQ$Fkfn?d}BB){Y@ zDE_S68^#uHepU*($N*!FM0xF>4ohM39OFXWU5unol~hV~2%_BR2ZB%|0ZlFtTlc^{ zA|EG?Qn%DS&Gs#CyHH}tcXBiPM+V+Nho{FH61`RK zRTtNIKgE(RoUxdXxtw0=hSg#3_MuUj zLb;R_uDMuOWx)_C2=(y{1{aGPKjNk_Up0i09Ml+SkKFUjAsa&S4c+kPEZiKYh`J|| z@;Lj4NJ4kKerU3wie}&Baj}l9zCT!Rg?oVSU)AJe18MkGktX)*Mt;sBeD)Vi9oB$a z_md_kiPC)C?(`*FhP!XIHswpQe!BXNFA}FJ=&$XbQ|zu{cw0CS!&6>FhV97%Ut~i& zpAoAN_^nE_+nSG%1CGR~@gy%)2sklw8eGNeG)Qnka|O zvf5az7?hgL@A1v<{jp@4*oeIf*7aC(8kkc0J$_`qK9i0%`!2>#YE~1GH+7d zcVE$pob_1BX6VC8a@1#ve#9F4hyq&!+g427P6YEGO%x8Xhx-Id|?hoxqbU&-! zA*9Iwwxygl|VC?wNpWq4#B#ZuvzGiS?+?|TKGA#$kl72SWMro820PH&ozWc_E|H& zHdn0PUFilVY&cb-$dH#Gqw=MMLc-&c4!xckD=0^{UGF#$5k8sm$6AGsl;h%)(&Ie1 z=UfatgY8Rx5&|u1yOAe4hfP4|RAa&q#uBl(tpR6=6tg-R;ZWC>*MVd_HC_DX^%n~- zZ^=E+UmY!O2ZQ>g=9K0SlFbk3@up#j0`Ry(E}=n*D)JZo!T7A=^gou zZ3Nmsz6|bZw|!p}$@!FLFwOLSnjOPYkR0 zZtvryg$8~`Kh8SGH1vk=>rDx9)@}{Y=aplHIh$LFsjtt8BKG^_Tj6XS!oG$ zCyU=XiX82=A&9m-!rpSC(fveahb;)=@w7JmLU3vB&*ED;GE??mh#q=2*>ynw39jNu zQ1NF`JuTQWlhq`w`c(+sr#K`Si}U(S0+`Y0q{|YwI3yvRuB3cn2Y7fc5Qi|^+j*f$ zw|&Eytwfr3D{;TY_8@&Nn0N1lrKFa8COYyzs(!H!pLf#(-C^=XjxihUl^ZJ{V}^$5 z&_r=VWKaHxjAC~!*vM(BZuxPh$!Lo+XTQU~G}B)em+hF|Q34B3=Ua3K4JEt0I=<{j z^zAZZXD==BmtS;;e~dBNWNyKM z`d9!3%7E?w$6nJ3Bdn`G?>19=OV?^kI{Y5~{)gw3&lCpCo>gtSNkXy<%BPKno~W<3 zX9Z_yiuJG_9rGBCW|2(u-yR6RFe&*}d96@5AE^5l7i%y+@wuY}Wuvgk;AO(8Au7_UKRwOJuoI>oRB!g0UHG9Gdp2?u&4FSL zY(JCCx2LbwhGjiUMluh^SdzSFxmX6)WT=LP;@kOZT3x|xy#}U|z@^)hk+M2(eqsIH zP!uG)3M_8y>S_X}_}kW|5`qIY?;Y=EWbd(;;U1hb#4du^Rua zpPUj0QrK9o@M8THr728ZXw^vLS0qwmw+HzX&Z+)gEdzYir3n`vtZ1!EWJ+YJDI7kzO_bu8KQbg~kbx;c{4RUo*@UDh# ze5K!yxv$PEsPOVG1oIY&HoEHU2gzgA)(c&m9nh8jXnd$i9Ls7iz6-I*N0gW>V#HaB zH7MR}L95O@D;^yGu^unegphbN6&Pt}SJH|BL*(rtlaI}Sy#u`{ez|iK%reY=faEe$ zKhl3GeADvOEGa1h)-ZzMPe?V(C$oph$>flgr`(O(;W@}799>}(#zyNx$vwhEQEJdk zO;@6#v7G0jmQuE+2zklC;B84lf#6#va9_#DM|4S48e$Sse ziramWL^biam==YaUI^!^SP4QBex*^%Yv``ybfw9snVhh6cxtZ7f#IPGV-C!j&h;a; z6cTArV+j5x*6XI1rv|Em98`0Z9Jh-{eYJWQ9UU`dOhPXtYcDHyIMm9+j0F4|>k(NI zLK9J%38VhVV%H#(CPxuL;V*u{e8jbO%B2=2*i`u`UVC2hwEBW}q9@ohKZ_!`mTF3C z8vA}8A-O@>v!QDta++MUD-T$BvqcpWr=evWtU%IkPT4GOTr{-y7_F5|`pNuOW`Ip@Q=m#{ z6N-XhJLDUV`y(`Y75lF+8D`7jz?Qm2Hdp+IEu->%O*?!@y$3JR44h*w)zZT?bx+Wt z%LYr;&J1NSTNHh`M5IyN&-#geX0eJ21oYJ;2UazwmK@^|1vurabkRI#u+X1(p7A5e zPM2`Ha_%u(h1SQhbh?n|eYb5~K1;`|eQ>;Gl-E{e1_!s;@B|IF3%E;VX!>@NJVZmW z8s`Yw3vhuY;g+>P=qZw%G#UmXHxGZg<84#u$<~cS9w~;AT?FAniy^-O)dVrH6^Lpk6e ztBMcZ5tqn%YaEJ^<5HXrE5_~HFsg|;n3IG+pme$5a<$jrllP=G`rWDaOL}#+B7GtP zXq@p}(h%G72A|VWl;JLGQ@aQY{#<^twY6v>g8Y@VI8*0GOaY}BCe%i<9CVBhb#HvLg{sbWi%$RV z;EQro$3s%MnFhqA46e50)G@)(-}H$=gc!{pJCNSRIr#Y}T{*_9b#^%m4N06UsI8t> z%wfZcBOF!|+pxLQgF==JGO(=u=z*+0-EdeI^pR)G5DrT&R33c^F<(Q17by2sW1IY< z)Qda{ddQ+byG;8+Y8IsZO@~<0_sxJwGYGt~TxOhehcD^Il>J*3mG z)j_pinS!3S(nuY4(%xd`=>TH9o zR*w_E)AsNpLfkV8F8y2HS0m$|AcYB*i31F!N%4+|#IcimWu^^RgH8=6gGY>3!Ey2> z|1sjh+tPegV&QvgP6h&j#n!brXTCk8BvpyhRFN-Ew}&xIiOBwe{VI`YpR8XbO%k){ zu?V-*H)o%UuYXizYD~MZb#;_Ijpls_vm2Egnl-=x_=kBSi1Et_Imz`4c&M4rC7P9v z@Ygmw%P6dp^;f*kadKli^5jDZS28~c?YFQ$aKdg#c=UZho&NFYjD(IX!m<^Hj39)g z{G0_oN;21Z_WzbI+fA;xls$`#zlBl%o7@6UE(Hf6&*LCxj68Il%x)?4wYx61urwvt_ zGsK)E+|V{7@Z)(1N}zsOl_^k=1Br1er&MYc%FMGi-2wk#&7+)BEH|JpPmGAV==4B5 z>dHBp4$u6_8P3@0M^`-eh1x`$XfG0LuBDR$$oa=j!|+g3h+PaD^d*jz2E~^I-5_L0T?poxp}Y#v)1==I19O3h?2LW3)dw}5=2CL;q!t~n(>B_w z_*$k?bXCHQ-zUDLDWA&S3OG=UlPCmNB!1b5Nvsc!bA&;n{1%9xTGB}2IhdC4 zz7*mD@!p;rRZI6(o2S&tx$*M0-eEx&J)ZzEJPGv3hIVtVLxKnq8wJ$(oTEIf@@HU_ z4+`|&^0Cl5cci{y*1RYV>F&*gnmC5KBZo33UxT27uglnck|y?W)eZNjC`_-5sl&+h zNV-pE{<|JgBx8nVD<3%9MC@q3S@xwe7Is0eS>>FhalrO-|0I=5zipb;Wy)3M@dBTh zZv1&;zz;%Y#B=!jpzT`;wv?m$Bg7bd)lxy8N7b&N;*7m?L`NuO))98H@S2LH^Juti zRE#WB6?9IU{;~m>!S~s!-@AuLwzA&gaGx{$v@KGy`D!R1I}>=Be;vO*3tWG}JQd|} zPc~h-LnsM+=&cna%5k^xqae9_R*D&Oi$Wz$q~?v%?)M{W;FGo}Wup zIz96Q#8+W_eD)(g72;;Xq9?n1{}{<&015-s6z6g;myZ8&Jn<^*d2^9Q$x+GZ^Bf=jq=M5$D|_L$Kv zR-J*~+xX|K8PKgWGAWN=LWo(r?yII_FD30QBGI`hC|Di|IX;DMs{v&0x6;1|U&0~g zHV)~AbTc&TdqR+qU(W-J6COiT4s-id1aRVPu?{opG z;^jxx_h9!#PXI~pw+xGjuU(~wAVQZDj5EZo!pxqat;!K+;pF77m z<@WHM=@eKP9_49lKrt0hZI0`wZ{rT@)!I}}TbWnvWgqe#7g)nZQ2f@a>k%L=0PR_mn4vtZ_bsskxa7bA>W^7sPfF zA3o9`_66eLp)hJ)SXc4`*bnn@q#apEPjmf^ts6N~H6^KY*qaybN&?Fp(fPsJBHm2Z z13F(p@Ctb3cHy&e5+_^q5C)dB7Y{fJZ_dcBb(?(cywd|oA;ZoZ35rgx62cF6M71-~ z_F>kZ2yj81rlk5 z5IU}-I5F=bA(j9Ztecu5UlQKo=!rB=8Wu)Tm^k)vyJ~Ys=rS;XEwnOY*go!~$GeMQ zB~|`EjQvxPCsDI7dQbPXt!dl-w{6?DZQHhO+wPvWZQHhaX74Ay@7+7%jX39~B3IQ# zu8O+L%JoYm2b4>~KFQpaKE#^b!GIIbDuuH0)z78_JE|;x7wpbly1ABBcWHg_kwnt2vZrS`fl22lvx=!hJ?=F z7z0%P5I5esJszsxLWWg1%P`<1FsQ-Xr~>1-oNbzB3JVNi>c-heSFefnf#W+K4ZnA! z745$cQMhF{lU*(E7{x+yE-2rs=Kn0Q)>zTE4KTT66b)lBkXoveIsj?2V5uzu`Lk6>#?c z)(dLCM5mS5R2by`o04FYx~YU)5|JfF%h^z)1(j_)qDy@PKh%WwGX;T)D3`w)Ix9Q) zxM=1mV^~Qpj;Pp3(^SZV=Uj(kgR*)66_~BEeR29g41p;(LU0s;HadYL^;uyMX0VMWHu>?ZdTD7izQsXAwz=w*ruWAZSV1kX!Tl7(WtNg zvvI`0ycT+?A^@N&V?}wo|2tJoAif)654jk-k-Nxv1gt;)w7TS{iC2leE`K3aj7ne^ z5wY(CVRL-W+2`+`h%Vb|p?qCOarf>d)(aUBoa3R&Id)wqTZD#f3BH)edb)|&G7(iS zMlNJ38T6-4h2i>SfNwj@1W`y*t4y;~o7*MH5gxpoD56yMGTA;g8OC1mpqWh}-lVi~ z04KH;wFn_ve792iy7nSMKVAAD;u{HQWM{7iLftt;-ktIx3^?8kR>2-N9V^LHQgt0V zSVWKd7VTG{`yxh=;GZ_Azplu@%8gbp0a zqQ+^39Q`lg;cB#BuMQNggOTi+xLH@cU!zZF)myHiT14A>TK^M4z)_ZaOyUr>Fc~we z%?bXTQkux{dA5>BwrrxHrpc%uaUt?4gVEQ?M0-R_r0#qb&df0~u@qWp z^PPJ2s(j5t^pss{)|1S$Uk)lYyKaKoDX)r&hQavJV&)+~W5y@Cid)6Qr;G6w`#(HK zV!H?HADOkrj(y}|w#y5^>vqf4Q=A+{*-%dRjk;JxYLU(akk<90*eJE}d$b4YmDV#s z*+oIb2RTz2=~P7A)oQ!j!lIGoFG~=>OYv2>?Yxj)?^BFo$gM6<7NomuIj$u?$dd@O zt^jA%vjaeTw|AiLlJ1DfdgQ;wtq@p>+L^p~Q9?v@0)?_m4a)0dFlY|W<`k&AcjXjp?(G*9QbVZAA2sk9B*J0J*J8Fq@0(B?Ny%- z8SUZ5Si(G$>z=*X$E2(`Ni zq97T3r?_%FZt)CRQr+@Q88_Nzh0{obQ-+Rs;k)dvT;L9VJ%AdBUnJ293PW(oHYIJW0+o6Z)R1!53-xK2o4# z#dRlmaBJY4Mylo!0|VO#0v(?dHrfQ$3|Pzr6eB4z+-{JkR_PeO2aHbM4~Bu}`h)Ej zNf`V1tQ85|jIVejU9#M$XiG6+1NFj%?WW@BDN&l49t@6(zYc_OOPv6aqc{&!umJL- zYnSTPx-Zv}54A6K)BVauz*A|_%Z=9|4VY~gC|)K7DJ%^|0YSWO(2;Xm4!F(d5j`cQ z+(XQxsd$M9cY6a)}}D+8D0TSa^qQ2;L# zx%^@_@In<>dlZO6R${xEY}B;iD`TDv57fTXJpbXR2v+b#DOrcB3~IU6V?!={NkMMv zcgNkgq;1!{ex`XcTdaT;H^-rDuHQ6c=&a!32aJ7;w^e z9qKx$@T&q3&Y4Mdd#4(QcPb+Jj5aRQ5aM?2O72-3kNx?w)%XPpxXm+A=;DD~AD0O| zetBmBFY6!)M&|ijK9rpv>*uX9D|^^ zK$i!rgO8IQp8bVKhc!bfp?QT?45cdzzEJ$HLzkgbnt7JGuuT(-f6%fmnd>S+ugT(t zUPeJ&cE!4Wv))zQjhNVr3d?{w7}Scb?e>a{Y+|#zBOTAF=SsohE(b)KV#&utQu#S6 zmElf+E44#&gfIR?qbc|;iFPll1D_-ygm0tm>sY37Lg)wRLGL?W7A(2>_H9fI(JQyr ztwNvELjeQj&E2Pc6+s23>IlecWh~<^&Ua`cW9%|WtRBwW+c$zUBvsG=wS*&m>Bb_@^h4HzeV$#u^`XP*`6{^>lc#(V{7)(n1s|q*i!|0Fz$~2 z=U<({qQQBpcg0sOImk}xxL`v2VxinS>Npl+dw(ZW$~va`cc?UpoomWLUB9RejSP%O zXAt@uTAVc_wtX)C-Y)29HxgIE$@iJ_xF)sIt~gg?FGx4Yv4Z9k6XYHw+}dEUCZ|=? z%aq7+fr;L%b|yokf0BoU9Zf`If=o*{UpC`fn9PJStHUx(mmOVQn!yuCUG@o&k!M0* zC8DfzL$RwO6s%I;f*%v7P!gwct=Dlg6K5hXLK|*AMV#=i&mAbfgCzyZLXc>nAO9I- zcIeC!LoLVaXcL-Ozr$xnzMq|)2>%IDue-%BKUcma^KcPcLI*pNwfx8#w7SXof+@-{ zi(v4ClcY#Nw$(LuDyQcS1--L>d=jM6){rReIoB!y+P?ckD8cMlZ!Q3!0aacuA^z1zHWS1z!jCjfYf0JB_gO0&h*EX-V(KT{rhfpZF@ z>fodDSjC>scDRazF@*2=^R+J0?UYE$skN{sdew&4If^dLWb8#voz1#@Xm+sr;}avk2To;_q(rRpW-*^t%yXl$tPIwuf5jQ7hTT&?xD^8BY?XjwUfLTwMXJy|9 zJ)3mH03VYmLs7NM_krU)uodpINg~Wk(x*U8fba!DNGJ^+=$`cgjH5V7%d_z@tUr}S z-D>Qcaz5@(V-=3;aOmcGCRB4VdGPLoC8e4eVQdkq|4BY7C{7QR|HOw?=)I$lr!(YL z)u;o++6<%$A!z!s<9ea&$1yDa=~=wMT*W|8pI73lIR^UrEDobOm$GM?n$4eXTEEmR z*KodyDnV(%aDl&~#h~SEEmJ-8;X4xq(#dMOW7@d$#69>})+hT~>>c@mrU<|k-j<$! zHdEU2q!DLz&?ZhVWp|a!5<;kdHLEJgeVWbb~)C<%+MXqlJHZE@ELFjF`gfPyEwU zf8@M^Uk0PR8v>h}p-SYF2wl2jXj^>`VjY&FVk{&Q5SOrb+o)}|>t(?{ zV^!toOY>vQ98_iM~G$+T1`>;aby!MaklLdT{ z6+NwV5v~=7Xe?mdUP|fz_KmYi;_IQQp}D z%<@1$e-FH=adig)0(X)tMEcm*73i(Z$GSb8kS&QBn-trK9!FZc4Y4~Y!!GV!Um}iL zo0$TcgHjs0zgdg+kTP~=YOVo>2R(BIh;XN zIp?V=14T<<_Q{XxOTBn=rC$W1zMjCiK_EP3rHy%ASq22T2*X*>cXc;M@xv7oMAdlc zM@cCFM@AX2$%;Y7lC(1K;y7*p@l3muvI_G-Ha>YDP9tl@s=$(2~)8 znCK%I>joUCjJjZnQc0r65JytiWZ8{XCCBX$g_~pkQGrV6Dy4Lvi#US6CaE}bw(0%- zJk_x$K2JQ#rpcd0n~uW;^^U)|hpk|c$x^YZeX4Al;BgIkEj7qWY1VSKb0Mfr*Cy~1 zT;6oL`w^5`?~z`=L>$baoo`u9W!Lb6YP?2;uI zbF)h|IC5d2#z-JNU{ufN+Fa!j^F3WN1-6MAc7>j}xGUBfYCt#(NHGL{-Qmv=CX4v% zxog3yLhc9?F+DpD5{p>mHH4}Jn^;h1eQe#*=u(94ippAvjy0z~2efzR|Gn^}vZ?@{ zby%YKfsPh#7f=qx^;J%ImmLBf_t{44C-h>IG<&eEkZrmQeUP5V)PoH5h+6TQ{1sme zH|YZA`e+&5q{?)8Fn`R%qBzTrsU_}uA>r`+{mozZBvGuc^x>78$Vs+s(y|yNi@p<9 zJsa}-)3Ab|@tsDNey}cL8!H3s8`~@88Kr1bD9eqVUZLxFOEmN` zEGa#4t>jConJIjvW=V~0NYdUAvkM3}_PF}xP6V#?Ovdj^w8mBlU~C6Lg?0_oIYCLwM|y%Y*W$#N)W zRSw=OagICaN5Xm>#5{xepuP_5x?)R1{!JYfga8H3%d+!Q4?Y1qE>+X58X=Fo!b3NC z?>UGMHYue{>OA{Z0g+kp%6wuZb){)MrcV*Sx(auKU8`+U$*LpG^QIDSp}pO{0x_Aa zVu2ZZ-X2Jr0RyofxIa_QpW0wtmr)49PcK1ryD==4k`JC5&rI{!bhcgapi<_17eZkQ zlDAtQ;l0Hz1VMLID|v6F*3Ga>Ci|U zj5!caR@eD2LRuJq(hSZbR0!h3@L$YD4GZBT4CNsj{K&7DH|gj*PV;fBIZ_+`hQ00h zx>>eG6T$@3jk_5hOHeIx*YiuHrt z5DyX!9B68?jHpJ*#7i^0g`mvauc4N^599*a-HrCBKDC9uCq~59s$twZsCTzb+v||W zlaY9@w`mwN9~hwsUnLqwrpg-nR!j*tqHHWUag5fKw1yC*BL@`lf#Js}32Eggki_ST z4&1S$FEb|Tk?u68#WyhAQ$~T$n3BL`)5)RiykCK6D}si4x^P;bT0_q?v}s&%I$zgD z4W8mh;S@nESxa8i9s4X?PC8Txe~Om35D~j!BG1~kM+H(^oiT?7lyX^Fbh=J+j86|( zB}NBCwp>R6dy>#WprNshUacLUPuE2#XK<+6-5+B6y^I7?QU<9<*9@&qaBrrlDmJI` z{`F7%2ie`>>>5XJXHC?!0wgUYcjWjnC88*3d1Q~7gSp{jGN-w!RRP0iVMF^>pU9O& z0)_hyUW$ixyN}gs=RY;&jI|Zos-D`5DtO zb=}^^mkL$%t`i6@1a+jdBN{r9tWUn6UHR^80!WPx@A{KyYmJg` z>#7pCd+%&;5xkuO^%CweeX&Iowraj(;K$q4~4St2#V#ciKD>Y#y{YIjV4U zR*`s$Sdd~Atfce>Wj9&-wFBdlDx7iliq*J%1Fq6qkz}L@Z?uV3Chozpz{k$5&LkFS zh$5;XC&vwEqb*1-t>nAPtbVSD^^<^gb#PcRVXT#GrXZ+8gm`JjY6II=A`Bvsf4bc%tu$qT^Z!O%q5jJX^?cs*D|C6 zFtXEYi4g|BS7miPc@HMdIFU`f0ssC(KQ0LynbU#qP?6m=+|~B11Dj7i@vHhT*@P3l zZQ%{-^_BMKUy<$($jW(5u)meZb9q6!c)V)B8YP2%Ox&>kMxasgAh?Ot(pe@XZl8gF z7jal#43^eku;oMDn;Uwg>UciyF55BW_Amy;L4NEC&AWj`S3z=9UrO^6q_|BCC{}?K z1pZ|B94}@mP8q)~RoO^IOkl@luh2kkA?neg3O=y|FUGqgFi}L{dak4S2)nWKsI?do z=m_W-PW((c6B}-^3}{(K#Q%M>OMM8iJ>lS0Dl04f#{>{{1v~=($>8Dl9Zqq(6z$hu z?0qWts^q*wSj}2*3%%9R+qBW;Of13u?RGKGc|bh6zH&rNPT%$p}VZgywku@r*09 zoXrz#@f)Ex?r`oq?$}z=E~x7nqRd#KLWL8RTHHW9I0rF^;Z7B@oNMme2M95#_7tQ1 z7yo^S3<-g62!fePk-p!o?7iZPDT&v|py9ZT+24bLYt3TxQ8sG!W+*YmetI0m<0WEN zR=i&rxmv-twDzUy@E2cDKMz^eqQhxE&FBP7fMad(f$q+I#$Qd1HWWX50n^=*$$9>FYP46R|9lM9WdsXAoL3`BSC6eJ8SIA3$qL2%CxwcEFP;;`jn@~v)H2B3=BH?fm=ru7k9_|Y$n1BT!+^_<`i z0h_{Uc_Irkf4uvcd?~7C{TnKGZ4PdVjN&t;plJ`m5QP-ys~?DDp9xKLG*2aI&^hf8 z65y&Na{gk|A5s!7Vdo9NBHSHf6m3CC^Sv+4oGUPk@Ys{PHIg%{MjWZyYb#XG#++fJ z9dni4Yhz01ukFkIbur9Alo{%N5E~u65rJmu&{?tU8PuVwLaE-&y2+7XNEV4N&1S#n zWOJ%!dR}7(5hs+@3H1-l7O$l^m{y{%3!sg4hR-e-xcz-SOHyc|NzFzY9y9L5NzBo9 z5WKl3pf||zXPjA160_p!h88n56O9p%YW_5i4RQ_hR4L2|R%Gd@t0dF;PXfd*Mm^Ld zOfn=DaDp)ht(3!rL(^oiDUD@&@onp}n&1L8nC8mXMNdsHfH3}x4!gtL$g~YpM0S!K zSF8-mC`6Z=7=~{Ln#G3{NajY~N~T%vW0r`A_-#eHm$Pvo*uMgHpyVvUs!hf?_EEtH z`b~vHeMl2!m?@%xQpVUwS(My%^jasBP=;Ht11)TK!kHZloR9HPJPj}V_D_vh)at7> zE7Ln%!Z*qAPEbVEYkvoW5>cU4xcdAj73k5Gr-OZQ1s6r<bjP-2P{;;csK(>8U_Z_xZZ^9B-BjENz~2({T1E!cV<{r zolE{aaBhvJAZYr+U$Cp4{)qZqh`v&vt;&4ZNcD!l?C1>>K-Q4mTyw|}SBDXFNcmnA z`*Kh-Oh`~g`TrV?FhzY%FmVj3H3Q_ZYrPcmx{LNr->(A^Zh~rX|6uUdQr;EUeU_yA9gph3Rb^p#EFhJlM&F8s? zp}czEZXQC=JMBVU==^Rk(|tT-C86rkSpdU% zj|Or8S!>G9qennMQ{SozvCi)4Zi(`7*fKP99cWE}r(?$=*PiHfFp(q+p_Q9)wzeaO zbu(Cxq*z851e;sj)+=sdbxiZCq8Wu8(mQQT0hRYusW1Uba{1F#oI!czY(erx2D6j9 zVyP``1>pvGCtn>T#E;3&O#utngr4SFk9I>)m$w_E7Oe$#viL_fSy+n7Zee_{FKW@2 zh~t=g{x*f~)A3HR5|U?;Tj>4e&XAT~a8tOl>(XRJ46U9c;btOHnB^{0W$2Hj;%@1A zGrHt_72n{n0PgQv7dJ3Zr?}d;gF%~@)&lBLF;Iae@I*5aeNJ{nq}Lkd zTb0^Ue+ZU_`r5;lhPdU&pvNV+g_mVK)Jq_Z@xrXda)}wZodcT|eLN=PA*A&&;#R&* z=q3B5WW~+_u3S(XeJ9AyU3OKP>6@B+I<4NW0{D)utK!+wNo}y3l*vU^Opv~YF%jS0 zh(IHTb^uV*{SE_sQVgIMw^rdkJFXlm+5 zFnBb)kJ`6=l|fYE1U>defcSl4FCH$~@I808D+7c%=pW1y^esAQm^ot#D%~6>pq7bp7*WkB>nZAU$;ZTa+t#IOoB$C%7448U zhRu7{p+Et4%ur!=Hb)5?f@$iPqf^9T(s;53GXh)-a%}Tl3Vag$9RK!a-@ZuChTAWNmyIj?;JBA2O0l4#{NoU3(yg>$ zj=G8J(lxGHL@Z0j$)v`~Z8ALQ%@)-N#Jina>LLjqitX+A26A6|lKtZrs=%dT+{!sP zxc-SN8Z(7T%;98Ksk^oE#p^EI)=lIC*|hr&KGB8fg#7v*F3Q$=8BTQV+DQA-*}BL( zCie5#AhxTdcBGDtarmns)Ev#J@3tE=I6rm9!(Uy!zT{yeypYK zymeAJrhx5auqUz6EFq9Avv|+v(1U4Tx>022$8vA&h^R+I3yqGPfoafiwQAN|nTV#{ zMGI(0$`~$O@09PZ!=Dz>uwTo{CtScUr@JBRU+V2rw3%YBsQO*jm%<+kzo#D6h7f7v zCiUgJLzRXp8Pz%G;+q|Sms+lFO<%>34saZkW#UD`{vF}7llN##`GuB=7<+pr{!6EX zf{Kc$S0xwKEahhpnFNKB^sWDZ!8aIv82y*N#+xQ$umK~#V`^`lP3^g4e5^A!2IXxC zH$B*maALVz&9W~f+P`L1ZI`0aIXJ=N%DKXfzp((fW?+wDx?|k$&&Xykg!S{8*YcN} zq52veiBZOd_uEe8C}c&_=qqUN0&Rb1=(PmaQH!sFhw(2C#0suH)?SDGPUmzqvsBkb zk$_6<)sVb&Hj_CXrLxn6(lK&p$F6*g-@*cFdmOA zfk;?+B0$jp45iN&^wXqw{Fxg#>L$${^uJeAp)Nxc=biK-jqS0{dAFGrZc=H{U`hG| z>w0vwokbBnJ#T!OENj67bh<1DAx%gHRO1aTQovW5IiXLEk8&avML}fe$gTo=&KXk8 z)4Sg$C<){sexF&+JT5pJ%25b0IUS3%ixn3?0+o_l{Ug+UUA%RT>P=y`X!4 z|J>L&12M>iwlU#1ZCNJFA_(4AJKQnct0A!{$$=6WqevD?9V2N?TVa7?X2}q6jD5~S z@mTar-ZmlJyXjWn=gL4qdC)r$w=?Pnp6$qDK)IB?v|^jE1C~FEhzdOzO>K7J9qB zw3?#7MKJ=TM%0%~0P0^c89|B5!J)C1|LV#D@dxfJZ3db1`e3AHN+}T?xcn{^zx|^I zzWd$sENh+0D6)C??8?)uB2&EUE-bpT$`6F)sYL6m+ScGCO@3{5l^z6&>dFTc50|W% zh1GthVbuW+95#`u&xE{$h^^|tj6YVME$UBu;P1j*r=ye>*7YgjY7ejYXR9V(CQTJe zD@ZsHhXkdKfbceJI!Xt!EKhyk_S7F zU1eBdN_gt%7a<127Y~2NxLr~y#K;?@cGBPAJcNNg?qRZlWgIlIb1YSf{C3`oGl{D> z@7h#HoE!a^lx+tJrM^x7q^L|#KdJ?4e0*?K7gVAni~~`itn%X=J#uRrpu~pn5}xgH8)FnFb&&uSTL@~C389X_5HwDPRP%8o^$4P_kL6RU^wVrRC> zDRc_m^JfO*kUQ&8P(5;t81cxfx_nBG-Ppd(x1rQ4fs^AOKOs06CXmlKZ+JVU2m=2X zso>wxssA(I?f*^c78jHiR}}l7Qh|c8sq_C`DxhchCl&mgwZ`%<0~`JSk_wprw^YFT zKcxbuf2;qiRKWB)?tZxM{b~CinxBiDEnAkcy089a<|D=L{$pB^mGj}^P zW1D}7g2g{Z!OGat5n%mKQ?PNiHZXQ@G&lV(Si#oD7+?pm(|0ho`R|PX9sMVt-MbNDa4;eR>j%>Q%r-~aI(82{1f|3A-x`M=4C z|E&He=fJ|iLigXA!~Yk~LCIJx>0-Gg9+gDsycp{&g_gn`1O+_=2rMLB--KM;9O%qO z4y71N2s0kZT!>FYK>>)OXU_Y1?PPuD&3XEb-tq5D$4ZCl=7oFPDvWfH5;np!f;0#= z5iun-AvikU)+P7sJ49Pf9R1+fK@B$ylpc_{0xc~w3P_MY;qEy;j1XL%AKR~U1Uh_D zu(0v*@dO7T3y30ksPn@pAh)R~npY4Ike`N62cS#uZ=t$)vod7t-C-X$0X>K!ERdK! zh0hUxQUnM;`;cETa_As(ot9?qBYe=iOAK_soAB)*pg?}ZaMxA)0dbR~1B(j2{t^X& z^82#?)eF(~`%%@>OrJUx3iB6`88HaVPzZllAHpF(41rHT&PI+2^8=P|&JP(1WJJ%@ zkN=k(8~X9yZRM}3EyTM{d}1j7C%XXyH3mTt%s{ZhJTVx*DT}h2H_>c#Q-otx8zvO! z-w>izrN4nM?<$LT&{M!74fy2PFnjsB=zAR21b=~(V?zFZ({nT&iz7e1Vc?pTYg^F$ z0|87Ph757^D==?P4U_t%_Uv=v*U7$=rCb7MAWTkE_0YbcL^PE=n(p597^4lHv6 z5{m5alcoA~FAkz#*(jb1IQ(I58X3rwCtp{OO9;Fs$S4p{=-V$i1krg-FbEhHlHQNp za_Y|>^9$(Q(f9SU(ehhnd&p3Kn%alI_TRGqThPD7$AAzpB|=q z_$ap*)%GubpFMPOSSZI2w!lBvW5iINgCj`k@8DuKiH|K0GP)eJDo6a*&50 zHcUQx9pf%UfWGPTh7FjjU!I;E8%X8VO}#;&kkEHXI)`9i&8;q>*f$XWE}Sm_k80&+ z-!|P06J6sB`m+=5xwVwQ1(~jd=imRESSHkWh)`c#pS!XO!Y&|P0t$IPF)1y~xRjJ% zMnb}0KhncHOa;E#PyFa8i&%B2h^UB&pmjgK-`^bEuUOGw*im+`&FrM;2%A8iRzFOi z0e!gSC@Kd#FL)b|xhFf8@cwRsy+sR&5OrQyjoK(ZWH4_9!;k9v za_j{(bleX7ErZuxgi>uTV%H60rUuCF^#ubx>l-rQ2j-H&mnd{^jp!`*d z8O~mU+0BF>H*1`-S(ruYFK!VGTe)%bL#V8E77XVFp{2=?b`H#A9>urpM9MrtL-l{p z9I)$l)wL<5_1c8!bn263sqZ|&w@VcySVepvv@45OinrUNu;3Eo5_xM`u9Gx~+1->T z6hytmU~XeGXxwdb_s#%Kv$0t25geTLjlYl6`{)IG1-qBjClq1wBoY zvae5LBLArU)xfN{Rz=_9L^AAmmkagnSlwQFFt)3xaa}|>sfoHEUvN|0wXa(;O~DBW zd3Gzt>}oe?CrYh9PpU9eSwI2aW}%wma5W7RNj=)ngu|5tQ?bz@S$O~VKl8wa6yf+* zKAQ~s)8dY$aG2uV9a0>n54ICXtRs=VvWPJHxAQZ*4bb0mivf7d3Gc^NWLz*thC=p` zybMdC4-aql*R9Yf@F^dnIi9I*pvB;W^kk=xS*YkrDz9^rvB|8qJzRa}4T8Rd;D-7vknjis3{-jC3cFEx*datnjlr#OV3k zmm%2CQ&%8&LPM>eD$IAokcJ~&kGeLg%cA(v4qU`w!|G6OtG%DBXd`swdNopkO#`Z% zxceL#m*_7P?8Is`Q+I2*e8;kvvj(KQ5o)W`7{YjCMEw@oh@@cwns6gqXg;I~z+nlr z5g;ym=XGva(Yk%FffNctHxp7W_?oUzo;0U)QxI@OYe`wg)dT-{`qFV zGU|IhbJSXoT~>^Cl)Qc;BCKFc)7P1T~R%( z9m~0z!hV7Xo;BKAVV9p}n9jYDucj z92AOBv`s9~bDWf`(!wX41E*K3;I{r8e0uxx0c1)?Xw|HPH20C*zmgf75hg&wky%Qb zzW+Wu1<@i?kv?-kDBXAgl`%%ISv9M0qKk?P%`ENbFG zml+>MAb)&P@cqd1;>`day1Fzafxt*)8$rV2R zR9mPPijsV}KX`h2>!;XNKbld(S9{-S;qg_81WQ?&8UJWGtz{l0oy1}=3O8Mktb0C_ zb9qOpuc44v=*Ziov8#z7`W}`P`lWXI6QeDfA|zXPL;q6Ec?RQmPMPY{Ji+VL1%|fE zY`CI8wTAlfm>4g6&?i_eo)%5L6Imif%^o2|cvOJsNNtT$NE9M|MNE#}{&|$#2+1z& zW}NldLi=#9m?dWOVSPK{k8qiDdRzY(CE37o%~Z+(1=b*8e25<5*+Z7h@Geb*{+QY$ z$h6bH(NVylsb;{P)XV@oyH=?L@3%oRwwYeaQ1>Stjnw(Wg!e~}r{$(;$Rs?Y+I&3b5N{k!J18ZXi?p@=NsZOz8RArDY9n*- z+S`P>7xaT&lafZtojMElg%8oSSzx7QeqrUT$a~N!14pi=V4j1T(bKuWLJrg^rpVeiKLKMNgVK?6N}@K&N{O3Gb)XnPYx7=IhnjeUe*lbm)pO0;NnB3 zY;BA%2RmX9S8gIRGm4#Ch>^9pwtQ+&#lNK&&Y6$u#bSF#7ad6qE2WJvAjPPe*e4jx zleW%PY;@SPo97`C=>+-xvki6$l?Ri|{sQGj%HbAumHF*)9L zpDI^`9?%@8MdN9_pq$w02&fctaqTO+6ni%wxTI~6n&P!JJ3^w;-uP%UN!fvD=WLdi zGr=p)?KJZR5P~>uHISP=b=w6#7Cs=R=zOC04R}T`U!c zhhk5w!i-tr$}G9azg2NK<~=9r$wV*JK5)3;5DA!m>x&=O&!N8?s2k}l!5T}FeH_1B zwR^sK)h>in1V`p`1M-38ht%s4sxg#cW_HLU-x8XWQCl}fOYG`@c=jA+j06#rU32C? zB&IPLDE1@Qxzd~n^l07}ZbUF}4yW3LjbfhwJDsRZBvd$bE6MIIQj$g4VMOW>b8)Y9 zA(KHYkUfJwX%Y5TRaKrh;vN^gVK1QyLTqiMrjq+pkIl0J7Y2<_fd)kfbE53=yzHXs z7sl9^U=eG4gOGDe{6#~17LS;k{39>vlGU>C#U$=K`geoO#lHRBL zMovTGs+8WdHO}3{49uI}YGIR17nb#Jv$P(w1l4W&xb)p@>a!FfDSvwzpi88@ODG@T&l7sq3~J z;{87U_7R`h#eabt99<|WM>U36TwqkgLr&W`fNC}r{WatufkPh9dESx?AKd^Dv3GNh zc+7h&11FuVZAxgXRIF#wGQa3PdFtlWYxq>F#uU-yOI~^rIFW)C@;D%LE6|)ooAoDR zD)+IiEc$zgiSML$bysA7sPH4h%K}i4Nm(yqFvePWS0%LccJcP9Iy>4Z2sS)nQ>z9t z$fQ&Y{IVw$>=xFmVCLDb$}W+<_ZbMiSv8wB9}O!+&bu+hKfna44kZj9v9+61lR(#d z#v_d`-2Skv5M0I^o?vLO*c9CFka-xC* zM`;uDj-hZwF&)7KjOt;O@BVm&4Ue4Z%^ld?k6V9^B~S9TBHAUhQE9i}PkhHG`ugH4 zN_Y{_Tx>TX+&x@qTU{U`SFNA%{+=I6iY2A&yz99&brTlGFC;MU3~lr*44hoc;UUgo z)iN$L-8Y4eedbZp#Z=qrHupqZK-{@tJ(LyYKw&)t95-}kC{Sv&)a=|}nRd1Eb6=pY zOU}zjx8&G^B!7X0z9h6LygyGHrVfy~Hg$P-4;kk(ur|dzjSf8BkcG8tyHxIu&3x58 zEpQ=+Ln?5MPnk<-yMEG+1xe+IbRTWnnR8VHkwOn61nw;#8OKojYasPcn!JVdzF3vM zS|i@Dfn=~PaWukpfZz6@R^AB4J=aIGd-llv_>!*sIU;i}RmvjF(3BJ(_Qzja=@IzY$vi`%UA8tl^v=RLwOr($h(9?{l$lRE zZB9ZO`qbZ3FWEq3xiGVhyk9zOE2kQRG-cPmfR52{ApWke0O*K

eZ?^G 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

(HS31~$>&X8p=ZUubv2hIsmSPiuV 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 - - - - - - - Class <classname>elfio</classname> member functions (continue) - - - - - - Function - Description - - - diff --git a/doc/section_members_table.docbook b/doc/section_members_table.docbook index 4745936..6b78cdb 100755 --- a/doc/section_members_table.docbook +++ b/doc/section_members_table.docbook @@ -10,6 +10,7 @@ + @@ -24,6 +25,36 @@ Returns section index within ELF file. + + + + + + Elf_Half get_index + + + + + + + Returns section index within ELF file. + + + + + + + Elf_Half get_index + + + + + + + Returns section index within ELF file. + + +
diff --git a/doc/site/oldsite/c18.htm b/doc/site/oldsite/c18.htm deleted file mode 100755 index 5440346..0000000 --- a/doc/site/oldsite/c18.htm +++ /dev/null @@ -1,250 +0,0 @@ -Getting Started With ELFIO

ELFIO: Tutorial
PrevNext

Chapter 1. Getting Started With ELFIO

- -

Initialization

-

The ELFIO library consists of two independent parts: ELF File Reader - (IELFI) - and ELF Producer (IELFO). - Each is represented by its own set of interfaces. - The library does not contain any classes that need to be explicitly - instantiated. ELFIO itself provides the interfaces that - are used to access the library's functionality. -

-

To make the program recognize all ELFIO interface classes, the ELFIO.h - header file is needed. This header file defines all - standard definitions from the TIS documentation. -

    #include <ELFIO.h>
-

-

This chapter will explain how to work with the reader component - of the ELFIO library. The first step is to get a pointer - onto the ELF File Reader: -

    IELFI* pReader;
-    ELFIO::GetInstance()->CreateELFI( &pReader );
-

-

Now, that there is a pointer on the IELFI - interface: initialize the object by loading the ELF file: -

    char* filename = "file.o";
-    pReader->Load( filename );
-

-

From here, there is access to the ELF header. This makes it possible to request file - parameters such as encoding, machine type, entry point, etc. - To get the encoding of the file use: -

    unsigned char encoding = pReader->GetEncoding();
-

-

Please note: standard types and constants from the TIS document are defined - in the ELFTypes.h header file. This file is included automatically into the - project. For example: ELFDATA2LSB and ELFDATA2MSB constants - define a value for little and big endian encoding. -

-
- - - - - - -

PrevHomeNext
Introduction ELF File Sections
diff --git a/doc/site/oldsite/c63.htm b/doc/site/oldsite/c63.htm deleted file mode 100755 index c62ba03..0000000 --- a/doc/site/oldsite/c63.htm +++ /dev/null @@ -1,146 +0,0 @@ -ELFDump Utility
ELFIO: Tutorial
PrevNext

Chapter 2. ELFDump Utility

-

The source code for the ELF Dumping Utility can be found in the "Examples" - directory; included there are more examples on how to use different ELFIO - reader interfaces. -

-

PrevHomeNext
Finalization IELFO - ELF File Producer Interface
diff --git a/doc/site/oldsite/c66.htm b/doc/site/oldsite/c66.htm deleted file mode 100755 index 979279e..0000000 --- a/doc/site/oldsite/c66.htm +++ /dev/null @@ -1,264 +0,0 @@ - IELFO - ELF File Producer Interface -
ELFIO: Tutorial
Prev 

Chapter 3. IELFO - ELF File Producer Interface -

-

The ELFIO library can help you build a very short ELF executable file. - This chapter shows how to build an executable file that will run on - x86 Linux machines and print "Hello World!" on your console. -

-

Just as with the reader, the first step is to get - a pointer onto the ELF File Writer (Producer): -

    IELFO* pELFO;
-    ELFIO::GetInstance()->CreateELFO( &pELFO );
-

-

Before continuing, the library must be informed about the main - attributes of the executable file to be built. To do this, declare - that the executable ELF file will run on a 32 bit x86 machine; has little - endian encoding and uses the current version of the ELF file format: -

    // You can't proceed without this function call!
-    pELFO->SetAttr( ELFCLASS32, ELFDATA2LSB, EV_CURRENT,
-                    ET_EXEC, EM_386, EV_CURRENT, 0 );
-

-

Some sections of an ELF executable file should reside in the program - segments. To create this loadable segment call the - AddSegment() function. -

    // Create a loadable segment
-    IELFOSegment* pSegment = pELFO->AddSegment( PT_LOAD,
-                                                0x08040000,
-                                                0x08040000,
-                                                PF_X | PF_R,
-                                                0x1000 );
-

-

The following segment serves as a placeholder for our code section. To create - this code section call the AddSection() function: -

    // Create code section
-    IELFOSection* pTextSec = pELFO->AddSection( ".text",
-                                   SHT_PROGBITS,
-                                   SHF_ALLOC | SHF_EXECINSTR,
-                                   0,
-                                   0x10,
-                                   0 );
-

-

Then, add the executable code for the section: -

    char text[] =
-    { '\xB8', '\x04', '\x00', '\x00', '\x00',   // mov eax, 4
-      '\xBB', '\x01', '\x00', '\x00', '\x00',   // mov ebx, 1
-      '\xB9', '\xFD', '\x00', '\x04', '\x08',   // mov ecx, msg
-      '\xBA', '\x0E', '\x00', '\x00', '\x00',   // mov edx, 14
-      '\xCD', '\x80',                           // int 0x80
-      '\xB8', '\x01', '\x00', '\x00', '\x00',   // mov eax, 1
-      '\xCD', '\x80',                           // int 0x80
-      '\x48', '\x65', '\x6C', '\x6C', '\x6F',   // db 'Hello'
-      '\x2C', '\x20', '\x57', '\x6F', '\x72',   // db ', Wor'
-      '\x6C', '\x64', '\x21', '\x0A'            // db 'ld!', 10
-    };
-    pTextSec->SetData( text, sizeof( text ) );
-

-

Next, this code section is put into the loadable segment: -

    // Add code section into program segment
-    pSegment->AddSection( pTextSec );
-    pTextSec->Release();
-    pSegment->Release();
-

-

Finally, define the start address of the program - and create the result file: -

    // Set program entry point
-    pELFO->SetEntry( 0x08040000 );
-    // Create ELF file
-    pELFO->Save( "test.elf" );
-    pELFO->Release();
-

-

Please note: Call the Release() functions - for each interface you have used. - This will free all resources the ELFIO library has created. -

-

Now compile the program and run it. The result is a new ELF file - called "test.elf". The size of this working executable file is only - 267 bytes! Run it on your Linux machine with the following commands: -

    [Writer]$ ./Writer
-    [Writer]$ chmod +x test.elf
-    [Writer]$ ./test.elf
-    Hello, World!
-

-

The full text for this program can be found in the "Writer" directory. - Also, in the "Examples" directory, two other programs "WriteObj" - and "WriteObj2" demonstrate the creation of ELF object files. -

-

PrevHome 
ELFDump Utility  
diff --git a/doc/site/oldsite/f14.htm b/doc/site/oldsite/f14.htm deleted file mode 100755 index 6af8bfe..0000000 --- a/doc/site/oldsite/f14.htm +++ /dev/null @@ -1,151 +0,0 @@ -Introduction
ELFIO: Tutorial
PrevNext

Introduction

-

ELFIO is a C++ library for reading and generating files - in the ELF binary format. This library is unique and not based on - any other product. It is also platform independent. - The library uses standard ANSI C++ constructions and - runs on a wide variety of architectures. -

-

While the library's implementation does make your work easier: - a basic knowledge of the ELF binary format is required. Information about ELF - is included in the TIS (Tool Interface Standards) documentation you received - with the library's source code. -

-

PrevHomeNext
ELFIO Getting Started With ELFIO
diff --git a/doc/site/oldsite/index.htm b/doc/site/oldsite/index.htm deleted file mode 100755 index 337061c..0000000 --- a/doc/site/oldsite/index.htm +++ /dev/null @@ -1,165 +0,0 @@ -ELFIO

  Next
  Introduction
diff --git a/doc/site/oldsite/x35.htm b/doc/site/oldsite/x35.htm deleted file mode 100755 index 9dd840a..0000000 --- a/doc/site/oldsite/x35.htm +++ /dev/null @@ -1,187 +0,0 @@ -ELF File Sections
ELFIO: Tutorial
PrevChapter 1. Getting Started With ELFIONext

ELF File Sections

-

ELF binary files consist of several sections. Each section has it's own - responsibility: some contain executable code; others describe program dependencies; - others symbol tables and so on. See the TIS documentation for a full description of each section. -

-

To see how many sections the ELF file contains, including their - names and sizes, is demonstated in the following code: -

    int nSecNo = pReader->GetSectionsNum();
-    for ( int i = 0; i < nSecNo; ++i ) {    // For all sections
-        const IELFISection* pSec = pReader->GetSection( i );
-        std::cout << pSec->GetName() << '' ''
-                  << pSec->GetSize() << std::endl;
-        pSec->Release();
-    }
-

-

First, the number of sections are received; next, a pointer - on the IELFISection interface. Using this interface, - access is gained to the different section attributes: size, type, flags and address. - To get a buffer that contains the section's bytes use the - GetData() member function of this interface. - See the IELFISection declaration for a full - description of the IELFISection interface. -

-

PrevHomeNext
Getting Started With ELFIOUpSection Readers
diff --git a/doc/site/oldsite/x45.htm b/doc/site/oldsite/x45.htm deleted file mode 100755 index 22eba0a..0000000 --- a/doc/site/oldsite/x45.htm +++ /dev/null @@ -1,214 +0,0 @@ -Section Readers
ELFIO: Tutorial
PrevChapter 1. Getting Started With ELFIONext

Section Readers

-

After the section data is received through the GetData() - function call, the data can be manipulated. - There are special sections - that provide information in predefined forms. The ELFIO library - processes these sections. The library provides a set of - section readers that understand these predefined formats and how to process their data. - The ELFIO.h header file currently defines the types of readers as: -

    enum ReaderType {
-        ELFI_STRING,     // Strings reader
-        ELFI_SYMBOL,     // Symbol table reader
-        ELFI_RELOCATION, // Relocation table reader
-        ELFI_NOTE,       // Notes reader
-        ELFI_DYNAMIC,    // Dynamic section reader
-        ELFI_HASH        // Hash
-    };
-

-

How to use the symbol table reader will be demonstated in the following example: -

-

First, get the symbol section: -

    const IELFISection* pSec = pReader->GetSection( ''.symtab'' );
-

-

Second, create a symbol section reader: -

    IELFISymbolTable* pSymTbl = 0;
-    pReader->CreateSectionReader( IELFI::ELFI_SYMBOL,
-                                  pSec,
-                                  (void**)&pSymTbl );
-

-

And finally, use the section reader to process all entries - (print operations are omitted): -

    std::string   name;
-    Elf32_Addr    value;
-    Elf32_Word    size;
-    unsigned char bind;
-    unsigned char type;
-    Elf32_Half    section;
-    int nSymNo = pSymTbl->GetSymbolNum();
-    if ( 0 < nSymNo ) {
-        for ( int i = 0; i < nSymNo; ++i ) {
-            pSymTbl->GetSymbol( i, name, value, size,
-                                bind, type, section );
-        }
-    }
-    pSymTbl->Release();
-    pSec->Release();
-

-

PrevHomeNext
ELF File SectionsUpFinalization
diff --git a/doc/site/oldsite/x57.htm b/doc/site/oldsite/x57.htm deleted file mode 100755 index b7cc6df..0000000 --- a/doc/site/oldsite/x57.htm +++ /dev/null @@ -1,163 +0,0 @@ -Finalization
ELFIO: Tutorial
PrevChapter 1. Getting Started With ELFIONext

Finalization

-

All interfaces from the ELFIO library should be freed after - use. Each interface has a Release() function. - It is not enough to only free the high level interface because - one of the sections or readers will still be held and its resources will not be cleared. -

-

The interfaces are freed immediately after their use, in this - example we will free only the pReader object: -

    pReader->Release();
-

-

PrevHomeNext
Section ReadersUpELFDump Utility
diff --git a/elfio/elfio_section.hpp b/elfio/elfio_section.hpp index bf4890a..c10051b 100644 --- a/elfio/elfio_section.hpp +++ b/elfio/elfio_section.hpp @@ -62,7 +62,7 @@ class section virtual void save( std::ofstream& f, std::streampos header_offset, std::streampos data_offset ) = 0; - virtual bool is_address_initialized() = 0; + virtual bool is_address_initialized() const = 0; }; @@ -130,7 +130,7 @@ class section_impl : public section //------------------------------------------------------------------------------ bool - is_address_initialized() + is_address_initialized() const { return is_address_set; } @@ -245,7 +245,7 @@ class section_impl : public section //------------------------------------------------------------------------------ void save_header( std::ofstream& f, - std::streampos header_offset ) + std::streampos header_offset ) const { f.seekp( header_offset ); f.write( reinterpret_cast( &header ), sizeof( header ) ); @@ -254,7 +254,7 @@ class section_impl : public section //------------------------------------------------------------------------------ void save_data( std::ofstream& f, - std::streampos data_offset ) + std::streampos data_offset ) const { f.seekp( data_offset ); f.write( get_data(), get_size() );