perl5/version.pod000044400000023150152462470720007774 0ustar00=head1 NAME version - Perl extension for Version Objects =head1 SYNOPSIS # Parsing version strings (decimal or dotted-decimal) use version 0.77; # get latest bug-fixes and API $ver = version->parse($string) # Declaring a dotted-decimal $VERSION (keep on one line!) use version; our $VERSION = version->declare("v1.2.3"); # formal use version; our $VERSION = qv("v1.2.3"); # deprecated use version; our $VERSION = qv("v1.2_3"); # deprecated # Declaring an old-style decimal $VERSION (use quotes!) our $VERSION = "1.0203"; # recommended use version; our $VERSION = version->parse("1.0203"); # formal use version; our $VERSION = version->parse("1.02_03"); # alpha # Comparing mixed version styles (decimals, dotted-decimals, objects) if ( version->parse($v1) == version->parse($v2) ) { # do stuff } # Sorting mixed version styles @ordered = sort { version->parse($a) <=> version->parse($b) } @list; =head1 DESCRIPTION Version objects were added to Perl in 5.10. This module implements version objects for older version of Perl and provides the version object API for all versions of Perl. All previous releases before 0.74 are deprecated and should not be used due to incompatible API changes. Version 0.77 introduces the new 'parse' and 'declare' methods to standardize usage. You are strongly urged to set 0.77 as a minimum in your code, e.g. use version 0.77; # even for Perl v.5.10.0 =head1 TYPES OF VERSION OBJECTS There are two different types of version objects, corresponding to the two different styles of versions in use: =over 2 =item Decimal Versions The classic floating-point number $VERSION. The advantage to this style is that you don't need to do anything special, just type a number into your source file. Quoting is recommended, as it ensures that trailing zeroes ("1.50") are preserved in any warnings or other output. =item Dotted Decimal Versions The more modern form of version assignment, with 3 (or potentially more) integers separated by decimal points (e.g. v1.2.3). This is the form that Perl itself has used since 5.6.0 was released. The leading 'v' is now strongly recommended for clarity, and will throw a warning in a future release if omitted. A leading 'v' character is required to pass the L test. =back =head1 DECLARING VERSIONS If you have a module that uses a decimal $VERSION (floating point), and you do not intend to ever change that, this module is not for you. There is nothing that version.pm gains you over a simple $VERSION assignment: our $VERSION = "1.02"; Since Perl v5.10.0 includes the version.pm comparison logic anyways, you don't need to do anything at all. =head2 How to convert a module from decimal to dotted-decimal If you have used a decimal $VERSION in the past and wish to switch to a dotted-decimal $VERSION, then you need to make a one-time conversion to the new format. B: you must ensure that your new $VERSION is numerically greater than your current decimal $VERSION; this is not always obvious. First, convert your old decimal version (e.g. 1.02) to a normalized dotted-decimal form: $ perl -Mversion -e 'print version->parse("1.02")->normal' v1.20.0 Then increment any of the dotted-decimal components (v1.20.1 or v1.21.0). =head2 How to C a dotted-decimal version use version; our $VERSION = version->declare("v1.2.3"); The C method always creates dotted-decimal version objects. When used in a module, you B put it on the same line as "use version" to ensure that $VERSION is read correctly by PAUSE and installer tools. You should also add 'version' to the 'configure_requires' section of your module metadata file. See instructions in L or L for details. B: Even if you pass in what looks like a decimal number ("1.2"), a dotted-decimal will be created ("v1.200.0"). To avoid confusion or unintentional errors on older Perls, follow these guidelines: =over 2 =item * Always use a dotted-decimal with (at least) three components =item * Always use a leading-v =item * Always quote the version =back If you really insist on using version.pm with an ordinary decimal version, use C instead of declare. See the L for details. See also L for more on version number conversion, quoting, calculated version numbers and declaring developer or "alpha" version numbers. =head1 PARSING AND COMPARING VERSIONS If you need to compare version numbers, but can't be sure whether they are expressed as numbers, strings, v-strings or version objects, then you should use version.pm to parse them all into objects for comparison. =head2 How to C a version The C method takes in anything that might be a version and returns a corresponding version object, doing any necessary conversion along the way. =over 2 =item * Dotted-decimal: bare v-strings (v1.2.3) and strings with more than one decimal point and a leading 'v' ("v1.2.3"); NOTE you can technically use a v-string or strings with a leading-v and only one decimal point (v1.2 or "v1.2"), but you will confuse both yourself and others. =item * Decimal: regular decimal numbers (literal or in a string) =back Some examples: $variable version->parse($variable) --------- ------------------------- 1.23 v1.230.0 "1.23" v1.230.0 v1.23 v1.23.0 "v1.23" v1.23.0 "1.2.3" v1.2.3 "v1.2.3" v1.2.3 See L for more on version number conversion. =head2 How to check for a legal version string If you do not want to actually create a full blown version object, but would still like to verify that a given string meets the criteria to be parsed as a version, there are two helper functions that can be employed directly: =over 4 =item C The lax criteria corresponds to what is currently allowed by the version parser. All of the following formats are acceptable for dotted-decimal formats strings: v1.2 1.2345.6 v1.23_4 1.2345 1.2345_01 =item C If you want to limit yourself to a much more narrow definition of what a version string constitutes, C is limited to version strings like the following list: v1.234.5 2.3456 =back See L for details of the regular expressions that define the legal version string forms, as well as how to use those regular expressions in your own code if C and C are not sufficient for your needs. =head2 How to compare version objects Version objects overload the C and C<< <=> >> operators. Perl automatically generates all of the other comparison operators based on those two so all the normal logical comparisons will work. if ( version->parse($v1) == version->parse($v2) ) { # do stuff } If a version object is compared against a non-version object, the non-object term will be converted to a version object using C. This may give surprising results: $v1 = version->parse("v0.95.0"); $bool = $v1 < 0.94; # TRUE since 0.94 is v0.940.0 Always comparing to a version object will help avoid surprises: $bool = $v1 < version->parse("v0.94.0"); # FALSE Note that "alpha" version objects (where the version string contains a trailing underscore segment) compare as less than the equivalent version without an underscore: $bool = version->parse("1.23_45") < version->parse("1.2345"); # TRUE See L for more details on "alpha" versions. =head1 OBJECT METHODS =head2 is_alpha() True if and only if the version object was created with a underscore, e.g. version->parse('1.002_03')->is_alpha; # TRUE version->declare('1.2.3_4')->is_alpha; # TRUE =head2 is_qv() True only if the version object is a dotted-decimal version, e.g. version->parse('v1.2.0')->is_qv; # TRUE version->declare('v1.2')->is_qv; # TRUE qv('1.2')->is_qv; # TRUE version->parse('1.2')->is_qv; # FALSE =head2 normal() Returns a string with a standard 'normalized' dotted-decimal form with a leading-v and at least 3 components. version->declare('v1.2')->normal; # v1.2.0 version->parse('1.2')->normal; # v1.200.0 =head2 numify() Returns a value representing the object in a pure decimal. version->declare('v1.2')->numify; # 1.002000 version->parse('1.2')->numify; # 1.200 =head2 stringify() Returns a string that is as close to the original representation as possible. If the original representation was a numeric literal, it will be returned the way perl would normally represent it in a string. This method is used whenever a version object is interpolated into a string. version->declare('v1.2')->stringify; # v1.2 version->parse('1.200')->stringify; # 1.2 version->parse(1.02_30)->stringify; # 1.023 =head1 EXPORTED FUNCTIONS =head2 qv() This function is no longer recommended for use, but is maintained for compatibility with existing code. If you do not want to have it exported to your namespace, use this form: use version 0.77 (); =head2 is_lax() (Not exported by default) This function takes a scalar argument and returns a boolean value indicating whether the argument meets the "lax" rules for a version number. Leading and trailing spaces are not allowed. =head2 is_strict() (Not exported by default) This function takes a scalar argument and returns a boolean value indicating whether the argument meets the "strict" rules for a version number. Leading and trailing spaces are not allowed. =head1 AUTHOR John Peacock Ejpeacock@cpan.orgE =head1 SEE ALSO L. L. =cut perl5/DBI.pm000044400001155367152462470720006560 0ustar00# $Id$ # vim: ts=8:sw=4:et # # Copyright (c) 1994-2012 Tim Bunce Ireland # # See COPYRIGHT section in pod text below for usage and distribution rights. # package DBI; require 5.008_001; BEGIN { our $XS_VERSION = our $VERSION = "1.643"; # ==> ALSO update the version in the pod text below! $VERSION = eval $VERSION; } =head1 NAME DBI - Database independent interface for Perl =head1 SYNOPSIS use DBI; @driver_names = DBI->available_drivers; %drivers = DBI->installed_drivers; @data_sources = DBI->data_sources($driver_name, \%attr); $dbh = DBI->connect($data_source, $username, $auth, \%attr); $rv = $dbh->do($statement); $rv = $dbh->do($statement, \%attr); $rv = $dbh->do($statement, \%attr, @bind_values); $ary_ref = $dbh->selectall_arrayref($statement); $hash_ref = $dbh->selectall_hashref($statement, $key_field); $ary_ref = $dbh->selectcol_arrayref($statement); $ary_ref = $dbh->selectcol_arrayref($statement, \%attr); @row_ary = $dbh->selectrow_array($statement); $ary_ref = $dbh->selectrow_arrayref($statement); $hash_ref = $dbh->selectrow_hashref($statement); $sth = $dbh->prepare($statement); $sth = $dbh->prepare_cached($statement); $rc = $sth->bind_param($p_num, $bind_value); $rc = $sth->bind_param($p_num, $bind_value, $bind_type); $rc = $sth->bind_param($p_num, $bind_value, \%attr); $rv = $sth->execute; $rv = $sth->execute(@bind_values); $rv = $sth->execute_array(\%attr, ...); $rc = $sth->bind_col($col_num, \$col_variable); $rc = $sth->bind_columns(@list_of_refs_to_vars_to_bind); @row_ary = $sth->fetchrow_array; $ary_ref = $sth->fetchrow_arrayref; $hash_ref = $sth->fetchrow_hashref; $ary_ref = $sth->fetchall_arrayref; $ary_ref = $sth->fetchall_arrayref( $slice, $max_rows ); $hash_ref = $sth->fetchall_hashref( $key_field ); $rv = $sth->rows; $rc = $dbh->begin_work; $rc = $dbh->commit; $rc = $dbh->rollback; $quoted_string = $dbh->quote($string); $rc = $h->err; $str = $h->errstr; $rv = $h->state; $rc = $dbh->disconnect; I =head2 GETTING HELP =head3 General Before asking any questions, reread this document, consult the archives and read the DBI FAQ. The archives are listed at the end of this document and on the DBI home page L You might also like to read the Advanced DBI Tutorial at L To help you make the best use of the dbi-users mailing list, and any other lists or forums you may use, I recommend that you read "Getting Answers" by Mike Ash: L. =head3 Mailing Lists If you have questions about DBI, or DBD driver modules, you can get help from the I mailing list. This is the best way to get help. You don't have to subscribe to the list in order to post, though I'd recommend it. You can get help on subscribing and using the list by emailing I. Please note that Tim Bunce does not maintain the mailing lists or the web pages (generous volunteers do that). So please don't send mail directly to him; he just doesn't have the time to answer questions personally. The I mailing list has lots of experienced people who should be able to help you if you need it. If you do email Tim he is very likely to just forward it to the mailing list. =head3 IRC DBI IRC Channel: #dbi on irc.perl.org (L) =for html (click for instant chatroom login) =head3 Online StackOverflow has a DBI tag L with over 800 questions. The DBI home page at L and the DBI FAQ at L may be worth a visit. They include links to other resources, but I. =head3 Reporting a Bug If you think you've found a bug then please read "How to Report Bugs Effectively" by Simon Tatham: L. If you think you've found a memory leak then read L. Your problem is most likely related to the specific DBD driver module you're using. If that's the case then click on the 'Bugs' link on the L page for your driver. Only submit a bug report against the DBI itself if you're sure that your issue isn't related to the driver you're using. =head2 NOTES This is the DBI specification that corresponds to DBI version 1.642 (see L for details). The DBI is evolving at a steady pace, so it's good to check that you have the latest copy. The significant user-visible changes in each release are documented in the L module so you can read them by executing C. Some DBI changes require changes in the drivers, but the drivers can take some time to catch up. Newer versions of the DBI have added features that may not yet be supported by the drivers you use. Talk to the authors of your drivers if you need a new feature that is not yet supported. Features added after DBI 1.21 (February 2002) are marked in the text with the version number of the DBI release they first appeared in. Extensions to the DBI API often use the C namespace. See L. DBI extension modules can be found at L. And all modules related to the DBI can be found at L. =cut # The POD text continues at the end of the file. use Scalar::Util (); use Carp(); use DynaLoader (); use Exporter (); BEGIN { @ISA = qw(Exporter DynaLoader); # Make some utility functions available if asked for @EXPORT = (); # we export nothing by default @EXPORT_OK = qw(%DBI %DBI_methods hash); # also populated by export_ok_tags: %EXPORT_TAGS = ( sql_types => [ qw( SQL_GUID SQL_WLONGVARCHAR SQL_WVARCHAR SQL_WCHAR SQL_BIGINT SQL_BIT SQL_TINYINT SQL_LONGVARBINARY SQL_VARBINARY SQL_BINARY SQL_LONGVARCHAR SQL_UNKNOWN_TYPE SQL_ALL_TYPES SQL_CHAR SQL_NUMERIC SQL_DECIMAL SQL_INTEGER SQL_SMALLINT SQL_FLOAT SQL_REAL SQL_DOUBLE SQL_DATETIME SQL_DATE SQL_INTERVAL SQL_TIME SQL_TIMESTAMP SQL_VARCHAR SQL_BOOLEAN SQL_UDT SQL_UDT_LOCATOR SQL_ROW SQL_REF SQL_BLOB SQL_BLOB_LOCATOR SQL_CLOB SQL_CLOB_LOCATOR SQL_ARRAY SQL_ARRAY_LOCATOR SQL_MULTISET SQL_MULTISET_LOCATOR SQL_TYPE_DATE SQL_TYPE_TIME SQL_TYPE_TIMESTAMP SQL_TYPE_TIME_WITH_TIMEZONE SQL_TYPE_TIMESTAMP_WITH_TIMEZONE SQL_INTERVAL_YEAR SQL_INTERVAL_MONTH SQL_INTERVAL_DAY SQL_INTERVAL_HOUR SQL_INTERVAL_MINUTE SQL_INTERVAL_SECOND SQL_INTERVAL_YEAR_TO_MONTH SQL_INTERVAL_DAY_TO_HOUR SQL_INTERVAL_DAY_TO_MINUTE SQL_INTERVAL_DAY_TO_SECOND SQL_INTERVAL_HOUR_TO_MINUTE SQL_INTERVAL_HOUR_TO_SECOND SQL_INTERVAL_MINUTE_TO_SECOND ) ], sql_cursor_types => [ qw( SQL_CURSOR_FORWARD_ONLY SQL_CURSOR_KEYSET_DRIVEN SQL_CURSOR_DYNAMIC SQL_CURSOR_STATIC SQL_CURSOR_TYPE_DEFAULT ) ], # for ODBC cursor types utils => [ qw( neat neat_list $neat_maxlen dump_results looks_like_number data_string_diff data_string_desc data_diff sql_type_cast DBIstcf_DISCARD_STRING DBIstcf_STRICT ) ], profile => [ qw( dbi_profile dbi_profile_merge dbi_profile_merge_nodes dbi_time ) ], # notionally "in" DBI::Profile and normally imported from there ); $DBI::dbi_debug = 0; # mixture of bit fields and int sub-fields $DBI::neat_maxlen = 1000; $DBI::stderr = 2_000_000_000; # a very round number below 2**31 # If you get an error here like "Can't find loadable object ..." # then you haven't installed the DBI correctly. Read the README # then install it again. if ( $ENV{DBI_PUREPERL} ) { eval { bootstrap DBI $XS_VERSION } if $ENV{DBI_PUREPERL} == 1; require DBI::PurePerl if $@ or $ENV{DBI_PUREPERL} >= 2; $DBI::PurePerl ||= 0; # just to silence "only used once" warnings } else { bootstrap DBI $XS_VERSION; } $EXPORT_TAGS{preparse_flags} = [ grep { /^DBIpp_\w\w_/ } keys %{__PACKAGE__."::"} ]; Exporter::export_ok_tags(keys %EXPORT_TAGS); } # Alias some handle methods to also be DBI class methods for (qw(trace_msg set_err parse_trace_flag parse_trace_flags)) { no strict; *$_ = \&{"DBD::_::common::$_"}; } use strict; DBI->trace(split /=/, $ENV{DBI_TRACE}, 2) if $ENV{DBI_TRACE}; $DBI::connect_via ||= "connect"; # check if user wants a persistent database connection ( Apache + mod_perl ) if ($INC{'Apache/DBI.pm'} && $ENV{MOD_PERL}) { $DBI::connect_via = "Apache::DBI::connect"; DBI->trace_msg("DBI connect via $DBI::connect_via in $INC{'Apache/DBI.pm'}\n"); } %DBI::installed_drh = (); # maps driver names to installed driver handles sub installed_drivers { %DBI::installed_drh } %DBI::installed_methods = (); # XXX undocumented, may change sub installed_methods { %DBI::installed_methods } # Setup special DBI dynamic variables. See DBI::var::FETCH for details. # These are dynamically associated with the last handle used. tie $DBI::err, 'DBI::var', '*err'; # special case: referenced via IHA list tie $DBI::state, 'DBI::var', '"state'; # special case: referenced via IHA list tie $DBI::lasth, 'DBI::var', '!lasth'; # special case: return boolean tie $DBI::errstr, 'DBI::var', '&errstr'; # call &errstr in last used pkg tie $DBI::rows, 'DBI::var', '&rows'; # call &rows in last used pkg sub DBI::var::TIESCALAR{ my $var = $_[1]; bless \$var, 'DBI::var'; } sub DBI::var::STORE { Carp::croak("Can't modify \$DBI::${$_[0]} special variable") } # --- Driver Specific Prefix Registry --- my $dbd_prefix_registry = { ad_ => { class => 'DBD::AnyData', }, ad2_ => { class => 'DBD::AnyData2', }, ado_ => { class => 'DBD::ADO', }, amzn_ => { class => 'DBD::Amazon', }, best_ => { class => 'DBD::BestWins', }, csv_ => { class => 'DBD::CSV', }, cubrid_ => { class => 'DBD::cubrid', }, db2_ => { class => 'DBD::DB2', }, dbi_ => { class => 'DBI', }, dbm_ => { class => 'DBD::DBM', }, df_ => { class => 'DBD::DF', }, examplep_ => { class => 'DBD::ExampleP', }, f_ => { class => 'DBD::File', }, file_ => { class => 'DBD::TextFile', }, go_ => { class => 'DBD::Gofer', }, ib_ => { class => 'DBD::InterBase', }, ing_ => { class => 'DBD::Ingres', }, ix_ => { class => 'DBD::Informix', }, jdbc_ => { class => 'DBD::JDBC', }, mariadb_ => { class => 'DBD::MariaDB', }, mem_ => { class => 'DBD::Mem', }, mo_ => { class => 'DBD::MO', }, monetdb_ => { class => 'DBD::monetdb', }, msql_ => { class => 'DBD::mSQL', }, mvsftp_ => { class => 'DBD::MVS_FTPSQL', }, mysql_ => { class => 'DBD::mysql', }, multi_ => { class => 'DBD::Multi' }, mx_ => { class => 'DBD::Multiplex', }, neo_ => { class => 'DBD::Neo4p', }, nullp_ => { class => 'DBD::NullP', }, odbc_ => { class => 'DBD::ODBC', }, ora_ => { class => 'DBD::Oracle', }, pg_ => { class => 'DBD::Pg', }, pgpp_ => { class => 'DBD::PgPP', }, plb_ => { class => 'DBD::Plibdata', }, po_ => { class => 'DBD::PO', }, proxy_ => { class => 'DBD::Proxy', }, ram_ => { class => 'DBD::RAM', }, rdb_ => { class => 'DBD::RDB', }, sapdb_ => { class => 'DBD::SAP_DB', }, snmp_ => { class => 'DBD::SNMP', }, solid_ => { class => 'DBD::Solid', }, spatialite_ => { class => 'DBD::Spatialite', }, sponge_ => { class => 'DBD::Sponge', }, sql_ => { class => 'DBI::DBD::SqlEngine', }, sqlite_ => { class => 'DBD::SQLite', }, syb_ => { class => 'DBD::Sybase', }, sys_ => { class => 'DBD::Sys', }, tdat_ => { class => 'DBD::Teradata', }, tmpl_ => { class => 'DBD::Template', }, tmplss_ => { class => 'DBD::TemplateSS', }, tree_ => { class => 'DBD::TreeData', }, tuber_ => { class => 'DBD::Tuber', }, uni_ => { class => 'DBD::Unify', }, vt_ => { class => 'DBD::Vt', }, wmi_ => { class => 'DBD::WMI', }, x_ => { }, # for private use xbase_ => { class => 'DBD::XBase', }, xmlsimple_ => { class => 'DBD::XMLSimple', }, xl_ => { class => 'DBD::Excel', }, yaswi_ => { class => 'DBD::Yaswi', }, }; my %dbd_class_registry = map { $dbd_prefix_registry->{$_}->{class} => { prefix => $_ } } grep { exists $dbd_prefix_registry->{$_}->{class} } keys %{$dbd_prefix_registry}; sub dump_dbd_registry { require Data::Dumper; local $Data::Dumper::Sortkeys=1; local $Data::Dumper::Indent=1; print Data::Dumper->Dump([$dbd_prefix_registry], [qw($dbd_prefix_registry)]); } # --- Dynamically create the DBI Standard Interface my $keeperr = { O=>0x0004 }; %DBI::DBI_methods = ( # Define the DBI interface methods per class: common => { # Interface methods common to all DBI handle classes 'DESTROY' => { O=>0x004|0x10000 }, 'CLEAR' => $keeperr, 'EXISTS' => $keeperr, 'FETCH' => { O=>0x0404 }, 'FETCH_many' => { O=>0x0404 }, 'FIRSTKEY' => $keeperr, 'NEXTKEY' => $keeperr, 'STORE' => { O=>0x0418 | 0x4 }, 'DELETE' => { O=>0x0404 }, can => { O=>0x0100 }, # special case, see dispatch debug => { U =>[1,2,'[$debug_level]'], O=>0x0004 }, # old name for trace dump_handle => { U =>[1,3,'[$message [, $level]]'], O=>0x0004 }, err => $keeperr, errstr => $keeperr, state => $keeperr, func => { O=>0x0006 }, parse_trace_flag => { U =>[2,2,'$name'], O=>0x0404, T=>8 }, parse_trace_flags => { U =>[2,2,'$flags'], O=>0x0404, T=>8 }, private_data => { U =>[1,1], O=>0x0004 }, set_err => { U =>[3,6,'$err, $errmsg [, $state, $method, $rv]'], O=>0x0010 }, trace => { U =>[1,3,'[$trace_level, [$filename]]'], O=>0x0004 }, trace_msg => { U =>[2,3,'$message_text [, $min_level ]' ], O=>0x0004, T=>8 }, swap_inner_handle => { U =>[2,3,'$h [, $allow_reparent ]'] }, private_attribute_info => { }, visit_child_handles => { U => [2,3,'$coderef [, $info ]'], O=>0x0404, T=>4 }, }, dr => { # Database Driver Interface 'connect' => { U =>[1,5,'[$db [,$user [,$passwd [,\%attr]]]]'], H=>3, O=>0x8000, T=>0x200 }, 'connect_cached'=>{U=>[1,5,'[$db [,$user [,$passwd [,\%attr]]]]'], H=>3, O=>0x8000, T=>0x200 }, 'disconnect_all'=>{ U =>[1,1], O=>0x0800, T=>0x200 }, data_sources => { U =>[1,2,'[\%attr]' ], O=>0x0800, T=>0x200 }, default_user => { U =>[3,4,'$user, $pass [, \%attr]' ], T=>0x200 }, dbixs_revision => $keeperr, }, db => { # Database Session Class Interface data_sources => { U =>[1,2,'[\%attr]' ], O=>0x0200 }, take_imp_data => { U =>[1,1], O=>0x10000 }, clone => { U =>[1,2,'[\%attr]'], T=>0x200 }, connected => { U =>[1,0], O => 0x0004, T=>0x200, H=>3 }, begin_work => { U =>[1,2,'[ \%attr ]'], O=>0x0400, T=>0x1000 }, commit => { U =>[1,1], O=>0x0480|0x0800, T=>0x1000 }, rollback => { U =>[1,1], O=>0x0480|0x0800, T=>0x1000 }, 'do' => { U =>[2,0,'$statement [, \%attr [, @bind_params ] ]'], O=>0x3200 }, last_insert_id => { U =>[1,6,'[$catalog [,$schema [,$table_name [,$field_name [, \%attr ]]]]]'], O=>0x2800 }, preparse => { }, # XXX prepare => { U =>[2,3,'$statement [, \%attr]'], O=>0xA200 }, prepare_cached => { U =>[2,4,'$statement [, \%attr [, $if_active ] ]'], O=>0xA200 }, selectrow_array => { U =>[2,0,'$statement [, \%attr [, @bind_params ] ]'], O=>0x2000 }, selectrow_arrayref=>{U =>[2,0,'$statement [, \%attr [, @bind_params ] ]'], O=>0x2000 }, selectrow_hashref=>{ U =>[2,0,'$statement [, \%attr [, @bind_params ] ]'], O=>0x2000 }, selectall_arrayref=>{U =>[2,0,'$statement [, \%attr [, @bind_params ] ]'], O=>0x2000 }, selectall_array =>{U =>[2,0,'$statement [, \%attr [, @bind_params ] ]'], O=>0x2000 }, selectall_hashref=>{ U =>[3,0,'$statement, $keyfield [, \%attr [, @bind_params ] ]'], O=>0x2000 }, selectcol_arrayref=>{U =>[2,0,'$statement [, \%attr [, @bind_params ] ]'], O=>0x2000 }, ping => { U =>[1,1], O=>0x0404 }, disconnect => { U =>[1,1], O=>0x0400|0x0800|0x10000, T=>0x200 }, quote => { U =>[2,3, '$string [, $data_type ]' ], O=>0x0430, T=>2 }, quote_identifier=> { U =>[2,6, '$name [, ...] [, \%attr ]' ], O=>0x0430, T=>2 }, rows => $keeperr, tables => { U =>[1,6,'$catalog, $schema, $table, $type [, \%attr ]' ], O=>0x2200 }, table_info => { U =>[1,6,'$catalog, $schema, $table, $type [, \%attr ]' ], O=>0x2200|0x8800 }, column_info => { U =>[5,6,'$catalog, $schema, $table, $column [, \%attr ]'],O=>0x2200|0x8800 }, primary_key_info=> { U =>[4,5,'$catalog, $schema, $table [, \%attr ]' ], O=>0x2200|0x8800 }, primary_key => { U =>[4,5,'$catalog, $schema, $table [, \%attr ]' ], O=>0x2200 }, foreign_key_info=> { U =>[7,8,'$pk_catalog, $pk_schema, $pk_table, $fk_catalog, $fk_schema, $fk_table [, \%attr ]' ], O=>0x2200|0x8800 }, statistics_info => { U =>[6,7,'$catalog, $schema, $table, $unique_only, $quick, [, \%attr ]' ], O=>0x2200|0x8800 }, type_info_all => { U =>[1,1], O=>0x2200|0x0800 }, type_info => { U =>[1,2,'$data_type'], O=>0x2200 }, get_info => { U =>[2,2,'$info_type'], O=>0x2200|0x0800 }, }, st => { # Statement Class Interface bind_col => { U =>[3,4,'$column, \\$var [, \%attr]'] }, bind_columns => { U =>[2,0,'\\$var1 [, \\$var2, ...]'] }, bind_param => { U =>[3,4,'$parameter, $var [, \%attr]'] }, bind_param_inout=> { U =>[4,5,'$parameter, \\$var, $maxlen, [, \%attr]'] }, execute => { U =>[1,0,'[@args]'], O=>0x1040 }, last_insert_id => { U =>[1,6,'[$catalog [,$schema [,$table_name [,$field_name [, \%attr ]]]]]'], O=>0x2800 }, bind_param_array => { U =>[3,4,'$parameter, $var [, \%attr]'] }, bind_param_inout_array => { U =>[4,5,'$parameter, \\@var, $maxlen, [, \%attr]'] }, execute_array => { U =>[2,0,'\\%attribs [, @args]'], O=>0x1040|0x4000 }, execute_for_fetch => { U =>[2,3,'$fetch_sub [, $tuple_status]'], O=>0x1040|0x4000 }, fetch => undef, # alias for fetchrow_arrayref fetchrow_arrayref => undef, fetchrow_hashref => undef, fetchrow_array => undef, fetchrow => undef, # old alias for fetchrow_array fetchall_arrayref => { U =>[1,3, '[ $slice [, $max_rows]]'] }, fetchall_hashref => { U =>[2,2,'$key_field'] }, blob_read => { U =>[4,5,'$field, $offset, $len [, \\$buf [, $bufoffset]]'] }, blob_copy_to_file => { U =>[3,3,'$field, $filename_or_handleref'] }, dump_results => { U =>[1,5,'$maxfieldlen, $linesep, $fieldsep, $filehandle'] }, more_results => { U =>[1,1] }, finish => { U =>[1,1] }, cancel => { U =>[1,1], O=>0x0800 }, rows => $keeperr, _get_fbav => undef, _set_fbav => { T=>6 }, }, ); while ( my ($class, $meths) = each %DBI::DBI_methods ) { my $ima_trace = 0+($ENV{DBI_IMA_TRACE}||0); while ( my ($method, $info) = each %$meths ) { my $fullmeth = "DBI::${class}::$method"; if (($DBI::dbi_debug & 0xF) == 15) { # quick hack to list DBI methods # and optionally filter by IMA flags my $O = $info->{O}||0; printf "0x%04x %-20s\n", $O, $fullmeth unless $ima_trace && !($O & $ima_trace); } DBI->_install_method($fullmeth, 'DBI.pm', $info); } } { package DBI::common; @DBI::dr::ISA = ('DBI::common'); @DBI::db::ISA = ('DBI::common'); @DBI::st::ISA = ('DBI::common'); } # End of init code END { return unless defined &DBI::trace_msg; # return unless bootstrap'd ok local ($!,$?); DBI->trace_msg(sprintf(" -- DBI::END (\$\@: %s, \$!: %s)\n", $@||'', $!||''), 2); # Let drivers know why we are calling disconnect_all: $DBI::PERL_ENDING = $DBI::PERL_ENDING = 1; # avoid typo warning DBI->disconnect_all() if %DBI::installed_drh; } sub CLONE { _clone_dbis() unless $DBI::PurePerl; # clone the DBIS structure DBI->trace_msg("CLONE DBI for new thread\n"); while ( my ($driver, $drh) = each %DBI::installed_drh) { no strict 'refs'; next if defined &{"DBD::${driver}::CLONE"}; warn("$driver has no driver CLONE() function so is unsafe threaded\n"); } %DBI::installed_drh = (); # clear loaded drivers so they have a chance to reinitialize } sub parse_dsn { my ($class, $dsn) = @_; $dsn =~ s/^(dbi):(\w*?)(?:\((.*?)\))?://i or return; my ($scheme, $driver, $attr, $attr_hash) = (lc($1), $2, $3); $driver ||= $ENV{DBI_DRIVER} || ''; $attr_hash = { split /\s*=>?\s*|\s*,\s*/, $attr, -1 } if $attr; return ($scheme, $driver, $attr, $attr_hash, $dsn); } sub visit_handles { my ($class, $code, $outer_info) = @_; $outer_info = {} if not defined $outer_info; my %drh = DBI->installed_drivers; for my $h (values %drh) { my $child_info = $code->($h, $outer_info) or next; $h->visit_child_handles($code, $child_info); } return $outer_info; } # --- The DBI->connect Front Door methods sub connect_cached { # For library code using connect_cached() with mod_perl # we redirect those calls to Apache::DBI::connect() as well my ($class, $dsn, $user, $pass, $attr) = @_; my $dbi_connect_method = ($DBI::connect_via eq "Apache::DBI::connect") ? 'Apache::DBI::connect' : 'connect_cached'; $attr = { $attr ? %$attr : (), # clone, don't modify callers data dbi_connect_method => $dbi_connect_method, }; return $class->connect($dsn, $user, $pass, $attr); } sub connect { my $class = shift; my ($dsn, $user, $pass, $attr, $old_driver) = my @orig_args = @_; my $driver; if ($attr and !ref($attr)) { # switch $old_driver<->$attr if called in old style Carp::carp("DBI->connect using 'old-style' syntax is deprecated and will be an error in future versions"); ($old_driver, $attr) = ($attr, $old_driver); } my $connect_meth = $attr->{dbi_connect_method}; $connect_meth ||= $DBI::connect_via; # fallback to default $dsn ||= $ENV{DBI_DSN} || $ENV{DBI_DBNAME} || '' unless $old_driver; if ($DBI::dbi_debug) { local $^W = 0; pop @_ if $connect_meth ne 'connect'; my @args = @_; $args[2] = '****'; # hide password DBI->trace_msg(" -> $class->$connect_meth(".join(", ",@args).")\n"); } Carp::croak('Usage: $class->connect([$dsn [,$user [,$passwd [,\%attr]]]])') if (ref $old_driver or ($attr and not ref $attr) or (ref $pass and not defined Scalar::Util::blessed($pass))); # extract dbi:driver prefix from $dsn into $1 my $orig_dsn = $dsn; $dsn =~ s/^dbi:(\w*?)(?:\((.*?)\))?://i or '' =~ /()/; # ensure $1 etc are empty if match fails my $driver_attrib_spec = $2 || ''; # Set $driver. Old style driver, if specified, overrides new dsn style. $driver = $old_driver || $1 || $ENV{DBI_DRIVER} or Carp::croak("Can't connect to data source '$orig_dsn' " ."because I can't work out what driver to use " ."(it doesn't seem to contain a 'dbi:driver:' prefix " ."and the DBI_DRIVER env var is not set)"); my $proxy; if ($ENV{DBI_AUTOPROXY} && $driver ne 'Proxy' && $driver ne 'Sponge' && $driver ne 'Switch') { my $dbi_autoproxy = $ENV{DBI_AUTOPROXY}; $proxy = 'Proxy'; if ($dbi_autoproxy =~ s/^dbi:(\w*?)(?:\((.*?)\))?://i) { $proxy = $1; $driver_attrib_spec = join ",", ($driver_attrib_spec) ? $driver_attrib_spec : (), ($2 ) ? $2 : (); } $dsn = "$dbi_autoproxy;dsn=dbi:$driver:$dsn"; $driver = $proxy; DBI->trace_msg(" DBI_AUTOPROXY: dbi:$driver($driver_attrib_spec):$dsn\n"); } # avoid recursion if proxy calls DBI->connect itself local $ENV{DBI_AUTOPROXY} if $ENV{DBI_AUTOPROXY}; my %attributes; # take a copy we can delete from if ($old_driver) { %attributes = %$attr if $attr; } else { # new-style connect so new default semantics %attributes = ( PrintError => 1, AutoCommit => 1, ref $attr ? %$attr : (), # attributes in DSN take precedence over \%attr connect parameter $driver_attrib_spec ? (split /\s*=>?\s*|\s*,\s*/, $driver_attrib_spec, -1) : (), ); } $attr = \%attributes; # now set $attr to refer to our local copy my $drh = $DBI::installed_drh{$driver} || $class->install_driver($driver) or die "panic: $class->install_driver($driver) failed"; # attributes in DSN take precedence over \%attr connect parameter $user = $attr->{Username} if defined $attr->{Username}; $pass = $attr->{Password} if defined $attr->{Password}; delete $attr->{Password}; # always delete Password as closure stores it securely if ( !(defined $user && defined $pass) ) { ($user, $pass) = $drh->default_user($user, $pass, $attr); } $attr->{Username} = $user; # force the Username to be the actual one used my $connect_closure = sub { my ($old_dbh, $override_attr) = @_; #use Data::Dumper; #warn "connect_closure: ".Data::Dumper::Dumper([$attr,\%attributes, $override_attr]); my $dbh; unless ($dbh = $drh->$connect_meth($dsn, $user, $pass, $attr)) { $user = '' if !defined $user; $dsn = '' if !defined $dsn; # $drh->errstr isn't safe here because $dbh->DESTROY may not have # been called yet and so the dbh errstr would not have been copied # up to the drh errstr. Certainly true for connect_cached! my $errstr = $DBI::errstr; # Getting '(no error string)' here is a symptom of a ref loop $errstr = '(no error string)' if !defined $errstr; my $msg = "$class connect('$dsn','$user',...) failed: $errstr"; DBI->trace_msg(" $msg\n"); # XXX HandleWarn unless ($attr->{HandleError} && $attr->{HandleError}->($msg, $drh, $dbh)) { Carp::croak($msg) if $attr->{RaiseError}; Carp::carp ($msg) if $attr->{PrintError}; } $! = 0; # for the daft people who do DBI->connect(...) || die "$!"; return $dbh; # normally undef, but HandleError could change it } # merge any attribute overrides but don't change $attr itself (for closure) my $apply = { ($override_attr) ? (%$attr, %$override_attr ) : %$attr }; # handle basic RootClass subclassing: my $rebless_class = $apply->{RootClass} || ($class ne 'DBI' ? $class : ''); if ($rebless_class) { no strict 'refs'; if ($apply->{RootClass}) { # explicit attribute (ie not static method call class) delete $apply->{RootClass}; DBI::_load_class($rebless_class, 0); } unless (@{"$rebless_class\::db::ISA"} && @{"$rebless_class\::st::ISA"}) { Carp::carp("DBI subclasses '$rebless_class\::db' and ::st are not setup, RootClass ignored"); $rebless_class = undef; $class = 'DBI'; } else { $dbh->{RootClass} = $rebless_class; # $dbh->STORE called via plain DBI::db DBI::_set_isa([$rebless_class], 'DBI'); # sets up both '::db' and '::st' DBI::_rebless($dbh, $rebless_class); # appends '::db' } } if (%$apply) { if ($apply->{DbTypeSubclass}) { my $DbTypeSubclass = delete $apply->{DbTypeSubclass}; DBI::_rebless_dbtype_subclass($dbh, $rebless_class||$class, $DbTypeSubclass); } my $a; foreach $a (qw(Profile RaiseError PrintError AutoCommit)) { # do these first next unless exists $apply->{$a}; $dbh->{$a} = delete $apply->{$a}; } while ( my ($a, $v) = each %$apply) { eval { $dbh->{$a} = $v }; # assign in void context to avoid re-FETCH warn $@ if $@; } } # confirm to driver (ie if subclassed) that we've connected successfully # and finished the attribute setup. pass in the original arguments $dbh->connected(@orig_args); #if ref $dbh ne 'DBI::db' or $proxy; DBI->trace_msg(" <- connect= $dbh\n") if $DBI::dbi_debug & 0xF; return $dbh; }; my $dbh = &$connect_closure(undef, undef); $dbh->{dbi_connect_closure} = $connect_closure if $dbh; return $dbh; } sub disconnect_all { keys %DBI::installed_drh; # reset iterator while ( my ($name, $drh) = each %DBI::installed_drh ) { $drh->disconnect_all() if ref $drh; } } sub disconnect { # a regular beginners bug Carp::croak("DBI->disconnect is not a DBI method (read the DBI manual)"); } sub install_driver { # croaks on failure my $class = shift; my($driver, $attr) = @_; my $drh; $driver ||= $ENV{DBI_DRIVER} || ''; # allow driver to be specified as a 'dbi:driver:' string $driver = $1 if $driver =~ s/^DBI:(.*?)://i; Carp::croak("usage: $class->install_driver(\$driver [, \%attr])") unless ($driver and @_<=3); # already installed return $drh if $drh = $DBI::installed_drh{$driver}; $class->trace_msg(" -> $class->install_driver($driver" .") for $^O perl=$] pid=$$ ruid=$< euid=$>\n") if $DBI::dbi_debug & 0xF; # --- load the code my $driver_class = "DBD::$driver"; eval qq{package # hide from PAUSE DBI::_firesafe; # just in case require $driver_class; # load the driver }; if ($@) { my $err = $@; my $advice = ""; if ($err =~ /Can't find loadable object/) { $advice = "Perhaps DBD::$driver was statically linked into a new perl binary." ."\nIn which case you need to use that new perl binary." ."\nOr perhaps only the .pm file was installed but not the shared object file." } elsif ($err =~ /Can't locate.*?DBD\/$driver\.pm in \@INC/) { my @drv = $class->available_drivers(1); $advice = "Perhaps the DBD::$driver perl module hasn't been fully installed,\n" ."or perhaps the capitalisation of '$driver' isn't right.\n" ."Available drivers: ".join(", ", @drv)."."; } elsif ($err =~ /Can't load .*? for module DBD::/) { $advice = "Perhaps a required shared library or dll isn't installed where expected"; } elsif ($err =~ /Can't locate .*? in \@INC/) { $advice = "Perhaps a module that DBD::$driver requires hasn't been fully installed"; } Carp::croak("install_driver($driver) failed: $err$advice\n"); } if ($DBI::dbi_debug & 0xF) { no strict 'refs'; (my $driver_file = $driver_class) =~ s/::/\//g; my $dbd_ver = ${"$driver_class\::VERSION"} || "undef"; $class->trace_msg(" install_driver: $driver_class version $dbd_ver" ." loaded from $INC{qq($driver_file.pm)}\n"); } # --- do some behind-the-scenes checks and setups on the driver $class->setup_driver($driver_class); # --- run the driver function $drh = eval { $driver_class->driver($attr || {}) }; unless ($drh && ref $drh && !$@) { my $advice = ""; $@ ||= "$driver_class->driver didn't return a handle"; # catch people on case in-sensitive systems using the wrong case $advice = "\nPerhaps the capitalisation of DBD '$driver' isn't right." if $@ =~ /locate object method/; Carp::croak("$driver_class initialisation failed: $@$advice"); } $DBI::installed_drh{$driver} = $drh; $class->trace_msg(" <- install_driver= $drh\n") if $DBI::dbi_debug & 0xF; $drh; } *driver = \&install_driver; # currently an alias, may change sub setup_driver { my ($class, $driver_class) = @_; my $h_type; foreach $h_type (qw(dr db st)){ my $h_class = $driver_class."::$h_type"; no strict 'refs'; push @{"${h_class}::ISA"}, "DBD::_::$h_type" unless UNIVERSAL::isa($h_class, "DBD::_::$h_type"); # The _mem class stuff is (IIRC) a crufty hack for global destruction # timing issues in early versions of perl5 and possibly no longer needed. my $mem_class = "DBD::_mem::$h_type"; push @{"${h_class}_mem::ISA"}, $mem_class unless UNIVERSAL::isa("${h_class}_mem", $mem_class) or $DBI::PurePerl; } } sub _rebless { my $dbh = shift; my ($outer, $inner) = DBI::_handles($dbh); my $class = shift(@_).'::db'; bless $inner => $class; bless $outer => $class; # outer last for return } sub _set_isa { my ($classes, $topclass) = @_; my $trace = DBI->trace_msg(" _set_isa([@$classes])\n"); foreach my $suffix ('::db','::st') { my $previous = $topclass || 'DBI'; # trees are rooted here foreach my $class (@$classes) { my $base_class = $previous.$suffix; my $sub_class = $class.$suffix; my $sub_class_isa = "${sub_class}::ISA"; no strict 'refs'; if (@$sub_class_isa) { DBI->trace_msg(" $sub_class_isa skipped (already set to @$sub_class_isa)\n") if $trace; } else { @$sub_class_isa = ($base_class) unless @$sub_class_isa; DBI->trace_msg(" $sub_class_isa = $base_class\n") if $trace; } $previous = $class; } } } sub _rebless_dbtype_subclass { my ($dbh, $rootclass, $DbTypeSubclass) = @_; # determine the db type names for class hierarchy my @hierarchy = DBI::_dbtype_names($dbh, $DbTypeSubclass); # add the rootclass prefix to each ('DBI::' or 'MyDBI::' etc) $_ = $rootclass.'::'.$_ foreach (@hierarchy); # load the modules from the 'top down' DBI::_load_class($_, 1) foreach (reverse @hierarchy); # setup class hierarchy if needed, does both '::db' and '::st' DBI::_set_isa(\@hierarchy, $rootclass); # finally bless the handle into the subclass DBI::_rebless($dbh, $hierarchy[0]); } sub _dbtype_names { # list dbtypes for hierarchy, ie Informix=>ADO=>ODBC my ($dbh, $DbTypeSubclass) = @_; if ($DbTypeSubclass && $DbTypeSubclass ne '1' && ref $DbTypeSubclass ne 'CODE') { # treat $DbTypeSubclass as a comma separated list of names my @dbtypes = split /\s*,\s*/, $DbTypeSubclass; $dbh->trace_msg(" DbTypeSubclass($DbTypeSubclass)=@dbtypes (explicit)\n"); return @dbtypes; } # XXX will call $dbh->get_info(17) (=SQL_DBMS_NAME) in future? my $driver = $dbh->{Driver}->{Name}; if ( $driver eq 'Proxy' ) { # XXX Looking into the internals of DBD::Proxy is questionable! ($driver) = $dbh->{proxy_client}->{application} =~ /^DBI:(.+?):/i or die "Can't determine driver name from proxy"; } my @dbtypes = (ucfirst($driver)); if ($driver eq 'ODBC' || $driver eq 'ADO') { # XXX will move these out and make extensible later: my $_dbtype_name_regexp = 'Oracle'; # eg 'Oracle|Foo|Bar' my %_dbtype_name_map = ( 'Microsoft SQL Server' => 'MSSQL', 'SQL Server' => 'Sybase', 'Adaptive Server Anywhere' => 'ASAny', 'ADABAS D' => 'AdabasD', ); my $name; $name = $dbh->func(17, 'GetInfo') # SQL_DBMS_NAME if $driver eq 'ODBC'; $name = $dbh->{ado_conn}->Properties->Item('DBMS Name')->Value if $driver eq 'ADO'; die "Can't determine driver name! ($DBI::errstr)\n" unless $name; my $dbtype; if ($_dbtype_name_map{$name}) { $dbtype = $_dbtype_name_map{$name}; } else { if ($name =~ /($_dbtype_name_regexp)/) { $dbtype = lc($1); } else { # generic mangling for other names: $dbtype = lc($name); } $dbtype =~ s/\b(\w)/\U$1/g; $dbtype =~ s/\W+/_/g; } # add ODBC 'behind' ADO push @dbtypes, 'ODBC' if $driver eq 'ADO'; # add discovered dbtype in front of ADO/ODBC unshift @dbtypes, $dbtype; } @dbtypes = &$DbTypeSubclass($dbh, \@dbtypes) if (ref $DbTypeSubclass eq 'CODE'); $dbh->trace_msg(" DbTypeSubclass($DbTypeSubclass)=@dbtypes\n"); return @dbtypes; } sub _load_class { my ($load_class, $missing_ok) = @_; DBI->trace_msg(" _load_class($load_class, $missing_ok)\n", 2); no strict 'refs'; return 1 if @{"$load_class\::ISA"}; # already loaded/exists (my $module = $load_class) =~ s!::!/!g; DBI->trace_msg(" _load_class require $module\n", 2); eval { require "$module.pm"; }; return 1 unless $@; return 0 if $missing_ok && $@ =~ /^Can't locate \Q$module.pm\E/; die $@; } sub init_rootclass { # deprecated return 1; } *internal = \&DBD::Switch::dr::driver; sub driver_prefix { my ($class, $driver) = @_; return $dbd_class_registry{$driver}->{prefix} if exists $dbd_class_registry{$driver}; return; } sub available_drivers { my($quiet) = @_; my(@drivers, $d, $f); local(*DBI::DIR, $@); my(%seen_dir, %seen_dbd); my $haveFileSpec = eval { require File::Spec }; foreach $d (@INC){ chomp($d); # Perl 5 beta 3 bug in #!./perl -Ilib from Test::Harness my $dbd_dir = ($haveFileSpec ? File::Spec->catdir($d, 'DBD') : "$d/DBD"); next unless -d $dbd_dir; next if $seen_dir{$d}; $seen_dir{$d} = 1; # XXX we have a problem here with case insensitive file systems # XXX since we can't tell what case must be used when loading. opendir(DBI::DIR, $dbd_dir) || Carp::carp "opendir $dbd_dir: $!\n"; foreach $f (readdir(DBI::DIR)){ next unless $f =~ s/\.pm$//; next if $f eq 'NullP'; if ($seen_dbd{$f}){ Carp::carp "DBD::$f in $d is hidden by DBD::$f in $seen_dbd{$f}\n" unless $quiet; } else { push(@drivers, $f); } $seen_dbd{$f} = $d; } closedir(DBI::DIR); } # "return sort @drivers" will not DWIM in scalar context. return wantarray ? sort @drivers : @drivers; } sub installed_versions { my ($class, $quiet) = @_; my %error; my %version; for my $driver ($class->available_drivers($quiet)) { next if $DBI::PurePerl && grep { -d "$_/auto/DBD/$driver" } @INC; my $drh = eval { local $SIG{__WARN__} = sub {}; $class->install_driver($driver); }; ($error{"DBD::$driver"}=$@),next if $@; no strict 'refs'; my $vers = ${"DBD::$driver" . '::VERSION'}; $version{"DBD::$driver"} = $vers || '?'; } if (wantarray) { return map { m/^DBD::(\w+)/ ? ($1) : () } sort keys %version; } $version{"DBI"} = $DBI::VERSION; $version{"DBI::PurePerl"} = $DBI::PurePerl::VERSION if $DBI::PurePerl; if (!defined wantarray) { # void context require Config; # add more detail $version{OS} = "$^O\t($Config::Config{osvers})"; $version{Perl} = "$]\t($Config::Config{archname})"; $version{$_} = (($error{$_} =~ s/ \(\@INC.*//s),$error{$_}) for keys %error; printf " %-16s: %s\n",$_,$version{$_} for reverse sort keys %version; } return \%version; } sub data_sources { my ($class, $driver, @other) = @_; my $drh = $class->install_driver($driver); my @ds = $drh->data_sources(@other); return @ds; } sub neat_list { my ($listref, $maxlen, $sep) = @_; $maxlen = 0 unless defined $maxlen; # 0 == use internal default $sep = ", " unless defined $sep; join($sep, map { neat($_,$maxlen) } @$listref); } sub dump_results { # also aliased as a method in DBD::_::st my ($sth, $maxlen, $lsep, $fsep, $fh) = @_; return 0 unless $sth; $maxlen ||= 35; $lsep ||= "\n"; $fh ||= \*STDOUT; my $rows = 0; my $ref; while($ref = $sth->fetch) { print $fh $lsep if $rows++ and $lsep; my $str = neat_list($ref,$maxlen,$fsep); print $fh $str; # done on two lines to avoid 5.003 errors } print $fh "\n$rows rows".($DBI::err ? " ($DBI::err: $DBI::errstr)" : "")."\n"; $rows; } sub data_diff { my ($a, $b, $logical) = @_; my $diff = data_string_diff($a, $b); return "" if $logical and !$diff; my $a_desc = data_string_desc($a); my $b_desc = data_string_desc($b); return "" if !$diff and $a_desc eq $b_desc; $diff ||= "Strings contain the same sequence of characters" if length($a); $diff .= "\n" if $diff; return "a: $a_desc\nb: $b_desc\n$diff"; } sub data_string_diff { # Compares 'logical' characters, not bytes, so a latin1 string and an # an equivalent Unicode string will compare as equal even though their # byte encodings are different. my ($a, $b) = @_; unless (defined $a and defined $b) { # one undef return "" if !defined $a and !defined $b; return "String a is undef, string b has ".length($b)." characters" if !defined $a; return "String b is undef, string a has ".length($a)." characters" if !defined $b; } require utf8; # hack to cater for perl 5.6 *utf8::is_utf8 = sub { (DBI::neat(shift)=~/^"/) } unless defined &utf8::is_utf8; my @a_chars = (utf8::is_utf8($a)) ? unpack("U*", $a) : unpack("C*", $a); my @b_chars = (utf8::is_utf8($b)) ? unpack("U*", $b) : unpack("C*", $b); my $i = 0; while (@a_chars && @b_chars) { ++$i, shift(@a_chars), shift(@b_chars), next if $a_chars[0] == $b_chars[0];# compare ordinal values my @desc = map { $_ > 255 ? # if wide character... sprintf("\\x{%04X}", $_) : # \x{...} chr($_) =~ /[[:cntrl:]]/ ? # else if control character ... sprintf("\\x%02X", $_) : # \x.. chr($_) # else as themselves } ($a_chars[0], $b_chars[0]); # highlight probable double-encoding? foreach my $c ( @desc ) { next unless $c =~ m/\\x\{08(..)}/; $c .= "='" .chr(hex($1)) ."'" } return sprintf "Strings differ at index $i: a[$i]=$desc[0], b[$i]=$desc[1]"; } return "String a truncated after $i characters" if @b_chars; return "String b truncated after $i characters" if @a_chars; return ""; } sub data_string_desc { # describe a data string my ($a) = @_; require bytes; require utf8; # hacks to cater for perl 5.6 *utf8::is_utf8 = sub { (DBI::neat(shift)=~/^"/) } unless defined &utf8::is_utf8; *utf8::valid = sub { 1 } unless defined &utf8::valid; # Give sufficient info to help diagnose at least these kinds of situations: # - valid UTF8 byte sequence but UTF8 flag not set # (might be ascii so also need to check for hibit to make it worthwhile) # - UTF8 flag set but invalid UTF8 byte sequence # could do better here, but this'll do for now my $utf8 = sprintf "UTF8 %s%s", utf8::is_utf8($a) ? "on" : "off", utf8::valid($a||'') ? "" : " but INVALID encoding"; return "$utf8, undef" unless defined $a; my $is_ascii = $a =~ m/^[\000-\177]*$/; return sprintf "%s, %s, %d characters %d bytes", $utf8, $is_ascii ? "ASCII" : "non-ASCII", length($a), bytes::length($a); } sub connect_test_perf { my($class, $dsn,$dbuser,$dbpass, $attr) = @_; Carp::croak("connect_test_perf needs hash ref as fourth arg") unless ref $attr; # these are non standard attributes just for this special method my $loops ||= $attr->{dbi_loops} || 5; my $par ||= $attr->{dbi_par} || 1; # parallelism my $verb ||= $attr->{dbi_verb} || 1; my $meth ||= $attr->{dbi_meth} || 'connect'; print "$dsn: testing $loops sets of $par connections:\n"; require "FileHandle.pm"; # don't let toke.c create empty FileHandle package local $| = 1; my $drh = $class->install_driver($dsn) or Carp::croak("Can't install $dsn driver\n"); # test the connection and warm up caches etc $drh->connect($dsn,$dbuser,$dbpass) or Carp::croak("connect failed: $DBI::errstr"); my $t1 = dbi_time(); my $loop; for $loop (1..$loops) { my @cons; print "Connecting... " if $verb; for (1..$par) { print "$_ "; push @cons, ($drh->connect($dsn,$dbuser,$dbpass) or Carp::croak("connect failed: $DBI::errstr\n")); } print "\nDisconnecting...\n" if $verb; for (@cons) { $_->disconnect or warn "disconnect failed: $DBI::errstr" } } my $t2 = dbi_time(); my $td = $t2 - $t1; printf "$meth %d and disconnect them, %d times: %.4fs / %d = %.4fs\n", $par, $loops, $td, $loops*$par, $td/($loops*$par); return $td; } # Help people doing DBI->errstr, might even document it one day # XXX probably best moved to cheaper XS code if this gets documented sub err { $DBI::err } sub errstr { $DBI::errstr } # --- Private Internal Function for Creating New DBI Handles # XXX move to PurePerl? *DBI::dr::TIEHASH = \&DBI::st::TIEHASH; *DBI::db::TIEHASH = \&DBI::st::TIEHASH; # These three special constructors are called by the drivers # The way they are called is likely to change. our $shared_profile; sub _new_drh { # called by DBD::::driver() my ($class, $initial_attr, $imp_data) = @_; # Provide default storage for State,Err and Errstr. # Note that these are shared by all child handles by default! XXX # State must be undef to get automatic faking in DBI::var::FETCH my ($h_state_store, $h_err_store, $h_errstr_store) = (undef, undef, ''); my $attr = { # these attributes get copied down to child handles by default 'State' => \$h_state_store, # Holder for DBI::state 'Err' => \$h_err_store, # Holder for DBI::err 'Errstr' => \$h_errstr_store, # Holder for DBI::errstr 'TraceLevel' => 0, FetchHashKeyName=> 'NAME', %$initial_attr, }; my ($h, $i) = _new_handle('DBI::dr', '', $attr, $imp_data, $class); # XXX DBI_PROFILE unless DBI::PurePerl because for some reason # it kills the t/zz_*_pp.t tests (they silently exit early) if (($ENV{DBI_PROFILE} && !$DBI::PurePerl) || $shared_profile) { # The profile object created here when the first driver is loaded # is shared by all drivers so we end up with just one set of profile # data and thus the 'total time in DBI' is really the true total. if (!$shared_profile) { # first time $h->{Profile} = $ENV{DBI_PROFILE}; # write string $shared_profile = $h->{Profile}; # read and record object } else { $h->{Profile} = $shared_profile; } } return $h unless wantarray; ($h, $i); } sub _new_dbh { # called by DBD::::dr::connect() my ($drh, $attr, $imp_data) = @_; my $imp_class = $drh->{ImplementorClass} or Carp::croak("DBI _new_dbh: $drh has no ImplementorClass"); substr($imp_class,-4,4) = '::db'; my $app_class = ref $drh; substr($app_class,-4,4) = '::db'; $attr->{Err} ||= \my $err; $attr->{Errstr} ||= \my $errstr; $attr->{State} ||= \my $state; _new_handle($app_class, $drh, $attr, $imp_data, $imp_class); } sub _new_sth { # called by DBD::::db::prepare) my ($dbh, $attr, $imp_data) = @_; my $imp_class = $dbh->{ImplementorClass} or Carp::croak("DBI _new_sth: $dbh has no ImplementorClass"); substr($imp_class,-4,4) = '::st'; my $app_class = ref $dbh; substr($app_class,-4,4) = '::st'; _new_handle($app_class, $dbh, $attr, $imp_data, $imp_class); } # end of DBI package # -------------------------------------------------------------------- # === The internal DBI Switch pseudo 'driver' class === { package # hide from PAUSE DBD::Switch::dr; DBI->setup_driver('DBD::Switch'); # sets up @ISA $DBD::Switch::dr::imp_data_size = 0; $DBD::Switch::dr::imp_data_size = 0; # avoid typo warning my $drh; sub driver { return $drh if $drh; # a package global my $inner; ($drh, $inner) = DBI::_new_drh('DBD::Switch::dr', { 'Name' => 'Switch', 'Version' => $DBI::VERSION, 'Attribution' => "DBI $DBI::VERSION by Tim Bunce", }); Carp::croak("DBD::Switch init failed!") unless ($drh && $inner); return $drh; } sub CLONE { undef $drh; } sub FETCH { my($drh, $key) = @_; return DBI->trace if $key eq 'DebugDispatch'; return undef if $key eq 'DebugLog'; # not worth fetching, sorry return $drh->DBD::_::dr::FETCH($key); undef; } sub STORE { my($drh, $key, $value) = @_; if ($key eq 'DebugDispatch') { DBI->trace($value); } elsif ($key eq 'DebugLog') { DBI->trace(-1, $value); } else { $drh->DBD::_::dr::STORE($key, $value); } } } # -------------------------------------------------------------------- # === OPTIONAL MINIMAL BASE CLASSES FOR DBI SUBCLASSES === # We only define default methods for harmless functions. # We don't, for example, define a DBD::_::st::prepare() { package # hide from PAUSE DBD::_::common; # ====== Common base class methods ====== use strict; # methods common to all handle types: # generic TIEHASH default methods: sub FIRSTKEY { } sub NEXTKEY { } sub EXISTS { defined($_[0]->FETCH($_[1])) } # XXX undef? sub CLEAR { Carp::carp "Can't CLEAR $_[0] (DBI)" } sub FETCH_many { # XXX should move to C one day my $h = shift; # scalar is needed to workaround drivers that return an empty list # for some attributes return map { scalar $h->FETCH($_) } @_; } *dump_handle = \&DBI::dump_handle; sub install_method { # special class method called directly by apps and/or drivers # to install new methods into the DBI dispatcher # DBD::Foo::db->install_method("foo_mumble", { usage => [...], options => '...' }); my ($class, $method, $attr) = @_; Carp::croak("Class '$class' must begin with DBD:: and end with ::db or ::st") unless $class =~ /^DBD::(\w+)::(dr|db|st)$/; my ($driver, $subtype) = ($1, $2); Carp::croak("invalid method name '$method'") unless $method =~ m/^([a-z][a-z0-9]*_)\w+$/; my $prefix = $1; my $reg_info = $dbd_prefix_registry->{$prefix}; Carp::carp("method name prefix '$prefix' is not associated with a registered driver") unless $reg_info; my $full_method = "DBI::${subtype}::$method"; $DBI::installed_methods{$full_method} = $attr; my (undef, $filename, $line) = caller; # XXX reformat $attr as needed for _install_method my %attr = %{$attr||{}}; # copy so we can edit DBI->_install_method("DBI::${subtype}::$method", "$filename at line $line", \%attr); } sub parse_trace_flags { my ($h, $spec) = @_; my $level = 0; my $flags = 0; my @unknown; for my $word (split /\s*[|&,]\s*/, $spec) { if (DBI::looks_like_number($word) && $word <= 0xF && $word >= 0) { $level = $word; } elsif ($word eq 'ALL') { $flags = 0x7FFFFFFF; # XXX last bit causes negative headaches last; } elsif (my $flag = $h->parse_trace_flag($word)) { $flags |= $flag; } else { push @unknown, $word; } } if (@unknown && (ref $h ? $h->FETCH('Warn') : 1)) { Carp::carp("$h->parse_trace_flags($spec) ignored unknown trace flags: ". join(" ", map { DBI::neat($_) } @unknown)); } $flags |= $level; return $flags; } sub parse_trace_flag { my ($h, $name) = @_; # 0xddDDDDrL (driver, DBI, reserved, Level) return 0x00000100 if $name eq 'SQL'; return 0x00000200 if $name eq 'CON'; return 0x00000400 if $name eq 'ENC'; return 0x00000800 if $name eq 'DBD'; return 0x00001000 if $name eq 'TXN'; return; } sub private_attribute_info { return undef; } sub visit_child_handles { my ($h, $code, $info) = @_; $info = {} if not defined $info; for my $ch (@{ $h->{ChildHandles} || []}) { next unless $ch; my $child_info = $code->($ch, $info) or next; $ch->visit_child_handles($code, $child_info); } return $info; } } { package # hide from PAUSE DBD::_::dr; # ====== DRIVER ====== @DBD::_::dr::ISA = qw(DBD::_::common); use strict; sub default_user { my ($drh, $user, $pass, $attr) = @_; $user = $ENV{DBI_USER} unless defined $user; $pass = $ENV{DBI_PASS} unless defined $pass; return ($user, $pass); } sub connect { # normally overridden, but a handy default my ($drh, $dsn, $user, $auth) = @_; my ($this) = DBI::_new_dbh($drh, { 'Name' => $dsn, }); # XXX debatable as there's no "server side" here # (and now many uses would trigger warnings on DESTROY) # $this->STORE(Active => 1); # so drivers should set it in their own connect $this; } sub connect_cached { my $drh = shift; my ($dsn, $user, $auth, $attr) = @_; my $cache = $drh->{CachedKids} ||= {}; my $key = do { local $^W; join "!\001", $dsn, $user, $auth, DBI::_concat_hash_sorted($attr, "=\001", ",\001", 0, 0) }; my $dbh = $cache->{$key}; $drh->trace_msg(sprintf(" connect_cached: key '$key', cached dbh $dbh\n", DBI::neat($key), DBI::neat($dbh))) if (($DBI::dbi_debug & 0xF) >= 4); my $cb = $attr->{Callbacks}; # take care not to autovivify if ($dbh && $dbh->FETCH('Active') && eval { $dbh->ping }) { # If the caller has provided a callback then call it if ($cb and $cb = $cb->{"connect_cached.reused"}) { local $_ = "connect_cached.reused"; $cb->($dbh, $dsn, $user, $auth, $attr); } return $dbh; } # If the caller has provided a callback then call it if ($cb and (my $new_cb = $cb->{"connect_cached.new"})) { local $_ = "connect_cached.new"; $new_cb->($dbh, $dsn, $user, $auth, $attr); # $dbh is dead or undef } $dbh = $drh->connect(@_); $cache->{$key} = $dbh; # replace prev entry, even if connect failed if ($cb and (my $conn_cb = $cb->{"connect_cached.connected"})) { local $_ = "connect_cached.connected"; $conn_cb->($dbh, $dsn, $user, $auth, $attr); } return $dbh; } } { package # hide from PAUSE DBD::_::db; # ====== DATABASE ====== @DBD::_::db::ISA = qw(DBD::_::common); use strict; sub clone { my ($old_dbh, $attr) = @_; my $closure = $old_dbh->{dbi_connect_closure} or return $old_dbh->set_err($DBI::stderr, "Can't clone handle"); unless ($attr) { # XXX deprecated, caller should always pass a hash ref # copy attributes visible in the attribute cache keys %$old_dbh; # reset iterator while ( my ($k, $v) = each %$old_dbh ) { # ignore non-code refs, i.e., caches, handles, Err etc next if ref $v && ref $v ne 'CODE'; # HandleError etc $attr->{$k} = $v; } # explicitly set attributes which are unlikely to be in the # attribute cache, i.e., boolean's and some others $attr->{$_} = $old_dbh->FETCH($_) for (qw( AutoCommit ChopBlanks InactiveDestroy AutoInactiveDestroy LongTruncOk PrintError PrintWarn Profile RaiseError RaiseWarn ShowErrorStatement TaintIn TaintOut )); } # use Data::Dumper; warn Dumper([$old_dbh, $attr]); my $new_dbh = &$closure($old_dbh, $attr); unless ($new_dbh) { # need to copy err/errstr from driver back into $old_dbh my $drh = $old_dbh->{Driver}; return $old_dbh->set_err($drh->err, $drh->errstr, $drh->state); } $new_dbh->{dbi_connect_closure} = $closure; return $new_dbh; } sub quote_identifier { my ($dbh, @id) = @_; my $attr = (@id > 3 && ref($id[-1])) ? pop @id : undef; my $info = $dbh->{dbi_quote_identifier_cache} ||= [ $dbh->get_info(29) || '"', # SQL_IDENTIFIER_QUOTE_CHAR $dbh->get_info(41) || '.', # SQL_CATALOG_NAME_SEPARATOR $dbh->get_info(114) || 1, # SQL_CATALOG_LOCATION ]; my $quote = $info->[0]; foreach (@id) { # quote the elements next unless defined; s/$quote/$quote$quote/g; # escape embedded quotes $_ = qq{$quote$_$quote}; } # strip out catalog if present for special handling my $catalog = (@id >= 3) ? shift @id : undef; # join the dots, ignoring any null/undef elements (ie schema) my $quoted_id = join '.', grep { defined } @id; if ($catalog) { # add catalog correctly if ($quoted_id) { $quoted_id = ($info->[2] == 2) # SQL_CL_END ? $quoted_id . $info->[1] . $catalog : $catalog . $info->[1] . $quoted_id; } else { $quoted_id = $catalog; } } return $quoted_id; } sub quote { my ($dbh, $str, $data_type) = @_; return "NULL" unless defined $str; unless ($data_type) { $str =~ s/'/''/g; # ISO SQL2 return "'$str'"; } my $dbi_literal_quote_cache = $dbh->{'dbi_literal_quote_cache'} ||= [ {} , {} ]; my ($prefixes, $suffixes) = @$dbi_literal_quote_cache; my $lp = $prefixes->{$data_type}; my $ls = $suffixes->{$data_type}; if ( ! defined $lp || ! defined $ls ) { my $ti = $dbh->type_info($data_type); $lp = $prefixes->{$data_type} = $ti ? $ti->{LITERAL_PREFIX} || "" : "'"; $ls = $suffixes->{$data_type} = $ti ? $ti->{LITERAL_SUFFIX} || "" : "'"; } return $str unless $lp || $ls; # no quoting required # XXX don't know what the standard says about escaping # in the 'general case' (where $lp != "'"). # So we just do this and hope: $str =~ s/$lp/$lp$lp/g if $lp && $lp eq $ls && ($lp eq "'" || $lp eq '"'); return "$lp$str$ls"; } sub rows { -1 } # here so $DBI::rows 'works' after using $dbh sub do { my($dbh, $statement, $attr, @params) = @_; my $sth = $dbh->prepare($statement, $attr) or return undef; $sth->execute(@params) or return undef; my $rows = $sth->rows; ($rows == 0) ? "0E0" : $rows; } sub _do_selectrow { my ($method, $dbh, $stmt, $attr, @bind) = @_; my $sth = ((ref $stmt) ? $stmt : $dbh->prepare($stmt, $attr)) or return undef; $sth->execute(@bind) or return undef; my $row = $sth->$method() and $sth->finish; return $row; } sub selectrow_hashref { return _do_selectrow('fetchrow_hashref', @_); } # XXX selectrow_array/ref also have C implementations in Driver.xst sub selectrow_arrayref { return _do_selectrow('fetchrow_arrayref', @_); } sub selectrow_array { my $row = _do_selectrow('fetchrow_arrayref', @_) or return; return $row->[0] unless wantarray; return @$row; } sub selectall_array { return @{ shift->selectall_arrayref(@_) || [] }; } # XXX selectall_arrayref also has C implementation in Driver.xst # which fallsback to this if a slice is given sub selectall_arrayref { my ($dbh, $stmt, $attr, @bind) = @_; my $sth = (ref $stmt) ? $stmt : $dbh->prepare($stmt, $attr) or return; $sth->execute(@bind) || return; my $slice = $attr->{Slice}; # typically undef, else hash or array ref if (!$slice and $slice=$attr->{Columns}) { if (ref $slice eq 'ARRAY') { # map col idx to perl array idx $slice = [ @{$attr->{Columns}} ]; # take a copy for (@$slice) { $_-- } } } my $rows = $sth->fetchall_arrayref($slice, my $MaxRows = $attr->{MaxRows}); $sth->finish if defined $MaxRows; return $rows; } sub selectall_hashref { my ($dbh, $stmt, $key_field, $attr, @bind) = @_; my $sth = (ref $stmt) ? $stmt : $dbh->prepare($stmt, $attr); return unless $sth; $sth->execute(@bind) || return; return $sth->fetchall_hashref($key_field); } sub selectcol_arrayref { my ($dbh, $stmt, $attr, @bind) = @_; my $sth = (ref $stmt) ? $stmt : $dbh->prepare($stmt, $attr); return unless $sth; $sth->execute(@bind) || return; my @columns = ($attr->{Columns}) ? @{$attr->{Columns}} : (1); my @values = (undef) x @columns; my $idx = 0; for (@columns) { $sth->bind_col($_, \$values[$idx++]) || return; } my @col; if (my $max = $attr->{MaxRows}) { push @col, @values while 0 < $max-- && $sth->fetch; } else { push @col, @values while $sth->fetch; } return \@col; } sub prepare_cached { my ($dbh, $statement, $attr, $if_active) = @_; # Needs support at dbh level to clear cache before complaining about # active children. The XS template code does this. Drivers not using # the template must handle clearing the cache themselves. my $cache = $dbh->{CachedKids} ||= {}; my $key = do { local $^W; join "!\001", $statement, DBI::_concat_hash_sorted($attr, "=\001", ",\001", 0, 0) }; my $sth = $cache->{$key}; if ($sth) { return $sth unless $sth->FETCH('Active'); Carp::carp("prepare_cached($statement) statement handle $sth still Active") unless ($if_active ||= 0); $sth->finish if $if_active <= 1; return $sth if $if_active <= 2; } $sth = $dbh->prepare($statement, $attr); $cache->{$key} = $sth if $sth; return $sth; } sub ping { my $dbh = shift; # "0 but true" is a special kind of true 0 that is used here so # applications can check if the ping was a real ping or not ($dbh->FETCH('Active')) ? "0 but true" : 0; } sub begin_work { my $dbh = shift; return $dbh->set_err($DBI::stderr, "Already in a transaction") unless $dbh->FETCH('AutoCommit'); $dbh->STORE('AutoCommit', 0); # will croak if driver doesn't support it $dbh->STORE('BegunWork', 1); # trigger post commit/rollback action return 1; } sub primary_key { my ($dbh, @args) = @_; my $sth = $dbh->primary_key_info(@args) or return; my ($row, @col); push @col, $row->[3] while ($row = $sth->fetch); Carp::croak("primary_key method not called in list context") unless wantarray; # leave us some elbow room return @col; } sub tables { my ($dbh, @args) = @_; my $sth = $dbh->table_info(@args[0,1,2,3,4]) or return; my $tables = $sth->fetchall_arrayref or return; my @tables; if (defined($args[3]) && $args[3] eq '%' # special case for tables('','','','%') && grep {defined($_) && $_ eq ''} @args[0,1,2] ) { @tables = map { $_->[3] } @$tables; } elsif ($dbh->get_info(29)) { # SQL_IDENTIFIER_QUOTE_CHAR @tables = map { $dbh->quote_identifier( @{$_}[0,1,2] ) } @$tables; } else { # temporary old style hack (yeach) @tables = map { my $name = $_->[2]; if ($_->[1]) { my $schema = $_->[1]; # a sad hack (mostly for Informix I recall) my $quote = ($schema eq uc($schema)) ? '' : '"'; $name = "$quote$schema$quote.$name" } $name; } @$tables; } return @tables; } sub type_info { # this should be sufficient for all drivers my ($dbh, $data_type) = @_; my $idx_hash; my $tia = $dbh->{dbi_type_info_row_cache}; if ($tia) { $idx_hash = $dbh->{dbi_type_info_idx_cache}; } else { my $temp = $dbh->type_info_all; return unless $temp && @$temp; # we cache here because type_info_all may be expensive to call # (and we take a copy so the following shift can't corrupt # the data that may be returned by future calls to type_info_all) $tia = $dbh->{dbi_type_info_row_cache} = [ @$temp ]; $idx_hash = $dbh->{dbi_type_info_idx_cache} = shift @$tia; } my $dt_idx = $idx_hash->{DATA_TYPE} || $idx_hash->{data_type}; Carp::croak("type_info_all returned non-standard DATA_TYPE index value ($dt_idx != 1)") if $dt_idx && $dt_idx != 1; # --- simple DATA_TYPE match filter my @ti; my @data_type_list = (ref $data_type) ? @$data_type : ($data_type); foreach $data_type (@data_type_list) { if (defined($data_type) && $data_type != DBI::SQL_ALL_TYPES()) { push @ti, grep { $_->[$dt_idx] == $data_type } @$tia; } else { # SQL_ALL_TYPES push @ti, @$tia; } last if @ti; # found at least one match } # --- format results into list of hash refs my $idx_fields = keys %$idx_hash; my @idx_names = map { uc($_) } keys %$idx_hash; my @idx_values = values %$idx_hash; Carp::croak "type_info_all result has $idx_fields keys but ".(@{$ti[0]})." fields" if @ti && @{$ti[0]} != $idx_fields; my @out = map { my %h; @h{@idx_names} = @{$_}[ @idx_values ]; \%h; } @ti; return $out[0] unless wantarray; return @out; } sub data_sources { my ($dbh, @other) = @_; my $drh = $dbh->{Driver}; # XXX proxy issues? return $drh->data_sources(@other); } } { package # hide from PAUSE DBD::_::st; # ====== STATEMENT ====== @DBD::_::st::ISA = qw(DBD::_::common); use strict; sub bind_param { Carp::croak("Can't bind_param, not implement by driver") } # # ******************************************************** # # BEGIN ARRAY BINDING # # Array binding support for drivers which don't support # array binding, but have sufficient interfaces to fake it. # NOTE: mixing scalars and arrayrefs requires using bind_param_array # for *all* params...unless we modify bind_param for the default # case... # # 2002-Apr-10 D. Arnold sub bind_param_array { my $sth = shift; my ($p_id, $value_array, $attr) = @_; return $sth->set_err($DBI::stderr, "Value for parameter $p_id must be a scalar or an arrayref, not a ".ref($value_array)) if defined $value_array and ref $value_array and ref $value_array ne 'ARRAY'; return $sth->set_err($DBI::stderr, "Can't use named placeholder '$p_id' for non-driver supported bind_param_array") unless DBI::looks_like_number($p_id); # because we rely on execute(@ary) here return $sth->set_err($DBI::stderr, "Placeholder '$p_id' is out of range") if $p_id <= 0; # can't easily/reliably test for too big # get/create arrayref to hold params my $hash_of_arrays = $sth->{ParamArrays} ||= { }; # If the bind has attribs then we rely on the driver conforming to # the DBI spec in that a single bind_param() call with those attribs # makes them 'sticky' and apply to all later execute(@values) calls. # Since we only call bind_param() if we're given attribs then # applications using drivers that don't support bind_param can still # use bind_param_array() so long as they don't pass any attribs. $$hash_of_arrays{$p_id} = $value_array; return $sth->bind_param($p_id, undef, $attr) if $attr; 1; } sub bind_param_inout_array { my $sth = shift; # XXX not supported so we just call bind_param_array instead # and then return an error my ($p_num, $value_array, $attr) = @_; $sth->bind_param_array($p_num, $value_array, $attr); return $sth->set_err($DBI::stderr, "bind_param_inout_array not supported"); } sub bind_columns { my $sth = shift; my $fields = $sth->FETCH('NUM_OF_FIELDS') || 0; if ($fields <= 0 && !$sth->{Active}) { return $sth->set_err($DBI::stderr, "Statement has no result columns to bind" ." (perhaps you need to successfully call execute first, or again)"); } # Backwards compatibility for old-style call with attribute hash # ref as first arg. Skip arg if undef or a hash ref. my $attr; $attr = shift if !defined $_[0] or ref($_[0]) eq 'HASH'; my $idx = 0; $sth->bind_col(++$idx, shift, $attr) or return while (@_ and $idx < $fields); return $sth->set_err($DBI::stderr, "bind_columns called with ".($idx+@_)." values but $fields are needed") if @_ or $idx != $fields; return 1; } sub execute_array { my $sth = shift; my ($attr, @array_of_arrays) = @_; my $NUM_OF_PARAMS = $sth->FETCH('NUM_OF_PARAMS'); # may be undef at this point # get tuple status array or hash attribute my $tuple_sts = $attr->{ArrayTupleStatus}; return $sth->set_err($DBI::stderr, "ArrayTupleStatus attribute must be an arrayref") if $tuple_sts and ref $tuple_sts ne 'ARRAY'; # bind all supplied arrays if (@array_of_arrays) { $sth->{ParamArrays} = { }; # clear out old params return $sth->set_err($DBI::stderr, @array_of_arrays." bind values supplied but $NUM_OF_PARAMS expected") if defined ($NUM_OF_PARAMS) && @array_of_arrays != $NUM_OF_PARAMS; $sth->bind_param_array($_, $array_of_arrays[$_-1]) or return foreach (1..@array_of_arrays); } my $fetch_tuple_sub; if ($fetch_tuple_sub = $attr->{ArrayTupleFetch}) { # fetch on demand return $sth->set_err($DBI::stderr, "Can't use both ArrayTupleFetch and explicit bind values") if @array_of_arrays; # previous bind_param_array calls will simply be ignored if (UNIVERSAL::isa($fetch_tuple_sub,'DBI::st')) { my $fetch_sth = $fetch_tuple_sub; return $sth->set_err($DBI::stderr, "ArrayTupleFetch sth is not Active, need to execute() it first") unless $fetch_sth->{Active}; # check column count match to give more friendly message my $NUM_OF_FIELDS = $fetch_sth->{NUM_OF_FIELDS}; return $sth->set_err($DBI::stderr, "$NUM_OF_FIELDS columns from ArrayTupleFetch sth but $NUM_OF_PARAMS expected") if defined($NUM_OF_FIELDS) && defined($NUM_OF_PARAMS) && $NUM_OF_FIELDS != $NUM_OF_PARAMS; $fetch_tuple_sub = sub { $fetch_sth->fetchrow_arrayref }; } elsif (!UNIVERSAL::isa($fetch_tuple_sub,'CODE')) { return $sth->set_err($DBI::stderr, "ArrayTupleFetch '$fetch_tuple_sub' is not a code ref or statement handle"); } } else { my $NUM_OF_PARAMS_given = keys %{ $sth->{ParamArrays} || {} }; return $sth->set_err($DBI::stderr, "$NUM_OF_PARAMS_given bind values supplied but $NUM_OF_PARAMS expected") if defined($NUM_OF_PARAMS) && $NUM_OF_PARAMS != $NUM_OF_PARAMS_given; # get the length of a bound array my $maxlen; my %hash_of_arrays = %{$sth->{ParamArrays}}; foreach (keys(%hash_of_arrays)) { my $ary = $hash_of_arrays{$_}; next unless ref $ary eq 'ARRAY'; $maxlen = @$ary if !$maxlen || @$ary > $maxlen; } # if there are no arrays then execute scalars once $maxlen = 1 unless defined $maxlen; my @bind_ids = 1..keys(%hash_of_arrays); my $tuple_idx = 0; $fetch_tuple_sub = sub { return if $tuple_idx >= $maxlen; my @tuple = map { my $a = $hash_of_arrays{$_}; ref($a) ? $a->[$tuple_idx] : $a } @bind_ids; ++$tuple_idx; return \@tuple; }; } # pass thru the callers scalar or list context return $sth->execute_for_fetch($fetch_tuple_sub, $tuple_sts); } sub execute_for_fetch { my ($sth, $fetch_tuple_sub, $tuple_status) = @_; # start with empty status array ($tuple_status) ? @$tuple_status = () : $tuple_status = []; my $rc_total = 0; my $err_count; while ( my $tuple = &$fetch_tuple_sub() ) { if ( my $rc = $sth->execute(@$tuple) ) { push @$tuple_status, $rc; $rc_total = ($rc >= 0 && $rc_total >= 0) ? $rc_total + $rc : -1; } else { $err_count++; push @$tuple_status, [ $sth->err, $sth->errstr, $sth->state ]; # XXX drivers implementing execute_for_fetch could opt to "last;" here # if they know the error code means no further executes will work. } } my $tuples = @$tuple_status; return $sth->set_err($DBI::stderr, "executing $tuples generated $err_count errors") if $err_count; $tuples ||= "0E0"; return $tuples unless wantarray; return ($tuples, $rc_total); } sub last_insert_id { return shift->{Database}->last_insert_id(@_); } sub fetchall_arrayref { # ALSO IN Driver.xst my ($sth, $slice, $max_rows) = @_; # when batch fetching with $max_rows were very likely to try to # fetch the 'next batch' after the previous batch returned # <=$max_rows. So don't treat that as an error. return undef if $max_rows and not $sth->FETCH('Active'); my $mode = ref($slice) || 'ARRAY'; my @rows; if ($mode eq 'ARRAY') { my $row; # we copy the array here because fetch (currently) always # returns the same array ref. XXX if ($slice && @$slice) { $max_rows = -1 unless defined $max_rows; push @rows, [ @{$row}[ @$slice] ] while($max_rows-- and $row = $sth->fetch); } elsif (defined $max_rows) { push @rows, [ @$row ] while($max_rows-- and $row = $sth->fetch); } else { push @rows, [ @$row ] while($row = $sth->fetch); } return \@rows } my %row; if ($mode eq 'REF' && ref($$slice) eq 'HASH') { # \{ $idx => $name } keys %$$slice; # reset the iterator while ( my ($idx, $name) = each %$$slice ) { $sth->bind_col($idx+1, \$row{$name}); } } elsif ($mode eq 'HASH') { if (keys %$slice) { # resets the iterator my $name2idx = $sth->FETCH('NAME_lc_hash'); while ( my ($name, $unused) = each %$slice ) { my $idx = $name2idx->{lc $name}; return $sth->set_err($DBI::stderr, "Invalid column name '$name' for slice") if not defined $idx; $sth->bind_col($idx+1, \$row{$name}); } } else { my @column_names = @{ $sth->FETCH($sth->FETCH('FetchHashKeyName')) }; return [] if !@column_names; $sth->bind_columns( \( @row{@column_names} ) ); } } else { return $sth->set_err($DBI::stderr, "fetchall_arrayref($mode) invalid"); } if (not defined $max_rows) { push @rows, { %row } while ($sth->fetch); # full speed ahead! } else { push @rows, { %row } while ($max_rows-- and $sth->fetch); } return \@rows; } sub fetchall_hashref { my ($sth, $key_field) = @_; my $hash_key_name = $sth->{FetchHashKeyName} || 'NAME'; my $names_hash = $sth->FETCH("${hash_key_name}_hash"); my @key_fields = (ref $key_field) ? @$key_field : ($key_field); my @key_indexes; my $num_of_fields = $sth->FETCH('NUM_OF_FIELDS'); foreach (@key_fields) { my $index = $names_hash->{$_}; # perl index not column $index = $_ - 1 if !defined $index && DBI::looks_like_number($_) && $_>=1 && $_ <= $num_of_fields; return $sth->set_err($DBI::stderr, "Field '$_' does not exist (not one of @{[keys %$names_hash]})") unless defined $index; push @key_indexes, $index; } my $rows = {}; my $NAME = $sth->FETCH($hash_key_name); my @row = (undef) x $num_of_fields; $sth->bind_columns(\(@row)); while ($sth->fetch) { my $ref = $rows; $ref = $ref->{$row[$_]} ||= {} for @key_indexes; @{$ref}{@$NAME} = @row; } return $rows; } *dump_results = \&DBI::dump_results; sub blob_copy_to_file { # returns length or undef on error my($self, $field, $filename_or_handleref, $blocksize) = @_; my $fh = $filename_or_handleref; my($len, $buf) = (0, ""); $blocksize ||= 512; # not too ambitious local(*FH); unless(ref $fh) { open(FH, ">$fh") || return undef; $fh = \*FH; } while(defined($self->blob_read($field, $len, $blocksize, \$buf))) { print $fh $buf; $len += length $buf; } close(FH); $len; } sub more_results { shift->{syb_more_results}; # handy grandfathering } } unless ($DBI::PurePerl) { # See install_driver { @DBD::_mem::dr::ISA = qw(DBD::_mem::common); } { @DBD::_mem::db::ISA = qw(DBD::_mem::common); } { @DBD::_mem::st::ISA = qw(DBD::_mem::common); } # DBD::_mem::common::DESTROY is implemented in DBI.xs } 1; __END__ =head1 DESCRIPTION The DBI is a database access module for the Perl programming language. It defines a set of methods, variables, and conventions that provide a consistent database interface, independent of the actual database being used. It is important to remember that the DBI is just an interface. The DBI is a layer of "glue" between an application and one or more database I modules. It is the driver modules which do most of the real work. The DBI provides a standard interface and framework for the drivers to operate within. This document often uses terms like I, I, I. If you're not familiar with those terms then it would be a good idea to read at least the following perl manuals first: L, L, L, and L. =head2 Architecture of a DBI Application |<- Scope of DBI ->| .-. .--------------. .-------------. .-------. | |---| XYZ Driver |---| XYZ Engine | | Perl | | | `--------------' `-------------' | script| |A| |D| .--------------. .-------------. | using |--|P|--|B|---|Oracle Driver |---|Oracle Engine| | DBI | |I| |I| `--------------' `-------------' | API | | |... |methods| | |... Other drivers `-------' | |... `-' The API, or Application Programming Interface, defines the call interface and variables for Perl scripts to use. The API is implemented by the Perl DBI extension. The DBI "dispatches" the method calls to the appropriate driver for actual execution. The DBI is also responsible for the dynamic loading of drivers, error checking and handling, providing default implementations for methods, and many other non-database specific duties. Each driver contains implementations of the DBI methods using the private interface functions of the corresponding database engine. Only authors of sophisticated/multi-database applications or generic library functions need be concerned with drivers. =head2 Notation and Conventions The following conventions are used in this document: $dbh Database handle object $sth Statement handle object $drh Driver handle object (rarely seen or used in applications) $h Any of the handle types above ($dbh, $sth, or $drh) $rc General Return Code (boolean: true=ok, false=error) $rv General Return Value (typically an integer) @ary List of values returned from the database, typically a row of data $rows Number of rows processed (if available, else -1) $fh A filehandle undef NULL values are represented by undefined values in Perl \%attr Reference to a hash of attribute values passed to methods Note that Perl will automatically destroy database and statement handle objects if all references to them are deleted. =head2 Outline Usage To use DBI, first you need to load the DBI module: use DBI; use strict; (The C isn't required but is strongly recommended.) Then you need to L to your data source and get a I for that connection: $dbh = DBI->connect($dsn, $user, $password, { RaiseError => 1, AutoCommit => 0 }); Since connecting can be expensive, you generally just connect at the start of your program and disconnect at the end. Explicitly defining the required C behaviour is strongly recommended and may become mandatory in a later version. This determines whether changes are automatically committed to the database when executed, or need to be explicitly committed later. The DBI allows an application to "prepare" statements for later execution. A prepared statement is identified by a statement handle held in a Perl variable. We'll call the Perl variable C<$sth> in our examples. The typical method call sequence for a C statement is: prepare, execute, execute, execute. for example: $sth = $dbh->prepare("INSERT INTO table(foo,bar,baz) VALUES (?,?,?)"); while() { chomp; my ($foo,$bar,$baz) = split /,/; $sth->execute( $foo, $bar, $baz ); } The C method is a wrapper of prepare and execute that can be simpler for non repeated I-C statement. =head1 THE DBI PACKAGE AND CLASS In this section, we cover the DBI class methods, utility functions, and the dynamic attributes associated with generic DBI handles. =head2 DBI Constants Constants representing the values of the SQL standard types can be imported individually by name, or all together by importing the special C<:sql_types> tag. The names and values of all the defined SQL standard types can be produced like this: foreach (@{ $DBI::EXPORT_TAGS{sql_types} }) { printf "%s=%d\n", $_, &{"DBI::$_"}; } These constants are defined by SQL/CLI, ODBC or both. C has conflicting codes in SQL/CLI and ODBC, DBI uses the ODBC one. See the L, L, and L methods for possible uses. Note that just because the DBI defines a named constant for a given data type doesn't mean that drivers will support that data type. =head2 DBI Class Methods The following methods are provided by the DBI class: =head3 C ($scheme, $driver, $attr_string, $attr_hash, $driver_dsn) = DBI->parse_dsn($dsn) or die "Can't parse DBI DSN '$dsn'"; Breaks apart a DBI Data Source Name (DSN) and returns the individual parts. If $dsn doesn't contain a valid DSN then parse_dsn() returns an empty list. $scheme is the first part of the DSN and is currently always 'dbi'. $driver is the driver name, possibly defaulted to $ENV{DBI_DRIVER}, and may be undefined. $attr_string is the contents of the optional attribute string, which may be undefined. If $attr_string is not empty then $attr_hash is a reference to a hash containing the parsed attribute names and values. $driver_dsn is the last part of the DBI DSN string. For example: ($scheme, $driver, $attr_string, $attr_hash, $driver_dsn) = DBI->parse_dsn("dbi:MyDriver(RaiseError=>1):db=test;port=42"); $scheme = 'dbi'; $driver = 'MyDriver'; $attr_string = 'RaiseError=>1'; $attr_hash = { 'RaiseError' => '1' }; $driver_dsn = 'db=test;port=42'; The parse_dsn() method was added in DBI 1.43. =head3 C $dbh = DBI->connect($data_source, $username, $password) or die $DBI::errstr; $dbh = DBI->connect($data_source, $username, $password, \%attr) or die $DBI::errstr; Establishes a database connection, or session, to the requested C<$data_source>. Returns a database handle object if the connection succeeds. Use C<$dbh-Edisconnect> to terminate the connection. If the connect fails (see below), it returns C and sets both C<$DBI::err> and C<$DBI::errstr>. (It does I explicitly set C<$!>.) You should generally test the return status of C and C if it has failed. Multiple simultaneous connections to multiple databases through multiple drivers can be made via the DBI. Simply make one C call for each database and keep a copy of each returned database handle. The C<$data_source> value must begin with "CIC<:>". The I specifies the driver that will be used to make the connection. (Letter case is significant.) As a convenience, if the C<$data_source> parameter is undefined or empty, the DBI will substitute the value of the environment variable C. If just the I part is empty (i.e., the C<$data_source> prefix is "C"), the environment variable C is used. If neither variable is set, then C dies. Examples of C<$data_source> values are: dbi:DriverName:database_name dbi:DriverName:database_name@hostname:port dbi:DriverName:database=database_name;host=hostname;port=port There is I for the text following the driver name. Each driver is free to use whatever syntax it wants. The only requirement the DBI makes is that all the information is supplied in a single string. You must consult the documentation for the drivers you are using for a description of the syntax they require. It is recommended that drivers support the ODBC style, shown in the last example above. It is also recommended that they support the three common names 'C', 'C', and 'C' (plus 'C' as an alias for C). This simplifies automatic construction of basic DSNs: C<"dbi:$driver:database=$db;host=$host;port=$port">. Drivers should aim to 'do something reasonable' when given a DSN in this form, but if any part is meaningless for that driver (such as 'port' for Informix) it should generate an error if that part is not empty. If the environment variable C is defined (and the driver in C<$data_source> is not "C") then the connect request will automatically be changed to: $ENV{DBI_AUTOPROXY};dsn=$data_source C is typically set as "C". If $ENV{DBI_AUTOPROXY} doesn't begin with 'C' then "dbi:Proxy:" will be prepended to it first. See the DBD::Proxy documentation for more details. If C<$username> or C<$password> are undefined (rather than just empty), then the DBI will substitute the values of the C and C environment variables, respectively. The DBI will warn if the environment variables are not defined. However, the everyday use of these environment variables is not recommended for security reasons. The mechanism is primarily intended to simplify testing. See below for alternative way to specify the username and password. Cconnect> automatically installs the driver if it has not been installed yet. Driver installation either returns a valid driver handle, or it I with an error message that includes the string "C" and the underlying problem. So Cconnect> will die on a driver installation failure and will only return C on a connect failure, in which case C<$DBI::errstr> will hold the error message. Use C if you need to catch the "C" error. The C<$data_source> argument (with the "C" prefix removed) and the C<$username> and C<$password> arguments are then passed to the driver for processing. The DBI does not define any interpretation for the contents of these fields. The driver is free to interpret the C<$data_source>, C<$username>, and C<$password> fields in any way, and supply whatever defaults are appropriate for the engine being accessed. (Oracle, for example, uses the ORACLE_SID and TWO_TASK environment variables if no C<$data_source> is specified.) The C and C attributes for each connection default to "on". (See L and L for more information.) However, it is strongly recommended that you explicitly define C rather than rely on the default. The C attribute defaults to true. The C attribute defaults to false. The C<\%attr> parameter can be used to alter the default settings of C, C, C, and other attributes. For example: $dbh = DBI->connect($data_source, $user, $pass, { PrintError => 0, AutoCommit => 0 }); The username and password can also be specified using the attributes C and C, in which case they take precedence over the C<$username> and C<$password> parameters. You can also define connection attribute values within the C<$data_source> parameter. For example: dbi:DriverName(PrintWarn=>0,PrintError=>0,Taint=>1):... Individual attributes values specified in this way take precedence over any conflicting values specified via the C<\%attr> parameter to C. The C attribute can be used to specify which driver method should be called to establish the connection. The only useful values are 'connect', 'connect_cached', or some specialized case like 'Apache::DBI::connect' (which is automatically the default when running within Apache). Where possible, each session (C<$dbh>) is independent from the transactions in other sessions. This is useful when you need to hold cursors open across transactions--for example, if you use one session for your long lifespan cursors (typically read-only) and another for your short update transactions. For compatibility with old DBI scripts, the driver can be specified by passing its name as the fourth argument to C (instead of C<\%attr>): $dbh = DBI->connect($data_source, $user, $pass, $driver); In this "old-style" form of C, the C<$data_source> should not start with "C". (If it does, the embedded driver_name will be ignored). Also note that in this older form of C, the C<$dbh-E{AutoCommit}> attribute is I, the C<$dbh-E{PrintError}> attribute is off, and the old C environment variable is checked if C is not defined. Beware that this "old-style" C will soon be withdrawn in a future version of DBI. =head3 C $dbh = DBI->connect_cached($data_source, $username, $password) or die $DBI::errstr; $dbh = DBI->connect_cached($data_source, $username, $password, \%attr) or die $DBI::errstr; C is like L, except that the database handle returned is also stored in a hash associated with the given parameters. If another call is made to C with the same parameter values, then the corresponding cached C<$dbh> will be returned if it is still valid. The cached database handle is replaced with a new connection if it has been disconnected or if the C method fails. Note that the behaviour of this method differs in several respects from the behaviour of persistent connections implemented by Apache::DBI. However, if Apache::DBI is loaded then C will use it. Caching connections can be useful in some applications, but it can also cause problems, such as too many connections, and so should be used with care. In particular, avoid changing the attributes of a database handle created via connect_cached() because it will affect other code that may be using the same handle. When connect_cached() returns a handle the attributes will be reset to their initial values. This can cause problems, especially with the C attribute. Also, to ensure that the attributes passed are always the same, avoid passing references inline. For example, the C attribute is specified as a hash reference. Be sure to declare it external to the call to connect_cached(), such that the hash reference is not re-created on every call. A package-level lexical works well: package MyDBH; my $cb = { 'connect_cached.reused' => sub { delete $_[4]->{AutoCommit} }, }; sub dbh { DBI->connect_cached( $dsn, $username, $auth, { Callbacks => $cb }); } Where multiple separate parts of a program are using connect_cached() to connect to the same database with the same (initial) attributes it is a good idea to add a private attribute to the connect_cached() call to effectively limit the scope of the caching. For example: DBI->connect_cached(..., { private_foo_cachekey => "Bar", ... }); Handles returned from that connect_cached() call will only be returned by other connect_cached() call elsewhere in the code if those other calls also pass in the same attribute values, including the private one. (I've used C here as an example, you can use any attribute name with a C prefix.) Taking that one step further, you can limit a particular connect_cached() call to return handles unique to that one place in the code by setting the private attribute to a unique value for that place: DBI->connect_cached(..., { private_foo_cachekey => __FILE__.__LINE__, ... }); By using a private attribute you still get connection caching for the individual calls to connect_cached() but, by making separate database connections for separate parts of the code, the database handles are isolated from any attribute changes made to other handles. The cache can be accessed (and cleared) via the L attribute: my $CachedKids_hashref = $dbh->{Driver}->{CachedKids}; %$CachedKids_hashref = () if $CachedKids_hashref; =head3 C @ary = DBI->available_drivers; @ary = DBI->available_drivers($quiet); Returns a list of all available drivers by searching for C modules through the directories in C<@INC>. By default, a warning is given if some drivers are hidden by others of the same name in earlier directories. Passing a true value for C<$quiet> will inhibit the warning. =head3 C %drivers = DBI->installed_drivers(); Returns a list of driver name and driver handle pairs for all drivers 'installed' (loaded) into the current process. The driver name does not include the 'DBD::' prefix. To get a list of all drivers available in your perl installation you can use L. Added in DBI 1.49. =head3 C DBI->installed_versions; @ary = DBI->installed_versions; $hash = DBI->installed_versions; Calls available_drivers() and attempts to load each of them in turn using install_driver(). For each load that succeeds the driver name and version number are added to a hash. When running under L drivers which appear not be pure-perl are ignored. When called in array context the list of successfully loaded drivers is returned (without the 'DBD::' prefix). When called in scalar context an extra entry for the C is added (and C if appropriate) and a reference to the hash is returned. When called in a void context the installed_versions() method will print out a formatted list of the hash contents, one per line, along with some other information about the DBI version and OS. Due to the potentially high memory cost and unknown risks of loading in an unknown number of drivers that just happen to be installed on the system, this method is not recommended for general use. Use available_drivers() instead. The installed_versions() method is primarily intended as a quick way to see from the command line what's installed. For example: perl -MDBI -e 'DBI->installed_versions' The installed_versions() method was added in DBI 1.38. =head3 C @ary = DBI->data_sources($driver); @ary = DBI->data_sources($driver, \%attr); Returns a list of data sources (databases) available via the named driver. If C<$driver> is empty or C, then the value of the C environment variable is used. The driver will be loaded if it hasn't been already. Note that if the driver loading fails then data_sources() I with an error message that includes the string "C" and the underlying problem. Data sources are returned in a form suitable for passing to the L method (that is, they will include the "C" prefix). Note that many drivers have no way of knowing what data sources might be available for it. These drivers return an empty or incomplete list or may require driver-specific attributes. There is also a data_sources() method defined for database handles. =head3 C DBI->trace($trace_setting) DBI->trace($trace_setting, $trace_filename) DBI->trace($trace_setting, $trace_filehandle) $trace_setting = DBI->trace; The Ctrace> method sets the I trace settings and returns the I trace settings. It can also be used to change where the trace output is sent. There's a similar method, C<$h-Etrace>, which sets the trace settings for the specific handle it's called on. See the L section for full details about the DBI's powerful tracing facilities. =head3 C DBI->visit_handles( $coderef ); DBI->visit_handles( $coderef, $info ); Where $coderef is a reference to a subroutine and $info is an arbitrary value which, if undefined, defaults to a reference to an empty hash. Returns $info. For each installed driver handle, if any, $coderef is invoked as: $coderef->($driver_handle, $info); If the execution of $coderef returns a true value then L is called on that child handle and passed the returned value as $info. For example: my $info = $dbh->{Driver}->visit_child_handles(sub { my ($h, $info) = @_; ++$info->{ $h->{Type} }; # count types of handles (dr/db/st) return $info; # visit kids }); See also L. =head2 DBI Utility Functions In addition to the DBI methods listed in the previous section, the DBI package also provides several utility functions. These can be imported into your code by listing them in the C statement. For example: use DBI qw(neat data_diff); Alternatively, all these utility functions (except hash) can be imported using the C<:utils> import tag. For example: use DBI qw(:utils); =head3 C $description = data_string_desc($string); Returns an informal description of the string. For example: UTF8 off, ASCII, 42 characters 42 bytes UTF8 off, non-ASCII, 42 characters 42 bytes UTF8 on, non-ASCII, 4 characters 6 bytes UTF8 on but INVALID encoding, non-ASCII, 4 characters 6 bytes UTF8 off, undef The initial C on/off refers to Perl's internal SvUTF8 flag. If $string has the SvUTF8 flag set but the sequence of bytes it contains are not a valid UTF-8 encoding then data_string_desc() will report C. The C vs C portion shows C if I the characters in the string are ASCII (have code points <= 127). The data_string_desc() function was added in DBI 1.46. =head3 C $diff = data_string_diff($a, $b); Returns an informal description of the first character difference between the strings. If both $a and $b contain the same sequence of characters then data_string_diff() returns an empty string. For example: Params a & b Result ------------ ------ 'aaa', 'aaa' '' 'aaa', 'abc' 'Strings differ at index 2: a[2]=a, b[2]=b' 'aaa', undef 'String b is undef, string a has 3 characters' 'aaa', 'aa' 'String b truncated after 2 characters' Unicode characters are reported in C<\x{XXXX}> format. Unicode code points in the range U+0800 to U+08FF are unassigned and most likely to occur due to double-encoding. Characters in this range are reported as C<\x{08XX}='C'> where C is the corresponding latin-1 character. The data_string_diff() function only considers logical I and not the underlying encoding. See L for an alternative. The data_string_diff() function was added in DBI 1.46. =head3 C $diff = data_diff($a, $b); $diff = data_diff($a, $b, $logical); Returns an informal description of the difference between two strings. It calls L and L and returns the combined results as a multi-line string. For example, C will return: a: UTF8 off, ASCII, 3 characters 3 bytes b: UTF8 on, non-ASCII, 3 characters 5 bytes Strings differ at index 2: a[2]=c, b[2]=\x{263A} If $a and $b are identical in both the characters they contain I their physical encoding then data_diff() returns an empty string. If $logical is true then physical encoding differences are ignored (but are still reported if there is a difference in the characters). The data_diff() function was added in DBI 1.46. =head3 C $str = neat($value); $str = neat($value, $maxlen); Return a string containing a neat (and tidy) representation of the supplied value. Strings will be quoted, although internal quotes will I be escaped. Values known to be numeric will be unquoted. Undefined (NULL) values will be shown as C (without quotes). If the string is flagged internally as utf8 then double quotes will be used, otherwise single quotes are used and unprintable characters will be replaced by dot (.). For result strings longer than C<$maxlen> the result string will be truncated to C<$maxlen-4> and "C<...'>" will be appended. If C<$maxlen> is 0 or C, it defaults to C<$DBI::neat_maxlen> which, in turn, defaults to 400. This function is designed to format values for human consumption. It is used internally by the DBI for L output. It should typically I be used for formatting values for database use. (See also L.) =head3 C $str = neat_list(\@listref, $maxlen, $field_sep); Calls C on each element of the list and returns a string containing the results joined with C<$field_sep>. C<$field_sep> defaults to C<", ">. =head3 C @bool = looks_like_number(@array); Returns true for each element that looks like a number. Returns false for each element that does not look like a number. Returns C for each element that is undefined or empty. =head3 C $hash_value = DBI::hash($buffer, $type); Return a 32-bit integer 'hash' value corresponding to the contents of $buffer. The $type parameter selects which kind of hash algorithm should be used. For the technically curious, type 0 (which is the default if $type isn't specified) is based on the Perl 5.1 hash except that the value is forced to be negative (for obscure historical reasons). Type 1 is the better "Fowler / Noll / Vo" (FNV) hash. See L for more information. Both types are implemented in C and are very fast. This function doesn't have much to do with databases, except that it can sometimes be handy to store such values in a database. It also doesn't have much to do with perl hashes, like %foo. =head3 C $sts = DBI::sql_type_cast($sv, $sql_type, $flags); sql_type_cast attempts to cast C<$sv> to the SQL type (see L) specified in C<$sql_type>. At present only the SQL types C, C and C are supported. For C the effect is similar to using the value in an expression that requires an integer. It gives the perl scalar an 'integer aspect'. (Technically the value gains an IV, or possibly a UV or NV if the value is too large for an IV.) For C the effect is similar to using the value in an expression that requires a general numeric value. It gives the perl scalar a 'numeric aspect'. (Technically the value gains an NV.) C is similar to C or C but more general and more cautious. It will look at the string first and if it looks like an integer (that will fit in an IV or UV) it will act like C, if it looks like a floating point value it will act like C, if it looks like neither then it will do nothing - and thereby avoid the warnings that would be generated by C and C when given non-numeric data. C<$flags> may be: =over 4 =item C If this flag is specified then when the driver successfully casts the bound perl scalar to a non-string type then the string portion of the scalar will be discarded. =item C If C<$sv> cannot be cast to the requested C<$sql_type> then by default it is left untouched and no error is generated. If you specify C and the cast fails, this will generate an error. =back The returned C<$sts> value is: -2 sql_type is not handled -1 sv is undef so unchanged 0 sv could not be cast cleanly and DBIstcf_STRICT was used 1 sv could not be cast and DBIstcf_STRICT was not used 2 sv was cast successfully This method is exported by the :utils tag and was introduced in DBI 1.611. =head2 DBI Dynamic Attributes Dynamic attributes are always associated with the I (that handle is represented by C<$h> in the descriptions below). Where an attribute is equivalent to a method call, then refer to the method call for all related documentation. Warning: these attributes are provided as a convenience but they do have limitations. Specifically, they have a short lifespan: because they are associated with the last handle used, they should only be used I after calling the method that "sets" them. If in any doubt, use the corresponding method call. =head3 C<$DBI::err> Equivalent to C<$h-Eerr>. =head3 C<$DBI::errstr> Equivalent to C<$h-Eerrstr>. =head3 C<$DBI::state> Equivalent to C<$h-Estate>. =head3 C<$DBI::rows> Equivalent to C<$h-Erows>. Please refer to the documentation for the L method. =head3 C<$DBI::lasth> Returns the DBI object handle used for the most recent DBI method call. If the last DBI method call was a DESTROY then $DBI::lasth will return the handle of the parent of the destroyed handle, if there is one. =head1 METHODS COMMON TO ALL HANDLES The following methods can be used by all types of DBI handles. =head3 C $rv = $h->err; Returns the I database engine error code from the last driver method called. The code is typically an integer but you should not assume that. The DBI resets $h->err to undef before almost all DBI method calls, so the value only has a short lifespan. Also, for most drivers, the statement handles share the same error variable as the parent database handle, so calling a method on one handle may reset the error on the related handles. (Methods which don't reset err before being called include err() and errstr(), obviously, state(), rows(), func(), trace(), trace_msg(), ping(), and the tied hash attribute FETCH() and STORE() methods.) If you need to test for specific error conditions I have your program be portable to different database engines, then you'll need to determine what the corresponding error codes are for all those engines and test for all of them. The DBI uses the value of $DBI::stderr as the C value for internal errors. Drivers should also do likewise. The default value for $DBI::stderr is 2000000000. A driver may return C<0> from err() to indicate a warning condition after a method call. Similarly, a driver may return an empty string to indicate a 'success with information' condition. In both these cases the value is false but not undef. The errstr() and state() methods may be used to retrieve extra information in these cases. See L for more information. =head3 C $str = $h->errstr; Returns the native database engine error message from the last DBI method called. This has the same lifespan issues as the L method described above. The returned string may contain multiple messages separated by newline characters. The errstr() method should not be used to test for errors, use err() for that, because drivers may return 'success with information' or warning messages via errstr() for methods that have not 'failed'. See L for more information. =head3 C $str = $h->state; Returns a state code in the standard SQLSTATE five character format. Note that the specific success code C<00000> is translated to any empty string (false). If the driver does not support SQLSTATE (and most don't), then state() will return C (General Error) for all errors. The driver is free to return any value via C, e.g., warning codes, even if it has not declared an error by returning a true value via the L method described above. The state() method should not be used to test for errors, use err() for that, because drivers may return a 'success with information' or warning state code via state() for methods that have not 'failed'. =head3 C $rv = $h->set_err($err, $errstr); $rv = $h->set_err($err, $errstr, $state); $rv = $h->set_err($err, $errstr, $state, $method); $rv = $h->set_err($err, $errstr, $state, $method, $rv); Set the C, C, and C values for the handle. This method is typically only used by DBI drivers and DBI subclasses. If the L attribute holds a reference to a subroutine it is called first. The subroutine can alter the $err, $errstr, $state, and $method values. See L for full details. If the subroutine returns a true value then the handle C, C, and C values are not altered and set_err() returns an empty list (it normally returns $rv which defaults to undef, see below). Setting C to a I value indicates an error and will trigger the normal DBI error handling mechanisms, such as C and C, if they are enabled, when execution returns from the DBI back to the application. Setting C to C<""> indicates an 'information' state, and setting it to C<"0"> indicates a 'warning' state. Setting C to C also sets C to undef, and C to C<"">, irrespective of the values of the $errstr and $state parameters. The $method parameter provides an alternate method name for the C/C/C/C error string instead of the fairly unhelpful 'C'. The C method normally returns undef. The $rv parameter provides an alternate return value. Some special rules apply if the C or C values for the handle are I set... If C is true then: "C< [err was %s now %s]>" is appended if $err is true and C is already true and the new err value differs from the original one. Similarly "C< [state was %s now %s]>" is appended if $state is true and C is already true and the new state value differs from the original one. Finally "C<\n>" and the new $errstr are appended if $errstr differs from the existing errstr value. Obviously the C<%s>'s above are replaced by the corresponding values. The handle C value is set to $err if: $err is true; or handle C value is undef; or $err is defined and the length is greater than the handle C length. The effect is that an 'information' state only overrides undef; a 'warning' overrides undef or 'information', and an 'error' state overrides anything. The handle C value is set to $state if $state is true and the handle C value was set (by the rules above). Support for warning and information states was added in DBI 1.41. =head3 C $h->trace($trace_settings); $h->trace($trace_settings, $trace_filename); $trace_settings = $h->trace; The trace() method is used to alter the trace settings for a handle (and any future children of that handle). It can also be used to change where the trace output is sent. There's a similar method, Ctrace>, which sets the global default trace settings. See the L section for full details about the DBI's powerful tracing facilities. =head3 C $h->trace_msg($message_text); $h->trace_msg($message_text, $min_level); Writes C<$message_text> to the trace file if the trace level is greater than or equal to $min_level (which defaults to 1). Can also be called as Ctrace_msg($msg)>. See L for more details. =head3 C $h->func(@func_arguments, $func_name) or die ...; The C method can be used to call private non-standard and non-portable methods implemented by the driver. Note that the function name is given as the I argument. It's also important to note that the func() method does not clear a previous error ($DBI::err etc.) and it does not trigger automatic error detection (RaiseError etc.) so you must check the return status and/or $h->err to detect errors. (This method is not directly related to calling stored procedures. Calling stored procedures is currently not defined by the DBI. Some drivers, such as DBD::Oracle, support it in non-portable ways. See driver documentation for more details.) See also install_method() in L for how you can avoid needing to use func() and gain direct access to driver-private methods. =head3 C $is_implemented = $h->can($method_name); Returns true if $method_name is implemented by the driver or a default method is provided by the DBI's driver base class. It returns false where a driver hasn't implemented a method and the default method is provided by the DBI's driver base class is just an empty stub. =head3 C $trace_settings_integer = $h->parse_trace_flags($trace_settings); Parses a string containing trace settings and returns the corresponding integer value used internally by the DBI and drivers. The $trace_settings argument is a string containing a trace level between 0 and 15 and/or trace flag names separated by vertical bar ("C<|>") or comma ("C<,>") characters. For example: C<"SQL|3|foo">. It uses the parse_trace_flag() method, described below, to process the individual trace flag names. The parse_trace_flags() method was added in DBI 1.42. =head3 C $bit_flag = $h->parse_trace_flag($trace_flag_name); Returns the bit flag corresponding to the trace flag name in $trace_flag_name. Drivers are expected to override this method and check if $trace_flag_name is a driver specific trace flags and, if not, then call the DBI's default parse_trace_flag(). The parse_trace_flag() method was added in DBI 1.42. =head3 C $hash_ref = $h->private_attribute_info(); Returns a reference to a hash whose keys are the names of driver-private handle attributes available for the kind of handle (driver, database, statement) that the method was called on. For example, the return value when called with a DBD::Sybase $dbh could look like this: { syb_dynamic_supported => undef, syb_oc_version => undef, syb_server_version => undef, syb_server_version_string => undef, } and when called with a DBD::Sybase $sth they could look like this: { syb_types => undef, syb_proc_status => undef, syb_result_type => undef, } The values should be undef. Meanings may be assigned to particular values in future. =head3 C $rc = $h1->swap_inner_handle( $h2 ); $rc = $h1->swap_inner_handle( $h2, $allow_reparent ); Brain transplants for handles. You don't need to know about this unless you want to become a handle surgeon. A DBI handle is a reference to a tied hash. A tied hash has an I hash that actually holds the contents. The swap_inner_handle() method swaps the inner hashes between two handles. The $h1 and $h2 handles still point to the same tied hashes, but what those hashes are tied to has been swapped. In effect $h1 I $h2 and vice-versa. This is powerful stuff, expect problems. Use with care. As a small safety measure, the two handles, $h1 and $h2, have to share the same parent unless $allow_reparent is true. The swap_inner_handle() method was added in DBI 1.44. Here's a quick kind of 'diagram' as a worked example to help think about what's happening: Original state: dbh1o -> dbh1i sthAo -> sthAi(dbh1i) dbh2o -> dbh2i swap_inner_handle dbh1o with dbh2o: dbh2o -> dbh1i sthAo -> sthAi(dbh1i) dbh1o -> dbh2i create new sth from dbh1o: dbh2o -> dbh1i sthAo -> sthAi(dbh1i) dbh1o -> dbh2i sthBo -> sthBi(dbh2i) swap_inner_handle sthAo with sthBo: dbh2o -> dbh1i sthBo -> sthAi(dbh1i) dbh1o -> dbh2i sthAo -> sthBi(dbh2i) =head3 C $h->visit_child_handles( $coderef ); $h->visit_child_handles( $coderef, $info ); Where $coderef is a reference to a subroutine and $info is an arbitrary value which, if undefined, defaults to a reference to an empty hash. Returns $info. For each child handle of $h, if any, $coderef is invoked as: $coderef->($child_handle, $info); If the execution of $coderef returns a true value then C is called on that child handle and passed the returned value as $info. For example: # count database connections with names (DSN) matching a pattern my $connections = 0; $dbh->{Driver}->visit_child_handles(sub { my ($h, $info) = @_; ++$connections if $h->{Name} =~ /foo/; return 0; # don't visit kids }) See also L. =head1 ATTRIBUTES COMMON TO ALL HANDLES These attributes are common to all types of DBI handles. Some attributes are inherited by child handles. That is, the value of an inherited attribute in a newly created statement handle is the same as the value in the parent database handle. Changes to attributes in the new statement handle do not affect the parent database handle and changes to the database handle do not affect existing statement handles, only future ones. Attempting to set or get the value of an unknown attribute generates a warning, except for private driver specific attributes (which all have names starting with a lowercase letter). Example: $h->{AttributeName} = ...; # set/write ... = $h->{AttributeName}; # get/read =head3 C Type: boolean, inherited The C attribute enables useful warnings for certain bad practices. It is enabled by default and should only be disabled in rare circumstances. Since warnings are generated using the Perl C function, they can be intercepted using the Perl C<$SIG{__WARN__}> hook. The C attribute is not related to the C attribute. =head3 C Type: boolean, read-only The C attribute is true if the handle object is "active". This is rarely used in applications. The exact meaning of active is somewhat vague at the moment. For a database handle it typically means that the handle is connected to a database (C<$dbh-Edisconnect> sets C off). For a statement handle it typically means that the handle is a C statements that either cannot be prepared in advance (due to a limitation of the driver) or do not need to be executed repeatedly. It should not be used for C". Drivers using any approach like this should issue a warning if C is true because it is generally unsafe - another process may have modified the table between your insert and the select. For situations where you know it is safe, such as when you have locked the table, you can silence the warning by passing C => 0 in \%attr. B<*> If no insert has been performed yet, or the last insert failed, then the value is implementation defined. Given all the caveats above, it's clear that this method must be used with care. The C method was added in DBI 1.38. =head3 C @row_ary = $dbh->selectrow_array($statement); @row_ary = $dbh->selectrow_array($statement, \%attr); @row_ary = $dbh->selectrow_array($statement, \%attr, @bind_values); This utility method combines L, L and L into a single call. If called in a list context, it returns the first row of data from the statement. The C<$statement> parameter can be a previously prepared statement handle, in which case the C is skipped. If any method fails, and L is not set, C will return an empty list. If called in a scalar context for a statement handle that has more than one column, it is undefined whether the driver will return the value of the first column or the last. So don't do that. Also, in a scalar context, an C is returned if there are no more rows or if an error occurred. That C can't be distinguished from an C returned because the first field value was NULL. For these reasons you should exercise some caution if you use C in a scalar context, or just don't do that. =head3 C $ary_ref = $dbh->selectrow_arrayref($statement); $ary_ref = $dbh->selectrow_arrayref($statement, \%attr); $ary_ref = $dbh->selectrow_arrayref($statement, \%attr, @bind_values); This utility method combines L, L and L into a single call. It returns the first row of data from the statement. The C<$statement> parameter can be a previously prepared statement handle, in which case the C is skipped. If any method fails, and L is not set, C will return undef. =head3 C $hash_ref = $dbh->selectrow_hashref($statement); $hash_ref = $dbh->selectrow_hashref($statement, \%attr); $hash_ref = $dbh->selectrow_hashref($statement, \%attr, @bind_values); This utility method combines L, L and L into a single call. It returns the first row of data from the statement. The C<$statement> parameter can be a previously prepared statement handle, in which case the C is skipped. If any method fails, and L is not set, C will return undef. =head3 C $ary_ref = $dbh->selectall_arrayref($statement); $ary_ref = $dbh->selectall_arrayref($statement, \%attr); $ary_ref = $dbh->selectall_arrayref($statement, \%attr, @bind_values); This utility method combines L, L and L into a single call. It returns a reference to an array containing a reference to an array (or hash, see below) for each row of data fetched. The C<$statement> parameter can be a previously prepared statement handle, in which case the C is skipped. This is recommended if the statement is going to be executed many times. If L is not set and any method except C fails then C will return C; if C fails then it will return with whatever data has been fetched thus far. You should check C<$dbh-Eerr> afterwards (or use the C attribute) to discover if the data is complete or was truncated due to an error. The L method called by C supports a $max_rows parameter. You can specify a value for $max_rows by including a 'C' attribute in \%attr. In which case finish() is called for you after fetchall_arrayref() returns. The L method called by C also supports a $slice parameter. You can specify a value for $slice by including a 'C' or 'C' attribute in \%attr. The only difference between the two is that if C is not defined and C is an array ref, then the array is assumed to contain column index values (which count from 1), rather than perl array index values. In which case the array is copied and each value decremented before passing to C. You may often want to fetch an array of rows where each row is stored as a hash. That can be done simply using: my $emps = $dbh->selectall_arrayref( "SELECT ename FROM emp ORDER BY ename", { Slice => {} } ); foreach my $emp ( @$emps ) { print "Employee: $emp->{ename}\n"; } Or, to fetch into an array instead of an array ref: @result = @{ $dbh->selectall_arrayref($sql, { Slice => {} }) }; See L method for more details. =head3 C @ary = $dbh->selectall_array($statement); @ary = $dbh->selectall_array($statement, \%attr); @ary = $dbh->selectall_array($statement, \%attr, @bind_values); This is a convenience wrapper around L that returns the rows directly as a list, rather than a reference to an array of rows. Note that if L is not set then you can't tell the difference between returning no rows and an error. Using RaiseError is best practice. The C method was added in DBI 1.635. =head3 C $hash_ref = $dbh->selectall_hashref($statement, $key_field); $hash_ref = $dbh->selectall_hashref($statement, $key_field, \%attr); $hash_ref = $dbh->selectall_hashref($statement, $key_field, \%attr, @bind_values); This utility method combines L, L and L into a single call. It returns a reference to a hash containing one entry, at most, for each row, as returned by fetchall_hashref(). The C<$statement> parameter can be a previously prepared statement handle, in which case the C is skipped. This is recommended if the statement is going to be executed many times. The C<$key_field> parameter defines which column, or columns, are used as keys in the returned hash. It can either be the name of a single field, or a reference to an array containing multiple field names. Using multiple names yields a tree of nested hashes. If a row has the same key as an earlier row then it replaces the earlier row. If any method except C fails, and L is not set, C will return C. If C fails and L is not set, then it will return with whatever data it has fetched thus far. $DBI::err should be checked to catch that. See fetchall_hashref() for more details. =head3 C $ary_ref = $dbh->selectcol_arrayref($statement); $ary_ref = $dbh->selectcol_arrayref($statement, \%attr); $ary_ref = $dbh->selectcol_arrayref($statement, \%attr, @bind_values); This utility method combines L, L, and fetching one column from all the rows, into a single call. It returns a reference to an array containing the values of the first column from each row. The C<$statement> parameter can be a previously prepared statement handle, in which case the C is skipped. This is recommended if the statement is going to be executed many times. If any method except C fails, and L is not set, C will return C. If C fails and L is not set, then it will return with whatever data it has fetched thus far. $DBI::err should be checked to catch that. The C method defaults to pushing a single column value (the first) from each row into the result array. However, it can also push another column, or even multiple columns per row, into the result array. This behaviour can be specified via a 'C' attribute which must be a ref to an array containing the column number or numbers to use. For example: # get array of id and name pairs: my $ary_ref = $dbh->selectcol_arrayref("select id, name from table", { Columns=>[1,2] }); my %hash = @$ary_ref; # build hash from key-value pairs so $hash{$id} => name You can specify a maximum number of rows to fetch by including a 'C' attribute in \%attr. =head3 C $sth = $dbh->prepare($statement) or die $dbh->errstr; $sth = $dbh->prepare($statement, \%attr) or die $dbh->errstr; Prepares a statement for later execution by the database engine and returns a reference to a statement handle object. The returned statement handle can be used to get attributes of the statement and invoke the L method. See L. Drivers for engines without the concept of preparing a statement will typically just store the statement in the returned handle and process it when C<$sth-Eexecute> is called. Such drivers are unlikely to give much useful information about the statement, such as C<$sth-E{NUM_OF_FIELDS}>, until after C<$sth-Eexecute> has been called. Portable applications should take this into account. In general, DBI drivers do not parse the contents of the statement (other than simply counting any L). The statement is passed directly to the database engine, sometimes known as pass-thru mode. This has advantages and disadvantages. On the plus side, you can access all the functionality of the engine being used. On the downside, you're limited if you're using a simple engine, and you need to take extra care if writing applications intended to be portable between engines. Portable applications should not assume that a new statement can be prepared and/or executed while still fetching results from a previous statement. Some command-line SQL tools use statement terminators, like a semicolon, to indicate the end of a statement. Such terminators should not normally be used with the DBI. =head3 C $sth = $dbh->prepare_cached($statement) $sth = $dbh->prepare_cached($statement, \%attr) $sth = $dbh->prepare_cached($statement, \%attr, $if_active) Like L except that the statement handle returned will be stored in a hash associated with the C<$dbh>. If another call is made to C with the same C<$statement> and C<%attr> parameter values, then the corresponding cached C<$sth> will be returned without contacting the database server. Be sure to understand the cautions and caveats noted below. The C<$if_active> parameter lets you adjust the behaviour if an already cached statement handle is still Active. There are several alternatives: =over 4 =item B<0>: A warning will be generated, and finish() will be called on the statement handle before it is returned. This is the default behaviour if $if_active is not passed. =item B<1>: finish() will be called on the statement handle, but the warning is suppressed. =item B<2>: Disables any checking. =item B<3>: The existing active statement handle will be removed from the cache and a new statement handle prepared and cached in its place. This is the safest option because it doesn't affect the state of the old handle, it just removes it from the cache. [Added in DBI 1.40] =back Here are some examples of C: sub insert_hash { my ($table, $field_values) = @_; # sort to keep field order, and thus sql, stable for prepare_cached my @fields = sort keys %$field_values; my @values = @{$field_values}{@fields}; my $sql = sprintf "insert into %s (%s) values (%s)", $table, join(",", @fields), join(",", ("?")x@fields); my $sth = $dbh->prepare_cached($sql); return $sth->execute(@values); } sub search_hash { my ($table, $field_values) = @_; # sort to keep field order, and thus sql, stable for prepare_cached my @fields = sort keys %$field_values; my @values = @{$field_values}{@fields}; my $qualifier = ""; $qualifier = "where ".join(" and ", map { "$_=?" } @fields) if @fields; $sth = $dbh->prepare_cached("SELECT * FROM $table $qualifier"); return $dbh->selectall_arrayref($sth, {}, @values); } I This caching can be useful in some applications, but it can also cause problems and should be used with care. Here is a contrived case where caching would cause a significant problem: my $sth = $dbh->prepare_cached('SELECT * FROM foo WHERE bar=?'); $sth->execute(...); while (my $data = $sth->fetchrow_hashref) { # later, in some other code called within the loop... my $sth2 = $dbh->prepare_cached('SELECT * FROM foo WHERE bar=?'); $sth2->execute(...); while (my $data2 = $sth2->fetchrow_arrayref) { do_stuff(...); } } In this example, since both handles are preparing the exact same statement, C<$sth2> will not be its own statement handle, but a duplicate of C<$sth> returned from the cache. The results will certainly not be what you expect. Typically the inner fetch loop will work normally, fetching all the records and terminating when there are no more, but now that $sth is the same as $sth2 the outer fetch loop will also terminate. You'll know if you run into this problem because prepare_cached() will generate a warning by default (when $if_active is false). The cache used by prepare_cached() is keyed by both the statement and any attributes so you can also avoid this issue by doing something like: $sth = $dbh->prepare_cached("...", { dbi_dummy => __FILE__.__LINE__ }); which will ensure that prepare_cached only returns statements cached by that line of code in that source file. Also, to ensure the attributes passed are always the same, avoid passing references inline. For example, the Slice attribute is specified as a reference. Be sure to declare it external to the call to prepare_cached(), such that a new hash reference is not created on every call. See L for more details and examples. If you'd like the cache to managed intelligently, you can tie the hashref returned by C to an appropriate caching module, such as L: my $cache; tie %$cache, 'Tie::Cache::LRU', 500; $dbh->{CachedKids} = $cache; =head3 C $rc = $dbh->commit or die $dbh->errstr; Commit (make permanent) the most recent series of database changes if the database supports transactions and AutoCommit is off. If C is on, then calling C will issue a "commit ineffective with AutoCommit" warning. See also L in the L section below. =head3 C $rc = $dbh->rollback or die $dbh->errstr; Rollback (undo) the most recent series of uncommitted database changes if the database supports transactions and AutoCommit is off. If C is on, then calling C will issue a "rollback ineffective with AutoCommit" warning. See also L in the L section below. =head3 C $rc = $dbh->begin_work or die $dbh->errstr; Enable transactions (by turning C off) until the next call to C or C. After the next C or C, C will automatically be turned on again. If C is already off when C is called then it does nothing except return an error. If the driver does not support transactions then when C attempts to set C off the driver will trigger a fatal error. See also L in the L section below. =head3 C $rc = $dbh->disconnect or warn $dbh->errstr; Disconnects the database from the database handle. C is typically only used before exiting the program. The handle is of little use after disconnecting. The transaction behaviour of the C method is, sadly, undefined. Some database systems (such as Oracle and Ingres) will automatically commit any outstanding changes, but others (such as Informix) will rollback any outstanding changes. Applications not using C should explicitly call C or C before calling C. The database is automatically disconnected by the C method if still connected when there are no longer any references to the handle. The C method for each driver should implicitly call C to undo any uncommitted changes. This is vital behaviour to ensure that incomplete transactions don't get committed simply because Perl calls C on every object before exiting. Also, do not rely on the order of object destruction during "global destruction", as it is undefined. Generally, if you want your changes to be committed or rolled back when you disconnect, then you should explicitly call L or L before disconnecting. If you disconnect from a database while you still have active statement handles (e.g., SELECT statement handles that may have more data to fetch), you will get a warning. The warning may indicate that a fetch loop terminated early, perhaps due to an uncaught error. To avoid the warning call the C method on the active handles. =head3 C $rc = $dbh->ping; Attempts to determine, in a reasonably efficient way, if the database server is still running and the connection to it is still working. Individual drivers should implement this function in the most suitable manner for their database engine. The current I implementation always returns true without actually doing anything. Actually, it returns "C<0 but true>" which is true but zero. That way you can tell if the return value is genuine or just the default. Drivers should override this method with one that does the right thing for their type of database. Few applications would have direct use for this method. See the specialized Apache::DBI module for one example usage. =head3 C $value = $dbh->get_info( $info_type ); Returns information about the implementation, i.e. driver and data source capabilities, restrictions etc. It returns C for unknown or unimplemented information types. For example: $database_version = $dbh->get_info( 18 ); # SQL_DBMS_VER $max_select_tables = $dbh->get_info( 106 ); # SQL_MAXIMUM_TABLES_IN_SELECT See L for more detailed information about the information types and their meanings and possible return values. The L module exports a %GetInfoType hash that can be used to map info type names to numbers. For example: $database_version = $dbh->get_info( $GetInfoType{SQL_DBMS_VER} ); The names are a merging of the ANSI and ODBC standards (which differ in some cases). See L for more details. Because some DBI methods make use of get_info(), drivers are strongly encouraged to support I the following very minimal set of information types to ensure the DBI itself works properly: Type Name Example A Example B ---- -------------------------- ------------ ---------------- 17 SQL_DBMS_NAME 'ACCESS' 'Oracle' 18 SQL_DBMS_VER '03.50.0000' '08.01.0721 ...' 29 SQL_IDENTIFIER_QUOTE_CHAR '`' '"' 41 SQL_CATALOG_NAME_SEPARATOR '.' '@' 114 SQL_CATALOG_LOCATION 1 2 Values from 9000 to 9999 for get_info are officially reserved for use by Perl DBI. Values in that range which have been assigned a meaning are defined here: C<9000>: true if a backslash character (C<\>) before placeholder-like text (e.g. C, C<:foo>) will prevent it being treated as a placeholder by the driver. The backslash will be removed before the text is passed to the backend. =head3 C $sth = $dbh->table_info( $catalog, $schema, $table, $type ); $sth = $dbh->table_info( $catalog, $schema, $table, $type, \%attr ); # then $sth->fetchall_arrayref or $sth->fetchall_hashref etc Returns an active statement handle that can be used to fetch information about tables and views that exist in the database. The arguments $catalog, $schema and $table may accept search patterns according to the database/driver, for example: $table = '%FOO%'; Remember that the underscore character ('C<_>') is a search pattern that means match any character, so 'FOO_%' is the same as 'FOO%' and 'FOO_BAR%' will match names like 'FOO1BAR'. The value of $type is a comma-separated list of one or more types of tables to be returned in the result set. Each value may optionally be quoted, e.g.: $type = "TABLE"; $type = "'TABLE','VIEW'"; In addition the following special cases may also be supported by some drivers: =over 4 =item * If the value of $catalog is '%' and $schema and $table name are empty strings, the result set contains a list of catalog names. For example: $sth = $dbh->table_info('%', '', ''); =item * If the value of $schema is '%' and $catalog and $table are empty strings, the result set contains a list of schema names. =item * If the value of $type is '%' and $catalog, $schema, and $table are all empty strings, the result set contains a list of table types. =back If your driver doesn't support one or more of the selection filter parameters then you may get back more than you asked for and can do the filtering yourself. This method can be expensive, and can return a large amount of data. (For example, small Oracle installation returns over 2000 rows.) So it's a good idea to use the filters to limit the data as much as possible. The statement handle returned has at least the following fields in the order show below. Other fields, after these, may also be present. B: Table catalog identifier. This field is NULL (C) if not applicable to the data source, which is usually the case. This field is empty if not applicable to the table. B: The name of the schema containing the TABLE_NAME value. This field is NULL (C) if not applicable to data source, and empty if not applicable to the table. B: Name of the table (or view, synonym, etc). B: One of the following: "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM" or a type identifier that is specific to the data source. B: A description of the table. May be NULL (C). Note that C might not return records for all tables. Applications can use any valid table regardless of whether it's returned by C. See also L, L and L. =head3 C $sth = $dbh->column_info( $catalog, $schema, $table, $column ); # then $sth->fetchall_arrayref or $sth->fetchall_hashref etc Returns an active statement handle that can be used to fetch information about columns in specified tables. The arguments $schema, $table and $column may accept search patterns according to the database/driver, for example: $table = '%FOO%'; Note: The support for the selection criteria is driver specific. If the driver doesn't support one or more of them then you may get back more than you asked for and can do the filtering yourself. Note: If your driver does not support column_info an undef is returned. This is distinct from asking for something which does not exist in a driver which supports column_info as a valid statement handle to an empty result-set will be returned in this case. If the arguments don't match any tables then you'll still get a statement handle, it'll just return no rows. The statement handle returned has at least the following fields in the order shown below. Other fields, after these, may also be present. B: The catalog identifier. This field is NULL (C) if not applicable to the data source, which is often the case. This field is empty if not applicable to the table. B: The schema identifier. This field is NULL (C) if not applicable to the data source, and empty if not applicable to the table. B: The table identifier. Note: A driver may provide column metadata not only for base tables, but also for derived objects like SYNONYMS etc. B: The column identifier. B: The concise data type code. B: A data source dependent data type name. B: The column size. This is the maximum length in characters for character data types, the number of digits or bits for numeric data types or the length in the representation of temporal types. See the relevant specifications for detailed information. B: The length in bytes of transferred data. B: The total number of significant digits to the right of the decimal point. B: The radix for numeric precision. The value is 10 or 2 for numeric data types and NULL (C) if not applicable. B: Indicates if a column can accept NULLs. The following values are defined: SQL_NO_NULLS 0 SQL_NULLABLE 1 SQL_NULLABLE_UNKNOWN 2 B: A description of the column. B: The default value of the column, in a format that can be used directly in an SQL statement. Note that this may be an expression and not simply the text used for the default value in the original CREATE TABLE statement. For example, given: col1 char(30) default current_user -- a 'function' col2 char(30) default 'string' -- a string literal where "current_user" is the name of a function, the corresponding C values would be: Database col1 col2 -------- ---- ---- Oracle: current_user 'string' Postgres: "current_user"() 'string'::text MS SQL: (user_name()) ('string') B: The SQL data type. B: The subtype code for datetime and interval data types. B: The maximum length in bytes of a character or binary data type column. B: The column sequence number (starting with 1). B: Indicates if the column can accept NULLs. Possible values are: 'NO', 'YES' and ''. SQL/CLI defines the following additional columns: CHAR_SET_CAT CHAR_SET_SCHEM CHAR_SET_NAME COLLATION_CAT COLLATION_SCHEM COLLATION_NAME UDT_CAT UDT_SCHEM UDT_NAME DOMAIN_CAT DOMAIN_SCHEM DOMAIN_NAME SCOPE_CAT SCOPE_SCHEM SCOPE_NAME MAX_CARDINALITY DTD_IDENTIFIER IS_SELF_REF Drivers capable of supplying any of those values should do so in the corresponding column and supply undef values for the others. Drivers wishing to provide extra database/driver specific information should do so in extra columns beyond all those listed above, and use lowercase field names with the driver-specific prefix (i.e., 'ora_...'). Applications accessing such fields should do so by name and not by column number. The result set is ordered by TABLE_CAT, TABLE_SCHEM, TABLE_NAME and ORDINAL_POSITION. Note: There is some overlap with statement handle attributes (in perl) and SQLDescribeCol (in ODBC). However, SQLColumns provides more metadata. See also L and L. =head3 C $sth = $dbh->primary_key_info( $catalog, $schema, $table ); # then $sth->fetchall_arrayref or $sth->fetchall_hashref etc Returns an active statement handle that can be used to fetch information about columns that make up the primary key for a table. The arguments don't accept search patterns (unlike table_info()). The statement handle will return one row per column, ordered by TABLE_CAT, TABLE_SCHEM, TABLE_NAME, and KEY_SEQ. If there is no primary key then the statement handle will fetch no rows. Note: The support for the selection criteria, such as $catalog, is driver specific. If the driver doesn't support catalogs and/or schemas, it may ignore these criteria. The statement handle returned has at least the following fields in the order shown below. Other fields, after these, may also be present. B: The catalog identifier. This field is NULL (C) if not applicable to the data source, which is often the case. This field is empty if not applicable to the table. B: The schema identifier. This field is NULL (C) if not applicable to the data source, and empty if not applicable to the table. B: The table identifier. B: The column identifier. B: The column sequence number (starting with 1). Note: This field is named B in SQL/CLI. B: The primary key constraint identifier. This field is NULL (C) if not applicable to the data source. See also L and L. =head3 C @key_column_names = $dbh->primary_key( $catalog, $schema, $table ); Simple interface to the primary_key_info() method. Returns a list of the column names that comprise the primary key of the specified table. The list is in primary key column sequence order. If there is no primary key then an empty list is returned. =head3 C $sth = $dbh->foreign_key_info( $pk_catalog, $pk_schema, $pk_table , $fk_catalog, $fk_schema, $fk_table ); $sth = $dbh->foreign_key_info( $pk_catalog, $pk_schema, $pk_table , $fk_catalog, $fk_schema, $fk_table , \%attr ); # then $sth->fetchall_arrayref or $sth->fetchall_hashref etc Returns an active statement handle that can be used to fetch information about foreign keys in and/or referencing the specified table(s). The arguments don't accept search patterns (unlike table_info()). C<$pk_catalog>, C<$pk_schema>, C<$pk_table> identify the primary (unique) key table (B). C<$fk_catalog>, C<$fk_schema>, C<$fk_table> identify the foreign key table (B). If both B and B are given, the function returns the foreign key, if any, in table B that refers to the primary (unique) key of table B. (Note: In SQL/CLI, the result is implementation-defined.) If only B is given, then the result set contains the primary key of that table and all foreign keys that refer to it. If only B is given, then the result set contains all foreign keys in that table and the primary keys to which they refer. (Note: In SQL/CLI, the result includes unique keys too.) For example: $sth = $dbh->foreign_key_info( undef, $user, 'master'); $sth = $dbh->foreign_key_info( undef, undef, undef , undef, $user, 'detail'); $sth = $dbh->foreign_key_info( undef, $user, 'master', undef, $user, 'detail'); # then $sth->fetchall_arrayref or $sth->fetchall_hashref etc Note: The support for the selection criteria, such as C<$catalog>, is driver specific. If the driver doesn't support catalogs and/or schemas, it may ignore these criteria. The statement handle returned has the following fields in the order shown below. Because ODBC never includes unique keys, they define different columns in the result set than SQL/CLI. SQL/CLI column names are shown in parentheses. B: The primary (unique) key table catalog identifier. This field is NULL (C) if not applicable to the data source, which is often the case. This field is empty if not applicable to the table. B: The primary (unique) key table schema identifier. This field is NULL (C) if not applicable to the data source, and empty if not applicable to the table. B: The primary (unique) key table identifier. B: The primary (unique) key column identifier. B: The foreign key table catalog identifier. This field is NULL (C) if not applicable to the data source, which is often the case. This field is empty if not applicable to the table. B: The foreign key table schema identifier. This field is NULL (C) if not applicable to the data source, and empty if not applicable to the table. B: The foreign key table identifier. B: The foreign key column identifier. B: The column sequence number (starting with 1). B: The referential action for the UPDATE rule. The following codes are defined: CASCADE 0 RESTRICT 1 SET NULL 2 NO ACTION 3 SET DEFAULT 4 B: The referential action for the DELETE rule. The codes are the same as for UPDATE_RULE. B: The foreign key name. B: The primary (unique) key name. B: The deferrability of the foreign key constraint. The following codes are defined: INITIALLY DEFERRED 5 INITIALLY IMMEDIATE 6 NOT DEFERRABLE 7 B< ( UNIQUE_OR_PRIMARY )>: This column is necessary if a driver includes all candidate (i.e. primary and alternate) keys in the result set (as specified by SQL/CLI). The value of this column is UNIQUE if the foreign key references an alternate key and PRIMARY if the foreign key references a primary key, or it may be undefined if the driver doesn't have access to the information. See also L and L. =head3 C B This method is experimental and may change. $sth = $dbh->statistics_info( $catalog, $schema, $table, $unique_only, $quick ); # then $sth->fetchall_arrayref or $sth->fetchall_hashref etc Returns an active statement handle that can be used to fetch statistical information about a table and its indexes. The arguments don't accept search patterns (unlike L). If the boolean argument $unique_only is true, only UNIQUE indexes will be returned in the result set, otherwise all indexes will be returned. If the boolean argument $quick is set, the actual statistical information columns (CARDINALITY and PAGES) will only be returned if they are readily available from the server, and might not be current. Some databases may return stale statistics or no statistics at all with this flag set. The statement handle will return at most one row per column name per index, plus at most one row for the entire table itself, ordered by NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAME, and ORDINAL_POSITION. Note: The support for the selection criteria, such as $catalog, is driver specific. If the driver doesn't support catalogs and/or schemas, it may ignore these criteria. The statement handle returned has at least the following fields in the order shown below. Other fields, after these, may also be present. B: The catalog identifier. This field is NULL (C) if not applicable to the data source, which is often the case. This field is empty if not applicable to the table. B: The schema identifier. This field is NULL (C) if not applicable to the data source, and empty if not applicable to the table. B: The table identifier. B: Unique index indicator. Returns 0 for unique indexes, 1 for non-unique indexes B: Index qualifier identifier. The identifier that is used to qualify the index name when doing a C; NULL (C) is returned if an index qualifier is not supported by the data source. If a non-NULL (defined) value is returned in this column, it must be used to qualify the index name on a C statement; otherwise, the TABLE_SCHEM should be used to qualify the index name. B: The index identifier. B: The type of information being returned. Can be any of the following values: 'table', 'btree', 'clustered', 'content', 'hashed', or 'other'. In the case that this field is 'table', all fields other than TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TYPE, CARDINALITY, and PAGES will be NULL (C). B: Column sequence number (starting with 1). B: The column identifier. B: Column sort sequence. C for Ascending, C for Descending, or NULL (C) if not supported for this index. B: Cardinality of the table or index. For indexes, this is the number of unique values in the index. For tables, this is the number of rows in the table. If not supported, the value will be NULL (C). B: Number of storage pages used by this table or index. If not supported, the value will be NULL (C). B: The index filter condition as a string. If the index is not a filtered index, or it cannot be determined whether the index is a filtered index, this value is NULL (C). If the index is a filtered index, but the filter condition cannot be determined, this value is the empty string C<''>. Otherwise it will be the literal filter condition as a string, such as C. See also L and L. =head3 C @names = $dbh->tables( $catalog, $schema, $table, $type ); @names = $dbh->tables; # deprecated Simple interface to table_info(). Returns a list of matching table names, possibly including a catalog/schema prefix. See L for a description of the parameters. If C<$dbh-Eget_info(29)> returns true (29 is SQL_IDENTIFIER_QUOTE_CHAR) then the table names are constructed and quoted by L to ensure they are usable even if they contain whitespace or reserved words etc. This means that the table names returned will include quote characters. =head3 C $type_info_all = $dbh->type_info_all; Returns a reference to an array which holds information about each data type variant supported by the database and driver. The array and its contents should be treated as read-only. The first item is a reference to an 'index' hash of CE C pairs. The items following that are references to arrays, one per supported data type variant. The leading index hash defines the names and order of the fields within the arrays that follow it. For example: $type_info_all = [ { TYPE_NAME => 0, DATA_TYPE => 1, COLUMN_SIZE => 2, # was PRECISION originally LITERAL_PREFIX => 3, LITERAL_SUFFIX => 4, CREATE_PARAMS => 5, NULLABLE => 6, CASE_SENSITIVE => 7, SEARCHABLE => 8, UNSIGNED_ATTRIBUTE=> 9, FIXED_PREC_SCALE => 10, # was MONEY originally AUTO_UNIQUE_VALUE => 11, # was AUTO_INCREMENT originally LOCAL_TYPE_NAME => 12, MINIMUM_SCALE => 13, MAXIMUM_SCALE => 14, SQL_DATA_TYPE => 15, SQL_DATETIME_SUB => 16, NUM_PREC_RADIX => 17, INTERVAL_PRECISION=> 18, }, [ 'VARCHAR', SQL_VARCHAR, undef, "'","'", undef,0, 1,1,0,0,0,undef,1,255, undef ], [ 'INTEGER', SQL_INTEGER, undef, "", "", undef,0, 0,1,0,0,0,undef,0, 0, 10 ], ]; More than one row may have the same value in the C field if there are different ways to spell the type name and/or there are variants of the type with different attributes (e.g., with and without C set, with and without C, etc). The rows are ordered by C first and then by how closely each type maps to the corresponding ODBC SQL data type, closest first. The meaning of the fields is described in the documentation for the L method. An 'index' hash is provided so you don't need to rely on index values defined above. However, using DBD::ODBC with some old ODBC drivers may return older names, shown as comments in the example above. Another issue with the index hash is that the lettercase of the keys is not defined. It is usually uppercase, as show here, but drivers may return names with any lettercase. Drivers are also free to return extra driver-specific columns of information - though it's recommended that they start at column index 50 to leave room for expansion of the DBI/ODBC specification. The type_info_all() method is not normally used directly. The L method provides a more usable and useful interface to the data. =head3 C @type_info = $dbh->type_info($data_type); Returns a list of hash references holding information about one or more variants of $data_type. The list is ordered by C first and then by how closely each type maps to the corresponding ODBC SQL data type, closest first. If called in a scalar context then only the first (best) element is returned. If $data_type is undefined or C, then the list will contain hashes for all data type variants supported by the database and driver. If $data_type is an array reference then C returns the information for the I type in the array that has any matches. The keys of the hash follow the same letter case conventions as the rest of the DBI (see L). The following uppercase items should always exist, though may be undef: =over 4 =item TYPE_NAME (string) Data type name for use in CREATE TABLE statements etc. =item DATA_TYPE (integer) SQL data type number. =item COLUMN_SIZE (integer) For numeric types, this is either the total number of digits (if the NUM_PREC_RADIX value is 10) or the total number of bits allowed in the column (if NUM_PREC_RADIX is 2). For string types, this is the maximum size of the string in characters. For date and interval types, this is the maximum number of characters needed to display the value. =item LITERAL_PREFIX (string) Characters used to prefix a literal. A typical prefix is "C<'>" for characters, or possibly "C<0x>" for binary values passed as hexadecimal. NULL (C) is returned for data types for which this is not applicable. =item LITERAL_SUFFIX (string) Characters used to suffix a literal. Typically "C<'>" for characters. NULL (C) is returned for data types where this is not applicable. =item CREATE_PARAMS (string) Parameter names for data type definition. For example, C for a C would be "C" if the DECIMAL type should be declared as CIC<)> where I and I are integer values. For a C it would be "C". NULL (C) is returned for data types for which this is not applicable. =item NULLABLE (integer) Indicates whether the data type accepts a NULL value: C<0> or an empty string = no, C<1> = yes, C<2> = unknown. =item CASE_SENSITIVE (boolean) Indicates whether the data type is case sensitive in collations and comparisons. =item SEARCHABLE (integer) Indicates how the data type can be used in a WHERE clause, as follows: 0 - Cannot be used in a WHERE clause 1 - Only with a LIKE predicate 2 - All comparison operators except LIKE 3 - Can be used in a WHERE clause with any comparison operator =item UNSIGNED_ATTRIBUTE (boolean) Indicates whether the data type is unsigned. NULL (C) is returned for data types for which this is not applicable. =item FIXED_PREC_SCALE (boolean) Indicates whether the data type always has the same precision and scale (such as a money type). NULL (C) is returned for data types for which this is not applicable. =item AUTO_UNIQUE_VALUE (boolean) Indicates whether a column of this data type is automatically set to a unique value whenever a new row is inserted. NULL (C) is returned for data types for which this is not applicable. =item LOCAL_TYPE_NAME (string) Localized version of the C for use in dialog with users. NULL (C) is returned if a localized name is not available (in which case C should be used). =item MINIMUM_SCALE (integer) The minimum scale of the data type. If a data type has a fixed scale, then C holds the same value. NULL (C) is returned for data types for which this is not applicable. =item MAXIMUM_SCALE (integer) The maximum scale of the data type. If a data type has a fixed scale, then C holds the same value. NULL (C) is returned for data types for which this is not applicable. =item SQL_DATA_TYPE (integer) This column is the same as the C column, except for interval and datetime data types. For interval and datetime data types, the C field will return C or C, and the C field below will return the subcode for the specific interval or datetime data type. If this field is NULL, then the driver does not support or report on interval or datetime subtypes. =item SQL_DATETIME_SUB (integer) For interval or datetime data types, where the C field above is C or C, this field will hold the I for the specific interval or datetime data type. Otherwise it will be NULL (C). Although not mentioned explicitly in the standards, it seems there is a simple relationship between these values: DATA_TYPE == (10 * SQL_DATA_TYPE) + SQL_DATETIME_SUB =item NUM_PREC_RADIX (integer) The radix value of the data type. For approximate numeric types, C contains the value 2 and C holds the number of bits. For exact numeric types, C contains the value 10 and C holds the number of decimal digits. NULL (C) is returned either for data types for which this is not applicable or if the driver cannot report this information. =item INTERVAL_PRECISION (integer) The interval leading precision for interval types. NULL is returned either for data types for which this is not applicable or if the driver cannot report this information. =back For example, to find the type name for the fields in a select statement you can do: @names = map { scalar $dbh->type_info($_)->{TYPE_NAME} } @{ $sth->{TYPE} } Since DBI and ODBC drivers vary in how they map their types into the ISO standard types you may need to search for more than one type. Here's an example looking for a usable type to store a date: $my_date_type = $dbh->type_info( [ SQL_DATE, SQL_TIMESTAMP ] ); Similarly, to more reliably find a type to store small integers, you could use a list starting with C, C, C, etc. See also L. =head3 C $sql = $dbh->quote($value); $sql = $dbh->quote($value, $data_type); Quote a string literal for use as a literal value in an SQL statement, by escaping any special characters (such as quotation marks) contained within the string and adding the required type of outer quotation marks. $sql = sprintf "SELECT foo FROM bar WHERE baz = %s", $dbh->quote("Don't"); For most database types, at least those that conform to SQL standards, quote would return C<'Don''t'> (including the outer quotation marks). For others it may return something like C<'Don\'t'> An undefined C<$value> value will be returned as the string C (without single quotation marks) to match how NULLs are represented in SQL. If C<$data_type> is supplied, it is used to try to determine the required quoting behaviour by using the information returned by L. As a special case, the standard numeric types are optimized to return C<$value> without calling C. Quote will probably I be able to deal with all possible input (such as binary data or data containing newlines), and is not related in any way with escaping or quoting shell meta-characters. It is valid for the quote() method to return an SQL expression that evaluates to the desired string. For example: $quoted = $dbh->quote("one\ntwo\0three") may return something like: CONCAT('one', CHAR(12), 'two', CHAR(0), 'three') The quote() method should I be used with L. =head3 C $sql = $dbh->quote_identifier( $name ); $sql = $dbh->quote_identifier( $catalog, $schema, $table, \%attr ); Quote an identifier (table name etc.) for use in an SQL statement, by escaping any special characters (such as double quotation marks) it contains and adding the required type of outer quotation marks. Undefined names are ignored and the remainder are quoted and then joined together, typically with a dot (C<.>) character. For example: $id = $dbh->quote_identifier( undef, 'Her schema', 'My table' ); would, for most database types, return C<"Her schema"."My table"> (including all the double quotation marks). If three names are supplied then the first is assumed to be a catalog name and special rules may be applied based on what L returns for SQL_CATALOG_NAME_SEPARATOR (41) and SQL_CATALOG_LOCATION (114). For example, for Oracle: $id = $dbh->quote_identifier( 'link', 'schema', 'table' ); would return C<"schema"."table"@"link">. =head3 C $imp_data = $dbh->take_imp_data; Leaves the $dbh in an almost dead, zombie-like, state and returns a binary string of raw implementation data from the driver which describes the current database connection. Effectively it detaches the underlying database API connection data from the DBI handle. After calling take_imp_data(), all other methods except C will generate a warning and return undef. Why would you want to do this? You don't, forget I even mentioned it. Unless, that is, you're implementing something advanced like a multi-threaded connection pool. See L. The returned $imp_data can be passed as a C attribute to a later connect() call, even in a separate thread in the same process, where the driver can use it to 'adopt' the existing connection that the implementation data was taken from. Some things to keep in mind... B<*> the $imp_data holds the only reference to the underlying database API connection data. That connection is still 'live' and won't be cleaned up properly unless the $imp_data is used to create a new $dbh which is then allowed to disconnect() normally. B<*> using the same $imp_data to create more than one other new $dbh at a time may well lead to unpleasant problems. Don't do that. Any child statement handles are effectively destroyed when take_imp_data() is called. The C method was added in DBI 1.36 but wasn't useful till 1.49. =head2 Database Handle Attributes This section describes attributes specific to database handles. Changes to these database handle attributes do not affect any other existing or future database handles. Attempting to set or get the value of an unknown attribute generates a warning, except for private driver-specific attributes (which all have names starting with a lowercase letter). Example: $h->{AutoCommit} = ...; # set/write ... = $h->{AutoCommit}; # get/read =head3 C Type: boolean If true, then database changes cannot be rolled-back (undone). If false, then database changes automatically occur within a "transaction", which must either be committed or rolled back using the C or C methods. Drivers should always default to C mode (an unfortunate choice largely forced on the DBI by ODBC and JDBC conventions.) Attempting to set C to an unsupported value is a fatal error. This is an important feature of the DBI. Applications that need full transaction behaviour can set C<$dbh-E{AutoCommit} = 0> (or set C to 0 via L) without having to check that the value was assigned successfully. For the purposes of this description, we can divide databases into three categories: Databases which don't support transactions at all. Databases in which a transaction is always active. Databases in which a transaction must be explicitly started (C<'BEGIN WORK'>). B<* Databases which don't support transactions at all> For these databases, attempting to turn C off is a fatal error. C and C both issue warnings about being ineffective while C is in effect. B<* Databases in which a transaction is always active> These are typically mainstream commercial relational databases with "ANSI standard" transaction behaviour. If C is off, then changes to the database won't have any lasting effect unless L is called (but see also L). If L is called then any changes since the last commit are undone. If C is on, then the effect is the same as if the DBI called C automatically after every successful database operation. So calling C or C explicitly while C is on would be ineffective because the changes would have already been committed. Changing C from off to on will trigger a L. For databases which don't support a specific auto-commit mode, the driver has to commit each statement automatically using an explicit C after it completes successfully (and roll it back using an explicit C if it fails). The error information reported to the application will correspond to the statement which was executed, unless it succeeded and the commit or rollback failed. B<* Databases in which a transaction must be explicitly started> For these databases, the intention is to have them act like databases in which a transaction is always active (as described above). To do this, the driver will automatically begin an explicit transaction when C is turned off, or after a L or L (or when the application issues the next database operation after one of those events). In this way, the application does not have to treat these databases as a special case. See L, L and L for other important notes about transactions. =head3 C Type: handle Holds the handle of the parent driver. The only recommended use for this is to find the name of the driver using: $dbh->{Driver}->{Name} =head3 C Type: string Holds the "name" of the database. Usually (and recommended to be) the same as the "C" string used to connect to the database, but with the leading "C" removed. =head3 C Type: string, read-only Returns the statement string passed to the most recent L or L method called in this database handle, even if that method failed. This is especially useful where C is enabled and the exception handler checks $@ and sees that a 'prepare' method call failed. =head3 C Type: integer A hint to the driver indicating the size of the local row cache that the application would like the driver to use for future C 1 - Disable the local row cache >1 - Cache this many rows <0 - Cache as many rows that will fit into this much memory for each C statement, C returns the number of rows affected, if known. If no rows were affected, then C returns "C<0E0>", which Perl will treat as 0 but will regard as true. Note that it is I an error for no rows to be affected by a statement. If the number of rows affected is not known, then C returns -1. For C statement by checking if C<$sth-E{NUM_OF_FIELDS}> is greater than zero after calling C. If any arguments are given, then C will effectively call L for each value before executing the statement. Values bound in this way are usually treated as C types unless the driver can determine the correct type (which is rare), or unless C (or C) has already been used to specify the type. Note that passing C an empty array is the same as passing no arguments at all, which will execute the statement with previously bound values. That's probably not what you want. If execute() is called on a statement handle that's still active ($sth->{Active} is true) then it should effectively call finish() to tidy up the previous execution results before starting this new execution. =head3 C $tuples = $sth->execute_array(\%attr) or die $sth->errstr; $tuples = $sth->execute_array(\%attr, @bind_values) or die $sth->errstr; ($tuples, $rows) = $sth->execute_array(\%attr) or die $sth->errstr; ($tuples, $rows) = $sth->execute_array(\%attr, @bind_values) or die $sth->errstr; Execute the prepared statement once for each parameter tuple (group of values) provided either in the @bind_values, or by prior calls to L, or via a reference passed in \%attr. When called in scalar context the execute_array() method returns the number of tuples executed, or C if an error occurred. Like execute(), a successful execute_array() always returns true regardless of the number of tuples executed, even if it's zero. If there were any errors the ArrayTupleStatus array can be used to discover which tuples failed and with what errors. When called in list context the execute_array() method returns two scalars; $tuples is the same as calling execute_array() in scalar context and $rows is the number of rows affected for each tuple, if available or -1 if the driver cannot determine this. NOTE, some drivers cannot determine the number of rows affected per tuple but can provide the number of rows affected for the batch. If you are doing an update operation the returned rows affected may not be what you expect if, for instance, one or more of the tuples affected the same row multiple times. Some drivers may not yet support list context, in which case $rows will be undef, or may not be able to provide the number of rows affected when performing this batch operation, in which case $rows will be -1. Bind values for the tuples to be executed may be supplied row-wise by an C attribute, or else column-wise in the C<@bind_values> argument, or else column-wise by prior calls to L. Where column-wise binding is used (via the C<@bind_values> argument or calls to bind_param_array()) the maximum number of elements in any one of the bound value arrays determines the number of tuples executed. Placeholders with fewer values in their parameter arrays are treated as if padded with undef (NULL) values. If a scalar value is bound, instead of an array reference, it is treated as a I length array with all elements having the same value. It does not influence the number of tuples executed, so if all bound arrays have zero elements then zero tuples will be executed. If I bound values are scalars then one tuple will be executed, making execute_array() act just like execute(). The C attribute can be used to specify a reference to a subroutine that will be called to provide the bind values for each tuple execution. The subroutine should return an reference to an array which contains the appropriate number of bind values, or return an undef if there is no more data to execute. As a convenience, the C attribute can also be used to specify a statement handle. In which case the fetchrow_arrayref() method will be called on the given statement handle in order to provide the bind values for each tuple execution. The values specified via bind_param_array() or the @bind_values parameter may be either scalars, or arrayrefs. If any C<@bind_values> are given, then C will effectively call L for each value before executing the statement. Values bound in this way are usually treated as C types unless the driver can determine the correct type (which is rare), or unless C, C, C, or C has already been used to specify the type. See L for details. The C attribute can be used to specify a reference to an array which will receive the execute status of each executed parameter tuple. Note the C attribute was mandatory until DBI 1.38. For tuples which are successfully executed, the element at the same ordinal position in the status array is the resulting rowcount (or -1 if unknown). If the execution of a tuple causes an error, then the corresponding status array element will be set to a reference to an array containing L, L and L set by the failed execution. If B tuple execution returns an error, C will return C. In that case, the application should inspect the status array to determine which parameter tuples failed. Some databases may not continue executing tuples beyond the first failure. In this case the status array will either hold fewer elements, or the elements beyond the failure will be undef. If all parameter tuples are successfully executed, C returns the number tuples executed. If no tuples were executed, then execute_array() returns "C<0E0>", just like execute() does, which Perl will treat as 0 but will regard as true. For example: $sth = $dbh->prepare("INSERT INTO staff (first_name, last_name) VALUES (?, ?)"); my $tuples = $sth->execute_array( { ArrayTupleStatus => \my @tuple_status }, \@first_names, \@last_names, ); if ($tuples) { print "Successfully inserted $tuples records\n"; } else { for my $tuple (0..@last_names-1) { my $status = $tuple_status[$tuple]; $status = [0, "Skipped"] unless defined $status; next unless ref $status; printf "Failed to insert (%s, %s): %s\n", $first_names[$tuple], $last_names[$tuple], $status->[1]; } } Support for data returning statements such as SELECT is driver-specific and subject to change. At present, the default implementation provided by DBI only supports non-data returning statements. Transaction semantics when using array binding are driver and database specific. If C is on, the default DBI implementation will cause each parameter tuple to be individually committed (or rolled back in the event of an error). If C is off, the application is responsible for explicitly committing the entire set of bound parameter tuples. Note that different drivers and databases may have different behaviours when some parameter tuples cause failures. In some cases, the driver or database may automatically rollback the effect of all prior parameter tuples that succeeded in the transaction; other drivers or databases may retain the effect of prior successfully executed parameter tuples. Be sure to check your driver and database for its specific behaviour. Note that, in general, performance will usually be better with C turned off, and using explicit C after each C call. The C method was added in DBI 1.22, and ArrayTupleFetch was added in 1.36. =head3 C $tuples = $sth->execute_for_fetch($fetch_tuple_sub); $tuples = $sth->execute_for_fetch($fetch_tuple_sub, \@tuple_status); ($tuples, $rows) = $sth->execute_for_fetch($fetch_tuple_sub); ($tuples, $rows) = $sth->execute_for_fetch($fetch_tuple_sub, \@tuple_status); The execute_for_fetch() method is used to perform bulk operations and although it is most often used via the execute_array() method you can use it directly. The main difference between execute_array and execute_for_fetch is the former does column or row-wise binding and the latter uses row-wise binding. The fetch subroutine, referenced by $fetch_tuple_sub, is expected to return a reference to an array (known as a 'tuple') or undef. The execute_for_fetch() method calls $fetch_tuple_sub, without any parameters, until it returns a false value. Each tuple returned is used to provide bind values for an $sth->execute(@$tuple) call. In scalar context execute_for_fetch() returns C if there were any errors and the number of tuples executed otherwise. Like execute() and execute_array() a zero is returned as "0E0" so execute_for_fetch() is only false on error. If there were any errors the @tuple_status array can be used to discover which tuples failed and with what errors. When called in list context execute_for_fetch() returns two scalars; $tuples is the same as calling execute_for_fetch() in scalar context and $rows is the sum of the number of rows affected for each tuple, if available or -1 if the driver cannot determine this. If you are doing an update operation the returned rows affected may not be what you expect if, for instance, one or more of the tuples affected the same row multiple times. Some drivers may not yet support list context, in which case $rows will be undef, or may not be able to provide the number of rows affected when performing this batch operation, in which case $rows will be -1. If \@tuple_status is passed then the execute_for_fetch method uses it to return status information. The tuple_status array holds one element per tuple. If the corresponding execute() did not fail then the element holds the return value from execute(), which is typically a row count. If the execute() did fail then the element holds a reference to an array containing ($sth->err, $sth->errstr, $sth->state). If the driver detects an error that it knows means no further tuples can be executed then it may return, with an error status, even though $fetch_tuple_sub may still have more tuples to be executed. Although each tuple returned by $fetch_tuple_sub is effectively used to call $sth->execute(@$tuple_array_ref) the exact timing may vary. Drivers are free to accumulate sets of tuples to pass to the database server in bulk group operations for more efficient execution. However, the $fetch_tuple_sub is specifically allowed to return the same array reference each time (which is what fetchrow_arrayref() usually does). For example: my $sel = $dbh1->prepare("select foo, bar from table1"); $sel->execute; my $ins = $dbh2->prepare("insert into table2 (foo, bar) values (?,?)"); my $fetch_tuple_sub = sub { $sel->fetchrow_arrayref }; my @tuple_status; $rc = $ins->execute_for_fetch($fetch_tuple_sub, \@tuple_status); my @errors = grep { ref $_ } @tuple_status; Similarly, if you already have an array containing the data rows to be processed you'd use a subroutine to shift off and return each array ref in turn: $ins->execute_for_fetch( sub { shift @array_of_arrays }, \@tuple_status); The C method was added in DBI 1.38. =head3 C $rv = $sth->last_insert_id(); $rv = $sth->last_insert_id($catalog, $schema, $table, $field); $rv = $sth->last_insert_id($catalog, $schema, $table, $field, \%attr); Returns a value 'identifying' the row inserted by last execution of the statement C<$sth>, if possible. For some drivers the value may be 'identifying' the row inserted by the last executed statement, not by C<$sth>. See database handle method last_insert_id for all details. The C statement method was added in DBI 1.642. =head3 C $ary_ref = $sth->fetchrow_arrayref; $ary_ref = $sth->fetch; # alias Fetches the next row of data and returns a reference to an array holding the field values. Null fields are returned as C values in the array. This is the fastest way to fetch data, particularly if used with C<$sth-Ebind_columns>. If there are no more rows or if an error occurs, then C returns an C. You should check C<$sth-Eerr> afterwards (or use the C attribute) to discover if the C returned was due to an error. Note that the same array reference is returned for each fetch, so don't store the reference and then use it after a later fetch. Also, the elements of the array are also reused for each row, so take care if you want to take a reference to an element. See also L. =head3 C @ary = $sth->fetchrow_array; An alternative to C. Fetches the next row of data and returns it as a list containing the field values. Null fields are returned as C values in the list. If there are no more rows or if an error occurs, then C returns an empty list. You should check C<$sth-Eerr> afterwards (or use the C attribute) to discover if the empty list returned was due to an error. If called in a scalar context for a statement handle that has more than one column, it is undefined whether the driver will return the value of the first column or the last. So don't do that. Also, in a scalar context, an C is returned if there are no more rows or if an error occurred. That C can't be distinguished from an C returned because the first field value was NULL. For these reasons you should exercise some caution if you use C in a scalar context. =head3 C $hash_ref = $sth->fetchrow_hashref; $hash_ref = $sth->fetchrow_hashref($name); An alternative to C. Fetches the next row of data and returns it as a reference to a hash containing field name and field value pairs. Null fields are returned as C values in the hash. If there are no more rows or if an error occurs, then C returns an C. You should check C<$sth-Eerr> afterwards (or use the C attribute) to discover if the C returned was due to an error. The optional C<$name> parameter specifies the name of the statement handle attribute. For historical reasons it defaults to "C", however using either "C" or "C" is recommended for portability. The keys of the hash are the same names returned by C<$sth-E{$name}>. If more than one field has the same name, there will only be one entry in the returned hash for those fields, so statements like "C" or "C statement, the driver will automatically call C for you. So you should I call it explicitly I when you know that you've not fetched all the data from a statement handle I the handle won't be destroyed soon. The most common example is when you only want to fetch just one row, but in that case the C methods are usually better anyway. Consider a query like: SELECT foo FROM table WHERE bar=? ORDER BY baz on a very large table. When executed, the database server will have to use temporary buffer space to store the sorted rows. If, after executing the handle and selecting just a few rows, the handle won't be re-executed for some time and won't be destroyed, the C method can be used to tell the server that the buffer space can be freed. Calling C resets the L attribute for the statement. It may also make some statement handle attributes (such as C and C) unavailable if they have not already been accessed (and thus cached). The C method does not affect the transaction status of the database connection. It has nothing to do with transactions. It's mostly an internal "housekeeping" method that is rarely needed. See also L and the L attribute. The C method should have been called C. =head3 C $rv = $sth->rows; Returns the number of rows affected by the last row affecting command, or -1 if the number of rows is not known or not available. Generally, you can only rely on a row count after a I-C statement. For C statements is not recommended. One alternative method to get a row count for a C statement. Column numbers count up from 1. You do not need to bind output columns in order to fetch data. For maximum portability between drivers, bind_col() should be called after execute() and not before. See also L for an example. The binding is performed at a low level using Perl aliasing. Whenever a row is fetched from the database $var_to_bind appears to be automatically updated simply because it now refers to the same memory location as the corresponding column value. This makes using bound variables very efficient. Binding a tied variable doesn't work, currently. The L method performs a similar, but opposite, function for input variables. B The C<\%attr> parameter can be used to hint at the data type formatting the column should have. For example, you can use: $sth->bind_col(1, undef, { TYPE => SQL_DATETIME }); to specify that you'd like the column (which presumably is some kind of datetime type) to be returned in the standard format for SQL_DATETIME, which is 'YYYY-MM-DD HH:MM:SS', rather than the native formatting the database would normally use. There's no $var_to_bind in that example to emphasize the point that bind_col() works on the underlying column and not just a particular bound variable. As a short-cut for the common case, the data type can be passed directly, in place of the C<\%attr> hash reference. This example is equivalent to the one above: $sth->bind_col(1, undef, SQL_DATETIME); The C value indicates the standard (non-driver-specific) type for this parameter. To specify the driver-specific type, the driver may support a driver-specific attribute, such as C<{ ora_type =E 97 }>. The SQL_DATETIME and other related constants can be imported using use DBI qw(:sql_types); See L for more information. Few drivers support specifying a data type via a C call (most will simply ignore the data type). Fewer still allow the data type to be altered once set. If you do set a column type the type should remain sticky through further calls to bind_col for the same column if the type is not overridden (this is important for instance when you are using a slice in fetchall_arrayref). The TYPE attribute for bind_col() was first specified in DBI 1.41. From DBI 1.611, drivers can use the C attribute to attempt to cast the bound scalar to a perl type which more closely matches C. At present DBI supports C, C and C. See L for details of how types are cast. B The C<\%attr> parameter may also contain the following attributes: =over =item C If a C attribute is passed to bind_col, then the driver will attempt to change the bound perl scalar to match the type more closely. If the bound value cannot be cast to the requested C then by default it is left untouched and no error is generated. If you specify C as 1 and the cast fails, this will generate an error. This attribute was first added in DBI 1.611. When 1.611 was released few drivers actually supported this attribute but DBD::Oracle and DBD::ODBC should from versions 1.24. =item C When the C attribute is passed to L and the driver successfully casts the bound perl scalar to a non-string type then if C is set to 1, the string portion of the scalar will be discarded. By default, C is not set. This attribute was first added in DBI 1.611. When 1.611 was released few drivers actually supported this attribute but DBD::Oracle and DBD::ODBC should from versions 1.24. =back =head3 C $rc = $sth->bind_columns(@list_of_refs_to_vars_to_bind); Calls L for each column of the C statement. If it doesn't then C will bind the elements given, up to the number of columns, and then return an error. For maximum portability between drivers, bind_columns() should be called after execute() and not before. For example: $dbh->{RaiseError} = 1; # do this, or check every call for errors $sth = $dbh->prepare(q{ SELECT region, sales FROM sales_by_region }); $sth->execute; my ($region, $sales); # Bind Perl variables to columns: $rv = $sth->bind_columns(\$region, \$sales); # you can also use Perl's \(...) syntax (see perlref docs): # $sth->bind_columns(\($region, $sales)); # Column binding is the most efficient way to fetch data while ($sth->fetch) { print "$region: $sales\n"; } For compatibility with old scripts, the first parameter will be ignored if it is C or a hash reference. Here's a more fancy example that binds columns to the values I a hash (thanks to H.Merijn Brand): $sth->execute; my %row; $sth->bind_columns( \( @row{ @{$sth->{NAME_lc} } } )); while ($sth->fetch) { print "$row{region}: $row{sales}\n"; } =head3 C $rows = $sth->dump_results($maxlen, $lsep, $fsep, $fh); Fetches all the rows from C<$sth>, calls C for each row, and prints the results to C<$fh> (defaults to C) separated by C<$lsep> (default C<"\n">). C<$fsep> defaults to C<", "> and C<$maxlen> defaults to 35. This method is designed as a handy utility for prototyping and testing queries. Since it uses L to format and edit the string for reading by humans, it is not recommended for data transfer applications. =head2 Statement Handle Attributes This section describes attributes specific to statement handles. Most of these attributes are read-only. Changes to these statement handle attributes do not affect any other existing or future statement handles. Attempting to set or get the value of an unknown attribute generates a warning, except for private driver specific attributes (which all have names starting with a lowercase letter). Example: ... = $h->{NUM_OF_FIELDS}; # get/read Some drivers cannot provide valid values for some or all of these attributes until after C<$sth-Eexecute> has been successfully called. Typically the attribute will be C in these situations. Some attributes, like NAME, are not appropriate to some types of statement, like SELECT. Typically the attribute will be C in these situations. For drivers which support stored procedures and multiple result sets (see L) these attributes relate to the I result set. See also L to learn more about the effect it may have on some attributes. =head3 C Type: integer, read-only Number of fields (columns) in the data the prepared statement may return. Statements that don't return rows of data, like C and C set C to 0 (though it may be undef in some drivers). =head3 C Type: integer, read-only The number of parameters (placeholders) in the prepared statement. See SUBSTITUTION VARIABLES below for more details. =head3 C Type: array-ref, read-only Returns a reference to an array of field names for each column. The names may contain spaces but should not be truncated or have any trailing space. Note that the names have the letter case (upper, lower or mixed) as returned by the driver being used. Portable applications should use L or L. print "First column name: $sth->{NAME}->[0]\n"; Also note that the name returned for (aggregate) functions like C or C is determined by the database server and not by C or the C backend. =head3 C Type: array-ref, read-only Like C but always returns lowercase names. =head3 C Type: array-ref, read-only Like C but always returns uppercase names. =head3 C Type: hash-ref, read-only =head3 C Type: hash-ref, read-only =head3 C Type: hash-ref, read-only The C, C, and C attributes return column name information as a reference to a hash. The keys of the hash are the names of the columns. The letter case of the keys corresponds to the letter case returned by the C, C, and C attributes respectively (as described above). The value of each hash entry is the perl index number of the corresponding column (counting from 0). For example: $sth = $dbh->prepare("select Id, Name from table"); $sth->execute; @row = $sth->fetchrow_array; print "Name $row[ $sth->{NAME_lc_hash}{name} ]\n"; =head3 C Type: array-ref, read-only Returns a reference to an array of integer values for each column. The value indicates the data type of the corresponding column. The values correspond to the international standards (ANSI X3.135 and ISO/IEC 9075) which, in general terms, means ODBC. Driver-specific types that don't exactly match standard types should generally return the same values as an ODBC driver supplied by the makers of the database. That might include private type numbers in ranges the vendor has officially registered with the ISO working group: ftp://sqlstandards.org/SC32/SQL_Registry/ Where there's no vendor-supplied ODBC driver to be compatible with, the DBI driver can use type numbers in the range that is now officially reserved for use by the DBI: -9999 to -9000. All possible values for C should have at least one entry in the output of the C method (see L). =head3 C Type: array-ref, read-only Returns a reference to an array of integer values for each column. For numeric columns, the value is the maximum number of digits (without considering a sign character or decimal point). Note that the "display size" for floating point types (REAL, FLOAT, DOUBLE) can be up to 7 characters greater than the precision (for the sign + decimal point + the letter E + a sign + 2 or 3 digits). For any character type column the value is the OCTET_LENGTH, in other words the number of bytes, not characters. (More recent standards refer to this as COLUMN_SIZE but we stick with PRECISION for backwards compatibility.) =head3 C Type: array-ref, read-only Returns a reference to an array of integer values for each column. NULL (C) values indicate columns where scale is not applicable. =head3 C Type: array-ref, read-only Returns a reference to an array indicating the possibility of each column returning a null. Possible values are C<0> (or an empty string) = no, C<1> = yes, C<2> = unknown. print "First column may return NULL\n" if $sth->{NULLABLE}->[0]; =head3 C Type: string, read-only Returns the name of the cursor associated with the statement handle, if available. If not available or if the database driver does not support the C<"where current of ..."> SQL syntax, then it returns C. =head3 C Type: dbh, read-only Returns the parent $dbh of the statement handle. =head3 C Type: string, read-only Returns the statement string passed to the L method. =head3 C Type: hash ref, read-only Returns a reference to a hash containing the values currently bound to placeholders. The keys of the hash are the 'names' of the placeholders, typically integers starting at 1. Returns undef if not supported by the driver. See L for an example of how this is used. * Keys: If the driver supports C but no values have been bound yet then the driver should return a hash with placeholders names in the keys but all the values undef, but some drivers may return a ref to an empty hash because they can't pre-determine the names. It is possible that the keys in the hash returned by C are not exactly the same as those implied by the prepared statement. For example, DBD::Oracle translates 'C' placeholders into 'C<:pN>' where N is a sequence number starting at 1. * Values: It is possible that the values in the hash returned by C are not I the same as those passed to bind_param() or execute(). The driver may have slightly modified values in some way based on the TYPE the value was bound with. For example a floating point value bound as an SQL_INTEGER type may be returned as an integer. The values returned by C can be passed to another bind_param() method with the same TYPE and will be seen by the database as the same value. See also L below. The C attribute was added in DBI 1.28. =head3 C Type: hash ref, read-only Returns a reference to a hash containing the type information currently bound to placeholders. Returns undef if not supported by the driver. * Keys: See L above. * Values: The hash values are hashrefs of type information in the same form as that passed to the various bind_param() methods (See L for the format and values). It is possible that the values in the hash returned by C are not exactly the same as those passed to bind_param() or execute(). Param attributes specified using the abbreviated form, like this: $sth->bind_param(1, SQL_INTEGER); are returned in the expanded form, as if called like this: $sth->bind_param(1, { TYPE => SQL_INTEGER }); The driver may have modified the type information in some way based on the bound values, other hints provided by the prepare()'d SQL statement, or alternate type mappings required by the driver or target database system. The driver may also add private keys (with names beginning with the drivers reserved prefix, e.g., odbc_xxx). * Example: The keys and values in the returned hash can be passed to the various bind_param() methods to effectively reproduce a previous param binding. For example: # assuming $sth1 is a previously prepared statement handle my $sth2 = $dbh->prepare( $sth1->{Statement} ); my $ParamValues = $sth1->{ParamValues} || {}; my $ParamTypes = $sth1->{ParamTypes} || {}; $sth2->bind_param($_, $ParamValues->{$_}, $ParamTypes->{$_}) for keys %{ {%$ParamValues, %$ParamTypes} }; $sth2->execute(); The C attribute was added in DBI 1.49. Implementation is the responsibility of individual drivers; the DBI layer default implementation simply returns undef. =head3 C Type: hash ref, read-only Returns a reference to a hash containing the values currently bound to placeholders with L or L. The keys of the hash are the 'names' of the placeholders, typically integers starting at 1. Returns undef if not supported by the driver or no arrays of parameters are bound. Each key value is an array reference containing a list of the bound parameters for that column. For example: $sth = $dbh->prepare("INSERT INTO staff (id, name) values (?,?)"); $sth->execute_array({},[1,2], ['fred','dave']); if ($sth->{ParamArrays}) { foreach $param (keys %{$sth->{ParamArrays}}) { printf "Parameters for %s : %s\n", $param, join(",", @{$sth->{ParamArrays}->{$param}}); } } It is possible that the values in the hash returned by C are not I the same as those passed to L or L. The driver may have slightly modified values in some way based on the TYPE the value was bound with. For example a floating point value bound as an SQL_INTEGER type may be returned as an integer. It is also possible that the keys in the hash returned by C are not exactly the same as those implied by the prepared statement. For example, DBD::Oracle translates 'C' placeholders into 'C<:pN>' where N is a sequence number starting at 1. =head3 C Type: integer, read-only If the driver supports a local row cache for C statement handle that's a child of the same database handle. A typical way round this is to connect the the database twice and use one connection for C statement (unlike other data types), some special handling is required. In this situation, the value of the C<$h-E{LongReadLen}> attribute is used to determine how much buffer space to allocate when fetching such fields. The C<$h-E{LongTruncOk}> attribute is used to determine how to behave if a fetched value can't fit into the buffer. See the description of L for more information. When trying to insert long or binary values, placeholders should be used since there are often limits on the maximum size of an C statement and the L method generally can't cope with binary data. See L. =head2 Simple Examples Here's a complete example program to select and fetch some data: my $data_source = "dbi::DriverName:db_name"; my $dbh = DBI->connect($data_source, $user, $password) or die "Can't connect to $data_source: $DBI::errstr"; my $sth = $dbh->prepare( q{ SELECT name, phone FROM mytelbook }) or die "Can't prepare statement: $DBI::errstr"; my $rc = $sth->execute or die "Can't execute statement: $DBI::errstr"; print "Query will return $sth->{NUM_OF_FIELDS} fields.\n\n"; print "Field names: @{ $sth->{NAME} }\n"; while (($name, $phone) = $sth->fetchrow_array) { print "$name: $phone\n"; } # check for problems which may have terminated the fetch early die $sth->errstr if $sth->err; $dbh->disconnect; Here's a complete example program to insert some data from a file. (This example uses C to avoid needing to check each call). my $dbh = DBI->connect("dbi:DriverName:db_name", $user, $password, { RaiseError => 1, AutoCommit => 0 }); my $sth = $dbh->prepare( q{ INSERT INTO table (name, phone) VALUES (?, ?) }); open FH, ") { chomp; my ($name, $phone) = split /,/; $sth->execute($name, $phone); } close FH; $dbh->commit; $dbh->disconnect; Here's how to convert fetched NULLs (undefined values) into empty strings: while($row = $sth->fetchrow_arrayref) { # this is a fast and simple way to deal with nulls: foreach (@$row) { $_ = '' unless defined } print "@$row\n"; } The C style quoting used in these examples avoids clashing with quotes that may be used in the SQL statement. Use the double-quote like C operator if you want to interpolate variables into the string. See L for more details. =head2 Threads and Thread Safety Perl 5.7 and later support a new threading model called iThreads. (The old "5.005 style" threads are not supported by the DBI.) In the iThreads model each thread has its own copy of the perl interpreter. When a new thread is created the original perl interpreter is 'cloned' to create a new copy for the new thread. If the DBI and drivers are loaded and handles created before the thread is created then it will get a cloned copy of the DBI, the drivers and the handles. However, the internal pointer data within the handles will refer to the DBI and drivers in the original interpreter. Using those handles in the new interpreter thread is not safe, so the DBI detects this and croaks on any method call using handles that don't belong to the current thread (except for DESTROY). Because of this (possibly temporary) restriction, newly created threads must make their own connections to the database. Handles can't be shared across threads. But BEWARE, some underlying database APIs (the code the DBD driver uses to talk to the database, often supplied by the database vendor) are not thread safe. If it's not thread safe, then allowing more than one thread to enter the code at the same time may cause subtle/serious problems. In some cases allowing more than one thread to enter the code, even if I at the same time, can cause problems. You have been warned. Using DBI with perl threads is not yet recommended for production environments. For more information see L Note: There is a bug in perl 5.8.2 when configured with threads and debugging enabled (bug #24463) which causes a DBI test to fail. =head2 Signal Handling and Canceling Operations [The following only applies to systems with unix-like signal handling. I'd welcome additions for other systems, especially Windows.] The first thing to say is that signal handling in Perl versions less than 5.8 is I safe. There is always a small risk of Perl crashing and/or core dumping when, or after, handling a signal because the signal could arrive and be handled while internal data structures are being changed. If the signal handling code used those same internal data structures it could cause all manner of subtle and not-so-subtle problems. The risk was reduced with 5.4.4 but was still present in all perls up through 5.8.0. Beginning in perl 5.8.0 perl implements 'safe' signal handling if your system has the POSIX sigaction() routine. Now when a signal is delivered perl just makes a note of it but does I run the %SIG handler. The handling is 'deferred' until a 'safe' moment. Although this change made signal handling safe, it also lead to a problem with signals being deferred for longer than you'd like. If a signal arrived while executing a system call, such as waiting for data on a network connection, the signal is noted and then the system call that was executing returns with an EINTR error code to indicate that it was interrupted. All fine so far. The problem comes when the code that made the system call sees the EINTR code and decides it's going to call it again. Perl doesn't do that, but database code sometimes does. If that happens then the signal handler doesn't get called until later. Maybe much later. Fortunately there are ways around this which we'll discuss below. Unfortunately they make signals unsafe again. The two most common uses of signals in relation to the DBI are for canceling operations when the user types Ctrl-C (interrupt), and for implementing a timeout using C and C<$SIG{ALRM}>. =over 4 =item Cancel The DBI provides a C method for statement handles. The C method should abort the current operation and is designed to be called from a signal handler. For example: $SIG{INT} = sub { $sth->cancel }; However, few drivers implement this (the DBI provides a default method that just returns C) and, even if implemented, there is still a possibility that the statement handle, and even the parent database handle, will not be usable afterwards. If C returns true, then it has successfully invoked the database engine's own cancel function. If it returns false, then C failed. If it returns C, then the database driver does not have cancel implemented - very few do. =item Timeout The traditional way to implement a timeout is to set C<$SIG{ALRM}> to refer to some code that will be executed when an ALRM signal arrives and then to call alarm($seconds) to schedule an ALRM signal to be delivered $seconds in the future. For example: my $failed; eval { local $SIG{ALRM} = sub { die "TIMEOUT\n" }; # N.B. \n required eval { alarm($seconds); ... code to execute with timeout here (which may die) ... 1; } or $failed = 1; # outer eval catches alarm that might fire JUST before this alarm(0) alarm(0); # cancel alarm (if code ran fast) die "$@" if $failed; 1; } or $failed = 1; if ( $failed ) { if ( defined $@ and $@ eq "TIMEOUT\n" ) { ... } else { ... } # some other error } The first (outer) eval is used to avoid the unlikely but possible chance that the "code to execute" dies and the alarm fires before it is cancelled. Without the outer eval, if this happened your program will die if you have no ALRM handler or a non-local alarm handler will be called. Unfortunately, as described above, this won't always work as expected, depending on your perl version and the underlying database code. With Oracle for instance (DBD::Oracle), if the system which hosts the database is down the DBI->connect() call will hang for several minutes before returning an error. =back The solution on these systems is to use the C routine to gain low level access to how the signal handler is installed. The code would look something like this (for the DBD-Oracle connect()): use POSIX qw(:signal_h); my $mask = POSIX::SigSet->new( SIGALRM ); # signals to mask in the handler my $action = POSIX::SigAction->new( sub { die "connect timeout\n" }, # the handler code ref $mask, # not using (perl 5.8.2 and later) 'safe' switch or sa_flags ); my $oldaction = POSIX::SigAction->new(); sigaction( SIGALRM, $action, $oldaction ); my $dbh; my $failed; eval { eval { alarm(5); # seconds before time out $dbh = DBI->connect("dbi:Oracle:$dsn" ... ); 1; } or $failed = 1; alarm(0); # cancel alarm (if connect worked fast) die "$@\n" if $failed; # connect died 1; } or $failed = 1; sigaction( SIGALRM, $oldaction ); # restore original signal handler if ( $failed ) { if ( defined $@ and $@ eq "connect timeout\n" ) {...} else { # connect died } } See previous example for the reasoning around the double eval. Similar techniques can be used for canceling statement execution. Unfortunately, this solution is somewhat messy, and it does I work with perl versions less than perl 5.8 where C appears to be broken. For a cleaner implementation that works across perl versions, see Lincoln Baxter's Sys::SigAction module at L. The documentation for Sys::SigAction includes an longer discussion of this problem, and a DBD::Oracle test script. Be sure to read all the signal handling sections of the L manual. And finally, two more points to keep firmly in mind. Firstly, remember that what we've done here is essentially revert to old style I handling of these signals. So do as little as possible in the handler. Ideally just die(). Secondly, the handles in use at the time the signal is handled may not be safe to use afterwards. =head2 Subclassing the DBI DBI can be subclassed and extended just like any other object oriented module. Before we talk about how to do that, it's important to be clear about the various DBI classes and how they work together. By default C<$dbh = DBI-Econnect(...)> returns a $dbh blessed into the C class. And the C<$dbh-Eprepare> method returns an $sth blessed into the C class (actually it simply changes the last four characters of the calling handle class to be C<::st>). The leading 'C' is known as the 'root class' and the extra 'C<::db>' or 'C<::st>' are the 'handle type suffixes'. If you want to subclass the DBI you'll need to put your overriding methods into the appropriate classes. For example, if you want to use a root class of C and override the do(), prepare() and execute() methods, then your do() and prepare() methods should be in the C class and the execute() method should be in the C class. To setup the inheritance hierarchy the @ISA variable in C should include C and the @ISA variable in C should include C. The C root class itself isn't currently used for anything visible and so, apart from setting @ISA to include C, it can be left empty. So, having put your overriding methods into the right classes, and setup the inheritance hierarchy, how do you get the DBI to use them? You have two choices, either a static method call using the name of your subclass: $dbh = MySubDBI->connect(...); or specifying a C attribute: $dbh = DBI->connect(..., { RootClass => 'MySubDBI' }); If both forms are used then the attribute takes precedence. The only differences between the two are that using an explicit RootClass attribute will a) make the DBI automatically attempt to load a module by that name if the class doesn't exist, and b) won't call your MySubDBI::connect() method, if you have one. When subclassing is being used then, after a successful new connect, the DBI->connect method automatically calls: $dbh->connected($dsn, $user, $pass, \%attr); The default method does nothing. The call is made just to simplify any post-connection setup that your subclass may want to perform. The parameters are the same as passed to DBI->connect. If your subclass supplies a connected method, it should be part of the MySubDBI::db package. One more thing to note: you must let the DBI do the handle creation. If you want to override the connect() method in your *::dr class then it must still call SUPER::connect to get a $dbh to work with. Similarly, an overridden prepare() method in *::db must still call SUPER::prepare to get a $sth. If you try to create your own handles using bless() then you'll find the DBI will reject them with an "is not a DBI handle (has no magic)" error. Here's a brief example of a DBI subclass. A more thorough example can be found in F in the DBI distribution. package MySubDBI; use strict; use DBI; use vars qw(@ISA); @ISA = qw(DBI); package MySubDBI::db; use vars qw(@ISA); @ISA = qw(DBI::db); sub prepare { my ($dbh, @args) = @_; my $sth = $dbh->SUPER::prepare(@args) or return; $sth->{private_mysubdbi_info} = { foo => 'bar' }; return $sth; } package MySubDBI::st; use vars qw(@ISA); @ISA = qw(DBI::st); sub fetch { my ($sth, @args) = @_; my $row = $sth->SUPER::fetch(@args) or return; do_something_magical_with_row_data($row) or return $sth->set_err(1234, "The magic failed", undef, "fetch"); return $row; } When calling a SUPER::method that returns a handle, be careful to check the return value before trying to do other things with it in your overridden method. This is especially important if you want to set a hash attribute on the handle, as Perl's autovivification will bite you by (in)conveniently creating an unblessed hashref, which your method will then return with usually baffling results later on like the error "dbih_getcom handle HASH(0xa4451a8) is not a DBI handle (has no magic". It's best to check right after the call and return undef immediately on error, just like DBI would and just like the example above. If your method needs to record an error it should call the set_err() method with the error code and error string, as shown in the example above. The error code and error string will be recorded in the handle and available via C<$h-Eerr> and C<$DBI::errstr> etc. The set_err() method always returns an undef or empty list as appropriate. Since your method should nearly always return an undef or empty list as soon as an error is detected it's handy to simply return what set_err() returns, as shown in the example above. If the handle has C, C, or C etc. set then the set_err() method will honour them. This means that if C is set then set_err() won't return in the normal way but will 'throw an exception' that can be caught with an C block. You can stash private data into DBI handles via C<$h-E{private_..._*}>. See the entry under L for info and important caveats. =head2 Memory Leaks When tracking down memory leaks using tools like L you'll find that some DBI internals are reported as 'leaking' memory. This is very unlikely to be a real leak. The DBI has various caches to improve performance and the apparrent leaks are simply the normal operation of these caches. The most frequent sources of the apparrent leaks are L, L and L. For example http://stackoverflow.com/questions/13338308/perl-dbi-memory-leak Given how widely the DBI is used, you can rest assured that if a new release of the DBI did have a real leak it would be discovered, reported, and fixed immediately. The leak you're looking for is probably elsewhere. Good luck! =head1 TRACING The DBI has a powerful tracing mechanism built in. It enables you to see what's going on 'behind the scenes', both within the DBI and the drivers you're using. =head2 Trace Settings Which details are written to the trace output is controlled by a combination of a I, an integer from 0 to 15, and a set of I that are either on or off. Together these are known as the I and are stored together in a single integer. For normal use you only need to set the trace level, and generally only to a value between 1 and 4. Each handle has its own trace settings, and so does the DBI. When you call a method the DBI merges the handles settings into its own for the duration of the call: the trace flags of the handle are OR'd into the trace flags of the DBI, and if the handle has a higher trace level then the DBI trace level is raised to match it. The previous DBI trace settings are restored when the called method returns. =head2 Trace Levels Trace I are as follows: 0 - Trace disabled. 1 - Trace top-level DBI method calls returning with results or errors. 2 - As above, adding tracing of top-level method entry with parameters. 3 - As above, adding some high-level information from the driver and some internal information from the DBI. 4 - As above, adding more detailed information from the driver. This is the first level to trace all the rows being fetched. 5 to 15 - As above but with more and more internal information. Trace level 1 is best for a simple overview of what's happening. Trace levels 2 thru 4 a good choice for general purpose tracing. Levels 5 and above are best reserved for investigating a specific problem, when you need to see "inside" the driver and DBI. The trace output is detailed and typically very useful. Much of the trace output is formatted using the L function, so strings in the trace output may be edited and truncated by that function. =head2 Trace Flags Trace I are used to enable tracing of specific activities within the DBI and drivers. The DBI defines some trace flags and drivers can define others. DBI trace flag names begin with a capital letter and driver specific names begin with a lowercase letter, as usual. Currently the DBI defines these trace flags: ALL - turn on all DBI and driver flags (not recommended) SQL - trace SQL statements executed (not yet implemented in DBI but implemented in some DBDs) CON - trace connection process ENC - trace encoding (unicode translations etc) (not yet implemented in DBI but implemented in some DBDs) DBD - trace only DBD messages (not implemented by all DBDs yet) TXN - trace transactions (not implemented in all DBDs yet) The L and L methods are used to convert trace flag names into the corresponding integer bit flags. =head2 Enabling Trace The C<$h-Etrace> method sets the trace settings for a handle and Ctrace> does the same for the DBI. In addition to the L method, you can enable the same trace information, and direct the output to a file, by setting the C environment variable before starting Perl. See L for more information. Finally, you can set, or get, the trace settings for a handle using the C attribute. All of those methods use parse_trace_flags() and so allow you set both the trace level and multiple trace flags by using a string containing the trace level and/or flag names separated by vertical bar ("C<|>") or comma ("C<,>") characters. For example: local $h->{TraceLevel} = "3|SQL|foo"; =head2 Trace Output Initially trace output is written to C. Both the C<$h-Etrace> and Ctrace> methods take an optional $trace_file parameter, which may be either the name of a file to be opened by DBI in append mode, or a reference to an existing writable (possibly layered) filehandle. If $trace_file is a filename, and can be opened in append mode, or $trace_file is a writable filehandle, then I trace output (currently including that from other handles) is redirected to that file. A warning is generated if $trace_file can't be opened or is not writable. Further calls to trace() without $trace_file do not alter where the trace output is sent. If $trace_file is undefined, then trace output is sent to C and, if the prior trace was opened with $trace_file as a filename, the previous trace file is closed; if $trace_file was a filehandle, the filehandle is B closed. B: If $trace_file is specified as a filehandle, the filehandle should not be closed until all DBI operations are completed, or the application has reset the trace file via another call to C that changes the trace file. =head2 Tracing to Layered Filehandles B: =over 4 =item * Tied filehandles are not currently supported, as tie operations are not available to the PerlIO methods used by the DBI. =item * PerlIO layer support requires Perl version 5.8 or higher. =back As of version 5.8, Perl provides the ability to layer various "disciplines" on an open filehandle via the L module. A simple example of using PerlIO layers is to use a scalar as the output: my $scalar = ''; open( my $fh, "+>:scalar", \$scalar ); $dbh->trace( 2, $fh ); Now all trace output is simply appended to $scalar. A more complex application of tracing to a layered filehandle is the use of a custom layer (IL I). Consider an application with the following logger module: package MyFancyLogger; sub new { my $self = {}; my $fh; open $fh, '>', 'fancylog.log'; $self->{_fh} = $fh; $self->{_buf} = ''; return bless $self, shift; } sub log { my $self = shift; return unless exists $self->{_fh}; my $fh = $self->{_fh}; $self->{_buf} .= shift; # # DBI feeds us pieces at a time, so accumulate a complete line # before outputing # print $fh "At ", scalar localtime(), ':', $self->{_buf}, "\n" and $self->{_buf} = '' if $self->{_buf}=~tr/\n//; } sub close { my $self = shift; return unless exists $self->{_fh}; my $fh = $self->{_fh}; print $fh "At ", scalar localtime(), ':', $self->{_buf}, "\n" and $self->{_buf} = '' if $self->{_buf}; close $fh; delete $self->{_fh}; } 1; To redirect DBI traces to this logger requires creating a package for the layer: package PerlIO::via::MyFancyLogLayer; sub PUSHED { my ($class,$mode,$fh) = @_; my $logger; return bless \$logger,$class; } sub OPEN { my ($self, $path, $mode, $fh) = @_; # # $path is actually our logger object # $$self = $path; return 1; } sub WRITE { my ($self, $buf, $fh) = @_; $$self->log($buf); return length($buf); } sub CLOSE { my $self = shift; $$self->close(); return 0; } 1; The application can then cause DBI traces to be routed to the logger using use PerlIO::via::MyFancyLogLayer; open my $fh, '>:via(MyFancyLogLayer)', MyFancyLogger->new(); $dbh->trace('SQL', $fh); Now all trace output will be processed by MyFancyLogger's log() method. =head2 Trace Content Many of the values embedded in trace output are formatted using the neat() utility function. This means they may be quoted, sanitized, and possibly truncated if longer than C<$DBI::neat_maxlen>. See L for more details. =head2 Tracing Tips You can add tracing to your own application code using the L method. It can sometimes be handy to compare trace files from two different runs of the same script. However using a tool like C on the original log output doesn't work well because the trace file is full of object addresses that may differ on each run. The DBI includes a handy utility called dbilogstrip that can be used to 'normalize' the log content. It can be used as a filter like this: DBI_TRACE=2 perl yourscript.pl ...args1... 2>&1 | dbilogstrip > dbitrace1.log DBI_TRACE=2 perl yourscript.pl ...args2... 2>&1 | dbilogstrip > dbitrace2.log diff -u dbitrace1.log dbitrace2.log See L for more information. =head1 DBI ENVIRONMENT VARIABLES The DBI module recognizes a number of environment variables, but most of them should not be used most of the time. It is better to be explicit about what you are doing to avoid the need for environment variables, especially in a web serving system where web servers are stingy about which environment variables are available. =head2 DBI_DSN The DBI_DSN environment variable is used by DBI->connect if you do not specify a data source when you issue the connect. It should have a format such as "dbi:Driver:databasename". =head2 DBI_DRIVER The DBI_DRIVER environment variable is used to fill in the database driver name in DBI->connect if the data source string starts "dbi::" (thereby omitting the driver). If DBI_DSN omits the driver name, DBI_DRIVER can fill the gap. =head2 DBI_AUTOPROXY The DBI_AUTOPROXY environment variable takes a string value that starts "dbi:Proxy:" and is typically followed by "hostname=...;port=...". It is used to alter the behaviour of DBI->connect. For full details, see DBI::Proxy documentation. =head2 DBI_USER The DBI_USER environment variable takes a string value that is used as the user name if the DBI->connect call is given undef (as distinct from an empty string) as the username argument. Be wary of the security implications of using this. =head2 DBI_PASS The DBI_PASS environment variable takes a string value that is used as the password if the DBI->connect call is given undef (as distinct from an empty string) as the password argument. Be extra wary of the security implications of using this. =head2 DBI_DBNAME (obsolete) The DBI_DBNAME environment variable takes a string value that is used only when the obsolescent style of DBI->connect (with driver name as fourth parameter) is used, and when no value is provided for the first (database name) argument. =head2 DBI_TRACE The DBI_TRACE environment variable specifies the global default trace settings for the DBI at startup. Can also be used to direct trace output to a file. When the DBI is loaded it does: DBI->trace(split /=/, $ENV{DBI_TRACE}, 2) if $ENV{DBI_TRACE}; So if C contains an "C<=>" character then what follows it is used as the name of the file to append the trace to. output appended to that file. If the name begins with a number followed by an equal sign (C<=>), then the number and the equal sign are stripped off from the name, and the number is used to set the trace level. For example: DBI_TRACE=1=dbitrace.log perl your_test_script.pl On Unix-like systems using a Bourne-like shell, you can do this easily on the command line: DBI_TRACE=2 perl your_test_script.pl See L for more information. =head2 PERL_DBI_DEBUG (obsolete) An old variable that should no longer be used; equivalent to DBI_TRACE. =head2 DBI_PROFILE The DBI_PROFILE environment variable can be used to enable profiling of DBI method calls. See L for more information. =head2 DBI_PUREPERL The DBI_PUREPERL environment variable can be used to enable the use of DBI::PurePerl. See L for more information. =head1 WARNING AND ERROR MESSAGES =head2 Fatal Errors =over 4 =item Can't call method "prepare" without a package or object reference The C<$dbh> handle you're using to call C is probably undefined because the preceding C failed. You should always check the return status of DBI methods, or use the L attribute. =item Can't call method "execute" without a package or object reference The C<$sth> handle you're using to call C is probably undefined because the preceding C failed. You should always check the return status of DBI methods, or use the L attribute. =item DBI/DBD internal version mismatch The DBD driver module was built with a different version of DBI than the one currently being used. You should rebuild the DBD module under the current version of DBI. (Some rare platforms require "static linking". On those platforms, there may be an old DBI or DBD driver version actually embedded in the Perl executable being used.) =item DBD driver has not implemented the AutoCommit attribute The DBD driver implementation is incomplete. Consult the author. =item Can't [sg]et %s->{%s}: unrecognised attribute You attempted to set or get an unknown attribute of a handle. Make sure you have spelled the attribute name correctly; case is significant (e.g., "Autocommit" is not the same as "AutoCommit"). =back =head1 Pure-Perl DBI A pure-perl emulation of the DBI is included in the distribution for people using pure-perl drivers who, for whatever reason, can't install the compiled DBI. See L. =head1 SEE ALSO =head2 Driver and Database Documentation Refer to the documentation for the DBD driver that you are using. Refer to the SQL Language Reference Manual for the database engine that you are using. =head2 ODBC and SQL/CLI Standards Reference Information More detailed information about the semantics of certain DBI methods that are based on ODBC and SQL/CLI standards is available on-line via microsoft.com, for ODBC, and www.jtc1sc32.org for the SQL/CLI standard: DBI method ODBC function SQL/CLI Working Draft ---------- ------------- --------------------- column_info SQLColumns Page 124 foreign_key_info SQLForeignKeys Page 163 get_info SQLGetInfo Page 214 primary_key_info SQLPrimaryKeys Page 254 table_info SQLTables Page 294 type_info SQLGetTypeInfo Page 239 statistics_info SQLStatistics To find documentation on the ODBC function you can use the MSDN search facility at: http://msdn.microsoft.com/Search and search for something like C<"SQLColumns returns">. And for SQL/CLI standard information on SQLColumns you'd read page 124 of the (very large) SQL/CLI Working Draft available from: http://jtc1sc32.org/doc/N0701-0750/32N0744T.pdf =head2 Standards Reference Information A hyperlinked, browsable version of the BNF syntax for SQL92 (plus Oracle 7 SQL and PL/SQL) is available here: http://cui.unige.ch/db-research/Enseignement/analyseinfo/SQL92/BNFindex.html You can find more information about SQL standards online by searching for the appropriate standard names and numbers. For example, searching for "ANSI/ISO/IEC International Standard (IS) Database Language SQL - Part 1: SQL/Framework" you'll find a copy at: ftp://ftp.iks-jena.de/mitarb/lutz/standards/sql/ansi-iso-9075-1-1999.pdf =head2 Books and Articles Programming the Perl DBI, by Alligator Descartes and Tim Bunce. L Programming Perl 3rd Ed. by Larry Wall, Tom Christiansen & Jon Orwant. L Learning Perl by Randal Schwartz. L Details of many other books related to perl can be found at L =head2 Perl Modules Index of DBI related modules available from CPAN: L L L For a good comparison of RDBMS-OO mappers and some OO-RDBMS mappers (including Class::DBI, Alzabo, and DBIx::RecordSet in the former category and Tangram and SPOPS in the latter) see the Perl Object-Oriented Persistence project pages at: http://poop.sourceforge.net A similar page for Java toolkits can be found at: http://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison =head2 Mailing List The I mailing list is the primary means of communication among users of the DBI and its related modules. For details send email to: L There are typically between 700 and 900 messages per month. You have to subscribe in order to be able to post. However you can opt for a 'post-only' subscription. Mailing list archives (of variable quality) are held at: http://groups.google.com/groups?group=perl.dbi.users http://www.xray.mpe.mpg.de/mailing-lists/dbi/ http://www.mail-archive.com/dbi-users%40perl.org/ =head2 Assorted Related Links The DBI "Home Page": http://dbi.perl.org/ Other DBI related links: http://www.perlmonks.org/?node=DBI%20recipes http://www.perlmonks.org/?node=Speeding%20up%20the%20DBI Other database related links: http://www.connectionstrings.com/ Security, especially the "SQL Injection" attack: http://bobby-tables.com/ http://online.securityfocus.com/infocus/1644 =head2 FAQ See L =head1 AUTHORS DBI by Tim Bunce, L This pod text by Tim Bunce, J. Douglas Dunlop, Jonathan Leffler and others. Perl by Larry Wall and the C. =head1 COPYRIGHT The DBI module is Copyright (c) 1994-2012 Tim Bunce. Ireland. All rights reserved. You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl 5.10.0 README file. =head1 SUPPORT / WARRANTY The DBI is free Open Source software. IT COMES WITHOUT WARRANTY OF ANY KIND. =head2 Support My consulting company, Data Plan Services, offers annual and multi-annual support contracts for the DBI. These provide sustained support for DBI development, and sustained value for you in return. Contact me for details. =head2 Sponsor Enhancements If your company would benefit from a specific new DBI feature, please consider sponsoring its development. Work is performed rapidly, and usually on a fixed-price payment-on-delivery basis. Contact me for details. Using such targeted financing allows you to contribute to DBI development, and rapidly get something specific and valuable in return. =head1 ACKNOWLEDGEMENTS I would like to acknowledge the valuable contributions of the many people I have worked with on the DBI project, especially in the early years (1992-1994). In no particular order: Kevin Stock, Buzz Moschetti, Kurt Andersen, Ted Lemon, William Hails, Garth Kennedy, Michael Peppler, Neil S. Briscoe, Jeff Urlwin, David J. Hughes, Jeff Stander, Forrest D Whitcher, Larry Wall, Jeff Fried, Roy Johnson, Paul Hudson, Georg Rehfeld, Steve Sizemore, Ron Pool, Jon Meek, Tom Christiansen, Steve Baumgarten, Randal Schwartz, and a whole lot more. Then, of course, there are the poor souls who have struggled through untold and undocumented obstacles to actually implement DBI drivers. Among their ranks are Jochen Wiedmann, Alligator Descartes, Jonathan Leffler, Jeff Urlwin, Michael Peppler, Henrik Tougaard, Edwin Pratomo, Davide Migliavacca, Jan Pazdziora, Peter Haworth, Edmund Mergl, Steve Williams, Thomas Lowery, and Phlip Plumlee. Without them, the DBI would not be the practical reality it is today. I'm also especially grateful to Alligator Descartes for starting work on the first edition of the "Programming the Perl DBI" book and letting me jump on board. The DBI and DBD::Oracle were originally developed while I was Technical Director (CTO) of the Paul Ingram Group in the UK. So I'd especially like to thank Paul for his generosity and vision in supporting this work for many years. A couple of specific DBI features have been sponsored by enlightened companies: The development of the swap_inner_handle() method was sponsored by BizRate.com (L) The development of DBD::Gofer and related modules was sponsored by Shopzilla.com (L), where I currently work. =head1 CONTRIBUTING As you can see above, many people have contributed to the DBI and drivers in many ways over many years. If you'd like to help then see L. If you'd like the DBI to do something new or different then a good way to make that happen is to do it yourself and send me a patch to the source code that shows the changes. (But read "Speak before you patch" below.) =head2 Browsing the source code repository Use https://github.com/perl5-dbi/dbi =head2 How to create a patch using Git The DBI source code is maintained using Git. To access the source you'll need to install a Git client. Then, to get the source code, do: git clone https://github.com/perl5-dbi/dbi.git DBI-git The source code will now be available in the new subdirectory C. When you want to synchronize later, issue the command git pull --all Make your changes, test them, test them again until everything passes. If there are no tests for the new feature you added or a behaviour change, the change should include a new test. Then commit the changes. Either use git gui or git commit -a -m 'Message to my changes' If you get any conflicts reported you'll need to fix them first. Then generate the patch file to be mailed: git format-patch -1 --attach which will create a file 0001-*.patch (where * relates to the commit message). Read the patch file, as a sanity check, and then email it to dbi-dev@perl.org. If you have a L account, you can also fork the repository, commit your changes to the forked repository and then do a pull request. =head2 How to create a patch without Git Unpack a fresh copy of the distribution: wget http://cpan.metacpan.org/authors/id/T/TI/TIMB/DBI-1.627.tar.gz tar xfz DBI-1.627.tar.gz Rename the newly created top level directory: mv DBI-1.627 DBI-1.627.your_foo Edit the contents of DBI-1.627.your_foo/* till it does what you want. Test your changes and then remove all temporary files: make test && make distclean Go back to the directory you originally unpacked the distribution: cd .. Unpack I copy of the original distribution you started with: tar xfz DBI-1.627.tar.gz Then create a patch file by performing a recursive C on the two top level directories: diff -purd DBI-1.627 DBI-1.627.your_foo > DBI-1.627.your_foo.patch =head2 Speak before you patch For anything non-trivial or possibly controversial it's a good idea to discuss (on dbi-dev@perl.org) the changes you propose before actually spending time working on them. Otherwise you run the risk of them being rejected because they don't fit into some larger plans you may not be aware of. You can also reach the developers on IRC (chat). If they are on-line, the most likely place to talk to them is the #dbi channel on irc.perl.org =head1 TRANSLATIONS A German translation of this manual (possibly slightly out of date) is available, thanks to O'Reilly, at: http://www.oreilly.de/catalog/perldbiger/ =head1 OTHER RELATED WORK AND PERL MODULES =over 4 =item L To be used with the Apache daemon together with an embedded Perl interpreter like C. Establishes a database connection which remains open for the lifetime of the HTTP daemon. This way the CGI connect and disconnect for every database access becomes superfluous. =item SQL Parser See also the L module, SQL parser and engine. =back =cut # LocalWords: DBI perl5/Bundle/DBI.pm000044400000002232152462470720007746 0ustar00# -*- perl -*- package Bundle::DBI; use strict; our $VERSION = "12.008696"; 1; __END__ =head1 NAME Bundle::DBI - A bundle to install DBI and required modules. =head1 SYNOPSIS perl -MCPAN -e 'install Bundle::DBI' =head1 CONTENTS DBI - for to get to know thyself DBI::Shell 11.91 - the DBI command line shell Storable 2.06 - for DBD::Proxy, DBI::ProxyServer, DBD::Forward Net::Daemon 0.37 - for DBD::Proxy and DBI::ProxyServer RPC::PlServer 0.2016 - for DBD::Proxy and DBI::ProxyServer DBD::Multiplex 1.19 - treat multiple db handles as one =head1 DESCRIPTION This bundle includes all the modules used by the Perl Database Interface (DBI) module, created by Tim Bunce. A I is a module that simply defines a collection of other modules. It is used by the L module to automate the fetching, building and installing of modules from the CPAN ftp archive sites. This bundle does not deal with the various database drivers (e.g. DBD::Informix, DBD::Oracle etc), most of which require software from sources other than CPAN. You'll need to fetch and build those drivers yourself. =head1 AUTHORS Jonathan Leffler, Jochen Wiedmann and Tim Bunce. =cut perl5/Bundle/DBD/mysql.pm000044400000000372152462470720011111 0ustar00package Bundle::DBD::mysql; use strict; use warnings; our $VERSION = '4.050'; 1; __END__ =pod =head1 NAME Bundle::DBD::mysql =head1 DESCRIPTION This package only exists for legacy reasons. Please use the L package instead. =cut perl5/DBI/Changes.pm000044400000366725152462470720010131 0ustar00=head1 NAME DBI::Changes - List of significant changes to the DBI =encoding UTF-8 =cut =head2 Changes in DBI 1.643 - ... Fix memory corruption in XS functions when Perl stack is reallocated thanks to Pali Fix calling dbd_db_do6 API function thanks to Pali Fix potentially calling newSV(0) in malloc_using_sv() thanks to Pali Fix order of XS preparse() ps_accept and ps_return argument names thanks to Petr Písař Fix a potential NULL profile dereference in dbi_profile() thanks to Petr Písař Fix a buffer overflow on an overlong DBD class name thanks to Petr Písař Remove remnants of support for perl <= v5.8.0 thanks to Pali and H.Merijn Brand Update Devel::PPPort and remove redundant compatibility macros thanks to Pali and H.Merijn Brand Correct minor typo in documentation thanks to Mohammad Anwar Correct documentation introducing $dbh->selectall_array() thanks to Pali Introduce select and do wrappers earlier in the documentation thanks to Dan Book Mark as deprecated old API functions which overflow or are affected by Unicode issues, thanks to Pali Add new attribute RaiseWarn, similar to RaiseError, thanks to Pali =head2 Changes in DBI 1.642 - 28th October 2018 Fix '.' in @INC for proxy test under parallel load thanks to H.Merijn Brand. Fix driver-related croak() in DBI->connect to report the original DSN thanks to maxatome #67 Introduce a new statement DBI method $sth->last_insert_id() thanks to pali #64 Allow to call $dbh->last_insert_id() method without arguments thanks to pali #64 Added a new XS API function variant dbd_db_do6() thanks to Pali #61 Fix misprints in doc of selectall_hashref thanks to Perlover #69 Remove outdated links to DBI related training resources. RT#125999 =head2 Changes in DBI 1.641 - 19th March 2018 Remove dependency on Storable 2.16 introduced in DBI 1.639 thanks to Ribasushi #60 Avoid compiler warnings in Driver.xst #59 thanks to pali #59 =head2 Changes in DBI 1.640 - 28th January 2018 Fix test t/91_store_warning.t for perl 5.10.0 thanks to pali #57 Add Perl 5.10.0 and 5.8.1 specific versions to Travis testing thanks to pali #57 Add registration of mariadb_ prefix for new DBD::MariaDB driver thanks to pali #56 =head2 Changes in DBI 1.639 - 28th December 2017 Fix UTF-8 support for warn/croak calls within DBI internals, thanks to pali #53 Fix dependency on Storable for perl older than 5.8.9, thanks to H.Merijn Brand. Add DBD::Mem driver, a pure-perl in-memory driver using DBI::DBD::SqlEngine, thanks to Jens Rehsack #42 Corrected missing semicolon in example in documentation, thanks to pali #55 =head2 Changes in DBI 1.637 - 16th August 2017 Fix use of externally controlled format string (CWE-134) thanks to pali #44 This could cause a crash if, for example, a db error contained a %. https://cwe.mitre.org/data/definitions/134.html Fix extension detection for DBD::File related drivers Fix tests for perl without dot in @INC RT#120443 Fix loss of error message on parent handle, thanks to charsbar #34 Fix disappearing $_ inside callbacks, thanks to robschaber #47 Fix dependency on Storable for perl older than 5.8.9 Allow objects to be used as passwords without throwing an error, thanks to demerphq #40 Allow $sth NAME_* attributes to be set from Perl code, re #45 Added support for DBD::XMLSimple thanks to nigelhorne #38 Documentation updates: Improve examples using eval to be more correct, thanks to pali #39 Add cautionary note to prepare_cached docs re refs in %attr #46 Small POD changes (Getting Help -> Online) thanks to openstrike #33 Adds links to more module names and fix typo, thanks to oalders #43 Typo fix thanks to bor #37 =head2 Changes in DBI 1.636 - 24th April 2016 Fix compilation for threaded perl <= 5.12 broken in 1.635 RT#113955 Revert change to DBI::PurePerl DESTROY in 1.635 Change t/16destroy.t to avoid race hazard RT#113951 Output perl version and archname in t/01basics.t Add perl 5.22 and 5.22-extras to travis-ci config =head2 Changes in DBI 1.635 - 24th April 2016 Fixed RaiseError/PrintError for UTF-8 errors/warnings. RT#102404 Fixed cases where ShowErrorStatement might show incorrect Statement RT#97434 Fixed DBD::Gofer for UTF-8-enabled STDIN/STDOUT thanks to mauke PR#32 Fixed fetchall_arrayref({}) behavior with no columns thanks to Dan McGee PR#31 Fixed tied CachedKids ref leak in attribute cache by weakening thanks to Michael Conrad RT#113852 Fixed "panic: attempt to copy freed scalar" upon commit() or rollback() thanks to fbriere for detailed bug report RT#102791 Ceased to ignore DESTROY of outer handle in DBI::PurePerl Treat undef in DBI::Profile Path as string "undef" thanks to fREW Schmidt RT#113298 Fix SQL::Nano parser to ignore trailing semicolon thanks to H.Merijn Brand. Added @ary = $dbh->selectall_array(...) method thanks to Ed Avis RT#106411 Added appveyor support (Travis like CI for windows) thanks to mbeijen PR#30 Corrected spelling errors in pod thanks to Gregor Herrmann RT#107838 Corrected and/or removed broken links to SQL standards thanks to David Pottage RT#111437 Corrected doc example to use dbi: instead of DBI: in DSN thanks to Michael R. Davis RT#101181 Removed/updated broken links in docs thanks to mbeijen PR#29 Clarified docs for DBI::hash($string) Removed the ancient DBI::FAQ module RT#102714 Fixed t/pod.t to require Test::Pod >= 1.41 RT#101769 This release was developed at the Perl QA Hackathon 2016 L which was made possible by the generosity of many sponsors: L FastMail, L ZipRecruiter, L ActiveState, L OpusVL, L Strato, L SureVoIP, L CV-Library, L Infinity, L Perl Careers, L MongoDB, L thinkproject!, L Dreamhost, L Perl 6, L Perl Services, L Evozon, L Booking, L Eligo, L Oetiker+Partner, L CAPSiDE, L Procura, L Constructor.io, L Robbie Bow, L Ron Savage, L Charlie Gonzalez, L Justin Cook. =head2 Changes in DBI 1.634 - 3rd August 2015 Enabled strictures on all modules (Jose Luis Perez Diez) #22 Note that this might cause new exceptions in existing code. Please take time for extra testing before deploying to production. Improved handling of row counts for compiled drivers and enable them to return larger row counts (IV type) by defining new *_iv macros. Fixed quote_identifier that was adding a trailing separator when there was only a catalog (Martin J. Evans) Removed redundant keys() call in fetchall_arrayref with hash slice (ilmari) #24 Corrected pod xref to Placeholders section (Matthew D. Fuller) Corrected pod grammar (Nick Tonkin) #25 Added support for tables('', '', '', '%') special case (Martin J. Evans) Added support for DBD prefixes with numbers (Jens Rehsack) #19 Added extra initializer for DBI::DBD::SqlEngine based DBD's (Jens Rehsack) Added Memory Leaks section to the DBI docs (Tim) Added Artistic v1 & GPL v1 LICENSE file (Jose Luis Perez Diez) #21 =head2 Changes in DBI 1.633 - 11th Jan 2015 Fixed selectrow_*ref to return undef on error in list context instead if an empty list. Changed t/42prof_data.t more informative Changed $sth->{TYPE} to be NUMERIC in DBD::File drivers as per the DBI docs. Note TYPE_NAME is now also available. [H.Merijn Brand] Fixed compilation error on bleadperl due DEFSV no longer being an lvalue [Dagfinn Ilmari Mannsåker] Added docs for escaping placeholders using a backslash. Added docs for get_info(9000) indicating ability to escape placeholders. Added multi_ prefix for DBD::Multi (Dan Wright) and ad2_ prefix for DBD::AnyData2 =head2 Changes in DBI 1.632 - 9th Nov 2014 Fixed risk of memory corruption with many arguments to methods originally reported by OSCHWALD for Callbacks but may apply to other functionality in DBI method dispatch RT#86744. Fixed DBD::PurePerl to not set $sth->{Active} true by default drivers are expected to set it true as needed. Fixed DBI::DBD::SqlEngine to complain loudly when prerequite driver_prefix is not fulfilled (RT#93204) [Jens Rehsack] Fixed redundant sprintf argument warning RT#97062 [Reini Urban] Fixed security issue where DBD::File drivers would open files from folders other than specifically passed using the f_dir attribute RT#99508 [H.Merijn Brand] Changed delete $h->{$key} to work for keys with 'private_' prefix per request in RT#83156. local $h->{$key} works as before. Added security notice to DBD::Proxy and DBI::ProxyServer because they use Storable which is insecure. Thanks to ppisar@redhat.com RT#90475 Added note to AutoInactiveDestroy docs strongly recommending that it is enabled in all new code. =head2 Changes in DBI 1.631 - 20th Jan 2014 NOTE: This release changes the handle passed to Callbacks from being an 'inner' handle to being an 'outer' handle. If you have code that makes use of Callbacks, ensure that you understand what this change means and review your callback code. Fixed err_hash handling of integer err RT#92172 [Dagfinn Ilmari] Fixed use of \Q vs \E in t/70callbacks.t Changed the handle passed to Callbacks from being an 'inner' handle to being an 'outer' handle. Improved reliability of concurrent testing PR#8 [Peter Rabbitson] Changed optional dependencies to "suggest" PR#9 [Karen Etheridge] Changed to avoid mg_get in neatsvpv during global destruction PR#10 [Matt Phillips] =head2 Changes in DBI 1.630 - 28th Oct 2013 NOTE: This release enables PrintWarn by default regardless of $^W. Your applications may generate more log messages than before. Fixed err for new drh to be undef not to 0 [Martin J. Evans] Fixed RT#83132 - moved DBIstcf* constants to util export tag [Martin J. Evans] PrintWarn is now triggered by warnings recorded in methods like STORE that don't clear err RT#89015 [Tim Bunce] Changed tracing to no longer show quote and quote_identifier calls at trace level 1. Changed DBD::Gofer ping while disconnected set_err from warn to info. Clarified wording of log message when err is cleared. Changed bootstrap to use $XS_VERSION RT#89618 [Andreas Koenig] Added connect_cached.connected Callback PR#3 [David E. Wheeler] Clarified effect of refs in connect_cached attributes [David E. Wheeler] Extended ReadOnly attribute docs for when the driver cannot ensure read only [Martin J. Evans] Corrected SQL_BIGINT docs to say ODBC value is used PR#5 [ilmari] There was no DBI 1.629 release. =head2 Changes in DBI 1.628 - 22nd July 2013 Fixed missing fields on partial insert via DBI::DBD::SqlEngine engines (DBD::CSV, DBD::DBM etc.) [H.Merijn Brand, Jens Rehsack] Fixed stack corruption on callbacks RT#85562 RT#84974 [Aaron Schweiger] Fixed DBI::SQL::Nano_::Statement handling of "0" [Jens Rehsack] Fixed exit op precedence in test RT#87029 [Reni Urban] Added support for finding tables in multiple directories via new DBD::File f_dir_search attribute [H.Merijn Brand] Enable compiling by C++ RT#84285 [Kurt Jaeger] Typo fixes in pod and comment [David Steinbrunner] Change DBI's docs to refer to git not svn [H.Merijn Brand] Clarify bind_col TYPE attribute is sticky [Martin J. Evans] Fixed reference to $sth in selectall_arrayref docs RT#84873 Spelling fixes [Ville Skyttä] Changed $VERSIONs to hardcoded strings [H.Merijn Brand] =head2 Changes in DBI 1.627 - 16th May 2013 Fixed VERSION regression in DBI::SQL::Nano [Tim Bunce] =head2 Changes in DBI 1.626 - 15th May 2013 Fixed pod text/link was reversed in a few cases RT#85168 [H.Merijn Brand] Handle aliasing of STORE'd attributes in DBI::DBD::SqlEngine [Jens Rehsack] Updated repository URI to git [Jens Rehsack] Fixed skip() count arg in t/48dbi_dbd_sqlengine.t [Tim Bunce] =head2 Changes in DBI 1.625 (svn r15595) 28th March 2013 Fixed heap-use-after-free during global destruction RT#75614 thanks to Reini Urban. Fixed ignoring RootClass attribute during connect() by DBI::DBD::SqlEngine reported in RT#84260 by Michael Schout =head2 Changes in DBI 1.624 (svn r15576) 22nd March 2013 Fixed Gofer for hash randomization in perl 5.17.10+ RT#84146 Clarify docs for can() re RT#83207 =head2 Changes in DBI 1.623 (svn r15547) 2nd Jan 2013 Fixed RT#64330 - ping wipes out errstr (Martin J. Evans). Fixed RT#75868 - DBD::Proxy shouldn't call connected() on the server. Fixed RT#80474 - segfault in DESTROY with threads. Fixed RT#81516 - Test failures due to hash randomisation in perl 5.17.6 thanks to Jens Rehsack and H.Merijn Brand and feedback on IRC Fixed RT#81724 - Handle copy-on-write scalars (sprout) Fixed unused variable / self-assignment compiler warnings. Fixed default table_info in DBI::DBD::SqlEngine which passed NAMES attribute instead of NAME to DBD::Sponge RT72343 (Martin J. Evans) Corrected a spelling error thanks to Chris Sanders. Corrected typo in DBI->installed_versions docs RT#78825 thanks to Jan Dubois. Refactored table meta information management from DBD::File into DBI::DBD::SqlEngine (H.Merijn Brand, Jens Rehsack) Prevent undefined f_dir being used in opendir (H.Merijn Brand) Added logic to force destruction of children before parents during global destruction. See RT#75614. Added DBD::File Plugin-Support for table names and data sources (Jens Rehsack, #dbi Team) Added new tests to 08keeperr for RT#64330 thanks to Kenichi Ishigaki. Added extra internal handle type check, RT#79952 thanks to Reini Urban. Added cubrid_ registered prefix for DBD::cubrid, RT#78453 Removed internal _not_impl method (Martin J. Evans). NOTE: The "old-style" DBD::DBM attributes 'dbm_ext' and 'dbm_lockfile' have been deprecated for several years and their use will now generate a warning. =head2 Changes in DBI 1.622 (svn r15327) 6th June 2012 Fixed lack of =encoding in non-ASCII pod docs. RT#77588 Corrected typo in DBI::ProfileDumper thanks to Finn Hakansson. =head2 Changes in DBI 1.621 (svn r15315) 21st May 2012 Fixed segmentation fault when a thread is created from within another thread RT#77137, thanks to Dave Mitchell. Updated previous Changes to credit Booking.com for sponsoring Dave Mitchell's recent DBI optimization work. =head2 Changes in DBI 1.620 (svn r15300) 25th April 2012 Modified column renaming in fetchall_arrayref, added in 1.619, to work on column index numbers not names (an incompatible change). Reworked the fetchall_arrayref documentation. Hash slices in fetchall_arrayref now detect invalid column names. =head2 Changes in DBI 1.619 (svn r15294) 23rd April 2012 Fixed the connected method to stop showing the password in trace file (Martin J. Evans). Fixed _install_method to set CvFILE correctly thanks to sprout RT#76296 Fixed SqlEngine "list_tables" thanks to David McMath and Norbert Gruener. RT#67223 RT#69260 Optimized DBI method dispatch thanks to Dave Mitchell. Optimized driver access to DBI internal state thanks to Dave Mitchell. Optimized driver access to handle data thanks to Dave Mitchell. Dave's work on these optimizations was sponsored by Booking.com. Optimized fetchall_arrayref with hash slice thanks to Dagfinn Ilmari Mannsåker. RT#76520 Allow renaming columns in fetchall_arrayref hash slices thanks to Dagfinn Ilmari Mannsåker. RT#76572 Reserved snmp_ and tree_ for DBD::SNMP and DBD::TreeData =head2 Changes in DBI 1.618 (svn r15170) 25rd February 2012 Fixed compiler warnings in Driver_xst.h (Martin J. Evans) Fixed compiler warning in DBI.xs (H.Merijn Brand) Fixed Gofer tests failing on Windows RT74975 (Manoj Kumar) Fixed my_ctx compile errors on Windows (Dave Mitchell) Significantly optimized method dispatch via cache (Dave Mitchell) Significantly optimized DBI internals for threads (Dave Mitchell) Dave's work on these optimizations was sponsored by Booking.com. Xsub to xsub calling optimization now enabled for threaded perls. Corrected typo in example in docs (David Precious) Added note that calling clone() without an arg may warn in future. Minor changes to the install_method() docs in DBI::DBD. Updated dbipport.h from Devel::PPPort 3.20 =head2 Changes in DBI 1.617 (svn r15107) 30th January 2012 NOTE: The officially supported minimum perl version will change from perl 5.8.1 (2003) to perl 5.8.3 (2004) in a future release. (The last change, from perl 5.6 to 5.8.1, was announced in July 2008 and implemented in DBI 1.611 in April 2010.) Fixed ParamTypes example in the pod (Martin J. Evans) Fixed the definition of ArrayTupleStatus and remove confusion over rows affected in list context of execute_array (Martin J. Evans) Fixed sql_type_cast example and typo in errors (Martin J. Evans) Fixed Gofer error handling for keeperr methods like ping (Tim Bunce) Fixed $dbh->clone({}) RT73250 (Tim Bunce) Fixed is_nested_call logic error RT73118 (Reini Urban) Enhanced performance for threaded perls (Dave Mitchell, Tim Bunce) Dave's work on this optimization was sponsored by Booking.com. Enhanced and standardized driver trace level mechanism (Tim Bunce) Removed old code that was an inneffective attempt to detect people doing DBI->{Attrib}. Clear ParamValues on bind_param param count error RT66127 (Tim Bunce) Changed DBI::ProxyServer to require DBI at compile-time RT62672 (Tim Bunce) Added pod for default_user to DBI::DBD (Martin J. Evans) Added CON, ENC and DBD trace flags and extended 09trace.t (Martin J. Evans) Added TXN trace flags and applied CON and TXN to relevant methods (Tim Bunce) Added some more fetchall_arrayref(..., $maxrows) tests (Tim Bunce) Clarified docs for fetchall_arrayref called on an inactive handle. Clarified docs for clone method (Tim Bunce) Added note to DBI::Profile about async queries (Marcel Grünauer). Reserved spatialite_ as a driver prefix for DBD::Spatialite Reserved mo_ as a driver prefix for DBD::MO Updated link to the SQL Reunion 95 docs, RT69577 (Ash Daminato) Changed links for DBI recipes. RT73286 (Martin J. Evans) =head2 Changes in DBI 1.616 (svn r14616) 30th December 2010 Fixed spurious dbi_profile lines written to the log when profiling is enabled and a trace flag, like SQL, is used. Fixed to recognize SQL::Statement errors even if instantiated with RaiseError=0 (Jens Rehsack) Fixed RT#61513 by catching attribute assignment to tied table access interface (Jens Rehsack) Fixing some misbehavior of DBD::File when running within the Gofer server. Fixed compiler warnings RT#62640 Optimized connect() to remove redundant FETCH of \%attrib values. Improved initialization phases in DBI::DBD::SqlEngine (Jens Rehsack) Added DBD::Gofer::Transport::corostream. An experimental proof-of-concept transport that enables asynchronous database calls with few code changes. It enables asynchronous use of DBI frameworks like DBIx::Class. Added additional notes on DBDs which avoid creating a statement in the do() method and the effects on error handlers (Martin J. Evans) Adding new attribute "sql_dialect" to DBI::DBD::SqlEngine to allow users control used SQL dialect (ANSI, CSV or AnyData), defaults to CSV (Jens Rehsack) Add documentation for DBI::DBD::SqlEngine attributes (Jens Rehsack) Documented dbd_st_execute return (Martin J. Evans) Fixed typo in InactiveDestroy thanks to Emmanuel Rodriguez. =head2 Changes in DBI 1.615 (svn r14438) 21st September 2010 Fixed t/51dbm_file for file/directory names with whitespaces in them RT#61445 (Jens Rehsack) Fixed compiler warnings from ignored hv_store result (Martin J. Evans) Fixed portability to VMS (Craig A. Berry) =head2 Changes in DBI 1.614 (svn r14408) 17th September 2010 Fixed bind_param () in DBI::DBD::SqlEngine (rt#61281) Fixed internals to not refer to old perl symbols that will no longer be visible in perl >5.13.3 (Andreas Koenig) Many compiled drivers are likely to need updating. Fixed issue in DBD::File when absolute filename is used as table name (Jens Rehsack) Croak manually when file after tie doesn't exists in DBD::DBM when it have to exists (Jens Rehsack) Fixed issue in DBD::File when users set individual file name for tables via f_meta compatibility interface - reported by H.Merijn Brand while working on RT#61168 (Jens Rehsack) Changed 50dbm_simple to simplify and fix problems (Martin J. Evans) Changed 50dbm_simple to skip aggregation tests when not using SQL::Statement (Jens Rehsack) Minor speed improvements in DBD::File (Jens Rehsack) Added $h->{AutoInactiveDestroy} as simpler safer form of $h->{InactiveDestroy} (David E. Wheeler) Added ability for parallel testing "prove -j4 ..." (Jens Rehsack) Added tests for delete in DBM (H.Merijn Brand) Added test for absolute filename as table to 51dbm_file (Jens Rehsack) Added two initialization phases to DBI::DBD::SqlEngine (Jens Rehsack) Added improved developers documentation for DBI::DBD::SqlEngine (Jens Rehsack) Added guides how to write DBI drivers using DBI::DBD::SqlEngine or DBD::File (Jens Rehsack) Added register_compat_map() and table_meta_attr_changed() to DBD::File::Table to support clean fix of RT#61168 (Jens Rehsack) =head2 Changes in DBI 1.613 (svn r14271) 22nd July 2010 Fixed Win32 prerequisite module from PathTools to File::Spec. Changed attribute headings and fixed references in DBI pod (Martin J. Evans) Corrected typos in DBI::FAQ and DBI::ProxyServer (Ansgar Burchardt) =head2 Changes in DBI 1.612 (svn r14254) 16th July 2010 NOTE: This is a minor release for the DBI core but a major release for DBD::File and drivers that depend on it, like DBD::DBM and DBD::CSV. This is also the first release where the bulk of the development work has been done by other people. I'd like to thank (in no particular order) Jens Rehsack, Martin J. Evans, and H.Merijn Brand for all their contributions. Fixed DBD::File's {ChopBlank} handling (it stripped \s instead of space only as documented in DBI) (H.Merijn Brand) Fixed DBD::DBM breakage with SQL::Statement (Jens Rehsack, fixes RT#56561) Fixed DBD::File file handle leak (Jens Rehsack) Fixed problems in 50dbm.t when running tests with multiple dbms (Martin J. Evans) Fixed DBD::DBM bugs found during tests (Jens Rehsack) Fixed DBD::File doesn't find files without extensions under some circumstances (Jens Rehsack, H.Merijn Brand, fixes RT#59038) Changed Makefile.PL to modernize with CONFLICTS, recommended dependencies and resources (Jens Rehsack) Changed DBI::ProfileDumper to rename any existing profile file by appending .prev, instead of overwriting it. Changed DBI::ProfileDumper::Apache to work in more configurations including vhosts using PerlOptions +Parent. Add driver_prefix method to DBI (Jens Rehsack) Added more tests to 50dbm_simple.t to prove optimizations in DBI::SQL::Nano and SQL::Statement (Jens Rehsack) Updated tests to cover optional installed SQL::Statement (Jens Rehsack) Synchronize API between SQL::Statement and DBI::SQL::Nano (Jens Rehsack) Merged some optimizations from SQL::Statement into DBI::SQL::Nano (Jens Rehsack) Added basic test for DBD::File (H.Merijn Brand, Jens Rehsack) Extract dealing with Perl SQL engines from DBD::File into DBI::DBD::SqlEngine for better subclassing of 3rd party non-db DBDs (Jens Rehsack) Updated and clarified documentation for finish method (Tim Bunce). Changes to DBD::File for better English and hopefully better explanation (Martin J. Evans) Update documentation of DBD::DBM to cover current implementation, tried to explain some things better and changes most examples to preferred style of Merijn and myself (Jens Rehsack) Added developer documentation (including a roadmap of future plans) for DBD::File =head2 Changes in DBI 1.611 (svn r13935) 29th April 2010 NOTE: minimum perl version is now 5.8.1 (as announced in DBI 1.607) Fixed selectcol_arrayref MaxRows attribute to count rows not values thanks to Vernon Lyon. Fixed DBI->trace(0, *STDERR); (H.Merijn Brand) which tried to open a file named "*main::STDERR" in perl-5.10.x Fixes in DBD::DBM for use under threads (Jens Rehsack) Changed "Issuing rollback() due to DESTROY without explicit disconnect" warning to not be issued if ReadOnly set for that dbh. Added f_lock and f_encoding support to DBD::File (H.Merijn Brand) Added ChildCallbacks => { ... } to Callbacks as a way to specify Callbacks for child handles. With tests added by David E. Wheeler. Added DBI::sql_type_cast($value, $type, $flags) to cast a string value to an SQL type. e.g. SQL_INTEGER effectively does $value += 0; Has other options plus an internal interface for drivers. Documentation changes: Small fixes in the documentation of DBD::DBM (H.Merijn Brand) Documented specification of type casting behaviour for bind_col() based on DBI::sql_type_cast() and two new bind_col attributes StrictlyTyped and DiscardString. Thanks to Martin Evans. Document fetchrow_hashref() behaviour for functions, aliases and duplicate names (H.Merijn Brand) Updated DBI::Profile and DBD::File docs to fix pod nits thanks to Frank Wiegand. Corrected typos in Gopher documentation reported by Jan Krynicky. Documented the Callbacks attribute thanks to David E. Wheeler. Corrected the Timeout examples as per rt 50621 (Martin J. Evans). Removed some internal broken links in the pod (Martin J. Evans) Added Note to column_info for drivers which do not support it (Martin J. Evans) Updated dbipport.h to Devel::PPPort 3.19 (H.Merijn Brand) =head2 Changes in DBI 1.609 (svn r12816) 8th June 2009 Fixes to DBD::File (H.Merijn Brand) added f_schema attribute table names case sensitive when quoted, insensitive when unquoted workaround a bug in SQL::Statement (temporary fix) related to the "You passed x parameters where y required" error Added ImplementorClass and Name info to the "Issuing rollback() due to DESTROY without explicit disconnect" warning to identify the handle. Applies to compiled drivers when they are recompiled. Added DBI->visit_handles($coderef) method. Added $h->visit_child_handles($coderef) method. Added docs for column_info()'s COLUMN_DEF value. Clarified docs on stickyness of data type via bind_param(). Clarified docs on stickyness of data type via bind_col(). =head2 Changes in DBI 1.608 (svn r12742) 5th May 2009 Fixes to DBD::File (H.Merijn Brand) bind_param () now honors the attribute argument added f_ext attribute File::Spec is always required. (CORE since 5.00405) Fail and set errstr on parameter count mismatch in execute () Fixed two small memory leaks when running in mod_perl one in DBI->connect and one in DBI::Gofer::Execute. Both due to "local $ENV{...};" leaking memory. Fixed DBD_ATTRIB_DELETE macro for driver authors and updated DBI::DBD docs thanks to Martin J. Evans. Fixed 64bit issues in trace messages thanks to Charles Jardine. Fixed FETCH_many() method to work with drivers that incorrectly return an empty list from $h->FETCH. Affected gofer. Added 'sqlite_' as registered prefix for DBD::SQLite. Corrected many typos in DBI docs thanks to Martin J. Evans. Improved DBI::DBD docs thanks to H.Merijn Brand. =head2 Changes in DBI 1.607 (svn r11571) 22nd July 2008 NOTE: Perl 5.8.1 is now the minimum supported version. If you need support for earlier versions send me a patch. Fixed missing import of carp in DBI::Gofer::Execute. Added note to docs about effect of execute(@empty_array). Clarified docs for ReadOnly thanks to Martin Evans. =head2 Changes in DBI 1.605 (svn r11434) 16th June 2008 Fixed broken DBIS macro with threads on big-endian machines with 64bit ints but 32bit pointers. Ticket #32309. Fixed the selectall_arrayref, selectrow_arrayref, and selectrow_array methods that get embedded into compiled drivers to use the inner sth handle when passed a $sth instead of an sql string. Drivers will need to be recompiled to pick up this change. Fixed leak in neat() for some kinds of values thanks to Rudolf Lippan. Fixed DBI::PurePerl neat() to behave more like XS neat(). Increased default $DBI::neat_maxlen from 400 to 1000. Increased timeout on tests to accommodate very slow systems. Changed behaviour of trace levels 1..4 to show less information at lower levels. Changed the format of the key used for $h->{CachedKids} (which is undocumented so you shouldn't depend on it anyway) Changed gofer error handling to avoid duplicate error text in errstr. Clarified docs re ":N" style placeholders. Improved gofer retry-on-error logic and refactored to aid subclassing. Improved gofer trace output in assorted ways. Removed the beeps "\a" from Makefile.PL warnings. Removed check for PlRPC-modules from Makefile.PL Added sorting of ParamValues reported by ShowErrorStatement thanks to to Rudolf Lippan. Added cache miss trace message to DBD::Gofer transport class. Added $drh->dbixs_revision method. Added explicit LICENSE specification (perl) to META.yaml =head2 Changes in DBI 1.604 (svn rev 10994) 24th March 2008 Fixed fetchall_arrayref with $max_rows argument broken in 1.603, thanks to Greg Sabino Mullane. Fixed a few harmless compiler warnings on cygwin. =head2 Changes in DBI 1.603 Fixed pure-perl fetchall_arrayref with $max_rows argument to not error when fetching after all rows already fetched. (Was fixed for compiled drivers back in DBI 1.31.) Thanks to Mark Overmeer. Fixed C sprintf formats and casts, fixing compiler warnings. Changed dbi_profile() to accept a hash of profiles and apply to all. Changed gofer stream transport to improve error reporting. Changed gofer test timeout to avoid spurious failures on slow systems. Added options to t/85gofer.t so it's more useful for manual testing. =head2 Changes in DBI 1.602 (svn rev 10706) 8th February 2008 Fixed potential coredump if stack reallocated while calling back into perl from XS code. Thanks to John Gardiner Myers. Fixed DBI::Util::CacheMemory->new to not clear the cache. Fixed avg in DBI::Profile as_text() thanks to Abe Ingersoll. Fixed DBD::DBM bug in push_names thanks to J M Davitt. Fixed take_imp_data for some platforms thanks to Jeffrey Klein. Fixed docs tie'ing CacheKids (ie LRU cache) thanks to Peter John Edwards. Expanded DBI::DBD docs for driver authors thanks to Martin Evans. Enhanced t/80proxy.t test script. Enhanced t/85gofer.t test script thanks to Stig. Enhanced t/10examp.t test script thanks to David Cantrell. Documented $DBI::stderr as the default value of err for internal errors. Gofer changes: track_recent now also keeps track of N most recent errors. The connect method is now also counted in stats. =head2 Changes in DBI 1.601 (svn rev 10103), 21st October 2007 Fixed t/05thrclone.t to work with Test::More >= 0.71 thanks to Jerry D. Hedden and Michael G Schwern. Fixed DBI for VMS thanks to Peter (Stig) Edwards. Added client-side caching to DBD::Gofer. Can use any cache with get($k)/set($k,$v) methods, including all the Cache and Cache::Cache distribution modules plus Cache::Memcached, Cache::FastMmap etc. Works for all transports. Overridable per handle. Added DBI::Util::CacheMemory for use with DBD::Gofer caching. It's a very fast and small strict subset of Cache::Memory. =head2 Changes in DBI 1.59 (svn rev 9874), 23rd August 2007 Fixed DBI::ProfileData to unescape headers lines read from data file. Fixed DBI::ProfileData to not clobber $_, thanks to Alexey Tourbin. Fixed DBI::SQL::Nano to not clobber $_, thanks to Alexey Tourbin. Fixed DBI::PurePerl to return undef for ChildHandles if weaken not available. Fixed DBD::Proxy disconnect error thanks to Philip Dye. Fixed DBD::Gofer::Transport::Base bug (typo) in timeout code. Fixed DBD::Proxy rows method thanks to Philip Dye. Fixed dbiprof compile errors, thanks to Alexey Tourbin. Fixed t/03handle.t to skip some tests if ChildHandles not available. Added check_response_sub to DBI::Gofer::Execute =head2 Changes in DBI 1.58 (svn rev 9678), 25th June 2007 Fixed code triggering fatal error in bleadperl, thanks to Steve Hay. Fixed compiler warning thanks to Jerry D. Hedden. Fixed t/40profile.t to use int(dbi_time()) for systems like Cygwin where time() seems to be rounded not truncated from the high resolution time. Removed dump_results() test from t/80proxy.t. =head2 Changes in DBI 1.57 (svn rev 9639), 13th June 2007 Note: this release includes a change to the DBI::hash() function which will now produce different values than before *if* your perl was built with 64-bit 'int' type (i.e. "perl -V:intsize" says intsize='8'). It's relatively rare for perl to be configured that way, even on 64-bit systems. Fixed XS versions of select*_*() methods to call execute() fetch() etc., with inner handle instead of outer. Fixed execute_for_fetch() to not cache errstr values thanks to Bart Degryse. Fixed unused var compiler warning thanks to JDHEDDEN. Fixed t/86gofer_fail tests to be less likely to fail falsely. Changed DBI::hash to return 'I32' type instead of 'int' so results are portable/consistent regardless of size of the int type. Corrected timeout example in docs thanks to Egmont Koblinger. Changed t/01basic.t to warn instead of failing when it detects a problem with Math::BigInt (some recent versions had problems). Added support for !Time and !Time~N to DBI::Profile Path. See docs. Added extra trace info to connect_cached thanks to Walery Studennikov. Added non-random (deterministic) mode to DBI_GOFER_RANDOM mechanism. Added DBIXS_REVISION macro that drivers can use. Added more docs for private_attribute_info() method. DBI::Profile changes: dbi_profile() now returns ref to relevant leaf node. Don't profile DESTROY during global destruction. Added as_node_path_list() and as_text() methods. DBI::ProfileDumper changes: Don't write file if there's no profile data. Uses full natural precision when saving data (was using %.6f) Optimized flush_to_disk(). Locks the data file while writing. Enabled filename to be a code ref for dynamic names. DBI::ProfileDumper::Apache changes: Added Quiet=>1 to avoid write to STDERR in flush_to_disk(). Added Dir=>... to specify a writable destination directory. Enabled DBI_PROFILE_APACHE_LOG_DIR for mod_perl 1 as well as 2. Added parent pid to default data file name. DBI::ProfileData changes: Added DeleteFiles option to rename & delete files once read. Locks the data files while reading. Added ability to sort by Path elements. dbiprof changes: Added --dumpnodes and --delete options. Added/updated docs for both DBI::ProfileDumper && ::Apache. =head2 Changes in DBI 1.56 (svn rev 9660), 18th June 2007 Fixed printf arg warnings thanks to JDHEDDEN. Fixed returning driver-private sth attributes via gofer. Changed pod docs docs to use =head3 instead of =item so now in html you get links to individual methods etc. Changed default gofer retry_limit from 2 to 0. Changed tests to workaround Math::BigInt broken versions. Changed dbi_profile_merge() to dbi_profile_merge_nodes() old name still works as an alias for the new one. Removed old DBI internal sanity check that's no longer valid causing "panic: DESTROY (dbih_clearcom)" when tracing enabled Added DBI_GOFER_RANDOM env var that can be use to trigger random failures and delays when executing gofer requests. Designed to help test automatic retry on failures and timeout handling. Added lots more docs to all the DBD::Gofer and DBI::Gofer classes. =head2 Changes in DBI 1.55 (svn rev 9504), 4th May 2007 Fixed set_err() so HandleSetErr hook is executed reliably, if set. Fixed accuracy of profiling when perl configured to use long doubles. Fixed 42prof_data.t on fast systems with poor timers thanks to Malcolm Nooning. Fixed potential corruption in selectall_arrayref and selectrow_arrayref for compiled drivers, thanks to Rob Davies. Rebuild your compiled drivers after installing DBI. Changed some handle creation code from perl to C code, to reduce handle creation cost by ~20%. Changed internal implementation of the CachedKids attribute so it's a normal handle attribute (and initially undef). Changed connect_cached and prepare_cached to avoid a FETCH method call, and thereby reduced cost by ~5% and ~30% respectively. Changed _set_fbav to not croak when given a wrongly sized array, it now warns and adjusts the row buffer to match. Changed some internals to improve performance with threaded perls. Changed DBD::NullP to be slightly more useful for testing. Changed File::Spec prerequisite to not require a minimum version. Changed tests to work with other DBMs thanks to ZMAN. Changed ex/perl_dbi_nulls_test.pl to be more descriptive. Added more functionality to the (undocumented) Callback mechanism. Callbacks can now elect to provide a value to be returned, in which case the method won't be called. A callback for "*" is applied to all methods that don't have their own callback. Added $h->{ReadOnly} attribute. Added support for DBI Profile Path to contain refs to scalars which will be de-ref'd for each profile sample. Added dbilogstrip utility to edit DBI logs for diff'ing (gets installed) Added details for SQLite 3.3 to NULL handling docs thanks to Alex Teslik. Added take_imp_data() to DBI::PurePerl. Gofer related changes: Fixed gofer pipeone & stream transports to avoid risk of hanging. Improved error handling and tracing significantly. Added way to generate random 1-in-N failures for methods. Added automatic retry-on-error mechanism to gofer transport base class. Added tests to show automatic retry mechanism works a treat! Added go_retry_hook callback hook so apps can fine-tune retry behaviour. Added header to request and response packets for sanity checking and to enable version skew between client and server. Added forced_single_resultset, max_cached_sth_per_dbh and max_cached_dbh_per_drh to gofer executor config. Driver-private methods installed with install_method are now proxied. No longer does a round-trip to the server for methods it knows have not been overridden by the remote driver. Most significant aspects of gofer behaviour are controlled by policy mechanism. Added policy-controlled caching of results for some methods, such as schema metadata. The connect_cached and prepare_cached methods cache on client and server. The bind_param_array and execute_array methods are now supported. Worked around a DBD::Sybase bind_param bug (which is fixed in DBD::Sybase 1.07) Added goferperf.pl utility (doesn't get installed). Many other assorted Gofer related bug fixes, enhancements and docs. The http and mod_perl transports have been remove to their own distribution. Client and server will need upgrading together for this release. =head2 Changes in DBI 1.54 (svn rev 9157), 23rd February 2007 NOTE: This release includes the 'next big thing': DBD::Gofer. Take a look! WARNING: This version has some subtle changes in DBI internals. It's possible, though doubtful, that some may affect your code. I recommend some extra testing before using this release. Or perhaps I'm just being over cautious... Fixed type_info when called for multiple dbh thanks to Cosimo Streppone. Fixed compile warnings in bleadperl on freebsd-6.1-release and solaris 10g thanks to Philip M. Gollucci. Fixed to compile for perl built with -DNO_MATHOMS thanks to Jerry D. Hedden. Fixed to work for bleadperl (r29544) thanks to Nicholas Clark. Users of Perl >= 5.9.5 will require DBI >= 1.54. Fixed rare error when profiling access to $DBI::err etc tied variables. Fixed DBI::ProfileDumper to not be affected by changes to $/ and $, thanks to Michael Schwern. Changed t/40profile.t to skip tests for perl < 5.8.0. Changed setting trace file to no longer write "Trace file set" to new file. Changed 'handle cleared whilst still active' warning for dbh to only be given for dbh that have active sth or are not AutoCommit. Changed take_imp_data to call finish on all Active child sth. Changed DBI::PurePerl trace() method to be more consistent. Changed set_err method to effectively not append to errstr if the new errstr is the same as the current one. Changed handle factory methods, like connect, prepare, and table_info, to copy any error/warn/info state of the handle being returned up into the handle the method was called on. Changed row buffer handling to not alter NUM_OF_FIELDS if it's inconsistent with number of elements in row buffer array. Updated DBI::DBD docs re handling multiple result sets. Updated DBI::DBD docs for driver authors thanks to Ammon Riley and Dean Arnold. Updated column_info docs to note that if a table doesn't exist you get an sth for an empty result set and not an error. Added new DBD::Gofer 'stateless proxy' driver and framework, and the DBI test suite is now also executed via DBD::Gofer, and DBD::Gofer+DBI::PurePerl, in addition to DBI::PurePerl. Added ability for trace() to support filehandle argument, including tracing into a string, thanks to Dean Arnold. Added ability for drivers to implement func() method so proxy drivers can proxy the func method itself. Added SQL_BIGINT type code (resolved to the ODBC/JDBC value (-5)) Added $h->private_attribute_info method. =head2 Changes in DBI 1.53 (svn rev 7995), 31st October 2006 Fixed checks for weaken to work with early 5.8.x versions Fixed DBD::Proxy handling of some methods, including commit and rollback. Fixed t/40profile.t to be more insensitive to long double precision. Fixed t/40profile.t to be insensitive to small negative shifts in time thanks to Jamie McCarthy. Fixed t/40profile.t to skip tests for perl < 5.8.0. Fixed to work with current 'bleadperl' (~5.9.5) thanks to Steve Peters. Users of Perl >= 5.9.5 will require DBI >= 1.53. Fixed to be more robust against drivers not handling multiple result sets properly, thanks to Gisle Aas. Added array context support to execute_array and execute_for_fetch methods which returns executed tuples and rows affected. Added Tie::Cache::LRU example to docs thanks to Brandon Black. =head2 Changes in DBI 1.52 (svn rev 6840), 30th July 2006 Fixed memory leak (per handle) thanks to Nicholas Clark and Ephraim Dan. Fixed memory leak (16 bytes per sth) thanks to Doru Theodor Petrescu. Fixed execute_for_fetch/execute_array to RaiseError thanks to Martin J. Evans. Fixed for perl 5.9.4. Users of Perl >= 5.9.4 will require DBI >= 1.52. Updated DBD::File to 0.35 to match the latest release on CPAN. Added $dbh->statistics_info specification thanks to Brandon Black. Many changes and additions to profiling: Profile Path can now uses sane strings instead of obscure numbers, can refer to attributes, assorted magical values, and even code refs! Parsing of non-numeric DBI_PROFILE env var values has changed. Changed DBI::Profile docs extensively - many new features. See DBI::Profile docs for more information. =head2 Changes in DBI 1.51 (svn rev 6475), 6th June 2006 Fixed $dbh->clone method 'signature' thanks to Jeffrey Klein. Fixed default ping() method to return false if !$dbh->{Active}. Fixed t/40profile.t to be insensitive to long double precision. Fixed for perl 5.8.0's more limited weaken() function. Fixed DBD::Proxy to not alter $@ in disconnect or AUTOLOADd methods. Fixed bind_columns() to use return set_err(...) instead of die() to report incorrect number of parameters, thanks to Ben Thul. Fixed bind_col() to ignore undef as bind location, thanks to David Wheeler. Fixed for perl 5.9.x for non-threaded builds thanks to Nicholas Clark. Users of Perl >= 5.9.x will require DBI >= 1.51. Fixed fetching of rows as hash refs to preserve utf8 on field names from $sth->{NAME} thanks to Alexey Gaidukov. Fixed build on Win32 (dbd_postamble) thanks to David Golden. Improved performance for thread-enabled perls thanks to Gisle Aas. Drivers can now use PERL_NO_GET_CONTEXT thanks to Gisle Aas. Driver authors please read the notes in the DBI::DBD docs. Changed DBI::Profile format to always include a percentage, if not exiting then uses time between the first and last DBI call. Changed DBI::ProfileData to be more forgiving of systems with unstable clocks (where time may go backwards occasionally). Clarified the 'Subclassing the DBI' docs. Assorted minor changes to docs from comments on annocpan.org. Changed Makefile.PL to avoid incompatible options for old gcc. Added 'fetch array of hash refs' example to selectall_arrayref docs thanks to Tom Schindl. Added docs for $sth->{ParamArrays} thanks to Martin J. Evans. Added reference to $DBI::neat_maxlen in TRACING section of docs. Added ability for DBI::Profile Path to include attributes and a summary of where the code was called from. =head2 Changes in DBI 1.50 (svn rev 2307), 13 December 2005 Fixed Makefile.PL options for gcc bug introduced in 1.49. Fixed handle magic order to keep DBD::Oracle happy. Fixed selectrow_array to return empty list on error. Changed dbi_profile_merge() to be able to recurse and merge sub-trees of profile data. Added documentation for dbi_profile_merge(), including how to measure the time spent inside the DBI for an http request. =head2 Changes in DBI 1.49 (svn rev 2287), 29th November 2005 Fixed assorted attribute handling bugs in DBD::Proxy. Fixed croak() in DBD::NullP thanks to Sergey Skvortsov. Fixed handling of take_imp_data() and dbi_imp_data attribute. Fixed bugs in DBD::DBM thanks to Jeff Zucker. Fixed bug in DBI::ProfileDumper thanks to Sam Tregar. Fixed ping in DBD::Proxy thanks to George Campbell. Fixed dangling ref in $sth after parent $dbh destroyed with thanks to il@rol.ru for the bug report #13151 Fixed prerequisites to include Storable thanks to Michael Schwern. Fixed take_imp_data to be more practical. Change to require perl 5.6.1 (as advertised in 2003) not 5.6.0. Changed internals to be more strictly coded thanks to Andy Lester. Changed warning about multiple copies of Driver.xst found in @INC to ignore duplicated directories thanks to Ed Avis. Changed Driver.xst to enable drivers to define an dbd_st_prepare_sv function where the statement parameter is an SV. That enables compiled drivers to support SQL strings that are UTF-8. Changed "use DBI" to only set $DBI::connect_via if not already set. Changed docs to clarify pre-method clearing of err values. Added ability for DBI::ProfileData to edit profile path on loading. This enables aggregation of different SQL statements into the same profile node - very handy when not using placeholders or when working multiple separate tables for the same thing (ie logtable_2005_11_28) Added $sth->{ParamTypes} specification thanks to Dean Arnold. Added $h->{Callbacks} attribute to enable code hooks to be invoked when certain methods are called. For example: $dbh->{Callbacks}->{prepare} = sub { ... }; With thanks to David Wheeler for the kick start. Added $h->{ChildHandles} (using weakrefs) thanks to Sam Tregar I've recoded it in C so there's no significant performance impact. Added $h->{Type} docs (returns 'dr', 'db', or 'st') Adding trace message in DESTROY if InactiveDestroy enabled. Added %drhs = DBI->installed_drivers(); Ported DBI::ProfileDumper::Apache to mod_perl2 RC5+ thanks to Philip M. Golluci =head2 Changes in DBI 1.48 (svn rev 928), 14th March 2005 Fixed DBI::DBD::Metadata generation of type_info_all thanks to Steffen Goeldner (driver authors who have used it should rerun it). Updated docs for NULL Value placeholders thanks to Brian Campbell. Added multi-keyfield nested hash fetching to fetchall_hashref() thanks to Zhuang (John) Li for polishing up my draft. Added registered driver prefixes: amzn_ for DBD::Amazon and yaswi_ for DBD::Yaswi. =head2 Changes in DBI 1.47 (svn rev 854), 2nd February 2005 Fixed DBI::ProxyServer to not create pid files by default. References: Ubuntu Security Notice USN-70-1, CAN-2005-0077 Thanks to Javier Fernández-Sanguino Peña from the Debian Security Audit Project, and Jonathan Leffler. Fixed some tests to work with older Test::More versions. Fixed setting $DBI::err/errstr in DBI::PurePerl. Fixed potential undef warning from connect_cached(). Fixed $DBI::lasth handling for DESTROY so lasth points to parent even if DESTROY called other methods. Fixed DBD::Proxy method calls to not alter $@. Fixed DBD::File problem with encoding pragma thanks to Erik Rijkers. Changed error handling so undef errstr doesn't cause warning. Changed DBI::DBD docs to use =head3/=head4 pod thanks to Jonathan Leffler. This may generate warnings for perl 5.6. Changed DBI::PurePerl to set autoflush on trace filehandle. Changed DBD::Proxy to treat Username as a local attribute so recent DBI version can be used with old DBI::ProxyServer. Changed driver handle caching in DBD::File. Added $GetInfoType{SQL_DATABASE_NAME} thanks to Steffen Goeldner. Updated docs to recommend some common DSN string attributes. Updated connect_cached() docs with issues and suggestions. Updated docs for NULL Value placeholders thanks to Brian Campbell. Updated docs for primary_key_info and primary_keys. Updated docs to clarify that the default fetchrow_hashref behaviour, of returning a ref to a new hash for each row, will not change. Updated err/errstr/state docs for DBD authors thanks to Steffen Goeldner. Updated handle/attribute docs for DBD authors thanks to Steffen Goeldner. Corrected and updated LongReadLen docs thanks to Bart Lateur. Added DBD::JDBC as a registered driver. =head2 Changes in DBI 1.46 (svn rev 584), 16th November 2004 Fixed parsing bugs in DBI::SQL::Nano thanks to Jeff Zucker. Fixed a couple of bad links in docs thanks to Graham Barr. Fixed test.pl Win32 undef warning thanks to H.Merijn Brand & David Repko. Fixed minor issues in DBI::DBD::Metadata thanks to Steffen Goeldner. Fixed DBI::PurePerl neat() to use double quotes for utf8. Changed execute_array() definition, and default implementation, to not consider scalar values for execute tuple count. See docs. Changed DBD::File to enable ShowErrorStatement by default, which affects DBD::File subclasses such as DBD::CSV and DBD::DBM. Changed use DBI qw(:utils) tag to include $neat_maxlen. Updated Roadmap and ToDo. Added data_string_diff() data_string_desc() and data_diff() utility functions to help diagnose Unicode issues. All can be imported via the use DBI qw(:utils) tag. =head2 Changes in DBI 1.45 (svn rev 480), 6th October 2004 Fixed DBI::DBD code for drivers broken in 1.44. Fixed "Free to wrong pool"/"Attempt to free unreferenced scalar" in FETCH. =head2 Changes in DBI 1.44 (svn rev 478), 5th October 2004 Fixed build issues on VMS thanks to Jakob Snoer. Fixed DBD::File finish() method to return 1 thanks to Jan Dubois. Fixed rare core dump during global destruction thanks to Mark Jason Dominus. Fixed risk of utf8 flag persisting from one row to the next. Changed bind_param_array() so it doesn't require all bind arrays to have the same number of elements. Changed bind_param_array() to error if placeholder number <= 0. Changed execute_array() definition, and default implementation, to effectively NULL-pad shorter bind arrays. Changed execute_array() to return "0E0" for 0 as per the docs. Changed execute_for_fetch() definition, and default implementation, to return "0E0" for 0 like execute() and execute_array(). Changed Test::More prerequisite to Test::Simple (which is also the name of the distribution both are packaged in) to work around ppm behaviour. Corrected docs to say that get/set of unknown attribute generates a warning and is no longer fatal. Thanks to Vadim. Corrected fetchall_arrayref() docs example thanks to Drew Broadley. Added $h1->swap_inner_handle($h2) sponsored by BizRate.com =head2 Changes in DBI 1.43 (svn rev 377), 2nd July 2004 Fixed connect() and connect_cached() RaiseError/PrintError which would sometimes show "(no error string)" as the error. Fixed compiler warning thanks to Paul Marquess. Fixed "trace level set to" trace message thanks to H.Merijn Brand. Fixed DBD::DBM $dbh->{dbm_tables}->{...} to be keyed by the table name not the file name thanks to Jeff Zucker. Fixed last_insert_id(...) thanks to Rudy Lippan. Fixed propagation of scalar/list context into proxied methods. Fixed DBI::Profile::DESTROY to not alter $@. Fixed DBI::ProfileDumper new() docs thanks to Michael Schwern. Fixed _load_class to propagate $@ thanks to Drew Taylor. Fixed compile warnings on Win32 thanks to Robert Baron. Fixed problem building with recent versions of MakeMaker. Fixed DBD::Sponge not to generate warning with threads. Fixed DBI_AUTOPROXY to work more than once thanks to Steven Hirsch. Changed TraceLevel 1 to not show recursive/nested calls. Changed getting or setting an invalid attribute to no longer be a fatal error but generate a warning instead. Changed selectall_arrayref() to call finish() if $attr->{MaxRows} is defined. Changed all tests to use Test::More and enhanced the tests thanks to Stevan Little and Andy Lester. See http://qa.perl.org/phalanx/ Changed Test::More minimum prerequisite version to 0.40 (2001). Changed DBI::Profile header to include the date and time. Added DBI->parse_dsn($dsn) method. Added warning if build directory path contains white space. Added docs for parse_trace_flags() and parse_trace_flag(). Removed "may change" warnings from the docs for table_info(), primary_key_info(), and foreign_key_info() methods. =head2 Changes in DBI 1.42 (svn rev 222), 12th March 2004 Fixed $sth->{NUM_OF_FIELDS} of non-executed statement handle to be undef as per the docs (it was 0). Fixed t/41prof_dump.t to work with perl5.9.1. Fixed DBD_ATTRIB_DELETE macro thanks to Marco Paskamp. Fixed DBI::PurePerl looks_like_number() and $DBI::rows. Fixed ref($h)->can("foo") to not croak. Changed attributes (NAME, TYPE etc) of non-executed statement handle to be undef instead of triggering an error. Changed ShowErrorStatement to apply to more $dbh methods. Changed DBI_TRACE env var so just does this at load time: DBI->trace(split '=', $ENV{DBI_TRACE}, 2); Improved "invalid number of parameters" error message. Added DBI::common as base class for DBI::db, DBD::st etc. Moved methods common to all handles into DBI::common. Major tracing enhancement: Added $h->parse_trace_flags("foo|SQL|7") to map a group of trace flags into the corresponding trace flag bits. Added automatic calling of parse_trace_flags() if setting the trace level to a non-numeric value: $h->{TraceLevel}="foo|SQL|7"; $h->trace("foo|SQL|7"); DBI->connect("dbi:Driver(TraceLevel=SQL|foo):...", ...); Currently no trace flags have been defined. Added to, and reworked, the trace documentation. Added dbivport.h for driver authors to use. Major driver additions that Jeff Zucker and I have been working on: Added DBI::SQL::Nano a 'smaller than micro' SQL parser with an SQL::Statement compatible API. If SQL::Statement is installed then DBI::SQL::Nano becomes an empty subclass of SQL::Statement, unless the DBI_SQL_NANO env var is true. Added DBD::File, modified to use DBI::SQL::Nano. Added DBD::DBM, an SQL interface to DBM files using DBD::File. Documentation changes: Corrected typos in docs thanks to Steffen Goeldner. Corrected execute_for_fetch example thanks to Dean Arnold. =head2 Changes in DBI 1.41 (svn rev 130), 22nd February 2004 Fixed execute_for_array() so tuple_status parameter is optional as per docs, thanks to Ed Avis. Fixed execute_for_array() docs to say that it returns undef if any of the execute() calls fail. Fixed take_imp_data() test on m68k reported by Christian Hammers. Fixed write_typeinfo_pm inconsistencies in DBI::DBD::Metadata thanks to Andy Hassall. Fixed $h->{TraceLevel} to not return DBI->trace trace level which it used to if DBI->trace trace level was higher. Changed set_err() to append to errstr, with a leading "\n" if it's not empty, so that multiple error/warning messages are recorded. Changed trace to limit elements dumped when an array reference is returned from a method to the max(40, $DBI::neat_maxlen/10) so that fetchall_arrayref(), for example, doesn't flood the trace. Changed trace level to be a four bit integer (levels 0 thru 15) and a set of topic flags (no topics have been assigned yet). Changed column_info() to check argument count. Extended bind_param() TYPE attribute specification to imply standard formating of value, eg SQL_DATE implies 'YYYY-MM-DD'. Added way for drivers to indicate 'success with info' or 'warning' by setting err to "0" for warning and "" for information. Both values are false and so don't trigger RaiseError etc. Thanks to Steffen Goeldner for the original idea. Added $h->{HandleSetErr} = sub { ... } to be called at the point that an error, warn, or info state is recorded. The code can alter the err, errstr, and state values (e.g., to promote an error to a warning, or the reverse). Added $h->{PrintWarn} attribute to enable printing of warnings recorded by the driver. Defaults to same value as $^W (perl -w). Added $h->{ErrCount} attribute, incremented whenever an error is recorded by the driver via set_err(). Added $h->{Executed} attribute, set if do()/execute() called. Added \%attr parameter to foreign_key_info() method. Added ref count of inner handle to "DESTROY ignored for outer" msg. Added Win32 build config checks to DBI::DBD thanks to Andy Hassall. Added bind_col to Driver.xst so drivers can define their own. Added TYPE attribute to bind_col and specified the expected driver behaviour. Major update to signal handling docs thanks to Lincoln Baxter. Corrected dbiproxy usage doc thanks to Christian Hammers. Corrected type_info_all index hash docs thanks to Steffen Goeldner. Corrected type_info COLUMN_SIZE to chars not bytes thanks to Dean Arnold. Corrected get_info() docs to include details of DBI::Const::GetInfoType. Clarified that $sth->{PRECISION} is OCTET_LENGTH for char types. =head2 Changes in DBI 1.40, 7th January 2004 Fixed handling of CachedKids when DESTROYing threaded handles. Fixed sql_user_name() in DBI::DBD::Metadata (used by write_getinfo_pm) to use $dbh->{Username}. Driver authors please update your code. Changed connect_cached() when running under Apache::DBI to route calls to Apache::DBI::connect(). Added CLONE() to DBD::Sponge and DBD::ExampleP. Added warning when starting a new thread about any loaded driver which does not have a CLONE() function. Added new prepare_cache($sql, \%attr, 3) option to manage Active handles. Added SCALE and NULLABLE support to DBD::Sponge. Added missing execute() in fetchall_hashref docs thanks to Iain Truskett. Added a CONTRIBUTING section to the docs with notes on creating patches. =head2 Changes in DBI 1.39, 27th November 2003 Fixed STORE to not clear error during nested DBI call, again/better, thanks to Tony Bowden for the report and helpful test case. Fixed DBI dispatch to not try to use AUTOLOAD for driver methods unless the method has been declared (as methods should be when using AUTOLOAD). This fixes a problem when the Attribute::Handlers module is loaded. Fixed cwd check code to use $Config{path_sep} thanks to Steve Hay. Fixed unqualified croak() calls thanks to Steffen Goeldner. Fixed DBD::ExampleP TYPE and PRECISION attributes thanks to Tom Lowery. Fixed tracing of methods that only get traced at high trace levels. The level 1 trace no longer includes nested method calls so it generally just shows the methods the application explicitly calls. Added line to trace log (level>=4) when err/errstr is cleared. Updated docs for InactiveDestroy and point out where and when the trace includes the process id. Update DBI::DBD docs thanks to Steffen Goeldner. Removed docs saying that the DBI->data_sources method could be passed a $dbh. The $dbh->data_sources method should be used instead. Added link to 'DBI recipes' thanks to Giuseppe Maxia: http://gmax.oltrelinux.com/dbirecipes.html (note that this is not an endorsement that the recipies are 'optimal') Note: There is a bug in perl 5.8.2 when configured with threads and debugging enabled (bug #24463) which causes a DBI test to fail. =head2 Changes in DBI 1.38, 21th August 2003 NOTE: The DBI now requires perl version 5.6.0 or later. (As per notice in DBI 1.33 released 27th February 2003) Fixed spurious t/03handles failure on 64bit perls reported by H.Merijn Brand. Fixed spurious t/15array failure on some perl versions thanks to Ed Avis. Fixed build using dmake on windows thanks to Steffen Goeldner. Fixed build on using some shells thanks to Gurusamy Sarathy. Fixed ParamValues to only be appended to ShowErrorStatement if not empty. Fixed $dbh->{Statement} not being writable by drivers in some cases. Fixed occasional undef warnings on connect failures thanks to Ed Avis. Fixed small memory leak when using $sth->{NAME..._hash}. Fixed 64bit warnings thanks to Marian Jancar. Fixed DBD::Proxy::db::DESTROY to not alter $@ thanks to Keith Chapman. Fixed Makefile.PL status from WriteMakefile() thanks to Leon Brocard. Changed "Can't set ...->{Foo}: unrecognised attribute" from an error to a warning when running with DBI::ProxyServer to simplify upgrades. Changed execute_array() to no longer require ArrayTupleStatus attribute. Changed DBI->available_drivers to not hide DBD::Sponge. Updated/moved placeholder docs to a better place thanks to Johan Vromans. Changed dbd_db_do4 api in Driver.xst to match dbd_st_execute (return int, not bool), relevant only to driver authors. Changed neat(), and thus trace(), so strings marked as utf8 are presented in double quotes instead of single quotes and are not sanitized. Added $dbh->data_sources method. Added $dbh->last_insert_id method. Added $sth->execute_for_fetch($fetch_tuple_sub, \@tuple_status) method. Added DBI->installed_versions thanks to Jeff Zucker. Added $DBI::Profile::ON_DESTROY_DUMP variable. Added docs for DBD::Sponge thanks to Mark Stosberg. =head2 Changes in DBI 1.37, 15th May 2003 Fixed "Can't get dbh->{Statement}: unrecognised attribute" error in test caused by change to perl internals in 5.8.0 Fixed to build with latest development perl (5.8.1@19525). Fixed C code to use all ANSI declarations thanks to Steven Lembark. =head2 Changes in DBI 1.36, 11th May 2003 Fixed DBI->connect to carp instead of croak on 'old-style' usage. Fixed connect(,,, { RootClass => $foo }) to not croak if module not found. Fixed code generated by DBI::DBD::Metadata thanks to DARREN@cpan.org (#2270) Fixed DBI::PurePerl to not reset $@ during method dispatch. Fixed VMS build thanks to Michael Schwern. Fixed Proxy disconnect thanks to Steven Hirsch. Fixed error in DBI::DBD docs thanks to Andy Hassall. Changed t/40profile.t to not require Time::HiRes. Changed DBI::ProxyServer to load DBI only on first request, which helps threaded server mode, thanks to Bob Showalter. Changed execute_array() return value from row count to executed tuple count, and now the ArrayTupleStatus attribute is mandatory. NOTE: That is an API definition change that may affect your code. Changed CompatMode attribute to also disable attribute 'quick FETCH'. Changed attribute FETCH to be slightly faster thanks to Stas Bekman. Added workaround for perl bug #17575 tied hash nested FETCH thanks to Silvio Wanka. Added Username and Password attributes to connect(..., \%attr) and so also embedded in DSN like "dbi:Driver(Username=user,Password=pass):..." Username and Password can't contain ")", ",", or "=" characters. The predence is DSN first, then \%attr, then $user & $pass parameters, and finally the DBI_USER & DBI_PASS environment variables. The Username attribute is stored in the $dbh but the Password is not. Added ProxyServer HOWTO configure restrictions docs thanks to Jochen Wiedmann. Added MaxRows attribute to selectcol_arrayref prompted by Wojciech Pietron. Added dump_handle as a method not just a DBI:: utility function. Added on-demand by-row data feed into execute_array() using code ref, or statement handle. For example, to insert from a select: $insert_sth->execute_array( { ArrayTupleFetch => $select_sth, ... } ) Added warning to trace log when $h->{foo}=... is ignored due to invalid prefix (e.g., not 'private_'). =head2 Changes in DBI 1.35, 7th March 2003 Fixed memory leak in fetchrow_hashref introduced in DBI 1.33. Fixed various DBD::Proxy errors introduced in DBI 1.33. Fixed to ANSI C in dbd_dr_data_sources thanks to Jonathan Leffler. Fixed $h->can($method_name) to return correct code ref. Removed DBI::Format from distribution as it's now part of the separate DBI::Shell distribution by Tom Lowery. Updated DBI::DBD docs with a note about the CLONE method. Updated DBI::DBD docs thanks to Jonathan Leffler. Updated DBI::DBD::Metadata for perl 5.5.3 thanks to Jonathan Leffler. Added note to install_method docs about setup_driver() method. =head2 Changes in DBI 1.34, 28th February 2003 Fixed DBI::DBD docs to refer to DBI::DBD::Metadata thanks to Jonathan Leffler. Fixed dbi_time() compile using BorlandC on Windows thanks to Steffen Goeldner. Fixed profile tests to do enough work to measure on Windows. Fixed disconnect_all() to not be required by drivers. Added $okay = $h->can($method_name) to check if a method exists. Added DBD::*::*->install_method($method_name, \%attr) so driver private methods can be 'installed' into the DBI dispatcher and no longer need to be called using $h->func(..., $method_name). Enhanced $dbh->clone() and documentation. Enhanced docs to note that dbi_time(), and thus profiling, is limited to only millisecond (seconds/1000) resolution on Windows. Removed old DBI::Shell from distribution and added Tom Lowery's improved version to the Bundle::DBI file. Updated minimum version numbers for modules in Bundle::DBI. =head2 Changes in DBI 1.33, 27th February 2003 NOTE: Future versions of the DBI *will not* support perl 5.6.0 or earlier. : Perl 5.6.1 will be the minimum supported version. NOTE: The "old-style" connect: DBI->connect($database, $user, $pass, $driver); : has been deprecated for several years and will now generate a warning. : It will be removed in a later release. Please change any old connect() calls. Added $dbh2 = $dbh1->clone to make a new connection to the database that is identical to the original one. clone() can be called even after the original handle has been disconnected. See the docs for more details. Fixed merging of profile data to not sum DBIprof_FIRST_TIME values. Fixed unescaping of newlines in DBI::ProfileData thanks to Sam Tregar. Fixed Taint bug with fetchrow_hashref with help from Bradley Baetz. Fixed $dbh->{Active} for DBD::Proxy, reported by Bob Showalter. Fixed STORE to not clear error during nested DBI call, thanks to Tony Bowden for the report and helpful test case. Fixed DBI::PurePerl error clearing behaviour. Fixed dbi_time() and thus DBI::Profile on Windows thanks to Smejkal Petr. Fixed problem that meant ShowErrorStatement could show wrong statement, thanks to Ron Savage for the report and test case. Changed Apache::DBI hook to check for $ENV{MOD_PERL} instead of $ENV{GATEWAY_INTERFACE} thanks to Ask Bjoern Hansen. No longer tries to dup trace logfp when an interpreter is being cloned. Database handles no longer inherit shared $h->err/errstr/state storage from their drivers, so each $dbh has it's own $h->err etc. values and is no longer affected by calls made on other dbh's. Now when a dbh is destroyed it's err/errstr/state values are copied up to the driver so checking $DBI::errstr still works as expected. Build / portability fixes: Fixed t/40profile.t to not use Time::HiRes. Fixed t/06attrs.t to not be locale sensitive, reported by Christian Hammers. Fixed sgi compiler warnings, reported by Paul Blake. Fixed build using make -j4, reported by Jonathan Leffler. Fixed build and tests under VMS thanks to Craig A. Berry. Documentation changes: Documented $high_resolution_time = dbi_time() function. Documented that bind_col() can take an attribute hash. Clarified documentation for ParamValues attribute hash keys. Many good DBI documentation tweaks from Jonathan Leffler, including a major update to the DBI::DBD driver author guide. Clarified that execute() should itself call finish() if it's called on a statement handle that's still active. Clarified $sth->{ParamValues}. Driver authors please note. Removed "NEW" markers on some methods and attributes and added text to each giving the DBI version it was added in, if it was added after DBI 1.21 (Feb 2002). Changes of note for authors of all drivers: Added SQL_DATA_TYPE, SQL_DATETIME_SUB, NUM_PREC_RADIX, and INTERVAL_PRECISION fields to docs for type_info_all. There were already in type_info(), but type_info_all() didn't specify the index values. Please check and update your type_info_all() code. Added DBI::DBD::Metadata module that auto-generates your drivers get_info and type_info_all data and code, thanks mainly to Jonathan Leffler and Steffen Goeldner. If you've not implemented get_info and type_info_all methods and your database has an ODBC driver available then this will do all the hard work for you! Drivers should no longer pass Err, Errstr, or State to _new_drh or _new_dbh functions. Please check that you support the slightly modified behaviour of $sth->{ParamValues}, e.g., always return hash with keys if possible. Changes of note for authors of compiled drivers: Added dbd_db_login6 & dbd_st_finish3 prototypes thanks to Jonathan Leffler. All dbd_*_*() functions implemented by drivers must have a corresponding #define dbd_*_* _*_* otherwise the driver may not work with a future release of the DBI. Changes of note for authors of drivers which use Driver.xst: Some new method hooks have been added are are enabled by defining corresponding macros: $drh->data_sources() - dbd_dr_data_sources $dbh->do() - dbd_db_do4 The following methods won't be compiled into the driver unless the corresponding macro has been #defined: $drh->disconnect_all() - dbd_discon_all =head2 Changes in DBI 1.32, 1st December 2002 Fixed to work with 5.005_03 thanks to Tatsuhiko Miyagawa (I've not tested it). Reenabled taint tests (accidentally left disabled) spotted by Bradley Baetz. Improved docs for FetchHashKeyName attribute thanks to Ian Barwick. Fixed core dump if fetchrow_hashref given bad argument (name of attribute with a value that wasn't an array reference), spotted by Ian Barwick. Fixed some compiler warnings thanks to David Wheeler. Updated Steven Hirsch's enhanced proxy work (seems I left out a bit). Made t/40profile.t tests more reliable, reported by Randy, who is part of the excellent CPAN testers team: http://testers.cpan.org/ (Please visit, see the valuable work they do and, ideally, join in!) =head2 Changes in DBI 1.31, 29th November 2002 The fetchall_arrayref method, when called with a $maxrows parameter, no longer gives an error if called again after all rows have been fetched. This simplifies application logic when fetching in batches. Also added batch-fetch while() loop example to the docs. The proxy now supports non-lazy (synchronous) prepare, positioned updates (for selects containing 'for update'), PlRPC config set via attributes, and accurate propagation of errors, all thanks to Steven Hirsch (plus a minor fix from Sean McMurray and doc tweaks from Michael A Chase). The DBI_AUTOPROXY env var can now hold the full dsn of the proxy driver plus attributes, like "dbi:Proxy(proxy_foo=>1):host=...". Added TaintIn & TaintOut attributes to give finer control over tainting thanks to Bradley Baetz. The RootClass attribute no longer ignores failure to load a module, but also doesn't try to load a module if the class already exists, with thanks to James FitzGibbon. HandleError attribute works for connect failures thanks to David Wheeler. The connect() RaiseError/PrintError message now includes the username. Changed "last handle unknown or destroyed" warning to be a trace message. Removed undocumented $h->event() method. Further enhancements to DBD::PurePerl accuracy. The CursorName attribute now defaults to undef and not an error. DBI::Profile changes: New DBI::ProfileDumper, DBI::ProfileDumper::Apache, and DBI::ProfileData modules (to manage the storage and processing of profile data), plus dbiprof program for analyzing profile data - with many thanks to Sam Tregar. Added $DBI::err (etc) tied variable lookup time to profile. Added time for DESTROY method into parent handles profile (used to be ignored). Documentation changes: Documented $dbh = $sth->{Database} attribute. Documented $dbh->connected(...) post-connection call when subclassing. Updated some minor doc issues thanks to H.Merijn Brand. Updated Makefile.PL example in DBI::DBD thanks to KAWAI,Takanori. Fixed execute_array() example thanks to Peter van Hardenberg. Changes for driver authors, not required but strongly recommended: Change DBIS to DBIc_DBISTATE(imp_xxh) [or imp_dbh, imp_sth etc] Change DBILOGFP to DBIc_LOGPIO(imp_xxh) [or imp_dbh, imp_sth etc] Any function from which all instances of DBIS and DBILOGFP are removed can also have dPERLINTERP removed (a good thing). All use of the DBIh_EVENT* macros should be removed. Major update to DBI::DBD docs thanks largely to Jonathan Leffler. Add these key values: 'Err' => \my $err, 'Errstr' => \my $errstr, to the hash passed to DBI::_new_dbh() in your driver source code. That will make each $dbh have it's own $h->err and $h->errstr values separate from other $dbh belonging to the same driver. If you have a ::db or ::st DESTROY methods that do nothing you can now remove them - which speeds up handle destruction. =head2 Changes in DBI 1.30, 18th July 2002 Fixed problems with selectrow_array, selectrow_arrayref, and selectall_arrayref introduced in DBI 1.29. Fixed FETCHing a handle attribute to not clear $DBI::err etc (broken in 1.29). Fixed core dump at trace level 9 or above. Fixed compilation with perl 5.6.1 + ithreads (i.e. Windows). Changed definition of behaviour of selectrow_array when called in a scalar context to match fetchrow_array. Corrected selectrow_arrayref docs which showed selectrow_array thanks to Paul DuBois. =head2 Changes in DBI 1.29, 15th July 2002 NOTE: This release changes the specified behaviour for the : fetchrow_array method when called in a scalar context: : The DBI spec used to say that it would return the FIRST field. : Which field it returns (i.e., the first or the last) is now undefined. : This does not affect statements that only select one column, which is : usually the case when fetchrow_array is called in a scalar context. : FYI, this change was triggered by discovering that the fetchrow_array : implementation in Driver.xst (used by most compiled drivers) : didn't match the DBI specification. Rather than change the code : to match, and risk breaking existing applications, I've changed the : specification (that part was always of dubious value anyway). NOTE: Future versions of the DBI may not support for perl 5.5 much longer. : If you are still using perl 5.005_03 you should be making plans to : upgrade to at least perl 5.6.1, or 5.8.0. Perl 5.8.0 is due to be : released in the next week or so. (Although it's a "point 0" release, : it is the most thoroughly tested release ever.) Added XS/C implementations of selectrow_array, selectrow_arrayref, and selectall_arrayref to Driver.xst. See DBI 1.26 Changes for more info. Removed support for the old (fatally flawed) "5005" threading model. Added support for new perl 5.8 iThreads thanks to Gerald Richter. (Threading support and safety should still be regarded as beta quality until further notice. But it's much better than it was.) Updated the "Threads and Thread Safety" section of the docs. The trace output can be sent to STDOUT instead of STDERR by using "STDOUT" as the name of the file, i.e., $h->trace(..., "STDOUT") Added pointer to perlreftut, perldsc, perllol, and perlboot manuals into the intro section of the docs, suggested by Brian McCain. Fixed DBI::Const::GetInfo::* pod docs thanks to Zack Weinberg. Some changes to how $dbh method calls are treated by DBI::Profile: Meta-data methods now clear $dbh->{Statement} on entry. Some $dbh methods are now profiled as if $dbh->{Statement} was empty (because thet're unlikely to actually relate to its contents). Updated dbiport.h to ppport.h from perl 5.8.0. Tested with perl 5.5.3 (vanilla, Solaris), 5.6.1 (vanilla, Solaris), and perl 5.8.0 (RC3@17527 with iThreads & Multiplicity on Solaris and FreeBSD). =head2 Changes in DBI 1.28, 14th June 2002 Added $sth->{ParamValues} to return a hash of the most recent values bound to placeholders via bind_param() or execute(). Individual drivers need to be updated to support it. Enhanced ShowErrorStatement to include ParamValues if available: "DBD::foo::st execute failed: errstr [for statement ``...'' with params: 1='foo']" Further enhancements to DBD::PurePerl accuracy. =head2 Changes in DBI 1.27, 13th June 2002 Fixed missing column in C implementation of fetchall_arrayref() thanks to Philip Molter for the prompt reporting of the problem. =head2 Changes in DBI 1.26, 13th June 2002 Fixed t/40profile.t to work on Windows thanks to Smejkal Petr. Fixed $h->{Profile} to return undef, not error, if not set. Fixed DBI->available_drivers in scalar context thanks to Michael Schwern. Added C implementations of selectrow_arrayref() and fetchall_arrayref() in Driver.xst. All compiled drivers using Driver.xst will now be faster making those calls. Most noticeable with fetchall_arrayref for many rows or selectrow_arrayref with a fast query. For example, using DBD::mysql a selectrow_arrayref for a single row using a primary key is ~20% faster, and fetchall_arrayref for 20000 rows is twice as fast! Drivers just need to be recompiled and reinstalled to enable it. The fetchall_arrayref speed up only applies if $slice parameter is not used. Added $max_rows parameter to fetchall_arrayref() to optionally limit the number of rows returned. Can now fetch batches of rows. Added MaxRows attribute to selectall_arrayref() which then passes it to fetchall_arrayref(). Changed selectrow_array to make use of selectrow_arrayref. Trace level 1 now shows first two parameters of all methods (used to only for that for some, like prepare,execute,do etc) Trace indicator for recursive calls (first char on trace lines) now starts at 1 not 2. Documented that $h->func() does not trigger RaiseError etc so applications must explicitly check for errors. DBI::Profile with DBI_PROFILE now shows percentage time inside DBI. HandleError docs updated to show that handler can edit error message. HandleError subroutine interface is now regarded as stable. =head2 Changes in DBI 1.25, 5th June 2002 Fixed build problem on Windows and some compiler warnings. Fixed $dbh->{Driver} and $sth->{Statement} for driver internals These are 'inner' handles as per behaviour prior to DBI 1.16. Further minor improvements to DBI::PurePerl accuracy. =head2 Changes in DBI 1.24, 4th June 2002 Fixed reference loop causing a handle/memory leak that was introduced in DBI 1.16. Fixed DBI::Format to work with 'filehandles' from IO::Scalar and similar modules thanks to report by Jeff Boes. Fixed $h->func for DBI::PurePerl thanks to Jeff Zucker. Fixed $dbh->{Name} for DBI::PurePerl thanks to Dean Arnold. Added DBI method call profiling and benchmarking. This is a major new addition to the DBI. See $h->{Profile} attribute and DBI::Profile module. For a quick trial, set the DBI_PROFILE environment variable and run your favourite DBI script. Try it with DBI_PROFILE set to 1, then try 2, 4, 8, 10, and -10. Have fun! Added execute_array() and bind_param_array() documentation with thanks to Dean Arnold. Added notes about the DBI having not yet been tested with iThreads (testing and patches for SvLOCK etc welcome). Removed undocumented Handlers attribute (replaced by HandleError). Tested with 5.5.3 and 5.8.0 RC1. =head2 Changes in DBI 1.23, 25th May 2002 Greatly improved DBI::PurePerl in performance and accuracy. Added more detail to DBI::PurePerl docs about what's not supported. Fixed undef warnings from t/15array.t and DBD::Sponge. =head2 Changes in DBI 1.22, 22nd May 2002 Added execute_array() and bind_param_array() with special thanks to Dean Arnold. Not yet documented. See t/15array.t for examples. All drivers now automatically support these methods. Added DBI::PurePerl, a transparent DBI emulation for pure-perl drivers with special thanks to Jeff Zucker. Perldoc DBI::PurePerl for details. Added DBI::Const::GetInfo* modules thanks to Steffen Goeldner. Added write_getinfo_pm utility to DBI::DBD thanks to Steffen Goeldner. Added $allow_active==2 mode for prepare_cached() thanks to Stephen Clouse. Updated DBI::Format to Revision 11.4 thanks to Tom Lowery. Use File::Spec in Makefile.PL (helps VMS etc) thanks to Craig Berry. Extend $h->{Warn} to commit/rollback ineffective warning thanks to Jeff Baker. Extended t/preparse.t and removed "use Devel::Peek" thanks to Scott Hildreth. Only copy Changes to blib/lib/Changes.pm once thanks to Jonathan Leffler. Updated internals for modern perls thanks to Jonathan Leffler and Jeff Urlwin. Tested with perl 5.7.3 (just using default perl config). Documentation changes: Added 'Catalog Methods' section to docs thanks to Steffen Goeldner. Updated README thanks to Michael Schwern. Clarified that driver may choose not to start new transaction until next use of $dbh after commit/rollback. Clarified docs for finish method. Clarified potentials problems with prepare_cached() thanks to Stephen Clouse. =head2 Changes in DBI 1.21, 7th February 2002 The minimum supported perl version is now 5.005_03. Fixed DBD::Proxy support for AutoCommit thanks to Jochen Wiedmann. Fixed DBI::ProxyServer bind_param(_inout) handing thanks to Oleg Mechtcheriakov. Fixed DBI::ProxyServer fetch loop thanks to nobull@mail.com. Fixed install_driver do-the-right-thing with $@ on error. It, and connect(), will leave $@ empty on success and holding the error message on error. Thanks to Jay Lawrence, Gavin Sherlock and others for the bug report. Fixed fetchrow_hashref to assign columns to the hash left-to-right so later fields with the same name overwrite earlier ones as per DBI < 1.15, thanks to Kay Roepke. Changed tables() to use quote_indentifier() if the driver returns a true value for $dbh->get_info(29) # SQL_IDENTIFIER_QUOTE_CHAR Changed ping() so it no longer triggers RaiseError/PrintError. Changed connect() to not call $class->install_driver unless needed. Changed DESTROY to catch fatal exceptions and append to $@. Added ISO SQL/CLI & ODBCv3 data type definitions thanks to Steffen Goeldner. Removed the definition of SQL_BIGINT data type constant as the value is inconsistent between standards (ODBC=-5, SQL/CLI=25). Added $dbh->column_info(...) thanks to Steffen Goeldner. Added $dbh->foreign_key_info(...) thanks to Steffen Goeldner. Added $dbh->quote_identifier(...) insipred by Simon Oliver. Added $dbh->set_err(...) for DBD authors and DBI subclasses (actually been there for a while, now expanded and documented). Added $h->{HandleError} = sub { ... } addition and/or alternative to RaiseError/PrintError. See the docs for more info. Added $h->{TraceLevel} = N attribute to set/get trace level of handle thus can set trace level via an (eg externally specified) DSN using the embedded attribute syntax: $dsn = 'dbi:DB2(PrintError=1,TraceLevel=2):dbname'; Plus, you can also now do: local($h->{TraceLevel}) = N; (but that leaks a little memory in some versions of perl). Added some call tree information to trace output if trace level >= 3 With thanks to Graham Barr for the stack walking code. Added experimental undocumented $dbh->preparse(), see t/preparse.t With thanks to Scott T. Hildreth for much of the work. Added Fowler/Noll/Vo hash type as an option to DBI::hash(). Documentation changes: Added DBI::Changes so now you can "perldoc DBI::Changes", yeah! Added selectrow_arrayref & selectrow_hashref docs thanks to Doug Wilson. Added 'Standards Reference Information' section to docs to gather together all references to relevant on-line standards. Added link to poop.sourceforge.net into the docs thanks to Dave Rolsky. Added link to hyperlinked BNF for SQL92 thanks to Jeff Zucker. Added 'Subclassing the DBI' docs thanks to Stephen Clouse, and then changed some of them to reflect the new approach to subclassing. Added stronger wording to description of $h->{private_*} attributes. Added docs for DBI::hash. Driver API changes: Now a COPY of the DBI->connect() attributes is passed to the driver connect() method, so it can process and delete any elements it wants. Deleting elements reduces/avoids the explicit $dbh->{$_} = $attr->{$_} foreach keys %$attr; that DBI->connect does after the driver connect() method returns. =head2 Changes in DBI 1.20, 24th August 2001 WARNING: This release contains two changes that may affect your code. : Any code using selectall_hashref(), which was added in March 2001, WILL : need to be changed. Any code using fetchall_arrayref() with a non-empty : hash slice parameter may, in a few rare cases, need to be changed. : See the change list below for more information about the changes. : See the DBI documentation for a description of current behaviour. Fixed memory leak thanks to Toni Andjelkovic. Changed fetchall_arrayref({ foo=>1, ...}) specification again (sorry): The key names of the returned hashes is identical to the letter case of the names in the parameter hash, regardless of the L attribute. The letter case is ignored for matching. Changed fetchall_arrayref([...]) array slice syntax specification to clarify that the numbers in the array slice are perl index numbers (which start at 0) and not column numbers (which start at 1). Added { Columns=>... } and { Slice =>... } attributes to selectall_arrayref() which is passed to fetchall_arrayref() so it can fetch hashes now. Added a { Columns => [...] } attribute to selectcol_arrayref() so that the list it returns can be built from more than one column per row. Why? Consider my %hash = @{$dbh->selectcol_arrayref($sql,{ Columns=>[1,2]})} to return id-value pairs which can be used directly to build a hash. Added $hash_ref = $sth->fetchall_hashref( $key_field ) which returns a ref to a hash with, typically, one element per row. $key_field is the name of the field to get the key for each row from. The value of the hash for each row is a hash returned by fetchrow_hashref. Changed selectall_hashref to return a hash ref (from fetchall_hashref) and not an array of hashes as it has since DBI 1.15 (end March 2001). WARNING: THIS CHANGE WILL BREAK ANY CODE USING selectall_hashref()! Sorry, but I think this is an important regularization of the API. To get previous selectall_hashref() behaviour (an array of hash refs) change $ary_ref = $dbh->selectall_hashref( $statement, undef, @bind); to $ary_ref = $dbh->selectall_arrayref($statement, { Columns=>{} }, @bind); Added NAME_lc_hash, NAME_uc_hash, NAME_hash statement handle attributes. which return a ref to a hash of field_name => field_index (0..n-1) pairs. Fixed select_hash() example thanks to Doug Wilson. Removed (unbundled) DBD::ADO and DBD::Multiplex from the DBI distribution. The latest versions of those modules are available from CPAN sites. Added $dbh->begin_work. This method causes AutoCommit to be turned off just until the next commit() or rollback(). Driver authors: if the DBIcf_BegunWork flag is set when your commit or rollback method is called then please turn AutoCommit on and clear the DBIcf_BegunWork flag. If you don't then the DBI will but it'll be much less efficient and won't handle error conditions very cleanly. Retested on perl 5.4.4, but the DBI won't support 5.4.x much longer. Added text to SUPPORT section of the docs: For direct DBI and DBD::Oracle support, enhancement, and related work I am available for consultancy on standard commercial terms. Added text to ACKNOWLEDGEMENTS section of the docs: Much of the DBI and DBD::Oracle was developed while I was Technical Director (CTO) of the Paul Ingram Group (www.ig.co.uk). So I'd especially like to thank Paul for his generosity and vision in supporting this work for many years. =head2 Changes in DBI 1.19, 20th July 2001 Made fetchall_arrayref({ foo=>1, ...}) be more strict to the specification in relation to wanting hash slice keys to be lowercase names. WARNING: If you've used fetchall_arrayref({...}) with a hash slice that contains keys with uppercase letters then your code will break. (As far as I recall the spec has always said don't do that.) Fixed $sth->execute() to update $dbh->{Statement} to $sth->{Statement}. Added row number to trace output for fetch method calls. Trace level 1 no longer shows fetches with row>1 (to reduce output volume). Added $h->{FetchHashKeyName} = 'NAME_lc' or 'NAME_uc' to alter behaviour of fetchrow_hashref() method. See docs. Added type_info quote caching to quote() method thanks to Dean Kopesky. Makes using quote() with second data type param much much faster. Added type_into_all() caching to type_info(), spotted by Dean Kopesky. Added new API definition for table_info() and tables(), driver authors please note! Added primary_key_info() to DBI API thanks to Steffen Goeldner. Added primary_key() to DBI API as simpler interface to primary_key_info(). Indent and other fixes for DBI::DBD doc thanks to H.Merijn Brand. Added prepare_cached() insert_hash() example thanks to Doug Wilson. Removed false docs for fetchall_hashref(), use fetchall_arrayref({}). =head2 Changes in DBI 1.18, 4th June 2001 Fixed that altering ShowErrorStatement also altered AutoCommit! Thanks to Jeff Boes for spotting that clanger. Fixed DBD::Proxy to handle commit() and rollback(). Long overdue, sorry. Fixed incompatibility with perl 5.004 (but no one's using that right? :) Fixed connect_cached and prepare_cached to not be affected by the order of elements in the attribute hash. Spotted by Mitch Helle-Morrissey. Fixed version number of DBI::Shell reported by Stuhlpfarrer Gerhard and others. Defined and documented table_info() attribute semantics (ODBC compatible) thanks to Olga Voronova, who also implemented then in DBD::Oracle. Updated Win32::DBIODBC (Win32::ODBC emulation) thanks to Roy Lee. =head2 Changes in DBI 1.16, 30th May 2001 Reimplemented fetchrow_hashref in C, now fetches about 25% faster! Changed behaviour if both PrintError and RaiseError are enabled to simply do both (in that order, obviously :) Slight reduction in DBI handle creation overhead. Fixed $dbh->{Driver} & $sth->{Database} to return 'outer' handles. Fixed execute param count check to honour RaiseError spotted by Belinda Giardie. Fixed build for perl5.6.1 with PERLIO thanks to H.Merijn Brand. Fixed client sql restrictions in ProxyServer.pm thanks to Jochen Wiedmann. Fixed batch mode command parsing in Shell thanks to Christian Lemburg. Fixed typo in selectcol_arrayref docs thanks to Jonathan Leffler. Fixed selectrow_hashref to be available to callers thanks to T.J.Mather. Fixed core dump if statement handle didn't define Statement attribute. Added bind_param_inout docs to DBI::DBD thanks to Jonathan Leffler. Added note to data_sources() method docs that some drivers may require a connected database handle to be supplied as an attribute. Trace of install_driver method now shows path of driver file loaded. Changed many '||' to 'or' in the docs thanks to H.Merijn Brand. Updated DBD::ADO again (improvements in error handling) from Tom Lowery. Updated Win32::DBIODBC (Win32::ODBC emulation) thanks to Roy Lee. Updated email and web addresses in DBI::FAQ thanks to Michael A Chase. =head2 Changes in DBI 1.15, 28th March 2001 Added selectrow_arrayref Added selectrow_hashref Added selectall_hashref thanks to Leon Brocard. Added DBI->connect(..., { dbi_connect_method => 'method' }) Added $dbh->{Statement} aliased to most recent child $sth->{Statement}. Added $h->{ShowErrorStatement}=1 to cause the appending of the relevant Statement text to the RaiseError/PrintError text. Modified type_info to always return hash keys in uppercase and to not require uppercase 'DATA_TYPE' key from type_info_all. Thanks to Jennifer Tong and Rob Douglas. Added \%attr param to tables() and table_info() methods. Trace method uses warn() if it can't open the new file. Trace shows source line and filename during global destruction. Updated packages: Updated Win32::DBIODBC (Win32::ODBC emulation) thanks to Roy Lee. Updated DBD::ADO to much improved version 0.4 from Tom Lowery. Updated DBD::Sponge to include $sth->{PRECISION} thanks to Tom Lowery. Changed DBD::ExampleP to use lstat() instead of stat(). Documentation: Documented $DBI::lasth (which has been there since day 1). Documented SQL_* names. Clarified and extended docs for $h->state thanks to Masaaki Hirose. Clarified fetchall_arrayref({}) docs (thanks to, er, someone!). Clarified type_info_all re lettercase and index values. Updated DBI::FAQ to 0.38 thanks to Alligator Descartes. Added cute bind_columns example thanks to H.Merijn Brand. Extended docs on \%attr arg to data_sources method. Makefile.PL Removed obscure potential 'rm -rf /' (thanks to Ulrich Pfeifer). Removed use of glob and find (thanks to Michael A. Chase). Proxy: Removed debug messages from DBD::Proxy AUTOLOAD thanks to Brian McCauley. Added fix for problem using table_info thanks to Tom Lowery. Added better determination of where to put the pid file, and... Added KNOWN ISSUES section to DBD::Proxy docs thanks to Jochen Wiedmann. Shell: Updated DBI::Format to include DBI::Format::String thanks to Tom Lowery. Added describe command thanks to Tom Lowery. Added columnseparator option thanks to Tom Lowery (I think). Added 'raw' format thanks to, er, someone, maybe Tom again. Known issues: Perl 5.005 and 5.006 both leak memory doing local($handle->{Foo}). Perl 5.004 doesn't. The leak is not a DBI or driver bug. =head2 Changes in DBI 1.14, 14th June 2000 NOTE: This version is the one the DBI book is based on. NOTE: This version requires at least Perl 5.004. Perl 5.6 ithreads changes with thanks to Doug MacEachern. Changed trace output to use PerlIO thanks to Paul Moore. Fixed bug in RaiseError/PrintError handling. (% chars in the error string could cause a core dump.) Fixed Win32 PerlEx IIS concurrency bugs thanks to Murray Nesbitt. Major documentation polishing thanks to Linda Mui at O'Reilly. Password parameter now shown as **** in trace output. Added two fields to type_info and type_info_all. Added $dsn to PrintError/RaiseError message from DBI->connect(). Changed prepare_cached() croak to carp if sth still Active. Added prepare_cached() example to the docs. Added further DBD::ADO enhancements from Thomas Lowery. =head2 Changes in DBI 1.13, 11th July 1999 Fixed Win32 PerlEx IIS concurrency bugs thanks to Murray Nesbitt. Fixed problems with DBD::ExampleP long_list test mode. Added SQL_WCHAR SQL_WVARCHAR SQL_WLONGVARCHAR and SQL_BIT to list of known and exportable SQL types. Improved data fetch performance of DBD::ADO. Added GetTypeInfo to DBD::ADO thanks to Thomas Lowery. Actually documented connect_cached thanks to Michael Schwern. Fixed user/key/cipher bug in ProxyServer thanks to Joshua Pincus. =head2 Changes in DBI 1.12, 29th June 1999 Fixed significant DBD::ADO bug (fetch skipped first row). Fixed ProxyServer bug handling non-select statements. Fixed VMS problem with t/examp.t thanks to Craig Berry. Trace only shows calls to trace_msg and _set_fbav at high levels. Modified t/examp.t to workaround Cygwin buffering bug. =head2 Changes in DBI 1.11, 17th June 1999 Fixed bind_columns argument checking to allow a single arg. Fixed problems with internal default_user method. Fixed broken DBD::ADO. Made default $DBI::rows more robust for some obscure cases. =head2 Changes in DBI 1.10, 14th June 1999 Fixed trace_msg.al error when using Apache. Fixed dbd_st_finish enhancement in Driver.xst (internals). Enable drivers to define default username and password and temporarily disabled warning added in 1.09. Thread safety optimised for single thread case. =head2 Changes in DBI 1.09, 9th June 1999 Added optional minimum trace level parameter to trace_msg(). Added warning in Makefile.PL that DBI will require 5.004 soon. Added $dbh->selectcol_arrayref($statement) method. Fixed fetchall_arrayref hash-slice mode undef NAME problem. Fixed problem with tainted parameter checking and t/examp.t. Fixed problem with thread safety code, including 64 bit machines. Thread safety now enabled by default for threaded perls. Enhanced code for MULTIPLICITY/PERL_OBJECT from ActiveState. Enhanced prepare_cached() method. Minor changes to trace levels (less internal info at level 2). Trace log now shows "!! ERROR..." before the "<- method" line. DBI->connect() now warn's if user / password is undefined and DBI_USER / DBI_PASS environment variables are not defined. The t/proxy.t test now ignores any /etc/dbiproxy.conf file. Added portability fixes for MacOS from Chris Nandor. Updated mailing list address from fugue.com to isc.org. =head2 Changes in DBI 1.08, 12th May 1999 Much improved DBD::ADO driver thanks to Phlip Plumlee and others. Connect now allows you to specify attribute settings within the DSN E.g., "dbi:Driver(RaiseError=>1,Taint=>1,AutoCommit=>0):dbname" The $h->{Taint} attribute now also enables taint checking of arguments to almost all DBI methods. Improved trace output in various ways. Fixed bug where $sth->{NAME_xx} was undef in some situations. Fixed code for MULTIPLICITY/PERL_OBJECT thanks to Alex Smishlajev. Fixed and documented DBI->connect_cached. Workaround for Cygwin32 build problem with help from Jong-Pork Park. bind_columns no longer needs undef or hash ref as first parameter. =head2 Changes in DBI 1.07, 6th May 1999 Trace output now shows contents of array refs returned by DBI. Changed names of some result columns from type_info, type_info_all, tables and table_info to match ODBC 3.5 / ISO/IEC standards. Many fixes for DBD::Proxy and ProxyServer. Fixed error reporting in install_driver. Major enhancement to DBI::W32ODBC from Patrick Hollins. Added $h->{Taint} to taint fetched data if tainting (perl -T). Added code for MULTIPLICITY/PERL_OBJECT contributed by ActiveState. Added $sth->more_results (undocumented for now). =head2 Changes in DBI 1.06, 6th January 1999 Fixed Win32 Makefile.PL problem in 1.04 and 1.05. Significant DBD::Proxy enhancements and fixes including support for bind_param_inout (Jochen and I) Added experimental DBI->connect_cached method. Added $sth->{NAME_uc} and $sth->{NAME_lc} attributes. Enhanced fetchrow_hashref to take an attribute name arg. =head2 Changes in DBI 1.05, 4th January 1999 Improved DBD::ADO connect (thanks to Phlip Plumlee). Improved thread safety (thanks to Jochen Wiedmann). [Quick release prompted by truncation of copies on CPAN] =head2 Changes in DBI 1.04, 3rd January 1999 Fixed error in Driver.xst. DBI build now tests Driver.xst. Removed unused variable compiler warnings in Driver.xst. DBI::DBD module now tested during DBI build. Further clarification in the DBI::DBD driver writers manual. Added optional name parameter to $sth->fetchrow_hashref. =head2 Changes in DBI 1.03, 1st January 1999 Now builds with Perl>=5.005_54 (PERL_POLLUTE in DBIXS.h) DBI trace trims path from "at yourfile.pl line nnn". Trace level 1 now shows statement passed to prepare. Assorted improvements to the DBI manual. Assorted improvements to the DBI::DBD driver writers manual. Fixed $dbh->quote prototype to include optional $data_type. Fixed $dbh->prepare_cached problems. $dbh->selectrow_array behaves better in scalar context. Added a (very) experimental DBD::ADO driver for Win32 ADO. Added experimental thread support (perl Makefile.PL -thread). Updated the DBI::FAQ - thanks to Alligator Descartes. The following changes were implemented and/or packaged by Jochen Wiedmann - thanks Jochen: Added a Bundle for CPAN installation of DBI, the DBI proxy server and prerequisites (lib/Bundle/DBI.pm). DBI->available_drivers uses File::Spec, if available. This makes it work on MacOS. (DBI.pm) Modified type_info to work with read-only values returned by type_info_all. (DBI.pm) Added handling of magic values in $sth->execute, $sth->bind_param and other methods (Driver.xst) Added Perl's CORE directory to the linkers path on Win32, required by recent versions of ActiveState Perl. Fixed DBD::Sponge to work with empty result sets. Complete rewrite of DBI::ProxyServer and DBD::Proxy. =head2 Changes in DBI 1.02, 2nd September 1998 Fixed DBI::Shell including @ARGV and /current. Added basic DBI::Shell test. Renamed DBI::Shell /display to /format. =head2 Changes in DBI 1.01, 2nd September 1998 Many enhancements to Shell (with many contributions from Jochen Wiedmann, Tom Lowery and Adam Marks). Assorted fixes to DBD::Proxy and DBI::ProxyServer. Tidied up trace messages - trace(2) much cleaner now. Added $dbh->{RowCacheSize} and $sth->{RowsInCache}. Added experimental DBI::Format (mainly for DBI::Shell). Fixed fetchall_arrayref($slice_hash). DBI->connect now honours PrintError=1 if connect fails. Assorted clarifications to the docs. =head2 Changes in DBI 1.00, 14th August 1998 The DBI is no longer 'alpha' software! Added $dbh->tables and $dbh->table_info. Documented \%attr arg to data_sources method. Added $sth->{TYPE}, $sth->{PRECISION} and $sth->{SCALE}. Added $sth->{Statement}. DBI::Shell now uses neat_list to print results It also escapes "'" chars and converts newlines to spaces. =head2 Changes in DBI 0.95, 10th August 1998 WARNING: THIS IS AN EXPERIMENTAL RELEASE! Fixed 0.94 slip so it will build on pre-5.005 again. Added DBI_AUTOPROXY environment variable. Array ref returned from fetch/fetchrow_arrayref now readonly. Improved connect error reporting by DBD::Proxy. All trace/debug messages from DBI now go to trace file. =head2 Changes in DBI 0.94, 9th August 1998 WARNING: THIS IS AN EXPERIMENTAL RELEASE! Added DBD::Shell and dbish interactive DBI shell. Try it! Any database attribs can be set via DBI->connect(,,, \%attr). Added _get_fbav and _set_fbav methods for Perl driver developers (see ExampleP driver for perl usage). Drivers which don't use one of these methods (either via XS or Perl) are not compliant. DBI trace now shows adds " at yourfile.pl line nnn"! PrintError and RaiseError now prepend driver and method name. The available_drivers method no longer returns NullP or Sponge. Added $dbh->{Name}. Added $dbh->quote($value, $data_type). Added more hints to install_driver failure message. Added DBD::Proxy and DBI::ProxyServer (from Jochen Wiedmann). Added $DBI::neat_maxlen to control truncation of trace output. Added $dbh->selectall_arrayref and $dbh->selectrow_array methods. Added $dbh->tables. Added $dbh->type_info and $dbh->type_info_all. Added $h->trace_msg($msg) to write to trace log. Added @bool = DBI::looks_like_number(@ary). Many assorted improvements to the DBI docs. =head2 Changes in DBI 0.93, 13th February 1998 Fixed DBI::DBD::dbd_postamble bug causing 'Driver.xsi not found' errors. Changes to handling of 'magic' values in neatsvpv (used by trace). execute (in Driver.xst) stops binding after first bind error. This release requires drivers to be rebuilt. =head2 Changes in DBI 0.92, 3rd February 1998 Fixed per-handle memory leak (with many thanks to Irving Reid). Added $dbh->prepare_cached() caching variant of $dbh->prepare. Added some attributes: $h->{Active} is the handle 'Active' (vague concept) (boolean) $h->{Kids} e.g. number of sth's associated with a dbh $h->{ActiveKids} number of the above which are 'Active' $dbh->{CachedKids} ref to prepare_cached sth cache Added support for general-purpose 'private_' attributes. Added experimental support for subclassing the DBI: see t/subclass.t Added SQL_ALL_TYPES to exported :sql_types. Added dbd_dbi_dir() and dbd_dbi_arch_dir() to DBI::DBD module so that DBD Makefile.PLs can work with the DBI installed in non-standard locations. Fixed 'Undefined value' warning and &sv_no output from neatsvpv/trace. Fixed small 'once per interpreter' leak. Assorted minor documentation fixes. =head2 Changes in DBI 0.91, 10th December 1997 NOTE: This fix may break some existing scripts: DBI->connect("dbi:...",$user,$pass) was not setting AutoCommit and PrintError! DBI->connect(..., { ... }) no longer sets AutoCommit or PrintError twice. DBI->connect(..., { RaiseError=>1 }) now croaks if connect fails. Fixed $fh parameter of $sth->dump_results; Added default statement DESTROY method which carps. Added default driver DESTROY method to silence AUTOLOAD/__DIE__/CGI::Carp Added more SQL_* types to %EXPORT_TAGS and @EXPORT_OK. Assorted documentation updates (mainly clarifications). Added workaround for perl's 'sticky lvalue' bug. Added better warning for bind_col(umns) where fields==0. Fixed to build okay with 5.004_54 with or without USE_THREADS. Note that the DBI has not been tested for thread safety yet. =head2 Changes in DBI 0.90, 6th September 1997 Can once again be built with Perl 5.003. The DBI class can be subclassed more easily now. InactiveDestroy fixed for drivers using the *.xst template. Slightly faster handle creation. Changed prototype for dbd_*_*_attrib() to add extra param. Note: 0.90, 0.89 and possibly some other recent versions have a small memory leak. This will be fixed in the next release. =head2 Changes in DBI 0.89, 25th July 1997 Minor fix to neatsvpv (mainly used for debug trace) to workaround bug in perl where SvPV removes IOK flag from an SV. Minor updates to the docs. =head2 Changes in DBI 0.88, 22nd July 1997 Fixed build for perl5.003 and Win32 with Borland. Fixed documentation formatting. Fixed DBI_DSN ignored for old-style connect (with explicit driver). Fixed AutoCommit in DBD::ExampleP Fixed $h->trace. The DBI can now export SQL type values: use DBI ':sql_types'; Modified Driver.xst and renamed DBDI.h to dbd_xsh.h =head2 Changes in DBI 0.87, 18th July 1997 Fixed minor type clashes. Added more docs about placeholders and bind values. =head2 Changes in DBI 0.86, 16th July 1997 Fixed failed connect causing 'unblessed ref' and other errors. Drivers must handle AutoCommit FETCH and STORE else DBI croaks. Added $h->{LongReadLen} and $h->{LongTruncOk} attributes for BLOBS. Added DBI_USER and DBI_PASS env vars. See connect docs for usage. Added DBI->trace() to set global trace level (like per-handle $h->trace). PERL_DBI_DEBUG env var renamed DBI_DEBUG (old name still works for now). Updated docs, including commit, rollback, AutoCommit and Transactions sections. Added bind_param method and execute(@bind_values) to docs. Fixed fetchall_arrayref. Since the DBIS structure has change the internal version numbers have also changed (DBIXS_VERSION == 9 and DBISTATE_VERSION == 9) so drivers will have to be recompiled. The test is also now more sensitive and the version mismatch error message now more clear about what to do. Old drivers are likely to core dump (this time) until recompiled for this DBI. In future DBI/DBD version mismatch will always produce a clear error message. Note that this DBI release contains and documents many new features that won't appear in drivers for some time. Driver writers might like to read perldoc DBI::DBD and comment on or apply the information given. =head2 Changes in DBI 0.85, 25th June 1997 NOTE: New-style connect now defaults to AutoCommit mode unless { AutoCommit => 0 } specified in connect attributes. See the docs. AutoCommit attribute now defined and tracked by DBI core. Drivers should use/honour this and not implement their own. Added pod doc changes from Andreas and Jonathan. New DBI_DSN env var default for connect method. See docs. Documented the func method. Fixed "Usage: DBD::_::common::DESTROY" error. Fixed bug which set some attributes true when there value was fetched. Added new internal DBIc_set() macro for drivers to use. =head2 Changes in DBI 0.84, 20th June 1997 Added $h->{PrintError} attribute which, if set true, causes all errors to trigger a warn(). New-style DBI->connect call now automatically sets PrintError=1 unless { PrintError => 0 } specified in the connect attributes. See the docs. The old-style connect with a separate driver parameter is deprecated. Fixed fetchrow_hashref. Renamed $h->debug to $h->trace() and added a trace filename arg. Assorted other minor tidy-ups. =head2 Changes in DBI 0.83, 11th June 1997 Added driver specification syntax to DBI->connect data_source parameter: DBI->connect('dbi:driver:...', $user, $passwd); The DBI->data_sources method should return data_source names with the appropriate 'dbi:driver:' prefix. DBI->connect will warn if \%attr is true but not a hash ref. Added the new fetchrow methods: @row_ary = $sth->fetchrow_array; $ary_ref = $sth->fetchrow_arrayref; $hash_ref = $sth->fetchrow_hashref; The old fetch and fetchrow methods still work. Driver implementors should implement the new names for fetchrow_array and fetchrow_arrayref ASAP (use the xs ALIAS: directive to define aliases for fetch and fetchrow). Fixed occasional problems with t/examp.t test. Added automatic errstr reporting to the debug trace output. Added the DBI FAQ from Alligator Descartes in module form for easy reading via "perldoc DBI::FAQ". Needs reformatting. Unknown driver specific attribute names no longer croak. Fixed problem with internal neatsvpv macro. =head2 Changes in DBI 0.82, 23rd May 1997 Added $h->{RaiseError} attribute which, if set true, causes all errors to trigger a die(). This makes it much easier to implement robust applications in terms of higher level eval { ... } blocks and rollbacks. Added DBI->data_sources($driver) method for implementation by drivers. The quote method now returns the string NULL (without quotes) for undef. Added VMS support thanks to Dan Sugalski. Added a 'quick start guide' to the README. Added neatsvpv function pointer to DBIS structure to make it available for use by drivers. A macro defines neatsvpv(sv,len) as (DBIS->neatsvpv(sv,len)). Old XS macro SV_YES_NO changes to standard boolSV. Since the DBIS structure has change the internal version numbers have also changed (DBIXS_VERSION == 8 and DBISTATE_VERSION == 8) so drivers will have to be recompiled. =head2 Changes in DBI 0.81, 7th May 1997 Minor fix to let DBI build using less modern perls. Fixed a suprious typo warning. =head2 Changes in DBI 0.80, 6th May 1997 Builds with no changes on NT using perl5.003_99 (with thanks to Jeffrey Urlwin). Automatically supports Apache::DBI (with thanks to Edmund Mergl). DBI scripts no longer need to be modified to make use of Apache::DBI. Added a ping method and an experimental connect_test_perf method. Added a fetchhash and fetch_all methods. The func method no longer pre-clears err and errstr. Added ChopBlanks attribute (currently defaults to off, that may change). Support for the attribute needs to be implemented by individual drivers. Reworked tests into standard t/*.t form. Added more pod text. Fixed assorted bugs. =head2 Changes in DBI 0.79, 7th Apr 1997 Minor release. Tidied up pod text and added some more descriptions (especially disconnect). Minor changes to DBI.xs to remove compiler warnings. =head2 Changes in DBI 0.78, 28th Mar 1997 Greatly extended the pod documentation in DBI.pm, including the under used bind_columns method. Use 'perldoc DBI' to read after installing. Fixed $h->err. Fetching an attribute value no longer resets err. Added $h->{InactiveDestroy}, see documentation for details. Improved debugging of cached ('quick') attribute fetches. errstr will return err code value if there is no string value. Added DBI/W32ODBC to the distribution. This is a pure-perl experimental DBI emulation layer for Win32::ODBC. Note that it's unsupported, your mileage will vary, and bug reports without fixes will probably be ignored. =head2 Changes in DBI 0.77, 21st Feb 1997 Removed erroneous $h->errstate and $h->errmsg methods from DBI.pm. Added $h->err, $h->errstr and $h->state default methods in DBI.xs. Updated informal DBI API notes in DBI.pm. Updated README slightly. DBIXS.h now correctly installed into INST_ARCHAUTODIR. (DBD authors will need to edit their Makefile.PL's to use -I$(INSTALLSITEARCH)/auto/DBI -I$(INSTALLSITEARCH)/DBI) =head2 Changes in DBI 0.76, 3rd Feb 1997 Fixed a compiler type warnings (pedantic IRIX again). =head2 Changes in DBI 0.75, 27th Jan 1997 Fix problem introduced by a change in Perl5.003_XX. Updated README and DBI.pm docs. =head2 Changes in DBI 0.74, 14th Jan 1997 Dispatch now sets dbi_debug to the level of the current handle (this makes tracing/debugging individual handles much easier). The '>> DISPATCH' log line now only logged at debug >= 3 (was 2). The $csr->NUM_OF_FIELDS attribute can be set if not >0 already. You can log to a file using the env var PERL_DBI_DEBUG=/tmp/dbi.log. Added a type cast needed by IRIX. No longer sets perl_destruct_level unless debug set >= 4. Make compatible with PerlIO and sfio. =head2 Changes in DBI 0.73, 10th Oct 1996 Fixed some compiler type warnings (IRIX). Fixed DBI->internal->{DebugLog} = $filename. Made debug log file unbuffered. Added experimental bind_param_inout method to interface. Usage: $dbh->bind_param_inout($param, \$value, $maxlen [, \%attribs ]) (only currently used by DBD::Oracle at this time.) =head2 Changes in DBI 0.72, 23 Sep 1996 Using an undefined value as a handle now gives a better error message (mainly useful for emulators like Oraperl). $dbh->do($sql, @params) now works for binding placeholders. =head2 Changes in DBI 0.71, 10 July 1996 Removed spurious abort() from invalid handle check. Added quote method to DBI interface and added test. =head2 Changes in DBI 0.70, 16 June 1996 Added extra invalid handle check (dbih_getcom) Fixed broken $dbh->quote method. Added check for old GCC in Makefile.PL =head2 Changes in DBI 0.69 Fixed small memory leak. Clarified the behaviour of DBI->connect. $dbh->do now returns '0E0' instead of 'OK'. Fixed "Can't read $DBI::errstr, lost last handle" problem. =head2 Changes in DBI 0.68, 2 Mar 1996 Changes to suit perl5.002 and site_lib directories. Detects old versions ahead of new in @INC. =head2 Changes in DBI 0.67, 15 Feb 1996 Trivial change to test suite to fix a problem shown up by the Perl5.002gamma release Test::Harness. =head2 Changes in DBI 0.66, 29 Jan 1996 Minor changes to bring the DBI into line with 5.002 mechanisms, specifically the xs/pm VERSION checking mechanism. No functionality changes. One no-last-handle bug fix (rare problem). Requires 5.002 (beta2 or later). =head2 Changes in DBI 0.65, 23 Oct 1995 Added $DBI::state to hold SQL CLI / ODBC SQLSTATE value. SQLSTATE "00000" (success) is returned as "" (false), all else is true. If a driver does not explicitly initialise it (via $h->{State} or DBIc_STATE(imp_xxh) then $DBI::state will automatically return "" if $DBI::err is false otherwise "S1000" (general error). As always, this is a new feature and liable to change. The is *no longer* a default error handler! You can add your own using push(@{$h->{Handlers}}, sub { ... }) but be aware that this interface may change (or go away). The DBI now automatically clears $DBI::err, errstr and state before calling most DBI methods. Previously error conditions would persist. Added DBIh_CLEAR_ERROR(imp_xxh) macro. DBI now EXPORT_OK's some utility functions, neat($value), neat_list(@values) and dump_results($sth). Slightly enhanced t/min.t minimal test script in an effort to help narrow down the few stray core dumps that some porters still report. Renamed readblob to blob_read (old name still works but warns). Added default blob_copy_to_file method. Added $sth = $dbh->tables method. This returns an $sth for a query which has these columns: TABLE_CATALOGUE, TABLE_OWNER, TABLE_NAME, TABLE_TYPE, REMARKS in that order. The TABLE_CATALOGUE column should be ignored for now. =head2 Changes in DBI 0.64, 23 Oct 1995 Fixed 'disconnect invalidates 1 associated cursor(s)' problem. Drivers using DBIc_ACTIVE_on/off() macros should not need any changes other than to test for DBIc_ACTIVE_KIDS() instead of DBIc_KIDS(). Fixed possible core dump in dbih_clearcom during global destruction. =head2 Changes in DBI 0.63, 1 Sep 1995 Minor update. Fixed uninitialised memory bug in method attribute handling and streamlined processing and debugging. Revised usage definitions for bind_* methods and readblob. =head2 Changes in DBI 0.62, 26 Aug 1995 Added method redirection method $h->func(..., $method_name). This is now the official way to call private driver methods that are not part of the DBI standard. E.g.: @ary = $sth->func('ora_types'); It can also be used to call existing methods. Has very low cost. $sth->bind_col columns now start from 1 (not 0) to match SQL. $sth->bind_columns now takes a leading attribute parameter (or undef), e.g., $sth->bind_columns($attribs, \$col1 [, \$col2 , ...]); Added handy DBD_ATTRIBS_CHECK macro to vet attribs in XS. Added handy DBD_ATTRIB_GET_SVP, DBD_ATTRIB_GET_BOOL and DBD_ATTRIB_GET_IV macros for handling attributes. Fixed STORE for NUM_OF_FIELDS and NUM_OF_PARAMS. Added FETCH for NUM_OF_FIELDS and NUM_OF_PARAMS. Dispatch no longer bothers to call _untie(). Faster startup via install_method/_add_dispatch changes. =head2 Changes in DBI 0.61, 22 Aug 1995 Added $sth->bind_col($column, \$var [, \%attribs ]); This method enables perl variable to be directly and automatically updated when a row is fetched. It requires no driver support (if the driver has been written to use DBIS->get_fbav). Currently \%attribs is unused. Added $sth->bind_columns(\$var [, \$var , ...]); This method is a short-cut for bind_col which binds all the columns of a query in one go (with no attributes). It also requires no driver support. Added $sth->bind_param($parameter, $var [, \%attribs ]); This method enables attributes to be specified when values are bound to placeholders. It also enables binding to occur away from the execute method to improve execute efficiency. The DBI does not provide a default implementation of this. See the DBD::Oracle module for a detailed example. The DBI now provides default implementations of both fetch and fetchrow. Each is written in terms of the other. A driver is expected to implement at least one of them. More macro and assorted structure changes in DBDXS.h. Sorry! The old dbihcom definitions have gone. All fields have macros. The imp_xxh_t type is now used within the DBI as well as drivers. Drivers must set DBIc_NUM_FIELDS(imp_sth) and DBIc_NUM_PARAMS(imp_sth). test.pl includes a trivial test of bind_param and bind_columns. =head2 Changes in DBI 0.60, 17 Aug 1995 This release has significant code changes but much less dramatic than the previous release. The new implementors data handling mechanism has matured significantly (don't be put off by all the struct typedefs in DBIXS.h, there's just to make it easier for drivers while keeping things type-safe). The DBI now includes two new methods: do $dbh->do($statement) This method prepares, executes and finishes a statement. It is designed to be used for executing one-off non-select statements where there is no benefit in reusing a prepared statement handle. fetch $array_ref = $sth->fetch; This method is the new 'lowest-level' row fetching method. The previous @row = $sth->fetchrow method now defaults to calling the fetch method and expanding the returned array reference. The DBI now provides fallback attribute FETCH and STORE functions which drivers should call if they don't recognise an attribute. THIS RELEASE IS A GOOD STARTING POINT FOR DRIVER DEVELOPERS! Study DBIXS.h from the DBI and Oracle.xs etc from DBD::Oracle. There will be further changes in the interface but nothing as dramatic as these last two releases! (I hope :-) =head2 Changes in DBI 0.59 15 Aug 1995 NOTE: THIS IS AN UNSTABLE RELEASE! Major reworking of internal data management! Performance improvements and memory leaks fixed. Added a new NullP (empty) driver and a -m flag to test.pl to help check for memory leaks. Study DBD::Oracle version 0.21 for more details. (Comparing parts of v0.21 with v0.20 may be useful.) =head2 Changes in DBI 0.58 21 June 1995 Added DBI->internal->{DebugLog} = $filename; Reworked internal logging. Added $VERSION. Made disconnect_all a compulsory method for drivers. =head1 ANCIENT HISTORY 12th Oct 1994: First public release of the DBI module. (for Perl 5.000-beta-3h) 19th Sep 1994: DBperl project renamed to DBI. 29th Sep 1992: DBperl project started. =cut perl5/DBI/ProfileDumper/Apache.pm000044400000014631152462470720012501 0ustar00package DBI::ProfileDumper::Apache; use strict; =head1 NAME DBI::ProfileDumper::Apache - capture DBI profiling data from Apache/mod_perl =head1 SYNOPSIS Add this line to your F: PerlSetEnv DBI_PROFILE 2/DBI::ProfileDumper::Apache (If you're using mod_perl2, see L for some additional notes.) Then restart your server. Access the code you wish to test using a web browser, then shutdown your server. This will create a set of F files in your Apache log directory. Get a profiling report with L: dbiprof /path/to/your/apache/logs/dbi.prof.* When you're ready to perform another profiling run, delete the old files and start again. =head1 DESCRIPTION This module interfaces DBI::ProfileDumper to Apache/mod_perl. Using this module you can collect profiling data from mod_perl applications. It works by creating a DBI::ProfileDumper data file for each Apache process. These files are created in your Apache log directory. You can then use the dbiprof utility to analyze the profile files. =head1 USAGE =head2 LOADING THE MODULE The easiest way to use this module is just to set the DBI_PROFILE environment variable in your F: PerlSetEnv DBI_PROFILE 2/DBI::ProfileDumper::Apache The DBI will look after loading and using the module when the first DBI handle is created. It's also possible to use this module by setting the Profile attribute of any DBI handle: $dbh->{Profile} = "2/DBI::ProfileDumper::Apache"; See L for more possibilities, and L for full details of the DBI's profiling mechanism. =head2 WRITING PROFILE DATA The profile data files will be written to your Apache log directory by default. The user that the httpd processes run as will need write access to the directory. So, for example, if you're running the child httpds as user 'nobody' and using chronolog to write to the logs directory, then you'll need to change the default. You can change the destination directory either by specifying a C value when creating the profile (like C in the L docs), or you can use the C env var to change that. For example: PerlSetEnv DBI_PROFILE_APACHE_LOG_DIR /server_root/logs =head3 When using mod_perl2 Under mod_perl2 you'll need to either set the C env var, or enable the mod_perl2 C option, like this: PerlOptions +GlobalRequest to the global config section you're about test with DBI::ProfileDumper::Apache. If you don't do one of those then you'll see messages in your error_log similar to: DBI::ProfileDumper::Apache on_destroy failed: Global $r object is not available. Set: PerlOptions +GlobalRequest in httpd.conf at ..../DBI/ProfileDumper/Apache.pm line 144 =head3 Naming the files The default file name is inherited from L via the filename() method, but DBI::ProfileDumper::Apache appends the parent pid and the current pid, separated by dots, to that name. =head3 Silencing the log By default a message is written to STDERR (i.e., the apache error_log file) when flush_to_disk() is called (either explicitly, or implicitly via DESTROY). That's usually very useful. If you don't want the log message you can silence it by setting the C attribute true. PerlSetEnv DBI_PROFILE 2/DBI::ProfileDumper::Apache/Quiet:1 $dbh->{Profile} = "!Statement/DBI::ProfileDumper/Quiet:1"; $dbh->{Profile} = DBI::ProfileDumper->new( Path => [ '!Statement' ] Quiet => 1 ); =head2 GATHERING PROFILE DATA Once you have the module loaded, use your application as you normally would. Stop the webserver when your tests are complete. Profile data files will be produced when Apache exits and you'll see something like this in your error_log: DBI::ProfileDumper::Apache writing to /usr/local/apache/logs/dbi.prof.2604.2619 Now you can use dbiprof to examine the data: dbiprof /usr/local/apache/logs/dbi.prof.2604.* By passing dbiprof a list of all generated files, dbiprof will automatically merge them into one result set. You can also pass dbiprof sorting and querying options, see L for details. =head2 CLEANING UP Once you've made some code changes, you're ready to start again. First, delete the old profile data files: rm /usr/local/apache/logs/dbi.prof.* Then restart your server and get back to work. =head1 OTHER ISSUES =head2 Memory usage DBI::Profile can use a lot of memory for very active applications because it collects profiling data in memory for each distinct query run. Calling C will write the current data to disk and free the memory it's using. For example: $dbh->{Profile}->flush_to_disk() if $dbh->{Profile}; or, rather than flush every time, you could flush less often: $dbh->{Profile}->flush_to_disk() if $dbh->{Profile} and ++$i % 100; =head1 AUTHOR Sam Tregar =head1 COPYRIGHT AND LICENSE Copyright (C) 2002 Sam Tregar This program is free software; you can redistribute it and/or modify it under the same terms as Perl 5 itself. =cut our $VERSION = "2.014121"; our @ISA = qw(DBI::ProfileDumper); use DBI::ProfileDumper; use File::Spec; my $initial_pid = $$; use constant MP2 => ($ENV{MOD_PERL_API_VERSION} and $ENV{MOD_PERL_API_VERSION} == 2) ? 1 : 0; my $server_root_dir; if (MP2) { require Apache2::ServerUtil; $server_root_dir = Apache2::ServerUtil::server_root(); } else { require Apache; $server_root_dir = eval { Apache->server_root_relative('') } || "/tmp"; } sub _dirname { my $self = shift; return $self->{Dir} ||= $ENV{DBI_PROFILE_APACHE_LOG_DIR} || File::Spec->catdir($server_root_dir, "logs"); } sub filename { my $self = shift; my $filename = $self->SUPER::filename(@_); return $filename if not $filename; # not set yet # to be able to identify groups of profile files from the same set of # apache processes, we include the parent pid in the file name # as well as the pid. my $group_pid = ($$ eq $initial_pid) ? $$ : getppid(); $filename .= ".$group_pid.$$"; return $filename if File::Spec->file_name_is_absolute($filename); return File::Spec->catfile($self->_dirname, $filename); } sub flush_to_disk { my $self = shift; my $filename = $self->SUPER::flush_to_disk(@_); print STDERR ref($self)." pid$$ written to $filename\n" if $filename && not $self->{Quiet}; return $filename; } 1; perl5/DBI/Profile.pm000044400000077617152462470720010160 0ustar00package DBI::Profile; =head1 NAME DBI::Profile - Performance profiling and benchmarking for the DBI =head1 SYNOPSIS The easiest way to enable DBI profiling is to set the DBI_PROFILE environment variable to 2 and then run your code as usual: DBI_PROFILE=2 prog.pl This will profile your program and then output a textual summary grouped by query when the program exits. You can also enable profiling by setting the Profile attribute of any DBI handle: $dbh->{Profile} = 2; Then the summary will be printed when the handle is destroyed. Many other values apart from are possible - see L<"ENABLING A PROFILE"> below. =head1 DESCRIPTION The DBI::Profile module provides a simple interface to collect and report performance and benchmarking data from the DBI. For a more elaborate interface, suitable for larger programs, see L and L. For Apache/mod_perl applications see L. =head1 OVERVIEW Performance data collection for the DBI is built around several concepts which are important to understand clearly. =over 4 =item Method Dispatch Every method call on a DBI handle passes through a single 'dispatch' function which manages all the common aspects of DBI method calls, such as handling the RaiseError attribute. =item Data Collection If profiling is enabled for a handle then the dispatch code takes a high-resolution timestamp soon after it is entered. Then, after calling the appropriate method and just before returning, it takes another high-resolution timestamp and calls a function to record the information. That function is passed the two timestamps plus the DBI handle and the name of the method that was called. That data about a single DBI method call is called a I. =item Data Filtering If the method call was invoked by the DBI or by a driver then the call is ignored for profiling because the time spent will be accounted for by the original 'outermost' call for your code. For example, the calls that the selectrow_arrayref() method makes to prepare() and execute() etc. are not counted individually because the time spent in those methods is going to be allocated to the selectrow_arrayref() method when it returns. If this was not done then it would be very easy to double count time spent inside the DBI. =item Data Storage Tree The profile data is accumulated as 'leaves on a tree'. The 'path' through the branches of the tree to a particular leaf is determined dynamically for each sample. This is a key feature of DBI profiling. For each profiled method call the DBI walks along the Path and uses each value in the Path to step into and grow the Data tree. For example, if the Path is [ 'foo', 'bar', 'baz' ] then the new profile sample data will be I into the tree at $h->{Profile}->{Data}->{foo}->{bar}->{baz} But it's not very useful to merge all the call data into one leaf node (except to get an overall 'time spent inside the DBI' total). It's more common to want the Path to include dynamic values such as the current statement text and/or the name of the method called to show what the time spent inside the DBI was for. The Path can contain some 'magic cookie' values that are automatically replaced by corresponding dynamic values when they're used. These magic cookies always start with a punctuation character. For example a value of 'C' in the Path causes the corresponding entry in the Data to be the name of the method that was called. For example, if the Path was: [ 'foo', '!MethodName', 'bar' ] and the selectall_arrayref() method was called, then the profile sample data for that call will be merged into the tree at: $h->{Profile}->{Data}->{foo}->{selectall_arrayref}->{bar} =item Profile Data Profile data is stored at the 'leaves' of the tree as references to an array of numeric values. For example: [ 106, # 0: count of samples at this node 0.0312958955764771, # 1: total duration 0.000490069389343262, # 2: first duration 0.000176072120666504, # 3: shortest duration 0.00140702724456787, # 4: longest duration 1023115819.83019, # 5: time of first sample 1023115819.86576, # 6: time of last sample ] After the first sample, later samples always update elements 0, 1, and 6, and may update 3 or 4 depending on the duration of the sampled call. =back =head1 ENABLING A PROFILE Profiling is enabled for a handle by assigning to the Profile attribute. For example: $h->{Profile} = DBI::Profile->new(); The Profile attribute holds a blessed reference to a hash object that contains the profile data and attributes relating to it. The class the Profile object is blessed into is expected to provide at least a DESTROY method which will dump the profile data to the DBI trace file handle (STDERR by default). All these examples have the same effect as each other: $h->{Profile} = 0; $h->{Profile} = "/DBI::Profile"; $h->{Profile} = DBI::Profile->new(); $h->{Profile} = {}; $h->{Profile} = { Path => [] }; Similarly, these examples have the same effect as each other: $h->{Profile} = 6; $h->{Profile} = "6/DBI::Profile"; $h->{Profile} = "!Statement:!MethodName/DBI::Profile"; $h->{Profile} = { Path => [ '!Statement', '!MethodName' ] }; If a non-blessed hash reference is given then the DBI::Profile module is automatically C'd and the reference is blessed into that class. If a string is given then it is processed like this: ($path, $module, $args) = split /\//, $string, 3 @path = split /:/, $path @args = split /:/, $args eval "require $module" if $module $module ||= "DBI::Profile" $module->new( Path => \@Path, @args ) So the first value is used to select the Path to be used (see below). The second value, if present, is used as the name of a module which will be loaded and it's C method called. If not present it defaults to DBI::Profile. Any other values are passed as arguments to the C method. For example: "C<2/DBIx::OtherProfile/Foo:42>". Numbers can be used as a shorthand way to enable common Path values. The simplest way to explain how the values are interpreted is to show the code: push @Path, "DBI" if $path_elem & 0x01; push @Path, "!Statement" if $path_elem & 0x02; push @Path, "!MethodName" if $path_elem & 0x04; push @Path, "!MethodClass" if $path_elem & 0x08; push @Path, "!Caller2" if $path_elem & 0x10; So "2" is the same as "!Statement" and "6" (2+4) is the same as "!Statement:!Method". Those are the two most commonly used values. Using a negative number will reverse the path. Thus "-6" will group by method name then statement. The splitting and parsing of string values assigned to the Profile attribute may seem a little odd, but there's a good reason for it. Remember that attributes can be embedded in the Data Source Name string which can be passed in to a script as a parameter. For example: dbi:DriverName(Profile=>2):dbname dbi:DriverName(Profile=>{Username}:!Statement/MyProfiler/Foo:42):dbname And also, if the C environment variable is set then The DBI arranges for every driver handle to share the same profile object. When perl exits a single profile summary will be generated that reflects (as nearly as practical) the total use of the DBI by the application. =head1 THE PROFILE OBJECT The DBI core expects the Profile attribute value to be a hash reference and if the following values don't exist it will create them as needed: =head2 Data A reference to a hash containing the collected profile data. =head2 Path The Path value is a reference to an array. Each element controls the value to use at the corresponding level of the profile Data tree. If the value of Path is anything other than an array reference, it is treated as if it was: [ '!Statement' ] The elements of Path array can be one of the following types: =head3 Special Constant B Use the current Statement text. Typically that's the value of the Statement attribute for the handle the method was called with. Some methods, like commit() and rollback(), are unrelated to a particular statement. For those methods !Statement records an empty string. For statement handles this is always simply the string that was given to prepare() when the handle was created. For database handles this is the statement that was last prepared or executed on that database handle. That can lead to a little 'fuzzyness' because, for example, calls to the quote() method to build a new statement will typically be associated with the previous statement. In practice this isn't a significant issue and the dynamic Path mechanism can be used to setup your own rules. B Use the name of the DBI method that the profile sample relates to. B Use the fully qualified name of the DBI method, including the package, that the profile sample relates to. This shows you where the method was implemented. For example: 'DBD::_::db::selectrow_arrayref' => 0.022902s 'DBD::mysql::db::selectrow_arrayref' => 2.244521s / 99 = 0.022445s avg (first 0.022813s, min 0.022051s, max 0.028932s) The "DBD::_::db::selectrow_arrayref" shows that the driver has inherited the selectrow_arrayref method provided by the DBI. But you'll note that there is only one call to DBD::_::db::selectrow_arrayref but another 99 to DBD::mysql::db::selectrow_arrayref. Currently the first call doesn't record the true location. That may change. B Use a string showing the filename and line number of the code calling the method. B Use a string showing the filename and line number of the code calling the method, as for !Caller, but also include filename and line number of the code that called that. Calls from DBI:: and DBD:: packages are skipped. B Same as !Caller above except that only the filename is included, not the line number. B Same as !Caller2 above except that only the filenames are included, not the line number. B Use the current value of time(). Rarely used. See the more useful C below. B Where C is an integer. Use the current value of time() but with reduced precision. The value used is determined in this way: int( time() / N ) * N This is a useful way to segregate a profile into time slots. For example: [ '!Time~60', '!Statement' ] =head3 Code Reference The subroutine is passed the handle it was called on and the DBI method name. The current Statement is in $_. The statement string should not be modified, so most subs start with C. The list of values it returns is used at that point in the Profile Path. Any undefined values are treated as the string "C". The sub can 'veto' (reject) a profile sample by including a reference to undef (C<\undef>) in the returned list. That can be useful when you want to only profile statements that match a certain pattern, or only profile certain methods. =head3 Subroutine Specifier A Path element that begins with 'C<&>' is treated as the name of a subroutine in the DBI::ProfileSubs namespace and replaced with the corresponding code reference. Currently this only works when the Path is specified by the C environment variable. Also, currently, the only subroutine in the DBI::ProfileSubs namespace is C<'&norm_std_n3'>. That's a very handy subroutine when profiling code that doesn't use placeholders. See L for more information. =head3 Attribute Specifier A string enclosed in braces, such as 'C<{Username}>', specifies that the current value of the corresponding database handle attribute should be used at that point in the Path. =head3 Reference to a Scalar Specifies that the current value of the referenced scalar be used at that point in the Path. This provides an efficient way to get 'contextual' values into your profile. =head3 Other Values Any other values are stringified and used literally. (References, and values that begin with punctuation characters are reserved.) =head1 REPORTING =head2 Report Format The current accumulated profile data can be formatted and output using print $h->{Profile}->format; To discard the profile data and start collecting fresh data you can do: $h->{Profile}->{Data} = undef; The default results format looks like this: DBI::Profile: 0.001015s 42.7% (5 calls) programname @ YYYY-MM-DD HH:MM:SS '' => 0.000024s / 2 = 0.000012s avg (first 0.000015s, min 0.000009s, max 0.000015s) 'SELECT mode,size,name FROM table' => 0.000991s / 3 = 0.000330s avg (first 0.000678s, min 0.000009s, max 0.000678s) Which shows the total time spent inside the DBI, with a count of the total number of method calls and the name of the script being run, then a formatted version of the profile data tree. If the results are being formatted when the perl process is exiting (which is usually the case when the DBI_PROFILE environment variable is used) then the percentage of time the process spent inside the DBI is also shown. If the process is not exiting then the percentage is calculated using the time between the first and last call to the DBI. In the example above the paths in the tree are only one level deep and use the Statement text as the value (that's the default behaviour). The merged profile data at the 'leaves' of the tree are presented as total time spent, count, average time spent (which is simply total time divided by the count), then the time spent on the first call, the time spent on the fastest call, and finally the time spent on the slowest call. The 'avg', 'first', 'min' and 'max' times are not particularly useful when the profile data path only contains the statement text. Here's an extract of a more detailed example using both statement text and method name in the path: 'SELECT mode,size,name FROM table' => 'FETCH' => 0.000076s 'fetchrow_hashref' => 0.036203s / 108 = 0.000335s avg (first 0.000490s, min 0.000152s, max 0.002786s) Here you can see the 'avg', 'first', 'min' and 'max' for the 108 calls to fetchrow_hashref() become rather more interesting. Also the data for FETCH just shows a time value because it was only called once. Currently the profile data is output sorted by branch names. That may change in a later version so the leaf nodes are sorted by total time per leaf node. =head2 Report Destination The default method of reporting is for the DESTROY method of the Profile object to format the results and write them using: DBI->trace_msg($results, 0); # see $ON_DESTROY_DUMP below to write them to the DBI trace() filehandle (which defaults to STDERR). To direct the DBI trace filehandle to write to a file without enabling tracing the trace() method can be called with a trace level of 0. For example: DBI->trace(0, $filename); The same effect can be achieved without changing the code by setting the C environment variable to C<0=filename>. The $DBI::Profile::ON_DESTROY_DUMP variable holds a code ref that's called to perform the output of the formatted results. The default value is: $ON_DESTROY_DUMP = sub { DBI->trace_msg($results, 0) }; Apart from making it easy to send the dump elsewhere, it can also be useful as a simple way to disable dumping results. =head1 CHILD HANDLES Child handles inherit a reference to the Profile attribute value of their parent. So if profiling is enabled for a database handle then by default the statement handles created from it all contribute to the same merged profile data tree. =head1 PROFILE OBJECT METHODS =head2 format See L. =head2 as_node_path_list @ary = $dbh->{Profile}->as_node_path_list(); @ary = $dbh->{Profile}->as_node_path_list($node, $path); Returns the collected data ($dbh->{Profile}{Data}) restructured into a list of array refs, one for each leaf node in the Data tree. This 'flat' structure is often much simpler for applications to work with. The first element of each array ref is a reference to the leaf node. The remaining elements are the 'path' through the data tree to that node. For example, given a data tree like this: {key1a}{key2a}[node1] {key1a}{key2b}[node2] {key1b}{key2a}{key3a}[node3] The as_node_path_list() method will return this list: [ [node1], 'key1a', 'key2a' ] [ [node2], 'key1a', 'key2b' ] [ [node3], 'key1b', 'key2a', 'key3a' ] The nodes are ordered by key, depth-first. The $node argument can be used to focus on a sub-tree. If not specified it defaults to $dbh->{Profile}{Data}. The $path argument can be used to specify a list of path elements that will be added to each element of the returned list. If not specified it defaults to a ref to an empty array. =head2 as_text @txt = $dbh->{Profile}->as_text(); $txt = $dbh->{Profile}->as_text({ node => undef, path => [], separator => " > ", format => '%1$s: %11$fs / %10$d = %2$fs avg (first %12$fs, min %13$fs, max %14$fs)'."\n"; sortsub => sub { ... }, ); Returns the collected data ($dbh->{Profile}{Data}) reformatted into a list of formatted strings. In scalar context the list is returned as a single concatenated string. A hashref can be used to pass in arguments, the default values are shown in the example above. The C and arguments are passed to as_node_path_list(). The C argument is used to join the elements of the path for each leaf node. The C argument is used to pass in a ref to a sub that will order the list. The subroutine will be passed a reference to the array returned by as_node_path_list() and should sort the contents of the array in place. The return value from the sub is ignored. For example, to sort the nodes by the second level key you could use: sortsub => sub { my $ary=shift; @$ary = sort { $a->[2] cmp $b->[2] } @$ary } The C argument is a C format string that specifies the format to use for each leaf node. It uses the explicit format parameter index mechanism to specify which of the arguments should appear where in the string. The arguments to sprintf are: 1: path to node, joined with the separator 2: average duration (total duration/count) (3 thru 9 are currently unused) 10: count 11: total duration 12: first duration 13: smallest duration 14: largest duration 15: time of first call 16: time of first call =head1 CUSTOM DATA MANIPULATION Recall that C<< $h->{Profile}->{Data} >> is a reference to the collected data. Either to a 'leaf' array (when the Path is empty, i.e., DBI_PROFILE env var is 1), or a reference to hash containing values that are either further hash references or leaf array references. Sometimes it's useful to be able to summarise some or all of the collected data. The dbi_profile_merge_nodes() function can be used to merge leaf node values. =head2 dbi_profile_merge_nodes use DBI qw(dbi_profile_merge_nodes); $time_in_dbi = dbi_profile_merge_nodes(my $totals=[], @$leaves); Merges profile data node. Given a reference to a destination array, and zero or more references to profile data, merges the profile data into the destination array. For example: $time_in_dbi = dbi_profile_merge_nodes( my $totals=[], [ 10, 0.51, 0.11, 0.01, 0.22, 1023110000, 1023110010 ], [ 15, 0.42, 0.12, 0.02, 0.23, 1023110005, 1023110009 ], ); $totals will then contain [ 25, 0.93, 0.11, 0.01, 0.23, 1023110000, 1023110010 ] and $time_in_dbi will be 0.93; The second argument need not be just leaf nodes. If given a reference to a hash then the hash is recursively searched for leaf nodes and all those found are merged. For example, to get the time spent 'inside' the DBI during an http request, your logging code run at the end of the request (i.e. mod_perl LogHandler) could use: my $time_in_dbi = 0; if (my $Profile = $dbh->{Profile}) { # if DBI profiling is enabled $time_in_dbi = dbi_profile_merge_nodes(my $total=[], $Profile->{Data}); $Profile->{Data} = {}; # reset the profile data } If profiling has been enabled then $time_in_dbi will hold the time spent inside the DBI for that handle (and any other handles that share the same profile data) since the last request. Prior to DBI 1.56 the dbi_profile_merge_nodes() function was called dbi_profile_merge(). That name still exists as an alias. =head1 CUSTOM DATA COLLECTION =head2 Using The Path Attribute XXX example to be added later using a selectall_arrayref call XXX nested inside a fetch loop where the first column of the XXX outer loop is bound to the profile Path using XXX bind_column(1, \${ $dbh->{Profile}->{Path}->[0] }) XXX so you end up with separate profiles for each loop XXX (patches welcome to add this to the docs :) =head2 Adding Your Own Samples The dbi_profile() function can be used to add extra sample data into the profile data tree. For example: use DBI; use DBI::Profile (dbi_profile dbi_time); my $t1 = dbi_time(); # floating point high-resolution time ... execute code you want to profile here ... my $t2 = dbi_time(); dbi_profile($h, $statement, $method, $t1, $t2); The $h parameter is the handle the extra profile sample should be associated with. The $statement parameter is the string to use where the Path specifies !Statement. If $statement is undef then $h->{Statement} will be used. Similarly $method is the string to use if the Path specifies !MethodName. There is no default value for $method. The $h->{Profile}{Path} attribute is processed by dbi_profile() in the usual way. The $h parameter is usually a DBI handle but it can also be a reference to a hash, in which case the dbi_profile() acts on each defined value in the hash. This is an efficient way to update multiple profiles with a single sample, and is used by the L module. =head1 SUBCLASSING Alternate profile modules must subclass DBI::Profile to help ensure they work with future versions of the DBI. =head1 CAVEATS Applications which generate many different statement strings (typically because they don't use placeholders) and profile with !Statement in the Path (the default) will consume memory in the Profile Data structure for each statement. Use a code ref in the Path to return an edited (simplified) form of the statement. If a method throws an exception itself (not via RaiseError) then it won't be counted in the profile. If a HandleError subroutine throws an exception (rather than returning 0 and letting RaiseError do it) then the method call won't be counted in the profile. Time spent in DESTROY is added to the profile of the parent handle. Time spent in DBI->*() methods is not counted. The time spent in the driver connect method, $drh->connect(), when it's called by DBI->connect is counted if the DBI_PROFILE environment variable is set. Time spent fetching tied variables, $DBI::errstr, is counted. Time spent in FETCH for $h->{Profile} is not counted, so getting the profile data doesn't alter it. DBI::PurePerl does not support profiling (though it could in theory). For asynchronous queries, time spent while the query is running on the backend is not counted. A few platforms don't support the gettimeofday() high resolution time function used by the DBI (and available via the dbi_time() function). In which case you'll get integer resolution time which is mostly useless. On Windows platforms the dbi_time() function is limited to millisecond resolution. Which isn't sufficiently fine for our needs, but still much better than integer resolution. This limited resolution means that fast method calls will often register as taking 0 time. And timings in general will have much more 'jitter' depending on where within the 'current millisecond' the start and end timing was taken. This documentation could be more clear. Probably needs to be reordered to start with several examples and build from there. Trying to explain the concepts first seems painful and to lead to just as many forward references. (Patches welcome!) =cut use strict; use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); use Exporter (); use UNIVERSAL (); use Carp; use DBI qw(dbi_time dbi_profile dbi_profile_merge_nodes dbi_profile_merge); $VERSION = "2.015065"; @ISA = qw(Exporter); @EXPORT = qw( DBIprofile_Statement DBIprofile_MethodName DBIprofile_MethodClass dbi_profile dbi_profile_merge_nodes dbi_profile_merge dbi_time ); @EXPORT_OK = qw( format_profile_thingy ); use constant DBIprofile_Statement => '!Statement'; use constant DBIprofile_MethodName => '!MethodName'; use constant DBIprofile_MethodClass => '!MethodClass'; our $ON_DESTROY_DUMP = sub { DBI->trace_msg(shift, 0) }; our $ON_FLUSH_DUMP = sub { DBI->trace_msg(shift, 0) }; sub new { my $class = shift; my $profile = { @_ }; return bless $profile => $class; } sub _auto_new { my $class = shift; my ($arg) = @_; # This sub is called by DBI internals when a non-hash-ref is # assigned to the Profile attribute. For example # dbi:mysql(RaiseError=>1,Profile=>!Statement:!MethodName/DBIx::MyProfile/arg1:arg2):dbname # This sub works out what to do and returns a suitable hash ref. $arg =~ s/^DBI::/2\/DBI::/ and carp "Automatically changed old-style DBI::Profile specification to $arg"; # it's a path/module/k1:v1:k2:v2:... list my ($path, $package, $args) = split /\//, $arg, 3; my @args = (defined $args) ? split(/:/, $args, -1) : (); my @Path; for my $element (split /:/, $path) { if (DBI::looks_like_number($element)) { my $reverse = ($element < 0) ? ($element=-$element, 1) : 0; my @p; # a single "DBI" is special-cased in format() push @p, "DBI" if $element & 0x01; push @p, DBIprofile_Statement if $element & 0x02; push @p, DBIprofile_MethodName if $element & 0x04; push @p, DBIprofile_MethodClass if $element & 0x08; push @p, '!Caller2' if $element & 0x10; push @Path, ($reverse ? reverse @p : @p); } elsif ($element =~ m/^&(\w.*)/) { my $name = "DBI::ProfileSubs::$1"; # capture $1 early require DBI::ProfileSubs; my $code = do { no strict; *{$name}{CODE} }; if (defined $code) { push @Path, $code; } else { warn "$name: subroutine not found\n"; push @Path, $element; } } else { push @Path, $element; } } eval "require $package" if $package; # silently ignores errors $package ||= $class; return $package->new(Path => \@Path, @args); } sub empty { # empty out profile data my $self = shift; DBI->trace_msg("profile data discarded\n",0) if $self->{Trace}; $self->{Data} = undef; } sub filename { # baseclass method, see DBI::ProfileDumper return undef; } sub flush_to_disk { # baseclass method, see DBI::ProfileDumper & DashProfiler::Core my $self = shift; return unless $ON_FLUSH_DUMP; return unless $self->{Data}; my $detail = $self->format(); $ON_FLUSH_DUMP->($detail) if $detail; } sub as_node_path_list { my ($self, $node, $path) = @_; # convert the tree into an array of arrays # from # {key1a}{key2a}[node1] # {key1a}{key2b}[node2] # {key1b}{key2a}{key3a}[node3] # to # [ [node1], 'key1a', 'key2a' ] # [ [node2], 'key1a', 'key2b' ] # [ [node3], 'key1b', 'key2a', 'key3a' ] $node ||= $self->{Data} or return; $path ||= []; if (ref $node eq 'HASH') { # recurse $path = [ @$path, undef ]; return map { $path->[-1] = $_; ($node->{$_}) ? $self->as_node_path_list($node->{$_}, $path) : () } sort keys %$node; } return [ $node, @$path ]; } sub as_text { my ($self, $args_ref) = @_; my $separator = $args_ref->{separator} || " > "; my $format_path_element = $args_ref->{format_path_element} || "%s"; # or e.g., " key%2$d='%s'" my $format = $args_ref->{format} || '%1$s: %11$fs / %10$d = %2$fs avg (first %12$fs, min %13$fs, max %14$fs)'."\n"; my @node_path_list = $self->as_node_path_list(undef, $args_ref->{path}); $args_ref->{sortsub}->(\@node_path_list) if $args_ref->{sortsub}; my $eval = "qr/".quotemeta($separator)."/"; my $separator_re = eval($eval) || quotemeta($separator); #warn "[$eval] = [$separator_re]"; my @text; my @spare_slots = (undef) x 7; for my $node_path (@node_path_list) { my ($node, @path) = @$node_path; my $idx = 0; for (@path) { s/[\r\n]+/ /g; s/$separator_re/ /g; ++$idx; if ($format_path_element eq "%s") { $_ = sprintf $format_path_element, $_; } else { $_ = sprintf $format_path_element, $_, $idx; } } push @text, sprintf $format, join($separator, @path), # 1=path ($node->[0] ? $node->[1]/$node->[0] : 0), # 2=avg @spare_slots, @$node; # 10=count, 11=dur, 12=first_dur, 13=min, 14=max, 15=first_called, 16=last_called } return @text if wantarray; return join "", @text; } sub format { my $self = shift; my $class = ref($self) || $self; my $prologue = "$class: "; my $detail = $self->format_profile_thingy( $self->{Data}, 0, " ", my $path = [], my $leaves = [], )."\n"; if (@$leaves) { dbi_profile_merge_nodes(my $totals=[], @$leaves); my ($count, $time_in_dbi, undef, undef, undef, $t1, $t2) = @$totals; (my $progname = $0) =~ s:.*/::; if ($count) { $prologue .= sprintf "%fs ", $time_in_dbi; my $perl_time = ($DBI::PERL_ENDING) ? time() - $^T : $t2-$t1; $prologue .= sprintf "%.2f%% ", $time_in_dbi/$perl_time*100 if $perl_time; my @lt = localtime(time); my $ts = sprintf "%d-%02d-%02d %02d:%02d:%02d", 1900+$lt[5], $lt[4]+1, @lt[3,2,1,0]; $prologue .= sprintf "(%d calls) $progname \@ $ts\n", $count; } if (@$leaves == 1 && ref($self->{Data}) eq 'HASH' && $self->{Data}->{DBI}) { $detail = ""; # hide the "DBI" from DBI_PROFILE=1 } } return ($prologue, $detail) if wantarray; return $prologue.$detail; } sub format_profile_leaf { my ($self, $thingy, $depth, $pad, $path, $leaves) = @_; croak "format_profile_leaf called on non-leaf ($thingy)" unless UNIVERSAL::isa($thingy,'ARRAY'); push @$leaves, $thingy if $leaves; my ($count, $total_time, $first_time, $min, $max, $first_called, $last_called) = @$thingy; return sprintf "%s%fs\n", ($pad x $depth), $total_time if $count <= 1; return sprintf "%s%fs / %d = %fs avg (first %fs, min %fs, max %fs)\n", ($pad x $depth), $total_time, $count, $count ? $total_time/$count : 0, $first_time, $min, $max; } sub format_profile_branch { my ($self, $thingy, $depth, $pad, $path, $leaves) = @_; croak "format_profile_branch called on non-branch ($thingy)" unless UNIVERSAL::isa($thingy,'HASH'); my @chunk; my @keys = sort keys %$thingy; while ( @keys ) { my $k = shift @keys; my $v = $thingy->{$k}; push @$path, $k; push @chunk, sprintf "%s'%s' =>\n%s", ($pad x $depth), $k, $self->format_profile_thingy($v, $depth+1, $pad, $path, $leaves); pop @$path; } return join "", @chunk; } sub format_profile_thingy { my ($self, $thingy, $depth, $pad, $path, $leaves) = @_; return "undef" if not defined $thingy; return $self->format_profile_leaf( $thingy, $depth, $pad, $path, $leaves) if UNIVERSAL::isa($thingy,'ARRAY'); return $self->format_profile_branch($thingy, $depth, $pad, $path, $leaves) if UNIVERSAL::isa($thingy,'HASH'); return "$thingy\n"; } sub on_destroy { my $self = shift; return unless $ON_DESTROY_DUMP; return unless $self->{Data}; my $detail = $self->format(); $ON_DESTROY_DUMP->($detail) if $detail; $self->{Data} = undef; } sub DESTROY { my $self = shift; local $@; DBI->trace_msg("profile data DESTROY\n",0) if (($self->{Trace}||0) >= 2); eval { $self->on_destroy }; if ($@) { chomp $@; my $class = ref($self) || $self; DBI->trace_msg("$class on_destroy failed: $@", 0); } } 1; perl5/DBI/Util/CacheMemory.pm000044400000004425152462470720011654 0ustar00package DBI::Util::CacheMemory; # $Id: CacheMemory.pm 10314 2007-11-26 22:25:33Z Tim $ # # Copyright (c) 2007, Tim Bunce, Ireland # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. use strict; use warnings; =head1 NAME DBI::Util::CacheMemory - a very fast but very minimal subset of Cache::Memory =head1 DESCRIPTION Like Cache::Memory (part of the Cache distribution) but doesn't support any fancy features. This module aims to be a very fast compatible strict sub-set for simple cases, such as basic client-side caching for DBD::Gofer. Like Cache::Memory, and other caches in the Cache and Cache::Cache distributions, the data will remain in the cache until cleared, it expires, or the process dies. The cache object simply going out of scope will I destroy the data. =head1 METHODS WITH CHANGES =head2 new All options except C are ignored. =head2 set Doesn't support expiry. =head2 purge Same as clear() - deletes everything in the namespace. =head1 METHODS WITHOUT CHANGES =over =item clear =item count =item exists =item remove =back =head1 UNSUPPORTED METHODS If it's not listed above, it's not supported. =cut our $VERSION = "0.010315"; my %cache; sub new { my ($class, %options ) = @_; my $namespace = $options{namespace} ||= 'Default'; #$options{_cache} = \%cache; # can be handy for debugging/dumping my $self = bless \%options => $class; $cache{ $namespace } ||= {}; # init - ensure it exists return $self; } sub set { my ($self, $key, $value) = @_; $cache{ $self->{namespace} }->{$key} = $value; } sub get { my ($self, $key) = @_; return $cache{ $self->{namespace} }->{$key}; } sub exists { my ($self, $key) = @_; return exists $cache{ $self->{namespace} }->{$key}; } sub remove { my ($self, $key) = @_; return delete $cache{ $self->{namespace} }->{$key}; } sub purge { return shift->clear; } sub clear { $cache{ shift->{namespace} } = {}; } sub count { return scalar keys %{ $cache{ shift->{namespace} } }; } sub size { my $c = $cache{ shift->{namespace} }; my $size = 0; while ( my ($k,$v) = each %$c ) { $size += length($k) + length($v); } return $size; } 1; perl5/DBI/Util/_accessor.pm000044400000003202152462470720011411 0ustar00package DBI::Util::_accessor; use strict; use Carp; our $VERSION = "0.009479"; # inspired by Class::Accessor::Fast sub new { my($proto, $fields) = @_; my($class) = ref $proto || $proto; $fields ||= {}; my @dubious = grep { !m/^_/ && !$proto->can($_) } keys %$fields; carp "$class doesn't have accessors for fields: @dubious" if @dubious; # make a (shallow) copy of $fields. bless {%$fields}, $class; } sub mk_accessors { my($self, @fields) = @_; $self->mk_accessors_using('make_accessor', @fields); } sub mk_accessors_using { my($self, $maker, @fields) = @_; my $class = ref $self || $self; # So we don't have to do lots of lookups inside the loop. $maker = $self->can($maker) unless ref $maker; no strict 'refs'; foreach my $field (@fields) { my $accessor = $self->$maker($field); *{$class."\:\:$field"} = $accessor unless defined &{$class."\:\:$field"}; } #my $hash_ref = \%{$class."\:\:_accessors_hash}; #$hash_ref->{$_}++ for @fields; # XXX also copy down _accessors_hash of base class(es) # so one in this class is complete return; } sub make_accessor { my($class, $field) = @_; return sub { my $self = shift; return $self->{$field} unless @_; croak "Too many arguments to $field" if @_ > 1; return $self->{$field} = shift; }; } sub make_accessor_autoviv_hashref { my($class, $field) = @_; return sub { my $self = shift; return $self->{$field} ||= {} unless @_; croak "Too many arguments to $field" if @_ > 1; return $self->{$field} = shift; }; } 1; perl5/DBI/Const/GetInfo/ODBC.pm000044400000201111152462470720011662 0ustar00# $Id: ODBC.pm 11373 2008-06-02 19:01:33Z Tim $ # # Copyright (c) 2002 Tim Bunce Ireland # # Constant data describing Microsoft ODBC info types and return values # for the SQLGetInfo() method of ODBC. # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. use strict; package DBI::Const::GetInfo::ODBC; our (%InfoTypes,%ReturnTypes,%ReturnValues,); =head1 NAME DBI::Const::GetInfo::ODBC - ODBC Constants for GetInfo =head1 SYNOPSIS The API for this module is private and subject to change. =head1 DESCRIPTION Information requested by GetInfo(). The API for this module is private and subject to change. =head1 REFERENCES MDAC SDK 2.6 ODBC version number (0x0351) sql.h sqlext.h =cut my $VERSION = "2.011374"; %InfoTypes = ( SQL_ACCESSIBLE_PROCEDURES => 20 , SQL_ACCESSIBLE_TABLES => 19 , SQL_ACTIVE_CONNECTIONS => 0 , SQL_ACTIVE_ENVIRONMENTS => 116 , SQL_ACTIVE_STATEMENTS => 1 , SQL_AGGREGATE_FUNCTIONS => 169 , SQL_ALTER_DOMAIN => 117 , SQL_ALTER_TABLE => 86 , SQL_ASYNC_MODE => 10021 , SQL_BATCH_ROW_COUNT => 120 , SQL_BATCH_SUPPORT => 121 , SQL_BOOKMARK_PERSISTENCE => 82 , SQL_CATALOG_LOCATION => 114 # SQL_QUALIFIER_LOCATION , SQL_CATALOG_NAME => 10003 , SQL_CATALOG_NAME_SEPARATOR => 41 # SQL_QUALIFIER_NAME_SEPARATOR , SQL_CATALOG_TERM => 42 # SQL_QUALIFIER_TERM , SQL_CATALOG_USAGE => 92 # SQL_QUALIFIER_USAGE , SQL_COLLATION_SEQ => 10004 , SQL_COLUMN_ALIAS => 87 , SQL_CONCAT_NULL_BEHAVIOR => 22 , SQL_CONVERT_BIGINT => 53 , SQL_CONVERT_BINARY => 54 , SQL_CONVERT_BIT => 55 , SQL_CONVERT_CHAR => 56 , SQL_CONVERT_DATE => 57 , SQL_CONVERT_DECIMAL => 58 , SQL_CONVERT_DOUBLE => 59 , SQL_CONVERT_FLOAT => 60 , SQL_CONVERT_FUNCTIONS => 48 , SQL_CONVERT_GUID => 173 , SQL_CONVERT_INTEGER => 61 , SQL_CONVERT_INTERVAL_DAY_TIME => 123 , SQL_CONVERT_INTERVAL_YEAR_MONTH => 124 , SQL_CONVERT_LONGVARBINARY => 71 , SQL_CONVERT_LONGVARCHAR => 62 , SQL_CONVERT_NUMERIC => 63 , SQL_CONVERT_REAL => 64 , SQL_CONVERT_SMALLINT => 65 , SQL_CONVERT_TIME => 66 , SQL_CONVERT_TIMESTAMP => 67 , SQL_CONVERT_TINYINT => 68 , SQL_CONVERT_VARBINARY => 69 , SQL_CONVERT_VARCHAR => 70 , SQL_CONVERT_WCHAR => 122 , SQL_CONVERT_WLONGVARCHAR => 125 , SQL_CONVERT_WVARCHAR => 126 , SQL_CORRELATION_NAME => 74 , SQL_CREATE_ASSERTION => 127 , SQL_CREATE_CHARACTER_SET => 128 , SQL_CREATE_COLLATION => 129 , SQL_CREATE_DOMAIN => 130 , SQL_CREATE_SCHEMA => 131 , SQL_CREATE_TABLE => 132 , SQL_CREATE_TRANSLATION => 133 , SQL_CREATE_VIEW => 134 , SQL_CURSOR_COMMIT_BEHAVIOR => 23 , SQL_CURSOR_ROLLBACK_BEHAVIOR => 24 , SQL_CURSOR_SENSITIVITY => 10001 , SQL_DATA_SOURCE_NAME => 2 , SQL_DATA_SOURCE_READ_ONLY => 25 , SQL_DATABASE_NAME => 16 , SQL_DATETIME_LITERALS => 119 , SQL_DBMS_NAME => 17 , SQL_DBMS_VER => 18 , SQL_DDL_INDEX => 170 , SQL_DEFAULT_TXN_ISOLATION => 26 , SQL_DESCRIBE_PARAMETER => 10002 , SQL_DM_VER => 171 , SQL_DRIVER_HDBC => 3 , SQL_DRIVER_HDESC => 135 , SQL_DRIVER_HENV => 4 , SQL_DRIVER_HLIB => 76 , SQL_DRIVER_HSTMT => 5 , SQL_DRIVER_NAME => 6 , SQL_DRIVER_ODBC_VER => 77 , SQL_DRIVER_VER => 7 , SQL_DROP_ASSERTION => 136 , SQL_DROP_CHARACTER_SET => 137 , SQL_DROP_COLLATION => 138 , SQL_DROP_DOMAIN => 139 , SQL_DROP_SCHEMA => 140 , SQL_DROP_TABLE => 141 , SQL_DROP_TRANSLATION => 142 , SQL_DROP_VIEW => 143 , SQL_DYNAMIC_CURSOR_ATTRIBUTES1 => 144 , SQL_DYNAMIC_CURSOR_ATTRIBUTES2 => 145 , SQL_EXPRESSIONS_IN_ORDERBY => 27 , SQL_FETCH_DIRECTION => 8 , SQL_FILE_USAGE => 84 , SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 => 146 , SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 => 147 , SQL_GETDATA_EXTENSIONS => 81 , SQL_GROUP_BY => 88 , SQL_IDENTIFIER_CASE => 28 , SQL_IDENTIFIER_QUOTE_CHAR => 29 , SQL_INDEX_KEYWORDS => 148 # SQL_INFO_DRIVER_START => 1000 # SQL_INFO_FIRST => 0 # SQL_INFO_LAST => 114 # SQL_QUALIFIER_LOCATION , SQL_INFO_SCHEMA_VIEWS => 149 , SQL_INSERT_STATEMENT => 172 , SQL_INTEGRITY => 73 , SQL_KEYSET_CURSOR_ATTRIBUTES1 => 150 , SQL_KEYSET_CURSOR_ATTRIBUTES2 => 151 , SQL_KEYWORDS => 89 , SQL_LIKE_ESCAPE_CLAUSE => 113 , SQL_LOCK_TYPES => 78 , SQL_MAXIMUM_CATALOG_NAME_LENGTH => 34 # SQL_MAX_CATALOG_NAME_LEN , SQL_MAXIMUM_COLUMNS_IN_GROUP_BY => 97 # SQL_MAX_COLUMNS_IN_GROUP_BY , SQL_MAXIMUM_COLUMNS_IN_INDEX => 98 # SQL_MAX_COLUMNS_IN_INDEX , SQL_MAXIMUM_COLUMNS_IN_ORDER_BY => 99 # SQL_MAX_COLUMNS_IN_ORDER_BY , SQL_MAXIMUM_COLUMNS_IN_SELECT => 100 # SQL_MAX_COLUMNS_IN_SELECT , SQL_MAXIMUM_COLUMN_NAME_LENGTH => 30 # SQL_MAX_COLUMN_NAME_LEN , SQL_MAXIMUM_CONCURRENT_ACTIVITIES => 1 # SQL_MAX_CONCURRENT_ACTIVITIES , SQL_MAXIMUM_CURSOR_NAME_LENGTH => 31 # SQL_MAX_CURSOR_NAME_LEN , SQL_MAXIMUM_DRIVER_CONNECTIONS => 0 # SQL_MAX_DRIVER_CONNECTIONS , SQL_MAXIMUM_IDENTIFIER_LENGTH => 10005 # SQL_MAX_IDENTIFIER_LEN , SQL_MAXIMUM_INDEX_SIZE => 102 # SQL_MAX_INDEX_SIZE , SQL_MAXIMUM_ROW_SIZE => 104 # SQL_MAX_ROW_SIZE , SQL_MAXIMUM_SCHEMA_NAME_LENGTH => 32 # SQL_MAX_SCHEMA_NAME_LEN , SQL_MAXIMUM_STATEMENT_LENGTH => 105 # SQL_MAX_STATEMENT_LEN , SQL_MAXIMUM_TABLES_IN_SELECT => 106 # SQL_MAX_TABLES_IN_SELECT , SQL_MAXIMUM_USER_NAME_LENGTH => 107 # SQL_MAX_USER_NAME_LEN , SQL_MAX_ASYNC_CONCURRENT_STATEMENTS => 10022 , SQL_MAX_BINARY_LITERAL_LEN => 112 , SQL_MAX_CATALOG_NAME_LEN => 34 , SQL_MAX_CHAR_LITERAL_LEN => 108 , SQL_MAX_COLUMNS_IN_GROUP_BY => 97 , SQL_MAX_COLUMNS_IN_INDEX => 98 , SQL_MAX_COLUMNS_IN_ORDER_BY => 99 , SQL_MAX_COLUMNS_IN_SELECT => 100 , SQL_MAX_COLUMNS_IN_TABLE => 101 , SQL_MAX_COLUMN_NAME_LEN => 30 , SQL_MAX_CONCURRENT_ACTIVITIES => 1 , SQL_MAX_CURSOR_NAME_LEN => 31 , SQL_MAX_DRIVER_CONNECTIONS => 0 , SQL_MAX_IDENTIFIER_LEN => 10005 , SQL_MAX_INDEX_SIZE => 102 , SQL_MAX_OWNER_NAME_LEN => 32 , SQL_MAX_PROCEDURE_NAME_LEN => 33 , SQL_MAX_QUALIFIER_NAME_LEN => 34 , SQL_MAX_ROW_SIZE => 104 , SQL_MAX_ROW_SIZE_INCLUDES_LONG => 103 , SQL_MAX_SCHEMA_NAME_LEN => 32 , SQL_MAX_STATEMENT_LEN => 105 , SQL_MAX_TABLES_IN_SELECT => 106 , SQL_MAX_TABLE_NAME_LEN => 35 , SQL_MAX_USER_NAME_LEN => 107 , SQL_MULTIPLE_ACTIVE_TXN => 37 , SQL_MULT_RESULT_SETS => 36 , SQL_NEED_LONG_DATA_LEN => 111 , SQL_NON_NULLABLE_COLUMNS => 75 , SQL_NULL_COLLATION => 85 , SQL_NUMERIC_FUNCTIONS => 49 , SQL_ODBC_API_CONFORMANCE => 9 , SQL_ODBC_INTERFACE_CONFORMANCE => 152 , SQL_ODBC_SAG_CLI_CONFORMANCE => 12 , SQL_ODBC_SQL_CONFORMANCE => 15 , SQL_ODBC_SQL_OPT_IEF => 73 , SQL_ODBC_VER => 10 , SQL_OJ_CAPABILITIES => 115 , SQL_ORDER_BY_COLUMNS_IN_SELECT => 90 , SQL_OUTER_JOINS => 38 , SQL_OUTER_JOIN_CAPABILITIES => 115 # SQL_OJ_CAPABILITIES , SQL_OWNER_TERM => 39 , SQL_OWNER_USAGE => 91 , SQL_PARAM_ARRAY_ROW_COUNTS => 153 , SQL_PARAM_ARRAY_SELECTS => 154 , SQL_POSITIONED_STATEMENTS => 80 , SQL_POS_OPERATIONS => 79 , SQL_PROCEDURES => 21 , SQL_PROCEDURE_TERM => 40 , SQL_QUALIFIER_LOCATION => 114 , SQL_QUALIFIER_NAME_SEPARATOR => 41 , SQL_QUALIFIER_TERM => 42 , SQL_QUALIFIER_USAGE => 92 , SQL_QUOTED_IDENTIFIER_CASE => 93 , SQL_ROW_UPDATES => 11 , SQL_SCHEMA_TERM => 39 # SQL_OWNER_TERM , SQL_SCHEMA_USAGE => 91 # SQL_OWNER_USAGE , SQL_SCROLL_CONCURRENCY => 43 , SQL_SCROLL_OPTIONS => 44 , SQL_SEARCH_PATTERN_ESCAPE => 14 , SQL_SERVER_NAME => 13 , SQL_SPECIAL_CHARACTERS => 94 , SQL_SQL92_DATETIME_FUNCTIONS => 155 , SQL_SQL92_FOREIGN_KEY_DELETE_RULE => 156 , SQL_SQL92_FOREIGN_KEY_UPDATE_RULE => 157 , SQL_SQL92_GRANT => 158 , SQL_SQL92_NUMERIC_VALUE_FUNCTIONS => 159 , SQL_SQL92_PREDICATES => 160 , SQL_SQL92_RELATIONAL_JOIN_OPERATORS => 161 , SQL_SQL92_REVOKE => 162 , SQL_SQL92_ROW_VALUE_CONSTRUCTOR => 163 , SQL_SQL92_STRING_FUNCTIONS => 164 , SQL_SQL92_VALUE_EXPRESSIONS => 165 , SQL_SQL_CONFORMANCE => 118 , SQL_STANDARD_CLI_CONFORMANCE => 166 , SQL_STATIC_CURSOR_ATTRIBUTES1 => 167 , SQL_STATIC_CURSOR_ATTRIBUTES2 => 168 , SQL_STATIC_SENSITIVITY => 83 , SQL_STRING_FUNCTIONS => 50 , SQL_SUBQUERIES => 95 , SQL_SYSTEM_FUNCTIONS => 51 , SQL_TABLE_TERM => 45 , SQL_TIMEDATE_ADD_INTERVALS => 109 , SQL_TIMEDATE_DIFF_INTERVALS => 110 , SQL_TIMEDATE_FUNCTIONS => 52 , SQL_TRANSACTION_CAPABLE => 46 # SQL_TXN_CAPABLE , SQL_TRANSACTION_ISOLATION_OPTION => 72 # SQL_TXN_ISOLATION_OPTION , SQL_TXN_CAPABLE => 46 , SQL_TXN_ISOLATION_OPTION => 72 , SQL_UNION => 96 , SQL_UNION_STATEMENT => 96 # SQL_UNION , SQL_USER_NAME => 47 , SQL_XOPEN_CLI_YEAR => 10000 ); =head2 %ReturnTypes See: mk:@MSITStore:X:\dm\cli\mdac\sdk26\Docs\odbc.chm::/htm/odbcsqlgetinfo.htm => : alias => !!! : edited =cut %ReturnTypes = ( SQL_ACCESSIBLE_PROCEDURES => 'SQLCHAR' # 20 , SQL_ACCESSIBLE_TABLES => 'SQLCHAR' # 19 , SQL_ACTIVE_CONNECTIONS => 'SQLUSMALLINT' # 0 => , SQL_ACTIVE_ENVIRONMENTS => 'SQLUSMALLINT' # 116 , SQL_ACTIVE_STATEMENTS => 'SQLUSMALLINT' # 1 => , SQL_AGGREGATE_FUNCTIONS => 'SQLUINTEGER bitmask' # 169 , SQL_ALTER_DOMAIN => 'SQLUINTEGER bitmask' # 117 , SQL_ALTER_TABLE => 'SQLUINTEGER bitmask' # 86 , SQL_ASYNC_MODE => 'SQLUINTEGER' # 10021 , SQL_BATCH_ROW_COUNT => 'SQLUINTEGER bitmask' # 120 , SQL_BATCH_SUPPORT => 'SQLUINTEGER bitmask' # 121 , SQL_BOOKMARK_PERSISTENCE => 'SQLUINTEGER bitmask' # 82 , SQL_CATALOG_LOCATION => 'SQLUSMALLINT' # 114 , SQL_CATALOG_NAME => 'SQLCHAR' # 10003 , SQL_CATALOG_NAME_SEPARATOR => 'SQLCHAR' # 41 , SQL_CATALOG_TERM => 'SQLCHAR' # 42 , SQL_CATALOG_USAGE => 'SQLUINTEGER bitmask' # 92 , SQL_COLLATION_SEQ => 'SQLCHAR' # 10004 , SQL_COLUMN_ALIAS => 'SQLCHAR' # 87 , SQL_CONCAT_NULL_BEHAVIOR => 'SQLUSMALLINT' # 22 , SQL_CONVERT_BIGINT => 'SQLUINTEGER bitmask' # 53 , SQL_CONVERT_BINARY => 'SQLUINTEGER bitmask' # 54 , SQL_CONVERT_BIT => 'SQLUINTEGER bitmask' # 55 , SQL_CONVERT_CHAR => 'SQLUINTEGER bitmask' # 56 , SQL_CONVERT_DATE => 'SQLUINTEGER bitmask' # 57 , SQL_CONVERT_DECIMAL => 'SQLUINTEGER bitmask' # 58 , SQL_CONVERT_DOUBLE => 'SQLUINTEGER bitmask' # 59 , SQL_CONVERT_FLOAT => 'SQLUINTEGER bitmask' # 60 , SQL_CONVERT_FUNCTIONS => 'SQLUINTEGER bitmask' # 48 , SQL_CONVERT_GUID => 'SQLUINTEGER bitmask' # 173 , SQL_CONVERT_INTEGER => 'SQLUINTEGER bitmask' # 61 , SQL_CONVERT_INTERVAL_DAY_TIME => 'SQLUINTEGER bitmask' # 123 , SQL_CONVERT_INTERVAL_YEAR_MONTH => 'SQLUINTEGER bitmask' # 124 , SQL_CONVERT_LONGVARBINARY => 'SQLUINTEGER bitmask' # 71 , SQL_CONVERT_LONGVARCHAR => 'SQLUINTEGER bitmask' # 62 , SQL_CONVERT_NUMERIC => 'SQLUINTEGER bitmask' # 63 , SQL_CONVERT_REAL => 'SQLUINTEGER bitmask' # 64 , SQL_CONVERT_SMALLINT => 'SQLUINTEGER bitmask' # 65 , SQL_CONVERT_TIME => 'SQLUINTEGER bitmask' # 66 , SQL_CONVERT_TIMESTAMP => 'SQLUINTEGER bitmask' # 67 , SQL_CONVERT_TINYINT => 'SQLUINTEGER bitmask' # 68 , SQL_CONVERT_VARBINARY => 'SQLUINTEGER bitmask' # 69 , SQL_CONVERT_VARCHAR => 'SQLUINTEGER bitmask' # 70 , SQL_CONVERT_WCHAR => 'SQLUINTEGER bitmask' # 122 => !!! , SQL_CONVERT_WLONGVARCHAR => 'SQLUINTEGER bitmask' # 125 => !!! , SQL_CONVERT_WVARCHAR => 'SQLUINTEGER bitmask' # 126 => !!! , SQL_CORRELATION_NAME => 'SQLUSMALLINT' # 74 , SQL_CREATE_ASSERTION => 'SQLUINTEGER bitmask' # 127 , SQL_CREATE_CHARACTER_SET => 'SQLUINTEGER bitmask' # 128 , SQL_CREATE_COLLATION => 'SQLUINTEGER bitmask' # 129 , SQL_CREATE_DOMAIN => 'SQLUINTEGER bitmask' # 130 , SQL_CREATE_SCHEMA => 'SQLUINTEGER bitmask' # 131 , SQL_CREATE_TABLE => 'SQLUINTEGER bitmask' # 132 , SQL_CREATE_TRANSLATION => 'SQLUINTEGER bitmask' # 133 , SQL_CREATE_VIEW => 'SQLUINTEGER bitmask' # 134 , SQL_CURSOR_COMMIT_BEHAVIOR => 'SQLUSMALLINT' # 23 , SQL_CURSOR_ROLLBACK_BEHAVIOR => 'SQLUSMALLINT' # 24 , SQL_CURSOR_SENSITIVITY => 'SQLUINTEGER' # 10001 , SQL_DATA_SOURCE_NAME => 'SQLCHAR' # 2 , SQL_DATA_SOURCE_READ_ONLY => 'SQLCHAR' # 25 , SQL_DATABASE_NAME => 'SQLCHAR' # 16 , SQL_DATETIME_LITERALS => 'SQLUINTEGER bitmask' # 119 , SQL_DBMS_NAME => 'SQLCHAR' # 17 , SQL_DBMS_VER => 'SQLCHAR' # 18 , SQL_DDL_INDEX => 'SQLUINTEGER bitmask' # 170 , SQL_DEFAULT_TXN_ISOLATION => 'SQLUINTEGER' # 26 , SQL_DESCRIBE_PARAMETER => 'SQLCHAR' # 10002 , SQL_DM_VER => 'SQLCHAR' # 171 , SQL_DRIVER_HDBC => 'SQLUINTEGER' # 3 , SQL_DRIVER_HDESC => 'SQLUINTEGER' # 135 , SQL_DRIVER_HENV => 'SQLUINTEGER' # 4 , SQL_DRIVER_HLIB => 'SQLUINTEGER' # 76 , SQL_DRIVER_HSTMT => 'SQLUINTEGER' # 5 , SQL_DRIVER_NAME => 'SQLCHAR' # 6 , SQL_DRIVER_ODBC_VER => 'SQLCHAR' # 77 , SQL_DRIVER_VER => 'SQLCHAR' # 7 , SQL_DROP_ASSERTION => 'SQLUINTEGER bitmask' # 136 , SQL_DROP_CHARACTER_SET => 'SQLUINTEGER bitmask' # 137 , SQL_DROP_COLLATION => 'SQLUINTEGER bitmask' # 138 , SQL_DROP_DOMAIN => 'SQLUINTEGER bitmask' # 139 , SQL_DROP_SCHEMA => 'SQLUINTEGER bitmask' # 140 , SQL_DROP_TABLE => 'SQLUINTEGER bitmask' # 141 , SQL_DROP_TRANSLATION => 'SQLUINTEGER bitmask' # 142 , SQL_DROP_VIEW => 'SQLUINTEGER bitmask' # 143 , SQL_DYNAMIC_CURSOR_ATTRIBUTES1 => 'SQLUINTEGER bitmask' # 144 , SQL_DYNAMIC_CURSOR_ATTRIBUTES2 => 'SQLUINTEGER bitmask' # 145 , SQL_EXPRESSIONS_IN_ORDERBY => 'SQLCHAR' # 27 , SQL_FETCH_DIRECTION => 'SQLUINTEGER bitmask' # 8 => !!! , SQL_FILE_USAGE => 'SQLUSMALLINT' # 84 , SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 => 'SQLUINTEGER bitmask' # 146 , SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 => 'SQLUINTEGER bitmask' # 147 , SQL_GETDATA_EXTENSIONS => 'SQLUINTEGER bitmask' # 81 , SQL_GROUP_BY => 'SQLUSMALLINT' # 88 , SQL_IDENTIFIER_CASE => 'SQLUSMALLINT' # 28 , SQL_IDENTIFIER_QUOTE_CHAR => 'SQLCHAR' # 29 , SQL_INDEX_KEYWORDS => 'SQLUINTEGER bitmask' # 148 # SQL_INFO_DRIVER_START => '' # 1000 => # SQL_INFO_FIRST => 'SQLUSMALLINT' # 0 => # SQL_INFO_LAST => 'SQLUSMALLINT' # 114 => , SQL_INFO_SCHEMA_VIEWS => 'SQLUINTEGER bitmask' # 149 , SQL_INSERT_STATEMENT => 'SQLUINTEGER bitmask' # 172 , SQL_INTEGRITY => 'SQLCHAR' # 73 , SQL_KEYSET_CURSOR_ATTRIBUTES1 => 'SQLUINTEGER bitmask' # 150 , SQL_KEYSET_CURSOR_ATTRIBUTES2 => 'SQLUINTEGER bitmask' # 151 , SQL_KEYWORDS => 'SQLCHAR' # 89 , SQL_LIKE_ESCAPE_CLAUSE => 'SQLCHAR' # 113 , SQL_LOCK_TYPES => 'SQLUINTEGER bitmask' # 78 => !!! , SQL_MAXIMUM_CATALOG_NAME_LENGTH => 'SQLUSMALLINT' # 34 => , SQL_MAXIMUM_COLUMNS_IN_GROUP_BY => 'SQLUSMALLINT' # 97 => , SQL_MAXIMUM_COLUMNS_IN_INDEX => 'SQLUSMALLINT' # 98 => , SQL_MAXIMUM_COLUMNS_IN_ORDER_BY => 'SQLUSMALLINT' # 99 => , SQL_MAXIMUM_COLUMNS_IN_SELECT => 'SQLUSMALLINT' # 100 => , SQL_MAXIMUM_COLUMN_NAME_LENGTH => 'SQLUSMALLINT' # 30 => , SQL_MAXIMUM_CONCURRENT_ACTIVITIES => 'SQLUSMALLINT' # 1 => , SQL_MAXIMUM_CURSOR_NAME_LENGTH => 'SQLUSMALLINT' # 31 => , SQL_MAXIMUM_DRIVER_CONNECTIONS => 'SQLUSMALLINT' # 0 => , SQL_MAXIMUM_IDENTIFIER_LENGTH => 'SQLUSMALLINT' # 10005 => , SQL_MAXIMUM_INDEX_SIZE => 'SQLUINTEGER' # 102 => , SQL_MAXIMUM_ROW_SIZE => 'SQLUINTEGER' # 104 => , SQL_MAXIMUM_SCHEMA_NAME_LENGTH => 'SQLUSMALLINT' # 32 => , SQL_MAXIMUM_STATEMENT_LENGTH => 'SQLUINTEGER' # 105 => , SQL_MAXIMUM_TABLES_IN_SELECT => 'SQLUSMALLINT' # 106 => , SQL_MAXIMUM_USER_NAME_LENGTH => 'SQLUSMALLINT' # 107 => , SQL_MAX_ASYNC_CONCURRENT_STATEMENTS => 'SQLUINTEGER' # 10022 , SQL_MAX_BINARY_LITERAL_LEN => 'SQLUINTEGER' # 112 , SQL_MAX_CATALOG_NAME_LEN => 'SQLUSMALLINT' # 34 , SQL_MAX_CHAR_LITERAL_LEN => 'SQLUINTEGER' # 108 , SQL_MAX_COLUMNS_IN_GROUP_BY => 'SQLUSMALLINT' # 97 , SQL_MAX_COLUMNS_IN_INDEX => 'SQLUSMALLINT' # 98 , SQL_MAX_COLUMNS_IN_ORDER_BY => 'SQLUSMALLINT' # 99 , SQL_MAX_COLUMNS_IN_SELECT => 'SQLUSMALLINT' # 100 , SQL_MAX_COLUMNS_IN_TABLE => 'SQLUSMALLINT' # 101 , SQL_MAX_COLUMN_NAME_LEN => 'SQLUSMALLINT' # 30 , SQL_MAX_CONCURRENT_ACTIVITIES => 'SQLUSMALLINT' # 1 , SQL_MAX_CURSOR_NAME_LEN => 'SQLUSMALLINT' # 31 , SQL_MAX_DRIVER_CONNECTIONS => 'SQLUSMALLINT' # 0 , SQL_MAX_IDENTIFIER_LEN => 'SQLUSMALLINT' # 10005 , SQL_MAX_INDEX_SIZE => 'SQLUINTEGER' # 102 , SQL_MAX_OWNER_NAME_LEN => 'SQLUSMALLINT' # 32 => , SQL_MAX_PROCEDURE_NAME_LEN => 'SQLUSMALLINT' # 33 , SQL_MAX_QUALIFIER_NAME_LEN => 'SQLUSMALLINT' # 34 => , SQL_MAX_ROW_SIZE => 'SQLUINTEGER' # 104 , SQL_MAX_ROW_SIZE_INCLUDES_LONG => 'SQLCHAR' # 103 , SQL_MAX_SCHEMA_NAME_LEN => 'SQLUSMALLINT' # 32 , SQL_MAX_STATEMENT_LEN => 'SQLUINTEGER' # 105 , SQL_MAX_TABLES_IN_SELECT => 'SQLUSMALLINT' # 106 , SQL_MAX_TABLE_NAME_LEN => 'SQLUSMALLINT' # 35 , SQL_MAX_USER_NAME_LEN => 'SQLUSMALLINT' # 107 , SQL_MULTIPLE_ACTIVE_TXN => 'SQLCHAR' # 37 , SQL_MULT_RESULT_SETS => 'SQLCHAR' # 36 , SQL_NEED_LONG_DATA_LEN => 'SQLCHAR' # 111 , SQL_NON_NULLABLE_COLUMNS => 'SQLUSMALLINT' # 75 , SQL_NULL_COLLATION => 'SQLUSMALLINT' # 85 , SQL_NUMERIC_FUNCTIONS => 'SQLUINTEGER bitmask' # 49 , SQL_ODBC_API_CONFORMANCE => 'SQLUSMALLINT' # 9 => !!! , SQL_ODBC_INTERFACE_CONFORMANCE => 'SQLUINTEGER' # 152 , SQL_ODBC_SAG_CLI_CONFORMANCE => 'SQLUSMALLINT' # 12 => !!! , SQL_ODBC_SQL_CONFORMANCE => 'SQLUSMALLINT' # 15 => !!! , SQL_ODBC_SQL_OPT_IEF => 'SQLCHAR' # 73 => , SQL_ODBC_VER => 'SQLCHAR' # 10 , SQL_OJ_CAPABILITIES => 'SQLUINTEGER bitmask' # 115 , SQL_ORDER_BY_COLUMNS_IN_SELECT => 'SQLCHAR' # 90 , SQL_OUTER_JOINS => 'SQLCHAR' # 38 => !!! , SQL_OUTER_JOIN_CAPABILITIES => 'SQLUINTEGER bitmask' # 115 => , SQL_OWNER_TERM => 'SQLCHAR' # 39 => , SQL_OWNER_USAGE => 'SQLUINTEGER bitmask' # 91 => , SQL_PARAM_ARRAY_ROW_COUNTS => 'SQLUINTEGER' # 153 , SQL_PARAM_ARRAY_SELECTS => 'SQLUINTEGER' # 154 , SQL_POSITIONED_STATEMENTS => 'SQLUINTEGER bitmask' # 80 => !!! , SQL_POS_OPERATIONS => 'SQLINTEGER bitmask' # 79 , SQL_PROCEDURES => 'SQLCHAR' # 21 , SQL_PROCEDURE_TERM => 'SQLCHAR' # 40 , SQL_QUALIFIER_LOCATION => 'SQLUSMALLINT' # 114 => , SQL_QUALIFIER_NAME_SEPARATOR => 'SQLCHAR' # 41 => , SQL_QUALIFIER_TERM => 'SQLCHAR' # 42 => , SQL_QUALIFIER_USAGE => 'SQLUINTEGER bitmask' # 92 => , SQL_QUOTED_IDENTIFIER_CASE => 'SQLUSMALLINT' # 93 , SQL_ROW_UPDATES => 'SQLCHAR' # 11 , SQL_SCHEMA_TERM => 'SQLCHAR' # 39 , SQL_SCHEMA_USAGE => 'SQLUINTEGER bitmask' # 91 , SQL_SCROLL_CONCURRENCY => 'SQLUINTEGER bitmask' # 43 => !!! , SQL_SCROLL_OPTIONS => 'SQLUINTEGER bitmask' # 44 , SQL_SEARCH_PATTERN_ESCAPE => 'SQLCHAR' # 14 , SQL_SERVER_NAME => 'SQLCHAR' # 13 , SQL_SPECIAL_CHARACTERS => 'SQLCHAR' # 94 , SQL_SQL92_DATETIME_FUNCTIONS => 'SQLUINTEGER bitmask' # 155 , SQL_SQL92_FOREIGN_KEY_DELETE_RULE => 'SQLUINTEGER bitmask' # 156 , SQL_SQL92_FOREIGN_KEY_UPDATE_RULE => 'SQLUINTEGER bitmask' # 157 , SQL_SQL92_GRANT => 'SQLUINTEGER bitmask' # 158 , SQL_SQL92_NUMERIC_VALUE_FUNCTIONS => 'SQLUINTEGER bitmask' # 159 , SQL_SQL92_PREDICATES => 'SQLUINTEGER bitmask' # 160 , SQL_SQL92_RELATIONAL_JOIN_OPERATORS => 'SQLUINTEGER bitmask' # 161 , SQL_SQL92_REVOKE => 'SQLUINTEGER bitmask' # 162 , SQL_SQL92_ROW_VALUE_CONSTRUCTOR => 'SQLUINTEGER bitmask' # 163 , SQL_SQL92_STRING_FUNCTIONS => 'SQLUINTEGER bitmask' # 164 , SQL_SQL92_VALUE_EXPRESSIONS => 'SQLUINTEGER bitmask' # 165 , SQL_SQL_CONFORMANCE => 'SQLUINTEGER' # 118 , SQL_STANDARD_CLI_CONFORMANCE => 'SQLUINTEGER bitmask' # 166 , SQL_STATIC_CURSOR_ATTRIBUTES1 => 'SQLUINTEGER bitmask' # 167 , SQL_STATIC_CURSOR_ATTRIBUTES2 => 'SQLUINTEGER bitmask' # 168 , SQL_STATIC_SENSITIVITY => 'SQLUINTEGER bitmask' # 83 => !!! , SQL_STRING_FUNCTIONS => 'SQLUINTEGER bitmask' # 50 , SQL_SUBQUERIES => 'SQLUINTEGER bitmask' # 95 , SQL_SYSTEM_FUNCTIONS => 'SQLUINTEGER bitmask' # 51 , SQL_TABLE_TERM => 'SQLCHAR' # 45 , SQL_TIMEDATE_ADD_INTERVALS => 'SQLUINTEGER bitmask' # 109 , SQL_TIMEDATE_DIFF_INTERVALS => 'SQLUINTEGER bitmask' # 110 , SQL_TIMEDATE_FUNCTIONS => 'SQLUINTEGER bitmask' # 52 , SQL_TRANSACTION_CAPABLE => 'SQLUSMALLINT' # 46 => , SQL_TRANSACTION_ISOLATION_OPTION => 'SQLUINTEGER bitmask' # 72 => , SQL_TXN_CAPABLE => 'SQLUSMALLINT' # 46 , SQL_TXN_ISOLATION_OPTION => 'SQLUINTEGER bitmask' # 72 , SQL_UNION => 'SQLUINTEGER bitmask' # 96 , SQL_UNION_STATEMENT => 'SQLUINTEGER bitmask' # 96 => , SQL_USER_NAME => 'SQLCHAR' # 47 , SQL_XOPEN_CLI_YEAR => 'SQLCHAR' # 10000 ); =head2 %ReturnValues See: sql.h, sqlext.h Edited: SQL_TXN_ISOLATION_OPTION =cut $ReturnValues{SQL_AGGREGATE_FUNCTIONS} = { SQL_AF_AVG => 0x00000001 , SQL_AF_COUNT => 0x00000002 , SQL_AF_MAX => 0x00000004 , SQL_AF_MIN => 0x00000008 , SQL_AF_SUM => 0x00000010 , SQL_AF_DISTINCT => 0x00000020 , SQL_AF_ALL => 0x00000040 }; $ReturnValues{SQL_ALTER_DOMAIN} = { SQL_AD_CONSTRAINT_NAME_DEFINITION => 0x00000001 , SQL_AD_ADD_DOMAIN_CONSTRAINT => 0x00000002 , SQL_AD_DROP_DOMAIN_CONSTRAINT => 0x00000004 , SQL_AD_ADD_DOMAIN_DEFAULT => 0x00000008 , SQL_AD_DROP_DOMAIN_DEFAULT => 0x00000010 , SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED => 0x00000020 , SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE => 0x00000040 , SQL_AD_ADD_CONSTRAINT_DEFERRABLE => 0x00000080 , SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE => 0x00000100 }; $ReturnValues{SQL_ALTER_TABLE} = { SQL_AT_ADD_COLUMN => 0x00000001 , SQL_AT_DROP_COLUMN => 0x00000002 , SQL_AT_ADD_CONSTRAINT => 0x00000008 , SQL_AT_ADD_COLUMN_SINGLE => 0x00000020 , SQL_AT_ADD_COLUMN_DEFAULT => 0x00000040 , SQL_AT_ADD_COLUMN_COLLATION => 0x00000080 , SQL_AT_SET_COLUMN_DEFAULT => 0x00000100 , SQL_AT_DROP_COLUMN_DEFAULT => 0x00000200 , SQL_AT_DROP_COLUMN_CASCADE => 0x00000400 , SQL_AT_DROP_COLUMN_RESTRICT => 0x00000800 , SQL_AT_ADD_TABLE_CONSTRAINT => 0x00001000 , SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE => 0x00002000 , SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT => 0x00004000 , SQL_AT_CONSTRAINT_NAME_DEFINITION => 0x00008000 , SQL_AT_CONSTRAINT_INITIALLY_DEFERRED => 0x00010000 , SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE => 0x00020000 , SQL_AT_CONSTRAINT_DEFERRABLE => 0x00040000 , SQL_AT_CONSTRAINT_NON_DEFERRABLE => 0x00080000 }; $ReturnValues{SQL_ASYNC_MODE} = { SQL_AM_NONE => 0 , SQL_AM_CONNECTION => 1 , SQL_AM_STATEMENT => 2 }; $ReturnValues{SQL_ATTR_MAX_ROWS} = { SQL_CA2_MAX_ROWS_SELECT => 0x00000080 , SQL_CA2_MAX_ROWS_INSERT => 0x00000100 , SQL_CA2_MAX_ROWS_DELETE => 0x00000200 , SQL_CA2_MAX_ROWS_UPDATE => 0x00000400 , SQL_CA2_MAX_ROWS_CATALOG => 0x00000800 # SQL_CA2_MAX_ROWS_AFFECTS_ALL => }; $ReturnValues{SQL_ATTR_SCROLL_CONCURRENCY} = { SQL_CA2_READ_ONLY_CONCURRENCY => 0x00000001 , SQL_CA2_LOCK_CONCURRENCY => 0x00000002 , SQL_CA2_OPT_ROWVER_CONCURRENCY => 0x00000004 , SQL_CA2_OPT_VALUES_CONCURRENCY => 0x00000008 , SQL_CA2_SENSITIVITY_ADDITIONS => 0x00000010 , SQL_CA2_SENSITIVITY_DELETIONS => 0x00000020 , SQL_CA2_SENSITIVITY_UPDATES => 0x00000040 }; $ReturnValues{SQL_BATCH_ROW_COUNT} = { SQL_BRC_PROCEDURES => 0x0000001 , SQL_BRC_EXPLICIT => 0x0000002 , SQL_BRC_ROLLED_UP => 0x0000004 }; $ReturnValues{SQL_BATCH_SUPPORT} = { SQL_BS_SELECT_EXPLICIT => 0x00000001 , SQL_BS_ROW_COUNT_EXPLICIT => 0x00000002 , SQL_BS_SELECT_PROC => 0x00000004 , SQL_BS_ROW_COUNT_PROC => 0x00000008 }; $ReturnValues{SQL_BOOKMARK_PERSISTENCE} = { SQL_BP_CLOSE => 0x00000001 , SQL_BP_DELETE => 0x00000002 , SQL_BP_DROP => 0x00000004 , SQL_BP_TRANSACTION => 0x00000008 , SQL_BP_UPDATE => 0x00000010 , SQL_BP_OTHER_HSTMT => 0x00000020 , SQL_BP_SCROLL => 0x00000040 }; $ReturnValues{SQL_CATALOG_LOCATION} = { SQL_CL_START => 0x0001 # SQL_QL_START , SQL_CL_END => 0x0002 # SQL_QL_END }; $ReturnValues{SQL_CATALOG_USAGE} = { SQL_CU_DML_STATEMENTS => 0x00000001 # SQL_QU_DML_STATEMENTS , SQL_CU_PROCEDURE_INVOCATION => 0x00000002 # SQL_QU_PROCEDURE_INVOCATION , SQL_CU_TABLE_DEFINITION => 0x00000004 # SQL_QU_TABLE_DEFINITION , SQL_CU_INDEX_DEFINITION => 0x00000008 # SQL_QU_INDEX_DEFINITION , SQL_CU_PRIVILEGE_DEFINITION => 0x00000010 # SQL_QU_PRIVILEGE_DEFINITION }; $ReturnValues{SQL_CONCAT_NULL_BEHAVIOR} = { SQL_CB_NULL => 0x0000 , SQL_CB_NON_NULL => 0x0001 }; $ReturnValues{SQL_CONVERT_} = { SQL_CVT_CHAR => 0x00000001 , SQL_CVT_NUMERIC => 0x00000002 , SQL_CVT_DECIMAL => 0x00000004 , SQL_CVT_INTEGER => 0x00000008 , SQL_CVT_SMALLINT => 0x00000010 , SQL_CVT_FLOAT => 0x00000020 , SQL_CVT_REAL => 0x00000040 , SQL_CVT_DOUBLE => 0x00000080 , SQL_CVT_VARCHAR => 0x00000100 , SQL_CVT_LONGVARCHAR => 0x00000200 , SQL_CVT_BINARY => 0x00000400 , SQL_CVT_VARBINARY => 0x00000800 , SQL_CVT_BIT => 0x00001000 , SQL_CVT_TINYINT => 0x00002000 , SQL_CVT_BIGINT => 0x00004000 , SQL_CVT_DATE => 0x00008000 , SQL_CVT_TIME => 0x00010000 , SQL_CVT_TIMESTAMP => 0x00020000 , SQL_CVT_LONGVARBINARY => 0x00040000 , SQL_CVT_INTERVAL_YEAR_MONTH => 0x00080000 , SQL_CVT_INTERVAL_DAY_TIME => 0x00100000 , SQL_CVT_WCHAR => 0x00200000 , SQL_CVT_WLONGVARCHAR => 0x00400000 , SQL_CVT_WVARCHAR => 0x00800000 , SQL_CVT_GUID => 0x01000000 }; $ReturnValues{SQL_CONVERT_BIGINT } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_BINARY } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_BIT } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_CHAR } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_DATE } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_DECIMAL } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_DOUBLE } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_FLOAT } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_GUID } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_INTEGER } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_INTERVAL_DAY_TIME } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_INTERVAL_YEAR_MONTH} = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_LONGVARBINARY } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_LONGVARCHAR } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_NUMERIC } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_REAL } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_SMALLINT } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_TIME } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_TIMESTAMP } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_TINYINT } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_VARBINARY } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_VARCHAR } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_WCHAR } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_WLONGVARCHAR } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_WVARCHAR } = $ReturnValues{SQL_CONVERT_}; $ReturnValues{SQL_CONVERT_FUNCTIONS} = { SQL_FN_CVT_CONVERT => 0x00000001 , SQL_FN_CVT_CAST => 0x00000002 }; $ReturnValues{SQL_CORRELATION_NAME} = { SQL_CN_NONE => 0x0000 , SQL_CN_DIFFERENT => 0x0001 , SQL_CN_ANY => 0x0002 }; $ReturnValues{SQL_CREATE_ASSERTION} = { SQL_CA_CREATE_ASSERTION => 0x00000001 , SQL_CA_CONSTRAINT_INITIALLY_DEFERRED => 0x00000010 , SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE => 0x00000020 , SQL_CA_CONSTRAINT_DEFERRABLE => 0x00000040 , SQL_CA_CONSTRAINT_NON_DEFERRABLE => 0x00000080 }; $ReturnValues{SQL_CREATE_CHARACTER_SET} = { SQL_CCS_CREATE_CHARACTER_SET => 0x00000001 , SQL_CCS_COLLATE_CLAUSE => 0x00000002 , SQL_CCS_LIMITED_COLLATION => 0x00000004 }; $ReturnValues{SQL_CREATE_COLLATION} = { SQL_CCOL_CREATE_COLLATION => 0x00000001 }; $ReturnValues{SQL_CREATE_DOMAIN} = { SQL_CDO_CREATE_DOMAIN => 0x00000001 , SQL_CDO_DEFAULT => 0x00000002 , SQL_CDO_CONSTRAINT => 0x00000004 , SQL_CDO_COLLATION => 0x00000008 , SQL_CDO_CONSTRAINT_NAME_DEFINITION => 0x00000010 , SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED => 0x00000020 , SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE => 0x00000040 , SQL_CDO_CONSTRAINT_DEFERRABLE => 0x00000080 , SQL_CDO_CONSTRAINT_NON_DEFERRABLE => 0x00000100 }; $ReturnValues{SQL_CREATE_SCHEMA} = { SQL_CS_CREATE_SCHEMA => 0x00000001 , SQL_CS_AUTHORIZATION => 0x00000002 , SQL_CS_DEFAULT_CHARACTER_SET => 0x00000004 }; $ReturnValues{SQL_CREATE_TABLE} = { SQL_CT_CREATE_TABLE => 0x00000001 , SQL_CT_COMMIT_PRESERVE => 0x00000002 , SQL_CT_COMMIT_DELETE => 0x00000004 , SQL_CT_GLOBAL_TEMPORARY => 0x00000008 , SQL_CT_LOCAL_TEMPORARY => 0x00000010 , SQL_CT_CONSTRAINT_INITIALLY_DEFERRED => 0x00000020 , SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE => 0x00000040 , SQL_CT_CONSTRAINT_DEFERRABLE => 0x00000080 , SQL_CT_CONSTRAINT_NON_DEFERRABLE => 0x00000100 , SQL_CT_COLUMN_CONSTRAINT => 0x00000200 , SQL_CT_COLUMN_DEFAULT => 0x00000400 , SQL_CT_COLUMN_COLLATION => 0x00000800 , SQL_CT_TABLE_CONSTRAINT => 0x00001000 , SQL_CT_CONSTRAINT_NAME_DEFINITION => 0x00002000 }; $ReturnValues{SQL_CREATE_TRANSLATION} = { SQL_CTR_CREATE_TRANSLATION => 0x00000001 }; $ReturnValues{SQL_CREATE_VIEW} = { SQL_CV_CREATE_VIEW => 0x00000001 , SQL_CV_CHECK_OPTION => 0x00000002 , SQL_CV_CASCADED => 0x00000004 , SQL_CV_LOCAL => 0x00000008 }; $ReturnValues{SQL_CURSOR_COMMIT_BEHAVIOR} = { SQL_CB_DELETE => 0 , SQL_CB_CLOSE => 1 , SQL_CB_PRESERVE => 2 }; $ReturnValues{SQL_CURSOR_ROLLBACK_BEHAVIOR} = $ReturnValues{SQL_CURSOR_COMMIT_BEHAVIOR}; $ReturnValues{SQL_CURSOR_SENSITIVITY} = { SQL_UNSPECIFIED => 0 , SQL_INSENSITIVE => 1 , SQL_SENSITIVE => 2 }; $ReturnValues{SQL_DATETIME_LITERALS} = { SQL_DL_SQL92_DATE => 0x00000001 , SQL_DL_SQL92_TIME => 0x00000002 , SQL_DL_SQL92_TIMESTAMP => 0x00000004 , SQL_DL_SQL92_INTERVAL_YEAR => 0x00000008 , SQL_DL_SQL92_INTERVAL_MONTH => 0x00000010 , SQL_DL_SQL92_INTERVAL_DAY => 0x00000020 , SQL_DL_SQL92_INTERVAL_HOUR => 0x00000040 , SQL_DL_SQL92_INTERVAL_MINUTE => 0x00000080 , SQL_DL_SQL92_INTERVAL_SECOND => 0x00000100 , SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH => 0x00000200 , SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR => 0x00000400 , SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE => 0x00000800 , SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND => 0x00001000 , SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE => 0x00002000 , SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND => 0x00004000 , SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND => 0x00008000 }; $ReturnValues{SQL_DDL_INDEX} = { SQL_DI_CREATE_INDEX => 0x00000001 , SQL_DI_DROP_INDEX => 0x00000002 }; $ReturnValues{SQL_DIAG_CURSOR_ROW_COUNT} = { SQL_CA2_CRC_EXACT => 0x00001000 , SQL_CA2_CRC_APPROXIMATE => 0x00002000 , SQL_CA2_SIMULATE_NON_UNIQUE => 0x00004000 , SQL_CA2_SIMULATE_TRY_UNIQUE => 0x00008000 , SQL_CA2_SIMULATE_UNIQUE => 0x00010000 }; $ReturnValues{SQL_DROP_ASSERTION} = { SQL_DA_DROP_ASSERTION => 0x00000001 }; $ReturnValues{SQL_DROP_CHARACTER_SET} = { SQL_DCS_DROP_CHARACTER_SET => 0x00000001 }; $ReturnValues{SQL_DROP_COLLATION} = { SQL_DC_DROP_COLLATION => 0x00000001 }; $ReturnValues{SQL_DROP_DOMAIN} = { SQL_DD_DROP_DOMAIN => 0x00000001 , SQL_DD_RESTRICT => 0x00000002 , SQL_DD_CASCADE => 0x00000004 }; $ReturnValues{SQL_DROP_SCHEMA} = { SQL_DS_DROP_SCHEMA => 0x00000001 , SQL_DS_RESTRICT => 0x00000002 , SQL_DS_CASCADE => 0x00000004 }; $ReturnValues{SQL_DROP_TABLE} = { SQL_DT_DROP_TABLE => 0x00000001 , SQL_DT_RESTRICT => 0x00000002 , SQL_DT_CASCADE => 0x00000004 }; $ReturnValues{SQL_DROP_TRANSLATION} = { SQL_DTR_DROP_TRANSLATION => 0x00000001 }; $ReturnValues{SQL_DROP_VIEW} = { SQL_DV_DROP_VIEW => 0x00000001 , SQL_DV_RESTRICT => 0x00000002 , SQL_DV_CASCADE => 0x00000004 }; $ReturnValues{SQL_CURSOR_ATTRIBUTES1} = { SQL_CA1_NEXT => 0x00000001 , SQL_CA1_ABSOLUTE => 0x00000002 , SQL_CA1_RELATIVE => 0x00000004 , SQL_CA1_BOOKMARK => 0x00000008 , SQL_CA1_LOCK_NO_CHANGE => 0x00000040 , SQL_CA1_LOCK_EXCLUSIVE => 0x00000080 , SQL_CA1_LOCK_UNLOCK => 0x00000100 , SQL_CA1_POS_POSITION => 0x00000200 , SQL_CA1_POS_UPDATE => 0x00000400 , SQL_CA1_POS_DELETE => 0x00000800 , SQL_CA1_POS_REFRESH => 0x00001000 , SQL_CA1_POSITIONED_UPDATE => 0x00002000 , SQL_CA1_POSITIONED_DELETE => 0x00004000 , SQL_CA1_SELECT_FOR_UPDATE => 0x00008000 , SQL_CA1_BULK_ADD => 0x00010000 , SQL_CA1_BULK_UPDATE_BY_BOOKMARK => 0x00020000 , SQL_CA1_BULK_DELETE_BY_BOOKMARK => 0x00040000 , SQL_CA1_BULK_FETCH_BY_BOOKMARK => 0x00080000 }; $ReturnValues{ SQL_DYNAMIC_CURSOR_ATTRIBUTES1} = $ReturnValues{SQL_CURSOR_ATTRIBUTES1}; $ReturnValues{SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1} = $ReturnValues{SQL_CURSOR_ATTRIBUTES1}; $ReturnValues{ SQL_KEYSET_CURSOR_ATTRIBUTES1} = $ReturnValues{SQL_CURSOR_ATTRIBUTES1}; $ReturnValues{ SQL_STATIC_CURSOR_ATTRIBUTES1} = $ReturnValues{SQL_CURSOR_ATTRIBUTES1}; $ReturnValues{SQL_CURSOR_ATTRIBUTES2} = { SQL_CA2_READ_ONLY_CONCURRENCY => 0x00000001 , SQL_CA2_LOCK_CONCURRENCY => 0x00000002 , SQL_CA2_OPT_ROWVER_CONCURRENCY => 0x00000004 , SQL_CA2_OPT_VALUES_CONCURRENCY => 0x00000008 , SQL_CA2_SENSITIVITY_ADDITIONS => 0x00000010 , SQL_CA2_SENSITIVITY_DELETIONS => 0x00000020 , SQL_CA2_SENSITIVITY_UPDATES => 0x00000040 , SQL_CA2_MAX_ROWS_SELECT => 0x00000080 , SQL_CA2_MAX_ROWS_INSERT => 0x00000100 , SQL_CA2_MAX_ROWS_DELETE => 0x00000200 , SQL_CA2_MAX_ROWS_UPDATE => 0x00000400 , SQL_CA2_MAX_ROWS_CATALOG => 0x00000800 , SQL_CA2_CRC_EXACT => 0x00001000 , SQL_CA2_CRC_APPROXIMATE => 0x00002000 , SQL_CA2_SIMULATE_NON_UNIQUE => 0x00004000 , SQL_CA2_SIMULATE_TRY_UNIQUE => 0x00008000 , SQL_CA2_SIMULATE_UNIQUE => 0x00010000 }; $ReturnValues{ SQL_DYNAMIC_CURSOR_ATTRIBUTES2} = $ReturnValues{SQL_CURSOR_ATTRIBUTES2}; $ReturnValues{SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2} = $ReturnValues{SQL_CURSOR_ATTRIBUTES2}; $ReturnValues{ SQL_KEYSET_CURSOR_ATTRIBUTES2} = $ReturnValues{SQL_CURSOR_ATTRIBUTES2}; $ReturnValues{ SQL_STATIC_CURSOR_ATTRIBUTES2} = $ReturnValues{SQL_CURSOR_ATTRIBUTES2}; $ReturnValues{SQL_FETCH_DIRECTION} = { SQL_FD_FETCH_NEXT => 0x00000001 , SQL_FD_FETCH_FIRST => 0x00000002 , SQL_FD_FETCH_LAST => 0x00000004 , SQL_FD_FETCH_PRIOR => 0x00000008 , SQL_FD_FETCH_ABSOLUTE => 0x00000010 , SQL_FD_FETCH_RELATIVE => 0x00000020 , SQL_FD_FETCH_RESUME => 0x00000040 , SQL_FD_FETCH_BOOKMARK => 0x00000080 }; $ReturnValues{SQL_FILE_USAGE} = { SQL_FILE_NOT_SUPPORTED => 0x0000 , SQL_FILE_TABLE => 0x0001 , SQL_FILE_QUALIFIER => 0x0002 , SQL_FILE_CATALOG => 0x0002 # SQL_FILE_QUALIFIER }; $ReturnValues{SQL_GETDATA_EXTENSIONS} = { SQL_GD_ANY_COLUMN => 0x00000001 , SQL_GD_ANY_ORDER => 0x00000002 , SQL_GD_BLOCK => 0x00000004 , SQL_GD_BOUND => 0x00000008 }; $ReturnValues{SQL_GROUP_BY} = { SQL_GB_NOT_SUPPORTED => 0x0000 , SQL_GB_GROUP_BY_EQUALS_SELECT => 0x0001 , SQL_GB_GROUP_BY_CONTAINS_SELECT => 0x0002 , SQL_GB_NO_RELATION => 0x0003 , SQL_GB_COLLATE => 0x0004 }; $ReturnValues{SQL_IDENTIFIER_CASE} = { SQL_IC_UPPER => 1 , SQL_IC_LOWER => 2 , SQL_IC_SENSITIVE => 3 , SQL_IC_MIXED => 4 }; $ReturnValues{SQL_INDEX_KEYWORDS} = { SQL_IK_NONE => 0x00000000 , SQL_IK_ASC => 0x00000001 , SQL_IK_DESC => 0x00000002 # SQL_IK_ALL => }; $ReturnValues{SQL_INFO_SCHEMA_VIEWS} = { SQL_ISV_ASSERTIONS => 0x00000001 , SQL_ISV_CHARACTER_SETS => 0x00000002 , SQL_ISV_CHECK_CONSTRAINTS => 0x00000004 , SQL_ISV_COLLATIONS => 0x00000008 , SQL_ISV_COLUMN_DOMAIN_USAGE => 0x00000010 , SQL_ISV_COLUMN_PRIVILEGES => 0x00000020 , SQL_ISV_COLUMNS => 0x00000040 , SQL_ISV_CONSTRAINT_COLUMN_USAGE => 0x00000080 , SQL_ISV_CONSTRAINT_TABLE_USAGE => 0x00000100 , SQL_ISV_DOMAIN_CONSTRAINTS => 0x00000200 , SQL_ISV_DOMAINS => 0x00000400 , SQL_ISV_KEY_COLUMN_USAGE => 0x00000800 , SQL_ISV_REFERENTIAL_CONSTRAINTS => 0x00001000 , SQL_ISV_SCHEMATA => 0x00002000 , SQL_ISV_SQL_LANGUAGES => 0x00004000 , SQL_ISV_TABLE_CONSTRAINTS => 0x00008000 , SQL_ISV_TABLE_PRIVILEGES => 0x00010000 , SQL_ISV_TABLES => 0x00020000 , SQL_ISV_TRANSLATIONS => 0x00040000 , SQL_ISV_USAGE_PRIVILEGES => 0x00080000 , SQL_ISV_VIEW_COLUMN_USAGE => 0x00100000 , SQL_ISV_VIEW_TABLE_USAGE => 0x00200000 , SQL_ISV_VIEWS => 0x00400000 }; $ReturnValues{SQL_INSERT_STATEMENT} = { SQL_IS_INSERT_LITERALS => 0x00000001 , SQL_IS_INSERT_SEARCHED => 0x00000002 , SQL_IS_SELECT_INTO => 0x00000004 }; $ReturnValues{SQL_LOCK_TYPES} = { SQL_LCK_NO_CHANGE => 0x00000001 , SQL_LCK_EXCLUSIVE => 0x00000002 , SQL_LCK_UNLOCK => 0x00000004 }; $ReturnValues{SQL_NON_NULLABLE_COLUMNS} = { SQL_NNC_NULL => 0x0000 , SQL_NNC_NON_NULL => 0x0001 }; $ReturnValues{SQL_NULL_COLLATION} = { SQL_NC_HIGH => 0 , SQL_NC_LOW => 1 , SQL_NC_START => 0x0002 , SQL_NC_END => 0x0004 }; $ReturnValues{SQL_NUMERIC_FUNCTIONS} = { SQL_FN_NUM_ABS => 0x00000001 , SQL_FN_NUM_ACOS => 0x00000002 , SQL_FN_NUM_ASIN => 0x00000004 , SQL_FN_NUM_ATAN => 0x00000008 , SQL_FN_NUM_ATAN2 => 0x00000010 , SQL_FN_NUM_CEILING => 0x00000020 , SQL_FN_NUM_COS => 0x00000040 , SQL_FN_NUM_COT => 0x00000080 , SQL_FN_NUM_EXP => 0x00000100 , SQL_FN_NUM_FLOOR => 0x00000200 , SQL_FN_NUM_LOG => 0x00000400 , SQL_FN_NUM_MOD => 0x00000800 , SQL_FN_NUM_SIGN => 0x00001000 , SQL_FN_NUM_SIN => 0x00002000 , SQL_FN_NUM_SQRT => 0x00004000 , SQL_FN_NUM_TAN => 0x00008000 , SQL_FN_NUM_PI => 0x00010000 , SQL_FN_NUM_RAND => 0x00020000 , SQL_FN_NUM_DEGREES => 0x00040000 , SQL_FN_NUM_LOG10 => 0x00080000 , SQL_FN_NUM_POWER => 0x00100000 , SQL_FN_NUM_RADIANS => 0x00200000 , SQL_FN_NUM_ROUND => 0x00400000 , SQL_FN_NUM_TRUNCATE => 0x00800000 }; $ReturnValues{SQL_ODBC_API_CONFORMANCE} = { SQL_OAC_NONE => 0x0000 , SQL_OAC_LEVEL1 => 0x0001 , SQL_OAC_LEVEL2 => 0x0002 }; $ReturnValues{SQL_ODBC_INTERFACE_CONFORMANCE} = { SQL_OIC_CORE => 1 , SQL_OIC_LEVEL1 => 2 , SQL_OIC_LEVEL2 => 3 }; $ReturnValues{SQL_ODBC_SAG_CLI_CONFORMANCE} = { SQL_OSCC_NOT_COMPLIANT => 0x0000 , SQL_OSCC_COMPLIANT => 0x0001 }; $ReturnValues{SQL_ODBC_SQL_CONFORMANCE} = { SQL_OSC_MINIMUM => 0x0000 , SQL_OSC_CORE => 0x0001 , SQL_OSC_EXTENDED => 0x0002 }; $ReturnValues{SQL_OJ_CAPABILITIES} = { SQL_OJ_LEFT => 0x00000001 , SQL_OJ_RIGHT => 0x00000002 , SQL_OJ_FULL => 0x00000004 , SQL_OJ_NESTED => 0x00000008 , SQL_OJ_NOT_ORDERED => 0x00000010 , SQL_OJ_INNER => 0x00000020 , SQL_OJ_ALL_COMPARISON_OPS => 0x00000040 }; $ReturnValues{SQL_OWNER_USAGE} = { SQL_OU_DML_STATEMENTS => 0x00000001 , SQL_OU_PROCEDURE_INVOCATION => 0x00000002 , SQL_OU_TABLE_DEFINITION => 0x00000004 , SQL_OU_INDEX_DEFINITION => 0x00000008 , SQL_OU_PRIVILEGE_DEFINITION => 0x00000010 }; $ReturnValues{SQL_PARAM_ARRAY_ROW_COUNTS} = { SQL_PARC_BATCH => 1 , SQL_PARC_NO_BATCH => 2 }; $ReturnValues{SQL_PARAM_ARRAY_SELECTS} = { SQL_PAS_BATCH => 1 , SQL_PAS_NO_BATCH => 2 , SQL_PAS_NO_SELECT => 3 }; $ReturnValues{SQL_POSITIONED_STATEMENTS} = { SQL_PS_POSITIONED_DELETE => 0x00000001 , SQL_PS_POSITIONED_UPDATE => 0x00000002 , SQL_PS_SELECT_FOR_UPDATE => 0x00000004 }; $ReturnValues{SQL_POS_OPERATIONS} = { SQL_POS_POSITION => 0x00000001 , SQL_POS_REFRESH => 0x00000002 , SQL_POS_UPDATE => 0x00000004 , SQL_POS_DELETE => 0x00000008 , SQL_POS_ADD => 0x00000010 }; $ReturnValues{SQL_QUALIFIER_LOCATION} = { SQL_QL_START => 0x0001 , SQL_QL_END => 0x0002 }; $ReturnValues{SQL_QUALIFIER_USAGE} = { SQL_QU_DML_STATEMENTS => 0x00000001 , SQL_QU_PROCEDURE_INVOCATION => 0x00000002 , SQL_QU_TABLE_DEFINITION => 0x00000004 , SQL_QU_INDEX_DEFINITION => 0x00000008 , SQL_QU_PRIVILEGE_DEFINITION => 0x00000010 }; $ReturnValues{SQL_QUOTED_IDENTIFIER_CASE} = $ReturnValues{SQL_IDENTIFIER_CASE}; $ReturnValues{SQL_SCHEMA_USAGE} = { SQL_SU_DML_STATEMENTS => 0x00000001 # SQL_OU_DML_STATEMENTS , SQL_SU_PROCEDURE_INVOCATION => 0x00000002 # SQL_OU_PROCEDURE_INVOCATION , SQL_SU_TABLE_DEFINITION => 0x00000004 # SQL_OU_TABLE_DEFINITION , SQL_SU_INDEX_DEFINITION => 0x00000008 # SQL_OU_INDEX_DEFINITION , SQL_SU_PRIVILEGE_DEFINITION => 0x00000010 # SQL_OU_PRIVILEGE_DEFINITION }; $ReturnValues{SQL_SCROLL_CONCURRENCY} = { SQL_SCCO_READ_ONLY => 0x00000001 , SQL_SCCO_LOCK => 0x00000002 , SQL_SCCO_OPT_ROWVER => 0x00000004 , SQL_SCCO_OPT_VALUES => 0x00000008 }; $ReturnValues{SQL_SCROLL_OPTIONS} = { SQL_SO_FORWARD_ONLY => 0x00000001 , SQL_SO_KEYSET_DRIVEN => 0x00000002 , SQL_SO_DYNAMIC => 0x00000004 , SQL_SO_MIXED => 0x00000008 , SQL_SO_STATIC => 0x00000010 }; $ReturnValues{SQL_SQL92_DATETIME_FUNCTIONS} = { SQL_SDF_CURRENT_DATE => 0x00000001 , SQL_SDF_CURRENT_TIME => 0x00000002 , SQL_SDF_CURRENT_TIMESTAMP => 0x00000004 }; $ReturnValues{SQL_SQL92_FOREIGN_KEY_DELETE_RULE} = { SQL_SFKD_CASCADE => 0x00000001 , SQL_SFKD_NO_ACTION => 0x00000002 , SQL_SFKD_SET_DEFAULT => 0x00000004 , SQL_SFKD_SET_NULL => 0x00000008 }; $ReturnValues{SQL_SQL92_FOREIGN_KEY_UPDATE_RULE} = { SQL_SFKU_CASCADE => 0x00000001 , SQL_SFKU_NO_ACTION => 0x00000002 , SQL_SFKU_SET_DEFAULT => 0x00000004 , SQL_SFKU_SET_NULL => 0x00000008 }; $ReturnValues{SQL_SQL92_GRANT} = { SQL_SG_USAGE_ON_DOMAIN => 0x00000001 , SQL_SG_USAGE_ON_CHARACTER_SET => 0x00000002 , SQL_SG_USAGE_ON_COLLATION => 0x00000004 , SQL_SG_USAGE_ON_TRANSLATION => 0x00000008 , SQL_SG_WITH_GRANT_OPTION => 0x00000010 , SQL_SG_DELETE_TABLE => 0x00000020 , SQL_SG_INSERT_TABLE => 0x00000040 , SQL_SG_INSERT_COLUMN => 0x00000080 , SQL_SG_REFERENCES_TABLE => 0x00000100 , SQL_SG_REFERENCES_COLUMN => 0x00000200 , SQL_SG_SELECT_TABLE => 0x00000400 , SQL_SG_UPDATE_TABLE => 0x00000800 , SQL_SG_UPDATE_COLUMN => 0x00001000 }; $ReturnValues{SQL_SQL92_NUMERIC_VALUE_FUNCTIONS} = { SQL_SNVF_BIT_LENGTH => 0x00000001 , SQL_SNVF_CHAR_LENGTH => 0x00000002 , SQL_SNVF_CHARACTER_LENGTH => 0x00000004 , SQL_SNVF_EXTRACT => 0x00000008 , SQL_SNVF_OCTET_LENGTH => 0x00000010 , SQL_SNVF_POSITION => 0x00000020 }; $ReturnValues{SQL_SQL92_PREDICATES} = { SQL_SP_EXISTS => 0x00000001 , SQL_SP_ISNOTNULL => 0x00000002 , SQL_SP_ISNULL => 0x00000004 , SQL_SP_MATCH_FULL => 0x00000008 , SQL_SP_MATCH_PARTIAL => 0x00000010 , SQL_SP_MATCH_UNIQUE_FULL => 0x00000020 , SQL_SP_MATCH_UNIQUE_PARTIAL => 0x00000040 , SQL_SP_OVERLAPS => 0x00000080 , SQL_SP_UNIQUE => 0x00000100 , SQL_SP_LIKE => 0x00000200 , SQL_SP_IN => 0x00000400 , SQL_SP_BETWEEN => 0x00000800 , SQL_SP_COMPARISON => 0x00001000 , SQL_SP_QUANTIFIED_COMPARISON => 0x00002000 }; $ReturnValues{SQL_SQL92_RELATIONAL_JOIN_OPERATORS} = { SQL_SRJO_CORRESPONDING_CLAUSE => 0x00000001 , SQL_SRJO_CROSS_JOIN => 0x00000002 , SQL_SRJO_EXCEPT_JOIN => 0x00000004 , SQL_SRJO_FULL_OUTER_JOIN => 0x00000008 , SQL_SRJO_INNER_JOIN => 0x00000010 , SQL_SRJO_INTERSECT_JOIN => 0x00000020 , SQL_SRJO_LEFT_OUTER_JOIN => 0x00000040 , SQL_SRJO_NATURAL_JOIN => 0x00000080 , SQL_SRJO_RIGHT_OUTER_JOIN => 0x00000100 , SQL_SRJO_UNION_JOIN => 0x00000200 }; $ReturnValues{SQL_SQL92_REVOKE} = { SQL_SR_USAGE_ON_DOMAIN => 0x00000001 , SQL_SR_USAGE_ON_CHARACTER_SET => 0x00000002 , SQL_SR_USAGE_ON_COLLATION => 0x00000004 , SQL_SR_USAGE_ON_TRANSLATION => 0x00000008 , SQL_SR_GRANT_OPTION_FOR => 0x00000010 , SQL_SR_CASCADE => 0x00000020 , SQL_SR_RESTRICT => 0x00000040 , SQL_SR_DELETE_TABLE => 0x00000080 , SQL_SR_INSERT_TABLE => 0x00000100 , SQL_SR_INSERT_COLUMN => 0x00000200 , SQL_SR_REFERENCES_TABLE => 0x00000400 , SQL_SR_REFERENCES_COLUMN => 0x00000800 , SQL_SR_SELECT_TABLE => 0x00001000 , SQL_SR_UPDATE_TABLE => 0x00002000 , SQL_SR_UPDATE_COLUMN => 0x00004000 }; $ReturnValues{SQL_SQL92_ROW_VALUE_CONSTRUCTOR} = { SQL_SRVC_VALUE_EXPRESSION => 0x00000001 , SQL_SRVC_NULL => 0x00000002 , SQL_SRVC_DEFAULT => 0x00000004 , SQL_SRVC_ROW_SUBQUERY => 0x00000008 }; $ReturnValues{SQL_SQL92_STRING_FUNCTIONS} = { SQL_SSF_CONVERT => 0x00000001 , SQL_SSF_LOWER => 0x00000002 , SQL_SSF_UPPER => 0x00000004 , SQL_SSF_SUBSTRING => 0x00000008 , SQL_SSF_TRANSLATE => 0x00000010 , SQL_SSF_TRIM_BOTH => 0x00000020 , SQL_SSF_TRIM_LEADING => 0x00000040 , SQL_SSF_TRIM_TRAILING => 0x00000080 }; $ReturnValues{SQL_SQL92_VALUE_EXPRESSIONS} = { SQL_SVE_CASE => 0x00000001 , SQL_SVE_CAST => 0x00000002 , SQL_SVE_COALESCE => 0x00000004 , SQL_SVE_NULLIF => 0x00000008 }; $ReturnValues{SQL_SQL_CONFORMANCE} = { SQL_SC_SQL92_ENTRY => 0x00000001 , SQL_SC_FIPS127_2_TRANSITIONAL => 0x00000002 , SQL_SC_SQL92_INTERMEDIATE => 0x00000004 , SQL_SC_SQL92_FULL => 0x00000008 }; $ReturnValues{SQL_STANDARD_CLI_CONFORMANCE} = { SQL_SCC_XOPEN_CLI_VERSION1 => 0x00000001 , SQL_SCC_ISO92_CLI => 0x00000002 }; $ReturnValues{SQL_STATIC_SENSITIVITY} = { SQL_SS_ADDITIONS => 0x00000001 , SQL_SS_DELETIONS => 0x00000002 , SQL_SS_UPDATES => 0x00000004 }; $ReturnValues{SQL_STRING_FUNCTIONS} = { SQL_FN_STR_CONCAT => 0x00000001 , SQL_FN_STR_INSERT => 0x00000002 , SQL_FN_STR_LEFT => 0x00000004 , SQL_FN_STR_LTRIM => 0x00000008 , SQL_FN_STR_LENGTH => 0x00000010 , SQL_FN_STR_LOCATE => 0x00000020 , SQL_FN_STR_LCASE => 0x00000040 , SQL_FN_STR_REPEAT => 0x00000080 , SQL_FN_STR_REPLACE => 0x00000100 , SQL_FN_STR_RIGHT => 0x00000200 , SQL_FN_STR_RTRIM => 0x00000400 , SQL_FN_STR_SUBSTRING => 0x00000800 , SQL_FN_STR_UCASE => 0x00001000 , SQL_FN_STR_ASCII => 0x00002000 , SQL_FN_STR_CHAR => 0x00004000 , SQL_FN_STR_DIFFERENCE => 0x00008000 , SQL_FN_STR_LOCATE_2 => 0x00010000 , SQL_FN_STR_SOUNDEX => 0x00020000 , SQL_FN_STR_SPACE => 0x00040000 , SQL_FN_STR_BIT_LENGTH => 0x00080000 , SQL_FN_STR_CHAR_LENGTH => 0x00100000 , SQL_FN_STR_CHARACTER_LENGTH => 0x00200000 , SQL_FN_STR_OCTET_LENGTH => 0x00400000 , SQL_FN_STR_POSITION => 0x00800000 }; $ReturnValues{SQL_SUBQUERIES} = { SQL_SQ_COMPARISON => 0x00000001 , SQL_SQ_EXISTS => 0x00000002 , SQL_SQ_IN => 0x00000004 , SQL_SQ_QUANTIFIED => 0x00000008 , SQL_SQ_CORRELATED_SUBQUERIES => 0x00000010 }; $ReturnValues{SQL_SYSTEM_FUNCTIONS} = { SQL_FN_SYS_USERNAME => 0x00000001 , SQL_FN_SYS_DBNAME => 0x00000002 , SQL_FN_SYS_IFNULL => 0x00000004 }; $ReturnValues{SQL_TIMEDATE_ADD_INTERVALS} = { SQL_FN_TSI_FRAC_SECOND => 0x00000001 , SQL_FN_TSI_SECOND => 0x00000002 , SQL_FN_TSI_MINUTE => 0x00000004 , SQL_FN_TSI_HOUR => 0x00000008 , SQL_FN_TSI_DAY => 0x00000010 , SQL_FN_TSI_WEEK => 0x00000020 , SQL_FN_TSI_MONTH => 0x00000040 , SQL_FN_TSI_QUARTER => 0x00000080 , SQL_FN_TSI_YEAR => 0x00000100 }; $ReturnValues{SQL_TIMEDATE_FUNCTIONS} = { SQL_FN_TD_NOW => 0x00000001 , SQL_FN_TD_CURDATE => 0x00000002 , SQL_FN_TD_DAYOFMONTH => 0x00000004 , SQL_FN_TD_DAYOFWEEK => 0x00000008 , SQL_FN_TD_DAYOFYEAR => 0x00000010 , SQL_FN_TD_MONTH => 0x00000020 , SQL_FN_TD_QUARTER => 0x00000040 , SQL_FN_TD_WEEK => 0x00000080 , SQL_FN_TD_YEAR => 0x00000100 , SQL_FN_TD_CURTIME => 0x00000200 , SQL_FN_TD_HOUR => 0x00000400 , SQL_FN_TD_MINUTE => 0x00000800 , SQL_FN_TD_SECOND => 0x00001000 , SQL_FN_TD_TIMESTAMPADD => 0x00002000 , SQL_FN_TD_TIMESTAMPDIFF => 0x00004000 , SQL_FN_TD_DAYNAME => 0x00008000 , SQL_FN_TD_MONTHNAME => 0x00010000 , SQL_FN_TD_CURRENT_DATE => 0x00020000 , SQL_FN_TD_CURRENT_TIME => 0x00040000 , SQL_FN_TD_CURRENT_TIMESTAMP => 0x00080000 , SQL_FN_TD_EXTRACT => 0x00100000 }; $ReturnValues{SQL_TXN_CAPABLE} = { SQL_TC_NONE => 0 , SQL_TC_DML => 1 , SQL_TC_ALL => 2 , SQL_TC_DDL_COMMIT => 3 , SQL_TC_DDL_IGNORE => 4 }; $ReturnValues{SQL_TRANSACTION_ISOLATION_OPTION} = { SQL_TRANSACTION_READ_UNCOMMITTED => 0x00000001 # SQL_TXN_READ_UNCOMMITTED , SQL_TRANSACTION_READ_COMMITTED => 0x00000002 # SQL_TXN_READ_COMMITTED , SQL_TRANSACTION_REPEATABLE_READ => 0x00000004 # SQL_TXN_REPEATABLE_READ , SQL_TRANSACTION_SERIALIZABLE => 0x00000008 # SQL_TXN_SERIALIZABLE }; $ReturnValues{SQL_DEFAULT_TRANSACTION_ISOLATION} = $ReturnValues{SQL_TRANSACTION_ISOLATION_OPTION}; $ReturnValues{SQL_TXN_ISOLATION_OPTION} = { SQL_TXN_READ_UNCOMMITTED => 0x00000001 , SQL_TXN_READ_COMMITTED => 0x00000002 , SQL_TXN_REPEATABLE_READ => 0x00000004 , SQL_TXN_SERIALIZABLE => 0x00000008 }; $ReturnValues{SQL_DEFAULT_TXN_ISOLATION} = $ReturnValues{SQL_TXN_ISOLATION_OPTION}; $ReturnValues{SQL_TXN_VERSIONING} = { SQL_TXN_VERSIONING => 0x00000010 }; $ReturnValues{SQL_UNION} = { SQL_U_UNION => 0x00000001 , SQL_U_UNION_ALL => 0x00000002 }; $ReturnValues{SQL_UNION_STATEMENT} = { SQL_US_UNION => 0x00000001 # SQL_U_UNION , SQL_US_UNION_ALL => 0x00000002 # SQL_U_UNION_ALL }; 1; =head1 TODO Corrections? SQL_NULL_COLLATION: ODBC vs ANSI Unique values for $ReturnValues{...}?, e.g. SQL_FILE_USAGE =cut perl5/DBI/Const/GetInfo/ANSI.pm000044400000022600152462470720011711 0ustar00# $Id: ANSI.pm 8696 2007-01-24 23:12:38Z Tim $ # # Copyright (c) 2002 Tim Bunce Ireland # # Constant data describing ANSI CLI info types and return values for the # SQLGetInfo() method of ODBC. # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. use strict; package DBI::Const::GetInfo::ANSI; our (%InfoTypes,%ReturnTypes,%ReturnValues,); =head1 NAME DBI::Const::GetInfo::ANSI - ISO/IEC SQL/CLI Constants for GetInfo =head1 SYNOPSIS The API for this module is private and subject to change. =head1 DESCRIPTION Information requested by GetInfo(). See: A.1 C header file SQLCLI.H, Page 316, 317. The API for this module is private and subject to change. =head1 REFERENCES ISO/IEC FCD 9075-3:200x Information technology - Database Languages - SQL - Part 3: Call-Level Interface (SQL/CLI) SC32 N00744 = WG3:VIE-005 = H2-2002-007 Date: 2002-01-15 =cut my $VERSION = "2.008697"; %InfoTypes = ( SQL_ALTER_TABLE => 86 , SQL_CATALOG_NAME => 10003 , SQL_COLLATING_SEQUENCE => 10004 , SQL_CURSOR_COMMIT_BEHAVIOR => 23 , SQL_CURSOR_SENSITIVITY => 10001 , SQL_DATA_SOURCE_NAME => 2 , SQL_DATA_SOURCE_READ_ONLY => 25 , SQL_DBMS_NAME => 17 , SQL_DBMS_VERSION => 18 , SQL_DEFAULT_TRANSACTION_ISOLATION => 26 , SQL_DESCRIBE_PARAMETER => 10002 , SQL_FETCH_DIRECTION => 8 , SQL_GETDATA_EXTENSIONS => 81 , SQL_IDENTIFIER_CASE => 28 , SQL_INTEGRITY => 73 , SQL_MAXIMUM_CATALOG_NAME_LENGTH => 34 , SQL_MAXIMUM_COLUMNS_IN_GROUP_BY => 97 , SQL_MAXIMUM_COLUMNS_IN_ORDER_BY => 99 , SQL_MAXIMUM_COLUMNS_IN_SELECT => 100 , SQL_MAXIMUM_COLUMNS_IN_TABLE => 101 , SQL_MAXIMUM_COLUMN_NAME_LENGTH => 30 , SQL_MAXIMUM_CONCURRENT_ACTIVITIES => 1 , SQL_MAXIMUM_CURSOR_NAME_LENGTH => 31 , SQL_MAXIMUM_DRIVER_CONNECTIONS => 0 , SQL_MAXIMUM_IDENTIFIER_LENGTH => 10005 , SQL_MAXIMUM_SCHEMA_NAME_LENGTH => 32 , SQL_MAXIMUM_STMT_OCTETS => 20000 , SQL_MAXIMUM_STMT_OCTETS_DATA => 20001 , SQL_MAXIMUM_STMT_OCTETS_SCHEMA => 20002 , SQL_MAXIMUM_TABLES_IN_SELECT => 106 , SQL_MAXIMUM_TABLE_NAME_LENGTH => 35 , SQL_MAXIMUM_USER_NAME_LENGTH => 107 , SQL_NULL_COLLATION => 85 , SQL_ORDER_BY_COLUMNS_IN_SELECT => 90 , SQL_OUTER_JOIN_CAPABILITIES => 115 , SQL_SCROLL_CONCURRENCY => 43 , SQL_SEARCH_PATTERN_ESCAPE => 14 , SQL_SERVER_NAME => 13 , SQL_SPECIAL_CHARACTERS => 94 , SQL_TRANSACTION_CAPABLE => 46 , SQL_TRANSACTION_ISOLATION_OPTION => 72 , SQL_USER_NAME => 47 ); =head2 %ReturnTypes See: Codes and data types for implementation information (Table 28), Page 85, 86. Mapped to ODBC datatype names. =cut %ReturnTypes = # maxlen ( SQL_ALTER_TABLE => 'SQLUINTEGER bitmask' # INTEGER , SQL_CATALOG_NAME => 'SQLCHAR' # CHARACTER (1) , SQL_COLLATING_SEQUENCE => 'SQLCHAR' # CHARACTER (254) , SQL_CURSOR_COMMIT_BEHAVIOR => 'SQLUSMALLINT' # SMALLINT , SQL_CURSOR_SENSITIVITY => 'SQLUINTEGER' # INTEGER , SQL_DATA_SOURCE_NAME => 'SQLCHAR' # CHARACTER (128) , SQL_DATA_SOURCE_READ_ONLY => 'SQLCHAR' # CHARACTER (1) , SQL_DBMS_NAME => 'SQLCHAR' # CHARACTER (254) , SQL_DBMS_VERSION => 'SQLCHAR' # CHARACTER (254) , SQL_DEFAULT_TRANSACTION_ISOLATION => 'SQLUINTEGER' # INTEGER , SQL_DESCRIBE_PARAMETER => 'SQLCHAR' # CHARACTER (1) , SQL_FETCH_DIRECTION => 'SQLUINTEGER bitmask' # INTEGER , SQL_GETDATA_EXTENSIONS => 'SQLUINTEGER bitmask' # INTEGER , SQL_IDENTIFIER_CASE => 'SQLUSMALLINT' # SMALLINT , SQL_INTEGRITY => 'SQLCHAR' # CHARACTER (1) , SQL_MAXIMUM_CATALOG_NAME_LENGTH => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_COLUMNS_IN_GROUP_BY => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_COLUMNS_IN_ORDER_BY => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_COLUMNS_IN_SELECT => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_COLUMNS_IN_TABLE => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_COLUMN_NAME_LENGTH => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_CONCURRENT_ACTIVITIES => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_CURSOR_NAME_LENGTH => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_DRIVER_CONNECTIONS => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_IDENTIFIER_LENGTH => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_SCHEMA_NAME_LENGTH => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_STMT_OCTETS => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_STMT_OCTETS_DATA => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_STMT_OCTETS_SCHEMA => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_TABLES_IN_SELECT => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_TABLE_NAME_LENGTH => 'SQLUSMALLINT' # SMALLINT , SQL_MAXIMUM_USER_NAME_LENGTH => 'SQLUSMALLINT' # SMALLINT , SQL_NULL_COLLATION => 'SQLUSMALLINT' # SMALLINT , SQL_ORDER_BY_COLUMNS_IN_SELECT => 'SQLCHAR' # CHARACTER (1) , SQL_OUTER_JOIN_CAPABILITIES => 'SQLUINTEGER bitmask' # INTEGER , SQL_SCROLL_CONCURRENCY => 'SQLUINTEGER bitmask' # INTEGER , SQL_SEARCH_PATTERN_ESCAPE => 'SQLCHAR' # CHARACTER (1) , SQL_SERVER_NAME => 'SQLCHAR' # CHARACTER (128) , SQL_SPECIAL_CHARACTERS => 'SQLCHAR' # CHARACTER (254) , SQL_TRANSACTION_CAPABLE => 'SQLUSMALLINT' # SMALLINT , SQL_TRANSACTION_ISOLATION_OPTION => 'SQLUINTEGER bitmask' # INTEGER , SQL_USER_NAME => 'SQLCHAR' # CHARACTER (128) ); =head2 %ReturnValues See: A.1 C header file SQLCLI.H, Page 317, 318. =cut $ReturnValues{SQL_ALTER_TABLE} = { SQL_AT_ADD_COLUMN => 0x00000001 , SQL_AT_DROP_COLUMN => 0x00000002 , SQL_AT_ALTER_COLUMN => 0x00000004 , SQL_AT_ADD_CONSTRAINT => 0x00000008 , SQL_AT_DROP_CONSTRAINT => 0x00000010 }; $ReturnValues{SQL_CURSOR_COMMIT_BEHAVIOR} = { SQL_CB_DELETE => 0 , SQL_CB_CLOSE => 1 , SQL_CB_PRESERVE => 2 }; $ReturnValues{SQL_FETCH_DIRECTION} = { SQL_FD_FETCH_NEXT => 0x00000001 , SQL_FD_FETCH_FIRST => 0x00000002 , SQL_FD_FETCH_LAST => 0x00000004 , SQL_FD_FETCH_PRIOR => 0x00000008 , SQL_FD_FETCH_ABSOLUTE => 0x00000010 , SQL_FD_FETCH_RELATIVE => 0x00000020 }; $ReturnValues{SQL_GETDATA_EXTENSIONS} = { SQL_GD_ANY_COLUMN => 0x00000001 , SQL_GD_ANY_ORDER => 0x00000002 }; $ReturnValues{SQL_IDENTIFIER_CASE} = { SQL_IC_UPPER => 1 , SQL_IC_LOWER => 2 , SQL_IC_SENSITIVE => 3 , SQL_IC_MIXED => 4 }; $ReturnValues{SQL_NULL_COLLATION} = { SQL_NC_HIGH => 1 , SQL_NC_LOW => 2 }; $ReturnValues{SQL_OUTER_JOIN_CAPABILITIES} = { SQL_OUTER_JOIN_LEFT => 0x00000001 , SQL_OUTER_JOIN_RIGHT => 0x00000002 , SQL_OUTER_JOIN_FULL => 0x00000004 , SQL_OUTER_JOIN_NESTED => 0x00000008 , SQL_OUTER_JOIN_NOT_ORDERED => 0x00000010 , SQL_OUTER_JOIN_INNER => 0x00000020 , SQL_OUTER_JOIN_ALL_COMPARISON_OPS => 0x00000040 }; $ReturnValues{SQL_SCROLL_CONCURRENCY} = { SQL_SCCO_READ_ONLY => 0x00000001 , SQL_SCCO_LOCK => 0x00000002 , SQL_SCCO_OPT_ROWVER => 0x00000004 , SQL_SCCO_OPT_VALUES => 0x00000008 }; $ReturnValues{SQL_TRANSACTION_ACCESS_MODE} = { SQL_TRANSACTION_READ_ONLY => 0x00000001 , SQL_TRANSACTION_READ_WRITE => 0x00000002 }; $ReturnValues{SQL_TRANSACTION_CAPABLE} = { SQL_TC_NONE => 0 , SQL_TC_DML => 1 , SQL_TC_ALL => 2 , SQL_TC_DDL_COMMIT => 3 , SQL_TC_DDL_IGNORE => 4 }; $ReturnValues{SQL_TRANSACTION_ISOLATION} = { SQL_TRANSACTION_READ_UNCOMMITTED => 0x00000001 , SQL_TRANSACTION_READ_COMMITTED => 0x00000002 , SQL_TRANSACTION_REPEATABLE_READ => 0x00000004 , SQL_TRANSACTION_SERIALIZABLE => 0x00000008 }; 1; =head1 TODO Corrections, e.g.: SQL_TRANSACTION_ISOLATION_OPTION vs. SQL_TRANSACTION_ISOLATION =cut perl5/DBI/Const/GetInfoType.pm000044400000002253152462470720012023 0ustar00# $Id: GetInfoType.pm 8696 2007-01-24 23:12:38Z Tim $ # # Copyright (c) 2002 Tim Bunce Ireland # # Constant data describing info type codes for the DBI getinfo function. # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. package DBI::Const::GetInfoType; use strict; use Exporter (); use vars qw(@ISA @EXPORT @EXPORT_OK %GetInfoType); @ISA = qw(Exporter); @EXPORT = qw(%GetInfoType); my $VERSION = "2.008697"; =head1 NAME DBI::Const::GetInfoType - Data describing GetInfo type codes =head1 SYNOPSIS use DBI::Const::GetInfoType; =head1 DESCRIPTION Imports a %GetInfoType hash which maps names for GetInfo Type Codes into their corresponding numeric values. For example: $database_version = $dbh->get_info( $GetInfoType{SQL_DBMS_VER} ); The interface to this module is new and nothing beyond what is written here is guaranteed. =cut use DBI::Const::GetInfo::ANSI (); # liable to change use DBI::Const::GetInfo::ODBC (); # liable to change %GetInfoType = ( %DBI::Const::GetInfo::ANSI::InfoTypes # liable to change , %DBI::Const::GetInfo::ODBC::InfoTypes # liable to change ); 1; perl5/DBI/Const/GetInfoReturn.pm000044400000004653152462470720012367 0ustar00# $Id: GetInfoReturn.pm 8696 2007-01-24 23:12:38Z Tim $ # # Copyright (c) 2002 Tim Bunce Ireland # # Constant data describing return values from the DBI getinfo function. # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. package DBI::Const::GetInfoReturn; use strict; use Exporter (); use vars qw(@ISA @EXPORT @EXPORT_OK %GetInfoReturnTypes %GetInfoReturnValues); @ISA = qw(Exporter); @EXPORT = qw(%GetInfoReturnTypes %GetInfoReturnValues); my $VERSION = "2.008697"; =head1 NAME DBI::Const::GetInfoReturn - Data and functions for describing GetInfo results =head1 SYNOPSIS The interface to this module is undocumented and liable to change. =head1 DESCRIPTION Data and functions for describing GetInfo results =cut use DBI::Const::GetInfoType; use DBI::Const::GetInfo::ANSI (); use DBI::Const::GetInfo::ODBC (); %GetInfoReturnTypes = ( %DBI::Const::GetInfo::ANSI::ReturnTypes , %DBI::Const::GetInfo::ODBC::ReturnTypes ); %GetInfoReturnValues = (); { my $A = \%DBI::Const::GetInfo::ANSI::ReturnValues; my $O = \%DBI::Const::GetInfo::ODBC::ReturnValues; while ( my ($k, $v) = each %$A ) { my %h = ( exists $O->{$k} ) ? ( %$v, %{$O->{$k}} ) : %$v; $GetInfoReturnValues{$k} = \%h; } while ( my ($k, $v) = each %$O ) { next if exists $A->{$k}; my %h = %$v; $GetInfoReturnValues{$k} = \%h; } } # ----------------------------------------------------------------------------- sub Format { my $InfoType = shift; my $Value = shift; return '' unless defined $Value; my $ReturnType = $GetInfoReturnTypes{$InfoType}; return sprintf '0x%08X', $Value if $ReturnType eq 'SQLUINTEGER bitmask'; return sprintf '0x%08X', $Value if $ReturnType eq 'SQLINTEGER bitmask'; # return '"' . $Value . '"' if $ReturnType eq 'SQLCHAR'; return $Value; } sub Explain { my $InfoType = shift; my $Value = shift; return '' unless defined $Value; return '' unless exists $GetInfoReturnValues{$InfoType}; $Value = int $Value; my $ReturnType = $GetInfoReturnTypes{$InfoType}; my %h = reverse %{$GetInfoReturnValues{$InfoType}}; if ( $ReturnType eq 'SQLUINTEGER bitmask'|| $ReturnType eq 'SQLINTEGER bitmask') { my @a = (); for my $k ( sort { $a <=> $b } keys %h ) { push @a, $h{$k} if $Value & $k; } return wantarray ? @a : join(' ', @a ); } else { return $h{$Value} ||'?'; } } 1; perl5/DBI/DBD/SqlEngine.pm000044400000177107152462470720011031 0ustar00# -*- perl -*- # # DBI::DBD::SqlEngine - A base class for implementing DBI drivers that # have not an own SQL engine # # This module is currently maintained by # # H.Merijn Brand & Jens Rehsack # # The original author is Jochen Wiedmann. # # Copyright (C) 2009-2013 by H.Merijn Brand & Jens Rehsack # Copyright (C) 2004 by Jeff Zucker # Copyright (C) 1998 by Jochen Wiedmann # # All rights reserved. # # You may distribute this module under the terms of either the GNU # General Public License or the Artistic License, as specified in # the Perl README file. require 5.008; use strict; use DBI (); require DBI::SQL::Nano; package DBI::DBD::SqlEngine; use strict; use Carp; use vars qw( @ISA $VERSION $drh %methods_installed); $VERSION = "0.06"; $drh = undef; # holds driver handle(s) once initialized DBI->setup_driver("DBI::DBD::SqlEngine"); # only needed once but harmless to repeat my %accessors = ( versions => "get_driver_versions", new_meta => "new_sql_engine_meta", get_meta => "get_sql_engine_meta", set_meta => "set_sql_engine_meta", clear_meta => "clear_sql_engine_meta", ); sub driver ($;$) { my ( $class, $attr ) = @_; # Drivers typically use a singleton object for the $drh # We use a hash here to have one singleton per subclass. # (Otherwise DBD::CSV and DBD::DBM, for example, would # share the same driver object which would cause problems.) # An alternative would be to not cache the $drh here at all # and require that subclasses do that. Subclasses should do # their own caching, so caching here just provides extra safety. $drh->{$class} and return $drh->{$class}; $attr ||= {}; { no strict "refs"; unless ( $attr->{Attribution} ) { $class eq "DBI::DBD::SqlEngine" and $attr->{Attribution} = "$class by Jens Rehsack"; $attr->{Attribution} ||= ${ $class . "::ATTRIBUTION" } || "oops the author of $class forgot to define this"; } $attr->{Version} ||= ${ $class . "::VERSION" }; $attr->{Name} or ( $attr->{Name} = $class ) =~ s/^DBD\:\://; } $drh->{$class} = DBI::_new_drh( $class . "::dr", $attr ); $drh->{$class}->STORE( ShowErrorStatement => 1 ); my $prefix = DBI->driver_prefix($class); if ($prefix) { my $dbclass = $class . "::db"; while ( my ( $accessor, $funcname ) = each %accessors ) { my $method = $prefix . $accessor; $dbclass->can($method) and next; my $inject = sprintf <<'EOI', $dbclass, $method, $dbclass, $funcname; sub %s::%s { my $func = %s->can (q{%s}); goto &$func; } EOI eval $inject; $dbclass->install_method($method); } } else { warn "Using DBI::DBD::SqlEngine with unregistered driver $class.\n" . "Reading documentation how to prevent is strongly recommended.\n"; } # XXX inject DBD::XXX::Statement unless exists my $stclass = $class . "::st"; $stclass->install_method("sql_get_colnames") unless ( $methods_installed{__PACKAGE__}++ ); return $drh->{$class}; } # driver sub CLONE { undef $drh; } # CLONE # ====== DRIVER ================================================================ package DBI::DBD::SqlEngine::dr; use strict; use warnings; use vars qw(@ISA $imp_data_size); use Carp qw/carp/; $imp_data_size = 0; sub connect ($$;$$$) { my ( $drh, $dbname, $user, $auth, $attr ) = @_; # create a 'blank' dbh my $dbh = DBI::_new_dbh( $drh, { Name => $dbname, USER => $user, CURRENT_USER => $user, } ); if ($dbh) { # must be done first, because setting flags implicitly calls $dbdname::db->STORE $dbh->func( 0, "init_default_attributes" ); my $two_phased_init; defined $dbh->{sql_init_phase} and $two_phased_init = ++$dbh->{sql_init_phase}; my %second_phase_attrs; my @func_inits; # this must be done to allow DBI.pm reblessing got handle after successful connecting exists $attr->{RootClass} and $second_phase_attrs{RootClass} = delete $attr->{RootClass}; my ( $var, $val ); while ( length $dbname ) { if ( $dbname =~ s/^((?:[^\\;]|\\.)*?);//s ) { $var = $1; } else { $var = $dbname; $dbname = ""; } if ( $var =~ m/^(.+?)=(.*)/s ) { $var = $1; ( $val = $2 ) =~ s/\\(.)/$1/g; exists $attr->{$var} and carp("$var is given in DSN *and* \$attr during DBI->connect()") if ($^W); exists $attr->{$var} or $attr->{$var} = $val; } elsif ( $var =~ m/^(.+?)=>(.*)/s ) { $var = $1; ( $val = $2 ) =~ s/\\(.)/$1/g; my $ref = eval $val; # $dbh->$var($ref); push( @func_inits, $var, $ref ); } } # The attributes need to be sorted in a specific way as the # assignment is through tied hashes and calls STORE on each # attribute. Some attributes require to be called prior to # others # e.g. f_dir *must* be done before xx_tables in DBD::File # The dbh attribute sql_init_order is a hash with the order # as key (low is first, 0 .. 100) and the attributes that # are set to that oreder as anon-list as value: # { 0 => [qw( AutoCommit PrintError RaiseError Profile ... )], # 10 => [ list of attr to be dealt with immediately after first ], # 50 => [ all fields that are unspecified or default sort order ], # 90 => [ all fields that are needed after other initialisation ], # } my %order = map { my $order = $_; map { ( $_ => $order ) } @{ $dbh->{sql_init_order}{$order} }; } sort { $a <=> $b } keys %{ $dbh->{sql_init_order} || {} }; my @ordered_attr = map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [ $_, defined $order{$_} ? $order{$_} : 50 ] } keys %$attr; # initialize given attributes ... lower weighted before higher weighted foreach my $a (@ordered_attr) { exists $attr->{$a} or next; $two_phased_init and eval { $dbh->{$a} = $attr->{$a}; delete $attr->{$a}; }; $@ and $second_phase_attrs{$a} = delete $attr->{$a}; $two_phased_init or $dbh->STORE( $a, delete $attr->{$a} ); } $two_phased_init and $dbh->func( 1, "init_default_attributes" ); %$attr = %second_phase_attrs; for ( my $i = 0; $i < scalar(@func_inits); $i += 2 ) { my $func = $func_inits[$i]; my $arg = $func_inits[ $i + 1 ]; $dbh->$func($arg); } $dbh->func("init_done"); $dbh->STORE( Active => 1 ); } return $dbh; } # connect sub data_sources ($;$) { my ( $drh, $attr ) = @_; my $tbl_src; $attr and defined $attr->{sql_table_source} and $attr->{sql_table_source}->isa('DBI::DBD::SqlEngine::TableSource') and $tbl_src = $attr->{sql_table_source}; !defined($tbl_src) and $drh->{ImplementorClass}->can('default_table_source') and $tbl_src = $drh->{ImplementorClass}->default_table_source(); defined($tbl_src) or return; $tbl_src->data_sources( $drh, $attr ); } # data_sources sub disconnect_all { } # disconnect_all sub DESTROY { undef; } # DESTROY # ====== DATABASE ============================================================== package DBI::DBD::SqlEngine::db; use strict; use warnings; use vars qw(@ISA $imp_data_size); use Carp; if ( eval { require Clone; } ) { Clone->import("clone"); } else { require Storable; # in CORE since 5.7.3 *clone = \&Storable::dclone; } $imp_data_size = 0; sub ping { ( $_[0]->FETCH("Active") ) ? 1 : 0; } # ping sub data_sources { my ( $dbh, $attr, @other ) = @_; my $drh = $dbh->{Driver}; # XXX proxy issues? ref($attr) eq 'HASH' or $attr = {}; defined( $attr->{sql_table_source} ) or $attr->{sql_table_source} = $dbh->{sql_table_source}; return $drh->data_sources( $attr, @other ); } sub prepare ($$;@) { my ( $dbh, $statement, @attribs ) = @_; # create a 'blank' sth my $sth = DBI::_new_sth( $dbh, { Statement => $statement } ); if ($sth) { my $class = $sth->FETCH("ImplementorClass"); $class =~ s/::st$/::Statement/; my $stmt; # if using SQL::Statement version > 1 # cache the parser object if the DBD supports parser caching # SQL::Nano and older SQL::Statements don't support this if ( $class->isa("SQL::Statement") ) { my $parser = $dbh->{sql_parser_object}; $parser ||= eval { $dbh->func("sql_parser_object") }; if ($@) { $stmt = eval { $class->new($statement) }; } else { $stmt = eval { $class->new( $statement, $parser ) }; } } else { $stmt = eval { $class->new($statement) }; } if ( $@ || $stmt->{errstr} ) { $dbh->set_err( $DBI::stderr, $@ || $stmt->{errstr} ); undef $sth; } else { $sth->STORE( "sql_stmt", $stmt ); $sth->STORE( "sql_params", [] ); $sth->STORE( "NUM_OF_PARAMS", scalar( $stmt->params() ) ); my @colnames = $sth->sql_get_colnames(); $sth->STORE( "NUM_OF_FIELDS", scalar @colnames ); } } return $sth; } # prepare sub set_versions { my $dbh = $_[0]; $dbh->{sql_engine_version} = $DBI::DBD::SqlEngine::VERSION; for (qw( nano_version statement_version )) { defined $DBI::SQL::Nano::versions->{$_} or next; $dbh->{"sql_$_"} = $DBI::SQL::Nano::versions->{$_}; } $dbh->{sql_handler} = $dbh->{sql_statement_version} ? "SQL::Statement" : "DBI::SQL::Nano"; return $dbh; } # set_versions sub init_valid_attributes { my $dbh = $_[0]; $dbh->{sql_valid_attrs} = { sql_engine_version => 1, # DBI::DBD::SqlEngine version sql_handler => 1, # Nano or S:S sql_nano_version => 1, # Nano version sql_statement_version => 1, # S:S version sql_flags => 1, # flags for SQL::Parser sql_dialect => 1, # dialect for SQL::Parser sql_quoted_identifier_case => 1, # case for quoted identifiers sql_identifier_case => 1, # case for non-quoted identifiers sql_parser_object => 1, # SQL::Parser instance sql_sponge_driver => 1, # Sponge driver for table_info () sql_valid_attrs => 1, # SQL valid attributes sql_readonly_attrs => 1, # SQL readonly attributes sql_init_phase => 1, # Only during initialization sql_meta => 1, # meta data for tables sql_meta_map => 1, # mapping table for identifier case sql_data_source => 1, # reasonable datasource class }; $dbh->{sql_readonly_attrs} = { sql_engine_version => 1, # DBI::DBD::SqlEngine version sql_handler => 1, # Nano or S:S sql_nano_version => 1, # Nano version sql_statement_version => 1, # S:S version sql_quoted_identifier_case => 1, # case for quoted identifiers sql_parser_object => 1, # SQL::Parser instance sql_sponge_driver => 1, # Sponge driver for table_info () sql_valid_attrs => 1, # SQL valid attributes sql_readonly_attrs => 1, # SQL readonly attributes }; return $dbh; } # init_valid_attributes sub init_default_attributes { my ( $dbh, $phase ) = @_; my $given_phase = $phase; unless ( defined($phase) ) { # we have an "old" driver here $phase = defined $dbh->{sql_init_phase}; $phase and $phase = $dbh->{sql_init_phase}; } if ( 0 == $phase ) { # must be done first, because setting flags implicitly calls $dbdname::db->STORE $dbh->func("init_valid_attributes"); $dbh->func("set_versions"); $dbh->{sql_identifier_case} = 2; # SQL_IC_LOWER $dbh->{sql_quoted_identifier_case} = 3; # SQL_IC_SENSITIVE $dbh->{sql_dialect} = "CSV"; $dbh->{sql_init_phase} = $given_phase; # complete derived attributes, if required ( my $drv_class = $dbh->{ImplementorClass} ) =~ s/::db$//; my $drv_prefix = DBI->driver_prefix($drv_class); my $valid_attrs = $drv_prefix . "valid_attrs"; my $ro_attrs = $drv_prefix . "readonly_attrs"; # check whether we're running in a Gofer server or not (see # validate_FETCH_attr for details) $dbh->{sql_engine_in_gofer} = ( defined $INC{"DBD/Gofer.pm"} && ( caller(5) )[0] eq "DBI::Gofer::Execute" ); $dbh->{sql_meta} = {}; $dbh->{sql_meta_map} = {}; # choose new name because it contains other keys # init_default_attributes calls inherited routine before derived DBD's # init their default attributes, so we don't override something here # # defining an order of attribute initialization from connect time # specified ones with a magic baarier (see next statement) my $drv_pfx_meta = $drv_prefix . "meta"; $dbh->{sql_init_order} = { 0 => [qw( Profile RaiseError PrintError AutoCommit )], 90 => [ "sql_meta", $dbh->{$drv_pfx_meta} ? $dbh->{$drv_pfx_meta} : () ], }; # ensuring Profile, RaiseError, PrintError, AutoCommit are initialized # first when initializing attributes from connect time specified # attributes # further, initializations to predefined tables are happens after any # unspecified attribute initialization (that default to order 50) my @comp_attrs = qw(valid_attrs version readonly_attrs); if ( exists $dbh->{$drv_pfx_meta} and !$dbh->{sql_engine_in_gofer} ) { my $attr = $dbh->{$drv_pfx_meta}; defined $attr and defined $dbh->{$valid_attrs} and !defined $dbh->{$valid_attrs}{$attr} and $dbh->{$valid_attrs}{$attr} = 1; my %h; tie %h, "DBI::DBD::SqlEngine::TieTables", $dbh; $dbh->{$attr} = \%h; push @comp_attrs, "meta"; } foreach my $comp_attr (@comp_attrs) { my $attr = $drv_prefix . $comp_attr; defined $dbh->{$valid_attrs} and !defined $dbh->{$valid_attrs}{$attr} and $dbh->{$valid_attrs}{$attr} = 1; defined $dbh->{$ro_attrs} and !defined $dbh->{$ro_attrs}{$attr} and $dbh->{$ro_attrs}{$attr} = 1; } } return $dbh; } # init_default_attributes sub init_done { defined $_[0]->{sql_init_phase} and delete $_[0]->{sql_init_phase}; delete $_[0]->{sql_valid_attrs}->{sql_init_phase}; return; } sub sql_parser_object { my $dbh = $_[0]; my $dialect = $dbh->{sql_dialect} || "CSV"; my $parser = { RaiseError => $dbh->FETCH("RaiseError"), PrintError => $dbh->FETCH("PrintError"), }; my $sql_flags = $dbh->FETCH("sql_flags") || {}; %$parser = ( %$parser, %$sql_flags ); $parser = SQL::Parser->new( $dialect, $parser ); $dbh->{sql_parser_object} = $parser; return $parser; } # sql_parser_object sub sql_sponge_driver { my $dbh = $_[0]; my $dbh2 = $dbh->{sql_sponge_driver}; unless ($dbh2) { $dbh2 = $dbh->{sql_sponge_driver} = DBI->connect("DBI:Sponge:"); unless ($dbh2) { $dbh->set_err( $DBI::stderr, $DBI::errstr ); return; } } } sub disconnect ($) { %{ $_[0]->{sql_meta} } = (); %{ $_[0]->{sql_meta_map} } = (); $_[0]->STORE( Active => 0 ); return 1; } # disconnect sub validate_FETCH_attr { my ( $dbh, $attrib ) = @_; # If running in a Gofer server, access to our tied compatibility hash # would force Gofer to serialize the tieing object including it's # private $dbh reference used to do the driver function calls. # This will result in nasty exceptions. So return a copy of the # sql_meta structure instead, which is the source of for the compatibility # tie-hash. It's not as good as liked, but the best we can do in this # situation. if ( $dbh->{sql_engine_in_gofer} ) { ( my $drv_class = $dbh->{ImplementorClass} ) =~ s/::db$//; my $drv_prefix = DBI->driver_prefix($drv_class); exists $dbh->{ $drv_prefix . "meta" } && $attrib eq $dbh->{ $drv_prefix . "meta" } and $attrib = "sql_meta"; } return $attrib; } sub FETCH ($$) { my ( $dbh, $attrib ) = @_; $attrib eq "AutoCommit" and return 1; # Driver private attributes are lower cased if ( $attrib eq ( lc $attrib ) ) { # first let the implementation deliver an alias for the attribute to fetch # after it validates the legitimation of the fetch request $attrib = $dbh->func( $attrib, "validate_FETCH_attr" ) or return; my $attr_prefix; $attrib =~ m/^([a-z]+_)/ and $attr_prefix = $1; unless ($attr_prefix) { ( my $drv_class = $dbh->{ImplementorClass} ) =~ s/::db$//; $attr_prefix = DBI->driver_prefix($drv_class); $attrib = $attr_prefix . $attrib; } my $valid_attrs = $attr_prefix . "valid_attrs"; my $ro_attrs = $attr_prefix . "readonly_attrs"; exists $dbh->{$valid_attrs} and ( $dbh->{$valid_attrs}{$attrib} or return $dbh->set_err( $DBI::stderr, "Invalid attribute '$attrib'" ) ); exists $dbh->{$ro_attrs} and $dbh->{$ro_attrs}{$attrib} and defined $dbh->{$attrib} and refaddr( $dbh->{$attrib} ) and return clone( $dbh->{$attrib} ); return $dbh->{$attrib}; } # else pass up to DBI to handle return $dbh->SUPER::FETCH($attrib); } # FETCH sub validate_STORE_attr { my ( $dbh, $attrib, $value ) = @_; if ( $attrib eq "sql_identifier_case" || $attrib eq "sql_quoted_identifier_case" and $value < 1 || $value > 4 ) { croak "attribute '$attrib' must have a value from 1 .. 4 (SQL_IC_UPPER .. SQL_IC_MIXED)"; # XXX correctly a remap of all entries in sql_meta/sql_meta_map is required here } ( my $drv_class = $dbh->{ImplementorClass} ) =~ s/::db$//; my $drv_prefix = DBI->driver_prefix($drv_class); exists $dbh->{ $drv_prefix . "meta" } and $attrib eq $dbh->{ $drv_prefix . "meta" } and $attrib = "sql_meta"; return ( $attrib, $value ); } # the ::db::STORE method is what gets called when you set # a lower-cased database handle attribute such as $dbh->{somekey}=$someval; # # STORE should check to make sure that "somekey" is a valid attribute name # but only if it is really one of our attributes (starts with dbm_ or foo_) # You can also check for valid values for the attributes if needed # and/or perform other operations # sub STORE ($$$) { my ( $dbh, $attrib, $value ) = @_; if ( $attrib eq "AutoCommit" ) { $value and return 1; # is already set croak "Can't disable AutoCommit"; } if ( $attrib eq lc $attrib ) { # Driver private attributes are lower cased ( $attrib, $value ) = $dbh->func( $attrib, $value, "validate_STORE_attr" ); $attrib or return; my $attr_prefix; $attrib =~ m/^([a-z]+_)/ and $attr_prefix = $1; unless ($attr_prefix) { ( my $drv_class = $dbh->{ImplementorClass} ) =~ s/::db$//; $attr_prefix = DBI->driver_prefix($drv_class); $attrib = $attr_prefix . $attrib; } my $valid_attrs = $attr_prefix . "valid_attrs"; my $ro_attrs = $attr_prefix . "readonly_attrs"; exists $dbh->{$valid_attrs} and ( $dbh->{$valid_attrs}{$attrib} or return $dbh->set_err( $DBI::stderr, "Invalid attribute '$attrib'" ) ); exists $dbh->{$ro_attrs} and $dbh->{$ro_attrs}{$attrib} and defined $dbh->{$attrib} and return $dbh->set_err( $DBI::stderr, "attribute '$attrib' is readonly and must not be modified" ); if ( $attrib eq "sql_meta" ) { while ( my ( $k, $v ) = each %$value ) { $dbh->{$attrib}{$k} = $v; } } else { $dbh->{$attrib} = $value; } return 1; } return $dbh->SUPER::STORE( $attrib, $value ); } # STORE sub get_driver_versions { my ( $dbh, $table ) = @_; my %vsn = ( OS => "$^O ($Config::Config{osvers})", Perl => "$] ($Config::Config{archname})", DBI => $DBI::VERSION, ); my %vmp; my $sql_engine_verinfo = join " ", $dbh->{sql_engine_version}, "using", $dbh->{sql_handler}, $dbh->{sql_handler} eq "SQL::Statement" ? $dbh->{sql_statement_version} : $dbh->{sql_nano_version}; my $indent = 0; my @deriveds = ( $dbh->{ImplementorClass} ); while (@deriveds) { my $derived = shift @deriveds; $derived eq "DBI::DBD::SqlEngine::db" and last; $derived->isa("DBI::DBD::SqlEngine::db") or next; #no strict 'refs'; eval "push \@deriveds, \@${derived}::ISA"; #use strict; ( my $drv_class = $derived ) =~ s/::db$//; my $drv_prefix = DBI->driver_prefix($drv_class); my $ddgv = $dbh->{ImplementorClass}->can("get_${drv_prefix}versions"); my $drv_version = $ddgv ? &$ddgv( $dbh, $table ) : $dbh->{ $drv_prefix . "version" }; $drv_version ||= eval { $derived->VERSION() }; # XXX access $drv_class::VERSION via symbol table $vsn{$drv_class} = $drv_version; $indent and $vmp{$drv_class} = " " x $indent . $drv_class; $indent += 2; } $vsn{"DBI::DBD::SqlEngine"} = $sql_engine_verinfo; $indent and $vmp{"DBI::DBD::SqlEngine"} = " " x $indent . "DBI::DBD::SqlEngine"; $DBI::PurePerl and $vsn{"DBI::PurePerl"} = $DBI::PurePerl::VERSION; $indent += 20; my @versions = map { sprintf "%-${indent}s %s", $vmp{$_} || $_, $vsn{$_} } sort { $a->isa($b) and return -1; $b->isa($a) and return 1; $a->isa("DBI::DBD::SqlEngine") and return -1; $b->isa("DBI::DBD::SqlEngine") and return 1; return $a cmp $b; } keys %vsn; return wantarray ? @versions : join "\n", @versions; } # get_versions sub get_single_table_meta { my ( $dbh, $table, $attr ) = @_; my $meta; $table eq "." and return $dbh->FETCH($attr); ( my $class = $dbh->{ImplementorClass} ) =~ s/::db$/::Table/; ( undef, $meta ) = $class->get_table_meta( $dbh, $table, 1 ); $meta or croak "No such table '$table'"; # prevent creation of undef attributes return $class->get_table_meta_attr( $meta, $attr ); } # get_single_table_meta sub get_sql_engine_meta { my ( $dbh, $table, $attr ) = @_; my $gstm = $dbh->{ImplementorClass}->can("get_single_table_meta"); $table eq "*" and $table = [ ".", keys %{ $dbh->{sql_meta} } ]; $table eq "+" and $table = [ grep { m/^[_A-Za-z0-9]+$/ } keys %{ $dbh->{sql_meta} } ]; ref $table eq "Regexp" and $table = [ grep { $_ =~ $table } keys %{ $dbh->{sql_meta} } ]; ref $table || ref $attr or return $gstm->( $dbh, $table, $attr ); ref $table or $table = [$table]; ref $attr or $attr = [$attr]; "ARRAY" eq ref $table or return $dbh->set_err( $DBI::stderr, "Invalid argument for \$table - SCALAR, Regexp or ARRAY expected but got " . ref $table ); "ARRAY" eq ref $attr or return $dbh->set_err( "Invalid argument for \$attr - SCALAR or ARRAY expected but got " . ref $attr ); my %results; foreach my $tname ( @{$table} ) { my %tattrs; foreach my $aname ( @{$attr} ) { $tattrs{$aname} = $gstm->( $dbh, $tname, $aname ); } $results{$tname} = \%tattrs; } return \%results; } # get_sql_engine_meta sub new_sql_engine_meta { my ( $dbh, $table, $values ) = @_; my $respect_case = 0; "HASH" eq ref $values or croak "Invalid argument for \$values - SCALAR or HASH expected but got " . ref $values; $table =~ s/^\"// and $respect_case = 1; # handle quoted identifiers $table =~ s/\"$//; unless ($respect_case) { defined $dbh->{sql_meta_map}{$table} and $table = $dbh->{sql_meta_map}{$table}; } $dbh->{sql_meta}{$table} = { %{$values} }; my $class; defined $values->{sql_table_class} and $class = $values->{sql_table_class}; defined $class or ( $class = $dbh->{ImplementorClass} ) =~ s/::db$/::Table/; # XXX we should never hit DBD::File::Table::get_table_meta here ... my ( undef, $meta ) = $class->get_table_meta( $dbh, $table, $respect_case ); 1; } # new_sql_engine_meta sub set_single_table_meta { my ( $dbh, $table, $attr, $value ) = @_; my $meta; $table eq "." and return $dbh->STORE( $attr, $value ); ( my $class = $dbh->{ImplementorClass} ) =~ s/::db$/::Table/; ( undef, $meta ) = $class->get_table_meta( $dbh, $table, 1 ); # 1 means: respect case $meta or croak "No such table '$table'"; $class->set_table_meta_attr( $meta, $attr, $value ); return $dbh; } # set_single_table_meta sub set_sql_engine_meta { my ( $dbh, $table, $attr, $value ) = @_; my $sstm = $dbh->{ImplementorClass}->can("set_single_table_meta"); $table eq "*" and $table = [ ".", keys %{ $dbh->{sql_meta} } ]; $table eq "+" and $table = [ grep { m/^[_A-Za-z0-9]+$/ } keys %{ $dbh->{sql_meta} } ]; ref($table) eq "Regexp" and $table = [ grep { $_ =~ $table } keys %{ $dbh->{sql_meta} } ]; ref $table || ref $attr or return $sstm->( $dbh, $table, $attr, $value ); ref $table or $table = [$table]; ref $attr or $attr = { $attr => $value }; "ARRAY" eq ref $table or croak "Invalid argument for \$table - SCALAR, Regexp or ARRAY expected but got " . ref $table; "HASH" eq ref $attr or croak "Invalid argument for \$attr - SCALAR or HASH expected but got " . ref $attr; foreach my $tname ( @{$table} ) { while ( my ( $aname, $aval ) = each %$attr ) { $sstm->( $dbh, $tname, $aname, $aval ); } } return $dbh; } # set_file_meta sub clear_sql_engine_meta { my ( $dbh, $table ) = @_; ( my $class = $dbh->{ImplementorClass} ) =~ s/::db$/::Table/; my ( undef, $meta ) = $class->get_table_meta( $dbh, $table, 1 ); $meta and %{$meta} = (); return; } # clear_file_meta sub DESTROY ($) { my $dbh = shift; $dbh->SUPER::FETCH("Active") and $dbh->disconnect; undef $dbh->{sql_parser_object}; } # DESTROY sub type_info_all ($) { [ { TYPE_NAME => 0, DATA_TYPE => 1, PRECISION => 2, LITERAL_PREFIX => 3, LITERAL_SUFFIX => 4, CREATE_PARAMS => 5, NULLABLE => 6, CASE_SENSITIVE => 7, SEARCHABLE => 8, UNSIGNED_ATTRIBUTE => 9, MONEY => 10, AUTO_INCREMENT => 11, LOCAL_TYPE_NAME => 12, MINIMUM_SCALE => 13, MAXIMUM_SCALE => 14, }, [ "VARCHAR", DBI::SQL_VARCHAR(), undef, "'", "'", undef, 0, 1, 1, 0, 0, 0, undef, 1, 999999, ], [ "CHAR", DBI::SQL_CHAR(), undef, "'", "'", undef, 0, 1, 1, 0, 0, 0, undef, 1, 999999, ], [ "INTEGER", DBI::SQL_INTEGER(), undef, "", "", undef, 0, 0, 1, 0, 0, 0, undef, 0, 0, ], [ "REAL", DBI::SQL_REAL(), undef, "", "", undef, 0, 0, 1, 0, 0, 0, undef, 0, 0, ], [ "BLOB", DBI::SQL_LONGVARBINARY(), undef, "'", "'", undef, 0, 1, 1, 0, 0, 0, undef, 1, 999999, ], [ "BLOB", DBI::SQL_LONGVARBINARY(), undef, "'", "'", undef, 0, 1, 1, 0, 0, 0, undef, 1, 999999, ], [ "TEXT", DBI::SQL_LONGVARCHAR(), undef, "'", "'", undef, 0, 1, 1, 0, 0, 0, undef, 1, 999999, ], ]; } # type_info_all sub get_avail_tables { my $dbh = $_[0]; my @tables = (); if ( $dbh->{sql_handler} eq "SQL::Statement" and $dbh->{sql_ram_tables} ) { # XXX map +[ undef, undef, $_, "TABLE", "TEMP" ], keys %{...} foreach my $table ( keys %{ $dbh->{sql_ram_tables} } ) { push @tables, [ undef, undef, $table, "TABLE", "TEMP" ]; } } my $tbl_src; defined $dbh->{sql_table_source} and $dbh->{sql_table_source}->isa('DBI::DBD::SqlEngine::TableSource') and $tbl_src = $dbh->{sql_table_source}; !defined($tbl_src) and $dbh->{Driver}->{ImplementorClass}->can('default_table_source') and $tbl_src = $dbh->{Driver}->{ImplementorClass}->default_table_source(); defined($tbl_src) and push( @tables, $tbl_src->avail_tables($dbh) ); return @tables; } # get_avail_tables { my $names = [qw( TABLE_QUALIFIER TABLE_OWNER TABLE_NAME TABLE_TYPE REMARKS )]; sub table_info ($) { my $dbh = shift; my @tables = $dbh->func("get_avail_tables"); # Temporary kludge: DBD::Sponge dies if @tables is empty. :-( # this no longer seems to be true @tables or return; my $dbh2 = $dbh->func("sql_sponge_driver"); my $sth = $dbh2->prepare( "TABLE_INFO", { rows => \@tables, NAME => $names, } ); $sth or return $dbh->set_err( $DBI::stderr, $dbh2->errstr ); $sth->execute or return; return $sth; } # table_info } sub list_tables ($) { my $dbh = shift; my @table_list; my @tables = $dbh->func("get_avail_tables") or return; foreach my $ref (@tables) { # rt69260 and rt67223 - the same issue in 2 different queues push @table_list, $ref->[2]; } return @table_list; } # list_tables sub quote ($$;$) { my ( $self, $str, $type ) = @_; defined $str or return "NULL"; defined $type && ( $type == DBI::SQL_NUMERIC() || $type == DBI::SQL_DECIMAL() || $type == DBI::SQL_INTEGER() || $type == DBI::SQL_SMALLINT() || $type == DBI::SQL_FLOAT() || $type == DBI::SQL_REAL() || $type == DBI::SQL_DOUBLE() || $type == DBI::SQL_TINYINT() ) and return $str; $str =~ s/\\/\\\\/sg; $str =~ s/\0/\\0/sg; $str =~ s/\'/\\\'/sg; $str =~ s/\n/\\n/sg; $str =~ s/\r/\\r/sg; return "'$str'"; } # quote sub commit ($) { my $dbh = shift; $dbh->FETCH("Warn") and carp "Commit ineffective while AutoCommit is on", -1; return 1; } # commit sub rollback ($) { my $dbh = shift; $dbh->FETCH("Warn") and carp "Rollback ineffective while AutoCommit is on", -1; return 0; } # rollback # ====== Tie-Meta ============================================================== package DBI::DBD::SqlEngine::TieMeta; use Carp qw(croak); require Tie::Hash; @DBI::DBD::SqlEngine::TieMeta::ISA = qw(Tie::Hash); sub TIEHASH { my ( $class, $tblClass, $tblMeta ) = @_; my $self = bless( { tblClass => $tblClass, tblMeta => $tblMeta, }, $class ); return $self; } # new sub STORE { my ( $self, $meta_attr, $meta_val ) = @_; $self->{tblClass}->set_table_meta_attr( $self->{tblMeta}, $meta_attr, $meta_val ); return; } # STORE sub FETCH { my ( $self, $meta_attr ) = @_; return $self->{tblClass}->get_table_meta_attr( $self->{tblMeta}, $meta_attr ); } # FETCH sub FIRSTKEY { my $a = scalar keys %{ $_[0]->{tblMeta} }; each %{ $_[0]->{tblMeta} }; } # FIRSTKEY sub NEXTKEY { each %{ $_[0]->{tblMeta} }; } # NEXTKEY sub EXISTS { exists $_[0]->{tblMeta}{ $_[1] }; } # EXISTS sub DELETE { croak "Can't delete single attributes from table meta structure"; } # DELETE sub CLEAR { %{ $_[0]->{tblMeta} } = (); } # CLEAR sub SCALAR { scalar %{ $_[0]->{tblMeta} }; } # SCALAR # ====== Tie-Tables ============================================================ package DBI::DBD::SqlEngine::TieTables; use Carp qw(croak); require Tie::Hash; @DBI::DBD::SqlEngine::TieTables::ISA = qw(Tie::Hash); sub TIEHASH { my ( $class, $dbh ) = @_; ( my $tbl_class = $dbh->{ImplementorClass} ) =~ s/::db$/::Table/; my $self = bless( { dbh => $dbh, tblClass => $tbl_class, }, $class ); return $self; } # new sub STORE { my ( $self, $table, $tbl_meta ) = @_; "HASH" eq ref $tbl_meta or croak "Invalid data for storing as table meta data (must be hash)"; ( undef, my $meta ) = $self->{tblClass}->get_table_meta( $self->{dbh}, $table, 1 ); $meta or croak "Invalid table name '$table'"; while ( my ( $meta_attr, $meta_val ) = each %$tbl_meta ) { $self->{tblClass}->set_table_meta_attr( $meta, $meta_attr, $meta_val ); } return; } # STORE sub FETCH { my ( $self, $table ) = @_; ( undef, my $meta ) = $self->{tblClass}->get_table_meta( $self->{dbh}, $table, 1 ); $meta or croak "Invalid table name '$table'"; my %h; tie %h, "DBI::DBD::SqlEngine::TieMeta", $self->{tblClass}, $meta; return \%h; } # FETCH sub FIRSTKEY { my $a = scalar keys %{ $_[0]->{dbh}->{sql_meta} }; each %{ $_[0]->{dbh}->{sql_meta} }; } # FIRSTKEY sub NEXTKEY { each %{ $_[0]->{dbh}->{sql_meta} }; } # NEXTKEY sub EXISTS { exists $_[0]->{dbh}->{sql_meta}->{ $_[1] } or exists $_[0]->{dbh}->{sql_meta_map}->{ $_[1] }; } # EXISTS sub DELETE { my ( $self, $table ) = @_; ( undef, my $meta ) = $self->{tblClass}->get_table_meta( $self->{dbh}, $table, 1 ); $meta or croak "Invalid table name '$table'"; delete $_[0]->{dbh}->{sql_meta}->{ $meta->{table_name} }; } # DELETE sub CLEAR { %{ $_[0]->{dbh}->{sql_meta} } = (); %{ $_[0]->{dbh}->{sql_meta_map} } = (); } # CLEAR sub SCALAR { scalar %{ $_[0]->{dbh}->{sql_meta} }; } # SCALAR # ====== STATEMENT ============================================================= package DBI::DBD::SqlEngine::st; use strict; use warnings; use vars qw(@ISA $imp_data_size); $imp_data_size = 0; sub bind_param ($$$;$) { my ( $sth, $pNum, $val, $attr ) = @_; if ( $attr && defined $val ) { my $type = ref $attr eq "HASH" ? $attr->{TYPE} : $attr; if ( $type == DBI::SQL_BIGINT() || $type == DBI::SQL_INTEGER() || $type == DBI::SQL_SMALLINT() || $type == DBI::SQL_TINYINT() ) { $val += 0; } elsif ( $type == DBI::SQL_DECIMAL() || $type == DBI::SQL_DOUBLE() || $type == DBI::SQL_FLOAT() || $type == DBI::SQL_NUMERIC() || $type == DBI::SQL_REAL() ) { $val += 0.; } else { $val = "$val"; } } $sth->{sql_params}[ $pNum - 1 ] = $val; return 1; } # bind_param sub execute { my $sth = shift; my $params = @_ ? ( $sth->{sql_params} = [@_] ) : $sth->{sql_params}; $sth->finish; my $stmt = $sth->{sql_stmt}; # must not proved when already executed - SQL::Statement modifies # received params unless ( $sth->{sql_params_checked}++ ) { # SQL::Statement and DBI::SQL::Nano will return the list of required params # when called in list context. Do not look into the several items, they're # implementation specific and may change without warning unless ( ( my $req_prm = $stmt->params() ) == ( my $nparm = @$params ) ) { my $msg = "You passed $nparm parameters where $req_prm required"; return $sth->set_err( $DBI::stderr, $msg ); } } my @err; my $result; eval { local $SIG{__WARN__} = sub { push @err, @_ }; $result = $stmt->execute( $sth, $params ); }; unless ( defined $result ) { $sth->set_err( $DBI::stderr, $@ || $stmt->{errstr} || $err[0] ); return; } if ( $stmt->{NUM_OF_FIELDS} ) { # is a SELECT statement $sth->STORE( Active => 1 ); $sth->FETCH("NUM_OF_FIELDS") or $sth->STORE( "NUM_OF_FIELDS", $stmt->{NUM_OF_FIELDS} ); } return $result; } # execute sub finish { my $sth = $_[0]; $sth->SUPER::STORE( Active => 0 ); delete $sth->{sql_stmt}{data}; return 1; } # finish sub fetch ($) { my $sth = $_[0]; my $data = $sth->{sql_stmt}{data}; if ( !$data || ref $data ne "ARRAY" ) { $sth->set_err( $DBI::stderr, "Attempt to fetch row without a preceding execute () call or from a non-SELECT statement" ); return; } my $dav = shift @$data; unless ($dav) { $sth->finish; return; } if ( $sth->FETCH("ChopBlanks") ) # XXX: (TODO) Only chop on CHAR fields, { # not on VARCHAR or NUMERIC (see DBI docs) $_ && $_ =~ s/ +$// for @$dav; } return $sth->_set_fbav($dav); } # fetch no warnings 'once'; *fetchrow_arrayref = \&fetch; use warnings; sub sql_get_colnames { my $sth = $_[0]; # Being a bit dirty here, as neither SQL::Statement::Structure nor # DBI::SQL::Nano::Statement_ does not offer an interface to the # required data my @colnames; if ( $sth->{sql_stmt}->{NAME} and "ARRAY" eq ref( $sth->{sql_stmt}->{NAME} ) ) { @colnames = @{ $sth->{sql_stmt}->{NAME} }; } elsif ( $sth->{sql_stmt}->isa('SQL::Statement') ) { my $stmt = $sth->{sql_stmt} || {}; my @coldefs = @{ $stmt->{column_defs} || [] }; @colnames = map { $_->{name} || $_->{value} } @coldefs; } @colnames = $sth->{sql_stmt}->column_names() unless (@colnames); @colnames = () if ( grep { m/\*/ } @colnames ); return @colnames; } sub FETCH ($$) { my ( $sth, $attrib ) = @_; $attrib eq "NAME" and return [ $sth->sql_get_colnames() ]; $attrib eq "TYPE" and return [ ( DBI::SQL_VARCHAR() ) x scalar $sth->sql_get_colnames() ]; $attrib eq "TYPE_NAME" and return [ ("VARCHAR") x scalar $sth->sql_get_colnames() ]; $attrib eq "PRECISION" and return [ (0) x scalar $sth->sql_get_colnames() ]; $attrib eq "NULLABLE" and return [ (1) x scalar $sth->sql_get_colnames() ]; if ( $attrib eq lc $attrib ) { # Private driver attributes are lower cased return $sth->{$attrib}; } # else pass up to DBI to handle return $sth->SUPER::FETCH($attrib); } # FETCH sub STORE ($$$) { my ( $sth, $attrib, $value ) = @_; if ( $attrib eq lc $attrib ) # Private driver attributes are lower cased { $sth->{$attrib} = $value; return 1; } return $sth->SUPER::STORE( $attrib, $value ); } # STORE sub DESTROY ($) { my $sth = shift; $sth->SUPER::FETCH("Active") and $sth->finish; undef $sth->{sql_stmt}; undef $sth->{sql_params}; } # DESTROY sub rows ($) { return $_[0]->{sql_stmt}{NUM_OF_ROWS}; } # rows # ====== TableSource =========================================================== package DBI::DBD::SqlEngine::TableSource; use strict; use warnings; use Carp; sub data_sources ($;$) { my ( $class, $drh, $attrs ) = @_; croak( ( ref( $_[0] ) ? ref( $_[0] ) : $_[0] ) . " must implement data_sources" ); } sub avail_tables { my ( $self, $dbh ) = @_; croak( ( ref( $_[0] ) ? ref( $_[0] ) : $_[0] ) . " must implement avail_tables" ); } # ====== DataSource ============================================================ package DBI::DBD::SqlEngine::DataSource; use strict; use warnings; use Carp; sub complete_table_name ($$;$) { my ( $self, $meta, $table, $respect_case ) = @_; croak( ( ref( $_[0] ) ? ref( $_[0] ) : $_[0] ) . " must implement complete_table_name" ); } sub open_data ($) { my ( $self, $meta, $attrs, $flags ) = @_; croak( ( ref( $_[0] ) ? ref( $_[0] ) : $_[0] ) . " must implement open_data" ); } # ====== SQL::STATEMENT ======================================================== package DBI::DBD::SqlEngine::Statement; use strict; use warnings; use Carp; @DBI::DBD::SqlEngine::Statement::ISA = qw(DBI::SQL::Nano::Statement); sub open_table ($$$$$) { my ( $self, $data, $table, $createMode, $lockMode ) = @_; my $class = ref $self; $class =~ s/::Statement/::Table/; my $flags = { createMode => $createMode, lockMode => $lockMode, }; $self->{command} eq "DROP" and $flags->{dropMode} = 1; my ( $tblnm, $table_meta ) = $class->get_table_meta( $data->{Database}, $table, 1 ) or croak "Cannot find appropriate meta for table '$table'"; defined $table_meta->{sql_table_class} and $class = $table_meta->{sql_table_class}; # because column name mapping is initialized in constructor ... # and therefore specific opening operations might be done before # reaching DBI::DBD::SqlEngine::Table->new(), we need to intercept # ReadOnly here my $write_op = $createMode || $lockMode || $flags->{dropMode}; if ($write_op) { $table_meta->{readonly} and croak "Table '$table' is marked readonly - " . $self->{command} . ( $lockMode ? " with locking" : "" ) . " command forbidden"; } return $class->new( $data, { table => $table }, $flags ); } # open_table # ====== SQL::TABLE ============================================================ package DBI::DBD::SqlEngine::Table; use strict; use warnings; use Carp; @DBI::DBD::SqlEngine::Table::ISA = qw(DBI::SQL::Nano::Table); sub bootstrap_table_meta { my ( $self, $dbh, $meta, $table ) = @_; defined $dbh->{ReadOnly} and !defined( $meta->{readonly} ) and $meta->{readonly} = $dbh->{ReadOnly}; defined $meta->{sql_identifier_case} or $meta->{sql_identifier_case} = $dbh->{sql_identifier_case}; exists $meta->{sql_data_source} or $meta->{sql_data_source} = $dbh->{sql_data_source}; $meta; } sub init_table_meta { my ( $self, $dbh, $meta, $table ) = @_ if (0); return; } # init_table_meta sub get_table_meta ($$$;$) { my ( $self, $dbh, $table, $respect_case, @other ) = @_; unless ( defined $respect_case ) { $respect_case = 0; $table =~ s/^\"// and $respect_case = 1; # handle quoted identifiers $table =~ s/\"$//; } unless ($respect_case) { defined $dbh->{sql_meta_map}{$table} and $table = $dbh->{sql_meta_map}{$table}; } my $meta = {}; defined $dbh->{sql_meta}{$table} and $meta = $dbh->{sql_meta}{$table}; do_initialize: unless ( $meta->{initialized} ) { $self->bootstrap_table_meta( $dbh, $meta, $table, @other ); $meta->{sql_data_source}->complete_table_name( $meta, $table, $respect_case, @other ) or return; if ( defined $meta->{table_name} and $table ne $meta->{table_name} ) { $dbh->{sql_meta_map}{$table} = $meta->{table_name}; $table = $meta->{table_name}; } # now we know a bit more - let's check if user can't use consequent spelling # XXX add know issue about reset sql_identifier_case here ... if ( defined $dbh->{sql_meta}{$table} ) { $meta = delete $dbh->{sql_meta}{$table}; # avoid endless loop $meta->{initialized} or goto do_initialize; #or $meta->{sql_data_source}->complete_table_name( $meta, $table, $respect_case, @other ) #or return; } unless ( $dbh->{sql_meta}{$table}{initialized} ) { $self->init_table_meta( $dbh, $meta, $table ); $meta->{initialized} = 1; $dbh->{sql_meta}{$table} = $meta; } } return ( $table, $meta ); } # get_table_meta my %reset_on_modify = (); my %compat_map = (); sub register_reset_on_modify { my ( $proto, $extra_resets ) = @_; foreach my $cv ( keys %$extra_resets ) { #%reset_on_modify = ( %reset_on_modify, %$extra_resets ); push @{ $reset_on_modify{$cv} }, ref $extra_resets->{$cv} ? @{ $extra_resets->{$cv} } : ( $extra_resets->{$cv} ); } return; } # register_reset_on_modify sub register_compat_map { my ( $proto, $extra_compat_map ) = @_; %compat_map = ( %compat_map, %$extra_compat_map ); return; } # register_compat_map sub get_table_meta_attr { my ( $class, $meta, $attrib ) = @_; exists $compat_map{$attrib} and $attrib = $compat_map{$attrib}; exists $meta->{$attrib} and return $meta->{$attrib}; return; } # get_table_meta_attr sub set_table_meta_attr { my ( $class, $meta, $attrib, $value ) = @_; exists $compat_map{$attrib} and $attrib = $compat_map{$attrib}; $class->table_meta_attr_changed( $meta, $attrib, $value ); $meta->{$attrib} = $value; } # set_table_meta_attr sub table_meta_attr_changed { my ( $class, $meta, $attrib, $value ) = @_; defined $reset_on_modify{$attrib} and delete @$meta{ @{ $reset_on_modify{$attrib} } } and $meta->{initialized} = 0; } # table_meta_attr_changed sub open_data { my ( $self, $meta, $attrs, $flags ) = @_; $meta->{sql_data_source} or croak "Table " . $meta->{table_name} . " not completely initialized"; $meta->{sql_data_source}->open_data( $meta, $attrs, $flags ); return; } # open_data # ====== SQL::Eval API ========================================================= sub new { my ( $className, $data, $attrs, $flags ) = @_; my $dbh = $data->{Database}; my ( $tblnm, $meta ) = $className->get_table_meta( $dbh, $attrs->{table}, 1 ) or croak "Cannot find appropriate table '$attrs->{table}'"; $attrs->{table} = $tblnm; # Being a bit dirty here, as SQL::Statement::Structure does not offer # me an interface to the data I want $flags->{createMode} && $data->{sql_stmt}{table_defs} and $meta->{table_defs} = $data->{sql_stmt}{table_defs}; # open_file must be called before inherited new is invoked # because column name mapping is initialized in constructor ... $className->open_data( $meta, $attrs, $flags ); my $tbl = { %{$attrs}, meta => $meta, col_names => $meta->{col_names} || [], }; return $className->SUPER::new($tbl); } # new sub DESTROY { my $self = shift; my $meta = $self->{meta}; $self->{row} and undef $self->{row}; () } 1; =pod =head1 NAME DBI::DBD::SqlEngine - Base class for DBI drivers without their own SQL engine =head1 SYNOPSIS package DBD::myDriver; use base qw(DBI::DBD::SqlEngine); sub driver { ... my $drh = $proto->SUPER::driver($attr); ... return $drh->{class}; } package DBD::myDriver::dr; @ISA = qw(DBI::DBD::SqlEngine::dr); sub data_sources { ... } ... package DBD::myDriver::db; @ISA = qw(DBI::DBD::SqlEngine::db); sub init_valid_attributes { ... } sub init_default_attributes { ... } sub set_versions { ... } sub validate_STORE_attr { my ($dbh, $attrib, $value) = @_; ... } sub validate_FETCH_attr { my ($dbh, $attrib) = @_; ... } sub get_myd_versions { ... } sub get_avail_tables { ... } package DBD::myDriver::st; @ISA = qw(DBI::DBD::SqlEngine::st); sub FETCH { ... } sub STORE { ... } package DBD::myDriver::Statement; @ISA = qw(DBI::DBD::SqlEngine::Statement); sub open_table { ... } package DBD::myDriver::Table; @ISA = qw(DBI::DBD::SqlEngine::Table); sub new { ... } =head1 DESCRIPTION DBI::DBD::SqlEngine abstracts the usage of SQL engines from the DBD. DBD authors can concentrate on the data retrieval they want to provide. It is strongly recommended that you read L and L, because many of the DBD::File API is provided by DBI::DBD::SqlEngine. Currently the API of DBI::DBD::SqlEngine is experimental and will likely change in the near future to provide the table meta data basics like DBD::File. DBI::DBD::SqlEngine expects that any driver in inheritance chain has a L. =head2 Metadata The following attributes are handled by DBI itself and not by DBI::DBD::SqlEngine, thus they all work as expected: Active ActiveKids CachedKids CompatMode (Not used) InactiveDestroy AutoInactiveDestroy Kids PrintError RaiseError Warn (Not used) =head3 The following DBI attributes are handled by DBI::DBD::SqlEngine: =head4 AutoCommit Always on. =head4 ChopBlanks Works. =head4 NUM_OF_FIELDS Valid after C<< $sth->execute >>. =head4 NUM_OF_PARAMS Valid after C<< $sth->prepare >>. =head4 NAME Valid after C<< $sth->execute >>; probably undef for Non-Select statements. =head4 NULLABLE Not really working, always returns an array ref of ones, as DBD::CSV does not verify input data. Valid after C<< $sth->execute >>; undef for non-select statements. =head3 The following DBI attributes and methods are not supported: =over 4 =item bind_param_inout =item CursorName =item LongReadLen =item LongTruncOk =back =head3 DBI::DBD::SqlEngine specific attributes In addition to the DBI attributes, you can use the following dbh attributes: =head4 sql_engine_version Contains the module version of this driver (B) =head4 sql_nano_version Contains the module version of DBI::SQL::Nano (B) =head4 sql_statement_version Contains the module version of SQL::Statement, if available (B) =head4 sql_handler Contains the SQL Statement engine, either DBI::SQL::Nano or SQL::Statement (B). =head4 sql_parser_object Contains an instantiated instance of SQL::Parser (B). This is filled when used first time (only when used with SQL::Statement). =head4 sql_sponge_driver Contains an internally used DBD::Sponge handle (B). =head4 sql_valid_attrs Contains the list of valid attributes for each DBI::DBD::SqlEngine based driver (B). =head4 sql_readonly_attrs Contains the list of those attributes which are readonly (B). =head4 sql_identifier_case Contains how DBI::DBD::SqlEngine deals with non-quoted SQL identifiers: * SQL_IC_UPPER (1) means all identifiers are internally converted into upper-cased pendants * SQL_IC_LOWER (2) means all identifiers are internally converted into lower-cased pendants * SQL_IC_MIXED (4) means all identifiers are taken as they are These conversions happen if (and only if) no existing identifier matches. Once existing identifier is used as known. The SQL statement execution classes doesn't have to care, so don't expect C affects column names in statements like SELECT * FROM foo =head4 sql_quoted_identifier_case Contains how DBI::DBD::SqlEngine deals with quoted SQL identifiers (B). It's fixated to SQL_IC_SENSITIVE (3), which is interpreted as SQL_IC_MIXED. =head4 sql_flags Contains additional flags to instantiate an SQL::Parser. Because an SQL::Parser is instantiated only once, it's recommended to set this flag before any statement is executed. =head4 sql_dialect Controls the dialect understood by SQL::Parser. Possible values (delivery state of SQL::Statement): * ANSI * CSV * AnyData Defaults to "CSV". Because an SQL::Parser is instantiated only once and SQL::Parser doesn't allow one to modify the dialect once instantiated, it's strongly recommended to set this flag before any statement is executed (best place is connect attribute hash). =head4 sql_engine_in_gofer This value has a true value in case of this driver is operated via L. The impact of being operated via Gofer is a read-only driver (not read-only databases!), so you cannot modify any attributes later - neither any table settings. B you won't get an error in cases you modify table attributes, so please carefully watch C. =head4 sql_meta Private data area which contains information about the tables this module handles. Table meta data might not be available until the table has been accessed for the first time e.g., by issuing a select on it however it is possible to pre-initialize attributes for each table you use. DBI::DBD::SqlEngine recognizes the (public) attributes C, C, C, C and C. Be very careful when modifying attributes you do not know, the consequence might be a destroyed or corrupted table. While C is a private and readonly attribute (which means, you cannot modify it's values), derived drivers might provide restricted write access through another attribute. Well known accessors are C for L, C for L and C for L. =head4 sql_table_source Controls the class which will be used for fetching available tables. See L for details. =head4 sql_data_source Contains the class name to be used for opening tables. See L for details. =head2 Driver private methods =head3 Default DBI methods =head4 data_sources The C method returns a list of subdirectories of the current directory in the form "dbi:CSV:f_dir=$dirname". If you want to read the subdirectories of another directory, use my ($drh) = DBI->install_driver ("CSV"); my (@list) = $drh->data_sources (f_dir => "/usr/local/csv_data"); =head4 list_tables This method returns a list of file names inside $dbh->{f_dir}. Example: my ($dbh) = DBI->connect ("dbi:CSV:f_dir=/usr/local/csv_data"); my (@list) = $dbh->func ("list_tables"); Note that the list includes all files contained in the directory, even those that have non-valid table names, from the view of SQL. =head3 Additional methods The following methods are only available via their documented name when DBI::DBD::SQlEngine is used directly. Because this is only reasonable for testing purposes, the real names must be used instead. Those names can be computed by replacing the C in the method name with the driver prefix. =head4 sql_versions Signature: sub sql_versions (;$) { my ($table_name) = @_; $table_name ||= "."; ... } Returns the versions of the driver, including the DBI version, the Perl version, DBI::PurePerl version (if DBI::PurePerl is active) and the version of the SQL engine in use. my $dbh = DBI->connect ("dbi:File:"); my $sql_versions = $dbh->func( "sql_versions" ); print "$sql_versions\n"; __END__ # DBI::DBD::SqlEngine 0.05 using SQL::Statement 1.402 # DBI 1.623 # OS netbsd (6.99.12) # Perl 5.016002 (x86_64-netbsd-thread-multi) Called in list context, sql_versions will return an array containing each line as single entry. Some drivers might use the optional (table name) argument and modify version information related to the table (e.g. DBD::DBM provides storage backend information for the requested table, when it has a table name). =head4 sql_get_meta Signature: sub sql_get_meta ($$) { my ($table_name, $attrib) = @_; ... } Returns the value of a meta attribute set for a specific table, if any. See L for the possible attributes. A table name of C<"."> (single dot) is interpreted as the default table. This will retrieve the appropriate attribute globally from the dbh. This has the same restrictions as C<< $dbh->{$attrib} >>. =head4 sql_set_meta Signature: sub sql_set_meta ($$$) { my ($table_name, $attrib, $value) = @_; ... } Sets the value of a meta attribute set for a specific table. See L for the possible attributes. A table name of C<"."> (single dot) is interpreted as the default table which will set the specified attribute globally for the dbh. This has the same restrictions as C<< $dbh->{$attrib} = $value >>. =head4 sql_clear_meta Signature: sub sql_clear_meta ($) { my ($table_name) = @_; ... } Clears the table specific meta information in the private storage of the dbh. =head2 Extensibility =head3 DBI::DBD::SqlEngine::TableSource Provides data sources and table information on database driver and database handle level. package DBI::DBD::SqlEngine::TableSource; sub data_sources ($;$) { my ( $class, $drh, $attrs ) = @_; ... } sub avail_tables { my ( $class, $drh ) = @_; ... } The C method is called when the user invokes any of the following: @ary = DBI->data_sources($driver); @ary = DBI->data_sources($driver, \%attr); @ary = $dbh->data_sources(); @ary = $dbh->data_sources(\%attr); The C method is called when the user invokes any of the following: @names = $dbh->tables( $catalog, $schema, $table, $type ); $sth = $dbh->table_info( $catalog, $schema, $table, $type ); $sth = $dbh->table_info( $catalog, $schema, $table, $type, \%attr ); $dbh->func( "list_tables" ); Every time where an C<\%attr> argument can be specified, this C<\%attr> object's C attribute is preferred over the C<$dbh> attribute or the driver default, eg. @ary = DBI->data_sources("dbi:CSV:", { f_dir => "/your/csv/tables", # note: this class doesn't comes with DBI sql_table_source => "DBD::File::Archive::Tar::TableSource", # scan tarballs instead of directories }); When you're going to implement such a DBD::File::Archive::Tar::TableSource class, remember to add correct attributes (including C and C) to the returned DSN's. =head3 DBI::DBD::SqlEngine::DataSource Provides base functionality for dealing with tables. It is primarily designed for allowing transparent access to files on disk or already opened (file-)streams (eg. for DBD::CSV). Derived classes shall be restricted to similar functionality, too (eg. opening streams from an archive, transparently compress/uncompress log files before parsing them, package DBI::DBD::SqlEngine::DataSource; sub complete_table_name ($$;$) { my ( $self, $meta, $table, $respect_case ) = @_; ... } The method C is called when first setting up the I for a table: "SELECT user.id, user.name, user.shell FROM user WHERE ..." results in opening the table C. First step of the table open process is completing the name. Let's imagine you're having a L handle with following settings: $dbh->{sql_identifier_case} = SQL_IC_LOWER; $dbh->{f_ext} = '.lst'; $dbh->{f_dir} = '/data/web/adrmgr'; Those settings will result in looking for files matching C<[Uu][Ss][Ee][Rr](\.lst)?$> in C. The scanning of the directory C and the pattern match check will be done in C by the C method. If you intend to provide other sources of data streams than files, in addition to provide an appropriate C method, a method to open the resource is required: package DBI::DBD::SqlEngine::DataSource; sub open_data ($) { my ( $self, $meta, $attrs, $flags ) = @_; ... } After the method C has been run successfully, the table's meta information are in a state which allowes the table's data accessor methods will be able to fetch/store row information. Implementation details heavily depends on the table implementation, whereby the most famous is surely L. =head1 SQL ENGINES DBI::DBD::SqlEngine currently supports two SQL engines: L and L. DBI::SQL::Nano supports a I limited subset of SQL statements, but it might be faster for some very simple tasks. SQL::Statement in contrast supports a much larger subset of ANSI SQL. To use SQL::Statement, you need at least version 1.401 of SQL::Statement and the environment variable C must not be set to a true value. =head1 SUPPORT You can find documentation for this module with the perldoc command. perldoc DBI::DBD::SqlEngine You can also look for information at: =over 4 =item * RT: CPAN's request tracker L L =item * AnnoCPAN: Annotated CPAN documentation L L =item * CPAN Ratings L =item * Search CPAN L =back =head2 Where can I go for more help? For questions about installation or usage, please ask on the dbi-dev@perl.org mailing list. If you have a bug report, patch or suggestion, please open a new report ticket on CPAN, if there is not already one for the issue you want to report. Of course, you can mail any of the module maintainers, but it is less likely to be missed if it is reported on RT. Report tickets should contain a detailed description of the bug or enhancement request you want to report and at least an easy way to verify/reproduce the issue and any supplied fix. Patches are always welcome, too. =head1 ACKNOWLEDGEMENTS Thanks to Tim Bunce, Martin Evans and H.Merijn Brand for their continued support while developing DBD::File, DBD::DBM and DBD::AnyData. Their support, hints and feedback helped to design and implement this module. =head1 AUTHOR This module is currently maintained by H.Merijn Brand < h.m.brand at xs4all.nl > and Jens Rehsack < rehsack at googlemail.com > The original authors are Jochen Wiedmann and Jeff Zucker. =head1 COPYRIGHT AND LICENSE Copyright (C) 2009-2013 by H.Merijn Brand & Jens Rehsack Copyright (C) 2004-2009 by Jeff Zucker Copyright (C) 1998-2004 by Jochen Wiedmann All rights reserved. You may freely distribute and/or modify this module under the terms of either the GNU General Public License (GPL) or the Artistic License, as specified in the Perl README file. =head1 SEE ALSO L, L, L and L. =cut perl5/DBI/DBD/SqlEngine/Developers.pod000044400000065312152462470720013301 0ustar00=head1 NAME DBI::DBD::SqlEngine::Developers - Developers documentation for DBI::DBD::SqlEngine =head1 SYNOPSIS package DBD::myDriver; use base qw(DBI::DBD::SqlEngine); sub driver { ... my $drh = $proto->SUPER::driver($attr); ... return $drh->{class}; } sub CLONE { ... } package DBD::myDriver::dr; @ISA = qw(DBI::DBD::SqlEngine::dr); sub data_sources { ... } ... package DBD::myDriver::db; @ISA = qw(DBI::DBD::SqlEngine::db); sub init_valid_attributes { ... } sub init_default_attributes { ... } sub set_versions { ... } sub validate_STORE_attr { my ($dbh, $attrib, $value) = @_; ... } sub validate_FETCH_attr { my ($dbh, $attrib) = @_; ... } sub get_myd_versions { ... } sub get_avail_tables { ... } package DBD::myDriver::st; @ISA = qw(DBI::DBD::SqlEngine::st); sub FETCH { ... } sub STORE { ... } package DBD::myDriver::Statement; @ISA = qw(DBI::DBD::SqlEngine::Statement); sub open_table { ... } package DBD::myDriver::Table; @ISA = qw(DBI::DBD::SqlEngine::Table); my %reset_on_modify = ( myd_abc => "myd_foo", myd_mno => "myd_bar", ); __PACKAGE__->register_reset_on_modify( \%reset_on_modify ); my %compat_map = ( abc => 'foo_abc', xyz => 'foo_xyz', ); __PACKAGE__->register_compat_map( \%compat_map ); sub bootstrap_table_meta { ... } sub init_table_meta { ... } sub table_meta_attr_changed { ... } sub open_data { ... } sub new { ... } sub fetch_row { ... } sub push_row { ... } sub push_names { ... } sub seek { ... } sub truncate { ... } sub drop { ... } # optimize the SQL engine by add one or more of sub update_current_row { ... } # or sub update_specific_row { ... } # or sub update_one_row { ... } # or sub insert_new_row { ... } # or sub delete_current_row { ... } # or sub delete_one_row { ... } =head1 DESCRIPTION This document describes the interface of DBI::DBD::SqlEngine for DBD developers who write DBI::DBD::SqlEngine based DBI drivers. It supplements L and L, which you should read first. =head1 CLASSES Each DBI driver must provide a package global C<< driver >> method and three DBI related classes: =over 4 =item DBI::DBD::SqlEngine::dr Driver package, contains the methods DBI calls indirectly via DBI interface: DBI->connect ('DBI:DBM:', undef, undef, {}) # invokes package DBD::DBM::dr; @DBD::DBM::dr::ISA = qw(DBI::DBD::SqlEngine::dr); sub connect ($$;$$$) { ... } Similar for C and C. Pure Perl DBI drivers derived from DBI::DBD::SqlEngine usually don't need to override any of the methods provided through the DBD::XXX::dr package. However if you need additional initialization not fitting in C and C of you're ::db class, the connect method might be the final place to be modified. =item DBI::DBD::SqlEngine::db Contains the methods which are called through DBI database handles (C<< $dbh >>). e.g., $sth = $dbh->prepare ("select * from foo"); # returns the f_encoding setting for table foo $dbh->csv_get_meta ("foo", "f_encoding"); DBI::DBD::SqlEngine provides the typical methods required here. Developers who write DBI drivers based on DBI::DBD::SqlEngine need to override the methods C<< set_versions >> and C<< init_valid_attributes >>. =item DBI::DBD::SqlEngine::TieMeta; Provides the tie-magic for C<< $dbh->{$drv_pfx . "_meta"} >>. Routes C through C<< $drv->set_sql_engine_meta() >> and C through C<< $drv->get_sql_engine_meta() >>. C is not supported, you have to execute a C statement, where applicable. =item DBI::DBD::SqlEngine::TieTables; Provides the tie-magic for tables in C<< $dbh->{$drv_pfx . "_meta"} >>. Routes C though C<< $tblClass->set_table_meta_attr() >> and C though C<< $tblClass->get_table_meta_attr() >>. C removes an attribute from the I retrieved by C<< $tblClass->get_table_meta() >>. =item DBI::DBD::SqlEngine::st Contains the methods to deal with prepared statement handles. e.g., $sth->execute () or die $sth->errstr; =item DBI::DBD::SqlEngine::TableSource; Base class for 3rd party table sources: $dbh->{sql_table_source} = "DBD::Foo::TableSource"; =item DBI::DBD::SqlEngine::DataSource; Base class for 3rd party data sources: $dbh->{sql_data_source} = "DBD::Foo::DataSource"; =item DBI::DBD::SqlEngine::Statement; Base class for derived drivers statement engine. Implements C. =item DBI::DBD::SqlEngine::Table; Contains tailoring between SQL engine's requirements and C magic for finding the right tables and storage. Builds bridges between C handling of C, table initialization for SQL engines and I's attribute management for derived drivers. =back =head2 DBI::DBD::SqlEngine This is the main package containing the routines to initialize DBI::DBD::SqlEngine based DBI drivers. Primarily the C<< DBI::DBD::SqlEngine::driver >> method is invoked, either directly from DBI when the driver is initialized or from the derived class. package DBD::DBM; use base qw( DBI::DBD::SqlEngine ); sub driver { my ( $class, $attr ) = @_; ... my $drh = $class->SUPER::driver( $attr ); ... return $drh; } It is not necessary to implement your own driver method as long as additional initialization (e.g. installing more private driver methods) is not required. You do not need to call C<< setup_driver >> as DBI::DBD::SqlEngine takes care of it. =head2 DBI::DBD::SqlEngine::dr The driver package contains the methods DBI calls indirectly via the DBI interface (see L). DBI::DBD::SqlEngine based DBI drivers usually do not need to implement anything here, it is enough to do the basic initialization: package DBD:XXX::dr; @DBD::XXX::dr::ISA = qw (DBI::DBD::SqlEngine::dr); $DBD::XXX::dr::imp_data_size = 0; $DBD::XXX::dr::data_sources_attr = undef; $DBD::XXX::ATTRIBUTION = "DBD::XXX $DBD::XXX::VERSION by Hans Mustermann"; =head3 Methods provided by C<< DBI::DBD::SqlEngine::dr >>: =over 4 =item connect Supervises the driver bootstrap when calling DBI->connect( "dbi:Foo", , , { ... } ); First it instantiates a new driver using C. After that, initial bootstrap of the newly instantiated driver is done by $dbh->func( 0, "init_default_attributes" ); The first argument (C<0>) signals that this is the very first call to C. Modern drivers understand that and do early stage setup here after calling package DBD::Foo::db; our @DBD::Foo::db::ISA = qw(DBI::DBD::SqlEngine::db); sub init_default_attributes { my ($dbh, $phase) = @_; $dbh->SUPER::init_default_attributes($phase); ...; # own setup code, maybe separated by phases } When the C<$phase> argument is passed down until C, C recognizes a I driver and initializes the attributes from I and I<$attr> arguments passed via C<< DBI->connect( $dsn, $user, $pass, \%attr ) >>. At the end of the attribute initialization after I, C invoked C again for I: $dbh->func( 1, "init_default_attributes" ); =item data_sources Returns a list of I's using the C method of the class specified in C<< $dbh->{sql_table_source} >> or via C<\%attr>: @ary = DBI->data_sources($driver); @ary = DBI->data_sources($driver, \%attr); =item disconnect_all C doesn't have an overall driver cache, so nothing happens here at all. =back =head2 DBI::DBD::SqlEngine::db This package defines the database methods, which are called via the DBI database handle C<< $dbh >>. =head3 Methods provided by C<< DBI::DBD::SqlEngine::db >>: =over 4 =item ping Simply returns the content of the C<< Active >> attribute. Override when your driver needs more complicated actions here. =item prepare Prepares a new SQL statement to execute. Returns a statement handle, C<< $sth >> - instance of the DBD:XXX::st. It is neither required nor recommended to override this method. =item validate_FETCH_attr Called by C to allow inherited drivers do their own attribute name validation. Calling convention is similar to C and the return value is the approved attribute name. return $validated_attribute_name; In case of validation fails (e.g. accessing private attribute or similar), C is permitted to throw an exception. =item FETCH Fetches an attribute of a DBI database object. Private handle attributes must have a prefix (this is mandatory). If a requested attribute is detected as a private attribute without a valid prefix, the driver prefix (written as C<$drv_prefix>) is added. The driver prefix is extracted from the attribute name and verified against C<< $dbh->{ $drv_prefix . "valid_attrs" } >> (when it exists). If the requested attribute value is not listed as a valid attribute, this method croaks. If the attribute is valid and readonly (listed in C<< $dbh->{ $drv_prefix . "readonly_attrs" } >> when it exists), a real copy of the attribute value is returned. So it's not possible to modify C from outside of DBI::DBD::SqlEngine::db or a derived class. =item validate_STORE_attr Called by C to allow inherited drivers do their own attribute name validation. Calling convention is similar to C and the return value is the approved attribute name followed by the approved new value. return ($validated_attribute_name, $validated_attribute_value); In case of validation fails (e.g. accessing private attribute or similar), C is permitted to throw an exception (C throws an exception when someone tries to assign value other than C to C<< $dbh->{sql_identifier_case} >> or C<< $dbh->{sql_quoted_identifier_case} >>). =item STORE Stores a database private attribute. Private handle attributes must have a prefix (this is mandatory). If a requested attribute is detected as a private attribute without a valid prefix, the driver prefix (written as C<$drv_prefix>) is added. If the database handle has an attribute C<${drv_prefix}_valid_attrs> - for attribute names which are not listed in that hash, this method croaks. If the database handle has an attribute C<${drv_prefix}_readonly_attrs>, only attributes which are not listed there can be stored (once they are initialized). Trying to overwrite such an immutable attribute forces this method to croak. An example of a valid attributes list can be found in C<< DBI::DBD::SqlEngine::db::init_valid_attributes >>. =item set_versions This method sets the attributes C<< f_version >>, C<< sql_nano_version >>, C<< sql_statement_version >> and (if not prohibited by a restrictive C<< ${prefix}_valid_attrs >>) C<< ${prefix}_version >>. This method is called at the end of the C<< connect () >> phase. When overriding this method, do not forget to invoke the superior one. =item init_valid_attributes This method is called after the database handle is instantiated as the first attribute initialization. C<< DBI::DBD::SqlEngine::db::init_valid_attributes >> initializes the attributes C and C. When overriding this method, do not forget to invoke the superior one, preferably before doing anything else. =item init_default_attributes This method is called after the database handle is instantiated to initialize the default attributes. It expects one argument: C<$phase>. If C<$phase> is not given, C of C expects this is an old-fashioned driver which isn't capable of multi-phased initialization. C<< DBI::DBD::SqlEngine::db::init_default_attributes >> initializes the attributes C, C, C, C, C, C, C and C when L is available. It sets C to the given C<$phase>. When the derived implementor class provides the attribute to validate attributes (e.g. C<< $dbh->{dbm_valid_attrs} = {...}; >>) or the attribute containing the immutable attributes (e.g. C<< $dbh->{dbm_readonly_attrs} = {...}; >>), the attributes C, C and C are added (when available) to the list of valid and immutable attributes (where C is interpreted as the driver prefix). =item get_versions This method is called by the code injected into the instantiated driver to provide the user callable driver method C<< ${prefix}versions >> (e.g. C<< dbm_versions >>, C<< csv_versions >>, ...). The DBI::DBD::SqlEngine implementation returns all version information known by DBI::DBD::SqlEngine (e.g. DBI version, Perl version, DBI::DBD::SqlEngine version and the SQL handler version). C takes the C<$dbh> as the first argument and optionally a second argument containing a table name. The second argument is not evaluated in C<< DBI::DBD::SqlEngine::db::get_versions >> itself - but might be in the future. If the derived implementor class provides a method named C, this is invoked and the return value of it is associated to the derived driver name: if (my $dgv = $dbh->{ImplementorClass}->can ("get_" . $drv_prefix . "versions") { (my $derived_driver = $dbh->{ImplementorClass}) =~ s/::db$//; $versions{$derived_driver} = &$dgv ($dbh, $table); } Override it to add more version information about your module, (e.g. some kind of parser version in case of DBD::CSV, ...), if one line is not enough room to provide all relevant information. =item sql_parser_object Returns a L instance, when C<< sql_handler >> is set to "SQL::Statement". The parser instance is stored in C<< sql_parser_object >>. It is not recommended to override this method. =item disconnect Disconnects from a database. All local table information is discarded and the C<< Active >> attribute is set to 0. =item type_info_all Returns information about all the types supported by DBI::DBD::SqlEngine. =item table_info Returns a statement handle which is prepared to deliver information about all known tables. =item list_tables Returns a list of all known table names. =item quote Quotes a string for use in SQL statements. =item commit Warns about a useless call (if warnings enabled) and returns. DBI::DBD::SqlEngine is typically a driver which commits every action instantly when executed. =item rollback Warns about a useless call (if warnings enabled) and returns. DBI::DBD::SqlEngine is typically a driver which commits every action instantly when executed. =back =head3 Attributes used by C<< DBI::DBD::SqlEngine::db >>: This section describes attributes which are important to developers of DBI Database Drivers derived from C. =over 4 =item sql_init_order This attribute contains a hash with priorities as key and an array containing the C<$dbh> attributes to be initialized during before/after other attributes. C initializes following attributes: $dbh->{sql_init_order} = { 0 => [qw( Profile RaiseError PrintError AutoCommit )], 90 => [ "sql_meta", $dbh->{$drv_pfx_meta} ? $dbh->{$drv_pfx_meta} : () ] } The default priority of not listed attribute keys is C<50>. It is well known that a lot of attributes needed to be set before some table settings are initialized. For example, for L, when using my $dbh = DBI->connect( "dbi:DBM:", undef, undef, { f_dir => "/path/to/dbm/databases", dbm_type => "BerkeleyDB", dbm_mldbm => "JSON", # use MLDBM::Serializer::JSON dbm_tables => { quick => { dbm_type => "GDBM_File", dbm_MLDBM => "FreezeThaw" } } }); This defines a known table C which uses the L backend and L as serializer instead of the overall default L and L. B all files containing the table data have to be searched in C<< $dbh->{f_dir} >>, which requires C<< $dbh->{f_dir} >> must be initialized before C<< $dbh->{sql_meta}->{quick} >> is initialized by C method of L to get C<< $dbh->{sql_meta}->{quick}->{f_dir} >> being initialized properly. =item sql_init_phase This attribute is only set during the initialization steps of the DBI Database Driver. It contains the value of the currently run initialization phase. Currently supported phases are I and I. This attribute is set in C and removed in C. =item sql_engine_in_gofer This value has a true value in case of this driver is operated via L. The impact of being operated via Gofer is a read-only driver (not read-only databases!), so you cannot modify any attributes later - neither any table settings. B you won't get an error in cases you modify table attributes, so please carefully watch C. =item sql_table_source Names a class which is responsible for delivering I and I (Database Driver related). I here refers to L, not C. See L for details. =item sql_data_source Name a class which is responsible for handling table resources open and completing table names requested via SQL statements. See L for details. =item sql_dialect Controls the dialect understood by SQL::Parser. Possible values (delivery state of SQL::Statement): * ANSI * CSV * AnyData Defaults to "CSV". Because an SQL::Parser is instantiated only once and SQL::Parser doesn't allow one to modify the dialect once instantiated, it's strongly recommended to set this flag before any statement is executed (best place is connect attribute hash). =back =head2 DBI::DBD::SqlEngine::st Contains the methods to deal with prepared statement handles: =over 4 =item bind_param Common routine to bind placeholders to a statement for execution. It is dangerous to override this method without detailed knowledge about the DBI::DBD::SqlEngine internal storage structure. =item execute Executes a previously prepared statement (with placeholders, if any). =item finish Finishes a statement handle, discards all buffered results. The prepared statement is not discarded so the statement can be executed again. =item fetch Fetches the next row from the result-set. This method may be rewritten in a later version and if it's overridden in a derived class, the derived implementation should not rely on the storage details. =item fetchrow_arrayref Alias for C<< fetch >>. =item FETCH Fetches statement handle attributes. Supported attributes (for full overview see L) are C, C, C and C. Each column is returned as C which might be wrong depending on the derived backend storage. If the statement handle has private attributes, they can be fetched using this method, too. B that statement attributes are not associated with any table used in this statement. This method usually requires extending in a derived implementation. See L or L for some example. =item STORE Allows storing of statement private attributes. No special handling is currently implemented here. =item rows Returns the number of rows affected by the last execute. This method might return C. =back =head2 DBI::DBD::SqlEngine::TableSource Provides data sources and table information on database driver and database handle level. package DBI::DBD::SqlEngine::TableSource; sub data_sources ($;$) { my ( $class, $drh, $attrs ) = @_; ... } sub avail_tables { my ( $class, $drh ) = @_; ... } The C method is called when the user invokes any of the following: @ary = DBI->data_sources($driver); @ary = DBI->data_sources($driver, \%attr); @ary = $dbh->data_sources(); @ary = $dbh->data_sources(\%attr); The C method is called when the user invokes any of the following: @names = $dbh->tables( $catalog, $schema, $table, $type ); $sth = $dbh->table_info( $catalog, $schema, $table, $type ); $sth = $dbh->table_info( $catalog, $schema, $table, $type, \%attr ); $dbh->func( "list_tables" ); Every time where an C<\%attr> argument can be specified, this C<\%attr> object's C attribute is preferred over the C<$dbh> attribute or the driver default. =head2 DBI::DBD::SqlEngine::DataSource Provides base functionality for dealing with tables. It is primarily designed for allowing transparent access to files on disk or already opened (file-)streams (e.g. for DBD::CSV). Derived classes shall be restricted to similar functionality, too (e.g. opening streams from an archive, transparently compress/uncompress log files before parsing them, package DBI::DBD::SqlEngine::DataSource; sub complete_table_name ($$;$) { my ( $self, $meta, $table, $respect_case ) = @_; ... } The method C is called when first setting up the I for a table: "SELECT user.id, user.name, user.shell FROM user WHERE ..." results in opening the table C. First step of the table open process is completing the name. Let's imagine you're having a L handle with following settings: $dbh->{sql_identifier_case} = SQL_IC_LOWER; $dbh->{f_ext} = '.lst'; $dbh->{f_dir} = '/data/web/adrmgr'; Those settings will result in looking for files matching C<[Uu][Ss][Ee][Rr](\.lst)?$> in C. The scanning of the directory C and the pattern match check will be done in C by the C method. If you intend to provide other sources of data streams than files, in addition to provide an appropriate C method, a method to open the resource is required: package DBI::DBD::SqlEngine::DataSource; sub open_data ($) { my ( $self, $meta, $attrs, $flags ) = @_; ... } After the method C has been run successfully, the table's meta information are in a state which allows the table's data accessor methods will be able to fetch/store row information. Implementation details heavily depends on the table implementation, whereby the most famous is surely L. =head2 DBI::DBD::SqlEngine::Statement Derives from DBI::SQL::Nano::Statement for unified naming when deriving new drivers. No additional feature is provided from here. =head2 DBI::DBD::SqlEngine::Table Derives from DBI::SQL::Nano::Table for unified naming when deriving new drivers. You should consult the documentation of C<< SQL::Eval::Table >> (see L) to get more information about the abstract methods of the table's base class you have to override and a description of the table meta information expected by the SQL engines. =over 4 =item bootstrap_table_meta Initializes a table meta structure. Can be safely overridden in a derived class, as long as the C<< SUPER >> method is called at the end of the overridden method. It copies the following attributes from the database into the table meta data C<< $dbh->{ReadOnly} >> into C<< $meta->{readonly} >>, C and C and makes them sticky to the table. This method should be called before you attempt to map between file name and table name to ensure the correct directory, extension etc. are used. =item init_table_meta Initializes more attributes of the table meta data - usually more expensive ones (e.g. those which require class instantiations) - when the file name and the table name could mapped. =item get_table_meta Returns the table meta data. If there are none for the required table, a new one is initialized. When after bootstrapping a new I and L a mapping can be established between an existing I and the new bootstrapped one, the already existing is used and a mapping shortcut between the recent used table name and the already known table name is hold in C<< $dbh->{sql_meta_map} >>. When it fails, nothing is returned. On success, the name of the table and the meta data structure is returned. =item get_table_meta_attr Returns a single attribute from the table meta data. If the attribute name appears in C<%compat_map>, the attribute name is updated from there. =item set_table_meta_attr Sets a single attribute in the table meta data. If the attribute name appears in C<%compat_map>, the attribute name is updated from there. =item table_meta_attr_changed Called when an attribute of the meta data is modified. If the modified attribute requires to reset a calculated attribute, the calculated attribute is reset (deleted from meta data structure) and the I flag is removed, too. The decision is made based on C<%register_reset_on_modify>. =item register_reset_on_modify Allows C to reset meta attributes when special attributes are modified. For DBD::File, modifying one of C, C, C or C will reset C. DBD::DBM extends the list for C and C to reset the value of C. If your DBD has calculated values in the meta data area, then call C: my %reset_on_modify = ( "xxx_foo" => "xxx_bar" ); __PACKAGE__->register_reset_on_modify( \%reset_on_modify ); =item register_compat_map Allows C and C to update the attribute name to the current favored one: # from DBD::DBM my %compat_map = ( "dbm_ext" => "f_ext" ); __PACKAGE__->register_compat_map( \%compat_map ); =item open_data Called to open the table's data storage. This is silently forwarded to C<< $meta->{sql_data_source}->open_data() >>. After this is done, a derived class might add more steps in an overridden C<< open_file >> method. =item new Instantiates the table. This is done in 3 steps: 1. get the table meta data 2. open the data file 3. bless the table data structure using inherited constructor new It is not recommended to override the constructor of the table class. Find a reasonable place to add you extensions in one of the above four methods. =back =head1 AUTHOR The module DBI::DBD::SqlEngine is currently maintained by H.Merijn Brand < h.m.brand at xs4all.nl > and Jens Rehsack < rehsack at googlemail.com > =head1 COPYRIGHT AND LICENSE Copyright (C) 2010 by H.Merijn Brand & Jens Rehsack All rights reserved. You may freely distribute and/or modify this module under the terms of either the GNU General Public License (GPL) or the Artistic License, as specified in the Perl README file. =cut perl5/DBI/DBD/SqlEngine/HowTo.pod000044400000025113152462470720012224 0ustar00=head1 NAME DBI::DBD::SqlEngine::HowTo - Guide to create DBI::DBD::SqlEngine based driver =head1 SYNOPSIS perldoc DBI::DBD::SqlEngine::HowTo perldoc DBI perldoc DBI::DBD perldoc DBI::DBD::SqlEngine::Developers perldoc SQL::Eval perldoc DBI::DBD::SqlEngine perldoc DBI::DBD::SqlEngine::HowTo perldoc SQL::Statement::Embed =head1 DESCRIPTION This document provides a step-by-step guide, how to create a new C based DBD. It expects that you carefully read the L documentation and that you're familiar with L and had read and understood L. This document addresses experienced developers who are really sure that they need to invest time when writing a new DBI Driver. Writing a DBI Driver is neither a weekend project nor an easy job for hobby coders after work. Expect one or two man-month of time for the first start. Those who are still reading, should be able to sing the rules of L. =head1 CREATING DRIVER CLASSES Do you have an entry in DBI's DBD registry? DBI::DBD::SqlEngine expect having a unique prefix for every driver class in inheritance chain. It's easy to get a prefix - just drop the DBI team a note (L). If you want for some reason hide your work, take a look at L how to wrap a private prefix method around existing C. For this guide, a prefix of C is assumed. =head2 Sample Skeleton package DBD::Foo; use strict; use warnings; use vars qw($VERSION); use base qw(DBI::DBD::SqlEngine); use DBI (); $VERSION = "0.001"; package DBD::Foo::dr; use vars qw(@ISA $imp_data_size); @ISA = qw(DBI::DBD::SqlEngine::dr); $imp_data_size = 0; package DBD::Foo::db; use vars qw(@ISA $imp_data_size); @ISA = qw(DBI::DBD::SqlEngine::db); $imp_data_size = 0; package DBD::Foo::st; use vars qw(@ISA $imp_data_size); @ISA = qw(DBI::DBD::SqlEngine::st); $imp_data_size = 0; package DBD::Foo::Statement; use vars qw(@ISA); @ISA = qw(DBI::DBD::SqlEngine::Statement); package DBD::Foo::Table; use vars qw(@ISA); @ISA = qw(DBI::DBD::SqlEngine::Table); 1; Tiny, eh? And all you have now is a DBD named foo which will is able to deal with temporary tables, as long as you use L. In L environments, this DBD can do nothing. =head2 Deal with own attributes Before we start doing usable stuff with our DBI driver, we need to think about what we want to do and how we want to do it. Do we need tunable knobs accessible by users? Do we need status information? All this is handled in attributes of the database handles (be careful when your DBD is running "behind" a L proxy). How come the attributes into the DBD and how are they fetchable by the user? Good question, but you should know because you've read the L documentation. C and C taking care for you - all they need to know is which attribute names are valid and mutable or immutable. Tell them by adding C to your db class: sub init_valid_attributes { my $dbh = $_[0]; $dbh->SUPER::init_valid_attributes (); $dbh->{foo_valid_attrs} = { foo_version => 1, # contains version of this driver foo_valid_attrs => 1, # contains the valid attributes of foo drivers foo_readonly_attrs => 1, # contains immutable attributes of foo drivers foo_bar => 1, # contains the bar attribute foo_baz => 1, # contains the baz attribute foo_manager => 1, # contains the manager of the driver instance foo_manager_type => 1, # contains the manager class of the driver instance }; $dbh->{foo_readonly_attrs} = { foo_version => 1, # ensure no-one modifies the driver version foo_valid_attrs => 1, # do not permit one to add more valid attributes ... foo_readonly_attrs => 1, # ... or make the immutable mutable foo_manager => 1, # manager is set internally only }; return $dbh; } Woooho - but now the user cannot assign new managers? This is intended, overwrite C to handle it! sub STORE ($$$) { my ( $dbh, $attrib, $value ) = @_; $dbh->SUPER::STORE( $attrib, $value ); # we're still alive, so no exception is thrown ... # by DBI::DBD::SqlEngine::db::STORE if ( $attrib eq "foo_manager_type" ) { $dbh->{foo_manager} = $dbh->{foo_manager_type}->new(); # ... probably correct some states based on the new # foo_manager_type - see DBD::Sys for an example } } But ... my driver runs without a manager until someone first assignes a C. Well, no - there're two places where you can initialize defaults: sub init_default_attributes { my ($dbh, $phase) = @_; $dbh->SUPER::init_default_attributes($phase); if( 0 == $phase ) { # init all attributes which have no knowledge about # user settings from DSN or the attribute hash $dbh->{foo_manager_type} = "DBD::Foo::Manager"; } elsif( 1 == $phase ) { # init phase with more knowledge from DSN or attribute # hash $dbh->{foo_manager} = $dbh->{foo_manager_type}->new(); } return $dbh; } So far we can prevent the users to use our database driver as data storage for anything and everything. We care only about the real important stuff for peace on earth and alike attributes. But in fact, the driver still can't do anything. It can do less than nothing - meanwhile it's not a stupid storage area anymore. =head2 User comfort C since C<0.05> consolidates all persistent meta data of a table into a single structure stored in C<< $dbh->{sql_meta} >>. While DBI::DBD::SqlEngine provides only readonly access to this structure, modifications are still allowed. Primarily DBI::DBD::SqlEngine provides access via the setters C, C, C, C, C and C. Those methods are easily accessible by the users via the C<< $dbh->func () >> interface provided by DBI. Well, many users don't feel comfortize when calling # don't require extension for tables cars $dbh->func ("cars", "f_ext", ".csv", "set_sql_engine_meta"); DBI::DBD::SqlEngine will inject a method into your driver to increase the user comfort to allow: # don't require extension for tables cars $dbh->foo_set_meta ("cars", "f_ext", ".csv"); Better, but here and there users likes to do: # don't require extension for tables cars $dbh->{foo_tables}->{cars}->{f_ext} = ".csv"; This interface is provided when derived DBD's define following in C (re-capture L): sub init_valid_attributes { my $dbh = $_[0]; $dbh->SUPER::init_valid_attributes (); $dbh->{foo_valid_attrs} = { foo_version => 1, # contains version of this driver foo_valid_attrs => 1, # contains the valid attributes of foo drivers foo_readonly_attrs => 1, # contains immutable attributes of foo drivers foo_bar => 1, # contains the bar attribute foo_baz => 1, # contains the baz attribute foo_manager => 1, # contains the manager of the driver instance foo_manager_type => 1, # contains the manager class of the driver instance foo_meta => 1, # contains the public interface to modify table meta attributes }; $dbh->{foo_readonly_attrs} = { foo_version => 1, # ensure no-one modifies the driver version foo_valid_attrs => 1, # do not permit one to add more valid attributes ... foo_readonly_attrs => 1, # ... or make the immutable mutable foo_manager => 1, # manager is set internally only foo_meta => 1, # ensure public interface to modify table meta attributes are immutable }; $dbh->{foo_meta} = "foo_tables"; return $dbh; } This provides a tied hash in C<< $dbh->{foo_tables} >> and a tied hash for each table's meta data in C<< $dbh->{foo_tables}->{$table_name} >>. Modifications on the table meta attributes are done using the table methods: sub get_table_meta_attr { ... } sub set_table_meta_attr { ... } Both methods can adjust the attribute name for compatibility reasons, e.g. when former versions of the DBD allowed different names to be used for the same flag: my %compat_map = ( abc => 'foo_abc', xyz => 'foo_xyz', ); __PACKAGE__->register_compat_map( \%compat_map ); If any user modification on a meta attribute needs reinitialization of the meta structure (in case of C these are the attributes C, C, C and C), inform DBI::DBD::SqlEngine by doing my %reset_on_modify = ( foo_xyz => "foo_bar", foo_abc => "foo_bar", ); __PACKAGE__->register_reset_on_modify( \%reset_on_modify ); The next access to the table meta data will force DBI::DBD::SqlEngine to re-do the entire meta initialization process. Any further action which needs to be taken can handled in C: sub table_meta_attr_changed { my ($class, $meta, $attrib, $value) = @_; ... $class->SUPER::table_meta_attr_changed ($meta, $attrib, $value); } This is done before the new value is set in C<$meta>, so the attribute changed handler can act depending on the old value. =head2 Dealing with Tables Let's put some life into it - it's going to be time for it. This is a good point where a quick side step to L will help to shorten the next paragraph. The documentation in SQL::Statement::Embed regarding embedding in own DBD's works pretty fine with SQL::Statement and DBI::SQL::Nano. Second look should go to L to get a picture over the driver part of the table API. Usually there isn't much to do for an easy driver. =head2 Testing Now you should have your first own DBD. Was easy, wasn't it? But does it work well? Prove it by writing tests and remember to use dbd_edit_mm_attribs from L to ensure testing even rare cases. =head1 AUTHOR This guide is written by Jens Rehsack. DBI::DBD::SqlEngine is written by Jens Rehsack using code from DBD::File originally written by Jochen Wiedmann and Jeff Zucker. The module DBI::DBD::SqlEngine is currently maintained by H.Merijn Brand < h.m.brand at xs4all.nl > and Jens Rehsack < rehsack at googlemail.com > =head1 COPYRIGHT AND LICENSE Copyright (C) 2010 by H.Merijn Brand & Jens Rehsack All rights reserved. You may freely distribute and/or modify this module under the terms of either the GNU General Public License (GPL) or the Artistic License, as specified in the Perl README file. =cut perl5/DBI/DBD/Metadata.pm000044400000035305152462470720010655 0ustar00package DBI::DBD::Metadata; # $Id: Metadata.pm 14213 2010-06-30 19:29:18Z Martin $ # # Copyright (c) 1997-2003 Jonathan Leffler, Jochen Wiedmann, # Steffen Goeldner and Tim Bunce # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. use strict; use Exporter (); use Carp; use DBI; use DBI::Const::GetInfoType qw(%GetInfoType); our @ISA = qw(Exporter); our @EXPORT = qw(write_getinfo_pm write_typeinfo_pm); our $VERSION = "2.014214"; =head1 NAME DBI::DBD::Metadata - Generate the code and data for some DBI metadata methods =head1 SYNOPSIS The idea is to extract metadata information from a good quality ODBC driver and use it to generate code and data to use in your own DBI driver for the same database. To generate code to support the get_info method: perl -MDBI::DBD::Metadata -e "write_getinfo_pm('dbi:ODBC:dsn-name','user','pass','Driver')" perl -MDBI::DBD::Metadata -e write_getinfo_pm dbi:ODBC:foo_db username password Driver To generate code to support the type_info method: perl -MDBI::DBD::Metadata -e "write_typeinfo_pm('dbi:ODBC:dsn-name','user','pass','Driver')" perl -MDBI::DBD::Metadata -e write_typeinfo_pm dbi:ODBC:dsn-name user pass Driver Where C is the connection to use to extract the data, and C is the name of the driver you want the code generated for (the driver name gets embedded into the output in numerous places). =head1 Generating a GetInfo package for a driver The C in the DBI::DBD::Metadata module generates a DBD::Driver::GetInfo package on standard output. This method generates a DBD::Driver::GetInfo package from the data source you specified in the parameter list or in the environment variable DBI_DSN. DBD::Driver::GetInfo should help a DBD author implement the DBI get_info() method. Because you are just creating this package, it is very unlikely that DBD::Driver already provides a good implementation for get_info(). Thus you will probably connect via DBD::ODBC. Once you are sure that it is producing reasonably sane data, you should typically redirect the standard output to lib/DBD/Driver/GetInfo.pm, and then hand edit the result. Do not forget to update your Makefile.PL and MANIFEST to include this as an extra PM file that should be installed. If you connect via DBD::ODBC, you should use version 0.38 or greater; Please take a critical look at the data returned! ODBC drivers vary dramatically in their quality. The generator assumes that most values are static and places these values directly in the %info hash. A few examples show the use of CODE references and the implementation via subroutines. It is very likely that you will have to write additional subroutines for values depending on the session state or server version, e.g. SQL_DBMS_VER. A possible implementation of DBD::Driver::db::get_info() may look like: sub get_info { my($dbh, $info_type) = @_; require DBD::Driver::GetInfo; my $v = $DBD::Driver::GetInfo::info{int($info_type)}; $v = $v->($dbh) if ref $v eq 'CODE'; return $v; } Please replace Driver (or "") with the name of your driver. Note that this stub function is generated for you by write_getinfo_pm function, but you must manually transfer the code to Driver.pm. =cut sub write_getinfo_pm { my ($dsn, $user, $pass, $driver) = @_ ? @_ : @ARGV; my $dbh = DBI->connect($dsn, $user, $pass, {RaiseError=>1}); $driver = "" unless defined $driver; print <(\$dbh) if ref \$v eq 'CODE'; return \$v; } # Transfer this to lib/DBD/${driver}/GetInfo.pm # The \%info hash was automatically generated by # DBI::DBD::Metadata::write_getinfo_pm v$DBI::DBD::Metadata::VERSION. package DBD::${driver}::GetInfo; use strict; use DBD::${driver}; # Beware: not officially documented interfaces... # use DBI::Const::GetInfoType qw(\%GetInfoType); # use DBI::Const::GetInfoReturn qw(\%GetInfoReturnTypes \%GetInfoReturnValues); my \$sql_driver = '${driver}'; my \$sql_ver_fmt = '%02d.%02d.%04d'; # ODBC version string: ##.##.##### my \$sql_driver_ver = sprintf \$sql_ver_fmt, split (/\\./, \$DBD::${driver}::VERSION); PERL my $kw_map = 0; { # Informix CLI (ODBC) v3.81.0000 does not return a list of keywords. local $\ = "\n"; local $, = "\n"; my ($kw) = $dbh->get_info($GetInfoType{SQL_KEYWORDS}); if ($kw) { print "\nmy \@Keywords = qw(\n"; print sort split /,/, $kw; print ");\n\n"; print "sub sql_keywords {\n"; print q% return join ',', @Keywords;%; print "\n}\n\n"; $kw_map = 1; } } print <<'PERL'; sub sql_data_source_name { my $dbh = shift; return "dbi:$sql_driver:" . $dbh->{Name}; } sub sql_user_name { my $dbh = shift; # CURRENT_USER is a non-standard attribute, probably undef # Username is a standard DBI attribute return $dbh->{CURRENT_USER} || $dbh->{Username}; } PERL print "\nour \%info = (\n"; foreach my $key (sort keys %GetInfoType) { my $num = $GetInfoType{$key}; my $val = eval { $dbh->get_info($num); }; if ($key eq 'SQL_DATA_SOURCE_NAME') { $val = '\&sql_data_source_name'; } elsif ($key eq 'SQL_KEYWORDS') { $val = ($kw_map) ? '\&sql_keywords' : 'undef'; } elsif ($key eq 'SQL_DRIVER_NAME') { $val = "\$INC{'DBD/$driver.pm'}"; } elsif ($key eq 'SQL_DRIVER_VER') { $val = '$sql_driver_ver'; } elsif ($key eq 'SQL_USER_NAME') { $val = '\&sql_user_name'; } elsif (not defined $val) { $val = 'undef'; } elsif ($val eq '') { $val = "''"; } elsif ($val =~ /\D/) { $val =~ s/\\/\\\\/g; $val =~ s/'/\\'/g; $val = "'$val'"; } printf "%s %5d => %-30s # %s\n", (($val eq 'undef') ? '#' : ' '), $num, "$val,", $key; } print ");\n\n1;\n\n__END__\n"; } =head1 Generating a TypeInfo package for a driver The C function in the DBI::DBD::Metadata module generates on standard output the data needed for a driver's type_info_all method. It also provides default implementations of the type_info_all method for inclusion in the driver's main implementation file. The driver parameter is the name of the driver for which the methods will be generated; for the sake of examples, this will be "Driver". Typically, the dsn parameter will be of the form "dbi:ODBC:odbc_dsn", where the odbc_dsn is a DSN for one of the driver's databases. The user and pass parameters are the other optional connection parameters that will be provided to the DBI connect method. Once you are sure that it is producing reasonably sane data, you should typically redirect the standard output to lib/DBD/Driver/TypeInfo.pm, and then hand edit the result if necessary. Do not forget to update your Makefile.PL and MANIFEST to include this as an extra PM file that should be installed. Please take a critical look at the data returned! ODBC drivers vary dramatically in their quality. The generator assumes that all the values are static and places these values directly in the %info hash. A possible implementation of DBD::Driver::type_info_all() may look like: sub type_info_all { my ($dbh) = @_; require DBD::Driver::TypeInfo; return [ @$DBD::Driver::TypeInfo::type_info_all ]; } Please replace Driver (or "") with the name of your driver. Note that this stub function is generated for you by the write_typeinfo_pm function, but you must manually transfer the code to Driver.pm. =cut # These two are used by fmt_value... my %dbi_inv; my %sql_type_inv; #-DEBUGGING-# #sub print_hash #{ # my ($name, %hash) = @_; # print "Hash: $name\n"; # foreach my $key (keys %hash) # { # print "$key => $hash{$key}\n"; # } #} #-DEBUGGING-# sub inverse_hash { my (%hash) = @_; my (%inv); foreach my $key (keys %hash) { my $val = $hash{$key}; die "Double mapping for key value $val ($inv{$val}, $key)!" if (defined $inv{$val}); $inv{$val} = $key; } return %inv; } sub fmt_value { my ($num, $val) = @_; if (!defined $val) { $val = "undef"; } elsif ($val !~ m/^[-+]?\d+$/) { # All the numbers in type_info_all are integers! # Anything that isn't an integer is a string. # Ensure that no double quotes screw things up. $val =~ s/"/\\"/g if ($val =~ m/"/o); $val = qq{"$val"}; } elsif ($dbi_inv{$num} =~ m/^(SQL_)?DATA_TYPE$/) { # All numeric... $val = $sql_type_inv{$val} if (defined $sql_type_inv{$val}); } return $val; } sub write_typeinfo_pm { my ($dsn, $user, $pass, $driver) = @_ ? @_ : @ARGV; my $dbh = DBI->connect($dsn, $user, $pass, {AutoCommit=>1, RaiseError=>1}); $driver = "" unless defined $driver; print < 0, DATA_TYPE => 1, COLUMN_SIZE => 2, LITERAL_PREFIX => 3, LITERAL_SUFFIX => 4, CREATE_PARAMS => 5, NULLABLE => 6, CASE_SENSITIVE => 7, SEARCHABLE => 8, UNSIGNED_ATTRIBUTE => 9, FIXED_PREC_SCALE => 10, AUTO_UNIQUE_VALUE => 11, LOCAL_TYPE_NAME => 12, MINIMUM_SCALE => 13, MAXIMUM_SCALE => 14, SQL_DATA_TYPE => 15, SQL_DATETIME_SUB => 16, NUM_PREC_RADIX => 17, INTERVAL_PRECISION => 18, ); #-DEBUG-# print_hash("dbi_map", %dbi_map); %dbi_inv = inverse_hash(%dbi_map); #-DEBUG-# print_hash("dbi_inv", %dbi_inv); my $maxlen = 0; foreach my $key (keys %dbi_map) { $maxlen = length($key) if length($key) > $maxlen; } # Print the name/value mapping entry in the type_info_all array; my $fmt = " \%-${maxlen}s => \%2d,\n"; my $numkey = 0; my $maxkey = 0; print " \$type_info_all = [\n {\n"; foreach my $i (sort { $a <=> $b } keys %dbi_inv) { printf($fmt, $dbi_inv{$i}, $i); $numkey++; $maxkey = $i; } print " },\n"; print STDERR "### WARNING - Non-dense set of keys ($numkey keys, $maxkey max key)\n" unless $numkey = $maxkey + 1; my $h = $dbh->type_info_all; my @tia = @$h; my %odbc_map = map { uc $_ => $tia[0]->{$_} } keys %{$tia[0]}; shift @tia; # Remove the mapping reference. my $numtyp = $#tia; #-DEBUG-# print_hash("odbc_map", %odbc_map); # In theory, the key/number mapping sequence for %dbi_map # should be the same as the one from the ODBC driver. However, to # prevent the possibility of mismatches, and to deal with older # missing attributes or unexpected new ones, we chase back through # the %dbi_inv and %odbc_map hashes, generating @dbi_to_odbc # to map our new key number to the old one. # Report if @dbi_to_odbc is not an identity mapping. my @dbi_to_odbc; foreach my $num (sort { $a <=> $b } keys %dbi_inv) { # Find the name in %dbi_inv that matches this index number. my $dbi_key = $dbi_inv{$num}; #-DEBUG-# print "dbi_key = $dbi_key\n"; #-DEBUG-# print "odbc_key = $odbc_map{$dbi_key}\n"; # Find the index in %odbc_map that has this key. $dbi_to_odbc[$num] = (defined $odbc_map{$dbi_key}) ? $odbc_map{$dbi_key} : undef; } # Determine the length of the longest formatted value in each field my @len; for (my $i = 0; $i <= $numtyp; $i++) { my @odbc_val = @{$tia[$i]}; for (my $num = 0; $num <= $maxkey; $num++) { # Find the value of the entry in the @odbc_val array. my $val = (defined $dbi_to_odbc[$num]) ? $odbc_val[$dbi_to_odbc[$num]] : undef; $val = fmt_value($num, $val); #-DEBUG-# print "val = $val\n"; $val = "$val,"; $len[$num] = length($val) if !defined $len[$num] || length($val) > $len[$num]; } } # Generate format strings to left justify each string in maximum field width. my @fmt; for (my $i = 0; $i <= $maxkey; $i++) { $fmt[$i] = "%-$len[$i]s"; #-DEBUG-# print "fmt[$i] = $fmt[$i]\n"; } # Format the data from type_info_all for (my $i = 0; $i <= $numtyp; $i++) { my @odbc_val = @{$tia[$i]}; print " [ "; for (my $num = 0; $num <= $maxkey; $num++) { # Find the value of the entry in the @odbc_val array. my $val = (defined $dbi_to_odbc[$num]) ? $odbc_val[$dbi_to_odbc[$num]] : undef; $val = fmt_value($num, $val); printf $fmt[$num], "$val,"; } print " ],\n"; } print " ];\n\n 1;\n}\n\n__END__\n"; } 1; __END__ =head1 AUTHORS Jonathan Leffler (previously ), Jochen Wiedmann , Steffen Goeldner , and Tim Bunce . =cut perl5/DBI/DBD.pm000044400000367113152462470720007142 0ustar00package DBI::DBD; # vim:ts=8:sw=4 use strict; use vars qw($VERSION); # set $VERSION early so we don't confuse PAUSE/CPAN etc # don't use Revision here because that's not in svn:keywords so that the # examples that use it below won't be messed up $VERSION = "12.015129"; # $Id: DBD.pm 15128 2012-02-04 20:51:39Z Tim $ # # Copyright (c) 1997-2006 Jonathan Leffler, Jochen Wiedmann, Steffen # Goeldner and Tim Bunce # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. =head1 NAME DBI::DBD - Perl DBI Database Driver Writer's Guide =head1 SYNOPSIS perldoc DBI::DBD =head2 Version and volatility This document is I a minimal draft which is in need of further work. Please read the B documentation first and fully. Then look at the implementation of some high-profile and regularly maintained drivers like DBD::Oracle, DBD::ODBC, DBD::Pg etc. (Those are no no particular order.) Then reread the B specification and the code of those drivers again as you're reading this. It'll help. Where this document and the driver code differ it's likely that the driver code is more correct, especially if multiple drivers do the same thing. This document is a patchwork of contributions from various authors. More contributions (preferably as patches) are very welcome. =head1 DESCRIPTION This document is primarily intended to help people writing new database drivers for the Perl Database Interface (Perl DBI). It may also help others interested in discovering why the internals of a B driver are written the way they are. This is a guide. Few (if any) of the statements in it are completely authoritative under all possible circumstances. This means you will need to use judgement in applying the guidelines in this document. If in I doubt at all, please do contact the I mailing list (details given below) where Tim Bunce and other driver authors can help. =head1 CREATING A NEW DRIVER The first rule for creating a new database driver for the Perl DBI is very simple: B There is usually a driver already available for the database you want to use, almost regardless of which database you choose. Very often, the database will provide an ODBC driver interface, so you can often use B to access the database. This is typically less convenient on a Unix box than on a Microsoft Windows box, but there are numerous options for ODBC driver managers on Unix too, and very often the ODBC driver is provided by the database supplier. Before deciding that you need to write a driver, do your homework to ensure that you are not wasting your energies. [As of December 2002, the consensus is that if you need an ODBC driver manager on Unix, then the unixODBC driver (available from L) is the way to go.] The second rule for creating a new database driver for the Perl DBI is also very simple: B Nevertheless, there are occasions when it is necessary to write a new driver, often to use a proprietary language or API to access the database more swiftly, or more comprehensively, than an ODBC driver can. Then you should read this document very carefully, but with a suitably sceptical eye. If there is something in here that does not make any sense, question it. You might be right that the information is bogus, but don't come to that conclusion too quickly. =head2 URLs and mailing lists The primary web-site for locating B software and information is http://dbi.perl.org/ There are two main and one auxiliary mailing lists for people working with B. The primary lists are I for general users of B and B drivers, and I mainly for B driver writers (don't join the I list unless you have a good reason). The auxiliary list is I for announcing new releases of B or B drivers. You can join these lists by accessing the web-site L. The lists are closed so you cannot send email to any of the lists unless you join the list first. You should also consider monitoring the I newsgroups, especially I. =head2 The Cheetah book The definitive book on Perl DBI is the Cheetah book, so called because of the picture on the cover. Its proper title is 'I' by Alligator Descartes and Tim Bunce, published by O'Reilly Associates, February 2000, ISBN 1-56592-699-4. Buy it now if you have not already done so, and read it. =head2 Locating drivers Before writing a new driver, it is in your interests to find out whether there already is a driver for your database. If there is such a driver, it would be much easier to make use of it than to write your own! The primary web-site for locating Perl software is L. You should look under the various modules listings for the software you are after. For example: http://search.cpan.org/modlist/Database_Interfaces Follow the B and B links at the top to see those subsets. See the B docs for information on B web sites and mailing lists. =head2 Registering a new driver Before going through any official registration process, you will need to establish that there is no driver already in the works. You'll do that by asking the B mailing lists whether there is such a driver available, or whether anybody is working on one. When you get the go ahead, you will need to establish the name of the driver and a prefix for the driver. Typically, the name is based on the name of the database software it uses, and the prefix is a contraction of that. Hence, B has the name I and the prefix 'I'. The prefix must be lowercase and contain no underscores other than the one at the end. This information will be recorded in the B module. Apart from documentation purposes, registration is a prerequisite for L. If you are writing a driver which will not be distributed on CPAN, then you should choose a prefix beginning with 'I', to avoid potential prefix collisions with drivers registered in the future. Thus, if you wrote a non-CPAN distributed driver called B, the prefix might be 'I'. This document assumes you are writing a driver called B, and that the prefix 'I' is assigned to the driver. =head2 Two styles of database driver There are two distinct styles of database driver that can be written to work with the Perl DBI. Your driver can be written in pure Perl, requiring no C compiler. When feasible, this is the best solution, but most databases are not written in such a way that this can be done. Some examples of pure Perl drivers are B and B. Alternatively, and most commonly, your driver will need to use some C code to gain access to the database. This will be classified as a C/XS driver. =head2 What code will you write? There are a number of files that need to be written for either a pure Perl driver or a C/XS driver. There are no extra files needed only by a pure Perl driver, but there are several extra files needed only by a C/XS driver. =head3 Files common to pure Perl and C/XS drivers Assuming that your driver is called B, these files are: =over 4 =item * F =item * F =item * F =item * F =item * F =item * F =item * F =item * F =back The first four files are mandatory. F is used to control how the driver is built and installed. The F file tells people who download the file about how to build the module and any prerequisite software that must be installed. The F file is used by the standard Perl module distribution mechanism. It lists all the source files that need to be distributed with your module. F is what is loaded by the B code; it contains the methods peculiar to your driver. Although the F file is not B you are advised to create one. Of particular importance are the I and I attributes which newer CPAN modules understand. You use these to tell the CPAN module (and CPANPLUS) that your build and configure mechanisms require DBI. The best reference for META.yml (at the time of writing) is L. You can find a reasonable example of a F in DBD::ODBC. The F file allows you to specify other Perl modules on which yours depends in a format that allows someone to type a simple command and ensure that all the pre-requisites are in place as well as building your driver. The F file contains (an updated version of) the information that was included - or that would have been included - in the appendices of the Cheetah book as a summary of the abilities of your driver and the associated database. The files in the F subdirectory are unit tests for your driver. You should write your tests as stringently as possible, while taking into account the diversity of installations that you can encounter: =over 4 =item * Your tests should not casually modify operational databases. =item * You should never damage existing tables in a database. =item * You should code your tests to use a constrained name space within the database. For example, the tables (and all other named objects) that are created could all begin with 'I'. =item * At the end of a test run, there should be no testing objects left behind in the database. =item * If you create any databases, you should remove them. =item * If your database supports temporary tables that are automatically removed at the end of a session, then exploit them as often as possible. =item * Try to make your tests independent of each other. If you have a test F that depends upon the successful running of F, people cannot run the single test case F. Further, running F twice in a row is likely to fail (at least, if F modifies the database at all) because the database at the start of the second run is not what you saw at the start of the first run. =item * Document in your F file what you do, and what privileges people need to do it. =item * You can, and probably should, sequence your tests by including a test number before an abbreviated version of the test name; the tests are run in the order in which the names are expanded by shell-style globbing. =item * It is in your interests to ensure that your tests work as widely as possible. =back Many drivers also install sub-modules B for any of a variety of different reasons, such as to support the metadata methods (see the discussion of L below). Such sub-modules are conventionally stored in the directory F. The module itself would usually be in a file F. All such sub-modules should themselves be version stamped (see the discussions far below). =head3 Extra files needed by C/XS drivers The software for a C/XS driver will typically contain at least four extra files that are not relevant to a pure Perl driver. =over 4 =item * F =item * F =item * F =item * F =back The F file is used to generate C code that Perl can call to gain access to the C functions you write that will, in turn, call down onto your database software. The F header is a stylized header that ensures you can access the necessary Perl and B macros, types, and function declarations. The F is used to specify which functions have been implemented by your driver. The F file is where you write the C code that does the real work of translating between Perl-ish data types and what the database expects to use and return. There are some (mainly small, but very important) differences between the contents of F and F for pure Perl and C/XS drivers, so those files are described both in the section on creating a pure Perl driver and in the section on creating a C/XS driver. Obviously, you can add extra source code files to the list. =head2 Requirements on a driver and driver writer To be remotely useful, your driver must be implemented in a format that allows it to be distributed via CPAN, the Comprehensive Perl Archive Network (L and L). Of course, it is easier if you do not have to meet this criterion, but you will not be able to ask for much help if you do not do so, and no-one is likely to want to install your module if they have to learn a new installation mechanism. =head1 CREATING A PURE PERL DRIVER Writing a pure Perl driver is surprisingly simple. However, there are some problems you should be aware of. The best option is of course picking up an existing driver and carefully modifying one method after the other. Also look carefully at B and B. As an example we take a look at the B driver, a driver for accessing plain files as tables, which is part of the B package. The minimal set of files we have to implement are F, F, F and F. =head2 Pure Perl version of Makefile.PL You typically start with writing F, a Makefile generator. The contents of this file are described in detail in the L man pages. It is definitely a good idea if you start reading them. At least you should know about the variables I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I from the L man page: these are used in almost any F. Additionally read the section on I and the descriptions of the I, I and I targets: They will definitely be useful for you. Of special importance for B drivers is the I method from the L man page. For Emacs users, I recommend the I method, which removes Emacs backup files (file names which end with a tilde '~') from lists of files. Now an example, I use the word C wherever you should insert your driver's name: # -*- perl -*- use ExtUtils::MakeMaker; WriteMakefile( dbd_edit_mm_attribs( { 'NAME' => 'DBD::Driver', 'VERSION_FROM' => 'Driver.pm', 'INC' => '', 'dist' => { 'SUFFIX' => '.gz', 'COMPRESS' => 'gzip -9f' }, 'realclean' => { FILES => '*.xsi' }, 'PREREQ_PM' => '1.03', 'CONFIGURE' => sub { eval {require DBI::DBD;}; if ($@) { warn $@; exit 0; } my $dbi_arch_dir = dbd_dbi_arch_dir(); if (exists($opts{INC})) { return {INC => "$opts{INC} -I$dbi_arch_dir"}; } else { return {INC => "-I$dbi_arch_dir"}; } } }, { create_pp_tests => 1}) ); package MY; sub postamble { return main::dbd_postamble(@_); } sub libscan { my ($self, $path) = @_; ($path =~ m/\~$/) ? undef : $path; } Note the calls to C and C. The second hash reference in the call to C (containing C) is optional; you should not use it unless your driver is a pure Perl driver (that is, it does not use C and XS code). Therefore, the call to C is not relevant for C/XS drivers and may be omitted; simply use the (single) hash reference containing NAME etc as the only argument to C. Note that the C code will fail if you do not have a F sub-directory containing at least one test case. I tells MakeMaker that DBI (version 1.03 in this case) is required for this module. This will issue a warning that DBI 1.03 is missing if someone attempts to install your DBD without DBI 1.03. See I below for why this does not work reliably in stopping cpan testers failing your module if DBI is not installed. I is a subroutine called by MakeMaker during C. By putting the C in this section we can attempt to load DBI::DBD but if it is missing we exit with success. As we exit successfully without creating a Makefile when DBI::DBD is missing cpan testers will not report a failure. This may seem at odds with I but I does not cause C to fail (unless you also specify PREREQ_FATAL which is strongly discouraged by MakeMaker) so C would continue to call C and fail. All drivers must use C or risk running into problems. Note the specification of I; the named file (F) will be scanned for the first line that looks like an assignment to I<$VERSION>, and the subsequent text will be used to determine the version number. Note the commentary in L on the subject of correctly formatted version numbers. If your driver depends upon external software (it usually will), you will need to add code to ensure that your environment is workable before the call to C. If you need to check for the existence of an external library and perhaps modify I to include the paths to where the external library header files are located and you cannot find the library or header files make sure you output a message saying they cannot be found but C (success) B calling C or CPAN testers will fail your module if the external library is not found. A full-fledged I can be quite large (for example, the files for B and B are both over 1000 lines long, and the Informix one uses - and creates - auxiliary modules too). See also L and L. Consider using L in place of I. =head2 README The L file should describe what the driver is for, the pre-requisites for the build process, the actual build process, how to report errors, and who to report them to. Users will find ways of breaking the driver build and test process which you would never even have dreamed to be possible in your worst nightmares. Therefore, you need to write this document defensively, precisely and concisely. As always, use the F from one of the established drivers as a basis for your own; the version in B is worth a look as it has been quite successful in heading off problems. =over 4 =item * Note that users will have versions of Perl and B that are both older and newer than you expected, but this will seldom cause much trouble. When it does, it will be because you are using features of B that are not supported in the version they are using. =item * Note that users will have versions of the database software that are both older and newer than you expected. You will save yourself time in the long run if you can identify the range of versions which have been tested and warn about versions which are not known to be OK. =item * Note that many people trying to install your driver will not be experts in the database software. =item * Note that many people trying to install your driver will not be experts in C or Perl. =back =head2 MANIFEST The F will be used by the Makefile's dist target to build the distribution tar file that is uploaded to CPAN. It should list every file that you want to include in your distribution, one per line. =head2 lib/Bundle/DBD/Driver.pm The CPAN module provides an extremely powerful bundle mechanism that allows you to specify pre-requisites for your driver. The primary pre-requisite is B; you may want or need to add some more. With the bundle set up correctly, the user can type: perl -MCPAN -e 'install Bundle::DBD::Driver' and Perl will download, compile, test and install all the Perl modules needed to build your driver. The prerequisite modules are listed in the C section, with the official name of the module followed by a dash and an informal name or description. =over 4 =item * Listing B as the main pre-requisite simplifies life. =item * Don't forget to list your driver. =item * Note that unless the DBMS is itself a Perl module, you cannot list it as a pre-requisite in this file. =item * You should keep the version of the bundle the same as the version of your driver. =item * You should add configuration management, copyright, and licencing information at the top. =back A suitable skeleton for this file is shown below. package Bundle::DBD::Driver; $VERSION = '0.01'; 1; __END__ =head1 NAME Bundle::DBD::Driver - A bundle to install all DBD::Driver related modules =head1 SYNOPSIS C =head1 CONTENTS Bundle::DBI - Bundle for DBI by TIMB (Tim Bunce) DBD::Driver - DBD::Driver by YOU (Your Name) =head1 DESCRIPTION This bundle includes all the modules used by the Perl Database Interface (DBI) driver for Driver (DBD::Driver), assuming the use of DBI version 1.13 or later, created by Tim Bunce. If you've not previously used the CPAN module to install any bundles, you will be interrogated during its setup phase. But when you've done it once, it remembers what you told it. You could start by running: C =head1 SEE ALSO Bundle::DBI =head1 AUTHOR Your Name EFE =head1 THANKS This bundle was created by ripping off Bundle::libnet created by Graham Barr EFE, and radically simplified with some information from Jochen Wiedmann EFE. The template was then included in the DBI::DBD documentation by Jonathan Leffler EFE. =cut =head2 lib/DBD/Driver/Summary.pm There is no substitute for taking the summary file from a driver that was documented in the Perl book (such as B or B or B, to name but three), and adapting it to describe the facilities available via B when accessing the Driver database. =head2 Pure Perl version of Driver.pm The F file defines the Perl module B for your driver. It will define a package B along with some version information, some variable definitions, and a function C which will have a more or less standard structure. It will also define three sub-packages of B: =over 4 =item DBD::Driver::dr with methods C, C and C; =item DBD::Driver::db with methods such as C; =item DBD::Driver::st with methods such as C and C. =back The F file will also contain the documentation specific to B in the format used by perldoc. In a pure Perl driver, the F file is the core of the implementation. You will need to provide all the key methods needed by B. Now let's take a closer look at an excerpt of F as an example. We ignore things that are common to any module (even non-DBI modules) or really specific to the B package. =head3 The DBD::Driver package =head4 The header package DBD::File; use strict; use vars qw($VERSION $drh); $VERSION = "1.23.00" # Version number of DBD::File This is where the version number of your driver is specified, and is where F looks for this information. Please ensure that any other modules added with your driver are also version stamped so that CPAN does not get confused. It is recommended that you use a two-part (1.23) or three-part (1.23.45) version number. Also consider the CPAN system, which gets confused and considers version 1.10 to precede version 1.9, so that using a raw CVS, RCS or SCCS version number is probably not appropriate (despite being very common). For Subversion you could use: $VERSION = "12.012346"; (use lots of leading zeros on the second portion so if you move the code to a shared repository like svn.perl.org the much larger revision numbers won't cause a problem, at least not for a few years). For RCS or CVS you can use: $VERSION = "11.22"; which pads out the fractional part with leading zeros so all is well (so long as you don't go past x.99) $drh = undef; # holds driver handle once initialized This is where the driver handle will be stored, once created. Note that you may assume there is only one handle for your driver. =head4 The driver constructor The C method is the driver handle constructor. Note that the C method is in the B package, not in one of the sub-packages B, B, or B. sub driver { return $drh if $drh; # already created - return same one my ($class, $attr) = @_; $class .= "::dr"; DBD::Driver::db->install_method('drv_example_dbh_method'); DBD::Driver::st->install_method('drv_example_sth_method'); # not a 'my' since we use it above to prevent multiple drivers $drh = DBI::_new_drh($class, { 'Name' => 'File', 'Version' => $VERSION, 'Attribution' => 'DBD::File by Jochen Wiedmann', }) or return undef; return $drh; } This is a reasonable example of how B implements its handles. There are three kinds: B (typically stored in I<$drh>; from now on called I or I<$drh>), B (from now on called I or I<$dbh>) and B (from now on called I or I<$sth>). The prototype of C is $drh = DBI::_new_drh($class, $public_attrs, $private_attrs); with the following arguments: =over 4 =item I<$class> is typically the class for your driver, (for example, "DBD::File::dr"), passed as the first argument to the C method. =item I<$public_attrs> is a hash ref to attributes like I, I, and I. These are processed and used by B. You had better not make any assumptions about them nor should you add private attributes here. =item I<$private_attrs> This is another (optional) hash ref with your private attributes. B will store them and otherwise leave them alone. =back The C method and the C method both return C for failure (in which case you must look at I<$DBI::err> and I<$DBI::errstr> for the failure information, because you have no driver handle to use). =head4 Using install_method() to expose driver-private methods DBD::Foo::db->install_method($method_name, \%attr); Installs the driver-private method named by $method_name into the DBI method dispatcher so it can be called directly, avoiding the need to use the func() method. It is called as a static method on the driver class to which the method belongs. The method name must begin with the corresponding registered driver-private prefix. For example, for DBD::Oracle $method_name must being with 'C', and for DBD::AnyData it must begin with 'C'. The C<\%attr> attributes can be used to provide fine control over how the DBI dispatcher handles the dispatching of the method. However it's undocumented at the moment. See the IMA_* #define's in DBI.xs and the O=>0x000x values in the initialization of %DBI::DBI_methods in DBI.pm. (Volunteers to polish up and document the interface are very welcome to get in touch via dbi-dev@perl.org). Methods installed using install_method default to the standard error handling behaviour for DBI methods: clearing err and errstr before calling the method, and checking for errors to trigger RaiseError etc. on return. This differs from the default behaviour of func(). Note for driver authors: The DBD::Foo::xx->install_method call won't work until the class-hierarchy has been setup. Normally the DBI looks after that just after the driver is loaded. This means install_method() can't be called at the time the driver is loaded unless the class-hierarchy is set up first. The way to do that is to call the setup_driver() method: DBI->setup_driver('DBD::Foo'); before using install_method(). =head4 The CLONE special subroutine Also needed here, in the B package, is a C method that will be called by perl when an interpreter is cloned. All your C method needs to do, currently, is clear the cached I<$drh> so the new interpreter won't start using the cached I<$drh> from the old interpreter: sub CLONE { undef $drh; } See L for details. =head3 The DBD::Driver::dr package The next lines of code look as follows: package DBD::Driver::dr; # ====== DRIVER ====== $DBD::Driver::dr::imp_data_size = 0; Note that no I<@ISA> is needed here, or for the other B classes, because the B takes care of that for you when the driver is loaded. *FIX ME* Explain what the imp_data_size is, so that implementors aren't practicing cargo-cult programming. =head4 The database handle constructor The database handle constructor is the driver's (hence the changed namespace) C method: sub connect { my ($drh, $dr_dsn, $user, $auth, $attr) = @_; # Some database specific verifications, default settings # and the like can go here. This should only include # syntax checks or similar stuff where it's legal to # 'die' in case of errors. # For example, many database packages requires specific # environment variables to be set; this could be where you # validate that they are set, or default them if they are not set. my $driver_prefix = "drv_"; # the assigned prefix for this driver # Process attributes from the DSN; we assume ODBC syntax # here, that is, the DSN looks like var1=val1;...;varN=valN foreach my $var ( split /;/, $dr_dsn ) { my ($attr_name, $attr_value) = split '=', $var, 2; return $drh->set_err($DBI::stderr, "Can't parse DSN part '$var'") unless defined $attr_value; # add driver prefix to attribute name if it doesn't have it already $attr_name = $driver_prefix.$attr_name unless $attr_name =~ /^$driver_prefix/o; # Store attribute into %$attr, replacing any existing value. # The DBI will STORE() these into $dbh after we've connected $attr->{$attr_name} = $attr_value; } # Get the attributes we'll use to connect. # We use delete here because these no need to STORE them my $db = delete $attr->{drv_database} || delete $attr->{drv_db} or return $drh->set_err($DBI::stderr, "No database name given in DSN '$dr_dsn'"); my $host = delete $attr->{drv_host} || 'localhost'; my $port = delete $attr->{drv_port} || 123456; # Assume you can attach to your database via drv_connect: my $connection = drv_connect($db, $host, $port, $user, $auth) or return $drh->set_err($DBI::stderr, "Can't connect to $dr_dsn: ..."); # create a 'blank' dbh (call superclass constructor) my ($outer, $dbh) = DBI::_new_dbh($drh, { Name => $dr_dsn }); $dbh->STORE('Active', 1 ); $dbh->{drv_connection} = $connection; return $outer; } This is mostly the same as in the I above. The arguments are described in L. The constructor C is called, returning a database handle. The constructor's prototype is: ($outer, $inner) = DBI::_new_dbh($drh, $public_attr, $private_attr); with similar arguments to those in the I, except that the I<$class> is replaced by I<$drh>. The I attribute is a standard B attribute (see L). In scalar context, only the outer handle is returned. Note the use of the C method for setting the I attributes. That's because within the driver code, the handle object you have is the 'inner' handle of a tied hash, not the outer handle that the users of your driver have. Because you have the inner handle, tie magic doesn't get invoked when you get or set values in the hash. This is often very handy for speed when you want to get or set simple non-special driver-specific attributes. However, some attribute values, such as those handled by the B like I, don't actually exist in the hash and must be read via C<$h-EFETCH($attrib)> and set via C<$h-ESTORE($attrib, $value)>. If in any doubt, use these methods. =head4 The data_sources() method The C method must populate and return a list of valid data sources, prefixed with the "I" incantation that allows them to be used in the first argument of the Cconnect()> method. An example of this might be scanning the F<$HOME/.odbcini> file on Unix for ODBC data sources (DSNs). As a trivial example, consider a fixed list of data sources: sub data_sources { my($drh, $attr) = @_; my(@list) = (); # You need more sophisticated code than this to set @list... push @list, "dbi:Driver:abc"; push @list, "dbi:Driver:def"; push @list, "dbi:Driver:ghi"; # End of code to set @list return @list; } =head4 The disconnect_all() method If you need to release any resources when the driver is unloaded, you can provide a disconnect_all method. =head4 Other driver handle methods If you need any other driver handle methods, they can follow here. =head4 Error handling It is quite likely that something fails in the connect method. With B for example, you might catch an error when setting the current directory to something not existent by using the (driver-specific) I attribute. To report an error, you use the C method: $h->set_err($err, $errmsg, $state); This will ensure that the error is recorded correctly and that I and I etc are handled correctly. Typically you'll always use the method instance, aka your method's first argument. As C always returns C your error handling code can usually be simplified to something like this: return $h->set_err($err, $errmsg, $state) if ...; =head3 The DBD::Driver::db package package DBD::Driver::db; # ====== DATABASE ====== $DBD::Driver::db::imp_data_size = 0; =head4 The statement handle constructor There's nothing much new in the statement handle constructor, which is the C method: sub prepare { my ($dbh, $statement, @attribs) = @_; # create a 'blank' sth my ($outer, $sth) = DBI::_new_sth($dbh, { Statement => $statement }); $sth->STORE('NUM_OF_PARAMS', ($statement =~ tr/?//)); $sth->{drv_params} = []; return $outer; } This is still the same -- check the arguments and call the super class constructor C. Again, in scalar context, only the outer handle is returned. The I attribute should be cached as shown. Note the prefix I in the attribute names: it is required that all your private attributes use a lowercase prefix unique to your driver. As mentioned earlier in this document, the B contains a registry of known driver prefixes and may one day warn about unknown attributes that don't have a registered prefix. Note that we parse the statement here in order to set the attribute I. The technique illustrated is not very reliable; it can be confused by question marks appearing in quoted strings, delimited identifiers or in SQL comments that are part of the SQL statement. We could set I in the C method instead because the B specification explicitly allows a driver to defer this, but then the user could not call C. =head4 Transaction handling Pure Perl drivers will rarely support transactions. Thus your C and C methods will typically be quite simple: sub commit { my ($dbh) = @_; if ($dbh->FETCH('Warn')) { warn("Commit ineffective while AutoCommit is on"); } 0; } sub rollback { my ($dbh) = @_; if ($dbh->FETCH('Warn')) { warn("Rollback ineffective while AutoCommit is on"); } 0; } Or even simpler, just use the default methods provided by the B that do nothing except return C. The B's default C method can be used by inheritance. =head4 The STORE() and FETCH() methods These methods (that we have already used, see above) are called for you, whenever the user does a: $dbh->{$attr} = $val; or, respectively, $val = $dbh->{$attr}; See L for details on tied hash refs to understand why these methods are required. The B will handle most attributes for you, in particular attributes like I or I. All you have to do is handle your driver's private attributes and any attributes, like I and I, that the B can't handle for you. A good example might look like this: sub STORE { my ($dbh, $attr, $val) = @_; if ($attr eq 'AutoCommit') { # AutoCommit is currently the only standard attribute we have # to consider. if (!$val) { die "Can't disable AutoCommit"; } return 1; } if ($attr =~ m/^drv_/) { # Handle only our private attributes here # Note that we could trigger arbitrary actions. # Ideally we should warn about unknown attributes. $dbh->{$attr} = $val; # Yes, we are allowed to do this, return 1; # but only for our private attributes } # Else pass up to DBI to handle for us $dbh->SUPER::STORE($attr, $val); } sub FETCH { my ($dbh, $attr) = @_; if ($attr eq 'AutoCommit') { return 1; } if ($attr =~ m/^drv_/) { # Handle only our private attributes here # Note that we could trigger arbitrary actions. return $dbh->{$attr}; # Yes, we are allowed to do this, # but only for our private attributes } # Else pass up to DBI to handle $dbh->SUPER::FETCH($attr); } The B will actually store and fetch driver-specific attributes (with all lowercase names) without warning or error, so there's actually no need to implement driver-specific any code in your C and C methods unless you need extra logic/checks, beyond getting or setting the value. Unless your driver documentation indicates otherwise, the return value of the C method is unspecified and the caller shouldn't use that value. =head4 Other database handle methods As with the driver package, other database handle methods may follow here. In particular you should consider a (possibly empty) C method and possibly a C method if B's default isn't correct for you. You may also need the C and C methods, as described elsewhere in this document. Where reasonable use C<$h-ESUPER::foo()> to call the B's method in some or all cases and just wrap your custom behavior around that. If you want to use private trace flags you'll probably want to be able to set them by name. To do that you'll need to define a C method (note that's "parse_trace_flag", singular, not "parse_trace_flags", plural). sub parse_trace_flag { my ($h, $name) = @_; return 0x01000000 if $name eq 'foo'; return 0x02000000 if $name eq 'bar'; return 0x04000000 if $name eq 'baz'; return 0x08000000 if $name eq 'boo'; return 0x10000000 if $name eq 'bop'; return $h->SUPER::parse_trace_flag($name); } All private flag names must be lowercase, and all private flags must be in the top 8 of the 32 bits. =head3 The DBD::Driver::st package This package follows the same pattern the others do: package DBD::Driver::st; $DBD::Driver::st::imp_data_size = 0; =head4 The execute() and bind_param() methods This is perhaps the most difficult method because we have to consider parameter bindings here. In addition to that, there are a number of statement attributes which must be set for inherited B methods to function correctly (see L below). We present a simplified implementation by using the I attribute from above: sub bind_param { my ($sth, $pNum, $val, $attr) = @_; my $type = (ref $attr) ? $attr->{TYPE} : $attr; if ($type) { my $dbh = $sth->{Database}; $val = $dbh->quote($sth, $type); } my $params = $sth->{drv_params}; $params->[$pNum-1] = $val; 1; } sub execute { my ($sth, @bind_values) = @_; # start of by finishing any previous execution if still active $sth->finish if $sth->FETCH('Active'); my $params = (@bind_values) ? \@bind_values : $sth->{drv_params}; my $numParam = $sth->FETCH('NUM_OF_PARAMS'); return $sth->set_err($DBI::stderr, "Wrong number of parameters") if @$params != $numParam; my $statement = $sth->{'Statement'}; for (my $i = 0; $i < $numParam; $i++) { $statement =~ s/?/$params->[$i]/; # XXX doesn't deal with quoting etc! } # Do anything ... we assume that an array ref of rows is # created and store it: $sth->{'drv_data'} = $data; $sth->{'drv_rows'} = @$data; # number of rows $sth->STORE('NUM_OF_FIELDS') = $numFields; $sth->{Active} = 1; @$data || '0E0'; } There are a number of things you should note here. We initialize the I and I attributes here, because they are essential for C to work. We use attribute C<$sth-E{Statement}> which we created within C. The attribute C<$sth-E{Database}>, which is nothing else than the I, was automatically created by B. Finally, note that (as specified in the B specification) we return the string C<'0E0'> instead of the number 0, so that the result tests true but equal to zero. $sth->execute() or die $sth->errstr; =head4 The execute_array(), execute_for_fetch() and bind_param_array() methods In general, DBD's only need to implement C and C. DBI's default C will invoke the DBD's C as needed. The following sequence describes the interaction between DBI C and a DBD's C: =over =item 1 App calls C<$sth-Eexecute_array(\%attrs, @array_of_arrays)> =item 2 If C<@array_of_arrays> was specified, DBI processes C<@array_of_arrays> by calling DBD's C. Alternately, App may have directly called C =item 3 DBD validates and binds each array =item 4 DBI retrieves the validated param arrays from DBD's ParamArray attribute =item 5 DBI calls DBD's C, where C<&$fetch_tuple_sub> is a closure to iterate over the returned ParamArray values, and C<\@tuple_status> is an array to receive the disposition status of each tuple. =item 6 DBD iteratively calls C<&$fetch_tuple_sub> to retrieve parameter tuples to be added to its bulk database operation/request. =item 7 when DBD reaches the limit of tuples it can handle in a single database operation/request, or the C<&$fetch_tuple_sub> indicates no more tuples by returning undef, the DBD executes the bulk operation, and reports the disposition of each tuple in \@tuple_status. =item 8 DBD repeats steps 6 and 7 until all tuples are processed. =back E.g., here's the essence of L's execute_for_fetch: while (1) { my @tuple_batch; for (my $i = 0; $i < $batch_size; $i++) { push @tuple_batch, [ @{$fetch_tuple_sub->() || last} ]; } last unless @tuple_batch; my $res = ora_execute_array($sth, \@tuple_batch, scalar(@tuple_batch), $tuple_batch_status); push @$tuple_status, @$tuple_batch_status; } Note that DBI's default execute_array()/execute_for_fetch() implementation requires the use of positional (i.e., '?') placeholders. Drivers which B named placeholders must either emulate positional placeholders (e.g., see L), or must implement their own execute_array()/execute_for_fetch() methods to properly sequence bound parameter arrays. =head4 Fetching data Only one method needs to be written for fetching data, C. The other methods, C, C, etc, as well as the database handle's C methods are part of B, and call C as necessary. sub fetchrow_arrayref { my ($sth) = @_; my $data = $sth->{drv_data}; my $row = shift @$data; if (!$row) { $sth->STORE(Active => 0); # mark as no longer active return undef; } if ($sth->FETCH('ChopBlanks')) { map { $_ =~ s/\s+$//; } @$row; } return $sth->_set_fbav($row); } *fetch = \&fetchrow_arrayref; # required alias for fetchrow_arrayref Note the use of the method C<_set_fbav()> -- this is required so that C and C work. If an error occurs which leaves the I<$sth> in a state where remaining rows can't be fetched then I should be turned off before the method returns. The C method for this driver can be implemented like this: sub rows { shift->{drv_rows} } because it knows in advance how many rows it has fetched. Alternatively you could delete that method and so fallback to the B's own method which does the right thing based on the number of calls to C<_set_fbav()>. =head4 The more_results method If your driver doesn't support multiple result sets, then don't even implement this method. Otherwise, this method needs to get the statement handle ready to fetch results from the next result set, if there is one. Typically you'd start with: $sth->finish; then you should delete all the attributes from the attribute cache that may no longer be relevant for the new result set: delete $sth->{$_} for qw(NAME TYPE PRECISION SCALE ...); for drivers written in C use: hv_delete((HV*)SvRV(sth), "NAME", 4, G_DISCARD); hv_delete((HV*)SvRV(sth), "NULLABLE", 8, G_DISCARD); hv_delete((HV*)SvRV(sth), "NUM_OF_FIELDS", 13, G_DISCARD); hv_delete((HV*)SvRV(sth), "PRECISION", 9, G_DISCARD); hv_delete((HV*)SvRV(sth), "SCALE", 5, G_DISCARD); hv_delete((HV*)SvRV(sth), "TYPE", 4, G_DISCARD); Don't forget to also delete, or update, any driver-private attributes that may not be correct for the next resultset. The NUM_OF_FIELDS attribute is a special case. It should be set using STORE: $sth->STORE(NUM_OF_FIELDS => 0); /* for DBI <= 1.53 */ $sth->STORE(NUM_OF_FIELDS => $new_value); for drivers written in C use this incantation: /* Adjust NUM_OF_FIELDS - which also adjusts the row buffer size */ DBIc_NUM_FIELDS(imp_sth) = 0; /* for DBI <= 1.53 */ DBIc_STATE(imp_xxh)->set_attr_k(sth, sv_2mortal(newSVpvn("NUM_OF_FIELDS",13)), 0, sv_2mortal(newSViv(mysql_num_fields(imp_sth->result))) ); For DBI versions prior to 1.54 you'll also need to explicitly adjust the number of elements in the row buffer array (C) to match the new result set. Fill any new values with newSV(0) not &sv_undef. Alternatively you could free DBIc_FIELDS_AV(imp_sth) and set it to null, but that would mean bind_columns() wouldn't work across result sets. =head4 Statement attributes The main difference between I and I attributes is, that you should implement a lot of attributes here that are required by the B, such as I, I, I, etc. See L for a complete list. Pay attention to attributes which are marked as read only, such as I. These attributes can only be set the first time a statement is executed. If a statement is prepared, then executed multiple times, warnings may be generated. You can protect against these warnings, and prevent the recalculation of attributes which might be expensive to calculate (such as the I and I attributes): my $storedNumParams = $sth->FETCH('NUM_OF_PARAMS'); if (!defined $storedNumParams or $storedNumFields < 0) { $sth->STORE('NUM_OF_PARAMS') = $numParams; # Set other useful attributes that only need to be set once # for a statement, like $sth->{NAME} and $sth->{TYPE} } One particularly important attribute to set correctly (mentioned in L is I. Many B methods, including C, depend on this attribute. Besides that the C and C methods are mainly the same as above for I's. =head4 Other statement methods A trivial C method to discard stored data, reset any attributes (such as I) and do C<$sth-ESUPER::finish()>. If you've defined a C method in B<::db> you'll also want it in B<::st>, so just alias it in: *parse_trace_flag = \&DBD::foo:db::parse_trace_flag; And perhaps some other methods that are not part of the B specification, in particular to make metadata available. Remember that they must have names that begin with your drivers registered prefix so they can be installed using C. If C is called on a statement handle that's still active (C<$sth-E{Active}> is true) then it should effectively call C. sub DESTROY { my $sth = shift; $sth->finish if $sth->FETCH('Active'); } =head2 Tests The test process should conform as closely as possibly to the Perl standard test harness. In particular, most (all) of the tests should be run in the F sub-directory, and should simply produce an C when run under C. For details on how this is done, see the Camel book and the section in Chapter 7, "The Standard Perl Library" on L. The tests may need to adapt to the type of database which is being used for testing, and to the privileges of the user testing the driver. For example, the B test code has to adapt in a number of places to the type of database to which it is connected as different Informix databases have different capabilities: some of the tests are for databases without transaction logs; others are for databases with a transaction log; some versions of the server have support for blobs, or stored procedures, or user-defined data types, and others do not. When a complete file of tests must be skipped, you can provide a reason in a pseudo-comment: if ($no_transactions_available) { print "1..0 # Skip: No transactions available\n"; exit 0; } Consider downloading the B code and look at the code in F which is used throughout the B tests in the F sub-directory. =head1 CREATING A C/XS DRIVER Please also see the section under L regarding the creation of the F. Creating a new C/XS driver from scratch will always be a daunting task. You can and should greatly simplify your task by taking a good reference driver implementation and modifying that to match the database product for which you are writing a driver. The de facto reference driver has been the one for B written by Tim Bunce, who is also the author of the B package. The B module is a good example of a driver implemented around a C-level API. Nowadays it it seems better to base on B, another driver maintained by Tim and Jeff Urlwin, because it offers a lot of metadata and seems to become the guideline for the future development. (Also as B digs deeper into the Oracle 8 OCI interface it'll get even more hairy than it is now.) The B driver is one driver implemented using embedded SQL instead of a function-based API. B may also be worth a look. =head2 C/XS version of Driver.pm A lot of the code in the F file is very similar to the code for pure Perl modules - see above. However, there are also some subtle (and not so subtle) differences, including: =over 8 =item * The variables I<$DBD::Driver::{dr|db|st}::imp_data_size> are not defined here, but in the XS code, because they declare the size of certain C structures. =item * Some methods are typically moved to the XS code, in particular C, C, C, C and the C and C methods. =item * Other methods are still part of F, but have callbacks to the XS code. =item * If the driver-specific parts of the I structure need to be formally initialized (which does not seem to be a common requirement), then you need to add a call to an appropriate XS function in the driver method of C, and you define the corresponding function in F, and you define the C code in F and the prototype in F. For example, B has such a requirement, and adds the following call after the call to C<_new_drh()> in F: DBD::Informix::dr::driver_init($drh); and the following code in F: # Initialize the DBD::Informix driver data structure void driver_init(drh) SV *drh CODE: ST(0) = dbd_ix_dr_driver_init(drh) ? &sv_yes : &sv_no; and the code in F declares: extern int dbd_ix_dr_driver_init(SV *drh); and the code in F (equivalent to F) defines: /* Formally initialize the DBD::Informix driver structure */ int dbd_ix_dr_driver(SV *drh) { D_imp_drh(drh); imp_drh->n_connections = 0; /* No active connections */ imp_drh->current_connection = 0; /* No current connection */ imp_drh->multipleconnections = (ESQLC_VERSION >= 600) ? True : False; dbd_ix_link_newhead(&imp_drh->head); /* Empty linked list of connections */ return 1; } B has a similar requirement but gets around it by checking whether the private data part of the driver handle is all zeroed out, rather than add extra functions. =back Now let's take a closer look at an excerpt from F (revised heavily to remove idiosyncrasies) as an example, ignoring things that were already discussed for pure Perl drivers. =head3 The connect method The connect method is the database handle constructor. You could write either of two versions of this method: either one which takes connection attributes (new code) and one which ignores them (old code only). If you ignore the connection attributes, then you omit all mention of the I<$auth> variable (which is a reference to a hash of attributes), and the XS system manages the differences for you. sub connect { my ($drh, $dbname, $user, $auth, $attr) = @_; # Some database specific verifications, default settings # and the like following here. This should only include # syntax checks or similar stuff where it's legal to # 'die' in case of errors. my $dbh = DBI::_new_dbh($drh, { 'Name' => $dbname, }) or return undef; # Call the driver-specific function _login in Driver.xs file which # calls the DBMS-specific function(s) to connect to the database, # and populate internal handle data. DBD::Driver::db::_login($dbh, $dbname, $user, $auth, $attr) or return undef; $dbh; } This is mostly the same as in the pure Perl case, the exception being the use of the private C<_login()> callback, which is the function that will really connect to the database. It is implemented in F (you should not implement it) and calls C or C from F. See below for details. If your driver has driver-specific attributes which may be passed in the connect method and hence end up in C<$attr> in C then it is best to delete any you process so DBI does not send them again via STORE after connect. You can do this in C like this: DBD_ATTRIB_DELETE(attr, "my_attribute_name", strlen("my_attribute_name")); However, prior to DBI subversion version 11605 (and fixed post 1.607) DBD_ATTRIB_DELETE segfaulted so if you cannot guarantee the DBI version will be post 1.607 you need to use: hv_delete((HV*)SvRV(attr), "my_attribute_name", strlen("my_attribute_name"), G_DISCARD); *FIX ME* Discuss removing attributes in Perl code. =head3 The disconnect_all method *FIX ME* T.B.S =head3 The data_sources method If your C method can be implemented in pure Perl, then do so because it is easier than doing it in XS code (see the section above for pure Perl drivers). If your C method must call onto compiled functions, then you will need to define I in your F file, which will trigger F (in B v1.33 or greater) to generate the XS code that calls your actual C function (see the discussion below for details) and you do not code anything in F to handle it. =head3 The prepare method The prepare method is the statement handle constructor, and most of it is not new. Like the C method, it now has a C callback: package DBD::Driver::db; # ====== DATABASE ====== use strict; sub prepare { my ($dbh, $statement, $attribs) = @_; # create a 'blank' sth my $sth = DBI::_new_sth($dbh, { 'Statement' => $statement, }) or return undef; # Call the driver-specific function _prepare in Driver.xs file # which calls the DBMS-specific function(s) to prepare a statement # and populate internal handle data. DBD::Driver::st::_prepare($sth, $statement, $attribs) or return undef; $sth; } =head3 The execute method *FIX ME* T.B.S =head3 The fetchrow_arrayref method *FIX ME* T.B.S =head3 Other methods? *FIX ME* T.B.S =head2 Driver.xs F should look something like this: #include "Driver.h" DBISTATE_DECLARE; INCLUDE: Driver.xsi MODULE = DBD::Driver PACKAGE = DBD::Driver::dr /* Non-standard drh XS methods following here, if any. */ /* If none (the usual case), omit the MODULE line above too. */ MODULE = DBD::Driver PACKAGE = DBD::Driver::db /* Non-standard dbh XS methods following here, if any. */ /* Currently this includes things like _list_tables from */ /* DBD::mSQL and DBD::mysql. */ MODULE = DBD::Driver PACKAGE = DBD::Driver::st /* Non-standard sth XS methods following here, if any. */ /* In particular this includes things like _list_fields from */ /* DBD::mSQL and DBD::mysql for accessing metadata. */ Note especially the include of F here: B inserts stub functions for almost all private methods here which will typically do much work for you. Wherever you really have to implement something, it will call a private function in F, and this is what you have to implement. You need to set up an extra routine if your driver needs to export constants of its own, analogous to the SQL types available when you say: use DBI qw(:sql_types); *FIX ME* T.B.S =head2 Driver.h F is very simple and the operational contents should look like this: #ifndef DRIVER_H_INCLUDED #define DRIVER_H_INCLUDED #define NEED_DBIXS_VERSION 93 /* 93 for DBI versions 1.00 to 1.51+ */ #define PERL_NO_GET_CONTEXT /* if used require DBI 1.51+ */ #include /* installed by the DBI module */ #include "dbdimp.h" #include "dbivport.h" /* see below */ #include /* installed by the DBI module */ #endif /* DRIVER_H_INCLUDED */ The F header defines most of the interesting information that the writer of a driver needs. The file F header provides prototype declarations for the C functions that you might decide to implement. Note that you should normally only define one of C, C or C unless you are intent on supporting really old versions of B (prior to B 1.06) as well as modern versions. The only standard, B-mandated functions that you need write are those specified in the F header. You might also add extra driver-specific functions in F. The F file should be I from the latest B release into your distribution each time you modify your driver. Its job is to allow you to enhance your code to work with the latest B API while still allowing your driver to be compiled and used with older versions of the B (for example, when the C macro was added to B 1.41, an emulation of it was added to F). This makes users happy and your life easier. Always read the notes in F to check for any limitations in the emulation that you should be aware of. With B v1.51 or better I recommend that the driver defines I before F is included. This can significantly improve efficiency when running under a thread enabled perl. (Remember that the standard perl in most Linux distributions is built with threads enabled. So is ActiveState perl for Windows, and perl built for Apache mod_perl2.) If you do this there are some things to keep in mind: =over 4 =item * If I is defined, then every function that calls the Perl API will need to start out with a C declaration. =item * You'll know which functions need this, because the C compiler will complain that the undeclared identifier C is used if I the perl you are using to develop and test your driver has threads enabled. =item * If you don't remember to test with a thread-enabled perl before making a release it's likely that you'll get failure reports from users who are. =item * For driver private functions it is possible to gain even more efficiency by replacing C with C prepended to the parameter list and then C prepended to the argument list where the function is called. =back See L for additional information about I. =head2 Implementation header dbdimp.h This header file has two jobs: First it defines data structures for your private part of the handles. Note that the DBI provides many common fields for you. For example the statement handle (imp_sth) already has a row_count field with an IV type that accessed via the DBIc_ROW_COUNT(imp_sth) macro. Using this is strongly recommended as it's built in to some DBI internals so the DBI can 'just work' in more cases and you'll have less driver-specific code to write. Study DBIXS.h to see what's included with each type of handle. Second it defines macros that rename the generic names like C to database specific names like C. This avoids name clashes and enables use of different drivers when you work with a statically linked perl. It also will have the important task of disabling XS methods that you don't want to implement. Finally, the macros will also be used to select alternate implementations of some functions. For example, the C function is not passed the attribute hash. Since B v1.06, if a C macro is defined (for a function with 6 arguments), it will be used instead with the attribute hash passed as the sixth argument. Since B post v1.607, if a C macro is defined (for a function like dbd_db_login6 but with scalar pointers for the dbname, username and password), it will be used instead. This will allow your login6 function to see if there are any Unicode characters in the dbname. Similarly defining dbd_db_do4_iv is preferred over dbd_db_do4, dbd_st_rows_iv over dbd_st_rows, and dbd_st_execute_iv over dbd_st_execute. The *_iv forms are declared to return the IV type instead of an int. People used to just pick Oracle's F and use the same names, structures and types. I strongly recommend against that. At first glance this saves time, but your implementation will be less readable. It was just hell when I had to separate B specific parts, Oracle specific parts, mSQL specific parts and mysql specific parts in B's I and I. (B was a port of B which was based on B.) [Seconded, based on the experience taking B apart, even though the version inherited in 1996 was only based on B.] This part of the driver is I. Rewrite it from scratch, so it will be clean and short: in other words, a better piece of code. (Of course keep an eye on other people's work.) struct imp_drh_st { dbih_drc_t com; /* MUST be first element in structure */ /* Insert your driver handle attributes here */ }; struct imp_dbh_st { dbih_dbc_t com; /* MUST be first element in structure */ /* Insert your database handle attributes here */ }; struct imp_sth_st { dbih_stc_t com; /* MUST be first element in structure */ /* Insert your statement handle attributes here */ }; /* Rename functions for avoiding name clashes; prototypes are */ /* in dbd_xsh.h */ #define dbd_init drv_dr_init #define dbd_db_login6_sv drv_db_login_sv #define dbd_db_do drv_db_do ... many more here ... These structures implement your private part of the handles. You I to use the name C and the first field I be of type I and I be called C. You should never access these fields directly, except by using the I macros below. =head2 Implementation source dbdimp.c Conventionally, F is the main implementation file (but B calls the file F). This section includes a short note on each function that is used in the F template and thus I to be implemented. Of course, you will probably also need to implement other support functions, which should usually be file static if they are placed in F. If they are placed in other files, you need to list those files in F (and F) to handle them correctly. It is wise to adhere to a namespace convention for your functions to avoid conflicts. For example, for a driver with prefix I, you might call externally visible functions I. You should also avoid non-constant global variables as much as possible to improve the support for threading. Since Perl requires support for function prototypes (ANSI or ISO or Standard C), you should write your code using function prototypes too. It is possible to use either the unmapped names such as C or the mapped names such as C in the F file. B uses the mapped names which makes it easier to identify where to look for linkage problems at runtime (which will report errors using the mapped names). Most other drivers, and in particular B, use the unmapped names in the source code which makes it a little easier to compare code between drivers and eases discussions on the I mailing list. The majority of the code fragments here will use the unmapped names. Ultimately, you should provide implementations for most of the functions listed in the F header. The exceptions are optional functions (such as C) and those functions with alternative signatures, such as C, C and I. Then you should only implement one of the alternatives, and generally the newer one of the alternatives. =head3 The dbd_init method #include "Driver.h" DBISTATE_DECLARE; void dbd_init(dbistate_t* dbistate) { DBISTATE_INIT; /* Initialize the DBI macros */ } The C function will be called when your driver is first loaded; the bootstrap command in C triggers this, and the call is generated in the I section of F. These statements are needed to allow your driver to use the B macros. They will include your private header file F in turn. Note that I requires the name of the argument to C to be called C. =head3 The dbd_drv_error method You need a function to record errors so B can access them properly. You can call it whatever you like, but we'll call it C here. The argument list depends on your database software; different systems provide different ways to get at error information. static void dbd_drv_error(SV *h, int rc, const char *what) { Note that I is a generic handle, may it be a driver handle, a database or a statement handle. D_imp_xxh(h); This macro will declare and initialize a variable I with a pointer to your private handle pointer. You may cast this to to I, I or I. To record the error correctly, equivalent to the C method, use one of the C or C macros, which were added in B 1.41: DBIh_SET_ERR_SV(h, imp_xxh, err, errstr, state, method); DBIh_SET_ERR_CHAR(h, imp_xxh, err_c, err_i, errstr, state, method); For C the I, I, I, and I parameters are C (use &sv_undef instead of NULL). For C the I, I, I, I parameters are C. The I parameter is an C that's used instead of I if I is C. The I parameter can be ignored. The C macro is usually the simplest to use when you just have an integer error code and an error message string: DBIh_SET_ERR_CHAR(h, imp_xxh, Nullch, rc, what, Nullch, Nullch); As you can see, any parameters that aren't relevant to you can be C. To make drivers compatible with B < 1.41 you should be using F as described in L above. The (obsolete) macros such as C should be removed from drivers. The names C and C, which were used in previous versions of this document, should be replaced with the C macro. The name C, which was also used in previous versions of this document, should be replaced by C. Your code should not call the C Cstdio.hE> I/O functions; you should use C as shown: if (DBIc_TRACE_LEVEL(imp_xxh) >= 2) PerlIO_printf(DBIc_LOGPIO(imp_xxh), "foobar %s: %s\n", foo, neatsvpv(errstr,0)); That's the first time we see how tracing works within a B driver. Make use of this as often as you can, but don't output anything at a trace level less than 3. Levels 1 and 2 are reserved for the B. You can define up to 8 private trace flags using the top 8 bits of C, that is: C<0xFF000000>. See the C method elsewhere in this document. =head3 The dbd_dr_data_sources method This method is optional; the support for it was added in B v1.33. As noted in the discussion of F, if the data sources can be determined by pure Perl code, do it that way. If, as in B, the information is obtained by a C function call, then you need to define a function that matches the prototype: extern AV *dbd_dr_data_sources(SV *drh, imp_drh_t *imp_drh, SV *attrs); An outline implementation for B follows, assuming that the C function call shown will return up to 100 databases names, with the pointers to each name in the array dbsname and the name strings themselves being stores in dbsarea. AV *dbd_dr_data_sources(SV *drh, imp_drh_t *imp_drh, SV *attr) { int ndbs; int i; char *dbsname[100]; char dbsarea[10000]; AV *av = Nullav; if (sqgetdbs(&ndbs, dbsname, 100, dbsarea, sizeof(dbsarea)) == 0) { av = NewAV(); av_extend(av, (I32)ndbs); sv_2mortal((SV *)av); for (i = 0; i < ndbs; i++) av_store(av, i, newSVpvf("dbi:Informix:%s", dbsname[i])); } return(av); } The actual B implementation has a number of extra lines of code, logs function entry and exit, reports the error from C, and uses C<#define>'d constants for the array sizes. =head3 The dbd_db_login6 method int dbd_db_login6_sv(SV* dbh, imp_dbh_t* imp_dbh, SV* dbname, SV* user, SV* auth, SV *attr); or int dbd_db_login6(SV* dbh, imp_dbh_t* imp_dbh, char* dbname, char* user, char* auth, SV *attr); This function will really connect to the database. The argument I is the database handle. I is the pointer to the handles private data, as is I in C above. The arguments I, I, I and I correspond to the arguments of the driver handle's C method. You will quite often use database specific attributes here, that are specified in the DSN. I recommend you parse the DSN (using Perl) within the C method and pass the segments of the DSN via the attributes parameter through C<_login()> to C. Here's how you fetch them; as an example we use I attribute, which can be up to 12 characters long excluding null terminator: SV** svp; STRLEN len; char* hostname; if ( (svp = DBD_ATTRIB_GET_SVP(attr, "drv_hostname", 12)) && SvTRUE(*svp)) { hostname = SvPV(*svp, len); DBD_ATTRIB_DELETE(attr, "drv_hostname", 12); /* avoid later STORE */ } else { hostname = "localhost"; } If you handle any driver specific attributes in the dbd_db_login6 method you probably want to delete them from C (as above with DBD_ATTRIB_DELETE). If you don't delete your handled attributes DBI will call C for each attribute after the connect/login and this is at best redundant for attributes you have already processed. B hv_delete((HV*)SvRV(attr), key, key_len, G_DISCARD) Note that you can also obtain standard attributes such as I and I from the attributes parameter, using C for integer attributes. If, for example, your database does not support transactions but I is set off (requesting transaction support), then you can emulate a 'failure to connect'. Now you should really connect to the database. In general, if the connection fails, it is best to ensure that all allocated resources are released so that the handle does not need to be destroyed separately. If you are successful (and possibly even if you fail but you have allocated some resources), you should use the following macros: DBIc_IMPSET_on(imp_dbh); This indicates that the driver (implementor) has allocated resources in the I structure and that the implementors private C function should be called when the handle is destroyed. DBIc_ACTIVE_on(imp_dbh); This indicates that the handle has an active connection to the server and that the C function should be called before the handle is destroyed. Note that if you do need to fail, you should report errors via the I or I rather than via I or I because I will be destroyed by the failure, so errors recorded in that handle will not be visible to B, and hence not the user either. Note too, that the function is passed I and I, and there is a macro C which can recover the I from the I. However, there is no B macro to provide you with the I given either the I or the I or the I (and there's no way to recover the I given just the I). This suggests that, despite the above notes about C taking an C, it may be better to have two error routines, one taking I and one taking I instead. With care, you can factor most of the formatting code out so that these are small routines calling a common error formatter. See the code in B 1.05.00 for more information. The C function should return I for success, I otherwise. Drivers implemented long ago may define the five-argument function C instead of C. The missing argument is the attributes. There are ways to work around the missing attributes, but they are ungainly; it is much better to use the 6-argument form. Even later drivers will use C which provides the dbname, username and password as SVs. =head3 The dbd_db_commit and dbd_db_rollback methods int dbd_db_commit(SV *dbh, imp_dbh_t *imp_dbh); int dbd_db_rollback(SV* dbh, imp_dbh_t* imp_dbh); These are used for commit and rollback. They should return I for success, I for error. The arguments I and I are the same as for C above; I will omit describing them in what follows, as they appear always. These functions should return I for success, I otherwise. =head3 The dbd_db_disconnect method This is your private part of the C method. Any I with the I flag on must be disconnected. (Note that you have to set it in C above.) int dbd_db_disconnect(SV* dbh, imp_dbh_t* imp_dbh); The database handle will return I for success, I otherwise. In any case it should do a: DBIc_ACTIVE_off(imp_dbh); before returning so B knows that C was executed. Note that there's nothing to stop a I being I while it still have active children. If your database API reacts badly to trying to use an I in this situation then you'll need to add code like this to all I methods: if (!DBIc_ACTIVE(DBIc_PARENT_COM(imp_sth))) return 0; Alternatively, you can add code to your driver to keep explicit track of the statement handles that exist for each database handle and arrange to destroy those handles before disconnecting from the database. There is code to do this in B. Similar comments apply to the driver handle keeping track of all the database handles. Note that the code which destroys the subordinate handles should only release the associated database resources and mark the handles inactive; it does not attempt to free the actual handle structures. This function should return I for success, I otherwise, but it is not clear what anything can do about a failure. =head3 The dbd_db_discon_all method int dbd_discon_all (SV *drh, imp_drh_t *imp_drh); This function may be called at shutdown time. It should make best-efforts to disconnect all database handles - if possible. Some databases don't support that, in which case you can do nothing but return 'success'. This function should return I for success, I otherwise, but it is not clear what anything can do about a failure. =head3 The dbd_db_destroy method This is your private part of the database handle destructor. Any I with the I flag on must be destroyed, so that you can safely free resources. (Note that you have to set it in C above.) void dbd_db_destroy(SV* dbh, imp_dbh_t* imp_dbh) { DBIc_IMPSET_off(imp_dbh); } The B F code will have called C for you, if the handle is still 'active', before calling C. Before returning the function must switch I to off, so B knows that the destructor was called. A B handle doesn't keep references to its children. But children do keep references to their parents. So a database handle won't be C'd until all its children have been C'd. =head3 The dbd_db_STORE_attrib method This function handles $dbh->{$key} = $value; Its prototype is: int dbd_db_STORE_attrib(SV* dbh, imp_dbh_t* imp_dbh, SV* keysv, SV* valuesv); You do not handle all attributes; on the contrary, you should not handle B attributes here: leave this to B. (There are two exceptions, I and I, which you should care about.) The return value is I if you have handled the attribute or I otherwise. If you are handling an attribute and something fails, you should call C, so B can raise exceptions, if desired. If C returns, however, you have a problem: the user will never know about the error, because he typically will not check C<$dbh-Eerrstr()>. I cannot recommend a general way of going on, if C returns, but there are examples where even the B specification expects that you C. (See the I method in L.) If you have to store attributes, you should either use your private data structure I, the handle hash (via C<(HV*)SvRV(dbh)>), or use the private I. The first is best for internal C values like integers or pointers and where speed is important within the driver. The handle hash is best for values the user may want to get/set via driver-specific attributes. The private I is an additional C attached to the handle. You could think of it as an unnamed handle attribute. It's not normally used. =head3 The dbd_db_FETCH_attrib method This is the counterpart of C, needed for: $value = $dbh->{$key}; Its prototype is: SV* dbd_db_FETCH_attrib(SV* dbh, imp_dbh_t* imp_dbh, SV* keysv); Unlike all previous methods this returns an C with the value. Note that you should normally execute C, if you return a nonconstant value. (Constant values are C<&sv_undef>, C<&sv_no> and C<&sv_yes>.) Note, that B implements a caching algorithm for attribute values. If you think, that an attribute may be fetched, you store it in the I itself: if (cacheit) /* cache value for later DBI 'quick' fetch? */ hv_store((HV*)SvRV(dbh), key, kl, cachesv, 0); =head3 The dbd_st_prepare method This is the private part of the C method. Note that you B really execute the statement here. You may, however, preparse and validate the statement, or do similar things. int dbd_st_prepare(SV* sth, imp_sth_t* imp_sth, char* statement, SV* attribs); A typical, simple, possibility is to do nothing and rely on the perl C code that set the I attribute on the handle. This attribute can then be used by C. If the driver supports placeholders then the I attribute must be set correctly by C: DBIc_NUM_PARAMS(imp_sth) = ... If you can, you should also setup attributes like I, I, etc. here, but B doesn't require that - they can be deferred until execute() is called. However, if you do, document it. In any case you should set the I flag, as you did in C above: DBIc_IMPSET_on(imp_sth); =head3 The dbd_st_execute method This is where a statement will really be executed. int dbd_st_execute(SV* sth, imp_sth_t* imp_sth); C should return -2 for any error, -1 if the number of rows affected is unknown else it should be the number of affected (updated, inserted) rows. Note that you must be aware a statement may be executed repeatedly. Also, you should not expect that C will be called between two executions, so you might need code, like the following, near the start of the function: if (DBIc_ACTIVE(imp_sth)) dbd_st_finish(h, imp_sth); If your driver supports the binding of parameters (it should!), but the database doesn't, you must do it here. This can be done as follows: SV *svp; char* statement = DBD_ATTRIB_GET_PV(h, "Statement", 9, svp, ""); int numParam = DBIc_NUM_PARAMS(imp_sth); int i; for (i = 0; i < numParam; i++) { char* value = dbd_db_get_param(sth, imp_sth, i); /* It is your drivers task to implement dbd_db_get_param, */ /* it must be setup as a counterpart of dbd_bind_ph. */ /* Look for '?' and replace it with 'value'. Difficult */ /* task, note that you may have question marks inside */ /* quotes and comments the like ... :-( */ /* See DBD::mysql for an example. (Don't look too deep into */ /* the example, you will notice where I was lazy ...) */ } The next thing is to really execute the statement. Note that you must set the attributes I, I, etc when the statement is successfully executed if the driver has not already done so: they may be used even before a potential C. In particular you have to tell B the number of fields that the statement has, because it will be used by B internally. Thus the function will typically ends with: if (isSelectStatement) { DBIc_NUM_FIELDS(imp_sth) = numFields; DBIc_ACTIVE_on(imp_sth); } It is important that the I flag only be set for C statement happened. =item * C<$data> is a reference to the data you are providing, given as an array of arrays. =item * C<$names> is a reference an array of column names for the C<$data> you are providing. The number and order should match the number and ordering of the C<$data> columns. =item * C<%attr> is a hash of other standard DBI attributes that you might pass to a prepare statement. Currently only NAME, TYPE, and PRECISION are supported. =back =head1 BUGS Using this module to prepare INSERT-like statements is not currently documented. =head1 AUTHOR AND COPYRIGHT This module is Copyright (c) 2003 Tim Bunce Documentation initially written by Mark Stosberg The DBD::Sponge module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. In particular permission is granted to Tim Bunce for distributing this as a part of the DBI. =head1 SEE ALSO L =cut perl5/DBD/File.pm000044400000117471152462470720007423 0ustar00# -*- perl -*- # # DBD::File - A base class for implementing DBI drivers that # act on plain files # # This module is currently maintained by # # H.Merijn Brand & Jens Rehsack # # The original author is Jochen Wiedmann. # # Copyright (C) 2009-2013 by H.Merijn Brand & Jens Rehsack # Copyright (C) 2004 by Jeff Zucker # Copyright (C) 1998 by Jochen Wiedmann # # All rights reserved. # # You may distribute this module under the terms of either the GNU # General Public License or the Artistic License, as specified in # the Perl README file. require 5.008; use strict; use warnings; use DBI (); package DBD::File; use strict; use warnings; use base qw( DBI::DBD::SqlEngine ); use Carp; use vars qw( @ISA $VERSION $drh ); $VERSION = "0.44"; $drh = undef; # holds driver handle(s) once initialized sub driver ($;$) { my ($class, $attr) = @_; # Drivers typically use a singleton object for the $drh # We use a hash here to have one singleton per subclass. # (Otherwise DBD::CSV and DBD::DBM, for example, would # share the same driver object which would cause problems.) # An alternative would be to not cache the $drh here at all # and require that subclasses do that. Subclasses should do # their own caching, so caching here just provides extra safety. $drh->{$class} and return $drh->{$class}; $attr ||= {}; { no strict "refs"; unless ($attr->{Attribution}) { $class eq "DBD::File" and $attr->{Attribution} = "$class by Jeff Zucker"; $attr->{Attribution} ||= ${$class . "::ATTRIBUTION"} || "oops the author of $class forgot to define this"; } $attr->{Version} ||= ${$class . "::VERSION"}; $attr->{Name} or ($attr->{Name} = $class) =~ s/^DBD\:\://; } $drh->{$class} = $class->SUPER::driver ($attr); # XXX inject DBD::XXX::Statement unless exists return $drh->{$class}; } # driver sub CLONE { undef $drh; } # CLONE # ====== DRIVER ================================================================ package DBD::File::dr; use strict; use warnings; use vars qw( @ISA $imp_data_size ); use Carp; @DBD::File::dr::ISA = qw( DBI::DBD::SqlEngine::dr ); $DBD::File::dr::imp_data_size = 0; sub dsn_quote { my $str = shift; ref $str and return ""; defined $str or return ""; $str =~ s/([;:\\])/\\$1/g; return $str; } # dsn_quote # XXX rewrite using TableConfig ... sub default_table_source { "DBD::File::TableSource::FileSystem" } sub connect { my ($drh, $dbname, $user, $auth, $attr) = @_; # We do not (yet) care about conflicting attributes here # my $dbh = DBI->connect ("dbi:CSV:f_dir=test", undef, undef, { f_dir => "text" }); # will test here that both test and text should exist if (my $attr_hash = (DBI->parse_dsn ($dbname))[3]) { if (defined $attr_hash->{f_dir} && ! -d $attr_hash->{f_dir}) { my $msg = "No such directory '$attr_hash->{f_dir}"; $drh->set_err (2, $msg); $attr_hash->{RaiseError} and croak $msg; return; } } if ($attr and defined $attr->{f_dir} && ! -d $attr->{f_dir}) { my $msg = "No such directory '$attr->{f_dir}"; $drh->set_err (2, $msg); $attr->{RaiseError} and croak $msg; return; } return $drh->SUPER::connect ($dbname, $user, $auth, $attr); } # connect sub disconnect_all { } # disconnect_all sub DESTROY { undef; } # DESTROY # ====== DATABASE ============================================================== package DBD::File::db; use strict; use warnings; use vars qw( @ISA $imp_data_size ); use Carp; require File::Spec; require Cwd; use Scalar::Util qw( refaddr ); # in CORE since 5.7.3 @DBD::File::db::ISA = qw( DBI::DBD::SqlEngine::db ); $DBD::File::db::imp_data_size = 0; sub data_sources { my ($dbh, $attr, @other) = @_; ref ($attr) eq "HASH" or $attr = {}; exists $attr->{f_dir} or $attr->{f_dir} = $dbh->{f_dir}; exists $attr->{f_dir_search} or $attr->{f_dir_search} = $dbh->{f_dir_search}; return $dbh->SUPER::data_sources ($attr, @other); } # data_source sub set_versions { my $dbh = shift; $dbh->{f_version} = $DBD::File::VERSION; return $dbh->SUPER::set_versions (); } # set_versions sub init_valid_attributes { my $dbh = shift; $dbh->{f_valid_attrs} = { f_version => 1, # DBD::File version f_dir => 1, # base directory f_dir_search => 1, # extended search directories f_ext => 1, # file extension f_schema => 1, # schema name f_lock => 1, # Table locking mode f_lockfile => 1, # Table lockfile extension f_encoding => 1, # Encoding of the file f_valid_attrs => 1, # File valid attributes f_readonly_attrs => 1, # File readonly attributes }; $dbh->{f_readonly_attrs} = { f_version => 1, # DBD::File version f_valid_attrs => 1, # File valid attributes f_readonly_attrs => 1, # File readonly attributes }; return $dbh->SUPER::init_valid_attributes (); } # init_valid_attributes sub init_default_attributes { my ($dbh, $phase) = @_; # must be done first, because setting flags implicitly calls $dbdname::db->STORE $dbh->SUPER::init_default_attributes ($phase); # DBI::BD::SqlEngine::dr::connect will detect old-style drivers and # don't call twice unless (defined $phase) { # we have an "old" driver here $phase = defined $dbh->{sql_init_phase}; $phase and $phase = $dbh->{sql_init_phase}; } if (0 == $phase) { # f_ext should not be initialized # f_map is deprecated (but might return) $dbh->{f_dir} = Cwd::abs_path (File::Spec->curdir ()); push @{$dbh->{sql_init_order}{90}}, "f_meta"; # complete derived attributes, if required (my $drv_class = $dbh->{ImplementorClass}) =~ s/::db$//; my $drv_prefix = DBI->driver_prefix ($drv_class); if (exists $dbh->{$drv_prefix . "meta"} and !$dbh->{sql_engine_in_gofer}) { my $attr = $dbh->{$drv_prefix . "meta"}; defined $dbh->{f_valid_attrs}{f_meta} and $dbh->{f_valid_attrs}{f_meta} = 1; $dbh->{f_meta} = $dbh->{$attr}; } } return $dbh; } # init_default_attributes sub validate_FETCH_attr { my ($dbh, $attrib) = @_; $attrib eq "f_meta" and $dbh->{sql_engine_in_gofer} and $attrib = "sql_meta"; return $dbh->SUPER::validate_FETCH_attr ($attrib); } # validate_FETCH_attr sub validate_STORE_attr { my ($dbh, $attrib, $value) = @_; if ($attrib eq "f_dir" && defined $value) { -d $value or return $dbh->set_err ($DBI::stderr, "No such directory '$value'"); File::Spec->file_name_is_absolute ($value) or $value = Cwd::abs_path ($value); } if ($attrib eq "f_ext") { $value eq "" || $value =~ m{^\.\w+(?:/[rR]*)?$} or carp "'$value' doesn't look like a valid file extension attribute\n"; } $attrib eq "f_meta" and $dbh->{sql_engine_in_gofer} and $attrib = "sql_meta"; return $dbh->SUPER::validate_STORE_attr ($attrib, $value); } # validate_STORE_attr sub get_f_versions { my ($dbh, $table) = @_; my $class = $dbh->{ImplementorClass}; $class =~ s/::db$/::Table/; my $dver; my $dtype = "IO::File"; eval { $dver = IO::File->VERSION (); # when we're still alive here, everything went ok - no need to check for $@ $dtype .= " ($dver)"; }; my $f_encoding; if ($table) { my $meta; $table and (undef, $meta) = $class->get_table_meta ($dbh, $table, 1); $meta and $meta->{f_encoding} and $f_encoding = $meta->{f_encoding}; } # if ($table) $f_encoding ||= $dbh->{f_encoding}; $f_encoding and $dtype .= " + " . $f_encoding . " encoding"; return sprintf "%s using %s", $dbh->{f_version}, $dtype; } # get_f_versions # ====== STATEMENT ============================================================= package DBD::File::st; use strict; use warnings; use vars qw( @ISA $imp_data_size ); @DBD::File::st::ISA = qw( DBI::DBD::SqlEngine::st ); $DBD::File::st::imp_data_size = 0; my %supported_attrs = ( TYPE => 1, PRECISION => 1, NULLABLE => 1, ); sub FETCH { my ($sth, $attr) = @_; if ($supported_attrs{$attr}) { my $stmt = $sth->{sql_stmt}; if (exists $sth->{ImplementorClass} && exists $sth->{sql_stmt} && $sth->{sql_stmt}->isa ("SQL::Statement")) { # fill overall_defs unless we know unless (exists $sth->{f_overall_defs} && ref $sth->{f_overall_defs}) { my $types = $sth->{Database}{Types}; unless ($types) { # Fetch types only once per database if (my $t = $sth->{Database}->type_info_all ()) { foreach my $i (1 .. $#$t) { $types->{uc $t->[$i][0]} = $t->[$i][1]; $types->{$t->[$i][1]} ||= uc $t->[$i][0]; } } # sane defaults for ([ 0, "" ], [ 1, "CHAR" ], [ 4, "INTEGER" ], [ 12, "VARCHAR" ], ) { $types->{$_->[0]} ||= $_->[1]; $types->{$_->[1]} ||= $_->[0]; } $sth->{Database}{Types} = $types; } my $all_meta = $sth->{Database}->func ("*", "table_defs", "get_sql_engine_meta"); foreach my $tbl (keys %$all_meta) { my $meta = $all_meta->{$tbl}; exists $meta->{table_defs} && ref $meta->{table_defs} or next; foreach (keys %{$meta->{table_defs}{columns}}) { my $field_info = $meta->{table_defs}{columns}{$_}; if (defined $field_info->{data_type} && $field_info->{data_type} !~ m/^[0-9]+$/) { $field_info->{type_name} = uc $field_info->{data_type}; $field_info->{data_type} = $types->{$field_info->{type_name}} || 0; } $field_info->{type_name} ||= $types->{$field_info->{data_type}} || "CHAR"; $sth->{f_overall_defs}{$_} = $field_info; } } } my @colnames = $sth->sql_get_colnames (); $attr eq "TYPE" and return [ map { $sth->{f_overall_defs}{$_}{data_type} || 12 } @colnames ]; $attr eq "TYPE_NAME" and return [ map { $sth->{f_overall_defs}{$_}{type_name} || "VARCHAR" } @colnames ]; $attr eq "PRECISION" and return [ map { $sth->{f_overall_defs}{$_}{data_length} || 0 } @colnames ]; $attr eq "NULLABLE" and return [ map { ( grep { $_ eq "NOT NULL" } @{ $sth->{f_overall_defs}{$_}{constraints} || [] }) ? 0 : 1 } @colnames ]; } } return $sth->SUPER::FETCH ($attr); } # FETCH # ====== TableSource =========================================================== package DBD::File::TableSource::FileSystem; use strict; use warnings; use IO::Dir; @DBD::File::TableSource::FileSystem::ISA = "DBI::DBD::SqlEngine::TableSource"; sub data_sources { my ($class, $drh, $attr) = @_; my $dir = $attr && exists $attr->{f_dir} ? $attr->{f_dir} : File::Spec->curdir (); defined $dir or return; # Stream-based databases do not have f_dir unless (-d $dir && -r $dir && -x $dir) { $drh->set_err ($DBI::stderr, "Cannot use directory $dir from f_dir"); return; } my %attrs; $attr and %attrs = %$attr; delete $attrs{f_dir}; my $dsn_quote = $drh->{ImplementorClass}->can ("dsn_quote"); my $dsnextra = join ";", map { $_ . "=" . &{$dsn_quote} ($attrs{$_}) } keys %attrs; my @dir = ($dir); $attr->{f_dir_search} && ref $attr->{f_dir_search} eq "ARRAY" and push @dir, grep { -d $_ } @{$attr->{f_dir_search}}; my @dsns; foreach $dir (@dir) { my $dirh = IO::Dir->new ($dir); unless (defined $dirh) { $drh->set_err ($DBI::stderr, "Cannot open directory $dir: $!"); return; } my ($file, %names, $driver); $driver = $drh->{ImplementorClass} =~ m/^dbd\:\:([^\:]+)\:\:/i ? $1 : "File"; while (defined ($file = $dirh->read ())) { my $d = File::Spec->catdir ($dir, $file); # allow current dir ... it can be a data_source too $file ne File::Spec->updir () && -d $d and push @dsns, "DBI:$driver:f_dir=" . &{$dsn_quote} ($d) . ($dsnextra ? ";$dsnextra" : ""); } } return @dsns; } # data_sources sub avail_tables { my ($self, $dbh) = @_; my $dir = $dbh->{f_dir}; defined $dir or return; # Stream based db's cannot be queried for tables my %seen; my @tables; my @dir = ($dir); $dbh->{f_dir_search} && ref $dbh->{f_dir_search} eq "ARRAY" and push @dir, grep { -d $_ } @{$dbh->{f_dir_search}}; foreach $dir (@dir) { my $dirh = IO::Dir->new ($dir); unless (defined $dirh) { $dbh->set_err ($DBI::stderr, "Cannot open directory $dir: $!"); return; } my $class = $dbh->FETCH ("ImplementorClass"); $class =~ s/::db$/::Table/; my ($file, %names); my $schema = exists $dbh->{f_schema} ? defined $dbh->{f_schema} && $dbh->{f_schema} ne "" ? $dbh->{f_schema} : undef : eval { getpwuid ((stat $dir)[4]) }; # XXX Win32::pwent while (defined ($file = $dirh->read ())) { my ($tbl, $meta) = $class->get_table_meta ($dbh, $file, 0, 0) or next; # XXX # $tbl && $meta && -f $meta->{f_fqfn} or next; $seen{defined $schema ? $schema : "\0"}{$dir}{$tbl}++ or push @tables, [ undef, $schema, $tbl, "TABLE", "FILE" ]; } $dirh->close () or $dbh->set_err ($DBI::stderr, "Cannot close directory $dir: $!"); } return @tables; } # avail_tables # ====== DataSource ============================================================ package DBD::File::DataSource::Stream; use strict; use warnings; use Carp; @DBD::File::DataSource::Stream::ISA = "DBI::DBD::SqlEngine::DataSource"; # We may have a working flock () built-in but that doesn't mean that locking # will work on NFS (flock () may hang hard) my $locking = eval { my $fh; my $nulldevice = File::Spec->devnull (); open $fh, ">", $nulldevice or croak "Can't open $nulldevice: $!"; flock $fh, 0; close $fh; 1; }; sub complete_table_name { my ($self, $meta, $file, $respect_case) = @_; my $tbl = $file; if (!$respect_case and $meta->{sql_identifier_case} == 1) { # XXX SQL_IC_UPPER $tbl = uc $tbl; } elsif (!$respect_case and $meta->{sql_identifier_case} == 2) { # XXX SQL_IC_LOWER $tbl = lc $tbl; } $meta->{f_fqfn} = undef; $meta->{f_fqbn} = undef; $meta->{f_fqln} = undef; $meta->{table_name} = $tbl; return $tbl; } # complete_table_name sub apply_encoding { my ($self, $meta, $fn) = @_; defined $fn or $fn = "file handle " . fileno ($meta->{fh}); if (my $enc = $meta->{f_encoding}) { binmode $meta->{fh}, ":encoding($enc)" or croak "Failed to set encoding layer '$enc' on $fn: $!"; } else { binmode $meta->{fh} or croak "Failed to set binary mode on $fn: $!"; } } # apply_encoding sub open_data { my ($self, $meta, $attrs, $flags) = @_; $flags->{dropMode} and croak "Can't drop a table in stream"; my $fn = "file handle " . fileno ($meta->{f_file}); if ($flags->{createMode} || $flags->{lockMode}) { $meta->{fh} = IO::Handle->new_from_fd (fileno ($meta->{f_file}), "w+") or croak "Cannot open $fn for writing: $! (" . ($!+0) . ")"; } else { $meta->{fh} = IO::Handle->new_from_fd (fileno ($meta->{f_file}), "r") or croak "Cannot open $fn for reading: $! (" . ($!+0) . ")"; } if ($meta->{fh}) { $self->apply_encoding ($meta, $fn); } # have $meta->{$fh} if ($self->can_flock && $meta->{fh}) { my $lm = defined $flags->{f_lock} && $flags->{f_lock} =~ m/^[012]$/ ? $flags->{f_lock} : $flags->{lockMode} ? 2 : 1; if ($lm == 2) { flock $meta->{fh}, 2 or croak "Cannot obtain exclusive lock on $fn: $!"; } elsif ($lm == 1) { flock $meta->{fh}, 1 or croak "Cannot obtain shared lock on $fn: $!"; } # $lm = 0 is forced no locking at all } } # open_data sub can_flock { $locking } package DBD::File::DataSource::File; use strict; use warnings; @DBD::File::DataSource::File::ISA = "DBD::File::DataSource::Stream"; use Carp; my $fn_any_ext_regex = qr/\.[^.]*/; sub complete_table_name { my ($self, $meta, $file, $respect_case, $file_is_table) = @_; $file eq "." || $file eq ".." and return; # XXX would break a possible DBD::Dir # XXX now called without proving f_fqfn first ... my ($ext, $req) = ("", 0); if ($meta->{f_ext}) { ($ext, my $opt) = split m{/}, $meta->{f_ext}; if ($ext && $opt) { $opt =~ m/r/i and $req = 1; } } # (my $tbl = $file) =~ s/\Q$ext\E$//i; my ($tbl, $basename, $dir, $fn_ext, $user_spec_file, $searchdir); if ($file_is_table and defined $meta->{f_file}) { $tbl = $file; ($basename, $dir, $fn_ext) = File::Basename::fileparse ($meta->{f_file}, $fn_any_ext_regex); $file = $basename . $fn_ext; $user_spec_file = 1; } else { ($basename, $dir, undef) = File::Basename::fileparse ($file, qr{\Q$ext\E}); # $dir is returned with trailing (back)slash. We just need to check # if it is ".", "./", or ".\" or "[]" (VMS) if ($dir =~ m{^(?:[.][/\\]?|\[\])$} && ref $meta->{f_dir_search} eq "ARRAY") { foreach my $d ($meta->{f_dir}, @{$meta->{f_dir_search}}) { my $f = File::Spec->catdir ($d, $file); -f $f or next; $searchdir = Cwd::abs_path ($d); $dir = ""; last; } } $file = $tbl = $basename; $user_spec_file = 0; } if (!$respect_case and $meta->{sql_identifier_case} == 1) { # XXX SQL_IC_UPPER $basename = uc $basename; $tbl = uc $tbl; } elsif (!$respect_case and $meta->{sql_identifier_case} == 2) { # XXX SQL_IC_LOWER $basename = lc $basename; $tbl = lc $tbl; } unless (defined $searchdir) { $searchdir = File::Spec->file_name_is_absolute ($dir) ? ($dir =~ s{/$}{}, $dir) : Cwd::abs_path (File::Spec->catdir ($meta->{f_dir}, $dir)); } -d $searchdir or croak "-d $searchdir: $!"; $searchdir eq $meta->{f_dir} and $dir = ""; unless ($user_spec_file) { $file_is_table and $file = "$basename$ext"; # Fully Qualified File Name my $cmpsub; if ($respect_case) { $cmpsub = sub { my ($fn, undef, $sfx) = File::Basename::fileparse ($_, $fn_any_ext_regex); $^O eq "VMS" && $sfx eq "." and $sfx = ""; # no extension turns up as a dot $fn eq $basename and return (lc $sfx eq lc $ext or !$req && !$sfx); return 0; } } else { $cmpsub = sub { my ($fn, undef, $sfx) = File::Basename::fileparse ($_, $fn_any_ext_regex); $^O eq "VMS" && $sfx eq "." and $sfx = ""; # no extension turns up as a dot lc $fn eq lc $basename and return (lc $sfx eq lc $ext or !$req && !$sfx); return 0; } } my @f; { my $dh = IO::Dir->new ($searchdir) or croak "Can't open '$searchdir': $!"; @f = sort { length $b <=> length $a } grep { &$cmpsub ($_) } $dh->read (); $dh->close () or croak "Can't close '$searchdir': $!"; } @f > 0 && @f <= 2 and $file = $f[0]; !$respect_case && $meta->{sql_identifier_case} == 4 and # XXX SQL_IC_MIXED ($tbl = $file) =~ s/\Q$ext\E$//i; my $tmpfn = $file; if ($ext && $req) { # File extension required $tmpfn =~ s/\Q$ext\E$//i or return; } } my $fqfn = File::Spec->catfile ($searchdir, $file); my $fqbn = File::Spec->catfile ($searchdir, $basename); $meta->{f_fqfn} = $fqfn; $meta->{f_fqbn} = $fqbn; defined $meta->{f_lockfile} && $meta->{f_lockfile} and $meta->{f_fqln} = $meta->{f_fqbn} . $meta->{f_lockfile}; $dir && !$user_spec_file and $tbl = File::Spec->catfile ($dir, $tbl); $meta->{table_name} = $tbl; return $tbl; } # complete_table_name sub open_data { my ($self, $meta, $attrs, $flags) = @_; defined $meta->{f_fqfn} && $meta->{f_fqfn} ne "" or croak "No filename given"; my ($fh, $fn); unless ($meta->{f_dontopen}) { $fn = $meta->{f_fqfn}; if ($flags->{createMode}) { -f $meta->{f_fqfn} and croak "Cannot create table $attrs->{table}: Already exists"; $fh = IO::File->new ($fn, "a+") or croak "Cannot open $fn for writing: $! (" . ($!+0) . ")"; } else { unless ($fh = IO::File->new ($fn, ($flags->{lockMode} ? "r+" : "r"))) { croak "Cannot open $fn: $! (" . ($!+0) . ")"; } } $meta->{fh} = $fh; if ($fh) { $fh->seek (0, 0) or croak "Error while seeking back: $!"; $self->apply_encoding ($meta); } } if ($meta->{f_fqln}) { $fn = $meta->{f_fqln}; if ($flags->{createMode}) { -f $fn and croak "Cannot create table lock at '$fn' for $attrs->{table}: Already exists"; $fh = IO::File->new ($fn, "a+") or croak "Cannot open $fn for writing: $! (" . ($!+0) . ")"; } else { unless ($fh = IO::File->new ($fn, ($flags->{lockMode} ? "r+" : "r"))) { croak "Cannot open $fn: $! (" . ($!+0) . ")"; } } $meta->{lockfh} = $fh; } if ($self->can_flock && $fh) { my $lm = defined $flags->{f_lock} && $flags->{f_lock} =~ m/^[012]$/ ? $flags->{f_lock} : $flags->{lockMode} ? 2 : 1; if ($lm == 2) { flock $fh, 2 or croak "Cannot obtain exclusive lock on $fn: $!"; } elsif ($lm == 1) { flock $fh, 1 or croak "Cannot obtain shared lock on $fn: $!"; } # $lm = 0 is forced no locking at all } } # open_data # ====== SQL::STATEMENT ======================================================== package DBD::File::Statement; use strict; use warnings; @DBD::File::Statement::ISA = qw( DBI::DBD::SqlEngine::Statement ); # ====== SQL::TABLE ============================================================ package DBD::File::Table; use strict; use warnings; use Carp; require IO::File; require File::Basename; require File::Spec; require Cwd; require Scalar::Util; @DBD::File::Table::ISA = qw( DBI::DBD::SqlEngine::Table ); # ====== UTILITIES ============================================================ if (eval { require Params::Util; }) { Params::Util->import ("_HANDLE"); } else { # taken but modified from Params::Util ... *_HANDLE = sub { # It has to be defined, of course defined $_[0] or return; # Normal globs are considered to be file handles ref $_[0] eq "GLOB" and return $_[0]; # Check for a normal tied filehandle # Side Note: 5.5.4's tied () and can () doesn't like getting undef tied ($_[0]) and tied ($_[0])->can ("TIEHANDLE") and return $_[0]; # There are no other non-object handles that we support Scalar::Util::blessed ($_[0]) or return; # Check for a common base classes for conventional IO::Handle object $_[0]->isa ("IO::Handle") and return $_[0]; # Check for tied file handles using Tie::Handle $_[0]->isa ("Tie::Handle") and return $_[0]; # IO::Scalar is not a proper seekable, but it is valid is a # regular file handle $_[0]->isa ("IO::Scalar") and return $_[0]; # Yet another special case for IO::String, which refuses (for now # anyway) to become a subclass of IO::Handle. $_[0]->isa ("IO::String") and return $_[0]; # This is not any sort of object we know about return; }; } # ====== FLYWEIGHT SUPPORT ===================================================== # Flyweight support for table_info # The functions file2table, init_table_meta, default_table_meta and # get_table_meta are using $self arguments for polymorphism only. The # must not rely on an instantiated DBD::File::Table sub file2table { my ($self, $meta, $file, $file_is_table, $respect_case) = @_; return $meta->{sql_data_source}->complete_table_name ($meta, $file, $respect_case, $file_is_table); } # file2table sub bootstrap_table_meta { my ($self, $dbh, $meta, $table, @other) = @_; $self->SUPER::bootstrap_table_meta ($dbh, $meta, $table, @other); exists $meta->{f_dir} or $meta->{f_dir} = $dbh->{f_dir}; exists $meta->{f_dir_search} or $meta->{f_dir_search} = $dbh->{f_dir_search}; defined $meta->{f_ext} or $meta->{f_ext} = $dbh->{f_ext}; defined $meta->{f_encoding} or $meta->{f_encoding} = $dbh->{f_encoding}; exists $meta->{f_lock} or $meta->{f_lock} = $dbh->{f_lock}; exists $meta->{f_lockfile} or $meta->{f_lockfile} = $dbh->{f_lockfile}; defined $meta->{f_schema} or $meta->{f_schema} = $dbh->{f_schema}; defined $meta->{f_open_file_needed} or $meta->{f_open_file_needed} = $self->can ("open_file") != DBD::File::Table->can ("open_file"); defined ($meta->{sql_data_source}) or $meta->{sql_data_source} = _HANDLE ($meta->{f_file}) ? "DBD::File::DataSource::Stream" : "DBD::File::DataSource::File"; } # bootstrap_table_meta sub get_table_meta ($$$$;$) { my ($self, $dbh, $table, $file_is_table, $respect_case) = @_; my $meta = $self->SUPER::get_table_meta ($dbh, $table, $respect_case, $file_is_table); $table = $meta->{table_name}; return unless $table; return ($table, $meta); } # get_table_meta my %reset_on_modify = ( f_file => [ "f_fqfn", "sql_data_source" ], f_dir => "f_fqfn", f_dir_search => [], f_ext => "f_fqfn", f_lockfile => "f_fqfn", # forces new file2table call ); __PACKAGE__->register_reset_on_modify (\%reset_on_modify); my %compat_map = map { $_ => "f_$_" } qw( file ext lock lockfile ); __PACKAGE__->register_compat_map (\%compat_map); # ====== DBD::File <= 0.40 compat stuff ======================================== # compat to 0.38 .. 0.40 API sub open_file { my ($className, $meta, $attrs, $flags) = @_; return $className->SUPER::open_data ($meta, $attrs, $flags); } # open_file sub open_data { my ($className, $meta, $attrs, $flags) = @_; # compat to 0.38 .. 0.40 API $meta->{f_open_file_needed} ? $className->open_file ($meta, $attrs, $flags) : $className->SUPER::open_data ($meta, $attrs, $flags); return; } # open_data # ====== SQL::Eval API ========================================================= sub drop ($) { my ($self, $data) = @_; my $meta = $self->{meta}; # We have to close the file before unlinking it: Some OS'es will # refuse the unlink otherwise. $meta->{fh} and $meta->{fh}->close (); $meta->{lockfh} and $meta->{lockfh}->close (); undef $meta->{fh}; undef $meta->{lockfh}; $meta->{f_fqfn} and unlink $meta->{f_fqfn}; # XXX ==> sql_data_source $meta->{f_fqln} and unlink $meta->{f_fqln}; # XXX ==> sql_data_source delete $data->{Database}{sql_meta}{$self->{table}}; return 1; } # drop sub seek ($$$$) { my ($self, $data, $pos, $whence) = @_; my $meta = $self->{meta}; if ($whence == 0 && $pos == 0) { $pos = defined $meta->{first_row_pos} ? $meta->{first_row_pos} : 0; } elsif ($whence != 2 || $pos != 0) { croak "Illegal seek position: pos = $pos, whence = $whence"; } $meta->{fh}->seek ($pos, $whence) or croak "Error while seeking in " . $meta->{f_fqfn} . ": $!"; } # seek sub truncate ($$) { my ($self, $data) = @_; my $meta = $self->{meta}; $meta->{fh}->truncate ($meta->{fh}->tell ()) or croak "Error while truncating " . $meta->{f_fqfn} . ": $!"; return 1; } # truncate sub DESTROY { my $self = shift; my $meta = $self->{meta}; $meta->{fh} and $meta->{fh}->close (); $meta->{lockfh} and $meta->{lockfh}->close (); undef $meta->{fh}; undef $meta->{lockfh}; $self->SUPER::DESTROY(); } # DESTROY 1; __END__ =head1 NAME DBD::File - Base class for writing file based DBI drivers =head1 SYNOPSIS This module is a base class for writing other Ls. It is not intended to function as a DBD itself (though it is possible). If you want to access flat files, use L, or L (both of which are subclasses of DBD::File). =head1 DESCRIPTION The DBD::File module is not a true L driver, but an abstract base class for deriving concrete DBI drivers from it. The implication is, that these drivers work with plain files, for example CSV files or INI files. The module is based on the L module, a simple SQL engine. See L for details on DBI, L for details on SQL::Statement and L, L or L for example drivers. =head2 Metadata The following attributes are handled by DBI itself and not by DBD::File, thus they all work as expected: Active ActiveKids CachedKids CompatMode (Not used) InactiveDestroy AutoInactiveDestroy Kids PrintError RaiseError Warn (Not used) =head3 The following DBI attributes are handled by DBD::File: =head4 AutoCommit Always on. =head4 ChopBlanks Works. =head4 NUM_OF_FIELDS Valid after C<< $sth->execute >>. =head4 NUM_OF_PARAMS Valid after C<< $sth->prepare >>. =head4 NAME Valid after C<< $sth->execute >>; undef for Non-Select statements. =head4 NULLABLE Not really working, always returns an array ref of ones, except the affected table has been created in this session. Valid after C<< $sth->execute >>; undef for non-select statements. =head3 Unsupported DBI attributes and methods =head4 bind_param_inout =head4 CursorName =head4 LongReadLen =head4 LongTruncOk =head3 DBD::File specific attributes In addition to the DBI attributes, you can use the following dbh attributes: =head4 f_dir This attribute is used for setting the directory where the files are opened and it defaults to the current directory (F<.>). Usually you set it on the dbh but it may be overridden per table (see L). When the value for C is a relative path, it is converted into the appropriate absolute path name (based on the current working directory) when the dbh attribute is set. f_dir => "/data/foo/csv", See L. =head4 f_dir_search This optional attribute can be set to pass a list of folders to also find existing tables. It will B be used to create new files. f_dir_search => [ "/data/bar/csv", "/dump/blargh/data" ], =head4 f_ext This attribute is used for setting the file extension. The format is: extension{/flag} where the /flag is optional and the extension is case-insensitive. C allows you to specify an extension which: f_ext => ".csv/r", =over =item * makes DBD::File prefer F over F. =item * makes the table name the filename minus the extension. =back DBI:CSV:f_dir=data;f_ext=.csv In the above example and when C contains both F and F
, DBD::File will open F and the table will be named "table". If F does not exist but F
does that file is opened and the table is also called "table". If C is not specified and F exists it will be opened and the table will be called "table.csv" which is probably not what you want. NOTE: even though extensions are case-insensitive, table names are not. DBI:CSV:f_dir=data;f_ext=.csv/r The C flag means the file extension is required and any filename that does not match the extension is ignored. Usually you set it on the dbh but it may be overridden per table (see L). =head4 f_schema This will set the schema name and defaults to the owner of the directory in which the table file resides. You can set C to C. my $dbh = DBI->connect ("dbi:CSV:", "", "", { f_schema => undef, f_dir => "data", f_ext => ".csv/r", }) or die $DBI::errstr; By setting the schema you affect the results from the tables call: my @tables = $dbh->tables (); # no f_schema "merijn".foo "merijn".bar # f_schema => "dbi" "dbi".foo "dbi".bar # f_schema => undef foo bar Defining C to the empty string is equal to setting it to C so the DSN can be C<"dbi:CSV:f_schema=;f_dir=.">. =head4 f_lock The C attribute is used to set the locking mode on the opened table files. Note that not all platforms support locking. By default, tables are opened with a shared lock for reading, and with an exclusive lock for writing. The supported modes are: 0: No locking at all. 1: Shared locks will be used. 2: Exclusive locks will be used. But see L below. =head4 f_lockfile If you wish to use a lockfile extension other than C<.lck>, simply specify the C attribute: $dbh = DBI->connect ("dbi:DBM:f_lockfile=.foo"); $dbh->{f_lockfile} = ".foo"; $dbh->{dbm_tables}{qux}{f_lockfile} = ".foo"; If you wish to disable locking, set the C to C<0>. $dbh = DBI->connect ("dbi:DBM:f_lockfile=0"); $dbh->{f_lockfile} = 0; $dbh->{dbm_tables}{qux}{f_lockfile} = 0; =head4 f_encoding With this attribute, you can set the encoding in which the file is opened. This is implemented using C<< binmode $fh, ":encoding()" >>. =head4 f_meta Private data area aliasing L which contains information about the tables this module handles. Table meta data might not be available until the table has been accessed for the first time e.g., by issuing a select on it however it is possible to pre-initialize attributes for each table you use. DBD::File recognizes the (public) attributes C, C, C, C, C, C, C, in addition to the attributes L already supports. Be very careful when modifying attributes you do not know, the consequence might be a destroyed or corrupted table. C is an attribute applicable to table meta data only and you will not find a corresponding attribute in the dbh. Whilst it may be reasonable to have several tables with the same column names, it is not for the same file name. If you need access to the same file using different table names, use C as the SQL engine and the C keyword: SELECT * FROM tbl AS t1, tbl AS t2 WHERE t1.id = t2.id C can be an absolute path name or a relative path name but if it is relative, it is interpreted as being relative to the C attribute of the table meta data. When C is set DBD::File will use C as specified and will not attempt to work out an alternative for C using the C
and C attribute. While C is a private and readonly attribute (which means, you cannot modify it's values), derived drivers might provide restricted write access through another attribute. Well known accessors are C for L, C for L and C for L. =head3 New opportunities for attributes from DBI::DBD::SqlEngine =head4 sql_table_source C<< $dbh->{sql_table_source} >> can be set to I (and is the default setting of DBD::File). This provides usual behaviour of previous DBD::File releases on @ary = DBI->data_sources ($driver); @ary = DBI->data_sources ($driver, \%attr); @ary = $dbh->data_sources (); @ary = $dbh->data_sources (\%attr); @names = $dbh->tables ($catalog, $schema, $table, $type); $sth = $dbh->table_info ($catalog, $schema, $table, $type); $sth = $dbh->table_info ($catalog, $schema, $table, $type, \%attr); $dbh->func ("list_tables"); =head4 sql_data_source C<< $dbh->{sql_data_source} >> can be set to either I, which is default and provides the well known behavior of DBD::File releases prior to 0.41, or I, which reuses already opened file-handle for operations. =head3 Internally private attributes to deal with SQL backends Do not modify any of these private attributes unless you understand the implications of doing so. The behavior of DBD::File and derived DBDs might be unpredictable when one or more of those attributes are modified. =head4 sql_nano_version Contains the version of loaded DBI::SQL::Nano. =head4 sql_statement_version Contains the version of loaded SQL::Statement. =head4 sql_handler Contains either the text 'SQL::Statement' or 'DBI::SQL::Nano'. =head4 sql_ram_tables Contains optionally temporary tables. =head4 sql_flags Contains optional flags to instantiate the SQL::Parser parsing engine when SQL::Statement is used as SQL engine. See L for valid flags. =head2 Driver private methods =head3 Default DBI methods =head4 data_sources The C method returns a list of subdirectories of the current directory in the form "dbi:CSV:f_dir=$dirname". If you want to read the subdirectories of another directory, use my ($drh) = DBI->install_driver ("CSV"); my (@list) = $drh->data_sources (f_dir => "/usr/local/csv_data"); =head3 Additional methods The following methods are only available via their documented name when DBD::File is used directly. Because this is only reasonable for testing purposes, the real names must be used instead. Those names can be computed by replacing the C in the method name with the driver prefix. =head4 f_versions Signature: sub f_versions (;$) { my ($table_name) = @_; $table_name ||= "."; ... } Returns the versions of the driver, including the DBI version, the Perl version, DBI::PurePerl version (if DBI::PurePerl is active) and the version of the SQL engine in use. my $dbh = DBI->connect ("dbi:File:"); my $f_versions = $dbh->func ("f_versions"); print "$f_versions\n"; __END__ # DBD::File 0.41 using IO::File (1.16) # DBI::DBD::SqlEngine 0.05 using SQL::Statement 1.406 # DBI 1.623 # OS darwin (12.2.1) # Perl 5.017006 (darwin-thread-multi-ld-2level) Called in list context, f_versions will return an array containing each line as single entry. Some drivers might use the optional (table name) argument and modify version information related to the table (e.g. DBD::DBM provides storage backend information for the requested table, when it has a table name). =head1 KNOWN BUGS AND LIMITATIONS =over 4 =item * This module uses flock () internally but flock is not available on all platforms. On MacOS and Windows 95 there is no locking at all (perhaps not so important on MacOS and Windows 95, as there is only a single user). =item * The module stores details about the handled tables in a private area of the driver handle (C<$drh>). This data area is not shared between different driver instances, so several C<< DBI->connect () >> calls will cause different table instances and private data areas. This data area is filled for the first time when a table is accessed, either via an SQL statement or via C and is not destroyed until the table is dropped or the driver handle is released. Manual destruction is possible via L. The following attributes are preserved in the data area and will evaluated instead of driver globals: =over 8 =item f_ext =item f_dir =item f_dir_search =item f_lock =item f_lockfile =item f_encoding =item f_schema =item col_names =item sql_identifier_case =back The following attributes are preserved in the data area only and cannot be set globally. =over 8 =item f_file =back The following attributes are preserved in the data area only and are computed when initializing the data area: =over 8 =item f_fqfn =item f_fqbn =item f_fqln =item table_name =back For DBD::CSV tables this means, once opened "foo.csv" as table named "foo", another table named "foo" accessing the file "foo.txt" cannot be opened. Accessing "foo" will always access the file "foo.csv" in memorized C, locking C via memorized C. You can use L or the C attribute for a specific table to work around this. =item * When used with SQL::Statement and temporary tables e.g., CREATE TEMP TABLE ... the table data processing bypasses DBD::File::Table. No file system calls will be made and there are no clashes with existing (file based) tables with the same name. Temporary tables are chosen over file tables, but they will not covered by C. =back =head1 AUTHOR This module is currently maintained by H.Merijn Brand < h.m.brand at xs4all.nl > and Jens Rehsack < rehsack at googlemail.com > The original author is Jochen Wiedmann. =head1 COPYRIGHT AND LICENSE Copyright (C) 2009-2013 by H.Merijn Brand & Jens Rehsack Copyright (C) 2004-2009 by Jeff Zucker Copyright (C) 1998-2004 by Jochen Wiedmann All rights reserved. You may freely distribute and/or modify this module under the terms of either the GNU General Public License (GPL) or the Artistic License, as specified in the Perl README file. =head1 SEE ALSO L, L, L, L, L, L, and L =cut perl5/DBD/ExampleP.pm000044400000030175152462470720010252 0ustar00{ package DBD::ExampleP; use strict; use Symbol; use DBI qw(:sql_types); require File::Spec; our (@EXPORT,$VERSION,@statnames,%statnames,@stattypes,%stattypes, @statprec,%statprec,$drh,); @EXPORT = qw(); # Do NOT @EXPORT anything. $VERSION = "12.014311"; # $Id: ExampleP.pm 14310 2010-08-02 06:35:25Z Jens $ # # Copyright (c) 1994,1997,1998 Tim Bunce # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. @statnames = qw(dev ino mode nlink uid gid rdev size atime mtime ctime blksize blocks name); @statnames{@statnames} = (0 .. @statnames-1); @stattypes = (SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_INTEGER, SQL_VARCHAR); @stattypes{@statnames} = @stattypes; @statprec = ((10) x (@statnames-1), 1024); @statprec{@statnames} = @statprec; die unless @statnames == @stattypes; die unless @statprec == @stattypes; $drh = undef; # holds driver handle once initialised #$gensym = "SYM000"; # used by st::execute() for filehandles sub driver{ return $drh if $drh; my($class, $attr) = @_; $class .= "::dr"; ($drh) = DBI::_new_drh($class, { 'Name' => 'ExampleP', 'Version' => $VERSION, 'Attribution' => 'DBD Example Perl stub by Tim Bunce', }, ['example implementors private data '.__PACKAGE__]); $drh; } sub CLONE { undef $drh; } } { package DBD::ExampleP::dr; # ====== DRIVER ====== $imp_data_size = 0; use strict; sub connect { # normally overridden, but a handy default my($drh, $dbname, $user, $auth)= @_; my ($outer, $dbh) = DBI::_new_dbh($drh, { Name => $dbname, examplep_private_dbh_attrib => 42, # an example, for testing }); $dbh->{examplep_get_info} = { 29 => '"', # SQL_IDENTIFIER_QUOTE_CHAR 41 => '.', # SQL_CATALOG_NAME_SEPARATOR 114 => 1, # SQL_CATALOG_LOCATION }; #$dbh->{Name} = $dbname; $dbh->STORE('Active', 1); return $outer; } sub data_sources { return ("dbi:ExampleP:dir=."); # possibly usefully meaningless } } { package DBD::ExampleP::db; # ====== DATABASE ====== $imp_data_size = 0; use strict; sub prepare { my($dbh, $statement)= @_; my @fields; my($fields, $dir) = $statement =~ m/^\s*select\s+(.*?)\s+from\s+(\S*)/i; if (defined $fields and defined $dir) { @fields = ($fields eq '*') ? keys %DBD::ExampleP::statnames : split(/\s*,\s*/, $fields); } else { return $dbh->set_err($DBI::stderr, "Syntax error in select statement (\"$statement\")") unless $statement =~ m/^\s*set\s+/; # the SET syntax is just a hack so the ExampleP driver can # be used to test non-select statements. # Now we have DBI::DBM etc., ExampleP should be deprecated } my ($outer, $sth) = DBI::_new_sth($dbh, { 'Statement' => $statement, examplep_private_sth_attrib => 24, # an example, for testing }, ['example implementors private data '.__PACKAGE__]); my @bad = map { defined $DBD::ExampleP::statnames{$_} ? () : $_ } @fields; return $dbh->set_err($DBI::stderr, "Unknown field names: @bad") if @bad; $outer->STORE('NUM_OF_FIELDS' => scalar(@fields)); $sth->{examplep_ex_dir} = $dir if defined($dir) && $dir !~ /\?/; $outer->STORE('NUM_OF_PARAMS' => ($dir) ? $dir =~ tr/?/?/ : 0); if (@fields) { $outer->STORE('NAME' => \@fields); $outer->STORE('NULLABLE' => [ (0) x @fields ]); $outer->STORE('SCALE' => [ (0) x @fields ]); } $outer; } sub table_info { my $dbh = shift; my ($catalog, $schema, $table, $type) = @_; my @types = split(/["']*,["']/, $type || 'TABLE'); my %types = map { $_=>$_ } @types; # Return a list of all subdirectories my $dh = Symbol::gensym(); # "DBD::ExampleP::".++$DBD::ExampleP::gensym; my $dir = $catalog || File::Spec->curdir(); my @list; if ($types{VIEW}) { # for use by test harness push @list, [ undef, "schema", "table", 'VIEW', undef ]; push @list, [ undef, "sch-ema", "table", 'VIEW', undef ]; push @list, [ undef, "schema", "ta-ble", 'VIEW', undef ]; push @list, [ undef, "sch ema", "table", 'VIEW', undef ]; push @list, [ undef, "schema", "ta ble", 'VIEW', undef ]; } if ($types{TABLE}) { no strict 'refs'; opendir($dh, $dir) or return $dbh->set_err(int($!), "Failed to open directory $dir: $!"); while (defined(my $item = readdir($dh))) { if ($^O eq 'VMS') { # if on VMS then avoid warnings from catdir if you use a file # (not a dir) as the item below next if $item !~ /\.dir$/oi; } my $file = File::Spec->catdir($dir,$item); next unless -d $file; my($dev, $ino, $mode, $nlink, $uid) = lstat($file); my $pwnam = undef; # eval { scalar(getpwnam($uid)) } || $uid; push @list, [ $dir, $pwnam, $item, 'TABLE', undef ]; } close($dh); } # We would like to simply do a DBI->connect() here. However, # this is wrong if we are in a subclass like DBI::ProxyServer. $dbh->{'dbd_sponge_dbh'} ||= DBI->connect("DBI:Sponge:", '','') or return $dbh->set_err($DBI::err, "Failed to connect to DBI::Sponge: $DBI::errstr"); my $attr = { 'rows' => \@list, 'NUM_OF_FIELDS' => 5, 'NAME' => ['TABLE_CAT', 'TABLE_SCHEM', 'TABLE_NAME', 'TABLE_TYPE', 'REMARKS'], 'TYPE' => [DBI::SQL_VARCHAR(), DBI::SQL_VARCHAR(), DBI::SQL_VARCHAR(), DBI::SQL_VARCHAR(), DBI::SQL_VARCHAR() ], 'NULLABLE' => [1, 1, 1, 1, 1] }; my $sdbh = $dbh->{'dbd_sponge_dbh'}; my $sth = $sdbh->prepare("SHOW TABLES FROM $dir", $attr) or return $dbh->set_err($sdbh->err(), $sdbh->errstr()); $sth; } sub type_info_all { my ($dbh) = @_; my $ti = [ { TYPE_NAME => 0, DATA_TYPE => 1, COLUMN_SIZE => 2, LITERAL_PREFIX => 3, LITERAL_SUFFIX => 4, CREATE_PARAMS => 5, NULLABLE => 6, CASE_SENSITIVE => 7, SEARCHABLE => 8, UNSIGNED_ATTRIBUTE=> 9, FIXED_PREC_SCALE=> 10, AUTO_UNIQUE_VALUE => 11, LOCAL_TYPE_NAME => 12, MINIMUM_SCALE => 13, MAXIMUM_SCALE => 14, }, [ 'VARCHAR', DBI::SQL_VARCHAR, 1024, "'","'", undef, 0, 1, 1, 0, 0,0,undef,0,0 ], [ 'INTEGER', DBI::SQL_INTEGER, 10, "","", undef, 0, 0, 1, 0, 0,0,undef,0,0 ], ]; return $ti; } sub ping { (shift->FETCH('Active')) ? 2 : 0; # the value 2 is checked for by t/80proxy.t } sub disconnect { shift->STORE(Active => 0); return 1; } sub get_info { my ($dbh, $info_type) = @_; return $dbh->{examplep_get_info}->{$info_type}; } sub FETCH { my ($dbh, $attrib) = @_; # In reality this would interrogate the database engine to # either return dynamic values that cannot be precomputed # or fetch and cache attribute values too expensive to prefetch. # else pass up to DBI to handle return $INC{"DBD/ExampleP.pm"} if $attrib eq 'example_driver_path'; return $dbh->SUPER::FETCH($attrib); } sub STORE { my ($dbh, $attrib, $value) = @_; # store only known attributes else pass up to DBI to handle if ($attrib eq 'examplep_set_err') { # a fake attribute to enable a test case where STORE issues a warning $dbh->set_err($value, $value); return; } if ($attrib eq 'AutoCommit') { # convert AutoCommit values to magic ones to let DBI # know that the driver has 'handled' the AutoCommit attribute $value = ($value) ? -901 : -900; } return $dbh->{$attrib} = $value if $attrib =~ /^examplep_/; return $dbh->SUPER::STORE($attrib, $value); } sub DESTROY { my $dbh = shift; $dbh->disconnect if $dbh->FETCH('Active'); undef } # This is an example to demonstrate the use of driver-specific # methods via $dbh->func(). # Use it as follows: # my @tables = $dbh->func($re, 'examplep_tables'); # # Returns all the tables that match the regular expression $re. sub examplep_tables { my $dbh = shift; my $re = shift; grep { $_ =~ /$re/ } $dbh->tables(); } sub parse_trace_flag { my ($h, $name) = @_; return 0x01000000 if $name eq 'foo'; return 0x02000000 if $name eq 'bar'; return 0x04000000 if $name eq 'baz'; return 0x08000000 if $name eq 'boo'; return 0x10000000 if $name eq 'bop'; return $h->SUPER::parse_trace_flag($name); } sub private_attribute_info { return { example_driver_path => undef }; } } { package DBD::ExampleP::st; # ====== STATEMENT ====== $imp_data_size = 0; use strict; no strict 'refs'; # cause problems with filehandles sub bind_param { my($sth, $param, $value, $attribs) = @_; $sth->{'dbd_param'}->[$param-1] = $value; return 1; } sub execute { my($sth, @dir) = @_; my $dir; if (@dir) { $sth->bind_param($_, $dir[$_-1]) or return foreach (1..@dir); } my $dbd_param = $sth->{'dbd_param'} || []; return $sth->set_err(2, @$dbd_param." values bound when $sth->{NUM_OF_PARAMS} expected") unless @$dbd_param == $sth->{NUM_OF_PARAMS}; return 0 unless $sth->{NUM_OF_FIELDS}; # not a select $dir = $dbd_param->[0] || $sth->{examplep_ex_dir}; return $sth->set_err(2, "No bind parameter supplied") unless defined $dir; $sth->finish; # # If the users asks for directory "long_list_4532", then we fake a # directory with files "file4351", "file4350", ..., "file0". # This is a special case used for testing, especially DBD::Proxy. # if ($dir =~ /^long_list_(\d+)$/) { $sth->{dbd_dir} = [ $1 ]; # array ref indicates special mode $sth->{dbd_datahandle} = undef; } else { $sth->{dbd_dir} = $dir; my $sym = Symbol::gensym(); # "DBD::ExampleP::".++$DBD::ExampleP::gensym; opendir($sym, $dir) or return $sth->set_err(2, "opendir($dir): $!"); $sth->{dbd_datahandle} = $sym; } $sth->STORE(Active => 1); return 1; } sub fetch { my $sth = shift; my $dir = $sth->{dbd_dir}; my %s; if (ref $dir) { # special fake-data test mode my $num = $dir->[0]--; unless ($num > 0) { $sth->finish(); return; } my $time = time; @s{@DBD::ExampleP::statnames} = ( 2051, 1000+$num, 0644, 2, $>, $), 0, 1024, $time, $time, $time, 512, 2, "file$num") } else { # normal mode my $dh = $sth->{dbd_datahandle} or return $sth->set_err($DBI::stderr, "fetch without successful execute"); my $f = readdir($dh); unless ($f) { $sth->finish; return; } # untaint $f so that we can use this for DBI taint tests ($f) = ($f =~ m/^(.*)$/); my $file = File::Spec->catfile($dir, $f); # put in all the data fields @s{ @DBD::ExampleP::statnames } = (lstat($file), $f); } # return just what fields the query asks for my @new = @s{ @{$sth->{NAME}} }; return $sth->_set_fbav(\@new); } *fetchrow_arrayref = \&fetch; sub finish { my $sth = shift; closedir($sth->{dbd_datahandle}) if $sth->{dbd_datahandle}; $sth->{dbd_datahandle} = undef; $sth->{dbd_dir} = undef; $sth->SUPER::finish(); return 1; } sub FETCH { my ($sth, $attrib) = @_; # In reality this would interrogate the database engine to # either return dynamic values that cannot be precomputed # or fetch and cache attribute values too expensive to prefetch. if ($attrib eq 'TYPE'){ return [ @DBD::ExampleP::stattypes{ @{ $sth->FETCH(q{NAME_lc}) } } ]; } elsif ($attrib eq 'PRECISION'){ return [ @DBD::ExampleP::statprec{ @{ $sth->FETCH(q{NAME_lc}) } } ]; } elsif ($attrib eq 'ParamValues') { my $dbd_param = $sth->{dbd_param} || []; my %pv = map { $_ => $dbd_param->[$_-1] } 1..@$dbd_param; return \%pv; } # else pass up to DBI to handle return $sth->SUPER::FETCH($attrib); } sub STORE { my ($sth, $attrib, $value) = @_; # would normally validate and only store known attributes # else pass up to DBI to handle return $sth->{$attrib} = $value if $attrib eq 'NAME' or $attrib eq 'NULLABLE' or $attrib eq 'SCALE' or $attrib eq 'PRECISION'; return $sth->SUPER::STORE($attrib, $value); } *parse_trace_flag = \&DBD::ExampleP::db::parse_trace_flag; } 1; # vim: sw=4:ts=8 perl5/DBD/mysql/GetInfo.pm000044400000037362152462470720011244 0ustar00package DBD::mysql::GetInfo; ######################################## # DBD::mysql::GetInfo # # # Generated by DBI::DBD::Metadata # $Author$ <-- the person to blame # $Revision$ # $Date$ use strict; use warnings; use DBD::mysql; # Beware: not officially documented interfaces... # use DBI::Const::GetInfoType qw(%GetInfoType); # use DBI::Const::GetInfoReturn qw(%GetInfoReturnTypes %GetInfoReturnValues); my $sql_driver = 'mysql'; # SQL_DRIVER_VER should be formatted as dd.dd.dddd my $dbdversion = $DBD::mysql::VERSION; $dbdversion .= '_00' if $dbdversion =~ /^\d+\.\d+$/; my $sql_driver_ver = sprintf("%02d.%02d.%04d", split(/[\._]/,$dbdversion)); my @Keywords = qw( BIGINT BLOB DEFAULT KEYS LIMIT LONGBLOB MEDIMUMBLOB MEDIUMINT MEDIUMTEXT PROCEDURE REGEXP RLIKE SHOW TABLES TINYBLOB TINYTEXT UNIQUE UNSIGNED ZEROFILL ); sub sql_keywords { return join ',', @Keywords; } sub sql_data_source_name { my $dbh = shift; return "dbi:$sql_driver:" . $dbh->{Name}; } sub sql_user_name { my $dbh = shift; # Non-standard attribute return $dbh->{CURRENT_USER}; } #################### # makefunc() # returns a ref to a sub that calls into XS to get # values for info types that must needs be coded in C sub makefunk ($) { my $type = shift; return sub {dbd_mysql_get_info(shift, $type)} } our %info = ( 20 => 'N', # SQL_ACCESSIBLE_PROCEDURES 19 => 'Y', # SQL_ACCESSIBLE_TABLES 0 => 0, # SQL_ACTIVE_CONNECTIONS 116 => 0, # SQL_ACTIVE_ENVIRONMENTS 1 => 0, # SQL_ACTIVE_STATEMENTS 169 => 127, # SQL_AGGREGATE_FUNCTIONS 117 => 0, # SQL_ALTER_DOMAIN 86 => 3, # SQL_ALTER_TABLE 10021 => makefunk 10021, # SQL_ASYNC_MODE 120 => 2, # SQL_BATCH_ROW_COUNT 121 => 2, # SQL_BATCH_SUPPORT 82 => 0, # SQL_BOOKMARK_PERSISTENCE 114 => 1, # SQL_CATALOG_LOCATION 10003 => 'Y', # SQL_CATALOG_NAME 41 => makefunk 41, # SQL_CATALOG_NAME_SEPARATOR 42 => makefunk 42, # SQL_CATALOG_TERM 92 => 29, # SQL_CATALOG_USAGE 10004 => '', # SQL_COLLATING_SEQUENCE 10004 => '', # SQL_COLLATION_SEQ 87 => 'Y', # SQL_COLUMN_ALIAS 22 => 0, # SQL_CONCAT_NULL_BEHAVIOR 53 => 259071, # SQL_CONVERT_BIGINT 54 => 0, # SQL_CONVERT_BINARY 55 => 259071, # SQL_CONVERT_BIT 56 => 259071, # SQL_CONVERT_CHAR 57 => 259071, # SQL_CONVERT_DATE 58 => 259071, # SQL_CONVERT_DECIMAL 59 => 259071, # SQL_CONVERT_DOUBLE 60 => 259071, # SQL_CONVERT_FLOAT 48 => 0, # SQL_CONVERT_FUNCTIONS # 173 => undef, # SQL_CONVERT_GUID 61 => 259071, # SQL_CONVERT_INTEGER 123 => 0, # SQL_CONVERT_INTERVAL_DAY_TIME 124 => 0, # SQL_CONVERT_INTERVAL_YEAR_MONTH 71 => 0, # SQL_CONVERT_LONGVARBINARY 62 => 259071, # SQL_CONVERT_LONGVARCHAR 63 => 259071, # SQL_CONVERT_NUMERIC 64 => 259071, # SQL_CONVERT_REAL 65 => 259071, # SQL_CONVERT_SMALLINT 66 => 259071, # SQL_CONVERT_TIME 67 => 259071, # SQL_CONVERT_TIMESTAMP 68 => 259071, # SQL_CONVERT_TINYINT 69 => 0, # SQL_CONVERT_VARBINARY 70 => 259071, # SQL_CONVERT_VARCHAR 122 => 0, # SQL_CONVERT_WCHAR 125 => 0, # SQL_CONVERT_WLONGVARCHAR 126 => 0, # SQL_CONVERT_WVARCHAR 74 => 1, # SQL_CORRELATION_NAME 127 => 0, # SQL_CREATE_ASSERTION 128 => 0, # SQL_CREATE_CHARACTER_SET 129 => 0, # SQL_CREATE_COLLATION 130 => 0, # SQL_CREATE_DOMAIN 131 => 0, # SQL_CREATE_SCHEMA 132 => 1045, # SQL_CREATE_TABLE 133 => 0, # SQL_CREATE_TRANSLATION 134 => 0, # SQL_CREATE_VIEW 23 => 2, # SQL_CURSOR_COMMIT_BEHAVIOR 24 => 2, # SQL_CURSOR_ROLLBACK_BEHAVIOR 10001 => 0, # SQL_CURSOR_SENSITIVITY 2 => \&sql_data_source_name, # SQL_DATA_SOURCE_NAME 25 => 'N', # SQL_DATA_SOURCE_READ_ONLY 119 => 7, # SQL_DATETIME_LITERALS 17 => 'MySQL', # SQL_DBMS_NAME 18 => makefunk 18, # SQL_DBMS_VER 170 => 3, # SQL_DDL_INDEX 26 => 2, # SQL_DEFAULT_TRANSACTION_ISOLATION 26 => 2, # SQL_DEFAULT_TXN_ISOLATION 10002 => 'N', # SQL_DESCRIBE_PARAMETER # 171 => undef, # SQL_DM_VER 3 => 137076632, # SQL_DRIVER_HDBC # 135 => undef, # SQL_DRIVER_HDESC 4 => 137076088, # SQL_DRIVER_HENV # 76 => undef, # SQL_DRIVER_HLIB # 5 => undef, # SQL_DRIVER_HSTMT 6 => 'libmyodbc3.so', # SQL_DRIVER_NAME 77 => '03.51', # SQL_DRIVER_ODBC_VER 7 => $sql_driver_ver, # SQL_DRIVER_VER 136 => 0, # SQL_DROP_ASSERTION 137 => 0, # SQL_DROP_CHARACTER_SET 138 => 0, # SQL_DROP_COLLATION 139 => 0, # SQL_DROP_DOMAIN 140 => 0, # SQL_DROP_SCHEMA 141 => 7, # SQL_DROP_TABLE 142 => 0, # SQL_DROP_TRANSLATION 143 => 0, # SQL_DROP_VIEW 144 => 0, # SQL_DYNAMIC_CURSOR_ATTRIBUTES1 145 => 0, # SQL_DYNAMIC_CURSOR_ATTRIBUTES2 27 => 'Y', # SQL_EXPRESSIONS_IN_ORDERBY 8 => 63, # SQL_FETCH_DIRECTION 84 => 0, # SQL_FILE_USAGE 146 => 97863, # SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 147 => 6016, # SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 81 => 11, # SQL_GETDATA_EXTENSIONS 88 => 3, # SQL_GROUP_BY 28 => 4, # SQL_IDENTIFIER_CASE #29 => sub {dbd_mysql_get_info(shift,$GetInfoType {SQL_IDENTIFIER_QUOTE_CHAR})}, 29 => makefunk 29, # SQL_IDENTIFIER_QUOTE_CHAR 148 => 0, # SQL_INDEX_KEYWORDS 149 => 0, # SQL_INFO_SCHEMA_VIEWS 172 => 7, # SQL_INSERT_STATEMENT 73 => 'N', # SQL_INTEGRITY 150 => 0, # SQL_KEYSET_CURSOR_ATTRIBUTES1 151 => 0, # SQL_KEYSET_CURSOR_ATTRIBUTES2 89 => \&sql_keywords, # SQL_KEYWORDS 113 => 'Y', # SQL_LIKE_ESCAPE_CLAUSE 78 => 0, # SQL_LOCK_TYPES 34 => 64, # SQL_MAXIMUM_CATALOG_NAME_LENGTH 97 => 0, # SQL_MAXIMUM_COLUMNS_IN_GROUP_BY 98 => 32, # SQL_MAXIMUM_COLUMNS_IN_INDEX 99 => 0, # SQL_MAXIMUM_COLUMNS_IN_ORDER_BY 100 => 0, # SQL_MAXIMUM_COLUMNS_IN_SELECT 101 => 0, # SQL_MAXIMUM_COLUMNS_IN_TABLE 30 => 64, # SQL_MAXIMUM_COLUMN_NAME_LENGTH 1 => 0, # SQL_MAXIMUM_CONCURRENT_ACTIVITIES 31 => 18, # SQL_MAXIMUM_CURSOR_NAME_LENGTH 0 => 0, # SQL_MAXIMUM_DRIVER_CONNECTIONS 10005 => 64, # SQL_MAXIMUM_IDENTIFIER_LENGTH 102 => 500, # SQL_MAXIMUM_INDEX_SIZE 104 => 0, # SQL_MAXIMUM_ROW_SIZE 32 => 0, # SQL_MAXIMUM_SCHEMA_NAME_LENGTH 105 => makefunk 105, # SQL_MAXIMUM_STATEMENT_LENGTH # 20000 => undef, # SQL_MAXIMUM_STMT_OCTETS # 20001 => undef, # SQL_MAXIMUM_STMT_OCTETS_DATA # 20002 => undef, # SQL_MAXIMUM_STMT_OCTETS_SCHEMA 106 => makefunk 106, # SQL_MAXIMUM_TABLES_IN_SELECT 35 => 64, # SQL_MAXIMUM_TABLE_NAME_LENGTH 107 => 16, # SQL_MAXIMUM_USER_NAME_LENGTH 10022 => makefunk 10022, # SQL_MAX_ASYNC_CONCURRENT_STATEMENTS 112 => 0, # SQL_MAX_BINARY_LITERAL_LEN 34 => 64, # SQL_MAX_CATALOG_NAME_LEN 108 => 0, # SQL_MAX_CHAR_LITERAL_LEN 97 => 0, # SQL_MAX_COLUMNS_IN_GROUP_BY 98 => 32, # SQL_MAX_COLUMNS_IN_INDEX 99 => 0, # SQL_MAX_COLUMNS_IN_ORDER_BY 100 => 0, # SQL_MAX_COLUMNS_IN_SELECT 101 => 0, # SQL_MAX_COLUMNS_IN_TABLE 30 => 64, # SQL_MAX_COLUMN_NAME_LEN 1 => 0, # SQL_MAX_CONCURRENT_ACTIVITIES 31 => 18, # SQL_MAX_CURSOR_NAME_LEN 0 => 0, # SQL_MAX_DRIVER_CONNECTIONS 10005 => 64, # SQL_MAX_IDENTIFIER_LEN 102 => 500, # SQL_MAX_INDEX_SIZE 32 => 0, # SQL_MAX_OWNER_NAME_LEN 33 => 0, # SQL_MAX_PROCEDURE_NAME_LEN 34 => 64, # SQL_MAX_QUALIFIER_NAME_LEN 104 => 0, # SQL_MAX_ROW_SIZE 103 => 'Y', # SQL_MAX_ROW_SIZE_INCLUDES_LONG 32 => 0, # SQL_MAX_SCHEMA_NAME_LEN 105 => 8192, # SQL_MAX_STATEMENT_LEN 106 => 31, # SQL_MAX_TABLES_IN_SELECT 35 => makefunk 35, # SQL_MAX_TABLE_NAME_LEN 107 => 16, # SQL_MAX_USER_NAME_LEN 37 => 'Y', # SQL_MULTIPLE_ACTIVE_TXN 36 => 'Y', # SQL_MULT_RESULT_SETS 111 => 'N', # SQL_NEED_LONG_DATA_LEN 75 => 1, # SQL_NON_NULLABLE_COLUMNS 85 => 2, # SQL_NULL_COLLATION 49 => 16777215, # SQL_NUMERIC_FUNCTIONS 9 => 1, # SQL_ODBC_API_CONFORMANCE 152 => 2, # SQL_ODBC_INTERFACE_CONFORMANCE 12 => 1, # SQL_ODBC_SAG_CLI_CONFORMANCE 15 => 1, # SQL_ODBC_SQL_CONFORMANCE 73 => 'N', # SQL_ODBC_SQL_OPT_IEF 10 => '03.80', # SQL_ODBC_VER 115 => 123, # SQL_OJ_CAPABILITIES 90 => 'Y', # SQL_ORDER_BY_COLUMNS_IN_SELECT 38 => 'Y', # SQL_OUTER_JOINS 115 => 123, # SQL_OUTER_JOIN_CAPABILITIES 39 => '', # SQL_OWNER_TERM 91 => 0, # SQL_OWNER_USAGE 153 => 2, # SQL_PARAM_ARRAY_ROW_COUNTS 154 => 3, # SQL_PARAM_ARRAY_SELECTS 80 => 3, # SQL_POSITIONED_STATEMENTS 79 => 31, # SQL_POS_OPERATIONS 21 => 'N', # SQL_PROCEDURES 40 => '', # SQL_PROCEDURE_TERM 114 => 1, # SQL_QUALIFIER_LOCATION 41 => '.', # SQL_QUALIFIER_NAME_SEPARATOR 42 => 'database', # SQL_QUALIFIER_TERM 92 => 29, # SQL_QUALIFIER_USAGE 93 => 3, # SQL_QUOTED_IDENTIFIER_CASE 11 => 'N', # SQL_ROW_UPDATES 39 => '', # SQL_SCHEMA_TERM 91 => 0, # SQL_SCHEMA_USAGE 43 => 7, # SQL_SCROLL_CONCURRENCY 44 => 17, # SQL_SCROLL_OPTIONS 14 => '\\', # SQL_SEARCH_PATTERN_ESCAPE 13 => makefunk 13, # SQL_SERVER_NAME 94 => 'ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜáíóúñÑ', # SQL_SPECIAL_CHARACTERS 155 => 7, # SQL_SQL92_DATETIME_FUNCTIONS 156 => 0, # SQL_SQL92_FOREIGN_KEY_DELETE_RULE 157 => 0, # SQL_SQL92_FOREIGN_KEY_UPDATE_RULE 158 => 8160, # SQL_SQL92_GRANT 159 => 0, # SQL_SQL92_NUMERIC_VALUE_FUNCTIONS 160 => 0, # SQL_SQL92_PREDICATES 161 => 466, # SQL_SQL92_RELATIONAL_JOIN_OPERATORS 162 => 32640, # SQL_SQL92_REVOKE 163 => 7, # SQL_SQL92_ROW_VALUE_CONSTRUCTOR 164 => 255, # SQL_SQL92_STRING_FUNCTIONS 165 => 0, # SQL_SQL92_VALUE_EXPRESSIONS 118 => 4, # SQL_SQL_CONFORMANCE 166 => 2, # SQL_STANDARD_CLI_CONFORMANCE 167 => 97863, # SQL_STATIC_CURSOR_ATTRIBUTES1 168 => 6016, # SQL_STATIC_CURSOR_ATTRIBUTES2 83 => 7, # SQL_STATIC_SENSITIVITY 50 => 491519, # SQL_STRING_FUNCTIONS 95 => 0, # SQL_SUBQUERIES 51 => 7, # SQL_SYSTEM_FUNCTIONS 45 => 'table', # SQL_TABLE_TERM 109 => 0, # SQL_TIMEDATE_ADD_INTERVALS 110 => 0, # SQL_TIMEDATE_DIFF_INTERVALS 52 => 106495, # SQL_TIMEDATE_FUNCTIONS 46 => 3, # SQL_TRANSACTION_CAPABLE 72 => 15, # SQL_TRANSACTION_ISOLATION_OPTION 46 => 3, # SQL_TXN_CAPABLE 72 => 15, # SQL_TXN_ISOLATION_OPTION 96 => 0, # SQL_UNION 96 => 0, # SQL_UNION_STATEMENT 47 => \&sql_user_name, # SQL_USER_NAME 10000 => 1992, # SQL_XOPEN_CLI_YEAR ); 1; __END__ perl5/DBD/mysql/INSTALL.pod000044400000056065152462470720011166 0ustar00=encoding utf8 =head1 NAME DBD::mysql::INSTALL - How to install and configure DBD::mysql =head1 SYNOPSIS perl Makefile.PL [options] make make test make install =head1 DESCRIPTION This document describes the installation and configuration of DBD::mysql, the Perl DBI driver for the MySQL database. Before reading on, make sure that you have the prerequisites available: Perl, MySQL and DBI. For details see the separate section L. Depending on your version of Perl, it might be possible to use a binary distribution of DBD::mysql. If possible, this is recommended. Otherwise you need to install from the sources. If so, you will definitely need a C compiler. Installation from binaries and sources are both described in separate sections. L. L. Finally, if you encounter any problems, do not forget to read the section on known problems L. If that doesn't help, you should check the section on L. =head1 PREREQUISITES =over =item Perl Preferably a version of Perl, that comes preconfigured with your system. For example, all Linux and FreeBSD distributions come with Perl. For Windows, use L or L. =item MySQL You need not install the actual MySQL database server, the client files and the development files are sufficient. For example, Fedora Linux distribution comes with RPM files (using YUM) B and B (use "yum search" to find exact package names). These are sufficient, if the MySQL server is located on a foreign machine. You may also create client files by compiling from the MySQL source distribution and using configure --without-server If you are using Windows and need to compile from sources (which is only the case if you are not using ActivePerl or Strawberry Perl), then you must ensure that the header and library files are installed. This may require choosing a "Custom installation" and selecting the appropriate option when running the MySQL setup program. =item DBI DBD::mysql is a DBI driver, hence you need DBI. It is available from the same source where you got the DBD::mysql distribution from. =item C compiler A C compiler is only required if you install from source. In most cases there are binary distributions of DBD::mysql available. However, if you need a C compiler, make sure, that it is the same C compiler that was used for compiling Perl and MySQL! Otherwise you will almost definitely encounter problems because of differences in the underlying C runtime libraries. In the worst case, this might mean to compile Perl and MySQL yourself. But believe me, experience shows that a lot of problems are fixed this way. =item Gzip libraries Late versions of MySQL come with support for compression. Thus it B be required that you have install an RPM package like libz-devel, libgz-devel or something similar. =back =head1 BINARY INSTALLATION Binary installation is possible in the most cases, depending on your system. =head2 Windows =head3 Strawberry Perl Strawberry Perl comes bundled with DBD::mysql and the needed client libraries. =head3 ActiveState Perl ActivePerl offers a PPM archive of DBD::mysql. All you need to do is typing in a cmd.exe window: ppm install DBD-mysql This will fetch the module via HTTP and install them. If you need to use a WWW proxy server, the environment variable HTTP_proxy must be set: set HTTP_proxy=http://myproxy.example.com:8080/ ppm install DBD-mysql Of course you need to replace the host name C and the port number C<8080> with your local values. If the above procedure doesn't work, please upgrade to the latest version of ActivePerl. ActiveState has a policy where it only provides access free-of-charge for the PPM mirrors of the last few stable Perl releases. If you have an older perl, you'd either need to upgrade your perl or contact ActiveState about a subscription. =head2 Red Hat Enterprise Linux (RHEL), CentOS and Fedora Red Hat Enterprise Linux, its community derivatives such as CentOS, and Fedora come with MySQL and DBD::mysql. Use the following command to install DBD::mysql: yum install "perl(DBD::mysql)" =head2 Debian and Ubuntu On Debian, Ubuntu and derivatives you can install DBD::mysql from the repositories with the following command: sudo apt-get install libdbd-mysql-perl =head2 SLES and openSUSE On SUSE Linux Enterprise and the community version openSUSE, you can install DBD::mysql from the repositories with the following command: zypper install perl-DBD-mysql =head2 Other systems In the case of other Linux or FreeBSD distributions it is very likely that all you need comes with your distribution. I just cannot give you names, as I am not using these systems. Please let me know if you find the files in your favorite Linux or FreeBSD distribution so that I can extend the above list. =head1 SOURCE INSTALLATION So you need to install from sources. If you are lucky, the Perl module C will do all for you, thanks to the excellent work of Andreas König. Otherwise you will need to do a manual installation. All of these installation types have their own section: L, L and L. The DBD::mysql Makefile.PL needs to know where to find your MySQL installation. This may be achieved using command line switches (see L) or automatically using the mysql_config binary which comes with most MySQL distributions. If your MySQL distribution contains mysql_config the easiest method is to ensure this binary is on your path. Typically, this is the case if you've installed the mysql library from your systems' package manager. e.g. PATH=$PATH:/usr/local/mysql/bin export PATH As stated, to compile DBD::mysql you'll need a C compiler. This should be the same compiler as the one used to build perl AND the mysql client libraries. If you're on linux, this is most typically the case and you need not worry. If you're on UNIX systems, you might want to pay attention. Also you'll need to get the MySQL client and development headers on your system. The easiest is to get these from your package manager. To run the tests that ship with the module, you'll need access to a running MySQL server. This can be running on localhost, but it can also be on a remote machine. On Fedora the process is as follows. Please note that Fedora actually ships with MariaDB but not with MySQL. This is not a problem, it will work just as well. In this example we install and start a local server for running the tests against. yum -y install make gcc mariadb-devel mariadb-libs mariadb-server yum -y install "perl(Test::Deep)" "perl(Test::More)" systemctl start mariadb.service =head2 Environment Variables For ease of use, you can set environment variables for DBD::mysql installation. You can set any or all of the options, and export them by putting them in your .bashrc or the like: export DBD_MYSQL_CFLAGS=-I/usr/local/mysql/include/mysql export DBD_MYSQL_LIBS="-L/usr/local/mysql/lib/mysql -lmysqlclient" export DBD_MYSQL_EMBEDDED= export DBD_MYSQL_CONFIG=mysql_config export DBD_MYSQL_NOCATCHSTDERR=0 export DBD_MYSQL_NOFOUNDROWS=0 export DBD_MYSQL_NOSSL= export DBD_MYSQL_TESTDB=test export DBD_MYSQL_TESTHOST=localhost export DBD_MYSQL_TESTPASSWORD=s3kr1+ export DBD_MYSQL_TESTPORT=3306 export DBD_MYSQL_TESTUSER=me The most useful may be the host, database, port, socket, user, and password. Installation will first look to your mysql_config, and then your environment variables, and then it will guess with intelligent defaults. =head2 CPAN installation Installation of DBD::mysql can be incredibly easy: cpan DBD::mysql Please note that this will only work if the prerequisites are fulfilled, which means you have a C-compiler installed, and you have the development headers and mysql client libraries available on your system. If you are using the CPAN module for the first time, just answer the questions by accepting the defaults which are fine in most cases. If you cannot get the CPAN module working, you might try manual installation. If installation with CPAN fails because the your local settings have been guessed wrong, you need to ensure MySQL's mysql_config is on your path (see L) or alternatively create a script called C. This is described in more details later. L. =head2 Manual installation For a manual installation you need to fetch the DBD::mysql source distribution. The latest version is always available from https://metacpan.org/module/DBD::mysql The name is typically something like DBD-mysql-4.025.tar.gz The archive needs to be extracted. On Windows you may use a tool like 7-zip, on *nix you type tar xf DBD-mysql-4.025.tar.gz This will create a subdirectory DBD-mysql-4.025. Enter this subdirectory and type perl Makefile.PL make make test (On Windows you may need to replace "make" with "dmake" or "nmake".) If the tests seem to look fine, you may continue with make install If the compilation (make) or tests fail, you might need to configure some settings. For example you might choose a different database, the C compiler or the linker might need some flags. L. L. L. For Cygwin there is a special section below. L. =head2 Configuration The install script "Makefile.PL" can be configured via a lot of switches. All switches can be used on the command line. For example, the test database: perl Makefile.PL --testdb= If you do not like configuring these switches on the command line, you may alternatively create a script called C. This is described later on. Available switches are: =over =item testdb Name of the test database, defaults to B. =item testuser Name of the test user, defaults to empty. If the name is empty, then the currently logged in users name will be used. =item testpassword Password of the test user, defaults to empty. =item testhost Host name or IP number of the test database; defaults to localhost. =item testport Port number of the test database =item ps-protcol=1 or 0 Whether to run the test suite using server prepared statements or driver emulated prepared statements. ps-protocol=1 means use server prepare, ps-protocol=0 means driver emulated. =item cflags This is a list of flags that you want to give to the C compiler. The most important flag is the location of the MySQL header files. For example, on Red Hat Linux the header files are in /usr/include/mysql and you might try -I/usr/include/mysql On Windows the header files may be in C:\mysql\include and you might try -IC:\mysql\include The default flags are determined by running mysql_config --cflags More details on the C compiler flags can be found in the following section. L. =item libs This is a list of flags that you want to give to the linker or loader. The most important flags are the locations and names of additional libraries. For example, on Red Hat Linux your MySQL client libraries are in /usr/lib/mysql and you might try -L/usr/lib/mysql -lmysqlclient -lz On Windows the libraries may be in C:\mysql\lib and -LC:\mysql\lib -lmysqlclient might be a good choice. The default flags are determined by running mysql_config --libs More details on the linker flags can be found in a separate section. L. =back If a switch is not present on the command line, then the script C will be executed. This script comes as part of the MySQL distribution. For example, to determine the C compiler flags, we are executing mysql_config --cflags mysql_config --libs If you want to configure your own settings for database name, database user and so on, then you have to create a script with the same name, that replies =head2 Compiler flags Note: the following info about compiler and linker flags, you shouldn't have to use these options because Makefile.PL is pretty good at utilizing mysql_config to get the flags that you need for a successful compile. It is typically not so difficult to determine the appropriate flags for the C compiler. The linker flags, which you find in the next section, are another story. The determination of the C compiler flags is usually left to a configuration script called F, which can be invoked with mysql_config --cflags When doing so, it will emit a line with suggested C compiler flags, for example like this: -L/usr/include/mysql The C compiler must find some header files. Header files have the extension C<.h>. MySQL header files are, for example, F and F. In most cases the header files are not installed by default. For example, on Windows it is an installation option of the MySQL setup program (Custom installation), whether the header files are installed or not. On Red Hat Linux, you need to install an RPM archive F or F. If you know the location of the header files, then you will need to add an option -L
to the C compiler flags, for example C<-L/usr/include/mysql>. =head2 Linker flags Appropriate linker flags are the most common source of problems while installing DBD::mysql. I will only give a rough overview, you'll find more details in the troubleshooting section. L The determination of the C compiler flags is usually left to a configuration script called F, which can be invoked with mysql_config --libs When doing so, it will emit a line with suggested C compiler flags, for example like this: -L'/usr/lib/mysql' -lmysqlclient -lnsl -lm -lz -lcrypt The following items typically need to be configured for the linker: =over =item The mysqlclient library The MySQL client library comes as part of the MySQL distribution. Depending on your system it may be a file called F statically linked library, Unix F dynamically linked library, Unix F statically linked library, Windows F dynamically linked library, Windows or something similar. As in the case of the header files, the client library is typically not installed by default. On Windows you will need to select them while running the MySQL setup program (Custom installation). On Red Hat Linux an RPM archive F or F must be installed. The linker needs to know the location and name of the mysqlclient library. This can be done by adding the flags -L -lmysqlclient or by adding the complete path name. Examples: -L/usr/lib/mysql -lmysqlclient -LC:\mysql\lib -lmysqlclient If you would like to use the static libraries (and there are excellent reasons to do so), you need to create a separate directory, copy the static libraries to that place and use the -L switch above to point to your new directory. For example: mkdir /tmp/mysql-static cp /usr/lib/mysql/*.a /tmp/mysql-static perl Makefile.PL --libs="-L/tmp/mysql-static -lmysqlclient" make make test make install rm -rf /tmp/mysql-static =item The gzip library The MySQL client can use compression when talking to the MySQL server, a nice feature when sending or receiving large texts over a slow network. On Unix you typically find the appropriate file name by running ldconfig -p | grep libz ldconfig -p | grep libgz Once you know the name (libz.a or libgz.a is best), just add it to the list of linker flags. If this seems to be causing problem you may also try to link without gzip libraries. =back =head1 ENCRYPTED CONNECTIONS via SSL Connecting to your servers over an encrypted connection (SSL) is only possible if you enabled this setting at build time. Since version 4.034, this is the default. Attempting to connect to a server that requires an encrypted connection without first having L compiled with the C<--ssl> option will result in an error that makes things appear as if your password is incorrect. If you want to compile L without SSL support, which you might probably only want if you for some reason can't install libssl headers, you can do this by passing the C<--nossl> option to Makefile.PL or by setting the DBD_MYSQL_NOSSL environment variable to '1'. =head1 MARIADB NATIVE CLIENT INSTALLATION The MariaDB native client is another option for connecting to a MySQL· database licensed LGPL 2.1. To build DBD::mysql against this client, you will first need to build the client. Generally, this is done with the following: cd path/to/src/mariadb-native-client cmake -G "Unix Makefiles' make sudo make install Once the client is built and installed, you can build DBD::mysql against it: perl Makefile.PL --testuser=xxx --testpassword=xxx --testsocket=/path/to//mysqld.sock --mysql_config=/usr/local/bin/mariadb_config· make make test make install =head1 SPECIAL SYSTEMS Below you find information on particular systems: =head2 macOS For installing DBD::mysql you need to have the libssl header files and the mysql client libs. The easiest way to install these is using Homebrew (L). Once you have Homebrew set up, you can simply install the dependencies using brew install openssl mysql-connector-c Then you can install DBD::mysql using your cpan client. =head2 Cygwin If you are a user of Cygwin you already know, it contains a nicely running perl 5.6.1, installation of additional modules usually works like a charm via the standard procedure of perl makefile.PL make make test make install The Windows binary distribution of MySQL runs smoothly under Cygwin. You can start/stop the server and use all Windows clients without problem. But to install DBD::mysql you have to take a little special action. Don't attempt to build DBD::mysql against either the MySQL Windows or Linux/Unix BINARY distributions: neither will work! You MUST compile the MySQL clients yourself under Cygwin, to get a 'libmysqlclient.a' compiled under Cygwin. Really! You'll only need that library and the header files, you don't need any other client parts. Continue to use the Windows binaries. And don't attempt (currently) to build the MySQL Server part, it is unnecessary, as MySQL AB does an excellent job to deliver optimized binaries for the mainstream operating systems, and it is told, that the server compiled under Cygwin is unstable. Install a MySQL server for testing against. You can install the regular Windows MySQL server package on your Windows machine, or you can also test against a MySQL server on a remote host. =head3 Build MySQL clients under Cygwin: download the MySQL LINUX source from L, unpack mysql-.tar.gz into some tmp location and from this directory run configure: ./configure --prefix=/usr/local/mysql --without-server This prepares the Makefile with the installed Cygwin features. It takes some time, but should finish without error. The 'prefix', as given, installs the whole Cygwin/MySQL thingy into a location not normally in your PATH, so that you continue to use already installed Windows binaries. The --without-server parameter tells configure to only build the clients. make This builds all MySQL client parts ... be patient. It should finish finally without any error. make install This installs the compiled client files under /usr/local/mysql/. Remember, you don't need anything except the library under /usr/local/mysql/lib and the headers under /usr/local/mysql/include! Essentially you are now done with this part. If you want, you may try your compiled binaries shortly; for that, do: cd /usr/local/mysql/bin ./mysql -h 127.0.0.1 The host (-h) parameter 127.0.0.1 targets the local host, but forces the mysql client to use a TCP/IP connection. The default would be a pipe/socket connection (even if you say '-h localhost') and this doesn't work between Cygwin and Windows (as far as I know). If you have your MySQL server running on some other box, then please substitute '127.0.0.1' with the name or IP-number of that box. Please note, in my environment the 'mysql' client did not accept a simple RETURN, I had to use CTRL-RETURN to send commands ... strange, but I didn't attempt to fix that, as we are only interested in the built lib and headers. At the 'mysql>' prompt do a quick check: mysql> use mysql mysql> show tables; mysql> select * from db; mysql> exit You are now ready to build DBD::mysql! =head3 compile DBD::mysql download and extract DBD-mysql-.tar.gz from CPAN cd into unpacked dir DBD-mysql- you probably did that already, if you are reading this! cp /usr/local/mysql/bin/mysql_config . This copies the executable script mentioned in the DBD::mysql docs from your just built Cywin/MySQL client directory; it knows about your Cygwin installation, especially about the right libraries to link with. perl Makefile.PL --testhost=127.0.0.1 The --testhost=127.0.0.1 parameter again forces a TCP/IP connection to the MySQL server on the local host instead of a pipe/socket connection for the 'make test' phase. make This should run without error make test make install This installs DBD::mysql into the Perl hierarchy. =head1 KNOWN PROBLEMS =head2 no gzip on your system Some Linux distributions don't come with a gzip library by default. Running "make" terminates with an error message like LD_RUN_PATH="/usr/lib/mysql:/lib:/usr/lib" gcc -o blib/arch/auto/DBD/mysql/mysql.so -shared -L/usr/local/lib dbdimp.o mysql.o -L/usr/lib/mysql -lmysqlclient -lm -L/usr/lib/gcc-lib/i386-redhat-linux/2.96 -lgcc -lz /usr/bin/ld: cannot find -lz collect2: ld returned 1 exit status make: *** [blib/arch/auto/DBD/mysql/mysql.so] Error 1 If this is the case for you, install an RPM archive like libz-devel, libgz-devel, zlib-devel or gzlib-devel or something similar. =head2 different compiler for mysql and perl If Perl was compiled with gcc or egcs, but MySQL was compiled with another compiler or on another system, an error message like this is very likely when running "Make test": t/00base............install_driver(mysql) failed: Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: ../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: _umoddi3 at /usr/local/perl-5.005/lib/5.005/i586-linux-thread/DynaLoader.pm line 168. This means, that your linker doesn't include libgcc.a. You have the following options: The solution is telling the linker to use libgcc. Run gcc --print-libgcc-file to determine the exact location of libgcc.a or for older versions of gcc gcc -v to determine the directory. If you know the directory, add a -L -lgcc to the list of C compiler flags. L. L. =head1 SUPPORT Finally, if everything else fails, you are not alone. First of all, for an immediate answer, you should look into the archives of the dbi-users mailing list, which is available at L To subscribe to this list, send and email to dbi-users-subscribe@perl.org If you don't find an appropriate posting and reply in the mailing list, please post a question. Typically a reply will be seen within one or two days. perl5/DBD/Gofer.pm000044400000137670152462470720007611 0ustar00{ package DBD::Gofer; use strict; require DBI; require DBI::Gofer::Request; require DBI::Gofer::Response; require Carp; our $VERSION = "0.015327"; # $Id: Gofer.pm 15326 2012-06-06 16:32:38Z Tim $ # # Copyright (c) 2007, Tim Bunce, Ireland # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. # attributes we'll allow local STORE our %xxh_local_store_attrib = map { $_=>1 } qw( Active CachedKids Callbacks DbTypeSubclass ErrCount Executed FetchHashKeyName HandleError HandleSetErr InactiveDestroy AutoInactiveDestroy PrintError PrintWarn Profile RaiseError RaiseWarn RootClass ShowErrorStatement Taint TaintIn TaintOut TraceLevel Warn dbi_quote_identifier_cache dbi_connect_closure dbi_go_execute_unique ); our %xxh_local_store_attrib_if_same_value = map { $_=>1 } qw( Username dbi_connect_method ); our $drh = undef; # holds driver handle once initialized our $methods_already_installed; sub driver{ return $drh if $drh; DBI->setup_driver('DBD::Gofer'); unless ($methods_already_installed++) { my $opts = { O=> 0x0004 }; # IMA_KEEP_ERR DBD::Gofer::db->install_method('go_dbh_method', $opts); DBD::Gofer::st->install_method('go_sth_method', $opts); DBD::Gofer::st->install_method('go_clone_sth', $opts); DBD::Gofer::db->install_method('go_cache', $opts); DBD::Gofer::st->install_method('go_cache', $opts); } my($class, $attr) = @_; $class .= "::dr"; ($drh) = DBI::_new_drh($class, { 'Name' => 'Gofer', 'Version' => $VERSION, 'Attribution' => 'DBD Gofer by Tim Bunce', }); $drh; } sub CLONE { undef $drh; } sub go_cache { my $h = shift; $h->{go_cache} = shift if @_; # return handle's override go_cache, if it has one return $h->{go_cache} if defined $h->{go_cache}; # or else the transports default go_cache return $h->{go_transport}->{go_cache}; } sub set_err_from_response { # set error/warn/info and propagate warnings my $h = shift; my $response = shift; if (my $warnings = $response->warnings) { warn $_ for @$warnings; } my ($err, $errstr, $state) = $response->err_errstr_state; # Only set_err() if there's an error else leave the current values # (The current values will normally be set undef by the DBI dispatcher # except for methods marked KEEPERR such as ping.) $h->set_err($err, $errstr, $state) if defined $err; return undef; } sub install_methods_proxy { my ($installed_methods) = @_; while ( my ($full_method, $attr) = each %$installed_methods ) { # need to install both a DBI dispatch stub and a proxy stub # (the dispatch stub may be already here due to local driver use) DBI->_install_method($full_method, "", $attr||{}) unless defined &{$full_method}; # now install proxy stubs on the driver side $full_method =~ m/^DBI::(\w\w)::(\w+)$/ or die "Invalid method name '$full_method' for install_method"; my ($type, $method) = ($1, $2); my $driver_method = "DBD::Gofer::${type}::${method}"; next if defined &{$driver_method}; my $sub; if ($type eq 'db') { $sub = sub { return shift->go_dbh_method(undef, $method, @_) }; } else { $sub = sub { shift->set_err($DBI::stderr, "Can't call \$${type}h->$method when using DBD::Gofer"); return; }; } no strict 'refs'; *$driver_method = $sub; } } } { package DBD::Gofer::dr; # ====== DRIVER ====== $imp_data_size = 0; use strict; sub connect_cached { my ($drh, $dsn, $user, $auth, $attr)= @_; $attr ||= {}; return $drh->SUPER::connect_cached($dsn, $user, $auth, { (%$attr), go_connect_method => $attr->{go_connect_method} || 'connect_cached', }); } sub connect { my($drh, $dsn, $user, $auth, $attr)= @_; my $orig_dsn = $dsn; # first remove dsn= and everything after it my $remote_dsn = ($dsn =~ s/;?\bdsn=(.*)$// && $1) or return $drh->set_err($DBI::stderr, "No dsn= argument in '$orig_dsn'"); if ($attr->{go_bypass}) { # don't use DBD::Gofer for this connection # useful for testing with DBI_AUTOPROXY, e.g., t/03handle.t return DBI->connect($remote_dsn, $user, $auth, $attr); } my %go_attr; # extract any go_ attributes from the connect() attr arg for my $k (grep { /^go_/ } keys %$attr) { $go_attr{$k} = delete $attr->{$k}; } # then override those with any attributes embedded in our dsn (not remote_dsn) for my $kv (grep /=/, split /;/, $dsn, -1) { my ($k, $v) = split /=/, $kv, 2; $go_attr{ "go_$k" } = $v; } if (not ref $go_attr{go_policy}) { # if not a policy object already my $policy_class = $go_attr{go_policy} || 'classic'; $policy_class = "DBD::Gofer::Policy::$policy_class" unless $policy_class =~ /::/; _load_class($policy_class) or return $drh->set_err($DBI::stderr, "Can't load $policy_class: $@"); # replace policy name in %go_attr with policy object $go_attr{go_policy} = eval { $policy_class->new(\%go_attr) } or return $drh->set_err($DBI::stderr, "Can't instanciate $policy_class: $@"); } # policy object is left in $go_attr{go_policy} so transport can see it my $go_policy = $go_attr{go_policy}; if ($go_attr{go_cache} and not ref $go_attr{go_cache}) { # if not a cache object already my $cache_class = $go_attr{go_cache}; $cache_class = "DBI::Util::CacheMemory" if $cache_class eq '1'; _load_class($cache_class) or return $drh->set_err($DBI::stderr, "Can't load $cache_class $@"); $go_attr{go_cache} = eval { $cache_class->new() } or $drh->set_err(0, "Can't instanciate $cache_class: $@"); # warning } # delete any other attributes that don't apply to transport my $go_connect_method = delete $go_attr{go_connect_method}; my $transport_class = delete $go_attr{go_transport} or return $drh->set_err($DBI::stderr, "No transport= argument in '$orig_dsn'"); $transport_class = "DBD::Gofer::Transport::$transport_class" unless $transport_class =~ /::/; _load_class($transport_class) or return $drh->set_err($DBI::stderr, "Can't load $transport_class: $@"); my $go_transport = eval { $transport_class->new(\%go_attr) } or return $drh->set_err($DBI::stderr, "Can't instanciate $transport_class: $@"); my $request_class = "DBI::Gofer::Request"; my $go_request = eval { my $go_attr = { %$attr }; # XXX user/pass of fwd server vs db server ? also impact of autoproxy if ($user) { $go_attr->{Username} = $user; $go_attr->{Password} = $auth; } # delete any attributes we can't serialize (or don't want to) delete @{$go_attr}{qw(Profile HandleError HandleSetErr Callbacks)}; # delete any attributes that should only apply to the client-side delete @{$go_attr}{qw(RootClass DbTypeSubclass)}; $go_connect_method ||= $go_policy->connect_method($remote_dsn, $go_attr) || 'connect'; $request_class->new({ dbh_connect_call => [ $go_connect_method, $remote_dsn, $user, $auth, $go_attr ], }) } or return $drh->set_err($DBI::stderr, "Can't instanciate $request_class: $@"); my ($dbh, $dbh_inner) = DBI::_new_dbh($drh, { 'Name' => $dsn, 'USER' => $user, go_transport => $go_transport, go_request => $go_request, go_policy => $go_policy, }); # mark as inactive temporarily for STORE. Active not set until connected() called. $dbh->STORE(Active => 0); # should we ping to check the connection # and fetch dbh attributes my $skip_connect_check = $go_policy->skip_connect_check($attr, $dbh); if (not $skip_connect_check) { if (not $dbh->go_dbh_method(undef, 'ping')) { return undef if $dbh->err; # error already recorded, typically return $dbh->set_err($DBI::stderr, "ping failed"); } } return $dbh; } sub _load_class { # return true or false+$@ my $class = shift; (my $pm = $class) =~ s{::}{/}g; $pm .= ".pm"; return 1 if eval { require $pm }; delete $INC{$pm}; # shouldn't be needed (perl bug?) and assigning undef isn't enough undef; # error in $@ } } { package DBD::Gofer::db; # ====== DATABASE ====== $imp_data_size = 0; use strict; use Carp qw(carp croak); my %dbh_local_store_attrib = %DBD::Gofer::xxh_local_store_attrib; sub connected { shift->STORE(Active => 1); } sub go_dbh_method { my $dbh = shift; my $meta = shift; # @_ now contains ($method_name, @args) my $request = $dbh->{go_request}; $request->init_request([ wantarray, @_ ], $dbh); ++$dbh->{go_request_count}; my $go_policy = $dbh->{go_policy}; my $dbh_attribute_update = $go_policy->dbh_attribute_update(); $request->dbh_attributes( $go_policy->dbh_attribute_list() ) if $dbh_attribute_update eq 'every' or $dbh->{go_request_count}==1; $request->dbh_last_insert_id_args($meta->{go_last_insert_id_args}) if $meta->{go_last_insert_id_args}; my $transport = $dbh->{go_transport} or return $dbh->set_err($DBI::stderr, "Not connected (no transport)"); local $transport->{go_cache} = $dbh->{go_cache} if defined $dbh->{go_cache}; my ($response, $retransmit_sub) = $transport->transmit_request($request); $response ||= $transport->receive_response($request, $retransmit_sub); $dbh->{go_response} = $response or die "No response object returned by $transport"; die "response '$response' returned by $transport is not a response object" unless UNIVERSAL::isa($response,"DBI::Gofer::Response"); if (my $dbh_attributes = $response->dbh_attributes) { # XXX installed_methods piggybacks on dbh_attributes for now if (my $installed_methods = delete $dbh_attributes->{dbi_installed_methods}) { DBD::Gofer::install_methods_proxy($installed_methods) if $dbh->{go_request_count}==1; } # XXX we don't STORE here, we just stuff the value into the attribute cache $dbh->{$_} = $dbh_attributes->{$_} for keys %$dbh_attributes; } my $rv = $response->rv; if (my $resultset_list = $response->sth_resultsets) { # dbh method call returned one or more resultsets # (was probably a metadata method like table_info) # # setup an sth but don't execute/forward it my $sth = $dbh->prepare(undef, { go_skip_prepare_check => 1 }); # set the sth response to our dbh response (tied %$sth)->{go_response} = $response; # setup the sth with the results in our response $sth->more_results; # and return that new sth as if it came from original request $rv = [ $sth ]; } elsif (!$rv) { # should only occur for major transport-level error #carp("no rv in response { @{[ %$response ]} }"); $rv = [ ]; } DBD::Gofer::set_err_from_response($dbh, $response); return (wantarray) ? @$rv : $rv->[0]; } # Methods that should be forwarded but can be cached for my $method (qw( tables table_info column_info primary_key_info foreign_key_info statistics_info data_sources type_info_all get_info parse_trace_flags parse_trace_flag func )) { my $policy_name = "cache_$method"; my $super_name = "SUPER::$method"; my $sub = sub { my $dbh = shift; my $rv; # if we know the remote side doesn't override the DBI's default method # then we might as well just call the DBI's default method on the client # (which may, in turn, call other methods that are forwarded, like get_info) if ($dbh->{dbi_default_methods}{$method} && $dbh->{go_policy}->skip_default_methods()) { $dbh->trace_msg(" !! $method: using local default as remote method is also default\n"); return $dbh->$super_name(@_); } my $cache; my $cache_key; if (my $cache_it = $dbh->{go_policy}->$policy_name(undef, $dbh, @_)) { $cache = $dbh->{go_meta_cache} ||= {}; # keep separate from go_cache $cache_key = sprintf "%s_wa%d(%s)", $policy_name, wantarray||0, join(",\t", map { # XXX basic but sufficient for now !ref($_) ? DBI::neat($_,1e6) : ref($_) eq 'ARRAY' ? DBI::neat_list($_,1e6,",\001") : ref($_) eq 'HASH' ? do { my @k = sort keys %$_; DBI::neat_list([@k,@{$_}{@k}],1e6,",\002") } : do { warn "unhandled argument type ($_)"; $_ } } @_); if ($rv = $cache->{$cache_key}) { $dbh->trace_msg("$method(@_) returning previously cached value ($cache_key)\n",4); my @cache_rv = @$rv; # if it's an sth we have to clone it $cache_rv[0] = $cache_rv[0]->go_clone_sth if UNIVERSAL::isa($cache_rv[0],'DBI::st'); return (wantarray) ? @cache_rv : $cache_rv[0]; } } $rv = [ (wantarray) ? ($dbh->go_dbh_method(undef, $method, @_)) : scalar $dbh->go_dbh_method(undef, $method, @_) ]; if ($cache) { $dbh->trace_msg("$method(@_) caching return value ($cache_key)\n",4); my @cache_rv = @$rv; # if it's an sth we have to clone it #$cache_rv[0] = $cache_rv[0]->go_clone_sth # if UNIVERSAL::isa($cache_rv[0],'DBI::st'); $cache->{$cache_key} = \@cache_rv unless UNIVERSAL::isa($cache_rv[0],'DBI::st'); # XXX cloning sth not yet done } return (wantarray) ? @$rv : $rv->[0]; }; no strict 'refs'; *$method = $sub; } # Methods that can use the DBI defaults for some situations/drivers for my $method (qw( quote quote_identifier )) { # XXX keep DBD::Gofer::Policy::Base in sync my $policy_name = "locally_$method"; my $super_name = "SUPER::$method"; my $sub = sub { my $dbh = shift; # if we know the remote side doesn't override the DBI's default method # then we might as well just call the DBI's default method on the client # (which may, in turn, call other methods that are forwarded, like get_info) if ($dbh->{dbi_default_methods}{$method} && $dbh->{go_policy}->skip_default_methods()) { $dbh->trace_msg(" !! $method: using local default as remote method is also default\n"); return $dbh->$super_name(@_); } # false: use remote gofer # 1: use local DBI default method # code ref: use the code ref my $locally = $dbh->{go_policy}->$policy_name($dbh, @_); if ($locally) { return $locally->($dbh, @_) if ref $locally eq 'CODE'; return $dbh->$super_name(@_); } return $dbh->go_dbh_method(undef, $method, @_); # propagate context }; no strict 'refs'; *$method = $sub; } # Methods that should always fail for my $method (qw( begin_work commit rollback )) { no strict 'refs'; *$method = sub { return shift->set_err($DBI::stderr, "$method not available with DBD::Gofer") } } sub do { my ($dbh, $sql, $attr, @args) = @_; delete $dbh->{Statement}; # avoid "Modification of non-creatable hash value attempted" $dbh->{Statement} = $sql; # for profiling and ShowErrorStatement my $meta = { go_last_insert_id_args => $attr->{go_last_insert_id_args} }; return $dbh->go_dbh_method($meta, 'do', $sql, $attr, @args); } sub ping { my $dbh = shift; return $dbh->set_err('', "can't ping while not connected") # info unless $dbh->SUPER::FETCH('Active'); my $skip_ping = $dbh->{go_policy}->skip_ping(); return ($skip_ping) ? 1 : $dbh->go_dbh_method(undef, 'ping', @_); } sub last_insert_id { my $dbh = shift; my $response = $dbh->{go_response} or return undef; return $response->last_insert_id; } sub FETCH { my ($dbh, $attrib) = @_; # FETCH is effectively already cached because the DBI checks the # attribute cache in the handle before calling FETCH # and this FETCH copies the value into the attribute cache # forward driver-private attributes (except ours) if ($attrib =~ m/^[a-z]/ && $attrib !~ /^go_/) { my $value = $dbh->go_dbh_method(undef, 'FETCH', $attrib); $dbh->{$attrib} = $value; # XXX forces caching by DBI return $dbh->{$attrib} = $value; } # else pass up to DBI to handle return $dbh->SUPER::FETCH($attrib); } sub STORE { my ($dbh, $attrib, $value) = @_; if ($attrib eq 'AutoCommit') { croak "Can't enable transactions when using DBD::Gofer" if !$value; return $dbh->SUPER::STORE($attrib => ($value) ? -901 : -900); } return $dbh->SUPER::STORE($attrib => $value) # we handle this attribute locally if $dbh_local_store_attrib{$attrib} # or it's a private_ (application) attribute or $attrib =~ /^private_/ # or not yet connected (ie being called by DBI->connect) or not $dbh->FETCH('Active'); return $dbh->SUPER::STORE($attrib => $value) if $DBD::Gofer::xxh_local_store_attrib_if_same_value{$attrib} && do { # values are the same my $crnt = $dbh->FETCH($attrib); local $^W; (defined($value) ^ defined($crnt)) ? 0 # definedness differs : $value eq $crnt; }; # dbh attributes are set at connect-time - see connect() carp("Can't alter \$dbh->{$attrib} after handle created with DBD::Gofer") if $dbh->FETCH('Warn'); return $dbh->set_err($DBI::stderr, "Can't alter \$dbh->{$attrib} after handle created with DBD::Gofer"); } sub disconnect { my $dbh = shift; $dbh->{go_transport} = undef; $dbh->STORE(Active => 0); } sub prepare { my ($dbh, $statement, $attr)= @_; return $dbh->set_err($DBI::stderr, "Can't prepare when disconnected") unless $dbh->FETCH('Active'); $attr = { %$attr } if $attr; # copy so we can edit my $policy = delete($attr->{go_policy}) || $dbh->{go_policy}; my $lii_args = delete $attr->{go_last_insert_id_args}; my $go_prepare = delete($attr->{go_prepare_method}) || $dbh->{go_prepare_method} || $policy->prepare_method($dbh, $statement, $attr) || 'prepare'; # e.g. for code not using placeholders my $go_cache = delete $attr->{go_cache}; # set to undef if there are no attributes left for the actual prepare call $attr = undef if $attr and not %$attr; my ($sth, $sth_inner) = DBI::_new_sth($dbh, { Statement => $statement, go_prepare_call => [ 0, $go_prepare, $statement, $attr ], # go_method_calls => [], # autovivs if needed go_request => $dbh->{go_request}, go_transport => $dbh->{go_transport}, go_policy => $policy, go_last_insert_id_args => $lii_args, go_cache => $go_cache, }); $sth->STORE(Active => 0); # XXX needed? It should be the default my $skip_prepare_check = $policy->skip_prepare_check($attr, $dbh, $statement, $attr, $sth); if (not $skip_prepare_check) { $sth->go_sth_method() or return undef; } return $sth; } sub prepare_cached { my ($dbh, $sql, $attr, $if_active)= @_; $attr ||= {}; return $dbh->SUPER::prepare_cached($sql, { %$attr, go_prepare_method => $attr->{go_prepare_method} || 'prepare_cached', }, $if_active); } *go_cache = \&DBD::Gofer::go_cache; } { package DBD::Gofer::st; # ====== STATEMENT ====== $imp_data_size = 0; use strict; my %sth_local_store_attrib = (%DBD::Gofer::xxh_local_store_attrib, NUM_OF_FIELDS => 1); sub go_sth_method { my ($sth, $meta) = @_; if (my $ParamValues = $sth->{ParamValues}) { my $ParamAttr = $sth->{ParamAttr}; # XXX the sort here is a hack to work around a DBD::Sybase bug # but only works properly for params 1..9 # (reverse because of the unshift) my @params = reverse sort keys %$ParamValues; if (@params > 9 && ($sth->{Database}{go_dsn}||'') =~ /dbi:Sybase/) { # if more than 9 then we need to do a proper numeric sort # also warn to alert user of this issue warn "Sybase param binding order hack in use"; @params = sort { $b <=> $a } @params; } for my $p (@params) { # unshift to put binds before execute call unshift @{ $sth->{go_method_calls} }, [ 'bind_param', $p, $ParamValues->{$p}, $ParamAttr->{$p} ]; } } my $dbh = $sth->{Database} or die "panic"; ++$dbh->{go_request_count}; my $request = $sth->{go_request}; $request->init_request($sth->{go_prepare_call}, $sth); $request->sth_method_calls(delete $sth->{go_method_calls}) if $sth->{go_method_calls}; $request->sth_result_attr({}); # (currently) also indicates this is an sth request $request->dbh_last_insert_id_args($meta->{go_last_insert_id_args}) if $meta->{go_last_insert_id_args}; my $go_policy = $sth->{go_policy}; my $dbh_attribute_update = $go_policy->dbh_attribute_update(); $request->dbh_attributes( $go_policy->dbh_attribute_list() ) if $dbh_attribute_update eq 'every' or $dbh->{go_request_count}==1; my $transport = $sth->{go_transport} or return $sth->set_err($DBI::stderr, "Not connected (no transport)"); local $transport->{go_cache} = $sth->{go_cache} if defined $sth->{go_cache}; my ($response, $retransmit_sub) = $transport->transmit_request($request); $response ||= $transport->receive_response($request, $retransmit_sub); $sth->{go_response} = $response or die "No response object returned by $transport"; $dbh->{go_response} = $response; # mainly for last_insert_id if (my $dbh_attributes = $response->dbh_attributes) { # XXX we don't STORE here, we just stuff the value into the attribute cache $dbh->{$_} = $dbh_attributes->{$_} for keys %$dbh_attributes; # record the values returned, so we know that we have fetched # values are which we have fetched (see dbh->FETCH method) $dbh->{go_dbh_attributes_fetched} = $dbh_attributes; } my $rv = $response->rv; # may be undef on error if ($response->sth_resultsets) { # setup first resultset - including sth attributes $sth->more_results; } else { $sth->STORE(Active => 0); $sth->{go_rows} = $rv; } # set error/warn/info (after more_results as that'll clear err) DBD::Gofer::set_err_from_response($sth, $response); return $rv; } sub bind_param { my ($sth, $param, $value, $attr) = @_; $sth->{ParamValues}{$param} = $value; $sth->{ParamAttr}{$param} = $attr if defined $attr; # attr is sticky if not explicitly set return 1; } sub execute { my $sth = shift; $sth->bind_param($_, $_[$_-1]) for (1..@_); push @{ $sth->{go_method_calls} }, [ 'execute' ]; my $meta = { go_last_insert_id_args => $sth->{go_last_insert_id_args} }; return $sth->go_sth_method($meta); } sub more_results { my $sth = shift; $sth->finish; my $response = $sth->{go_response} or do { # e.g., we haven't sent a request yet (ie prepare then more_results) $sth->trace_msg(" No response object present", 3); return; }; my $resultset_list = $response->sth_resultsets or return $sth->set_err($DBI::stderr, "No sth_resultsets"); my $meta = shift @$resultset_list or return undef; # no more result sets #warn "more_results: ".Data::Dumper::Dumper($meta); # pull out the special non-attributes first my ($rowset, $err, $errstr, $state) = delete @{$meta}{qw(rowset err errstr state)}; # copy meta attributes into attribute cache my $NUM_OF_FIELDS = delete $meta->{NUM_OF_FIELDS}; $sth->STORE('NUM_OF_FIELDS', $NUM_OF_FIELDS); # XXX need to use STORE for some? $sth->{$_} = $meta->{$_} for keys %$meta; if (($NUM_OF_FIELDS||0) > 0) { $sth->{go_rows} = ($rowset) ? @$rowset : -1; $sth->{go_current_rowset} = $rowset; $sth->{go_current_rowset_err} = [ $err, $errstr, $state ] if defined $err; $sth->STORE(Active => 1) if $rowset; } return $sth; } sub go_clone_sth { my ($sth1) = @_; # clone an (un-fetched-from) sth - effectively undoes the initial more_results # not 100% so just for use in caching returned sth e.g. table_info my $sth2 = $sth1->{Database}->prepare($sth1->{Statement}, { go_skip_prepare_check => 1 }); $sth2->STORE($_, $sth1->{$_}) for qw(NUM_OF_FIELDS Active); my $sth2_inner = tied %$sth2; $sth2_inner->{$_} = $sth1->{$_} for qw(NUM_OF_PARAMS FetchHashKeyName); die "not fully implemented yet"; return $sth2; } sub fetchrow_arrayref { my ($sth) = @_; my $resultset = $sth->{go_current_rowset} || do { # should only happen if fetch called after execute failed my $rowset_err = $sth->{go_current_rowset_err} || [ 1, 'no result set (did execute fail)' ]; return $sth->set_err( @$rowset_err ); }; return $sth->_set_fbav(shift @$resultset) if @$resultset; $sth->finish; # no more data so finish return undef; } *fetch = \&fetchrow_arrayref; # alias sub fetchall_arrayref { my ($sth, $slice, $max_rows) = @_; my $resultset = $sth->{go_current_rowset} || do { # should only happen if fetch called after execute failed my $rowset_err = $sth->{go_current_rowset_err} || [ 1, 'no result set (did execute fail)' ]; return $sth->set_err( @$rowset_err ); }; my $mode = ref($slice) || 'ARRAY'; return $sth->SUPER::fetchall_arrayref($slice, $max_rows) if ref($slice) or defined $max_rows; $sth->finish; # no more data after this so finish return $resultset; } sub rows { return shift->{go_rows}; } sub STORE { my ($sth, $attrib, $value) = @_; return $sth->SUPER::STORE($attrib => $value) if $sth_local_store_attrib{$attrib} # handle locally # or it's a private_ (application) attribute or $attrib =~ /^private_/; # otherwise warn but do it anyway # this will probably need refining later my $msg = "Altering \$sth->{$attrib} won't affect proxied handle"; Carp::carp($msg) if $sth->FETCH('Warn'); # XXX could perhaps do # push @{ $sth->{go_method_calls} }, [ 'STORE', $attrib, $value ] # if not $sth->FETCH('Executed'); # but how to handle repeat executions? How to we know when an # attribute is being set to affect the current resultset or the # next execution? # Could just always use go_method_calls I guess. # do the store locally anyway, just in case $sth->SUPER::STORE($attrib => $value); return $sth->set_err($DBI::stderr, $msg); } # sub bind_param_array # we use DBI's default, which sets $sth->{ParamArrays}{$param} = $value # and calls bind_param($param, undef, $attr) if $attr. sub execute_array { my $sth = shift; my $attr = shift; $sth->bind_param_array($_, $_[$_-1]) for (1..@_); push @{ $sth->{go_method_calls} }, [ 'execute_array', $attr ]; return $sth->go_sth_method($attr); } *go_cache = \&DBD::Gofer::go_cache; } 1; __END__ =head1 NAME DBD::Gofer - A stateless-proxy driver for communicating with a remote DBI =head1 SYNOPSIS use DBI; $original_dsn = "dbi:..."; # your original DBI Data Source Name $dbh = DBI->connect("dbi:Gofer:transport=$transport;...;dsn=$original_dsn", $user, $passwd, \%attributes); ... use $dbh as if it was connected to $original_dsn ... The C part specifies the name of the module to use to transport the requests to the remote DBI. If $transport doesn't contain any double colons then it's prefixed with C. The C part I of the DSN because everything after C is assumed to be the DSN that the remote DBI should use. The C<...> represents attributes that influence the operation of the Gofer driver or transport. These are described below or in the documentation of the transport module being used. =encoding ISO8859-1 =head1 DESCRIPTION DBD::Gofer is a DBI database driver that forwards requests to another DBI driver, usually in a separate process, often on a separate machine. It tries to be as transparent as possible so it appears that you are using the remote driver directly. DBD::Gofer is very similar to DBD::Proxy. The major difference is that with DBD::Gofer no state is maintained on the remote end. That means every request contains all the information needed to create the required state. (So, for example, every request includes the DSN to connect to.) Each request can be sent to any available server. The server executes the request and returns a single response that includes all the data. This is very similar to the way http works as a stateless protocol for the web. Each request from your web browser can be handled by a different web server process. =head2 Use Cases This may seem like pointless overhead but there are situations where this is a very good thing. Let's consider a specific case. Imagine using DBD::Gofer with an http transport. Your application calls connect(), prepare("select * from table where foo=?"), bind_param(), and execute(). At this point DBD::Gofer builds a request containing all the information about the method calls. It then uses the httpd transport to send that request to an apache web server. This 'dbi execute' web server executes the request (using DBI::Gofer::Execute and related modules) and builds a response that contains all the rows of data, if the statement returned any, along with all the attributes that describe the results, such as $sth->{NAME}. This response is sent back to DBD::Gofer which unpacks it and presents it to the application as if it had executed the statement itself. =head2 Advantages Okay, but you still don't see the point? Well let's consider what we've gained: =head3 Connection Pooling and Throttling The 'dbi execute' web server leverages all the functionality of web infrastructure in terms of load balancing, high-availability, firewalls, access management, proxying, caching. At its most basic level you get a configurable pool of persistent database connections. =head3 Simple Scaling Got thousands of processes all trying to connect to the database? You can use DBD::Gofer to connect them to your smaller pool of 'dbi execute' web servers instead. =head3 Caching Client-side caching is as simple as adding "C" to the DSN. This feature alone can be worth using DBD::Gofer for. =head3 Fewer Network Round-trips DBD::Gofer sends as few requests as possible (dependent on the policy being used). =head3 Thin Clients / Unsupported Platforms You no longer need drivers for your database on every system. DBD::Gofer is pure perl. =head1 CONSTRAINTS There are some natural constraints imposed by the DBD::Gofer 'stateless' approach. But not many: =head2 You can't change database handle attributes after connect() You can't change database handle attributes after you've connected. Use the connect() call to specify all the attribute settings you want. This is because it's critical that when a request is complete the database handle is left in the same state it was when first connected. An exception is made for attributes with names starting "C": They can be set after connect() but the change is only applied locally. =head2 You can't change statement handle attributes after prepare() You can't change statement handle attributes after prepare. An exception is made for attributes with names starting "C": They can be set after prepare() but the change is only applied locally. =head2 You can't use transactions AutoCommit only. Transactions aren't supported. (In theory transactions could be supported when using a transport that maintains a connection, like C does. If you're interested in this please get in touch via dbi-dev@perl.org) =head2 You can't call driver-private sth methods But that's rarely needed anyway. =head1 GENERAL CAVEATS A few important things to keep in mind when using DBD::Gofer: =head2 Temporary tables, locks, and other per-connection persistent state You shouldn't expect any per-session state to persist between requests. This includes locks and temporary tables. Because the server-side may execute your requests via a different database connections, you can't rely on any per-connection persistent state, such as temporary tables, being available from one request to the next. This is an easy trap to fall into. A good way to check for this is to test your code with a Gofer policy package that sets the C policy to 'connect' to force a new connection for each request. The C policy does this. =head2 Driver-private Database Handle Attributes Some driver-private dbh attributes may not be available if the driver has not implemented the private_attribute_info() method (added in DBI 1.54). =head2 Driver-private Statement Handle Attributes Driver-private sth attributes can be set in the prepare() call. TODO Some driver-private sth attributes may not be available if the driver has not implemented the private_attribute_info() method (added in DBI 1.54). =head2 Multiple Resultsets Multiple resultsets are supported only if the driver supports the more_results() method (an exception is made for DBD::Sybase). =head2 Statement activity that also updates dbh attributes Some drivers may update one or more dbh attributes after performing activity on a child sth. For example, DBD::mysql provides $dbh->{mysql_insertid} in addition to $sth->{mysql_insertid}. Currently mysql_insertid is supported via a hack but a more general mechanism is needed for other drivers to use. =head2 Methods that report an error always return undef With DBD::Gofer, a method that sets an error always return an undef or empty list. That shouldn't be a problem in practice because the DBI doesn't define any methods that return meaningful values while also reporting an error. =head2 Subclassing only applies to client-side The RootClass and DbTypeSubclass attributes are not passed to the Gofer server. =head1 CAVEATS FOR SPECIFIC METHODS =head2 last_insert_id To enable use of last_insert_id you need to indicate to DBD::Gofer that you'd like to use it. You do that my adding a C attribute to the do() or prepare() method calls. For example: $dbh->do($sql, { go_last_insert_id_args => [...] }); or $sth = $dbh->prepare($sql, { go_last_insert_id_args => [...] }); The array reference should contains the args that you want passed to the last_insert_id() method. =head2 execute_for_fetch The array methods bind_param_array() and execute_array() are supported. When execute_array() is called the data is serialized and executed in a single round-trip to the Gofer server. This makes it very fast, but requires enough memory to store all the serialized data. The execute_for_fetch() method currently isn't optimised, it uses the DBI fallback behaviour of executing each tuple individually. (It could be implemented as a wrapper for execute_array() - patches welcome.) =head1 TRANSPORTS DBD::Gofer doesn't concern itself with transporting requests and responses to and fro. For that it uses special Gofer transport modules. Gofer transport modules usually come in pairs: one for the 'client' DBD::Gofer driver to use and one for the remote 'server' end. They have very similar names: DBD::Gofer::Transport:: DBI::Gofer::Transport:: Sometimes the transports on the DBD and DBI sides may have different names. For example DBD::Gofer::Transport::http is typically used with DBI::Gofer::Transport::mod_perl (DBD::Gofer::Transport::http and DBI::Gofer::Transport::mod_perl modules are part of the GoferTransport-http distribution). =head2 Bundled Transports Several transport modules are provided with DBD::Gofer: =head3 null The null transport is the simplest of them all. It doesn't actually transport the request anywhere. It just serializes (freezes) the request into a string, then thaws it back into a data structure before passing it to DBI::Gofer::Execute to execute. The same freeze and thaw is applied to the results. The null transport is the best way to test if your application will work with Gofer. Just set the DBI_AUTOPROXY environment variable to "C" (see L below) and run your application, or ideally its test suite, as usual. It doesn't take any parameters. =head3 pipeone The pipeone transport launches a subprocess for each request. It passes in the request and reads the response. The fact that a new subprocess is started for each request ensures that the server side is truly stateless. While this does make the transport I slow, it is useful as a way to test that your application doesn't depend on per-connection state, such as temporary tables, persisting between requests. It's also useful both as a proof of concept and as a base class for the stream driver. =head3 stream The stream driver also launches a subprocess and writes requests and reads responses, like the pipeone transport. In this case, however, the subprocess is expected to handle more that one request. (Though it will be automatically restarted if it exits.) This is the first transport that is truly useful because it can launch the subprocess on a remote machine using C. This means you can now use DBD::Gofer to easily access any databases that's accessible from any system you can login to. You also get all the benefits of ssh, including encryption and optional compression. See L below for an example. =head2 Other Transports Implementing a Gofer transport is I simple, and more transports are very welcome. Just take a look at any existing transports that are similar to your needs. =head3 http See the GoferTransport-http distribution on CPAN: http://search.cpan.org/dist/GoferTransport-http/ =head3 Gearman I know Ask Bjørn Hansen has implemented a transport for the C distributed job system, though it's not on CPAN at the time of writing this. =head1 CONNECTING Simply prefix your existing DSN with "C" where $transport is the name of the Gofer transport you want to use (see L). The C and C attributes must be specified and the C attributes must be last. Other attributes can be specified in the DSN to configure DBD::Gofer and/or the Gofer transport module being used. The main attributes after C, are C and C. These and other attributes are described below. =head2 Using DBI_AUTOPROXY The simplest way to try out DBD::Gofer is to set the DBI_AUTOPROXY environment variable. In this case you don't include the C part. For example: export DBI_AUTOPROXY="dbi:Gofer:transport=null" or, for a more useful example, try: export DBI_AUTOPROXY="dbi:Gofer:transport=stream;url=ssh:user@example.com" =head2 Connection Attributes These attributes can be specified in the DSN. They can also be passed in the \%attr parameter of the DBI connect method by adding a "C" prefix to the name. =head3 transport Specifies the Gofer transport class to use. Required. See L above. If the value does not include C<::> then "C" is prefixed. The transport object can be accessed via $h->{go_transport}. =head3 dsn Specifies the DSN for the remote side to connect to. Required, and must be last. =head3 url Used to tell the transport where to connect to. The exact form of the value depends on the transport used. =head3 policy Specifies the policy to use. See L. If the value does not include C<::> then "C" is prefixed. The policy object can be accessed via $h->{go_policy}. =head3 timeout Specifies a timeout, in seconds, to use when waiting for responses from the server side. =head3 retry_limit Specifies the number of times a failed request will be retried. Default is 0. =head3 retry_hook Specifies a code reference to be called to decide if a failed request should be retried. The code reference is called like this: $transport = $h->{go_transport}; $retry = $transport->go_retry_hook->($request, $response, $transport); If it returns true then the request will be retried, up to the C. If it returns a false but defined value then the request will not be retried. If it returns undef then the default behaviour will be used, as if C had not been specified. The default behaviour is to retry requests where $request->is_idempotent is true, or the error message matches C. =head3 cache Specifies that client-side caching should be performed. The value is the name of a cache class to use. Any class implementing get($key) and set($key, $value) methods can be used. That includes a great many powerful caching classes on CPAN, including the Cache and Cache::Cache distributions. You can use "C" is a shortcut for "C". See L for a description of this simple fast default cache. The cache object can be accessed via $h->go_cache. For example: $dbh->go_cache->clear; # free up memory being used by the cache The cache keys are the frozen (serialized) requests, and the values are the frozen responses. The default behaviour is to only use the cache for requests where $request->is_idempotent is true (i.e., the dbh has the ReadOnly attribute set or the SQL statement is obviously a SELECT without a FOR UPDATE clause.) For even more control you can use the C attribute to pass in an instantiated cache object. Individual methods, including prepare(), can also specify alternative caches via the C attribute. For example, to specify no caching for a particular query, you could use $sth = $dbh->prepare( $sql, { go_cache => 0 } ); This can be used to implement different caching policies for different statements. It's interesting to note that DBD::Gofer can be used to add client-side caching to any (gofer compatible) application, with no code changes and no need for a gofer server. Just set the DBI_AUTOPROXY environment variable like this: DBI_AUTOPROXY='dbi:Gofer:transport=null;cache=1' =head1 CONFIGURING BEHAVIOUR POLICY DBD::Gofer supports a 'policy' mechanism that allows you to fine-tune the number of round-trips to the Gofer server. The policies are grouped into classes (which may be subclassed) and referenced by the name of the class. The L class is the base class for all the policy packages and describes all the available policies. Three policy packages are supplied with DBD::Gofer: L is most 'transparent' but slowest because it makes more round-trips to the Gofer server. L is a reasonable compromise - it's the default policy. L is fastest, but may require code changes in your applications. Generally the default C policy is fine. When first testing an existing application with Gofer it is a good idea to start with the C policy first and then switch to C or a custom policy, for final testing. =head1 AUTHOR Tim Bunce, L =head1 LICENCE AND COPYRIGHT Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See L. =head1 ACKNOWLEDGEMENTS The development of DBD::Gofer and related modules was sponsored by Shopzilla.com (L), where I currently work. =head1 SEE ALSO L, L, L. L, L. L =head1 Caveats for specific drivers This section aims to record issues to be aware of when using Gofer with specific drivers. It usually only documents issues that are not natural consequences of the limitations of the Gofer approach - as documented above. =head1 TODO This is just a random brain dump... (There's more in the source of the Changes file, not the pod) Document policy mechanism Add mechanism for transports to list config params and for Gofer to apply any that match (and warn if any left over?) Driver-private sth attributes - set via prepare() - change DBI spec add hooks into transport base class for checking & updating a result set cache ie via a standard cache interface such as: http://search.cpan.org/~robm/Cache-FastMmap/FastMmap.pm http://search.cpan.org/~bradfitz/Cache-Memcached/lib/Cache/Memcached.pm http://search.cpan.org/~dclinton/Cache-Cache/ http://search.cpan.org/~cleishman/Cache/ Also caching instructions could be passed through the httpd transport layer in such a way that appropriate http cache headers are added to the results so that web caches (squid etc) could be used to implement the caching. (MUST require the use of GET rather than POST requests.) Rework handling of installed_methods to not piggyback on dbh_attributes? Perhaps support transactions for transports where it's possible (ie null and stream)? Would make stream transport (ie ssh) more useful to more people. Make sth_result_attr more like dbh_attributes (using '*' etc) Add @val = FETCH_many(@names) to DBI in C and use in Gofer/Execute? Implement _new_sth in C. =cut perl5/DBD/NullP.pm000044400000013650152462470720007570 0ustar00use strict; { package DBD::NullP; require DBI; require Carp; our @EXPORT = qw(); # Do NOT @EXPORT anything. our $VERSION = "12.014715"; # $Id: NullP.pm 14714 2011-02-22 17:27:07Z Tim $ # # Copyright (c) 1994-2007 Tim Bunce # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. our $drh = undef; # holds driver handle once initialised sub driver{ return $drh if $drh; my($class, $attr) = @_; $class .= "::dr"; ($drh) = DBI::_new_drh($class, { 'Name' => 'NullP', 'Version' => $VERSION, 'Attribution' => 'DBD Example Null Perl stub by Tim Bunce', }, [ qw'example implementors private data']); $drh; } sub CLONE { undef $drh; } } { package DBD::NullP::dr; # ====== DRIVER ====== our $imp_data_size = 0; use strict; sub connect { # normally overridden, but a handy default my $dbh = shift->SUPER::connect(@_) or return; $dbh->STORE(Active => 1); $dbh; } sub DESTROY { undef } } { package DBD::NullP::db; # ====== DATABASE ====== our $imp_data_size = 0; use strict; use Carp qw(croak); # Added get_info to support tests in 10examp.t sub get_info { my ($dbh, $type) = @_; if ($type == 29) { # identifier quote return '"'; } return; } # Added table_info to support tests in 10examp.t sub table_info { my ($dbh, $catalog, $schema, $table, $type) = @_; my ($outer, $sth) = DBI::_new_sth($dbh, { 'Statement' => 'tables', }); if (defined($type) && $type eq '%' && # special case for tables('','','','%') grep {defined($_) && $_ eq ''} ($catalog, $schema, $table)) { $outer->{dbd_nullp_data} = [[undef, undef, undef, 'TABLE', undef], [undef, undef, undef, 'VIEW', undef], [undef, undef, undef, 'ALIAS', undef]]; } elsif (defined($catalog) && $catalog eq '%' && # special case for tables('%','','') grep {defined($_) && $_ eq ''} ($schema, $table)) { $outer->{dbd_nullp_data} = [['catalog1', undef, undef, undef, undef], ['catalog2', undef, undef, undef, undef]]; } else { $outer->{dbd_nullp_data} = [['catalog', 'schema', 'table1', 'TABLE']]; $outer->{dbd_nullp_data} = [['catalog', 'schema', 'table2', 'TABLE']]; $outer->{dbd_nullp_data} = [['catalog', 'schema', 'table3', 'TABLE']]; } $outer->STORE(NUM_OF_FIELDS => 5); $sth->STORE(Active => 1); return $outer; } sub prepare { my ($dbh, $statement)= @_; my ($outer, $sth) = DBI::_new_sth($dbh, { 'Statement' => $statement, }); return $outer; } sub FETCH { my ($dbh, $attrib) = @_; # In reality this would interrogate the database engine to # either return dynamic values that cannot be precomputed # or fetch and cache attribute values too expensive to prefetch. return $dbh->SUPER::FETCH($attrib); } sub STORE { my ($dbh, $attrib, $value) = @_; # would normally validate and only store known attributes # else pass up to DBI to handle if ($attrib eq 'AutoCommit') { Carp::croak("Can't disable AutoCommit") unless $value; # convert AutoCommit values to magic ones to let DBI # know that the driver has 'handled' the AutoCommit attribute $value = ($value) ? -901 : -900; } elsif ($attrib eq 'nullp_set_err') { # a fake attribute to produce a test case where STORE issues a warning $dbh->set_err($value, $value); } return $dbh->SUPER::STORE($attrib, $value); } sub ping { 1 } sub disconnect { shift->STORE(Active => 0); } } { package DBD::NullP::st; # ====== STATEMENT ====== our $imp_data_size = 0; use strict; sub bind_param { my ($sth, $param, $value, $attr) = @_; $sth->{ParamValues}{$param} = $value; $sth->{ParamAttr}{$param} = $attr if defined $attr; # attr is sticky if not explicitly set return 1; } sub execute { my $sth = shift; $sth->bind_param($_, $_[$_-1]) for (1..@_); if ($sth->{Statement} =~ m/^ \s* SELECT \s+/xmsi) { $sth->STORE(NUM_OF_FIELDS => 1); $sth->{NAME} = [ "fieldname" ]; # just for the sake of returning something, we return the params my $params = $sth->{ParamValues} || {}; $sth->{dbd_nullp_data} = [ @{$params}{ sort keys %$params } ]; $sth->STORE(Active => 1); } # force a sleep - handy for testing elsif ($sth->{Statement} =~ m/^ \s* SLEEP \s+ (\S+) /xmsi) { my $secs = $1; if (eval { require Time::HiRes; defined &Time::HiRes::sleep }) { Time::HiRes::sleep($secs); } else { sleep $secs; } } # force an error - handy for testing elsif ($sth->{Statement} =~ m/^ \s* ERROR \s+ (\d+) \s* (.*) /xmsi) { return $sth->set_err($1, $2); } # anything else is silently ignored, successfully 1; } sub fetchrow_arrayref { my $sth = shift; my $data = shift @{$sth->{dbd_nullp_data}}; if (!$data || !@$data) { $sth->finish; # no more data so finish return undef; } return $sth->_set_fbav($data); } *fetch = \&fetchrow_arrayref; # alias sub FETCH { my ($sth, $attrib) = @_; # would normally validate and only fetch known attributes # else pass up to DBI to handle return $sth->SUPER::FETCH($attrib); } sub STORE { my ($sth, $attrib, $value) = @_; # would normally validate and only store known attributes # else pass up to DBI to handle return $sth->SUPER::STORE($attrib, $value); } } 1; perl5/DBD/Proxy.pm000044400000071033152462470720007656 0ustar00# -*- perl -*- # # # DBD::Proxy - DBI Proxy driver # # # Copyright (c) 1997,1998 Jochen Wiedmann # # The DBD::Proxy module is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. In particular permission # is granted to Tim Bunce for distributing this as a part of the DBI. # # # Author: Jochen Wiedmann # Am Eisteich 9 # 72555 Metzingen # Germany # # Email: joe@ispsoft.de # Phone: +49 7123 14881 # use strict; use Carp; require DBI; DBI->require_version(1.0201); use RPC::PlClient 0.2000; # XXX change to 0.2017 once it's released { package DBD::Proxy::RPC::PlClient; @DBD::Proxy::RPC::PlClient::ISA = qw(RPC::PlClient); sub Call { my $self = shift; if ($self->{debug}) { my ($rpcmeth, $obj, $method, @args) = @_; local $^W; # silence undefs Carp::carp("Server $rpcmeth $method(@args)"); } return $self->SUPER::Call(@_); } } package DBD::Proxy; use vars qw($VERSION $drh %ATTR); $VERSION = "0.2004"; $drh = undef; # holds driver handle once initialised %ATTR = ( # common to db & st, see also %ATTR in DBD::Proxy::db & ::st 'Warn' => 'local', 'Active' => 'local', 'Kids' => 'local', 'CachedKids' => 'local', 'PrintError' => 'local', 'RaiseError' => 'local', 'HandleError' => 'local', 'TraceLevel' => 'cached', 'CompatMode' => 'local', ); sub driver ($$) { if (!$drh) { my($class, $attr) = @_; $class .= "::dr"; $drh = DBI::_new_drh($class, { 'Name' => 'Proxy', 'Version' => $VERSION, 'Attribution' => 'DBD::Proxy by Jochen Wiedmann', }); $drh->STORE(CompatMode => 1); # disable DBI dispatcher attribute cache (for FETCH) } $drh; } sub CLONE { undef $drh; } sub proxy_set_err { my ($h,$errmsg) = @_; my ($err, $state) = ($errmsg =~ s/ \[err=(.*?),state=(.*?)\]//) ? ($1, $2) : (1, ' ' x 5); return $h->set_err($err, $errmsg, $state); } package DBD::Proxy::dr; # ====== DRIVER ====== $DBD::Proxy::dr::imp_data_size = 0; sub connect ($$;$$) { my($drh, $dsn, $user, $auth, $attr)= @_; my($dsnOrig) = $dsn; my %attr = %$attr; my ($var, $val); while (length($dsn)) { if ($dsn =~ /^dsn=(.*)/) { $attr{'dsn'} = $1; last; } if ($dsn =~ /^(.*?);(.*)/) { $var = $1; $dsn = $2; } else { $var = $dsn; $dsn = ''; } if ($var =~ /^(.*?)=(.*)/) { $var = $1; $val = $2; $attr{$var} = $val; } } my $err = ''; if (!defined($attr{'hostname'})) { $err .= " Missing hostname."; } if (!defined($attr{'port'})) { $err .= " Missing port."; } if (!defined($attr{'dsn'})) { $err .= " Missing remote dsn."; } # Create a cipher object, if requested my $cipherRef = undef; if ($attr{'cipher'}) { $cipherRef = eval { $attr{'cipher'}->new(pack('H*', $attr{'key'})) }; if ($@) { $err .= " Cannot create cipher object: $@."; } } my $userCipherRef = undef; if ($attr{'userkey'}) { my $cipher = $attr{'usercipher'} || $attr{'cipher'}; $userCipherRef = eval { $cipher->new(pack('H*', $attr{'userkey'})) }; if ($@) { $err .= " Cannot create usercipher object: $@."; } } return DBD::Proxy::proxy_set_err($drh, $err) if $err; # Returns undef my %client_opts = ( 'peeraddr' => $attr{'hostname'}, 'peerport' => $attr{'port'}, 'socket_proto' => 'tcp', 'application' => $attr{dsn}, 'user' => $user || '', 'password' => $auth || '', 'version' => $DBD::Proxy::VERSION, 'cipher' => $cipherRef, 'debug' => $attr{debug} || 0, 'timeout' => $attr{timeout} || undef, 'logfile' => $attr{logfile} || undef ); # Options starting with 'proxy_rpc_' are forwarded to the RPC layer after # stripping the prefix. while (my($var,$val) = each %attr) { if ($var =~ s/^proxy_rpc_//) { $client_opts{$var} = $val; } } # Create an RPC::PlClient object. my($client, $msg) = eval { DBD::Proxy::RPC::PlClient->new(%client_opts) }; return DBD::Proxy::proxy_set_err($drh, "Cannot log in to DBI::ProxyServer: $@") if $@; # Returns undef return DBD::Proxy::proxy_set_err($drh, "Constructor didn't return a handle: $msg") unless ($msg =~ /^((?:\w+|\:\:)+)=(\w+)/); # Returns undef $msg = RPC::PlClient::Object->new($1, $client, $msg); my $max_proto_ver; my ($server_ver_str) = eval { $client->Call('Version') }; if ( $@ ) { # Server denies call, assume legacy protocol. $max_proto_ver = 1; } else { # Parse proxy server version. my ($server_ver_num) = $server_ver_str =~ /^DBI::ProxyServer\s+([\d\.]+)/; $max_proto_ver = $server_ver_num >= 0.3 ? 2 : 1; } my $req_proto_ver; if ( exists $attr{proxy_lazy_prepare} ) { $req_proto_ver = ($attr{proxy_lazy_prepare} == 0) ? 2 : 1; return DBD::Proxy::proxy_set_err($drh, "DBI::ProxyServer does not support synchronous statement preparation.") if $max_proto_ver < $req_proto_ver; } # Switch to user specific encryption mode, if desired if ($userCipherRef) { $client->{'cipher'} = $userCipherRef; } # create a 'blank' dbh my $this = DBI::_new_dbh($drh, { 'Name' => $dsnOrig, 'proxy_dbh' => $msg, 'proxy_client' => $client, 'RowCacheSize' => $attr{'RowCacheSize'} || 20, 'proxy_proto_ver' => $req_proto_ver || 1 }); foreach $var (keys %attr) { if ($var =~ /proxy_/) { $this->{$var} = $attr{$var}; } } $this->SUPER::STORE('Active' => 1); $this; } sub DESTROY { undef } package DBD::Proxy::db; # ====== DATABASE ====== $DBD::Proxy::db::imp_data_size = 0; # XXX probably many more methods need to be added here # in order to trigger our AUTOLOAD to redirect them to the server. # (Unless the sub is declared it's bypassed by perl method lookup.) # See notes in ToDo about method metadata # The question is whether to add all the methods in %DBI::DBI_methods # to the corresponding classes (::db, ::st etc) # Also need to consider methods that, if proxied, would change the server state # in a way that might not be visible on the client, ie begin_work -> AutoCommit. sub commit; sub rollback; sub ping; use vars qw(%ATTR $AUTOLOAD); # inherited: STORE / FETCH against this class. # local: STORE / FETCH against parent class. # cached: STORE to remote and local objects, FETCH from local. # remote: STORE / FETCH against remote object only (default). # # Note: Attribute names starting with 'proxy_' always treated as 'inherited'. # %ATTR = ( # see also %ATTR in DBD::Proxy::st %DBD::Proxy::ATTR, RowCacheSize => 'inherited', #AutoCommit => 'cached', 'FetchHashKeyName' => 'cached', Statement => 'local', Driver => 'local', dbi_connect_closure => 'local', Username => 'local', ); sub AUTOLOAD { my $method = $AUTOLOAD; $method =~ s/(.*::(.*)):://; my $class = $1; my $type = $2; #warn "AUTOLOAD of $method (class=$class, type=$type)"; my %expand = ( 'method' => $method, 'class' => $class, 'type' => $type, 'call' => "$method(\@_)", # XXX was trying to be smart but was tripping up over the DBI's own # smartness. Disabled, but left here in case there are issues. # 'call' => (UNIVERSAL::can("DBI::_::$type", $method)) ? "$method(\@_)" : "func(\@_, '$method')", ); my $method_code = q{ package ~class~; sub ~method~ { my $h = shift; local $@; my @result = wantarray ? eval { $h->{'proxy_~type~h'}->~call~ } : eval { scalar $h->{'proxy_~type~h'}->~call~ }; return DBD::Proxy::proxy_set_err($h, $@) if $@; return wantarray ? @result : $result[0]; } }; $method_code =~ s/\~(\w+)\~/$expand{$1}/eg; local $SIG{__DIE__} = 'DEFAULT'; my $err = do { local $@; eval $method_code.2; $@ }; die $err if $err; goto &$AUTOLOAD; } sub DESTROY { my $dbh = shift; local $@ if $@; # protect $@ $dbh->disconnect if $dbh->SUPER::FETCH('Active'); } sub connected { } # client-side not server-side, RT#75868 sub disconnect ($) { my ($dbh) = @_; # Sadly the Proxy too-often disagrees with the backend database # on the subject of 'Active'. In the short term, I'd like the # Proxy to ease up and let me decide when it's proper to go over # the wire. This ultimately applies to finish() as well. #return unless $dbh->SUPER::FETCH('Active'); # Drop database connection at remote end my $rdbh = $dbh->{'proxy_dbh'}; if ( $rdbh ) { local $SIG{__DIE__} = 'DEFAULT'; local $@; eval { $rdbh->disconnect() } ; DBD::Proxy::proxy_set_err($dbh, $@) if $@; } # Close TCP connect to remote # XXX possibly best left till DESTROY? Add a config attribute to choose? #$dbh->{proxy_client}->Disconnect(); # Disconnect method requires newer PlRPC module $dbh->{proxy_client}->{socket} = undef; # hack $dbh->SUPER::STORE('Active' => 0); 1; } sub STORE ($$$) { my($dbh, $attr, $val) = @_; my $type = $ATTR{$attr} || 'remote'; if ($attr eq 'TraceLevel') { warn("TraceLevel $val"); my $pc = $dbh->{proxy_client} || die; $pc->{logfile} ||= 1; # XXX hack $pc->{debug} = ($val && $val >= 4); $pc->Debug("$pc debug enabled") if $pc->{debug}; } if ($attr =~ /^proxy_/ || $type eq 'inherited') { $dbh->{$attr} = $val; return 1; } if ($type eq 'remote' || $type eq 'cached') { local $SIG{__DIE__} = 'DEFAULT'; local $@; my $result = eval { $dbh->{'proxy_dbh'}->STORE($attr => $val) }; return DBD::Proxy::proxy_set_err($dbh, $@) if $@; # returns undef $dbh->SUPER::STORE($attr => $val) if $type eq 'cached'; return $result; } return $dbh->SUPER::STORE($attr => $val); } sub FETCH ($$) { my($dbh, $attr) = @_; # we only get here for cached attribute values if the handle is in CompatMode # otherwise the DBI dispatcher handles the FETCH itself from the attribute cache. my $type = $ATTR{$attr} || 'remote'; if ($attr =~ /^proxy_/ || $type eq 'inherited' || $type eq 'cached') { return $dbh->{$attr}; } return $dbh->SUPER::FETCH($attr) unless $type eq 'remote'; local $SIG{__DIE__} = 'DEFAULT'; local $@; my $result = eval { $dbh->{'proxy_dbh'}->FETCH($attr) }; return DBD::Proxy::proxy_set_err($dbh, $@) if $@; return $result; } sub prepare ($$;$) { my($dbh, $stmt, $attr) = @_; my $sth = DBI::_new_sth($dbh, { 'Statement' => $stmt, 'proxy_attr' => $attr, 'proxy_cache_only' => 0, 'proxy_params' => [], } ); my $proto_ver = $dbh->{'proxy_proto_ver'}; if ( $proto_ver > 1 ) { $sth->{'proxy_attr_cache'} = {cache_filled => 0}; my $rdbh = $dbh->{'proxy_dbh'}; local $SIG{__DIE__} = 'DEFAULT'; local $@; my $rsth = eval { $rdbh->prepare($sth->{'Statement'}, $sth->{'proxy_attr'}, undef, $proto_ver) }; return DBD::Proxy::proxy_set_err($sth, $@) if $@; return DBD::Proxy::proxy_set_err($sth, "Constructor didn't return a handle: $rsth") unless ($rsth =~ /^((?:\w+|\:\:)+)=(\w+)/); my $client = $dbh->{'proxy_client'}; $rsth = RPC::PlClient::Object->new($1, $client, $rsth); $sth->{'proxy_sth'} = $rsth; # If statement is a positioned update we do not want any readahead. $sth->{'RowCacheSize'} = 1 if $stmt =~ /\bfor\s+update\b/i; # Since resources are used by prepared remote handle, mark us active. $sth->SUPER::STORE(Active => 1); } $sth; } sub quote { my $dbh = shift; my $proxy_quote = $dbh->{proxy_quote} || 'remote'; return $dbh->SUPER::quote(@_) if $proxy_quote eq 'local' && @_ == 1; # For the common case of only a single argument # (no $data_type) we could learn and cache the behaviour. # Or we could probe the driver with a few test cases. # Or we could add a way to ask the DBI::ProxyServer # if $dbh->can('quote') == \&DBI::_::db::quote. # Tim # # Sounds all *very* smart to me. I'd rather suggest to # implement some of the typical quote possibilities # and let the user set # $dbh->{'proxy_quote'} = 'backslash_escaped'; # for example. # Jochen local $SIG{__DIE__} = 'DEFAULT'; local $@; my $result = eval { $dbh->{'proxy_dbh'}->quote(@_) }; return DBD::Proxy::proxy_set_err($dbh, $@) if $@; return $result; } sub table_info { my $dbh = shift; my $rdbh = $dbh->{'proxy_dbh'}; #warn "table_info(@_)"; local $SIG{__DIE__} = 'DEFAULT'; local $@; my($numFields, $names, $types, @rows) = eval { $rdbh->table_info(@_) }; return DBD::Proxy::proxy_set_err($dbh, $@) if $@; my ($sth, $inner) = DBI::_new_sth($dbh, { 'Statement' => "SHOW TABLES", 'proxy_params' => [], 'proxy_data' => \@rows, 'proxy_attr_cache' => { 'NUM_OF_PARAMS' => 0, 'NUM_OF_FIELDS' => $numFields, 'NAME' => $names, 'TYPE' => $types, 'cache_filled' => 1 }, 'proxy_cache_only' => 1, }); $sth->SUPER::STORE('NUM_OF_FIELDS' => $numFields); $inner->{NAME} = $names; $inner->{TYPE} = $types; $sth->SUPER::STORE('Active' => 1); # already execute()'d $sth->{'proxy_rows'} = @rows; return $sth; } sub tables { my $dbh = shift; #warn "tables(@_)"; return $dbh->SUPER::tables(@_); } sub type_info_all { my $dbh = shift; local $SIG{__DIE__} = 'DEFAULT'; local $@; my $result = eval { $dbh->{'proxy_dbh'}->type_info_all(@_) }; return DBD::Proxy::proxy_set_err($dbh, $@) if $@; return $result; } package DBD::Proxy::st; # ====== STATEMENT ====== $DBD::Proxy::st::imp_data_size = 0; use vars qw(%ATTR); # inherited: STORE to current object. FETCH from current if exists, else call up # to the (proxy) database object. # local: STORE / FETCH against parent class. # cache_only: STORE noop (read-only). FETCH from private_* if exists, else call # remote and cache the result. # remote: STORE / FETCH against remote object only (default). # # Note: Attribute names starting with 'proxy_' always treated as 'inherited'. # %ATTR = ( # see also %ATTR in DBD::Proxy::db %DBD::Proxy::ATTR, 'Database' => 'local', 'RowsInCache' => 'local', 'RowCacheSize' => 'inherited', 'NULLABLE' => 'cache_only', 'NAME' => 'cache_only', 'TYPE' => 'cache_only', 'PRECISION' => 'cache_only', 'SCALE' => 'cache_only', 'NUM_OF_FIELDS' => 'cache_only', 'NUM_OF_PARAMS' => 'cache_only' ); *AUTOLOAD = \&DBD::Proxy::db::AUTOLOAD; sub execute ($@) { my $sth = shift; my $params = @_ ? \@_ : $sth->{'proxy_params'}; # new execute, so delete any cached rows from previous execute undef $sth->{'proxy_data'}; undef $sth->{'proxy_rows'}; my $rsth = $sth->{proxy_sth}; my $dbh = $sth->FETCH('Database'); my $proto_ver = $dbh->{proxy_proto_ver}; my ($numRows, @outData); local $SIG{__DIE__} = 'DEFAULT'; local $@; if ( $proto_ver > 1 ) { ($numRows, @outData) = eval { $rsth->execute($params, $proto_ver) }; return DBD::Proxy::proxy_set_err($sth, $@) if $@; # Attributes passed back only on the first execute() of a statement. unless ($sth->{proxy_attr_cache}->{cache_filled}) { my ($numFields, $numParams, $names, $types) = splice(@outData, 0, 4); $sth->{'proxy_attr_cache'} = { 'NUM_OF_FIELDS' => $numFields, 'NUM_OF_PARAMS' => $numParams, 'NAME' => $names, 'cache_filled' => 1 }; $sth->SUPER::STORE('NUM_OF_FIELDS' => $numFields); $sth->SUPER::STORE('NUM_OF_PARAMS' => $numParams); } } else { if ($rsth) { ($numRows, @outData) = eval { $rsth->execute($params, $proto_ver) }; return DBD::Proxy::proxy_set_err($sth, $@) if $@; } else { my $rdbh = $dbh->{'proxy_dbh'}; # Legacy prepare is actually prepare + first execute on the server. ($rsth, @outData) = eval { $rdbh->prepare($sth->{'Statement'}, $sth->{'proxy_attr'}, $params, $proto_ver) }; return DBD::Proxy::proxy_set_err($sth, $@) if $@; return DBD::Proxy::proxy_set_err($sth, "Constructor didn't return a handle: $rsth") unless ($rsth =~ /^((?:\w+|\:\:)+)=(\w+)/); my $client = $dbh->{'proxy_client'}; $rsth = RPC::PlClient::Object->new($1, $client, $rsth); my ($numFields, $numParams, $names, $types) = splice(@outData, 0, 4); $sth->{'proxy_sth'} = $rsth; $sth->{'proxy_attr_cache'} = { 'NUM_OF_FIELDS' => $numFields, 'NUM_OF_PARAMS' => $numParams, 'NAME' => $names }; $sth->SUPER::STORE('NUM_OF_FIELDS' => $numFields); $sth->SUPER::STORE('NUM_OF_PARAMS' => $numParams); $numRows = shift @outData; } } # Always condition active flag. $sth->SUPER::STORE('Active' => 1) if $sth->FETCH('NUM_OF_FIELDS'); # is SELECT $sth->{'proxy_rows'} = $numRows; # Any remaining items are output params. if (@outData) { foreach my $p (@$params) { if (ref($p->[0])) { my $ref = shift @outData; ${$p->[0]} = $$ref; } } } $sth->{'proxy_rows'} || '0E0'; } sub fetch ($) { my $sth = shift; my $data = $sth->{'proxy_data'}; $sth->{'proxy_rows'} = 0 unless defined $sth->{'proxy_rows'}; if(!$data || !@$data) { return undef unless $sth->SUPER::FETCH('Active'); my $rsth = $sth->{'proxy_sth'}; if (!$rsth) { die "Attempt to fetch row without execute"; } my $num_rows = $sth->FETCH('RowCacheSize') || 20; local $SIG{__DIE__} = 'DEFAULT'; local $@; my @rows = eval { $rsth->fetch($num_rows) }; return DBD::Proxy::proxy_set_err($sth, $@) if $@; unless (@rows == $num_rows) { undef $sth->{'proxy_data'}; # server side has already called finish $sth->SUPER::STORE(Active => 0); } return undef unless @rows; $sth->{'proxy_data'} = $data = [@rows]; } my $row = shift @$data; $sth->SUPER::STORE(Active => 0) if ( $sth->{proxy_cache_only} and !@$data ); $sth->{'proxy_rows'}++; return $sth->_set_fbav($row); } *fetchrow_arrayref = \&fetch; sub rows ($) { my $rows = shift->{'proxy_rows'}; return (defined $rows) ? $rows : -1; } sub finish ($) { my($sth) = @_; return 1 unless $sth->SUPER::FETCH('Active'); my $rsth = $sth->{'proxy_sth'}; $sth->SUPER::STORE('Active' => 0); return 0 unless $rsth; # Something's out of sync my $no_finish = exists($sth->{'proxy_no_finish'}) ? $sth->{'proxy_no_finish'} : $sth->FETCH('Database')->{'proxy_no_finish'}; unless ($no_finish) { local $SIG{__DIE__} = 'DEFAULT'; local $@; my $result = eval { $rsth->finish() }; return DBD::Proxy::proxy_set_err($sth, $@) if $@; return $result; } 1; } sub STORE ($$$) { my($sth, $attr, $val) = @_; my $type = $ATTR{$attr} || 'remote'; if ($attr =~ /^proxy_/ || $type eq 'inherited') { $sth->{$attr} = $val; return 1; } if ($type eq 'cache_only') { return 0; } if ($type eq 'remote' || $type eq 'cached') { my $rsth = $sth->{'proxy_sth'} or return undef; local $SIG{__DIE__} = 'DEFAULT'; local $@; my $result = eval { $rsth->STORE($attr => $val) }; return DBD::Proxy::proxy_set_err($sth, $@) if ($@); return $result if $type eq 'remote'; # else fall through to cache locally } return $sth->SUPER::STORE($attr => $val); } sub FETCH ($$) { my($sth, $attr) = @_; if ($attr =~ /^proxy_/) { return $sth->{$attr}; } my $type = $ATTR{$attr} || 'remote'; if ($type eq 'inherited') { if (exists($sth->{$attr})) { return $sth->{$attr}; } return $sth->FETCH('Database')->{$attr}; } if ($type eq 'cache_only' && exists($sth->{'proxy_attr_cache'}->{$attr})) { return $sth->{'proxy_attr_cache'}->{$attr}; } if ($type ne 'local') { my $rsth = $sth->{'proxy_sth'} or return undef; local $SIG{__DIE__} = 'DEFAULT'; local $@; my $result = eval { $rsth->FETCH($attr) }; return DBD::Proxy::proxy_set_err($sth, $@) if $@; return $result; } elsif ($attr eq 'RowsInCache') { my $data = $sth->{'proxy_data'}; $data ? @$data : 0; } else { $sth->SUPER::FETCH($attr); } } sub bind_param ($$$@) { my $sth = shift; my $param = shift; $sth->{'proxy_params'}->[$param-1] = [@_]; } *bind_param_inout = \&bind_param; sub DESTROY { my $sth = shift; $sth->finish if $sth->SUPER::FETCH('Active'); } 1; __END__ =head1 NAME DBD::Proxy - A proxy driver for the DBI =head1 SYNOPSIS use DBI; $dbh = DBI->connect("dbi:Proxy:hostname=$host;port=$port;dsn=$db", $user, $passwd); # See the DBI module documentation for full details =head1 DESCRIPTION DBD::Proxy is a Perl module for connecting to a database via a remote DBI driver. See L for an alternative with different trade-offs. This is of course not needed for DBI drivers which already support connecting to a remote database, but there are engines which don't offer network connectivity. Another application is offering database access through a firewall, as the driver offers query based restrictions. For example you can restrict queries to exactly those that are used in a given CGI application. Speaking of CGI, another application is (or rather, will be) to reduce the database connect/disconnect overhead from CGI scripts by using proxying the connect_cached method. The proxy server will hold the database connections open in a cache. The CGI script then trades the database connect/disconnect overhead for the DBD::Proxy connect/disconnect overhead which is typically much less. =head1 CONNECTING TO THE DATABASE Before connecting to a remote database, you must ensure, that a Proxy server is running on the remote machine. There's no default port, so you have to ask your system administrator for the port number. See L for details. Say, your Proxy server is running on machine "alpha", port 3334, and you'd like to connect to an ODBC database called "mydb" as user "joe" with password "hello". When using DBD::ODBC directly, you'd do a $dbh = DBI->connect("DBI:ODBC:mydb", "joe", "hello"); With DBD::Proxy this becomes $dsn = "DBI:Proxy:hostname=alpha;port=3334;dsn=DBI:ODBC:mydb"; $dbh = DBI->connect($dsn, "joe", "hello"); You see, this is mainly the same. The DBD::Proxy module will create a connection to the Proxy server on "alpha" which in turn will connect to the ODBC database. Refer to the L documentation on the C method for a way to automatically use DBD::Proxy without having to change your code. DBD::Proxy's DSN string has the format $dsn = "DBI:Proxy:key1=val1; ... ;keyN=valN;dsn=valDSN"; In other words, it is a collection of key/value pairs. The following keys are recognized: =over 4 =item hostname =item port Hostname and port of the Proxy server; these keys must be present, no defaults. Example: hostname=alpha;port=3334 =item dsn The value of this attribute will be used as a dsn name by the Proxy server. Thus it must have the format C, in particular it will contain colons. The I value may contain semicolons, hence this key *must* be the last and it's value will be the complete remaining part of the dsn. Example: dsn=DBI:ODBC:mydb =item cipher =item key =item usercipher =item userkey By using these fields you can enable encryption. If you set, for example, cipher=$class;key=$key (note the semicolon) then DBD::Proxy will create a new cipher object by executing $cipherRef = $class->new(pack("H*", $key)); and pass this object to the RPC::PlClient module when creating a client. See L. Example: cipher=IDEA;key=97cd2375efa329aceef2098babdc9721 The usercipher/userkey attributes allow you to use two phase encryption: The cipher/key encryption will be used in the login and authorisation phase. Once the client is authorised, he will change to usercipher/userkey encryption. Thus the cipher/key pair is a B based secret, typically less secure than the usercipher/userkey secret and readable by anyone. The usercipher/userkey secret is B private secret. Of course encryption requires an appropriately configured server. See L. =item debug Turn on debugging mode =item stderr This attribute will set the corresponding attribute of the RPC::PlClient object, thus logging will not use syslog(), but redirected to stderr. This is the default under Windows. stderr=1 =item logfile Similar to the stderr attribute, but output will be redirected to the given file. logfile=/dev/null =item RowCacheSize The DBD::Proxy driver supports this attribute (which is DBI standard, as of DBI 1.02). It's used to reduce network round-trips by fetching multiple rows in one go. The current default value is 20, but this may change. =item proxy_no_finish This attribute can be used to reduce network traffic: If the application is calling $sth->finish() then the proxy tells the server to finish the remote statement handle. Of course this slows down things quite a lot, but is perfectly good for reducing memory usage with persistent connections. However, if you set the I attribute to a TRUE value, either in the database handle or in the statement handle, then finish() calls will be suppressed. This is what you want, for example, in small and fast CGI applications. =item proxy_quote This attribute can be used to reduce network traffic: By default calls to $dbh->quote() are passed to the remote driver. Of course this slows down things quite a lot, but is the safest default behaviour. However, if you set the I attribute to the value 'C' either in the database handle or in the statement handle, and the call to quote has only one parameter, then the local default DBI quote method will be used (which will be faster but may be wrong). =back =head1 KNOWN ISSUES =head2 Unproxied method calls If a method isn't being proxied, try declaring a stub sub in the appropriate package (DBD::Proxy::db for a dbh method, and DBD::Proxy::st for an sth method). For example: sub DBD::Proxy::db::selectall_arrayref; That will enable selectall_arrayref to be proxied. Currently many methods aren't explicitly proxied and so you get the DBI's default methods executed on the client. Some of those methods, like selectall_arrayref, may then call other methods that are proxied (selectall_arrayref calls fetchall_arrayref which calls fetch which is proxied). So things may appear to work but operate more slowly than the could. This may all change in a later version. =head2 Complex handle attributes Sometimes handles are having complex attributes like hash refs or array refs and not simple strings or integers. For example, with DBD::CSV, you would like to write something like $dbh->{"csv_tables"}->{"passwd"} = { "sep_char" => ":", "eol" => "\n"; The above example would advice the CSV driver to assume the file "passwd" to be in the format of the /etc/passwd file: Colons as separators and a line feed without carriage return as line terminator. Surprisingly this example doesn't work with the proxy driver. To understand the reasons, you should consider the following: The Perl compiler is executing the above example in two steps: =over =item 1 The first step is fetching the value of the key "csv_tables" in the handle $dbh. The value returned is complex, a hash ref. =item 2 The second step is storing some value (the right hand side of the assignment) as the key "passwd" in the hash ref from step 1. =back This becomes a little bit clearer, if we rewrite the above code: $tables = $dbh->{"csv_tables"}; $tables->{"passwd"} = { "sep_char" => ":", "eol" => "\n"; While the examples work fine without the proxy, the fail due to a subtle difference in step 1: By DBI magic, the hash ref $dbh->{'csv_tables'} is returned from the server to the client. The client creates a local copy. This local copy is the result of step 1. In other words, step 2 modifies a local copy of the hash ref, but not the server's hash ref. The workaround is storing the modified local copy back to the server: $tables = $dbh->{"csv_tables"}; $tables->{"passwd"} = { "sep_char" => ":", "eol" => "\n"; $dbh->{"csv_tables"} = $tables; =head1 SECURITY WARNING L used underneath is not secure due to serializing and deserializing data with L module. Use the proxy driver only in trusted environment. =head1 AUTHOR AND COPYRIGHT This module is Copyright (c) 1997, 1998 Jochen Wiedmann Am Eisteich 9 72555 Metzingen Germany Email: joe@ispsoft.de Phone: +49 7123 14887 The DBD::Proxy module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. In particular permission is granted to Tim Bunce for distributing this as a part of the DBI. =head1 SEE ALSO L, L, L =cut perl5/DBD/mysql.pm000044400000175327152462470720007715 0ustar00#!/usr/bin/perl use strict; use warnings; require 5.008_001; # just as DBI package DBD::mysql; use DBI; use DynaLoader(); use Carp; our @ISA = qw(DynaLoader); # please make sure the sub-version does not increase above '099' # SQL_DRIVER_VER is formatted as dd.dd.dddd # for version 5.x please switch to 5.00(_00) version numbering # keep $VERSION in Bundle/DBD/mysql.pm in sync our $VERSION = '4.050'; bootstrap DBD::mysql $VERSION; our $err = 0; # holds error code for DBI::err our $errstr = ""; # holds error string for DBI::errstr our $drh = undef; # holds driver handle once initialised my $methods_are_installed = 0; sub driver{ return $drh if $drh; my($class, $attr) = @_; $class .= "::dr"; # not a 'my' since we use it above to prevent multiple drivers $drh = DBI::_new_drh($class, { 'Name' => 'mysql', 'Version' => $VERSION, 'Err' => \$DBD::mysql::err, 'Errstr' => \$DBD::mysql::errstr, 'Attribution' => 'DBD::mysql by Patrick Galbraith' }); if (!$methods_are_installed) { DBD::mysql::db->install_method('mysql_fd'); DBD::mysql::db->install_method('mysql_async_result'); DBD::mysql::db->install_method('mysql_async_ready'); DBD::mysql::st->install_method('mysql_async_result'); DBD::mysql::st->install_method('mysql_async_ready'); $methods_are_installed++; } $drh; } sub CLONE { undef $drh; } sub _OdbcParse($$$) { my($class, $dsn, $hash, $args) = @_; my($var, $val); if (!defined($dsn)) { return; } while (length($dsn)) { if ($dsn =~ /([^:;]*\[.*]|[^:;]*)[:;](.*)/) { $val = $1; $dsn = $2; $val =~ s/\[|]//g; # Remove [] if present, the rest of the code prefers plain IPv6 addresses } else { $val = $dsn; $dsn = ''; } if ($val =~ /([^=]*)=(.*)/) { $var = $1; $val = $2; if ($var eq 'hostname' || $var eq 'host') { $hash->{'host'} = $val; } elsif ($var eq 'db' || $var eq 'dbname') { $hash->{'database'} = $val; } else { $hash->{$var} = $val; } } else { foreach $var (@$args) { if (!defined($hash->{$var})) { $hash->{$var} = $val; last; } } } } } sub _OdbcParseHost ($$) { my($class, $dsn) = @_; my($hash) = {}; $class->_OdbcParse($dsn, $hash, ['host', 'port']); ($hash->{'host'}, $hash->{'port'}); } sub AUTOLOAD { my ($meth) = $DBD::mysql::AUTOLOAD; my ($smeth) = $meth; $smeth =~ s/(.*)\:\://; my $val = constant($smeth, @_ ? $_[0] : 0); if ($! == 0) { eval "sub $meth { $val }"; return $val; } Carp::croak "$meth: Not defined"; } 1; package DBD::mysql::dr; # ====== DRIVER ====== use strict; use DBI qw(:sql_types); use DBI::Const::GetInfoType; sub connect { my($drh, $dsn, $username, $password, $attrhash) = @_; my($port); my($cWarn); my $connect_ref= { 'Name' => $dsn }; my $dbi_imp_data; # Avoid warnings for undefined values $username ||= ''; $password ||= ''; $attrhash ||= {}; $attrhash->{mysql_conn_attrs} ||= {}; $attrhash->{mysql_conn_attrs}->{'program_name'} ||= $0; # create a 'blank' dbh my($this, $privateAttrHash) = (undef, $attrhash); $privateAttrHash = { %$privateAttrHash, 'Name' => $dsn, 'user' => $username, 'password' => $password }; DBD::mysql->_OdbcParse($dsn, $privateAttrHash, ['database', 'host', 'port']); $dbi_imp_data = delete $attrhash->{dbi_imp_data}; $connect_ref->{'dbi_imp_data'} = $dbi_imp_data; if (!defined($this = DBI::_new_dbh($drh, $connect_ref, $privateAttrHash))) { return undef; } DBD::mysql::db::_login($this, $dsn, $username, $password) or $this = undef; if ($this && ($ENV{MOD_PERL} || $ENV{GATEWAY_INTERFACE})) { $this->{mysql_auto_reconnect} = 1; } $this; } sub data_sources { my($self) = shift; my($attributes) = shift; my($host, $port, $user, $password) = ('', '', '', ''); if ($attributes) { $host = $attributes->{host} || ''; $port = $attributes->{port} || ''; $user = $attributes->{user} || ''; $password = $attributes->{password} || ''; } my(@dsn) = $self->func($host, $port, $user, $password, '_ListDBs'); my($i); for ($i = 0; $i < @dsn; $i++) { $dsn[$i] = "DBI:mysql:$dsn[$i]"; } @dsn; } sub admin { my($drh) = shift; my($command) = shift; my($dbname) = ($command eq 'createdb' || $command eq 'dropdb') ? shift : ''; my($host, $port) = DBD::mysql->_OdbcParseHost(shift(@_) || ''); my($user) = shift || ''; my($password) = shift || ''; $drh->func(undef, $command, $dbname || '', $host || '', $port || '', $user, $password, '_admin_internal'); } package DBD::mysql::db; # ====== DATABASE ====== use strict; use DBI qw(:sql_types); %DBD::mysql::db::db2ANSI = ( "INT" => "INTEGER", "CHAR" => "CHAR", "REAL" => "REAL", "IDENT" => "DECIMAL" ); ### ANSI datatype mapping to MySQL datatypes %DBD::mysql::db::ANSI2db = ( "CHAR" => "CHAR", "VARCHAR" => "CHAR", "LONGVARCHAR" => "CHAR", "NUMERIC" => "INTEGER", "DECIMAL" => "INTEGER", "BIT" => "INTEGER", "TINYINT" => "INTEGER", "SMALLINT" => "INTEGER", "INTEGER" => "INTEGER", "BIGINT" => "INTEGER", "REAL" => "REAL", "FLOAT" => "REAL", "DOUBLE" => "REAL", "BINARY" => "CHAR", "VARBINARY" => "CHAR", "LONGVARBINARY" => "CHAR", "DATE" => "CHAR", "TIME" => "CHAR", "TIMESTAMP" => "CHAR" ); sub prepare { my($dbh, $statement, $attribs)= @_; return unless $dbh->func('_async_check'); # create a 'blank' dbh my $sth = DBI::_new_sth($dbh, {'Statement' => $statement}); # Populate internal handle data. if (!DBD::mysql::st::_prepare($sth, $statement, $attribs)) { $sth = undef; } $sth; } sub db2ANSI { my $self = shift; my $type = shift; return $DBD::mysql::db::db2ANSI{"$type"}; } sub ANSI2db { my $self = shift; my $type = shift; return $DBD::mysql::db::ANSI2db{"$type"}; } sub admin { my($dbh) = shift; my($command) = shift; my($dbname) = ($command eq 'createdb' || $command eq 'dropdb') ? shift : ''; $dbh->{'Driver'}->func($dbh, $command, $dbname, '', '', '', '_admin_internal'); } sub _SelectDB ($$) { die "_SelectDB is removed from this module; use DBI->connect instead."; } sub table_info ($) { my ($dbh, $catalog, $schema, $table, $type, $attr) = @_; $dbh->{mysql_server_prepare}||= 0; my $mysql_server_prepare_save= $dbh->{mysql_server_prepare}; $dbh->{mysql_server_prepare}= 0; my @names = qw(TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS); my @rows; my $sponge = DBI->connect("DBI:Sponge:", '','') or return $dbh->DBI::set_err($DBI::err, "DBI::Sponge: $DBI::errstr"); # Return the list of catalogs if (defined $catalog && $catalog eq "%" && (!defined($schema) || $schema eq "") && (!defined($table) || $table eq "")) { @rows = (); # Empty, because MySQL doesn't support catalogs (yet) } # Return the list of schemas elsif (defined $schema && $schema eq "%" && (!defined($catalog) || $catalog eq "") && (!defined($table) || $table eq "")) { my $sth = $dbh->prepare("SHOW DATABASES") or ($dbh->{mysql_server_prepare}= $mysql_server_prepare_save && return undef); $sth->execute() or ($dbh->{mysql_server_prepare}= $mysql_server_prepare_save && return DBI::set_err($dbh, $sth->err(), $sth->errstr())); while (my $ref = $sth->fetchrow_arrayref()) { push(@rows, [ undef, $ref->[0], undef, undef, undef ]); } } # Return the list of table types elsif (defined $type && $type eq "%" && (!defined($catalog) || $catalog eq "") && (!defined($schema) || $schema eq "") && (!defined($table) || $table eq "")) { @rows = ( [ undef, undef, undef, "TABLE", undef ], [ undef, undef, undef, "VIEW", undef ], ); } # Special case: a catalog other than undef, "", or "%" elsif (defined $catalog && $catalog ne "" && $catalog ne "%") { @rows = (); # Nothing, because MySQL doesn't support catalogs yet. } # Uh oh, we actually have a meaty table_info call. Work is required! else { my @schemas; # If no table was specified, we want them all $table ||= "%"; # If something was given for the schema, we need to expand it to # a list of schemas, since it may be a wildcard. if (defined $schema && $schema ne "") { my $sth = $dbh->prepare("SHOW DATABASES LIKE " . $dbh->quote($schema)) or ($dbh->{mysql_server_prepare}= $mysql_server_prepare_save && return undef); $sth->execute() or ($dbh->{mysql_server_prepare}= $mysql_server_prepare_save && return DBI::set_err($dbh, $sth->err(), $sth->errstr())); while (my $ref = $sth->fetchrow_arrayref()) { push @schemas, $ref->[0]; } } # Otherwise we want the current database else { push @schemas, $dbh->selectrow_array("SELECT DATABASE()"); } # Figure out which table types are desired my ($want_tables, $want_views); if (defined $type && $type ne "") { $want_tables = ($type =~ m/table/i); $want_views = ($type =~ m/view/i); } else { $want_tables = $want_views = 1; } for my $database (@schemas) { my $sth = $dbh->prepare("SHOW /*!50002 FULL*/ TABLES FROM " . $dbh->quote_identifier($database) . " LIKE " . $dbh->quote($table)) or ($dbh->{mysql_server_prepare}= $mysql_server_prepare_save && return undef); $sth->execute() or ($dbh->{mysql_server_prepare}= $mysql_server_prepare_save && return DBI::set_err($dbh, $sth->err(), $sth->errstr())); while (my $ref = $sth->fetchrow_arrayref()) { my $type = (defined $ref->[1] && $ref->[1] =~ /view/i) ? 'VIEW' : 'TABLE'; next if $type eq 'TABLE' && not $want_tables; next if $type eq 'VIEW' && not $want_views; push @rows, [ undef, $database, $ref->[0], $type, undef ]; } } } my $sth = $sponge->prepare("table_info", { rows => \@rows, NUM_OF_FIELDS => scalar @names, NAME => \@names, }) or ($dbh->{mysql_server_prepare}= $mysql_server_prepare_save && return $dbh->DBI::set_err($sponge->err(), $sponge->errstr())); $dbh->{mysql_server_prepare}= $mysql_server_prepare_save; return $sth; } sub _ListTables { my $dbh = shift; if (!$DBD::mysql::QUIET) { warn "_ListTables is deprecated, use \$dbh->tables()"; } return map { $_ =~ s/.*\.//; $_ } $dbh->tables(); } sub column_info { my ($dbh, $catalog, $schema, $table, $column) = @_; return unless $dbh->func('_async_check'); $dbh->{mysql_server_prepare}||= 0; my $mysql_server_prepare_save= $dbh->{mysql_server_prepare}; $dbh->{mysql_server_prepare}= 0; # ODBC allows a NULL to mean all columns, so we'll accept undef $column = '%' unless defined $column; my $ER_NO_SUCH_TABLE= 1146; my $table_id = $dbh->quote_identifier($catalog, $schema, $table); my @names = qw( TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE CHAR_SET_CAT CHAR_SET_SCHEM CHAR_SET_NAME COLLATION_CAT COLLATION_SCHEM COLLATION_NAME UDT_CAT UDT_SCHEM UDT_NAME DOMAIN_CAT DOMAIN_SCHEM DOMAIN_NAME SCOPE_CAT SCOPE_SCHEM SCOPE_NAME MAX_CARDINALITY DTD_IDENTIFIER IS_SELF_REF mysql_is_pri_key mysql_type_name mysql_values mysql_is_auto_increment ); my %col_info; local $dbh->{FetchHashKeyName} = 'NAME_lc'; # only ignore ER_NO_SUCH_TABLE in internal_execute if issued from here my $desc_sth = $dbh->prepare("DESCRIBE $table_id " . $dbh->quote($column)); my $desc = $dbh->selectall_arrayref($desc_sth, { Columns=>{} }); #return $desc_sth if $desc_sth->err(); if (my $err = $desc_sth->err()) { # return the error, unless it is due to the table not # existing per DBI spec if ($err != $ER_NO_SUCH_TABLE) { $dbh->{mysql_server_prepare}= $mysql_server_prepare_save; return undef; } $dbh->set_err(undef,undef); $desc = []; } my $ordinal_pos = 0; my @fields; for my $row (@$desc) { my $type = $row->{type}; $type =~ m/^(\w+)(\((.+)\))?\s?(.*)?$/; my $basetype = lc($1); my $typemod = $3; my $attr = $4; push @fields, $row->{field}; my $info = $col_info{ $row->{field} }= { TABLE_CAT => $catalog, TABLE_SCHEM => $schema, TABLE_NAME => $table, COLUMN_NAME => $row->{field}, NULLABLE => ($row->{null} eq 'YES') ? 1 : 0, IS_NULLABLE => ($row->{null} eq 'YES') ? "YES" : "NO", TYPE_NAME => uc($basetype), COLUMN_DEF => $row->{default}, ORDINAL_POSITION => ++$ordinal_pos, mysql_is_pri_key => ($row->{key} eq 'PRI'), mysql_type_name => $row->{type}, mysql_is_auto_increment => ($row->{extra} =~ /auto_increment/i ? 1 : 0), }; # # This code won't deal with a pathological case where a value # contains a single quote followed by a comma, and doesn't unescape # any escaped values. But who would use those in an enum or set? # my @type_params= ($typemod && index($typemod,"'")>=0) ? ("$typemod," =~ /'(.*?)',/g) # assume all are quoted : split /,/, $typemod||''; # no quotes, plain list s/''/'/g for @type_params; # undo doubling of quotes my @type_attr= split / /, $attr||''; $info->{DATA_TYPE}= SQL_VARCHAR(); if ($basetype =~ /^(char|varchar|\w*text|\w*blob)/) { $info->{DATA_TYPE}= SQL_CHAR() if $basetype eq 'char'; if ($type_params[0]) { $info->{COLUMN_SIZE} = $type_params[0]; } else { $info->{COLUMN_SIZE} = 65535; $info->{COLUMN_SIZE} = 255 if $basetype =~ /^tiny/; $info->{COLUMN_SIZE} = 16777215 if $basetype =~ /^medium/; $info->{COLUMN_SIZE} = 4294967295 if $basetype =~ /^long/; } } elsif ($basetype =~ /^(binary|varbinary)/) { $info->{COLUMN_SIZE} = $type_params[0]; # SQL_BINARY & SQL_VARBINARY are tempting here but don't match the # semantics for mysql (not hex). SQL_CHAR & SQL_VARCHAR are correct here. $info->{DATA_TYPE} = ($basetype eq 'binary') ? SQL_CHAR() : SQL_VARCHAR(); } elsif ($basetype =~ /^(enum|set)/) { if ($basetype eq 'set') { $info->{COLUMN_SIZE} = length(join ",", @type_params); } else { my $max_len = 0; length($_) > $max_len and $max_len = length($_) for @type_params; $info->{COLUMN_SIZE} = $max_len; } $info->{"mysql_values"} = \@type_params; } elsif ($basetype =~ /int/ || $basetype eq 'bit' ) { # big/medium/small/tiny etc + unsigned? $info->{DATA_TYPE} = SQL_INTEGER(); $info->{NUM_PREC_RADIX} = 10; $info->{COLUMN_SIZE} = $type_params[0]; } elsif ($basetype =~ /^decimal/) { $info->{DATA_TYPE} = SQL_DECIMAL(); $info->{NUM_PREC_RADIX} = 10; $info->{COLUMN_SIZE} = $type_params[0]; $info->{DECIMAL_DIGITS} = $type_params[1]; } elsif ($basetype =~ /^(float|double)/) { $info->{DATA_TYPE} = ($basetype eq 'float') ? SQL_FLOAT() : SQL_DOUBLE(); $info->{NUM_PREC_RADIX} = 2; $info->{COLUMN_SIZE} = ($basetype eq 'float') ? 32 : 64; } elsif ($basetype =~ /date|time/) { # date/datetime/time/timestamp if ($basetype eq 'time' or $basetype eq 'date') { #$info->{DATA_TYPE} = ($basetype eq 'time') ? SQL_TYPE_TIME() : SQL_TYPE_DATE(); $info->{DATA_TYPE} = ($basetype eq 'time') ? SQL_TIME() : SQL_DATE(); $info->{COLUMN_SIZE} = ($basetype eq 'time') ? 8 : 10; } else { # datetime/timestamp #$info->{DATA_TYPE} = SQL_TYPE_TIMESTAMP(); $info->{DATA_TYPE} = SQL_TIMESTAMP(); $info->{SQL_DATA_TYPE} = SQL_DATETIME(); $info->{SQL_DATETIME_SUB} = $info->{DATA_TYPE} - ($info->{SQL_DATA_TYPE} * 10); $info->{COLUMN_SIZE} = ($basetype eq 'datetime') ? 19 : $type_params[0] || 14; } $info->{DECIMAL_DIGITS}= 0; # no fractional seconds } elsif ($basetype eq 'year') { # no close standard so treat as int $info->{DATA_TYPE} = SQL_INTEGER(); $info->{NUM_PREC_RADIX} = 10; $info->{COLUMN_SIZE} = 4; } else { Carp::carp("column_info: unrecognized column type '$basetype' of $table_id.$row->{field} treated as varchar"); } $info->{SQL_DATA_TYPE} ||= $info->{DATA_TYPE}; #warn Dumper($info); } my $sponge = DBI->connect("DBI:Sponge:", '','') or ( $dbh->{mysql_server_prepare}= $mysql_server_prepare_save && return $dbh->DBI::set_err($DBI::err, "DBI::Sponge: $DBI::errstr")); my $sth = $sponge->prepare("column_info $table", { rows => [ map { [ @{$_}{@names} ] } map { $col_info{$_} } @fields ], NUM_OF_FIELDS => scalar @names, NAME => \@names, }) or return ($dbh->{mysql_server_prepare}= $mysql_server_prepare_save && $dbh->DBI::set_err($sponge->err(), $sponge->errstr())); $dbh->{mysql_server_prepare}= $mysql_server_prepare_save; return $sth; } sub primary_key_info { my ($dbh, $catalog, $schema, $table) = @_; return unless $dbh->func('_async_check'); $dbh->{mysql_server_prepare}||= 0; my $mysql_server_prepare_save= $dbh->{mysql_server_prepare}; my $table_id = $dbh->quote_identifier($catalog, $schema, $table); my @names = qw( TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME ); my %col_info; local $dbh->{FetchHashKeyName} = 'NAME_lc'; my $desc_sth = $dbh->prepare("SHOW KEYS FROM $table_id"); my $desc= $dbh->selectall_arrayref($desc_sth, { Columns=>{} }); my $ordinal_pos = 0; for my $row (grep { $_->{key_name} eq 'PRIMARY'} @$desc) { $col_info{ $row->{column_name} }= { TABLE_CAT => $catalog, TABLE_SCHEM => $schema, TABLE_NAME => $table, COLUMN_NAME => $row->{column_name}, KEY_SEQ => $row->{seq_in_index}, PK_NAME => $row->{key_name}, }; } my $sponge = DBI->connect("DBI:Sponge:", '','') or ($dbh->{mysql_server_prepare}= $mysql_server_prepare_save && return $dbh->DBI::set_err($DBI::err, "DBI::Sponge: $DBI::errstr")); my $sth= $sponge->prepare("primary_key_info $table", { rows => [ map { [ @{$_}{@names} ] } sort { $a->{KEY_SEQ} <=> $b->{KEY_SEQ} } values %col_info ], NUM_OF_FIELDS => scalar @names, NAME => \@names, }) or ($dbh->{mysql_server_prepare}= $mysql_server_prepare_save && return $dbh->DBI::set_err($sponge->err(), $sponge->errstr())); $dbh->{mysql_server_prepare}= $mysql_server_prepare_save; return $sth; } sub foreign_key_info { my ($dbh, $pk_catalog, $pk_schema, $pk_table, $fk_catalog, $fk_schema, $fk_table, ) = @_; return unless $dbh->func('_async_check'); # INFORMATION_SCHEMA.KEY_COLUMN_USAGE was added in 5.0.6 # no one is going to be running 5.0.6, taking out the check for $point > .6 my ($maj, $min, $point) = _version($dbh); return if $maj < 5 ; my $sql = <<'EOF'; SELECT NULL AS PKTABLE_CAT, A.REFERENCED_TABLE_SCHEMA AS PKTABLE_SCHEM, A.REFERENCED_TABLE_NAME AS PKTABLE_NAME, A.REFERENCED_COLUMN_NAME AS PKCOLUMN_NAME, A.TABLE_CATALOG AS FKTABLE_CAT, A.TABLE_SCHEMA AS FKTABLE_SCHEM, A.TABLE_NAME AS FKTABLE_NAME, A.COLUMN_NAME AS FKCOLUMN_NAME, A.ORDINAL_POSITION AS KEY_SEQ, NULL AS UPDATE_RULE, NULL AS DELETE_RULE, A.CONSTRAINT_NAME AS FK_NAME, NULL AS PK_NAME, NULL AS DEFERABILITY, NULL AS UNIQUE_OR_PRIMARY FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE A, INFORMATION_SCHEMA.TABLE_CONSTRAINTS B WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA AND A.TABLE_NAME = B.TABLE_NAME AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND B.CONSTRAINT_TYPE IS NOT NULL EOF my @where; my @bind; # catalogs are not yet supported by MySQL # if (defined $pk_catalog) { # push @where, 'A.REFERENCED_TABLE_CATALOG = ?'; # push @bind, $pk_catalog; # } if (defined $pk_schema) { push @where, 'A.REFERENCED_TABLE_SCHEMA = ?'; push @bind, $pk_schema; } if (defined $pk_table) { push @where, 'A.REFERENCED_TABLE_NAME = ?'; push @bind, $pk_table; } # if (defined $fk_catalog) { # push @where, 'A.TABLE_CATALOG = ?'; # push @bind, $fk_schema; # } if (defined $fk_schema) { push @where, 'A.TABLE_SCHEMA = ?'; push @bind, $fk_schema; } if (defined $fk_table) { push @where, 'A.TABLE_NAME = ?'; push @bind, $fk_table; } if (@where) { $sql .= ' AND '; $sql .= join ' AND ', @where; } $sql .= " ORDER BY A.TABLE_SCHEMA, A.TABLE_NAME, A.ORDINAL_POSITION"; local $dbh->{FetchHashKeyName} = 'NAME_uc'; my $sth = $dbh->prepare($sql); $sth->execute(@bind); return $sth; } # #86030: PATCH: adding statistics_info support # Thank you to David Dick http://search.cpan.org/~ddick/ sub statistics_info { my ($dbh, $catalog, $schema, $table, $unique_only, $quick, ) = @_; return unless $dbh->func('_async_check'); # INFORMATION_SCHEMA.KEY_COLUMN_USAGE was added in 5.0.6 # no one is going to be running 5.0.6, taking out the check for $point > .6 my ($maj, $min, $point) = _version($dbh); return if $maj < 5 ; my $sql = <<'EOF'; SELECT TABLE_CATALOG AS TABLE_CAT, TABLE_SCHEMA AS TABLE_SCHEM, TABLE_NAME AS TABLE_NAME, NON_UNIQUE AS NON_UNIQUE, NULL AS INDEX_QUALIFIER, INDEX_NAME AS INDEX_NAME, LCASE(INDEX_TYPE) AS TYPE, SEQ_IN_INDEX AS ORDINAL_POSITION, COLUMN_NAME AS COLUMN_NAME, COLLATION AS ASC_OR_DESC, CARDINALITY AS CARDINALITY, NULL AS PAGES, NULL AS FILTER_CONDITION FROM INFORMATION_SCHEMA.STATISTICS EOF my @where; my @bind; # catalogs are not yet supported by MySQL # if (defined $catalog) { # push @where, 'TABLE_CATALOG = ?'; # push @bind, $catalog; # } if (defined $schema) { push @where, 'TABLE_SCHEMA = ?'; push @bind, $schema; } if (defined $table) { push @where, 'TABLE_NAME = ?'; push @bind, $table; } if (@where) { $sql .= ' WHERE '; $sql .= join ' AND ', @where; } $sql .= " ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION"; local $dbh->{FetchHashKeyName} = 'NAME_uc'; my $sth = $dbh->prepare($sql); $sth->execute(@bind); return $sth; } sub _version { my $dbh = shift; return $dbh->get_info($DBI::Const::GetInfoType::GetInfoType{SQL_DBMS_VER}) =~ /(\d+)\.(\d+)\.(\d+)/; } #################### # get_info() # Generated by DBI::DBD::Metadata sub get_info { my($dbh, $info_type) = @_; return unless $dbh->func('_async_check'); require DBD::mysql::GetInfo; my $v = $DBD::mysql::GetInfo::info{int($info_type)}; $v = $v->($dbh) if ref $v eq 'CODE'; return $v; } BEGIN { my @needs_async_check = qw/data_sources quote_identifier begin_work/; foreach my $method (@needs_async_check) { no strict 'refs'; my $super = "SUPER::$method"; *$method = sub { my $h = shift; return unless $h->func('_async_check'); return $h->$super(@_); }; } } package DBD::mysql::st; # ====== STATEMENT ====== use strict; BEGIN { my @needs_async_result = qw/fetchrow_hashref fetchall_hashref/; my @needs_async_check = qw/bind_param_array bind_col bind_columns execute_for_fetch/; foreach my $method (@needs_async_result) { no strict 'refs'; my $super = "SUPER::$method"; *$method = sub { my $sth = shift; if(defined $sth->mysql_async_ready) { return unless $sth->mysql_async_result; } return $sth->$super(@_); }; } foreach my $method (@needs_async_check) { no strict 'refs'; my $super = "SUPER::$method"; *$method = sub { my $h = shift; return unless $h->func('_async_check'); return $h->$super(@_); }; } } 1; __END__ =pod =encoding utf8 =head1 NAME DBD::mysql - MySQL driver for the Perl5 Database Interface (DBI) =head1 SYNOPSIS use DBI; my $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port"; my $dbh = DBI->connect($dsn, $user, $password); my $sth = $dbh->prepare( 'SELECT id, first_name, last_name FROM authors WHERE last_name = ?') or die "prepare statement failed: $dbh->errstr()"; $sth->execute('Eggers') or die "execution failed: $dbh->errstr()"; print $sth->rows . " rows found.\n"; while (my $ref = $sth->fetchrow_hashref()) { print "Found a row: id = $ref->{'id'}, fn = $ref->{'first_name'}\n"; } $sth->finish; =head1 EXAMPLE #!/usr/bin/perl use strict; use warnings; use DBI; # Connect to the database. my $dbh = DBI->connect("DBI:mysql:database=test;host=localhost", "joe", "joe's password", {'RaiseError' => 1}); # Drop table 'foo'. This may fail, if 'foo' doesn't exist # Thus we put an eval around it. eval { $dbh->do("DROP TABLE foo") }; print "Dropping foo failed: $@\n" if $@; # Create a new table 'foo'. This must not fail, thus we don't # catch errors. $dbh->do("CREATE TABLE foo (id INTEGER, name VARCHAR(20))"); # INSERT some data into 'foo'. We are using $dbh->quote() for # quoting the name. $dbh->do("INSERT INTO foo VALUES (1, " . $dbh->quote("Tim") . ")"); # same thing, but using placeholders (recommended!) $dbh->do("INSERT INTO foo VALUES (?, ?)", undef, 2, "Jochen"); # now retrieve data from the table. my $sth = $dbh->prepare("SELECT * FROM foo"); $sth->execute(); while (my $ref = $sth->fetchrow_hashref()) { print "Found a row: id = $ref->{'id'}, name = $ref->{'name'}\n"; } $sth->finish(); # Disconnect from the database. $dbh->disconnect(); =head1 DESCRIPTION B is the Perl5 Database Interface driver for the MySQL database. In other words: DBD::mysql is an interface between the Perl programming language and the MySQL programming API that comes with the MySQL relational database management system. Most functions provided by this programming API are supported. Some rarely used functions are missing, mainly because no-one ever requested them. :-) In what follows we first discuss the use of DBD::mysql, because this is what you will need the most. For installation, see the separate document L. See L for a simple example above. From perl you activate the interface with the statement use DBI; After that you can connect to multiple MySQL database servers and send multiple queries to any of them via a simple object oriented interface. Two types of objects are available: database handles and statement handles. Perl returns a database handle to the connect method like so: $dbh = DBI->connect("DBI:mysql:database=$db;host=$host", $user, $password, {RaiseError => 1}); Once you have connected to a database, you can execute SQL statements with: my $query = sprintf("INSERT INTO foo VALUES (%d, %s)", $number, $dbh->quote("name")); $dbh->do($query); See L for details on the quote and do methods. An alternative approach is $dbh->do("INSERT INTO foo VALUES (?, ?)", undef, $number, $name); in which case the quote method is executed automatically. See also the bind_param method in L. See L below for more details on database handles. If you want to retrieve results, you need to create a so-called statement handle with: $sth = $dbh->prepare("SELECT * FROM $table"); $sth->execute(); This statement handle can be used for multiple things. First of all you can retrieve a row of data: my $row = $sth->fetchrow_hashref(); If your table has columns ID and NAME, then $row will be hash ref with keys ID and NAME. See L below for more details on statement handles. But now for a more formal approach: =head2 Class Methods =over =item B use DBI; $dsn = "DBI:mysql:$database"; $dsn = "DBI:mysql:database=$database;host=$hostname"; $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port"; $dbh = DBI->connect($dsn, $user, $password); The C is not a required attribute, but please note that MySQL has no such thing as a default database. If you don't specify the database at connection time your active database will be null and you'd need to prefix your tables with the database name; i.e. 'SELECT * FROM mydb.mytable'. This is similar to the behavior of the mysql command line client. Also, 'SELECT DATABASE()' will return the current database active for the handle. =over =item host =item port The hostname, if not specified or specified as '' or 'localhost', will default to a MySQL server running on the local machine using the default for the UNIX socket. To connect to a MySQL server on the local machine via TCP, you must specify the loopback IP address (127.0.0.1) as the host. Should the MySQL server be running on a non-standard port number, you may explicitly state the port number to connect to in the C argument, by concatenating the I and I together separated by a colon ( C<:> ) character or by using the C argument. To connect to a MySQL server on localhost using TCP/IP, you must specify the hostname as 127.0.0.1 (with the optional port). When connecting to a MySQL Server with IPv6, a bracketed IPv6 address should be used. Example DSN: my $dsn = "DBI:mysql:;host=[1a12:2800:6f2:85::f20:8cf];port=3306"; =item mysql_client_found_rows Enables (TRUE value) or disables (FALSE value) the flag CLIENT_FOUND_ROWS while connecting to the MySQL server. This has a somewhat funny effect: Without mysql_client_found_rows, if you perform a query like UPDATE $table SET id = 1 WHERE id = 1; then the MySQL engine will always return 0, because no rows have changed. With mysql_client_found_rows however, it will return the number of rows that have an id 1, as some people are expecting. (At least for compatibility to other engines.) =item mysql_compression If your DSN contains the option "mysql_compression=1", then the communication between client and server will be compressed. =item mysql_connect_timeout If your DSN contains the option "mysql_connect_timeout=##", the connect request to the server will timeout if it has not been successful after the given number of seconds. =item mysql_write_timeout If your DSN contains the option "mysql_write_timeout=##", the write operation to the server will timeout if it has not been successful after the given number of seconds. =item mysql_read_timeout If your DSN contains the option "mysql_read_timeout=##", the read operation to the server will timeout if it has not been successful after the given number of seconds. =item mysql_init_command If your DSN contains the option "mysql_init_command=##", then this SQL statement is executed when connecting to the MySQL server. It is automatically re-executed if reconnection occurs. =item mysql_skip_secure_auth This option is for older mysql databases that don't have secure auth set. =item mysql_read_default_file =item mysql_read_default_group These options can be used to read a config file like /etc/my.cnf or ~/.my.cnf. By default MySQL's C client library doesn't use any config files unlike the client programs (mysql, mysqladmin, ...) that do, but outside of the C client library. Thus you need to explicitly request reading a config file, as in $dsn = "DBI:mysql:test;mysql_read_default_file=/home/joe/my.cnf"; $dbh = DBI->connect($dsn, $user, $password) The option mysql_read_default_group can be used to specify the default group in the config file: Usually this is the I group, but see the following example: [client] host=localhost [perl] host=perlhost (Note the order of the entries! The example won't work, if you reverse the [client] and [perl] sections!) If you read this config file, then you'll be typically connected to I. However, by using $dsn = "DBI:mysql:test;mysql_read_default_group=perl;" . "mysql_read_default_file=/home/joe/my.cnf"; $dbh = DBI->connect($dsn, $user, $password); you'll be connected to I. Note that if you specify a default group and do not specify a file, then the default config files will all be read. See the documentation of the C function mysql_options() for details. =item mysql_socket It is possible to choose the Unix socket that is used for connecting to the server. This is done, for example, with mysql_socket=/dev/mysql Usually there's no need for this option, unless you are using another location for the socket than that built into the client. =item mysql_ssl A true value turns on the CLIENT_SSL flag when connecting to the MySQL server and enforce SSL encryption. A false value (which is default) disable SSL encryption with the MySQL server. When enabling SSL encryption you should set also other SSL options, at least mysql_ssl_ca_file or mysql_ssl_ca_path. mysql_ssl=1 mysql_ssl_verify_server_cert=1 mysql_ssl_ca_file=/path/to/ca_cert.pem This means that your communication with the server will be encrypted. Please note that this can only work if you enabled SSL when compiling DBD::mysql; this is the default starting version 4.034. See L for more details. =item mysql_ssl_ca_file The path to a file in PEM format that contains a list of trusted SSL certificate authorities. When set MySQL server certificate is checked that it is signed by some CA certificate in the list. Common Name value is not verified unless C is enabled. =item mysql_ssl_ca_path The path to a directory that contains trusted SSL certificate authority certificates in PEM format. When set MySQL server certificate is checked that it is signed by some CA certificate in the list. Common Name value is not verified unless C is enabled. Please note that this option is supported only if your MySQL client was compiled with OpenSSL library, and not with default yaSSL library. =item mysql_ssl_verify_server_cert Checks the server's Common Name value in the certificate that the server sends to the client. The client verifies that name against the host name the client uses for connecting to the server, and the connection fails if there is a mismatch. For encrypted connections, this option helps prevent man-in-the-middle attacks. Verification of the host name is disabled by default. =item mysql_ssl_client_key The name of the SSL key file in PEM format to use for establishing a secure connection. =item mysql_ssl_client_cert The name of the SSL certificate file in PEM format to use for establishing a secure connection. =item mysql_ssl_cipher A list of permissible ciphers to use for connection encryption. If no cipher in the list is supported, encrypted connections will not work. mysql_ssl_cipher=AES128-SHA mysql_ssl_cipher=DHE-RSA-AES256-SHA:AES128-SHA =item mysql_ssl_optional Setting C to true disables strict SSL enforcement and makes SSL connection optional. This option opens security hole for man-in-the-middle attacks. Default value is false which means that C set to true enforce SSL encryption. This option was introduced in 4.043 version of DBD::mysql. Due to L and L vulnerabilities in libmysqlclient library, enforcement of SSL encryption was not possbile and therefore C was effectively set for all DBD::mysql versions prior to 4.043. Starting with 4.043, DBD::mysql with C could refuse connection to MySQL server if underlaying libmysqlclient library is vulnerable. Option C can be used to make SSL connection vulnerable. =item mysql_server_pubkey Path to the RSA public key of the server. This is used for the sha256_password and caching_sha2_password authentication plugins. =item mysql_get_server_pubkey Setting C to true requests the public RSA key of the server. =item mysql_local_infile The LOCAL capability for LOAD DATA may be disabled in the MySQL client library by default. If your DSN contains the option "mysql_local_infile=1", LOAD DATA LOCAL will be enabled. (However, this option is *ineffective* if the server has also been configured to disallow LOCAL.) =item mysql_multi_statements Support for multiple statements separated by a semicolon (;) may be enabled by using this option. Enabling this option may cause problems if server-side prepared statements are also enabled. =item mysql_server_prepare This option is used to enable server side prepared statements. To use server side prepared statements, all you need to do is set the variable mysql_server_prepare in the connect: $dbh = DBI->connect( "DBI:mysql:database=test;host=localhost;mysql_server_prepare=1", "", "", { RaiseError => 1, AutoCommit => 1 } ); or: $dbh = DBI->connect( "DBI:mysql:database=test;host=localhost", "", "", { RaiseError => 1, AutoCommit => 1, mysql_server_prepare => 1 } ); There are many benefits to using server side prepare statements, mostly if you are performing many inserts because of that fact that a single statement is prepared to accept multiple insert values. To make sure that the 'make test' step tests whether server prepare works, you just need to export the env variable MYSQL_SERVER_PREPARE: export MYSQL_SERVER_PREPARE=1 Please note that mysql server cannot prepare or execute some prepared statements. In this case DBD::mysql fallbacks to normal non-prepared statement and tries again. =item mysql_server_prepare_disable_fallback This option disable fallback to normal non-prepared statement when mysql server does not support execution of current statement as prepared. Useful when you want to be sure that statement is going to be executed as server side prepared. Error message and code in case of failure is propagated back to DBI. =item mysql_embedded_options The option can be used to pass 'command-line' options to embedded server. Example: use DBI; $testdsn="DBI:mysqlEmb:database=test;mysql_embedded_options=--help,--verbose"; $dbh = DBI->connect($testdsn,"a","b"); This would cause the command line help to the embedded MySQL server library to be printed. =item mysql_embedded_groups The option can be used to specify the groups in the config file(I) which will be used to get options for embedded server. If not specified [server] and [embedded] groups will be used. Example: $testdsn="DBI:mysqlEmb:database=test;mysql_embedded_groups=embedded_server,common"; =item mysql_conn_attrs The option is a hash of attribute names and values which can be used to send custom connection attributes to the server. Some attributes like '_os', '_platform', '_client_name' and '_client_version' are added by libmysqlclient and 'program_name' is added by DBD::mysql. You can then later read these attributes from the performance schema tables which can be quite helpful for profiling your database or creating statistics. You'll have to use a MySQL 5.6 server and libmysqlclient or newer to leverage this feature. my $dbh= DBI->connect($dsn, $user, $password, { AutoCommit => 0, mysql_conn_attrs => { foo => 'bar', wiz => 'bang' }, }); Now you can select the results from the performance schema tables. You can do this in the same session, but also afterwards. It can be very useful to answer questions like 'which script sent this query?'. my $results = $dbh->selectall_hashref( 'SELECT * FROM performance_schema.session_connect_attrs', 'ATTR_NAME' ); This returns: $result = { 'foo' => { 'ATTR_VALUE' => 'bar', 'PROCESSLIST_ID' => '3', 'ATTR_NAME' => 'foo', 'ORDINAL_POSITION' => '6' }, 'wiz' => { 'ATTR_VALUE' => 'bang', 'PROCESSLIST_ID' => '3', 'ATTR_NAME' => 'wiz', 'ORDINAL_POSITION' => '3' }, 'program_name' => { 'ATTR_VALUE' => './foo.pl', 'PROCESSLIST_ID' => '3', 'ATTR_NAME' => 'program_name', 'ORDINAL_POSITION' => '5' }, '_client_name' => { 'ATTR_VALUE' => 'libmysql', 'PROCESSLIST_ID' => '3', 'ATTR_NAME' => '_client_name', 'ORDINAL_POSITION' => '1' }, '_client_version' => { 'ATTR_VALUE' => '5.6.24', 'PROCESSLIST_ID' => '3', 'ATTR_NAME' => '_client_version', 'ORDINAL_POSITION' => '7' }, '_os' => { 'ATTR_VALUE' => 'osx10.8', 'PROCESSLIST_ID' => '3', 'ATTR_NAME' => '_os', 'ORDINAL_POSITION' => '0' }, '_pid' => { 'ATTR_VALUE' => '59860', 'PROCESSLIST_ID' => '3', 'ATTR_NAME' => '_pid', 'ORDINAL_POSITION' => '2' }, '_platform' => { 'ATTR_VALUE' => 'x86_64', 'PROCESSLIST_ID' => '3', 'ATTR_NAME' => '_platform', 'ORDINAL_POSITION' => '4' } }; =back =back =head2 Private MetaData Methods =over =item B my $drh = DBI->install_driver("mysql"); @dbs = $drh->func("$hostname:$port", '_ListDBs'); @dbs = $drh->func($hostname, $port, '_ListDBs'); @dbs = $dbh->func('_ListDBs'); Returns a list of all databases managed by the MySQL server running on C<$hostname>, port C<$port>. This is a legacy method. Instead, you should use the portable method @dbs = DBI->data_sources("mysql"); =back =head1 DATABASE HANDLES The DBD::mysql driver supports the following attributes of database handles (read only): $errno = $dbh->{'mysql_errno'}; $error = $dbh->{'mysql_error'}; $info = $dbh->{'mysql_hostinfo'}; $info = $dbh->{'mysql_info'}; $insertid = $dbh->{'mysql_insertid'}; $info = $dbh->{'mysql_protoinfo'}; $info = $dbh->{'mysql_serverinfo'}; $info = $dbh->{'mysql_stat'}; $threadId = $dbh->{'mysql_thread_id'}; These correspond to mysql_errno(), mysql_error(), mysql_get_host_info(), mysql_info(), mysql_insert_id(), mysql_get_proto_info(), mysql_get_server_info(), mysql_stat() and mysql_thread_id(), respectively. =over 2 =item mysql_clientinfo List information of the MySQL client library that DBD::mysql was built against: print "$dbh->{mysql_clientinfo}\n"; 5.2.0-MariaDB =item mysql_clientversion print "$dbh->{mysql_clientversion}\n"; 50200 =item mysql_serverversion print "$dbh->{mysql_serverversion}\n"; 50200 =item mysql_dbd_stats $info_hashref = $dbh->{mysql_dbd_stats}; DBD::mysql keeps track of some statistics in the mysql_dbd_stats attribute. The following stats are being maintained: =over 8 =item auto_reconnects_ok The number of times that DBD::mysql successfully reconnected to the mysql server. =item auto_reconnects_failed The number of times that DBD::mysql tried to reconnect to mysql but failed. =back =back The DBD::mysql driver also supports the following attributes of database handles (read/write): =over =item mysql_auto_reconnect This attribute determines whether DBD::mysql will automatically reconnect to mysql if the connection be lost. This feature defaults to off; however, if either the GATEWAY_INTERFACE or MOD_PERL environment variable is set, DBD::mysql will turn mysql_auto_reconnect on. Setting mysql_auto_reconnect to on is not advised if 'lock tables' is used because if DBD::mysql reconnect to mysql all table locks will be lost. This attribute is ignored when AutoCommit is turned off, and when AutoCommit is turned off, DBD::mysql will not automatically reconnect to the server. It is also possible to set the default value of the C attribute for the $dbh by passing it in the C<\%attr> hash for Cconnect>. $dbh->{mysql_auto_reconnect} = 1; or my $dbh = DBI->connect($dsn, $user, $password, { mysql_auto_reconnect => 1, }); Note that if you are using a module or framework that performs reconnections for you (for example L in fixup mode), this value must be set to 0. =item mysql_use_result This attribute forces the driver to use mysql_use_result rather than mysql_store_result. The former is faster and less memory consuming, but tends to block other processes. mysql_store_result is the default due to that fact storing the result is expected behavior with most applications. It is possible to set the default value of the C attribute for the $dbh via the DSN: $dbh = DBI->connect("DBI:mysql:test;mysql_use_result=1", "root", ""); You can also set it after creation of the database handle: $dbh->{mysql_use_result} = 0; # disable $dbh->{mysql_use_result} = 1; # enable You can also set or unset the C setting on your statement handle, when creating the statement handle or after it has been created. See L. =item mysql_enable_utf8 This attribute determines whether DBD::mysql should assume strings stored in the database are utf8. This feature defaults to off. When set, a data retrieved from a textual column type (char, varchar, etc) will have the UTF-8 flag turned on if necessary. This enables character semantics on that string. You will also need to ensure that your database / table / column is configured to use UTF8. See for more information the chapter on character set support in the MySQL manual: L Additionally, turning on this flag tells MySQL that incoming data should be treated as UTF-8. This will only take effect if used as part of the call to connect(). If you turn the flag on after connecting, you will need to issue the command C to get the same effect. =item mysql_enable_utf8mb4 This is similar to mysql_enable_utf8, but is capable of handling 4-byte UTF-8 characters. =item mysql_bind_type_guessing This attribute causes the driver (emulated prepare statements) to attempt to guess if a value being bound is a numeric value, and if so, doesn't quote the value. This was created by Dragonchild and is one way to deal with the performance issue of using quotes in a statement that is inserting or updating a large numeric value. This was previously called C because it is experimental. I have successfully run the full test suite with this option turned on, the name can now be simply C. CAVEAT: Even though you can insert an integer value into a character column, if this column is indexed, if you query that column with the integer value not being quoted, it will not use the index: MariaDB [test]> explain select * from test where value0 = '3' \G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: test type: ref possible_keys: value0 key: value0 key_len: 13 ref: const rows: 1 Extra: Using index condition 1 row in set (0.00 sec) MariaDB [test]> explain select * from test where value0 = 3 -> \G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: test type: ALL possible_keys: value0 key: NULL key_len: NULL ref: NULL rows: 6 Extra: Using where 1 row in set (0.00 sec) See bug: https://rt.cpan.org/Ticket/Display.html?id=43822 C can be turned on via - through DSN my $dbh= DBI->connect('DBI:mysql:test', 'username', 'pass', { mysql_bind_type_guessing => 1}) - OR after handle creation $dbh->{mysql_bind_type_guessing} = 1; =item mysql_bind_comment_placeholders This attribute causes the driver (emulated prepare statements) will cause any placeholders in comments to be bound. This is not correct prepared statement behavior, but some developers have come to depend on this behavior, so I have made it available in 4.015 =item mysql_no_autocommit_cmd This attribute causes the driver to not issue 'set autocommit' either through explicit or using mysql_autocommit(). This is particularly useful in the case of using MySQL Proxy. See the bug report: https://rt.cpan.org/Public/Bug/Display.html?id=46308 C can be turned on when creating the database handle: my $dbh = DBI->connect('DBI:mysql:test', 'username', 'pass', { mysql_no_autocommit_cmd => 1}); or using an existing database handle: $dbh->{mysql_no_autocommit_cmd} = 1; =item ping This can be used to send a ping to the server. $rc = $dbh->ping(); =back =head1 STATEMENT HANDLES The statement handles of DBD::mysql support a number of attributes. You access these by using, for example, my $numFields = $sth->{NUM_OF_FIELDS}; Note, that most attributes are valid only after a successful I. An C value will returned otherwise. The most important exception is the C attribute, which forces the driver to use mysql_use_result rather than mysql_store_result. The former is faster and less memory consuming, but tends to block other processes. (That's why mysql_store_result is the default.) To set the C attribute, use either of the following: my $sth = $dbh->prepare("QUERY", { mysql_use_result => 1}); or my $sth = $dbh->prepare($sql); $sth->{mysql_use_result} = 1; Column dependent attributes, for example I, the column names, are returned as a reference to an array. The array indices are corresponding to the indices of the arrays returned by I and similar methods. For example the following code will print a header of table names together with all rows: my $sth = $dbh->prepare("SELECT * FROM $table") || die "Error:" . $dbh->errstr . "\n"; $sth->execute || die "Error:" . $sth->errstr . "\n"; my $names = $sth->{NAME}; my $numFields = $sth->{'NUM_OF_FIELDS'} - 1; for my $i ( 0..$numFields ) { printf("%s%s", $i ? "," : "", $$names[$i]); } print "\n"; while (my $ref = $sth->fetchrow_arrayref) { for my $i ( 0..$numFields ) { printf("%s%s", $i ? "," : "", $$ref[$i]); } print "\n"; } For portable applications you should restrict yourself to attributes with capitalized or mixed case names. Lower case attribute names are private to DBD::mysql. The attribute list includes: =over =item ChopBlanks this attribute determines whether a I will chop preceding and trailing blanks off the column values. Chopping blanks does not have impact on the I attribute. =item mysql_gtids Returns GTID(s) if GTID session tracking is ensabled in the server via session_track_gtids. =item mysql_insertid If the statement you executed performs an INSERT, and there is an AUTO_INCREMENT column in the table you inserted in, this attribute holds the value stored into the AUTO_INCREMENT column, if that value is automatically generated, by storing NULL or 0 or was specified as an explicit value. Typically, you'd access the value via $sth->{mysql_insertid}. The value can also be accessed via $dbh->{mysql_insertid} but this can easily produce incorrect results in case one database handle is shared. =item mysql_is_blob Reference to an array of boolean values; TRUE indicates, that the respective column is a blob. This attribute is valid for MySQL only. =item mysql_is_key Reference to an array of boolean values; TRUE indicates, that the respective column is a key. This is valid for MySQL only. =item mysql_is_num Reference to an array of boolean values; TRUE indicates, that the respective column contains numeric values. =item mysql_is_pri_key Reference to an array of boolean values; TRUE indicates, that the respective column is a primary key. =item mysql_is_auto_increment Reference to an array of boolean values; TRUE indicates that the respective column is an AUTO_INCREMENT column. This is only valid for MySQL. =item mysql_length =item mysql_max_length A reference to an array of maximum column sizes. The I is the maximum physically present in the result table, I gives the theoretically possible maximum. I is valid for MySQL only. =item NAME A reference to an array of column names. =item NULLABLE A reference to an array of boolean values; TRUE indicates that this column may contain NULL's. =item NUM_OF_FIELDS Number of fields returned by a I
for gotchas and warnings about the use of flock(). =head1 BUGS AND LIMITATIONS This module uses hash interfaces of two column file databases. While none of supported SQL engines have support for indices, the following statements really do the same (even if they mean something completely different) for each dbm type which lacks C support: $sth->do( "insert into foo values (1, 'hello')" ); # this statement does ... $sth->do( "update foo set v='world' where k=1" ); # ... the same as this statement $sth->do( "insert into foo values (1, 'world')" ); This is considered to be a bug and might change in a future release. Known affected dbm types are C and C. We highly recommended you use a more modern dbm type such as C. =head1 GETTING HELP, MAKING SUGGESTIONS, AND REPORTING BUGS If you need help installing or using DBD::DBM, please write to the DBI users mailing list at dbi-users@perl.org or to the comp.lang.perl.modules newsgroup on usenet. I cannot always answer every question quickly but there are many on the mailing list or in the newsgroup who can. DBD developers for DBD's which rely on DBD::File or DBD::DBM or use one of them as an example are suggested to join the DBI developers mailing list at dbi-dev@perl.org and strongly encouraged to join our IRC channel at L. If you have suggestions, ideas for improvements, or bugs to report, please report a bug as described in DBI. Do not mail any of the authors directly, you might not get an answer. When reporting bugs, please send the output of $dbh->dbm_versions($table) for a table that exhibits the bug and as small a sample as you can make of the code that produces the bug. And of course, patches are welcome, too :-). If you need enhancements quickly, you can get commercial support as described at L or you can contact Jens Rehsack at rehsack@cpan.org for commercial support in Germany. Please don't bother Jochen Wiedmann or Jeff Zucker for support - they handed over further maintenance to H.Merijn Brand and Jens Rehsack. =head1 ACKNOWLEDGEMENTS Many, many thanks to Tim Bunce for prodding me to write this, and for copious, wise, and patient suggestions all along the way. (Jeff Zucker) I send my thanks and acknowledgements to H.Merijn Brand for his initial refactoring of DBD::File and his strong and ongoing support of SQL::Statement. Without him, the current progress would never have been made. And I have to name Martin J. Evans for each laugh (and correction) of all those funny word creations I (as non-native speaker) made to the documentation. And - of course - I have to thank all those unnamed contributors and testers from the Perl community. (Jens Rehsack) =head1 AUTHOR AND COPYRIGHT This module is written by Jeff Zucker < jzucker AT cpan.org >, who also maintained it till 2007. After that, in 2010, Jens Rehsack & H.Merijn Brand took over maintenance. Copyright (c) 2004 by Jeff Zucker, all rights reserved. Copyright (c) 2010-2013 by Jens Rehsack & H.Merijn Brand, all rights reserved. You may freely distribute and/or modify this module under the terms of either the GNU General Public License (GPL) or the Artistic License, as specified in the Perl README file. =head1 SEE ALSO L, L, L, L, L, L, L, L, L =cut perl5/dbixs_rev.pl000044400000002775152462470720010137 0ustar00#!perl -w use strict; my $dbixs_rev_file = "dbixs_rev.h"; my $is_make_dist; my $svnversion; if (is_dbi_svn_dir(".")) { $svnversion = `svnversion -n`; } elsif (is_dbi_svn_dir("..")) { # presumably we're in a subdirectory because the user is doing a 'make dist' $svnversion = `svnversion -n ..`; $is_make_dist = 1; } else { # presumably we're being run by an end-user because their file timestamps # got messed up print "Skipping regeneration of $dbixs_rev_file\n"; utime(time(), time(), $dbixs_rev_file); # update modification time exit 0; } my @warn; die "Neither current directory nor parent directory are an svn working copy\n" unless $svnversion and $svnversion =~ m/^\d+/; push @warn, "Mixed revision working copy ($svnversion:$1)" if $svnversion =~ s/:(\d+)//; push @warn, "Code modified since last checkin" if $svnversion =~ s/[MS]+$//; warn "$dbixs_rev_file warning: $_\n" for @warn; die "$0 failed\n" if $is_make_dist && @warn; write_header($dbixs_rev_file, DBIXS_REVISION => $svnversion, \@warn); sub write_header { my ($file, $macro, $version, $comments_ref) = @_; open my $fh, ">$file" or die "Can't open $file: $!\n"; unshift @$comments_ref, scalar localtime(time); print $fh "/* $_ */\n" for @$comments_ref; print $fh "#define $macro $version\n"; close $fh or die "Error closing $file: $!\n"; print "Wrote $macro $version to $file\n"; } sub is_dbi_svn_dir { my ($dir) = @_; return (-d "$dir/.svn" && -f "$dir/MANIFEST.SKIP"); } perl5/common/sense.pod000044400000037071152462470720010723 0ustar00=head1 NAME common::sense - save a tree AND a kitten, use common::sense! =head1 SYNOPSIS use common::sense; # Supposed to be mostly the same, with much lower memory usage, as: # use utf8; # use strict qw(vars subs); # use feature qw(say state switch); # use feature qw(unicode_strings unicode_eval current_sub fc evalbytes); # no feature qw(array_base); # no warnings; # use warnings qw(FATAL closed threads internal debugging pack # prototype inplace io pipe unpack malloc glob # digit printf layer reserved taint closure semicolon); # no warnings qw(exec newline unopened); =head1 DESCRIPTION “Nothing is more fairly distributed than common sense: no one thinks he needs more of it than he already has.†– René Descartes This module implements some sane defaults for Perl programs, as defined by two typical (or not so typical - use your common sense) specimens of Perl coders. In fact, after working out details on which warnings and strict modes to enable and make fatal, we found that we (and our code written so far, and others) fully agree on every option, even though we never used warnings before, so it seems this module indeed reflects a "common" sense among some long-time Perl coders. The basic philosophy behind the choices made in common::sense can be summarised as: "enforcing strict policies to catch as many bugs as possible, while at the same time, not limiting the expressive power available to the programmer". Two typical examples of how this philosophy is applied in practise is the handling of uninitialised and malloc warnings: =over 4 =item I C is a well-defined feature of perl, and enabling warnings for using it rarely catches any bugs, but considerably limits you in what you can do, so uninitialised warnings are disabled. =item I Freeing something twice on the C level is a serious bug, usually causing memory corruption. It often leads to side effects much later in the program and there are no advantages to not reporting this, so malloc warnings are fatal by default. =back Unfortunately, there is no fine-grained warning control in perl, so often whole groups of useful warnings had to be excluded because of a single useless warning (for example, perl puts an arbitrary limit on the length of text you can match with some regexes before emitting a warning, making the whole C category useless). What follows is a more thorough discussion of what this module does, and why it does it, and what the advantages (and disadvantages) of this approach are. =head1 RATIONALE =over 4 =item use utf8 While it's not common sense to write your programs in UTF-8, it's quickly becoming the most common encoding, is the designated future default encoding for perl sources, and the most convenient encoding available (you can do really nice quoting tricks...). Experience has shown that our programs were either all pure ascii or utf-8, both of which will stay the same. There are few drawbacks to enabling UTF-8 source code by default (mainly some speed hits due to bugs in older versions of perl), so this module enables UTF-8 source code encoding by default. =item use strict qw(subs vars) Using C is definitely common sense, but C definitely overshoots its usefulness. After almost two decades of Perl hacking, we decided that it does more harm than being useful. Specifically, constructs like these: @{ $var->[0] } Must be written like this (or similarly), when C is in scope, and C<$var> can legally be C: @{ $var->[0] || [] } This is annoying, and doesn't shield against obvious mistakes such as using C<"">, so one would even have to write (at least for the time being): @{ defined $var->[0] ? $var->[0] : [] } ... which nobody with a bit of common sense would consider writing: clear code is clearly something else. Curiously enough, sometimes perl is not so strict, as this works even with C in scope: for (@{ $var->[0] }) { ... If that isn't hypocrisy! And all that from a mere program! =item use feature qw(say state given ...) We found it annoying that we always have to enable extra features. If something breaks because it didn't anticipate future changes, so be it. 5.10 broke almost all our XS modules and nobody cared either (or at least I know of nobody who really complained about gratuitous changes - as opposed to bugs). Few modules that are not actively maintained work with newer versions of Perl, regardless of use feature or not, so a new major perl release means changes to many modules - new keywords are just the tip of the iceberg. If your code isn't alive, it's dead, Jim - be an active maintainer. But nobody forces you to use those extra features in modules meant for older versions of perl - common::sense of course works there as well. There is also an important other mode where having additional features by default is useful: commandline hacks and internal use scripts: See "much reduced typing", below. There is one notable exception: C is not enabled by default. In our opinion, C had one main effect - newer perl versions don't value backwards compatibility and the ability to write modules for multiple perl versions much, after all, you can use feature. C doesn't add a new feature, it breaks an existing function. =item no warnings, but a lot of new errors Ah, the dreaded warnings. Even worse, the horribly dreaded C<-w> switch: Even though we don't care if other people use warnings (and certainly there are useful ones), a lot of warnings simply go against the spirit of Perl. Most prominently, the warnings related to C. There is nothing wrong with C: it has well-defined semantics, it is useful, and spitting out warnings you never asked for is just evil. The result was that every one of our modules did C in the past, to avoid somebody accidentally using and forcing his bad standards on our code. Of course, this switched off all warnings, even the useful ones. Not a good situation. Really, the C<-w> switch should only enable warnings for the main program only. Funnily enough, L explicitly mentions C<-w> (and not in a favourable way, calling it outright "wrong"), but standard utilities, such as L, or MakeMaker when running C, still enable them blindly. For version 2 of common::sense, we finally sat down a few hours and went through I, identifying - according to common sense - all the useful ones. This resulted in the rather impressive list in the SYNOPSIS. When we weren't sure, we didn't include the warning, so the list might grow in the future (we might have made a mistake, too, so the list might shrink as well). Note the presence of C in the list: we do not think that the conditions caught by these warnings are worthy of a warning, we I that they are worthy of I your program, I. They are I! Therefore we consider C to be much stricter than C, which is good if you are into strict things (we are not, actually, but these things tend to be subjective). After deciding on the list, we ran the module against all of our code that uses C (that is almost all of our code), and found only one occurrence where one of them caused a problem: one of elmex's (unreleased) modules contained: $fmt =~ s/([^\s\[]*)\[( [^\]]* )\]/\x0$1\x1$2\x0/xgo; We quickly agreed that indeed the code should be changed, even though it happened to do the right thing when the warning was switched off. =item much reduced typing Especially with version 2.0 of common::sense, the amount of boilerplate code you need to add to get I policy is daunting. Nobody would write this out in throwaway scripts, commandline hacks or in quick internal-use scripts. By using common::sense you get a defined set of policies (ours, but maybe yours, too, if you accept them), and they are easy to apply to your scripts: typing C is even shorter than C. And you can immediately use the features of your installed perl, which is more difficult in code you release, but not usually an issue for internal-use code (downgrades of your production perl should be rare, right?). =item mucho reduced memory usage Just using all those pragmas mentioned in the SYNOPSIS together wastes I<< B<776> kilobytes >> of precious memory in my perl, for I, which on our machines, is a lot. In comparison, this module only uses I<< B >> kilobytes (I even had to write it out so it looks like more) of memory on the same platform. The money/time/effort/electricity invested in these gigabytes (probably petabytes globally!) of wasted memory could easily save 42 trees, and a kitten! Unfortunately, until everybody applies more common sense, there will still often be modules that pull in the monster pragmas. But one can hope... =back =head1 THERE IS NO 'no common::sense'!!!! !!!! !! This module doesn't offer an unimport. First of all, it wastes even more memory, second, and more importantly, who with even a bit of common sense would want no common sense? =head1 STABILITY AND FUTURE VERSIONS Future versions might change just about everything in this module. We might test our modules and upload new ones working with newer versions of this module, and leave you standing in the rain because we didn't tell you. In fact, we did so when switching from 1.0 to 2.0, which enabled gobs of warnings, and made them FATAL on top. Maybe we will load some nifty modules that try to emulate C or so with perls older than 5.10 (this module, of course, should work with older perl versions - supporting 5.8 for example is just common sense at this time. Maybe not in the future, but of course you can trust our common sense to be consistent with, uhm, our opinion). =head1 WHAT OTHER PEOPLE HAD TO SAY ABOUT THIS MODULE apeiron "... wow" "I hope common::sense is a joke." crab "i wonder how it would be if joerg schilling wrote perl modules." Adam Kennedy "Very interesting, efficient, and potentially something I'd use all the time." [...] "So no common::sense for me, alas." H.Merijn Brand "Just one more reason to drop JSON::XS from my distribution list" Pista Palo "Something in short supply these days..." Steffen Schwigon "This module is quite for sure *not* just a repetition of all the other 'use strict, use warnings'-approaches, and it's also not the opposite. [...] And for its chosen middle-way it's also not the worst name ever. And everything is documented." BKB "[Deleted - thanks to Steffen Schwigon for pointing out this review was in error.]" Somni "the arrogance of the guy" "I swear he tacked somenoe else's name onto the module just so he could use the royal 'we' in the documentation" Anonymous Monk "You just gotta love this thing, its got META.json!!!" dngor "Heh. '""' The quotes are semantic distancing from that e-mail address." Jerad Pierce "Awful name (not a proper pragma), and the SYNOPSIS doesn't tell you anything either. Nor is it clear what features have to do with "common sense" or discipline." acme "THERE IS NO 'no common::sense'!!!! !!!! !!" apeiron (meta-comment about us commenting^Wquoting his comment) "How about quoting this: get a clue, you fucktarded amoeba." quanth "common sense is beautiful, json::xs is fast, Anyevent, EV are fast and furious. I love mlehmannware ;)" apeiron "... it's mlehmann's view of what common sense is. His view of common sense is certainly uncommon, insofar as anyone with a clue disagrees with him." apeiron (another meta-comment) "apeiron wonders if his little informant is here to steal more quotes" ew73 "... I never got past the SYNOPSIS before calling it shit." [...] How come no one ever quotes me. :(" chip (not willing to explain his cryptic questions about links in Changes files) "I'm willing to ask the question I've asked. I'm not willing to go through the whole dance you apparently have choreographed. Either answer the completely obvious question, or tell me to fuck off again." =head1 FREQUENTLY ASKED QUESTIONS Or frequently-come-up confusions. =over 4 =item Is this module meant to be serious? Yes, we would have put it under the C namespace otherwise. =item But the manpage is written in a funny/stupid/... way? This was meant to make it clear that our common sense is a subjective thing and other people can use their own notions, taking the steam out of anybody who might be offended (as some people are always offended no matter what you do). This was a failure. But we hope the manpage still is somewhat entertaining even though it explains boring rationale. =item Why do you impose your conventions on my code? For some reason people keep thinking that C imposes process-wide limits, even though the SYNOPSIS makes it clear that it works like other similar modules - i.e. only within the scope that Cs them. So, no, we don't - nobody is forced to use this module, and using a module that relies on common::sense does not impose anything on you. =item Why do you think only your notion of common::sense is valid? Well, we don't, and have clearly written this in the documentation to every single release. We were just faster than anybody else w.r.t. to grabbing the namespace. =item But everybody knows that you have to use strict and use warnings, why do you disable them? Well, we don't do this either - we selectively disagree with the usefulness of some warnings over others. This module is aimed at experienced Perl programmers, not people migrating from other languages who might be surprised about stuff such as C. On the other hand, this does not exclude the usefulness of this module for total newbies, due to its strictness in enforcing policy, while at the same time not limiting the expressive power of perl. This module is considerably I strict than the canonical C, as it makes all its warnings fatal in nature, so you can not get away with as many things as with the canonical approach. This was not implemented in version 1.0 because of the daunting number of warning categories and the difficulty in getting exactly the set of warnings you wish (i.e. look at the SYNOPSIS in how complicated it is to get a specific set of warnings - it is not reasonable to put this into every module, the maintenance effort would be enormous). =item But many modules C or C, so the memory savings do not apply? I suddenly feel sad... But yes, that's true. Fortunately C still uses only a miniscule amount of RAM. =item But it adds another dependency to your modules! It's a fact, yeah. But it's trivial to install, most popular modules have many more dependencies. And we consider dependencies a good thing - it leads to better APIs, more thought about interworking of modules and so on. =item Why do you use JSON and not YAML for your META.yml? This is not true - YAML supports a large subset of JSON, and this subset is what META.yml is written in, so it would be correct to say "the META.yml is written in a common subset of YAML and JSON". The META.yml follows the YAML, JSON and META.yml specifications, and is correctly parsed by CPAN, so if you have trouble with it, the problem is likely on your side. =item But! But! Yeah, we know. =back =head1 AUTHOR Marc Lehmann http://home.schmorp.de/ Robin Redeker, "". =cut perl5/common/sense.pm000044400000000754152462470720010553 0ustar00package common::sense; our $VERSION = 3.75; # overload should be included sub import { local $^W; # work around perl 5.16 spewing out warnings for next statement # use warnings ${^WARNING_BITS} ^= ${^WARNING_BITS} ^ "\x0c\x3f\x33\x00\x03\xf0\x0f\xc0\xf0\xfc\x33\x00\x00\x00\x0c\x00\x00"; # use strict, use utf8; use feature; $^H |= 0x1c820fc0; @^H{qw(feature___SUB__ feature_evalbytes feature_fc feature_say feature_state feature_switch feature_unicode)} = (1) x 7; } 1 perl5/JSON/Syck.pm000044400000015100152462470720007617 0ustar00package JSON::Syck; use strict; use Exporter; use YAML::Syck (); our $VERSION = '1.34'; our @EXPORT_OK = qw( Load Dump LoadFile DumpFile DumpInto ); our @ISA = qw/Exporter/; *Load = \&YAML::Syck::LoadJSON; *Dump = \&YAML::Syck::DumpJSON; sub DumpFile { my $file = shift; if ( YAML::Syck::_is_glob($file) ) { my $err = YAML::Syck::DumpJSONFile( $_[0], $file ); if ($err) { $! = 0 + $err; die "Error writing to filehandle $file: $!\n"; } } else { open( my $fh, '>', $file ) or die "Cannot write to $file: $!"; my $err = YAML::Syck::DumpJSONFile( $_[0], $fh ); if ($err) { $! = 0 + $err; die "Error writing to file $file: $!\n"; } close $fh or die "Error writing to file $file: $!\n"; } return 1; } sub LoadFile { my $file = shift; if ( YAML::Syck::_is_glob($file) ) { YAML::Syck::LoadJSON( do { local $/; <$file> } ); } else { if ( !-e $file || -z $file ) { die("'$file' is non-existent or empty"); } open( my $fh, '<', $file ) or die "Cannot read from $file: $!"; YAML::Syck::LoadJSON( do { local $/; <$fh> } ); } } sub DumpInto { my $bufref = shift; ( ref $bufref ) or die "DumpInto not given reference to output buffer\n"; YAML::Syck::DumpJSONInto( $_[0], $bufref ); 1; } $JSON::Syck::ImplicitTyping = 1; $JSON::Syck::MaxDepth = 512; $JSON::Syck::Headless = 1; $JSON::Syck::ImplicitUnicode = 0; $JSON::Syck::SingleQuote = 0; 1; __END__ =head1 NAME JSON::Syck - JSON is YAML (but consider using L instead!) =head1 SYNOPSIS use JSON::Syck; # no exports by default my $data = JSON::Syck::Load($json); my $json = JSON::Syck::Dump($data); # $file can be an IO object, or a filename my $data = JSON::Syck::LoadFile($file); JSON::Syck::DumpFile($file, $data); # Dump into a pre-existing buffer my $json; JSON::Syck::DumpInto(\$json, $data); =head1 DESCRIPTION JSON::Syck is a syck implementation of JSON parsing and generation. Because JSON is YAML (L), using syck gives you a fast and memory-efficient parser and dumper for JSON data representation. However, a newer module L, has since emerged. It is more flexible, efficient and robust, so please consider using it instead of this module. =head1 DIFFERENCE WITH JSON You might want to know the difference between the I module and this one. Since JSON is a pure-perl module and JSON::Syck is based on libsyck, JSON::Syck is supposed to be very fast and memory efficient. See chansen's benchmark table at L JSON.pm comes with dozens of ways to do the same thing and lots of options, while JSON::Syck doesn't. There's only C and C. Oh, and JSON::Syck doesn't use camelCase method names :-) =head1 REFERENCES =head2 SCALAR REFERENCE For now, when you pass a scalar reference to JSON::Syck, it dereferences to get the actual scalar value. JSON::Syck raises an exception when you pass in circular references. If you want to serialize self referencing stuff, you should use YAML which supports it. =head2 SUBROUTINE REFERENCE When you pass subroutine reference, JSON::Syck dumps it as null. =head1 UTF-8 FLAGS By default this module doesn't touch any of utf-8 flags set in strings, and assumes UTF-8 bytes to be passed and emit. However, when you set C<$JSON::Syck::ImplicitUnicode> to 1, this module properly decodes UTF-8 binaries and sets UTF-8 flag everywhere, as in: JSON (UTF-8 bytes) => Perl (UTF-8 flagged) JSON (UTF-8 flagged) => Perl (UTF-8 flagged) Perl (UTF-8 bytes) => JSON (UTF-8 flagged) Perl (UTF-8 flagged) => JSON (UTF-8 flagged) By default, JSON::Syck::Dump will only transverse up to 512 levels of a datastructure in order to avoid an infinite loop when it is presented with an circular reference. However, you set C<$JSON::Syck::MaxLevels> to a larger value if you have very complex structures. Unfortunately, there's no implicit way to dump Perl UTF-8 flagged data structure to utf-8 encoded JSON. To do this, simply use Encode module, e.g.: use Encode; use JSON::Syck qw(Dump); my $json = encode_utf8( Dump($data) ); Alternatively you can use Encode::JavaScript::UCS to encode Unicode strings as in I<%uXXXX> form. use Encode; use Encode::JavaScript::UCS; use JSON::Syck qw(Dump); my $json_unicode_escaped = encode( 'JavaScript-UCS', Dump($data) ); =head1 QUOTING According to the JSON specification, all JSON strings are to be double-quoted. However, when embedding JavaScript in HTML attributes, it may be more convenient to use single quotes. Set C<$JSON::Syck::SingleQuote> to 1 will make both C and C expect single-quoted string literals. =head1 BUGS Dumping into tied (or other magic variables) with C might not work properly in all cases. When dumping with C, some spacing might be wrong and C<$JSON::Syck::SingleQuote> might be handled incorrectly. =head1 SEE ALSO L, L =head1 AUTHORS Audrey Tang Ecpan@audreyt.orgE Tatsuhiko Miyagawa Emiyagawa@gmail.comE =head1 COPYRIGHT Copyright 2005-2009 by Audrey Tang Ecpan@audreyt.orgE. This software is released under the MIT license cited below. The F code bundled with this library is released by "why the lucky stiff", under a BSD-style license. See the F file for details. =head2 The "MIT" License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. =cut perl5/JSON/XS.pm000044400000210056152462470720007247 0ustar00=head1 NAME JSON::XS - JSON serialising/deserialising, done correctly and fast =encoding utf-8 JSON::XS - æ­£ã—ãã¦é«˜é€Ÿãª JSON シリアライザ/デシリアライザ (http://fleur.hio.jp/perldoc/mix/lib/JSON/XS.html) =head1 SYNOPSIS use JSON::XS; # exported functions, they croak on error # and expect/generate UTF-8 $utf8_encoded_json_text = encode_json $perl_hash_or_arrayref; $perl_hash_or_arrayref = decode_json $utf8_encoded_json_text; # OO-interface $coder = JSON::XS->new->ascii->pretty->allow_nonref; $pretty_printed_unencoded = $coder->encode ($perl_scalar); $perl_scalar = $coder->decode ($unicode_json_text); # Note that JSON version 2.0 and above will automatically use JSON::XS # if available, at virtually no speed overhead either, so you should # be able to just: use JSON; # and do the same things, except that you have a pure-perl fallback now. =head1 DESCRIPTION This module converts Perl data structures to JSON and vice versa. Its primary goal is to be I and its secondary goal is to be I. To reach the latter goal it was written in C. See MAPPING, below, on how JSON::XS maps perl values to JSON values and vice versa. =head2 FEATURES =over =item * correct Unicode handling This module knows how to handle Unicode, documents how and when it does so, and even documents what "correct" means. =item * round-trip integrity When you serialise a perl data structure using only data types supported by JSON and Perl, the deserialised data structure is identical on the Perl level. (e.g. the string "2.0" doesn't suddenly become "2" just because it looks like a number). There I minor exceptions to this, read the MAPPING section below to learn about those. =item * strict checking of JSON correctness There is no guessing, no generating of illegal JSON texts by default, and only JSON is accepted as input by default (the latter is a security feature). =item * fast Compared to other JSON modules and other serialisers such as Storable, this module usually compares favourably in terms of speed, too. =item * simple to use This module has both a simple functional interface as well as an object oriented interface. =item * reasonably versatile output formats You can choose between the most compact guaranteed-single-line format possible (nice for simple line-based protocols), a pure-ASCII format (for when your transport is not 8-bit clean, still supports the whole Unicode range), or a pretty-printed format (for when you want to read that stuff). Or you can combine those features in whatever way you like. =back =cut package JSON::XS; use common::sense; our $VERSION = '4.03'; our @ISA = qw(Exporter); our @EXPORT = qw(encode_json decode_json); use Exporter; use XSLoader; use Types::Serialiser (); =head1 FUNCTIONAL INTERFACE The following convenience methods are provided by this module. They are exported by default: =over =item $json_text = encode_json $perl_scalar Converts the given Perl data structure to a UTF-8 encoded, binary string (that is, the string contains octets only). Croaks on error. This function call is functionally identical to: $json_text = JSON::XS->new->utf8->encode ($perl_scalar) Except being faster. =item $perl_scalar = decode_json $json_text The opposite of C: expects a UTF-8 (binary) string and tries to parse that as a UTF-8 encoded JSON text, returning the resulting reference. Croaks on error. This function call is functionally identical to: $perl_scalar = JSON::XS->new->utf8->decode ($json_text) Except being faster. =back =head1 A FEW NOTES ON UNICODE AND PERL Since this often leads to confusion, here are a few very clear words on how Unicode works in Perl, modulo bugs. =over =item 1. Perl strings can store characters with ordinal values > 255. This enables you to store Unicode characters as single characters in a Perl string - very natural. =item 2. Perl does I associate an encoding with your strings. ... until you force it to, e.g. when matching it against a regex, or printing the scalar to a file, in which case Perl either interprets your string as locale-encoded text, octets/binary, or as Unicode, depending on various settings. In no case is an encoding stored together with your data, it is I that decides encoding, not any magical meta data. =item 3. The internal utf-8 flag has no meaning with regards to the encoding of your string. Just ignore that flag unless you debug a Perl bug, a module written in XS or want to dive into the internals of perl. Otherwise it will only confuse you, as, despite the name, it says nothing about how your string is encoded. You can have Unicode strings with that flag set, with that flag clear, and you can have binary data with that flag set and that flag clear. Other possibilities exist, too. If you didn't know about that flag, just the better, pretend it doesn't exist. =item 4. A "Unicode String" is simply a string where each character can be validly interpreted as a Unicode code point. If you have UTF-8 encoded data, it is no longer a Unicode string, but a Unicode string encoded in UTF-8, giving you a binary string. =item 5. A string containing "high" (> 255) character values is I a UTF-8 string. It's a fact. Learn to live with it. =back I hope this helps :) =head1 OBJECT-ORIENTED INTERFACE The object oriented interface lets you configure your own encoding or decoding style, within the limits of supported formats. =over =item $json = new JSON::XS Creates a new JSON::XS object that can be used to de/encode JSON strings. All boolean flags described below are by default I (with the exception of C, which defaults to I since version C<4.0>). The mutators for flags all return the JSON object again and thus calls can be chained: my $json = JSON::XS->new->utf8->space_after->encode ({a => [1,2]}) => {"a": [1, 2]} =item $json = $json->ascii ([$enable]) =item $enabled = $json->get_ascii If C<$enable> is true (or missing), then the C method will not generate characters outside the code range C<0..127> (which is ASCII). Any Unicode characters outside that range will be escaped using either a single \uXXXX (BMP characters) or a double \uHHHH\uLLLLL escape sequence, as per RFC4627. The resulting encoded JSON text can be treated as a native Unicode string, an ascii-encoded, latin1-encoded or UTF-8 encoded string, or any other superset of ASCII. If C<$enable> is false, then the C method will not escape Unicode characters unless required by the JSON syntax or other flags. This results in a faster and more compact format. See also the section I later in this document. The main use for this flag is to produce JSON texts that can be transmitted over a 7-bit channel, as the encoded JSON texts will not contain any 8 bit characters. JSON::XS->new->ascii (1)->encode ([chr 0x10401]) => ["\ud801\udc01"] =item $json = $json->latin1 ([$enable]) =item $enabled = $json->get_latin1 If C<$enable> is true (or missing), then the C method will encode the resulting JSON text as latin1 (or iso-8859-1), escaping any characters outside the code range C<0..255>. The resulting string can be treated as a latin1-encoded JSON text or a native Unicode string. The C method will not be affected in any way by this flag, as C by default expects Unicode, which is a strict superset of latin1. If C<$enable> is false, then the C method will not escape Unicode characters unless required by the JSON syntax or other flags. See also the section I later in this document. The main use for this flag is efficiently encoding binary data as JSON text, as most octets will not be escaped, resulting in a smaller encoded size. The disadvantage is that the resulting JSON text is encoded in latin1 (and must correctly be treated as such when storing and transferring), a rare encoding for JSON. It is therefore most useful when you want to store data structures known to contain binary data efficiently in files or databases, not when talking to other JSON encoders/decoders. JSON::XS->new->latin1->encode (["\x{89}\x{abc}"] => ["\x{89}\\u0abc"] # (perl syntax, U+abc escaped, U+89 not) =item $json = $json->utf8 ([$enable]) =item $enabled = $json->get_utf8 If C<$enable> is true (or missing), then the C method will encode the JSON result into UTF-8, as required by many protocols, while the C method expects to be handed a UTF-8-encoded string. Please note that UTF-8-encoded strings do not contain any characters outside the range C<0..255>, they are thus useful for bytewise/binary I/O. In future versions, enabling this option might enable autodetection of the UTF-16 and UTF-32 encoding families, as described in RFC4627. If C<$enable> is false, then the C method will return the JSON string as a (non-encoded) Unicode string, while C expects thus a Unicode string. Any decoding or encoding (e.g. to UTF-8 or UTF-16) needs to be done yourself, e.g. using the Encode module. See also the section I later in this document. Example, output UTF-16BE-encoded JSON: use Encode; $jsontext = encode "UTF-16BE", JSON::XS->new->encode ($object); Example, decode UTF-32LE-encoded JSON: use Encode; $object = JSON::XS->new->decode (decode "UTF-32LE", $jsontext); =item $json = $json->pretty ([$enable]) This enables (or disables) all of the C, C and C (and in the future possibly more) flags in one call to generate the most readable (or most compact) form possible. Example, pretty-print some simple structure: my $json = JSON::XS->new->pretty(1)->encode ({a => [1,2]}) => { "a" : [ 1, 2 ] } =item $json = $json->indent ([$enable]) =item $enabled = $json->get_indent If C<$enable> is true (or missing), then the C method will use a multiline format as output, putting every array member or object/hash key-value pair into its own line, indenting them properly. If C<$enable> is false, no newlines or indenting will be produced, and the resulting JSON text is guaranteed not to contain any C. This setting has no effect when decoding JSON texts. =item $json = $json->space_before ([$enable]) =item $enabled = $json->get_space_before If C<$enable> is true (or missing), then the C method will add an extra optional space before the C<:> separating keys from values in JSON objects. If C<$enable> is false, then the C method will not add any extra space at those places. This setting has no effect when decoding JSON texts. You will also most likely combine this setting with C. Example, space_before enabled, space_after and indent disabled: {"key" :"value"} =item $json = $json->space_after ([$enable]) =item $enabled = $json->get_space_after If C<$enable> is true (or missing), then the C method will add an extra optional space after the C<:> separating keys from values in JSON objects and extra whitespace after the C<,> separating key-value pairs and array members. If C<$enable> is false, then the C method will not add any extra space at those places. This setting has no effect when decoding JSON texts. Example, space_before and indent disabled, space_after enabled: {"key": "value"} =item $json = $json->relaxed ([$enable]) =item $enabled = $json->get_relaxed If C<$enable> is true (or missing), then C will accept some extensions to normal JSON syntax (see below). C will not be affected in any way. I. I suggest only to use this option to parse application-specific files written by humans (configuration files, resource files etc.) If C<$enable> is false (the default), then C will only accept valid JSON texts. Currently accepted extensions are: =over =item * list items can have an end-comma JSON I array elements and key-value pairs with commas. This can be annoying if you write JSON texts manually and want to be able to quickly append elements, so this extension accepts comma at the end of such items not just between them: [ 1, 2, <- this comma not normally allowed ] { "k1": "v1", "k2": "v2", <- this comma not normally allowed } =item * shell-style '#'-comments Whenever JSON allows whitespace, shell-style comments are additionally allowed. They are terminated by the first carriage-return or line-feed character, after which more white-space and comments are allowed. [ 1, # this comment not allowed in JSON # neither this one... ] =item * literal ASCII TAB characters in strings Literal ASCII TAB characters are now allowed in strings (and treated as C<\t>). [ "Hello\tWorld", "HelloWorld", # literal would not normally be allowed ] =back =item $json = $json->canonical ([$enable]) =item $enabled = $json->get_canonical If C<$enable> is true (or missing), then the C method will output JSON objects by sorting their keys. This is adding a comparatively high overhead. If C<$enable> is false, then the C method will output key-value pairs in the order Perl stores them (which will likely change between runs of the same script, and can change even within the same run from 5.18 onwards). This option is useful if you want the same data structure to be encoded as the same JSON text (given the same overall settings). If it is disabled, the same hash might be encoded differently even if contains the same data, as key-value pairs have no inherent ordering in Perl. This setting has no effect when decoding JSON texts. This setting has currently no effect on tied hashes. =item $json = $json->allow_nonref ([$enable]) =item $enabled = $json->get_allow_nonref Unlike other boolean options, this opotion is enabled by default beginning with version C<4.0>. See L for the gory details. If C<$enable> is true (or missing), then the C method can convert a non-reference into its corresponding string, number or null JSON value, which is an extension to RFC4627. Likewise, C will accept those JSON values instead of croaking. If C<$enable> is false, then the C method will croak if it isn't passed an arrayref or hashref, as JSON texts must either be an object or array. Likewise, C will croak if given something that is not a JSON object or array. Example, encode a Perl scalar as JSON value without enabled C, resulting in an error: JSON::XS->new->allow_nonref (0)->encode ("Hello, World!") => hash- or arrayref expected... =item $json = $json->allow_unknown ([$enable]) =item $enabled = $json->get_allow_unknown If C<$enable> is true (or missing), then C will I throw an exception when it encounters values it cannot represent in JSON (for example, filehandles) but instead will encode a JSON C value. Note that blessed objects are not included here and are handled separately by c. If C<$enable> is false (the default), then C will throw an exception when it encounters anything it cannot encode as JSON. This option does not affect C in any way, and it is recommended to leave it off unless you know your communications partner. =item $json = $json->allow_blessed ([$enable]) =item $enabled = $json->get_allow_blessed See L for details. If C<$enable> is true (or missing), then the C method will not barf when it encounters a blessed reference that it cannot convert otherwise. Instead, a JSON C value is encoded instead of the object. If C<$enable> is false (the default), then C will throw an exception when it encounters a blessed object that it cannot convert otherwise. This setting has no effect on C. =item $json = $json->convert_blessed ([$enable]) =item $enabled = $json->get_convert_blessed See L for details. If C<$enable> is true (or missing), then C, upon encountering a blessed object, will check for the availability of the C method on the object's class. If found, it will be called in scalar context and the resulting scalar will be encoded instead of the object. The C method may safely call die if it wants. If C returns other blessed objects, those will be handled in the same way. C must take care of not causing an endless recursion cycle (== crash) in this case. The name of C was chosen because other methods called by the Perl core (== not by the user of the object) are usually in upper case letters and to avoid collisions with any C function or method. If C<$enable> is false (the default), then C will not consider this type of conversion. This setting has no effect on C. =item $json = $json->allow_tags ([$enable]) =item $enabled = $json->get_allow_tags See L for details. If C<$enable> is true (or missing), then C, upon encountering a blessed object, will check for the availability of the C method on the object's class. If found, it will be used to serialise the object into a nonstandard tagged JSON value (that JSON decoders cannot decode). It also causes C to parse such tagged JSON values and deserialise them via a call to the C method. If C<$enable> is false (the default), then C will not consider this type of conversion, and tagged JSON values will cause a parse error in C, as if tags were not part of the grammar. =item $json->boolean_values ([$false, $true]) =item ($false, $true) = $json->get_boolean_values By default, JSON booleans will be decoded as overloaded C<$Types::Serialiser::false> and C<$Types::Serialiser::true> objects. With this method you can specify your own boolean values for decoding - on decode, JSON C will be decoded as a copy of C<$false>, and JSON C will be decoded as C<$true> ("copy" here is the same thing as assigning a value to another variable, i.e. C<$copy = $false>). Calling this method without any arguments will reset the booleans to their default values. C will return both C<$false> and C<$true> values, or the empty list when they are set to the default. =item $json = $json->filter_json_object ([$coderef->($hashref)]) When C<$coderef> is specified, it will be called from C each time it decodes a JSON object. The only argument is a reference to the newly-created hash. If the code reference returns a single scalar (which need not be a reference), this value (or rather a copy of it) is inserted into the deserialised data structure. If it returns an empty list (NOTE: I C, which is a valid scalar), the original deserialised hash will be inserted. This setting can slow down decoding considerably. When C<$coderef> is omitted or undefined, any existing callback will be removed and C will not change the deserialised hash in any way. Example, convert all JSON objects into the integer 5: my $js = JSON::XS->new->filter_json_object (sub { 5 }); # returns [5] $js->decode ('[{}]') # throw an exception because allow_nonref is not enabled # so a lone 5 is not allowed. $js->decode ('{"a":1, "b":2}'); =item $json = $json->filter_json_single_key_object ($key [=> $coderef->($value)]) Works remotely similar to C, but is only called for JSON objects having a single key named C<$key>. This C<$coderef> is called before the one specified via C, if any. It gets passed the single value in the JSON object. If it returns a single value, it will be inserted into the data structure. If it returns nothing (not even C but the empty list), the callback from C will be called next, as if no single-key callback were specified. If C<$coderef> is omitted or undefined, the corresponding callback will be disabled. There can only ever be one callback for a given key. As this callback gets called less often then the C one, decoding speed will not usually suffer as much. Therefore, single-key objects make excellent targets to serialise Perl objects into, especially as single-key JSON objects are as close to the type-tagged value concept as JSON gets (it's basically an ID/VALUE tuple). Of course, JSON does not support this in any way, so you need to make sure your data never looks like a serialised Perl hash. Typical names for the single object key are C<__class_whatever__>, or C<$__dollars_are_rarely_used__$> or C<}ugly_brace_placement>, or even things like C<__class_md5sum(classname)__>, to reduce the risk of clashing with real hashes. Example, decode JSON objects of the form C<< { "__widget__" => } >> into the corresponding C<< $WIDGET{} >> object: # return whatever is in $WIDGET{5}: JSON::XS ->new ->filter_json_single_key_object (__widget__ => sub { $WIDGET{ $_[0] } }) ->decode ('{"__widget__": 5') # this can be used with a TO_JSON method in some "widget" class # for serialisation to json: sub WidgetBase::TO_JSON { my ($self) = @_; unless ($self->{id}) { $self->{id} = ..get..some..id..; $WIDGET{$self->{id}} = $self; } { __widget__ => $self->{id} } } =item $json = $json->shrink ([$enable]) =item $enabled = $json->get_shrink Perl usually over-allocates memory a bit when allocating space for strings. This flag optionally resizes strings generated by either C or C to their minimum size possible. This can save memory when your JSON texts are either very very long or you have many short strings. It will also try to downgrade any strings to octet-form if possible: perl stores strings internally either in an encoding called UTF-X or in octet-form. The latter cannot store everything but uses less space in general (and some buggy Perl or C code might even rely on that internal representation being used). The actual definition of what shrink does might change in future versions, but it will always try to save space at the expense of time. If C<$enable> is true (or missing), the string returned by C will be shrunk-to-fit, while all strings generated by C will also be shrunk-to-fit. If C<$enable> is false, then the normal perl allocation algorithms are used. If you work with your data, then this is likely to be faster. In the future, this setting might control other things, such as converting strings that look like integers or floats into integers or floats internally (there is no difference on the Perl level), saving space. =item $json = $json->max_depth ([$maximum_nesting_depth]) =item $max_depth = $json->get_max_depth Sets the maximum nesting level (default C<512>) accepted while encoding or decoding. If a higher nesting level is detected in JSON text or a Perl data structure, then the encoder and decoder will stop and croak at that point. Nesting level is defined by number of hash- or arrayrefs that the encoder needs to traverse to reach a given point or the number of C<{> or C<[> characters without their matching closing parenthesis crossed to reach a given character in a string. Setting the maximum depth to one disallows any nesting, so that ensures that the object is only a single hash/object or array. If no argument is given, the highest possible setting will be used, which is rarely useful. Note that nesting is implemented by recursion in C. The default value has been chosen to be as large as typical operating systems allow without crashing. See SECURITY CONSIDERATIONS, below, for more info on why this is useful. =item $json = $json->max_size ([$maximum_string_size]) =item $max_size = $json->get_max_size Set the maximum length a JSON text may have (in bytes) where decoding is being attempted. The default is C<0>, meaning no limit. When C is called on a string that is longer then this many bytes, it will not attempt to decode the string but throw an exception. This setting has no effect on C (yet). If no argument is given, the limit check will be deactivated (same as when C<0> is specified). See SECURITY CONSIDERATIONS, below, for more info on why this is useful. =item $json_text = $json->encode ($perl_scalar) Converts the given Perl value or data structure to its JSON representation. Croaks on error. =item $perl_scalar = $json->decode ($json_text) The opposite of C: expects a JSON text and tries to parse it, returning the resulting simple scalar or reference. Croaks on error. =item ($perl_scalar, $characters) = $json->decode_prefix ($json_text) This works like the C method, but instead of raising an exception when there is trailing garbage after the first JSON object, it will silently stop parsing there and return the number of characters consumed so far. This is useful if your JSON texts are not delimited by an outer protocol and you need to know where the JSON text ends. JSON::XS->new->decode_prefix ("[1] the tail") => ([1], 3) =back =head1 INCREMENTAL PARSING In some cases, there is the need for incremental parsing of JSON texts. While this module always has to keep both JSON text and resulting Perl data structure in memory at one time, it does allow you to parse a JSON stream incrementally. It does so by accumulating text until it has a full JSON object, which it then can decode. This process is similar to using C to see if a full JSON object is available, but is much more efficient (and can be implemented with a minimum of method calls). JSON::XS will only attempt to parse the JSON text once it is sure it has enough text to get a decisive result, using a very simple but truly incremental parser. This means that it sometimes won't stop as early as the full parser, for example, it doesn't detect mismatched parentheses. The only thing it guarantees is that it starts decoding as soon as a syntactically valid JSON text has been seen. This means you need to set resource limits (e.g. C) to ensure the parser will stop parsing in the presence if syntax errors. The following methods implement this incremental parser. =over =item [void, scalar or list context] = $json->incr_parse ([$string]) This is the central parsing function. It can both append new text and extract objects from the stream accumulated so far (both of these functions are optional). If C<$string> is given, then this string is appended to the already existing JSON fragment stored in the C<$json> object. After that, if the function is called in void context, it will simply return without doing anything further. This can be used to add more text in as many chunks as you want. If the method is called in scalar context, then it will try to extract exactly I JSON object. If that is successful, it will return this object, otherwise it will return C. If there is a parse error, this method will croak just as C would do (one can then use C to skip the erroneous part). This is the most common way of using the method. And finally, in list context, it will try to extract as many objects from the stream as it can find and return them, or the empty list otherwise. For this to work, there must be no separators (other than whitespace) between the JSON objects or arrays, instead they must be concatenated back-to-back. If an error occurs, an exception will be raised as in the scalar context case. Note that in this case, any previously-parsed JSON texts will be lost. Example: Parse some JSON arrays/objects in a given string and return them. my @objs = JSON::XS->new->incr_parse ("[5][7][1,2]"); =item $lvalue_string = $json->incr_text This method returns the currently stored JSON fragment as an lvalue, that is, you can manipulate it. This I works when a preceding call to C in I successfully returned an object. Under all other circumstances you must not call this function (I mean it. although in simple tests it might actually work, it I fail under real world conditions). As a special exception, you can also call this method before having parsed anything. That means you can only use this function to look at or manipulate text before or after complete JSON objects, not while the parser is in the middle of parsing a JSON object. This function is useful in two cases: a) finding the trailing text after a JSON object or b) parsing multiple JSON objects separated by non-JSON text (such as commas). =item $json->incr_skip This will reset the state of the incremental parser and will remove the parsed text from the input buffer so far. This is useful after C died, in which case the input buffer and incremental parser state is left unchanged, to skip the text parsed so far and to reset the parse state. The difference to C is that only text until the parse error occurred is removed. =item $json->incr_reset This completely resets the incremental parser, that is, after this call, it will be as if the parser had never parsed anything. This is useful if you want to repeatedly parse JSON objects and want to ignore any trailing data, which means you have to reset the parser after each successful decode. =back =head2 LIMITATIONS The incremental parser is a non-exact parser: it works by gathering as much text as possible that I be a valid JSON text, followed by trying to decode it. That means it sometimes needs to read more data than strictly necessary to diagnose an invalid JSON text. For example, after parsing the following fragment, the parser I stop with an error, as this fragment I be the beginning of a valid JSON text: [, In reality, hopwever, the parser might continue to read data until a length limit is exceeded or it finds a closing bracket. =head2 EXAMPLES Some examples will make all this clearer. First, a simple example that works similarly to C: We want to decode the JSON object at the start of a string and identify the portion after the JSON object: my $text = "[1,2,3] hello"; my $json = new JSON::XS; my $obj = $json->incr_parse ($text) or die "expected JSON object or array at beginning of string"; my $tail = $json->incr_text; # $tail now contains " hello" Easy, isn't it? Now for a more complicated example: Imagine a hypothetical protocol where you read some requests from a TCP stream, and each request is a JSON array, without any separation between them (in fact, it is often useful to use newlines as "separators", as these get interpreted as whitespace at the start of the JSON text, which makes it possible to test said protocol with C...). Here is how you'd do it (it is trivial to write this in an event-based manner): my $json = new JSON::XS; # read some data from the socket while (sysread $socket, my $buf, 4096) { # split and decode as many requests as possible for my $request ($json->incr_parse ($buf)) { # act on the $request } } Another complicated example: Assume you have a string with JSON objects or arrays, all separated by (optional) comma characters (e.g. C<[1],[2], [3]>). To parse them, we have to skip the commas between the JSON texts, and here is where the lvalue-ness of C comes in useful: my $text = "[1],[2], [3]"; my $json = new JSON::XS; # void context, so no parsing done $json->incr_parse ($text); # now extract as many objects as possible. note the # use of scalar context so incr_text can be called. while (my $obj = $json->incr_parse) { # do something with $obj # now skip the optional comma $json->incr_text =~ s/^ \s* , //x; } Now lets go for a very complex example: Assume that you have a gigantic JSON array-of-objects, many gigabytes in size, and you want to parse it, but you cannot load it into memory fully (this has actually happened in the real world :). Well, you lost, you have to implement your own JSON parser. But JSON::XS can still help you: You implement a (very simple) array parser and let JSON decode the array elements, which are all full JSON objects on their own (this wouldn't work if the array elements could be JSON numbers, for example): my $json = new JSON::XS; # open the monster open my $fh, "incr_parse ($buf); # void context, so no parsing # Exit the loop once we found and removed(!) the initial "[". # In essence, we are (ab-)using the $json object as a simple scalar # we append data to. last if $json->incr_text =~ s/^ \s* \[ //x; } # now we have the skipped the initial "[", so continue # parsing all the elements. for (;;) { # in this loop we read data until we got a single JSON object for (;;) { if (my $obj = $json->incr_parse) { # do something with $obj last; } # add more data sysread $fh, my $buf, 65536 or die "read error: $!"; $json->incr_parse ($buf); # void context, so no parsing } # in this loop we read data until we either found and parsed the # separating "," between elements, or the final "]" for (;;) { # first skip whitespace $json->incr_text =~ s/^\s*//; # if we find "]", we are done if ($json->incr_text =~ s/^\]//) { print "finished.\n"; exit; } # if we find ",", we can continue with the next element if ($json->incr_text =~ s/^,//) { last; } # if we find anything else, we have a parse error! if (length $json->incr_text) { die "parse error near ", $json->incr_text; } # else add more data sysread $fh, my $buf, 65536 or die "read error: $!"; $json->incr_parse ($buf); # void context, so no parsing } This is a complex example, but most of the complexity comes from the fact that we are trying to be correct (bear with me if I am wrong, I never ran the above example :). =head1 MAPPING This section describes how JSON::XS maps Perl values to JSON values and vice versa. These mappings are designed to "do the right thing" in most circumstances automatically, preserving round-tripping characteristics (what you put in comes out as something equivalent). For the more enlightened: note that in the following descriptions, lowercase I refers to the Perl interpreter, while uppercase I refers to the abstract Perl language itself. =head2 JSON -> PERL =over =item object A JSON object becomes a reference to a hash in Perl. No ordering of object keys is preserved (JSON does not preserve object key ordering itself). =item array A JSON array becomes a reference to an array in Perl. =item string A JSON string becomes a string scalar in Perl - Unicode codepoints in JSON are represented by the same codepoints in the Perl string, so no manual decoding is necessary. =item number A JSON number becomes either an integer, numeric (floating point) or string scalar in perl, depending on its range and any fractional parts. On the Perl level, there is no difference between those as Perl handles all the conversion details, but an integer may take slightly less memory and might represent more values exactly than floating point numbers. If the number consists of digits only, JSON::XS will try to represent it as an integer value. If that fails, it will try to represent it as a numeric (floating point) value if that is possible without loss of precision. Otherwise it will preserve the number as a string value (in which case you lose roundtripping ability, as the JSON number will be re-encoded to a JSON string). Numbers containing a fractional or exponential part will always be represented as numeric (floating point) values, possibly at a loss of precision (in which case you might lose perfect roundtripping ability, but the JSON number will still be re-encoded as a JSON number). Note that precision is not accuracy - binary floating point values cannot represent most decimal fractions exactly, and when converting from and to floating point, JSON::XS only guarantees precision up to but not including the least significant bit. =item true, false These JSON atoms become C and C, respectively. They are overloaded to act almost exactly like the numbers C<1> and C<0>. You can check whether a scalar is a JSON boolean by using the C function (after C, of course). =item null A JSON null atom becomes C in Perl. =item shell-style comments (C<< # I >>) As a nonstandard extension to the JSON syntax that is enabled by the C setting, shell-style comments are allowed. They can start anywhere outside strings and go till the end of the line. =item tagged values (C<< (I)I >>). Another nonstandard extension to the JSON syntax, enabled with the C setting, are tagged values. In this implementation, the I must be a perl package/class name encoded as a JSON string, and the I must be a JSON array encoding optional constructor arguments. See L, below, for details. =back =head2 PERL -> JSON The mapping from Perl to JSON is slightly more difficult, as Perl is a truly typeless language, so we can only guess which JSON type is meant by a Perl value. =over =item hash references Perl hash references become JSON objects. As there is no inherent ordering in hash keys (or JSON objects), they will usually be encoded in a pseudo-random order. JSON::XS can optionally sort the hash keys (determined by the I flag), so the same datastructure will serialise to the same JSON text (given same settings and version of JSON::XS), but this incurs a runtime overhead and is only rarely useful, e.g. when you want to compare some JSON text against another for equality. =item array references Perl array references become JSON arrays. =item other references Other unblessed references are generally not allowed and will cause an exception to be thrown, except for references to the integers C<0> and C<1>, which get turned into C and C atoms in JSON. Since C uses the boolean model from L, you can also C and then use C and C to improve readability. use Types::Serialiser; encode_json [\0, Types::Serialiser::true] # yields [false,true] =item Types::Serialiser::true, Types::Serialiser::false These special values from the L module become JSON true and JSON false values, respectively. You can also use C<\1> and C<\0> directly if you want. =item blessed objects Blessed objects are not directly representable in JSON, but C allows various ways of handling objects. See L, below, for details. =item simple scalars Simple Perl scalars (any scalar that is not a reference) are the most difficult objects to encode: JSON::XS will encode undefined scalars as JSON C values, scalars that have last been used in a string context before encoding as JSON strings, and anything else as number value: # dump as number encode_json [2] # yields [2] encode_json [-3.0e17] # yields [-3e+17] my $value = 5; encode_json [$value] # yields [5] # used as string, so dump as string print $value; encode_json [$value] # yields ["5"] # undef becomes null encode_json [undef] # yields [null] You can force the type to be a JSON string by stringifying it: my $x = 3.1; # some variable containing a number "$x"; # stringified $x .= ""; # another, more awkward way to stringify print $x; # perl does it for you, too, quite often You can force the type to be a JSON number by numifying it: my $x = "3"; # some variable containing a string $x += 0; # numify it, ensuring it will be dumped as a number $x *= 1; # same thing, the choice is yours. You can not currently force the type in other, less obscure, ways. Tell me if you need this capability (but don't forget to explain why it's needed :). Note that numerical precision has the same meaning as under Perl (so binary to decimal conversion follows the same rules as in Perl, which can differ to other languages). Also, your perl interpreter might expose extensions to the floating point numbers of your platform, such as infinities or NaN's - these cannot be represented in JSON, and it is an error to pass those in. =back =head2 OBJECT SERIALISATION As JSON cannot directly represent Perl objects, you have to choose between a pure JSON representation (without the ability to deserialise the object automatically again), and a nonstandard extension to the JSON syntax, tagged values. =head3 SERIALISATION What happens when C encounters a Perl object depends on the C, C and C settings, which are used in this order: =over =item 1. C is enabled and the object has a C method. In this case, C uses the L object serialisation protocol to create a tagged JSON value, using a nonstandard extension to the JSON syntax. This works by invoking the C method on the object, with the first argument being the object to serialise, and the second argument being the constant string C to distinguish it from other serialisers. The C method can return any number of values (i.e. zero or more). These values and the paclkage/classname of the object will then be encoded as a tagged JSON value in the following format: ("classname")[FREEZE return values...] e.g.: ("URI")["http://www.google.com/"] ("MyDate")[2013,10,29] ("ImageData::JPEG")["Z3...VlCg=="] For example, the hypothetical C C method might use the objects C and C members to encode the object: sub My::Object::FREEZE { my ($self, $serialiser) = @_; ($self->{type}, $self->{id}) } =item 2. C is enabled and the object has a C method. In this case, the C method of the object is invoked in scalar context. It must return a single scalar that can be directly encoded into JSON. This scalar replaces the object in the JSON text. For example, the following C method will convert all L objects to JSON strings when serialised. The fatc that these values originally were L objects is lost. sub URI::TO_JSON { my ($uri) = @_; $uri->as_string } =item 3. C is enabled. The object will be serialised as a JSON null value. =item 4. none of the above If none of the settings are enabled or the respective methods are missing, C throws an exception. =back =head3 DESERIALISATION For deserialisation there are only two cases to consider: either nonstandard tagging was used, in which case C decides, or objects cannot be automatically be deserialised, in which case you can use postprocessing or the C or C callbacks to get some real objects our of your JSON. This section only considers the tagged value case: I a tagged JSON object is encountered during decoding and C is disabled, a parse error will result (as if tagged values were not part of the grammar). If C is enabled, C will look up the C method of the package/classname used during serialisation (it will not attempt to load the package as a Perl module). If there is no such method, the decoding will fail with an error. Otherwise, the C method is invoked with the classname as first argument, the constant string C as second argument, and all the values from the JSON array (the values originally returned by the C method) as remaining arguments. The method must then return the object. While technically you can return any Perl scalar, you might have to enable the C setting to make that work in all cases, so better return an actual blessed reference. As an example, let's implement a C function that regenerates the C from the C example earlier: sub My::Object::THAW { my ($class, $serialiser, $type, $id) = @_; $class->new (type => $type, id => $id) } =head1 ENCODING/CODESET FLAG NOTES The interested reader might have seen a number of flags that signify encodings or codesets - C, C and C. There seems to be some confusion on what these do, so here is a short comparison: C controls whether the JSON text created by C (and expected by C) is UTF-8 encoded or not, while C and C only control whether C escapes character values outside their respective codeset range. Neither of these flags conflict with each other, although some combinations make less sense than others. Care has been taken to make all flags symmetrical with respect to C and C, that is, texts encoded with any combination of these flag values will be correctly decoded when the same flags are used - in general, if you use different flag settings while encoding vs. when decoding you likely have a bug somewhere. Below comes a verbose discussion of these flags. Note that a "codeset" is simply an abstract set of character-codepoint pairs, while an encoding takes those codepoint numbers and I them, in our case into octets. Unicode is (among other things) a codeset, UTF-8 is an encoding, and ISO-8859-1 (= latin 1) and ASCII are both codesets I encodings at the same time, which can be confusing. =over =item C flag disabled When C is disabled (the default), then C/C generate and expect Unicode strings, that is, characters with high ordinal Unicode values (> 255) will be encoded as such characters, and likewise such characters are decoded as-is, no changes to them will be done, except "(re-)interpreting" them as Unicode codepoints or Unicode characters, respectively (to Perl, these are the same thing in strings unless you do funny/weird/dumb stuff). This is useful when you want to do the encoding yourself (e.g. when you want to have UTF-16 encoded JSON texts) or when some other layer does the encoding for you (for example, when printing to a terminal using a filehandle that transparently encodes to UTF-8 you certainly do NOT want to UTF-8 encode your data first and have Perl encode it another time). =item C flag enabled If the C-flag is enabled, C/C will encode all characters using the corresponding UTF-8 multi-byte sequence, and will expect your input strings to be encoded as UTF-8, that is, no "character" of the input string must have any value > 255, as UTF-8 does not allow that. The C flag therefore switches between two modes: disabled means you will get a Unicode string in Perl, enabled means you get a UTF-8 encoded octet/binary string in Perl. =item C or C flags enabled With C (or C) enabled, C will escape characters with ordinal values > 255 (> 127 with C) and encode the remaining characters as specified by the C flag. If C is disabled, then the result is also correctly encoded in those character sets (as both are proper subsets of Unicode, meaning that a Unicode string with all character values < 256 is the same thing as a ISO-8859-1 string, and a Unicode string with all character values < 128 is the same thing as an ASCII string in Perl). If C is enabled, you still get a correct UTF-8-encoded string, regardless of these flags, just some more characters will be escaped using C<\uXXXX> then before. Note that ISO-8859-1-I strings are not compatible with UTF-8 encoding, while ASCII-encoded strings are. That is because the ISO-8859-1 encoding is NOT a subset of UTF-8 (despite the ISO-8859-1 I being a subset of Unicode), while ASCII is. Surprisingly, C will ignore these flags and so treat all input values as governed by the C flag. If it is disabled, this allows you to decode ISO-8859-1- and ASCII-encoded strings, as both strict subsets of Unicode. If it is enabled, you can correctly decode UTF-8 encoded strings. So neither C nor C are incompatible with the C flag - they only govern when the JSON output engine escapes a character or not. The main use for C is to relatively efficiently store binary data as JSON, at the expense of breaking compatibility with most JSON decoders. The main use for C is to force the output to not contain characters with values > 127, which means you can interpret the resulting string as UTF-8, ISO-8859-1, ASCII, KOI8-R or most about any character set and 8-bit-encoding, and still get the same data structure back. This is useful when your channel for JSON transfer is not 8-bit clean or the encoding might be mangled in between (e.g. in mail), and works because ASCII is a proper subset of most 8-bit and multibyte encodings in use in the world. =back =head2 JSON and ECMAscript JSON syntax is based on how literals are represented in javascript (the not-standardised predecessor of ECMAscript) which is presumably why it is called "JavaScript Object Notation". However, JSON is not a subset (and also not a superset of course) of ECMAscript (the standard) or javascript (whatever browsers actually implement). If you want to use javascript's C function to "parse" JSON, you might run into parse errors for valid JSON texts, or the resulting data structure might not be queryable: One of the problems is that U+2028 and U+2029 are valid characters inside JSON strings, but are not allowed in ECMAscript string literals, so the following Perl fragment will not output something that can be guaranteed to be parsable by javascript's C: use JSON::XS; print encode_json [chr 0x2028]; The right fix for this is to use a proper JSON parser in your javascript programs, and not rely on C (see for example Douglas Crockford's F parser). If this is not an option, you can, as a stop-gap measure, simply encode to ASCII-only JSON: use JSON::XS; print JSON::XS->new->ascii->encode ([chr 0x2028]); Note that this will enlarge the resulting JSON text quite a bit if you have many non-ASCII characters. You might be tempted to run some regexes to only escape U+2028 and U+2029, e.g.: # DO NOT USE THIS! my $json = JSON::XS->new->utf8->encode ([chr 0x2028]); $json =~ s/\xe2\x80\xa8/\\u2028/g; # escape U+2028 $json =~ s/\xe2\x80\xa9/\\u2029/g; # escape U+2029 print $json; Note that I: the above only works for U+2028 and U+2029 and thus only for fully ECMAscript-compliant parsers. Many existing javascript implementations, however, have issues with other characters as well - using C naively simply I cause problems. Another problem is that some javascript implementations reserve some property names for their own purposes (which probably makes them non-ECMAscript-compliant). For example, Iceweasel reserves the C<__proto__> property name for its own purposes. If that is a problem, you could parse try to filter the resulting JSON output for these property strings, e.g.: $json =~ s/"__proto__"\s*:/"__proto__renamed":/g; This works because C<__proto__> is not valid outside of strings, so every occurrence of C<"__proto__"\s*:> must be a string used as property name. If you know of other incompatibilities, please let me know. =head2 JSON and YAML You often hear that JSON is a subset of YAML. This is, however, a mass hysteria(*) and very far from the truth (as of the time of this writing), so let me state it clearly: I that works in all cases. If you really must use JSON::XS to generate YAML, you should use this algorithm (subject to change in future versions): my $to_yaml = JSON::XS->new->utf8->space_after (1); my $yaml = $to_yaml->encode ($ref) . "\n"; This will I generate JSON texts that also parse as valid YAML. Please note that YAML has hardcoded limits on (simple) object key lengths that JSON doesn't have and also has different and incompatible unicode character escape syntax, so you should make sure that your hash keys are noticeably shorter than the 1024 "stream characters" YAML allows and that you do not have characters with codepoint values outside the Unicode BMP (basic multilingual page). YAML also does not allow C<\/> sequences in strings (which JSON::XS does not I generate, but other JSON generators might). There might be other incompatibilities that I am not aware of (or the YAML specification has been changed yet again - it does so quite often). In general you should not try to generate YAML with a JSON generator or vice versa, or try to parse JSON with a YAML parser or vice versa: chances are high that you will run into severe interoperability problems when you least expect it. =over =item (*) I have been pressured multiple times by Brian Ingerson (one of the authors of the YAML specification) to remove this paragraph, despite him acknowledging that the actual incompatibilities exist. As I was personally bitten by this "JSON is YAML" lie, I refused and said I will continue to educate people about these issues, so others do not run into the same problem again and again. After this, Brian called me a (quote)I(unquote). In my opinion, instead of pressuring and insulting people who actually clarify issues with YAML and the wrong statements of some of its proponents, I would kindly suggest reading the JSON spec (which is not that difficult or long) and finally make YAML compatible to it, and educating users about the changes, instead of spreading lies about the real compatibility for many I and trying to silence people who point out that it isn't true. Addendum/2009: the YAML 1.2 spec is still incompatible with JSON, even though the incompatibilities have been documented (and are known to Brian) for many years and the spec makes explicit claims that YAML is a superset of JSON. It would be so easy to fix, but apparently, bullying people and corrupting userdata is so much easier. =back =head2 SPEED It seems that JSON::XS is surprisingly fast, as shown in the following tables. They have been generated with the help of the C program in the JSON::XS distribution, to make it easy to compare on your own system. First comes a comparison between various modules using a very short single-line JSON string (also available at L). {"method": "handleMessage", "params": ["user1", "we were just talking"], "id": null, "array":[1,11,234,-5,1e5,1e7, 1, 0]} It shows the number of encodes/decodes per second (JSON::XS uses the functional interface, while JSON::XS/2 uses the OO interface with pretty-printing and hashkey sorting enabled, JSON::XS/3 enables shrink. JSON::DWIW/DS uses the deserialise function, while JSON::DWIW::FJ uses the from_json method). Higher is better: module | encode | decode | --------------|------------|------------| JSON::DWIW/DS | 86302.551 | 102300.098 | JSON::DWIW/FJ | 86302.551 | 75983.768 | JSON::PP | 15827.562 | 6638.658 | JSON::Syck | 63358.066 | 47662.545 | JSON::XS | 511500.488 | 511500.488 | JSON::XS/2 | 291271.111 | 388361.481 | JSON::XS/3 | 361577.931 | 361577.931 | Storable | 66788.280 | 265462.278 | --------------+------------+------------+ That is, JSON::XS is almost six times faster than JSON::DWIW on encoding, about five times faster on decoding, and over thirty to seventy times faster than JSON's pure perl implementation. It also compares favourably to Storable for small amounts of data. Using a longer test string (roughly 18KB, generated from Yahoo! Locals search API (L). module | encode | decode | --------------|------------|------------| JSON::DWIW/DS | 1647.927 | 2673.916 | JSON::DWIW/FJ | 1630.249 | 2596.128 | JSON::PP | 400.640 | 62.311 | JSON::Syck | 1481.040 | 1524.869 | JSON::XS | 20661.596 | 9541.183 | JSON::XS/2 | 10683.403 | 9416.938 | JSON::XS/3 | 20661.596 | 9400.054 | Storable | 19765.806 | 10000.725 | --------------+------------+------------+ Again, JSON::XS leads by far (except for Storable which non-surprisingly decodes a bit faster). On large strings containing lots of high Unicode characters, some modules (such as JSON::PC) seem to decode faster than JSON::XS, but the result will be broken due to missing (or wrong) Unicode handling. Others refuse to decode or encode properly, so it was impossible to prepare a fair comparison table for that case. =head1 SECURITY CONSIDERATIONS When you are using JSON in a protocol, talking to untrusted potentially hostile creatures requires relatively few measures. First of all, your JSON decoder should be secure, that is, should not have any buffer overflows. Obviously, this module should ensure that and I am trying hard on making that true, but you never know. Second, you need to avoid resource-starving attacks. That means you should limit the size of JSON texts you accept, or make sure then when your resources run out, that's just fine (e.g. by using a separate process that can crash safely). The size of a JSON text in octets or characters is usually a good indication of the size of the resources required to decode it into a Perl structure. While JSON::XS can check the size of the JSON text, it might be too late when you already have it in memory, so you might want to check the size before you accept the string. Third, JSON::XS recurses using the C stack when decoding objects and arrays. The C stack is a limited resource: for instance, on my amd64 machine with 8MB of stack size I can decode around 180k nested arrays but only 14k nested JSON objects (due to perl itself recursing deeply on croak to free the temporary). If that is exceeded, the program crashes. To be conservative, the default nesting limit is set to 512. If your process has a smaller stack, you should adjust this setting accordingly with the C method. Something else could bomb you, too, that I forgot to think of. In that case, you get to keep the pieces. I am always open for hints, though... Also keep in mind that JSON::XS might leak contents of your Perl data structures in its error messages, so when you serialise sensitive information you might want to make sure that exceptions thrown by JSON::XS will not end up in front of untrusted eyes. If you are using JSON::XS to return packets to consumption by JavaScript scripts in a browser you should have a look at L to see whether you are vulnerable to some common attack vectors (which really are browser design bugs, but it is still you who will have to deal with it, as major browser developers care only for features, not about getting security right). =head2 "OLD" VS. "NEW" JSON (RFC4627 VS. RFC7159) JSON originally required JSON texts to represent an array or object - scalar values were explicitly not allowed. This has changed, and versions of JSON::XS beginning with C<4.0> reflect this by allowing scalar values by default. One reason why one might not want this is that this removes a fundamental property of JSON texts, namely that they are self-delimited and self-contained, or in other words, you could take any number of "old" JSON texts and paste them together, and the result would be unambiguously parseable: [1,3]{"k":5}[][null] # four JSON texts, without doubt By allowing scalars, this property is lost: in the following example, is this one JSON text (the number 12) or two JSON texts (the numbers 1 and 2): 12 # could be 12, or 1 and 2 Another lost property of "old" JSON is that no lookahead is required to know the end of a JSON text, i.e. the JSON text definitely ended at the last C<]> or C<}> character, there was no need to read extra characters. For example, a viable network protocol with "old" JSON was to simply exchange JSON texts without delimiter. For "new" JSON, you have to use a suitable delimiter (such as a newline) after every JSON text or ensure you never encode/decode scalar values. Most protocols do work by only transferring arrays or objects, and the easiest way to avoid problems with the "new" JSON definition is to explicitly disallow scalar values in your encoder and decoder: $json_coder = JSON::XS->new->allow_nonref (0) This is a somewhat unhappy situation, and the blame can fully be put on JSON's inmventor, Douglas Crockford, who unilaterally changed the format in 2006 without consulting the IETF, forcing the IETF to either fork the format or go with it (as I was told, the IETF wasn't amused). =head1 RELATIONSHIP WITH I-JSON JSON is a somewhat sloppily-defined format - it carries around obvious Javascript baggage, such as not really defining number range, probably because Javascript only has one type of numbers: IEEE 64 bit floats ("binary64"). For this reaosn, RFC7493 defines "Internet JSON", which is a restricted subset of JSON that is supposedly more interoperable on the internet. While C does not offer specific support for I-JSON, it of course accepts valid I-JSON and by default implements some of the limitations of I-JSON, such as parsing numbers as perl numbers, which are usually a superset of binary64 numbers. To generate I-JSON, follow these rules: =over =item * always generate UTF-8 I-JSON must be encoded in UTF-8, the default for C. =item * numbers should be within IEEE 754 binary64 range Basically all existing perl installations use binary64 to represent floating point numbers, so all you need to do is to avoid large integers. =item * objects must not have duplicate keys This is trivially done, as C does not allow duplicate keys. =item * do not generate scalar JSON texts, use C<< ->allow_nonref (0) >> I-JSON strongly requests you to only encode arrays and objects into JSON. =item * times should be strings in ISO 8601 format There are a myriad of modules on CPAN dealing with ISO 8601 - search for C on CPAN and use one. =item * encode binary data as base64 While it's tempting to just dump binary data as a string (and let C do the escaping), for I-JSON, it's I to encode binary data as base64. =back There are some other considerations - read RFC7493 for the details if interested. =head1 INTEROPERABILITY WITH OTHER MODULES C uses the L module to provide boolean constants. That means that the JSON true and false values will be comaptible to true and false values of other modules that do the same, such as L and L. =head1 INTEROPERABILITY WITH OTHER JSON DECODERS As long as you only serialise data that can be directly expressed in JSON, C is incapable of generating invalid JSON output (modulo bugs, but C has found more bugs in the official JSON testsuite (1) than the official JSON testsuite has found in C (0)). When you have trouble decoding JSON generated by this module using other decoders, then it is very likely that you have an encoding mismatch or the other decoder is broken. When decoding, C is strict by default and will likely catch all errors. There are currently two settings that change this: C makes C accept (but not generate) some non-standard extensions, and C will allow you to encode and decode Perl objects, at the cost of not outputting valid JSON anymore. =head2 TAGGED VALUE SYNTAX AND STANDARD JSON EN/DECODERS When you use C to use the extended (and also nonstandard and invalid) JSON syntax for serialised objects, and you still want to decode the generated When you want to serialise objects, you can run a regex to replace the tagged syntax by standard JSON arrays (it only works for "normal" package names without comma, newlines or single colons). First, the readable Perl version: # if your FREEZE methods return no values, you need this replace first: $json =~ s/\( \s* (" (?: [^\\":,]+|\\.|::)* ") \s* \) \s* \[\s*\]/[$1]/gx; # this works for non-empty constructor arg lists: $json =~ s/\( \s* (" (?: [^\\":,]+|\\.|::)* ") \s* \) \s* \[/[$1,/gx; And here is a less readable version that is easy to adapt to other languages: $json =~ s/\(\s*("([^\\":,]+|\\.|::)*")\s*\)\s*\[/[$1,/g; Here is an ECMAScript version (same regex): json = json.replace (/\(\s*("([^\\":,]+|\\.|::)*")\s*\)\s*\[/g, "[$1,"); Since this syntax converts to standard JSON arrays, it might be hard to distinguish serialised objects from normal arrays. You can prepend a "magic number" as first array element to reduce chances of a collision: $json =~ s/\(\s*("([^\\":,]+|\\.|::)*")\s*\)\s*\[/["XU1peReLzT4ggEllLanBYq4G9VzliwKF",$1,/g; And after decoding the JSON text, you could walk the data structure looking for arrays with a first element of C. The same approach can be used to create the tagged format with another encoder. First, you create an array with the magic string as first member, the classname as second, and constructor arguments last, encode it as part of your JSON structure, and then: $json =~ s/\[\s*"XU1peReLzT4ggEllLanBYq4G9VzliwKF"\s*,\s*("([^\\":,]+|\\.|::)*")\s*,/($1)[/g; Again, this has some limitations - the magic string must not be encoded with character escapes, and the constructor arguments must be non-empty. =head1 (I-)THREADS This module is I guaranteed to be ithread (or MULTIPLICITY-) safe and there are no plans to change this. Note that perl's builtin so-called threads/ithreads are officially deprecated and should not be used. =head1 THE PERILS OF SETLOCALE Sometimes people avoid the Perl locale support and directly call the system's setlocale function with C. This breaks both perl and modules such as JSON::XS, as stringification of numbers no longer works correctly (e.g. C<$x = 0.1; print "$x"+1> might print C<1>, and JSON::XS might output illegal JSON as JSON::XS relies on perl to stringify numbers). The solution is simple: don't call C, or use it for only those categories you need, such as C or C. If you need C, you should enable it only around the code that actually needs it (avoiding stringification of numbers), and restore it afterwards. =head1 SOME HISTORY At the time this module was created there already were a number of JSON modules available on CPAN, so what was the reason to write yet another JSON module? While it seems there are many JSON modules, none of them correctly handled all corner cases, and in most cases their maintainers are unresponsive, gone missing, or not listening to bug reports for other reasons. Beginning with version 2.0 of the JSON module, when both JSON and JSON::XS are installed, then JSON will fall back on JSON::XS (this can be overridden) with no overhead due to emulation (by inheriting constructor and methods). If JSON::XS is not available, it will fall back to the compatible JSON::PP module as backend, so using JSON instead of JSON::XS gives you a portable JSON API that can be fast when you need it and doesn't require a C compiler when that is a problem. Somewhere around version 3, this module was forked into C, because its maintainer had serious trouble understanding JSON and insisted on a fork with many bugs "fixed" that weren't actually bugs, while spreading FUD about this module without actually giving any details on his accusations. You be the judge, but in my personal opinion, if you want quality, you will stay away from dangerous forks like that. =head1 BUGS While the goal of this module is to be correct, that unfortunately does not mean it's bug-free, only that I think its design is bug-free. If you keep reporting bugs they will be fixed swiftly, though. Please refrain from using rt.cpan.org or any other bug reporting service. I put the contact address into my modules for a reason. =cut BEGIN { *true = \$Types::Serialiser::true; *true = \&Types::Serialiser::true; *false = \$Types::Serialiser::false; *false = \&Types::Serialiser::false; *is_bool = \&Types::Serialiser::is_bool; *JSON::XS::Boolean:: = *Types::Serialiser::Boolean::; } XSLoader::load "JSON::XS", $VERSION; =head1 SEE ALSO The F command line utility for quick experiments. =head1 AUTHOR Marc Lehmann http://home.schmorp.de/ =cut 1 perl5/JSON/XS/Boolean.pm000044400000001122152462470720010616 0ustar00=head1 NAME JSON::XS::Boolean - dummy module providing JSON::XS::Boolean =head1 SYNOPSIS # do not "use" yourself =head1 DESCRIPTION This module exists only to provide overload resolution for Storable and similar modules. It's only needed for compatibility with data serialised (by other modules such as Storable) that was decoded by JSON::XS versions before 3.0. Since 3.0, JSON::PP::Boolean has replaced it. Support for JSON::XS::Boolean will be removed in a future release. =cut use JSON::XS (); 1; =head1 AUTHOR Marc Lehmann http://home.schmorp.de/ =cut perl5/auto/libwww/perl/.packlist000064400000003375152462470720012654 0ustar00/usr/local/bin/lwp-download /usr/local/bin/lwp-dump /usr/local/bin/lwp-mirror /usr/local/bin/lwp-request /usr/local/share/man/man1/lwp-download.1 /usr/local/share/man/man1/lwp-dump.1 /usr/local/share/man/man1/lwp-mirror.1 /usr/local/share/man/man1/lwp-request.1 /usr/local/share/man/man3/LWP.3pm /usr/local/share/man/man3/LWP::Authen::Ntlm.3pm /usr/local/share/man/man3/LWP::ConnCache.3pm /usr/local/share/man/man3/LWP::Debug.3pm /usr/local/share/man/man3/LWP::MemberMixin.3pm /usr/local/share/man/man3/LWP::Protocol.3pm /usr/local/share/man/man3/LWP::RobotUA.3pm /usr/local/share/man/man3/LWP::Simple.3pm /usr/local/share/man/man3/LWP::UserAgent.3pm /usr/local/share/man/man3/libwww::lwpcook.3pm /usr/local/share/man/man3/libwww::lwptut.3pm /usr/local/share/perl5/LWP.pm /usr/local/share/perl5/LWP/Authen/Basic.pm /usr/local/share/perl5/LWP/Authen/Digest.pm /usr/local/share/perl5/LWP/Authen/Ntlm.pm /usr/local/share/perl5/LWP/ConnCache.pm /usr/local/share/perl5/LWP/Debug.pm /usr/local/share/perl5/LWP/Debug/TraceHTTP.pm /usr/local/share/perl5/LWP/DebugFile.pm /usr/local/share/perl5/LWP/MemberMixin.pm /usr/local/share/perl5/LWP/Protocol.pm /usr/local/share/perl5/LWP/Protocol/cpan.pm /usr/local/share/perl5/LWP/Protocol/data.pm /usr/local/share/perl5/LWP/Protocol/file.pm /usr/local/share/perl5/LWP/Protocol/ftp.pm /usr/local/share/perl5/LWP/Protocol/gopher.pm /usr/local/share/perl5/LWP/Protocol/http.pm /usr/local/share/perl5/LWP/Protocol/loopback.pm /usr/local/share/perl5/LWP/Protocol/mailto.pm /usr/local/share/perl5/LWP/Protocol/nntp.pm /usr/local/share/perl5/LWP/Protocol/nogo.pm /usr/local/share/perl5/LWP/RobotUA.pm /usr/local/share/perl5/LWP/Simple.pm /usr/local/share/perl5/LWP/UserAgent.pm /usr/local/share/perl5/libwww/lwpcook.pod /usr/local/share/perl5/libwww/lwptut.pod perl5/auto/DBI/.packlist000064400000012564152462470720010775 0ustar00/usr/local/bin/dbilogstrip /usr/local/bin/dbiprof /usr/local/bin/dbiproxy /usr/local/lib64/perl5/Bundle/DBI.pm /usr/local/lib64/perl5/DBD/DBM.pm /usr/local/lib64/perl5/DBD/ExampleP.pm /usr/local/lib64/perl5/DBD/File.pm /usr/local/lib64/perl5/DBD/File/Developers.pod /usr/local/lib64/perl5/DBD/File/HowTo.pod /usr/local/lib64/perl5/DBD/File/Roadmap.pod /usr/local/lib64/perl5/DBD/Gofer.pm /usr/local/lib64/perl5/DBD/Gofer/Policy/Base.pm /usr/local/lib64/perl5/DBD/Gofer/Policy/classic.pm /usr/local/lib64/perl5/DBD/Gofer/Policy/pedantic.pm /usr/local/lib64/perl5/DBD/Gofer/Policy/rush.pm /usr/local/lib64/perl5/DBD/Gofer/Transport/Base.pm /usr/local/lib64/perl5/DBD/Gofer/Transport/corostream.pm /usr/local/lib64/perl5/DBD/Gofer/Transport/null.pm /usr/local/lib64/perl5/DBD/Gofer/Transport/pipeone.pm /usr/local/lib64/perl5/DBD/Gofer/Transport/stream.pm /usr/local/lib64/perl5/DBD/Mem.pm /usr/local/lib64/perl5/DBD/NullP.pm /usr/local/lib64/perl5/DBD/Proxy.pm /usr/local/lib64/perl5/DBD/Sponge.pm /usr/local/lib64/perl5/DBI.pm /usr/local/lib64/perl5/DBI/Changes.pm /usr/local/lib64/perl5/DBI/Const/GetInfo/ANSI.pm /usr/local/lib64/perl5/DBI/Const/GetInfo/ODBC.pm /usr/local/lib64/perl5/DBI/Const/GetInfoReturn.pm /usr/local/lib64/perl5/DBI/Const/GetInfoType.pm /usr/local/lib64/perl5/DBI/DBD.pm /usr/local/lib64/perl5/DBI/DBD/Metadata.pm /usr/local/lib64/perl5/DBI/DBD/SqlEngine.pm /usr/local/lib64/perl5/DBI/DBD/SqlEngine/Developers.pod /usr/local/lib64/perl5/DBI/DBD/SqlEngine/HowTo.pod /usr/local/lib64/perl5/DBI/Gofer/Execute.pm /usr/local/lib64/perl5/DBI/Gofer/Request.pm /usr/local/lib64/perl5/DBI/Gofer/Response.pm /usr/local/lib64/perl5/DBI/Gofer/Serializer/Base.pm /usr/local/lib64/perl5/DBI/Gofer/Serializer/DataDumper.pm /usr/local/lib64/perl5/DBI/Gofer/Serializer/Storable.pm /usr/local/lib64/perl5/DBI/Gofer/Transport/Base.pm /usr/local/lib64/perl5/DBI/Gofer/Transport/pipeone.pm /usr/local/lib64/perl5/DBI/Gofer/Transport/stream.pm /usr/local/lib64/perl5/DBI/Profile.pm /usr/local/lib64/perl5/DBI/ProfileData.pm /usr/local/lib64/perl5/DBI/ProfileDumper.pm /usr/local/lib64/perl5/DBI/ProfileDumper/Apache.pm /usr/local/lib64/perl5/DBI/ProfileSubs.pm /usr/local/lib64/perl5/DBI/ProxyServer.pm /usr/local/lib64/perl5/DBI/PurePerl.pm /usr/local/lib64/perl5/DBI/SQL/Nano.pm /usr/local/lib64/perl5/DBI/Util/CacheMemory.pm /usr/local/lib64/perl5/DBI/Util/_accessor.pm /usr/local/lib64/perl5/DBI/W32ODBC.pm /usr/local/lib64/perl5/Win32/DBIODBC.pm /usr/local/lib64/perl5/auto/DBI/DBI.so /usr/local/lib64/perl5/auto/DBI/DBIXS.h /usr/local/lib64/perl5/auto/DBI/Driver.xst /usr/local/lib64/perl5/auto/DBI/Driver_xst.h /usr/local/lib64/perl5/auto/DBI/dbd_xsh.h /usr/local/lib64/perl5/auto/DBI/dbi_sql.h /usr/local/lib64/perl5/auto/DBI/dbipport.h /usr/local/lib64/perl5/auto/DBI/dbivport.h /usr/local/lib64/perl5/auto/DBI/dbixs_rev.h /usr/local/lib64/perl5/dbixs_rev.pl /usr/local/share/man/man1/dbilogstrip.1 /usr/local/share/man/man1/dbiprof.1 /usr/local/share/man/man1/dbiproxy.1 /usr/local/share/man/man3/Bundle::DBI.3pm /usr/local/share/man/man3/DBD::DBM.3pm /usr/local/share/man/man3/DBD::File.3pm /usr/local/share/man/man3/DBD::File::Developers.3pm /usr/local/share/man/man3/DBD::File::HowTo.3pm /usr/local/share/man/man3/DBD::File::Roadmap.3pm /usr/local/share/man/man3/DBD::Gofer.3pm /usr/local/share/man/man3/DBD::Gofer::Policy::Base.3pm /usr/local/share/man/man3/DBD::Gofer::Policy::classic.3pm /usr/local/share/man/man3/DBD::Gofer::Policy::pedantic.3pm /usr/local/share/man/man3/DBD::Gofer::Policy::rush.3pm /usr/local/share/man/man3/DBD::Gofer::Transport::Base.3pm /usr/local/share/man/man3/DBD::Gofer::Transport::corostream.3pm /usr/local/share/man/man3/DBD::Gofer::Transport::null.3pm /usr/local/share/man/man3/DBD::Gofer::Transport::pipeone.3pm /usr/local/share/man/man3/DBD::Gofer::Transport::stream.3pm /usr/local/share/man/man3/DBD::Mem.3pm /usr/local/share/man/man3/DBD::Proxy.3pm /usr/local/share/man/man3/DBD::Sponge.3pm /usr/local/share/man/man3/DBI.3pm /usr/local/share/man/man3/DBI::Const::GetInfo::ANSI.3pm /usr/local/share/man/man3/DBI::Const::GetInfo::ODBC.3pm /usr/local/share/man/man3/DBI::Const::GetInfoReturn.3pm /usr/local/share/man/man3/DBI::Const::GetInfoType.3pm /usr/local/share/man/man3/DBI::DBD.3pm /usr/local/share/man/man3/DBI::DBD::Metadata.3pm /usr/local/share/man/man3/DBI::DBD::SqlEngine.3pm /usr/local/share/man/man3/DBI::DBD::SqlEngine::Developers.3pm /usr/local/share/man/man3/DBI::DBD::SqlEngine::HowTo.3pm /usr/local/share/man/man3/DBI::Gofer::Execute.3pm /usr/local/share/man/man3/DBI::Gofer::Request.3pm /usr/local/share/man/man3/DBI::Gofer::Response.3pm /usr/local/share/man/man3/DBI::Gofer::Serializer::Base.3pm /usr/local/share/man/man3/DBI::Gofer::Serializer::DataDumper.3pm /usr/local/share/man/man3/DBI::Gofer::Serializer::Storable.3pm /usr/local/share/man/man3/DBI::Gofer::Transport::Base.3pm /usr/local/share/man/man3/DBI::Gofer::Transport::pipeone.3pm /usr/local/share/man/man3/DBI::Gofer::Transport::stream.3pm /usr/local/share/man/man3/DBI::Profile.3pm /usr/local/share/man/man3/DBI::ProfileData.3pm /usr/local/share/man/man3/DBI::ProfileDumper.3pm /usr/local/share/man/man3/DBI::ProfileDumper::Apache.3pm /usr/local/share/man/man3/DBI::ProfileSubs.3pm /usr/local/share/man/man3/DBI::ProxyServer.3pm /usr/local/share/man/man3/DBI::PurePerl.3pm /usr/local/share/man/man3/DBI::SQL::Nano.3pm /usr/local/share/man/man3/DBI::Util::CacheMemory.3pm /usr/local/share/man/man3/DBI::W32ODBC.3pm /usr/local/share/man/man3/Win32::DBIODBC.3pm perl5/auto/DBI/dbixs_rev.h000044400000000154152462470720011306 0ustar00/* Fri Jul 13 13:32:02 2012 */ /* Mixed revision working copy (15349:15353) */ #define DBIXS_REVISION 15349 perl5/auto/DBI/dbd_xsh.h000044400000007056152462470720010744 0ustar00/* @(#)$Id$ * * Copyright 2000-2002 Tim Bunce * Copyright 2002 Jonathan Leffler * * These prototypes are for dbdimp.c funcs used in the XS file. * These names are #defined to driver specific names by the * dbdimp.h file in the driver source. */ #ifndef DBI_DBD_XSH_H #define DBI_DBD_XSH_H void dbd_init _((dbistate_t *dbistate)); int dbd_discon_all _((SV *drh, imp_drh_t *imp_drh)); SV *dbd_take_imp_data _((SV *h, imp_xxh_t *imp_xxh, void *foo)); /* Support for dbd_dr_data_sources and dbd_db_do added to Driver.xst in DBI v1.33 */ /* dbd_dr_data_sources: optional: defined by a driver that calls a C */ /* function to get the list of data sources */ AV *dbd_dr_data_sources(SV *drh, imp_drh_t *imp_drh, SV *attrs); int dbd_db_login6_sv _((SV *dbh, imp_dbh_t *imp_dbh, SV *dbname, SV *uid, SV *pwd, SV*attribs)); int dbd_db_login6 _((SV *dbh, imp_dbh_t *imp_dbh, char *dbname, char *uid, char *pwd, SV*attribs)); /* deprecated */ int dbd_db_login _((SV *dbh, imp_dbh_t *imp_dbh, char *dbname, char *uid, char *pwd)); /* deprecated */ /* Note: interface of dbd_db_do changed in v1.33 */ /* Old prototype: dbd_db_do _((SV *sv, char *statement)); */ /* dbd_db_do: optional: defined by a driver if the DBI default version is too slow */ int dbd_db_do4 _((SV *dbh, imp_dbh_t *imp_dbh, char *statement, SV *params)); /* deprecated */ IV dbd_db_do4_iv _((SV *dbh, imp_dbh_t *imp_dbh, char *statement, SV *params)); /* deprecated */ IV dbd_db_do6 _((SV *dbh, imp_dbh_t *imp_dbh, SV *statement, SV *params, I32 items, I32 ax)); int dbd_db_commit _((SV *dbh, imp_dbh_t *imp_dbh)); int dbd_db_rollback _((SV *dbh, imp_dbh_t *imp_dbh)); int dbd_db_disconnect _((SV *dbh, imp_dbh_t *imp_dbh)); void dbd_db_destroy _((SV *dbh, imp_dbh_t *imp_dbh)); int dbd_db_STORE_attrib _((SV *dbh, imp_dbh_t *imp_dbh, SV *keysv, SV *valuesv)); SV *dbd_db_FETCH_attrib _((SV *dbh, imp_dbh_t *imp_dbh, SV *keysv)); SV *dbd_db_last_insert_id _((SV *dbh, imp_dbh_t *imp_dbh, SV *catalog, SV *schema, SV *table, SV *field, SV *attr)); AV *dbd_db_data_sources _((SV *dbh, imp_dbh_t *imp_dbh, SV *attr)); int dbd_st_prepare _((SV *sth, imp_sth_t *imp_sth, char *statement, SV *attribs)); /* deprecated */ int dbd_st_prepare_sv _((SV *sth, imp_sth_t *imp_sth, SV *statement, SV *attribs)); int dbd_st_rows _((SV *sth, imp_sth_t *imp_sth)); /* deprecated */ IV dbd_st_rows_iv _((SV *sth, imp_sth_t *imp_sth)); int dbd_st_execute _((SV *sth, imp_sth_t *imp_sth)); /* deprecated */ IV dbd_st_execute_iv _((SV *sth, imp_sth_t *imp_sth)); SV *dbd_st_last_insert_id _((SV *sth, imp_sth_t *imp_sth, SV *catalog, SV *schema, SV *table, SV *field, SV *attr)); AV *dbd_st_fetch _((SV *sth, imp_sth_t *imp_sth)); int dbd_st_finish3 _((SV *sth, imp_sth_t *imp_sth, int from_destroy)); int dbd_st_finish _((SV *sth, imp_sth_t *imp_sth)); /* deprecated */ void dbd_st_destroy _((SV *sth, imp_sth_t *imp_sth)); int dbd_st_blob_read _((SV *sth, imp_sth_t *imp_sth, int field, long offset, long len, SV *destrv, long destoffset)); int dbd_st_STORE_attrib _((SV *sth, imp_sth_t *imp_sth, SV *keysv, SV *valuesv)); SV *dbd_st_FETCH_attrib _((SV *sth, imp_sth_t *imp_sth, SV *keysv)); SV *dbd_st_execute_for_fetch _((SV *sth, imp_sth_t *imp_sth, SV *fetch_tuple_sub, SV *tuple_status)); int dbd_bind_ph _((SV *sth, imp_sth_t *imp_sth, SV *param, SV *value, IV sql_type, SV *attribs, int is_inout, IV maxlen)); #endif /* end of dbd_xsh.h */ perl5/auto/DBI/dbi_sql.h000044400000007167152462470720010751 0ustar00/* $Id$ * * Copyright (c) 1997,1998,1999 Tim Bunce England * * See COPYRIGHT section in DBI.pm for usage and distribution rights. */ /* Some core SQL CLI standard (ODBC) declarations */ #ifndef SQL_SUCCESS /* don't clash with ODBC based drivers */ /* SQL datatype codes */ #define SQL_GUID (-11) #define SQL_WLONGVARCHAR (-10) #define SQL_WVARCHAR (-9) #define SQL_WCHAR (-8) #define SQL_BIT (-7) #define SQL_TINYINT (-6) #define SQL_BIGINT (-5) #define SQL_LONGVARBINARY (-4) #define SQL_VARBINARY (-3) #define SQL_BINARY (-2) #define SQL_LONGVARCHAR (-1) #define SQL_UNKNOWN_TYPE 0 #define SQL_ALL_TYPES 0 #define SQL_CHAR 1 #define SQL_NUMERIC 2 #define SQL_DECIMAL 3 #define SQL_INTEGER 4 #define SQL_SMALLINT 5 #define SQL_FLOAT 6 #define SQL_REAL 7 #define SQL_DOUBLE 8 #define SQL_DATETIME 9 #define SQL_DATE 9 #define SQL_INTERVAL 10 #define SQL_TIME 10 #define SQL_TIMESTAMP 11 #define SQL_VARCHAR 12 #define SQL_BOOLEAN 16 #define SQL_UDT 17 #define SQL_UDT_LOCATOR 18 #define SQL_ROW 19 #define SQL_REF 20 #define SQL_BLOB 30 #define SQL_BLOB_LOCATOR 31 #define SQL_CLOB 40 #define SQL_CLOB_LOCATOR 41 #define SQL_ARRAY 50 #define SQL_ARRAY_LOCATOR 51 #define SQL_MULTISET 55 #define SQL_MULTISET_LOCATOR 56 #define SQL_TYPE_DATE 91 #define SQL_TYPE_TIME 92 #define SQL_TYPE_TIMESTAMP 93 #define SQL_TYPE_TIME_WITH_TIMEZONE 94 #define SQL_TYPE_TIMESTAMP_WITH_TIMEZONE 95 #define SQL_INTERVAL_YEAR 101 #define SQL_INTERVAL_MONTH 102 #define SQL_INTERVAL_DAY 103 #define SQL_INTERVAL_HOUR 104 #define SQL_INTERVAL_MINUTE 105 #define SQL_INTERVAL_SECOND 106 #define SQL_INTERVAL_YEAR_TO_MONTH 107 #define SQL_INTERVAL_DAY_TO_HOUR 108 #define SQL_INTERVAL_DAY_TO_MINUTE 109 #define SQL_INTERVAL_DAY_TO_SECOND 110 #define SQL_INTERVAL_HOUR_TO_MINUTE 111 #define SQL_INTERVAL_HOUR_TO_SECOND 112 #define SQL_INTERVAL_MINUTE_TO_SECOND 113 /* Main return codes */ #define SQL_ERROR (-1) #define SQL_SUCCESS 0 #define SQL_SUCCESS_WITH_INFO 1 #define SQL_NO_DATA_FOUND 100 /* * for ODBC SQL Cursor Types */ #define SQL_CURSOR_FORWARD_ONLY 0UL #define SQL_CURSOR_KEYSET_DRIVEN 1UL #define SQL_CURSOR_DYNAMIC 2UL #define SQL_CURSOR_STATIC 3UL #define SQL_CURSOR_TYPE_DEFAULT SQL_CURSOR_FORWARD_ONLY #endif /* SQL_SUCCESS */ /* Handy macro for testing for success and success with info. */ /* BEWARE that this macro can have side effects since rc appears twice! */ /* So DONT use it as if(SQL_ok(func(...))) { ... } */ #define SQL_ok(rc) ((rc)==SQL_SUCCESS || (rc)==SQL_SUCCESS_WITH_INFO) /* end of dbi_sql.h */ perl5/auto/DBI/dbipport.h000044400000657305152462470720011164 0ustar00#if 0 <<'SKIP'; #endif /* ---------------------------------------------------------------------- dbipport.h -- Perl/Pollution/Portability Version 3.51 Automatically created by Devel::PPPort running under perl 5.028002. Do NOT edit this file directly! -- Edit PPPort_pm.PL and the includes in parts/inc/ instead. Use 'perldoc dbipport.h' to view the documentation below. ---------------------------------------------------------------------- SKIP =pod =head1 NAME dbipport.h - Perl/Pollution/Portability version 3.51 =head1 SYNOPSIS perl dbipport.h [options] [source files] Searches current directory for files if no [source files] are given --help show short help --version show version --patch=file write one patch file with changes --copy=suffix write changed copies with suffix --diff=program use diff program and options --compat-version=version provide compatibility with Perl version --cplusplus accept C++ comments --quiet don't output anything except fatal errors --nodiag don't show diagnostics --nohints don't show hints --nochanges don't suggest changes --nofilter don't filter input files --strip strip all script and doc functionality from dbipport.h --list-provided list provided API --list-unsupported list unsupported API --api-info=name show Perl API portability information =head1 COMPATIBILITY This version of F is designed to support operation with Perl installations back to 5.003, and has been tested up to 5.30. =head1 OPTIONS =head2 --help Display a brief usage summary. =head2 --version Display the version of F. =head2 --patch=I If this option is given, a single patch file will be created if any changes are suggested. This requires a working diff program to be installed on your system. =head2 --copy=I If this option is given, a copy of each file will be saved with the given suffix that contains the suggested changes. This does not require any external programs. Note that this does not automagically add a dot between the original filename and the suffix. If you want the dot, you have to include it in the option argument. If neither C<--patch> or C<--copy> are given, the default is to simply print the diffs for each file. This requires either C or a C program to be installed. =head2 --diff=I Manually set the diff program and options to use. The default is to use C, when installed, and output unified context diffs. =head2 --compat-version=I Tell F to check for compatibility with the given Perl version. The default is to check for compatibility with Perl version 5.003. You can use this option to reduce the output of F if you intend to be backward compatible only down to a certain Perl version. =head2 --cplusplus Usually, F will detect C++ style comments and replace them with C style comments for portability reasons. Using this option instructs F to leave C++ comments untouched. =head2 --quiet Be quiet. Don't print anything except fatal errors. =head2 --nodiag Don't output any diagnostic messages. Only portability alerts will be printed. =head2 --nohints Don't output any hints. Hints often contain useful portability notes. Warnings will still be displayed. =head2 --nochanges Don't suggest any changes. Only give diagnostic output and hints unless these are also deactivated. =head2 --nofilter Don't filter the list of input files. By default, files not looking like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. =head2 --strip Strip all script and documentation functionality from F. This reduces the size of F dramatically and may be useful if you want to include F in smaller modules without increasing their distribution size too much. The stripped F will have a C<--unstrip> option that allows you to undo the stripping, but only if an appropriate C module is installed. =head2 --list-provided Lists the API elements for which compatibility is provided by F. Also lists if it must be explicitly requested, if it has dependencies, and if there are hints or warnings for it. =head2 --list-unsupported Lists the API elements that are known not to be supported by F and below which version of Perl they probably won't be available or work. =head2 --api-info=I Show portability information for API elements matching I. If I is surrounded by slashes, it is interpreted as a regular expression. =head1 DESCRIPTION In order for a Perl extension (XS) module to be as portable as possible across differing versions of Perl itself, certain steps need to be taken. =over 4 =item * Including this header is the first major one. This alone will give you access to a large part of the Perl API that hasn't been available in earlier Perl releases. Use perl dbipport.h --list-provided to see which API elements are provided by dbipport.h. =item * You should avoid using deprecated parts of the API. For example, using global Perl variables without the C prefix is deprecated. Also, some API functions used to have a C prefix. Using this form is also deprecated. You can safely use the supported API, as F will provide wrappers for older Perl versions. =item * If you use one of a few functions or variables that were not present in earlier versions of Perl, and that can't be provided using a macro, you have to explicitly request support for these functions by adding one or more C<#define>s in your source code before the inclusion of F. These functions or variables will be marked C in the list shown by C<--list-provided>. Depending on whether you module has a single or multiple files that use such functions or variables, you want either C or global variants. For a C function or variable (used only in a single source file), use: #define NEED_function #define NEED_variable For a global function or variable (used in multiple source files), use: #define NEED_function_GLOBAL #define NEED_variable_GLOBAL Note that you mustn't have more than one global request for the same function or variable in your project. Function / Variable Static Request Global Request ----------------------------------------------------------------------------------------- PL_parser NEED_PL_parser NEED_PL_parser_GLOBAL PL_signals NEED_PL_signals NEED_PL_signals_GLOBAL SvRX() NEED_SvRX NEED_SvRX_GLOBAL caller_cx() NEED_caller_cx NEED_caller_cx_GLOBAL croak_xs_usage() NEED_croak_xs_usage NEED_croak_xs_usage_GLOBAL die_sv() NEED_die_sv NEED_die_sv_GLOBAL eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL grok_number() NEED_grok_number NEED_grok_number_GLOBAL grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL gv_fetchpvn_flags() NEED_gv_fetchpvn_flags NEED_gv_fetchpvn_flags_GLOBAL load_module() NEED_load_module NEED_load_module_GLOBAL mess() NEED_mess NEED_mess_GLOBAL mess_nocontext() NEED_mess_nocontext NEED_mess_nocontext_GLOBAL mess_sv() NEED_mess_sv NEED_mess_sv_GLOBAL mg_findext() NEED_mg_findext NEED_mg_findext_GLOBAL my_snprintf() NEED_my_snprintf NEED_my_snprintf_GLOBAL my_sprintf() NEED_my_sprintf NEED_my_sprintf_GLOBAL my_strlcat() NEED_my_strlcat NEED_my_strlcat_GLOBAL my_strlcpy() NEED_my_strlcpy NEED_my_strlcpy_GLOBAL my_strnlen() NEED_my_strnlen NEED_my_strnlen_GLOBAL newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL newSV_type() NEED_newSV_type NEED_newSV_type_GLOBAL newSVpvn_flags() NEED_newSVpvn_flags NEED_newSVpvn_flags_GLOBAL newSVpvn_share() NEED_newSVpvn_share NEED_newSVpvn_share_GLOBAL pv_display() NEED_pv_display NEED_pv_display_GLOBAL pv_escape() NEED_pv_escape NEED_pv_escape_GLOBAL pv_pretty() NEED_pv_pretty NEED_pv_pretty_GLOBAL sv_2pv_flags() NEED_sv_2pv_flags NEED_sv_2pv_flags_GLOBAL sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL sv_pvn_force_flags() NEED_sv_pvn_force_flags NEED_sv_pvn_force_flags_GLOBAL sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL sv_unmagicext() NEED_sv_unmagicext NEED_sv_unmagicext_GLOBAL utf8_to_uvchr_buf() NEED_utf8_to_uvchr_buf NEED_utf8_to_uvchr_buf_GLOBAL vload_module() NEED_vload_module NEED_vload_module_GLOBAL vmess() NEED_vmess NEED_vmess_GLOBAL vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL warner() NEED_warner NEED_warner_GLOBAL To avoid namespace conflicts, you can change the namespace of the explicitly exported functions / variables using the C macro. Just C<#define> the macro before including C: #define DPPP_NAMESPACE MyOwnNamespace_ #include "dbipport.h" The default namespace is C. =back The good thing is that most of the above can be checked by running F on your source code. See the next section for details. =head1 EXAMPLES To verify whether F is needed for your module, whether you should make any changes to your code, and whether any special defines should be used, F can be run as a Perl script to check your source code. Simply say: perl dbipport.h The result will usually be a list of patches suggesting changes that should at least be acceptable, if not necessarily the most efficient solution, or a fix for all possible problems. If you know that your XS module uses features only available in newer Perl releases, if you're aware that it uses C++ comments, and if you want all suggestions as a single patch file, you could use something like this: perl dbipport.h --compat-version=5.6.0 --cplusplus --patch=test.diff If you only want your code to be scanned without any suggestions for changes, use: perl dbipport.h --nochanges You can specify a different C program or options, using the C<--diff> option: perl dbipport.h --diff='diff -C 10' This would output context diffs with 10 lines of context. If you want to create patched copies of your files instead, use: perl dbipport.h --copy=.new To display portability information for the C function, use: perl dbipport.h --api-info=newSVpvn Since the argument to C<--api-info> can be a regular expression, you can use perl dbipport.h --api-info=/_nomg$/ to display portability information for all C<_nomg> functions or perl dbipport.h --api-info=/./ to display information for all known API elements. =head1 BUGS If this version of F is causing failure during the compilation of this module, please check if newer versions of either this module or C are available on CPAN before sending a bug report. If F was generated using the latest version of C and is causing failure of this module, please send a bug report to L. Please include the following information: =over 4 =item 1. The complete output from running "perl -V" =item 2. This file. =item 3. The name and version of the module you were trying to build. =item 4. A full log of the build that failed. =item 5. Any other information that you think could be relevant. =back For the latest version of this code, please get the C module from CPAN. =head1 COPYRIGHT Version 3.x, Copyright (c) 2004-2013, Marcus Holland-Moritz. Version 2.x, Copyright (C) 2001, Paul Marquess. Version 1.x, Copyright (C) 1999, Kenneth Albanowski. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO See L. =cut use strict; # Disable broken TRIE-optimization BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if "$]" >= 5.009004 && "$]" <= 5.009005 } my $VERSION = 3.51; my %opt = ( quiet => 0, diag => 1, hints => 1, changes => 1, cplusplus => 0, filter => 1, strip => 0, version => 0, ); my($ppport) = $0 =~ /([\w.]+)$/; my $LF = '(?:\r\n|[\r\n])'; # line feed my $HS = "[ \t]"; # horizontal whitespace # Never use C comments in this file! my $ccs = '/'.'*'; my $cce = '*'.'/'; my $rccs = quotemeta $ccs; my $rcce = quotemeta $cce; eval { require Getopt::Long; Getopt::Long::GetOptions(\%opt, qw( help quiet diag! filter! hints! changes! cplusplus strip version patch=s copy=s diff=s compat-version=s list-provided list-unsupported api-info=s )) or usage(); }; if ($@ and grep /^-/, @ARGV) { usage() if "@ARGV" =~ /^--?h(?:elp)?$/; die "Getopt::Long not found. Please don't use any options.\n"; } if ($opt{version}) { print "This is $0 $VERSION.\n"; exit 0; } usage() if $opt{help}; strip() if $opt{strip}; if (exists $opt{'compat-version'}) { my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) }; if ($@) { die "Invalid version number format: '$opt{'compat-version'}'\n"; } die "Only Perl 5 is supported\n" if $r != 5; die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000; $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s; } else { $opt{'compat-version'} = 5; } my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ ? ( $1 => { ($2 ? ( base => $2 ) : ()), ($3 ? ( todo => $3 ) : ()), (index($4, 'v') >= 0 ? ( varargs => 1 ) : ()), (index($4, 'p') >= 0 ? ( provided => 1 ) : ()), (index($4, 'n') >= 0 ? ( nothxarg => 1 ) : ()), } ) : die "invalid spec: $_" } qw( AvFILLp|5.004050||p AvFILL||| BOM_UTF8||| BhkDISABLE||5.024000| BhkENABLE||5.024000| BhkENTRY_set||5.024000| BhkENTRY||| BhkFLAGS||| CALL_BLOCK_HOOKS||| CLASS|||n CPERLscope|5.005000||p CX_CURPAD_SAVE||| CX_CURPAD_SV||| C_ARRAY_END|5.013002||p C_ARRAY_LENGTH|5.008001||p CopFILEAV|5.006000||p CopFILEGV_set|5.006000||p CopFILEGV|5.006000||p CopFILESV|5.006000||p CopFILE_set|5.006000||p CopFILE|5.006000||p CopSTASHPV_set|5.006000||p CopSTASHPV|5.006000||p CopSTASH_eq|5.006000||p CopSTASH_set|5.006000||p CopSTASH|5.006000||p CopyD|5.009002|5.004050|p Copy||| CvPADLIST||5.008001| CvSTASH||| CvWEAKOUTSIDE||| DECLARATION_FOR_LC_NUMERIC_MANIPULATION||5.021010|n DEFSV_set|5.010001||p DEFSV|5.004050||p DO_UTF8||5.006000| END_EXTERN_C|5.005000||p ENTER||| ERRSV|5.004050||p EXTEND||| EXTERN_C|5.005000||p F0convert|||n FREETMPS||| GIMME_V||5.004000|n GIMME|||n GROK_NUMERIC_RADIX|5.007002||p G_ARRAY||| G_DISCARD||| G_EVAL||| G_METHOD|5.006001||p G_NOARGS||| G_SCALAR||| G_VOID||5.004000| GetVars||| GvAV||| GvCV||| GvHV||| GvSV||| Gv_AMupdate||5.011000| HEf_SVKEY|5.003070||p HeHASH||5.003070| HeKEY||5.003070| HeKLEN||5.003070| HePV||5.004000| HeSVKEY_force||5.003070| HeSVKEY_set||5.004000| HeSVKEY||5.003070| HeUTF8|5.010001|5.008000|p HeVAL||5.003070| HvENAMELEN||5.015004| HvENAMEUTF8||5.015004| HvENAME||5.013007| HvNAMELEN_get|5.009003||p HvNAMELEN||5.015004| HvNAMEUTF8||5.015004| HvNAME_get|5.009003||p HvNAME||| INT2PTR|5.006000||p IN_LOCALE_COMPILETIME|5.007002||p IN_LOCALE_RUNTIME|5.007002||p IN_LOCALE|5.007002||p IN_PERL_COMPILETIME|5.008001||p IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p IS_NUMBER_INFINITY|5.007002||p IS_NUMBER_IN_UV|5.007002||p IS_NUMBER_NAN|5.007003||p IS_NUMBER_NEG|5.007002||p IS_NUMBER_NOT_INT|5.007002||p IVSIZE|5.006000||p IVTYPE|5.006000||p IVdf|5.006000||p LEAVE||| LIKELY|||p LINKLIST||5.013006| LVRET||| MARK||| MULTICALL||5.024000| MUTABLE_PTR|5.010001||p MUTABLE_SV|5.010001||p MY_CXT_CLONE|5.009002||p MY_CXT_INIT|5.007003||p MY_CXT|5.007003||p MoveD|5.009002|5.004050|p Move||| NOOP|5.005000||p NUM2PTR|5.006000||p NVTYPE|5.006000||p NVef|5.006001||p NVff|5.006001||p NVgf|5.006001||p Newxc|5.009003||p Newxz|5.009003||p Newx|5.009003||p Nullav||| Nullch||| Nullcv||| Nullhv||| Nullsv||| OP_CLASS||5.013007| OP_DESC||5.007003| OP_NAME||5.007003| OP_TYPE_IS_OR_WAS||5.019010| OP_TYPE_IS||5.019007| ORIGMARK||| OpHAS_SIBLING|5.021007||p OpLASTSIB_set|5.021011||p OpMAYBESIB_set|5.021011||p OpMORESIB_set|5.021011||p OpSIBLING|5.021007||p PAD_BASE_SV||| PAD_CLONE_VARS||| PAD_COMPNAME_FLAGS||| PAD_COMPNAME_GEN_set||| PAD_COMPNAME_GEN||| PAD_COMPNAME_OURSTASH||| PAD_COMPNAME_PV||| PAD_COMPNAME_TYPE||| PAD_RESTORE_LOCAL||| PAD_SAVE_LOCAL||| PAD_SAVE_SETNULLPAD||| PAD_SETSV||| PAD_SET_CUR_NOSAVE||| PAD_SET_CUR||| PAD_SVl||| PAD_SV||| PERLIO_FUNCS_CAST|5.009003||p PERLIO_FUNCS_DECL|5.009003||p PERL_ABS|5.008001||p PERL_ARGS_ASSERT_CROAK_XS_USAGE|||p PERL_BCDVERSION|5.024000||p PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p PERL_HASH|5.003070||p PERL_INT_MAX|5.003070||p PERL_INT_MIN|5.003070||p PERL_LONG_MAX|5.003070||p PERL_LONG_MIN|5.003070||p PERL_MAGIC_arylen|5.007002||p PERL_MAGIC_backref|5.007002||p PERL_MAGIC_bm|5.007002||p PERL_MAGIC_collxfrm|5.007002||p PERL_MAGIC_dbfile|5.007002||p PERL_MAGIC_dbline|5.007002||p PERL_MAGIC_defelem|5.007002||p PERL_MAGIC_envelem|5.007002||p PERL_MAGIC_env|5.007002||p PERL_MAGIC_ext|5.007002||p PERL_MAGIC_fm|5.007002||p PERL_MAGIC_glob|5.024000||p PERL_MAGIC_isaelem|5.007002||p PERL_MAGIC_isa|5.007002||p PERL_MAGIC_mutex|5.024000||p PERL_MAGIC_nkeys|5.007002||p PERL_MAGIC_overload_elem|5.024000||p PERL_MAGIC_overload_table|5.007002||p PERL_MAGIC_overload|5.024000||p PERL_MAGIC_pos|5.007002||p PERL_MAGIC_qr|5.007002||p PERL_MAGIC_regdata|5.007002||p PERL_MAGIC_regdatum|5.007002||p PERL_MAGIC_regex_global|5.007002||p PERL_MAGIC_shared_scalar|5.007003||p PERL_MAGIC_shared|5.007003||p PERL_MAGIC_sigelem|5.007002||p PERL_MAGIC_sig|5.007002||p PERL_MAGIC_substr|5.007002||p PERL_MAGIC_sv|5.007002||p PERL_MAGIC_taint|5.007002||p PERL_MAGIC_tiedelem|5.007002||p PERL_MAGIC_tiedscalar|5.007002||p PERL_MAGIC_tied|5.007002||p PERL_MAGIC_utf8|5.008001||p PERL_MAGIC_uvar_elem|5.007003||p PERL_MAGIC_uvar|5.007002||p PERL_MAGIC_vec|5.007002||p PERL_MAGIC_vstring|5.008001||p PERL_PV_ESCAPE_ALL|5.009004||p PERL_PV_ESCAPE_FIRSTCHAR|5.009004||p PERL_PV_ESCAPE_NOBACKSLASH|5.009004||p PERL_PV_ESCAPE_NOCLEAR|5.009004||p PERL_PV_ESCAPE_QUOTE|5.009004||p PERL_PV_ESCAPE_RE|5.009005||p PERL_PV_ESCAPE_UNI_DETECT|5.009004||p PERL_PV_ESCAPE_UNI|5.009004||p PERL_PV_PRETTY_DUMP|5.009004||p PERL_PV_PRETTY_ELLIPSES|5.010000||p PERL_PV_PRETTY_LTGT|5.009004||p PERL_PV_PRETTY_NOCLEAR|5.010000||p PERL_PV_PRETTY_QUOTE|5.009004||p PERL_PV_PRETTY_REGPROP|5.009004||p PERL_QUAD_MAX|5.003070||p PERL_QUAD_MIN|5.003070||p PERL_REVISION|5.006000||p PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p PERL_SCAN_DISALLOW_PREFIX|5.007003||p PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p PERL_SCAN_SILENT_ILLDIGIT|5.008001||p PERL_SHORT_MAX|5.003070||p PERL_SHORT_MIN|5.003070||p PERL_SIGNALS_UNSAFE_FLAG|5.008001||p PERL_SUBVERSION|5.006000||p PERL_SYS_INIT3||5.006000| PERL_SYS_INIT||| PERL_SYS_TERM||5.024000| PERL_UCHAR_MAX|5.003070||p PERL_UCHAR_MIN|5.003070||p PERL_UINT_MAX|5.003070||p PERL_UINT_MIN|5.003070||p PERL_ULONG_MAX|5.003070||p PERL_ULONG_MIN|5.003070||p PERL_UNUSED_ARG|5.009003||p PERL_UNUSED_CONTEXT|5.009004||p PERL_UNUSED_DECL|5.007002||p PERL_UNUSED_RESULT|5.021001||p PERL_UNUSED_VAR|5.007002||p PERL_UQUAD_MAX|5.003070||p PERL_UQUAD_MIN|5.003070||p PERL_USE_GCC_BRACE_GROUPS|5.009004||p PERL_USHORT_MAX|5.003070||p PERL_USHORT_MIN|5.003070||p PERL_VERSION|5.006000||p PL_DBsignal|5.005000||p PL_DBsingle|||pn PL_DBsub|||pn PL_DBtrace|||pn PL_Sv|5.005000||p PL_bufend|5.024000||p PL_bufptr|5.024000||p PL_check||5.006000| PL_compiling|5.004050||p PL_comppad_name||5.017004| PL_comppad||5.008001| PL_copline|5.024000||p PL_curcop|5.004050||p PL_curpad||5.005000| PL_curstash|5.004050||p PL_debstash|5.004050||p PL_defgv|5.004050||p PL_diehook|5.004050||p PL_dirty|5.004050||p PL_dowarn|||pn PL_errgv|5.004050||p PL_error_count|5.024000||p PL_expect|5.024000||p PL_hexdigit|5.005000||p PL_hints|5.005000||p PL_in_my_stash|5.024000||p PL_in_my|5.024000||p PL_keyword_plugin||5.011002| PL_last_in_gv|||n PL_laststatval|5.005000||p PL_lex_state|5.024000||p PL_lex_stuff|5.024000||p PL_linestr|5.024000||p PL_modglobal||5.005000|n PL_na|5.004050||pn PL_no_modify|5.006000||p PL_ofsgv|||n PL_opfreehook||5.011000|n PL_parser|5.009005||p PL_peepp||5.007003|n PL_perl_destruct_level|5.004050||p PL_perldb|5.004050||p PL_ppaddr|5.006000||p PL_rpeepp||5.013005|n PL_rsfp_filters|5.024000||p PL_rsfp|5.024000||p PL_rs|||n PL_signals|5.008001||p PL_stack_base|5.004050||p PL_stack_sp|5.004050||p PL_statcache|5.005000||p PL_stdingv|5.004050||p PL_sv_arenaroot|5.004050||p PL_sv_no|5.004050||pn PL_sv_undef|5.004050||pn PL_sv_yes|5.004050||pn PL_sv_zero|||n PL_tainted|5.004050||p PL_tainting|5.004050||p PL_tokenbuf|5.024000||p POP_MULTICALL||5.024000| POPi|||n POPl|||n POPn|||n POPpbytex||5.007001|n POPpx||5.005030|n POPp|||n POPs|||n POPul||5.006000|n POPu||5.004000|n PTR2IV|5.006000||p PTR2NV|5.006000||p PTR2UV|5.006000||p PTR2nat|5.009003||p PTR2ul|5.007001||p PTRV|5.006000||p PUSHMARK||| PUSH_MULTICALL||5.024000| PUSHi||| PUSHmortal|5.009002||p PUSHn||| PUSHp||| PUSHs||| PUSHu|5.004000||p PUTBACK||| PadARRAY||5.024000| PadMAX||5.024000| PadlistARRAY||5.024000| PadlistMAX||5.024000| PadlistNAMESARRAY||5.024000| PadlistNAMESMAX||5.024000| PadlistNAMES||5.024000| PadlistREFCNT||5.017004| PadnameIsOUR||| PadnameIsSTATE||| PadnameLEN||5.024000| PadnameOURSTASH||| PadnameOUTER||| PadnamePV||5.024000| PadnameREFCNT_dec||5.024000| PadnameREFCNT||5.024000| PadnameSV||5.024000| PadnameTYPE||| PadnameUTF8||5.021007| PadnamelistARRAY||5.024000| PadnamelistMAX||5.024000| PadnamelistREFCNT_dec||5.024000| PadnamelistREFCNT||5.024000| PerlIO_clearerr||5.007003| PerlIO_close||5.007003| PerlIO_context_layers||5.009004| PerlIO_eof||5.007003| PerlIO_error||5.007003| PerlIO_fileno||5.007003| PerlIO_fill||5.007003| PerlIO_flush||5.007003| PerlIO_get_base||5.007003| PerlIO_get_bufsiz||5.007003| PerlIO_get_cnt||5.007003| PerlIO_get_ptr||5.007003| PerlIO_read||5.007003| PerlIO_restore_errno||| PerlIO_save_errno||| PerlIO_seek||5.007003| PerlIO_set_cnt||5.007003| PerlIO_set_ptrcnt||5.007003| PerlIO_setlinebuf||5.007003| PerlIO_stderr||5.007003| PerlIO_stdin||5.007003| PerlIO_stdout||5.007003| PerlIO_tell||5.007003| PerlIO_unread||5.007003| PerlIO_write||5.007003| PerlLIO_dup2_cloexec||| PerlLIO_dup_cloexec||| PerlLIO_open3_cloexec||| PerlLIO_open_cloexec||| PerlProc_pipe_cloexec||| PerlSock_accept_cloexec||| PerlSock_socket_cloexec||| PerlSock_socketpair_cloexec||| Perl_langinfo|||n Perl_setlocale|||n PoisonFree|5.009004||p PoisonNew|5.009004||p PoisonWith|5.009004||p Poison|5.008000||p READ_XDIGIT||5.017006| REPLACEMENT_CHARACTER_UTF8||| RESTORE_LC_NUMERIC||5.024000| RETVAL|||n Renewc||| Renew||| SAVECLEARSV||| SAVECOMPPAD||| SAVEPADSV||| SAVETMPS||| SAVE_DEFSV|5.004050||p SPAGAIN||| SP||| START_EXTERN_C|5.005000||p START_MY_CXT|5.007003||p STMT_END|||p STMT_START|||p STORE_LC_NUMERIC_FORCE_TO_UNDERLYING||5.024000| STORE_LC_NUMERIC_SET_TO_NEEDED||5.024000| STR_WITH_LEN|5.009003||p ST||| SV_CONST_RETURN|5.009003||p SV_COW_DROP_PV|5.008001||p SV_COW_SHARED_HASH_KEYS|5.009005||p SV_GMAGIC|5.007002||p SV_HAS_TRAILING_NUL|5.009004||p SV_IMMEDIATE_UNREF|5.007001||p SV_MUTABLE_RETURN|5.009003||p SV_NOSTEAL|5.009002||p SV_SMAGIC|5.009003||p SV_UTF8_NO_ENCODING|5.008001||p SVfARG|5.009005||p SVf_UTF8|5.006000||p SVf|5.006000||p SVt_INVLIST||5.019002| SVt_IV||| SVt_NULL||| SVt_NV||| SVt_PVAV||| SVt_PVCV||| SVt_PVFM||| SVt_PVGV||| SVt_PVHV||| SVt_PVIO||| SVt_PVIV||| SVt_PVLV||| SVt_PVMG||| SVt_PVNV||| SVt_PV||| SVt_REGEXP||5.011000| Safefree||| Slab_Alloc||| Slab_Free||| Slab_to_ro||| Slab_to_rw||| StructCopy||| SvCUR_set||| SvCUR||| SvEND||| SvGAMAGIC||5.006001| SvGETMAGIC|5.004050||p SvGROW||| SvIOK_UV||5.006000| SvIOK_notUV||5.006000| SvIOK_off||| SvIOK_only_UV||5.006000| SvIOK_only||| SvIOK_on||| SvIOKp||| SvIOK||| SvIVX||| SvIV_nomg|5.009001||p SvIV_set||| SvIVx||| SvIV||| SvIsCOW_shared_hash||5.008003| SvIsCOW||5.008003| SvLEN_set||| SvLEN||| SvLOCK||5.007003| SvMAGIC_set|5.009003||p SvNIOK_off||| SvNIOKp||| SvNIOK||| SvNOK_off||| SvNOK_only||| SvNOK_on||| SvNOKp||| SvNOK||| SvNVX||| SvNV_nomg||5.013002| SvNV_set||| SvNVx||| SvNV||| SvOK||| SvOOK_offset||5.011000| SvOOK||| SvPOK_off||| SvPOK_only_UTF8||5.006000| SvPOK_only||| SvPOK_on||| SvPOKp||| SvPOK||| SvPVCLEAR||| SvPVX_const|5.009003||p SvPVX_mutable|5.009003||p SvPVX||| SvPV_const|5.009003||p SvPV_flags_const_nolen|5.009003||p SvPV_flags_const|5.009003||p SvPV_flags_mutable|5.009003||p SvPV_flags|5.007002||p SvPV_force_flags_mutable|5.009003||p SvPV_force_flags_nolen|5.009003||p SvPV_force_flags|5.007002||p SvPV_force_mutable|5.009003||p SvPV_force_nolen|5.009003||p SvPV_force_nomg_nolen|5.009003||p SvPV_force_nomg|5.007002||p SvPV_force|||p SvPV_mutable|5.009003||p SvPV_nolen_const|5.009003||p SvPV_nolen|5.006000||p SvPV_nomg_const_nolen|5.009003||p SvPV_nomg_const|5.009003||p SvPV_nomg_nolen|5.013007||p SvPV_nomg|5.007002||p SvPV_renew|5.009003||p SvPV_set||| SvPVbyte_force||5.009002| SvPVbyte_nolen||5.006000| SvPVbytex_force||5.006000| SvPVbytex||5.006000| SvPVbyte|5.006000||p SvPVutf8_force||5.006000| SvPVutf8_nolen||5.006000| SvPVutf8x_force||5.006000| SvPVutf8x||5.006000| SvPVutf8||5.006000| SvPVx||| SvPV||| SvREADONLY_off||| SvREADONLY_on||| SvREADONLY||| SvREFCNT_dec_NN||5.017007| SvREFCNT_dec||| SvREFCNT_inc_NN|5.009004||p SvREFCNT_inc_simple_NN|5.009004||p SvREFCNT_inc_simple_void_NN|5.009004||p SvREFCNT_inc_simple_void|5.009004||p SvREFCNT_inc_simple|5.009004||p SvREFCNT_inc_void_NN|5.009004||p SvREFCNT_inc_void|5.009004||p SvREFCNT_inc|||p SvREFCNT||| SvROK_off||| SvROK_on||| SvROK||| SvRV_set|5.009003||p SvRV||| SvRXOK|5.009005||p SvRX|5.009005||p SvSETMAGIC||| SvSHARED_HASH|5.009003||p SvSHARE||5.007003| SvSTASH_set|5.009003||p SvSTASH||| SvSetMagicSV_nosteal||5.004000| SvSetMagicSV||5.004000| SvSetSV_nosteal||5.004000| SvSetSV||| SvTAINTED_off||5.004000| SvTAINTED_on||5.004000| SvTAINTED||5.004000| SvTAINT||| SvTHINKFIRST||| SvTRUE_nomg||5.013006| SvTRUE||| SvTYPE||| SvUNLOCK||5.007003| SvUOK|5.007001|5.006000|p SvUPGRADE||| SvUTF8_off||5.006000| SvUTF8_on||5.006000| SvUTF8||5.006000| SvUVXx|5.004000||p SvUVX|5.004000||p SvUV_nomg|5.009001||p SvUV_set|5.009003||p SvUVx|5.004000||p SvUV|5.004000||p SvVOK||5.008001| SvVSTRING_mg|5.009004||p THIS|||n UNDERBAR|5.009002||p UNICODE_REPLACEMENT|||p UNLIKELY|||p UTF8SKIP||5.006000| UTF8_IS_INVARIANT||| UTF8_IS_NONCHAR||| UTF8_IS_SUPER||| UTF8_IS_SURROGATE||| UTF8_MAXBYTES|5.009002||p UTF8_SAFE_SKIP|||p UVCHR_IS_INVARIANT||| UVCHR_SKIP||5.022000| UVSIZE|5.006000||p UVTYPE|5.006000||p UVXf|5.007001||p UVof|5.006000||p UVuf|5.006000||p UVxf|5.006000||p WARN_ALL|5.006000||p WARN_AMBIGUOUS|5.006000||p WARN_ASSERTIONS|5.024000||p WARN_BAREWORD|5.006000||p WARN_CLOSED|5.006000||p WARN_CLOSURE|5.006000||p WARN_DEBUGGING|5.006000||p WARN_DEPRECATED|5.006000||p WARN_DIGIT|5.006000||p WARN_EXEC|5.006000||p WARN_EXITING|5.006000||p WARN_GLOB|5.006000||p WARN_INPLACE|5.006000||p WARN_INTERNAL|5.006000||p WARN_IO|5.006000||p WARN_LAYER|5.008000||p WARN_MALLOC|5.006000||p WARN_MISC|5.006000||p WARN_NEWLINE|5.006000||p WARN_NUMERIC|5.006000||p WARN_ONCE|5.006000||p WARN_OVERFLOW|5.006000||p WARN_PACK|5.006000||p WARN_PARENTHESIS|5.006000||p WARN_PIPE|5.006000||p WARN_PORTABLE|5.006000||p WARN_PRECEDENCE|5.006000||p WARN_PRINTF|5.006000||p WARN_PROTOTYPE|5.006000||p WARN_QW|5.006000||p WARN_RECURSION|5.006000||p WARN_REDEFINE|5.006000||p WARN_REGEXP|5.006000||p WARN_RESERVED|5.006000||p WARN_SEMICOLON|5.006000||p WARN_SEVERE|5.006000||p WARN_SIGNAL|5.006000||p WARN_SUBSTR|5.006000||p WARN_SYNTAX|5.006000||p WARN_TAINT|5.006000||p WARN_THREADS|5.008000||p WARN_UNINITIALIZED|5.006000||p WARN_UNOPENED|5.006000||p WARN_UNPACK|5.006000||p WARN_UNTIE|5.006000||p WARN_UTF8|5.006000||p WARN_VOID|5.006000||p WIDEST_UTYPE|5.015004||p XCPT_CATCH|5.009002||p XCPT_RETHROW|5.009002||p XCPT_TRY_END|5.009002||p XCPT_TRY_START|5.009002||p XPUSHi||| XPUSHmortal|5.009002||p XPUSHn||| XPUSHp||| XPUSHs||| XPUSHu|5.004000||p XSPROTO|5.010000||p XSRETURN_EMPTY||| XSRETURN_IV||| XSRETURN_NO||| XSRETURN_NV||| XSRETURN_PV||| XSRETURN_UNDEF||| XSRETURN_UV|5.008001||p XSRETURN_YES||| XSRETURN|||p XST_mIV||| XST_mNO||| XST_mNV||| XST_mPV||| XST_mUNDEF||| XST_mUV|5.008001||p XST_mYES||| XS_APIVERSION_BOOTCHECK||5.024000| XS_EXTERNAL||5.024000| XS_INTERNAL||5.024000| XS_VERSION_BOOTCHECK||5.024000| XS_VERSION||| XSprePUSH|5.006000||p XS||| XopDISABLE||5.024000| XopENABLE||5.024000| XopENTRYCUSTOM||5.024000| XopENTRY_set||5.024000| XopENTRY||5.024000| XopFLAGS||5.013007| ZeroD|5.009002||p Zero||| __ASSERT_|||p _aMY_CXT|5.007003||p _inverse_folds||| _is_grapheme||| _is_in_locale_category||| _new_invlist_C_array||| _pMY_CXT|5.007003||p _to_fold_latin1|||n _to_upper_title_latin1||| _to_utf8_case||| _variant_byte_number|||n _warn_problematic_locale|||n aMY_CXT_|5.007003||p aMY_CXT|5.007003||p aTHXR_|5.024000||p aTHXR|5.024000||p aTHX_|5.006000||p aTHX|5.006000||p abort_execution||| add_above_Latin1_folds||| add_data|||n add_multi_match||| add_utf16_textfilter||| adjust_size_and_find_bucket|||n advance_one_LB||| advance_one_SB||| advance_one_WB||| allocmy||| amagic_call||| amagic_cmp_locale||| amagic_cmp||| amagic_deref_call||5.013007| amagic_i_ncmp||| amagic_is_enabled||| amagic_ncmp||| anonymise_cv_maybe||| any_dup||| ao||| apply_attrs_my||| apply_attrs||| apply||| argvout_final||| assert_uft8_cache_coherent||| assignment_type||| atfork_lock||5.007003|n atfork_unlock||5.007003|n av_arylen_p||5.009003| av_clear||| av_delete||5.006000| av_exists||5.006000| av_extend_guts||| av_extend||| av_fetch||| av_fill||| av_iter_p||5.011000| av_len||| av_make||| av_nonelem||| av_pop||| av_push||| av_reify||| av_shift||| av_store||| av_tindex|5.017009|5.017009|p av_top_index|5.017009|5.017009|p av_undef||| av_unshift||| ax|||n backup_one_GCB||| backup_one_LB||| backup_one_SB||| backup_one_WB||| bad_type_gv||| bad_type_pv||| bind_match||| block_end||5.004000| block_gimme||5.004000| block_start||5.004000| blockhook_register||5.013003| boolSV|5.004000||p boot_core_PerlIO||| boot_core_UNIVERSAL||| boot_core_mro||| bytes_cmp_utf8||5.013007| cBOOL|5.013000||p call_argv|5.006000||p call_atexit||5.006000| call_list||5.004000| call_method|5.006000||p call_pv|5.006000||p call_sv|5.006000||p caller_cx|5.013005|5.006000|p calloc||5.007002|n cando||| cast_i32||5.006000|n cast_iv||5.006000|n cast_ulong||5.006000|n cast_uv||5.006000|n category_name|||n change_engine_size||| check_and_deprecate||| check_type_and_open||| check_uni||| checkcomma||| ckWARN2_d||| ckWARN2||| ckWARN3_d||| ckWARN3||| ckWARN4_d||| ckWARN4||| ckWARN_d||| ckWARN|5.006000||p ck_entersub_args_core||| ck_entersub_args_list||5.013006| ck_entersub_args_proto_or_list||5.013006| ck_entersub_args_proto||5.013006| ck_warner_d||5.011001|v ck_warner||5.011001|v ckwarn_common||| ckwarn_d||5.009003| ckwarn||5.009003| clear_defarray||5.023008| clear_special_blocks||| clone_params_del|||n clone_params_new|||n closest_cop||| cntrl_to_mnemonic|||n compute_EXACTish|||n construct_ahocorasick_from_trie||| cop_free||| cop_hints_2hv||5.013007| cop_hints_fetch_pvn||5.013007| cop_hints_fetch_pvs||5.013007| cop_hints_fetch_pv||5.013007| cop_hints_fetch_sv||5.013007| cophh_2hv||5.013007| cophh_copy||5.013007| cophh_delete_pvn||5.013007| cophh_delete_pvs||5.013007| cophh_delete_pv||5.013007| cophh_delete_sv||5.013007| cophh_fetch_pvn||5.013007| cophh_fetch_pvs||5.013007| cophh_fetch_pv||5.013007| cophh_fetch_sv||5.013007| cophh_free||5.013007| cophh_new_empty||5.024000| cophh_store_pvn||5.013007| cophh_store_pvs||5.013007| cophh_store_pv||5.013007| cophh_store_sv||5.013007| core_prototype||| coresub_op||| cr_textfilter||| croak_caller|||vn croak_memory_wrap|5.019003||pn croak_no_mem|||n croak_no_modify|5.013003||pn croak_nocontext|||pvn croak_popstack|||n croak_sv|5.013001||p croak_xs_usage|5.010001||pn croak|||v csighandler||5.009003|n current_re_engine||| curse||| custom_op_desc||5.007003| custom_op_get_field||| custom_op_name||5.007003| custom_op_register||5.013007| custom_op_xop||5.013007| cv_clone_into||| cv_clone||| cv_const_sv_or_av|||n cv_const_sv||5.003070|n cv_dump||| cv_forget_slab||| cv_get_call_checker_flags||| cv_get_call_checker||5.013006| cv_name||5.021005| cv_set_call_checker_flags||5.021004| cv_set_call_checker||5.013006| cv_undef_flags||| cv_undef||| cvgv_from_hek||| cvgv_set||| cvstash_set||| cx_dump||5.005000| cx_dup||| cxinc||| dAXMARK|5.009003||p dAX|5.007002||p dITEMS|5.007002||p dMARK||| dMULTICALL||5.009003| dMY_CXT_SV|5.007003||p dMY_CXT|5.007003||p dNOOP|5.006000||p dORIGMARK||| dSP||| dTHR|5.004050||p dTHXR|5.024000||p dTHXa|5.006000||p dTHXoa|5.006000||p dTHX|5.006000||p dUNDERBAR|5.009002||p dVAR|5.009003||p dXCPT|5.009002||p dXSARGS||| dXSI32||| dXSTARG|5.006000||p deb_curcv||| deb_nocontext|||vn deb_stack_all||| deb_stack_n||| debop||5.005000| debprofdump||5.005000| debprof||| debstackptrs||5.007003| debstack||5.007003| debug_start_match||| deb||5.007003|v defelem_target||| del_sv||| delimcpy_no_escape|||n delimcpy||5.004000|n despatch_signals||5.007001| destroy_matcher||| die_nocontext|||vn die_sv|5.013001||p die_unwind||| die|||v dirp_dup||| div128||| djSP||| do_aexec5||| do_aexec||| do_aspawn||| do_binmode||5.004050| do_chomp||| do_close||| do_delete_local||| do_dump_pad||| do_eof||| do_exec3||| do_exec||| do_gv_dump||5.006000| do_gvgv_dump||5.006000| do_hv_dump||5.006000| do_ipcctl||| do_ipcget||| do_join||| do_magic_dump||5.006000| do_msgrcv||| do_msgsnd||| do_ncmp||| do_oddball||| do_op_dump||5.006000| do_open9||5.006000| do_openn||5.007001| do_open||5.003070| do_pmop_dump||5.006000| do_print||| do_readline||| do_seek||| do_semop||| do_shmio||| do_smartmatch||| do_spawn_nowait||| do_spawn||| do_sprintf||| do_sv_dump||5.006000| do_sysseek||| do_tell||| do_trans_complex_utf8||| do_trans_complex||| do_trans_count_utf8||| do_trans_count||| do_trans_simple_utf8||| do_trans_simple||| do_trans||| do_vecget||| do_vecset||| do_vop||| docatch||| does_utf8_overflow|||n doeval_compile||| dofile||| dofindlabel||| doform||| doing_taint||5.008001|n dooneliner||| doopen_pm||| doparseform||| dopoptoeval||| dopoptogivenfor||| dopoptolabel||| dopoptoloop||| dopoptosub_at||| dopoptowhen||| doref||5.009003| dounwind||| dowantarray||| drand48_init_r|||n drand48_r|||n dtrace_probe_call||| dtrace_probe_load||| dtrace_probe_op||| dtrace_probe_phase||| dump_all_perl||| dump_all||5.006000| dump_c_backtrace||| dump_eval||5.006000| dump_exec_pos||| dump_form||5.006000| dump_indent||5.006000|v dump_mstats||| dump_packsubs_perl||| dump_packsubs||5.006000| dump_regex_sets_structures||| dump_sub_perl||| dump_sub||5.006000| dump_sv_child||| dump_trie_interim_list||| dump_trie_interim_table||| dump_trie||| dump_vindent||5.006000| dumpuntil||| dup_attrlist||| dup_warnings||| edit_distance|||n emulate_setlocale|||n eval_pv|5.006000||p eval_sv|5.006000||p exec_failed||| expect_number||| fbm_compile||5.005000| fbm_instr||5.005000| feature_is_enabled||| filter_add||| filter_del||| filter_gets||| filter_read||| finalize_optree||| finalize_op||| find_and_forget_pmops||| find_array_subscript||| find_beginning||| find_byclass||| find_default_stash||| find_hash_subscript||| find_in_my_stash||| find_lexical_cv||| find_next_masked|||n find_runcv_where||| find_runcv||5.008001| find_rundefsv||5.013002| find_script||| find_span_end_mask|||n find_span_end|||n first_symbol|||n fixup_errno_string||| foldEQ_latin1_s2_folded|||n foldEQ_latin1||5.013008|n foldEQ_locale||5.013002|n foldEQ_utf8||5.013002| foldEQ||5.013002|n fold_constants||| forbid_setid||| force_ident_maybe_lex||| force_ident||| force_list||| force_next||| force_strict_version||| force_version||| force_word||| forget_pmop||| form_nocontext|||vn form||5.004000|v fp_dup||| fprintf_nocontext|||vn free_c_backtrace||| free_global_struct||| free_tied_hv_pool||| free_tmps||| gen_constant_list||| get_ANYOFM_contents||| get_ANYOF_cp_list_for_ssc||| get_and_check_backslash_N_name_wrapper||| get_and_check_backslash_N_name||| get_aux_mg||| get_av|5.006000||p get_c_backtrace_dump||| get_c_backtrace||| get_context||5.006000|n get_cvn_flags||| get_cvs|5.011000||p get_cv|5.006000||p get_db_sub||| get_debug_opts||| get_hash_seed||| get_hv|5.006000||p get_mstats||| get_no_modify||| get_num||| get_op_descs||5.005000| get_op_names||5.005000| get_opargs||| get_ppaddr||5.006000| get_sv|5.006000||p get_vtbl||5.005030| getcwd_sv||5.007002| getenv_len||| glob_2number||| glob_assign_glob||| gp_dup||| gp_free||| gp_ref||| grok_atoUV|||n grok_bin|5.007003||p grok_bslash_N||| grok_hex|5.007003||p grok_infnan||5.021004| grok_number_flags||5.021002| grok_number|5.007002||p grok_numeric_radix|5.007002||p grok_oct|5.007003||p group_end||| gv_AVadd||| gv_HVadd||| gv_IOadd||| gv_SVadd||| gv_add_by_type||5.011000| gv_autoload4||5.004000| gv_autoload_pvn||5.015004| gv_autoload_pv||5.015004| gv_autoload_sv||5.015004| gv_check||| gv_const_sv||5.009003| gv_dump||5.006000| gv_efullname3||5.003070| gv_efullname4||5.006001| gv_efullname||| gv_fetchfile_flags||5.009005| gv_fetchfile||| gv_fetchmeth_autoload||5.007003| gv_fetchmeth_internal||| gv_fetchmeth_pv_autoload||5.015004| gv_fetchmeth_pvn_autoload||5.015004| gv_fetchmeth_pvn||5.015004| gv_fetchmeth_pv||5.015004| gv_fetchmeth_sv_autoload||5.015004| gv_fetchmeth_sv||5.015004| gv_fetchmethod_autoload||5.004000| gv_fetchmethod||| gv_fetchmeth||| gv_fetchpvn_flags|5.009002||p gv_fetchpvs|5.009004||p gv_fetchpv||| gv_fetchsv||| gv_fullname3||5.003070| gv_fullname4||5.006001| gv_fullname||| gv_handler||5.007001| gv_init_pvn||| gv_init_pv||5.015004| gv_init_svtype||| gv_init_sv||5.015004| gv_init||| gv_is_in_main||| gv_magicalize_isa||| gv_magicalize||| gv_name_set||5.009004| gv_override||| gv_setref||| gv_stashpvn_internal||| gv_stashpvn|5.003070||p gv_stashpvs|5.009003||p gv_stashpv||| gv_stashsvpvn_cached||| gv_stashsv||| handle_named_backref||| handle_possible_posix||| handle_regex_sets||| handle_user_defined_property||| he_dup||| hek_dup||| hfree_next_entry||| hsplit||| hv_assert||| hv_auxinit_internal|||n hv_auxinit||| hv_clear_placeholders||5.009001| hv_clear||| hv_common_key_len||5.010000| hv_common||5.010000| hv_copy_hints_hv||5.009004| hv_delayfree_ent||5.004000| hv_delete_ent||5.003070| hv_delete||| hv_eiter_p||5.009003| hv_eiter_set||5.009003| hv_ename_add||| hv_ename_delete||| hv_exists_ent||5.003070| hv_exists||| hv_fetch_ent||5.003070| hv_fetchs|5.009003||p hv_fetch||| hv_fill||5.013002| hv_free_ent_ret||| hv_free_entries||| hv_free_ent||5.004000| hv_iterinit||| hv_iterkeysv||5.003070| hv_iterkey||| hv_iternextsv||| hv_iternext||| hv_iterval||| hv_ksplit||5.003070| hv_magic_check|||n hv_magic||| hv_name_set||5.009003| hv_notallowed||| hv_placeholders_get||5.009003| hv_placeholders_p||| hv_placeholders_set||5.009003| hv_pushkv||| hv_rand_set||5.018000| hv_riter_p||5.009003| hv_riter_set||5.009003| hv_scalar||5.009001| hv_store_ent||5.003070| hv_stores|5.009004||p hv_store||| hv_undef_flags||| hv_undef||| ibcmp_locale||5.004000| ibcmp_utf8||5.007003| ibcmp||| incline||| incpush_if_exists||| incpush_use_sep||| incpush||| ingroup||| init_argv_symbols||| init_constants||| init_dbargs||| init_debugger||| init_global_struct||| init_ids||| init_interp||| init_main_stash||| init_named_cv||| init_perllib||| init_postdump_symbols||| init_predump_symbols||| init_stacks||5.005000| init_tm||5.007002| init_uniprops||| inplace_aassign||| instr|||n intro_my||5.004000| intuit_method||| intuit_more||| invert||| invoke_exception_hook||| io_close||| isALNUMC_A|||p isALNUMC|5.006000||p isALNUM_A|||p isALNUM|||p isALPHANUMERIC_A|||p isALPHANUMERIC|5.017008|5.017008|p isALPHA_A|||p isALPHA|||p isASCII_A|||p isASCII|5.006000||p isBLANK_A|||p isBLANK|5.006001||p isC9_STRICT_UTF8_CHAR|||n isCNTRL_A|||p isCNTRL|5.006000||p isDIGIT_A|||p isDIGIT|||p isFF_OVERLONG|||n isFOO_utf8_lc||| isGCB||| isGRAPH_A|||p isGRAPH|5.006000||p isIDCONT_A|||p isIDCONT|5.017008|5.017008|p isIDFIRST_A|||p isIDFIRST|||p isLB||| isLOWER_A|||p isLOWER|||p isOCTAL_A|||p isOCTAL|5.013005|5.013005|p isPRINT_A|||p isPRINT|5.004000||p isPSXSPC_A|||p isPSXSPC|5.006001||p isPUNCT_A|||p isPUNCT|5.006000||p isSB||| isSCRIPT_RUN||| isSPACE_A|||p isSPACE|||p isSTRICT_UTF8_CHAR|||n isUPPER_A|||p isUPPER|||p isUTF8_CHAR_flags||| isUTF8_CHAR||5.021001|n isWB||| isWORDCHAR_A|||p isWORDCHAR|5.013006|5.013006|p isXDIGIT_A|||p isXDIGIT|5.006000||p is_an_int||| is_ascii_string||5.011000|n is_c9strict_utf8_string_loclen|||n is_c9strict_utf8_string_loc|||n is_c9strict_utf8_string|||n is_handle_constructor|||n is_invariant_string||5.021007|n is_lvalue_sub||5.007001| is_safe_syscall||5.019004| is_ssc_worth_it|||n is_strict_utf8_string_loclen|||n is_strict_utf8_string_loc|||n is_strict_utf8_string|||n is_utf8_char_buf||5.015008|n is_utf8_common_with_len||| is_utf8_common||| is_utf8_cp_above_31_bits|||n is_utf8_fixed_width_buf_flags|||n is_utf8_fixed_width_buf_loc_flags|||n is_utf8_fixed_width_buf_loclen_flags|||n is_utf8_invariant_string_loc|||n is_utf8_invariant_string|||n is_utf8_non_invariant_string|||n is_utf8_overlong_given_start_byte_ok|||n is_utf8_string_flags|||n is_utf8_string_loc_flags|||n is_utf8_string_loclen_flags|||n is_utf8_string_loclen||5.009003|n is_utf8_string_loc||5.008001|n is_utf8_string||5.006001|n is_utf8_valid_partial_char_flags|||n is_utf8_valid_partial_char|||n isa_lookup||| isinfnansv||| isinfnan||5.021004|n items|||n ix|||n jmaybe||| join_exact||| keyword_plugin_standard||| keyword||| leave_scope||| lex_stuff_pvs||5.013005| listkids||| list||| load_module_nocontext|||vn load_module|5.006000||pv localize||| looks_like_bool||| looks_like_number||| lop||| mPUSHi|5.009002||p mPUSHn|5.009002||p mPUSHp|5.009002||p mPUSHs|5.010001||p mPUSHu|5.009002||p mXPUSHi|5.009002||p mXPUSHn|5.009002||p mXPUSHp|5.009002||p mXPUSHs|5.010001||p mXPUSHu|5.009002||p magic_clear_all_env||| magic_cleararylen_p||| magic_clearenv||| magic_clearhints||| magic_clearhint||| magic_clearisa||| magic_clearpack||| magic_clearsig||| magic_copycallchecker||| magic_dump||5.006000| magic_existspack||| magic_freearylen_p||| magic_freeovrld||| magic_getarylen||| magic_getdebugvar||| magic_getdefelem||| magic_getnkeys||| magic_getpack||| magic_getpos||| magic_getsig||| magic_getsubstr||| magic_gettaint||| magic_getuvar||| magic_getvec||| magic_get||| magic_killbackrefs||| magic_methcall1||| magic_methcall|||v magic_methpack||| magic_nextpack||| magic_regdata_cnt||| magic_regdatum_get||| magic_regdatum_set||| magic_scalarpack||| magic_set_all_env||| magic_setarylen||| magic_setcollxfrm||| magic_setdbline||| magic_setdebugvar||| magic_setdefelem||| magic_setenv||| magic_sethint||| magic_setisa||| magic_setlvref||| magic_setmglob||| magic_setnkeys||| magic_setnonelem||| magic_setpack||| magic_setpos||| magic_setregexp||| magic_setsig||| magic_setsubstr||| magic_settaint||| magic_setutf8||| magic_setuvar||| magic_setvec||| magic_set||| magic_sizepack||| magic_wipepack||| make_matcher||| make_trie||| malloc_good_size|||n malloced_size|||n malloc||5.007002|n markstack_grow||5.021001| matcher_matches_sv||| maybe_multimagic_gv||| mayberelocate||| measure_struct||| memEQs|5.009005||p memEQ|5.004000||p memNEs|5.009005||p memNE|5.004000||p mem_collxfrm||| mem_log_alloc|||n mem_log_common|||n mem_log_free|||n mem_log_realloc|||n mess_alloc||| mess_nocontext|||pvn mess_sv|5.013001||p mess|5.006000||pv mfree||5.007002|n mg_clear||| mg_copy||| mg_dup||| mg_find_mglob||| mg_findext|5.013008||pn mg_find|||n mg_free_type||5.013006| mg_freeext||| mg_free||| mg_get||| mg_localize||| mg_magical|||n mg_set||| mg_size||5.005000| mini_mktime||5.007002|n minus_v||| missingterm||| mode_from_discipline||| modkids||| more_bodies||| more_sv||| moreswitches||| move_proto_attr||| mro_clean_isarev||| mro_gather_and_rename||| mro_get_from_name||5.010001| mro_get_linear_isa_dfs||| mro_get_linear_isa||5.009005| mro_get_private_data||5.010001| mro_isa_changed_in||| mro_meta_dup||| mro_meta_init||| mro_method_changed_in||5.009005| mro_package_moved||| mro_register||5.010001| mro_set_mro||5.010001| mro_set_private_data||5.010001| mul128||| multiconcat_stringify||| multideref_stringify||| my_atof2||5.007002| my_atof3||| my_atof||5.006000| my_attrs||| my_bytes_to_utf8|||n my_chsize||| my_clearenv||| my_cxt_index||| my_cxt_init||| my_dirfd||5.009005|n my_exit_jump||| my_exit||| my_failure_exit||5.004000| my_fflush_all||5.006000| my_fork||5.007003|n my_kid||| my_lstat_flags||| my_lstat||5.024000| my_memrchr|||n my_mkostemp|||n my_mkstemp_cloexec|||n my_mkstemp|||n my_nl_langinfo|||n my_pclose||5.003070| my_popen_list||5.007001| my_popen||5.003070| my_setenv||| my_snprintf|5.009004||pvn my_socketpair||5.007003|n my_sprintf|5.009003||pvn my_stat_flags||| my_stat||5.024000| my_strerror||| my_strftime||5.007002| my_strlcat|5.009004||pn my_strlcpy|5.009004||pn my_strnlen|||pn my_strtod|||n my_unexec||| my_vsnprintf||5.009004|n need_utf8|||n newANONATTRSUB||5.006000| newANONHASH||| newANONLIST||| newANONSUB||| newASSIGNOP||| newATTRSUB_x||| newATTRSUB||5.006000| newAVREF||| newAV||| newBINOP||| newCONDOP||| newCONSTSUB_flags||5.015006| newCONSTSUB|5.004050||p newCVREF||| newDEFSVOP||5.021006| newFORM||| newFOROP||5.013007| newGIVENOP||5.009003| newGIVWHENOP||| newGVOP||| newGVREF||| newGVgen_flags||5.015004| newGVgen||| newHVREF||| newHVhv||5.005000| newHV||| newIO||| newLISTOP||| newLOGOP||| newLOOPEX||| newLOOPOP||| newMETHOP_internal||| newMETHOP_named||5.021005| newMETHOP||5.021005| newMYSUB||5.017004| newNULLLIST||| newOP||| newPADOP||| newPMOP||| newPROG||| newPVOP||| newRANGE||| newRV_inc|5.004000||p newRV_noinc|5.004000||p newRV||| newSLICEOP||| newSTATEOP||| newSTUB||| newSUB||| newSVOP||| newSVREF||| newSV_type|5.009005||p newSVavdefelem||| newSVhek||5.009003| newSViv||| newSVnv||| newSVpadname||5.017004| newSVpv_share||5.013006| newSVpvf_nocontext|||vn newSVpvf||5.004000|v newSVpvn_flags|5.010001||p newSVpvn_share|5.007001||p newSVpvn_utf8|5.010001||p newSVpvn|5.004050||p newSVpvs_flags|5.010001||p newSVpvs_share|5.009003||p newSVpvs|5.009003||p newSVpv||| newSVrv||| newSVsv_flags||| newSVsv_nomg||| newSVsv||| newSVuv|5.006000||p newSV||| newUNOP_AUX||5.021007| newUNOP||| newWHENOP||5.009003| newWHILEOP||5.013007| newXS_deffile||| newXS_len_flags||| newXSproto||5.006000| newXS||5.006000| new_collate||| new_constant||| new_ctype||| new_he||| new_logop||| new_msg_hv||| new_numeric||| new_regcurly|||n new_stackinfo||5.005000| new_version||5.009000| next_symbol||| nextargv||| nextchar||| ninstr|||n no_bareword_allowed||| no_fh_allowed||| no_op||| noperl_die|||vn not_a_number||| not_incrementable||| nothreadhook||5.008000| notify_parser_that_changed_to_utf8||| nuke_stacks||| num_overflow|||n oopsAV||| oopsHV||| op_append_elem||5.013006| op_append_list||5.013006| op_class||| op_clear||| op_contextualize||5.013006| op_convert_list||5.021006| op_dump||5.006000| op_free||| op_integerize||| op_linklist||5.013006| op_lvalue_flags||| op_null||5.007002| op_parent|||n op_prepend_elem||5.013006| op_refcnt_lock||5.009002| op_refcnt_unlock||5.009002| op_relocate_sv||| op_sibling_splice||5.021002|n op_std_init||| open_script||| openn_cleanup||| openn_setup||| opmethod_stash||| opslab_force_free||| opslab_free_nopad||| opslab_free||| optimize_optree||| optimize_op||| output_posix_warnings||| pMY_CXT_|5.007003||p pMY_CXT|5.007003||p pTHX_|5.006000||p pTHX|5.006000||p packWARN|5.007003||p pack_cat||5.007003| pack_rec||| package_version||| package||| packlist||5.008001| pad_add_anon||5.008001| pad_add_name_pvn||5.015001| pad_add_name_pvs||5.015001| pad_add_name_pv||5.015001| pad_add_name_sv||5.015001| pad_add_weakref||| pad_alloc_name||| pad_block_start||| pad_check_dup||| pad_compname_type||5.009003| pad_findlex||| pad_findmy_pvn||5.015001| pad_findmy_pvs||5.015001| pad_findmy_pv||5.015001| pad_findmy_sv||5.015001| pad_fixup_inner_anons||| pad_free||| pad_leavemy||| pad_new||5.008001| pad_push||| pad_reset||| pad_setsv||| pad_sv||| pad_swipe||| padlist_dup||| padlist_store||| padname_dup||| padname_free||| padnamelist_dup||| padnamelist_free||| parse_body||| parse_gv_stash_name||| parse_ident||| parse_lparen_question_flags||| parse_unicode_opts||| parse_uniprop_string||| parser_dup||| parser_free_nexttoke_ops||| parser_free||| path_is_searchable|||n peep||| pending_ident||| perl_alloc_using|||n perl_alloc|||n perl_clone_using|||n perl_clone|||n perl_construct|||n perl_destruct||5.007003|n perl_free|||n perl_parse||5.006000|n perl_run|||n pidgone||| pm_description||| pmop_dump||5.006000| pmruntime||| pmtrans||| pop_scope||| populate_ANYOF_from_invlist||| populate_isa|||v pregcomp||5.009005| pregexec||| pregfree2||5.011000| pregfree||| prescan_version||5.011004| print_bytes_for_locale||| print_collxfrm_input_and_return||| printbuf||| printf_nocontext|||vn process_special_blocks||| ptr_hash|||n ptr_table_fetch||5.009005| ptr_table_find|||n ptr_table_free||5.009005| ptr_table_new||5.009005| ptr_table_split||5.009005| ptr_table_store||5.009005| push_scope||| put_charclass_bitmap_innards_common||| put_charclass_bitmap_innards_invlist||| put_charclass_bitmap_innards||| put_code_point||| put_range||| pv_display|5.006000||p pv_escape|5.009004||p pv_pretty|5.009004||p pv_uni_display||5.007003| qerror||| quadmath_format_needed|||n quadmath_format_single|||n re_compile||5.009005| re_croak2||| re_dup_guts||| re_exec_indentf|||v re_indentf|||v re_intuit_start||5.019001| re_intuit_string||5.006000| re_op_compile||| re_printf|||v realloc||5.007002|n reentrant_free||5.024000| reentrant_init||5.024000| reentrant_retry||5.024000|vn reentrant_size||5.024000| ref_array_or_hash||| refcounted_he_chain_2hv||| refcounted_he_fetch_pvn||| refcounted_he_fetch_pvs||| refcounted_he_fetch_pv||| refcounted_he_fetch_sv||| refcounted_he_free||| refcounted_he_inc||| refcounted_he_new_pvn||| refcounted_he_new_pvs||| refcounted_he_new_pv||| refcounted_he_new_sv||| refcounted_he_value||| refkids||| refto||| ref||5.024000| reg2Lanode||| reg_check_named_buff_matched|||n reg_named_buff_all||5.009005| reg_named_buff_exists||5.009005| reg_named_buff_fetch||5.009005| reg_named_buff_firstkey||5.009005| reg_named_buff_iter||| reg_named_buff_nextkey||5.009005| reg_named_buff_scalar||5.009005| reg_named_buff||| reg_node||| reg_numbered_buff_fetch||| reg_numbered_buff_length||| reg_numbered_buff_store||| reg_qr_package||| reg_scan_name||| reg_skipcomment|||n reg_temp_copy||| reganode||| regatom||| regbranch||| regclass||| regcp_restore||| regcppop||| regcppush||| regcurly|||n regdump_extflags||| regdump_intflags||| regdump||5.005000| regdupe_internal||| regex_set_precedence|||n regexec_flags||5.005000| regfree_internal||5.009005| reghop3|||n reghop4|||n reghopmaybe3|||n reginclass||| reginitcolors||5.006000| reginsert||| regmatch||| regnext||5.005000| regnode_guts||| regpiece||| regprop||| regrepeat||| regtail_study||| regtail||| regtry||| reg||| repeatcpy|||n report_evil_fh||| report_redefined_cv||| report_uninit||| report_wrongway_fh||| require_pv||5.006000| require_tie_mod||| restore_magic||| restore_switched_locale||| rninstr|||n rpeep||| rsignal_restore||| rsignal_save||| rsignal_state||5.004000| rsignal||5.004000| run_body||| run_user_filter||| runops_debug||5.005000| runops_standard||5.005000| rv2cv_op_cv||5.013006| rvpv_dup||| rxres_free||| rxres_restore||| rxres_save||| safesyscalloc||5.006000|n safesysfree||5.006000|n safesysmalloc||5.006000|n safesysrealloc||5.006000|n same_dirent||| save_I16||5.004000| save_I32||| save_I8||5.006000| save_adelete||5.011000| save_aelem_flags||5.011000| save_aelem||5.004050| save_alloc||5.006000| save_aptr||| save_ary||| save_bool||5.008001| save_clearsv||| save_delete||| save_destructor_x||5.006000| save_destructor||5.006000| save_freeop||| save_freepv||| save_freesv||| save_generic_pvref||5.006001| save_generic_svref||5.005030| save_gp||5.004000| save_hash||| save_hdelete||5.011000| save_hek_flags|||n save_helem_flags||5.011000| save_helem||5.004050| save_hints||5.010001| save_hptr||| save_int||| save_item||| save_iv||5.005000| save_lines||| save_list||| save_long||| save_magic_flags||| save_mortalizesv||5.007001| save_nogv||| save_op||5.005000| save_padsv_and_mortalize||5.010001| save_pptr||| save_pushi32ptr||5.010001| save_pushptri32ptr||| save_pushptrptr||5.010001| save_pushptr||5.010001| save_re_context||5.006000| save_scalar_at||| save_scalar||| save_set_svflags||5.009000| save_shared_pvref||5.007003| save_sptr||| save_strlen||| save_svref||| save_to_buffer|||n save_vptr||5.006000| savepvn||| savepvs||5.009003| savepv||| savesharedpvn||5.009005| savesharedpvs||5.013006| savesharedpv||5.007003| savesharedsvpv||5.013006| savestack_grow_cnt||5.008001| savestack_grow||| savesvpv||5.009002| sawparens||| scalar_mod_type|||n scalarboolean||| scalarkids||| scalarseq||| scalarvoid||| scalar||| scan_bin||5.006000| scan_commit||| scan_const||| scan_formline||| scan_heredoc||| scan_hex||| scan_ident||| scan_inputsymbol||| scan_num||5.007001| scan_oct||| scan_pat||| scan_subst||| scan_trans||| scan_version||5.009001| scan_vstring||5.009005| search_const||| seed||5.008001| sequence_num||| set_ANYOF_arg||| set_caret_X||| set_context||5.006000|n set_numeric_radix||5.006000| set_numeric_standard||5.006000| set_numeric_underlying||| set_padlist|||n set_regex_pv||| setdefout||| setfd_cloexec_for_nonsysfd||| setfd_cloexec_or_inhexec_by_sysfdness||| setfd_cloexec|||n setfd_inhexec_for_sysfd||| setfd_inhexec|||n setlocale_debug_string|||n share_hek_flags||| share_hek||5.004000| should_warn_nl|||n si_dup||| sighandler|||n simplify_sort||| skip_to_be_ignored_text||| softref2xv||| sortcv_stacked||| sortcv_xsub||| sortcv||| sortsv_flags||5.009003| sortsv||5.007003| space_join_names_mortal||| ss_dup||| ssc_add_range||| ssc_and||| ssc_anything||| ssc_clear_locale|||n ssc_cp_and||| ssc_finalize||| ssc_init||| ssc_intersection||| ssc_is_anything|||n ssc_is_cp_posixl_init|||n ssc_or||| ssc_union||| stack_grow||| start_subparse||5.004000| stdize_locale||| strEQ||| strGE||| strGT||| strLE||| strLT||| strNE||| str_to_version||5.006000| strip_return||| strnEQ||| strnNE||| study_chunk||| sub_crush_depth||| sublex_done||| sublex_push||| sublex_start||| sv_2bool_flags||5.013006| sv_2bool||| sv_2cv||| sv_2io||| sv_2iuv_common||| sv_2iuv_non_preserve||| sv_2iv_flags||5.009001| sv_2iv||| sv_2mortal||| sv_2nv_flags||5.013001| sv_2pv_flags|5.007002||p sv_2pv_nolen|5.006000||p sv_2pvbyte_nolen|5.006000||p sv_2pvbyte|5.006000||p sv_2pvutf8_nolen||5.006000| sv_2pvutf8||5.006000| sv_2pv||| sv_2uv_flags||5.009001| sv_2uv|5.004000||p sv_add_arena||| sv_add_backref||| sv_backoff|||n sv_bless||| sv_buf_to_ro||| sv_buf_to_rw||| sv_cat_decode||5.008001| sv_catpv_flags||5.013006| sv_catpv_mg|5.004050||p sv_catpv_nomg||5.013006| sv_catpvf_mg_nocontext|||pvn sv_catpvf_mg|5.006000|5.004000|pv sv_catpvf_nocontext|||vn sv_catpvf||5.004000|v sv_catpvn_flags||5.007002| sv_catpvn_mg|5.004050||p sv_catpvn_nomg|5.007002||p sv_catpvn||| sv_catpvs_flags||5.013006| sv_catpvs_mg||5.013006| sv_catpvs_nomg||5.013006| sv_catpvs|5.009003||p sv_catpv||| sv_catsv_flags||5.007002| sv_catsv_mg|5.004050||p sv_catsv_nomg|5.007002||p sv_catsv||| sv_chop||| sv_clean_all||| sv_clean_objs||| sv_clear||| sv_cmp_flags||5.013006| sv_cmp_locale_flags||5.013006| sv_cmp_locale||5.004000| sv_cmp||| sv_collxfrm_flags||5.013006| sv_collxfrm||| sv_copypv_flags||5.017002| sv_copypv_nomg||5.017002| sv_copypv||| sv_dec_nomg||5.013002| sv_dec||| sv_del_backref||| sv_derived_from_pvn||5.015004| sv_derived_from_pv||5.015004| sv_derived_from_sv||5.015004| sv_derived_from||5.004000| sv_destroyable||5.010000| sv_display||| sv_does_pvn||5.015004| sv_does_pv||5.015004| sv_does_sv||5.015004| sv_does||5.009004| sv_dump||| sv_dup_common||| sv_dup_inc_multiple||| sv_dup_inc||| sv_dup||| sv_eq_flags||5.013006| sv_eq||| sv_exp_grow||| sv_force_normal_flags||5.007001| sv_force_normal||5.006000| sv_free_arenas||| sv_free||| sv_gets||5.003070| sv_grow||| sv_i_ncmp||| sv_inc_nomg||5.013002| sv_inc||| sv_insert_flags||5.010001| sv_insert||| sv_isa||| sv_isobject||| sv_iv||5.005000| sv_len_utf8_nomg||| sv_len_utf8||5.006000| sv_len||| sv_magic_portable|5.024000|5.004000|p sv_magicext_mglob||| sv_magicext||5.007003| sv_magic||| sv_mortalcopy_flags||| sv_mortalcopy||| sv_ncmp||| sv_newmortal||| sv_newref||| sv_nolocking||5.007003| sv_nosharing||5.007003| sv_nounlocking||| sv_nv||5.005000| sv_only_taint_gmagic|||n sv_or_pv_pos_u2b||| sv_peek||5.005000| sv_pos_b2u_flags||5.019003| sv_pos_b2u_midway||| sv_pos_b2u||5.006000| sv_pos_u2b_cached||| sv_pos_u2b_flags||5.011005| sv_pos_u2b_forwards|||n sv_pos_u2b_midway|||n sv_pos_u2b||5.006000| sv_pvbyten_force||5.006000| sv_pvbyten||5.006000| sv_pvbyte||5.006000| sv_pvn_force_flags|5.007002||p sv_pvn_force||| sv_pvn_nomg|5.007003|5.005000|p sv_pvn||5.005000| sv_pvutf8n_force||5.006000| sv_pvutf8n||5.006000| sv_pvutf8||5.006000| sv_pv||5.006000| sv_recode_to_utf8||5.007003| sv_reftype||| sv_ref||5.015004| sv_replace||| sv_report_used||| sv_resetpvn||| sv_reset||| sv_rvunweaken||| sv_rvweaken||5.006000| sv_set_undef||| sv_sethek||| sv_setiv_mg|5.004050||p sv_setiv||| sv_setnv_mg|5.006000||p sv_setnv||| sv_setpv_bufsize||| sv_setpv_mg|5.004050||p sv_setpvf_mg_nocontext|||pvn sv_setpvf_mg|5.006000|5.004000|pv sv_setpvf_nocontext|||vn sv_setpvf||5.004000|v sv_setpviv_mg||5.008001| sv_setpviv||5.008001| sv_setpvn_mg|5.004050||p sv_setpvn||| sv_setpvs_mg||5.013006| sv_setpvs|5.009004||p sv_setpv||| sv_setref_iv||| sv_setref_nv||| sv_setref_pvn||| sv_setref_pvs||5.024000| sv_setref_pv||| sv_setref_uv||5.007001| sv_setsv_flags||5.007002| sv_setsv_mg|5.004050||p sv_setsv_nomg|5.007002||p sv_setsv||| sv_setuv_mg|5.004050||p sv_setuv|5.004000||p sv_string_from_errnum||| sv_tainted||5.004000| sv_taint||5.004000| sv_true||5.005000| sv_unglob||| sv_uni_display||5.007003| sv_unmagicext|5.013008||p sv_unmagic||| sv_unref_flags||5.007001| sv_unref||| sv_untaint||5.004000| sv_upgrade||| sv_usepvn_flags||5.009004| sv_usepvn_mg|5.004050||p sv_usepvn||| sv_utf8_decode||| sv_utf8_downgrade||| sv_utf8_encode||5.006000| sv_utf8_upgrade_flags_grow||5.011000| sv_utf8_upgrade_flags||5.007002| sv_utf8_upgrade_nomg||5.007002| sv_utf8_upgrade||5.007001| sv_uv|5.005000||p sv_vcatpvf_mg|5.006000|5.004000|p sv_vcatpvfn_flags||5.017002| sv_vcatpvfn||5.004000| sv_vcatpvf|5.006000|5.004000|p sv_vsetpvf_mg|5.006000|5.004000|p sv_vsetpvfn||5.004000| sv_vsetpvf|5.006000|5.004000|p svtype||| swallow_bom||| swatch_get||| switch_category_locale_to_template||| switch_to_global_locale|||n sync_locale||5.021004|n sys_init3||5.010000|n sys_init||5.010000|n sys_intern_clear||| sys_intern_dup||| sys_intern_init||| sys_term||5.010000|n taint_env||| taint_proper||| tied_method|||v tmps_grow_p||| toFOLD_utf8_safe||| toFOLD_utf8||5.019001| toFOLD_uvchr||5.023009| toFOLD||5.019001| toLOWER_L1||5.019001| toLOWER_LC||5.004000| toLOWER_utf8_safe||| toLOWER_utf8||5.015007| toLOWER_uvchr||5.023009| toLOWER||| toTITLE_utf8_safe||| toTITLE_utf8||5.015007| toTITLE_uvchr||5.023009| toTITLE||5.019001| toUPPER_utf8_safe||| toUPPER_utf8||5.015007| toUPPER_uvchr||5.023009| toUPPER||| to_byte_substr||| to_lower_latin1|||n to_utf8_substr||| tokenize_use||| tokeq||| tokereport||| too_few_arguments_pv||| too_many_arguments_pv||| translate_substr_offsets|||n traverse_op_tree||| try_amagic_bin||| try_amagic_un||| turkic_fc||| turkic_lc||| turkic_uc||| uiv_2buf|||n unlnk||| unpack_rec||| unpack_str||5.007003| unpackstring||5.008001| unreferenced_to_tmp_stack||| unshare_hek_or_pvn||| unshare_hek||| unsharepvn||5.003070| unwind_handler_stack||| update_debugger_info||| upg_version||5.009005| usage||| utf16_textfilter||| utf16_to_utf8_reversed||5.006001| utf16_to_utf8||5.006001| utf8_distance||5.006000| utf8_hop_back|||n utf8_hop_forward|||n utf8_hop_safe|||n utf8_hop||5.006000|n utf8_length||5.007001| utf8_mg_len_cache_update||| utf8_mg_pos_cache_update||| utf8_to_uvchr_buf|5.015009|5.015009|p utf8_to_uvchr|||p utf8n_to_uvchr_error|||n utf8n_to_uvchr||5.007001|n utf8n_to_uvuni||5.007001| utilize||| uvchr_to_utf8_flags||5.007003| uvchr_to_utf8||5.007001| uvoffuni_to_utf8_flags||5.019004| uvuni_to_utf8_flags||5.007003| uvuni_to_utf8||5.007001| valid_utf8_to_uvchr|||n validate_suid||| variant_under_utf8_count|||n varname||| vcmp||5.009000| vcroak||5.006000| vdeb||5.007003| vform||5.006000| visit||| vivify_defelem||| vivify_ref||| vload_module|5.006000||p vmess|5.006000|5.006000|p vnewSVpvf|5.006000|5.004000|p vnormal||5.009002| vnumify||5.009000| vstringify||5.009000| vverify||5.009003| vwarner||5.006000| vwarn||5.006000| wait4pid||| warn_nocontext|||pvn warn_on_first_deprecated_use||| warn_sv|5.013001||p warner_nocontext|||vn warner|5.006000|5.004000|pv warn|||v was_lvalue_sub||| watch||| whichsig_pvn||5.015004| whichsig_pv||5.015004| whichsig_sv||5.015004| whichsig||| win32_croak_not_implemented|||n win32_setlocale||| with_queued_errors||| wrap_op_checker||5.015008| write_to_stderr||| xs_boot_epilog||| xs_handshake|||vn xs_version_bootcheck||| yyerror_pvn||| yyerror_pv||| yyerror||| yylex||| yyparse||| yyquit||| yyunlex||| yywarn||| ); if (exists $opt{'list-unsupported'}) { my $f; for $f (sort { lc $a cmp lc $b } keys %API) { next unless $API{$f}{todo}; print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n"; } exit 0; } # Scan for possible replacement candidates my(%replace, %need, %hints, %warnings, %depends); my $replace = 0; my($hint, $define, $function); sub find_api { my $code = shift; $code =~ s{ / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*) | "[^"\\]*(?:\\.[^"\\]*)*" | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx; grep { exists $API{$_} } $code =~ /(\w+)/mg; } while () { if ($hint) { my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings; if (m{^\s*\*\s(.*?)\s*$}) { for (@{$hint->[1]}) { $h->{$_} ||= ''; # suppress warning with older perls $h->{$_} .= "$1\n"; } } else { undef $hint } } $hint = [$1, [split /,?\s+/, $2]] if m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$}; if ($define) { if ($define->[1] =~ /\\$/) { $define->[1] .= $_; } else { if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) { my @n = find_api($define->[1]); push @{$depends{$define->[0]}}, @n if @n } undef $define; } } $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)}; if ($function) { if (/^}/) { if (exists $API{$function->[0]}) { my @n = find_api($function->[1]); push @{$depends{$function->[0]}}, @n if @n } undef $function; } else { $function->[1] .= $_; } } $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)}; $replace = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)}; $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce}; $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$}; if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) { my @deps = map { s/\s+//g; $_ } split /,/, $3; my $d; for $d (map { s/\s+//g; $_ } split /,/, $1) { push @{$depends{$d}}, @deps; } } $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; } for (values %depends) { my %s; $_ = [sort grep !$s{$_}++, @$_]; } if (exists $opt{'api-info'}) { my $f; my $count = 0; my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$"; for $f (sort { lc $a cmp lc $b } keys %API) { next unless $f =~ /$match/; print "\n=== $f ===\n\n"; my $info = 0; if ($API{$f}{base} || $API{$f}{todo}) { my $base = format_version($API{$f}{base} || $API{$f}{todo}); print "Supported at least starting from perl-$base.\n"; $info++; } if ($API{$f}{provided}) { my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003"; print "Support by $ppport provided back to perl-$todo.\n"; print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f}; print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; print "\n$hints{$f}" if exists $hints{$f}; print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f}; $info++; } print "No portability information available.\n" unless $info; $count++; } $count or print "Found no API matching '$opt{'api-info'}'."; print "\n"; exit 0; } if (exists $opt{'list-provided'}) { my $f; for $f (sort { lc $a cmp lc $b } keys %API) { next unless $API{$f}{provided}; my @flags; push @flags, 'explicit' if exists $need{$f}; push @flags, 'depend' if exists $depends{$f}; push @flags, 'hint' if exists $hints{$f}; push @flags, 'warning' if exists $warnings{$f}; my $flags = @flags ? ' ['.join(', ', @flags).']' : ''; print "$f$flags\n"; } exit 0; } my @files; my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc ); my $srcext = join '|', map { quotemeta $_ } @srcext; if (@ARGV) { my %seen; for (@ARGV) { if (-e) { if (-f) { push @files, $_ unless $seen{$_}++; } else { warn "'$_' is not a file.\n" } } else { my @new = grep { -f } glob $_ or warn "'$_' does not exist.\n"; push @files, grep { !$seen{$_}++ } @new; } } } else { eval { require File::Find; File::Find::find(sub { $File::Find::name =~ /($srcext)$/i and push @files, $File::Find::name; }, '.'); }; if ($@) { @files = map { glob "*$_" } @srcext; } } if (!@ARGV || $opt{filter}) { my(@in, @out); my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; for (@files) { my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i; push @{ $out ? \@out : \@in }, $_; } if (@ARGV && @out) { warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out); } @files = @in; } die "No input files given!\n" unless @files; my(%files, %global, %revreplace); %revreplace = reverse %replace; my $filename; my $patch_opened = 0; for $filename (@files) { unless (open IN, "<$filename") { warn "Unable to read from $filename: $!\n"; next; } info("Scanning $filename ..."); my $c = do { local $/; }; close IN; my %file = (orig => $c, changes => 0); # Temporarily remove C/XS comments and strings from the code my @ccom; $c =~ s{ ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]* | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* ) | ( ^$HS*\#[^\r\n]* | "[^"\\]*(?:\\.[^"\\]*)*" | '[^'\\]*(?:\\.[^'\\]*)*' | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) ) }{ defined $2 and push @ccom, $2; defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex; $file{ccom} = \@ccom; $file{code} = $c; $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m; my $func; for $func (keys %API) { my $match = $func; $match .= "|$revreplace{$func}" if exists $revreplace{$func}; if ($c =~ /\b(?:Perl_)?($match)\b/) { $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func}; $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; if (exists $API{$func}{provided}) { $file{uses_provided}{$func}++; if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) { $file{uses}{$func}++; my @deps = rec_depend($func); if (@deps) { $file{uses_deps}{$func} = \@deps; for (@deps) { $file{uses}{$_} = 0 unless exists $file{uses}{$_}; } } for ($func, @deps) { $file{needs}{$_} = 'static' if exists $need{$_}; } } } if (exists $API{$func}{todo} && $API{$func}{todo} > $opt{'compat-version'}) { if ($c =~ /\b$func\b/) { $file{uses_todo}{$func}++; } } } } while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) { if (exists $need{$2}) { $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; } else { warning("Possibly wrong #define $1 in $filename") } } for (qw(uses needs uses_todo needed_global needed_static)) { for $func (keys %{$file{$_}}) { push @{$global{$_}{$func}}, $filename; } } $files{$filename} = \%file; } # Globally resolve NEED_'s my $need; for $need (keys %{$global{needs}}) { if (@{$global{needs}{$need}} > 1) { my @targets = @{$global{needs}{$need}}; my @t = grep $files{$_}{needed_global}{$need}, @targets; @targets = @t if @t; @t = grep /\.xs$/i, @targets; @targets = @t if @t; my $target = shift @targets; $files{$target}{needs}{$need} = 'global'; for (@{$global{needs}{$need}}) { $files{$_}{needs}{$need} = 'extern' if $_ ne $target; } } } for $filename (@files) { exists $files{$filename} or next; info("=== Analyzing $filename ==="); my %file = %{$files{$filename}}; my $func; my $c = $file{code}; my $warnings = 0; for $func (sort keys %{$file{uses_Perl}}) { if ($API{$func}{varargs}) { unless ($API{$func}{nothxarg}) { my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); if ($changes) { warning("Doesn't pass interpreter argument aTHX to Perl_$func"); $file{changes} += $changes; } } } else { warning("Uses Perl_$func instead of $func"); $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*} {$func$1(}g); } } for $func (sort keys %{$file{uses_replace}}) { warning("Uses $func instead of $replace{$func}"); $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g); } for $func (sort keys %{$file{uses_provided}}) { if ($file{uses}{$func}) { if (exists $file{uses_deps}{$func}) { diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); } else { diag("Uses $func"); } } $warnings += hint($func); } unless ($opt{quiet}) { for $func (sort keys %{$file{uses_todo}}) { print "*** WARNING: Uses $func, which may not be portable below perl ", format_version($API{$func}{todo}), ", even with '$ppport'\n"; $warnings++; } } for $func (sort keys %{$file{needed_static}}) { my $message = ''; if (not exists $file{uses}{$func}) { $message = "No need to define NEED_$func if $func is never used"; } elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') { $message = "No need to define NEED_$func when already needed globally"; } if ($message) { diag($message); $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg); } } for $func (sort keys %{$file{needed_global}}) { my $message = ''; if (not exists $global{uses}{$func}) { $message = "No need to define NEED_${func}_GLOBAL if $func is never used"; } elsif (exists $file{needs}{$func}) { if ($file{needs}{$func} eq 'extern') { $message = "No need to define NEED_${func}_GLOBAL when already needed globally"; } elsif ($file{needs}{$func} eq 'static') { $message = "No need to define NEED_${func}_GLOBAL when only used in this file"; } } if ($message) { diag($message); $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg); } } $file{needs_inc_ppport} = keys %{$file{uses}}; if ($file{needs_inc_ppport}) { my $pp = ''; for $func (sort keys %{$file{needs}}) { my $type = $file{needs}{$func}; next if $type eq 'extern'; my $suffix = $type eq 'global' ? '_GLOBAL' : ''; unless (exists $file{"needed_$type"}{$func}) { if ($type eq 'global') { diag("Files [@{$global{needs}{$func}}] need $func, adding global request"); } else { diag("File needs $func, adding static request"); } $pp .= "#define NEED_$func$suffix\n"; } } if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) { $pp = ''; $file{changes}++; } unless ($file{has_inc_ppport}) { diag("Needs to include '$ppport'"); $pp .= qq(#include "$ppport"\n) } if ($pp) { $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms) || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m) || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m) || ($c =~ s/^/$pp/); } } else { if ($file{has_inc_ppport}) { diag("No need to include '$ppport'"); $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m); } } # put back in our C comments my $ix; my $cppc = 0; my @ccom = @{$file{ccom}}; for $ix (0 .. $#ccom) { if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) { $cppc++; $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/; } else { $c =~ s/$rccs$ix$rcce/$ccom[$ix]/; } } if ($cppc) { my $s = $cppc != 1 ? 's' : ''; warning("Uses $cppc C++ style comment$s, which is not portable"); } my $s = $warnings != 1 ? 's' : ''; my $warn = $warnings ? " ($warnings warning$s)" : ''; info("Analysis completed$warn"); if ($file{changes}) { if (exists $opt{copy}) { my $newfile = "$filename$opt{copy}"; if (-e $newfile) { error("'$newfile' already exists, refusing to write copy of '$filename'"); } else { local *F; if (open F, ">$newfile") { info("Writing copy of '$filename' with changes to '$newfile'"); print F $c; close F; } else { error("Cannot open '$newfile' for writing: $!"); } } } elsif (exists $opt{patch} || $opt{changes}) { if (exists $opt{patch}) { unless ($patch_opened) { if (open PATCH, ">$opt{patch}") { $patch_opened = 1; } else { error("Cannot open '$opt{patch}' for writing: $!"); delete $opt{patch}; $opt{changes} = 1; goto fallback; } } mydiff(\*PATCH, $filename, $c); } else { fallback: info("Suggested changes:"); mydiff(\*STDOUT, $filename, $c); } } else { my $s = $file{changes} == 1 ? '' : 's'; info("$file{changes} potentially required change$s detected"); } } else { info("Looks good"); } } close PATCH if $patch_opened; exit 0; sub try_use { eval "use @_;"; return $@ eq '' } sub mydiff { local *F = shift; my($file, $str) = @_; my $diff; if (exists $opt{diff}) { $diff = run_diff($opt{diff}, $file, $str); } if (!defined $diff and try_use('Text::Diff')) { $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); $diff = <
$tmp") { print F $str; close F; if (open F, "$prog $file $tmp |") { while () { s/\Q$tmp\E/$file.patched/; $diff .= $_; } close F; unlink $tmp; return $diff; } unlink $tmp; } else { error("Cannot open '$tmp' for writing: $!"); } return undef; } sub rec_depend { my($func, $seen) = @_; return () unless exists $depends{$func}; $seen = {%{$seen||{}}}; return () if $seen->{$func}++; my %s; grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}}; } sub parse_version { my $ver = shift; if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) { return ($1, $2, $3); } elsif ($ver !~ /^\d+\.[\d_]+$/) { die "cannot parse version '$ver'\n"; } $ver =~ s/_//g; $ver =~ s/$/000000/; my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; $v = int $v; $s = int $s; if ($r < 5 || ($r == 5 && $v < 6)) { if ($s % 10) { die "cannot parse version '$ver'\n"; } } return ($r, $v, $s); } sub format_version { my $ver = shift; $ver =~ s/$/000000/; my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; $v = int $v; $s = int $s; if ($r < 5 || ($r == 5 && $v < 6)) { if ($s % 10) { die "invalid version '$ver'\n"; } $s /= 10; $ver = sprintf "%d.%03d", $r, $v; $s > 0 and $ver .= sprintf "_%02d", $s; return $ver; } return sprintf "%d.%d.%d", $r, $v, $s; } sub info { $opt{quiet} and return; print @_, "\n"; } sub diag { $opt{quiet} and return; $opt{diag} and print @_, "\n"; } sub warning { $opt{quiet} and return; print "*** ", @_, "\n"; } sub error { print "*** ERROR: ", @_, "\n"; } my %given_hints; my %given_warnings; sub hint { $opt{quiet} and return; my $func = shift; my $rv = 0; if (exists $warnings{$func} && !$given_warnings{$func}++) { my $warn = $warnings{$func}; $warn =~ s!^!*** !mg; print "*** WARNING: $func\n", $warn; $rv++; } if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) { my $hint = $hints{$func}; $hint =~ s/^/ /mg; print " --- hint for $func ---\n", $hint; } $rv; } sub usage { my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms; my %M = ( 'I' => '*' ); $usage =~ s/^\s*perl\s+\S+/$^X $0/; $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g; print < }; my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms; $copy =~ s/^(?=\S+)/ /gms; $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms; $self =~ s/^SKIP.*(?=^__DATA__)/SKIP if (\@ARGV && \$ARGV[0] eq '--unstrip') { eval { require Devel::PPPort }; \$@ and die "Cannot require Devel::PPPort, please install.\\n"; if (eval \$Devel::PPPort::VERSION < $VERSION) { die "$0 was originally generated with Devel::PPPort $VERSION.\\n" . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n" . "Please install a newer version, or --unstrip will not work.\\n"; } Devel::PPPort::WriteFile(\$0); exit 0; } print <$0" or die "cannot strip $0: $!\n"; print OUT "$pl$c\n"; exit 0; } __DATA__ */ #ifndef _P_P_PORTABILITY_H_ #define _P_P_PORTABILITY_H_ #ifndef DPPP_NAMESPACE # define DPPP_NAMESPACE DPPP_ #endif #define DPPP_CAT2(x,y) CAT2(x,y) #define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name) #ifndef PERL_REVISION # if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION)) # define PERL_PATCHLEVEL_H_IMPLICIT # include # endif # if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL))) # include # endif # ifndef PERL_REVISION # define PERL_REVISION (5) /* Replace: 1 */ # define PERL_VERSION PATCHLEVEL # define PERL_SUBVERSION SUBVERSION /* Replace PERL_PATCHLEVEL with PERL_VERSION */ /* Replace: 0 */ # endif #endif #define D_PPP_DEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10)) #define PERL_BCDVERSION ((D_PPP_DEC2BCD(PERL_REVISION)<<24)|(D_PPP_DEC2BCD(PERL_VERSION)<<12)|D_PPP_DEC2BCD(PERL_SUBVERSION)) /* It is very unlikely that anyone will try to use this with Perl 6 (or greater), but who knows. */ #if PERL_REVISION != 5 # error dbipport.h only works with Perl version 5 #endif /* PERL_REVISION != 5 */ #ifndef dTHR # define dTHR dNOOP #endif #ifndef dTHX # define dTHX dNOOP #endif #ifndef dTHXa # define dTHXa(x) dNOOP #endif #ifndef pTHX # define pTHX void #endif #ifndef pTHX_ # define pTHX_ #endif #ifndef aTHX # define aTHX #endif #ifndef aTHX_ # define aTHX_ #endif #if (PERL_BCDVERSION < 0x5006000) # ifdef USE_THREADS # define aTHXR thr # define aTHXR_ thr, # else # define aTHXR # define aTHXR_ # endif # define dTHXR dTHR #else # define aTHXR aTHX # define aTHXR_ aTHX_ # define dTHXR dTHX #endif #ifndef dTHXoa # define dTHXoa(x) dTHXa(x) #endif #ifdef I_LIMITS # include #endif #ifndef PERL_UCHAR_MIN # define PERL_UCHAR_MIN ((unsigned char)0) #endif #ifndef PERL_UCHAR_MAX # ifdef UCHAR_MAX # define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX) # else # ifdef MAXUCHAR # define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR) # else # define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0) # endif # endif #endif #ifndef PERL_USHORT_MIN # define PERL_USHORT_MIN ((unsigned short)0) #endif #ifndef PERL_USHORT_MAX # ifdef USHORT_MAX # define PERL_USHORT_MAX ((unsigned short)USHORT_MAX) # else # ifdef MAXUSHORT # define PERL_USHORT_MAX ((unsigned short)MAXUSHORT) # else # ifdef USHRT_MAX # define PERL_USHORT_MAX ((unsigned short)USHRT_MAX) # else # define PERL_USHORT_MAX ((unsigned short)~(unsigned)0) # endif # endif # endif #endif #ifndef PERL_SHORT_MAX # ifdef SHORT_MAX # define PERL_SHORT_MAX ((short)SHORT_MAX) # else # ifdef MAXSHORT /* Often used in */ # define PERL_SHORT_MAX ((short)MAXSHORT) # else # ifdef SHRT_MAX # define PERL_SHORT_MAX ((short)SHRT_MAX) # else # define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1)) # endif # endif # endif #endif #ifndef PERL_SHORT_MIN # ifdef SHORT_MIN # define PERL_SHORT_MIN ((short)SHORT_MIN) # else # ifdef MINSHORT # define PERL_SHORT_MIN ((short)MINSHORT) # else # ifdef SHRT_MIN # define PERL_SHORT_MIN ((short)SHRT_MIN) # else # define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3)) # endif # endif # endif #endif #ifndef PERL_UINT_MAX # ifdef UINT_MAX # define PERL_UINT_MAX ((unsigned int)UINT_MAX) # else # ifdef MAXUINT # define PERL_UINT_MAX ((unsigned int)MAXUINT) # else # define PERL_UINT_MAX (~(unsigned int)0) # endif # endif #endif #ifndef PERL_UINT_MIN # define PERL_UINT_MIN ((unsigned int)0) #endif #ifndef PERL_INT_MAX # ifdef INT_MAX # define PERL_INT_MAX ((int)INT_MAX) # else # ifdef MAXINT /* Often used in */ # define PERL_INT_MAX ((int)MAXINT) # else # define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1)) # endif # endif #endif #ifndef PERL_INT_MIN # ifdef INT_MIN # define PERL_INT_MIN ((int)INT_MIN) # else # ifdef MININT # define PERL_INT_MIN ((int)MININT) # else # define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3)) # endif # endif #endif #ifndef PERL_ULONG_MAX # ifdef ULONG_MAX # define PERL_ULONG_MAX ((unsigned long)ULONG_MAX) # else # ifdef MAXULONG # define PERL_ULONG_MAX ((unsigned long)MAXULONG) # else # define PERL_ULONG_MAX (~(unsigned long)0) # endif # endif #endif #ifndef PERL_ULONG_MIN # define PERL_ULONG_MIN ((unsigned long)0L) #endif #ifndef PERL_LONG_MAX # ifdef LONG_MAX # define PERL_LONG_MAX ((long)LONG_MAX) # else # ifdef MAXLONG # define PERL_LONG_MAX ((long)MAXLONG) # else # define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1)) # endif # endif #endif #ifndef PERL_LONG_MIN # ifdef LONG_MIN # define PERL_LONG_MIN ((long)LONG_MIN) # else # ifdef MINLONG # define PERL_LONG_MIN ((long)MINLONG) # else # define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3)) # endif # endif #endif #if defined(HAS_QUAD) && (defined(convex) || defined(uts)) # ifndef PERL_UQUAD_MAX # ifdef ULONGLONG_MAX # define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX) # else # ifdef MAXULONGLONG # define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG) # else # define PERL_UQUAD_MAX (~(unsigned long long)0) # endif # endif # endif # ifndef PERL_UQUAD_MIN # define PERL_UQUAD_MIN ((unsigned long long)0L) # endif # ifndef PERL_QUAD_MAX # ifdef LONGLONG_MAX # define PERL_QUAD_MAX ((long long)LONGLONG_MAX) # else # ifdef MAXLONGLONG # define PERL_QUAD_MAX ((long long)MAXLONGLONG) # else # define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1)) # endif # endif # endif # ifndef PERL_QUAD_MIN # ifdef LONGLONG_MIN # define PERL_QUAD_MIN ((long long)LONGLONG_MIN) # else # ifdef MINLONGLONG # define PERL_QUAD_MIN ((long long)MINLONGLONG) # else # define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) # endif # endif # endif #endif /* This is based on code from 5.003 perl.h */ #ifdef HAS_QUAD # ifdef cray #ifndef IVTYPE # define IVTYPE int #endif #ifndef IV_MIN # define IV_MIN PERL_INT_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_INT_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_UINT_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_UINT_MAX #endif # ifdef INTSIZE #ifndef IVSIZE # define IVSIZE INTSIZE #endif # endif # else # if defined(convex) || defined(uts) #ifndef IVTYPE # define IVTYPE long long #endif #ifndef IV_MIN # define IV_MIN PERL_QUAD_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_QUAD_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_UQUAD_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_UQUAD_MAX #endif # ifdef LONGLONGSIZE #ifndef IVSIZE # define IVSIZE LONGLONGSIZE #endif # endif # else #ifndef IVTYPE # define IVTYPE long #endif #ifndef IV_MIN # define IV_MIN PERL_LONG_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_LONG_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_ULONG_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_ULONG_MAX #endif # ifdef LONGSIZE #ifndef IVSIZE # define IVSIZE LONGSIZE #endif # endif # endif # endif #ifndef IVSIZE # define IVSIZE 8 #endif #ifndef LONGSIZE # define LONGSIZE 8 #endif #ifndef PERL_QUAD_MIN # define PERL_QUAD_MIN IV_MIN #endif #ifndef PERL_QUAD_MAX # define PERL_QUAD_MAX IV_MAX #endif #ifndef PERL_UQUAD_MIN # define PERL_UQUAD_MIN UV_MIN #endif #ifndef PERL_UQUAD_MAX # define PERL_UQUAD_MAX UV_MAX #endif #else #ifndef IVTYPE # define IVTYPE long #endif #ifndef LONGSIZE # define LONGSIZE 4 #endif #ifndef IV_MIN # define IV_MIN PERL_LONG_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_LONG_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_ULONG_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_ULONG_MAX #endif #endif #ifndef IVSIZE # ifdef LONGSIZE # define IVSIZE LONGSIZE # else # define IVSIZE 4 /* A bold guess, but the best we can make. */ # endif #endif #ifndef UVTYPE # define UVTYPE unsigned IVTYPE #endif #ifndef UVSIZE # define UVSIZE IVSIZE #endif #ifndef cBOOL # define cBOOL(cbool) ((cbool) ? (bool)1 : (bool)0) #endif #ifndef OpHAS_SIBLING # define OpHAS_SIBLING(o) (cBOOL((o)->op_sibling)) #endif #ifndef OpSIBLING # define OpSIBLING(o) (0 + (o)->op_sibling) #endif #ifndef OpMORESIB_set # define OpMORESIB_set(o, sib) ((o)->op_sibling = (sib)) #endif #ifndef OpLASTSIB_set # define OpLASTSIB_set(o, parent) ((o)->op_sibling = NULL) #endif #ifndef OpMAYBESIB_set # define OpMAYBESIB_set(o, sib, parent) ((o)->op_sibling = (sib)) #endif #ifndef HEf_SVKEY # define HEf_SVKEY -2 #endif #if defined(DEBUGGING) && !defined(__COVERITY__) #ifndef __ASSERT_ # define __ASSERT_(statement) assert(statement), #endif #else #ifndef __ASSERT_ # define __ASSERT_(statement) #endif #endif #ifndef SvRX #if defined(NEED_SvRX) static void * DPPP_(my_SvRX)(pTHX_ SV *rv); static #else extern void * DPPP_(my_SvRX)(pTHX_ SV *rv); #endif #if defined(NEED_SvRX) || defined(NEED_SvRX_GLOBAL) #ifdef SvRX # undef SvRX #endif #define SvRX(a) DPPP_(my_SvRX)(aTHX_ a) void * DPPP_(my_SvRX)(pTHX_ SV *rv) { if (SvROK(rv)) { SV *sv = SvRV(rv); if (SvMAGICAL(sv)) { MAGIC *mg = mg_find(sv, PERL_MAGIC_qr); if (mg && mg->mg_obj) { return mg->mg_obj; } } } return 0; } #endif #endif #ifndef SvRXOK # define SvRXOK(sv) (!!SvRX(sv)) #endif #ifndef PERL_UNUSED_DECL # ifdef HASATTRIBUTE # if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) # define PERL_UNUSED_DECL # else # define PERL_UNUSED_DECL __attribute__((unused)) # endif # else # define PERL_UNUSED_DECL # endif #endif #ifndef PERL_UNUSED_ARG # if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ # include # define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) # else # define PERL_UNUSED_ARG(x) ((void)x) # endif #endif #ifndef PERL_UNUSED_VAR # define PERL_UNUSED_VAR(x) ((void)x) #endif #ifndef PERL_UNUSED_CONTEXT # ifdef USE_ITHREADS # define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) # else # define PERL_UNUSED_CONTEXT # endif #endif #ifndef PERL_UNUSED_RESULT # if defined(__GNUC__) && defined(HASATTRIBUTE_WARN_UNUSED_RESULT) # define PERL_UNUSED_RESULT(v) STMT_START { __typeof__(v) z = (v); (void)sizeof(z); } STMT_END # else # define PERL_UNUSED_RESULT(v) ((void)(v)) # endif #endif #ifndef NOOP # define NOOP /*EMPTY*/(void)0 #endif #ifndef dNOOP # define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL #endif #ifndef NVTYPE # if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) # define NVTYPE long double # else # define NVTYPE double # endif typedef NVTYPE NV; #endif #ifndef INT2PTR # if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) # define PTRV UV # define INT2PTR(any,d) (any)(d) # else # if PTRSIZE == LONGSIZE # define PTRV unsigned long # else # define PTRV unsigned # endif # define INT2PTR(any,d) (any)(PTRV)(d) # endif #endif #ifndef PTR2ul # if PTRSIZE == LONGSIZE # define PTR2ul(p) (unsigned long)(p) # else # define PTR2ul(p) INT2PTR(unsigned long,p) # endif #endif #ifndef PTR2nat # define PTR2nat(p) (PTRV)(p) #endif #ifndef NUM2PTR # define NUM2PTR(any,d) (any)PTR2nat(d) #endif #ifndef PTR2IV # define PTR2IV(p) INT2PTR(IV,p) #endif #ifndef PTR2UV # define PTR2UV(p) INT2PTR(UV,p) #endif #ifndef PTR2NV # define PTR2NV(p) NUM2PTR(NV,p) #endif #undef START_EXTERN_C #undef END_EXTERN_C #undef EXTERN_C #ifdef __cplusplus # define START_EXTERN_C extern "C" { # define END_EXTERN_C } # define EXTERN_C extern "C" #else # define START_EXTERN_C # define END_EXTERN_C # define EXTERN_C extern #endif #if defined(PERL_GCC_PEDANTIC) # ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN # define PERL_GCC_BRACE_GROUPS_FORBIDDEN # endif #endif #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) # ifndef PERL_USE_GCC_BRACE_GROUPS # define PERL_USE_GCC_BRACE_GROUPS # endif #endif #undef STMT_START #undef STMT_END #ifdef PERL_USE_GCC_BRACE_GROUPS # define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */ # define STMT_END ) #else # if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) # define STMT_START if (1) # define STMT_END else (void)0 # else # define STMT_START do # define STMT_END while (0) # endif #endif #ifndef boolSV # define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no) #endif /* DEFSV appears first in 5.004_56 */ #ifndef DEFSV # define DEFSV GvSV(PL_defgv) #endif #ifndef SAVE_DEFSV # define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) #endif #ifndef DEFSV_set # define DEFSV_set(sv) (DEFSV = (sv)) #endif /* Older perls (<=5.003) lack AvFILLp */ #ifndef AvFILLp # define AvFILLp AvFILL #endif #ifndef av_tindex # define av_tindex AvFILL #endif #ifndef av_top_index # define av_top_index AvFILL #endif #ifndef ERRSV # define ERRSV get_sv("@",FALSE) #endif /* Hint: gv_stashpvn * This function's backport doesn't support the length parameter, but * rather ignores it. Portability can only be ensured if the length * parameter is used for speed reasons, but the length can always be * correctly computed from the string argument. */ #ifndef gv_stashpvn # define gv_stashpvn(str,len,create) gv_stashpv(str,create) #endif /* Replace: 1 */ #ifndef get_cv # define get_cv perl_get_cv #endif #ifndef get_sv # define get_sv perl_get_sv #endif #ifndef get_av # define get_av perl_get_av #endif #ifndef get_hv # define get_hv perl_get_hv #endif /* Replace: 0 */ #ifndef dUNDERBAR # define dUNDERBAR dNOOP #endif #ifndef UNDERBAR # define UNDERBAR DEFSV #endif #ifndef dAX # define dAX I32 ax = MARK - PL_stack_base + 1 #endif #ifndef dITEMS # define dITEMS I32 items = SP - MARK #endif #ifndef dXSTARG # define dXSTARG SV * targ = sv_newmortal() #endif #ifndef dAXMARK # define dAXMARK I32 ax = POPMARK; \ register SV ** const mark = PL_stack_base + ax++ #endif #ifndef XSprePUSH # define XSprePUSH (sp = PL_stack_base + ax - 1) #endif #if (PERL_BCDVERSION < 0x5005000) # undef XSRETURN # define XSRETURN(off) \ STMT_START { \ PL_stack_sp = PL_stack_base + ax + ((off) - 1); \ return; \ } STMT_END #endif #ifndef XSPROTO # define XSPROTO(name) void name(pTHX_ CV* cv) #endif #ifndef SVfARG # define SVfARG(p) ((void*)(p)) #endif #ifndef PERL_ABS # define PERL_ABS(x) ((x) < 0 ? -(x) : (x)) #endif #ifndef dVAR # define dVAR dNOOP #endif #ifndef SVf # define SVf "_" #endif #ifndef UTF8_MAXBYTES # define UTF8_MAXBYTES UTF8_MAXLEN #endif #ifndef CPERLscope # define CPERLscope(x) x #endif #ifndef PERL_HASH # define PERL_HASH(hash,str,len) \ STMT_START { \ const char *s_PeRlHaSh = str; \ I32 i_PeRlHaSh = len; \ U32 hash_PeRlHaSh = 0; \ while (i_PeRlHaSh--) \ hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \ (hash) = hash_PeRlHaSh; \ } STMT_END #endif #ifndef PERLIO_FUNCS_DECL # ifdef PERLIO_FUNCS_CONST # define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs # define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs) # else # define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs # define PERLIO_FUNCS_CAST(funcs) (funcs) # endif #endif /* provide these typedefs for older perls */ #if (PERL_BCDVERSION < 0x5009003) # ifdef ARGSproto typedef OP* (CPERLscope(*Perl_ppaddr_t))(ARGSproto); # else typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX); # endif typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*); #endif #ifndef WIDEST_UTYPE # ifdef QUADKIND # ifdef U64TYPE # define WIDEST_UTYPE U64TYPE # else # define WIDEST_UTYPE Quad_t # endif # else # define WIDEST_UTYPE U32 # endif #endif #ifdef EBCDIC /* This is the first version where these macros are fully correct. Relying on * the C library functions, as earlier releases did, causes problems with * locales */ # if (PERL_BCDVERSION < 0x5022000) # undef isALNUM # undef isALNUM_A # undef isALNUMC # undef isALNUMC_A # undef isALPHA # undef isALPHA_A # undef isALPHANUMERIC # undef isALPHANUMERIC_A # undef isASCII # undef isASCII_A # undef isBLANK # undef isBLANK_A # undef isCNTRL # undef isCNTRL_A # undef isDIGIT # undef isDIGIT_A # undef isGRAPH # undef isGRAPH_A # undef isIDCONT # undef isIDCONT_A # undef isIDFIRST # undef isIDFIRST_A # undef isLOWER # undef isLOWER_A # undef isOCTAL # undef isOCTAL_A # undef isPRINT # undef isPRINT_A # undef isPSXSPC # undef isPSXSPC_A # undef isPUNCT # undef isPUNCT_A # undef isSPACE # undef isSPACE_A # undef isUPPER # undef isUPPER_A # undef isWORDCHAR # undef isWORDCHAR_A # undef isXDIGIT # undef isXDIGIT_A # endif #ifndef isASCII # define isASCII(c) (isCNTRL(c) || isPRINT(c)) #endif /* The below is accurate for all EBCDIC code pages supported by * all the versions of Perl overridden by this */ #ifndef isCNTRL # define isCNTRL(c) ( (c) == '\0' || (c) == '\a' || (c) == '\b' \ || (c) == '\f' || (c) == '\n' || (c) == '\r' \ || (c) == '\t' || (c) == '\v' \ || ((c) <= 3 && (c) >= 1) /* SOH, STX, ETX */ \ || (c) == 7 /* U+7F DEL */ \ || ((c) <= 0x13 && (c) >= 0x0E) /* SO, SI */ \ /* DLE, DC[1-3] */ \ || (c) == 0x18 /* U+18 CAN */ \ || (c) == 0x19 /* U+19 EOM */ \ || ((c) <= 0x1F && (c) >= 0x1C) /* [FGRU]S */ \ || (c) == 0x26 /* U+17 ETB */ \ || (c) == 0x27 /* U+1B ESC */ \ || (c) == 0x2D /* U+05 ENQ */ \ || (c) == 0x2E /* U+06 ACK */ \ || (c) == 0x32 /* U+16 SYN */ \ || (c) == 0x37 /* U+04 EOT */ \ || (c) == 0x3C /* U+14 DC4 */ \ || (c) == 0x3D /* U+15 NAK */ \ || (c) == 0x3F /* U+1A SUB */ \ ) #endif /* The ordering of the tests in this and isUPPER are to exclude most characters * early */ #ifndef isLOWER # define isLOWER(c) ( (c) >= 'a' && (c) <= 'z' \ && ( (c) <= 'i' \ || ((c) >= 'j' && (c) <= 'r') \ || (c) >= 's')) #endif #ifndef isUPPER # define isUPPER(c) ( (c) >= 'A' && (c) <= 'Z' \ && ( (c) <= 'I' \ || ((c) >= 'J' && (c) <= 'R') \ || (c) >= 'S')) #endif #else /* Above is EBCDIC; below is ASCII */ # if (PERL_BCDVERSION < 0x5004000) /* The implementation of these in older perl versions can give wrong results if * the C program locale is set to other than the C locale */ # undef isALNUM # undef isALNUM_A # undef isALPHA # undef isALPHA_A # undef isDIGIT # undef isDIGIT_A # undef isIDFIRST # undef isIDFIRST_A # undef isLOWER # undef isLOWER_A # undef isUPPER # undef isUPPER_A # endif # if (PERL_BCDVERSION < 0x5008000) /* Hint: isCNTRL * Earlier perls omitted DEL */ # undef isCNTRL # endif # if (PERL_BCDVERSION < 0x5010000) /* Hint: isPRINT * The implementation in older perl versions includes all of the * isSPACE() characters, which is wrong. The version provided by * Devel::PPPort always overrides a present buggy version. */ # undef isPRINT # undef isPRINT_A # endif # if (PERL_BCDVERSION < 0x5014000) /* Hint: isASCII * The implementation in older perl versions always returned true if the * parameter was a signed char */ # undef isASCII # undef isASCII_A # endif # if (PERL_BCDVERSION < 0x5020000) /* Hint: isSPACE * The implementation in older perl versions didn't include \v */ # undef isSPACE # undef isSPACE_A # endif #ifndef isASCII # define isASCII(c) ((WIDEST_UTYPE) (c) <= 127) #endif #ifndef isCNTRL # define isCNTRL(c) ((WIDEST_UTYPE) (c) < ' ' || (c) == 127) #endif #ifndef isLOWER # define isLOWER(c) ((c) >= 'a' && (c) <= 'z') #endif #ifndef isUPPER # define isUPPER(c) ((c) <= 'Z' && (c) >= 'A') #endif #endif /* Below are definitions common to EBCDIC and ASCII */ #ifndef isALNUM # define isALNUM(c) isWORDCHAR(c) #endif #ifndef isALNUMC # define isALNUMC(c) isALPHANUMERIC(c) #endif #ifndef isALPHA # define isALPHA(c) (isUPPER(c) || isLOWER(c)) #endif #ifndef isALPHANUMERIC # define isALPHANUMERIC(c) (isALPHA(c) || isDIGIT(c)) #endif #ifndef isBLANK # define isBLANK(c) ((c) == ' ' || (c) == '\t') #endif #ifndef isDIGIT # define isDIGIT(c) ((c) <= '9' && (c) >= '0') #endif #ifndef isGRAPH # define isGRAPH(c) (isWORDCHAR(c) || isPUNCT(c)) #endif #ifndef isIDCONT # define isIDCONT(c) isWORDCHAR(c) #endif #ifndef isIDFIRST # define isIDFIRST(c) (isALPHA(c) || (c) == '_') #endif #ifndef isOCTAL # define isOCTAL(c) (((WIDEST_UTYPE)((c)) & ~7) == '0') #endif #ifndef isPRINT # define isPRINT(c) (isGRAPH(c) || (c) == ' ') #endif #ifndef isPSXSPC # define isPSXSPC(c) isSPACE(c) #endif #ifndef isPUNCT # define isPUNCT(c) ( (c) == '-' || (c) == '!' || (c) == '"' \ || (c) == '#' || (c) == '$' || (c) == '%' \ || (c) == '&' || (c) == '\'' || (c) == '(' \ || (c) == ')' || (c) == '*' || (c) == '+' \ || (c) == ',' || (c) == '.' || (c) == '/' \ || (c) == ':' || (c) == ';' || (c) == '<' \ || (c) == '=' || (c) == '>' || (c) == '?' \ || (c) == '@' || (c) == '[' || (c) == '\\' \ || (c) == ']' || (c) == '^' || (c) == '_' \ || (c) == '`' || (c) == '{' || (c) == '|' \ || (c) == '}' || (c) == '~') #endif #ifndef isSPACE # define isSPACE(c) ( isBLANK(c) || (c) == '\n' || (c) == '\r' \ || (c) == '\v' || (c) == '\f') #endif #ifndef isWORDCHAR # define isWORDCHAR(c) (isALPHANUMERIC(c) || (c) == '_') #endif #ifndef isXDIGIT # define isXDIGIT(c) ( isDIGIT(c) \ || ((c) >= 'a' && (c) <= 'f') \ || ((c) >= 'A' && (c) <= 'F')) #endif #ifndef isALNUM_A # define isALNUM_A isALNUM #endif #ifndef isALNUMC_A # define isALNUMC_A isALNUMC #endif #ifndef isALPHA_A # define isALPHA_A isALPHA #endif #ifndef isALPHANUMERIC_A # define isALPHANUMERIC_A isALPHANUMERIC #endif #ifndef isASCII_A # define isASCII_A isASCII #endif #ifndef isBLANK_A # define isBLANK_A isBLANK #endif #ifndef isCNTRL_A # define isCNTRL_A isCNTRL #endif #ifndef isDIGIT_A # define isDIGIT_A isDIGIT #endif #ifndef isGRAPH_A # define isGRAPH_A isGRAPH #endif #ifndef isIDCONT_A # define isIDCONT_A isIDCONT #endif #ifndef isIDFIRST_A # define isIDFIRST_A isIDFIRST #endif #ifndef isLOWER_A # define isLOWER_A isLOWER #endif #ifndef isOCTAL_A # define isOCTAL_A isOCTAL #endif #ifndef isPRINT_A # define isPRINT_A isPRINT #endif #ifndef isPSXSPC_A # define isPSXSPC_A isPSXSPC #endif #ifndef isPUNCT_A # define isPUNCT_A isPUNCT #endif #ifndef isSPACE_A # define isSPACE_A isSPACE #endif #ifndef isUPPER_A # define isUPPER_A isUPPER #endif #ifndef isWORDCHAR_A # define isWORDCHAR_A isWORDCHAR #endif #ifndef isXDIGIT_A # define isXDIGIT_A isXDIGIT #endif /* Until we figure out how to support this in older perls... */ #if (PERL_BCDVERSION >= 0x5008000) #ifndef HeUTF8 # define HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \ SvUTF8(HeKEY_sv(he)) : \ (U32)HeKUTF8(he)) #endif #endif #ifndef C_ARRAY_LENGTH # define C_ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0])) #endif #ifndef C_ARRAY_END # define C_ARRAY_END(a) ((a) + C_ARRAY_LENGTH(a)) #endif #ifndef LIKELY # define LIKELY(x) (x) #endif #ifndef UNLIKELY # define UNLIKELY(x) (x) #endif #ifndef UNICODE_REPLACEMENT # define UNICODE_REPLACEMENT 0xFFFD #endif #ifndef MUTABLE_PTR #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) # define MUTABLE_PTR(p) ({ void *_p = (p); _p; }) #else # define MUTABLE_PTR(p) ((void *) (p)) #endif #endif #ifndef MUTABLE_SV # define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p)) #endif #ifndef WARN_ALL # define WARN_ALL 0 #endif #ifndef WARN_CLOSURE # define WARN_CLOSURE 1 #endif #ifndef WARN_DEPRECATED # define WARN_DEPRECATED 2 #endif #ifndef WARN_EXITING # define WARN_EXITING 3 #endif #ifndef WARN_GLOB # define WARN_GLOB 4 #endif #ifndef WARN_IO # define WARN_IO 5 #endif #ifndef WARN_CLOSED # define WARN_CLOSED 6 #endif #ifndef WARN_EXEC # define WARN_EXEC 7 #endif #ifndef WARN_LAYER # define WARN_LAYER 8 #endif #ifndef WARN_NEWLINE # define WARN_NEWLINE 9 #endif #ifndef WARN_PIPE # define WARN_PIPE 10 #endif #ifndef WARN_UNOPENED # define WARN_UNOPENED 11 #endif #ifndef WARN_MISC # define WARN_MISC 12 #endif #ifndef WARN_NUMERIC # define WARN_NUMERIC 13 #endif #ifndef WARN_ONCE # define WARN_ONCE 14 #endif #ifndef WARN_OVERFLOW # define WARN_OVERFLOW 15 #endif #ifndef WARN_PACK # define WARN_PACK 16 #endif #ifndef WARN_PORTABLE # define WARN_PORTABLE 17 #endif #ifndef WARN_RECURSION # define WARN_RECURSION 18 #endif #ifndef WARN_REDEFINE # define WARN_REDEFINE 19 #endif #ifndef WARN_REGEXP # define WARN_REGEXP 20 #endif #ifndef WARN_SEVERE # define WARN_SEVERE 21 #endif #ifndef WARN_DEBUGGING # define WARN_DEBUGGING 22 #endif #ifndef WARN_INPLACE # define WARN_INPLACE 23 #endif #ifndef WARN_INTERNAL # define WARN_INTERNAL 24 #endif #ifndef WARN_MALLOC # define WARN_MALLOC 25 #endif #ifndef WARN_SIGNAL # define WARN_SIGNAL 26 #endif #ifndef WARN_SUBSTR # define WARN_SUBSTR 27 #endif #ifndef WARN_SYNTAX # define WARN_SYNTAX 28 #endif #ifndef WARN_AMBIGUOUS # define WARN_AMBIGUOUS 29 #endif #ifndef WARN_BAREWORD # define WARN_BAREWORD 30 #endif #ifndef WARN_DIGIT # define WARN_DIGIT 31 #endif #ifndef WARN_PARENTHESIS # define WARN_PARENTHESIS 32 #endif #ifndef WARN_PRECEDENCE # define WARN_PRECEDENCE 33 #endif #ifndef WARN_PRINTF # define WARN_PRINTF 34 #endif #ifndef WARN_PROTOTYPE # define WARN_PROTOTYPE 35 #endif #ifndef WARN_QW # define WARN_QW 36 #endif #ifndef WARN_RESERVED # define WARN_RESERVED 37 #endif #ifndef WARN_SEMICOLON # define WARN_SEMICOLON 38 #endif #ifndef WARN_TAINT # define WARN_TAINT 39 #endif #ifndef WARN_THREADS # define WARN_THREADS 40 #endif #ifndef WARN_UNINITIALIZED # define WARN_UNINITIALIZED 41 #endif #ifndef WARN_UNPACK # define WARN_UNPACK 42 #endif #ifndef WARN_UNTIE # define WARN_UNTIE 43 #endif #ifndef WARN_UTF8 # define WARN_UTF8 44 #endif #ifndef WARN_VOID # define WARN_VOID 45 #endif #ifndef WARN_ASSERTIONS # define WARN_ASSERTIONS 46 #endif #ifndef packWARN # define packWARN(a) (a) #endif #ifndef ckWARN # ifdef G_WARN_ON # define ckWARN(a) (PL_dowarn & G_WARN_ON) # else # define ckWARN(a) PL_dowarn # endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(warner) #if defined(NEED_warner) static void DPPP_(my_warner)(U32 err, const char *pat, ...); static #else extern void DPPP_(my_warner)(U32 err, const char *pat, ...); #endif #if defined(NEED_warner) || defined(NEED_warner_GLOBAL) #define Perl_warner DPPP_(my_warner) void DPPP_(my_warner)(U32 err, const char *pat, ...) { SV *sv; va_list args; PERL_UNUSED_ARG(err); va_start(args, pat); sv = vnewSVpvf(pat, &args); va_end(args); sv_2mortal(sv); warn("%s", SvPV_nolen(sv)); } #define warner Perl_warner #define Perl_warner_nocontext Perl_warner #endif #endif #define _ppport_MIN(a,b) (((a) <= (b)) ? (a) : (b)) #ifndef sv_setuv # define sv_setuv(sv, uv) \ STMT_START { \ UV TeMpUv = uv; \ if (TeMpUv <= IV_MAX) \ sv_setiv(sv, TeMpUv); \ else \ sv_setnv(sv, (double)TeMpUv); \ } STMT_END #endif #ifndef newSVuv # define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) #endif #ifndef sv_2uv # define sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv))) #endif #ifndef SvUVX # define SvUVX(sv) ((UV)SvIVX(sv)) #endif #ifndef SvUVXx # define SvUVXx(sv) SvUVX(sv) #endif #ifndef SvUV # define SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv)) #endif #ifndef SvUVx # define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv)) #endif /* Hint: sv_uv * Always use the SvUVx() macro instead of sv_uv(). */ #ifndef sv_uv # define sv_uv(sv) SvUVx(sv) #endif #if !defined(SvUOK) && defined(SvIOK_UV) # define SvUOK(sv) SvIOK_UV(sv) #endif #ifndef XST_mUV # define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) ) #endif #ifndef XSRETURN_UV # define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END #endif #ifndef PUSHu # define PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END #endif #ifndef XPUSHu # define XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END #endif #if defined UTF8SKIP /* Don't use official version because it uses MIN, which may not be available */ #undef UTF8_SAFE_SKIP #ifndef UTF8_SAFE_SKIP # define UTF8_SAFE_SKIP(s, e) ( \ ((((e) - (s)) <= 0) \ ? 0 \ : _ppport_MIN(((e) - (s)), UTF8SKIP(s)))) #endif #endif #if !defined(my_strnlen) #if defined(NEED_my_strnlen) static STRLEN DPPP_(my_my_strnlen)(const char *str, Size_t maxlen); static #else extern STRLEN DPPP_(my_my_strnlen)(const char *str, Size_t maxlen); #endif #if defined(NEED_my_strnlen) || defined(NEED_my_strnlen_GLOBAL) #define my_strnlen DPPP_(my_my_strnlen) #define Perl_my_strnlen DPPP_(my_my_strnlen) STRLEN DPPP_(my_my_strnlen)(const char *str, Size_t maxlen) { const char *p = str; while(maxlen-- && *p) p++; return p - str; } #endif #endif #if (PERL_BCDVERSION < 0x5030000) /* Versions prior to this accepted things that are now considered * malformations, and didn't return -1 on error with warnings enabled * */ # undef utf8_to_uvchr_buf #endif /* This implementation brings modern, generally more restricted standards to * utf8_to_uvchr_buf. Some of these are security related, and clearly must * be done. But its arguable that the others need not, and hence should not. * The reason they're here is that a module that intends to play with the * latest perls shoud be able to work the same in all releases. An example is * that perl no longer accepts any UV for a code point, but limits them to * IV_MAX or below. This is for future internal use of the larger code points. * If it turns out that some of these changes are breaking code that isn't * intended to work with modern perls, the tighter restrictions could be * relaxed. khw thinks this is unlikely, but has been wrong in the past. */ #ifndef utf8_to_uvchr_buf /* Choose which underlying implementation to use. At least one must be * present or the perl is too early to handle this function */ # if defined(utf8n_to_uvchr) || defined(utf8_to_uv) # if defined(utf8n_to_uvchr) /* This is the preferred implementation */ # define _ppport_utf8_to_uvchr_buf_callee utf8n_to_uvchr # else # define _ppport_utf8_to_uvchr_buf_callee utf8_to_uv # endif # endif #ifdef _ppport_utf8_to_uvchr_buf_callee # if defined(NEED_utf8_to_uvchr_buf) static UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLEN * retlen); static #else extern UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLEN * retlen); #endif #if defined(NEED_utf8_to_uvchr_buf) || defined(NEED_utf8_to_uvchr_buf_GLOBAL) #ifdef utf8_to_uvchr_buf # undef utf8_to_uvchr_buf #endif #define utf8_to_uvchr_buf(a,b,c) DPPP_(my_utf8_to_uvchr_buf)(aTHX_ a,b,c) #define Perl_utf8_to_uvchr_buf DPPP_(my_utf8_to_uvchr_buf) UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen) { UV ret; STRLEN curlen; bool overflows = 0; const U8 *cur_s = s; const bool do_warnings = ckWARN_d(WARN_UTF8); if (send > s) { curlen = send - s; } else { assert(0); /* Modern perls die under this circumstance */ curlen = 0; if (! do_warnings) { /* Handle empty here if no warnings needed */ if (retlen) *retlen = 0; return UNICODE_REPLACEMENT; } } /* The modern version allows anything that evaluates to a legal UV, but not * overlongs nor an empty input */ ret = _ppport_utf8_to_uvchr_buf_callee( s, curlen, retlen, (UTF8_ALLOW_ANYUV & ~(UTF8_ALLOW_LONG|UTF8_ALLOW_EMPTY))); /* But actually, modern versions restrict the UV to being no more than what * an IV can hold */ if (ret > PERL_INT_MAX) { overflows = 1; } # if (PERL_BCDVERSION < 0x5026000) # ifndef EBCDIC /* There are bugs in versions earlier than this on non-EBCDIC platforms * in which it did not detect all instances of overflow, which could be * a security hole. Also, earlier versions did not allow the overflow * malformation under any circumstances, and modern ones do. So we * need to check here. */ else if (curlen > 0 && *s >= 0xFE) { /* If the main routine detected overflow, great; it returned 0. But if the * input's first byte indicates it could overflow, we need to verify. * First, on a 32-bit machine the first byte being at least \xFE * automatically is overflow */ if (sizeof(ret) < 8) { overflows = 1; } else { const U8 highest[] = /* 2*63-1 */ "\xFF\x80\x87\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF"; const U8 *cur_h = highest; for (cur_s = s; cur_s < send; cur_s++, cur_h++) { if (UNLIKELY(*cur_s == *cur_h)) { continue; } /* If this byte is larger than the corresponding highest UTF-8 * byte, the sequence overflows; otherwise the byte is less than * (as we handled the equality case above), and so the sequence * doesn't overflow */ overflows = *cur_s > *cur_h; break; } /* Here, either we set the bool and broke out of the loop, or got * to the end and all bytes are the same which indicates it doesn't * overflow. */ } } # endif # endif /* < 5.26 */ if (UNLIKELY(overflows)) { if (! do_warnings) { if (retlen) { *retlen = _ppport_MIN(*retlen, UTF8SKIP(s)); *retlen = _ppport_MIN(*retlen, curlen); } return UNICODE_REPLACEMENT; } else { /* On versions that correctly detect overflow, but forbid it * always, 0 will be returned, but also a warning will have been * raised. Don't repeat it */ if (ret != 0) { /* We use the error message in use from 5.8-5.14 */ Perl_warner(aTHX_ packWARN(WARN_UTF8), "Malformed UTF-8 character (overflow at 0x%" UVxf ", byte 0x%02x, after start byte 0x%02x)", ret, *cur_s, *s); } if (retlen) { *retlen = (STRLEN) -1; } return 0; } } /* If failed and warnings are off, to emulate the behavior of the real * utf8_to_uvchr(), try again, allowing anything. (Note a return of 0 is * ok if the input was '\0') */ if (UNLIKELY(ret == 0 && (curlen == 0 || *s != '\0'))) { /* If curlen is 0, we already handled the case where warnings are * disabled, so this 'if' will be true, and we won't look at the * contents of 's' */ if (do_warnings) { *retlen = (STRLEN) -1; } else { ret = _ppport_utf8_to_uvchr_buf_callee( s, curlen, retlen, UTF8_ALLOW_ANY); /* Override with the REPLACEMENT character, as that is what the * modern version of this function returns */ ret = UNICODE_REPLACEMENT; # if (PERL_BCDVERSION < 0x5016000) /* Versions earlier than this don't necessarily return the proper * length. It should not extend past the end of string, nor past * what the first byte indicates the length is, nor past the * continuation characters */ if (retlen && *retlen >= 0) { *retlen = _ppport_MIN(*retlen, curlen); *retlen = _ppport_MIN(*retlen, UTF8SKIP(s)); unsigned int i = 1; do { if (s[i] < 0x80 || s[i] > 0xBF) { *retlen = i; break; } } while (++i < *retlen); } # endif } } return ret; } # endif #endif #endif #if defined(UTF8SKIP) && defined(utf8_to_uvchr_buf) #undef utf8_to_uvchr /* Always redefine this unsafe function so that it refuses to read past a NUL, making it much less likely to read off the end of the buffer. A NUL indicates the start of the next character anyway. If the input isn't NUL-terminated, the function remains unsafe, as it always has been. */ #ifndef utf8_to_uvchr # define utf8_to_uvchr(s, lp) \ ((*(s) == '\0') \ ? utf8_to_uvchr_buf(s,((s)+1), lp) /* Handle single NUL specially */ \ : utf8_to_uvchr_buf(s, (s) + my_strnlen((char *) (s), UTF8SKIP(s)), (lp))) #endif #endif #ifdef HAS_MEMCMP #ifndef memNE # define memNE(s1,s2,l) (memcmp(s1,s2,l)) #endif #ifndef memEQ # define memEQ(s1,s2,l) (!memcmp(s1,s2,l)) #endif #else #ifndef memNE # define memNE(s1,s2,l) (bcmp(s1,s2,l)) #endif #ifndef memEQ # define memEQ(s1,s2,l) (!bcmp(s1,s2,l)) #endif #endif #ifndef memEQs # define memEQs(s1, l, s2) \ (sizeof(s2)-1 == l && memEQ(s1, (s2 ""), (sizeof(s2)-1))) #endif #ifndef memNEs # define memNEs(s1, l, s2) !memEQs(s1, l, s2) #endif #ifndef MoveD # define MoveD(s,d,n,t) memmove((char*)(d),(char*)(s), (n) * sizeof(t)) #endif #ifndef CopyD # define CopyD(s,d,n,t) memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) #endif #ifdef HAS_MEMSET #ifndef ZeroD # define ZeroD(d,n,t) memzero((char*)(d), (n) * sizeof(t)) #endif #else #ifndef ZeroD # define ZeroD(d,n,t) ((void)memzero((char*)(d), (n) * sizeof(t)), d) #endif #endif #ifndef PoisonWith # define PoisonWith(d,n,t,b) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t)) #endif #ifndef PoisonNew # define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB) #endif #ifndef PoisonFree # define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF) #endif #ifndef Poison # define Poison(d,n,t) PoisonFree(d,n,t) #endif #ifndef Newx # define Newx(v,n,t) New(0,v,n,t) #endif #ifndef Newxc # define Newxc(v,n,t,c) Newc(0,v,n,t,c) #endif #ifndef Newxz # define Newxz(v,n,t) Newz(0,v,n,t) #endif #ifndef PERL_MAGIC_sv # define PERL_MAGIC_sv '\0' #endif #ifndef PERL_MAGIC_overload # define PERL_MAGIC_overload 'A' #endif #ifndef PERL_MAGIC_overload_elem # define PERL_MAGIC_overload_elem 'a' #endif #ifndef PERL_MAGIC_overload_table # define PERL_MAGIC_overload_table 'c' #endif #ifndef PERL_MAGIC_bm # define PERL_MAGIC_bm 'B' #endif #ifndef PERL_MAGIC_regdata # define PERL_MAGIC_regdata 'D' #endif #ifndef PERL_MAGIC_regdatum # define PERL_MAGIC_regdatum 'd' #endif #ifndef PERL_MAGIC_env # define PERL_MAGIC_env 'E' #endif #ifndef PERL_MAGIC_envelem # define PERL_MAGIC_envelem 'e' #endif #ifndef PERL_MAGIC_fm # define PERL_MAGIC_fm 'f' #endif #ifndef PERL_MAGIC_regex_global # define PERL_MAGIC_regex_global 'g' #endif #ifndef PERL_MAGIC_isa # define PERL_MAGIC_isa 'I' #endif #ifndef PERL_MAGIC_isaelem # define PERL_MAGIC_isaelem 'i' #endif #ifndef PERL_MAGIC_nkeys # define PERL_MAGIC_nkeys 'k' #endif #ifndef PERL_MAGIC_dbfile # define PERL_MAGIC_dbfile 'L' #endif #ifndef PERL_MAGIC_dbline # define PERL_MAGIC_dbline 'l' #endif #ifndef PERL_MAGIC_mutex # define PERL_MAGIC_mutex 'm' #endif #ifndef PERL_MAGIC_shared # define PERL_MAGIC_shared 'N' #endif #ifndef PERL_MAGIC_shared_scalar # define PERL_MAGIC_shared_scalar 'n' #endif #ifndef PERL_MAGIC_collxfrm # define PERL_MAGIC_collxfrm 'o' #endif #ifndef PERL_MAGIC_tied # define PERL_MAGIC_tied 'P' #endif #ifndef PERL_MAGIC_tiedelem # define PERL_MAGIC_tiedelem 'p' #endif #ifndef PERL_MAGIC_tiedscalar # define PERL_MAGIC_tiedscalar 'q' #endif #ifndef PERL_MAGIC_qr # define PERL_MAGIC_qr 'r' #endif #ifndef PERL_MAGIC_sig # define PERL_MAGIC_sig 'S' #endif #ifndef PERL_MAGIC_sigelem # define PERL_MAGIC_sigelem 's' #endif #ifndef PERL_MAGIC_taint # define PERL_MAGIC_taint 't' #endif #ifndef PERL_MAGIC_uvar # define PERL_MAGIC_uvar 'U' #endif #ifndef PERL_MAGIC_uvar_elem # define PERL_MAGIC_uvar_elem 'u' #endif #ifndef PERL_MAGIC_vstring # define PERL_MAGIC_vstring 'V' #endif #ifndef PERL_MAGIC_vec # define PERL_MAGIC_vec 'v' #endif #ifndef PERL_MAGIC_utf8 # define PERL_MAGIC_utf8 'w' #endif #ifndef PERL_MAGIC_substr # define PERL_MAGIC_substr 'x' #endif #ifndef PERL_MAGIC_defelem # define PERL_MAGIC_defelem 'y' #endif #ifndef PERL_MAGIC_glob # define PERL_MAGIC_glob '*' #endif #ifndef PERL_MAGIC_arylen # define PERL_MAGIC_arylen '#' #endif #ifndef PERL_MAGIC_pos # define PERL_MAGIC_pos '.' #endif #ifndef PERL_MAGIC_backref # define PERL_MAGIC_backref '<' #endif #ifndef PERL_MAGIC_ext # define PERL_MAGIC_ext '~' #endif #ifdef NEED_mess_sv #define NEED_mess #endif #ifdef NEED_mess #define NEED_mess_nocontext #define NEED_vmess #endif #ifndef croak_sv #if (PERL_BCDVERSION >= 0x5007003) || ( (PERL_BCDVERSION >= 0x5006001) && (PERL_BCDVERSION < 0x5007000) ) # if ( (PERL_BCDVERSION >= 0x5008000) && (PERL_BCDVERSION < 0x5008009) ) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5010001) ) # define D_PPP_FIX_UTF8_ERRSV(errsv, sv) \ STMT_START { \ if (sv != errsv) \ SvFLAGS(errsv) = (SvFLAGS(errsv) & ~SVf_UTF8) | \ (SvFLAGS(sv) & SVf_UTF8); \ } STMT_END # else # define D_PPP_FIX_UTF8_ERRSV(errsv, sv) STMT_START {} STMT_END # endif # define croak_sv(sv) \ STMT_START { \ if (SvROK(sv)) { \ sv_setsv(ERRSV, sv); \ croak(NULL); \ } else { \ D_PPP_FIX_UTF8_ERRSV(ERRSV, sv); \ croak("%" SVf, SVfARG(sv)); \ } \ } STMT_END #elif (PERL_BCDVERSION >= 0x5004000) # define croak_sv(sv) croak("%" SVf, SVfARG(sv)) #else # define croak_sv(sv) croak("%s", SvPV_nolen(sv)) #endif #endif #ifndef die_sv #if defined(NEED_die_sv) static OP * DPPP_(my_die_sv)(pTHX_ SV *sv); static #else extern OP * DPPP_(my_die_sv)(pTHX_ SV *sv); #endif #if defined(NEED_die_sv) || defined(NEED_die_sv_GLOBAL) #ifdef die_sv # undef die_sv #endif #define die_sv(a) DPPP_(my_die_sv)(aTHX_ a) #define Perl_die_sv DPPP_(my_die_sv) OP * DPPP_(my_die_sv)(pTHX_ SV *sv) { croak_sv(sv); return (OP *)NULL; } #endif #endif #ifndef warn_sv #if (PERL_BCDVERSION >= 0x5004000) # define warn_sv(sv) warn("%" SVf, SVfARG(sv)) #else # define warn_sv(sv) warn("%s", SvPV_nolen(sv)) #endif #endif #ifndef vmess #if defined(NEED_vmess) static SV * DPPP_(my_vmess)(pTHX_ const char * pat, va_list * args); static #else extern SV * DPPP_(my_vmess)(pTHX_ const char * pat, va_list * args); #endif #if defined(NEED_vmess) || defined(NEED_vmess_GLOBAL) #ifdef vmess # undef vmess #endif #define vmess(a,b) DPPP_(my_vmess)(aTHX_ a,b) #define Perl_vmess DPPP_(my_vmess) SV* DPPP_(my_vmess)(pTHX_ const char* pat, va_list* args) { mess(pat, args); return PL_mess_sv; } #endif #endif #if (PERL_BCDVERSION < 0x5006000) #undef mess #endif #if !defined(mess_nocontext) && !defined(Perl_mess_nocontext) #if defined(NEED_mess_nocontext) static SV * DPPP_(my_mess_nocontext)(const char * pat, ...); static #else extern SV * DPPP_(my_mess_nocontext)(const char * pat, ...); #endif #if defined(NEED_mess_nocontext) || defined(NEED_mess_nocontext_GLOBAL) #define mess_nocontext DPPP_(my_mess_nocontext) #define Perl_mess_nocontext DPPP_(my_mess_nocontext) SV* DPPP_(my_mess_nocontext)(const char* pat, ...) { dTHX; SV *sv; va_list args; va_start(args, pat); sv = vmess(pat, &args); va_end(args); return sv; } #endif #endif #ifndef mess #if defined(NEED_mess) static SV * DPPP_(my_mess)(pTHX_ const char * pat, ...); static #else extern SV * DPPP_(my_mess)(pTHX_ const char * pat, ...); #endif #if defined(NEED_mess) || defined(NEED_mess_GLOBAL) #define Perl_mess DPPP_(my_mess) SV* DPPP_(my_mess)(pTHX_ const char* pat, ...) { SV *sv; va_list args; va_start(args, pat); sv = vmess(pat, &args); va_end(args); return sv; } #ifdef mess_nocontext #define mess mess_nocontext #else #define mess Perl_mess_nocontext #endif #endif #endif #ifndef mess_sv #if defined(NEED_mess_sv) static SV * DPPP_(my_mess_sv)(pTHX_ SV * basemsg, bool consume); static #else extern SV * DPPP_(my_mess_sv)(pTHX_ SV * basemsg, bool consume); #endif #if defined(NEED_mess_sv) || defined(NEED_mess_sv_GLOBAL) #ifdef mess_sv # undef mess_sv #endif #define mess_sv(a,b) DPPP_(my_mess_sv)(aTHX_ a,b) #define Perl_mess_sv DPPP_(my_mess_sv) SV * DPPP_(my_mess_sv)(pTHX_ SV *basemsg, bool consume) { SV *tmp; SV *ret; if (SvPOK(basemsg) && SvCUR(basemsg) && *(SvEND(basemsg)-1) == '\n') { if (consume) return basemsg; ret = mess(""); SvSetSV_nosteal(ret, basemsg); return ret; } if (consume) { sv_catsv(basemsg, mess("")); return basemsg; } ret = mess(""); tmp = newSVsv(ret); SvSetSV_nosteal(ret, basemsg); sv_catsv(ret, tmp); sv_dec(tmp); return ret; } #endif #endif #ifndef warn_nocontext #define warn_nocontext warn #endif #ifndef croak_nocontext #define croak_nocontext croak #endif #ifndef croak_no_modify #define croak_no_modify() croak_nocontext("%s", PL_no_modify) #define Perl_croak_no_modify() croak_no_modify() #endif #ifndef croak_memory_wrap #if (PERL_BCDVERSION >= 0x5009002) || ( (PERL_BCDVERSION >= 0x5008006) && (PERL_BCDVERSION < 0x5009000) ) # define croak_memory_wrap() croak_nocontext("%s", PL_memory_wrap) #else # define croak_memory_wrap() croak_nocontext("panic: memory wrap") #endif #endif #ifndef croak_xs_usage #if defined(NEED_croak_xs_usage) static void DPPP_(my_croak_xs_usage)(const CV * const cv, const char * const params); static #else extern void DPPP_(my_croak_xs_usage)(const CV * const cv, const char * const params); #endif #if defined(NEED_croak_xs_usage) || defined(NEED_croak_xs_usage_GLOBAL) #define croak_xs_usage DPPP_(my_croak_xs_usage) #define Perl_croak_xs_usage DPPP_(my_croak_xs_usage) #ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE #define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params) #endif void DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params) { dTHX; const GV *const gv = CvGV(cv); PERL_ARGS_ASSERT_CROAK_XS_USAGE; if (gv) { const char *const gvname = GvNAME(gv); const HV *const stash = GvSTASH(gv); const char *const hvname = stash ? HvNAME(stash) : NULL; if (hvname) croak("Usage: %s::%s(%s)", hvname, gvname, params); else croak("Usage: %s(%s)", gvname, params); } else { /* Pants. I don't think that it should be possible to get here. */ croak("Usage: CODE(0x%" UVxf ")(%s)", PTR2UV(cv), params); } } #endif #endif #ifndef PERL_SIGNALS_UNSAFE_FLAG #define PERL_SIGNALS_UNSAFE_FLAG 0x0001 #if (PERL_BCDVERSION < 0x5008000) # define D_PPP_PERL_SIGNALS_INIT PERL_SIGNALS_UNSAFE_FLAG #else # define D_PPP_PERL_SIGNALS_INIT 0 #endif #if defined(NEED_PL_signals) static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; #elif defined(NEED_PL_signals_GLOBAL) U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; #else extern U32 DPPP_(my_PL_signals); #endif #define PL_signals DPPP_(my_PL_signals) #endif /* Hint: PL_ppaddr * Calling an op via PL_ppaddr requires passing a context argument * for threaded builds. Since the context argument is different for * 5.005 perls, you can use aTHXR (supplied by dbipport.h), which will * automatically be defined as the correct argument. */ #if (PERL_BCDVERSION <= 0x5005005) /* Replace: 1 */ # define PL_ppaddr ppaddr # define PL_no_modify no_modify /* Replace: 0 */ #endif #if (PERL_BCDVERSION <= 0x5004005) /* Replace: 1 */ # define PL_DBsignal DBsignal # define PL_DBsingle DBsingle # define PL_DBsub DBsub # define PL_DBtrace DBtrace # define PL_Sv Sv # define PL_bufend bufend # define PL_bufptr bufptr # define PL_compiling compiling # define PL_copline copline # define PL_curcop curcop # define PL_curstash curstash # define PL_debstash debstash # define PL_defgv defgv # define PL_diehook diehook # define PL_dirty dirty # define PL_dowarn dowarn # define PL_errgv errgv # define PL_error_count error_count # define PL_expect expect # define PL_hexdigit hexdigit # define PL_hints hints # define PL_in_my in_my # define PL_laststatval laststatval # define PL_lex_state lex_state # define PL_lex_stuff lex_stuff # define PL_linestr linestr # define PL_na na # define PL_perl_destruct_level perl_destruct_level # define PL_perldb perldb # define PL_rsfp_filters rsfp_filters # define PL_rsfp rsfp # define PL_stack_base stack_base # define PL_stack_sp stack_sp # define PL_statcache statcache # define PL_stdingv stdingv # define PL_sv_arenaroot sv_arenaroot # define PL_sv_no sv_no # define PL_sv_undef sv_undef # define PL_sv_yes sv_yes # define PL_tainted tainted # define PL_tainting tainting # define PL_tokenbuf tokenbuf /* Replace: 0 */ #endif /* Warning: PL_parser * For perl versions earlier than 5.9.5, this is an always * non-NULL dummy. Also, it cannot be dereferenced. Don't * use it if you can avoid is and unless you absolutely know * what you're doing. * If you always check that PL_parser is non-NULL, you can * define DPPP_PL_parser_NO_DUMMY to avoid the creation of * a dummy parser structure. */ #if (PERL_BCDVERSION >= 0x5009005) # ifdef DPPP_PL_parser_NO_DUMMY # define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ (croak("panic: PL_parser == NULL in %s:%d", \ __FILE__, __LINE__), (yy_parser *) NULL))->var) # else # ifdef DPPP_PL_parser_NO_DUMMY_WARNING # define D_PPP_parser_dummy_warning(var) # else # define D_PPP_parser_dummy_warning(var) \ warn("warning: dummy PL_" #var " used in %s:%d", __FILE__, __LINE__), # endif # define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ (D_PPP_parser_dummy_warning(var) &DPPP_(dummy_PL_parser)))->var) #if defined(NEED_PL_parser) static yy_parser DPPP_(dummy_PL_parser); #elif defined(NEED_PL_parser_GLOBAL) yy_parser DPPP_(dummy_PL_parser); #else extern yy_parser DPPP_(dummy_PL_parser); #endif # endif /* PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf depends on PL_parser */ /* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf * Do not use this variable unless you know exactly what you're * doing. It is internal to the perl parser and may change or even * be removed in the future. As of perl 5.9.5, you have to check * for (PL_parser != NULL) for this variable to have any effect. * An always non-NULL PL_parser dummy is provided for earlier * perl versions. * If PL_parser is NULL when you try to access this variable, a * dummy is being accessed instead and a warning is issued unless * you define DPPP_PL_parser_NO_DUMMY_WARNING. * If DPPP_PL_parser_NO_DUMMY is defined, the code trying to access * this variable will croak with a panic message. */ # define PL_expect D_PPP_my_PL_parser_var(expect) # define PL_copline D_PPP_my_PL_parser_var(copline) # define PL_rsfp D_PPP_my_PL_parser_var(rsfp) # define PL_rsfp_filters D_PPP_my_PL_parser_var(rsfp_filters) # define PL_linestr D_PPP_my_PL_parser_var(linestr) # define PL_bufptr D_PPP_my_PL_parser_var(bufptr) # define PL_bufend D_PPP_my_PL_parser_var(bufend) # define PL_lex_state D_PPP_my_PL_parser_var(lex_state) # define PL_lex_stuff D_PPP_my_PL_parser_var(lex_stuff) # define PL_tokenbuf D_PPP_my_PL_parser_var(tokenbuf) # define PL_in_my D_PPP_my_PL_parser_var(in_my) # define PL_in_my_stash D_PPP_my_PL_parser_var(in_my_stash) # define PL_error_count D_PPP_my_PL_parser_var(error_count) #else /* ensure that PL_parser != NULL and cannot be dereferenced */ # define PL_parser ((void *) 1) #endif #ifndef mPUSHs # define mPUSHs(s) PUSHs(sv_2mortal(s)) #endif #ifndef PUSHmortal # define PUSHmortal PUSHs(sv_newmortal()) #endif #ifndef mPUSHp # define mPUSHp(p,l) sv_setpvn(PUSHmortal, (p), (l)) #endif #ifndef mPUSHn # define mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n)) #endif #ifndef mPUSHi # define mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i)) #endif #ifndef mPUSHu # define mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u)) #endif #ifndef mXPUSHs # define mXPUSHs(s) XPUSHs(sv_2mortal(s)) #endif #ifndef XPUSHmortal # define XPUSHmortal XPUSHs(sv_newmortal()) #endif #ifndef mXPUSHp # define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END #endif #ifndef mXPUSHn # define mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END #endif #ifndef mXPUSHi # define mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END #endif #ifndef mXPUSHu # define mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END #endif /* Replace: 1 */ #ifndef call_sv # define call_sv perl_call_sv #endif #ifndef call_pv # define call_pv perl_call_pv #endif #ifndef call_argv # define call_argv perl_call_argv #endif #ifndef call_method # define call_method perl_call_method #endif #ifndef eval_sv # define eval_sv perl_eval_sv #endif /* Replace: 0 */ #ifndef PERL_LOADMOD_DENY # define PERL_LOADMOD_DENY 0x1 #endif #ifndef PERL_LOADMOD_NOIMPORT # define PERL_LOADMOD_NOIMPORT 0x2 #endif #ifndef PERL_LOADMOD_IMPORT_OPS # define PERL_LOADMOD_IMPORT_OPS 0x4 #endif #ifndef G_METHOD # define G_METHOD 64 # ifdef call_sv # undef call_sv # endif # if (PERL_BCDVERSION < 0x5006000) # define call_sv(sv, flags) ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \ (flags) & ~G_METHOD) : perl_call_sv(sv, flags)) # else # define call_sv(sv, flags) ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \ (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags)) # endif #endif /* Replace perl_eval_pv with eval_pv */ #ifndef eval_pv #if defined(NEED_eval_pv) static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); static #else extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); #endif #if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL) #ifdef eval_pv # undef eval_pv #endif #define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b) #define Perl_eval_pv DPPP_(my_eval_pv) SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error) { dSP; SV* sv = newSVpv(p, 0); PUSHMARK(sp); eval_sv(sv, G_SCALAR); SvREFCNT_dec(sv); SPAGAIN; sv = POPs; PUTBACK; if (croak_on_error && SvTRUEx(ERRSV)) croak_sv(ERRSV); return sv; } #endif #endif #ifndef vload_module #if defined(NEED_vload_module) static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); static #else extern void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); #endif #if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL) #ifdef vload_module # undef vload_module #endif #define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d) #define Perl_vload_module DPPP_(my_vload_module) void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args) { dTHR; dVAR; OP *veop, *imop; OP * const modname = newSVOP(OP_CONST, 0, name); /* 5.005 has a somewhat hacky force_normal that doesn't croak on SvREADONLY() if PL_compling is true. Current perls take care in ck_require() to correctly turn off SvREADONLY before calling force_normal_flags(). This seems a better fix than fudging PL_compling */ SvREADONLY_off(((SVOP*)modname)->op_sv); modname->op_private |= OPpCONST_BARE; if (ver) { veop = newSVOP(OP_CONST, 0, ver); } else veop = NULL; if (flags & PERL_LOADMOD_NOIMPORT) { imop = sawparens(newNULLLIST()); } else if (flags & PERL_LOADMOD_IMPORT_OPS) { imop = va_arg(*args, OP*); } else { SV *sv; imop = NULL; sv = va_arg(*args, SV*); while (sv) { imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv)); sv = va_arg(*args, SV*); } } { const line_t ocopline = PL_copline; COP * const ocurcop = PL_curcop; const int oexpect = PL_expect; #if (PERL_BCDVERSION >= 0x5004000) utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0), veop, modname, imop); #elif (PERL_BCDVERSION > 0x5003000) utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(), veop, modname, imop); #else utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(), modname, imop); #endif PL_expect = oexpect; PL_copline = ocopline; PL_curcop = ocurcop; } } #endif #endif #ifndef load_module #if defined(NEED_load_module) static void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); static #else extern void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); #endif #if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL) #ifdef load_module # undef load_module #endif #define load_module DPPP_(my_load_module) #define Perl_load_module DPPP_(my_load_module) void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...) { va_list args; va_start(args, ver); vload_module(flags, name, ver, &args); va_end(args); } #endif #endif #ifndef newRV_inc # define newRV_inc(sv) newRV(sv) /* Replace */ #endif #ifndef newRV_noinc #if defined(NEED_newRV_noinc) static SV * DPPP_(my_newRV_noinc)(SV *sv); static #else extern SV * DPPP_(my_newRV_noinc)(SV *sv); #endif #if defined(NEED_newRV_noinc) || defined(NEED_newRV_noinc_GLOBAL) #ifdef newRV_noinc # undef newRV_noinc #endif #define newRV_noinc(a) DPPP_(my_newRV_noinc)(aTHX_ a) #define Perl_newRV_noinc DPPP_(my_newRV_noinc) SV * DPPP_(my_newRV_noinc)(SV *sv) { SV *rv = (SV *)newRV(sv); SvREFCNT_dec(sv); return rv; } #endif #endif /* Hint: newCONSTSUB * Returns a CV* as of perl-5.7.1. This return value is not supported * by Devel::PPPort. */ /* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */ #if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005) #if defined(NEED_newCONSTSUB) static void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); static #else extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); #endif #if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL) #ifdef newCONSTSUB # undef newCONSTSUB #endif #define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c) #define Perl_newCONSTSUB DPPP_(my_newCONSTSUB) /* This is just a trick to avoid a dependency of newCONSTSUB on PL_parser */ /* (There's no PL_parser in perl < 5.005, so this is completely safe) */ #define D_PPP_PL_copline PL_copline void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv) { U32 oldhints = PL_hints; HV *old_cop_stash = PL_curcop->cop_stash; HV *old_curstash = PL_curstash; line_t oldline = PL_curcop->cop_line; PL_curcop->cop_line = D_PPP_PL_copline; PL_hints &= ~HINT_BLOCK_SCOPE; if (stash) PL_curstash = PL_curcop->cop_stash = stash; newSUB( #if (PERL_BCDVERSION < 0x5003022) start_subparse(), #elif (PERL_BCDVERSION == 0x5003022) start_subparse(0), #else /* 5.003_23 onwards */ start_subparse(FALSE, 0), #endif newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)), newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */ newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) ); PL_hints = oldhints; PL_curcop->cop_stash = old_cop_stash; PL_curstash = old_curstash; PL_curcop->cop_line = oldline; } #endif #endif /* * Boilerplate macros for initializing and accessing interpreter-local * data from C. All statics in extensions should be reworked to use * this, if you want to make the extension thread-safe. See ext/re/re.xs * for an example of the use of these macros. * * Code that uses these macros is responsible for the following: * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts" * 2. Declare a typedef named my_cxt_t that is a structure that contains * all the data that needs to be interpreter-local. * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t. * 4. Use the MY_CXT_INIT macro such that it is called exactly once * (typically put in the BOOT: section). * 5. Use the members of the my_cxt_t structure everywhere as * MY_CXT.member. * 6. Use the dMY_CXT macro (a declaration) in all the functions that * access MY_CXT. */ #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \ defined(PERL_CAPI) || defined(PERL_IMPLICIT_CONTEXT) #ifndef START_MY_CXT /* This must appear in all extensions that define a my_cxt_t structure, * right after the definition (i.e. at file scope). The non-threads * case below uses it to declare the data as static. */ #define START_MY_CXT #if (PERL_BCDVERSION < 0x5004068) /* Fetches the SV that keeps the per-interpreter data. */ #define dMY_CXT_SV \ SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE) #else /* >= perl5.004_68 */ #define dMY_CXT_SV \ SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY, \ sizeof(MY_CXT_KEY)-1, TRUE) #endif /* < perl5.004_68 */ /* This declaration should be used within all functions that use the * interpreter-local data. */ #define dMY_CXT \ dMY_CXT_SV; \ my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv)) /* Creates and zeroes the per-interpreter data. * (We allocate my_cxtp in a Perl SV so that it will be released when * the interpreter goes away.) */ #define MY_CXT_INIT \ dMY_CXT_SV; \ /* newSV() allocates one more than needed */ \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ Zero(my_cxtp, 1, my_cxt_t); \ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) /* This macro must be used to access members of the my_cxt_t structure. * e.g. MYCXT.some_data */ #define MY_CXT (*my_cxtp) /* Judicious use of these macros can reduce the number of times dMY_CXT * is used. Use is similar to pTHX, aTHX etc. */ #define pMY_CXT my_cxt_t *my_cxtp #define pMY_CXT_ pMY_CXT, #define _pMY_CXT ,pMY_CXT #define aMY_CXT my_cxtp #define aMY_CXT_ aMY_CXT, #define _aMY_CXT ,aMY_CXT #endif /* START_MY_CXT */ #ifndef MY_CXT_CLONE /* Clones the per-interpreter data. */ #define MY_CXT_CLONE \ dMY_CXT_SV; \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) #endif #else /* single interpreter */ #ifndef START_MY_CXT #define START_MY_CXT static my_cxt_t my_cxt; #define dMY_CXT_SV dNOOP #define dMY_CXT dNOOP #define MY_CXT_INIT NOOP #define MY_CXT my_cxt #define pMY_CXT void #define pMY_CXT_ #define _pMY_CXT #define aMY_CXT #define aMY_CXT_ #define _aMY_CXT #endif /* START_MY_CXT */ #ifndef MY_CXT_CLONE #define MY_CXT_CLONE NOOP #endif #endif #ifndef IVdf # if IVSIZE == LONGSIZE # define IVdf "ld" # define UVuf "lu" # define UVof "lo" # define UVxf "lx" # define UVXf "lX" # elif IVSIZE == INTSIZE # define IVdf "d" # define UVuf "u" # define UVof "o" # define UVxf "x" # define UVXf "X" # else # error "cannot define IV/UV formats" # endif #endif #ifndef NVef # if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \ defined(PERL_PRIfldbl) && (PERL_BCDVERSION != 0x5006000) /* Not very likely, but let's try anyway. */ # define NVef PERL_PRIeldbl # define NVff PERL_PRIfldbl # define NVgf PERL_PRIgldbl # else # define NVef "e" # define NVff "f" # define NVgf "g" # endif #endif #ifndef SvREFCNT_inc # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) \ (SvREFCNT(_sv))++; \ _sv; \ }) # else # define SvREFCNT_inc(sv) \ ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL) # endif #endif #ifndef SvREFCNT_inc_simple # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc_simple(sv) \ ({ \ if (sv) \ (SvREFCNT(sv))++; \ (SV *)(sv); \ }) # else # define SvREFCNT_inc_simple(sv) \ ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL) # endif #endif #ifndef SvREFCNT_inc_NN # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc_NN(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ SvREFCNT(_sv)++; \ _sv; \ }) # else # define SvREFCNT_inc_NN(sv) \ (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv) # endif #endif #ifndef SvREFCNT_inc_void # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc_void(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) \ (void)(SvREFCNT(_sv)++); \ }) # else # define SvREFCNT_inc_void(sv) \ (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0) # endif #endif #ifndef SvREFCNT_inc_simple_void # define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END #endif #ifndef SvREFCNT_inc_simple_NN # define SvREFCNT_inc_simple_NN(sv) (++SvREFCNT(sv), (SV*)(sv)) #endif #ifndef SvREFCNT_inc_void_NN # define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) #endif #ifndef SvREFCNT_inc_simple_void_NN # define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) #endif #ifndef newSV_type #if defined(NEED_newSV_type) static SV* DPPP_(my_newSV_type)(pTHX_ svtype const t); static #else extern SV* DPPP_(my_newSV_type)(pTHX_ svtype const t); #endif #if defined(NEED_newSV_type) || defined(NEED_newSV_type_GLOBAL) #ifdef newSV_type # undef newSV_type #endif #define newSV_type(a) DPPP_(my_newSV_type)(aTHX_ a) #define Perl_newSV_type DPPP_(my_newSV_type) SV* DPPP_(my_newSV_type)(pTHX_ svtype const t) { SV* const sv = newSV(0); sv_upgrade(sv, t); return sv; } #endif #endif #if (PERL_BCDVERSION < 0x5006000) # define D_PPP_CONSTPV_ARG(x) ((char *) (x)) #else # define D_PPP_CONSTPV_ARG(x) (x) #endif #ifndef newSVpvn # define newSVpvn(data,len) ((data) \ ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ : newSV(0)) #endif #ifndef newSVpvn_utf8 # define newSVpvn_utf8(s, len, u) newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0) #endif #ifndef SVf_UTF8 # define SVf_UTF8 0 #endif #ifndef newSVpvn_flags #if defined(NEED_newSVpvn_flags) static SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags); static #else extern SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags); #endif #if defined(NEED_newSVpvn_flags) || defined(NEED_newSVpvn_flags_GLOBAL) #ifdef newSVpvn_flags # undef newSVpvn_flags #endif #define newSVpvn_flags(a,b,c) DPPP_(my_newSVpvn_flags)(aTHX_ a,b,c) #define Perl_newSVpvn_flags DPPP_(my_newSVpvn_flags) SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags) { SV *sv = newSVpvn(D_PPP_CONSTPV_ARG(s), len); SvFLAGS(sv) |= (flags & SVf_UTF8); return (flags & SVs_TEMP) ? sv_2mortal(sv) : sv; } #endif #endif /* Backwards compatibility stuff... :-( */ #if !defined(NEED_sv_2pv_flags) && defined(NEED_sv_2pv_nolen) # define NEED_sv_2pv_flags #endif #if !defined(NEED_sv_2pv_flags_GLOBAL) && defined(NEED_sv_2pv_nolen_GLOBAL) # define NEED_sv_2pv_flags_GLOBAL #endif /* Hint: sv_2pv_nolen * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen(). */ #ifndef sv_2pv_nolen # define sv_2pv_nolen(sv) SvPV_nolen(sv) #endif #ifdef SvPVbyte /* Hint: SvPVbyte * Does not work in perl-5.6.1, dbipport.h implements a version * borrowed from perl-5.7.3. */ #if (PERL_BCDVERSION < 0x5007000) #if defined(NEED_sv_2pvbyte) static char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp); static #else extern char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp); #endif #if defined(NEED_sv_2pvbyte) || defined(NEED_sv_2pvbyte_GLOBAL) #ifdef sv_2pvbyte # undef sv_2pvbyte #endif #define sv_2pvbyte(a,b) DPPP_(my_sv_2pvbyte)(aTHX_ a,b) #define Perl_sv_2pvbyte DPPP_(my_sv_2pvbyte) char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp) { sv_utf8_downgrade(sv,0); return SvPV(sv,*lp); } #endif /* Hint: sv_2pvbyte * Use the SvPVbyte() macro instead of sv_2pvbyte(). */ #undef SvPVbyte #define SvPVbyte(sv, lp) \ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp)) #endif #else # define SvPVbyte SvPV # define sv_2pvbyte sv_2pv #endif #ifndef sv_2pvbyte_nolen # define sv_2pvbyte_nolen(sv) sv_2pv_nolen(sv) #endif /* Hint: sv_pvn * Always use the SvPV() macro instead of sv_pvn(). */ /* Hint: sv_pvn_force * Always use the SvPV_force() macro instead of sv_pvn_force(). */ /* If these are undefined, they're not handled by the core anyway */ #ifndef SV_IMMEDIATE_UNREF # define SV_IMMEDIATE_UNREF 0 #endif #ifndef SV_GMAGIC # define SV_GMAGIC 0 #endif #ifndef SV_COW_DROP_PV # define SV_COW_DROP_PV 0 #endif #ifndef SV_UTF8_NO_ENCODING # define SV_UTF8_NO_ENCODING 0 #endif #ifndef SV_NOSTEAL # define SV_NOSTEAL 0 #endif #ifndef SV_CONST_RETURN # define SV_CONST_RETURN 0 #endif #ifndef SV_MUTABLE_RETURN # define SV_MUTABLE_RETURN 0 #endif #ifndef SV_SMAGIC # define SV_SMAGIC 0 #endif #ifndef SV_HAS_TRAILING_NUL # define SV_HAS_TRAILING_NUL 0 #endif #ifndef SV_COW_SHARED_HASH_KEYS # define SV_COW_SHARED_HASH_KEYS 0 #endif #if (PERL_BCDVERSION < 0x5007002) #if defined(NEED_sv_2pv_flags) static char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); static #else extern char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); #endif #if defined(NEED_sv_2pv_flags) || defined(NEED_sv_2pv_flags_GLOBAL) #ifdef sv_2pv_flags # undef sv_2pv_flags #endif #define sv_2pv_flags(a,b,c) DPPP_(my_sv_2pv_flags)(aTHX_ a,b,c) #define Perl_sv_2pv_flags DPPP_(my_sv_2pv_flags) char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) { STRLEN n_a = (STRLEN) flags; return sv_2pv(sv, lp ? lp : &n_a); } #endif #if defined(NEED_sv_pvn_force_flags) static char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); static #else extern char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); #endif #if defined(NEED_sv_pvn_force_flags) || defined(NEED_sv_pvn_force_flags_GLOBAL) #ifdef sv_pvn_force_flags # undef sv_pvn_force_flags #endif #define sv_pvn_force_flags(a,b,c) DPPP_(my_sv_pvn_force_flags)(aTHX_ a,b,c) #define Perl_sv_pvn_force_flags DPPP_(my_sv_pvn_force_flags) char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) { STRLEN n_a = (STRLEN) flags; return sv_pvn_force(sv, lp ? lp : &n_a); } #endif #endif #if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) ) # define D_PPP_SVPV_NOLEN_LP_ARG &PL_na #else # define D_PPP_SVPV_NOLEN_LP_ARG 0 #endif #ifndef SvPV_const # define SvPV_const(sv, lp) SvPV_flags_const(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_mutable # define SvPV_mutable(sv, lp) SvPV_flags_mutable(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_flags # define SvPV_flags(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags)) #endif #ifndef SvPV_flags_const # define SvPV_flags_const(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \ (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN)) #endif #ifndef SvPV_flags_const_nolen # define SvPV_flags_const_nolen(sv, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX_const(sv) : \ (const char*) sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN)) #endif #ifndef SvPV_flags_mutable # define SvPV_flags_mutable(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \ sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) #endif #ifndef SvPV_force # define SvPV_force(sv, lp) SvPV_force_flags(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_force_nolen # define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC) #endif #ifndef SvPV_force_mutable # define SvPV_force_mutable(sv, lp) SvPV_force_flags_mutable(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_force_nomg # define SvPV_force_nomg(sv, lp) SvPV_force_flags(sv, lp, 0) #endif #ifndef SvPV_force_nomg_nolen # define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0) #endif #ifndef SvPV_force_flags # define SvPV_force_flags(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags)) #endif #ifndef SvPV_force_flags_nolen # define SvPV_force_flags_nolen(sv, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? SvPVX(sv) : sv_pvn_force_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, flags)) #endif #ifndef SvPV_force_flags_mutable # define SvPV_force_flags_mutable(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \ : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) #endif #ifndef SvPV_nolen # define SvPV_nolen(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC)) #endif #ifndef SvPV_nolen_const # define SvPV_nolen_const(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX_const(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN)) #endif #ifndef SvPV_nomg # define SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0) #endif #ifndef SvPV_nomg_const # define SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0) #endif #ifndef SvPV_nomg_const_nolen # define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0) #endif #ifndef SvPV_nomg_nolen # define SvPV_nomg_nolen(sv) ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, 0)) #endif #ifndef SvPV_renew # define SvPV_renew(sv,n) STMT_START { SvLEN_set(sv, n); \ SvPV_set((sv), (char *) saferealloc( \ (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \ } STMT_END #endif #ifndef SvMAGIC_set # define SvMAGIC_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END #endif #if (PERL_BCDVERSION < 0x5009003) #ifndef SvPVX_const # define SvPVX_const(sv) ((const char*) (0 + SvPVX(sv))) #endif #ifndef SvPVX_mutable # define SvPVX_mutable(sv) (0 + SvPVX(sv)) #endif #ifndef SvRV_set # define SvRV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END #endif #else #ifndef SvPVX_const # define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) #endif #ifndef SvPVX_mutable # define SvPVX_mutable(sv) ((sv)->sv_u.svu_pv) #endif #ifndef SvRV_set # define SvRV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ ((sv)->sv_u.svu_rv = (val)); } STMT_END #endif #endif #ifndef SvSTASH_set # define SvSTASH_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END #endif #if (PERL_BCDVERSION < 0x5004000) #ifndef SvUV_set # define SvUV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END #endif #else #ifndef SvUV_set # define SvUV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END #endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf) #if defined(NEED_vnewSVpvf) static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args); static #else extern SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args); #endif #if defined(NEED_vnewSVpvf) || defined(NEED_vnewSVpvf_GLOBAL) #ifdef vnewSVpvf # undef vnewSVpvf #endif #define vnewSVpvf(a,b) DPPP_(my_vnewSVpvf)(aTHX_ a,b) #define Perl_vnewSVpvf DPPP_(my_vnewSVpvf) SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args) { register SV *sv = newSV(0); sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); return sv; } #endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf) # define sv_vcatpvf(sv, pat, args) sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf) # define sv_vsetpvf(sv, pat, args) sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg) #if defined(NEED_sv_catpvf_mg) static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...); static #else extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...); #endif #if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL) #define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg) void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...) { va_list args; va_start(args, pat); sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #ifdef PERL_IMPLICIT_CONTEXT #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext) #if defined(NEED_sv_catpvf_mg_nocontext) static void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...); static #else extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...); #endif #if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL) #define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) #define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...) { dTHX; va_list args; va_start(args, pat); sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #endif /* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */ #ifndef sv_catpvf_mg # ifdef PERL_IMPLICIT_CONTEXT # define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext # else # define sv_catpvf_mg Perl_sv_catpvf_mg # endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg) # define sv_vcatpvf_mg(sv, pat, args) \ STMT_START { \ sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ SvSETMAGIC(sv); \ } STMT_END #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg) #if defined(NEED_sv_setpvf_mg) static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...); static #else extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...); #endif #if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL) #define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg) void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...) { va_list args; va_start(args, pat); sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #ifdef PERL_IMPLICIT_CONTEXT #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext) #if defined(NEED_sv_setpvf_mg_nocontext) static void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...); static #else extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...); #endif #if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL) #define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) #define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...) { dTHX; va_list args; va_start(args, pat); sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #endif /* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */ #ifndef sv_setpvf_mg # ifdef PERL_IMPLICIT_CONTEXT # define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext # else # define sv_setpvf_mg Perl_sv_setpvf_mg # endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf_mg) # define sv_vsetpvf_mg(sv, pat, args) \ STMT_START { \ sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ SvSETMAGIC(sv); \ } STMT_END #endif /* Hint: newSVpvn_share * The SVs created by this function only mimic the behaviour of * shared PVs without really being shared. Only use if you know * what you're doing. */ #ifndef newSVpvn_share #if defined(NEED_newSVpvn_share) static SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); static #else extern SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); #endif #if defined(NEED_newSVpvn_share) || defined(NEED_newSVpvn_share_GLOBAL) #ifdef newSVpvn_share # undef newSVpvn_share #endif #define newSVpvn_share(a,b,c) DPPP_(my_newSVpvn_share)(aTHX_ a,b,c) #define Perl_newSVpvn_share DPPP_(my_newSVpvn_share) SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash) { SV *sv; if (len < 0) len = -len; if (!hash) PERL_HASH(hash, (char*) src, len); sv = newSVpvn((char *) src, len); sv_upgrade(sv, SVt_PVIV); SvIVX(sv) = hash; SvREADONLY_on(sv); SvPOK_on(sv); return sv; } #endif #endif #ifndef SvSHARED_HASH # define SvSHARED_HASH(sv) (0 + SvUVX(sv)) #endif #ifndef HvNAME_get # define HvNAME_get(hv) HvNAME(hv) #endif #ifndef HvNAMELEN_get # define HvNAMELEN_get(hv) (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0) #endif #ifndef gv_fetchpvn_flags #if defined(NEED_gv_fetchpvn_flags) static GV* DPPP_(my_gv_fetchpvn_flags)(pTHX_ const char* name, STRLEN len, int flags, int types); static #else extern GV* DPPP_(my_gv_fetchpvn_flags)(pTHX_ const char* name, STRLEN len, int flags, int types); #endif #if defined(NEED_gv_fetchpvn_flags) || defined(NEED_gv_fetchpvn_flags_GLOBAL) #ifdef gv_fetchpvn_flags # undef gv_fetchpvn_flags #endif #define gv_fetchpvn_flags(a,b,c,d) DPPP_(my_gv_fetchpvn_flags)(aTHX_ a,b,c,d) #define Perl_gv_fetchpvn_flags DPPP_(my_gv_fetchpvn_flags) GV* DPPP_(my_gv_fetchpvn_flags)(pTHX_ const char* name, STRLEN len, int flags, int types) { char *namepv = savepvn(name, len); GV* stash = gv_fetchpv(namepv, TRUE, SVt_PVHV); Safefree(namepv); return stash; } #endif #endif #ifndef GvSVn # define GvSVn(gv) GvSV(gv) #endif #ifndef isGV_with_GP # define isGV_with_GP(gv) isGV(gv) #endif #ifndef gv_fetchsv # define gv_fetchsv(name, flags, svt) gv_fetchpv(SvPV_nolen_const(name), flags, svt) #endif #ifndef get_cvn_flags # define get_cvn_flags(name, namelen, flags) get_cv(name, flags) #endif #ifndef gv_init_pvn # define gv_init_pvn(gv, stash, ptr, len, flags) gv_init(gv, stash, ptr, len, flags & GV_ADDMULTI ? TRUE : FALSE) #endif /* concatenating with "" ensures that only literal strings are accepted as argument * note that STR_WITH_LEN() can't be used as argument to macros or functions that * under some configurations might be macros */ #ifndef STR_WITH_LEN # define STR_WITH_LEN(s) (s ""), (sizeof(s)-1) #endif #ifndef newSVpvs # define newSVpvs(str) newSVpvn(str "", sizeof(str) - 1) #endif #ifndef newSVpvs_flags # define newSVpvs_flags(str, flags) newSVpvn_flags(str "", sizeof(str) - 1, flags) #endif #ifndef newSVpvs_share # define newSVpvs_share(str) newSVpvn_share(str "", sizeof(str) - 1, 0) #endif #ifndef sv_catpvs # define sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1) #endif #ifndef sv_setpvs # define sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1) #endif #ifndef hv_fetchs # define hv_fetchs(hv, key, lval) hv_fetch(hv, key "", sizeof(key) - 1, lval) #endif #ifndef hv_stores # define hv_stores(hv, key, val) hv_store(hv, key "", sizeof(key) - 1, val, 0) #endif #ifndef gv_fetchpvs # define gv_fetchpvs(name, flags, svt) gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt) #endif #ifndef gv_stashpvs # define gv_stashpvs(name, flags) gv_stashpvn(name "", sizeof(name) - 1, flags) #endif #ifndef get_cvs # define get_cvs(name, flags) get_cvn_flags(name "", sizeof(name)-1, flags) #endif #ifndef SvGETMAGIC # define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END #endif /* That's the best we can do... */ #ifndef sv_catpvn_nomg # define sv_catpvn_nomg sv_catpvn #endif #ifndef sv_catsv_nomg # define sv_catsv_nomg sv_catsv #endif #ifndef sv_setsv_nomg # define sv_setsv_nomg sv_setsv #endif #ifndef sv_pvn_nomg # define sv_pvn_nomg sv_pvn #endif #ifndef SvIV_nomg # define SvIV_nomg SvIV #endif #ifndef SvUV_nomg # define SvUV_nomg SvUV #endif #ifndef sv_catpv_mg # define sv_catpv_mg(sv, ptr) \ STMT_START { \ SV *TeMpSv = sv; \ sv_catpv(TeMpSv,ptr); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_catpvn_mg # define sv_catpvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_catpvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_catsv_mg # define sv_catsv_mg(dsv, ssv) \ STMT_START { \ SV *TeMpSv = dsv; \ sv_catsv(TeMpSv,ssv); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setiv_mg # define sv_setiv_mg(sv, i) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setiv(TeMpSv,i); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setnv_mg # define sv_setnv_mg(sv, num) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setnv(TeMpSv,num); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setpv_mg # define sv_setpv_mg(sv, ptr) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setpv(TeMpSv,ptr); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setpvn_mg # define sv_setpvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setpvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setsv_mg # define sv_setsv_mg(dsv, ssv) \ STMT_START { \ SV *TeMpSv = dsv; \ sv_setsv(TeMpSv,ssv); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setuv_mg # define sv_setuv_mg(sv, i) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setuv(TeMpSv,i); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_usepvn_mg # define sv_usepvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_usepvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef SvVSTRING_mg # define SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL) #endif /* Hint: sv_magic_portable * This is a compatibility function that is only available with * Devel::PPPort. It is NOT in the perl core. * Its purpose is to mimic the 5.8.0 behaviour of sv_magic() when * it is being passed a name pointer with namlen == 0. In that * case, perl 5.8.0 and later store the pointer, not a copy of it. * The compatibility can be provided back to perl 5.004. With * earlier versions, the code will not compile. */ #if (PERL_BCDVERSION < 0x5004000) /* code that uses sv_magic_portable will not compile */ #elif (PERL_BCDVERSION < 0x5008000) # define sv_magic_portable(sv, obj, how, name, namlen) \ STMT_START { \ SV *SvMp_sv = (sv); \ char *SvMp_name = (char *) (name); \ I32 SvMp_namlen = (namlen); \ if (SvMp_name && SvMp_namlen == 0) \ { \ MAGIC *mg; \ sv_magic(SvMp_sv, obj, how, 0, 0); \ mg = SvMAGIC(SvMp_sv); \ mg->mg_len = -42; /* XXX: this is the tricky part */ \ mg->mg_ptr = SvMp_name; \ } \ else \ { \ sv_magic(SvMp_sv, obj, how, SvMp_name, SvMp_namlen); \ } \ } STMT_END #else # define sv_magic_portable(a, b, c, d, e) sv_magic(a, b, c, d, e) #endif #if !defined(mg_findext) #if defined(NEED_mg_findext) static MAGIC * DPPP_(my_mg_findext)(SV * sv, int type, const MGVTBL *vtbl); static #else extern MAGIC * DPPP_(my_mg_findext)(SV * sv, int type, const MGVTBL *vtbl); #endif #if defined(NEED_mg_findext) || defined(NEED_mg_findext_GLOBAL) #define mg_findext DPPP_(my_mg_findext) #define Perl_mg_findext DPPP_(my_mg_findext) MAGIC * DPPP_(my_mg_findext)(SV * sv, int type, const MGVTBL *vtbl) { if (sv) { MAGIC *mg; #ifdef AvPAD_NAMELIST assert(!(SvTYPE(sv) == SVt_PVAV && AvPAD_NAMELIST(sv))); #endif for (mg = SvMAGIC (sv); mg; mg = mg->mg_moremagic) { if (mg->mg_type == type && mg->mg_virtual == vtbl) return mg; } } return NULL; } #endif #endif #if !defined(sv_unmagicext) #if defined(NEED_sv_unmagicext) static int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl); static #else extern int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl); #endif #if defined(NEED_sv_unmagicext) || defined(NEED_sv_unmagicext_GLOBAL) #ifdef sv_unmagicext # undef sv_unmagicext #endif #define sv_unmagicext(a,b,c) DPPP_(my_sv_unmagicext)(aTHX_ a,b,c) #define Perl_sv_unmagicext DPPP_(my_sv_unmagicext) int DPPP_(my_sv_unmagicext)(pTHX_ SV *const sv, const int type, MGVTBL *vtbl) { MAGIC* mg; MAGIC** mgp; if (SvTYPE(sv) < SVt_PVMG || !SvMAGIC(sv)) return 0; mgp = &(SvMAGIC(sv)); for (mg = *mgp; mg; mg = *mgp) { const MGVTBL* const virt = mg->mg_virtual; if (mg->mg_type == type && virt == vtbl) { *mgp = mg->mg_moremagic; if (virt && virt->svt_free) virt->svt_free(aTHX_ sv, mg); if (mg->mg_ptr && mg->mg_type != PERL_MAGIC_regex_global) { if (mg->mg_len > 0) Safefree(mg->mg_ptr); else if (mg->mg_len == HEf_SVKEY) /* Questionable on older perls... */ SvREFCNT_dec(MUTABLE_SV(mg->mg_ptr)); else if (mg->mg_type == PERL_MAGIC_utf8) Safefree(mg->mg_ptr); } if (mg->mg_flags & MGf_REFCOUNTED) SvREFCNT_dec(mg->mg_obj); Safefree(mg); } else mgp = &mg->mg_moremagic; } if (SvMAGIC(sv)) { if (SvMAGICAL(sv)) /* if we're under save_magic, wait for restore_magic; */ mg_magical(sv); /* else fix the flags now */ } else { SvMAGICAL_off(sv); SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT; } return 0; } #endif #endif #ifdef USE_ITHREADS #ifndef CopFILE # define CopFILE(c) ((c)->cop_file) #endif #ifndef CopFILEGV # define CopFILEGV(c) (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv) #endif #ifndef CopFILE_set # define CopFILE_set(c,pv) ((c)->cop_file = savepv(pv)) #endif #ifndef CopFILESV # define CopFILESV(c) (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv) #endif #ifndef CopFILEAV # define CopFILEAV(c) (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav) #endif #ifndef CopSTASHPV # define CopSTASHPV(c) ((c)->cop_stashpv) #endif #ifndef CopSTASHPV_set # define CopSTASHPV_set(c,pv) ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch)) #endif #ifndef CopSTASH # define CopSTASH(c) (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv) #endif #ifndef CopSTASH_set # define CopSTASH_set(c,hv) CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch) #endif #ifndef CopSTASH_eq # define CopSTASH_eq(c,hv) ((hv) && (CopSTASHPV(c) == HvNAME(hv) \ || (CopSTASHPV(c) && HvNAME(hv) \ && strEQ(CopSTASHPV(c), HvNAME(hv))))) #endif #else #ifndef CopFILEGV # define CopFILEGV(c) ((c)->cop_filegv) #endif #ifndef CopFILEGV_set # define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) #endif #ifndef CopFILE_set # define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) #endif #ifndef CopFILESV # define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv) #endif #ifndef CopFILEAV # define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav) #endif #ifndef CopFILE # define CopFILE(c) (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch) #endif #ifndef CopSTASH # define CopSTASH(c) ((c)->cop_stash) #endif #ifndef CopSTASH_set # define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) #endif #ifndef CopSTASHPV # define CopSTASHPV(c) (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch) #endif #ifndef CopSTASHPV_set # define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD)) #endif #ifndef CopSTASH_eq # define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv)) #endif #endif /* USE_ITHREADS */ #if (PERL_BCDVERSION >= 0x5006000) #ifndef caller_cx # if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL) static I32 DPPP_dopoptosub_at(const PERL_CONTEXT *cxstk, I32 startingblock) { I32 i; for (i = startingblock; i >= 0; i--) { register const PERL_CONTEXT * const cx = &cxstk[i]; switch (CxTYPE(cx)) { default: continue; case CXt_EVAL: case CXt_SUB: case CXt_FORMAT: return i; } } return i; } # endif # if defined(NEED_caller_cx) static const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp); static #else extern const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp); #endif #if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL) #ifdef caller_cx # undef caller_cx #endif #define caller_cx(a,b) DPPP_(my_caller_cx)(aTHX_ a,b) #define Perl_caller_cx DPPP_(my_caller_cx) const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp) { register I32 cxix = DPPP_dopoptosub_at(cxstack, cxstack_ix); register const PERL_CONTEXT *cx; register const PERL_CONTEXT *ccstack = cxstack; const PERL_SI *top_si = PL_curstackinfo; for (;;) { /* we may be in a higher stacklevel, so dig down deeper */ while (cxix < 0 && top_si->si_type != PERLSI_MAIN) { top_si = top_si->si_prev; ccstack = top_si->si_cxstack; cxix = DPPP_dopoptosub_at(ccstack, top_si->si_cxix); } if (cxix < 0) return NULL; /* caller() should not report the automatic calls to &DB::sub */ if (PL_DBsub && GvCV(PL_DBsub) && cxix >= 0 && ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub)) count++; if (!count--) break; cxix = DPPP_dopoptosub_at(ccstack, cxix - 1); } cx = &ccstack[cxix]; if (dbcxp) *dbcxp = cx; if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) { const I32 dbcxix = DPPP_dopoptosub_at(ccstack, cxix - 1); /* We expect that ccstack[dbcxix] is CXt_SUB, anyway, the field below is defined for any cx. */ /* caller() should not report the automatic calls to &DB::sub */ if (PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub)) cx = &ccstack[dbcxix]; } return cx; } # endif #endif /* caller_cx */ #endif /* 5.6.0 */ #ifndef IN_PERL_COMPILETIME # define IN_PERL_COMPILETIME (PL_curcop == &PL_compiling) #endif #ifndef IN_LOCALE_RUNTIME # define IN_LOCALE_RUNTIME (PL_curcop->op_private & HINT_LOCALE) #endif #ifndef IN_LOCALE_COMPILETIME # define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE) #endif #ifndef IN_LOCALE # define IN_LOCALE (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME) #endif #ifndef IS_NUMBER_IN_UV # define IS_NUMBER_IN_UV 0x01 #endif #ifndef IS_NUMBER_GREATER_THAN_UV_MAX # define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 #endif #ifndef IS_NUMBER_NOT_INT # define IS_NUMBER_NOT_INT 0x04 #endif #ifndef IS_NUMBER_NEG # define IS_NUMBER_NEG 0x08 #endif #ifndef IS_NUMBER_INFINITY # define IS_NUMBER_INFINITY 0x10 #endif #ifndef IS_NUMBER_NAN # define IS_NUMBER_NAN 0x20 #endif #ifndef GROK_NUMERIC_RADIX # define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send) #endif #ifndef PERL_SCAN_GREATER_THAN_UV_MAX # define PERL_SCAN_GREATER_THAN_UV_MAX 0x02 #endif #ifndef PERL_SCAN_SILENT_ILLDIGIT # define PERL_SCAN_SILENT_ILLDIGIT 0x04 #endif #ifndef PERL_SCAN_ALLOW_UNDERSCORES # define PERL_SCAN_ALLOW_UNDERSCORES 0x01 #endif #ifndef PERL_SCAN_DISALLOW_PREFIX # define PERL_SCAN_DISALLOW_PREFIX 0x02 #endif #ifndef grok_numeric_radix #if defined(NEED_grok_numeric_radix) static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); static #else extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); #endif #if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL) #ifdef grok_numeric_radix # undef grok_numeric_radix #endif #define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b) #define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix) bool DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send) { #ifdef USE_LOCALE_NUMERIC #ifdef PL_numeric_radix_sv if (PL_numeric_radix_sv && IN_LOCALE) { STRLEN len; char* radix = SvPV(PL_numeric_radix_sv, len); if (*sp + len <= send && memEQ(*sp, radix, len)) { *sp += len; return TRUE; } } #else /* older perls don't have PL_numeric_radix_sv so the radix * must manually be requested from locale.h */ #include dTHR; /* needed for older threaded perls */ struct lconv *lc = localeconv(); char *radix = lc->decimal_point; if (radix && IN_LOCALE) { STRLEN len = strlen(radix); if (*sp + len <= send && memEQ(*sp, radix, len)) { *sp += len; return TRUE; } } #endif #endif /* USE_LOCALE_NUMERIC */ /* always try "." if numeric radix didn't match because * we may have data from different locales mixed */ if (*sp < send && **sp == '.') { ++*sp; return TRUE; } return FALSE; } #endif #endif #ifndef grok_number #if defined(NEED_grok_number) static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); static #else extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); #endif #if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL) #ifdef grok_number # undef grok_number #endif #define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c) #define Perl_grok_number DPPP_(my_grok_number) int DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep) { const char *s = pv; const char *send = pv + len; const UV max_div_10 = UV_MAX / 10; const char max_mod_10 = UV_MAX % 10; int numtype = 0; int sawinf = 0; int sawnan = 0; while (s < send && isSPACE(*s)) s++; if (s == send) { return 0; } else if (*s == '-') { s++; numtype = IS_NUMBER_NEG; } else if (*s == '+') s++; if (s == send) return 0; /* next must be digit or the radix separator or beginning of infinity */ if (isDIGIT(*s)) { /* UVs are at least 32 bits, so the first 9 decimal digits cannot overflow. */ UV value = *s - '0'; /* This construction seems to be more optimiser friendly. (without it gcc does the isDIGIT test and the *s - '0' separately) With it gcc on arm is managing 6 instructions (6 cycles) per digit. In theory the optimiser could deduce how far to unroll the loop before checking for overflow. */ if (++s < send) { int digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { /* Now got 9 digits, so need to check each time for overflow. */ digit = *s - '0'; while (digit >= 0 && digit <= 9 && (value < max_div_10 || (value == max_div_10 && digit <= max_mod_10))) { value = value * 10 + digit; if (++s < send) digit = *s - '0'; else break; } if (digit >= 0 && digit <= 9 && (s < send)) { /* value overflowed. skip the remaining digits, don't worry about setting *valuep. */ do { s++; } while (s < send && isDIGIT(*s)); numtype |= IS_NUMBER_GREATER_THAN_UV_MAX; goto skip_value; } } } } } } } } } } } } } } } } } } numtype |= IS_NUMBER_IN_UV; if (valuep) *valuep = value; skip_value: if (GROK_NUMERIC_RADIX(&s, send)) { numtype |= IS_NUMBER_NOT_INT; while (s < send && isDIGIT(*s)) /* optional digits after the radix */ s++; } } else if (GROK_NUMERIC_RADIX(&s, send)) { numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */ /* no digits before the radix means we need digits after it */ if (s < send && isDIGIT(*s)) { do { s++; } while (s < send && isDIGIT(*s)); if (valuep) { /* integer approximation is valid - it's 0. */ *valuep = 0; } } else return 0; } else if (*s == 'I' || *s == 'i') { s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; if (s == send || (*s != 'F' && *s != 'f')) return 0; s++; if (s < send && (*s == 'I' || *s == 'i')) { s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; if (s == send || (*s != 'I' && *s != 'i')) return 0; s++; if (s == send || (*s != 'T' && *s != 't')) return 0; s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0; s++; } sawinf = 1; } else if (*s == 'N' || *s == 'n') { /* XXX TODO: There are signaling NaNs and quiet NaNs. */ s++; if (s == send || (*s != 'A' && *s != 'a')) return 0; s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; sawnan = 1; } else return 0; if (sawinf) { numtype &= IS_NUMBER_NEG; /* Keep track of sign */ numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT; } else if (sawnan) { numtype &= IS_NUMBER_NEG; /* Keep track of sign */ numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT; } else if (s < send) { /* we can have an optional exponent part */ if (*s == 'e' || *s == 'E') { /* The only flag we keep is sign. Blow away any "it's UV" */ numtype &= IS_NUMBER_NEG; numtype |= IS_NUMBER_NOT_INT; s++; if (s < send && (*s == '-' || *s == '+')) s++; if (s < send && isDIGIT(*s)) { do { s++; } while (s < send && isDIGIT(*s)); } else return 0; } } while (s < send && isSPACE(*s)) s++; if (s >= send) return numtype; if (len == 10 && memEQ(pv, "0 but true", 10)) { if (valuep) *valuep = 0; return IS_NUMBER_IN_UV; } return 0; } #endif #endif /* * The grok_* routines have been modified to use warn() instead of * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit, * which is why the stack variable has been renamed to 'xdigit'. */ #ifndef grok_bin #if defined(NEED_grok_bin) static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); static #else extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); #endif #if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL) #ifdef grok_bin # undef grok_bin #endif #define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d) #define Perl_grok_bin DPPP_(my_grok_bin) UV DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_2 = UV_MAX / 2; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { /* strip off leading b or 0b. for compatibility silently suffer "b" and "0b" as valid binary numbers. */ if (len >= 1) { if (s[0] == 'b') { s++; len--; } else if (len >= 2 && s[0] == '0' && s[1] == 'b') { s+=2; len-=2; } } } for (; len-- && *s; s++) { char bit = *s; if (bit == '0' || bit == '1') { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. With gcc seems to be much straighter code than old scan_bin. */ redo: if (!overflowed) { if (value <= max_div_2) { value = (value << 1) | (bit - '0'); continue; } /* Bah. We're just overflowed. */ warn("Integer overflow in binary number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 2.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount. */ value_nv += (NV)(bit - '0'); continue; } if (bit == '_' && len && allow_underscores && (bit = s[1]) && (bit == '0' || bit == '1')) { --len; ++s; goto redo; } if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal binary digit '%c' ignored", *s); break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Binary number > 0b11111111111111111111111111111111 non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #ifndef grok_hex #if defined(NEED_grok_hex) static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); static #else extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); #endif #if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL) #ifdef grok_hex # undef grok_hex #endif #define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d) #define Perl_grok_hex DPPP_(my_grok_hex) UV DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_16 = UV_MAX / 16; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; const char *xdigit; if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { /* strip off leading x or 0x. for compatibility silently suffer "x" and "0x" as valid hex numbers. */ if (len >= 1) { if (s[0] == 'x') { s++; len--; } else if (len >= 2 && s[0] == '0' && s[1] == 'x') { s+=2; len-=2; } } } for (; len-- && *s; s++) { xdigit = strchr((char *) PL_hexdigit, *s); if (xdigit) { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. With gcc seems to be much straighter code than old scan_hex. */ redo: if (!overflowed) { if (value <= max_div_16) { value = (value << 4) | ((xdigit - PL_hexdigit) & 15); continue; } warn("Integer overflow in hexadecimal number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 16.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount of 16-tuples. */ value_nv += (NV)((xdigit - PL_hexdigit) & 15); continue; } if (*s == '_' && len && allow_underscores && s[1] && (xdigit = strchr((char *) PL_hexdigit, s[1]))) { --len; ++s; goto redo; } if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal hexadecimal digit '%c' ignored", *s); break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Hexadecimal number > 0xffffffff non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #ifndef grok_oct #if defined(NEED_grok_oct) static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); static #else extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); #endif #if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL) #ifdef grok_oct # undef grok_oct #endif #define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d) #define Perl_grok_oct DPPP_(my_grok_oct) UV DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_8 = UV_MAX / 8; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; for (; len-- && *s; s++) { /* gcc 2.95 optimiser not smart enough to figure that this subtraction out front allows slicker code. */ int digit = *s - '0'; if (digit >= 0 && digit <= 7) { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. */ redo: if (!overflowed) { if (value <= max_div_8) { value = (value << 3) | digit; continue; } /* Bah. We're just overflowed. */ warn("Integer overflow in octal number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 8.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount of 8-tuples. */ value_nv += (NV)digit; continue; } if (digit == ('_' - '0') && len && allow_underscores && (digit = s[1] - '0') && (digit >= 0 && digit <= 7)) { --len; ++s; goto redo; } /* Allow \octal to work the DWIM way (that is, stop scanning * as soon as non-octal characters are seen, complain only iff * someone seems to want to use the digits eight and nine). */ if (digit == 8 || digit == 9) { if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal octal digit '%c' ignored", *s); } break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Octal number > 037777777777 non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #if !defined(my_snprintf) #if defined(NEED_my_snprintf) static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); static #else extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); #endif #if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL) #define my_snprintf DPPP_(my_my_snprintf) #define Perl_my_snprintf DPPP_(my_my_snprintf) int DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...) { dTHX; int retval; va_list ap; va_start(ap, format); #ifdef HAS_VSNPRINTF retval = vsnprintf(buffer, len, format, ap); #else retval = vsprintf(buffer, format, ap); #endif va_end(ap); if (retval < 0 || (len > 0 && (Size_t)retval >= len)) Perl_croak(aTHX_ "panic: my_snprintf buffer overflow"); return retval; } #endif #endif #if !defined(my_sprintf) #if defined(NEED_my_sprintf) static int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); static #else extern int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); #endif #if defined(NEED_my_sprintf) || defined(NEED_my_sprintf_GLOBAL) #define my_sprintf DPPP_(my_my_sprintf) #define Perl_my_sprintf DPPP_(my_my_sprintf) int DPPP_(my_my_sprintf)(char *buffer, const char* pat, ...) { va_list args; va_start(args, pat); vsprintf(buffer, pat, args); va_end(args); return strlen(buffer); } #endif #endif #ifdef NO_XSLOCKS # ifdef dJMPENV # define dXCPT dJMPENV; int rEtV = 0 # define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0) # define XCPT_TRY_END JMPENV_POP; # define XCPT_CATCH if (rEtV != 0) # define XCPT_RETHROW JMPENV_JUMP(rEtV) # else # define dXCPT Sigjmp_buf oldTOP; int rEtV = 0 # define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0) # define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf); # define XCPT_CATCH if (rEtV != 0) # define XCPT_RETHROW Siglongjmp(top_env, rEtV) # endif #endif #if !defined(my_strlcat) #if defined(NEED_my_strlcat) static Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); static #else extern Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); #endif #if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL) #define my_strlcat DPPP_(my_my_strlcat) #define Perl_my_strlcat DPPP_(my_my_strlcat) Size_t DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size) { Size_t used, length, copy; used = strlen(dst); length = strlen(src); if (size > 0 && used < size - 1) { copy = (length >= size - used) ? size - used - 1 : length; memcpy(dst + used, src, copy); dst[used + copy] = '\0'; } return used + length; } #endif #endif #if !defined(my_strlcpy) #if defined(NEED_my_strlcpy) static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); static #else extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); #endif #if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL) #define my_strlcpy DPPP_(my_my_strlcpy) #define Perl_my_strlcpy DPPP_(my_my_strlcpy) Size_t DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size) { Size_t length, copy; length = strlen(src); if (size > 0) { copy = (length >= size) ? size - 1 : length; memcpy(dst, src, copy); dst[copy] = '\0'; } return length; } #endif #endif #ifndef PERL_PV_ESCAPE_QUOTE # define PERL_PV_ESCAPE_QUOTE 0x0001 #endif #ifndef PERL_PV_PRETTY_QUOTE # define PERL_PV_PRETTY_QUOTE PERL_PV_ESCAPE_QUOTE #endif #ifndef PERL_PV_PRETTY_ELLIPSES # define PERL_PV_PRETTY_ELLIPSES 0x0002 #endif #ifndef PERL_PV_PRETTY_LTGT # define PERL_PV_PRETTY_LTGT 0x0004 #endif #ifndef PERL_PV_ESCAPE_FIRSTCHAR # define PERL_PV_ESCAPE_FIRSTCHAR 0x0008 #endif #ifndef PERL_PV_ESCAPE_UNI # define PERL_PV_ESCAPE_UNI 0x0100 #endif #ifndef PERL_PV_ESCAPE_UNI_DETECT # define PERL_PV_ESCAPE_UNI_DETECT 0x0200 #endif #ifndef PERL_PV_ESCAPE_ALL # define PERL_PV_ESCAPE_ALL 0x1000 #endif #ifndef PERL_PV_ESCAPE_NOBACKSLASH # define PERL_PV_ESCAPE_NOBACKSLASH 0x2000 #endif #ifndef PERL_PV_ESCAPE_NOCLEAR # define PERL_PV_ESCAPE_NOCLEAR 0x4000 #endif #ifndef PERL_PV_ESCAPE_RE # define PERL_PV_ESCAPE_RE 0x8000 #endif #ifndef PERL_PV_PRETTY_NOCLEAR # define PERL_PV_PRETTY_NOCLEAR PERL_PV_ESCAPE_NOCLEAR #endif #ifndef PERL_PV_PRETTY_DUMP # define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE #endif #ifndef PERL_PV_PRETTY_REGPROP # define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE #endif /* Hint: pv_escape * Note that unicode functionality is only backported to * those perl versions that support it. For older perl * versions, the implementation will fall back to bytes. */ #ifndef pv_escape #if defined(NEED_pv_escape) static char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); static #else extern char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); #endif #if defined(NEED_pv_escape) || defined(NEED_pv_escape_GLOBAL) #ifdef pv_escape # undef pv_escape #endif #define pv_escape(a,b,c,d,e,f) DPPP_(my_pv_escape)(aTHX_ a,b,c,d,e,f) #define Perl_pv_escape DPPP_(my_pv_escape) char * DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags) { const char esc = flags & PERL_PV_ESCAPE_RE ? '%' : '\\'; const char dq = flags & PERL_PV_ESCAPE_QUOTE ? '"' : esc; char octbuf[32] = "%123456789ABCDF"; STRLEN wrote = 0; STRLEN chsize = 0; STRLEN readsize = 1; #if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0; #endif const char *pv = str; const char * const end = pv + count; octbuf[0] = esc; if (!(flags & PERL_PV_ESCAPE_NOCLEAR)) sv_setpvs(dsv, ""); #if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count)) isuni = 1; #endif for (; pv < end && (!max || wrote < max) ; pv += readsize) { const UV u = #if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) isuni ? utf8_to_uvchr_buf((U8*)pv, end, &readsize) : #endif (U8)*pv; const U8 c = (U8)u & 0xFF; if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) { if (flags & PERL_PV_ESCAPE_FIRSTCHAR) chsize = my_snprintf(octbuf, sizeof octbuf, "%" UVxf, u); else chsize = my_snprintf(octbuf, sizeof octbuf, "%cx{%" UVxf "}", esc, u); } else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) { chsize = 1; } else { if (c == dq || c == esc || !isPRINT(c)) { chsize = 2; switch (c) { case '\\' : /* fallthrough */ case '%' : if (c == esc) octbuf[1] = esc; else chsize = 1; break; case '\v' : octbuf[1] = 'v'; break; case '\t' : octbuf[1] = 't'; break; case '\r' : octbuf[1] = 'r'; break; case '\n' : octbuf[1] = 'n'; break; case '\f' : octbuf[1] = 'f'; break; case '"' : if (dq == '"') octbuf[1] = '"'; else chsize = 1; break; default: chsize = my_snprintf(octbuf, sizeof octbuf, pv < end && isDIGIT((U8)*(pv+readsize)) ? "%c%03o" : "%c%o", esc, c); } } else { chsize = 1; } } if (max && wrote + chsize > max) { break; } else if (chsize > 1) { sv_catpvn(dsv, octbuf, chsize); wrote += chsize; } else { char tmp[2]; my_snprintf(tmp, sizeof tmp, "%c", c); sv_catpvn(dsv, tmp, 1); wrote++; } if (flags & PERL_PV_ESCAPE_FIRSTCHAR) break; } if (escaped != NULL) *escaped= pv - str; return SvPVX(dsv); } #endif #endif #ifndef pv_pretty #if defined(NEED_pv_pretty) static char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); static #else extern char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); #endif #if defined(NEED_pv_pretty) || defined(NEED_pv_pretty_GLOBAL) #ifdef pv_pretty # undef pv_pretty #endif #define pv_pretty(a,b,c,d,e,f,g) DPPP_(my_pv_pretty)(aTHX_ a,b,c,d,e,f,g) #define Perl_pv_pretty DPPP_(my_pv_pretty) char * DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags) { const U8 dq = (flags & PERL_PV_PRETTY_QUOTE) ? '"' : '%'; STRLEN escaped; if (!(flags & PERL_PV_PRETTY_NOCLEAR)) sv_setpvs(dsv, ""); if (dq == '"') sv_catpvs(dsv, "\""); else if (flags & PERL_PV_PRETTY_LTGT) sv_catpvs(dsv, "<"); if (start_color != NULL) sv_catpv(dsv, D_PPP_CONSTPV_ARG(start_color)); pv_escape(dsv, str, count, max, &escaped, flags | PERL_PV_ESCAPE_NOCLEAR); if (end_color != NULL) sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color)); if (dq == '"') sv_catpvs(dsv, "\""); else if (flags & PERL_PV_PRETTY_LTGT) sv_catpvs(dsv, ">"); if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count) sv_catpvs(dsv, "..."); return SvPVX(dsv); } #endif #endif #ifndef pv_display #if defined(NEED_pv_display) static char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); static #else extern char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); #endif #if defined(NEED_pv_display) || defined(NEED_pv_display_GLOBAL) #ifdef pv_display # undef pv_display #endif #define pv_display(a,b,c,d,e) DPPP_(my_pv_display)(aTHX_ a,b,c,d,e) #define Perl_pv_display DPPP_(my_pv_display) char * DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) { pv_pretty(dsv, pv, cur, pvlim, NULL, NULL, PERL_PV_PRETTY_DUMP); if (len > cur && pv[cur] == '\0') sv_catpvs(dsv, "\\0"); return SvPVX(dsv); } #endif #endif #endif /* _P_P_PORTABILITY_H_ */ /* End of File dbipport.h */ perl5/auto/DBI/Driver.xst000044400000056510152462470720011152 0ustar00# $Id$ # Copyright (c) 1997-2002 Tim Bunce Ireland # Copyright (c) 2002 Jonathan Leffler # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. #include "Driver_xst.h" # Historically dbd_db_do4, dbd_st_execute, and dbd_st_rows returned an 'int' type. # That's only 32 bits (31+sign) so isn't sufficient for very large row counts # So now instead of defining those macros, drivers can define dbd_db_do4_iv, # dbd_st_execute_iv, and dbd_st_rows_iv to be the names of functions that # return an 'IV' type. They could also set DBIc_ROW_COUNT(imp_sth). # # To save a mess of #ifdef's we arrange for dbd_st_execute (etc) to work # as dbd_st_execute_iv if that's defined # #if defined(dbd_st_execute_iv) #undef dbd_st_execute #define dbd_st_execute dbd_st_execute_iv #endif #if defined(dbd_st_rows_iv) #undef dbd_st_rows #define dbd_st_rows dbd_st_rows_iv #endif #if defined(dbd_db_do4_iv) #undef dbd_db_do4 #define dbd_db_do4 dbd_db_do4_iv #endif MODULE = DBD::~DRIVER~ PACKAGE = DBD::~DRIVER~ REQUIRE: 1.929 PROTOTYPES: DISABLE BOOT: PERL_UNUSED_VAR(items); DBISTATE_INIT; /* XXX this interface will change: */ DBI_IMP_SIZE("DBD::~DRIVER~::dr::imp_data_size", sizeof(imp_drh_t)); DBI_IMP_SIZE("DBD::~DRIVER~::db::imp_data_size", sizeof(imp_dbh_t)); DBI_IMP_SIZE("DBD::~DRIVER~::st::imp_data_size", sizeof(imp_sth_t)); dbd_init(DBIS); # ------------------------------------------------------------ # driver level interface # ------------------------------------------------------------ MODULE = DBD::~DRIVER~ PACKAGE = DBD::~DRIVER~::dr void dbixs_revision(...) PPCODE: ST(0) = sv_2mortal(newSViv(DBIXS_REVISION)); #ifdef dbd_discon_all # disconnect_all renamed and ALIAS'd to avoid length clash on VMS :-( bool discon_all_(drh) SV * drh ALIAS: disconnect_all = 1 CODE: D_imp_drh(drh); PERL_UNUSED_VAR(ix); RETVAL = dbd_discon_all(drh, imp_drh); OUTPUT: RETVAL #endif /* dbd_discon_all */ #ifdef dbd_dr_data_sources void data_sources(drh, attr = Nullsv) SV *drh SV *attr PPCODE: { D_imp_drh(drh); AV *av = dbd_dr_data_sources(drh, imp_drh, attr); if (av) { int i; int n = AvFILL(av)+1; EXTEND(sp, n); for (i = 0; i < n; ++i) { PUSHs(AvARRAY(av)[i]); } } } #endif # ------------------------------------------------------------ # database level interface # ------------------------------------------------------------ MODULE = DBD::~DRIVER~ PACKAGE = DBD::~DRIVER~::db bool _login(dbh, dbname, username, password, attribs=Nullsv) SV * dbh SV * dbname SV * username SV * password SV * attribs CODE: { D_imp_dbh(dbh); #if !defined(dbd_db_login6_sv) STRLEN lna; char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)""; char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)""; #endif #ifdef dbd_db_login6_sv RETVAL = dbd_db_login6_sv(dbh, imp_dbh, dbname, username, password, attribs); #elif defined(dbd_db_login6) RETVAL = dbd_db_login6(dbh, imp_dbh, SvPV_nolen(dbname), u, p, attribs); #else PERL_UNUSED_ARG(attribs); RETVAL = dbd_db_login( dbh, imp_dbh, SvPV_nolen(dbname), u, p); #endif } OUTPUT: RETVAL void selectall_arrayref(...) PREINIT: SV *sth; SV **maxrows_svp; SV **tmp_svp; SV *tmp_sv; SV *attr = &PL_sv_undef; imp_sth_t *imp_sth; CODE: if (items > 2) { attr = ST(2); if (SvROK(attr) && (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp)) ) { /* fallback to perl implementation */ SV *tmp =dbixst_bounce_method("DBD::~DRIVER~::db::SUPER::selectall_arrayref", items); SPAGAIN; ST(0) = tmp; XSRETURN(1); } } /* --- prepare --- */ if (SvROK(ST(1))) { MAGIC *mg; sth = ST(1); /* switch to inner handle if not already */ if ( (mg = mg_find(SvRV(sth),'P')) ) sth = mg->mg_obj; } else { sth = dbixst_bounce_method("prepare", 3); SPAGAIN; SP -= items; /* because stack might have been realloc'd */ if (!SvROK(sth)) XSRETURN_UNDEF; /* switch to inner handle */ sth = mg_find(SvRV(sth),'P')->mg_obj; } imp_sth = (imp_sth_t*)(DBIh_COM(sth)); /* --- bind_param --- */ if (items > 3) { /* need to bind params before execute */ if (!dbdxst_bind_params(sth, imp_sth, items-2, ax+2) ) { XSRETURN_UNDEF; } } /* --- execute --- */ DBIc_ROW_COUNT(imp_sth) = 0; if ( dbd_st_execute(sth, imp_sth) <= -2 ) { /* -2 == error */ XSRETURN_UNDEF; } /* --- fetchall --- */ maxrows_svp = DBD_ATTRIB_GET_SVP(attr, "MaxRows", 7); tmp_sv = dbdxst_fetchall_arrayref(sth, &PL_sv_undef, (maxrows_svp) ? *maxrows_svp : &PL_sv_undef); SPAGAIN; ST(0) = tmp_sv; void selectrow_arrayref(...) ALIAS: selectrow_array = 1 PREINIT: int is_selectrow_array = (ix == 1); imp_sth_t *imp_sth; SV *sth; AV *row_av; PPCODE: if (SvROK(ST(1))) { MAGIC *mg; sth = ST(1); /* switch to inner handle if not already */ if ( (mg = mg_find(SvRV(sth),'P')) ) sth = mg->mg_obj; } else { /* --- prepare --- */ sth = dbixst_bounce_method("prepare", 3); SPAGAIN; SP -= items; /* because stack might have been realloc'd */ if (!SvROK(sth)) { if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; } } /* switch to inner handle */ sth = mg_find(SvRV(sth),'P')->mg_obj; } imp_sth = (imp_sth_t*)(DBIh_COM(sth)); /* --- bind_param --- */ if (items > 3) { /* need to bind params before execute */ if (!dbdxst_bind_params(sth, imp_sth, items-2, ax+2) ) { if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; } } } /* --- execute --- */ DBIc_ROW_COUNT(imp_sth) = 0; if ( dbd_st_execute(sth, imp_sth) <= -2 ) { /* -2 == error */ if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; } } /* --- fetchrow_arrayref --- */ row_av = dbd_st_fetch(sth, imp_sth); if (!row_av) { if (GIMME == G_SCALAR) PUSHs(&PL_sv_undef); } else if (is_selectrow_array) { int i; int num_fields = AvFILL(row_av)+1; if (GIMME == G_SCALAR) num_fields = 1; /* return just first field */ EXTEND(sp, num_fields); for(i=0; i < num_fields; ++i) { PUSHs(AvARRAY(row_av)[i]); } } else { PUSHs( sv_2mortal(newRV((SV *)row_av)) ); } /* --- finish --- */ #ifdef dbd_st_finish3 dbd_st_finish3(sth, imp_sth, 0); #else dbd_st_finish(sth, imp_sth); #endif #if defined(dbd_db_do6) || defined(dbd_db_do4) void do(dbh, statement, params = Nullsv, ...) SV * dbh SV * statement SV * params CODE: { D_imp_dbh(dbh); IV retval; #ifdef dbd_db_do6 /* items is a number of arguments passed to XSUB, supplied by xsubpp compiler */ /* ax contains stack base offset used by ST() macro, supplied by xsubpp compiler */ I32 offset = (items >= 3) ? 3 : items; retval = dbd_db_do6(dbh, imp_dbh, statement, params, items-offset, ax+offset); #else if (items > 3) croak_xs_usage(cv, "dbh, statement, params = Nullsv"); retval = dbd_db_do4(dbh, imp_dbh, SvPV_nolen(statement), params); /* might be dbd_db_do4_iv via macro */ #endif /* remember that dbd_db_do* must return <= -2 for error */ if (retval == 0) /* ok with no rows affected */ XST_mPV(0, "0E0"); /* (true but zero) */ else if (retval < -1) /* -1 == unknown number of rows */ XST_mUNDEF(0); /* <= -2 means error */ else XST_mIV(0, retval); /* typically 1, rowcount or -1 */ } #endif #ifdef dbd_db_last_insert_id void last_insert_id(dbh, catalog=&PL_sv_undef, schema=&PL_sv_undef, table=&PL_sv_undef, field=&PL_sv_undef, attr=Nullsv) SV * dbh SV * catalog SV * schema SV * table SV * field SV * attr CODE: { D_imp_dbh(dbh); SV *ret = dbd_db_last_insert_id(dbh, imp_dbh, catalog, schema, table, field, attr); ST(0) = ret; } #endif bool commit(dbh) SV * dbh CODE: D_imp_dbh(dbh); if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh)) warn("commit ineffective with AutoCommit enabled"); RETVAL = dbd_db_commit(dbh, imp_dbh); OUTPUT: RETVAL bool rollback(dbh) SV * dbh CODE: D_imp_dbh(dbh); if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh)) warn("rollback ineffective with AutoCommit enabled"); RETVAL = dbd_db_rollback(dbh, imp_dbh); OUTPUT: RETVAL bool disconnect(dbh) SV * dbh CODE: D_imp_dbh(dbh); if ( !DBIc_ACTIVE(imp_dbh) ) { XSRETURN_YES; } /* Check for disconnect() being called whilst refs to cursors */ /* still exists. This possibly needs some more thought. */ if (DBIc_ACTIVE_KIDS(imp_dbh) && DBIc_WARN(imp_dbh) && !PL_dirty) { STRLEN lna; char *plural = (DBIc_ACTIVE_KIDS(imp_dbh)==1) ? (char*)"" : (char*)"s"; warn("%s->disconnect invalidates %d active statement handle%s %s", SvPV(dbh,lna), (int)DBIc_ACTIVE_KIDS(imp_dbh), plural, "(either destroy statement handles or call finish on them before disconnecting)"); } RETVAL = dbd_db_disconnect(dbh, imp_dbh); DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */ OUTPUT: RETVAL void STORE(dbh, keysv, valuesv) SV * dbh SV * keysv SV * valuesv CODE: D_imp_dbh(dbh); if (SvGMAGICAL(valuesv)) mg_get(valuesv); ST(0) = &PL_sv_yes; if (!dbd_db_STORE_attrib(dbh, imp_dbh, keysv, valuesv)) if (!DBIc_DBISTATE(imp_dbh)->set_attr(dbh, keysv, valuesv)) ST(0) = &PL_sv_no; void FETCH(dbh, keysv) SV * dbh SV * keysv CODE: D_imp_dbh(dbh); SV *valuesv = dbd_db_FETCH_attrib(dbh, imp_dbh, keysv); if (!valuesv) valuesv = DBIc_DBISTATE(imp_dbh)->get_attr(dbh, keysv); ST(0) = valuesv; /* dbd_db_FETCH_attrib did sv_2mortal */ void DESTROY(dbh) SV * dbh PPCODE: /* keep in sync with default DESTROY in DBI.xs */ D_imp_dbh(dbh); ST(0) = &PL_sv_yes; if (!DBIc_IMPSET(imp_dbh)) { /* was never fully set up */ STRLEN lna; if (DBIc_WARN(imp_dbh) && !PL_dirty && DBIc_DBISTATE(imp_dbh)->debug >= 2) PerlIO_printf(DBIc_LOGPIO(imp_dbh), " DESTROY for %s ignored - handle not initialised\n", SvPV(dbh,lna)); } else { if (DBIc_IADESTROY(imp_dbh)) { /* wants ineffective destroy */ DBIc_ACTIVE_off(imp_dbh); if (DBIc_DBISTATE(imp_dbh)->debug) PerlIO_printf(DBIc_LOGPIO(imp_dbh), " DESTROY %s skipped due to InactiveDestroy\n", SvPV_nolen(dbh)); } if (DBIc_ACTIVE(imp_dbh)) { if (!DBIc_has(imp_dbh,DBIcf_AutoCommit)) { /* Application is using transactions and hasn't explicitly disconnected. Some databases will automatically commit on graceful disconnect. Since we're about to gracefully disconnect as part of the DESTROY we want to be sure we're not about to implicitly commit changes that are incomplete and should be rolled back. (The DESTROY may be due to a RaiseError, for example.) So we rollback here. This will be harmless if the application has issued a commit, XXX Could add an attribute flag to indicate that the driver doesn't have this problem. Patches welcome. */ if (DBIc_WARN(imp_dbh) /* only warn if likely to be useful... */ && DBIc_is(imp_dbh, DBIcf_Executed) /* has not just called commit/rollback */ /* && !DBIc_is(imp_dbh, DBIcf_ReadOnly) -- is not read only */ && (!PL_dirty || DBIc_DBISTATE(imp_dbh)->debug >= 3) ) { warn("Issuing rollback() due to DESTROY without explicit disconnect() of %s handle %s", SvPV_nolen(*hv_fetch((HV*)SvRV(dbh), "ImplementorClass", 16, 1)), SvPV_nolen(*hv_fetch((HV*)SvRV(dbh), "Name", 4, 1)) ); } dbd_db_rollback(dbh, imp_dbh); /* ROLLBACK! */ } dbd_db_disconnect(dbh, imp_dbh); DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */ } dbd_db_destroy(dbh, imp_dbh); } #ifdef dbd_take_imp_data void take_imp_data(h) SV * h CODE: D_imp_xxh(h); /* dbd_take_imp_data() returns &sv_no (or other defined but false value) * to indicate "preparations complete, now call SUPER::take_imp_data" for me. * Anything else is returned to the caller via sv_2mortal(sv), typically that * would be &sv_undef for error or an SV holding the imp_data. */ SV *sv = dbd_take_imp_data(h, imp_xxh, NULL); if (SvOK(sv) && !SvTRUE(sv)) { SV *tmp = dbixst_bounce_method("DBD::~DRIVER~::db::SUPER::take_imp_data", items); SPAGAIN; ST(0) = tmp; } else { ST(0) = sv_2mortal(sv); } #endif #ifdef dbd_db_data_sources void data_sources(dbh, attr = Nullsv) SV *dbh SV *attr PPCODE: { D_imp_dbh(dbh); AV *av = dbd_db_data_sources(dbh, imp_dbh, attr); if (av) { int i; int n = AvFILL(av)+1; EXTEND(sp, n); for (i = 0; i < n; ++i) { PUSHs(AvARRAY(av)[i]); } } } #endif # -- end of DBD::~DRIVER~::db # ------------------------------------------------------------ # statement interface # ------------------------------------------------------------ MODULE = DBD::~DRIVER~ PACKAGE = DBD::~DRIVER~::st bool _prepare(sth, statement, attribs=Nullsv) SV * sth SV * statement SV * attribs CODE: { D_imp_sth(sth); DBD_ATTRIBS_CHECK("_prepare", sth, attribs); #ifdef dbd_st_prepare_sv RETVAL = dbd_st_prepare_sv(sth, imp_sth, statement, attribs); #else RETVAL = dbd_st_prepare(sth, imp_sth, SvPV_nolen(statement), attribs); #endif } OUTPUT: RETVAL #ifdef dbd_st_rows void rows(sth) SV * sth CODE: D_imp_sth(sth); XST_mIV(0, dbd_st_rows(sth, imp_sth)); #endif /* dbd_st_rows */ #ifdef dbd_st_bind_col bool bind_col(sth, col, ref, attribs=Nullsv) SV * sth SV * col SV * ref SV * attribs CODE: { IV sql_type = 0; D_imp_sth(sth); if (SvGMAGICAL(ref)) mg_get(ref); if (attribs) { if (SvNIOK(attribs)) { sql_type = SvIV(attribs); attribs = Nullsv; } else { SV **svp; DBD_ATTRIBS_CHECK("bind_col", sth, attribs); /* XXX we should perhaps complain if TYPE is not SvNIOK */ DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type); } } switch(dbd_st_bind_col(sth, imp_sth, col, ref, sql_type, attribs)) { case 2: RETVAL = TRUE; /* job done completely */ break; case 1: /* fallback to DBI default */ RETVAL = DBIc_DBISTATE(imp_sth)->bind_col(sth, col, ref, attribs); break; default: RETVAL = FALSE; /* dbd_st_bind_col has called set_err */ break; } } OUTPUT: RETVAL #endif /* dbd_st_bind_col */ bool bind_param(sth, param, value, attribs=Nullsv) SV * sth SV * param SV * value SV * attribs CODE: { IV sql_type = 0; D_imp_sth(sth); if (SvGMAGICAL(value)) mg_get(value); if (attribs) { if (SvNIOK(attribs)) { sql_type = SvIV(attribs); attribs = Nullsv; } else { SV **svp; DBD_ATTRIBS_CHECK("bind_param", sth, attribs); /* XXX we should perhaps complain if TYPE is not SvNIOK */ DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type); } } RETVAL = dbd_bind_ph(sth, imp_sth, param, value, sql_type, attribs, FALSE, 0); } OUTPUT: RETVAL bool bind_param_inout(sth, param, value_ref, maxlen, attribs=Nullsv) SV * sth SV * param SV * value_ref IV maxlen SV * attribs CODE: { IV sql_type = 0; D_imp_sth(sth); SV *value; if (!SvROK(value_ref) || SvTYPE(SvRV(value_ref)) > SVt_PVMG) croak("bind_param_inout needs a reference to a scalar value"); value = SvRV(value_ref); if (SvREADONLY(value)) croak("Modification of a read-only value attempted"); if (SvGMAGICAL(value)) mg_get(value); if (attribs) { if (SvNIOK(attribs)) { sql_type = SvIV(attribs); attribs = Nullsv; } else { SV **svp; DBD_ATTRIBS_CHECK("bind_param", sth, attribs); DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type); } } RETVAL = dbd_bind_ph(sth, imp_sth, param, value, sql_type, attribs, TRUE, maxlen); } OUTPUT: RETVAL void execute(sth, ...) SV * sth CODE: D_imp_sth(sth); IV retval; if (items > 1) { /* need to bind params */ if (!dbdxst_bind_params(sth, imp_sth, items, ax) ) { XSRETURN_UNDEF; } } /* XXX this code is duplicated in selectrow_arrayref above */ DBIc_ROW_COUNT(imp_sth) = 0; retval = dbd_st_execute(sth, imp_sth); /* might be dbd_st_execute_iv via macro */ /* remember that dbd_st_execute must return <= -2 for error */ if (retval == 0) /* ok with no rows affected */ XST_mPV(0, "0E0"); /* (true but zero) */ else if (retval < -1) /* -1 == unknown number of rows */ XST_mUNDEF(0); /* <= -2 means error */ else XST_mIV(0, retval); /* typically 1, rowcount or -1 */ #ifdef dbd_st_execute_for_fetch void execute_for_fetch(sth, fetch_tuple_sub, tuple_status = Nullsv) SV * sth SV * fetch_tuple_sub SV * tuple_status CODE: { D_imp_sth(sth); SV *ret = dbd_st_execute_for_fetch(sth, imp_sth, fetch_tuple_sub, tuple_status); ST(0) = ret; } #endif #ifdef dbd_st_last_insert_id void last_insert_id(sth, catalog=&PL_sv_undef, schema=&PL_sv_undef, table=&PL_sv_undef, field=&PL_sv_undef, attr=Nullsv) SV * sth SV * catalog SV * schema SV * table SV * field SV * attr CODE: { D_imp_sth(sth); SV *ret = dbd_st_last_insert_id(sth, imp_sth, catalog, schema, table, field, attr); ST(0) = ret; } #endif void fetchrow_arrayref(sth) SV * sth ALIAS: fetch = 1 CODE: D_imp_sth(sth); AV *av; PERL_UNUSED_VAR(ix); av = dbd_st_fetch(sth, imp_sth); ST(0) = (av) ? sv_2mortal(newRV((SV *)av)) : &PL_sv_undef; void fetchrow_array(sth) SV * sth ALIAS: fetchrow = 1 PPCODE: D_imp_sth(sth); AV *av; av = dbd_st_fetch(sth, imp_sth); if (av) { int i; int num_fields = AvFILL(av)+1; EXTEND(sp, num_fields); for(i=0; i < num_fields; ++i) { PUSHs(AvARRAY(av)[i]); } PERL_UNUSED_VAR(ix); } void fetchall_arrayref(sth, slice=&PL_sv_undef, batch_row_count=&PL_sv_undef) SV * sth SV * slice SV * batch_row_count CODE: if (SvOK(slice)) { /* fallback to perl implementation */ SV *tmp = dbixst_bounce_method("DBD::~DRIVER~::st::SUPER::fetchall_arrayref", 3); SPAGAIN; ST(0) = tmp; } else { SV *tmp = dbdxst_fetchall_arrayref(sth, slice, batch_row_count); SPAGAIN; ST(0) = tmp; } bool finish(sth) SV * sth CODE: D_imp_sth(sth); D_imp_dbh_from_sth; if (!DBIc_ACTIVE(imp_sth)) { /* No active statement to finish */ XSRETURN_YES; } if (!DBIc_ACTIVE(imp_dbh)) { /* Either an explicit disconnect() or global destruction */ /* has disconnected us from the database. Finish is meaningless */ DBIc_ACTIVE_off(imp_sth); XSRETURN_YES; } #ifdef dbd_st_finish3 RETVAL = dbd_st_finish3(sth, imp_sth, 0); #else RETVAL = dbd_st_finish(sth, imp_sth); #endif OUTPUT: RETVAL void blob_read(sth, field, offset, len, destrv=Nullsv, destoffset=0) SV * sth int field long offset long len SV * destrv long destoffset CODE: { D_imp_sth(sth); if (!destrv) destrv = sv_2mortal(newRV(sv_2mortal(newSV(0)))); if (dbd_st_blob_read(sth, imp_sth, field, offset, len, destrv, destoffset)) ST(0) = SvRV(destrv); else ST(0) = &PL_sv_undef; } void STORE(sth, keysv, valuesv) SV * sth SV * keysv SV * valuesv CODE: D_imp_sth(sth); if (SvGMAGICAL(valuesv)) mg_get(valuesv); ST(0) = &PL_sv_yes; if (!dbd_st_STORE_attrib(sth, imp_sth, keysv, valuesv)) if (!DBIc_DBISTATE(imp_sth)->set_attr(sth, keysv, valuesv)) ST(0) = &PL_sv_no; # FETCH renamed and ALIAS'd to avoid case clash on VMS :-( void FETCH_attrib(sth, keysv) SV * sth SV * keysv ALIAS: FETCH = 1 CODE: D_imp_sth(sth); SV *valuesv; PERL_UNUSED_VAR(ix); valuesv = dbd_st_FETCH_attrib(sth, imp_sth, keysv); if (!valuesv) valuesv = DBIc_DBISTATE(imp_sth)->get_attr(sth, keysv); ST(0) = valuesv; /* dbd_st_FETCH_attrib did sv_2mortal */ void DESTROY(sth) SV * sth PPCODE: /* keep in sync with default DESTROY in DBI.xs */ D_imp_sth(sth); ST(0) = &PL_sv_yes; if (!DBIc_IMPSET(imp_sth)) { /* was never fully set up */ STRLEN lna; if (DBIc_WARN(imp_sth) && !PL_dirty && DBIc_DBISTATE(imp_sth)->debug >= 2) PerlIO_printf(DBIc_LOGPIO(imp_sth), " DESTROY for %s ignored - handle not initialised\n", SvPV(sth,lna)); } else { if (DBIc_IADESTROY(imp_sth)) { /* wants ineffective destroy */ DBIc_ACTIVE_off(imp_sth); if (DBIc_DBISTATE(imp_sth)->debug) PerlIO_printf(DBIc_LOGPIO(imp_sth), " DESTROY %s skipped due to InactiveDestroy\n", SvPV_nolen(sth)); } if (DBIc_ACTIVE(imp_sth)) { D_imp_dbh_from_sth; if (!PL_dirty && DBIc_ACTIVE(imp_dbh)) { #ifdef dbd_st_finish3 dbd_st_finish3(sth, imp_sth, 1); #else dbd_st_finish(sth, imp_sth); #endif } else { DBIc_ACTIVE_off(imp_sth); } } dbd_st_destroy(sth, imp_sth); } # end of ~DRIVER~.xst # vim:ts=8:sw=4:et perl5/auto/DBI/DBIXS.h000044400000062773152462470720010211 0ustar00/* vim: ts=8:sw=4:expandtab * * $Id$ * * Copyright (c) 1994-2010 Tim Bunce Ireland * * See COPYRIGHT section in DBI.pm for usage and distribution rights. */ /* DBI Interface Definitions for DBD Modules */ #ifndef DBIXS_VERSION /* prevent multiple inclusion */ #ifndef DBIS #define DBIS dbis /* default name for dbistate_t variable */ #endif /* Here for backwards compat. PERL_POLLUTE was removed in perl 5.13.3 */ #define PERL_POLLUTE /* first pull in the standard Perl header files for extensions */ #include #include #include #ifdef debug /* causes problems with DBIS->debug */ #undef debug #endif #ifdef std /* causes problems with STLport */ #undef std #endif /* define DBIXS_REVISION */ #include "dbixs_rev.h" /* Perl backwards compatibility definitions */ #define NEED_sv_2pv_flags #include "dbipport.h" /* DBI SQL_* type definitions */ #include "dbi_sql.h" #define DBIXS_VERSION 93 /* superseded by DBIXS_REVISION */ #ifdef NEED_DBIXS_VERSION #if NEED_DBIXS_VERSION > DBIXS_VERSION error You_need_to_upgrade_your_DBI_module_before_building_this_driver #endif #else #define NEED_DBIXS_VERSION DBIXS_VERSION #endif #define DBI_LOCK #define DBI_UNLOCK #ifndef DBI_NO_THREADS #ifdef USE_ITHREADS #define DBI_USE_THREADS #endif /* USE_ITHREADS */ #endif /* DBI_NO_THREADS */ /* forward struct declarations */ typedef struct dbistate_st dbistate_t; /* implementor needs to define actual struct { dbih_??c_t com; ... }*/ typedef struct imp_drh_st imp_drh_t; /* driver */ typedef struct imp_dbh_st imp_dbh_t; /* database */ typedef struct imp_sth_st imp_sth_t; /* statement */ typedef struct imp_fdh_st imp_fdh_t; /* field descriptor */ typedef struct imp_xxh_st imp_xxh_t; /* any (defined below) */ #define DBI_imp_data_ imp_xxh_t /* friendly for take_imp_data */ /* --- DBI Handle Common Data Structure (all handles have one) --- */ /* Handle types. Code currently assumes child = parent + 1. */ #define DBIt_DR 1 #define DBIt_DB 2 #define DBIt_ST 3 #define DBIt_FD 4 /* component structures */ typedef struct dbih_com_std_st { U32 flags; int call_depth; /* used by DBI to track nested calls (int) */ U16 type; /* DBIt_DR, DBIt_DB, DBIt_ST */ HV *my_h; /* copy of outer handle HV (not refcounted) */ SV *parent_h; /* parent inner handle (ref to hv) (r.c.inc) */ imp_xxh_t *parent_com; /* parent com struct shortcut */ PerlInterpreter * thr_user; /* thread that owns the handle */ HV *imp_stash; /* who is the implementor for this handle */ SV *imp_data; /* optional implementors data (for perl imp's) */ I32 kids; /* count of db's for dr's, st's for db's etc */ I32 active_kids; /* kids which are currently DBIc_ACTIVE */ U32 pid; /* pid of process that created handle */ dbistate_t *dbistate; } dbih_com_std_t; typedef struct dbih_com_attr_st { /* These are copies of the Hash values (ref.cnt.inc'd) */ /* Many of the hash values are themselves references */ SV *TraceLevel; SV *State; /* Standard SQLSTATE, 5 char string */ SV *Err; /* Native engine error code */ SV *Errstr; /* Native engine error message */ UV ErrCount; U32 LongReadLen; /* auto read length for long/blob types */ SV *FetchHashKeyName; /* for fetchrow_hashref */ /* (NEW FIELDS?... DON'T FORGET TO UPDATE dbih_clearcom()!) */ } dbih_com_attr_t; struct dbih_com_st { /* complete core structure (typedef'd above) */ dbih_com_std_t std; dbih_com_attr_t attr; }; /* This 'implementors' type the DBI defines by default as a way to */ /* refer to the imp_??h data of a handle without considering its type. */ struct imp_xxh_st { struct dbih_com_st com; }; /* Define handle-type specific structures for implementors to include */ /* at the start of their private structures. */ typedef struct { /* -- DRIVER -- */ dbih_com_std_t std; dbih_com_attr_t attr; HV *_old_cached_kids; /* not used, here for binary compat */ } dbih_drc_t; typedef struct { /* -- DATABASE -- */ dbih_com_std_t std; /* \__ standard structure */ dbih_com_attr_t attr; /* / plus... (nothing else right now) */ HV *_old_cached_kids; /* not used, here for binary compat */ } dbih_dbc_t; typedef struct { /* -- STATEMENT -- */ dbih_com_std_t std; /* \__ standard structure */ dbih_com_attr_t attr; /* / plus ... */ int num_params; /* number of placeholders */ int num_fields; /* NUM_OF_FIELDS, must be set */ AV *fields_svav; /* special row buffer (inc bind_cols) */ IV row_count; /* incremented by get_fbav() */ AV *fields_fdav; /* not used yet, may change */ I32 spare1; void *spare2; } dbih_stc_t; /* XXX THIS STRUCTURE SHOULD NOT BE USED */ typedef struct { /* -- FIELD DESCRIPTOR -- */ dbih_com_std_t std; /* standard structure (not fully setup) */ /* core attributes (from DescribeCol in ODBC) */ char *col_name; /* see dbih_make_fdsv */ I16 col_name_len; I16 col_sql_type; I16 col_precision; I16 col_scale; I16 col_nullable; /* additional attributes (from ColAttributes in ODBC) */ I32 col_length; I32 col_disp_size; I32 spare1; void *spare2; } dbih_fdc_t; #define _imp2com(p,f) ((p)->com.f) /* private */ #define DBIc_FLAGS(imp) _imp2com(imp, std.flags) #define DBIc_TYPE(imp) _imp2com(imp, std.type) #define DBIc_CALL_DEPTH(imp) _imp2com(imp, std.call_depth) #define DBIc_MY_H(imp) _imp2com(imp, std.my_h) #define DBIc_PARENT_H(imp) _imp2com(imp, std.parent_h) #define DBIc_PARENT_COM(imp) _imp2com(imp, std.parent_com) #define DBIc_THR_COND(imp) _imp2com(imp, std.thr_cond) #define DBIc_THR_USER(imp) _imp2com(imp, std.thr_user) #define DBIc_THR_USER_NONE (0xFFFF) #define DBIc_IMP_STASH(imp) _imp2com(imp, std.imp_stash) #define DBIc_IMP_DATA(imp) _imp2com(imp, std.imp_data) #define DBIc_DBISTATE(imp) _imp2com(imp, std.dbistate) #define DBIc_LOGPIO(imp) DBIc_DBISTATE(imp)->logfp #define DBIc_KIDS(imp) _imp2com(imp, std.kids) #define DBIc_ACTIVE_KIDS(imp) _imp2com(imp, std.active_kids) #define DBIc_LAST_METHOD(imp) _imp2com(imp, std.last_method) /* d = DBD flags, l = DBD level (needs to be shifted down) * D - DBI flags, r = reserved, L = DBI trace level * Trace level bit allocation: 0xddlDDDrL */ #define DBIc_TRACE_LEVEL_MASK 0x0000000F #define DBIc_TRACE_FLAGS_MASK 0xFF0FFF00 /* includes DBD flag bits for DBIc_TRACE */ #define DBIc_TRACE_SETTINGS(imp) (DBIc_DBISTATE(imp)->debug) #define DBIc_TRACE_LEVEL(imp) (DBIc_TRACE_SETTINGS(imp) & DBIc_TRACE_LEVEL_MASK) #define DBIc_TRACE_FLAGS(imp) (DBIc_TRACE_SETTINGS(imp) & DBIc_TRACE_FLAGS_MASK) /* DBI defined trace flags */ #define DBIf_TRACE_SQL 0x00000100 #define DBIf_TRACE_CON 0x00000200 #define DBIf_TRACE_ENC 0x00000400 #define DBIf_TRACE_DBD 0x00000800 #define DBIf_TRACE_TXN 0x00001000 #define DBDc_TRACE_LEVEL_MASK 0x00F00000 #define DBDc_TRACE_LEVEL_SHIFT 20 #define DBDc_TRACE_LEVEL(imp) ( (DBIc_TRACE_SETTINGS(imp) & DBDc_TRACE_LEVEL_MASK) >> DBDc_TRACE_LEVEL_SHIFT ) #define DBDc_TRACE_LEVEL_set(imp, l) ( DBIc_TRACE_SETTINGS(imp) |= (((l) << DBDc_TRACE_LEVEL_SHIFT) & DBDc_TRACE_LEVEL_MASK )) /* DBIc_TRACE_MATCHES(this, crnt): true if this 'matches' (is within) crnt DBIc_TRACE_MATCHES(foo, DBIc_TRACE_SETTINGS(imp)) */ #define DBIc_TRACE_MATCHES(this, crnt) \ ( ((crnt & DBIc_TRACE_LEVEL_MASK) >= (this & DBIc_TRACE_LEVEL_MASK)) \ || ((crnt & DBIc_TRACE_FLAGS_MASK) & (this & DBIc_TRACE_FLAGS_MASK)) ) /* DBIc_TRACE(imp, flags, flag_level, fallback_level) True if flags match the handle trace flags & handle trace level >= flag_level, OR if handle trace_level > fallback_level (typically > flag_level). This is the main trace testing macro to be used by drivers. (Drivers should define their own DBDf_TRACE_* macros for the top 8 bits: 0xFF000000) DBIc_TRACE(imp, 0, 0, 4) = if trace level >= 4 DBIc_TRACE(imp, DBDf_TRACE_FOO, 2, 4) = if tracing DBDf_FOO & level>=2 or level>=4 DBIc_TRACE(imp, DBDf_TRACE_FOO, 2, 0) = as above but never trace just due to level e.g. if (DBIc_TRACE(imp_xxh, DBIf_TRACE_SQL|DBIf_TRACE_xxx, 2, 0)) { PerlIO_printf(DBIc_LOGPIO(imp_sth), "\tThe %s wibbled the %s\n", ...); } */ #define DBIc_TRACE(imp, flags, flaglevel, level) \ ( (flags && (DBIc_TRACE_FLAGS(imp) & flags) && (DBIc_TRACE_LEVEL(imp) >= flaglevel)) \ || (level && DBIc_TRACE_LEVEL(imp) >= level) ) #define DBIc_DEBUG(imp) (_imp2com(imp, attr.TraceLevel)) /* deprecated */ #define DBIc_DEBUGIV(imp) SvIV(DBIc_DEBUG(imp)) /* deprecated */ #define DBIc_STATE(imp) SvRV(_imp2com(imp, attr.State)) #define DBIc_ERR(imp) SvRV(_imp2com(imp, attr.Err)) #define DBIc_ERRSTR(imp) SvRV(_imp2com(imp, attr.Errstr)) #define DBIc_ErrCount(imp) _imp2com(imp, attr.ErrCount) #define DBIc_LongReadLen(imp) _imp2com(imp, attr.LongReadLen) #define DBIc_LongReadLen_init 80 /* may change */ #define DBIc_FetchHashKeyName(imp) (_imp2com(imp, attr.FetchHashKeyName)) /* handle sub-type specific fields */ /* dbh & drh */ #define DBIc_CACHED_KIDS(imp) Nullhv /* no longer used, here for src compat */ /* sth */ #define DBIc_NUM_FIELDS(imp) _imp2com(imp, num_fields) #define DBIc_NUM_PARAMS(imp) _imp2com(imp, num_params) #define DBIc_NUM_PARAMS_AT_EXECUTE -9 /* see Driver.xst */ #define DBIc_ROW_COUNT(imp) _imp2com(imp, row_count) #define DBIc_FIELDS_AV(imp) _imp2com(imp, fields_svav) #define DBIc_FDESC_AV(imp) _imp2com(imp, fields_fdav) #define DBIc_FDESC(imp, i) ((imp_fdh_t*)(void*)SvPVX(AvARRAY(DBIc_FDESC_AV(imp))[i])) /* XXX --- DO NOT CHANGE THESE VALUES AS THEY ARE COMPILED INTO DRIVERS --- XXX */ #define DBIcf_COMSET 0x000001 /* needs to be clear'd before free'd */ #define DBIcf_IMPSET 0x000002 /* has implementor data to be clear'd */ #define DBIcf_ACTIVE 0x000004 /* needs finish/disconnect before clear */ #define DBIcf_IADESTROY 0x000008 /* do DBIc_ACTIVE_off before DESTROY */ #define DBIcf_WARN 0x000010 /* warn about poor practice etc */ #define DBIcf_COMPAT 0x000020 /* compat/emulation mode (eg oraperl) */ #define DBIcf_ChopBlanks 0x000040 /* rtrim spaces from fetch char columns */ #define DBIcf_RaiseError 0x000080 /* throw exception (croak) on error */ #define DBIcf_PrintError 0x000100 /* warn() on error */ #define DBIcf_AutoCommit 0x000200 /* dbh only. used by drivers */ #define DBIcf_LongTruncOk 0x000400 /* truncation to LongReadLen is okay */ #define DBIcf_MultiThread 0x000800 /* allow multiple threads to enter */ #define DBIcf_HandleSetErr 0x001000 /* has coderef HandleSetErr attribute */ #define DBIcf_ShowErrorStatement 0x002000 /* include Statement in error */ #define DBIcf_BegunWork 0x004000 /* between begin_work & commit/rollback */ #define DBIcf_HandleError 0x008000 /* has coderef in HandleError attribute */ #define DBIcf_Profile 0x010000 /* profile activity on this handle */ #define DBIcf_TaintIn 0x020000 /* check inputs for taintedness */ #define DBIcf_TaintOut 0x040000 /* taint outgoing data */ #define DBIcf_Executed 0x080000 /* do/execute called since commit/rollb */ #define DBIcf_PrintWarn 0x100000 /* warn() on warning (err="0") */ #define DBIcf_Callbacks 0x200000 /* has Callbacks attribute hash */ #define DBIcf_AIADESTROY 0x400000 /* auto DBIcf_IADESTROY if pid changes */ #define DBIcf_RaiseWarn 0x800000 /* throw exception (croak) on warn */ /* NOTE: new flags may require clone() to be updated */ #define DBIcf_INHERITMASK /* what NOT to pass on to children */ \ (U32)( DBIcf_COMSET | DBIcf_IMPSET | DBIcf_ACTIVE | DBIcf_IADESTROY \ | DBIcf_AutoCommit | DBIcf_BegunWork | DBIcf_Executed | DBIcf_Callbacks ) /* general purpose bit setting and testing macros */ #define DBIbf_is( bitset,flag) ((bitset) & (flag)) #define DBIbf_has(bitset,flag) DBIbf_is(bitset, flag) /* alias for _is */ #define DBIbf_on( bitset,flag) ((bitset) |= (flag)) #define DBIbf_off(bitset,flag) ((bitset) &= ~(flag)) #define DBIbf_set(bitset,flag,on) ((on) ? DBIbf_on(bitset, flag) : DBIbf_off(bitset,flag)) /* as above, but specifically for DBIc_FLAGS imp flags (except ACTIVE) */ #define DBIc_is(imp, flag) DBIbf_is( DBIc_FLAGS(imp), flag) #define DBIc_has(imp,flag) DBIc_is(imp, flag) /* alias for DBIc_is */ #define DBIc_on(imp, flag) DBIbf_on( DBIc_FLAGS(imp), flag) #define DBIc_off(imp,flag) DBIbf_off(DBIc_FLAGS(imp), flag) #define DBIc_set(imp,flag,on) DBIbf_set(DBIc_FLAGS(imp), flag, on) #define DBIc_COMSET(imp) DBIc_is(imp, DBIcf_COMSET) #define DBIc_COMSET_on(imp) DBIc_on(imp, DBIcf_COMSET) #define DBIc_COMSET_off(imp) DBIc_off(imp,DBIcf_COMSET) #define DBIc_IMPSET(imp) DBIc_is(imp, DBIcf_IMPSET) #define DBIc_IMPSET_on(imp) DBIc_on(imp, DBIcf_IMPSET) #define DBIc_IMPSET_off(imp) DBIc_off(imp,DBIcf_IMPSET) #define DBIc_ACTIVE(imp) (DBIc_FLAGS(imp) & DBIcf_ACTIVE) #define DBIc_ACTIVE_on(imp) /* adjust parent's active kid count */ \ do { \ imp_xxh_t *ph_com = DBIc_PARENT_COM(imp); \ if (!DBIc_ACTIVE(imp) && ph_com && !PL_dirty \ && ++DBIc_ACTIVE_KIDS(ph_com) > DBIc_KIDS(ph_com)) \ croak("panic: DBI active kids (%ld) > kids (%ld)", \ (long)DBIc_ACTIVE_KIDS(ph_com), \ (long)DBIc_KIDS(ph_com)); \ DBIc_FLAGS(imp) |= DBIcf_ACTIVE; \ } while(0) #define DBIc_ACTIVE_off(imp) /* adjust parent's active kid count */ \ do { \ imp_xxh_t *ph_com = DBIc_PARENT_COM(imp); \ if (DBIc_ACTIVE(imp) && ph_com && !PL_dirty \ && (--DBIc_ACTIVE_KIDS(ph_com) > DBIc_KIDS(ph_com) \ || DBIc_ACTIVE_KIDS(ph_com) < 0) ) \ croak("panic: DBI active kids (%ld) < 0 or > kids (%ld)", \ (long)DBIc_ACTIVE_KIDS(ph_com), \ (long)DBIc_KIDS(ph_com)); \ DBIc_FLAGS(imp) &= ~DBIcf_ACTIVE; \ } while(0) #define DBIc_IADESTROY(imp) (DBIc_FLAGS(imp) & DBIcf_IADESTROY) #define DBIc_IADESTROY_on(imp) (DBIc_FLAGS(imp) |= DBIcf_IADESTROY) #define DBIc_IADESTROY_off(imp) (DBIc_FLAGS(imp) &= ~DBIcf_IADESTROY) #define DBIc_AIADESTROY(imp) (DBIc_FLAGS(imp) & DBIcf_AIADESTROY) #define DBIc_AIADESTROY_on(imp) (DBIc_FLAGS(imp) |= DBIcf_AIADESTROY) #define DBIc_AIADESTROY_off(imp) (DBIc_FLAGS(imp) &= ~DBIcf_AIADESTROY) #define DBIc_WARN(imp) (DBIc_FLAGS(imp) & DBIcf_WARN) #define DBIc_WARN_on(imp) (DBIc_FLAGS(imp) |= DBIcf_WARN) #define DBIc_WARN_off(imp) (DBIc_FLAGS(imp) &= ~DBIcf_WARN) #define DBIc_COMPAT(imp) (DBIc_FLAGS(imp) & DBIcf_COMPAT) #define DBIc_COMPAT_on(imp) (DBIc_FLAGS(imp) |= DBIcf_COMPAT) #define DBIc_COMPAT_off(imp) (DBIc_FLAGS(imp) &= ~DBIcf_COMPAT) #ifdef IN_DBI_XS /* get Handle Common Data Structure */ #define DBIh_COM(h) (dbih_getcom2(aTHX_ h, 0)) #else #define DBIh_COM(h) (DBIS->getcom(h)) #define neatsvpv(sv,len) (DBIS->neat_svpv(sv,len)) #endif /* --- For sql_type_cast_svpv() --- */ #define DBIstcf_DISCARD_STRING 0x0001 #define DBIstcf_STRICT 0x0002 /* --- Implementors Private Data Support --- */ #define D_impdata(name,type,h) type *name = (type*)(DBIh_COM(h)) #define D_imp_drh(h) D_impdata(imp_drh, imp_drh_t, h) #define D_imp_dbh(h) D_impdata(imp_dbh, imp_dbh_t, h) #define D_imp_sth(h) D_impdata(imp_sth, imp_sth_t, h) #define D_imp_xxh(h) D_impdata(imp_xxh, imp_xxh_t, h) #define D_imp_from_child(name,type,child) \ type *name = (type*)(DBIc_PARENT_COM(child)) #define D_imp_drh_from_dbh D_imp_from_child(imp_drh, imp_drh_t, imp_dbh) #define D_imp_dbh_from_sth D_imp_from_child(imp_dbh, imp_dbh_t, imp_sth) #define DBI_IMP_SIZE(n,s) sv_setiv(get_sv((n), GV_ADDMULTI), (s)) /* XXX */ /* --- Event Support (VERY LIABLE TO CHANGE) --- */ #define DBIh_EVENTx(h,t,a1,a2) /* deprecated XXX */ &PL_sv_no #define DBIh_EVENT0(h,t) DBIh_EVENTx((h), (t), &PL_sv_undef, &PL_sv_undef) #define DBIh_EVENT1(h,t, a1) DBIh_EVENTx((h), (t), (a1), &PL_sv_undef) #define DBIh_EVENT2(h,t, a1,a2) DBIh_EVENTx((h), (t), (a1), (a2)) #define ERROR_event "ERROR" #define WARN_event "WARN" #define MSG_event "MESSAGE" #define DBEVENT_event "DBEVENT" #define UNKNOWN_event "UNKNOWN" #define DBIh_SET_ERR_SV(h,i, err, errstr, state, method) \ (DBIc_DBISTATE(i)->set_err_sv(h,i, err, errstr, state, method)) #define DBIh_SET_ERR_CHAR(h,i, err_c, err_i, errstr, state, method) \ (DBIc_DBISTATE(i)->set_err_char(h,i, err_c, err_i, errstr, state, method)) /* --- Handy Macros --- */ #define DBIh_CLEAR_ERROR(imp_xxh) (void)( \ (void)SvOK_off(DBIc_ERR(imp_xxh)), \ (void)SvOK_off(DBIc_ERRSTR(imp_xxh)), \ (void)SvOK_off(DBIc_STATE(imp_xxh)) \ ) /* --- DBI State Structure --- */ struct dbistate_st { /* DBISTATE_VERSION is checked at runtime via DBISTATE_INIT and check_version. * It should be incremented on incompatible changes to dbistate_t structure. * Additional function pointers being assigned from spare padding, where the * size of the structure doesn't change, doesn't require an increment. * Incrementing forces all XS drivers to need to be recompiled. * (See also DBIXS_REVISION as a driver source compatibility tool.) */ #define DBISTATE_VERSION 94 /* ++ on incompatible dbistate_t changes */ /* this must be the first member in structure */ void (*check_version) _((const char *name, int dbis_cv, int dbis_cs, int need_dbixs_cv, int drc_s, int dbc_s, int stc_s, int fdc_s)); /* version and size are used to check for DBI/DBD version mis-match */ U16 version; /* version of this structure */ U16 size; U16 xs_version; /* version of the overall DBIXS / DBD interface */ U16 spare_pad; I32 debug; PerlIO *logfp; /* pointers to DBI functions which the DBD's will want to use */ char * (*neat_svpv) _((SV *sv, STRLEN maxlen)); imp_xxh_t * (*getcom) _((SV *h)); /* see DBIh_COM macro */ void (*clearcom) _((imp_xxh_t *imp_xxh)); SV * (*event) _((SV *h, const char *name, SV*, SV*)); int (*set_attr_k) _((SV *h, SV *keysv, int dbikey, SV *valuesv)); SV * (*get_attr_k) _((SV *h, SV *keysv, int dbikey)); AV * (*get_fbav) _((imp_sth_t *imp_sth)); SV * (*make_fdsv) _((SV *sth, const char *imp_class, STRLEN imp_size, const char *col_name)); int (*bind_as_num) _((int sql_type, int p, int s, int *t, void *v)); /* XXX deprecated */ I32 (*hash) _((const char *string, long i)); SV * (*preparse) _((SV *sth, char *statement, IV ps_return, IV ps_accept, void *foo)); SV *neatsvpvlen; /* only show dbgpvlen chars when debugging pv's */ PerlInterpreter * thr_owner; /* thread that owns this dbistate */ int (*logmsg) _((imp_xxh_t *imp_xxh, const char *fmt, ...)); int (*set_err_sv) _((SV *h, imp_xxh_t *imp_xxh, SV *err, SV *errstr, SV *state, SV *method)); int (*set_err_char) _((SV *h, imp_xxh_t *imp_xxh, const char *err, IV err_i, const char *errstr, const char *state, const char *method)); int (*bind_col) _((SV *sth, SV *col, SV *ref, SV *attribs)); IO *logfp_ref; /* keep ptr to filehandle for refcounting */ int (*sql_type_cast_svpv) _((pTHX_ SV *sv, int sql_type, U32 flags, void *v)); /* WARNING: Only add new structure members here, and reduce pad2 to keep */ /* the memory footprint exactly the same */ void *pad2[3]; }; /* macros for backwards compatibility */ #define set_attr(h, k, v) set_attr_k(h, k, 0, v) #define get_attr(h, k) get_attr_k(h, k, 0) #define DBILOGFP (DBIS->logfp) #ifdef IN_DBI_XS #define DBILOGMSG (dbih_logmsg) #else #define DBILOGMSG (DBIS->logmsg) #endif /* --- perl object (ActiveState) / multiplicity hooks and hoops --- */ /* note that USE_ITHREADS implies MULTIPLICITY */ typedef dbistate_t** (*_dbi_state_lval_t)(pTHX); # define _DBISTATE_DECLARE_COMMON \ static _dbi_state_lval_t dbi_state_lval_p = 0; \ static dbistate_t** dbi_get_state(pTHX) { \ if (!dbi_state_lval_p) { \ CV *cv = get_cv("DBI::_dbi_state_lval", 0); \ if (!cv) \ croak("Unable to get DBI state function. DBI not loaded."); \ dbi_state_lval_p = (_dbi_state_lval_t)CvXSUB(cv); \ } \ return dbi_state_lval_p(aTHX); \ } \ typedef int dummy_dbistate /* keep semicolon from feeling lonely */ #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || defined(PERL_CAPI) # define DBISTATE_DECLARE _DBISTATE_DECLARE_COMMON # define _DBISTATE_INIT_DBIS # undef DBIS # define DBIS (*dbi_get_state(aTHX)) # define dbis DBIS /* temp for old drivers using 'dbis' instead of 'DBIS' */ #else /* plain and simple non perl object / multiplicity case */ # define DBISTATE_DECLARE \ static dbistate_t *DBIS; \ _DBISTATE_DECLARE_COMMON # define _DBISTATE_INIT_DBIS DBIS = *dbi_get_state(aTHX); #endif # define DBISTATE_INIT { /* typically use in BOOT: of XS file */ \ _DBISTATE_INIT_DBIS \ if (DBIS == NULL) \ croak("Unable to get DBI state. DBI not loaded."); \ DBIS->check_version(__FILE__, DBISTATE_VERSION, sizeof(*DBIS), NEED_DBIXS_VERSION, \ sizeof(dbih_drc_t), sizeof(dbih_dbc_t), sizeof(dbih_stc_t), sizeof(dbih_fdc_t) \ ); \ } /* --- Assorted Utility Macros --- */ #define DBD_ATTRIB_OK(attribs) /* is this a usable attrib value */ \ (attribs && SvROK(attribs) && SvTYPE(SvRV(attribs))==SVt_PVHV) /* If attribs value supplied then croak if it's not a hash ref. */ /* Also map undef to Null. Should always be called to pre-process the */ /* attribs value. One day we may add some extra magic in here. */ #define DBD_ATTRIBS_CHECK(func, h, attribs) \ if ((attribs) && SvOK(attribs)) { \ if (!SvROK(attribs) || SvTYPE(SvRV(attribs))!=SVt_PVHV) \ croak("%s->%s(...): attribute parameter '%s' is not a hash ref", \ SvPV_nolen(h), func, SvPV_nolen(attribs)); \ } else (attribs) = Nullsv #define DBD_ATTRIB_GET_SVP(attribs, key,klen) \ (DBD_ATTRIB_OK(attribs) \ ? hv_fetch((HV*)SvRV(attribs), key,klen, 0) \ : (SV **)Nullsv) #define DBD_ATTRIB_GET_IV(attribs, key,klen, svp, var) \ if ((svp=DBD_ATTRIB_GET_SVP(attribs, key,klen)) != NULL) \ var = SvIV(*svp) #define DBD_ATTRIB_GET_UV(attribs, key,klen, svp, var) \ if ((svp=DBD_ATTRIB_GET_SVP(attribs, key,klen)) != NULL) \ var = SvUV(*svp) #define DBD_ATTRIB_GET_BOOL(attribs, key,klen, svp, var) \ if ((svp=DBD_ATTRIB_GET_SVP(attribs, key,klen)) != NULL) \ var = SvTRUE(*svp) #define DBD_ATTRIB_TRUE(attribs, key,klen, svp) \ ( ((svp=DBD_ATTRIB_GET_SVP(attribs, key,klen)) != NULL) \ ? SvTRUE(*svp) : 0 ) #define DBD_ATTRIB_GET_PV(attribs, key,klen, svp, dflt) \ (((svp=DBD_ATTRIB_GET_SVP(attribs, key,klen)) != NULL) \ ? SvPV_nolen(*svp) : (dflt)) #define DBD_ATTRIB_DELETE(attribs, key, klen) \ hv_delete((HV*)SvRV(attribs), key, klen, G_DISCARD) #endif /* DBIXS_VERSION */ /* end of DBIXS.h */ perl5/auto/DBI/Driver_xst.h000044400000007560152462470720011462 0ustar00/* # $Id$ # Copyright (c) 2002 Tim Bunce Ireland # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. */ /* This is really just a workaround for SUPER:: not working right for XS code. * It would be better if we setup perl's context so SUPER:: did the right thing * (borrowing the relevant magic from pp_entersub in perl pp_hot.c). * Then we could just use call_method("SUPER::foo") instead. * XXX remember to call SPAGAIN in the calling code after calling this! */ static SV * dbixst_bounce_method(char *methname, int params) { dTHX; /* XXX this 'magic' undoes the dMARK embedded in the dXSARGS of our caller */ /* so that the dXSARGS below can set things up as they were for our caller */ void *xxx = PL_markstack_ptr++; dXSARGS; /* declares sp, ax, mark, items */ int i; SV *sv; int debug = 0; D_imp_xxh(ST(0)); if (debug >= 3) { PerlIO_printf(DBIc_LOGPIO(imp_xxh), " -> %s (trampoline call with %d (%ld) params)\n", methname, params, (long)items); PERL_UNUSED_VAR(xxx); } EXTEND(SP, params); PUSHMARK(SP); for (i=0; i < params; ++i) { sv = (i >= items) ? &PL_sv_undef : ST(i); PUSHs(sv); } PUTBACK; i = call_method(methname, G_SCALAR); SPAGAIN; sv = (i) ? POPs : &PL_sv_undef; PUTBACK; if (debug >= 3) PerlIO_printf(DBIc_LOGPIO(imp_xxh), " <- %s= %s (trampoline call return)\n", methname, neatsvpv(sv,0)); return sv; } static int dbdxst_bind_params(SV *sth, imp_sth_t *imp_sth, I32 items, I32 ax) { /* Handle binding supplied values to placeholders. */ /* items = one greater than the number of params */ /* ax = ax from calling sub, maybe adjusted to match items */ dTHX; int i; SV *idx; if (items-1 != DBIc_NUM_PARAMS(imp_sth) && DBIc_NUM_PARAMS(imp_sth) != DBIc_NUM_PARAMS_AT_EXECUTE ) { char errmsg[99]; /* clear any previous ParamValues before error is generated */ SV **svp = hv_fetch((HV*)DBIc_MY_H(imp_sth),"ParamValues",11,FALSE); if (svp && SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVHV) { HV *hv = (HV*)SvRV(*svp); hv_clear(hv); } sprintf(errmsg,"called with %d bind variables when %d are needed", (int)items-1, DBIc_NUM_PARAMS(imp_sth)); DBIh_SET_ERR_CHAR(sth, (imp_xxh_t*)imp_sth, "-1", -1, errmsg, Nullch, Nullch); return 0; } idx = sv_2mortal(newSViv(0)); for(i=1; i < items ; ++i) { SV* value = ST(i); if (SvGMAGICAL(value)) mg_get(value); /* trigger magic to FETCH the value */ sv_setiv(idx, i); if (!dbd_bind_ph(sth, imp_sth, idx, value, 0, Nullsv, FALSE, 0)) { return 0; /* dbd_bind_ph already registered error */ } } return 1; } #ifndef dbd_fetchall_arrayref static SV * dbdxst_fetchall_arrayref(SV *sth, SV *slice, SV *batch_row_count) { dTHX; D_imp_sth(sth); SV *rows_rvav; if (SvOK(slice)) { /* should never get here */ char errmsg[99]; sprintf(errmsg,"slice param not supported by XS version of fetchall_arrayref"); DBIh_SET_ERR_CHAR(sth, (imp_xxh_t*)imp_sth, "-1", -1, errmsg, Nullch, Nullch); return &PL_sv_undef; } else { IV maxrows = SvOK(batch_row_count) ? SvIV(batch_row_count) : -1; AV *fetched_av; AV *rows_av = newAV(); if ( !DBIc_ACTIVE(imp_sth) && maxrows>0 ) { /* to simplify application logic we return undef without an error */ /* if we've fetched all the rows and called with a batch_row_count */ return &PL_sv_undef; } av_extend(rows_av, (maxrows>0) ? maxrows : 31); while ( (maxrows < 0 || maxrows-- > 0) && (fetched_av = dbd_st_fetch(sth, imp_sth)) ) { AV *copy_row_av = av_make(AvFILL(fetched_av)+1, AvARRAY(fetched_av)); av_push(rows_av, newRV_noinc((SV*)copy_row_av)); } rows_rvav = sv_2mortal(newRV_noinc((SV *)rows_av)); } return rows_rvav; } #endif perl5/auto/DBI/dbivport.h000044400000003740152462470720011156 0ustar00/* dbivport.h Provides macros that enable greater portability between DBI versions. This file should be *copied* and included in driver distributions and #included into the source, after #include DBIXS.h New driver releases should include an updated copy of dbivport.h from the most recent DBI release. */ #ifndef DBI_VPORT_H #define DBI_VPORT_H #ifndef DBIh_SET_ERR_CHAR /* Emulate DBIh_SET_ERR_CHAR Only uses the err_i, errstr and state parameters. */ #define DBIh_SET_ERR_CHAR(h, imp_xxh, err_c, err_i, errstr, state, method) \ sv_setiv(DBIc_ERR(imp_xxh), err_i); \ (state) ? (void)sv_setpv(DBIc_STATE(imp_xxh), state) : (void)SvOK_off(DBIc_STATE(imp_xxh)); \ sv_setpv(DBIc_ERRSTR(imp_xxh), errstr) #endif #ifndef DBIcf_Executed #define DBIcf_Executed 0x080000 #endif #ifndef DBIc_TRACE_LEVEL_MASK #define DBIc_TRACE_LEVEL_MASK 0x0000000F #define DBIc_TRACE_FLAGS_MASK 0xFFFFFF00 #define DBIc_TRACE_SETTINGS(imp) (DBIc_DBISTATE(imp)->debug) #define DBIc_TRACE_LEVEL(imp) (DBIc_TRACE_SETTINGS(imp) & DBIc_TRACE_LEVEL_MASK) #define DBIc_TRACE_FLAGS(imp) (DBIc_TRACE_SETTINGS(imp) & DBIc_TRACE_FLAGS_MASK) /* DBIc_TRACE_MATCHES - true if s1 'matches' s2 (c.f. trace_msg()) DBIc_TRACE_MATCHES(foo, DBIc_TRACE_SETTINGS(imp)) */ #define DBIc_TRACE_MATCHES(s1, s2) \ ( ((s1 & DBIc_TRACE_LEVEL_MASK) >= (s2 & DBIc_TRACE_LEVEL_MASK)) \ || ((s1 & DBIc_TRACE_FLAGS_MASK) & (s2 & DBIc_TRACE_FLAGS_MASK)) ) /* DBIc_TRACE - true if flags match & DBI level>=flaglevel, or if DBI level>level DBIc_TRACE(imp, 0, 0, 4) = if level >= 4 DBIc_TRACE(imp, DBDtf_FOO, 2, 4) = if tracing DBDtf_FOO & level>=2 or level>=4 DBIc_TRACE(imp, DBDtf_FOO, 2, 0) = as above but never trace just due to level */ #define DBIc_TRACE(imp, flags, flaglevel, level) \ ( (flags && (DBIc_TRACE_FLAGS(imp) & flags) && (DBIc_TRACE_LEVEL(imp) >= flaglevel)) \ || (level && DBIc_TRACE_LEVEL(imp) >= level) ) #endif #endif /* !DBI_VPORT_H */ perl5/auto/DBI/DBI.so000055500002221760152462470720010126 0ustar00ELF>p=@° @8 @%$@@   " "X`   " "888$$    Såtd    PåtdÐÞÐÞÐÞ,,QåtdRåtd  " "øøGNUB"'g L®Ä½œ=8c±´g”ˆ`"‚<”—šBEÕìºã’|½NoIF_ª`•\;ÙqXL4D'¼Xòâ.gy Œøà 7D˜ øði»tgbTú‹R ¬s®‰›ÄØpŸu¬Ð4ÇX̺YAzuc R‹’lgUïæ…òÉ  Å5Ôœ‚oG<_å€%ÿÀ°R±? I~#_±. O(­Ù#º½ Bêýö¾60%áTâ7¢ÕK°Ø~, ÙÉ  ñÕê"”fæF"²Èßöžt<‘ `"¤ h"” p?u  „ e `>˜ `"  °BpA  “†__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizelibpthread.so.0_dbi_state_lvalPL_thr_keypthread_getspecificneatsvpvPerl_sv_insert_flagsPerl_sv_newmortalPerl_sv_upgradePerl_sv_growPerl_sv_setpvnPerl_sv_catpvn_flagsPerl_sv_2pv_flagsPerl_mg_getPerl_sv_catsv_flagsPerl_newSVpvf_nocontextPerl_sv_2mortalPerl_newSVpvPL_charclassPerl_sv_2iv_flagsPerl_sv_reftype__stack_chk_failPerl_warn_nocontextPerl_croak_nocontextPerl_sv_dumpPerl_mg_findstrcmpPerlIO_printfPerl_sv_catpvPerl_hv_iternextsvPerl_hv_common_key_lenPerl_hv_placeholders_getPerl_PerlIO_flushPerl_sv_freePerl_sv_derived_fromstrlenPerl_newSV_typePerl_newRV_noincPerl_sv_setsv_flagsPerl_croak_xs_usagePerl_newSVivPerlIO_putsPerl_sv_mortalcopy_flagsPerl_sv_2bool_flagsPerl_call_methodPerl_markstack_growPerl_stack_growPerl_newRVPerl_dowantarrayPerl_sv_setiv_mgPerl_looks_like_numberstrncmpPerl_newSVsvPerl_newSVuvPerl_newSVnvPerl_av_storePL_latin1_lc__ctype_toupper_loc__ctype_tolower_locPL_mod_latin1_ucPerl_mg_sizePerl_hv_commonPerl_sv_2uv_flagsPerl_gv_stashsvPerl_sv_blessPerl_av_lenPerl_newSVPerl_av_fillPerl_grok_numberPerl_sv_2nv_flagsPerl_sv_force_normal_flagsPerl_sv_backoffPerl_safesysfreePerl_av_fetchPerl_sv_setnvPerl_av_extendPerl_sv_setivPerl_hv_iterinitgettimeofdayPerl_sv_setnv_mgPerl_ptr_table_fetchPerl_safesysmallocmemsetPerl_safesyscallocPerl_savepvXS_DBI_dispatchPerl_newXSPerl_sv_magicextPerl_sv_catpvf_nocontextPerl_cvgv_from_hekstrcpyPerl_get_svPerl_PerlIO_stderrPerl_gv_fetchpvgetenvstrtolPerlIO_vprintfPerl_call_svPerl_sv_setpvPerl_newSVpvn__sprintf_chkPerl_gv_stashpvPerl_sv_unmagicPerl_sv_magicPerl_hv_clearPerl_gv_fetchfilestrrchrstrchrstrstrPerl_sv_incPerl_save_sptrPerl_gv_efullname4Perl_block_gimmePerl_gv_fetchmethod_autoloadPerl_hv_iterkeyPerl_hv_iternext_flagsqsortPL_memory_wrapPerl_sv_free2Perl_PerlIO_stdoutPerl_PerlIO_closePerlIO_openPerl_sv_2ioPerl_PerlIO_setlinebuf__errno_locationstrerrorgetpidPerl_require_pvPerl_sv_isobjectPerl_gv_add_by_typePerl_sv_rvweakenPerl_av_pushPerl_av_shiftPerl_die_nocontextPerl_sv_2pvbytePerl_sv_setpvf_nocontextPerl_save_intPerl_save_I32Perl_croak_svPerl_sv_taintedPerl_taint_properPerl_mro_meta_initPerl_warn_svpreparseboot_DBIPerl_xs_handshakePerl_newXS_flagsPerl_newXS_deffilePerl_my_cxt_initPerl_xs_boot_epiloglibperl.so.5.26libc.so.6_edata__bss_start_endGLIBC_2.2.5GLIBC_2.3.4GLIBC_2.4GLIBC_2.3U ui © ‡ ti µ ii Á ui © ii Ë  "P> "> " "@" P" "¨"'°"8¸"CÀ"KÈ"šÐ"˜Ø"yà"~è"‚ð"‹ø"–8 "@ "H "P "X "` "h "p "x " € " ˆ " " ˜ "   "¨ "° "¸ "À "È "Ð "Ø "à "è "ð "ø " " " " " "—( "0 " 8 "!@ ""H "#P "$X "%` "&h "(p ")x "*€ "+ˆ ", "-˜ ".  "/¨ "0° "1¸ "2À "3È "4Ð "5Ø "6à "7è "9ð ":ø "; "< "= "> "? "@( "A0 "B8 "D@ "EH "FP "GX "H` "Ih "Jp "Lx "M€ "Nˆ "O "P˜ "Q  "R¨ "S° "T¸ "UÀ "VÈ "WÐ "XØ "Yà "Zè "[ð "\ø "]"^"_"`"a "b("c0"d8"e@"fH"gP"hX"i`"jh"kp"lx"m€"nˆ"o"p˜"q "r¨"s°"t¸"uÀ"vÈ"wÐ"xØ"zà"{è"|ð"}ø""€""ƒ"„ "…("†0"‡8"ˆ@"‰H"ŠP"‹X"Œ`"h"Žp"x"€"‘ˆ"’"“˜"–óúHƒìH‹ä!H…ÀtÿÐHƒÄÃÿ5bß!òÿ%cß!óúhòéáÿÿÿóúhòéÑÿÿÿóúhòéÁÿÿÿóúhòé±ÿÿÿóúhòé¡ÿÿÿóúhòé‘ÿÿÿóúhòéÿÿÿóúhòéqÿÿÿóúhòéaÿÿÿóúh òéQÿÿÿóúh òéAÿÿÿóúh òé1ÿÿÿóúh òé!ÿÿÿóúh òéÿÿÿóúhòéÿÿÿóúhòéñþÿÿóúhòéáþÿÿóúhòéÑþÿÿóúhòéÁþÿÿóúhòé±þÿÿóúhòé¡þÿÿóúhòé‘þÿÿóúhòéþÿÿóúhòéqþÿÿóúhòéaþÿÿóúhòéQþÿÿóúhòéAþÿÿóúhòé1þÿÿóúhòé!þÿÿóúhòéþÿÿóúhòéþÿÿóúhòéñýÿÿóúh òéáýÿÿóúh!òéÑýÿÿóúh"òéÁýÿÿóúh#òé±ýÿÿóúh$òé¡ýÿÿóúh%òé‘ýÿÿóúh&òéýÿÿóúh'òéqýÿÿóúh(òéaýÿÿóúh)òéQýÿÿóúh*òéAýÿÿóúh+òé1ýÿÿóúh,òé!ýÿÿóúh-òéýÿÿóúh.òéýÿÿóúh/òéñüÿÿóúh0òéáüÿÿóúh1òéÑüÿÿóúh2òéÁüÿÿóúh3òé±üÿÿóúh4òé¡üÿÿóúh5òé‘üÿÿóúh6òéüÿÿóúh7òéqüÿÿóúh8òéaüÿÿóúh9òéQüÿÿóúh:òéAüÿÿóúh;òé1üÿÿóúh<òé!üÿÿóúh=òéüÿÿóúh>òéüÿÿóúh?òéñûÿÿóúh@òéáûÿÿóúhAòéÑûÿÿóúhBòéÁûÿÿóúhCòé±ûÿÿóúhDòé¡ûÿÿóúhEòé‘ûÿÿóúhFòéûÿÿóúhGòéqûÿÿóúhHòéaûÿÿóúhIòéQûÿÿóúhJòéAûÿÿóúhKòé1ûÿÿóúhLòé!ûÿÿóúhMòéûÿÿóúhNòéûÿÿóúhOòéñúÿÿóúhPòéáúÿÿóúhQòéÑúÿÿóúhRòéÁúÿÿóúhSòé±úÿÿóúhTòé¡úÿÿóúhUòé‘úÿÿóúhVòéúÿÿóúhWòéqúÿÿóúhXòéaúÿÿóúhYòéQúÿÿóúhZòéAúÿÿóúh[òé1úÿÿóúh\òé!úÿÿóúh]òéúÿÿóúh^òéúÿÿóúh_òéñùÿÿóúh`òéáùÿÿóúhaòéÑùÿÿóúhbòéÁùÿÿóúhcòé±ùÿÿóúhdòé¡ùÿÿóúheòé‘ùÿÿóúhfòéùÿÿóúhgòéqùÿÿóúhhòéaùÿÿóúhiòéQùÿÿóúhjòéAùÿÿóúhkòé1ùÿÿóúhlòé!ùÿÿóúhmòéùÿÿóúhnòéùÿÿóúhoòéñøÿÿóúhpòéáøÿÿóúhqòéÑøÿÿóúhròéÁøÿÿóúhsòé±øÿÿóúhtò顸ÿÿóúhuò鑸ÿÿóúhvòéøÿÿóúhwòéqøÿÿóúhxòéaøÿÿóúhyòéQøÿÿóúhzòéAøÿÿóúh{òé1øÿÿóúh|òé!øÿÿóúh}òéøÿÿóúh~òéøÿÿóúhòéñ÷ÿÿóúh€òéá÷ÿÿóúhòéÑ÷ÿÿóúh‚òéÁ÷ÿÿóúhƒòé±÷ÿÿóúh„òé¡÷ÿÿóúh…òé‘÷ÿÿóúh†òé÷ÿÿóúh‡òéq÷ÿÿóúhˆòéa÷ÿÿóúh‰òéQ÷ÿÿóúhŠòéA÷ÿÿóúh‹òé1÷ÿÿóúhŒòé!÷ÿÿóúòÿ%Ö!Dóúòÿ%…Ö!Dóúòÿ%}Ö!Dóúòÿ%uÖ!Dóúòÿ%mÖ!Dóúòÿ%eÖ!Dóúòÿ%]Ö!Dóúòÿ%UÖ!Dóúòÿ%MÖ!Dóúòÿ%EÖ!Dóúòÿ%=Ö!Dóúòÿ%5Ö!Dóúòÿ%-Ö!Dóúòÿ%%Ö!Dóúòÿ%Ö!Dóúòÿ%Ö!Dóúòÿ% Ö!Dóúòÿ%Ö!Dóúòÿ%ýÕ!Dóúòÿ%õÕ!Dóúòÿ%íÕ!Dóúòÿ%åÕ!Dóúòÿ%ÝÕ!Dóúòÿ%ÕÕ!Dóúòÿ%ÍÕ!Dóúòÿ%ÅÕ!Dóúòÿ%½Õ!Dóúòÿ%µÕ!Dóúòÿ%­Õ!Dóúòÿ%¥Õ!Dóúòÿ%Õ!Dóúòÿ%•Õ!Dóúòÿ%Õ!Dóúòÿ%…Õ!Dóúòÿ%}Õ!Dóúòÿ%uÕ!Dóúòÿ%mÕ!Dóúòÿ%eÕ!Dóúòÿ%]Õ!Dóúòÿ%UÕ!Dóúòÿ%MÕ!Dóúòÿ%EÕ!Dóúòÿ%=Õ!Dóúòÿ%5Õ!Dóúòÿ%-Õ!Dóúòÿ%%Õ!Dóúòÿ%Õ!Dóúòÿ%Õ!Dóúòÿ% Õ!Dóúòÿ%Õ!Dóúòÿ%ýÔ!Dóúòÿ%õÔ!Dóúòÿ%íÔ!Dóúòÿ%åÔ!Dóúòÿ%ÝÔ!Dóúòÿ%ÕÔ!Dóúòÿ%ÍÔ!Dóúòÿ%ÅÔ!Dóúòÿ%½Ô!Dóúòÿ%µÔ!Dóúòÿ%­Ô!Dóúòÿ%¥Ô!Dóúòÿ%Ô!Dóúòÿ%•Ô!Dóúòÿ%Ô!Dóúòÿ%…Ô!Dóúòÿ%}Ô!Dóúòÿ%uÔ!Dóúòÿ%mÔ!Dóúòÿ%eÔ!Dóúòÿ%]Ô!Dóúòÿ%UÔ!Dóúòÿ%MÔ!Dóúòÿ%EÔ!Dóúòÿ%=Ô!Dóúòÿ%5Ô!Dóúòÿ%-Ô!Dóúòÿ%%Ô!Dóúòÿ%Ô!Dóúòÿ%Ô!Dóúòÿ% Ô!Dóúòÿ%Ô!Dóúòÿ%ýÓ!Dóúòÿ%õÓ!Dóúòÿ%íÓ!Dóúòÿ%åÓ!Dóúòÿ%ÝÓ!Dóúòÿ%ÕÓ!Dóúòÿ%ÍÓ!Dóúòÿ%ÅÓ!Dóúòÿ%½Ó!Dóúòÿ%µÓ!Dóúòÿ%­Ó!Dóúòÿ%¥Ó!Dóúòÿ%Ó!Dóúòÿ%•Ó!Dóúòÿ%Ó!Dóúòÿ%…Ó!Dóúòÿ%}Ó!Dóúòÿ%uÓ!Dóúòÿ%mÓ!Dóúòÿ%eÓ!Dóúòÿ%]Ó!Dóúòÿ%UÓ!Dóúòÿ%MÓ!Dóúòÿ%EÓ!Dóúòÿ%=Ó!Dóúòÿ%5Ó!Dóúòÿ%-Ó!Dóúòÿ%%Ó!Dóúòÿ%Ó!Dóúòÿ%Ó!Dóúòÿ% Ó!Dóúòÿ%Ó!Dóúòÿ%ýÒ!Dóúòÿ%õÒ!Dóúòÿ%íÒ!Dóúòÿ%åÒ!Dóúòÿ%ÝÒ!Dóúòÿ%ÕÒ!Dóúòÿ%ÍÒ!Dóúòÿ%ÅÒ!Dóúòÿ%½Ò!Dóúòÿ%µÒ!Dóúòÿ%­Ò!Dóúòÿ%¥Ò!Dóúòÿ%Ò!Dóúòÿ%•Ò!Dóúòÿ%Ò!Dóúòÿ%…Ò!Dóúòÿ%}Ò!Dóúòÿ%uÒ!Dóúòÿ%mÒ!Dóúòÿ%eÒ!Dóúòÿ%]Ò!Dóúòÿ%UÒ!Dóúòÿ%MÒ!Dóúòÿ%EÒ!Dóúòÿ%=Ò!Dóúòÿ%5Ò!Dóúòÿ%-Ò!DH‹% H‹% H‹% H‹% „H=¹Ò!H²Ò!H9øtH‹æÑ!H…Àt ÿà€Ã€H=‰Ò!H5‚Ò!H)þHÁþH‰ðHÁè?HÆHÑþtH‹åÑ!H…ÀtÿàfDÀóú€=EÒ!u+UHƒ=ÊÑ!H‰åt H=æÊ!è™þÿÿèdÿÿÿÆÒ!]ÃÀóúéwÿÿÿ€óúHc•Ñ!H‹‡ H‹ÐHƒÀÃDóúH‹GxH8HPüH‰Wx‹H‹WƒÀH˜H‰ ÂH‹WHÂH‰Ãff.„UH‰ýS‰óHƒìH‹ÖÐ!‹8è‡úÿÿ…ÛxHcÃH@HÁà¶Dƒàƒè ƒøwHƒÄ‰Ø[]ÀSÿHcÂH@HÁàHʼnӃúÿtضEHƒí`ƒàƒè ƒøvŃêëá„óúHƒìH‹YÐ!‹8è úÿÿHƒÄH8Ãff.„@óúAWAVAUI‰õATUH‰ýSHƒì(dH‹%(H‰D$1ÀH‹ Ð!‹8èºùÿÿHcSÐ!H‰ÃH‹€ HÐHiH…í„”‹E L‹2E1ä©àt-I‹V‹Rƒâƒú¢© tƒ»Ì….fDöÄÿu{¶Ðƒúts‰ÁáÿÀù tcƒú ‡:HŽhM…ät%HƒìA¹jI‰À1É1ÒL‰æH‰ßèXõÿÿI‹D$ZYH‹\$dH3%(…mHƒÄ([]A\A]A^A_ÃfDöÄt[öÄ„’% =…jH‹EH‹PH‹EH‰T$H…ÒuHÇD$HôgM…ätŽHƒìjL‹L$ éeÿÿÿ€H‰ßèðûÿÿºH‰ßH‰ÆI‰Çè½õÿÿ‹M öÅ…A‰È% =…/H‹EH‹@H‰D$H‹EH‰D$M…íu"I‹FH‹px‹F % =…9H‹L‹h Iƒý¹HSgH‹T$LBéL5söE LDðA‹G IMþ%H9ʆ´IU…Àu I‹H9Ps L‰þH‰ßè÷ÿÿL‰òL‰þH‰ß¹è•ùÿÿH‹T$L‰þH‰ßIMûA¸è«óÿÿ¹L‰þH‰ßA¸HlèŽóÿÿé“f„HT$¹H‰îH‰ßè‹õÿÿH‹T$éˆþÿÿH‰îH‰ßè%øÿÿ‹E öÄÿ…AþÿÿéÁýÿÿ@H‹UöB„¢H‹H‹0‹F ©„Ž%ÿÿÿï‰F ‹E % =…-H‹EH‹UH‹HH‰ÐH‰L$ö@tH‹H‹H @L‰þH‰ßèøÿÿM…ät¹L‰âL‰þH‰ßèÅ÷ÿÿA‹G % =…‘I‹Gégýÿÿ„á ù…–H‹EH‹HH‰L$ë—€‰ÁH‹Uá€ù€„`öÄ„'H‹r H=dl1ÀèeøÿÿH‰ÅM…ät¹L‰âH‰îH‰ßè*÷ÿÿH‰îH‰ßèÏöÿÿH‹@éÕüÿÿfD1ÒH56eH‰ßèõÿÿH‰ßH‰Æè¤öÿÿI‰Ä‹E ©@…ƒ© …P©€…A¸¹L‰æH‰ßH8jè ñÿÿH‹EL‹xM…ÿt%IWA¸L‰æH‰ß¹èvñÿÿM‹?M…ÿuÞA¸¹L‰æH‰ßH¬nèQñÿÿ‹E é§ûÿÿf„HƒÂ…Àu I‹H9Ps L‰þH‰ßèdôÿÿ¹L‰òL‰þH‰ßèáöÿÿH‹L$L‰þH‰ßH‹T$A¸èöðÿÿA¸L‰òL‰þH‰ß¹èÝðÿÿM…ät¹L‰âL‰þH‰ßèÕõÿÿA‹G % =…ñI‹H‹@H‰D$I‹GöE …fûÿÿH‹L$ë=H4H‹=¥Ê!¶ƒá‹ ‰Ïç@@ÿ@@táDùDtÆ.H‹T$H‰ÑHQÿH‰T$H…ÉuµéûÿÿHT$¹H‰îH‰ßèKòÿÿH‰D$éÈûÿÿòB(H=`c¸è:öÿÿH‰ÅéÐýÿÿfºH‰ßèCïÿÿI‰Åé¹ûÿÿHT$¹H‰îH‰ßèóñÿÿH‹L$H‰ÂéîüÿÿfDHT$¹L‰þH‰ßèËñÿÿéÿÿÿfDA¸¹L‰æH‰ßHsoèƒïÿÿéÁýÿÿfDA¸¹L‰æH‰ßH­bè[ïÿÿ‹E é‹ýÿÿA¸¹L‰æH‰ßHÁmè3ïÿÿ‹E éXýÿÿ1ÒH‰îH‰ßè»ïÿÿéåùÿÿfDHT$¹L‰þH‰ßèñÿÿéÅùÿÿfDH‹r H=-b1ÀèõÿÿH‰Åé¤üÿÿHT$¹H‰îH‰ßèáðÿÿH‹L$H‰ÂH‹EéÁûÿÿèËïÿÿff.„óúS1À‰ûH=ÐwèKïÿÿK¸ƒùw¸HÓà©”À¶À[Ãf„AUATI‰üUH‰ÕSH‰óHƒì‹F öÄteL‹nM…í…°H…ítjHc œÈ!I‹”$ H‹ÊH‹RöBuvöÄÿu<t %ÿÀ= uI1öH‰ßèÇõÿÿH‰îH=ÍwH‰Â1Àèãñÿÿ‰ÂI‰õ€ú užâàuNH…íua1ÀHƒÄ[]A\A]Ã@H9wH‰îH=gw1Àè ñÿÿH‰ÞL‰çèeôÿÿ‹C éwÿÿÿDA‹U ë§f¾PL‰ïècóÿÿH…Àt6H‹@ ë¡H‰ÞL‰çè-ôÿÿ1öH‰ßè#õÿÿH‰îH=QwH‰Â1Àè?ñÿÿ€¾~L‰ïèóÿÿH‰ÂH‰ØH…Ò…UÿÿÿH…í„JÿÿÿH‰ÞL‰çèØóÿÿ1öH‰ßèÎôÿÿH‰îH=,wH‰Â1Àèêðÿÿf.„óúH‹6H‹?éqïÿÿ¶H‰þƒèDÿà¹H=HcÂH‰ß1ÒH‹4ÁH,ÅèãúÿÿI‰ÅH‹@pL‹`M…ät6A‹D$ º© …öÄÿ…<„…‰ÂâÿÀú tuI‹EhL‹hM…ít4A‹E © …±öÄÿ…È<„À‰ÂâÿÀú „¬L‹kL‰æH‰ßºèèÛÿÿIíI‰EHkH‰+HƒÄ[]A\A]ÀöÄt3I‹$H…À„yÿÿÿH‹@Hƒøw°H…À„fÿÿÿI‹D$€80uéWÿÿÿ@öÄ„·öÄ…–öÄ„8ÿÿÿI‹$fïÀf.@(Šfÿÿÿ„ÿÿÿé[ÿÿÿ€öÄt+I‹EH…À„BÿÿÿH‹@Hƒø† M‰ìé,ÿÿÿ„öÄtköÄt I‹UHƒz uÛöÄ„ÿÿÿI‹EfïÀf.@(zÄñþÿÿë»I‹$Hƒz …ÝþÿÿéVÿÿÿ@1ÒL‰æH‰ßè3×ÿÿ„À…¿þÿÿéyþÿÿfD1ÒL‰îH‰ßè×ÿÿ„ÀMEåéœþÿÿ„H…À„‹þÿÿI‹E€80MEåé{þÿÿ€ºL‰îH‰ßèÐÖÿÿë»H5[Uè‚ÚÿÿfóúAUATUSH‰ûHƒìH‹GxH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒø…ÙHcíH‹4ê1ÒL$íèYøÿÿH‹P`L‹jA‹U öÆÿ…”€ú„‹‰ÑáÿÀù t{H‹@hH‹pH…ö„“‹F © …\öÄÿu<t‰ÂâÿÀú ulöÄ„¿H‹H…ÀtXH‹@Hƒø†H‰ßºH5GLè ÚÿÿH‰ßH‰Æè"Ûÿÿë0â úuBI‹u¹H=Ló¦—À„ÀuGHƒPH‹SH‰êLcL‰#HƒÄ[]A\A]ÃfDL‰î¹1ÒH‰ßèØÿÿH‰Æë«f„ºL‰îH‰ßèÐØÿÿë®fDöÄt;öÄtH‹Hƒz …?ÿÿÿöÄt„H‹fïÀf.@(Š(ÿÿÿ„lÿÿÿéÿÿÿfD1ÒH‰ßèîÔÿÿ„À…ÿÿÿéJÿÿÿH…À„@ÿÿÿH‹F€80…éþÿÿé.ÿÿÿDºH‰ßè³Ôÿÿ„À„ÿÿÿéÅþÿÿH‰÷H50SèWØÿÿ€óúATUSH‰ûH‰÷H‹CxH‹KH‹3HPüH‰SxHcPHÁH)ÆH‰ðHÁøƒøuEHcÂH‰ß1ÒH‹4ÁH,Åè-öÿÿL‹cH‰ßºH‹@hIìH‹pè±×ÿÿI‰$HkH‰+[]A\ÃH5žRèÅ×ÿÿDóúATUSH‰ûH‰÷H‹CxH‹KH‹3HPüH‰SxHcPHÁH)ÆH‰ðHÁøƒøuAHcÂH‰ß1ÒH‹4ÁH,ÅèõÿÿL‹cH‰ßºH‹p8Iìè%×ÿÿI‰$HkH‰+[]A\ÃH5Rè9×ÿÿf„óúH‹GxH‹OL‹HPüH‰WxHcPHÁI)ÀL‰ÀHÁøƒøuHcÂH—8H‰ÁH‹WHÂH‰ÃPH‰÷H5¯QèÖÖÿÿfDóúAVAUATUSH‹GxH‰ûH‹/HPüH‰WxH‹WH‰éHcD`HÂH)ÁH‰ÈHÁøƒø…¨McäHƒíN‹,â1ÒL‰îè¨ôÿÿH“hI‰ÆH‹CJ‰àA‹¨tuI‹V ¨t,H…Òt'ƒ»Ìt‹BDƒè‰BDHcR@ˆt9ÐlA‹I‹NPƒàûA‰öA„¥A‹E % =…ÓI‹UH‹yH5l_1ÀèMØÿÿA‹‰Âƒâ…Òtoƒ»Ì„‹I‹F ötkH‹CxL‹#HƒÀH‰CxH;ƒ€„ŸL‰âH+SHÁú‰H‹C L)àH…ÀŽ’M‰l$IƒÄºH‰ßL‰#H5Zè‚ÒÿÿH‰+[]A\A]A^ÃfD‹pDNÿ‰HD‹@@…Éxz9ÁvA‹ƒàûA‰H‰+[]A\A]A^À¹1ÒL‰îH‰ßèÔÿÿI‹NPH‰ÂéÿÿÿfH‰ßè˜×ÿÿéTÿÿÿL‰âL‰æ¹H‰ßèÑÿÿI‰ÄéSÿÿÿH‰÷H5ÐJèÖÔÿÿHcÐHcñH= ^1Àè¢ÕÿÿHcðH=ø]1Àè‘ÕÿÿóúATUSH‹GxH‰ûH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒøufHcíH‹4ê1ÒL$íè“òÿÿ‹H‹H öÂt%H…Ét ƒ»Ìt‹yDHcQ@wÿ‰qD9Ö5…öx1‹ƒâû‰H‹CH“hH‰èLcL‰#[]A\ÃH‰÷H5þIèÔÿÿHcöH=:]1ÀèÓÔÿÿóúATUSH‰ûH‰÷H‹CxH‹KH‹3HPüH‰SxHcPHÁH)ÆH‰ðHÁøƒøuJHcÂH‰ß1ÒH‹4ÁH,ÅèÍñÿÿH‰ßH‹° èþÖÿÿL‹cH‰ßH‰ÆèÕÿÿIìI‰$HkH‰+[]A\ÃH5ZIè`ÓÿÿóúATUSH‹GxH‰ûH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒøu3¾õ;HcíèŒÖÿÿL‹cHÁåH‰ßH‰Æè©ÔÿÿIìI‰$HkH‰+[]A\ÃH‰÷H5ÀMèçÒÿÿ€óúATUSH‰ûH‰÷H‹CxH‹KH‹3HPüH‰SxHcPHÁH)ÆH‰ðHÁøƒøuSHcÂHc5ì©!H‹“ H‹<ÁH,ÅL‹$ò1öè.×ÿÿH52EI‹T$H‹zH‰Â1ÀèÄÔÿÿH‹CHD(øH‰[]A\ÃH5£KèGÒÿÿ€óúAWAVAUATUSH‰ûHƒìH‹GxH‹/HPüH‰WxH‹WHcI‰ÎAH ÊH)ÍHÁýMÿƒù‡H˜L$ÅL‹<ƒý޹AFH˜H‹4‹F % =…„L‹nƒý„–AFH‹SH˜H‹4‹F % =…ŽH‹‹h 1ÒL‰þH‰ßè³ïÿÿI‰Æƒý~ L‰þH‰ßè Õÿÿ‰éL‰êL‰öH‰ßèPâÿÿH‹CJD øH‰HƒÄ[]A\A]A^A_ÃD¹1Òè4ÐÿÿI‰Åélÿÿÿ@L-íC1ÒL‰þH‰ß1íèBïÿÿI‰ÆëDºH‰ßè+Íÿÿ‰ÅédÿÿÿH‰÷H5šZèåÐÿÿDóúAVAUATUSH‰ûH‰÷H‹CxH‹+H‹KHPüH‰îH‰SxHcPHÁH)ÆH‰ðHÁøƒø…ÇHcÒH‰ßLeøL‹,Ñ1ÒL‰îè³îÿÿL‰îHÄRH‰ßI‰ÆèîÞÿÿºH‰ßH‰Æè.ÐÿÿI‹vH‰ßI‰ÅèÓÿÿH‰ßH‰ÆèäÑÿÿI‰ÆH‹C L)àHƒø~DM‰t$H‹C¶@"ƒàt"<”À„Àt M‰l$Il$H‰+[]A\A]A^ÃH‰ßèhÑÿÿ<•ÀëÔL‰âL‰æ¹H‰ßèÌÿÿI‰ÄHhë H5$IèÈÏÿÿ„óúATUSH‰ûH‰÷H‹CxH‹KH‹3HPüH‰SxHcPHÁH)ÆH‰ðHÁøƒøuAHcÂH‰ß1ÒH‹4ÁH,ÅèíÿÿL‹cH‰ßºH‹p8Iìè%ÏÿÿI‰$HkH‰+[]A\ÃH5•Hè9Ïÿÿf„óúAVAUATUSH‰ûH‰÷H‹CxHPüH‰SxH‹SHcH‹H‹3hHÂD‹i(H)ÆH‰ðHÁø…À…H‹Cö@#t^H‹HH‹CL‹$ÈA‹D$ HcíLtêøIcÕ‰Ááÿ™ƒùuM€»¹tD€ÌI‰T$A‰D$ M‰fH‹CHèH‰[]A\A]A^ÀH‰ßè¨ÒÿÿH‹SI‰Äë€L‰æH‰ßèÌÿÿë¼H5 EèOÎÿÿff.„@AUI‰ýATUH‰ÕSH‰óHƒìH‹¥!‹8èÏÎÿÿH…Û„–‹S I‰ÄöÆÿu+€út&‰ÑH‰èáÿÀù tHƒÄ[]A\A]Ä÷ …¤öÆt_H‹H…À„ƒH‹@Hƒø†eH‰ÞL‰çèúÉÿÿ…À„’‹C % =…_H‹H‹@ ë“fDHƒÄH‰è[]A\A]ÃföÆ„öÆt H‹Hƒx u£€ætH‹fïÀf.@(zuŽ1ÀHƒÄ[]A\A]úH‰ÞL‰çè`Éÿÿ„À…cÿÿÿëÖfDI‹D$xI‹,$HƒÀI‰D$xI;„$€„0H‰êI+T$HÁú‰I‹D$ H)èH…ÀŽñL‰mI‹T$ HEH)ÂH…ÒޏH‰XHƒÀºL‰çI‰$H5?è¨Éÿÿƒø…ÜI‹$H‹0HXø‹F % =ueH‹H‹@ I‰$HƒÄ[]A\A]À1Òé&ÿÿÿH…À„ÿÿÿH‹C€80……þÿÿ1ÀéõþÿÿHƒÄH‰ÞL‰çº[]A\A]éFÈÿÿfDºL‰çè3Èÿÿ듹H‰ÂH‰ÆL‰çèÈÿÿé0ÿÿÿ„H‰êH‰î¹L‰çè}ÈÿÿH‰ÅéôþÿÿDL‰çèHÎÿÿéÃþÿÿH=‰>1Àè…ÌÿÿDóúAWI‰ÿAVAUATUSHƒìH‹GxH‹/HPüI‰íH‰WxH‹WHcXHÂI)ÅIÁýIcÍHÍH)ÅE…íˆÕH‹G H)èHÁøH9ÈŒÁE…펠I‡8LuF$+H‰D$ë3f.„<t8‰ÁáÿÀù t(H‹D$ƒÃIƒÆI‰FøD9ãtNI‹OHcÃH‹4Á‹F öÄÿtÄöÄt H‹HƒxtÉL‰ÿè ÇÿÿI·PIh…ÀHD΃ÃIƒÆI‰NøD9ãu²AEÿHlÅI‰/HƒÄ[]A\A]A^A_ÃfDH‰êH‰îL‰ÿèÇÿÿH‰Åé)ÿÿÿfóúAWAVI‰þAUATI‰ôUSHƒìxdH‹%(H‰D$h1ÀH‹)¡!‹8èÚÊÿÿ1ÒL‰öH‰ÇH‰ÃèJèÿÿI‰ÅA‹D$ % =…êI‹$M‹T$H‹@H‰D$`A·EH‹hH‰ $A‰Ãƒø„܃øt_ùH‹D$`H‰D$Hƒø …å¹ H=@=L‰Öó¦—€ڄÒ„öA¶ Q¿€ú‡¦H Ïm¶ÒHc‘HÊ>ÿâfH‹D$`H‰D$Hƒøu¡¹H=ä<L‰Öó¦—€ڄÒ„iA¶ Q¿€ú‡FH Öm¶ÒHc‘HÊ>ÿâDHT$`¹L‰æH‰ßèÈÿÿI‰Âé ÿÿÿA¶B¼<‡¹H êm¶ÀHcHÈ>ÿàHƒ|$ …i¹H=î;L‰Öó¦—À„À…ËA¶Bÿàf„A÷E„JH«hH…í„ìýÿÿI‹EPL=C>‹@ƒàƒøîé_¹H=Ì;L‰Öó¦—À„ÀuiH5…7fAƒût+† H5kJfAƒûtfAƒûH5è>H*?HEð1ÒH‰ßL‰T$èÇÿÿL‹T$H…ÀH‰Å… H‹D$`H‰D$fDH«8HƒìI‹vE1ÉL‰Òj‹L$H‰ßA¸ L‰T$èRÉÿÿ^_H…ÀL‹T$„H‹0H‰ßè‡ÆÿÿH‰Å@I‹EPL=Q=‹@ƒàƒø~J1öH‰ïè ËÿÿL‰ç1öH‰D$èËÿÿ1öL‰÷I‰ÄèËÿÿI‹UPM‰ùL‰áL‹D$H5$;H‹zH‰Â1ÀèÈÿÿH9,$t&HƒPH9ÅtHƒ8H9ÅtH‰îH‰ßè§ÇÿÿH‰ÅH‹L$hdH3 %(H‰è…ŽHƒÄx[]A\A]A^A_ÃfDI‹E H‰ßL‰T$D‰\$H‹pè~ÈÿÿH‰ÅH…À…"ÿÿÿH‹D$`D‹\$L‹T$H‰D$éÚûÿÿf„A¶õÿÿé’÷ÿÿ„H‹BL‰×D‰\$L‰T$H‰D$A¶BˆD$?蜵ÿÿL‹T$¹H=æ*D‹\$ItûL‰T$ ó¦—À„À…¾ H‰ßè`ºÿÿD‹\$L‹T$ HÇD$H‰D$0Ic¯”H‹D$‰l$ö@€…H‹D$H‹H‹@HƒÀH9Å„·ƒ|$ÿ½„øH‹D$ö@€…¼H‹H‹@ƒÀ‰D$I‹GP‹@ƒàƒø ^…í„€AöEtyH-Õ)H‹D$ö@€…ÆH‹D$H‹L‹@IƒÀA‹”1öL‰çL‰T$HD‰\$(L‰D$@‰L$ èL»ÿÿI‹WP‹L$ I‰éL‹D$@H5]@H‹zH‰Â1Àè׸ÿÿD‹\$(L‹T$H‹D$L‰l$HfD‰\$@ƒèL‰T$ LcøL‰t$PA‰ÅL‰d$Xë;H‹EH‰D$H‹D$ €xhupHƒ|$„H‹t$H‰éL‰úH‰ßè‘´ÿÿIƒïAƒíE…íˆRH‹D$H‰ßH‹@J‹4øèÛµÿÿH‰Å‹@ % =t•¹1ÒH‰îH‰ßèÇ´ÿÿH‰D$ë…L‹t$M…öt†E¶&E„ä„yÿÿÿH‰l$(H‰ÝL‰óD¶t$?ë(fD„ÀtDH‹­Œ!F¶$ Dˆ#HƒÃt^D¶#E„ätU¶…¬A€þuuÑ„Àu$èX±ÿÿH‹F¶$ ëÎfD裹ÿÿH‹F¶$ ë¹A€üµtoA€üÿttA€üßt§H‹XŒ!F¶$ ë™H‰ëH‹l$(éÜþÿÿL‰þH‰ßèq¸ÿÿHƒìH‰ßA¸$I‰ÁH‹EH‹HjH‹t$@H‹T$(èx·ÿÿAZH‰îA[H‰ßèé°ÿÿé³þÿÿA¼œÿÿÿé9ÿÿÿA¼xé.ÿÿÿH‹D$H‹L$0H‰ßD·\$@L‹T$ H…ÀL‹l$HL‹t$PHEÈD‰\$L‹d$XL‰T$H‰Îèþ°ÿÿL‹T$D‹\$H…ÀH‰Å…ˆðÿÿA¶A¿é€ìÿÿf„ºH‰ßL‰T$è^°ÿÿL‹T$H‰Æé~úÿÿH‰ÖH‰ßL‰T$D‰\$H‰T$è·µÿÿH‹T$L‹T$D‹\$‹B éìÿÿ¾ H‰ßD‰\$è¾¶ÿÿL‹T$ D‹\$HÇD$0H‰D$éYüÿÿH‰ÆH‰ßL‰T$(D‰\$ èü³ÿÿD‹\$ L‹T$(H˜HƒÀéYüÿÿ…íHZ*H-}&HDèéŸüÿÿI‹GP‹@ƒàƒø ŽþüÿÿH-0*é€üÿÿèZ±ÿÿH‹t$H‰ßL‰T$(D‰\$ 蓳ÿÿD‹\$ L‹T$(ƒÀ‰D$é%üÿÿH‹D$ö@€uCH‹D$1íH‹Hƒxÿ@•Åé÷ûÿÿH‰ÆH‰ßL‰T$(D‰\$ èE³ÿÿD‹\$ L‹T$(LcÀIƒÀéüÿÿH‰ÆH‰ßL‰T$ 1íD‰\$è³ÿÿD‹\$L‹T$ ƒÀ@•ÅéûÿÿE1ÿéñÿÿE1ÿéGðÿÿE1ÿéßðÿÿf.„óúAVAUATUSH‰ûH‰÷H‹CxH‹KH‹3HPüH‰SxHcH‰ÐjHÑH)ÖH‰òHÁúƒú…µƒÀHcíH˜L$íL‹,éL‹4ÁA‹F % =usI‹v¹H='ó¦—À„Àt(1ÒL‰öL‰ïè›çÿÿH‹SH‰êLcL‰#[]A\A]A^ÃHƒìI‹uE1ÉE1Àj1ÉL‰òH‰ßjj@è³ÿÿHƒÄ ë¾f„L‰ö¹1ÒH‰ßèž°ÿÿH‰ÆéwÿÿÿH5&花ÿÿf.„óúATUSH‰ûH‰÷H‹CxH‹KH‹3HPüH‰SxHcH‰ÐjHÑH)ÖH‰òHÁúƒúu3ƒÀHcí1ÒH˜H‹<éL$íH‹4ÁèÄæÿÿH‹SH‰êLcL‰#[]A\ÃH5 &è±ÿÿ@óúATUSH‰ûH‰÷H‹CxL‹CH‹3HPüH‰SxHcH‰ÑBIÐH)ÖH‰òHÁúrÿƒþ‡}H˜1öH,ÅM‹$Àƒú~ƒÁHcÉI‹4È‹F % €=€u>H‹‹p L‰çè0µÿÿH‰ß1ÒH‰Æèó°ÿÿL‹cH‰ßH‰Æè²ÿÿIìI‰$HkH‰+[]A\úH‰ßèã¬ÿÿ‰Æë·H5K%è3°ÿÿóúAUATUSH‰ûH‰÷HƒìH‹CxH‹KH‹3HPüH‰SxHcH‰ÐjHÑH)ÖH‰òHÁúƒúuMHcíƒÀH‰ßºH‹4éH˜L$íL‹,Áè±ÿÿH‰ßL‰îH‰Âèz®ÿÿH‹CL‰,èLcL‰#HƒÄ[]A\A]ÃH5¹$蔯ÿÿ@AWI‰ÿAVA¾AUATUSHƒìH‹j†!‹8è°ÿÿA‹Ÿ”M‹¯˜H‰Å…ÛDIóM…í„»L‰îH‰ÇMcæè}¬ÿÿHƒÀL9à„ŽI‹GPö@…:Ae ÿÿÿ÷L‰îH‰ïAƒîèK¬ÿÿHƒÀI9ÄŒþ…Û~AMcæE‰öI\$ÿH‰ØL)ðI‰Æë@Hƒë1öH‰ï肬ÿÿL‰âL‰îH‰ïH‰ÁI‰Üè>­ÿÿI9ÞuÙI‹GP‹@ƒàƒøZAM HƒÄL‰è[]A\A]A^A_ÃI‹OP‹Aƒàƒøa¾ H‰ïAƒîèP±ÿÿILJ I‰ÅI‰‡˜éXÿÿÿfDL‰îH‰ïè…«ÿÿH59HPI‹GPH‹x1Àè‹°ÿÿé|ÿÿÿfDH‹yIcÖH5º81Àèk°ÿÿëˆf„IcÖL‰îH‰ïèB¯ÿÿéïþÿÿDL‰îH‰ïè«ÿÿL‰áH5C8HPI‹GPH‹x1Àè °ÿÿé™þÿÿff.„óúAWAVI‰öAUATI‰ÔUSH‰ûHƒì(H‹†„!H‰|$‹8H‰ $è.®ÿÿ1ÒH‰ÞH‰ÇI‰ÅèžËÿÿI‰ÇA‹F % =…×I‹‹X E‹—”E…ÒŽ˜I‹¯˜H…í„1I‹GP‹@ƒàƒø¾…ÛŽ‘D9ÓˆA‹D$ öÄÿtcöÄ„I‹D$ö@ ø…e ÿÿÿ÷I‹L$H…ÉtƒASÿH‰îL‰ïHcÒèE«ÿÿM HƒÄ(¸[]A\A]A^A_Ãf.„<t™‰ÂâÿÀú t‰©t‚ëźL‰öL‰ïè ¨ÿÿ‰Ãéÿÿÿf„H‹<$1öD‰T$è±ÿÿ1öL‰çH‰D$èñ°ÿÿ1öL‰÷H‰$èã°ÿÿI‹WPH‹ $H5œ7L‹D$H‹zH‰Â1Àèq®ÿÿD‹T$ééþÿÿ€L‰ÿD‰T$ècüÿÿD‹T$H‰Åéµþÿÿ1öL‰ç茰ÿÿ1öL‰÷H‰Åè°ÿÿH‹|$1öH‰Ãèp°ÿÿH‰éH‰ÚH=‹7H‰Æ1À艬ÿÿAöHž6H5c"HDðH=Ô61Àèe¬ÿÿD‰Ò‰ÞH=71ÀèR¬ÿÿfóúAUATUSH‰ûHƒìH‹GxL‹GH‹HPüH‰WxHcH‰ÐjIÐH)ÑHÁùQýƒú‡äPHcíHcÒL$íM‹,èI‹4ÐPHcÒI‹Ѓù~+ƒÀH˜I‹ÀH…Àt‹H öÅÿuV€ùtQ‰ÏçÿÀÿ tA1ÀH‰ÁL‰ïèýÿÿH‹hH“P…ÀH‹CHEÑH‰èLcL‰#HƒÄ[]A\A]ÃfDöÅt H‹x€ t²á ùuVH‹hA‹E % =u.I‹EH‰ÆH‰éH>.1ÀH=e6è(«ÿÿH‰÷H5oè9ªÿÿ¹1ÒL‰îH‰ßè'©ÿÿë¹1ÒH‰ÆH‰ßè©ÿÿH‰Åë—ff.„óúATUSHƒìdH‹%(H‰D$1ÀH…öt_‹F I‰üH‰õ‰ËöÄÿt?ƒú„6ƒú„¸þÿÿÿƒútCH‹L$dH3 %(…äHƒÄ[]A\ÃfD<t½%ÿÀ= t±¸ÿÿÿÿëÆf„H‹EH‹uH‰áL‰çHÇ$H‹Pè¨ÿÿƒø„èƒø „…À…w‰ØÑèƒðƒàéuÿÿÿ„ºH‰îL‰çè@©ÿÿ‹E %…Àt̓ãt_‹E öÄtWHƒ}tP©…í1ÒH‰îL‰ç訦ÿÿH‹EHƒx…áe ÿ»ÿÿHÇEHÇ@H‹EHÇ@fD¸éãþÿÿfDºH‰îL‰çè°¤ÿÿ‹E %=”À¶Àé`ÿÿÿ„ƒãHƒ<$ºH‰îL‰çx;èv¤ÿÿ…Û…?ÿÿÿëœ@ƒãHƒ<$y^ºH‰îL‰çèN¨ÿÿ…Û…ÿÿÿéqÿÿÿ諤ÿÿ…Û…ÿÿÿé^ÿÿÿfDH‰ïèЧÿÿéÿÿÿH‹}è¿©ÿÿH‹Eé ÿÿÿfDºH‰îL‰çéuÿÿÿƒãëè¶¥ÿÿfDóúAWAVAUATUSH‰ûHƒìH‹GxH‹/HPüH‰WxH‹WHcI‰ÏAH ÊH)ÍHÁýMþƒù‡XH˜L$ÅL‹,ÂAGH˜H‹4‹F % =…½H‹D‹H H‹Cö@#„ÃH‹PH‹CL‹4Ð1ɃýeD‰ÊE1ÀL‰îH‰ßèýÿÿH‹SA‹N Jl"øHcЉÈ%ÿ™ƒø…Ä€»¹„·€ÍI‰VA‰N L‰uLcL‰#HƒÄ[]A\A]A^A_ÃfH‹CAWHcÒH‹4ЋF % €=€uJH‹‹H érÿÿÿ€º覢ÿÿA‰ÁH‹Cö@#…=ÿÿÿH‰ßD‰L$ 航ÿÿD‹L$ I‰Æé/ÿÿÿºH‰ßD‰L$ èÖ¢ÿÿD‹L$ ‰Áéÿÿÿf.„L‰öH‰ßèE¤ÿÿéDÿÿÿH‰÷H5Uè¦ÿÿAWAVI‰öAUI‰ýATUSHƒì8dH‹%(H‰D$(1ÀH‹Í|!‹8è~¦ÿÿAöE „/M‹eA€|$ …L‰æH‰ÇH‰Ãèå¢ÿÿHƒøŽ›A‹F öÄÿuB<t>‰ÂâÿÀú t.fDH‹D$(dH3%(…ëHƒÄ8[]A\A]A^A_ÃDöÄ„PI‹n¶E ƒø „^ƒø …6¹1ÒL‰æH‰ßè[§ÿÿ¹1ÒH‰îL‹(H‰ßèF§ÿÿL‹0A‹E öÄt A‹N öÅ……% =…¥I‹EòH(A‹F % =…`I‹ò@(òXÁL‰îH‰ßè¡ÿÿ¹ºL‰æH‰ßèÔ¦ÿÿL‹(A‹E % =… I‹Eòx(ò|$¹ºH‰îH‰ß虦ÿÿ¹H‰îH‰ßH‹º‹@ % =„³èn¦ÿÿºH‰ßH‹0èN¤ÿÿòXD$L‰îH‰ßè} ÿÿ¹H‰îH‰ßºè8¦ÿÿ¹H‰îH‰ßH‹º‹@ % =„2è ¦ÿÿºH‰ßH‹0èí£ÿÿòD$¹ºL‰æH‰ßèâ¥ÿÿL‹(A‹E öÄÿ…Â<„º‰ÂâÿÀú „¦òD$L‰îH‰ßèÕŸÿÿ¹ºH‰îH‰ßè¥ÿÿ¹H‰îH‰ßH‹º‹@ % =„2èe¥ÿÿºH‰ßH‹0èE£ÿÿòD$¹ºL‰æH‰ßè:¥ÿÿL‹(A‹E % =…“I‹Eò\$ò@(f/؇š¹ºH‰îH‰ßèõ¤ÿÿ¹H‰îH‰ßH‹º‹@ % =„wèʤÿÿºH‰ßH‹0誢ÿÿòD$¹ºL‰æH‰ß蟤ÿÿL‹(A‹E öÄÿ…¯<„§‰ÂâÿÀú „“òD$L‰îH‰ßA½茞ÿÿ¹ºH‰îH‰ßèG¤ÿÿ¹H‰îH‰ßH‹º‹@ % =„)è¤ÿÿºH‰ßH‹0èü¡ÿÿL‰æ¹ºH‰ßòD$èñ£ÿÿE…íòD$H‹0u‹F öÄÿu<t%ÿÀ= tH‰ßèóÿÿ¹ºH‰îH‰ß讣ÿÿ¹H‰îH‰ßH‹º‹@ % =„p胣ÿÿºH‰ßH‹0èc¡ÿÿòD$¹ºL‰æH‰ßèX£ÿÿH‹(‹E % =…êH‹Eò@(òd$f/à†qûÿÿf(ÄH‰îH‰ßèJÿÿé]ûÿÿD% =…0I‹Eò@(f/D$‡5ýÿÿéAýÿÿfD% =…I‹Eò@(f/D$‡HþÿÿE1íéWþÿÿºL‰îH‰ßè ÿÿòD$éçûÿÿDºL‰îH‰ßèp ÿÿò\$f/؆fýÿÿf(ÃL‰îH‰ß葜ÿÿéRýÿÿ@ºH‰îH‰ßè8 ÿÿé ÿÿÿºL‰æH‰ß1í莤ÿÿë@HƒÅHƒý„?úÿÿL‰æ¹H‰êH‰ßè¢ÿÿH‹0‹F öÄÿuÔ<tÐ%ÿÀ= tÄEýƒàýt¼fïÀH‰ßèœÿÿë®fDºL‰îH‰ßè°ŸÿÿéÄþÿÿºL‰îH‰ß蘟ÿÿéÜþÿÿºL‰öH‰ßòL$èzŸÿÿòL$é‡úÿÿ€ºL‰îH‰ßèXŸÿÿf(ÈéKúÿÿ€èS¡ÿÿH‹H‹òp(òt$é‰üÿÿDè3¡ÿÿH‹H‹òh(òl$éÎûÿÿDè¡ÿÿH‹H‹òx(ò|$éýÿÿDèó ÿÿH‹H‹ò@(é×üÿÿèÛ ÿÿH‹H‹òx(ò|$éÎúÿÿDè» ÿÿH‹H‹ò@(éMúÿÿ% =uLI‹EL‹x á ùuI‹H‹@ IL‰îH‰ßè¢ÿÿé‚ùÿÿºL‰öH‰ßèHšÿÿë×fDºL‰îH‰ßè0šÿÿA‹N I‰Çë£1öL‰÷è¢ÿÿH=n*H‰Æ1À輞ÿÿ@H‰îLt$Ld$ H‰ßÇD$èŸÿÿL‰ñL‰âH‰îH‰ßèÿÿH…À„)øÿÿH‰ÆL‰ïè–÷ÿÿëÙ1öL‰ïè:¢ÿÿH=Ó)H‰Æ1ÀèYžÿÿèt›ÿÿ@óúAWI‰ÿAVAUATUSHƒìH‹GxH‹OH‹HPüH‰WxHcH‰ÂD`HÁH)ÃHÁû…ÛŽ Mcô1öJ‹,ñN,õöE „”H‹E€x …†ƒûtLÓë f„I‹OHcÃH‰ïƒëH‹4ÁèÚöÿÿA9ÜuåH‹u¹ºL‰ÿèÿžÿÿL‰ÿH‹0褜ÿÿH‰ÆL‰ÿèIžÿÿI‹WJ‰òMoM‰/HƒÄ[]A\A]A^A_ÃH‰÷H5æè|œÿÿH‰ïè$¡ÿÿH=5)H‰Æ1ÀèCÿÿóúAUATUSH‰ûHƒì(H‹dH‹%(H‰D$1ÀH‹GxHPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁø…À…ÒH‹Gö@#„¢H‹PH‹GL‹$ÐH‰ç1öHcíèYšÿÿH‹CfïÉfïÀòH* $òH*D$LlèøA‹D$ ò^ÎA‰ÂâÿòXÁƒúu]€»¹tT€Ì"A‰D$ I‹$ò@(M‰eH‹CHèH‰H‹D$dH3%(u1HƒÄ([]A\A]Ãf„苟ÿÿI‰Äé]ÿÿÿL‰æH‰ßèšÿÿë°è>™ÿÿH‰÷H5è/›ÿÿff.„@óúATI‰ôUSH‹^(H‹· H‰Úèœÿÿ¿@I‰D$(H‰ÅH‹H‹X(è9šÿÿóoóoKHóoS P óo[0X0H‹UH‰B(HÇ@(HÇ@01À[]A\ÄH‹‘q!SH‰û‹8è>›ÿÿH…Û¾HEóH‰Çè*˜ÿÿH‰Ú1öH‹HH‰ÏèI™ÿÿ[ÀóúAWAVAUATUSH‰ûHƒì(H‹GxH‹/HPüH‰WxHcH‹GI‰×DbHÐH)ÕHÁýUýƒú‡YMcäJ‹4àJ åH‰L$‹V â út¹1Òèæ˜ÿÿH‹CAWHcÒH‹4ЋV â ú…rH‹NH‰L$AWHcÒH‹4ЋF % =…+H‹FH‰D$E1öƒý¦H‹ƒ HcÈp!L‹<ÐI‹G‹@ƒàƒø 1H‹t$¹H=¿ó¦—À„À…p¾@¿E1íèÏ™ÿÿH‰ÅM…ö„…A‹F öÄÿ„NI‹v€~ …YöÄ…ŸM…ít\‹U …Ò…¿‹U…Ò…|H‹UH…Ò…AöF …,A‹E % =…)I‹UI‹OH5ä 1ÀH‹yèþšÿÿH‹t$H‰ßèœÿÿH‹¢o!H‹t$H‰ßH‰ÁI‰Çèg™ÿÿI‰ÆL‰xH‹HÇ@I‹H‰h(I‹ö@]€…¡H‹@8H‹H‹x HƒÇèM¨ÿÿHƒìM‰ñ1Ò‰E$L‰öH‰ßL”o!j¹~è8•ÿÿH“hL‹l$ €HH‹CJ‰àLkL‰+HƒÄ8[]A\A]A^A_Ãf.„AƒÇH‹CMcÿN‹4øéFþÿÿ@<„ªþÿÿ‰ÂâÿÀú „–þÿÿM…í„ÿÿÿA‹E % =„×þÿÿ1Ò¹L‰îH‰ßè}–ÿÿH‰ÂéÁþÿÿD¹1ÒH‰ßèa–ÿÿH‰D$éÅýÿÿ€¹1ÒH‰ßèA–ÿÿH‰D$H‹Cézýÿÿ1ÒH5ó H‰ß蟗ÿÿH‰ßH‰Æè´˜ÿÿH‹t$¹H=r I‰Åó¦—À„À… M…í„§ýÿÿH‹T$H5Q L‰ïèt•ÿÿ¾@¿èe—ÿÿH‰ÅM…ö…–ýÿÿéèýÿÿ@L‰öH‰ßè5—ÿÿéSþÿÿI‹v€~ …ÆýÿÿWE1ÉA¸ ¹jH( H‰ßè™ÿÿAXAYH…À…·é”ýÿÿHƒìH‰ßE1ÉA¸ j¹HÌ èݘÿÿ^_H…ÀtH‹0‹F % =…H‹‹@ ‰E AöF „ ýÿÿI‹v€~ „M…í…ûüÿÿAöF „LýÿÿI‹v€~ …>ýÿÿHƒì¹E1ÉH‰ßjHr A¸ èY˜ÿÿZYH…À„ýÿÿH‹¹1ÒH‰ßL‹pL‰öèÕ—ÿÿ¹1ÒL‰öH‹H‰ß‹@ % =„2è­—ÿÿºH‰ßH‹0è‘ÿÿˆE¹ºL‰öH‰ßè…—ÿÿ¹L‰öH‰ßH‹º‹@ % =„èZ—ÿÿºH‰ßH‹0è:‘ÿÿˆE1ɺL‰öH‰ßè5—ÿÿLº H…Àt8H‹0‹F % =…ëL‹vL‰÷è§’ÿÿH‰ÇèúÿÿL‰öH‰Çè„‘ÿÿI‰ÀL‰EƒM M…í„üÿÿI‹G‹@ƒàƒø ŽÁûÿÿ¶M¶UL‰ï1ÀH5"è“ÿÿé£ûÿÿ€H5ü L‰ï1Àè÷’ÿÿH‹UH…Ò„sûÿÿH5ê L‰ï1ÀèÙ’ÿÿé]ûÿÿ@H5µ L‰ï1Àè¿’ÿÿé+ûÿÿf.„ºH‰ßè3ÿÿéäýÿÿfDHƒì¹E1ÉH‰ßjHKA¸ èu–ÿÿZYH…ÀtH‹0‹F % €=€…H‹‹@ ‰EAöF „¥úÿÿI‹v€~ …˜ýÿÿHƒìE1ÉA¸ H‰ßj¹Hqè–ÿÿAZA[H…À„hýÿÿH‹0‹F % =uDH‹H‹@ H‰EéFýÿÿ@è{•ÿÿH‹H‹¶@ éÏýÿÿ@ºH‰ßè»ÿÿédÿÿÿfDºH‰ßè3ÿÿë´è;•ÿÿH‹H‹¶@ éâýÿÿ@¹1ÒH‰ßèÙ‘ÿÿI‰ÆéþÿÿH‹t$H= 1Àèž“ÿÿH‰÷H5Ä诒ÿÿH‹t$H= 1Àè|“ÿÿff.„AVAUL‹-}i!ATI‰üUSA‹}è%“ÿÿHc¾i!¿ÐH‰ÅH‹€ H‹Ðè¶÷ÿÿºH5úH‰ïH‰CI‰Æè “ÿÿL‰òH‰ïH‰Æè –ÿÿH‹Cº^H‰ïH J¾]H‰H‹C¹Ðf‰PH‹Cf‰H H‹CH Bf‰p H‹CH‰ˆˆL‹sèj•ÿÿI‰FM…ä„­H‹CA‹T$‰PI‹D$xH‹SA‹}H‰BxL‹sèW’ÿÿH5P6H ¬ÿÿH‹Úh!I‰†€H‹CH= H‰p(H‹CH5˜ÿÿH‰H0H‹CH ÒhH‰p8H‹CH5óÆÿÿH‰H@H‹CH äQH‰pHH‹CH5uŸÿÿH‰xPH‹CH=,H‰HXH‹CH ÇH‰P H‹CH˜H‰p`H‹CH5IãÿÿH‰xhH‹CH=êæÿÿH‰ˆH‹C¹H‰˜H‹CºH‰° H‹CH5†H‰¸°H…8H‰ïH‰èOÿÿ¹ºH‰ïH5dè6ÿÿ¹ºH‰ïH5Tèÿÿ¹ºH‰ïH5Gèÿÿ¹ºH‰ïH59èëÿÿM…ä„‚[]A\A]A^Ãf„ºH5ÓH‰ïèÜÿÿºH5¿H‰ï‹@ % =t~è¹ÿÿºH‰ïH‰Æè ŒÿÿH‹SH5ãH‰ï‰BºèŽÿÿéýýÿÿf„H=¬è´‹ÿÿH…À„iÿÿÿH=—蟋ÿÿº 1öH‰Çèÿÿ‰Îf!éCÿÿÿDè;ÿÿH‹‹@ ëŠóúATUSH‰ûH‰÷H‹CxH‹3HPüH‰SxH‹SHchHÂH)ÆH‰ðHÁø…ÀubHcpf!H‰ß¾HcíH‹ƒ H‹ÐL‹`豌ÿÿHc Jf!H‹“ H‹@L‰çHÊH‹ H‰óoèFüÿÿH‹CHDèøH‰[]A\ÃH5Š蹎ÿÿf„óúUH‰ýSH‰óHìØH‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$)¬$ )´$°)¼$ÀdH‹%(H‰D$1ÀH‹/e!‹8èàŽÿÿH„$ðH‰âH‰ÞH‰D$HD$ H‰D$H‹EPÇ$H‹xÇD$0ègŽÿÿ¸H‹L$dH3 %(u HÄØ[]ÃèÓ‹ÿÿóúH‹½d!AVI‰þAUA‰ÕATE‰ÌUD‰ÅS‹8‰óèXŽÿÿƒû^uyAýÐupý˜u&Aü˜u|$0Àu|$8€u []A\A]A^ÃPH3A¹˜‰êPE‰à¹˜H5Th€‹D$PH=lPhÀ‹D$XP1Àè ŽÿÿHÓ2RE‰éA‰ØPL‰ñºÐ¾^H=·1Àèàÿÿƒ¿ÌtUSHƒìH‹*H…ítöE uHƒÄ[]Ã@ÀHƒìE1ɹ H‰ûjH‹6A¸0HñèJÿÿY^L‹A‹A öÄÿu<t %ÿÀ= u©HƒìAƒAH‹uH‰ßjA¸$¹ HªèÿÿXZHƒÄ[]Ãf.„óúAWAVM‰ÆAUM‰ÍATI‰ÔUSH‰óHƒìHH‹#c!H‰|$‹8H‰L$èÊŒÿÿH‰Å÷…ÛH‹CPö@…ýH‹ShA‹D$ L‹jöÄÿ„?H‹CpL‹HH‹C`L‹xM…Ét4A‹A © …Ó öÄÿ…â<„Ú‰ÂâÿÀú „ÆH‹T$¹L‰ÎH‰ïè ÿÿA‹D$ © …Y öÄÿ…жȃù„ĉÂâÿÀú „°A‹U öÆÿ…C€ú…hƒù…1% =…I‹|$‰T$èóˆÿÿ‹T$H‰D$â ú…Ø I‹}èψÿÿH9D$‡ é€öÄ„'I‹H…À„%ÿÿÿH‹@Hƒø†¥ M…ít8A‹E © …QöÄÿ…h<„`‰ÂâÿÀú „L@M…ÿt;A‹W ÷ …ãöÆÿ…j€ú„a‰Ð%ÿÀ= „O€H‹L$‹A ‰D$% =…L L‹AA‹A % =… I‹yL‰ÆL‰L$ès‰ÿÿL‹L$…À„]þÿÿL‰ÎH‰ïA¸¹H™詆ÿÿL‹L$H‹T$H‰ï¹L‰Î蟋ÿÿé!þÿÿf.„öÄ„wI‹$H…À„ªH‹@Hƒø†< ¹L‰âL‰îH‰ïèéŠÿÿM…ít4A‹E © …] öÄÿ…l<„d‰ÂâÿÀú „PM…öt9A‹F º© …‰ öÄÿ…^<„V‰ÂâÿÀú „BA‹G ‰Ââÿÿ_A‰W ©…7 H‹t$HSH‰ïHƒÆèÂûÿÿ¸HƒÄH[]A\A]A^A_ÃfD<„¹üÿÿ%ÿÀ= „©üÿÿAe ÿÿ_H‹ChH‹xöG…. H‹CpH‹@` ÿÿ_H‹CpH‹xöG…ý H‹C`H‹@` ÿÿ_H‹C`H‹xöG„rÿÿÿèˆÿÿ¸éhÿÿÿDöÄ„·öÄtI‹$Hƒz …‡þÿÿöÄtI‹$fïÀf.@(Šoþÿÿ…iþÿÿDA‹U öÆÿuw€útr‰Ð%ÿÀ= td¹L‰âL‰îH‰ïè1‰ÿÿéHþÿÿ@öÄ„_öÄtI‹Hƒz …×üÿÿöÄ„åûÿÿI‹fïÀf.@(мüÿÿ„Íûÿÿé±üÿÿfDA‹D$ ¶ÈöÄÿ„üÿÿ% =„üÿÿéšf.„H‹D$HƒìH‰ïE1ÉA¸ ¹ H·ûH‹pj褉ÿÿ_AXI‰ÇH…À„êúÿÿH‹0‹F © …ÌöÄÿ„[H‹EH‰D$A÷D$ … H‹D$÷@ …Ñ A÷F …£ A÷E …} H‹CPö@…çH‹ExHƒÀH‰ExH;…€„n H‹L$H‰ÊH+UHÁú‰H‹E H)ÈH…ÀŽ, H‹sH‰ïè‰ÿÿH‹L$H‰ïH‰ÆLAL‰D$ èLJÿÿH‹L$L‹D$ H‰AH‹E L)ÀH…ÀŽÉ M‰`H‹E IpH)ðH…ÀŽ‘ H‹L$HFH‰NH‹U H)ÂH…ÒŽ\ HpL‰pH‹E H)ðH…ÀŽÌ L‰nHƒÆºH‰ïH‰uI‹7èЈÿÿ…À„ÈH‹EL‹8HƒèH‰EH‹CPö@…ÀM…ÿ„uùÿÿA‹W ‰ÐÁèƒà… öÆÿu€út‰ÑáÿÀù …EùÿÿföÆ„—I‹H…Ò„.ùÿÿH‹RHƒú‡`üÿÿH…Ò„ùÿÿI‹W€:0…Jüÿÿéùÿÿf1öL‰ï覉ÿÿ1öL‰÷I‰Å虉ÿÿH‹|$1öI‰Ç芉ÿÿ1öL‰çH‰D$è{‰ÿÿH‹SPM‰éM‰øH‹L$H5H‹zH‰Â1Àè‡ÿÿ饸ÿÿf1ÒH‰ï¹L‰æèŽƒÿÿA‹U H‰Çéfùÿÿf<„ýÿÿ%ÿÀ= …]øÿÿéˆýÿÿ1ÒL‰æH‰ïè“€ÿÿ„À…ÏúÿÿéfüÿÿfD1ÒL‰ÎH‰ïL‰L$èn€ÿÿL‹L$„À„ƒøÿÿégùÿÿ@H‰ïèÀ…ÿÿI‹‹@ é!ýÿÿD‰ÁáÿÀù …*ûÿÿé¶øÿÿ€öÄ„'I‹EH…À„šúÿÿH‹@Hƒø†„HƒCxé‚úÿÿföÄ„?I‹H…Ò„©úÿÿH‹RHƒú†u% =… I‹~èTÿÿHƒø„Š1öL‰÷èˆÿÿH=yH‰Æ1Àèï€ÿÿHýõL‰þH‰ïèÍÿÿéaúÿÿ„öÄ„I‹EH…À„¢øÿÿH‹@Hƒø†ôA‹D$ © …œ öÄÿu<t‰ÂâÿÀú …gøÿÿ€öÄ…ïöÄ„ öÄt I‹$Hƒz u&öÄ„5øÿÿI‹$fïÀf.B(z„ øÿÿ„% =…€M‹D$A‹E % =…7I‹}L‰ÆL‰L$èÖÿÿL‹L$…À„Ñ÷ÿÿA‹D$ % =…$ M‹D$A‹E % =…Û I‹UL‰ÏL‰ÁH50ø1ÀL‰L$螀ÿÿL‹L$é|÷ÿÿ@M…ö•ÁöÆ„‘I‹H…À„÷ÿÿH‹@Hƒø†„É„‡÷ÿÿA‹F © …Ä öÄÿu<t‰ÂâÿÀú …[÷ÿÿöÄ…çöÄ„ööÄt I‹Hƒz uöÄ„.÷ÿÿI‹fïÀf.B(z„÷ÿÿf% =… M‹FA‹G % =…PI‹L‰ÆL‰L$è—€ÿÿL‹L$…À„ÒöÿÿA‹F % =…W M‹FA‹G % =… I‹WL‰ÏL‰ÁH5÷1ÀL‰L$èaÿÿL‹L$éöÿÿ€öÄ„çöÄtI‹UHƒz …×üÿÿöÄ„Z÷ÿÿI‹EfïÀf.@(Š»üÿÿ„A÷ÿÿé°üÿÿ@öÄ„ÏöÄtI‹Hƒz …¿üÿÿöÄ„Q÷ÿÿI‹fïÀf.B(Фüÿÿ„9÷ÿÿé™üÿÿfDH‰ï¹1ÒL‰îèÿÿH‰ÇéõÿÿfDL‰ÎH‰ï¹1ÒL‰D$ L‰L$èä~ÿÿL‹D$ L‹L$H‰ÇéÒõÿÿfH‹t$¹1ÒH‰ïL‰L$è·~ÿÿL‹L$I‰Àé’õÿÿf.„L‰ÿèxÿÿé¼öÿÿ1ÒL‰öH‰ïèÃ{ÿÿ„À„‰öÿÿA‹F éåûÿÿfH‰ï¹1ÒL‰öè^~ÿÿH‰ÇéÝûÿÿfDöÆ„—öÆ…î€æ„ýôÿÿI‹fïÀf.@(Š\ýÿÿ„åôÿÿéQýÿÿ„öÄ„/öÄ…–öÄ„}ôÿÿI‹EfïÀf.@(ŠÖûÿÿ„dôÿÿéËûÿÿ€H‹CPL½8ö@„IùÿÿL‰ï1öèaƒÿÿ1öL‰÷I‰ÅèTƒÿÿH‹|$1öH‰D$(èCƒÿÿ1öL‰çH‰D$ è4ƒÿÿ1öL‰ÿH‰D$è%ƒÿÿH‹SPHƒìH5 H‹zAUH‰Â1ÀL‹L$8L‹D$0H‹L$(è§€ÿÿXZéÅøÿÿH…À„WöÿÿI‹D$€80…­ôÿÿéDöÿÿ@ºé¸ùÿÿfDH…À„iòÿÿI‹A€80…EóÿÿéWòÿÿDºé¨ùÿÿfD¹L‰òL‰þH‰ïèMÿÿéñôÿÿ„1ÒL‰îH‰ïèóyÿÿ„À…ïùÿÿévôÿÿfD1öL‰ïèF‚ÿÿ1öL‰÷H‰D$8è7‚ÿÿH‹|$1öH‰D$0è&‚ÿÿ1öL‰çH‰D$(è‚ÿÿH‹|$1öH‰D$ è‚ÿÿHƒìH‹sPH‹T$@H‹~H5¦ RL‹L$@H‰Â1ÀL‹D$8H‹L$0è„ÿÿY^é–öÿÿDL‰îºH‰ïèØ|ÿÿI‰ÅéköÿÿL‰öºH‰ïèÀ|ÿÿI‰ÆéEöÿÿ„ºH‰ÆH‰ïè |ÿÿH‰D$éöÿÿfDL‰æºH‰ïè€|ÿÿI‰Äéåõÿÿ„öÆ„ŸöÆtI‹Hƒy …Çóÿÿ€æ„~ðÿÿI‹fïÀf.B(Ьóÿÿ„fðÿÿé¡óÿÿfDè3|ÿÿéùóÿÿfDè#|ÿÿéÈóÿÿfDH…À„ÿòÿÿI‹E€80…føÿÿéíòÿÿDH…Ò„óÿÿI‹V€:0…uøÿÿé óÿÿDºL‰îH‰ïè(xÿÿé0þÿÿI‹$H…Ò„[ñÿÿH‹RHƒú‡5ùÿÿH…Ò„DñÿÿI‹T$€:0…ùÿÿé1ñÿÿf„I‹H…Ò„\ñÿÿH‹RHƒú‡6úÿÿH…Ò„EñÿÿI‹V€:0… úÿÿé3ñÿÿI‹UHƒz …MøÿÿéVüÿÿ@I‹Hƒx …{ùÿÿéÿûÿÿDH…À„÷ðÿÿI‹G€80…[ùÿÿéåðÿÿDH…À„—ðÿÿI‹E€80…ö÷ÿÿé…ðÿÿD1ÒL‰þH‰ïè+wÿÿ„À„æîÿÿ1Àéòÿÿ@1ÒL‰îH‰ïL‰L$èwÿÿL‹L$„À…­÷ÿÿé<ðÿÿ@1ÒL‰þH‰ïˆL$ L‰L$èÚvÿÿ¶L$ L‹L$!ÁéÂøÿÿf„ºL‰þH‰ïL‰L$è«vÿÿM…öL‹L$•Á!Áé’øÿÿf„ºL‰îH‰ïL‰L$è{vÿÿL‹L$épÿÿÿH‰ï¹1ÒL‰îL‰L$ L‰D$èyÿÿL‹L$ L‹D$H‰ÇéŸ÷ÿÿf¹1ÒL‰æH‰ïL‰L$èéxÿÿL‹L$I‰Àéa÷ÿÿ@H‰ï¹1ÒL‰þL‰L$ L‰D$è¼xÿÿL‹L$ L‹D$H‰Ç醸ÿÿf.„¹1ÒL‰öH‰ïL‰L$è‰xÿÿL‹L$I‰Àé@øÿÿ@¹H‰ÂH‰ÆH‰ïèvÿÿéŒóÿÿH‰ò¹H‰ïèvÿÿH‰ÆéWóÿÿ„L‰ÂL‰Æ¹H‰ïèÝuÿÿI‰ÀéóÿÿDH‹t$¹H‰ïH‰òè»uÿÿH‰D$éµòÿÿH‰ïèˆ{ÿÿé…òÿÿH‰ò¹H‰ïèuÿÿH‰Æéóÿÿ„ºL‰þH‰ïèuÿÿéÐýÿÿ1ÒL‰æH‰ïL‰L$èætÿÿL‹L$„À„!îÿÿA‹D$ éÿõÿÿ€1ÒL‰öH‰ïL‰L$è¶tÿÿL‹L$„À„1îÿÿA‹F é÷ÿÿºL‰æH‰ïL‰L$è‹tÿÿL‹L$ë£@1Ò¹L‰îH‰ïL‰L$ L‰D$è$wÿÿL‹L$ L‹D$H‰Âéûõÿÿf¹1ÒL‰æH‰ïL‰L$èùvÿÿL‹L$I‰Àé½õÿÿºL‰öH‰ïL‰L$ètÿÿL‹L$é\ÿÿÿ1Ò¹L‰þH‰ïL‰L$ L‰D$è±vÿÿL‹L$ L‹D$H‰ÂéÅöÿÿ¹1ÒL‰öH‰ïL‰L$èˆvÿÿL‹L$I‰Àé‰öÿÿff.„óúAWI‰×AVI‰öAUM‰ÅATM‰ÌUSHƒìHH‰<$H‹¬$€H‰L$dH‹%(H‰D$81ÀH‹"N!‹8èÓwÿÿH‰ÃM…ÿ„7¹H=9óL‰þó¦—À„À…éL»hL‰ïèÊtÿÿL‰îH‰ßH‰ÂèÜzÿÿH‰ßH‰ÆèqxÿÿI‰ÅM…ät A€<$…~Lƒ8H…ít€}uÿÿÿH‰ßè›gÿÿI‰Åé:ÿÿÿL‰îH‰ßè…aÿÿëH‰÷H5ôÙèDcÿÿ@AUATUSHƒìL‹nA‹] öÇÿu)€ût$‰Ù¸áÿÀù tHƒÄ[]A\A]Ã@H‹I‰üH‹p‹V ‰Õåÿu€út‰Ð%ÿÀ= u#fDâ úuZH‹~èYýÿÿ÷؉ÅÑýº÷à …ôöÇÿuM€ûtH‰Ø%ÿÀ= t:€ç…©¸@ èHƒÄ[]A\A]ÀL‰ç¹1ÒèYaÿÿA‹] H‰Çë’öÇtI‹EH‹PHƒúvE¸€ èëº@öÇt{öÇt I‹EHƒx uÞ€çt•I‹EfïÀf.@(zÊ„€ÿÿÿ뀸 H…Ò„nÿÿÿI‹E€80u¤é[ÿÿÿ@I‹U¸ Hƒz„Hÿÿÿ¸@é>ÿÿÿf.„1ÒL‰îL‰çèã]ÿÿ„À…^ÿÿÿA‹] éÿÿÿfAWAVI‰öAUATM‰ÄUH‰ÍSH‰ûH‰ÏHƒì(H‰T$D‰L$èD_ÿÿƒ|$`H‰êH‰ßI‰ÅÀHƒìI‹vjƒàE1ÉD‰éD@ èØcÿÿA[ZI‰ÇH…Àt]H‹‹@ öÄÿtBH‹D$H‹‹Bƒàƒø«M…ÿtöD$t I‹H I‹HƒÄ([]A\A]A^A_Ã<tº%ÿÀ= t®M…ät AöD$ …ïD‹T$`E…Ò„!HƒìI‹t$H‰êE1ÉjA¸ D‰éH‰ßè/cÿÿI‰ÃXZM…Û„M…ÿ„ I‹I‹7¹H‰ßèåaÿÿé>ÿÿÿ1öL‰çL‹jèeÿÿ1öL‰÷H‰ÃèõdÿÿI‰ØH‰éL‰ïH‰ÂH5ºò1Àè‹bÿÿI‹?‹G öÄÿu0<t,%ÿÀ= t 1öè¹dÿÿH5æÖL‰ïH‰Â1ÀèUbÿÿéêþÿÿ1öè™dÿÿH5¯ÖL‰ïH‰Â1Àè5bÿÿéÊþÿÿHƒìI‹t$E1ÉD‰éjA¸ H‰êH‰ßèNbÿÿAXAYI‰ÃH…À…ÿÿÿ‹L$`…Éu&1öL‰÷èWÿÿH‰ÂëÌf„AWAVAUATI‰ÌUH‰õSHì¨H‰|$H‰$òD$òL$dH‹%(H‰„$˜1ÀH‹â.!‹8è“Xÿÿ‹M1ÒH‰ÃH‹E H…Àt‹@…ÀŸÂƒùɄ҅Á÷E„´A‹D$ ¶Ðƒú „›ƒú „ÒöÄÿu-ƒút(‰ÂH KÎâÿÀH‰L$(ú …Ø„% =… I‹D$H‰D$(é’eÿÿþÿƒ»Ìt8A‹F ¶èöÄÿu ƒý…k1öL‰÷èÁ[ÿÿ‰êH=8êH‰Æ1ÀèžTÿÿfDL«8H‹œ$˜dH3%(L‰è…HĨ[]A\A]A^A_ÃDI‹$H‹@ HƒÀH‰D$(ƒ»ÌuH‹|$(H5aÛèåZÿÿH…Àu˜H‹t$HXÙH‰ßèüdÿÿHƒìE1ÉH‰ßL‹hjA¸0¹HËL‰îèòXÿÿA_L‹0XM…ö„#A‹F ©à…¤öÄ„ëþÿÿH‹$‹@ öÄÿu<t‰ÂâÿÀú …o€% =… H‹$H‹@H‰D$0òT$ò\T$H‹EPòT$ ö@ …ÓH5óÌL‰÷èÄtÿÿHƒìI‹vE1ÉjA¸0¹H‰ßHÎÌI‰Åè*XÿÿAXAYH‹ö@ tL‹pA€~ „ÞH‹t$0L‰ïèqtÿÿI‰ÅA‹E öÄÿu"D¶àAƒü„‡‰ÂâÿÀú …L‰íöÄ…¯D¶àAƒü …e¹1ÒH‰îH‰ßèGWÿÿH‰ßH‹0èœTÿÿ¹H‰îH‰ßºè'WÿÿL‹ A‹D$ % =…gI‹$ò@(òXD$ L‰æH‰ßè%Qÿÿ¹H‰îH‰ßºèàVÿÿL‹ A‹D$ % =…PI‹$ò@(f/D$ ‡›¹ºH‰îH‰ßèžVÿÿL‹ A‹D$ % =…öI‹$ò@(òt$ f/ð‡=H‰îH‰ß¹ºèXVÿÿòD$H‰ßH‹0èwPÿÿéýÿÿfI‹$ö@]€…òH‹@8H‹H‹@ HƒÀH‰D$(é*ýÿÿf„H‹4$¹1ÒH‰ßè½RÿÿH‰D$0éÐýÿÿ¹1ÒL‰æH‰ßèžRÿÿH‰D$(éåüÿÿ@L‰öH‰ßè5UÿÿA‹F éHýÿÿ@I‹m‹E éEþÿÿ@ºL‰æH‰ßèˆSÿÿéþÿÿºL‰æH‰ßèpSÿÿéþþÿÿºL‰æH‰ßèXSÿÿé¤þÿÿeÿÿþÿƒ»Ì„üÿÿH= æ1ÀèžPÿÿéüÿÿf„H‹<$1öè•WÿÿH‹UPòD$ H54æH‰Á¸H‹zH‹T$(èUÿÿéöüÿÿf„%ÿÀ= …¨ûÿÿé€ûÿÿHƒìE1ÉA¸ L‰îj¹ H¼ÉH‰ßèUÿÿAZA[H…Àt/H‹H‰$‹@ öÄÿ…Vüÿÿ<„Nüÿÿ‰ÂâÿÀú „:üÿÿHƒPH‰$‹ƒ\é$üÿÿ@H‰ß¾ èóTÿÿH‰ßH‰ÆH‰Åè•Nÿÿ¹L‰îH‰ßH‰ÂèrSÿÿH‰ß¾èUUÿÿ1ÒH‰îH‰ßH‰ÁèUPÿÿòD$ H‰ßèwPÿÿH‰îºH‰ßH‰Áè4PÿÿòD$ H‰ßèVPÿÿH‰îºH‰ßH‰ÁèPÿÿòD$ H‰ßè5PÿÿH‰îºH‰ßH‰ÁèòOÿÿòD$ H‰ßèPÿÿH‰îºH‰ßH‰ÁèÑOÿÿòD$H‰ßèóOÿÿH‰îºH‰ßH‰Áè°OÿÿòD$H‰ßèÒOÿÿºH‰îH‰ßH‰ÁèOÿÿéúÿÿf.„L‰æH‰ßè…Qÿÿéýÿÿf(ÆL‰æH‰ßèQMÿÿé¯üÿÿ@òD$ L‰æH‰ßè7MÿÿéOüÿÿföÄ…?ýÿÿL‰í1öH‰ïèZUÿÿD‰âH=ˆäH‰Æ1ÀèvQÿÿfDL‰öH‰ßèÅMÿÿ‰D$…ÀˆûÿÿL‰d$P1ÀM‰ìHÇD$@HÇD$HH‰l$XëBfDL‹nA‹E < „è% =…˜I‹uL‰çè4oÿÿI‰ÄHcÅ9D$Œ¤I‹VhH‹4‹F öÄu±öÄÿu<t‰ÂâÿÀú uÇ„% =u\H‹L‹nH‹@H‰D$hA¶EL‰îérÿÿÿfDL‰î¹1ÒH‰ßè†NÿÿH‰ÆéRÿÿÿfDHT$h¹H‰ßèfNÿÿI‰ÅA¶Eþÿÿ€L‹;H‹C L)øHƒøŽñH‹CxHƒÀH‰CxH;ƒ€„ËL‰úH+SH‹t$(H‰ßHÁúIƒÇ‰H‹D$1ÒI‰Gøè‚NÿÿH‰ßH‰Æè—OÿÿH‰ßI‰H‹ƒÀL‰;H‹pèÎIÿÿH‹ $L‰îH‰ßH‹ƒÀºH‹@H‰èìPÿÿH‹ H‹sHcÐHÁâH)ÑH‰L$8H)ñHÁùQ…ÀŽ<HcÒDiD|H‹<Ö‹W öÆtQ釀€útE‰ÐH5u½%ÿÀ= t0L‰çè^lÿÿI‰ÄE9ý„€H‹CIcÕAƒÅH‹<ЋW öÆu;öÆÿt¶â úuH‹wë¼fH‰þ¹1ÒH‰ßèþKÿÿH‰Æë£f„H‹G‹@ öÄÿu<t%ÿÀ= …ŽH=Ià1ÀèbJÿÿH‹D$8H‰é”üÿÿD¹ H=åÃL‰îó¦—À„À„âL‰îH=@à1Àè!JÿÿL‰çL‰îè†kÿÿI‰ÄéMüÿÿfDHƒ|$@„LHƒéHƒìM}H‰ßH‰L$pE1ÉA¸ L‰újH‹t$PèÐNÿÿ^_H‰ÁH…À„9H‹0‹F öÄÿu'<t#‰ÂL-ÖÂâÿÀú …Rüÿÿ„© …åöÄ„¤H‹H…Ò„ÌH‹RHƒú†§f% =…-L‹néüÿÿ€¹ H=àÂL‰îó¦—À„À„ê¹ H=ÎÂL‰îó¦—À„À…ÒþÿÿH‹D$P¶P ƒú „¹H‹t$(ƒú …ûÿÿ1ÒH5ÂH‰ßè³KÿÿH‰ßH‰ÆèÈLÿÿH‹T$PA¸H‰ßI‰ÅH‰ÆH ÙÁè(LÿÿA‹E % =…“I‹u1À€>*”ÀHÆé´úÿÿ¹H=9ÂL‰îó¦—À„À„V¹H=!ÂL‰îó¦—À„À…þÿÿE1À¹1ÒH5_ÁH‰÷è»ïÿÿL‰çH‰ÆèiÿÿI‰ÄéWúÿÿ„M‰åé õÿÿ„¹H=ÆÁL‰îó¦—ÀE1À1É„Àt&¹ H=¯ÁL‰îó¦—À„À…‘ýÿÿE1À¹ºéwÿÿÿH‹L$XfƒyH‰ÈvH‹A H‹@€x H‰D$H…òòÿÿH‹t$HH¶ÌH‰ßèVXÿÿH‹@€x H‰D$@…ËòÿÿH‹L$hé]ýÿÿf„H‹t$0L‰çè³hÿÿI‰ÄézùÿÿH‹t$(L‰çè›hÿÿI‰Äébùÿÿ¹1ÒH‰ßètHÿÿI‰ÅéÆùÿÿE1À1É1ÒéÆþÿÿH‰ßèèKÿÿé(ûÿÿL‰úL‰þ¹H‰ßèðEÿÿI‰ÇéôúÿÿöÄ…oýÿÿH‰L$81ÒH‰ßè`EÿÿH‹L$8„ÀH‹1‹F …MýÿÿöÄ„DýÿÿL-<ÅöÄ…NùÿÿH‹1‹F é)ýÿÿHƒìL‰úE1ÉA¸ j‹L$xH‰ßH‹t$XèfKÿÿH‰ÁXZH…É„ùÿÿH‹1‹F © …)öÄÿ„‡üÿÿé´üÿÿH‹öB]€…¾H‹B8‹H á ù„œH‹r8¹1ÒH‰ßè`GÿÿH‰Æé,øÿÿH‹L$8H‰ ƒøþ…&øÿÿéJñÿÿI}º 1öèBHÿÿA‰Ç…À„•H˜H‰D$8é@ùÿÿH…Ò„ÿÿÿH‹V€:0…EüÿÿéüþÿÿH‰L$8ºéÉþÿÿH‹t$PH‹ö@]€„ªH‰ßègHÿÿH‹pé¢÷ÿÿH‰ÆH‰ßèSHÿÿ‹@ % =tÃH‹t$PH‹öB]€„/ÿÿÿH‰ßè*HÿÿH‰Æé#ÿÿÿHÇD$8A¿飸ÿÿH‰ßH‰L$8è!IÿÿH‹L$8H‹1‹F éEûÿÿL‰î¹1ÒH‰ßèOFÿÿH‰ÆéWüÿÿèBEÿÿH‹D$8H‰é=ðÿÿH‹@8éUÿÿÿff.„óúAWAVI‰þAUATUSHƒìXH‹dH‹%(H‰D$H1ÀH‹GxHPüH‰WxHcH‹GH‰ÕJHÐH)ÓH‰ÚHÁúƒú…HcÑH ÕL‹$ÐUHcÒH‰L$ H‹ ÐUHcÒH‹ÐUH‰ $HcÒH‹4ЋV â ú…-H‹òR(òT$ƒÅHcíH‹4è‹F % =…âH‹òX(ò\$I†8H‰D$(öC …®1ÒL‰æL‰÷è¡TÿÿH…À„è1ÒL‰æL‰÷è;dÿÿH‹$H‰ÙL‰çòL$òD$H‰Æè½íÿÿH‰D$I‹F¶@"ƒà„W<H‹\$ ”ÀI^„À„QH‹D$(H‰H‹D$ IFI‰H‹D$HdH3%(…mHƒÄX[]A\A]A^A_Ãf.„H‹[éIÿÿÿ€ºL‰÷è“EÿÿòD$éÿÿÿ„ºèvEÿÿI‹FòD$éÈþÿÿ€AöD$ „ÎI‹l$€} …¿H‰îLl$ÿÿH‹T$H‹t$8L‰ÿI‰¹èK=ÿÿI‰ÆH…À„hI‹GxHƒÀI‰GxI;‡€„¦H‹T$0I+WHÁú‰I‹G¶@"ƒà„†1Ò<”ƒÂI‹FL‰ÿH‹pè\?ÿÿE…í„áfïÀòD$f„I‹G1öòD$0H‹<Øè«@ÿÿH‹UH5ϳH‰Á1ÀH‹zH‹T$è=>ÿÿòD$0ë}DH‹ED‹hAƒåAƒýŽÚH‹xH‹T$1ÀA¾ÎL˜³H5uÑèø=ÿÿA€þ!„ÞH‹t$H=ŠÑ1Àè9ÿÿI‹GH‹L$ fïÀE1äòD$H‰ ØE…í…HÿÿÿòT$f.ÐЏ…²L‹d$MgM‰'H‹D$XdH3%(…õHƒÄh[]A\A]A^A_ÃH|$@1ö‰T$8èp9ÿÿfïÉfïÀ‹T$8òH*L$@òH*D$Hò^îàòXÁòD$éqýÿÿ€¹1Òè¼9ÿÿé÷üÿÿ€fïÀH‹D$ E1äòD$I‹WH‰Úé0ÿÿÿH‹uL‰ÿèD=ÿÿL‰ÿH‰Æè<ÿÿH|$@1öH‰ÃèÚ8ÿÿfïÀfïÉL‰æòH*D$@H‹L$(H‹T$ H‰ßòH*L$Hò^ LàòXÈòD$èýáÿÿéæþÿÿ„H‹uL‰ÿèÔ<ÿÿL‰ÿH‰Æè©;ÿÿfïÀébÿÿÿI‹D$`L‹pA‹F öÄÿ…º<„²‰ÂâÿÀú „žI‹D$hH‹pH…ö„»‹F © …5öÄÿu!<t‰ÂfïÀâÿÀú …DöÄ„ÌH‹H…ÀtvH‹@fïÀHƒø†ºH5¬L‰ÿòD$0èË9ÿÿL‰ÿH‰Æèà:ÿÿòD$0é—þÿÿD% =…I‹v¹H=¿«ó¦—À„À…fïÀI‡PéSþÿÿI‹D$hºL‰ÿL4ÝMwH‹pèž8ÿÿfïÀI‰éaýÿÿfL‰ÿè(:ÿÿ¶ÐétüÿÿH‹T$H‰ÆL‰ÿL4ÝèxôÿÿºL‰ÿH‰ÆèX9ÿÿºL‰ÿMwH‰ÆèD8ÿÿfïÀI‰éýÿÿ„H‹H‹PH‹AHDÐH‹H…Ò„aûÿÿ‹@…Àt H‹H…Ò„NûÿÿHƒÂéEûÿÿ„L‰ö¹1ÒL‰ÿè7ÿÿH‰ÆéêþÿÿfDºL‰öL‰ÿèÀ7ÿÿfïÀéIýÿÿ€A€þ!„&ýÿÿE…í„Rüÿÿé:üÿÿ„L‰ÿèH:ÿÿéMûÿÿöÄtSöÄt H‹Hƒz u;öÄ„•þÿÿH‹fïÀf.@(Šþÿÿ„þÿÿéþÿÿºL‰ÿè¬3ÿÿ„À„cþÿÿfïÀéöýÿÿ1ÒL‰ÿè‘3ÿÿ„ÀuééGþÿÿH…À„BþÿÿH‹F€80…Íýÿÿé0þÿÿè(5ÿÿH‹|$(H5s°è7ÿÿH‹\$8öCt*H‹H‹PH‹CHDÐL‹0M…ötƒxtM‹6M…ötIƒÆH‹t$L‰ñH=Í1ÀH‰òè©7ÿÿf„AWI‰ÿAVAUATUSHƒìxH‹-  !H‰t$H‰T$H‰L$@L‰D$8D‰L$,H‰|$‹}dH‹%(H‰D$h1Àè"7ÿÿ‹}H‰Ãè7ÿÿL‰þH‰ÇI‰Äè¹7ÿÿ‰D$T…À„ýH˜H‰ÆH‰D$HH¸ÿÿÿÿÿÿÿH9ƇxL‹|$H¾L‰ÿè¾6ÿÿH‰ÅH¸ÿÿÿÿÿÿÿI9LJP¾L‰ÿE1öE1íè•6ÿÿÆD$SH‰D$ HD$`H‰D$0H‰\$Xëef.„H‹T$0D‰ëH‰ÆL‰çL|ÝHÁãèä7ÿÿH‹L$ HcT$`L‰çI‰H‰ÆHIÖHKèÁ4ÿÿƒøt HÇCÆD$SI‹AƒÅH‰H‹t$1ÒL‰çè†4ÿÿH…Àu‘¶D$S‹´$°H‹\$Xƒð…ö¶ÀI„$°‰„$°…À…yH‹t$HH‰ïºH Eÿÿè2ÿÿH‹|$ èî6ÿÿHƒ|$uH‹|$èÜ2ÿÿH‰D$Hƒ|$8uH‹|$@èÅ2ÿÿH‰D$8H‹t$H‰ßE1äè06ÿÿH‰ßHcÐH‹D$HD$8H¯Â‰T$ ItH˜HÆèV2ÿÿHk«H‰ßH‰ÆI‰Åè!3ÿÿ‹L$ HD$`H‰D$0DyÿD‰|$ …Éu\é…€ú„ωÑáÿÀù „»A¸¹L‰îH‰ßHN¤è1ÿÿD9d$ ‡ID$M9ç„1I‰ÄN‹tåL‰÷èí1ÿÿHƒìE1ÉL‰òjH‹t$A¸ ‰ÁH‰ßèŒ6ÿÿZJ‹TåL‰îYH‰ßI‰Æè×6ÿÿH‹L$L‰îH‰ßH‹T$A¸èœ0ÿÿM…ö„ËD$,I‹>…À…t‹W öÆÿ„(ÿÿÿâ ú…vH‹H‹RH‰T$`I‹L‹pA¸¹L‰îH‰ßHl£è60ÿÿH‹L$`L‰òL‰îA¸H‰ßè0ÿÿ¹L‰îH‰ßA¸H6£è0ÿÿD9d$ †êþÿÿH‹L$8H‹T$@L‰îH‰ßA¸èÚ/ÿÿID$M9ç…ÏþÿÿH‰ïèÄ4ÿÿH‹L$hdH3 %(L‰è…*HƒÄx[]A\A]A^A_ÃfDL‹|$ H‹t$HºH 2ÔÿÿL‰ÿèŠ/ÿÿ‹t$TL‰øH‰êƒîHƒÆHÁæLþfH‹HƒÀHƒÂH‰JøH9ðuìH‹|$ èB4ÿÿH…í…Kýÿÿf„1ÒH5©H‰ßè¿2ÿÿI‰ÅéSÿÿÿ€1öèÙ6ÿÿL‰îH‰ßH‰Âè5ÿÿéàýÿÿfDH‹T$0H‰þ¹H‰ßèû0ÿÿI‰Æé€þÿÿJ‹tåH=Ý©1Àè}/ÿÿ¹L‰îH‰ßA¸HÚ©è .ÿÿéýÿÿH‹5Á!H=­1Àèƒ2ÿÿèž/ÿÿff.„óúAWAVAUATUSH‰ûH‰÷Hƒì8H‹3dH‹%(H‰D$(1ÀH‹CxHPüH‰SxH‹SHcH‰ÈDaH ÊH)ÎH‰ñHÁùƒù…~HMcäHcÉJ,åH‹4ÊHH<*HcÉL‹/L‹4ÊHƒÀH˜HcÉL‹ ÂA‹E L‹<ÊöÄÿ„öÄ„I‹E€x …‹F % =…$H‹H‹@H‰D$H‹FH‰$A‹F % =…0I‹M‹vH‹@H‰D$ A‹A öÄÿ…B<„:‰Â¹ÿÿÿÿâÿÀú „!A‹W öÆÿ…3€ú„*‰ÐE1É%ÿÀ= „HƒìI‹}QL‹D$0L‰ñH‹t$H‹T$(èSùÿÿZH‰ßYH‰Æè¦1ÿÿH‹SJ‰âHkH‰+H‹D$(dH3%(…(HƒÄ8[]A\A]A^A_Ã@<„Úþÿÿ‰ÂâÿÀú „ÆþÿÿHƒ8H‰HkH‰+ëªHT$¹H‰ßL‰L$è‰.ÿÿL‹L$H‰$A‹F % =„ÐþÿÿL‰öHT$ ¹H‰ßL‰L$èR.ÿÿL‹L$I‰ÆA‹A öÄÿ„¾þÿÿ% =uQI‹A‹W ‹H öÆÿ„Íþÿÿâ úuI‹D‹H éÑþÿÿ@ºL‰þH‰ß‰L$è+ÿÿ‹L$A‰Áé­þÿÿºL‰ÎH‰ßè+ÿÿ‰ÁékþÿÿH=Û¦1Àè›/ÿÿè¶,ÿÿH5/Åèª.ÿÿf.„óúUH‰ýSHƒìH‹H‹X(H‹s(H…öt‹Vƒúv3ƒê‰VH‹s0H…öt‹Vƒúv$ƒê‰VH‰ßè60ÿÿHƒÄ1À[]ÃDè£1ÿÿëÌH‰ïè˜1ÿÿëØfDATHcw!USH‹‡ H‰ûH‹,ÐH‹EL‹`èš1ÿÿI9ÄtBH‹EH‰ßL‹`èU*ÿÿI9Ät-H‹EH‹°¨H…öt(‹Vƒúv8ƒê‰VH‹EHÇ€¨[]A\ÃfDH‹pH‰ß[]A\éè+ÿÿ„H‰ßèø0ÿÿëÄfDAUATUH‰ýSHƒìH‹t!‹8è%.ÿÿHc¾!H‰ÃH‹€ HÐH…í„÷L‹ ‹E öÄ…ø‰ÂâÀú€„LöÄÿu<t‰ÂâÿÀú …—€% =…€H‹mH…ítw¹H=(¥H‰îó¦—À„Àt]¹H=¥H‰îó¦—À„ÀtC¹H=û¤H‰îó¦—À„À„UH5é¤H‰ïè¦-ÿÿI‰ÅH…À„bH‰ßèRþÿÿëoH‰ßèHþÿÿI‹l$H‰ßèû/ÿÿH‰E¸HƒÄ[]A\A]ÀH‰îH‰ßèU.ÿÿH‰ÅH…À„™H‹L‹h(M…턉H‰ßèñýÿÿƒEI‹D$H‰¨¨I‹D$L‰îH‰ßL‰hè}/ÿÿHƒÄ¸[]A\A]ÃD¶Ðƒê ƒú‡¥þÿÿH‹EH…ÀtH‹hH…ít H‹EL‹h(M…íu‘1ÀH=™ÂèL)ÿÿ1ÀéCÿÿÿD1ÀH=WÂè2)ÿÿHƒÄ1À[]A\A]ÃDH‰î¹1ÒH‰ßèn*ÿÿH‰ÅéjþÿÿfDHƒÄ1À[]A\A]ÃH‰ßèýÿÿI‹l$H‰ßè›'ÿÿH‰E¸éËþÿÿDè£'ÿÿ‹8è¼.ÿÿH‰îH=`£H‰Â1Àè¨(ÿÿ1ÀéŸþÿÿAWAVAUATI‰üUSH‰óHƒìH‹Ý!H‰$‹8èŠ+ÿÿ1ÒL‰æH‰ÇI‰ÅèúHÿÿH‰ÞL‰çH‰ÅH‹@PLcxL‰úM‰þèn\ÿÿH‹<$H‰ÃèýÿÿI9ßtI‰ßAƒçu$H‹uXH‰ÚL‰ïèe.ÿÿHƒÄD‰ð[]A\A]A^A_ÃèÛ'ÿÿ1öL‰ç‰D$ H‹EPD‹HD‰ $è/ÿÿH‹uP‹T$ H‰ÙáÿÿM‰øH‹~RH5¥¢H•¢RVD‹L$H54ÁD‰ÊAáÿÿƒâRH‰Â1Àèd,ÿÿHƒÄ A€½ÈtH‹EPL‰ïH‹pèF)ÿÿéMÿÿÿH‹EPH5=ÁH‹x1Àè*,ÿÿëÒ„óúAWAVAUATUSH‰ûHƒìH‹GxH‹/HPüH‰WxH‹WHcI‰ÌAH ÊH)ÍHÁýMÿƒù‡ÕH˜L,ÅL‹<ÂH‹Gö@#„”H‹PH‹GL‹4ÐH³81Òƒý~H‹SAD$H˜H‹4ƒýtvAD$H˜H‹ÂL‰ÿèþÿÿH‹SA‹N Jl*øHcЉÈ%ÿ™ƒøuO€»¹tF€ÍI‰VA‰N L‰uH‹CLèH‰HƒÄ[]A\A]A^A_ÃfDèó,ÿÿI‰Æékÿÿÿ1Òë‘@L‰öH‰ßèÕ&ÿÿë¸H‰÷H5IÀè”(ÿÿ@óúAWAVI‰öAUI‰ÍATUSH‰ûHƒì8H‰<$dH‹%(H‰D$(1ÀH‹Rÿ ‹8è)ÿÿ1ÒH‰ÞH‰ÇI‰ÄèsFÿÿH‰ÅA‹F % =…<I‹M‹~H‹@H‰D$ ·E‰D$ M…í„DA‹U ‰ÓÁëƒã…QöÆÿ…À€ú„·‰Ð%ÿÀ= „¥H‹EP‹@ƒàƒøÒ¹H=X›L‰þó¦—À„À…L…Û…|‹EH‹U ¨t0H…Òt+Aƒ¼$Ìt ‹BDƒè‰BDHcR@9Ð[…ÀˆS‹Eƒàû»‰EH‹L$(dH3 %(‰Ø…ðHƒÄ8[]A\A]A^A_ÃöÆ„I‹EH…À„EÿÿÿH‹@Hƒø†ÌH‹EP»‹@ƒàƒøŽ2ÿÿÿ@1öL‰ïè–+ÿÿ1öL‰÷H‰D$è‡+ÿÿH‹<$1öH‰D$èw+ÿÿH‹UPL‹D$H51ŸH‹L$H‹zH‰Â1Àè)ÿÿéÝþÿÿ€öÆ„ÏöÆ….€æ„¨þÿÿI‹U1ÛfïÀ¸f.B(šÃEØé‰þÿÿfD¹H=ÝžL‰þó¦—À„Àu~ƒ|$ oL‰îL‰ç»è&ÿÿHƒìL‰úL‰çI‰ÁH‹D$A¸$H‹pj‹L$0èœ(ÿÿXZéŸþÿÿDHT$ ¹L‰öL‰çèÛ$ÿÿI‰Ç·E‰D$ M…í…¼ýÿÿ1Ûéëýÿÿ¹ H=ž™L‰þó¦—À„Àu‹E…Û„ ƒÈ ‰Eé:þÿÿ¹H=Ô™L‰þó¦—À„À…ò‹E…Û„oƒÈ‰Eéþÿÿ@I‹EHƒx …=þÿÿé¾þÿÿ@H…À„býÿÿI‹E1Û€80•ÃéQýÿÿfDH‹4$1ÒL‰çèBCÿÿ‹UH‹M öÂu(H…Ét#Aƒ¼$Ìt‹qDHcQ@ƒÆ‰qD9Öº‹UƒÊƒ|$ ‰U„»émýÿÿ1ÒL‰îL‰çèó ÿÿ¶ØéÖüÿÿºL‰îL‰çèØ ÿÿ¶Øé»üÿÿƒàß»‰Eé*ýÿÿ¹H=(˜L‰þó¦—À„ÀtV¹H=˜L‰þó¦—À„À…€‹E…Û„߃ȉEéÜüÿÿfHƒ¸˜„UÿÿÿHÇ€ é¼üÿÿf‹E…Ût) @‰Eé¦üÿÿ@ƒàﻉEé’üÿÿ„%ÿÿ¿ÿ»‰EéxüÿÿfD¹ H=^œL‰þó¦—À„À„wýÿÿ¹ H=ó—L‰þó¦—À„À„¿þÿÿ¹ H=u—L‰þó¦—À„Àu$‹E…ÛtI ‰Eéüÿÿƒà÷»‰Eéøûÿÿ¹ H=!—L‰þó¦—À„Àu$‹E…ÛtZƒÈ@‰EéÌûÿÿ%ÿÿ÷ÿ»‰EéºûÿÿH5—L‰ÿè"ÿÿ…Àu:A‹E % €=€…žI‹EH‹@ H‰Ex»é}ûÿÿƒà¿»‰EémûÿÿH5ÖL‰ÿè4"ÿÿ…ÀuzA‹U ‰Ð% =…âI‹EfïÀf/@(‡€ò@(f/’ȇmâ ú…I‹E‹@ ‰…€éüÿÿèK ÿÿºL‰îL‰çèÛÿÿéUÿÿÿH5B–L‰ÿè§!ÿÿ…Àu3‹E…Ût€Ì‰Eé»úÿÿHcðH=G«1Àèà"ÿÿ€äû»‰EéšúÿÿH5)–L‰ÿèa!ÿÿ…À…‹E…Û„¸ €‰EénúÿÿH=í¹è˜"ÿÿºL‰îL‰çèØ!ÿÿfïÉf/ȇ“A‹U ‰Ð% =„•ºL‰îL‰çè¤!ÿÿf/„ÇwcA‹U éíþÿÿºL‰îL‰çèÿÿéñþÿÿH5p•L‰ÿè½ ÿÿ…Àuc‹E…ÛtL€Ì‰EéÑùÿÿHcöH=¹1Àèö!ÿÿ$»‰Eé±ùÿÿH¾ÿÿÿÿÿÿÿH=~¹1ÀèÏ!ÿÿI‹Eé_þÿÿ€äþ»‰Eé€ùÿÿH5•L‰ÿèG ÿÿ…Àu‹E…Ût4 €‰EéYùÿÿH5Þ”L‰ÿè ÿÿ…Àu8‹E…Ût ‰Eé2ùÿÿ%ÿÿÿ»‰Eé ùÿÿ%ÿÿïÿ»‰EéùÿÿH5ù”L‰ÿèÕÿÿ…Àu!…ÛtsAöE tJI‹E€x u@M€éýùÿÿH5Ñ”L‰ÿè¡ÿÿ…Àu}…ÛtmAöE tDI‹E€x u:MéÉùÿÿ1öL‰ïè¢$ÿÿH5‡”H=˜H‰Â1Àèº ÿÿeÿÿÿé›ùÿÿ1öL‰ïèt$ÿÿH5e”H=b˜H‰Â1ÀèŒ ÿÿeÿïÿÿémùÿÿH5k“L‰ÿèÿÿ…Àu?…Û„RùÿÿAöE tI‹E€x „=ùÿÿ1öL‰ïè$ÿÿH51“H=˜H‰Â1Àè. ÿÿH5”L‰ÿè¿ÿÿ…À…X…Û„kAöE tI‹E€x „zAÆ„$¹H5Ë—L‰çI‹$èîÿÿI‹´$àH‹FHƒ8„6H‹ö@ …ÓH‹FH‹÷B ÿ…+H‹FH‹€z „H‹FH‹‹R âÿÀú „þI‹D$xHƒÀI‰D$xI;„$€„ÕH‰ÚI+T$HÁú‰I‹D$ H)ØH…ÀŽ›1ÒH5NÄLsL‰çèÊÿÿL‰çH‰ÆèßÿÿH‰CI‹D$ L)ðH…ÀŽKM‰nIƒÆºL‰çM‰4$H5ô–èÿÿƒè…ŸI‹$L‹(HƒèI‰$M…ít)A‹E º© ujöÄÿu <t‰ÂâÿÀú t eÿÿþÿé…÷ÿÿöÄtfI‹EH…ÀtæH‹@HƒøvL‰îL‰çè%ÿÿ…Àt|MéR÷ÿÿH…Àt¼I‹E€80u×ë±1ÒL‰îL‰çè¨ÿÿ„Àt ëÂH5SÃH=6–1Àè-ÿÿöÄtÓöÄt I‹UHƒz u˜öÄ„kÿÿÿI‹EfïÀf.@(z€„VÿÿÿéuÿÿÿL‰çH5ÃèöÿÿL‰çºH5ïÂè2ÿÿL‰îL‰çH‰Âè¤ÿÿéNÿÿÿL‰òL‰ö¹L‰çè|ÿÿI‰ÆéšþÿÿH‰ÚH‰Þ¹L‰çèaÿÿH‰ÃéJþÿÿL‰çè1ÿÿéþÿÿH‹ö@ „H‹FH‹Hƒ8„äýÿÿH‹FH‹H‹Hƒx†·H‹FHƒ8„H‹‹R â ú„ìH‹FH‹0¹1ÒL‰çè-ÿÿH‰ÂH5ÂH=ì”1ÀèµÿÿM¬$8éþÿÿH‹FºH‹0L‰çè4ÿÿ„À„RýÿÿI‹´$àévÿÿÿH5:L‰ÿèPÿÿ…À…~‹E…Û„c€Ì ‰Eé\ôÿÿ1ÒL‰çèxÿÿH‹@Hƒ8„ýÿÿI‹´$àH‹FHƒ8…œüÿÿ1ÒL‰çèJÿÿI‹´$àH‹@H‹ö@ H‹F…ŽH‹H…Ò…}üÿÿ1ÒL‰çèÿÿH‹@H‹÷@ ÿukI‹´$àH‹FH‹H…Ò…_üÿÿ1ÒL‰çèåÿÿH‹@H‹€x tA„ÞH‹D$HH…Àt €x „"H‹|$‹G ‰„$ % =…› H‹O1ÒAöEt.I‹EH‹PI‹EHDÐH‹H…ÒtD‹@E…ÀtH‹H…ÒtHƒÂL‰çH5¢]1ÀèïäþÿH‹D$H‹|$H9ø„TH‹PH5ˆ]L‰ç1ÀèÇäþÿƒ|$lŽ~‹D$lL‰¼$ L5®\L‹|$`H‰l$`DhþIEA½L‰íI‰ÅL‰òI9ot‹D$@H‹S1öèH˜H‹<Âè¸æþÿH‰ÂH5e]L‰ç1ÀHƒÅèPäþÿI9íuÃL‹¼$ H‹l$`H‹U(H5ø\L‰ç1Àè)äþÿL‰æH‰ßèáþÿH‹D$HH…À„H H‹@H‹pH…ö„7 H‹CxHƒÀH‰CxH;ƒ€„:H‹”$€H+SHÁú‹=ĸ ‰H‹D$8L`ø…ÿ…Í ‹D$XH‰ß‰ÂƒÊ(ƒ|$EÐètäþÿLc‰„$€L‰d$pHÇ„$Èfïíò¬$ ƒ|$„ ‹Œ$H‹uh…ÉtH‹„$ÐH9Ex†_Ç„$H‹Fƒ¼$ˆH‰D$8ÀƒàþƒÀ;$@I‹Gƒ¼$°Æ„$HÇ„$ÐH‹@H‰D$`„SH‹D$8‹@ öÄÿ…Ú <„Ò %ÿÀ= „ Hƒ¼$È‹EEÀAƒàï%AƒÀ>ƒø‹„$¸Ƀá̃ÁTƒøŽÛƒÀ/‰ÂL‹L$0H‹|$`1ÀH5e[èvâþÿƒ<$„<‹D$Xƒà‰D$„kH‹|$`H5Z[1ÀèHâþÿD‹œ$€E…ÛŽÇ1ÀH‰l$XL‹d$`L‰|$‰ÅëfƒÅ;¬$€‹D$@H‹SèH˜L‹,ÂAöE tM‹uA€~ „J 1öL‰ïè0äþÿH5àZL‰çH‰Â1ÀèÌáþÿAöE t¥I‹u‹F %ÿƒø u”H‹HƒxL‹ht H‰ßèÎãþÿH˜I)ÅL‰êH5ÌZL‰ç1Àè…áþÿé`ÿÿÿD‹L$L‹|$H‹l$XE…É…ø€¼$… Hƒ¼$È„H‹|$x1öèãþÿH‹|$`H5€ZH‰Â1Àè)áþÿ‹$E1ÀH5‡UH=SYºƒøAŸÀ1ɃøŸÁè̃ÿÿH‹|$`H‰ÆèŸâþÿH‹t$`H‰ßèâÝþÿöD$ €„ß‹EöÄ@„û‰Ââÿ¿÷ÿ‰UöÄ…¿H‹CxHƒÀH‰CxH;ƒ€„ÿ"H‹|$pH‰úH+SHÁú‰H‹C H)øH…ÀŽÀ"H‹D$pH‹t$LhH‰pH‹C L)èH…ÀŽƒ"1ÒH5ˆQMeH‰ßèeÞþÿH‰ßH‰ÆèzßþÿI‰EH‹C L)àH…ÀŽ4"HƒhºH5’bH‰ßI‰D$ID$H‰è®ÚþÿfD÷D$ €tH‹CH‹t$PH‹4ðöF …‡‹„$ˆ „$…CH‹D$8‹P ‰Ð÷ …3‰Ñáÿ…¿€ú„¶‰ÖæÿÀþ „¢‰Ð%ÿÀ= …ðâ ú…H‹D$8H‹@€8„Ì÷E„¿H‹D$8‹@ ‰Ááÿ© …!…É…¼<„´‰ÂâÿÀú „ % =…H‹D$8H‹xèbÚþÿE1äHƒøA”ă¼$°„¥H‹D$8º‹@ © …^öÄÿ…ø<„ð‰ÂâÿÀú „ÜE…äH¬VH±VHEÐH‹E0E1Àö@t+H‹H‹@H‹IHDÈL‹M…Àt‹H…ÉtM‹M…ÀtIƒÀL¬$ HƒìH W1ÀRL‹L$@L‰ïºÈ¾è2àþÿXL‰îZH‰ß1Òè#ÜþÿH‰ßH‰Æè8ÝþÿI‰ÅH‹EpH‹P‹B öÄÿ…É<„Á%ÿÀ= „±H‹E`1öH‹xè àþÿ1öI‰ÆH‹EhH‹xèøßþÿL‰ñH5N{L‰ïH‰Â1ÀèÑÙþÿ÷E tD‹´$ÄE…ö„H‹D$8º‹@ © …ðöÄÿ…ö<„î‰ÂâÿÀú „ÚE…ä„‹E©€…îò´$˜f.´$ z„A¿A¼‹¼$ÄHƒPL³8…ÿH¼$LEð1öèãØþÿfïÉfïÀH‰îH‹D$HH‹L$(L‰òòH*Œ$òH*„$H‹|$ò^J€H…ÀHEÈòXÈò„$˜èñÿÿE„ÿ…zE„ä„„H‹D$8‹P ‰ÐÁèƒà…ý"öÆÿu€út‰ÑáÿÀù …PöÆ„ H‹|$8H‹H…ÒtH‹RHƒú†Ò"¸ƒà„À„‹EöÄ…/"¨€„L‰îH‰ßèˆÛþÿ„öÄ…oöÄ„•öÄtH‹|$8H‹7Hƒ~ …iöÄ„mò¼$ H‹t$8H‹6f.~(ŠD„Ké9fDòœ$˜f.œ$ zt‹´$ÄH“PL£8H¼$…öLEâ1öèP×þÿfïÀH‹D$HH‹t$(fïÉH‹|$L‰âòH*„$H…ÀòH*Œ$HEðò^ ³~H‰ñH‰îòXÈò„$˜è[€ÿÿH‹SHc„$€HD$PHDÂøH‰éìäÿÿDƒ»Ì„3ƒ|$t<÷D$ „6#Ç„$€fïöHÇ„$Èò´$ é ÷ÿÿDÇ„$€fïÿHÇ„$Èò¼$ H‹D$H‹@I9…ÒöÿÿH‹EH…À„µö@ „«H‹@I‰é¯öÿÿ€öÄ„Ÿ ƒù„H‹CH‹|$8HD8øH‰éäÿÿH‹t$x¹1ÒL‰÷è|ÖþÿH‰ÅéDèÿÿ@%ÿÿ÷ÿ‰EéËùÿÿöÄÿu<t‰ÂâÿÀú …žéÿÿI‹G1öL‰÷H‹@H‰„$èÙÛþÿI‰ÁA‹F © …îöÄÿ…® <„¦ ‰ÂâÿÀú „’ % =…âI‹F€8H$QH(QHDÐL‹D$0L‰ÉH5’u1ÀH‹¼$è ÙþÿH‹EhL‹pA‹F éõèÿÿf.„H‹ö@\„&õÿÿH‹@0H…À„õÿÿH‰ßÿЃ|$X„RH‹LcL‰d$pL)àHÁø‰„$€éõÿÿ€H‹t$¹1ÒH‰ßè,ÕþÿH‰ÁéMóÿÿ@1Òƒ»Ì”ƒ éàòÿÿ@H‹|$8H‹7H…ötH‹vHƒþ†¸÷E€…ùÿÿ…É…Èøÿÿ€ú„¿øÿÿ鍸ÿÿf.„‹<$ƒâ9úFlj$éÅèÿÿDH‹Ep1öL‹exH‹xèEÚþÿH‹|$81öI‰Æè6ÚþÿI‰ÅH‹D$8‹@ © …¹öÄÿ…<„ÿ‰ÂâÿÀú „ë% =…C H‹D$8H‹@€8H ’OH˜OHDÈ‹„$HŒOM‰ñM‰èH51P…ÀHyOHDÐHƒì1ÀATH‹|$pèC×þÿXZérôÿÿ@H‹H‹@(L9è„Îñÿÿ1Òö@t-H‹H‹@H‹RHDÐH‹H…ÒtD‹HE…ÉtH‹H…ÒtHƒÂH5‘OL‰ç1ÀèâÖþÿéƒñÿÿDH‹L‹p IƒÆé%ñÿÿ„èËÑþÿ;EH‹E„õëÿÿƒÈ‰Eé ìÿÿ@H‹D$H‹@H‹px‹F % =…°H‹H‹p H¸gfffffffL‰çH÷îHÁþ?¸'HÁúI‰ÕA)õH5nOAƒý'AMÅE1íA‰Ç1Àè:ÖþÿA‹V ‰l$lë^I‹H‹@H9ÅðI‹F1öH‹<èèaØþÿH5OL‰çH‰Â1ÀèýÕþÿA‹V E9ý|‰Öæ€u:I‹H‹@H)èHƒøFAƒÅâ€Icít—L‰öH‰ßè¬ÓþÿH˜ë„L‰öH‰ßè•ÓþÿA‹V H˜‰Öæ€ë²DI‹71ÒH‰ßèSñþÿH…À„ éÿÿö„éÿÿH‰Çè‰íþÿI‹7¹H‰ßH‹”$èqÔþÿéÛèÿÿ@÷E„äÿÿöD$ …„äÿÿA¾L¬$ H‰¬$ÈH‰ÝD‰¤$ÐL‰ëE‰ôD‹l$lD‹t$@ëDAƒÄE9åŽ C&H‹UH˜H‹4Â÷F àtÜH‰ïè¬Öþÿ„ÀtÐH‹L$‹A ‰„$¸% =…¨ L‹IHƒì¾H‰ß1Àÿt$8E‰àºdH ŒpèŸÖþÿ€½¸Æ…¹^_„qÿÿÿH‰Ú1öH‰ïèLÕþÿé_ÿÿÿ€H‹D$`HÇ@(HÇ@0HÇD$HöD$ „GîÿÿH‹u01ÉHLH‰ßèrÒþÿH‰D$HH…À„$îÿÿH‹t$01ÒH‰ßèÒþÿL‹t$pH‰ßH‰Æè%ÓþÿMfƒD$lI‰FHÑKL‰#L‰d$pH‰D$0Ç„$°éÔíÿÿ@ƒ»ÌÇ„$ˆ„WãÿÿH‹E H…À„JãÿÿD‹h1ÀE…í•À‰„$ˆé2ãÿÿH‹|$1öè´Õþÿ1ÒAƒ¾ÌH‹L$0I‰ÀI‹G”ÂH5,mƒÂ H‹x1Àè6Óþÿécáÿÿ‹l$lH5_LL‰ç1ÀèÓþÿéöðÿÿfDH‹D$HUH‰ßHpè›CÿÿéœâÿÿfDH‹|$`H5L1ÀèÝÒþÿD‹”$€E…Ò•ðÿÿé_ñÿÿ€öÄ„×H‹L$8H‹H…Ò„ûúÿÿH‹RHƒú†fH ¡Jéûÿÿ@H‹t$1ÒL‰÷L‰\$èDîþÿL‹\$H…ÀH‰Å„aH‹X(L9ó…½ÛÿÿfƒxI‹{ †Ûƒ<$H‹GøH‰EébàÿÿHƒ|$H…ûðÿÿH‹|$`H5vK1ÀèÒþÿéãðÿÿ@D‹h8H‹D‹chH‹PH‹FH‹DÐ(H…À„i D`E9å„jH‹u0é­âÿÿºH‰ßè“ËþÿH‰ÆéBûÿÿ1Òƒ»Ì”ƒ éïÿÿ@fƒ}…¢îÿÿH‹ ƒ<$žÂHƒùH‰Œ$ПÀ ˆ”$…iH…É•„$éfîÿÿf„1ÒH‰ßèíþÿH‹PhH‹R‹J öÅÿu€ùtáÿÀù …HñÿÿH‹p`H‹@pL‹PH‹|$L‹FH‹HH‰îèKBÿÿéñÿÿfDHUpH‰ßèDkÿÿH‹uh9„$…„íÿÿéŠíÿÿfDèCÎþÿéõàÿÿfDè3ÎþÿéÄàÿÿfDè#ÎþÿÇ„$éáÿÿ¹ H=IL‰öó¦—À„À…ëÿÿH‹T$0H5IL‰çè^Ðþÿéëêÿÿf„H‹t$8¹1ÒH‰ßèÜÌþÿéâðÿÿ€ƒ|$l€¼$įíÿÿƒ|$… H‹D$H‹M1ÒH‹@H‹H‹ö@t-H‹H‹@H‹RHDÐH‹H…ÒtD‹`E…ätH‹H…ÒtHƒÂH‹|$`H5³H1ÀèµÏþÿƒ|$l| HDH‹|$`H5ÿ?1ÀèÏþÿéíÿÿH5?HL‰ç1ÀèwÏþÿé«êÿÿföD$ „•H‹D$pH‹8LpøAEÿL‰3‰D$l‹G ‰Ââú…% =… H‹GH‰D$0H‹|$0èÄÜþÿL‰t$p‰„$°Ç„$‹L$ ‹´$¸öÁEðƒá‰´$t#ƒ»ÌtH‹U H…ÒtD‹rE…öNƉ„$÷D$ …Å÷D$ „äÛÿÿfƒ}‡ÙÛÿÿD‹D$HH‹L$0HUPH‰ßH‹t$èÖmÿÿé¹Ûÿÿ‹”$€H‹|$`H5lG1ÀèVÎþÿééìÿÿH‹”$ÐH‹|$`H5G1Àè5ÎþÿéÖìÿÿI‹H‰ßH‹pèqÏþÿé•âÿÿ@¹L‰îH‰ßè˜ÍþÿérðÿÿH‹CH‹t$PH‹ð‹@ öÄÿ…øìÿÿ<„ðìÿÿ%ÿÀ= …ÜêÿÿéÛìÿÿf.„öÄ„ZI‹H…Ò„YôÿÿH‹RHƒú†ù H‹EéhôÿÿI‰ï‹l$l…ö…@I‹H‹PL)úH5’FL‰ç1ÀèfÍþÿé5úÿÿöÄ„ÂH‹L$8H‹H…Ò„FîÿÿH‹RHƒú†E1䃼$°…vîÿÿE1äH‹D$HƒìH‰ßE1ÉA¸0¹HAH‹pjè8Íþÿ_AXH‹0‹F öÄÿu<t‰ÂâÿÀú … îÿÿ% =…·H‹FH‰D$0éëíÿÿ@öÄ„·H‹|$8H‹H…À„ îÿÿH‹@H®DHƒø‡ îÿÿH…À„ìíÿÿH‹G€80…ôíÿÿéÚíÿÿfDöÄ„H‹D$8H‹H…À„ ïÿÿH‹@Hƒø†è ‹EöÄ€…ò¼$˜E‰çAƒçf.¼$ Š ïÿÿ…ïÿÿE…ä„ïÿÿ‹E©…i©€„úðÿÿéíïÿÿöÄ„öÄtH‹|$8H‹Hƒz …'ùÿÿöÄ„ ôÿÿò¼$ H‹|$8H‹f.z(Šùÿÿ„éóÿÿé÷øÿÿ€HÇ„$ÈfïÿÇ„$€ò¼$ éäçÿÿ€H‹t$8¹1ÒH‰ßèäÇþÿé­óÿÿ€H‹t$xH”$¹H‰ßè¾ÇþÿI‰ÄéáÿÿfDH‹@L‰÷H‹pè`ËþÿL‰÷H‰Æè5ÊþÿH‰Ãé’ÙÿÿDH‰ëD‹¤$ÐH‹¬$Èé$ÚÿÿÇ„$‹D$‰„$°é¸ûÿÿDH‰ßèØÊþÿéÜÝÿÿH‰êH‰î¹H‰ßèÝÄþÿH‰ÅéÛÝÿÿDHƒ8I‰éçÿÿH‹D$`H‹@0H‰D$HéqäÿÿöÄ„ºöÄtI‹Hƒz …¤üÿÿöÄ„æðÿÿI‹fïÿf.z(Љüÿÿ„Îðÿÿé~üÿÿò¼$˜f.¼$ z„íÿÿE1ÿA¼éóìÿÿöÄ„’öÄtH‹L$8HùAH‹ Hƒy …QëÿÿöÄ„3ëÿÿò´$ H‹D$8H‹f.p(z„ëÿÿH½AéëÿÿöÄ„ öÄtH‹|$8H‹Hƒz …<üÿÿöÄ„kêÿÿò¬$ H‹|$8H‹f.j(Šüÿÿ„Iêÿÿé üÿÿ@öÄ„ÆöÄtH‹t$8H‹Hƒz …çüÿÿöÄ„Üëÿÿò¬$ H‹D$8H‹f.h(ŠÂüÿÿ„ºëÿÿé·üÿÿH‹t$8H‰ß¹1Òè{ÅþÿH‰Çéìéÿÿ‹Œ$ˆ…É…@Ùÿÿƒ»Ì„3Ùÿÿƒ¼$°„%ÙÿÿE„í„ÙÿÿI‹Hž@E1ÉH‰ßA¸ ¹H‹pPjè¹ÈþÿI‰ÂXZM…Ò…ÄßÿÿéâØÿÿfD¹1ÒL‰öH‰ßL‰Œ$ÐèæÄþÿL‹Œ$Ðéûîÿÿ1ÒL‹t$8H‰ßL‰öèÂþÿ„ÀuA‹V ‰ÑáÿéÒïÿÿH‹D$8‹P ‰Ð÷E€…Äèÿÿ‰Ñáÿé®ïÿÿH‹L$x‹A ‰D$% =…2L‹aH‹u01ÉL‰âH‰ßèÆþÿH‰ÅH…À„9H‹D$1ÉL‰âH‰ßH‹@H‹H‹0èõÅþÿH…Àt €x „e ‹$E1í…À„ôI‹G€} H‹x„Ü L M?HƒìM‰èL‰á1ÀUH‹T$@H5?èAÇþÿA_XM…턱L‰îH‰ßèŠÇþÿH‰ßH‰Æè_ÆþÿH‹SH‹L$PH‰ÊH‹D$8HCH‰é ÑÿÿH‹t$¹1ÒH‰ïèÃþÿI‰Áé@òÿÿH‹D$Hƒì¹ L‹8A¸$H¥;H‰ßH‹pjèõÆþÿA[A]éøÿÿH‰ßH‰t$`èÏÆþÿH‹t$`é¯âÿÿH…ö„LîÿÿH‹w€>0…2îÿÿé:îÿÿºé9þÿÿfƒ}t÷D$ „äèÿÿH‹D$HƒìE1ÉH‰ßA¸ ¹ H;H‹pjèoÆþÿAZA[I‰ÆH…À„¨èÿÿH‹‹@ öÄÿu<t%ÿÀ= …‰èÿÿHu?L‰îH‰ßèŽÆþÿI‹¹L‰îH‰ßèkÅþÿ÷D$ @uVHƒìH‹uE1ɹ jA¸ H¹6H‰ßèêÅþÿAXAYI‰ÆH…Àt#H‹0÷F à…× H‹vH…öt €~ „ H?L‰îH‰ßè ÆþÿéíçÿÿH‹ƒÀH‹@E1ÛéDÞÿÿH‰þH‰ßè6Ãþÿéà×ÿÿL‰öH‰ßè&ÃþÿHcÐé´÷ÿÿH‹¼$¨1öèoÇþÿH‹|$`H5>H‰Â1Àè Åþÿƒ|$l„TõÿÿH8éOõÿÿH‹|$x1öè6ÇþÿH‹|$`H5=H‰Â1ÀèÐÄþÿéõÿÿH‰ßè#Æþÿé>Öÿÿ1ÒH‹t$8H‰ßè¾þÿ„À…òÿÿH‹D$8‹@ éïìÿÿH‰þ¹1ÒH‰ßè(ÁþÿH‰D$0é`õÿÿH‰ßèÖÅþÿéŠòÿÿ1ÒH‹t$8H‰ßèB¾þÿ„À„ çÿÿéøÿÿ1ÒH‹t$8H‰ßè&¾þÿHb<„À…Àåÿÿé¦åÿÿH…Ò„~ìÿÿH‹Q€:0…„ñÿÿélìÿÿºéQÿÿÿH‹D$HƒìE1ÉH‰ßH36A¸ ¹ H‹pjè!ÄþÿI‰ÆXZM…ö„§÷ÿÿI‹‹@ öÄÿ…‚<„z%ÿÀ= „jò¼$˜f.¼$ z„§èÿÿE1ÿE1äéŠæÿÿL‰îH‰ßèlÃþÿ‹Eé„÷ÿÿH‹ H‹SH‰ÈH)ÐHÁøH9D$P„×Hƒ8H‹Ç„$€H‹|$PH‰úH‹T$8H‹CHÂLàH‰H‰D$péˆßÿÿH‰ßèÄþÿéÔÿÿH‰ßèÄþÿé2Ôÿÿƒ<$Ž*ÑÿÿI‹{ 1öH‹G‹hè6ÅþÿH‹|$1öH‰Ãè'ÅþÿAƒ¾ÌI‰éI‰ØH‰ÁI‹GH‹x„Ôº H5¬`1Àè¥ÂþÿéÒÐÿÿH‹t$x¹1ÒH‰ßè,¿þÿI‰Äé¶úÿÿHƒ8éYûÿÿ‹ $…ÉtíI‹GE1íH‹xéûúÿÿ‹„$€D@ÿ…À~AH‹T$pDàf.„HƒêH‹zH‹KHcðƒèH‰<ñD9àuåH‹t$pD‰ÀH÷ÐHÆH‰D$pI‹fïöHÇ„$Èò´$ H‰D$HépÞÿÿ1öL‰”$€Lcl$lè'Äþÿ1Òƒ»ÌH‹L$0I‰ÀI‹G”ÂM‰éƒÂ H5b^H‹x1Àè§ÁþÿL‹”$€éÙÿÿL‰Œ$Ð1ÒL‰öH‰ßèe»þÿL‹Œ$ЄÀ…ØóÿÿA‹F éèÿÿD‹$H‹L$0H‰þHPPL‰÷L‰\$è¯`ÿÿL‹\$I‹{ éúîÿÿ1öL‰$D‹`è‚ÃþÿH‹|$1öH‰ÃèsÃþÿAƒ¾ÌL‹$„hI‹WL‰$M‰áI‰ØH‰ÁH‹zº H5ð^1ÀèéÀþÿL‹$I‹C H‹@éŸîÿÿfƒ}…§H5ö1L‰çèÞ½þÿ…À„`Ñÿÿfïöò´$ éA×ÿÿH…Ò„IçÿÿI‹V€:0…ñòÿÿé7çÿÿL‰Œ$кéçþÿÿ1ÒL‹t$8H‰ßL‰öèEºþÿ„Àu A‹F éXáÿÿE1䃼$°…~áÿÿéóÿÿI‹GL‹H‹@H‰D$Hc„$€…À„_H÷ØITÂL‹:A÷G …Þ‹$…Ò…xH‹CxHƒÀH‰CxH;ƒ€„»L‰ÒH+SHÁú‰H‹C L)ÐH…ÀŽÐM‰jH‹C MJL)ÈH…ÀŽH‹uH‰ßL‰L$èÿ¿þÿL‹L$H‰ßH‰ÆMAL‰L$ L‰D$èÁ¾þÿL‹L$ L‹D$I‰AH‹C L)ÀH…ÀކM‰xIƒÀºH‰ßL‰I‹6èÀþÿ…À„~H‹D‹$L‹0HƒèH‰E…ÒtaD‹„$€E…À„#L‰ÿ1öè_ÁþÿL Þ6H 8I‰Ç1öL‰÷L‰L$H‰ $è;ÁþÿL‹L$H‹ $M‰øH‹|$H‰ÂH5y81ÀèɾþÿM…ö„”òÿÿA‹F º© …õöÄÿu<t‰ÂâÿÀú …còÿÿöÄ„|I‹H…À„NòÿÿH‹@Hƒø‡ÀúÿÿH…À„7òÿÿI‹F€80…ªúÿÿé%òÿÿH…À„ áÿÿH‹D$8H‹@€80…ýñÿÿéöàÿÿH…Ò„'ßÿÿH‹Q€:0…âðÿÿéßÿÿºé–ýÿÿ¹1ÒH‰ß蜺þÿH‰D$0é)ßÿÿL‰âL‰æ¹H‰ßè/¸þÿI‰Äé±ÝÿÿL‰êL‰î¹H‰ßè¸þÿI‰ÅébÝÿÿH‰þH‰ú¹H‰ßèù·þÿH‰D$pé#ÝÿÿH‰ßèǽþÿéôÜÿÿH‹t$pH‰ßL‰”$€H‰òèÊ·þÿL‹”$€H‰D$péaÕÿÿ1ÒH‰ÆH‰ßL‰”$€èþþÿH‹“ÀL‹”$€H‹@H‹rL‹(éÀÔÿÿ1ÒH‰ßL‰”$ è’¾þÿL‹”$ H‹@H‹÷@ ÿ…¢÷ÿÿH‹³ÀH‹FH‹H…Ò…È1ÒH‰ßL‰”$ èM¾þÿL‹”$ H‹@H‹€x „`÷ÿÿH‹³ÀH‹FHƒ8…†Õÿÿ1ÒH‰ßL‰”$ è ¾þÿL‹”$ H‹PH‹ƒÀH‹@é[ÕÿÿÇ„$€J"H‰D$péÔØÿÿ1öL‰L$XL‰\$@L‰D$0L‰T$ èɼþÿH‹|$1öH‰D$踼þÿHƒìH55XL‹\$HH‰Â1ÀASL‹L$hL‹D$@H‹L$(H‹|$è8ºþÿA[XL‹T$ é-úÿÿL‰þH‰ßL‰T$ H‰T$覷þÿH‰ßH‰ÆèK¹þÿH‹T$L‹T$ I‰ÇH‰éíùÿÿL=[.M‰ùL‰ùéæúÿÿº!H5ØW1ÀèѹþÿéþÇÿÿL‰îH‰ßè±¹þÿ‹Eé¾Ýÿÿ1ÒL‰öH‰ß茳þÿ„À…øõÿÿésíÿÿH‹t$81ÒH‰ßèp³þÿé|Ýÿÿè&µþÿ1öL‰ÿL‰T$èÇ»þÿLF1L‹T$Lp2I‰ÁéÅþÿÿH‹t$8ºH‰ßè*³þÿé6ÝÿÿH…Ò„*ÝÿÿH‹G€80•À¶ÀéÝÿÿH‰ßL‰T$èM¹þÿL‹T$é.ùÿÿL‰ÊL‰Î¹H‰ßèP³þÿI‰ÁéHùÿÿL‰ÒL‰Ö¹H‰ßè5³þÿI‰ÂéùÿÿL‰ÂL‰Æ¹H‰ßè³þÿI‰Àé_ùÿÿH‹E0·M1öö@t*H‹H‹@H‹RHDÐH‹0H…ötƒxtH‹6H…ötHƒÆPH SM‰ñI‰ØPH‹T$@H==S1Àèæ¶þÿH‹H‹BH‰D$1ÀHƒzt H‰ßèyºþÿH˜H9D$„ÁòÿÿI‹A¹A¸ºH5>1H‹xQH £1jÿèî~ÿÿ^_H‰ßH‰ÆèA·þÿL‰îH‰ßH…1I‰ÆèŒ¸þÿL‰òL‰îH‰ß¹èi·þÿ¹L‰îH‰ßA¸Hü0è<²þÿé@ÚÿÿH‰ßèÿ¶þÿI‹6éòÿÿL‹/éiÅÿÿHcðH=q>1Àè ¶þÿ‹”$€H‹t$0H=‡T1Àè`²þÿH‹E01Òö@t*H‹H‹@H‹RHDÐH‹H…ÒtƒxtH‹H…ÒtHƒÂH‹t$0H=¦T1Àè§µþÿ‹R éíÏÿÿ1öèh¹þÿH‹|$1öH‰ÃèY¹þÿH‹T$0H‰ÙH=rRH‰Æ1ÀèpµþÿóúAWI‰ÿAVAUE1íATU1íSH‰óHìÈH‰L$ H‰|$H‰T$(dH‹%(H‰„$¸1ÀH‹?‹ ‹8èð´þÿ1ÒL‰þH‰ÇI‰ÆH‰D$@è[ÒþÿH‰ßH‰D$èþ±þÿL‰÷H4@è±þÿH×*L‰÷H‰ÆI‰ÇH‰D$舲þÿL‹T$(HÇ$¶M‹gÇD$HE1ÿM‰ÓL‹L$ Aãf.„„À„¨<%t<@„íuO¶E„í…ã<-„k«þÿL‹D$ I D9D$H…£¶CL‹T$(L‹L$0L‹\$8öD…tIƒÆA¶öD…uñƒD$HHB)é ûÿÿL‰óI‰Ì1íéCùÿÿAö„îº--fA‰$Aö„vAÆD$ ½#¶CIƒÄL‰óA¿-éùÿÿAÆ${A¿{¶CIƒÄL‰ó½{éàøÿÿHƒìH"0E1ÉPL"NH‹t$ H‹|$(¹H¢(èÿ4ÿÿXZé…ùÿÿ„HƒìHâ/E1ÉPLrMH‹t$ H‹|$(¹Hb(è¿4ÿÿY^@€ý/…6ùÿÿHƒìH¥/E1ÉPLÝMëAöÂ…­AöÂ…0¶C½#L‰óé#øÿÿ@€ý/t @€ý{…rúÿÿAÆ$ IƒÄéWúÿÿfHƒìHB/E1ÉPL Mé[ÿÿÿDAöÂ…|Aö„èAÆ$#A¿#¶CH‰ÓIƒÄé±÷ÿÿAöÂ…nAöÂ…Þ¶C½{L‰óéŒ÷ÿÿAÆD$p¶SIL$H‰ÐöD•tIƒÆHƒÁˆAÿA¶H‰ÐöD•uçD‰D$HH8'éùÿÿ¸%sIL$fA‰$éùÿÿD‹D$H¾L‰ç1ÀH 'HÇÂÿÿÿÿL‰\$0L‰L$(AXL‰T$ è=¯þÿL‰ç蕨þÿ‰\$HL‹T$ Hó$I L‹L$(L‹\$0颸ÿÿ¾/*IƒÄA¿/½/fA‰t$þ¶CH‰Óé¬öÿÿ¶CIƒÄL‰ó½#A¿-é‘öÿÿ¸/*IƒÄ½#A¿/fA‰D$þ¶CL‰óéköÿÿH‰ÓI‰ÌA¿-éZöÿÿ¿/*IƒÄA¿/fA‰|$þ¶CH‰Óé9öÿÿ¸/*IƒÄ½{A¿/fA‰D$þ¶CL‰óéöÿÿ¶CIƒÄL‰ó½{A¿-éøõÿÿA€ÿ/„þúÿÿA€ÿ{„`ùÿÿé=ûÿÿH\$PL‹ $I‰Ð1ÀH zJºc¾H‰ßèø­þÿHƒìI‰ØE1ɹHï,H‰%PH‹t$ H‹|$(èÛ1ÿÿH‹D$PH8H‰D$_AXétöÿÿAöÂ… AöÂ…X¶C½/H‰ÓéNõÿÿH‰D$ ¾L‰ç1ÀH -%HÇÂÿÿÿÿL‰\$8L‰L$0L‰T$(è]­þÿL‹\$8L‹L$0L‹T$(L‹D$ éJûÿÿAÆ${½#¶CIƒÄL‰óA¿{éäôÿÿAö„¶AÆ${A¿{¶CH‰ÓIƒÄé¿ôÿÿAÆ$#½{¶CIƒÄL‰óA¿#éŸôÿÿ¾L‰ç1ÀL‰\$0H ~$HÇÂÿÿÿÿL‰L$(L‰T$ 賬þÿL‹\$0L‹L$(L‹T$ 鑸ÿÿAÆ$#½/¶CIƒÄH‰ÓA¿#é?ôÿÿ¶CIƒÄH‰Ó½/A¿-é$ôÿÿ¶CH‰ÓéôÿÿH‰ÓI‰ÌA¿-éôÿÿAÆ${½/¶CIƒÄH‰ÓA¿{éçóÿÿH\$PD‹L$H1ÀD‹D$LH ?Hºc¾H‰ßèý«þÿéþÿÿès¥þÿóúAWAVAUATUSH‰ûHƒì(H‹GxH‹/HPüH‰WxHcH‹GI‰ÖDbHÐH)ÕHÁýUüƒú‡€AVMcäHcÒJ‹ àN,åH‹4ÐH‰L$‹V â ú…ãL‹~AVHcÒH‹4ЋV â ú…ßH‹L‹R AVHcÒH‹4ЋF % =uvH‹H‹H E1Àƒý~)H‹CENMcÉJ‹4È‹F % =…­H‹L‹@ H‹|$L‰ÒL‰þè&¤þÿH‰ßH‰Æèû§þÿH‹SJ‰âLkL‰+HƒÄ([]A\A]A^A_ÃDºH‰ßL‰T$èV¢þÿL‹T$H‰Áérÿÿÿf„¹1Òè¥þÿI‰ÇH‹Cé ÿÿÿ„ºH‰ßè¢þÿI‰ÂH‹Céÿÿÿ€ºH‰ßH‰L$L‰T$èé¡þÿH‹L$L‹T$I‰Àé1ÿÿÿH‰÷H5¥G蘥þÿ„óúUH‰þLõ1ÀSH °!H‰ûH®!¿çà Hƒìè§þÿE1ÉH‰ßLH Œ!HÖþÿ‰ÅH5‚!èÆ¦þÿE1ÉH‰ßLõH‹H `!HèÕþÿH5l!Ç@(蕦þÿE1ÉH‰ßLÄH‹H /!H·ÕþÿH5O!Ç@(èd¦þÿE1ÉH‰ßL“H‹H þ H†ÕþÿH52!Ç@(è3¦þÿE1ÉH‰ßLbH‹H Í HUÕþÿH5!Ç@(è¦þÿE1ÉH‰ßL1H‹H œ H$ÕþÿH5ø Ç@(èÑ¥þÿE1ÉH‰ßLH‹H k HóÔþÿH5Ø Ç@(è ¥þÿE1ÉH‰ßLÏH‹H : HÂÔþÿH5¸ Ç@(èo¥þÿE1ÉH‰ßLžH‹H H‘ÔþÿH5˜ Ç@(è>¥þÿE1ÉH‰ßLmH‹H ØH`ÔþÿH5x Ç@(è ¥þÿE1ÉH‰ßL<H‹H §H/ÔþÿH5X Ç@(èܤþÿE1ÉH‰ßL H‹H vHþÓþÿH58 Ç@(諤þÿE1ÉH‰ßLÚH‹H EHÍÓþÿH5 Ç@(èz¤þÿE1ÉH‰ßL©H‹H HœÓþÿH5øÇ@(èI¤þÿH‰ßE1ÉLxH‹H ãHkÓþÿH5ØÇ@(è¤þÿE1ÉH‰ßLGH‹H ²H:ÓþÿH5¸Ç@(èç£þÿE1ÉH‰ßLH‹H H ÓþÿH5˜Ç@(è¶£þÿE1ÉH‰ßLåH‹H PHØÒþÿH5xÇ@(è…£þÿE1ÉH‰ßL´H‹H H§ÒþÿH5XÇ@(èT£þÿE1ÉH‰ßLƒH‹H îHvÒþÿH58Ç@(è#£þÿE1ÉH‰ßLRH‹H ½HEÒþÿH5#Ç@(èò¢þÿE1ÉH‰ßL!H‹H ŒHÒþÿH5Ç@(èÁ¢þÿE1ÉH‰ßLðH‹H [HãÑþÿH5èÇ@(è¢þÿE1ÉH‰ßL¿H‹H *H²ÑþÿH5ÆÇ@(2è_¢þÿE1ÉH‰ßLŽH‹H ùHÑþÿH5¬Ç@(3è.¢þÿE1ÉH‰ßL]H‹H ÈHPÑþÿH5‹Ç@(ûÿÿÿèý¡þÿE1ÉH‰ßL,H‹H —HÑþÿH5jÇ@(þÿÿÿèÌ¡þÿE1ÉH‰ßLûH‹H fHîÐþÿH5FÇ@(ùÿÿÿ蛡þÿE1ÉH‰ßLÊH‹H 5H½ÐþÿH5#Ç@(èj¡þÿE1ÉH‰ßL™H‹H HŒÐþÿH5Ç@(è9¡þÿH‰ßE1ÉLhH‹H ÓH[ÐþÿH5èÇ@(è¡þÿE1ÉH‰ßL7H‹H ¢H*ÐþÿH5ÅÇ@(è× þÿE1ÉH‰ßLH‹H qHùÏþÿH5¢Ç@((覠þÿE1ÉH‰ßLÕH‹H @HÈÏþÿH5‡Ç@()èu þÿE1ÉH‰ßL¤H‹H H—ÏþÿH5nÇ@(èD þÿE1ÉH‰ßLsH‹H ÞHfÏþÿH5ZÇ@(è þÿE1ÉH‰ßLBH‹H ­H5ÏþÿH5GÇ@(èâŸþÿE1ÉH‰ßLH‹H |HÏþÿH5-Ç@(豟þÿE1ÉH‰ßLàH‹H KHÓÎþÿH5Ç@(耟þÿE1ÉH‰ßL¯H‹H H¢ÎþÿH5öÇ@( èOŸþÿE1ÉH‰ßL~H‹H éHqÎþÿH5×Ç@( èŸþÿE1ÉH‰ßLMH‹H ¸H@ÎþÿH5·Ç@(èížþÿE1ÉH‰ßLH‹H ‡HÎþÿH5–Ç@(輞þÿE1ÉH‰ßLëH‹H VHÞÍþÿH5tÇ@(苞þÿE1ÉH‰ßLºH‹H %H­ÍþÿH5QÇ@(õÿÿÿèZžþÿE1ÉH‰ßL‰H‹H ôH|ÍþÿH51Ç@(è)žþÿH‰ßE1ÉLXH‹H ÃHKÍþÿH5Ç@( èøþÿE1ÉH‰ßL'H‹H ’HÍþÿH5÷Ç@(gèÇþÿE1ÉH‰ßLöH‹H aHéÌþÿH5R>Ç@(lè–þÿE1ÉH‰ßLÅH‹H 0H¸ÌþÿH5A>Ç@(mèeþÿE1ÉH‰ßL”H‹H ÿH‡ÌþÿH5‚Ç@(nè4þÿE1ÉH‰ßLcH‹H ÎHVÌþÿH5ÿ=Ç@(hèþÿE1ÉH‰ßL2H‹H H%ÌþÿH5ö=Ç@(oèÒœþÿE1ÉH‰ßLH‹H lHôËþÿH5Ç@(p衜þÿE1ÉH‰ßLÐH‹H ;HÃËþÿH5¼=Ç@(ièpœþÿE1ÉH‰ßLŸH‹H H’ËþÿH5½Ç@(qè?œþÿE1ÉH‰ßLnH‹H ÙHaËþÿH5¤Ç@(fèœþÿE1ÉH‰ßL=H‹H ¨H0ËþÿH5ŒÇ@(jèÝ›þÿE1ÉH‰ßL H‹H wHÿÊþÿH5 =Ç@(e講þÿE1ÉH‰ßLÛH‹H FHÎÊþÿH5AÇ@(kè{›þÿE1ÉH‰ßLªH‹H HÊþÿH5'Ç@(üÿÿÿèJ›þÿE1ÉH‰ßLyH‹H äHlÊþÿH5 Ç@(ÿÿÿÿè›þÿH‰ßE1ÉLHH‹H ³H;ÊþÿH5ìÇ@(7èèšþÿE1ÉH‰ßLH‹H ‚H ÊþÿH5ÕÇ@(8è·šþÿE1ÉH‰ßLæH‹H QHÙÉþÿH5µÇ@(膚þÿE1ÉH‰ßLµH‹H H¨ÉþÿH5’Ç@(èUšþÿE1ÉH‰ßL„H‹H ïHwÉþÿH5nÇ@(è$šþÿE1ÉH‰ßLSH‹H ¾HFÉþÿH5JÇ@(èó™þÿE1ÉH‰ßL"H‹H HÉþÿH5+Ç@(è™þÿE1ÉH‰ßLñH‹H \HäÈþÿH5Ç@( è‘™þÿE1ÉH‰ßLÀH‹H +H³ÈþÿH5êÇ@( è`™þÿE1ÉH‰ßLH‹H úH‚ÈþÿH5ÊÇ@(úÿÿÿè/™þÿE1ÉH‰ßL^H‹H ÉHQÈþÿH5¬Ç@([èþ˜þÿE1ÉH‰ßL-H‹H ˜H ÈþÿH5ŽÇ@(\è͘þÿE1ÉH‰ßLü H‹H gHïÇþÿH50:Ç@(]蜘þÿE1ÉH‰ßLË H‹H 6H¾ÇþÿH5':Ç@(_èk˜þÿE1ÉH‰ßLš H‹H HÇþÿH5Ç@(^è:˜þÿE1ÉH‰ßLi H‹H ÔH\ÇþÿH5ïÇ@(è ˜þÿH‰ßE1ÉL8 H‹H £H+ÇþÿH5ÓÇ@(èØ—þÿE1ÉH‰ßL H‹H rHúÆþÿH5¸Ç@(è§—þÿE1ÉH‰ßLÖ H‹H AHÉÆþÿH5šÇ@(ýÿÿÿèv—þÿE1ÉH‰ßL¥ H‹H H˜ÆþÿH5zÇ@( èE—þÿE1ÉH‰ßLt H‹H ßHgÆþÿH5XÇ@(øÿÿÿè—þÿE1ÉH‰ßLC H‹H ®H6ÆþÿH5=Ç@(öÿÿÿèã–þÿE1ÉL H ƒH‹H‰ßHÆþÿH5Ç@(÷ÿÿÿè²–þÿH‰ßH¸ÿÿH5H‹Ç@(è2–þÿH‰ßH8’ÿÿH5è–þÿH‰ßH"‘ÿÿH5ûè–þÿH‰ßH ÅþÿH5øèð•þÿH‰ßHÖÃþÿH5õèÚ•þÿH‰ßH ãþÿH5íèÄ•þÿH‰ßHÚ/ÿÿH5á讕þÿH‰ßHÔÈþÿH5Õ蘕þÿH‰ßHþùþÿH5Öè‚•þÿH‰ßHø„ÿÿH5Õèl•þÿH‰ßHâ„ÿÿH5ÔH‹Ç@(èL•þÿH‰ßHÒÁþÿH5×H‹Ç@(è,•þÿH‰ßHÁþÿH5Ÿè•þÿH‰ßH|÷þÿH5–è•þÿH‰ßH¦LÿÿH5Žèê”þÿH‰ßH@öþÿH5‰èÔ”þÿH‰ßH*öþÿH5ŠH‹Ç@(è´”þÿH‰ßHêaÿÿH5‡H‹Ç@(è””þÿH‰ßHªëþÿH5€è~”þÿH‰ßHäTÿÿH5}èh”þÿH‰ßHοþÿH5wèR”þÿH‰ßHè˜þÿH5|è<”þÿH‰ßH’ëÿÿH5|è&”þÿH‰ßH<ÿÿH5{è”þÿH‰ßHf'ÿÿH5èú“þÿH‰ßHð'ÿÿH5èä“þÿH‰ßH:çþÿH5èΓþÿH‰ßHt$ÿÿH5~踓þÿH‰ßH^$ÿÿH5}H‹Ç@(蘓þÿH‰ßH˜ÿÿH5xH‹Ç@(èx“þÿH‰ßH¾!ÿÿH5uèb“þÿH‰ßH¨!ÿÿH5qH‹Ç@(èB“þÿH‰ßH¾þÿH5oH‹Ç@(è"“þÿH‰ßH8½þÿH5`è “þÿH‰ßH»þÿH5]èö’þÿH‰ßHŒáþÿH5[èà’þÿH‰ßHvºþÿH5VèÊ’þÿH‰ßH ÿÿH5Xè´’þÿH‰ßHúßþÿH5Xèž’þÿH‰ßHÔÞþÿH5X舒þÿH‰ßH޹þÿH5Yèr’þÿH‰ßHè¸þÿH5`è\’þÿH‰ßH¢¶þÿH5^èF’þÿH‰ßHü³þÿH5^è0’þÿH‰ßH&)ÿÿH5_è’þÿH‰ßH gÿÿH5aè’þÿH‰ßH gÿÿH5aH‹Ç@(èä‘þÿH‰ßHÚ±þÿH5WH‹Ç@(èÄ‘þÿH‰ßH:±þÿH5Q讑þÿH‰ßHÔÿÿH5Õ3蘑þÿH‰ßHްþÿH5:è‚‘þÿºH5–g H‰ßèÎþÿ1ÿè§ýþÿH‹Pg H‰ßH5+H è ‘þÿHƒÄ‰îH‰ß[]éþÿóúHƒìHƒÄÃ''undefNull! (magic-%lu%gcandbih_dumpcomdrdbCOMSET IMPSET Active CompatMode ChopBlanks HandleSetErr HandleError RaiseError PrintError RaiseWarn PrintWarn ShowErrorStatement AutoCommit BegunWork LongTruncOk MultiThread TaintIn TaintOut Profile Callbacks %s FLAGS 0x%lx: %s %s ERR %s %s ERRSTR %s %s PARENT %s %s KIDS %ld (%ld Active) %s IMP_DATA %s %s LongReadLen %ld %s NUM_OF_FIELDS %d %s NUM_OF_PARAMS %d CachedKids%s CachedKids %d %s cached attributes: %s '%s' => %s %s Name %s %s Statement %s DESTROY (dbih_clearcom)dbih_clearcomDBI::commonInvalid DBI handle %sdbih_getcom(demoted)imp_xxh_rvsv, msg, this_trace=100000S1000DBI::_svdump(%s)DBI::dump_handlepanic: parse_trace_flags (possible bug in driver) (cached)DatabaseNULLABLENAMENAME_NAME_hashNUM_OF_FIELDSNUM_OF_PARAMSPRECISIONParamValuesParamTypesRowsInCacheSCALEDriverAutoCommitActiveActiveKidsAutoInactiveDestroyBegunWorkChildHandlesChopBlanksCompatModeExecutedErrCountLongReadLenLongTruncOkMultiThreadPrintErrorPrintWarnRaiseErrorRaiseWarnRowCacheSizeShowErrorStatementTypeTraceLevelTaintTaintInTaintOutHandleErrorHandleSetErrParamArraysProfileReadOnlyCursorNameUsername .. FETCH %s %s = %s%s h, keysvprivate_sv, maxlen=0class, inner_refsth, col, ref, attribs=Nullsvsv, sql_type, flags=0dest, ...DBI::install_method %-21sO, flags 0x%04x, T 0x%08lx, H %uUDBI::_dbistateDBI::dbi_debugDBI::stateDBI::errDBI::errstrDBI::lasthDBI::rowsPERL_DBI_XSBYPASSDBI::neat_maxlen [err was %s now %s] [state was %s now %s]DBI::zombiepanic: DBI fetchsth, src_rvdbi_set_err_methodDBI::hash(%ld): invalid typekey, type=0 undef (not defined) %s (already defined) %s (copied from parent) %s%s line %ld%s%sDI via %s during global destructionDataPath!Statement!MethodName!MethodClass!File!File2!Caller!Caller2!Time!Time~h, statement, method, t1, t2unknown packageimp_data_size::fd >> %s::%s <- $DBI::%s= %s noneNo hash entry with key '%s'???hash is not a hash reference*main::STDERRSTDOUTa+Can't open trace file %s: %s-ithread1.643 STORE %s %s => %s FetchHashKeyNameRootClassCan't set %s to '%s'DBI/Profile.pmCan't load %s: %s%s _auto_newCan't set Callbacks to '%s'TraceFileImplementorClassCURRENT_USERNUM_FIELDSdbd_dbi_h, keysv, valuesvDBI not initialiseddbih_setup_handle%s_memunknown _mem packagedbi_imp_dataStateErrstrChildCallbackspanic: invalid DBIc_TYPErh1, rh2, allow_reparent=0swap_inner_handlesth, keyattrib=Nullch after take_imp_data() (not a reference)...?warnERRORinfofunc****warn:ERROR:info: !!failedinformationwarning at <- %s(%s) = %p <- %s(%s) = %p (%s %p) $h%sUsage: %s->%s(%s)%c -> %s AUTOLOAD"%s" in %s for %s (%s~0x%lx~INNER) thr#%p %s %s %s %s (err#%ld) %c%c <%c %s(%s=HASH(0x%p), %s= ( ) [%d items]= [ ... %ld others skipped ]%ldkeys row%ld (%s from cache) (not implemented)%s %s %s: [for Statement ", " with ParamValues: "] <- HandleError= %s%s%s%s :name:1:p%d%%sv5.26.0DBI.cDBI::DBIf_TRACE_CONDBI::DBIf_TRACE_DBDDBI::DBIf_TRACE_ENCDBI::DBIf_TRACE_SQLDBI::DBIf_TRACE_TXNDBI::DBIpp_cm_XXDBI::DBIpp_cm_brDBI::DBIpp_cm_csDBI::DBIpp_cm_ddDBI::DBIpp_cm_dwDBI::DBIpp_cm_hsDBI::DBIpp_ph_XXDBI::DBIpp_ph_cnDBI::DBIpp_ph_csDBI::DBIpp_ph_qmDBI::DBIpp_ph_spDBI::DBIpp_st_XXDBI::DBIpp_st_bsDBI::DBIpp_st_qqDBI::DBIstcf_DISCARD_STRINGDBI::DBIstcf_STRICTDBI::SQL_ALL_TYPESDBI::SQL_ARRAYDBI::SQL_ARRAY_LOCATORDBI::SQL_BIGINTDBI::SQL_BINARYDBI::SQL_BITDBI::SQL_BLOBDBI::SQL_BLOB_LOCATORDBI::SQL_BOOLEANDBI::SQL_CHARDBI::SQL_CLOBDBI::SQL_CLOB_LOCATORDBI::SQL_CURSOR_DYNAMICDBI::SQL_CURSOR_FORWARD_ONLYDBI::SQL_CURSOR_KEYSET_DRIVENDBI::SQL_CURSOR_STATICDBI::SQL_CURSOR_TYPE_DEFAULTDBI::SQL_DATEDBI::SQL_DATETIMEDBI::SQL_DECIMALDBI::SQL_DOUBLEDBI::SQL_FLOATDBI::SQL_GUIDDBI::SQL_INTEGERDBI::SQL_INTERVALDBI::SQL_INTERVAL_DAYDBI::SQL_INTERVAL_DAY_TO_HOURDBI::SQL_INTERVAL_HOURDBI::SQL_INTERVAL_MINUTEDBI::SQL_INTERVAL_MONTHDBI::SQL_INTERVAL_SECONDDBI::SQL_INTERVAL_YEARDBI::SQL_LONGVARBINARYDBI::SQL_LONGVARCHARDBI::SQL_MULTISETDBI::SQL_MULTISET_LOCATORDBI::SQL_NUMERICDBI::SQL_REALDBI::SQL_REFDBI::SQL_ROWDBI::SQL_SMALLINTDBI::SQL_TIMEDBI::SQL_TIMESTAMPDBI::SQL_TINYINTDBI::SQL_TYPE_DATEDBI::SQL_TYPE_TIMEDBI::SQL_TYPE_TIMESTAMPDBI::SQL_UDTDBI::SQL_UDT_LOCATORDBI::SQL_UNKNOWN_TYPEDBI::SQL_VARBINARYDBI::SQL_VARCHARDBI::SQL_WCHARDBI::SQL_WLONGVARCHARDBI::SQL_WVARCHARDBI::constantDBI::_clone_dbisDBI::_new_handleDBI::_setup_handleDBI::_get_imp_dataDBI::_handlesDBI::neatDBI::hashDBI::looks_like_numberDBI::_install_methodDBI::_debug_dispatchDBI::traceDBI::_svdumpDBI::dbi_timeDBI::dbi_profileDBI::dbi_profile_mergeDBI::dbi_profile_merge_nodesDBI::_concat_hash_sortedDBI::sql_type_castDBI::var::FETCHDBD::_::dr::dbixs_revisionDBD::_::db::connectedDBD::_::db::preparseDBD::_::db::take_imp_dataDBD::_::st::_get_fbavDBD::_::st::_set_fbavDBD::_::st::bind_colDBD::_::st::fetchrowDBD::_::st::fetchrow_arrayDBD::_::st::fetchrow_hashrefDBD::_::st::fetchDBD::_::st::fetchrow_arrayrefDBD::_::st::rowsDBD::_::st::finishDBD::_::st::DESTROYDBI::st::TIEHASHDBD::_::common::DESTROYDBD::_::common::STOREDBD::_::common::FETCHDBD::_::common::DELETEDBD::_::common::private_dataDBD::_::common::errDBD::_::common::stateDBD::_::common::errstrDBD::_::common::set_errDBD::_::common::debugDBD::_::common::traceDBD::_::common::trace_msgDBD::_::common::rowsDBD::_mem::common::DESTROYDBI.xsDBI::_dbi_state_lvalUse of DBI internal bind_as_num/quote_type function is deprecated(perhaps returned from a previous call which failed)%s given an undefined handle %s%s handle %s is not a DBI handle%s handle %s is not a DBI handle (has no magic)%s handle %s is not a valid DBI handle %s (%sh 0x%lx, com 0x%lx, imp %s): skipped dbih_clearcom: DBI handle (type=%d, %s) is owned by thread %p not current thread %p dbih_clearcom: DBI handle already clearedDBI %s handle 0x%lx cleared whilst still activeDBI %s handle 0x%lx has uncleared implementors dataDBI %s handle 0x%lx has %d uncleared child handles dbih_clearcom 0x%lx (com 0x%lx, type %d) done. Profile data element %s replaced with new hash ref (for %s) and original value stored with key '%s'panic: DBI active kids (%ld) < 0 or > kids (%ld) DESTROY %s skipped due to InactiveDestroy sv, msg="DBI::dump_handle", level=0 FETCH $h->{%s} from $h->{NAME} with $h->{NUM_OF_FIELDS} = %d and %ld entries in $h->{NAME}%s Can't get %s->{%s}: unrecognised attribute name dbih_setup_fbav realloc from %ld to %ld fields dbih_setup_fbav alloc for %ld fields dbih_setup_fbav now %ld fields (perhaps you need to successfully call execute first, or again)Statement has no result columns to bind%s dbih_sth_bind_col %s => %s %s bind_col: column %d is not a valid column (1..%d)Can't %s->bind_col(%s, %s,...), need a reference to a scalar%s->%s(...): attribute parameter '%s' is not a hash refdbi_profile_merge_nodes(%s, ...) requires array refdbi_profile_merge_nodes: increment %s not an array or hash refdbi_profile_merge_nodes(%s,...) destination is not an array referencedbi_class, meth_name, file, attribs=Nullsvinstall_method %s: invalid classinstall_method %s: bad attribs, usage: min %d, max %d, '%s'DBI/DBD internal version mismatch (DBI is v%d/s%lu, DBD %s expected v%d/s%d) %s. DBI/DBD internal structure mismatch%s (dr:%d/%ld, db:%d/%ld, st:%d/%ld, fd:%d/%ld), %s. -> HandleSetErr(%s, err=%s, errstr=%s, state=%s, %s) <- HandleSetErr= %s (err=%s, errstr=%s, state=%s, %s) -- HandleSetErr err=%s, errstr=%s, state=%s, %s set_err: state (%s) is not a 5 character string, using 'S1000' insteadCan't take_imp_data from handle that's not ActiveCan't take_imp_data from handle while it still has Active kidstake_imp_data from handle while it still has kidsNumber of row fields inconsistent with NUM_OF_FIELDS (driver bug)Deep recursion. Probably fetch-fetchrow-fetch loop.fetchrow returned %d fields, expected %dDeep recursion, probably fetchrow-fetch-fetchrow loopfetchrow: updating fbav 0x%lx from 0x%lx _set_fbav(%s): not an array ref_set_fbav(%s): array has %d elements, the statement handle row buffer has %d (and NUM_OF_FIELDS is %d)h, err, errstr=&PL_sv_no, state=&PL_sv_undef, method=&PL_sv_undef, result=Nullsvdbih_setup_attrib(%s): %s not set and no parent supplieddbih_setup_attrib(%s): %s not set and not in parent dbih_setup_attrib(%s, %s, %s) >> %s %s clearing %d CachedKids Invalid DBI handle %s, has no dbi_imp_dataProfile attribute does not existProfile attribute isn't a hash ref (%s,%ld) dbi_profile +%fs %s %s Ignored ref returned by code ref in Profile PathUnknown ! element in DBI::Profile Path: %sInvalid Profile data leaf element: %s (type %ld)dbi_profile(%s,...) invalid handle argumentCan't make DBI com handle for %s: %s dbih_make_com(%s, %p, %s, %ld, %p) thr#%p Can't use dbi_imp_data of wrong size (%ld not %ld)Can't use dbi_imp_data from different type of handleCan't use dbi_imp_data that not from a setup handledbih_make_com dbi_imp_data bad h typepanic: dbih_makefdsv %s '%s' imp_size %ld invalid dbih_make_fdsv(%s, %s, %ld, '%s') -> $DBI::%s (%c) FETCH from lasth=%s Can't read $DBI::%s, last handle unknown or destroyedCan't locate $DBI::%s object method "%s" via package "%s"hash_sv, kv_sep_sv, pair_sep_sv, use_neat_sv, num_sort_svDBI trace filehandle is not validDBI trace filehandle from GLOB is not valid %s trace level set to 0x%lx/%ld (DBI @ 0x%lx/%ld) in DBI %s%s (pid %d) Note: perl is running without the recommended perl -w option h, level=&PL_sv_undef, file=Nullsv, perhaps you meant NUM_OF_FIELDSpanic: DBI active kids (%ld) > kids (%ld)Can't set FetchHashKeyName for a statement handle, set in parent before prepare()Can't set LongReadLen < 0 or > %ldMultiThread support not yet implemented in DBIDBD driver has not implemented the AutoCommit attributeCan't set %s->{%s}: unrecognised attribute name or invalid value%s$h->{%s}=%s ignored for invalid driver-specific attribute class, level_sv=&PL_sv_undef, file=Nullsv DBI %s%s default trace level set to 0x%lx/%ld (pid %d pi %p) at %s dbih_setup_handle(%s=>%s, %s, %lx, %s) already a DBI (or ~magic) handleCan't setup DBI handle of %s to %s: %ssv, imp_class, parent, imp_datasvclass, parent, attr_ref, imp_datasv, imp_class New %s (for %s, parent=%s, id=%s) Can't swap_inner_handle between %sh and %shCan't swap_inner_handle with handle from different parentCan't use attribute '%s' because it doesn't contain a reference to an array (%s), actual method will not be called%c >> %-11s DISPATCH (%s rc%ld/%ld @%ld g%x ima%lx pid#%ld)%c <> %s for %s ignored (inner handle gone) %c <> %s for %s ignored (no imp_data) Can't call %s method on handle %s%s DESTROY ignored because DBI %sh handle (%s) is owned by thread %p not current thread %p %s %s failed: handle %d is owned by thread %lx not current thread %lx (%s)handles can't be shared between threads and your driver may need a CLONE method added%s->%s() invalid redirect method name %sDBI %s: invalid number of arguments: got handle + %ld, expected handle + between %d and %d parameter %d of %s->%s method callon DESTROY handle %s still has child %s (refcnt %ld, obj %d, dirty=%d) !! The %s '%s' was CLEARED by call to %s method %c {{ %s callback %s being invoked with %ld args %c }} %s callback %s returned%s Callback for %s returned %d values but must not return any (temporary restriction in current version)Can't locate DBI object method "%s" via package "%s"(err=%s, errstr=undef, state=%s) -> HandleError on %s via %s%s%s%s %c <> DESTROY(%s) ignored for outer handle (inner %s has ref cnt %ld) preparse found placeholder :%d out of sequence, expected :%dpreparse found mixed placeholder styles (%s / %s)preparse found unterminated single-quoted stringpreparse found unterminated double-quoted stringpreparse found unterminated bracketed {...} commentpreparse found unterminated bracketed C-style commentdbh, statement, ps_return, ps_accept, foo=NullchDBI::SQL_INTERVAL_DAY_TO_MINUTEDBI::SQL_INTERVAL_DAY_TO_SECONDDBI::SQL_INTERVAL_HOUR_TO_MINUTEDBI::SQL_INTERVAL_HOUR_TO_SECONDDBI::SQL_INTERVAL_MINUTE_TO_SECONDDBI::SQL_INTERVAL_YEAR_TO_MONTHDBI::SQL_TYPE_TIMESTAMP_WITH_TIMEZONEDBI::SQL_TYPE_TIME_WITH_TIMEZONEDBD::_::common::swap_inner_handleÐlþÿPmþÿðlþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿmþÿPmþÿPmþÿ0mþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿPmþÿ¨lþÿÇžþÿДþÿœþÿДþÿЛþÿДþÿДþÿДþÿ›þÿДþÿДþÿДþÿeœþÿДþÿДþÿUžþÿДþÿ©þÿ©þÿþ¨þÿДþÿДþÿДþÿ3žþÿÚžþÿ´›þÿi”þÿt›þÿi”þÿi”þÿi”þÿ4›þÿi”þÿÒžþÿÊžþÿžþÿi”þÿi”þÿâžþÿi”þÿª¨þÿ²¨þÿ¢¨þÿi”þÿi”þÿºžþÿ8šþÿÈšþÿÈšþÿÈšþÿÈšþÿÈšþÿÈšþÿÈšþÿÈšþÿÈšþÿ–þÿÈšþÿˆ—þÿÈšþÿX˜þÿø˜þÿˆ™þÿ£›þÿþÿ›þÿÄ“þÿךþÿÄ“þÿÄ“þÿÄ“þÿ—šþÿÄ“þÿô›þÿ¥œþÿŒœþÿÄ“þÿÄ“þÿ žþÿÄ“þÿT˜þÿô˜þÿ„™þÿÄ“þÿÄ“þÿDœþÿyou probably need to rebuild the DBD driver (or possibly the DBI)DBI::Profile €„.AàC;,dðLþÿHÐUþÿp ^þÿ_þÿˆ°_þÿœð_þÿ°p`þÿÜ `þÿô hþÿX`hþÿtàiþÿ°ðiþÿÄÐjþÿØ`tþÿXxþÿÐðxþÿ zþÿdzþÿ{þÿÀÐ|þÿ `þÿHþÿ„ ‚þÿ´°‚þÿäƒþÿü0…þÿLð…þÿ|€†þÿ¬‡þÿÜ ‡þÿ ‰þÿX Šþÿ˜ °ŠþÿÈ  ‹þÿ @ŽþÿŒ €þÿØ P§þÿ€ `¨þÿÌ à¨þÿü °©þÿ, Pªþÿh 0¬þÿ´ p®þÿ à¯þÿ< 0²þÿp à³þÿ¼ p¼þÿ€½þÿTÀ¾þÿ@¿þÿ¼€¿þÿØPÇþÿl€Êþÿ¬0ËþÿÜÌþÿàÌþÿ`Íþÿ´pâþÿ80äþÿ„`èþÿ`éþÿLÀëþÿ˜pîþÿäïþÿòþÿ`€ôþÿ¸ÐôþÿÔ0õþÿì öþÿ8Pøþÿˆpûþÿ  ûþÿ4àüþÿ þþÿ$ÿþÿD°ÿÿÀÿÿ8Àÿÿˆ€ÿÿÔ€ÿÿ0€ÿÿp #ÿÿÀP(ÿÿ @+ÿÿ|°+ÿÿ¨P,ÿÿäà.ÿÿX 0ÿÿ´P1ÿÿðIÿÿlJÿÿœPMÿÿø Vÿÿü Wÿÿ<@Zÿÿ˜ _ÿÿàcÿÿ„P¥ÿÿ8 p²ÿÿÐ P´ÿÿ!zRx $ IþÿàFJ w€?:*3$"DXRþÿÐ\\þÿp \þÿ2(„8\þÿxA†DƒF q CAH °Œ\þÿ!HR`Ȥ\þÿuFBŽB E(ŒA0†D8ƒD`¶hHpXhA`X 8A0A(B BBBG M hBpQ ,Àcþÿ7Eƒq8HäcþÿvBBŒD †D(ƒG0Š (A ABBE „(eþÿ˜$eþÿÓ|¬ðeþÿ† BEŽE B(ŒA0†D8ƒN`¬hOpNhB`t 8A0A(B BBBF thNpWhB`whLpXhA`]hNpVhA`t,oþÿ®MŽBB ŒA(†A0ƒ‡ (A BFBK µ (A BBBD X (E DBBK Î (D IBBI 8¤8rþÿÝBŒD†D ƒY EBF h CBC TàÜrþÿIŽBE ŒA(†A0ƒo8H@T8A0D (A BBBG y8I@^8A0(8¤sþÿyE†AƒJ Z AAA ,døsþÿ{FŒA†A ƒ` ABA H”Htþÿ¸FBŽB B(ŒA0†A8ƒGPõ 8A0A(B BBBD 8à¼uþÿŽFBŒA †A(ƒJ0ö (A ABBH 8xþÿ)FBŒA †A(ƒG02 (A ABBG ,Xzþÿ‹FŒA†A ƒs ABA ,ˆdzþÿ‡FŒA†A ƒo ABA ¸ÄzþÿZKLÐ {þÿFŽBB ŒA(†A0ƒV (A BBBG a (A BBBH , Ü|þÿ½FŒA†A ƒ‘ ABA ,Pl}þÿFŒA†A ƒx ABA ,€Ì}þÿyFŒA†A ƒ^ ABA ,°~þÿ™FŒA†A ƒ ABA HàŒ~þÿ[FBŽB B(ŒA0†A8ƒG@Û 8A0A(B BBBF <, þÿFŽBB ŒA(†A0ƒÉ (A BBBD ,l€€þÿ‡FŒA†A ƒo ABA <œà€þÿáFŽBB ŒA(†A0ƒ• (A BBBH €Üþÿ›BEŒA †D(ƒG0~ (A ABBI d (D ABBC v (A ABBD Ê (A ABBH l (L ABBK H`¬ƒþÿ>FEŽB B(ŒA0†A8ƒDP 8A0A(B BBBG ¤¬ „þÿÆFBŽE B(ŒD0†A8ƒD°¸LÀ[¸D°5¸LÀX¸A°Ç 8A0A(B BBBG ¸IÀ_¸A°0 ¸LÀY¸B°?¸VÀQ¸E°HTÈ›þÿFŽBB ŒA(†A0ƒ™ (A BBBD D8L@JHBPI0, Œœþÿ|FŒA†A ƒd ABA ,ÐÜœþÿÍFŒA†A ƒ£ ABB 8 |þÿœFBŒA †A(ƒJ0u (A ABBA H< àþÿÕBEŽH B(ŒA0†A8ƒD@Û 8D0A(B BBBA Hˆ tŸþÿ>FBŽE B(ŒD0†A8ƒG`Û 8F0A(B BBBK 8Ô h¡þÿbFBŒA †A(ƒG0º (A ABBG 0 œ¢þÿJFŒA†A ƒD0Y  AABG HD ¸¤þÿ¯FBŽB B(ŒA0†A8ƒGPÞ 8A0A(B BBBC H ¦þÿŒBBŽE E(ŒA0†A8ƒDpŒ 8A0A(B BBBF HÜ `®þÿ FEŽB B(ŒA0†A8ƒD@Å 8A0A(B BBBA 8( $¯þÿ1FBŒA †A(ƒGPß (A ABBJ (d (°þÿxFŒD†A ƒiAB |°þÿ9Hƒp¬  °þÿÄFBŽB B(ŒA0†A8ƒG`hWpm8A0A(B BBBK`OhPpQhB`RhNpRhA`chMpShA`ÃhMpShA`AhNpShB`<@ Ü·þÿ-BŽBI ŒD(†A0ƒM (A BBBJ ,€ ̺þÿ§FŒA†A ƒ ABA (° L»þÿÝE†DƒJð AAA TÜ ¼þÿÐMŽEE ŒD(†D0ƒ} (A BBBA A 8P@THLPEXE`G H8G@P4 x¼þÿ¦J†AƒD RAAEÃÆH ƒ†D(M0V(A `(N0X(A DAA€ˆ Ô¼þÿÕFBŽE E(ŒD0†A8ƒG€y 8A0A(B BBBG ˆ^FˆB€”ˆMZˆA€óˆUZˆA€H 0Ñþÿ¿FEŽE E(ŒD0†A8ƒD€× 8A0A(B BBBA |X¤Òþÿ*FEŽB B(ŒA0†A8ƒD€qˆLXˆB€ê 8A0A(B BBBH Dˆ]WˆB€Œˆ]VˆA€DØTÖþÿýFBŒD †A(ƒD0p (D ABBF I8f@F8A0H  ×þÿYFBŽB B(ŒA0†A8ƒJP¼ 8A0A(B BBBB Hl Ùþÿ¥FBŽB B(ŒA0†A8ƒJPÅ 8A0A(B BBBI ,¸„Ûþÿ”FŒA†A ƒ| ABA HèôÛþÿôFBŽB B(ŒA0†A8ƒJ`E 8A0A(B BBBI T4¨ÞþÿpFBŽB B(ŒA0†A8ƒJ`Æ 8A0A(B BBBH ThNpVhA`ŒÀàþÿHAƒF¨ôàþÿTFHÀ<áþÿlFBŽB B(ŒA0†A8ƒG@ä 8A0A(B BBBE L `âþÿ®BBŒA †A(ƒD0k (A ABBE Š (A ABBH ”\ÀãþÿBBŽE B(ŒD0†D8ƒJ`chFpThA`G 8A0A(B BBBD shMpUhA`¾hMpShB`c 8H0A(B BBBF ahIpUhA`ôHæþÿ,hdæþÿ1BEŽJ K(ŒK0†D8ƒGXF`FXAP] 8A0A(B BBBJ ¬8G0A(B BBBHt8çþÿ¤BEŽE E(ŒD0†A8ƒG`ß 8A0A(B BBBJ zRx `ƒ†ŒŽ(ˆHþÿ(ødèþÿy@ƒ] A HÄèþÿ—BBŽB B(ŒA0†C8ƒDpx 8A0A(B BBBF ¤dëþÿBBŽB B(ŒD0†D8ƒGàI 8A0A(B BBBF HèLð\èDàœèIð_èBàòèNðVèBàèZðKèAàIèNðUèAàL €ûþÿùFBŽE B(ŒA0†A8ƒDv 8A0A(B BBBK H\0þþÿ¼BEŒD †D(ƒD0 (A ABBF D(L CBBX¨¤þþÿüBEŽE E(ŒA0†D8ƒG`  8D0A(B BBBJ UhHpHhA`<HÿÿýMŽBE ŒD(†D0ƒ (D BBBE LDÿÿ—FBŽB B(ŒA0†A8ƒD 0 8A0A(B BBBD \”X ÿÿ"BEŽB B(ŒA0†A8ƒD°¦¸HÀV¸I° 8A0A(B BBBG Xô(ÿÿæFBŽB B(ŒA0†A8ƒJpIxE€XxDpo 8A0A(B BBBE (P¼ÿÿjE†DƒD A CAF 8|ÿÿšBŒH†A ƒc ABG H ABM p¸dÿÿBBŒA †D(ƒD0% (A ABBH W (F ABBF Z (C ABBF d (C ABBD X,€ÿÿ8BBŽB B(ŒD0†A8ƒGPk 8D0A(B BBBD xXO`AhZpNPHˆdÿÿ,FBŽB B(ŒA0†A8ƒG@Ò 8A0A(B BBBG hÔHÿÿšFBŽE E(ŒA0†A8ƒGp9 8A0A(B BBBB xZ€JxApYx]€JxDp,@|.ÿÿŸFŒA†A ƒ‡ ABA Xpì.ÿÿ¾FBŽB B(ŒA0†A8ƒGPB 8A0A(B BBBG uXf`HhApPPÌP1ÿÿÁBEŽB E(ŒK0†A8ƒG`ŸhNpYhA` hMpZhB`MhMpZhB`MhMpYhA`MhMpVhA`MhMpWhB`^hKp…hB`VhlpFhB`¶hIpChA`QhLpUhA`~ 8A0A(B BBBI µhUpRhA`w hIps ÄhLpXhA`hhMpShA`{hQpOhB`<Ð9ÿÿüFŽBB ŒA(†A0ƒ¿ (A BBBF XÜ9ÿÿFBŽB B(ŒA0†A8ƒJp¶xM€XxApÙ 8A0A(B BBBI dl <ÿÿQFBŽB B(ŒA0†A8ƒMÐŒØIàwØAÐ^ 8A0A(B BBBH Z ØPàN €Ô˜Aÿÿ7FBŽB B(ŒA0†A8ƒG`ýhLpOhD` 8A0A(B BBBD è 8A0A(B BBBF ïhHpFxB€R`°XTEÿÿpAFBŽE B(ŒA0†A8ƒG°… 8A0A(B BBBI ù¸VÀDÈEÐLØAàV° ¸FÀa¸B°s¸MÀS¸A°ò¸DÀc¸A°¡¸UÀN¸B°´¸^ÀG¸B°]¸TÀK¸A°€ ¸JÀX¸D°¼¸DÀK¸A° ¸NÀc¸A°T¸^ÀF¸B°u¸BÀI¸A°¸IÀS¸A°b¸bÀG¸B°_¸^ÀG¸B°^¸NÀW¸B°¢¸^ÀI¸A°x ¸SÀ[¸A°® ¸NÀS J¸IÀF¸A°” …ÿÿ FEŽB E(ŒA0†C8ƒJ€Ô 8A0A(B BBBB ôˆKcˆA€QˆKcˆA€N ˆKL L ˆKQ ,ˆZ`ˆB€H¤˜‘ÿÿØFBŽB B(ŒA0†A8ƒG` 8A0A(B BBBF (ð,“ÿÿ†E†MƒZ NFAGNUÀP>> "Uw ‡ ˜+ ¨¨ " "õþÿo`H¨ Õ  "8 `Ș ûÿÿoþÿÿoXÿÿÿoðÿÿoùÿÿo "Ð+à+ð+,, ,0,@,P,`,p,€,, ,°,À,Ð,à,ð,-- -0-@-P-`-p-€-- -°-À-Ð-à-ð-.. .0.@.P.`.p.€.. .°.À.Ð.à.ð.// /0/@/P/`/p/€// /°/À/Ð/à/ð/00 000@0P0`0p0€00 0°0À0Ð0à0ð011 101@1P1`1p1€11 1°1À1Ð1à1ð122 202@2P2`2p2€22 2°2À2Ð2à2ð233 303@3P3`3p3€33 3°3À3Ð3à3ð344 404@4P4`4p4€44ÿÿÿÿ GCC: (GNU) 8.5.0 20210514 (Red Hat 8.5.0-4)GA$3a1˜=˜=GA$3a1˜+®+GA$3a1¨¨°¨GA$3a1 =Y> GA$3p972`>¦¨GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA*cf_protection`>{> GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection{>²> GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection²>8? GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection8?a? GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectiona?åF GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionåF'G GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection'G¦H GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection¦H¿H GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection¿H“I GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection“I&S GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection&SÞV GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÞV½W GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection½WÓX GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÓXYY GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionYYÛY GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÛY˜[ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection˜[.^ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection.^Y` GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionY`ë` GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionë`wa GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionwaÚa GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÚaÿc GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÿc½d GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection½dPe GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionPeÉe GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÉeif GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionifËg GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionËgèh GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionèhwi GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionwiaj GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionaj m GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection mNn GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionNn† GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection†&‡ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection&‡¬‡ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection¬‡}ˆ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection}ˆ‰ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection‰õŠ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionõŠ> GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection>¢Ž GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection¢Žú GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionú¯’ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection¯’<› GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection<›Mœ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionMœ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionž GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionžIž GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionIž¦ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection¦M© GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionM©÷© GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection÷©Ýª GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionݪ°« GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection°«V¬ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionV¬5Á GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection5Áÿ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÿÂ*Ç GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection*Ç-È GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection-È‰Ê GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection‰Ê5Í GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection5ÍÔÍ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÔÍÔÐ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÔÐPÓ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionPÓ˜Ó GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection˜ÓôÓ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionôÓlÕ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionlÕ× GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection×>Ú GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection>ÚlÚ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionlÚ¡Û GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection¡ÛTÝ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionTÝÙÝ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÙÝwà GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionwà„ñ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection„ñ‰ô GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection‰ôLõ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionLõLù GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionLùMú GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionMúç GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionç GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection  GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection z  GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionz   GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection ¯  GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection¯ è GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionè GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionº( GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionº(_) GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection_), GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection,á4 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectioná4ì5 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionì59 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection9a> GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectiona>§B GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection§B „ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection „=‘ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection=‘“ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection“¦¨ GA*FORTIFYGA+GLIBCXX_ASSERTIONS GA$3p972˜=˜=GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972p=˜=GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972˜=˜=GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972˜=˜=GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA$3a1¦¨¦¨GA$3a1¦¨¦¨GA$3a1®+³+GA$3a1°¨µ¨<`>Fjp=(usÑ# sJ@ð^:8:i-0:à(<:rK:mK:k-Ê%0:€;-'<tint|&3)H:ÊOOH/H? ‘HØ’O®“OBW”Hd6•Oê0–”.G—”}C˜|Õ2š”¹?ž”a. ”u)7º(¬”¡±”£>¿”¬SÂ!” y)n:r-yA @³J/O§¥>lV»? ¿( ØO7€  Ø|Q ØOè$OE Á%<8 dE ï% +%Ž DdE " b%QRlµT#lñSU#l DçVD%aJ(vô®Hx|a-yH‘z|™ |H ÒO”|sši*Yši«:›r:hKÞ 1H/(C 510E~ŠBF5+%G ”yE$O':H: œF(dvqIm}}$Ow ºO¬VHO3HOzS7OžS7£FcXÌ]/p(3ˆ%‰è99¡:"Th;!#Zp˜9$Zxf<'`€II$O O0q C ƒpp$O €p)p) *!Œ ê+ €‘Gª”º$O%´È!ï·O'ž+( |@©&)èHºÿ$Ok:SïYt1È|ÆV 7®W 78ahL:ƒ5;§7?’­A |Ê2B |qC17GÃhLIƒ5J§qK17 OhLQƒ5R§#'S |èVT\;U7a2ï c 7Z9d 7/^T–eC gˆ7 Y…K[ 7 ]iÆ<h 27l©•Xn”¬6o |7tÚ(v 7¦Iw |‚xH /p3DqD5D‹-<=HDaP_rtL’^IVÃר@ §37A ³ ¥C |$Ÿ-E ›(± J ï0ÝEN>8-4PJ@À[HÒ?\X©/]h?jt xb„ $On” $O%V Ÿ„ Ç?   | ¡”'V ¦„ É? ® |  ¯”«  |% !4 :R!6 |&0!7 | é ) w "-nF".n%PE#v ˆ # n‚Q# Ù #|N# Þ%æ $bÅ õ$d n²*$e 7'$f|ª$g|²:$h % $ÿ ÀP$ nºT$ :$|é?$ n*W($DD($F nZA$G DV$H|Q‡K%”é%%Ë+O%û1%<ú?% 0½%! ”y¤$OÿQµ4%%ôé%%'Ë+O%(û1%)<ú?%*0½%+ ”FDIR&0åG8IV'v”8UV'wO8NV'E):-è( |!'/ µB8OP'1 `Gop()Ê;Š&)Ëa3 0)Ëa3t)Ë™Ln,)ËøJ.…8)ËH  .Ÿ)ËH .YF)ËH .ZT)ËH .Î7)ËH .P)ËH .)ËH .]C)ËH ½)Ë‹2"?)Ë‹2#8COP'2 HZcopP*y•Š&*za3 0*za3t*z™Ln,*zøJ3…8*zH  3Ÿ*zH 3YF*zH 3ZT*zH 3Î7*zH 3P*zH 3*zH 3]C*zH ½*z‹2"?*z‹2#o*}3$ˆ *€øJ(ìQ*‚ n0Y**‡ Î28,*ˆ Î2<š3*Š7T@h=* =TH!‡'8 ¢%»`)ûÞŠ&)üa3 0)üa3t)ü™Ln,)üøJ.…8)üH  .Ÿ)üH .YF)üH .ZT)üH .Î7)üH .P)üH .)üH .]C)üH ½)ü‹2"?)ü‹2#³)ý a3(C)þ a30~7)øJ8ÍE)Î2@Ú%) ¥LH )×LP½;) a3X!§-'< ë*UTP)§Š&)¨a3 0)¨a3t)¨™Ln,)¨øJ3…8)¨H  3Ÿ)¨H 3YF)¨H 3ZT)¨H 3Î7)¨H 3P)¨H 3)¨H 3]C)¨H ½)¨‹2"?)¨‹2#³)© a3(C)ª a30*)« a38­)¬ a3@Õ,)­ a3H!á'G )fjà 'œn%ˆ>+#D34Iop+$a3?+%D3½ +'D3S+(D3 Á+*öb(»+,½20÷%+-½24fT+/üb8³+0½2@É+1½2D')+3D3HZM+4P$++5Xú7+6`é,+8Î2h0+:übp>P+<übxÕ+=üb€+A‹2ˆ +CAB+E[3˜Á1+HŸL ÆE+KÖC¨R"+LÖC°`>+Ng3¸1R+Og3¹P+^¬2ºù+`‹2¼›W+a‹2½ŽF+bO3ÀN7+n‹2È´<+u€2É'R+z[3Ð82+{[3Ø€>+}!Wàñ&+~U3è½@+cð»E+€U3øR+„Z&+†93Ÿ +‡93ñ+ŠÖC*+c -+‘c(Œ4+“;K0µ)+¤n%8º0+¥n%P+¦n%h9+§ð1€È+¨ð1°[ISv+©93àT +«cèü@+­[3ð[Ina+»Bø+¿£ Y+À£ 4+ÁO3 /+Â93([Irs+Ô930Ò+ÕO38T+ÖO3@å +×O3H„!+ØpPrT+Ù93XfR+Ú93`ÎL+Û93hü+Þa3p¸+ßLUxŸ(+áLU€Ò@+âTˆŠ*+ã93`,J+æ{9h`+èa3pûK+ëa3x+ì[3€]7+íO3ˆx+îO3eN+ñn˜ +òB ž;+ô¬2¨êN+÷‹2ªf+ùg3«Ç+úg3¬üB+ûg3­Ô+ý93° ï+c¸ . +äaè !+/äað ÷'+=tbø ƒF+? ÅU+@n ì +BÎ2 2L+DÎ2 +F| X+I| b+J  ¹+KO3( Ô!+LO30 @G+MO38 ?3+Nn@ ðH+OpH +P93P ÑX+Q93X .+T93` L&+U*ch %K+Vpp ó+Xg3x +Yg3y !+Zg3z ü+[g3{ â+\g3| ž+]g3} Û+^g3~ ñ+_g3 +an€ ü+b93ˆ ++d© ï+f½2˜ s+h½2œ ö +l½2  cM+o|¤ +p0c¨ 4+sO3° S+tO3¸ u+uO3À xF+vO3È *+wU3Ð \W+zO3Ø éL+}O3à ;<+€O3è e +O3ð ËS+™O3ø €+š93 S,+›93 ›G+œ93 |+U3 t+Ÿ6c  0+¢[38 A.+£[3@ õQ+¤93H v,+¥U3P ×+¦U3X (+§U3` +¨U3h C+©U3p ÙM+¬U3x —++¯n€ IY+²ƒ>ˆ ë+³a3 b+´a3˜ 7+µa3  ¸#+¶a3¨ Æ5+¹!W° ÀO+»|¸ S#+¼|¼ ª;+½nÀ I+¾FcÈ ¶A+¿nÐ S+ÄU3Ø 8.+Å93à Û1+Æ93è @+É|ð ð)+̽2ô X+Íg3ø ƒI+Îg3ù –:+Ϭ2ú +Ñ|ü ì+Ó½2 ÙO+×½2 ¿I+ØLc ™A+ç[3 tE+êRc q+ì;  _+îƒ>p ¶+ï5Kx +ðøJ€ ¦X+ñøJˆ m9+ùƒ> (B+ú|˜ ²+ýÎ2œ ý0+ÿg3  ¥+g3¡ ª+g3¢ ™+g3£ ÁX+‘¤ V'+‘¨ d+…¬ AD+…°yIan+ Î2´ lW+ Î2¸ ¿3+Î2¼ 2+Î2À `?+Î2Ä 4D+È Ñ +nÐ  ++6Ø e+!Xcà ˆ?+#ß2` « +%Î2d ˆ+'F^h ðI+)93p oF++½2x N.+,øJ€ Ü +.øJˆ Ø<+/øJ ÝT+1øJ˜ '+3øJ  UN+6n¨ .+7µ° }+8µ¸ ƒ+9Î2À ˆH+:‹2Ä D++;g3Å ÙL+=‹2Æ ø>+>g3Ç 8G+Fg3È –O+Gg3É  +LlaÌ /:+Ng3Ð +SVÑ Ö+W|Ô ‹3+Yg3Ø ëD+[nà ¢J+\93è ‚+a93ð Ö++b93ø <+c93 hQ+d93 N+f93 %+g93 <+j93 ×W+k93( F+l930 L@+m938 Ç/+n93@ ¥G+o93H ¾:+p93P Ø8+rhcX >U+sxc¨ ¾S+txc( 4B+u93¨ ¬-+v93° Ý/+w93¸ ”<+x93À p0+y93È )+z[3Ð 7+|[3Ø A<+}3Fà C+~Bè Û$+ˆcð ÛX+€‹2ü I+ˆg3ý ÷V+‰g3þ 0E+D3 ¿)+‘D3 ~O+Ÿ˜c 3+ U3 œK+¢7 N +¦D3( H+¨U30 x+­žc8 ½2+®øJ@ œ+¯øJH G+³¤cP ˆ=+¶[3X k+·[3` À+ºþ5h D>+»ªcp ~+¼ªcx øS+¿93€ î+À93ˆ ×R+Á93 8+Â93˜ ß.+Ã93  +Ä93¨ Ö+Æb° ‹+ÈU3¸ 7;+ÉU3À oS+Ì”È Á+Ïm^Ð ˆ9+Ðm^Ø 2+×m^à D8+Ù^è 4+Ü^ð …+ßÄ^ø ^+â[3 g5+è[3 ƒ +ëU3 Ù +ï[3 R-+ó93 O+õ[3( H+÷°c0 gX+ûFc8 ™+ý·a@ O+²bˆ U+ ¶c Â+ |˜ g(+^  µ,+"¼c¸ YX+-æJÐ M+/BØ 8SV'O %n%Gsv,çÀ%n<,è7H6,èÎ2 B,èÎ2 $,ém78AV'P Ì%Gav,ö &n<,÷;H6,÷Î2 B,÷Î2 $,ø:8HV'Q &Ghv,ûZ&n<,ü§;H6,üÎ2 B,üÎ2 $,ý%;8CV'R k&Z&Gcv,ñ¬&n<,ò—:H6,òÎ2 B,òÎ2 $,ó:!)E'S ¹&*…&,'n<,o9H6,Î2 B,Î2 $,@<8GP'T  'GgpP- »'àP- 93»1- òJ:E- ƒ>Ñ4- Î2b- Î2þH- [3 RD- U3(ðF- ƒ>0¼ - O38.³E-H@.5-H@#6- S=H8GV'U Ç'Ggv,ì(n<,í:H6,íÎ2 B,íÎ2 $,î98IO'V (Zio,Z(n<,:<H6,Î2 B,Î2 $,­;!®'W g(*`*?„(a9*CúW*É0`*Ì-) *Í ‹2s/*Î ‹2kE*Ï ¬2I*Ð ½2*Ò ½2Á8*Ó ½2 –@*Ô !W>Y*Õ ÖCÏ*Ö Þ*× ½2(u<*ßÕV0!â7'Z :)%H0.°)q7. ‚=9. BYoL. ¬2#X. y%2. ‹2`(. ÷. 93 ‚D. n(8XPV'[ ½)Zxpv ,õ*H?,ö[3¯4,öY=/,öB$,öˆ=!'\ **Ž(,ùf*H?,ú[3¯4,úY=/,úB$,ú­=‡R,û= !&'] s**= (,È*H?,[3¯4,Y=/,B$,Ò=ü1,= !Ó'^ Õ**;0,8+H?,[3¯4,Y=/,B$,÷=‡R, = B/, Í<(!¼'_ E+*o0,¨+H?,[3¯4,Y=/,B$,>‡R,= B/,Í<(!É'b µ+%ñV(/ ,H?/ [3¯4/ Y=D/ R/ š6/ D3 !'c ,%¨ 0‡S,H?0ˆ [3¯40‰Y=Ê;0ŠBÓ0‹B!'d `,*F0,4Ã,H?,5[3¯4,5Y=/,5B$,5A>‡R,6= B/,7Í<(!f'e Ð,%3Xh1 ”-H?1[3¯41Y=/1B$1K =1[3 äA1¿K(1áK0t1L8æ41n@ª 1%LHö1ƒ>PÜJ1Î2X^1f>\gI1½2`!'h ¡-*ˆˆ,^¬.H?,_[3¯4,_Y=/,_B$,_•>‡R,`= ö+,b‡9( Y,oº>0W:,q 8],r @ß9,s H;O,t nP6@,u O3X8*,v n`ÇQ,w O3hÅF,x npÙ ,y O3x«C,z y€·,{ ‹2!½7'i ¾.¬.%Î@. 4/ . ÐXR. ÐXE*. ïXM. ÐX7K. ÐX ‰V. Y(KJ. 'í g3U'î 3N'ï ‰3*>F'{f0óS'|ð]±N'}ûà '~ 7!¼'l s0*ãD0'Ö0|6'‚ö]”'ƒ '„ #'…^¬'†ð] ­'‡ð](!I'm ã0*Ô)(,b81ô@,cU3G,dH9,eƒ3„,fƒ3­+,gU3 ! 'q E1%l2‡1 2 -'2&AKf+2' Î2IB2( Î28PAD'r À%!]%'s ¡1%W(2+ð1æ!2, ~2-oKÚ 2. ñ2/øJÈ+20 Î2 !< 't ý1%Ê 02L€2X2MnøE2M[3c02M{KUB2MÎ2Ë=2MÎ2ô62MÎ2 ÒQ2M|$ô:2M‹2(G2M‹2)FI83ªVFU83«0‹2FI163¬i›2FU163­<¬2FI323®|½2FU323¯HÎ2{Î2Ú2ï2;ä2)P3Ùï2!Ç3< Î2=3 7 3!¢@'w 6E!SW'y û n%93 93D3 »' À%  & T:¨g3=ƒ3 ƒ3 7  s3%ïUØ415G43|G 46 nÜ47 nJ48 nKA49 n þ:4: n(¨4; n0û4< n8Æ(4= n@—4@ nH¤4A nPR4B nXC=4D/5`ÇR4F55hw=4H|p4I|t64J ïx™D4M<€g4NV‚0,4O;5ƒ¯H4QK5ˆT4Y û¬)4[V5˜ 4\a5 SU4]55¨d4^ 7°xU4_ µ¸ R4`|À 4bg5ÄóU53|# 4+0t *5 3yK5$O "50©) Q50 \5yw5$O6‰ƒ5 5:#6Šƒ5P6‹ƒ5ï;7 |v¸5;­5±7¸5î;7 |°7¸5%(8<í508>þ5 á5!<8N60.‡"97ÆY=:¤`6N:§ ½2´5:© n³5:ª a3Ž<:« O3=:¯"6RH,„á6 ß2 ˜( :, Ë- ÙK A# ý4 û& %E ¹! c&  _" i% Ç  %# eS,™l6FHE,»ø6Ghe0 ,7G0$ {9÷0% S=%0)åQFHEK,¼87Ghek 0-m7þ=0.Î2{0/½2«F05;5/,éï7¾,én®,é(,éÂ",é"¶&,é93Ä&,éo9íP,éD3¨",éu9N,é9 ,é‡9% 9È;šo9H?;›[3¯4;›Y=/;›B$;›@2;œó@ rQ;œ @(?5;œ[30¾Q;œÎ28Ù0;œ@8;œH;œBP~M;œù@Xº6;œÎ2`¸M;œÎ2d³B;œ7hô ;œÎ2pq;;œÎ2to);œÿ@x!;œ€\ ;œnˆ+;œ93±8;œ˜¤W;œ ;œ¨\,;œ°.c,;œH¸.î9;œH ¸n;œƒ>À ï7 {9 í6 ' ò5/,î:¾,în®,î(,îÂ",î"¶&,î93Ä&,îo9íP,îD3¨",îu9N,î9 ,î‡9 S,/,ó—:¾,ón®,ó(,óÂ",ó"¶&,ó93Ä&,óo9íP,óD3¨",óu9N,ó9 ,ó‡9 Ã,/,ø;¾,øn®,ø(,øÂ",ø"¶&,ø93Ä&,øo9íP,øD3¨",øu9N,ø9 ,ø‡9 ¨+/,ý§;¾,ýn®,ý(,ýÂ",ý"¶&,ý93Ä&,ýo9íP,ýD3¨",ýu9N,ý9 ,ý‡9 ,1,:<¾,n®,(,Â","¶&,93Ä&,o9íP,D3¨",u9N,9 ,‡9 ”-1,Í<¾,n®,(,Â","¶&,93Ä&,o9íP,D3¨",u9N,9 ,‡9\º9,á=Ó',â "FE,ã [3%A,ä 3’V,å g3\°R,èS=Ð8,é ‚A,ê aU,ë S=E ,ì g3 ,7\ìX,ð‚=D,ñ ‚=h3,ò B -)1,ö­=¦*,öBS,ön1,úÒ=¦*,úBS,ún1,÷=¦*,BS,n1,>¦*,BS,n1,A>¦*,BS,n1,5f>¦*,5BS,5n!¼B,: Î2=ƒ> ƒ3 ƒ> Z& s> 811,_º>¦*,_BS,_n1,lß>5,mß>ÇN,n 7 ô7ð>;å>Ú4<ð>%Î;6?G;‹2; ‹2yA; ¬2Î;?%†(;&‘?¡;' y!;( ;) 93Š;* 93 ;+  %í€;-¹?%G;. ‹230;/¹?B?É?$O%xB;:þ?,;; 4end;< .*;C xB;DÉ? ¬& @/;›7@¦*;›BS;›n%2h;«î@ÛP;¬dAÉ ;­¡A^;°ßA©K;¸ùAB;¹B 9X;º/B( ;¼ZB0T;¾~B8b;À§B@#7;ÂËBHÊ;ÄùAPzL;ÆðBXØP;È3C`7@ î@ ‘? þ? 9;ï7%K ;¢9AvD;¤ \;¥9A Ö=;¦A' @dA ƒ3 ?3 Î2 KA'½2¡A ƒ3 @ n n n  93 7 Î2 jA'nÙA ƒ3 @ 93 v n n Ú2 ÙA ?A §A'93ùA ƒ3 @ åA=B ƒ3 @ ÿA=/B ƒ3 @ É2 ?3 B=OB ƒ3 @ É2 UB z%OB 5B'½2~B ƒ3 @ UB É2 `B'93§B ƒ3 @ ?3 ?3 Ú2 „B'93ËB ƒ3 @ UB Ú2 ­B'7êB ƒ3 @ êB Ö0 ÑB' @-C ƒ3 J3 | a3 ó@ @ -C Î2 Î2 g3 öB2P;h ÐC&rex;i ÐCÇE;jÖC+;l93\ ;nn±8;o B ¤W;p B(;q B06;r‚=8&pos;s @³ ;t ‹2H A •!ÍA;u9C2 ;| ,DÖA;},DÌ;~iDÆ;«Dï ;€ n ÜC*.x;§iD”,;¨ |);© n&u;PûI 2Df*ˆ;\«DÒ ;]ÉJ ·;^«Dx óS;^"«D€ oD!È>;éC!z;¥ ½22;ÇäDmP;ÈiD2;Î &EmP;ÐiDô ;Ñ Î2q;;Ò Î2 &cp;Ó¾D2 ;×vEmP;ÙiDô ;Ú Î2q;;Û Î2 &cp;ܾD;ÞvE 6?2@;á-FmP;ãiDô ;ä Î2q;;å Î2 &cp;æ¾D…<;è Î2¯;é g3­ ;ê-F &me;ëvE(Ô;ì 3F0Ñ;í Î28è;î ¬2<A;ï ¬2> ¬2 ‹22@;ô¿FmP;öiDö;÷iDÎ<;ø$iD=;ù @&cp;ú¾D ÄT;û¾D$ö;üÎ2(&B;ývE0;þn82;GmP;iDsH; ½2@; ½2 &me;vE2 ; DGmP; iDt; iD³;  93ßV; n2;]G&val; |28;âGmP;iDö;iD&me;vE&B;vE&cp;¾D ¸ ; g3$; |(c-;" |,Ì;# n02(;&NHmP;(iDp4;)iD&cp;*¾DÄT;+¾DÇ;, nfH;- ½2 ·;. ½2$2`;1ImP;3iD&c1;4 |&c2;4| &cp;5¾Dô ;6 Î2q;;7 Î2e?;8 ½2c-;9 ½2 ¸ ;: g3$&A;;vE(&B;;vE0&me;<vE8öN;=I@¦;>IN‹2%I$O 2h;AûIü;B Î2&cp;C¾Dô ;D Î2q;;E Î2 &c1;F |&c2;F|µD;G n†.;H n c-;I |(&min;J |,&max;J|0&A;KvE8&B;KvE@öN;LIH¦;MIV1h;«¼JÑ>;À±DÖA; ÜCIyes;ÉËDP;Õ äD;ß&Eƒ9;ð|E5;ÿ9FŠ;;¿F<;Gž;DGu4;$]GGQ;/âG0;?NHq;N%I!.;Q2D¼JÙJ$O !*;_oDá)=KO (õ272!5K“A2"5K$2# ;K*2$ ;K ”1 ‡1/2cKñM2 cK\ 2%iK ;K K uK ð1/2MKìB2M[3î12Mƒ>/1¿K¦*1BS1n/1áK{<1a3é14//1LÔ/1a3ß1‰>/1%L2=1O3/K1S=/1GLh1>‰%17/)º ~L~T)»øJPsv)¼93Piv)½Puv)¾=J)¿GL'a3™L ƒ3 ŠL ~L1)×L",)a33N) øJË3)O31) üLÙ*) a3™7)  øJ%E20>1eM_>3 nŠ5>4 nzH>6 §MP>7 ³tC>8 nÀ,>9 n •I>: n(%% ?*§Ms8?, nB2?- n›2?. ³éH?/ Q¨B€@H Nf9@M N7@V N€,@[N%?@b+N²@iyÿ@nB¢|àÇPB¦ è RBªn ÛB« µ (B®®Q ¡BµüL !B¶nH ¥NB· µP Æ B¹´QX )BÀÅ ` #5BÄn€ <BÅ µˆ ¹WBȺQ TBÏMN˜ áBÐnà »BÑ µè ó(BÓÀQð Ë$BÚÆQø %BÛ µ LBÝÆQ Ü;BáÌQ öBâ µ :BäÌQ  ;Bìn( G'Bí µ0 >Bðn8 UBñ µ@ );Bô |H §M eM v 4   üL Å MN D ¤!1.BõÐN a3/0&RD0'93è*0( µ%„60EVR0F tRôD0Gp¬0H ¬2ºX0I ¬2ÿ.0J Î2R'U3tR ƒ3 [3 Î2 [R%?9H0M SûX0O[3ã+0S93«T0T[3S0U Î2o 0V Î2D 0W S 4isa0X[3(710Y[30¿ 0Zƒ>8I0[ Î2@ VRY=0g6S0h S=X0i 6S S=%M(80l¿S0mS‰00n U3j0o {90p ½2Š70x ½2;90y¿S ,&0{Î2(‘0|Î2, 0Î20 zR%ÀØ* TZS*!TL*"ÿ,*# |ÐT*$ g3Ôþ*%¬2Ö ÅS[*(ÅSJ*š2T0? B &T*Ð5(*'—TY *( a3ð** ;K&cv*+ ƒ>«<*- ½2¦R*. U3 *é/(*3êTY *4 a3ð*6 ;K&cv*7 ƒ>&gv*9 O3)I*: O3 */0*uLUY *v a3P0*x 937*y a3!Y*z 93&cv*{ ƒ> ÇB*|LU( T1*ŒvUIsvp* D3Igv*Ž O32*’œU&ary*“ U3&ix*” 2*–ÂU!B*— ½2&ix*˜ 2*šéU&cur*› &end*œ 2*žV&cur*Ÿ 93&end*  931*‘OVIary*•vUš*™œUùD*ÂU•L*¡éU*OT0*ФV*‹ ¤V5*RUÓ;*93%C*¢V•!*¤ ;K( Þ*jB*ÄÕVÎR*Åa3ß<*Æ 9310*Ù!WÁ*ÚCTÃG*Û—Tù,*ÜêTBH*ÝOVf8*ÞªV ;*RX*ÿúW;L* ‹2$* ‹2ä* ¬2® * ½2ä* r?*  * n* 93 ñ?*  93(W4*  n0D4*  n8+ *  n@¯!*  7HM* @P1`*@Xñ.*A„(R*B'W*Á@0*ÚžX—*Û U3*ÜžXˆ*ݤXžI*Þ¤X1*ß ½2 w-*à ½2$*á ½2(Û!*â ½2, Z( X!µ7*çX'|ÐX ƒ3 93 ‚= ·X'Î2ïX ƒ3 93 ‚= ÖX'|Y ƒ3 93 ‚= 93 p ½2 õX'|CHY%F)(CáYîCáYë$C 93ø2C næRC n§C 93 ’YÊ)C ’YQET€C"²](C&²]´CC'`6V7C(|C+|4 C-|šC.¸] i C/¸](4psC0¸]0)@C4 ½28ä C5 ½2<ñ C6 n@Ç,C7 nH>?C8 ‹2P¤4C9 ‹2Q.C; ‹2R³;C< g3SWC= ½2TÓ"C> a3XfCC? a3`…C@ 93h'CA ¬2p3CB ¬2r¶CC ½2t-CD 93x,CE ½2€CF ½2„€-CG ˆ÷TCH ÆWCIg3˜ýCJ ‹2™+CK ¬2š5CL ½2œé@CM a3 ¤=CN 93¨CO¾]°î$CP 93¸û2CQ nÀuRCT nÈrRCU nÐy'CV nØðWCW nàÍCX nèÝ"CY nð4C^ 3øsAC_ ¬2üý3C` ‹2þœCa ‹2ÿÖ:Cb [3*Cc ‡9WCd U3¯Cf Ä] "Cg Ô]@1MCh ‹2Tø3Ci ‹2UÝ@Cj ‹2VÍCk ‹2WWECl !WX‘Cm ”`UCn 3`9Co 3dµHCrhúWCsp5"Ctyx±/Cvg3yT¤1CxHxTJ#CyHxT¨CzH xT…CC{H x•4C}g3{˜C~ ‹2| óY †Y çY`6Ô]$O½2ä]$OETCóY -0 ð]0# ü]*t'@^j'ƒ3·'$@^óS'$@^ ^!t 'QX^F^ ^^'|m^ ƒ3!'Rz^ €^=^ ƒ3 93! 'SX^!ÆM'Uª^ °^'g3Ä^ ƒ3 93!}'VÑ^ ×^=â^ ƒ3€í^;â^J'uí^L'wí^¬'yí^v'{í^h'}í^I'í^ê'ƒí^¯I'…í^ "'ˆí^e;'Ší^ðA'Œí^„('Ží^€ž_$OŽ_œ*'ž_2-'’í^K'”í^Â'–í^Â6'˜í^:M'ší^'œí^?:'ží^Ò*'¡í^™'£í^|'¥í^†'ªí^”'¸ –2'-'º –2‰ '¼ –2€v`$O@f`L'¿v`#'Åí^€¥`$Oÿ•`² 'Ú¥`A'Û¥`¦'ܸ5ƒÜ`;Ñ`3F'ÝÜ`ø)'‹ð>ÍJ'Œð> 'ð>8'Žð>0-a; !'·"a'ð>pRa;O'Ga} '–í^~ò0H'¡ªa K r% M O1 -C Ú> 1Ú''¶¸5*ôRH'FÔa&pad'GÔan%äa$O!‚0'Pña ÷a=b ƒ3 a3!E'ab b'½23b ƒ3 ?3 ?3!~/'d‰>!\2'f™L!ö$'gZb `b'a3tb ƒ3 a3!’'hña!É9'iŽb ”b'|²b ƒ3 n B ßQ!7'lÑ^*R'séb&fn't ‰3&ptr'u 7!³F'v¿b 4/ ½2 ªX ÙJ ¼J ä]n*c$O v |Fc$O p éb Î27hc$O93xc$O 93ˆc$O‹2˜c$O f0 [3 ÒQ 6 °) 793Ìc$O"é>' ¸2®'ª¸2$D’¸5Q;D&¸5@b d;ÛGDÅÿcMb"d;ì Dcd¹ Dþï2§2Gd;D dd-D í^D Gd–2›d;d¥?D ›d35E&3T E(ƒ3E-,30+E1g38AE4g3s9EK6ÉKEL6o.EX3—#E[0c‰TE\|HE]|_1Ea$>Ee33Ef3çEi’DE“3œ0E§3 VE©|Ù3E®|V=Eåb‡@Eç[39Eè¡,Eë3AEón%½Eùg30ée$O¦ EúÙeR?'4S^è'6S^RHF=Þf ò! & @" ¢2 „# . Ý Õ B §. ~: { {V - ê< åK m  v 8 š ŽK â: ˜C ÿ8 ¨( ˜) bS .? : Ú? ¤ ”Nvîf$OÞfìJFƒîf¹.g$OÿfÄF g–20g$Oÿ g]'N 0gn3Mg;Bg‰/'bMgÕ'cMgŸ''dMgÿ'eMgP8'fMg¿H'gMgRHGwi  N Ú <(   ŠN M o+ ) òO ã1  Ö. ` æ Ù w+ }( ¹= 5( Ä  ó ³ |( ¸= 4( à  ò ² † “ ; .2 ‘-! /A" # Ž:$ ú% 7/& oO' v:( ë) ßN* x"+ f7, œ- Ê". 6/ É"0 Œ61 ‚E2 n3 E4 m5 6 17 8 19 I: 7; eF< dF= É'> c ? — @ ,WA [0B ”5C þND Ë%E ÂF vG 6 H bDI )WJ ƒK1'ZšiInv'Z"Iu8'ZŸiwi‹2¯i$O³9'Zši1'[ßiInv'["Iu8'[Ÿi¼iV'[ßi_Hêä]™=ID j*k@ÐI£“kº+I¯ @o*-I´ ¬2Iµ ¬2 ”QI¶ ¬2 lDI· ¬2‰?I¹ ½2éIº ‡9øI½Zo ŽXI¾oo(rI¿€o0ÔIÀ¤o84IÁÈo@f IÂçoH?IÃpPî3IÄ&pXú5IÅOp`ÿ.IÆiphTCIÇ’pp´PIÉ 93xÃI˃3€mIÍ­pˆDLIÎÛpÆIÏq˜ÔTIÐ2q ÀIÒ 8q¨\OIÔaq°ÁMIØ gq¸HIGŸk%I˜nºk4comn Öm¸-IHËkºk%CÀoæk4como anRYIIòk%x5€p l4comp ok IJl%¸I€4l4comI€(}m%_ XIYëlGIZ Î2õI[ |I\ ¬2)!I] [3«PI^ 933%I_ël lI`ƒ3(WIb [30_KIc 938Å.Ie ½2@#If ½2D4pidIg Î2H>SIhölP  lël þiçIi4l%õ 8Ikqm@ In 93ñGIo 934ErrIp 93ûIq 93ºGIr ÏGIs Î2(1It 930– Ivm%nIy¥m4stdIzülI{qmX7˜I‹ Öm4stdIŒülIqmX¹.IŽ[3ò-I¥m7ÀI‘ an4stdI’ülI“qmXI•|@I–|”PI—U3˜…I˜ MIšU3¨qGIœ ½2°½&I 7¸ÐCIžâm7€I¢ o4stdI£ülâI¦ nXñ=I§ ›2`QI¨ ›2bX+I© ›2d4YIª ›2fÖDI« ›2hI® ½2l´I¯ ½2pqGI± ½2t½&I² 7x¾I³mn=@o p | | | | | | | o'nZo 93 B Fo'ëloo 93 `o=€o ël uo'93¤o 93 p 93 93 †o'|Èo 93 93 | 93 ªo'93ço 93 93 | Îo'U3üo üo ºk ío'93&p 93 p B p p'|Op | | | 0c 7 ,p'½2ip p ” Up'93’p 93 n   7 op'|­p ël p] ˜p'|Ûp 93 ël 93 93 93 93 ³p'|q 93 ël p  p p p áp'|2q 93 93 93 93 q ('|aq ƒ3 93 | Î2 7 >q7wq$O ölg'  | "RHHÆq ä ? †M ? *U . ý-O“q%Ë@–arz—‹2%˜‹2üO™à  Î2’*¡pG¢ Î2  F£Æq$Q4¦ [3(4gv§ O30)B¨ Î28õ8­ÒqS)ÚngKè¬.  "2 ¶r % 937Qöl!Ur5 V!| "*— Hs&keyI n÷J!XVKÚrh÷P “†œË¤“ƒ3cvƒ>)g› |ax  ½2uo<  D3À¾sp  D3óñƒ  ½2  5„Xp ñ´Ÿ Mïs_p! 7R P PM t_p# 7w u €M+t_p% 7œ š °MIt_p' 7Á ¿ àMgt_p) 7æ ä N…t_p+ 7 @N£t_p- 70 . pNÁt_p/ 7U S  Nßt_p1 7z x ÐNýt_p3 7Ÿ Ou_p5 7Ä Â 0O9u_p7 7é ç `OWu_p9 7 Ouu_p; 73 1 ÀO“u_p= 7X V ðO±u_p? 7} {  PÏu_pA 7¢   PPíu_pC 7Ç Å €P v_pE 7ì ê °P)v_pG 7  àPGv_pI 76 4 Qev_pK 7[ Y @Qƒv_pM 7€ ~ pQ¡v_pO 7¥ £  Q¿v_pQ 7Ê È ÐQÝv_pS 7ï í Rûv_pU 7  0Rw_pW 79 7 `R7w_pY 7^ \ RUw_p[ 7ƒ ÀRsw_p] 7¨ ¦ ðR‘w_p_ 7Í Ë  S¯w_pa 7ò ð PSÍw_pc 7€Sëw_pe 7<:°S x_pg 7a_àS'x_pi 7†„TEx_pk 7«©@Tcx_pm 7ÐÎpTx_po 7õó TŸx_pq 7ÐT½x_ps 7?=UÛx_pu 7db0Uùx_pw 7‰‡`Uy_py 7®¬U5y_p{ 7ÓÑÀUSy_p} 7øöðUqy_p 7 Vy_p 7B@PV­y_pƒ 7ge€VËy_p… 7ŒŠ°Véy_p‡ 7±¯àVz_p‰ 7ÖÔW%z_p‹ 7ûù@WCz_p 7 pWaz_p 7EC Wz_p‘ 7jhÐWz_p“ 7X»z_p• 7´²0XÙz_p— 7Ù×`X÷z_p™ 7þüX{_p› 7#!ÀX3{_p 7HFðXQ{_pŸ 7mk Yo{_p¡ 7’PY{_p£ 7·µ€Y«{_p¥ 7ÜÚ°YÉ{_p§ 7ÿàYç{_p© 7&$Z|_p« 7KI@Z#|_p­ 7pnpZA|_p¯ 7•“ Z_|_p± 7º¸ÐZ}|_p³ 7ßÝ[›|_pµ 70[¹|_p· 7)'`[×|_p¹ 7NL[õ|_p» 7sqÀ[}_p½ 7˜–ð[1}_p¿ 7½» \O}_pÁ 7âàP\m}_pà 7€\‹}_pÅ 7,*°\©}_pÇ 7QOà\Ç}_pÉ 7vt]å}_pÔ 7›™@]~_pÖ 7À¾p]!~_pÜ 7åã ]?~_pÞ 7 Ð]]~_pê 7/-^{~_pì 7TR0^™~_pï 7yw`^·~_pñ 7žœ^Õ~_p 7ÃÁÀ^ó~_p 7èæ^¨<Â4u ˤr¨”UsT "Q@Q“¡„U çà TsQ ñ´R é´X $±z“®ÕUsT ÷´Q €iR ñ´X |¯Y0«“®&€UsT  µQ €iR ñ´X |¯Y0Ü“®w€UsT µQ €iR ñ´X |¯Y0 ”®È€UsT 3µQ €iR ñ´X |¯Y0>”®UsT GµQ €iR ñ´X |¯Y0o”®jUsT [µQ €iR ñ´X |¯Y0 ”®»UsT lµQ €iR ñ´X |¯Y0Ñ”® ‚UsT }µQ €iR ñ´X |¯Y0•®]‚UsT ޵Q €iR ñ´X |¯Y03•®®‚UsT ŸµQ €iR ñ´X |¯Y0d•®ÿ‚UsT °µQ €iR ñ´X |¯Y0••®PƒUsT ÁµQ €iR ñ´X |¯Y0Æ•®¡ƒUsT ÒµQ €iR ñ´X |¯Y0÷•®òƒUsT ãµQ €iR ñ´X |¯Y0(–®C„UsT ôµQ €iR ñ´X |¯Y0Y–®”„UsT ¶Q €iR ñ´X |¯Y0Š–®å„UsT ¶Q €iR ñ´X |¯Y0»–®6…UsT '¶Q €iR ñ´X |¯Y0ì–®‡…UsT 8¶Q €iR ñ´X |¯Y0—®Ø…UsT I¶Q €iR ñ´X |¯Y0N—®)†UsT e¶Q €iR ñ´X |¯Y0—®z†UsT y¶Q €iR ñ´X |¯Y0°—®ˆUsT Œ¶Q €iR ñ´X |¯Y0á—®‡UsT ›¶Q €iR ñ´X |¯Y0˜®m‡UsT ²¶Q €iR ñ´X |¯Y0C˜®¾‡UsT ¶Q €iR ñ´X |¯Y0t˜®ˆUsT Ò¶Q €iR ñ´X |¯Y0¥˜®`ˆUsT ß¶Q €iR ñ´X |¯Y0Ö˜®±ˆUsT í¶Q €iR ñ´X |¯Y0™®‰UsT ·Q €iR ñ´X |¯Y08™®S‰UsT ·Q €iR ñ´X |¯Y0i™®¤‰UsT "·Q €iR ñ´X |¯Y0š™®õ‰UsT 0·Q €iR ñ´X |¯Y0Ë™®FŠUsT F·Q €iR ñ´X |¯Y0ü™®—ŠUsT ^·Q €iR ñ´X |¯Y0-š®èŠUsT {·Q €iR ñ´X |¯Y0^š®9‹UsT ™·Q €iR ñ´X |¯Y0š®Š‹UsT °·Q €iR ñ´X |¯Y0Àš®Û‹UsT Í·Q €iR ñ´X |¯Y0ñš®,ŒUsT Û·Q €iR ñ´X |¯Y0"›®}ŒUsT í·Q €iR ñ´X |¯Y0S›®ÎŒUsT þ·Q €iR ñ´X |¯Y0„›®UsT ¸Q €iR ñ´X |¯Y0µ›®pUsT ¸Q €iR ñ´X |¯Y0æ›®ÁUsT +¸Q €iR ñ´X |¯Y0œ®ŽUsT <¸Q €iR ñ´X |¯Y0Hœ®cŽUsT N¸Q €iR ñ´X |¯Y0yœ®´ŽUsT d¸Q €iR ñ´X |¯Y0ªœ®UsT ðÚQ €iR ñ´X |¯Y0Ûœ®VUsT ÛQ €iR ñ´X |¯Y0 ®§UsT ‚¸Q €iR ñ´X |¯Y0=®øUsT 0ÛQ €iR ñ´X |¯Y0n®IUsT XÛQ €iR ñ´X |¯Y0Ÿ®šUsT ™¸Q €iR ñ´X |¯Y0ЮëUsT €ÛQ €iR ñ´X |¯Y0ž®<‘UsT ²¸Q €iR ñ´X |¯Y02ž®‘UsT ʸQ €iR ñ´X |¯Y0cž®Þ‘UsT ã¸Q €iR ñ´X |¯Y0”ž®/’UsT ¨ÛQ €iR ñ´X |¯Y0Åž®€’UsT ú¸Q €iR ñ´X |¯Y0öž®Ñ’UsT ¹Q €iR ñ´X |¯Y0'Ÿ®"“UsT &¹Q €iR ñ´X |¯Y0XŸ®s“UsT 8¹Q €iR ñ´X |¯Y0‰Ÿ®Ä“UsT R¹Q €iR ñ´X |¯Y0ºŸ®”UsT c¹Q €iR ñ´X |¯Y0럮f”UsT q¹Q €iR ñ´X |¯Y0 ®·”UsT ~¹Q €iR ñ´X |¯Y0M ®•UsT ‹¹Q €iR ñ´X |¯Y0~ ®Y•UsT ¹Q €iR ñ´X |¯Y0¯ ®ª•UsT «¹Q €iR ñ´X |¯Y0à ®û•UsT ¾¹Q €iR ñ´X |¯Y0¡®L–UsT ϹQ €iR ñ´X |¯Y0B¡®–UsT â¹Q €iR ñ´X |¯Y0s¡®î–UsT õ¹Q €iR ñ´X |¯Y0¤¡®?—UsT ÈÛQ €iR ñ´X |¯Y0Õ¡®—UsT ðÛQ €iR ñ´X |¯Y0¢®á—UsT  ºQ €iR ñ´X |¯Y07¢®2˜UsT ºQ €iR ñ´X |¯Y0h¢®ƒ˜UsT /ºQ €iR ñ´X |¯Y0™¢®Ô˜UsT EºQ €iR ñ´X |¯Y0Ê¢®%™UsT XºQ €iR ñ´X |¯Y0û¢®v™UsT iºQ €iR ñ´X |¯Y0,£®Ç™UsT xºQ €iR ñ´X |¯Y0]£®šUsT ŽºQ €iR ñ´X |¯Y0Ž£®išUsT  ºQ €iR ñ´X |¯Y0®£»›šUsT ®ºQ P©Ä£»ÍšUsT ¿ºQ ð5Ú£»ÿšUsT кQ ð4ð£»1›UsT ãºQ ðh¤»c›UsT öºQ Ðg¤»•›UsT »Q °‡2¤»Ç›UsT »Q ÔH¤»ù›UsT »Q m^¤»+œUsT /»Q Pžt¤»]œUsT D»Q `)”¤»œUsT Y»Q `)´¤»ÁœUsT |«Q pfʤ»óœUsT d»Q Ðeऻ%UsT q»Q Pœö¤»WUsT »Q ñ ¥»‰UsT »Q @›,¥»»UsT §»Q @›L¥»íUsT Ä»Q  b¥»žUsT Ý»Q ‘x¥»QžUsT ð»Q PúŽ¥»ƒžUsT ¼Q Pe¤¥»µžUsT ¼Q €>º¥»çžUsT 1¼Q @‘Ð¥»ŸUsT F¼Q Ãæ¥»KŸUsT `¼Q @Íü¥»}ŸUsT v¼Q àͦ»¯ŸUsT Œ¼Q @(¦»áŸUsT ¡¼Q ÊH¦» UsT ¶¼Q Êh¦»E UsT ѼQ p>~¦»w UsT î¼Q 0Èž¦»© UsT ½Q 0Ⱦ¦»Û UsT ½Q ÀdÔ¦» ¡UsT /½Q dꦻ?¡UsT B½Q àa§»q¡UsT V½Q €ˆ§»£¡UsT g½Q €a,§»Õ¡UsT ½Q À(B§»¢UsT •½Q 0‡X§»9¢UsT «½Q  †n§»k¢UsT ½Q ð`„§»¢UsT ß½Q ``š§»Ï¢UsT ó½Q 0^°§»£UsT  ¾Q  [Ƨ»3£UsT  ¾Q àÐܧ»e£UsT 8¾Q ðü§»—£UsT N¾Q ð¨»É£UsT d¾Q àY2¨»û£UsT ~¾Q `YH¨»-¤UsT ÜQ 9^¨»_¤UsT “¾Q àXy¨Iæv¤U0–¨Èµ¤UsT µ¾Q `>R ®¾L¦¨ÕUóU ¶r€ŽPòàXyœ)¦“òƒ3 cvòƒ>|r›ô|spô D3÷ñaxô ½2IC<ô D3˜’ƒô ½2Y¹¥Üø93–JOCëlóñ:Y ä¥Bž÷éXô ¦ ¯÷@<YYâT >« ^°9QœÕ­“°ƒ3~vcv°ƒ>çÝ›²|sp² D3f\ax² ½2ßÙ<² D32(ƒ² ½2ìâ`5H­rh1¶93“rh2¸93ä܆LºL@06.­°LëlæÚ¹Lëlzhh1i 93O ? h2i 93!!h1 93è!Ò!h2 93Ù"Ñ" 7‡¨6bufÕ­‘Ð~#ʧB  )æ':P7 ó§ ;æ=#5#)æ]:€7 ¨ ;æ½#µ#U+ø“:“:  Hø7$5$ <øg$c$³:ïU}T1QcR ÈÓê:²¨B& ¢$ $#Ĩ_p) 7#Ö¨_p* 7#è¨_p57#ú¨_p67÷;°7) #© ’÷Ê$Æ$÷ž;à7* L© ’÷ %%O÷+<@85´© h÷j%h% \÷–%Ž%>s÷ 8t÷ø%ò%Ë=úUsTwO÷?<Ð86ª h÷F&B& \÷€&|&>s÷9t÷¼&¶&Û=úUsT~±9ŸÁ>ªUsT|Q0Á9ŸÁaªUsT}Q0×9cÃŒªUsT|Q ©²î9c÷ªUsT}Q ©²iÛ:ãªU|TQ Þ´R1Æ; «UsT‘¸~QPÖ;-«UsT}QPô;M«UsT‘¸~#<‚«UsT}QwRPX0Y0#=¨«UsT‘¸~QP3=Ì«UsT}QPQ=¬UsT‘¸~Q~RPX0Y0v=5¬UsT}Q0RPX0Y0š=[¬UsT‘¸~QPª=¬UsT}QPõ=¥¬UsT‘¸~QP>ɬUsT}QP">þ¬UsT‘¸~Q0RPX0Y0G>UsT}Q0RPX0Y0í<!UsQ2g<s­Bí''(ž÷E9E9² ¨­ ¯÷.','\>âÇ­T ޲a>.yå­$Ob  œ`Y{œV¯“œƒ3Y'Q'cvœƒ>Â'¸'›ž|spž D39(7(axž ½2c(](<ž D3²(¬(ƒž ½2()")—Y)ß®h¢93¦Y8Ê®UsT ÿ¹YEUsÀY ¯B«¯)­)ž÷dYО 3¯ ¯÷Õ)Ó)ÛYâUóTT „³ K5jàY¸œ…±“jƒ3*ø)cvjƒ>i*_*›l|spl D3à*Þ*axl ½2 ++<l D3]+S+ƒl ½2,,p±svp93w,s,msgrpµ,­,œ.t|--pMé |W-M-pioê ‡9ï-é- ذÂ4íˤ>.:.àʰJOð ël¤.¢.[ŸÁUsTQ0ÐZRL[^ô°Q0R2j[!UsQ2ßZ9±B—É.Ç.ž÷äY l b± ¯÷ï.í.˜[âUóTT I« yJCð,œ˜³“Cƒ3//cvCƒ>‡/y/›E|spE D3/0%0axE ½2­0¡0<E D3A151ƒE ½222ixF½2i2a2#R²_pF7Ð-!³hJ93Ù2Õ2ò2L9333„XM93K3I3/N|t3n3q,O?3Á3½3.û²[c û3÷3 kUsT~•©Å³UíxÉ L³Be3414ž÷€-E u³ ¯÷Y4W4âUóTT `Ð LHôàÐpœK¶“ôƒ3„4|4cvôƒ>í4ã4›ö|spö D3p5b5axö ½26 6<ö D3ï6Û6ƒö ½2]8S8¶hü93Ø8Ð8errþ93:949939ƒ9›,93 ::4993‡:}:¡93ü:ö:º D3œ;–;~ÑŸÁµUsT}Q0³ÑÏ:µU}QY|GÒ…oµUsQ +¯RBX0Y0„Ò’­ÒŸ”µUsêÒ^¼µUsT|Q0R2ӬߵUsT|Q23Ó¹UsTvQvR1ž÷ÿаö /¶ ¯÷ç;å;DÓâT hÊ Í6Ü [Žœ^¸“܃3< <cv܃>{<q<›Þ|spÞ D3ö<ð<axÞ ½2J=B=<Þ D3®=¦=ƒÞ ½2F>>>pî·hâ93ð>î>JO¥ël??¦ 93?w?err§ 93ö?ð?ý[ŸÁj·UsQ0˜\¬·UsT|Q2½]Æ«·UsT|Ý]ÆηUsT}Q0 ^ÆUsT}Q2Ÿ\¸BïA@?@ž÷­[0Þ B¸ ¯÷i@e@.^âT „³ öÈ0^)œ›º“ȃ3§@Ÿ@cvȃ>AA›Ê|spÊ D3‡A…AaxÊ ½2±A«A<Ê D3BúAƒÊ ½2›B“Bð$ºhÎ93JOœëlJCDC›, 93—C“C‡^ŸÁ`¹UsQ0#_ÓйUsT e«Q5._E¢¹Us’_^ʹUsT}Q0R2°_¬í¹UsT}Q2`Æ ºUsQ0=`ÆUsQ2h_OºB×ÏCÍCž÷4^ Ê xº ¯÷õCóCY`âUóTT „³ .V´``‹œ;¼“´ƒ3 DDcv´ƒ>‰DD›¶|sp¶ D3EþDax¶ ½2XEPE<¶ D3¼E´Eƒ¶ ½2TFLFš`9Ë»hº93þFüFJO“ël#G!G•” 93JGFG³`ŸÁ±»UsQ0Ï`¬UsQ2Ó`ö»BÈG†Gž÷k` ¶ ¼ ¯÷°G¬Gë`âT „³ ‚¡ð`‡œÆ½“¡ƒ3îGæGcv¡ƒ>WHMH›£|sp£ D3ÒHÌHax£ ½2&II<£ D3ŠI‚Iƒ£ ½2"JJ*a5V½h§93ÌJÊJJOŠëlñJïJCaŸÁ<½UsQ0[a¬UsQ2_a½B¯KKž÷û``£ ª½ ¯÷>K:KwaâT „³ Ú5„ †œ¾¿“„ƒ3|KtKcv„ƒ>éKÛK›†|sp† D3L‡Lax† ½2õLïL<† D3HM>Mƒ† ½2NùM N¿hŠ93ÖNÒNTMŒ93O Oretz 93JOFOІ!¿_p7‚O€Oñ†àUsQ~R0X0Y0µ†±z)¿U}T~Q0‡^UsT~Q0R2½†y¿Bœ§O¥Ož÷/†à† ¢¿ ¯÷ÏOËO&‡âT ±­ l0‡|œ3Á“lƒ3 PPcvlƒ>vPlP›n|spn D3ñPëPaxn ½2CQ=Q<n D3’QŒQƒn ½2RRm‡'ÃÀhr93ŒRŠRTMt93reto 93±R¯RŒ‡±zQ0”‡îÀBÖRÔRž÷;‡Pn Á ¯÷þRúR¬‡âT ±­ FTÀ(Ÿœ°Â“Tƒ3¥S›S›V|spV D3 TTaxV ½2rTlT<V D3ÃT»TƒV ½2\UTUþ(I@ÂhZ93VVTM\93,V*V€ ^93QVOV4)…Q0G)kÂBgvVtVž÷Ë(p0V ” ¯÷žVšV_)âT ø± : @€aZœ÷Ó@ƒ3ØVÔVcv@ƒ>WW›B|spB D3gWcWaxB ½2§WŸW<B D3 XXƒB ½2£X›X°a€ÃhF93MYKY¾a «ÃBOxYvYž÷„a B Ôà ¯÷žYœYÚaâUóTT „³ [#+€ˆœœšÅ“+ƒ3ÉYÁYcv+ƒ>2Z(Z›-|sp- D3­Z§Zax- ½2ÿZùZ<- D3N[H[ƒ- ½2Ä[¾[È;*ų]©]›|sp D32^(^ax ½2¯^¥^< D3&__ƒ ½2Á_·_ Èsth93•``¼*-üoû`ñ`p®Æu61 ëllajaÿcU ðÁ°£Ç16 VÈ“aalÇsp8 D3ÖaÊa0ÇŸ9 übab[b¨cUs>c!FÇUsT ;½Q2Ãc¹UsT|Q|R1ec[c›î|spî D3ÜcÚcaxî ½2dd<î D3WdOdƒî ½2ðdèdð‚Ésthò93¼*"üoe™e hÉu6#ël×eÓe½dU ðÁMdŸÁUsQ0‘d­ÉBûf fž÷d î ÖÉ ¯÷5f3f¬dâUóTT ¥® BNØÀdœ®Ë“؃3`fXfcv؃>Éf¿f›Ú|spÚ D3Dg>gaxÚ ½2˜gg<Ú D3ügôgƒÚ ½2”hŒhúd>>ËsthÞ93>i†jtj›±|sp± D3ekMkax± ½2¥ll<± D3 mmƒ± ½2Åm»mix²½2–nŽnp‡Ì_p²7oùn Îsth¶93}oso@ú |üoìoíÌŸÿüb¬p¦p8ÊUs@μ* üo÷põpav U3$qq#1Í_p 7#CÍ_p &7 ÉŸÁ`ÍUsQ0(ÉžÉ:ŠÍUsR2ÌÉG¨ÍUsTÛÉEÀÍUsûÉTÞÍUsTÊTüÍUsT/ÊU HÉTväÈ!HÎUsT ­¼Q3[ʹqÎUsTvQvR1}ÊU ÉùȸÎBÓ•q“qž÷OÈ ± áÎ ¯÷»q¹qoÊâT ¥® ¼]p>7œ(Õ“]ƒ3êqÞqcv]ƒ>|rrr›_|sp_ D3 sñrax_ ½26t.t<_ D3˜t’tƒ_ ½2uu€9¥Ôsthc93»uµuL=epvvó5º 93­v§vÇA» 93wöv¼*¼üo|wpw/k93xþw:^П¿üb}xwx`AUs:|Ðknà 93ÊxÆxÀ:ÓiÔ |yy¸NÕ U3myiy@Öƒ©y£yhv× [3øyôy­5Ø U32z0z#ýÐ_pÖ 7;ÑBÞ YzWz0;SÑ_pá7z}zÌAaUsT<ëAJìÑ^PãD3¿z¹zBn¨ÑUsT‘¨Q~R1BzÀÑUs5BàUsT‘°R0X0Y0#þÑ_pç 7(O÷WBWB3ç Ò h÷ {{ \÷/{-{js÷`B*t÷Z{R{…BúUsT‘°Ô@‡œÒUsQ1Þ@ãÞ¹ÒU}T0ú@”ÞÒT 8ÔQ|«ATüÒUsTTBGUsT~#)Ó_pï7O÷ç?0:ïÓ h÷½{¹{ \÷÷{ó{>s÷`:t÷3|-|“AúUsT}è>ŸÁ´ÓUsT}Q|œ?…ÝÓUsQ|X0Y0©?zõÓUsÀ?!ÔUsT ¯Q2 @E=ÔUsT7A^`ÔUsQ|R2{A¹‰ÔUsTQR1˜BU ¯p;ÄÔBª|}|ž÷Œ>09_ íÔ ¯÷¥|£||?¡ÕU|§BâUóTT »² Ä Ê¥œ}Ø“ ƒ3Ð|È|cv ƒ>A}/}›"|sp" D3$~~ax" ½2PD<" D3äØƒ" ½2€¶€ix#½2¸²àÖ_p#7 ‚‚8Østh)93p‚h‚*Š 93Ђ̂pgÖŸüb ƒƒÌUs ª×¼*˜ üo_ƒUƒ@™ |ԃ΃i™|#„„Â-š U3x„n„av› U3ë„ç„#èÖ_pœ7ËŸÁ ×UsT}Q0XÌž#×U}²Ì:@×UsR2ËÌT^×UsT|æÌ¹‚×UsTvQvÍ.T °ÉQR|=Ë!Ô×UsT ¯Q2;̹ý×UsTvQvR1ÍØU ¯)ÍU xÉž÷¯Ê" aØ ¯÷#…!…5ÍâT ¥® ‘Bý@bœžÚ“ýƒ3N…F…cvýƒ>·…­…›ÿ|spÿ D3.†,†axÿ ½2\†R†<ÿ D3Նˆƒÿ ½2‘‡…‡°'Ústh93}ˆwˆcol93Έƈref93F‰>‰+X 93¾‰¶‰ret| 93ŠŠäãš®ÙU}hŽàÙU ÈÄQ ˜¼Rv‰Ž^ÚUsT}Q0R2Ž^UsQ0R2ŽRÚBAŠ?Šž÷Dpÿ {Ú ¯÷gŠeŠwŽâUóTT á­ ƒ2ÆàÍôœ|ޓƃ3’ŠŠŠcvƃ>ûŠñŠ›È|spÈ D3v‹p‹axÈ ½2̋‹<È D3SŒEŒƒÈ ½2ZL` ÞsthÌ93Ë@Î93…Ž}޼*NüoçŽáŽiO |60F(P U3†€Q U3ÙÏ)R |VHÐ1S |õí#þÛ_pR7#Ü_pY7RΟÁ-ÜUsQ0]ΞEÜU}Ï:bÜUsR2ÏG€ÜUsTv(ÏE˜ÜUskÏãÞµÜU~T0‘Ï®ãÜU ÊQ‘¼”R¸Ï»ÝUsTvQ ‘¨”1 $ &õÏ?ÝUsQ0RtX0Y0ÐT]ÝUsT|+ÐT{ÝUsTvHл™ÝUsTv‚ÐǶÝUsT0žÐ:ÓÝUsR2·ÐãÞðÝU~T0ÈÐU àÉ/Ï 7ÞBøW‘U‘ž÷ñÍ È `Þ ¯÷‘{‘ÔÐâT ¯ 0²@Í”œ=à“²ƒ3½‘µ‘cv²ƒ>&’’›´|sp´ D3¡’›’ax´ ½2õ’í’<´ D3Y“Q“ƒ´ ½2ñ“é“zÍBÍßsth¸93›”™”¼*DüoÀ”¾”avE U3å”㔓͟Á“ßUsQ0›Íž¦ÍG¸ßUsµÍEUs¼ÍøßBÁ ••ž÷KÍà´ !à ¯÷2•.•ÔÍâT ¥® LK7Ã*œMå“7ƒ3t•h•cv7ƒ>–ù•›9|sp9 D3‚–x–ax9 ½2ý–ó–<9 D3t—l—ƒ9 ½2 ˜˜Õäh=93¸˜²˜JOÒël ™™6mgÓ ‚=‘°ÊÔ 93€™z™Õ D3˙əÕÄzáBÿ ð™î™0ãav U3ššJ4  [3™š‘š¸8  ½2›ùš#Óá_p 7`Öâhp D3~›v›#âŸübà›Ü›ÕÆU“ÅnHâUT‘R0Æ!râUT ;½Q16ÆâUQPKÆú°âUQ‘¨øÆ¹UT|Q|R1HÅÔãUT ¯Q4½ÆTUT‘—ÆHãB œœð‚ãu60ël@œ<œ*ÇU ðÁvßÁ¥ãUTvQ0©Ã…ÚãUQ ‚¬R<X Y0æÃŸÁÿãUTvQ‘°XÄ8¡äU~ÕÄYÛYäUvT~Q Þ´R1X ÈY0ûÄáwäUTvÅ®–äU È—ÆYÛUvT~Q Þ´R1X PÈY0ÀôäB­xœvœž÷(ÃP9 å ¯÷žœœœ Ç.ÇâUóTT „³ FC@‘Øœšç“ƒ3ÉœÁœcvƒ>2(›|sp D3©§ax ½2ÕÍ< D3;ž3žƒ ½2Ϟ˞ðL#çdbh93ŸŸ{8 nŽŸˆŸ. ݟןRO". ( foo$ 7} y /%93· ³ J’Y"›æU‘¨TU’E³æUsŠ’!ÐæUsQ2¬’^ìæQ0R2Í’! çUsQ2÷’!UsQ2]’NçB2ï í ž÷D‘ L wç ¯÷¡¡“âUóTT ¸Ú à€>2œè^“ƒ3Ucvƒ>T›|sp D3:¡8¡ax ½2f¡^¡< D3Ó¡Ë¡ƒ ½2t¢n¢¦> [è‚Bkž÷„> ¯÷££ IRóPeyœóé“óƒ3.£&£cvóƒ>—££›õ|spõ D3¤ ¤axõ ½28¤2¤<õ D3‡¤¤ƒõ ½2ý¤÷¤‡e'|éhù93”e8géUsT õ;§eEUs®e§éB„¥‚¥ž÷Teõ Ðé ¯÷ª¥¨¥ÉeâUóTT „³ g' Pú—œ6ñ“ ƒ3ߥͥcv ƒ>¾¦ ¦›¢|sp¢ D3¨ ¨ax¢ ½2Q¨G¨<¢ D3Ö¨À¨ƒ¢ ½2Ó©Ç©)±ðsv¦93ªŠªÂ4jˤòªìª#l nQ«;«m yV¬D¬JOnël­­«o |©­Ÿ­¨Ep"8®®Àÿ)yë•… 93ׯկâÿ¬UQ2 *[ì›,‰ 93°ÿ¯eÿÓÁëUT e«Q5pÿEÙëU¢^ìUT~Q0R2À¬$ìUT~Q2DÆAìUQ2_ÆUQ0Cùìl?pP°N°vsvŽ 93u°s°Ï ÂìUT‘˜Q‘è~(îßìUQ1<¬UQ2Ð)Eîl“ O3¤°˜°W” [38±&±@*_ퟠ üb²ü±øUèû.†íT €°R‘è~üûGžíU üE¶íU%üûãíUT‘˜Q‘è~R1„üûíUøÿîUçU ðÎT‘è~Q‘è~R~ þpïhª 93O²K²fwAþð*« ²î<ð*Hxw‘ Fþ"U‘ T0,þGÊîU7þEâîUƒþÜcUsT|Q‘€R‘ˆa‘ð~ö)fw«ýp*s\ïW³M³›„|sp„ D3ҳ̳ax„ ½2(´´<„ D3¼´°´ƒ„ ½2“µµ@óòsvˆ93àµÜµQŠ|¶¶GŒÎ2~¶|¶/|§¶¡¶q,Ž?3ö¶ð¶p‡ò[™ C·?·›’kUsT~¬‘Š˜ªòUsT}X0:’!ÁòQ2X’xÙòUsz’.UsQ2è‘óB›{·y·ž÷‘ð„ Gó ¯÷¡·Ÿ·¯’âUóTT ÿ­ MT æœnö“Tƒ3Ì·Ä·cvTƒ>5¸+¸›V|spV D3¶¸ª¸axV ½2C¹=¹<V D3œ¹Œ¹ƒV ½2Àº°ºP,ñõgZ93¼¼9=\93D¼>¼ÂL^93“¼¼+`93à¼Ü¼Éb93½½ÎUB n‚½|½AIBnӽͽ5ö/C B‘¨5¡HCB‘°/h93 ¾¾  õBF X¾V¾*ê/õT‘R~ªEGõUs' ^kõUsQ‘¨R2^ ^•õUsT~Q‘°R2Ä !¸õUsTQ2à !ÕõUsQ2õ U ɰ²öB}~¾|¾ž÷K ,V Eö ¯÷¤¾¢¾ú . âT 0Ï ÑI/@› œªø“/ƒ3վǾcv/ƒ>w¿m¿›1|sp1 D3î¿ì¿ax1 ½2ÀÀ<1 D3…À{Àƒ1 ½2[ÁSÁix2½2ÒÁÈÁ#;÷_p27ð3ø@693[ÂWÂ/893•‘ÂÄ›­÷ü093ÏÂËÂÖ›´ZUvñ›nÏ÷UQ1R1ü›zç÷UœEÿ÷U<œãÞøUvMœU xÅœ^øBOÃÞ÷I›°1 ‡ø ¯÷EÃCÃ4œâUóTT ® ŠEúñùœÈü“úƒ3xÃhÃcvúƒ>2Ä(Ä›ü|spü D3±Ä§Äaxü ½22Å$Å<ü D3ÙÅÍŃü ½2·Æ©Æ (@üh93×ÇÑÇ{893.È È4993ÏÈÉÈt1"ÉÉt2"sÉmÉÂ?ÿ 93ÔÉÂɘò0WúJO ëlŸÊÊ¥òŸÁ!úU~T|Q0ÃòÜcU|QwRsa‘ø~ö)b‘€ö)P(sûhv  [3ÄÊÂÊtmp  93ëÊçÊ6key n‘°5:  ½2‘¬þó2.ûJOël#Ë!Ë ôŸÁøúU~TQ0)ôÜcUQwRsa‘ø~ö)b‘€ö)¸ó;LûU~TvÙóHU~TvQ|R}òcÖûU~T|Q0MóU³ûU~Q2jóUÊûQ28ôbâûU~Rô¬üU~T‘ˆQ2dôãÞ$üU|T0uôU ÐÌ÷ò küB*JËFËž÷¸ñð'ü ”ü ¯÷„˂˄ôâºüUóTT @°‰ô. ÛCéPœ1œ±þ“éƒ3¯Ë§Ëcvéƒ>ÌÌ›ë|spë D3ÆÌºÌaxë ½2QÍKÍ<ë D3¤ÍšÍƒë ½2]ÎUÎP-þ/ï" Ï Ïq,ð?3GÏCÏàÛýJUó "Ï}ÏknUsT|fwºœ€ò þ<€Hxw‘°Çœ"UwT0Ux! XþBõ»Ï·Ïž÷tœ ë þ ¯÷õÏóÏr.âUóTT |¯ P ÑÐe™œ?“у3 ÐÐcvу>‰ÐЛÓ|spÓ D3ÑþÐaxÓ ½2XÑPÑ<Ó D3¼Ñ´ÑƒÓ ½2TÒLÒ fBÏÿsv×93þÒüÒ< Â4êˤ#Ó!Ó2fãÞ²ÿT0Lf.T k«Lf úÿBäHÓFÓž÷ÛeàÓ # ¯÷pÓlÓifâT ² ú¯pf[œÈ“¯ƒ3®Ó¦Ócv¯ƒ>Ô Ô›±|sp± D3»Ô¹Ôax± ½2íÔßÔ<± D3˜ÕŠÕƒ± ½2‘Ö‰Ö  Qsvµ93ñÖíÖmsg·p+×'×ò2¸|e×a×¼® gÐ á ï® ×œ× â®Û××× ×®ØØ Ê®OØKØ<Ð ü®‹Ø…Ø-gŸÁ±UsTQ0@gáÏUsTPgޤùUsT~Q}RvžgŸÁUsTQv|g^7Q0R2µg!UsQ2Pg |BÌÖØÔØž÷tfP ± ¥ ¯÷üØúØËgâUóTT ` ©g`)¾œÅ“gƒ3'ÙÙcvgƒ>”Ù†Ù›i|spi D3<Ú2Úaxi ½2¼Ú®Ú<i D3eÛYÛƒi ½2>Ü6Üixj½2¢ÜšÜ#•_pj71Nšàà› |sp  D3ááax  ½2;á5á<  D3Šá„რ ½2âúáà<¼ pò ndâ^â„X nÃâ³â+X93…ãuã@ÙÂ4fˤ7ä-ä]5h 93¬ä¦äcvi ƒ>üäöäsvpj D3QåEåimak§ßåÓåmgl ‚=cæaæð’ av†U3”æ†æ(‚òá£á£Š&2  ”ò+ç)çMᣡòPçNç(Vøñ£ñ£A  søuçsç gøšç˜çü£•T~飡# U~ñ£¯ò£nZ UsT~Q0R1C£n‚ UsT~Q0R1S£!Ÿ UsQ2k£nÇ UsT~Q1R1–£nï UsT~Q1R1¦£! UsQ2»£n4 UsT~Q2R0<¤ Y U}T 8Æu¥nµ¥n×¥^UsQ0R2K ¼ _p—7¿ç½çä÷R °˜$3  øæçâç õ÷ èèE øR  øZèVè ¢­UsT~ŸºP U1T@ .o T ë© Ç UsT‘¸9 È UsT‘¨Q °BRs Üö˜ Ô UsT~Q0R~X  "Y~3¡^3 UsT}Q0R2‘¡Ó] UsT |¯Q0œ¡Eu UsÜ¡ ¢ U}T %®Q‘¨롺¿ U1T@>¢…ô UsQ ^®R1X Y0s¢…) UsQ :®R1X Y0÷¢…^ UsQ ^®R1X Y0Y¤ ƒ U}T K®w¤ ¨ U}T W®‘¤ Í U}T <®­¤!ê UsQ2Û¤…UsQ ¸R1X Y0=¥…TUsQ ©½R1X Y0•¥.qUsQ2­¥!ŽUsQ2ò¥µU ðÅT‘¨¦U ÆT‘¨Êž^ûUsQ0R2O¡^UsQ0R2o¡^UsQ0R2@[Bb’èèž÷Tž  „ ¯÷¸è¶è¦âUóTT ÀÅ ar ÷ím>œé“íƒ3åèÛècvíƒ>_éWé›ï|spï D3ÑéÁéaxï ½2‡êê<ï D3ÝêÕêƒï ½2‹ë‡ë€ ÃiP |ÃëÁë° ¢svT 93ëëçëómáUFn¹UTvQvkž÷,m0 ï ¯÷#ì!ì ø.ÐÔlœ“Ѓ3NìFìcvЃ>·ì­ì›Ò|spÒ D32í,íaxÒ ½2ˆí|í<Ò D3îîƒÒ ½2óîíî ŒkeyÖpDï<ïØ”¢ï ï/Ù½2ËïÅïq,Ú?3ððP&[æ gðcð[ÕkUsT}ºÔÎ>UÕ![UsQ2,Õ^wQ0R2EÕxUsîÔ·BèŸððž÷ÔÐÒ à ¯÷ÅðÃðlÕâUóTT [¯ ~N¶°‡Íœ«“¶ƒ3ððèðcv¶ƒ>]ñOñ›¸|sp¸ D3òûñax¸ ½2mòcò<¸ D3úòðòƒ¸ ½2¾ó¶óÐ;sv¼937ô3ô\,¾Î20ˆãÞìU|=ˆÓ UsQ0LˆE!Usmˆ.UsQ2SˆfBËoômôž÷»‡¸  ¯÷—ô“ô}ˆâT í ‰D™ÐgœÊ“™ƒ3ÕôÍôcv™ƒ>>õ4õ››|sp› D3Åõ³õax› ½2Žö†ö<› D3üöôöƒ› ½2š÷’÷` …sv¡93FøDøJO/ëlmøiøih0 93©ø£øoh1 93øøòø-hŸÁÏUsT}Q0BhcÃúUsT}Q ûºRh¬UsQ2ahG/UslhEGUs¸h_UsÓh¹UsT|Q|R2ž÷ég › ® ¯÷CùAùèhâT ² • †ðh‡œV“†ƒ3nùfùcv†ƒ>×ùÍù›ˆ|spˆ D3RúLúaxˆ ½2¦úžú<ˆ D3 ûûƒˆ ½2¢ûšû*i5æsvŒ93LüJüJO%ëlqüoüCiŸÁÌUsQ0[i¬UsQ2_iB”–ü”üž÷ûh  ˆ : ¯÷¾üºüwiâT ² /mð4üœ“mƒ3üüôücvmƒ>eý[ý›o|spo D3ÜýÚýaxo ½2þþ<o D3WþOþƒo ½2ïþçþP4svs93›ÿ—ÿÄ7u nÓÿÑÿ~&w93øÿöÿŠy93¤5 ¯wUsT~Ô5^Q0R2³5»BB@ž÷ô44o ä ¯÷hfì5âUóTT HÓ r2ð5œœ“2ƒ3“‹cv2ƒ>üò›4|sp4 D3…qax4 ½2eY<4 D3õƒ4 ½2Ð4W93PLŠ@93Œ†Ä7B93ÙÕÂ4óˤç ô [3OInUõ 93¤œ8ö [3 #†_pþ 7ó6 É_p 7›•7aUsT<÷°605þ ò ’÷ìè™6íUsT‘ Q4â6…MUsQ űR@X$Y~ó6úrUsT|Qw7î’UsT‘ "7ú·UsTQw@7íUsT‘ Q|RPX0Y0x7 ¯UsTR‘˜X}ƒ7E7UsT!8^_UsT~Q0R288wUsR8ãÞ”U}T0c8ãÞ³U‘˜T08ãÞÒU‘ T0µ8. T  ÓR‘¸X‘°Y‘¨Ò8^1UsT~Q0R2ó8¹UsTvQvR2ž÷6€44 € ¯÷$ " 9âT pÓ KP©§œ‹ “ƒ3O G cvƒ>¸ ® ›|sp D33 - ax ½2…  < D3Ö Î ƒ ½2m g À' Â4áˤô ò MXâöl0 . ð Â4æ ˤU S ¾4æ 7z x (¶øΩΩæ ø ßøŸ   ÓøÅ à  Çøê è ¯©ÇUsT?Ú©IæU|0F B-  ž÷[©p o  ¯÷7 3 ÷©âT |¯ ¥D €iáœY"“ ƒ3u m cv ƒ>â Ô › |sp  D3Œ€ax  ½2<  D3iaƒ  ½2ùix ½2ÓÏ®ih!_p 7 é!/½2  q,?3GCP Ô![ …}SjkUsT|8jxUsj "Bóñž÷ià   =" ¯÷ajâT |¯_TC<93 „ œß(dbh<93WQ{8<p¨¢.<-úôRO<;NHfoo<L7 œ“>ƒ3ßÙJO?ël.*idx^ |tf"` yŠa y«wçb y Ó@c nF,cn"}"srcdpÊ#L# epë(Ó( epN*0*Ê.f 93š++ÐK®%plnƒ,, ‘/¢$6buf'Õ­‘Ð~U+ø ‘ ‘*( Hø¼,º, <øì,è,3‘ïUsT1QcR `ÙX‘Ì~”Y‘È~”ìøÞŠ Lé$ ÿø'-%-ãŠûU~T0Q:(+ø,‹,‹ $-+% HøN-L- <ø|-z-(+ø§§E$B™% Hø¡-Ÿ- <øÏ-Í-ÓïU|T1Q ÿR å´R‹¡U|l…&6bufFÕ­‘Ð~(+ø'G I& Høô-ò- <ø$. .8ïUsT1QcR  ÙYweYÛU‘˜~T‘~Q Þ´R1XsY0(+ø‰‰ :*Ç& Hø_.]. <ø.‹.+øîpL2' Hø².°. <øâ.Þ.óïU|T1Q ÿR à´X‘È~”(+øxQ@:? ' Hø// <øJ/F/}ïU|T1Q ÿR å´p„…„ŸÁÑ'U~TQv’„¡é'Usž„Ç(U~¸„Ÿ,(U~TQ |¯Þ…¡9‰¡Q(U|AŒYÛ…(U‘˜~T‘~Q Þ´R1ŒYÛ¹(U‘˜~T‘~Q Þ´R1û¡Ñ(U|=‘.hl °BpAœ”Z“l ƒ3Ê/€/cvl ƒ>Ó2Ï2spn D3‰3 3axn ½2Õ88<n D3;-;ƒn ½2T?ê>’>o É2ÅC•CÂ4p ˤaF)Fhr 93ÍHHst1s 93‘K‡Kst2t 93LL5 u 93ÔLœLHLv 93pO:Ow D3½QµQVx D3RRmgy ‚=”V~V!)z |³WWæ-{ ½21ZåY«| ½2å]a]U} |€cFc F~ Æq5gÙfNQ |ZkkäU€ Î2*oÆnºG btîsi‚ |Vy2y !‚ |ïzÕzõƒ |=| |P„ |¢~j~¨E… "<þ€T3† |„3„òˆ p(‰ðˆima‰ §É‹ƒ‹Š Î2ÔŽ´ŽJO‹ ël~0é=Œ 93!”“qsv 93ëš—š`í  [D`Åæ•W`—D!Z#/,_p‰ "7èEø6-é¡ ‡9GžEžüE{EFãÞ…,U‘Ø{T0—F.º,UsT ¸ÔR‘€|Y‘à|ÄFx-U N³T {¯Q1R1X‘˜|”<ÿ0.ÿÏFR-UsÚFˆU~TsÚg a-BÁ lžjžBIŒ-Bå ’žž@=æ.#î pºž¶žrvï 93öžðžgvð O3CŸ?ŸôIý-B÷ {ŸyŸ–Ií".U~T‘Ø{Q0¦IûE.U~QvR0ÆIãÞb.UsT0çI..T S³Q‘€|Rv4a^¹.U~T‘È|Q0R2pGÑ.U~pEU~tG /Bÿ ¡ŸŸŸ <ö/I  ƒ3ëŸÅŸEZ/B f¡d¡)æ¼D€< ƒ/ ;æ’¡Š¡E.®/T €ÕXsY~EˆÆ/U~ª‚U àÕQ‘€|XsY~îG!0© ½2¢ ¢ÀJŠ1#. !pP¢H¢ø;/ 93´¢¬¢K‘0gv4 O3££{sûUsQ|R0PKß0é9 !‡9S£M£Ïs.T g³Q‘€|R|X}þs 1B> ž£œ£Ssû-1UsQ|R0æsGK1UsT}ñsEc1Us„x^UsT‘È|Q0R2 aµ1B@ Ä££€Jo2%=D 93ð£è£ükÜöí1U‘€|ˆv^2UsQ0R2øƒãÞ&2T0„ãÞE2U‘à{T0 „U ˆÖQ‘€|Rsà<P3err^ pR¤L¤6msg_ ”Z‘ð}+øH=c 3 Høž¤œ¤ <øΤʤÈHïUsT1QÈR ¸ÖX‘€|Y ‘¼|” $ &1ûHU †³TsQ ƒ³R‘€|J46bufz ¤Z‘ð}+økfPJ{ Ò3 Hø ¥¥ <ø7¥5¥‘fïUsT1QdR ×X|´fõ3UvT0Qs#t^UvT‘à{Q0R2€A‹6avˆ U3h¥Z¥¸8‰ ½2¦¦éŠ ‡9¼¦¬¦#u4_pŒ 7àAn6hp D3~§r§BÅ4Ÿ˜ üb¨¨hpUs@B/5JOŸ ëlQ¨O¨eŸÁ5UsQ0§e8¡¿e:UsQ‘Ø}R2(N!G5UsˆN!r5UsT w½Q)ÆNn5UsT‘Ø|Q}R0 O!µ5Us)OãÞÌ5T0:OãÞë5U‘à{T0|O.06U‘¸}T @×R‘À|X‘ }Y ‘¨}”0.ÿïláH6Usƒp¹UsTvQvR1ÊuTUsT‘Ø|ÀOˆ 7 <© ëlv¨t¨P:Ò6UsR2$P:ï6UsR2AP:UsR2ÀBC7u6º ël›¨™¨†ƒU ðÁ€=68HLÓ 93À¨¾¨ >8éÕ ‡9ö¨è¨‡aãÞœ7U~T0b.Ë7U‘à|T ˆ×X‘€|Êr^ó7UsT~Q0R2‹yÆUsT~Mj’]j’mj’pCæ:›ò 93A@ó 93©—©‹ô 93ð©è©Î õ ½2\ªLªD¾8Ÿ  üb« «âUs#Ð8_p 7PDî8ix!|c«[«(÷TT  9B’÷¬R.39Us»RÓX9UsT‘€|Q0ÆREp9Us S“9UsT~Q3NTãÞª9T0ƒT.Ù9T ø×R‘€|Y‘¨}9yãÞð9T0iy.:T À×R‘€|Y}–}¹E:UsT‘À|Q‘À|½};b:UsQ0î};:UsQ03~;œ:UsQ0s~;¹:UsQ0 ƒHU  ØT‘€|Q‘Ð|”–K;~&4ëlΫÌ«C<6kl=B‘à}key>p÷«ñ«À9?D3B¬@¬AQ…};UsQ|X Y0ËQ¬¢;UsT‘˜}Q2òo^Î;UsT‘È|Q‘à}R2RzUó;U|T @¬â~UU|T Ê«>¨A8U ƒ>k¬e¬L ]<_pt7º¬¶¬ L ‡<_pu7ô¬ð¬LL±<_p{'7,­*­#Ã<_p|'7à@>鑇9Y­O­î“pÒ­È­W”[3K®A®˜U.6=U|T š³R~!V.[=U|T ¼³IV.€=U|T dz¨VãÞ—=T0ÀV.¼=U|T ´çV.á=U|T Õ³òVˆÿ=UsT|„b^)>UsT‘Ø{Q0R2.d.N>U|T µ³²j.{>U|T ¯³Q‘€|™k.U|T γ@AÐ>Ÿ¹ übÀ®º®qtUs bú>_pÁ7 ¯ ¯# ?_pÁ27#?_pÇ7O÷ Lð?t? h÷H¯D¯ \÷‚¯~¯>s÷ @t÷¾¯¸¯üwúUsO÷)LP@uà? h÷ °° \÷F°B°>s÷€@t÷‚°|° xúUs(÷PLPL {'@ ’÷ΰ̰÷gL°@|'>@ ’÷ó°ñ°ûKûc@UsQ‘€|R0ØTa{@UsUû @UsQ‘€|R0lWÕ@UsQ‘¨|”(!‘¨|”‘è{”1)(i?bé@UsþfûAUsQ ³R‘˜|”gÓ¤D3?º=ºn…”IUsQ +¯RBX0Y0}^UsQ0R2 H¯Ksvp¹D3nºbºÔ‚…ÔJÖÅ93õºñºƒ*ê6JT -´Q1R ž´X2Y1ƒENJUs$ƒˆyJUsT}Q ¡´7ƒ•¢JUsT}Q~R2Tƒ¢UsT}Q K´R1X2"uˆÿJUsT}Q Œ´5u•"KUsT}R2fu…WKUsQ ¬R;X Y0§uˆ‚KUsT}Q ¶´Ç‚{šKUsaƒ¯Us#ÂKcopÐ!WÐH‹NspÜ D3S»+»é݇9½ò¼ƒÞ¥½¡½&'ß93õ½ë½¡à93t¾d¾@IfLŸñ üb ¿¿óUsq{G~LUs{E–LUsÈ{³LUsQ2|ãÞÐLUT0%|ãÞíLU~T0G|.)MU‘Ø{T ¹´RwXY‘è{Z€xAMUs—€ãÞXMT0¨€ãÞwMU‘à{T0Ø€.¶MU‘Ø{T èØR‘è{X‘€|Y‘¨|ú€zÔMUsTEìMUsdÆ NUsT~™ãÞ'NUT0‚¹DNUsR1+‚¹aNUsR1F‚¹UsT‘è{Q‘è{R1^|>O±Q93X¿V¿fw6^ H úN< HHxw‘à}=^"U‘à}T0^ÜcU‘à{TvQ~R‘˜|‘ø{‘˜|0.(a‘è|ö)(+øÑ\Ñ\-ª ´O Hø}¿{¿ <ø­¿©¿þ\ïU}T1QÈR ´Y‘€|.\¡ ]ÓäOUsT}Q0]EüOUsV]ãÞPT0h]ãÞ*PT0] UPU}T ÀØR~(_¼sPUsT}m•–PUsT}R25r^ÀPUsT‘ˆ|Q0R2át…õPUsQ ò¯R9X Y0®vÆQUsT‘ˆ|ÊvÆ5QUsT‘ˆ|/w…jQUsQ L­R;X Y0”wɈQUsT}«zƦQUsT~OÉÄQUsT}€ÆéQUsT‘ˆ|Q0ÆÆUsT‘ˆ|Q2¦_¾R±Q 93è¿æ¿fwÉ_pI zR93RÎ4Ît1 I"™Ï•Ït2 P"ëÏÑÏ“$ ƒ3$ÑÑti% "ŒÑ€Ñw3& |pÒ\Ò}*' [3XÓDÓ{1( [3FÔ2Ô‰O) n,Õ Õß,* n¼ÕºÕ•E+ 93ëÕáÕtmp, 93pÖZÖÿ- 93o×Q×av. U3ªØœØA/ [3IÙ?Ùõ1 ƒÄÙ¸Ùî2 ƒæx÷epsvV D3JÚHÚ>æ…UsT}Q ò¯R9X Y0p!ëmlenc |sÚmÚ"Ðm=+h 93ÌÚÀÚ &ègspm D3`ÛNÛaxn ½2*Ü$Ü{o 93{Üu܃p ½2ÊÜÄܼDq ½2ÝÝ'ÖfŸs übWÝQÝXïUs &Jgl~ 93ªÝ Ýbë"u gU|²ë^.gUsQ0R2îë®U 0Ì®êÓogUsT‘È~Q0¹êE‡gUsÒê.ŸgUsôêÂgUsT}Q3pï¹UsTQR4P')hpŽ pÞÞ*é^UsT}Q0R2<°"6len’ B‘ˆp“ p^Þ>Þ`%i›¢ !93¤ßžß}íÓšhUsT |¯Q0ˆíE²hUs¨í"êhUsT}Q‘ð~R |¯X1añ^UsT}Q0R2 $Fj5ÉI½ g5‘ ¿<¾ |ùßíßfwÕé`$Ä 9ƒi<`$Hxw‘éé"U‘T0+ø!êÀ$Ä äi Høà}à <ø¯à«à>êïU}T1QDR ¸¯ìønð0%À &+j ÿøëàåà~ðûU}T0Q:Iê"uU|T}p#]kÀ9Í D3Lá8áð#¬j1Ï $VÈ ââÚîcÃUsT‘è~Q ˆ»€ì…ÝjUsT‘à~QX Y0<ï^ÿjUsQ0R2ïÆkUsêï…HkUsT‘è~QX Y0?ñ¯Usä÷ð % !Ök øGâCâ õ÷…ââE øð¹kø¿â»âíð­UsT‘ð~ä÷ñà% !(l øûâõâ õ÷LãHãñ­UsT‘ð~(ä÷¿ð¿ð !­l øˆã‚ã õ÷ÙãÕãE ø¿ðløääÙð­UsT‘ð~Œè"uÅlU|Jé^élUsQ‘ˆR2/ì®mU hÌT}:ì"u,mU|T}%îxXmU |¯T |¯0î"upmU| ï"umU|T‘Ð~%ï"u°mU|T‘È~Pð^UsQ0R2+èUsT~À'"n_pù 7MäIäæaUsT;ä÷°ä€': .™n ø‡äƒä õ÷Áä½äE ø°ä~nøûä÷ä»ç­UsT|ÍàŸáãÞÃnU~T0²á®înU àËQv ÿÿÿÿâ/oU‘È~T w½4âcÃBoUsT‘¨~Q „»^â…}oUsT}Q q­R7X0Y0üâ"u¢oU~T ç¯&ã…×oUsQ ì¯R4X0Y0Oã"u÷oU}T‘Ð~©ãnpUsTvQ0R1´ã<7pUsÉãn_pUsTvQ1R1ûã }pUsT|än¥pUsTvQ3R1RänÍpUsTvQ4R1˜änõpUsTvQ6R1©ä qUsa‘°~ö)óä^@qUsTwQ0R2å^hqUsT|Q0R2+密qUsT~XåU©qUsT|Q2påUÌqUsT|Q2ˆåUïqUsT|Q2²å®rU ¸ËËåãÞ,rUwT0òå.]rT Ìa‘À~ö)Q‘È~«æî{rUsTv¾æ:žrUsT}R2Ëæ8»rUsT1ÛæIÞrUsTvQ0éæUsUsa‘À~ö)üæI#sUsTvQ1 çUEsUsa‘À~ö)çIhsUsTvQ2+çUŠsUsa‘À~ö)>çI­sUsTvQ3LçUÏsUsa‘À~ö)_çIòsUsTvQ4mçUtUsa‘°~ö)€çI7tUsTvQ5ŽçUYtUsa‘°~ö)¡çI|tUsTvQ6Ïç ¤tUsT|a‘À~ö)éç ÌtUsT|a‘À~ö)èãÞétUvT0èuU ˜ÌQ| ÿÿÿÿnñ.+ÝF 93ÀWœfwYP 93Cå1åôD *pæÿå“ ƒ3læfæTP 93»æµæwhv [3 çç0Xùu_p 7EçAç=XaU|T<0Ýv6key n 4«Ÿ#,v_p 7÷¥X` Uv ’÷}ç{çŠXãÞrvUsT0¥X®¤vU ˆÁQ}R 4«ÏX…U|T~Q 4«R9X$YscXîûvU|T~yX:U|R2ßWýW¡:wU}X…U|TvQ}X0Y0lâCè "†wsBí ôNÂ!Ð ñw"“Ð ƒ3?hÐ 93"JOÐ +ël"òÐ @p"«Ð O|9svpÓ D39hvÕ [3Cq1¶ n—x?buf¶ 93"H1¶ |"g,¶ &n"‚¶ 4n"Ø7¶ @|"W¶ O|"ø¶ `|“¸ ƒ3›¹ |9cop¿ !W9via 93N¶>¢ *y?buf¢ 93?cop¢ !!W"g,¢ ,n"Ø7¢ 8|"ø¢ G|“¤ ƒ3len¥ Bh ¦ ”„X§ n9sep© nl} !WŠy“ ƒ34€ ½2cx žX²6‚ žX•ƒ c&„ n+Be ½2À>xœzCe !žXªç çÁ0e ,½2)èè“g ƒ3ih ½2¨èžècxi žX#ééÙ>+ÏR 93@?!œ±zhrvR 93æéâé¶2R !p#êêa1R -93`ê\êa2R 593ê™ê“T ƒ3ÚêÖêV?+a ÷93PnÆœ…h÷93mëëTM÷93oïïæP÷'|óó“ùƒ3hóTó›ú|JOûël|ôLô5:ü B‘°keyý nˆöVö( þ |»øƒø€ ÿ 93üŸû×S |òp nÑÇi |^Dsv 93qsvp D39/0/|1 VȪ¨DxGUsà r€¼*' üo×Í€ ý÷1 U3NFôD2 n´°Õ3 |öîav4 U3ˆ~hv5 [3 ÿÂ6 |’€}_p9 70aUsT<@0}_p: 7Ò„aUsT;#B}_p> 7#T}_p@ 17#f}_pB 7#x}_pH 27SƒÃ}ôCR 1|[W#µ}__cR 1|Xƒbhƒ~ôCR B|¨¤#~__cR B|mƒnô€¡(~U‘à~‚ãÞE~U|T09‚.{~T ˆÂR‘ð~”X‘YvŸ‚I§~UsT‘à~QRvÅ‚z¿~Usé‚^ç~UsTvQ0R2¯ƒ8UsT؃…3UsT‘€Q‘è~X$çƒzQUsTvB„î€UsT‘à~‘€‘à~0.(…T UsT‘Ø~m…TÀUsT‘Ø~»…TàUsT‘Ø~è…TUsT‘Ø~wpŸÁ €UsT~Q0¡p…U€UsQ Ü«R4X Y0©„¯UsT‘Ø~`值*d üoõñ@e 1 + ýŸÁÈ€UsT~Q0¡€8UsT‘Ø~ð;¼*k üo~ | ·tŸÁ&UsT~Q0Æt8UsØrz1’ VÈ£ ¡ òrGUs°±_p¼ 7È Æ l€aUsT;€ ‚ ní ë )ægqÀ ðB;æ¯qÓUsQ0†n–nŸÁ:‚UsT~Q0­o^d‚UsT|Q‘°R2Gp‡’‚U‘à~#T ë«Q5þq…½‚UsQ‘Ø~X Y0rzÕ‚Us@rãÞò‚UvT0OrãÞƒU|T0\rãÞ,ƒU~T0€r._ƒT –­R|X‘Ø~Y©rE}ƒUsTv¬sãÞšƒU~T0Ås®ÁƒU ðÂQ‘Ø~ðtz߃UsTvu…„UsQ‘Ø~X$3z8„Usú{85„Us}“M„Usp~…x„UsQ‘Ø~X Y0~z„Us8¨„UsM€UÀ„Usw€îØ„Us‚„!õ„UsQ2V….+|4ò| šœu˜hò93&  TMò93&  æPò'|  € ò393O = “ôƒ3  ›õ|JOöël_ Y 5:÷ B‘°keyøp° ¨ ( ùƒ onú |ê û |Ź×Sü |yM4 ý |SAÀ.¶†¼* üo/•†u6 ëllfšU °ÐžŸÁU|TwQ0@.ð†u6 ël·µ°U ðÁ@/Œ54W[…˜ ¨Þ€/V‹›^ |sp_ D3ôÚ9`½2à/‚‡Ÿhüb*&U|² §‡U|T q±fÓчU|T ¨ÞQ0qEé‡U|¦!ˆU|T •±Q2HÆ1ˆU|T}c]ˆU ’±T ¨Þ乆ˆU|T~Q~R1ÿ¹¯ˆU|TsQsR1ƒ^шU|Q0R2›®ýˆU €±T ¨Þ¼Æ‰U|;2‰U|Q06;O‰U|Q0i;l‰U|Q0›;‰‰U|Q0Ê;¦‰U|Q0;ÉU|Q05;à‰U|Q0f;ý‰U|Q0—;ŠU|Q0È;7ŠU|Q0õ;TŠU|Q0U;qŠU|Q0o;ŽŠU|Q0¥;«ŠU|Q00 ;ÈŠU|Q0` ;åŠU|Q0 ;‹U|Q0¿ ;‹U|Q0Ô ;<‹U|Q0!;U|Q0›6ê‹Q4w[3b`ª ¥‹U|T ¨Þ¾ÔÏ‹U|T ¨ÞQ4ÌúU|T}!U|T}@0”Œ¼*² üo‹…<³ |ÖÔ&(ŸÁ\ŒU|TwQ0e(7ŸtŒUs¶(!U|T}Q20öŒ¼*» üoÿù'ŸÁÖŒU|TwQ0(!U|T}Q2Š$LšmsgÖnJHþ ×n|v $UZUT 㱸$ãÞxUwT0Ñ$®U ÈÑQ€.]ŽÄ#ê 93ÖÎzÖU|T}´…úU|QX$ &zŽU|T}5&…BŽU|QX$YsB&­U|Ts]mŸÁŽU|TsQ0ÊãÞªŽU}T0ÙãÞÇŽU~T0éãÞåŽUwT0 .T *±R‘ X‘¨Õ^>U|T~Q‘°R2ýÆaU|T}Q0Æ„U|T}Q2¯U©UT ®¬üUÎUT ·¬e.u.þU|T}Q2‰U#UT ìÏUHUT ð¬øgU àÐUŠU|T}Q2<U­U|T}Q2_!ÐU|T}Q2sUõUT Û¬Á"‘U 8ÑT ÿÿÿÿÿÿÿÿéUG‘UT û¬Ul‘UT æ¬[U‘‘UT L­U¶‘UT X­¾ãÞÓ‘U}T0Öÿ‘U \±T L­ìãÞ’U}T0H’U \±T X­Um’UT ‚¬JãÞŠ’U}T0b¶’U \±T ‚¬qUÛ’UT q­àU“UT ­u!U%“UT Ϭž!®D“U `Ѳ!Ui“UT 5­û!UŽ“UT ;­""U³“UT C­˜"UØ“UT °¯"Uý“UT űÆ"U"”UT y­Ý"UG”UT ò¯ô"Ul”UT ­ #U‘”UT Þ±"#U¶”UT Ö±U#‡à”UT á«Q5¬#‡ •UT º­Q8È#‡4•UT î±Q4ä#‡^•UT ó±Q4$ãÞ{•U}T0$ãÞ˜•U~T01$.·•T Òa$‡á•UT ë«Q5}$U–UT ç«å$U+–UT k²%UP–UT x¬L%Uu–UT *­~%Uš–UT ~ª¢%U¿–UT G¬W&!â–U|T}Q2†&—U Ѧ&!$—U|T}Q2å&UI—UT ñ«ü&Un—UT ÿ«Z'U“—UT »±o'ÄÉ«—U}ƒ'UЗUT k²Ã'Uõ—UT »±à'©Å˜UwT}Q0õ'!<˜U|T}Q2t(ãÞY˜U}T0…(U Ÿ±€…˜$O u˜+\O—|°ŽJœCš“—ƒ3L2sv—93sYQ—&|€G—4Î2`Dv—A7™‰ÕF™ |_M_Bš |+!6uv›‘P_ºj™U|Rw U™U|TvQ2ØÇ°™U|TvQ00!Ó™U|TvQ2j!’UšU|TvQ2¥.À’(šUvÑÔú.+²Kk|ðF7œãšQk| špk|ïësk%|, ( tk-0ci e vk67¦ ¢ G®U о+ËT<|‹>œžsth<93é ß col< 93d!\!ref<)93Ë!Ã!+X<293<"*"“>ƒ3 ##¼*?üo\#V#av@ U3±#¥#idxA |;$3$Ô1B |Ÿ$—$Ì‹ì›_pd7ÿ$ý$(÷ыы d!œ ’÷$%"%2‹B‹ŸÁQœU}TsQ0ë‹I{œU}TvQs $ &@Œ!žœU}T~Q2`ŒãÞ¼œUwT0oŒãÞÙœU|T0}ŒãÞöœU~T0ŸŒ.$T (ÄRwX‘°½Œ7Ÿ<UÔŒãÞYU|T0áŒãÞvU~T0ðŒãÞ•U‘¨T0ÀU ˆÄQsRv+ßU øÃ>U PÄTs+SJU30Çýœ7Ÿ¼*üoS%G%av U3à%Ø%ðäž“ ƒ3>&<&i |k&a&_ÇjÇ£žTvôÇYÛT|Q ï´R0X ÈÈY |¯È )Ÿ“0 ƒ3Þ&Ü&›1 |È%È7Ÿ+·æU3 ‰Õœ8¡¼*æüo ''“ìƒ3p'h'ií ½2è'Ì'avî U36),)@âŸ_p7§)¥)@ŠaUvT;E‰s‰  UvT}¥‰+ UvT}Þ‰ÇH UvT0ò‰If UvT}kŠ„ UvT}…Š.£ T ˆÃ¥Š.ΠT XÃQ~ $ &¾Š»ø UvT}Q~ $ &ÓŠ¡UvT}ðŠ.T  ÃR| m0S®œŽ¤JOëlâ)Ê)“ƒ3ð*â*›‚|]Dƒ |—+…+‰?„ |e,Y,XD… |ù,í,åW†ñlÑ-Ç-¸V!¢¼*ËüoG.E.ÇVzUv)æ&T¦J¢ ;æn.j.)æzT0® s¢ ;æ¸.°.)æÕTp´ œ¢ ;æ8/0/MSÂS.΢T ÀYvaÚSˆjT®ú¢U °ÀÂT®£U àÀU®8£U Á@Uޤh£UvTsQ øªR0tUz€£Uv‹Uz˜£UvmÊU.¾£T PÁRóUäUޤî£UvTsQ àªR0[> 1$¥°Â4† ˤ—>•>Í1{X±Â4Œ ˤÕ>Ñ>ð1ãÞî°U‘°T0ý1ãÞ ±UvT0 2ãÞ(±UT0;2.T ÈÒR‘¨X|Y} 1й¬D3? ?¤-)à±_p³$7?›?Í-™ýUsTvQ~R a­X}Y1,!Á|Ð1>²_p´$7Â?À?.™ýUsTvQ~R Y²X}Y1,!Á|2œ²_pµ$7ç?å?9.™ýUsTvQ~R _²X}Y1,!Á|02ú²_p¶$7 @ @j.™ýUsTvQ~R *­X}Y0,!Á|`2X³_p·,75@/@›.™ýUsTvQ~R A±X}Y0,!Á|2ŒµavÎU3ˆ@€@°2P:´ßSÒ93ê@æ@°2 â³_pÒ-7#A!A½2aUsT;È2îú³Usß2:´UsQwR2î2zUsTw3pî´iÚ½2NAFAÐ2Ò´svÜ93²A®A63z—´UsO3á¶´UsTwf3íUsTw 3UsTw–/…#µUsQ ‚¬R<X0Y0½/G;µUsÈ/­SµUsÖ/íqµUsT~á/UsT~3ªµ_pö7êAèA(÷Í-Í- ³$ßµ ’÷B B(÷.. ´$¶ ’÷4B2B(÷9.9. µ$I¶ ’÷YBWB(÷j.j. ¶$~¶ ’÷~B|B(÷›.›. ·,³¶ ’÷£B¡B÷Ÿ003öܶ ’÷ÈBÆBÚ.™ý ·UsTvQ~R X­X}Y0,!Á|ü.™ýd·UsTvQ~R L­X}Y0,!Á|/™ý¨·UsTvQ~R y­X}Y0,!Á|@/™ýì·UsTvQ~R q­X}Y0,!Á|K0G¸Usr0…4¸UsQ Ê«R8X$š0…i¸UsQ ò¯R9X0Y0Í0…“¸UsQ ò¯R9p2G«¸Us—2…Û¸UsQ @¬R6X$—3…¹UsQ k²R9X Y0à3…E¹UsQ f²R>X Y04G]¹Us34…UsQ k²R9X$#œ¹_p7 3»¹Â4ˤíBëBÐ3.º‚=CC¶‚=NCJC†1ºóS‚=CŽC41ÖTPO÷ë0`3—º h÷ºC´C \÷ DD>s÷p3t÷GDADU4úUsT‘¨K,cúUsTQ ²[,cÃåºUsT}Q0t,ŸÁ»UsT}Q0™,Ö »T~³,ùE»U 0²T|¾,E]»UsÐ,í‚»UsT‘¨Q0-…·»UsQ L²R<X Y0,-É è»U}TwQ|R0,ñ½0@-G¼UsT‘¨S-ú.¼UsT‘¸Q~c-zN¼UsT‘¸ˆ-zn¼UsT‘°’-{ë0¬¼UsQ‘¨R~X|Y0p1¯̼UsT‘¨h4Hë¼U u²r4ãÞ½UT04:½U  ÓQ|R øÒ²4ãÞW½UT0Í4‰½U  ÓQsR 7²Ü4UsT‘¨Q0C13ó93Ú¾?p_hó93"HOó#ël"Ä7ó:p"N:óLB"õKó]B"Dóh93“õƒ3±=öpW÷ [3ÕHø 93impùël«ú |#l¾Xp#¾Â4 ˤ#’¾Â4 ˤ#¥¾ŒÎ2#¸¾Â4F ˤ#ʾ_pV&79¼*cüo+é3Ý93PùýœñÀsthÝ93D•DÄ7Ý%pEüDN:Ý7BkEcEâÝMpÒEÊE“߃33F1F¼*àüo\FVF%áO§F¥F âñÀÌFÊFó3ã 93õFïFVøóù0)íÀ søBG>G gøzGxGøù•TvvùƒùŸÁ.ÀT|Q0Žù¡FÀUváùÉ uÀU|T~Q}RsX0úãÞ’ÀU|T04ú.ÃÀT `ÎR}XsYvMúU (ÎT}QvRs ækCø ±93ŸÁ"“±ƒ3?h±93"JO±+ël" ±:n"~&±F93"à0±R|"±a|len³ B*:´ D3#ÁB'ºD39é̇9+GM…ëlàVÝœ Ó…ƒ3­GGhrv…93iH[Hmgp…% à IþHmg‡ ‚=­I§Isvˆ 93úIöI°ÉÂÂ4Ž ˤ4J0JsWrÂUvTsQ «¢WáÂUvTs¬WãÞ­ÂUsT0½WU «&WcÃôÂUvTsQ («4WÖT~ ‚=C‰XlëlcÃ?hrvl93mgn ‚=svo 939“| ƒ3JO}ël+ˆ5930Gvœ©Å“5 ƒ3°J˜Jorv593³K§K+5'pHL8Lmg8 ‚=÷LóLohv9 933M-Mhrv: 93~M|M`<ÄÂ4C ˤ§M¡MûGáU|Ts™GãÞYÄUsT0­G~ÄU p¿TvðG°ÄU P¿TvQ ¿HÖÎÄU}TP3HáìÄU|Ts=HãÞ ÅUsT0QH.ÅU ˜¿TveHÖLÅU}T~ˆHájÅU|Ts’HãÞ‡ÅUsT0¦HU È¿Tv+(T|° 8œŒÇh93=N5NîT93¢NœN„X$93øNîN“ƒ3uOoOJOëlÄO¾O/ |P Pò2bP\PÖ æ ŸÁÆU}T|Q0ŒÇ±ÆU|TsQ~ÄÉÊÆUw+‡èÆU}QsE{_ãÞÇU|T0¬.XÇT ÈÏRs ÿÿXY‘°”€þ¿x ÿÿÿÿʈpÇU}æ.T Ð+à-üpj›œÄÉhü93ÃP«PîTü93àQÆQî2ü+ SöR“þƒ3 TùSò2ÿÈTÆT `Ésp D3UëTÀ fÈŸ üb,V&VølU| ÈÈ_sv93yVuV%l®È_p7³V¯V­l!U|Q2l!òÈU|T ”«Q2Ãl¹ÉU|TvQvR1ãl¹DÉU|TvQvR1 mU «‘jká‹ÉU|TskÆ©ÉU|TsLšl!TóTQ2+q ¿| œ\Ì„X¿93ÿVéV“Áƒ3ûWïWÂ4ÂˤX}XõHÃpEY?YfpÄ ‡9¤YŽYioÅ 8q’ZŠZ#uÊ_pÒ7#‡Ê_pÜ7(÷  Ü¼Ê ’÷ðZîZ;   îÊUvT û°. \ÌËUs8 \ÌËUsE ,6ËUsk 9TËUsTv \ÌlËUs³ FŠËUsT} ®©ËU ˜Ï ®ÈËU pÏB ^ðËUsTvQ0R2h \ÌÌUsu S ÌUs `” l¨ ®U þ°Tv xX¯€ šœ^Í“¯ƒ3![[Â4±ˤÂ[¼[#·Ì_p¹ 7O÷Ð @-¹ Í h÷\ \ \÷I\E\>s÷P-t÷…\\ úUs¦ ,0ÍUs» SHÍUsL yUóU+hŸ|ªÝœÎJOŸël×\Ï\fmtŸ-p>]6]]“¡ƒ35¢ º‘~€ª¹ª†õÍTsQwݪ.C ‚½2jÎ?key‚p"‚ ”#OÎçX…Bÿ.† Î29ÿ. Î2sjÎ 7Cj?onÃÎ"“o ƒ3"Q4o[3"FJo&p"¤6o0|svq 93C¢T[Î2Ï"“[ ƒ3"JO[ëlHL] 93l^ 93ÿ._ ½2+DLä|`¬ÕœYÛhä93¡]]JOäëlá]Ù]errä+93J^@^ä493Ñ^¹^›,ä@93ã_Ù_49äK93j`R`“æƒ3kaaa¤Aç 93äaÚaè 93xblb5é 93cübVê D3×cÉc@ë |ŠdldÀÔspò D3fÆeƒó ihehM*ô 93¹h¯h ®ÐŸþ üb.i(i¸¿Uvp²GÆÐUv‰²EÞÐUv³ûÐUvQ2ÿ¹ãÞÑU}T0 ºãÞ5ÑU~T0ºãÞTÑU‘ˆT0,ºãÞqÑU|T0;ºãÞŽÑUT0iº.ÅÑT XÇR‘˜X‘ Y‘¨»ãÞâÑU}T0)»ãÞÿÑU~T0:»ãÞÒU‘ˆT0I»ãÞ;ÒU|T0Z»ãÞZÒU‘T0Œ».‘ÒT ÇR‘ X‘¨Y‘°¨»¬´ÒUvT}Q2À»¬×ÒUvT~Q2໬üÒUvT‘ˆQ2¼¬ÓUvT|Q2ŽÆBÓUvTQ0K¿¹_ÓUvR1`¿¹|ÓUvR1ƒ¿¹©ÓUvT‘ Q‘ R1¥¿¹ÖÓUvT‘˜Q‘˜R1п¹óÓUvR1ð¿ÆUvTQ2–¬'­:EÔUvQ‘ˆR2­¡Á­¡½®U箢£ÔUvT‘˜Q {¯R1X2¯•ÐÔUvT‘˜Q‘ˆR2G¯:ùÔUvT}Q|R2î¯Ãú3ÕUvT‘#Qs, Þ‘,«Þs°’ÿ°:iÕUvT}Q|R2¬±…žÕUvQ X­R<X Y0º³ãÞ»ÕU}T0dzãÞØÕU~T0Ö³ãÞ÷ÕU‘ˆT0å³ãÞÖU|T0 ´.GÖT ˜ÇR‘˜XY}"´^oÖUvT|Q0R2]´ÆÖUvT|‚´Æ­ÖUvT‘˜ ´¯ÅÖUv<µ¡PµãÞïÖU~T0aµ®×U ÐÇsµŸ9×UvTQ e«Z¶U²¶ m×U‘˜T Ö®™·Uï· ¡×U‘˜T 뮢¸^É×UvT}Q0R2̸^ó×UvT‘˜Q0R2ù¸^ØUvT‘ˆQ0R2¹’5ØU-¹ÆSØUvT~R¹^{ØUvT~Q0R2ãº:¤ØUvTQ~R2ýºÆÇØUvT}Q0]¼’m¼’ȼÆÙUvT}Q2ê½Æ'ÙUvT}Q0¾ÆJÙUvTQ0E¾ÆmÙUvTQ2u¾ÆÙUvT}Q2œ¾^¸ÙUvT}Q0R2Ǿ^àÙUvT|Q0R2ô¾^ÚUvTQ0R2'¿^0ÚUvT~Q0R2 ÀÆSÚUvT|Q0:ÀÆvÚUvT~Q0eÀÆ™ÚUvT|Q2ŒÀ^ÁÚUvT}Q0R2·À^éÚUvT|Q0R2ÙÀÆ ÛUvT~Q2ÿÀ^4ÛUvTQ0R2(Á^UvT~Q0R2+ÆÒ|@Á¿œuÞhÒ93iwiJOÒ ëlçißiè2Ò5pPjFjØ&Ò?ÐjÂjÒRp~ktk›,Òfpûkók^49Òyp‘“Ôƒ3dlZl53!Õ uÞ‘HLÖ 93ÙlÓllÖ93.m"m=Ö93¶m°mÏ0Ö)93nn(+øÐÂÐÂ%Ø ÷Ü Hø(n&n <øXnTnõÂïUT1QLR ¸¯X‘ˆÁÆÁ¡ÝU}ÔÁ’:ÝUsT}ßÁERÝUsÂÏ}ÝUwT~QR}M¡•ÝUv[Â’³ÝUsTvfÂEËÝUsx¡ãÝU|†Â’ÞUsT|‘ÂEÞUs¨Â¡1ÞU¶Â’OÞUsTÁÂEgÞUsÿÂ.y…Þ$ONl&ÃãÞ"“Ã3?hÃ$93"JOÃ2ël~&Å 939ÅDÊ 939_pÌ7__LLnp?uœ)æsvL93§n‘n\,LB±o—o“Nƒ3ÇpÁpÂ4Oˤqq6lenP B‘°nsvQ 93¿qŸq·R 93ssvS n©s—s%Sn{tut0Pámg_‚=ÆtÄt¡CÓàUsT ϨQ|¬CEàUsðC¢QàUsT|Q #®R1X2D¢àUsT|QR1X2?D¢´àUsT|Q æ²R1X2 F¢éàUsT|Q {µR1X25F¢áUsT|Q ݨR1X2]F¢UsT|Q ´R1X2E:yác¹€ëtét(÷rBrB’ »á *÷uu *÷uu(6÷¡B¡B” ðá C÷QuOu¦?X@Ÿ%âUsT|Q0R0ð@x=âUsA¬`âUsTQ3¸A¹~âUsTËAƧâUsTQ~R1åA¢ØâUsTQ‘¨R}{X2B¢ ãUsTQ ®R3X2%B^7ãUsTvQ‘°R2;B¯UãUsTvÃBÆsãUsTÛB•œãUsTQ|R2[Cù»ãU ¸¯vC•äãUsTvQ|R2CEäUsTvlD¹ äUsTDÆIäUsTQ~R1šD¢täUsTQ‘¨X2³D¢¢äUsTQ~R1X2ËD•ËäUsTQ|R2eE^õäUsTvQ‘°R2†EùåU ܨE!1åUsQ2½E^[åUsTvQ‘°R2åE^…åUsTQ‘°R2uFÓ¨åUsTvQ0•F^ÒåUsTQ‘°R2²FùñåU بÏF^æUsTvQ‘°R2åF.Cv?nIæ"( ?| ³ö ¦-œméMXööl|utu“øƒ3éuÛuÂ4ùˤ‚v~v_ úöl¼v¸v(ìø!©!©6 ç ÿøôvòv0©ûT0Q:;¦Z¦¯ò.çUÐu¦îXçUvT `®Q2ƒ¦‡vçUvQ~Ö¦,ŽçUv §¨àÊçUvT ~®Q2R3*¨àùçUvT ‰®Q2R3C¨à(èUvT ’®Q2R3\¨àWèUvT ž®Q2R3u¨à†èUvT ©®Q2R3¤¨î°èUvT o®Q5ǨîÚèUvT o®Q5ר!÷èUvQ2ò¨î!éUvT Å®Q2 ©í@éU ³®!©í_éU ³®E©îNº+áê"ôDáp"I;á%|"/;á2|"á?|"AQáR|"¹%â |"$:â|"’9â#|“äƒ3Â4åˤ6msgæ%ê `Þ€%ê$OAê+aš93ð"œ+ñÿ.š[3wwÎUš#nlwhwö/š2B¨w¤wAIšDnäwàw¡HšUB xxz2šg|\xXx!šu|˜x”x“œ ƒ3ÜxÐxÑ ½2hydy1OžB°y y¸@Ÿçzázi H@{0{¡ 93õ{ï{+æí7³D3H|>|à+^ì5=1ÃB‘°S9Än¹|·|Z¢ÞëUsT}Q Á¨R1X2s¢ìUsT}Q~X2¢<ìUsT}Q Á¨R1X2µ^UsQ‘€R2z¢“ìUsT}Q èR5X2£¡«ìU~Ä…ÜìUsT‘Ø~Q~X Y0ÙˆúìUsT}ô¢-íUsT}Q‘è~R‘à~X2¶¢`íUsT}Q‘R‘ˆX2‡ãÞwíT0•ˆ•íUsT}Ó®´íU ©°ð¢UsT}Q ŰR3X2+ñD@+£7ð Wñâ|Ü| JñF}:} =ñÔ}Ì}<@+dñ>~6~qñž~š~H~ñ‘°‹ñÚ~Ö~˜ñ¥ñ‚t²ñ$€€¿ñŽ€‚€DÌñ(÷øøuÙî U ´IW;ïU|T’º!ïUT8»º>ïUT@üú^ïU|Q‘€º|ïU|RsJ¡ïU|T‘Ø~Q0˜ÓïUvT‘˜Q8R °H¢ÔíïU‘ð~ðUT‘˜Q@R @ÚNÔU‘ð~>´¡^ðU‘è~Ë¡xðU‘à;˜ðUsT‘Ø~ ǰðUsŸÛðUsT}Q |¯ÌÔóðUvqÓñUsT |¯Q0.C­@fÚñ"ÿ.f[3"!f |"Af27T“hƒ3Ñi ½20i½2ªj {9¸@k idxlHáHm B¶Rn g3ˆ1oÚñ s+º`|°Hœ;òR6`ûØE`)ûZVa¿HUCD0N|‚ò"R6Nû"ØEN+û¶Pn6QCL2>n¯ò?str>nbuf@ n+A47ž9œ«ólen4B™““6ƒ3çåsv7 93 ‚ ‚p8 71‚/‚€ø?ž`9ó ©øV‚T‚ ø{‚y‚ ‘ø¡‚Ÿ‚Gž!T0Qs"ž6žÇT s1s0.(_w@*wq`>œóó^“*ƒ3UÂ4,ˤƂÄ‚+å& |xœ#õ“ƒ3ƒƒmg%‚=Cƒ=ƒ@E7êB“ƒƒima§΃̃ò'§óƒñƒcv ƒ>„„ncv ƒ>?„;„»Ñô_p 7y„u„0ïô_p 7²„°„®,õUóUQsÇ9U@n>ô | jœÜöo“ôƒ3߄Մpsvô#93U…Q…pmgô.‚=’…Ž…Vimaö§Ï…Ë… ¼õV_pö$7††$ åõV_pû7/†+†; öV_pü7i†e†qO÷( €,ûgö h÷£†Ÿ† \÷߆Ù†>s÷°,t÷.‡(‡m úqO÷? à,üÇö h÷|‡x‡ \÷¶‡²‡>s÷-t÷ò‡ì‡x úUvZ ÔUsnFvÆqÀHÓœ÷oôDv"vJˆ<ˆƒTùb‡Ò6÷JsvÒ93b/<ÌO÷JsvÌ93bÕU¶÷@“¶ƒ3Jsv¶939crc¹Î2WŒW£93ž÷Jsv£93W"½2¼÷@“ ƒ3W^%übÙ÷Jsv%ß÷ f&Ù÷WðO3+ø@“ƒ3Jsvƒ>#øc_p 79c_p! 7Xœ"|VøJ__s"t@»"{]X;HXn€ø@@Xt@ƒ%X{X ;7¶ø@@;7@z;|@c*;µXM37ìø@@9@ƒ%@c*µ„’ i| ù"•FipAméàªÐœÃú {éçˆ߈ ˆéN‰F‰ •鵉­‰ ¢éŠŠ ¯éYŠQŠ ¼éÀЏŠdÉé‘dÖé‘DãéDðé(m醫†«*áuú ¢é!‹‹ ¯éI‹G‹ ¼én‹l‹ Éé“‹‘‹ Ö鹋·‹ •éߋ݋ ˆéŒŒ {é)Œ'ŒM†«*DãéDðé°«U `ÆT^QÐR~XsY}«†«U àÆT ¸ÆQvR˜X|Y˜A…Þ°«¦œ¤û “ÞVŒLŒB«ÞB Þ¸Þόˌ>ÅÞ`ÆÞ÷$¬ÌAû ’÷,*¬…vûUsQ ò¯R9X0Y0M¬…UsQ ò¯R9X$AÎPÓHœü ÎSO "΋‰>/Π4η³AÎõïYÓ¡UsAΠÓTœ¬ü ÎKŽ?Ž "ÎÞŽÖŽ¯Ó)wüPÎF@]Λ™måÓ¤ûü,"Î0ôÓU >¯AÃÎpÕ®œ™ý ÕÎȾBâÎBâÎïÎB:üΣŸ ÏåÙ(ÎòÕòÕc\ý "În‘l‘ Δ‘’‘÷Õ¤û,"Î0WÖ^~ýU|Q0R2 ׯU|T}A÷À ל? ÁÇ‘·‘ Á„’x’ .Á“ “ ;Á´“ “ HÁ’”Ž”dUÁ‘B!ÁbÁ֔ʔoÁd•X•K|ÁaÿÁö•æ•!Ø…eþUsQvR}X Y0KØ:‚þUsR2Ù…±þUsQvR}X Y0$ÙãÞÎþU~T08ÙóþU ËQvþÙ…"ÿUsQvR}X0Y0*ÚãÞ?ÿU~T0>ÚU ÀÊQvKÁàëÁ¤– –^ØãÞ˜ÿU|T0kØãÞµÿU~T0…Ø.æÿU}T 8ËRvXs§ØãÞýÿT0»Ø."U}T ”¯ÇØãÞ9T0ÛØ.^U}T }¯ŽÙãÞ{U|T0›ÙãÞ˜U~T0µÙ.ÉU}T 8ËRvX|ÏÙ.U}T g¯LסUvx×…UsQvR}X ÿ0‘”0)(@# Y0A;ò@Ú,œö Mòà–Ú– Zò2—,—gò„—~—tòß—Ó—U;òPÚPÚN Zòh˜d˜ Mò¥˜¡˜MPÚDgòDtòa[ÚUA†wpÚ1œd ”wê˜Þ˜ ¡w|™r™ ¹wû™ñ™ Æw|špšB¬wB¬w>Ów Ôw8›6›Káwp 1âw_›[›Û{UsTDÛ{»UsTYÛãÞØUvT0xÛ.T `ËQ~X}ˆÛˆUsL¡ÛFUóU­Ú…UsQ ~ªR:X Y0…—x° œF ¥x››•› ¿xò›è› Ìxnœdœ ÙxêœàœB²xB²xæxh\Hóx‘°yöê y²ž¬žKyà 5yŸûžfÜSUsT/=ÝSUsT\ðÛ Ü_ZUv8Ü_rUvQÜ^–UvQ‘°R2”Ü ÕU‘¨T ®¯Q|RsX ÿÿÿÿÙÜ U‘¨T ¼¯Q|RsñÜ_ UvÝ_8UvTÝ.AÃ`Ýyœx !ÃRŸJŸ.õŸ±Ÿ:ÃôŸðŸ!ÒGÃ- + TÃR P ªÝ·ÝŸÁTsQ0UþݾÝl !Ãw u M¾ÝD.ÃD:Ãjˆ¾ÝDGÃDTÃÈÝãÞYUsT0ÙÝU ˆËAñwàÝ—œÏ  xž š  *xÚ Ö  7x¡¡ DxX¡N¡ Qxѡ͡^x¢ ¢rx xb¢X¢Kxx@!8 yxÔ¢Ò¢(*y›Þ›Þ5Á #M›Þ5§6§ ʽ¥§§ ×½¨¨ ä½ë¨ݨ þ½˜©†© ñ½aª_ª ¾›ª‰ª%¾m«Y«2¾W¬I¬?¾ô¬ì¬L¾V­P­K’¾€(È —¾§­Ÿ­(€øÐöÐö-0Ü  ©ø®® ø-®+® ‘øS®Q®(€øÀøÀø81+  ©øx®v® øŸ®® ‘øÅ®îïõzI U|T~Wöh U Î0ù U XÍQ>ù¬ U ÈÍLùU Í€øöÐ(< *  ©øê®è® ø¯ ¯ ‘ø5¯3¯—ö!UsT0QE¥¾²öQ ª¾Z¯X¯(÷!÷!÷V!†  ’÷–¯”¯Eʾg÷ ­ ˾»¯¹¯E¾÷p+„¾â¯Þ¯¶÷Å÷ãÞý U}T0ô÷.T (ÍRvXsYKY¾)ã^¾"°°øÏ rU|T‘¨Q m°'øî•U|TQ5Jøî¸U|TQ5Zø!ÕU|Q2ýøîEl¾rø& q¾€°~°{õ‹õÔ:U|TsQ0ƒöÇXU|T\÷ùU ÍTsQ ]°`G`GJØ|P|PJ®øFøFJ2 YYJ/ À=À=J, ××J­NNJbeÖ̬0¬0JF ¶V¶VJD 00Ji ŒSŒSJŒ †øUøUU!U!JúkVkVJ -LVLV8¹ðLðLJ› ‘J‘JJè è7è7Jz !!J”h"h"JÁ #.#.Jñ --Jw «1«1Jn R<R<J~ €'€'J ÐVÐVJ“ööJï4ï4JÄ ›%›%Jôi*i*J¬*9*9J-æ"æ"8ñJIJIJ( ¨9¨9JÌ&S&SJÞJï-þ(þ(J¶t)t)J Ò(Ò(Jå —U—UJ,"W"WKÿÿJ1-JJJ»`:`:Jâ>%>%J{xGxGJ: ¢ ¢ JÑ//JEmmJ` ` J<-¸¸!D "D"DJ¾  8 8JÓ2T2TJì[[J“ -))JôJî Ê4Ê4tŸQŸQJ¿e;H1HÓBÓBJ"ÞÞJ3)3)J 8080J$ !L!LJl ’&’&JZ@Z@JÑ--(-(°”"”"L`QQJ¡ œœJ` ÐNÐNJ ™™JÿJý-ššK‰ pNpNJ¬ ——Jõ /6/6JBBJÊ ÿAÿAJï uuJâ ’;’;JÍÒ-Ò-J]YYJ¹5¹5J¼žVžVJí 1I1IJ9 - E EJ°†,†,Jë -VVJÁË Ë J#SSKJ--JS -§7§7JÙ&&Jý-:7:7MS-œLœLMQœ/œ/JE -T T KŒ ö*ö*J 77J… A-A-JÜ 3>3>Jè JB àMàMJ¡ -æ6æ6JÔ-JÎHGHGJi!i!J¥ »C»CJ -)")"8¼DDJÑÁJÁJJ„ 5&5&JÐ.#.#J×-ÕÕ"% ÝÝK¿ ¿ Jº-N%N%8õKKJ ææJZ j2j2JU ŒŒJP ªªJ ÜQÜQJÏ ¬¬JQ66wOLOLJÖ O OJç::; e  °U°UJü ]4]4J¢   J-6P6PKýA,A,J&-''K⊂‘B‰‚14: ;9 I·B : ; 9 I8 4: ;9 I·B‰‚1 : ;9 I8  U : ;9 I8 1·B  I I (  : ;9 I·B.?<n: ;9 ‰‚1 : ; 9 I : ;9 I1R¸BUX YW : ;9 I·B: ; 9 I4: ;9 I?<41·B : ; 9 I84: ;9 II&I4: ;9 I.?: ;9 'I<4: ; 9 I?< .: ;9 '@—B!: ;9 I": ;9 I# $!I/ % : ; 9 & : ;9 I8 ''I(1R¸BX YW )7I* : ;9 +.: ;9 'I@—B,Š‚1‘B-.?<n: ; 9 . : ; 9 I 8 / : ; 9 0<1 : ;9 2 : ;9 3 : ;9 I 8 4 : ; 9 I8 54: ;9 I64: ;9 I7 : ; 9 8: ;9 I9 :$ > ;!< U='> 1U?: ;9 I@: ; 9 IA.1@—BB1C.: ;9 'I D41E 1F: ; 9 IG : ; 9 H41I : ;9 IJ: ; 9 IK 1UL‰‚•B1M N.: ;9 ' O : ; I8 P : ; 9 IQ : ; 9 R> I: ; 9 S!I/T : ; 9 I 8U1R¸BX YW V4: ; 9 I·BW.: ; 9 'I X.?: ; 9 'I 4Y : ; 9 Z : ;9 [ : ; 9 I8\ : ;9 ]^: ;9 I_.?: ;9 'I@—B` : ;9 a‰‚•B1b.: ; 9 ' c4: ; 9 Id1e.?<n: ; f : ;9 g4: ; 9 Ih.?: ;9 '@—Bi‰‚j 1k1R¸BUX YW l.: ;9 I m‰‚•B1n.: ; 9 'I@—Bo: ; 9 I·Bp: ; 9 I·Bq1R¸BUX Y W r1 s% Ut$ > u vIw : ; x&y : ;9 I8z : ;9 {5I|: ; 9 } : ;9 ~> I: ;9 4: ; 9 I€.: ;9 '@–B: ;9 I‚4: ;9 I ƒ.: ; 9 '‡ „.?: ;9 'I ….1U@—B†.?<nðfû /usr/lib64/perl5/CORE/usr/include/bits/usr/include/usr/include/sys/usr/include/bits/types/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/netinetDBI.xsDBI.cinline.hstring_fortified.hstdlib.hstdio2.htypes.htypes.htime_t.hstddef.h__sigset_t.hstruct_timeval.hstruct_timespec.hthread-shared-types.hpthreadtypes.hstdarg.hstdint-uintn.h__locale_t.hlocale_t.hsetjmp.hsetjmp.h__sigval_t.hsiginfo_t.hsignal.hunistd.hgetopt_core.hsockaddr.hsocket.hin.hstat.htime.htime.herrno.hnetdb.hnetdb.hdirent.hdirent.hperl.hmath.hop.hcop.hintrpvar.hsv.hgv.hmg.hav.hhv.hcv.hpad.hhandy.hstruct_FILE.hFILE.hstdio.hsys_errlist.hperlio.hiperlsys.hperly.hregexp.hutf8.hutil.hpwd.hgrp.hcrypt.hshadow.hreentr.hparser.hopcode.hperlvars.hmg_vtable.hoverload.hdbipport.hDBIXS.hproto.hstring.hpthread.hctype.h `>ªK ׃Ø'fK †W# ­&JÓYt‚ ó(·} ƺ}.ÆJº}< .ÐJJJ<ÔjäKuY K= ‚ òt u%&. Y‚ÖgžKK] IgïoòtóYs=tKs ”r<< u < u J f   t2 X < X ó  ’ s Z  º!ÂtÖ·ž Y  ‘ò X%( u Zf ƒ «=Z <  t¬[ Yžu!” u!t ¸LX ‘‚­/‘K+ räÙ ! Ö °À| ¾‚. =¸|f Ç­  Y /< v  qX  º¼‘ L  Y / X ×< ­ ­ ­»$‚ ƒ(+$< Z. È‚­/ ƒ Y/ <ó  Ks=Ö!‚fƒ<!mX< gžeä‚tòl‚ '(!­ä((( È*¬häJX,&­ òOv v. .tYÍ . °yžy 5"<XL ‘  Z å‚f   XJ ½ò.u< X ƒ tX#.X .. dXqfXÈJJ‚X  X J o.fY% È f ‘ ’­‡z(K <<•~f;= " º.ƒ o  Ö $ ÖY Ë Öƒ ¡ ÖY Ï/œ ÖZrKsó­t °=o= tK-“ðŒxJñ‘xJrfiqk Jì" .»ƒƒƒƒƒ‘‘ƒ‘­­‘‘‘‘‘­­­­T¬Jå ¬ ‚>»0,& J#X <#‚ô f Yʱ !Xh J¥  ¤Ö.. Rž( ¬ øw< Ö-ï¬t º Tw01ãããããããã9ã1ãããããããããããã 2ää > r Øžÿ ž m$, ' <#f Jž   J Ÿ ' ¬fXJ ó1  ' ¬fXJ ó/kDtž‚ X#éKs‚=.  XtJ=J Ju Y  Ÿ' I'ƒ s'u ¼Ït  ±.ÏJ. ±.²oJ¡ Ê  b. . ZJg <„™wJr½qkXàØ. ]  Y%wJ í•wJr½qk J èØ [  f K%ŠwJ ówJr½qk J îÙ_ Ÿ@   ×Y Y^±» ¬¼>i J dh L 0J ,¿¬<©wº Ö Ö ‹ »»»»ñvtä ÒÈX ¸ È< ¸ ÈtJ ¸.3t+Xâ{ò  £7A Y J<tt £<.‚= < YJ= J ' Y <. tò   < XJ Àƒ ;Y zt%•kè˜kJKçå3K  Y™O#ß0< ¡OJ à0J Ot ‚< à0< JŸ[Ëz¬&JJKJ=¼ºXt.º `Y§K ïO#‰0. ÷O.‰0J =öO< Š0‚ öOJ< Š0< JŸ[ åz ›t åz<X ›JåzJ ¬ <K¢t Jt<tX àYKK ¡P#×/. ©Pä Ø/J¨P< ‚ Ø/< ¨PJ< Ø/JJu<“# V#>:L #„J<X¬Lõz“f¬<JðzX zxÞ‚ = L X J.uƒJ¬tXt.JcXòzX uX‚YyX Ky<< OJÖ#õº º t õzäü<tX  [ï~K  ‘¯Q#É.< ·QJ Ê.J¶Qt ‚< Ê.< JŸ“ Ã{<<. ½JÃ{‚X= JK Xž¬  ‚ ò‚7)X+ä.0‚> Jò <ÃJtX< º{ž  XÈž .  71%3X5È5Ö5<4È@XBXE¬F t7AäAÈAf8È99¬*º* ¶º 0^iK ÃQ#µ.. ËQ¬ ¶.JÊQ< ¶.‚ ÊQJ< ¶.< JŸ“ Î{»  ã =    J . š|tº ¬ f ã =    . . .mŒ|‚ ê‚‚XXÊ<t  ½|X <  p¼ K ŸS#Ù,. §S.Ù,J =¦S< Ú,‚ ¦SJ< Ú,< JŸ[ °| “ãJ óºJ Y J < K <X(X%<v ƒžJ X¯=žJÌ~t<<<X<§mttóZ€=X=Xò!/ƒ X¬ Y žf ˆr&X Xff ‚Þ~)  ä J<)¬»X&„X?º ­/t,Ö# s\F=!##@ò=<¯î E B ) Út¢ KsfJÖXK±prËqyÉfžXe‚<f g '  ó¬fƒ U$A!fƒº  zäV2)žü~Öºƒ‚'“.g'‚‚òòô$f'ƒ$f'ƒ› Xƒº'æ $f'ƒBXƒIXsX…XƒkX'!¬#ÅÈ Xƒ%‚"Xƒft$’!Xƒ'Œ~Ö$X¤rȬÖ$º!XƒÇ~‚ Y;u;Y7žÆ..XfÈX¬=ªÈ­=XY7X=HX=7IXt7“ÈQy‚yXY&XKXXƒa•X-wUM-ž-‚‚’1YWh, J<M J f+C‚ut2怂S‚ |‘ ¬».s‚‘u <º,„1ž.J<$ØJ*º5*:,***J1..J!Z$tf1JX<$XB!‚!!!X!<$!!X.fffÖ<X X#4$v< Xä.X?‚AÈ<?fOJ<¦›~ÖòXX fÈS3žòX-º˜ò  ž‘tXƒù}X Xž<Ž1¬.X1..<’2^ò1z¬1täº ßæ"K ‚ =‡R#ñ- R< ò-JŽRt ‚f ò-< JŸ“ :> ,‚Lî{J òJ. MÉ ƒ™t J. â{Jò ã‚XX‚Šº 0‡eK J =ŸR#Ù- §R< Ú-J¦Rt ‚f Ú-< JŸ[ :ÿ{<ƒ. ý{.J„û{ ‘ ƒŒt p<º °‡ÇvK J =Õ[#£$ Ý[< ¤$JÜ[t ‚f ¤$<JŸ<“ .žL[È Xtü~f J J¬ <K‹t wXX<XJwº €ˆòK  ‘àR#˜-< èRJ ™-JçRt ‚f ™-< JŸ[>š|<<æ,„š|JY× ì‚tX Js º  ‰¸_ k Yur=i ‘ f <X J “  J  ƒžX J J¬ä K‚ WZ žZƒJJ n  t < Zº!]§< ! x´[ ¬et J ràqo ¬yž JÅÖKgsY-KY=X=J X¬ <= v—t“ ž” X`X£uX¿rYK½ už .... o¬ Jòkº ò.Ö¬º8 ‚X‚ X äf¬ $«JK ŽU#ê*. –U¬ ë*J•Ut ‚f ë*<Ju<“ :>:‚LL fLó|’[Xí|JX<XX.Ö/ ¬óIK KštX Jâ|t X ž ÖJòJžƒ<tý|X < t < ‚ <šfòºóX ¬[#UÊX³#J» ò‚< ; ƒJ Y •• ‚ ·t òX<<\ ƒ L JžÈ÷   ^¬Xm<tX °’”o<óY¬J ¾Ž X ž J X J5X‚Nä‚ ’ ! =  ‚= JXJ “ò<‚æ  J=<ä;Xò ;XY J= J  ‚)< ;XY J=<JfX  ;XY J= J‚=  ¸ hZ ;XóXY =.<XJ ½… ;XY J=.òj‚ò *nò  º<t‚ìòòt Ct!,f J Ÿ. =<XJ#º7<Yº‚"*| qt(  äXšXžXxžXr.XœX )º‚Ötftz‚uÖ‚X ; ƒY ‘¬. jžÂË‘ ÜX#œ'. äXž 'JãXt ‚f 'J­… ñ}<.L î} ð}‚žJ   _.¬K=f \™$ ƒ„tf.J. d<t ó}X <KY "JKƒƒ. .$s =.Y= ~ ñXK‚~  ‚ó Ï#‚K ‚[#ö$. Š[ä ÷$J‰[< ‚ ÷$< ‰[J< ÷$JJu<“)"©[ ¬Xå$Ö ä  w# t f ò f=¬Ù  • < ­ = K ä ¬J = 0 ¬Xò = !H6ºf&X¬´]Jó—~ ¬<èÈ" K Kž‘%#u J#Ž  ßu# t f ò f=‚# È f º t  ÈXfÈ  v u  òXf6Ê X f.<t í~Xý^ÖKsuJY"wT=tK"] à"I=XÚK]z<wU=KWKJKLrLJuJXKJ„'WMGMJ\uzutxOoKKsKKsKKsKLrKMqKMqKMqKMqKMqKMqu JtXu JuXu Jvt{w9?Yƒƒƒ‡’ .VÖ+uXñ)M›>)&tº ‘³~º äÌfVžX;‘ ‚K J =ï\#‰# ÷\< Š#Jö\< Š#‚ ö\J< Š#< JŸBJ y<ÇX<´u„ X  :t<¹\Ä#ºÅº .r º ª€cbóY †bè F xF †Yº ·|‚Ks=-/YÛ%A ...  rA ‚Ú"’  k=XkfX~ ä g - =  J Xó×{¦Ú{JY¥ä0X ¬K‘sY-YX= %º  J¤ J–ƒ„ XJ¬ ‚ <M X¬ º = J  ’!X¬X J; X J; X4 f º J Xnf   ºØ  Xä‚ v  Xò „ ¬J<J È É»)   ÈÛ/  Xä‚ A  X ¬ ‚ < ¢ MYX .J J ‚ ó ò ò Y ä XäX É J X X Ú/ j XÖ # ‚!XºX '< <’fB¬ ’‘  å  !  ×  ×  J £ºÈ JºäXYWKòKIJºKòJKòKJ €L< Y& &K =!J L  J £   XX X  ºÖ< !!NB¼ä ‚ Át.qÈ.¬XÈ.N Ät è  È×[ u   º×X¬JXŸŸ  dÖ  È+Ö-ò0X2J3ž6BDXG¬H-TºUòXXY<\J*\È ÉL ž¬9X ¬J' g  º)Ö +‚-ä0X2J3f6BDXGžH1TXUòXJY<\J.\È ÉP ¬;J ¬J *Xä  " XÖ; w# tä00 wòå  hä %e%&H u  Ÿ i 'fqòf!ò uä)ÈB.!ˆ*.!W*.!Ç*J!«*ò<  ÈXÖ#  ò òka5lt7È:Ö; 5®7º:Ö; Hvtdjf)ȃ¬ )f00-ZäV01Z(V8 \(.Xò<ÈXžf‚‚ò<È  tCSf C„Sf,þ9åL0 ,$;×P.¬/ÈóX=”1X‚u$TXT¬uTXTfu !Y€=4v% <¬ »-XÖflȯ‚X¬.ÈXŸX<t õ}XåefKËt ”Y¬ . K  ž gs =«X¥‘. i‚@ × gX<—‚ < äSJ ,J<ÜS# ,ãSJ ,JãS< J< ,< J J “ Å|< »J‚Ä|J¬VÓ)jJȺJºKJ€>× KJ¬ÎtX ³|¬„ :Y‚ =%ž%<J J “=< ;K¬Ö = ¼K e= XJ ¬< y¬%. J ‘&u «<u<XòXX´t È|Xtt0< I—º < óTJ Ž+J<ëT# Ž+òTJ Ž+JòT< J< Ž+ ;< J ’ â|<œXZá|JœWã(jJȺJºK ã= X’=  <K=‚X¿f=X  ¿| Ë U=º JJ Kä< u X X  T£‚"I ¬`<XòXJÖ ƒI =<<• È<!&ÿ Öq¬ É tº lyÖtt˜tX @ÍŽK J =ÙU#Ÿ* áU<  *JàUt ‚<  *< JŸ[ Œ}<<. ôJŒ}‚Yƒ ¬ J¬ <úJt tJº àÍK  ÉÅU#³*< ÍUJ ´*JJÌU< ‚f ´*< JŸ“ :‚}<€< ,„€}JJ þ.Z€}[9=X= ž$< JK¬„¬ JJK h  ŸÈ ¨^ ¬ ¬ <†JžX<. â|Èž&» t ’­  X 3È+j¬Èy ¬ ȬZX!J ò‚å1&! t q‚žótX àЫK ò ŸQJ â.J<—Q# â.žQJ â.JžQ< Jf â.<JŸJ  <> L< N8>L s` z z <ž{<.<È\î=/.ç Jü=X .fI‚ fN“ fN“ fN“< .J ©{Ö '- =  X XJöJ ýºX ¾ºÖJ Ãvt òX  X.¬tXtèVX  ? Y Ç $.J XJ-¬‚<hK  X j< Ø hJ*< ‚Vj tt Ô¸K »[#½$. Ã[ä ¾$JÂ[< ¾$‚ Â[Jf ¾$<Ju<“#.J¬X°FLž¼ -[ Xté~t‚ JJ X<.ž¬LtXX..vX#wttX>Jž  .¬.n<tX pÕ‡a  K J X žvX f K  < žƒfºX_. LYÿ30Ô3‚.x‚<º”ÇgW.gWò3#V Ÿ3K W3­:ËäZ:J  [©= .¯ 9?X< <X Ö X uŸ=ff.`J ó X)º Ú %   Ÿ ’t  W KÈØ  f Xôãä l "I =  –ƒž¬ Ö X’‘Iu f. sfW KX‚Ø ‘jXòXÈ fò“yäK y.  <<ž X"_óX 19[X[f[q½J u t<#f JtX J. qº'Y tg8ò«)öFj f*X °ÛBºLY=XJ Y È ‘J Y±‚ .... œvä.P&È ‘JXX `ݺsKg JYg< JYg J X zJqt J.Y É X j  ž· tôrZHØ[·= X ¯q? tÊ ó KXX sž× ¼J&“q= 6 Yá ‡ <  BX#J Ø M #ž×J#Y V#L H'L?J j¬<j.C¬:.‚ »X¬ ? zä ­- =»' º'ºÖäf ( XsX=#hJÊ˃‘ž/sgW"<ò  òu “tX‘ ¼…f$tÀò"¦~òKÌ[>J dL­ -= J®  t X J¢òLÈ 6ºJJ6f¢ æJÆ> Y I=fJ ’¬È@ J X J ž  < < ’  J ¡» J =J J =J  » J =J  ó‹h- J žJ.™=ž"cä   Ö ¿tJ Áxr¹~t u Ê ¬q@  tJ "3J X<J< ‚3< ¢ Ée< X/»óóóóóŸh0¬Xñr ut  ½ Û~$ ¬ L!‚  X!à.< ¢!ßÈ"d‚"‚!X¬J!߬ú~ É-J< L<"XXJu!ºu!‘X8J*J&X!º!Ö¡<!¬! =XKX………….‚*XCJ@XƒWåk¤~ ¶jtÊ‚Y(J µjJË< µjt(ËÖ µjäËXJ³jC 2È àhX¬¡%Ö\wº±=ºÈv€LH.Y-Kô:=r>‘KeuWuY=Iå<J="ƒ#G4<Jƒ Ÿ" ¥ /%’XźJJÿkJ …¬õnY(J‚(t䞺ýtXºtJ X::‚  fÄnf¼t =½nY(J ¼JÄn< ¼t(ÄnÈ ¼ä¬R  ä  ‘È‚< ÖXJº‚ Jäò J Ö È   Y ‚‚JJ< tòl ®€ Y ó ‚J‚J<7 È< ‚7t  º p ä äp ¤   X‚Xj(X*X-ž.ºJ) .!! åµXXt ù}XXg<ò Wg Jþ[" s É; óLX 4<=C Xwf=XK….äóž w; < xX`[ žX<f [G [V Z9 = r >   Y$ \ =I = v äXX¶ h ƒŠž   ƒ å  ƒ æ ˆz<[9 >(ž?JJ?XX= YÇ =Z%J. nžC ½¬f X = .Æ >Y  –è<‘% /»ƒ ¿­ež X… ¼,É ‘%ã \ž   !ä%ét‚u/»‚¾~JØ‚%.< K;ó ·X# J Â'‚ ¾XJf Â'J J<u“:>:„L8N8>L>V>ã}J›JLà}¥ Ý}  ’  J ¡. =Jò v—E•‚)]F”*@ î ­ä   É  „    t ‚<.J Ç}X‚. !žt<f YK< "E#•S#y;F#¾b#†8#Ì8#¿í oÖ¶ZXº  YK$ ƒyJ»Y=Y<<ÁJºY=Y<<ƒt ¾fX<‚ó‚/s/s=K ‚X(X4J(<4J%X[  Jt \ýy=Y<< ÿJ®  zz  z.‡zÈ‚ƒ‚ÉYs=tK‹ < <   ‚  º4XJ#ž4X¬  L  XXKX O  X ‡ !  ”‚ r.ƒX‚ KXX< Sž × <J ƒÇyK ¶Xt[cMY IY <.\f å K X‚ Y× uº×*VJ*. .#g‚J¬OJ1.  p‚ƒX‚ K è< XŸ+‚=sK.Y=Zd= JK ;=YI=Y Y <  fæ‚ ... rf1 zX1^8I µR ØW™(ä ÈP#°/ ÐPJ ±/JÏP< ±/‚ ÏPJf ±/<Ju<“ .‚LJžJ„ z x.[ ¬N[  t{Jƒ… JJ X<..¬LžX<J.itX  ¬  ‚¬.e<tX  «_ž=Z€=X=Jòu‘ƒfº  .,ó,,,, ,,ž”X ƒ   ‚t¬È .  ä<  œ~X < Û ..f ‡~. È ÜzJY f ÉyX  % X K  ج nxXYJe =X K.ž~uJK. X X K(<‚Òf °~X X ƒ&<‚Ïf‘~t  f×tž¬t? U<f èˆ~Ètò*‚ Û<*¥~XÒ< ³~X X M X ƒ+<‚Éf ¡~t×)¬Þ ´~t,<JÌ‚(±~ Ø<(¨~XÏ<.´~È ÕX.«~XÌ< ¹~¬ X … X … X KtÀ‚-·~X Ò<-®~XÉ< Â~X X Kt½f À~X ÉX ·~XÀ< Å~X ä K"< ‚ºJ  X º~X Æ< º~X½< È~X ä K  ¬ ¬ Jä 0%#f%º#J< g´ X"¼~X R ä Kt±f  ¥~X  * º< Æ~X±< Ñ~X ä ƒ¬®X ª~Xºò"Ö ¬"¬0ò%0  J ä Kt«f ž~XºX 4 ·. É~X®< Ê~Xt   ´< Ì~X«< ×~X ä Kt¨‚ Ú~X ä KtÅ ±X Ï~X¨< Û~X ®X Ò~X¥< Ý~X ä K J)t%J i ½ ä K J)t%J i wº "Ÿt æ~X "˜t ë~X ä K ‚)t%J Ÿ " ä ƒ ‚(t$J  ‘›KY‚žtÈtž"tOÖÖÖXºÈ‚åKJ€L»<hK=J MXòX J ò  tí ŠX Xž¬ QwºX¬)OXX¬   å =ÖXpXXXX‚X <0ÖÈ7J::ò u ‚XpJtÈ  ä ƒ¬c¬ÖžX‚JJfºtf#t$*X*‚*J*J.f1ž5ž8X=Ö? CÖF  #ž.>JEJó:ä:¬ ž Ö:ºò:tÖ-NtÈc2jžäO‚O‚OtOJS.VžZf]X,tfwÖdthžkX.Xf  ò< ŽXé< ™X ä Ltƒ ƒ 1 ä LtyÈ î< ’X=^ çX ™XÞ< ¤X ä Kt Ê ä KtÅ äX œXÛ< ¨X áX ŸXØ< ªX Xò ¥ !&ºä ƒä ƒä ƒä ƒä „ ä!‚ä ‡& × < ƒt‘%+/l.­ ¬JÆä  ÈŸs ZI Ƀ -YX¿ä ‚-¬*ä ƒ¬ q¬  º ºä ˆ   ¬ .Sò+ä LtJ. f+ä M  ¬ J#ž ØÖ‚ Ì< ´Xú ­Je =X u Xȶ ò&‚4 ó × Ì< ´XÃ<&»X#ò „  º  ¬ä  ‚ ä ƒ$J"X$¬"J< g, @X É< ·XÀ<EXä ƒ Ã< ½X:X±Xä K ‚)¬%J ¡ºä œ Æ ºX=X ½X$ÈJ v JXJ .<  ×  "   g   g‚3 ³X  Ët0JX X0t J0X ò¢žK J =·R#Á- ¿R< Â-J¾Rt ‚f Â-J JŸ[ :@:> *¼L ‡|J -öt>†| = X KJ­€t <p º `)x ¤Z#Ô% ¬ZJ Õ%J«Z< Õ%‚ «ZJf Õ%<Ju<“.‚LJžJ„“žN“  f³~‚! J• J¬=’ XKã u" Õ "¬LtX JJKtz vX É~¬‘ ‘  !è T ? Ê ôKã K0zt ± +ò. ~º¶<tX  ,†ds st XY=X= ‘È KJn– Ö“­YX<“J#<  Y =  °9 =IYY/ô=KWY=)º¬Y#ZrZ g$JXäðuJYK$ J" Y$äïuJYK$Ž J" Y$äîu.YK$ J" Y$ºíu.YK, J# Y,ºìuJYK*  „  ‘J»"""¬J  Ö%OJ%o#f „­;=<£KsKÉ ¬ž <"  fž ¥. ¼ 3 (¯uÑ .<­uYYÏ ò =. ­´uƒ‘<<È M trXw­w  ‘ WtKX X ..J ÿ~¬X5øò g  K" =!x ê~º×ƒ‚f ‘×s‘X%(¬ Ú#c ½ ¡ 3d‚-È­ Yò»<’XÙ¬J ‘"»<YäžcJ #.‘ <#ž JŸJ Ö.‘ <#ž J¡fYºõuÈX ¾ —Ö%(‚< XtJ(% ØK ž\#Ú#. ¦\fÚ#J =¥\t ‚f Û#J JŸ“ :> ,‚LJ‚tL>:>:L£J4J4‚ffä­  Jã¬t X.sfº8tX ð5BK ò á\J  #J<Ù\#  #Jà\<  #J à\Jf  #< JŸ’:<L:LLbZL>z<Z>´.ÌZÊGJ( ¬ J 1 ­K ‚XI×J=J :„:L ZL×zÉ=YÇKYÇY7YW=7Y7K  J XJ ‘¢Xr½qk Jyr½qk JÜ{ Xž û+Jºwäº.ÈÖ .J.´z‚‚ ×JÈœÈX¬êz. úT‘Yƒ+ ùT‘†+XúTò…+XYôÖóLdZðLtYJLUK‘¬¥Ë  É ã= X’= =J? žyÇWYK‘vT¼L~Y X‘X žK ‚IY ƒJÈå ­ <=•g X< žJç<‚hJY"Jk<Y;KK f  ­ J5<!ƒýÈø K ’  ­Ÿ<I<ƒsJ )­ùfÖ Ú<X óò   ¬ < …  ­ ;ºå{å(J ›Jå{J(ž È™ º¬ << K ;XxJ; XJ#ˆhüt ¼  Ü~¬¬ ¾¬  ­‚º!g4‚Ÿ¿e¿ h ¿eXÈ ä WKI"Ï~ž <!1"‚ ó (žÈ $‚JX¬ K u KX  u + ɺ‚ ¬Ñ¬!$«!Kf½û}¬•ºë}X•‚   ¯. f"º g J Pž §}ò Ùº ,ÑÈ Ÿ Ku  Yf Ö   Ö  Kê >XJÂdY=‘<<ºÁdY=‘<<»¿'J¨dYK Ô«dX ÕXK'§dK ÕK)'I)K<9W%J —¬š} ¿t K ƒ  ‘òt ›~º @J Ö.NK< ŸL€ ƒ „ž‚<)< ¬ˆºzòˆzžˆfu‚ƒºÈÈJºtâK>Y¬º8p) J×u<+ž(J¡‘Q=;Q­@X;Q/s?%<‚È‚‚   ­¬XJ8º)JY“K»$   <´Ç Ó  ƒJÈ    © h%€  ŸÖ / &¬òJ ‘< ®XfJ ¥ ‚#K ’  òXJ¾|X K¬È” #J <‘žt È. <   <   : K   ‚ g¬Y ’~vØJºXºÈ»IfXK ; ®¬<s õ= -\ qJ u< XJº< < †ŠeYY ò>  u7 E    gä< ËóJ uA;‚J­! X >    º0 ò ‘VLV LV2È Ÿs Kºº„  ž   ;¬J0 ‚0 ‚J/L åäžJ Ig=Bf9JBf9J¹òW %N¬  %Ö‚  ºÈ ú xf.X J ‚$ \ñ~‚™ ¬ è !° ,L €Z,.f ‘AKò¹ ‘A l  ‚ ‚ ÷’ :v V Ö X y    ž ¬g0  ztž l<  ÉJJJ KtJ¬É"t<JÉ;º.È‚  ä  “  Ù  å " -ÊÈ ®>  ‘­–ºÈ JºÖKòJåòvâYX>Yk-'ž$Ȧ֬ Ú>&   :  M1‚¬" ‚ ‚;<4X/¬313X 3­33 3 Þ Ç¬ ‘‚@<%I J%  t% t ‚ø`J ‚Jò ˆX u J t ‚õ 8   Ȭ ‚ <2*/*< .¬ ä gHèufH˜ ‚ Káuu(J ˜ Jèuò(ž ˜ ž(èuX ˜ ‚ … –XX X < ÈÖ%X,< ƒ< ’ƒ.€ $X. ÿ-  YDÖuJDª ‚ gÏuu ª J(Öuž ª JÖu‚ ª ž(Öu< ª ž(ÖuJ ª ‚tºX‚ž ‘}È x׬#¬‚: !  K  ŸJ<ºÁ|‘X$®f ÜŠ}òXJ = KW »X= I¬‘‚3<òP!J I9ë<2ž/J – Z ¬(><(ttHºDzät ‚ÈÖ Ê‚Ê}t!:;!=‚ž ¡% ¬‘‚4<òR! I,ò-“*t‘0‚t0 ‚JFyžV<J £~X=;g hé J ¬8<J¡89.=å<;.Y$žt‘#,J,Xž7t)<0œJ$!f$<.f,äõ|*É!‘ƒò SÉ® ¬ef.¬<ÔJ  ‘Ö»;¬§eJ J"Ùsu.f"Ⱥù É   ‚ ­ ‘’ä>VKr=<¿~r®eJ‘ó}žº .fJî9r¬ ¤}XòÙ¬/  gº‘ ÕòÁ{ äZ€ >fJ ” ìÖ$Ü »¬«~)K#;)K5W J. ¹tIgAtt ­O&u"tOI ƒ"&<( ŒŸ  ¬ XX!‚'2æ~/ò ä}tò ò t,½)Xƒ"&‚õ~ä L¯7]XJ7.ž7ft7 ‚J 1 ®tž†t £}®$X$<KI=K*<‚½X¬‘$yž_u%¬ Y; u/‘JY  Ú×÷z¬ò æçäÚ|t ™t;Ó~8ò;‚Ö Õ}‘º ÕÈ<ÕJI‚t=f1 ó" ×  x<Ö…< ü #<fXJ=!X¬  ‘ I u ž   ,t   -  %  = ®ò ù}‘X..§ò¬J4Ùä·~(´}Jž¬‚ ”X¬ùJ‚‚Xž Õt¬Z+ ãX‚XXX ß  ž/t!× #!J <"‘<<"XJ ô!2ŸJ#I=X< ËJ#X¥f¬Ê|‚÷~fXXIŸ.m %c')è~<ž‰."Ã|ÈXXX)¢Èë T¬. Ç uÈÜ~  žÒ & ‘f‚ +ò %.¾})<'Jž­?z¬”1#X1JÖîcX‚X‚X ŸG1G<  F,ÌXH¬µu!Jv! <KXé¬ oJ JJJfH †æ|tšJ YXOžž=`‚.$÷}t‚|XÖ„fD  Öâ=¬t:‚‚ “ ž"È.!ò É  9X I= ‘‚ƒ'‚= Ý ³ºÈÈJºKIJººX‚XYWKòKJ €> ƒ% <%H = J >Y'›'Ù 9 Ö '¬XJ < ºÖ.V"Hf !¥< X­XXXXtX‚X ¶}ò<X‚XxX4 ‚tÈf ‚t žJ.¼¬X;ò~ƒH f=¬t:‚‚ ËX. j(%H uÖÜy>åÖJ¬fº ЬX‚X«~%J%HJ¬ ÉXÖg"‚ZŽ >g È ä X Ö /1yž¬X1X&¬1ž&<‚t¬Ûy  .°Xo.< 'QX›'U'1‚"f a ‚Xž.‚žž ¢z  I » s g J òH®JEž­'äò­'Ç=Y/"z‚‚¨{º  Ð ò ‰ Iƒ sg J.‚“}tžõÈ #È]< $<\.¬"Yƒ0XP<XX»Ç<YYoX  ¬L j †< € „  M  X <   ‚‚ ÃÖù~È YX L  >ŸžJ‘<J b b<Ù‚ [ž žž žº‘<»#fé~fJJ  Ÿ&XžJ9Ö‚ X ƒ‚  È Z v’Ìx| 1È H > Xf Õ~È>€ LJ K0]==I£!¡)AX&Qž>>&¬=;Yä‚,ž)g=ž Ù KŸgWZ/J,žƒ&c¡E(=‚  ¡Ÿ -ž5xf2˜5J&:”ò%@-AX*P¬KJï‚ A Ke< = ¿ Z f ¼vËË=è]È ž —"  YKJXuIÈvtâ~òJ 邺<6€È“> ¬t¬> .!uÈ0)5f)JAf,;  #K>1.Ö   K¢Ÿ -ž5wf2 xJ&B¨a< ­ÈÑ`°XÐ`ž : J„HZºL<ºv.tv ;[ "x ó ­„tX .J.of TXt>  äfž‚p<tX  “ïN  $<Œ $p @¶ NX mž.  » Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y Ç<I u Y ÿ<ÿ u Yÿ< uYYYYYYYYY Y ÿ< u Yÿ< uYYYY Y ÿ< u Yÿ< uYYYYYYYYYY Y ÿ< u Yÿ< uY Y ÿ< u Yÿ< uYYYYYYYYYYYYY Y ÿ< u Yÿ< uYYYïnX<w ¤ºHZ X p=¦žž‚. Ilaststatvallong long intPerl_av_pushold_parserPL_locale_mutexcxstkblku_oldsaveixIorigargcIorigargvthr_userPerl_sv_catpvn_flagsin_commentsi_errnokeeper__pad0tbl_arena_next_spent_sizeIin_utf8_CTYPE_localestrerrorhostentls_prevclose_parenPL_no_localize_refXS_DBD_____common_FETCHlex_stuffIlast_swash_hvxpvgv_readdir_ptrIstatcache_freeres_bufIcompilingIdbargsnew_perlblku_oldspsub_error_countxpvhvPERL_CONTEXT_asctime_bufferdbi_ima_stInumeric_standardsigngamprevcomppadIe_scriptPerl_newSV_typexhvnameu_namesv_u_servent_structreturnsPL_sv_placeholderIpreambleavDPPP_dummy_PL_parserIDBcontroloptionalxpvioxpvivtbl_maxPerl_sv_isobjectsi_tidcol_disp_sizeImy_cxt_sizeblku_old_tmpsfloorcol_nameImain_rootxcv_outsidedst_avblku_type_PerlIO__localeshe_valuPerl_sv_mortalcopy_flagsIutf8_totitle_spent_structnamed_buffdbih_clearcomwant_vtbl_hintselemPL_freqPerl_mro_meta_inith_lengthop_firstXS_DBD_____st_fetchrow_hashrefIdoswitchesrt_comment_netent_sizedest_nodethrhook_proc_tnext_branchPL_op_nameblock_evals_port__in6_uPL_no_wrongrefin_port_tgp_refcntitem_svprev_markIdef_layerlisttmp_svperrsvtmpsvresultsaw_infix_sigilIrestartjmpenvsave_lastlocIwarn_locale_spent_bufferIcolorsmg_objje_old_delaymagicfallback_amgmulti_endstrchrPerlIO_list_sPerlIO_list_tCOPHHfields_svavscream_poshash_svxpvmgIargvgvdespatch_signals_proc_ttop_sirshift_ass_amggetdate_errxio_flagsIsharehookold_regmatch_statexcv_xsubnextwordIminus_EXS_DBI_dump_handle__va_list_tagIcheckavpad_1pad_2ImarkstackxpvnvPL_bitcountIdump_re_max_lenxcv_flagsPL_warn_nlIstatusvalueIDBsingleutf8_substr__u6_addr8min_offsetPL_warn_nosemipmopst_atimsival_intIlast_in_gvPerl_cvgv_from_hekIreg_curpmthingyshare_proc_tIhash_rand_bits_enabled_call_addrlong doubleop_privatePerl_av_filllex_formbrackSVt_LASTdbih_com_st__chsbu_dstrIrunopsIpsig_pend_ctime_bufferXS_DBI_traceIcomppad_namePL_magic_vtablesImarkstack_maxsbu_itersparent_call_depthsi_type_IO_wide_datainternalIreentrant_retintimp_dbhinner_refimp_sth_stINonL1NonFinalFold_join_hash_sorted__spinscode_svmax_amg_codeincrementstrcmp__blkcnt_tPerl_gv_fetchpvPTR_TBL_tset_err_charxhv_max_protoent_sizePL_no_symrefhent_hekxhv_aux_flagsPerl_hv_clear_grent_ptruse_xsbypass_getlogin_bufferxivu_eval_seenPL_curinterpdbih_get_attr_k__locale_dataXS_DBD_____common_rowsdbih_com_attr_tPL_hash_seedpos_flagsIstack_baseexecskip_dispatchImax_intro_pendingposcachedbih_setup_attribop_pmstashstartuto_gv_amggroupsbu_strendsmart_amgTraceLevelre_scream_pos_data_sPerl_dowantarrayset_trace_filevaluesvcop_stashoffXS_DBI__get_imp_datas_addrst_sizePL_opargssge_amgPerl_gv_efullname4pthread_key_tIperldblastparenhintsi_addr_lsb__builtin_memsetIinplace__locale_tweakenitxpvuv_pkeyh_perlXS_DBI__svdumpDBISxIDBlinewant_vtbl_nkeysPL_bincompat_optionsatoisin_amgIsv_arenarootjumpPL_uudmapgp_egvnewvalpadnamestatesxio_bottom_gvouteris_DESTROY_wrong_thread_unused2laststyleIphaseXS_DBI_sql_type_castyylenXS_DBD_____common_DESTROYstrncmpsubbegcos_amgimp_xxh_t_asctime_sizeIblockhooksend_shift__nusersPerl_get_svsbu_oldsaveixdbi_class_pwent_ptrIosnamen_addrtypelex_casemodslex_brackstacknumbered_buff_STOREIefloatsizePADLISThtypeIpeepporig_hPADNAMEmro_whichIregex_padretopdbih_com_std_stpkg_genprogram_invocation_namePerl_sv_force_normal_flagsxcv_padlist_uminmodPerl_PerlIO_closesp_pwdpIutf8_foldclosuresPL_checkdbih_com_attr_stIsv_yesparenfloorPL_op_private_bitfieldsFetchHashKeyNamePerl_sv_catpvbranchlikeJMPENVImain_startqr_anoncvIstashpad_archdbih_innermy_perlPerl___notusedPerl_sv_setpvnIenvgvIperlioIpadname_constPerl_xs_boot_epilogpow_ass_amgXS_DBI_looks_like_numberXS_DBI_dispatchmult_ass_amgIregmatch_stateprev_rexXS_DBD_____common_STOREIisarevIutf8localeXS_DBI__new_handleIsignalhook__ownerPL_Noop_optc2_utf8__ino64_tgettimeofdaysa_family_thv_lensockaddr_inarp__pthread_list_tneat_svpvsubcoffsetsvu_fptie_mgyy_stack_frameretsvIdebstashkeylentopworddestroy_genmy_cxt_tS_CvDEPTHpimp_mem_namewant_vtbl_ovrldreg_substr_datumsi_stackxpadl_maxInomemokdbi_bootinitlogfp_ref__uint8_tfirstposwant_vtbl_debugvarS_CvGVname_avPerl_warn_nocontextIdiehookprev_recurse_locinputany_ptr_readdir64_ptrCLONE_PARAMShook_svpIcompcv_vtable_offsetconcat_ass_amglex_repltimespecskip_meth_return_tracePL_interp_size_5_18_0XS_DBD_____st_fetchrow_arrayPerlInterpreterxpadnl_max_namedh_errstrimp_fdhneed_dbixs_cvPerl_hv_common_key_lenclass_stashPL_check_mutexxpvlenu_pvXS_DBD_____common_swap_inner_handleILatin1imp_datasvst_nlinkIminus_Fre_eval_strIscopestack_ixsp_maxIscopestack_maxiter_amgIminus_aany_pvpIminus_cIminus_lIminus_nPerl_die_nocontextIminus_pIargvout_stackPL_op_seqIinitavPerl_newSVpvnPerl_newXS_deffileimp_gvsin6_familytbl_itemsis_fetchPerl_ophook_tdbi_hashh_trace_levelcache_maskPL_no_dir_funcfirstcharsi_is_earlierlogfpImaxsysfdIlocalizinglex_sharedservent_crypt_struct_bufferPL_op_private_labelsrxfreencmp_amg_IO_save_endpw_namesp_lstchgcurly_getlogin_sizenomethod_amgadd_amgorig_defsvPL_sig_nameIunicode__fmtblku_subqr_package__errno_locationneg_amgimp_meth_nameIrestartop__timezonePL_thr_keygofsin_quote__mask_was_savednew_num_fieldsPERL_PHASE_CONSTRUCTIlastgotoprobecop_lineIsecondgvsuffix__locale_structIsavebeginwant_vtbl_vecinitializeddbih_fdc_tXPVAVdbih_eventto_av_amgmethtype_ordinaryXS_DBD_____common_statereturn_svSTRLENPerl_sv_setnv_mgXS_DBD_____st__get_fbavimp_dbh_texitlistentryabs_amgdbih_logmsgop_ppaddrxpadnl_allocIcheckav_saveIdebug_pad_IO_backup_base__jmp_buf_tagconcat_amglex_flagsIendavblku_oldscopespIutf8_idcontErrstrIcomppad_name_fillmy_opima_flagsIHasMultiCharFoldglobhook_ttmpXSoffdbi_ima_vtblimp_size_nameXPVCVerrstr_svdbih_htype_namePL_sh_pathxhv_last_randmark_stack_entry_sys_errlistPL_hash_seed_setregnodeintroimp_xxh_rvdbih_com_std_tPerl_gv_stashsvxhv_name_ustdinattrIperl_destruct_levelsi_cxixmg_virtualPerl_PerlIO_stderrpadnamelistoptoptinterpreterPL_warn_reservedPMOPimp_templ_flagsIstashpadixst_uidlongfoldimp_xxh_stsp_minimp_xxh_svupcase_IO_read_endxcv_xsubanyPADOFFSETPL_valid_types_RVIstatbufsbxor_amgsbu_rflagsxpv_curPerl_require_pvxpadn_flagsIstderrgvxio_page_lenxhv_eiterperl_memory_debug_headerxhv_riter_IO_save_baseIin_clean_allmark_nameop_flagsold_regmatch_slab__ino_tmethod_tracereg_substr_datalex_super_state_grent_structxcv_root_ustashnamecurlymsettingmethtype_canPL_uuemapPL_nanPL_magic_dataIcustom_op_descsPL_hexdigitsi_prevXPVGV_addr_bndsp_namp_IO_write_endlex_startsIsavestack__builtin___sprintf_chksi_codeImodcountprev_curlyxIsortstashPL_mod_latin1_uccol_lengthdst_fieldsIstdingvsvt_localsp_warnIcustom_opsPerl_sv_2nv_flagssbor_ass_amgCHECKPOINTrow_countXPVHVany_avsprintf_grent_buffersne_amg_cmp_strthr_ownerlast_uniparam_values_svPerl_sv_insert_flags_IO_buf_baseXPVIOsp_expireXPVIVdbi_caller_cop__uint16_tminlenretdbi_dopoptosub_atIofsgvTARGi_ivIdelaymagic_gidxcv_gv_uIcollxfrm_multPerl_sv_growPerl_gv_add_by_typetbl_arena_endIsavestack_ixnum_sort_svwant_vtbl_defelemPL_C_locale_objnumericsockaddr_x25SVt_PVAVsin6_flowinfoactive_kidsXS_DBI__setup_handlexmg_magicsvu_gpany_dptrintuitIbody_rootssi_sigvalhek_lenIcollation_ixtokenbufwant_vtbl_packelemop_nextopdbih_setup_fbavline_tmgvtblPL_valid_types_NVXPL_runops_dbg_readdir64_sizeIutf8_xidcontsi_cxstackyyerrstatususe_neat_svhash_svp_hostent_ptrsbu_rxS_croak_memory_wrapxcv_padlist_IO_markerresolveSvAMAGIC_offPL_revisionsvt_get_Boolsvu_iv__prevXPVMGnum_fields_mismatchIsort_RealCmpsbu_rxtaintedseq_amgdiv_ass_amgop_moresib_flags2num_paramsxpv_len_uIpatchlevelqsort/home/.cpanm/work/1637689469.60246/DBI-1.643Perl_call_svminargsXS_DBD_____common_private_data_pwent_structnextvalinfosvsvu_pvpost_dispatchXPVNVany_gvXS_DBD_____db_connectedshow_pathnot_amgIhash_rand_bitssbu_orig_IO_lock_tmethtype_set_err__gid_t_IO_read_ptrIparserxpadlarr_dbgstack_max1runops_proc_tany_hvPL_subversionstr_uv_sort_pair_stIpadlist_generationdestroySVt_PVFM__environxpadnl_maxIdefoutgv_lowerIstatusvalue_posixoutitemsnum_sort_pwent_buffermy_hi_nverr_buf__ctype_tolowersiginfo_tPerl_newSVivany_ivPerl_sv_2pvbytemax_offsetIchopsetIrpeeppoldcomppadPL_fold_localesbu_rxresSVt_PVGVclear_cached_kidsIincgvsi_markoffxpadnl_fillwant_vtbl_arylenS_POPMARKPL_no_usymtv_nsecnexttypePerlIO_opensig_slurpywant_vtbl_backrefIcurpm_underSVt_PVHVPerl_sv_backofflshift_ass_amgSighandler_tpthread_getspecificsvu_hashin6addr_loopbacksvu_nvsband_amglex_inpatlast_lopPerlIO_printfsockaddr_ax25PL_isa_DOEScan_methptr_tbl_arenaSVt_PVIOPerl_PerlIO_stdoutSVt_PVIVfilteredIlastfdXS_DBI__st_TIEHASHXS_DBD_____st_DESTROYwant_vtbl_collxfrmPL_perlio_fd_refcntdbi_imp_dataIeval_startsv_for_cacheGNU C17 8.5.0 20210514 (Red Hat 8.5.0-4) -m64 -mtune=generic -march=x86-64 -g -g -O2 -fexceptions -fstack-protector-strong -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection=full -fwrapv -fno-strict-aliasing -fPIC -fplugin=annobin_readdir_structIlast_swash_keyls_linestrPerl_check_t_readdir_sizecn_lenmaxargsdbi_last_h__alignparent_comPerl_gv_stashpvPerlIO_vprintfPADNAMELISTSVt_PVCVPERL_PHASE_START__srcxcv_hscxtany_u32Perl_croak_nocontextattr_refdbc_s_ctime_sizerepeat_ass_amgop_pmreplrootud_inotv_usecIsavestack_maxPerl_newSVnvXPVUVwant_vtbl_arylen_pxhv_randPerl_PerlIO_setlinebufIlocalpatchesIsv_rootSVt_PVLVcopy_statement_to_parentp5rxop_nextPerl_looks_like_number__saved_masksvu_rvspare2svu_rxsockaddr_eonerr_iany_opdbi_ima_dupIcurstackSVt_PVMGIpadix_floordbih_setup_handlesi_statusxpadl_arrh_addrtypepsvp_strerror_sizeIdelaymagic_euidXS_DBI__var_FETCHbufendPerl_newSVpvlex_inwhatany_pvPL_valid_types_PVXXS_DBI__install_methodatan2_amgxnv_nvPL_phase_namessin_zeronimaIopfreehook_protoent_ptrIunitcheckavsvu_uvPerlIOlstrtolsgt_amgto_hv_amgsrc_avxpvhv_auxprotoentmg_lenImemory_debug_headerslt_amgPL_no_modifyany_svSVt_IVItop_envwant_vtbl_sigelem__blksize_t_IO_buf_endPerl_sv_setivshort unsigned int_spent_ptrPerl_av_fetchbool__amgPerl_block_gimmeItmps_stackPerl_safesyscallocyy_lexshareddbi_build_opterr_meth_nameoffsPerl_newSVsvIseen_deprecated_macrowant_vtbl_substr_IO_codecvtIsv_undefIpsig_nameLEXSHAREDclone_paramsperl_drand48_tIgensymPL_foldIregmatch_slabop_redooprsfp_hostent_structstart_tmpxio_fmt_namesvt_lenresponse_svcop_hints__lenPerl_markstack_growdbh_outer_hvIerrorsusage_msgPL_no_memxpvlenu_lenh_aliasesimp_sth_hostent_sizePL_Yesop_pmreplstarthent_refcountPerl_newSVuvsaved_copylex_sub_inwhatany_uvItmps_floorPL_do_undumppathsvIstrxfrm_is_behavedcol_precisionxpadl_iddec_amgint_amgimp_mem_stashIbasetimeIop_maskIsighandlerpunreferencedcheck_versionxpadnl_refcntIUpperLatin1mro_linear_currentxio_ofp_hostent_buffercop_seqmulti_startop_pmreplroot_shortbufSVt_NVPerl_gv_fetchfileIDBtracemaxlenpre_prefixop_targIbeginavje_retPerl_sv_setnvresume_statePL_dollarzero_mutexIsv_constspw_dirlex_casestackop_lastopmethod_pvIsub_generationblku_evalPerl_sv_incfloatwant_vtbl_isaelemPL_versionPL_no_securityPerl_sv_rvweakenIutf8_foldable__countunsigned charsi_cxmaxmulti_open_killsubtr_ass_amgst_rdevLOOPILB_invlistimp_sth_tbound_avSVt_PVPerl_croak_svparse_trace_flagsdbih_dbc_tmeth_typeswant_vtbl_dblineps_returnPerl_sv_setpvREENTRImess_svIglobalstashImin_intro_pending__suseconds_tPL_perlio_mutexexpectoldlocIcollxfrm_basethis_tracewant_vtbl_envelem_old_cached_kidsnew_stmt_svcopy_amgIutf8_perl_idcontcx_blkXS_DBI_hashIstatnameRETVALi_avPerl_gv_fetchmethod_autoloadmodulo_amgxnv_u__uid_tXS_DBD_____st_finishsin6_scope_idblku_gimmeXSUBADDR_tPL_valid_types_IVXPerl_sv_freest_ctimrecheck_utf8_validityIutf8_tofoldxcv_rootISB_invlistblock_formatkv_sep_lenin_addr_top_sibparentPerl_sv_magictz_dsttime__dataPerl_savepv_cmp_numberold_namesvlog_amgxpadn_type_uIAssigned_invlistpeep_txhv_backreferencesPL_my_ctx_mutexPerl_sv_free2Isv_nostartingblockmethod_svminlenread_only__off_tperl_phaseIin_clean_objssbxor_ass_amgd_reclenXS_DBD_____st_fetchsuperhv_val_lenappendPERL_PHASE_INITPL_mmap_page_sizelog_wheredbh_inner_hvnumbersPERL_PHASE_DESTRUCTin_podPerl_stack_growgp_ioImultideref_pcsrc_fieldsIors_svstring_amgxpadn_protocvxuv_uIevalseqIunlockhookregexp_enginemg_flagssubtr_amgIcurstashgr_passwdsavepv_using_svPerl_ppaddr_tPerl_sv_upgradeuse_neatXS_DBD_____st__set_fbavgr_gidwant_vtbl_checkcallevtypeIstashpadmaxsi_overrun__clock_tSVt_NULLerr_cold_levells_bufptrimp_xxh_newfp_offsetIbeginav_save__uint32_tdbih_make_comIorigfilenamememcpyis_orig_method_namexmg_hash_indexsrc_idxlast_lop_opInumeric_localcop_warningsPL_op_private_bitdef_ixIcop_seqmaxop_pmtargetgvPL_veto_cleanupdbih_make_fdsvform_lex_stateIstatgvIdestroyhookcoplineavi_lastst_blocks_sys_siglistsbu_mzombie_stashsbu_sPerl_safesysmallocsave_curlyxdbih_set_attr_kIcomppadsub_no_recoverlex_dojoinxmg_udirent64old_my_cxtpgetpidgp_cvgenPL_utf8skipxcv_filePerl_sv_blessSVt_PVNVitervar_ugp_flagsxiou_dirp_servent_bufferPL_op_mutexparen_namesXS_DBD_____common_trace_msgIregistered_mrosimp_fdh_stsi_uidpw_passwdsqrt_amglex_allbracketska_avopvalPerl_mg_findIcurcopdbblock_subXS_DBD_____common_DELETErowavrbind_as_numpos_magic_old_offsetgetenvgp_file_hekPerl_hv_placeholders_getsv_refcntval1sockaddr_in6__nlink_tsecondph_comtbl_arymro_algsband_ass_amgxav_allocuplevelsi_fdccstacknparensPL_no_funcXS_DBD_____common_errstrPerl_av_shiftxpadn_refcntscmp_amgIeval_rootold_eval_rootnamed_buff_iterst_gid__ctype_toupper_locIdowarnyycharIfirstgvrshift_amgmg_moremagicop_pmoffsetxhv_name_countop_pmstashoffPerl_av_storePERL_SIMGVTBLimp_classop_staticshow_lineMAGICPerl_sv_newmortalItmps_maxmeth_cvoptargPL_latin1_lcwant_vtbl_packsockaddr_ipxtimevalIthreadhookPL_valid_types_IV_setblku_givwhengr_namestatementop_typeIutf8_perl_idstartPerl_hv_iterinitsublenkidslotsblku_oldmarkspxivu_ivIutf8_swash_ptrs_netent_ptrdbi_ima_twant_vtbl_regexpIpadname_undefpreamblingPerl_call_methodxhv_mro_metaproto_perlhv_val_uppercx_uoutputIDBcvPL_sigfpe_savedtrieIlockhookfdc_s__ctype_toupperPerl_newRVPL_inf_xnvuattr_svpPerl_keyword_plugin_txio_lines_leftcompflagssockaddr_isopthread_mutex_twant_vtbl_utf8stc_sasvpIin_load_modulePL_memory_wrapimp_sizexio_pagePerl_newSVsigjmp_bufpow_amgwant_vtbl_hintsdiv_amgIlaststype__ctype_b__listh_addr_listIutf8_charname_continuein_my_stashwant_vtbl_regdataxpadn_len_IO_write_ptr_strerror_bufferadd_ass_amgdummydbis_csIunitcheckav_savedbis_cvPL_op_descsi_stimePL_no_aelemlastcloseparenshort intifmatchPerl_mg_getIdumpindentIoldnamepreambledop_code_listxhv_keysitersave_readdir64_struct_sys_nerrdbi_msvIAboveLatin1Iutf8_mark_servent_sizesi_signoSvAMAGIC_onIDBgvIlast_swash_tmpsPerl_sv_2bool_flags__namessv_anyblk_uxcv_startacceptedgvvalIWB_invlistparent_impolddepthIutf8cachefactor_boundsprev_evalIpadixdefsv_savewant_vtbl_lvref_netent_bufferxcv_stashYYSTYPE_xhvnameumeth_name_svxcv_gvkv_sep_sv_markerskeyattribPL_keyword_plugincop_hints_hash_filenostate_svIcustom_op_namesdbistate_tlex_sub_replerrmsgsle_amgPerl_newXSxpadn_highre_scream_pos_dataimp_msvcol_name_lenhek_hash_ttyname_bufferdbi_ima_freePL_hints_mutexPerl_grok_numberIknown_layers_netent_errnoItaintingPL_op_private_bitdefsIcurcopIstack_sporigmarksem_svp__ssize_tany_booldbi_caller_stringregmatch_info_auxPERL_PHASE_ENDPL_interp_sizeIcollation_standardmethtype_DESTROY__glibc_reservedwant_vtbl_taintlex_deferxmg_stashPL_runops_stdIorigalenmkvnamesbu_maxiterssockaddrIdebugrefcounted_heIcurpadPL_op_private_valid__time_tleaf__daylightst_mtimwant_vtbl_uvars_protosbu_targd_type__desterr_changedlogicalIforkprocesslex_bracketsxio_top_gvtemp_defsvIutf8_tolowerPerl_newRV_noincdbistate_st_dbi_state_lvalPL_op_sequenceblku_oldcopperl_mutex_sort_hash_keysIcurstackinfosrc_rvIstart_envlex_fakeeoflex_sub_opstashesIstashcachetotal_lengthmalloc_using_svxnv_linesmult_amgPL_use_safe_putenv_IO_write_basep_aliases_netent_structin_mynext_offxivu_uvsin_portpadnlImodglobalh_errin6addr_anyICmdsockaddr_atka_rvregmatch_info_aux_evalxcv_start_uPL_no_helem_svPerl_sv_catsv_flagswant_vtbl_envbasespIgenerationIGCB_invlistIstrtabxpadl_outidxpadn_lowgrok_flagsblock_givwhenregexp_paren_pair__sizeXS_DBD_____st_bind_colcrypt_datapprivatecv_flags_tcur_top_envPerl_sv_catpvf_nocontextxpadn_typestashIin_utf8_COLLATE_localeIlast_swash_slenstate_uPERL_PHASE_RUN_sigfaultXS_DBD_____db_preparseop_sparelex_opst_inopw_gecos__pid_tparsed_subop_lastwant_vtbl_regdatumxio_typeyylvalPerl_sv_derived_fromdbih_stc_tXS_DBI_dbi_timesp_inact__ressockaddr_dlxav_fillhent_valimp_templPerl_sv_2uv_flagsIorigenvironIdelaymagic_egidgp_avauto_dumpftest_amgspare_padscream_oldsmg_ptrXS_DBI__handles_cur_columnXS_DBI_constantmaxpositem_idxtmp_svsa_familycol_nullableptr_tblInumeric_namelazyiv_sifieldsPerl_av_extendSVCOMPARE_tSVt_REGEXPIpsig_ptrgp_cvparamxgv_stashnetentsaved_curcoptv_secblku_u16Iprofiledatasbor_amgXS_DBI_dbi_profile__sigset_tprofile_t1gp_lineImainstackIcurpmop_pmflagsval2st_blksizedbih_dumphandlexpadn_ourstashget_meth_typeprogram_invocation_short_namePL_sig_numptr_tbl_ent_hostent_errnoop_slabbedscompl_amgIsublineIargvoutgvIwatchaddrIdefgv__nptr__gnuc_va_listhek_keyPerlExitListEntryxio_bottom_namecast_ok_profile_next_nodegp_formPerl_newXS_flagsIreentrant_bufferhent_nextcheck_ix__off64_tIunsafeIhintgvPerl_newSVpvf_nocontextPerl_my_cxt_initspare1Perl_sv_dumpsockaddr_in__jmp_bufIDBsignalIutf8_charname_beginErrCountblku_formatLongReadLenPL_ppaddr__dirstreamStatedbih_imp_rvsin_addrIXpvIregex_padavPL_perlio_debug_fd__builtin_strcpyblku_loopXS_DBD_____common_set_errcache_offsetwantedpw_uid_timerIstrxfrm_NUL_replacementpair_sep_len__locksig_elemsPL_valid_types_NV_setdbih_imp_svtot_lengr_memIxsubfilenamegp_hvimp_dbh_stIpad_reset_pendingopterrdfoutgvPerl_sv_taintedpair_sepPerl_sv_setsv_flags_sigchldxcv_depth__builtin_va_listItaint_warnIArgvpw_shellsi_next_syscallPL_no_symref_svIexitlisttimebufXS_DBI_dbi_profile_merge_nodesIsubnamestatement_svp_IO_read_basePL_warn_uninitany_i32Ihv_fetch_ent_mhUNOP_AUX_itemsvt_dupdbih_get_fbav__pthread_mutex_sDBI.cXS_DBD_____common_tracePerl_sv_setiv_mgInumeric_radix_svdbih_dumpcomPerl_sv_2ioPL_fold_latin1xcv_outside_seqPL_magic_vtable_namesXS_DBI__clone_dbisPL_no_sock_funcIsplitstrxcv_heksvt_freesockaddr_nsXS_DBD_____db_take_imp_datalong long unsigned intsi_addrdirentwant_vtbl_posIbody_arenascheckstrquote_type_grent_sizePL_csighandlerpSVt_INVLISTwant_vtbl_mglobextraIsortcopPL_warn_uninit_svsin_familyPerl_sv_magicextIsignalssbu_typeset_err_svPerl_hv_iterkeyneatsvpvsi_pidmg_privatedupeje_bufallow_reparentlazysv__ctype_tolower_locimp_xxh1imp_xxh2pair_sep_svItoptargetIstrxfrm_max_cpIerrgvPerl_sv_2pv_flagsfields_fdavinc_amgsvt_clearPERL_PHASE_CHECKnexttokePL_no_myglobdbih_getcom2keysvItmps_ixIsig_pendingcurrent_tracesubstrsmethtype_FETCHany_svpXS_DBI__concat_hash_sortedintflagspad2destroyable_proc_tIfdpidPerl_safesysfreexpadlarr_allocivalany_dxptrn_netto_sv_amgPerl_croak_xs_usageop_pmtargetoffXS_DBD_____st_rowsIcollation_nameIefloatbufPerl_save_I32XS_DBI_neatto_cv_amgmagic_vtable_max_pwent_sizeoldvalrowavany_longxiou_anyPerl_save_sptrlshift_amgIexit_flagsc1_utf8repeat_amgIglobhooksin6_portPL_block_typed_offtotal_lenxio_top_namep_imp_xxhps_acceptsql_type_cast_svpvmodulo_ass_amgIptr_tablestatement_pvIcolorsetPerl_hv_iternext_flags__jmpbufIfilemode__dev_t__kindIexitlistlensockaddr_unnumer_amghideargop_foldedis_nested_callIdelaymagicPL_charclassstrrchrImarkstack_ptrpw_gidorig_nodefield_name_svpprev_yes_statePerl_xs_handshakeXS_DBD___mem__common_DESTROYparent_hneatsvpvlens_name_protoent_structop_compgp_svdbikeysvu_arrayboot_DBIPerl_taint_propercol_sql_type__pthread_internal_listdbi_statedrc_swhilemis_unrelated_to_StatementIInBitmapmother_re__valn_aliases_sigsysxs_versionPerl_PerlIO_flushstatement_svextflagsxio_fmt_gvxpadn_genPerl_sv_reftypecop_fileIcurstnamecx_subst__u6_addr16Isv_countsvt_setIdefstashItaintedtz_minuteswestXS_DBD_____dr_dbixs_revisionIbodytargetoldoldbufptrxav_maxxiv_u_protoent_bufferst_modesavearray_xivuhas_non_numerics_chainleave_opIutf8_xidstartre_eval_startperl_debug_padIstack_maxcache_gensvtypestrstrPerl_mg_sizeis_warningdbistatest_dev__u6_addr32je_prevwant_vtbl_svIclocktickoverflow_arg_areaPerl_sv_2iv_flagsreg_save_area__syscall_slong_tIXPosix_ptrsIDBsubspwdcacheitChildHandles_rvav__nextIutf8_idstartje_mustcatchnumbered_buff_LENGTHset_tracePerl_hv_iternextsvyy_parserblock_loopop_savefreeIscopestackIformtargetpad_offsetPL_perlio_fd_refcnt_sizeerr_hashmro_nextmethods_aliaseslastcpdbih_sth_bind_colIconstpadixtmp2level_svmulti_closeis_DESTROYstatherelinesImy_cxt_listmethtype_fetch_starIPosix_ptrsTARGn_nv_freeres_listxivu_namehekouter_ref__pad5_ttyname_sizesin6_addrPerl_sv_setpvf_nocontextPerl_ptr_table_fetchIwatchokkv_sepS_SvREFCNT_deckeep_error_IO_FILE__stack_chk_failPL_my_cxt_indexPerl_av_len__tznameXS_DBD_____common_errp_protoPerlIO_putsstr_uv_sort_pair_tPerl_sv_2mortalwant_vtbl_isasvt_copyxnv_bm_tailPerl_save_intgp_offsetPerl_sv_unmagicsival_ptrPerl_hv_commonmark_locsi_utimexpvavIsrand_calledimp_stashshow_calleroptindstrlenregexp_amgprofile_class__mode_tsp_flagperl_keyIreplgvsa_dataIbreakable_sub_genrsfp_filtersS_SvREFCNT_incIin_evalsuboffset__sigval_t_servent_ptrlex_re_reparsingIutf8_toupperparent_xxhlinestartsig_optelemsxhvnameu_namesIcv_has_evalmg_typeattribsxpvcvnumbered_buff_FETCHparent_dbisIrandom_stateIscopestack_nameclose_trace_filedbih_getcomsi_bandxpadn_pvIcomppad_name_floorkflagsIdelaymagic_uidIwarnhookIlast_swash_klen_xmgu_sigpollmro_linear_allxio_dirpuPerl_warn_svcur_text__elisioncol_scaleblku_oldpmImain_cvimp_fdh_t “H“UH“ ¨S ¨¥¨U¥¨¦¨óUŸ “(“T(“z“óTŸz“Š“P«“»“PÜ“ì“P ””P>”N”Po””P ”°”PÑ”á”P••P3•C•Pd•t•P••¥•Pƕ֕P÷•–P(–8–PY–i–PŠ–š–P»–Ë–Pì–ü–P—-—PN—^—P——P°—À—Pá—ñ—P˜"˜PC˜S˜Pt˜„˜P¥˜µ˜PÖ˜æ˜P™™P8™H™Pi™y™Pš™ª™P˙ۙPü™ šP-š=šP^šnšPšŸšPÀšКPñš›P"›2›PS›c›P„›”›Pµ›Å›Pæ›ö›Pœ'œPHœXœPyœ‰œPªœºœPÛœëœP P=MPn~PŸ¯PÐàPžžP2žBžPcžsžP”ž¤žPÅžÕžPöžŸP'Ÿ7ŸPXŸhŸP‰Ÿ™ŸPºŸÊŸPëŸûŸP , PM ] P~ Ž P¯ ¿ Pà ð P¡!¡PB¡R¡Ps¡ƒ¡P¤¡´¡PÕ¡å¡P¢¢P7¢G¢Ph¢x¢P™¢©¢PÊ¢Ú¢Pû¢ £P,£<£P]£q£PŽ£¢£Pt¤ˆ¤P”¤¨¤P ¥ ¥P,¥@¥P(¦<¦PH¦\¦P~¦’¦Pž¦²¦Pܧð§Pü§¨Pn“y“Py“¡¨V¡¨¥¨Tn“y“p $ &3$s"Ÿn“y“sn“y“sp $ &3$s8ŸŠ“ª“P»“Û“Pì“ ”P”=”PN”n”P”Ÿ”P°”ДPᔕP•2•PC•c•Pt•”•P¥•Å•PÖ•ö•P–'–P8–X–Pi–‰–Pš–º–PË–ë–Pü–—P-—M—P^—~—P—¯—PÀ—à—Pñ—˜P"˜B˜PS˜s˜P„˜¤˜Pµ˜Õ˜P昙P™7™PH™h™Py™™™Pª™Ê™PÛ™û™P š,šP=š]šPnšŽšPŸš¿šPКðšP›!›P2›R›Pc›ƒ›P”›´›PÅ›å›Pö›œP'œGœPXœxœP‰œ©œPºœÚœPëœ P<PMmP~žP¯ÏPàžPž1žPBžbžPsž“žP¤žÄžPÕžõžPŸ&ŸP7ŸWŸPhŸˆŸP™Ÿ¹ŸPÊŸêŸPûŸ P, L P] } PŽ ® P¿ ß Pð ¡P!¡A¡PR¡r¡Pƒ¡£¡P´¡Ô¡På¡¢P¢6¢PG¢g¢Px¢˜¢P©¢É¢PÚ¢ú¢P £+£P<£\£Pq££P¢£­£Pˆ¤“¤P¨¤³¤P ¥+¥P@¥K¥P<¦G¦P\¦g¦P’¦¦P²¦½¦Pð§û§P¨¨PàXìXUìXKYSKYMYóUŸMYYYSàXûXTûX3YU3YMYóTŸMYXYUXYYYóTŸéXìXuìX9YsMYXYsY YP Y9YQMYXYQ Y Yp $ &3$r"Ÿ Y9Yq $ &3$r"ŸMYXYq $ &3$r"Ÿ Y Ysp $ &3$r8Ÿ Y9Ysq $ &3$r8ŸMYXYsq $ &3$r8Ÿ'Y+Yp3$r"+Y/YP/Y9Y q $ &3$r"3Y9YU:YMY0ŸéXìXUìXYS9$9U$9;S;!;óUŸ!;a>S929T29‹9U‹9P>óTŸP>[>U[>a>óTŸE9a9Ta9¤9sW;Ž;sÙ<ì<sP>[>sW9Z9PZ9;V!;a>VZ9^9p $ &3$r"Ÿ^9¤9v $ &3$r"ŸW;Ž;v $ &3$r"ŸÙ<ì<v $ &3$r"ŸP>[>v $ &3$r"Ÿh9¤9PW;m;Pm;Ž;ssø#” $ &3$r3&ŸÙ<ì<ssø#” $ &3$r3&ŸP>[>P’9;\!;P>\\>a>\›9:]W;Ž;]»<È<]Í<÷<]¤9ê:‘È~!;W;‘È~Ž;¼;‘È~x<Ù<‘È~÷<=‘È~à=P>‘È~¼9À9PÀ9 ;_!;W;_Ž;Ù<_÷<P>_\>a>_Ò9Ö9PÖ9·:w·:ê:‘°~!;B;wB;W;‘°~Ž;<wx<Ù<w÷<¼=wà=P>wé9í9Pí9ê:‘¸~!;W;‘¸~Ž;Á;‘¸~x<Ù<‘¸~÷<=‘¸~=•=‘¸~à=ð=‘¸~ö9:P:;^!;W;^Ž;»<^»<Ä<PÄ<Í<^Í<Ù<P÷<P>^\>a>^:²:[!;W;[Ž;Å;[Å;x<‘¸~x<Í<[÷<"=["==‘¸~=™=[™=à=‘¸~à=ô=[ô=P>‘¸~:˜:]!;W;]Ž;»<]÷<P>]':Y:q ÿÿŸY:]: r” ÿÿŸx<’<q ÿÿŸ’<›< r” ÿÿŸ]::p ÿÿŸ:“: ” ÿÿŸ›<²<p ÿÿŸ²<»< ” ÿÿŸ“:³: ÈÓŸ“:˜:‘Ð~Ÿ˜:³:]ê:ø:1ŸŽ;ž;‘¸~÷<÷<‘¸~ž;¼;^÷<=^==^à=à=^z==0Ÿ+<?<Sz==S¼=Ð=SK>P>S/<;<Q;<?<z¼=Ê=Q?<X<^Ð=à=^?<X<SÐ=à=SH<T<QT<X<~Ð=Ú=Qg<x<1ŸE9W9S`Y¥YU¥YÈYSÈYÌYóUŸÌYÛYS`YžYTžYÌYóTŸÌYÖYTÖYÚYUÚYÛYóTŸdYfYuY„YP„Y®YVÌYÛYV„YˆYp $ &3$q"ŸˆY¥Yv $ &3$q"ŸÌYÚYv $ &3$q"Ÿ„YˆYup $ &3$u8ŸˆY¥Yuv $ &3$u8ŸÌYÚYsv $ &3$s8ŸÀYÌY1ŸdYYUàY[ZU[ZëZSëZõZóUŸõZ˜[SàYDZTDZ‰[óTŸ‰[“[T“[—[U—[˜[óTŸäYæYuZZQZòZ^õZ˜[^ZZq $ &3$p"ŸZGZ~ $ &3$p"ŸGZ[Z~ $ &3$u"Ÿ?[K[~ $ &3$s"Ÿ‰[—[~ $ &3$p"ŸZZVõZýZV?[q[V‰[˜[V8ZôZ_õZ‰[_[Z’ZRõZ [RT[i[Ri[{[‘¸’ZÈZT[[T²ZÁZPÁZÈZ"” $ &3$s"##$[*[q”?Ÿ*[.[P{[‰[P¶ZÈZU$[.[q{[‰[q’Z™Z"” $ &3$s"[ ["” $ &3$s"['[PßZõZ1ŸäYZUð`U`ØSØâóUŸâSð`T`âóTŸâìTì óTŸ TUóTŸ`u¢ÅVâìsü V s!R!JPJÛ|Ÿâ |Ÿ P|Ÿ!%r $ &3$q"Ÿ%Jp $ &3$q"ŸJX| $ &3$q"ŸX`| $ &3$u"Ÿâì| $ &3$q"Ÿ | $ &3$q"Ÿ,¢VâüV V,`t#(âìt#( t#(u#(Fá_â _g”TõüT”Q•§P§ÅQü Q`ß^õ ^¥ÅQü QÉâ1ŸUàÐôÐUôпÑS¿ÑÉÑóUŸÉÑPÓSàÐÑTÑ9ÑU9Ñ8ÓóTŸ8ÓCÓUCÓPÓóTŸÿÐÀÑVÀÑÉÑóUÉѹÒV¹ÒËÒvŸËÒ6ÓV6Ó8ÓP8ÓPÓVÑÑQÑ@ÑR@ÑgÑpŸgÑ}Ñ sø#”#ŸÉÑ ÒpŸ ÒÒ sø#”#Ÿ8ÓCÓRDÓPÓpŸÑÑq $ &3$t"ŸÑ@Ñr $ &3$t"Ÿ@ÑgÑp $ &3$t"ŸgÑlÑsø#” $ &3$t"ŸlÑ}Ñsø#” $ &3$s"ŸÉÑ Òp $ &3$t"Ÿ ÒÒsø#” $ &3$t"Ÿ8Ó?Ór $ &3$t"Ÿ?ÓCÓr $ &3$s"ŸDÓPÓp $ &3$t"Ÿ%ÑiÑQiÑ}Ñ{3&ŸÉÑÒQ8ÓCÓQDÓPÓQJÑ·Ñ]ÉÑLÒ]ïÒÓ]DÓPÓ]NÑÈÑ_ÉÑ8Ó_DÓPÓ_ZÑ}ÑR}ÑÉÑ‘¨ÚÑÒRÒ8Ó‘¨DÓPÓRaÑ}ÑX}ÑÉÑ‘°íÑÒXÒ8Ó‘°DÓPÓX¢ÑÂÑ\ÒïÒ\ÓÓPÓ8Ó\KÓPÓ\yÑ·Ñ^ÒÇÒ^ÔÒ8Ó^‘Ñ¢ÑPïÒÓPÓÓ‘¸LÒQÒPQÒïÒ]Ó8Ó]ÿÐÑS [°[U°[«\S«\±\óUŸ±\.^S [¿[T¿[ê[Uê["^óTŸ"^-^U-^.^óTŸ­[°[u°[ü[s"^-^sÊ[Í[PÍ[ì[Qì[ü[P"^-^QÍ[Ñ[p $ &3$r"ŸÑ[ì[q $ &3$r"Ÿì[ü[p $ &3$r"Ÿ"^-^q $ &3$r"ŸÍ[Ñ[sp $ &3$r8ŸÑ[ì[sq $ &3$r8Ÿì[ü[sp $ &3$r8Ÿ"^-^sq $ &3$r8Ÿø[ü[T\\P\K\]±\)]]•]Ê]]\®\\±\S]\X]ã]\è]^\ ^"^\K\„\])]•]]Ê]"^]Ÿ\±\1Ÿ­[°[U°[Ê[S0^†^U†^t_St_z_óUŸz_Y`S0^x^Tx^J`óTŸJ`T`TT`X`UX`Y`óTŸ4^6^uW^Z^PZ^u_Vz_Y`VZ^^^p $ &3$q"Ÿ^^z^v $ &3$q"Ÿz^†^v $ &3$u"ŸJ`X`v $ &3$q"ŸZ^^^up $ &3$q8Ÿ^^z^uv $ &3$q8Ÿz^†^uv $ &3$u8ŸJ`X`sv $ &3$q8Ÿ‡^¹^P0_B_Pz_‘_P^y_]z_J`]h_z_1Ÿ4^W^U``n`Un`Û`SÛ`ß`óUŸß`ë`S``y`Ty` `U `ß`óTŸß`ê`Uê`ë`óTŸk`n`un`²`sß`ê`s„`‡`P‡`¢`Q¢`²`Pß`ê`Q‡`‹`p $ &3$r"Ÿ‹`¢`q $ &3$r"Ÿ¢`²`p $ &3$r"Ÿß`ê`q $ &3$r"Ÿ‡`‹`sp $ &3$r8Ÿ‹`¢`sq $ &3$r8Ÿ¢`²`sp $ &3$r8Ÿß`ê`sq $ &3$r8Ÿ®`²`T³`Ã`P³`Ã`pè#Ã`Î`pÓ`ß`1Ÿk`n`Un`„`Sð`þ`Uþ`gaSgakaóUŸkawaSð` aT a0aU0akaóTŸkavaUvawaóTŸû`þ`uþ`BaskavasaaPa2aQ2aBaPkavaQaap $ &3$r"Ÿa2aq $ &3$r"Ÿ2aBap $ &3$r"Ÿkavaq $ &3$r"Ÿaasp $ &3$r8Ÿa2asq $ &3$r8Ÿ2aBasp $ &3$r8Ÿkavasq $ &3$r8Ÿ>aBaTCaZaP_aka1Ÿû`þ`Uþ`aS †2†U2†Å†Sņ͆óUŸÍ†&‡S †=†T=†‘†U‘†÷†óTŸ÷† ‡U ‡‡óTŸ‡%‡U%‡&‡óTŸ/†2†u2†‘†s÷†‡s‡%‡sK†N†QN†Æ†V͆&‡VN†R†q $ &3$r"ŸR†‘†v $ &3$r"Ÿ÷†‡v $ &3$r"Ÿ‡‡v $ &3$s"Ÿ‡%‡v $ &3$r"ŸN†R†sq $ &3$r8ŸR†‘†sv $ &3$r8Ÿ÷†‡sv $ &3$r8Ÿ‡‡sv $ &3$s8Ÿ‡%‡sv $ &3$r8Ÿy†Ê†]͆‡]}†Ì†^͆‡^µ†Í†Pñ†÷†Pñ†÷†P½†Í†1Ÿ/†2†U2†K†S0‡>‡U>‡œ‡Sœ‡ ‡óUŸ ‡¬‡S0‡I‡TI‡{‡U{‡ ‡óTŸ ‡«‡U«‡¬‡óTŸ;‡>‡u>‡‹‡s ‡«‡sW‡Z‡QZ‡‡V ‡¬‡VZ‡^‡q $ &3$r"Ÿ^‡‹‡v $ &3$r"Ÿ ‡«‡v $ &3$r"ŸZ‡^‡sq $ &3$r8Ÿ^‡‹‡sv $ &3$r8Ÿ ‡«‡sv $ &3$r8Ÿƒ‡‹‡UŒ‡ ‡P”‡ ‡1Ÿ;‡>‡U>‡W‡SÀ(Î(UÎ(O)SO)S)óUŸS)_)SÀ(Ù(TÙ(,)U,)S)óTŸS)^)U^)_)óTŸË(Î(uÎ(/)sS)^)sç(ë(Që(R)\S)_)\ë(ï(q $ &3$r"Ÿï( )| $ &3$r"Ÿ )/)| $ &3$s"ŸS)^)| $ &3$r"Ÿë(ï(sq $ &3$r8Ÿï( )s| $ &3$r8Ÿ )/)s| $ &3$s8ŸS)^)s| $ &3$r8Ÿ,)3)U,)3)T,)3)RG)S)1ŸË(Î(UÎ(ç(S€aÎaUÎaÚaóUŸ€aÕaTÕaÙaUÙaÚaóTŸ„a¾auÊaËaušaaPaºaQºaÆaPÊaÙaQa¡ap $ &3$r"Ÿ¡aºaq $ &3$r"ŸºaÆap $ &3$r"ŸÊaÙaq $ &3$r"Ÿa¡aup $ &3$r8Ÿ¡aºauq $ &3$r8Ÿºa¾aup $ &3$r8ŸÊaËauq $ &3$r8Ÿ³a¾ap3$r"¾aÊa1Ÿ„ašaU€ˆˆUˆ ‰S ‰‰óUŸ‰‰S€ˆŸˆTŸˆÌˆÜ‰óTŸ‰‰U‰‰óTŸˆˆuˆçˆs‰‰s­ˆ°ˆQ°ˆ ‰V‰‰V°ˆ´ˆq $ &3$r"Ÿ´ˆçˆv $ &3$r"Ÿ‰‰v $ &3$r"Ÿ°ˆ´ˆsq $ &3$r8Ÿ´ˆçˆsv $ &3$r8Ÿ‰‰sv $ &3$r8ŸßˆçˆT㈉]èˆõˆPþˆ‰1ŸˆˆUˆ­ˆSàa7bU7bBcSBcJcóUŸJcqcSqcycóUŸycÿcSàa3bT3bËcóTŸËcÕcTÕcÙcUÙcÿcóTŸöaCcVCcJcóUJcrcVrcycóUycÿcVb bP bìb\Jctc\ycžc\Ëcÿc\ bbp $ &3$q"Ÿb0b| $ &3$q"Ÿ0b7b| $ &3$u"ŸËcÙc| $ &3$q"Ÿ bbvqp $ &3$8Ÿb*bvq| $ &3$8Ÿ*b0bu| $ &3$q8Ÿ0b7bu| $ &3$u8ŸËcÙcvq| $ &3$8Ÿ.bGc]Jcvc]ycËc]Úcÿc]BbFbPFbIc^Jcxc^ycËc^Úcÿc^UbtbQÏbôb~ Jc\cPìbc\c'c|Ÿ'c>c\>c>csžcÆc\ÆcËcPôbcPžc§cP¨c­cPJc\cPöabUdLdULd™dS™ddq˜}Ÿd½dSd>dT>ddóTŸd§dT§d«dU«d½dóTŸddu!d$dP$dšdVd½dV$d(dp $ &3$q"Ÿ(d@dv $ &3$q"Ÿ@dLdv $ &3$u"Ÿd«dv $ &3$q"Ÿ$d(dup $ &3$q8Ÿ(d@duv $ &3$q8Ÿ@dLduv $ &3$u8Ÿd«dsv $ &3$q8ŸMd†dP¬d¸dPSddR¬d¼dR‘dd1Ÿd!dUÀdÎdUÎd@eS@eDeóUŸDePeSÀdÙdTÙdeUeDeóTŸDeOeUOePeóTŸËdÎduÎdesDeOesädçdPçdeQeePDeOeQçdëdp $ &3$r"Ÿëdeq $ &3$r"Ÿeep $ &3$r"ŸDeOeq $ &3$r"Ÿçdëdsp $ &3$r8Ÿëdesq $ &3$r8Ÿeesp $ &3$r8ŸDeOesq $ &3$r8ŸeeTe!ePe!ep 8eDe1ŸËdÎdUÎdädS0ÈDÈUDÈÉSÉÉóUŸɉÊS0ÈdÈTdÈ©ÈU©È/ÊóTŸ/Ê3ÊU3ÊcÊóTŸcÊnÊUnÊoÊóTŸoÊvÊUvʉÊóTŸOÈÅÈVÅÈÍÈvŸÍÈæÈVæÈùÈsÉÉsVÉ~ÉR~ɃÉw‘¸” $ &3$v"8ŸƒÉƒÉw‘¸” $ &3$v"ŸƒÉºÉw‘¸” $ &3$v"8Ÿ/Ê^ÊV^ÊcÊPcÊ}ÊVaÈhÈQhÈùÈ^ÉaÉ^çɉÊ^hÈlÈq $ &3$r"ŸlÈ©È~ $ &3$r"Ÿ/Ê7Ê~ $ &3$r"ŸcÊnÊ~ $ &3$r"ŸoÊ|Ê~ $ &3$r"ŸhÈlÈvrq $ &3$8ŸlÈ©Èvr~ $ &3$8Ÿ/Ê7Êvr~ $ &3$8ŸcÊnÊvr~ $ &3$8ŸoÊ|Êvr~ $ &3$8ŸhÈœÈt(cÊjÊt(jÊnÊu#(oÊ|Êt(hÈ©ÈT/Ê7ÊTcÊjÊTjÊnÊuoÊ|ÊT’ÈùÈ]ÉÉ]ÉÉT/ÊcÊ]oÊ}Ê]æÈîÈPîÈùÈVÉÉPÉOÉVOÉRÉ]RÉVÉvŸçÉ/ÊV}ʉÊVœÈ¹ÈP/Ê7ÊP8ÊAÊP É'ÉP+É<ÉP<ÉçÉ_çÉúÉPúÉ/Ê_}ʉÊ_ùÈÉ1ŸOÈaÈSp>Õ>UÕ>#@S#@-@óUŸ-@ASA#AqÈ}Ÿ#A§BSp>ã>Tã>˜BóTŸ˜B¢BT¢B¦BU¦B§BóTŸŒ>U?_U?]?Ÿ]?Ì?_Ì?Ì?PÌ?Ó?pxŸÓ?à?Pà?ì?s-@y@_y@ˆ@Pˆ@¥@s#A~A_~AƒAP˜AªAsŠB§B_¡>¤>Q¤>$@V-@AV#A§BV¤>¨>q $ &3$p"Ÿ¨>ç>v $ &3$p"Ÿ˜B¦Bv $ &3$p"Ÿ¯>ç>Xç>ì?‘¨-@¹@‘¨#AƒA‘¨˜A³A‘¨ŠB˜B‘¨˜B¦BXÙ>»?]-@y@]#AƒA]?ì?\-@_@\y@ A\?ALA\QAƒA\˜AãA\ŠB˜B\Ï?ì?Qy@¢@Q˜AªAQœ?¨?p»?¿?P¿?(@]y@A]ƒA˜B]ð>þ>Pþ>ì?^-@ A^#AƒA^˜AÇA^ŠB˜B^ç? @_ @-@PƒA˜A_WBeBPeBŠB_+?I?PQA_AP`AeAP7@y@P?AQAPÕAãA0ŸãAëA~ŸëA5B^5BDB~Ÿ@"A_˜AWB_¥@È@Q³AËAQËAÝA‘¸ÕAØAPØAŠB‘°ÄAŠB‘¨ A#A1ŸÕAØAPØAŠB‘°ãAëA\B BP BDB\WBŠB^WBŠBShBpBQpBsBpsBxBqŸxB„BQç?@]ƒA˜A]ç?@SƒA˜ASð?ü?Qü?@}ƒA’AQ@-@1ŸŒ>¡>UʤÊU¤ÊnËSnËxËóUŸxË5ÍSÊÇÊTÇÊËUËÌóTŸÌÌUÌÍóTŸÍ"ÍU"Í)ÍóTŸ)Í4ÍU4Í5ÍóTŸ¯ÊëÊ\ëÊ"ËV"ËIËvŸIËPËPPËoËVoËxËóUxË>ÌV>ÌGÌPGÌéÌVéÌîÌPîÌ ÍV ÍÍvŸÍ)ÍV)Í5Í\ÁÊÇÊQÇÊËTÌÌTÍ(ÍT)Í0ÍT0Í4Íp”#ŸÇÊËÊq $ &3$r"ŸËÊËt $ &3$r"ŸÌÌt $ &3$r"ŸÍ(Ít $ &3$r"Ÿ)Í0Ít $ &3$r"Ÿ0Í4Íp” $ &3$r"ŸÇÊËÊ|rq $ &3$8ŸËÊË|rt $ &3$8ŸÌÌ|rt $ &3$8ŸÍ(Í|rt $ &3$8Ÿ)Í0Í|rt $ &3$8Ÿ0Í4Í|rp” $ &3$8ŸÇÊùÊx(Í(Íx()Í4Íx(ÇÊËXÌÌXÍ(ÍX)Í4ÍXïÊfË]xË•Ë]ÌGÌ] Í)Í]PËfË\xË’Ë\ùÊËPÌÌPÌ!ÌP•Ë¥ËP¥ËæË]GÌ~Ì]¾ÌÊÌPÊÌ Í]­ËÌ^G̾Ì^ÔÌ Í^áËæË0ŸðËÌQnÌ‹Ì0Ÿ×ËæËPGÌWÌP_ÌbÌPb̾Ì_îÌ Í_•ËÌ\GÌ Í\¯ÊÁÊS@ÉUÉ ŽS ŽŽr˜}ŸŽ¢ŽS@ThŽóTŸhŽrŽTrŽvŽUvŽ¢ŽóTŸDFujmQm ŽVŽ9ŽVhŽwŽV‹Ž ŽVmqq $ &3$x"Ÿqãv $ &3$x"ŸŽ9Žv $ &3$x"ŸhŽvŽv $ &3$x"Ÿ‹ŽœŽv $ &3$x"Ÿx½R½Éuuø#” $ &3$x3&ŸÉãssø#” $ &3$x3&ŸŽ9Žssø#” $ &3$x3&ŸhŽvŽR‹ŽœŽssø#” $ &3$x3&Ÿ™Ž]ŽhŽ]wŽ¢Ž]ãTŽ9ŽT‹Ž•ŽT•ŽœŽsø#”# $ &3$x"§ãQŽ9ŽQ‹Ž’ŽQ’ŽœŽsø#”# $ &3$x"µ×PÙãPŽ9ŽP‹ŽœŽPüŽQŽŽ1ŸDjUàÍôÍUôÍ>ÏS>ÏHÏóUŸHÏÔÐSàÍÎTÎ4ÎU4ÎÈÐóTŸÈÐÓÐUÓÐÔÐóTŸñÍôÍuôÍQÎsÈÐÓÐsÎÎQÎ>ÎR>ÎHÎQHÎQÎ sø#”#ŸÈÐÓÐRÎÎq $ &3$t"ŸÎ>Îr $ &3$t"Ÿ>ÎFÎq $ &3$t"ŸFÎHÎq $ &3$s"ŸHÎQÎsø#” $ &3$s"ŸÈÐÏÐr $ &3$t"ŸÏÐÓÐr $ &3$s"ŸÎÎsq $ &3$t8ŸÎ>Îsr $ &3$t8Ÿ>ÎFÎsq $ &3$t8ŸFÎHÎsq $ &3$s8ŸHÎQÎssø#” $ &3$s8ŸÈÐÏÐsr $ &3$t8ŸÏÐÓÐsr $ &3$s8ŸMαÎ^HϽÏ^ÐiÐ^­ÐÈÐ^XÎ\ÎP\ÎCÏ]HÏÈÐ]±ÎÅÎ0ŸQÐaÐPaÐrÐQ‘ÎAÏ\HÏÐ\4ЭÐ\`ÎmÎPmÎÏVHÏÐVÐ*ÐP*ÐÈÐVuαÎ_±ÎÅÎYHϸÏ_¸Ï½Ï‘¨½ÏÉÏYÐÐ_4ÐÈÐ_¨Î±ÎYHÏjÏYjÏÉÏ‘¼4ЭБ¼/ÏHÏ1ŸñÍôÍUôÍÎS@ÍNÍUNÍÄÍSÄÍÈÍóUŸÈÍÔÍS@ÍYÍTYÍ€ÍU€ÍÈÍóTŸÈÍÓÍUÓÍÔÍóTŸKÍNÍuNÍ’ÍsÈÍÓÍsdÍgÍPgÍ‚ÍQ‚Í’ÍPÈÍÓÍQgÍkÍp $ &3$r"ŸkÍ‚Íq $ &3$r"Ÿ‚Í’Íp $ &3$r"ŸÈÍÓÍq $ &3$r"ŸgÍkÍsp $ &3$r8ŸkÍ‚Ísq $ &3$r8Ÿ‚Í’Ísp $ &3$r8ŸÈÍÓÍsq $ &3$r8ŸŽÍ’ÍT“ÍšÍP›Í¥ÍP¼ÍÈÍ1ŸKÍNÍUNÍdÍSÃuÃUuàÄ_ Ä¡ÄóUŸ¡Ä Ç_ Ç ÇU Ç*Ç_ÃqÃTqà ÇóTŸ ÇÇTÇÇUÇ*ÇóTŸ(ÚÄ\¡ÄóÅ\óÅúÅ|ŸúÅÇ\Ç*Ç\>ÃAÃPAÃ~ÄS¡ÄœÆS¯ÆÇS Ç*ÇSAÃEÃp $ &3$q"ŸEÃiÃs $ &3$q"ŸiÃuÃs $ &3$u"Ÿ ÇÇs $ &3$q"ŸAÃEÃ|qp $ &3$8ŸEÃiÃ|qs $ &3$8ŸiÃuÃ|s $ &3$u8Ÿ ÇÇ|qs $ &3$8Ÿ_ÃïÃV¡ÄìÄVÅÇVyèÃP¨ÃžÄ^¡Ä¾ÄP¾Ä Ç^Ç*Ç^ïÃ~ÄVìÄÅVÇ*ÇV©Ã´ÃPÕÄìÄ0ŸCÅGÅPGÅrÅ]rÅjÆ‘¯ÆÂÆ]ÂÆÇ‘MÅ]ÅP]ÅjÆ‘¨¯Æ¼ÆP¼ÆÇ‘¨cÅuÅPuÅÅQÅ„ÅqŸ„Å’ÅQKÆjÆ}Ÿ–Å¢ÅP¢ÅÖÅYÂÆÔÆYÔÆßÆ‘ ÉÅçÅPÂÆÔÆP—ƯÆ0ŸÄ9ÄQÅÅQwÄ~Ä1Ÿ(Ã>ÃU@‘Á‘UÁ‘i’Si’s’óUŸs’“S@‘£‘T£‘ “óTŸ ““T““U““óTŸD‘F‘un‘r‘Qr‘l’\l’p’~Ÿs’“\r‘v‘q $ &3$p"Ÿv‘Á‘| $ &3$p"Ÿ—’«’| $ &3$p"Ÿ ““| $ &3$p"Ÿ}‘j’Vs’“V¨‘Á‘RÁ‘—’‘¨—’¥’R¥’«’|3$p"«’ “‘¨Á‘r’_s’—’_¸’ “_è‘ ’Zs’‰’Z‰’—’‘° ’:’RÙ’ö’Rö’ “‘¸:’I’X“ “PJ’T’PU’s’P]’s’1ŸD‘n‘U„>¦>u—>—>p—>™>p”#Ÿ™> >pŸ >®>P—>™>p” $ &3$u"Ÿ™> >p $ &3$u"Ÿ >¦>uø#” $ &3$u"Ÿ¦>ª>p $ &3$q"Ÿ—>™>up” $ &3$u8Ÿ™> >up $ &3$u8Ÿ >¦>uuø#” $ &3$u8Ÿ„>—>UPe“eU“e¶eS¶eºeóUŸºeÉeSPeŒeTŒeºeóTŸºeÄeTÄeÈeUÈeÉeóTŸTeVeuqetePteœeVºeÉeVtexep $ &3$q"Ÿxe“ev $ &3$q"ŸºeÈev $ &3$q"Ÿtexeup $ &3$u8Ÿxe“euv $ &3$u8ŸºeÈesv $ &3$s8Ÿ®eºe1ŸTeqeUPúðúUðúœý_œýýóUŸýáý_áýóýUóýˆ_ˆU™óUŸ™ç_PúÙúTÙú—ü‘ˆ—üÛüóTŸÛüOý‘ˆOýýóTŸýþ‘ˆþˆþóTŸˆþéÿ‘ˆéÿîÿóTŸîÿC‘ˆCHóTŸHƒ‘ˆƒˆóTŸˆ”T”瑈wúƒúu„ü—üŠúúPúnýSýAþSˆþƒSˆžS™úœúPœú¶úR¶ú—ü‘ÛüOý‘ýþ‘ˆþ`ÿ‘{ÿéÿ‘îÿC‘Hƒ‘ˆ˜R˜ç‘™úœú up8Ÿœú¶ú ur8Ÿ¶úðú u‘8Ÿáýóý u‘8Ÿˆ ur8Ÿ˜ óUr8ŸÆúðús3$q"áýïýs3$q"ïýóýs3$u"Ñú”ýVýˆV™çVðúûPûûuŸûûUû—ü‘è~ÛüOý‘è~ýáý‘è~ùýþ‘è~ˆþéÿ‘è~îÿC‘è~Hƒ‘è~™ç‘è~û÷û^ÛüOý^ýáý^ùýþ^ˆþ¹þ^¿ÿÕÿ^^Hˆ^Éè^#û0ûP0û—ü\ýáý\ˆþÉ\èƒ\™ç\:ûÛü]ìü˜ý]ýáý]ùýˆ]™ç]:ûRû žRû¶û‘ð~¶û—ü žìüOý žOýXý‘ð~ýÜý žÜýáýaùýþ žˆþéÿ‘ð~îÿ žC‘ð~Hˆ žˆÉ‘ð~Éý žýƒ‘ð~™ç ž¿ÿáÿ|è#¹þ¿ÿ^ˆÉ^ýƒ^'P(;P(ü5üP5ü—ü^îÿ^èý^™§P§·^¶ûÍûPÍûÖûRÖûçû|0çû—ü‘˜îÿ‘˜HSPSˆRèý‘˜™ç‘˜=ü]üPè÷PøýPAþEþPEþˆþSnýý1Ÿƒˆ1ŸwúŠúU‘ˆ‘Uˆ‘ô‘Sô‘þ‘óUŸþ‘¯’S‘`‘T`‘ ’óTŸ ’ª’Tª’®’U®’¯’óTŸ‘‘u¹‘ä‘V†’ ’V.‘1‘R1‘Z‘PZ‘ý‘Ÿþ‘ ’Ÿ ’®’P®’¯’Ÿ1‘5‘r $ &3$q"Ÿ5‘Z‘p $ &3$q"ŸZ‘ˆ‘ $ &3$q"Ÿ)’5’ $ &3$q"Ÿ5’9’ $ &3$s"Ÿ ’®’ $ &3$q"Ÿ<‘¹‘Vþ‘†’V ’¯’VV‘ù‘]þ‘ ’]z‘”‘Y=’A’PA’W’YW’e’‘¼›‘«‘R¬‘¾‘P¾‘ä‘Q†’š’Q”‘û‘^þ‘)’^e’ ’^¼‘ä‘Q†’š’Qè‘þ‘1Ÿ‘.‘U 4U4ÒSÒÜóUŸÜ S ;T;˜U˜ú óTŸú  U  óTŸKlTlsÜ s & sç ô sú  saeReÕ\Ü \eir $ &3$q"ŸiÂ| $ &3$q"ŸÂ| $ &3$s"ŸÜê| $ &3$q"Ÿê | $ &3$s"Ÿ & | $ &3$s"Ÿç ô | $ &3$s"Ÿú  | $ &3$q"Ÿeisr $ &3$q8ŸiÂs| $ &3$q8ŸÂs| $ &3$s8ŸÜês| $ &3$q8Ÿê s| $ &3$s8Ÿ & s| $ &3$s8Ÿç ô s| $ &3$s8Ÿú  s| $ &3$q8Ÿž×]Üú ]žTÜ& Tç ô T¢^Üf ^ç õ ^¹Û_Üú _¹YÜ& Y& D ‘˜ç ô YPw, 0 w¹^f j Pj ç ^©Pª¹P  1Ÿ²¹1ŸKaS@›·›U·›$œ_$œ%œóUŸ%œ(œU(œ4œ_4œ7œU7œMœ_@›Š›TŠ›%œóTŸ%œ/œT/œ3œU3œMœóTŸI›K›un›r›uø#r›œ\œ"œ^%œMœ\r›·›uø#” $ &3$r"Ÿ%œ(œuø#” $ &3$r"Ÿ(œ3œø#” $ &3$r"Ÿ4œ7œuø#” $ &3$r"Ÿ7œ;œø#” $ &3$r"Ÿ}›³›S³›µ›sŸµ›·›uq3$r3&1Ÿ%œMœS}›Š›t#(Š›·›óT#(%œ/œt#(/œ3œu#(4œ;œóT#(Ž›œV4œMœVÿ›œTœ%œPě͛ s $ &3$r"͛՛ s $ &3$r"œ%œ1ŸI›n›UñAòUAò#ó^#ó&ó ‘˜ 8Ÿ&óXó^XóióUióuô^uôxôUxô‰ô^ñòTòuôóTŸuôôTôƒôUƒô‰ôóTŸ¸ñØñSØñAòuXóióuuôxôuxôƒô~ÎñÑñQÑñóñRóñúñQúñDòvŸXóyóvŸuôƒôRƒô„ôvŸÑñÕñq $ &3$p"ŸÕñóñr $ &3$p"Ÿóñúñq $ &3$p"ŸúñAòv $ &3$p"ŸXóióv $ &3$p"Ÿuôƒôr $ &3$p"ŸÑñÕñuq $ &3$p8ŸÕñóñur $ &3$p8Ÿóñúñuq $ &3$p8ŸúñAòuv $ &3$p8ŸXóióuv $ &3$p8Ÿuôxôur $ &3$p8Ÿxôƒô~r $ &3$p8Ÿ÷ñÈò\&ó¨ó\Zôuô\òAòRAòówó&ó‘ð~&óXówXóióRióuôw„ô‰ôwòàòS&ó=ôSZôuôSAòXó‘ø~yóuô‘ø~„ô‰ô‘ø~lò9ó‘€yóuô‘€„ô‰ô‘€xòŽòPŽòÈò‘˜Èò&ó‘ˆ&ó9óPyóÄó‘˜Äó.ô‘ˆ0ôZô‘ˆZôuô‘˜„ô‰ô‘ˆ¥òÂòP›ó0ôVÜóéóPéó0ô_ ô(ôP÷ò&ó1Ÿ„ô‰ô1Ÿ¸ñÎñUPœºœUºœASAGóUŸGSPœºœTºœGóTŸGTTTróTŸr|T|€U€óTŸtœ‘œR‘œºœuþœ]GTs]m]r€s‡œŠœPŠœBVGVŠœŽœp $ &3$q"ŸŽœ²œv $ &3$q"Ÿ²œºœv $ &3$u"ŸGTv $ &3$q"Ÿr€v $ &3$q"ŸŠœŽœup $ &3$u8ŸŽœºœuv $ &3$u8ŸGTsv $ &3$s8Ÿr€sv $ &3$s8Ÿþœa]jaºœD\]r\þœa]ja!G1Ÿmr1Ÿtœ‡œUÐeÞeUÞeYfSYf]fóUŸ]fifSÐeéeTéefUf]fóTŸ]fhfUhfifóTŸÛeÞeuÞe1fs]fhfsôe÷eP÷efQf1fP]fhfQ÷eûep $ &3$r"Ÿûefq $ &3$r"Ÿf1fp $ &3$r"Ÿ]fhfq $ &3$r"Ÿ÷eûesp $ &3$r8Ÿûefsq $ &3$r8Ÿf1fsp $ &3$r8Ÿ]fhfsq $ &3$r8Ÿ'f1fU+f\f\Lf]f0ŸÛeÞeUÞeôeSpfðfUðfagSagkgóUŸkgËgSpfÙfTÙf„góTŸ„ggTg¼góTŸ¼gÆgTÆgÊgUÊgËgóTŸtfvfužf¡fR¡fÓfPÓf0g~Ÿkg¡g~Ÿ£g¼g~Ÿ¼gÊgPÊgËg~Ÿ¡f¥fr $ &3$q"Ÿ¥fÓfp $ &3$q"ŸÓfðf~ $ &3$q"Ÿkgwg~ $ &3$q"Ÿwg{g~ $ &3$s"Ÿ„gg~ $ &3$q"Ÿ¼gÊg~ $ &3$q"Ÿ¬f gVkg™gV£g·gV¼gËgVÆfjg_kg¼g_ðffg]g¼g] g@gVg£g0Ÿ g@gVg£g0Ÿ gPg]g£g] gPg_g£g_ gPgSg£gS0g?gP?ghg^¡g£gPPgkg0ŸtfžfU`)Ð)UÐ)¸*S¸*Â*óUŸÂ*,S`)Ð)TÐ)Ü*óTŸÜ*ä*Tä*,óTŸ,,T,,U,,óTŸq)Ð)u{*¨*^Ü*ä*sí+,^,,sŽ)‘)R‘)º)Pº)*~ŸÂ*í*~Ÿà+í+~Ÿ,,P,,~Ÿ‘)•)r $ &3$q"Ÿ•)º)p $ &3$q"Ÿº)È)~ $ &3$q"ŸÈ)Ð)~ $ &3$u"ŸÜ*ä*~ $ &3$q"Ÿ,,p $ &3$q"Ÿœ)!*VÂ*í*Và+í+V,,Vœ)Ð)t#(Ü*ä*t#(,,t#(,,u#(¶)/*_Â*í*_à+í+_,,_ç)+*TÏ*Ü*Tà+í+T,,Tþ)r*wí*4+w,,w*+*p+*¹*Ví*à+Ví+,VÐ)½*]Â*Ü*]í*,]*{*^í*à+^,,^/*A*PA*Á*_í*ø*Pø*à+_í+,_{*¹*Ví+,V¬*Â*1Ÿq)Ž)UPžÉžUÉž¼ S¼ Æ q˜}ŸÆ ¦SPž žT žò¥óTŸò¥ü¥Tü¥¦U¦¦óTŸTžVžu~ž‚žQ‚ž¿ \Æ ¦\‚ž†žq $ &3$p"Ÿ†žÉž| $ &3$p"Ÿò¥¦| $ &3$p"Ÿž„ŸVÆ ä V;¡î¡Vߥ¦V÷žY¡‘¨}¡ò¥‘¨¦¦‘¨Ÿ4 ‘¸4 8 P8 Å _Æ ;¡‘¸}¡ü¡‘¸ü¡¢_¢ò¥‘¸¦¦‘¸*ŸäŸ^ß !¡^}¡ü¡^¢£^A¤l¥^„¥¯¥^ߥò¥^¦¦^<Ÿ4 _ä ;¡_}¡ü¡_¢ò¥_¦¦_OŸoŸ0Ÿ°¡µ¡Pµ¡ü¡]< C PC Ã ^ü¡¢^>¢P¢Ps¢€¢P÷¢£P»£Í£PÛ¤è¤P=¥P¥P„Ÿ‘ŸP‘Ÿ½ Vä ;¡Vî¡ü¡Pü¡ß¥V¦¦V˜ ¬ P£‘£^‘£•£T•£á£^l¥t¥Tt¥„¥^¯¥´¥T´¥Ú¥^á£ÿ£^ñ£û£Pñ£ÿ£^ñ£û£PN U PR c ^ü¡¢^R c Sü¡¢SU c Pü¡ ¢P° Æ 1ŸTž~žUmwmUwm1n_1n2nóUŸ2nAnUAnNn_mwmTwm2nóTŸ2n>nT>nNnóTŸ,m–mV–m´m~xŸ´mÀm^ÀmÄm~xŸÉmn~xŸnn~pŸ2nInVInNnP>mAmuø#Am–mS2nNnSAmwmuø#” $ &3$q"Ÿ2n;nuø#” $ &3$q"Ÿ;nAnuø#” $ &3$u"ŸAnEnø#” $ &3$"ŸLm-n]2nNn]wm–m0Ÿ–mÉmTÔmòmT,m>mUÔ{ÔU{ÔúÔSúÔÕóUŸÕlÕSÔNÔTNÔ]ÕóTŸ]ÕgÕTgÕkÕUkÕlÕóTŸÔÔuÇÔêÔVMÕ]ÕV.Ô1ÔR1ÔYÔPYÔÕ~ŸÕ]Õ~Ÿ]ÕkÕPkÕlÕ~Ÿ1Ô5Ôr $ &3$q"Ÿ5ÔYÔp $ &3$q"ŸYÔ{Ô~ $ &3$q"ŸÕ'Õ~ $ &3$q"Ÿ'Õ+Õ~ $ &3$s"Ÿ]ÕkÕ~ $ &3$q"Ÿ<ÔÇÔVÕMÕV]ÕlÕVqÔÕ_ÕÕ_/Õ3ÕP3Õ]Õ_²Ô¹ÔTºÔÌÔPÌÔêÔQMÕZÕQ‡ÔÿÔ]ÕÕ]MÕ]Õ]ÊÔêÔQMÕZÕQîÔÕ1ŸÔ.ÔU°‡¾‡U¾‡[ˆS[ˆ_ˆóUŸ_ˆ}ˆS°‡É‡Tɇ(ˆU(ˆ_ˆóTŸ_ˆhˆUhˆqˆóTŸqˆ|ˆU|ˆ}ˆóTŸ»‡¾‡u¾‡(ˆs_ˆlˆsqˆ|ˆsׇڇQÚ‡ˆPˆ(ˆ sø#”#Ÿ_ˆlˆ sø#”#Ÿqˆ|ˆPÚ‡Þ‡q $ &3$x"ŸÞ‡ˆp $ &3$x"Ÿˆ(ˆsø#” $ &3$x"Ÿ_ˆlˆsø#” $ &3$x"Ÿqˆ|ˆp $ &3$x"Ÿè‡(ˆQ_ˆeˆQeˆlˆssø#” $ &3$x3&Ÿqˆ|ˆQˆAˆ\_ˆqˆ\Sˆ_ˆ1Ÿ»‡¾‡U¾‡×‡SÐgâgUâg¥hS¥h­hóUŸ­hèhSÐgôgTôghUhÜhóTŸÜhçhUçhèhóTŸéghVh|h\|h¡h|Ÿ¡h¦hV¦h­hóU­h¿h|Ÿ¿hÖh\ÖhÜhPÜhèhVûgþgPþg%hQ%h,h sø#”#ŸÜhçhQþghp $ &3$r"Ÿh%hq $ &3$r"Ÿ%h,hsø#” $ &3$r"ŸÜhçhq $ &3$r"Ÿþghvrp $ &3$8Ÿh%hvrq $ &3$8Ÿ%h,hvrsø#” $ &3$8ŸÜhçhvrq $ &3$8Ÿ#h\h]=hAhPAhoh^\h`hP`hªh]­hÜh]ohshPsh¬h^­hÜh^égûgSðhþhUþhgiSgikióUŸkiwiSðh iT i0iU0ikióTŸkiviUviwióTŸûhþhuþhBiskivisiiPi2iQ2iBiPkiviQiip $ &3$r"Ÿi2iq $ &3$r"Ÿ2iBip $ &3$r"Ÿkiviq $ &3$r"Ÿiisp $ &3$r8Ÿi2isq $ &3$r8Ÿ2iBisp $ &3$r8Ÿkivisq $ &3$r8Ÿ>iBiTCiZiP_iki1ŸûhþhUþhiSð4^5U^5»5S»5Ã5qÈ}ŸÃ5ì5Sð4K5TK5Ý5óTŸÝ5ç5Tç5ë5Uë5ì5óTŸô4ö4u55P5À5]Ã5ì5]5 5p $ &3$x"Ÿ 5^5} $ &3$x"ŸÃ5Ó5} $ &3$x"ŸÝ5ë5} $ &3$x"Ÿ5 5up $ &3$x8Ÿ 5^5u} $ &3$x8ŸÃ5Ó5s} $ &3$x8ŸÝ5ë5s} $ &3$x8ŸG5Â5^Ã5Ý5^^5£5Qn5£5Rr5™5X³5Ã51Ÿô45Uð56U6¾7S¾7È7óUŸÈ79Sð5'6T'6S6US6û8óTŸû89U99óTŸ6”7V”7¶7vŸ¶7È7PÈ7Ô7vŸÔ7Ú7PÚ7)8V)8B8vŸB8ö8Vö8û8Pû89V$6'6R'6O6TO6h6pŸh6˜6 sø#”#Ÿû89T99pŸ'6+6r $ &3$q"Ÿ+6O6t $ &3$q"ŸO6h6p $ &3$q"Ÿh6‹6sø#” $ &3$q"Ÿ‹6˜6sø#” $ &3$s"Ÿû89t $ &3$q"Ÿ99p $ &3$q"Ÿ'6+6vqr $ &3$8Ÿ+6H6vqt $ &3$8ŸH6O6st $ &3$q8ŸO6h6sp $ &3$q8Ÿh6‹6ssø#” $ &3$q8Ÿ‹6˜6ssø#” $ &3$s8Ÿû89vqt $ &3$8Ÿ99vqp $ &3$8Ÿ^6˜6T˜6 7‘ B8×8‘ m6u6Uu6„6 p} $ &3$q"„6‹6 r~ $ &3$q"‹6˜6r~ $ &3$s"˜6û8‘˜m6Á7\È7û8\}6a7]Ú7û7]B8×8]}6Å7^È7û8^67_B8×8_77P7B8‘ ×8û8‘ 7!7P!7Ç7_È7B8_×8û8_6¡6P¡6¾6w¾6ä6‘ä6½7w½7È7‘È7û8w77P7B8‘ ×8û8‘ °6º6^µ8º8^6$6SP©^©U^©ç©Sç©ë©óUŸë©÷©SP©e©Te©“©U“©ë©óTŸë©ö©Uö©÷©óTŸ[©^©u^©®©së©ö©st©w©Pw©è©Vë©÷©Vw©{©p $ &3$q"Ÿ{©©v $ &3$q"Ÿ©®©v $ &3$s"Ÿë©ö©v $ &3$q"Ÿw©{©sp $ &3$s8Ÿ{©®©sv $ &3$s8Ÿë©ö©sv $ &3$s8Ÿ‰©®©"” $ &3$s"ª©ê©\Á©Ù©P˩٩RΩΩ@ŸΩΩRΩΩPÚ©ë©0Ÿ[©^©U^©t©S€i’iU’i!jS!j)jóUŸ)jajS€i«iT«iÞiUÞi)jóTŸ)j3jU3jUjóTŸUj`jU`jajóTŸi’iu’iÞisëij^)j7jsAjUj^Uj`js¥i®iP®i"jV)jajV®i²ip $ &3$q"Ÿ²iÞiv $ &3$q"Ÿ)j7jv $ &3$q"ŸUj`jv $ &3$q"Ÿ®i²itqp $ &3$8Ÿ²i¹itqv $ &3$8Ÿ¹iÞisv $ &3$q8Ÿ)j7jsv $ &3$q8ŸUj`jsv $ &3$q8Ÿ¶i&j])jaj]Þi&j]AjUj]Þi$j\AjUj\îijQj&j } $ &ŸAjRjQRjUj } $ &Ÿj)j1Ÿi’iU’i¥iS „k„Uk„®„_®„=‘‘˜~ „o„To„æ„Sæ„=‘óTŸ „o„Qo„æ„‘¨~æ„=‘óQŸ „o„Ro„æ„‘ ~æ„=‘óRŸ „o„Xo„=‘óXŸ€„„„P„„æ„^æ„=‘‘À~„‘„P‘„=‘‘~„æ„1Ÿæ„”‹‘È~ ‹d‘È~dªXªî‘È~îŽSŽ=‘‘È~„æ„0Ÿæ„†]†£‰]¨‰=‘]„æ„0Ÿæ„ø„V•…ñ…V2†\†#Ÿi‡v‡0Ÿ°‡ˆ-Ÿ ˆSˆ{ŸjŠ·Š/Ÿ­‹ï‹#Ÿï‹Œ{ŸŒ¥ŒV¥ŒÍŒ#ŸîŒ V ?-Ÿ?d{ŸŽDŽ/ŸDŽ…Ž#Ÿ…Ž·Ž-Ÿ·ŽøŽ{Ÿ}¢/Ÿì #Ÿ 1-Ÿ1Q{Ÿ‘Ì/ŸÌé-Ÿé ‘/Ÿ„æ„0Ÿæ„ø„_•…ñ…_<†\†#Ÿi‡v‡0Ÿ¾‡ˆ-ŸˆSˆ-Ÿ‚Š·Š-Ÿº‹ï‹-Ÿï‹Œ{ŸŒ¥Œ_îŒ _$?#ŸŽDŽ/ŸDŽ_Ž-Ÿ_Ž…Ž/Ÿ…Ž–Ž-Ÿ–Ž·Ž/Ÿ·ŽÝŽ/ŸÝŽøŽ-Ÿì {Ÿ1{Ÿ1Q#Ÿ‘±#Ÿ±Ì-ŸØé-Ÿé ‘{ŸÌ„=…\=…F…|ŸF………\……Œ…|ŸŒ…ñ…\†<†\<†O†|ŸO†І\Іê†Rê†ÿ†\ÿ†‡|Ÿ‡<‡\<‡E‡|ŸE‡¾‡\¾‡ɇ|ŸÉ‡ä‡R䇸‡|Ÿø‡ˆ\ˆˆ|Ÿˆ2ˆ|Ÿ2ˆEˆ|ŸEˆlˆ\lˆuˆ|Ÿuˆœˆ\œˆ©ˆ|Ÿ±ˆ±ˆ\±ˆG‰|ŸG‰„‰R„‰Š\ŠŠ|ŸŠ Š|Ÿ Š‚Š\‚Š‚Š|Ÿ‚Š–Š|Ÿ–Š©Š|Ÿ©Š·Š\·Š[‹|Ÿ[‹ ‹R ‹¦‹|Ÿ¦‹­‹R­‹º‹\º‹º‹|Ÿº‹΋|ŸÎ‹á‹|Ÿá‹ï‹\|ŸŒàŒ\àŒéŒ|ŸéŒ$\$:|Ÿ:d\ds|ŸsÔRÔŽ|ŸŽŽRŽŽ\ŽŽ|ŸŽ'Ž|Ÿ'ŽDŽ\DŽLŽ|ŸLŽ_Ž\_Ž_Ž|Ÿ_ŽhŽ|ŸhŽ…Ž\…Ž–ŽR–Ž–Ž\–Ž–Ž|Ÿ–ŽŸŽ|ŸŸŽ·Ž\·Ž·Ž|Ÿ·ŽÀŽ|ŸÀŽÝŽ\ÝŽåŽ|ŸåŽ\&R}¢\¢ì|Ÿìì\ìþ|Ÿþ\,|Ÿ,1\1C|ŸCQ\Q‘|Ÿ‘‘\‘£|Ÿ£±\±¹|Ÿ¹Ø\ØéRéé\éû|Ÿû ‘\ ‘!‘RІã†\±ˆ„‰\·Š¦‹\¦‹­‹rŸdŽ\}\¢ì\Q‘\ ‘8‘\¸„ø„S……•…sŸ•… …Q …Ù…S2†K†sŸK†\†~ŸŠ†¼†sŸ¼†ê†^ÿ†‡sŸ‡ ‡SR‡f‡Si‡v‡S´‡ˆQ ˆAˆsŸAˆSˆ~ŸˆˆˆSœˆ¦ˆsŸ¦ˆ±ˆ~Ÿ±ˆ`‰sŸ`‰x‰^„‰Œ‰sŸŒ‰”‰qŸRŠ\ŠSnŠ·ŠQ·Š€‹sŸ€‹‹^ ‹­‹~Ÿ­‹Ý‹sŸÝ‹ï‹~Ÿï‹ÿ‹sŸÿ‹Œ~ŸŒ¥ŒS¥ŒÀŒsŸÀŒÍŒ~ŸîŒ S ?Q?WsŸWd~Ÿd}sŸ}™^ªésŸéŽ^ŽDŽQDŽHŽsŸHŽ_Ž~Ÿ_Ž}ŽsŸ}Ž…Ž~Ÿ…Ž·ŽQ·ŽÕŽsŸÕŽÝŽ~ŸÝŽáŽsŸáŽøŽ~Ÿ8^}¢Q¢úsŸú ~Ÿ 1Q1?sŸ?Q~ŸQ‘sŸ‘ ‘Q ‘‘sŸ‘8‘^„æ„ |¯Ÿ†¼† þ²Ÿ¼†ê†Qꈄ‰ ×´ŸôŠ ‹ Ý´Ÿdª Ý´ŸªŽ þ²Ÿ+Q+7X¢ì Ý´ŸQ‘ ×´Ÿ ‘8‘ Ý´Ÿ„æ„0Ÿæ„†w††‘€~†݆wꆌwŒCŒ‘€~CŒTŒwTŒƒŒ‘€~ƒŒ‘Œw‘Œ¥Œ‘€~¥ŒôŒwôŒ ‘€~ <w<x‘€~x=‘w³„·„P·„ׄ_ׄñ…‘ˆ~†u‘ˆ~}8‘‘ˆ~ôŠ1‹P1‹ ‹‘Ì~dvPvª‘Ì~¢±P±ì‘Ì~ ‘8‘‘Ì~ ‘3‘ `ÙŸ ‘‘‘Ð~Ÿ‘3‘SÞŠôŠsŸ,‹6‹ þ²Ÿ,‹6‹\§ç å´Ÿ§ç\8  ÙŸ‘Ð~Ÿ8S‰"‰ þ²Ÿ‰"‰\îó à´ŸîòUòó\xŒ å´Ÿx|U|Œ\°BCUC/E^/EXEóUŸXEXH^XHûHóUŸûHJ^J¢LóUŸ¢LºL^ºLùLóUŸùL?M^?Mñ`óUŸñ`bt L LTôwûwT L LSôwxSLLQL LtôwûwQ)L@LTxxT)L@LSxxS1L=LQ=L@LtxxQPLYLPgLkLUÒ`é`Pé`ì`v‹p—pP—pšpvXXPX.Z‘°|cÔc‘°|ld{e‘°|ßgúg‘°|h„h‘°|àhi‘°|?ili‘°|li˜iP˜i·i‘°|Ùj…k‘°|Ÿlàl‘°| mFm‘°|m¯m‘°|0oo‘°|±oÑo‘°|ÏuEv‘°|Rvvv‘°|Þvw‘°|{i·i1Ÿ mFm1Ÿ•i·iR mFmRYhY]ld·d]?iUi]ld{e^ßgúg^?iUi^m¯m^Ïuâu^Ödàd0Ÿàd{e]ßgúg]m¯m]Ïuâu]ºdÌd]ÏdÑdPÑd{e_ßgäg_mƒm_eZˆZPq}x}Py}~}P·iÉiTÊiùiP]]P](_]ôl m]ªn0o]õp q]Ìq!r] t¬u]Ÿv»v]wœw]Îzà|]ü~g]€,]D…]ŠN‚]ª‚iƒ]Ù[™]0Ÿôl m0Ÿ¯mªn0Ÿ qÌq0Ÿ!r=r0Ÿ tèt0ŸètôtPôtmu^»vÞv0Ÿ™zÎz0Ÿà|}0Ÿ9\G\|ÿŸØmìm0Ÿ¸zÎz0Ÿ9\ ^‘€|ôl m‘€|ØmWn‘€|\nän‘€|õp{q‘€|Ìq!r‘€| t¬u‘€|ŸvÞv‘€|wdw‘€|¸z{‘€|¿|à|‘€|}}‘€|}}PM€€‘€|們€|Š´‘€|ª‚iƒ‘€|n!nPumu0Ÿmu‚uP‚u•u^ª‚ƒ^Yƒ`ƒP`ƒiƒ^ƒ#ƒP#ƒYƒ^Õz{ZH{T{ZT{`{Yl{p{Yp{Š{‘è{Š{Ž{XŽ{­{‘è{­{­{X­{µ{xŸµ{Ç{XÈ{Ó{sÓ{Þ{s8ŸÞ{æ{PNgsM€Y€ZY€y€‘è{å€ù€Zù€‘ð{ý‚Y3‚N‚‘è{ÞzæzPæz¿|‘Ø{Ng‘Ø{€,‘Ø{Wq‘Ø{Š´‘Ø{æN‚‘Ø{È{Ó{ p $ &ŸNg p $ &ŸÚ{¿|^Yg^€M€^,^Wq^ùz|_Ng_f€y€Py€_P!_Š´_æN‚_{<{PæòP6^¡^^Ñ\þ\ ´ŸÑ\Ù\‘ð}ŸÙ\þ\]É_%`\%`1` ‘Ð|” $ &Ÿ1`6`P6`C` ‘Ð|” $ &ŸìBCUC C^ ½CÓC‘ø{ßFíFPíFöF‘ø{ ½CÓC^ßFöF^ÅCÓCQßFíFQtlŸlVtlŸl‘˜|tlŸl‘€|tlŸl‘à{tlŸlS¼yÀyPÀyÏyV¼yÀyXÀyÏyw¼yÀyRÀyÏy‘€|¼yÀy‘à{# ¼yÀyUÀyÏy^°’Ý’UÝ’2“]2“[“óUŸ[“¢“]¢“­˜óUŸ­˜™]™¹šóUŸ¹š7›]7›<›óUŸ°’á’Tá’2“^2“[“óTŸ[“­“^­“­˜óTŸ­˜™^™¹šóTŸ¹šàš^àš›óTŸ›7›^7›<›óTŸâ’ “P “Q“S[“›S›%›P7›<›S“ “T “2“\[“åš\ƒ“}”V}””T”Þ”VÞ”â”T┆•V†•Š•TŠ•!–V!–%–T%–Ï–VÏ–Ó–TÓ–h—Vh—l—Tl—›—VÛ—”˜V™‘™V‘™œ™Tœ™³™V³™¼™T¼™Ó™VәܙTÜ™ó™Vó™ü™Tü™ šV ššTš+šV+š4šT4š¹šV¢“–]–“–T —,—T›—Û—VÛ—8˜]=˜”˜]”˜­˜V옙T™Ó™] š¹š]››P­“­˜^™¹š^ù”ú–‘˜ú–þ–aþ–=˜‘˜[˜­˜‘˜™M™‘˜‘™®™‘˜³™Î™‘˜Ó™î™‘˜ó™ š‘˜}–”–1Ÿ˜Ę0ŸÄ˜Ä˜VĘ̘vŸÖ˜™VÔš›V€àÈàUÈà„ñ‘¨~€àÌàTÌà‡áV‡áëáóTŸëáRãVRã®äóTŸ®ä4åV4ååóTŸå÷åV÷åæóTŸæŒæVŒæ¦çóTŸ¦çÀçVÀçèóTŸèZèVZèiñ‘ø~iñnñóTŸnñ„ñ‘ø~€àÌàQÌààáwàáëá‘ ~ëá8âw8âdâ‘ ~dâãwã*ã‘ ~*ãæwæBæ‘ ~BæNæwNæŒæóQŸŒæ\ìw\ì‚ì‘ ~‚ìËïwËïïï‘ ~ïï„ñw€àÌàRÌà²á\²áëáóRŸëáRã\Rã®äóRŸ®ä4å\4ååóRŸåŒæ\Œæ¦çóRŸ¦çÀç\ÀçèóRŸèAè\Aèiñ‘ð~iñnñóRŸnñ„ñ‘ð~€àÌàaÌà„ñ‘°~€àÌàbÌà²á‘¸~²áëáóõ)ŸëáR㑸~Rã®äóõ)Ÿ®ä4呸~4ååóõ)ŸåŒæ‘¸~Œæ¦çóõ)Ÿ¦çÀ瑸~Àçèóõ)Ÿè/葸~/è„ñóõ)ŸÕàÙàPÙàÐáSëáiñSnñ„ñSÕà²á‘¸~ö)‘°~ö)ŸëáR㑸~ö)‘°~ö)Ÿ®ä4呸~ö)‘°~ö)ŸåŒæ‘¸~ö)‘°~ö)Ÿ¦çÀ瑸~ö)‘°~ö)Ÿè/葸~ö)‘°~ö)ŸÕà²á0ŸëáRã0Ÿ®ä4å0ŸåŒæ0Ÿ¦çÀç0ŸèZè0ŸZèœèVœè£èP£èiñVnñ„ñVÕà²á0ŸëáRã0Ÿ®ä4å0ŸåŒæ0Ÿ¦çÀç0ŸèZè0ŸZèÀî‘è~ÀîÙîPÙîiñ‘è~nñ„ñ‘è~Õà²á0ŸëáRã0Ÿ®ä4å0ŸåŒæ0Ÿ¦çÀç0ŸèZè0ŸZèçî‘à~çî÷îP÷îiñ‘à~nñ„ñ‘à~ãâ®ä‘Ð~4åå‘Ð~·å÷å‘Ð~Œæ¦ç‘Ð~Àçiñ‘Ð~nñ„ñ‘Ð~â â‘È~oá²á^câ7ã^×äýä^å4å^åŒæ^-ãNãP}ã‰ã]‰ãÌãVÌã®ä\4å<å]<åDåVDåå\Àçîç\îçüç]üçèVè*èP!ã%ãP%ã®ä]4åå]Œæ¦ç]ÀçZè]ZèLê\LêQêPQêeë\eërëPrë=ì\Bì3î\8îï\ï(ï\-ïiñ\nñ„ñ\—ã®äVDååV¦æªæPªæ¦çVÀçîçVèiñ^nñ„ñ^oá²á]Bâ!ã]×äýä]å4å]åŒæ] Õà1áR1áoávëáâR®äÂäRýäåv¦çºçR>æJæP/è>èP>èiñ‘¸~nñ„ñ‘¸~Zè„èT§èõèTééT2éIéTQêlêT]ïcïT[êœê_œêžêpŸôê ës ë ëR ëûë‘Ø~Pïsï_sïxïPXðnð‘Ø~nñ{ñ‘Ø~ë/ëQ/ë9ërŸXðnðQ[ê#ë]Pïxï]Xðnð]ôê9ëPXðnðPnñ{ñ þŸë9ë0ŸXðnð0Ÿxê£êPPïWïPXï]ïP,ëZëU}ë­ëU­ë±ëT·ëçëUnñ{ñU-é2éPãè é]MéRéPRé”é]ûëì]Bì`ì]`ì í_ í!í]ÀíÐíTÐíáí]Hîaî]Ÿî÷î]-ï?ï_?ïDïPxïð_•ð¿ð_2ñOñ_™í§íP§íÐí]Oñiñ]»éÕé1ŸÕéQê_nðð1Ÿð‹ðP‹ð•ð_ñ2ñP!ê>ê ¸¯Ÿ!ê=êU=ê>ê]nðrð}Ÿrð}ðU}ðð}Ÿ…ì”ìP”ìîìRxïïRï¬ï‘Ø~ÇïéïPíïîïPîïðR•ð¿ðR2ñ>ñR>ñOñ‘Ø~³î·îPð(ð‘ð~âðíð‘ð~ð(ðSâðíðSð(ðQâðìðQ=ðAð‘ð~ññTññ‘ð~=ðAðSññS¿ðÙð‘ð~{ññTñ„ñ‘ð~¿ðÙðS{ñ„ñSÇðØðP{ññP¦æªæPªæ¦çV®äÂä\¦çÀç\®äÂäS¦çÀçS´äÂäP¦çºçPÀW×WU×WîWSîWXVX!Xp!X*XP*XtXVtXxXTyX~X^~XÓXVÀWÞWTÞW'X]'X*XóTŸ*XÓX]âWåWPåW%X\*XÓX\âW"XS"X*XóUŸ*XÓXS@XCXPCXÓX^@XCXPCXÓX^¥X­XSÀ>Ô>UÔ>ø>Vø>?óUŸ??V?8?óUŸÀ>Ø>TØ>ø>Sø>?óTŸ??S?8?óTŸÙ>ÿ>Sÿ>?P??S?6?Q6?8?SÝ>ø>s $ &`v"Ÿ??s $ &`v"Ÿ??s $ &`óU"Ÿ? ?q $ &`óU"Ÿ ?(?V(?8?vàŸ@?Q?UQ?a?óUŸ@?U?TU?a?óTŸ@?U?QU?a?óQŸ@?U?RU?a?óRŸV?`?P`?a?pÈ}ŸPnnUnçp^çpqóUŸqMq^MqÒróUŸÒrs^sÊsóUŸÊsÜt^Üt8uóUŸ8u§u^§uvóUŸvFv^Fv¦vóUŸ¦væv^æv;wóUŸ;wvw^vwïwóUŸïw“x^“xÇxóUŸÇxÓx^Óx yóUŸ yy^yeyóUŸeyhy^hyU{óUŸU{X{^X{{óUŸ{’{^’{Ç{óUŸÇ{Ê{^Ê{|óUŸ|“|^“|È|óUŸÈ|ø|^ø|dóUŸd‡^‡æóUŸæ(€^(€„€óUŸ„€l‚^l‚X„‘ X„„óUŸ„Q…^Q…V…óUŸV…†^Pn…nT…nçp\çpqóTŸqMq\MqÒróTŸÒrs\sÊsóTŸÊsÜt\Üt8uóTŸ8u§u\§uvóTŸvFv\Fv¦vóTŸ¦væv\æv;wóTŸ;wvw\vwïwóTŸïw“x\“xÇxóTŸÇxÓx\Óx yóTŸ yy\yeyóTŸeyhy\hyU{óTŸU{X{\X{{óTŸ{’{\’{Ç{óTŸÇ{Ê{\Ê{|óTŸ|“|\“|È|óTŸÈ|ø|\ø|dóTŸd‡\‡æóTŸæ(€\(€„€óTŸ„€l‚\l‚X„‘¨X„„óTŸ„Q…\Q…V…óTŸV…†\Pn…nQ…n†óQŸ‘n•nP•nÈrSÈrÒr ‘Ð~ hŸÒrƒSƒƒw hŸƒŸƒVŸƒ¤ƒw hŸ¤ƒìƒS샄V„†S™nžnPžnçp]qMq]Òrs]ÊsÜt]8u§u]vFv]¦væv];wvw]ïw“x]ÇxÓx] yy]eyhy]U{X{]{’{]Ç{Ê{]|“|]È|ø|]d‡]æ(€]„€e‚]e‚X„‘˜„Q…]V…†]ÀnñnZ>o“oZµoFpZFpYp‘à~YpvpZvpÆp‘à~ÒrñrZñrs‘è~Ês¶tZ¶tÜt‘à~8u§uZvFvZ¦vævZ;wvwZïwCxZCxZx‘à~}xˆxZ{’{Z|“|ZÈ|ø|Zd‡ZæüZü(€‘à~„€—€‘à~„Ÿ„‘à~Ónìnp ÿÿŸìnñn{ ÿÿŸ>oEop ÿÿŸEo“o{ ÿÿŸµo¿op ÿÿŸ¿oFp{ ÿÿŸFpYp ‘è~” ÿÿŸYpvp{ ÿÿŸvpÆp ‘Ø~” ÿÿŸÒrñr{ ÿÿŸñrs ‘à~” ÿÿŸÊs¶t{ ÿÿŸ¶tÜt ‘Ø~” ÿÿŸ8u§u{ ÿÿŸvFv{ ÿÿŸ¦væv{ ÿÿŸ;wvw{ ÿÿŸïwCx{ ÿÿŸCxZx ‘Ø~” ÿÿŸ}xˆx{ ÿÿŸ{’{{ ÿÿŸ|“|{ ÿÿŸÈ|ø|{ ÿÿŸd‡{ ÿÿŸæü{ ÿÿŸü(€ ‘Ø~” ÿÿŸ„€œ€ ‘Ø~” ÿÿŸ„¤„ ‘Ø~” ÿÿŸÓnñn0Ÿ>o“o0Ÿµop0ŸpØpVq%qsèŸ%qMqVºqÀqP×qrs¸ŸÒrõr0ŸõrsPssVsÊss¸ŸÊsÖt0ŸÖtÜtPÜt8uV8ušu0ŸøuvVv6v0Ÿ6v@vs¸Ÿ@vFvV¦vÖv0ŸÖvàvs¸ŸàvævV;wfw0Ÿfwpws¸ŸpwvwVïwTx0ŸTxZxPZxcxVcxrxsПrx}xV}xˆx0Ÿ{’{0Ÿ|H|0ŸH|R|s¸ŸR|]|V]|…|0Ÿ…|“|V“|È|s¸ŸÈ|ø|0Ÿø|O}s¸ŸŒ}¼}s¸Ÿd‡0Ÿæ€0Ÿ€€s¸Ÿ€(€V„€®€0Ÿ®€È€PÈ€OVOƒs¸Ÿƒƒw0ŸƒŸƒv¸ŸŸƒ¤ƒw0Ÿ¤ƒìƒs¸Ÿìƒ„v¸Ÿ„R„s¸ŸR„g„P„ï„Vï„Q…s¸ŸV…þ…s¸ŸÓn“o0Ÿµoºq0ŸºqÀq1Ÿ×qr0ŸÒrÜt0Ÿ8uøu0Ÿøuv_vQ…0ŸV…†0Ÿð‚ƒ‘è~ƒ3ƒS3ƒ7ƒsŸ7ƒšƒS샄SXr”r…V¡¤pŸ¤¬P¬Ñ‘è~l‚§‚]§‚"„]ï„…”……V…2…‘è~2…L…Vm…z…pŸz…ƒ…P¸pÆpQl‚€‚VȂ˂PË‚ƒVƒ¤ƒ‘ø~샄‘ø~„¨„Q¨„À„‘Ø~¡p»pPþqrPs$sPp~Œ~PZ€k€P;xCxPp pP pØp_È€]‚_„Q…_V…þ…_æ€ë€Pë€:„‘Ø~À„Q…‘Ø~V…þ…‘Ø~u‚§‚‘è~ð‚„‘è~ï€ó€ pÿu)ÿŸó€X„ ‘”u)ÿŸÀ„Q… ‘”u)ÿŸV…þ… ‘”u)ÿŸï€H0ŸHX„‘à~À„ï„0Ÿï„Q…‘à~V…þ…‘à~ï€H0ŸHX„‘€À„ï„0Ÿï„Q…‘€V…þ…‘€0Ÿ‹ÑVÀ„…0Ÿ…)…V2…Q…0ŸV…ƒ…Vƒ…¡…0Ÿ¡…¦…vÿŸÑ…þ…0ŸXƒ[ƒ |ÿ2$p"[ƒ`ƒ |ÿ2$p"mƒpƒ |ÿ2$p"pƒuƒ |ÿ2$p"ý(€P„€ €P€(€Q„€ €Q €È€‘Ø~·tÅtPérñrPl€v€Pªq®qT XUX«S«twt‘‘w‘¶‘¶»w»ëSë&w&:&‘:&º(w \T\Z^ZóTŸ}^}»óTŸ»`^`eóTŸe^^^ìóTŸìº(^ \Q\º(óQŸ \R\Z]}]»ã]í`]eì]ó]+›]Ѻ(]hlPlx\º(\ptPtvVº(V‹~_»_ØÜPܺ(_œËPË»‘œàðPð‘œPº(‘œÛWS­SR}SðTSŠãS (S0ÀSÈÚSâZSb˜S ØSÝåSí`Se¸SÀ¡S©ÒSÚ2S:DSL­SÑþSV!^!Sf!Ò!SÚ!ä!Sì!D"SL"V"S^"ó#S6$›$SÖ$ô%Sü%&SG&Ž&S–&'S;'C'SK'j'St'Û'Så'(S()(Sj(‘(SÛ1Ÿ­1ŸR»1ŸðT1ŸŠí1Ÿ º(1ŸÛZ0Ÿ­0ŸR}0ŸðT0ŸŠã0Ÿ [0Ÿ[`1ŸeÝ0ŸÝâ1Ÿâ 0Ÿ 1Ÿó0Ÿóø1Ÿøü%0Ÿü%G&1ŸG&6'0Ÿ6';'1Ÿ;'e(0Ÿe(j(1Ÿj(Œ(0ŸŒ(‘(1Ÿ‘(º(0ŸÛZ0Ÿ­0ŸR»0ŸðT0ŸŠã0Ÿ `0Ÿeü%0Ÿü%G&1ŸG&º(0ŸžãP~žP‰•P¥ãR~žR‰™R<Q­fSf†^†Ž~ŸŽ³^³³P³ºpxŸºÃPNc^Ñç^çìsŸìSÑSþV!S¦©P$EPP¾ËP)(-(P-(j(S‘(º(SI(d(Q''P';'S((SŠ$Ö$ ÈÑŸŠ$±$ |¯Ÿ±$Ì$SÌ$Ð$RšŸPŸ³Y&&P&G&S°ŽýŽUýŽóUŸNUNˆ\ˆ›U›\+U+e\eiUiŸ\Ÿ¤U¤õ\õúóUŸ°ŽýŽTýŽóTŸHTHˆVˆ˜T˜V(T(eVeiTiŸVŸ¤T¤õVõúóTŸ°ŽýŽQýŽóQŸZQZˆóQŸˆ•Q•óQŸ%Q%úóQŸ°ŽýŽRýŽóRŸKRKˆSˆŸRŸ¯S¯óRŸ/R/SSStóRŸt{S{ðóRŸðóSóúóRŸ°ŽýŽXýŽóXŸ^X^ˆóXŸˆŸXŸóXŸ/X/úóXŸÌŽýŽ0Ÿ_0Ÿ_y1Ÿˆ¨0Ÿ¨±PC0ŸCHPH²1ŸÚõ1Ÿ_yPHiPt‘PŸ¤PÚõPðFGUG&GS&G'GrzŸðFGTG'GóTŸðFGQG'GóQŸðFGRG'GóRŸðFGXG'GóXŸ‹)‹U)‹_‹S_‹-Œ‘¨-ŒBŒSBŒ>‘¨‹1‹T1‹Œ^ŒŒóTŸŒ>^‹1‹Q1‹ÿ‹\ÿ‹ŒóQŸŒ>\‹1‹R1‹’‹w’‹-ŒóRŸ-ŒxŒwxŒ©ŒóRŸ©ŒÊŒwÊŒóRŸ+w+>óRŸ=‹A‹PA‹Œ]Œ>]E‹I‹PI‹Œ_Œ>_v‹ý‹VŒ-ŒVGŒÅŒVŌʌPʌ܌V+>V_‹ü‹SŒ-ŒSGŒëŒS>Sf‹‹Z©Œ¼ŒZ¼ŒÊŒ‘°*ZÑ‹ê‹RыڋR0ÇZÇUZǸÇ\¸Ç»ÇóUŸ»ÇÈ\È$ÈU$È-È\HǶÇV¶Ç»ÇP»Ç(ÈV(È-ÈP_ÇiÇPpÇzÇ]€ÇŠÇSŠÇ•ÇsŸ•ÇšÇS»ÇûÇ]ÈÈP ‰@‰U@‰Š_Š ŠóUŸ ŠõŠ_V‰r‰Pr‰ŠV Š'ŠP'ŠõŠVV‰\‰S\‰ ‰^ ‰²‰~Ÿ²‰²‰s0s $0*(Ÿ²‰Á‰s0s $0*(1ŸÌ‰Ô‰sŸÔ‰í‰\í‰ñ‰Qò‰÷‰sŸ Š;Š^;ŠZŠ~ŸŠŠ§Š^§ŠÃŠ~ŸÃŠõŠ^V‰Š]Š ŠP ŠNŠ]NŠZŠPZŠõŠ]NŠZŠP0SHSUHSÊSSÊSÚSóUŸÚS•US•UUóUŸU¸US¸UÉURÉUÊUóUŸÊUžVSžV³VT³V´VóUŸ´VÞVSTSXSPXSËSVËSÙSUÚS–UVU½UVÊU¢VV´VÞVVTSjT0ŸjTqT1ŸqTzTPÂTÇT1ŸÇTÍTPU"U1ŸÊUéU0ŸtV´V0ŸÌVÞV0ŸcSÓS]ÚSšU]UÃU]ÊU­V]­V³Vp”?Ÿ´VÞV]cSÓS } $DN$+ÿŸÚSšU } $DN$+ÿŸUÃU } $DN$+ÿŸÊU­V } $DN$+ÿŸ­V³Vp”? $DN$+ÿŸ´VÞV } $DN$+ÿŸcSÁSs ÚS÷Ss ÊUãUs “VžVs žV³Vt ´VÌVS&T\Tr ÿÿŸtV“Vr ÿÿŸzT°Tp ÿÿŸ°T´T s” ÿÿŸéUVp ÿÿŸV V s” ÿÿŸÕT Up ÿÿŸ UU s” ÿÿŸ V"Vp ÿÿŸ"V+V s” ÿÿŸ IéIUéIMVM MóUŸ M&SV I½IT½IãLSãL MóTŸ M¿PS¿P0QóTŸ0Q!SS!S&SóTŸ IÈIQÈIÙL^ÙL MóQã¨óQ0.(Ÿ M©P^©P0QóQã¨óQ0.(Ÿ0QÇQ^ÇQÞRóQã¨óQ0.(ŸÞRçR^çR&SóQã¨óQ0.(Ÿ IéIRéIãL_ãL MóRŸ MÚP_ÚP0QóRŸ0Q!S_!S&SóRŸãIM\ M&S\J JP J·L] M©P]0Q}Q]·LÆLPÆLM]©P0Q]}Q&S]0Q}QS§Q³QPÞRøRTáPñPP&Q0QPRRP‡R˜RP*J`Jp ÿÿŸ`JdJ s” ÿÿŸYMrMp ÿÿŸrM{M s” ÿÿŸ ,J,UJ,N1SN1X1óUŸX1¨4S¨4Í4óUŸÍ4ß4Sß4á4óUŸ ,J,TJ,W1_W1X1óTŸX1á4_ ,8,Q8,6-\6-X1óQŸX1z1\z1–1óQŸ–1B2\B2h4óQŸh4á4\ ,J,RJ,^,]^,s,Ps,S1]X1–1]–1®1P®1á4] ,J,XJ,K/‘°K/X1óXŸX1z1‘°z1–1óXŸ–1d2‘°d2Z4óXŸZ4á4‘°V,Z,PZ,O1VX1á4V;-?-P?-X1‘¨z1–1‘¨B2h4‘¨@-R-PR-X1‘¸z1–1‘¸B2h4‘¸ ,-0Ÿ-+-XX1o1Xo1z1‘¨–1B20Ÿh4á40Ÿ--P--XË,Ï,PÏ,-‘¨X1k1‘¨4á4‘¨Ó,-P-­-^X1z1^Z4h4^4•4P•4á4^;-Q1\z1–1\B2h4\x,|,P|,à,wà,-‘ -¨-w¨-Ñ-‘ Ñ-Þ-wÞ-.‘ ..w.;.‘ ;.H.wH.l.‘ l.y.wy.Ÿ.‘ Ÿ.½.w½.O/‘ O/e/we/™/‘ ™/©/wX1z1w–1Ä10ŸÄ12w2=2‘ =2d2w°2Ú2wh3t3wt3™3‘ ™3Á3wÁ3â3‘ â34w4?4‘ ?4D4wZ4˜4w‚,‹,PÄ1Û1P–1Í1"” $ &3$s"ë1ï1Xï1B2‘¸œ/Ÿ/PŸ/­/^š0¹0P°2ö2^—3¥3Pà3î3PÍ-.P.8.P9.i.Pj.š.P›.Ù.PB2N2PN2d2|ˆ¸/0^0)0wö23^3h3wÈ2Þ2PÞ2ö2w½2Ç2P 33P3:3~Ÿ:3:3^:3h3~Ÿ353PO3e3PŸ0¹0YÍ-Ú-P..P9.D.Pj.u.P›.¨.PŸ0©0Y$131P41X1Pz1–1P41I1#z1Š1#†1–10Ÿë01‘¨D4T4PT4Z4‘¨ë01SD4Z4Só0ÿ0Qÿ01‘¨#D4T4QPùnùUnùçù\çùúóUŸúMú\PùuùTuùú]úúóTŸúMú]PùuùQuùùùSùùúóQŸúMúSPùuùRuùýùVýùúóRŸúMúVvù‚ùP‰ùùPùú^úMú^Žù¸ùPëù÷ùPçùëùPëùÿù\ÿùúPóù÷ùT÷ùøùVóù÷ùUàVWUWHWVHWKWóUŸKWrWUrW{WV{W~WóUŸ~W—WU—W½WVàVWTW&WS&W3WPKWwWS~WŽWSŽWWQW½WSàVùVQùVJW\JWKWóQŸKW^WQ^W}W\}W~WóQŸ~W½W\ WWP4WGWPW—WPùV!WQƒW—WQKWrW"” $ &3$u"~WW"” $ &3$u"0GzGUzG­G\­GÇGUÇGÑG\ÑGÔGóUŸÔGðG\ðGöGUöGH\HHUH(H\(H.HU.H¦H\0GzGTzGÎGSÎGÔGóTŸÔGtHStH‡HP‡H¦HS0GXGQXG­GV­G²GQ²GÏGVÏGÔGóQŸÔGHVH HQ H¦HVH&HPQHdHPOG­G]µGÓG]ÔG¦H]&H(HP]GzG"” $ &3$u"ðGöG"” $ &3$u"öGúG"” $ &3$|"° Ñ UÑ 6\6=óUŸ=è\° Õ TÕ  S èóTŸ° Õ QÕ w=óQŸ=ZwZèóQŸá å På 8]=è]ï ó Pó 4V=èVý _:^=è^  P 3S=èSpjŒjUŒjÇj]ÇjÈjóUŸÈj=k]=k>kóUŸ>k|k]|k}kóUŸ}kPl]PlQlóUŸQl•l]•lšlóUŸšl m]pjjTjÂjSÂjÈjóTŸÈj8kS8k>kóTŸ>kwkSwk}kóTŸ}k,lS,lQlóTŸQllSl™lT™l¯lóTŸ¯l mSpjjQjÃjVÃjÈjóQŸÈj9kV9k>kP>kxkVxk}kóQŸ}k©kV©kQlóQŸQl‘lV‘l móQŸ‘j¯jP¯jÅj\Èj*k\*k7kP>kzk\}kNl\Ql“l\“l™lUšl m\BlQlP©kìkVìkøkPøklpŸllP%l,lP,lKlSKlNl|šl¯lS¯lÂlPÂlÃlvŸÃlÈlPÈlælVælëlPëlýlV²kÓkPël÷lPølýlP,lBlTšl¬lT,lBlTšl¬lT 6 U6 ´ V´ Y óUŸY n Vn à óUŸÃ ä Vä + óUŸ+ E VE J óUŸJ X VX ¯ óUŸE L PL S SY ½ Sà % S+ W S] ¯ SP _ p_ V \Y À \à ( \+ J \J V pV W  q3$s"] ¯ \´ 0 V] m Vƒ ¯ VP  0Ÿ - P- 0 ]0 N 0ŸY ~ 0Ÿ~  ]à ñ 0Ÿñ ö ]+ ƒ 0Ÿƒ Œ PŒ ¯ ]n z Pz Ÿ Vä ö V & V “ V€ ¥ U¥ î Sî ò óUŸò  S  U  óUŸ  S™ ï Vò  V  VÐ Þ T  TÐ Þ S  SÓ Û QÛ Þ t  Qª{ªU{ª×ªVתتóUŸØªÝªVªªTªÖªS֪تóTŸØªÝªS`¬Œ¬UŒ¬5Á‘`¬•¬T•¬ø¯Sø¯°óTŸ°5ÁS`¬•¬Q•¬û¯\°¼\¼¼P¼5Á\`¬•¬R•¬¦­‘ˆÑ­L¯‘ˆ°ì°‘ˆ±É´‘ˆxµù·‘ˆª¸¹‘ˆZ¹Êº‘ˆ »å»‘ˆå»ê»Pê»r¼‘ˆͼ5Á‘ˆ`¬•¬X•¬ÿ¯^°Ã»^ûȻPÈ»5Á^`¬•¬Y•¬³¬]v±5³]®³Â³]³´óYŸ.´M´]”´«´]Ù¹º] »«»]«»°»P°»¼]4¿Ø¿]™¬¥¬P¥¬ù¯V°v±Vv±…±P…±5ÁVɬ­sè#Ñ­û­sè#±J±sè#j´}´sè#šºÊºsè#Ѭ­YÑ­û­Y±J±Yj´´Y´”´‘˜šºÊºYÙ¬î¯_‹°v±_´.´_M´”´_«´Ù¹_pº »_r¼³½_Ô½4¿_õ¿5Á_²±Á±PÁ±³_.´M´_”´«´_Ù¹ë¹_ »¼_4¿Ø¿_™¬G¯0ŸG¯î¯1Ÿ°ÿ°0Ÿÿ°±1Ÿ±É´0ŸÉ´xµ1Ÿxµù·0Ÿù·Š¸1ŸŠ¸¹0Ÿ¹Z¹1ŸZ¹Êº0ŸÊº »1Ÿ »r¼0Ÿr¼Í¼1ŸÍ¼5Á0ŸÞ±í±Pí±„²‘˜„²ˆ²Xˆ²§²‘ §²³²X³²È²TȲà²Pà²ô²Tô²ü²tŸü² ³T ³³u³³v³#³v8Ÿ#³+³P+³5³vÙ¹õ¹v »ê»‘˜ê»ÿ»Pÿ»¼‘˜4¿J¿PK¿P¿PP¿_¿Tc¿h¿Ph¿†¿‘ †¿‹¿P‹¿ª¿‘˜ª¿¯¿P¯¿½¿‘˜½¿Ï¿TÓ¿Ø¿P³³ p $ &ŸÙ¹ä¹ p $ &Ÿ³®³_ë¹pº_¼R¼_³½Ô½_Ø¿õ¿_5²X²P¯¿·¿P¸¿½¿P@ÁˆÁUˆÁ5Âw5Â@‘€@ÂÿÂw@ÁŒÁTŒÁ=Â^=Â@ÂóTŸ@ÂÿÂ^@ÁŒÁQŒÁªÁ_ÉÂÕÂ_ÕÂõÂóQŸõÂúÂ_@ÁŒÁRŒÁ ‘ˆ Â@ÂóRŸ@ÂH‘ˆHÂpÂóRŸpÂú‘ˆúÂÿÂóRŸ@ÁŒÁXŒÁâÁ]âÁ™ÂóXŸ™ÂúÂ]úÂÿÂóXŸ@ÁŒÁYŒÁ9Â\9Â@ÂóYŸ@ÂÿÂ\Á™ÁP™Á6ÂS@ÂÉÂSÉÂáÂPáÂÿÂS¾Á?Â_@™Â_úÂÿÂ_âÁùÁPùÁ;Â]@ÂpÂ]pÂwÂPw™Â]úÂÿÂ]ùÁ ÂX@ÂLÂXLÂp‘ˆ ÂÂYÉÂõ ¸¯ŸÉÂÕ‘ŸÕÂõÂ_p?¡?U¡?_@V_@‚@óUŸ‚@^CV^CŠCóUŸŠC‰EV‰EŽEóUŸŽEµFVµFºFóUŸºFàFVàFåFóUŸp?¥?T¥?_@]‚@ŽA]ŽA·AR·AB}~ŸBGD]GDkDRkDPE}~ŸPE E] E¥EóTŸ¥EÊE]ÊEêE}~ŸêEàF]°?·?P·?m@S‚@àFS»?ß?qß?_@^‚@~A^BGD^PEÊE^êEàF^»?_@0Ÿ‚@þ@0Ÿþ@APAB_BLB0ŸLB!C_!C^C0Ÿ^CŠCVŠCGD0ŸGDoE_oEŽE0ŸŽEêE_êEzF0ŸzFšF_šFºF0ŸºFàF_»?î?0Ÿî?_@\‚@ŠC\ŠC¯C0Ÿ¯C²CP²CàF\·@¼@P¼@Ì@ À¨ŸÌ@á@P7AB‘¨¡BÂBQGDïD‘¨ïDPEPŽE¥E‘¨ÊEêE‘¨ŽAB^GDPE^ÊEêE^øCGD_E5Et”ŸrB´BVºFàFV¡B´BV ¦6¦U6¦‚¨\‚¨‡¨óUŸ‡¨M©\J¦Q¦PQ¦€¨V‡¨Â¨V¨ƨUƨ;©V;©D©UD©M©VU¦¨S‡¨M©Sp¦t¦Pt¦Ñ¦^!©/©Pð)U)…_…‘Ø~ð=T=‘è~ð=Q=‘à~ð=R=‘ð=X=‘ˆð=Y=‘ü~ðw‘õ ‘DHPHÖSÖÌ‘¨òW‘¨yõ‘¨õ Sæ Q 6‘ð~D`0Ÿ`æ^æð#‘à~‘ˆ"q $ &q1$ $ &"~"#Ÿðôq $ &pq1$ $ &"~"#Ÿô #‘à~‘ˆ"q $ &q1$ $ &"~"#Ÿ 6)‘à~‘ˆ"‘ð~” $ &‘ð~”1$ $ &"~"#ŸòW^õ 0Ÿ¢ÌVNWVyõVD?0Ÿ?…\…“|Ÿ–¶\¶Ä|Ÿòy0Ÿyõ\õ 0ŸPÌ]yõ]?…^ÔØPØ=^y¸^½õ^=›^D¢ò ëòNò ëõ ò ëDw‘w—P—¢‘òPN‘õ ‘D…_…¢‘Ø~òN‘Ø~õ ‘Ø~RVPV¢\òN\õ \[ePe‘¤ÖûPJTP•ŸPŸÌVòWVyõVRÖ0ŸÖ8]8;}Ÿ;¢]ò].0Ÿõ 0ŸRÖ0ŸÖ¢^òN^õ 0ŸRÖ0ŸÖ$‘£$11Ÿ1¢‘£òN‘£õ 0Ÿ°HºHUºH¿HóUŸ°H·HT·H¿HóTŸžžUžHžSHžIžóUŸ"ž5žP6žFžP?žFžR?žGžS?žGž0Ÿ?žFžRd>{>"” $ &3$u"­U­žóUŸ¦T¦ž\žžóTŸ©Q©žóQŸÂžSÇžPŸÂS»¾P¾žV»ÂsÂÆPížQ ; U; b Vb c óUŸc l Ul z V ( T( z óTŸ 0 Q0 z óQŸ$ a Sc z S  t( ; Tc l T? R To w T( ; Tc l T( ; Uc l Ul o V0 8 Q8 ; tc l Q? R To w T? R Vo z VG O QO R to w QÀHôHUôHöHTIIT,I>ITNI^IToI~ITI“ITફU«C«^C«D«óUŸD«°«^ફT«<«S<«D«óTŸD«°«SફQ«A«]A«D«óQŸD«°«]ફR«°«óRŸàª«X«=«V=«D«óXŸD«°«VફY«?«\?«D«óYŸD«°«\†«°«óRŸ†«°«V†«°«\†«°«‘†«°«‘†«°«]†«°«S†«°«^°«Í«UͫԫóUŸÔ«¬U¬T¬ST¬V¬óUŸÂ«Ó«VÙ«U¬V ¬L¬Y$¬-¬YPÓXÓUXÓ—ÓSPÓ˜Óú"ΟYÓYÓPYÓfÓpŸYÓhÓ0ŸhÓ{ÓQÓŒÓQ Ó»ÓU»ÓÔÓóUŸÔÓäÓUäÓåÓóUŸåÓíÓUíÓôÓóUŸ ÓäÓTäÓåÓóTŸåÓóÓTóÓôÓóTŸ¯Ó»ÓžÅ»ÓÔÓPÔÓÙӞůÓÙÓUpÕòÕUòÕ>Ö\>ÖAÖóUŸAÖKÖUKÖ×\~Õ«Õ]«Õ¬Õt¬Õ@Ö]AÖ×]ºÕòÕTAÖVÖT~Õ÷Õ1Ÿ÷ÕùÕpŸùÕýÕP6ÖAÖPAÖ`Ö1ŸzÖ|ÖPòÕ÷Õ0ŸòÕöÕU ×9×U9ת×Sª×Í×óUŸÍ×fØSfØàØóUŸàØqÙSqÙ{ÙpÈ}Ÿ{Ù>ÚS ×K×TK×Ê×^Ê×Í×óTŸÍ×xÙ^xÙ{ÙóTŸ{Ù>Ú^ ×K×RK×Ä×VÄ×Í×óRŸÍ×rÙVrÙ{ÙóRŸ{Ù>ÚV ×K×XKת×\ª×Í×óXŸÍ×…Ø\…ØàØóXŸàØeÙ\eÙ{ÙóXŸ{Ù–Ù\–ÙÑÙóXŸÑÙ>Ú\ ×K×YK×>Ú‘´Z×\×P\ת×]Í×YØ]àØeÙ]{Ù‰Ù]ÑÙ>Ú]~׆×P†×Ì×_Í×zÙ_{ÙÚ_Ú ÚP Ú>Ú_$Ø%ØP%Ø8Ø[ Ù#ÙP8ÙeÙ[{ÙÙ[ÑÙýÙ[ýÙ Ú‘¸ Ú Ú[YØàØ]‰ÙÑÙ]@ÚVÚUVÚ[ÚóUŸ[ÚlÚU@ÚSÚTSÚ[ÚóTŸ[ÚlÚTDÚVÚuVÚZÚóU#[ÚlÚuDÚSÚtSÚZÚP[ÚeÚPeÚfÚtfÚkÚPkÚlÚtPÚSÚTSÚ[ÚóTŸPÚVÚUVÚ[ÚóUŸpÚ¬ÚU¬ÚÍÚSÍÚ×ÚóUŸ×Ú“ÛS“Û ÛU Û¡ÛóUŸpÚ¦ÚT¦ÚÎÚVÎÚ×ÚóTŸ×Ú”ÛV”Û¡ÛóTŸpÚÚRÚÔÚ^ÔÚ×ÚóRŸ×ÚšÛ^šÛ¡ÛóRŸpÚŠÚXŠÚÒÚ]ÒÚ×ÚóXŸ×Ú Û] ÛÛ|#”? $} $+(ŸÛCÛ|#”? $óX $+(Ÿ­Ú·ÚP×ÚœÛ_œÛ ÛT°ÛëÛUëÛTÝ‘¨p=˜=‘¨°ÛïÛRïÛ°Ü\°Ü·ÜóRŸ·ÜTÝ\p=˜=\°ÛïÛXïÛ²Ü]²Ü·ÜóXŸ·ÜTÝ]p=˜=]°ÛïÛYïÛ´Ü^´Ü·ÜóYŸ·ÜTÝ^p=˜=^ðÛ ÜP Ü®ÜV·ÜTÝVp=„=V„=Œ=PŽ=˜=VðÛÜ ” ÿÿÿÿŸÜ¶Ü  ÿÿÿÿŸ·ÜTÝ  ÿÿÿÿŸp=„=  ÿÿÿÿŸ„=Ž= ” ÿÿÿÿŸŽ=˜=  ÿÿÿÿŸTÜ­ÜS·ÜÛÜS(ÝTÝSfÜsÜP(Ý<ÝP=ÝOÝP`Ý¥ÝU¥Ý½ÝS½Ý¾ÝóUŸ¾ÝÙÝS€ÝÝPÝ•Ýu#nÝ|ÝP|Ý•ÝuªÝ¶ÝP·ÝÇÝP¾ÝÙÝSàÝÞUÞwà‘ àÝÞTÞwà‘˜àÝÞQÞwà‘¬àÝÞRÞCÞVCÞsÞóRŸsÞ®ÞV®ÞwàóRŸàÝÞXÞwà‘°"Þ&ÞP&ÞiÞSsÞwàSàÝ<Þ0Ÿ<ÞCÞPCÞnÞ]sÞ–ÞP–Þwà]æßwà_®Þ®ÞP®ÞÊß^ÄÞÏÞPÏÞqßQq߈ß‘´ˆßœßQœßŸß‘´Ÿß©ßQ¬ßÊßPøÞqßq $ &`v"Ÿq߈ß‘´” $ &`v"Ÿˆßœßq $ &`v"ŸœßŸß‘´” $ &`v"ŸµÞÊßV®ÞÅß\EßqßrŸqߟß‘¸#Ÿ"à-àP-àwàVô§ôU§ô&õV&õ+õóUŸ+õCõVCõKõUKõLõóUŸô§ôT§ô(õ\(õ+õóTŸ+õEõ\EõLõóTŸô§ôQ§ô*õ]*õ+õóQŸ+õGõ]GõLõóQŸ­ô¹ôP¹ô%õS+õ@õS@õKõTPõvõUvõ‚÷]‚÷‡÷óUŸ‡÷Lù]PõzõTzõ~÷V~÷‡÷óTŸ‡÷LùVPõzõQzõóõSóõWöóQŸWöŒöSŒö‡÷óQŸ‡÷”øS”øòøóQŸòø0ùS0ùLùóQŸPõzõRzõ†÷_‡÷"ø_"ø]øóRŸ]øòø_òø ùóRŸ ùLù_PõzõXzõöõ^öõWöóXŸWöö^ö‡÷óXŸ‡÷”ø^”øòøóXŸòø0ù^0ùLùóXŸPõLùúñ½Ÿ†õŠõPŠõN÷\‡÷Eø\EøIøUIøŸø\Ÿø¿ø|È}Ÿ¿øòø\òøüøUüøLù\õ«õP«õ²ö‘¨ËöÞö‘¨‡÷û÷‘¨û÷øPø”ø‘¨¿øÎø‘¨òø ù‘¨ ùùPùLù‘¨öõûõPûõWö^ö–öP–ö„÷^„÷‡÷P”øòø^0ùLù^öõWöSö}÷S”øòøS0ùLùSµõ¾õP‡÷Ÿ÷Pø”øPöVöQËö÷Q÷÷s¿øòøQËöýö˜ŸËöýö0ŸËöýöS¿øòøÀŸ¿øòø0Ÿ¿øòøSö—ö_ö—ö0Ÿö—öS²öËö"” $ &3$|"!÷&÷]g÷r÷S±÷µ÷Rµ÷û÷‘¸"ø&øP&ø]ø_òøüøTüøù_rø”ø"” $ &3$|"„>ˆ>>—>CPDðEhF]GzGðGH*J*J.JdJ`M€M€QÇQàR!S&T\TxV˜VzTzT~T´TðUVÕTÕTÙTUV0VPWwWxWzW€WƒW—W½W0X¥X¥XÓX€X¥X¥XÓX¥X¥X©X­XéXéXðXôXûXYdYdYhYlYrYzY~YYäYäYõYùYüYZ ZZ)ZßZøZŒ[’ZßZ[@[€[Œ[ [[ [$[$[*[€[Œ[­[­[´[¸[¿[Ê[ä[Ÿ\¸\"^4^4^A^E^H^P^T^W^q^h_€_M`k`k`n`r`y`„`û`û`þ`a aa„aˆaašaìaðaöaþabb#b&b*bAcPcpc€cÎcÚcÿcQb…b‰bbîcÿcÏb>cPcmc cÎcÚcîcåb>c cÎcåbébìbc c°cPcmcÚcîcddd dddd!d7d‘d¬d½dMd‚d¬d½dËdËdÎdÒdÙdädTeTeXe\ebejeneqeÛeÛeÞeâeéeôe ff'fLftftf…f‰fŒf”f˜fžf¸fPgpg¿g gPgg—g™g¨gâgægégégígñgôgûghhh¤h°hÜhûhûhþhi iiii’iži¢i¥iÈij0jUjÞiãiëijHjUj kFl l m k¥k©kÎkðlýl%lBl l°l%m)m,m0m3m7m;m>mZm#n8nNn€mÄmÉmnYpÏpЀB„O„R„„ÿ„ÿ„Q…V…h…h…¶…¶…ã…ã…þ…ЀB„O„R„À„ÿ„ÿ„Q…V…h…h…¶…¶…ã…ã…þ…#:CHÀ„̈́̈́҄å„ï„gq¯q·qºq‡£gq q‡£ tÆtÓtÖt\„p„*xDxQxTx怄€¦€«€®€³€º€Z€g€g€l€/†/†2†6†=†K†e†½†Ð†‡;‡;‡>‡B‡I‡W‡»‡»‡¾‡Â‡É‡×‡ô‡Sˆ`ˆqˆˆˆ”ˆ˜ˆŸˆ­ˆ/Š@ŠKŠNŠDDQU\j„ŽŽkŽwޢޑ‘‘‘‘$‘(‘.‘H‘è‘’£’°‘´‘¹‘ä‘’£’I›I›U›Y›`›n›…›œ4œMœtœ€œ„œ‡œ œ!Pmºœ¿œÂœÇœËœàœêœòœúœþœåœêœòœúœþœ`mÇÇéí6ž;ž?žGžTžTžežižlžwž{ž~ž™ž_ _ Ÿ ¤ ° Ð õ¥¦¦*Ÿ_ _ Ÿ ¤ ° è @¡€¡õ¥¦¦R _ _ c ¢¢K¢P¢£H¤p¥ˆ¥°¥ß¥Ÿ ¤ ° · [©[©^©b©e©m©q©t©‰©˜©›©Ú©©˜©ª©Á©Ä©Î©˜©›©Ú©æ©à«$¬$¬O¬$¬$¬(¬-¬Õ±°³à¹pº»X¼¸½Ø½8¿ø¿)²T²°¿À¿(Ã,Ã/Ã7Ã;Ã>ÃXÃ_ÄdÄwĨİưÆÇÇ*ÇÄJÄûÄÅÇ*Ç(Å^ưÆÇ„ÅPÆÈÆǽÅãÅÈÆàÆ_ÄdÄwÄ~ÄQÇšÇÀÇÈHÈLÈOÈOÈSÈWÈZÈaÈaÈdÈhÈhÈÈ’È’ÈùÈÉðÉðÉÊÊcÊoʉʘȵÈ0ÊHÊÉðÉðÉÊÊ0ʀʉʨʬʯʯʳʷʺÊÁÊÁÊÄÊÇÊÇÊÞÊæÊëÊïÊïÊiË€ËÀÌÀÌ)ÍõÊËÌ(Ì€ËÌPÌÀÌÀÌ ÍKÍKÍNÍRÍYÍdÍñÍñÍøÍüÍÎÎ+Î/ÏPÏÐÐ Ð ÐÈÐøÐüÐÿÐÿÐÑÑ ÑÑ3Ñ6Ñ9Ñ@ÑDÑGÑJѺÑÐÑ8ÓKÓPÓgÑ·Ñ Ò8ÓPÓPÓTÓ”ÓÔÔÔÔÔ$Ô(Ô.ÔHÔîÔÕ`Õ¾ÔÂÔÇÔêÔPÕ`Õà×PØàØ@ÙÝÙÚ Ú>ÚPØàØ€ÙÏÙpÚpÚrÚuÚzÚÚ„ÚŠÚÚ–Ú¢ÚÈÚàڈیےۜۡ۰ÛTÝp=˜=YÜsÜ0ÝOݘݟݣݼÝxÞÐßðßwà¸á¿á è<è>èAèSè$ð$ð=ð=ðññiñnññ¸á¿á7è<è>èAèSèèœèCîPî$ð$ð=ð=ðññiñnññ¸á¿á„èèÐèé8éXêìCîPîPïxï$ð$ð=ð=ðXðnðññiñ¸á¿áHìí îï-ïDïxïð•ð¿ð2ñOñ¸á¿á îï»éLênð•ðñ2ñÕéÜéäéñéôéûé êêê!êÜéäéñéôéûé êêê!ê!ê3ê>ênðnðrððlíËíËíÐíOñiñð$ð$ð(ðâðíð=ðAðññññ7è<è>èAèSè`èXêìPïxïXðnðnññ7è<è>èAèSè`èëeënëîëlêŒê”ê˜êœêžêPï]ïpè„èé8é°ä¾ä¾äÂä°çÀçææ£æ¦æ¸ñÇñËñÎñèñ÷ò0óxô›ó¸óÈó0ôÔõ`öÐö÷ÀøøøùLùƒöˆöö—öøiøøø ùáùäùóùøùwúƒú‡úŠú¬úný ýƒ™ç¶û„üü üðÿPðý™ç1üYüðý ý«ý«ýèýþþ°þÀÿÐýƒ7þ>þAþNþQþXþeþtþ>AD¢øNø #6@…–¶€ø#6 ÀKW[a|²àõ ( ; h p - ; h p ? R p z D R p z Ð Ð Ð Þ     8É虢ÅRWZŸ°}ƒˆÀ&G&〙‰šžÕÚ݉šyóøÑþV!–ìø+›ÑÑþV!@'6'(((e(‘(º(Ë(Ë(Î(Ò(Ù(ç(q)q)u)y)|)„)ˆ)Ž)¨)¬*È*,þ)r*ð*à+,,{*¨*ð+,¤-Ï0H2H4Ú-Þ-ã-....9.D.H.M.j.u.y.~.›.a/}/‹/0°2p33:3C3p3š0š0œ0Ÿ0š0œ0Ÿ0©0ë0ë0ë01H4Z41 11+1 11+1I1€1”1ô4ô4ü45 5535³5È5à56 666666$6>6D6H6°6°6¹7Ð7µ8µ8û8°6º6µ8À8t9ø:(;;;ž;ž;+<+<+<+<?<?<g<€<==z=z=z=€=K>K>K>¤9ø:(;`;;;;ž;ž;+<+<+<+<?<?<g<€<à<===z=z=z=€=K>K>K>':Ã:€<À<':]:€< <]:“: <À<;ž;==ž;¬;¼;¼;====à=à=+<+<+<?<z=z=À=Ð=K>K>+<?<À=Ð=?<X<Ð=à=D<X<Ð=à=…>‰>Œ>>“>š>ž>¡>¼>ç?ç?@@@0@A(A A AWBWB›B?E?XAhAç?@ˆA Aì?@ˆA A0@€@@AXA@A AWBWBŠBA A AA¸AÄAÄAÄAÇAÕA@@@@ãBçBìB÷BC C½CÏCÏCÓCàFG_D/EÈEèE—G›GÄGÍGN‚ª‚¼DòDÈEèE€G—G›GÄGcHIiƒuƒHHšHÈH`IJ a@ap;pòJGKSKKPa bHj€jPm‡m³pøp°r×r~y¤ylz™zma bPm‡m³pøp°r×r~y¤ylz™zºKgLgL¨LÈT|WH`¼` b-b-b:b:b¨bðbcØcPdÀf`gi@i€jÀjˆk kˆo¸o p³pdt{tEvRv’vŸvœwx~¨~ ƒñƒ L LôwxL Lôwx)L@Lxx.L@Lxx^LcLgLkLIUòVpb¨bØcPd€jÀjˆk kW:W@WBWdt{t{MµO€eÈeàløl`pp¿uÏuºMŸN±NµO€eÈeàløl`ppÂMÞMæMN N N€eÈe0NVN`pppyP­P¸P¾Puƒ†ƒÚPËQÔQðQ|W•WØop8zlz¨~ü~vRTTÈT¥r°r·u¿u¯xyy~y~}~Ò ƒ S.S2S8SÒï¯x¾xÐxyy%yîW.ZcØcpdIeIe`e`e€eägh hˆhàhi@iÀiàjˆk làlmPm‡m°mémìm0oˆo¸oØoÏuEvRvvvÞvwYYpdIeIe`e`e€eägh@iXi‡m°mémìmÏuâupdIeIe`e`e€eägõg@iXi‡m°mémìmÏuâuYZ„Zq}~}Ù[0_ølm°mémìm0oøp=r t·uŸvÞvwœw™z}ü~g€,D…ŠN‚ª‚iƒ*^2^6^E^U^i^n^v^ìm`n}}u·uª‚iƒÎzÀ|Ng€,WqŠ´æN‚{8{æý»_Ã_É_Ô_Þ_â_ê_ô_÷_`` `Î`ø`p pæefHfÀft+tæefkf‘f«klvv’vñƒ „"stpx¯x†Òï€_sŠsïó÷û˜sÒsŸx£x¦x¯x†Ò¤y¼y¼yÏyÀŠ ‹dª§ì ‘8‘ÀŠÞŠÞŠãŠíŠôŠ™žÃåîóD‘D‘U‘Y‘\‘g‘k‘n‘‰‘]’x’ “z“z“‡“Š“«“«“¸“»“ܓܓé“ì“ ” ”””>”>”K”N”o”o”|”” ” ”­”°”єєޔᔕ•••3•3•@•C•d•d•q•t•••••¢•¥•ƕƕӕ֕÷•÷•––(–(–5–8–Y–Y–f–i–Š–Š–—–š–»–»–È–Ë–ì–ì–ù–ü–——*—-—N—N—[—^———Œ——°—°—½—À—á—á—î—ñ—˜˜˜"˜C˜C˜P˜S˜t˜t˜˜„˜¥˜¥˜²˜µ˜Ö˜Ö˜ã˜æ˜™™™™8™8™E™H™i™i™v™y™š™š™§™ª™Ë™Ë™Ø™Û™ü™ü™ š š-š-š:š=š^š^škšnšššœšŸšÀšÀšÍšКñšñšþš›"›"›/›2›S›S›`›c›„›„›‘›”›µ›µ››Å›æ›æ›ó›ö›œœ$œ'œHœHœUœXœyœyœ†œ‰œªœªœ·œºœÛœÛœèœëœ  ==JMnn{~ŸŸ¬¯ÐÐÝàžžžž2ž2ž?žBžcžcžpžsž”ž”ž¡ž¤žÅžÅžÒžÕžöžöžŸŸ'Ÿ'Ÿ4Ÿ7ŸXŸXŸeŸhŸ‰Ÿ‰Ÿ–Ÿ™ŸºŸºŸÇŸÊŸëŸëŸøŸûŸ  ) , M M Z ] ~ ~ ‹ Ž ¯ ¯ ¼ ¿ à à í ð ¡¡¡!¡B¡B¡O¡R¡s¡s¡€¡ƒ¡¤¡¤¡±¡´¡Õ¡Õ¡â¡å¡¢¢¢¢7¢7¢D¢G¢h¢h¢u¢x¢™¢™¢¦¢©¢Ê¢Ê¢×¢Ú¢û¢û¢£ £,£,£9£<£]£]£n£q£Ž£Ž£Ÿ£¢£t¤t¤…¤ˆ¤”¤”¤¥¤¨¤ ¥ ¥¥ ¥,¥,¥=¥@¥(¦(¦9¦<¦H¦H¦Y¦\¦~¦~¦¦’¦ž¦ž¦¯¦²¦ܧܧí§ð§ü§ü§ ¨¨`>¦¨p=˜=8`¨HXÈ` ˜+ À+  4 p= ¨¨À¨ÐÞâ  " " " " ""`"hb ! ñÿ `> ¦¨# ˜=6 ˜=M p=e ˜= ˜=˜ ˜=³ ˜=Ç ˜=ß `>þ {>"( {>O ²>t €>2Œ ²>­ 8?Ì À>xÞ 8?ø a? @?! a?3 åFI åFc 'G{ ðF7† 'G  ¦H¸ 0Gvà ¦HÛ ¿Hñ °Hú ¿H “I2 ÀHÓ@ “I\ &Sv  I† ƒµÞ &Sª ÞVÅ 0S®Ó ÞVï ½W  àVÝ ½W8 ÓXX ÀWk ÓX— YYÁ àXyÞ YY ÛY( `Y{? ÛYj ˜[“ àY¸¯ ˜[× .^ý  [Ž .^= Y`b 0^)z Y`Ÿ ë` ``‹Ø ë` wa2 ð`‡Q waz Úa¡ €aZ» Úaà ÿc àa ÿc= ½d_ d½t ½d– Pe¶ ÀdÉ Peõ Ée  Pey<  ÉeZ  ifv  Ðe™…  if§  ËgÇ  pf[Ú  Ëgù  èh  Ðg&  èhJ  wil  ðh‡  wi   aj½  €iáÍ  ajî  m  pj›  mG  Nnm  m>†  Nn¥  †Â  PnÆÒ  †ú  &‡  †9  &‡`  ¬‡…  0‡|  ¬‡¸  }ˆÑ  °‡ÍÝ  }ˆÿ  ‰  €ˆœ2  ‰Q  õŠn  ‰Õ~  õŠŸ  >¾  ‹>Ð  >ö  ¢Ž @b1 ¢ŽS ús °ŽJ† úª ¯’Ì ‘¯á ¯’ <›Ž °’Œ- <›[ Mœ‡ @› ¦ MœÅ â Pœ1ò  ž& x2 žQ Ižn ž9~ Iž¤ ¦È PžÄß "@ì ¦ M©" ¦-/ àªÐ= ªÝI `ÝyU 0Çýc šs Pùý‚  ÓT‹ `¬Õ– @Á¿£"° M©Ò ÷©ò P©§ ÷©  ݪ9 ݪV °«q`ÞB{ °«ª V¬× °«¦÷ V¬ 5Á) 5ÁE ÿÂ_ ÿŠ *dz Ã*Ï *Çì -È -È* ‰ÊK 0ÈY_ ‰Ê‹ 5͵ Ê¥Ò 5Íù ÔÍ @Í”6 ÔÍ] ÔЂ àÍôš ÔÐà PÓê àÐp PÓ# ˜Ó@ PÓHP ˜Óh ôÓ~ ôÓ™ lÕ² Ôl¾ lÕÝ ×ú pÕ®  ×2 >ÚX ×q >ÚŒ lÚ¥ @Ú,± lÚá ¡Û pÚ10 ¡ÛY TÝ€ °Û¤š p=(¼ TÝ× ÙÝð ÙÝ wà: àÝ—Q wàl „ñÎ €à… „ñ§ ‰ôÇ ñùÚ ‰ôþ Lõ  ô¼5 LõZ Lù} Põü“ Lù± MúÍ Múî ç  Pú— ç@ _ ð"q ›  à æÞ  ú z   j! z A  _ € šp  Ž ¯ ª ¹ ¯ Ò èé ° 8ó è ? ð,W v º(“¨Þ § º(Î _)ó À(Ÿ  _)' ,A `)¾N ,o á4Ž ,Á  á4Ä ì5æ ð4üû ì5 9= ð5P 9ƒ a>´ 9QØ a>  §B2  p>7Q  §Bp  „  „¥  =‘»  =‘á  “! @‘Ø! “4! ¦¨J!ñÿU!  =W! Ð=j! >€!`"! "¶! P>Â! "J!ñÿá!ñÿï! ¨¨õ! "" " "ÐÞ"`"*" "™+ ˜+@"O"n"‚""¡"µ"Ì"ß"í" ##.#>#S# o#ƒ#˜#«#À#Ñ#â#÷#$$$$8$H$Y$`"`$t$! „ $š$®$¾$Ú$ê$þ$%!%,%:%O%i%w%…%ž%«%¹%Ê%Þ%î%&&+&<&L&Y&l&~&‘&¥&¶&Â&Ò&ë&'' #'0'D'X'e'w'‡'”'£'°'¿'Ì'ß'ò'(0(<(Q(\( °BpAl( `>|(‘(h"(°(Ã(Ó(à(ñ())')7)C)`"O)^)k)|))ž)ª)¼)Ì)Ú)ç)õ)**,*C*R*]*j*z*‹*™*±*¿*Ì*Ù*ç*ù*+ !+.+E+X+i++Œ+Ÿ+³+Á+Í+Û+ç+",,%,9, “†B,a,o,Š,£,², p?u.annobin_DBI.c.annobin_DBI.c_end.annobin_DBI.c.hot.annobin_DBI.c_end.hot.annobin_DBI.c.unlikely.annobin_DBI.c_end.unlikely.annobin_DBI.c.startup.annobin_DBI.c_end.startup.annobin_DBI.c.exit.annobin_DBI.c_end.exit.annobin__dbi_state_lval.start.annobin__dbi_state_lval.endmy_cxt_index.annobin_XS_DBD_____db_connected.start.annobin_XS_DBD_____db_connected.endXS_DBD_____db_connected.annobin_dbi_dopoptosub_at.start.annobin_dbi_dopoptosub_at.enddbi_dopoptosub_at.annobin_dbih_event.start.annobin_dbih_event.enddbih_event.annobin_neatsvpv.start.annobin_neatsvpv.end.annobin_quote_type.start.annobin_quote_type.endquote_type.annobin_dbih_inner.start.annobin_dbih_inner.enddbih_inner.annobin__cmp_str.start.annobin__cmp_str.end_cmp_str.annobin_get_meth_type.start.annobin_get_meth_type.endget_meth_type.annobin_dbih_dumpcom.start.annobin_dbih_dumpcom.enddbih_dumpcompad.20171.annobin_dbih_clearcom.start.annobin_dbih_clearcom.enddbih_clearcom.annobin_dbih_getcom2.start.annobin_dbih_getcom2.enddbih_getcom2.annobin__profile_next_node.start.annobin__profile_next_node.end_profile_next_node.annobin_XS_DBD___mem__common_DESTROY.start.annobin_XS_DBD___mem__common_DESTROY.endXS_DBD___mem__common_DESTROY.annobin_XS_DBD_____common_rows.start.annobin_XS_DBD_____common_rows.endXS_DBD_____common_rows.annobin_XS_DBD_____common_trace_msg.start.annobin_XS_DBD_____common_trace_msg.endXS_DBD_____common_trace_msg.annobin_XS_DBD_____common_errstr.start.annobin_XS_DBD_____common_errstr.endXS_DBD_____common_errstr.annobin_XS_DBD_____common_state.start.annobin_XS_DBD_____common_state.endXS_DBD_____common_state.annobin_XS_DBD_____common_err.start.annobin_XS_DBD_____common_err.endXS_DBD_____common_err.annobin_XS_DBD_____common_private_data.start.annobin_XS_DBD_____common_private_data.endXS_DBD_____common_private_data.annobin_XS_DBD_____common_DESTROY.start.annobin_XS_DBD_____common_DESTROY.endXS_DBD_____common_DESTROY.annobin_XS_DBD_____st_DESTROY.start.annobin_XS_DBD_____st_DESTROY.endXS_DBD_____st_DESTROY.annobin_XS_DBD_____st_finish.start.annobin_XS_DBD_____st_finish.endXS_DBD_____st_finish.annobin_XS_DBD_____st_rows.start.annobin_XS_DBD_____st_rows.endXS_DBD_____st_rows.annobin_XS_DBD_____dr_dbixs_revision.start.annobin_XS_DBD_____dr_dbixs_revision.endXS_DBD_____dr_dbixs_revision.annobin_XS_DBI__svdump.start.annobin_XS_DBI__svdump.endXS_DBI__svdump.annobin_XS_DBI_dump_handle.start.annobin_XS_DBI_dump_handle.endXS_DBI_dump_handle.annobin_XS_DBI__handles.start.annobin_XS_DBI__handles.endXS_DBI__handles.annobin_XS_DBI__get_imp_data.start.annobin_XS_DBI__get_imp_data.endXS_DBI__get_imp_data.annobin_XS_DBI_constant.start.annobin_XS_DBI_constant.endXS_DBI_constant.annobin_parse_trace_flags.start.annobin_parse_trace_flags.endparse_trace_flags.annobin_XS_DBI_looks_like_number.start.annobin_XS_DBI_looks_like_number.endXS_DBI_looks_like_number.annobin_dbih_get_attr_k.start.annobin_dbih_get_attr_k.enddbih_get_attr_k.annobin_XS_DBD_____common_DELETE.start.annobin_XS_DBD_____common_DELETE.endXS_DBD_____common_DELETE.annobin_XS_DBD_____common_FETCH.start.annobin_XS_DBD_____common_FETCH.endXS_DBD_____common_FETCH.annobin_XS_DBI_neat.start.annobin_XS_DBI_neat.endXS_DBI_neat.annobin_XS_DBI__st_TIEHASH.start.annobin_XS_DBI__st_TIEHASH.endXS_DBI__st_TIEHASH.annobin_dbih_setup_fbav.start.annobin_dbih_setup_fbav.enddbih_setup_fbav.annobin_dbih_sth_bind_col.start.annobin_dbih_sth_bind_col.enddbih_sth_bind_col.annobin_XS_DBD_____st_bind_col.start.annobin_XS_DBD_____st_bind_col.endXS_DBD_____st_bind_col.annobin_sql_type_cast_svpv.start.annobin_sql_type_cast_svpv.endsql_type_cast_svpv.annobin_XS_DBI_sql_type_cast.start.annobin_XS_DBI_sql_type_cast.endXS_DBI_sql_type_cast.annobin_dbi_profile_merge_nodes.start.annobin_dbi_profile_merge_nodes.end.annobin_XS_DBI_dbi_profile_merge_nodes.start.annobin_XS_DBI_dbi_profile_merge_nodes.endXS_DBI_dbi_profile_merge_nodes.annobin_XS_DBI_dbi_time.start.annobin_XS_DBI_dbi_time.endXS_DBI_dbi_time.annobin_dbi_ima_dup.start.annobin_dbi_ima_dup.enddbi_ima_dup.annobin_malloc_using_sv.start.annobin_malloc_using_sv.endmalloc_using_sv.annobin_XS_DBI__install_method.start.annobin_XS_DBI__install_method.endXS_DBI__install_methoddbi_ima_vtbl.annobin_dbi_bootinit.start.annobin_dbi_bootinit.enddbi_bootinitcheck_versiondbih_logmsgdbih_getcomdbih_get_fbavdbih_set_attr_kdbih_make_fdsvdbi_hashset_err_svset_err_charuse_xsbypass.annobin_XS_DBI__clone_dbis.start.annobin_XS_DBI__clone_dbis.endXS_DBI__clone_dbis.annobin_dbih_logmsg.start.annobin_dbih_logmsg.end.annobin_check_version.start.annobin_check_version.endmsg.19866.annobin_copy_statement_to_parent.isra.4.start.annobin_copy_statement_to_parent.isra.4.endcopy_statement_to_parent.isra.4.annobin_set_err_sv.start.annobin_set_err_sv.end.annobin_set_err_char.start.annobin_set_err_char.end.annobin_XS_DBD_____db_take_imp_data.start.annobin_XS_DBD_____db_take_imp_data.endXS_DBD_____db_take_imp_data.annobin_dbih_get_fbav.start.annobin_dbih_get_fbav.end.annobin_XS_DBD_____st_fetch.start.annobin_XS_DBD_____st_fetch.endXS_DBD_____st_fetch.annobin_XS_DBD_____st_fetchrow_array.start.annobin_XS_DBD_____st_fetchrow_array.endXS_DBD_____st_fetchrow_array.annobin_XS_DBD_____st__get_fbav.start.annobin_XS_DBD_____st__get_fbav.endXS_DBD_____st__get_fbav.annobin_XS_DBD_____st__set_fbav.start.annobin_XS_DBD_____st__set_fbav.endXS_DBD_____st__set_fbav.annobin_XS_DBD_____common_set_err.start.annobin_XS_DBD_____common_set_err.endXS_DBD_____common_set_err.annobin_dbi_hash.part.5.start.annobin_dbi_hash.part.5.enddbi_hash.part.5.annobin_dbi_hash.start.annobin_dbi_hash.end.annobin_XS_DBI_hash.start.annobin_XS_DBI_hash.endXS_DBI_hash.annobin_err_hash.isra.6.start.annobin_err_hash.isra.6.enderr_hash.isra.6.annobin_dbih_setup_attrib.isra.7.start.annobin_dbih_setup_attrib.isra.7.enddbih_setup_attrib.isra.7.annobin__cmp_number.start.annobin__cmp_number.end_cmp_number.annobin_clear_cached_kids.isra.9.part.10.start.annobin_clear_cached_kids.isra.9.part.10.endclear_cached_kids.isra.9.part.10.annobin_dbi_caller_string.isra.11.start.annobin_dbi_caller_string.isra.11.enddbi_caller_string.isra.11dbi_caller_string.isra.11.cold.17.annobin_dbih_getcom.start.annobin_dbih_getcom.end.annobin_log_where.constprop.14.start.annobin_log_where.constprop.14.endlog_where.constprop.14.annobin_dbi_profile.start.annobin_dbi_profile.end.annobin_XS_DBI_dbi_profile.start.annobin_XS_DBI_dbi_profile.endXS_DBI_dbi_profile.annobin_mkvname.constprop.16.start.annobin_mkvname.constprop.16.endmkvname.constprop.16.annobin_dbih_make_com.isra.13.start.annobin_dbih_make_com.isra.13.enddbih_make_com.isra.13.annobin_dbih_make_fdsv.start.annobin_dbih_make_fdsv.end.annobin_XS_DBI__var_FETCH.start.annobin_XS_DBI__var_FETCH.endXS_DBI__var_FETCH.annobin__join_hash_sorted.start.annobin__join_hash_sorted.end_join_hash_sorted.annobin_XS_DBI__concat_hash_sorted.start.annobin_XS_DBI__concat_hash_sorted.endXS_DBI__concat_hash_sorted.annobin_dbi_ima_free.start.annobin_dbi_ima_free.enddbi_ima_free.annobin_close_trace_file.start.annobin_close_trace_file.endclose_trace_file.annobin_set_trace_file.start.annobin_set_trace_file.endset_trace_file.annobin_set_trace.start.annobin_set_trace.endset_trace.annobin_XS_DBD_____common_trace.start.annobin_XS_DBD_____common_trace.endXS_DBD_____common_trace.annobin_dbih_set_attr_k.start.annobin_dbih_set_attr_k.endprofile_class.20286.annobin_XS_DBD_____common_STORE.start.annobin_XS_DBD_____common_STORE.endXS_DBD_____common_STORE.annobin_XS_DBI_trace.start.annobin_XS_DBI_trace.endXS_DBI_trace.annobin_dbih_setup_handle.start.annobin_dbih_setup_handle.enddbih_setup_handle.annobin_XS_DBI__setup_handle.start.annobin_XS_DBI__setup_handle.endXS_DBI__setup_handle.annobin_XS_DBI__new_handle.start.annobin_XS_DBI__new_handle.endXS_DBI__new_handle.annobin_XS_DBD_____common_swap_inner_handle.start.annobin_XS_DBD_____common_swap_inner_handle.endXS_DBD_____common_swap_inner_handle.annobin_XS_DBD_____st_fetchrow_hashref.start.annobin_XS_DBD_____st_fetchrow_hashref.endXS_DBD_____st_fetchrow_hashref.annobin_XS_DBI_dispatch.start.annobin_XS_DBI_dispatch.end.annobin_preparse.start.annobin_preparse.end.annobin_XS_DBD_____db_preparse.start.annobin_XS_DBD_____db_preparse.endXS_DBD_____db_preparse.annobin_boot_DBI.start.annobin_boot_DBI.endcrtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.7295__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entry__FRAME_END___fini__dso_handle_DYNAMIC__GNU_EH_FRAME_HDR__TMC_END___GLOBAL_OFFSET_TABLE_Perl_save_sptr__ctype_toupper_loc@@GLIBC_2.3getenv@@GLIBC_2.2.5Perl_sv_freePerl_sv_2iv_flagsPerl_sv_2bool_flagsPerl_looks_like_numberPerl_PerlIO_stdoutPerl_sv_setnv__errno_location@@GLIBC_2.2.5Perl_newRV_noincPerl_sv_2uv_flagsPerl_stack_growstrncmp@@GLIBC_2.2.5_ITM_deregisterTMCloneTablestrcpy@@GLIBC_2.2.5Perl_sv_catpvn_flagsqsort@@GLIBC_2.2.5Perl_sv_insert_flagsPerl_call_methodPerl_sv_magicextPerl_sv_derived_fromPerl_av_lenPerl_die_nocontextPerl_av_shiftgetpid@@GLIBC_2.2.5Perl_sv_reftypePerl_my_cxt_init_edataPerl_warn_nocontextPerl_newSVPerl_sv_force_normal_flagsstrlen@@GLIBC_2.2.5Perl_require_pv__stack_chk_fail@@GLIBC_2.4Perl_sv_upgradestrchr@@GLIBC_2.2.5Perl_sv_setiv_mgPerl_PerlIO_closePL_thr_keyPerl_save_I32strrchr@@GLIBC_2.2.5gettimeofday@@GLIBC_2.2.5Perl_av_storePerl_sv_setpvPerl_sv_catpvf_nocontextPerl_newSVnvPerl_sv_blessPerl_sv_setnv_mgmemset@@GLIBC_2.2.5Perl_sv_2pvbytePerl_sv_2pv_flagsPerl_xs_boot_epilogPerl_hv_iternext_flagsPerl_grok_numberPerl_sv_unmagicPL_charclassPerl_safesysmallocPerl_PerlIO_flushPerl_hv_iternextsvstrcmp@@GLIBC_2.2.5Perl_sv_isobjectPerl_sv_incPerl_gv_fetchpvPerl_sv_setpvf_nocontextPerl_sv_mortalcopy_flagsPerl_sv_backoff__gmon_start__Perl_newSVsvPerl_croak_xs_usagestrtol@@GLIBC_2.2.5Perl_sv_growPerl_sv_2nv_flagsPerl_gv_stashpvPerl_mg_sizePL_memory_wrapPerl_av_pushPerlIO_vprintfPerl_newSVpvPerl_cvgv_from_hekPerl_safesyscallocpthread_getspecific@@GLIBC_2.2.5Perl_gv_fetchmethod_autoloadPerl_get_svPerl_croak_nocontextPerl_newXSXS_DBI_dispatch_dbi_state_lvalPerl_ptr_table_fetchPerlIO_openPerl_gv_efullname4Perl_newXS_deffilePerl_gv_stashsvPerl_av_fillPerl_hv_iterinitPerl_dowantarrayPerl_sv_setsv_flagsPerl_newXS_flagsPerl_sv_2mortalPerl_mg_get__bss_startPerl_hv_commonPerl_newSVuvPerl_safesysfreePerl_sv_catsv_flagsPerl_croak_svPerl_sv_2ioPerl_xs_handshakePerl_hv_iterkeyPerl_av_fetchPerl_warn_svPerlIO_printfPerl_gv_fetchfilePerl_sv_rvweakenPerl_markstack_growPerl_hv_common_key_lenPerl_sv_setpvnPerl_newRVPerl_mg_findPerl_newSV_typePerl_block_gimmePerl_sv_catpvPerl_newSVpvf_nocontextPerl_sv_magicPL_latin1_lcPerl_call_svPerl_hv_clearPerl_taint_properPerl_sv_free2_ITM_registerTMCloneTablePerl_newSVivPerl_PerlIO_setlinebufPerl_PerlIO_stderrPL_mod_latin1_ucstrerror@@GLIBC_2.2.5Perl_sv_dumpPerl_mro_meta_initPerl_gv_add_by_typePerl_sv_setivPerl_savepvPerl_newSVpvnPerlIO_puts__cxa_finalize@@GLIBC_2.2.5Perl_sv_newmortalPerl_sv_taintedstrstr@@GLIBC_2.2.5boot_DBI__ctype_tolower_loc@@GLIBC_2.3Perl_save_int__sprintf_chk@@GLIBC_2.3.4Perl_hv_placeholders_getPerl_av_extendneatsvpv.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.note.gnu.property.init_array.fini_array.data.rel.ro.dynamic.got.data.bss.comment.gnu.build.attributes.debug_aranges.debug_info.debug_abbrev.debug_line.debug_str.debug_loc.debug_ranges88$.öÿÿo``D8 ¨¨ @HHÕ Hÿÿÿo8UþÿÿoXXpdÈȘnB``8 x˜+˜+sÀ+À+à~ 4 4Їp=p=6k¨¨¨¨ “À¨À¨6 ›ÐÞÐÞ,©ââ³   Æ " Ò " Þ " ë " ô " àù"` ÿ`"`0`, hbŒØ3#dD@2¤Dy>[L3c#ðX0VS\Yc²¬º°nl] _¼è/#d xì»,3 |perl5/auto/DBD/mysql/.packlist000064400000000543152462470720012127 0ustar00/usr/local/lib64/perl5/Bundle/DBD/mysql.pm /usr/local/lib64/perl5/DBD/mysql.pm /usr/local/lib64/perl5/DBD/mysql/GetInfo.pm /usr/local/lib64/perl5/DBD/mysql/INSTALL.pod /usr/local/lib64/perl5/auto/DBD/mysql/mysql.so /usr/local/share/man/man3/Bundle::DBD::mysql.3pm /usr/local/share/man/man3/DBD::mysql.3pm /usr/local/share/man/man3/DBD::mysql::INSTALL.3pm perl5/auto/DBD/mysql/mysql.so000055500002036550152462470720012036 0ustar00ELF>À[@h4@8 @$#pÉpÉ ÑÑ!Ñ!è ˜ç˜ç!˜ç!pp888$$PÉPÉPÉ SåtdPÉPÉPÉ PåtdȨȨȨììQåtdRåtdÑÑ!Ñ!èðGNUIгúlÅñÝä(N­›æŠ1|Ìßð%˜&Lcj ¢Å“Q ‰’Ð  ˜™š›œŸ £¥¦§¨©ª«¬®°±²´µ¶¹»¼¾™ð¾×[ÁÄ»7€4?8ërpØG’OiìQÑ”ªPq,ö,}ç;k{‹|ΗnR«÷Z3³gºûG~PÁ@©„üÅóLHf‰‹xËC U2êˆgƒ\ÎÏtq!§¨ýuè¡ÙqXÎ)zc»ã’|Åx5 )9ÿaBEÕìZ7£‡èw48а 3œ «i!Á—vn±6o¥-ø”‰;GïÁ|ñ côNn ÖÄ ŸA‚ Q „¡ cd ² Þ ¿Á Ï€×\Èb¤qF"ì“À¤öm¯Òò:¸9 æ) "\ òÿà´Ú—°™à ç †  ? m Ñ «û mú8TK ëFRî  Œ , Ç( F.¯p " š ².·÷Yò “ ~­Ë ý¡þ N”ÕeàШ ‰ +Æ <h¦ Ó u BÜnl Ý Q è Ìß[  , UH )8 “ e (  ø2/  p¢Ü @¥NÉ à³”x   ÷v= §F W 0—ý¶    r^  0õjÎ  ÐüÎC @Ñà … 0ÂÝ’ Ûu °½4¾  `ûoF À–p– ÄUú €“Ê ðboç Pb’q °dÓ¥ Ý5 X ðÁ:* €º. ð!~ 0œ 5ð!G  €ïªÙ p’ ð!0 0Ѭ pÆX) `cG6  Ðꮼ p‘úË  °u`  ÐÉ^u ^ P”d__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizelibpthread.so.0Perl_get_cvPerl_croak_nocontextPerl_hv_common_key_lenPerl_sv_2pv_flags__stack_chk_failstrlen__ctype_b_locPL_thr_keypthread_getspecificPerl_newSVsvPerl_mg_getPerl_sv_free2mysql_dr_initmysql_dr_errorPerl_sv_setivPerl_sv_setpvPerl_sv_setpvnPerlIO_printfmysql_dr_warnPerl_warn_nocontextmysql_dr_connectmysql_initmysql_real_connectmysql_optionsstrtolPerl_hv_iterinitmysql_options4Perl_hv_iternext_flagsPerl_hv_iterkeyPerl_hv_itervalmysql_ssl_setPerl_sv_2iv_flagsPerl_sv_2bool_flagsPerl_safesyscallocmysql_db_loginmysql_sqlstatemysql_errormysql_errnoPerl_safesysfreemysql_db_commitmysql_commitmysql_db_rollbackmysql_rollbackmysql_db_disconnectmysql_closedbd_discon_allmysql_server_endPerl_get_svmysql_db_destroymysql_db_STORE_attribmysql_autocommitmysql_db_FETCH_attribPerl_sv_2mortalmysql_insert_idPerl_newSVuvmysql_get_proto_infomysql_thread_idmysql_get_host_infoPerl_newSVpvnmysql_warning_countPerl_newSVivmysql_get_client_versionPerl_newSV_typePerl_newRV_noincmysql_session_track_get_firstmysql_get_server_infomysql_get_client_infomysql_infomysql_get_server_versionmysql_statmysql_st_free_result_setsmysql_next_resultmysql_use_resultmysql_free_resultmysql_field_countmysql_st_preparestderrfwritemysql_stmt_initmysql_stmt_preparemysql_stmt_errnomysql_stmt_errormysql_stmt_closemysql_stmt_param_countmysql_st_next_resultsmysql_more_resultsmysql_store_resultmysql_affected_rowsmysql_num_fieldsmysql_st_internal_execute41mysql_stmt_executemysql_stmt_sqlstatemysql_stmt_resetmysql_stmt_result_metadatamysql_stmt_field_countmysql_stmt_store_resultmysql_stmt_num_rowsmysql_stmt_bind_parammysql_stmt_affected_rowsmysql_stmt_attr_setmysql_describemysql_fetch_fieldsmysql_stmt_bind_resultmysql_st_clean_cursormysql_stmt_free_resultmysql_st_destroymysql_st_STORE_attribmysql_st_FETCH_internalPerl_newRVmysql_field_seekmysql_fetch_fieldPerl_av_pushPerl_newSVpvmysql_st_FETCH_attrib__sprintf_chkmysql_st_blob_readmysql_bind_phPerl_looks_like_numberPerl_newSVpvf_nocontextPerl_sv_2nv_flagsmysql_db_reconnectmysql_st_internal_executePerl_safesysmallocstrncpymysql_list_fieldsmysql_send_querymysql_real_querymysql_num_rowsmysql_real_escape_stringmysql_st_executemysql_db_type_info_allmysql_db_quotePerl_newSVmysql_db_last_insert_idmysql_db_async_resultmysql_read_query_resultmysql_st_finishmysql_st_fetchmysql_stmt_fetchmysql_fetch_rowmysql_fetch_lengthsPerl_av_lenPerl_av_storePerl_av_popPerl_sv_backoffPerl_sv_utf8_decodePerl_sv_2uv_flagsPerl_safesysreallocmysql_stmt_fetch_columnPerl_sv_setuvPerl_sv_setnvmysql_db_async_readymysql_socket_readystrerrorPerl_croak_xs_usagemysql_list_dbsPerl_stack_growPerl_hv_clearmysql_get_optionPerl_sv_newmortalmysql_data_seekmysql_stmt_data_seekPerl_sv_setiv_mgmysql_pingstpcpymysql_refreshPerl_call_methodPerl_markstack_growPerl_mg_sizePerl_mg_findPerl_dowantarray__errno_locationPerl_sv_setnv_mgPerl_av_extendPerl_av_makeboot_DBD__mysqlPerl_xs_handshakePerl_newXS_deffilePerl_newXS_flagsPerl_xs_boot_epilogpolllibmysqlclient.so.21libdl.so.2libssl.so.1.1libcrypto.so.1.1libresolv.so.2libm.so.6librt.so.1libperl.so.5.26libc.so.6_edata__bss_startGLIBC_2.4GLIBC_2.3GLIBC_2.3.4GLIBC_2.2.5libmysqlclient_21.0 Pii  ii ( ti 2 ui > Ž  `-SJ Uui > Ñ!p\Ñ!0\ Ñ! Ñ!@Ñ!§ƒPÑ!U€XÑ!U€`Ñ!W€€Ñ!b€¨Ñ!y€ÈÑ!€èÑ!‘€Ò!˜€PÒ! €xÒ!­€¸Ò!¶€àÒ!ä€ Ó!ä€HÓ!Ä€ˆÓ!Ä€°Ó!‘€ðÓ!‘€Ô!‘€XÔ!‘€€Ô!Ê€Ô!U€˜Ô!U€ÀÔ!Ê€èÔ!Ô€(Õ!Û€PÕ!ì€Õ!ö€¸Õ!ÈÕ!U€ÐÕ!U€øÕ! Ö!0Ö!U€8Ö!U€`Ö!ˆÖ! ˜Ö!U€ Ö!U€ÈÖ! ðÖ!0×!X×!h×!U€p×!U€˜×!À×!Ð×!U€Ø×!U€Ø!(Ø!;8Ø!U€@Ø!U€hØ!?Ø!w{ Ø!U€¨Ø!U€ÐØ!\øØ!zÙ!U€Ù!U€8Ù!ƒ`Ù! pÙ!U€xÙ!U€ Ù!«ÈÙ!¿ØÙ!U€àÙ!U€Ú!Ж0Ú!ªƒ@Ú!U€HÚ!U€PÚ!W€pÚ!r€˜Ú!y€¸Ú!€ØÚ!‘€Û!È@Û!ÙhÛ!ï¨Û!‚ÐÛ!‚Ü!+‚8Ü!F‚xÜ!\‚ Ü!×€àÜ!ä€Ý!\‚HÝ!ä€pÝ!C‚°Ý!S‚ØÝ!‚èÝ!U€ðÝ!U€Þ!m‚@Þ!‰‚PÞ!U€XÞ!U€€Þ!”‚¨Þ!—èÞ!(—ß!P—Pß!P—xß!¦‚¸ß!¦‚àß!¾‚ à!p—Hà!쀈à!ö€°à!Ú‚ðà!Þ‚á!æ‚8á!€Xá!æ‚€á!p—Àá!p—èá!‚(â!+‚Pâ!—â!—¸â!ƒøâ!vƒ ã!î‚0ã!ý‚`ã! ˆã!ƒÈã!ƒðã!ƒ0ä!ƒXä!vƒ˜ä!vƒÀä!ƒå!ƒ(å!,ƒhå!?ƒå!VƒÐå!oƒøå!ƒ8æ!ƒ`æ!¢ƒpæ!U€xæ!U€ æ!‰‚Èæ!¯ƒç!¯ƒ0ç!¸—pç!¸—Èï! Ðï!tØï!vàï!‹èï!’ðï!“ ê!(ê!0ê!8ê!@ê!Hê!Pê!Xê!`ê! hê! pê! xê!£€ê! ˆê! ê!¤˜ê! ê!¨ê!°ê!¸ê!Àê!²Èê!Ðê!Øê!àê!èê!ðê!øê!ë!ë!ë!ë! ë!(ë!0ë! 8ë!!@ë!"Hë!#Pë!$Xë!%`ë!&hë!µpë!§xë!¾€ë!'ˆë!©ë!(˜ë!) ë!*¨ë!+°ë!,¸ë!-Àë!.Èë!»Ðë!/Øë!0àë!1èë!2ðë!3øë!4ì!5ì!6ì!7ì!8 ì!9(ì!:0ì!®8ì!œ@ì!;Hì!<Pì!=Xì!>`ì!?hì!@pì!Axì!B€ì!Cˆì!Dì!¼˜ì!E ì!F¨ì!G°ì!H¸ì!IÀì!JÈì!KÐì!LØì!Màì!Nèì!Oðì!Pøì!Qí!Rí!Sí!·í!T í!U(í!V0í!W8í!X@í!°Hí!YPí!ZXí! `í![hí!¹pí!\xí!]€í!^ˆí!_í!`˜í!a í!½¨í!™°í!b¸í!cÀí!dÈí!eÐí!¥Øí!fàí!gèí!Ÿðí!˜øí!hî!´î!iî!jî! î!k(î!l0î!m8î!n@î!oHî!pPî!¡Xî!q`î!rhî!spî!¬xî!u€î!wˆî!xî!¸˜î!y î!z¨î!«°î!¯¸î!{Àî!|Èî!žÐî!¨Øî!}àî!~èî!ðî!€øî!ªï!ï!‚ï!ƒï!„ ï!…(ï!†0ï!¦8ï!‡@ï!ˆHï!‰Pï!ŠXï!›`ï!Œhï!pï!Žxï!€ï!ºˆï!­ï!˜ï!‘ ï!”¨ï!•°ï!–¸ï!¢Àï!—óúHƒìH‹ñª!H…ÀtÿÐHƒÄÃÿ5ú¤!òÿ%û¤!óúhòéáÿÿÿóúhòéÑÿÿÿóúhòéÁÿÿÿóúhòé±ÿÿÿóúhòé¡ÿÿÿóúhòé‘ÿÿÿóúhòéÿÿÿóúhòéqÿÿÿóúhòéaÿÿÿóúh òéQÿÿÿóúh òéAÿÿÿóúh òé1ÿÿÿóúh òé!ÿÿÿóúh òéÿÿÿóúhòéÿÿÿóúhòéñþÿÿóúhòéáþÿÿóúhòéÑþÿÿóúhòéÁþÿÿóúhòé±þÿÿóúhòé¡þÿÿóúhòé‘þÿÿóúhòéþÿÿóúhòéqþÿÿóúhòéaþÿÿóúhòéQþÿÿóúhòéAþÿÿóúhòé1þÿÿóúhòé!þÿÿóúhòéþÿÿóúhòéþÿÿóúhòéñýÿÿóúh òéáýÿÿóúh!òéÑýÿÿóúh"òéÁýÿÿóúh#òé±ýÿÿóúh$òé¡ýÿÿóúh%òé‘ýÿÿóúh&òéýÿÿóúh'òéqýÿÿóúh(òéaýÿÿóúh)òéQýÿÿóúh*òéAýÿÿóúh+òé1ýÿÿóúh,òé!ýÿÿóúh-òéýÿÿóúh.òéýÿÿóúh/òéñüÿÿóúh0òéáüÿÿóúh1òéÑüÿÿóúh2òéÁüÿÿóúh3òé±üÿÿóúh4òé¡üÿÿóúh5òé‘üÿÿóúh6òéüÿÿóúh7òéqüÿÿóúh8òéaüÿÿóúh9òéQüÿÿóúh:òéAüÿÿóúh;òé1üÿÿóúh<òé!üÿÿóúh=òéüÿÿóúh>òéüÿÿóúh?òéñûÿÿóúh@òéáûÿÿóúhAòéÑûÿÿóúhBòéÁûÿÿóúhCòé±ûÿÿóúhDòé¡ûÿÿóúhEòé‘ûÿÿóúhFòéûÿÿóúhGòéqûÿÿóúhHòéaûÿÿóúhIòéQûÿÿóúhJòéAûÿÿóúhKòé1ûÿÿóúhLòé!ûÿÿóúhMòéûÿÿóúhNòéûÿÿóúhOòéñúÿÿóúhPòéáúÿÿóúhQòéÑúÿÿóúhRòéÁúÿÿóúhSòé±úÿÿóúhTòé¡úÿÿóúhUòé‘úÿÿóúhVòéúÿÿóúhWòéqúÿÿóúhXòéaúÿÿóúhYòéQúÿÿóúhZòéAúÿÿóúh[òé1úÿÿóúh\òé!úÿÿóúh]òéúÿÿóúh^òéúÿÿóúh_òéñùÿÿóúh`òéáùÿÿóúhaòéÑùÿÿóúhbòéÁùÿÿóúhcòé±ùÿÿóúhdòé¡ùÿÿóúheòé‘ùÿÿóúhfòéùÿÿóúhgòéqùÿÿóúhhòéaùÿÿóúhiòéQùÿÿóúhjòéAùÿÿóúhkòé1ùÿÿóúhlòé!ùÿÿóúhmòéùÿÿóúhnòéùÿÿóúhoòéñøÿÿóúhpòéáøÿÿóúhqòéÑøÿÿóúhròéÁøÿÿóúhsòé±øÿÿóúhtò顸ÿÿóúhuò鑸ÿÿóúhvòéøÿÿóúhwòéqøÿÿóúhxòéaøÿÿóúhyòéQøÿÿóúhzòéAøÿÿóúh{òé1øÿÿóúh|òé!øÿÿóúh}òéøÿÿóúh~òéøÿÿóúhòéñ÷ÿÿóúh€òéá÷ÿÿóúhòéÑ÷ÿÿóúh‚òéÁ÷ÿÿóúhƒòé±÷ÿÿóúh„òé¡÷ÿÿóúh…òé‘÷ÿÿóúh†òé÷ÿÿóúh‡òéq÷ÿÿóúhˆòéa÷ÿÿóúh‰òéQ÷ÿÿóúhŠòéA÷ÿÿóúh‹òé1÷ÿÿóúhŒòé!÷ÿÿóúhòé÷ÿÿóúhŽòé÷ÿÿóúhòéñöÿÿóúhòéáöÿÿóúh‘òéÑöÿÿóúh’òéÁöÿÿóúh“òé±öÿÿóúh”òé¡öÿÿóúh•òé‘öÿÿóúh–òéöÿÿóúh—òéqöÿÿóúh˜òéaöÿÿóúh™òéQöÿÿóúhšòéAöÿÿóúh›òé1öÿÿóúhœòé!öÿÿóúhòéöÿÿóúhžòéöÿÿóúhŸòéñõÿÿóúh òéáõÿÿóúh¡òéÑõÿÿóúh¢òéÁõÿÿóúh£òé±õÿÿóúh¤òé¡õÿÿóúh¥òé‘õÿÿóúh¦òéõÿÿóúh§òéqõÿÿóúh¨òéaõÿÿóúh©òéQõÿÿóúhªòéAõÿÿóúh«òé1õÿÿóúh¬òé!õÿÿóúh­òéõÿÿóúh®òéõÿÿóúh¯òéñôÿÿóúh°òéáôÿÿóúh±òéÑôÿÿóúh²òéÁôÿÿóúh³òé±ôÿÿóúh´òé¡ôÿÿóúòÿ%¥™!Dóúòÿ%™!Dóúòÿ%•™!Dóúòÿ%™!Dóúòÿ%…™!Dóúòÿ%}™!Dóúòÿ%u™!Dóúòÿ%m™!Dóúòÿ%e™!Dóúòÿ%]™!Dóúòÿ%U™!Dóúòÿ%M™!Dóúòÿ%E™!Dóúòÿ%=™!Dóúòÿ%5™!Dóúòÿ%-™!Dóúòÿ%%™!Dóúòÿ%™!Dóúòÿ%™!Dóúòÿ% ™!Dóúòÿ%™!Dóúòÿ%ý˜!Dóúòÿ%õ˜!Dóúòÿ%í˜!Dóúòÿ%å˜!Dóúòÿ%ݘ!Dóúòÿ%Õ˜!Dóúòÿ%͘!Dóúòÿ%Ř!Dóúòÿ%½˜!Dóúòÿ%µ˜!Dóúòÿ%­˜!Dóúòÿ%¥˜!Dóúòÿ%˜!Dóúòÿ%•˜!Dóúòÿ%˜!Dóúòÿ%…˜!Dóúòÿ%}˜!Dóúòÿ%u˜!Dóúòÿ%m˜!Dóúòÿ%e˜!Dóúòÿ%]˜!Dóúòÿ%U˜!Dóúòÿ%M˜!Dóúòÿ%E˜!Dóúòÿ%=˜!Dóúòÿ%5˜!Dóúòÿ%-˜!Dóúòÿ%%˜!Dóúòÿ%˜!Dóúòÿ%˜!Dóúòÿ% ˜!Dóúòÿ%˜!Dóúòÿ%ý—!Dóúòÿ%õ—!Dóúòÿ%í—!Dóúòÿ%å—!Dóúòÿ%Ý—!Dóúòÿ%Õ—!Dóúòÿ%Í—!Dóúòÿ%Å—!Dóúòÿ%½—!Dóúòÿ%µ—!Dóúòÿ%­—!Dóúòÿ%¥—!Dóúòÿ%—!Dóúòÿ%•—!Dóúòÿ%—!Dóúòÿ%…—!Dóúòÿ%}—!Dóúòÿ%u—!Dóúòÿ%m—!Dóúòÿ%e—!Dóúòÿ%]—!Dóúòÿ%U—!Dóúòÿ%M—!Dóúòÿ%E—!Dóúòÿ%=—!Dóúòÿ%5—!Dóúòÿ%-—!Dóúòÿ%%—!Dóúòÿ%—!Dóúòÿ%—!Dóúòÿ% —!Dóúòÿ%—!Dóúòÿ%ý–!Dóúòÿ%õ–!Dóúòÿ%í–!Dóúòÿ%å–!Dóúòÿ%Ý–!Dóúòÿ%Õ–!Dóúòÿ%Í–!Dóúòÿ%Å–!Dóúòÿ%½–!Dóúòÿ%µ–!Dóúòÿ%­–!Dóúòÿ%¥–!Dóúòÿ%–!Dóúòÿ%•–!Dóúòÿ%–!Dóúòÿ%…–!Dóúòÿ%}–!Dóúòÿ%u–!Dóúòÿ%m–!Dóúòÿ%e–!Dóúòÿ%]–!Dóúòÿ%U–!Dóúòÿ%M–!Dóúòÿ%E–!Dóúòÿ%=–!Dóúòÿ%5–!Dóúòÿ%-–!Dóúòÿ%%–!Dóúòÿ%–!Dóúòÿ%–!Dóúòÿ% –!Dóúòÿ%–!Dóúòÿ%ý•!Dóúòÿ%õ•!Dóúòÿ%í•!Dóúòÿ%å•!Dóúòÿ%Ý•!Dóúòÿ%Õ•!Dóúòÿ%Í•!Dóúòÿ%Å•!Dóúòÿ%½•!Dóúòÿ%µ•!Dóúòÿ%­•!Dóúòÿ%¥•!Dóúòÿ%•!Dóúòÿ%••!Dóúòÿ%•!Dóúòÿ%…•!Dóúòÿ%}•!Dóúòÿ%u•!Dóúòÿ%m•!Dóúòÿ%e•!Dóúòÿ%]•!Dóúòÿ%U•!Dóúòÿ%M•!Dóúòÿ%E•!Dóúòÿ%=•!Dóúòÿ%5•!Dóúòÿ%-•!Dóúòÿ%%•!Dóúòÿ%•!Dóúòÿ%•!Dóúòÿ% •!Dóúòÿ%•!Dóúòÿ%ý”!Dóúòÿ%õ”!Dóúòÿ%í”!Dóúòÿ%å”!Dóúòÿ%Ý”!Dóúòÿ%Õ”!Dóúòÿ%Í”!Dóúòÿ%Å”!Dóúòÿ%½”!Dóúòÿ%µ”!Dóúòÿ%­”!Dóúòÿ%¥”!Dóúòÿ%”!Dóúòÿ%•”!Dóúòÿ%”!Dóúòÿ%…”!Dóúòÿ%}”!Dóúòÿ%u”!Dóúòÿ%m”!Dóúòÿ%e”!Dóúòÿ%]”!Dóúòÿ%U”!Dóúòÿ%M”!Dóúòÿ%E”!Dóúòÿ%=”!Dóúòÿ%5”!Dóúòÿ%-”!Dóúòÿ%%”!Dóúòÿ%”!Dóúòÿ%”!Dóúòÿ% ”!Dóúòÿ%”!DH=9”!H2”!H9øtH‹”!H…Àt ÿà€Ã€H= ”!H5”!H)þHÁþH‰ðHÁè?HÆHÑþtH‹Õ“!H…ÀtÿàfDÀóú€=Å“!u+UHƒ=‚“!H‰åt H=Ît!è9öÿÿèdÿÿÿÆ“!]ÃÀóúéwÿÿÿ€‰øƒÿ v)ÿö„w;ƒÿ tvƒÿºþEÂÃf.„ƒÿs[ƒÿvFƒÿ¸¿þCÇÃDÿüt%ÿÿtÿù•À¶À„üÃ@¸üÃf…ÿºEÂÃD¸Ãf.„1ÀÃff.„fƒÿ „ÇŽ¡ÿøtI~WHx|!ÿût?ŽÂH+{!ÿüt*H°øÿÿÿþH€ HEÂÃf.„H‘z!ÄH±y!ƒÿt뎞Hïs!ÿötÖHP˜ÿ÷H€HEÂÃf„ƒÿ„ޱHòv!ƒÿtœ~{HLw!ƒÿ tŽHðûÿÿƒÿ H@hHEÂÃ@H-Ðÿù„eÿÿÿHHøÿÿÿúH@hHEÂÄH-Ѓÿ „8ÿÿÿH¸úÿÿƒÿ H@hHEÂÃfDH-Ѓÿ„ÿÿÿH(ýÿÿƒÿH@hHEÂÃfDHis!ƒÿ„çþÿÿ~&H¿s!ƒÿ„ÕþÿÿHÈþÿÿƒÿH@hHEÂÃH0ÿÿÿ…ÿH@˜HEÂÃfDHQt!ÄHw!ÄH‹ñ!SH‰ûH…ÀtH‰ß[ÿàf.„1ÒH5çèòùÿÿH…ÀtH‹H‰ß[H‹@0H‰³!ÿàH=j$èóÿÿff.„fSE1ÉA¸ H‰ûHƒìdH‹%(H‰D$1ÀjèˆõÿÿZYH…ÀtZH‹0‹V â úu-H‹H‹RH‰$H‹H‹@H…Òt/H‹|$dH3<%(u#HƒÄ[ÃH‰â¹H‰ßè€óÿÿH‹$H…ÒuÑ1ÀëÍè.÷ÿÿff.„º: ¸0I‰øfo;:LJ„êLJ‰HY00LJ™rrorf‰—f‰‡H‰ð‡‰‹HƒÀ‘ÿþþþ÷Ñ!Ê €€tè‰ÑMˆŸÁé÷€€DÑHHHDÁ‰×@×HƒØH)ðHP±HƒúšºNHFƒøs.¨uj…ÀtW¶AˆŸ¨tI‰Â·LþfA‰Lþë:f„H‹I¸§HƒçøI‰Ÿ‰ÂH‹LøI‰LøI)ùB L)ÎÁéóH¥AÆ„ŸÃD‹A‰Ÿ‰Â‹LüA‰LüëÛf.„AUI‰õATI‰üUH‰ÕSHƒìH…öuècñÿÿI‰ÅI¾$„Û„Öè^õÿÿL‰âH‹8ëfDHƒÂH¾„ÛtdöD_ uíH¾„ÀtU1öE1ÉE1À1Éë(f„<.tdH‹0H…öt6‹F © …# öÄÿ…G<„?‰ÂâÿÀú „+HƒìA¸ H‰ßE1Éj¹H L‰öèêÿÿ_AXI‰ÅH…Àt?H‹0H…öt7‹F © …H öÄÿ…h<„`‰ÂâÿÀú „L@Hƒì¹L‰öE1ÉjA¸ H¿ H‰ßè’éÿÿY^H…À„¶H‹H…À„ªH‹@H‰ßH‰ÆI‰ÅèiæÿÿHL$pH‰ÏHL$hH‰L$0…À„~L‰d$8M‰ìL‰t$@I‰þH‰l$Hë(„H‹H‹HH‹RH‰T$hL‰ê¾L‰ÿèàîÿÿ1ÒL‰æH‰ßè£ëÿÿH‰ÅH…À„L‰òH‰îH‰ßÇD$pèÑèÿÿH‰êL‰æH‰ßI‰Åèpèÿÿ‹P â útH‹T$0¹H‰ÆH‰ßèúæÿÿH‰Áë…DöÄ…×öÄ„¸öÄt H‹Hƒz uöÄ„®ûÿÿH‹fïÀf.@(z„šûÿÿf‹F % =…5H‹H‹@H‰D$hI‹EL‹hI‹D$Pö@…ÚL‰ê¾L‰ÿè:èÿÿéMûÿÿDöÄ…_öÄ„¹öÄtH‹Hƒz …]öÄ„ŠûÿÿH‹fïÀf.@(ŠB„rûÿÿé7DöÄ…öÄ„[öÄt H‹Hƒz uöÄ„®ûÿÿH‹fïÀf.@(z„šûÿÿf‹F % =…=H‹‹P ‰T$pI‹D$Pö@…¤HT$p1öL‰ÿèeçÿÿéXûÿÿöÄ„çH‹H…À„³ûÿÿH‹@Hƒø†|‹F % =…ÂH‹‹P ‰T$pI‹D$Pö@…!HT$p¾ L‰ÿèÿæÿÿébûÿÿf.„öÄ…?öÄ„†öÄt H‹Hƒz uöÄ„žûÿÿH‹fïÀf.@(z„Šûÿÿf‹F % =…H‹‹P ‰T$pI‹D$Pö@…ôHT$p¾ L‰ÿèræÿÿéEûÿÿDöÄ„OH‹H…À„›ûÿÿH‹@Hƒø‡UH…À„„ûÿÿH‹F€80…?érûÿÿf.„öÄ…ßöÄ„ãöÄt H‹Hƒz uöÄ„®ûÿÿH‹fïÀf.@(z„šûÿÿf‹F % =…µH‹H‹@H‰D$hI‹EL‹hI‹D$Pö@…ZL‰ê¾L‰ÿèšåÿÿéMûÿÿDöÄ…‡öÄ„VöÄt H‹Hƒz uöÄ„ŽûÿÿH‹fïÀf.@(z„zûÿÿf‹F % =…H‹H‹@H‰D$hI‹EL‹hI‹D$Pö@…jL‰ê¾L‰ÿè åÿÿé-ûÿÿDL‹d$8L‹t$@H‹l$HHƒìE1ÉA¸ L‰öjHî¹H‰ßè«äÿÿA]ZH…ÀtsH‹0H…ötk‹F © …FöÄÿu <t‰ÂâÿÀú t E1íëE€öÄ…öÄ„iöÄt H‹Hƒz uöÄtÎH‹fïÀf.@(zt¾fA½HƒìE1ÉA¸ L‰öj¹HZH‰ßèäÿÿAZA[H…ÀtsH‹0H…ötk‹N ‰ÊÁêƒâ…qöÅÿ…Á€ù„¸‰Ï1ÀçÿÀÿ „¢f.„ˆ…¥I‹D$Pö@tH‹xH5¤1ÀèíÞÿÿDHƒìE1ÉA¸0L‰öj¹HÉH‰ßèbãÿÿAXAYH…ÀtqH‹0H…öti‹N ‰ÊÁêƒâ…¹öÅÿ…o€ù„f‰Ï1ÀçÿÀÿ „P„ˆ…¢I‹D$Pö@tH‹xH5,1ÀèMÞÿÿDHƒìL‰öH‰ßE1ÉjA¸ ¹H'èÂâÿÿ^_H…ÀtsH‹0H…ötk‹N ‰ÊÁêƒâ…FöÅÿ…)€ù„ ‰Ï1ÀçÿÀÿ „ f.„ˆ…£I‹D$Pö@tH‹xH5Ô1Àè­ÝÿÿDHƒì¹E1ÉL‰öjH¨A¸ H‰ßè"âÿÿZYH…ÀtsH‹0H…ötk‹N ‰ÊÁêƒâ…|öÅÿ…Ù€ù„ЉÏ1ÀçÿÀÿ „ºf.„ˆ…¤I‹D$Pö@tH‹xH5\1Àè ÝÿÿDHƒìE1ÉA¸ L‰öj¹HH‰ßè‚áÿÿAZA[H…ÀtAH‹0H…öt9‹F © …ùöÄÿ…Š<„‚‰ÂâÿÀú „nfDHƒìE1ÉA¸ L‰öj¹HÁH‰ßèáÿÿAXAYH…ÀtBH‹0H…öt:‹F © … öÄÿ…j<„b‰ÂâÿÀú „NÆ…¦I‹D$Pö@…ˆ HƒìL‰öH‰ßE1ÉjA¸ ¹%H‡è’àÿÿ^_H…ÀtIH‹0H…ötA‹V ÷ …$öÆÿ…;€ú„2‰Ñ1ÀáÿÀù „@ˆ…§I‹D$Pö@…Û Hƒì¹E1ÉL‰öjH×A¸ H‰ßè àÿÿZYH…Àt>H‹0H…öt6‹F © …öÄÿ…<„‰ÂâÿÀú „óHƒì¹E1ÉL‰öjA¸ H{H‰ßè¢ßÿÿAZA[H‰ÁH…À„ÚH‹0H…ö„΋F © …MöÄÿ„g öÄ„æ H‹H…À„n H‹@Hƒø†H#¾L‰ÿH‰L$0èSßÿÿI‹D$Pö@tpH‹L$0H‹1H…ö„‹N º÷Á …éöÅÿ… €ù„¹ ‰ÏH\çÿÀÿ „ž fDH‹xH51ÀèÚÿÿfDHƒìE1ÉA¸ L‰öj¹H}H‰ßè’ÞÿÿAXAYH…Àt=H‹0H…öt5‹V â ú…\H‹H‹RH‰T$pH‹H‹P¾L‰ÿèlÞÿÿHƒìL‰öH‰ßE1ÉjA¸ ¹ H"è&Þÿÿ^_H…Àt?H‹0H…öt7‹F © …~öÄÿ…x<„p‰ÂâÿÀú „\@HT$p¾#L‰ÿÇD$pèæÝÿÿHƒìL‰öH‰ßE1ÉjA¸ ¹H6è Ýÿÿ^_H…ÀtnH‹0H…ötf‹F © …i‰Ââÿ…Å<„½‰ÁáÿÀù „©f„‰T$pI‹D$Pö@… HT$p¾L‰ÿèKÝÿÿD‰ëËé­îÿÿDöÅ…_ öÅ„¡öÅtH‹Hƒx …_ 1À€å„8ùÿÿH‹fïÀf.A(ŠB „ ùÿÿé7 öÅ…ÏöÅ„™öÅt H‹Hƒx u'1À€å„ŒùÿÿH‹fïÀf.A(z„xùÿÿ„¸ºéaùÿÿöÅ…w öÅ„çöÅtH‹Hƒx …w 1À€å„ÐùÿÿH‹fïÀf.A(ŠZ „¸ùÿÿéO öÅ…÷öÅ„nöÅtH‹Hƒx …÷1À€å„ úÿÿH‹fïÀf.A(ŠÚ„úÿÿéÏöÄ…wöÄ„öÄtH‹Hƒz …uöÄ„júÿÿH‹fïÀf.@(ŠZ„RúÿÿéODöÄ…÷öÄ„àöÄtH‹Hƒz …õöÄ„„úÿÿH‹fïÀf.@(ŠÚ„lúÿÿéÏDöÆ…¿öÆ„öÆtH‹¸Hƒy …¾úÿÿ1À€æ„³úÿÿH‹fïÀf.B(ºšÀEÂé—úÿÿ€öÄ…öÄ„¶ öÄtH‹Hƒz … öÄ„âúÿÿH‹fïÀf.@(Šò„ÊúÿÿéçDöÄ…÷öÄ„† öÄt H‹Hƒz u'öÄ„~üÿÿH‹fïÀf.@(z„jüÿÿf.„Hƒì¹E1ÉL‰öjH)ýA¸ H‰ßèÚÿÿZYH…À„× H‹0ÆD$HH…öt:‹F © …SöÄÿ… <„ ‰ÂâÿÀú „÷ €HƒìE1ÉA¸ L‰öj¹HÈüH‰ßè¢ÙÿÿAZA[ÆD$WH…ÀtDH‹0H…öt<‹F © …ÄöÄÿ…í <„å ‰ÂâÿÀú „Ñ f„HƒìE1ÉA¸ H‰ßj¹HcüL‰öè*ÙÿÿH‰D$HH‰ÇAXAYH…Àt7H‹0H…ö„ú‹F % =…. H‹H‹@H‰D$pH‹H‹@H‰D$8Hƒì¹L‰öH‰ßjE1ÉA¸ Hüè¼ØÿÿH‰D$PH‰ÇY^H…Àt7H‹0H…ö„œ‹F % =…Þ H‹H‹@H‰D$pH‹H‹@H‰D$@HƒìH‰ßE1ÉA¸ jH¹û¹L‰öèPØÿÿH‰ÇH‰D$@XZH…ÿt7H‹7H…ö„>‹F % =…Ž H‹H‹@H‰D$pH‹H‹@H‰D$0HƒìE1ÉA¸ L‰öj¹HZûH‰ßèä×ÿÿA[I‰ÂXM…Òt2I‹2H…ö„[‹F % =…B H‹H‹@H‰D$pI‹L‹PL‰T$XHƒìE1ÉL‰öjA¸ ¹H‰ßHûè|×ÿÿAXAZH…ÀI‰ÁL‹T$Xt2H‹0H…ö„D ‹F % =…\ H‹H‹@H‰D$pI‹L‹HH‹L$0H‹T$@M‰ÐL‰ÿH‹t$8L‰T$XèšÙÿÿ€|$HL‹T$X„*H‹D$0L Є,€|$W„9ÇD$dHT$d¾#L‰ÿAÍèðÖÿÿ…À„ùÿÿH5¡ L‰ÿ1Ûè§áÿÿéÊèÿÿföÄ…ÇöÄ„@ öÄtH‹ºHƒy …6ùÿÿ%‰Â„)ùÿÿH‹1ÒfïÀf.@(¸šÂEÐé ùÿÿH‹x¶•§H5^1ÀèŸÑÿÿéöÿÿf.„H‹x¶•¦H5æ1ÀèwÑÿÿéZõÿÿfHT$p¹H‰ßèNÔÿÿH‰Âé÷ÿÿfDöÄ„¿öÄ„6H‹Hƒz „(H=A1Àè"ÓÿÿfH‹H…À„ìõÿÿH‹@Hƒø†Hhø¾L‰ÿè²ÕÿÿéÕöÿÿDH‹H…À„œ÷ÿÿH‹@Hƒø‡.ûÿÿH…À„…÷ÿÿH‹F€80…ûÿÿés÷ÿÿH‹H…À„ÐðÿÿH‹@Hƒø‡ñÿÿH…À„¹ðÿÿH‹F€80…ððÿÿé§ðÿÿH‹H…À„äêÿÿH‹@Hƒø‡>ïÿÿH…À„ÍêÿÿH‹F€80…(ïÿÿé»êÿÿH‹H…À„ëÿÿH‹@Hƒø‡–ïÿÿH…À„ëÿÿH‹F€80…€ïÿÿéóêÿÿH‹H…À„DèÿÿH‹@Hƒø†– I‹D$Pö@…o1Ò¾L‰ÿèÔÿÿéèÿÿH‹1ÀH…Ò„ôÿÿH‹R¸Hƒú‡ÿóÿÿ1ÀH…Ò„ôóÿÿH‹F€80•ÀéåóÿÿDH‹H…À„4èÿÿH‹@Hƒø‡ŽìÿÿH…À„èÿÿH‹F€80…xìÿÿé èÿÿH‹1ÀH…É„ÒðÿÿH‹IHƒù‡T÷ÿÿH…É„»ðÿÿH‹V€:0••À¶Òé¦ðÿÿfDH‹1ÀH…É„òïÿÿH‹IHƒù†H¸ºéÕïÿÿDH‹H…À„¦òÿÿH‹@Hƒø†8AÍÆ…¦éŒòÿÿH‹H…À„ òÿÿH‹@Hƒø†#AÍéòñÿÿf.„H‹1ÀH…É„BñÿÿH‹IHƒù†E¸ºé%ñÿÿDH‹1ÀH…É„rðÿÿH‹IHƒù†÷¸ºéUðÿÿDH‹H…À„ìåÿÿH‹@Hƒø‡FêÿÿH…À„ÕåÿÿH‹F€80…0êÿÿéÃåÿÿH‹H…À„tçÿÿH‹@Hƒø‡ÞëÿÿH…À„]çÿÿH‹F€80…ÈëÿÿéKçÿÿöÄ„ŒöÄtH‹Hƒz …ëÿÿöÄ„³æÿÿH‹fïÀf.@(Šüêÿÿ„›æÿÿéñêÿÿfD<„‘òÿÿ‰ÂâÿÀú „}òÿÿHYóé›òÿÿH‹1ÒH…À„‚ôÿÿH‹@ºHƒø‡oôÿÿ1ÒH…À„dôÿÿH‹F1Ò€80•ÂéSôÿÿH‹xH5¥1ÀèîÌÿÿéLôÿÿf„öÄ„röÄtH‹Hƒz …òÿÿöÄ„oÿÿÿH‹fïÀf.@(Šýñÿÿ„WÿÿÿéòñÿÿfDöÅ„6H‹H™òH…É„LòÿÿH‹IHïóHƒù‡7òÿÿHtòH…É„'òÿÿH‹N€90H ÇóHEÑéòÿÿ€|$Wt!H‹D$0L ЕÀ¶ÀƒÀ‰D$déÖùÿÿ€ÇD$déÂùÿÿöÄ„æÿÿH‹fïÀf.@(нúÿÿ„ïåÿÿé²úÿÿfHT$h¹H‰ßè¾ÎÿÿI‰Åé]ëÿÿfDºH‰ßè#Õÿÿ‰ÂéÕéÿÿ@ºH‰ßè Õÿÿ‰Âé0éÿÿ@ºH‰ßèóÔÿÿ‰Âéµèÿÿ@HT$h¹H‰ßèVÎÿÿI‰ÅéÅçÿÿfDHT$h¹H‰ßè6ÎÿÿI‰ÅéEêÿÿfDöÄ„:H‹ÆD$HH…À„öõÿÿH‹@ÆD$HHƒø‡ãõÿÿÆD$HH…À„ÕõÿÿH‹F€80•D$HéÄõÿÿ@öÄ„›H‹ÆD$WH…À„öÿÿH‹@ÆD$WHƒø‡ öÿÿÆD$WH…À„ýõÿÿH‹F€80”D$Wéìõÿÿ@ÆD$HéfõÿÿfD1ÒH‰ßèžÊÿÿ„À„~äÿÿéAùÿÿ1ÒH‰ßè†Êÿÿ„À…Xùÿÿé1ïÿÿf„1ÒH‰ßèfÊÿÿ„À…žôÿÿéùðÿÿf„H‹xH5Íþ1ÀèÊÿÿéÈçÿÿf„H‹xH5mþ1ÀèþÉÿÿéEçÿÿf„H‹xL‰êH5Zÿ1ÀèÛÉÿÿé|éÿÿfDH‹xH5¥þ1Àè¾Éÿÿéõçÿÿf„H‹xL‰êH5šý1Àè›Éÿÿé æÿÿfDH‹xL‰êH5Âþ1Àè{ÉÿÿéŒèÿÿfDH‹xH5•ý1Àè^ÉÿÿézùÿÿöÅ„ÔöÅtH‹>H¿ðHƒ …ïÿÿHCï€å„öîÿÿH‹fïÀf.A(z„âîÿÿH‰ðéÖîÿÿH…À„ÕíÿÿH‹F€80…ê÷ÿÿéÃíÿÿºH‰ßèþÈÿÿ„À„–ïÿÿé1óÿÿºH‰ßèäÈÿÿ„À„”íÿÿé±÷ÿÿºH‰ßèÊÈÿÿé'þÿÿ1ÒH‰ßè»Èÿÿ„À…¥øÿÿéÖàÿÿ1ÒH‰ßè¤Èÿÿ„À…æùÿÿéßëÿÿ1ÒH‰ßèÈÿÿéÀìÿÿ1ÒH‰ßè~Èÿÿ„À„>ãÿÿI‹ué½çÿÿ1ÒH‰ßècÈÿÿ„À…«èÿÿébèÿÿ1ÒH‰ßèLÈÿÿ„À„üßÿÿI‹ué[äÿÿ1ÒH‰ßè1Èÿÿ„À„1áÿÿI‹uéƒåÿÿ1ÒH‰ßèÈÿÿ¶Ðé¾êÿÿ1ÒH‰ßèÈÿÿ„À…ùÿÿé©ëÿÿ1ÒH‰ßèíÇÿÿ¶Ðéõéÿÿ1ÒH‰ßèÛÇÿÿ¶Ðé£èÿÿ1ÒH‰ßèÉÇÿÿ„À„YàÿÿI‹ué¸äÿÿ1ÒH‰ßè®Çÿÿ„À„áÿÿI‹uéåÿÿ1ÒH‰ßè“Çÿÿ¶Ðéûèÿÿ1ÒH‰ßèÇÿÿ„À„ÑáÿÿI‹ué0æÿÿHT$p¹H‰ßL‰T$Xè)ÊÿÿL‹T$XI‰Áé“ôÿÿHT$p¹H‰ßè ÊÿÿH‰D$8éÎòÿÿHT$p¹H‰ßèîÉÿÿH‰D$@éóÿÿHT$p¹H‰ßèÒÉÿÿH‰D$0énóÿÿHT$p¹H‰ßè¶ÉÿÿI‰Âé·óÿÿ1ÒH‰ßèÔÆÿÿ¶ÐéüíÿÿH…É„“çÿÿH‹V€:0••À¶Òé~çÿÿH…À„WêÿÿH‹F€80…²÷ÿÿéEêÿÿH…À„ÒéÿÿH‹F€80…Ç÷ÿÿéÀéÿÿH…À„—ÞÿÿH‹F€80…Töÿÿé…ÞÿÿH…É„dèÿÿH‹V€:0••À¶ÒéOèÿÿH…É„æèÿÿH‹V€:0••À¶ÒéÑèÿÿH…À„ ßÿÿH‹F€80…nãÿÿéßÿÿºH‰ßèùÅÿÿ¶Ðé¡èÿÿºH‰ßèäÅÿÿ¶Ð鬿ÿÿºH‰ßèÏÅÿÿ¶Ðé×çÿÿºH‰ßèºÅÿÿ„À…æÿÿé¹åÿÿºH‰ßè ÅÿÿéþÿÿE1ÉéÚòÿÿHÇD$8é#ñÿÿHÇD$@éñÿÿHÇD$0éßñÿÿºH‰ßè\Åÿÿ„À„éÿÿéiöÿÿºH‰ßèBÅÿÿétýÿÿºH‰ßè0ÅÿÿéßüÿÿºH‰ßèÅÿÿéèüÿÿºH‰ßè Åÿÿé‰üÿÿºH‰ßèúÄÿÿ¶ÐébæÿÿE1ÒéÃñÿÿºH‰ßèÝÄÿÿ„À„èÿÿéöÿÿºH‰ßèÃÄÿÿéöèÿÿºH‰ßè±ÄÿÿéñûÿÿºH‰ßèŸÄÿÿéìüÿÿºH‰ßèÄÿÿ¶ÐéµëÿÿH‰L$01ÒH‰ßèvÄÿÿH‹L$0„À„ýöÿÿé˜éÿÿöÄ„õöÄtH‹ÆD$WHƒz …sïÿÿÆD$WöÄ„eïÿÿH‹fïÀf.@(¸›ÂDˆD$WéEïÿÿöÄ„“öÄtH‹ÆD$HHƒz …¬îÿÿÆD$HöÄ„žîÿÿH‹fïÀf.@(¸šÂDˆD$Hé~îÿÿH…À„QöÿÿH‹F€80…äèÿÿé?öÿÿH‰L$0ºéÿÿÿ1ÒH‰ßè’Ãÿÿ„ÀI‹D$P…SúÿÿHréé)éÿÿ1ÒH‰ßèoÃÿÿˆD$Héîÿÿ1ÒH‰ßè\ÃÿÿƒðˆD$Wé€îÿÿH5IúL‰ÿ1Ûè¯ÒÿÿéÒÙÿÿºH‰ßè-ÃÿÿƒðˆD$WéQîÿÿºH‰ßèÃÿÿˆD$HéÃíÿÿè–ÉÿÿfDAWAVAUATI‰ÔUH‰õSH‰ûHƒì(èTÑÿÿH‰ïH‹ÿP(I‰ÅA‹$¨tI‹MP‹Qƒâ¨u:…Ò…ºI‹T$81ÀH…ÒtöB t L‹rA€~ t=HƒÄ([]A\A]A^A_ÃfD…Ò… I‹D$ ƒ@DHƒÄ(¸[]A\A]A^A_ÃH‰ß¹HªêL‰öèÑÿÿH‰ß¹L‰öH•êH‰$èþÐÿÿH‰ß¹L‰öHêH‰D$èâÐÿÿH‰ß¹L‰öHhêH‰D$èÆÐÿÿH‰ß¹L‰öHUêH‰D$èªÐÿÿL‰öH‰ß¹ HBêI‰ÇèÐÿÿI‹uPH‰ÃöFt_H‹L$Hâ H‹~H5ÌùH…ÉHDÊH‰ÈH‹ $H…ÉI‰ÉH‹L$LDÊI‰ÈH…ÉH‹L$LDÂH…ÉHDÊM…ÿIE×HƒìP1Àè6ÁÿÿXZI‹´$˜H…ö„ƒHƒìH‰ÚH‰ïATAWÿt$0L‹L$0L‹D$(H‹L$ èÈÿÿHƒÄ H…À•ÀHƒÄ([¶À]A\A]A^A_ÃH‹yH5íø1ÀèÎÀÿÿé/þÿÿf„H‹yH5é1Àè®ÀÿÿéIþÿÿf„¾ˆ¿èqÂÿÿH‰ÆI‰„$˜Ç@(ÿÿÿÿéWÿÿÿf.„óúAWM‰ÇAVI‰ÎAUI‰ýATUH‰ÕSH‰óHƒìH‹ _!‹8èÉÿÿH‰ÇI‰ÄèÆÎÿÿL‰ïH‹ÿP(H‹@Pö@t7Hw M…ÿH‹xH5®øLDúM…öLDòH…íHDêM‰ø1ÀL‰ñH‰êèì¿ÿÿ1ÀH‰ÚL‰îL‰çHǃ´Çƒ f‰ƒ°èàüÿÿ‰Å…ÀtJ‹H‹S ¨u#H…ÒtAƒ¼$Ìt‹BDƒÀ‰BDHcR@9Ðl‹ƒÈ½‰HƒÄ‰è[]A\A]A^A_ÃfH‹»˜H…ÿtáè?ÀÿÿH‹»˜I‰Æè€ÁÿÿH‹»˜I‰ÄèÁ¿ÿÿL‰ïL‰ñL‰â‰Æè±ÅÿÿH‹»˜èUÄÿÿë HcðH=é÷1ÀèÁÿÿfóúAUATE1äUSHƒì÷u/Hƒ¾¨H‰óH‰ýu7€¾ t^H‹¾˜A¼èlÉÿÿ„ÀupHƒÄD‰à[]A\A]Ãf.„H PçH¢÷¾ÐèÅÿÿHƒÄD‰à[]A\A]Ãf.„H¹÷¾A¼è)ÉÿÿHƒÄD‰à[]A\A]ÃH‹»˜è,¿ÿÿH‹»˜I‰ÅèmÀÿÿH‹»˜I‰Ä设ÿÿL‰âL‰éH‰ï‰ÆE1äè›ÄÿÿéNÿÿÿfDóúAUATE1äUSHƒì÷u/Hƒ¾¨H‰óH‰ýu7€¾ t^H‹¾˜A¼èlÃÿÿ„ÀuxHƒÄD‰à[]A\A]Ãf.„H PæH¢ö¾ÐèÄÿÿHƒÄD‰à[]A\A]Ãf.„1ÉH÷ö¾A¼èçÃÿÿHƒÄD‰à[]A\A]Ãf„H‹»˜è$¾ÿÿH‹»˜I‰Åèe¿ÿÿH‹»˜I‰Ä覽ÿÿL‰âL‰éH‰ï‰ÆE1äè“ÃÿÿéFÿÿÿff.„óúH‹M\!ATI‰üUS‹8H‰óè¤ÅÿÿH‰ÇH‰ÅèiËÿÿL‰çH‹ÿP(‹H‹K öÂt%H…Ét ƒ½Ìt‹qDHcQ@ƒî‰qD9Ö_…öx[‹ƒâûH‹»˜‰H‹@Pö@u"èµÄÿÿH‹ƒ˜Ç@(ÿÿÿÿ¸[]A\ÃDH‹@H‰úH5åH‰Ç1ÀèP¼ÿÿH‹»˜ë½HcöH=ýõ1Àè6¾ÿÿfDóúUH‰õSHƒìH‹t[!‹8èÕÄÿÿH‰ÃèÇÿÿƒ»ÌuƃÑHƒÄ1À[]Ã@1ÒH5©äH‰ßèß¾ÿÿH…À„1ÒH5äH‰ßèžÿÿ1ÒH5~äH‰ßö@ …×誾ÿÿ÷@ ÿuA1ÒH5ZäH‰ßè¾ÿÿ€x t*1ÒH5CäH‰ßèy¾ÿÿ‹@ %ÿÀ= …fD1ÒH5äH‰ßèO¾ÿÿö@ „¥1ÒH5þãH‰ßè4¾ÿÿHƒ8tX1ÒH5çãH‰ßè¾ÿÿH‹Hƒx‡ ÿÿÿ1ÒH5ÈãH‰ßèþ½ÿÿH‹Hƒxt1ÒH5­ãH‰ßèã½ÿÿH‹@€80…ÒþÿÿH‹EhH‰ßºH‹pè1ÀÿÿH‹EpH‰ßH«ôH‹pè:ÁÿÿHƒÄ1À[]Ã1ÒH5YãH‰ßè½ÿÿ1ÒH5HãH‰ß÷@ tZèu½ÿÿö@ uo1ÒH5(ãH‰ßè^½ÿÿö@ „~ÿÿÿ1ÒH5 ãH‰ßèC½ÿÿfïÀH‹f.@(Š-þÿÿ„Uÿÿÿé"þÿÿfDè½ÿÿ1ÒH‰ÆH‰ßè.ºÿÿ„À…þÿÿé+ÿÿÿ1ÒH5¹âH‰ßèï¼ÿÿH‹Hƒx „rÿÿÿéØýÿÿ@èÓ¼ÿÿºë³ff.„óúUSH‰óHƒì‹¨t€¾ H‰ýtöÄt$H‰ÞH‰ïè1ÃÿÿH‹»˜èµ¾ÿÿƒ#ýHƒÄ[]ÃH‹¾˜è ¿ÿÿ„ÀtÌ1ÉH2â¾H‰ïèÒ¿ÿÿë´óúAWAVAUI‰ÍATI‰ÔUH‰ýSH‰óHƒìdH‹%(H‰D$1ÀH‹sX!‹8èÔÁÿÿI‰ÆA‹D$ % =…ÌI‹$M‹d$H‹@H‰$M…í„ÑA‹U ‰ÐÁèƒà…˜öÆÿ…¯€ú„¦‰ÑE1ÿáÿÀù „H‹$Hƒú „ÁHƒú„Hƒú„½Hƒú%„›Hƒú…Q¹H=}ßL‰æó¦—€Ú1À„ÒuDˆ»¤¸„H‹\$dH3%(…ÔHƒÄ[]A\A]A^A_ÃDöÆ„ŸI‹UE1ÿH…Ò„XÿÿÿH‹RHƒú†±H‹$A¿¸Hƒú …?ÿÿÿ¹ H=êàL‰æó¦—€ڄÒ…A€» „|‹‰ÑÁé ƒáD8ù„ €»¤„ÜE„ÿ„Àθ‰é4ÿÿÿ@öÆ„×öÆ…E1ÿ€æ„«þÿÿI‹UfïÀf.B(ŠNÿÿÿ„’þÿÿéCÿÿÿ@L‰æH‰â¹L‰÷è ºÿÿI‰ÄM…í…/þÿÿE1ÿ1Àé`þÿÿ€¹H=âÝL‰æó¦—€Ú1À„Ò…ŸþÿÿDˆ»¥¸éŽþÿÿfD¹H=åßL‰æó¦—À„Àt>¹H=éÝL‰æó¦—À„À… Dˆ»¦¸é?þÿÿ€1Àé1þÿÿDˆ»¡¸éþÿÿ€I‹MHƒy …Xþÿÿéæþÿÿ@H…Ò„ýÿÿI‹E€80•ÀA•ǶÀézýÿÿHƒúur¹H= ÝL‰æó¦—€Ú1À„Ò…¹ýÿÿDˆ»¢¸é¨ýÿÿ„¹&H=dìL‰æó¦—€Ú1À„Ò…ýÿÿDˆ»§¸énýÿÿfDHƒú…ž¹ H=’ëë‚1ÒL‰îL‰÷裵ÿÿA‰Ç¶ÀéÑüÿÿ„¹H=ÀÜL‰æó¦—€Ú1À„Ò…ýÿÿDˆ»±¸éþüÿÿfDº룅À…èüÿÿH‰ï1ɾH/ïè’»ÿÿH=#ï1Àè·ÿÿ@Hƒú…~þÿÿ¹H=[ÜL‰æó¦—€Ú1À„Ò…•üÿÿDˆ»°¸é„üÿÿ@€æý¸‰éqüÿÿH‹»˜‰Æè·ÿÿ„Àu‹é ýÿÿ€¸éFüÿÿE„ÿH|ݾH‰ïHPÝHDÐ1Éèâºÿÿ¸éüÿÿè»ÿÿóúAUATI‰ôUSH‰ÓHƒì(dH‹%(H‰D$1ÀH‹}S!‹8èÞ¼ÿÿH‰Å‹C % =…¨H‹H‹[H‹@H‰$¶ÿà„¹ H=ÂÜH‰Þó¦—À„À„º¹H=ÄÜH‰Þó¦—À„ÀuxHƒ,$HƒÃ¶ë“f.„H‰ÞH‰â¹H‰ïè=¶ÿÿH‰ÃéLÿÿÿD¹ H=ÅÜH‰Þó¦—À„À„’¹H=[ÜH‰Þó¦—À„À„,@1ÀH‹L$dH3 %(…žHƒÄ([]A\A]ÀA€¼$ H…htÈA‹$HµPH‰ï€æHEðèL»ÿÿë¬f.„¹H=gÜH‰Þó¦—À„À„²Hƒ<$…wÿÿÿ¹ H=8ÝH‰Þó¦—À„À…YÿÿÿI‹¼$˜è<´ÿÿH‰ïH‰Æè¶ÿÿH‰ïH‰ÆèÖºÿÿé3ÿÿÿHƒ<$…%ÿÿÿ¹H=7ÙH‰Þó¦—À„À…ÿÿÿA¶´$¤é¹f„Hƒ<$ …åþÿÿ¹ H=§ÛH‰Þó¦—À„À…ÇþÿÿI‹¼$˜è³ÿÿ‰ÆésH‹$Hƒú „Hƒú „¹H=}ÛH‰Þó¦—À„À„’¹H=dÛH‰Þó¦—À„À…üI‹„$˜‹P(H…8Hcòƒúÿ„@þÿÿéùf„Hƒ<$ …%þÿÿ¹ H=ÛH‰Þó¦—À„À…þÿÿI‹¼$˜è:±ÿÿH‰Æé²f¹ H=Ø×H‰Þó¦—À„À…ÒýÿÿA¶´$¥é„@¹ H=yÚH‰Þó¦—À„À…¢ýÿÿI‹¼$˜èå³ÿÿH‰ÃH…8H…Û„„ýÿÿH‰ß躲ÿÿH‰ÞH‰ÂH‰ïè̵ÿÿH‰ïH‰Æè¹ÿÿé^ýÿÿ@¹H=ÊÙH‰Þó¦—À„À„R¹H=²ÙH‰Þó¦—À„À„t¹H=šÙH‰Þó¦—À„À„VH‹$Hƒø„LHƒø …æüÿÿ¹ H=Q×H‰Þó¦—À„À…ÈüÿÿA¶´$°ë}DHƒ<$ …­üÿÿ¹H=ÛH‰Þó¦—À„À…üÿÿI‹¼$˜èµÿÿ‰Æë>fDHƒ<$…müÿÿ¹H=ØH‰Þó¦—À„À…OüÿÿA¶´$¡fDH‰ïèh³ÿÿH‰ïH‰ÆèÍ·ÿÿé*üÿÿ„H‹$Hƒø„ºHƒø…üÿÿ¹H=GØH‰Þó¦—À„À…êûÿÿA¶´$£ëŸ€H‹$Hƒø „¢Hƒø …Àûÿÿ¹H=$ØH‰Þó¦—À„À…¢ûÿÿèý±ÿÿéLüÿÿ„¾ H‰ïèc¸ÿÿA‹´$´H‰ïI‰Åè ²ÿÿHƒìL‰îH‰ïjI‰ÁA¸$¹Hê×èê²ÿÿA‹´$¸XH‰ïZèh²ÿÿHƒìL‰îH‰ïjI‰ÁA¸$¹HÅ×è²²ÿÿYH‰ï^L‰îèųÿÿH‰ïH‰Æèš¶ÿÿ¹H=3×H‰Þó¦—€ڄÒ…ÝúÿÿHL$HT$¾I‹¼$˜è¼®ÿÿ…À„ÜH…8éªúÿÿ„¹ H=l×H‰Þó¦—À„À…êûÿÿI‹¼$˜èe±ÿÿH‰ÃH…8H…Û…àüÿÿé_úÿÿD¹H=QÔH‰Þó¦—À„À…:úÿÿA¶´$¢éìýÿÿ@¹ H=ÖH‰Þó¦—À„À… úÿÿè±ÿÿH‰ÃH…8H…Û…püÿÿéïùÿÿDI‹¼$˜è[­ÿÿ‰Æé”ýÿÿ@I‹¼$˜èôÿÿH‰ÃH…8H…Û….üÿÿé­ùÿÿI‹¼$˜èË®ÿÿH‰Ãéüÿÿ¹H=gÖH‰Þó¦—À„À…ÚúÿÿI‹¼$˜èu¯ÿÿéúÿÿ¹H=QÖH‰Þó¦—À„Àt}¹H=ÏÕH‰Þó¦—À„ÀtcHƒú„ªHƒú…ùÿÿ¹ H=LæH‰Þó¦—À„À…úøÿÿA¶´$§é¬üÿÿ@I‹´$˜é›üÿÿH‹T$H‹t$éUûÿÿI‹¼$˜ḛ̀ÿÿH‰ÃH…8H…Û…'ûÿÿ馸ÿÿ¹H=úÒH‰Þó¦—À„À…†øÿÿA¶´$±é8üÿÿ¹H=¹ÒH‰Þó¦—À„À…ZøÿÿA¶´$¦é üÿÿè÷±ÿÿ€óúAWI‰ÿAVAUATUH‰õSHƒìH‹yJ!‹8èÚ³ÿÿL‹e H‰Çèž¹ÿÿL‰ÿH‹ÿP(I‰ÅH‹@P‹PöÂ…r»ÿÿÿÿL5Fåë2@…ÛtCH‹½øH…ÿuSI‹¼$˜è#­ÿÿ‰Ã…À…¹I‹EP‹PƒâtÍH‹x‰Ú1ÀL‰öèªÿÿ…Ûu½I‹¼$˜èµÿÿH‰ÇH‰…øH…ÀtèX°ÿÿHÇ…øë›I‹¼$˜è‹³ÿÿ…À„wÿÿÿI‹EPI‹¼$˜ö@… è«ÿÿI‹¼$˜I‰ÅèX¬ÿÿI‹¼$˜H‰Å蘪ÿÿL‰éH‰êL‰ÿ‰Æèˆ°ÿÿëlfDI‹UP‹Bƒà…Û~OI‹¼$˜…À…šè½ªÿÿI‹¼$˜H‰Åèý«ÿÿI‹¼$˜H‰Ãè=ªÿÿH‰ÚH‰éL‰ÿ‰Æè-°ÿÿI‹UP‹Bƒà»…Àu:HƒÄ‰Ø[]A\A]A^A_Ãf„H‹xH5Ó1Àèn©ÿÿI‹EP‹PépþÿÿfH‹zH5~Ó1ÀèN©ÿÿë²@ès«ÿÿI‹UPH5èãH‹zH‰Â1Àè*©ÿÿI‹¼$˜é;ÿÿÿèH«ÿÿI‹UPH5•ãH‹zH‰Â1Àèÿ¨ÿÿI‹¼$˜éµþÿÿfóúAWI‰ÏAVI‰þAUATUH‰ÕSH‰óHƒì(H‹#H!‹8脱ÿÿH‰ÇH‰D$èG·ÿÿL‰÷H‹ÿP(L‹c I‰ÅH‹@Pö@…IA¶„$¦‰ƒìA¶„$§‰ƒðM…ÿ„BAöG …A¶„$¦‰ƒìAöG …=A¶„$§‰ƒðAöG tI‹w€~ „BǃHǃøHǃAöG …NA¶„$¥‰ƒÀH“ÀHƒ@HÇHƒÀH9ÐuðH‰ÞL‰÷è%²ÿÿ‹‹ì…É„ÇI‹EPö@…Hƒ»Àt H‹èF!ºV¾H=ãH‹èo²ÿÿI‹¼$˜è"©ÿÿH‰ƒÀH…À„àH‰ïèš©ÿÿH‹»ÀH‰îH‰Âèh±ÿÿA‰ÇI‹EPö@…;E…ÿ„þ‹“ð…Ò… H‹»Àèt®ÿÿ=… I‹EPö@…ÂǃìE¶¼$£I‹D$Pƒx×¶EE1öE1ÀA¹„HU„ÀtP<-„8ŽÿÿH‹uE1ÉL‰çA¸D¹ HÓÃÇ$èÿÿH‹uE1ÉL‰çA¸D¹H¶ÃÇ$èîœÿÿH‹uE1ÉL‰çA¸D¹HžÃÇ$èÆœÿÿH‹CPH‹»øÇƒ”L‹h@XZ膡ÿÿL‰ç‰Æè,œÿÿL‰çH‰Æè‘ ÿÿº H5•ÂL‰çI‰Æè:ÿÿL‰çH‰Æèo ÿÿ1ÒL‰ñH‰ïH‰ÆAÿÕ‹H‹S ¨u'H…Òt"Aƒ¼$Ìt‹BDƒÀ‰BDHcR@9Ðu‹ƒÈA¾ǃ‰I‹‡˜Ç€„ë6„L‰ïè8˜ÿÿL‰ïI‰Äè}™ÿÿL‰ïH‰Ãè—ÿÿL‰áH‰ÚH‰ï‰Æè²ÿÿHƒÄ(D‰ð[]A\A]A^A_ÃI‹FPö@tH‹xH5ÓÓ1Àè—ÿÿE1öëÍ€L‰çH‰L$H‰D$è–›ÿÿH‹L$H‹D$éñúÿÿ€è[¡ÿÿéûÿÿfDH±Ó¾H‰ïE1öèi¡ÿÿérÿÿÿǃ”L‰çA¾è¥ÿÿ1öL‰çH‹H‹X@諚ÿÿL‰çH‰ÆèŸÿÿº H5ÁL‰çI‰Åè¹›ÿÿL‰çH‰ÆèîžÿÿL‰é1ÒH‰ïH‰ÆÿÓé ÿÿÿH=ÑÀ1Àè.˜ÿÿHcðH=äÏ1Àè˜ÿÿHcðH=ãÎ1Àè ˜ÿÿff.„óúAWM‰ÏAVA‰öAUI‰ýATI‰ÔUSH‰ËHƒì(L‰D$dH‹%(H‰D$1ÀH‹5!‹8è|žÿÿH‰ÇèD¤ÿÿL‰ïH‹ÿP(H‰ÅH‹@Pö@…šI‹<$H…ÿt èl›ÿÿIÇ$E…ö~ A‹…À„$H‹EPö@…¦H‰ßè›ÿÿA‰ÆH‹EPö@…mE…ö„œI‹<$H…ÿt è›ÿÿIÇ$H‹EPö@…€H‰ß舜ÿÿH‰ßI‰Æè-ÿÿH‰ßI‰ÄèbœÿÿL‰ñL‰âL‰ï‰ÆIÇÆþÿÿÿèk›ÿÿH‰ßè3šÿÿH‹EPö@…mH‹\$dH3%(L‰ð…çHƒÄ([]A\A]A^A_ÀH‰ßèœÿÿH‰ßI‰$H…À„hèë˜ÿÿƒè‰Áx;H˜H‹S8HÁàHtpD‹>èi ÿÿPýƒâýt ƒèƒà÷…UƒéHƒÆ€ƒùÿuÙH‰ß葘ÿÿ…À…õþÿÿH‰ßèñ•ÿÿI‰ÆH‹EPö@„KÿÿÿH‹xL‰òH5òÑ1Àè ”ÿÿé1ÿÿÿfDH‹xH5=Ñ1Àèî“ÿÿéOþÿÿf„H‹xD‰òH5ŠÑ1ÀèË“ÿÿéyþÿÿfDH‹xD‰òH5"Ñ1Àè«“ÿÿé@þÿÿfDH‰ß踛ÿÿH‰ßI‰ÄèíšÿÿH‹UPL‰áH5ÿ¾H‹z‰Â1Àèr“ÿÿéMþÿÿDH‹xH5uÑ1ÀèV“ÿÿé|þÿÿH‹t$H‰ßè3ÿÿ„À…÷ýÿÿAÇé»ýÿÿ€èƒšÿÿ…À…×ýÿÿH‰ß賚ÿÿI‰ÆHƒøÿ…Øþÿÿé½ýÿÿ1öH‰ßHT$ÆD$è\–ÿÿH‰ßè4—ÿÿ…À…˜ýÿÿéžþÿÿè‚™ÿÿfóúAWAVAUATI‰ôUSH‰ûHƒì8H‹ 2!H‰|$‹8èe›ÿÿH‰Çè-¡ÿÿH‰ßH‹ÿP(I‰ÅH‹@Pö@…#A‹„$ì…À„ãA‹„$”‰D$ E‹´$E…ö…Ü‹L$ …É„RIƒ¼$ø„C‹\$ ¾0H‰ßè ”ÿÿI‰„$àH…À„¾pH‰ßèì“ÿÿI‰„$ÐH…À„ûI‹¼$øèŽ˜ÿÿ‹T$ I‹¬$àH‰D$I‹œ$Ð…ÒŽLx81ÀL‰d$(D‰t$$A‰ÄëP„ÇC`þI‹¸¾H…ÿHDøH‰{@èk“ÿÿH‰EH‰CAƒÄHƒÅ0HƒÃpIƒï€D;d$ „¨Hƒ|$„,E‹_8E‰ÞI‹EPö@…¿A‹G4D‰ß‰Eè8ÿÿ‰C`I‹EPö@…HEH‰+H‰CHE H‰CAöG,@…Yÿÿÿ‹C`ƒø„冃ø„ƒø…<ÿÿÿHÇC@¾¿è®’ÿÿH‰EH‰Cé>ÿÿÿL‹d$(D‹t$$I‹œ$ÐI‹¼$ÀH‰Þè.‘ÿÿ„À…¶fDAÇ„$I‹EPö@ujA¾HƒÄ8D‰ð[]A\A]A^A_ÃfH‹xH5ó»1ÀèNÿÿA‹´$ì…öt²A‹”$”I‹EP‰T$ ö@„ÁýÿÿH‹xH5]Î1ÀèÿÿéªýÿÿH‹xH5¶»1Àèþÿÿë‚@H‹|$1ɾHEÎè`–ÿÿégÿÿÿƒø…&þÿÿHE(HÇC@H‰CA‹G,ÁèˆCe€ceé)þÿÿ@H‹xD‰òH5âÎ1Àè“ÿÿégþÿÿfDH‹xL‹ED‰ñD‰âH53Î1ÀD‰\$ ègÿÿI‹EPI‹OH5@ÎE‹O4E‹G8H‹xI‹1ÀèBÿÿD‹\$ éñýÿÿ„A»þA¾þéÊýÿÿ€HE HÇC@H‰Cé€ýÿÿH‹|$1ɾHÍèh•ÿÿéoþÿÿI‹¼$ÀèC–ÿÿI‹¼$ÀH‰Åèã–ÿÿI‹¼$ÀH‰Ãè–ÿÿH‹|$H‰éH‰Ú‰Æè!•ÿÿé(þÿÿff.„óúöu¸ÃSH‰ó臘ÿÿ…Àt‹ƒ…Àu H‹»Àè]˜ÿÿ¸[ÃfDóúH‹-!AVAUATUH‰õSH‰û‹8èð–ÿÿH‰ÇI‰Ä赜ÿÿH‰ßH‹ÿP(‹•…Òt3H‹@PH‹Èö@…OH…ÉtH‰Ïè “ÿÿH‹½ØH…ÿtè“ÿÿL‹µàM…ötR‹…”…À~/ƒèI^H@HÁàMl@DH‹;H…ÿtèÓ’ÿÿHƒÃ0L9ëuêL‰÷èÂ’ÿÿH‹½ÐH…ÿtè±’ÿÿH‹½ÀH…ÿtèà•ÿÿHÇ…ÀL‹µ8M…ötV‹……À~9ƒèL‰óHÁàMlH‹3H…öt‹Vƒú†¬ƒê‰VHÇHƒÃI9ÝuÖL‰÷è>’ÿÿHÇ…8H@L­ÀDH‹3H…öt‹Vƒúv(ƒê‰VHÇHƒÃI9ÝuÚ[ƒeý]A\A]A^ÃDL‰çè`‘ÿÿëÔH‹xL‹…ØH5 Ì1À蕌ÿÿH‹ÈH…É…þÿÿéþÿÿL‰çè(‘ÿÿéMÿÿÿóúAWAVI‰öAUI‰ÍATUH‰ýSH‰ÓHƒìdH‹%(H‰D$1ÀH‹“+!‹8èô”ÿÿI‰Ä‹C % =…>H‹H‹[H‹@H‰$L‰çè—šÿÿH‰ïH‹ÿP(I‰ÇH‹@Pö@uA¹H=Ó²H‰Þó¦—À„ÀtY1ÀH‹t$dH34%(…¡HƒÄ[]A\A]A^A_ÃfH‹xH‰ÙH5BË1ÀH‰ê蘋ÿÿ¹H=z²H‰Þó¦—À„ÀumM…í„õA‹U ‰ÐÁèƒà…+öÆÿu€út‰ÑáÿÀù u1f„öÆt{I‹UH…ÒtH‹RHƒú†Ì¸€A‰†ÀI‹GPö@„,ÿÿÿH‹x1ÉH‰êH5ÃÊ1ÀèìŠÿÿéÿÿÿ€H‰ÞH‰â¹L‰çè½ÿÿH‰Ãé¶þÿÿDöÆtKöÆt I‹MHƒy u‡€ætŽI‹U1ÀfïÀf.B(ºšÀEÂéoÿÿÿ€1Àéaÿÿÿf„1ÒL‰îL‰ç胊ÿÿ¶ÀéCÿÿÿH…Ò„7ÿÿÿI‹E€80•À¶Àé%ÿÿÿDºL‰îL‰çèHŠÿÿ¶ÀéÿÿÿèËÿÿff.„óúAWA‰ÏAVI‰ÖAUATI‰üUHcîSHƒìH‹C)!‹8褒ÿÿH‰ÇH‰Ãèi˜ÿÿL‰çH‹ÿP(H‰$ƒý‡»E…ÿt>H‹ $HcÅL‹¬Á@M…ít*L‰îH‰ßèÿ‰ÿÿHƒÄH‰ßH‰Æ[]A\A]A^A_é&’ÿÿfDM…ö„¾ H‰ßL%ÑèC“ÿÿ1öL‰÷I‰ÅèÖŠÿÿL‰÷èÿÿH…ÀtQf„ƒý‡'‰êIc”Lâ>ÿâH‹hH“Pö@dHEÑfH‰ßL‰î襌ÿÿL‰÷轌ÿÿH…Àu¸E…ÿ„'H‹$L‰¬è@M…í…0ÿÿÿHƒÄHƒ8[]A\A]A^A_Ã@H‹hH“Pö@dHEÑ똄Hcp@H‰ßèÄŒÿÿH‰Âé|ÿÿÿ@HcphH‰ß謌ÿÿH‰Âédÿÿÿ@H‹p8H9p@H‰ßHCp@苌ÿÿH‰ÂéCÿÿÿ‹xpèø”ÿÿ1ÒH‰ßH‹0èë‹ÿÿH‰Âé#ÿÿÿ‹xpèØ”ÿÿH‰ßHcpdèLŒÿÿH‰Âéÿÿÿ@Hcp8H‰ßè4ŒÿÿH‰Âéìþÿÿ@H‹hH“Pö@dHDÑéÍþÿÿDH‹hH“Pö@dHEÑé­þÿÿDH‹hH“Pö@dHEÑéþÿÿD‹xpè@”ÿÿH‰ßHcpè´‹ÿÿH‰Âélþÿÿ@HcppH‰ß蜋ÿÿH‰ÂéTþÿÿ@H‹pH‰÷H‰t$è‰ÿÿH‹t$H‰ßH‰Â蟌ÿÿH‰Âé'þÿÿ€H‹hH“Pö@eHEÑéþÿÿDH‹0ë¯1ÉH²¾L‰çèrÿÿéþÿÿD1ÉH²²¾L‰çèRÿÿéóýÿÿDL‰îH‰ßè}Œÿÿéýÿÿ„óúAWAVAUI‰ÕATI‰ôUH‰ýSHìˆdH‹%(H‰D$x1ÀH‹Ó%!‹8è4ÿÿH‰ÃA‹E % =…I‹EM‹mH‹@H‰D$H‰ßèÔ”ÿÿH‰ïH‹ÿP(Hƒ|$I‰Æv0H‹@Pö@uvA¶EƒèN<wHζÀHc‚HÐ>ÿàfD1ÀH‹\$xdH3%(…“HĈ[]A\A]A^A_ÄL‰îHT$¹H‰ß諈ÿÿI‰ÅégÿÿÿH‹xL‰éH‰ê1ÀH5Å蘅ÿÿémÿÿÿH‹D$Hƒè HƒøwHîÍHc‚HÐ>ÿà¹H=_³L‰îó¦—À„À„"¹ H=°L‰îó¦—À„À…4ÿÿÿI‹”$ø¹¾H‰ïèêÿÿéÿÿÿD¹ H=V³L‰îó¦—€Ú1À„Ò„—¹ H=Ó°L‰îó¦@—Å@€Ý@¾í…í…ÌþÿÿH‰ß¾ èŽÿÿA‹¼$I‰Æ…ÿtxLl$~q€A‰èH ’°L‰ï1Àºd¾èˆÿÿH‰ßA‰ÇHcŃÅHÁàI„$8H‹0èr„ÿÿHƒìD‰ùL‰öjI‰ÁA¸$L‰êH‰ßèâˆÿÿY^A9¬$–L‰öH‰ßèë‰ÿÿH‰ßH‰ÆèÀŒÿÿéþÿÿ¹H=ä±L‰îó¦—À„À…úýÿÿI‹”$ø¹¾ H‰ïè°ŒÿÿéÝýÿÿ¹H=ÿ±L‰îó¦—À„À…ºýÿÿI‹”$ø¹¾H‰ïèpŒÿÿéýÿÿ¹&H=ºL‰îó¦—À„À…zýÿÿIc´$ðH‰ß蚇ÿÿH‰ßH‰Æèÿ‹ÿÿé\ýÿÿf.„¹H=®L‰îó¦—À„À…2ýÿÿI‹”$ø¹¾H‰ïèè‹ÿÿéýÿÿ¹H=KªL‰îó¦—À„À…òüÿÿIc´$ìésÿÿÿD¹H=@®L‰îó¦—À„À…ÂüÿÿIc´$0éCÿÿÿD¹H=º­L‰îó¦—À„À„~¹H=º­L‰îó¦—À„À„½¹H=V©L‰îó¦—À„À…VüÿÿA‹”$ÀHƒP…Ò„AüÿÿHƒhé5üÿÿ¹H=€­L‰îó¦—À„À…üÿÿI‹”$ø¹¾ H‰ïèÈŠÿÿéõûÿÿ¹H=«¬L‰îó¦—À„À…ÒûÿÿI‹FPI‹´$(ö@…$H‰ßè„…ÿÿH‰ßH‰ÆèIŠÿÿé¦ûÿÿ@¹H=‚¬L‰îó¦—À„À…‚ûÿÿI‹”$ø¹¾H‰ïè8Šÿÿéeûÿÿ¹ H=P¬L‰îó¦—À„À„M¹ H=?¬L‰îó¦—À„À„N¹ H=?¬L‰îó¦—À„À„¹ H=ù¬L‰îó¦—À„À…èúÿÿI‹´$øéiýÿÿ¹ H=¬L‰îó¦—À„À…ºúÿÿI‹”$ø¹¾H‰ïèp‰ÿÿéúÿÿ¹ H=Ý«L‰îó¦—À„À…zúÿÿI‹”$ø¹¾H‰ïè0‰ÿÿé]úÿÿI‹”$ø¹¾ H‰ïè‰ÿÿéJûÿÿf„I‹”$ø¹1öH‰ïèéˆÿÿéúÿÿI‹”$ø¹¾H‰ïèʈÿÿé÷ùÿÿI‹”$ø¹¾ H‰ï諈ÿÿéØùÿÿI‹”$ø¹¾H‰ï茈ÿÿé¹ùÿÿI‹”$ø¹¾ H‰ïèmˆÿÿéšùÿÿH‹xH‰ò1ÀH5”«èƒÿÿI‹´$(éºýÿÿI‹”$ø¹¾H‰ïè,ˆÿÿéYùÿÿè†ÿÿfóú1ÀÃf„óúAWI‰ÿAVI‰ÎAUM‰ÅATUH‰õSH‰ÓHƒìHdH‹%(H‰D$81ÀH‹`!‹8èÁ‡ÿÿI‰Ä‹C % =…ëH‹‹X L‰çèmÿÿL‰ÿH‹ÿP(H‰D$H‹E L‹ˆ¨M…É…ÛH‹D$H‹@Pö@…Ð…ÛŽð9ŒäA‹F öÄÿ„ÏIEþHƒø† IEüHƒø†ûIEúHƒø†íIƒý„㋌$€…É…©ƒëH‹½8L‰êL‰öHcÛL‰L$I‰ßIÁçLÿ誆ÿÿ‹•ìA‰Æ…Ò„rH‹•8IML‹L$LúH‹2‹F ‰ÇçÿHƒù‡nA¸IÓàL‰ÁA÷À „%…ÿu!<t‰ÂAºâÿÀú …]öÄuH‹T$H‹RPöB…% =…àH‹H‹@ H‹•ØL[IÁãJ‰H‹•8L‹ØLúH‹2MÙ‹F öÄ…kH‹L$% AºþH‹IPöAtOM‹ =…5H‹VH‹yM‰ÈL‰É1ÀH5Œ½L‰\$èò|ÿÿH‹•8L‹\$AºþLúH‹2‹F % =…gH‹H‹HH‰L$0H‹L‹HH‹D$LcáÆD$E1ÿH‹@PD‹@Aƒà„vH‹xL‰ê1ÀL‰\$(H5¾L‰L$ D‰T$èn|ÿÿD‹T$L‹L$ E1ÀL‹\$(HÝH‹ÈH)ØH‰ÃHÁãH‹P`D9Ò„kH‹D$H‹@Pö@„°H‹xD‰ÑM‰è1ÀH5 ¾L‰\$ L‰L$D‰T$èù{ÿÿL‹\$ L‹L$H‹…ÈD‹T$HØéæH‹xH5é§1ÀL‰L$èÁ{ÿÿL‹L$éýÿÿ€1ÉHÛ§L‰ÿE1ö¾è‚ÿÿH‹L$8dH3 %(D‰ð…ÖHƒÄH[]A\A]A^A_ÃL‰öL‰çL‰L$è°…ÿÿL‹L$…À…ýÿÿL‰çèÛ‰ÿÿ1öL‰÷H‹ÿP ‰ÞH=g»H‰Â1À轄ÿÿL‰çH‰Æèƒÿÿ1ɾL‰ÿH‹PèÿÿL‹L$éµüÿÿDH‰ÞºL‰çè`„ÿÿ‰Ãéüÿÿf„H €£HÒ³L‰ÿE1ö¾ÐèBÿÿé&ÿÿÿD<„)üÿÿ%ÿÀ= …Püÿÿéüÿÿ1ÉH÷ºL‰ÿE1ö¾èÿ€ÿÿéãþÿÿf.„…ÿ…p<„h‰ÁAºþáÿÀù „NH‹D$L[IÁãH‹@PD‹@Aƒà…¹ÆD$E1ÿE1äHÝH‹ÈH)ØH‰ÃHÁãHD9P`„-Ç…èD‰P`H‹…ȶt$L‰LH‹…ÈL‰d@H‹…ÈDˆ|eH‹…ØN‰dH‹…ØBˆté þÿÿA÷À¼€…k€år„ÿÿÿ…ÿu<…âöÄuH‹T$H‹RPöB…% =…ÖH‹ò@(H‹…ØL[IÁãòBH‹D$L‹ØH‹@PMÙD‹@Aƒà…ðÆD$E1ÿA¼Aºéãþÿÿ€H‹L$L[IÁãH‹IPöA… % AºþéûûÿÿD¶@eD9ÀtD‰Òé„üÿÿ€‹…è…À„ýH‹…ÀH‹@(L‰LH‹…ÀH‹@(L‰d@H‹…ÈHØéˆþÿÿHérþÿÿ€¹HT$0L‰çL‰\$D‰T$è4{ÿÿH‹L$0L‹\$I‰ÁD‹T$éyûÿÿD…ÿu$<t ‰ÁAºüáÿÀù …ÀýÿÿfDH‹L$L[IÁãH‹IPöA…5% AºüéûÿÿDÁèA‰ÇD¶ÀH‹D$H‹@Pö@…‰ÆD$A¼AºéýÿÿDºL‰çèû€ÿÿéúÿÿfDºL‰çèyÿÿé þÿÿH‹xD‰ÒH50¹1ÀL‰\$(E1ÿE1äL‰L$ D‰T$èDwÿÿE1ÀÆD$L‹\$(L‹L$ D‹T$éÌúÿÿA¾fïÀH‹xE1ÿ¸L‰\$ H5@¸A¼ò*ÂL‰êL‰L$èñvÿÿE1ÀÆD$AºL‹L$L‹\$ éxúÿÿH‹yL‰ê¹þ1ÀH5'¸L‰\$èµvÿÿé¾ùÿÿH‹yH5-£1ÀL‰\$è™vÿÿAºüL‹\$H‹•8LúH‹2‹F % é¢ùÿÿH‹zH5¶¢1ÀèbvÿÿH‹…8J‹48‹F éÇøÿÿH‹zH5®¢1Àè=vÿÿH‹…8J‹48‹F éÄüÿÿH‹xI‹ L‰ê1ÀH5·L‰\$(A¼D‰D$ L‰L$èýuÿÿÆD$AºL‹L$D‹D$ L‹\$(é‚ùÿÿ¹1ÒL‰çL‰\$L‰L$èµxÿÿL‹\$L‹L$H‰ÂH‹D$H‹HP雸ÿÿèU|ÿÿHé±ûÿÿ‰ÂAºâÿÀú …<ûÿÿéÿûÿÿff.„fóúAVAUATUH‰ýSHìdH‹%(H‰„$ˆ1ÀH‹˜!‹8èù}ÿÿH‰ÇI‰Ä较ÿÿH‰ïH‹ÿP(fƒxH‰ÃuH‹hH‹X ‹%=tmH‹»˜èyuÿÿ=ÖuB÷t €»¡…1ÀH‹´$ˆdH34%(…³HÄ[]A\A]A^Ã@H‹»˜è$uÿÿ=ÝuÀë©H‰ÚH‰îL‰ç誱ÿÿ…Àt©‹H‹S ¨u'H…Òt"Aƒ¼$Ìt‹BDƒÀ‰BDHcR@9ÐK‹ ‰¸éiÿÿÿ@H‹“˜¸‘I‰åH‰ÁL‰ïH‰ÖóH¥HzHÇH‰ÞHÇ‚€HƒçøH)úH‰ÈŠˆÁéóH«H‰ïèŽ}ÿÿ…ÀtZH‰ÚH‰îL‰çèü°ÿÿ…ÀtH‹H‹S ¨u'H…Òt"Aƒ¼$Ìt‹BDƒÀ‰BDHcR@9ЋƒÈƒƒ´‰¸é¶þÿÿH‹»˜èdtÿÿH‹»˜I‰Æè¥uÿÿH‹»˜I‰ÄèæsÿÿL‰ñH‰ïL‰â‰ÆèÖyÿÿH‹‹˜H‹$L‰îH‰HyI‹…€HƒçøH‰€H)ùH)ÎÁˆÁéóH¥ƒƒ¸é4þÿÿè¼yÿÿHcðH=Ò«1Àèûtÿÿff.„óúAWAVAUATUSH‰óHìˆH‹„$ÀH‰|$‰L$L‰D$0L‰L$PH‰D$(dH‹%(H‰D$x1ÀH‹ù!‹8èZ{ÿÿI‰Å‹C % =…LH‹H‹@H‰D$`H‹CH‰$L‰ïèø€ÿÿH‹|$H‹ÿP(L‰ïfƒxH‰D$„bèÕ€ÿÿH‹|$H‹ÿP(H‹P H…Ò„}¶š¢ˆ\$N¶š£ˆ\$8¶˜Ä¹„Ûˆ\$OHDÁH‰‚¨H‹D$H‹@P‹PöÂ…EH‹\$`ƒú~H‹xH‹$H5iž1ÀèÅqÿÿ‹L$…É„ èxÿÿH‹H‹$H‰Åë DHƒÅH¾E‰Ó)ëöDA uì‹D$…ÀŽð D`ÿL‹t$0HD$hIƒÄH‰D$@HD$pIÁäM‰÷H‰D$ MôA‰Þë%<t<‰ÂâÿÀú t,AƒÆIƒÇM9ç„ I‹7H…ötç‹F ©à…öÄÿtÀ% =…èH‹H‹@H‰D$pA‹WEt…Òu¯€|$Nt@I‹?‹G % =…ºH‹H‹H‹pH‰t$pAÇGH‹T$@èhÿÿ…À„hÿÿÿAÇG IƒÇM9ç…`ÿÿÿE‰÷C‡H5¹¶ÉHc ŽHñ>ÿá€H‹T$ ¹L‰ïèörÿÿH‹D$péÿÿÿ@L‰ïè sÿÿI‹7‹F éÐþÿÿDL‰å9T$~wH‹D$0DRHÁâH,H‹uH…öt(‹F öÄÿ…<„ ‰ÂâÿÀú „õAÇNULLIcÒIƒÆL‰åë"fIFAÆ/E„íu ¶M€ù*„æI‰ÆL‰åH9ë‡ÿÿÿL‰ö@H‰òÆL)ÊH‰T$`M…ÉtH‹D$L‰ $H‹@Pö@…FHƒú †œH‹4$¹ H=î›ó¦—À„ÀtH‹4$¹ H=ß›ó¦—À„À…bHZöH‹,$H‰\$`è uÿÿHƒÅ L‹ ë€HƒëHƒÅH‰\$`H…Û„ÚH¾EAöDD uÝH{è¤vÿÿI‰ÅH…À„¤H‰ÚH‰îL‰ïèJqÿÿH‹T$`H…Òt0ItILÿë@H‰ÊH)ÂHƒÀH‰T$`H9ðt H¾AöDT tàÆH‹|$(1ÒL‰îèrÿÿL‰ïH‰ÃH‹D$PH‰èKuÿÿH…Û„‹1ÛH‹T$xdH3%(H‰Ø…9HĈ[]A\A]A^A_ÀINAÆ-E„íu ¶E<-„§I‰ÎL‰åé\þÿÿ@IvAˆL9ã†Xþÿÿ¶EI‰öL‰åIƒÄH÷€ùv E1ÿ< …Hýÿÿ¹L‰æL‰ßA¿ó¦—Á€Ù„É„'ýÿÿ¹L‰æH=šó¦—Á€ÙE1ÿ„ÉHÞA”Ç€ù>†ýÿÿf.„AˆL‰åIƒÆéÁýÿÿINAˆL9ã„¶}@8Çu-é2fA¶<$@ˆ9H9넟ýÿÿA¶|$H‰ñI‰ì@8Ç„Il$Hq@€ÿ\uËÆ\H9ë„oýÿÿI|$LAI‰ìH‰ñH‰ýL‰Æë¨„% =…ðH‹L‹FH‹@H‰D$pM…À„w‹EH‹t$pHƒù‡Ó¸HÓà©„ÀL‰ÇHT$hL‰L$XD‰T$@L‰D$8èô|ÿÿL‹D$8D‹T$@Lܘ…ÀL‹L$Xt €|$N…ÉH‹T$h1ÀH‰ÑL)ÁI9Ѓùf„A¶AˆHƒÀH9ÁuîIÎIcÒL‰åépüÿÿH‰ÎL‰åf.„HƒÅLvˆéQüÿÿHÇD$`ÆH…ÀtH‹D$H‹@Pö@…¬L‰ $1ÒfD€|$OH‹4$L‰L$H‹|$(„÷è‚mÿÿL‹L$…À…M…É„:ýÿÿL‰Ïètpÿÿé-ýÿÿ€HT$`¹H‰ÞL‰ïènÿÿH‰$éªøÿÿf.„H‹T$ H‰þ¹L‰ïèëmÿÿH‹t$pH‰Çé4úÿÿfDèsyÿÿH‹|$H‹ÿP(H…À„'¶¢ˆT$N¶£ˆT$8Hƒ¸¨•D$Oé­øÿÿ€H‹xº›8H5ج1Àè‰jÿÿH‹D$H‹@P‹P铸ÿÿ„èËrÿÿL‹L$…À…n‹„$È…À…ïH‹|$(L‰ $è!mÿÿL‹ $H‹\$PH‹|$(L‰ $H‰è§jÿÿL‹ $…À…òH‹;H…ÿ„èênÿÿL‹ $H‰ÃM…ÉtL‰Ïè&oÿÿHƒûþ…ÜûÿÿéË€H‹xL‰ÊH5œ–1ÀL‰ $èÇiÿÿH‹T$`L‹ $é“úÿÿf„ÆD$8ÆD$NéŠ÷ÿÿH‹|$ HT$p¹L‰L$@D‰T$8èrlÿÿL‹L$@D‹T$8L*–I‰Àééüÿÿf„H‹|$(L‰ $èâsÿÿL‹ $é ÿÿÿf„H‹|$è†pÿÿL‹L$…À…}M…ÉtL‰ÏèLnÿÿL‹t$(L‰÷èïiÿÿL‰÷H‰Åè4kÿÿL‰÷H‰ÃèyiÿÿH‹|$H‰ÚH‰é‰ÆHÇÃþÿÿÿè`oÿÿH‹D$H‹@Pö@„½úÿÿH‹|$(èCiÿÿH‹T$H5¿•H‹RPH‹z‰Â1Àè¦hÿÿé‘úÿÿH‹T$`E1ÉémùÿÿL‰ÇHT$hL‰L$XD‰T$@L‰D$8è4yÿÿL‹D$8D‹T$@L•L‹L$XAƒÿ„EüÿÿAÆ'InH‹L$pL‰ÂH‹|$(H‰îL‰L$@D‰T$8è]rÿÿD‹T$8L‹L$@LÕ”HÅLuÆE'IcÒL‰å馸ÿÿfDIcÒL‰å镸ÿÿDH‹|$L‰L$è1oÿÿL‹L$…À„«þÿÿH‹T$`H‹4$H‹|$(è!pÿÿL‹L$…À…‹þÿÿéQýÿÿ€ÆD$8ÆD$Néàüÿÿf„A‰ßé÷ÿÿ„A¸L‰åE)àë0fHƒÀˆHÿHƒÅ¹H‰îH=”ó¦—Á€Ù„É„¶MA4(„ÉuÊHcöH÷ÞHõL40éÈ÷ÿÿ„¾L‰åD)æë"HƒÅHƒÁˆAÿ¶E„À„Ù< „Ñ<.„ÀuÚHcÿH÷ßHýL49éx÷ÿÿ„H‹|$1ÉH㓾HÇÃþÿÿÿè1mÿÿéœøÿÿH‹T$`H‹4$H‹|$(è¹hÿÿL‹L$…À…cýÿÿé2ûÿÿL‹t$(L‰÷èZgÿÿL‰÷H‰ÅèŸhÿÿL‰÷H‰ÃèäfÿÿH‹|$H‰ÚH‰é‰ÆHÇÃþÿÿÿèËlÿÿé6øÿÿÇE éÜýÿÿf.„I‰ÆéÈöÿÿ„I‰Îé¸öÿÿ„H‰Îé¸öÿÿH‹|$(L‰ $èÊgÿÿL‹ $HƒøÿH‰Ã…æûÿÿé»üÿÿH‹|$1ÉHÐ’¾HÇÃþÿÿÿèElÿÿé°÷ÿÿèklÿÿff.„óúAWAVI‰öAUATUSH‰ûHƒìhdH‹%(H‰D$X1ÀH‹Ù!‹8è:nÿÿM‹f H‰ÇH‰ÅèûsÿÿH‰ßH‹ÿP(Iƒ¼$¨I‰ÅA‹†ì‰D$A‹†ð‰D$ …ãI‹EPö@…ŒöC „H‹C€x …M¾@I†ÀfDI‹7H…öt‹Vƒú† ƒê‰VIÇIƒÇL9øuÖHƒìH‹sE1ɹ jA¸ H’H‰ïèOiÿÿAXL‰öAYH‰ßI‰ÇèýnÿÿD‹T$E…Ò…ÇA‹†ÀMžøPA‹Ž1ÒM‰ÙAÿ´$˜M‹†8H‰ßI‹7èjhÿÿZYI‰†Iƒ¼$¨„IA‹I‹V ¨u&H…Òt!ƒ½Ìt‹BDƒÀ‰BDHcR@9ÐîA‹ƒÈA‰1ÀH‹L$XdH3 %(…àHƒÄh[]A\A]A^A_ÃfDH‰ïH‰$è„hÿÿH‹$éåþÿÿA‹†À…Àt7‹|$ …ÿ…ÏMžøé$ÿÿÿDH‹xH‰ÚH5Æ1Àè‹cÿÿéZþÿÿMžøI‹ŽÀA‹¶MŽèM‹†ÈL‰ÚH‰ßL‰$è„iÿÿL‹$HƒøþI‰†„I‹¾øH…ÿ„ÑèªlÿÿI‹V A‰†”A‹¨u&H…Òt!ƒ½Ìt‹BDƒÀ‰BDHcR@9ÐÏA‹ƒÈA‰‹D$…Àu AdžAdžI‹¼$˜èiÿÿA‰†0I‹EPö@uA‹†é›þÿÿ@H\$M‹†º@1ÀH‰ßH ܾèùeÿÿI‹EPH‰ÚH5#¥H‹x1Àè`bÿÿë®I‹¼$˜èAdÿÿI‰†(I‹¼$˜è mÿÿ„À„gÿÿÿA‹I‹V ¨u&H…Òt!ƒ½Ìt‹BDƒÀ‰BDHcR@9ÐáA‹ƒÈA‰é+ÿÿÿÇD$Hƒøþ…¨þÿÿéÿÿÿH ‚ŠHL¤¾H‰ßèGhÿÿ1Àé·ýÿÿ‹t$ …ö…æþÿÿI‹EhH‹p‹F % =uH‹Hx …¾þÿÿA‹†ÀéÿüÿÿºH‰ïL‰$èßjÿÿH=u5A‹†ÀL‹$éÖüÿÿH ÷‰HIš¾ÐH‰ßè¼gÿÿ¸þÿÿÿé)ýÿÿI‹†é5ÿÿÿHcðH=ì™1ÀècÿÿèÀgÿÿH=¥‹1ÀècÿÿfóúAWAVAUATU1íSHìÈdH‹%(H‰„$¸1ÀH‹'!Lt$‹8èƒiÿÿ¾ H‰ÇH‰Ãè“jÿÿ¾ H‰ßI‰ÇH—ŽH‰D$HóH‰D$HñH‰D$ HñH‰D$(HôH‰D$0H÷H‰D$8H‹H‰D$@HíH‰D$HHðH‰D$PHïH‰D$XHöH‰D$`HûH‰D$hHŽH‰D$pHŽH‰D$xHŽH‰„$€HŽH‰„$ˆHŽH‰„$HŽH‰„$˜HŽH‰„$ H ŽH‰„$¨H¨ŠH‰„$°èriÿÿH‰ßH‰ÆH‰D$èBeÿÿL‰þH‰ßH‰ÂècÿÿëfHƒÅHƒý„’H‰îH‰ßè‡cÿÿM‹$îI‰ÅL‰çèˆaÿÿHƒìL‰âM‰éjH‹t$‰ÁA¸$H‰ßèÇcÿÿZYH…Àu°M…ÿtA‹Wƒú† ƒêA‰WE1ÿH‹Œ$¸dH3 %(L‰ø…HÄÈ[]A\A]A^A_ÄH-‰ß A¾ L«8éà€H‰ßèØbÿÿL‰æH‰ßH H‰Âè3bÿÿIcöH‰ßHƒÅhè´bÿÿL‰æH‰ßH H‰ÂèbÿÿHcuðH‰ßè“bÿÿL‰æH‰ßH H‰ÂèîaÿÿHcuôH‰ßèrbÿÿL‰æH‰ßH H‰ÂèÍaÿÿHcuøH‰ßèQbÿÿL‰æH‰ßH H‰Âè¬aÿÿHcuüH‰ßè0bÿÿL‰æH‰ßH H‰Âè‹aÿÿHüô H9Å„×þÿÿD‹uT¾ H‰ßèªgÿÿH‰ßH‰ÆI‰Äè|cÿÿL‰þH‰ßH‰ÂèNaÿÿH‹uL‰êH…öt1ÒH‰ßèHaÿÿH H‰ÂL‰æH‰ßè#aÿÿHcuH‰ßè§aÿÿL‰æH‰ßH H‰ÂèaÿÿHcu H‰ßè†aÿÿL‰æH‰ßH H‰Âèá`ÿÿH‹uL‰êH…öt1ÒH‰ßèÛ`ÿÿH H‰ÂL‰æH‰ßè¶`ÿÿH‹uL‰êH…öt1ÒH‰ßè°`ÿÿH H‰ÂL‰æH‰ßè‹`ÿÿH‹u L‰êH…öt1ÒH‰ßè…`ÿÿH H‰ÂL‰æH‰ßè``ÿÿHcu(H‰ßèä`ÿÿL‰æH‰ßH H‰Âè?`ÿÿHcu,H‰ßèÃ`ÿÿL‰æH‰ßH H‰Âè`ÿÿHcu0H‰ßè¢`ÿÿL‰æH‰ßH H‰Âèý_ÿÿHcu4H‰ßè`ÿÿL‰æH‰ßH H‰ÂèÜ_ÿÿHcu8H‰ßè``ÿÿL‰æH‰ßH H‰Âè»_ÿÿHcu\ÿÿƒø„톯ƒø„&ƒø…¢IƒÅIƒî€L9ët@I‹D$J‹T-N‹<(H…ÒuA‹G ‰Ââÿÿ_A‰W ©tÉL‰ÿIƒÅIƒî€è[ÿÿL9ëuÁL‹t$0I‹FPö@„aýÿÿH‹x‹T$(H5 1Àè§OÿÿéFýÿÿf€| ÿ HAÿ…=ÿÿÿH‰ÁH…Éuéé0ÿÿÿ@ƒøt{H‹D$fƒ¸°„KÿÿÿAƒ~?„@ÿÿÿH‹|$L‰þèPZÿÿé.ÿÿÿAö@…!ÿÿÿA‹W ‰Ð% =…h‰Ð%ÿÿ_âA‰G …€Ì"A‰G éèþÿÿDA‹¨@…ØþÿÿA‹W ¨ ‰Ð…×% =tH‹|$ºL‰þè9XÿÿA‹W ‰Ð%ÿÿ_âA‰G …×€ÌA‰G é…þÿÿfH‹xH5+}1ÀèŽNÿÿé;ûÿÿf„H‹x‹L$H5Q’1ÀH‹T$ èeNÿÿéƒûÿÿI‹FPö@tH‹xH5{’1ÀèDNÿÿ@H‹CPH‰ßƒƒÿPPH‹»ÀI‰Äè€Rÿÿ‰D$0I‹FPö@…n‹D$0L‹»ÐL‹«à…ÀŽ˜ûÿÿ1íL‰d$8H‰èL‰íI‰Åë6fA‹D$ ‰Ââÿÿ_A‰T$ ©…CHƒÅ0IƒÇpIƒÅD9l$0ޤH‹D$8€}D‰l$(D‰êH‹@N‹$èu±H‹uI;w@‡‹€} …A‹G`ƒø„$†¶ƒø„Mƒø…­H‹UH‹ML‰æH‹|$è¿Rÿÿéwÿÿÿf.„H‹|$ H‰Þè3Wÿÿ…À„‹é"úÿÿ@% €=€tH‹|$ºL‰þè‚PÿÿA‹W ‰Ð%ÿÿßâA‰G „)þÿÿL‰ÿèÿWÿÿA‹G éþÿÿfDH‹|$ºL‰þè>NÿÿA‹W é}ýÿÿDH‹x‹L$0‰ê1ÀH5ÝèˆLÿÿD‹T$0L‹»ÐL‹«àE…Òxþÿÿ@I‹FPö@„þùÿÿH‹x‹T$0H5©{1ÀèDLÿÿéãùÿÿ€H‹|$ 1ɾHÍzè RÿÿE1äé¼ùÿÿ„L‰ÿè8WÿÿA‹G éîüÿÿ€I‹FPö@…zH‹}èLÿÿH‰EH‹EI‰G@H‹EI‰GJíH‹“ÀH‹ML)èH‹R0HÁàH‰L@H‹“ÀH‹MH‹R0H‰LI‹FPö@…ˆH‹»À‹T$(1ÉL‰þè#Lÿÿ…À…ûI‹vP‹Fƒà…?A‹W`ƒú„*vlƒútlƒú„êýÿÿD‹L$H‹MH‹UE…Ét ƒ}?…šH‹|$L‰æè•PÿÿH‹D$fƒ¸°„?ýÿÿƒ}?„5ýÿÿH‹|$L‰æèëUÿÿé#ýÿÿfDƒúuA¶OeH‹U(…À…ÊL‰æH‹|$„É„ªè•Qÿÿéíüÿÿƒø„—I‹FPö@„[ÿÿÿH‹xH5Ñy1Àè‡JÿÿéDÿÿÿfL‰çè¨Uÿÿé°üÿÿH‹»ÀèÔQÿÿH‹»ÀH‰D$@èsRÿÿH‹»ÀH‰D$(è¢QÿÿH‹L$@H‹T$(H‹|$ ‰Æè¬PÿÿI‹vP‹Fƒà„ÁþÿÿI‹I‹W@I‹OH‹~H5yH9HF1ÀH‰L$(H‰T$@èîIÿÿH‹T$@H‹L$(BÿHD…Ò~ML‰d$(I‰ÌH‰l$@L‰õI‰ÞH‰ÃfH‹EPIƒÄA¾T$ÿH5·xH‹x1Àè IÿÿI9ÜuÛL‰óL‹d$(I‰îH‹l$@I‹FPH5vH‹x1ÀèuIÿÿé÷ûÿÿH‹xD¶E H‰ñ1ÀH5ãèVIÿÿH‹uécýÿÿDI‹FPòE ö@tH‹xH5Vx¸è$IÿÿòE H‹|$L‰æèRÿÿéJûÿÿDL‹d$8é–üÿÿfDH‹xH5Õ1ÀèæHÿÿI‹FPH‹“øH5MxH‹x1ÀèÉHÿÿH‹»øè=RÿÿI‹VPH5@xH‹z‰Â1Àè¥HÿÿH‹»øèyMÿÿI‹VPH52xH‹zH‰Â1Àè€HÿÿH‹D$H‹¸˜è?JÿÿI‹VPH5xH‹zH‰Â1ÀèVHÿÿI‹FP‹‹H5UH‹T$ H‹x1Àè5HÿÿéöÿÿH‹xH5-Œ1ÀèHÿÿé|õÿÿf„è{MÿÿéCúÿÿfDI‹I‹W@H5ävH‹xH9HF1ÀI‹OH‰T$HH‰L$@èÒGÿÿH‹T$HH‹L$@BÿHD…Ò~QL‰d$@I‰ÌH‰l$HL‰õI‰ÞH‰ÃfDH‹EPIƒÄA¾T$ÿH5—vH‹x1Àè€GÿÿI9ÜuÛL‰óL‹d$@I‰îH‹l$HI‹FPH5ûsH‹x1ÀèUGÿÿéÈûÿÿI‹FPö@…’H‹D$H‹¸˜è±Gÿÿ…À…)L‰ïèñQÿÿ„À…ùúÿÿé¨ôÿÿ@I‹vP‹Fƒàé&üÿÿH‹~1ÀH5³‹èîFÿÿA¶OeH‹U(éüÿÿH‰ÆL‰ïè…KÿÿéòõÿÿH‹»Àè4NÿÿH‹»ÀI‰ÄèÕNÿÿH‹»ÀH‰ÅèNÿÿH‹|$ L‰áH‰ê‰ÆèMÿÿé#ôÿÿ€H…É„]ûÿÿ€| ÿ HAÿtéMûÿÿ€€|ÿ HHÿ…OH‰ÈH…Àué1Éé(ûÿÿf.„H‹|$ 1ɾE1äH‰è¥LÿÿéÄóÿÿH‹|$ 1ɾHÍtèˆLÿÿé§óÿÿL‹|$I‹¿˜èÏFÿÿI‹¿˜I‰ÄèHÿÿI‹¿˜H‰ÅèQFÿÿH‹|$ L‰áH‰ê‰Æè?Lÿÿé‘þÿÿf.„H‹xH5ÝŠ1ÀèžEÿÿéWþÿÿf„H‹x‹L$(D‰ú1ÀH5ÜŠèwEÿÿI‹FPö@„ÅóÿÿH‹x‹“”H5øŠ1ÀèQEÿÿé¨óÿÿH‹»ÀèàLÿÿǃH‰ƒI‹FPö@„µòÿÿH‹xH5ðs1ÀèEÿÿéžòÿÿH‰ÁéàùÿÿH‹|$ 1ɾE1äH¤ˆègKÿÿé†òÿÿfóúH‹-ä ATUSH‰û‹8è‡MÿÿH‰ÇH‰ÅèLSÿÿH‰ßH‹ÿP(H‰ïfƒxI‰ÄtVè1SÿÿH‰ßH‹ÿP(H‹H H‹‘¨H…Ò„|I9Ô…ÃH‹˜‹x(ƒÿÿ„°è3Iÿÿ‰Å…Àxu‰è[]A\ÃfDèÛRÿÿH‰ßH‹ÿP(H‹¨H‰ÁH…Òu¯H‰ß½ÿÿÿÿH Ël¾ÐH@Šè“Jÿÿ‰è[]A\Ã@€¸ÄtÌötg½[‰è]A\ÃfDA‰ÄA÷ÜD‰çèEÿÿD‰æH‰ßH tlH‰ÂèEJÿÿ‰è[]A\ÃfDH Xl¾ÐH‰ß½ÿÿÿÿHe‰èJÿÿé6ÿÿÿH 3l¾ÐH‰ß½ÿÿÿÿHp‰èóIÿÿéÿÿÿf.„@óúATUSH‹GxH‰ûH‹HHüH‰OxHcH‰ÖH‹GH‰ÍHȃÅH)ÆHcíH‰ð¾õ;HÁøH˜HÁàH)ÂI‰Ôè?GÿÿH‹SH‰ßH‰ÆH,êèœKÿÿH‰EL‰#[]A\ÃóúATUSH‹GxH‰ûH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒøutHcíH‹<êL$íèIÿÿ…ÀAH‹SLâ…ÀtHƒ8H‰LcL‰#[]A\ÃHƒPH‰LcL‰#[]A\Ãf.„H‹CH“hH‰èLcL‰#[]A\ÃH‰÷H5+Œè¶FÿÿfDóúATUSH‹GxH‰ûH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒøutHcíH‹<êL$íèEHÿÿ…ÀAH‹SLâ…ÀtHƒ8H‰LcL‰#[]A\ÃHƒPH‰LcL‰#[]A\Ãf.„H‹CH“hH‰èLcL‰#[]A\ÃH‰÷H5o‹èöEÿÿfDóúATUSH‹GxH‰ûH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒøu~Hcí1öH‹<êL$íè#Hÿÿ…ÀWtH‹CH“8H‰èLcL‰#[]A\Ãf1ÒH5ïŠH‰ßèŸDÿÿH‹kH‰ßH‰Æè€IÿÿLåH‰ELcL‰#[]A\ÃDHcðH‰ßèíDÿÿëÌH‰÷H5¥Šè,Eÿÿff.„óúAWAVAUATUSH‰ûHì¨H‹/H‹OdH‹%(H‰„$˜1ÀH‹GxI‰ìHPüH‰WxHcI‰ÕBHÑI)ÔIÁüAT$ÿƒú‡»IcÔH˜HÁâL‹<ÁH)ÕAƒü޳AEH˜H‹4Á‹F % =…~L‹vAƒü„@AEH‹SH˜H‹4‹F % =…wL‹FAƒü„VAEH‹SH˜H‹4‹F % =…˜L‹NAƒü„1H‹CAƒÅMcíJ‹4è‹F % =…8H‹FÇD$8ÿÿÿÿL‰ñ1ÒL‰ÿHt$HƒìjjPèáFÿÿHƒÄ I‰ÆH…À„Š1öH‰ÇèwDÿÿI‰ÅH…À„;H‰ÇèDÿÿL‹c L‰ïI)ìIÁüèðCÿÿI9Äs7é^fDL‹ HƒÅL‰çè1AÿÿL‰æH‰ßH‰ÂèCDÿÿH‰ßH‰ÆèxGÿÿH‰EL‰ïè¼DÿÿH…ÀuÇL‰ïèŸDÿÿL‰÷èçFÿÿH‰+H‹„$˜dH3%(…HĨ[]A\A]A^A_ù1ÒèlAÿÿI‰Æérþÿÿ@E1ÉE1ÀE1ö1Àéìþÿÿ¹1ÒH‰ßèAAÿÿI‰Àévþÿÿf„¹1ÒH‰ßL‰L$L‰$èAÿÿL‹$L‹L$é¦þÿÿf.„¹1ÒH‰ßL‰$èí@ÿÿL‹$I‰ÁéMþÿÿL‰÷èÈ>ÿÿL‰÷I‰Åè @ÿÿL‰÷I‰ÄèR>ÿÿL‰éL‰âL‰ÿ‰ÆèBDÿÿéþþÿÿDE1ÉE1À1Àé7þÿÿL‰ïè€BÿÿH‰êH‰îH‰ßH‰ÁèCÿÿH‰Åé³þÿÿè2DÿÿH‰÷H5ÐŒèóAÿÿE1É1Àéõýÿÿ1ÀéîýÿÿfAWA‰ÏAVAUATI‰ôUS‰ÓkÿHìˆH‰<$dH‹%(H‰D$x1ÀH‹Ü ‹8èâEÿÿI‰ÆA‹„$9Åt ƒø÷…Ê1öL‰÷è0AÿÿL‰÷H‰Æè•EÿÿH‰Åƒû~}Dkþ»IEH‰D$ëEf„H‰ÚH‰îL‰÷è2BÿÿjL‰éH‰êjH‹|$E1ÉE1ÀL‰æèE=ÿÿZY…Àt4HƒÃH9\$t$AI‹VH˜L‹,ÂAöE t¯L‰îL‰÷è¤?ÿÿë¢f¸H‹L$xdH3 %(…ÆHĈ[]A\A]A^A_ÃDHƒìI‹t$E1ÉL‰÷jA¸ ¹ H hè¸@ÿÿAXAYH…ÀtH‹ö@ t H‹p€~ taH\$A‰èºc1ÀE‹Œ$H n‹¾H‰ßèQ?ÿÿI‹D$PL‰æE1ÉHƒìI‰ØHÇÁÿÿÿÿjH«…H‹|$ÿ˜^1À_é0ÿÿÿL‰÷è=ÿÿë•èÿÿH‰Æ€L‹cH‰ßè¬BÿÿIìI‰$HkH‰+H‹D$dH3%(…çHƒÄ[]A\A]ÀH=%'„LH=&'…”¾H‰ßèã=ÿÿH‰Æë–fDHƒø„î~,Hƒø„JHƒø#…\¾ÀH‰ßè«=ÿÿH‰Æé[ÿÿÿHƒø …:I‹„$˜L‹ ÈL‰çè;ÿÿL‰æH‰ßH‰Âè¡>ÿÿH‰Æé!ÿÿÿf„<„£þÿÿ‰ÂâÿÀú „þÿÿH=Õˆ1Àè;ÿÿfDºL‰îH‰ßè`Bÿÿé~þÿÿL‰îH‰ßè <ÿÿA‹E éFþÿÿ@H5ZaºH‰ßè>ÿÿH‰Æéœþÿÿ@I‹„$˜L‹ ÀéEÿÿÿ@¾H‰ßè»<ÿÿH‰Æékþÿÿ¾H‰ßè£<ÿÿH‰ÆéSþÿÿH58ƒºH‰ßè´=ÿÿH‰Æé4þÿÿ@H5S‚ºH‰ßè”=ÿÿH‰ÆéþÿÿI‹¼$˜èŸ8ÿÿH=,‚‰Æ1Àè:ÿÿH5‚èƒ<ÿÿè®>ÿÿff.„óúAUATUSH‰ûHƒìH‹GxH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒø…ŽHcíL‹,êL$íèüÿÿH‹L‰ïÿP(H‹@ Hƒ¸¨u$H‹CH“hH‰èH‹CLàH‰HƒÄ[]A\A]ÃHYpL‰ï¾ÐH ñ_èÅ=ÿÿH‹CH“8H‰èH‹CLàH‰HƒÄ[]A\A]ÃH‰÷H5è’;ÿÿfóúAVAUATUSH‹GxH‰ûH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒø…ÕH‹GHcíL$íL‹4êö@#„”H‰ßè,ûÿÿL‰÷H‹ÿP(L‰÷H°øI‰Åè‘=ÿÿ…À}t#H‹CH“8H‰èLcL‰#[]A\A]A^Ã@IÇ…1ÒH5L€H‰ßèü9ÿÿH‹kH‰ßH‰ÆèÝ>ÿÿLåH‰ELcL‰#[]A\A]A^ÃfDè;9ÿÿébÿÿÿfDHcðH‰ßI‰µè.:ÿÿë°H‰÷H5âèm:ÿÿff.„fóúAVAUATUSH‰ûH‰÷HƒìPH‹3dH‹%(H‰D$H1ÀH‹CxHPüH‰SxH‹SHcD`HÂH)ÆH‰ðHÁøƒø…>McäH‰ßN‹4âJ,åèòùÿÿH‹L‰÷ÿP(I‰ÅH‹@ Hƒ¸¨tIµøL‰÷èI<ÿÿ…ÀˆÙM‹…I‰äIƒøþ„º@¾L‰ç1ÀH pbè’8ÿÿL‰â‹ HƒÂÿþþþ÷Ñ!È%€€€€té‰ÁL‰æÁé©€€DÁHJHDщÇ@ÇH‰ßHƒÚL)âè,:ÿÿL‹cH‰ßH‰Æè]=ÿÿIìI‰$HkH‰+H‹D$HdH3%(uOHƒÄP[]A\A]A^ÃfAƒÀH `L‰ç1Àº@¾èñ7ÿÿéZÿÿÿ@H‹CH“8J‰àHkH‰+ë¡èû:ÿÿH54~è¿8ÿÿff.„@óúAVAUATUSH‰ûH‰÷HƒìH‹CxH‹sL‹HPüH‰SxHcH‰ÐJHÖI)ÐL‰ÂHÁúƒú…wƒÀHcÑH˜L‹$ÖH,ÕH‹4Æ‹F % =…ìH‹D‹p H‹Cö@#„õH‹PH‹CL‹,ÐH‰ßèøÿÿL‰çH‹ÿP(‹ì…ÒupH‹¸øH…ÿ„ÐIcöèø8ÿÿºH‹CLd(øA‹E ‰Ááÿ™ƒù…Å€»¹„¸€ÌI‰UA‰E M‰l$HkH‰+HƒÄ[]A\A]A^Ã@Hƒ¸øtfH‹¸ÀH‰D$H…ÿtUIcöèÍ=ÿÿH‹D$ºÇ€éqÿÿÿ@ºH‰ßè3<ÿÿA‰ÆH‹Cö@#… ÿÿÿH‰ßèÊ5ÿÿI‰ÅéÿÿÿfHÐ|1ɾL‰çè 9ÿÿ1Òé ÿÿÿL‰îH‰ßè59ÿÿéCÿÿÿH5—|èä6ÿÿ@óúAUATUSH‰ûH‰÷HƒìH‹CxH‹KH‹3HPüH‰SxHcPHÁH)ÆH‰ðHÁøƒø…±HcÂH,ÅL‹,ÁH‹Cö@#t{H‹PH‹CL‹$ÐH‰ßèoöÿÿL‰ïH‹ÿP(L‰ïH‰Æèû5ÿÿH‹SLl*ø1Ò…ÀA‹D$ •‰Ááÿ™ƒùuA€»¹t8€ÌI‰T$A‰D$ M‰eHkH‰+HƒÄ[]A\A]ÃDH‰ßè 4ÿÿI‰Äë„L‰æH‰ßè-8ÿÿëÈH5T{èß5ÿÿff.„@óúAUATUSH‰ûHƒìH‹GxH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒø…ŽHcíL‹,êL$íè{õÿÿH‹L‰ïÿP(Hƒ¸¨u(H‹CH“hH‰èH‹CLàH‰HƒÄ[]A\A]Ã@H¹iL‰ï¾ÐH QYè%7ÿÿH‹CH“8H‰èH‹CLàH‰HƒÄ[]A\A]ÃH‰÷H5kzèò4ÿÿfóúAUATUSH‰ûHƒìH‹GxH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒø…HcíL‹,êL$íè›ôÿÿH‹L‰ïÿP(H‹€˜Hcp(ƒþÿu"H‹CH“8H‰èLcL‰#HƒÄ[]A\A]ÃH‰ßè4ÿÿH‹kH‰ßH‰Æèi8ÿÿLåH‰ELcL‰#HƒÄ[]A\A]ÃH‰÷H5šyè!4ÿÿóúAWAVAUATUSH‰ûH‰÷HƒìH‹CxH‹KH‹3HPüH‰SxHcH‰ÂhHÁH)ÆH‰ðHÁøpþƒþ‡ÑrHcíE1ÿHcöL$íL‹,éL‹4ñƒøaH‰ßè©óÿÿL‰ïH‹ÿP(Hƒ¸¨tVHhL‰ï¾ÐH §Wè{5ÿÿH‹CH“8H‰èLcL‰#HƒÄ[]A\A]A^A_ÃfDƒÂHcÒL‹<Ñë“@L‰úL‰öL‰ïè7ÿÿH…ÀtH‰ÆH‰ßèB7ÿÿI‰ÆH‹CL‰4èLcL‰#HƒÄ[]A\A]A^A_ÃH5Æxèõ2ÿÿDóúAWAVAUATUSH‰ûHƒìH‹GxH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒø…HcíL‹4êL$íè—òÿÿH‹L‰÷ÿP(Hƒ¸¨I‰ÅtAHúfL‰÷¾ÐH ’Vèf4ÿÿH‹CH“8H‰èLcL‰#HƒÄ[]A\A]A^A_ÃH‹¸˜è¤/ÿÿI‹½˜I‰Çè%8ÿÿ1Ò…À”ÂuLI‹…˜…ÒH³PH‰ßL‰¸HƒhHEðè6ÿÿH‹SH‰êLcL‰#HƒÄ[]A\A]A^A_Ã@L‰÷‰T$ è”4ÿÿ‹T$ …Àt I‹½˜è°7ÿÿ1Ò…À”Âë‹H‰÷H5wè˜1ÿÿ„óúAWAVAUATUH‰ýSHì˜dH‹%(H‰„$ˆ1ÀH‹GxHPüH‰WxHcH‹GJI‰Ô‰L$,H‹HÐH)ÑH‰ÊHÁúH‰T$ƒúŽ6Lc|$,AT$E1öƒ|$HcÒJ‹ øJ4ýL‹,ÐH‰t$ H‰L$…ÌH‰ïèìðÿÿH‹|$H‹ÿP(HÇD$xHƒ¸¨H‰Ã…÷öuoH‹|$èˆ3ÿÿ…Àua@H‹EH•8J‰øH‹D$ HEH‰EH‹„$ˆdH3%(……HĘ[]A\A]A^A_ÃH‹»˜èl6ÿÿH…À…H‹»˜è'.ÿÿ…ÀtÛ¶ƒ¦‰D$0M…ö„‡A‹F öÄÿ…<„ ‰ÂâÿÀú „ö¶ƒ§E1ö‰D$hH‹SPH…PH‰D$ƒzŽ.H‹D$‹@ ‰ÁÁéƒá… öÄÿ…¿<„·‰ÆæÿÀþ „£H‰ÖH‹~‹T$01ÀH5g{è +ÿÿM…ítAƒEH‹D$HƒìM‰éH‰ïH9XA¸$¹ H‹pjèt/ÿÿXZHƒ|$t8H‹D$‹@ © …§öÄÿ…<„‰ÂâÿÀú „ú‹D$0…À„VA‹E % =…~I‹EH‹@H‰„$€I‹EH‰D$0H‹»˜èý+ÿÿH‹|$0H‰D$8è~,ÿÿH‹t$0H‹|$8H‰ÂèL4ÿÿ…À…Yƒ|$ LT$xH‹L$8E1À1öH‹|$L‰ÒLL$tL‰T$@è#0ÿÿÇD$0L‹T$@‰D$8ƒ|$8þ„ƒH‹|$xH…ÿtDè£/ÿÿHÇD$xƒ|$8þ„ýÿÿH‹D$H…Àtd‹@ º© …­öÄÿ…‰<„‰ÂâÿÀú u0él@H‹»˜èì3ÿÿH‰D$xH…ÀtH‰Çè*/ÿÿHÇD$xH‹»˜è•+ÿÿ…ÀtÉŽSH‹CPH‹»˜ƒx~%èE+ÿÿH‹SPH5jsH‹zH‰Â1Àèü(ÿÿH‹»˜èÐ)ÿÿH‹»˜I‰Åè+ÿÿH‹»˜I‰ÄèR)ÿÿH‹|$L‰éL‰â‰Æè@/ÿÿé‹üÿÿH‰Çè.ÿÿéØüÿÿAT$HcÒL‹4Ðé#üÿÿ€öÄ„# I‹v€~ … HƒìE1ÉA¸ H‰ïj¹H¢Oèö,ÿÿAYAZH…À„îH‹0H…ö„ ‹F ‰ÂÁêƒâ‰T$0…• öÄÿ„_öÄ„DH‹H…ÀtH‹@Hƒø†dÇD$0„A‹F %„I‹v€~ „½¶³§‰t$h…À„HüÿÿI‹v€~ …:üÿÿHƒì¹E1ÉH‰ïjA¸ HÚQè/,ÿÿY^H…À„ üÿÿH‹sPH‹ƒ~H‰D$H‰òŽaüÿÿHƒ|$…üÿÿ1Éé8üÿÿ„H ðOHB`¾ÐH‹|$è³-ÿÿéþúÿÿfDH‹sPƒ~ÏHÇD$ÇD$hM…í…ûûÿÿH‹D$HƒìE1ÉH‰ï¹ A¸$H.TM‰îH‹pjèq+ÿÿY^L‰l$é3üÿÿD<„™þÿÿ‰ÂâÿÀú …´þÿÿé€þÿÿ€öÄ„oH‹t$H‹H…À„ìûÿÿH‹@Hƒø†E‹D$h…À…ÖH‰›¨LT$xÇD$0ƒ|$°jE1ÀM‰ÑL‰òÿ³˜‹L$@L‰îH‹|$è3*ÿÿ‰D$H_AXH‹|$xH…ÿ…FüÿÿéOüÿÿf„öÄ„7H‹t$H‹H…À„¥üÿÿH‹@Hƒø†ôD‹L$8E…Éu-1ÒH5½oH‰ïèm)ÿÿH‰ÆH‰ïH‹\$ H]èI.ÿÿH‰é€ùÿÿƒ|$8ÿŒfùÿÿHct$8H‰ïè¹)ÿÿëÊ€öÄ„÷H‹|$H‰ÖH‹H…À„CúÿÿH‹@Hƒø†Œ¹é+úÿÿH‹|$8è±-ÿÿÇD$0f„LT$xéÖþÿÿfDöÄ„ÐöÄtH‹t$H‹Hƒz …þÿÿöÄ„dúÿÿH‹D$fïÀH‹f.@(Šoþÿÿ„Gúÿÿédþÿÿ@¶ƒ§‰D$héHùÿÿöÄ„ÐöÄ…²öÄ„dûÿÿH‹D$fïÀH‹f.@(жþÿÿ„Gûÿÿé«þÿÿöÄ„H‰ÖöÄtH‹T$H‹Hƒz …ÿÿÿöÄ„3ùÿÿH‹D$1ÉfïÀH‹f.@(¸šÁEÈéùÿÿM…í…"ùÿÿH‹D$HƒìE1ÉH‰ïH`QA¸$¹ H‹pjè›(ÿÿXZé*ùÿÿH”$€¹L‰îH‰ïèÌ&ÿÿH‰D$0éyùÿÿöÄ„öÄ…öÄ„ÇûÿÿH‹1ÒfïÀf.@(¸šÂD‰D$0é¥ûÿÿ‹D$¾L‰T$8AƒÄƒèHcø‰D$0HÁçèP%ÿÿH‹uL‹T$8I‰Ã‹L$,H@L$„IcÔAƒÄHƒÀH‹ÖÇ@ð H‰PèA9ÌuájM‰ÑM‰ØL‰òÿ³˜‹L$@L‰îH‹|$L‰\$(è'ÿÿ‰D$HAZA[L‹\$M…Û„ØüÿÿL‰ßè(ÿÿéËüÿÿ1ÒH‹t$H‰ïèø"ÿÿ„À…øüÿÿéŠùÿÿH‹|$è*ÿÿ…À…<‹D$h…ÀuH‹|$8è*ÿÿ=„QýÿÿL‹t$8L‰÷èÿ)ÿÿL‰÷I‰Äè¤*ÿÿL‰÷H‰ÃèÙ)ÿÿH‹|$L‰áH‰Ú‰Æèç(ÿÿL‰÷èÏ*ÿÿH‹|$xH…ÿ„!öÿÿè,(ÿÿéöÿÿH‹t$1ÒH‰ïèX"ÿÿ„À…Àûÿÿé™÷ÿÿH…À„÷ÿÿH‹F€80…¥ûÿÿé~÷ÿÿH‹t$ºH‰ïè"ÿÿëÄH‹t$H‹Hƒz …üÿÿé6ýÿÿH…À„šøÿÿH‹F€80…öûÿÿéˆøÿÿH…À„ öÿÿH‹G1É€80•ÁéöÿÿH‹Hƒz …¡ùÿÿéÜýÿÿH…À„£ùÿÿH‹F€80•À¶À‰D$0éùÿÿH‹|$0è³#ÿÿH‹t$0H‹|$8H‰Âè+ÿÿ…À… þÿÿé0÷ÿÿ‹D$h…À…éþÿÿH‹ChH‹p‹F % =…èH‹Hx ”À„À…Çúÿÿé³þÿÿ‹D$¾pƒèHcø‰D$0èÚ"ÿÿEL$L‰l$XH´$€L@H‰D$@‹D$,I‰íD$H‰\$`L‰ÅD‰d$l‰ÃE‰ÌH‰t$HL‰t$Pë;fD<tQ‰ÂâÿÀú tA1À1Ò¹AƒÄ‰MPHƒÅpH‰UÀH‰ED9ãtyI‹UIcÄL‹4ÂM…ötÏA‹F ©àuMöÄÿt«% =uI‹H‹PI‹FH‰”$€HcÒ¹þëŸH‹T$H¹L‰öL‰ïè #ÿÿH‹”$€ë×L‰öL‰ïè8#ÿÿA‹F ë¢LT$xH‹|$‹t$0L‰íL‹D$@H‹L$8L‰ÒLL$tL‹t$PH‹\$`L‰T$HD‹d$lL‹l$XÇD$tèé%ÿÿH‹|$@L‹T$H‰D$8H…ÿ„ÀõÿÿL‰T$@èÈ$ÿÿL‹T$@é¬õÿÿH .HHÀZ¾é9øÿÿ1ÒH‹t$H‰ïè‡ÿÿH‹sP¶Èé;ôÿÿ¶ƒ¦‰D$0é[÷ÿÿHÇD$1ÉÇD$héôÿÿºë¸1ÒH‰ïèBÿÿ¶À‰D$0é&÷ÿÿHƒìA¸ H‰ïE1Éj¹%HˆUè“#ÿÿ_AXH…À„ÇH‹0H…ö„.‹V ‰ÐÁèƒà‰D$h…öÆÿuG€útB‰Ð%ÿÀ= t4A‹F %éØöÿÿÇD$0é£öÿÿºH‰ïè¦ÿÿ¶À‰D$0éŠöÿÿöÆtcA‹F H‹%H…Ò„˜öÿÿH‹RHƒú†»ÇD$hé}öÿÿºH‰ïL‰T$8è£'ÿÿL‹T$8H=”ÀéýÿÿA‹F %é?öÿÿöÆtCA‹F %öÆt H‹Hƒy u£€æ„$öÿÿH‹1ÉfïÀf.B(ºšÁDщT$héöÿÿ1ÒH‰ïèàÿÿ¶À‰D$héÿÿÿºëåA‹F ÇD$h%éÏõÿÿH…Ò„ÆõÿÿH‹V1ö€:0@•Ɖt$hé°õÿÿè#$ÿÿH‰÷H5amèä!ÿÿ% =u;I‹^H‹t$‹F ‰D$% =u6H‹FH‰ÆH‰ÙHEk1ÀH=Bmèÿÿ¹1ÒL‰öH‰ïèûÿÿH‰Ãë²H‹t$¹1ÒH‰ïèâÿÿë¸óúAWAVAUATUSH‰ûHƒìH‹GxH‹/HPüH‰éH‰WxH‹WHcD`HÂH)ÁH‰ÈHÁøƒø…˜McäN‹<âN,åèáÿÿH‹L‰ÿÿP(Hƒ¸¨I‰ÆtEHvUL‰ÿ¾ÐH Eèâ"ÿÿH‹CH“8J‰àLkL‰+HƒÄ[]A\A]A^A_ÃDH‹¸˜1öHƒíèf!ÿÿI‰ÅH…À„‚L‰ïèò ÿÿL‹c L‰ïI)ìIÁüèß ÿÿI9Äs6éÅDL‹ HƒÅL‰çè!ÿÿL‰æH‰ßH‰Âè3!ÿÿH‰ßH‰Æèh$ÿÿH‰EL‰ïè¬!ÿÿH…ÀuÇL‰ïè!ÿÿH‰+HƒÄ[]A\A]A^A_ÃDL‰ÿèà"ÿÿ…ÀtI‹¾˜1öè¾ ÿÿI‰ÅH…À…XÿÿÿI‹¾˜èFÿÿI‹¾˜I‰Åè‡ÿÿI‹¾˜I‰ÄèÈÿÿL‰éL‰âL‰ÿ‰Æè¸!ÿÿë‡fDL‰ïè ÿÿH‰êH‰îH‰ßH‰Áè!ÿÿH‰ÅéKÿÿÿH‰÷H5ùdè€ÿÿóúAUATUSH‰ûHƒìH‹GxH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒø…¥HcíL‹,êL$íè+ßÿÿH‹L‰ïÿP(Hƒ¸¨t@H‘SL‰ï¾ÐH )Cèý ÿÿH‹CH“8H‰èLcL‰#HƒÄ[]A\A]Ã@L‰ïH‰Æèý!ÿÿH‰ßH‰Æè ÿÿH‹kH‰ßH‰ÆèÓ"ÿÿLåH‰ELcL‰#HƒÄ[]A\A]ÃH‰÷H5dè‹ÿÿff.„óúAWI‰ÿAVAUATUSHìÈL‹dH‹%(H‰„$¸1ÀH‹GxHPüH‰WxHcH‹GI‰ÕZHÐI)ÐIÁøAPýƒú‡AUHcÛM‰ÆHcÒH‹ ØH,ÝL‹$ÐAUHcÒH‰L$H‹4ЋF % =…AH‹FH‰$AƒþŽ·AEI‹WH˜H‹4‹F % =…®H‹FH‰D$Aƒþ„!AEI‹WH˜H‹4‹F % =…ZH‹FH‰D$Aƒþ„ AEI‹WH˜H‹4‹F % =…¾L‹^Aƒþ„èAEI‹WH˜H‹4‹F % =…gL‹NAƒþ„¥I‹GAƒÅMcíJ‹4è‹F % =…H‹FA‹T$ öÆÿ…å€ú„ÜâÿÀú „ÊÇD$XÿÿÿÿHt$0HƒìM‰Øj1ÒI‰öjPH‹L$8H‹|$(èÿÿHƒÄ I‰ÅH…À„µDH‹4$¹ H=\bó¦—À„À„ÑH‹4$¹H=Obó¦—À„À„ÊH‹4$¹ H=7bó¦—À„À„ëH‹4$¹H=!bó¦—À„À…pH‹|$è²ÿÿHx2èyÿÿI‰ÆH…À„ÝH¸DROP DATAÇFABASI~I‰¸E fA‰F H‹t$è@ÿÿL‰ïL‰öL)ðH‰ÂèÿÿL‰÷‰ÃèEÿÿ…Û…#A‹D$ öÄÿ…¯<„§%ÿÀ= „—I‹GHè…Û„ŸI—PH‰IoI‰/H‹„$¸dH3%(…ŸHÄÈ[]A\A]A^A_ÃfDA‹T$ E1ÉE1Û1ÀHÇD$HÇD$öÆÿ„þÿÿL‰ÿèèÚÿÿL‰çH‹ÿP(L‹¨˜é[þÿÿL‰ïèxÿÿI‹GHè…Û…aÿÿÿI—hH‰IoI‰/é\ÿÿÿ¹1ÒèÿÿH‰$é²üÿÿºH5y`L‰ïèTÿÿ‰Ã…Û„ÝþÿÿL‰ïèÂÿÿL‰ïI‰ÆèÿÿL‰ïH‰$èKÿÿA‹L$ H‹$öÅÿ„áL‰d$H‹|$L‰ñ‰Æè%ÿÿé“þÿÿ¹1ÒL‰ÿèÿÿH‰D$é–üÿÿ€¹1ÒL‰ÿèaÿÿH‰D$éBüÿÿ€¹1ÒL‰ÿL‰L$(L‰\$ è7ÿÿL‹\$ L‹L$(éÕüÿÿ„¹1ÒL‰ÿL‰\$ è ÿÿL‹\$ I‰Áé|üÿÿ€¹1ÒL‰ÿèéÿÿI‰Ãé/üÿÿ¾L‰ïè³ÿÿ‰ÃéÇýÿÿ@€ù„ÿÿÿáÿÀù H‹L$IDÌH‰L$éüþÿÿH‹|$èæÿÿHx2è­ÿÿI‰ÆH…ÀtfoýkHxéGýÿÿ1ÉHqA¾H‹|$èèÿÿI‹GI—PH‰ØIoI‰/é†ýÿÿDL‰÷è ÿÿL‰÷I‰ÅèeÿÿL‰÷I‰ÄèªÿÿL‰éL‰â‰Æë®H‰÷H5¦dè‘ÿÿè¼ÿÿH‹4$H=ž^1ÀèúÿÿE1ÉE1Û1ÀHÇD$éûÿÿ1ÀézûÿÿE1ÉE1Û1ÀémûÿÿE1É1ÀécûÿÿfDóúAVAUATUSH‰ûH‰÷HƒìH‹+dH‹%(H‰D$1ÀH‹CxH‰îHPüH‰SxH‹SHcDhHÂH)ÆH‰ðHÁøƒø…ÅMcíH‰ßHƒíN‹$êèÓ×ÿÿH‹L‰çÿP(H“hI‰ÆH‹CJ‰èA‹¨uy¨tMƒ»ÌtDI‹NPƒy~:A‹D$ % =…EI‹$I‹T$H‹@H‰$H‹yH5Éc1ÀèâÿÿfH‰+H‹D$dH3%(…4HƒÄ[]A\A]A^Ã@‰Âƒâ¨twI‹N H…Ét-…Òt)ƒ»Ìt ‹ADHcQ@ƒè‰AD9Ð…ÀˆA‹I‹NPƒàûA‰‹A…ÀteA‹D$ % =uwI‹T$H‹yH5gc1Àè@ÿÿA‹‰Âƒâ…Òt1ƒ»Ìt"I‹F öu2‹HDƒé‰HD‹@@ˆ€9Á|A‹ƒàûA‰L‰öL‰çèÈÿÿéÿÿÿL‰öL‰çèuÿÿëà¹1ÒL‰æH‰ßè¾ÿÿI‹NPH‰ÂépÿÿÿfH‰â¹L‰æH‰ßèÿÿI‹NPH‰Âé­þÿÿH5Š[èÿÿè@ÿÿHcÐHcñH=CK1Àè|ÿÿHcðH=2K1Àèkÿÿff.„óúAWAVAUATUSH‰ûH‰÷HƒìH‹CxH‹KH‹3HPüH‰SxHcH‰ÐDjHÑH)ÖH‰òHÁúƒúuqƒÀMcíH‰ßH˜N‹$éJ,íL‹4ÁèxÕÿÿL‰çH‹ÿP(L‰òL‰çH‰ÆI‰ÇèÎÿÿH…Àt!H‹SJ‰êHkH‰+HƒÄ[]A\A]A^A_ÃI‹GP1ÒL‰öL‰çÿPHëÎH5Q[èÿÿff.„óúAWAVI‰þH‰÷AUATUSHƒìI‹FxI‹NI‹6HPüI‰VxHcH‰ÐZHÑH)ÖH‰òHÁúƒú…ºHcÛPƒÀH<ÝHcÒH˜L‹,ÙH‹,ÑL‹$ÁH‰|$L‰÷è–ÔÿÿL‰ïH‹ÿP(I‰ÇAöD$ ujI‹FL‰áL‰þL‰ïI–hH‰ØH‰êè¢ÿÿ…Àu%I‹GP1ÒL‰áH‰îL‰ïÿP@…ÀuI‹FI–PH‰ØH‹l$InI‰.HƒÄ[]A\A]A^A_ÃfDL‰æL‰÷è½ÿÿë‰H5@Zèÿÿÿff.„@óúAWAVI‰þAUATUSHƒì8H‹GxL‹HPüH‰WxHcH‹GI‰×ZHÐI)ÐIÁøAPüƒú‡,AWHcÛL‰ÅHcÒH ÝL‹$ØH‹4ÐH‰L$‹V â ú…ÀH‹‹J ‰L$AWHcÒH‹4ЋV â ú…vH‹H‹J H‰L$AWHcÒH‹4ЋF % =…ÜH‹H‹@ H‰D$ ƒýŽâI‹VAGH˜L‹,ƒý„„AOHcÉH‹4Ê‹F % =…BH‹H‹@ I‰ÇL‰÷èÀÒÿÿL‰çH‹ÿP(I‰ÃM…í„HƒìM‰éL‰ÞL‰çAWL‹D$0H‹L$(‹T$$èÙÿÿZY…Àt+I‹UI‹FH‰ØH‹l$InI‰.HƒÄ8[]A\A]A^A_Ã@I‹FI–8H‰ØëЀºL‰÷è#ÿÿH‰D$ ƒýÿÿÿL‰÷E1ÿèÒÿÿL‰çH‹ÿP(I‰Ã1öL‰÷L‰\$(èÿÿL‰÷H‰ÆèÿÿL‰÷H‰ÆèÉ ÿÿL‰÷H‰ÆèþÿÿL‹\$(I‰Åé&ÿÿÿºL‰÷è³ÿÿH‰D$I‹Fé{þÿÿDºè–ÿÿ‰D$I‹Fé3þÿÿf„ºL‰÷èsÿÿI‰Çé³þÿÿH‰÷H5I^èlÿÿE1ÿéœþÿÿ@óúAUATUSH‰ûH‰÷HƒìH‹CxH‹3HPüH‰SxH‹SHchHÂH)ÆH‰ðHÁøƒø…µHcíH‰ßL‹,êL$íèÑÿÿH‹L‰ïÿP(‹öÂt.H‹H öuLƒ»Ìt‹yDHcQ@wÿ‰qD9Öw…öxs‹ƒâû‰H‹CH“hH‰èLcL‰#HƒÄ[]A\A]ÃfDL‰ïH‰Æè¥ÿÿH‹hH“P…ÀH‹CHEÑH‰èLcL‰#HƒÄ[]A\A]ÃH5ÐUè[ÿÿHcöH=‘E1ÀèÊ ÿÿf.„AWA‰÷AVAUATUH‰ýSHƒìH‹ýª ‹8è^ÿÿH‰ÃL‹ H‹@xH‰ßHcPH‹CM‰åHÐI‰ÖI)ÅAƒÆèóÏÿÿH‹SIcÎIÁýH‹H‹<ÊÿP(IcÏE…ÿˆÂH‹C L)àHÁøH9ÈŒ®H‹CxHƒÀH‰CxH;ƒ€„µL‰âH+SHÁú‰E…ÿ~?AOÿ1ÀH»8LAëH‰ÐH‰úA9Å~AH‹sHcÒH‹ÖI‰TÄHPH9ÈuØO$ÄL‰#ºH‰îH‰ßè± ÿÿH‹…ÀtH‹HJøH‰ HƒÄ[]A\A]A^A_ÃHƒ8H‰Ñëá@L‰âL‰æH‰ßè‚ÿÿI‰Äé<ÿÿÿf.„H‰ßèˆ ÿÿé>ÿÿÿóúAUATI‰üH‰÷USHƒìI‹D$xI‹$I‹L$HPüH‰ÞI‰T$xHcPHÁH)ÆH‰ðHÁøƒø…ÐHcÒL‰çHƒëH‹,Ñè‚ÎÿÿH‹H‰ïÿP(H‰ïH‰ÆèÿÿH‰ÅH…Àt_ö@€upH‹L‹hAƒÅIcÍE…íxuI‹D$ H)ØHÁøH9È|dE…í~0AEÿH Å1Àf„H‹UH‹H‰THƒÀH9ÈuêHÃI‰$HƒÄ[]A\A]ÄH‰ÆL‰çèÅÿÿDh늀H‰ÚH‰ÞL‰çèJÿÿH‰Ãë‰H5.Sè¹ ÿÿf„óúAUATUSH‰ûHƒìH‹GxH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒøugHcíL‹,êL$íè_ÍÿÿH‹L‰ïÿP(L‰ïH‰ÆèëÿÿH“8H…ÀtH‰ÆH‰ßè ÿÿH‰ßH‰ÆèIÿÿH‰ÂH‹CH‰èLcL‰#HƒÄ[]A\A]ÃH‰÷H5rRèý ÿÿff.„fóúAWAVAUATUSH‰ûHƒìH‹GxH‹/HPüH‰WxH‹WHcHHÂH)ÅHÁý…íŽêLcé‰L$ N‹4êN$íè—ÌÿÿH‹L‰÷ÿP(I‰Çƒýt‹L$ ‰êH‰ÆL‰÷è•Êÿÿ…ÀtqILJ L‰þL‰÷è‹ÿÿHcðH…öt{Hƒþÿ}-H‹CH“8J‰èLcL‰#HƒÄ[]A\A]A^A_ÄH‰ßèÈ ÿÿH‹kH‰ÆH‰ßè)ÿÿLåH‰EëÂH‹CH“8J‰èLcL‰#HƒÄ[]A\A]A^A_Ã1ÒH5GQH‰ßè÷ ÿÿë­H‰÷H5 Rè¶ ÿÿfDóúAWAVAUATUSH‰ûHƒì(H‹GxL‹HPüH‰WxHcH‹GH‰ÑjHÐI)ÑIÁùAQüƒú‡hQHcíHcÒL‹,èL$íH‹<ÐQHcÒL‹4ÐQH‰|$HcÒH‹4ЋF % =…‚H‹H‹@ H‰$E1ÿAƒùÊH‰ßèËÿÿL‰ïH‹ÿP(H‰D$AöF „ÎM‹vA‹F ¨ø…¾©…Á© …SM…ÿ„^A‹G öÄ„…% =…MI‹E1ÿL‹@ ÿ4$L‰ñM‰ùL‰ïjH‹T$H‹t$ è–ÿÿH‹hH“P…ÀH‹CHEÑH‰èLcL‰#HƒÄ8[]A\A]A^A_Ã@ƒÁH‹CHcÉL‹<Èé#ÿÿÿDöÄÿu#<t‰ÂâÿÀú tE1ÀE1ÿéqÿÿÿ@öÄ„I‹w€~ …ùHƒì¹E1ÉH‰ßjH„3A¸ èæ ÿÿZYH…ÀtcH‹0‹F % =u}H‹L‹@ éÿÿÿºH‰ßL‰L$‰L$èzÿÿL‹L$‹L$H‰$éaþÿÿ„L‰öH‰ßèÿÿM…ÿ…¢þÿÿE1ÀéÁþÿÿ@L‰þºH‰ßE1ÿè-ÿÿI‰Àé¢þÿÿDºH‰ßèÿÿI‰ÀéˆþÿÿH=TV1ÀèÿÿH=~V1ÀèÿÿH‰÷H5Vèðÿÿ% =u3I‹oA‹E % =u6I‹EH‰ÆH‰éHúP1ÀH=VTè1ÿÿ¹1ÒL‰þH‰ßèÿÿH‰Å뺹1ÒL‰îH‰ßèøÿÿëºfDóúAWAVI‰þH‰÷AUATUSHƒìI‹FxI‹NI‹6HPüI‰VxHcH‰ÐZHÑH)ÖH‰òHÁúrýƒþ‡ïpHcÛHcöH,ÝL‹,ÙH‹<ñpHcöH‰<$L‹$ñƒú޲ƒÀL‰÷H˜L‹<ÁèñÇÿÿL‰ïH‹ÿP(H‰D$AöD$ …„M…ÿ„sA‹G öÄ„©% =…!I‹E1ÿL‹@ jL‰áM‰ùL‰ïjH‹T$H‹t$è«ÿÿIŽhI–P…ÀI‹FHEÑH‰ØInI‰.HƒÄ([]A\A]A^A_Ãf„L‰÷èHÇÿÿL‰ïH‹ÿP(H‰D$AöD$ t3L‰æL‰÷E1ÿèÔÿÿE1Àéuÿÿÿ@öÄÿu#<t‰ÂâÿÀú tE1ÀE1ÿéMÿÿÿ@öÄ„°I‹w€~ …¢Hƒì¹E1ÉL‰÷jHt0A¸ èÖÿÿZYH…ÀtTH‹0‹F % =u-H‹L‹@ éêþÿÿL‰þºL‰÷E1ÿèm ÿÿI‰ÀéÎþÿÿDºL‰÷èS ÿÿI‰Àé´þÿÿE1Àé¬þÿÿL‰æL‰÷èøÿÿélþÿÿH5äSè7ÿÿ% =u3I‹_A‹E % =u6I‹EH‰ÆH‰ÙHAN1ÀH=Qèxÿÿ¹1ÒL‰þL‰÷èVÿÿH‰Ã뺹1ÒL‰îL‰÷è?ÿÿëºff.„fóúAWAVAUATUSH‰ûH‰÷HƒìH‹CxH‹KH‹3HPüH‰SxHcH‰ÐjHÑH)ÖH‰òHÁúrþƒþ‡6pHcíHcöL$íL‹,éL‹<ñƒúŽ ƒÀH‰ßH˜L‹4Áè?ÅÿÿL‰ïH‹ÿP(I‰ÀM…öt$A‹F öÄÿ„ÁöÄ„èI‹V€z …ÚA‹G % =uqI‹WL‰ñL‰ïL‰Æè¨ ÿÿH‹hH“P…ÀH‹CHEÑH‰èLcL‰#HƒÄ[]A\A]A^A_ÃfDH‰ßE1öè¥ÄÿÿL‰ïH‹ÿP(I‰ÀA‹G % =t1Ò¹L‰þH‰ßL‰D$èâÿÿL‹D$H‰ÂéoÿÿÿD<„7ÿÿÿ‰ÂâÿÀú „#ÿÿÿE1öé2ÿÿÿH5Rè0ÿÿ% =u3I‹nA‹E % =u6I‹EH‰ÆH‰éH!L1ÀH=–Oèqÿÿ¹1ÒL‰öH‰ßèOÿÿH‰Å뺹1ÒL‰îH‰ßè8ÿÿëºfDóúAVAUATUSH‰ûHƒìH‹/dH‹%(H‰D$1ÀH‹GxH‰éHPüH‰WxH‹WHcDpHÂH)ÁH‰ÈHÁøƒø…£McöHƒíN‹$òèYÃÿÿH‹L‰çÿP(H“hI‰ÅH‹CJ‰ðA‹E¨u~¨tRƒ»ÌtII‹MPƒy~?A‹D$ % =…ºI‹$I‹T$H‹@H‰$H‹yH5NO1Àègþþÿ€H‰+H‹D$dH3%(…HƒÄ[]A\A]A^Ã@‰Âƒâ¨„‚I‹M H…Ét.…Òt*ƒ»Ìt!‹ADHcQ@ƒè‰AD9ÐÎ…ÀˆÆA‹EI‹MPƒàûA‰E‹y…ÿ„¦A‹D$ % =…©I‹T$H‹yH5ÙN1Àè²ýþÿA‹E‰Âƒâ…ÒtmöÄu%=„L‰îL‰çèÿÿL‰îL‰çèÿÿA‹EI‹U ¨t/H…Òt*ƒ»Ìt!‹BDƒè‰BDHcR@9Ð…ÀˆA‹EƒàûA‰EL‰îL‰çè}ÿÿéÈþÿÿ„¹1ÒL‰æH‰ßèþÿþÿI‹MPH‰Âé>ÿÿÿfƒ»ÌuI‹EPƒxŽYÿÿÿHƒìI‹t$E1ÉH‰ßj¹A¸0HŸGèaÿÿY^H‹I‹t$‹@ % =„ôHƒìE1ÉA¸0H‰ßj¹H_Gè!ÿÿA[¹A^H‹01ÒH‰ßè[ÿþÿI‰ÆHƒìI‹t$E1ÉH‰ßjA¸0¹H#GèàÿÿAYI‹t$H‹AZ‹@ % =„©HƒìE1ÉA¸0H‰ßj¹HáFèžÿÿZH‰ßYH‹0¹1ÒèÚþþÿH‰ÆL‰òH=MN1Àè&üþÿéAþÿÿH‰â¹L‰æH‰ßè­þþÿI‹MPH‰Âé8ýÿÿHƒìE1ÉA¸0H‰ßjHpF¹è-ÿÿH‹L‹pXZéÿÿÿ€HƒìA¸0H‰ßE1Éj¹H8Fèõÿþÿ_AXH‹H‹pé_ÿÿÿH‰÷H50Eè·ÿþÿèâÿÿHcðH=è41Àè!ýþÿóúAWAVAUATUSH‰ûH‰÷HƒìH‹CxH‹KH‹3HPüH‰SxHcH‰ÐDjHÑH)ÖH‰òHÁúƒúuqƒÀMcíH‰ßH˜N‹$éJ,íL‹4Áè8¿ÿÿL‰çH‹ÿP(L‰òL‰çH‰ÆI‰ÇèÎûþÿH…Àt!H‹SJ‰êHkH‰+HƒÄ[]A\A]A^A_ÃI‹GP1ÒL‰öL‰çÿPHëÎH5OEèÛþþÿff.„óúAWAVI‰þH‰÷AUATUSHƒìI‹FxI‹NI‹6HPüI‰VxHcH‰ÐZHÑH)ÖH‰òHÁúƒú…ºHcÛPƒÀH<ÝHcÒH˜L‹,ÙH‹,ÑL‹$ÁH‰|$L‰÷èV¾ÿÿL‰ïH‹ÿP(I‰ÇAöD$ ujI‹FL‰áL‰þL‰ïI–hH‰ØH‰êè"ÿÿ…Àu%I‹GP1ÒL‰áH‰îL‰ïÿP@…ÀuI‹FI–PH‰ØH‹l$InI‰.HƒÄ[]A\A]A^A_ÃfDL‰æL‰÷è}üþÿë‰H5>Dè¿ýþÿff.„@óúAWAVAUATUSH‰ûH‰÷Hƒì(H‹3dH‹%(H‰D$1ÀH‹CxHPüH‰SxH‹SHchHÂH)ÆH‰ðHÁøƒø…„HcíH‰ßL‹4êL,íèA½ÿÿH‹L‰÷ÿP(I‰Ä‹¨„ E‹|$DE…ÿti¨teƒ»Ìt\AƒÿH8CL %LEÈA‹F % =…êI‹I‹vH‹@H‰D$LKL‰ÉD‰ú1ÀH=TKèøþÿ€L‰æL‰÷èÍÿÿA‹$I‹L$ öÂt/H…Ét*ƒ»Ìt!‹yDHcQ@wÿ‰qD…öˆ´9Ö¬A‹$ƒâûH‹h…ÀA‰$H“PH‹CHEÑH‰èLkL‰+H‹D$dH3%(u]HƒÄ([]A\A]A^A_ÀH‹CH“hH‰èLkL‰+ë„L‰öHT$¹H‰ßL‰L$èVúþÿL‹L$H‰ÆéÿþÿÿèþþÿH5AAèÈûþÿHcöH=þ01Àè7ùþÿ€óúAUATUSH‰ûHƒìH‹GxH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒø…HcíL‹,êL$íè[»ÿÿH‹L‰ïÿP(H‰Æ‹%=t9L‰ïè9ùþÿH‹hH“P…ÀH‹CHEÑH‰èLcL‰#HƒÄ[]A\A]ÃH=ÑI1ÀH‰t$èÅöþÿH‹t$ë­H‰÷H5X@èßúþÿff.„@óúAUATUSH‰ûHƒìH‹GxH‹HPüH‰WxH‹WHchHÂH)ÁH‰ÈHÁøƒø…HcíL‹,êL$íè{ºÿÿH‹L‰ïÿP(H‰Æ‹%=t9L‰ïèùþÿH‹hH“P…ÀH‹CHEÑH‰èLcL‰#HƒÄ[]A\A]ÃH=!I1ÀH‰t$èåõþÿH‹t$ë­H‰÷H5x?èÿùþÿff.„@óúAWAVAUATUSH‰ûH‰÷Hƒì(H‹CxH‹ HPüH‰SxH‹SHcH‰ÆhHÂH)ÁH‰ÈHÁøHÿƒù‡ðHcíL»8L4íL‹$êL‰ùƒøŽÀNHcÉL‹<ʃø„¥NHcÉH‹ ʃø„´~HcÿL‹úƒø„ª~HcÿL‹ úƒøt~FH˜L‹,ÂH‰ßH‰L$L‰D$L‰L$è¹ÿÿL‰çH‹ÿP(HƒìL‰úL‰çAUL‹L$H‰ÆL‹D$ H‹L$(èLüþÿH‹SH‰êLsL‰3HƒÄ8[]A\A]A^A_ÃfDH‹8I‰ÈM‰ÁE1íéƒÿÿÿH5ÛGè¦øþÿLƒ8ëàL‹8ëÚ@óúAWI‰ÿAVAUATUSHƒìH‹GxH‹/HPüH‰ëH‰WxD‹(H‹AE‰D$ IcÅHÇH)ÃH‹HÁû‹@(LcóIÁæ‰D$AEI÷ÞH˜LõL‹$ÇAöD$ „¯I‹|$¾PèPýþÿH…ÀtL‹` L‰ÿèÿ·ÿÿL‰çH‹ÿP(I‰Æƒû^Idž L‰öL‰çèþþÿƒøÿ¯Lcl$ ƒ|$I‹WJítzI8J‰ êIGI‰HƒÄ[]A\A]A^A_ÃfDAMSþH‰ÆL‰çèžµÿÿ…ÀuŒë©„¾H=‡?èçÿÿö@ …åLcl$ ƒ|$I‹WJíu†HDøI‰HƒÄ[]A\A]A^A_ÃfDL‰öL‰çèµýþÿH‰ÃH…Àteƒ|$…²ö@€…èH‹H‹@D@I‹G¶@"ƒà„L<•À„À„ïI‹G H)èH…ÀŽlH‹CLmH‹H‰Eë|fDI‹G¶@"ƒà„Ÿ<•ÀI‰í„ÀtYI‡8IƒÅH‰EëHf.„H‹xM7¾PL‰õèœûþÿéLþÿÿ€H‰ÆL‰ÿLmè!òþÿL‰ÿH‰ÆèVúþÿH‰EL‰öL‰çè7ôþÿM‰/HƒÄ[]A\A]A^A_ÃDH‰ÆL‰ÿèåúþÿD@éÿÿÿ@L‰ÿèàõþÿ<”ÀéTÿÿÿfDIcÈE…ÀxhI‹G H)èHÁøH9È|XI‰íE…À~ŽA@ÿH Å1ÀfH‹SH‹H‰THƒÀH9ÁuêLl é^ÿÿÿL‰ÿD‰D$èsõþÿD‹D$<”Àéþÿÿ@H‰êH‰îL‰ÿD‰D$èÝöþÿD‹D$H‰Åë‹H‰êH‰î¹L‰ÿèÀöþÿA¸H‰ÅérÿÿÿfóúAWAVAUATUSH‰ûH‰÷Hƒì8H‹KH‹3dH‹%(H‰D$(1ÀH‹CxHPüH‰SxHcH‰ÐjHÑH)ÖH‰òHÁúƒêƒú‡þPHcíH‰ßHcÒL‹,éL$íL‹4ÑPƒÀHcÒH˜H‹4ÑL‹<ÁH‰t$è™´ÿÿL‰ïH‹ÿP(H‹t$H‰D$‹F öÄÿ…Ê<„‰ÂL …âÿÀú „§A‹G öÄÿ…Ç<„¿‰ÂLUâÿÀú „¤A‹F % =…ÀI‹VH‹t$L‰ÉL‰ïèòþÿH‹hH“P…ÀH‹CHEÑH‰èLcL‰#H‹D$(dH3%(…ïHƒÄ8[]A\A]A^A_Ãf„% =…€H‹L‹NH‹@H‰D$ A‹G öÄÿ„9ÿÿÿ% =uwI‹M‹GH‹@H‰D$ A‹F % =„@ÿÿÿ1Ò¹L‰öH‰ßL‰D$L‰L$è§ñþÿL‹D$L‹L$H‰ÂéÿÿÿDHT$ ¹H‰ßè~ñþÿI‰Áé¯þÿÿfDHT$ ¹L‰þH‰ßL‰L$èVñþÿL‹L$I‰Àé²þÿÿèõþÿH5eBèÈòþÿ„óúAUATUSH‰ûH‰÷HƒìH‹CxH‹KH‹3HPüH‰SxHcH‰ÅPHÁH)ÆH‰ðHÁøƒø…WHcÂH‹4ÁL$Å‹F % =…'L‹nƒÅHcíH‹4é‹F % =t¹1ÒH‰ßè›ðþÿH‹Cö@#„ H‹PH‹CH‹,Ðè|íþÿÇA¶U€úF„Ž’€úN„I€úPu$¹ H= 9L‰îó¦—€ڄÒ„ÅDÇfïÀH‹CNl ø‹E ‰Ââÿƒú…)€»¹„€Ì"‰E H‹Eò@(I‰mLcL‰#HƒÄ[]A\A]À€úBu›¹ H=ç7L‰îó¦—€ڄÒu€ò€Dë€fD¹1ÒH‰ßè‘ïþÿH‹KI‰ÅéÂþÿÿDH‰ßè¨ïþÿH‰Åéïþÿÿò0Dé=ÿÿÿ¹ H=†7L‰îó¦—€ڄÒ…ÿÿÿA¶U ME ƒêB€ú‡üþÿÿH EC¶ÒHc‘HÊ>ÿℹH=¹7L‰îó¦—€ڄÒ…Áþÿÿò¹Cé¾þÿÿ@H‰îH‰ßèUìþÿéãþÿÿ¹ H=n7L‰Æó¦—€ڄÒ…þÿÿòÑCé~þÿÿ¹H=)7L‰Æó¦—€ڄÒt˜¹ H=7L‰Æó¦—€ڄÒ„±¹ H=þ6L‰Æó¦—€ڄÒ„Ÿ¹H=“6L‰Æó¦—€ڄÒ…üýÿÿò\Céùýÿÿ€¹H=—6L‰Æó¦—€ڄÒ„‰þÿÿ¹H=›6L‰Æó¦—€ڄÒ…ªýÿÿòCé§ýÿÿ¹H=,5L‰Æó¦—€ڄÒ…~ýÿÿòÖBé{ýÿÿ¹ H=6L‰Æó¦—€ڄÒ…RýÿÿòÊBéOýÿÿ¹ H=Õ5L‰Æó¦—€ڄÒ„v¹ H=¿5L‰Æó¦—€ڄÒ„q¹H=›5L‰Æó¦—€ڄÒ…èüÿÿò0Béåüÿÿ¹H=e5L‰Æó¦—€ڄÒ…¼üÿÿòìAé¹üÿÿ¹H=35L‰Æó¦—€ڄÒ…üÿÿò¸Aéüÿÿ¹H=ê4fïÀL‰Æó¦—€ڄÒ„jüÿÿ¹H=Ï4L‰Æó¦—€ڄÒ„ž¹ H=µ4L‰Æó¦—€ڄÒ„³¹H=Ÿ4L‰Æó¦—€ڄÒ…üÿÿò#AéüÿÿfD¹H=R4L‰Æé ýÿÿ¹H=z4L‰Æó¦—€ڄÒ…½ûÿÿòÅ@éºûÿÿòè@é­ûÿÿò³@é ûÿÿòÖ@é“ûÿÿòù@é†ûÿÿòd@éyûÿÿò‡@élûÿÿH5©3èíþÿfDAWAVI‰öAUATI‰üUH‰ÕSHƒìxdH‹%(H‰D$h1ÀH‹º‡ ‹8èñþÿH‰ÇH‰ÃèЬÿÿL‰çH‹ÿP(I‰ÅA‹öÄÿul<th%ÿÀ= t\‹E öÄÿ…ð<„è‰ÂâÿÀú „Ô¾ H‰ßHÇÅÿÿÿÿèÐñþÿºI‰ÆAöE„ñéç„ÆD$<HƒìE1ÉL‰îfo9?ÇD$@yrefL‰çH¸all_arraH‰D$8HÇÁÿÿÿÿH1)D$fo?)D$fo?)D$(I‹EPjLD$ÿ˜ZHƒ8YH‹L$hdH3 %(…%HƒÄx[]A\A]A^A_ÃD% =…¸H‹EH‹h ¾ H‰ßèëðþÿI‰ÆAöE…ÍHƒ8H…홺L‰öH‰ßè¡îþÿë6€H‹H‹pHƒÆL‰úH‰ßè’íþÿH‰ßH‰ÆèwìþÿL‰öH‰ßH‰ÂèIêþÿH…íx HEÿtNH‰ÅL‰îL‰çè°ñþÿH…Àt;L‹xö@€t©H‰ÆH‰ßèÖïþÿHcðHƒÆë DH‰îºH‰ßèÈïþÿH‰Åé8ÿÿÿL‰öH‰ßèìþÿH‰ßH‰ÆèÚîþÿéÝþÿÿDH…íŽ6ÿÿÿH‰êé3ÿÿÿèÊìþÿf.„óúATUSH‰ûH‰÷H‹CxH‹KH‹3HPüH‰SxHcH‰ÂhHÁH)ÆH‰ðHÁøpÿƒþ‡°HcíL$íƒøŽ€rHcöH‹4ñƒø„}ƒÂHcÒH‹Ñ‹F öÄÿu3<t/%ÿÀ= t#H‹<éHƒÆ èæüÿÿH‹SH‰êLcL‰#[]A\Ãf¾H=Ô9èÙÿÿH‹SH‰êLcL‰#[]A\ÃH³8H‰òë‘@H“8éÿÿÿH5]9èéþÿóúAWH·8AVI‰þAUATUSHƒì(H‹GxH‹H‰t$HPüH‰WxHcH‹GI‰ÕDbHÐH)ÓHÁûƒûŽAUHcÒL‹<ÐAöG tI‹wH‰Á€~ „«H‰È„AUMcäHcÒH‹,ÐJåH‰D$öE …Û¾H=1èšØÿÿö@ „àH‹x¾PèîþÿH‹h L‰÷趨ÿÿH‰ïH‹ÿP(I‰Àƒû~$AMSþH‰ÆH‰ïH‰D$讦ÿÿL‹D$…À„‘IÇ€ L‰ÆH‰ïè›îþÿƒøÿ|vAöG …›H‹T$I¶DH‰ïè7ûÿÿI‹VL‹l$J‰âMnM‰.HƒÄ([]A\A]A^A_Ã@L¿8éÿÿÿ@H‹}¾PèBíþÿH…À…7ÿÿÿé6ÿÿÿ@I‹FIŽ8J‰ àL‹l$MnM‰.HƒÄ([]A\A]A^A_ÃfDI‹w€~ …WÿÿÿHƒì¹E1ÉL‰÷jHè.A¸ è¯çþÿZYH…À„)ÿÿÿH‹H‰D$éÿÿÿ€HƒìE1ÉA¸ ¹jH•.èpçþÿAXAYH…À„“H‹0H…ö„‡‹F © …ÔöÄÿu<t‰ÂâÿÀú u`öÄ„H‹H…ÀtOH‹@Hƒø†‰ÞH=7Mcäè ÖÿÿI‹VJ‰âI‹FJàI‰é•þÿÿ1ÒL‰÷è^âþÿ„ÀuÉf.„AöG u I‹FéýÿÿI‹w€~ …ˆHƒìL‰÷E1ÉA¸ j¹Hº-èæþÿ^_H…Àt¿H‹0H…öt·‹F © ….öÄÿu<t‰ÂâÿÀú uf„öÄt}H‹H…À„vÿÿÿH‹@Hƒø‡ ÿÿÿH…À„_ÿÿÿH‹F€80… ÿÿÿéMÿÿÿfDöÄ„ÿÿÿöÄtH‹Hƒz …ãþÿÿöÄ„ÿÿÿH‹fïÀf.@(ŠÈþÿÿ„ÿÿÿé½þÿÿöÄtnöÄtH‹Hƒz …¥þÿÿöÄ„äþÿÿH‹fïÀf.@(ŠŠþÿÿ„ÌþÿÿéþÿÿH…À„·þÿÿH‹F€80…iþÿÿé¥þÿÿºL‰÷èèàþÿ„À„þÿÿéJþÿÿ1ÒL‰÷èÑàþÿ„À„€þÿÿé3þÿÿºL‰÷è·àþÿ„À„fþÿÿéþÿÿI‹NéæûÿÿóúULJ,H‰þ1ÀSH C,H‰ûHA,¿çà Hƒìè?åþÿHèœÿÿH5!5H‰ß‰Åè÷àþÿH€ïÿÿH5,H‰ßèáàþÿH ûÿÿH55H‰ßèËàþÿHôëÿÿH5%5H‰ßèµàþÿHÞëÿÿH5/5H‰ßH‹Ç@(è•àþÿH^êÿÿH575H‰ßH‹Ç@(èuàþÿH^éÿÿH5ª+H‰ßè_àþÿHhèÿÿH5«+H‰ßèIàþÿHRæÿÿH5®+H‰ßè3àþÿHåÿÿH5³+H‰ßèàþÿH6äÿÿH5³+H‰ßèàþÿHàÿÿH5³+H‰ßèñßþÿHêÝÿÿH5µ+H‰ßèÛßþÿHÛÿÿH5¸+H‰ßèÅßþÿHÎ×ÿÿH5‡4H‰ßè¯ßþÿHxÖÿÿH5§+H‰ßè™ßþÿH¢ÕÿÿH5©+H‰ßèƒßþÿHŒÕÿÿH5m4H‰ßH‹Ç@(ècßþÿH<ÔÿÿH5‰+H‰ßH‹Ç@(èCßþÿHÔÿÿH5U4H‰ßH‹Ç@(è#ßþÿHLøÿÿH5U4H‰ßH‹Ç@(èßþÿH\ÑÿÿH5B+H‰ßèíÞþÿH¶ÎÿÿH5C+H‰ßè×ÞþÿH€ÍÿÿH5G+H‰ßèÁÞþÿHšÌÿÿH5G+H‰ßè«ÞþÿH„ÌÿÿH5G+H‰ßH‹Ç@(è‹ÞþÿHÊÿÿH5D+H‰ßH‹Ç@(èkÞþÿHdïÿÿH5<+H‰ßèUÞþÿHîœÿÿH5;+H‰ßè?ÞþÿHxÃÿÿH5™3H‰ßè)ÞþÿHbÂÿÿH5(+H‰ßèÞþÿH\ÀÿÿH50+H‰ßèýÝþÿE1ÉH‰ßL4+H )H°ÿÿH5%+è&ÞþÿE1ÉH‰ßLª+H æ(H‹®ÿÿH5+èÿÝþÿE1ÉH‰ßL+H ¿(H4­ÿÿH5+èØÝþÿHQ¬ÿÿH5+H‰ßèrÝþÿH;›ÿÿH5ì2H‰ßè\ÝþÿHešÿÿH5þ2H‰ßèFÝþÿH/«ÿÿH5Þ*H‰ßè0ÝþÿH ªÿÿH5å*H‰ßèÝþÿE1ÉH‰ßLí*H *(H¨ÿÿH5Û*èCÝþÿHL¦ÿÿH5á*H‰ßèÝÜþÿH¥ÿÿH5§2H‰ßèÇÜþÿH™ÿÿH5¹2H‰ßè±ÜþÿHú£ÿÿH5´*H‰ßè›ÜþÿH´ ÿÿH5µ2H‰ßè…ÜþÿH‰ßè= ÿÿHƒ8„ÇH‰ßè+ ÿÿA¹˜A¸˜¹]H‹h€ºÐ¾^hÀH=j*ÿXH‰ßZH5h*ºèdÞþÿH‰ßº˜H‰ÆèÄàþÿH‰ßºH5]*è@ÞþÿH‰ßºÀH‰Æè àþÿH‰ßºH5W*èÞþÿºÈH‰ßH‰Æè|àþÿH‰ß脟ÿÿH‹8èüãþÿHƒÄ‰îH‰ß[]é¼äþÿH=e1ÀèÞÜþÿf.„@óúHƒì1Ò¾dH‹%(H‰D$1À‰<$¸H‰çf‰D$è¼ãþÿ…ÀxH‹L$dH3 %(uHƒÄÃèkÚþÿ‹÷ØëÝè áþÿóúHƒìHƒÄÃDBI::_dbi_state_lvaldbdimp.c --> do_error %s error %d recorded: %s <-- do_error %s warning %d recorded: %s latin1mysql_init_commandmysql_compressionmysql_connect_timeoutmysql_write_timeoutmysql_read_timeoutmysql_skip_secure_authmysql_read_default_filemysql_read_default_groupmysql_conn_attrsmysql_client_found_rowsmysql_use_resultmysql_bind_type_guessingmysql_no_autocommit_cmdmysql_multi_statementsmysql_server_preparemysql_enable_utf8mb4mysql_enable_utf8mysql_server_pubkeymysql_sslmysql_ssl_verify_server_certmysql_ssl_optionalmysql_ssl_client_keymysql_ssl_client_certmysql_ssl_ca_filemysql_ssl_ca_pathmysql_ssl_ciphermysql_local_infileimp_dbh->mysql_dr_connect: <-my_login skip connect hostportuserpassworddatabasemysql_socketHY000imp_dbh->pmysql: %p DBI::PERL_ENDINGROLLBACK failedTurning on AutoCommit failedTurning off AutoCommit failedAutoCommitmysql_auto_reconnectmysql_gtidsbind_comment_placeholdersclientinfoclientversionerrnoerrorerrmsgdbd_statsauto_reconnects_okauto_reconnects_failedhostinfoprotoinfoserverinfoserverversionsocksockfdstatthread_id >- dbd_st_free_result_sets <- dbd_st_free_result_sets async mysql_stmt_prepare %d %s >count_params statement %s %c <- dbd_st_prepare Expected hash arrayNUM_OF_FIELDSNULLABLEmysql_insertidmysql_is_auto_incrementmysql_is_blobmysql_is_keymysql_is_nummysql_is_pri_keymysql_lengthmysql_max_lengthmysql_tablemysql_typemysql_type_namemysql_warning_count errno %d err message %s --> dbd_describe <- dbd_describe Not implementedstatement contains no resultParamValues%dmysql_resultINSERT ID %llu Called: dbd_bind_ph Illegal parameter number TRY TO BIND AN INT NUMBER TRY TO BIND A FLOAT NUMBER SCALAR type BLOB >parse_params statement %s limit LIMIT */Binding parameters: %s listfields LISTFIELDS Out of memoryIGNORING ERROR errno %d Missing table name -> dbd_st_execute for %p Statement%lluDATA_TYPECOLUMN_SIZELITERAL_PREFIXLITERAL_SUFFIXCREATE_PARAMSCASE_SENSITIVESEARCHABLEUNSIGNED_ATTRIBUTEFIXED_PREC_SCALEAUTO_UNIQUE_VALUELOCAL_TYPE_NAMEMINIMUM_SCALEMAXIMUM_SCALENUM_PREC_RADIXSQL_DATATYPESQL_DATETIME_SUBINTERVAL_PRECISIONmysql_native_type --> dbd_st_finish <-- dbd_st_finish -> dbd_st_fetch no statement executing fetch() without execute() dbd_st_fetch no data before buffer->buffer: %c after buffer->buffer: st_fetch double data %f ERROR IN st_fetch_string <- dbd_st_fetch, %d cols imp_sth->result=%p mysql_num_fields=%u mysql_num_rows=%llu mysql_affected_rows=%llu 'max lengthvariable length stringdecimalprecision,scaledoubletinyintTiny integersmallintShort integerfloattimestampbigintLonglong integermediumintMedium integerdatedatetimeyearenumenum(value1,value2,value3...)setset(value1,value2,value3...)binary large object (0-65535)tinyblobbinary large object (0-255) mediumblobbinary large objectlongblobtinyint unsignedTiny integer unsignedsmallint unsignedShort integer unsignedmediumint unsignedMedium integer unsignedbigint unsignedLonglong integer unsignedlarge text object (0-65535)mediumtextlarge text objectsmallint auto_incrementint unsigned auto_incrementbitchar(1)numericlong varbinary0xdouble auto_incrementbigint auto_incrementbit auto_incrementchar(1) auto_incrementmediumint auto_incrementMedium integer auto_incrementfloat auto_incrementlong varchartinyint auto_incrementUnable to get DBI state function. DBI not loaded.Unable to get DBI state. DBI not loaded.imp_dbh->mysql_dr_connect: host = |%s|, port = %d, uid = %s, pwd = %s imp_dbh->mysql_dr_connect: Setting init command (%s). imp_dbh->mysql_dr_connect: Enabling compression. imp_dbh->mysql_dr_connect: Setting connect timeout (%d). imp_dbh->mysql_dr_connect: Setting write timeout (%d). imp_dbh->mysql_dr_connect: Setting read timeout (%d). mysql_skip_secure_auth not supportedimp_dbh->mysql_dr_connect: Reading default file %s. imp_dbh->mysql_dr_connect: Using default group %s. imp_dbh->use_mysql_use_result: %d imp_dbh->bind_type_guessing: %d mysql_bind_comment_placeholdersimp_dbh->bind_comment_placeholders: %d imp_dbh->no_autocommit_cmd: %d imp_dbh->use_server_side_prepare: %d mysql_server_prepare_disable_fallbackimp_dbh->disable_fallback_for_server_prepare: %d mysql_options: MYSQL_SET_CHARSET_NAME=%s mysql_ssl_verify_server_cert=1 is not supported without mysql_ssl_ca_file or mysql_ssl_ca_pathEnforcing SSL encryption is not supportedimp_dbh->mysql_dr_connect: Using local infile %u. imp_dbh->mysql_dr_connect: client_flags = %d my_login IMPSET but not ACTIVE so connect not skipped imp_dbh->my_login : dbname = %s, uid = %s, pwd = %s,host = %s, port = %s imp_dbh->connect: dsn = %s, uid = %s, pwd = %s panic: DBI active kids (%ld) > kids (%ld)Calling a synchronous function on an asynchronous handleCommit ineffective because transactions are not availableRollback ineffective because transactions are not availablepanic: DBI active kids (%ld) < 0 or > kids (%ld)disconnect_all not implementedTransactions not supported by databaseserver_prepare_disable_fallback <- dbd_st_free_result_sets RC %d <- dbd_st_free_result_sets ERROR: %s <- dbd_st_free_result_sets: Error while processing multi-result set: %s -> dbd_st_prepare MYSQL_VERSION_ID %d, SQL statement: %s Async option not supported with server side prepare use_server_side_prepare set ERROR: Trying to prepare new stmt while we have already not closed one ERROR: Unable to return MYSQL_STMT structure from mysql_stmt_init(): ERROR NO: %d ERROR MSG:%s mysql_stmt_prepare returned %d SETTING imp_sth->use_server_side_prepare to 0 <- dbs_st_more_results no more results Processing of multiple result set is not possible with server side prepare -> mysql_st_internal_execute41 mysql_st_internal_execute41 calling mysql_execute with %d num_params mysql_stmt_execute returned %d <- mysql_internal_execute_41 returning %llu rows <- mysql_st_internal_execute41 dbd_describe() num_fields %d no metadata information while trying describe result setOut of memory in dbd_sescribe() i %d col_type %d fbh->length %lu fields[i].length %lu fields[i].max_length %lu fields[i].type %d fields[i].charsetnr %d mysql_to_perl_type returned %d Freeing %d parameters, bind %p fbind %p -> dbd_st_STORE_attrib for %p, key %s <- dbd_st_STORE_attrib for %p, result %d -> dbd_st_FETCH_attrib for %p, key %s Binding non-numeric field %d, value %s as a numeric!Output parameters not implemented Conversion to INT NUMBER was not successful -> '%s' --> (unsigned) '%lu' / (signed) '%ld' <- fallback to STRING SCALAR type %ld ->%ld<- IS AN INT NUMBER SCALAR type %ld ->%f<- IS A FLOAT NUMBER SCALAR type STRING %ld, buffertype=%d SCALAR type %ld ->length %d<- IS A STRING or BLOB SCALAR NULL VALUE: buffer type is: %d FORCE REBIND: buffer type changed from %d to %d, sql-type=%ld mysql_st_internal_execute MYSQL_VERSION_ID %d "mysql_use_result" not supported with server side prepare <- dbd_st_execute returning imp_sth->row_num %s Gathering asynchronous results for a synchronous handleGathering async_query_in_flight results for the wrong handleError happened while tried to clean up stmtfetch() but fetch already doneError while describe result set. dbd_st_fetch for %p, chopblanks %d dbd_st_fetch calling mysql_fetch dbd_st_fetch data truncated dbd_st_fetch called mysql_fetch, rc %d num_fields %d Refetch BLOB/TEXT column: %d, length: %lu, error: %d st_fetch int data %ld, unsigned? %d dbd_st_fetch result set details dbd_st_fetch for %p, currow= %d dbd_st_fetch, no more rows to fetch <- dbd_st_fetch, size of results array(%d) != num_fields(%d) <- dbd_st_fetch, result fields(%d) Calling mysql_async_ready on the wrong handleAsynchronous handle was not executed yetHandle is not in asynchronous modebinary large object, use mediumblob insteadmediumint unsigned auto_incrementMedium integer unsigned auto_incrementtinyint unsigned auto_incrementinteger unsigned auto_incrementsmallint unsigned auto_incrementbigint unsigned auto_increment0 ÿÿˆ ÿÿÐ ÿÿhÿÿPÿÿ¨ÿÿ†ÿÿèÿÿÿÿ¨ÿÿ¨ÿÿ¨ÿÿ¨ÿÿxÿÿ¨ÿÿ¸ÿÿ¨ÿÿ¨ÿÿøÿÿxÿÿ¸ÿÿ¨ÿÿðÿÿ<1ÿÿì0ÿÿÔ0ÿÿ´0ÿÿ”0ÿÿt0ÿÿT0ÿÿ<0ÿÿ0ÿÿü/ÿÿÜ/ÿÿÄ/ÿÿ¬/ÿÿŒ/ÿÿ$/ÿÿ1ÿÿœ2ÿÿ 2ÿÿü2ÿÿ 2ÿÿ 2ÿÿô3ÿÿ44ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ 2ÿÿ|2ÿÿô6ÿÿ´6ÿÿ,6ÿÿì5ÿÿœ5ÿÿ\5ÿÿÜ4ÿÿŒ1ÿÿŒ1ÿÿ¬4ÿÿ|4ÿÿŒ1ÿÿŒ1ÿÿ<4ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿŒ1ÿÿô3ÿÿüIÿÿìIÿÿìIÿÿìIÿÿìIÿÿüIÿÿìIÿÿdIÿÿìIÿÿìIÿÿìIÿÿ%s(...): attribute parameter '%s' is not a hash refmysql.xs do() use_server_side_prepare %d, async %d drh, dbh, command, dbname=NULL, host=NULL, port=NULL, user=NULL, password=NULL DESTROY for %s ignored - handle not initialised DESTROY %s skipped due to InactiveDestroy sth, field, offset, len, destrv=Nullsv, destoffset=0sth, param, value_ref, maxlen, attribs=Nullsvbind_param_inout needs a reference to a scalar valueModification of a read-only value attemptedsth, param, value, attribs=Nullsvsth, statement, attribs=NullsvIssuing rollback() due to DESTROY without explicit disconnect() of %s handle %s(either destroy statement handles or call finish on them before disconnecting)%s->disconnect invalidates %d active statement handle%s %srollback ineffective with AutoCommit enabledcommit ineffective with AutoCommit enableddbh, catalog=&PL_sv_undef, schema=&PL_sv_undef, table=&PL_sv_undef, field=&PL_sv_undef, attr=Nullsvdbh, dbname, username, password, attribs=Nullsvsth, slice=&PL_sv_undef, batch_row_count=&PL_sv_undefDBD::mysql::st::SUPER::fetchall_arrayrefDBD::mysql::db::SUPER::selectall_arrayrefDBD::mysql::dr::dbixs_revisionDBD::mysql::db::selectall_arrayrefDBD::mysql::db::selectrow_arrayDBD::mysql::db::selectrow_arrayrefDBD::mysql::db::last_insert_idDBD::mysql::st::bind_param_inoutDBD::mysql::st::fetchrow_arrayrefDBD::mysql::st::fetchrow_arrayDBD::mysql::st::fetchall_arrayrefDBD::mysql::dr::_admin_internalDBD::mysql::db::mysql_async_resultDBD::mysql::db::mysql_async_readyDBD::mysql::st::mysql_async_resultDBD::mysql::st::mysql_async_readyDBD::mysql::GetInfo::dbd_mysql_get_infoÔ¿ÿÿÀ¿ÿÿ-¿ÿÿ°»ÿÿ¿ÿÿ°»ÿÿ°»ÿÿÕ¾ÿÿ°»ÿÿ°»ÿÿk¾ÿÿ?¾ÿÿ¾ÿÿ°»ÿÿ°»ÿÿ°»ÿÿ°»ÿÿȽÿÿ<½ÿÿ°»ÿÿ½ÿÿCREATE DATABASE slice param not supported by XS version of fetch@@ð?0@€o@$@(@@@"@ @`o@@ o@@&@Ào@ o@@o@;ì\Hœþÿ¨§þÿ0¸³þÿHh´þÿ\H¶þÿp¨¶þÿ”H·þÿÀx¸þÿÔˆ¹þÿ(ºþÿL˜ºþÿtè»þÿØȼþÿØäþÿhHçþÿ¨èþÿP¨éþÿ°¸êþÿ ˆëþÿ@ øíþÿx hîþÿ¤ hóþÿð xüþÿH Èþþÿ”  ÿÿ ¸ÿÿt èÿÿÀ (ÿÿ hÿÿ( Hÿÿh ¨ÿÿ´ !ÿÿ h(ÿÿx x(ÿÿŒ H2ÿÿÜ È4ÿÿ Bÿÿp¸FÿÿàhLÿÿ@ØNÿÿ„XOÿÿ¼˜RÿÿTÿÿXØbÿÿ¨XdÿÿÈdÿÿ,ˆeÿÿtHfÿÿ¼gÿÿøXjÿÿ\8lÿÿܘlÿÿÈoÿÿ<¨pÿÿŒØqÿÿ܈sÿÿ$Xuÿÿhhvÿÿ¤HwÿÿôxÿÿDHyÿÿ¨¨zÿÿ ÈŠÿÿ丌ÿÿH¸ÿÿ˜ø“ÿÿüX–ÿÿ@(—ÿÿŒH˜ÿÿØØšÿÿ4ø›ÿÿ„XÿÿЈžÿÿ HŸÿÿHˆ ÿÿ¬¸£ÿÿ x¦ÿÿlx¨ÿÿ¸˜¬ÿÿHh­ÿÿ”ˆ®ÿÿàˆ°ÿÿ,h±ÿÿhH²ÿÿ¤¨³ÿÿø·ÿÿxx¹ÿÿÄ(¿ÿÿ¨Áÿÿ`¨Âÿÿœ8Çÿÿ( èÌÿÿh zRx $8™þÿ` FJ w€?:*3$"Dp¤þÿP \h°þÿ£p±þÿØ „вþÿSHƒL L Z M (¨ ³þÿ’AƒP(R0F(A D AA Ô€³þÿ&8蜴þÿBEŒD †D(ƒD0º (A ABBE 8$pµþÿ’FBŒD †D(ƒG0J (F ABBD $`ÔµþÿoLƒ~J JAA A `ˆ¶þÿGFEŽE E(ŒA0†A8ƒG@à 8J0A(B BBBL D 8A0A(B BBBB <ì·þÿÓMŽEB ŒD(†A0ƒ (D DIBK L,¨·þÿ (FEŽB E(ŒD0†A8ƒGÀÈGÐ_ÈAÀo 8A0A(B BBBH |ÈNÐZÈDÀLÈNÐVÈBÀJÈNÐUÈBÀKÈMÐVÈAÀLÈNÐXÈAÀIÈNÐVÈBÀJÈNÐVÈBÀJÈNÐUÈBÀKÈMÐVÈAÀÃÈNÐVÈAÀ‚ÈNÐVÈBÀ|ÈNÐVÈBÀzÈKÐXÈAÀ|ÈMÐVÈAÀ|ÈNÐVÈBÀJÈNÐVÈBÀZÈKÐXÈAÀaÈMÐVÈAÀGÈMÐWÈBÀêÈNÐVÈBÀFÈKÐXÈAÀbÈKÐXÈAÀbÈMÐVÈAÀTÈNÐVÈBÀRÈNÐ^ÈBÀ@ÈMÐ^ÈAÀ@ÈNÐ]ÈAÀ@ÈNÐVÈDÀ@ÈHÐ\ÈBÀ˜|hÝþÿfBBŽB B(ŒD0†D8ƒG`P 8A0A(B BBBG U 8F0A(B BBBD hApHhA`UhHpBxD€X`J 8A0D(B BBBB H<ßþÿ^FEŽE E(ŒA0†D8ƒG@Ð 8C0A(B BBBC \dPàþÿúFBŒD †A(ƒD0{ (D ABBK \ (D ABBK [ (D ABBD \ÄðàþÿFBŒD †A(ƒD0{ (D ABBK \ (D ABBK ] (D ABBJ ,$ áþÿÊMŒD†A ƒ} ABF 4T@âþÿdE†DƒD j CAE J CAB (ŒxäþÿpE†AƒG u AAD H¸¼äþÿýFBŽB E(ŒD0†D8ƒGP  8A0A(B BBBF Tpéþÿ FBŒD †A(ƒGPV (A ABBH lXH`cXDPIXH`[XDPH\(òþÿNFEŽB B(ŒA0†D8ƒD@’ 8C0A(B BBBJ €¨,ôþÿF FEŽE B(ŒA0†D8ƒG`ÔhRpQhA`ŒhPpRhA`hPpRhA`Ó 8C0A(B BBBD µhPpShB`X,øÿþÿ”FBŽB B(ŒA0†D8ƒG`hhpÇhA`Ý 8D0A(B BBBA Hˆ<ÿÿ.FEŽE E(ŒD0†A8ƒG`% 8A0A(B BBBH HÔ ÿÿ4FBŽB B(ŒD0†A8ƒGpH 8D0A(B BBBC   ÿÿ:Qƒh<< 8 ÿÿÝMŽBB ŒA(†D0ƒq (E BBBF H| ØÿÿUFBŽE E(ŒA0†D8ƒGP• 8A0A(B BBBC `È ìÿÿXFEŽE B(ŒD0†D8ƒDPW 8G0A(B BBBK ª 8H0A(B BBBE \, èÿÿ^FBŽB E(ŒD0†D8ƒGÀ¯ 8A0A(B BBBI rÈHÐUÈAÀŒ èÿÿL  äÿÿà FEŽE E(ŒA0†D8ƒG€£ 8A0A(B BBBB @ð d$ÿÿuFŽBB ŒA(†D0ƒGÀ  0A(A BBBE L4  &ÿÿ5 FBŽB B(ŒA0†A8ƒJÀæ 8A0A(B BBBH l„ 3ÿÿ®FBŽE B(ŒA0†A8ƒG Æ¨N°W¨E h¨T°S¨A g 8A0A(B BBBG \ô Ð7ÿÿªFBŽB B(ŒA0†C8ƒG€¥ˆHVˆA€B 8A0A(B BBBI @T =ÿÿjFŽBE ŒD(†A0ƒG@v 0A(A BBBI 4˜ L?ÿÿvMŒD†D ƒw ABA [AEHÐ ”?ÿÿ2FBŽB B(ŒD0†A8ƒG`ú 8A0A(B BBBD L ˆBÿÿoMŽBB ŒA(†D0ƒx (D BBBH ³ (D BBBA Ll ¨CÿÿÎFBŽE B(ŒA0†A8ƒG@ 8D0A(B BBBK T¼ (RÿÿrMŒA†A ƒw ABG @ ABE T CBG f ABG (PSÿÿpFŒA†A ƒdABD@”SÿÿºFŒA†A ƒd ABA R ABK W ABA Dˆ TÿÿºFŒA†A ƒd ABA R ABK W ABA 8ЄTÿÿÄFŒA†A ƒb ABC o ABF ` Uÿÿ>FBŽB B(ŒA0†A8ƒJà -è Bð Bø A€ Ià · 8A0A(B BBBD |pôWÿÿÔBEŽB B(ŒD0†A8ƒLÀ„ÈHÐTÈAÀS 8A0A(B BBBF DÈMÐYÈBÀRÈLÐSÈCÀ ðTYÿÿSHƒL L Z M 8Yÿÿ"FBŒA †A(ƒJ@& (A ABBH LP„\ÿÿÞFBŒA †A(ƒG0x (A ABBA x (A ABBA L ]ÿÿ#FŽBB ŒA(†A0ƒ (A BBBE z (A BBBG Dðô]ÿÿ¡FŽBB ŒA(†A0ƒJ€/ 0A(A BBBC @8\_ÿÿÌFŽBB ŒA(†A0ƒJ@ý 0A(A BBBE 8|è`ÿÿFBŒA †A(ƒJ0¸ (A ABBF L¸¼aÿÿÞFBŒA †A(ƒG0t (A ABBE x (A ABBA LLbÿÿÏFBŒA †A(ƒG0w (A ABBB i (A ABBA `XÌbÿÿ+FBŽB B(ŒA0†A8ƒJ@§ 8A0A(B BBBG D 8A0A(B BBBA `¼˜cÿÿXFBŽB B(ŒA0†A8ƒGP 8A0A(B BBBB a 8A0A(B BBBE Ô ”dÿÿ FBŽB B(ŒA0†D8ƒGÐ 8A0A(B BBBD ñØ^àFØAÐ]ØNàSØBФØMàSØAЖØaàFØAÐŒØOàVØBÐþØ^àFØAÐÊØOà\ØBÐðØNàRØBÐ`øÜsÿÿðFBŽB B(ŒA0†A8ƒG@“ 8A0A(B BBBF  8A0A(B BBBF L\huÿÿõFBŒA †A(ƒG0Œ (A ABBE w (A ABBA `¬vÿÿ:FEŽB B(ŒA0†A8ƒG€ ¿ˆ E G˜ A  S€ ` 8A0A(B BBBG @ô{ÿÿUFŽBB ŒA(†A0ƒJ@å 0A(A BBBE HT~ÿÿÅFBŽB B(ŒA0†A8ƒJ@‚ 8A0A(B BBBD H ”~ÿÿFBŽH B(ŒA0†A8ƒDPÏ 8A0A(B BBBG XìhÿÿŒFBŽE B(ŒA0†A8ƒDp4xK€TxAp` 8A0A(B BBBE LHœÿÿFBŒA †A(ƒJ0Ÿ (A ABBG r (A ABBA H˜l‚ÿÿ]BEŽB B(ŒA0†D8ƒD@ 8A0A(B BBBB 8䀃ÿÿ'FBŒG †A(ƒD0Í (A ABBI 8 t„ÿÿ³FBŒA †A(ƒG0Œ (A ABBA `\ø„ÿÿ:FBŽB B(ŒA0†A8ƒGP¨ 8A0A(B BBBI z 8A0A(B BBBD \ÀÔ…ÿÿ*FBŽB B(ŒA0†A8ƒG` hKpv8A0A(B BBBE`[hMpShA`\ ¤ˆÿÿ³FBŽH B(ŒA0†A8ƒDPÃXK`v8A0A(B BBBJP{XM`SXAPH€‹ÿÿúFBŽB B(ŒA0†A8ƒJPç 8A0A(B BBBG ŒÌ¸ŒÿÿFŽBB ŒA(†A0ƒG@è 0A(A BBBE SHMPXHA@_HNPSHG@THMPYHJ@WHNPRHD@MHNPYHA@PHNPRHB@H\HÿÿÅFBŽB B(ŒA0†A8ƒJ@‚ 8A0A(B BBBD H¨ÌÿÿFBŽH B(ŒA0†A8ƒDPÏ 8A0A(B BBBG Hô ‘ÿÿùFBŽB B(ŒA0†A8ƒJ`f 8A0A(B BBBH 8@T“ÿÿÑFBŒA †A(ƒG@ (A ABBD 8|ø“ÿÿÑFBŒA †A(ƒG@ (A ABBD P¸œ”ÿÿ\FBŽB B(ŒA0†A8ƒJ`ÍhHpj8A0A(B BBBG`| ¨•ÿÿ^FEŽB B(ŒA0†A8ƒDPÚ 8A0A(B BBBG _ 8A0A(B BBBG  8A0A(B BBBF HŒˆ˜ÿÿhFBŽB B(ŒA0†A8ƒJpT 8A0A(B BBBJ 8جšÿÿªFBŒA †A(ƒJ0> (A ABBH \  ÿÿvBBŽE B(ŒD0†D8ƒD°²¸[ÀL¸H°X 8A0A(B BBBF 8t@¢ÿÿFŒA†A ƒ¢ ABC a ABD ˆ°£ÿÿFIŽE B(ŒA0†A8ƒD`E 8A0A(B BBBE O 8A0A(B BBBG RhMpShA`ahPpNhB`¾hNpRhA`<<§ÿÿ¢E†MƒZ Â(O0J(D } FAE |x¬ÿÿ`H D D GNUÀp\0\ Ñ!§ƒ ÿU€U€W€b€ þy€€‘€˜€úÿÿÿ € úÿÿÿ­€¶€ ä€ ä€ Ä€Ä€ ‘€‘€‘€‘€ Ê€ U€U€Ê€ Ô€ûÿÿÿÛ€ ûÿÿÿì€ö€   U€U€  U€U€  U€U€     U€U€  ÿU€U€÷; ÿU€U€?øw{üÿÿÿÿÿU€U€\üÿÿÿüzýÿÿÿÿU€U€ƒýÿÿÿù üÿÿÿÿÿÿU€U€«üÿÿÿú¿üÿÿÿÿÿÿU€U€ЖüÿÿÿûªƒÿU€U€W€r€þy€€‘€ÈúÿÿÿÙ úÿÿÿï‚ ‚+‚  F‚ \‚ ×€ ä€ \‚ ä€ C‚ûÿÿÿS‚ ûÿÿÿ‚ÿÿÿÿÿÿU€U€m‚ÿÿÿÿü‰‚ÿÿÿÿÿÿÿU€U€”‚ÿÿÿÿú—(—  P—úÿÿÿP— úÿÿÿ¦‚¦‚ ¾‚ p— ì€ö€  Ú‚ùÿÿÿÞ‚ùÿÿÿæ‚€æ‚ p— p— ‚+‚  —— ƒ vƒ î‚üÿÿÿÿÿÿý‚ üÿÿÿûƒƒƒƒ vƒ vƒ ƒûÿÿÿƒ ûÿÿÿ,ƒùÿÿÿ?ƒùÿÿÿVƒoƒ  ƒƒ ¢ƒÿÿÿÿÿÿÿU€U€‰‚ÿÿÿÿú¯ƒúÿÿÿ¯ƒ úÿÿÿ¸—ûÿÿÿ¸— ûÿÿÿUŽ £ ® ¼ Í Ü æ ñ  èD vÑ!Ñ!õþÿo`ÈÈ ^ ê!øð38%¸ ûÿÿoþÿÿo¨$ÿÿÿoðÿÿo&#ùÿÿo—˜ç! E0E@EPE`EpE€EE E°EÀEÐEàEðEFF F0F@FPF`FpF€FF F°FÀFÐFàFðFGG G0G@GPG`GpG€GG G°GÀGÐGàGðGHH H0H@HPH`HpH€HH H°HÀHÐHàHðHII I0I@IPI`IpI€II I°IÀIÐIàIðIJJ J0J@JPJ`JpJ€JJ J°JÀJÐJàJðJKK K0K@KPK`KpK€KK K°KÀKÐKàKðKLL L0L@LPL`LpL€LL L°LÀLÐLàLðLMM M0M@MPM`MpM€MM M°MÀMÐMàMðMNN N0N@NPN`NpN€NN N°NÀNÐNàNðNOO O0O@OPO`OpO€OO O°OÀOÐOàOðOPP P0P@PPP`PGCC: (GNU) 8.5.0 20210514 (Red Hat 8.5.0-4)GA$3a1À[À[GA$3a1èDþDGA$3a1vvGA$3a1À[y\ GA$3p972€\ GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA*cf_protection€\#] GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection#]_ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection_c_ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionc_` GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection`6a GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection6aOb GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionObâb GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionâb_c GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection_c§d GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection§dƒe GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionƒeš GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionš GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionn‘ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionn‘j’ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionj’r“ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionr“J” GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionJ”´– GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection´–0— GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection0—-œ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection-œ9¥ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection9¥Ž§ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionާֳ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÖ³tº GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectiontº®½ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection®½äÁ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionäÁ* GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection*Â Ä GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection ÄeÆ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectioneÆÈÉ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÈÉ.Ñ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection.Ñ7Ñ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection7ÑÛ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÛ…Ý GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection…ÝÅê GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÅê~ï GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection~ï*õ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection*õš÷ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionš÷ø GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionøRû GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionRûÏü GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÏüž  GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionž   GA*FORTIFYGA+GLIBCXX_ASSERTIONS GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972 ¢uGA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA*cf_protection   GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection J GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionJ  GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection Ô GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÔ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionô GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionôS GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionS‚ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection‚n GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionn“ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection“A GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionA GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection! GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection!  GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection ß  GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionß  " GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection "h# GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionh#3 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection3€5 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection€5u6 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionu6º< GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionº<? GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection?å? GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionå?A GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionAœC GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionœC¶D GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection¶DF GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionFGG GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionGGH GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionHJI GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionJIzL GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionzL3O GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection3O:Q GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection:Q_U GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection_U%V GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection%VAW GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionAWIY GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionIY!Z GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection!Z[ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection[l\ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionl\Î_ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÎ_8b GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection8bêg GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionêgfj GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionfjpk GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionpkÿo GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÿo¢u GA*FORTIFYGA+GLIBCXX_ASSERTIONS GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972°uvGA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA*cf_protection°uv GA*FORTIFYGA+GLIBCXX_ASSERTIONS GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p972À[À[GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA$3a1vvGA$3a1vvGA$3a1þDEGA$3a1vv,€\’°,b) ‚h,ð<°u`^)n”9 ç+=€\’°5¶0-5x+95bP5]P5¸0ß%-5_@'9ointyt6)E5N,L,ULi2EÖ"‘E™’LŸ“L]”Ea9•Lî3–‘òK—‘1H˜yê5š‘qDž‘p"4C+¬‘» ±‘lC¿‘kYÂ!‘v"k5¿0vØ"@¼k2O°nClSsD(H+ ØL/€  ÕW ÕLåL}J ¾ LJ (ß$ _‡V RA! T#A¼Y U#Aç V”O( vÉeM xy®0 yE‚ zy[ |E WU ”y— šfa_ šfH? ›G5XPÒ 1E)( C L3 ESzG F ó& G ‘vL'Ù> HÜ5 áZmv6…N˜`E7/¼<Ä#<+ <‚*<ƒN?"&h$#,pc>$,xFA'2€L !&• @€BBL }B"B *!^¼! R@L|‘ŒLÈ!ÁU'p¼( y@·()åHŒÑL?SÁaM Ÿy˜\ 4š]Ý/83™Q:Ï8;°/?d”A yß5B yJ C/G•™QIÏ8J°J K/ Oà™QQÏ8R°:)S yÁ\T@U/aÍ#c 4ü=d 4)^&reà0 g…/ YWoP[ 4 ]f£Ah /l{§^n‘¢:o y/t¬ v 4»Nw y©xE )p3,I5Ø0<¹ ¹ "à &/PÎ Î "Ø &{Uã ã "í &àø ø " d" ‰" ž"# ³". È"9  "D  "O ” "Z © "e ¾ "p Ó "{ è "† ý "‘ *3EßLà ¹ !œ j{9)Úý MÜ ý ËWÝ YÞ  - L9 LE- L¦[ØH Sß Ï - €FèH p%éH -u LÝ%.F Y0 ¤!H5 È«=ìŽX>à1@ °p;A ¼  C y$Þ0E ¤(À J ø0ØJN;8{7PG@€[ñH…D\ñXÅ2]ñhÐCjF x_V Lkf L'\ŸV zD  yg¡‘)\¦V |D® yi¯‘ò yi4ã X6 yA37 y» "ã w-kòJ.k8JH ˆ kW æ‹yaS E b— Q- d k´- e æŒ) fyÐ gyO? h æx ÿÝ  V  k§Z  æL yD  k#É* D: F k6F G æ0\ HyN‘P!f(!Ô†T!,4!9ºD! -¹ !! fvvLÿN8!%Æ(!'Ô†T!(,4!)9ºD!*-¹ !+ f:DIR"Ò&£L0IV#v‘0UV#wL0NV#Eû5 5o0†$ y´#/ ²0OP#1 /;op(%Ê z(%Ë»243%Ë»2Ó%ËÓK¹/%Ë2J(=%ËE  (%ËE (6K%ËE (IZ%ËE (<%ËE (–U%ËE (Æ!%ËE (H%ËE ~%Ëå1" %Ëå1#0COP#2 TcopP&ydz(&z»243&z»2Ó&zÓK¹/&z2J1=&zE  1&zE 16K&zE 1IZ&zE 1<&zE 1–U&zE 1Æ!&zE 1H&zE ~&zå1" &zå1# &}[2$‡ &€2J(žW&‚ k0A-&‡ (28K/&ˆ (2<Í6&гQ@5B& ¹QH#8 qr`%û­z(%ü»243%ü»2Ó%üÓK¹/%ü2J(=%üE  (%üE (6K%üE (IZ%üE (<%üE (–U%üE (Æ!%üE (H%üE ~%üå1" %üå1#Ù%ý »2(DH%þ »20¦;%2J8¢J%(2@ó'% ßKH %LPœ@% »2Xæ0#< º#&ZP%§ëz(%¨»243%¨»2Ó%¨ÓK¹/%¨2J1=%¨E  1%¨E 16K%¨E 1IZ%¨E 1<%¨E 1–U%¨E 1Æ!%¨E 1H%¨E ~%¨å1" %¨å1#Ù%© »2(DH%ª »20Æ,%« »28s %¬ »2@?0%­ »2H #G øHõà #œ=%bC'#ž22Iop'$»28D'%ž2ç ''ž2üX'(ž2 ª'*e`(˜',20('-24UZ'/k`8É'02@ß'12D£+'3ž2HžR'4šPY.'5šX3<'6š`U0'8(2h':k`p¹U'<k`xÑ '=k`€Í'Aå1ˆp"'Cã G'Eµ2˜¥4'HÙK ›J'KC¨ %'LC°/C'NÁ2¸ X'OÁ2¹ U'^2º:'`å1¼‡]'aå1½`K'b©2Àw;'nå1ȉA'uÚ1ÉX'zµ2Ð\5'{µ2ØZC'}Tà)'~¯2èOE'q`ðJ'€¯2øïW'„×Y('†“2d '‡“2µ'ŠC·,'w` .'‘}`(È7'“uJ0M,'¤=%8Ç3'¥=%P'¦=%hÈ='§J1€'¨J1°UISv'©“2àë"'«ƒ`è×E'­µ2ðUIna'»ø£'¿u 'Àu ^7'Á©2 52'“2(UIrs'Ô“20©'Õ©28/'Ö©2@º#'ש2HR$'ØBPrZ'Ù“2XDX'Ú“2`'R'Û“2h\'Þ»2pµ'ßÈRx'+'áÈR€]E'â–Qˆr-'ã“2`eO'æÚ8hþ'è»2pQ'ë»2x'ìµ2€†;'í©2ˆ'î©2«S'ñk˜Û'ò }@'ô2¨"T'÷å1ªV'ùÁ2«÷'úÁ2¬ÇG'ûÁ2­à'ý“2°û'‰`¸'`_è[$'/`_ð.*'=ã_øUK'?æ¯['@kç 'B(2[Q'D(2 'Fyf'Iyp'Jæ ñ'K©2(ª$'L©20L'M©286'Nk@×M'OBHj'P“2Pï^'Q“2Xý!'T“2`<('U™`hP'VBp''XÁ2xF'YÁ2yO'ZÁ2z='[Á2{'\Á2|´']Á2}â'^Á2~q'_Á2 'ak€š'b“2ˆÍ.'d¦0'f2˜*'h2œÜ#'l2 §R'oy¤ 'pŸ`¨#'s©2°å't©2¸Á'u©2ÀJK'v©2ÈX'w¯2ÐH]'z©2ØBR'}©2àA'€©2è6 '©2ð¨Y'™©2ø7'š“2ž/'›“2JL'œ“2Ó'¯2.'Ÿ¥` @'¢µ28g1'£µ2@·W'¤“2HÒ/'¥¯2P+'¦¯2Xu*'§¯2`z'¨¯2h'©¯2p(S'¬¯2x×.'¯k€‹_'²½=ˆã'³»2‰'´»2˜-;'µ»2 n&'¶»2¨9'¹T°"U'»y¸R&'¼y¼‰@'½kÀ}N'¾µ`ÈŒF'¿kÐ 'į2Ø^1'Å“2àÁ4'Æ“2èÐD'Éyð‘,'Ì2ô ^'ÍÁ2øqN'ÎÁ2ù3?'Ï2ú'Ñyüñ'Ó2nU'×2ÔN'Ø»`uF'çµ2pJ'êÁ`²'ì  ­'î½=p² 'ïoJxf'ð2J€¸^'ñ2Jˆ>'ù½=ðF'úy˜9'ý(2œ4'ÿÁ2 f'Á2¡Ì'Á2¢H'Á2£Ì^'ޤ¦)'ލ6'‚¬I'‚°VIan' (2´g]' (2¸ò6'(2¼ë4'(2ÀD'(2ÄáH'æÈƒ'kÐà.'u5Ø1 '!Ç`à#D'#92`ˆ#'%(2d… ''Â[h'O')“2pAK'+2xt1',2J€ø '.2JˆµA'/2J¸Z'12J˜)'32J ›S'6k¨¥1'7²°k'8²¸\ '9(2ÀLM':å1Är.';Á2Å2R'=å1ƼC'>Á2ÇüK'FÁ2ÈãT'GÁ2ÉÊ 'Lè^Ìé>'NÁ2Ðz'SSÑt'WyÔ¾6'YÁ2ØÍI'[kà¦O'\“2è£'a“2ð/'b“2ø×@'c“2 îV'd“2 t 'f“2 'g“2 ù@'j“2 Ö]'k“2( f'l“20 õD'm“28 û2'n“2@ TL'o“2H i?'p“2P S='r×`X 4['sç`¨ }Y'tç`( üF'u“2¨ ë0'v“2° 3'w“2¸ tA'x“2À ‡3'y“2È ,'zµ2Ð ]'|µ2Ø !A'}mEà ßG'~è ™&'÷`ð ù^'€å1ü öM'ˆÁ2ý Ð\'‰Á2þ J'ž2 W,'‘ž2 ÉT'Ÿa f6' ¯2 ¦P'¢4 L'¦ž2( ìL'¨¯20 Ÿ'­ a8 Ò5'®2J@ %'¯2JH ºK'³aP _B'¶µ2X G'·µ2` ø'º]5h C'»ap ˆ'¼ax ÃY'¿“2€ R'À“2ˆ ÁX'Á“2  ='“2˜  2'Ó2  Õ 'Ä“2¨ —!'ƃ_° ê'ȯ2¸ í?'ɯ2À FY'Ì‘È  'Ïé[Ð A>'Ðé[Ø ô4'×é[à ˆ<'Ù \è f7'Ü\ð b'ß@\ø N'âµ2 ®8'èµ2 5'ë¯2 Ò'ïµ2 Ÿ0'ó“2 G'õµ2( çL'÷a0 –^'ûµ`8 ø'ý3_@ VT'!`ˆ '[' %a ›' y˜ Ù*'ƒ[  0'"+a¸ x^'- JÐ È'/Ø 0SV#O N%=%;sv(ç%NA(è4J9(è(2I$(è(2 Å(éÌ60AV#P ›%;av(öÜ%NA(÷~:J9(÷(2I$(÷(2 Å(øü90HV#Q è%;hv(û)&NA(ü;J9(ü(2I$(ü(2 Å(ý„:0CV#R 5&;cv(ñv&NA(òö9J9(ò(2I$(ò(2 Å(ót9J#S ƒ&#k((Ê&NA(Î8J9((2I$((2 Å(Ÿ;0GP#T Ö&;gpP) …'aV) “2Ÿ4) ,J(J) ½=#8) (2t) (2åM) µ2 !I) ¯2(ŸK) ½=0‹ ) ©28(ˆJ)E@(s8)E@>9) ²<H0GV#U ‘';gv(ìÒ'NA(ín9J9(í(2I$(í(2 Å(îì80IO#V Þ'Tio($(NA(™;J9((2I$((2 Å( ;H#W 1(#L`&?N(>&CvU#ÈU`&Ì÷("&Í å1ž2&Î å1gJ&Ï 2N&Ð 2ñ&Ò 2<=&Ó 2 8E&Ô Tt_&Õ C¨&Öš B&× 2(UA&ßQT0"<#Z ) 0*z);* á<—* ¾V¥Q* 2'^* vD5* å1Ò** š * “2 EI* k(0XPV#[ ‡)Txpv (õÎ)ëC(öµ28(ö¸<Ñ(öó!(öç<#\ Û)#W((ù0*ëC(úµ28(ú¸<Ñ(úó!(ú =eX(ûo< (#] =*#* ((’*ëC(µ28(¸<Ñ(ó!(1=å4(o< F"#^ Ÿ*#š0(+ëC(µ28(¸<Ñ(ó!(V=eX( o< c2( ,<(d#b +Ê\(+ ^+ëC+ µ28+ ¸<žH+ š]X+ šŠ9+ ž2 ~#c k+B ,‡­+ëC,ˆ µ28,‰¸<©@,Šú ,‹l#d º+#l0(4,ëC(5µ28(5¸<Ñ(5ó!(5{=eX(6o< c2(7,<(Î#e *,;^h- î,ëC-µ28-¸<Ñ-ó!-×JîA-µ2 ÎF-ùJ(÷-K0b-=K888-k@”-_KH-½=PÞO-(2XÙ- =\TN-2`ä#h û,#@ˆ(^.ëC(_µ28(_¸<Ñ(_ó!(_Ï=eX(`o< 3/(bæ8(N_(oô=0?(q ×8ï(r ×@«>(s ×HŒT(t kPêD(u ©2X-(v k`lW(w ©2hˆK(x kp¨ (y ©2xLH(z v€þ({ å1<#i .. @* Ž.o!* LVùW* LV'-* kVgR* LV&P* LV S\* ™V(ŒO* ¸V0,* LV80ANY#j ›.rany#Þ‡/ ‰#ß 4 +#à“2 çR#áž2 L"#â©2 „#ã¯2 T##äµ2 ù(#å»2 æ)#æk #çæ ]O#è 2 '#é (2 7$#ê × R.#ë ã úS#ì ‘ ƒC#í Á2 ! #î s2 WS#ï ã2#K#{À/¾Y#|l[óS#}Í’ #~ 4ã #l Í/#ÅI0#00‚9#‚r[l#ƒ ã¡#„ ã &#…}[º#†l[ Š#‡l[( #m =0#u,((b’0E(c¯2Ìe(dãñ=(eÝ2Û(fÝ2í.(g¯2 ç#q Ÿ08!.á0Â. š‚).&{Jœ..' (2G.( (20PAD#r %?'#s û0­(.+J1È$., šÝ.-©J¯#.. š0./2J/.0 (2 D#t W1™ 0.LÚ1¯^.MkãJ.Mµ2z3.MµJ4G.M(2©B.M(2;.M(2 ”W.My$?.Må1(Ù.Må1):I8/ªS:U8/«-å1:I16/¬fõ1:U16/­92:I32/®y2:U32/¯E(2s(242I27>2¬U/ÙI2… /< (26s24h2DE#w 6?]#y Ð=%“2“2ž2…'%Ü%#5ƒ!Á26Ý2Ý24ëÍ2ñ[Ø01p4Ëe03yÞ"06 kn07 k@O08 k'F09 k °?0: k(‘0; k0×0< k8O+0= k@X0@ kH0A kPÔ0B kXB0D‰4`±X0F4hDB0Hypà!0Iyt290J øxLI0M9€Ç0NS‚/0O•4ƒfM0Q¥4ˆZ0Y D,0[°4˜ 0\»4 P[0]4¨Š0^ 4°|[0_ ²¸Ú0`yÀÁ 0bÁ4ÄÊO1é2t§"0+&@!„4é2v¥4L|4&A,«4& ¶4vÑ4Lc2‰Ý4p4"Ý4¢B2ŠÝ4G2‹Ý4Î@3 yH57 5ó35Í@3 yò35’*4<L5&,-4>]5@5~4Np5&pF%57˜aøA6¤¿5RS6§ 296© k96ª »2nA6« ©2øA6¯5`E(„@6 ô5 + —/ 1 Q @& A8 ) J ‡$ b( í -% K' œ# & Y Y(™Ë5:HE(»W6;he, ‹6ßK,$ Ú8I ,% ²<Q,)Q:HEK(¼—6;hek ,-Ì6ÇB,.(2T ,/2nK,5•4)(éN75"(ék‰!(é׋*(éã%(éïÄ((é“2Ò((éÎ8gV(éž2g%(éÔ8 (éà8 (éæ8vIÈ8šÎ8ëC8›µ288›¸<Ñ8›ó!8›O?58œ-@ øV8œD?(¢88œµ20KW8œ(28ç38œš@%8œšH}8œP´R8œ3@X¨:8œ(2`ïR8œ(2d—G8œ4hï 8œ(2pP@8œ(2tð+8œ9@xx8œæ€8œkˆ8.8œ“25=8œš˜]8œš 8œš¨§/8œš°(®/8œE¸(º>8œE ¸•8œ½=ÀN7Ú8L6Ê&Q5)(în95"(îk‰!(î׋*(îã%(îïÄ((î“2Ò((îÎ8gV(îž2g%(îÔ8 (îà8 (îæ8­+)(óö95"(ók‰!(ó׋*(óã%(óïÄ((ó“2Ò((óÎ8gV(óž2g%(óÔ8 (óà8 (óæ8,)(ø~:5"(øk‰!(ø×‹*(øã%(øïÄ((ø“2Ò((øÎ8gV(øž2g%(øÔ8 (øà8 (øæ8+)(ý;5"(ýk‰!(ý׋*(ýã%(ýïÄ((ý“2Ò((ýÎ8gV(ýž2g%(ýÔ8 (ýà8 (ýæ8^+*(™; 5"(k ‰!(× ‹*(ã %(ï Ä((“2 Ò((Î8 gV(ž2 g%(Ô8  (à8 (æ8î,*(,< 5"(k ‰!(× ‹*(ã %(ï Ä((“2 Ò((Î8 gV(ž2 g%(Ô8  (à8 (æ8W…>(áo< *(â ï .J(ã µ2 éE(ä [2 g\(å Á2W«X(è²< K=(é × ^F(ê ã ^[(ë ²< y (ì Á2‹6W _(ðá<  (ñ á< £6(ò ÷(*(ö = ¨-(ö ‰(ök*(ú1= ¨-(ú ‰(úk*(V= ¨-( ‰(k*({= ¨-( ‰(k*(5 = ¨-(5 ‰(5k G(: (26½=Ý2½=)&­=’0*(_ô= ¨-(_ ‰(_k*(l> |8(m> T(n 4Æ4*>7>,89*>8p>Ìe8å1¯8 å1UF8 28;>¨(8&Ë>X8' š>$8( šF8) “2A8* “2Q8+ š ±€8-ó>éK8. å1N38/ó>|>?LWG8:8?Y/8; š2end8< š -8C šWG8D?v&D?)8›q?¨-8›‰8›k5h8«(@\V8¬ž@ó 8­Û@* 8°A³P8¸3Aª8¹IA A^8ºiA(Ç8¼”A0ÞY8¾¸A8‚8ÀáA@`;8ÂBHQ8Ä3AP»Q8Æ*BXYV8ÈmB`q?(@Ë>8?vI8N7j 8¢s@1I8¤ æž8¥s@š´B8¦K@D?ž@Ý2™2(2…@2Û@Ý2J?kkkš“24(2¤@kAÝ2J?“2Hkk42Ay@á@“23AÝ2J?A6IAÝ2J?9A6iAÝ2J?#2™2OA6‰AÝ2J?#2AI%‰AoA2¸AÝ2J?A#2šA“2áAÝ2J?™2™242¾A“2BÝ2J?A42çA4$BÝ2J?$B00 BD?gBÝ2¤2y»2-@D?gB(2(2Á20B+P8h Crex8i CœJ8jC8.8l“28nk5=8o  ]8p (8q 0(98rá<8pos8s š@Ý 8t å1H?@dªF8usB+ 8| fC³F8}fC=8~£C‡8åC 8€ kC#/x8§£Cþ/8¨ y€8© ku8P5IlCH¸,ˆ8\åC¡ 8]J’!8^åCx¾Y8^"åC€©CŒC8#Cs8¥ 2+8ÇDèU8È£C+8Î `DèU8УCï 8Ñ (2P@8Ò (2 cp8ÓøC+ 8×°DèU8Ù£Cï 8Ú (2P@8Û (2 cp8ÜøC*8Þ°Dp>+@8ágEèU8ã£Cï 8ä (2P@8å (2 cp8æøCeA8è (288é Á2r 8êgE me8ë°D( 8ì mE08í (28Y8î 2<X8ï 2>2å1+@8ôùEèU8ö£Cû8÷£C«A8ø$£C>8ùD?cp8úøC ±Z8ûøC$&8ü(2(B8ý°D0s8þk8+8;FèU8£C.M8 2ÈD8 2 me8°D+ 8 ~FèU8 £C~8 £Ct8  “2¸\8 k+8—Fval8 y+88GèU8£Cû8£Cme8°DB8°Dcp8øC ¢8 Á2$+8 y(°08" y,É8# k0+(8&ˆGèU8(£C¼78)£Ccp8*øC±Z8+øCÄ8, k!M8- 2 Ú8. 2$+`81OHèU83£Cc184 yc284y cp85øCï 86 (2P@87 (2D88 2°089 2 ¢8: Á2$A8;°D(B8;°D0me8<°D8.T8=OH@—8>OHNå1_HL +h8A5I,8B (2cp8CøCï 8D (2P@8E (2 c18F yc28Fy}I8G kž18H k °08I y(min8J y,max8Jy0A8K°D8B8K°D@.T8LOHH—8MOHV*h8«öI •C8ÀëC ³F8 C=yes8ÉD w8Õ D /8ß`D ->8ð¶D G8ÿsE i@8ùE ÿ@8;F Œ8~F Á78$—F ÁV8/G 8?ˆG ÿ8N_H/8QlCöIJL ¸,8_©C‚,:KLÞ'‡.š/.!oJoF."oJƒ.# uJ‰.$ uJî0á0).JCS. J#.%£JuJ>J¯JJ1).M×J·G.Mµ2É4.M½=)-ùJ¨--‰-k)-K[A-»2{-Ž.)-=K3-»2P-Ã=)-_KB-©2P-²<)-K4!-É=“'-4)%º ¸K~Z%»2JMsv%¼“2Miv%½×Muv%¾ãvO%¿K»2ÓKÝ2ÄK¸K*%L /%»2 sS% 2J 7%©2*% 6L .% »2 ½;%  2Jo50;1ŸLí;3 kÖ8;4 k5M;6 °áU;7 ¼(H;8 k*0;9 k —N;: k(ÈF <*áLÛ<<, kl5<- k“5<. ¼ÐM=MCM=VCM€ƒ=[TMØC=beMS=ivÿÀ*=nvMvTMOLveMOLÿvvMOLþv‡MOLÿw¯YH>+ N|>- k©>. kõ>/‘L>0‘Ø>1‘ 6>2‘(€H>4‘0ê>6‘8#]>8L@uP?h ÐPU?jk'?k ²€?qÐP˜ ?ukß'?v ² Ñ?yŸL(“?zkH¼P?{ ²PR ?}ÖPXû,?„H `;/?ˆk€â-?‰ ²ˆ!?ŒÜP'K?y˜h ?“k ?” ²¨@F?— °ßA?›kÈî?œ ²Ðd=?ŸâPØ!C?¢yà1V?¦Ý è}X?ªk ?« ²g*?®èP"?µ6Lï#?¶kHçS?· ²Px?¹îPXÊ?À— `†8?Äk€A?Å ²ˆ¸]?ÈôPt?χM˜í?Ðkàë?Ñ ²è‹+?ÓúPð&?ÚQøÁ&?Û ²r?ÝQ»@?áQÅ ?â ²‘?äQ ¾??ìk(—)?í ²0âB?ðk8—[?ñ ²@ç??ô yHáLŸLH  Ý 6L— ‡MvW1?õ N»2),&AQ¿H,'“2.,( ²½Ø& Q*Y&!QÀQ&"ÑÛ/&# yÐÑY&$ Á2Ô&&%2ÖAQ‚&(AQŒ&š®Q&*D¢Q#9(&'RW&( »2Ž&* uJcv&+ ½=€A&- 2–X&. ¯2 #3(&3fRW&4 »2Ž&6 uJcv&7 ½=gv&9 ©2N&: ©2 #A0&uÈRW&v »2S3&x “2R;&y »2X_&z “2cv&{ ½= «G&|ÈR(–Q*&ŒòR=svp& ž2=gv&Ž ©2+&’Sary&“ ¯2ix&” ×+&–>SéF&— 2ix&˜ ×+&šeScur&› ×end&œ ×+&žŒScur&Ÿ “2end&  “2*&‘ËS=ary&•òR ¼&™S ÛI&>S ÐQ&¡eS# Z0&Š Ty&‹ Ti8&ÎR²@&“2ðG&¢ŒSc$&¤ uJ(­#IG&ÄQT¸X&Å»2ÔA&Æ “2*0&ÙT H&Ú¿Q L&ÛR e0&ÜfR M&ÝËS ª<&Þ&T #ÅWX&ÿvUdQ& å1Æ& å1¥!& 2d& 2ñ & š D& šž"& ks & “2 ±D&  “2(£7&  k07&  k8T &  k@}$&  4H-!&D?P*`&@›U 2&AN( ÂW&B£T#SE0&ÚV¹&Û ¯2ã &ÜVd&Ý V N&Þ V&ß 2 Ä0&à 2$û &á 2(½$&â 2,$(›Uü;&ç›UyLVÝ2“2á<3V(2kVÝ2“2á<RVy™VÝ2“2á<“2B2qVy¸VÝ2á<$BŸV./@ W2val@ ¿50@ f™@ 2 ®@ ½=+@ÄVÕ+(@]W@]W©&@ “216@ kßX@ k½@ “2 Wb,@ WNZ€@".[3@&.[UH@'¿5;@(yø @+yï @-y¼@.4[ +#@/4[(2ps@04[0ÝD@4 28«@5 2<¸@6 k@10@7 kHáC@8 å1Pë7@9 å1Q—1@; å1R’@@< Á2S- @= 2Tœ%@> »2XH@? »2`ø@@ “2hÛ)@A 2p²6@B 2rŸ@C 2tS@D “2xS/@E 2€V@F 2„Í0@G ãˆ[@H ãÅ]@IÁ2˜Á@J å1™C.@K 2šò8@L 2œ„E@M »2 •B@N “2¨m@O:[°¬&@P “2¸46@Q kÀSX@T kÈPX@U kÐÇ)@V kØä]@W kàÅ@X kè¦%@Y kðs7@^ [2øOF@_ 2üA7@` å1þ$@a å1ÿ?@b µ2Ð,@c æ8z]@d ¯2-"@f @[ç$@g P[@‚R@h å1T<7@i å1UxE@j å1V!@k å1W?J@l TXj @m f`[@n [2`×=@o [2dlM@r×hî]@s×pð$@tvxÚ2@vÁ2yP˜4@xExPI&@yExP¥@zE xP9H@{E xÑ7@}Á2{ @~ å1|oWWcW¿5P[L2`[LZ@oW‡/l[&&x[#?#¼[õ#Ý2’!#$¼[¾Y#$¼[ƒ[=##QÔ[Â[Ú[yé[Ý2À#Rö[ü[6 \Ý2“2#SÔ[S#U&\,\Á2@\Ý2“2Ú#VM\S\6^\Ý2}i\7^\NO#ui\(Q#wi\c#yi\#{i\ã#}i\[#i\1 #ƒi\ÄN#…i\Ô$#ˆi\%@#Ši\ÚF#Œi\î*#Ži\}]L ]ž-#]€0#’i\P#”i\í#–i\Ç:#˜i\‹R#ši\2#œi\ù>#ži\ð-#¡i\Š#£i\X#¥i\ç#ªi\c!#¸ ð1u0#º ð1s##¼ ð1}ò]L@â]"#¿ò]Ë%#Åi\}!^Lÿ^ #Ú!^«#Û!^-#Ü5€X^7M^K#ÝX^™,#‹*>ÏO#Œ*>#*>n<#Ž*>-©^7n$#·ž^²#*>BÎ^7xT#Ã^J #–i\Bö3E#¡&_ Ý T' qR û] øG žC „4*#¶5#íXH#FP_pad#GP_=%`_L™3#Pm_s_6ƒ_Ý2»2J#a_–_2¯_Ý2™2™2…5#fÓK´&#gÉ_Ï_»2ã_Ý2»2½#hm_•>#iý_`y!`Ý2kQ§#lM\#Å#sX`fn#t ã2ptr#u 4vK#v.`Ž.2&VJöI`[k™`LHy×µ`LBX`(24×`L“2ç`L “2÷`Lå1aL À/µ2 Qc5z)4“2;aL"­C# 2 #ª26A’5@A&5¯_ya7™LAÅna¼_‘a7åAc†aÈ AþI22¶a7«aÚ6A ¶a2Óa7ÈaDCA Óa•A i\6A ¶að1 b7ÿa@DA  b–8B&y2ˆ B(Ý2rB-†2e.B1Á2FB4Á2>BKu5QBLu5‡1BXy2Z&B[Ÿ`ŽZB\yùLB]yX4Ba×òBBey2>Bfy2¦BidzB“y2 3B§y2 \B©y,7B®yBBåð_ EBçµ2gBèã 0Bëy2ûBó=%ÿBùÁ2-XcLÐ BúHcõC#4Ï[· #6Ï[HŽcL~cîOCƒŽc.¯cLŸcÀ C ¯cð1ÐcLÿÀc3#N ÐcÈ2íc7âc©2#bíc¤ #cící)#díc‘#eíc”<#fícvM#gíc*#Zcd=nv#Zï=u8#Zhd@då1xdL~>#Zcd*#[¨d=nv#[ï=u8#[hd…d,#[¨dDê`[BEDÓd#EÐE£\fú.E¯ ukx0E´ 2Ð Eµ 2 WE¶ 2 'IE· 2$DE¹ 2*Eº æ8øE½k B1E¾¤k($ E¿µk0 EÀÙk8 EÁýk@(<EÂlHŸEÃ7lPs\EÄ[lX9EÅ„l`ËBEÆžlhí<EÇÇlpVEÉ “2x»EËÝ2€!JEÍâlˆmQEÎmí EÏCm˜]EÐgm ÕEÒ mm¨¤TEÔ–m°øREØ œm¸IEFhf> ˜Fƃf2comFÇsj»EGfëMÀFØSg2comFÙ°jvXFÛ 3z˜·FÜ Á2 ª Fß Á2¡ÌKFà Á2¢wPFá Á2£-'Fâ Á2¤½5Fã Á2¥K>Fç Á2¦üFè Á2§” Fé 4¨õ Fê Á2°E Fë Á2±ãEFï~´÷0EH_gH< ÈF/¯hcomF0;kF3¿€À’NF4f}ÈëBF5f}ÐáF6Å€ØfbhF7Ë€à]F8yèK>F9 yìüF: yðœ6F=Ñ€ø1F> ykXF? yQ(F@ÔmîFB y'?FC ‘j4FD Á2 /EFEÔm( FF y0eFG×€8} FH Ý€@½5FI yÀ#FL Á2ÄEJ»hAE€Öh2comE€(jgXEYiÌeEZ (2GE[ y¯E\ 2ý#E] µ2÷UE^ “2û&E_i zE`Ý2(î\Eb µ20wEc “28À1Ee 2@ Ef 2D2pidEg (2HYEh“iP¯hÇd!EiÖh8Ekj_ En “2ÂLEo “22ErrEp “2_Eq “2iLErã LEs (2(XEt “20À Ev¥ib EyBj2stdEz™i€ E{jX/˜E… sj2stdE†™i€ E‡jX´1Eˆµ2(E‰Bj/˜E‹ °j2stdEŒ™i€ EjX´1E޵21Ej/ÀE‘ ;k2stdE’™i€ E“jXè!E•y—:E–y”’E—¯2˜·cE˜× [REš¯2¨&;Eœ 2°Ë(E 4¸\HEž¼j6ukByyyyyyyGkkk“2{ki¤k“2•k6µkiªk“2Ùk“2B“2“2»kyýk“2“2y“2ßk“2l“2“2yl¯21l1lSg"l“2[l“2BB=ly„lyyyŸ`4al2žlB‘Šl“2Çl“2k××4¤lyâliBXÍlym“2i“2“2“2“2èlyCm“2iB×BBBmygm“2“2“2“2ImÒ'y–mÝ2“2y(24sm4¬mLµEé¹m¿mÎmÎmÝ2“i= G5QNG@ yIŠYEH4Ën 8W IV  ¡* J8 û* A ¹ ƒ[ à ` ^U ] óP ­  û$ Ñ! ‘ Î ?2 šM ¥]ó 2ô ÇEõ qVö §W÷ â=ø +&ù °:ú îû Ù;ü ý +þ Œ(ÿêI#o’!I(o¾YI(oN3I) 4ËnêI+ËnvNET˜JŽpvioJ ¢pˆJ¨p6TJ¨p_J$¨pCMJ0¨p fdJ‘ àm(eJ—L0É J— L8 MJ—(L@„OJ—4LHà7J˜LPÍJ˜LX J™E`‡ J™EdòZJšEhäJšEl·<Jš-Epf5J›ytã[Jœ®pxÅ1J-€<"Jž-P JŸÁ2‚] J E„ÈJ¡-ˆ J£TM‰xLJ¥´p‰œ;J® 4wViop-EvÄpL0NETJ¯oB©EJüñp TW §HBßEJ*)q  »M }\ n =< Ø1L¨pH@[ˆG)nsnetG*Äp´4G+¨p˜-G, k ~G,k¨o5G,k°+G, k¸qHG,.kÀèZG,?kÈŸTG- kÐVdbG-kØÄ>G.ÿxà™G/yèeDG0\uð5SG1 QøÝG2 Q™TG3 QŒ^G4L…-G5LeTG6E w!G7L(-,G7L0½G8E8ÖBG9E<G:E@Þ\G;ED G<EH'G=vP=)G>x@®G? ÑpD±G@Á2HD_GAÁ2I_-GD yJAGF y`‘&GG+yhVthdGH 4pGGM gBxœ;GN 4€üK1Ã^o3GeEÈVGfkXI€Gx°tÖIGy k¼2Gz kaG{ k]G| k2dbG} k ë'G~ k(2defG k0É G€L8GL@[*G‚EHW*GƒELÛQG„EP×QG…ETÆ G†EXØ?G‡E\ÍRGˆE`ÌeG‰Ed¯GŠEh±MG‹El¯GŒìmpœ;G 4xXIGŽ’s‚(Gæ&VG˜ýt¾YG™ýtN3Gš ¼tÉ G›LÈt&VGœÈtu¶ G¢WuN3G£ukDG¤\u>SG¥ Q™G¦E&K#Wu¶ G§uIFEG©v L6 %W – § R Î3 ’ %( ¸O  ÈP ÷- Ã<  wW 54 É ²I e â% ¸ ô% Ñ  ;    †. ;P à, & #_ 8 ! :* !! Z"" F# _/$ ÈL% ÁS& `^' û( O) #X* €"+ Ö,'ðGßIxhEGàEäGà!EòZGà/EeTGáE "GáEw!GâL-Gã k ~Gãk(‰Gãk0+Gã"k82dbGã0k@È"GäNxHö<Gå kPÁFGåkXºGå&k`0Gå4khÔ#Gæ kp1)Gç kx6#Gè k€²Gé kˆAGê kýRGë k˜>GìL P GíÁ2¨²;GíÁ2©vCGñ k°] GóÁ2¸dIGö mxÀ G÷ Œxȸ[Gø s2лGù ŒxØØVGú 4àœ;Gû&—xè&SJIxymx%aB4TxyŒx4kEsx&S’xI“EGþÈx P2  K! 0BÑEG úx à8 Ä "5 Ð  î&k'úx°tvyLo&­!y&y@[GO5q#î hGQ-z·cGR Q™GSyN3GT-zx4GUu=@GV)q Æ'GW 3z(‘&GX+y0rowGY ¼t8BGZ ¼t@eDG[\uHÖBG\EP1G\ETeofG]Á2Xþ:G_Á2Y¸G` Ñp\œ;Ga 4`u1yî Gb>yB’IEG;rz §  [# '#tpG‹{É G‚)qÒGƒ gBëBG„ 4ÈG† gB=IG‡¨p ñGˆ §{(æPG‰ Â{0ÄZGŠ Â{8—GŒL@‚ZGLH–+GŽLP "GEX¨GE\> G‘ìm`ôG’Á2dVG“Á2e”G”Á2fD;G•Á2gœ;G– 4h6›{›{¡{Äprz‹{6Â{¡{y/q­{tG—rzHÎÀGœf}‰HG\uJ?Gžo cGŸ 3z eG f}(’NG¡f}0™G¢y8œ6G£bu@x4G¤u`[8G© †}h5SG« QpÝG¬ Qx¢$G­L€ÌeG®Lˆ[?G¯LG´E˜] GµEœJTG¶E ÖBG·E¤0G¸Fz¨ G¹TM¬xLGº´p¬MG¼Á2²45G½Á2³¼RG¾-´þ:GÀÁ2µGÅÁ2¶œ;GÆ‘}¸È{y€}€}/qÕ{l}&2>Œ}ÎGÇÕ{B,EGÉÊ} •D #N q€Ú}LÊ}bèQLÚ}è¸ ¬ 'b#LÚ}xè?óx L€’YL²€÷Zæ:L´€YîL¶€ YÉL¸€ I%>EF‚  ± ´= ×W Y i ÔT ¥. ‡U §K ¯L 7 ÿY ) ¶. ¿J 8\ ÿ? #/ r9 « ó" ¡ ¶IÕ,EF¡~ M5 ¿8  ¯+ à q2 "2 ü ø1 Ò: +] z 0 iG ýQ Æ- /Fì¢ÎUFíEïFîE¬F÷ÊÙ'Fø “2¯Fù yFú¢*Fû WHF× õSFû#ÐXF4€òFÖÉ FLÒFv„IFû#0F²€É FLÒFÁ2ÈFÁ2 N3Fk±MFyéWFû rF×(ûFA€—}4€²€9zʯ2í€Lyk[!¬m ð!6h#"‚à%B±N& yóY' y š5(B”A)BE*B ŒM+ y(v5, y,9C- y0K7. y4p=/ y8Í'0 y<Ú1B@ÐZ2 yH# 3 yL&4 yPS5 yTaZ6 yXo)7 y\å8 y`Ô9 yd!6:"‚.‚C‚L63‚3‚S3C‚ @Ñ!J„8 y@aœ]ƒ©?8klen8.mgend8:æ¾¶C: y%c; yƒ#< yþp(= yyZ>G> ycp? kñß]a=#OƒU| raJ#$ä@ y  rœ†h “2Å±Ë Ý2­ŸiPBdbh†óåy‰0+Á2ÝÓ`Á2^TM„# †òð 5 L C> UsÚ µ„¾-1l# †ldß L ¤„UvCè UsP …8#yÓÉ  V#¦ c#ø„U| » WUsT|R 'y ¹ p#Ä L E…Uv%Í Y…Usm W’…UsT ÐQ ¨–R 'yè WË…UsT ÐQ H–R 'y WUsT ÐQ x–R 'yƒf$6¸y ø2œbŠh¸“2W E ¸.bŠ*  ˺Ý2Ö Ì »iM E dbh¼†³ © .=½ 3z4 " 3‰Z¾Ñ€‘°8¿y ò Ày0+ÁÁ2zr *‡4# ʆ úL CúU|`†‡¾-Í1làÜ# ΆøL u‡U~C™øU|fˆ¾-ñ1lZP# ò†ÏÉÐó‡k9ù i Rû}#U @Š—ùL  ˆU~% ùˆU| ÃùŠ# ïù—#ˆú¤#QˆUv ˜ú±#Uv Vøp#aøL ‹ˆU~%jøŸˆU|Ðø¾#·ˆUvàøË#ψUvëøØ#çˆUv ùå#Hùò# ‰UvUùÿ#$‰Uv`ùØ#<‰UvrùWb‰U|Q}R‘¨†ù $z‰Uv<úW³‰U|T ÐQ p“R 'y rú$ûúWù‰U|T ÐQ ¨“R 'y ûò#ûÿ#ŠUv!ûØ#6ŠUv7ûWTŠU|Qs Aû&$Ñ€$W)§“2 ÷vœå‹dbh§!“2G=# §1†Æ¼ë'¨ “2?;z&¨“2|xa¨&“2¹µõ¨1“2öò8€ ¨<“2‘˪Ý2;/-`íü÷ü÷ µ „‹íÂÀríçå ø0$Us ¼÷p#ä÷WÊ‹U|T ÐQ €‰R 'y ü÷¤#cø=$$^r“20õjœKŽdbhr“2 strr“2͝r(“2pbËtÝ2œ6u“2a] èptr~ k™— Q~kʼ9len ‘@# †keàBiˆ y¸´tp‰ yñï>ö$"tŒ KŽ X÷J$UvT}Q2ØõL ZUv%áõnU|öW$†Uv¿öd$¤TsQ~÷q$ÍUvTsQwR2 ƒ÷~$UvT} gõp#¡õ‹$ŽUvT ÛšQ4k÷~$=ŽUvTs š÷&$.‚$¯2€ïªœ–dbh“2¦¢# .†ãßËÝ2"av¯2skrow¯2ÕÏhvµ2"sv“2ŽZi y–Œ3•M!–‘~@__p 4 Íï˜$UsT;€–_p<4pl îð˜$UsT<?¨!_pB4@ã”!tHKŽpó_pJ 4®¨ ¶ò˜$UsT;Øñ¥$ Usíñ²$)UsT|üñ¥$MUsT~ $ &ò²$kUsT|ò¥$ƒUs2ò²$¡UsT|>ò¥$¹UsSò²$×UsT|_ò¥$ïUstò²$ ‘UsT|€ò¥$%‘Us•ò²$C‘UsT|Äò¾$a‘UsT|Òò²$‘UsTèòË$œ‘UsQ0ýò²$º‘UsT| ó¥$Ò‘Usó²$ð‘UsT|*ó¥$’Us?ó²$&’UsT|UóË$C’UsQ0jó²$a’UsT|€óË$~’UsQ0•ó²$œ’UsT|«óË$¹’UsQ0Àó²$×’UsT|Ìó¥$ï’Usáó²$ “UsT|íó¥$%“Usô²$C“UsT|ô¥$[“Us#ô²$y“UsT|/ô¥$‘“UsDô²$¯“UsT|Pô¥$Ç“Useô²$å“UsT|qô¥$ý“Us†ô²$”UsT|œôË$8”UsQ0±ô²$V”UsT|½ô¥$n”UsÒô²$Œ”UsT|Þô¥$¤”Usóô²$”UsT| õ²$UsT|Q}..!`ñÀBD•H!ý÷S! T!ˆ€ õØ$Us ½ïp#þð¾$q•UsT‘ˆ~ ñ²$•UsT)ñ¥$­•UsTv8ñ=#Å•U|Yñå$÷•UsT‘ˆ~Q|X$Y} *õ&$B–L$;_ºyÛuœß˜hº“2íç˼Ý2>6½iœš# ¾†Å¿3/^¿ 1y‘ÀvúÛ1Æ–k9Ìi° —k9úi64 …Ý}#U P‰.M"GÜ@ çC—v"[Yj"ƒ^"¨¦."~Üp è~—@"ÍË4"õóz("-M"*Ý*Ý9òÍ—v"  j"C A ^"j f GÛp#RÛL ò—U|%[Û˜Uv ‡ÛØ# ÜÛØ#öÛ¯øD˜U|TvQs’ÜÀób˜UvTs¤Ü¯ø†˜U|TvQs üÜò# Ýÿ# ÝØ#*ÝWјUvQ|R~ tÝ&$$™ãy@Ñà œŒžsthã“2° ¢ ¾-ã%1lV!N!Õ&ã2“2¿!µ!Ù'ã=“2F"4"ýHä×# #Ø,ä“2|#t#8þ6ä"y‘8§/ä/בËåÝ2ù#á#rcæyõ$í$F[çyc%Q%idxèy:&(&%é kÿ&ý&êi1'#'3ëGí ‘°ëBî k(Ò'Ëïy(*$*Vðy€*`*—ñyí+Ë+> òEƒ-O-# õ†£// Ñp#£ÑL ÑšU|%¬ÑåšUfÒY›T~Q}ŽÓò$"›T ‘Ôò$M›T ’Q}R|‡Ôò${›T €’R‘ˆ”X}¿Ôò$š›T œ|éÔWÊ›UT@Q ´|R~ Õþ$è›U|T~5ÕL œU|%@ÕœU~T0SÕ %>œU °Ts^Õ=$VœU|qÕWxœUT@R0ÕJ$›œU|TsQ2¾ÕWÔœUT ÐQ €‰R 'yÖWUT?Q èR~<Øq$(U|Q‘°R2õØJ$EU|Q2 Ù%bU|Q2<Ùò$ŠT P’Q‘˜”Ùò$¯T ¸‘Q}ËÙò$ÚT è‘Q}RþçÙò$ùT }Úò$žT Í|CÚò$7žT ê|ƒÚò$\žT ˆ‘Q}»Úq$~žU|Q0R2 ÛÚ&$$é;¹y0ÑœŸ[sthº“2U8¾-»1lT8õ¼yQ8‚Z½‘R[len¾‘X8Q¿“2Y8 XÀ‘‘$EQ“2ÐÉ^œÆ¤sth “2ü/î/¾-!&1l¢0š0˜R"“2 11Ë%Ý2†1€19kl& ‘È~key' kÕ1Ï1:(“2&22)i2…2¶Ë²o¡C? µ2í2é2à A _p?4'3#3 Ã˘$UsT<ÒËx<¡nBye3]39keyCƤ‘Ð~JD2È3Ä3.Œ!àË G÷ ©!4þ3!.4,4 þË%%U}T1QdR ||XvÌ0%¡Us >Ìå$UsT~Q}RX$U̾$Z¡UsT~ `Ì=$Us-`íÄÎÄÎvÅ¡íS4Q4ríz4x4 ÌÎ0$Us Êp#<ÊL ê¡Us%EÊþ¡UvÅÊq$(¢UsT}Q‘È~R2èÊò$S¢T €QvR}fËÖ¤u¢UvT6R1 ÌÖ¤—¢UvT;R1àÌÖ¤¹¢UvT3R1Í¥$Ñ¢Us!Í=$é¢UshÍÖ¤ £UvT?R1ˆÎÖ¤-£UvT9R1×Î=$E£UsÏÖ¤g£UvT>R1àÏÖ¤‰£UvT1R1 ÐÖ¤«£UvT2R1BÐ֤ͣUvT:R1gÐÖ¤ï£UvT0R1†ÐÖ¤¤UvT4R1¥ÐÖ¤3¤UvT=R1ÄÐÖ¤U¤UvT8R1ãÐÖ¤w¤UvT<R1ýÐò$–¤T Œ|$ÑÖ¤¸¤UvT7R1 .Ñ&$vÖ¤Lc$±*‘“2pÆXœ€¨sth’“2«44M.“yO5I5res”Ñ€§5›5´Y•y;6/6˘Ý2Ï6Ã6¾-™1lf7T7avš¯2;8)8æ ›y99` ×¥_p¬ 4+:#: ǘ$UsT;  V§sv° “2›:‡:{Dz$¦UsT}ìÇ¥$*¦UsÈ¥$B¦Us%È¥$Z¦Us8È(r¦UuEÈË$¦UsQ0XÈ(§¦UudÈ¥$¿¦Us|È¥$צUsðÈ(ï¦UuüÈ¥$§UsÉ¥$§Us1É=#9§U‘¸ AÉ‹$UsT‘¸ œÆp#§ÆL {§Us%°Æ§U|áÆ=%­§UsT}cúÆ=$*ÇJ%×§U~T02ÇW%ï§U~ƒÇW%¨U~ŽÉW6¨U|T?Q C|R0®ÉWe¨U|T4Q S|R0 Ãɾ$UsT}$ TPyÄUœfªsthQ“2q;i;¾-R 1lØ;Ð;˜RS“2A<7< T“2¾<¶<ËWÝ2#==9klX ‘°keyY kr=l=8Zy¿=»=[iÿ=÷= LÄp#yÄL €©U|%‚Ä”©UvèÄò$¿©T  QvRs”Åò$é©T PQvR0³Åq$ªU|TsQwR2Æd%5ªU|T}Q0XÆd%XªU|T}Q2 eÆ&$KŸVø0ÂÝœì­sthø“2e>[>¾-ø)1lä>Ú>ËùÝ2_?Y?úiª?¨?DÓýyiyÏ?Í?fbhË€õ?ó?ny @@?3«!_p64.ûƒÂ  i« ‚@~@ Âq%-ß—— ««íº@¸@ ¡Âq%-ÃæÂæÂô«Ñß@Ý@ îÂq%U~-ûúÂúÂ6¬ AA ÿÂq%.d-Ã0 .­Œ+A'AgAcAr¡AA>™@ šÙA×AL¥ ­ ¦BýAd.!HÃà ; H!RBNBS!ð T!ÈBÂB ÄØ$U| rÃq%U~..!˜Ã 6}­H!CCS!0 T!ŒC†C ÐÃØ$U| PÂp#[ÂL ¢­U|%d¶­Us ÝÂq% Ã~% ëÃò$T ð$0L´y`ûoœ½¯sth´“2âCÖC¾-´'1lvDjD˵Ý2EþD¶ijEbEDÓ¹y# ¼†ÈEÆE¿®k9âiîEìE Ïü}#U @Š €ûp#‹ûL ä®U~%”ûø®Uv´û†¯UvTsøü½¯5¯UvTs2üWd¯UvTCQ è“R0Cü2Ý‚¯UvTs’üò$¡¯T î~ ²üò$T eºyê¯\sth“2,¾-/1l$X]¯2ÐüΜ>¼sth“2/FF¾-"1lžG|GËÝ2II—: yPI>IU^ y)JJi yêJÊJrc "y?L/L=@ )qóLçLav ¯2MM% yæNÖN±$ y˜OO•M  ¼tPP# †©P¥P.= 3zùPáPfbhË€RíQiíRÑRëBf}TT™yºT²TfÕDm@`дsv “2*UUlen‚ÉUÁU€°p²jy'V%VmžyMVKVptrŸkzVrV®ò$5²T r ò$T²T Œ + ò$T }à³j®yÚVØVm¯yWþVptr°k-W%W’ò$Ó²T àò$ò²T Œ ò$T }A‹%.³U‘ø~T| Ÿ˜% ¥%a³TQ‘˜”R0k‹%³U‘ø~T|•²%¡³U‘ø~T|Ë¿%Á³U‘ø~T|ùò$à³T ÃÌ%ø³U| Ù% -æ% >ó%TWI´U‘Q‘˜R‘°*ò$h´T •\ò$‡´T ¨n&§´U‘ø~T| u & ’ ò$T @•€ÿ µ_p= 4W‹W ‹ÿ&U}T|°b¶colI kÍWÅWsvJ “27X-XM¶lenNªX¦X9‹%„µU‘ø~T B0²%±µU‘ø~T·J$ÖµU‘ø~TQ2Ž&&ûµU‘ø~TQ2±Ì%¶UÒ%8¶U‘ø~TQ2 xÌ%U ªÌ%U..!‹ÿP= öH!äXàXS!€ T!ZYTY « Ø$U} ûüp#ýL ê¶U‘ø~%!ýþ¶U~Rý†·U‘Tsø ïý3&$þì­L·U‘Ts aþ@& yþŠ# ‰þM& šþZ&¼þg& ·U‘ø~T|>ÿW$½·U}T0Rÿs&Û·U}T|%Òÿï·UsÙò$¸T ÞQ‘˜”òò$6¸T ò$f¸T `”Q‘R‘Œ”<ò$…¸T °”%Q™¸Us `&]>¼Æ¸U‘Tsøò$ô¸T ДQvR‘ ”<ò$¹T ÞQ‘ ”`WM¹U‘TCQ (R0šò$l¹T h•·ò$‹¹T ù Ê#Ûò$·¹T € çå#ò$ã¹T $€  $*ò$ºT :€Kò$6ºT •Q‘bò$UºT ˆ” O Ø#_ ±#zºU} ¼ Ù% Ë æ% Ú ó%ì WǺU‘QvR|[ WùºU‘TCQ ”R|x W*»U‘TCQ @R0 ‘ ò#   ÿ# ¯ Ø#Á Ww»U‘QvR|â ò$–»T ¸• ò$Ä»T à•QR‘˜”/ ò$ã»T  – @ Œ&q ò$¼T Z ™ WU‘TCQ 8”R|$bsy°½4œÀsths“2²Y¤Y¾-s&1laZMZËuÝ2>[<[vig[a[ÀÀi y¶[°[¾3€ y\\—: yn\d\fbh‚Ë€é\ã\ëBƒf}6]2]™„yt]l]-E¾E¾—¨½)Ú]Ö]EE¾ 6^^ V¾™&UsT0-ng¾g¾ ˜!e¾9^7^Eg¾ ‹`^^^gng¾g¾ å…^ƒ^Eg¾ ‹¬^ª^ t¾™&UsTp ’¾M&õ¾™&‰¾T1H¿¡¾U{²¿™&½¾U8T1⿦&Õ¾TsjÀò$ý¾T ÀŽQ‘œ” ÀW.¿U‘ TCQ àŽR0íÀò$S¿T ÈQ~Áò$~¿T @Q|R~>Áò$¿T h˜ÁWοU‘ TCQ  R0 ­ÁÙ% ½Áæ% ÍÁó% ßÁWU‘ QsRv Û½p# ã½L %ì½FÀUs2Àò$eÀT | ‚Àò$T 1|$ÝyÐꮜÅsthÝ“2ã^Ï^¾-Ý(1lÅ_½_ËßÝ2*`$`3J(àÅ‘ð~!iáyã<âž2}`s`# ã†ð`ì`äi,a&aDÓæyK>éy‹auaüêyŽb€b?‡Á!_pú4ÀîiËÁerr" “2/c-c ïJ$UvQ2>ì7öÁk99 iYcWcKî<!Âk9E i~c|c[Âk9Li£c¡c kï}#U P‰..!ˆëÀ ú¼ÂH!ÊcÆcS!Ð T!@d:d ¬ìØ$Uv-Œ!àíàí'[*é!ŒdŠd!¼d¸d î%%UsT1Q@R Ù} ëp#ëL OÃUv%ëcÃUsÑëå$˜ÃUvQ Ï}R9X Y0ãë2ݶÃUsT~&ìNÉÓÃUsQ0õìò$øÃT ´}Qs,í"ÅÄUsQwY~è VíŠ# ¿í—# îò$]ÄT 8“Qs /î¤# Cî±#¹îW°ÄUsT Q ø’R 'yDïWéÄUsT ÐQ €‰R 'y pï&$ ~ï}#U {v"ÅL?$ÕXÔm€º.œNÉsthY.“2ýdõdè!Z.yne\eœ6[6bŠCf5f\6¿€ëfáf’N]6f}dg`g]^/Ÿ`¤gœgiay hhh-bìmmhihËcÝ2§h¥hîHdyÖhÊh>SeÔmhiXifijjfȶ<»€½–Æ9on¥Á2‘· ”½³&UsT0Q‘· ĺp# ̺L %ÕºÄÆU} ôº$"»À&éÆUs J»$h»Ù%ÇUss»æ%&ÇUs~»ó%>ÇUs•»W\ÇU}Q|»Í&tÇUsà»Ú&ŒÇUsõ»&¤ÇUs ¼?¼ç&ÉÇUsO¼ô&áÇUsu¼ò$ÈT `ŽQ~’¼ò$%ÈT ȵ¼ò$JÈT 8ŽQ~Õ¼ò$oÈT ðQ~è¼æ%‡ÈUsó¼ó%ŸÈUs½ò$ÄÈT |R|*½ò$ãÈT ˜Ž=½'ÉUsT‘¨ ]½ó%m½Œ&(ÉUsœ½ç&@ÉUs ®½&$$(1— ÔmÝ5 œ»Òh˜ ,“2hjdjã<™ ,“2¶j jØ,š ,“2ªk¦kè!› ,ylãkeœ 6×€„m€mœ6 4bŠÀm¼m8.=ž /3z‘8½5Ÿ ,y‘Ë¢ Ý2nømÌK£ Á2¿o¥owP¤ Á2ïp×p3ëG¥ ‘ _¦ k$röqa§ ktøsMN¨ k}tqt© yuu#ª Á2auKu>S« ÔmdvRv­ i1w'wð .Ë# » †ªw¦w åL C¨åU‘Ð~6ÞP˜Ë¾-Ç 1läwàw# È †xx;ÞL …ËU}CFÞU‘Ð~.š›Þ Û ~Î^xTxåx×xú–yˆyíGz9zàøzêzÓ´{¢{Æ€|r|¹;}#}¬K~=~Q !ü~î~ .ž˜ ;€ç H#‚‚ Uƒ¸‚ bï†ã† o‡w‡h{‘¨ ˆú‡ì‡ •­ˆˆ  ê‰à‰ ­eŠYŠ º‹íŠhÇ‘° ÔéŒÓŒLà  {Í åÚÎØß_‚ÍQ‘€zàq$AÍU}Q‘à~R2à~$YÍU} …åq$U}Q‘à~R2Lóð ŽÍiøL0 -Î nŽbŽLä_‚ÉÍU‘ø~Q‘¨þæq$ïÍU‘à~Q‘°R2 è_‚ÎU‘ø~Q‘¨ Sèd$U‘è~Tv»Þò$SÎT }Qw ÌÞJ# à'U 1$ $ &-·!øáøáþ íÎà!øŽöŽÔ!È!D@ â'U}TvQs æÝp#ÞL ÏU}%#Þ(ÏU‘Ð~ °áJ#ìá&'MÏUsRâ3'rÏU‘è~T}Q0eâ@'ŠÏU}åM'«ÏU‘è~Tw <åq%]åq$âÏU}TsQ‘ R2÷åò$ ÐT È’Q ›8 æZ'?æË#1ÐU‘è~YæØ#KÐU‘è~ væå# Šæq%¹æò$‹ÐT J}Qw.çg'¥ÐU‘è~Jç–¿ÐU‘Ð~ dçq%qçò#äÐU~|çÿ#üÐU~‡çØ#ÑU~ çW4ÑU‘Ð~Rv½çØ#NÑU‘è~Úçò$mÑT ˆ}Ÿè–‡ÑU‘Ð~¿èZ'¨ÑU‘è~TwÏéWÙÑU‘Ð~T5Q ¡}R0çéM'úÑU‘è~Twêò#ÒU~êÿ#*ÒU~êØ#BÒU~5êWbÒU‘Ð~Rv†ê $|ÒU‘è~»êW­ÒU‘Ð~TAQ z}R0 Åê&$$²"ý yà³”œ2Ýsthý “2‚z¾-ý -1líáËÿ Ý2{u#  †ÈÄ i‘þ½5 yl‘b‘¼A yí‘ã‘!i y.= 3zt’d’?£Ó!_p 4 ÝÓk9- i““ cº}#U @ŠP$Ô!_pc 4 ²µå$U|Q {~R4XDY0²µ(wÔ!_pd 4 Úµå$U|Q >{R8XDY0Úµ(ÊÔ!_pe 4 ¶å$U|Q 0{R=XDY0¶(Õ!_pf 4 *¶å$U|Q Ò~R9XDY0*¶(pÕ!_pg 4 R¶å$U|Q X~R5XDY0R¶(ÃÕ!_ph 4 z¶å$U|Q ³~R4XDY0z¶(Ö!_pi 4 ¢¶å$U|Q G{R>XDY0¢¶(iÖ!_pj 4 ʶå$U|Q V{RGXDY0ʶ(¼Ö!_pk 4 ò¶å$U|Q n{R=XDY0ò¶(×!_pl 4 ·å$U|Q |{R<XDY0·(b×!_pm 4 B·å$U|Q ‰{R<XDY0B·(µ×!_pn 4 j·å$U|Q –{R@XDY0j·(Ø!_po 4 ’·å$U|Q §{R<XDY0’·([Ø!_pp 4 º·å$U|Q ´{R@XDY0º·(®Ø!_pq 4 â·å$U|Q Å{R;XDY0â·(Ù!_pr 4 ¸å$U|Q Ñ{R:XDY0 ¸(TÙ!_ps 4 2¸å$U|Q Ü{R?XDY02¸(§Ù!_pt 4 Z¸å$U|Q ì{RDXDY0€áÙk9| iC“A“ tº}#U P‰..!ˆ´à BÚH!j“f“S!ð T!à“Ú“ š¹Ø$U| ´p#´L gÚU|%´{ÚUvR´±#“ÚU} »´$ µt'¸ÚU} µ—#IµË#ÝÚU}XµØ#õÚU} lµ $ z¸Š#„¸¥$'ÛU|¸=$?ÛU|¦¸‹$iÛU|T 0{Q=±¸=$ÛU|j¿¸}£ÛUvQ0R~(¹ò#»ÛU}3¹ÿ#ÓÛU}>¹Ø#ëÛU}N¹WÜUvQsR||¹ò$.ÜT H µ¹g'×¹ÆeÜUvT?Q xô¹L }ÜU|º¥$šÜU|T0º=$²ÜU|'º‹$ÜÜU|T 0{Q=2º=$ôÜU|j?ºsÝUvQ0R} Rº}#U {$—E® y@¥Nœ|ßsth® %“22”*”¾-® 61l¡”‘”˰ Ý2T•R•# ± †{•w•² i¹•±•i+³ y%–– f¥p# r¥L %{¥ÞU ½¥t'ã¥ò$,ÞT~Qs ô¥g' ¦$ %¦' H¦ò# X¦ÿ# h¦Ø#x¦WžÞUQvR} £¦ò# ³¦ÿ# æØ#Ó¦WéÞUQsRv§ò$ßT Œz2§ò$'ßT ©z =§ÿ#V§ò$SßT 0‹ h§ÿ# §ò$T ‹$xQŒ y§F œ½çsth “2õ–Ñ–¾-Ž 1l˜s˜ã< k?™™Ø, “2°š”ši’ yà›Ü›svp“ ž2&œœË” Ý2Íœ»œ 8œ y¢˜’N f}žž|  f}~žzžáž Å€Àž¶ž  i@Ÿ:Ÿ# ¡ †Ÿ‰Ÿ.a!ᨀ=  á~!şßr!óŸñŸ ©Ž'U ŒT1QV.™©°“ âß  ÷c U ë ¡ø Óè¡Ú¡Q°  ¢}¢  ‡£M£  ڥȥ ' «¦—¦ 3 ©§…§L= 0²ái> e­ò$àáT {Q ‘¨”8$8& ”®ò$T èzQv-˜ªª› vâ©©©Eª µD©B© 3ª™&U~ ÿÿÿÿT@-nI°I° x #-ãi©g©EI° ‹Ž©Œ©gnI°I° 峩±©EI° ‹ة֩ U°™&Tp.Db° y #|ãUÿ©û©Q  a9ª5ª v°™&TH ¼§p#ɧL £ãU‘¨%Ò§·ãU~»¨2ÝÕãU~Ts ©™'&©=#úãUv8©¦'äTv l©ó%bªò$>äT {£ªå$väU‘¨Q ‡R%X Y0S«å$­äU‘¨Q ÇwRDX Y0¬å$ääU‘¨Q nwR@X Y0 ¬ò# œ¬æ% «¬ó%»¬W/åU~QvR| Ǭ~%J®ò$jåT €‹Q ›8Rv¾®å$¡åU‘¨Q ÆzR5X Y0 \¯³'™¯ò$ÓåT èŒQ ¸¯æ% ǯó%â¯ò$æT ÌzRù¯ò$1æT ø‹ °ÿ# )°Ø#D°ò$pæT pŒRY±ò$æT ”²d%®æU‘¨Q0Ʋd%ÍæU‘¨Q2ä²d%ìæU‘¨Q2³d% çU‘¨Q2³d%*çU‘¨Q06³d%IçU‘¨Q0e³d%hçU‘¨Q0—³d%‡çU‘¨Q2 ѳWU~T Q À‹R 'y$ ³ “20œ œ`ídbh³ “2tªpª# ³ -†µª­ª˜R³ :“2««Ëµ Ý2™«“«9kl¶ ‘°key· k ¬â«œ6¸ “2Á­­­v£"¦èÉ[à Bš®–® {£À'Ø£Þèmsgï BҮЮ å£ÿ#ð¡– êhvû µ2ù®õ® >é_pû 43¯/¯ ý¡˜$UvT<¢¥$VéUv6¢å$ŒéUvT}Q zRBX$H¢¥$¤éUvn¢å$ÚéUvT}Q .zRFX${¢¾$øéUvT} †¢=$UvPXê3N3 B‘¸3É  ²‘@ Ä¢Í'T3Q‘¸R‘@ÞŸ ê>' Bm¯i¯ ëŸÚ'°£(ÈêŸT0 B§¯£¯ ½£ç'þ¢*ë“-D Bá¯Ý¯ £ô'?ë4ãEQ Bð‡ëãEX B°° =#IëUs ‹$aëUv =$yëUv Ĥ(-`í4ž4ž5 ÉëíS°Q°ríx°v°-`í4ž4ž I ìí°›°rí°À° ?ž0$Uv-`íã¡ã¡ æ aìíç°å°rí ± ± bœp#3q$—ìUvTsQwR2Ô=$¯ìUv 4ž¤#Jž=$ÔìUv Æž( †Ÿ( þ —#H¡¥$íUvS¡=$+íUv ã¡(( ¥£Ø# ¤5( 9¥&$]0O§ “2í,˧ Ý2\val§ $Ôm$¡,é y0—ýœ™ïdbhê “27±/±# ë † ±–±˜Rì “2²² í “2œ²”²Ëð Ý2³û²9klñ ‘°keyò kR³J³—ó “2²³®³´Yô yî³ê³ŠBõ È2>´&´ éîóSû Á28µ2µ Þ›B( œWUvTEQcy€yÿ0.(R0 l—p#c™q$ïU~T|QwR2ýšd%=ïU~T}n›WlïUvT?Q ˜ŠR0|›}#‹ïU ˜Š -œ&$KÁ/¿ À–pœFðdbh¿ “2—µµ# ¿ )†¶ ¶ï–ÀóðUvTs û–q% —O( .—WUvTGQ SyR0$ØR€ yP”dœºódrh€ “2t¶p¶å€ )ºó¹¶­¶DÓ‚ yË„ Ý2I·A· k”p# s”\(¡”i(ùðUsT ByQ0»”i(#ñUsT ByQ0Ö”i(MñUsT ByQ0ð”i(wñUsT ByQ0•i(¡ñUsT ByQ01•i(ËñUsT ByQ0L•i(õñUsT ByQ0c•i(òUsT ByQ0‚•i(IòUsT ByQ0•i(sòUsT ByQ0¿• &òUsQ1Ö•v(µòUsQ xŠñ•i(ßòUsT ByQ0 –i( óUsT ByQ0"–i(3óUsT ByQ0=–i(]óUsT ByQ0 e–i(r–d%‚óUs‘–i(¬óUsT ByQ0 ­–i(\f$2Y[ y€“Êœàôdbh[ “2­·¥·# [ +†¸ ¸DÓ^ yË` Ý2y¸s¸a iƸ¸p~ôk9e i¹ü¸ J”}#U @Š œ“p#§“L £ôUv%°“·ôU| û“ƒ( 0”ò$T -y$$2 yp’œØõdbh2 “2_¹K¹# 2 %†Fº6º ´’O(è’WmõT ÐQ €‰R 'y“W–õT?Q ŠR0 <“ò# K“ÿ# Z“Ø# m“WUvR}$4 yp‘úœËödbh “2 »÷º#  #†ò»â» ´‘(è‘WeöT ÐQ €‰R 'y’ƉöT?Q À‰ 4’ò# C’ÿ# R’Ø# e’WUvR}$*Óy^œ¯ødbhÓ“2«¼£¼# Ó&†½ ½.BÓ5kw½q½~ÓCkɽý‰Ô k¾¾DÓÖyËØÝ2o¾g¾Ùi;˾@È÷k9ûiò¾ð¾ n‘}#U P‰ ?p#JL í÷U|%SøU}”ò$2øT  ‰QvR~XÀ¯øVøU|T}Qs !‘ò# 0‘ÿ# ?‘Ø#O‘W¡øU}Q|R~ [‘q%JÇQ} y fœGüË}Ý2'¿¿dbh}“2þ¿î¿# }/†¿À¯Àsv“2vÁpÁhv€µ2ÆÁÀÁ.B kÂÂ-‚ k`Â^ÂeTƒ k†Â„Â~„ k­Â«Â‰… kÔÂÒ <† kÿÂùœ6‡ yJÃHÈiwÃmüL ùùUs%Å úUvWŽGü=úUsT~Q ùxR4rŽGümúUsT~Q þxR4ŽŽGüúUsT~Q yR4ªŽGüÍúUsT~Q yR8ÆŽGüýúUsT~Q yR8àŽGü-ûUsT~Q yR<Jò$¸ûT ЈQÛš0.(R‘°Ûš‘°0.(X‘¸Ûš‘¸0.(Y‘ Ûš‘ 0.(ƒ`ýîûUvQsR‘ X‘¨Y‘°²ò$ üT ˜ˆÒò$,üT âx ï™&U1T ˆJª\kkp_’œ`ýËkÝ2îÃæÃhvk&µ2QÄMÄÖIk6BŽÄŠÄ[*k@yËÄÇÄsvpmž2ÅÅ9lenn ‘`reso kFÅ>Ř_å$/ýUsTóTQóQRóRX Y0ð_q$RýUsQwR2 `&$$°V3ze (œdbh“2ªÅ¤Å0= 3zþÅöÅ <kaÆ]Æ-kÆ™ÆeT kãÆÕÆ~ k…ÇÇ8‰ k‘8.B k‘8#  $†‘X-yÁǽÇw!E'ÈûÇœ6 3zÿÉ÷ÉËÝ2iÊ[Êi0ËþÊ€Ÿsvœ “2#ÍÍQÀhv¡ µ2ƒÍYÍsvp¢ž2ÎÏ&Ï9lna£‘¨°|ÿdf©k&Ö"Öm(6ÿUT3Q}…q$ZÿUsQ‘¨R2 å†ò$T x„Q}ðòÿ9to¼y‘°Ûm(¹ÿUT0Q‘°ý„J$ÖÿUsQ2 ‚†ò$T è„0h9toÇy‘°An(/UT<Q‘°å„J$LUsQ2 b†ò$T (…pÞ9toÒy‘°În(¥UT;Q‘°Í„J$ÂUsQ2 †ò$T `…°ddfìk`Ö\Ö¦o(UT4Q}:…q$BUsQ‘¨R2 ‡ò$T À…Q}ðêgrökšÖ–Ö6p(¤UT5Q}²„q$ÈUsQ‘¨R2 ¥†ò$T ø…Q}¥kÛZåµ2ØÖÐÖícÚ8>×4×4 42p3˜K2‘°‹>k´×®×_“2Øýׂ_k9Ø7Ølª(²UTKQ}?l·(ÖUsTvQ~PlÄ(úUsT|Qv vlq$UsQ‘ð~R2·kÑ(:UsT} lÞ(UsT|Q00Ç3â+‘°óE‚k^Ø\ØÔv(¦UTM "q$UsQ‘°R2`î8;ŠÁ2—ØØ\\ k§Ù‰ÙI0Ž k ÛëÚ4  kgÜMÜ¢\ k™ÝÝE‘ k­Þ›Þ9lna’ ‘°3דE‘¤ð2”Á2Œßpß{å$ÀUsT~Q !xRLX Y0~{å$ûUsT~Q >xRBX Y0ö{å$6UsT~Q QxRDX Y0d|å$qUsT~Q fxREX Y0Ð|å$¬UsT~Q |xRAX Y0<}å$çUsT~Q ŽxRAX Y0¤}å$"UsT~Q  xR@X Y0~ë(ZUT‘ø~Q‘€R‘ð~X‘˜P~(UT#Q‘¤i~¤UT ˆG‰q$ÈUsQ‘°R2f‰q$ìUsQ‘°R2‚‰q$UsQ‘°R2ž‰q$4UsQ‘°R2º‰q$XUsQ‘°R21d%uUsQ0Dd%’UsQ0a·UT  ‡sd%ÔUsQ2 Œd%UsQ2@w63×E‘° Zw(UT#Q‘°Ê3&]*E‘°õw(tUT8Q‘°’ƒò$“T 0ˆ̉d%°UsQ0 Œd%UsQ2 hå$ UsT~Q ›vRBX Y0~hå$@ UsT~Q ®vRAX Y0îhå${ UsT~Q ÀvREX Y0^iå$¶ UsT~Q ÖvRCX Y0Îiå$ñ UsT~Q êvRBX Y0>jå$, UsT~Q ývRFX Y0®jå$g UsT~Q wRGX Y0kå$¢ UsT~Q ,wRHX Y0Žkå$Ý UsT~Q EwR@X Y0upå$ UsT~Q VwRGX Y0qå$S UsT~Q nwR@X Y0“qò$r T 0†¾qå$­ UsT~Q wRHX0Y03rò$Ì T X†^rå$ UsT~Q €†ROX Y0Órò$& T  †þrå$a UsT~Q ˜wRGX Y0ssò$€ T Ȇžså$» UsT~Q °wRFX Y0tå$ö UsT~Q ÇwRDX Y0Žtå$2 UsT~Q ‡R%X Y0uå$m UsT~Q ÜwRDX Y0~uå$¨ UsT~Q ñwRAX Y0íu(Å UT7bvò$ä T p‡Žvå$UsT~Q xRCX Y0úvå$ZUsT~Q xR9X Y0€wå$•UsT~Q ±xRBX Y0á~ò$´T 8‡ ò$ÓT è†^}#òU ˜…Ž(UT7Q éw°€(>UT1Q0†d%[UsQ0†d%xUsQ0:†d%•UsQ0"‡ò$´T °„¢‡d%ÑUsQ2¼‡d%îUsQ2Ö‡d% UsQ2å‡d%(UsQ0ü‡d%EUsQ0ˆd%bUsQ0"ˆd%UsQ0=ˆd%œUsQ0Tˆd%¹UsQ0oˆd%ÖUsQ0Šˆd%óUsQ0œˆd%UsQ0³ˆd%-UsQ0ňd%JUsQ0׈d%gUsQ0òˆd%„UsQ0 ‰d%¡UsQ0‰d%¾UsQ0§Šd%ÛUsQ2¼Šd%øUsQ2ÑŠd%UsQ2æŠd%2UsQ2‹d%OUsQ2D‹d%lUsQ2^‹d%‰UsQ2p‹d%¦UsQ2‚‹d%ÃUsQ2”‹d%àUsQ2¦‹d%ýUsQ2Ëd%UsQ2Ý‹d%7UsQ2ï‹d%TUsQ2Œd%qUsQ2*Œd%‰Us d%UsÚ3D_GÁ2‘° g(UsT?Q‘°-ƒ"€g€g-•"¾à¼à gø(U}T0Q: ýep#fL RUs%ffU|~fò$âT 0„Q‘È~Ûš‘È~0.(R‘”X‘Ð~Ûš‘Ð~0.(Y‘Ø~Ûš‘Ø~0.(†f)úUåf);UT‘È~Q‘Ð~R‘Ø~X‘è~Y‘”²gò$ZT ÄxÕgò$T hˆQ} š&${qÖ `&œÆ0=Ö"3zåàáàÈÖ4B!áá3²/ØBò)Z’7Ù Ú oámá.M"Q`@âPv"”á’áj"ºá¸á^"äáâá.í!/` Ý† " â âþ!:â8âdM"­`àév"dâ`âj" âšâ^"òâìâKl¹°dÓœWh¹“2Dã>ãrc¹y˜ããM.¹#kä÷ãË»Ý2yäsä¼iÈäÂäj¾“2åå Ódp#ÞdL …Uv%çd™Use &½UvQ~ $ &ev(áUvT}Q|Ieò$ T xvQ|R~kbe:)2U .›TóQ zeq$UvT}Q0R2K™`cGœMh™“2QåKårc™y©ååM.™*B=æ1æxL™vKH‚ðboœ(Y‚“ižèšèË„Ý2Ýè×è cp#cL »UscL ÓUs%Mc U 5vT^QÐR]X˜Y˜ _c}#U „JE@NKŽ0]ØœY[tN.yU$È!yPb’œšph!×€.é&éÙ'!&“2•ééýH!0×üéôéË#Ý2cê[êÈbù_p( 4Ãê¿ê..!Ëb (ZH!ýêùêS!P T!sëmë àbØ$U} ubp#¢b0%…U}T| Èb~$U}]Í2k,&i,Ë Ý2,0= (3z,ã< !k,Î #³Q,e )×€,è! y,ÌK Á2,wP Á24º'Á24MN k4ik40 k!ptrk4F#k!cp k!endk4Dy!i y4ëGy4¢y4Ÿ y4BV !ph×€?ó4QY- y?4k_¶vF4ÔÚyJ³!Jìm€\£œd¯JGìmÙë½ëh-LìmøìöìR9N1Ã,Ë1 Ý2,e1 ×€,è!1,yF!i5 yF!ph8×€F!_p;4R® % ß\fbh%)Ë€Rz- û,á'Å€R£  ,’N#f}]˜PË€D,—:)y!fbhË€SÛõÅ€n'è!õ'y@á÷Å€SŒNåf}˜'è!å#y@’Nçf}SÏ&Ó×€Â'è!Ó&y@eÕ×€SFDyL 'Di'ËD"Ý2'ã<D.k'wPD>Á2@º'FÁ2^ptrG k@è!Hy@Ÿ Iy^cJvF@ï(·v|jT!Îm_Sœ.!}Ë!Ý2+íí!lcv!½=ÝíÙíC_Ç l_p!4îî>_G)ë T  vQ0 c_}#U ȃ~&_!UóUW_UóU€Ô[¶a!'˶Ý2msv¶“2F^rc¹(2G(byŒ!'Cbã4'BbUgkí!'ÁDgq'e'gM'K-g²Gà Xk"'ÁDXq'e'XMG9;4M"'ÁD;4'n ;y'K-;²GS"4ƒ"'ÁD6'e'Ó'K-²e_ iy£",gKiB½¯ðÁ:œ=#ϯRîNîܯ‘î‹î-½¯  Â(#ϯßîÝîܯïï #ÂT) Â>¼Ts ÿ\ÿ\MAâ/â/7O# ŸŸF£  M S%S%N` ¥'¥'Oô ‘:‘:G¯ G¾ ××Gº D)D)G  Û&Û&G. LBLBGÔ ¦ ¦ G» ö7ö7G® rLrLG½ ``G¼ /S/SG¹ ·T·TG‚ú[ú[ +.+.O  C\C\O  YYYYOŒ  ??Oâ —?—?G$ IRIRO›  q@q@OÍ ‡‡O  ¤¤Oï $$OúAOÎ EEOÑ Î)Î)O  °3°3OF  LLO”A¯%¯%4ñ  ( (O L LO SSO“ _¿µP õ+õ+O  s>s>OÌ ;6;6G ééG 2A2AO~  llO¡  TDTDGò ââO  ©5©5O¦  ïïGæ ˆ%ˆ%Oe  ×4×4O.  6%6%OÁ  ìIìIGü êêGû FUFUGú ð/ð/Oë  [+[+Oå AááOË ÂÂO¾  ù ù Gå ÞNÞNG G³ 1@1@GA\\OÁAË;Ë;OÙ ÉÉG ÈHÈHG Â+Â+O  ˆˆGñ ý5ý5Gê }}Gä RRGó x'x'Gø îNîNGè 55G ½½Gð ©7©7O¢ _>U4UP µ7µ7 ­J­JG *P*P3 [ [GÒ FFGÓ Á5Á5GÕ /-/-G  ÐBÐBG¸_h3^3P 00Gá ^N^NGâ ?T?TGé ±E±EG +Z+ZGè ÞZÞZG °Q°QG¿ G G G ×%×%G íTíTG †^†^GÀ ¹¹G gHgHG ´´G I4I4G Œ Œ G’ ¡¡OÑ I1I1Oñ  gSgSG  ›Y›YG ' 'G  pBpBG  ‰Q‰QOÖ ·)·)Oñ ==OÓ UUOç )$)$GÅAš*š*° ¶S¶SGÄ Ü^Ü^G˃žSSL connection error: VVO1 ""O­ ‚‚GôŠÐ”9 f= ‚h·f¶0-x+9bP]P¸0ß %-_@ '9intyt6 )EN ,L,U Li2 EÖ" ‘E™ ’LŸ “L] ”Ea9 •Lî3 –‘òK —‘1H ˜yê5 š‘qD ž‘C+ ¬‘» ±‘lC ¿‘kY Â!‘qf¿0qØ" @¼k2 O°nC lNsD (H+ ØL €  Ð W Ð Là L}J ¹   LJ ( ß$ Z ‡VR< !T#< ¼YU#<çV ”O(vÄ eMxy ®0yE ‚zy [|E WU”y — šf a_šf H?›BXPÒ 1E(C L3ENzGFó&G ‘ q L'Ù>H× áZmv6…N˜ 8è§ 4§ >?"Âh $#Èp c>$Èx FA'΀ ·· L ½• @€ ÞÞ L xÞÞ *!úX! î@L ‘( L È!] U'  ¼( y@ ·()àH (m L?S]M ŸŸy˜\ 4š]y 8Ï ™Q: Ï8;° ? ”A y ß5B y J CŸ G1 ™QI Ï8J° J KŸ O| ™QQ Ï8R° :)S y Á\T @U a  Í#c 4 ü=d 4^Âre|0 g… Yó oP[ 4 ]f £Ah   l §^n‘ ¢:o y tH  v 4 »Nw y ©xE p3²,I5²Ø0<«P P Z /Pe e o {Uz z „ à  ™ û¤  ¯ 5º JÅ _Ð ±Û  æ + ñ @ ü U  j    ” ( *3@ ßLZ ¹ !3 j{4Ú” MÜ ” ËWÝ ¤ YÞ ´ (¤ L 4´ L @Ä L ¦[Øß Sß f Ä €Fèß p%éß - L Ý%.Ý Y0 ¤ !H5 È «=ì ŽX>à 1@ ° p;A ¼  C y$ Þ0E ¤( À J ø0 ØJN68 {7PB@ €[ìH …D\ìX Å2]ìh ÐCjÝ x Zí L fý L'\Ÿí zD  yg¡‘)\¦í |D® yi¯‘ò y i 4z X 6 y A3 7 yR z w!-fòJ!.f 8J"ß ˆ" f W" } ‹"y aS" @  #b. Q-#d f ´-#e } Œ)#fy Ð#gy O?#h } x #ÿt  V# f§Z# }L#yD# fÉ*#D­ :#F f6F#G }0\#Hy‘P$ý ($Ô †T$ ,4$9 ºD$ - ¹ $! ý  q  Lÿ8$%] ($'Ô †T$( ,4$)9 ºD$*- ¹ $+ ý DIR%i£LIV&v‘nUV&wLNV&E— o0†' y´&/ ­OP&1 Ëop((ʦ z((Ëõ1 43(Ëõ1 Ó(ËãJ ¹/(ËBI=(ËE  (ËE 6K(ËE IZ(ËE <(ËE –U(ËE Æ!(ËE H(ËE ~(Ë1"  (Ë1#COP&2 ³ copP)yz()zõ143)zõ1Ó)zãJ¹/)zBI!=)zE  !)zE !6K)zE !IZ)zE !<)zE !–U)zE !Æ!)zE !H)zE ~)z1" )z1# )}•1$‡ )€BI(žW)‚ f0A-)‡ b18K/)ˆ b1<Í6)ŠÃP@5B) ÉPH&8   r`(ûI z((üõ1 43(üõ1 Ó(üãJ ¹/(üBI=(üE  (üE 6K(üE IZ(üE <(üE –U(üE Æ!(üE H(üE ~(ü1"  (ü1# Ù(ý õ1( DH(þ õ10¦;(BI8¢J(b1@ó'( ïJH (!KPœ@( õ1Xæ0&< V&ZP(§‡z((¨õ143(¨õ1Ó(¨ãJ¹/(¨BI!=(¨E  !(¨E !6K(¨E !IZ(¨E !<(¨E !–U(¨E !Æ!(¨E !H(¨E ~(¨1" (¨1#Ù(© õ1(DH(ª õ10Æ,(« õ18s (¬ õ1@?0(­ õ1H &G ”"õà &œÙ$ bC*#Ø1#Iop*$õ1 8D*%Ø1 ç *'Ø1 üX*(Ø1 ª**u_( ˜*,Q10 (*-Q14 UZ*/{_8 É*0Q1@ ß*1Q1D £+*3Ø1H žR*4•P Y.*5•X 3<*6•` U0*8b1h *:{_p ¹U*<{_x Ñ *={_€ Í*A1ˆ p"*C G*Eï1˜ ¥4*HéJ  ›J*K B¨ %*L B° /C*Nû1¸ X*Oû1¹  U*^@1º :*`1¼ ‡]*a1½ `K*bã1À w;*n1È ‰A*u1É X*zï1Ð \5*{ï1Ø ZC*}­Sà )*~é1è OE*_ð J*€é1ø$ïW*„n$Y(*†Í1$d *‡Í1$µ*Š B$·,*‡_ $.*‘_($È7*“…I0$M,*¤Ù$8$Ç3*¥Ù$P$*¦Ù$h$È=*§„0€$*¨„0°%ISv*©Í1à$ë"*«“_è$×E*­ï1ð%Ina*»²ø$£*¿ $*À $^7*Áã1 $52*ÂÍ1(%Irs*ÔÍ10$©*Õã18$/*Öã1@$º#*×ã1H$R$*ØÞP$rZ*ÙÍ1X$DX*ÚÍ1`$'R*ÛÍ1h$\*Þõ1p$µ*ߨQx$'+*áØQ€$]E*â¦Pˆ$r-*ãÍ1`$eO*æ8h$þ*èõ1p$Q*ëõ1x$*ìï1€$†;*íã1ˆ$*îã1$«S*ñf˜$Û*ò² $}@*ô@1¨$"T*÷1ª$V*ùû1«$÷*úû1¬$ÇG*ûû1­$à*ýÍ1°&û*™_¸&*p^è&[$*/p^ð&.**=ó^ø&UK*?}&¯[*@f&ç *Bb1&[Q*Db1& *Fy&f*Iy&p*J} &ñ*Kã1(&ª$*Lã10&L*Mã18&6*Nf@&×M*OÞH&j*PÍ1P&ï^*QÍ1X&ý!*TÍ1`&<(*U©_h&P*VÞp&'*Xû1x&F*Yû1y&O*Zû1z&=*[û1{&*\û1|&´*]û1}&â*^û1~&q*_û1& *af€&š*bÍ1ˆ&Í.*d¡&0*fQ1˜&**hQ1œ&Ü#*lQ1 &§R*oy¤& *p¯_¨&#*sã1°&å*tã1¸&Á*uã1À&JK*vã1È&X*wé1Ð&H]*zã1Ø&BR*}ã1à&A*€ã1è&6 *ã1ð&¨Y*™ã1ø&7*šÍ1&ž/*›Í1&JL*œÍ1&Ó*é1&.*Ÿµ_ &@*¢ï18&g1*£ï1@&·W*¤Í1H&Ò/*¥é1P&+*¦é1X&u**§é1`&z*¨é1h&*©é1p&(S*¬é1x&×.*¯f€&‹_*²Í<ˆ&ã*³õ1&‰*´õ1˜&-;*µõ1 &n&*¶õ1¨&9*¹­S°&"U*»y¸&R&*¼y¼&‰@*½fÀ&}N*¾Å_È&ŒF*¿fÐ& *Äé1Ø&^1*ÅÍ1à&Á4*ÆÍ1è&ÐD*Éyð&‘,*ÌQ1ô& ^*Íû1ø&qN*Îû1ù&3?*Ï@1ú&*Ñyü&ñ*ÓQ1&nU*×Q1&ÔN*ØË_&uF*çï1&pJ*êÑ_&²*ì¦ &­*îÍ<p&² *ïIx&f*ðBI€&¸^*ñBIˆ&>*ùÍ<&ðF*úy˜&9*ýb1œ&4*ÿû1 &f*û1¡&Ì*û1¢&H*û1£&Ì^*‰¤&¦)*‰¨&6*}¬&I*}°'Ian* b1´&g]* b1¸&ò6*b1¼&ë4*b1À&D*b1Ä&áH*}È&ƒ*fÐ&à.*ª4Ø&1 *!×_à&#D*#s1`&ˆ#*%b1d&… *'ÒZh&'O*)Í1p&AK*+Q1x&t1*,BI€&ø *.BIˆ&µA*/BI&¸Z*1BI˜&)*3BI &›S*6f¨&¥1*7­°&k*8­¸&\ *9b1À&LM*:1Ä&r.*;û1Å&2R*=1Æ&¼C*>û1Ç&üK*Fû1È&ãT*Gû1É&Ê *Lø]Ì&é>*Nû1Ð&z*SSÑ&t*WyÔ&¾6*Yû1Ø&ÍI*[fà&¦O*\Í1è&£*aÍ1ð&/*bÍ1ø&×@*cÍ1 &îV*dÍ1 &t *fÍ1 &*gÍ1 &ù@*jÍ1 &Ö]*kÍ1( &f*lÍ10 &õD*mÍ18 &û2*nÍ1@ &TL*oÍ1H &i?*pÍ1P &S=*rç_X &4[*s÷_¨ &}Y*t÷_( &üF*uÍ1¨ &ë0*vÍ1° &3*wÍ1¸ &tA*xÍ1À &‡3*yÍ1È &,*zï1Ð &]*|ï1Ø &!A*}}Dà &ßG*~²è &™&*`ð &ù^*€1ü &öM*ˆû1ý &Ð\*‰û1þ &J*Ø1 &W,*‘Ø1 &ÉT*Ÿ` &f6* é1 &¦P*¢4 &L*¦Ø1( &ìL*¨é10 &Ÿ*­`8 &Ò5*®BI@ &%*¯BIH &ºK*³#`P &_B*¶ï1X &G*·ï1` &ø*º’4h &C*»)`p &ˆ*¼)`x &ÃY*¿Í1€ &R*ÀÍ1ˆ &ÁX*ÁÍ1 & =*ÂÍ1˜ & 2*ÃÍ1  &Õ *ÄÍ1¨ &—!*Æ“^° &ê*Èé1¸ &í?*Éé1À &FY*Ì‘È & *ÏùZÐ &A>*ÐùZØ &ô4*×ùZà &ˆ<*Ù[è &f7*Ü)[ð &b*ßP[ø &N*âï1 &®8*èï1 &5*ëé1 &Ò*ïï1 &Ÿ0*óÍ1 &G*õï1( &çL*÷/`0 &–^*ûÅ_8 &ø*ýC^@ &VT*1_ˆ &'[* 5` &›* y˜ &Ù**“Z  &0*";`¸ &x^*-0IÐ &È*/²Ø SV&O ê$Ù$sv+ç+% NA+è4 J9+èb1 I$+èb1 Å+é6AV&P 7%av+öx% NA+÷³9 J9+÷b1 I$+÷b1 Å+ø19HV&Q „%hv+ûÅ% NA+ü;: J9+üb1 I$+üb1 Å+ý¹9CV&R Ñ%cv+ñ& NA+ò+9 J9+òb1 I$+òb1 Å+ó©8J&S &k(+f&NA+8J9+b1I$+b1 Å+Ô:GP&T r&gpP, !' aV, Í1 Ÿ4, 9, ç;HGV&U -'gv+ìn' NA+í£8 J9+íb1 I$+íb1 Å+î!8IO&V z' io+À'NA+Î:J9+b1I$+b1 Å+A:H&W Í'L`)?ê'>)C†TÈU`)Ì“(")Í 1ž2)Î 1gJ)Ï @1N)Ð Q1ñ)Ò Q1<=)Ó Q1 8E)Ô ­St_)Õ B¨)Ö• B)× Q1(UA)ßaS0"<&Z  (  0-) ;- < —- ÎU ¥Q- @1 '^- q D5- 1 Ò*- • - Í1 EI- f(XPV&[ #) xpv +õj)ëC+öï18+öí;Ñ+ö²ó!+ö<&\ w)W(+ùÌ)ëC+úï18+úí;Ñ+ú²ó!+úA<eX+û¤; F"&^ Ù)š0+<*ëC+ï18+í;Ñ+²ó!+f<eX+ ¤; c2+ a;(d&b I* Ê\(. ˜* ëC. ï1 8. í; žH. • ]X. • Š9. Ø1 ~&c ¥* B /‡ç* ëC/ˆ ï1 8/‰í; ©@/в ú /‹²l&d ô*l0+4W+ëC+5ï18+5í;Ñ+5²ó!+5‹<eX+6¤; c2+7a;(Î&e d+ ;^h0 (, ëC0ï1 80í; Ñ0² ó!0çI îA0ï1 ÎF0 J( ÷0+J0 b0MJ8 880f@ ”0oJH 0Í<P ÞO0b1X Ù0°<\ TN0Q1`ä&h 5,@ˆ+^@-ëC+_ï18+_í;Ñ+_²ó!+_ß<eX+`¤; 3/+b8(N_+o=0?+q n8ï+r n@«>+s nHŒT+t fPêD+u ã1X-+v f`lW+w ã1hˆK+x fp¨ +y ã1xLH+z q€þ+{ 1<&i R-@- @- È- o!- \U ùW- \U '-- {U gR- \U &P- \U S\- ©U( ŒO- ÈU0 ,- \U8ANY&j Õ-(any&ÞÁ.)‰&ß 4) +&àÍ1)çR&áØ1)L"&âã1)„&ãé1)T#&äï1)ù(&åõ1)æ)&æf)&ç})]O&è Q1)'&é b1)7$&ê n)R.&ë )úS&ì ‘)ƒC&í û1)! &î ­1)WS&ï 2K&{ú.¾Y&||ZóS&}i’ &~ 4ã &l /ÅI0&j/‚9&‚‚Zl&ƒ ¡&„  &&…Zº&†|Z Š&‡|Z( &m w/u,(+bÌ/E+cé1Ìe+dñ=+e2Û+f2í.+gé1 ç&q Ù/ 8!10 Â1 • ‚)1&‹I œ.1' b1 G1( b1PAD&r +%?'&s 50 ­(1+„0 È$1, • Ý1-¹I ¯#1. • 01/BI /10 b1 D&t ‘0 ™ 01L1 ¯^1Mf ãJ1Mï1 z31MÅI 4G1Mb1 ©B1Mb1 ;1Mb1 ”W1My$ ?1M1( Ù1M1)I82ªSU82«-1I162¬f/1U162­9@1I322®yQ1U322¯Eb1*b1 n1ƒ1+x1¬U2Ùƒ1… 2< b1­14¢1DE&w 6?]&y ËÙ$Í1Í1Ø1!'+%x%¿ƒ!û1224‡2 ñ[Ø31ª3 Ëe33y Þ"36 f n37 f @O38 f 'F39 f °?3: f( ‘3; f0 ×3< f8 O+3= f@ X3@ fH 3A fP Ô3B fX B3DÃ3` ±X3FÉ3h DB3Hyp à!3Iyt 293J øx LI3M9€ Ç3NS‚ /3OÏ3ƒ fM3Qß3ˆ Z3Y  D,3[ê3˜  3\õ3  P[3]É3¨ Š3^ 4° |[3_ ­¸ Ú3`yÀ Á 3bû3ÄÊO4#2,§"3+@!¾3#2 qß3 L¶3A,å3 ð3 q 4 Lc5‰4ª3¢B5Š4G5‹4Î@6 y äL4+A4ó6L4Í@6 yò6L4’*7<4,-7>’4u4~7N¥4pF%874øA9¤ô4RS9§ Q199© f99ª õ1nA9« ã1øA9¯¶4-E+„u5.ô5.+.—/.1.Q.@&.A8. ). J.‡$ .b( .í .-% .K' .œ#.&.Y Y+™5HE+»Œ5he/ À5 ßK/$ 8 I /% ç; Q/)/PHEK+¼Ì5hek /-6 ÇB/.b1 T //Q1 nK/5Ï3+éƒ65"+éf‰!+én‹*+é%+é‹Ä(+éÍ1Ò(+é8gV+éØ1g%+é 8 +é8 +é8 vIÈ:š8 ëC:›ï1 8:›í; Ñ:›² ó!:›_> 5:œ=? øV:œT>( ¢8:œï10 KW:œb18 ç3:œ•@ %:œ•H }:œ²P ´R:œC?X ¨::œb1` ïR:œb1d —G:œ4h ï :œb1p P@:œb1t ð+:œI?x x:œ}€ :œfˆ 8.:œÍ1 5=:œ•˜ ]:œ•  :œ•¨ §/:œ•°®/:œE¸º>:œE ¸ •:œÍ<Àƒ685f&†4+î£85"+îf‰!+în‹*+î%+î‹Ä(+îÍ1Ò(+î8gV+îØ1g%+î 8 +î8 +î8ç*+ó+95"+óf‰!+ón‹*+ó%+ó‹Ä(+óÍ1Ò(+ó8gV+óØ1g%+ó 8 +ó8 +ó8W++ø³95"+øf‰!+øn‹*+ø%+ø‹Ä(+øÍ1Ò(+ø8gV+øØ1g%+ø 8 +ø8 +ø8<*+ý;:5"+ýf‰!+ýn‹*+ý%+ý‹Ä(+ýÍ1Ò(+ý8gV+ýØ1g%+ý 8 +ý8 +ý8˜*/+Î:)5"+f)‰!+n)‹*+)%+‹)Ä(+Í1)Ò(+8)gV+Ø1)g%+ 8) +8) +8(,/+a;)5"+f)‰!+n)‹*+)%+‹)Ä(+Í1)Ò(+8)gV+Ø1)g%+ 8) +8) +80…>+á¤;)*+â ‹).J+ã ï1)éE+ä •1)g\+å û10«X+èç;)K=+é n)^F+ê )^[+ë ç;)y +ì û1À50 _+ð<) +ñ <)£6+ò ²“(/+öA<)¨-+ö²)‰+öf/+úf<)¨-+ú²)‰+úf/+‹<)¨-+²)‰+f/+5°<)¨-+5²)‰+5f G+: b1Í<2Í<Å%½<Ì//+_=)¨-+_²)‰+_f/+l)=)|8+m)=)T+n 4] 4:=+/=,8;:= :€= Ìe:1 ¯: 1 UF: @1:K= ¨(:&Û= X:' • >$:( • F:) Í1 A:* Í1 Q:+ • ±€:-> éK:. 1 N3:/> Œ=> L WG::H> Y/:; •#end:< • -:C •WG:D>&T>:›>¨-:›²‰:›f 5h:«8? \V:¬®? ó :­ë? * :°)@ ³P:¸C@ ª:¹Y@ A^:ºy@( Ç:¼¤@0 ÞY:¾È@8 ‚:Àñ@@ `;:ÂAH Q:ÄC@P »Q:Æ:AX YV:È}A`>8?Û=H>vI:ƒ6 j :¢ƒ? 1I:¤ } ž:¥ƒ?•´B:¦[?1T>®?2Ó1b1•?1Q1ë?2Z>fff•Í14b1´?1f#@2Z>Í1äffn1#@‰?ñ?1Í1C@2Z>/@Y@2Z>I@y@2Z>]1Ó1_@™@2Z>]1Ÿ@å$™@@1Q1È@2Z>Ÿ@]1ª@1Í1ñ@2Z>Ó1Ó1n1Î@1Í1A2Z>Ÿ@n1÷@144A2Z>4Aj/A1T>wA2Þ1yõ1=?T>wAb1b1û1@A2P:h B3rex:i BœJ:j B8.:lÍ1:nf5=:o ² ]:p ²(:q ²0(9:r<83pos:s •@Ý :t 1HO?ªF:uƒA2 :| vB³F:}vB=:~³B‡:õB :€ f&B/x:§³Bþ/:¨ y€:© f3u:PEH|B"¸,ˆ:\õB¡ :]I&’!:^õBx&¾Y:^"õB€¹BŒC:3Bs:¥ Q12:Ç.CèU:ȳB2:Î pCèU:гBï :Ñ b1P@:Ò b1 3cp:ÓC2 :×ÀCèU:Ù³Bï :Ú b1P@:Û b1 3cp:ÜC*:ÞÀC€=2@:áwDèU:ã³Bï :ä b1P@:å b1 3cp:æCeA:è b18:é û1r :êwD 3me:ëÀC( :ì }D0:í b18Y:î @1<X:ï @1>@112@:ô EèU:ö³Bû:÷³B«A:ø$³B>:ùT>3cp:úC ±Z:ûC$&:üb1(3B:ýÀC0s:þf82:KEèU:³B.M: Q1ÈD: Q1 3me:ÀC2 : ŽEèU: ³B~: ³Bt:  Í1¸\: f2:§E3val: y28:,FèU:³Bû:³B3me:ÀC3B:ÀC3cp:C ¢: û1$+: y(°0:" y,É:# f02(:&˜FèU:(³B¼7:)³B3cp:*C±Z:+CÄ:, f!M:- Q1 Ú:. Q1$2`:1_GèU:3³B3c1:4 y3c2:4y 3cp:5Cï :6 b1P@:7 b1D:8 Q1°0:9 Q1 ¢:: û1$3A:;ÀC(3B:;ÀC03me:<ÀC8.T:=_G@—:>_GN 1oG L 2h:AEH,:B b13cp:CCï :D b1P@:E b1 3c1:F y3c2:Fy}I:G fž1:H f °0:I y(3min:J y,3max:Jy03A:KÀC83B:KÀC@.T:L_GH—:M_GV/h:«I)•C:ÀûB)³F: &B4yes:ÉC)w:Õ .C)/:ßpC)->:ðÆC)G:ÿƒD)i@: E)ÿ@:KE)Œ:ŽE)Á7:$§E)ÁV:/,F):?˜F)ÿ:NoG/:Q|B I#I L ¸,:_¹B‚,*ñK Û<>, f l5>- f “5>. ¼ ÐM>/ }ŒG€?HSL >?MSL$?VSL€$ƒ?[dL$ØC?buL$S?iqÿ$À*?n†L qdL5L quL5Lÿ q†L5Lþ q—L5Lÿw ¯YH@+M |@- f ©@. f õ@/‘ L@0‘ Ø@1‘ 6@2‘( €H@4‘0 ê@6‘8 #]@8L@6PAh àOUAjf'Ak ­€AqàO˜ Aufß'Av ­ ÑAy¯K(“AzfH¼PA{ ­PR A}æOXû,A„ß `;/Aˆf€â-A‰ ­ˆ!AŒìO'KAy˜h A“f A” ­¨@FA— °ßAA›fÈîAœ ­Ðd=AŸòOØ!CA¢yà1VA¦t è&}XAªf& A« ­&g*A®øO&"AµFK&ï#A¶fH&çSA· ­P&xA¹þOX&ÊAÀ. `&†8AÄf€&AAÅ ­ˆ&¸]AÈP&tAÏ—L˜&íAÐfà&ëAÑ ­è&‹+AÓ Pð&&AÚPø&Á&AÛ ­&rAÝP&»@AáP&Å Aâ ­&‘AäP &¾?Aìf(&—)Aí ­0&âBAðf8&—[Añ ­@&ç?Aô yHñK¯Kß  t FK. —L­  W1AõMõ1/&QP¿H/'Í1./( ­ ½Ø)  P *Y)! P ÀQ)"m Û/)# yÐ ÑY)$ û1Ô &)%@1ÖQP‚)(QPŒ)š¾P*D²²P9()'#QW)( õ1Ž)* …I3cv)+ Í<€A)- Q1–X). é1 3()3vQW)4 õ1Ž)6 …I3cv)7 Í<3gv)9 ã1N): ã1 A0)uØQW)v õ1S3)x Í1R;)y õ1X_)z Í13cv){ Í< «G)|ØQ(¦P/)ŒR4svp) Ø14gv)Ž ã12)’(R3ary)“ é13ix)” n2)–NRéF)— Q13ix)˜ n2)šuR3cur)› n3end)œ n2)žœR3cur)Ÿ Í13end)  Í1/)‘ÛR4ary)•R)¼)™(R)ÛI)NR)ÐQ)¡uR Z0)Š0Sy)‹ 0Si8)ÞQ²@)Í1ðG)¢œRc$)¤ …I(IIG)ÄaS¸X)Åõ1ÔA)Æ Í1/0)Ù­S)H)ÚÏP)L)Û#Q)e0)ÜvQ)M)ÝÛR)ª<)Þ6S¦ÅWX)ÿ†TdQ) 1Æ) 1¥!) @1d) Q1ñ ) • D) •ž") fs ) Í1 ±D)  Í1(£7)  f07)  f8T )  f@}$)  4H-!)T>P/`)@«T)2)Aê')ÂW)B³SSE0)Ú*U¹)Û é1ã )Ü*Ud)Ý0U N)Þ0U)ß Q1 Ä0)à Q1$û )á Q1(½$)â Q1,À'«Tü;)ç«T1y\U2Í1<CU1b1{U2Í1<bU1y©U2Í1<Í1ÞQ1U1yÈU2<4A¯U@- B V#valB ô4 0B f ™B Q1 ®B Í<+BÔU Õ+(BmV BmV ©&B Í1 16B f ßXB f ½B Í1 Vb,B VZ€B">Z 3B&>Z UHB'ô4 ;B(y ø B+y ï B-y ¼B.DZ +#B/DZ(#psB0DZ0 ÝDB4 Q18 «B5 Q1< ¸B6 f@ 10B7 fH áCB8 1P ë7B9 1Q —1B; 1R ’@B< û1S - B= Q1T œ%B> õ1X HB? õ1` øB@ Í1h Û)BA @1p ²6BB @1r ŸBC Q1t SBD Í1x S/BE Q1€ VBF Q1„ Í0BG ˆ [BH  Å]BIû1˜ ÁBJ 1™ C.BK @1š ò8BL Q1œ „EBM õ1  •BBN Í1¨ mBOJZ° ¬&BP Í1¸ 46BQ fÀ SXBT fÈ PXBU fÐ Ç)BV fØ ä]BW fà ÅBX fè ¦%BY fð s7B^ •1ø OFB_ @1ü A7B` 1þ $Ba 1ÿ$?Bb ï1$Ð,Bc 8$z]Bd é1$-"Bf PZ$ç$Bg `Z@$‚RBh 1T$<7Bi 1U$xEBj 1V$!Bk 1W$?JBl ­SX$j Bm ý `$[Bn •1`$×=Bo •1d$lMBrnh$î]Bsnp$ð$Btqx$Ú2Bvû1y7˜4BxEx7I&ByEx7¥BzE x79HB{E x$Ñ7B}û1{$ B~ 1|VVsV ô4`Z L Q1pZ LZBVÁ.|Z&ˆZ?&ÌZõ&2’!&$ÌZ¾Y&$ÌZ“Z=#&QäZÒZêZ1yùZ2À&R[ [[2Í1&SäZS&U6[<[1û1P[2Í1Ú&V][c[n[2 xy[+n[NO&uy[(Q&wy[c&yy[&{y[ã&}y[[&y[1 &ƒy[ÄN&…y[Ô$&ˆy[%@&Šy[ÚF&Œy[î*&Žy[ x*\ L\ž-&*\€0&’y[P&”y[í&–y[Ç:&˜y[‹R&šy[2&œy[ù>&žy[ð-&¡y[Š&£y[X&¥y[ç&ªy[c!&¸ *1u0&º *1s#&¼ *1 x] L@ò\"&¿]Ë%&Åy[ x1] Lÿ!] &Ú1]«&Û1]-&ÜL4 €h]+]]K&Ýh]™,&‹:=ÏO&Œ:=&:=n<&Ž:= -¹]+n$&·®]²&:= ÞÞ]+xT&Ó]J &–y[8ö3E&¡6^.Ý.T'.qR.û].øG.žC.„4*&¶L4íXH&F`^3pad&G`^ Ù$p^ L™3&P}^ƒ^“^2õ1J&a ^¦^1Q1¿^2Ó1Ó1…5&fãJ´&&gÙ^ß^1õ1ó^2õ1½&h}^•>&i __1y1_2f²)P§&l][Å&sh_3fn&t 23ptr&u 4vK&v>_È-Q16U#IIpZ f©_ Läy nÅ_ LÞh_b1 4ç_ L Í1÷_ L Í1` L 1` L ú.ï1P˜4)4 Í1K` L"­C& L1 &ªL16C’L4@C&L4 ¿^‰`+™LCÅ~` Ì^¡`+åCc–`È Cþƒ1 ;1Æ`+»`Ú6C Æ` L1ã`+Ø`DCC ã`•C y[6C Æ` *1a+a@DC a–8D&³1ˆ D(2rD-À1e.D1û1FD4û1>DKª4QDLª4‡1DX³1Z&D[¯_ŽZD\yùLD]yX4DanòBDe³1>Df³1¦DizD“³1 3D§³1 \D©y,7D®yBDå_ EDçï1gDè 0Dë³1ûDóÙ$ÿDùû1 -hb LÐ DúXbõC&4ßZ· &6ßZ äžb LŽbîOEƒžb M-¿b L¯bÀ E ¿b *1àb LÿÐb3&N àb 2ýb+òb©2&býb¤ &cýbí)&dýb‘&eýb”<&fýbvM&gýb/&Zsc4nv&Z‹4u8&ZxcPc 1ˆc L~>&Zsc/&[¸c4nv&[‹4u8&[xc•c,&[¸cFêpZBGDãcEÐG£leú.G¯ !jx0G´ @1Ð Gµ @1 WG¶ @1 'IG· @1$DG¹ Q1*Gº 8øG½;j B1G¾Pj($ G¿aj0 GÀ…j8 GÁ©j@(<GÂÈjHŸGÃãjPs\GÄkX9GÅ0k`ËBGÆJkhí<GÇskpVGÉ Í1x»GË2€!JGÍŽkˆmQGμkí GÏïk˜]GÐl ÕGÒ l¨¤TGÔBl°øRGØ Hl¸»GGxe ëMÀHØHç û1¦ üHè û1§ ” Hé 4¨ õ Hê û1° E Hë û1± ãEHïš}´÷0GHHf"< ÈH/˜g3comH0çiH3Û~À’NH4¨{ÈëBH5¨{ÐáH6á~Ø3fbhH7ç~à]H8yèK>H9 yìüH: yðœ6H=í~ø&1H> y&kXH? y&Q(H@€l&îHB y&'?HC ‘&j4HD û1 &/EHE€l(& HF y0&eHGó~8&} HH ù~@&½5HI yÀ&#HL û1ÄGJ¤g AG€¿g#comG€(i gXGYvh ÌeGZ b1 GG[ y ¯G\ @1 ý#G] ï1 ÷UG^ Í1 û&G_vh zG`2( î\Gb ï10 wGc Í18 À1Ge Q1@  Gf Q1D#pidGg b1H YGh|hP˜g×c!Gi¿g 8Gk÷h _ Gn Í1 ÂLGo Í1#ErrGp Í1 _Gq Í1 iLGr LGs b1( XGt Í10À GvŽh b Gy+i#stdGz‚h € G{÷hX ˜G‹ \i#stdGŒ‚h € G÷hX ´1GŽï11G+i ÀG‘ çi#stdG’‚h € G“÷hX è!G•y —:G–y” ’G—é1˜ ·cG˜n  [RGšé1¨ &;Gœ Q1° Ë(G 4¸\HGžhi!jÞyyyyyyyói1f;jÍ1²'j1vhPjÍ1AjajvhVj1Í1…jÍ1ÞÍ1Í1gj1y©jÍ1Í1yÍ1‹j1Í1ÈjÍ1Í1y¯j1é1ÝjÝjI.Awà&™I/Gwè&eDI0Ðsð&5SI1 Lø&ÝI2 L&™TI3 L&Œ^I4L&…-I5L&eTI6E &w!I7L(&-,I7L0&½I8E8&ÖBI9E<&I:E@&Þ\I;ED& I<EH&'I=uP&=)I>w@&®I? }oD&±I@û1H&D_IAû1I&_-IDMwJ&AIF ]w`&‘&IGmwh'thdIH 4p&GIM wAx&œ;IN 4€üM1Ó]o3IeEÈVIff XI€Ix$s ÖIIy f ¼2Iz f aI{ f ]I| f#dbI} f ë'I~ f(#defI f0 É I€L8 IL@ [*I‚EH W*IƒEL ÛQI„EP ×QI…ET Æ I†EX Ø?I‡E\ ÍRIˆE` ÌeI‰Ed ¯IŠEh ±MI‹El ¯IŒ˜lp œ;I 4xXIIŽr‚(I} &VI˜qs ¾YI™qs N3Iš 0s É I›LSI¥ L ™I¦EK#Ës¶ I§‰s:FEI©u.L6.%W.–.§.R.Î3.’.%(.¸O. .ÈP .÷- .Ã< . .wW.54.É.²I.e.â%.¸.ô%.Ñ .; . .†..;P.à,.&.#_.8.!.:* .!!.Z"".F#._/$.ÈL%.ÁS&.`^'.û(.O).#X*.€"+.Ö, 'ðIß½v hEIàE äIà!E òZIà/E eTIáE "IáE w!IâL -Iã f ~Iãf( ‰Iãf0 +Iã"f8#dbIã0f@ È"IäÂvH ö<Iå fP ÁFIåfX ºIå&f` 0Iå4fh Ô#Iæ fp 1)Iç fx 6#Iè f€ ²Ié fˆ AIê f ýRIë f˜ >IìL  P Iíû1¨ ²;Iíû1© vCIñ f° ] Ióû1¸ dIIö ávÀ I÷ wÈ ¸[Iø ­1Ð »Iù wØ ØVIú 4à œ;Iû& wèSJ½v1yáv5`Þ4Èv1yw4fEçvSw:“EIþ I‘˜l`ôI’û1dVI“û1e”I”û1fD;I•û1gœ;I– 4hÝyÝyãypo´xÍyzãyGw£oïytI—´x"ÎÀIœ¨{‰HIÐsJ?Iž²m cIŸ ux eI ¨{(’NI¡¨{0™I¢Gw8œ6I£Ös@x4I¤ƒs`[8I© È{h5SI« LpÝI¬ Lx¢$I­L€ÌeI®Lˆ[?I¯LI´E˜] IµEœJTI¶E ÖBI·E¤0I¸ˆx¨ I¹dL¬&xLIº`o¬&MI¼û1²&45I½û1³&¼RI¾-´&þ:IÀû1µ&IÅû1¶&œ;IÆÓ{¸ z1yÂ{Â{£oz®{2>Î{ÎIÇz €ö{ Læ{=èQNö{è¸ ¬ '=#Nö{xè?ó> N€’?N²€÷@æ:N´€?îN¶€ ?ÉN¸€ :%>EH‚!}..±.´=.×W.Y.i.ÔT.¥..‡U .§K .¯L .7 .ÿY . ).¶..¿J.8\.ÿ?.#/.r9.«.ó".¡.¶:Õ,EH¡š}.M5.¿8..¯+.à.q2."2.ü.ø1.Ò: .+] .z .0 .iG .ýQ.Æ-. Hì¾} ÎUHíE ïHîE ¬H÷æ} Ù'Hø Í1 ¯Hù yHú¾}/H~)WHHn)õSH—ÐXHP~òHò}É HLÒHq„IH~0HÎ~É HLÒHû1ÈHû1 N3Hf±MHyéWH— rHn(ûH]~Ù{P~Î~{xæ} é1  LAk[Xl ð!BcB p¢œ*ŒCËB 24ï*ïDcvB Í<ºï¦ïEÓG yFaxG Q1“ð‹ðGÿ@G Ø1ñðïðFspG Ø1$ñ"ñG¥G Q1JñHñH7 L Þ dœŸI9üF_pg 4ƒññI@9€F_pi 4¨ñ¦ñIp98€F_p 4ÍñËñI 9V€F_p 4òñðñIÐ9t€F_p‘ 4òòI:’€F_p“ 4<ò:òI0:°€F_p™ 4aò_òI`:΀F_p› 4†ò„òJ1pIKU çà KTsKQ dœKR \œKX VœJIpVHKUsKT `¥KQ  J_pVzKUsKT lœKQ Ð_JupV¬KUsKT €¥KQ pkJ‹pVÞKUsKT ¨¥KQ p\J«pV‚KUsKT È¥KQ p\JËpVB‚KUsKT ð¥KQ [JápVt‚KUsKT ƒœKQ 0ZJ÷pV¦‚KUsKT šœKQ PYJ qVØ‚KUsKT ³œKQ PWJ#qV ƒKUsKT ΜKQ 0VJ9qV<ƒKUsKT äœKQ `UJOqVnƒKUsKT úœKQ @QJeqV ƒKUsKT KQ @OJ{qVÒƒKUsKT +KQ €LJ‘qV„KUsKT ¦KQ PIJ§qV6„KUsKT FKQ HJ½qVh„KUsKT ^KQ PGJÝqVš„KUsKT 8¦KQ PGJýqVÌ„KUsKT tKQ  FJrVþ„KUsKT `¦KQ  FJ=rV0…KUsKT €¦KQ pjJSrVb…KUsKT KQ  CJirV”…KUsKT ¤KQ AJrVÆ…KUsKT ¾KQ ð?J•rVø…KUsKT ÔKQ  ?JµrV*†KUsKT êKQ  ?JÕrV\†KUsKT žKQ À<JërVކKUsKT žKQ @bJsVÀ†KUsKT 4žKQ àJsVò†KUsKT ¨¦KQ €6J-sV$‡KUsKT MžKQ €5JCsVV‡KUsKT kžKQ 3Jjsc§‡KUsKT ŠžKQ p#KR dœKX „žKY0J‘scø‡KUsKT žKQ "KR dœKX !ŸKY0J¸scIˆKUsKT ·žKQ à KR dœKX ²žKY0JÎsV{ˆKUsKT ÍžKQ  JäsV­ˆKUsKT ȦKQ JúsV߈KUsKT ð¦KQ PJtV‰KUsKT æžKQ 0J&tVC‰KUsKT ŸKQ  JMtc”‰KUsKT #ŸKQ PKR dœKX  ŸKY0JctVƉKUsKT <ŸKQ  JytVø‰KUsKT §KQ pJtV*ŠKUsKT @§KQ  J¥tV\ŠKUsKT QŸKQ J»tVŽŠKUsKT h§KQ `JÃt  ¦ŠKUsJÕt  ¾ŠKUsLu÷ŠKU nŸKT^KQÐKR]KX˜KY˜Jup!‹KUsKT zŸKQ2J,u}?‹KUsKQ˜J@upi‹KUsKT ˜ŸKQ2JPu}‡‹KUsKQÀJdup±‹KUsKT ¶ŸKQ2Jtu}ЋKUsKQ ÈJ|u  è‹KUsM„uŠN”u–ŒKUóUO¢u£KU „P›_ð `"œCËð 2±ò©òDcvð Í<óóEÓò yFspò Ø1•óóFaxò Q1æóàóGÿ@ò Ø17ô/ôG¥ò Q1ÐôÈôIàŠFdbhö Í1{õyõGcø Í1¤õžõG# ÷õíõG¯n€öföG: Í1÷‰÷IéŽHf5L‘@JR°KU0KT!KQwJ^½—KUsJͽ´KUsKT1J½ÒKUsKTÀJ1ÊêKU|J?׎KUsKT|JÄ×2ŽKUsKT yKQ8Jõ½OŽKUsKTOJ ½lŽKUsKT2J,×–ŽKUsKT W›KQ1JL×ÀŽKUsKT ’šKQ1MaäOq£KU ”šJ×  KUsLàKU|Jtñ-KUsJz£LKU H JþoKUsKT}KQ2O£ KUsKT}Q{µGsa; zÞ÷Ú÷RÝ ‹‹ò êSî øøJ} KT šM‚%lePócÊ Þœ’CËÊ 2Gø;øDcvÊ Í<ÙøÏøEÓÌ yFspÌ Ø1PùNùFaxÌ Q1|ùtùGÿ@Ì Ø1ÞùØùT¥Ì Q1IÀ‘FsthÒ Í1RúNúUðG¾-î ÝjŠúˆúG# ï ³ú­úQJ 4‘Gsað zÿúýúQ  _‘Gsañ z%û#ûJå  w‘KUsLî‹‘KU}O;.KU}KT ÐKQ €‰KR 'yVÝ ”pÌ ë‘Sî KûIûOnKUóTKT pšPŒ`«  ºœÁ“CË« 2~ûnûDcv« Í<9ü/üEÓ­ yFsp­ Ø1°ü®üFax­ Q1ÞüÔüGÿ@­ Ø1SýMýT¥­ Q1Iu“Fsth³ Í1ÅýÃýUPG8Þ yîýèýQ/“Gsaâ z9þ7þQ ;“Gsaä z_þ]þQô f“Gsaæ z…þƒþMÛ ;VÝ ” À­ ž“Sî «þ©þOJKUóTKT pšPgˆ p#œ^–Cˈ 2ÚþÎþDcvˆ Í<pÿbÿEÓŠ yFspŠ Ø1FaxŠ Q1<4Gÿ@Š Ø1 ˜G¥Š Q180I€ÿ•FsthŽ Í1æàTc yT¼/‘ Ó1IÀÞ•G¾-È Ýj7/G8É y™“Wæ”TsaÏ zQJ•GsaÒ zäâQ<•GsaÔ z JÔ  T•KUsLÝh•KU~JïH‡•KU~KT}øJ4U±•KUsKT xšKQ0JCñÉ•KUsO‚½KUsWñ•TÌa¤ nMebW–Tsa¦ zVÝ t0Š ;–Sî 0.O“KUóTKT pšP\gc  ¡œT™CËc 2[SDcvc Í<ĺEÓe yFspe Ø1?9Faxe Q1’ŠGÿ@e Ø1ôîG¥e Q1jdI0טFsthi Í1ðìG¾-®Ýj,&Xbuf¯ T™‘€G# °yuQ' ‰—Gsa³ z²°Vû ð`¾ë—S ØÖS OoKUwKT1KQ@KR ||Rû SSÀY˜S +)S YWOnoKUwKT1KQ@KR Ù}J  q˜KUsL…˜KU~J7H¤˜KU~KT}øJ´×˜KUsKTwOÃñKUsQÊ™Gsaƒ z~|VÝ Ée +™Sî ¤¢M5%OAKT pš qd™ L?PSf' PÌœí›CË' 2ÏÇDcv' Í<<.EÓ) yFsp) Ø1æÚFax) Q1t l Gÿ@) Ø1Ü Ð G¥) Q1» ¯ IÐ}›Fsth- Í1¶ ² Fpos/ yô ì Gc1 yV P G¼/2 Ó1¨ ¢ I›G¾-Ýjù ñ Jí  žšKUsLö²šKU|JzКKT~ $ &J“‡îšKT~ $ &Oö.KU|KT4KQ ·šKR0I@K›TÌa\ nO ”KUsKT}J½þh›KUsKQ2OÖbKUsQX¨›Gsa^ zX V VÝ _) Ñ›Sî € | OKT ®šPCa  œùCË 2¾ ¶ Dcv Í<+EÓ yFsp Ø1ÕÉFax Q1e[Gÿ@ Ø1èÞG¥ Q1¨žI°‰Fsth Í1€|Gc y¸¶G¼/ Ó1éåIà;G¾-lÝj!J‘  KUsLš&KU}O¥¡KU}I tGÌa nJDO”KUsKT|ObKUsQá´Gsa" z žVÝ -p ÝSî ÈÄO!KT pšP®bï0ޜ՟CËï2 þDcvïÍ<œ’EÓñyFspñ Ø1Faxñ Q1?7Gÿ@ñ Ø1¡›T¥ñ Q1IÀ‰ŸFdbh÷Í1UðG# _ OKQê ûžGsa` z‡…Q§ &ŸGsaa z­«J…  >ŸKUsLŽRŸKU}OÛ.KU}KT ÐKQ €‰KR 'yVÝ 4pñ ²ŸSî ÓÑO KUóTKT tšP6eÐPºœˆ¡CËÐ2öDcvÐÍ<Á·EÓÒyFspÒ Ø186FaxÒ Q1f\Gÿ@Ò Ø1ÛÕT¥Ò Q1Ið<¡FdbhØÍ1MKU0G8O yvpQï× GsaS zÁ¿QÊ¡GsaU zçåQ´-¡GsaW z  M›;VÝ T Ò e¡Sî 31O KUóTKT tšP&c°Äœƒ£C˰2bVDcv°Í<ôêEÓ²yFsp² Ø1kiFax² Q1—Gÿ@² Ø1ùóT¥² Q1IÐ7£Fdbh¸Í1kiUG8> y”ŽWr¢TsaC zQ§¢GsaE zßÝQrÈ¢GsaG zJ]HߢKT0J‘U £KUsKT xšKQ0J ñ!£KUsOýKUsVÝ €² `£Sî +)OÔKUóTKT tšPÕa• ÏœV¥CË•2ZNDcv•Í<ìâEÓ—yFsp— Ø1caFax— Q1‡Gÿ@— Ø1ñëT¥— Q1I€ ¥FdbhÍ1eaU°G# 2 ›Q¾ …¤Gsa4 zÂÀQ °¤Gsa6 zèæJe   ȤKUsLn ܤKU}J¨ ½ô¤KUsO· ñKUsVÝ  0— 3¥Sî  Oß KUóTKT tšP|anà +œ®§CËn2=1DcvnÍ<ÓÅEÓpyFspp Ø1{ q Faxp Q1! !Gÿ@p Ø1u!m!G¥p Q1 ""I0i§FdbhvÍ1X"T"FstrxÍ1’"Ž"G¯zÍ1Ì"È"U`Gêf$ Í1##G# & +#'#Q”!Ÿ¦Gsa' zc#a#Qé!ʦGsa+z‰#‡#JW!  â¦KUsL`!ö¦KU}J…!./§KU}KT ÐKQ €‰KR 'yJÎ!®S§KU}KT~KQOÞ!ñKUsVÝ ñ ðp ’§Sî ±#­#O "KT ÌšPnf>"Xœ,ªCË>2ó#ç#Dcv>Í<…${$EÓ@yFsp@ Ø1ü$ú$Fax@ Q1(% %Gÿ@@ Ø1Š%„%G¥@ Q1&ú%I൩FdbhDÍ1ˆ&‚&GcFÍ1Õ&Ñ&I  ©G8û y' 'G/EÄ„'~'G# ×'Í'Q©"û¨GsazH(F(Ji"  ©KUsLr"'©KU~Jš".`©KU~KT ÐKQ €‰KR 'yMÌ"»MÛ"ÈJ<#Õ’©KU~MP#ÈO#ñKUsQ#à©Gsaizn(l(VÝ "@ ªSî ”(’(Oh#KUóTKT tšP¸d.p# œ¶CË.2Ë(·(Dcv.Í<¦)œ)EÓ0yFsp0 Ø1%**Fax0 Q1«*™*Gÿ@0 Ø1}+s+G¥0 Q1_,K,I°еFdbh4Í1K-=-Gã<6Í1.ê-G€ 8Í1// /U0 Y# þ¨0„0Yè!ÿy222G8yª3–3Ge¶š4„4Hœ6í~‘¨G#Í1´5†5Gi+y˜7”7HëG ²‘°Gâe fØ7Î7GëB fW8Q8HÔd y‘¤G— y¦8 8G>  y9ó8GK> y~:8:Güy’=d=GÛ~Œ?r?G’N¨{¿@¡@WЬTsazW¬TsazIÀ Ö¬Fresí~ÿAûAM¤$âMÐ'ïIð g®Fsvp+ Ø1CB5BJ*(ü)­KUvKQ ÇwKRDKX KY0Jñ(ü^­KUvKQ ÆzKR5KX KY0J^1 {­KUvKQ0J1ü±­KUvKQ ‡KR%KX KY0Jú1 έKUvKQ2JÀ2 æ­KUvJc3£®KU   KQ šžKRsJu3@®KUvKT~KQ0KR2OŽ3KUvKT‘¸~KQ0KR2Wy®Z_p> 4Q_$ ¤®GsaEzÜBØBIP"]¯Fir yCCI€"9¯GQYxyBC:CGÕ&yÍ1¦C¢CJc0¯KU}KT~KQ‘ø~KR2Ox0 KU}KT~O†/#KU ‘à~” $ &KTpI "•¯Ferr¬ Í1àCÜCOM2þKUvKQ2Që,dâ¯Fi¼ y"D DO-#KU ‘à~” $ &4$KT@VÀ v%Ð!> °SÑ LDFDJ$  #°KUvL$9°KU‘¸~JH$ÕS°KU‘¸~M¹$0Jv%=ˆ°KT Ø KQ‘à~”J¬%ü¾°KUvKQ Ï}KR9KX$KY}M3&IJB&Êå°KU‘à~JT&V±KU‘è~KT‘à~J&cB±KU‘¸~KT0KQ‘ð~KR‘è~KX0KY‘¤M½&ïM$'âM6'ïMK'0Mk'pJ„'=¢±KT àšM'}MŸ'pM®'äJÀ'.ï±KU‘¸~KQ|KR}JM). ²KU‘¸~J¯)üA²KUvKQ Ï}KR9KX$KY‘À~J]*Šu²KU‘¸~KT}KQ~KR‘à~”KX0JÃ*UŸ²KUvKT xšKQ0J×*ñ·²KUvJ÷*½Þ²KUvKT ‘è~” $ &J?+—ø²KU‘è~J…,ü-³KUvKQ Ï}KR9KX$KY0J¤,W³KUvKT}KQ‘°KR2Jv-Š–³KU‘¸~KT}KQ~KR‘à~”KX‘È~KY‘è~J”-¤°³KU‘È~J¨- гKUvKT‘À~J¿-Õê³KU‘¸~JÙ-±´KU‘è~Jñ-¾´KU~Jü-Ë4´KU~J.±L´KU~J..r´KU‘¸~KQsKR|J!.—Š´KU~M4.ïJH. ¼´KUvKT‘À~KQ0J‚. á´KUvKT‘À~KQ2J /Êû´KU‘à~J/VµKU‘è~KT‘à~JÇ0c_µKU‘¸~KT‘à~”KQ‘ø~KR‘è~KX‘ð~KY‘¤Mè0¤O1 KUvKT‘À~QÚ*µµGsa9z—D•DVÝ ›#€0 ÞµSî ½D»DM 3%O3KUóTKT x ¾}P<`3ðœh¹CË2ìDàDDcvÍ<~EtEEÓyFsp Ø1FóEFax Q1çFÝFGÿ@ Ø1\GVGG¥ Q1ÒGÌGI#¹Fdbh Í1WHQH[resÜí~®H H[curÝ 0sGICIY# ߇I}IQ-4?·YsaázøIöIJí3  W·KUsLö3k·KUJ4.¤·KUKT ÐKQ €‰KR 'yJZ4Ø»·KT0Jn4åÓ·KU}J4åë·KU}JŸ4ʸKU|J­4×!¸KUsKT|J¸4ñ9¸KUsJÄ4òQ¸KU}JÑ4ïi¸KU}Jð4Õ¸KUJ5ؘ¸KT0M5}M)5pM85äJH5.ã¸KUKQ|KR}JX5åû¸KU}Oi5ÿKUsKTvKQvVÝ ¬3À" E¹Sî JJO€5KUóTKT tšP>dá€5õœ‰»CËá2MJAJDcváÍ<ßJÕJEÓãyFspã Ø1VKTKFaxã Q1‚KzKGÿ@ã Ø1äKÞKT¥ã Q1I°#=»FdbhéÍ1XLTLUà#Y# Ð’LŽLQ6hºYsaÑzÊLÈLQT6’ºYsaÔzðLîLJÕ5  ªºKUsLÞ5¾ºKU}J6.÷ºKU}KT ÐKQ €‰KR 'yJ36 »KU}J>6'»KUsOM6ñKUsVÝ „5`#ã f»Sî MMOu6KUóTKT tšP»f@€6:œuÂCË@2IM9MDcv@Í<þMôMEÓByFspB Ø1NsNFaxB Q1.O OGÿ@B Ø1ÍOÃOG¥B Q1PPIP$ÂFdrhHÍ1KQ7QFdbhJÍ16R.RGKcLf¤R’RG.BNfqSiSG-OfÛSÕSGeTPf2T*TG~Qf˜TTG‰RfúTöTI $UÁA c] sw‘°vY8^yœsÆCËô2ŠY‚YDcvôÍ<÷YéYEÓöyFspö Ø1¡Z•ZFaxö Q17['[Gÿ@ö Ø1÷[é[G¥ö Q1ð\è\IÆFdrhüÍ1R]L]G-þ f£]›]GeTÿ f^ÿ]G~ fl^d^G‰ fÌ^Ê^Ið›ÅA c7 sw‘°vY0=9 ux÷^ï^I0tÅ[cur=0sW_S_[res>í~—__JIØ ÄKU~KT0J]å!ÄKU}Jpå9ÄKU}JÊQÄKU|J×oÄKUsKT|J¨ñ‡ÄKUsJ´òŸÄKU}JÁï·ÄKU}JÉÏÄKU~J˜}çÄKU~J£pÿÄKU~J®äÅKU~J¾.;ÅKUKQ|KR}JàåSÅKU}OñÿKUsKTvKQvO/€KUKT‘°vKQ0KR~J·ÅKQ0KR2J/ÙÅKUsKQ0KR2JXûÅKUsKQ0KR2OƒKUsKQ0KR2VÝ `ö CÆSî ``Mþ%O KUóTKT ØŸP¦aÞ@bªœÆÈCËÞ23`+`DcvÞÍ< `’`EÓàyFspà Ø1Ja>aFaxà Q1ÞaÐaGÿ@à Ø1…bybG¥à Q1ccWcI@5VÈGÖIäfadYdZargæfGcè —Ád½dG¼/éÓ1ýd÷dI6¨ÇG gí ‹JeFeO›d§KUsKTv^‚ ïbp5'ýÇ_Ÿ S“ ˆe€e`« À5ïÇa¬ úeäeMôb´JÕbÈKUsKQ0KR2JßcAÈKUsKQ0KR2OøcbKUsQ‡cÈGsaïzÝfÛfVÝ Mb5à ªÈSî ggOêgKT Ž›Pñ_©À<UœËCË©2Cg;gDcv©Í<¬g¢gEÓ«yFsp« Ø1'h!hFax« Q1xhrhGÿ@« Ø1ÇhÁhG¥« Q1?i7iIP&9ËFsth±Í1êiäiG¾-3Ýj;j3jI &þÉXlna6²‘@Jž==ØÉKT `¡OÓ>KUsKT|KQwKR2IÐ&8ÊGk9> vh›j—jO?£KU @ŠI'«ÊG# C ×jÑjIP'ÊGk9Lvh%k!kO?£KU @ŠO›>ÀKU|KT~J-=  ÃÊKUsL6=×ÊKU|J@>=öÊKT  ¡Jˆ>ÌËKU|KT~O²>KUsKT|KQ0KR2VÝ é<&« bËSî ^k\kJë>ËKT pšMð>%Pd ?Åœ•ÍCË2‰kkDcvÍ<òkèkEÓ‘yFsp‘ Ø1mlglFax‘ Q1¿l¹lGÿ@‘ Ø1mmG¥‘ Q1„m~mFix’Q1 nnW\ÌZ_p’4IÀ'%ÍFsth–Í1fnbnG˜R˜Í1 nœnG¾-%ÝjÜnÖnG & Í1)o%oJˆ?  ÑÌKUsL‘?åÌKU|J¢?Ø ÍKU|KTKQ~\×?KU|KT~KQ0Q¯?PÍGsa¤zao_oVÝ 1?€'‘ yÍSî ‰o…oOå?KT 1›Pßdtð?œŸÏCËt2Ço¿oDcvtÍ<0p&pEÓvyFspv Ø1©p¥pFaxv Q1çpápGÿ@v Ø16q0qG¥v Q1¬q¦qI0(/ÏFsthzÍ12r.rG˜R|Í1lrhrG ~Í1¦r¢rG¾-ÝjärÜrJj@  ±ÎKU~Ls@ÅÎKU}Jž@äïÎKU}KTKQvKR|L´@ÏKU}KTvKQ0KR|Oó@ KU~KT|QÇ@ ZÏGsaŠzBs@sVÝ û?ð'v ƒÏSî jsfsOAKT <›PÍ_FAŒœ¾ÒCËF2°s sDcvFÍ<et[tEÓHyFspH Ø1ÜtÚtFaxH Q1uuGÿ@H Ø1WuOuG¥H Q1õuçuI°(GÒFsthLÍ1vŠvGõNyãvÙvG‚ZP‘fw\wFlenR‘íwßwGQTÍ1–xŒxG XU‘ yyIð(ÜÑG¾-ÝjpyjyJ@B  ÑKU~LIBÑKU|JwBðNÑKU|KQ‘¤”KR‘¨KX‘°KY}JæB  fÑKU~LïBzÑKU|JCü—ÑKU~KT0J Cñ¯ÑKU~JC ÇÑKU~O"CñKU~JÍBþùÑKU~KQ2J=CþÒKU~KQ2JZCþ-ÒKQ2O}CþKU~KQ2Q‰B rÒGsaoz½y»yVÝ A`(H ›ÒSî ãyáyO”CKUóTKT Ø¡Pe# CœëÔCË#2zzDcv#Í<¤zšzEÓ%yFsp% Ø1{{Fax% Q1s{k{Gÿ@% Ø1Õ{Ï{G¥% Q1K|E|I){ÔFsth)Í1Ó|Í|Gc+û1}}G¾-æÝjN}H}G# çŸ}—}WÕÓTsaê zIÐ)ÔGk9ï vh~ü}O¶D£KU @ŠQHD:ÔGsað zN~L~JûC  RÔKUsLDfÔKU}OkDÀKU}Q‡D¦ÔGsaAzt~r~VÝ ­C@)% ÏÔSî œ~˜~O¥DKT pšP°`ùpjœ¾ÖCËù2Þ~Ò~DcvùÍ<tfEÓûyFspû Ø1€€Faxû Q1®€¦€Gÿ@û Ø1 G¥û Q1ª¢I°7ZÖFsthÿÍ1>‚8‚Gß`Í1›‚“‚G±cÍ1ÿ‚ù‚Q k%ÖFtmp× Í1JƒHƒO1kßKU ¥KT3býjFtmpÜ Í1oƒmƒM kz Ið7yÖGsaz–ƒ’ƒVÝ {jp7û ¢ÖSî Òƒ΃OpkKT ȤPk`Ù F'œÚØCËÙ2„„DcvÙÍ<y„o„EÓÛyFspÛ Ø1…î„FaxÛ Q1ê…ä…Gÿ@Û Ø19†3†G¥Û Q1±†©†FixÜQ1\‡V‡W‹×Z_pÜ4IÀ*•ØFsthâÍ1´‡²‡G¾-ÂÝjÙ‡ׇFavà é1ˆü‡I+TØFiÆ ybˆ`ˆG—:Ç yŠˆ†ˆWØZ_pÇ4JG3ØKU|KTvO6GÿKU|KTsKQsJ~F  lØKU|L‡F€ØKUvO’F#KUvVÝ =Fp*Û ¾ØSî ˆÀˆOGGKT pšP‚gÃPG³œâÚCËÃ2íˆåˆDcvÃÍ<V‰L‰EÓÅyFspÅ Ø1ωˉFaxÅ Q1 ŠŠGÿ@Å Ø1\ŠVŠG¥Å Q1ÒŠÌŠFixÆQ1Z‹T‹W§ÙZ_pÆ4QGUkÚFsthÊÍ1±‹¯‹G¾-µÝjÖ‹Ô‹Fav¶ é1û‹ù‹J¡G  ÚKUsLªG&ÚKU}JµG#>ÚKU}JÌG VÚKUsO×GñKUsQâG–ÚGsaÔz ŒŒVÝ ]G0+Å ¿ÚSî FŒDŒOHKUóTKT pšPa>H:œAÝCË>2uŒiŒDcv>Í<ýŒEÓ@yFsp@ Ø1~|Fax@ Q1²¢Gÿ@@ Ø1fŽ`ŽG¥@ Q1ÞŽÖŽIÐ+ÊÜFsthDÍ1@:G¾-wÝj‘‰G8xnõíQIüÛGsa{ z[YJiH  ÜKUsLrH(ÜKU~J‹HýUÜKU~KTKQvKR‘¼”J¥H/sÜKU~KTJèH½‹ÜKUsJ÷Hñ£ÜKUsO9IUKUsKT xšKQ0QÂHõÜGsaZzVÝ H€+@ ÝSî §¥OJIKUóTKT P›PAbPI*œ áCË2ÒÊDcvÍ<;‘1‘EÓyFsp Ø1²‘°‘Fax Q1Þ‘Ö‘Gÿ@ Ø1D’:’G¥ Q1þ’ö’I`,–àFsth Í1b“\“GÕ&Í1·“«“G¦gÍ1R”L”G§/n©”›”GØ,Í1W•G•Gcû1–ÿ•I ,|àGýHXn5–+–G¾-YÝj²–¨–GÙ'Z Í13—)—Ið,¦ßFsvphØ1¤—¢—J:Kü ßKUsKQ ³~KR4KX KY0JÝKþ'ßKUsKQ2JOL£YßKU   KQ ;KRvJaLßKUsKTKQ0KR2OxLKUsKT}KQ0KR2JþI  ¾ßKUsLJÒßKU}JŠJ;àKU}KT‘°KQ‘¨KR~KYJ›K $àKUsKT~JÃKþAàKUsKQ2JóK£`àKU @¢OL£KU x¢OvKþKUsKQ2Q¦JÁàGsa9zÉ—Ç—VÝ TI, êàSî ï—í—OLKUóTKT ¢P“dÕ€L³œ—äCËÕ2˜˜DcvÕÍ<ƒ˜y˜EÓ×yFsp× Ø1ü˜ø˜Fax× Q1<™4™Gÿ@× Ø1 ™˜™G¥× Q16š0šI€-'äFsthÛÍ1…ššGÕ&ÝÍ1ÞšΚGÙ'ßÍ1”›Ž›GØ,áÍ1í›Ý›Gcâû1˜œ–œUÀ-GýH9nÊœœG¾-:Ýj7)I.DãFsvpCØ1ÖÔJJNü¨âKU~KQ ³~KR4KX KY0JNþÅâKU~KQ2JO£÷âKU   KQ ;KRsJOãKU~KTKQ0KR2O1OKU~KT}KQ0KR2JM  \ãKU~LMpãKU}JuM;¤ãKU}KT‘¸KQ‘°KR|KYJ¸M  ¼ãKU~LÁMÐãKU}JÜM îãKU~KT|JƒNþ äKU~KQ2O¸N KU~KT|Q‘MRäGsazûùVÝ ‹L@-× {äSî #žžOÉNKT ¨¢P^d]@OúœCçCË]2ažYžDcv]Í<ΞÀžEÓ_yFsp_ Ø1tŸlŸFax_ Q1ÜŸÔŸGÿ@_ Ø1@ 8 G¥_ Q1Ö РI .ÓæFsthcÍ1%¡¡Gã<eÍ1t¡n¡GØ,gÍ1Å¡½¡Gchû1$¢"¢Uà.G¾-ðÝj^¢N¢JÁO  ÍåKUsLÊOáåKU}JPGÿåKU}KR~J[P  æKUsLdP+æKU}JŽPSæKUsKTKQ0KR2JQ£…æKU   KQ "KRvJ!Q­æKUsKT~KQ0KR2O8QKUsKT}KQ0KR2Q4PþæGsa}z ££VÝ QO`._ 'çSî 2£.£OÐPKT ТPybÐ@Qœ¢ëCËÐ2p£h£DcvÐÍ<٣ϣEÓÒyFspÒ Ø1T¤N¤FaxÒ Q1«¤Ÿ¤Gÿ@Ò Ø13¥-¥G¥Ò Q1«¥£¥Ip/EëFdbhØÍ1V¦P¦G# †§¦Ÿ¦IÀ/{èXlna‰²‘@JR=UèKT `¡OÃTKUsKT|KQwKR2Ið/šèGk9‘ vh§§I 0ÔèGk9® vh*§(§O_U£KU @ŠJ§Q  ìèKUsL°QéKU|JÎR=éKT  ¡JûRS=éKU|KT}JS_[éKU|KT}JSSkyéKU|KT}JrS¡éKUsKT|KQ0KR2J¿SüÖéKUsKQ Y›KR4KX0KY0JÿSü êKUsKQ Y›KR4KX0KY0JT-êKUsKQ0KR2J@TübêKUsKQ ^›KR@KX0KY0J‚Tü—êKUsKQ ^›KR@KX0KY0J–T¹êKUsKQ0KR2JªTwÞêKU ð¢KQ~JóTüëKUsKQ Y›KR4KX0KY0O+UüKUsKQ ^›KR@KX0KY0VÝ fQ0/Ò nëSî O§M§JIU”ëKUóTKT tšMNU%Pñf¹`UÅœ‚íC˹2z§r§Dcv¹Í<ã§Ù§EÓ»yFsp» Ø1^¨X¨Fax» Q1°¨ª¨Gÿ@» Ø1ÿ¨ù¨G¥» Q1u©o©I0íFdbh¿Í1û©÷©G˜RÁÍ15ª1ªG# zqªkªG { Í1¾ªºªJÈU  ¾ìKUsLÑUÒìKU|JâU„öìKU|KTKQ~\VKU|KT~KQ0QïU=íGsaËzöªôªVÝ qUP0» fíSî ««O%VKT o›P;fž0VœŒïCËž2\«T«DcvžÍ<Å«»«EÓ yFsp  Ø1>¬:¬Fax  Q1|¬v¬Gÿ@  Ø1ˬŬG¥  Q1A­;­I1ïFdbh¤Í1Ç­íG˜R¦Í1®ý­G ¨Í1;®7®G# ly®q®JªV  žîKU~L³V²îKU}JÞVÜîKU}KTKQvKR|LôVïKU}KTvKQ0KR|O3W KU~KT|QW GïGsa´z×®Õ®VÝ ;VÀ0  pïSî ÿ®û®OAWKT z›PÍb}PWùœ,òCË}2=¯5¯Dcv}Í<¦¯œ¯EÓyFsp Ø1!°°Fax Q1r°l°Gÿ@ Ø1Á°»°G¥ Q17±1±I`1¯ñFdbhƒÍ1¿±¹±Gc…û1 ²²G# SX²P²QïX¦ðGsaU z¶²´²I 1.ñXlnaZ²‘°Gå`[fâ²Ú²JAXwñKU £KQKX @£OYKUsKT~KQ‘°KR2IÐ1hñGk9avhd³`³OIY£KU @ŠJ¿W  €ñKUsLÈW”ñKU~OSX_KU~KT|Q³XÚñGsa™zœ³š³VÝ {W01 òSî ³À³M,Y%O8YKT tšP“bgPYÑœòóCËg2í³å³DcvgÍ<V´L´EÓiyFspi Ø1Í´Ë´Faxi Q1÷´ñ´Gÿ@i Ø1Fµ@µG¥i Q1¼µ¶µI`2{óFdbhmÍ1B¶>¶Gcoû1z¶x¶G# G¬¶¤¶J¥Y  3óKUsL®YGóKU}JÇYS_óKU}O ZwKU УQãY¦óGsaxz · ·VÝ TY2i ÏóSî 1·/·O!ZKUóTKT tšPbQ0ZÑœ¸õCËQ2\·T·DcvQÍ<Å·»·EÓSyFspS Ø1<¸:¸FaxS Q1f¸`¸Gÿ@S Ø1µ¸¯¸G¥S Q1+¹%¹Ià2AõFdbhWÍ1±¹­¹GcYû1é¹ç¹G# ;ººJ…Z  ùôKUsLŽZ õKU}J§Zœ%õKU}OëZwKU ¤QÃZlõGsabzzºxºVÝ 4Z2S •õSî  ºžºO[KUóTKT tšPe[\œñ÷CË2˺úDcvÍ<<»*»EÓyFsp Ø1 ¼¼Fax Q1q¼k¼Gÿ@ Ø1¼º¼G¥ Q1Z½R½I`3÷FdbhÍ1ɽýGë'Í1¾¾Gz&Í1k¾a¾GaÍ1å¾ß¾GõÍ15¿1¿G€ Í1m¿k¿bÑ[KG# /’¿¿Fret0 Í1·¿µ¿Jè[  9÷KUsLñ[M÷KU|O\¨KU|KQKR‘¸KX‘°KY‘¨Q\¬÷GsaKzܿڿVÝ ![3 Õ÷Sî ÀÀOZ\KT 0¤P7gp\^œ%üCË2JÀ:ÀDcvÍ<ÁûÀEÓ’yFsp’ Ø1“ÁeÁFax’ Q1ÇÃGÿ@’ Ø1ûÃïÃG¥’ Q1ÈÄÀÄFix“Q16Å$ÅQ·\ÖøF_p“4ÆÆIà3ÿûYÁcÅ y”Æ„ÆY¾-ÆÝjžÇÇ[sthÇ Í1CÈ3ÈY†eÈ é1ûÈëÈQá\lù[mgË<¥É£ÉOð\´KTPW~ù]saÖ'zWù]saÖ@zW¢ù]saß'zW´ù]saß@zQÃ]ÞùYsaå#zÊÉÈÉQT]úYsaål´‰þKTPJJl  ¡þKU~LSlµþKUvJrlýáþKUvKT‘¸KQs~KR}J•l/ùþKUvJ¹lz )ÿKUvKT~ÄKQ‘°eL~¸Jqmü^ÿKU~KQ NœKR7KX KY0J°müÿKQ @œKR5KX KY0JBn ªÿKU~KQ0J‘nüßÿKU~KQ FœKR7KX KY0J¸o üÿKU~KQ2JÏo KU~KQ0Oéo KU~KQ2Ià8RGsa‹ziÐgÐdÝ tk 8P Sî ÐÐPfcÐ_hœ4CË2ºÐ²ÐDcvÍ<#ÑÑEÓ yFsp  Ø1žÑ˜ÑFax  Q1ïÑéÑGÿ@  Ø1>Ò8ÒG¥  Q1´Ò®ÒI4«Fdbh$Í1:Ó6ÓG.B&Í1tÓpÓG8b(Í1²ÓªÓG‰*Í1ÔÔTØ,,Í1Gc-û1PÔNÔUÀ4Y# t~ÔzÔflnav ²‘°[uw f¾Ô¶Ô[px f"ÕÕJg`  KUsLp`KU}JaÎ7KU}KT‘˜JÉa_KUsKT~KQ0KR2JòaƒKUsKQ‘°KR2ObKUsKTKQ‘°KR2QaÖGsaIzqÕmÕRÝ ÿ_ÿ_  Sî «Õ©ÕM,b%O8bKT ˜¤g…fÈ pœ/hËÈ2ÔÕÎÕicvÈÍ<$Ö ÖjÓÊy[spÊ Ø1gÖ]Ö[axÊ Q1ÝÖÙÖYÿ@Ê Ø1××Y¥Ê Q1n×j×^Ý 2 €Ê ûSî Í×Ë×Jq ½KUsKT õ;O„ ñKUsk*aZÍ1ílsthZÍ1mß`Z'Í1m±cZ2Í1]Ë\2]¾-]Ýj]\c^ Í1Wš]Íd`ín]é_fn] egé1]°dhé1WÐc_ph4n]er é1nc_pr4 qý Lbo÷d4y Ôœßisth4Í1Øð×h¾-4(ÝjçØߨh¥45Q1TÙFÙiax4@Q1ùÙñÙYË92^ÚXÚ[i: y¯Ú§Ú[idx; Í1ÛÛQ@¯ýAÍd?í‘Ð~[svpAØ1JÛHÛQå [hvCï1oÛmÛOíÚKU~pû „„+F‘S ”Û’ÛS ÄÛÀÛO¯oKUsKT1KQcKR  KXvJhüÆKU~KQ p|KR;KX KY0\ÜKU‘À~KT|KQ |šKR ÿKXsKY0IpYÙ'MÍ1ÜýÛJ¾}>KU~KTvKQsJÛ;tKU‘À~KT|KQvKR}KX0KY0O  KU~KT}M^çJ€½¹KU~KT0J‹ñÑKU~Mô%qdbÍ1ÀD]œ  hScf?Ü7Ühe*y¦ÜžÜYË2 ÝÝ[xxx 4ZÝTÝ[spØ1»Ý§Ý[axQ1¦Þ¢ÞYÿ@Ø1àÞÞÞY¥Q1ßß[i yWßKß[sv Í1æßÞßr$D y]vhI@* Yâc"{_XàRàOFôKUs^Ý èD*7 Sî ¥à¡àMâDçJ E  \ KUsJ¿E KUsKTvKQ2OþEÿKUsKT|KQ|ojTzlSœ‚ hË2ëàÛàI [ [cvÍ<á™áQ3 [_p4×áÓáJ.? KT  vKQ0OS£KU ȃsp KUóUtGKUóUk®a—¸ mÖI$flarg0fncn fuðaùksg£Í1Ý lsv£Í1k.bQ1û mË 2v‹"y& l__s"lmB"é9v”_~fP mÁD~lme'~évà Xfz mÁDXlme'Xéw/ðgvœIS@ââSX‡âuâ_LadTãNãap£ããa|îãìã`š@6u a›ääa§¥ä¡äa³åäÛä`¿6` aÄ^åTåJhF KUsKT;OuiKUsKT;`Ðà6ã aÑÏåÍåJ¾i(˜ KUsKQJÉi° KUsJ×i4Î KUsKT~O jKUsJŸi@ KUsKT~Jði# KU|KT}J(jþB KUsKTvKQ2J;j` KUsKT~OFjñKUsxˆ°hxy‘Ð~^û °h 7aÌ S ôåòåS ææ\iKU|KT}KQ |šKR ÿKX‘Ð~KY0M%hçJ0h  'KUsL9h;KU|Mfj%z”a”aO®zì`ì`O/ zÁeÁeO2 z¡¡OÑz[+[+Oå {HHP zW`W`O­z¥'¥'OôzZeZeI z$$Oúzÿ\ÿ\Qz‡‡O z¦ ¦ I»zC\C\O zYYYYOŒ zq@q@OÍz'f'fOb|ú[ú[zHr zä@ä@H¡z66H zÎ)Î)O z*`*`Oz }¿µSzÒeÒeIz¦f¦fIz÷e÷eOè z²"²"Hz^^Hšz××IºzÔ`Ô`I z;_;_Hž zÁ5Á5IÕz·T·TIzLLO”z2A2AO~ zIRIRO› zÂ+Â+O z/-/-I  {¯%¯%7ñz00Iáz^N^NIâ zÕÕHz``I¼zrLrLI½z(1(1HwzTDTDIòzllO¡ zFUFUIúzìIìIIüzêêIûz½a½aIzö7ö7I®zÞNÞNIzccOn zH™zEEOÑ~žCREATE DATABASE zµ7µ7R~žDROP DATABASE }bbSzFFIÓ z*P*PR3 z°V°VH›zgSgSI zÔcÔcIü zbabaOî {ÿ`ÿ`!% {0L0LP3 {ŸVŸVP4 {EQEQP8 { T TP7 {é;é;P5 z??Oâzs>s>OÌzÝfÝfOÞ{X]X]P1 {P. {™™P; {xQxQP* {$$P" {2Y2YP# {Á/Á/P$ zVVO1{  P& {¡,¡,P% {44P! {W)W)P'z1d1dO¼z``O<{**P z ` `OzS%S%T`zccO¬zydydOz""O­z¤¤Oï{êeêeOÆ{OÎ{rereO°~?ž=slice param not supported by XS version of fetchall_arrayref_d”9 ãg=°u`¢¾]P¶0x+bP¸0_@intk¿0kìg!-Èg$·fd& W Ág'P Àg(P w-e òJ.e  XPN@ Wƒ! r þ ü1 o3eB ÈVfe ŸW°u`œfd"äGæAæ8W˜æ”æfds$ƒ‘`ßu:) ê.ÐæÎæ"öæôæççäuAUwT1Q0vMvY_$W;ºg$;Üg$$w°g$0Wƒ_Ïg ÿ`ÿ`% ú[ú[Š‚‘B‰‚1 : ; 9 I8  : ;9 I8  : ;9 I8 I4: ;9 I·BI ( ‰‚1 ‰‚1 .?<n: ;9 : ;9 I : ; 9 I1·B: ; 9 I: ;9 I·B4: ;9 I?< : ; 9 I8I4: ;9 I·B&I4: ; 9 I?<: ;9 I : ; 9  : ;9 I8 !I/  U: ;9 I·B 'I 41·B!4: ;9 I"7I# : ;9 $.?: ;9 'I@—B%‰‚&<': ; 9 I( : ; 9 I 8 ) : ; 9 * : ;9 + : ;9 ,: ;9 I-1R¸BX YW .1R¸BUX YW / : ; 9 0: ;9 I1 : ;9 I 8 2 : ; 9 I8 34: ;9 I44: ;9 I5$ > 6'7!8: ;9 I94: ;9 I:: ; 9 I; : ; 9 <(= : ;9 I> 1U? @4: ; 9 IA.?<n: ; 9 B> I: ;9 C‰‚D.?: ;9 'I<E F G.?: ; 9 'I 4H : ;9 I> I: ; 9 J.: ;9 'I@—BK.?: ;9 '@—BL 1UM : ; 9 IN : ; 9 O!I/P : ; 9 I 8Q UR.: ;9 ' S.: ; 9 'I T : ;9 U : ; 9 I8V : ;9 I8W : ;9 XY4: ;9 IZ4: ;9 I [: ;9 I\: ;9 I].: ;9 'I ^4: ; 9 I_.?<n: ; `> I: ; 9 a : ; 9 b4: ; 9 I c‰‚•B1d1R¸BUX YW e.?: ;9 'I f : ;9 g1R¸BX Y W h41i41j‰‚“Bk‰‚•B1l4: ; 9 I·Bm: ; 9 In% o$ > p q&r : ;9 s5It: ; 9 u : ;9 v : ;9 w<x4: ; 9 Iy4: ; 9 Iz1{.: ;9 '@—B|.: ; 9 'I@—B}: ; 9 I·B~‰‚•B‰‚•B€.: ; 9 ' .1@—B‚.?<nƒ6% $ > &I: ; 9 I$ >   I7I  : ; 9  : ; 9 I8 I !I/  : ; 9  : ; 9  : ; 9 I< : ; 9  : ; 9 I'I4: ;9 I?<&4: ; 9 I?< : ;9  : ;9 I8  : ; 9 : ; 9 I: ;9 I: ;9 I : ; 9  : ; 9 I 8  : ;9 ! : ;9 I 8 " : ;9 # : ; 9 I8 $ : ; 9 I8% : ; 9 I8& : ;9 I8' : ;9 I8( : ;9 ) : ;9 I*5I+!,: ; 9 -> I: ; 9 .( / : ;9 0 : ;9 1'I2 : ;9 3 : ;9 I8 4 : ;9 I5!I/6 : ;9 7 : ; 9 I 88> I: ;9 9:> I: ; 9 ; : ;9 <<=4: ; 9 I >4: ; 9 I?4: ;9 I@4: ;9 I A4: ; 9 IB.?: ;9 '@—BC: ;9 I·BD: ;9 I·BE.?: ;9 'I<F4: ;9 I·BG4: ;9 I·BH4: ;9 II UJ‰‚1KŠ‚‘BL‰‚M‰‚1N‰‚•B1O‰‚1P.: ;9 '@—BQ R1R¸BX YW S1·BT4: ;9 IU UV1R¸BUX YW W X4: ;9 IY4: ; 9 I·BZ4: ;9 I[4: ; 9 I·B\‰‚]4: ; 9 I^1R¸BUX Y W _1` 1Ua41·Bb c4: ; 9 Id1R¸BUX YW eŠ‚1‘Bf4: ; 9 Ig.: ; 9 '@—Bh: ; 9 I·Bi: ; 9 I·Bj.?: ; 9 'I<k.: ; 9 'I l: ; 9 Im: ; 9 In o.: ; 9 'I@—Bp1R¸BX Y W q.: ; 9 'I@–Br4: ; 9 I s‰‚•Bt‰‚•Bu.: ; 9 '‡v.?: ; 9 'I 4w.1@—Bx 1y41z.?<n: ;9 {.?<n: ; 9 |.?<n}.?<n: ; ~6% $ > $ >  I&I: ; 9 I : ; 9  : ; 9 I8 : ; 9 I8 4: ; 9 I?< I ! .?: ; 9 'I@—B: ; 9 I·B4: ; 9 I·B4: ; 9 I1R¸B UX Y W 1·B‰‚1Š‚‘B‰‚1.?: ; 9 'I 4: ; 9 I.?<n: ; 9 .?<n³fÆû /usr/include/bits/usr/lib64/perl5/CORE/usr/include/usr/include/sys/usr/include/bits/types/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/netinet/usr/local/lib64/perl5/auto/DBI/usr/include/mysqldbdimp.cstring_fortified.hinline.hstdlib.hstdio2.htypes.htypes.htime_t.hstddef.h__sigset_t.hstruct_timespec.hthread-shared-types.hpthreadtypes.hstdint-uintn.h__locale_t.hlocale_t.hsetjmp.hsetjmp.h__sigval_t.hsiginfo_t.hsignal.hunistd.hgetopt_core.hsockaddr.hsocket.hin.hstat.htime.htime.herrno.hnetdb.hnetdb.hdirent.hdirent.hperl.hmath.hop.hcop.hintrpvar.hsv.hgv.hmg.hav.hhv.hcv.hpad.hhandy.hstruct_FILE.hFILE.hstdio.hsys_errlist.hperlio.hiperlsys.hperly.hctype.hregexp.hutf8.hutil.hpwd.hgrp.hcrypt.hshadow.hreentr.hparser.hopcode.hperlvars.hmg_vtable.hdbipport.hDBIXS.hdbdimp.hmysql.h field_types.h my_list.h mysql_com.h errmsg.h mysqld_error.h string.hpthread.hproto.h €\Ê1-tSX¡‚X-òì^Q<žfX¬.äÖ)‚ft)Öit)ƒ#|)vlt)®r)ƒÕ)ärt)tqt)Yfhf)»Ènf)‘ ‚tf)‘‡zt)³yt)‘.úÀuò‚‚< ºÖX<JJt.º p_Ë %‹tó tv <ÖK\J òK S Jßz. Æt8Xý X Ët<º ‚Ÿût Hž8t… ½t  ¾tY>ž ..vJƒ <Ž{Í‚Æ òKs!.Y;=Xf9<äK‘Y;=X»J  K eKÉÙZ KAJgtXvJgKI‘ ...-»X ....+pääKsÖ=.Y;=X“c>JKÉØJgtJv=/-u.-«Ê(ÈAY;=X(˜x‚D(X³XgóG„Z Lu XžXwžf X£&,> X¡_ÇY` 7 Y*w *Ö(n‚  Y*.”r äJ(° £Èwä ì|ä E K ". <  YCIYÖ ‚  ž & ‘C;Y<¬ ‚ ˜ &< <Y <X<¬ ‚  t &. <Y <X<¬ ‚  ‚ ) g JXÖ ‚  t & ‘G;Y<¬ ‚  &J < YH;Y<¬ ‚  f &< < Z&;Y<¬ ‚  t&F¬C<‘!Ld=!Y%„šò‚%èóò ."ò‘%ƒ%Y=%Y%Jž   Xž Z. =X ¢  XÖ  "Xž  Z‚¬<< KX ¢<  º Ø‚¬<< KX ¢ò Xž  Z‚¬<< KX ¢¬  ºÖ ¬ Xž Z. =X ¢  Xž Y. =X £Xž  &K‚H< Z<¬XJõ · XžXˆ  ýf &DA< Z+  J),¬ ,g,,X g j &KH< Z(  J&, ,g,,X g j &StP< Z0  J.,¬ ,g,,X g j &KtH< Z'  J%,¬ ,g,,X gf &C@<Z<¬‚  &‘ <Z<¬‚C . w  X £ &YtV< Y:ä  J8,X g  X ¤ &HtE<PX <¬P  ‚i&J<JG< • ;¬‘º Õt" X g €’ €º’ ,v r t &GD< Y!Jä KÈ &5t2<=X<¬=  ‚—tǃX &FtB<Z<¬Ö ‚,º,K ,,X¢ <+ æ}òXò ( ìXº ò0 ´Xò ' ìXò  ä XÖ  " XÖ: "XJ   #PXÖ  !"=Xž Ê &M¬z<J^]<¬ ‚¤ &eJ XCX@<Y<¬  ‚¼+ <EB<‘<òv+ <uC;’<òv . g?;’.v &. < Y?;’..Z &t <u>;’<ò0Ù ò‚ m ¯‡ ÀÈ @t XƒºYt ÛX. È ò ¸~y(!'ä Ö Ù~ ÙP‰òº ×= 鼅 †J ºÖ \JºÖ  JºÖ ¼Jº ØX ¢: ©fÖJ Ú~<ºÖ( ãJÖÖ+ xžÖ. :ä ºØ u. pä º×t' jäÖ.0 xäÖ. ‚äºÖ )JºÖuJXÖ «#‚ ; »ºÖJ>ä Ã~‘XÖ #’ :v Hv  œ v   H Ó.  x‚ ~ò•~ÖJ¬\ȬuȬuȬmJ¬ÃJ¬ ³ t QtnJòÇ~+žPŒÖ=!ä Á~ääuä:ä\äWäÃäF ¾f’X :v ªv :Puº=! P_ô~V +ž‘È:f•ä+ž™f+ž,ž'è" 0Vf+p ¥ ,ž,ž(ÍM +žÏ XpÈÈž\Èž\Èž\ ‚õ +ë}:Js ï~ 0ô 'R˜J'è È+h‚È0‚Èi‚\ § ~××Ö@ë~m  0 (( È ó‚gò >‚” (& (V= ....Z. zä&ä‘XL¾Y;=X’Jg‚ttø1$u®¢wtJf¬Èf >V0tXntt Y< t< Xô Ö.K L:g…Ö!.•   t ufX Jmtt‚ á ¼d[‚ w‚žt<X®:Z. ¬L. M.9h…Ö!.•   t uf X Jmtt‚ á Ød[‚  wÖž t< X® :Z.Lpx*@Y;=X”fž f º   JiY txf .xft Ž º X2 P”L2”X@\˜ut vXºžXf* žfÖžÉKjt  v. º¬ž4t‚(2tO2 •.Lž0 `®½=X vX t X L!tÈóX=Xò‘…  ,h ,,J.ž       ž *fV.K  -tÉÖº... ™‚ ò ØœZžf„Ê0< X >” È Æ<ºX¬`º ýY<0Ö 2fN.ƒ# 5t#KX­<.LXƒ& 1t&OX -º.Qf 3tMXMºt:f f¼ &¬Z.ƒ! )t!WXyÈ ,fT.ƒ2 /t2QX± žDÖÀä "f^.ƒ %t[X¿¬(‚  „Z  ž $f\.ƒ 'tYXa Æ<ºX n‚  ÔX X$žÊØ‚<óX=<òtƒ < JfPq'  X ‚XK  WJpäXž X‚ X áº1. È~ž “ q /î& X ‡ ¬X„ò~È ¬Ÿo ­+W„j¬Xƒj J £    X „ Xƒ$;­ t;<f¬Xƒn X„·  X„ó:t 1Ö¬ X „ X&‚#X ˆ J   -ž*X ƒóò¬Xƒå~f+¬(XƒŸä3ß~È J £  Ÿ8W…$ J ¤ žX„AXÈÑ É«< X& 8t f®  ¬ ˆtÈ&Xƒ ó>t. ,W…  X„ ƒ>t. Åtó?t¾ó‚ØXƒ & X P X Q    žX ƒl  Nòä?ó4tÖ0˜-X ƒéÖX ƒÖ¸ºK=YK‚»J<z XÊJt ]äºe<YôLò tXY qò  È „º ¢òX ‚< Xô ‚t<L‚†òX‚<X  UNžfIž4äot m+Ë}-K“ Xt<`X‘I=J¥,å8å’ ®&i ®2i tÖŸ­¯® iå"sJ_߬Ø J¢Ÿ¥hÙ §ht‚ÝÈv ½ J£  <Ö9º ®  J ¡).¬4°gXžìJ< — JL .&J—L0‚< — JþžÆ|¸h +YÌ¿u> LVŸ “~äÖ%ººXº X X <ºÖ z.Ö%¬ºXº X X <ºÖ<Ö%¬ºXº X X <ºÖ š<fX t< Xõ» ­4.º°g‚B ¸J—LjXgäž­Kœ8‚X‘.<<< ÈI< =ò.z<ºJ L Y  ƒˆì‚òé 䟭¯ìi‚t• é%È <<¬X J < º × s u  –*²<!ºi ‚J ¿XNZ  J ŸXa% f  J Ÿt2%íh¾Š u#ühfƒº†þhÖ ü uä=  I8JL u ƒ K Ky‚ !hž\‚'<<LK%>L#dJžXêû ­  ¡·hXt ªÈhffKžJ¡‚ ‚tÖ <Y–g=‘<<ç#oJ XtZY¯.KJX¬È ò X    „ r L  ` xJ n ‰ —J<!‚Ww ‚‰¼€v f í£ f ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( KrŸ KsEf¬Èž Acœ. $tŸ KžÖX<<Xô5‚Š  Jg "­gºÈXX‹XM¬ æ:Z ?XŸ>d žt"¼¯X %Ö ÏäºòKY‚¼J£JZY ŠX´J£­J¢-JZY „J£.<<X ³ytZ„J£ÖäJJF‚ „:J0X  J žO7AX=  J¡I=L… ¯< ò ƒ/ KfXX‚ òÖ »J hgÈ…t%¼ ‡EKŸ fêŸtw3‚ ˜I ƒ KD ×jrä¬Z7*zf  I ƒ KQ‚vÊ‚tX‚<X#8³L[8ztLXH: ºf2ÕtK2s¬=.Y;=X“gL Jt¢ †^Y‚ø! Ž^tYXò!uZg tJ" <XY – ‰^‚õ!tY õ]X‹"tZY´tZƒ^ft¼  < Zû~=‘<< t"zJ X‚ð!¬4<Y€]=Y<<ü""pJ_K ..‚]‚‚.Í"‚w †^Ö¨‚™#‚ÈóX=<òtƒ>JkX Jž ....q<xXL$ X X ‚ XÖ",ºwJŸq#X$ žXX¬ X&òtf t*òK‘Y;=XÉ” )Xt‚æX ­ Ig J. -ž¬ – ˆt zY W<Y  ‚Ø 9t t¬ ³ ‚ÒX’J…‘ Gw t. ^X  tä º = º =“ J >b‚ ‚ ó} ‚ å‹ º =‹  à  à  á ‚ å‹ º =‹ JÈ /'º  Tä ‚kæX¢žÞXš¬#ÈÈóX=Jò‚‘d>1Jku&ù.Ö†ätŠ)ä]ä X „ Xƒ$ mf.„ J‚ „È <  O X’ÛY ¤&È ÜY<<¤&79?64 º È Xƒ" XƒÁ"  X „‚z"  X ƒw"  X „z   X ƒw   X „X „X ƒfwä  X ƒu"  X …  º ¡±n ‚Ìv<  X ƒu" X „X „X „X ƒuò  X ƒû  X ƒa"z( ɬ dÖ Ø Ö sÖ s":Ö tL7ºòóX=<X¬<=[J!ò¢‚ ºJ!‘I!¡ØK fMä9<#È<X#<J…c?„‚ +Jgff P5X2  1ò/tt/‚ K)su)e =< ’¢bJg<¬Jº "ºD ¬ / ‚ º ×ÖX J‚<‘   Ÿž.XXå~ò X »;Ÿ©ºJ ç~f¬ XÊ1.Päò.Ö<žž‚t »;Ÿ (ä‚Å"  ˆJ‚£¢#K ySY%»#¼»  ŸXJ ‚5X2  1ò/‚t/‚ gWuI =¬   LÖ7JX äØ(t‘/tžbò¬F¬Jak )t kÖ–f ìJJ1sòt ' žXã~ž < \‚‚ȇ ù< zž ]*%y%ÈXžyÖ‚ÕžX›p.fõ$X/Y;=X”T=0 IQ(.X tºy,‚È  .Ö  V¬<¹xº ÖKf¬ÈžuÖu¸V %<§)¬ ÙV< [<Æ)ÓV  º§)‚*J&Ö Jf¬Èž>r. s¬žt<Xô­V ‚äÑ) ºT§q¬t0X=<ò=.:tXY fX­L’tK tL (v rK(Jtº”¬h  YYZ ½„K   tJÓ q‚@ J*u1J’ <Z  <®  Y­  G[  L  v & „ž ˆ‚*a1J%<0O7A7ƒ ɰ¬?D. É<zt‚ ºSž xät™  • XJ J K JX<‚ >qBG< ¼JLH_J= ¾<ò Å<e YÆZ È¢ž XK8e† KIY WK &º/J&J/X X„º–éd Ö•   X ¬gIY XJ‡ >æ: <„Z. . ªh0LH_J= ›º J=Å~ºJ Æ~fR@ /¯ c] „3e^3z<P ¯. = ÆZ XJÖ/‚ Y W gX È‘î~<›i((úX®’­ tL Ⱥ È0 X Ï&(ä[ ?X¼< ‘ ºY„®X‚¼fW¹j¬È" Ì pä/ ÈY„t<<X„ Ÿ¦- ¼hXϬ  ž  X£JKXO1=JNJ2<ÖN <<ž Ä3ã Ê$-ƒ‚Wˆi.òîf£J.<KfºF J%<<=JÈJX±.JJ=Jò8 J%<<=JÈí/sY #X -v t<<XÊrZãiXXª]ò <ò<  XØ Z€ >I¬/sYÆXòtó\K7=X w>tKtMfJ¢žJÎ<Y¼c=‘<<Á$oJ`'zžB[&¬ 'v. t åtȬf(....ÛbtXºÍtL dºJ&X 2x‚|  ft !YIuºÈ¬f  ƒ­°ÈvJ f zòÇa X"¸fžÈv  È ƒtȬ¬y‚ Pä¡ t  ¹5ƒ?‚5t2<5º2XtJžžߺ’X¦ ò#È].‚/Ö Y= X  `‚<tŠYeXX×?JJ  ;vôVYK‘XJ¯’ X¬ J=it X4º5<X h  L = HLJƒL  t.pä‚< s¬to tæÖ°KsŸ. Xv‚>.žv  .( òiº ¬‹=  = -X  øtóY;=X  Bq<=  Z VL¢×K t–” r® ƒ ;ƒ  Z :> XL <“ X= X•f#]fJ<<X! <‘ ‚Dg=L g ¥%»#¹ ƒ½ ºIX  vt< “ÖÉ9 Œä Ÿ  Ö„: „ XƒžÈ ž ÈbÖÉ(¬X¬<<X ®dZ [  pX0»wÖK0s­0-=Y;=X½ JŸèX£ž. R  A a .   X£ J.Ja‚   Ö LZf®fÖÈ.b!ä# J.J z ¥| K=sY.^Mw<YY uX¼J¡å  ˆØˆø ÖvJ£t— #º¡¼ J¡Ö„ – —  „:Z©é~¬v Jžä» s KY sY ZrZ’È<L  ®  J ¦ Z ‚ g ºff‚f LžäVA ’¬ù^Y=‘<< ƒ!9 £  Ÿè Jh H>‚ž C YI K  M  ¬Ê t!j‚Z  WY L  pthread.h  ÈK  KJ5J =<C# ‚ 6<< JJ< 6 Jï~f ‘< ï~< ‘XMì~< X Jf J X™J= <× K àm#˜. èm.˜J =çm< ™‚ çmJ< ™< JŸZ ­r.LH>¡Jf ‚¬N¡ X¬N¡ X¬N¡‚䬜tJƒ H>’ž= –‚JÙt‚Öâ‚\„‚í =f‚ f.JJXt  ºy<y<<ttätyt. ­tÈ‚fX << X Ñ y<<¬tž¬X÷ X¼<t XCtœt'y,L „J ‚¬ <LÖÏrºžt‘ƒX¾  "¬ZtXX.¦rX %žº ZƒYW Ÿ¤ ‚ X>Jžîr Xž » òOtX  ]K  ‘„o#ô< ŒoJ õJ‹ot ‚< õ< JŸ“ ¬LžJÜr‚¬³  Ír ³ JXÍr< ³ X‚XLtX<m‚<X ‚¬.kº 0eK œo#Ü. ¤o¬ ÝJ£o< Ý‚ £oJ< Ý< JŸ’ < èrJ ˜  èr‚X‘ž J¬ž¢ X J ÝrXžäž£ X J p<tX  £K öo#‚. þo¬ ƒJýo< ƒ‚ ýoJ< ƒ< JŸ’ < •sJ ë  •s‚X‘ t J [ätö X J ˆs.º tø XX m<tX à VK  Ép#Û< ¥pJ ÜJ¤pt ‚f Ü<JŸ<’ : C 7:‚LL ¨sX-Xu 4v Ñ "­s<v¬Ñ  Y„tX J..¤sXtXƒ*ºt.³ <tX p#í}t/ Ýr# J ‚ œ < ärt< œ J</“ Z ];T: J„ HXZÄsftƒs K$X" XO!‚` ÿ~¬?Š 3‚0ž ².X << X$Ò‚X’YÒ~X+äÈ “<t, é~  t.X ##« ÚÈ  ¹5ƒ?‚5¬?<2¬È E KW =; KXX pZJ<ºt<J ò •J = J K%eJ  ZJ< L ZJ vY  º /<rzÖ( :‚ _yžQ  YX¦ž,yt,v‚tLXQ7T.,.Èttž< ’#ººXò X X¨ÈX‚< ”ÖÈ5ùÈ?X.Jž‡ÖX!ž""žºtJ X†Xø}<t úsX ºJtJ ž J.Ø XK  s ñ J<ˆs# ñ Js< ñ J sJ< ñ J JŸ’ <ÑsJ ¬ Ôs‚X’€>.žätÉ X .J. ¹sf¦ ØsJ X= ‚J<¡t‚Ö â ‚\µ ‚=X f. »sf L"ÿ“XXt<Xy¬Xš <tX €5[K ªs#Î . ²s¬ Ï J±s< Ï ‚ ±sJ< Ï < JŸ’ <çsJ ™ çs‚X‘žžät® X JÒsX ¬¬ J¬ <Lt« XX f<tX €6Ü~ u;/ Ët# J ‚ ® < ÒtJ< ® <J<KJ —H<9 : J„LpZJ<X¬„¡X¬”¡ X¬”¡ X¬N¡ X¬N¡f¬êsJX&ƒ ž! I=Þf ‚  f„  f‚  f‡ž»—´ ž&‚ZJÈËY &ž;/XˆX‚ötƒžt£ (Šst ƒ Xy<<ìs. õ  y’t‘‚‘ tЂ„t…žt‚ Xt²tº1X„%.<%JXX   <­ yää‚yf<y<ttä/WXž»_H &‚ZJ<7mfÖŸätžQ‚fX<<Xž<Ó t™XÐsX  ½ y<< k.Ö yty<< ytC¹~È  K;ó âu#  — Jéu< — ‚ éuJ< — J JŸ’ ‚{<<üL‚{JX ‘s=  JK < K  J0-Jgœ®HZ€œ<=> 8„>*LL–{J æš{X‚»„  K ­ ‚ K$J Ö KJð¬XtX<... ‹{t¬.⺠AOK Åv#³ . Ívä ´ JÌv< ‚ ´ < ÌvJ< ´ <JuJ• H<< :‚L HZº<v<º¼ .¬¼“‚ .N“.¬¤{ž=’ " gJ‚æXtX<... š{XJ¬È"®{Ú<¦{ Z  gäÕtXX.. ¬|‚J  t.ätàX f. ¨|J‚.¿<tX PIEK …y#ó. yä ôJŒy< ‚ ô< ŒyJ< ô<JuJ“ :>:L „LfL8Zt<X¬®;Á|žY¬JJ„®® ‘  J ‘ò=; J<Ê ò JJLtX J..`X<J :‚LLdLL“Ó|<<­.Ò|JX×¼ ‘  J ‘ò=; J.¶ ò JJLtX<...·|ž  º ØJÖ. X f º Èy­;X  Ï Js …¬X  ë|º ºJòJ ž J.šòK  É®z#Ê< ¶zJ ËJµzt ‚f Ë<JŸ<“ :> :‚LL“ƒ}<<ý.ƒ}JX»XJ Ú+tJÖ† ò JJLtX J..ò|t=;X»+JX+tf‚<> 8„>*LLÄ}J ¸È}X‚»„  K ­ ‚ K$J Ö KJ¬XtX<... ¹}t¬.´º PW\< K;ó Ž|# J ë‚ •|J< ë< J<u“ Ð}<°<LÎ} °Ð}‚X» .‡ X#X9J ‘C Y   ­ ; K "­ž ò  ¶< t Ê}. J ¶   t  J J L    t J .J »}žätž ȽgX à}º º X PY‡K ¤|#Ô. ¬|¬ ÕJ«|< Õ‚ «|J< Õ< JŸ“ <LØ} ¦Ú}‚X»,.Xv¬‚ ò JJLtX J Ð}JÖXt¢<tX 0ZgK º|#¾. Â|¬ ¿JÁ|< ¿‚ Á|J< ¿< JŸ“ <Lâ} œä}‚X»,.Xv¢‚ ò JJLtX J Ú}JÖXt˜<tX [¿K  Éø|#€< €}J Jÿ|< ‚ ÿ|Jf <JŸ<“  < wt‚Lz;“fN“ fN“< <N“ fN[ < .ï}J X‘# š‚tX ..Jt]‚s<l <‚Yº tÔ~fK  ƒ~ þJ<û}# þJ‚~< J< þJ‚^­ ¬ ‘ X<.¬tôX …~t   uÖXt Y   ŸX#.‚ôX~t× \  ­ ž(< J K ‚ X „ó ‚"s‚ w JJ ‚ K¬nòEAS AX ºžXêØ¬=X<...–~f ¬È ‚ ú‚ó <X¸ M"Ç JX ›‚X 0ÖX‚.- g=,t< Ksó í~# J ‚f Œ< J<u<“ :Ð~<<²:L „L>:>,LHZÅ~X“UZ5<‚5.t ! 5 J‚5.t ' *  ¬JòÇ ò JJLt Bž >ò B< >ä BÖ >Ö ‚<.'nžuò ¯q]X­“<‚­¬Ö!XJY¬Zž¬Ö't.XXwž ‚ äK J =’w#æ šw< çJ™wt ‚f ç<JŸ<“ <„“ fN“fÈ{J < XJÀJJ Y‚Àt  ¸{XXt Y‚Åt ff z z{Xqº pkÒxK ½~#» ¿~.tÁ Å~ä ¼J ¾~<^ ‚ ¼< Ä~J< ¼JJu¹~ ‘t K u ¬ t< ¦    ¡ ÖL> Y fÍ­ ¬\­= ÎJ ²~XJÎtXt. ‚~Xò Ö  äºÕX°S>°B°óUŸB°’°S?¯C¯PC¯Ÿ¯Vª¯´¯U´¯Õ¯Vô¯ °VB°\°Vm°°VX¯^¯P^¯©¯\ª¯´¯P´¯ó¯\ô¯°\°°\B°’°\l¯œ¯RȯͯPͯܯRô¯°RB°O°Rm°t°Rt°Œ°p X¯^¯ p” ÿÿŸª¯´¯ p” ÿÿŸX¯l¯0Ÿl¯|¯pĪ¯Í¯0Ÿô¯°pÄm°Œ°pÄX¯l¯0Ÿl¯|¯ p”4 $0.Ÿª¯Í¯0Ÿô¯° p”4 $0.Ÿm°Œ° p”4 $0.ŸÈ¯Í¯Ph¯|¯Pô¯°Pm°Œ°Pl¯|¯Rô¯°Rm°t°Rt°Œ°p Ÿ¯£¯P°%°P%°?°V?°A°|ŸA°B°P ›Ñ›UÑ›—œ\—œ½œóUŸ½œ#\#|óUŸ|ž\ž_žóUŸ_ž¼ž\¼žÒžóUŸ ›Õ›TÕ›—œS—œ½œ‘°óTóT0)(Ÿ½œœžSœžÁž‘°óTóT0)(ŸÁžÒžSÜ›à›Pà›ºœ^½œ|^|„U„Òž^ó›ø›Pø›=œV|åV_ž†žVœOœQ˜¡P¡¯QÇåQ_žnžQó›Hœ0ŸHœ—œV½œ|V|å0Ÿå_žV_ž†ž0Ÿ†žŠžUŠž¼žVÁžÒžVó›œ0Ÿœ-œpˆPœ_œpÿŸƒœˆœP‘œ—œ] P|]|¡0ŸÇåpˆž_ž]†žŠžpÿŸÁžÒž]œ—œ_½œ'_|ž__ž¼ž_ó›œ0Ÿœ-œpÄ|¡0ŸÇåpÄœ-œPÇåPœ-œQÇåQ#BPB|\žžPž_ž\ÁžÒž\'|_ž_ž_ÁžÒž_)žIžQ ›7›U7›o›\o›p›óUŸp›‘›\‘›–›óUŸ ›;›T;›m›Vm›p›óTŸp›Œ›VŒ›–›óTŸ ›;›Q;›–›óQŸ ›;›R;›–›óRŸ ›;›X;›–›óXŸ ›;›Y;›–›óYŸG›c›Pc›l›Sl›p›pÈ}Ÿp›{›P{›‹›S‹›•›U|›†›P|›‡›S°˜â˜Uâ˜$™\$™H™óUŸH™d™\d™ÝšóUŸÝšóš\óš›óUŸ°˜æ˜Tæ˜$™S$™H™óTŸH™+šS+šfšóTŸfš›S››óTŸ°˜æ˜Qæ˜$™]$™H™óQŸH™Ù™]Ù™šóQŸš›]››óQŸê˜í˜Pí˜A™VH™›Vš!šP!šfš]šfš^!š+šP+šBšSBšBšPBšMšpŸMšQšQQš]špŸ]šfšpŸd™m™Pm™Ýš\óš›\˜™¨™0Ÿ¨™Í™Q˜™É™P¨™³™q $ &h@Ñ!"Ÿ³™¾™q $ &h@Ñ!"Ÿ¾™Í™q $ &h@Ñ!"Ÿ“8“U8“ª˜óUŸ“<“T<“ª˜óTŸH“L“PL“•S(•ª˜SX“_“P_“ü”_(•›˜_›˜Ÿ˜TI•)–\?–C–PC–’˜\y”}”P}”ª˜‘ˆ~X•l•P|••P•±•P¾•Ò•Pß•ó•P––Pr–r–Pr–|–Q‰––Pª–¾–Pß–ß–Pß–é–Q — —P ——Q5—5—P5—?—QL—`—Pm——PŽ—¢—P¯—×PЗä—Pñ—˜P&˜&˜P&˜0˜Q=˜Q˜P^˜r˜PŒ”Ž”0ŸŽ”Ž”VŽ”””vŸž”ü”V’˜¥˜VX“_“P_“ü”_(•›˜_›˜Ÿ˜Ty”}”P}”ª˜‘ˆ~I•)–\?–C–PC–’˜\à”ü”_’˜›˜_›˜Ÿ˜Tà”ü”S’˜¥˜Sé”õ”Qõ”ù”ù”ü”qŸ’˜Ÿ˜Q~Â~UÂ~EVLVÍ~Ñ~PÑ~#\L•€\ô€\ã~ï~På~í~p í~DSLS€¡Q.€O€QÇþ ˆŸÇûQÇþWþ € ˆŸþ €0Ÿª€ã€ ˆŸª€ã€Wª€»€s˜»€Ô€RÀtútUútÚu_Úu%xóUŸ%xix_ixxóUŸx†y_†yƒ~óUŸÀtþtTþt†xV†xxóTŸxƒ~VÀtþtQþtuSuûxóQŸûxySyƒ~óQŸÀtþtRþtïu^ïu%xóRŸ%x_x^_xxóRŸx4y^4yCyóRŸCywy^wyƒ~óRŸÀtþtXþtŠx]ŠxxóXŸxƒ~]ÀtþtYþtixóYŸxV~óYŸ[~ƒ~óYŸuuPuTw\%xix\xäy\_zöz\{3{\™{X|\c|­|\Ø|þ|\,}ô}\"~V~\d~ƒ~\ïuvPv%x^†yV~^[~ƒ~^uÂuSÂu¹wsŸ%xixSxûxSy†yS†yùysŸ_z3{sŸ™{V~sŸd~ƒ~sŸuÂusŸÂu¹wS%xixsŸxûxsŸy†ysŸ†yùyS_z3{S™{V~Sd~ƒ~SÞxðxp1u5uP5ux‘ˆ%xix‘ˆxûx‘ˆy z‘ˆ_zV~‘ˆ[~ƒ~‘ˆ1u¹v0Ÿ¹vâvYâvñvvØ{"ŸLw‘wY‘w¤w‘ ¤wxYx%x‘˜%xix0Ÿxûx0Ÿyäy0Ÿäy zY_zÚz0ŸÚz{Y{3{0Ÿ3{™{YÓ{+|0Ÿ+|c|Yc|Ø|0ŸØ|}Y},}‘˜,}Ö}0ŸÖ}~Y~"~‘˜"~:~vØ{"Ÿ[~d~Yd~ƒ~0Ÿ1uûx0Ÿyƒ~0Ÿ1u¤w0Ÿ¤wêwX%xix0Ÿxûx0Ÿyäy0Ÿäy zX_z3{0Ÿ3{™{X™{:|0Ÿ:|c|Xc|Ö}0ŸÖ}~X~"~‘ "~V~0Ÿ[~d~Xd~ƒ~0Ÿ1uxv0Ÿxvw8ŸLw‘wR‘w¤w\%xix0Ÿxûx0Ÿyäy0Ÿ_zšz0Ÿšz{8Ÿ{3{0ŸÓ{+|0Ÿ+|’|8Ÿ’|Ø|0ŸØ|,}8Ÿ,}Ö}0ŸÖ}V~8Ÿd~ƒ~0Ÿ1u;v0Ÿ;vw8Ÿ.wLwZ¤wxZx%x‘ˆ%xix0Ÿxûx0Ÿy†y0Ÿ†yºyþŸäy zZ_zvz0Ÿvz{5Ÿ{3{þŸ3{»{Z»{Ó{‘Ó{+|üŸ+|z|8Ÿz|’|5ŸØ|,}5Ÿ,}P}þŸP}Œ}üŸŒ}±}8Ÿ±}Ö}5ŸÖ}V~8Ÿ[~d~Zd~ƒ~5Ÿ1uXuv %x>xv y=yPPm‡mU‡mnVn(nóUŸ(n&oV&oåoóUŸåo©tV©t®tóUŸPm‹mT‹m!n\!n(nóTŸ(n®t\Pm‹mQ‹m«m]«m(nóQŸ(nHn]Hn®tóQŸm“mP“mnS(n©tS´mn]MnWo]åo©t]´mn0ŸMno0ŸoBoPåo©t0ŸÎmÔmPÔmn^MnNo^åo©t^NoYoPYoåo^NoYoPYoåo^RoYo0ŸYoŠoVŠo¾ovŸ¾oÊoV„o‡oP‡oÊo_Yo„o ||ŸYo„o]DrKr|¨DrLrSðijUjVj\VjzjóUŸzj˜j\˜jõlóUŸõl3m\3mHmóUŸðijTjmjVmjHmóTŸðijQjsj^sjzjóQŸzj9k^9kfS>fRgóUŸRg€gS€ggóUŸ°eÏeTÏeg\Cgg\äeòeP3fKf0Ÿ(f¢f^êefQ3f:fP:fKfv”RgjgQffRrg€gRf fUffnf^zf~fU­f´fP´fÀfv­fòf^€gg^­fòf\€gg\­fÀf0ŸÀfåfSåfêfspŸ€ggSÈfÚfT€g‡gTÈfÚf\€gg\Ëf×fQ×fÚft€g‡gQg&gTCgOgTg&g\CgRg\g#gQ#g&gtCgOgQàžøžUøžrŸVrŸyŸóUŸyŸ7 V7 > óUŸ> O VàžÿžTÿžnŸSnŸyŸóTŸyŸ3 S3 > óTŸ> O SŸ ŸP ŸxŸ^yŸ= ^> O ^ŸŸPŸtŸ\yŸ9 \> O \Ÿ3Ÿs ÉŸíŸQP v Uv ¤ ^¤ ¤¡‘¤¡¶¡óUŸ¶¡&¢‘&¢^¥óUŸ^¥ì¦‘ì¦[§óUŸ[§è§‘觨óUŸ¨ ­‘ ­0­óUŸ0­g®‘g®´®óUŸ´®¯‘P z Tz ¤¡S¤¡¶¡óTŸ¶¡œ¢Sœ¢æ¢‘¸æ¢^¥óTŸ^¥ì¦Sì¦[§óTŸ[§è§S觨óTŸ¨>ªS>ªpª^pªZ¬SZ¬¬^¬ ­S ­0­óTŸ0­¯S‡ — P— ¯‘ø~ù¡¢‘˜ä¥è¥Pè¥Æ¦‘ [§Á§‘ ¨«‘ ç«°¬‘ ì¬ ­‘ q­¶­‘ ö®þ®‘ ¡¡P¡¤¡‘Œ¶¡^¥‘Œw¥Æ¦‘Œì¦Á§‘Œè§¶­‘Œà­þ®‘ŒY£‰£0Ÿ¦¦0Ÿ¦'¦Q'¦=¦]=¦I¦}Ÿe¦‡¦Q‡¦Æ¦]‹§”§0Ÿ¨¨Q¨ª]ª©ªQ©ªóª]ç«°¬]ì¬ ­]q­¶­]ö®þ®]q¡”¡P ¥¤¥P¤¥¦V[§”§V0­;­P;­U­V´®¿®P¿®ö®V&¢;¢P;¢^¥‘ì¦[§‘觨‘ ­0­‘g®´®‘&¢Y£\Y£j£Pj£^¥\ۥߥPߥ¦\¦Æ¦‘¨즔§\觨\¨«‘¨ç«°¬‘¨ì¬ ­‘¨ ­0­\q­¶­‘¨g®´®\ö®þ®‘¨C¢ª¢_ª¢¬¢S´¢¾¢S¾¢Í¢sŸæ¢ÿ¢_ÿ¢/£S ­0­Sg®´®_a¢i¢ p Ÿi¢¬¢T¬¢B£‘¨ ­0­‘¨䡸¡Pø¡¢¢V¢¢æ¢‘°°¬´¬P´¬×¬Vý­*®VF®´®VŒ — T— ¯‘€“ ¤¡]¶¡?¢]^¥¦]Ʀì¦][§‹§]Á§è§]«ç«]°¬ì¬]0­q­]¶­g®]´®ö®]þ®¯]¦¦]¦=¦VA¦‡¦V‹§”§]¨x¨V~©©Vª³ªVóª«Vú«T¬VT¬•¬‘¸¤ ¨ P¨ ¤¡^¶¡|£^|£5¤‘ ^¤^¥‘ ^¥ì¦^ì¦[§‘ [§è§^觨‘ ¨;ª^;ªuªVuªW¬^W¬•¬V•¬¯^ý¥Æ¦_„§Á§_¨«_ç«°¬_ì¬ ­_q­¶­_ö®þ®_¢¢P¢r£‘  ­0­‘ g®´®‘ ¦=¦\m¦‡¦\¨x¨\~©©\ª³ª\ú«L¬\L¬•¬‘°˨ê¨Rq­‘­R‘­¶­Pö®þ®P.¬•¬0Ÿ$¬Q¬‘¸)¬-¬R-¬I¬‘°I¬Z¬RZ¬¬\ªuª0Ÿ ª5ª‘° ªªRª-ª‘˜-ª>ªR>ªmª\ £"£P ­*­P‰£¸£Qú£ ¤Q ¤¤v}"^¤|¤Q‰£ð£_þ£5¤_^¤^¥_ì¦[§_觨_£¸£R^¤|¤R £"£P ­*­P £"£] ­0­]££Q£"£p ­*­Q0aVaUVaÉaSÉažc‘ žcïcSïcd‘ d%dS%dde‘ 0aZaTZaFb\FbRc‘¸RcžcóTŸžcïc\ïcdóTŸd%d\%dýd‘¸ýde\edeóTŸ[abaPoasaPsa™c]žcde]+bHb0ŸHbEc\%dýd\Hb˜b^«bJc^%dÈd^ádýd^™a™aP™ajc‘œÎcécQécïc‘œdde‘œ#bjcV%dýdVe8eV+bRcS%dýdS#b9bP9bjc‘¨%dýd‘¨ede‘¨ÅaÕaRÕaÖa‘œÖaÖaPçaôa‘œôaôaPçaôa‘œôaôaPPŽŽUŽ÷S÷óUŸP‘SP‘\‘óUŸ\‘e‘Se‘¢‘óUŸ¢‘ë’Së’ð’óUŸð’þ’SPŽ…ŽT…Ž^óTŸþ’^Ž”ŽP”ŽVþ’V^bPb÷_5[_z©’_Î’ë’_Ž\þ’\ªŽ±ŽP±Ž]þ’]µŽ¼ŽP¼ŽÔŽ~ìÔŽ÷‘è~[‘è~[t~ìtÁ‘è~’’‘è~’©’‘è~©’Ã’~ìÃ’Ú’‘è~ð’þ’‘è~ÀŽÊŽPÊŽÔŽ~ðÔŽ[‘ì~[t~ðt©’‘ì~©’Ã’PÃ’þ’‘ì~@’Œ’}è#ÅäQÒ‘ñ‘Qá‘QT+TV5V Qt+Q\‘‡‘ Ù}Ÿ\‘e‘‘ð~Ÿe‘‡‘S^?^U?^L_]L_Q_óUŸQ_.a]^C^TC^¥^^¥^ú_óTŸú_`^`:`óTŸ:`Z`^Z`¯`óTŸ¯`Ñ`^Ñ`.aóTŸ^C^QC^à^\à^Q_óQŸQ_n`\n`¯`óQŸ¯`)a\)a.aóQŸ^C^RC^9_S9_Q_óRŸQ_)aS)a.aóRŸ^C^XC^.a‘¨^C^YC^P__P_Q_óYŸQ_.a_u_x_pŸx_~_P~_¾_Rÿ`aR—_¢_P¢_¥_pŸD^K^P¥^©^P©^¼^^Q_Ò_^`:`^Ñ`ð`^ÿ`)a^D^¼^0ŸQ_Ò_0ŸÒ_Ö_PÖ_ú_^ú_Z`0Ÿ¯`ð`0Ÿð`ÿ`Pÿ`)a0ŸX^\^P\^H_VQ_.aVaUaEŽ‘Ð~eTeÚSÚÁˆóTŸÁˆæˆS戉óTŸ‰Y‰SY‰GŠóTŸGŠ_ŠS_ŠQŒóTŸQŒgŒSgŒEŽóTŸeQeEŽóQŸeReî…‘È~î…†óRŸ†Žˆ‘È~ŽˆÁˆóRŸÁˆˆ‰‘È~ˆ‰ŠóRŸŠ—Š‘È~—Š_‹óRŸ_‹ Œ‘È~ ŒQŒóRŸQŒT‘È~TyóRŸyø‘È~øŽóRŸŽ@Ž‘È~@ŽEŽóRŸeXeEŽ‘ð~eYeEŽ‘ilPl¶]¶ºUº¡ƒ]¡ƒáƒ‘à~Ⴤ]„Ú„‘à~†Oˆ‘à~Oˆzˆ]Áˆ‰]‰‰U‰ˆ‰]GŠ_Š]_Š—Š‘à~_‹m‹]m‹ Œ‘à~QŒxŒ]xŒ(‘à~ºø‘à~iÞ0ŸÞåSåéq¢éÁˆ‘ŽÁˆæˆ0Ÿæˆ‰‘މ<‰0Ÿ<‰C‰QC‰GŠ‘ŽGŠ_Š0Ÿ_ŠQŒ‘ŽQŒgŒ0ŸgŒEŽ‘Žié1Ÿé°ƒ‘ø~Ⴤ‘ø~Oˆzˆ‘ø~Áˆæˆ1Ÿæˆ‰‘ø~‰G‰1ŸG‰ˆ‰‘ø~GŠ_Š1Ÿ_‹m‹‘ø~QŒgŒ1ŸgŒxŒ‘ø~ÄwÄڄYÚ„ö„w4…H…VH…M…vŸM…†…V†…œ…]œ…ª…Pª…¯…pŸ¯…À…PÀ…Ñ…pŸ†aˆwaˆfˆPfˆxˆYxˆzˆw戈‰wŠ8ŠY8Š—Šw_‹ ŒwQŒ(w(TVºøwŽ@ŽVo………P……î…]yº]Ž:ŽP:Ž@Ž]¾„Ú„Y\ˆfˆPfˆzˆYŠ8ŠY8ŠGŠw_‹m‹0Ÿ°º p” ÿÿŸ‰‰ p” ÿÿŸû0Ÿû‚S‚Áˆ‘戉‘‰G‰0ŸG‰T‰‘Y‰GŠ‘GŠ_Š0Ÿ_ŠQŒ‘QŒgŒ0ŸgŒEŽ‘ð…0Ÿ†Áˆ0Ÿæˆý‰0Ÿý‰ŠSŠ×Š0Ÿ×ŠäŠ þŸ_‹Ž0ŸŽŽPŽ@Ž0Ÿ°ºPºÁˆ‘Ø~戉‘Ø~‰‰P‰EŽ‘Ø~(‰Y‰PQŒgŒPÆÿPGŠ_ŠPÊ‚QGŠ_ŠQ‚°ƒ‘ø~Ⴤ‘ø~Oˆ\ˆ‘ø~戉‘ø~gŒxŒ‘ø~‚¾„‘ކ\ˆ‘Žæˆ‰‘Ž_Š—Š‘Žm‹ Œ‘ŽgŒ(‘Žºø‘Ž‚¾„‘È~†\ˆ‘È~戉‘È~_Š—Š‘È~m‹ Œ‘È~gŒ(‘È~ºø‘È~‚¾„‘ð~†\ˆ‘ð~戉‘ð~_Š—Š‘ð~m‹ Œ‘ð~gŒ(‘ð~ºø‘ð~‚¾„‘ Ÿ†\ˆ‘ Ÿæˆ‰‘ Ÿ_Š—Š‘ Ÿm‹ Œ‘ ŸgŒ(‘ Ÿºø‘ Ÿ‚[‚w[‚[‚V[‚d‚vŸd‚d‚Vm‚°ƒVჄVOˆ\ˆV戉VgŒxŒV‚¾„‘è~†\ˆ‘è~戉‘è~_Š—Š‘è~m‹ Œ‘è~gŒ(‘è~ºø‘è~‚¡ƒ]¡ƒáƒ‘à~Ⴤ]„¾„‘à~†Oˆ‘à~Oˆ\ˆ]戉]_Š—Š‘à~m‹ Œ‘à~gŒxŒ]xŒ(‘à~ºø‘à~‚¾„‘Ø~†\ˆ‘Ø~戉‘Ø~_Š—Š‘Ø~m‹ Œ‘Ø~gŒ(‘Ø~ºø‘Ø~‚¾„0Ÿ†\ˆ0Ÿæˆ‰0Ÿ_Š—Š0Ÿm‹ Œ0ŸgŒ(0Ÿºø0Ÿƒ°ƒPOˆfˆPfˆzˆYƒ°ƒVy„~„|ŸX†b†|Ÿb†f†|ŸÚ†ß†|Ÿ‡&‡vŸ&‡5‡\5‡M‡|ŸM‡V‡uŸ(ˆ0ˆ|Ÿ6ˆ\ˆVò‹ú‹|ŸŒ Œ|ŸxŒŽŒ|ŸŽŒ›ŒvŸ›Œ¾ŒV̌όvt"ŸÏŒØŒVØŒíŒ|ŸíŒôŒvŸôŒVvu"Ÿ(VÆèVƒáƒS„¾„S†\ˆS_Š—ŠSm‹ ŒSxŒ(SºøSƒ°ƒP°ƒáƒ^„k„^k„k„~Ÿk„k„~Ÿk„k„~Ÿk„y„~Ÿy„„^ „¬„^¬„¾„T¾„¾„tŸ†-†^D†L†^L†f†Tf†Ð†^Іچ~ŸÚ†ä†^ä†þ†Rþ†‡rŸ‡&‡rŸ&‡5‡R5‡J‡rŸJ‡V‡tŸV‡X‡rŸX‡ˆ^ˆˆ~p"Ÿˆˆ~p"#Ÿˆ%ˆ~p"Ÿ0ˆHˆRHˆOˆ^OˆYˆPYˆ\ˆpŸ_Š—Š^m‹Î‹^΋ҋTÒ‹ë‹Vë‹ Œ^ŽŒ”ŒP”Œ›ŒpŸ›Œ¾ŒPŒӌPӌ،^íŒR#R#(^ºÆ^ÆØPØøRFƒWƒU€‡Ë‡Xˇ0ˆ‘ø~m‹‹‹X‹‹Î‹‘ø~ºÆ‘ø~ñ‡ˆXˆˆxp"Ÿˆˆxp"#Ÿˆ0ˆxp"Ÿt‚°‚S°‚xƒ^xƒ©ƒ_Ⴤ^Oˆ\ˆ_戉^gŒxŒSt‚°‚0Ÿƒ°ƒ0Ÿ°ƒáƒQ„2„Q2„~„Z~„¬„Q†X‡QX‡€‡Z0ˆOˆQOˆ\ˆ0Ÿ_Š}ŠZ}Š—Š‘ø~gŒxŒ0ŸxŒ(QÆóQ ‚d‚Sm‚…ƒSჄS戉SgŒxŒS ‚°ƒ0Ÿáƒ„0ŸD†f†0ŸOˆ\ˆ0Ÿæˆ‰0ŸgŒxŒ0Ÿ ‚°ƒ0Ÿáƒ„0Ÿ„š„1Ÿ-†9†1ŸOˆ\ˆ0Ÿæˆ‰0ŸgŒxŒ0ŸxŒŽŒ1ŸŽŒ›ŒT›Œ¾Œv|#ŸÂŒÌŒŤ،tŸØŒíŒ1ŸíŒíŒUíŒôŒv|#ŸôŒv|#ŸU(uŸÆØv|#ŸØèv|#Ÿt‚°‚‘ð~°‚xƒ_Ⴤ_:„|„VX‡+ˆV戉__Š—ŠVm‹´‹Vú‹ŒVgŒxŒ‘ð~ºÆV°‚È‚0ŸÕ‚ð‚0Ÿð‚uƒ1Ÿáƒ„1Ÿ„„0Ÿæˆ‰1ŸX‡Â‡0ŸÂ‡ñ‡1Ÿ_Š—Š0Ÿm‹ú‹0Ÿºº1ŸºÆ0Ÿx…†…Sx…†…Vx………P……†…]`WWUW×\V×\à\óUŸà\ô]V`W…WT…W¹\S¹\à\óTŸà\€]S€]Ä]óTŸÄ]ô]SW”WP”W®\\à\ô]\Wß\_à\ô]_¨W®WP®WáW^à\ü\^Ä]Ò]^²WÀWPÀWÑWsÀÑWÄ]‘¬Ä]Ñ]sÀÑ]ô]‘¬•X™XP™XÎ\‘°)]:]‘°\]Ä]‘°ã]ô]‘°²WÄX]ÄXÈXUÈXó[]˜\Î\]à\)]])]4]U4]¢]]Ä]ã]]PXmXQE\f\QXXT]]TXX\])]\ XXQXXt]]QÀHáHUáHvJ_vJwJóUŸwJK_ÀHåHTåHãIVãIúIóTŸúI.JV.JwJóTŸwJžJVžJ´JóTŸ´JKVæHñHPêHpJ\wJK\þHIPIÓI]úIfJ]wJK]þHI ÿŸI?IS?IKIPKIúISúIJPJ>JSwJžJ ÿŸ´JKSK7KU7K/M^/MçMóUŸçMTP^TP§QóUŸ§QõQ^õQÿQóUŸÿQÿR^ÿRSóUŸSpT^pT¦TóUŸ¦TÀT^ÀTÇTóUŸÇTÞT^ÞTòTóUŸòTºU^ºUÉUóUŸÉUVW^K;KT;KÆMSÆMçMóTŸçMTPSTPePóTŸePGWSGWVWóTŸK;KQ;K8MV8MçMóQŸçM&PV&P§QóQŸ§QõQVõQÿQóQŸÿQpTVpT¦TóQŸ¦TÀTVÀTÇTóQŸÇTÞTVÞTòTóQŸòTºUVºUÉUóQŸÉUVWVK;KR;KžL_žLçMóRŸçMöO_öO§QóRŸ§QõQ_õQRóRŸRËR_ËRgSóRŸgS¤S_¤SòTóRŸòTºU_ºUÉUóRŸÉUVW_LL0ŸT'T0Ÿ#N@NPÓNïNPƒOŸOP>RZRPNVPVPlVnVPŠVŒVPDKHKPHK8M‘¨çMTP‘¨§QõQ‘¨ÿQpT‘¨¦TÀT‘¨ÇTÞT‘¨òTºU‘¨ÉUVW‘¨»L¿LP¿LÒL_ËRBS_ÉSpT_¦TÀT_TCTQCTfTqŸfTpTQ»TÀTsÈ'TpTT»TÀTsÈT4TP4TGTpxŸGT^Tq8Ÿ^TfTp`Ÿ»TÀT0ŸYK]KP]K`P]ePVW]YKP\ePVW\aLL ŒŸhL€LpM8M‘¨ÿQR‘¨M’M_eP§Q_õQR_pT¦T_ÀTÇT_ÞTòT_ºUÉU_M8MV8M’MóQŸeP§QóQŸõQÿQóQŸÿQRVpT¦TóQŸÀTÇTóQŸÞTòTóQŸºUÉUóQŸM’M\eP§Q\õQR\pT¦T\ÀTÇT\ÞTòT\ºUÉU\M8M0Ÿ8M’MXeP©PXQ§QXõQÿQXÿQR0ŸpT¡TXÀTÇTXÞTòT0ŸMDMVDM{MQ{M‡MRŠMŽMVŽM’MQeP•PQ•PäPRäPQ‘°QQVQ-QR0Q8QR8Q8QQ8QGQvŸLQVQQeQ~QQ~QQqŸQ QQ Q§QqŸõQÿQQÿQRVpTtTR{T†TR†TTTT—TrŸ—T¦TVÀTÇTQÞTçTRêTòTRºUÉUVM8M0Ÿ8M’M^eP§Q^õQÿQ^ÿQR0ŸpT¦T^ÀTÇT^ÞTòT^ºUÉU^M8M0Ÿ•P©P1Ÿ©PµPPµPäP{r"ŸQQ ÿŸQ3QPÿQR0ŸtT¦TQÞTòTQºUÉU ÿŸDMHMvM‡MPŽM’Mv™P©PP©PäPZäPQ‘¨Q8QZ8QLQqVQbQqbQeQveQQq Q§QqõQÿQqpTtTP~TTPT¦TtÀTÇTqÞTíTPŸM²Ms³M³MPÉSÔSPÕSÕSPÉSÔSPÕSÕSPâSõSP¦T¦TPöSTP¦T¦T0Ÿ°?Ý?UÝ?¹HóUŸ°?á?Tá?A\A!AóTŸ!A¹H\°?á?Qá?ÿ?Sÿ?–@óQŸ–@¶@S¶@¹HóQŸå?è?Pè?AV!A¹HV@@S)@a@Sˆ@‘@sŸ‘@–@S»@Ñ@SVAqASÏAìASB,BSMBhBSÇBìBSC!CS9>PR>p>PÏ>í>Pü>#?PO?]?Pi?u?PV<t<q9%ŸO?]?q9%Ÿi?z?q9%Ÿ@:d:Ud:o:Vo:…:óUŸ…::U:°:V@:d:Td:ƒ:Sƒ:…:óTŸ…:°:SÐ7æ7Uæ74:óUŸÐ7ê7Tê7 8V 8 8óTŸ 8^9V^9_9óTŸ_94:Vî7ò7Pò7 8S 8]9S_94:S77U7’7\’7“7óUŸ“7Ê7\77T77S7“7óTŸ“7Ê7S"7&7P&77V“7Ê7V07p7P¹7Å7P67v7R“7¯7R¹7É7Rð5)6U)686V86F6óUŸF6g6Ug6q6Vq6v6óUŸv6˜6U˜6¢6V¢6§6óUŸ§6ò6Vð536T3686S86F6óTŸF6p6Sp6v6óTŸv6¡6S¡6§6óTŸ§6ò6Sð4)5U)585V85F5óUŸF5g5Ug5q5Vq5v5óUŸv5–5U–5 5V 5¥5óUŸ¥5ê5Vð435T3585S85F5óTŸF5p5Sp5v5óTŸv5Ÿ5SŸ5¥5óTŸ¥5ê5S3º3Uº3‰4]‰4Ž4óUŸŽ4î4]3¾3T¾3„4S„4Ž4óTŸŽ4î4S3¾3Q¾34V4î4óQŸ3¾3R¾3ý3^ý3î4óRŸ3¾3X¾3ö3_ö3î4óXŸÅ3É3PÉ3}4\Ž4º4\Ý4î4\Ó3×3PL4m4Q 1;1U;1ˆ1Sˆ1’1óUŸ’1³1S³1½1óUŸ½1g2Sg23óUŸ3W3SW3†3óUŸ 1;1T;1‰1V‰1’1óTŸ’1´1V´1½1óTŸ½13V33óTŸ3†3V 1;1Q;1‹1\‹1’1óQŸ’1¶1\¶1½1óQŸ½13\33óQŸ3†3\k1’1Q½1Ï1QÏ1Ö1|8|1ƒ1^½13^W3†3^[2_2P_23_W3†3_×1í1wò1 2‘¨2%2‘°*2A2‘¸g2Ž2PŽ23SW3†3S33PH1L1PL11]’1¸1]½13]3†3]ðU_S_`óUŸ`‚SðT‚óTŸðQ‚óQŸðR‚óRŸAP`oPE0ŸEJP`t0ŸtyP x Ux œ \œ 1óUŸ | T| à _à á óTŸá 1_ | Q| 1‘à~ | R| 1‘È~ | X| 0 ]0 ú óXŸú  ] Z óXŸZ ] 1óXŸ | Y| 1‘Ð~¬ ú ‘ 1‘þ 0 2ŸZ v2Ÿª"Þ"2ŸM#5$2Ÿs$­$2Ÿ:%A%} !ŸA%M%]j%q%}@<$!Ÿq%v%]Û%’&2Ÿõ'Â(2Ÿr))2ŸÇ)§*2ŸI+r+2Ÿ˜+,2ŸM,ƒ,2Ÿ•,°,2Ÿ¨-Ã-2Ÿÿ-.2ŸY.….2ŸÑ./2Ÿb/†/2Ÿj o Po µ Sá ú S 7 Sƒ ‡ P‡ * Sú  SZ xSƒä!Sî!Ü0Sæ01Sœ ¬ P¬ 0 \ú  P  \Z Y\Yû‘ø~û»\»Ï‘ø~ª"Þ"\…#5$\s$­$\Û%’&\õ'Â(\r))\Ç)§*\I+r+\˜+³+\Ê+,\M,ƒ,\•,°,\¨-Ã-\ÿ-.\s.….\Ñ./\b/†/\ % PZ ‰ Ph a^aû‘€û»^»Ï‘€ª"Þ"^…#5$^s$­$^Û%’&^õ'Â(^r))^Ç)§*^I+r+^˜+³+^Ê+,^M,ƒ,^•,°,^¨-Ã-^ÿ-.^s.….^Ñ./^b/†/^ P Ñ ]þ  Pt „ P„ ã ]ã ó Pó Q ]Q R PR ¾ ]¾ Ò P5EPEu]¤´P´ä]Pûg]ÛS]–]+—]õPœÔP>vPÞP~´P2PŽ¢PBP“¥PPTRCPzŒPP†¡PþP{–P–¾Ué P * UX Y PY – UÁ  P ù Z.!D!PD!g!YŽ"¡"P…#õ#]s$­$]Û%’&]’&´&R'b'R(5(]:((]¢(½(]d)r)PÇ)*]**G*]˜+³+]Ê+,]M,ƒ,]•,°,]°,Æ,YÔ,á,Uá,ë,‘ø~ð,ý,Uý,-‘€ --U-#-‘ð~(-9-Zÿ-.].&.P/.;.PD.P.Ps.….]….©.P©.·.UÑ./]/%/P./1/ZP/\/Pt/†/]›/©/R©/¼/‘ð~Z0„0Rg‹]G*j*]+]j*Š*]—»]***]26P6h]hû\»Å\2h0ŸhV ¾P¾ûV»ÏPh]ËÏPÏû]h€PÐõP€RGSQ`P1ŸPî!‘—À'õ'‘—Â(r)1Ÿ°,B-‘—….·.‘—./6/‘—¼/Z01Ÿ§0Ð01ŸÐ0æ0‘—æ011Ÿ`¾0Ÿ¾î!‘ø~À'õ'‘ø~Â(r)0Ÿ°,Ô,‘ø~Ô,ð,0Ÿð,B-‘ø~…..‘ø~.›.0Ÿ›.·.‘ø~./6/‘ø~¼/Z00Ÿ§0Ð00ŸÐ0æ0‘ø~æ010Ÿ`* 0Ÿ* î!‘€À'õ'‘€Â(r)0Ÿ°,Ô,‘€Ô, -0Ÿ -B-‘€…..‘€.©.0Ÿ©.·.‘€./6/‘€¼/Z00Ÿ§0Ð00ŸÐ0æ0‘€æ010Ÿ`– 0Ÿ– ž!‘ð~À'Ï'‘ð~Â(r)0Ÿ°,Ô,‘ð~Ô,(-0Ÿ(-B-‘ð~…..‘ð~.·.0Ÿ./6/‘ð~¼/Z00Ÿ§0Ð00Ÿæ010Ÿ`þ 0Ÿþ #!Z#!g!‘˜Â(r)0Ÿ°,Â,‘˜Ô,B-0Ÿ…..‘˜.·.0Ÿ./6/0Ÿ¼/Z00Ÿ§0Ð00Ÿæ010Ÿ`g!0Ÿg!…!YÂ(r)0Ÿ°,B-0Ÿ….·.0Ÿ./6/0Ÿ¼/Z00Ÿ§0Ð00Ÿæ010Ÿ `Ø0ŸØî!‘ˆÀ'õ'‘ˆÂ()0Ÿ)d)‘ˆd)r)0Ÿ°,B-‘ˆ….·.‘ˆ./6/‘ˆ¼/ 0‘ˆ 0Z00Ÿ§0º00Ÿº0ÿ0‘ˆÿ010Ÿú  ]U¶X‹T‹›óTŸ›¶T¶PÑÑFŸÑÑò)ÑÑu‰Ÿ¯Ñ 'yŸ¯Ñu‰Ÿ-‘P›¶P-‹T‹‘óTŸ›¶T-„Y„‘xŸŸ›¶Y0NUNpSp óUŸ0RTRÝ^ÝâóTŸâ ^0RQRÒ\ÒáTáâóQŸâ \Y]P]ÎVâ VptPtÊSâ SxÛ]â ]àU#S#'óUŸà T Ô_ÔÙóTŸÙî_îïóTŸï'_à Q Ò^ÒÙóQŸÙì^ìïóQŸï'^à R Ð]ÐÙóRŸÙê]êïóRŸï']PÌVÙæVï'V#'P'ËSÙåSï'S?Î\Ùè\ï \_vsà#p~U~ßóUŸ‰PÐSÑßSÐðUð7S7=óUŸ=bSÐôTô:\:=óTŸ=b\ÐôQô8V8=óQŸ=bVû P <]=GPGb] TK_T TK_T ]Kb] QtR_Q&U&BPBGUGKóUŸKiPitUt}P}~U~ŠPŠ‹U‹•P•–U–¢P¢£U}~P£U£¤S¤¥U¥¦óUŸ¦ÊSÊÖUÖ×óUŸ×ãS¾ÆP×âPÃÆpÆÎPpeˆeUˆeªeóUŸpeˆeTˆe©eS©eªeóTŸe£eóUŸe£eSàbcUcnhSnhshUshthóUŸth‚hSàbïbTïbkcóTŸkccP‹cŸcPd±dP½dÑdPÝdñdPýdePue‰eP•e©eP$c(cP(cohVohshTth‚hV$c(cp $ &3$s"Ÿ$c(cs$c(csp $ &3$s8ŸcŠcPŸcªcP±d¼dPÑdÜdPñdüdPeeP‰e”eP©e´eP@PUP{ S{ óUŸ b S@XTX U Q óTŸQ \ U\ b óTŸk‡X‡¶sQ \ s}€Q€¶RQ \ R€„q $ &3$t"Ÿ„¶r $ &3$t"ŸQ X r $ &3$t"ŸX \ r $ &3$s"Ÿ€„sq $ &3$t8Ÿ„¶sr $ &3$t8ŸQ X sr $ &3$t8ŸX \ sr $ &3$s8Ÿ¦Ã\²€ ] Q ]] b ]ÃÇPÇA \ \' ¿ \Ä Q \Ãó0Ÿó1 P ¬ P² ä Pí  P' Œ 0ŸŒ £ P¬ ¸ PÄ Ô PÝ ì Põ P + P4 @ PÃA 0ŸA S T Q 0Ÿ[ 1Ÿ] b 1Ÿk}Sp Ä UÄ ú Sú q˜}Ÿ 9 S9 ? qÈ}Ÿ? N Sp Ä TÄ ? óTŸ? I TI M UM N óTŸt v u— š Pš û V : V? N Vš ž p $ &3$q"Ÿž Ä v $ &3$q"Ÿ? M v $ &3$q"Ÿ¸ ÿ ] > ]Î Ò PÎ Ò p Ò à P  P* ? 1Ÿë 1Ÿt — Up®U®ÜSÜàpÈ}ŸàòSòöp°}ŸöSq˜}Ÿ*SpºTºóTŸ%T%)U)*óTŸtvu‘”P”ÝVàóVöV*V”˜p $ &3$q"Ÿ˜ºv $ &3$q"Ÿ)v $ &3$q"Ÿ¶ºU»ÑPàçPöP1Ÿêö1ŸÔà1Ÿt‘UP ¬ U¬ ì Sì ô qÈ}Ÿô 2 S2 : óUŸ: s SP ¬ T¬ : óTŸ: D TD d óTŸd n Tn r Ur s óTŸT V uu x Px í Vô  V: s Vx | p $ &3$q"Ÿ| ¬ v $ &3$q"Ÿ: D v $ &3$q"Ÿd r v $ &3$q"Ÿx | up $ &3$q8Ÿ| ¬ uv $ &3$q8Ÿ: D sv $ &3$q8Ÿd r sv $ &3$q8Ÿ¢ ó ^ô 9 ^: d ^Ê Î PÎ ñ ]ô 7 ]J d ]Ï Ù Pô  PJ a P* : 1Ÿä ô 1ŸT u U€ ’ U’ ÆSÆÎóUŸÎ!S€ ™ T™ Ý UÝ óTŸ U !óTŸ© Ç TÇ í s s¼ À PÀ )\ô\!\À Ä p $ &3$q"ŸÄ í | $ &3$q"Ÿ | $ &3$q"ŸÀ Ä sp $ &3$q8ŸÄ í s| $ &3$q8Ÿ s| $ &3$q8Ÿá Í^Î^ú þ Pþ Ë]Î]ú þ p þ P1ŸÎô ||ŸÎôW3N Ù}Ÿ3NWª±1Ÿ© ¼ S0BUBDSDLóUŸLüS0NTN¹U¹ŒóTŸŒ˜U˜ðóTŸðûUûüóTŸ?BuB¹s3\ŒœsÝð\ðûs_bQb¹RŒœRðûRbfq $ &3$t"Ÿf‘r $ &3$t"Ÿ‘¹r $ &3$s"ŸŒœr $ &3$s"Ÿð÷r $ &3$t"Ÿ÷ûr $ &3$s"Ÿbfsq $ &3$t8Ÿf‘sr $ &3$t8Ÿ‘¹sr $ &3$s8ŸŒœsr $ &3$s8Ÿð÷sr $ &3$t8Ÿ÷ûsr $ &3$s8Ÿ…\LÝ\«K^LŒ^ ¤P¤ð^øý1Ÿ‡Œ1Ÿ¾Ý0ŸÅI]LŒ]¾ð]Ö÷PLrPrŒ‘H¾ÕP8L1Ÿ?BUB_SUÍSÍÓóUŸÓSTiUiÓóTŸÓÛUÛõóTŸõUóTŸ uis޽]Óßsåõ]õs*-P-aQai sø#”#ŸÓßQõQ-1p $ &3$r"Ÿ1aq $ &3$r"Ÿaisø#” $ &3$r"ŸÓßq $ &3$r"Ÿõq $ &3$r"Ÿ-1sp $ &3$r8Ÿ1asq $ &3$r8Ÿaissø#” $ &3$r8ŸÓßsq $ &3$r8Ÿõsq $ &3$r8ŸSŽ]Óå]…— p $0.ÿŸiÐ\åõ\z„Pš¸qÿŸ¸½|åòqÿŸÁÓ1Ÿ U*SdUd–S–œq˜}ŸœÙSÙßqÈ}ŸßîSdTdßóTŸßéTéíUíîóTŸu7:P:—VœÚVßîV:>p $ &3$q"Ÿ>dv $ &3$q"Ÿßív $ &3$q"ŸX›]œÞ]n|PœºPÊß1Ÿ‡œ1Ÿ7U0nUnœSœ pÈ}Ÿ ²S²¶p°}Ÿ¶×S×Ûq˜}ŸÛêS0zTzÛóTŸÛåTåéUéêóTŸ46uQTPTV ³V¶ØVÛêVTXp $ &3$q"ŸXzv $ &3$q"ŸÛév $ &3$q"ŸvzU{‘P §P¶ÄPÏÛ1Ÿª¶1Ÿ” 1Ÿ4QUð0U0ZSZ^qÈ}Ÿ^S“óUŸ“´Sð,T,¥óTŸ¥¯T¯³U³´óTŸôöuP[V^uV“´Vp $ &3$q"Ÿ<v $ &3$q"Ÿ¥³v $ &3$q"Ÿ8<U=GP^pP“¢P‡“1ŸR^1ŸôUðDUDySyqÈ}ŸªSª°óUŸ°¿SðDTD°óTŸ°ºTº¾U¾¿óTŸôöuPzVŒV°¿Vp $ &3$q"ŸDv $ &3$q"Ÿ°¾v $ &3$q"Ÿ8~]¯]NUPž°1Ÿm1ŸôUÀÔUÔ€S€ŠqÈ}ŸŠÕSÕßóUŸßëSÀãTã2U2ŠóTŸŠœUœßóTŸßêUêëóTŸÑÔuÔs6sp $ &3$ŸŠœsp $ &3$ŸßêsñôPôVŠÖVßëVôøp $ &3$r"Ÿø6v $ &3$r"ŸŠœv $ &3$r"Ÿßêv $ &3$r"Ÿ6PŠœPßêP&…]ŠÚ]*‡^ŠÁ^/‰_šÞ_®½P@dPœ­PtŠ1ŸÉß1ŸÑÔUÔñSðHUH•S•ŸqÈ}ŸŸS óUŸ HSðHTH9óTŸ9CTCGUGHóTŸôöuP–VŸV HV"p $ &3$q"Ÿ"Hv $ &3$q"Ÿ9Gv $ &3$q"Ÿ"up $ &3$q8Ÿ"Huv $ &3$q8Ÿ9Gsv $ &3$q8Ÿ<œ^Ÿ ^ 9^éíTî PÂÄqÿŸÄíQ qÿŸ79qÿŸ¶ºPº _ 9_]yPyš]Ÿ«P«] 9]‰Ÿ1Ÿö 1ŸôUPïUïlVluóUŸuµVµÉUÉ”"V”"š#]š#í%Ví%ð%Uð%p&VPØTØí%óTŸí%÷%T÷%û%Uû%p&óTŸ{ïuïóvµÉuí%ð%uð%û%v”˜uø#˜›R›?‘Ü~?t_uº‘Ü~º¿_¿è%‘Ü~è%í%_í%p&‘Ü~˜ïuø#” $ &3$p"Ÿïóvø#” $ &3$p"ŸµÉuø#” $ &3$p"Ÿí%ð%uø#” $ &3$p"Ÿð%û%vø#” $ &3$p"Ÿ®ÁQÁ,‘È~u“‘È~¥D‘È~Ù ‘È~ÝQ ‘È~• d!‘È~—!è%‘È~í%û%Qû%p&‘È~æóRó?‘¸~uµ‘¸~µÉRɺ‘¸~¿è%‘¸~ü%p&‘¸~æ,]u~]¥]Ù ]ÝË]• !]!d!]—! "]N"ˆ"]ˆ"Ò#‘ˆÒ#%]@%è%]ü%p&]ì,^uä^ø@^¥µ^Ä#^2›0Ÿ›Á^Ù^Œ ^Ýl^ŽË^—!ã!^ê#$^$-$0Ÿ-$%^@%è%^ü%p&^'P',Su~S¥µSÉS#P#SÙ SÝËS• â S!d!S—! "SN"›"S›"Ò#‘Ò#%S@%è%Sü% &SC&X&S,0Ÿu~0Ÿ¥µ0ŸÉ0ŸÙ 0ŸÝË0ŸçïPïy ‘à~• !0Ÿ!d!0Ÿ—! "0ŸN"a"0Ÿa"e"Pe"Ò#‘à~Ò#%0Ÿ@%è%0Ÿü%p&0Ÿ~~P‰“‘è~ADPˆº‘è~¿Ù‘è~' þŸZ s Pù ! þŸ!! þŸµ#Ç#P,0Ÿu“0Ÿ¥µ0ŸÉD0ŸÙ 0ŸÝ/ 0Ÿ/ U [U y ‘È~• d!0Ÿ—!è%0Ÿü%p&0Ÿ,0Ÿuø0ŸøP@‘À~¥µ0ŸÉì0ŸìP#0Ÿ2Á0ŸÙ‘À~Œ 0ŸÝ0‘À~0>P>l‘À~ŽË0Ÿ—!±!‘À~±!ã!0Ÿê#$‘À~$-$0Ÿ-$4$‘À~4$%0Ÿ@%è%0Ÿü%p&0ŸôP+9Pu‘à~'‘à~• !‘à~ã! "‘à~N"a"‘à~Í"å"P$#.#P^#¦#P '‘°#‘°$#.#Q ,0Ÿu~0Ÿ¥µ0ŸÉ0ŸÙ 0ŸÝË0Ÿ• !0Ÿ!d!0Ÿ—! "0ŸN"ª"0Ÿ$#.#þŸÒ#%0Ÿ@%è%0Ÿü%p&0Ÿ ,0Ÿu¨0Ÿ¨µPµè‘à~‰“1Ÿ¥µ0ŸÉ+‘à~+.q1Ÿ.AQA`‘à~`h1Ÿ#0Ÿ2ePe›‘à~›ªQªÁ‘à~ü0Ÿ'0ŸŽÆ‘à~ù !1Ÿ±!Þ!‘à~N"Z"‘È~”3ŸZ"e"Pe"Ò#‘à~$ $ s¦”ÿŸ $-$P4$>$‘à~>$A$pÿŸA$J$PÀ$Í$0ŸÍ$Ò$QÒ$Ú$‘à~Ú$Ý$pÿŸÝ$æ$Pü%p&‘à~ ,0Ÿuè0ŸèèPè@‘˜¥µ0ŸÉ˜0Ÿ˜˜T˜‘˜#0Ÿ2Á0ŸÙ‘˜Œ›0Ÿ› PÝl‘˜ŽË0Ÿ—!±!‘˜±!ã!0Ÿê#$‘˜$-$0Ÿ-$4$‘˜4$%0Ÿ@%è%0Ÿü%p&0Ÿ,0Ÿu0Ÿ‘è~¥µ0ŸÉ0ŸÙ0Ÿ: 0ŸÝË0Ÿ!d!0Ÿ—!ã!0ŸÒ#%0Ÿ@%è%0Ÿü%p&0Ÿ,0Ÿu~0Ÿ¥µ0ŸÉ0ŸÙ 0ŸÝË0Ÿ• !0Ÿ!d!0Ÿ—! "0ŸN"¢#0Ÿ¢#¦#X¦#Ã#‘ð~Ò#%0Ÿ@%è%0Ÿü%p&0Ÿ„P¥¯P &PÑãP$ $Pm$Š$PÀ$Í$P@%D%P³%·%P?u1Ÿè%í%1Ÿ"ª"0Ÿª"Í"0Ÿå"#0Ÿ#M#1ŸM#^#0Ÿª"å"^ð"†#^ "A"sè#%(%sè#ü 0ŸV`]F`]09]º¿1Ÿ{”Up&Ì&UÌ&'S'#'qÈ}Ÿ#'¹'S¹'Ã'óUŸÃ'`(Sp&Ì&TÌ&Q(óTŸQ([(T[(_(U_(`(óTŸŒ&¹&V¹&'vxŸ#'5'vxŸ5'w'Vw''vxŸ'º'Vº'Ã'óUÃ'L(VL(Q(PQ(`(Vž&¢&P¢&'\#'R'\Ã'(\Q(`(\¢&¦&p $ &3$q"Ÿ¦&Ì&| $ &3$q"ŸQ(_(| $ &3$q"Ÿ¢&¦&vqp $ &3$8Ÿ¦&Ì&vq| $ &3$8ŸQ(_(vq| $ &3$8ŸÀ&"'_#'Â'_Ã'Q(_='M'PM'±']Ã'Ï'PÏ'å']å'î'Pî'(]*(Q(]k'~'P¤'°'Pá&ý&Pý& '^#'9'P9'À'^Ã'Q(^ '#'1ŸŒ&ž&U`(´(U´(þ(Sþ()qÈ}Ÿ)@)S@)F)óUŸF)U)S`(´(T´(F)óTŸF)P)TP)T)UT)U)óTŸd(f(u‡(Š(PŠ(ÿ(V)")VF)U)VŠ(Ž(p $ &3$q"ŸŽ(´(v $ &3$q"ŸF)T)v $ &3$q"Ÿ¨()])E)]¾(â(P))Pò()1Ÿ4)F)1Ÿd(‡(U`)*U*Á,_Á,Â,óUŸÂ,=-_=-K-UK-@/_@/C/UC/š/_`)ì)Tì)@/óTŸ@/J/TJ/N/UN/š/óTŸŽ)®)X®)É)uÉ)*u~ $ &3$Ÿ=-K-u~ $ &3$Ÿ@/C/uC/N/¤)§)Q§)F,SÂ, -S=-n-SÀ-.S°.O/ST/š/S§)«)q $ &3$p"Ÿ«)ï)s $ &3$p"Ÿï)*s $ &3$u"Ÿ=-K-s $ &3$u"Ÿ@/N/s $ &3$p"Ÿ²)*X*A+^Â, -^=-K-XK-U-^À-o.^@/N/Xf/š/^è)*R*S,‘ˆvÂ, -‘ˆv=-E-RE-K-s3$u"K-¬-‘ˆvÀ-«.‘ˆv°./‘ˆv/@/‘ˆvT/š/‘ˆvè)™,\Â,î.\/1/\T/š/\*7+w7+W+‘€vW+S,wÂ, -wU--wÀ-„.w°./w/@/wT/š/w;* +‘vÀ-Ù-‘vù-o.‘vf/š/‘vo*ý*‘˜vù-o.‘˜v|/š/‘˜vž*Í*[(.C.[C.Q.‘ v/š/[Í*ý*Yù-.Y.(.‘¨v|/ƒ/Yý*R+PÕ,÷,PF,J,PJ,™,S -=-Sn-v-Pv-À-S„.°.SZ+c+Pc+™,]-=-]U-À-]o.î.]//P/&/]T/f/]ý*Â, ýšŸÕ,=- ýšŸU-À- ýšŸo.@/ ýšŸO/f/ ýšŸ- -PÆ.ß.PË.Ú.òˆ:Ë.Ú.PÚ.ß.‘vÚ.ß.Pú+ ,P ,&,^//1Ÿ,&,òª:, ,P ,&,^&,&,‘v&,&,^’,™,1Ÿ1-=-1ŸŽ)¤)UÀ^U^ËSËÕóUŸÕþSÀGTGìóTŸìTÞóTŸÞèTèìUìþóTŸògVg}vxŸ}ÌVÌÕóUÕÔVÙþV Q APAÎ}ŸÕ}ŸFo}Ÿ£µ}ŸÞìPìþ}Ÿ q $ &3$r"ŸAp $ &3$r"ŸA^} $ &3$r"ŸÕÝ} $ &3$r"ŸÝã} $ &3$s"Ÿì} $ &3$r"ŸÞìp $ &3$r"ŸA\Õ‰\£µ\Þþ\3Ô_ÕÞ_íþ_^ì^o^£µ^íþ^¼XFbXbowí÷X¼ìY7Y7F‘¨v÷þYìP(P(Ò^o£^µÞ^ZnP” P,<P<¡]owPw~]µÙ]òU U0UU0UsVSsVyVóUŸyVÊZS U?UT?UUUUªVóTŸªVºVUºV¾ZóTŸ¾ZÉZUÉZÊZóTŸ-U0Uu0UUs3VcV]ªV¾VslW€W]¾ZÉZsMUPUPPUUQUUvŸªV·VQ·VËVvŸ¾ZÉZQÉZÊZvŸPUTUp $ &3$r"ŸTUUq $ &3$r"ŸªVµVq $ &3$r"ŸµV·Vq $ &3$s"Ÿ·V¾Vv $ &3$s"Ÿ¾ZÉZq $ &3$r"ŸPUTUsp $ &3$r8ŸTUUsq $ &3$r8ŸªVµVsq $ &3$r8ŸµV·Vsq $ &3$s8Ÿ·V¾Vsv $ &3$s8Ÿ¾ZÉZsq $ &3$r8ŸU3V]yVªV]ËVlW]€W¾Z]*VcValWzWaÏUtVVyVªVVàV¾ZV3VcValWzWaÏU*V]yVªV]àVlW]€W¾Z]W8WX€W‘WX¬W½WX1XIXXƒX”XX¯XÀXXÛXìXXEYVYXqY‚YXY²YX*ZUZXgVyV1Ÿ-U0UU0UMUS /²/U²/œ0Sœ0¤0óUŸ¤0õ1S /Ð/TÐ/0U0¿1óTŸ¿1Ê1UÊ1õ1óTŸÉ/0V0¤0óU¤0õ1Vß/ã/Pã/¡0]¤0õ1]ã/ç/p $ &3$q"Ÿç/ 0} $ &3$q"Ÿ¿1Ê1} $ &3$q"Ÿã/ç/vqp $ &3$8Ÿç/0vq} $ &3$8Ÿ0 0s} $ &3$q8Ÿ¿1Ê1vq} $ &3$8Ÿ0Ÿ0\¤0¿1\Ë1õ1\ 0$0P$0£0^¤0¿1^Ë1õ1^µ0ë0Rä1ô1R,1G1~ G1J1Pm1z1P>1G1~ G1J1PÉ/ß/S22U2›2S›2¥2óUŸ¥2Å2S2#2T#2Q2UQ2¹2óTŸ¹2Ä2UÄ2Å2óTŸ22u2g2s¹2Ä2s1252Q52 2]¥2Å2]5292q $ &3$r"Ÿ92g2} $ &3$r"Ÿ¹2Ä2} $ &3$r"Ÿ5292sq $ &3$r8Ÿ92g2s} $ &3$r8Ÿ¹2Ä2s} $ &3$r8Ÿ52Q2u#(Q2g2óT#(¹2Ä2u#(W2ž2\¥2¹2\c2¢2^¥2¹2^}22P2¤2_¥2¹2_‚2¬2P·2¹2P2¥21Ÿ22U212SÐ2Þ2UÞ2¿3^¿3Â3óUŸÂ3á3^Ð2ó2Tó2,3U,3Õ3óTŸÕ3à3Uà3á3óTŸÛ2Þ2uÞ2à2~33Q3¸3SÂ3á3S33q $ &3$r"Ÿ3I3s $ &3$r"ŸÕ3à3s $ &3$r"Ÿ33~q $ &3$r8Ÿ3I3~s $ &3$r8ŸÕ3à3~s $ &3$r8Ÿ53½3]Â3Õ3]93¬3VÂ3Õ3V=3»3\Â3Õ3\V3^3P^3Á3_Â3Ò3PÒ3Õ3_§3Â31ŸÛ2Þ2UÞ23^ð3z4Uz45^5„5óUŸ„5+6^+696U96e6^e6h6Uh6|6^ð3V4TV4e6óTŸe6o6To6s6Us6|6óTŸô3ö3u4!4Q!4z5S„5|6S!4%4q $ &3$p"Ÿ%4z4s $ &3$p"Ÿ+696s $ &3$p"Ÿe6s6s $ &3$p"Ÿ,4z4Xz4n5V„5+6V+696X96e6Ve6s6Xt6|6VR4}5\„5e6\t6|6\z4i5‘¤„5—5‘¤™5+6‘¤G6e6‘¤t6|6‘¤¦4i5‘¨„5—5‘¨™56‘¨G6e6‘¨t6|6‘¨Ð4á4Pá4i5‘°„5—5‘°²5Å5PÅ56‘°G6e6‘°t6|6‘°ç45]„5™5] 66PG6e6]t6|6]5ƒ5_„5™5_»5Ò50ŸÜ56_,555PÒ5Ü5PÜ56‘¸i5„51Ÿô34U€66U647S47:7q˜}Ÿ:7s7Ss7y7r˜}Ÿy7–7S€6›6T›6Ê6UÊ6y7óTŸy7„7U„7–7óTŸ66u6Ú6sy7„7sª6­6P­657V:7t7Vy7–7V­6±6p $ &3$q"Ÿ±6Ú6v $ &3$q"Ÿy7„7v $ &3$q"Ÿ­6±6sp $ &3$q8Ÿ±6Ú6sv $ &3$q8Ÿy7„7sv $ &3$q8ŸÎ697]:7x7]…7–7]K7_7p $0.Ÿä67P:7J7P…7‘7Pä6 7p 77R:7J7R…7•7Rô6 7p 77R…7•7R(7:71Ÿg7y71Ÿ66U6ª6SP]^]U^]ú]Sú]þ]óUŸþ]!^S!^%^óUŸ%^P^SP]i]Ti]á]Uá]þ]óTŸþ] ^U ^%^óTŸ%^O^UO^P^óTŸ[]^]u^]é]sê]ò]sþ]^s^^s%^O^sw]z]Pz]û]Vþ]"^V%^P^Vz]~]p $ &3$r"Ÿ~]é]v $ &3$r"Ÿþ]^v $ &3$r"Ÿ%^O^v $ &3$r"Ÿˆ]È]PÈ]é]ssø#” $ &3$r3&Ÿþ]^ssø#” $ &3$r3&Ÿ%^O^PŸ]é]r|"þ]^r|"%^D^r|"²]å]Tå]é]ttŸþ]^T/^D^TÅ]é]Qþ]^Q?^D^Q^%^Pê]þ]Pò]þ]1Ÿ^%^1Ÿ[]^]U^]w]S99U9å9\å9è9óUŸè9':\9)9T)9Q9UQ9:óTŸ:&:U&:':óTŸ9·9S·9·9sp"Ÿ·9Ñ9sp"#ŸÑ9Ù9sp"ŸÙ9â9Sâ9å9|å9è9óUè9:S::P:':S1949P49]9Q:&:Q4989p $ &3$r"Ÿ89]9q $ &3$r"Ÿ:&:q $ &3$r"Ÿ4989srp $ &3$8Ÿ89U9srq $ &3$8ŸU9]9|q $ &3$r8Ÿ:&:srq $ &3$8Ÿ49Q9u#(Q9]9óT#(:&:u#(Y9u9Vg9q9Pu9ƒ9Pƒ9ã9Vè9ú9Pú9:V¤9·90Ÿ‹9Ù9]::]919\0:€:U€:Î:SÎ:Ô:óUŸÔ:ã:S0:€:T€:Ô:óTŸÔ:Þ:TÞ:â:Uâ:ã:óTŸ=:€:uÔ:â:sW:Z:PZ:Ï:VÔ:ã:VZ:^:p $ &3$q"Ÿ^:€:v $ &3$q"ŸÔ:â:v $ &3$q"ŸZ:^:up $ &3$q8Ÿ^:€:uv $ &3$q8ŸÔ:â:sv $ &3$q8ŸZ:€:t#(Ô:Þ:t#(Þ:â:u#(t:Ó:]Š:”:P•:«:PÂ:Ô:1Ÿ=:W:Uð:H;UH;®;S®;¸;óUŸ¸;û;Sû;<qÈ}Ÿ<*<Sð:H;TH;<óTŸ<%<T%<)<U)<*<óTŸô:ö:u;;P;H;RH;¢;‘¼¢;³;]¸;Þ;‘¼Þ;à;]à;<‘¼<)<R;";p $ &3$q"Ÿ";H;r $ &3$q"Ÿ<)<r $ &3$q"Ÿ);¢;V¸;Ì;Và;ü;V<*<V<;µ;^¸;<^<<^U;j;Pj;·;_¸;<_<<_ˆ;¢;T¸;Ç;T<<T<< p $ &Ÿï;<1Ÿ¢;¸;1Ÿô:;U0<’<U’<’=S’=œ=r˜}Ÿœ=Z?S0<«<T«<á>óTŸá>ë>Të>ï>Uï>Z?óTŸ4<6<u^<a<Qa<“=Vœ=?V/?D?Va<e<q $ &3$p"Ÿe<®<v $ &3$p"Ÿ®<É<v $ &3$s"Ÿ?>U>v $ &3$s"Ÿá>ï>v $ &3$p"Ÿl<É<Y?>U>YU>h>‘¸á>ï>Y†<—=]œ=á>]ð>Z?]¤<É<UÉ<?>‘¨?>H>UH>U>r $ &3$s"U>á>‘¨ð>Z?‘¨¤<û<^œ=³=^?>h>^É<P=wP=œ=‘ œ=û=wû=>‘ >?>wh>á>wð>Z?wÖ<I=_M=›=_®=×=_Ü=?>_h>ž>_ž>¢>T«>á>_ð>Z?_j=~=p $0.ŸÖ<M=0ŸM=i=X³=?>0Ÿh>á>0Ÿð>Z?0Ÿì<ÿ<Pÿ<œ=‘°³=?>‘°h>á>‘°ð>Z?‘°=™=^³=?>^h>Å>^Ó>á>^ð>Z?^>'>P†=œ=1Ÿ4<^<U`?n?Un?„@^„@‡@r˜}Ÿ‡@B^`?ƒ?Tƒ?Ç?UÇ?AóTŸA¨AU¨ABóTŸk?n?un?p?~‘?”?Q”?}@S‡@¹ASèAýAS”?˜?q $ &3$r"Ÿ˜?î?s $ &3$r"Ÿ‡@—@s $ &3$r"ŸA¨As $ &3$r"Ÿ¢?î?Q‡@—@QA¨AQÃ?‚@]‡@A]©AB]Ñ?ä?Uä?;@w;@‡@‘°‡@“@U“@ Aw A,A‘°,AAw©ABwÕ?€@\‡@A\©AB\ê?5@_9@†@_‡@Ä@0ŸÄ@á@_ì@^A_^AbATkAA_©AB_U@i@p $0.Ÿê?9@0Ÿ9@T@X‡@A0Ÿ©AB0Ÿý? @P @‡@‘¸¦@»@P»@A‘¸A—AP—AA‘¸©AB‘¸*A7APq@‡@1Ÿk?n?Un?‘?^ B4BU4B CS C*Cr˜}Ÿ*CDS BCBTCB–BU–B*CóTŸ*C3CU3C¤CóTŸ¤C¯CU¯CDóTŸ1B4Bu4B Bs*C:Cs¤C¯CsQBTBQTB!CV*CÀCVïCDVTBXBq $ &3$r"ŸXB Bv $ &3$r"Ÿ*C:Cv $ &3$r"Ÿ¤C¯Cv $ &3$r"ŸbB BQ*C:CQ¤C¯CQƒB%C]*C¤C]°CD]‡B)C_*C¤C_°CD_œB'C^*CGC0ŸGCŸC^°CD^øB Cp $0.Ÿ­B¶BP¶BêBXGCKCPKCmCXmC{C‘¸{C¤CX°CÀCXïCDXC*C1Ÿ1B4BU4BQBS D†DU†DESE$EóUŸ$E?HS D†DT†DHóTŸH$HT$H(HU(H?HóTŸFDEVE$EóU$E?HV\D`DP`DùD^$EÐE^8FèF^GÚG^H)H^`DdDp $ &3$q"ŸdD†D~ $ &3$q"ŸH(H~ $ &3$q"Ÿ`DdDvqp $ &3$8ŸdD~Dvq~ $ &3$8Ÿ~D†Du~ $ &3$q8ŸH(Hvq~ $ &3$8Ÿ‚DE\$EH\)H?H\šDžDPžD!E]$EH])H?H]9EpERîE FQFD\DU@HTHUTHÛHSÛHåHóUŸåHIS@HcHTcH‘HU‘HùHóTŸùHIUIIóTŸQHTHuTH§HsùHIsqHuHQuHàH]åHI]uHyHq $ &3$r"ŸyH§H} $ &3$r"ŸùHI} $ &3$r"ŸuHyHsq $ &3$r8ŸyH§Hs} $ &3$r8ŸùHIs} $ &3$r8Ÿ—HÞH\åHùH\£HâH^åHùH^½HÁHPÁHäH_åHùH_ÂHìHP÷HùHPÏHåH1ŸQHTHUTHqHSIIUIÿI^ÿIJóUŸJ!J^I3IT3IlIUlIJóTŸJ JU J!JóTŸIIuI I~AIDIQDIøISJ!JSDIHIq $ &3$r"ŸHI‰Is $ &3$r"ŸJ Js $ &3$r"ŸDIHI~q $ &3$r8ŸHI‰I~s $ &3$r8ŸJ J~s $ &3$r8ŸuIýI]JJ]yIìIVJJV}IûI\JJ\–IžIPžIJ_JJPJJ_çIJ1ŸIIUIAI^0JDJUDJ¯KS¯K¹KóUŸ¹K)LS0JKJTKJŽJUŽJ LóTŸ LLUL)LóTŸ[JxJTxJžJs LLsnJqJPqJ°KV¹K)LVqJuJp $ &3$q"ŸuJžJv $ &3$q"Ÿ LLv $ &3$q"ŸqJuJsp $ &3$q8ŸuJžJsv $ &3$q8Ÿ LLsv $ &3$q8Ÿ’J¶K^¹K L^L)L^3K‹Kp $0.ŸL$Lp $0.Ÿ«J­JP­J²K\¹K L\L)L\ÏKØK1ŸâJKYK!K!}/› $@L$)(ŸØKùKYùKL‘¨Mp $ &3$q"Ÿ>MdMv $ &3$q"ŸÒMàMv $ &3$q"Ÿ:M>Mup $ &3$q8Ÿ>MdMuv $ &3$q8ŸÒMàMsv $ &3$q8ŸXM´M]µMÒM]‡M›Mp $0.ŸqMsMPsMMTµMÊMTÊMÒM‘H£MµM1ŸM7MUðMNUNOSOOóUŸOLOSðM!NT!N‰NU‰NOóTŸO&OU&O.OóTŸ.O9OU9O:OóTŸ:OCOUCOLOóTŸNNuNÇNsO9Os:OLOs!N$NP$N OVOLOV$N(Np $ &3$q"Ÿ(NÇNv $ &3$q"ŸO9Ov $ &3$q"Ÿ:OLOv $ &3$q"Ÿ2N«NP«NÇNst3$q3&ŸO9OP:OLOPTN O\O.O\:OLO\TNO_O.O_:OLO_}NÇNRÇNO‘¸ O#Os¸Ÿ#O.OR:OLORN±NX#O&Os¸ŸCOLOX£N±NYJOLOYÃN O]ÑNóNPôNOPüNO1ŸNNUN!NSPO~OU~OIP_IPJPrÈ}ŸJP¹P_¹PºPóUŸºPÊQ_ÊQËQóUŸËQ®R_POËOTËOhPóTŸhPuPTuP®RóTŸlOÕOVÙO)PVJPPVPPP£P~"ŸºP)QV)Q2Q]2Q`QV`QfQ]fQwQ~"ŸwQƒQs $ &3$Ÿ‰QŸQVŸQÆQ]ÆQÊQÊQËQóUËQ.RV.R.Rvp"Ÿ.RARvp"#ŸARPRvp"ŸPR‹RV‹RRPR©RV©R®RPzO†O]†O‰OP‰O4P‘¼JP®R‘¼†OO} $ &3$u"ŸO“OP“OÆO} $ &3$u"ŸÆOÏO} $ &3$"ŸhP|P} $ &3$u"Ÿ|P€P} $ &3$"Ÿ—O@PSJP°PSºPÎPSfQ‰QS¥O©OP©OËOt#(ËO4P‘¸JPhP‘¸hPuPt#(uP Q‘¸2Q®Q‘¸ËQúQ‘¸PRXR‘¸—OšOPšOËOtËOÏOóThPuPtuP€PóT±OËO t#(”1)ÿŸËO4P ‘¸”1)ÿŸJPhP ‘¸”1)ÿŸhPuP t#(”1)ÿŸuP Q ‘¸”1)ÿŸ2Q®Q ‘¸”1)ÿŸËQúQ ‘¸”1)ÿŸPRXR ‘¸”1)ÿŸíOòOPòO)P^JPaPPaPhP^ºPfQ^‰QÈQ^ËQ®R^ÁOÕO\ÙO)P\JPhP\P¡PPºPfQ\fQƒQP‰QÄQ\ËQ®R\ÎPëPPëP2QS2Q O  £"£ ­0­£"£ ­0­£ã£ð£*¤`¤`¥ð¦`§ð§¨£ã£`¤`¥ð¦`§ð§¨¦=¦T¦Ð¦¨ýªð«°¬­ ­x­À­ö®þ®¦ ¦ä©ªM¯P¯°¯¾¯Å¯È¯˜¯£¯°;° $'ttx|‚ŠŽ‘§Ûàñª®¶Ûàñ448<BJNQg› ±ÀÖjnv› ±ÀÖôôøü 'Y`Ž˜¨*08Y`Ž˜¨òöù&(,03¬ØÙíþì©p¨¸Ù©p¨¸ÙÁÌð%'3—[ ˆ Q # H   ¸ Ø ð ú 0 Q t t … ˆ ” — ± õ 4 ¸ ¸ À õ 4 T T \ ` f n r u ë ø 1 @ g ¬ ë ø 1 P g © µ ¹ ¼ × ªÐ&)Ðø??FJQ_y8PðÅýPÀà3àð  *DÁØõi…Ž’—šŽŽ’—š½èõ!%(047Q‘ ÔXX`‘ Ôôô1t€¥88@t€¥ÑÑØÜãñ{Ð/{ Ðôô  5 ö<<<D Ô×é<{Š‘”·LxVVFFº¿00è%ü%p&ìLxVV¸ÐFFº¿00è%ü%p&x¨¸±èìøÐÜàãçì È ŽË±!ã!$$4$%N%è%ü%p&V`FFW`09 "N"%N%N"^#š#¢#k"|"…"à"å"^#…&‰&Œ&&“&—&›&ž&¹&'('1'5'´'È'T(d(d(q(u(x(€(„(‡(¡(ù();)¨(¨(°(ù();)Ž))¡)¤)¿)É)É)™,È,C/T/š/ý*™,È,Í,Õ,Õ,ç,@-X-À-p.C/T/f/ä+K,à./,,,&,,,&,0,Ë.Ó.×.Ú.Ó.×.Ú.à.É/Í/Ð/Ø/Ü/ß/ú/00ƒ0¨0¿1Ð1õ1/0€0 1¿1±0ç0ë0ñ0ä1õ1,1]1p1€1Ð1ä1>1]1Ð1ä12222#212H22¨2¹2Û2Û2è2ì2ó233§3È3Õ3ô3ô34 4 444494i5ˆ5h6t6|65i5ˆ5 5»5¾5Á5666”6˜6›6£6§6ª6Ä6/7@7g7…7–7ô67…7–7È7Ì7Ï7Ó7Þ7á7"8H8ð8ý89999"9&9)919K9Q9U9Ý9ð9:z9Ù9ð9:=:=:A:E:H:P:T:W:ô:ô:; ; ;;;;1;¢;À;ö;<<4<4<E<I<L<W<[<^<y<†= =ä>ð>Z?Ö<j=¸=@>p>ä>ð>Z?¸=Ñ=Ô=@>°>Å>ð>Z?k?k?x?|?ƒ?‘?®?q@@A©ABá?ä?ê?U@@A©ABÈ@á@ð@PApA…A©AB1B1B8BNüN O.OJOLOeOiOlOpOsOzO¥O©O¬O®O±O;PPP«PÀP¼QÐQ®RÞP8QÐQèQR®RSýS0TUSSBSáS0TU-U-U4U8U?UMUgUgV€V¾ZÏU*V€V°VàVpW€W¾ZàVðVW@W_WpW€W¾Z3VcVpW€W4[[0\ß\ß\&]0]A]\[d[k[p[u[x[H\X\ˆ\·\Õ\ß\ß\ø\[•[Ÿ[¯[²[Á[Ï[î[[][]^]b]i]w]”]ò]^^(^D^ò]ù]^ ^T^T^l^p^x^ƒ^‡^Š^V^]^s^x^™^_¢_¦_À_ ` `ßb_¢_¦_­_kckc|cc‹c‹cœcŸcdd®d±d½d½dÎdÑdÝdÝdîdñdýdýdeeueue†e‰e•e•e¦e©e'*/48`ÈÈ&#¨$8%ð3 èD E pP À[ v vȨ¸«PÉÑ!Ñ! Ñ!˜ç!ê!ð!ða ñÿ €\  ) À[? À[Y À[t À[“ À[­ À[Ë À[â À[ý €\ #]? €\£R #]l _„ 0]Ø@Ñ!X¨ _Å c_à _Sîð!ÿ c_ `7 p_’E `b 6a} `&‹ 6a§ ObÁ @aÎ Obè âb âb _c8 _cV §dr §d ƒeª ƒeÊ šè š   f = n‘Y n‘x j’• j’¶ r“Õ r“ø J” J”7 ´–S ´–s 0—‘ 0—¶ -œÙ -œþ 9¥! 9¥J ާq ާ‘ Ö³¯ Ö³Ô tº÷ tº" ®½K ®½i äÁ… äÁª *ÂÍ *Âí Ä  Ä0 eÆS eÆz ÈÉŸ ÈÉÄ .Ñç .Ñ  7Ñ)  7ÑF  Ûa  Ûƒ  …Ý£  …ÝÌ  Åêó  Åê  ~ï1  ~ïW  *õ{  *õ™  š÷µ  š÷Ü  ø  ø&  RûI  Rûh  Ïü…  Ïü£  ž ¿  ž ã    ñÿ    ¢u+  À[@  À[Y  À[s  À[‘  À[ª  À[Ç  À[Ý  À[÷  '  U  pv  ©  JÚ  ºþ  J1 b Pº† º Ôì Ä Ô; c à>~   ôÀ Ô¨ ôÅ Sà Sîð!Ó S  ‚C `"m ‚› nÇ Þæ n “L p#q “— A»  ¡Ò Aü $ PÌ? m !™ ¸ !æ   0Þ1  [ ß ƒ  Ïž ß Å "ê à + "( h#L "Xc h#‡ 3© p# ¾ 3è €5 3ð+ €5Z u6‡ €5õ§ u6Ø º< €6:) º<R ?y À<U“ ?Á å?í ?Å  å?3 AX ð?p A› œCÄ AŒà œC ¶D.  CG ¶Dk F ÀD]¢ FÒ GG F'! GGT H… PG³© HÒ JIù H: JIE zLu PI*˜ zLÄ 3Oî €L³  3O5 :Q] @Oúx :Q¡ _UÈ @Qâ _U  %V. `UÅF %Vm AW’ 0Vª AWÖ IY PWù IYG !Zo PYÑŠ !Z² [Ø 0ZÑñ [! l\O [\p l\¤ Î_Ö p\^û Î_# 8bI Ð_hb 8bˆ êg¬ @bªÃ êgò fj  ðgv?  fjr  pk£  pjÇ  pkû  ÿo-! pkR! ÿoq! ¢u—!ñÿŽ! °u ! v¶! À[Ì! À[æ! À[" À[ " À[:" À[X" À[o" À[Š" °u¬" vÌ"ñÿ×" À[Ù" ð[ì" 0\#ð!#Ñ!8# p\D#Ñ!Ì"ñÿc#LÉñÿq#Ȩ„# Ñ!‘# vÔ2 èD—#˜ç! #ð!¬#ê!Â#à#î#û#$#$H$\$g$x$™$Å$ð!Ì$ @Ñà Ú$%% 0ÂÝ+%O%`%“%¤%¸% 0œ Î%ä%÷%!&/&U&g&x&&Æ&ï&'''<'"X'~'Ÿ'³'Ó'ú' ( p’2( `ûoB( ^Q(y( ÄU(¤(Ì(Þ(ê()*)6) p‘úF)o))Æ)á)ó)* *4* p¢D* P”dS*`*‡*²*Ý* Ý5 ÷* à³” ++*+W+ƒ+”+¨+¸+Ï+Ý+, °u`,7,I,T,t,‚,“,·,Ý,ë,ù,---Q-y-Š- 0Ñ-Ä-é-ù- .. €º.5.^.w.   rŒ.². `cGÁ.Ï.÷./$/1/?/ ÐÉ^U/ ø2k/—/º/Ì/ã/ Ûuö/0E0 0—ý[0 e (l0š0 €ïª±0À0ã0  ÷vû0+1K1_1…1¦1²1 0õjÁ1ç1 262 Pb’J2Z2& ð!e2q2’2 pÆXª2¾2Ì2 ðboÚ2 ðÁ:ð23ð!353 §F F3 À–pW3d3v3œ3´3 €“ÊÈ3õ344&4Q4}4 °½4Œ4´4â455 @¥N95 U5y5™5¿5á5 Ðê®ò5 °dÓ6(6R6 a6 {66£6É6 ÐüÎØ6.annobin_dbdimp.c.annobin_dbdimp.c_end.annobin_dbdimp.c.hot.annobin_dbdimp.c_end.hot.annobin_dbdimp.c.unlikely.annobin_dbdimp.c_end.unlikely.annobin_dbdimp.c.startup.annobin_dbdimp.c_end.startup.annobin_dbdimp.c.exit.annobin_dbdimp.c_end.exit.annobin_mysql_to_perl_type.start.annobin_mysql_to_perl_type.endmysql_to_perl_type.annobin_native2sql.start.annobin_native2sql.endnative2sqlSQL_GET_TYPE_INFO_values.annobin_dbi_get_state.start.annobin_dbi_get_state.enddbi_get_statedbi_state_lval_p.annobin_safe_hv_fetch.start.annobin_safe_hv_fetch.endsafe_hv_fetch.annobin_set_ssl_error.start.annobin_set_ssl_error.endset_ssl_error.annobin_parse_number.start.annobin_parse_number.endparse_number.annobin_bind_param.start.annobin_bind_param.end.annobin_mysql_dr_init.start.annobin_mysql_dr_init.end.annobin_mysql_dr_error.start.annobin_mysql_dr_error.end.annobin_mysql_dr_warn.start.annobin_mysql_dr_warn.end.annobin_mysql_dr_connect.start.annobin_mysql_dr_connect.end.annobin_my_login.start.annobin_my_login.endmy_login.annobin_mysql_db_login.start.annobin_mysql_db_login.end.annobin_mysql_db_commit.start.annobin_mysql_db_commit.end.annobin_mysql_db_rollback.start.annobin_mysql_db_rollback.end.annobin_mysql_db_disconnect.start.annobin_mysql_db_disconnect.end.annobin_dbd_discon_all.start.annobin_dbd_discon_all.end.annobin_mysql_db_destroy.start.annobin_mysql_db_destroy.end.annobin_mysql_db_STORE_attrib.start.annobin_mysql_db_STORE_attrib.end.annobin_mysql_db_FETCH_attrib.start.annobin_mysql_db_FETCH_attrib.end.annobin_mysql_st_free_result_sets.start.annobin_mysql_st_free_result_sets.end.annobin_mysql_st_prepare.start.annobin_mysql_st_prepare.end.annobin_mysql_st_next_results.start.annobin_mysql_st_next_results.end.annobin_mysql_st_internal_execute41.start.annobin_mysql_st_internal_execute41.end.annobin_mysql_describe.start.annobin_mysql_describe.end.annobin_mysql_st_clean_cursor.start.annobin_mysql_st_clean_cursor.end.annobin_mysql_st_destroy.start.annobin_mysql_st_destroy.end.annobin_mysql_st_STORE_attrib.start.annobin_mysql_st_STORE_attrib.end.annobin_mysql_st_FETCH_internal.start.annobin_mysql_st_FETCH_internal.end.annobin_mysql_st_FETCH_attrib.start.annobin_mysql_st_FETCH_attrib.end.annobin_mysql_st_blob_read.start.annobin_mysql_st_blob_read.end.annobin_mysql_bind_ph.start.annobin_mysql_bind_ph.end.annobin_mysql_db_reconnect.start.annobin_mysql_db_reconnect.end.annobin_mysql_st_internal_execute.start.annobin_mysql_st_internal_execute.end.annobin_mysql_st_execute.start.annobin_mysql_st_execute.end.annobin_mysql_db_type_info_all.start.annobin_mysql_db_type_info_all.end.annobin_mysql_db_quote.start.annobin_mysql_db_quote.end.annobin_mysql_db_last_insert_id.start.annobin_mysql_db_last_insert_id.end.annobin_mysql_db_async_result.start.annobin_mysql_db_async_result.end.annobin_mysql_st_finish.start.annobin_mysql_st_finish.end.annobin_mysql_st_fetch.start.annobin_mysql_st_fetch.end.annobin_mysql_db_async_ready.start.annobin_mysql_db_async_ready.end.annobin_mysql.c.annobin_mysql.c_end.annobin_mysql.c.hot.annobin_mysql.c_end.hot.annobin_mysql.c.unlikely.annobin_mysql.c_end.unlikely.annobin_mysql.c.startup.annobin_mysql.c_end.startup.annobin_mysql.c.exit.annobin_mysql.c_end.exit.annobin_XS_DBD__mysql__dr_dbixs_revision.start.annobin_XS_DBD__mysql__dr_dbixs_revision.endXS_DBD__mysql__dr_dbixs_revision.annobin_XS_DBD__mysql__st_mysql_async_ready.start.annobin_XS_DBD__mysql__st_mysql_async_ready.endXS_DBD__mysql__st_mysql_async_ready.annobin_XS_DBD__mysql__db_mysql_async_ready.start.annobin_XS_DBD__mysql__db_mysql_async_ready.endXS_DBD__mysql__db_mysql_async_ready.annobin_XS_DBD__mysql__db_mysql_async_result.start.annobin_XS_DBD__mysql__db_mysql_async_result.endXS_DBD__mysql__db_mysql_async_result.annobin_XS_DBD__mysql__dr__ListDBs.start.annobin_XS_DBD__mysql__dr__ListDBs.endXS_DBD__mysql__dr__ListDBs.annobin_dbdxst_bind_params.start.annobin_dbdxst_bind_params.enddbdxst_bind_params.annobin_XS_DBD__mysql__GetInfo_dbd_mysql_get_info.start.annobin_XS_DBD__mysql__GetInfo_dbd_mysql_get_info.endXS_DBD__mysql__GetInfo_dbd_mysql_get_info.annobin_XS_DBD__mysql__st__async_check.start.annobin_XS_DBD__mysql__st__async_check.endXS_DBD__mysql__st__async_check.annobin_XS_DBD__mysql__st_mysql_async_result.start.annobin_XS_DBD__mysql__st_mysql_async_result.endXS_DBD__mysql__st_mysql_async_result.annobin_XS_DBD__mysql__st_rows.start.annobin_XS_DBD__mysql__st_rows.endXS_DBD__mysql__st_rows.annobin_XS_DBD__mysql__st_dataseek.start.annobin_XS_DBD__mysql__st_dataseek.endXS_DBD__mysql__st_dataseek.annobin_XS_DBD__mysql__st_more_results.start.annobin_XS_DBD__mysql__st_more_results.endXS_DBD__mysql__st_more_results.annobin_XS_DBD__mysql__db__async_check.start.annobin_XS_DBD__mysql__db__async_check.endXS_DBD__mysql__db__async_check.annobin_XS_DBD__mysql__db_mysql_fd.start.annobin_XS_DBD__mysql__db_mysql_fd.endXS_DBD__mysql__db_mysql_fd.annobin_XS_DBD__mysql__db_quote.start.annobin_XS_DBD__mysql__db_quote.endXS_DBD__mysql__db_quote.annobin_XS_DBD__mysql__db_ping.start.annobin_XS_DBD__mysql__db_ping.endXS_DBD__mysql__db_ping.annobin_XS_DBD__mysql__db_do.start.annobin_XS_DBD__mysql__db_do.endXS_DBD__mysql__db_do.annobin_XS_DBD__mysql__db__ListDBs.start.annobin_XS_DBD__mysql__db__ListDBs.endXS_DBD__mysql__db__ListDBs.annobin_XS_DBD__mysql__db_type_info_all.start.annobin_XS_DBD__mysql__db_type_info_all.endXS_DBD__mysql__db_type_info_all.annobin_XS_DBD__mysql__dr__admin_internal.start.annobin_XS_DBD__mysql__dr__admin_internal.endXS_DBD__mysql__dr__admin_internal.annobin_XS_DBD__mysql__st_DESTROY.start.annobin_XS_DBD__mysql__st_DESTROY.endXS_DBD__mysql__st_DESTROY.annobin_XS_DBD__mysql__st_FETCH_attrib.start.annobin_XS_DBD__mysql__st_FETCH_attrib.endXS_DBD__mysql__st_FETCH_attrib.annobin_XS_DBD__mysql__st_STORE.start.annobin_XS_DBD__mysql__st_STORE.endXS_DBD__mysql__st_STORE.annobin_XS_DBD__mysql__st_blob_read.start.annobin_XS_DBD__mysql__st_blob_read.endXS_DBD__mysql__st_blob_read.annobin_XS_DBD__mysql__st_finish.start.annobin_XS_DBD__mysql__st_finish.endXS_DBD__mysql__st_finish.annobin_dbixst_bounce_method.start.annobin_dbixst_bounce_method.enddbixst_bounce_method.annobin_XS_DBD__mysql__st_fetchrow_array.start.annobin_XS_DBD__mysql__st_fetchrow_array.endXS_DBD__mysql__st_fetchrow_array.annobin_XS_DBD__mysql__st_fetchrow_arrayref.start.annobin_XS_DBD__mysql__st_fetchrow_arrayref.endXS_DBD__mysql__st_fetchrow_arrayref.annobin_XS_DBD__mysql__st_execute.start.annobin_XS_DBD__mysql__st_execute.endXS_DBD__mysql__st_execute.annobin_XS_DBD__mysql__st_bind_param_inout.start.annobin_XS_DBD__mysql__st_bind_param_inout.endXS_DBD__mysql__st_bind_param_inout.annobin_XS_DBD__mysql__st_bind_param.start.annobin_XS_DBD__mysql__st_bind_param.endXS_DBD__mysql__st_bind_param.annobin_XS_DBD__mysql__st__prepare.start.annobin_XS_DBD__mysql__st__prepare.endXS_DBD__mysql__st__prepare.annobin_XS_DBD__mysql__db_DESTROY.start.annobin_XS_DBD__mysql__db_DESTROY.endXS_DBD__mysql__db_DESTROY.annobin_XS_DBD__mysql__db_FETCH.start.annobin_XS_DBD__mysql__db_FETCH.endXS_DBD__mysql__db_FETCH.annobin_XS_DBD__mysql__db_STORE.start.annobin_XS_DBD__mysql__db_STORE.endXS_DBD__mysql__db_STORE.annobin_XS_DBD__mysql__db_disconnect.start.annobin_XS_DBD__mysql__db_disconnect.endXS_DBD__mysql__db_disconnect.annobin_XS_DBD__mysql__db_rollback.start.annobin_XS_DBD__mysql__db_rollback.endXS_DBD__mysql__db_rollback.annobin_XS_DBD__mysql__db_commit.start.annobin_XS_DBD__mysql__db_commit.endXS_DBD__mysql__db_commit.annobin_XS_DBD__mysql__db_last_insert_id.start.annobin_XS_DBD__mysql__db_last_insert_id.endXS_DBD__mysql__db_last_insert_id.annobin_XS_DBD__mysql__db_selectrow_arrayref.start.annobin_XS_DBD__mysql__db_selectrow_arrayref.endXS_DBD__mysql__db_selectrow_arrayref.annobin_XS_DBD__mysql__db__login.start.annobin_XS_DBD__mysql__db__login.endXS_DBD__mysql__db__login.annobin_XS_DBD__mysql_constant.start.annobin_XS_DBD__mysql_constant.endXS_DBD__mysql_constant.annobin_dbdxst_fetchall_arrayref.isra.1.start.annobin_dbdxst_fetchall_arrayref.isra.1.enddbdxst_fetchall_arrayref.isra.1.annobin_XS_DBD__mysql__st_fetchall_arrayref.start.annobin_XS_DBD__mysql__st_fetchall_arrayref.endXS_DBD__mysql__st_fetchall_arrayref.annobin_XS_DBD__mysql__db_selectall_arrayref.start.annobin_XS_DBD__mysql__db_selectall_arrayref.endXS_DBD__mysql__db_selectall_arrayref.annobin_boot_DBD__mysql.start.annobin_boot_DBD__mysql.end.annobin_socket.c.annobin_socket.c_end.annobin_socket.c.hot.annobin_socket.c_end.hot.annobin_socket.c.unlikely.annobin_socket.c_end.unlikely.annobin_socket.c.startup.annobin_socket.c_end.startup.annobin_socket.c.exit.annobin_socket.c_end.exit.annobin_mysql_socket_ready.start.annobin_mysql_socket_ready.endcrtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.7295__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entry__FRAME_END____GNU_EH_FRAME_HDR__dso_handle_fini_DYNAMIC__TMC_END___GLOBAL_OFFSET_TABLE___errno_location@@GLIBC_2.2.5PerlIO_printfPerl_newSVsvPerl_sv_2bool_flagsPerl_safesysreallocmysql_thread_id@@libmysqlclient_21.0Perl_warn_nocontextPerl_newRVPerl_sv_setnv_mgmysql_errno@@libmysqlclient_21.0mysql_stmt_bind_result@@libmysqlclient_21.0_edatamysql_bind_phmysql_stmt_fetch_column@@libmysqlclient_21.0Perl_newXS_deffilemysql_st_destroymysql_sqlstate@@libmysqlclient_21.0Perl_call_methodmysql_session_track_get_first@@libmysqlclient_21.0Perl_newXS_flagsPerl_markstack_growmysql_db_FETCH_attribstrerror@@GLIBC_2.2.5Perl_safesysmallocmysql_get_proto_info@@libmysqlclient_21.0Perl_hv_clearmysql_field_seek@@libmysqlclient_21.0Perl_sv_2nv_flagsPerl_hv_iterinitmysql_stmt_init@@libmysqlclient_21.0mysql_stmt_num_rows@@libmysqlclient_21.0mysql_affected_rows@@libmysqlclient_21.0Perl_safesyscallocmysql_insert_id@@libmysqlclient_21.0Perl_croak_nocontext__cxa_finalize@@GLIBC_2.2.5mysql_send_query@@libmysqlclient_21.0mysql_error@@libmysqlclient_21.0strlen@@GLIBC_2.2.5mysql_init@@libmysqlclient_21.0mysql_next_result@@libmysqlclient_21.0mysql_autocommit@@libmysqlclient_21.0mysql_db_rollbackmysql_st_finishmysql_db_loginmysql_real_connect@@libmysqlclient_21.0mysql_st_STORE_attribstrncpy@@GLIBC_2.2.5mysql_store_result@@libmysqlclient_21.0Perl_sv_2pv_flagsPerl_get_svmysql_get_server_version@@libmysqlclient_21.0Perl_sv_newmortalPerl_mg_getmysql_db_commitmysql_get_host_info@@libmysqlclient_21.0mysql_get_client_version@@libmysqlclient_21.0mysql_stmt_attr_set@@libmysqlclient_21.0__sprintf_chk@@GLIBC_2.3.4Perl_sv_2uv_flagsPerl_av_pushPerl_newSVpvmysql_fetch_field@@libmysqlclient_21.0boot_DBD__mysqldbd_discon_allPerl_newSVuvmysql_list_fields@@libmysqlclient_21.0mysql_get_server_info@@libmysqlclient_21.0mysql_get_client_info@@libmysqlclient_21.0mysql_st_internal_executemysql_st_next_resultsPerl_newSVivPerl_hv_itervalmysql_stmt_store_result@@libmysqlclient_21.0mysql_stmt_field_count@@libmysqlclient_21.0Perl_dowantarrayPerl_croak_xs_usagePerl_hv_iterkeyPerl_hv_common_key_lenPerl_sv_free2mysql_options@@libmysqlclient_21.0mysql_socket_readymysql_num_rows@@libmysqlclient_21.0Perl_xs_handshakePerl_newSVmysql_stat@@libmysqlclient_21.0Perl_av_storePerl_safesysfreemysql_list_dbs@@libmysqlclient_21.0mysql_stmt_reset@@libmysqlclient_21.0Perl_newSVpvnPerl_sv_setivPerl_sv_setpvnmysql_data_seek@@libmysqlclient_21.0mysql_rollback@@libmysqlclient_21.0mysql_stmt_execute@@libmysqlclient_21.0Perl_newRV_noincmysql_st_blob_readmysql_free_result@@libmysqlclient_21.0mysql_fetch_row@@libmysqlclient_21.0Perl_stack_growstpcpy@@GLIBC_2.2.5Perl_av_popmysql_st_internal_execute41mysql_warning_count@@libmysqlclient_21.0__ctype_b_loc@@GLIBC_2.3mysql_db_async_readymysql_get_option@@libmysqlclient_21.0mysql_dr_errorPerl_sv_setpvmysql_fetch_fields@@libmysqlclient_21.0__stack_chk_fail@@GLIBC_2.4Perl_sv_setiv_mgPerl_av_makePerl_sv_setuvmysql_st_FETCH_attribmysql_db_async_resultmysql_stmt_param_count@@libmysqlclient_21.0mysql_ssl_set@@libmysqlclient_21.0free@@GLIBC_2.2.5Perl_hv_iternext_flagsmysql_db_reconnectmysql_stmt_errno@@libmysqlclient_21.0mysql_stmt_sqlstate@@libmysqlclient_21.0mysql_db_STORE_attribmysql_dr_connectmysql_stmt_affected_rows@@libmysqlclient_21.0mysql_db_type_info_allPerl_av_extendmysql_refresh@@libmysqlclient_21.0mysql_db_last_insert_idmysql_stmt_result_metadata@@libmysqlclient_21.0mysql_info@@libmysqlclient_21.0malloc@@GLIBC_2.2.5mysql_stmt_error@@libmysqlclient_21.0mysql_close@@libmysqlclient_21.0Perl_av_lenmysql_db_quotemysql_real_query@@libmysqlclient_21.0mysql_stmt_close@@libmysqlclient_21.0mysql_fetch_lengths@@libmysqlclient_21.0stderr@@GLIBC_2.2.5Perl_sv_2mortalPL_thr_keyPerl_get_cvpthread_getspecific@@GLIBC_2.2.5mysql_st_FETCH_internalstrtol@@GLIBC_2.2.5Perl_sv_setnvmysql_dr_initmysql_st_clean_cursorpoll@@GLIBC_2.2.5__bss_startmysql_field_count@@libmysqlclient_21.0mysql_st_preparemysql_db_destroyPerl_mg_sizePerl_sv_2iv_flagsmysql_num_fields@@libmysqlclient_21.0Perl_newSVpvf_nocontextmysql_db_disconnectmysql_read_query_result@@libmysqlclient_21.0Perl_mg_findPerl_xs_boot_epilogPerl_newSV_typemysql_stmt_bind_param@@libmysqlclient_21.0mysql_stmt_free_result@@libmysqlclient_21.0mysql_describemysql_stmt_prepare@@libmysqlclient_21.0mysql_real_escape_string@@libmysqlclient_21.0mysql_stmt_fetch@@libmysqlclient_21.0Perl_looks_like_numbermysql_st_free_result_sets_ITM_deregisterTMCloneTablemysql_options4@@libmysqlclient_21.0mysql_ping@@libmysqlclient_21.0mysql_use_result@@libmysqlclient_21.0mysql_commit@@libmysqlclient_21.0mysql_st_executemysql_dr_warnmysql_more_results@@libmysqlclient_21.0mysql_stmt_data_seek@@libmysqlclient_21.0__gmon_start___ITM_registerTMCloneTablefwrite@@GLIBC_2.2.5Perl_sv_utf8_decodemysql_server_end@@libmysqlclient_21.0mysql_st_fetchPerl_sv_backoff.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.note.gnu.property.init_array.fini_array.data.rel.ro.dynamic.got.bss.comment.gnu.build.attributes.debug_aranges.debug_info.debug_abbrev.debug_line.debug_str.debug_loc.debug_ranges88$.öÿÿo``d8 ÈÈ@ÈÈ^ Hÿÿÿo&#&#€Uþÿÿo¨$¨$d8%8%¸nBð3ð3øxèDèDsEE` ~pPpPP ‡À[À[Pvv “ v v¨2›ȨȨ쩸«¸«˜³PÉPÉ ÆÑ!ÑÒÑ!ÑÞ Ñ! Ñx ë˜ç!˜çpôê!êðùð!øïþ0øï,ða$ðXA|1, 2S?8_qäFC‚ÿR0Bóg]ù©TçhM‘Ð: Ìè/"@ üè6ð2vperl5/auto/LWP/Protocol/https/.packlist000064400000000140152462470720013767 0ustar00/usr/local/share/man/man3/LWP::Protocol::https.3pm /usr/local/share/perl5/LWP/Protocol/https.pm perl5/auto/Canary/Stability/.packlist000064400000000133152462470720013545 0ustar00/usr/local/share/man/man3/Canary::Stability.3pm /usr/local/share/perl5/Canary/Stability.pm perl5/auto/common/sense/.packlist000064400000000173152462470720012775 0ustar00/usr/local/lib64/perl5/common/sense.pm /usr/local/lib64/perl5/common/sense.pod /usr/local/share/man/man3/common::sense.3pm perl5/auto/Mozilla/CA/.packlist000064400000000253152462470720012261 0ustar00/usr/local/share/man/man3/Mozilla::CA.3pm /usr/local/share/perl5/Mozilla/CA.pm /usr/local/share/perl5/Mozilla/CA/cacert.pem /usr/local/share/perl5/Mozilla/mk-ca-bundle.pl perl5/auto/JSON/.packlist000064400000000745152462470720011146 0ustar00/usr/local/share/man/man3/JSON.3pm /usr/local/share/man/man3/JSON::backportPP.3pm /usr/local/share/man/man3/JSON::backportPP::Boolean.3pm /usr/local/share/man/man3/JSON::backportPP::Compat5005.3pm /usr/local/share/man/man3/JSON::backportPP::Compat5006.3pm /usr/local/share/perl5/JSON.pm /usr/local/share/perl5/JSON/backportPP.pm /usr/local/share/perl5/JSON/backportPP/Boolean.pm /usr/local/share/perl5/JSON/backportPP/Compat5005.pm /usr/local/share/perl5/JSON/backportPP/Compat5006.pm perl5/auto/JSON/PP/.packlist000064400000000336152462470720011461 0ustar00/usr/local/bin/json_pp /usr/local/share/man/man1/json_pp.1 /usr/local/share/man/man3/JSON::PP.3pm /usr/local/share/man/man3/JSON::PP::Boolean.3pm /usr/local/share/perl5/JSON/PP.pm /usr/local/share/perl5/JSON/PP/Boolean.pm perl5/auto/JSON/XS/.packlist000064400000000410152462470720011465 0ustar00/usr/local/bin/json_xs /usr/local/lib64/perl5/JSON/XS.pm /usr/local/lib64/perl5/JSON/XS/Boolean.pm /usr/local/lib64/perl5/auto/JSON/XS/XS.so /usr/local/share/man/man1/json_xs.1 /usr/local/share/man/man3/JSON::XS.3pm /usr/local/share/man/man3/JSON::XS::Boolean.3pm perl5/auto/JSON/XS/XS.so000055500001147000152462470720010560 0ustar00ELF> #@Å@8 @$#€Û€Û 0ë0ë 0ë Ð HëHë Hë 888$$`Û`Û`Û Såtd`Û`Û`Û Påtd@Ï@Ï@ÏddQåtdRåtd0ë0ë 0ë ÐÐGNUÞÊ^À­ŸÒ 7* ­äÅϱTˆ` TVBEÕì»ã’|z³6éÙqXSv£Ð¢C §åú¬Åo¸Õ‘e{ár¦6Œ:*É e/æõ„µ ˆÔpÈï‘á ¸{ ^CZ­Ïj!ûÐKg•…k'Dü´5å, -—F"ô8PRdð wHñ Á P±¥kð __gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizelibpthread.so.0PL_thr_keypthread_getspecificPerl_sv_growPerl_croak_nocontextPerl_sv_2pv_flags__stack_chk_failmemcmppowPerl_sv_cmp_flagsPerl_newSVpvn_flagsPerl_sv_derived_fromPerl_sv_2mortalPerl_gv_stashpvPerl_croak_xs_usagePerl_stack_growPerl_sv_2iv_flagsPerl_newSVsvPerl_sv_chopPerl_sv_newmortalPerl_sv_setiv_mgPerl_sv_2uv_flagsPerl_sv_setuv_mgPerl_newSVPerl_newRV_noincPerl_sv_blessPerl_get_svPerl_utf8_lengthmemcpyPerl_newSVpvnPerl_utf8n_to_uvuniPerl_sv_free2Perl_hv_commonPerl_hv_placeholders_getPerl_newSV_typePerl_newSVnvPerl_av_pushPerl_hv_common_key_lenPerl_av_lenPerl_gv_stashsvPerl_gv_fetchmethod_autoloadPerl_push_scopePerl_savetmpsPerl_av_fetchPerl_call_svPerl_pop_scopePerl_newSVivPerl_grok_numberPerl_free_tmpsPerl_newSVuvPerl_markstack_growPerl_hv_iterinitPerl_hv_iternext_flagsPerl_hv_iterkeysvPerl_sv_utf8_upgrade_flags_growPerl_sv_upgradePerl_sv_utf8_downgradePerl_save_vptrPerl_pv_uni_displaymemmovePerl_block_gimmePL_utf8skipPL_hexdigit__sprintf_chkPerl_mg_getgcvtstrlen__snprintf_chkPerl_newRVmemsetPerl_hv_itervalqsortPerl_safesysreallocboot_JSON__XSPerl_xs_handshakePerl_newXS_deffilePerl_apply_attrs_stringPerl_newXS_flagsPerl_newSVpvPerl_get_cvPerl_xs_boot_epiloglibperl.so.5.26libc.so.6_edata__bss_start_endGLIBC_2.2.5GLIBC_2.14GLIBC_2.4GLIBC_2.3.4U ui |Z”‘–ˆii “ui |ti 0ë P$8ë $@ë @ë Èï Ðï Øï àï Dèï Jðï Nøï Q`í hí pí xí €í ˆí í ˜í   í  ¨í  °í  ¸í  Àí Èí Ðí Øí àí èí ðí øí î î î î  î (î 0î 8î @î  Hî !Pî "Xî #`î $hî %pî &xî '€î (ˆî )î *˜î + î ,¨î -°î .¸î /Àî 0Èî 1Ðî 2Øî 3àî 4èî 5ðî 6øî 7ï 8ï 9ï :ï ; ï <(ï =0ï >8ï ?@ï @Hï APï BXï C`ï Ehï Fpï Gxï H€ï Iˆï Kï L˜ï M ï N¨ï O°ï P¸ï RÀï SóúHƒìH‹ùÕ H…ÀtÿÐHƒÄÃÿ5ZÓ òÿ%[Ó óúhòéáÿÿÿóúhòéÑÿÿÿóúhòéÁÿÿÿóúhòé±ÿÿÿóúhòé¡ÿÿÿóúhòé‘ÿÿÿóúhòéÿÿÿóúhòéqÿÿÿóúhòéaÿÿÿóúh òéQÿÿÿóúh òéAÿÿÿóúh òé1ÿÿÿóúh òé!ÿÿÿóúh òéÿÿÿóúhòéÿÿÿóúhòéñþÿÿóúhòéáþÿÿóúhòéÑþÿÿóúhòéÁþÿÿóúhòé±þÿÿóúhòé¡þÿÿóúhòé‘þÿÿóúhòéþÿÿóúhòéqþÿÿóúhòéaþÿÿóúhòéQþÿÿóúhòéAþÿÿóúhòé1þÿÿóúhòé!þÿÿóúhòéþÿÿóúhòéþÿÿóúhòéñýÿÿóúh òéáýÿÿóúh!òéÑýÿÿóúh"òéÁýÿÿóúh#òé±ýÿÿóúh$òé¡ýÿÿóúh%òé‘ýÿÿóúh&òéýÿÿóúh'òéqýÿÿóúh(òéaýÿÿóúh)òéQýÿÿóúh*òéAýÿÿóúh+òé1ýÿÿóúh,òé!ýÿÿóúh-òéýÿÿóúh.òéýÿÿóúh/òéñüÿÿóúh0òéáüÿÿóúh1òéÑüÿÿóúh2òéÁüÿÿóúh3òé±üÿÿóúh4òé¡üÿÿóúh5òé‘üÿÿóúh6òéüÿÿóúh7òéqüÿÿóúh8òéaüÿÿóúh9òéQüÿÿóúh:òéAüÿÿóúh;òé1üÿÿóúh<òé!üÿÿóúh=òéüÿÿóúh>òéüÿÿóúh?òéñûÿÿóúh@òéáûÿÿóúhAòéÑûÿÿóúhBòéÁûÿÿóúhCòé±ûÿÿóúhDòé¡ûÿÿóúhEòé‘ûÿÿóúhFòéûÿÿóúhGòéqûÿÿóúhHòéaûÿÿóúhIòéQûÿÿóúhJòéAûÿÿóúhKòé1ûÿÿóúhLòé!ûÿÿóúòÿ%…Î Dóúòÿ%}Î Dóúòÿ%uÎ Dóúòÿ%mÎ Dóúòÿ%eÎ Dóúòÿ%]Î Dóúòÿ%UÎ Dóúòÿ%MÎ Dóúòÿ%EÎ Dóúòÿ%=Î Dóúòÿ%5Î Dóúòÿ%-Î Dóúòÿ%%Î Dóúòÿ%Î Dóúòÿ%Î Dóúòÿ% Î Dóúòÿ%Î Dóúòÿ%ýÍ Dóúòÿ%õÍ Dóúòÿ%íÍ Dóúòÿ%åÍ Dóúòÿ%ÝÍ Dóúòÿ%ÕÍ Dóúòÿ%ÍÍ Dóúòÿ%ÅÍ Dóúòÿ%½Í Dóúòÿ%µÍ Dóúòÿ%­Í Dóúòÿ%¥Í Dóúòÿ%Í Dóúòÿ%•Í Dóúòÿ%Í Dóúòÿ%…Í Dóúòÿ%}Í Dóúòÿ%uÍ Dóúòÿ%mÍ Dóúòÿ%eÍ Dóúòÿ%]Í Dóúòÿ%UÍ Dóúòÿ%MÍ Dóúòÿ%EÍ Dóúòÿ%=Í Dóúòÿ%5Í Dóúòÿ%-Í Dóúòÿ%%Í Dóúòÿ%Í Dóúòÿ%Í Dóúòÿ% Í Dóúòÿ%Í Dóúòÿ%ýÌ Dóúòÿ%õÌ Dóúòÿ%íÌ Dóúòÿ%åÌ Dóúòÿ%ÝÌ Dóúòÿ%ÕÌ Dóúòÿ%ÍÌ Dóúòÿ%ÅÌ Dóúòÿ%½Ì Dóúòÿ%µÌ Dóúòÿ%­Ì Dóúòÿ%¥Ì Dóúòÿ%Ì Dóúòÿ%•Ì Dóúòÿ%Ì Dóúòÿ%…Ì Dóúòÿ%}Ì Dóúòÿ%uÌ Dóúòÿ%mÌ Dóúòÿ%eÌ Dóúòÿ%]Ì Dóúòÿ%UÌ Dóúòÿ%MÌ Dóúòÿ%EÌ Dóúòÿ%=Ì Dóúòÿ%5Ì Dóúòÿ%-Ì Dóúòÿ%%Ì DH=YÌ HRÌ H9øtH‹Ì H…Àt ÿà€Ã€H=)Ì H5"Ì H)þHÁþH‰ðHÁè?HÆHÑþtH‹íË H…ÀtÿàfDÀóú€=åË u+UHƒ=ÊË H‰åt H=Ç èÿÿÿèdÿÿÿÆ½Ë ]ÃÀóúéwÿÿÿ€óúATUH‹-bË S‹}è©üÿÿ‹}è¡üÿÿ‹}H‹PxHJüH‰Hx‹ƒÃèˆüÿÿ‹}HcÛHÇ—Ì HÇ„Ì HÇqÌ HÇ^Ì èQüÿÿ‹}L‹`èEüÿÿITÜøH‰[]A\ÄUSHƒìHÖrhH‰óHÑëHór]H‰ýHûèw6öEu H‹EH9Xs6H‹§Ê ‹8èðûÿÿHƒÄH‰ÚH‰î[H‰Ç]élûÿÿ@HËÿHƒëë½H‹EHƒÄ[]ÃH=¦”1Àèßûÿÿff.„@SHƒì‹W dH‹%(H‰D$1À¸ÿÿÿÿ¶Êƒù wIHÇ$…Ét8â H‰ûúuFH‹H‹PH‹GH‰$Hƒúu¶¸€ú1t €ú0tG¸ÿÿÿÿH‹t$dH34%(u6HƒÄ[Ã@H‹ÁÉ ‹8è ûÿÿH‰â¹H‰ÞH‰ÇèçùÿÿH‹$ë¢1Àëºègùÿÿ€óúUSHƒìH‹H‹H‹yH‹@HcOHcPHpH9ÊH‰ÕH‰ËHGÑHƒÇ)ëèäùÿÿ…ÀDÃHƒÄ[]ÄAƒèAVA‰ÎAUI‰õATI‰ÔUS¶E…ÀޝH¹—™™™™™™1í1Ûë%€H›¶ÀHƒÇƒÅHPH9ˇ­¶ƒè0< vÛ<þ„;ƒÈ E‹$<5„¬E…öuO€fïÉò¨òA*Èè:ûÿÿH…Ûx=fïÉòH*ËòYÈ[òAXMòAMA,$]A\A]A^ÀA)èE‰$므H‰ØƒãfïÒHÑèH ØòH*ÐòXÒf(Êë­f„E…öt{A),$¹L‰âL‰îèçþÿÿE‹$묾G<-„Ê<+„àPЀú w0HO1ÿ1Ò@HƒÁ’TPоpÐ@€þ véAA)Ð…ÿDDÀE‰$E…ö„ÿÿÿéJÿÿÿf1ÉL‰âL‰îèsþÿÿE‹$éêþÿÿf.„HƒÇ¹L‰âL‰îèLþÿÿE‹$E…ö„¿þÿÿéÿÿÿf.„¶Ðƒê0ƒú BþÿÿHƒÇ¶‰Ðƒê0ƒú ~ïé+þÿÿ¾GHO¿PЀú †3ÿÿÿéXÿÿÿ¾GHOPЀú ‡Dÿÿÿ1ÿéÿÿÿHƒì(dH‹%(H‰D$1À€?-HT$ Ht$HÇD$ÇD$ t,A¸ 1ÉèýÿÿòD$H‹D$dH3%(u*HƒÄ(Ã@HƒÇA¸ 1Éè_ýÿÿòD$fWñ¥ëÆèZöÿÿf.„óúAVAUI‰õATUH‹-kÆ SH‹‹}H‹@I‰ÆIƒÆ„ë‹PƒúþuKL‹`I‹EH‹HI‰ÎIƒÆ„²‹QƒúþujH‹Yèq÷ÿÿL‰âH‰Þ¹[H‰Ç]A\A]A^é6÷ÿÿfDHcÚE¶dèB÷ÿÿH‰ÚL‰öAÁäH‰ÇAä AÌD‰áèöÿÿ‹}I‰Ä뀀HcÚE¶lè÷ÿÿH‰ÚL‰öAÁåH‰ÇAå AÍD‰éèOöÿÿ‹}H‰Ãé^ÿÿÿ@èËöÿÿ‹}H˜8éFÿÿÿ@è³öÿÿ‹}L 8é ÿÿÿ@óúAVAUI‰õATUSH‹:Å ‹;èƒöÿÿ‹;L‹ èyöÿÿ‹;H‹PxHJüH‰HxLc2ècöÿÿH‹@JðI)ÄIÁüAƒü…f‹;AnHcíè<öÿÿL,íH‹@H‹èö@ „"‹;èöÿÿH‹@H‹èH‹@ö@„‹;èþõÿÿH‹@H‹èH‹@H‹L‹ H‹Æ H…À„¼‹;I9Ät0èÐõÿÿ‹;H‹@L‹$èèÁõÿÿH‡˜L‰æH‰Çèßóÿÿ„À„§‹;è õÿÿH‹@H‹èH‹@H‹@Hƒx(…“L‹` ‹;M…ätJAƒD$èoõÿÿL‰æH‰Çèôõÿÿ‹;I‰ÄèZõÿÿH‹@L‰$è‹;èKõÿÿ‹;H‹hè@õÿÿLíH‰([]A\A]A^Ãè+õÿÿ‹;L 8묋;èõÿÿºH5Ú—H‰ÇèÅôÿÿé$ÿÿÿH= Ž1Àè"õÿÿH=Ž1ÀèõÿÿH5¥—L‰ïè5ôÿÿDóúAWI‰÷AVAUATUSHƒìH‹dà ‹;è­ôÿÿ‹;L‹(è£ôÿÿ‹;H‹PxHJüH‰HxLc"èôÿÿL‰îI‹H‹@D‹r(JàH)ÆH‰ðHÁøƒø…f‹;Al$MeøHcíèUôÿÿH‹@H‹èö@ „3‹;è<ôÿÿH‹@H‹èH‹@ö@„‹;èôÿÿH‹@H‹èH‹@H‹L‹8H‹&Ä H…À„Í‹;I9Çt0èñóÿÿ‹;H‹@L‹<èèâóÿÿH¨–L‰þH‰Çèòÿÿ„À„¸‹;èÁóÿÿ‹;H‹@H‹èH‹@H‹hèªóÿÿH‹@ L)àH…À~F‹;D…uu.è‘óÿÿHPI‰D$‹;èóÿÿL‰(HƒÄ[]A\A]A^A_ÃDècóÿÿHhëЋ;èQóÿÿL‰âL‰æ¹H‰Çè>ñÿÿI‰ÄLhë—D‹;è)óÿÿºH5ê•H‰ÇèÕòÿÿéÿÿÿH=Œ1Àè2óÿÿH5ÕL‰ÿèSòÿÿóúAWAVAUATI‰ôUSHƒìH‹„Á ‹;èÍòÿÿ‹;H‹(èÃòÿÿ‹;H‹PxI‰íHrüH‰pxD‹2èªòÿÿIcÖANH‹@‰L$HÐI)ÅI‹$IÁýD‹x(AEÿƒø‡IcÅ‹;HÁàH)ÅèjòÿÿLcd$H‹@J‹àö@ „Ý‹;èLòÿÿH‹@J‹àH‹@ö@„À‹;è/òÿÿH‹@J‹àH‹@H‹H‹H‹6 H…À„m‹;H9Át7èòÿÿ‹;H‹@J‹4àH‰t$èíñÿÿH‹t$H®”H‰Çè ðÿÿ„À„[‹;èÊñÿÿH‹@J‹àH‹@H‹HAƒýT‹A ×D‰9‹;è¥ñÿÿH‹@ H)èH…ÀŽÍ‹;HƒÅèŠñÿÿ‹;H‹@J‹àH‰EèwñÿÿH‰(HƒÄ[]A\A]A^A_ÃD‹;H‰L$AƒÆMcöèMñÿÿH‹L$H‹@J‹ð‹@ % =tI‹;H‰L$è%ñÿÿ‹;H‹@N‹,ðèñÿÿºL‰îH‰Çè¶îÿÿH‹L$‹…À…EÿÿÿA÷×A!×é=ÿÿÿ@‹;èáðÿÿH‹L$H‹@J‹ðH‹‹@ ëË@‹;èÁðÿÿH‰êH‰î¹H‰Çè®îÿÿH‰ÅéÿÿÿfD‹;H‰L$è”ðÿÿºH5U“H‰Çè@ðÿÿH‹L$éiþÿÿH=‰1Àè˜ðÿÿH57“L‰çè¹ïÿÿf„óúAVI‰öAUATUSH‹ê¾ ‹;è3ðÿÿ‹;H‹(è)ðÿÿ‹;H‹PxHJüH‰HxLc*èðÿÿH‰îH‹@JèH)ÆH‰ðHÁøƒø…R‹;EeHƒíMcäèãïÿÿH‹@J‹àö@ „ ‹;èÊïÿÿH‹@J‹àH‹@ö@„‹;è­ïÿÿH‹@J‹àH‹@H‹L‹(H‹´¿ H…À„›‹;I9Åt0èïÿÿ‹;H‹@N‹,àèpïÿÿH6’L‰îH‰ÇèŽíÿÿ„À„¥‹;èOïÿÿ‹;H‹@J‹àH‹@L‹`Iƒ|$8t2Iƒ|$@t*è(ïÿÿH‹@ H)èHƒø~KI‹D$8‹;HƒÅH‰EøI‹D$@H‰EèþîÿÿH‰([]A\A]A^Ãf‹;èéîÿÿºH5ª‘H‰Çè•îÿÿéEÿÿÿ‹;èÉîÿÿH‰êH‰î¹H‰Çè¶ìÿÿH‰Åë–H=º‡1ÀèÓîÿÿH5d‘L‰÷èôíÿÿ@óúAWI‰÷AVAUATUSHƒìH‹$½ ‹;èmîÿÿ‹;H‹(ècîÿÿ‹;H‹PxI‰íHJüH‰HxD‹2èJîÿÿIcÖH‹@HÐI)ÅIÁýAEÿƒø‡ëIcÅ‹;EfHÁàMcäH)ÅèîÿÿH‹@J‹àö@ „³‹;èúíÿÿH‹@J‹àH‹@ö@„–‹;èÝíÿÿH‹@J‹àH‹@H‹L‹8H‹ä½ H…À„+‹;I9Çt0è¯íÿÿ‹;H‹@N‹<àè íÿÿHfL‰þH‰Çè¾ëÿÿ„À„8‹;èíÿÿ1öHÇ$H‹@J‹àH‹@L‹xAƒý‹;H‰t$èSíÿÿH‹t$H‰Çè–ìÿÿ‹;I‰G8è;íÿÿH‹4$H‰Çèìÿÿ‹;I‰G@è$íÿÿH‹@ H)èH…Àޤ‹;HƒÅè íÿÿ‹;H‹@J‹àH‰EèöìÿÿH‰(HƒÄ[]A\A]A^A_Ã@‹;èÙìÿÿAVH‹@HcÒH‹4ÐAƒý„aÿÿÿ‹;H‰t$AƒÆMcöè­ìÿÿH‹t$H‹@J‹ðH‰$é8ÿÿÿ€‹;è‰ìÿÿºH5JH‰Çè5ìÿÿéµþÿÿ‹;èiìÿÿH‰êH‰î¹H‰ÇèVêÿÿH‰Åé:ÿÿÿH=W…1ÀèpìÿÿH5L‰ÿè‘ëÿÿóúAVAUI‰õATUSH‹ʺ ‹;èìÿÿ‹;L‹ è ìÿÿ‹;H‹PxHJüH‰HxLc2èóëÿÿH‹@JðI)ÄIÁüAƒü…€‹;AnHcíèÌëÿÿL$íH‹@H‹èö@ „J‹;è«ëÿÿH‹@H‹èH‹@ö@„-‹;èŽëÿÿH‹@H‹èH‹@H‹L‹(H‹•» H…À„ä‹;I9Åt0è`ëÿÿ‹;H‹@L‹,èèQëÿÿHŽL‰îH‰Çèoéÿÿ„À„Ï‹;è0ëÿÿH‹@H‹èH‹@H‹hH‹U(H…ÒtDL‹m ‹;A‹E % =uQI‹EL4èôêÿÿL‰òL‰îH‰ÇèÆéÿÿHÇE(ÇE0ÆE4‹;èÌêÿÿ‹;H‹hèÁêÿÿJT%øH‰[]A\A]A^Ãè«êÿÿ1ÒL‰î¹H‰Çè‰éÿÿH‹U(L‹m ‹;ëD‹;èêÿÿºH5BH‰Çè-êÿÿéüþÿÿH=qƒ1ÀèŠêÿÿH5L‰ïè«éÿÿff.„óúAWAVAUI‰õATUSHƒìH‹Ô¸ ‹;èêÿÿ‹;L‹ èêÿÿ‹;H‹PxHJüH‰HxLc2èýéÿÿH‹@JðI)ÄIÁüAƒü…Ü‹;AnèÙéÿÿ‹;H‹@ö@#…IèÄéÿÿH‰ÇèüëÿÿI‰Ä‹;HcíL,íè§éÿÿH‹@H‹èö@ „‹;èŽéÿÿH‹@H‹èH‹@ö@„b‹;èqéÿÿH‹@H‹èH‹@H‹L‹0H‹x¹ H…À„÷‹;I9Æt0èCéÿÿ‹;H‹@L‹4èè4éÿÿHú‹L‰öH‰ÇèRçÿÿ„À„‹;èéÿÿ‹;H‹@H‹èH‹@H‹@H‹hèøèÿÿ‹;H‹@HcíNt(øA‹D$ %ÿ™ƒøA”ÇèÔèÿÿ€¸¹„—E„ÿ„ŽAL$ I‰l$M‰f‹;è¥èÿÿ‹;H‹hèšèÿÿLíH‰(HƒÄ[]A\A]A^A_ÃDè{èÿÿ‹;L‹`èpèÿÿH‹@H‹@M‹$Äé¦þÿÿ€‹;èQèÿÿºH5‹H‰Çèýçÿÿééþÿÿ„‹;è)èÿÿH‰êL‰æH‰Çè»æÿÿéfÿÿÿH=1Àè8èÿÿH5ÉŠL‰ïèYçÿÿf„óúAWI‰÷AVAUATUSHƒìH‹„¶ ‹;èÍçÿÿ‹;H‹(èÃçÿÿ‹;H‹PxI‰íHJüH‰HxD‹2èªçÿÿIcÖH‹@HÐI)ÅIÁýAEÿƒø‡áIcÅ‹;EfHÁàMcäH)ÅèsçÿÿH‹@J‹àö@ „©‹;èZçÿÿH‹@J‹àH‹@ö@„Œ‹;è=çÿÿH‹@J‹àH‹@H‹L‹8H‹D· H…À„C‹;I9Çt0èçÿÿ‹;H‹@N‹<àèçÿÿHƉL‰þH‰Çèåÿÿ„À„.‹;èßæÿÿH‹@J‹àH‹@L‹x1ÀAƒýOI‰G‹;è¼æÿÿH‹@ H)èH…Àެ‹;HƒÅè¡æÿÿ‹;H‹@J‹àH‰EèŽæÿÿH‰(HƒÄ[]A\A]A^A_Ã@‹;AƒÆMcöèjæÿÿ‹;H‹@J‹ð‹@ % €=€t1èLæÿÿ‹;H‹@N‹,ðè=æÿÿºL‰îH‰Çèäÿÿ‰Àé_ÿÿÿfDèæÿÿH‹@J‹ðH‹‹@ éAÿÿÿ„‹;èùåÿÿH‰êH‰î¹H‰ÇèæãÿÿH‰Åé2ÿÿÿfD‹;èÑåÿÿºH5’ˆH‰Çè}åÿÿéþÿÿH=Á~1ÀèÚåÿÿH5¥ˆL‰ÿèûäÿÿff.„óúAWI‰÷AVAUATUSHƒìH‹$´ ‹;èmåÿÿ‹;H‹(ècåÿÿ‹;H‹PxI‰íHJüH‰HxD‹2èJåÿÿIcÖH‹@HÐI)ÅIÁýAEÿƒø‡áIcÅ‹;EfHÁàMcäH)ÅèåÿÿH‹@J‹àö@ „©‹;èúäÿÿH‹@J‹àH‹@ö@„Œ‹;èÝäÿÿH‹@J‹àH‹@H‹L‹8H‹ä´ H…À„C‹;I9Çt0è¯äÿÿ‹;H‹@N‹<àè äÿÿHf‡L‰þH‰Çè¾âÿÿ„À„.‹;èäÿÿH‹@J‹àH‹@L‹x¸€AƒýTA‰G‹;èYäÿÿH‹@ H)èH…ÀŽ©‹;HƒÅè>äÿÿ‹;H‹@J‹àH‰Eè+äÿÿH‰(HƒÄ[]A\A]A^A_Ãf„‹;AƒÆMcöèäÿÿ‹;H‹@J‹ð‹@ % €=€t)èäãÿÿ‹;H‹@N‹,ðèÕãÿÿºL‰îH‰Çèµáÿÿé\ÿÿÿè»ãÿÿH‹@J‹ðH‹‹@ éDÿÿÿ„‹;è™ãÿÿH‰êH‰î¹H‰Çè†áÿÿH‰Åé5ÿÿÿfD‹;èqãÿÿºH52†H‰ÇèãÿÿéþÿÿH=a|1ÀèzãÿÿH5W†L‰ÿè›âÿÿff.„óúAWAVAUI‰õATUSHƒìH‹ı ‹;è ãÿÿ‹;L‹ èãÿÿ‹;H‹PxHJüH‰HxLc2èíâÿÿH‹@JðI)ÄIÁüAƒü…Ü‹;AnèÉâÿÿ‹;H‹@ö@#…Iè´âÿÿH‰ÇèìäÿÿI‰Ä‹;HcíL,íè—âÿÿH‹@H‹èö@ „‹;è~âÿÿH‹@H‹èH‹@ö@„b‹;èaâÿÿH‹@H‹èH‹@H‹L‹0H‹h² H…À„÷‹;I9Æt0è3âÿÿ‹;H‹@L‹4èè$âÿÿHê„L‰öH‰ÇèBàÿÿ„À„‹;èâÿÿ‹;H‹@H‹èH‹@H‹@‹hèéáÿÿ‹;H‹@Nt(øA‹D$ %ÿ™ƒøA”ÇèÈáÿÿ€¸¹„›E„ÿ„’AL$ I‰l$M‰f‹;è™áÿÿ‹;H‹hèŽáÿÿLíH‰(HƒÄ[]A\A]A^A_Ãf„èkáÿÿ‹;L‹`è`áÿÿH‹@H‹@M‹$Äé¦þÿÿ€‹;èAáÿÿºH5„H‰Çèíàÿÿééþÿÿ„‹;èáÿÿH‰êL‰æH‰ÇèÛâÿÿébÿÿÿH=z1Àè(áÿÿH5¹ƒL‰ïèIàÿÿf„óúAWAVI‰öAUATUSHƒìH‹t¯ ‹;è½àÿÿ‹;H‹(è³àÿÿ‹;H‹PxHJüH‰HxLc"èàÿÿH‰éH‹@JàH)ÁH‰ÈHÁøƒø…Þ‹;El$LeøMcíèlàÿÿ‹;H‹@J‹è‹@ % =„'èJàÿÿ‹;H‹@N‹,èè;àÿÿ¹1ÒL‰îH‰ÇèßÿÿI‰Å‹;èàÿÿ¾HH‰ÇèrÞÿÿfïÀHºI‰Æ‹@ %ÿÿ_€ÌDA‰F I‹FHÇ@@H‰‹;@@ @0èÍßÿÿH‹@ L)àH…ÀŽÍL=ƒ‚¹ L‰îL‰ÿó¦‹;—À„À…ŠL‹-³¯ M…í„Êè…ßÿÿL‰öH‰ÇèZÝÿÿ‹;I‰ÆèpßÿÿL‰êL‰öH‰Çè"Þÿÿ‹;I‰ÅèXßÿÿL‰îH‰ÇèÝßÿÿ‹;I‰D$èAßÿÿH‰(HƒÄ[]A\A]A^A_Àè#ßÿÿH‹@J‹èL‹héìþÿÿfè ßÿÿL‰îºH‰Çè»Þÿÿ‹;I‰Åégÿÿÿ‹;èéÞÿÿL‰âL‰æ¹H‰ÇèÖÜÿÿI‰ÄHhé ÿÿÿf.„è»ÞÿÿºL‰þH‰ÇèkÞÿÿ‹;I‰ÅéÿÿÿH5ÌL‰÷èòÝÿÿfH‹9­ SH‰û‹8è~ÞÿÿºH‰ÞH‰ÇèŽÞÿÿH‹PH J [Ãf.„H‹L F­ ¶I¾„ÀxJ¶JI¾ „Éx=D¶BO¾E„Àx.D¶RO¾ E„ÉxHÁà HÁáHƒÂH ÈIÁàH‰L ÈL ÀÃfHiwH‰HÇÀÿÿÿÿÃff.„H‹?1À‹W €úvH‹H‹5Ñ­ H91t$âtÃHƒìèÿáÿÿHƒÄ÷ÐÁèÃD¸Ãf.„UH‰õSH‰ûHƒìH‹¬ ‹8èfÝÿÿH9ëwHƒÄH‰êH‰ÞH‰Ç[]é}ÞÿÿDH‰ÚH‰îH‰ÇèjÞÿÿHƒÄH÷Ø[]ÃAWAVAUATUSLœ$ÀÿÿHìHƒ $L9ÜuïHƒìXE1ÿH‹/dH‹%(H‰„$H@1ÀHD$(I‰üLl$0ÇD$H‰D$fDL‰ëM\$ë7fD<\„ÀPà€ú_‡LˆHUHƒÃL‰õI…@H9öELu<"uÃL)ëM…ÿ„I‹H‹pH‹@H)ðH9؆0I‹H‰ÚH÷L‰îèþÛÿÿI‹HX€}"…mÿÿÿM…ÿ„6A‹G I‹W%ÿÿ_€ÌDA‰G I‹H‹@Æ‹D$…ÀtAO M‰4$ég@¶UBÞÿàDHƒÅL‰ÞL‰çL‰\$I‰,$èhýÿÿI‹,$I‰ÆHƒøÿ„ H=ÿ×L‹\$‡HUHƒø‡úˆHƒÃI…@H9ÂãþÿÿfI‰ÖL)ëM…ÿ…êþÿÿH‹ ª ‹8èRÛÿÿH‰ÚL‰îH‰ÇèdÝÿÿI‰Çéõþÿÿ@Æ HUHƒÃHƒÅé…þÿÿ@Æ HUHƒÃHƒÅémþÿÿ@Æ HUHƒÃHƒÅéUþÿÿ@Æ HUHƒÃHƒÅé=þÿÿ@ÆHUHƒÃHƒÅé%þÿÿ@ˆHUHƒÃHƒÅéþÿÿDHÁtI‰D$I‰,$E1ÿH‹´$H@dH34%(L‰ø…èHÄX@[]A\A]A^A_Ãf„„ÀxC< …'AöD$„ Æ HUHƒÃL‰õé–ýÿÿDH‰ÚL‰ÿèõÝÿÿI‹H‹pé¹ýÿÿM‹t$I)îIƒþv ƒÀ><† H‹©¨ L‰\$‹8èíÙÿÿH‹L$L‰òH‰îA¸H‰ÇèôÚÿÿH‹L$(L‹\$Hƒùÿ„é1ÀHqÿf.„¶TˆH‰òH)ÂHƒÀH‰T$(H9ÈuäHÅHÃÇD$HUéÞüÿÿH=ÿÛ‡±€}\…¡€}u…—HƒÅL‰ÞL‰\$I‰,$èøúÿÿI‹,$Hƒøÿ„žþÿÿH$ÿÿL‹\$Húÿ‡lL‰ñHuHÁá L´$ üL‰ðH‰òHƒÃÇD$HÁèƒÈðˆCüL‰ðHÁè ƒà?ƒÈ€ˆCýL‰ðHÁèƒà?ƒÈ€ˆCþD‰ðƒà?ƒÈ€ˆCÿé"üÿÿH=ÿ߆HuH‰òH=ÿÿ‡‰L‰ðHƒÃÇD$HÁè ƒÈàˆCýL‰ðHÁèƒà?ƒÈ€ˆCþD‰ðƒà?ƒÈ€ˆCÿéÈûÿÿ€¶EƒÀ€Ðÿÿ„À„N‹;èÿÑÿÿ‹;H‹@J‹àH‹@L‹xAƒý޳èÞÑÿÿAƒÆH‹@McöN‹,ðM‹w‹;èÄÑÿÿM…ötA‹Vƒú†êƒêA‰VA‹E öÄÿu<t%ÿÀ‰Â1Àú u‹;è†ÑÿÿL‰îH‰ÇèËÐÿÿI‰G‹;èpÑÿÿH‹@ H)èH…À~t‹;HƒÅèYÑÿÿ‹;H‹@J‹àH‰EèFÑÿÿH‰(HƒÄ[]A\A]A^A_Ã@è+ÑÿÿL¨8éPÿÿÿ€‹;èÑÿÿºH5ÒsH‰Çè½Ðÿÿé½þÿÿ„‹;èéÐÿÿH‰êH‰î¹H‰ÇèÖÎÿÿH‰ÅéjÿÿÿfDL‰öH‰ÇèÒÿÿé ÿÿÿH=Ái1ÀèÚÐÿÿH5ósL‰ÿèûÏÿÿff.„óúAWI‰÷AVAUATUSHƒìH‹$Ÿ ‹;èmÐÿÿ‹;H‹(ècÐÿÿ‹;H‹PxI‰îHJüH‰HxD‹*èJÐÿÿIcÕH‹@HÐI)ÆIÁþAFþƒø‡‹;IcÆEeHÁàMcäH)ÅèÐÿÿAU‹;H‹@HcÒH‹ÐH‰D$èøÏÿÿH‹@J‹àö@ „²‹;èßÏÿÿH‹@J‹àH‹@ö@„•‹;èÂÏÿÿH‹@J‹àH‹@H‹L‹8H‹ÉŸ H…À„‹;I9Çt0è”Ïÿÿ‹;H‹@N‹<àè…ÏÿÿHKrL‰þH‰Çè£Íÿÿ„À„7‹;èdÏÿÿ‹;H‹@J‹àH‹@L‹xAƒþޏèCÏÿÿAƒÅIƒH‹@McíN‹,è„°A‹U ‹;öÆÿ…Ê€ú„ÁâÿÀú „¯M‹oèöÎÿÿHƒìE1ÉE1Àj1ÉL‰îH‰ÇjjDH‹T$(è„ÏÿÿM‹oHƒÄ ‹;I‹EHƒxL‹p„÷è²ÎÿÿL‰îH‰ÇèÑÿÿH˜I9Æ„,‹;é‹Dè‹ÎÿÿIƒL¨8…Pÿÿÿ‹;èrÎÿÿ¾ H‰ÇèõÏÿÿ‹;I‰GA‹U öÆÿ„8ÿÿÿfèKÎÿÿL‰îH‰ÇèÍÿÿ‹;M‹oI‰Æè2ÎÿÿHƒìE1ÉE1ÀjH‰Ç1ÉL‰îAVjH‹T$(èÀÎÿÿ‹;HƒÄ èÎÿÿH‹@ H)èH…À~I‹;HƒÅèîÍÿÿ‹;H‹@J‹àH‰EèÛÍÿÿH‰(HƒÄ[]A\A]A^A_Ãf„M…öu±è¶ÍÿÿëT@‹;è©ÍÿÿH‰êH‰î¹H‰Çè–ËÿÿH‰Å똋;è‰ÍÿÿºH5JpH‰Çè5ÍÿÿéÐýÿÿM‹o‹;èeÍÿÿM…ítA‹UƒúvƒêA‰UIÇG‹;é7ÿÿÿL‰îH‰ÇèÏÿÿëäH==f1ÀèVÍÿÿH5†pL‰ÿèwÌÿÿ€AWAVAUI‰ýATUSHƒì8H‹/dH‹%(H‰D$(1À¶MAÞÿàf„H‹i› HƒÅH‰/‹;è«Ìÿÿ¾ H‰Çè.ÎÿÿA‹u`I‰ÄFA‰E`A;E‡NI‹MA¸$H¿&¶< '†ÉHÝoI‰EfD‹;èIÌÿÿM…ätA‹T$ƒú†ŽƒêA‰T$Aƒm`E1öë@HƒÅH‰/èäîÿÿI‰ÆH‹\$(dH3%(L‰ð…,HƒÄ8[]A\A]A^A_Ãf.„‹OöÅ@„ôHU‰ÎA¸$H‰¶EæH¿&< w!H£ÇsHJI‰M¶BH‰Ê< ~å<#„ûL‰ïèrþÿÿH‰ÅH…À„_ö@ „\I‹E¿$H¾&¶€ú ݆çHÝnH‹é™ E1öI‰E‹;è+Ëÿÿ‹Uƒú†üƒê‰U‹;èËÿÿM…ö„ùþÿÿA‹Vƒú†éƒêA‰VE1öéÝþÿÿDH‰è€ù-u HEH‰¶M€ù0„<ƒé0HƒÀ€ù ‡ü@I‰E¶H‰ÂHƒÀqÐ@€þ vé€ù.„(ƒá߀ùE…lHBI‰E¶JqÕæýu HBI‰E¶Jƒé0HƒÀ€ù ‡öf„H‰ÂI‰EHƒÀ¶ƒê0€ú vêH‰ïèÒÑÿÿH‹Û˜ ò$‹8èÊÿÿò$H‰ÇèÂÈÿÿI‰Æéúýÿÿf.„H‹©˜ HƒÅH‰/‹;èëÉÿÿ¾ H‰ÇènËÿÿA‹u`I‰ÄFA‰E`A;E‡ŽI‹UA¸$H¿&¶< w)H£Çs#HJI‰M¶BH‰Ê< ~å<#„ˆ<]„ H½&A¾$L‰ïèXüÿÿI‰ÇH…À„ ýÿÿ‹;èUÉÿÿL‰úL‰æH‰ÇèÉÿÿI‹E¶€ú W†ÑHrdI‰EéÑüÿÿH‹GH)èHƒøŽï}null…âHƒÅH‰/H‹-¤— ‹}èìÈÿÿ‹}H‰ÃèáÈÿÿH³8H‰Çè"ÈÿÿI‰Æéºüÿÿf.„H‹GH)èHƒøŽŸ }true…’ H‹_XHƒÅH‰/H…Û„>H‹7— ‹8è€ÈÿÿH‰ÞH‰ÇèÅÇÿÿI‰Æé]üÿÿDH‹GH)èHƒø~ }fals„ž HlE1öI‰Eé+üÿÿHyfE1öI‰EéüÿÿDH‹É– D¾uH)êI‰Ô‹;A€þ-„Òƒú‡ˆ H Šs‰ÒHc‘HÈ>ÿàfD€ú#„Ï€ú]„Þ €ú,…”þÿÿHPI‰U¶@< #‡?þÿÿH£Åƒ5þÿÿHJI‰M¶BH‰Ê< ~Ý<#„º<]…þÿÿAöE„þÿÿA‹E`HƒÂI‰Upÿé H£Õƒ%þÿÿHHI‰M¶PH‰Èéþÿÿf<#„e H½&A¾$<}„0<"…·úÿÿLyHqM‰}I9÷t>¶A<\t6<~2<"„c L‰øëfD¶€ù~€ù\t€ù"„ÒHƒÀH9ðuáL‰ïè‘éÿÿI‰ÇH…À„eúÿÿI‹E¶€ú †ƒH,jI‰EéCúÿÿ€ú#„G €ú:ußHPI‰U¶@< w!H£ÅsHJI‰M¶BH‰Ê< ~å<#„? L‰ïè7ùÿÿH…À„ ‹;H‰$è3ÆÿÿHƒìE1ÉE1ÀjH‹T$1ÉL‰æH‰ÇRL‰újè¿Æÿÿ‹;HƒÄ èÆÿÿA‹Wƒú†× ƒêA‰WI‹E¶€ú †–HGaI‰Eé~ùÿÿfD€ú#„Ç€ú}„ €ú,uÓHHI‰M¶@< #‡{þÿÿH£ÅƒqþÿÿHQI‰U¶AH‰Ñ< ~Ý<#„¶<}…NþÿÿAöE„ùÿÿA‹E`HƒÁI‰Mpÿég€H£Õƒ`ÿÿÿHHI‰M¶PH‰ÈéAÿÿÿf.„H£ÕƒsþÿÿHHI‰M¶PH‰ÈéTþÿÿf‰ÇD)ÿ‰<$HHI‰M¶@< #‡?þÿÿH£Åƒ5þÿÿHqI‰u¶AH‰ñ< ~Ý<#„< <:…þÿÿHqI‰u¶A< w!H£ÅsHNI‰M¶FH‰Î< ~å<#„/ L‰ïèj÷ÿÿH…ÀH‰D$„øÿÿ‹;èeÄÿÿHƒìL‰æL‰újL‹L$A¸$H‰Ç‹L$è²ÅÿÿY^éKþÿÿH!_I‰EéØ÷ÿÿ„H"hE1öI‰Eéý÷ÿÿDAöE„ÌúÿÿDHƒÀI‰E¶H‰Á€ú wíHƒÀI£ÖsçéŒüÿÿfDAöE„UúÿÿDHƒÂI‰U¶H‰Ñ< wîHƒÂI£Æsèéüÿÿ€H£Çƒ-÷ÿÿHQI‰U¶AH‰Ñé ÷ÿÿf.„€ú#„(€ú)…øÿÿHP¿$H¾&I‰U¶@< w!H£ÆsHJI‰M¶BH‰Ê< ~å<#„c L‰ïèöÿÿH‹½‘ I‰Æ‹;H…À„Ï÷ÿÿö@ „L‹`A€|$ … èàÂÿÿL‰æH‰ÇèÁÿÿ‹;H‰$èÊÂÿÿ1ÒH‰îH‰ÇèÃÿÿI‰ÇH…À„# ‹;èªÂÿÿ1ÉHSfL‰þH‰Çè¦ÂÿÿH‰D$H…À„, ‹;èÂÿÿ‹;L‹(èwÂÿÿH‰Çè_Äÿÿ‹;èhÂÿÿH‰ÇèàÁÿÿ‹;èYÂÿÿH‹xxL‹;L‰xxèFÂÿÿL;¸€„& ‹;è2ÂÿÿL‰ïH+xH‰øHÁøA‰‹$ƒÀLcøˆ– ‹;è ÂÿÿH‹@ L)èHÁøL9øŒ{ IEH‹<$I‰mH‰D$H‹ß‘ I‰E‰øƒÀ…À~\‰øE1ÿH‰$HƒÀH‰D$ë fDI‰Ç‹;è®Áÿÿ¹L‰úL‰æH‰Çè«ÂÿÿH‹K‰DýIGL;<$uÑH‹D$H‹|$HøH‰D$‹;èoÁÿÿH‹|$H‰8H‹D$‹;H‹@L‹`èSÁÿÿºL‰æH‰ÇèÃÿÿ‹;è<Áÿÿ‹;L‹ è2Áÿÿ‹Uƒú†b ƒê‰U‹;èÁÿÿA‹Vƒú†8 ƒêA‰VIl$øM‹4$éS€HƒÁI‰MA‰u`‹;èÝÀÿÿL‰æH‰Çè²¾ÿÿI‰ÆAöE„´ôÿÿIƒ}0t0I‹$HƒxH‹ht‹;è§ÀÿÿL‰æH‰Çè ÃÿÿH˜H)ÅHƒý„éIƒ}(„rôÿÿ‹;è{Àÿÿ‹;H‹(èqÀÿÿH‰ÇèYÂÿÿ‹;èbÀÿÿH‰ÇèÚ¿ÿÿ‹;èSÀÿÿH‹xxLg‹;L‰`xè@ÀÿÿL; €„ ‹;è,ÀÿÿH‰ïH+xH‰øHÁøA‰$‹;èÀÿÿH‹@ H)èH…ÀŽ; ‹;HƒÅèø¿ÿÿL‰öH‰Çè}Àÿÿ‹;H‰Eèâ¿ÿÿH‰(‹;I‹m(èÔ¿ÿÿH‰îºH‰Çè„Áÿÿ‹;A‰Ä躿ÿÿH‹(Aƒü„» E…ä…N M…ötAƒF‹;è“¿ÿÿH‰(‹;艿ÿÿ‹;H‹hPè~¿ÿÿH;hX§‹;èm¿ÿÿH‰Çèµ½ÿÿéPóÿÿHƒÂI‰UA‰u`‹;èM¿ÿÿL‰æH‰Çè"½ÿÿI‰Æé*óÿÿf.„ƒú‡¶H Ðj‰ÒHc‘HÈ>ÿàA¾Æ¾UiÀ'„°Ü÷ÿ¾UiÒèоU’P¾EkÀdÃHcÛDèÓ¾ÿÿH‰ÞH‰ÇèÈÀÿÿI‰Æé°òÿÿA¾Æ¾UiÀè„°/ÿÿ¾UkÒdоU’PHcÛë»A¾Æ¾UkÀd”0ëÿÿ¾E€BHcÛëš¾EC¶œPðýÿÿHcÛë†èY¾ÿÿA¾öƒî0H‰ÇHcöèGÀÿÿI‰Æé/òÿÿAöE„íòÿÿ@HƒÀI‰E¶€ú wðH£×sêé¿òÿÿ¾E¾UiÀ'„°Ü÷ÿ¾UiÒèоU’P¾EkÀdÃHcÛH÷Ûéþþÿÿ¾E¾UiÀè„°/ÿÿ¾UkÒdоU’Pë˾E¾UkÀd”0ëÿÿ¾E€Bë­¾E¾U€œBðýÿÿ뙾]ƒë0ëèl½ÿÿHL$ IcÔH‰îH‰Çèy¼ÿÿ¨tL‹t$ ¨„M…ö‰õ1À€}-D‰â”À)ƒú7H‰ïèÀÄÿÿ‹;ò$éðòÿÿ@HaE1öI‰EéíðÿÿDAöE„÷ÿÿDHƒÀI‰E¶H‰Á€ú wíHƒÀI£Ösçé”÷ÿÿfDAöE„TðÿÿH‰ÊfHƒÂI‰U¶< wñI£Æsëé÷ÿÿfDHPI‰U¶HAÐ< ‡ØñÿÿHÒYE1öI‰EéVðÿÿfDH£ÖƒñÿÿHHI‰M¶PH‰ÈéìðÿÿfAöE„’õÿÿHHI‰M¶H‰ÈHƒÁ€ú wíI£ÖsçédõÿÿfAöE„¶õÿÿHJI‰M¶H‰ÊHƒÁ< wîI£ÆsèémõÿÿHXH‹‚Š H‰G‹;èÇ»ÿÿ‹;E1öè½»ÿÿé¨ïÿÿ„€}e…XóÿÿH‹_PHƒÅH‰/H…Û…óÿÿH‹›‹ H…Û„†I‰]Péëòÿÿf„HBHJI‰E¶Bƒè0< ‡QDI‰M¶H‰ÊHIpÐ@€þ véƒàßÿáf.„I‰ÒIÓâA÷ÂtH‰ÆHF¶Hÿƒéa€ùvÞE‹N0AÆF4E…É„¼HF€xÿ}‡£¶HÿIc ˆLÁ>ÿáI‰ÓIÓãM…ëtÇH‰ÆHF¶Hÿƒé+€ù:vâE‹N0AÆF4E…Éu¸éo€„É„`HƒÆ¶€ù ~ì€ù#…ÆAÆF4¶€ù …zé°D軪ÿÿH‹@¶@"ƒà<•À„À…Èþÿÿ‹;蜪ÿÿH‰(H‹D$dH3%(…¿HƒÄ([]A\A]A^A_ÃfD‹;èiªÿÿHT$L‰æ¹H‰ÇèD©ÿÿH‹T$I‰Äéîýÿÿ€è;ªÿÿ1ɺL‰îH‰ÇèÉ©ÿÿI‹F(H…À„\ýÿÿI‹V H‹rˆ®H‹=ßx HƒèH‰ò¶ Hƒè¶ HÊHƒøÿuìH)òI‰V(é ýÿÿ€>tKAÆF4HƒÆ¶<"u"éþfD„Àt,H‰ðHp¶@<"„á<\uå€~HFuâAÆF4H‰ÆI‹VH+wI‰v(H9òs H…Ò…¢A‹V0A¶F4…ÒZ<…R‹;èV©ÿÿHT$L‰öH‰(I‹~ èRôÿÿ‹;H‰D$è6©ÿÿ‹;L‹8è,©ÿÿH‹@ L)øH…ÀŽìH‹D$Io‹;I‰GH‹T$I)V(M‹~ AÇF0AÆF4IWH‰T$èå¨ÿÿH‹T$L‰þH‰Çèµ§ÿÿ‹;èΨÿÿ‹;H‹@ö@"t2轨ÿÿH‹@¶@"ƒà<”À„À…ÛüÿÿéýýÿÿAƒn0H‰ÆéGýÿÿ苨ÿÿH‰Çè#ªÿÿ<”ÀëÏ@èC¬ÿÿI‹~ H‹T$H‹H‹pé üÿÿfD¶€ù t(„Éué·þÿÿ€„À„¨þÿÿHƒÆ¶< uíA¶F4<„¸A¹óúAˆF4épüÿÿ„èû§ÿÿ1ɺL‰æH‰Ç艧ÿÿA‹D$ % =„iûÿÿé_ýÿÿ€E‹N0HƒÆAÆF4E…É…füÿÿéþÿÿD‹;è¡§ÿÿ1ÒH5.PH‰Çè°©ÿÿI‰ÅI‰F éúÿÿ@M‹}M,ès§ÿÿL‰êL‰þH‰Ç蕨ÿÿM‹n ‹;I‰F(é„úÿÿfD‹;èI§ÿÿºH5 JH‰Çèõ¦ÿÿéµùÿÿ‹;è)§ÿÿL‰úL‰þ¹H‰Çè¥ÿÿI‰ÇéòýÿÿA‹N0…É…gþÿÿémýÿÿDAÆF4H‰Æé}ûÿÿA‹v0NA‰N0A;N†;þÿÿH=¿A1Àèø¦ÿÿ„AÆF4H‰Æé‘ûÿÿA‹v0NÿA‰N0…ÉþÿÿH‰Æéýÿÿ„AÆF4H‰Æé±üÿÿAÆF4¶H‰Æ€ù …þÿÿéJþÿÿf.„HHH‰ðf„HPÿ¶@ÿƒàÀ<€uHƒê¶ƒàÀ<€tòHƒÁHƒù„8üÿÿH‰ÐëÏ1ÀE1ÉéþÿÿAÆF4é¿úÿÿH…ö„_ûÿÿ„À…WûÿÿIÇF(H‹HÇ@é?ûÿÿH=ë>1Àè¦ÿÿH=eD1Àèö¥ÿÿèA¤ÿÿH5ýIL‰÷è¥ÿÿfóúAVI‰öAUATUSHƒìH‹Ft dH‹%(H‰D$1À‹;è¥ÿÿ‹;L‹ èu¥ÿÿ‹;H‹PxHJüH‰Hx‹*è`¥ÿÿHcÕL‰áH‹@HÐH)ÁH‰ÈHÁøƒø…:‹;DmƒÅIƒìHcíè*¥ÿÿ‹;H‹@L‹4èIcíè¥ÿÿH‹@H‹èö@ „î‹;èÿ¤ÿÿH‹@H‹èH‹@ö@„Ñ‹;èâ¤ÿÿH‹@H‹èH‹@H‹L‹(H‹ét H…À„ˆ‹;I9Åt0è´¤ÿÿ‹;H‹@L‹,è襤ÿÿHkGL‰îH‰Çèâÿÿ„À„s‹;脤ÿÿ‹;H‹@H‹èH‹@H‹hèm¤ÿÿH‰âL‰÷L‰ H‰îèlïÿÿ‹;I‰ÄèR¤ÿÿ‹;H‹(èH¤ÿÿH‹@ H)èHƒøŽ×L‰eA‹V ‰Ð% =…}I‹FH‰ÇH$I‰ÄH‰ÆI)üâ …‹;HƒÅèò£ÿÿL‰æH‰Ç觤ÿÿ‹;I‰ÄèÝ£ÿÿL‰æH‰Çèb¤ÿÿ‹;H‰EèÇ£ÿÿH‰(H‹D$dH3%(…¦HƒÄ[]A\A]A^Ë;虣ÿÿ1Ò¹L‰öH‰Çèw¢ÿÿA‹V I‹~édÿÿÿf.„èëÅÿÿI‰Äéfÿÿÿ‹;èY£ÿÿH‰êH‰î¹H‰ÇèF¡ÿÿH‰ÅéÿÿÿfD‹;è1£ÿÿºH5òEH‰ÇèÝ¢ÿÿéXþÿÿH=!<1Àè:£ÿÿè…¡ÿÿH5RGL‰÷èV¢ÿÿfDóúAVI‰öAUATUSH‹Šq ‹;èÓ¢ÿÿ‹;L‹ èÉ¢ÿÿ‹;H‹PxHJüH‰Hx‹*è´¢ÿÿHcÕL‰áH‹@HÐH)ÁH‰ÈHÁøƒø…p‹;DmƒÅIƒìHcíè~¢ÿÿ‹;H‹@L‹4èIcíèl¢ÿÿH‹@H‹èö@ „)‹;èS¢ÿÿH‹@H‹èH‹@ö@„ ‹;è6¢ÿÿH‹@H‹èH‹@H‹L‹(H‹=r H…À„¤‹;I9Åt0è¢ÿÿ‹;H‹@L‹,èèù¡ÿÿH¿DL‰îH‰Çè ÿÿ„À„®‹;èØ¡ÿÿ‹;H‹@H‹èH‹@H‹hèÁ¡ÿÿ1ÒL‰÷L‰ H‰îèÁìÿÿ‹;I‰Äè§¡ÿÿ‹;H‹(è¡ÿÿH‹@ H)èH…À~AL‰e‹;HƒÅè‚¡ÿÿH‰([]A\A]A^ÃfD‹;èi¡ÿÿºH5*DH‰Çè¡ÿÿé<ÿÿÿ‹;èI¡ÿÿH‰êH‰î¹H‰Çè6ŸÿÿH‰Åë H=::1ÀèS¡ÿÿH5pEL‰÷èt ÿÿ@AWL<AVAUA‰ÍATI‰ÔUH‰ýSH‰óHƒì8H‹dH‹%(H‰D$(1ÀH‹GH)ÐI9ć¿HD$ L5§NH‰D$L9ûr0éÄ@H‹u<"tH<\t|HVH‰UˆHƒÃIƒìL9ûƒ™¶Pà€ú_vÎPø€ú‡ê¶ÒIc–Lò>ÿâDH‹EIT$H)ðH9‡‹HFH‰EÆ\H‹EHPH‰UÆ"ë•€H‹EIT$H)ðH9ЂHFH‰EÆ\H‹EHPH‰UÆ\éZÿÿÿ@H‹D$(dH3%(…<HƒÄ8[]A\A]A^A_ÃDH‹MH‹EIT$H)ÈH9‡HAHƒÃH‰EÆ\H‹EHPH‰UÆréöþÿÿ@H‹MH‹EIT$H)ÈH9‡HAHƒÃH‰EÆ\H‹EHPH‰UÆfé¶þÿÿ@H‹MH‹EIT$H)ÈH9ЂHAHƒÃH‰EÆ\H‹EHPH‰UÆnévþÿÿ@H‹MH‹EIT$H)ÈH9Ђ HAHƒÃH‰EÆ\H‹EHPH‰UÆté6þÿÿ@H‹MH‹EIT$H)ÈH9ЂäHAHƒÃH‰EÆ\H‹EHPH‰UÆbéöýÿÿ@E…í…ÜHÇD$ ¶ÈHƒù‡çH‹uH‹EIT$H)ðH9ЂCHFH‰EÆ\H‹EH‰ÎHÁî HPH‰UÆuH‹EHPH‰UH‹Ül ¶42@ˆ0H‹uHFH‰EH‰ÈHÁèƒà¶ˆH‹uHFH‰EH‰ÈHÁèƒà¶ˆH‹uHFH‰EH‰Èƒà¶ˆé»H‹}H‰ñH+OH‰ÎH‰L$èx¡ÿÿH‹L$H‹UH4H‰uH‹H‹RHDÿH‰Eé7ýÿÿH9Mh‡»Hùÿÿ†ÿÿÿHùÿÿ‡ÃH‹}H‹EIT$ H)øH9‡»‰ÊHÿÿ¾âÿHÁè H ˆADŠÜD€Ø1ÀHÇÂÿÿÿÿèjŸÿÿHƒE H\$ éeüÿÿH‹}H‰ñH+OH‰ÎH‰L$è³ ÿÿH‹L$H‹UH4H‰uH‹H‹RHDÿH‰EéªüÿÿH‹uöE„ÖHFH‰EˆëžL‰úH)ÚHƒúv7ƒÀ><w0¶CƒÀ€è=ÿÿH‰îH‰Çè²ÿÿ‹;H‰Åè(ÿÿH‰îH‰Çè­ÿÿ‹;H‰Åèÿÿ¹1ÒH‰îH‰ÇèñÿÿH‰ÆH=W01Àè ÿÿH‰îH‰ßèuéLúÿÿH‹CºH+xH‰ýH‰þH‰Çè•’ÿÿH‹SH<(H‰;H‹H‹RHDÿH‰CI‹$A‹l$ L‹H éBüÿÿH‹CºL‰ $H+xI‰üH‰þH‰ÇèI’ÿÿH‹SL‹ $J< H‰;H‹H‹RHDÿH‰CérúÿÿL‹-þ\ A‹}èEŽÿÿH‰îH‰ÇèzŒÿÿI‰ÇA‰Æ‹C9C`ƒ¢ H‹H9S„?HBH‰Æ[E…ÿˆ„öC…AƒC`E1äëDAƒÄE9æŒúA‹}èÚÿÿIcÔ1ÉH‰îH‰ÇèÚŽÿÿI‰ÇöCuaM…ÿ„˜I‹7H‰ßèmøÿÿE9æ~¸H‹H9S„;HBH‰Æ,‹C¨…¨@t’H‹ H9K„¶HAH‰Æ évÿÿÿfD‹C`H‹;D@H‹CMcÀH)øI9À‡œL‰Â¾ L‰$èŒÿÿL‹$LéeÿÿÿfD1ɺH5˜1H‰ßèúëÿÿéXÿÿÿH‹ H9K„±HAH‰Æ éùþÿÿH‹CH‹+öC…¸ƒk`H9è„'HEH‰ÆE]é'øÿÿ% =…;Hƒz •À„Àu$1ɺH5[0H‰ßèyëÿÿéð÷ÿÿH‹+H‹Cë§1ɺH5a0H‰ßèUëÿÿéÌ÷ÿÿH‹{H‰ÑºH+OH‰ÎH‰ $èÿÿH‹ $HH‹KH‰H‹ H‹IHDÿH‰Cé…þÿÿH9Å„hHEH‰ÆE ‹{`H‹CH‹+Wÿ‰S`öC„ÿÿÿD$RH)èMcäI9ćþH‰ïL‰â¾ 蟊ÿÿH‹+H‹CLåH‰+ééþÿÿL‹#L9c„iID$H‰AÆ$ é ýÿÿL‹-GZ A‹}莋ÿÿ1ÉHü/L‰æH‰Ç芋ÿÿH‰$H…À„žA‹}èd‹ÿÿA‹}L‹0èX‹ÿÿH‰Çè@ÿÿA‹}èG‹ÿÿH‰Ç迊ÿÿA‹}è6‹ÿÿH‹xxLA‹}L‰xxè!‹ÿÿL;¸€„YA‹}è ‹ÿÿL‰÷H+xH‰øHÁøA‰A‹}èñŠÿÿH‹@ L)ðHƒøŽA‹}IƒÆèÓŠÿÿH‰îH‰ÇèHŒÿÿA‹}H‰D$躊ÿÿH‹t$H‰Çè=‹ÿÿA‹}H‰D$蟊ÿÿH‹t$L‰âH‰ÇèO‰ÿÿA‹}I‰FøH‹€Z I‰èxŠÿÿL‰0H‹$A‹}H‹@L‹pè`ŠÿÿºL‰öH‰ÇèŒÿÿA‹}A‰ÆèDŠÿÿL‹8I‹ö@ t H;h„vH‹H9C„ÂHPH‰Æ(H‹H9C„qHPH‰Æ"AöD$„I‹$H‹PI‹D$HDÐH‹0H…ö„4ƒx„XH‹6H…ö„ÿHcV¶L ƒáH…ötHƒÆH‰ßè“èÿÿH‹H9C„èHPH‰Æ"H‹H9C„VHPH‰Æ)H‹H9C„HPH‰Æ[E…ötYAnÿ…í~<¹D)ñA‰ÌÍIcÄH‰ßI‹4ÇèõóÿÿH‹H9S„üHBAƒÄH‰Æ,D9åuÑI‹7H‰ßèÊóÿÿIcÆHÁàI)ÇA‹}è÷ˆÿÿL‰8H‹H9C„ÿHPH‰Æ]A‹}èÔˆÿÿA‹}H‹XPèLjÿÿH;XX{A‹}è´ˆÿÿH‰Çèü†ÿÿéôÿÿH‹CL‰ÂL‰D$H+xH‰þH‰<$H‰ÇèXŒÿÿL‹ $H‹SL‹D$J<H‰;H‹H‹RHDÿH‰CéûÿÿL‹-W A‹}èOˆÿÿ1ÉHÄ,L‰æH‰ÇèKˆÿÿH‰$H…À„gA‹}è%ˆÿÿA‹}L‹0èˆÿÿH‰ÇèŠÿÿA‹}èˆÿÿH‰Ç耇ÿÿA‹}è÷‡ÿÿH‹xxLA‹}L‰xxèâ‡ÿÿL;¸€„ÔA‹}è̇ÿÿL‰÷H+xH‰øHÁøA‰A‹}貇ÿÿH‹@ L)ðH…ÀŽ}A‹}IƒÆ蕇ÿÿH‰îH‰Çè ‰ÿÿA‹}H‰D$è|‡ÿÿH‹t$H‰Çèÿ‡ÿÿA‹}H‰D$èa‡ÿÿH‹t$L‰âH‰Çè†ÿÿA‹}I‰èE‡ÿÿL‰0H‹$A‹}H‹@L‹`è-‡ÿÿºL‰æH‰Çè݈ÿÿA‹}è‡ÿÿL‹ M‹4$AöF t I;n„‹A‹}Iƒìèï†ÿÿL‰öH‰ßL‰ è¡ñÿÿéÿýÿÿH‹{H+WI‰ÔºL‰æè”ŠÿÿH‹KJ H‰H‹ H‹IHDÿH‰C鉸ÿÿH‹{ºH+oH‰îè_ŠÿÿH‹SHÅH‰+H‹H‹RHDÿH‰Cé¥ùÿÿH‹U ‹8èb†ÿÿºH‰îH‰Çè„ÿÿH…À•Àé¤ùÿÿH‹{ºH+OH‰ÎH‰ $èþ‰ÿÿH‹ $H‹{HÁH‰ H‹H‹RHDÿH‰CH9Á…ùÿÿH+OºH‰ÎH‰ $è‰ÿÿH‹ $H‹SHÁH‰ H‹H‹RHDÿH‰Cé×øÿÿ‹Céõÿÿ‹CéõÿÿH‹{ºH+OH‰ÎH‰ $èv‰ÿÿH‹ $H‹{HÁH‰ H‹H‹RHDÿH‰CH9Á… øÿÿH+OºH‰ÎH‰ $è:‰ÿÿH‹ $H‹SHÁH‰ H‹H‹RHDÿH‰CéÒ÷ÿÿèƒÿÿA‹}è9…ÿÿH‰Çè†ÿÿéoüÿÿH‹{H‰ÑºH+OH‰ÎH‰ $èàˆÿÿH‹ $H‹sHH‰H‹6H‹vHD0ÿH‰CéÄûÿÿ1É1Ò1öé6ûÿÿH‹{L‰âH+oH‰î螈ÿÿH‹SHÅH‰+H‹H‹RHDÿH‰CéÐøÿÿH‹{ºH+oH‰îèjˆÿÿH‹{HÅH‰+H‹H‹RHDÿH‰CH9Å…`øÿÿH+oºH‰îè6ˆÿÿH‹SHÅH‰+H‹H‹RHDÿH‰Cé0øÿÿH‹{ºL+gL‰æèˆÿÿH‹{IÄL‰#H‹H‹RHDÿH‰CI9Ä…_øÿÿL+gºL‰æè·ÿÿH‹SIÄL‰#H‹H‹RHDÿH‰Cé/øÿÿA‹}èÖƒÿÿL‰òL‰ö¹H‰ÇèÃÿÿI‰ÆéÛøÿÿA‹}貃ÿÿH‰Çè …ÿÿI‰ÇéŽøÿÿ1É1ÒéîùÿÿH‹{ºH+GH‰ÆH‰ÅèQ‡ÿÿH‹SHÅH‰+H‹H‹RHDÿH‰CH‰èéUùÿÿH‹{ºH+GH‰ÆH‰Åè‡ÿÿH‹SHÅH‰+H‹H‹RHDÿH‰CH‰èéùÿÿA‹}èƒÿÿL‰òL‰ö¹H‰Çè ÿÿI‰Æé_ûÿÿA‹}èø‚ÿÿH‰ÇèP„ÿÿI‰ÇéûÿÿH‹{ºH+GH‰ÆH‰Åè †ÿÿH‹SHÅH‰+H‹H‹RHDÿH‰CH‰èéÇùÿÿH‹{ºH+GH‰ÆH‰Åèf†ÿÿH‹SHÅH‰+H‹H‹RHDÿH‰CH‰èéÞøÿÿHcV¶L ƒáé´øÿÿH‹{ºH+GH‰ÆH‰Åè†ÿÿH‹SHÅH‰+H‹H‹RHDÿH‰CH‰èéÁøÿÿH‹{ºH+GH‰ÆH‰Åèá…ÿÿH‹SHÅH‰+H‹H‹RHDÿH‰CH‰èépøÿÿèêÿÿH‰îH‰Çè_ƒÿÿ‹;H‰ÅèÕÿÿH‰îH‰ÇèZ‚ÿÿH‹@ékðÿÿ1É1ÒéøÿÿH‹E1öH‹ö@t*H‹H‹@H‹RHDÐH‹0H…ötƒxtH‹6H…ötHƒÆH=¨!1Àè¡ÿÿH‹E1öH‹ö@t*H‹H‹@H‹RHDÐH‹0H…ötƒxtH‹6H…ötHƒÆH=±!1ÀèZÿÿ‰è% =uFI‹D$H‰Æ‰êH=#1Àè4ÿÿèÿ€ÿÿH‰îH‰Çèt‚ÿÿ‹;H‰Åèê€ÿÿH‰îH‰ÇèoÿÿH‹@éÕñÿÿH‹O ‹8èÈ€ÿÿ¹1ÒL‰æH‰Çè¦ÿÿë诀ÿÿH‰îH‰Çè$‚ÿÿ‹;H‰Å蚀ÿÿH‰îH‰ÇèÿÿH‹@éiðÿÿH=o1À言ÿÿ„AWAVAUATUSHìxdH‹%(H‰„$h1À‹G9G`ƒ• H‰óI‰ÿH‹7H9w„íHFH‹-ÒN I‰Æ{AöG‹}t öC€„pè€ÿÿH‰ÞH‰Çèh€ÿÿ…ÀuT÷C àuKI‹/I‹GH9è„ÓHEI‰ÆE}H‹„$hdH3%(… HÄx[]A\A]A^A_À‹}è˜ÿÿ1ÒH‰ÞH‰Çè›~ÿÿI‰ÄH…Àt˜A‹G¨…ÇAƒG`f¨…˜It$L‰ÿèÛæÿÿ÷C à…ÞI‹t$L‰ÿèêÿÿ‹}è9ÿÿ1ÒH‰ÞH‰Çè<~ÿÿI‰ÄH…À„I‹7I9w„ÃHFI‰Æ,A‹G¨…E¨@t‰I‹7I9w„¬HFI‰Æ A‹G¨„nÿÿÿfDA‹G`I‹?D,@I‹GMcíH)øI9Ň2L‰ê¾ èu}ÿÿM/é5ÿÿÿDè“~ÿÿH‰ÞH‰Çèø~ÿÿA‰Ä÷C àt=E1äë €AƒÄ‹}èd~ÿÿ1ÒH‰ÞH‰Çèg}ÿÿH…Àuâ‹}èJ~ÿÿH‰ÞH‰Çè¯~ÿÿE…ä„KþÿÿIcÄ‹}Ll$`H‰D$Aƒü@œÇ$E1öëöD ¸D$‰$‹}A‰öèô}ÿÿ1ÒH‰ÞH‰Çè÷|ÿÿH…À„NIcÎAvI‰DÍH‹PHcB…Ày¶Ç$ë¾DI‹7I9w„ÛHFI‰Æ A‹Gé(þÿÿ„I‹GI‹/AöGujAƒo`é”ýÿÿ„‹}èh}ÿÿH‰ÞL‰âH‰ÇèjÿÿH‰Æé þÿÿfI‹ºH+wI‰õè ÿÿI‹WJ4(I‰7H‹H‹RHDÿI‰GéþÿÿH9è„<HEI‰ÆE A‹O`I‹GI‹/QÿA‰W`AöG„ýÿÿRH)èHcÛH9ÇÐH‰ÚH‰ï¾ è•{ÿÿII‹GH‰ÝI‰éÏüÿÿI‹I9W„¨HBI‰Æ A‹Géýÿÿ‹$…À„µH‹t$H ™ÿÿºL‰ïè|zÿÿA‹G¨…ÀAƒG`Aƒì¨u{IcÄL‰ÿM‹tÅIvè¿ãÿÿ÷C à…ÒI‹vL‰ÿèææÿÿE…ä„þÿÿI‹7I9w„8HFI‰Æ,A‹G¨u^¨@tŸI‹I9W„bHBI‰Æ A‹Gë‚DA‹G`I‹?D4@I‹GMcöH)øI9ƇtL‰ò¾ è}zÿÿM7éRÿÿÿDI‹I9W„(HBI‰Æ A‹Gé%ÿÿÿI‹GL‰êH+xI‰þH‰þH‰Çè7ÿÿI‹WJ<0I‰?H‹H‹RHDÿI‰Gé•üÿÿ€H‹ºH+wH‰õèû~ÿÿI‹WH4(I‰7H‹H‹RHDÿI‰GéÞúÿÿI‹ºH+oH‰îèÃ~ÿÿI‹WHÅI‰/H‹H‹RHDÿI‰Géùúÿÿ@I‹ºH+wI‰õè‹~ÿÿI‹J4(I‰7H‹H‹RHDÿI‰GH9Æ…ìüÿÿH+wºI‰õèV~ÿÿI‹WJ4(I‰7H‹H‹RHDÿI‰Gé»üÿÿfD‹}èXzÿÿH‰ÞL‰òH‰ÇèZ|ÿÿH‰ÆéþÿÿfI‹ºH+wI‰õèû}ÿÿI‹J4(I‰7H‹H‹RHDÿI‰GH9Æ…ûÿÿH+wºI‰õèÆ}ÿÿI‹WJ4(I‰7H‹H‹RHDÿI‰GéêúÿÿfD‹}èÈyÿÿ‹}H‹€àóo)D$óoH)L$ óoP )T$0óoX0ÆD$3)\$@óo`@)d$PèƒyÿÿH‰Çèk{ÿÿ‹}èsyÿÿH‰Çèëxÿÿ‹}ècyÿÿ‹}I‰ÆèXyÿÿI¶àH‰Çèùzÿÿ‹}èAyÿÿHT$H‹t$L‰ïH‰àH Vÿÿºè,wÿÿ‹}èyÿÿ‹}L‹pPèyÿÿL;pX‹}èúxÿÿH‰ÇèBwÿÿéüÿÿ‹}èåxÿÿH‰Çè-zÿÿëÙI‹ºH+wI‰öè“|ÿÿI‹WJ40I‰7H‹H‹RHDÿI‰Gé“üÿÿI‹I9W„xHBI‰Æ A‹Gé üÿÿè{xÿÿIcÌH4ÍH‰ÇèÈvÿÿ‹}I‰Åè]xÿÿL‰îH‰Çèâxÿÿ‹}L‹hé*úÿÿI‹GH‰ùL‰òH+HH‰ÇH‰ÎH‰ $èù{ÿÿH‹ $I‹WH<I‰?H‹H‹RHDÿI‰GéKüÿÿI‹H‰ÚH+oH‰îèÂ{ÿÿI‹WHÅI‰/H‹H‹RHDÿI‰GéþúÿÿI‹ºH+oH‰îèŽ{ÿÿI‹HÅI‰/H‹H‹RHDÿI‰GH9Å…ŒúÿÿH+oºH‰îèZ{ÿÿI‹WHÅI‰/H‹H‹RHDÿI‰Gé\úÿÿI‹H+WI‰ÖºL‰öè#{ÿÿI‹J0I‰H‹H‹IHDÿI‰GH9Â…œûÿÿH+WI‰ÖºL‰öèëzÿÿI‹OJ0I‰H‹ H‹IHDÿI‰GéhûÿÿI‹H+WI‰ÕºL‰îè³zÿÿI‹J(I‰H‹H‹IHDÿI‰GH9Â…úÿÿH+WI‰ÕºL‰îè{zÿÿI‹OJ(I‰H‹ H‹IHDÿI‰GéèùÿÿI‹H+WI‰ÖºL‰öèCzÿÿI‹J0I‰H‹H‹IHDÿI‰GH9Â…búÿÿH+WI‰ÖºL‰öè zÿÿI‹OJ0I‰H‹ H‹IHDÿI‰Gé.úÿÿI‹H+WI‰ÖºL‰öèÓyÿÿI‹J0I‰H‹H‹IHDÿI‰GH9Â…LýÿÿH+WI‰ÖºL‰öè›yÿÿI‹OJ0I‰H‹ H‹IHDÿI‰GéýÿÿH=”1ÀèÍuÿÿètÿÿ„ATUH‰ýSH‰óHƒÄ€dH‹%(H‰D$x1À÷uöG „ H臗ÿÿ…À…óoóoKóoS óo[0H‹C@H‹áC D$L$(‹;T$8\$HH‰D$Xèuÿÿ¾@H‰Çèdsÿÿ‹;I‰ÄèútÿÿL‰æH‰ÇèuÿÿH‰D$H‹PH‰$H‹HQ‹L$ÇD$`H‰T$º€öÁ„ÜH‰T$hH‰çH‰î` ÿÿ_H‹D$H DèYßÿÿöD$…ÞH‹T$H‹$H‹ H+BH‰AH‹D$H‹H‹PH‹AÆ‹D$¨t.H‹l$öÄu>H‹t$xdH34%(H‰è…2Hƒì€[]A\Ã@H‹D$H ‹D$H‹l$öÄt‹;ètÿÿH‰îºH‰ÇèrÿÿH‹EH‹pHƒÆH9pw]H‹l$ë’fDƒáƒùHÒâÿHÂé ÿÿÿDH=1ÀèâsÿÿfH‹4$H9t$t-HFH‰$Æ éÿÿÿDH‰pH‹}èStÿÿH‰EëDH‹|$ºH+wH‰õè2wÿÿH‹|$H4(H‰4$H‹H‹RHDÿH‰D$H9ÆušH+wºH‰õèþvÿÿH‹T$H4(H‰4$H‹H‹RHDÿH‰D$éfÿÿÿè†qÿÿfDóúAVI‰öAUATUSHƒìPH‹–A dH‹%(H‰D$H1À‹;èÏrÿÿ‹;L‹ èÅrÿÿ‹;H‹PxHJüH‰HxHc*è¯rÿÿL‰áH‹@HèH)ÁH‰ÈHÁøƒø…Í‹;DmIƒìMcíèrÿÿ‹;fïÀH‹@J‹,èD$H¸D$D$(D$8H‰$èJrÿÿH‰æH‰ïL‰ è¬üÿÿ‹;I‰Äè2rÿÿ‹;H‹(è(rÿÿH‹@ H)èH…À~4L‰e‹;HƒÅè rÿÿH‰(H‹D$HdH3%(u1HƒÄP[]A\A]A^ÃD‹;èáqÿÿH‰êH‰î¹H‰ÇèÎoÿÿH‰Åë­èDpÿÿH5NL‰÷èqÿÿDóúAVI‰öAUATUSH‹J@ ‹;è“qÿÿ‹;L‹ è‰qÿÿ‹;H‹PxHJüH‰Hx‹*ètqÿÿHcÕL‰áH‹@HÐH)ÁH‰ÈHÁøƒø…p‹;DmƒÅIƒìHcíè>qÿÿ‹;H‹@L‹4èIcíè,qÿÿH‹@H‹èö@ „)‹;èqÿÿH‹@H‹èH‹@ö@„ ‹;èöpÿÿH‹@H‹èH‹@H‹L‹(H‹ý@ H…À„¤‹;I9Åt0èÈpÿÿ‹;H‹@L‹,èè¹pÿÿHL‰îH‰Çè×nÿÿ„À„®‹;è˜pÿÿ‹;H‹@H‹èH‹@H‹hèpÿÿL‰÷L‰ H‰îèãúÿÿ‹;I‰Äèipÿÿ‹;H‹(è_pÿÿH‹@ H)èH…À~CL‰e‹;HƒÅèDpÿÿH‰([]A\A]A^Ä‹;è)pÿÿºH5êH‰ÇèÕoÿÿé<ÿÿÿ‹;è pÿÿH‰êH‰î¹H‰ÇèömÿÿH‰ÅëžH=ú1ÀèpÿÿH5gL‰÷è4oÿÿ@óúATUSH‹q> ‹;èºoÿÿLK¿çà H DH‰ÆHB1Àè†pÿÿ‹;‰Åèoÿÿ‹;è†oÿÿ‹;èoÿÿH¸rÿÿH5H‰Çè©oÿÿ‹;èboÿÿH{ŽÿÿH5H‰ÇèŒoÿÿ‹;èEoÿÿH®€ÿÿH5ÿH‰Çèooÿÿ‹;è(oÿÿHÑ~ÿÿH5ûH‰ÇèRoÿÿ‹;è oÿÿH|ÿÿH5ûH‰Çè5oÿÿ‹;H‹Ç@(èänÿÿHí{ÿÿH5ìH‰Çèoÿÿ‹;H‹Ç@(è½nÿÿHÆ{ÿÿH5ÜH‰Çèçnÿÿ‹;H‹Ç@(@è–nÿÿHŸ{ÿÿH5ÊH‰ÇèÀnÿÿ‹;H‹Ç@( èonÿÿHx{ÿÿH5»H‰Çè™nÿÿ‹;H‹Ç@(èHnÿÿHQ{ÿÿH5¤H‰Çèrnÿÿ‹;H‹Ç@(è!nÿÿH*{ÿÿH5‘H‰ÇèKnÿÿ‹;H‹Ç@(èúmÿÿH{ÿÿH5„H‰Çè$nÿÿ‹;H‹Ç@(èÓmÿÿHÜzÿÿH5nH‰Çèýmÿÿ‹;H‹Ç@(è¬mÿÿHµzÿÿH5XH‰ÇèÖmÿÿ‹;H‹Ç@(hè…mÿÿHŽzÿÿH5BH‰Çè¯mÿÿ‹;H‹Ç@(è^mÿÿHgzÿÿH5-H‰Çèˆmÿÿ‹;H‹Ç@(è7mÿÿH@zÿÿH5H‰Çèamÿÿ‹;H‹Ç@(@èmÿÿHzÿÿH5H‰Çè:mÿÿ‹;H‹Ç@( èélÿÿHòyÿÿH5öH‰Çèmÿÿ‹;H‹Ç@(èÂlÿÿHëwÿÿH5ÞH‰Çèìlÿÿ‹;H‹Ç@(è›lÿÿHÄwÿÿH5ÓH‰ÇèÅlÿÿ‹;H‹Ç@(ètlÿÿHwÿÿH5ÇH‰Çèžlÿÿ‹;H‹Ç@(@èMlÿÿHvwÿÿH5¹H‰Çèwlÿÿ‹;H‹Ç@( è&lÿÿHOwÿÿH5®H‰ÇèPlÿÿ‹;H‹Ç@(èÿkÿÿH(wÿÿH5›H‰Çè)lÿÿ‹;H‹Ç@(èØkÿÿHwÿÿH5ŒH‰Çèlÿÿ‹;H‹Ç@(è±kÿÿHÚvÿÿH5ƒH‰ÇèÛkÿÿ‹;H‹Ç@(èŠkÿÿH³vÿÿH5qH‰Çè´kÿÿ‹;H‹Ç@(èckÿÿHŒvÿÿH5_H‰Çèkÿÿ‹;H‹Ç@(èvÿÿH5<H‰Çè?kÿÿ‹;H‹Ç@(@èîjÿÿHvÿÿH5/H‰Çèkÿÿ‹;H‹Ç@( èÇjÿÿHðuÿÿH5#H‰Çèñjÿÿ‹;H‹Ç@(è jÿÿH …ÿÿH5H‰ÇèÊjÿÿ‹;èƒjÿÿHL‡ÿÿH5H‰Çè­jÿÿ‹;èfjÿÿHo‚ÿÿH5H‰Çèjÿÿ‹;èIjÿÿH€ÿÿH5÷H‰Çèsjÿÿ‹;è,jÿÿH—ÿÿH5ñH‰ÇèVjÿÿ‹;èjÿÿHx™ÿÿH5¡ H‰Çè9jÿÿ‹;èòiÿÿH;øÿÿH5ÔH‰Çèjÿÿ‹;èÕiÿÿHÞÆÿÿH5ÈH‰Çèÿiÿÿ‹;è¸iÿÿHÄÿÿH5¼H‰Çèâiÿÿ‹;è›iÿÿH4»ÿÿH5·H‰ÇèÅiÿÿ‹;è~iÿÿH×rÿÿH5¯H‰Çè¨iÿÿ‹;I‰Äè^iÿÿE1ÀL‰âH ¤H5 H‰Çè’kÿÿ‹;è;iÿÿH}ÿÿH5‡H‰Çèeiÿÿ‹;èiÿÿHÇ‘ÿÿH5~H‰ÇèHiÿÿ‹;èiÿÿHj“ÿÿH5vH‰Çè+iÿÿ‹;èähÿÿE1ÉLoH x HÌõÿÿH5\H‰Çè=iÿÿ‹;è¶hÿÿHÿ¸ÿÿE1ÉL:H C H5DH‰ÇèiÿÿHˆ7 ¸Ðÿÿÿƒø †2Hσù†;Hïƒù†*ƒÀÆÿHƒÂ=Ðu΋;èGhÿÿºH5 H‰Çèógÿÿ‹;H‰J8 è%hÿÿºH5ÜH‰ÇèÑgÿÿ‹;H‰ 8 èhÿÿH5³ ºH‰Çèhÿÿ‹;H‹PH H‰ë7 J èÏgÿÿH5© ºH‰ÇèÛgÿÿ‹;H‹PH H‰¯7 J è›gÿÿ1ÒH5 H‰Çèzgÿÿ‹;H H‰z7 èugÿÿH5­1ÒH‰Çè”fÿÿ‹;H‹H\èSgÿÿ[‰î]H‰ÇA\éEfÿÿ‰Áˆ ƒÀHƒÂéµþÿÿHùëíHÙëèóúHƒìHƒÄÃJSON::XS: string size overflowobject is not of type JSON::XSincr_text can not be called when the incremental parser already started parsingexactly four hexadecimal digits expectedmissing low surrogate character in surrogate pairmissing high surrogate character in surrogate pairillegal backslash escape sequence in stringmalformed UTF-8 character in JSON stringunexpected end of string while parsing JSON stringinvalid character encountered while parsing JSON stringjson text or perl structure exceeds maximum nesting level (max_depth set too low?), or ] expected while parsing array, or } expected while parsing object/hashfilter_json_single_key_object callbacks must not return more than one scalarfilter_json_object callbacks must not return more than one scalarmalformed JSON string, neither array, object, number, string or atommalformed JSON string, (tag) must be a stringmalformed JSON string, tag value must be an arraycannot decode perl-object (package does not exist)cannot decode perl-object (package does not have a THAW method)malformed number (leading zero must not be followed by another digit)malformed number (no digits after initial minus)malformed number (no digits after decimal point)malformed number (no digits after exp sign)malformed JSON string, neither tag, array, object, number, string or atomattempted decode of JSON text of %lu bytes size, but max_size is set to %lu%s, at character offset %d (before "%s")JSON text must be an object or array (but found number, string, true, false or null, use allow_nonref to allow this)malformed or illegal unicode character in string [%.11s], cannot convert to JSONout of range codepoint (0x%lx) encountered, unrepresentable in JSON%s::FREEZE method returned same object as was passed instead of a new one%s::TO_JSON method returned same object as was passed instead of a new oneencountered object '%s', but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing)cannot encode reference to scalar '%s' unless the scalar is 0 or 1encountered %s, but JSON can only represent references to arrays or hashesencountered perl type (%s,0x%x) that JSON cannot handle, check your input datahash- or arrayref expected (not a simple scalar, use allow_nonref to allow this)JSON::XS::filter_json_single_key_objectselfJSON::XSself, enable= 1self, v_false= 0, v_true= 0self, max_size= 0self, max_depth= 0x80000000ULklasssurrogate pair expectedself, cb= &PL_sv_undefself, key, cb= &PL_sv_undef'"' expected':' expected) expected after tagTHAWTypes::Serialiser::false'false' expectedTypes::Serialiser::true'true' expected'null' expected(end of string)garbage after JSON objectself, jsonstr= 0self, jsonstr\u%04x\u%04x%lu%ldFREEZETO_JSONnullself, scalar4.03v5.26.0XS.cJSON::XS::CLONEJSON::XS::newJSON::XS::boolean_valuesJSON::XS::get_boolean_valuesJSON::XS::allow_blessedJSON::XS::allow_nonrefJSON::XS::allow_tagsJSON::XS::allow_unknownJSON::XS::asciiJSON::XS::canonicalJSON::XS::convert_blessedJSON::XS::indentJSON::XS::latin1JSON::XS::prettyJSON::XS::relaxedJSON::XS::shrinkJSON::XS::space_afterJSON::XS::space_beforeJSON::XS::utf8JSON::XS::get_allow_blessedJSON::XS::get_allow_nonrefJSON::XS::get_allow_tagsJSON::XS::get_allow_unknownJSON::XS::get_asciiJSON::XS::get_canonicalJSON::XS::get_convert_blessedJSON::XS::get_indentJSON::XS::get_latin1JSON::XS::get_relaxedJSON::XS::get_shrinkJSON::XS::get_space_afterJSON::XS::get_space_beforeJSON::XS::get_utf8JSON::XS::max_depthJSON::XS::get_max_depthJSON::XS::max_sizeJSON::XS::get_max_sizeJSON::XS::filter_json_objectJSON::XS::encodeJSON::XS::decodeJSON::XS::decode_prefixJSON::XS::incr_parseJSON::XS::incr_textlvalueJSON::XS::incr_skipJSON::XS::incr_resetJSON::XS::DESTROY$JSON::XS::encode_jsonJSON::XS::decode_jsonTypes::Serialiser::Boolean`|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿ`|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿ`|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿH|ÿÿx|ÿÿx|ÿÿx|ÿÿ0|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿx|ÿÿ|ÿÿx|ÿÿx|ÿÿx|ÿÿ|ÿÿx|ÿÿè{ÿÿP{ÿÿ°‰ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿð‰ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿèŠÿÿ˜ÿÿ˜ÿÿèŠÿÿèŠÿÿèŠÿÿèŠÿÿèŠÿÿèŠÿÿèŠÿÿèŠÿÿèŠÿÿèŠÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿЋÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿhÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ°Œÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ˜ÿÿ‰ÿÿ÷–ÿÿ –ÿÿö•ÿÿÕ•ÿÿ¨•ÿÿT•ÿÿß–ÿÿß–ÿÿÖ–ÿÿ–ÿÿ¤–ÿÿz–ÿÿ;–ÿÿH©ÿÿƨÿÿ©ÿÿbªÿÿTªÿÿÜ«ÿÿÜ«ÿÿè¨ÿÿ„ªÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿ­ÿÿ­ÿÿy«ÿÿy«ÿÿ­ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿ­ÿÿy«ÿÿ„­ÿÿ‘­ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿ)­ÿÿt«ÿÿy«ÿÿy«ÿÿy«ÿÿT­ÿÿy«ÿÿy«ÿÿT­ÿÿT­ÿÿT­ÿÿT­ÿÿT­ÿÿT­ÿÿT­ÿÿT­ÿÿT­ÿÿT­ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿ)­ÿÿy«ÿÿa­ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿ­ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿ­ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿ­ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿy«ÿÿ)­ÿÿy«ÿÿa­ÿÿT³ÿÿ³ÿÿÔ²ÿÿ”³ÿÿ”²ÿÿT²ÿÿ$@€;d+°Jÿÿ€Oÿÿ¨ UÿÿÀ°Uÿÿì@Vÿÿ$WÿÿHPWÿÿp€Yÿÿ°ZÿÿÌ@[ÿÿ ]ÿÿLð^ÿÿ˜aÿÿäPcÿÿ$°eÿÿp gÿÿ°ðiÿÿüPlÿÿH°nÿÿ”qÿÿàPsÿÿ,sÿÿHtÿÿ\`tÿÿt°tÿÿ¨zÿÿP|ÿÿ@Ð~ÿÿ€PÿÿÌЄÿÿ8ðœÿÿ¼0¢ÿÿ €£ÿÿH 0¬ÿÿ” ð®ÿÿØ Ð°ÿÿ `¹ÿÿd  ¼ÿÿ˜ pÑÿÿä PÜÿÿ0 àÞÿÿh 0àÿÿ¬ âÿÿì zRx $(IÿÿàFJ w€?:*3$"DàMÿÿÐ(\XSÿÿˆFŒA†H ƒuAB4ˆ¼SÿÿA†AƒD ~ GDI X AAA ÀTÿÿ¹AƒD } AE $ä°TÿÿHE†AƒD {AA< ØTÿÿ/FŽEE ŒD(†A0ƒ” (Q BBBH LÈVÿÿ†D0W E <hBŽBE ŒA(†D0ƒJðý 0A(A BBBC @ $™ÿÿKFŽEB ŒA(†A0ƒD€ù 0A(A BBBD Hä0šÿÿ®FBŽE B(ŒA0†A8ƒD`Ê 8A0A(B BBBG @0”¢ÿÿºFŽEB ŒA(†A0ƒD@ñ 0A(A BBBD <t¥ÿÿÜFŽEB ŒA(†A0ƒc (A BBBG H´°¦ÿÿ†BFŽB E(ŒD0†D8ƒGp 8A0A(B BBBF 0 ô®ÿÿ?BŒD†A ƒG0Õ  AABI H4 ²ÿÿÈBBŽB B(ŒD0†A8ƒG`° 8A0A(B BBBB H€ „ÆÿÿØ BBŽB B(ŒA0†A8ƒG°­ 8A0A(B BBBH 4Ì ÑÿÿŠBŒA†D ƒG I  AABE @ pÓÿÿKFŽEB ŒA(†A0ƒD€÷ 0A(A BBBF <H |ÔÿÿÜFŽEB ŒA(†A0ƒa (A BBBI ,ˆ Öÿÿ¥FŒA†A ƒv CEE GNUÀP$$@ë UJZ Ð ø¹0ë 8ë õþÿo`Ø ˜ © Hí 8˜¨ð ûÿÿoþÿÿo8ÿÿÿoðÿÿo‚ùÿÿoHë  0@P`p€ °ÀÐàð 0@P`p€ °ÀÐàð 0@P`p€ °ÀÐàð 0@P`p€ °ÀÐàð 0@P`p€ °ÀGCC: (GNU) 8.4.1 20200928 (Red Hat 8.4.1-1)GA$3a1 # #GA$3a1ÐæGA$3a1ø¹ºGA$3a1 #Y$ GA$3p950`$õ¹GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFY`$è$GA+GLIBCXX_ASSERTIONS`$è$ GA*FORTIFYè$q%GA+GLIBCXX_ASSERTIONSè$q% GA*FORTIFYq%9&GA+GLIBCXX_ASSERTIONSq%9& GA*FORTIFY9&ˆ&GA+GLIBCXX_ASSERTIONS9&ˆ& GA*FORTIFYˆ&¿(GA+GLIBCXX_ASSERTIONSˆ&¿( GA*FORTIFY¿(F)GA+GLIBCXX_ASSERTIONS¿(F) GA*FORTIFYF)|*GA+GLIBCXX_ASSERTIONSF)|* GA*FORTIFY|*K,GA+GLIBCXX_ASSERTIONS|*K, GA*FORTIFYK,-.GA+GLIBCXX_ASSERTIONSK,-. GA*FORTIFY-.Ç0GA+GLIBCXX_ASSERTIONS-.Ç0 GA*FORTIFYÇ0Œ2GA+GLIBCXX_ASSERTIONSÇ0Œ2 GA*FORTIFYŒ2ï4GA+GLIBCXX_ASSERTIONSŒ2ï4 GA*FORTIFYï4Õ6GA+GLIBCXX_ASSERTIONSï4Õ6 GA*FORTIFYÕ6'9GA+GLIBCXX_ASSERTIONSÕ6'9 GA*FORTIFY'9…;GA+GLIBCXX_ASSERTIONS'9…; GA*FORTIFY…;å=GA+GLIBCXX_ASSERTIONS…;å= GA*FORTIFYå=7@GA+GLIBCXX_ASSERTIONSå=7@ GA*FORTIFY7@ŽBGA+GLIBCXX_ASSERTIONS7@ŽB GA*FORTIFYŽBÆBGA+GLIBCXX_ASSERTIONSŽBÆB GA*FORTIFYÆBBCGA+GLIBCXX_ASSERTIONSÆBBC GA*FORTIFYBC–CGA+GLIBCXX_ASSERTIONSBC–C GA*FORTIFY–CðCGA+GLIBCXX_ASSERTIONS–CðC GA*FORTIFYðCÈIGA+GLIBCXX_ASSERTIONSðCÈI GA*FORTIFYÈIŠKGA+GLIBCXX_ASSERTIONSÈIŠK GA*FORTIFYŠK NGA+GLIBCXX_ASSERTIONSŠK N GA*FORTIFY N…PGA+GLIBCXX_ASSERTIONS N…P GA*FORTIFY…P TGA+GLIBCXX_ASSERTIONS…P T GA*FORTIFY T#lGA+GLIBCXX_ASSERTIONS T#l GA*FORTIFY#lnqGA+GLIBCXX_ASSERTIONS#lnq GA*FORTIFYnq»rGA+GLIBCXX_ASSERTIONSnq»r GA*FORTIFY»rn{GA+GLIBCXX_ASSERTIONS»rn{ GA*FORTIFYn{*~GA+GLIBCXX_ASSERTIONSn{*~ GA*FORTIFY*~ €GA+GLIBCXX_ASSERTIONS*~ € GA*FORTIFY €–ˆGA+GLIBCXX_ASSERTIONS €–ˆ GA*FORTIFY–ˆß‹GA+GLIBCXX_ASSERTIONS–ˆß‹ GA*FORTIFYß‹¨ GA+GLIBCXX_ASSERTIONSß‹¨  GA*FORTIFY¨ ˆ«GA+GLIBCXX_ASSERTIONS¨ ˆ« GA*FORTIFYˆ«®GA+GLIBCXX_ASSERTIONSˆ«® GA*FORTIFY®k¯GA+GLIBCXX_ASSERTIONS®k¯ GA*FORTIFYk¯L±GA+GLIBCXX_ASSERTIONSk¯L± GA*FORTIFYL±õ¹GA+GLIBCXX_ASSERTIONSL±õ¹ GA$3h950 # #GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950 # #GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950 # #GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950 # #GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA$3a1õ¹õ¹GA$3a1õ¹õ¹GA$3a1æëGA$3a1ºº,`$••k;mL a£B`$••8h8S%48F!@8š=8•=8U% %48&1Y'@nint€ *)L8ASÂ&L¤‘LV’Sa “SF”L¯,•S(–˜Å:—˜È7˜€Ð)š˜¿4ž˜o#/$!¬˜…±˜¾3¿˜³CÂ!˜ q#f8\%q¦@·Ä&O«À3lNÁ4#)! ØS;€  ÐéA ÐSàSƒ9 ¹ ì  ]9 #y Z ¶A R<” T#<ÞC U#< Œ V ï<( vij; x€K% yLD z€ |L A ”€p šmÝG šma0 ›B8=ë 1L1( C ‹' EN7 F G ˜qS'Ï/ H×8  a[t*ŒpZS è§Ø§W0"Âh•#Èpk/$Èxì1'΀··S ½2  G ‡ÞÞS xÞ#Þ *!ú X" îë:˜(S ÀÈ!]ó@' »( €@A)àH(mS!0S]\UŸó€¶E /Fy;8ÏZ>: ,;«;?ˆA €Å)B €RCŸ;G1Z>I ,J«RKŸ; O|Z>Q ,R«¨S €ØET1U;a Zc /+/d /1^Âe|1 gŒ; Yó§=[ / ]mB2h  ;lUGn˜ì,o €;tHXv /^<w € xL 1p3²«5²u%<«“;DÏX_rtL<V1ž7i²GpóùAy€ÂS;€$ Ì1& €|( €U* €Œ0 € 9{ H¥|ÂA.€./   äJS@:ù*Jú*J t#ip;‚ f=!‚.$fõE2 €<7 €ù; €8cq @ o4²ç8´Ì;Fµ ØqS Ø#2l6   #*265 5#?238J J#T2\_ _#i ß:í¶=>ïÌA6ð\ 6;ñA X ôþ t t#» ¢,ü NþÌu@ÿ\ @EÆ à&@Æ Æ# 2} ( ( #2 23.= = #G 2Â/R R #\ 2„=g g #q 2"A| | #† 2‘ ‘ #› #¦ %#± :#¼ O#Ç d#Ò ¶#Ý  #è - #ó B #þ W # l #  # – #* i'@ 7;\ Ê!5 ½w41Õ– Á× – Û@@ «D-A · ŒC €$‰%E Ÿ(ÑJ ó0³9N68ï*PB@ë[ìHÓ4\ìX ']ìh4jß xZï Sfÿ SrEŸï È4  € ¡˜tE¦ï Ê4® €¢¯˜í € ¢4| mB6 €€'7 € T #| Ñ -fÍ9.f I9 á â  fïA  ‚P €k?  @ Ä !b0 Å"!d fê"!e ‚¼!f€6!g€h0!h ‚ ¾ !ÿv †A! fD! ‚Ÿ!€ê4! f&Á !D¯ …!F f6!G ‚{E!H€Y¯="ÿ Æ"Ïš@"ÿA("@û4" 4ð"! ÿ qSÿYV+"%_Æ"'Ïš@"(ÿA(")@û4"*4ð"+ ÿ BDIR#k2*;9IV$v˜p9UV$wS9NV$E-8ü$Ú% €H$/ ­­9OP$1 ËCop(&ʦ/&Ë»2s'&Ë»2€&ËóKi$&ËRJ-w.&ËL  -R &ËL -:&ËL -*D&ËL -ä-&ËL -8A&ËL -Û&ËL -¨7&ËL 1&Ëå1"o&Ëå1#9COP$2 ³]copP'y/'z»2s''z»2€'zóKi$'zRJ7w.'zL  7R 'zL 7:'zL 7*D'zL 7ä-'zL 78A'zL 7Û'zL 7¨7'zL 1'zå1"o'zå1#ð'}[2$½'€RJ(B'‚ f0µ"'‡ (28$'ˆ (2<k*'Š‘S@Ã2' —SH$8   æ`&ûI/&ü»2s'&ü»2€&üóKi$&üRJ-w.&üL  -R &üL -:&üL -*D&üL -ä-&üL -8A&üL -Û&üL -¨7&üL 1&üå1"o&üå1#?&ý »2(Û7&þ »20¬-&RJ8¨9&(2@¤& ÿKHr&1LPk1& »2X‘%$< V&%DP&§‡/&¨»2s'&¨»2€&¨óKi$&¨RJ7w.&¨L  7R &¨L 7:&¨L 7*D&¨L 7ä-&¨L 78A&¨L 7Û&¨L 7¨7&¨L 1&¨å1"o&¨å1#?&© »2(Û7&ª »20w"&« »28•&¬ »2@Í$&­ »2H $G ”fà $œÙ$´3(#ž2QIop($»24(%ž2E('ž28C((ž2 2(*Cb(Ë(,20Ì(-246D(/Ib8”(02@ª(12D!(3ž2Hù>(4•Pb#(5•X.(6•`×$(8(2hQ(:Ibp[A(<Ibx(=Ib€9(Aå1ˆo(CØ6(Eµ2˜­((HùK ¡9(K0C¨§(L0C°Œ3(NÁ2¸dB(OÁ2¹BA(^2º¡(`å1¼|F(aå1½F:(b©2ÀK-(nå1È/2(uÚ1ÉZB(zµ2Ð2)({µ2ج3(}{Vàp(~¯2è{5(Obð–9(€¯2øHB(„p(†“2{ (‡“2!(Š0Ch"(Ub  (‘[b(-+(“•J0 "(¤Ù$8ü'(¥Ù$P" (¦Ù$hù.(§J1€« (¨J1°^ISv(©“2à¹(«abè³5(­µ2ð^Ina(»­øŒ(¿ 1(À Ò*(Á©2 r&(“2(^Irs(Ô“20ý(Õ©28x(Ö©2@P(ש2Hã(ØÞPBD(Ù“2X|B(Ú“2`Œ>(Û“2h‹(Þ»2pú(ߦTx !(á¦T€‰5(âtSˆÌ"(ã“2`¯<(æÕ8há(è»2p">(ë»2x}(ìµ2€Z-(í©2ˆù(î©2®?(ñf˜‹ (ò­ L1(ô2¨@(÷å1ª, (ùÁ2«®(úÁ2¬^7(ûÁ2­(ý“2°1(gb¸Ÿ (>aèì(/>aðo (=Áaø;:(?‚3E(@fù(B(2H>(D(2K(F€R(I€\(J‚ œ (K©2(!(L©20×:(M©28*(Nf@á;(OÞHc (P“2P‘G(Q“2X(T“2` (Uwbhi=(VÞpÔ(XÁ2xæ(YÁ2yï(ZÁ2zÝ([Á2{Ã(\Á2|(]Á2}H(^Á2~3(_Á2 (af€î(b“2ˆ¨#(d¡—(f2˜ž(h2œa(l2 ?(o€¤Ð(p}b¨™(s©2°Ç(t©2¸¦(u©2À0:(v©2Èø(w¯2Ð3F(z©2ا>(}©2àÕ1(€©2èF (©2ðÒC(™©2ø«(š“2N$(›“2õ:(œ“2T(¯2_(Ÿƒb à (¢µ28Ü%(£µ2@(B(¤“2Hq$(¥¯2Pã(¦¯2X‰ (§¯2`<(¨¯2h%(©¯2p;?(¬¯2x²#(¯f€òG(²Ý=ˆ¯(³»2_ (´»2˜-(µ»2 ¿(¶»2¨I,(¹{V°ü@(»€¸(¼€¼X1(½fÀB<(¾“bÈg6(¿fÐD(į2ØÓ%(Å“2àÕ((Æ“2è5(É€ðX"(Ì2ôG(ÍÁ2ø*<(ÎÁ2ùL0(Ï2ú(Ñ€üg(Ó2A(×2w<(Ø™bP6(çµ2m9(êŸbI(ì¦ ¶ (îÝ=pé(ïJx(ðRJ€fG(ñRJˆ>/(ùÝ=¿6(ú€˜`(ý(2œ$((ÿÁ2 (Á2¡ (Á2¢(Á2£G(‰¤Ö(‰¨ˆ(}¬p8(}°qIan( (2´CF( (2¸*((2¼ü(((2ÀX4((2Äc8(‚ÈH (fл#(p5ØF(!¥bàx4(#92`(%(2dÈ(' ]h<()“2p':(+2xé%(,RJ€V(.RJˆT2(/RJ’D(1RJ˜‹(3RJ ž?(6f¨$&(7­°¡(8­¸d(9(2Àš;(:å1Ä{#(;Á2Å—>(=å1Æ4(>Á2ÇÏ:(FÁ2ÈÒ@(GÁ2ÉÌ (LÆ`Ìî/(NÁ2ÐÅ(SZÑ´(W€Ô\*(YÁ2Øù8([fà=(\“2èn(a“2ðã#(b“2ø¦1(c“2 ÕA(d“2 ](f“2  (g“2 ³1(j“2 ¸F(k“2( ó(l“20 65(m“28 :'(n“2@ ÿ:(o“2H t0(p“2P Ë.(rµbX ÔD(sÅb¨ ÅC(tÅb( Ë6(u“2¨ –%(v“2° P'(w“2¸ 2(x“2À ²'(y“2È Í!(zµ2Ð ý(|µ2Ø Û1(}Eà v7(~­è Û(Õbð ›G(€å1ü õ;(ˆÁ2ý çE(‰Á2þ /9(ž2 "(‘ž2 Ç@(Ÿåb í)( ¯2 Ä=(¢/ ¸ (¦ž2( D;(¨¯20 u (­ëb8 ¸)(®RJ@ "(¯RJH  :(³ñbP Ú2(¶µ2X Ü(·µ2` £ (ºX5h p3(»÷bp Û(¼÷bx åC(¿“2€ ú(À“2ˆ  C(Á“2 .(“2˜ Y&(Ó2  ï(Ä“2¨ «(Æaa° —(ȯ2¸ å0(ɯ2À –C(Ì˜È (ÏÇ]Ð a/(ÐÇ]Ø )(×Ç]à @.(Ùê]è Ú*(Ü÷]ð 8 (ß^ø $ (âµ2 þ+(èµ2 ö (ë¯2  (ïµ2 <%(ó“2 ´(õµ2( ?;(÷ýb0 DG(û“b8 ¥(ýa@ c@(ÿaˆ ÇD( c ( €˜ Ñ (a]  ¢$(" c¸ 6G(-@JÐ n(/­Ø 9SV$O ê$Ù$Csv)ç+%ô1)è/˜,)è(2Ú)è(2 )éÇ69AV$P 7%Cav)öx%ô1)÷y:˜,)÷(2Ú)÷(2 )ø÷99HV$Q „%Chv)ûÅ%ô1)ü;˜,)ü(2Ú)ü(2 )ý:9CV$R Ñ%Ccv)ñ&ô1)òñ9˜,)ò(2Ú)ò(2 )óo9(9$S &&*)f&ô1)É8˜,)(2Ú)(2 )š;9GP$T r&CgpP* !'¦A* “2§(* LJ99* Ý=i+* (2Ç* (2ï;* µ2 8* ¯2(‡:* Ý=0˜ * ©28-Ž9*L@-Ã+*L@s,* ­<H9GV$U -'Cgv)ìn'ô1)íi9˜,)í(2Ú)í(2 )îç8]io)´'ô1)”;˜,)(2Ú)(2 );†$W Á'&t`'?Þ'2/'CTW&jA`'̇(Æ'Í å1î&'Î å1d9'Ï 2C'Ð 2e'Ò 2´.'Ó 2 d5'Ô {VçG'Õ 0Cœ'Ö• ê'× 2(û1'ß/V0î-$Z ”( )0+ )€-+ Ü<â+ œXa>+ 2G+ q)+ å1Ê + •9+ “2 ½8+ f(9XPV$[ )]xpv )õ^)@4)öµ2P+)ö³<³)ö­ý)öâ<>$\ k)&z()ùÀ)@4)úµ2P+)ú³<³)ú­ý)ú=B)ûj< è$] Í)&+ ()"*@4)µ2P+)³<³)­ý),=ö()j< C$^ /*&\0)’*@4)µ2P+)³<³)­ý)Q=B) j< ¼&) '<(›$_ Ÿ*& 0)+@4)µ2P+)³<³)­ý)v=B)j< ¼&)'<(8$b + áE(, ^+@4, µ2P+, ³<?8, ••B, •×,, ž2 Ø$c k+ € -‡­+@4-ˆ µ2P+-‰³<x1-Š­š-‹­$d º+&0)4,@4)5µ2P+)5³<³)5­ý)5›=B)6j< ¼&)7'<(F$e *, Gh. î,@4.µ2P+.³<³.­ý.÷J…2.µ2 6.K(™.;K0˜.]K8™+.f@é .KHº.Ý=P3=.(2X.À=\ <.2`.$h û,&jˆ)^.@4)_µ2P+)_³<³)_­ý)_ï=B)`j< $)bá8(ÊG)o>0 0)q p8Ñ)r p@©/)s pH @)t fP+5)u ©2X ")v f` B)w ©2hg:)x fpµ )y ©2x8)z q€ù){ å1Ý-$i .. ·@+ Ž.k+ *XRB+ *X­"+ IXÈ>+ *X{=+ *X ¡E+ wX(ç<+ –X0¢+ *X89ANY$j ›.rany$Þ‡/‚ $ß /û $à“2?$áž2I$â©2Þ$ã¯2ç$äµ2i$å»2 $æfÌ$ç‚§<$è 2_$é (2¼$ê p[#$ë ç?$ì ˜È3$í Á26$î s2a?$ï ã2&ö9${À/àC$|J]à?$}iŸ $~ /$l Í/&ñ80$00¹,$‚P]€$ƒ Z$„ T$…[]“$†J] ½$‡J](ž $m =0&<"()b’0«5)c¯2š:)d /)eÝ2\)fÝ2È#)g¯2 — $q Ÿ0 D/á0 / •²/&›J#/' (2à6/( (29PAD$r +%)$s û0 í(/+J1G/, •Š/-ÉJE/. •//RJÕ#/0 (2 ¦ $t W1 ¦ 0/LÚ1]G/Mf¾9/Mµ2¥'/MÕJì6/M(2!3/M(2-/M(2 B/M€$ª0/Må1(»/Må1)BI80ªZBU80«4å1BI160¬mõ1BU160­@2BI320®€2BU320¯L(2s(242I2<>2NA0ÙI2Ÿ0< (2As2/ h2p5$w 6*F$y Ë Ù$“2 “2ž2 !' +% x% ¿8‡Á2AÝ2Ý2/ ‡ Í2 X5 ;55Nk52s×674\27¤º5\?7§ 2:,7© f9,7ª »227« ©227¯|5ZL)„;6 Ú) ! G$ ¢% > ~ °+ ‚ $9  !  ´ 5 2 u ˆMC)™Æ5BHE)»R6Che- †6²:-$ Õ8Ñ-% ­<ë-)?QBHEK)¼’6Chek --Ç6H3-.(2\-/2M:-5•41)éI7<)éf)ép– )é)éN)é“2U)éÉ8¬A)éž2ø)éÏ8/)éÛ8¨ )éá8 ò.È8šÉ8@48›µ2P+8›³<³8›­ý8›o?)8œM@ ßA8œd?(ò+8œµ20B8œ(28 (8œ•@n8œ•H¶8œ­P?8œS@Xò,8œ(2`?8œ(2d.78œ/h 8œ(2p18œ(2t»!8œY@xq 8œ‚€Ù 8œfˆA#8œ“2­.8œ•˜…F8œ•  8œ•¨W$8œ•°-^$8œL¸-¸/8œL ¸k 8œÝ=À I7 Õ8 G6 f& L51)îi9<)îf)îp– )î)îN)î“2U)îÉ8¬A)îž2ø)îÏ8/)îÛ8¨ )îá8 ­+1)óñ9<)óf)óp– )ó)óN)ó“2U)óÉ8¬A)óž2ø)óÏ8/)óÛ8¨ )óá8 ,1)øy:<)øf)øp– )ø)øN)ø“2U)øÉ8¬A)øž2ø)øÏ8/)øÛ8¨ )øá8 +1)ý;<)ýf)ýp– )ý)ýN)ý“2U)ýÉ8¬A)ýž2ø)ýÏ8/)ýÛ8¨ )ýá8 ^+3)”;<)f)p– ))N)“2U)É8¬A)ž2ø)Ï8/)Û8¨ )á8 î,3)'<<)f)p– ))N)“2U)É8¬A)ž2ø)Ï8/)Û8¨ )á8_/)áj<5 )â ?9)ã µ2Ü5)ä [2ªE)å Á2_öB)è­<Ã.)é p96)ê îD)ë ­<)ì Á2 †6_¬G)ðÜ<%)ñ Ü<;*)ò ­ ‡(3)ö=Þ")ö­W)öf3)ú,=Þ")ú­W)úf3)Q=Þ")­W)f3)v=Þ")­W)f3)›=Þ")­W)f3)5À=Þ")5­W)5f77): (2AÝ=Ý2Ý= Å% Í= ’03)_>Þ")_­W)_f3)l9>Ì+)m9>ð?)n / _;J><?>r+9J> œ8>š:8å18 å1068 2œ8[> ñ (8&ë>Ì8' •Ï8( •º8) “2µ8* “2 8+ • ^€8-?¼:8. å1'8/?œ>#?S 78:X?)$8; •Qend8< •–"8C •78D#? &d?18›‘?Þ"8›­W8›f )h8«H@¡A8¬¾@Q8­û@?8°9AÑ=8¸SAð8¹iA "G8º‰A(w 8¼´A0D8¾ØA88ÀB@4-8Â%BHx8ÄSAPl>8ÆJBXžA8ÈB`‘? H@ ë> X?ò.8I7 ¨8¢“@±88¤ ‚•8¥“@ •,38¦k@.d?¾@Ý2™2(2 ¥@.2û@Ý2j?fff•“2/(2 Ä@.f3AÝ2j?“2äff423A ™@ A.“2SAÝ2j? ?AAiAÝ2j? YAA‰AÝ2j?#2™2 oAA©AÝ2j?#2¯A å$©A A.2ØAÝ2j?¯A#2 ºA.“2BÝ2j?™2™242 ÞA.“2%BÝ2j?¯A42 B./DBÝ2j?DB 00 +B.d?‡BÝ2¤2€»2M@d?‡B(2(2 Á2 PB/P8h *Crex8i *C¢98j0CA#8l“2Ù 8nf­.8o ­ …F8p ­( 8q ­0],8rÜ<8pos8s •@;8t å1H _@ x68u“B/ 8| †C68}†C8~ÃC:8Di8€ f 6C& x8§ÃC$8¨ €y 8© fu8PUI ŒCfi"ˆ8\D® 8]#J–8^DxàC8^"D€ ÉCÑ38CCÍ8¥ 2/8Ç>DwA8ÈÃC/8Î €DwA8ÐÃC 8Ñ (218Ò (2 cp8ÓD/ 8×ÐDwA8ÙÃC 8Ú (218Û (2 cp8ÜDu8ÞÐD >/@8á‡EwA8ãÃC 8ä (218å (2 cp8æD 28è (2G8é Á2‰ 8ê‡E me8ëÐD(( 8ì E0Œ8í (28*8î 2<Í 8ï 2> 2 å1/@8ôFwA8öÃCq8÷ÃCJ28ø$ÃC 8ùd?cp8úD ‹D8ûD$Ô8ü(2(B8ýÐD0l 8þf8/8[FwA8ÃC{;8 2 58 2 me8ÐD/ 8 žFwA8 ÃCÑ8 ÃC'8  “2ÏE8 f/8·Fval8 €/88oHNå1HS /h8AUIÚ8B (2cp8CD 8D (218E (2 c18F €c28F€Ð88G f&8H f M%8I €(min8J €,max8J€0A8KÐD8B8KÐD@&@8LoHHY 8MoHV3h8«JÚ38À D68 6CEyes8É%DM 8Õ >Dz8߀D\/8ðÖD’8ÿ“E018F¹18[F…8žF&+8$·FÎA8/+*N>- fþ >. f>/˜P>0˜£>1˜ ¬>2˜(*8>4˜04>6˜8"F>8S@uP?h ðP“?jfè ?k ­Æ?qðPÛ?uf‰?v ­ ~?y¿L(í?zfHÚ=?{ ­Pè?}öPX†"?„á ` $?ˆf€#?‰ ­ˆ,?ŒüP:?€˜ó?“f %?” ­¨6?—Ÿ °v2?›fÈT?œ ­ÐÜ.?ŸQØ~3?¢€àA?¦v èÓB?ªf¢?« ­{ ?®Q&?µVL‡?¶fHÔ??· ­P= ?¹QX?À0 `Ö+?Äf€¾1?Å ­ˆšF?ÈQ?ϧM˜#?Ðfà¢?Ñ ­èY!?ÓQðË?Ú Qø?Û ­$?Ý QŠ1?á&Qß?â ­Š ?ä&Q Â0?ìf(Ç?í ­0Q3?ðf8E?ñ ­@ß0?ô €H M ¿L á Ÿ v VL 0 §M ¯ Ì%?õ*N »21-&aQH8-'“2&#-( ­ Á,-E°QW-F ÎQ9-GÞq-H 2zG-I 2L3-J (2aQ.¯2ÎQÝ2µ2(2 µQ /H-MdR»G-Oµ2ð#-S“2rD-Tµ2CC-U (2É -V (2® -WdR Qisa-Xµ2(J(-Yµ20*-ZÝ=8Õ -[ (2@ °Q\—2-gR-h ­<ïF-i R ­< · 8-lS´-mjRË'-n ¯2Þ-o Õ8-p 2¸--x 2/-yS -{(2(_-|(2,Ú-(20 ÔQ Ø' nSC'!nSq>'"mz$'# €ÐóC'$ Á2Ô@'%2Ö SX '(S'šŒS24 ­ €S&S,(''ñSà '( »2â'* •Jcv'+ Ý=&2'- 2ìB'. ¯2 &\'('3DTà '4 »2â'6 •Jcv'7 Ý=gv'9 ©2<': ©2 &Œ0'u¦Tà 'v »2’''x “2&-'y »2ÔG'z “2cv'{ Ý= B7'|¦T( tS3'ŒÐTEsvp' ž2Egv'Ž ©2/'’öTary'“ ¯2ix'” p/'–U¸6'— 2ix'˜ p/'šCUcur'› pend'œ p/'žjUcur'Ÿ “2end'  “23'‘©UEary'•ÐT '™öT9'Ux>'¡CU&D0'ŠþU'‹ þU¹+'¬T1'“2‡7'¢jUô'¤ •J( I&ö6'Ä/VC'Å»2[2'Æ “230'Ù{Vo'ÚS;'ÛñSò$'ÜDTd;'Ý©Ub.'ÞV ¦&6BX'ÿTWQ>' å1¨' å1¹' 2/ ' 2' •b4' •' f´' “2 ò4'  “2(+'  f0+'  f8“'  f@'  /H9'd?P3`'@yWk&'AÞ'3B'BV&50'ÚøW 'Û ¯2ý'ÜøWù'ÝþWV<'ÞþWÚ'ß 2 a%'à 2$!'á 2(<'â 2, ´' yWÕ-'çyW.€*XÝ2“2Ü< X.(2IXÝ2“2Ü< 0X.€wXÝ2“2Ü<“2Þ2 OX.€–XÝ2Ü<DB }X .;@ àXQval@ º5ˆ$@ mÌ@ 2 · @ Ý=´ @¢X ™!(@;YÌ@;Yë@ “2ã)@ fC@ fˆ@ “2 ìX"@ ìXYD€@" ](@& ]8@'º5S-@(€ @+€Ó @-€ @.] Î@/](Qps@0]05@4 28[ @5 2<h @6 f@¿$@7 fH64@8 å1PE+@9 å1Q &@; å1Ra1@< Á2Sz@= 2T#@> »2X±7@? »2`ã @@ “2hû@A 2pP*@B 2r'@C 2tó@D “2x#$@E 2€_@F 2„j%@G ˆžD@H §F@IÁ2˜n@J å1™L#@K 2š),@L 2œ 5@M »2 ë2@N “2¨³@O]°î@P “2¸æ)@Q fÀ‹B@T fȈB@U fÐç@V fØØF@W fà@X fè-@Y fðç*@^ [2ø*6@_ 2ü¿*@` å1þt@a å1ÿŒ0@b µ2"@c á8`F@d ¯24@f ]@g .]@ã>@h å1Tº*@i å1U”5@j å1VÙ@k å1WP9@l {VXy@m ÿ `½D@n [2`/@o [2dº;@rphâF@sppŠ@tqx'@vÁ2y[(@xLx[‡@yLx[ê@zL x[Ð7@{L x6+@}Á2{p@~ å1| MY àX AYº5.]S2>]SD@MY ‡/ J]2P V]&è$š]$Ý2–$$š]àC$$š] a]Ù$Q²] ] ¸].€Ç]Ý2,$RÔ] Ú]Aê]Ý2“2f$S²](?$U^  ^.Á2^Ý2“2®$V+^ 1^A<^Ý2xG^<<^˜<$uG^+>$wG^×$yG^ ${G^‰$}G^®$G^Ä$ƒG^g<$…G^n$ˆG^ 1$ŠG^›6$ŒG^î $ŽG^xø^Sè^Ô"$ø^%$’G^Y=$”G^}$–G^ú,$˜G^ì>$šG^à$œG^þ/$žG^#$¡G^L $£G^í$¥G^T$ªG^_$¸ ð1%$º ð1î$¼ ð1xÐ_S@À_³$¿Ð_D$ÅG^xÿ_Sÿï_Ž $Úÿ_b$Ûÿ_T$Ü5‡6`<+`ë9$Ý6``"$‹J>$=$ŒJ>ˆ$J>.$ŽJ>4‡`<ÿ$·|`.$J>Þ¬`<Œ@$¡`^ $–G^v(L$¡a Ì > Ò> P( 7 ã3 |(I $¶5&)CH$F.apad$G.aÙ$>aSÄ'$PKa QaAaaÝ2»29$ana ta.2aÝ2™2™2a)$fóKö$g§a ­a.»2ÁaÝ2»2d$hKa“/$iÛa áa.€ÿaÝ2f­9Q2$l+^&O$s6bfn$t ã2ptr$u /U:$v b Ž. 2 X 3J J >]fwbS ä €p“bS Þ 6b (2/µbS“2ÅbS “2ÕbSå1åbS À/ µ2 ,Q ^5  ) /“2cS"ò3$ 2õ $ª2A’5÷0A&5aWc< ;AÅLcšaoc< AcdcÙAþI22”c<‰cx*A ”c2±c<¦c–3A ±cÛA G^5 A ”cð1èc<Ýc•4A ècæ+B&y2B(Ý2«B-†2n#B1Á2ï5B4Á2L/BKp5ö=BLp5ü%BXy2«B[}bYDB\€Q;B]€`(Bapa3Bey23Bfy2ëBiHB“y2Þ'B§y2VEB©€ª*B®€±2BåÎaU5Bçµ2BèŽ$Bëy22BóÙ$‹BùÁ246eS.Bú&eJ4$4­]Ñ$6­]ZLC=+f S î • ) ˜ »% P  Ù ª6 >& 40  “E % f2 > N  á  $. ‚ ¶= ˜0 ò7 è. ! ä! ‰C &4 ß/ Û4  Ã?ä;fS+fC=Cƒ;f.\fSLf÷C \fð1}fSÿmfÄ$N }fÈ2šf<fù&$bšf¾$cšf $dšfz$ešfL.$fšfÄ;$gšfZLDÄh R q? > ­  ƒ ¹? À> ˜# r! .A Ý( g P& x ƒ º  # ç  3 ¦  ä È ü æ  ÿ2 ¥  ã Ç û 4 A Ó0 () {%! æ5" ë # D0$ Ï% ±&& ¸@' ,0( ß ) @* È+ c-, Æ- . Ê,/ 0 É,1 {92 Á3 z94 À5 –6 4(7 •8 3(9 ÷: -; :< := + > à ? s @ FA 'B ,C .@D •E ÎF Í G žH ‡8I FJ xK3$ZçhEnv$ZEu8$ZìhÄhå1ühS†/$Zçh3$[,iEnv$[Eu8$[ìh i½$[,iSá,_ µ2 @ñ S½_µ2 8ñ S« ` “2 0ñ S”`“2 (ñ S:2a “2  ñ ZLcëi ’. ­@ ¿5 °! ¦! (" 2" ©4;Hp „jš:q(2@r(2Ps ­iu“2>vµ21*y“2 þFz ­(†){€0_+|44õ!~“28(~“2@°4ëi„j/p ójcurƒ fend„ fsv…“2†„j3‡(2`­ˆhk ‰•j/hë _kcurí fendî ferrïÞð„j$<ñ(2`ò(2dJ*ókZ|kSÿ@*'%lk  ð w.%ð P±¥œX}%… ð Ý2!cvð Ý==+ õ € axõ 2"'¹1õ ž2spõ ž2'^õ 2@#Bú Þ ÅÅŸÐVXl _p /€~Wvl _p /¥£0W”l _p /ÊÈ`W²l _p /ïíWÐl _p /ÀWîl _p /97ðW m _p /^\ X*m _p /ƒPXHm _p /¨¦€Xfm _p /Í˰X„m _p! /òðàX¢m _p# /YÀm _p% /<:@YÞm _p' /a_pYüm _p) /†„ Yn _p+ /«©ÐY8n _p- /ÐÎZVn _p/ /õó0Ztn _p1 /`Z’n _p3 /?=Z°n _p5 /dbÀZÎn _p7 /‰‡ðZìn _p9 /®¬ [ o _p; /ÓÑP[(o _p= /øö€[Fo _p? /°[do _pA /B@à[‚o _pC /ge\ o _pE /ŒŠ@\iq i €¿¯0]p _p /xv«¹¥7 ¼¹²7T _ÉQ0 .¹\pp.›=\*.Ëɹ¥7 1¹¿7T ×ÄQ1 .L¹à\Ùp.ðî=à\*.  Q¹¥7 e¹¿7T ÅQ1Ù¸¥7í¸Ì7 qT íÃQ1û¸¥7¹Ì7;qT ãÉQ1…¹¥7 –¹Ù7T ¡ÅQ0f±¥7бæ7¸qU çà Q ÅÅR ½ÅX ¸Å“±¥7š±¥7¡±¥7·±ó7 rT ÊÅQ `$¾±¥7Ô±ó7DrT ÚÅQ @@Û±¥7ñ±ó7}rT èÅQ 2ø±¥7²ó7¶rT ÆQ Ð0²¥7+²ó7ïrT ÆQ 0.<²¥7R²ó7(sT 6ÆQ 0.c²¥7y²ó7asT MÆQ 0.в¥7 ²ó7šsT bÆQ 0.±²¥7Dzó7ÓsT zÆQ 0.ز¥7î²ó7 tT ŠÆQ 0.ÿ²¥7³ó7EtT žÆQ 0.&³¥7<³ó7~tT ¸ÆQ 0.M³¥7c³ó7·tT ÉÆQ 0.t³¥7гó7ðtT ÚÆQ 0.›³¥7±³ó7)uT ëÆQ 0.³¥7سó7buT ýÆQ 0.é³¥7ÿ³ó7›uT ÇQ 0.´¥7&´ó7ÔuT $ÇQ 0.7´¥7M´ó7 vT ;ÇQ 0.^´¥7t´ó7FvT JÇQ P,…´¥7›´ó7vT fÇQ P,¬´¥7´ó7¸vT ÇQ P,Ó´¥7é´ó7ñvT šÇQ P,ú´¥7µó7*wT ¶ÇQ P,!µ¥77µó7cwT ÊÇQ P,Hµ¥7^µó7œwT âÇQ P,oµ¥7…µó7ÕwT ÈQ P,–µ¥7¬µó7xT ÈQ P,½µ¥7Óµó7GxT *ÈQ P,äµ¥7úµó7€xT @ÈQ P, ¶¥7!¶ó7¹xT UÈQ P,2¶¥7H¶ó7òxT oÈQ P,Y¶¥7o¶ó7+yT ŠÈQ P,€¶¥7–¶ó7dyT ÈQ ;¶¥7³¶ó7yT ±ÈQ ð=º¶¥7жó7ÖyT ÉÈQ 09×¶¥7í¶ó7zT ÜÈQ à6ô¶¥7 ·ó7HzT óÈQ N·¥7'·ó7zT ÀÃQ P.·¥7D·ó7ºzT ÉQ p¯K·¥7a·ó7ózT !ÉQ 0~h·¥7~·ó7,{T 2ÉQ p{…·¥7›·ó7e{T JÉQ Àr¢·¥7¸·ó7ž{T _ÉQ €*·¥7Þ·8â{T íÃQ|R sÉX0å·¥7û·ó7|T zÉQ ð4¸¥7¸ó7T|T ŽÉQ ÐI¸¥75¸ó7|T £ÉQ K<¸¥7c¸ 8å|T ·ÉQ  ®R ÅÅX µÉY0j¸¥7‘¸ 8=}T ÍÉQ pqR ÅÅX µÉY0͹¥7xÛ¹8(Ô pqKœv%… Ô Ý2E A !cvÔ Ý=† ~ + Ö € spÖ ž2÷ å axÖ 2À ¶ ¹1Ö ž27 3 ^Ö 2Š ˆ €)÷~m@Ü “2È À à)Ü~@P „j‘€ 6.ÿqP*Q e~C.& $ `P*&r¥76r{À•~UvTwQ0@r¥7Jr¥7r¥7 ¢r&8TvQvR1ñq¥7er¥7 /«qP)Ö #/K I ¡q¥7«q¥7Áq¥7¬r38 »r=8U~T zÅ( º  ®Kœ%… º Ý2r n !cvº Ý=³ « + ¼ € sp¼ ž2$  ax¼ 2í ã ¹1¼ ž2d`^¼ 2·µ@U  “2õí Uõ€@F „j‘€ 6.¯®VG ƒ€C.SQ`VÖ®¥7ä®æâ®€UvTw7ø®¥7?¯¥7 R¯&8TvQvR1¡®¥7¯¥7 /[®U¼ 9#/xvQ®¥7[®¥7q®¥7\¯38 k¯=8U~T ±Å(Æœ K}œÃ†%… œ Ý2Ÿ›!cvœ Ý=àØ+ ž € spž ž2A? axž 2pd¹1ž ž2üø^ž 2OM` †H<¢ Ɖ…5¢L~‚ _p; /ÿ5ÄL¨‚ _p< /ýù5èLÒ‚ _p= /735 Mü‚ _p> /qm50M&ƒ _p? /«§ Ã.«L ; ‡ƒÜ.åáÐ."ç.À è.[U «MJ8T} Ã.ÏLð < èƒÜ.©¥Ð.ãß"ç. è. »MJ8T} Ã.óLP= I„Ü.miÐ.§£"ç.€è.ãÝ ËMJ8T} Ã.M°> ª„Ü.1-Ð.kg"ç.àè.§¡ ÛMJ8T} Ã.;M? …Ü.õñÐ./+"ç.@è.ke ëMJ8TvôK¥7L¥72L¥7`L¥7oL¥7LW8q…T}Q íÃL¥7«L¥7ÏL¥7óL¥7M¥7;M¥7M¥7“MÌ7ð…T íÃQ1 þMd8U 0º5RMQ†=µ |·µYM¥7dM¥7 /·K0 ž z†#/ÝÛ­K¥7·K¥7ÍK¥7 N=8U}T èà „j(P| ÐIºœ‘‰%… | Ý2!cv| Ý=E=+ ~ € sp~ ž2¦¤ ax~ 2Õɹ1~ ž2a]^~ 2´²` æˆH<‚ Æîê5âJ¸‡ _p2 /($ Ã.ëJ  2 ˆÜ.b^Ð.œ˜"ç.Ð è.ØÒ kKJ8T}4J¥7UJ¥7rJ¥7 J¥7¯J¥7ÁJW8ˆT}Q íÃÐJ¥7ëJ¥7GK¥7[KÌ7ʈT íÃQ1 {Kd8U 0º ‰=— |$""K¥7-K¥7 /÷I0 ~ H‰#/JHíI¥7÷I¥7 J¥7 ŠK=8U}T èÃ(fZ ð4åœ'Œ%… Z Ý2qm!cvZ Ý=²ª+ \ € sp\ ž2 ax\ 2@6¹1\ ž2¹µ^\ 2  Pp‹H<` ÆFBT5¥7u5¥7’5¥7À5¥7Ï5¥7á5W8¼ŠT}Q íÃð5¥7,6¥7:6q8ôŠT}Q~u6¥7‡6~8#‹T}Q0R2Ÿ6¥7³6Ì7T‹T íÃQ1 Æ6d8U 0º5M6µ‹=w |~|T6¥7_6¥7 /5 \ Þ‹#/¤¢ 5¥75¥7-5¥7 Õ6=8U}T èÃ(%*8 €*Ëœ%… 8 Ý2ËÇ!cv8 Ý= + : € sp: ž2mk ax: 2œ¹1: ž2($^: 2{yðfŽ|&> “2·±H<? Æ0_p $/Lõ.¦+¦+ $H/QOä*¥7+¥7"+¥7P+¥7_+¥7q+W8®T|Q íÀ+¥7±+¥7¼+‹8àT|Æ+¥7õ+¥7,¥7,Ì7+ŽT íÃQ1.,d8JŽU 0º <,d8U Pº5Î+«Ž=U |vtÕ+¥7à+¥7 /§*À: ÔŽ#/œš*¥7§*¥7½*¥7 K,=8U}T èÃ(^¾ Àr®œZ•%… ¾ Ý2ÿ!cv¾ Ý= ü+ À € spÀ ž2o c axÀ 2!ñ ¹1À ž2·!±!^À 2#""Ð*Û”H<Æ Ã†‡""m@Ç “2ï"ã" +ÑFlenã­‘° sträÞu#q# curå­¯#«# È/âtp+ê’ñ/ç#å#å/$ $Ù/7$1$ ñt˜8T|·v¥7Ìv~8ÃT|Q‘°R2­xŽ, +U’ svó“2Œ$†$@RDô­‘° Àlu0,ø–‘Àç$Ù$=0,'À¤%|%T2ÀÂuG;ÀTDÀwGMÀGVÀG_ÀGhÀTqÀ y Xzd8U ¼Êw¥7Þw{À‘T~Q‘°êw¥7ôw¥7;x¥7Kxq8 ’TQ‘¨÷y¥7 z&89’TQR1 Z{d8U ¸¿ \. wÀ,Ó"‹’y.:'0'n.µ'«'Ms¥7fs¥7ƒs¥7±s¥7Às¥7ÒsW8ñ’T~Q íÃás¥7t¥7St¥7`t£85“T}Q0“t¥7 t£8_“T|Q0u¥70u¥78u°8ev¥7„v¥7åv¥7÷v¼8Ï“T}Q2R0Rx¥7cx¥7•x¥7x°8%y¥77y¼82”T|Q2R0y¥7yÉ8c”T ¶ÉQ0­y¥7»yÖ8Ž”TQ}×y¥7ëyÌ7¿”T íÃQ1 L{d8U 0º /ýr*À •#/&($(ór¥7ýr¥7s¥7_{38 n{=8U~T cÅ(ü˜ p{ºœ™%… ˜ Ý2M(I(!cv˜ Ý=Ž(†(+ š € spš ž2ý(í( axš 2·)«)¹1š ž2C*=*^š 2©*§* -…˜H<  Æá*ß*m@¡ “2++p-«— sv¶“2F+>+@RD·­‘@ ,}Ð-» º–,¨+¢+,¨+¢+&,õ+ñ+ µ}/1H,~³|¥7Ä|{Àë–U~TvQwÎ|¥7Ø|¥7.}¥79}ã8*—T|C}¥7N}‹8O—T|‡}¥7™}~8~—T~Q0R2Ç}¥7 Ú}&8TvQvR2ö{¥7|¥7!|¥7>|¥7l|¥7{|¥7|W8˜T}Q íÜ|¥7Y}¥7ï}¥7~Ì7i˜T íÃQ1 ~d8U 0º /«{ð,š ®˜#/-,+,¡{¥7«{¥7À{¥7~38 *~=8U~T tÅ(³x 0~Üœ¤›%… x Ý2T,P,!cvx Ý=•,,+ z € spz ž2-ô, axz 2Ò-Ä-¹1z ž2q.k.^z 2×.Õ.@.2›H<€ Æ/ /m@ “2>/2/¢~¥7´~¥7Í~¥7ê~¥7¥7'¥79W8QšT}Q íÃH¥7_¥7o{ÀŽšU~TvQ0y¥7ƒ¥7ž¥7·¥7ËÌ7æšT íÃQ1×¥7ê&8›TvQvR1 ýd8U 0º /W~.z [›#/Â/À/M~¥7W~¥7l~¥7 €=8U~T tÅ(±X p¯Üœ?ž%… X Ý2é/å/!cvX Ý=*0"0+ Z € spZ ž2›0‰0 axZ 2g1Y1¹1Z ž222^Z 2l2j2€VÍH<` Ƥ2¢2 a “2Ó2Ç2⯥7ô¯¥7 °¥7*°¥7X°¥7g°¥7y°W8ñœT}Q íȰ¥7Ÿ°¥7­°æâ)U~Tv·°¥7Á°¥7ܰ¥7÷°¥7 ±Ì7T íÃQ1±¥7*±&8±TvQvR1 =±d8U 0º /—¯PVZ ö#/W3U3¯¥7—¯¥7¬¯¥7 L±=8U~T «Å(9@ Pyœ ¢%…  Ý2~3z3!cv Ý=¿3·3+ ! € sp! ž2(44 ax! 2£4™4¹1! ž255^! 2ˆ5€5 .¢H<' Æê5ä5 key( “27636 cb* “2s6o65§RwŸ _p— /«6©6®R¥7 »Rð8T<5!R+ÑŸ_p /*R¥7 LRý8T}Q‘¸R0X0Y0ðïŸ _p¡/Ò6Î6 Ã.jS ¡P Ü.77Ð.]7W7"ç.`è.¬7¦7 êSJ8T} Q¥7(Q¥7AQ¥7^Q¥7ŒQ¥7›Q¥7­QW8àTQ íüQ¥7ÝQ¥7nR¥7yR 9¡T}•R¥7ÕR¥7àR94¡T}îR¥7Sý8p¡T}Q‘¸R0X0Y0S¥72S¥7ES¥7jS¥7wS¥7ŠS&8Ô¡TvQvR1—S¥7«SÌ7¢T íÃQ1»S¥7 úSd8U 0º /½P`! W¢#/ø7ö7³P¥7½P¥7ÖP¥7 T=8UT ‡Ä(1 õ NuœÙ¥%… õ Ý288!cvõ Ý=`8X8+ ÷ € sp÷ ž2É8¿8 ax÷ 2D9:9¹1÷ ž2½9·9^÷ 2):!:°g¥H<ý Æ‹:…: cbþ “2Ú:Ô:5QO££ _p /';#; Ã.\O ¤Ü.a;];Ð.›;—;"ç.0è.×;Ñ; cPJ8T~N¥7¦N¥7ÃN¥7ñN¥7O¥7OW8j¤TQ íÃ!O¥7BO¥7\O¥7šO¥7¥O9¶¤T}°O¥7ÇO¥7ÚO¥7õO¥7P¥7#PÌ7¥T íÃQ17P¥7JP&8K¥TvQvR1 vPd8U 0º /=Np÷ ¥#/#<!<3N¥7=N¥7VN¥7 …P=8UT pÄ(Î<Ø à6Gœà¨%… Ø Ý2J<F<!cvØ Ý=<ƒ<+ Ú € spÚ ž2== axÚ 2r=f=¹1Ú ž2ü=ø=^Ú 2O>M>°)¨|&Þ €‰>…>l$ß ™2Ã>¿>H<à Æý>ù>à§î pL?H?L8¥7÷8¥7 9$9T|QvG7¥7\7¥7d719y7¥7’7¥7¯7¥7Ý7¥7ì7¥7þ7W8¨§T~Q íà 8¥7(8¥7¥8¥7°8¥7Ï8¥7ã8Ì7 ¨T íÃQ1 9d8U 0º5t8n¨=ð |„?‚?{8¥7†8¥7 / 7€Ú —¨#/ª?¨?7¥7 7¥7#7¥7 '9=8U}T èÃ(D² 09UœŒ«%… ² Ý2Ñ?Í?!cv² Ý=@ @+ ´ € sp´ ž2{@q@ ax´ 2ö@ì@¹1´ ž2oAiA^´ 2ÛAÓAp«H<º Æ;B7B'P» (2­9¥7Æ9¥7ã9¥7:¥7 :¥72:W8ªTQ íÃA:¥7d:¥7:¥7’:¥7¶:¥7Ô:¥7ã:¥7ó:>9ªT}Q2;¥7';¥7:;&8ͪTvQvR1O;¥7c;Ì7þªT íÃQ1 v;d8U 0º /]90´ C«#/sBqBS9¥7]9¥7v9¥7 …;=8UT "Ä([C• ð=Gœ“®%… • Ý2šB–B!cv• Ý=ßBÓB+ — € sp— ž2mCgC ax— 2ÂC¶C¹1— ž2LDHD^— 2ŸDD€Ü­|&› (2ÙDÕDl$œ ™2EEH< ÆMEIE°άâ« œE˜EX?¥7@¥7 @K9T|QvW>¥7l>¥7t>19‰>¥7¢>¥7¿>¥7í>¥7ü>¥7?W8[­T~Q íÃ?¥77?¥7µ?¥7À?¥7ß?¥7ó?Ì7À­T íÃQ1 (@d8U 0º5€?!®=­ |äEâE‡?¥7’?¥7 />P— J®#/ FF>¥7>¥73>¥7 7@=8U}T èÃ(ù?o ;UœG±%… o Ý21F-F!cvo Ý=rFjF+ q € spq ž2ÛFÑF axq 2VGLG¹1q ž2ÏGÉG^q 2;H3HÕ°H<w Æ›H—H@x (2ÓHÑH <¥7&<¥7C<¥7q<¥7€<¥7’<W8Ó¯TQ íá<¥7Ç<¥7â<¥7õ<¥7=¥7<=¥7K=¥7[=>9K°T}Q2e=¥7‡=¥7š=&8ˆ°TvQvR1¯=¥7Ã=Ì7¹°T íÃQ1 Ö=d8U 0º /½;Àq þ°#/øHöH³;¥7½;¥7Ö;¥7 å==8UT 4Ä(Ê&Q P,Ýœà³%… Q Ý2II!cvQ Ý=`IXI+ S € spS ž2ÍI¿I axS 2nJdJ¹1S ž2åJáJ^S 28K6K ixT 2rKnK5“,,² _pT /¬K¨K`n³H<Z ÆçKãKË,¥7ä,¥7-¥7/-¥7>-¥7P-W8°²TQ íÃ_-¥7v-¥7-¥7¡-¥7½-¥7Ï-¥7â-&8!³T|Q|R1÷-¥7 .Ì7R³T íÃQ1 .d8U 0º /},0S —³#/LLs,¥7},¥7“,¥7 -.=8UT èÃ(Ê5$ 0.—œÌ¶%… $ Ý2FLBL!cv$ Ý=‡LL+ & € sp& ž2ðLæL ax& 2uMaM'¹1& ž2^& 2YNQN ix' 2¿NµN5”.½´ _p' /7O1OàZ¶H<- ÆŠO‚O+. €ìOêO¶.¥7Ô.¥7ñ.¥7/¥73/¥7G/W8XµT‘¸Q íÃV/¥7{/¥7–/¥7©/¥7Ó/¥7û/¥7 0¥70X9еT}Q2?0¥7_0¥7r0&8 ¶TvQvR1Œ0¥7 0Ì7>¶T íÃQ1 ¸0d8U 0º /]. & ƒ¶#/PPS.¥7].¥7v.¥7 Ç0=8U|T öÃ(- Ð0¼œ ¹%…  Ý28P4P!cv Ý=yPqP+  € sp ž2èPØP ax 2¡Q•Q¹1 ž2+R'R^ 2~R|RP›¸H< ƸR´R=1¥7V1¥7s1¥7¡1¥7°1¥7Â1W8÷·T}Q íÃÑ1¥7ø1¥7"2¥772¥7K2Ì7O¸T íÃQ1W2¥7j2&8¸TvQvR2 }2d8U 0º /÷0  ĸ#/ðRîRí0¥7÷0¥7 1¥7 Œ2=8U~T èÃ(~+Ó2_œì»%… ÓÝ2SS!cvÓÝ=XSPS+ Õ€ spÕ ž2ÁS·S axÕ 2œÀÅ%æÊ“2ÓZÅZ%Ê Æ[k[%ô"Ê.‘Si\Y\FdecÌ _k‘à~ svÍ“22]]0'<ÁRDë ­,^&^ ñpd8U ¸¿0NÁ_p /ð(ý uni “2{^u^Fcop ¦‘~ ,Up )&ÖÁ,È^Ä^,È^Ä^&,_þ^ 1q/1H,smo¥7uo19o¥7¤o¥7¬oŒ9µo¥7Áo¥7Ðo™9JÂT}àÙo¥7ùo¥7p¦9’ÂTvQ~R}XDY3&p¥7.p³9}pd8ÑÂU ÀR}?q¥7 Qq~8TvQ0R2  ârm`'Pîâ<_8_"»â°'¼â~_x_DÊâ( $ØâLå( n n,-®Ã÷(Ö_Ð_÷(Ö_Ð_ nü0UsH÷(sM â0( ïÃ$®â"»â0(¼â'``DÊâ€( $Øâ Ã.Ro°( PÄÜ.‘``Ð.Ë`Ç`"ç.À(è.aa iqJ8Tv¸l¥7Êl¼8ÄTsQ2R0êl¥7ølÀ9ªÄTsQ~ÉmÀÅÃÄU‘à~ôm¥7ÿm‹8èÄTvnn¥7yn9 ÅTs…n¥7n‹82ÅTs¬n¥7¼nÍ9\ÅTsQ3Ín¥7Ún£8†ÅTsQ0Ro¥7¦pd8²ÅU 8À,q38I&‡“2Tœ=Û!dec‡=Û¹aQa:QEÅ GÜnT$€ÐYÜ×e½e=fÜìfÞfrÜ™ggT~ÜÐT)‡Ü€ÆŒÜ¥hhuT¥7 ‚Tð8T<M âÀŠÑÆ$®â"»âÀ¼â¡i™iDÊâ  $Øâ Ã.×TP.2ÇÜ. jjÐ.Cj?j"ç.€è.jyj ƒfJ8T|)™Ü° ÊžÜÙjÉj«Ükˆk¶Üøkìk)ÁÜgÉÆÜl€lM â§ÁÇ$®â"»â¼â@m8mDÊâ` $Øâ  â¦Z© È®â¨m¤m"»â ¼ââmÞmNÊâe% $Øâ Ã.[à²ÈÜ.nnÐ.YnUn"ç.ðè.•nn fJ8T Ã.ðg ­âÈÜ.ãnßnÐ.oo"ç.0è.[oSo wiJ8T_ZÞúÈU}ÙZÀÅÉU}íZ¥7[ý8LÉT|QR0X0Y0[¥7ðg¥7"ôÜ`õܾoºoÝöoôo  â0\нéÉ®â"pp"»âà¼â\pXpNÊâªf# $Øâ  âs\ ¿HÊ®â™p•p"»â0¼âÓpÏpNÊâØf% $Øâ¦\ÀÅ`ÊU}»\¥7 Þ\Ú9T|QR‘”X$Y‘˜M âpÍ íÊ$®â"»âp¼âq qNÊâ8d( $Øâ  âw[ÀÚ LË®â|qxq"»âмâ¶q²qNÊâpd  $Øâ)kÝìÌpÝrïq|ÝÆr¾r)‰Ý`ÏËŽÝ(s"sÍ`¥7à`¥7ô`¥7k¥7‰kç9¥`¥7¯`¥7·`Œ9¾`¥7Æ`ô9 a¥7(a¥73a‹8BÌT~>a¥7La¥7\a:yÌTvQ3fa¥7=k¥7Kk9_k¥7rk&8ÐÌTvQvR1 Økd8U ½)Ý+ÐÝysqs"ÝßsÕs).Ýà[Ï/ÝetQt;ÝBu8u)HÝ0–ÍMÝ»u±u7j¥7Jj¥7^j¥7¬k¥7´kç9Lõ.øjøj  ËÍ/,v*vj¥7j¥7!jŒ9(j¥70jô9vj¥7j¥7¨j‹8>ÎT~¯j¥7¾j¥7Îj:uÎTvQ3Øj¥7õj¥7 k¥7k¥7!k¥7)k³9˜k¥7 k:Êkd8üÎU À¼çk¥7òk9!ÏT|ük¥7l¥7 l&8TvQvR1ƒi¥7Ži:€ÏT|•i¥7¢i(:ªÏT|Q0°i¥7»i:ÏÏT|Âi¥7Íi5:ôÏTÛi¥7 øiý8TvQ|R0X0Y0×T¥7C`¥7N`r9]ÐT|y`¥7 „` 9T| CÛ@U`$¢ÖUÛsvOv=`bÛxåwoÛoyIyG|Û  â[UP>Ñ®â÷zñz"»â°¼âD{@{DÊâ $ØâM â@G`Ñ$®â"»â@¼â…{}{DÊâ  $Øâ Ã.õUÐÁÑÜ.ñ{é{Ð.S|O|"ç.0è.|‰| gJ8Tv Ã.V`‚ÒÜ.á|Ù|Ð.B}>}"ç.°è.€}x}gJ8  âÙ]ðNnÒ®âã}ß}"»âP ¼â~~DÊâ   $Øâ)…ÛÐ /ÖŠÛ\~V~–Û­~¥~¡Û®Ûyo»ÛêèÇÛ€ €ÔÛÔ€º€)àÛ€!2ÓåÛ‚úÇ^¥7Ú^¥7î^¥7i¥7iç9 Ã.î_°!u“ÓÜ.M‚I‚Ð.‡‚ƒ‚"ç.À!è.½‚ giJ8Tv Ã.`ð!vôÓÜ.ƒ ƒÐ.KƒGƒ"ç."è.‡ƒƒ WiJ8T~)Ü0"ÔÜӃуLõ.|a|a w DÔ/øƒöƒ@^¥7K^B:iÔT|V^¥7c^N:“ÔTvQ0v^¥7Š^[:ÊÔTQ ÒÄR0Ÿ^¥7©^¥7±^Œ9¸^¥7À^ô9_¥7r_¥7…_h:HÕT|QR1±_¥7Í_¥7Ý_:ÕT|Q2ä_¥7î_¥7`¥7a¥7—a¥7¢a¥7³a¥7»a³9Zh¥7bh:«h¥7 ¼h&8T}Q}RžUÀÅGÖU}õU¥7V¥7 ^ÀÅyÖU}Ye¥7ce¥7h¥7 "Þ8V`"•Ø4Þ5„„4Þ5„„=`"AÞR…<…NÞV†>†G[Þ)dÞ#QØeÞZ‡J‡)rÞp#¸×gsÞ‘°Þ"ˆˆ´c¥7Çct:p×TvQ| $ &R‘°Ýh¥7ëh:–×T~úh¥7 iã8T~Mb¥7Xb:Ý×TsÇb¥7Ùb:ØT~8$8&0 $ &d¹))ØUv:h¥7 KhÉ8TvQ|îV¹)iØUvW¥7 WŽ:awö- ºÝ.W #Ž$ÚÌÝyˆkˆ= #Ù݉‰TåÝWT)îÝp$ÙóÝ¿‰±‰5W¥7 BWð8T;M â°$URÙ$®â"»â°$¼âXŠTŠDÊâ % $Øâ)ÞP%^ÚÞ›Š‘Š  âÙWà%d ¿Ù®â‹ ‹"»âP&¼âv‹n‹DÊâ°& $Øâ  âcYà&q Ú®âÞ‹Ú‹"»âð&¼âŒŒNÊâ`]( $Øâ¸WÀÅ6ÚU}ËW¥7 ÙW›:T|QÓa¥7 Þar9T| UÞ™ÚU}4X¥7?X¥7NX9ÌÚTs¸ X¥7«X9ñÚTs0i .ÛU ×ÄDi ./ÛU ÅXk38 _kJB?4“2GÜ*dec4=Ûtag6“2val7“2:QE€0&ÜavX ¯2iY €lenY €'D4Z µ2sv[ “2'zD` ©2spež20óÛ'mhIb0Ü_pu/0Ü_pv/,_pw /08Ü_p/,_p‚/J7„“2ºÝ*dec„=Ûsv†“2hv‡µ2:QE-0™Ü_p‡ /0Ý'¥™“2pšfe›f0ôÜkey£“20åÜ_p­/,_p²/,key¹flenº€0kÝcbëÕ8heëÕ8,sp÷ž2'M%ø€0[Ý'mûIb,_p /0«Ýsp ž2'M%€0œÝ'm Ib,_p! /,_p./J“P“2"Þ*decP=ÛavR¯2:QE}0Þ_pR /0Þ'¥\ “2,_p~/JIÛ“2Þ*decÛ=Û'ûÝ€')$Þ f:QEK,len €,uv1 'z2 €IF>“2ðCØœ#â!dec>=ÛkŒQŒ sv@“2ƒu)@A€7ŽŽD/B fí…zQEÕ„F0äáFbufF #â‘ ÿ~ curG f]””° á chK4W—/—p >à lobö˜ð˜ hib]™C™ 3,HÐ †!ûßN,pšdšD,›òšb3,HP ÖN,ɛǛD,ò›ì›hE0!àUuTtHFâu ØG0TtHFâu=` @E(–­‘˜ÿ~Z,GÀ š,Cœ?œu,ƒœœk,½œ¹œbZ,,G0 Å,õœóœu,k,B@3G¥7 LG§:TvQ~R‘€ÿ~X@<$=€ len³­meÀ »á cur·­ÍÉ þ/ÀDð ¼  á'0žž0*ž(ž0QžMž ÒD´:T}Qs ûFŽ,UQsÎE¥7 ÜEÉ8T}Qs0I¥7AIÉ8âT ¶ÉQ0’I38q4âRS @Jø (šâ*dec(=Ûd1*Zd2*Zd3*Zd4*Zcur+šâ:QE9 4?r(ÿÊâ*decÿ=Û,ch q? +öæâ*decö=ÛIÇ“2«Šœ8æ% Ç“2›žž%Ç ÆCŸ9ŸFencÉ ój‘à~Lå(¶«¶«Ë*¢ã÷(¾Ÿ¸Ÿ÷(¾Ÿ¸Ÿ É«ü0UvH÷(v ™‡¬pSÙ(å§   ™p­ÐS"§Z V   (p­ T&mä»(”  ®(Р̠È(¨­4É( ¡¡Ö(B¡@¡ ¾­Ž,TvQ1x(Ü­PT'“(g¡e¡†(¡‹¡4 (Ü­Ü­9š»(²¡°¡®(ء֡È(á­4É(ÿ¡û¡Ö(7¢5¢ ò­Ž,TvQ1 æ- ­€Tâ£åó-\¢Z¢)þ-ÐTkåÿ-ƒ¢¢­¥7!­£8•åTvQ1­¿:¬¥7¬e9ÈåT@&¬¥71¬‹8íåT|‡¬8æ æUwTvn­d8*æU hî38(d~à‹Èœ\!enc~\΢¦¢!sv~“2©¤u¤6]èFlen„­‘° str… f̦Ȧ x(CŒ@6†`ç“(§§†(D§@§ (CŒ€6š»(~§z§®(º§¶§È(à8É(ô§ð§Ö(,¨*¨ õŽ,TvQ1 x(uŒ°6ˆè“(S¨O¨†(‘¨¨ (uŒà6š»(˨Ǩ®(©©È(5É(A©=©Ö(y©w© -Ž,TvQ1uŒü/èUsT}¾Œ¥7 ÓŒ~8T|Q‘°R271é iœ2 ©œ© u(2æ©Ö©óžq«þª nzžqâ«Î« (3@7  »(”­­®(Э̭È(ˆ’CÉ( ®®Ö(W®U® §’Ž,T|Q6 bp7¾}¤®z®pg°C°=p7‰ó±å±–ª²’²)£8Qõ¨º³¦³)µ@9½ðº”´ˆ´Ç*µµ)Ó 9"êØ¶úµê•¥7ÿ•¥7–¥7n¥7vç9 x(ò–Ð9* Óê“(M¶I¶†(‹¶‡¶ (ò–:š»(ŶÁ¶®(·ý¶È(Á:É(;·7·Ö(s·q· ÙŽ,TvQ1 x( —0:+ „ë“(š·–·†(Ø·Ô· ( —`:š»(¸¸®(N¸J¸È(‡:É(ˆ¸„¸Ö(À¸¾¸ ŸŽ,TvQ1 x(}—:- 5ì“(ç¸ã¸†(%¹!¹ (}—À:š»(_¹[¹®(›¹—¹È(rž:É(չѹÖ( º º ŠžŽ,TvQ1 x(”—ð:. æì“(4º0º†(rºnº (”— ;š»(¬º¨º®(èºäºÈ(÷ž:É("»»Ö(Z»X» ŸŽ,TvQ1 x(«—P;/ —í“(»}»†(¿»»» («—€;š»(ù»õ»®(5¼1¼È(½ž:É(o¼k¼Ö(§¼¥¼ ÕžŽ,TvQ1)æ°;îçҼʼ x(ë—à;8cî“(H½D½†(†½‚½ (ë—<š»(À½¼½®(ü½ø½È(ô›@É(6¾2¾Ö(o¾m¾ œŽ,TwQ1ë—8æ{îUs ˜8æUs x(,˜@<A Aï“(–¾’¾†(Ծо (,˜p<š»(¿ ¿®(J¿F¿È(8ž:É(„¿€¿Ö(¼¿º¿ PžŽ,TvQ1¼•¥7È•¥7ЕŒ9Ù•¥7á•ô9/–¥7M–¥7X–Ì:´ïTvf–¥7s–‹8ÛïT‘¨–¥7‘–9ðT‘¨Q|¨–¥7À–¥7Ж:?ðT~Q3Ü–¥7}—üdðUs)˜¥7J¥7]&8¡ðT~Q~R2 ¯Ÿd8U PÁ)ô <óõñ¿ß¿)=3ñ¸À°À)™¥7>™¥7T™¥7(ž¥70žç9L˜¥7Y˜¥7l˜¥7t˜³9û˜¥7™¥7™Œ9™¥7 ™ô9n™¥7‹™¥7–™Ì:ÚñTv¤™¥7±™‹8òT‘¨¿™¥7Ï™9.òT‘¨Q|Û™¥7ó™¥7š:eòT|Q2 š¥71š¥7?š8æòUsT~盥7ï›:ž¥7ž&8çòT~Q~R1 öŸd8U  ÁPŽü2óUsT ¦ÅQ4R0¥7˜Ì:WóTv¢¥7­‹8|óT|Ç¥7ÒÌ:¡óTvÜ¥7ç‹8ÆóTvñ¥7‘~8õóTvQ0R2‘d8ôU ðÁ—”üCôUsT êÄQ5R0»”ürôUsT ÅQ4R0’•¥7¦•[:©ôT|Q —ÅR0ј¥7å˜[:àôT|Q žÅR0¾š¥7ΚX9 õTvQ2q ¥7| Ì:/õTv† ¥7 ‘ ‹8Tv)0=¬öÁÁ€‘)ƒõUv©‘¥7´‘Ì:¨õTv¾‘¥7É‘‹8ÍõT|ã‘¥7î‘Ì:òõTvø‘¥7’‹8öTv ’¥7’~8FöTvQ0R20’d8eöU €Â! ¥7, Ì:ŠöTv6 ¥7 A ‹8Tv .Ë’`=g¤IMÁ9Á<-ÂÂ=`=UöÂèÂ`˜ÃŒÃ x(ø’p>@±÷“(ÄĆ(\ÄXÄ (ø’ >š»(–Ä’Ä®(ÒÄÎÄÈ(Dš8É( ÅÅÖ(DÅBÅ \šŽ,T|Q1 ™“Ð>D7ù§mÅgÅ™c•0?"§ºÅ¶Å  (c•€?&|ø»(ôÅðÅ®(0Æ,ÆÈ(Ùœ/É(hÆfÆÖ(Æ‹Æ îœŽ,T|Q1x(°?'“(²Æ°Æ†(ØÆÖÆ4 (9š»(ýÆûÆ®(#Ç!ÇÈ(0É(HÇFÇÖ(mÇkÇ "Ž,T|Q1)mà?Ûþn¤ÇÇ ÑY“€@J ŸúßxÈrÈÑÀ“À@ßÅÈÁÈ"ìð@íÿÈûÈ  (Ñ“ A6ú»(IÉCÉ®(˜É”ÉÈ(y˜HÉ(ÔÉÎÉÖ( ÊÊ ˜˜Ž,TwQ‘¨4’/ݓݓ»/GÊCʯ/€Ê~Ê£/§Ê¥Ê î“Ù:T Qw }x“pAR aþ‹ÕÊËÊ x(x“B.yû“(HËDˆ(†Ë‚Ë (x“@Bš»(À˼Ë®(üËøËÈ(À”@É(6Ì2ÌÖ(oÌmÌ Ü”Ž,TwQ1 µž“pB3ÜüÃ–Ì’Ì  (ž“ÀB!ü»(ÐÌÌÌ®( ÍÍÈ(a›7É(FÍBÍÖ(Í}Í z›Ž,TwQ1x(˜›ðB“(¤Í¢Í†(ËÍÉÍ4 (˜›˜›Aš»(ðÍîÍ®(ÎÎÈ(¡›8É(=Î9ÎÖ(vÎtÎ ¶›Ž,TwQ1™” C1§ΙΙ”0C"§×ÎÓÎ  (” €C&¤ý»(Ï Ï®(MÏIÏÈ(Ùš7É(‡ÏƒÏÖ(ÀÏ¾Ï òšŽ,TwQ1x(›°C'“(åÏãφ( Ð Ð4 (››Qš»(0Ð.Ю(VÐTÐÈ(›HÉ(}ÐyÐÖ(¶Ð´Ð .›Ž,TwQ1F“¥7V“h:—þTvQ| $ &R0s“8æ¯þUs ”üUsT ¦ÅQ4R0 ™7”àCUa§ßÐÙЙ•@D"§,Ñ(Ñ  (•D&¦ÿ»(fÑbÑ®(¢ÑžÑÈ(qœ/É(ÚÑØÑÖ(ÿÑýÑ †œŽ,TvQ1x( œÀD'“($Ò"Ò†(JÒHÒ4 ( œ œ9š»(oÒmÒ®(•Ò“ÒÈ(©œ0É(ºÒ¸ÒÖ(ßÒÝÒ ºœŽ,TvQ1 ÑL”ðDU'±ßÓÓÑ.•0EßUÓQÓ"ì0Eí‘Ó‹Ó  (8•`EC»(íÓéÓ®('Ô#ÔÈ(?œ2É(_Ô]ÔÖ(„Ô‚Ô RœŽ,TvQ|4’/A•A•»/©Ô§Ô¯/ÎÔÌÔ£/õÔóÔ Q•Ù:UvT Q| x(L” EXb“(ÕÕ†([ÕWÕ (L”ÐEš»(•Õ‘Õ®(ÑÕÍÕÈ(|š4É( ÖÖÖ(.Ö,Ö ‘šŽ,TvQ1Û’¥7æ’B:‡Tv ¨ d8U ¼T¥7_Ì:ÉTvi¥7t‹8îT|Ž¥7™Ì:Tv£¥7®‹88Tv¸¥7Ê~8gTvQ0R2Ûd8†U ÈÂ&‘¥71‘ä:«Tv;’"ÉUsTv6Ÿ¥7AŸÌ:îTvKŸ¥7 VŸ‹8Tv  (XŽ F‘»(UÖQÖ®(“ÖÖÈ(@‘8É(ÍÖÉÖÖ(×× U‘Ž,TvQ/  (ÀŽ0F¶ »(,×(×®(h×d×È(@’HÉ(¤×ž×Ö(ï×í× [’Ž,TvQF{0/ÊŽ¹=$Y/$M/$A/L0/ÕŽÕŽºªY/ØØM/BØ@ØA/hØfØ ôŽñ:TFQ1R ÿŽü:ÁU?ŠŽ ;ÙUv¦Ž¥7±Žä:þT|Þ›38 d80U ÃQvX ¥7 j ~8T|Q0R2 ój?]"*enc\*sv“2svt ;6'zD©20'D4 µ20ô'M%€sp ž20æ'm Ib,i3€,spG ž2,'mJ Ib,'®Dj €(VF° Ø œ(!enc\žØŒØ!hvµ2wÙ_Ù he‘Õ8¢ÚzÚpKTM%ž €HÜ:ÜPLã i°€éÜÝÜ3°€|ÝlÝ@Þ,Þ5 ¨:k sv·“2ßÿÞ¥¨¥7¸¨e9IT | $ &3$è¥7 Ψ‹8T}5P§ø“ Fcopʦ‘àzX§¥7§¥7¥§Œ9­§¥7µ§ô9½§¥7ȧ¥7×§™9 T~àß§¥7¨;D U}T‘ØzQ8R P) ¨¥7¨¥7&¨¥7.¨³9;¨¥7C¨: ™´¤0MÙ  §*ß$ß™€¨M"§wßsß  (€¨àM&^ »(±ß­ß®(íßéßÈ(«3É('à#àÖ(_à]à «Ž,T~Q1x(8«N'“(„à‚à†(ªà¨à4 (8«8«=š»(ÏàÍà®(õàóàÈ(A«4É(ááÖ(TáRá U«Ž,T~Q1 Ñɤ@NÝd ß}áwáÑH¥€NßÊáÆá"ì°Níââ  (Z¥àNü »(LâHâ®(†â‚âÈ(Ú¨AÉ(Àâ¼âÖ(ùâ÷â ÷¨Ž,TwQ~4’/f¥f¥ »/ãã¯/CãAã£/jãhã s¥Ù:T Q~ }¥0Oã!‹˜ãŽã x(¥àO.= “( ää†(IäEä (¥Pš»(ƒää®(¿ä»äÈ(H¨8É(ùäõäÖ(1å/å ]¨Ž,T~Q1 µ&¥@P3žÃXåTå  (&¥Pä »(’åŽå®(ÎåÊåÈ(•ª3É(ææÖ(@æ>æ ­ªŽ,T~Q1x(ȪÀP“(eæcæ†(ŒæŠæ4 (ȪȪ=š»(±æ¯æ®(׿տÈ(Ѫ4É(þæúæÖ(6ç4ç 媎,T~Q1™€¥ðP1§]çY癀¥Q"§—ç“ç  (€¥ PQ&e»(ÑçÍç®( è èÈ(µ©3É(GèCèÖ(è}è Í©Ž,T~Q1x(è©€Q'“(¤è¢è†(ÊèÈè4 (è©è©=š»(ïèíè®(ééÈ(ñ©4É(<é8éÖ(téré ªŽ,T~Q1,£¥79£(:KTsQ0´¤;}U}T‘ØzQ8R @&á¤ä1£UT~Hù~ú¤8æ»UȦ¥7 Ö¦#;TsQ~¢¥7˜¢:Ts¼¢¥7É¢(:2TsQ0Ö¢¥7 á¢:Ts x(ã `F–“(›é—é†(ÝéÕé (ã Fš»(=ê9ê®({êuêÈ(à¥8É(ÈêÄêÖ(ëþê õ¥Ž,TvQ1 x(<¡ÀF¶“('ë#ë†(eëaë (<¡ðFš»(Ÿë›ë®(Ûë×ëÈ(¦8É(ììÖ(8ì6ì -¦Ž,TvQ1 ™¡ Gî <§aì[ì™p¤€G"§®ìªì  (p¤ÐG&»(èìäì®($í íÈ(%ª3É(^íZíÖ(–í”í =ªŽ,T}Q1x(XªH'“(»í¹í†(áíßí4 (XªXª=š»(îî®(,î*îÈ(aª4É(SîOîÖ(‹î‰î uªŽ,T}Q1 Ѱ¡0Hò†ß´î®îÑP¢pHßïýî"ìpHí;ï7ï  (b¢ H»(ƒïï®(½ï¹ïÈ( ¥@É(ùïóïÖ(DðBð ¹¥Ž,T~Q}4’/n¢n¢ »/iðgð¯/ŽðŒð£/µð³ð {¢Ù:T Q} }¢ðHùC‹ãðÙð x(¢ I._“(VñRñ†(”ññ (¢ÐIš»(ÎñÊñ®( òòÈ(У8É(Dò@òÖ(|òzò 壎,T}Q1 µ'¢J3ÀãòŸò  ('¢PJ»(ÝòÙò®(óóÈ(à¦0É(SóOóÖ(‹ó‰ó õ¦Ž,T}Q1x(§€J“(°ó®ó†(×óÕó4 (§§@š»(üóúó®("ô ôÈ(§7É(IôEôÖ(ôô *§Ž,T}Q1™h£°J1§¨ô¤ô™h£ÀJ"§âôÞô  (h£K&‡»(õõ®(XõTõÈ(P¦0É(’õŽõÖ(ÊõÈõ e¦Ž,T}Q1x(€¦@K'“(ïõíõ†(öö4 (€¦€¦@š»(:ö8ö®(`ö^öÈ(‰¦7É(‡öƒöÖ(¿ö½ö š¦Ž,T}Q1 ™£°Qü ɧèöâö™¤R"§5÷1÷  (¤`R&»(o÷k÷®(«÷§÷È(M©/É(ã÷á÷Ö(øø b©Ž,TvQ1x(|©R'“(-ø+ø†(SøQø4 (|©|©9š»(xøvø®(žøœøÈ(…©0É(ÃøÁøÖ(èøæø –©Ž,TvQ1 Ñ££ÀRü-ßù ùÑ9¤Sß^ùZù"ìSíšù”ù  (B¤0S«»(öùòù®(0ú,úÈ(©2É(húfúÖ(ú‹ú .©Ž,TvQs4’/K¤K¤»/²ú°ú¯/×úÕú£/þúüú [¤Ù:UvT Qs¡¥7(¡:>Tsˆ¡¥7•¡(:hTsQ0Å¡ä1ŽUT|Hù|ß¡8æ¦Uç¡¥7ô¡(:ÐTsQ0¸£¥7Æ£#;ûTsQ|ƒ«d8U ¼ˆ«38Õ88S?I¼(‰€P),œ"!a‰i&û"û!b‰)iqû_û¯)¥7hÊ)0;¥R2Þ)¥7*=;ÖT~QsR|*¥7A*=;T~QsR}U*¥7m*¥7I3w€@&HœÞ!a_wi6ü2ü!b_w*isüoü cmpy€®ü¬ü a{Õ8ÓüÑü b|Õ8ùü÷ü la~ ­!ýý lb ­YýWý|&J;?Ò\.*enc\\*he\Õ8,svb “2lenc­strd f?–9}*enc9\*av9¯2i;€len; €,svpHž2?@,™*enc,\?¡"µ*enc"\?|Ñ*enc\?3ü*enc\,'Ü  €(½Ÿ€†œx(!encŸ\ˆý|ý!strŸf'þ þ!lenŸ+­>ÿ8ÿ%D1Ÿ4€“ÿ‡ÿ end¡ fÐ.ê' ch§4¢n@/‰$@E(È­‘° uchÉа Z,ƒ„à/͉!,u,ZTk,©¥bZ,Ì„@0Å,áßu,k,/-Ó„¥7 î„§:TsQ‘ R‘˜X@<$  (Ä‚0æ"»(XR®(§£È(†BÉ(áÝÖ( *†Ž,T‘   (σÀ0Þ"»(D>®(“È(–…HÉ(ÏÉÖ( ³…Ž,T‘  g/Ûƒð0ßÝ"„/A?x/om „V;T1Q ÿR ‚Å  (\…01Y#»(™“®(èäÈ(î‡BÉ("Ö(\Z ˆŽ,T‘  3,e…`1"Ì#N,…D,ÜÎ|3,@ˆ@ˆ@ÖN,€ ~ D,© £   (æ… 1øH$»(ü ø ®(6 2 È(w‡>É(p l Ö(ª ¨  ‡Ž,T‘ …d8m$U °ÀTs –ˆd8U Á  (É€Ð1­%»(Ó Í ®("  È(`ƒ>É(\ X Ö(– ”  xƒŽ,T‘   (2³%»(¿ ¹ ®(  È(%„>É(H D Ö(‚ €  =„Ž,T‘   (e02Äý%»(« ¥ ®(ú ö È(†:É(4 0 Ö(n l  ¤†Ž,T‘   (¥`2Ãy&»(— ‘ ®(æ â È(Ɇ:É( Ö(ZX Þ†Ž,T‘   (å2Âõ&»(ƒ}®(ÒÎÈ(‡:É( Ö(FD ‡Ž,T‘   (%‚À2Áq'»(oi®(¾ºÈ(=‡:É(øôÖ(20 R‡Ž,T‘  (e‚ð2À»([U®(ª¦È(U†:É(äàÖ( j†Ž,T‘   (A€.£j(»(IA®(·«È(…7É(@<Ö(xv &…Ž,T~Q|…ˆ38?]˜ (*enc˜\*ch˜q?º Œå(*encŒ\*lenŒ­,cur­buf‘ fJÃj€)a j“2IªDU€€%¹œ¹)!svU“2¥› svtW ;6Ы)Flen[­‘` pv\ fVT&¥7 )&~8TsQwR29&38ILAÀ(†œ†*!sAÞ…y@©C‘`@,D€‘\ negE€)†*S*UóUT‘`Q‘\R0X:1)†*x*UóU#R0X:F)38}×8ø&/œ,isøÞƒcO©ø%,åËO,ø1}bûïOø;€Œ€OøG€'jQú/!j¨û€ÔÆæ+ dig å1m€+™ €_W neg€Ç½©'†*£+T}Q|R1(†*Æ+T}Q|R0 D(†*T}Q|R1 &'a;a ô-$@ K< ì­3,>svì“26RDìfKbÖšâZ,>sÖšâ>chÖ#KÅŽ,>sÅšâ>lenÅ'­6E(Å4‘S~È(´fð$œ²-isv´“2F:O‰;´­ÞÎOŽ;´+­˜c²-ð$`¶ F-Î-üúÃ-#=`Ù- q%d8U ºc²-û$ · Ž-Î-b\Ã-µ³= Ù-ÚØ0%¥7€D%À9TóUK´$¨­æ->l1¨­>l2¨­dsumª ­eZ)˜ .>sv˜ “2,k—ŸºK?3“26.69Þdsv“2eµ4‚\.6‚Ækº4„jJa „E‡.*s„‡.*off„$• ð1JtopÃ.a… oÝ2*ao$‡.*bo1‡.eæ¶õ.6… ¶Ý2>sv¶“2,drc¹(2KmF£“2/>sv£“2Kd20/6…  Ý2UŸ@€g/>__s@l>__n@­6i@élUå"€’/>__s"l6i"élU&;/È/65;/6¯;€6¿";­U&/þ/65&/6O&i6¿"&­U­/406516Oo6¿"­V .B6œ0.ý*.QO¢B¥7 ²B¿7TsQ1V4âÐBrœü0$Fâ$FâSâ~t_â$  kâ”  wâß Ý ƒâ !!GâVå(PCFœ/1$÷($÷(C)V , CPœä1&,u!i!$,$,c.ºCàï Ö1·."ý!¬.V"L"Ÿ.Ï"Ë"hÓCÖ8»1QóT æCÖ8TvQsºC¥7VÞ ˆ?œ¥7ì ##$ù x(Áˆ 3^Â2“(p#l#†(°#ª# (Áˆ`3š»(ý#ù#®(9$5$È(ÈŠ8É(s$o$Ö(«$©$ ÝŠŽ,TvQ1) 3[3Ô$Î$g‘P%%)‰ü 3Usž‰¥7±‰~893TvQwR2®Š¥7 ¹Šä:Tv x()‰à3n 4“(F%B%†(„%€% ()‰4š»(¾%º%®(ú%ö%È(á‰?É(4&0&Ö(l&j& ö‰Ž,TvQ1 x(J‰@4q½4“(“&&†(Ñ&Í& (J‰p4š»( ''®(G'C'È(dŠ<É('}'Ö(¹'·' yŠŽ,TvQ1 µ Š 4r)6Ãà'Ü'  ( Šð4d5»(((®(V(R(È(p‹0É((Œ(Ö(È(Æ( …‹Ž,TvQ1x( ‹ 5“(í(ë(†())4 ( ‹ ‹:š»(9)7)®(_)])È(©‹1É(†)‚)Ö(¾)¼) º‹Ž,TvQ1 µ@ŠP5p)7Ãå)á)  (@Š 5Å6»(**®([*W*È(‹0É(•*‘*Ö(Í*Ë* ‹Ž,TvQ1x(0‹Ð5“(ò*ð*†(++4 (0‹0‹@š»(>+<+®(d+b+È(9‹7É(‹+‡+Ö(Ã+Á+ J‹Ž,TvQ1Ô‰ü—7Usß‹38ääE`Ó Ó F­# # FÑF{îîF ..F®;;F/ PÕÕF—::F2 ¿ ¿ F­—(—(Fn EEEE{?{?Fbî'î'FF 88F ggFôŒŒF÷ ®>®>F› ƒEƒEF W G‘‘Fh P|!|!Fô‘8‘8Ft --F ggF4#4#F øøFïÀEÀEF“,,FÀ!À!F ==Fè ô-ô-Fz Q8Q8F¾ ¦¦F1 ¡C¡CFŒ 00FâD5D5FÑ¢+¢+FÄ ˜˜F PPF! F 7 7 Fè °°FP o)o)FU 11F”F)F)F¬FFFB Fã7ã7F¦œ.œ.FÓÜ@Ü@FçÆFÆFFÛPfEfEFÁ¤¤F”&”&FEPd!d!F¶û)û)F误FúÛÛFýPFÎssF6W­£G¤)¤)F¦ {/{/FÌW&ƒ&G8181FÍW$EEG¯ ¯ HqüEüEIH; æ=æ=Fñ©%©%F ((F PrrI@ WG=G‚powpowJŒŠ‚‘B‰‚1 : ; 9 I8 1·B : ;9 I8 ‰‚1 : ;9 I841·B ‰‚1  I ( 1R¸BUX YW  4: ;9 I·BI : ; 9 I : ;9 I4: ;9 I·B U4: ;9 I?< : ; 9 I8 1.?<n: ;9 : ; 9 II4: ;9 I&I1R¸BUX YW 4: ; 9 I?<: ;9 I : ;9 I8 !I/  : ; 9 !: ;9 I·B" 1U#7I$1%: ;9 I·B& : ;9 '4: ;9 I(.: ;9 '@—B) 1U*: ;9 I+.?: ;9 'I<, - : ; 9 I 8 .'I/ : ;9 0 1 : ; 9 2<3 : ;9 41R¸BX YW 5 6: ; 9 I7 : ;9 I 8 8$ > 9: ;9 I: : ;9 ; : ; 9 : ; 9 I?.: ;9 ' @4: ;9 IA'B: ; 9 IC : ; 9 D1UX YW E : ;9 IF4: ;9 IG 1HŠ‚1‘BI.: ;9 'I@—BJ.: ;9 'I K.: ; 9 'I L1R¸BX YW M1UX YW N1X YW O: ; 9 I·BP.?<n: ; 9 Q : ; 9 I8 R!I/S4: ; 9 IT 1U.?: ; 9 'I 4V.1@—BW.?<n: ; X : ; 9 IY : ; 9 Z> I: ; 9 [ : ; 9 I 8\ : ; 9 ] : ;9 ^ : ; 9 I8_ : ;9 ` Ua: ;9 Ib1R¸BUX Y W c1R¸BUX Y W d4: ; 9 Ie.: ; 9 ' f : ;9 g41h‰‚•B1i: ; 9 I·Bj4: ; 9 I·Bk4: ; 9 Ilm% n$ > o p&q : ;9 I8r : ;9 s5It: ; 9 u : ;9 v> I: ;9 w.?: ;9 '@—Bx‰‚•B1y4: ;9 I z : ;9 {1X YW |1R¸BX Y W }.: ; 9 '@—B~.: ; 9 'I@—B41€‰‚•B1.?<n‚.?<n: ; 9 Iv;û /usr/lib64/perl5/CORE/usr/include/bits/usr/include/sys/usr/include/bits/types/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/usr/include/netinetXS.cinline.hXS.xsstring_fortified.hstdio2.htypes.htypes.htime_t.hstddef.h__sigset_t.hstruct_timespec.hthread-shared-types.hpthreadtypes.hstdint-uintn.hstdint.h__locale_t.hlocale_t.hsetjmp.hsetjmp.h__sigval_t.hsiginfo_t.hsignal.hunistd.hgetopt_core.hsockaddr.hsocket.hin.hstat.htime.htime.herrno.hnetdb.hnetdb.hdirent.hdirent.hperl.hmath.hop.hcop.hintrpvar.hsv.hgv.hmg.hav.hhv.hcv.hpad.hhandy.hstruct_FILE.hFILE.hstdio.hsys_errlist.hperlio.hiperlsys.hperly.hregexp.hutf8.hutil.hpwd.hgrp.hcrypt.hshadow.hreentr.hparser.hopcode.hperlvars.hmg_vtable.hoverload.hpthread.hproto.hstdlib.hstring.hmathcalls.h `$£K  =s !<Xèo‚# ‘ ïo<J ‚. ‘<X €Œô~f ­ ­ ­‰¬‚‚pÈr z.q  fu<[ “ fžY Ig = Ž tJZKXp.tt €%©Y;ó rX>Zƒ'J æ   g = WZX YvÖ–J’ºKz _;=I KIMJ 9= >JK-Y[fô|zJB .žL-ÈJ:L;K <V>  L‡ <J‚-»XXL » K ...‚9Éft sžX K¬YJ U<J‡…$<vXH. f&J<I$<<iJJ uò‚Y P.K¬XJ/ Et < <Ÿ IX <žzJK $]<ÔHL$<t1‚JóCuž‘ƒ5Êgx‚ OÊó¹äK !f‚J J ‚Jó = s¬Ö 2  7tX®.K  ­XXÓjX# ¦ Új.J ‚< ¦X JJ<K ¥b  X  .Ÿ*‚8[5& ¢\ 5u‚‚…Ð~ft!-K - KJfXÀ À~.Àº À~XÁ<JJ.JnX¬J<N¡tJ< XXº*oº Ù~äºX ©Ösä ð4„K  ­XX±jX# È ¸j.J ‚< ÈX JJ<K ¤c  X  .Ÿ*‚8[5& ¢È…. º}f KffXÏ ±}.Ϻ ±}XÐ<‚fvX f<f tä" ¸}京*¾ æÖtä ;ºK  XXœnX# Ý £n. ÝJ£n< ‚< ÝXtJuJ“ Bfy P<z> X  .Ÿ*‚8[5& ¢È…W ò}f KtòfX— é}.—º é}X˜<‚fvž!f<f!täò ð}òº¬*† æÖtä ð=#K  XXömX# ƒ ým.J ‚< ƒX JJ<K¢eXòó X‚Ç  .Ÿ*‚8[5& ¢ Õ}X°)JJÕ}J°t X. ,XLȬ‚nò*(  ( yÖuä @@Ÿ~K  XXÔoX# ¥ Ûo.J ‚< ¥X tJŸ•tL#ä&>J#&>J#ž&>X#ž&>XK GM= F>j>r<t<  °zX >  w.<Z  <½ ‡oJ! J]E 2=yfø~ò ½€Ö2þzX9‚Jþz 9‚  žÖþz2‚Jþz< Î ' >9/ yðX„ Žy‚¬õ  òÀ‚< ‘f¸Jâ< ™ò J LJ æ >  ’< Lt “ãv š  ævJ š < æv<‚ › t  ’KI»<„  ƒ‡ K J<òM©MYI=¢J¥ .J$ t¬ ? >   žÖ›(/9<,JJJ“(/9<,JJJŽ(/9<,JJJ‘(/9<,JJJ(/9<,JJJŽ$2.!J.JJ6žºÇ K =%¼òJ‚ »t¦JÚ<ž¬º\.«x‚ Šºv  t‚ÌX °xäòÑX=žž<>ºKX¼ 5žŸ%"M%M"Y%K ¡- t!8 ¬…Ðx  iJ ŸÞx‚Jgt<gt<gfhf˜!¿Ðxw »>J ¤Úx‚Jgt<gf gè ‘Ï °xžàtXSKtX¶xX  £ÈÈÌ "LXºXTtX XtX]tXXجXÐx »= X  .Ÿ*‚8[5& ¢ \*‚…¡   J <€}JJ©ptYK‘ X O) J<’ X  .Ÿ*‚8[5& ¢ \*‚…¡ Ý| £X J <Ý|J i  f $J'ff ˜J ß|X ¡Xß|t g <. L  J ­X<  -fX« Õ|.«º Õ|X¬<‚fË|žZ•pXf îº<*‰ò|äJ•ptYKYÁ{ J=nžp   J=7. i‚mt  L‚¹ ­“¶{Ö=XpÈ   =f¹mÖ<J7.µtX=‘<<Ç ´tt‘K‘ Èåäf tò mJJKXtL kXJ=J…åäKv,>ÁtX=‘<<» ÀttK‘Dž.D<X >  ׬tYYÒ t>¬æXÛ}"‚K $ £ ž‚t4 t-ñ;Öà}rä  <)X¬ª‚,®*Ç;  u  KX„— . J < < 1 ’‚ò ï t k<JØzž qòK I =;)rò  <)Jìƒ J <ƒätœ<J¬7©~ ¡‚Öu q¬Y I =s)XÈ q¬Y I =s)JÖÀÇt¹tJÇ.µtXÊ  /;´tXÈ*à   H v‘#!ò L×|Ö¼ t É  L :v<l<X¸w¬Xˆ rÖ<J¬ £~ƒòìtJÈ–} átŸ<JžÒw¬Èù Ó|ä q¬g I =s)J¬ q¬ƒ I =s)J¬Ãy¬X Æ fºt’w+=Èåäf tfK-Jƒôq? tX?ò .?<X>¥“ –uYYè Ȭ< fX¨ Ó~XºX Xvl< XÖ Ö`fJó-=XxXºÏ t/ Xf-º¯‚ ? GM!X¬¡X"fh : JYx cY ®g„ >úy=Jižm Ö  X=7. i·J¶z<  ZÿÊ‘XJJÈ0¾tt.*À †È0¨X×ò Z‚*X. žðyJ=fp.   X=7. imt  Zˆ J ® »¤sX=‘<<Þ G? XI‘Éò==u)LrÊ#½.IÆsJ fž´ ž\-tÜytòrJ W =;)¬õJšzrò W =s)X¬¶XXX#w(–s¬˜t /só .XX·iX#  ¾i.J ‚< ÂX tJŸ•fL< ÷zX³n.ÖJ ôz‚±n ÌX ´nžäÌ KX‡‚ùz<=X.=< Y=- =“J íz.J“ ízX”<òf... êzJº.–nXä Àrç} Ksó .XXÍkX# ¬ Ôk. ¬JÔk< ‚< ¬XtJuJ“ Bfy P<z> X  .Ÿ*‚8[5& ¢Ì8…if<Xë{‚ J ”) X K.„J”     “%J"Xtƒ.­l!ò!tL+t“¼nÂJ ¾n<  < XoÈaJX< ‚=J‚¾[JX<&‚=J‚ºÖ‚ ..J¹fJ‚X<16:XJ:J=JE<INJQ‚X<_K‚X<15:XJ:J=JE<INJQ‚X<_L‚X<14:XJ:J=JE<INJQ‚X<_M‚X<13:XJ:J=JE<INJQ‚X<_N‚X<12:XJ:J=JE<INJQ‚X<_˜˜=ž¨È<Ù$'‚=;K$s'‚=$J5‚'tu$J;‚Bt'<g$J;‚Bt'<g$JB‚'fiX¡'JuÉYIJK(<*Ä Ê˰È<ÑÃ|B½/- Ä|tB½X:e Ä|J#¾$XXXœ'JuÉYIJK(<ÞJ  #‚ZJ3ø}fè+< I‘+<<#XX‚ ~Xºv  tÿž ~f<ÿgºtA'Ju<ƒƒ(tãt ‹XôÔ} É=IJYX f ›'ŽK¬YY(JWJK(<唂žJë-$J)‚'J0'“ÈKŸY(JWJK(<'JKÉYI<K(<'JKÉYI<K(<'JKÉYI<K(<'JKÉYI<K(<'JKÉYI<K(<'J<KÉYIJK(<Ê~ ‘>HJYt<gX¬'°KŸY(JWJK(<Î~ uò ?GJYt<gt<gXhX¤QX  ˆ€²~ÖÎ<ôº~rž  t<Å‚’Kå "Öª~r<ž  t<ÕŸ§~r<ž  t<ן‚ tº0/Jôª~r< 'KWuYIJ=(<.)ß©ï~<ž  tº)Õ«ï~<ž  tÖ<§~r< 'KWuYIJ=(<òÓ(ª~'KWuYIJ=(<º'KWuYIJ=(<J‹ú~r’KW=YIJ=(<ä'KWuYIJ=(<J‹ú~r’KW=YIJ=(<àŒf=;ó¼¼ !’|r<ž  ìJ ”|<<<ìu|r<ž  t<©A$0 Á ¿ ‚-× s . ˆ =ì{ž ”I<2K%;=%- = 1  mXJ..J<WJ.X5<WE<>J=>-U< <J.<J<WJ.X5<WE<>J=>-U< <J.<J<WJ.X5<WE<>J=>-U< <.5fJXW<>XW<><U< .<5X>  ¼  ‚ fX  žÈ.ÿ{žž€/<‚qÖÖ 6Ö{ž © Œy÷t†yJ t÷t+¥Ç~X×>׬ ’ ’  ¡ ttò ­J,X—|'KWuYIJ=(<º'KWuYIJ=(<ü J>  Í< /  “tf ­J ,J©(†}'KWuYIJ=(<º×„  ’ „ ¡ttò ­J ,r¬X«|'KWufYIJ=(<È'KufY(JIJ=(<ÔÒ}ò Ö>½Ø~r<ž  t<§’^ž LžJ ’ ®Df < ‘ ° YZê~r<ž  t<•<„ Khï~<ž  tÖó ü~< „<ü~J†Jø~<<‡¦|  Ï  9bžqæ~<ž  t‚ºMtž1'J¹ÈÀ~r  tJX øX.Kž<ežý|'J=WK»ƒI=(<æ~  tºJž'f¹œ ü~J†<ø~<‡¦|  òÏ  æ~<ž  ‚ž>û1( ’’H>È ‚ KI9õGK V? %I =X?<f ¡î|r<ž  t< í|r<ž  t< ‘?º È?ž ò‚ X»ë|r<ž  t< “ê|r<ž  t< ”é|r<ž  t< –\%Jä0,<»à|r<ž  ‚<<*š^­ž ¼×|r<ž  t< ¨äX´|'KKžYK(JWJ=(<@²3( ’’H>È ‚ ‚‚9õG?U@òK½Jt ¡I KZc ?ž¶|'JuXƒIJ=(<'KWKƒI<=(<€)ý|'KWK»KI<=(<J”ñ~r’KKI<=(<ˆùp.Iu…ûptv …X ,s ußX ¡w.<ßtZ0>,“wX.-~Ÿ>=\D\%~Ÿ~ $ &3$p"Ÿ!~ $ &3$p"Ÿ!,P(ù]D~]š¸]â%]ñC_Dâ_ýP®U®×óUŸ²T²$]$GóTŸGq]qÈóTŸÈ×]¸Þ\â^˜º^ÎÓ^Óò~ŸòÒVG˜VºÈVÈ×~ŸÓ×~ $ &3$p"Ÿ×Û~ $ &3$p"ŸÓ×|~ $ &3$p8ŸÒ-V˜ºV@\qÈ\½Ã p}"##ÃÇ p}"##â- v ÿÿÿÿŸ˜º v ÿÿÿÿŸ G1Ÿ½ÎP0NUN…óUŸ0RTRõ_õvóTŸv…_X}V}‚vxŸ§=V=BPB…Vqv^vž~Ÿž \§v\v…~Ÿv}~ $ &3$p"Ÿ}~ $ &3$p"ŸŒPˆ\]§æ]]B…]Q¦_§B_\fP]qPðUÍ óUŸðT³_³¾ óTŸ¾ Í _c]c5 \5 L |ŸS … \… ‹ P‹ ¾ \¾ Í ].3\3_|Ÿ_ V‹ ¾ V¾ Í |Ÿ3=| $ &3$p"Ÿ=E| $ &3$p"Ÿ3=}| $ &3$p8ŸAP ^S Í ^3j¾ Ì Q J VS ‹ V.PÐ î Uî g óUŸÐ ò Tò [ \[ X óTŸX g \ø 1 V1 6 vxŸ[  V  P g V % ^% U RU ³ ‘¸³  ~Ÿ[ k ~Ÿk ô ~Ÿ ' ‘¸' X ~ŸX f Rf g ‘¸4  ][ ¥ ]Ô ô ] g ]8  _[ Ì _Ì Ï  ŸÔ ô _ g _4 < P< U |X f |  R[ r Rr – ‘¸Ô ô ‘¸¿ Ô Pý  Pp ˆ Uˆ ,óUŸp Œ TŒ Í ^Í Î óTŸÎ ,^’ ¥ V¥ ° vŸ° ´ vxŸ½ Ç VÇ Î pÎ V P,V¨ ­ ]­ Ñ }ŸÑ ƒ \Î ð \\,}Ÿ­ ´ } $ &3$p"Ÿ´ ¸ } $ &3$p"Ÿ­ ´ v} $ &3$p8Ÿƒ É \ð \— ¨ P0NUNóUŸ0RTRõ_õ€óTŸ€_X²V²·vxŸÜmVmrPrVqv^vž~ŸžÕ\Ü€\€~Ÿv}~ $ &3$p"Ÿ}~ $ &3$p"ŸŒPˆ×]Ü][Û_Ü)_Pr_öT)‘¸hÑwÑÜ‘°$wPrw]qPàþUþ.óUŸàT¿^¿‘óTŸ‘®^®óTŸ.^LVLh\hŠ|Ÿ‘í\íöPö\.V#\#H|ŸH€]‘©].|Ÿ#*| $ &3$p"Ÿ*.| $ &3$p"Ÿ#*v| $ &3$p8Ÿš-]®Ê]Ïö]¿ÂPÂK^®^ÒàP PUˆóUŸTˆóTŸ03S37q78sŸ0PÐG%HU%H¢ISîI JS J6JóUŸ6J4LSFLÇLSÌLMSÐG%HT%HlIVlIîIóTŸîI JT JJVJLóTŸL4LV4LFLóTŸFL‘LV‘LMóTŸÐGHQHëI]ëIîIóQŸîI\K]\KLóQŸLÌL]ÌLþLóQŸþLM]lIzIPzI¢IV¢I»IP»IÞISÞIîIPJŠJPŠJKV4LFLS‘LÇLVÇLËLPËLÌLSþLMV0HWHTaJlJTƒLLTK KP KLVÌLþLVõKLSÌLÖLSõKLTÌLÐLTI_I‘à~ŸFLƒL‘à~Ÿ&IJI‘à~QI_I‘à~FLXL‘à~©I»IP»IÄIS4LFLS§J½J‘à~ÄJÉJpÉJÒJ‘à~‘L¤L‘à~òJKVþLMVòJKPþLMPõJKQKKvþLMQ°/0U0œ0]œ0«0U«0¯0]¯0Ö0óUŸÖ01U1Ó1]Ó1‰2U‰2¶2]¶2Ð2UÐ2Ÿ3]Ÿ3Ï3UÏ3ö3]ö324U24S4]S4´4U´4˜8]˜8³8U³8D:]D:É;óUŸÉ;=]=`=óUŸ`=¬?]¬?Ã?UÃ?*@]*@Z@UZ@Ý@]Ý@ô@Uô@A]A>AU>AGA]GA—AU—AøA]øABUB]C]]C€CU€C¼C]¼CÏCUÏCóC]óCDóUŸDDD]DDdDóUŸdD­D]­DÄDóUŸÄDËDUËDØD]ØDßDUßDìD]ìD EóUŸ EóF]óFøFóUŸøFÃG]00U0j0]~5…8]!9F9]É;=]Ã?*@]~@Ý@]—A°A](BB]íB1C]‰C©C] EóF]øFÃG]ñ;<P<=^EîF^îFóFPøF—G^—G›GP›GÃG^)0,0P,0j0\~5…8\!9F9\É;3<\Ã?*@\~@Ý@\—A°A\(BB\íB1C\‰C©C\ EvE\)0,0P,0j0\~5…8\!9F9\É;3<\Ã?*@\~@Ý@\—A°A\(BB\íB1C\‰C©C\ EvE\Q0_0}~5ˆ5}!9:9}íBüB}w0’0\B(B\w0’0PB"BP00Q0’0|B"BQy6Œ6PŒ6‘6w‘6·6‘·6Ð6wF8Z8PZ8…8‘˜—A°Aw‰CCP´5Ò5_Ò5÷5P¾7Ô7P(B?B_´5þ5Tþ56Ÿ¾7Ô7TÔ7…8Ÿ(B?BT?BBŸ66P66_-6Ð6_–7¾7_~@Ý@_—A°A_‰C©C_ EE_66}-696}–7²7}~@@}F6q6]®@Ý@]J6N6}e6i6q¼6Ð6_—A°A_¼6Ð6P—AªAPÀ6Ì6QÌ6Ð6—AªAQC©C_ EE_C©CP EEP”C CQ C¤C¤C©CqŸ EEQÈ7…8_?BB_È7Ô7pŸÐ78]?BmB]Ô7Ø7}÷7û7r8>8]mBB]88}2868r×6â6}ò67}q7Š7}Ã?Ó?}7J7]ú?*@]77r>7B7}J<Ã<VÃ<È<vxŸ ==VÎFÔFVÔFóF\øFGVGGPG1GVjGxGV==P==\ÎFÔF\jGxG\{<=\øF,G\,G1GPŸE®EP®EsF\EG\G\¡GÃG\KEOEPOEßE_ßEÎFw1GjGwxGÃGw´E&FV&F0FvŸ0FYFVYF]Fp{F¯FVEGjGVxGxGVxG‚GvxŸ‚G¾GV¾GÃGPsFwFPwFÎF\1GEG\\GjG\xG~G\åEÎF_1GWG_WG\GP\GjG_xGÃG_˜F¢F^Ö01U1Ó1]F9D:]D:É;óUŸ>«>]Z@~@]Ý@ô@Uô@A]°AÌA]äAøA]BÀB]1C]C]©C¼C]DDD]DDdDóUŸdDvD]­DÄDóUŸìD EóUŸÖ0A10ŸA1X1PX1Ó1VF9À;V>«>VZ@~@VÝ@A0Ÿ°A¾AP¾AÌAVäAøAVBÀBV1C]C0Ÿ©C¼C0ŸDvDV­DÄDVìD EVÖ010Ÿ1Î1^F9¶90Ÿ¶9ß9Pß9Ä;^>«>0ŸZ@~@0ŸÝ@A0Ÿ°AÌA0ŸäAïAPïAøA^B¶B^¶BºBT1C]C0Ÿ©C¼C0ŸD2D0Ÿ2DvD^­DÄD^ìD E^û01U161]1C]C]11}*1.1qj1y1}F9Y9}>Œ>}Z@r@}•1§1Vù@ù@0ŸB­BV·C¼C0Ÿ•1§1PB§BP˜1¤1Q¤1§1vB§BQ®1Î1^AA0Ÿ­B¶B^¶BºBT®1Ó1P­BºBP»1Ç1QÇ1Ë1~Ë1Ó1qŸ­BºBQy9¤9]D2D]}99}˜9œ9qÛ9h;\2DvD\­DÄD\å:;0Ÿ; ;Ÿ ;-;_-;J;Ÿñ9÷:w”#Ÿ2DvDw”#Ÿ­DÄDw”#Ÿ::P:o:_2D9DP9DDD_dDvD_&=-=^/:>:P>:É;‘ DDdD‘ dDkDPkDvD‘ ­DÄD‘ ìD E‘ D:É:]É:Ú:}ŸÚ:á:Pá:;‘˜; ; 3$}"#Ÿ ;%; 3$}"#Ÿ%;J; 3$}"#Ÿ‰;À;\À;É;VDD_D]_DdDP­DÄD]ìD E\u:¨:_­D¿D_¿DÄDPŽ; ;VüD EVŽ; ;PüDEP‘;;Q; ;vüDEQ§;»;^ìDüD^§;»;PìDöDP«;·;Q·;»;~ìDöDQ=&=^=&=^Ó1‰2U‰2¶2]›4´4U´4Ú4]†=>]«>¬?]*@Z@UGA—AUøABU]CpCU¼CÏCUÏCóC]vD­D]Ó1420Ÿ†2œ21Ÿ›4Ú40Ÿ†=>0Ÿ«>¬?0Ÿ*@Z@0ŸGA‡A0Ÿ‡A—A1ŸøAB0Ÿ¼CóC0ŸvD­D0ŸÓ1à1Và1ä1Pä1¶2V›4Ú4V†=>V«>¬?V*@Z@VGA—AVøABV]CpCV¼CóCVvD­DV²4Ú4Q†=´=Q´=>\«>³>Q³>?\?Ÿ?|v”-)ÿŸÏCÓC|v”-)ÿŸvD­D\g?ƒ?PvD|DP“D™DPÎ2Ð2UÐ2Ÿ3]Ú4~5]³8!9]`=†=]ÌAäA]ÀBíB]é2ì2Pì2Ÿ3\Ú4~5\³8!9\`=†=\ÌAäA\ÀBíB\é2ì2Pì2Ÿ3\Ú4~5\³8!9\`=†=\ÌAäA\ÀBíB\33},303q[3j3Pj3Ÿ3_Ú4~5_³8!9_ÌAäA_y33]Ú4é4]]5~5]³8ê8]€33}Ú4é4}]5r5}³8Ã8}565]ê8!9]5 5q*5.5}êUê!\!N!UN!P"\P"W"óUŸW"C#\C#Y$UY$¨$\¨$Â$UÂ$ú$\ú$-%U-%2%\2%h%UÐê0Ÿê!_„!+"_W"ä$_ä$é$Pé$-%_2%h%_Ðê0Ÿê$"‘øþ~W"Ì"‘øþ~>#C#1ŸC#o#‘øþ~²#ÿ#1Ÿÿ# $‘øþ~ $Y$1ŸY$¨$‘øþ~¨$Â$1ŸÂ$é$‘øþ~ú$ %‘øþ~%-%‘øþ~2%2%‘øþ~2%h%1ŸÐúVú! ^! 9 V9 = ^= ƒ Vƒ Ä vŸÄ ð ^ð ô vŸô !V !!~Ÿ!„!V„!„!^„!—!vŸ—!œ!Vœ!œ!^œ!¯!vŸ¯!´!V´!´!^´!Ç!vŸÇ!Ì!VÌ!Ì!^Ì!ß!vŸß!ä!Vä!ä!^ä!÷!vŸ÷!ü!Vü!ü!^ü!"vŸ""V""^"+"VW"‹"^‹"§"V§"§"^§"#V##vp"Ÿ#"#vp"#Ÿ"#,#vp"Ÿ,#/#p1$v"Ÿ/#C#vp"ŸC#c#Vc#g#vŸg#s#u#Ÿs#x#Vx#|#u#Ÿ|#²#u²#“$V“$“$^“$Â$VÂ$é$vŸé$-%V2%h%Vêú]ú S  sŸ @ SÄ 8!S8!>!sŸ>!V!S„!„!S„!“!sŸ“!œ!Sœ!«!sŸ«!´!S´!Ã!sŸÃ!Ì!SÌ!Û!sŸÛ!ä!Sä!ó!sŸó!ü!Sü! "sŸ "+"SW"x"Sx"ƒ"sŸƒ"‹"S§"#S##sp"Ÿ#"#sp"#Ÿ"#2#sp"ŸC#¼#S¼#ÿ#s|Ÿÿ#&$S&$Y$s}ŸY$Â$Sé$-%S2%H%SH%h%s~Ÿú! P9 I PÄ Ï PÏ ô vô !v~„!‹!vœ!£!v´!»!vÌ!Ó!vä!ë!vü!"v"$"vW"‹"P§"¸"P¸"Ò"vY$x$v‚$‰$P‰$Ž$v“$ž$Pž$£$vx#²#P %%P%%q€¸Ÿ!E!PE!N!^C#w#Pw#ÿ#^ÿ#"$P"$Y$^¨$Â$Pú$%P%%^%#%P#%-%^2%A%PA%h%^²#ÿ#^ $"$P"$Y$^¨$Â$P2%A%PA%h%^²#¼#S¼#ÿ#s|Ÿ $$S$&$sŸ&$8$s~Ÿ¨$Â$S2%>%S>%H%sŸH%h%S²#ú#^ ²#²#S²#¼#sŸ¼#Î#s}Ÿ¯"ì"‘€ÿ~Y$x$‘€ÿ~¯"ì"^Y$x$^¯"ì"VY$x$VÌ"ì"‘€ÿ~Ì"ì"^Ì"ì"V@ Ä SV!„!S‹"§"SÂ$é$SP ` T‹"š"T` r S` r ]` j t"Ÿj q U0‡d‡Ud‡2ˆV2ˆÚˆóUŸÚˆ‰V‰C‰óUŸC‰Y‰VY‰º‰óUŸ0‡h‡Th‡‡S‡ûˆóTŸûˆ‰S‰º‰óTŸV‡d‡Ud‡q‡Vûˆ‰V'ˆ2ˆW‰+‰WC‰µ‰W‰+‰WC‰µ‰W‰‰1ŸC‰|‰1Ÿ‰‰WC‰|‰WY‰]‰T]‰|‰V^‰w‰P|‰µ‰:Ÿ|‰µ‰W|‰µ‰1Ÿ|‰µ‰W‰‘‰T‘‰µ‰V’‰«‰Pªˆ°ˆ‘ð~+‰<‰T€g³gU³g,hS,hOhóUŸOhíjSíj{kóUŸ{k&lS&l´lóUŸ´lBmSBmÐmóUŸÐmôsSôstóUŸtywSyw”wóUŸ”wÑzSÑzÿzóUŸÿz¼{S¼{ê{óUŸê{ |S |:|óUŸ:|H|S€g³gT³g,h\,hOhóTŸOhÝh\Ýh˜ióTŸ˜iÚi\ÚiõióTŸõi5j\5jEjTEjk\k{kóTŸ{kôk\ôk´lóTŸ´lYm\YmÐmóTŸÐmkVíkwlV´lÙlVm“mVÐmàmVknÞoVp?pVEp pVqŸrVtÄuVÄuäu^äuvVPvywVyxyVaytyV›yØyVÑzæzV{–{V¼{Ñ{V |!|V:|H|V¥jíjSíj{kóUŸík&lS&l´lóUŸ´lÙlSmBmSBmÐmóUŸÐmàmSknôsSôstóUŸtywS~w”wóUŸ”wÑzSÑzÿzóUŸÿz–{S¼{ê{óUŸ |:|óUŸ:|H|S¶jójQíkñkQñklpÿŸmmQÐmÚmQknznQp ppÿŸJq[qP[q|sw‰tštPštäuwñvôvPôvùvwùvüvPüvwwÔwßwwáxØywzÑzwÿz–{wôk=l\p!p\"qzs\atŽu\Pvyv\ñvw\Ôwßw\áxØy\zÑz\ÿzO{\wr{rP{rãs^”wßw^y›y^ØyÑz^ÿzO{^cqèq^èq!r~pŸrãs_”wßw_áxy^yyPyy^y›y_ØyÑz_ÿzO{_šqr_áxy_yyP’r©r(Ÿay›y(Ÿ’r©rSay›yS’rŸr1Ÿay›y1Ÿ’rŸrSay›yStyxyPxy€yVyyyP©rÀr"Ÿ'yay"Ÿ©rÀrS'yayS©r¶r1Ÿ'yay1Ÿ©r¶rS'yayS:y>yP>yFyV?yUyPs4s"ŸzLz"Ÿs4sSzLzSs*s1ŸzLz1Ÿs*sSzLzS%z)zP)z1zV*z@zP4sKs)Ÿ—zÑz)Ÿ4sKsS—zÑzS4sAs1Ÿ—zÑz1Ÿ4sAsS—zÑzSªz®zP®z¶zV¯zÅzPKsbs[Ÿ]z—z[ŸKsbsS]z—zSKsXs1Ÿ]z—z1ŸKsXsS]z—zSpztzPtz|zVuz‹zPgs|s0Ÿ|s s|~"1Ÿ s¦s|~"2Ÿ”wÔw|~"1Ÿ‹s¦s,Ÿ”wÔw,Ÿ‹s¦sS”wÔwS‹s˜s1Ÿ”wÔw1Ÿ‹s˜sS”wÔwS¤w¯wR¯wÔww°wËwPÌsãs]ŸØyz]ŸÌsãsSØyzSÌsÙs1ŸØyz1ŸÌsÙsSØyzSëyïyPïy÷yVðyzP¢t&u^&u_u~xŸ¯uÄu\ÄuÌu|xŸÌuäu\›yºy^ºy¿yP¿yØy^O{–{\Ùtäu_›yÓy_ÓyØyPO{–{_ mHmPknÞoVoZoSwywS>oKo1Ÿw8w1Ÿ>oKoSw8wSwwRw8www4wP8wyw Ÿ8wywS8wyw1Ÿ8wywSEwUwRUwywwVwpwP»o×oSyvñvS»o×oSyvñvS»oÈo1Ÿyv°v1Ÿ»oÈoSyv°vS†v‘vR‘v°vw’v¬vP°vñv:Ÿ°vñvS°vñv1Ÿ°vñvS½vÍvRÍvñvwÎvèvP×oèoS p¾pSxyxS pqSßwyxS p©p1Ÿx@x1Ÿ p©pSx@xSx-xV&x_¥Ç_í„U…_¥ €_»„U…_¥±1Ÿí„…1Ÿ¥±_í„…_ú„ …V……P…U…:Ÿ…U…_…U…1Ÿ…U…_)…=…V6…L…PCH_Î €_»„í„_Ù €_»„í„_Ùëq3Ÿ»„„q3ŸÂ„Í„à”3ŸâëS»„í„Sâë_»„í„_ƄՄV΄ä„PëûSëû Ÿëúð U óUŸð)T)J]JjóTŸj}T}¹]¹ìóTŸì] T ]àôUô(óUŸàT(óTŸ!Päåuäåt Q'V R°[ñ[Uñ[ê\Vê\ó\óUŸó\®`V®`´`U´`6dV°[ñ[Tñ[é\Só\]S]/]sŸ/]Y]SY]o]sŸo]™]S™]¯]sŸ¯]Ù]SÙ]ï]sŸï]^S^/^sŸ/^6dS°[Ñ[QÑ[ì\\ó\6d\°[ñ[Rñ[î\]î\ó\óRŸó\®`]®`Å`RÅ`6d]á[ò\_ò\ó\óTóQ"Ÿó\6d_ \&\P:\d\Pd\u\s‘\œ\Pœ\­\só\]P]]s4]@]P@]Q]st]€]P€]‘]s´]À]PÀ]Ñ]sô]^P^^s4^M^P__sÅ_Ü_s`,`P,`K`s``r`sõa bs/bCbsib}bs£b·bsÝbñbsM^p^R>_{_R``R[```R—`©`P©`­`Rç`aR6aRaRRa~a‘¨~aaR³aÉaRÉaõa‘¨ccRŽc¤cR¤cÐc‘¨%d5dR#`[`‘˜``—`‘˜#`[`Q``r`Qr`—`‘ #`[`S``—`Sl`—`‘˜l`—`‘ l`—`Sd^p^Q³aÉaQÉaõa|Ÿd^p^V³aõaVÀaÉaTÉaõa‘ ÊaìaPo_{_Q6aRaQRa~a| Ÿo_{_V6a~aVCaNaUNaRaTRa~a‘ SauaP{_¶_ ‚ÅŸ{_µ_vü`aQŽc¤cQ¤cÐc| Ÿü`aVŽcÐcV›c¤cT¤cÐc‘ ¥cÇcPa-aRUcŽcRÐc dRaavaav#Ÿa-aQUc^cv^cncv#ŸncŽcQÐcðcvàcdRàcàcvàcðcv#ŸddQ†aaQc.cQ†a³aVcUcV"c.cR.cUc‘ /cLcPi\u\Q__Q_>_|Ÿi\u\V_>_V __R_>_‘ _5_P¡\­\QÅ_Ü_QÜ_`|Ÿ¡\­\VÅ_`VÐ_Ü_RÜ_`‘ Ý_ú_P]]Q/bCbQCbib|Ÿ]]V/bibV7bCbRCbib‘ Db`bPE]Q]Qib}bQ}b£b|ŸE]Q]Vib£bVqb}bR}b£b‘ ~bšbP…]‘]Q£b·bQ·bÝb|Ÿ…]‘]V£bÝbV«b·bR·bÝb‘ ¸bÔbPÅ]Ñ]QÝbñbQñbc|ŸÅ]Ñ]VÝbcVåbñbRñbc‘ òbcP^^Qõa bQ b/b|Ÿ^^Võa/bVýa bR b/b‘  b&bPá[ \\ \®`óQŸ®`ç`\ç`6dóQŸá[ñ[Uñ[ê\Vê\ó\óUŸó\®`V®`´`U´`6dV»`¾`Q¾`ç`^Æ`Þ`P qUq‰S‰¤óUŸ¤ÔSÔÙóUŸ@qR¤µRqP` U §óUŸ¼¼U¼ÄuŸÄÐUÐáóU#Ÿ’§0Ÿ¼¼0Ÿ¼á1Ÿ0sUs©U'HUOOUOpuŸprRtœR®¼UÆÆUÆÔuŸÔãUö&U&.uŸ.DRDLuŸL_R0©T©î]îñóTŸñ']'DTDO]OtTt®]®¸T¸Æ]ÆßTßö]ö_T0QQQì\ìñóQŸñö\öQ_\0[R[ð^ðñóRŸñö^ö&R&_^04X4œXœ'óX1Ÿ'HXH®óX1Ÿ®¼X¼ÆóX1ŸÆãXãöóX1Ÿö&X&_óX1Ÿ0a0ŸaÔSñSP'öSö&0Ÿ&_S0a0ŸavVvzvŸzêVñöVö&0Ÿ&_Va†P‰˜P'HPdrpPŸ†“pPŸ“œT®¼PÆãP.DpPŸL_pPŸOt0ŸtQƒœQ&_0ŸOr0ŸtœU&.0Ÿ.D1ŸD_0ŸËUËßVßãTãäóUŸä U óUŸ™T™›óTŸ›©T©ÛSÛãQäïSïót1%t"ŸóSÏQÏäóQŸäQóQŸ›Q™T™›óTŸ›¡t1%Ÿ¡¤S¤©t1%Ÿ›©T¤©S0=U=eSefóUŸRfP‚µPµ½q”ÿ ð "½Çu”ÿ ð "Î×P×Úq”ÿ ð "¹R¹½q”ÿ ð "½Çu#”ÿ ð "ÄXÄÇu#”ÿ ð "¬ÎYs½Q½ÇuÇÎq|ŸÎâQ@YTYnVnrQrsóTŸsVóTŸZmSmrTsŽSZnVnrQrsóTŸsVóTŸZrPs…P@dkdUkd$eS$e(eóUŸ(egSadud"Ÿaff"ŸadkdUkdudSaffSadkd1Ÿaff1ŸadkdUaffSxf|fT|ffV}f”fPŠdÖdV(e`eV9fafV»dÈdTÉdàd"Ÿte¶e"ŸÉdàdSte¶eSÉdÖd1Ÿte¶e1ŸÉdÖdSte¶eS‘e•eT•e¶eV–e­ePêde:Ÿ÷e9f:ŸêdeS÷e9fSêd÷d1Ÿ÷e9f1Ÿêd÷dS÷e9fSffTf9fVf0fP¶eÜeS gzgS¶eÍe1Ÿ g@g1Ÿ¶eÍeS g@gS g$gT$g@gV%gjƒ››››¤©E‰¨ÔQ[h††¤0MP °½Ðè&_P &_GGIXvFFnÜ.X_cD X ¾ ý ý ÿ    H J Q L ` X — — ™ ¨ Ë Ñ Õ Å Ð ]]_cfq˜ž¢¥¨Íà€··¹Èæíf­­¯¾Ü@¸ÈÊÎÑÖªýýÿ8>BEH5H]]_cfq˜ž¢¥¨˜°v½½¿Îì PÈ×Ùâ º  AHL‚˜šsuz°®¼ÒàâîZ_cln†ŠÐÕåððy È $"`"Â$é$-%2%h%ÐÕåð ! 1 = È >!ˆ!$"`""§"Â$é$-%2%h%ÐÕåð§">#`$‚$é$ú$ÐÕåð¯"ì"##`$x$x$‚$ÐÕåðÀ"ì"ð >!C#`$¨$Â$ú$-%2%h%²#¼#Ä#$ $&$.$`$¨$µ$2%H%P%h%²#¼#Ä#$= y S!ˆ!"§"I y "§"` ` d g j r —%—%™%¨%Æ%¨&ª&½&à&'‹& &' '& &' '¨&ª&½&Õ&W'W'Y'h'†'ò()ž)K(d(@)P)P(d(@)P)o(ˆ(P)`)t(ˆ(P)`)“(¬(`)p)˜(¬(`)p)·(Ð(p)€)¼(Ð(p)€)Û(ò(€))à(ò(€))Ý)Ý)ß)ã)æ)ñ)**"*%*(*}++,ü*+ø+,++ø+,],],_,c,f,q,•,—,¢,¥,¨,è./š///P/T/ //[/p//Œ/`/p//Œ/000Q0Q0p0p0 0€566J6J6e6e6±6±6¼6¼6×6×677>7>7Ô7Ô7÷7÷7882828 8(9P9Ð;=È?0@€@à@ A°ABBíB1C‰C‰C‰CCC©C E˜F˜FóFøFÃG000"0&0)0>0Q0Q0_0€5ˆ5(9P9íBC>0D0øBCw0’0B0B|0’0B0Bˆ5˜5¬5°5´566J6J6e6e6±6±6¼6¼6×6;7>7Ž7Ô7Ô7÷7÷7882828ˆ8€@à@ A°A0BB‰C‰C‰CCC©C EEˆ5˜5÷566J6J6e6e6±6±6¼6¼6×6 7È7€@à@ A°A‰C‰C‰CCC©C EEˆ5˜5660696 7È7€@°@’5˜5‹@°@F6J6J6e6e6q6°@à@¼6¼6¼6×6 A°ACCC©C EEÈ7Ô7Ô7÷7÷7882828ˆ8?BBÐ7Ô7Ô7÷7÷78?BmB8882828>8mBB×6â6ø67x7Ž7È?@777;7>7J7@0@><=ÎFóFøF1GjGxGf<¦<G1GE˜F˜FÎF1GjGxGÃG¨E˜F˜FÎF1GjGxGÃGÐEFEG\Gà011*1*1j1j111•1•1§1§1Ø1P9}9}9˜9˜9‰;‰;Ž;Ž; ; ;§;§;Ð;=`=>«>`@€@à@ò@ò@ù@ù@ù@ù@A°AÐAèABBÀB1C]C©C©C©C·CóCvD­DÄDìD Eð0ø0û011*1*1611C]Cð0ø0ÿ011*1*1611C]Cò0ø09C]CX1j1j1y1P9Y9>«>`@€@X1]1>«>•1•1•1§1ù@ù@B­B·C·C•1§1B­B®1Ë1AA­B³B¶BÀB·1Ë1­B³B¶BÀBf9u9y9}9}9˜9˜9¤9D2Df9u9}9˜9˜9¤9D2Df9k9D2DÛ9‰;‰;Ž;Ž; ; ;§;§;Ð;=`=óCD2DvD­DÄDìD E`:Ÿ:­DÄDŽ;Ž;Ž; ;üD E§;§;§;»;ìDüD»;Ð;==Ø1À2 4à4=>«>°?0@`@PA ABB]CpC¼CóCvD­D 4à4=>«>°?ÏCóCvD­DO??vD­DÀ2Ç2Î233,3,3€3€3 3à455*5*5€5¸8(9`==ÐAèAÀBíBÀ2Ç2Î2â2æ2é2þ233,3,383'5*5v5€5ÀBíBþ23ËBíB@3P3P3€3€3 3à455'5*5v5¸8(9ÐAèA@3P3y3€3€33à4é4`5v5¸8ð8@3P3€33à4é4`5v5¸8ð8J3P3È8ð8555'5*565ð8(9%H>HƒL˜LI&I&INIQI_IPLƒLI&I&INIQI_IPLƒL I&IdLƒLŽJ§J§JÄJÄJÒJ˜LÇLŽJ”J¨LÇLòJòJòJKþLMK LÌLþLõKLÌLÖLKMKMMM\MM…M…M…M‰MÎMÑMN(NGN‘M—MŸMÎMÑMúMüMNNN(NGN“M—MŸM¤M®M½MNNŸN£N¦N±NØNÞNâNåNèN'RPRúVEP´PPR€RHThTÜTøT‚P‚P‰P‘PöPRàRëS T0ThTÀTøTUU`V¡VÞVìVúV QRàR0S4SXNXîXðXôXùXüX YˆY®X±X´XÃXPY`Y÷Y÷YùYZ-Z3Z3Z6Z:ZA[P[[Î[Ñ[á[ñ[°`ç`ñ[\\.\7\Ð\ø\°`ç` d%d6dñ[ö[ý[\&\*\8^_>_Å_`°`ç`õac d%d6dñ[ö[ý[\#`[```Ž`”`—`ñ[ö[ý[\``Ž`”`—`W^p^³aõab_{_6a~a{_{_„_‰_“_¶_ü`aŽcÐca-aUcŽcÐc d†a”acUc`\u\_>_˜\­\Å_`ø\]/bib8]Q]ib£bx]‘]£bÝb¸]Ñ]Ýbcø]^õa/bNdQdadudhf fNdQdadkdhf f†dÉd0e`e@fhfÉdàdteÀeÉdÖdteÀeêde÷e@fêd÷d÷e@fÀeÀeÀeàeg@g@gzgÀeÍeg@gÍeàe@gzgàeàeàe÷e fÐfÐfgàeíe fÐfíe÷eÐfg¿g,hPh€h€kíkãgôg÷gýg€k¸kãgðg€k¸kh,h¸kíkh"h¸kíkÐh“i(nknÓhÝh(nknÚiøi¥j€kíkàlmàmkn>o>o»o»o»o»o p pqq°v°v8w8wyw~w@x@x¨x¨x–{¼{ê{ |H|Úiøiík¸lp`p"qtatäuPvyv~wßwáxÑzÿz–{ |:|Sqãs”wßwáx›yØyÑzÿzO{qÆqyy’r©ray›y’rŸray›y©rÀr'yay©r¶r'yays4szLzs*szLz4sKs—zÑz4sAs—zÑzKsbs]z—zKsXs]z—zgsÀs”wÔw‹s¦s”wÔw‹s˜s”wÔwÌsãsØyzÌsÙsØyzãst’täu~w”w›yØyO{–{Àtu¿yØymÐm¼{ê{kn>o>o»o»o»o»op`p p pqq"qtatäuPvyv°v°v8w8wywßw@x@x¨x¨xáx:|H|˜n¯näuv˜n¥näuv¸nÂnqqq"qyx¨x¨xáxqqq"qyx¨x¨xáxqqyx¨xq"q¨xáxÝn>o>o»o»o»o»o×o`p ptatyv°v°v8w8wywùnÿn`o otat`o otat`o otatcofojonoqo}otato>o>o`o»o»o»o»o»o×o`p pyv°v°v8w8wywo/o`p po%o`p p>o>o>o`ow8w8wyw>oKow8wKo`o8wyw»o»o»o»o»o×oyv°v°vw»oÈoyv°vÈo×o°vw×oèo p p p´px@x@xyx p p p´px@x@xyx p©px@x©p´p@xyxìoìoÄpqßwxÎpqßwxÒpÕpØpápßwxìopvPvìoõovPvøi jàlm`jjjàm(nƒ|¤|€¸ƒ|“|€¸Ü|ð|¸ðÜ|å|¸ð=}I}€€€0€Å…ø…ø…5†€€€0€Å…ø…ø…5†€€Å…ø…€0€ø…5†P}X}â}(~@€ð}(~@€ô}÷}û}ÿ}~~@€ }Ç}Ç}â}0p¨ð ‚ ‚`‚€‚°‚°‚ð‚ }·}p¨ }­}p¨Ç}Ç}Ç}â}€‚°‚°‚ð‚Ç}Ô}€‚°‚Ô}â}°‚ð‚0ð ‚ ‚`‚ð ‚0 ‚`‚(~0€Æ€Æ€ @`‚€‚ð‚ „ „»„U…ˆ…ˆ…Å…5†h†h†Ø†Ø†‡Š~0€Æ€Æ€ @`‚€‚ð‚ „ „»„U…ˆ…ˆ…Å…5†h†h†Ø†Ø†‡T€`€ „ „ „@„¥†Ø†Ø†‡ „ „ „@„¥†Ø†Ø†‡ „-„¥†Ø†-„@„؆‡i€m€è€ z„»„è€ z„»„è€ z„»„ì€ï€ó€÷€ú€z„»„£€Æ€Æ€á€ @èƒ „U…ˆ…ˆ…Å…5†h†h†¥†£€º€èƒ „£€°€èƒ „ƀƀƀá€5†h†h†¥†Æ€Ó€5†h†Ó€á€h†¥† @U…ˆ…ˆ…Å… -U…ˆ…-@ˆ…Å…0>¨¨¨¼í„……U…¨¨¨¼í„……U…¨±í„…±¼…U…CP΀»„í„Ù€»„í„Üßâ뻄í„'ˆ2ˆ‰‰‰0‰H‰|‰|‰µ‰‰‰‰0‰H‰|‰|‰µ‰‰‰H‰|‰‰0‰|‰µ‰ªˆØˆ0‰0‰0‰4‰4‰H‰0‰0‰0‰4‰4‰H‰û‰û‰ý‰ Š/Š5Š5Š5Š9Š|ŠжШŠ÷ŠAŠGŠOŠ|ŠŠ¨ŠªŠ®Š³Š¶ŠØŠ÷ŠCŠGŠOŠTŠ^ŠmŠ7‹7‹9‹G‹m‹s‹s‹v‹z‹ŒŒÝŒËËÍÐòòô÷ŽŽŽŽ@Ž@ŽBŽEŽgŽgŽiŽlŽŽŽŽŽŽ“ŽµŽµŽ·ŽºŽÜŽÜŽÞŽáŽ**,/QQSVxxz}ŸŸ¡¤ÆÆÈËííïò;;=@bbdg‰‰‹Ž°°²µ××ÙÜþþ‘‘%‘%‘'‘*‘L‘L‘N‘Q‘s‘s‘u‘x‘š‘š‘œ‘Ÿ‘Á‘Á‘ÑƑè‘è‘ê‘í‘’’’’1”8”@”\•^•h•{•••¯”±”¸”єӔޔå”ì”єӔ씕••• •6•8•F•\•^•a•8`˜Ø ‚8¨˜ Ð ð Ð  # ø¹º@ϨÐ`Û0ë 8ë @ë Hë Hí ð Hñ` ñÿ `$ õ¹!  #3  #I  #`  #{  #‘  #«  #¾  #Õ `$ö è$ `$ˆ'@ñ 28ñ =0ñ H(ñ R è$n q%ˆ ð$• q%² 9&Í €%¹Û 9&ö ˆ& @&H ˆ&: ¿(W &/g ¿(€ F)— À(†¡ F)¼ |*Õ P),á |* K,) €*Ë? K,d -.‡ P,Ý -.¾ Ç0Ý 0.—ï Ç0 Œ2I Ð0¼h Œ2’ ï4º 2_Õ ï4ú Õ6 ð4å3 Õ6[ '9 à6Gš '9¾ …;à 09Uõ …; å== ;US å=| 7@£ ð=G½ 7@Ü ŽBù @@N  ŽB! ÆB7 B6@ ÆBb BC‚ ÐBr• ð ¥ BCÎ –Cõ PCF –C: ðCc  CP ðC™ ÈI± ðCؼ ÈIâ ŠK  ÐIº  ŠK@  Na  K}u  N£  …PÏ  Nuî  …P'  T^  Pyˆ  T¡  #l¸  T  ñ Ê  #lå  nqV  0l>þ  nq%  »rJ  pqKb  »rˆ  n{¬  Àr®à  n{ì  *~  p{º-  *~O  €o  0~Ü‚  €œ  –ˆ´  €†¿  –ˆà  ß‹ÿ   ˆ?  ß‹*  ¨ A  à‹ÈK  ° Ø U  ¨ n  ˆ«…  ˆ«   ® «Š¹  ®à  k¯ ®K k¯? L±_ p¯Ür L± õ¹ªñÿµ  #· Ð#Ê $àð ï8ë  P$"0ë ªñÿA\ÛñÿO ø¹U@ë bHë k@Ï~ð ŠHí   Ц¸Ôæ÷  5H_t€ð –¡µÑáòý ,9K_v‡“ P±¥¡µ ÄÑåù4GWdvƒ¤ÁÍHñ âõ *;KWð cr“¨ºÌÚîÿ&=HXiu„‘¢°À Úç÷"!3KWr.annobin_XS.c.annobin_XS.c_end.annobin_XS.c.hot.annobin_XS.c_end.hot.annobin_XS.c.unlikely.annobin_XS.c_end.unlikely.annobin_XS.c.startup.annobin_XS.c_end.startup.annobin_XS.c.exit.annobin_XS.c_end.exit.annobin_XS_JSON__XS_CLONE.start.annobin_XS_JSON__XS_CLONE.endXS_JSON__XS_CLONEjson_stashbool_stashbool_falsebool_true.annobin_json_sv_grow.start.annobin_json_sv_grow.endjson_sv_grow.annobin_ref_bool_type.start.annobin_ref_bool_type.endref_bool_type.annobin_he_cmp_fast.start.annobin_he_cmp_fast.endhe_cmp_fast.annobin_json_atof_scan1.start.annobin_json_atof_scan1.endjson_atof_scan1.annobin_json_atof.start.annobin_json_atof.endjson_atof.annobin_he_cmp_slow.start.annobin_he_cmp_slow.endhe_cmp_slow.annobin_XS_JSON__XS_incr_text.start.annobin_XS_JSON__XS_incr_text.endXS_JSON__XS_incr_text.annobin_XS_JSON__XS_get_ascii.start.annobin_XS_JSON__XS_get_ascii.endXS_JSON__XS_get_ascii.annobin_XS_JSON__XS_ascii.start.annobin_XS_JSON__XS_ascii.endXS_JSON__XS_ascii.annobin_XS_JSON__XS_get_boolean_values.start.annobin_XS_JSON__XS_get_boolean_values.endXS_JSON__XS_get_boolean_values.annobin_XS_JSON__XS_boolean_values.start.annobin_XS_JSON__XS_boolean_values.endXS_JSON__XS_boolean_values.annobin_XS_JSON__XS_incr_skip.start.annobin_XS_JSON__XS_incr_skip.endXS_JSON__XS_incr_skip.annobin_XS_JSON__XS_get_max_size.start.annobin_XS_JSON__XS_get_max_size.endXS_JSON__XS_get_max_size.annobin_XS_JSON__XS_max_size.start.annobin_XS_JSON__XS_max_size.endXS_JSON__XS_max_size.annobin_XS_JSON__XS_max_depth.start.annobin_XS_JSON__XS_max_depth.endXS_JSON__XS_max_depth.annobin_XS_JSON__XS_get_max_depth.start.annobin_XS_JSON__XS_get_max_depth.endXS_JSON__XS_get_max_depth.annobin_XS_JSON__XS_new.start.annobin_XS_JSON__XS_new.endXS_JSON__XS_new.annobin_get_bool.start.annobin_get_bool.endget_bool.annobin_decode_4hex.isra.1.start.annobin_decode_4hex.isra.1.enddecode_4hex.isra.1decode_hexdigit.annobin_json_nonref.isra.5.part.6.start.annobin_json_nonref.isra.5.part.6.endjson_nonref.isra.5.part.6.annobin_ptr_to_index.isra.9.part.10.start.annobin_ptr_to_index.isra.9.part.10.endptr_to_index.isra.9.part.10.annobin_decode_str.start.annobin_decode_str.enddecode_str.annobin_XS_JSON__XS_incr_reset.start.annobin_XS_JSON__XS_incr_reset.endXS_JSON__XS_incr_reset.annobin_XS_JSON__XS_DESTROY.start.annobin_XS_JSON__XS_DESTROY.endXS_JSON__XS_DESTROY.annobin_XS_JSON__XS_filter_json_object.start.annobin_XS_JSON__XS_filter_json_object.endXS_JSON__XS_filter_json_object.annobin_XS_JSON__XS_filter_json_single_key_object.start.annobin_XS_JSON__XS_filter_json_single_key_object.endXS_JSON__XS_filter_json_single_key_object.annobin_decode_sv.start.annobin_decode_sv.enddecode_svsv_json.annobin_decode_json.start.annobin_decode_json.end.annobin_XS_JSON__XS_decode_json.start.annobin_XS_JSON__XS_decode_json.endXS_JSON__XS_decode_json.annobin_XS_JSON__XS_incr_parse.start.annobin_XS_JSON__XS_incr_parse.endXS_JSON__XS_incr_parse.annobin_XS_JSON__XS_decode_prefix.start.annobin_XS_JSON__XS_decode_prefix.endXS_JSON__XS_decode_prefix.annobin_XS_JSON__XS_decode.start.annobin_XS_JSON__XS_decode.endXS_JSON__XS_decode.annobin_encode_str.start.annobin_encode_str.endencode_str.annobin_encode_hk.isra.11.start.annobin_encode_hk.isra.11.endencode_hk.isra.11.annobin_encode_sv.start.annobin_encode_sv.endencode_svencode_hv.annobin_encode_hv.start.annobin_encode_hv.end.annobin_encode_json.start.annobin_encode_json.end.annobin_XS_JSON__XS_encode_json.start.annobin_XS_JSON__XS_encode_json.endXS_JSON__XS_encode_json.annobin_XS_JSON__XS_encode.start.annobin_XS_JSON__XS_encode.endXS_JSON__XS_encode.annobin_boot_JSON__XS.start.annobin_boot_JSON__XS.endcrtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.7294__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entry__FRAME_END___fini__dso_handle_DYNAMIC__GNU_EH_FRAME_HDR__TMC_END___GLOBAL_OFFSET_TABLE__initPerl_sv_2iv_flags__snprintf_chk@@GLIBC_2.3.4Perl_hv_iterkeysvPerl_newRV_noincPerl_sv_2uv_flagsPerl_stack_grow_ITM_deregisterTMCloneTableqsort@@GLIBC_2.2.5Perl_sv_utf8_downgradePerl_sv_derived_fromPerl_av_lenPerl_pop_scope_edataPerl_newSVstrlen@@GLIBC_2.2.5__stack_chk_fail@@GLIBC_2.4Perl_sv_upgradePerl_sv_setiv_mgPL_thr_keyPerl_newSVnvPerl_sv_blessmemset@@GLIBC_2.2.5Perl_sv_chopPerl_sv_2pv_flagsPerl_xs_boot_epilogPerl_hv_iternext_flagsPerl_grok_numberPerl_get_cvboot_JSON__XSmemcmp@@GLIBC_2.2.5__gmon_start__Perl_newSVsvPerl_croak_xs_usagePerl_newSVpvn_flagsPerl_savetmpsPerl_sv_growPerl_sv_utf8_upgrade_flags_growmemcpy@@GLIBC_2.14Perl_gv_stashpvPerl_av_pushPerl_sv_cmp_flagsPerl_newSVpvpthread_getspecific@@GLIBC_2.2.5Perl_gv_fetchmethod_autoloadPerl_get_svPerl_croak_nocontextPerl_newXS_deffilePerl_pv_uni_displayPerl_gv_stashsvPerl_hv_iterinitPerl_newXS_flagsPerl_sv_2mortalPerl_mg_get__bss_startPerl_hv_commonPerl_newSVuvPerl_safesysreallocmemmove@@GLIBC_2.2.5Perl_xs_handshakegcvt@@GLIBC_2.2.5Perl_av_fetchPerl_utf8n_to_uvuniPerl_utf8_lengthpowPerl_free_tmpsPerl_markstack_growPerl_hv_common_key_lenPerl_newRVPerl_newSV_typePerl_block_gimmePL_hexdigitPerl_save_vptrPerl_call_svPerl_sv_setuv_mgPerl_sv_free2Perl_push_scope_ITM_registerTMCloneTablePerl_newSVivPerl_hv_itervalPerl_newSVpvn__cxa_finalize@@GLIBC_2.2.5Perl_sv_newmortalPerl_apply_attrs_stringPL_utf8skip__sprintf_chk@@GLIBC_2.3.4Perl_hv_placeholders_get.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.note.gnu.property.init_array.fini_array.data.rel.ro.dynamic.got.bss.comment.gnu.build.attributes.debug_aranges.debug_info.debug_abbrev.debug_line.debug_str.debug_loc.debug_ranges88$.öÿÿo``48 ˜˜@@Ø Ø ©Hÿÿÿo‚‚°Uþÿÿo88pd¨¨ðnB˜˜8xÐÐsððà~ÐÐЇ # #U–ø¹ø¹ “ºº0›@Ï@Ïd©¨Ð¨Ð¸ ³`Û`Û Æ0ë 0ëÒ8ë 8ëÞ@ë @ëëHë HëôHí Hí¸ùð ðH þ0ð,Hñ`,ðÈô0,$ o;8“DÏFbLMvR0¯ÂûG]ª æ+h6p]”ø"¾ ø­‹ƒÃvperl5/auto/Path/Class/.packlist000064400000000537152462470720012335 0ustar00/usr/local/share/man/man3/Path::Class.3pm /usr/local/share/man/man3/Path::Class::Dir.3pm /usr/local/share/man/man3/Path::Class::Entity.3pm /usr/local/share/man/man3/Path::Class::File.3pm /usr/local/share/perl5/Path/Class.pm /usr/local/share/perl5/Path/Class/Dir.pm /usr/local/share/perl5/Path/Class/Entity.pm /usr/local/share/perl5/Path/Class/File.pm perl5/auto/HTTP/Tiny/.packlist000064400000000115152462470720012066 0ustar00/usr/local/share/man/man3/HTTP::Tiny.3pm /usr/local/share/perl5/HTTP/Tiny.pm perl5/auto/Types/Serialiser/.packlist000064400000000303152462470720013571 0ustar00/usr/local/share/man/man3/Types::Serialiser.3pm /usr/local/share/man/man3/Types::Serialiser::Error.3pm /usr/local/share/perl5/Types/Serialiser.pm /usr/local/share/perl5/Types/Serialiser/Error.pm perl5/auto/Log/LogLite/.packlist000064400000000252152462470720012446 0ustar00/usr/local/share/man/man3/Log::LogLite.3pm /usr/local/share/man/man3/Log::NullLogLite.3pm /usr/local/share/perl5/Log/LogLite.pm /usr/local/share/perl5/Log/NullLogLite.pm perl5/auto/Expect/.packlist000064400000000106152462470720011614 0ustar00/usr/local/share/man/man3/Expect.3pm /usr/local/share/perl5/Expect.pm perl5/auto/Net/HTTP/.packlist000064400000000506152462470720011675 0ustar00/usr/local/share/man/man3/Net::HTTP.3pm /usr/local/share/man/man3/Net::HTTP::Methods.3pm /usr/local/share/man/man3/Net::HTTP::NB.3pm /usr/local/share/man/man3/Net::HTTPS.3pm /usr/local/share/perl5/Net/HTTP.pm /usr/local/share/perl5/Net/HTTP/Methods.pm /usr/local/share/perl5/Net/HTTP/NB.pm /usr/local/share/perl5/Net/HTTPS.pm perl5/auto/Devel/CheckLib/.packlist000064400000000250152462470720013067 0ustar00/usr/local/bin/use-devel-checklib /usr/local/share/man/man1/use-devel-checklib.1 /usr/local/share/man/man3/Devel::CheckLib.3pm /usr/local/share/perl5/Devel/CheckLib.pm perl5/auto/YAML/Syck/.packlist000064400000000436152462470720012045 0ustar00/usr/local/lib64/perl5/JSON/Syck.pm /usr/local/lib64/perl5/YAML/Dumper/Syck.pm /usr/local/lib64/perl5/YAML/Loader/Syck.pm /usr/local/lib64/perl5/YAML/Syck.pm /usr/local/lib64/perl5/auto/YAML/Syck/Syck.so /usr/local/share/man/man3/JSON::Syck.3pm /usr/local/share/man/man3/YAML::Syck.3pm perl5/auto/YAML/Syck/Syck.so000055500002323460152462470720011516 0ustar00ELF>Àl@ð @8 @%$ÐÐ P$P$"P$"ì  (&(&"(&"888$$°°° Såtd°°° PåtdPñPñPñddQåtdRåtdP$P$"P$"° ° GNUÿs³4~+òíHÔ Ü´R—ƒp P–Š1x4BD@5ð0L DEDàX àˆAÂ@ žØ!£A(@7ȃp<™ ¡0¨ Dˆ‰’ ð1@§„@Ó$ãÄ!RDD ŒP  õ] …àpqrstuwyzƒ„…†‡ˆ‰Š‹ŒŽ’”—˜›œžŸ¢¤¥¦§©«­®¯²´¶¹º¼¾¿ÀÂÃÅÇÈÊÍÏÓÖרÙÚÛÜáâãäåéëìíïñô÷ùûüýþÿ   %Ü4 o‹ìq¦Î¥Õש¡x*c8‡’}ysrθ`ãÏ‹‘R SjÐN„w8¿ÊAà"Rµæ…§ä~6" :æ9/^Ì2¹ya÷)ˆâ¶‰¥¹»‚CŸ†#ùëµ gµÝ4S†…8 SÛH@%H¦¤C '2àIBL„V_¼{?üãà¯94×ÛÊuªìa^ÏXÕ1 ëUHrÞ¼¡¶”žäqÑÅóù­""”¬oÄRŽÕU±¶ËÕz”´ùsòåÂÚ«A)zÅUThÞ‰M 0Á“¿@hôwbÅ-pøóuáß>Äh}*cU>=E6"Jÿɹ‹Dȸ肸“vé¿`¨T¯³ä·´ $iûg ɶpP3û…($û´Y0n(µ¯í¹êêACùP˜Š}”¬6›’ØqX›}ÞÁaŠJmùhK¯Æì{rj?õ³û^b~†*%rQ šÇ4DÃù½zún!Ã¥¦Kc”¬Ɇ™®­»C ·n,{”Ps•ß½ënªGǵù©ÃÁ gïwø'vpÞWý] ¯øŠ\Dæ¾QxqÍk¢047Õ=Y0м·Û™Ü¡PdI»ã’|X#…°ð´.e›ö#©fJmqøAÕ=yÉNîïÁ(cœå_G “/²¨ðhCEÕ쎢ƒÓf®g‚KMÞ;,¾n¶0047KÂo!N4Ìh ÉÁÛT]¿"¹T†=›lðI·4½Dµ/47ÏÀI%j}±T S!BmL628„ Ì=_E«fM©ák3:/çr‘¡ñ1ðö:Ä“̵ùŠ!?"KD¸zúëßW o ¶) ]Ó   Û w Ô ¬H| ßõ W;  { # Z-ðÅü ø U e"+J ¤O ›N® †ÆÌ p  ¿ = Ó   4Ì j ? º rK ‘ñ þê c ³ >‰ €ú Çã.KÞG  Ü3 ê Ú É ˆ \ Ì 0y9@˜  , ¹ + YÀ LF"êì óð2ÇØ e €Õ L À¦¸M À„ m Ð~[? À—óa Єbô à1 0ŒŽ  ð…Î  Ö,ß  Ýãk €à|Œ àÖ¶  ï ’  íöb °Û `ȶ* €Ú Ô °â Å P@½ y| á8å 0Ù#v °å«  °„ ‰  nÖä pÔ.÷  Ö¯ ܦ ìÑ* `¶  Àá‚S àÓ„ ð¢öø `ÙEï `Üœ ðÙŒ‡ ê)‚  ðì+B  ÐåŸ  î³È 0ŽÈ› ÐÛ Ú À  @Ñ8™  €;ɱ ðådñ  ÔÖÑ ÐQ^ €}o °®KÁ  Sâ t p´H¬ €â(m `’a" ƒª3  1Q0¶< ЃÚb P«Øª  àî, Ø:‘ 0f½ `æ»¶ šoµ àÛ Û pžÄã €ÑjÏ À´ù¡l4"¥ зL/ ðÚ#  `å ¥ P˜©É Ü1 Ý’« €·P …U[ ðÐF[ p‘îÙ<0"V Pà.s @…Dª ×éé @ŸÄT ¦QU Ût ÀÒ.* Sfñ Ò˜  °ä¡n ðÕEs  }š} ÐÖ  Þ2? ÐQ6 `Ó k  ðè — ð¦u ]  `èŒ Дas  @ëÈš ð7 € 40"p @á| 𣖳 ¸  Ч80"Ç  ¸, ÀŒo`  Ð>F Ðß~ °Ç¯  ‚ûÁ  ï-p4"¡ Pâ"Í ðØ3; °Ù3e €m5 pß`Ÿ`4"Ú  @ U P©Q‘ É,V   Û ¼ PØÒ<0"N @ÖYÔ ðÛ~ ÀÛ³ À†H‘  A'  åã  = 01( P–o“ @— Q  €`Eß på­  `~õ Àµž ðÒb ðÑ'‡ Õ!` ÀÕ!$ ÐÞ“H ÚXÕ ç1j ¸a¦  PBÆ¿  ƒ 0€·  Ð’øÓ PÐ5œ ׂ @ãD pÓl__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizelibpthread.so.0get_inlinesyck_parser_readreallocsycklex_bytecode_utf8syck_parser_ptrsyck_parser_current_levelsyck_parser_pop_levelsyck_parser_add_levelsyck_hdlr_remove_anchorsyck_alloc_strtry_tag_implicitstrlenmemcpysyck_strndupstrcpystrncatstrtodsyck_st_free_anchorssyck_base64encsyck_base64decsyck_emitter_st_freest_foreachst_free_tablesyck_emitter_current_levelsyck_emitter_parent_levelsyck_emitter_pop_levelsyck_emitter_add_levelsyck_emitter_reset_levelssyck_new_emittersyck_output_handlersyck_free_emittersyck_emitter_clearcallocsyck_emitter_flushsyck_emitter_writesyck_emitst_lookup__sprintf_chkst_insertst_init_numtable__stack_chk_failsyck_emit_tagsyck_tagcmpsyck_emit_indentsyck_scan_scalarsyck_emitter_escapehex_tablesyck_emit_1quotedsyck_emit_2quoted_1syck_emit_2quotedsyck_emit_literalsyck_emit_foldedsyck_emit_scalarsyck_match_implicitsyck_emit_seqsyck_emit_mapsyck_emit_itemsyck_emit_endsyck_emitter_mark_nodememsetstderrfwrite__fprintf_chkfputcapply_seq_in_mapsyck_map_countsyck_hdlr_add_nodesyck_map_assignsyckparsesyckdebugsyck_add_transfersycklexsyckerrorsyck_hdlr_add_anchorsyck_new_mapsyck_map_updatesyck_free_nodesyck_new_strsyck_new_seqsyck_hdlr_get_anchorsyck_alloc_mapsyck_seq_addsyck_alloc_seqsyck_tagurist_init_strtablest_deletesyck_type_id_to_urisyck_xprivatesyck_try_implicitstrchrstrcmpsyck_alloc_nodesyck_new_str2syck_replace_str2syck_replace_strsyck_str_blow_away_commasmemmovesyck_str_readsyck_map_emptysyck_map_addsyck_map_readsyck_seq_emptysyck_seq_countsyck_seq_assignsyck_seq_readsyck_free_memberssyck_io_str_readsyck_io_file_readfreadsyck_st_free_nodessyck_assertfflushabortsyck_parser_reset_cursorsyck_parser_set_root_on_errorsyck_add_symsyck_st_freesyck_parser_implicit_typingsyck_parser_taguri_expansionsyck_parser_error_handlersyck_parser_bad_anchor_handlersyck_parser_set_input_typesyck_parser_reset_levelssyck_new_parserfree_any_iosyck_free_parsersyck_parser_filesyck_parser_strsyck_parser_str_autosyck_move_tokenssyck_check_limitsyck_parser_readlensyck_parsesyck_default_error_handler__printf_chksyck_str_is_unquotable_integer__ctype_b_locst_init_table_with_sizest_init_tablest_init_numtable_with_sizest_init_strtable_with_sizest_add_directst_copyst_delete_safest_cleanup_safeeat_commentsescape_seqnewline_lenis_newlinesycklex_yaml_utf8strtolsyckwrapperl_syck_bad_anchor_handlerPL_thr_keypthread_getspecificPerl_newSVpvn_shareperl_syck_error_handlerPerl_croak_nocontextperl_syck_output_handler_pvPerl_sv_catpvn_flagsperl_syck_output_handler_mgperl_syck_output_handler_ioPerl_PerlIO_write__errno_locationPL_utf8skipPerl__is_utf8_char_helperPerl_sv_isobjectPerl_sv_reftypePerl_hv_common_key_lenPerl_sv_2pv_flagsPerl_form_nocontextPerl_gv_fetchpvjson_quote_charPerl_push_scopePerl_savetmpsPerl_safesysmallocjson_syck_parser_handlerPerl_newSV_typePerl_sv_2mortalPerl_safesysfreePerl_pop_scopePerl_free_tmpsPerl_sv_2bool_flagsPerl_croak_xs_usageyaml_syck_parser_handlerPerl_av_pushPerl_newRV_noincPerl_block_gimmejson_syck_emitter_handlerPerl_mg_getPerl_newSVsvPerl_sv_lenPerl_hv_placeholders_getPerl_hv_iterinitPerl_hv_iternext_flagsPerl_hv_iterkeysvPerl_hv_itervalPerl_av_lenPerl_av_fetchPerl_av_storePerl_sv_cmpPerl_sortsvPerl_av_shiftPerl_hv_commonPerl_sv_free2yaml_syck_emitter_handlerPerl_savepvstrcatPerl_looks_like_numberPerl_newRVPerl_call_methodPerl_stack_growPerl_markstack_growperl_syck_lookup_symPerl_newSVpvPerl_newSVpvnPerl_newSVPerl_newSVnvPL_nanPL_infPerl_newSVuvPerl_grok_hexPerl_grok_numberPerl_my_atofPerl_newSVivPerl_grok_octstrncmpstrtokPerl_call_pvPerl_av_clearPerl_sv_setsv_flagsPerl_gv_stashpvPerl_sv_blessPerl_sv_catpvPerl_eval_pvPerl_croak_svPerl_gv_add_by_typeperl_json_postprocessjson_syck_mark_emitterDumpJSONImpljson_max_depthPerl_sv_2iv_flagsDumpJSONDumpJSONFilePerl_sv_2ioPerl_sv_newmortalPerl_sv_setiv_mgDumpJSONIntoPerl_sv_setpvyaml_syck_mark_emitterDumpYAMLImplDumpYAMLDumpYAMLFileDumpYAMLIntoboot_YAML__SyckPerl_xs_handshakePerl_newXS_deffilePerl_xs_boot_epiloglibperl.so.5.26libc.so.6_edata__bss_startGLIBC_2.2.5GLIBC_2.3GLIBC_2.3.4GLIBC_2.14GLIBC_2.4U ui åÈii ñti û”‘–ii ui åP$"pmX$"0m`$"`$"€$"Q·ˆ$"·$"V·˜$"a· $"m·¨$"x·°$"†·¸$"’·À$"¡·È$"«·Ð$"¶·Ø$"Á·à$"Í·è$"Ø·ð$"ä·ø$"î·%"ò·%"ö·%"ú·%"þ· %"¸(%"¸0%" ¸8%"¸@%"¸H%"'¹P%"¸X%""¸`%"*¸h%"0¸p%"<¸x%"G¸€%"R¸ˆ%"b¸%"k¸˜%"¸ %"v¸¨%"€¸°%"Œ¸¸%"Ÿ¸À%"œ¸È%"ª¸Ð%"ó¸Ø%"º¸à%"Ƹè%"Ò¸ð%"à¸ø%"ð¸&"¹&"¹&"¹&"¹0"`ã 0" ã(0"°ã/"ï/" /"÷(/"¨0/"¥8/"@/"ûH/"æP/"ÜX/"õ`/"/h/"<p/"µx/"C€/"׈/"/"†˜/"£ /"ߨ/"©°/"\¸/"aÀ/"È/"ýÐ/"hØ/"¡à/"jè/"êð/"m0",@("H("‡P("ôX("Ï`("h("p("x("€("ˆ("("¯˜("Å ("¨("°(" ¸("åÀ("zÈ(" Ð(" Ø("à(" è("¤ð("ø("ñ)")"²)"¾)" )"()"0)"œ8)"@)"H)"§P)"âX)"`)"ãh)"p)"{x)"Ê€)"ˆ)"Ã)"›˜)"w )"¨)"°)"Ÿ¸)"ÙÀ)"”È)" Ð)"…Ø)"¶à)"è)"Äð)"Žø)"•*"*"*"Œ*" *"(*"Û0*"8*"@*"H*"P*" X*"Ø`*"!h*"´p*""x*"x€*"¿ˆ*"#*"$˜*"% *"&¨*"ÿ°*"'¸*" À*"øÈ*"(Ð*")Ø*"íà*"sè*"„ð*"¼ø*" +"Š+"Î+"*+"Ô +"+(+",0+"t8+"-@+"½H+".P+"³X+"Ý`+"}h+"0p+"1x+"Ö€+"2ˆ+"á+"3˜+"4 +"5¨+"6°+"°¸+"¦À+"7È+"çÐ+"‰Ø+"üà+"8è+"Þð+"9ø+"Æ,"ˆ,":,";," ,"=(," 0,"±8,"È@,"rH,">P,"èX,"«`,"h,"p,"ìx,"?€,"®ˆ,"@,"˜,"˜ ,"A¨,"B°,"D¸,"ùÀ,"EÈ,"FÐ,"ºØ,"Gà,"™è,"Hð,"Iø,"J-"þ-"y-"·-"K -"Ì(-"q0-"L8-"M@-"NH-"OP-"PX-"“`-"uh-"€p-" x-"¹€-"Qˆ-"î-"R˜-"S -" ¨-"T°-"U¸-"vÀ-"VÈ-"WÐ-"XØ-"Yà-"Zè-"[ð-"Áø-"‹."š."]."^."_ ."`(."­0."8."Ò@."H."bP."»X."c`."dh."óp."¸x."e€."ƒˆ."à."f˜."g ."p¨."h°."i¸."ÉÀ."‚È."¬Ð."~Ø."kà."lè."žð."ªø."n/"o/"‘óúHƒìH‹Þ!H…ÀtÿÐHƒÄÃÿ5ºÖ!òÿ%»Ö!óúhòéáÿÿÿóúhòéÑÿÿÿóúhòéÁÿÿÿóúhòé±ÿÿÿóúhòé¡ÿÿÿóúhòé‘ÿÿÿóúhòéÿÿÿóúhòéqÿÿÿóúhòéaÿÿÿóúh òéQÿÿÿóúh òéAÿÿÿóúh òé1ÿÿÿóúh òé!ÿÿÿóúh òéÿÿÿóúhòéÿÿÿóúhòéñþÿÿóúhòéáþÿÿóúhòéÑþÿÿóúhòéÁþÿÿóúhòé±þÿÿóúhòé¡þÿÿóúhòé‘þÿÿóúhòéþÿÿóúhòéqþÿÿóúhòéaþÿÿóúhòéQþÿÿóúhòéAþÿÿóúhòé1þÿÿóúhòé!þÿÿóúhòéþÿÿóúhòéþÿÿóúhòéñýÿÿóúh òéáýÿÿóúh!òéÑýÿÿóúh"òéÁýÿÿóúh#òé±ýÿÿóúh$òé¡ýÿÿóúh%òé‘ýÿÿóúh&òéýÿÿóúh'òéqýÿÿóúh(òéaýÿÿóúh)òéQýÿÿóúh*òéAýÿÿóúh+òé1ýÿÿóúh,òé!ýÿÿóúh-òéýÿÿóúh.òéýÿÿóúh/òéñüÿÿóúh0òéáüÿÿóúh1òéÑüÿÿóúh2òéÁüÿÿóúh3òé±üÿÿóúh4òé¡üÿÿóúh5òé‘üÿÿóúh6òéüÿÿóúh7òéqüÿÿóúh8òéaüÿÿóúh9òéQüÿÿóúh:òéAüÿÿóúh;òé1üÿÿóúh<òé!üÿÿóúh=òéüÿÿóúh>òéüÿÿóúh?òéñûÿÿóúh@òéáûÿÿóúhAòéÑûÿÿóúhBòéÁûÿÿóúhCòé±ûÿÿóúhDòé¡ûÿÿóúhEòé‘ûÿÿóúhFòéûÿÿóúhGòéqûÿÿóúhHòéaûÿÿóúhIòéQûÿÿóúhJòéAûÿÿóúhKòé1ûÿÿóúhLòé!ûÿÿóúhMòéûÿÿóúhNòéûÿÿóúhOòéñúÿÿóúhPòéáúÿÿóúhQòéÑúÿÿóúhRòéÁúÿÿóúhSòé±úÿÿóúhTòé¡úÿÿóúhUòé‘úÿÿóúhVòéúÿÿóúhWòéqúÿÿóúhXòéaúÿÿóúhYòéQúÿÿóúhZòéAúÿÿóúh[òé1úÿÿóúh\òé!úÿÿóúh]òéúÿÿóúh^òéúÿÿóúh_òéñùÿÿóúh`òéáùÿÿóúhaòéÑùÿÿóúhbòéÁùÿÿóúhcòé±ùÿÿóúhdòé¡ùÿÿóúheòé‘ùÿÿóúhfòéùÿÿóúhgòéqùÿÿóúhhòéaùÿÿóúhiòéQùÿÿóúhjòéAùÿÿóúhkòé1ùÿÿóúhlòé!ùÿÿóúhmòéùÿÿóúhnòéùÿÿóúhoòéñøÿÿóúhpòéáøÿÿóúhqòéÑøÿÿóúhròéÁøÿÿóúhsòé±øÿÿóúhtò顸ÿÿóúhuò鑸ÿÿóúhvòéøÿÿóúhwòéqøÿÿóúhxòéaøÿÿóúhyòéQøÿÿóúhzòéAøÿÿóúh{òé1øÿÿóúh|òé!øÿÿóúh}òéøÿÿóúh~òéøÿÿóúhòéñ÷ÿÿóúh€òéá÷ÿÿóúhòéÑ÷ÿÿóúh‚òéÁ÷ÿÿóúhƒòé±÷ÿÿóúh„òé¡÷ÿÿóúh…òé‘÷ÿÿóúh†òé÷ÿÿóúh‡òéq÷ÿÿóúhˆòéa÷ÿÿóúh‰òéQ÷ÿÿóúhŠòéA÷ÿÿóúh‹òé1÷ÿÿóúhŒòé!÷ÿÿóúhòé÷ÿÿóúhŽòé÷ÿÿóúhòéñöÿÿóúhòéáöÿÿóúh‘òéÑöÿÿóúh’òéÁöÿÿóúh“òé±öÿÿóúh”òé¡öÿÿóúh•òé‘öÿÿóúh–òéöÿÿóúh—òéqöÿÿóúh˜òéaöÿÿóúh™òéQöÿÿóúhšòéAöÿÿóúh›òé1öÿÿóúhœòé!öÿÿóúhòéöÿÿóúhžòéöÿÿóúhŸòéñõÿÿóúh òéáõÿÿóúh¡òéÑõÿÿóúh¢òéÁõÿÿóúh£òé±õÿÿóúh¤òé¡õÿÿóúh¥òé‘õÿÿóúh¦òéõÿÿóúh§òéqõÿÿóúh¨òéaõÿÿóúh©òéQõÿÿóúhªòéAõÿÿóúh«òé1õÿÿóúh¬òé!õÿÿóúh­òéõÿÿóúh®òéõÿÿóúh¯òéñôÿÿóúh°òéáôÿÿóúh±òéÑôÿÿóúh²òéÁôÿÿóúh³òé±ôÿÿóúh´òé¡ôÿÿóúhµòé‘ôÿÿóúh¶òéôÿÿóúh·òéqôÿÿóúh¸òéaôÿÿóúh¹òéQôÿÿóúhºòéAôÿÿóúh»òé1ôÿÿóúh¼òé!ôÿÿóúh½òéôÿÿóúh¾òéôÿÿóúh¿òéñóÿÿóúhÀòéáóÿÿóúhÁòéÑóÿÿóúhÂòéÁóÿÿóúhÃòé±óÿÿóúhÄòé¡óÿÿóúhÅòé‘óÿÿóúhÆòéóÿÿóúhÇòéqóÿÿóúhÈòéaóÿÿóúhÉòéQóÿÿóúhÊòéAóÿÿóúhËòé1óÿÿóúhÌòé!óÿÿóúhÍòéóÿÿóúhÎòéóÿÿóúhÏòéñòÿÿóúhÐòéáòÿÿóúhÑòéÑòÿÿóúhÒòéÁòÿÿóúhÓòé±òÿÿóúhÔòé¡òÿÿóúhÕòé‘òÿÿóúhÖòéòÿÿóúh×òéqòÿÿóúhØòéaòÿÿóúhÙòéQòÿÿóúòÿ%É!Dóúòÿ% É!Dóúòÿ%É!Dóúòÿ%ýÈ!Dóúòÿ%õÈ!Dóúòÿ%íÈ!Dóúòÿ%åÈ!Dóúòÿ%ÝÈ!Dóúòÿ%ÕÈ!Dóúòÿ%ÍÈ!Dóúòÿ%ÅÈ!Dóúòÿ%½È!Dóúòÿ%µÈ!Dóúòÿ%­È!Dóúòÿ%¥È!Dóúòÿ%È!Dóúòÿ%•È!Dóúòÿ%È!Dóúòÿ%…È!Dóúòÿ%}È!Dóúòÿ%uÈ!Dóúòÿ%mÈ!Dóúòÿ%eÈ!Dóúòÿ%]È!Dóúòÿ%UÈ!Dóúòÿ%MÈ!Dóúòÿ%EÈ!Dóúòÿ%=È!Dóúòÿ%5È!Dóúòÿ%-È!Dóúòÿ%%È!Dóúòÿ%È!Dóúòÿ%È!Dóúòÿ% È!Dóúòÿ%È!Dóúòÿ%ýÇ!Dóúòÿ%õÇ!Dóúòÿ%íÇ!Dóúòÿ%åÇ!Dóúòÿ%ÝÇ!Dóúòÿ%ÕÇ!Dóúòÿ%ÍÇ!Dóúòÿ%ÅÇ!Dóúòÿ%½Ç!Dóúòÿ%µÇ!Dóúòÿ%­Ç!Dóúòÿ%¥Ç!Dóúòÿ%Ç!Dóúòÿ%•Ç!Dóúòÿ%Ç!Dóúòÿ%…Ç!Dóúòÿ%}Ç!Dóúòÿ%uÇ!Dóúòÿ%mÇ!Dóúòÿ%eÇ!Dóúòÿ%]Ç!Dóúòÿ%UÇ!Dóúòÿ%MÇ!Dóúòÿ%EÇ!Dóúòÿ%=Ç!Dóúòÿ%5Ç!Dóúòÿ%-Ç!Dóúòÿ%%Ç!Dóúòÿ%Ç!Dóúòÿ%Ç!Dóúòÿ% Ç!Dóúòÿ%Ç!Dóúòÿ%ýÆ!Dóúòÿ%õÆ!Dóúòÿ%íÆ!Dóúòÿ%åÆ!Dóúòÿ%ÝÆ!Dóúòÿ%ÕÆ!Dóúòÿ%ÍÆ!Dóúòÿ%ÅÆ!Dóúòÿ%½Æ!Dóúòÿ%µÆ!Dóúòÿ%­Æ!Dóúòÿ%¥Æ!Dóúòÿ%Æ!Dóúòÿ%•Æ!Dóúòÿ%Æ!Dóúòÿ%…Æ!Dóúòÿ%}Æ!Dóúòÿ%uÆ!Dóúòÿ%mÆ!Dóúòÿ%eÆ!Dóúòÿ%]Æ!Dóúòÿ%UÆ!Dóúòÿ%MÆ!Dóúòÿ%EÆ!Dóúòÿ%=Æ!Dóúòÿ%5Æ!Dóúòÿ%-Æ!Dóúòÿ%%Æ!Dóúòÿ%Æ!Dóúòÿ%Æ!Dóúòÿ% Æ!Dóúòÿ%Æ!Dóúòÿ%ýÅ!Dóúòÿ%õÅ!Dóúòÿ%íÅ!Dóúòÿ%åÅ!Dóúòÿ%ÝÅ!Dóúòÿ%ÕÅ!Dóúòÿ%ÍÅ!Dóúòÿ%ÅÅ!Dóúòÿ%½Å!Dóúòÿ%µÅ!Dóúòÿ%­Å!Dóúòÿ%¥Å!Dóúòÿ%Å!Dóúòÿ%•Å!Dóúòÿ%Å!Dóúòÿ%…Å!Dóúòÿ%}Å!Dóúòÿ%uÅ!Dóúòÿ%mÅ!Dóúòÿ%eÅ!Dóúòÿ%]Å!Dóúòÿ%UÅ!Dóúòÿ%MÅ!Dóúòÿ%EÅ!Dóúòÿ%=Å!Dóúòÿ%5Å!Dóúòÿ%-Å!Dóúòÿ%%Å!Dóúòÿ%Å!Dóúòÿ%Å!Dóúòÿ% Å!Dóúòÿ%Å!Dóúòÿ%ýÄ!Dóúòÿ%õÄ!Dóúòÿ%íÄ!Dóúòÿ%åÄ!Dóúòÿ%ÝÄ!Dóúòÿ%ÕÄ!Dóúòÿ%ÍÄ!Dóúòÿ%ÅÄ!Dóúòÿ%½Ä!Dóúòÿ%µÄ!Dóúòÿ%­Ä!Dóúòÿ%¥Ä!Dóúòÿ%Ä!Dóúòÿ%•Ä!Dóúòÿ%Ä!Dóúòÿ%…Ä!Dóúòÿ%}Ä!Dóúòÿ%uÄ!Dóúòÿ%mÄ!Dóúòÿ%eÄ!Dóúòÿ%]Ä!Dóúòÿ%UÄ!Dóúòÿ%MÄ!Dóúòÿ%EÄ!Dóúòÿ%=Ä!Dóúòÿ%5Ä!Dóúòÿ%-Ä!Dóúòÿ%%Ä!Dóúòÿ%Ä!Dóúòÿ%Ä!Dóúòÿ% Ä!Dóúòÿ%Ä!Dóúòÿ%ýÃ!Dóúòÿ%õÃ!Dóúòÿ%íÃ!Dóúòÿ%åÃ!Dóúòÿ%ÝÃ!Dóúòÿ%ÕÃ!Dóúòÿ%ÍÃ!Dóúòÿ%ÅÃ!Dóúòÿ%½Ã!Dóúòÿ%µÃ!Dóúòÿ%­Ã!Dóúòÿ%¥Ã!Dóúòÿ%Ã!Dóúòÿ%•Ã!Dóúòÿ%Ã!Dóúòÿ%…Ã!Dóúòÿ%}Ã!Dóúòÿ%uÃ!Dóúòÿ%mÃ!Dóúòÿ%eÃ!Dóúòÿ%]Ã!Dóúòÿ%UÃ!Dóúòÿ%MÃ!Dóúòÿ%EÃ!Dóúòÿ%=Ã!Dóúòÿ%5Ã!Dóúòÿ%-Ã!Dóúòÿ%%Ã!Dóúòÿ%Ã!Dóúòÿ%Ã!Dóúòÿ% Ã!Dóúòÿ%Ã!Dóúòÿ%ýÂ!Dóúòÿ%õÂ!Dóúòÿ%íÂ!Dóúòÿ%åÂ!Dóúòÿ%ÝÂ!Dóúòÿ%ÕÂ!Dóúòÿ%ÍÂ!Dóúòÿ%ÅÂ!Dóúòÿ%½Â!Dóúòÿ%µÂ!Dóúòÿ%­Â!Dóúòÿ%¥Â!Dóúòÿ%Â!Dóúòÿ%•Â!Dóúòÿ%Â!Dóúòÿ%…Â!Dóúòÿ%}Â!Dóúòÿ%uÂ!Dóúòÿ%mÂ!Dóúòÿ%eÂ!Dóúòÿ%]Â!Dóúòÿ%UÂ!Dóúòÿ%MÂ!DH=yÃ!HrÃ!H9øtH‹>Â!H…Àt ÿà€Ã€H=IÃ!H5BÃ!H)þHÁþH‰ðHÁè?HÆHÑþtH‹Â!H…ÀtÿàfDÀóú€=Ã!u+UHƒ=ŠÂ!H‰åt H=·!è™þÿÿèdÿÿÿÆÝÂ!]ÃÀóúéwÿÿÿ€óúAWA¿dAVAUATE1äUSH‰û¿dHƒìèùÿÿÆI‰ÆH‹khH‹SxH)êH‰èHƒú~>¶€ú tJ€ú tq„ÒteHƒÀH‰ChEl$E9ý}{¶ECˆ&IcÅMcåAÆë´fDH‰ßèHõÿÿH‹Ch¶€ú u¶HƒÀH‰Ch€xÿ t^HƒÄL‰ð[]A\A]A^A_Ã@H‰khëäfHPH‰Sh€x uHƒÀH‰ChëÄ„Aƒï€L‰÷Ic÷è±ùÿÿI‰Æénÿÿÿf„H;CHvœH‰CPƒƒ€H‰CHë‹f„óúAWAVAUI‰ýATUSH‰óHƒìH‹)Á!Hƒ~hH‰0„«‹«ˆ…ít!ǃˆHƒÄ‰è[]A\A]A^A_ÃfDH‰ßèÀóÿÿƒxI‰Ät*H‹ChH‹SxH)ÂH‰C`HƒúŽÖ€8D„]H‹C`H‰ChL%æ@H‰ßè~óÿÿ‹xI‰Æ…ÿuÇ@H‹ChH‹SxH)ÂH‰C`HƒúŽô€8cHPw¶Ic ŒLá>ÿáfDH‰ÂHJH‰Kh¶B< „¸< …™HBHJH‰Ch€z uÏ€H‰KhA‹…À‰ H‹C`H‰Chéÿÿÿ@H‰Sh€x HHuH‰ÐH‰ÊH‰Sh€8 „OA‹Fƒø„š ƒø…#ÿÿÿA‹F½ ‰ÂÁêЃà)Ѓø¸:Dèé¥þÿÿ@H‰ÊHJH‰Kh¶B< …HÿÿÿHJé`ÿÿÿH‰ßèèòÿÿH‹Chéûþÿÿ€H‰÷èÐòÿÿéHþÿÿHPH‰ShH‰Sp¶H€ù t€ù ……þÿÿHPH‰Sh€x …sþÿÿHBH‰ChE‹L$E…É„’E‹$E…ÀˆôþÿÿH‰ß½ èX÷ÿÿH‹C`H‰ChéìýÿÿH‰ßèPòÿÿH‹Chéþÿÿ€H‰ShA‹Fƒø„ƒø„¦ƒøtA‹6ºH‰ßƒÆèÞîÿÿH‰ß½èñõÿÿH‰ßI‰EH‰ÆèB÷ÿÿH‹Ch€xÿ …uýÿÿH;CH†kýÿÿH‰CPƒƒ€H‰CHéWýÿÿfDH‰Sh¶H€ù „߀ù …áýÿÿHPH‰Sh€x …ÏýÿÿHƒÀH‰ChA‹Fƒø„¦ƒøu A‹V…Ò„‘ H‰ßèVöÿÿH‰ßèÎðÿÿ‹Pƒú„jƒú„! H‹Ch½ €xÿ …ÇüÿÿéMÿÿÿH‰Sh¶H€ù „/€ù …QýÿÿHPH‰Sh€x …?ýÿÿHƒÀH‰ChA‹VA‹FöÂu Hý1íƒù@–Ńø„æƒø„sƒø„]A‹6ºH‰ßƒÆè…íÿÿH‹Ch€xÿ „•…í…y½ é&üÿÿDH‰ShA‹Fƒø„σø„ƒø„ýA‹6ºH‰ßƒÆè*íÿÿH‰ß½è=ôÿÿH‰ßI‰Eè1õÿÿH‹Ch€xÿ …ÄûÿÿHƒèH‰Ché·ûÿÿfDH‰ShA‹6…öˆüÿÿé—ýÿÿ@H‰Sh¶pHH@€þ „büÿÿ@€þ …#üÿÿH‰Kh€x H‰ÊHH…üÿÿé>üÿÿfDH‰Sh¶H€ù „×€ù …éûÿÿHPH‰Sh€x …×ûÿÿHƒÀH‰ChA‹VA‹FöÂu Hý1íƒù@–Ńø„~ƒø„$ƒø„A‹6ºH‰ßƒÆèìÿÿé“þÿÿ„H‰ShA‹Fƒø„ƒø„öƒøtA‹6ºH‰ßƒÆèÞëÿÿH‰ßèöòÿÿI‰ÄH‹Ch€xÿ „QA€<$!…êA€|$L‰ç…fèëÿÿ½é]úÿÿ@H‰ShH‹CxH‰S`H)ÐHƒøŽw¶HJ< „ < „x„À„H‰KhH‰ÊëÀH‰ShA‹Fƒø„¿ƒø„&ƒø„ A‹6ºH‰ßƒÆèëÿÿ¿dè ñÿÿL‹sh¹dÆI‰ÇH‹SxL‰ðL)òHƒú~\¶€ú „Å€ú „,„Ò„´HƒÀH‰ChDeA9Ì/A¶H‹SxHcíL‹shAˆ/IcÄD‰åL)òAÆL‰ðHƒú¤H‰ß‰ $èºíÿÿH‹Ch‹ $ëHPH‰ShH‰Sp¶@<.ŒÐ<_~ ƒèa<‡ÁH‹CxHƒÂH‰ShH)ÐHƒøޏ¶<_Í<;}Ø<.Œ‘<9~ÌHJH‰Kh¶B<.|}<_•H‹CxHƒÁH‰KhH)ÈHƒøŽ:¶<_q<.}Ø< t< uEHAH‰Ch€y u7H‹ShHBH‰Ch@€: „^H‹SxH‰C`H)ÂHƒúŽ™€8V„ÿÿÿH‹C`½ H‰ChéHøÿÿ€AƒFA‹6ºH‰ß½-ƒÆècéÿÿH‹C`H‰ChéøÿÿfDH‰Kh€yÿ …\øÿÿH9KHƒRøÿÿH‰KPƒƒ€H‰KHé>øÿÿ@óúL‰sh1ÀHcíèîéÿÿH‰ßH‹P L‰zH‹P H‰j½I‰Eè ñÿÿƒ{…¤÷ÿÿ‹sI‹}ègîÿÿé“÷ÿÿfH9SHƒ§øÿÿH‰SPƒƒ€H‰SH铸ÿÿfHPH‰Sh€x …ÒýÿÿL`L‰ch¶@ „NM‰æé_ýÿÿH‰ß‰ $è…ëÿÿL‹ch‹ $fDA¾$ƒè0ƒø ‡¶IƒÄL‰chL;cxuáëÇ€L`L‰ch¶@ „HU9ʦHcíHcÂM‰æAÆ/‰ÕAÆé€ûÿÿA€> „;I~L9ç‚<U9ÊŽHcíHcÂM‰æAÆ/ ‰ÕAÆéDûÿÿè€èÿÿH‰ßH‰ÅèÕèÿÿA€|$^LcõH‰Â„µM|$MæL‰ûëfD€{^„5H‰ëHkI9îwêL‰ç½è-èÿÿH‰ÇèuìÿÿL‰çI‰EH‰ÃÆèèÿÿL‰þH‰ßH‰ÂèuëÿÿL‰çèåÿÿéyôÿÿǃˆ é÷ÿÿA‹N…É…_÷ÿÿAÇFH‹C`½[ǃˆ]H‰Ché:ôÿÿƒèa<†`ûÿÿéÐûÿÿƒèa<‡ÅûÿÿéÿúÿÿH;CH†˜ûÿÿH‰CPƒƒ€H‰CHé„ûÿÿAÇFé©÷ÿÿƒÂA‰VéŠ÷ÿÿAÇFé÷ÿÿƒÂA‰VéÙøÿÿH‰ßè1èÿÿH‹ChéVûÿÿ‹@‰ÂÁêЃà)Ѓø…(ÿÿÿǃˆ:é¸öÿÿH‹zH‰$I)îè!äÿÿH‰îL‰ÿL)þèÃêÿÿH‹$H‰ÇH‰BèãæÿÿI<è*ëÿÿH‹$I‰EH‰ÇÆH‹rèãäÿÿIVÿHsH‰ÁH‰Ï½èèÿÿL‰çèÃãÿÿéóÿÿIƒÆL;sH†ªýÿÿL‰sPƒƒ€L‰sHé–ýÿÿIFH;CH†·ýÿÿH‰CPƒƒ€H‰CHé£ýÿÿIFM‰æH;CH†ùÿÿH‰CPƒƒ€H‰CHéôøÿÿƒé€L‰ÿ‰T$Hcñ‰ $èàëÿÿ‹T$‹ $I‰Çé6ýÿÿƒé€L‰ÿ‰T$Hcñ‰ $è¼ëÿÿ‹T$‹ $I‰ÇéNýÿÿAÇFH‹C`½{ǃˆ}H‰ChéJòÿÿH‰ßè±æÿÿH‹Shé7ùÿÿ½ é/òÿÿH‹xH‰$è¡åÿÿJ<0èèéÿÿH‹$I‰EH‰ÇÆH‹rè¡ãÿÿUþIt$H‰ÁHcÒé¶þÿÿ1ö‰ $Lcõèñãÿÿ‹ $ò,À…À‰D$ DdëGCÆ7 HcÂLcòAÆE9ôt)AV9Ñãƒé€L‰ÿ‰T$Hcñ‰ $èÖêÿÿ‹T$‹ $I‰Çë‹D$ ÅL‹shéº÷ÿÿH‰ßèãåÿÿH‹Khéµøÿÿf.„óúHƒìH‰÷èðáÿÿ1ÀHƒÄÃf„óúH µUH‰õHºVUUUUUUUH‰ÈSHÁù?H‰ûH÷êHƒìH)ÊHzèØèÿÿHƒýŽN1öH=õ7D¶ HƒíHƒÃ‰ÊÁáÀêƒá0ƒâ?¶ˆ0¶SþA‰ÐÁâAÀèƒâH‹D$dH3%(…]HƒÄ([]A\A]A^A_Ã{…mÿÿÿéCÿÿÿf„ºH5%*H‰ßè¬ÛÿÿÇÇC$ëŸDH‹{@H‹t$1ÀHT$è³×ÿÿ…À„cÿÿÿH‹{HH…ÿ„ÎH‹t$1Ò1Àè×ÿÿ…À…XL‹|$L‰ÿèÚÿÿHxèbÞÿÿM‰ø¾H j)H‰ÇI‰ÆHÇÂÿÿÿÿ1ÀèäÿÿAƒ|$„ÓH‹|$èÙÙÿÿL‰öH‰ßHPèúÚÿÿL‰÷èâÖÿÿH‹{HH‹t$1Ò1ÀèPÚÿÿAÇEé»þÿÿ¾¿@èñÛÿÿº@E1ÉA¸I‰ÅH‰Ç¾1ÀH ¿(èšãÿÿL‰ê‹ HƒÂÿþþþ÷Ñ!È%€€€€té‰ÁH‰ßL‰îÁé©€€DÁHJHDщÁÁHƒÚL)êèUÚÿÿL‰ïè=Öÿÿéàýÿÿ„A‹D$‰ÂÁêЃà)Ѓø…ÿÿÿºH5V(H‰ßèÚÿÿAÇD$ éñþÿÿ@L‹d$L‰çèÃØÿÿHxè ÝÿÿM‰à¾H (H‰ÅHÇÂÿÿÿÿH‰Ç1ÀèÇâÿÿH‹|$èØÿÿH‰ßH‰îHPè®ÙÿÿH‰ïè–Õÿÿé’ýÿÿ1ÀèYÜÿÿH‰ÇH‰CHéþÿÿè˜Øÿÿ„óúH…ö„£AVAUATUH‰ýSH‰óH…ÒtH‰ÖH‰ßè5ßÿÿ…Àu‹E…ÀtQH‰ïèÂÖÿÿ€;I‰ÄtJ¹H=t'H‰Þó¦—À„ÀtX¹ H=o'H‰Þó¦—À„À„"AÇD$[]A\A]A^úH5''H‰ïèÜØÿÿëØf.„ÀH‰ßè×ÿÿH5 'H‰ïºI‰Åè©ØÿÿLK¹ Lä&L‰ÎL‰×ó¦—À„À„ì¶S„Ò„øM‰È€ú:„ì@IƒÀA¶€ú:t„Òuï€ú:…UÿÿÿMcíL‰ÀMpIÝH)ØM)õHƒøvIPó¹ L‰×H‰Öó¦—À„À„§L‰ÂL)ÊL‰ÎH‰ïèØÿÿH‰ïºH5P&èò×ÿÿL‰êL‰öH‰ïèä×ÿÿë.fºH5:&H‰ïèÌ×ÿÿH‰ßè”ÖÿÿHs H‰ïHPöè´×ÿÿºH5ì%H‰ïè ×ÿÿé™þÿÿAUîHsH‰ïHcÒè…×ÿÿëÏM‰Èé!ÿÿÿ„L)ÊHƒêéSÿÿÿ@óúATI‰üUSèÐÔÿÿIƒ|$hH‰Ãu I‹D$XI9D$`t‹;…ÿy []A\ÃfDƒÇHcÿè=ÚÿÿÆ H‰Å‹ƒÀH˜ÆD‹ …É~1ÒƒÂHcÊÆD ‹ 9Ê|ïQL‰çH‰îHcÒèÞÖÿÿ[H‰ï]A\éÂÒÿÿfóúH…ÒŽãAUI‰ñATUSD¶‰ûA@…AHß<–À€ù?wH¾w ´HÓîƒæ ðÁàÁø%€A€ø?‡{D‰ÁA¶|ÿH¾0„HÓîH‰ñH÷щ΃æ…ZA¶I€ù wH¾$HÓîƒæHƒút @„ö„»¸€@€ÿ …,Hƒú„‚A€|þ u€ÌA€ø t A€ø uƒÈHƒú~$¹L‰ÎH=I$󦉯—Á€ÙÎ „ÉDÆIƒÁE1ÛE1ÒLjÿHcëL%$AH÷€ùvA€ø „}AHà€ù^v E„À‰{A€ø „ÑA€ø'„7A€ø"„UA€ø]„cA€ø}„iA€ø „wA€ø:……A¶ €ù „j€ù „aM9Õ„XfDIƒÂL9Ò„ËE¶IƒÁéVÿÿÿfDA¶|ÿ@€ÿ „Ôþÿÿ€ÌA€ø „ëþÿÿA€ø „áþÿÿHƒú„ÿÿÿ@€ÿ „Íþÿÿ@€ÿ „ÃþÿÿéÁþÿÿfDH‰ÑA‰ÀL)ÑAƒÈHƒù~¹L‰ÎL‰çó¦—Á€Ù  „ÉDDÀA¶ €ù tFD‰À€ù t>…Û~DL‰ÑL)ÙM‰ÓH9éŽ8ÿÿÿIƒÂƒÈL9Ò…5ÿÿÿ[]A\A]ÃƒÈ éÿÿÿ„D‰ÀƒÈ…Û¼M‰ÓéþþÿÿfDƒÈ@éðþÿÿƒÈéèþÿÿ„€ÌéØþÿÿ„€ÌéÈþÿÿ„1ÀÃDA€9#…®þÿÿ€Ìé¦þÿÿfDA€ø,…–þÿÿA¶ €ù t€ù tM9Õ…þÿÿ€€ÌépþÿÿA€ø „ŽýÿÿA€ø …±ýÿÿéýÿÿ€@€ÿ …vþÿÿéOýÿÿóúH…ÒŽ#AW1ÀL=¿!AVAUI‰õATI‰ÔU1íSH‰ûHƒìë;€L‰þH‰ßèÓÿÿA€>º…ŽH5\H‰ßèÿÒÿÿƒÅHcÅL9à}MMtƒ{ A¶tUƒê €ú^—„Һu«L‰öH‰ßèÈÒÿÿA€>\uúL‰þH‰ßƒÅè¯ÒÿÿHcÅL9à|³HƒÄ[]A\A]A^A_ăê€ú–Âë©DH‰ßH5¯4èqÒÿÿA¶6H‰ßº@Àî@¶öH5nž!èQÒÿÿA¶6ºH‰ßƒæH5Sž!è6Òÿÿé2ÿÿÿÃff.„@óúAWH5 AVL5z AUI‰ÕºATM‰ìUH‰ýSH‰ËLëHƒìèçÑÿÿL‰îI9Ýr#ëEDºH59 H‰ïèÄÑÿÿL‰þI9ßt$¶L~< tA<'tÕºH‰ïè ÑÿÿL‰þI9ßuÜHƒÄH‰ïº[H5ò]A\A]A^A_évÑÿÿfDA€<$ uM9åuºL‰öH‰ïèTÑÿÿM‰üë‹€ºH5­H‰ïè4ÑÿÿëÞfóúAWI‰×ºAVM‰þAUI‰ÍATMýI‰üUH- SHƒì‰t$ H5fèóÐÿÿL‰þM9ïsC€>\H^‡¾¶HcD…Hè>ÿàDºH52L‰çè´Ðÿÿ@H‰ÞI9ÝwÀHƒÄL‰çº[H5]A\A]A^A_é†ÐÿÿfDºH5çL‰çèlÐÿÿëºf.„HcD$ …ÀŽkA€? „aL)öH9ÆŽUI9ÝvL‰çI‰ÞèmÎÿÿH‰Þ€>\H^†BÿÿÿºL‰çè Ðÿÿé[ÿÿÿºH5ŠL‰çèôÏÿÿé?ÿÿÿ€ºH5aL‰çèÔÏÿÿéÿÿÿ€ºH5>L‰çè´Ïÿÿéÿþÿÿ€ºH5'L‰çè”Ïÿÿéßþÿÿ€ºH5 L‰çètÏÿÿé¿þÿÿ€ºH5äL‰çèTÏÿÿéŸþÿÿ€ºH5»L‰çè4Ïÿÿéþÿÿ€ºH5˜L‰çèÏÿÿé_þÿÿ€ºH5uL‰çèôÎÿÿé?þÿÿ€ºH5 L‰çèÔÎÿÿéþÿÿff.„@óúAWI‰×ºAVM‰þAUI‰ÍATMýI‰üUH-SHƒì‰t$ H5èƒÎÿÿL‰þM9ïsC€>\H^‡¾¶HcD…Hè>ÿàDºH5ÂL‰çèDÎÿÿ@H‰ÞI9ÝwÀHƒÄL‰çº[H5¹]A\A]A^A_éÎÿÿfDºH5˜L‰çèüÍÿÿëºf.„HcD$ …ÀŽkA€? „aL)öH9ÆŽUI9ÝvL‰çI‰ÞèýËÿÿH‰Þ€>\H^†BÿÿÿºL‰çè0Îÿÿé[ÿÿÿºH5L‰çè„Íÿÿé?ÿÿÿ€ºH5ñL‰çèdÍÿÿéÿÿÿ€ºH5ÎL‰çèDÍÿÿéÿþÿÿ€ºH5·L‰çè$Íÿÿéßþÿÿ€ºH5L‰çèÍÿÿé¿þÿÿ€ºH5tL‰çèäÌÿÿéŸþÿÿ€ºH5KL‰çèÄÌÿÿéþÿÿ€ºH5(L‰çè¤Ìÿÿé_þÿÿ€ºH5L‰çè„Ìÿÿé?þÿÿ€ºH5°L‰çèdÌÿÿéþÿÿff.„@óúAVA‰öH5×AUI‰ýATI‰ÌUSH‰Óºè'ÌÿÿA€þ(„A€þ2„³L‰ïIÜèHÊÿÿH‰ÞL9ãrëPfDL9åtSH‰ë€; HkuïH‰ÚL‰ïH)òèÙËÿÿL9åtL‰ïè ÊÿÿH‰îëÔ€ºH5%A€þ2u[]A\A]A^ÃDI9ôvíL‰âH)ò[L‰ï]A\A]A^é…ËÿÿDºH5ßL‰ïèlËÿÿéTÿÿÿ€ºH5íL‰ïèLËÿÿé4ÿÿÿ€óúAWAVA‰ÖAULcîH5ÄATI‰üUL‰ÅSH‰ËHƒì‰T$ ºè ËÿÿA€þ(„0€|$ 2„EL‰çè-ÉÿÿE…íMcl$HÝH‰ÞI‰ÞH9ër-é‹< uA€> tH)óL9ëªf.„I9ïtuL‰û¶L{< uÍH‰ÚL‰çH)òèÊÿÿA¶< t< tA¶< t < …ƒI9ïtL‰çM‰þè ÈÿÿL‰þë°€|$ 2ºH5¸uHƒÄ[]A\A]A^A_ÃL9þsìL‰úH)òHƒÄL‰ç[]A\A]A^A_éÊÿÿDH‰ÚL‰çèÊÿÿL‰çè=ÈÿÿL‰þéEÿÿÿDºH5UL‰çèÜÉÿÿégÿÿÿ€ºH5/L‰çè¼ÉÿÿéÂþÿÿ€ºH5=L‰çèœÉÿÿé¢þÿÿ€óúAWAVA‰ÖAUATUH‰ýSHƒì8H‹\$pH‰t$ ‰L$L‹l$xD‰D$ DˆL$è†ÇÿÿH‰ïI‰ÄèËÆÿÿH…ÛH‰D$H®HDØM…í„/L‰l$(‹|$ L‰êH‰ÞèûËÿÿH‹t$(H‰ßA‰ÇèËÊÿÿ¹H=µH‰Æó¦—€ڄÒ…IAƒþ„^M…íŽUAƒþºDEò‹U ¹ƒúEÑAöÇu(Aƒþ„VAƒþ„LAöÇ„Bf.„A¾‹t$…öŽ^H‹|$A4$‰7A‹T$D‰þæ‰Ñƒá÷ƒùuA‹L$‰ÏÁïùƒá)ùƒù„±Jùƒù†í…ö„EÆD$(Aƒþ„YAƒþ‡¡H E‰òJc‘HÈ>ÿàA‹D$ƒèƒàûuA‹D$‰ÂÁêЃà)Ѓø„1‹|$ 1ÒH‰Þè«Êÿÿ1öH‰ßA‰Çè~Éÿÿ¹H=hH‰Æó¦—€ڄÒt¹H=HH‰Æó¦—€ڄÒ„˜þÿÿH‹t$ H‰ÂH‰ïH‰D$(èÏÆÿÿE…öH‹D$(…•þÿÿE1öAöÇA”ÆAƒÆéþÿÿDD‰ñƒáûƒù„ÿÿÿAƒþ…¥‹t$ H‰ÚL‰éH‰ïèÉÿÿA‹T$ƒú …¥HƒÄ8H‰ïº[H5l]A\A]A^A_éíÆÿÿD¶|$Aç¹2Eù@ˆ|$Aƒþ…§þÿÿH‰Æ¹H=qó¦—À„Àu€;:tL‰êH‰ÞH‰ïè˜ÆÿÿA‹T$ëAƒþtÅ‹t$ H‰ÚL‰éH‰ïè¸ÇÿÿA‹T$ƒú „[ÿÿÿHƒÄ8[]A\A]A^A_ÃAƒþ„ÄýÿÿAöÇ…ŒAƒþ…°ýÿÿAöÇ„ÀA‰Öéžýÿÿ„A÷Ç „ ýÿÿH‹|$‹U,A$‰éýÿÿ¾T$‹t$ M‰èH‰ÙH‰ïèéËÿÿA‹T$élÿÿÿ€‹t$ H‰ÚL‰éH‰ïèÖÅÿÿA‹T$éIÿÿÿ@A¾é#ýÿÿDH‹|$ H5;èwËÿÿ…À…¶ýÿÿHÇD$(A½HéJüÿÿ@A‹T$ƒútƒút1A÷Ç€ºDEòéÂüÿÿ@A÷Ç…«üÿÿëØf„A÷Ç…“üÿÿëÀóúAVI‰öAUA‰ÕATUSH‰ûè6ÃÿÿH‰ßH‰Åè{Âÿÿƒ}I‰ÄtbHªL‰öH‰ßè@ÄÿÿAƒýt"‹EƒèƒøvAÇD$[]A\A]A^ÃDH‰ßºH5~è¤ÄÿÿAÇD$[]A\A]A^Ãf‹E‰ÂÁêЃà)ЃøuŠºH5¬H‰ßèhÄÿÿÇE éjÿÿÿff.„óúAVI‰öAUA‰ÕATUSH‰ûèfÂÿÿH‰ßH‰Åè«Áÿÿƒ}I‰ÄtbHòL‰öH‰ßèpÃÿÿAƒýt"‹EƒèƒøvAÇD$[]A\A]A^ÃDH‰ßºH5ÆèÔÃÿÿAÇD$[]A\A]A^Ãf‹E‰ÂÁêЃà)ЃøuŠºH5ÜH‰ßè˜ÃÿÿÇE éjÿÿÿff.„óúAWAVAUI‰õATI‰üUSHƒìèãÀÿÿH‰Ã‹@ƒèƒø w9HbHc‚HÐ>ÿà@‹k…í~ ƒåº„{H5^L‰çèÃÿÿ‹kƒÅL‰îL‰ç‰kHƒÄ[]A\A]A^A_骾ÿÿf.„öC„Lc3E…öšºH5L‰çèÆÂÿÿ‹kë¨L‰çèèÀÿÿ‹Pƒú „¬‹K…Éu ƒú„ L‰çèÔÀÿÿºH5¼L‰çè€Âÿÿ‹ké_ÿÿÿ„‹k…íŽLÿÿÿºH5L‰çèQÂÿÿ‹ké0ÿÿÿf„L‰çèhÀÿÿ‹SD‹s…Òu ƒx„3Aƒæ…?ÿÿÿL‰çèQÀÿÿ‹kéðþÿÿf„‹{…ÿ…Yÿÿÿö@…Oÿÿÿ‹s…ö…Dÿÿÿ‹‰é;ÿÿÿ€L‰çèÀÿÿÇC‹ké þÿÿf„H5gL‰çè¡Áÿÿ‹ké€þÿÿf„‹k…í…éþÿÿ‹ DqþD+0ˆÚþÿÿL=³„Õþÿÿf„ºL‰þL‰çƒÅèMÁÿÿA9îuèé¯þÿÿA~HcÿèTÄÿÿBÆ0HcH‰Å…Ò~1ÉHcуÁÆD Hc9ÊîL‰çH‰îèÁÿÿH‰ïèë¼ÿÿéþÿÿfDE…ö…Äþÿÿ‹ iþ+(ˆÁþÿÿ„»ýÿÿL=DºL‰þL‰çAƒÆè´ÀÿÿD9õuçéŽýÿÿf.„óúATUSH‰ûè¾ÿÿH‰ßH‰Åèµ¾ÿÿ‹UI‰Äƒú„–v4ƒútWƒúuºH5ÏIH‰ßèVÀÿÿAƒ|$ tR[]A\Ãf„ƒúuí‹EºH5…ÀuÒH‰ß[]A\éÀÿÿ@ºH5ÿH‰ßèÀÿÿAƒ|$ u®H‰ßºH5^[]A\éä¿ÿÿ@‹EºH5Æ…Àt¥‰ÂÁêЃà)Ѓø…bÿÿÿºH5mIë‚f.„óúAVAUATA‰ÔUH‰õSH‰ûHƒì H‹8dH‹%(H‰D$1ÀHÇD$HÇD$H…ÿ„1ÀHT$H‰îèy»ÿÿ…À„ÉH‹{@H…ÿ„üH‹t$1ÀHT$èS»ÿÿ…ÀuyH‹kH…í„òH‰ïèÚ½ÿÿHx H‹C@D‹p èÂÿÿH‰ïI‰ÅH‰D$AƒÆèµ½ÿÿ1öL‰ïHP èǾÿÿ¾L‰ïE‰ðHÇÂÿÿÿÿH‰é1Àè»ÇÿÿH‹{@H‹T$1ÀH‹t$è¾ÿÿ1ÀAƒätH‹D$H‹L$dH3 %(uzHƒÄ []A\A]A^Ã@H‹{8H‰î‹G P1ÀHcÒH‰T$è̽ÿÿë¼f.„è ÁÿÿH‰ÇH‰C8éçþÿÿ€1ÀèñÀÿÿH‰ÇH‰C@éñþÿÿD¿H- é ÿÿÿè½ÿÿf.„AUº ATI‰ô¾USH‰ûH=”HƒìH‹-8Š!H‹MèïÄÿÿL9ãw9I)ÜIÑìNlcL%s„¿ H‹}L‰â¾1ÀHƒÃèÆÄÿÿL9ëuáH‹uHƒÄ¿ []A\A]é¾ÿÿf„HcÖHV~!SH‰ûH‹ Ѓþ)¾H 1ÀèvÄÿÿH‰Þ¿)[騽ÿÿ„¾Hî1ÀèMÄÿÿH‰Þ¿)[鯽ÿÿff.„@óúHƒ~(tEATUH‰ýH‰÷SH‰óè3ÅÿÿH‹s(H‰ïI‰Äè´¹ÿÿIT$ÿH‰ß¾H‰Á迸ÿÿHÇC([]A\ÃfÃff.„@óúUH‰åAWAVAUATSHìHL‹%aˆ!H‰½¨÷ÿÿA‹<$dH‹%(H‰EÈ1À…ÿ…OHÇ…È÷ÿÿÈ1ÛLµð÷ÿÿL­€ùÿÿÇ…Ð÷ÿÿL‰öL‰éM‰÷Ç…Ä÷ÿÿÇ…Ô÷ÿÿþÿÿÿH‹½È÷ÿÿfA‰H?HTþI9ׂ@I)÷M‰ýIÑýIƒÅHÿ'‡$ H='º'H‰çHFÐH’H‰•È÷ÿÿHDH‰ÂH%ðÿÿH)ÇHƒâðH‰øH9ÄtHìHƒŒ$øH9Äuëâÿt H)ÔHƒLøHD$O|-H‰¸÷ÿÿIÁåHƒàðL‰úH‰ÇH‰…Ø÷ÿÿ蛽ÿÿH‹½È÷ÿÿH‹¸÷ÿÿL‰êL4?H‹½Ø÷ÿÿH‰ÎIFIƒîHƒàøHÇH‰½¸÷ÿÿèa½ÿÿH‹µØ÷ÿÿH‹½¸÷ÿÿN|>þA‹4$Nl/ø…ö…BLµØ÷ÿÿM9÷rf¸óúH‹UÈdH3%(…¤ HeØ[A\A]A^A_]ÃDH‰¸÷ÿÿH‰µØ÷ÿÿA‹ $…ÉtH‹‡!‰Ù¾H­ H‹81Àè»ÁÿÿH´D¿4XAƒþŸ„ƒ½Ô÷ÿÿþA‹$„Ä‹•Ô÷ÿÿ…ÒŽfÇ…Ð÷ÿÿ‹Ô÷ÿÿù HcÑH Ķ<‰½Ð÷ÿÿDµÐ÷ÿÿ…À…›AþŒ‡6McöHÔB¾0;…Ð÷ÿÿ…H\F¶40E…ötbAƒþ4„, A‹$…Û…F‹Ô÷ÿÿ¸þÿÿÿH‹•è÷ÿÿ‹µÄ÷ÿÿ…ÉI‰UDÁ‰…Ô÷ÿÿIE…ö„±ƒîI‰ÅIcÞ‰µÄ÷ÿÿéÁDD‹Ä÷ÿÿE…É„Hƒ½Ä÷ÿÿuD‹…Ô÷ÿÿE…À„ L5Ó f.„Hi¿XƒøŸtƒÀ=ŒwH˜H=í€<„ÛL;½Ø÷ÿÿ„þÿÿA‹ $IƒíIƒï…É…JI¿H¿XƒøŸu®ëÉ@H!¶ A‰Î…É„BÿÿÿHcÙHˆºE‹$¶4)òH‰ðHcÒI‹tÕHÅHÀI)ÇH¹H‰µ°÷ÿÿ¶L‰îH)ÖH‰µ ÷ÿÿ‰…À÷ÿÿE…Û…z€ùNwMH&¶ÁHc‚HÐ>ÿàI‹}øI‹u1Òè*¹ÿÿI‹EH‰…°÷ÿÿ€E‹$E…ÒtH‹½Ø÷ÿÿL‰þèúÿÿH‹… ÷ÿÿH‹•°÷ÿÿH‰P‹•À÷ÿÿLhHíA¿ƒêHc҉ξÈ=Œ†`HùH¾IƒÇH‹¸÷ÿÿH‹µØ÷ÿÿéûÿÿDH‹„!L‰ñ¾1ÀHÈH‹;踾ÿÿI¿GH ÌH‹;¶4èúÿÿH‹3¿ è¸ÿÿA‹$I¿…Ò„þÿÿH‹½Ø÷ÿÿL‰þèDùÿÿéÿýÿÿ€H ¡¶…Û„þÿÿƒû4„pA‹$…À…)H‹…è÷ÿÿIƒÅÇ…Ä÷ÿÿI‰Eé.ÿÿÿfÇ…Ð÷ÿÿÇ…Ô÷ÿÿ…À„¹üÿÿH‹-ƒ!º¾H=ù H‹èÔ½ÿÿ1À‰…Ð÷ÿÿéŒüÿÿ€…À…¸H‹µ¨÷ÿÿH½è÷ÿÿèe·ÿÿ‰…Ô÷ÿÿA‹$éüÿÿfDH˜H 7f¾ f9Î…‰þÿÿH¶é…þÿÿf„Ç…Ô÷ÿÿþÿÿÿA‹4$…ö„ÙüÿÿL‹5ƒ‚!H ´ HM1À¾I‹>è6½ÿÿ‹µÐ÷ÿÿI‹>èˆøÿÿI‹6¿ è‹¶ÿÿé•üÿÿfDH‹9‚!º¾H=óH‹èà¼ÿÿé#ÿÿÿH‹‚!H‹È÷ÿÿ¾HœH‹81ÀèǼÿÿLµØ÷ÿÿM9÷‚Õúÿÿé’úÿÿfH‹Ù!H žHžH‹81À茼ÿÿH‹µ!‹µÐ÷ÿÿH‹8è×÷ÿÿH‹ !¿ H‹0èÓµÿÿéûÿÿfDH=è,½ÿÿéÆûÿÿ€H‹i!º¾H=ÍH‹è¼ÿÿéŒøÿÿHqHz ƒé¾D·XH‹&!H‹81Àèì»ÿÿHåHÞ¶H‰ÃH¾H‹u!H‰•˜÷ÿÿ„ÀxWL‰­÷ÿÿA‰ÝHou!€H‹ ÃH‹Í€!HžAƒÅ¾H‹81À胻ÿÿIcÅH yH¾„ÀyÈL‹­÷ÿÿHc…À÷ÿÿH‹½˜÷ÿÿ¾H”H‹ ÇH‹t€!H‹81Àè:»ÿÿA€þN‡ØûÿÿH A¶ÆHc‚HÐ>ÿàI‰ÅIcÞéüÿÿI‹EøH‰…°÷ÿÿé¥ûÿÿI‹uøI‹UH‹½¨÷ÿÿ虳ÿÿH‰…°÷ÿÿé…ûÿÿH‹…¨÷ÿÿI‹}øI‹u‹P膴ÿÿI‹EH‰…°÷ÿÿé^ûÿÿHc…Ð÷ÿÿHht!¾H‹ ÂH‹È!HÂH‹81À臺ÿÿé†ùÿÿH‹…¨÷ÿÿƒx…ûÿÿ‹pI‹}èUµÿÿéöúÿÿI‹uðI‹UH‹½¨÷ÿÿèü²ÿÿH‰…°÷ÿÿéèúÿÿI‹}ðéÂúÿÿI‹uøH‹½¨÷ÿÿè7¯ÿÿI‹EøH‰…°÷ÿÿé¿úÿÿH‹…¨÷ÿÿI‹}ðI‹u‹PèÀ³ÿÿI‹EH‰…°÷ÿÿé˜úÿÿL‹µ¨÷ÿÿI‹uL‰÷è¯ÿÿI‹uðH‰ÃL‰÷è~¯ÿÿH‰ÞH‰Ç裳ÿÿH‰…°÷ÿÿé_úÿÿH‹¨÷ÿÿI‹uH‰ßèT¯ÿÿH‰éDúÿÿI‹uðH‹½¨÷ÿÿ蜮ÿÿI‹}ðI‹uè¿°ÿÿI‹}覹ÿÿIÇEI‹EðH‰…°÷ÿÿéúÿÿ¾H=”èíµÿÿH‰ÃH‹…¨÷ÿÿƒx„¸¾H=®蘴ÿÿH‰CL‹µ¨÷ÿÿH‰ÞL‰÷è®ÿÿI‹uH‰Ãé0ÿÿÿH‹…¨÷ÿÿÇ€Œé˜ùÿÿI‹uH‹½¨÷ÿÿè®ÿÿH‰ÇèȶÿÿH‰…°÷ÿÿétùÿÿI‹uH‹½¨÷ÿÿè|°ÿÿH‰…°÷ÿÿéXùÿÿ1Àè9­ÿÿH‰…°÷ÿÿéEùÿÿI‹}è„¶ÿÿH‰…°÷ÿÿé0ùÿÿI‹]ðH‹{(H…ÿ„¢I‹uè>®ÿÿéûþÿÿ1Àèb®ÿÿH‰…°÷ÿÿéþøÿÿ¾H=Œÿèå´ÿÿH‰ÃH‹…¨÷ÿÿƒx„n¾H=¦ÿè³ÿÿH‰CH‰°÷ÿÿ鏸ÿÿH‹…¨÷ÿÿI‹]ƒx„Y¾H=zÿèZ³ÿÿH‰CëÈI‹uH‹½¨÷ÿÿè„­ÿÿH‰…°÷ÿÿépøÿÿI‹uH‹½¨÷ÿÿèh­ÿÿI‹}ðH‰Æè|­ÿÿI‹EðH‰…°÷ÿÿéDøÿÿI‹}ðI‹uè_­ÿÿI‹EðH‰…°÷ÿÿé'øÿÿM‰þL-•IƒîL;µØ÷ÿÿ„DõÿÿA‹<$…ÿtçH‹…|!H §HOþ1À¾H‹;è8·ÿÿI¿H‹;A¶tè†òÿÿH‹3¿ 艰ÿÿë¢H‹@|!º¾H=yH‹èç¶ÿÿé²øÿÿH= èÆ·ÿÿ¸éÅôÿÿ1Àé¾ôÿÿI‹}è¼´ÿÿH‰C(éUýÿÿºH58þH=Ëýè;¬ÿÿH‰Cé†þÿÿºH5!þH=ªýè¬ÿÿH‰CéeþÿÿºH5öýH=‰ýèù«ÿÿH‰Cé<ýÿÿè;®ÿÿf.„óúSH‰óHƒìH‹H…ÀuÿWH‰Hƒ{tHƒÄ[Ãf„H‰ßH‰D$èC¶ÿÿH‹D$HƒÄ[ÄóúATUSH‰ÓHƒì dH‹%(H‰D$1ÀHƒzHÇD$t!H‹L$dH3 %(H‰Ø…®HƒÄ []A\ÃI‰üH‰sH‹¿ H‰õH…ÿtHT$èªÿÿ…ÀuLI‹¼$˜H…ÿt_1ÀHT$H‰îèpªÿÿ…ÀtH‹|$Hƒÿt茵ÿÿI‹¼$˜H‰ÚH‰î1À臭ÿÿéqÿÿÿfƒ{t®H‹D$H‰ÞL‰çH‹H‰AÿT$ë–f1À艩ÿÿH‰ÇI‰„$˜ëèç¬ÿÿ€óúUH‰õSH‰ûHƒì(H‹¿˜dH‹%(H‰D$1ÀH‰t$H…ÿtW1ÀHT$Ht$莬ÿÿ…ÀtH‹|$HƒÿtèÚ´ÿÿH‹»˜1ÀºH‰îèÔ¬ÿÿH‹D$dH3%(uHƒÄ([]ÃDèã¨ÿÿH‰ÇH‰ƒ˜ë˜èB¬ÿÿfóúAUATI‰ôUH‰ýSHƒìH‹¿˜dH‹%(H‰D$1ÀHÇ$H…ÿ„´I‰å1ÀL‰êè©ÿÿ…ÀuSH‹$H…Û„–Hƒ{t/L‰çè·¨ÿÿH‹L$dH3 %(H‰Ø…›HƒÄ[]A\A]ÃDL‰cëÓf.„H‹$Hƒûu·H‹½ H…ÿtR1ÀL‰êL‰æè¨ÿÿ…Àu†L‰æH‰ïÿU(H‹½ L‰æH‰$H‰Â1À踫ÿÿé`ÿÿÿL‰æH‰ïÿU(H‰ÃH‰$éUÿÿÿ1ÀèÁ§ÿÿH‰ÇH‰… ë›è «ÿÿóúATA‰ÔUH‰ýH‹~SH‰óH…ÿt èá§ÿÿHÇCE…äu H‰k[]A\ÃH‰ïè¬ÿÿH‰ïH‰C[]A\é°§ÿÿóúUH‰ý~SHcÿ‰óHƒìèÆ®ÿÿHcÓH‰îH‰ÁH¸x-privatH‰¸e:H‰Ïf‰AÆA 軫ÿÿHƒÄ[]Ã@óúAVI‰öAUI‰ýATUHcêSè&ªÿÿH|I‰Äèi®ÿÿL‰âL‰îÇtag:H‰ÃHxèq­ÿÿ¸:H‰êL‰öH‰ßfB‰D#èX«ÿÿ[]A\A]A^Ãff.„@óú¸ÃfDóú€?~w'¶H- Hc‚HÐ>ÿà€ù,„ôf.„HtùÃóúóúóúóúóúóúóúóúóúóúóú€luÍHƒÇóú€H.ùHùHOÂÀ¶WHO€ú0„‡Ñ€ú.u„¶GHWÿàD¶GHWÿà@H,õ€ú9~ÌÃûÿÿH=Ãf„ÿàfD€UHpó„4ÃfDÀ€L…Öùÿÿ€SHFó„PÃ@À€lH(ó„¯ùÿÿÃfD€sHó„¼ûÿÿÀú:……ùÿÿH‰Êf¶B<0Œtùÿÿ<5Ž\<9dùÿÿHƒÂ¶BHJ<.„r<:tÇ„ÀH¹H·òHDÂÀ¶JHƒÂ€ù:‡ùÿÿH58 HcŽHð>ÿàfDHQ¶IHa„É„øøÿÿ€ùx„fýÿÿë¾fD€SHPò„üúÿÿÀLH>ò„SöGÿà¶QHƒÁëÖ¾Jƒé0ƒù †Ã€yH ìHÿHOÂÃóú¾qH‰ÊHîëƒî0ƒþ ‡nòÿÿ¾qƒî0ƒþ ‡^òÿÿ¶qHÖþ@„ö„JòÿÿH·ë@€þ:…9òÿÿ¾qƒî0ƒþ ‡)òÿÿ¾RHƒÁƒê0ƒú †rÿÿÿÀz :… òÿÿ¾J Hsëƒé0ƒù ‡óñÿÿ¾J ƒé0ƒù ‡ãñÿÿ€z :…Ùñÿÿ¾J ƒé0ƒù ‡Éñÿÿ¾Jƒé0ƒù ‡¹ñÿÿHJ¶R€ú96€ú0£ñÿÿ€ú.u¶QHƒÁƒê+€ú/‡ƒñÿÿH5H¶ÒHc–Hð>ÿà€úZuÛ€yHéýHÓêHNÂÃHØHƒÁ¶ƒè+ÿàff.„fóúATA‰ôUH- êS‹GH‰ûƒøt3H-¥ê…Àt(H-#êƒøuH‹G H‹pH‹xè[ÿÿH‰Å„H‹{H…ÿtèr—ÿÿHÇCH‰ïAƒüt!è<šÿÿH‰ïH‰ÆèžÿÿH‰C[]A\ÄèšÿÿH‰îH=Œé‰Âèú—ÿÿH‰C[]A\ÃóúH9÷„£H…ÿtH…öu 1ÀÃfDATUH‰õSH‰ûHƒìèÍ™ÿÿH‰ßH‰Æè’ÿÿH‰ïI‰Äè·™ÿÿH‰ïH‰Æè|ÿÿ¾#L‰çH‰Ãè šÿÿH…Àtƾ#H‰ßè÷™ÿÿH…ÀtÆH‰ÞL‰çèœÿÿL‰ç‰D$ 舖ÿÿH‰ß耖ÿÿ‹D$ HƒÄ[]A\øÃf.„óúAVAUATUSH‰ûè,™ÿÿ¶;H,O߀ùYw[H5Ò¶ÉHc ŽHñ>ÿá¾Jƒé0ƒù w;¾Jƒé0ƒù w/¶J€ù-…°¾J ƒé0ƒù w¾J ƒé0ƒù w €z :„H‰Þ‰ÂH=1è[]A\A]A^é™–ÿÿf„¶{HsWÔ€úNwÎH ­¶ÒHc‘HÊ>ÿâ@¶SJÔ€ùNwªH5ŶÉHc ŽHñ>ÿá„H{pÿ[]A\A]A^é,˜ÿÿ@¶{HsWÔ€úN‡bÿÿÿH ¹¶ÒHc‘HÊ>ÿâ¶SHs€úp„ƒê-€úM‡1ÿÿÿH ĶÒHc‘HÊ>ÿâ€H{ƒê,€úN‡ÿÿÿH ѶÒHc‘HÊ>ÿâ@H‰þH~¶VëÏH‰þ¶VHƒÆë”H‰þLvM‰õI)ÝI}èÊ›ÿÿIUÿH‰ÞÆI‰ÄH‰ÇèÕ˜ÿÿL‰á‹HƒÁ‚ÿþþþ÷Ò!Ð%€€€€té‰ÂL‰çÁê©€€DÂHQHDʺ2‰Æ@ÆH¾yaml.orgHƒÙL)áID AÆ .H‰0L‰öf‰P H‰êÇ@,200L)òèâ”ÿÿL‰çH‰Ãè”ÿÿH‰Ø[]A\A]A^ÃH‰þD¾Vƒê0ƒú ‡þýÿÿ¾Vƒê0ƒú ‡îýÿÿ¾Vƒê0ƒú ‡Þýÿÿ¾Vƒê0ƒú ‡Îýÿÿ¶V€ú-„á€ú/…¸ýÿÿHƒÆLfM‰æI)ÞL‰÷è´šÿÿIVÿH‰ÞÆH‰ÇI‰Åè¿—ÿÿH‰êL‰ïL‰æL)âè.”ÿÿL‰ïH‰ÃèS“ÿÿéGÿÿÿfDH‰þH=jLŸ ¶VHN€úZ:€úA} ƒê0€ú ‡7ýÿÿ¶QHqƒê,€úN‡#ýÿÿ¶ÒHc—Hú>ÿâ„€ú_tÒŒýÿÿƒêa€úvÄéöüÿÿ„H‰Î¶VHNƒê-€úM‡×üÿÿ¶ÒIcLÂ>ÿâ@¶SHs€ú.„RÿÿÿŽÁ€ú/„Ûýÿÿ€úg…`ýÿÿ¶SHs€ú.„)ÿÿÿŽ˜€ú/„²ýÿÿ€ú:…7ýÿÿ¾S‰Ñƒê,ƒú†büÿÿHSH=Ù H5 ƒé,€ùN‡Düÿÿ¶ÉHc Hù>ÿáf„H‰ñéïþÿÿ„¶SHs€ú.„ªþÿÿŽ€ú/„3ýÿÿ€úr…¸üÿÿ¶SHs€ú.„þÿÿŽð€ú/„ ýÿÿ€úi…üÿÿ¶SHs€ú.„XþÿÿŽÇ€ú/„áüÿÿ€úv…füÿÿ¶SHs€ú.„/þÿÿŽž€ú/„¸üÿÿ€úa…=üÿÿ¶SHs€ú.„þÿÿŽu€ú/„üÿÿ€út…üÿÿ¶SHs€ú.„ÝýÿÿŽL€ú/„füÿÿ€úe…ëûÿÿ¶S Hs €ú.„´ýÿÿŽ#€ú/„=üÿÿ€ú:…ÂûÿÿH‰ßH‰Æ[]A\A]A^é~—ÿÿ¶JHƒÂéþÿÿHƒÂ¶ ƒé-€ùM‡Ìúÿÿ¶ÉHc ŽHñ>ÿá¾Jƒé0ƒù ‡¯úÿÿ¾Jƒé0ƒù ‡Ÿúÿÿ¾Jƒé0ƒù ‡úÿÿ¾Jƒé0ƒù ‡úÿÿ¶J€ù-„+úÿÿ€ù:„jÿÿÿédúÿÿH=S H5ˆ HJ¶R€úZ €úA} ƒê0€ú ‡4úÿÿH‰ÊHƒÂ¶ ƒé,€ùN‡úÿÿ¶ÉHc Hù>ÿáHƒÂ¶ ƒé-€ùM‡þùÿÿ¶ÉHc ŽHñ>ÿá€ú,„×ûÿÿé£úÿÿ¾Vƒê0ƒú ‡Ðùÿÿ¾Vƒê0ƒú ‡Àùÿÿ¶V€ú-t2HƒÆ€ú/„öûÿÿé¥ùÿÿ€ú_„hÿÿÿŒ–ùÿÿƒêa€ú†Vÿÿÿé…ùÿÿ¾V ƒê0ƒú ‡uùÿÿ¾V ƒê0ƒú ‡eùÿÿ€~ /…[ùÿÿHƒÆ éžûÿÿ@óúS‰û¿0èO–ÿÿ‰XHÇHÇ@HÇ@HÇ@([Ãff.„óúS¿(è–ÿÿ¿@ÇH‰ÃHÇ@ HÇ@èî•ÿÿ¿@H‰Cèà•ÿÿ1ÿH‰Cè™ÿÿH‰X [Ãff.„@óúS¿ 豕ÿÿ¿@ÇH‰ÃHÇ@HÇ@莕ÿÿ¿H‰Cè°˜ÿÿH‰X [Ãf.„óúS¿èa•ÿÿ¿HÇ@H‰ÃHÇ@Çèn˜ÿÿH‰X [ÄóúAV1ÀAUA‰ÕATI‰üUH‰õSèdÿÿH}L‹p H‰Ãè•ÿÿH‰êL‰æI‰FH‹C H‰hH‹C D‰(H‹C H‹xèþ“ÿÿH‹C H‹@Æ(H‰Ø[]A\A]A^ÃfDóúU‰õSH‰ûHƒìè\ÿÿHƒÄ‰êH‰ßH‰Æ[]é)“ÿÿf„óúAVA‰ÎAUI‰õATUH‰ÕSL‹g H‰ûM…ät2I‹|$è5ÿÿH‹C HÇ@H‹C HÇ@H‹C HÇ@L‹c H}è4”ÿÿH‰êL‰îI‰D$H‹C H‰hH‹C D‰0H‹C H‹xè-“ÿÿH‹C H‹@Æ([]A\A]A^ÄóúATA‰ÔUH‰ýH‰÷SH‰óè‡ÿÿD‰áH‰ÞH‰ï[H‰Â]A\é"™ÿÿfóúATI‰üUSH‹G H‹xH‹hH_Hý¶H‰ß„Àt<,tHƒÃ¶H‰ß„Àuî[]A\ÃI‹D$ H‰êHƒíH)ÚHƒÃHƒhH‰Þè°•ÿÿë¼ff.„óúH‹G H‹@ÃóúSH‹G H‰ûH‹xèû‹ÿÿH‹C HÇ@H‹C H‹xèâ‹ÿÿH‹C ¿@HÇ@H‹[ HÇC HÇCèè’ÿÿ¿@H‰CèÚ’ÿÿH‰C[Ã@óúAUI‰õATI‰ÔUSHƒìH‹_ H‹k H‹sH‹{HEH‰C H9ðL‰,ïH‹CL‰$èHƒÄ[]A\A]ÄHƒÆH‰sHÁæèß“ÿÿH‹{H‰CH‹CH4ÅèÆ“ÿÿH‹{H‰Cë­ff.„óúAT1ÀI‰ôUH‰ýSèËŠÿÿL‰âH‰îH‰ÃH‰Çèj–ÿÿH‰Ø[]A\ÃfóúUSHƒìH‹n H‹U H…Ò~sH‹_ H‹C H‹KH‹{HÂH9Ê~H‰ÎfDHƒÆH9ò÷H9ñ|R1Òë fDH‹{H‹MH‹ ÑH‰ ÇH‹EH‹K H‹4ÐH‹CHƒÂH‰4ÈH‹C HƒÀH‰C H9U ÆHƒÄ[]ÀH‰sHÁæèÛ’ÿÿH‹{H‰CH‹CH4ÅèÂ’ÿÿH‰CHƒ} ~ÁH‹{H‹C épÿÿÿf.„óúH‹G H‹@ ÃóúH‹G …öu H‹@H‰ ÐÃH‹@H‰ ÐÃff.„@óúH‹G …öu H‹@H‹ÐÃH‹@H‹ÐÃff.„@óúSH‹G H‰ûH‹xè{‰ÿÿH‹C ¿@HÇ@H‹[ HÇCHÇCèÿÿH‰C[Ãff.„óúATI‰ôUSH‹_ H‹kH‹sH‹CHUH‰SH9òL‰$è[]A\ÀHƒÆH‰ÇH‰sHÁæ蔑ÿÿH‰CL‰$è[]A\ÀóúU1ÀH‰ýSHƒìè ŠÿÿH‰îH‰ÇH‰ÃèΉÿÿHƒÄH‰Ø[]Ã@óúH‹G H‹@ÃóúH‹G H‹@H‰ðÃff.„@óúH‹G H‹@H‹ðÃff.„@óúH…ÿ„ÛS‹GH‰ûƒø„“…Àt?ƒøt [ÄH‹G H…ÀtíH‹xèˆÿÿH‹C HÇ@H‹C HÇ@ë/@H‹G H…Àt½H‹xèî‡ÿÿH‹C HÇ@H‹C H‹xèÕ‡ÿÿH‹C HÇ@H‹{ èÀ‡ÿÿHÇC [ÃfDH‹G H…À„iÿÿÿH‹x蚇ÿÿH‹C HÇ@H‹{ è…‡ÿÿHÇC [ÃÀóúSH‰û蓉ÿÿH‹{H…ÿt èU‡ÿÿHÇCH‹{H…ÿtè?‡ÿÿH‰ß[é6‡ÿÿfDóúATI‰üUH‰ÍSHïH‹NH‹FH…ÒxbH)êH…Ò~BHÊH‰VH9ÂvH‰FH‰ÂH9ÑsH‰ÓH‰ÎH)ËH‰ÚHÝè.ÿÿI<,ÆH‰è[]A\ÀH9ÈrÅÆH‰è[]A\ÄH‰ÊëHƒÂH‰V€zÿ t£H9ÐwíëœóúUH)ÊH‰ýH<SH‰ËHƒìH‹¾輇ÿÿHØÆDHƒÄ[]Ãff.„fóúHƒþtHƒìH‰÷誑ÿÿ1ÀHƒÄÃ1ÀÃff.„fóúATA‰ôUH‰ý1ÿSèKÿÿE‰àH‰é¾H‹iV!Hz1ÀH‹;è(‘ÿÿH‹;è ÿÿè;†ÿÿff.„óúUH‰ýH~SH‰ó¾HƒìèòŠÿÿH‰ÚH‰îH‰Çèô‹ÿÿHƒÄ[]Ãff.„fóúSH‹G@H‰ûH…ÀtgÆHÇHÇCHÇCHHÇCPHÇCXHÇC`HÇChHÇCpHÇCxHǃ€Hǃˆ[ÃDH‹8¾èJŠÿÿH‰C@ë…@óúH‰wÀóúSH‰òHƒìH‹‡¨H…Àt ‹H H‰Ç1ÀYHcóèEˆÿÿHƒÄ‰Ø[ÃDH‰<$H‰t$èz‹ÿÿH‹<$H‹T$H‰‡¨ëÀ„óúH‹¿¨H…ÿt1À鹄ÿÿf„1ÀÃff.„fóúSH‰ûH‹¿˜H…ÿt)H‹5UT!1Ò1Àèl‡ÿÿH‹»˜1Àè‘ÿÿHǃ˜H‹» H…ÿt)H‹5 T!1Ò1Àè7‡ÿÿH‹» 1ÀèéÿÿHǃ [Ãff.„óúH‰wÀóú1À…ö•À‰GÃóú1À…ö•À‰GÃóúH‰w ÀóúH‰w(Àóú‰w0Äóú‹‡¸ƒèH˜HÁàH‡°ÃDóú‹‡¸ƒø~!ƒè‰‡¸H˜HÁàH‡°H‹xé2ƒÿÿfÃff.„@óúUSH‰ûHƒì‹‡¸ƒø~„H‰ß踋ÿÿ‹ƒ¸ƒøíH‹“°ƒøuÇBHƒÄ[]Ãǃ¸1öH=?ÕÇÿÿÿÿH‹ƒ°Ç@H‹«°èM‰ÿÿH‰EH‹“°ÇBHƒÄ[]Ã@óúS¾¿È謇ÿÿ¿H‰Ãè‰ÿÿH‰ßHǃH‰ƒ°H¸H‰ƒ¸Hǃ¨Hǃ˜Hǃ HÇCHÇC0HÇC8HÇC@èËÿÿH‰Ø[Ãff.„óúAVAUATA‰ÔU‰õSHc—¸H‰û‹·¼H‹‡°J9ñ…HÁâ‰,Hcƒ¸HÁàHƒ°Ç@Hc«¸L‹«°EÿHÁåH˜LíHÁàM‹tL‰÷èB„ÿÿL‰÷H‰ÆèˆÿÿH‰EHcƒ¸HÁàHƒ°D‰`ƒƒ¸[]A\A]A^ÃDƒÆ‰·¼HcöH‰ÇHÁæè°‰ÿÿHc“¸H‰ƒ°éPÿÿÿff.„fóúS‹G4H‰û…ÀtƒøuH‹»H…ÿtèË€ÿÿHǃ[Ãff.„óúSH‰ûH‹¿¨H…ÿt1Àè…ÿÿHǃ¨H‰ßè’‡ÿÿH‰ßèJŠÿÿH‹ƒ°H‹xèj€ÿÿH‹ƒ°HÇ@H‹»°èO€ÿÿH‹{@Hǃ°H…ÿt è6€ÿÿHÇC@H‰ßèV…ÿÿH‰ß[é€ÿÿff.„fóúATI‰ôUH‰ÕSH‰ûè*…ÿÿH‰ßè’‚ÿÿÇC4¿è‡ÿÿH‰ƒL‰ H…ítH‰h[]A\Ãf„H‹-O!H‰h[]A\ÃóúAUI‰ÕATI‰ÌUH‰ýSH‰óHƒìèÁ„ÿÿH‰ïè)‚ÿÿÇE4¿ 訆ÿÿH‰H‰XLëH‰…H‰XM…ätL‰`HƒÄ[]A\A]ÀL‹%ÑN!L‰`HƒÄ[]A\A]ÃfóúATI‰ÔUH‰ýH‰÷SH‰óè÷ÿÿL‰áH‰ÞH‰ï[H‰Â]A\é2‹ÿÿfóúATUSH‹w`H…ötH‹oxH)õxH‹G@I‰ôI)ÄuH‰è[]A\Ãf1í[H‰è]A\ÃfDH‰ûH‰êH‰Çè2ˆÿÿH‹C@H‰C`L‰àH÷ØHCpHChHCXHCxHCPHCHH‰è[]A\Ã@óúHƒhH‹G@tHðH‰GxÃf„H‰GhH‰GPH‰GHH‰GpHðH‰GxÄóúUSH‰ûHƒì‹G4…ÀtD1íƒøu"è €ÿÿL‹ƒH‹{@ºÿH‰ÁL‰ÆAÿPH‰ÅH‰îH‰ß踀ÿÿHƒÄH‰è[]ÃfDèãÿÿL‹ƒH‹{@ºÿH‰ÁL‰ÆAÿPH‰ÅëÁ@óúUH‰õSH‰ûHƒì‹G4…ÀtIƒøu<èŸÿÿL‹ƒH‰êH‹{@H‰ÁL‰ÆAÿPH‰ÅH‰îH‰ßè9€ÿÿHƒÄH‰è[]À1íëà@è[ÿÿL‹ƒH‰êH‹{@H‰ÁL‰ÆAÿPH‰Åëºff.„óúSH‰ûè3„ÿÿH‰ßèë†ÿÿH‰ß裈ÿÿH‹[Ãff.„óú‹—€H‹OhI‰ð1ÀH+OPH5Šù¿éè…ÿÿ„óúUSH^ÿHƒìHƒûwLH…ÿtG¶<0tp<-tLH‰óH‰ýHƒû~Pèk‰ÿÿºH‹¸ë@ƒÂHcÂH9Ø}-H¾DöDAuèHƒÄ1À[]À€0Hou°ëä@HƒÄ¸[]Ã@1ÀHƒþ”ÀHƒÄ[]Ãóú1ÀH9Ö”ÀÀÃóú¾HO…Àt$1Ò€iÒåHƒÁ¾Aÿ…Àuì‰ÐÁøÐÃff.„óú1ÀH9÷•ÀÃóú‰øÃf„AVAUI‰õATUH‰ýSD‹7ANƒùŽÂº¸ëfDƒÀÒƒø„”9Ñ}îH˜HUøH‹<‰ûHcÿ¾袀ÿÿI‹}I‰ÄE…ö~SAFÿE1ÀL Å€J‹ H…Ét+€‹1ÒH‹q÷óIÔH‹H‰QH‰H‰ñH…öuàI‹}IƒÀM9ÁuÃèþzÿÿ‰][M‰e]A\A]A^ÃHÇÇÿÿÿÿ‰ûétÿÿÿ¿ » éeÿÿÿóúAUATI‰üUSHƒìƒþ~~º¸ëfDƒÀÒƒøtV9Ö}òH˜Hq÷H‹,ÂA‰íHcí¿è­ÿÿH‰ï¾L‰ H‰ÃD‰hÇ@ èŸÿÿH‰CHƒÄH‰Ø[]A\A]ÃDHÇÅÿÿÿÿA‰íëµ½ A½ ë¨ff.„@óú1ö1Àé#|ÿÿóúH=¥J!1Àéþ…ÿÿff.„óú‰þ1ÀH=J!éì{ÿÿff.„óúH=UJ!1Àé¾…ÿÿff.„óú‰þ1ÀH=1J!é¬{ÿÿff.„óúATI‰üUS‹WH‹G…Ò~:1í„HcÕH‹<ÐH…ÿt@H‹_èWyÿÿH‰ßH…ÛuïI‹D$ƒÅA9l$ÐH‰Çè8yÿÿ[L‰ç]A\é,yÿÿff.„óúAV1ÀI‰þAUI‰ÕATI‰ôUSH‹H‰÷ÿR1Ò‰ÅA÷vI‹FH‹ÐH…Ût{9+u:H‹sL9ætOI‹1ÀL‰çÿ…Àu#ë?fDH‹pL9æt'I‹1ÀL‰çÿ…ÀtH‹[H‹CH…Àt49(uïëÖfDH‹[H…Ût¸M…ítH‹SI‰U[]A\A]A^Ã@[1À]A\A]A^ÃDóúAWI‰ÿ1ÀAVI‰ÖAUATI‰ôUSHƒìH‹H‰÷ÿRA‹O1Ò‰Å÷ñI‹GH‹ÐL,ÕH…Ût9+u:H‹sL9ætOI‹1ÀL‰çÿ…Àu#ë?fDH‹pL9æt'I‹1ÀL‰çÿ…ÀtH‹[H‹CH…Àt49(uïëÖfDH‹[H…ÛtL‰sHƒÄ¸[]A\A]A^A_ÀA‹OA‹G ™÷ùƒø@¿ è¶~ÿÿMo‰(L‰`L‰pI‹UH‰PI‰E1ÀAƒG HƒÄ[]A\A]A^A_ÃfD1ÀIwIèûÿÿ‰è1ÒA÷wL,ÕëŸff.„@óúAV1ÀAUATI‰ÔUH‰õSH‹H‰ûH‰÷ÿR‹KA‰Æ‹C ™÷ùƒø?D‰ð1Ò÷ñA‰Õ¿ è ~ÿÿH‹SD‰0JêH‰hL‰`H‹ H‰HH‰ƒC []A\A]A^Ã1ÀHsH{èáúÿÿD‰ð1Ò÷sA‰Õë¯@óúAVAUI‰ýATUSHƒì‹_¿è }ÿÿH…À„ÏóAoUH‰Å‰ß¾I‹EH‰Eè‡{ÿÿH‰EH…À„¶…ÛŽ©DsÿE1äIÁæJÇ I‹EJ‹ H…Ûu(ë`óoLçóoKHH‹H‰PH‰H‹[H…Ût:¿ è}ÿÿH‹}H…ÀuÇH‰D$èÍuÿÿH‰ïèÅuÿÿH‹D$HƒÄ[]A\A]A^ÃM9æt"H‹EIƒÄéwÿÿÿfDHƒÄ1À[]A\A]A^ÃH‰èëÄH‰ïH‰D$èwuÿÿH‹D$ë°óúAV1ÀAUI‰ýATI‰ÔUH‰õSH‹H‹>ÿR1ÒA÷uI‹EL4ÕLðH‹H…Û„×H‹}H‹sH9÷tI‹U1Àÿ…ÀucI‹ELðH‹SH‰Aƒm M…ätH‹CI‰$H‹CH‰ßH‰Eèætÿÿ[¸]A\A]A^ÄH‹xH‹uH9÷t/I‹U1Àÿ…ÀtH‹[H‹CH…ÀuÚ1À[]A\A]A^ÀH‹CH‹PH‰SAƒm M…ätH‹PI‰$H‹PH‰ÇH‰Uèjtÿÿ[¸]A\A]A^Ã@M…ät©IÇ$1À럀óúAV1ÀI‰þAUI‰ÕATI‰ôUH‰ÍSH‹H‹>ÿR1ÒA÷vI‹FH‹ÐH…Ûtzf.„H‹{H9ïtI‹4$H9÷t&I‹1Àÿ…ÀtH‹[H…ÛuÚ[1À]A\A]A^ÀAƒn H‹CI‰$M…ítH‹CI‰EH‰k¸H‰k[]A\A]A^ÄM…ít±[1À]IÇEA\A]A^Äóú‹G…ÀŽÁAWAVE1öAUATI‰ôUH‰ÕSH‰ûHƒìIcÆH‹SE1íH ÅH‰L$L‹<ÂM…ÿtH1ÀI‹wI‹H‰êAÿÔƒøt=…ÀtNƒøuÝI‹GM…ítPI‰EI‹GL‰ÿH‰$èìrÿÿL‹<$ƒk M…ÿu¸AƒÆD9sŽHƒÄ[]A\A]A^A_ÃfDM‰ýM‹ë‹€H‹SH‹L$H‰ ë¥Ãff.„@óúUH‰ò1ÀH5OöÿÿSH‰ûHƒì‹o èŸuÿÿ‰k HƒÄ[]ÃDóúSH‰ûH‹ChH‹SxH)ÂH‰C`Hƒú~s¶€ú t€ú t~„ÒtWHƒÀH‰ChëЄóúHPH‰ShH‰Sp¶@< „< u%H‹ChHPH‰ShH;SxuH‰ßè¶uÿÿH‹Shf€: t;H‹C`H‰Ch[ÃH‰ßè˜uÿÿH‹Ché|ÿÿÿ€HPH‰Sh€x …NÿÿÿfDHƒÂH‰ShH‰SpH;Sxt¶< …ÿÿÿH‹ShëÝDH‰ßè@uÿÿH‹ShëÜf.„óúWЀúF‡ H ï¶ÒHc‘HÈ>ÿà@1ÀÃD¸Ãf.„¸Ãf.„¸Ãf.„¸ Ãf.„¸ Ãf.„¸ Ãf.„¸ Ãf.„¸ Ãf.„‰øÃff.„fóú¶¸€ú t1À€ú tÀ1À€ ”ÀÀÃ@óúé}ÿÿ€óúAWI‰÷AVAUATUSHƒìXH‹¬@!Hƒ~hH‰|$H‰0„á A‹Ÿˆ…Û…²I‹GhE1äI9GPtUH-òîL‰ÿèFsÿÿ‹pI‰Å…öuÇ@I‹GhI‹WxH)ÂI‰G`Hƒú~`€8}HP‡s ¶HcLHé>ÿáDI‹WxA‰ÜH-ŽðH)ÂI‰G`HƒúŽ¡ €8.‡`¶HcT•Hê>ÿâf.„L‰ÿèHsÿÿI‹Ghë’fALJˆHƒÄX‰Ø[]A\A]A^A_Ã@I‰WhE;eŽfA‹Eƒèƒø†"ÿÿÿºD‰æL‰ÿ» è»oÿÿI‹G`I‰Ghë¬I‰WhL‰ÿèÄwÿÿI‹G`¾ë–I‰WhE;e®L‰ÿè&rÿÿºL‰ÿ‹0ƒÆètoÿÿI‹G`¾écÿÿÿ„I‰WhI‰Wp¶@ƒè ð¶ÀHcHÈ>ÿàf„L‰ÿèXrÿÿI‹Wh@€: …GHƒÂI‰WhI;Wxuéë×€I‰WhI‰Wp¶H€ù „›€ù „‹€ù „žf„E;eæþÿÿ¿dèLuÿÿL‰ÿI‰ÆI‹G`I‰GhèIqÿÿL‰ÿH‰D$èÿàI‰WhE;e²üÿÿ¿dH‰T$1ÛA¼dè sÿÿH‹T$H‰ÅI‰ÖI‹GxM‰w`L)ðHƒøŽçA¶Mn< „jŽe< „+<'…M‰ohA€~'…RIƒÆDkM‰whE9ìަ"HcÛIcÅÆD'D‰ëÆDëŒ@I‰Wh¶@ƒè-ÿàI‰WhL‰ÿèäwÿÿéûÿÿ€I‰WhE9eŒÊûÿÿ¿dH‰T$A½1Ûè#rÿÿH‹T$D‰l$A¼dM‰ýH‰ÅI‰×I‹ExM‰}`L)øHƒøŽsA¶IG€ú „‹è„Ò„ã€ú …\I‰EhI‰EpA¶G< „ü"< „¬!< „¤!M‹u`L‰÷èwÿÿH˜LðI‰EPI;EHv Aƒ…€I‰EHI‹EhI9ƃ!IƒÆL‰÷èpÿÿ…Àtãë¾fI‰Wh¿d1íA¾dH‰T$HÛîè>qÿÿH‹T$I‰ÄI‹GxI‰WXH)ÐHƒøŽ!¶< „–  „Àt< …ä I‹G`I‹WXHƒÀI‰WhH9„ L‰ÿLcõL‰ãèílÿÿA€<$^O,4I‰Çué‘f.„€{^„¾ H‰ëHkI9íwêH‹D$»L‰ éúÿÿ„I‰WhA‹M…ɉ˜I‹G`I‰GhéÞùÿÿI‰WhI‰Wp¶@< „4 < „ < „ M‹g`L‰çèÀuÿÿH˜LàI‰GPI;GHv Aƒ‡€I‰GHI‹GhI9ă0IƒÄL‰çè¼nÿÿ…Àtãë¾fDI‰Wh¶@ë fD¶< t< …£øÿÿI‹GhHƒÀI‰GhI;GxußL‰ÿèglÿÿI‹GhëÑI‰Wh€x …RúÿÿHƒÂI‰WhI‰WpI;Wx„±¶é0ÿÿÿ@HPI‰WhI‰Wp€x.uóúHPI‰Wh€x.„p I‹G`I‰GhéøÿÿHPI‰WhI‰Wp€x-uÞHPI‰Wh€x-uÐHPI‰Wh¶H€ù „š€ù „€ù u­HƒÂI‰WhL‰ÿèkÿÿD‹@E…À„ ‹8…ÿˆnþÿÿfDL‰ÿ» èkpÿÿI‹G`I‰Ghé9øÿÿfDHƒÀL‰ÿI‰GhèHtÿÿI‹GhI‹WxéÉ÷ÿÿHpI‹WxI‰wh¶HH‰ðëHƒÀI‰GhH9Єg¶€ù tç€ù tâA‰ÄE+gPé„÷ÿÿfDHPI‰Wh€x …æþÿÿHBI‰GhI‰GpI;Gx„˜¶< „Ý< „U< „MM‹g`L‰çè‘sÿÿH˜LàI‰GPI;GHv Aƒ‡€I‰GHI‹GhI9ăYIƒÄL‰çèlÿÿ…Àtãë¾€HƒÀL‰ÿI‰GhèÐiÿÿD‹E…Òˆ4ýÿÿéÇþÿÿ€HPI‰WhI‰Wp¶@é^ÿÿÿI‰Whé'øÿÿ€H‰÷èjÿÿéöÿÿ< „<\…@HrDmI‰whI‰wp¶Bƒè"ÿà@L‰ÿèÈiÿÿI‹GhéNöÿÿ€L‰ÿè°iÿÿI‹GhI‹Wxé„þÿÿL‰ÿè˜iÿÿI‹WhéÎûÿÿ€€8tCI‹WPA¼H)Ѐ: DDàL‰ÿè×hÿÿI‹Wh€:#t‹pVùƒú‡oE1äéiõÿÿ€HƒèA¼ÿÿÿÿI‰G`ëÁL5}ëf„HƒÂI‰WhI;Wx„þ¶ƒè-ÿàI‹GhHPI‰WhI;Wx„3€: „ãýÿÿI‹GpI‰GhéþÿÿL‰ÿè¼hÿÿI‹Wh„€: …úüÿÿHƒÂI‰WhI;WxuéëÓH‰Â@HBI‰GhH‰×èjÿÿ…ÀtIƒoh¿dèÍkÿÿI‹_`L‰ÿH‰D$ èÌgÿÿ¶ÇD$( <>t<|º¸D‰D$(ÇD$M‹ohÇD$0ÿÿÿÿfDHƒÃL9ë‡H¾+@€ý-„å@€ý+„ëèöpÿÿH‹öDht̺ 1öH‰ßè-jÿÿM‹oh‰D$0ë³HBI‰Gh€z „'ÿÿÿI‹GpI‰Ghé±õÿÿL55ëI‹GxHƒÂI‰WhH)ÐHƒøŽV ¶ƒè ÿàf„I‹Whéyüÿÿ€E;eFôÿÿI‹G`»H)ÂHxHrÿèjÿÿH‹t$H‰éûóÿÿHBI‰Gh¶Bƒè0<6w5H¿ÿ~~H£Çs%HBI‰Gh¶BHЀù6w¸HÓàH…ø…I‰whH‰òE9BÿAˆ,IcÅAÆIcíééøÿÿHBI‰Gh¶RE9î޹¾úLåèkÿÿˆEIcÅAÆI‹WhëÇH‰òë©HÎêfHƒÂI‰WhI;Wx„ ¶ƒè-ÿàI‹G`»H)ÂHxHrÿèiÿÿH‹t$L‰ÿH‰H‰Æè{kÿÿéñòÿÿfDÇD$(éóýÿÿÇD$2éãýÿÿH‹D$ L‰íE1öM‰ýÇD$ HgëÆI‰ÇÇD$dI‹ExI‰m`H)èHƒøŽ(€}-‡¶EHcƒHØ>ÿà„HEI‰EhI‰Ep€}-„¯ H‰ÅEfD9d$Ž€I‹E`Mcö¶Cˆ7IcÄE‰æAÆëˆDHƒÅL‰ïI‰mhè¸dÿÿƒx„nL‰ïè&nÿÿI‹mhI‰m`éTÿÿÿf„HEI‰Eh€} uˆHƒÀI‰EhI‰EpI;Ex„x ¶< „: < „) < „! I‹m`H‰ïèµmÿÿH˜HèI‰EPI;EHv Aƒ…€I‰EHI‹EhH9ŃHƒÅH‰ïè±fÿÿ…Àtãë¾L‰ïL‰|$ è{iÿÿ1Àè4bÿÿAƒ}H‰Å„z¾H=e³èEgÿÿH‰EH‹E H‹t$ IcÖƒ|$(H‰pH‹E H‰PH‹E „3ÇE…ö~Yƒ|$2tRH‹E H‹PH‹@H\ÿë DHƒëH‰ßèfÿÿ…ÀuðH‹U ƒ|$(H‹BtH‹JHLÿH9ËHƒÓH)ÃHCH‰BH‹D$» H‰(éðÿÿ@HEI‰EhI‰Ep¶Eé²þÿÿHƒÅI‰mhéþÿÿL‰ïècÿÿI‹mhéÇýÿÿ€HHI‰Oh€x …>ùÿÿH‰ÊHƒÂI‰WhI‹G`IcUH‰ÆI+wPH9ò»A‹Eƒèƒø†]ïÿÿºé9ðÿÿ€8…7HPÿA¼ÿÿÿÿI‰W`I‹WxéŽïÿÿL‰ÿècÿÿI‹Whéñùÿÿ€D$Hct$L‰ÿè³gÿÿI‰ÇécýÿÿI‹Whé}öÿÿ€I‹GhHPI‰WhI;Wx„ €: „WöÿÿI‹GpI‰Ghé°õÿÿ@HPI‰Wh¶H€ù „€ù tK€ù …möÿÿHƒÂI‰WhL‰ÿèÕaÿÿD‹HE…É…ÀöÿÿI‹GhI‹WxéÉîÿÿL‰ÿèCbÿÿI‹Wh€€: uÆHƒÂI‰WhI;WxuíëØHBI‰Gh€z „jôÿÿDmH‰Âé"ûÿÿfHBI‰Gh€z téIôÿÿD€8 …;ôÿÿHƒÀI‰GhI;GxuéL‰ÿèÉaÿÿI‹GhëÛHƒÂDmI‰WhéÏúÿÿ<:„ü Ž»<]„y <}…áH‹D$I‰ohƒx„µA€} tL‰ïècÿÿ…À„^I‹GhLhÿM‰ohHcD$I‹w`IlH‰D$(HcÃH)õH‰t$0H9Å|$„ÃL‰÷LcãL‰æèìeÿÿI‰ÆI9ì~äH‹t$0L‰íH‹|$(H)õL÷H‰êèycÿÿl$HcD$AÆémïÿÿ<,….I‰ohI‰opA¶E< „ó < „•< „ö HcD$I‹w`LdH‰D$(HcÃI)ôH‰t$0I9Ä|"fDÃL‰÷LcëL‰îèLeÿÿI‰ÆM9å~äH‹t$0H‹|$(I‰ìI‰íI)ôL÷L‰âèÖbÿÿDd$HcD$AÆéÉîÿÿL‰ÿè:`ÿÿI‹oh€} …n HƒÅI‰ohI;oxuèëÚ@„À…`I‰oh1Àèµ]ÿÿI‹W`I‰WhH‹P L‰rH‹P Hcl$H‰jH‹P ÇH‹t$H‰Aƒ„% »éŒìÿÿAÆL‰çH‰T$IcöèydÿÿH‹T$I‰ÄéÅøÿÿ@I‹I)íè¼[ÿÿH‰îL‰çL)æè^bÿÿI‰GH‰Çè‚^ÿÿI|èÈbÿÿH‰ÁH‹D$ÆH‰ÏH‰I‹wè~\ÿÿIUÿHsH‰ÁH‰Ï»è¶_ÿÿL‰çè^[ÿÿéôëÿÿf„HHI‰Oh€x …ÞôÿÿH‰Êé¹îÿÿfDHƒêéoöÿÿ€I‹OPH‰ÆA¼I‹WxH)΀9 DDæéNëÿÿEfD9d$ŽjI‹E`McöI‹mh¶Cˆ7IcÄE‰æAÆéÊøÿÿ€€8ÇD$HÿÿÿÿtI‹UPA¼H)Ѐ: AEĉD$HL‰ïèÛ]ÿÿƒxH‰D$8„ÂL‰ïèÄ]ÿÿ‹pƒþ„8Hc8I‹UhI+UPH‰øH9úu ƒþ…‹t$0…öŽø‹|$HƉt$09øx…öŽè9þ@”źL‰ïèÃZÿÿL‰ïè[]ÿÿÆD$@ÆD$ H‰D$8¸ƒ|$( u@„ítH‹t$81Ò‹|$H9>”Â‰Ö Æ@ˆt$ I‹}`1íë%f.„Lgèwfÿÿ…Àt ƒèƒÅH˜IÄL‰çI‹UhH9×rÜ€|$ ƒÕÿ…íù€|$@„îAn;l$DMcöHcÅCÆ7 A‰îAÆH‹|$8‹t$H‰ð+‰D$ H˜H)ÂH‰ÕI‰Uh;7F÷ÿÿL‰ïL‰|$ èþaÿÿI‹E`I‰Eh1Àè¯ZÿÿAƒ}H‰Å„ý¾H=à«èÀ_ÿÿH‰EH‹E H‹t$ IcÖƒ|$(H‰pH‹E H‰PH‹E „œÇƒ|$2„ÎøÿÿE…öŽÅøÿÿH‹E H‹PH‹@H\ÿëHƒëH‰ßèŒ^ÿÿ…ÀuðH‹U ƒ|$(H‹BtH‹JHLÿH9ËHƒÓH)ÃH‰ØHƒÀH‰BépøÿÿfDL‰ÿè8\ÿÿI‹GhéWñÿÿ€A‹uVùƒú†àëÿÿAÇEI‹G`éÏëÿÿÇéÈ÷ÿÿºH5ëªH=tªèäXÿÿH‰Eéz÷ÿÿHUI‰Uh€}-tSI‰Ehé:öÿÿ@I‹Ehé¥öÿÿI‹EhHƒÀI‰EhI;Ex„w€8 „†öÿÿI‹EpI‰EhéªöÿÿL‰ÿèƒ[ÿÿI‹Whé>ïÿÿHUI‰Uh¶u@€þ „Õ@€þ tc@€þ u‹HƒÂI‰UhI‹m`I;mP„EfD9d$޶EMcöHƒÅI‰mhCˆ7IcÄE‰æAÆé;õÿÿL‰ïè[ÿÿI‹Uh@€: u«HƒÂI‰UhI;UxuíëÛL‰ç»èWÿÿé¤çÿÿH‹xèàYÿÿJ<0è'^ÿÿH‰ÁH‹D$ÆH‰ÏH‰I‹wèÝWÿÿUÿIt$H‰ÁHcÒéWûÿÿ‹D$ ÆD$@ÆD$ …À@”Å1Àé¨üÿÿL‰ÿèwZÿÿM‹ohé éÿÿHPI‰Wh€x …Tîÿÿéâ÷ÿÿD$Hct$L‰ÿè_ÿÿI‰ÇéyûÿÿL‰ÿè2ZÿÿI‹Whé™òÿÿHPI‰Wh€x …îÿÿé]îÿÿf„À…"M‰oh1Àè­WÿÿL‰ÿI‰ÄèbYÿÿƒx„g Aƒ„‹ ¾H=̨è¬\ÿÿI‰D$I‹D$ HcÛH‰hI‹D$ H‰XI‹D$ »ÇH‹D$L‰ é`æÿÿL‰ÿèYÿÿI‹WhéÒöÿÿL‰ïè|YÿÿI‹EhéwôÿÿE.…íŽ'üÿÿL‰ø‰l$ M‰ïMcæ‹l$H‰T$@E‰ÕD‰t$Lë€BÆ IcÎMcæÆE9ìtDEt$A9î|âÅH‰ÇHcõèá]ÿÿëÏD$Hct$L‰ÿH‰T$ èÅ]ÿÿH‹T$ I‰Çé•ûÿÿ‰l$D‹t$LM‰ýI‰Ç‹l$ H‹T$@AîéˆûÿÿIEI‰GhA€} „+DI‰ohéî÷ÿÿL‰ÿèŸXÿÿI‹Whé¼ïÿÿ€ú"„ú€ú\uwI‰EhI‰EpA¶wVö€únwfH5¨Þ¶ÒHc–Hò>ÿâIGI‰EhA¶Gƒè0<6w6Hºÿ~~H£Âs&IGI‰EhA¶GHЀù6w¸HÓàH…Ð…êI‹EpI‰EhDsE9ôŽ M‹}hHcÛA¶GÿˆDIcÆD‰óÆDé6éÿÿIGDsI‰EhE¶E9ôŽPA¾ÿHcÛè:\ÿÿHëˆIcÆD‰óÆDM‹}hé÷èÿÿI‹EhLxM‰}h€x …vÿÿÿÇD$éÔèÿÿI‹EhI‹uxHƒÀI‰EhH)ÆH‰ðHƒèŽM‹}hA¶L‰ø€ú t±€ú tÏ€ú …+ÿÿÿë³I‰ÇÇD$é„èÿÿfD;D$Hˆ ‹t$H½éùÿÿAƒ­¸L‰ïèpVÿÿ‹Aƒ…¸éÅøÿÿAÆL‰çˆT$Icöè«[ÿÿ¶T$I‰Äé$ðÿÿL‰ÿèÆVÿÿI‹WhéOðÿÿI‰ohI‰opA¶Eé¤åÿÿI‰ohI‰opA¶E< „Îýÿÿ< t(< …ÑõÿÿIƒGhétöÿÿL‰ÿèxVÿÿI‹oh€} …^öÿÿHƒÅI‰ohI;oxuèëÚI‰oh‹T$I‰í…Ò…ÒäÿÿéÉäÿÿfI‰ohA€}#ußMML‰ÿM‰Ohè_ÿÿéöÿÿH‹D$I‰ohƒx„Ë A€} tL‰ïèXÿÿ…À„äI‹GhLhÿM‰ohHcD$I‹w`IlH‰D$0HcÃH)õH‰t$(H9Å|#€ÃL‰÷LcãL‰æè|ZÿÿI‰ÆI9ì~äH‹t$(L‰íH‹|$0H)õé‹ôÿÿHUI‰Uh€} …°ùÿÿé úÿÿI‹G`I‹WxHHI‰OhH)ÊI‰OXHƒúŽº¶< „X<%„< „HI‹GX» I‰GhéõáÿÿL‰ïè"UÿÿI‹EhéxùÿÿD$Hct$L‰ÿèÔYÿÿI‰ÇéÉùÿÿL‰ÿèdTÿÿºL‰ÿ‹0ƒÆè²QÿÿI‹G`¾é¡áÿÿIEI‰GhA€} …üÿÿIƒGhH‹D$‹@‰D$(ƒèƒø†Þ I‹Gh€xÿ t Hxÿè£Vÿÿ…ÀtIƒohHcD$M‹ohI‹w`IlH‰D$0HcÃH)õH‰t$(H9ÅŒ»þÿÿÃL‰÷LcãL‰æèYÿÿI‰ÆL9å}äéšþÿÿ€8½ÿÿÿÿtI‹WP1í€: u‰Å)ÕL‰ÿèSÿÿ;l$ ŽôÿÿI‹`1íëHGI‰G`èÛ\ÿÿ…Àu@I‹`M‹ohI9ýwâƒý.‹D$h9ëŽHcD$‰l$AÆ HcÅAÆé>âÿÿxÿƒÅHcÿI`I‰`ë±L‰ÿèœSÿÿM‹whéäÿÿI‰Eh1ÀM‰ïè5QÿÿL‰ïI‰ÄèêRÿÿƒx„[Aƒ„¾H=T¢è4VÿÿI‰D$I‹D$ HcÛH‰hI‹D$ H‰XI‹D$ ÇH‹D$L‰ éWóÿÿL‰ïèSÿÿM‹}hé|äÿÿM‰ohM‰opA¶F< „< „æ< „ÞM‹o`L‰ïèÀ[ÿÿH˜LèI‰GPI;GHv Aƒ‡€I‰GHI‹GhI9ŃðIƒÅL‰ïè¼Tÿÿ…Àtãë¾A‹wH‰Ç»èõTÿÿé[ßÿÿALJˆ I‹h€?#tè‡Tÿÿ…À„I‹G`IƒohHƒÀI+GPºH‰ÆL‰ÿèOÿÿI‹G`¾é ßÿÿM‰ohA€~ t-SA9ÔŽ÷A¶HcÛM‰îˆDHcÂ‰ÓÆDénâÿÿM‹ohIƒÅM‰ohM‰opM;ox„æM‹ohA¶EéâþÿÿM‰ohë©D9 OæÿÿŒ/AƒÄ¸ EØé‹ÞÿÿI‹ohé—àÿÿHAI‰GhI‰Gp¶A<.Œcüÿÿ<_~ ƒèa<‡TüÿÿI‹WhI‹GxHƒÂI‰WhH)ÐHƒøŽÐI‹Wh¶<_¥<;}Ô<.Œüÿÿ<9~ÈHBI‰Gh¶R€ú.Œüÿÿ€ú_~ ƒêa€ú‡òûÿÿI‹Wxë¶€ù.|X€ù_~ƒéa€ùwKHƒÀI‰GhH9ÐuÞL‰ÿèþPÿÿI‹GhI‹WxëÌHAI‹WxI‰Gh¶IëHƒÀI‰GhH9Ðt&¶€ù të€ù tæI‹OhéWûÿÿƒèa<‡xûÿÿé#ÿÿÿL‰ÿè§PÿÿI‹GhI‹WxëÈL‰ÿè•PÿÿI‹Ohé5ûÿÿI‹GhHƒÀI‰GhI;Gx„I‹oh€} „HßÿÿI‹GpI‰GhélßÿÿHƒÂI‹X¾I‰Whè%Sÿÿ1öºÆ0H‰ÇH‰D$è~RÿÿH‹L$H‰D$H‰ÏèLLÿÿE9îŽ ¶D$Aˆ,IcÅAÆI‹Whé2éÿÿI‰EhA€ …Ý÷ÿÿHƒÀI‰EhI‰EpI;Ex„ÓI‹Eh¶éháÿÿ€8…HƒèAƒÍÿI‰G`L‰ÿèOÿÿƒxtºD‰îL‰ÿèeLÿÿE1íëHGI‰G`ècXÿÿ…ÀuGÿÿI‹W`I‰WhH‹P L‰rH‹H HcÓH‰Qé†éÿÿºH5]˜H=æ—èVFÿÿI‰D$é—þÿÿ‹t$H‹|$ ÆHcöèNÿÿH‰D$ é(þÿÿIƒÇI‹}`¾DsM‰}hèñKÿÿ1öºÆ0H‰ÇH‰D$èJKÿÿH‹L$I‰ÇH‰ÏèEÿÿE9ô~XHcÛIcÆDˆ|D‰óÆDM‹}héÚÿÿHcD$H‰ÆIDÿ)Ɖõë¶J÷€ùv €ú … ÿÿÿÆHƒè\I9ÆrÜéøþÿÿAÄH‰ïIcôèKMÿÿH‰Åë‘AÄH‰ïIcôè4MÿÿH‰Åé–ðÿÿL‰ïèTHÿÿéñðÿÿL‰ÿèGHÿÿéjúÿÿHcD$H‰ÆIDÿ)Ɖõë¶J÷€ùv €ú …†þÿÿÆHƒè\I9ÆrÜéqþÿÿE1öëHGI‰E`èÔPÿÿ…ÀuHI‹EhI‹}`I‰ÇH9ÇrßAƒþADsE9ôŽ‹HcÛIcÆÆD D‰óÆDé ÙÿÿL‰ïè­GÿÿébüÿÿƒèAƒÆH˜IE`ë©BD3ÿHcÓ‰D$ëIcÁÆD IcÑÆD;T$tMDJE9ÌáAÄH‰ï‰T$(IcôD‰L$ è!LÿÿHcT$(D‹L$ H‰Åë·AÄH‰ïIcôèLÿÿH‰Åé[ÿÿÿB\3ÿétØÿÿff.„óú¸ÃfDóúH‹!H‰þH‹Hƒx tH‹HH‰H‹:ÿg H‹ ±!H‰H H‹HH‰H‹:ÿg óúHƒì‹F0ƒøt …Àt\ƒøt7ƒøuHƒÄé‰Iÿÿf„H=ÎèÔNÿÿ¸ HƒÄÃf.„H=¹Îè´Nÿÿ¸ HƒÄÃf.„HƒÄéWDÿÿ€óúATH‰÷UH‰õSè=EÿÿH‹!I‰Ä‹;èLIÿÿD‰âH‰î1ÉH‰Çè Nÿÿ‹;H‰Åè2Iÿÿ1ɺH5›ÎH‰ÇèìMÿÿH‰îH‰Çè1Gÿÿ¾H=ÎH‰Ãè­HÿÿH‰CH‰Ø[]A\ÃóúHƒì‹—€H‹Oh1ÀI‰ðH+OPH5Ö΃ÂH=,ÑèIÿÿff.„@óúATI‰ÔUH‰õSH‹‡˜H‹H‹I!‹8èŠHÿÿL‰áH‰êH‰ÞE1À[H‰Ç]A\é’BÿÿfóúATI‰ÔUH‰õSH‹‡˜H‹H‹ !‹8èJHÿÿL‰áH‰êH‰ÞA¸‚[H‰Ç]A\éOBÿÿff.„@óúAUATUSHƒìH‹Ÿ˜‹C…ÀtHƒÄ[]A\A]Ãf„H‹¡!L‹+I‰ÔH‰õ‹8èÙGÿÿL‰áH‰êL‰îH‰ÇèxKÿÿH˜L9àt½è,Aÿÿºÿÿÿÿ‹…ÀD‰CHƒÄ[]A\A]ÃfUH,7SHƒìH9ïs^H‰ûë @HÃH9ÝvM¶¸„ÒyìH‹5Í!¶ÂH‰éH)Ù¶H9Á|x€ú÷‡’B><w+¶CƒàÀ<€u]¸HÃH9Ýw³HƒÄ¸[]À€úàtKB<w$¶CƒàÀ<€u&¶CƒàÀ<€u¸élÿÿÿ@€úðt{ƒÂ€úvCHƒÄ1À[]Ãf.„¶Cƒàà< t¼ëà1ÒH‰îH‰ßèCCÿÿH…À…"ÿÿÿëÅ„¶CƒàÀ<€u²¶CƒàÀ<€u§¶CƒàÀ<€uœ¸éíþÿÿD¶CƒÀpÿÿH|H‰D$ è‚@ÿÿL‹L$ H‰D$M…É„GH‰Á1ö1Ò1ÿ1ÀE1ÛAº"ë'f„1ÿ<'u ÆAÿ'fDƒÆHcÆI9ÁvUL‰Á¶DLAˆ@„ÿuÒ<\„š„Ò…²<'„rŽ”<,t<:u¼ƒÆLAÆA HcÆI9Áw´f„AÆ1ÀèÕFÿÿH‹t$1ÒH‰ÇH‰ÅèFÿÿH‹5 !H‰ïè$EÿÿH‹5• !H‰ïèFÿÿH‹5~ !H‰ïèVBÿÿM…ÿ„uA‹G ‰ÆÁîƒæ…#öÄÿ…"<„‰ÂâÿÀú „fDH‰ïèØAÿÿ1öH‰ïènFÿÿ‹;èwAÿÿ¾ H‰Çè Eÿÿ‹;I‰Çè`AÿÿL‰þH‰ÇèÅBÿÿH‰D$@M…ö„A‹V ÷ …_öÆÿ…΀ú„ʼnÑ1ÀáÿÀù „¯€ˆD$HM…ít4A‹E © …öÄÿ…Ï<„ljÂâÿÀú „³1ÀHƒ|$tAH‹D$‹P ÷ …]öÆÿ…Ä€ú„»‰Ñ1ÀáÿÀù „¥DˆD$IH‹$H…À„‹P ÷ …¨öÆÿ…·€ú„®‰Ñ1ÀáÿÀù „˜„ˆD$JHD$@H‰ïH‰…Àè¨9ÿÿHT$8H‰ïH‰ÆèHBÿÿ…ÀtH‹D$8H…Àtƒ@H‰ïèŽDÿÿH‹|$èäAÿÿ‹;èÝ?ÿÿ‹;H‹hPèÒ?ÿÿH;hX°‹;èÁ?ÿÿH‰Çè‰:ÿÿH‹l$8‹;è­?ÿÿH‰îH‰ÇèAÿÿ‹;H‰Åè˜?ÿÿH‹@J‰,à‹;è‰?ÿÿ‹;H‹hè~?ÿÿHl$H‰(H‹D$XdH3%(…?HƒÄh[]A\A]A^A_ÃöÄtKI‹º"H…À„2üÿÿH‹@º'Hƒø‡üÿÿº"H…À„üÿÿI‹@€80•ÂT’"éþûÿÿfDöÄ„/öÄ…nº"öÄ„ØûÿÿI‹fïÀf.@(z„Äûÿÿº'éºûÿÿf¿é6üÿÿfD<"ADÒé%üÿÿD8ÐADÓéüÿÿDöÄ„×I‹H…À„ëüÿÿH‹@Hƒø†=‹t$(éÔüÿÿ@öÆ„ïI‹1ÀH…Ò„AýÿÿH‹R¸Hƒú‡.ýÿÿ1ÀH…Ò„#ýÿÿI‹F€80•Àéýÿÿ@öÄ„ïI‹EH…À„7ýÿÿH‹@Hƒø†ä¸éjýÿÿf.„öÆ„ÿH‹L$1ÀH‹H…Ò„DýÿÿH‹RHƒúwÆH…Ò„1ýÿÿH‹Q€:0u´é#ýÿÿöÆ„—H‹ $1ÀH‹H…Ò„UýÿÿH‹R¸Hƒú‡Býÿÿ1ÀH…Ò„7ýÿÿH‹A€80•Àé(ýÿÿ„èK=ÿÿH‹@J‹àH‹hé\øÿÿf.„‹;è)=ÿÿH¨8éiýÿÿD‹;è=ÿÿH‰Çè)@ÿÿé<ýÿÿ@öÆ„ÿöÆtH‹$H‹¸Hƒy …«üÿÿ1À€æ„ üÿÿH‹$fïÀH‹f.B(ºšÀEÂé€üÿÿöÄ„göÄtI‹Hƒz …'þÿÿöÄ„ûúÿÿI‹1öfïÀf.@(¸@šÆEðéÜúÿÿ@öÆ„ÿöÆtI‹¸Hƒy …?ûÿÿ1À€æ„4ûÿÿI‹fïÀf.B(ºšÀEÂéûÿÿöÄ„÷öÄtI‹UHƒz …þÿÿöÄ„/ûÿÿI‹EfïÀf.@(Šóýÿÿ„ûÿÿéèýÿÿ@öÆ„_öÆtH‹D$H‹Hƒx …Ãýÿÿ1À€æ„,ûÿÿH‹L$fïÀH‹f.B(Š¡ýÿÿ„ûÿÿé–ýÿÿf.„I‹º'Hƒy …eøÿÿézüÿÿ„‹;èY;ÿÿ1ÒL‰öH‰Çè<4ÿÿé?úÿÿ€‹;è9;ÿÿL‰þ1ÒH‰Çè4ÿÿ¶ðé”ùÿÿ@‹;è;ÿÿ1ÒL‰îH‰Çèü3ÿÿ„À„9úÿÿé ýÿÿ€‹;èñ:ÿÿH‹4$1ÒH‰ÇèÓ3ÿÿé®úÿÿfDº'éNøÿÿfDL‰D$è¾:ÿÿ1ÒL‹D$H‰ÇL‰Æèœ3ÿÿ‹;º"„À„•÷ÿÿéÌûÿÿ„‹;º"é|÷ÿÿ@L‰D$èv:ÿÿºë³€L‹D$é>øÿÿfD1öéÁøÿÿ1Àéúÿÿf„1Àé1ùÿÿf„H…À„—øÿÿI‹G1ö€80@•Æé…øÿÿDH…À„<ùÿÿI‹E€80…üÿÿé*ùÿÿD‹;èé9ÿÿºéÈþÿÿ€‹;èÑ9ÿÿºL‰öH‰Çè±2ÿÿé´øÿÿ@‹;è±9ÿÿH‹4$ºH‰Çè2ÿÿékùÿÿ‹;è‘9ÿÿL‰þºH‰Çèq2ÿÿ¶ðéé÷ÿÿf„‹;èi9ÿÿH‹t$1ÒH‰ÇèJ2ÿÿéÕøÿÿD‹;èI9ÿÿH‹t$ºH‰Çè'2ÿÿé²øÿÿH5|„L‰ïè#8ÿÿè>5ÿÿff.„óúAWAVAUI‰õATUSHƒìhH‹¬!dH‹%(H‰D$X1À‹;èÝ8ÿÿ‹;L‹0èÓ8ÿÿ‹;H‹PxHJüH‰HxHc*è½8ÿÿH‹@HèI)ÆIÁþL‰t$(Aƒþ…M ‹;DeMcäè‘8ÿÿJ å‹;H‹@H‰L$J‹à‹@ % =„èb8ÿÿ‹;H‹@J‹,àèS8ÿÿ¹1ÒH‰îH‰Çèq5ÿÿI‰Å‹;è78ÿÿH52¾H=˽H8H‰D$01Àèç;ÿÿ‹;H‰Åè 8ÿÿ¹ºH‰îH‰Çè¨6ÿÿH5ó½H=˜½H‹@H‹H‰D$1Àè§;ÿÿ‹;H‰ÅèÍ7ÿÿ¹ºH‰îH‰Çèh6ÿÿH5³½H=e½H‹@H‹H‰D$ 1Àèg;ÿÿ‹;H‰Åè7ÿÿ¹ºH‰îH‰Çè(6ÿÿH5s½H=8½H‹@L‹81Àè,;ÿÿ‹;H‰ÅèR7ÿÿ¹ºH‰îH‰Çèí5ÿÿH58½H=½H‹@L‹01Àèñ:ÿÿ‹;H‰Åè7ÿÿ¹ºH‰îH‰Çè²5ÿÿH5ý¼H=æ¼H‹@H‹(1Àè¶:ÿÿ‹;H‰D$èÚ6ÿÿH‹t$¹ºH‰Çès5ÿÿH‹@H‹H‰D$H…í„î‹E ‹;© …îöÄÿ…e<„]‰Áº"áÿÀù „D@H‹iÿ ˆèb6ÿÿH‰Çèº:ÿÿ‹;èS6ÿÿH‰Çè‹5ÿÿA€}„ø¹ H=A¼L‰îó¦—À„ÀuAÆE%1ÀèÚ:ÿÿ1ÒL‰îH‰ÇH‰Åè :ÿÿH‹5Ãþ H‰ïè+9ÿÿH‹5œþ H‰ïè :ÿÿH‹5…þ H‰ïè]6ÿÿM…ÿ„tA‹G ‰ÆÁîƒæ…²öÄÿ…<„‰ÂâÿÀú „ýDH‰ïèà5ÿÿ1öH‰ïèv:ÿÿ‹;è5ÿÿ¾ H‰Çè9ÿÿ‹;I‰Åèh5ÿÿL‰îH‰ÇèÍ6ÿÿH‰D$@M…ö„ßA‹V ‹;÷ …MöÆÿ…Ä€ú„»‰Ñ1ÀáÿÀù „¥DˆD$HH‹D$H…Àt3‹P ÷ …CöÆÿ…€ú„¹‰Ð%ÿÀ= „§H‹D$ H…À„A‹P ÷ …BöÆÿu€út‰Ñ1ÀáÿÀù …šföÆ…·öÆ„ÞöÆtH‹D$ H‹¸Hƒy …i1À€æ„^H‹D$ fïÀH‹¸f.B(šÁDÁé=DöÄtKH‹Eº"H…À„©ýÿÿH‹@º'Hƒø‡–ýÿÿº"H…À„ˆýÿÿH‹E€80•ÂT’"éuýÿÿDöÄ„çöÄ…>º"öÄ„PýÿÿH‹EfïÀf.@(z„;ýÿÿº'é1ýÿÿöÄ„gI‹H…À„óýÿÿH‹@Hƒø†M‹t$(éÜýÿÿ@öÆ„I‹1ÀH…Ò„IþÿÿH‹R¸Hƒú‡6þÿÿ1ÀH…Ò„+þÿÿI‹F€80•Àéþÿÿ@öÆ„H‹L$H‹H…À„?þÿÿH‹P¸Hƒú†«ˆD$IH‹D$H…À„f‹P ÷ …öÆÿ…Æ€ú„½‰Ñ1ÀáÿÀù „§€ˆD$JHD$@H‰…Àè“2ÿÿ¾ H‰Çè&6ÿÿ‹;I‰Åè|2ÿÿL‰îH‰Çèá3ÿÿ‹;H‰D$Pèe2ÿÿ‹;H‹@ö@"„ÕèP2ÿÿH‹@¶@"ƒà<”À„À„€‹;E1ÿè.2ÿÿ¾ H‰ÇèÁ5ÿÿH‰D$0HD$8H‰D$ë[L9øtf‹;è2ÿÿH‹T$L‰îH‰ïH8H‰D$8è)4ÿÿ…Àt@‹;L‹t$8L‹|$0èÔ1ÿÿL‰òH‰ÇL‰þèf1ÿÿH‹D$8H…Àtƒ@M‰ïH‰ïè=+ÿÿI‰ÅH…Àu•‹;L‹l$0è™1ÿÿL‰îH‰Çè+ÿÿH‰D$0H‰ïè!6ÿÿ‹;èz1ÿÿ‹;H‹hPèo1ÿÿH;hX‹;è^1ÿÿH‰Çè&,ÿÿH‹l$0é@èC1ÿÿH‹@J‹àL‹héôøÿÿföÄ„ÿöÄtI‹Hƒz …—ýÿÿöÄ„sûÿÿI‹1öfïÀf.@(¸@šÆEðéTûÿÿ@öÆ„—öÆtI‹¸Hƒy …·ûÿÿ1À€æ„¬ûÿÿI‹fïÀf.B(ºšÀEÂéûÿÿöÆ„'öÆtH‹D$H‹¸Hƒy …‚ýÿÿ€æ„¢ûÿÿH‹D$fïÀH‹f.@(z„‰ûÿÿ¸éVýÿÿfD‹;èA0ÿÿH¨8‹;è30ÿÿH‰îH‰Çè˜1ÿÿ‹;H‰Åè0ÿÿH‹@J‰,à‹;è0ÿÿ‹;H‹hè0ÿÿHl$H‰(H‹D$XdH3%(…¥HƒÄh[]A\A]A^A_Ãf„H‹L$ 1ÀH‹H…Ò„ÅüÿÿH‹R¸Hƒú‡²üÿÿ1ÀH…Ò„§üÿÿH‹A€80•Àé˜üÿÿH‹Mº'Hƒy … ùÿÿé©ûÿÿ€èk/ÿÿ1ÒH‹t$H‰ÇèL(ÿÿ‹;„À„ƒúÿÿéUüÿÿDèC/ÿÿ1ÒL‰öH‰Çè&(ÿÿ‹;éúÿÿ€‹;è!/ÿÿL‰þ1ÒH‰Çè(ÿÿ¶ðétùÿÿ@öÆ„·H‹L$1ÀH‹H…Ò„DüÿÿH‹R¸Hƒú‡1üÿÿ1ÀH…Ò„&üÿÿH‹A€80•Àéüÿÿ€H‰ïè@(ÿÿHT$0H‰ïH‰Æèà0ÿÿ…À„ýÿÿH‹D$0H…À„ýÿÿƒ@éøüÿÿè{.ÿÿH‰Çè32ÿÿ<”Àé)üÿÿf„‹;èY.ÿÿH‰Çèq1ÿÿéçüÿÿ@öÆ„ŸöÆtH‹D$H‹¸Hƒy …zûÿÿ1À€æ„oûÿÿH‹D$fïÀH‹f.B(ºšÀEÂéNûÿÿfDèë-ÿÿ1ÒH‰ÇH‰îèÎ&ÿÿ‹;º"„À„_÷ÿÿéúÿÿf.„‹;º"éD÷ÿÿ@è«-ÿÿºë»@è›-ÿÿH‹t$1ÒH‰Çè|&ÿÿ‹;éÝúÿÿD1ÀéÑúÿÿf„‹;1ÀéWøÿÿ€1öéÁ÷ÿÿf„H…Ò„xøÿÿH‹Q€:0…BúÿÿéføÿÿDH…À„÷ÿÿI‹G1ö€80@•Æé}÷ÿÿD‹;è -ÿÿL‰þºH‰Çèé%ÿÿ¶ðéY÷ÿÿèë,ÿÿºL‰öH‰ÇèË%ÿÿ‹;éÄ÷ÿÿ@èË,ÿÿH‹t$ºH‰Çè©%ÿÿ‹;é úÿÿfè«,ÿÿºé8ýÿÿè›,ÿÿH‹t$ 1ÒH‰Çè|%ÿÿ‹;éùÿÿD1Àéùÿÿf„èk,ÿÿH‹t$ ºH‰ÇèI%ÿÿ‹;éZùÿÿH5œwL‰ïèC+ÿÿè^(ÿÿff.„AWAVAUATI‰ôUSH‰ÓHƒìL‹wH‰÷dH‹%(H‰D$1Àèà'ÿÿH‹-±ô I‰Å‹}èî+ÿÿHƒìD‰éL‰öjE1ÉA¸ L‰âH‰Çè>/ÿÿY^H…ÀtOL‹(M‹eH…ÛtƒC‹}è¯+ÿÿH‹L$dH3 %(…HƒÄH‰ÚL‰æH‰Ç[]A\A]A^A_é+ÿÿ€‹}èp+ÿÿ¾ H‰Çè/ÿÿ‹}I‰ÅèX+ÿÿL‰îH‰ÇèÍ$ÿÿL‰çH‰$I‰Åè'ÿÿ‹}I‰Çè3+ÿÿHƒìL‰âM‰éjA¸$D‰ùL‰öH‰Çèƒ.ÿÿXZéHÿÿÿè''ÿÿ€óúAWAVAUATUH‰ýSH‰óHƒì8D‹n dH‹%(H‰D$(1ÀH‹‡˜L‹pD‰èA÷Åà…ÉöÄ…°AåÿtWAƒýt1öÄ…ØöÄ…ÇAƒí Aƒýw5Hæ´JcªHÐ>ÿà@öÄÿuÊ<tƉÂâÿÀú t¶€H vj1ÉE1ÉPH5vE1ÀºH‰ïèª)ÿÿY^AÆH‹D$(dH3%(…ÔHƒÄ8[]A\A]A^A_ÃH‹sH‰ïèôþÿÿëÊfL‹%¡ò A‹<$èà)ÿÿH‰ÞH‰ÇèU+ÿÿ‹C éÿÿÿDL‹%yò A‹<$è¸)ÿÿH‰ÞH‰Çè(ÿÿI‰Å‹@ % =…GI‹EM‹}H‹pH‰t$ öC tL‰ÿè/ÿÿ…À…PH‹t$ V‹ó E1ÉE1ÀAW1ÉH5uH‰ïèË(ÿÿAXAYA‹<$è>)ÿÿA‹Uƒú†¼ƒêA‰UéýþÿÿDL‹%Ññ A‹<$è)ÿÿH‰ÞH‰Çèu(ÿÿI‰Å‹C % =…ŸH‹CAUP‹’ò E1ÉE1À1ÉH5žtH‰ïèK(ÿÿXZéœþÿÿ@L‹-qñ A‹}è°(ÿÿH‰ÞH‰Çè(ÿÿI‰ÄH…À„iD‹} ÇE ‹C % =u_H‹CAT‹#ò H‰ïE1ÉPE1À1ÉH5+tèÛ'ÿÿD‰} []é(þÿÿA‹<$èG(ÿÿL‰îHT$ ¹H‰Çèb%ÿÿH‹t$ I‰ÇéŸþÿÿDA‹}è(ÿÿ¹1ÒH‰ÞH‰Çè5%ÿÿ눺H5®H‰ïèÜ#ÿÿÇE,L‹%–ð AÆH‹L‹hHƒxD‰l$tA‹<$è¾'ÿÿH‰ÞH‰ÇèÓ-ÿÿD‰é)Á‰L$A‹<$è¡'ÿÿH‰ÞH‰ÇèÆ(ÿÿD‹u E…ö…™‹|$…ÿ~oA‹<$AƒÆès'ÿÿºH‰ÞH‰ÇèÃ$ÿÿA‹<$I‰ÅèW'ÿÿL‰îH‰Çè| ÿÿA‹<$I‰Çè@'ÿÿL‰êH‰ÞH‰Çè,ÿÿL‰þH‰ïI‰Åè4+ÿÿL‰îH‰ïè)+ÿÿD9t$u’A‹<$è 'ÿÿH‰ÞH‰Çè.(ÿÿH‰ïè&-ÿÿéÍüÿÿºH5ÿ¬H‰ïE1íè !ÿÿL‹%Šï ÇE,AÆA‹<$è¾&ÿÿH‰ÞH‰ÇèS!ÿÿPA‰Æ…Ò ë©€H‹0H‰ïè¥*ÿÿIEM9îtŽI‰ÅA‹<$è€&ÿÿ1ÉL‰êH‰ÞH‰Çè0)ÿÿH…ÀuËA‹<$èb&ÿÿH‰ïH°8èc*ÿÿë¼A‹<$èG&ÿÿ¹1ÒH‰ÞH‰Çèe#ÿÿéEýÿÿjH©qé9ýÿÿfÿt$ E1ÉE1À1ÉAW1ÒH5ÔqH‰ïè%ÿÿAZA[é±üÿÿ„A‹<$èç%ÿÿ¾ H‰Çèz)ÿÿA‹<$I‰ÅèÎ%ÿÿL‰îH‰Çè3'ÿÿHcL$I‰ÅH‰L$…ÉŽIE1ÿë f„A‰ÇA‹<$è”%ÿÿ1ÒH‰ÞH‰Çèç"ÿÿA‹<$I‰Æè{%ÿÿL‰öH‰Çè ÿÿA‹<$H‰D$I‹EH‹PLrèV%ÿÿH‹L$L‰òL‰îH‰Çèã!ÿÿAG9D$u™A‹<$M‹uè,%ÿÿH‹ î H‹T$L‰öH‰ÇE1öè²ÿÿë2H‹t$H‰ïH‰D$è)ÿÿH‹D$H‰ïH‰Æèþ(ÿÿAFE9÷„ÏýÿÿA‰ÆA‹<$èÕ$ÿÿL‰îH‰ÇèºÿÿA‹<$H‰D$è¼$ÿÿHƒìE1ÉE1Àj1ÉH‰ÞH‰ÇjjH‹T$(èj&ÿÿHƒÄ H‹@H…À…yÿÿÿA‹<$è€$ÿÿH8éeÿÿÿL‰îH‰Çèº(ÿÿé=úÿÿA‹<$M‹mèX$ÿÿH‹ Ií H‹T$L‰îH‰Çèáÿÿé*ýÿÿèW ÿÿ€óúAWAVI‰þAUI‰õATI‰ôUSHƒì8‹V H‹-Ãì dH‹%(H‰D$(1ÀH‹‡˜D¶úâà‹}¶HH‹X¶@ˆL$ˆD$…­èÈ#ÿÿL‰æH‰ÇèM"ÿÿ…À…½A‹E öÄtlI‹E¶@ ƒø„›‚ýƒè ƒø‡ñAÇF,I‹uL‰÷è…'ÿÿAÇF,DÆH‹D$(dH3%(…´HƒÄ8[]A\A]A^A_ÃfE…ÿ„ÿAƒÿ„½öÄ…öÄ…Aƒï Aƒÿ‡ÕHŠ­JcºHÐ>ÿà@I‹t$‹}H‰t$èæ"ÿÿH‹t$ºH‰Çèôÿÿ‹}H‰D$èÇ"ÿÿH‹t$H‰Çèú'ÿÿA¸l:ÆC H¹tag:!perH‰ fD‰CI‹T$‹r @¶ÖƒêƒúwZH #­Hc‘HÊ>ÿâf„¹H=¹¨H‰Æó¦—€ڄÒ…ñA¼xpÇC regeHƒÀfD‰cÆC€H‰ÆH‰ßè&ÿÿékþÿÿè"ÿÿL‰æH‰Çè#ÿÿ‹}é;þÿÿ„‹}èø!ÿÿL‰îH‰Çè]!ÿÿI‰ÄA‹E % =…nI‹E€;H5î§ATL‰÷PHEó‹ ï E1ÉE1À1Éè+!ÿÿA[L‰÷]èÐ'ÿÿé3þÿÿ€;H5ŧL‰÷HEó1ÒèpÿÿÆ‹}èu!ÿÿ1ɺH5çH‰Çè/&ÿÿL‰÷H‰Æèd%ÿÿI‹uL‰÷èX%ÿÿL‰÷èp'ÿÿéÓýÿÿHÞljº1ÉPE1ÉE1ÀH5ålL‰÷è’ ÿÿXZé£ýÿÿ‹}è!ÿÿL‰îH‰ÇèåÿÿI‰Ä‹@ % =…¿I‹$M‹|$H‹pH‰t$ H‰ðAöE …—€;H5€lPL‰÷AWHEóºE1ÉE1À1Éè ÿÿA]A^‹}è ÿÿA‹T$ƒú†¢ ƒêA‰T$é ýÿÿföÄÿ…:ýÿÿ<„2ýÿÿ‰ÂâÿÀú „ýÿÿHñk€;jºPH5ýkL‰÷HEóE1ÉE1À1ÉèžÿÿAYAZé­üÿÿD‹}è ÿÿL‰îH‰Çèmÿÿ‹}I‰ÄèòÿÿL‰îH‰ÇèÿÿA‰Ç…À…ÌM…ä„{A‹E © „¼E‹~ AÇF A‹E % =…šI‹E€;H5akATL‰÷PHEó‹ní 1ÉE1ÉE1ÀèùÿÿE‰~ Y^éüÿÿfD‹}è`ÿÿ¹1ÒL‰îH‰Çè~ÿÿéwýÿÿf„æ„ìÇC ref:ÆCéôüÿÿ@º:ÇC globf‰SéÛüÿÿ¾:ÇC hashf‰séÃüÿÿ¹:ÇC codef‰Ké«üÿÿ¿y:ÇC arraf‰{ÆCéüÿÿ€‹}è°ÿÿL‰îH‰ÇèÿÿI‰ÄA‹E % =…I‹E€;H5KjATPHEó‹[ì 1ÉE1ÉE1ÀL‰÷èãÿÿY^éôúÿÿ@€;H5jjHÇiHEóPE1ÉE1À1ɺL‰÷è«ÿÿAYAZéºúÿÿf‹}èÿÿL‰æHT$ ¹H‰Çè3ÿÿH‹t$ I‰Çé)ýÿÿfD€;H5¤L‰÷HEó1ÒèÿÿAÇF,Æ‹}1ÛèÃÿÿL‰îH‰ÇèXÿÿPA‰Ä…Ò)é‡f„H‹0L‰÷è¥!ÿÿHCI9Ü„fH‰Ã‹}è}ÿÿ1ÉH‰ÚL‰îH‰Çè- ÿÿH…ÀuÈ‹}è`ÿÿL‰÷H°8èa!ÿÿ뺀€|$…€;H5x£j H¡£HEóéàþÿÿ€;H57£L‰÷HEó1ÒèøÿÿAÇF,ÆI‹EH‹XHƒx‰\$t‹}èâÿÿL‰îH‰Çè÷"ÿÿ‰Ù)Á‰L$‹}èÇÿÿL‰îH‰ÇèìÿÿE‹f E…ä…D‹\$E…Û~pD‹}AƒÄè”ÿÿºL‰îH‰Çèäÿÿ‹}H‰ÃèyÿÿH‰ÞH‰Çèžÿÿ‹}I‰ÇècÿÿH‰ÚL‰îH‰Çè5!ÿÿL‰þL‰÷H‰ÃèW ÿÿH‰ÞL‰÷èL ÿÿD9d$u•‹}è-ÿÿL‰îH‰ÇèRÿÿL‰÷èJ"ÿÿé°øÿÿD‹}èÿÿL‰îH‰ÇèmÿÿI‰ÇA‹E % =…†I‹}L‰þèz!ÿÿ…ÀA‹E „>% =…ÓI‹E€;H5{gATL‰÷PHEóE1ÀE1É1É1Òèÿÿ_AXé'øÿÿ€‹}è€ÿÿ¹1ÒL‰îH‰Çèžÿÿéßüÿÿf„H¹regexp:H‰K éùÿÿDH¹scalar:H‰K M‹l$E¶} éûøÿÿL‰ÿèÀ ÿÿ…À…àH‹D$ éOúÿÿfD% €|$„_üÿÿ=… M‹e‹}èáÿÿL‰îH‰ÇèFÿÿH…Àt(A€<$yéDA€<ˆ AƒÇIc×H9Âré€;H5jfPHEóATéüÿÿ% =…´I‹E€;H5=fATHEóé&üÿÿ€‹}èXÿÿ¹1ÒL‰îH‰ÇèvÿÿH‰Çé\þÿÿfD€;H5ùeÿt$ L‰÷AWHEóE1ÉE1À1É1Òè’ÿÿA_Xéuùÿÿ‹}èÿÿ¹1ÒL‰îH‰Çè ÿÿéKúÿÿ‹}èãÿÿ¹1ÒL‰îH‰Çèÿÿéþÿÿ‹}èÄÿÿ¹1ÒL‰îH‰Çèâÿÿé1ÿÿÿ‹}è¥ÿÿ¾ H‰Çè8ÿÿ‹}H‰ÃèÿÿH‰ÞH‰ÇèòÿÿHcL$H‰ÃH‰L$…ÉŽ7E1ÿë „A‰Ç‹}èUÿÿ1ÒL‰îH‰Çè¨ÿÿ‹}I‰Äè=ÿÿL‰æH‰Çèbÿÿ‹}H‰D$H‹H‹PLbèÿÿH‹L$L‰âH‰ÞH‰Çè§ÿÿAG9D$u‹}L‹cèñÿÿH‹ âá H‹T$L‰æH‰ÇE1äèwÿÿë8DH‹t$L‰÷H‰D$èÎÿÿH‹D$L‰÷H‰Æè¾ÿÿAD$E9ç„küÿÿA‰Ä‹}è•ÿÿH‰ÞH‰Çèzÿÿ‹}H‰D$è}ÿÿHƒìE1ÉE1Àj1ÉL‰îH‰ÇjjH‹T$(è+ÿÿHƒÄ H‹@H…À…zÿÿÿ‹}èBÿÿH8égÿÿÿ‹}è/ÿÿH5*žH=¤žH‹H‰D$1Àèâÿÿ‹}I‰Äèÿÿ¹ºL‰æH‰Çè¢ÿÿH‹@L‹8M…ÿ„¬A‹G © …ÅöÄÿu<t‰ÂâÿÀú …€öÄ„>I‹H…À„kH‹@Hƒø†B‹}è‹ÿÿH‰Çèãÿÿ‹}è{ÿÿH‰Çè³ÿÿ‹}èkÿÿ‹}H‹HxLaL‰`xèWÿÿL; €„•‹}èBÿÿH‹L$H+HH‰ÈHÁøA‰$‹}è&ÿÿH‹@ H+D$H…ÀŽ8H‹D$‹}L‰xL`èÿÿÿH‹@ L)àH…ÀŽð‹}IƒÄèãÿÿL‰îH‰ÇèXÿÿ‹}I‰ÅèÍÿÿL‰îH‰Çè2ÿÿ‹}I‰$è¶ÿÿL‰ ‹}è«ÿÿºH54H‰Çè÷ÿÿ‹}A‰ÄèŒÿÿH‹Aƒü…çL‹(I‹EL‹`A‹E % =…8M‹mL‰ïè4ÿÿ‰ÂE…ä„¿LcâC€|%ÿ;„°€;H5uœATL‰÷AUHEóºE1ÀE1É1Éè“ÿÿ‹}è ÿÿ‹}L‹`Pèÿÿÿ_AXL;`Xj‹}èêÿÿH‰Çè²ÿÿéuòÿÿL‰æH‰Çè"ÿÿéeòÿÿ‹}èÅÿÿ¹1ÒL‰îH‰ÇèãÿÿI‰ÄéÂúÿÿH‰ÆL‰çèÿÿH‰ÇH‰Åèuÿÿ‹wã E1É1ÉPE1ÀH5Ý›L‰÷UèöÿÿXZéòÿÿöÄ„óöÄtI‹Hƒz …ÀýÿÿöÄtI‹fïÀf.@(Š©ýÿÿ…£ýÿÿH=¿1Àèˆÿÿ‹}è ÿÿ1Ò¹L‰îH‰Çè>ÿÿH‰Çèæÿÿ‰ÂE…ä„qLcàA‹E % =„q‹}èÜÿÿ1Ò¹L‰îH‰ÇèúÿÿB€| ÿ;„4A‹E % =„.‹}è¢ÿÿL‰î¹1ÒH‰ÇèÀÿÿI‰ÅéNþÿÿ‹}è€ÿÿH‰Çè˜ÿÿéþÿÿ‹}èkÿÿ1ÒL‰þH‰ÇèN ÿÿ„À…ÃüÿÿéÿÿÿH…À„ÿÿÿI‹G€80…¨üÿÿéÿÿÿ‹}H‹[è*ÿÿH‹ Ý H‹T$H‰ÞH‰Çè³ ÿÿéÙ÷ÿÿ‹}èÿÿºë–‹}è÷ÿÿL‰âL‰æ¹H‰Çè” ÿÿI‰Äéíüÿÿ‹}èÔÿÿH‹t$¹H‰ÇH‰òèo ÿÿH‰D$é¡üÿÿ‹}è­ÿÿH‰ÇèõÿÿI‰ÄéSüÿÿè¸ÿÿH=aœ1ÀèêÿÿH=‹œ1ÀèÜÿÿM‹mé9ýÿÿM‹mé!ýÿÿf.„óúUH‰õSH‰ûHƒìdH‹%(H‰D$1ÀH‹ñÛ ‹8è2ÿÿH‰âH‰îH‰ßHPH‰$èZÿÿH‹$H‹L$dH3 %(uHƒÄ[]Ãèÿÿf.„óúAWAVAUATI‰üUH‰õSHƒì8H‹^dH‹%(H‰D$(1ÀH…Ûu ëDHƒÃt€;!tõ‹Eƒøtu…À„-ƒø„M‹´$ÀL‹-=Û 1ÛA‹}I‹.èwÿÿH‰ÚH‰îH‰Çè ÿÿH‰ÞL‰çèNÿÿH‹L$(dH3 %(H˜…Ï HƒÄ8[]A\A]A^A_Ãf„L‹-áÚ E1öA‹}èÿÿ¾ H‰Çè°ÿÿI‰ÇH‹E Hƒx~IfL‰öH‰ïè¥ ÿÿL‰çH‰ÆèzÿÿA‹}H‰ÃèÞÿÿH‰ÚL‰þH‰ÇèpÿÿH…ÛtƒCH‹E IƒÆL9p¹A‹}è°ÿÿL‰þH‰Çè% ÿÿM‹´$ÀH‰ÃéÿÿÿDH…Û„¹H=F]H‰Þó¦—À„À„é¹H=]H‰Þó¦—À„À„¯¹ H=pH‰Þó¦—À„À„»¹H= pH‰Þó¦—À„À„¹H=÷oH‰Þó¦—À„À„›¹ H=pH‰Þó¦—À„À„¾¹ H=pH‰Þó¦—À„À„¾¹ H=WoH‰Þó¦—À„À„ ¹ H=‡oH‰Þó¦—À„À„ø¹H=—H‰Þó¦—À„À„ì¹ H=oH‰Þó¦—À„À„ ¹H=toH‰Þó¦—À„À„̹H=oH‰Þó¦—À„À„ H5²nH‰ßèbÿÿ…À„cH‰ßH5P–èKÿÿH‹U L‹rH‹Z…À…L‰öHT$ H‰ßHÇD$ è®ÿÿL‹-_Ø H‹l$ H‰ÃA‹}è–ÿÿH‰ÞH‰êH‰ÇèhÿÿM‹´$ÀH‰Ãéõüÿÿ„L‹-!Ø 1ÛA‹}è^ÿÿ¾ H‰ÇèñÿÿH‰D$H‹E Hƒx ŽŽDH‰Ú1öH‰ïèkÿÿL‰çH‰Æè°ÿÿH‰Ú¾H‰ïI‰ÆèMÿÿL‰çH‰Æè’ÿÿA‹}I‰ÇèöÿÿHƒìE1ÉE1Àj1ÉL‰òH‰ÇAWjH‹t$(è¤ÿÿHƒÄ M…ÿt H…ÀtAƒGH‹E HƒÃH9X wÿÿÿA‹}è¦ÿÿH‹t$H‰ÇèÿÿM‹´$ÀH‰Ãéüÿÿf„H‹U H=6Z¹L‹-!× H‹ZH‰Þó¦A‹}—À„Àu ƒ:„¹L‹rèAÿÿH‰ÞL‰òH‰ÇèƒÿÿM‹´$ÀH‰ÃA€~„šûÿÿH‹E L‹xM…ÿ„‰ûÿÿH‹hIïL9ýré‘HÅI9¶U¸„ÒyçH‹58× ¶ÂL‰ùH)é¶H9ÁŒ?ûÿÿ€ú÷‡‰B><w{¶EƒàÀ<€… ûÿÿ¸ë¤L‹-MÖ A‹}èŒ ÿÿ1öH‰ÇèâÿÿM‹´$ÀH‰ÃéïúÿÿL‹-#Ö A‹}èb ÿÿA‹}H‰ÃèV ÿÿH³hH‰Çè7 ÿÿM‹´$ÀH‰Ãé´úÿÿ€úà„êB<‡“¶EƒàÀ<€…‘úÿÿ¶EƒàÀ<€…‚úÿÿ¸éÿÿÿL‹-¬Õ A‹}èë ÿÿA‹}H‰Ãèß ÿÿH³PH‰ÇèÀ ÿÿM‹´$ÀH‰Ãé=úÿÿL‹-qÕ A‹}è° ÿÿL‰òH‰ÞH‰ÇèòÿÿM‹´$ÀH‰ÃA€~„ úÿÿH‹E H‹pH…ö„øùÿÿH‹xèÒÄÿÿ„À„çùÿÿK M‹´$ÀéÓùÿÿL‹-Õ H‹E A‹}L‹pH‹Xè: ÿÿL‰òH‰ÞH‰Çè|ÿÿM‹´$ÀH‰ÃA€~„“ùÿÿH‹E L‹xM…ÿ„‚ùÿÿH‹hIïL9ýrë€HÅI9ï†zÿÿÿ¶U¸„ÒyçH‹50Õ ¶ÂL‰ùH)é¶H9ÁŒ7ùÿÿ€ú÷‡B><‡:¶EƒàÀ<€…ùÿÿ¸ë €úð„åƒÂ€ú‡øøÿÿ¶EƒàÀ<€…éøÿÿ¶EƒàÀ<€…Úøÿÿ¶EƒàÀ<€…Ëøÿÿ¸éLýÿÿ¶Eƒàà< „!þÿÿé­øÿÿ1ÒL‰þH‰ïè³ÿÿH…À…"ýÿÿé’øÿÿH‰ïè}ÿÿH‹E fïÒL‹pL‹hMõM9½I^ÿI}ÿA¶UÿI9þ‡&€ú:„I‰Ýë„€ú:„µH‰ÇHGÿ¶WÿH9Øuç€ú:„™1öòT$èÿÿH…íòT$xcfïÉòH*ÍòYÈH‰èHÁàH)èH‰ÅHÁåòXÑM9õ‡sÿÿÿL‹- Ó òT$A‹}èE ÿÿòT$H‰Çf(ÂèóÿÿM‹´$ÀH‰Ãé ÷ÿÿH‰èH‰êfïÉHÑèƒâH ÐòH*ÈòXÉëˆL‰èÆI‰ÅéYÿÿÿH‹ØÒ òL‹-Ò òD$A‹}èÖ ÿÿòD$H‰ÇèˆÿÿM‹´$ÀH‰Ãé5÷ÿÿH‰øL‰ïë®L‰èI‰ýH‰Çéûþÿÿ¶EƒÀp<‡ŠA¶EƒàÀ<€…”ûÿÿ¸ëžfDE1ÿH‹NÅ E1ö‹;èŒüþÿ¾ H‰ÇèÿÿH‰D$H‹E Hƒx Ž×L‰ò1öH‰ïè›ýþÿL‰çH‰ÆèàüþÿL‰ò¾H‰ïH‰$è|ýþÿL‰çH‰ÆèÁüþÿ‹;I‰Åè'üþÿL‰îH‰Çè ûþÿ‹;I‰ÅèüþÿL‰îH‰ÇèwýþÿH‰ÇI‰Å蜵ÿÿH…ÀtI‹¼$ÀL‰êH‰Æè´Ïÿÿ‹;èÝûþÿHƒìE1ÉE1Àj1ÉH‰ÇAUjH‹T$ H‹t$0è‰ýþÿHƒÄ H…Àt M…ítAƒEH‹E IƒÆL9p ,ÿÿÿ‹;èûþÿH‹t$H‰ÇèõþÿI‰ÆM…ÿ„[úÿÿL‰ÿH5:‚è¥þþÿH5àF1ÿI‰Åè”þþÿI‰ÇH…Àt6H‰Æ¹H=€‚ó¦IW—À„ÀLDúA€?%ufDIƒÇA€?%tö€|$„òùÿÿM…ít¹H=ÍL‰îó¦—À„À…üüÿÿM…ÿ„Æùÿÿ¹H=ô€éoH‹à ‹;èÀúþÿ1öH‰ÇèöþÿI‰Æé•ùÿÿfD¹ H=ÅL‰þó¦—À„À„²¹ H=°L‰þó¦—À„À„”¹ H=QL‰þó¦—À„Àt¹ H=CL‰þó¦—À„À…”H‹å ‹;è&úþÿ1Ò1öH‰ïL‹(èWûþÿL‰çH‰Æèœúþÿ1Ò¾H‰ïI‰Æè:ûþÿL‰çH‰Æèúþÿ‹;H‰$I‹FH‰D$èÛùþÿH‰Çè3þþÿ‹;èÌùþÿH‰Çèùþÿ‹;è½ùþÿ‹;H‹HxLqL‰pxèªùþÿL;°€„.‹;è–ùþÿL‰éH+HH‰ÈHÁøA‰‹;è~ùþÿH‹@ L)èH…ÀŽÝH‹$‹;IƒÅI‰Eè[ùþÿL‰(‹;èQùþÿºH5O€H‰Çèûþÿ‹;è6ùþÿ‹;L‹(M‹uIƒíè$ùþÿH‰ÇL‰öè øþÿ‹;I‰ÆèùþÿL‰(‹;èùþÿ‹;L‹hPèúøþÿL;hXh‹;èéøþÿH‰Çè±óþÿ€|$„½÷ÿÿH‹t$¹H=€ó¦—À„À„¬‹;è¯øþÿºH‹t$éèúÿÿ¹H=~L‰þó¦—À„À…åûÿÿ1Ò1öH‰ïè¶ùþÿ1Ò¾H‰ïI‰Çè¤ùþÿH‹Á I‰Å‹;èSøþÿ¾ H‰Çèæûþÿ‹;I‰Æè<øþÿHƒìE1ÉE1Àj1ÉL‰úL‰öAUH‰ÇjèìùþÿHƒÄ M…ít H…ÀtAƒE‹;èøþÿL‰öH‰Çèwñþÿ‹;I‰Æèí÷þÿºH5c}é$úÿÿ@1Ò1öH‰ïè ùþÿL‰çH‰ÆèQøþÿ1Ò¾H‰ïH‰ÃèïøþÿL‰çH‰Æè4øþÿI‰ÅH‹CH‹NÀ ‹;H‰$è‹÷þÿL‰îH‰ÇèñþÿI‰ÆM…ítAƒE€|$„OöÿÿH‹4$¹H=´}ó¦—À„À…¬L‰ÿH5~èzúþÿH5µB1ÿI‰ÇèiúþÿI‰ÅH…À„·H‰Æ¹H=E~ó¦—À„À… IƒÅM…ÿ„+¹H=¹}L‰þó¦—À„À„ M…íH=BHk}HEøL‰êL‰þéãøÿÿH‰ÇH‰L$è÷úþÿH‹L$é‰öÿÿ‹;è–öþÿºH‹4$éÐøÿÿ‹;èöþÿH‰Çè™ùþÿé„ýÿÿM…ÿ„Rõÿÿ¹H=z|L‰þó¦—À„À„4õÿÿA€?„*õÿÿ‹;è<öþÿºL‰þéwøÿÿH‹ྠH‹E ‹;L‹pL‹hèöþÿL‰òL‰îH‰ÇèWûþÿI‰ÆI‹„$À€x„ÙôÿÿH‹E L‹xM…ÿ„ÈôÿÿL‹hMïM9ýréÊIÅM9A¶U¸„ÒyæH‹5¿ ¶ÂL‰ùL)é¶H9ÁŒ€ôÿÿ€ú÷‡ÊB><‡¦A¶EƒàÀ<€…\ôÿÿ¸ëžfDH‹¾ ‹;èZõþÿ‹;I‰ÅèPõþÿIµhH‰Çè1ôþÿI‰Æé ôÿÿH‹ê½ ‹;è+õþÿ‹;I‰Åè!õþÿIµPH‰ÇèôþÿI‰ÆéñóÿÿL‰ÿH5Ð{è;øþÿH5v@1ÿI‰Çè*øþÿI‰ÅH…Àt|H‰Æ¹H=Õ{ó¦—À„À…ËIƒÅM…ÿt¹H=‚{L‰þó¦—À„À…ÉýÿÿM…í„{óÿÿ¹H=~{L‰îó¦—À„À„]óÿÿA€}„RóÿÿéŸöÿÿM…ÿ„DóÿÿH=){¹L‰þó¦H=•?—À„À…yýÿÿéóÿÿ€úà„ÖB<‡|A¶EƒàÀ<€…öòÿÿA¶EƒàÀ<€…æòÿÿ¸éíöÿÿH‰ïè]ñþÿH‹E L‹xL‹pMþM9÷ƒ­fïÛA½I_ÿò$fI~ÿA¶VÿI9ÿ‡ý€ú:„¡I‰Þë €ú:„™H‰ÇHGÿ¶WÿH9Ãuç€ú:„ƒ1öèçíþÿM…íxPfïÉòI*ÍòYÁL‰èòX$HÁàL)èI‰Åò$IÁåM9÷r…H‹ö» ‹;è7óþÿò$H‰ÇèêïþÿI‰Æé òÿÿL‰èL‰êfïÉHÑèƒâH ÐòH*ÈòXÉë›H‰øL‰÷I‰ÆAÆétÿÿÿM…ÿt/¹H=´yL‰þó¦—À„ÀtH=tyéüÿÿM…í„¥ñÿÿ¹H=àyé%þÿÿH‹Ž» H‹W» òò$éSÿÿÿ‹;èŠòþÿL‰êL‰î¹H‰Çè'ìþÿI‰Åéùÿÿ‹;èhòþÿH‰Çè°õþÿI‰Æé»øÿÿM‹vD‰ïèLòþÿH‹4$L‰òH‰Çè÷þÿI‰ÆI‹„$À€x„ñÿÿH‹E H‹pH…ö„þðÿÿH‹xènªÿÿ„À„íðÿÿAN éàðÿÿM…ÿ„\ýÿÿ¹H=·xL‰þó¦—À„À„>ýÿÿéúþÿÿH‹öº H‹wº òò$ésþÿÿL‰ðI‰þH‰Çéþÿÿ€úð„ZƒÂ€ú‡uðÿÿA¶EƒàÀ<€…eðÿÿA¶EƒàÀ<€…UðÿÿA¶EƒàÀ<€…Eðÿÿ¸éLôÿÿA¶Eƒàà< „5ýÿÿé&ðÿÿH‹hº H‹é¹ òfWå{ò$éÝýÿÿH‰ïèƒîþÿH‹E 1öH‹xètëþÿò$éµýÿÿ1ÒL‰þL‰ïè}íþÿH…À…ÜóÿÿéÆïÿÿ€úà„ÑB<‡{A¶EƒàÀ<€…¢ïÿÿA¶EƒàÀ<€…’ïÿÿ¸éÑúÿÿH‰ïE1ÿèîþÿH‹E L‹pL‹hMõM9îs}¹I^ÿI}ÿA¶UÿI9þ‡–€ú:„…I‰Ýëf„€ú:tjH‰ÇHGÿ¶WÿH9Ãuë€ú:tRº 1öH‰ $èFïþÿH‹ $H¯ÁIÇH‰ÈHÁàH)ÈH‰ÁHÁáM9îrŒH‹¶¸ ‹;è÷ïþÿL‰þH‰ÇèÜñþÿI‰ÆéËîÿÿL‰èÆI‰Åë£H‰øL‰ïëðL‰èI‰ýH‰Çë‹1ÒL‰þL‰ïèIìþÿH…À…àùÿÿé’îÿÿH‹E ÇD$,H‰ïH‹@H‰D$0èûìþÿH‹<¸ H‹E ‹;L‹hèuïþÿL‰îHL$,E1ÀH‰ÇHT$0èmðþÿ‹;I‰ÅèSïþÿL‰îH‰Çè8ñþÿI‰Æé'îÿÿA¶EƒÀp„‡D‰ïM‹vèxëþÿH‹4$L‰òH‰Çè¹ðþÿI‰ÅI‹„$À€xt H‹E H‹pH…öuK‹;èDëþÿL‰îH‰Çè¹îþÿ€|$I‰Æ„êÿÿA€ „êÿÿA€ „üéÿÿ‹;èëþÿIw ºéHíÿÿH‹xèW£ÿÿ„Àt¨AM ëžH‹E HT$0HÇD$0H‹pH‹xèÊíþÿH‹{³ L‹t$0I‰Å‹;è´êþÿL‰òL‰îH‰Çè†êþÿI‰Æé…éÿÿ‹;è—êþÿ¹1ÒL‰îH‰ÇèµçþÿéÍþÿÿH5IqL‰ÿè±íþÿH5ì51ÿH‰Ãè íþÿI‰ÅH…Ût8H5$qH‰ßè¹èþÿ…Àt%M…íHãpL‰êH‰ÞH=~5HEø1ÀèóíþÿI‰ÅH‹Ѳ ‹;èêþÿ1ÒL‰îH‰ÇèåéþÿI‰ÆéäèÿÿD‰ïèõéþÿ1öH‰ÇèKåþÿI‰Åé˜þÿÿL‹l$0‹;M…íˆ{úÿÿèÎéþÿL‰îH‰ÇèsîþÿI‰Æé¢èÿÿè¶éþÿL‰îH÷ÞH‰ÇèXîþÿI‰Æé‡èÿÿ‹;è™éþÿH‰Çè±ìþÿéÇçÿÿM…í„jèÿÿH5rpL‰ïèäçþÿ…À„Sèÿÿéñôÿÿè‚åþÿ‹;è[éþÿL‰òL‰ö¹H‰ÇèøâþÿI‰Æéêæÿÿ‹;è9éþÿH‰ÇèìþÿI‰Ç餿ÿÿöÄ„¤H‹H…À„WûÿÿH‹@Hƒøvs‹;H‰ $èÿèþÿH‹ $H‰ÇH‰Îè€ëþÿH‰ $èçèþÿºH‹ $H‰ÇH‰ÎèÃáþÿH‹ $„À„ ûÿÿë»èÀèþÿ‹;H‹°àH‰4$è®èþÿH‹4$1ÒH‰Çè°íþÿH‹@é™úÿÿH…À„ÑúÿÿH‹A€80…wÿÿÿé¿úÿÿöÄt9öÄtH‹Hƒz …ZÿÿÿöÄ„žúÿÿH‹fïÀf.@(Š?ÿÿÿ„†úÿÿé4ÿÿÿH‰ $è5èþÿ1ÒéLÿÿÿ‹;è'èþÿ¹1ÒL‰îH‰ÇèEåþÿI‰ÆéÊùÿÿL‰öH‰ÇèRìþÿé„ùÿÿ‹;èöçþÿ1Ò¹L‰öH‰ÇèåþÿH‰Âé.ùÿÿè×çþÿºH5”nH‰ÇèíþÿI‰ÅéBùÿÿff.„óúAUATUSH‰ûHƒìH‹P° H‹o‹8èçþÿH‰ÞH‰ÇèòæþÿL‹{° A€;'u Hƒø‡ÛH…À„¶UH‰ïE1ÀE1ÉI‰ÂHOE1äˆQÿApE„ÉuR€€ú\tsA8t~€ú:A”Å€ú,”ÂAÕt E„ätw€HcÖH9Âs&H‰Ï¶TA‰ðHOApˆQÿE„ÉtµHcÖE1ÉH9ÂrÚM…ÒtIƒêH‰ùÆH‹L‰PHƒÄ[]A\A]ÃA¹ë¨„Aƒôëšf.„IƒêApE‰áé€ÿÿÿ¶U€ú"…%ÿÿÿHLþ€9"…ÿÿÿÆE'Æ'¶UéÿÿÿDE1ÒH‰ééÿÿÿDóúAWºAVAUATUH‰õSH‰ûHƒìƒ‡”è·áþÿH…À„Þ‹³9³”e‹E öÄ…H¶Àƒø „Ôƒø …›H‹EL‹%˜® L‹hHƒxA‹<$E‰îtèÉåþÿH‰îH‰ÇèÞëþÿA‹<$A)Æè²åþÿH‰îH‰Çè׿þÿE…ö~RE1íA‹<$AƒÅè’åþÿºH‰îH‰ÇèââþÿA‹<$I‰ÇèvåþÿL‰úH‰îH‰ÇèHêþÿH‰ßH‰Æè ÿÿÿE9îu¹„H‹{81ÒH‰î1ÀèÀáþÿƒ«”HƒÄ[]A\A]A^A_Ãf.„L‹%Ñ­ E1íA‹<$è åþÿH‰îH‰Çè¢ßþÿPA‰Æ…Ò~¨A‹<$èïäþÿ1ÉL‰êH‰îH‰ÇèŸçþÿH…Àt H‹0H‰ßèþÿÿIEM9õ„rÿÿÿI‰ÅëÅDH‹uH‰ßè\þÿÿéWÿÿÿH=Hn1Àèùäþÿf„óúAWAVAUATI‰ôUSHƒì8H‰T$H‰|$èlêþÿH5üiH=§kH‰Ã1Àè$èþÿH‹-­ I‰Å‹}èBäþÿ¹ºL‰îH‰ÇèÝâþÿH5½iH=ukH‹@H‹H‰$1ÀèÝçþÿ‹}I‰Åèäþÿ¹ºL‰îH‰ÇèâþÿH5}iH=iH‹@L‹(1Àè¡çþÿ‹}I‰ÆèÆãþÿ¹ºL‰öH‰ÇèaâþÿH5AiH= kH‹@L‹01Àèeçþÿ‹}I‰ÇèŠãþÿ¹ºL‰þH‰Çè%âþÿH5iH=ÝjH‹@H‹H‰D$1Àè$çþÿ‹}I‰ÇèIãþÿ¹ºL‰þH‰ÇèäáþÿH5ÄhH=iH‹@L‹81Àèèæþÿ‹}H‰D$ è ãþÿH‹t$ ¹ºH‰Çè¤áþÿH5„hH=ijH‹@L‹1ÀL‰D$(è£æþÿ‹}H‰D$ èÆâþÿH‹t$ ¹ºH‰Çè_áþÿL‹D$(H‹@H‹M…À„Z A‹@ ‹}© …ð öÄÿ…<„ÿ‰Æº"æÿÀþ „æH‹5W« ˆöÄÿ…l<„d‰ÆºæÿÀþ „KÇC,‹A ‰È« öÄ„‡% =…ßH‹‹@ ‰ƒèîáþÿH‰ÇèFæþÿ‹}èÞáþÿH‰ÇèáþÿH‹$H…À„y‹P ‰ÐÁèƒà…ØöÆÿ…'€ú„‰ÑáÿÀù „ ‰M…ÿ„7A‹W ‰ÐÁèƒà…uöÆÿ…,€ú„#‰ÑáÿÀù „€‰C H 1¿H‰CèðÞþÿI‰D$ÆM…öt4A‹F © …üöÄÿ…û<„ó‰ÂâÿÀú „ß1ÀHƒ|$tjH‹D$‹P ÷ …YöÆÿu€út‰Ñ1ÀáÿÀù u:DöÆ„·H‹L$1ÀH‹H…ÒtH‹RHƒúwH…ÒtH‹Q€:0t¸AˆD$M…í„A‹U ÷ …¥öÆÿ…„€ú„{‰Ñ1ÀáÿÀù „eDAˆD$H‹5,© H‰ßL‰£˜è5àþÿH‹t$H‰ßè¨àþÿL‹t$H‰ßL‰öèˆÝþÿH‹{81ÀèÝåþÿ1Àè¶ßþÿH‰ßL‰öH‰C8è—Øþÿ1öH‰ßèmÞþÿH‰ßè¥âþÿI‹|$è»áþÿ‹}è³ßþÿ‹}H‹XPè§ßþÿH;XX-‹}è•ßþÿHƒÄ8[H‰Ç]A\A]A^A_éOÚþÿ€öÄtKI‹0º"H…ö„ýÿÿH‹vº'Hƒþ‡ñüÿÿº"H…ö„ãüÿÿI‹P€:0•ÂT’"éÐüÿÿfDöÄ„ïöąƺ"öÄ„ªüÿÿI‹0fïÀf.F(z„–üÿÿº'éŒüÿÿf.„öÄ„÷I‹ºH…À„žüÿÿH‹@ºHƒø‡‹üÿÿºH…À„}üÿÿI‹@1Ò€80••éeüÿÿDöÆ„ßH‹ $H‹H…Ò„ÝüÿÿH‹RHƒú†i¸‰M…ÿ…Êüÿÿ1Àéýÿÿf„öÆ„×I‹H…Ò„ãüÿÿH‹RHƒú†E¸éËüÿÿöÄ„ïI‹H…À„ ýÿÿH‹@Hƒø‡mýÿÿH…À„õüÿÿI‹F€80…WýÿÿéãüÿÿföÆtsI‹U1ÀH…Ò„ŒýÿÿH‹R¸Hƒú‡yýÿÿ1ÀH…Ò„nýÿÿI‹E€80•Àé_ýÿÿ€H‹Q¦ ‹éûÿÿf.„‹}èhÝþÿH‰Çè€àþÿé¾ýÿÿöÆ„ÿöÆ….1À€æ„ ýÿÿI‹UfïÀf.B(ºšÀEÂéîüÿÿfDöÄ„—öÄ…ÖöÄ„üÿÿI‹fïÀf.@(Šküÿÿ„öûÿÿé`üÿÿöÄ„göÄ…^ºöÄ„˜úÿÿI‹fïÀf.@(z„„úÿÿºézúÿÿföÆ„öÆ…€æ„óúÿÿH‹$fïÀH‹1Àf.B(ºšÀEÂéÑúÿÿöÆ„¿öÆ…®€æ„ýúÿÿI‹1ÀfïÀf.B(ºšÀEÂéßúÿÿ€H‰L$ èÜþÿH‹L$ ºH‰ÇH‰ÎèáÔþÿ‹}éúÿÿf„öÆ„/öÆtH‹D$H‹Hƒx …Oûÿÿ1À€æ„IûÿÿH‹L$fïÀH‹f.B(Š-ûÿÿ„,ûÿÿé"ûÿÿfI‹Hƒy …uýÿÿé?ÿÿÿDH‹ $H‹ Hƒy …ýÿÿéãþÿÿI‹0ºHƒ~ …5ùÿÿéŠþÿÿ„I‹0º'Hƒ~ …ßøÿÿé"üÿÿ„I‹Hƒz …¢úÿÿéþÿÿDI‹M¸Hƒy …Ôúÿÿé¹ýÿÿ€H…Ò„]ùÿÿH‹A€80•À¶ÀéKùÿÿDH…Ò„‡ùÿÿI‹G€80•À¶ÀéuùÿÿD‹}è°ÚþÿH‹t$1ÒH‰Çè‘Óþÿé!úÿÿ@‹}èÚþÿ1ÒL‰þH‰ÇèsÓþÿ¶Àé3ùÿÿ‹}èpÚþÿ1ÒL‰öH‰ÇèSÓþÿ„À„lùÿÿéÖùÿÿfD‹}èHÚþÿ1ÒL‰îH‰Çè+ÓþÿéúÿÿfDH‰L$(L‰D$ è!Úþÿ1ÒL‹D$ H‰ÇL‰ÆèÿÒþÿL‹D$ H‹L$(„ÀA‹@ ‰Â„ÇÁê‹}A¹'ƒâH‹5ᢠDˆ…Ò„÷ÿÿH‰L$(L‰D$ èÇÙþÿºL‹D$ H‰ÇL‰Æè¢Òþÿ‹}H‹L$(„À…öüÿÿºép÷ÿÿ„‹}èˆÙþÿH‹4$1ÒH‰ÇèjÒþÿ¶Àéà÷ÿÿfH‰L$(L‰D$ èaÙþÿ1Òë›D1Àé!ùÿÿ1Àé·÷ÿÿf„H‹9¢ ‹}Æ"ëÁê‹}A¹"ƒâé4ÿÿÿ@‹}èÙþÿºé˜þÿÿfD‹}èøØþÿºL‰þH‰ÇèØÑþÿ¶Àé˜÷ÿÿ‹}èØØþÿH‹4$ºH‰Çè·Ñþÿ¶Àé-÷ÿÿ€‹}è°ØþÿºL‰îH‰ÇèÑþÿékøÿÿH‰L$(L‰D$ è‰Øþÿºé`þÿÿ€‹}èpØþÿH‹t$ºH‰ÇèNÑþÿéÞ÷ÿÿf„óúAUH5Ú]I‰ýH=^ATUSHƒì(dH‹%(H‰D$1ÀèìÛþÿL‹%Í  H‰ÃA‹<$è Øþÿ¹H‰ÞºH‰Çè¤ÖþÿA‹<$H‹@H‹(èä×þÿ1ÒH5]#H‰Çè#ÝþÿH‹ì  H‰æL‰ïH‰ÃH‰$èÊÖþÿH‹Hƒx…¤H…ít'‹E © …ñöÄÿu<<t8‰ÂâÿÀú t(H‹L$dH3 %(H‰Ø…ÜHƒÄ([]A\A]ÃfDöÄt#H‹EH…ÀtÊH‹@HƒøvXK ë·€öÄt[öÄu.öÄt¡H‹EfïÀf.@(zÒtëÎfDH‰ßèàÔþÿéOÿÿÿH‹UHƒz u­ëÅH…À„_ÿÿÿH‹E€80u–éQÿÿÿA‹<$èÇÖþÿ1ÒH‰îH‰ÇèªÏþÿ„À…rÿÿÿé-ÿÿÿDA‹<$èŸÖþÿºH‰îH‰ÇèÏþÿëÓè¨Òþÿ„óúAVAUI‰õATUSH‹"Ÿ ‹;ècÖþÿ‹;H‹(èYÖþÿ‹;H‹PxHJüH‰HxLc2èCÖþÿH‹@JðH)ÅHÁýƒýuk‹;EfIcìè!ÖþÿL$íH‹@H‹<èèì×þÿ‹;I‰ÅèÖþÿL‰îH‰Çèg×þÿ‹;I‰ÅèíÕþÿH‹@L‰,è‹;èÞÕþÿ‹;H‹hèÓÕþÿLåH‰([]A\A]A^ÃH5M]L‰ïèµÔþÿDóúHƒì(H‹éž dH‹%(H‰D$1ÀH‰4$H‰æÇD$èÔþÿ‹D$H‹L$dH3 %(uHƒÄ(ÃèÑþÿff.„@óúAWAVI‰öAUATUSHƒìH‹ì ‹;è-Õþÿ‹;L‹ è#Õþÿ‹;H‹PxHJüH‰Hx‹*èÕþÿHcÕH‹@HÐI)ÄIÁüAƒü…1‹;DmƒÅMcíHcíèÞÔþÿ‹;N$íH‹@N‹,èèÇÔþÿ‹;H‹@H‹,èè¸ÔþÿH‰ÇH‰îèM×þÿ‹;H‹L‹p(èŸÔþÿ‹;H‹@ö@#…èŠÔþÿH‰ÇèÚþÿH‰ÅL‰öL‰ïè„Òþÿ‹;LcèèjÔþÿ‹;H‹@Nt ø‹E %ÿ™ƒøA”ÇèKÔþÿ€¸¹tjE„ÿteM L‰mI‰n‹;è'Ôþÿ‹;H‹hèÔþÿIìL‰ HƒÄ[]A\A]A^A_ÀèûÓþÿ‹;H‹hèðÓþÿH‹@H‹@H‹lÅé_ÿÿÿfD‹;èÑÓþÿL‰êH‰îH‰Çè#ÐþÿëH5M[L‰÷è²ÒþÿfóúAUI‰ýH=nYATUSH‰óH5)YHƒì(dH‹%(H‰D$1ÀèI×þÿL‹%*œ H‰ÅA‹<$èfÓþÿº¹H‰îH‰ÇèÒþÿ1ÒöC tyH‹@H‹[H‹(öC „ôH‹œ H‰æL‰ïH‰$è.ÒþÿH‹Hƒx…ÀH…ít6‹E © …%öÄÿtPöÄtkH‹EH…ÀtH‹@Hƒø†äK ºH‹L$dH3 %(‰Ð…ýHƒÄ([]A\A]À<t¬‰ÂâÿÀú tœºë½DöÄtcöÄt H‹UHƒz u—öÄt™H‹EfïÀf.@(zƒtˆé|ÿÿÿ„H‰ßè(Ðþÿé3ÿÿÿA‹<$è7ÒþÿH²H‰ÞH‰ÇèÕÎþÿéìþÿÿA‹<$èÒþÿ1ÒH‰îH‰ÇèúÊþÿ„À…&ÿÿÿé(ÿÿÿDH…À„ÿÿÿH‹E€80…ÿÿÿéÿÿÿDA‹<$èÏÑþÿºH‰îH‰Çè¯Êþÿë³èØÍþÿ„óúAWAVI‰öAUATUSHƒìH‹Lš ‹;èÑþÿ‹;L‹ èƒÑþÿ‹;H‹PxHJüH‰Hx‹*ènÑþÿHcÕH‹@HÐI)ÄIÁüAƒü…‹;DmƒÅMcíHcíè>Ñþÿ‹;N$íH‹@N‹,èè'Ñþÿ‹;H‹@L‹4èèÑþÿ‹;H‹@ö@#…ˆèÑþÿH‰Çè{ÖþÿH‰ÅL‰öL‰ïè]Ñþÿ‹;LcèèãÐþÿ‹;H‹@Nt ø‹E %ÿ™ƒøA”ÇèÄÐþÿ€¸¹tcE„ÿt^M L‰mI‰n‹;è Ðþÿ‹;H‹hè•ÐþÿIìL‰ HƒÄ[]A\A]A^A_Ãè{Ðþÿ‹;H‹hèpÐþÿH‹@H‹@H‹lÅéfÿÿÿfD‹;èQÐþÿL‰êH‰îH‰Çè£Ìþÿë–H5ÍWL‰÷è2ÏþÿfóúAWAVAUATUH‰ýSH‰óHƒìëfD‹C öÄt(H‹[1ÒH‰ÞH‰ïè‡ËþÿH…ÀuâHƒÄ[]A\A]A^A_öÀƒø „¬ƒø uÝH‹L‹%}˜ L‹hHƒxA‹<$E‰îtè®ÏþÿH‰ÞH‰ÇèÃÕþÿA‹<$A)Æè—ÏþÿH‰ÞH‰Çè¼ÐþÿE…ö~•E1íA‹<$AƒÅèwÏþÿºH‰ÞH‰ÇèÇÌþÿA‹<$I‰Çè[ÏþÿL‰úH‰ÞH‰Çè-ÔþÿH‰ïH‰ÆèÿÿÿE9îu¹HƒÄ[]A\A]A^A_ÃfDL‹%Ù— A‹<$èÏþÿH‰ÞH‰Çè­ÉþÿP…ÒŽÿÿÿA‰ÆE1íA‹<$èóÎþÿ1ÉL‰êH‰ÞH‰Çè£ÑþÿH…Àt H‹0H‰ïè£þÿÿIEM9î„ÔþÿÿI‰ÅëÅóúAWAVAUI‰õATUSHƒì8H‰T$(H‰|$ èœÔþÿH5—TH=×UH‰Å1ÀèTÒþÿH‹5— I‰Ä‹;èsÎþÿ¹ºL‰æH‰ÇèÍþÿH5YTH=¦UH‹@L‹81ÀèÒþÿ‹;I‰Äè8Îþÿ¹ºL‰æH‰ÇèÓÌþÿH5TH=·SH‹@H‹H‰D$1ÀèÒÑþÿ‹;I‰ÄèøÍþÿ¹ºL‰æH‰Çè“ÌþÿH5ÞSH=>UH‹@L‹ 1Àè—Ñþÿ‹;I‰Æè½Íþÿ¹ºL‰öH‰ÇèXÌþÿH5£SH=UH‹@L‹01Àè\Ñþÿ‹;H‰D$è€ÍþÿH‹t$¹ºH‰ÇèÌþÿH5dSH==SH‹@H‹H‰D$1ÀèÑþÿ‹;H‰D$è<ÍþÿH‹t$¹ºH‰ÇèÕËþÿH‹@H‹0H…ö„¥ ‹V ‹;÷ …¤ ‰Ð%ÿ…€ú„þ‰ÑáÿÀù „êf.„‰²š èÅÌþÿH‰ÇèÑþÿ‹;è¶ÌþÿH‰ÇèîËþÿM…ät5A‹D$ © …Ù öÄÿ…(<„ ‰ÂâÿÀú „ M…öt7A‹F © … öÄÿ…g<„_‰ÂâÿÀú „KM…ÿ„Ÿ A‹W ‰ÐÁèƒà… öÆÿ…¤€ú„›‰ÑáÿÀù „‡€‰EH‹D$H…À„G ‹P ‰ÐÁèƒà…ž öÆÿ……€ú„|‰ÑáÿÀù „h„‰E Hb¿H‰EèHÉþÿI‰EÆM…ät5A‹D$ © …$ öÄÿ…[<„S‰ÂâÿÀú „?1ÀM…öteA‹V ÷ …° öÆÿu€út‰Ñ1ÀáÿÀù u9@öÆ„?I‹1ÀH…Òt"H‹RHƒúwH…ÒtI‹V€:0t D¸AˆEH‹D$H…À„I ‹P ÷ …Ú öÆÿ…ñ€ú„è‰Ñ1ÀáÿÀù „ÒfAˆEH‹5Å“ H‰ïL‰­˜è–ÊþÿH‹t$(H‰ïè ËþÿL‹|$ H‰ïL‰þèéËþÿH‰ïL‰þèÃþÿ1öH‰ïèäÈþÿH‰ïèÍþÿI‹}è3Ìþÿ‹;è,Êþÿ‹;H‹hPè!ÊþÿH;hX§‹;èÊþÿHƒÄ8[H‰Ç]A\A]A^A_éÊÄþÿf.„öÆtCH‹1ÀH…Ò„ ýÿÿH‹R¸Hƒú‡úüÿÿ1ÀH…Ò„ïüÿÿH‹F€80•À¶ÀéÝüÿÿDöÆ„/öÆ…Ö‰Ð%„¹üÿÿH‹1ÀfïÀf.B(ºšÀEÂé›üÿÿöÄ„I‹$H…À„ÞüÿÿH‹@Hƒø†ôH5?OH=¹O1ÀèÿÌþÿ‹;H‰D$è#ÉþÿH‹t$¹ºH‰Çè¼ÇþÿH‹@H‹0H…öt3‹F © …ªöÄÿ…9<„1‰ÂâÿÀú „H5ÈNH=ßR1ÀèˆÌþÿ‹;H‰D$è¬ÈþÿH‹t$1ÒH‰ÇèMÊþÿ‹;è–ÈþÿH‹€àH‹@Hƒ8„Ù‹;èzÈþÿH‹€àH‹@H‹‹A öÄuO© …yöÄÿu<t‰ÂâÿÀú …üÿÿ@öÄ„÷H‹H…À„ëûÿÿH‹@Hƒø†‹;H‰L$è ÈþÿH‹L$H‰ÇH‰Îè‰Êþÿf„öÄ„×I‹H…À„£ûÿÿH‹@Hƒø‡‰þÿÿH…À„ŒûÿÿI‹F€80…sþÿÿézûÿÿföÄ„'H‹H…À„ÎþÿÿH‹@Hƒø‡UûÿÿH…À„·þÿÿH‹F€80…?ûÿÿé¥þÿÿföÆ„×I‹H…Ò„kûÿÿH‹RHƒú†¸éSûÿÿöÆ„çH‹L$H‹H…Ò„†ûÿÿH‹RHƒú†¸énûÿÿfDöÄ„/I‹$H…À„«ûÿÿH‹@Hƒø‡üÿÿH…À„”ûÿÿI‹D$€80…íûÿÿéûÿÿ„öÆ„ŸH‹L$1ÀH‹H…Ò„üÿÿH‹R¸Hƒú‡üÿÿ1ÀH…Ò„öûÿÿH‹A€80•Àéçûÿÿ€‹;èiÆþÿH‰ÇèÉþÿéEüÿÿ@öÄ„'öÄ…ÞöÄ„ÉùÿÿI‹$fïÀf.@(Šæüÿÿ„°ùÿÿéÛüÿÿ€öÆ„ÇöÆ…f1À€æ„kûÿÿH‹D$fïÀH‹f.B(ºšÀEÂéJûÿÿf.„öÄ„öÄ…>öÄ„núÿÿI‹$fïÀf.@(ŠÂúÿÿ„Uúÿÿé·úÿÿ€öÆ„§öÆ…Ž€æ„…ùÿÿI‹1ÀfïÀf.B(ºšÀEÂégùÿÿ€öÆ„GöÆ…f€æ„•ùÿÿH‹D$fïÀH‹1Àf.B(ºšÀEÂérùÿÿföÄ„7öÄtI‹Hƒz …°ûÿÿöÄ„³øÿÿI‹fïÀf.@(Š•ûÿÿ„›øÿÿéŠûÿÿfDöÆ„ÏöÆtI‹Hƒx …Ìùÿÿ1À€æ„ÆùÿÿI‹fïÀf.B(Нùÿÿ„®ùÿÿé¤ùÿÿ@öÄ„ÏöÄtH‹Hƒz …,øÿÿöÄ„ŽûÿÿH‹fïÀf.@(Šøÿÿ„vûÿÿéøÿÿfDöÄ„ÿöÄtH‹Hƒz …üÿÿöÄ„Û÷ÿÿH‹fïÀf.@(Šìûÿÿ„Ã÷ÿÿéáûÿÿfDI‹Hƒy …•üÿÿé_þÿÿDH‹L$H‹ Hƒy …­üÿÿé‚þÿÿH‹¸Hƒy …Ýöÿÿéúÿÿ„H‹D$H‹¸Hƒy …øøÿÿé}ýÿÿI‹$Hƒz …‘øÿÿé®ýÿÿ@I‹$Hƒz …úÿÿéýÿÿ@H…À„ÓöÿÿI‹D$€80…õùÿÿéÀöÿÿ@H…Ò„7÷ÿÿI‹G€80•À¶Àé%÷ÿÿDH…Ò„g÷ÿÿH‹A€80•À¶ÀéU÷ÿÿD‹;èéÂþÿ1ÒL‰öH‰ÇèÌ»þÿéü÷ÿÿ€‹;èÉÂþÿ1ÒL‰öH‰Ç謻þÿ„À…pùÿÿéwöÿÿ€‹;è¡Âþÿ‹;H‹°àH‰t$èŽÂþÿH‹t$1ÒH‰ÇèÇþÿH‹@éúÿÿfDH‰t$èfÂþÿ1ÒH‹t$H‰ÇèG»þÿ‹;¶Àé}õÿÿD‹;èAÂþÿH‹t$1ÒH‰Çè"»þÿé÷ÿÿD‹;è!Âþÿ1ÒL‰æH‰Çè»þÿ„À„˜õÿÿéÃøÿÿ€‹;èùÁþÿH‹t$1ÒH‰ÇèÚºþÿ¶ÀéBöÿÿf‹;èÙÁþÿ1ÒL‰þH‰Ç輺þÿ¶ÀéÔõÿÿ@‹;è¹Áþÿ1ÒL‰æH‰Ç蜺þÿ„À„]öÿÿé¿öÿÿ€1Àéñõÿÿ1Àé™õÿÿf„1Àééöÿÿf„‹;1Àé—ôÿÿ€H‰t$èVÁþÿºéèþÿÿ@‹;èAÁþÿºëƒf.„‹;è)ÁþÿH‹t$ºH‰Çèºþÿ¶Àéoõÿÿ€‹;èÁþÿºL‰þH‰Çèá¹þÿ¶Àéùôÿÿf„‹;èÙÀþÿH‹t$ºH‰Çè·¹þÿé2öÿÿf‹;è¹Àþÿºéþÿÿ€‹;H‰t$èœÀþÿ1ÒH‹t$H‰Çè}¹þÿ„À…Môÿÿé³÷ÿÿ‹;èyÀþÿºL‰öH‰ÇèY¹þÿé‰õÿÿ@‹;èYÀþÿºéˆýÿÿ€‹;H‰t$è<Àþÿºë›D‹;H‰L$è$Àþÿ1ÒH‹L$H‰ÇH‰Îè¹þÿH‹L$„À„Íóÿÿéë÷ÿÿH…À„¿óÿÿH‹A€80…Õ÷ÿÿé­óÿÿD‹;H‰L$èÔ¿þÿºë«ff.„fóúAUH5µEI‰ýH=wEATUSHƒì(dH‹%(H‰D$1Àè\ÃþÿL‹%=ˆ H‰ÃA‹<$èy¿þÿH‰Þ¹ºH‰Çè¾þÿA‹<$H‹@H‹(èT¿þÿ1ÒH5Í H‰Çè“ÄþÿH‹\ˆ H‰æL‰ïH‰ÃH‰$誽þÿH…ít-‹E © …ïöÄÿuB<t>‰ÂâÿÀú t.fDH‹L$dH3 %(H‰Ø…ÔHƒÄ([]A\A]ÃfDöÄt#H‹EH…ÀtÊH‹@HƒøvHK ë·€öÄtSöÄuöÄt¡H‹EfïÀf.@(zÒtëÎfDH‹UHƒz u½ëÕH…À„oÿÿÿH‹E€80u¦éaÿÿÿf„A‹<$èG¾þÿ1ÒH‰îH‰Çè*·þÿ„À…zÿÿÿé5ÿÿÿDA‹<$è¾þÿºH‰îH‰Çèÿ¶þÿëÓè(ºþÿ„óúAVAUI‰õATUSH‹¢† ‹;èã½þÿ‹;H‹(èÙ½þÿ‹;H‹PxHJüH‰HxLc2èýþÿH‹@JðH)ÅHÁýƒýuk‹;EfIcì衽þÿL$íH‹@H‹<èèü¿þÿ‹;I‰Å肽þÿL‰îH‰Çèç¾þÿ‹;I‰Åèm½þÿH‹@L‰,è‹;è^½þÿ‹;H‹hèS½þÿLåH‰([]A\A]A^ÃH5ÍDL‰ïè5¼þÿDóúHƒì(H‹i† dH‹%(H‰D$1ÀH‰4$H‰æÇD$è}»þÿ‹D$H‹L$dH3 %(uHƒÄ(Ãèÿ¸þÿff.„@óúAWAVI‰öAUATUSHƒìH‹l… ‹;è­¼þÿ‹;L‹ 裼þÿ‹;H‹PxHJüH‰Hx‹*莼þÿHcÕH‹@HÐI)ÄIÁüAƒü…1‹;DmƒÅMcíHcíè^¼þÿ‹;N$íH‹@N‹,èèG¼þÿ‹;H‹@H‹,èè8¼þÿH‰ÇH‰îè;þÿ‹;H‹L‹p(è¼þÿ‹;H‹@ö@#…è ¼þÿH‰Çè‚ÁþÿH‰ÅL‰öL‰ïèô¼þÿ‹;Lcèèê»þÿ‹;H‹@Nt ø‹E %ÿ™ƒøA”ÇèË»þÿ€¸¹tjE„ÿteM L‰mI‰n‹;è§»þÿ‹;H‹h蜻þÿIìL‰ HƒÄ[]A\A]A^A_Àè{»þÿ‹;H‹hèp»þÿH‹@H‹@H‹lÅé_ÿÿÿfD‹;èQ»þÿL‰êH‰îH‰Ç裷þÿëH5ÍBL‰÷è2ºþÿfóúAUI‰ýH=î@ATUSH‰óH5AHƒì(dH‹%(H‰D$1ÀèɾþÿL‹%ªƒ H‰ÅA‹<$èæºþÿº¹H‰îH‰Çè¹þÿ1ÒöC tkH‹@H‹[H‹(öC „ÌH‹…ƒ H‰æL‰ïH‰$è¹þÿH…ít6‹E © …öÄÿtNöÄtiH‹EH…ÀtH‹@Hƒø†ÒK ºH‹L$dH3 %(‰Ð…ëHƒÄ([]A\A]ÃD<t®‰ÂâÿÀú tžºë¿DöÄtSöÄt H‹UHƒz u™öÄt›H‹EfïÀf.@(z…tŠëA‹<$èß¹þÿHZH‰ÞH‰Çè}¶þÿéÿÿÿ„A‹<$è·¹þÿ1ÒH‰îH‰Çèš²þÿ„À…8ÿÿÿé:ÿÿÿDH…À„,ÿÿÿH‹E€80…ÿÿÿéÿÿÿDA‹<$èo¹þÿºH‰îH‰ÇèO²þÿë³èxµþÿ„óúAWAVI‰öAUATUSHƒìH‹ì ‹;è-¹þÿ‹;L‹ è#¹þÿ‹;H‹PxHJüH‰Hx‹*è¹þÿHcÕH‹@HÐI)ÄIÁüAƒü…‹;DmƒÅMcíHcíèÞ¸þÿ‹;N$íH‹@N‹,èèǸþÿ‹;H‹@L‹4è踸þÿ‹;H‹@ö@#…ˆè£¸þÿH‰Çè¾þÿH‰ÅL‰öL‰ïè]¹þÿ‹;Lcè胸þÿ‹;H‹@Nt ø‹E %ÿ™ƒøA”Çèd¸þÿ€¸¹tcE„ÿt^M L‰mI‰n‹;è@¸þÿ‹;H‹hè5¸þÿIìL‰ HƒÄ[]A\A]A^A_Ãè¸þÿ‹;H‹hè¸þÿH‹@H‹@H‹lÅéfÿÿÿfD‹;èñ·þÿL‰êH‰îH‰ÇèC´þÿë–H5m?L‰÷èÒ¶þÿfóúUSHƒìH‹w€ ‹;踷þÿLL?¿çà H E?H‰ÆHC?1ÀèDºþÿ‹;‰Åè‹·þÿ‹;è„·þÿ‹;è}·þÿHf~ÿÿH5?H‰Çè¸þÿ‹;è`·þÿHYùÿÿH5?H‰Çèú·þÿ‹;èC·þÿHìýÿÿH5?H‰ÇèÝ·þÿ‹;è&·þÿHOúÿÿH5 ?H‰ÇèÀ·þÿ‹;è ·þÿHRqÿÿH5?H‰Ç裷þÿ‹;èì¶þÿHeàÿÿH5þ>H‰Ç膷þÿ‹;è϶þÿHåÿÿH5ö>H‰Çèi·þÿ‹;è²¶þÿH5ù>HTáÿÿH‰ÇèL·þÿ‹;è•¶þÿHƒÄ‰î[H‰Ç]éųþÿóúHƒìHƒÄÃÃþÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿÔ¿þÿh¿þÿh¿þÿÀ¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿðÀþÿh¿þÿh¿þÿh¿þÿpÁþÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿÂþÿh¿þÿh¿þÿ(ÃþÿhÃþÿ Âþÿ°ÄþÿðÃþÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿh¿þÿhÄþÿ--- %%YAML:%d.%d --- &%s ? *%s! tag:yaml.org,2002/x-private:!!---'' \'\\\0\a\b\f\r\t\v\e\n\"|+>~tag:yaml.org,2002:nullboolstrtag:yaml.org,2002:seq[tag:yaml.org,2002:map{[] ]{} id%03dèáþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÈáþÿ¨áþÿˆáþÿháþÿHáþÿ(áþÿáþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿèàþÿÓàþÿÓàþÿÓàþÿÓàþÿàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿpàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿÓàþÿ(àþÿäâþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÄâþÿ¤âþÿ„âþÿdâþÿDâþÿ$âþÿâþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿäáþÿÏáþÿÏáþÿÏáþÿÏáþÿŒáþÿÏáþÿláþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿÏáþÿ$áþÿ~çþÿ0èþÿ~çþÿèþÿ~çþÿ•çþÿÙæþÿ,ëþÿ¬ëþÿÐêþÿÐêþÿ|ëþÿ¬êþÿÐêþÿÐêþÿÐêþÿüêþÿABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/0123456789ABCDEFStack now %dtoken %s (nterm %s (Starting parse parser stack overflowStack size increased to %lu Entering state %d Reading a token: Now at end of input. Next token isShifting token %s, -> %s syntax errorError: poppingError: discardingShifting error token, $end$undefinedYAML_ANCHORYAML_ALIASYAML_TRANSFERYAML_TAGURIYAML_ITRANSFERYAML_WORDYAML_PLAINYAML_BLOCKYAML_DOCSEPYAML_IOPENYAML_INDENTYAML_IEND'-'':''['']''{''}'',''?'$acceptdocind_repatom_or_emptyindent_openindent_endindent_sepindent_flex_endword_repstruct_repbasic_seqtop_imp_seqin_implicit_seqin_inline_seqinline_seq_atomtop_imp_mapcomplex_keycomplex_valuecomplex_mappingin_implicit_mapbasic_mappingin_inline_mapinline_map_atomReducing stack by rule %d (line %u), òþÿ òþÿ©÷þÿ©÷þÿZøþÿ òþÿ òþÿ òþÿƒöþÿçñþÿcöþÿSöþÿ òþÿ òþÿSöþÿ ùþÿÞöþÿƒöþÿçñþÿcöþÿ òþÿ òþÿ òþÿ òþÿ òþÿ òþÿƒöþÿçñþÿÞöþÿcöþÿ”øþÿPùþÿ òþÿSöþÿ òþÿ òþÿ òþÿ òþÿ òþÿSöþÿSöþÿ|ùþÿI÷þÿƒöþÿ ÷þÿçñþÿ÷þÿcöþÿÃøþÿÄùþÿSöþÿSöþÿ÷øþÿpøþÿ˜ùþÿ òþÿ òþÿ)÷þÿ)÷þÿI÷þÿƒöþÿ ÷þÿçñþÿ÷þÿcöþÿ òþÿSöþÿ òþÿp÷þÿ òþÿØøþÿÄ÷þÿSöþÿp÷þÿSöþÿ°øþÿ òþÿÔ÷þÿøþÿÌðþÿÌðþÿmöþÿmöþÿ÷þÿÌðþÿÌðþÿÌðþÿGõþÿ«ðþÿ'õþÿõþÿÌðþÿÌðþÿõþÿÎ÷þÿ¢õþÿGõþÿ«ðþÿ'õþÿÌðþÿÌðþÿÌðþÿÌðþÿÌðþÿÌðþÿGõþÿ«ðþÿ¢õþÿ'õþÿX÷þÿøþÿÌðþÿõþÿÌðþÿÌðþÿÌðþÿÌðþÿÌðþÿõþÿõþÿ@øþÿ öþÿGõþÿäõþÿ«ðþÿÄõþÿ'õþÿ‡÷þÿˆøþÿõþÿõþÿ»÷þÿ4÷þÿ\øþÿÌðþÿÌðþÿíõþÿíõþÿ öþÿGõþÿäõþÿ«ðþÿÄõþÿ'õþÿÌðþÿõþÿÌðþÿ4öþÿÌðþÿœ÷þÿˆöþÿõþÿ4öþÿõþÿt÷þÿÌðþÿ˜öþÿÆöþÿ !"#'*1!!!!()0023 !$%&+,./! %+%+%+ )3!&/&/&/ $-$.9; i?@mC 567QP "#$% S) cMNO k567WUmZÿÿ] :"#$%HIJ)LMNOUÿÿÿWÿÿZ9S]UÿÿWÿZÿÿ]ÿÿHIJmLMNOÿQ"#$ÿÿWÿ)Zÿÿ]567567ÿ567?ÿÿkCm"#$%ÿÿÿ)MNOMNOÿMNO ÿÿ aÿÿÿÿÿÿÿHIJÿLMNOstuvwx ÿ ÿÿÿÿÿ ÿ ÿÿÿÿÿ ÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿ ÿÿÿÿ ÿ ÿÿÿÿ ÿ ÿÿÿÿ ÿ ÿÿÿÿÿ ÿ ÿÿÿÿÿ ÿÿ  ÿÿ  ÿÿ  ÿÿ `!d14{hjf~lŸÿ>>vŸÿŸÿŸÿOŸÿ èŸÿŸÿÀŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿvvv`ŸÿOOO€ŸÿŸÿŸÿÔŸÿ ŸÿŸÿŸÿ ŸÿüÿŸÿŸÿŸÿO>Ÿÿþÿ$þÿŸÿ$ŸÿŸÿŸÿ€€€Ÿÿk---þÿOŸÿ>Ÿÿ>ŸÿžŸÿŸÿžŸÿŸÿžŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿOŸÿžŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿŸÿÿ &'(gce=>?,-@A}BC.23 "#$%&    4758KNOLA0E3J/@+<->) !'(29:HI6MA.?*;,=B1CDFG !!!!!!!!"""""##$%%%%%%&&&''(())**++++++,,-.////011223388<AFGJKPU^dehmqy~ƒ‘’•˜›œ¤©®¶ºÂÏÐÚÛÜÝÞäèîôùþ $(.29:@ELQV[`djkq{Œ™¡ª²¶¼½ÆÍÿÿ ÿÿ!ÿÿ"ÿÿÿÿ ÿÿÿÿÿÿÿÿÿ ÿ ÿÿ ÿÿ ÿ!ÿ!ÿ!ÿ!ÿÿÿ ÿ! ÿ ÿ#ÿ'ÿ*ÿ1ÿ%ÿ&ÿÿ&ÿ%ÿ&ÿ%ÿ&ÿ%ÿ$ÿ&$ÿ&ÿ(ÿÿ)ÿ()ÿÿ0ÿ+ÿ/ÿ/ÿ+ÿ/ÿ+ÿ/ÿ+ÿ!ÿÿÿ,-ÿ.ÿ/$ÿ/.ÿ/ÿÿ2ÿÿ3ÿ23ÿÿ0ÿ  $%(+.1368:newxLÿÿHKÿÿ¨Nÿÿ˜MÿÿHKÿÿxLÿÿxLÿÿÄVÿÿDTÿÿŒWÿÿ\Xÿÿ4XÿÿÄVÿÿÄVÿÿ VÿÿðRÿÿ@Vÿÿ0SÿÿˆVÿÿXVÿÿpVÿÿ€;d« `þÿ€Ðmþÿ¨0|þÿÀP}þÿ 0ŒþÿXPŒþÿpðþÿ¸àþÿðPþÿ pþÿ þÿ4ÐþÿHБþÿˆ€’þÿ¼`“þÿØp“þÿ쀓þÿð“þÿ@”þÿ8 ”þÿdp•þÿ À˜þÿìàšþÿ@ p›þÿx àžþÿÄ  þÿ ¡þÿh €£þÿ´ ð¥þÿ §þÿP °¨þÿ´ ­þÿ ð­þÿl À®þÿ¼  ±þÿ  ²þÿP @´þÿ˜ дþÿÐ @µþÿð  µþÿ  ÃþÿPpÃþÿxpÄþÿ¬ÅþÿØ0Æþÿ€ÆþÿLÐÆþÿt@Çþÿ°PÇþÿÈ`ÖþÿÜ×þÿÐ×þÿHßþÿÀ@ßþÿÜ ßþÿøðßþÿ0àþÿ0 àþÿlÐàþÿ”páþÿРáþÿüâþÿ( âþÿ<âþÿX ãþÿ”PãþÿÀ0äþÿì@äþÿpäþÿ äþÿ(ðäþÿDPåþÿ|€åþÿ¤åþÿ¸°åþÿÌÐåþÿàÀæþÿçþÿ( çþÿdàçþÿŒèþÿ¤`èþÿÄ èþÿì0éþÿ @éþÿ  éþÿDÐéþÿXPêþÿt`êþÿˆpêþÿœ€êþÿ°êþÿÄ êþÿذêþÿìÐêþÿëþÿ°ëþÿHPìþÿd@íþÿ¤€íþÿÀ îþÿÜ€îþÿïþÿ`0ïþÿŒ°ïþÿÐðïþÿäpðþÿñþÿ<0ñþÿX`ñþÿlòþÿ°òþÿÄPòþÿØ`òþÿìpòþÿ`óþÿ@ôþÿ| ôþÿ@ôþÿ¤`ôþÿ¸€ôþÿÌ ôþÿàõþÿ ÐõþÿX÷þÿ¼ ÷þÿüÀøþÿTðùþÿ¸Àúþÿ ûþÿlÐûþÿ˜Ðüþÿ¸ýþÿÌÀýþÿàÐýþÿôð*ÿÿ@+ÿÿT@+ÿÿhÀ+ÿÿ˜@,ÿÿÄ€,ÿÿØÀ,ÿÿ-ÿÿ0-ÿÿ|Ð.ÿÿ´€/ÿÿô <ÿÿDIÿÿ”0JÿÿøQÿÿ¤ Ðaÿÿ¸!@bÿÿä!0oÿÿD"€ÿÿÐ"àŽÿÿ # ÿÿX#àœÿÿ¤#°žÿÿà#€Ÿÿÿ $àŸÿÿ<$€¡ÿÿˆ$€£ÿÿÄ$¥ÿÿ%p¦ÿÿt%pµÿÿÀ%0·ÿÿü%¸ÿÿ<&`¸ÿÿX&ºÿÿ¤&à»ÿÿà&`½ÿÿ,'zRx $˜Zþÿ° FJ w€?:*3$"D hþÿ  H\hvþÿFHŽB B(ŒD0†A8ƒL@ƒ 8D0A(B BBBE H¨FŒD†D ƒeDB( ´ÿÿAFŒD†D ƒhDBHÌØÿÿ~FBŒA †A(ƒD0R (A ABBJ G(A ABB4 ÿÿ=A†EƒD g FAH A CAK <Pÿÿ©A†DƒD ](H0[(A P AAD DCAL„ÿÿ’ FBŽB E(ŒA0†A8ƒD = 8A0A(B BBBD LàÔÿÿÒ FBŽB E(ŒA0†A8ƒD  8A0A(B BBBJ `0d)ÿÿ)BBŽB B(ŒD0†A8ƒGPrXH`UXAPu 8J0A(B BBBL IXH`UXAP¨”0*ÿÿÉFBŽB B(ŒA0†D8ƒGp¡xF€XxAp\ 8A0A(B BBBB –xN€SxBp^xA€^xApPxM€VxAp' xN DxJ€SxBpExH€JˆBNp@T0ÿÿÆFBŽE E(ŒD0†A8ƒDpÈ 8A0A(B BBBC zxD€YxDpvxH€VxAp\xE€XxBpVxF€]xBp†xD€\xApõxA€[xApUxL€WxBpö xQ rxD€TxBpö xF€H ` xP vxE€UxAp–xH€JˆBNp)xE€kxBpsxN€FxAp(T@ÿÿfE†DƒG0N AAA \€T@ÿÿâ FBŽB B(ŒD0†D8ƒDp” 8A0A(B BBBJ >xH€JˆBNpˆàäLÿÿEFBŽB B(ŒD0†D8ƒD€ˆHYˆA€: 8A0A(B BBBE ˆHG˜B S€}ˆHJ˜E I€8l¨jÿÿ[FBŒA †A(ƒG0× (A ABBB H¨Ìkÿÿ·FGŽB B(ŒA0†D8ƒG@þ 8A0A(B BBBK Hô@mÿÿ7 FBŽB B(ŒD0†A8ƒDpê 8A0D(B BBBL 8@4yÿÿÈFSŒA †A(ƒDPÌ (A ABBG <|ÈzÿÿËFŽBE ŒA(†A0ƒ¥ (A BBBA ¼X{ÿÿQH0C A HØœ{ÿÿžFBŽE B(ŒA0†A8ƒD@) 8A0A(B BBBH 8$ð|ÿÿøFLŒA †A(ƒNPØ (A ABBH H`´~ÿÿ~FBŽE B(ŒA0†A8ƒD@ 8A0A(B BBBA `¬èÿÿoFBŽB B(ŒA0†D8ƒG@j 8A0A(B BBBD § 8A0A(B BBBG H ô€ÿÿóFBŽB E(ŒA0†A8ƒDpŸ 8A0D(B BBBO 8\ ¨ÿÿ¸FSŒA †A(ƒDPÄ (A ABBG <˜ ,‘ÿÿËFŽBE ŒA(†A0ƒ¥ (A BBBA Ø ¼‘ÿÿQH0C A Hô ’ÿÿžFBŽE B(ŒA0†A8ƒD@) 8A0A(B BBBH 8@!T“ÿÿØFLŒA †A(ƒNPÊ (A ABBF H|!ø”ÿÿ~FBŽE B(ŒA0†A8ƒD@ 8A0A(B BBBA (È!,–ÿÿKE†AƒD 5CDGNUÀpm0m`$"Q··V·a·m·x·†·’·¡·«·¶·Á·Í·Ø·ä·î·ò·ö·ú·þ·¸¸ ¸¸¸'¹¸"¸*¸0¸<¸G¸R¸b¸k¸¸v¸€¸Œ¸Ÿ¸œ¸ª¸ó¸º¸ƸÒ¸à¸ð¸¹¹¹¹U¸È PQ ü¯P$"X$"õþÿo`à x  (("pà< 4@ ûÿÿoþÿÿo 4ÿÿÿoðÿÿoü1ùÿÿo:(&"€QQ Q°QÀQÐQàQðQRR R0R@RPR`RpR€RR R°RÀRÐRàRðRSS S0S@SPS`SpS€SS S°SÀSÐSàSðSTT T0T@TPT`TpT€TT T°TÀTÐTàTðTUU U0U@UPU`UpU€UU U°UÀUÐUàUðUVV V0V@VPV`VpV€VV V°VÀVÐVàVðVWW W0W@WPW`WpW€WW W°WÀWÐWàWðWXX X0X@XPX`XpX€XX X°XÀXÐXàXðXYY Y0Y@YPY`YpY€YY Y°YÀYÐYàYðYZZ Z0Z@ZPZ`ZpZ€ZZ Z°ZÀZÐZàZðZ[[ [0[@[P[`[p[€[[ [°[À[Ð[à[ð[\\ \0\@\P\`\p\€\\ \°\À\Ð\à\ð\]] ]0]@]P]`]p]€]] ]°]À]Ð]à]ð]^^ ^0^@^P^`^p^€^^ ^°^À^Ð^à^ð^__`ã ã°ã"GCC: (GNU) 8.4.1 20200928 (Red Hat 8.4.1-1)GA$3a1ÀlÀlGA$3a1PQfQGA$3a1ü¯°GA$3a1Àlym GA$3p950€mv}GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFY€m—nGA+GLIBCXX_ASSERTIONS€m—n GA*FORTIFY—nv}GA+GLIBCXX_ASSERTIONS—nv} GA$3h950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p950€}†¥GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFY€}—}GA+GLIBCXX_ASSERTIONS€}—} GA*FORTIFY—}:GA+GLIBCXX_ASSERTIONS—}: GA*FORTIFY:#GA+GLIBCXX_ASSERTIONS:# GA*FORTIFY#–GA+GLIBCXX_ASSERTIONS#– GA*FORTIFY–»GA+GLIBCXX_ASSERTIONS–» GA*FORTIFY»ÛGA+GLIBCXX_ASSERTIONS»Û GA*FORTIFYÛ‚GA+GLIBCXX_ASSERTIONSÛ‚ GA*FORTIFY‚ƒGA+GLIBCXX_ASSERTIONS‚ƒ GA*FORTIFYƒÊƒGA+GLIBCXX_ASSERTIONSƒÊƒ GA*FORTIFYʃª„GA+GLIBCXX_ASSERTIONSʃª„ GA*FORTIFYª„¹„GA+GLIBCXX_ASSERTIONSª„¹„ GA*FORTIFY¹„É„GA+GLIBCXX_ASSERTIONS¹„É„ GA*FORTIFYÉ„2…GA+GLIBCXX_ASSERTIONSÉ„2… GA*FORTIFY2…„…GA+GLIBCXX_ASSERTIONS2…„… GA*FORTIFY„…å…GA+GLIBCXX_ASSERTIONS„…å… GA*FORTIFYå…¾†GA+GLIBCXX_ASSERTIONSå…¾† GA*FORTIFY¾†ŠGA+GLIBCXX_ASSERTIONS¾†Š GA*FORTIFYŠ,ŒGA+GLIBCXX_ASSERTIONSŠ,Œ GA*FORTIFY,Œ¾ŒGA+GLIBCXX_ASSERTIONS,Œ¾Œ GA*FORTIFY¾Œ/GA+GLIBCXX_ASSERTIONS¾Œ/ GA*FORTIFY/a‘GA+GLIBCXX_ASSERTIONS/a‘ GA*FORTIFYa‘^’GA+GLIBCXX_ASSERTIONSa‘^’ GA*FORTIFY^’Á”GA+GLIBCXX_ASSERTIONS^’Á” GA*FORTIFYÁ”1—GA+GLIBCXX_ASSERTIONSÁ”1— GA*FORTIFY1—I˜GA+GLIBCXX_ASSERTIONS1—I˜ GA*FORTIFYI˜ù™GA+GLIBCXX_ASSERTIONSI˜ù™ GA*FORTIFYù™ožGA+GLIBCXX_ASSERTIONSù™ož GA*FORTIFYož4ŸGA+GLIBCXX_ASSERTIONSož4Ÿ GA*FORTIFY4Ÿ GA+GLIBCXX_ASSERTIONS4Ÿ  GA*FORTIFY æ¢GA+GLIBCXX_ASSERTIONS æ¢ GA*FORTIFYæ¢æ£GA+GLIBCXX_ASSERTIONSæ¢æ£ GA*FORTIFY棆¥GA+GLIBCXX_ASSERTIONS棆¥ GA$3h950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p950¥e´GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFY¥¦GA+GLIBCXX_ASSERTIONS¥¦ GA*FORTIFY¦¦GA+GLIBCXX_ASSERTIONS¦¦ GA*FORTIFY¦á¦GA+GLIBCXX_ASSERTIONS¦á¦ GA*FORTIFYá¦e´GA+GLIBCXX_ASSERTIONSá¦e´ GA$3h950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p950p´š¸GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFYp´¸´GA+GLIBCXX_ASSERTIONSp´¸´ GA*FORTIFY¸´¹µGA+GLIBCXX_ASSERTIONS¸´¹µ GA*FORTIFY¹µ^¶GA+GLIBCXX_ASSERTIONS¹µ^¶ GA*FORTIFY^¶€·GA+GLIBCXX_ASSERTIONS^¶€· GA*FORTIFY€·Ð·GA+GLIBCXX_ASSERTIONS€·Ð· GA*FORTIFYз¸GA+GLIBCXX_ASSERTIONSз¸ GA*FORTIFY¸¸GA+GLIBCXX_ASSERTIONS¸¸ GA*FORTIFY¸š¸GA+GLIBCXX_ASSERTIONS¸š¸ GA$3h950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p950 ¸LÐGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFY ¸£ÇGA+GLIBCXX_ASSERTIONS ¸£Ç GA*FORTIFY£Ç_ÈGA+GLIBCXX_ASSERTIONS£Ç_È GA*FORTIFY_ÈÉGA+GLIBCXX_ASSERTIONS_ÈÉ GA*FORTIFYÉLÐGA+GLIBCXX_ASSERTIONSÉLÐ GA$3h950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p950PÐJØGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFYPÐ…ÐGA+GLIBCXX_ASSERTIONSPÐ…Ð GA*FORTIFY…ÐáÐGA+GLIBCXX_ASSERTIONS…ÐáÐ GA*FORTIFYáÐ6ÑGA+GLIBCXX_ASSERTIONSáÐ6Ñ GA*FORTIFY6ÑxÑGA+GLIBCXX_ASSERTIONS6ÑxÑ GA*FORTIFYxÑêÑGA+GLIBCXX_ASSERTIONSxÑêÑ GA*FORTIFYêÑÒGA+GLIBCXX_ASSERTIONSêÑÒ GA*FORTIFYÒ¸ÒGA+GLIBCXX_ASSERTIONSÒ¸Ò GA*FORTIFY¸ÒîÒGA+GLIBCXX_ASSERTIONS¸ÒîÒ GA*FORTIFYîÒRÓGA+GLIBCXX_ASSERTIONSîÒRÓ GA*FORTIFYRÓmÓGA+GLIBCXX_ASSERTIONSRÓmÓ GA*FORTIFYmÓÜÓGA+GLIBCXX_ASSERTIONSmÓÜÓ GA*FORTIFYÜÓdÔGA+GLIBCXX_ASSERTIONSÜÓdÔ GA*FORTIFYdÔžÔGA+GLIBCXX_ASSERTIONSdÔžÔ GA*FORTIFYžÔvÕGA+GLIBCXX_ASSERTIONSžÔvÕ GA*FORTIFYvÕÕGA+GLIBCXX_ASSERTIONSvÕÕ GA*FORTIFYÕ±ÕGA+GLIBCXX_ASSERTIONSÕ±Õ GA*FORTIFY±ÕáÕGA+GLIBCXX_ASSERTIONS±ÕáÕ GA*FORTIFYáÕ5ÖGA+GLIBCXX_ASSERTIONSáÕ5Ö GA*FORTIFY5Ö™ÖGA+GLIBCXX_ASSERTIONS5Ö™Ö GA*FORTIFY™ÖÌÖGA+GLIBCXX_ASSERTIONS™ÖÌÖ GA*FORTIFYÌÖÝÖGA+GLIBCXX_ASSERTIONSÌÖÝÖ GA*FORTIFYÝÖñÖGA+GLIBCXX_ASSERTIONSÝÖñÖ GA*FORTIFYñÖ×GA+GLIBCXX_ASSERTIONSñÖ× GA*FORTIFY× ØGA+GLIBCXX_ASSERTIONS× Ø GA*FORTIFY ØJØGA+GLIBCXX_ASSERTIONS ØJØ GA$3h950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p950PØPãGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFYPØíØGA+GLIBCXX_ASSERTIONSPØíØ GA*FORTIFYíØ#ÙGA+GLIBCXX_ASSERTIONSíØ#Ù GA*FORTIFY#ÙSÙGA+GLIBCXX_ASSERTIONS#ÙSÙ GA*FORTIFYSÙ¥ÙGA+GLIBCXX_ASSERTIONSSÙ¥Ù GA*FORTIFY¥ÙãÙGA+GLIBCXX_ASSERTIONS¥ÙãÙ GA*FORTIFYãÙ|ÚGA+GLIBCXX_ASSERTIONSãÙ|Ú GA*FORTIFY|Ú‰ÚGA+GLIBCXX_ASSERTIONS|Ú‰Ú GA*FORTIFY‰ÚèÚGA+GLIBCXX_ASSERTIONS‰ÚèÚ GA*FORTIFYèÚÛGA+GLIBCXX_ASSERTIONSèÚÛ GA*FORTIFYÛ”ÛGA+GLIBCXX_ASSERTIONSÛ”Û GA*FORTIFY”Û©ÛGA+GLIBCXX_ASSERTIONS”Û©Û GA*FORTIFY©Û¿ÛGA+GLIBCXX_ASSERTIONS©Û¿Û GA*FORTIFY¿ÛÏÛGA+GLIBCXX_ASSERTIONS¿ÛÏÛ GA*FORTIFYÏÛÙÛGA+GLIBCXX_ASSERTIONSÏÛÙÛ GA*FORTIFYÙÛéÛGA+GLIBCXX_ASSERTIONSÙÛéÛ GA*FORTIFYéÛøÛGA+GLIBCXX_ASSERTIONSéÛøÛ GA*FORTIFYøÛÜGA+GLIBCXX_ASSERTIONSøÛÜ GA*FORTIFYÜQÜGA+GLIBCXX_ASSERTIONSÜQÜ GA*FORTIFYQÜüÜGA+GLIBCXX_ASSERTIONSQÜüÜ GA*FORTIFYüÜ’ÝGA+GLIBCXX_ASSERTIONSüÜ’Ý GA*FORTIFY’݃ÞGA+GLIBCXX_ASSERTIONS’ÝƒÞ GA*FORTIFYƒÞÂÞGA+GLIBCXX_ASSERTIONSƒÞÂÞ GA*FORTIFYÂÞcßGA+GLIBCXX_ASSERTIONSÂÞcß GA*FORTIFYcßÐßGA+GLIBCXX_ASSERTIONScßÐß GA*FORTIFYÐßNàGA+GLIBCXX_ASSERTIONSÐßNà GA*FORTIFYNà~àGA+GLIBCXX_ASSERTIONSNà~à GA*FORTIFY~àüàGA+GLIBCXX_ASSERTIONS~àüà GA*FORTIFYüà8áGA+GLIBCXX_ASSERTIONSüà8á GA*FORTIFY8á¼áGA+GLIBCXX_ASSERTIONS8á¼á GA*FORTIFY¼áBâGA+GLIBCXX_ASSERTIONS¼áBâ GA*FORTIFYBârâGA+GLIBCXX_ASSERTIONSBârâ GA*FORTIFYrâ¨âGA+GLIBCXX_ASSERTIONSrâ¨â GA*FORTIFY¨âPãGA+GLIBCXX_ASSERTIONS¨âPã GA$3h950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p950PãíGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFYPã_ãGA+GLIBCXX_ASSERTIONSPã_ã GA*FORTIFY_ã”ãGA+GLIBCXX_ASSERTIONS_ã”ã GA*FORTIFY”ã­ãGA+GLIBCXX_ASSERTIONS”ã­ã GA*FORTIFY­ã·ãGA+GLIBCXX_ASSERTIONS­ã·ã GA*FORTIFY·ã¯äGA+GLIBCXX_ASSERTIONS·ã¯ä GA*FORTIFY¯äQåGA+GLIBCXX_ASSERTIONS¯äQå GA*FORTIFYQåmåGA+GLIBCXX_ASSERTIONSQåmå GA*FORTIFYmå‚åGA+GLIBCXX_ASSERTIONSmå‚å GA*FORTIFY‚å¤åGA+GLIBCXX_ASSERTIONS‚å¤å GA*FORTIFY¤åÂåGA+GLIBCXX_ASSERTIONS¤åÂå GA*FORTIFYÂåäåGA+GLIBCXX_ASSERTIONSÂåäå GA*FORTIFYäåTæGA+GLIBCXX_ASSERTIONSäåTæ GA*FORTIFYTæçGA+GLIBCXX_ASSERTIONSTæç GA*FORTIFYçQèGA+GLIBCXX_ASSERTIONSçQè GA*FORTIFYQèìèGA+GLIBCXX_ASSERTIONSQèìè GA*FORTIFYìèêGA+GLIBCXX_ASSERTIONSìèê GA*FORTIFYê9ëGA+GLIBCXX_ASSERTIONSê9ë GA*FORTIFY9ëìGA+GLIBCXX_ASSERTIONS9ëì GA*FORTIFYìáìGA+GLIBCXX_ASSERTIONSìáì GA*FORTIFYáìíGA+GLIBCXX_ASSERTIONSáìí GA$3h950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p950 í GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFY íîGA+GLIBCXX_ASSERTIONS íî GA*FORTIFYîÓîGA+GLIBCXX_ASSERTIONSîÓî GA*FORTIFYÓî ïGA+GLIBCXX_ASSERTIONSÓî ï GA*FORTIFY ïïGA+GLIBCXX_ASSERTIONS ïï GA*FORTIFYï2GA+GLIBCXX_ASSERTIONSï2 GA*FORTIFY2JGA+GLIBCXX_ASSERTIONS2J GA*FORTIFYJGA+GLIBCXX_ASSERTIONSJ GA*FORTIFY GA+GLIBCXX_ASSERTIONS  GA$3h950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p950û¯GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFYGA+GLIBCXX_ASSERTIONS GA*FORTIFYÁGA+GLIBCXX_ASSERTIONSÁ GA*FORTIFYÁGA+GLIBCXX_ASSERTIONSÁ GA*FORTIFYQGA+GLIBCXX_ASSERTIONSQ GA*FORTIFYQÞGA+GLIBCXX_ASSERTIONSQÞ GA*FORTIFYÞ GA+GLIBCXX_ASSERTIONSÞ  GA*FORTIFY É GA+GLIBCXX_ASSERTIONS É  GA*FORTIFYÉ b-GA+GLIBCXX_ASSERTIONSÉ b- GA*FORTIFYb-B:GA+GLIBCXX_ASSERTIONSb-B: GA*FORTIFYB:y;GA+GLIBCXX_ASSERTIONSB:y; GA*FORTIFYy;IBGA+GLIBCXX_ASSERTIONSy;IB GA*FORTIFYIBSGA+GLIBCXX_ASSERTIONSIBS GA*FORTIFYS†SGA+GLIBCXX_ASSERTIONSS†S GA*FORTIFY†Sr`GA+GLIBCXX_ASSERTIONS†Sr` GA*FORTIFYr`Å~GA+GLIBCXX_ASSERTIONSr`Å~ GA*FORTIFYÅ~+€GA+GLIBCXX_ASSERTIONSÅ~+€ GA*FORTIFY+€çGA+GLIBCXX_ASSERTIONS+€ç GA*FORTIFYç'ŽGA+GLIBCXX_ASSERTIONSç'Ž GA*FORTIFY'ŽøGA+GLIBCXX_ASSERTIONS'Žø GA*FORTIFYøËGA+GLIBCXX_ASSERTIONSøË GA*FORTIFYË!‘GA+GLIBCXX_ASSERTIONSË!‘ GA*FORTIFY!‘Î’GA+GLIBCXX_ASSERTIONS!‘Î’ GA*FORTIFYÎ’È”GA+GLIBCXX_ASSERTIONSÎ’È” GA*FORTIFYÈ”N–GA+GLIBCXX_ASSERTIONSÈ”N– GA*FORTIFYN–¿—GA+GLIBCXX_ASSERTIONSN–¿— GA*FORTIFY¿—³¦GA+GLIBCXX_ASSERTIONS¿—³¦ GA*FORTIFY³¦x¨GA+GLIBCXX_ASSERTIONS³¦x¨ GA*FORTIFYx¨K©GA+GLIBCXX_ASSERTIONSx¨K© GA*FORTIFYK©¡©GA+GLIBCXX_ASSERTIONSK©¡© GA*FORTIFY¡©N«GA+GLIBCXX_ASSERTIONS¡©N« GA*FORTIFYN«(­GA+GLIBCXX_ASSERTIONSN«(­ GA*FORTIFY(­®®GA+GLIBCXX_ASSERTIONS(­®® GA*FORTIFY®®û¯GA+GLIBCXX_ASSERTIONS®®û¯ GA$3h950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950ÀlÀlGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA$3a1û¯û¯GA$3a1û¯û¯GA$3a1fQkQGA$3a1° °,€mö,߀}(,´M¥Õ,Ÿop´*,í ¸¬, œPÐú,¯PØ ,¦ÌPãË ,Þ íé/,˜!ë’ÛC q€mö9Ø9Üint,'•s\\l”á–kv–GŒ —G¬l³×ÐÅ UZ9 Ø1k Ì?3@ Ì6 ³ T7 ³ |8 ³ 9 ³ Ì: ³( ; ³0 ª < ³8 I= ³@ 5@ ³H A ³P ”B ³X ÓD„` & FŠh 4H@p T I@t iJ ”x a MU€ éN†‚ Oƒ QPQ ˆ 3XY   ©[«˜ ­\¶  ²]Ѝ ’^ ¬° µ_ -¸ øV`@À ¡ b¼Äƒä '+ Áäl 9w ¦¦ ª±lÌ9Š ‰Øk ŠØB ‹Øã  @b   â  @Á   B  „ Ð ½ z  @   @ ~ È  ¬ Ÿ · ^H ·@·¬„ †ÎÃB `à 0 „;id † Ø íT ˆ; ; Š ³ v Œ ³ º> £§ Ö ¥ ¬( b``RQ mÃ~ rž ýG wÛ¸ôÁ jìÈK Ç( * ä `  ‘* ¼ ’* ï “Gidx ”G Ø Ž —r ä ˜ (, ™* ï šGidx ›G ~ ž§ ä Ÿžptr  ³len ¡G ÕÜ • ÕÏE œ Ûstr ¢ áÛ0r– «ó È òœ "C ô Ø ’ ôØ Ö ö @  ö@ ë# øy }H ú« òU üÍ( Ý þ~ 0, _ 4  -8lH  ³@ ³He  ³P« *³X? 3³`Ñ ;³hÅ D³pI M³x%  @€½  @„9  @ˆeof  @Œio  2 5 ˜. 5  ‰ 5 ¨¸ ; °ø  @¸ë  @¼î  ¬Àn ¬¨ Ú ÖÐptr Ø Ø   ÚóJ ­Ü  Ýbeg ß ³ptr ß³end ß³   á) ê ®* ) äy ¶ æ @ C é @ N ë @ ô í ³ 98 ï© ó °…‹ØŸŸ¥çÔ| ±·½ÍŸ³: ²ÙߥóŸ³Þ ³ÿ G# ³# GGœ- ´5 ; GY ³Y GGÐ' ¶~ ¢J  »© Uåm û)  íÀ§$CÕ<5´ ® E n W  5 à # !str Y 6"Ù #s – $ Ø2 %¥¶M & ³Ù 'A Ÿ#Ìí³€mœ $O4íŸ%idxï @qg%capð @çá%strñ ³>2%tokò ³ÈÀ& ö®m&i{8n&fhn&¼ o@n&u‚Óm&· jn&y…Nn&duÛm'ö ()_ l*$)nÕ *Us+on"*U~*T $ &+¨m/*Ud,ÿ„@ nÖœy-T„!ys-O4„7Ÿ.lvl†; Å/áÍ0yy2°1yy3µˆp0yy5Ã1yy4½+o1yy6Ƹp1yy8Ö¦p2ù†&=™0s&߃ôo&ä“ào&~+q2`&tq&j r&eHs&oˆs&Ì5Àr&y$Ðt&Ñ?t&O~ˆt2[&½þÀo&û §o&Âhs&aæPr&¸ø:r&θs&à¢s&B¡Àq&Ȫq&J¥u2t–2Ï(&Ô-Ÿu2¡…&Ù‡v&_ˆÆu&dÛúu&ô,v&zPv&ˆ‡Bv&õ£Êv&ú¤Ðv&«0x&µÀt&¦Ôv&$¸>x2±2Ä®2¼ô&¨Úx&²èpw&ƒûLu&Ó¢w2}  &‡ 1hy&­âw&ˆÛw&Îþ‚w&·îTu&‚ Ÿy3×n @.t @db'@†4)¦ l‡4¡§þî+q*Us's4)í lä®' Ô( 2 ³ '°¢5]8@'¸(ÍN³÷ ë (\ O³ { 6ßMzMzds7· µ 7üÜ Ú 7ð ÿ +[z<*Us*T8µ”{P\¶7Ò& $ 7ÆL J 9{G8¨{ ]7¨q o 7œ– ” 7» ¹ 9µ{R)3z]*U|9;z/)Mz]C*U|)czj[*U|9_{j)m{w‰*U*Tv9}{]9†{/+½{j*U|8µÖ|ÐHû7Òà Þ 7Æ  9ß|G6ê|ê|IJ7¨- ) 7œm k 7’ )ztjb*U|9ày])ëy„‡*Us9¿|]9È|/)Bt‘¿*Us*Q2+Jt‹ *Us'À(41í @» µ )t‘*Us*Q3+½v‘*Us*Q2'_41Þ @ +›r‘*Us*Q4)hpw*Us)èpž*Us)Bq‘¬*Us*Q2)Oq‹ Ä*Us)^q«Ü*Us)êqžô*Us)òq„ *Us)ör‘)*Us*Q6)s‹ A*Us)sžY*Us+u‘*Us*Q6'€ë() lkU(¡ ^R){¾*Us)Ÿ|Ö*Us+m}*Us' ()š lðæ+ x*Us'p4%idx§ @…a%cap¨ @í%str© ³ˆl%tokª ³¦¢'ðÄ()Ñ lüÞ3ò|s%(=¹³1/(غ@XT%i»@š)ÿ|¸*T0+J}"*U*T w” $ &)–u=*Us)ËwU*Us)¡x"{*U*T w” $ &)@|"¡*U*T w” $ &+d|"*U*T w” $ &3wH%nÝ¥ 9wÄ)3wž*Us9IwÑ+u/*Ud)o„L*Us)Bo„d*Us+€p*Uss :™…³µ;…¹;®…g;²…-:öG~³ß;~¹;®~g:¬;®;®Ë;²-<ââ °mmu<; ; ¼ < xÑ3‡C R q€}(JUÜ,9Ø4áU”\•–kintv–;Œ —;§œ§ Ø1: Ì?3} Ì6 œ T7 œ |8 œ 9 œ Ì: œ( ; œ0 ª < œ8 I= œ@ 5@ œH A œP ”B œX ÓDS` & FYh 4H}p T I}t iJ „x a Mh€ éNo‚ O_ƒ QPQoˆ 3XY ©[z˜ ­\…  ²]Y¨ ’^ U° µ_ B¸ øV`}À ¡ b‹Äƒ³ '+ ÁN³ §o4F ¦u ª€ §›4®››Š‰·:Š·B‹·ã  } ¡ìá ìâ  }Á ì'×.#U Z4 N   Ð É z  }   } ~ Ô  ¸ Ÿ à ^H Ã}ø †ÚÏJ N þ ê µ ¯ [6QN m0Ã~N rO ýGN wŒ¸ôÁ jìÈKê ®˜ ) äç ¶ æ } C é } N ë } ô í œ 98 ïç)N ÂNíÀ§$CÕ<5´ ® E n W BŒ! g’   .ðð 0 }- 2 }ú 4 } 6 }  8 œÛ : }Ð < }ä >O ¯ @A$t B }(2 D },Ñ F 60Ô HN82 HN@ä H#NH J BPlH L œXÅ Lœ` N ;h' Pp Rðx¸ TT€ø U }ˆë V }ŒM W }ÕP X }”î Z U˜ #ýœ;Zb $+1A« N &a8 ®  cq4a  q 0¶ \œ4@Œ àµ_ 6𣖜í e&KCn3¸ª Í?:}aS!oid 6‘¸"ë  œ‘@#À^ $idx6}ü$anc7œOM%q2«¤ð> ¿&š2vr&Ž2°®&‚2ÖÔ'¹¤3(U}(T0)Ý2¹¤¹¤? + &ú2ûù&î2 'Õ¤3(U}(T1(Q ÿ(Rv(X~*—¤3+«¤+3P (Uv*ê¤83+G¤D3} (Tv(Q‘¸+m¤D3• (Q‘@+†¤+3­ (Uv+4¥83Å (Tv*E¥P3*_¥P3*†¥\3,½ äð¢öœ eä"WC$lvlæT8.-¦>çT·§+£½.a (Us+ £Ž.y (Us+:£i*£ (Us(T í(Q1.t£i*¼ (UóU+Œ£i*æ (Us(T ƒ²(Q1/¬£i*(UóU(T ²(Q1,ù u Öœ~eu#i_nu0åÛ$lvlwT]W#PL -¦>|T¬¦0 ¢Eõ -Ë Š}ùõ1¢6$iŒ}>6'C¢i*(U|(T(Q1+Ø Ž. (U|+ü Ë!% (U|'¡i*(U|(T ı(Q2# -¦>¤T¡0©¢=Ù -Ë ¨}Û×1¶¢0$iª} 'Ü¢i*(U|(T(Q1+X¡Ž.ñ (U|'¡Ë!(U|#ð¸ $iÀ}‡# ‘ -Ë Âœìæ+\¢3^ (U~ $ &+¢i*| (U|(Tv'•¢e3(Uv'Ê i*(U|(T ʶ(Q2+- ½.Ð (U|+t i*ú (U|(T ʶ(Q2.– %(UóU(TóT+?¡i*D(U|(T N·(Q2+È¡Ë!\(U|'ï¡i*(U|(T N·,T Y@ŸÄœ°eY"B 6 tagY+œÖ Ê ä Y?j!^!-¦>[Tú!ò!$lvl\T`"V"+ZŸŽ.(Us+eŸ½.4(Us+€Ÿ‘"_(Us(T~(Q g²+¼Ÿi*‰(Us(T }²(Q1'øŸi*(Us(T ̱(Q2,  >pžÄœâe>"Û"Ï"tag>+œo#c# ä >?0$÷#-¦>@T“$‹$$lvlATù$ï$+ŠžŽ.N(Us+•ž½.f(Us+°ž‘"‘(Us(T~(Q O²+ìži*»(Us(T e²(Q1'(Ÿi*(Us(T ̱(Q2,z  P˜©œãe %v%h% 5  ,}&& h  8§g&c&str Gœ¨& &len Q;''-ýF œ„'n'-< œy(m($end œ)û(+†˜i*Ñ(U|(T +²(Q1+£˜Ë!é(U|+™i*(U|+0™Ë!(U|.{™i*2(UóU+‹™i*P(U|(Qs+“™Ë!h(U|+´™i*’(U|(T ²(Q1+Ô™i*¼(U|(T û±(Q1'ô™i*(U|(T )²(Q1,¿ ê@— œoeê&*ø) h ê.§¥*¡*strê=œæ*Þ*lenêG;M+E+-ýFì œ¾+¬+-<í œ,,$endî œ--+i—i*½(U}(T '²(Q1+ˆ—Ë!Õ(U}+·—i*í(U}+Ä—Ë!(U}. ˜i*(UóU+$˜i*H(U}(T û±(Q1'D˜i*(U}(T )²(Q1,‹ «Дaœ³e«&¼-²- 5 «-}2...str«:œr.j.len«D;Õ.Ñ.-æ ­ §//-ýF® œ€/v/-<¯ œý/õ/$end° œh0\0+ •i*^(U|(T %²(Q1+L•i*ˆ(U|(T ²(Q2.z•i*³(UóU(T %²(Q1+”•i*Ý(U|(T $²(Q2+Ó•Ë!õ(U|+ð•Œ(U|(Q1+ –i*<(U|(T ²(Q2+,–i*f(U|(T ²(Q2+L–i*(U|(T ²(Q2+l–i*º(U|(T ²(Q2+Œ–i*ä(U|(T !²(Q2+¬–i*(U|(T ²(Q2+Ì–i*8(U|(T ²(Q2+ì–i*b(U|(T  ²(Q2+ —i*Œ(U|(T  ²(Q2',—i*(U|(T Ô±(Q1,Ò l`’aœ÷el(ø0î0 5 l/}n1j1strl<œ®1¦1lenlF;2 2-æ n §R2J2-ýFo œ¼2²2-<p œ9313$endq œ¤3˜3+’i*¢(U|(T þ±(Q1+Ü’i*Ì(U|(T ²(Q2. “i*÷(UóU(T þ±(Q1+$“i*!(U|(T ²(Q2+c“Ë!9(U|+€“ŒV(U|(Q1+œ“i*€(U|(T ²(Q2+¼“i*ª(U|(T ²(Q2+Ü“i*Ô(U|(T ²(Q2+ü“i*þ(U|(T ²(Q2+”i*((U|(T !²(Q2+<”i*R(U|(T ²(Q2+\”i*|(U|(T ²(Q2+|”i*¦(U|(T  ²(Q2+œ”i*Ð(U|(T  ²(Q2'¼”i*(U|(T Ô±(Q1,Ò Mp‘eM&44*4 5 M-}ª4¦4strM:œë4ã4lenMD;N5J52æ O §-ýFP œ£5‡5-<Q œÕ6É6+©‘i*Ê(Uv(T þ±(Q1+Ì‘i*ô(Uv(T ý±(Q2+ð‘i*(Uv(T(Q1.’i*B(UóU(T þ±(Q1+<’i*e(Uv(T~(Q2'\’i*(Uv(T ²(Q1, -01œåe-#a7W7src-5åÝ7Ó7len-?;Y8O8$i/ }×8Ë8+si*(Us(T+‘i*C(Us(T ™ì(Q1+Èi*f(Us(T~(Q1+ái*‰(Us(T(Q1+‘i*®(Us(T ÉÅ+?‘i*Ë(Us(Q1'Z‘i*(Us(Q1\, šoœ1!e%k9]9tag.œ :: Þ EOX:B: , V}A;=; / h}};y; h ‘§Á;µ;str‘,œW<K<len‘6;ú<ð<-s“O=m=-¦>”T>…>$lvl•Tí>é>-ª – }=?%?-¥— œ:@4@+:šŽ.1(Uv+Eš½.I(Uv+uš1!p(U‘œ”(Ts(Q}+…šr3(Us(T‘¸+Å›1!¶(U‘œ”(Ts(Q0+Ò›r3Ó(Us(T0+!œ‘"û(Uv(T‘°(Q‘¸+sœ³( (Uv(T‘œ”(Qs(R}.£œi*S (UóU(T ²(Q1+øœi*w (Uv(Ts(Q}+o¤ (Uv(T‘œ”(Qs(R}+§âà (Uv(T‘œ”(Q ‘£”8$8&(Rs(X}+Ê÷ !(Uv(T‘œ”(Qs(R}'ù3(U‘°(T /²¹ *}ÀŒoœË! ð *}“@…@ Ñ*(œ5A+A3len*5;Q$i, ;¶A¤A-<,;‡BuB-Í?- }\CFC,A ø0ŒŽœ‘"eø%ODED$iú }ÌDÄD$lvlûT1E+E#°|"-Ë þœ€EzE*sŒ3+²Œi*n"(U|(Tv4¾Œe3'@Œ½.(U|,-ÅŠœ%eÅ"ÕEÉEtagÅ1›bFZF % ÅB›ÆF¾F$lvlÇT2G(G#P7$-lÒ }¥G¡G0ø‹q#-·AÕ}ÝGÛG' Œi*(Uv(Ts(Q}n $ &#€ø#-c Ø› HH+Š‹i*­#(Uv(Ts+ž‹i*×#(Uv(T é±(Q1'¬‹i*(Uv(T~(Q}+Њ+3$(Us'çŠi*(Uv(T ÷±(Q1+;Š3V$(Us(TóQ+Nн.n$(Uv+´Ši*˜$(Uv(T Ó±(Q2+Ä‹i*Â$(Uv(T ö±(Q2+Ì‹+3Ú$(Us+Ü‹i*ø$(Uv(Ts 'ð‹i*(Uv(T Ô±(Q1,, jÀ†Hœ *ej„H|Hnj&õHãH!oidl 6‘¨"ë m œ‘°-2 n }ÄI¼I-¦>oT+J#J$lvlpT—J‡J5É ·‡#À¯&-1 yœGK?K%Ý2àˆð{ _&&ú2¦K¤K&î2ØKÒK'öˆ3(U}(T1(Q@(R °±(X1(Y0+ψŒ3|&(U@(T1+;‰i*š&(Us(T}'C‰e3(U}#`Ù'$anšœ)L!L%Ý2cˆ› 3'&ú2‡L…L&î2¹L³L'qˆ3(U~(T1(Q ÿ(R DZ(X+Eˆ+3K'(U*Nˆ3*‡ˆ+3+–ˆi*ƒ'(Us(T~+žˆe3›'(U~+°ˆ83²'(Q0'~‰i*(Us(T ̱(Q20‰`Î($an«œMM%Ý2¸‰ ¬ i(&ú2SMQM&î2…MM'ɉ3(Uv(T1(Q ÿ(R ϱ(X|+‰+3((U|*¦‰3*Ó‰+3+â‰i*¹((Us(Tv'ê‰e3(Uv+ö†½.æ((Us+(‡i*)(Us(T ±(Q4+K‡º--)(Us(Q2+S‡½.E)(Us+p‡D3d)(Tv(Q‘¨6‡~)(Us(Tv+‰‡P.–)(Us+ä‡i*À)(Us(T ²(Q1+ ˆD3Ù)(Q‘°+0ˆD3ð)(Q0*÷‰P3*Š\3, H…Uœi*eH"ÖMÎM Š H*;=N5N7Í…(Us(Qv,• "ð…Μú+e""¡N™Nstr"1›OOlen";;¯O£O$at$ ;7P1P#g+-g3 ;‰P…P%§2p†05M+&Ð2ÁP¿P&Ä2èPäP&¸2 QQ'†—3(Qv'† *(Us(T0)§2*†*† @Ï+&Ð2EQCQ&Ä2jQhQ&¸2QQ'5†—3(T}(Q|+R† *ì+(Us(T0*µ†ú+,ò @…Dœ@,e"¼Q´Q'~…Œ3(T1,\ Єbœß,e!#RR+Ý„ì.Š,(Us+å„Q-¢,(Us*õ„e3*…e3*)…e3/2…e3(UóU8 ûÀ„ œ-9eû#U: û8ðT8 'õ°„ œQ-9eõ$U: õ:T8;â ƒªœº-;eâ)ŒR‚R+HƒP.™-(Us'£ƒ¢3(U ²(T08n Ï ‚ûœP.;eÏ& SS;lenÏ-}pShS<98ÏIç×SÏS+ž‚+3*.(U~+©‚¢3B.(U~*ƒ¯38; Ãà1œŽ.;eÃ&er­U§U+߃3(0(U +‹„3A0(U 'š„Q-(Us=Ï >œ@㜥1;s>œVöU;len>;ŽVˆV< >*¥1äVÚV>a@ }_WYW>b@}´WªW>c@}9X3X>d@}‡X…Xô A} 0"! B«1 `0">ptrC œ¬XªX>endD œëXÏX?u E œZZ0dNŠ1>iH }oZeZ'V¢3(Us(T|; }»14ÿ=Ÿœ }šœq2;sœüZîZ;len;¡[“[>i ;R\8\@…  }=?Ñ  œo]m]'Ø}3(U(v2$÷;÷-ÖªÕªÕªÕªU÷-@÷-%÷4÷v2$?&#A‹ ;U§2B;UBE ;}B²;BAUÝ2BWB®)B²BAÊ "}3C__s"¢B² "¦D‹ D  E99E;;F¨ ¨ "F% % "Fp p  Gí í E[[3 Ev v yE9 9 sD ¸ D EÞÞ ~Ebb%F #FQ Q #%ç!ÆC Lq¥Õ™.á9Ø@Üint,'•\hhx”„–k—v–NŒ —Nx×UZ@ Ø1d Ì?3G Ì6 ½ T7 ½ |8 ½ 9 ½ Ì: ½( ; ½0 ª < ½8 I= ½@ 5@ ½H A ½P ”B ½X ÓD}` & Fƒh 4HGp T IGt iJ £x a M\€ éN‚ O‰ƒ QPQ™ˆ 3XY ¯ ©[¤˜ ­\¯  ²]ƒ¨ ’^ »° µ_ 4¸ øV`GÀ ¡ bµÄƒÝ '+ ÁxÝ x™@p ¦Ÿ ªª xÅ@Š ‰ÑdÑ ŠÑB ‹Ñã  G n   â  GÁ   @  ‚ Ð » z  G   G ~ Æ  ª Ÿ µ ^H µGµª‚ †ÌÁB `Þ 0 „9id † Ñ íT ˆ9 ; Š ½ v Œ ½ º> £Ä Ö ¥ »(- b^`RS- h}6·Q- mœÃ~- r» ýG- wø¸ôÁ jìÈK Ç( G ä }  ‘G ¼ ’G ï “Nidx ”N Ñ Ž — ä ˜œ (, ™G ï šNidx ›N ~ žÄ ä Ÿ»ptr  ½len ¡N òÜ • òÏE œ østr ¢ þøM– « È ò¹ "C ô Ñ ’ ôÑ Ö ö G  öG ë# ø– }H úÈ òU üê( Ý þ› 0, | 4  48lH  ½@ ½He  ½P« *½X? 3½`Ñ ;½hÅ D½pI M½x%  G€½  G„9  Gˆeof  GŒio - 2 R ˜. R  ‰ R ¨¸ X °ø  G¸ë  G¼î  »Àn ¬Å Ú Öíptr Ø Ñ   Ú J ­ù  Ý;beg ß ½ptr ß½end ß½   áF ê ®G ) ä– ¶ æ G C é G N ë G ô í ½ 98 ïÆ ó °¢¨Ѽ¼ÂÒ| ±ÔÚê¼½: ²öü ¼½Þ ³ " N@ ½@ NN¹- ´R X Nv ½v NNí'- ¶› ¢J - »Æ Uåm û)- Â- íÀ§$CÕ<5´ ® E n W  R à @ str v 4;!Ù# –$ Ñ2%¶M& ½Ù'^ ! Å ¡Ç —JÈ ¹ù ‹ä "@ Ó #kä  Ä ‹ @O #»6 Àà Π< @ã, #åC< À ch @OX #X_!h   n” @4„ #Po” €$"#”‹ ÀÁ#U˜ `Á ‹î @Þ #§î àÀ Î  @ #F¹ ÀÀ žF @6 #ÃF À¿#™Õ ¿ ‹Š "@Œy #çአ¾ Î · "@Œ¦ # · `¼#´;î à»$ðïG l4"%¦Ó5 &O4Ó¼'nÓ1Â(ÂÕ N)¡Gð¦u œ*O4¡»œ]’]+-²G7^^#Tµ ‘Øo(ñ¸G+>ºG»_£_,yyn»G>aa+$¼G”c’c+¾GÜc¸c+ÁÀG}eae#DË ‘ào+¡Ì*Ðf°f+OÍ*Lh*h#›Ð 0‘ðr+JÑ @Íi§i+ÉÒ@‚kdk+\Ø @ælÀl+çÜ Ýnn+ áGlsZs-!þ.®øÌ«.ZDγ-`<.¥I©.!¸ª.hª.ïšΪ-35.} ?ª-wø.ÇJ¥¨/ ¡+@îtêt0µ§º:+(*&u$u+Ð)F[uIu/à +©- @_vSv15¨² 2UvØo2Q3@ +©. @ûv÷v1o¨² 2Uv¸o2Q}4Õ­Õ­$;59CwAw5-swow1ù­½ 2T12Q ‹¶2R‘¸o/  26nn°wªw7{²É à2U ²2T57 ²Ö 2U A²2T41´ã 2U Û±2T A²2Q4/Ð Ÿ6nÄÂýwùw7Ö²Ö q2U K²2T316´ã 2U Û±2T K²2Q3/` ,nÈÂ9x3x7ò°ð Ó2U~7ý°ý ë2Ts7s±É 2U ²2T57˜±Ö 32U A²2T47®±ð Q2U~2Ts1W´ã 2U Û±2T A²2Q48æ¨æ¨Bç59„x‚x5-´x°x1©½ 2T12Q ¨¶2Rs9è«  C59íxëx5-yy1¬½ 2T12Q ȱ2R~8 ¬ ¬ ˜59Ay?y5-kyiy1-¬!2U:9¼¬à aó59‘yy5-¿y½y1ܬ!2U Ͷ2T12QE9f­ é V59åyãy5-zz1Š­½ 2T12Q ȱ2R (·8˜­˜­é «599z7z5-czaz1¥­!2U:9°­@ Z59‰z‡z5-·zµz1Э!2U »¶2T12QA8®®$fu59ÝzÛz5- { {14®½ 2T12Q ȱ2R ã¶8I®I®fÊ59F{D{5-p{n{1]®!2U:9€®p ã%59–{”{5-Ä{Â{1 ®!2U e¶2T12Q?8«¨®¨®Þ©¹5¹ì{è{:¨®Þ;Æ6|,|;Ó«|§|9¨®  ßø59}}5-A}=}1Ô®½ 2T12Q 0¹2R~2Xs1$ Â"” ÿÿ9¯Ð ãN59z}x}5-ª}¦}1=¯½ 2T12Q ȱ<W¯ ä59ã}á}5-~~1†¯½ 2T12Q ·2R‘°o” $ &3$‘ˆo"9 °0 {+59L~J~5-|~x~19°½ 2T12Q ñ¶2R‘Ào” $ &3$€$""9d³ãŽ59µ~³~5-ã~á~1ˆ³½ 2T12Q ȱ2R ·8š³š³ãã59 5-311§³!2U:9©³@)>59YW5-‡…1ɳ!2U :·2T12QF7V«&!U2Q07€«áu2U‘Èo2T7 ¬G=}7L¬á¯2U‘Èo2T7 ­3!Ð2U‘Øo2T‘˜o7˜­Gô2T‘Ào”=‘Øo7I®G2T‘Ào”=‘Øo7t®?!72U  ·7ׯL!Q2U‘˜o>ú¯&!>[°Y!7t°L!…2U‘˜o7™° Ÿ2U‘˜o>À°&!7ã°ð Ä2U~7±ð Ü2Us74± ö2U‘˜o>A±f!>J±s!7à±ð *2U‘˜o>è±€!7²!Q2U‘˜o>²š!>,²€!>R²§!>^²´!7ì²ð Ÿ2U‘˜o7³ð ¹2U‘˜o>³§!>1³§!>š³G7Ú³?!ÿ2U u¶>ô³€!>e´Á! —*@Ç— @@Ç œ ?‚ru&ýrG&Ér"@?®M«&*MÑ&ýM!G&ÉM2@?¹Öá&ûÖG@yyiÝG(ëÞ-A–»¥‡œ*#»*³«Btop»/*€€9¥ ÈC9 A¶Ÿ5-e€c€1Á¥!2U A¶2T12Q99ी Å×59‹€‰€5-¹€·€1ú¥½ 2T12Q|<ÿ¥Ð ÆC9ò¾n5-߀݀D¦!2U:E¡bGGFøb×F² b £¢ Ö ¥ ¬( b[`RQ mzÃ~ r™ ýG wÖ¸ôÁ jìÈK Ç( % ä [  ‘% ¼ ’% ï “Gidx ”G Ç Ž —m ä ˜z (, ™% ï šGidx ›G ~ ž¢ ä Ÿ™ptr  ®len ¡G ÐÜ • ÐÏE œ Östr ¢ ÜÖ+m– «î È ò— "C ô Ç ’ ôÇ Ö ö @  ö@ ë# øt }H ú¦ òU üÈ( Ý þy 0, Z 4  -8lH  ®@ ®He  ®P« *®X? 3®`Ñ ;®hÅ D®pI M®x%  @€½  @„9  @ˆeof  @Œio  2 0 ˜. 0  ‰ 0 ¨¸ 6 °ø  @¸ë  @¼î  ¬Àn ¬£ Ú ÖËptr Ø Ç   ÚîJ ­×  Ýbeg ß ®ptr ß®end ß®   á$ ê ®% ) ät ¶ æ @ C é @ N ë @ ô í ® 98 ï¤ ó °€†Çšš âÏ| ±²¸Èš®: ²ÔÚ îš®Þ ³ú G ® GG—- ´0 6 GT ®T GGË' ¶y ¢J  »¤ Uåm û)  íÀ§$CÕ<5´ ® E n W  0 à  str T %!V³@¸ œk "n³ U!+§® ¸aœ, #ô§\Û…Õ…#;§.\-†'†#h§;@†y†$uri© ®Ï†Ë†%uV¸¬1 &’‡‡&†.‡*‡'_¸Ÿ(Us(T}(Q|%uV¸@«e &’f‡d‡&†‡Ž‡%u_¸p­™ &’µ‡³‡&†߇݇%?s¸ ®ú &hˆˆ&\)ˆ'ˆ&PNˆLˆ'x¸¹(Us(T~(Qv):¸Ä (U}'G¸Ñ(Uv|"#!€®Ð·Lœ: #;®wˆqˆ#h#@ɈÈ$uriŸ ®‰‰%?¸ ¢ë &hS‰O‰&\“‰‘‰&P¸‰¶‰'¸¹(Tv(Qs $ &%uó·à¡ &’݉ۉ&† ŠŠ'ê·Ñ(Us $ &*Ï‹€·PœÍ +uri‹®KŠ?Š+n‹) ÞŠÔŠ#0‹0@]‹S‹,Ÿ·í)À·ú· (Uv-зí(UóU!Ò] `¶ œÛ+p]#šÚ‹Ò‹+a],®AŒ9Œ.n_ ‘@)©¶>(T|(Qw)ɶíV(U|)#·t(T|(Qw/0·Ž(Uv(T|)H·¦(T|/Y·À(Uv(T|,o·,€·+*´JÀµžœž+pJ&š¦ŒžŒ+aJ/®0{L ®‘H0=M ‘P)¶4Y(T‘H(Q‘P,¶@),¶ƒ(Tv(Q1,M¶,^¶+!h À´ùœ¶+p#š‹+a,® ŽŽ+n9 ŽŽ0=! ‘H1pR.bad0 ‘P)0µ;(Tv(Q‘P2œµ(U|(Ts)Pµp(Tv(Q‘H,dµ@)yµ›(Tv(Qs,§µ,¹µ+!~ Çp´Hœ?+p !š&"+n . i_$id ÇäÞ/‡´*(UóU(Ts'­´@(Us3™…®u4…´4®…g4²…-3öG~®Ÿ4~´4®~g5 6žtag:6ž:5™ 7;; 7996 ž x-private:7[[3 7BB w8% % "8¨ ¨ "8,,  9í í 8qq !7 ½¯TC Ðq ¸¬5B9Ø9Üint,'•s\\l”á–kv–GŒ —Gl®×UZ9 Ø1Z Ì?3@ Ì6 ® T7 ® |8 ® 9 ® Ì: ®( ; ®0 ª < ®8 I= ®@ 5@ ®H A ®P ”B ®X ÓDs` & Fyh 4H@p T I@t iJ ”x a MU€ éN†‚ Oƒ QPQˆ 3XY   ©[š˜ ­\¥  ²]y¨ ’^ ¬° µ_ -¸ øV`@À ¡ b«ÄƒÓ '+ ÁnÓ l9f ¦• ª  l»9Š ‰ÇZ ŠÇB ‹Çã  @ büñ üâ  @Á üB `1 0 „Œid † Ç íT ˆŒ ; Š ® v Œ ® º> £ø Ö ¥ ¬( b±`RQ mÐÃ~ rï ýG w,¸ôÁ jìÈK Ç( { ä ±  ‘{ ¼ ’{ ï “Gidx ”G Ç Ž —Ã ä ˜Ð (, ™{ ï šGidx ›G ~ žø ä Ÿïptr  ®len ¡G &Ü • &ÏE œ ,str ¢ 2,Ã%B›® É,œ+ ;›®O1Ñ ®?’‘I®Q™A™Å®(š šœžÉ´¨Ê×­(Ê¢ÀÉ®`èÉÝõ¨\žÉû‹ËãøÃÊšàÓÊï@³ÊV ØÌõDŒÊ¼ PÊéüaʦ  Ë2ð8: ³Ì> °ËDŸ ÀËJ® ÐËPµ ¾Ï¬Ä êËžÒ ÎϤá ÞϪè а÷ )ж 9Р€ÍÈ ©ÍÎ$ ÒÍô- ûÍú6 $Î? MÎH vÎ Q _ Íh *Í:t NÍ$p ²ÎF ßÎ@º ¿ÎL HÏdæ ïÎRV ^Ÿ Ï€õ ÿκ ÏV φ WÉŒ) ŸÎ’. cÉ*= oɘD |ÉžS ˆÉXb ”ÉÐ )Ê lœi›×Ê¢Ì ô² ®¢ ¢uri³®]¢Y¢ ÜóÊ@¶ !—¢“¢!ùӢϢ!í £ £"ûÊ<#U|#Ts#Q} ûÊp·C !/E£C£!#o£m£ RËиx !/”£’£!#£À£$æÊM #U}$nËZ· #U|#T~#Qv~"yËg#U|îËJ¿ ô¿ ®ë£å£uriÀ&®9¤5¤ Ü Ì@à k !s¤o¤!ù¯¤«¤!íé¤å¤"Ì<#U}#Ts#Q~$üËMƒ #U~$"ÌZª #U}#T|#Qv|"-Ìg#U}%·ÉZå #U Û±#TóU%$Êt #UóU#&²Î#UóU"4ÉŽ#Us9 ƒ@`ȶœ° wƒ\'¥¥|ƒ,\Ž¥†¥' iˆ @ñ¥í¥È‰®,¦(¦Š®h¦b¦¢‹®¸¦²¦$“ÈŽà #Us$žÈø #Us$©ÈŽ #Uv$´È( #Uv$ÄÈ›F #U|#T#$ÙÈ›d #Us#T#$ìȦ‚ #U|#Ts$øÈgš #U|"Ég#Usv -® ¸œ (str-"®6§§(len-.-|©T©Ñ/ ®Ò¬&«I/®¾Î½Å/®VÂôÁ)yy6sø¸*t±0¹*yÁ ¹* øè»*ÀÑ€»*~åÀ» ºÌp¼*oªH¼)yy5i¼*e›ð¹*[8»)yy8x»*j¤`»)yy4aHº*`”xº*釰º)yy9€к+yy2ZÑ )yy3]¹Ûà¸Ñ­½Š”¿úxÀ~μd7ܸ˜lð¿îr0¿’fóº†Zºº|BоˆHL»v<^4•º&(Ÿ½,. ºj»Ðêð¾®ð\¼ÅãL¹T¶È¿Ïyð¼N¯À¹0¶ô¸³, ¿¡ §sÀô€¾ÙÔBN½jXÀm1нh$ÀB+d¹=¼!*ºOظäd¼¸QàýW/ÀÚK8Â>u¹rD¹ß]"¼¼E/ÂÔ}ø¼ ÀÀ$p¿zÎð¸ô»›ÀˆÓj¾jç<ÁõîUÁöhÁúò†Á¨;츴(²@¤T#ăZÂÎi˜ÂÓx¨Â©~²Â} ˜҂ ®˜³xÅÖÂOÅfÕûÂrx#ÆR¯dÅÑ5Å· åü ô-Ãdú7Ãi GùWÃuaÃy-qþ<Ã5WÃDŠÄçgÀÄácÂÃÿ›è¸ívÐÄó…çÄùŒ Å  ÅX¾‰ÅÄ“Å"Ó£Å(â³Å.è½Å4÷ÍÅâÝÅ:ÆèùÅF/KÆ@+4Æfcä¸j>iÆpMyÆ`TžÆ‚i®Æleü¸Ž‡ÃÆ”ÍÆšœäƲ«ôƸ±þƾÀÇÄÏÇÊà9ÇÖõfÇÐäAÇÜú„ÇBš8Äb…’¾0¨¿6t«¾$k0pÁJe½ FºÁf<”qÂH©tÄ~ÃJÂZ½Ô¹–ݹÊfÄ„ÐòÿÖüÃL ú¾ÅöËü\[ÄîèÁ"òÁ TÂxNŒ`ÐÁ*Žf­„йš¹'Ð)8 lûÇCÆ,°Ç¯œÜ(n8ðØæØ0$@oÙeÙtid ®òÙäÙ-õǰ -Èg$$ÈŽ•#Uv$/È­#Uv-EÈŽ"VÈZ#U Û±#Tv.™…®/…´/®…g/²…-.öG~®</~´/®~g0™1ž.299 2++ r2[[ 3 2€€ q2ÞÞ ~2;; 0yo3|N|N ‰ j>C qPÐúòU9Ø9Üint,'•n\g”á–kv–GŒ —G§gׯ» UZ9 Ø1a Ì?3@ Ì6 ® T7 ® |8 ® 9 ® Ì: ®( ; ®0 ª < ®8 I= ®@ 5@ ®H A ®P ”B ®X ÓDz` & F€h 4H@p T I@t iJ x a MU€ éN‚ O†ƒ QPQ–ˆ 3XY › ©[¡˜ ­\¬  ²]€¨ ’^ §° µ_ -¸ øV`@À ¡ b²ÄƒÚ '+ ÁuÚg–9m ¦œ ª§gÂ9ЉÎaŠÎB‹Îã  @bøÂ â  @Á B `8 0 „“id † Î íT ˆ“ ; Š ® v Œ ® º> £ Ö ¥ §(z b¸`RSz h×6·Qz möÃ~z r ýGz wR¸ôÁ jìÈK Ç( ¡ ä ×  ‘¡ ¼ ’¡ ï “Gidx ”G Î Ž —é ä ˜ö (, ™¡ ï šGidx ›G ~ ž ä Ÿptr  ®len ¡G LÜ • LÏE œ Rstr ¢ XR§é,[r ×éœånr^œÚÚb×#’×#«×#À×#æ×#û×#¹gÎל:seqg^Uidxg$GTsiR&Û$Û \àÖœ™seq\^Uidx\&GTid\1ÎQs^RLÛJÛ;TGÐÖ œÌseqT^Uq@@ÖYœKarr@^tÛpÛ»@$ηۭÛsBR3Ü/ÜidxC GoÜiÜŒÖ0Ç2ðÕEœ²n2^ÀܺÜs4RÝ ÝÖ#/Ö= U@Ú'^ Ö,œ%»'Î7Ý1Ýn)^‰ÝƒÝ´Ö¶ÂÖÌ Us TvÎÀÕ!œ‡map^Up-¸Tidx5GQmLÚÝÒÝÊÕ!œómap^Up/¸Tidx7GQidBÎRmL@Þ8Þ!‡ûG€Õ œ$ "mapû^U#íÛ ÔÖœÓ $1Û^¢ÞžÞ$6Û,^ßÞÛÞ%m1ÝLßß%m2ÝLBß>ß&Þ G†ßxß&”ÞG&ààEÕ0^Õ0#‡ÅàÓ„œn 'mapÅ^‡àƒà'keyÅ$ÎÈàÀà$»Å/Î1á'á%mÇL§á£á%idxÈ GááÝáAÔ0ZÔ0#íµpÓlœ÷ 'nµ^ââ%m·Lkâiâ…Ó#žÓ#(ÈÓ=â U@ÖÓ= U@!7ª^pÔ.œ 'keyªΔâŽâ$»ª Îæâàâ%n¬^8ã2ã…Ô@–ÔÓ Us Tv Q|!«£®`Ó œ° "n£^U#Ö‘ðÒbœ\ 'n‘&^‰ãã%go“ ®øãèã%end“®¬ä¢ä)·HÓœ *à+Ô!åå+È]åYåPÓJ Ts Qvs##Û Ò˜œE 'n^›å•å'str'®íåçå'len1G?æ9æ$ä H‘æ‹æ,í–ÒÀŒ# +ßæÝæ+ çç+þ>ç<ç£ÒU T} QvKÒ#|Ò= Uv#J{ÀÒ.œÙ 'n{^mçeç'str{&®ÔçÌç$ä {=;è3è(ÙÒ`µ Us-îÒ\ UóU TóT RóQ!#l^€ÑjœÆ'strl\ èšè'lenl&Gòèìè$ä l=Dé>é%nn^–éé,íÅÑ€t¤+áéßé+ êê+þ+ê)êÒÑU T| QvœÑE¬Ñ= Uv!?f^ðÑ'œE'strf\ZêRê$ä f2Áê¹ê(Ò`( Us-ÒÙ UóU QóT.; U^@Ñ8œ¶%nW^"ë ë%sXXKëEë(OÑ=¢ UHrÑZ U2.áC^ðÐFœ@%nE^—ë•ë%sFRÀëºë(ÿÐ= U ("Ñ=, U@0ÑZ U1.Ö0^ÐQœâ%n2^ ì ì%m3L5ì/ì(ŸÐ=ž U((ÂÐ=¶ U@(ÐÐ=Î U@ÛÐZ U0#Ø:œZ'n^‡ìì(Ød* Us+Ø#AØ#-JØ# UóU!ü^PÐ5œ·$Ð%“ììæì%s^8í6íaÐ= U0/w&§í0&§0®&»0²&-/§#0©0®Á0²-1[[ 3 1bb %199 2wm 2 1;; ”\C gqPØ õ^9Ø9ÜáG”•–kint,v–qŒ —q–– Ø1) Ì?3j Ì6  T7  |8  9 Ì: ( ; 0 ª < 8 I= @ 5@ H A P ”B X ÓDB` & FHh 4Hjp T Ijt iJ xx a MU€ éN\‚ ONƒ QPQ^ˆ 3XY „ ©[i˜ ­\t  ²]H¨ ’^ G° µ_ -¸ øV`jÀ ¡ bză¢ '+ Á=¢ –^95 ¦d ªo –Š9ŠŠŠ‰¦)¦Š¦B‹¦ã  j àÕ àâ  jÁ à'×"U Z9@ /• 'œ% X@Ä€oùO0 ¡  ã Ð  z  j   j ~ '    Ÿ  ^H j ã †-"J @ Xþ ê µ ¯ [*B `p 0 „Ëid † * íT ˆË ; Š  v Œ  º> £7 Ö ¥ G(@ bð`RQ@ mÃ~@ r. ýG@ wk¸ôÁ jìÈK Ç( º ä ð  ‘º ¼ ’º ï “qidx ”q * Ž — ä ˜ (, ™º ï šqidx ›q ~ ž7 ä Ÿ.ptr  len ¡q eÜ • eÏE œ kstr ¢ qkÀ– «ƒ È ò, "C ô * ’ ô* Ö ö j  öj ë# ø  }H ú; òU ü] ( Ý þ 0, ï 4  -8lH  @ He  P« *X? 3`Ñ ;hÅ DpI Mx%  j€½  j„9  jˆeof  jŒio   2 Å ˜. Å  ‰ Å ¨¸ Ë °ø  j¸ë  j¼î  GÀn ¬8 Ú Ö`ptr Ø ¦   Úƒ J ­l  Ý®beg ß ptr ßend ß   á¹ ê ®º ) ä ¶ æ j C é j N ë j ô í  98 ï9 ó °  */ / 5 wd| ±G M ] / : ²i o 5 ƒ / Þ ³ • q³ ³ qq,- ´Å Ë qé é qq`'@ ¶ ¢J @ »9 Uåm û)@   íÀ§$CÕ<5´ ® E n W ! Å "à ³ #str é •®$nùj°â œA %strù*eí[í%lenù4qÞíÔí&idxú jQîMî'åâ¢(añ€â(œ× %pñ)/ Œîˆî%msgñ2ËîÅî)"„âÀó*3 (ÜŸ+¨â®,U1,T (Ü,XóT$7æ*Pâ"œR %pæ/ ïï-]â0% ,Us-eâ6= ,Us.mâº,Us$BÐqÀႜ/ %pÐ"/ qïiï/ùÐ*qÜïÐï&lenÒ qpðdð0·AÓ qüðôð-áá5ß ,Us1ùáó ,Qv-âù  ,Us,Tv'%â52=â,Qv$âºq@á|œù %pº/ bñZñ&len¼ qÍñÁñ0·A½ qYòQò-`á5§ ,Us1zá¼ ,Q ÿ-ˆáù Ú ,Us,Tv'á52·á,Q ÿ(>­á8œ53p­/ U3len­'qT$Ø’q€à|œô%p’/ ½ò·ò0=” qó ó0·A”qƒóyó4oÃàÃà   5˜ûóùó5Œ ôô5€EôCô.ÎàÇ,Qv6¥z7pz/ ([h Ý㜨%ph$/ pôhô%lenh+j×ôÏô/98hG9 >õ6õ-ÞÒ‚,U~-)Þ‚š,U~'pÞß(,\ Ü1œè%p\$/ £õõ8NÜì$uVË Üœ3pV(/ U(ðPPà.œ±%pP#/ ÷õïõ%ptrP,^öVö/ P?¹ Åö½ö-iàÒ,Us+~à±,UóU,TóT,RóQ(.;Ðß~œg%p;/ .÷$÷%ptr;'©÷£÷%len;1qý÷ó÷/ ;D¹ |ørø-ïßô:,Uv-÷ßòR,Uv.àù,U (è(pß`œ%p(/ ùøïø%fp((¦xùnù/ (;ƒ óùéù-†ßôÚ,Us-Žßòò,Us.Ÿßù,U@(Í!ðÛœB3p!)/ U9Ý!C T(àÛ œ~3p-/ U9 E] T(©ÐÛ œº3p(/ U9 <; T( ÀÛœö3p +/ U9·Y 2jT(ʰۜ23p*/ U9·Y1jT(ß# Û œn3p"/ U9 5 T:VäÐÞ“œ0;pä/ núfú'ëÞ-þÞ0Ã,Us-ß6Û,Us'ßì'1ßì'Jßì-Zßô,Us+cßì,UóU:SÏ ÛtœÃ;pÏ/ ÓúÍú-DÛ„,T 0Ù,Q0'RÛ-yÛµ,T 0Ù,Q0'‡Û<±Çj0Ù#œ5;keyÇ%ûû;nÇ*5 {ûqû;argÇ3õûïû.FÙ,UóTÀ2­ÖüÐü+Û+,TóT,QóQ<³jÚXœ:;p³/ *ý"ý=º>³$’ýŠý>idµ *þýòý-»Ú7,,Ts $ &'ÖÚC?éœ/ Ý’œ¹>pž/  þšþ-ÝO‹,UÈ,T1-!Ýù¤,U .Ý6,Us:‚“€Ú œò@p“,/ UAB“5*T:¿vðÙŒœ6;pv'/ ñþéþ.vÚO,T1:¦d`ÜœœŸ;pd'/ ZÿPÿ-ˆÜ¨~,Us.ãÜ‚,U ²,T0<‚?qPØœ‹;buf?ÛÿÏÿ;str?)é ic=ù?3q¿µ=·A?BqC7>begA ÌÈ>lenB q B¥—Ø0[ 5Îki5ÂŽ5¶·³.¢ØZ,Qs<“-qðØ3œ‚;buf-þø=à-+³ NJ=ù-6q‘‡=·A-Eq>len/ qhdBÛôØ`4 5¡Ÿ5ËÅ5ú!5íKE.Ùe,Uvs",T1,QóQs<Þ!°Ù3œa;buf!¤ž;len!qöð>new# DBC¥ÎÙÎÙ%G5Îig5ÂŽŒ5¶³±.ÜÙZ,Tv,Qs.ÎÙO,Us,T1:G`ÙEœ9=xÚÖ=9(@DAuÙ5^LJ5Rzx.˜Ùr,T1,Q Ü,Rv,X|-uÙ~,U0' Ù~'¥ÙŠE‹ ;GoF;GFE ;jF²;-Ew&G¥F&GF®&F²&-EGÛFIF®F²-G|-"HIHÃ'-7__n6-Hø¬E¢ijAF² i •E¡bjlFøb¬F² b<•IôÞ2œ¢5¤ž'µÞìJ O#JZ K ×LwmK;;Kbb%K[[3 K99JQ Q #%J #K ½J% % "J¨ ¨ "Jp p  L ¸ LK|`JX J00Ú K––L ]C qPãË ëi9Ø9Üᔕ–kint,v–lŒ —l‘‘Ø1$ Ì?3e Ì6 ‹ T7 ‹ |8 ‹ 9 ‹ Ì: ‹( ; ‹0 ª < ‹8 I= ‹@ 5@ ‹H A ‹P ”B ‹X ÓD=` & FCh 4Hep T Iet iJ sx a MP€ éNW‚ OIƒ QPQYˆ 3XY  ©[d˜ ­\o  ²]C¨ ’^ G° µ_ -¸ øV`eÀ ¡ buă '+ Á8 ‘Y 90 ¦_ ªj ‘… 9˜…Љœ$ŠœB‹œã e ‹ÑÆÂÑâ eÁÑ'× V Ð z e   e ~× ~ Ÿ ‰ ^H ‰e‰~V† × ^H@key ‹ ƒ ‹ ÂW!Ý•J @þ ê µ †•Ö2V  0"89V 0" lV 9 Q F `ÜÛ=e°ãœn> lU6e ã œÛx7 lUy7 lT=e`ã4œ<I7 ‹øðc eZVval+e šãìÑœ*ä*ôêRå;p f argæ ‹ì â ptrèj ^ ÝLèø î tmpè"l h M é㦠¢ iê eä Ü iìQv”ì9Uã;0EØðì+œÈÙ*H B ‘Ú ‹š ”  Ü eê æ í<UsT PãQóTŠÐePãœkeyÑ ‹U »Ñ‹T ‘Ñ‹Q!—±e@ëÈœ»²*2 $ key³»Þ Ð »´ »Š|‘µ ‹6(!·@ÖÔptr¸ ‹!q‡eê)œˆˆ*–†key‰»WG»Š »!Œ@ËÉtmp÷õptrŽ#"šê9zUs#ë9$À^*ðè œ³ ã_*‹¦a*ptrbŒbÌÆic ezc eB<"éF> UH"9éSa Us ÿÿÿÿT8" éFy U #³é9"»é9ž Uv ê9Uv%°D( &E*'ptrG(ÂWG$(·G,( 'iH e(vH e(íH,e(!I@*7`茜 8*“‹key9 ‹úò»: ‹aY!<@ÆÀ<@)° @™—"¥èFì U ßèLUsTs*Á s+€èUv$¨ !e ç1œS "*ȼkey#‹\P»$ ‹ðä!&@€x&@âÜptr'@<)p -zv"úçF÷ U ?èLUT*Á Fç. U||çB U|+›çU|,% úe`滜' -û*»±.keyü‹:0-»ý »¹¯/!ÿ@4./ÿ@}ptrÉÅ€æ U|¬æ U|+ËæU|0Q ÒðådœÃ -Ó*ÿ1ptrÕlf/ÂWÕ$·µ1iÖ eÞÚ#)æ9#Hæ92Tæ9UóU,Ë*Ðåœ--3Ì e2äåBU 0"TóU,,Å*°åœZ2ÂåñU 0",æ¾*圳--3¿ emg2¤åBU  0"TóU,p ¸*påœñ2‚åñU  0",ȱ*`å œB-в½¹2måBUóUT0,^˜*°ä¡œ-Йþö--3š ec]1tblœ*²¬3´ä0¥ ç4)ÿû5065= 5 6?£ › "åFþUH!åSUvT87UreL8-3s e9iu e:ú} e;³ Àãïœ9<Á <Á 6Î !!6Û R!P!6è {!u!6õ Ç!Å!6 ï!ë!6 )"%"6 d"`"=ÕãK4)ª"¦"565è"à"6?N#F#"äS+T8#‚ä9>[[ 3 >99 >  CÆC q íé/çs9Ø9Üint,'•s\\l”á–kv–GŒ —G¬l³×ÐÅ UZ9 Ø1k Ì?3@ Ì6 ³ T7 ³ |8 ³ 9 ³ Ì: ³( ; ³0 ª < ³8 I= ³@ 5@ ³H A ³P ”B ³X ÓD„` & FŠh 4H@p T I@t iJ ”x a MU€ éN†‚ Oƒ QPQ ˆ 3XY   ©[«˜ ­\¶  ²]Ѝ ’^ ¬° µ_ -¸ øV`@À ¡ b¼Äƒä '+ Áäl 9w ¦¦ ª±lÌ9Š ‰Øk ŠØB ‹Øã  @b   â  @Á  /• 'œ% X@Ä€oùO0 ¡  ã Ð  z  @   @ ~ '    Ÿ  ^H @ ã †-"B `? 0 „šid † Ø íT ˆš ; Š ³ v Œ ³ º> £ Ö ¥ ¬( b¿`RQ mÞÃ~ rý ýG w:¸ôÁ jìÈK Ç( ‰ ä ¿  ‘‰ ¼ ’‰ ï “Gidx ”G Ø Ž —Ñ ä ˜Þ (, ™‰ ï šGidx ›G ~ ž ä Ÿýptr  ³len ¡G 4Ü • 4ÏE œ :str ¢ @:Ñ– «R È òû "C ô Ø ’ ôØ Ö ö @  ö@ ë# øØ }H ú òU ü, ( Ý þÝ 0, ¾ 4  -8lH  ³@ ³He  ³P« *³X? 3³`Ñ ;³hÅ D³pI M³x%  @€½  @„9  @ˆeof  @Œio o 2 ” ˜. ”  ‰ ” ¨¸ š °ø  @¸ë  @¼î  ¬Àn ¬ Ú Ö/ptr Ø Ø   ÚR J ­;  Ý}beg ß ³ptr ß³end ß³   áˆ ê ®‰ ) äØ ¶ æ @ C é @ N ë @ ô í ³ 98 ï ó °äêØþþ F3| ±  , þ³: ²8 >  R þ³Þ ³^ d G‚ ³‚ GGû- ´” š G¸ ³¸ GG/' ¶Ý ¢J  » Uåm û) Âo íÀ§$CÕ<5´ ® E n W ! ” "à ‚ #str ¸ •}$Ù #Ò – $ Ø2 % ¶M & ³Ù '  %ç þ `4"&‘~P@œ: 'msg~³¶#¬#(u)TóU*ßx@@ œ+ l@àî,œŒ ,ptrl³U+ef@ï œÚ 'ptrf³/$+$-ïY )UóU+\Tl  ,chTlU.²> íöœI /O4>þp$h$0t@00© 1¤± dí1ªµ Èí1¶À Ní1ž« ¥í1ÂÈ `í1¼à àí0°» 1ÈÎ €í0ÎÖ 2ð3)Ÿ lã$Ï$4¡  5ší¢B )Us5¸í¢B3 )Us6î¢B)Us7í@Ø8TØ8O43þ9p @0á|0¿B:yy7_0`x:yy9h0[r:yy5X:yy2D:yy4Q0j‚0!×:yy3K0Ì©0À”0él0y0t‰0e|0o…0~›0 £0¯0Ñ·0ßÑ0OÉ0¹0äÝ0=å0ÿ0B÷0hç0ùû0úJ0jB020ÚT0_0# 0ˆ;0Ù‹0d0¡Ð0Ïy0Ô‚0(&0½`0är0Âi0R0¹u0a60ip0¸Z0_ 0V0dj0· b0Ë60ÖP0‡ H0Óâ0¤”0ú>0Œ}0zÔ0¨{0¼Ž0²†0$_0Y0õF0U08u0­}0¦”0ÎÛ0} )0‚ 80fX0u|0Û0uø0p 0ç05ò0ù 0ó0áü0í0Y`0 ±0X0N0U0l¨0r­0(204\0`–0èq0:h0jˆ0@z0ް0³ö0.60ôñ0âb0ÖÝ0§ë0Üã0²º0ÊÑ0¾É0”³0fœ0¸¼0Ð×0ß0ý0#ƒ06z0!0—O0½[0b}0NŒ0%0H‡0$U0<€00a0T“0Z›0ËÛ0Å0„Á0Ïó0®/0–ÿ0Å20¢0¿Å0d0Õù0çE0\M0Ë50în0S0Ð0Û?0&v0,‘0v©06D0xÎ0† 0’ 0Œ 0î 0ú( 0 Ð0œ~ 0˜ 0K 0+ 0ŠS 0­F 0n 0Ûz 0˜º0é- 0®À 0á 0Ý 0õ5 0û< 0D} 0´Ä 0>x 0× 0? 0ÿK 0E 02S 0¦r 08j 0U 0J„ ;A ú@yœ”?TúØÆ%¶%?O4ú)þŠ&z&@·¯BH)UóU)TóT5Ìô g)U Hë5ìô †)U  ëA I B™…³ÊC…¹C®…gC²…-BöG~³ôC~¹C®~gB¬*C®C®ËC²-DI ï-œ¢BE[ ´'>'Eh +-³,Fu GI ^ï0jBEh -2»1E[ ¹6620Hu a99I‚ I‹ J” àøJ øJ¦ ùJ¯ PøJ¸ è÷JÁ X÷JÊ ÷IÓ JÜ j÷Jå H÷Jî 2÷J÷ {øJ“øJ bøJ4øJ>øJ$ øJ-`úJ62÷J?¸JHÛJQâJZJcãJlx÷Ju›÷J~' J‡©úJ£÷I™J¢ öJ«°öJ´@öJ½ðöJÆPõJÏhôJØPôJá(ôJê€óJóXóJüàòJ ñJÀðJˆðJ pðJ)0ðI2J;LöJDdöJMþöJVPñJ_ZñJhóJq0JzEóJƒåÿJŒÐÿJ•ÉòJžÐüJ§0úJ°fõJ¹˜óJ€ôJËÀúJÔ€ûIÝJæ§ûJïÃöIøJÏöJ ’ûJÈúJÙúJ%ðûJ.ùüJ7íÿJ@ óJIˆIRJ[\Jd™ImJvJÀJˆ~I‘JšnJ£üJ¬=IµJ¾ÊñJÇÛñJÐ@JÙö Jâ“ Jë!òJô JýrJ¥ J0 J¿I!J*IòJ3aòJ<0òIEJNÆ JWˆ J`æ JiJrzJ{$J„ Jú J–’IŸJ¨DJ±ÄIºJÃH JÌ?JÕJÞëóJçjJðLJùdJFJ JúóJL J&bJ/‡I8IAJJãôJSWJ\ÆJeÈ InJwðôJ€õJ‰fJ’C I›J¤³ J­Ö J¶p J¿ñ JÈÆJѳ JÚ Jã6JìôIõIþIJ0JPJ"PùJ+J4¬õJ=hJFpüJO‘üJX üJaCüJjhüJsõJ|qI…JŽÀþJ—ÿJ 0þJ©øýJ²°ýJ»¨ÿJÄWþJÍoþJÖ>þJßÉýJèuJñÖJúÖJøJ Á JUJJ'™K©pÉ(H®–<R<K»`´(H¼š?,?HÉ^DêCKÖpj&H×IöHHäŽIˆI5pöY &)U|5¤öŒ 2&)U|5éù»BJ&)U6ÃÈB)U)T|)Q15ð¢B‚&)U5eðÈBš&)U5|ðÕB²&)U5šð»BÊ&)U5¬ðÈBç&)U)Q75øð¢Bÿ&)U5¸ò¢B')U58ó¢B/')U5\ô G')U5éö¢B_')U5Õ÷ÕBw')ULÐúŒ LüâBLýâB5%ýïB¶')U5H¢BÎ')U5Í¢Bæ')U5 ¢Bþ')U5à ¢B()U5Š ¢B.()U5\»BF()U5nÈBc()U)Q8LÙŒ 5ÈB()U)Q3LöŒ 6ÈB)U)Q36zï»B)UKAÀu*HFJ×IHS$MüLK™À)HšÈNÄN6«÷»B)UKsðf)HxOþN5ŸøY Q))U|6ÓøŒ )U|K`0•)HeOOMO6ðø»B)UM†ã"Ð)H‹tOrO6ë»B)U5ø÷ è))U5ˆù¢B*)U5 ù¢B*)U5”ú¢B0*)U5 ¢BH*)U5¢B`*)U6± ¢B)UK` 0H¹O—OH&LQ(QH3ïR·RH@UUHMuUOUKZP-+H_WWMl¨ñ"+Hm6W4W6¸ñ»B)U6„ñ»B)UK|€à/H}‰WYWHŠ˜YlYK—pr,Hœd[`[H©¥[›[N¶HÃ\\HÐ?\;\KîÀÂ+Hóy\u\LUY Ma ,Hµ\¯\6àüB)U~)Ts $ &5mòY !,)Uv5¡òŒ 9,)Uv53»BQ,)U6¥üB)U~)Ts $ &OôLLRÁ,E]]E8]6]E]][]Gô¼ ðG-E‡]…]E¬]ª]EÑ]Ï]6W C)QvGôï v‚-Eû]ù]E"^^E`^Z^6ú C)U~‘˜")T‘ )Q|MWD¡-N\KPÖ-Hž·^µ^LKCL»!CMh+ õ-NmMyˆ3.H~à^Ú^MŒ»'P.H‘2_0_LÂCM‡<w.H[_U_M3<ž.H8±_«_5ጠ¶.)U}54üBÔ.)U~)T|5ÔüBò.)U~)T}5¢B /)U5Ù¢B"/)U5Ø ¢B:/)U5+  R/)U5R Œ j/)U}5¤ üBˆ/)U~)T|L½Œ 5üB³/)U~)T|5”¢BË/)U6ä¢B)U5dñ.Cø/)Ud6wñ»B)UK¬€ð2H±/``H¾bùaHËžcvcKØ`Û2HÙ@e*eHæAf)fKM@ 1HNEgAgH[ƒg{gLS C5^ »B´0)U5„ âBØ0)U K²)T35;C 1)U Û±)T K²)Q36×ÕB)UKó€ N2HøégßgHmhahHôhòhHiiK,Ð ‡1H1lifiLÍY K?!Â1H@Ái·i6züB)Uv)T| $ &5pY Ú1)U}5¤Œ ò1)U}5¥»B 2)U5»ÈB-2)U)T})Q66*üB)Uv)T| $ &5´¢Bf2)U52üBŠ2)Uv)T| $ &5ÇüB®2)Uv)T| $ &5J¢BÆ2)U6 ¢B)U6¥ó.C)UdKi0!Ö6HnnjHjH{Dl lHˆnonH•pÔoK¢0"Á6H£rÜqH°-ttK½0#”4HÂuuiuHÏvvHÜ©v§vHéÒvÌvKö#Á3Hû!wwL\Y M ÅI4H twlw6ÿüB)Uv)T| $ &5õY 4)U~5HõŒ 84)U~5w»BP4)U}5ÈBs4)U})T~)Q66 üB)Uv)T| $ &KÀ#J5HëwçwH))x!xLËC5Ö»Bà4)U5üâB5)U K²)T35‚;C55)U Û±)T K²)Q36CÕB)U}K5 $£5H:‰x…x5– Ú ‚5)U8$8&6ìüB)Uv)T| $ &KG`$@6HHÅx¿xHTyy5?âBá5)T45VHC6)U‘ˆ)T0)Q@5fTC6)U‘ˆ6ÕüB)Uv)T| $ &56¢BX6)U}5büB|6)Uv)T| $ &5W¢B”6)U}5ü¢B¬6)U}6£¢B)U}6ô.C)UdKd $~:Hi‡yayHv%{{Hƒ||Z|K`%i:H‘ÿ}Ï}Hž€ðK«0&39H°è€Ü€K½p&b8H¾rjHËÖÎGÊùð&n!µ7Eç9‚7‚EÛ_‚]‚LaCG” 0'o!8E½„‚‚‚E±©‚§‚E¥΂Ì‚LlCLÄTC5ÒâB38)U|)Tv|LÞwCLè.C6"TC)U|GÊš`'Z¥8Eçó‚ñ‚EÛƒƒL£aCG”® '[è8E½@ƒ<ƒE±€ƒ~ƒE¥¥ƒ£ƒ5Óõ»B9)U5rTC9)U|L€wCL‰.CKÚÐ'{9Hß΃ȃL±üÚ 6u üB)U|)T~ $ &Kì(:Hí„„Hùr„l„5 âB¹9)T45"HCÝ9)U‘ˆ)T0)Q@54TC÷9)U‘ˆ6ZüB)U|)T~ $ &5¸ù¢B0:)U5‡¢BH:)U6§üB)U|)T~ $ &6rõ.C)UdK @(èAH …¿„H ˆŇH$4‹øŠH1®ˆH>vLHKd‘>‘HX)“ý’He••Hr[•=•H¨–š–KŒ`)ŒAHr—B—HšŠ™^™K§°*Æ>H¬\›R›H¹Í›Ë›HÆœð›HÓøœäœHàÜÐHítždžHú/Ÿ#ŸK€+<H ³Ÿ±ŸM@ ñ;HØŸÖŸ6P »B)U}6ü»B)U}M)B7^<H.ýŸûŸ5]ÈBI<)U})Q56e»B)U}M[°™<H`$   6¹Y )U|K°+M=H€f \ M‹µPî<HŒÙ Õ 6ÔŒ )UsLQC5pâB=)U K²)T36t;C)U Û±)T K²)Q3MnÝ dŽ=Hs¡¡6? üB)Tv $ &K<ð+B>HAî¡ä¡ML2(ã=HM_¢]¢6QŒ )UsLÎC5íâB>)U K²)T36ë;C)U Û±)T K²)Q35{þY Z>)Uv5¯þŒ r>)Uv5å»BŠ>)U}5BÕB¢>)U}6[ üB)U)T ‘ˆ” $ &K› ,z?H Œ¢‚¢M«(ÿR?H¬ý¢û¢6LÿŒ )UsLÌþC5ëþâBL?)U K²)T36l;C)U Û±)T K²)Q3KºP,.@H»*£ £MÆÓRÏ?HÇ›£™£6óŒ )UsLwC5–âB@)U K²)T36ú;C)U Û±)T K²)Q35þ»BF@)U}5þ ^@)U}5ÅþÕBv@)U}5Àÿ¢BŽ@)U}5müBµ@)U)T ‘ˆ” $ &5H¢BÍ@)U}5 üBô@)U)T ‘ˆ” $ &5Ô ¢B A)U}5.¢B$A)U}5LüBKA)U)T ‘ˆ” $ &5hÕBcA)U}6üB)U‘)T‘ˆ”#€ $ &5ãú.C¤A)Ud5ôú»B¼A)ULZû„C6sûHC)Us)T0)Q:Pô,Hù⣾£HW¥Q¥5R¢B#B)U5©¢B;B)U5»¢BSB)U6µ¢B)UQð BH5¥¥£¥68ù¢B)URââ °SÿÿñRuu ¬ R[[ ­R,, ®RÞÞ ~R´´ nRbb%TR; ; ¼ R xR99R++ rSzz°R[[3 T­£T™R;;SO#é "C ¤Yqë’·•”4•@áÜ–g*%4k³1'@int€q@)L,ãTS>LF4‘L?0’S˜)“S«Y”LÌB•Sv–˜Œ —˜ÇL˜€5@š˜èIž˜Š9¬˜å$±˜òH¿˜WÂ!˜lalH4@·>O«ôHlIêI#9 ØS €  Ë ÐU Ë SÛ S7N ´ ê*  N # Ÿ5 U U R7 ±3 T#7 ÀW U#7½) V ‚Q( v¿ PP x€ = yL {) z€ U' |L ëT ”€ Ý$ šm ^[ šm ÍE ›=×?& 1L( C ¸> EIà F×6 G ˜ l S'bE HÒ'i*aµ1ts@ŒUZS ž-è¢ ¢ »E"½h õ4#Ãp þD$Ãx DG'É€ ²² S ¸%G‡ ÙÙ S sÙÙt&*!õSv&éˆO ˜# S .È!X ÐT' V-( €@ Ñ7)ÛH #h S¥ESX·2šg#€QY /Zt 8Ê ÊR:  DB;« ?û M A € *@B € ´2Cš G, ÊRI  DBJ« ´2Kš Ow ÊRQ  DBR« 68S € sYT VFU a› Í4c / ÄDd /^½å0ew&gŒ Yî 5R[ / _&]m ŸGh › l ìZn˜ èBo € tC ­#v / Qw € ×(xL p3­.5­9=<¦0PDÊ_rtLûÈPV,Li½B[pîàUy €½ S €$  G& € x( € 1* € ˆ0 € ÂM{ C5|½)€)/ ßE S@5?AE@AEj®4xa°4!xÙC$aY2 €¥P7 €./; €¢)@ “I²ö ›M´Â ÍYµ ûÎ l  S Î kK &6++5+M@@Jì7UU_ |Oí¬ ­Rï @KðR  ÓOñ7  ß8ôô jj± ¿Bü ,þ `TÿR l2;ÍX¼ >;¼¼ ®)  ( íC3 3 = UEH H R #R] ] g ÿTr r | V2‡ ‡ ‘ öœ § 0² E½ ZÈ ¬Ó  Þ # é 8 ô M ÿ b  w  Œ  –>; ÔOR &&!+ y!w/ÕŒ 5#× Œ dVØ œ \WÙ ¬ #œ S /¬ S ;¼ S ÎXÓ× b!Ú ^ ¼ ZKã× û5ä× 4 S ŠX.Õ UW0 Ÿ ·L5 à c+=ç öV>Û u/@ « ECA · ˆC €$ ?=E Ÿ( -&J ó0 gNN18 5AP=@ _#[çH üI\çX I>]çh IIjÕ x Uå S aõ S YŸå ñI  €2-¡˜ Y¦å óI® €4-¯˜k" € 4-4r •V6 € ­>7 €J r (-a’N.a ýM × #(  a ÖU  x ' € ÙS  ; À !b& À:!d a å:!e x J8!f€ è !g€ ÔE!h x ˜, !ÿl mU! aaX! x[!!€J! aA9!D¥ I!!F aK!G xY!H€=R"õ k7"Ï ‰T"ÿ 6?"@ J" 4 $$"! õ  l SÿžA"%U k7"'Ï ‰T"(ÿ 6?")@ J"*4 $$"+ õ DIR#aÇOIV$v˜fUV$wSNV$E-Ý<§% €Ô-$/ ¨£OP$1 Áop(&Êœ ²7&ËO2  >&ËO2 î-&ËbK O<&ËÁI8D&ËL  ‰)&ËL ÖN&ËL  X&ËL ­C&ËL  U&ËL Ú3&ËL §L&ËL $0&Ëy1" ¸#&Ëy1#COP$2 © copP'yö²7'zO2 >'zO2î-'zbKO<'zÁI!8D'zL  !‰)'zL !ÖN'zL ! X'zL !­C'zL ! U'zL !Ú3'zL !§L'zL $0'zy1"¸#'zy1#‹-'}ï1$&'€ÁI(GV'‚ a0¶:'‡ ¼18 <'ˆ ¼1<´@'ŠBQ@H' HQHR/$8  Z#`&û? ²7&üO2  >&üO2 î-&übK O<&üÁI8D&üL  ‰)&üL ÖN&üL  X&üL ­C&üL  U&üL Ú3&üL §L&üL $0&üy1" ¸#&üy1# ñ &ý O2( ÚL&þ O20qC&ÁI8\N&¼1@\7& nKHâ%& KP¹F& O2XG=$< LXP&§}²7&¨O2 >&¨O2î-&¨bKO<&¨ÁI!8D&¨L  !‰)&¨L !ÖN&¨L ! X&¨L !­C&¨L ! U&¨L !Ú3&¨L !§L&¨L $0&¨y1"¸#&¨y1#ñ &© O2(ÚL&ª O20x:&« O28Ý2&¬ O2@¹<&­ O2H +$G Š"5/à $œÏ$ èH(#22#Iop($O2 ÌI(%22 µ%('22 CW((22 1(*ô_( "2(,«10 q7(-«14 X(/ú_8 +(0«1@ —+(1«1D À9(322H rS(4P u;(5X ÏC(6` Ã<(8¼1h Ï"(:ú_p .U(<ú_x <$(=ú_€ •#(Ay1ˆ %4(Cw ÉK(EI2˜ ‚?(HhK  UN(KŸB¨ »5(LŸB° ÀH(NU2¸ ŒV(OU2¹ U(^š1º r,(`y1¼ Z(ay1½ O(b=2À LC(ny1È ”G(un1É ‚V(zI2Ð Ó?({I2Ø àH(},Tà 8(~C2è ŽJ(`ð JN(€C2ø$pV(„f$›7(†'2$±&(‡'2$}#(ŠŸB$i:(` $B)(‘ `($uA(“J0$:(¤Ï$8$?(¥Ï$P$l((¦Ï$h$ŸD(§Þ0€$)(¨Þ0°%ISv(©'2à$N4(«`è$ÙJ(­I2ð%Ina(»£ø$´/(¿ $(À $A(Á=2 $þ=(Â'2(%Irs(Ô'20$q#(Õ=28$È1(Ö=2@$Ã4(×=2H$.5(ØÙP$$X(Ù'2X$¤V(Ú'2`$ S(Û'2h$'-(ÞO2p$¶!(ßWRx$9(áWR€$œJ(â%Qˆ$Ç:(ã'2`$[Q(æi8h$|-(èO2p$’R(ëO2x$+1(ìI2€$[C(í=2ˆ$”-(î=2$T(ña˜$º'(ò£ $šF(ôš1¨$BT(÷y1ª$c)(ùU2«$ª(úU2¬$]L(ûU2­$Ò!(ý'2°&í!(`¸&ä'(ï^è&75(/ï^ð&è8(=r_ø&õN(?x&×X(@a&M&(B¼1&¸R(D¼1&Ÿ$(F€&O(I€&Y(Jx &ô((K=2(&l5(L=20&tO(M=28&|@(Na@&~P(OÙH&z*(P'2P&![(Q'2X&ï3(T'2`&7(U(`h&R(VÙp&¸+(XU2x&×+(YU2y&à+(ZU2z&Î+([U2{&§+(\U2|&l+(]U2}&ú (^U2~&±"(_U2&k&(aa€&»(b'2ˆ&«;(dœ&h,(f«1˜&#(h«1œ&Ô4(l«1 &{S(o€¤&$(p.`¨&G1(s=2°&Ü/(t=2¸&K"(u=2À&êN(v=2È&é+(wC2Ð&ÅY(z=2Ø&(S(}=2à&G(€=2è&”&(=2ð&¬W(™=2ø&#(š'2&4<(›'2&’O(œ'2&1(C2& (Ÿ4` &ï)(¢I28&˜=(£I2@&PV(¤'2H&W<(¥C2P&6.(¦C2X&9(§C2`&º"(¨C2h&,(©C2p&´S(¬C2x&µ;(¯a€&s[(²L=ˆ&t (³O2&·((´O2˜&C(µO2 &…6(¶O2¨&kB(¹,T°&ÙT(»€¸&i6(¼€¼&¦F(½aÀ&îP(¾D`È&fK(¿aÐ&ü(ÄC2Ø&=(Å'2à&‘?(Æ'2è&$J(É€ð&Y:(Ì«1ô&žZ(ÍU2ø&âP(ÎU2ù&°E(Ïš1ú& (Ñ€ü&1(Ó«1&òT(׫1&%Q(ØJ`&OK(çI2&!N(êP`&&(ìœ &Ù*(îL=p&$(ïþIx&q.(ðÁI€&ýZ(ñÁIˆ&ÐD(ùL=&°K(ú€˜& -(ý¼1œ&'?(ÿU2 & 0(U2¡&^*(U2¢&®-(U2£&[(„¤&d8(„¨&Ø1(x¬&VM(x°'Ian( ¼1´&ÕY( ¼1¸&Ù@(¼1¼&§?(¼1À&|I(¼1Ä&IM(xÈ&w'(aÐ&¾;(5Ø&¨2(!V`à&œI(#Í1`&‘4(%¼1d&ü#('Q[h&;Q()'2p&áN(+«1x&¥=(,ÁI€&Æ%(.ÁIˆ&±G(/ÁI&rX(1ÁI˜&8(3ÁI &T(6a¨&Ö=(7¨°&ñ1(8¨¸&Æ2(9¼1À&7P(:y1Ä&Ž;(;U2Å&S(=y1Æ&5I(>U2Ç&lO(FU2È&¯T(GU2É&'(Lw^Ì&rE(NU2Ð&ú.(SZÑ&•(W€Ô&¥@(YU2Ø&­M([aà&¥Q(\'2è&[+(a'2ð&æ;(b'2ø&êF(c'2 &¼U(d'2 &Ê$(f'2 &Š.(g'2 &÷F(j'2 &WZ(k'2( &¯ (l'20 &IJ(m'28 &g>(n'2@ &œO(o'2H &àE(p'2P &‚D(rf`X &¦X(sv`¨ &ŸW(tv`( &¼K(u'2¨ &L=(v'2° &}>(w'2¸ &rG(x'2À &×>(y'2È &:(zI2Ð &ù(|I2Ø &G(}üDà &uL(~£è &¡6(†`ð &+[(€y1ü &’P(ˆU2ý &‚Y(‰U2þ &ãM(22 &(:(‘22 &¤T(Ÿ–` &R@( C2 &DR(¢/ &((¦22( &áO(¨C20 &Í((­œ`8 &@(®ÁI@ &W/(¯ÁIH &GO(³¢`P &H(¶I2X &º0(·I2` &û((ºì4h &¤H(»¨`p &—!(¼¨`x &ÇW(¿'2€ &M.(À'2ˆ &W(Á'2 &@D(Â'2˜ &å=(Ã'2  &23(Ä'2¨ &¾3(Æ_° &.(ÈC2¸ &9F(ÉC2À &pW(Ì˜È &"(Ïx[Ð &ëD(Ðx[Ø &°?(×x[à &úC(Ù›[è & A(ܨ[ð &o)(ßÏ[ø &[)(âI2 &3B(èI2 &?'(ëC2 &P((ïI2 &=(ó'2 &b1(õI2( &ÜO(÷®`0 &ÛZ(ûD`8 &.(ýÂ^@ &VT(°_ˆ &™X( ´` &T ( €˜ &Q9([  &™<("º`¸ &ÍZ(-¯IÐ &ì"(/£Ø SV$O à$Ï$sv)ç!% LG)è/ µB)è¼1 ¿P)è¼1 Õ)é[6AV$P -%av)ön% LG)÷ : µB)÷¼1 ¿P)÷¼1 Õ)ø‹9HV$Q z%hv)û»% LG)ü•: µB)ü¼1 ¿P)ü¼1 Õ)ý:CV$R Ç%cv)ñ& LG)ò…9 µB)ò¼1 ¿P)ò¼1 Õ)ó9ÜM$S &­7)\&LG)]8µB)¼1¿P)¼1 Õ).;GP$T h&gpP* ' U* '2 |?* »I íM* L= §A* ¼1 ƒ!* ¼1 ŒP* I2 gM* C2( ?O* L=0 Î&* =28BN*L@ØA*L@ B* A<HGV$U #'gv)ìd' LG)íý8 µB)í¼1 ¿P)í¼1 Õ)î{8 io)ª'LG)(;µB)¼1¿P)¼1 Õ)›:x$W ·'47`'?Ô'ËD'CUL`'Ì}(‹ 'Í y1+>'Î y1N'Ï š1@'Ð «1B'Ò «1kD'Ó «1 wJ'Ô ,Th['Õ ŸBa 'Ö =.'× «1(SG'ßàS0·C$Z Š( ‹20+) dC+ p< /+ MV ÑR+ š1 «Z+ l Ê?+ y1 J9+  õ!+ '2 yM+ a(XPV$[  ) xpv )õT)dI)öI2˜A)öG<È/)ö£å3)öv<­1$\ a). ()ù¶)dI)úI2˜A)úG<È/)ú£å3)ú›<ßV)ûþ; 4$^ Ã)Ú"0)&*dI)I2˜A)G<È/)£å3)À<ßV) þ; >) »;(¸3$_ 3*E"0)–*dI)I2˜A)G<È/)£å3)å<ßV)þ; >)»;(Å-$b £* |Y(, ò* dI, I2 ˜A, G< 7M,  ×V,  ÞB, 22 y1$c ÿ* r -‡A+ dI-ˆ I2 ˜A-‰G< ÆF-Š£ %-‹£ß0$d N+0)4±+dI)5I2˜A)5G<È/)5£å3)5 =ßV)6þ; >)7»;(°.$e ¾+ ³Zh. ‚, dI.I2 ˜A.G< È/.£ å3.fJ ÛG.I2 ŽK.ˆJ( 0.ªJ0 è1.ÌJ8 ¼A.a@ 3(.îJH  .L=P ÒQ.¼1X ý"./=\ ÑP.«1`1$h ,( ˆ)^š-dI)_I2˜A)_G<È/)_£å3)_^=ßV)`þ; ó;)bu8(K[)oƒ=0‘E)q f8æ/)r f@J)u =2X¡:)v a`V)w =2h/O)x apë&)y =2xñL)z l€w"){ y1¡C$i ¬-š- ú2@+ ". œ3+ ÛU zV+ ÛU ®:+ úU AS+ ÛU R+ ÛU ,Y+ (V( zQ+ GV0 P1+ ÛU8ANY$j /.(any$Þ/)™*$ß /)s9$à'2)S$á22)4$â=2)1$ãC2)|4$äI2)ù7$åO2)”8$æa)°+$çx)SQ$è «1)7$é ¼1)5$ê f)n;$ë w)0T$ì ˜)üH$í U2)˜2$î 2)ÏS$ï w2»N${T/ÂW$|ûZ)T$}dÕ&$~ /%$l a/¥M0$Ä/ÖB$‚[4 $ƒ w$,$„ wD6$… [$†ûZ 2$‡ûZ(Ì*$m Ñ/=:()b&0ÑJ)cC2Í?)dw¹D)eq29)fq2Ë;)gC2 Æ'$q 30 ˆ3/u0 T*/  @8/& J ¢;/' ¼1 ÑK/( ¼1PAD$r !%ï6$s 0 "/(/+Þ0 ~5/,  ø-/-8J ¸4/.  +//ÁI Ø;/0 ¼1 ë'$t ë0 Ü&0/Ln1 ôZ/Ma ƒN/MI2 Ê>/MDJ ÝK/M¼1 ì4Ï4&"5Nÿ4"Ñ567/Ù7¤N5ÊS7§ «1fB7© aeB7ª O2lG7« =2Ù7¯5-L)„Ï5.?@.z9.-<.X=.†R.W6.ÅA.8.ØM.c5 .¤7 .c2 .È5 .û6 .¥4.N6.Ñ#NW)™Z5HE)»æ5he- 6 YO-$ i8 O%-% A< § -)®PHEK)¼&6hek --[6 ZH-.¼1 ¾2-/«1 O-5)4)éÝ64)éaª3)éf"9)éw 6)éƒÞ7)é'2å7)é]8“U)é22ò5)éc8‘2)éo8Ù))éu8 €MÈ8š]8 dI8›I2 ˜A8›G< È/8›£ å38›Þ> Ã?8œ¼? ÆU8œÓ>( B8œI20 V8œ¼18 ?8œ@ ¾18œH H-8œ£P ˆS8œÂ?X îB8œ¼1` ˜S8œ¼1d -L8œ/h U&8œ¼1p wF8œ¼1t õ98œÈ?x ˆ*8œx€ *'8œaˆ T;8œ'2 dD8œ˜ Z8œ  Î)8œ¨ =<8œ°D<8œL¸KE8œL ¸ Ã(8œL=ÀÝ6i8Û5\&à4)îý84)îaª3)îf"9)îw 6)îƒÞ7)î'2å7)î]8“U)î22ò5)îc8‘2)îo8Ù))îu8A+)ó…94)óaª3)óf"9)ów 6)óƒÞ7)ó'2å7)ó]8“U)ó22ò5)óc8‘2)óo8Ù))óu8±+)ø :4)øaª3)øf"9)øw 6)øƒÞ7)ø'2å7)ø]8“U)ø22ò5)øc8‘2)øo8Ù))øu8–*)ý•:4)ýaª3)ýf"9)ýw 6)ýƒÞ7)ý'2å7)ý]8“U)ý22ò5)ýc8‘2)ýo8Ù))ýu8ò*/)(;)4)a)ª3)f)"9)w) 6)ƒ)Þ7)'2)å7)]8)“U)22)ò5)c8)‘2)o8)Ù))u8‚,/)»;)4)a)ª3)f)"9)w) 6)ƒ)Þ7)'2)å7)]8)“U)22)ò5)c8)‘2)o8)Ù))u80 E)áþ;)É8)â ƒ)óM)ã I2)åJ)ä ï1)EY)å U20W)èA<)zD)é f)8K)ê w)²X)ë A<)t%)ì U260<[)ðp<)‡2)ñ p<)Š@)ò £}(/)ö›<)Ù:)ö£)P+)öa/)úÀ<)Ù:)ú£)P+)úa/)å<)Ù:)£)P+)a/) =)Ù:)£)P+)a/)5/=)Ù:)5£)P+)5a6L): ¼1L=q2L=»%<=&0/)_ƒ=)Ù:)_£)P+)_a/)l¨=)áA)m¨=)9T)n /U ;¹=+®=°A9¹= à.8ÿ= Í?8y1 Ð8 y1 /K8 š1à.8Ê= #*(8&Z> @#8'  #58(  .#8) '2 )#8* '2 K'8+  G0€8-‚> cO8. y1 º>8/‚> >’> S õK8:Ç> <8; #end8<  —:8C õK8D’>&Ó>8›?Ù:8›£P+8›a ¼?h8«·? ˆU8¬-@ Á%8­j@ ¡28°¨@ QR8¸Â@ Ê,8¹Ø@ ¹Z8ºø@( ¦'8¼#A0 âW8¾GA8 Ë 8ÀpA@ 5C8”AH -8ÄÂ@P ÜR8ƹAX …U8ÈüA`?·?Z>Ç>€M8Ý6 &8¢@ mM8¤ x :"8¥@GH8¦Ú?1Ó>-@q2-2¼1@1«1j@q2Ù>aaa'2/¼13@1a¢@q2Ù>'2ßaaÈ1¢@@p@1'2Â@q2Ù>®@Ø@q2Ù>È@ø@q2Ù>·1-2Þ@Aq2Ù>·1AÛ$Aþ@1«1GAq2Ù>A·1)A1'2pAq2Ù>-2-2È1MA1'2”Aq2Ù>AÈ1vA1/³Aq2Ù>³AÄ/šA1Ó>öAq282€O2¼?Ó>öA¼1¼1U2¿A2P8h ™B3rex8i ™BVN8jŸBT;8l'2*'8nadD8o £  Z8p £(Î)8q £0†B8rp<83pos8s @«%8t y1HÎ?öwK8uB2 8| õB€K8}õBŒ"8~2C-08tCÙ%8€ a¥BC)x8§2Cg<8¨ €*8© a3u8PÄHûB"j:ˆ8\tCä&8]’I&³38^tCx&ÂW8^"tC€8CI8²Bn18¥ «128Ç­CDU8È2C28Î ïCDU8Ð2CU&8Ñ ¼1wF8Ò ¼1 3cp8Ó‡C2 8×?DDU8Ù2CU&8Ú ¼1wF8Û ¼1 3cp8܇C9!8Þ?Dÿ=2@8áöDDU8ã2CU&8ä ¼1wF8å ¼1 3cp8æ‡CcG8è ¼1|/8é U2¿&8êöD 3me8ë?D(q*8ì üD0],8í ¼18¨"8î š1< *8ï š1>š1y12@8ôˆEDU8ö2C18÷2C§G8ø$2CR)8ùÓ>3cp8ú‡C kX8û‡C$Ð8ü¼1(3B8ý?D0ƒ*8þa828ÊEDU82C"P8 «1J8 «1 3me8?D2 8  FDU8 2C!8 2C08  '2jY8 a28&F3val8 €288«FDU82C182C3me8?D3B8?D3cp8‡C A(8 U2$t(8 €(=8" €,Ê!8# a02(8&GDU8(2CiA8)2C3cp8*‡CkX8+‡CÅ!8, aP8- «1 C,8. «1$2`81ÞGDU832C3c184 €3c284€ 3cp85‡CU&86 ¼1wF87 ¼1I88 «1=89 «1 A(8: U2$3A8;?D(3B8;?D03me8<?D8NT8=ÞG@)8>ÞGN y1îG S 2h8AÄHÖ8B ¼13cp8C‡CU&8D ¼1wF8E ¼1 3c18F €3c28F€‡M8G aÏ=8H a =8I €(3min8J €,3max8J€03A8K?D83B8K?D@NT8LÞGH)8MÞGV/h8«…I)I8ÀzC)€K8 ¥B4yes8É”C)¥(8Õ ­C)>!8ßïC)æD8ðED)V!8ÿE)†F8ˆE)ýF8ÊE)8 F)nA8$&F)µU8/«F)Œ08?G)ã,8NîGC)8QûB …I¢I S j:8_8CJ::KSd'˜// /!þI IK/"þI Ã"/# J É"/$ J‚0u0/,J»S/ ,JV4/%2JJÍI>JÞ0/MfJML/MI2™?/ML=.ˆJÙ:.£P+.a.ªJYG.O2Œ/."..ÌJt>.O2Ÿ".R=.îJåG.=2R.A<.K„3.X=7./&º GK0X&»ÁIsv&¼'2iv&½fuv&¾wlQ&¿K1O2bKq2SKGK/& K)<&O2)óS& ÁI)å@&=2/& ÅK)2;& O2)}C&  ÁI à?0;1.L Ñ,;3 a KB;4 a )P;6 « =U;7 · ¾L;8 a ¤<;9 a ôP;: a( ó% <*pL 0D<, a Ý?<- a @<. · wP+™M ï0>- a H(>. a Ù,>/˜ …/>0˜ +>1˜ Z1>2˜( M>4˜0 £1>6˜8 ´Y>8S@6P?h _P…?ja1'?k ¨ ,?q_P$?uaP7?v ¨ g0?y.L(†1?zaHZR?{ ¨PX%?}ePX‡:?„× `û;?ˆa€ï:?‰ ¨ˆp3?ŒkPÇN?€˜c%?“a ï,?” ¨¨K?—• °ÌG?›aÈ!?œ ¨Ð“D?ŸqPزH?¢€àtU?¦l è&åV?ªa&#%?« ¨&ô8?®wP&û3?µÅK&ç4?¶aH&T?· ¨P&l'?¹}PX&Ú?À& `&ëA?Äa€&G?Å ¨ˆ&"Z?ȃP&½ ?ÏM˜&ß!?Ðaà&ž?Ñ ¨è&–9?Ó‰Pð&‘6?ÚPø&É6?Û ¨&?ÝP&ØF?á•P&"3?â ¨&¡*?ä•P &F?ìa(&U8?í ¨0&cH?ða8&¿X?ñ ¨@&-F?ô €HpL.L× • l ÅK& M¥ ˆ=?õ™MO2-&ÐP@M-''2A;-( ¨ ¾!Ø' Q hW'!Q õR'"h `<'# €Ð ÕW'$ U2Ô ü!'%š1ÖÐP°('(ÐP4"'š=Q¾I£1QuB(''¢Q ('( O2¯'* J3cv'+ L=‹G'- «1þV'. C2 ‰>('3õQ ('4 O2¯'6 J3cv'7 L=3gv'9 =2¬P': =2 P!0'uWR ('v O2¿>'x '2'C'y O2U['z '23cv'{ L= AL'|WR(%Q/'ŒR4svp' 224gv'Ž =22'’§R3ary'“ C23ix'” f2'–ÍR©K'— «13ix'˜ f2'šôR3cur'› f3end'œ f2'žS3cur'Ÿ '23end'  '2/'‘ZS4ary'•R)7*'™§R)»M'ÍR)üR'¡ôRX0'НS„.'‹ ¯SÎA']RÏF''2†L'¢S?5'¤ J(?çK'ÄàSW'ÅO2ÁG'Æ '2/0'Ù,T)-'ÚNQ)±O'Û¢Q)Ó<'ÜõQ)P'ÝZS)#D'ÞµSœ^VX'ÿUÁR' y1½/' y1Ì3' š1^'' «1b$' †I' 54' aó#' '2  J'  '2(RA'  a0LA'  a8ù%'  a@Y5'  /H}3'Ó>P/`'@*U)÷='AÔ')[V'B2T’J0'Ú©U4*'Û C2@3'Ü©U×0'ݯUýP'Þ¯U/'ß «1 %='à «1$y$'á «1(s5'â «1,ª'*U™C'ç*U1€ÛUq2'2p<ÂU1¼1úUq2'2p<áU1€(Vq2'2p<'2Ù«1V1€GVq2p<³A.Vš- @ ‘V#val@ N5 n<@ m #2@ «1 Ú*@ L=à)@SV Ì9(@ìV È@ìV ±6@ '2 H@@ a &W@ a u+@ '2 V3:@ V÷W€@"½Z %@&½Z úL@'N5 TC@(€ @+€ @-€ 7*@.ÃZ c4@/ÃZ(#ps@0ÃZ0 1J@4 «18 Š'@5 «1< —'@6 a@ «<@7 aH ZI@8 y1P A@9 y1Q È=@; y1R ¯F@< U2S Ã#@= «1T 6@> O2X °L@? O2` á*@@ '2h ‰8@A š1p ™@@B š1r ÷0@C «1t ï@D '2x <@E «1€ "@F «1„ .=@G wˆ ~X@H w FZ@IU2˜ W0@J y1™ _;@K š1š UB@L «1œ ÆJ@M O2  /H@N '2¨ ~,@OÉZ° ´6@P '2¸ K@@Q aÀ ÍV@T aÈ ÊV@U aÐ u8@V aØ wZ@W aà ”1@X aè 6@Y að -A@^ ï1ø )K@_ š1ü A@` y1þ f@a y1ÿ$øE@b I2$‚:@c u8$èY@d C2$ 4@f ÏZ$§5@g ßZ@$\S@h y1T$A@i y1U$ºJ@j y1V$,.@k y1W$N@l ,TX$Ô2@m õ `$X@n ï1`$®D@o ï1d$WP@rfh$Z@sfp$°5@tlx$Q>@vU2y7e?@xLx7`6@yLx7¦!@zL x7ÏL@{L x$~A@}U2{$b@~ y1|þV‘VòV N5ßZ S «1ïZ S÷W@þV/ûZ@6[ó/$K[5/$q2³3$$K[ÂW$$K[[n4$Qc[Q[i[1€x[q2ˆ#$R…[‹[›[q2'2*!$Sc[¡S$Uµ[»[1U2Ï[q2'2S"$VÜ[â[í[q2 sø[+í[DQ$uø[›R$wø[K#$yø[A/${ø[#$}ø[j!$ø[B%$ƒø[Q$…ø[”5$ˆø[_F$Šø[šK$Œø[f9$Žø[ s©\ S™\Ï:$©\î<$’ø[øQ$”ø[N,$–ø[öB$˜ø[eS$šø[Ü$œø[‚E$žø[ý:$¡ø[ƒ)$£ø[Ë0$¥ø[Ä.$ªø[3$¸ „1ã<$º „1ƒ4$¼ „1 s] S@q]›0$¿]46$Åø[ s°] Sÿ ]Ä&$Ú°]à"$Û°]þ,$ܦ4 ‡ç]+Ü]°N$Ýç]a:$‹¹=ÃQ$Œ¹=61$¹=àC$޹= 48^+J5$·-^à $¹= Ù]^+{T$R^œ&$–ø[8?L$¡µ^.g-.7.KS.ŽZ.ŽL.I.Q?Ð8$¶¦44WH$Fß^3pad$Gß^ Ï$ï^ Sé>$Pü^__q2O2ÌM$a_%_1«1>_q2-2-2û?$fbK¼6$gX_^_1O2r_q2O25,$hü^&E$iŒ_’_1€°_q2a£¨Pœ.$lÜ[Û-$sç_3fn$t w23ptr$u /O$v½_".«1µU¢I…IïZ a(` S߀ fD` SÙç_¼1 /f` S '2v` S '2†` S y1–` S T/I2›Pò4)/ '2Ê` S"&I$ ¦1ó*$ª¦1E!A’¦4KFA&¦4 >_a+½OAÅý` K_ a+c(Aca5&AþÝ1 •1Ea+:aÁ@A Ea ¦1ba+WaÊHA baµ,A ø[(A Ea „1™a+ŽaÔIA ™aûAB& 2ƒ%B(q2=-B-2;B1U2ýJB4U2ÖDBK5vRBL5¸=BX 2q6B[.`HXB\€îOB]€??Baf‹HBe 20Bf 2F2BiûA+B“ 2ð>B§ 2ïXB©€ó@B®€ýGBå_hJBçI2ø+Bèwt<Bë 2êBóÏ$Ï.BùU2 4çb Sž%Bú×bnI$4^[3$6^[ ßc S câQCƒc §->c S.c+$C >c „1_c SÿOc¬0$N _c \2|c+qc6>$b|c3$c|c›8$d|c¢/$e|cD$f|caP$g|c/$Zòc4nv$Zƒ4u8$Z÷cÏc y1d SE$Zòc/$[7d4nv$[ƒ4u8$[÷cd¥0$[7d DïZ ßfd S9Vd9FH†fdE ƒd EÅd ÐEþd zE €  E € ~E e E íd ŸE ød ^HE ød:€ød;ídÅd†ee¯ F[GBF`-e 0F„ˆe#idF† G íTFˆˆe ;FŠ a vFŒ a º>F£g ÖF¥ /(<LFb­e..`.R f ¯ F@”m$tFB €(2 FD €,Ñ FF G0ÔFH¡k82FH¡k@ä FH#¡kHFJ ¨PlHFL aXÅFLa`FN ˜h'FPqmp FRCmx¸FT§k€øFU €ˆëFV €ŒMFW €ÕPFX €”îFZ /˜ F#PmVmkmkma˜­kb F$~m„m”mkme8« LF&´m.8 .® #Ömé,$ '2Þ'%u8 l$"%n#out&´m#tag' a P( l Î') U2 >4* € u0-tn ù&. C2 ý</ U2 šH0 U2 Y1 U2 .2 I2=M€ 80"=2%l 40">ˆ< f 00">jT3 f h4"ŽMG u8?5YJ°®KœËq@Ý(Jq2̥ȥAcvJL= ¦¦Bå(O€CaxO «1H¦B¦DýFO 22EspO 22D(,O «1FàTÙ (îŸGÈ®äHì®ñÎoIU çà IQ (îIR  îIX îGõ®äGü®äG¯äH¯þ!pIT /îIQ p-G ¯äH6¯þZpIT DîIQ €¨G=¯äHS¯þ“pIT YîIQ 0­GZ¯äHp¯þÌpIT rîIQ °©Gw¯äH¯þqIT ‹îIQ Ð G”¯äHª¯þ>qIT  îIQ G±¯äHǯþwqIT µîIQ ДGίäHä¯þ°qIT ÎîIQ 0‘Gë¯äJû¯ KL30‘žœ„t@Ý(3q2•¦‘¦Acv3L=Ö¦ΦBå(5€Csp5 22;§5§Cax5 «1ާ„§LýF5 22 ¨¨L(,5 «1„¨‚¨MpCÍsCin9'2¾¨º¨Cout;Ìnø¨ô¨L>=€2©.©LR<>-2l©h©M C!sLÏ1A f¦©¢©G5’äG¯’äN½’ITvIQ}G¢‘äG¹‘äGÈ‘äHÓ‘%`sITvGá‘äGö‘äGþ‘2H ’Ý¥sIU}IT~G’äG…’äG’äOR’tL§.CrÞ©Ü©GY’äGd’äP?]‘@C5 ;tQPªªGS‘äG]‘äGr‘äNÎ’?IU~IT îK£IД~œw@Ý(q2+ª'ªAcvL=lªdªBå( €Csp  22Ѫ˪Cax  «1&««LýF  22¸«°«L(,  «11¬/¬MDavCin$'2k¬g¬Cout&'2¥¬¡¬L>(€ß¬Û¬LR<)-2­­M@DÚuLÏ1, fS­O­G¼•äG/–äN=–ITvIQ}GB•äGY•äGh•äG}•äG…•2H“•_Û9vIU}IT~G•äG–äG–äOÙ•¦vL§..r‹­‰­Gà•äGë•äP?ý”àC  ÏvQP±­¯­Gó”äGý”äG•äNN–?IU~IT îK! Ëœy@Ý( q2Ø­Ô­Acv L=®®Bå( €Csp  22z®x®Cax  «1©®®LýF  225¯1¯L(,  «1ˆ¯†¯OQJJxCsv'2¯¾¯L>'2 °°G_äGt™ÝG~äH‰L'2¸³²³P?ò¢! - ¨QQò´´X -Y\òï´í´YgòµµZtò‘ Zò‘˜YŽò¦µ µY›ò÷µïµY¨òk¶Y¶Yµò,·&·YÂò·u·YÏò¸ ¸Píó§#à-æ 3{Qÿ󧸟¸Xà-Y ô¹¹Yôº¹ª¹Y"ôxºlºY.ô»üºY;ôž»Œ»YHôo¼_¼YUô!½½H¯#Y{IUvN¾#fIU‘€1$#[Üò0.n{Yáò¬½˜½G %äN%sIT;\îò|&•{Yïò|¾z¾]"&&  Ê{Q3¡¾Ÿ¾G©!äHÉ!€|IU "ìIT ìGÓ!äHè!2|IT}IQ1IR3H"€^|IU .ìIT ìG"äH#"|IT~IQ1IR3HD"€¹|IU ;ìIT ìGN"äHc"è|IT~IQ1IR3H"€}IU NìIT ìG‰"äHž"C}IT~IQ1IR3Hº"€o}IU bìIT ìGÅ"äHÛ"Ÿ}ITwIQ1IR3Hü"€Ë}IU rìIT ìG#äH#û}ITwIQ1IR3G†#äGŽ#šG•#äG#§Gk$´H}$Áa~IUvIT‘ð~IQ0HŒ$Ά~IUvIT SH›$Û«~IUvIT Hª$èÐ~IUvIT Hø$õè~IUvH%IUvIT0G %äH+%L*ITHh&BIUvHx&aIUvIQ‘˜H’&)yIUvHœ&6“IU‘ð~G£&äG®&äG¿&äGÇ&CGW)äGo)äGw)PG'+äH4+]€IT~IQ0GG+äHT+]B€ITIQ0Gg+äHt+]g€IT}G+äH+]’€ITwIQ0GÂ+äHÔ+]¹€IT‘ð~G ,äG—,äG¯,äH¿,]ý€IT~IQ2GÏ,äHà,](ITwIQ2Gï,äHÿ,]RITIQ2G-äH&-]~IT‘è~IQ0G7-äNI-]IT‘è~IQ2GO!äG~!äG!äHŸ!jñITvIQ0IR2GÓ&äHÞ&L‚ITvGè&äG5)äOð&v‚L§.rȾľG÷&äG'ä^? !@-ú ž‚QP¿¿G!äG !äG#!äH]-?ê‚IU}IT ѱGb-wR;ã°©žœ¢…SÝ(ãq2)¿%¿TcvãL=j¿b¿Uå(å€Vspå 22ϿɿVaxå «1"ÀÀWýFå 22ŸÀ—ÀW(,å «1ÁÁMÐEí„Viné'2RÁNÁVoutëÌnŒÁˆÁW>í€ÆÁÂÁWR<î-2ÂüÁMFA„WÏ1ñ f:Â6ÂGµªäG/«äN=«ITvIQ}G"ªäG9ªäGHªäHSª%€„ITvGaªäGvªäG~ª2HŒªª–Å„IU}IT~G–ªäG«äG«äOÒª1…W§.órrÂpÂGÙªäGäªä^?Ý© Eå Y…QP˜Â–ÂGÓ©äGÝ©äGò©äNN«?IU~IT îR®8Î0­~œ'ˆSÝ(Îq2¿Â»ÂTcvÎL=ÃøÂUå(ЀVspÐ 22eÃ_ÃVaxÐ «1ºÃ®ÃWýFÐ 22LÄDÄW(,Ð «1ÅÄÃÄMpFr‡VinÔ'2ÿÄûÄVoutÖ'29Å5ÅW>Ø€sÅoÅWR<Ù-2­Å©ÅM Fë†WÏ1Ü fçÅãÅG®äG®äN®ITvIQ}G¢­äG¹­äGÈ­äGÝ­äGå­2Hó­•J‡IU}IT~Gý­äGe®äGp®äO9®¶‡W§.ÞrÆÆG@®äGK®ä^?]­@FÐ Þ‡QPEÆCÆGS­äG]­äGr­äN®®?IU~IT îR/Z»€¨ËœŠSÝ(»q2lÆhÆTcv»L=­Æ¥ÆUå(½€Vsp½ 22Ç ÇVax½ «1=Ç1ÇWýF½ 22ÉÇÅÇW(,½ «1ÈÈOѨJO‰VsvÁ'2VÈRÈW>Ã'2È•ÈGߨäGô¨@—Gþ¨äH ©LA‰IT}G©äO©“‰W§.ÉrûÈùÈG"©äG-©ä^?§¨pE½ »‰QP!ÉÉG¨äG§¨äG½¨äNK©?IU}IT îRK$¨p-Ò œ•SÝ(¨q2HÉDÉTcv¨L=ÉÉUå(ª€Vspª 22/Ê-ÊVaxª «1^ÊRÊWýFª 22èÊäÊW(,ª «1EË9ËM.X”Vs® aßËÍËW>°'2 ÌšÌ^¸B.À.² Ï“Q'¸ûÌéÌXÀ.Y2¸ÀͶÍY=¸?Î/ÎZJ¸‘ ZW¸‘Yd¸ñÎçÎYq¸pÏhÏY~¸ÚÏÒÏY‹¸>Ð6ÐY˜¸¤ÐšÐY¥¸ÑÑ[²¸/³‹Y·¸¿Ñ©ÑG1äN1sIT;[ĸ0/î‹Yɸ¦Ò ÒGí3äNú3sIT<\Ö¸H4¯VYÛ¸÷ÒïÒ[è¸`/OŒYí¸XÓTÓGR4äN_4sIT;[ú¸/Zû¸‘˜\¹º4ŒŒY ¹’ÓÓ]"¿4¿4   ÁŒQ3·ÓµÓG|4äH—4ôŒIUvIT}IQ‘è~G¬4äNº4€ITIQ~HÓ44IUvGç4äNò4ŒIT}\¹è7}Y¹ÜÓÚÓ]"í7í7 ²Q3ÔÿÓGI.äHi.€ëIU "ìIT ‚ìGs.äHˆ.ŽITvIQ1IR3H©.€FŽIU .ìIT ‚ìG³.äHÈ.uŽITvIQ1IR3Hé.€¡ŽIU ;ìIT ‚ìGó.äH/ÐŽITvIQ1IR3H$/€üŽIU NìIT ‚ìG./äHC/+ITvIQ1IR3H_/€WIU bìIT ‚ìGi/äH~/†ITvIQ1IR3Hš/€²IU rìIT ‚ìG¦/äH½/ãIT‘ð~IQ1IR3G0äG&0šG-0äG50§Gf0´Hv0ÁGIUvIT}IQ0H…0ÎlIUvIT €`H”0Û‘IUvIT H£0è¶IUvIT Hð0õÎIUvHú0ëIUvIT0G1äH#1L‘IT}G4äH4L5‘IT}G4äG04äHÿ4)g‘IUvG5äG5äG"5äG*5CG?6äG7äH$7]Ï‘IT‘è~G=7äHJ7]ù‘IT~IQ0G_7äHl7]#’ITIQ0HÐ7;’IUvHà7Z’IUvIQ‘G8äG 8™G'8äG/8PG•8äH¢8]³’ITvGÕ8äGå8äHô8]ì’IT‘ð~IQ0Gw9äH‡9]“ITIQ2G•9äH¥9]@“IT~IQ2Gµ9äHÇ9]l“IT‘ð~IQ2GÕ9äGå9äHô9]¥“IT‘€IQ0G:äN':]IT‘€IQ2Gï-äG.äG-.äH?.j”ITvIQ0IR2G=5äGM6äHX6LJ”ITvGb6äOj6œ”W§.¶r(Ô$ÔGq6äG|6ä^?­-`.ª Ä”QPbÔ`ÔG£-äG­-äGÃ-äH=:?•IU}IT ѱGB:w_¼8T€P«Øœª–AsvV'2Ô…ÔAoutV'2öÔìÔLý<W '2nÕhÕFîXÖm‘°H‡«€¼•IU NìIT ‚ìGš«äH¯«ë•ITvIQ1IR3H⫢–IU}ITwIQ G¡¬äH³¬¥H–ITsIQ ²GɬäHÖ¬]r–ITvIQ0G­äH!­]œ–ITvIQ2G(­w_;A€P©Qœ@—AsvC'2¿Õ»ÕAoutCu8þÕøÕFîDÖm‘PHƒ©˘2—IUóUITwIQ `G¡©w_=Z&'2À¦¸œË˜Asv('2SÖKÖLý<) '2¶Ö²ÖFî*Öm‘°Cout+ '2øÖìÖHô¦€Þ—IU NìIT ‚ìG§äH§ ˜ITsIQ1IR3G,§äH=§²>˜IT ²IQ0HV§˘i˜IU}ITwIQ ÐG9¨äHF¨]“˜ITvIQ0Ga¨äHq¨]½˜ITvIQ2Gx¨w?~GÞÀ—óœQ¡Asvà'2~×z×@îàQ¡¾×¶×@ à8Cm!ØØLf ákmaØYØLð â '2ÃØ½ØLÎ'ã '2Ù ÙL19ä '2cÙ_ÙL På '2Ù™ÙL¸Gæ '2×ÙÓÙL/Qï '2ÚÚM°D›L*(÷ '2ÄÚ¶ÚM E ›E_svú '2LQú '2iÛ]ÛHÈ€0šIU  ðIT ‚ìGÔäHã¿\šIT‘¨IQ0GêäGžäGwžäH‡žÌšIT‘˜GߣäGò£äH¤ÙÖšIT‘¨IQ0G\¦äHn¦]ýšIT‘¨G¬¦äHQ€7›IU íIT ‚ìG]äHth›IT‘¨IQ1IR3Gä¥äHó¥]›IT‘¨GD¦äGä—æHü—€Ö›IU ÉíIT ‚ìG ˜äH"˜œIT|IQ1IR3H>˜€1œIU ÖíIT ‚ìGH˜äH]˜`œIT|IQ1IR3H~˜€ŒœIU "ìIT ‚ìGˆ˜äH˜»œIT|IQ1IR3H¹˜€çœIU éíIT ‚ìGØäHؘIT~IQ1IR3Hô˜€BIU öíIT ‚ìG™äH™sIT‘ IQ1IR3H8™€ŸIU bìIT ‚ìGD™äH[™ÐIT‘¨IQ1IR3G»™äGÙšGÊ™äGÒ™§HøšfžIU H œóBžIUvIT PBHœ bžIUvIT‘¸H'œɵ€žIUvITH2œ žžIUvITH<œ »žIUvIT0HDœ' ÓžIUvGMœ6GTœäG_œäGpœäJ†œCG äG PG—£äH¤£]XŸIT~IQ0G·£äHÄ£]}ŸIT~G¤äH)¤]¤ŸIT‘¨G?¤äHN¤]ПIT‘˜IQ0G_¤äHl¤]õŸIT|G‡¤äH–¤]! IT‘ IQ0G§¤äH´¤]K ITIQ0GǤäHÔ¤]p IT|G*¥äG?¥äGW¥äHi¥]¶ IT‘ IQ2G¥äH¥]à ITIQ2G§¥äH¹¥] ¡IT‘˜IQ2GÇ¥äG¦äH¦]C¡IT~IQ2G'¦äÖm?'qPBƜɵAeskmÜïÛ@º>se÷ÜÝÜClent «1Þ ÞCit«1ÍÞ¥ÞCsvu '2…àeàLîvQ¡ËáÅáCtagw a&ââCtyx Ï5Ëâ»âL Pz l‡ãsãLÎ'{ lyäeäCref| aeåWåMp2ý¢ElenØ£GˆDäH“D4 ’¢IT}HÕDA ¹¢IU~IR0IX0IY0HàDN Ñ¢IU~G GäN2GjIT}IQ0IR2M`3á¥Clenò£ æýåMÐ3Œ£L/R f¹æµæHGA `£IU~IR0IX0IY0G~LäNLjIT}IQ0IR2M4¤¤LË-U2õæïæCstraEçAçClen£ç{çM04S¤L.,a¹çµçHàP[  ¤IU|HëPY"¤IUvN QA IU~IT ÞìIR0IX0IY0GŸKäHªK4 x¤IT}G»PäNÍPjIT}IQ0IR2GxFäHƒF4 ɤIT}GŽFäH™Fh î¤IT}GxJäHƒJ4 ¥IT}H¦Ju +¥ITHéJA W¥IU~IQ0IR0IX0IY0G(LäH:Lj†¥IT}IQ0IR2GLäH¯Ljµ¥IT}IQ0IR2G¼LäNÎLjIT}IQ0IR2M 2h§Csv2( '2ûçïç`len) £‘°Cstr* aƒè}èa7¦E_p3 /PðóE 33 ˜¦Q ÐèÌèQý ééb03YHé@éN®P‚ IT|G€EäH‹E ½¦IT}HçEA é¦IU~IQ1IR0IX0IY0GóEäGhHäH}Hj'§IT|IQ‘°IR2H`Ku ?§IUNnLA IU~IQ0IR0IX0IY0M`4ð§Csav>22«é§éHëHœ ž§IU~GIäHI© ΧIT}IQsIR0G IäN/Iœ IU~M4,¬ChvJI2çéáéM 4‘ªCavWC26ê0êM5h¨C_pW#/ƒêêGÛLäNèLsIT;O#MV%©Che\i8½ê¹êCkey^'2ùêóêG+MäH8Mµ ШIT}IQ0GCMäHNM õ¨IT|GfMäNyMÏ ITsIQ|IR‘ M05ªCkeyf'2HëFëChegi8oëmëCvalh'2šë’ëHÂMœ Œ©IU~IT‘˜HÒMœ ¬©IU~IT‘ GëMäHöMÛ Ñ©ITsGNäH%Nç  ªIT}IQ‘˜IR0IX0IY0G>NäGóLäHþLL@ªITsGMäH©Mô gªIQ‘¨GVRäNmRô ITsIQ‘¨MÐ4‹«Cheqi8üëøëCkeyu'26ì2ìCvalv'2pìlìGìIäHüIµ «IT}IQ1GJäHJ '«ITsGJäH+J R«IT}IQsH9Jœ p«IU~ITNDJœ IU~ITsHxI ¨«IU~IQ0GžIäH©I Í«IT}G¹IäHÄI( ò«IT}GSJäH^J( ¬IT}NfJN IU~M`5°CspŽ22Äì¦ìClen«1îîL=€Aî;îL¸W €–îŠîLK‘'2 ïïCcv’L=„ï|ïL*(“'2èïàïM°5&­LXA ú_JðDðGOäG)OäG>OäGÓRäGÛR5 GQNäHnN€_­IU íIT ‚ìGyNäHŽNŽ­IT|IQ1IR3GõNäGýNšGOäG O§GZOäGOäGOäH¨OB ®IT}G³OäH¾OL&®IT}GÊOäGÕOäHéOO d®IT íIQ2GôOäH,PY‰®IU}HmPA µ®IU~IQ3IR0IX0IY0GuPäGPäG–PäGžPCHXQ\ ¯IU ïG`QäHrQj7¯IT}IQ0IR2GzQYG¤QäH¶Qjs¯IT}IQ0IR2GÞQäHðQj¢¯IT}IQ0IR2GRäGRPGRäH"R]á¯ITGzRäG‰RäHœRi °IT|IQ|IR1G¬RäHÁRi R°IT‘˜IQ‘˜IR1HöR\ q°IU PïNS\ IU ˆïP]ÆC2‹ ðQz•ð“ðQn¿ð½ðP]/D@2•ù°QzäðâðQnññ]]PDPDà O±Qz7ñ5ñQn\ñZñN[D… IUs]]LGLG¡‘±QzññQn¯ñ­ñ]]`G `G‘Ó±QzÔñÒñQnþñüñ]]xGxG²Qz#ò!òQnQòOò]]GGW²QzvòtòQn òžò]]¨G¨G Ž™²QzÅòÃòQnóòñò]] K K˜Û²QzóóQnFóDó]]8K 8K¦³QzkóióQn•ó“óG¸BäHÃB° B³IT|H Cœ Z³IU~GšCäH¬C½ †³IT‘¨IQ1G¹CäHÆCÊ ­³IT‘¨GeDäHpD× Ò³IT|HE ï³IU~IQ0G EäH!Eä %´IT ÜìIQ1IR0H,Eœ =´IU~H8Eœ U´IU~H@EN m´IU~HnEA ¦´IU~IT K²IQ5IR0IX0IY0HbFA Ò´IU~IQ5IR0IX0IY0GÐGäHÛG4 ÷´IT}HHA µIU~IR0IX0IY0HUHA JµIU~IQ1IR0IX0IY0H¨Hñ gµIU~IQ0G½HäHÈHþ ŒµIT}GKäHKj»µIT}IQ0IR2GèRw?Z.(P–oœ¸Ae*kmÄó¸óAsv*'2PôLôOX—gÙ¶ClenG«1ô‰ôCiG«1âôÜôO„—)·¶CsavJ220õ.õG—äH—© ¦¶ITsIQ}IR0c­—IUvGh—äNs—þ ITsO±–’õ·ClenR«1UõSõCiR«1€õxõM€D®·Che[i8ãõßõCval_'2ööG —äH—µ r·ITsIQ1G%—äH3— ·ITsIQc>—IUvGÒ–äHÝ– Ó·ITsGé–äNô–( ITsN‰– IUvITsIQ0dY$Ñ '2'¹esÑaEvÓ GDO4Ô jDîÕ%nEobj× '2D19Ø '2DšHÙ '2DÖÚ '2Dý<Û '2D/QÜ '2DYÝ '2aĸE_pö#/aÖ¸E_pý/a¹DÛPGaú¸E_p/fEcur'2fE_p  /fE_p /gÚ#—G€`EœQÙTp™ jXö>öTn™j€÷b÷Vsvš '2=ù³øVseq› C2ŽþˆþVmapœ I2áþÙþVi ˜Gÿ?ÿVidž aµÿ¥ÿWî QÙ•_WšH¡ U2Ú¬WY¢ U2 ÂM@¼ºVptr¼a üVend¼an ` W8½w  Wؾƒ¡ • MP@§ºW¨CăB 8 W3FÅaÜ Ì N s IT0N“r# IUvM@»Vf݃† „ Hmu# ïºIUvN|u IT0MAà»Vptrâa® ª Vendâaî ä W8ãwi _ WØäwà Ú M@A¦»W¨Cê˜0*W3Fëa‹{NZv0 IT0IQ:Hêu# ¾»IUvG‰väN”v< ITOØvPb¼>Í?ù«1‘¬hlenú£‘°Hõv# -¼IUvG wäN#wI IT}IQ‘°IR‘¬IX0OÛyUä¼>Í?þ«1‘¬hlenÿ£‘°Høy# ¯¼IUvGzäN&zV IT}IQ‘°IR‘¬IX0MÀ@¾`uvw‘°LÍ?€73GIsäHVsc :½Iawö-G-wäH8w< _½IT}Hey# w½IUvGyäH’yp ©½IT}IQ~IR‘°GÆyäHÑy} νIT}G²|äH½|Š ó½IT}GÊ|äNØ|Š IT}O—{F’¾`len˜‘°LO;aqmH¶{— j¾IQ‘°GÌ{äNÚ{¤ IT}IQ~MpAÖÂCcv'2­§Csub'2öCpkg aŒ„MðA+ÀLK#'2öða ¿E_p//Pðów@B/j¿Q C?Qý}ybPBY¹³N~~‚ IT~G‹wäH™w²•¿IT}IQ~G£wäH·w²Æ¿IT DíIQ4GÝwäHìw± ò¿IT}IQwGówäGŠ~äNœ~jIT~IQ0IR2M€B_ÁC_sv7'2 LQ7'2ˆ|GDxäHQx¿ˆÀIT~IQ0G[xäGwxäG}äH}ÌÈÀITwG™}äH­}]îÀITwGÀ}äGÒ}äHà}Ù&ÁITwIQ0GK~äGY~äNk~jIT}IQ0IR2aqÁE_pB/]"÷x÷xB¦ÁQ3 GxäGxšGxäG%x§GÊxäHÕxLÿÁIT}GyäGyäGyäG'yCGOyäG¨zäG°zPHÞz\ yÂIU ðïGé{äHû{j¨ÂIT}IQ0IR2G©~äN½~²IT IíIQ6O|ƒçÃLé-Oa51LÐPaokH|¾ :ÃIUIT PíH |¾ ^ÃIU0IT ²H7|Ë ƒÃIUsIT SíH]|€ÀÃIUб(í}0)(ITsIQ}Gn|äN{|¤ IT}IQ0M°BÍÄCpkgYa©¥Hîz× +ÄIUwIT -²H{äCÄIU}H{²bÄITwIQ~G<{äHG{B ‡ÄIT}Gr{äG‰{“H‹|ä¹ÄIU}N•|â IT0M€9ÄÇCspk22õãCvall'2ÀºLé-ma LÐna|tMÀ9‰ÅLXArú_àØGÛcäGîcäGdäGG}äGO}5 Hdcä¡ÅIU}G~cäHc²ÍÅITwIQ}H¡c¾ òÅIUIT PíH³c¾ ÆIU0IT ²G½cäGÅcšGÌcäGÔc§GdäG=däGGdäH[dï •ÆIT ŠíIQ2GbdäGtdäHd ÇÆIT~G‰däGœdäG¬däGÂdäGÊdCHãdü 2ÇIU}IT ‚íIQ7HeË XÇIUwIT SíGç|äGï|PH }Ë —ÇIU}IT víG%}äN8}i IT~IQ~IR1M;ÈC_pš/B<G,gäN9gsIT;M@;[ÉCaœ'2•L‰,žÙóñaEÈE_p¦/]"ÉgÉg ¦zÈQ3H[g ˜ÈIUvIT~Hfgÿ°ÈIU|GpgäH{g ÕÈIT}G…gäHgLúÈIT}H›guÚÉIU}H³g 2ÉIQ}iÚ|GºgäNÉg€ITwIQ}Mp;ÔÉLé-®a?;LЯa{uHh¾ ³ÉIUIT PíN$h¾ IU0IT ²M°>ƒËCkeyÎ'2ÈÄCvalÏ'2þL.NÐaQMa.ÊE_pÚ/M?§ÊLé-ã aŽˆLÐä aß×HFo¾ †ÊIUIT PíNWo¾ IU0IT ²]"oo ÚÜÊQ3=;H´n þÊIUvIT0IQ0H¿nÿËIU|HÑn 8ËIUvIT1IQ0HÜnÿPËIU|GõnäHoŒuËIT}GêoäM@=ÎCspø22p`Ckeyù'2 Cvalú'2bVL.NûañéMÀ=?ÌLXAÿú_YSGÃläGÖläGêläGtäG t5 Mð=¸ÌLé- a¨¢LÐ aùñH…q¾ —ÌIUIT PíN–q¾ IU0IT ²GZläHil çÌIUvIT0IQ0HtlÿÿÌIU|H†l !ÍIUvIT1IQ0H‘lÿ9ÍIU|G¥läG­lšG´läG¼l§GmäG%mäG/mäHCmï ¸ÍIT ŠíIQ2GJmäG\mäHgm êÍIT~GqmäG{mäG†mäG—mäGŸmCGÑmäGÿoäGpPGösäN ti IT}IQ}IR1M@>èÏCkey''2ZVCval('2”Mp>ðÎC_p)/ÎÊG-näN:nsIT<aÏE_p+/]"dndn+7ÏQ3H n YÏIUvIT0IQ0Hn {ÏIUvIT1IQ0GDnäHdnç µÏIT~IQIR0IX0IY0G~näH‰nŒÚÏIT~G“näM°<&ÐC_p3/-)GôiäNjsIT<Mà<ÜÑCkey5'2meCval6'2ÕÍL‰,8!Ù31a€ÐE_p@/P"Çj=@©ÐQ3XVH%j ÌÐIUvIT0IQ~H0jÿäÐIU|HDj ÑIUvIT1IQ~HOjÿÑIU|GYjäHdj DÑIT}GnjäHyjLiÑIT}H„juÚÑIU}Hœj ¡ÑIQ}iÚ|G£jäNÇjç IT‘IQ‘€IR0IX0IY0M ;¸ÒLé-Fa{LÐGa¹µG¶h€GÀhäGÐh" GÚhäHèh/ aÒIT~IQ}Hk¾ †ÒIUIT PíH,k¾ ªÒIU0IT ²GDpäPWÙeð9g óÔQdÙóïQzÙ-)QnÙgcXð9Y…Ù¡ŸY‘ÙÆÄYÙíéY©Ù- # YµÙ¦ ž YÁÙ!![ËÙ@:NÔYÌÙ˜!![ØÙ€:‚ÓYÝÙþ!ø!^ðKf°:‰ ÛÓQ O"K"Qý‹"‡"bà:YÇ"Á"GÙo‚ j"sfsf ‹ ÔQ3##GfäH+f© @ÔITwIQ}IR0GKfäHžeYhÔIU‘ˆG©eäHÍe< ©ÔIT}IQ‘ˆIR‘€”IX IY0GíeäHûeþ ÏÔITwGfäN›fI ITw^“eià;°~ÕQ°T#P#Q¥#‹#Xà;Y½º#°#YÊ3$)$bÖ@<YÖ¤$¢$N“uU IU}ITIQ0^“£pP?º ÖQ°Ë$Ç$Q¥%%XP?Y½/%'%YÊ“%‹%bÖ ?YÖñ%ï%NÇvU IU}ITIQ0H’bË .ÖIUIT ðìH©bË SÖIUIT /íHÅbü }ÖIUIT 9íIQ:Hèb× £ÖIUwIT ÜìHÿbË ÈÖIUIT XíH%cü òÖIUIT díIQ<H‚äHS‚©àIT}IQ1IR3Hs‚€ÕàIU ÖíIT ìG~‚äH“‚áIT}IQ1IR3H¯‚€0áIU "ìIT ìGº‚äHÏ‚_áIT~IQ1IR3Hë‚€‹áIU éíIT ìGö‚äH ƒºáITIQ1IR3H,ƒ€æáIU öíIT ìG7ƒäHLƒâITIQ1IR3Hhƒ€AâIU bìIT ìGuƒäHŒƒrâIT‘°IQ1IR3H­ƒ€žâIU îIT ìGºƒäHуÏâIT‘°IQ1IR3G’„äGš„šG¢„äGª„§HP…fãIU Hk†óAãIUsIT €;Hx† aãIUsIT‘¨Hˆ†£ïãIUsIT~G“†{ Gš†‡ H©† ·ãIUsIT~H³† ÔãIUsIT0H»†' ìãIUsGņ6G͆äGÙ†äGë†äJ‡CG‰äG ‰PGjŠäHŠ“ säIT‘°IQ2GЋäHß‹]ŸäIT‘˜IQ0Gð‹äHý‹]ÉäITIQ0GŒäHŒ]îäIT~G8ŒäHEŒ]åIT}IQ0G_ŒäHqŒ]?åIT‘°G¹ŒäHÎŒ]fåIT‘°GøŒäH]‘åITwIQ0GäGpäGˆäH˜]ÕåITIQ2G¨äH¹]æITwIQ2GÐäHà]*æIT}IQ2G÷äGŽäN"Ž]IT‘˜IQ2?°Vo€;Éœ£ïAeskmã-Ñ-@º>seµ.§.Clent «1_/S/Cit«10ë/Csvu '2Ž1€1LîvQ¡22,2Ctagw a‹22Ctyx Ï53ú2M 0ßçClenò£|3r3Mà0½çL/R fï3ë3H%>A ‘çIUvIT K²IR0IX0IY0Gi>äN{>jITsIQ0IR2GÐ=äNÛ=4 ITsMð/{éCsv2( '2/4%4`len) £‘°Cstr* a¤4ž4a5èE_p3 /PðB=`03 –èQ ñ4í4Qý+5'5bp0Yi5a5NB‚ IT}GÈ<äHÓ< »èITsH=u ÓèIUH5=A éIUvIT K²IR0IX0IY0GB=äG9>äHN>jEéIT}IQ‘°IR2N@A IUvIT K²IQ0IR0IX0IY0Mà1êCsav>22Ì5È5Hë?œ ±éIUvG@äH@© áéITsIQ}IR0G@äN-@œ IUvM1LîChvJI266M 1¤ìCavWC2W6Q6M€1{êC_pW#/¤6 6G™@äN¦@sIT;Oã@Z8ëChe\i8Þ6Ú6Ckey^'277Gì@äHù@µ ãêITsIQ0GAäHA ëIT~G*AäN=AÏ IT}IQ~IR‘ M°1.ìCkeyf'2i7g7Chegi87Ž7Cvalh'2»7³7H‚Aœ ŸëIUvIT‘˜H’Aœ ¿ëIUvIT‘ G«AäH¶AÛ äëIT}GÄAäHæAç  ìITsIQ‘˜IR0IX0IY0GBäG²@äH½@LSìIT}GTAäHnAô zìIQ‘¨G(BäN?Bô IT}IQ‘¨MP1žíCheqi888Ckeyu'2W8S8Cvalv'2‘88G ?äH?µ íITsIQ1G)?äH4? :íIT}G@?äHN? eíITsIQ}H\?œ ƒíIUvITNg?œ IUvIT}H”> ÈíIUvIT ¡ìIQ1GÂ>äHÍ> ííITsGß>äHê>( îITsGw?äH‚?( 7îITsNŠ?N IUvHV<A …îIUvIT K²IQ5IR0IX0IY0pŒ<™îIUvG <äH«<× ¾îITsGp=äH{=4 ãîITsHµ=A ïIUvIT K²IR0IX0IY0H§?ñ AïIUvIT ›ìIQ1GÂ?äHÍ?þ fïITsG9@äHK@j•ïITsIQ0IR2GIBw?Y3&0€·œ?òAe*kmÏ8Ç8Asv*'269.9O`h³ðClenG«1›9•9CiG«1î9è9Oˆ)‘ðCsavJ22<:::G‘äH¡© €ðITvIQ}IR0c±IUsGsäN~þ ITvO•€›ÏñClenR«1a:_:CiR«1Œ:„:MàBˆñChe[i8ï:ë:Cval_'2';%;Gî€äHþ€µ LñITvIQ1G äH wñITvIQc#IUsG·€äH€ ­ñITvG΀äNÙ€( ITvHY€ òñIUsITvIQ1H@  òITvIQ0pÔ#òIUsNç\ IU (ðdK*Ï '2ýòesÏaEvÓ GDO4Ô jDîÕ%nEobj× '2D19Ø '2DšHÙ '2DÖÚ '2Dý<Û '2D/QÜ '2DYÝ '2aîòE_pö#/fE_p /?02œÐ~[œíóAsvœ '2R;J;Ci €¿;±;Echž lLSŸ U2`<X<LM-  U2È<¾<Cpos¡ aJ=:=Cs¢ aö=ò=Clen£ £0>,>LÖ ¤ £l>f>Gó~äNþ~4 ITsdŠ$sacôess)aEit €Eoutu aEchv lDSw lDM-x U2Eposy aElenz £g±$•GSâ œrÿTp™ jÇ>µ>Tn™jÁ?…?Vsvš '2ŠB2BVseq› C2öEòEVmapœ I20F,FVi ˜pFhFVidž aÚFÎFM 8åõVptr¼adG^GVend¼a·G­GW8½w0H(HWؾƒ›HHM`8§õW¨CăGI=IW3FÅaáIÑINï[ IT0Hs[# ¿õIUvG;\äNM\c Ia‘˜ö-M 8UöVf݃J‰JGª\äH¸\c )öIa‘˜ö-H^# AöIUvN(^ IT0MÐ82÷VptrâaËJÅJVendâaKKW8ãw™KKWØäwL LM9øöW¨Cê˜vLnLW3FëaåLÕLN¾]0 IT0IQ:H[]# ÷IUvGë]äNö]< IT~O-^M´÷>Í?ù«1‘¬hlenú£‘°HJ^# ÷IUvGb^äNz^I ITsIQ‘°IR‘¬IX0MP9Oø>Í?þ«1‘¬hlenÿ£‘°G†^äH‘^< øITsH)`# øIUvGA`äNY`V ITsIQ‘°IR‘¬IX0Où^Úiù`uvw‘°LÍ?€‘MMH_# ¡øIUvG_äH0_p ÓøITsIQ~IR‘°G^_äHi_} øøITsGx_äH†_c !ùIa‘˜ö-G¥_äH°_Š FùITsG½_äNË_Š ITsO¹VJñù`len˜‘°LO;aËMÇMHÒV— ÉùIUsIT~IQ‘°GêVäNøV¤ ITsIQvMà5/úC_pš/NNGcTäNpTsIT;M6ðúCaœ'2?N;Na]úE_p¦/]"°T°T ¦’úQ3wNuNH‹T °úIUvIT~H–TÿÈúIU|G¢TäN°T€ITIQsM@6.ûC_p3/žNšNG"WäN/WsIT<Mp6WüCkey5'2ÚNÖNCval6'2OOasûE_p@/]"¬W¬W@¨ûQ3LOJOHUW ËûIUvIT0IQsH`WÿãûIU|HsW üIUvIT1IQsH~WÿüIU|GŠWäN¬Wç IT‘˜IQ~IR0IX0IY0^“xX 6°âüQ°sOoOQ¥¬OªOX 6Y½×OÏOYÊ;P3PbÖð6YÖ™P—PN][U IUvITIQ0^“ZP7ºmýQ°ÀP¼PQ¥ùP÷PXP7Y½&QQYÊŸQ•QbÖ°7YÖRRNà_U IUvITIQ0G TäHT€˜ýITvIQsH"Tn ¶ýIU|ITsGÐTäHÛTŒÛýITHŽVË þIUsIT 8ÅH¥VË %þIUsIT ðìGÚWäHçWŒLþIT‘˜G?XäHMX²wþITsIQ~GôXäHþXâ ›þIT0GYäG*YäH9Y ÎþITsèG•YäG¡YäH°Y ÿITsÐGÐYäHÞY²,ÿITsIQ~GZ“GFZäHTZ²dÿITsIQ~G `wqÙ9a`~œCTea/km;R3RTstra8a§RRTlenaB˜&SSWîbQ¡ŸS›SrCWAf €×SÕSG§äH¸¬ 4IT}IQvIR|GĹ q&)\AœßTe\/kmþSúSTstr\8a?T7TTlen\B˜¦TžTWî]Q¡UUG6äsQÅ IQóTIRóQIX‚q°*WÐ>œzTeW/km0U,UTstrW8aqUiUTlenWB˜ØUÐUWîXQ¡9V7VGöäsÅ IQóTIRóQIX0qsHO1œîTpO* jbV^VTmsgO3a¡V›VNÁ\ IU èîIT ˆìIXóTgèUF jœÿTpF5 jñVíVTaF>a0W*WWDGj‚W|WH#Y`IUvG4äHDä ITvIQ|IR0GNäHdä ÆIT ÷ëIQ4IR0HoÒ ÞITvNƒß IU üëITJgM5'2 Sfœ“Tp5' jÓWËWTv50G:X2Xhobj7 '2‘PGNSäHfS…IUsITvIQwG†Swd<7‘U2åes‘åelen‘/°Du –ëEx—åfDœTœ°„1åkàX¶"mÝ(¶q2lsv¶'2fnrc¹¼1tõY£'2?lsv£'2tŠ5«1]mÝ( q2uöG~a‡m~gm®~äv“à=œ Q¥X™XQ°ÚXÖXY½YYYÊ¢YšYXà,YÖZþYNÍU IUsITvIQ0vøÙP:)œäQÚ-Z#ZQÚ¬Z¢ZwÚY&Ú"[[Y2Ú\[X[Z>Ú‘°YJÚ˜[’[j"À:À: r§Q3ã[á[[VÚÀ/âY[Ú \\G;äN;sIT;H€:YúIU|G’:äH²:< 6IT~IQ|IR}IX IY0GÑ:äx;€\IQóQG(;äH3;ŒIT}HB;Y™IU|GM;äHm;< ÖIT~IQ|IRIX$IY}Gy;wyÞ5Þ5I`yc/c/J®y§J§JJ/ y))J­y”Q”QJè y·Q·QJ„ y½C½CJz yßSßSJbyYYJ y;;Ky99J¢ yÅÅJïyáRáRJyð$ð$JQy&8&8J y¶.¶.JB yééF  yððF«yß#ß#F¦y©©F§yF¨yÊÊF£yF¤y77F²yRRFuyVVF¡y**J¡ y…&…&Jè yâLâLJ¦y0G0GJ~ y/S/SJ› zí í {JÎyWJWJJÑ{¯9¯9Jôyz=z=Jñ y , ,J ym=m=Jby_=_=J]y22JÿyR R F„y ' 'Fˆy  F‡y, , FŽy Fy\ \ F‰y'B'BJd y  Fy½ ½ F˜yŸŸF‚yº7º7JynnFy??JF yú9ú9J yù ù F–{¡9¡9J¶y¹T¹TJçyeZeZJÛ{‹C‹CJÙ{CCJÔy[Y[YJ“ykFkFJh yfRfRJñyT T F—yœBœBJySDSDJÓyç?ç?J¬yEEJÌy % %Jy'7'7Jôyl?l?Jn | ž tag:!perl:}öGìGM|žglob:|žcode:| žscalar:y< < J` y#V#VJÏ yç2ç2J$ yŽFŽFJÍyBBJ y    F•{ÿXÿXJÁy_ _ F…{mmLuyÖÖFÃ{zzL°yÁ+Á+J yK3K3Jâyó'ó'Jóy€7€7Jýy`@`@Jèy@@J y55JúyÏ Ï Fƒy|8|8J y—(—(JÊ y:9:9KP{|N|NK‰ }|NrNMyšEšEJâyz2z2J{"'"'KŒ y¹¹FÐyFÈyß6ß6J{yïJïJJÄ y*+*+J”{OOJŸ{SUSUJFy´P´PJ( yFt{Q Q E#%{p p E y{W{WJŒ {¨ ¨ E"yè.è.JÞ{ù)ù)% yccJâ y77FÅ yÞÞF~% : ; 9 I$ > $ >  I&I7I &  : ; 9  : ; 9 I8 : ; 9 <I!I/ 4: ; 9 I?<!I : ; 9 I8 > I: ; 9 (  : ; 9  : ; 9 I : ; 9 I : ;9 I8  : ;9 I8 'II' : ;9  : ;9 I! : ;9 I" : ; 9 #.?: ;9 'I@—B$: ;9 I·B%4: ;9 I·B& : ;9 ' U(4: ;9 I·B)‰‚1*Š‚‘B+‰‚1,.?: ; 9 'I@—B-: ; 9 I·B.4: ; 9 I·B/ : ; 9 0 : ; 9 1 : ; 9 2 : ;9 3 44: ; 9 I·B54: ;9 I61R¸BX YW 71·B81R¸BUX YW 9‰‚1:.?: ; 9 'I 4;: ; 9 I<.?<n: ;9 =.?<n: ; >.?<n: ; 9 % $ > : ; 9 I 7I&I$ >  I  : ; 9  : ; 9 I8 : ; 9 < I!I/ 4: ; 9 I?<!&I> I: ; 9 ( : ;9 I : ;9  : ;9 I8 'I> I: ;9 4: ; 9 I?4: ; 9 I.?: ;9 'I@—B: ;9 I·B : ;9 I·B!4: ;9 I"4: ;9 I# U$4: ;9 I·B%1R¸B UX YW &1·B'‰‚1(Š‚‘B)1R¸B X YW *‰‚1+‰‚1,.?: ;9 '@—B-4: ;9 I·B.‰‚•B1/‰‚•B10 1 24: ;9 I 3: ;9 I4‰‚•B15 : ;9 6‰‚7‰‚8.?: ; 9 '@—B9: ; 9 I:: ; 9 I;: ; 9 I·B<: ; 9 I·B=.?: ; 9 'I@—B>4: ; 9 I·B?4: ; 9 I·B@4: ; 9 I A.?: ; 9 'I 4B: ; 9 IC: ; 9 ID.?<n: ; E.?<n: ;9 F.?<n: ; 9 G.?<n% $ > : ; 9 I$ > &I I7I  : ; 9  : ; 9 I8 : ; 9 < I!I/ 4: ; 9 I?<!I : ; 9 I8 > I: ; 9 (  : ; 9  : ; 9 I : ; 9 I : ;9 I8  : ;9 I8 'II' : ;9  : ;9 I : ;9 I! : ; 9 "!I/#4: ;9 I$4: ;9 I?%.?: ;9 ' &: ;9 I': ;9 I(4: ;9 I).?: ;9 'I@—B*: ;9 I·B+4: ;9 I·B,4: ;9 I·B- : ;9 . : ;9 / U0 1‰‚12Š‚‘B3 U41R¸BX YW 51·B64: ; 9 I·B7‰‚181R¸BX YW 91R¸BUX YW : ;41·B<1R¸BUX YW =Š‚1‘B>‰‚1?.: ;9 ' @4: ;9 IA.: ;9 '@—BB: ;9 I·BC1D‰‚•B1E.?: ; 9 'I 4F: ; 9 IG.1@—BH‰‚•B1I41J.?<n: ; K.?<n: ; 9 L.?<n: ;9 M6N.?<n% : ; 9 I$ > $ >  I&I7I  : ; 9  : ; 9 I8 : ; 9 < I!I/ 4: ; 9 I?<!I : ; 9 I8 > I: ; 9 (  : ; 9  : ; 9 I : ; 9 I : ;9 I8  : ;9 I8 'II' : ;9  : ;9 I : ;9 I!.?: ; 9 'I@—B": ; 9 I#: ; 9 I·B$4: ; 9 I·B%1R¸B UX Y W &1·B'‰‚1(Š‚‘B)‰‚1*.?: ; 9 '@—B+: ; 9 I·B,‰‚1-‰‚•B1.4: ; 9 I/‰‚04: ; 9 I1 U2‰‚3.?: ; 9 'I 44: ; 9 I5.?<n: ; 667.?<n: ;9 8.?<n: ; 9 9.?<n% : ; 9 I$ > $ >  I&I7I  : ; 9  : ; 9 I8 : ; 9 < I!I/ 4: ; 9 I?<! : ; 9 I8 > I: ; 9 (  : ; 9  : ; 9 I : ; 9 I.?: ; 9 'I@—B: ; 9 I·B4: ; 9 I·B : ;9  : ;9  U4: ;9 I·B 4: ; 9 I·B 1R¸BUX Y W !1·B"‰‚1#Š‚‘B$‰‚1%‰‚•B1&‰‚•B1' U(: ; 9 I·B) : ; 9 * : ; 9 + : ; 9 ,.?: ; 9 '@—B-‰‚1..?: ; 9 'I 4/: ; 9 I0.?<n: ; 162.?<n: ;9 3.?<n: ; 9 % : ; 9 I$ > $ >  I&I 7I &  : ; 9  : ; 9 I8 : ; 9 <I!I/ 4: ; 9 I?<! : ; 9 I8 > I: ; 9 (  : ; 9  : ; 9 I : ; 9 I.?: ;9 '@—B: ;9 I·B‰‚1.?: ;9 'I@—B: ;9 I4: ;9 I·B: ;9 I·B‰‚1 Š‚‘B!.?: ; 9 'I@—B": ; 9 I#.?: ; 9 '@—B$: ; 9 I·B%4: ; 9 I·B&4: ; 9 I·B': ; 9 I·B(‰‚1)1R¸B UX Y W *1+1·B,1R¸B UX Y W -‰‚•B1..?: ; 9 I@—B/.?: ; 9 'I 40: ; 9 I1.?<n: ;9 2.?<n: ; % : ; 9 I$ >  7I$ >  I&I  : ; 9  : ; 9 I8 : ; 9 < I!I/ 4: ; 9 I?<!&> I: ; 9 (( I> I: ; 9  : ; 9 I8  : ; 9  : ; 9 I : ; 9 I : ;9 I8  : ;9 I8 'II '! : ;9 " : ;9 I# : ;9 I$.?: ;9 'I@—B%: ;9 I·B&4: ;9 I·B'‰‚1(.?: ;9 '@—B)1R¸B UX YW *1+‰‚•B1,Š‚‘B-‰‚1.‰‚1/: ;9 I·B04: ;9 I·B1‰‚2‰‚3: ;9 I41R¸B X YW 51·B6.?: ;9 ' 7: ;9 I8‰‚•B19: ;9 I:.?: ; 9 '@—B;: ; 9 I·B<.?: ; 9 'I@—B=: ; 9 I·B>4: ; 9 I·B?.?: ; 9 I@—B@: ; 9 IA: ; 9 IB1R¸B UX Y W C1R¸B X Y W D1R¸B UX Y W E.?: ; 9 'I 4F: ; 9 IG.?: ;9 'I 4H: ;9 II.1@—BJ.?<n: ; 9 K.?<n: ;9 L.?<n: ; % : ; 9 I$ >  $ >  I&I : ; 9  : ; 9 I8 : ; 9 < I !I/ 4: ; 9 I?<!I : ; 9 I8 > I: ; 9 ( 4: ; 9 I.: ;9 I@—B: ;9 I: ;9 I·B4: ;9 I·B.?: ;9 @—B: ;9 I·B4: ;9 I·B‰‚Š‚‘B‰‚1 : ;9 I!.?: ;9 I@–B"‰‚1#‰‚1$.?: ;9 I@—B%.: ;9 &: ;9 I'4: ;9 I(4: ;9 I) U*Š‚1‘B+‰‚,.?: ; 9 I@—B-: ; 9 I·B.: ; 9 I·B/4: ; 9 I·B0.?: ; 9 @—B14: ; 9 I·B2‰‚•B131R¸B UX Y W 41·B5 U641·B7.: ; 9 I 8: ; 9 I94: ; 9 I:4: ; 9 I;.1@—B<1=1R¸B UX YW >.?<n: ;9 % : ; 9 I$ > $ >  I&I7I &  : ; 9  : ; 9 I8 : ; 9 <I!I/ 4: ; 9 I?<!> I: ; 9 (( I : ; 9 I8 > I: ; 9  : ; 9  : ; 9 I : ; 9 I : ;9 I8  : ;9 I8 'II '! : ;9 " : ;9 I# : ;9 I$ : ; 9 %4: ; 9 I?&.?: ;9 '@': ;9 I·B(‰‚•B)Š‚‘B*.?: ;9 I@—B+.?: ;9 'I@—B,: ;9 I-‰‚•B1..?: ;9 '@—B/: ;9 I·B0 : ;9 1 : ;9 2 U34: ;9 I·B44: ;9 I 5‰‚16‰‚17.?: ;9 'I 8: ;9 I94: ;9 I: : ;9 ; <4: ;9 I= >.?: ; 9 'I@—B?: ; 9 I·B@‰‚•B1A‰‚•B1B.?: ; 9 'I 4C: ; 9 ID.1@—BE1·BF41 G1R¸BUX YW H41·BI 1J 1K 1UL‰‚1M 1N41O1R¸BX YW P 1UQ R.?<n: ;9 S.?<n: ; 9 T.?<n: ; % $ > &I: ; 9 I$ >   I7I  : ; 9  : ; 9 I8 I !I/  : ; 9  : ; 9  : ; 9 I< : ; 9  : ; 9 I'I4: ;9 I?<&4: ; 9 I?< : ;9 I8  : ;9  : ; 9 : ; 9 I: ;9 I: ;9 I : ; 9  : ; 9 I 8  : ;9 ! : ;9 I 8 " : ;9 # : ; 9 I8 $ : ; 9 I8% : ; 9 I8& : ;9 I8' : ;9 I8( : ;9 ) : ;9 I*5I+!,: ; 9 -> I: ; 9 .( / : ;9 0 : ;9 1'I2 : ;9 3 : ;9 I8 4 : ;9 I5!I/6 : ;9 7 : ; 9 I 88> I: ;9 94: ; 9 I:I;<> I: ; 9 =4: ; 9 I?>4: ; 9 I?.?: ;9 '@—B@: ;9 I·BA: ;9 I·BB.?: ;9 'I<C4: ;9 I·BD4: ;9 IE4: ;9 IF4: ;9 IG‰‚1H‰‚1IŠ‚‘BJ‰‚•B1K.: ;9 '@—BL4: ;9 I·BM UN‰‚1O P1R¸BUX YW Q1·BR.: ; 9 '@—BS: ; 9 I·BT: ; 9 I·BU.?: ; 9 'I<V4: ; 9 I·BW4: ; 9 I·BX UY41·BZ41[ 1U\ 1]1R¸BX YW ^1R¸BUX Y W _.?: ;9 'I@—B`4: ;9 Ia b 1Uc‰‚d.: ;9 'I e: ;9 If g.?: ; 9 'I@—Bh4: ; 9 IiŠ‚1‘Bj1R¸BX Y W k.: ; 9 ' l: ; 9 Im: ; 9 In4: ; 9 Io.: ; 9 'I@—Bp‰‚q.?: ; 9 '@—Br s‰‚•B1t.: ; 9 'I u.?: ; 9 'I 4v.1@—Bw1x‰‚•B1y.?<n: ;9 z.?<n{.?<n: ; 9 |6}.?<n: ; FGû /usr/include/bits/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/usr/include/bits/typesbytecode.restring_fortified.hstddef.htypes.hstdint.hstruct_FILE.hFILE.hstdio.hsys_errlist.hsyck_st.hsyck.hgram.ystdlib.hstring.h €míK 0d g;[UM [9=  çJ ˜{tè<g=XX N ƒÿzž‚ ¬Ü‚‚K= Z“{‚f‚ .J. ØXƒ{K åJ JK gƒûzžJÖyÖfJt‰}äK>uW=kf L ŸÙºÄ}¬ ƒ I=5sJ  tpJŸ ƒ(t _ ƒ; =  L wJgtJŸ¬õ}< Jƒ‚ „ˆJƒqÈÚ}J¬ƒ ¡KÈo<lJ J”’"4J"X4ºŒ<; Jƒ‚kt œ< #È JJJK ؃ožs‚ ÝÈÈ‚‚Pt Ë8xJž.9 ?U Y; KƒuÖžJt Zä(JK "¨ JKXÖÚ~J J—3X ƒ ƒ<”2˜ K W [òJK "æ JKmÖ÷}J /JJHX'< ”ž.? ? Ö ‡ä <uJÖ.8 ?U Y; KYJ.ž6 C.©cJ û~<JK vûK Iu ñ}JK "Ç JKmÖž~J /JJHX'< ”ž.È  ÄrJ ž.@  ­Jž ®h:hYÖ A‚oJ *ƒý{J‚J<Ÿ= °KÞ{ æ~º*EÖ.8 † Õ \9=¢žg= ”$ ƒØ{ÈýJƒ|J¬ýfƒ|< X Y¢<ffX Ó| JJJKäÙ‚Iƒ<Ÿ= Ìt JƒкIƒ<Ÿ= >ÖJKyfJŠ|º Œ™ç~J—J<Ÿì~KWKº £X¿t‚¬³÷{JžžJtÈ1J K0: Y9J KJ K zX KY .ŒžJt¬ çJK Ÿ JJKJ‚Á¬{‚Û f!ýƒ HäƒJº¿ y K Ÿ ƒž ¯{ Kºòòòê<ÖfX à~žJtäoX³‚‚Xu¬‚‚X ¬XXC/ž šžJtºÀ–{‚ž ¬g;X%t  ÑX›{ž J ¬Öºõ~_y<C]‹A fY=>„ÆJX*B*zXX„(:K*+==»}X ÖÃȪ.ž'mX¼ƒLWK(XÜ<¯È<€~ÈžJt ×~‚XtX‚XtX¯ò}"<º’*žÁX*„:Y'%Ö*K%;K* ¦~Ö(ÚJK ¥~+Û<=¢~ NÝ8J £~J<ݨ~ à<  ~XÖXÈêÖJtnÖJtJÈJt ž¬žzXž¬žXÂ~ƒLWK(X‚é}Sž&È º~$ÆJK ¹~'Ç<=¶~ =É3< ·~X<ɼ~Ástdlib.hstring.h €}“KK<X†òKMÅ#G?9MtZ  š Û& A I#F+/#;1=;< u=GJ-=G;3KG;8J<< ƒ?IJ=I;:‚<< ƒJJ K z¦ l n=X  w.&<#t+/#;K;=W ƒX K Y\=X  qf&<#t+=#;1K;J ƒ=LGV-=G;KG;8J<< ƒ É =X ft :!ÈKž@Y dL K   !e JXN'I Jf ÉJ0º1JJX Y J Ÿ  ‘#‚ J ‘  g< ½GJ=; K<JJ=s K u w   JX g< ‚JJ uJ%X g<ƒ;K;=- = J fi ?K  t< JX gJ <J g AAEK 1òN  @J Zó­… J Zuˆ J Zu„ °K!¬ JujK!¬ JujK fZ‘ .¬JuöK Êr>ft<3ˆ"u"t!e[tnt<nJ.q<R$‚"¬K"tå"t!u < u ‘'K ‘ f Ê € f]t`uX yX ŸŽ g t u tX K tØuXÿ~‚K "ž gX=tv„ƒžQ× qžˆƒƒƒƒƒƒƒƒƒtt¬Y;uY:­ ætKK†KK†N @Yƒò"äº I¬ ZX=X @…K !I=]=KK  z¬Ö K°~‚ÖNò° Z5 J X@<JgKKX sf<MÈK 1J˜ Kf=<fß} ¬ŸKX<. oXŸ!J*Jt= »ê} –f;ë}x  gJ. KZÉ … U? /fÇ%‚”ƒ•‚X5·‚ Åt= gv St7I … J • Ö „ Š}Xö  =‡} X ú ¿( ž>f JY„! Rò «}äÕÖ =Í} ´§} žº Ø,< ‚,f ÈY‚C!È1‘=    X ù|‡ä =ö| ºX ‰( ž>f JY„fež)ÐKŽ¡MX<<X<Ju … 9? 2<. JX‡‘. [t<º† ƒã =Y º‡J5t9JJ ‘‘<žfgAWˆf­= ÝJ=* ‚8t JY e¬7 J?öR<ÈKvYe=.Xu .R < yt®: >*./X Y .J-X3<7<'X .K2 <× >  ,X ÀŒ(KŒ_yQ/fKIYä z‚¬.ÉIæ\  ž ƒ>f “@f-g¬nJKÂf-dJ"8 už2 J2Y3 G Ö ž¢¢¢£>ž &IA!XäJ.of Ÿ@B<Ÿ Ö;=; K"f/ ­J Ê%J ‘nJn<6  af<yÈ gJ<  ¬< nX< È< Ì<È.&pf ¢<®Ÿ$I?Ÿ ô<DXžzXêòKŽ  +­KWgwä<< [ X$  : f 2 T .­gk¬<kX<XX ..$lÈ ; ÈåMJM‚‚»DJD‚< òK2pÙTÍ7NY æº;‚  o ƒ tJ J É  o‚Iƒu ..Ir¬%»‚† ·ººK[S 4z<zz< JrtXOtY  ´È2<< $J P2‚Iƒu<eY¬<< º È9ž1<‘   P Z­ ?t%f Éf‚<< ·<< ¹<< ½<< ¼<< ·<< ·<< ¹<< ¹<< º(K[S 4z<zz< JrtXOtY  ´È2<< $J P2‚Iƒu<eY¬<< º È9ž1<‘   P Z­ ?t%f Éf‚<< ·<< ¹<< ½<< ¼<< ·<< ·<< ¹<< ¹<< º(‘pº@XY  ¡=;Y ‚  ‚ tX =  ‘×[ † t¸+º ff~ Yh >X ,kžæäöpKXY  ¯ƒX Y <¬ YJg< 6 fX = tL×J9‚FJç[f X f €/Xº.‚q Yh H>J dvž­ƒrÈ täæü|äK<¼Y;=\8YtMÝ å =[d ‰ 1FÈ K<:¬ hP<;f »&XJ4+ÖXbXP—*<—ƒ X¥7“È‚Y\ÿ— × W=[dM7e ‚N ×< .X9 fJ 'ž ! X ’ H„ v . d RžºÏ Ÿ&W-K X ×H‚  3f !_”X . §ž,ž  -žŸ< È É&Xt. /X g v !EÖf%Kž" et 66-X Z- \sòP—È®Èè<KÖ=Y;=_yJC3!Cff \’ ... a=” ...;t<<)º Y=tKÖ=Y;=_yJC3!Cff \’ ... a=” ...;t<<)º Y=tK=X=< غ<K=WiäD>d>X<.I ^ä¢<#– ³! …< (  òƒ > ö<ƒ %! …#¬  žŸ‚2L°.ž­)!.Ö9ƒtP·äJ<ƒg<"hså-«=,W"È5"'¼)Y"9>"J9X=4<A<3X")<K­‚¬E`‘Y."hgº-«K,W":<KJ=Y;=Y;= J=‰ .\ž [=¹J< q. v=z‚q<º q. =¹L%º‘t ‰yJó ‘ •  ä  ‚ J •  LLJ OJK Y;<W KýuX   ÷ X ‰vJX ø ãu ¬   J  -J3 YJ \º K'; g'- < YrX< òžÖL^ºùû /usr/include/bits/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/usr/include/bits/typesgram.cstdio2.hgram.ystddef.htypes.hstdint.hstruct_FILE.hFILE.hstdio.hsys_errlist.hsyck_st.hsyck.h ¥ÁŸ{Þ ¢{.ÞX ¢{XXÞ ¢{XtÞK ¡{tà‚  {‚äá{á Ÿ{<'àÖ  {JX'àZœ{ ãJ {JãX  {JX  ¦é tž  tZ‡z Xttÿ úy …‚ ûy Èýz Xtÿt úy …‚ ûy X ¦ðKre<yQYs=XMƒ .<Ðò3tMt3tMJæ ¬t¼Èày  rL JX“<&fJ ʲ¬ r‚ @»JJ uJu;JJJ<tX  usY G[‚ tf ÿXKòfÖòy‚ x t.XÞ »¤ÝžÖ=t‚)È<º¼tY`¢º ®y yf0H’ Oƒ z<BŠžÃò•  öf Ùr©  ­  Z =3t).  Ë‚J‚Ûx  Kj ­ {¬×„ ž[sJ Jv. < <.Ùt<X³y‚å$®” tä    wfQ(tJ<(<. J/¯ tõzXJ£tÃr»  Årt‚» tÃr È» Ûx  IK‚ärº­‚“J‚ `¬  žM±ztžŸ‚xý ƒxt‚üz<‚‚3©ä.)º‘ ¬ äÖ œºùr …  ûrtº … Öùr Ȭöˆxö Šxt‚X×§x tX.X× tò(üw ttX‚Jüw tȬ¯  <¿zºÿxÿ yt‚‚Å­|ƒ{ ûÖ …{ÛXó#É‘'ƒ$®\<tž+J&t X ù|(ìX&ØŽX!höX&ØÚ~X&ôùX#,JJ–’“X&ØÂ~X<tž+JÞtuXsK¤!J.%$fÄX­$®aXÉ$®XÈ <oKÊ‚ÿrÿ  stºÿ  ÿr È.Å ¹rÅ  »rt‚X ¾£t YpžÛtt86Ý}¬XÙ!tJXòˆ ›/û /usr/include/bits/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/usr/include/bits/typeshandler.cstring_fortified.hstddef.htypes.hstdint.hstruct_FILE.hFILE.hstdio.hsys_errlist.hsyck_st.hsyck.hstring.hstdlib.h p´ K …< Z<>yX ›‚XZX”äóV’$.fžf< Kt; ZX X J ‚\ ä L X h[ n¬hYe<= ž žX Àµ õqó Y\  L X h[YJ  vfX< x ?qó„ ’ ÈJ J• v‚º šM  ^ºJmt\ÈL‘K ( ºsº&$ž\K ‘I = ZX‚ Z K .Hƒ;K -X зKK;!;g[ f<<=] žŠx<‚"c XX \KX WÈ)º=S,R -Q `xf.W X' J.öK¹0û /usr/include/bits/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/usr/include/bits/typesimplicit.restring_fortified.hstddef.htypes.hstdint.hstruct_FILE.hFILE.hstdio.hsys_errlist.hsyck.hstdlib.hstring.h  ¸-K ‚ °v.x  ˜ ,ifJP És iÈôƒ =° ƒÇvò Î~J²t n žIP £~  Vtƒƒ uì K ô  ¼uJÄ t uÍK \Ž  Ëtµ tÏtž LX» Ÿ é~ ZÈK òò YºÁK etÜ™ J ¡tà X žtX3 ŸÑ  ŸtJá t ús¬+K U+t y‚{ ’ã J êst(K óò Uº>K ô¸  ±tJÏ t ˆtÓ Ÿð  ãtJ t ©t¬‘ƒ ¨ät O‚œIK Ù~乃 Ì! ŸÄžIyJ Ž~t `fÞK ôà  ‰uJ÷ t Út¶ ô~ WäK n¬twJ X Û  ûsJ… t ûstÈt·HK J ý}ž8tj6òðXK ·vÉ tR v ^."t g‹ £TJ Õt¬ XõuX8‚K‚ È~.¸t ¢~¬òÌ‚K=# ×}Jtž<ÙfK ‰~ ¾‚/<çXJg<o<<‚ ›v³  ·tJÉ tÈ ét‚¾  Ÿ ïtJ‘ t¬ Út‚¯  åsJ› t çsÈö  ‡tJù t‹tf ð~XK‚ïJHK Ù|ºò² ºHN†fJK ©u× t Äu‚ñ  tJó t‘tf p Š  tJÿ t ‚ut)K Õ~ž«t h0¦~žÿt ã}ò “‚÷J/<J ó~X±ƒ¬y%K=È ZºòKK Ñ| ¯tK= Ï|žòö XHJ ìuXǬĺK ’}Xît ’K ‹}õt¹RJ  qK> î|Jæ ä dK< ”äJ ¸ž ŸYžJ¯xX< ™È©tf  µ  Á~J¿tÅ~f ÷ Ðg<J ìXK ¶užÊ t ¶tïsž– ƒÅy‚ Ÿ|Ját  º  ò Ÿ  ò  òK Ñ{ ¯t9J ¥{Ût    ò Ÿ  ò  ò Ÿ  ò  òƒ º‚K= È Žz ´È+ ¨~JØt¬~f È  žIP “u f< ÆXJK ÂȃJK- ò‚ítž Ç  ¯uJÑ t³u. ¥ JKš{ÖK= N   ò ƒzJýt  ºK ìy”t ôy‚Œt ’  ò IK´~  ’zK<JX  ÖÝÈ ­~‚â Êyž¶t ù}<  † Ÿ  ò  ò Ÿ  ò  òJK<<8HJ ¨}.º² Äxf¿JÊJ €w<¶t  º  òK ¢xÞt ¬xÔt    ò IK È Ÿ ìwJ”t  º  ò Ÿ  ò  òJK.HN<l<%X „wƒ fqK–v(K fwt":> Xut Iu [AJJJ ƒ ‚ JXX3‚5: j)X¬L . Œ5XN .Ù.K‘0ž.lt ¢z1PX1­; =1X­ =Y Y >É Y >  ­ ; KX‚' Lf mfòK‚@­ X Ós<ª J É ¬  º   ºK ‘  º  ºæhž ¾  b à ÖIK xäÓK í~$Ú‡rù ;‡rJ<  bf Ü ¢IK väèKKï{<ä~$äJ<$KJZ´<HJÌXœ<ÑoJFè RJ-<9=O ‚/G <9‚ G<88F 9< GX%X÷žÇ‚  òë  ò  ò  òKJúmJQÚ EJ*:< F<7< =B X <M&<Mf&< Z&: >X0 '¬þ¯<ÊtÝ~tHKÈÓGKªòÖ  9GK< ›|þƒ öJK öJ/< JÉt·t<ÿ|Ö ›òJK öJK öJK öJK öJK öJK öJKàò‚i "f  ^fÅXHJÊXKĬ  òÚ  ò  ò  òK*›~XÉtî~tKKÝ~æstring.h PÐK  1XY = uƒƒ„ ºK $¢U e= ƒ ƒY WK Z,L YL öK $¢U e= ƒ ƒ ZVL YL °K $£ T = ƒh YL  K 1+ çY J I= ±XÏfK JK J=«Ò ®JÓJ„J ..oK ­Y Iƒ  X  ÒKI= ZXX#º J ƒJ¼ ™çfY JK J=“ê –JëJƒ J.nK ‘;  =X‘= -X ðÒKwJK ­   << L  €  << J . )&Y=&I Œ PØ?K  ÍKJ Z = Y(< L  Z t Z  H<< 8 =D fXJ;>t k‚ X>X. d< X‚eZžKè …~%7BzJ û‚ uƒu…‡ƒ†¯­  mfÖ KLÍfKK‚K „t\=W==Ytf EXX K tY ó òN  @t Zóׯ t Zó×®  ÈKK†K*t=2K+t=2KK†KK†K=2K!¬ JujK fZ‘ .¬Ju€~òK ‘ f Ê € f]t_uX zX ŸŽ g t u tX®uX*fK "ç U=§Ú Xw<©u y­­­„wŠƒƒYJ¹äK Êr>ft<3ˆ"u"t!e[tnt<nJ.q<R$‚"¬K"tåu < vž ‘ /K":>  tZX%¬ Ö~äN  @t Zu²ƒƒò"äº H¬ ZX‚ƒ=X pß-Kž>Yƒužu=˜ .œtL <$KZYƒuŸ=K9uK˜f..€tLfJ@K‘; =X‘= -X €àÁK  NJ[t1 Jf .X.n<.Ö v<†} fX ù ƒ Ÿ K K K KMJ .\K³u zž K K KLu”K”< G1 ` Yt. =­‚  ut Yt. = fK¾< ˜ Yt =­‚  o‚ ˆ Yt = òK ?Yƒƒ = èKö| ˆfI ù|<ˆ. ø|JtXX9 °âŽK92K9 O® <K¢ gW YÕ"<< Y  fxtJ .wžIJŠ IY vX ø éû /usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/bits/usr/include/bits/types/usr/includesyck_st.cstddef.htypes.hstruct_FILE.hFILE.hstdio.hsys_errlist.hsyck_st.hstdlib.h PãÑK  5.K  < JH“ eK - Jf\ÍKƒOKƒ~º Ú=§~JŽXÈ<-”ftÉ"!K»/ ,K.tK= "¸J XY=K<..¤~  {qžfK MhÈVXÈ<-\ftž$ X$\ ;=Iu$XL‚<.Qf {U¬0K  påK ²K /X °åK ²K /X ðåKx ¬Ÿ<K‘ KY%Æ&<|ƒ=;X `æK2*è<<=-/J‚XJž ºÖJ ºJ\ WXJM ...wX z 4 ...fK\*$<<=e/.‚ÈJž ºÖJ ºJ]K HZ .J.‚yJºžfJJ‚J -Xf.J.ytäòK1+½9?<=;=< Ÿžt‚Jt<J  ...-ä¬ fK ç>XY”rtKWM•/ƒƒ{ #K ;»#<K= vJYŸ JXYYƒ  XfJoft cJ. Xo<T‚Y tK 3)é<<=f ä>• ‚ X/J=YXJK K;KY p X ..t¬‚X¹ JJ tX. ..žuJJKY X"JKK ;KY ] ..ftX ƒ!¬K2*$<<= f„ê JXJX« J X r . ...w‚Y JK X"JK KWK ...qX r .q ‚...K§– <I= ÈJYóX˜J\LK;KYoJmJ%V&JfX .J.mt;K–òaòKM ƒ>Y=X Ì!Oû /usr/include/bits/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/usr/include/bits/typestoken.restring_fortified.hstddef.htypes.hstdint.hstruct_FILE.hFILE.hstdio.hsys_errlist.hsyck_st.hsyck.hgram.ystdlib.hstring.hctype.h  í¾ …ß J¡stÝ Jg= Ú ƒž cJ JJJK‚ LJƒf×ôrXƒ  Ð . yJK ò  Jƒg>‚©stK$ .vfóóóóóóóó òK =W[ +\¯rXK X  ï¬yKuUZ=ktw‚* XJ(<Ýft ä~ ƒ; =  L w”Jì~t’Jgä û}J$‚¨vòKf‚JÈJf¨óƒ Ý{äÓJJKÛfÝz‚  J”ƒ'«òóUƒ Á{¬¬KJ<‚ Ò~J÷Á}J¥ž*Û~ž ¢ /gÈ ?” ìvJ’ J<ŸK ">K ­#¯vJÑ J¯vJ¬'‚f ò~éKJ<‚ •Jš­}Jƒ 7º€¾}Júž*†~ž ö g0 ãf=< ?Û ¥vJÙ J<ŸK $JJYß‚¾tòJf‚JÈJò ¼~öJ, sUfÄ}X æ× ©tt Ëÿ uJý J<Ÿ=ƒu2$I2K"IK–#fp<]# XpJA t.!ä$#ÆJ!X0X 0Tò §}°¤}Jºƒ -‚JJKÁ‚“zòJf‚JÈJ< “¦KK‚>J „zJƒf È}ä6K›ž  JƒŸ< ÍyJJKÖž JKKžƒ I‚JJK g JK g JJKmâ~‚ƒÏòŸÈ‚¬ Ð~ Ju< JY Wò=»K ‚zƒ‘>X [e<K K¬5 JKž  JƒŸ>‚YòJf‚JÈJJ L&Rx<RYt T,JJJK‚‹ Kº ¢{‚ÁròKf‚JÈJØ Ÿ ‚õësYäfJJ‚žfºtJºÖ<‚È Ÿ JJJK }ÿ JKø~‚t ÑqÊ JKeÈ…{‚tò¬²žÈ¨t›‚X‚<‚ò ÈJƒŸö} ƒ µ| JJKmž‚ƒô/Uƒ¬ þ ÂJK ¾t> JKöð ‘ ƒf Ð~Ý ‚KXüy  ÈÌ Õw«XÕwJ  ÖJ+fXÍ{ò¥ Û{<¥‚JžßX ˆÆJJY‚xt)fX©{.Ô ¬{<‚ÔX?žÔX»*€wžýƒÛ~º ƒ‚ÁwJYt‚‚Èž‚¬ñ ¬Øt‚ò\!2L!:Y/-Ö!K20J3Y “z<0ì<!=z Vï@J ‘zJ<!ï–z  ð< zX!èXX Ž~í JKtJº‚zÈ.¥ä ¯fÈ?t„HZh‚Ö? 4º @Ig !„P!×É'*eX4Iº‡K+_#Ö*JY !L1);!=1'.<]<)J X%…0Jž¬=‚ $". „‚Y&ƒäfJJ‚žf<.JºÖ<¬¬{t;"ô)å¬t ž  ƒk ÈJ ;XJƒŸ¾ JKX¬tÙ  JJK_Ês‚  J0 žä0u&JIJB¬¿ XóUƒ‚áq$=WY X.,º/Y §z<,Ø<=¤z EÛ ­z<xX<ÛªzÓXX <tÈ‚ž èJƒŸ KWž ƒX ’*•tJë ”tJ*Y%s=ÉWYƒ8‚ ³8K©¬  JƒŸtXês‚CJ„hí<.*É J!+JJ XØ<‚=‚!zX3);!K3).f.ttäXìtÖsX*(tžÊ*Æv!¼XfBX<*!ZfÖò.‚‚*(tžMtfX›‚XâtÖX ˆJƒŸK ® ƒ X—ufÖXÚÈ*Ä}J!X*!KäfJJ‚žf<.JºX~‚CJ„h÷J!Ö‚XJX§tÖ X‚XÅÈL¿uIȉÝtÖ*]yX! ‚B‚<*!htäXÈ.XX;tfX¸}JX!¸¬t Ò JƒŸK“ ƒX ßwž< B.&hhÖ­;J>JY&ƒäfX.¬f¬ .Jºä<¬ÈX^¬…È–Èåvt"¬, |X‚f¬X<JJ+Xt‚‚¬XÚtžäA ÅKA1A9[Xñ/;°¶@XKJ8ZK8K8¹=¬žXG ÐKG.„.X»= -XG KG.„.Xå= -XG `KGŸu{Xà ò.X  . Y+XX+.X>X .¨X$K w  X Û <  Y º‚ t¬ \ <  X IY.  x‚Xt¬¬Ö#XŠzJ4  x¬ò É  1-3¬5¬¬"ä¶}ò “òM -K +M -w <KfJuJ .˜ž Ksó .XX“X# æ š.J ‚< æXJJ<‘¡f x./5.(7 t/Kzž<„| ä¢. Ksó .XXcX#  j.J ‚< XJJ<‘¡f   YXX.) Yu« ­X Nº/X™{YK å<w)¬  Xt òX ˆÈäæ Ö{ ‚Åt).,ò/'kOttÐ{ ! -=X„ÈȬ2Áòf@JXf()à<À P  ƒ  ò ƒXŽ{‘ž ÙÈ .ZteX<Xf.Öò2Ò÷)ßäf”æã2ò/ä2òÈ´{ ä­. AKz<óX2£ L1YKL­I‘ J!’"+H"L#N"F@#X­I=#X×#e=Y*w¬! t=ƒfºé7YqvK=<=ά&zJX= ƒY98<t‚KŽ µ~ät+0)#ºX/!X‚Ö@"#Z"H>#X­#IYJ‚*yt+!J fÈ!;$X!6ÈY*wò+!J¾#=#IY'IK,30fXÔx¬X¤È$f!Xö"›}º Ê":±™óu  J y GK' IK'Km ò?‚ J ] ‚£ƒ»ƒƒX = ~%  ”  ¢  6  JÓ~Ö >óy ž  óy  º"fƒéy f–t êyJ– -t»y ¬X ‚XÖžYY¬J'­‚u=/È­»ïòÖ~0Y<ò‘ <²( 0ƒy‚Y‘; 28 @ X Ö  ‚ “J ® K ƒG ¬J'YO(G»Ýy <‘íy ò‚ïy ò‚îy ò‚Žðy äÎ[KX¬JY ´~¬fˆŸò%¬u„==-ó<=&¬&zJ= uY9‚8<tÖÊ­¿ºu„@‚¬ 0J!æ"+:"L#N"8@#X­;=#X×#e=Y*w¬! t/ƒž ù~<,X ¬J ‚E0 H hE X¬J2KÕÊ}(æy t¦Øy Ö§YY ƒ‚ ‚taX ®¬ K 0 Y"«#J < X‚ _E X¬J,z¬(7(fG[ÖEpÚÖÚ#žX/!X‚È@"#L":>#X­#;Y<‚*yt+!J fº!;$X!|ÈY*wò+!X¾#/#;Y'IK,30‚fX%$‡Ñƒ$.%vJ¬XJ<  ºÚóøf ¬Y;‚JtXX­;KW>­;=X=¢=JK&¬J‚5?"<Â'óJÿw¬XÓº^$e­$;=eX× zt þXÖXu&Ö‚ ‚5'ºJò‚" ÂYY¬ºZXJ" Lº$f!X3 äÈX"X.X8OX XÖJXJ3wäòôYŸY‚ ßä yEó "º J.Z< s%Ó.’ ­ Õ/¬< ª~òu;JXò ) J‘ XwJ <X×ý}YK0ô)1JJ f Ö á}žº<. ÈX„X„X„X…X‚X†X„X…X‡X‚X‡X‡ä‚žƒ«‘Y¹=‚™Èu-JX .Jóu«=X ¬wJ <X"ã|×5ŽX.6JJž òÊ|Ö)K”g=¬JÈáJ=  Í <  ‘ ÈC—~%Z6 çX#‚›~6ÜXÉ=¬JȦ~tÇ*=¬JÈ×J=  Û <  ‘ ÈG$(< É ÖŸ~ƒHLKu‹XQK*Öºž¼H”’‚Y#¬ÉÈIKstf#<#TÈ*91¬  ¬sg‚*fXj*fXƒåJ tfY-J=W>Ÿv,>‚X®,>V½ =ç&X#<LMu Èä‰*›~< stË< J ‘ J ‘ ˜|ƒ ç<|J WKX/¯  = -tK X= ;ƒ <u¬ = Ÿ  Y<ò-Xå=‘<< OuYX`J|.J ÛÈxæ ­ Õ/ÖJ·|t ó<u;.X ) Jå\*>Xò"ó;="YY0Yý}YY0ô)1JJ ž [’å=X>YHZj.º2Ji­'#X‚žžžä(Ð|¬ò<K”‚ž‚áJ=  ÷ <  ‘ ÖN‹~Œ<u;t .J×u«KX°*>Xò&ó;=&YY0¬åã|šæ|JŸX5Ž.6JJžh’"å="X>Y"H"Zj2º6Ji­ XX„ Ý|XÈ ™¬#º<.X<‚9X*‚($XDJAX„×s=ó=X¯+KJZXƒåJ tfK-JKW>Ÿv,>JJô,>V?Èåæ­ . X„XXƒ"»="Y"s=tÉ-<Xåø|׆X!-=XJ¡º­=X× Jtw. JX×É}YYµ­  < .ˆå=X> X„ L X‚7J¬œ}‚Xž¢J)<¶*º˜ž3‚ Ÿ<â|JX‚ž×J=  £ <  ‘ ÖN™~ÖXfZÖXfÛXå=X> XX„ M XX„ ºž5‚ð ytXÈ ‚$ ~ƒJKuŒIfKzK*Öº.¼H”’u#!;YYKsXt5fX#¸*yÈj*@1  XXJ7º K  è}¬¬ºX X”É‚ž¦~‚àX XȾ}n¬fXgJòJ‘‡tK‘#f;¬­tzÖÈž·FJW‘ɹ=tS%XÈå=X>&X"äN%tfXJX­t‘X5žé < äÈéƒ~XºX XEºž J X&Xº. %X'X*Ö++º&J&Xtò†¬Xñò¬$ëòK$zÏ sK.ó$t ò oÈ‘ < mJ < = J½[[#tf+Xtº<X‚ = JJ = U@8X YJ> =<KX of õJ½J5hº1JLAX ‘  K o<ˆÈL 3S "w X˜f¿ <  <   º hó X>#HLNF@X׬"y ÈóvX  ]. u; =< =KƒY¬" Jºt t¼yXH¨fKHŸYÕ=., Õ­.% Õu' Õu' Õ».% Ôv+ Õu -YX$ Wut¬ ‚ . X ‘C ‚C . X*K*u*:*g**/X/¬<<l ÈòÈ *<*/*  *ž*=**v*V*L*Ÿ**=)*X)J¬ ‚)X,-‚)-‚0º,4X6X)7f,9;ä>ž?XZÖZYZò *ž*Y**œ*v*Y*Ê*X*¯*­**w*c*M*Y*Ÿ*„* *ää…J?<.G Nº X < XJXžXJ JX<C = C < XCJXCžXCJ ‚ òÖX/ž ò ºÖ) Í ºÖ = XäJdX/t mt¬)# !C cºCXC< º %%/jX):+,GIXLJM$ sitC<Xs<Xtuyäg,HkßéžÉäXaXX../CÈXžCä äižÖ‚hòÉ<e oã(äXaXX,/  (g s= s‚ó- Hu[Å=LY <³ XÖX J÷ffJ  o XŸw   ŒXXXz‚øòä+X £X ÑwK  ­XX€X# ù ‡.J ‚< ùX JJ<K [f ‚„ N‘-= X­ -=X„Ȭf.u ä д‡oóK:„]æw-K  XXØ~X# ¡ ß~.J ‚. ¡X tJ<K ¡f :> :Z ,‚„äõ+vJô ­ -= X. "tJLȬžzº (fvä Ð’Ÿ‘susJó-z. d M G? ¤ÆLY <³ XÖ X X× wYžX } J ö  ¶XX¬XzÈ wò f+X f£¯wÈK  XXí~X# Œ ô~.J ‚. ŒX tJ<K ¡f  : > : Z ,‚„ [+„Jô ­ -= X. "tJLȬžzX¬ ½fvä P–ˆä < YrJ È;Xf[º <  Ö¬ hó X>#HLNF@X׬"y XfJ.. ]t Ÿ =׃Y¬" JºH—<KHŸYÕ=.+ Õu& Õ».$ Õu& Õu * wÖ º. (uAAXºÈ *È*i *È*ç* XX¬  ‚<(X(J*¬,.‚ f  *ž*=*Ö *¬*=**v*V*L*‘**=)*X)X¬ ‚)X,-X)-J0º,4X6X)7X,9;ž>ž?X?ÖZXZKZÖä *t*K**œ*v*Y*Ê*X*³*­*Ÿ*„*’*ÈäwU?<..+A Tä XÖJA fÈ ø  È× 8 v X <¬‚ =0¬ <‚ ¬XJtºÖtÈ/13º6Ö7 ?  ºÖ<   ºÖ É Ö) ÷ ÈÖ Ÿ .JX Zt  %¬)+ ! z% %2s%=?XBÖC):#,GIXIÖL.M  qòXÖ #!#X&Ö''#umtäã ntt fg,Hk>nä (8vXX.¬ mä ÖãêÑòòAn..XÖo(( mäwº.,/)näwº "»"º"." f º .<g s= s‚ó- Hu`xÈ=Q[ XÖX J]ffJ  o XŸw   ŒXXX‚òf+X £X €¨wK  ­XXPX# ) W.J ‚< )X JJ<K [f ‚„ N‘-= X­ -=X„Ȭf.u ä P©„ ŠxtóK7‡Z–w-K  XX¨X# Ñ ¯.J ‚. ÑX tJ<K ¡f :> :Z ,‚„äõ+vJô ­ -= X. "tJLȬžzº (fvä P«ï‘susJó-z. d M G? ¤yÈQ[ XÖ X X× wYžX a J ö  ¶XX¬X qX Ö+X f£ßvÈK  XX½X# < D.J ‚. <X tJ<K ¡f  : > : Z ,‚„ [+„Jô ­ -= X. "tJLȬžzX¬ ½fvä °®ùN  jX(Xt »»»»»»»ÂvH0>Xyy34yy35qstryy37st_table_shortbuf_IO_lock_tnodeDatastrlenstderr_IO_buf_endsyck_yaml_utf8yy90yy91SyckIoFileyy94map_inlinesymsSyckSeqnodeId_IO_write_endtoktmp_freeres_listsyck_lvl_doccarat_markerspairs_sys_nerrscalar_literalyy44syck_map_kind__builtin_memcpylinectptrsyck_level_statustype_idsyck_lvl_blocksyck_str_kindsyck_seq_kindsyck_lvl_mapxSyckErrorHandlerstdout_IO_save_endyy50_IO_codecvt__lenscalar_noneScalar2get_inlinelong long unsigned intbonusyy54Directive_IO_backup_base_syck_strseq_stylesyck_io_type_filenosyck_lvl_iseqsyck_io_filesyck_lvl_seqxlineptrstrtodComment_IO_read_basestdinst_hash_typetry_tag_implicitsyck_lvl_pauselast_tokenscalar_plainsyck_lvl_strsyck_parser_readSyckNodeHandlersyck_parser_ptryy63syck_lvl_seqlinectsyck_parser_pop_levelSyckNodescalar_2quote_1syck_parser_add_level/root/.cpanm/work/1633575402.47567/YAML-Syck-1.34__builtin_strcpysyck_lvl_end_IO_marker_IO_read_ptrYYSTYPEDocumentSyckLevelscalar_1quotesyck_kind_tag_IO_write_basebufsizelong long int_IO_save_basencountScalarmap_styleyy11yy12yy13yy14yy15yy16yy17yy19yy76ScalarEnd_freeres_bufcomparesyck_lvl_open__pad5valuesmap_noneyy21yy23shortcutyy27yy29_vtable_offsetlvl_idx_syck_parserInlinelong doubleseq_none_syck_levelsyck_lvl_imapGNU C17 8.4.1 20200928 (Red Hat 8.4.1-1) -m64 -mtune=generic -march=x86-64 -g -g -O2 -fexceptions -fstack-protector-strong -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection=full -fwrapv -fno-strict-aliasing -fPIC -fplugin=annobinyy30yy32scalar_style_IO_read_endyy38yy87short intsyck_parser_current_level__builtin_strncatyyaccept_IO_wide_datayy40yy41yy43SyckMapyy47yy48yy49syck_strnduplvl_capadomainsyck_bytecode_utf8_syck_nodebytecode.csyck_lvl_mapcomplexforce_tokensyck_lvl_anctaguintptr_tyy51yy53_old_offsetyy93yy56_IO_FILEyy58__destunsigned charsyck_io_str__srcsyck_hdlr_remove_anchor_IO_write_ptr_syck_filesyck_yaml_utf16yy61yy62sycklex_bytecode_utf8yy64yy65yy66yy67yychbad_anchorsSyckBadAnchorHandleryy25sycklvalqidxreallocscalar_fold__off_tSyckStrst_table_entryshort unsigned intyy70yy71yy72yy73yy74_sys_errlistyy77yy78totalSyckIoFileReadsyck_lvl_headerseq_inlinesyck_parser_inputnum_entries_chainSyckIoStrReadsyck_alloc_strSyckIoStr_flags2qend_cur_columnsyck_yaml_utf32yy80yy82yy83__off64_tSyckParser_unused2_IO_buf_baseyy88yy89scalar_2quotesyck_base64decforce_styleST_STOPsyck_emitter_clearsyck_output_handlerout_lenb64_xtableforce_indentsyck_tagcmp__chst_retvalsyck_emit_mapSyckEmitterHandlersendsyck_emit_foldedsyck_emit_2quotedanchor_formatdoc_stageST_DELETEsyck_emit_literalignore_idexplicit_typinganchor_namesyck_emitter_parent_levelsyck_emitter_escapeignoresyck_emitsyck_emitter_current_levelst_free_tablesyck_emitter_mark_nodesyck_match_implicitcheck_roomsyck_emitter_writest_insert__fmt__builtin_callocend_emitsyck_emit_2quoted_1do_indentheadlesssyck_emit_item__builtin___sprintf_chkhdlrst_lookupforce_widthsyck_emitter_pop_levelemitter.csyck_free_emittersyck_emitter_add_levelpaddingsyck_emitter_flushhex_tablescanst_data_tsyck_scan_scalarsprintfsyck_emit_1quotedanchored__stack_chk_failST_CONTINUESyckOutputHandlersyck_emit_scalaruse_headerdoc_opensyck_emit_indentsyck_new_emittersubdkeep_nlst_init_numtable__builtin_memset_syck_emittersyck_emit_seqdoc_processingsyck_emit_endspcsbest_widthsyck_st_free_anchorsreq_widthuse_versionsort_keysb64_tablebufposSyckEmittersyck_emit_tagsyck_emitter_reset_levels__int128 unsignedresttaglenfavor_stylest_foreachsyck_emitter_st_freesyck_base64encyynewstateyy_reduce_printyyvaluepsyck_hdlr_get_anchoryyvalsyck_map_updateyytypeyydefactyylen__builtin_fwriteyyresultsyckcharmap_keyyystateyydefgotoyytnameyyrlineyyabortlabyytranslateyyerrorlabyydestructyypactyyr1yypgotofprintfyynewbytesyystosyyprhsmap_lensyck_map_assignsyck_new_seqyytableyyreduce__stream__fprintf_chkyycheckyyerrstatusbottomyyoutputyyacceptlabsyck_new_strgram.cmap_partyystacksizesyck_hdlr_add_anchoryyerrlab1syck_map_countyy_stack_printyybackupyysymprintyysigned_charyyreturnyyptrsyck_alloc_mapyyrhsyylnosycknerrsyyruleyysizesycklexyyss1syckparseyydefaultsyck_tagurisyck_new_mapyyssayyvsyysspyyr2yyoverflowlabyyerrlabsyck_seq_addsyck_hdlr_add_nodesyckerroryyvsayyssapply_seq_in_mapmap_valueyytokenyyvspsyck_add_transfersyck_alloc_seqsyckdebug__builtin_fputcyyallocsyck_free_nodeyysetstatest_init_strtablentmpsyck_type_id_to_urisyck_try_implicittype_lenst_deleteatmpsyck_xprivatehandler.cyy84tmp1tmp2yy140yy197yy142yy92yy95yy96othorpeimplicit.cyy173yy100yy101yy102yy103yy104yy105yy177yy107yy179yy46yy110yy111yy112yy113yy114yy116yy118yy119yy175yy108yy109yy182yy183yy120yy121yy185yy186yy125yy187yy127yy128yy129yy189yy224yy229yy130yy131yy132yy133yy134yy135yy136yy138yy115yy117yy194yy141yy195yy143yy196yy145yy146yy147yy198yy149yy199yy151yy152yy154yy155yy156yy157yy158yy159yy122yy123yy124yy126yy188yy160yy162yy200yy201yy166yy204yy205yy206yy207yy208yy261yy18yy170yy171yy172yy210yy211yy212yy213yy214yy215yy216yy217yy218yy20yy22yy24yy26yy28yy180yy181yy220yy222yy225yy226yy227yy228yy262yy176yy153yy31yy33yy36tag1tag2yy86yy190yy191yy192yy193yy231yy232yy233yy234yy235yy236yy237yy238yy239yy144yy39yy42yy45yy10yy178yy240yy241yy242yy243yy244yy246yy247yy248yy249yy267yy52yy98yy250yy251yy253yy254yy255yy270yy257yy259yy60__builtin_strchryy260yy263yy264yy266yy268yy269yy75yy79yy169yy68yy161yy163yy167yy81yy168yy85syck_replace_str2syck_map_emptysyck_alloc_nodesyck_seq_assignnode.csyck_new_str2map1map2syck_seq_countsyck_replace_strsyck_free_members__builtin_memmovenew_idxsyck_map_addnew_capasyck_map_readsyck_str_readsyck_seq_readsyck_seq_emptysyck_str_blow_away_commassyck_parser_str_auto__ctype_b_locsyck_parser_taguri_expansionfflushsyck_parseroersyck_assertsyck_st_free__fread_aliassyck_str_is_unquotable_integer_ISlowerabort_ISxdigitsyck_parser_reset_levelssyck_parser_reset_cursorsyck_move_tokenssyck_new_parser_IScntrl__printf_chksyck_add_sym_ISdigit_ISspacesyck_parser_strsyck_check_limit_ISpunct_ISprintsyck_default_error_handlerfreadsyck_io_str_readsyck_io_file_readfree_any_iosyck_st_free_nodes_ISgraphsyck_parser_set_input_typesyck_parser_filemax_size__ptrsyck_parser_bad_anchor_handler_ISalpha_ISalnumline_numsyck_parser_readlensyck_free_parsersyck_.c_ISblankfile_namesyck_parser_set_root_on_error_ISuppersyck_parser_error_handler__sizesyck_parser_implicit_typingst_init_numtable_with_sizebin_posprimesnumcmpsyck_st.chash_valst_add_directtype_strhashst_cleanup_safenew_sizest_init_table_with_sizeold_num_binsrecorddelete_neverst_delete_safenew_tablerehashnew_binsst_copyst_init_tabletype_numhashold_tablenew_num_binsnewsizest_init_strtable_with_sizeyy221SingleQuote2yy230TransferMethod2fold_nlPlain2Plain3escape_seqnlDoWhatdoc_levelDoubleQuoteqcapaSingleQuoteScalarBlock2parentIndenteat_commentsHeaderplvlDoubleQuote2walkersyckwrapnl_countnl_beginTransferMethodnewline_lenpacertoken.cyy55yy57lastIndentyy69blockTypechr_textlvl_overyy106Plainis_newlineyy97yy99strtolyy137indt_lennl_lenyy148lvl_deepScalarBlocknew_spacesyy150forceIndentyy164yy165yy203yy209yy174sycklex_yaml_utf8yy219yy184IlaststatvalPerl_av_pushold_parserPL_locale_mutexblku_oldsaveixIorigargcIorigargvPerl_sv_catpvn_flagssi_errnokeeper__pad0tbl_arena_next_spent_sizeIin_utf8_CTYPE_localehostentls_prevclose_parenPL_no_localize_reflex_stuffIlast_swash_hvxpvgv_readdir_ptrIstatcacheIcompilingIdbargsnew_perlblku_oldspperl_syck_lookup_symsub_error_countxpvhvPERL_CONTEXT_asctime_bufferInumeric_standardsigngamprevcomppadIe_scriptPerl_newSV_typesv_u_servent_structPL_sv_placeholderIpreambleavDPPP_dummy_PL_parserIDBcontrolxpvioxpvivtbl_maxPerl_sv_isobjectsi_tidImy_cxt_sizeblku_old_tmpsfloorImain_rootxcv_outsideblku_type_PerlIO__localeshe_valuIutf8_totitle_spent_structnamed_bufffinal_lenPL_freqh_lengthop_firstIdoswitches_netent_sizeXS_YAML__Syck_DumpJSONthrhook_proc_tnext_branchPL_op_nameblock_evals_port__in6_uPL_no_wrongrefin_port_tgp_refcntprev_markIdef_layerlistsaw_infix_sigilIrestartjmpenvsave_lastlocIwarn_locale_spent_bufferIcolorsmg_objje_old_delaymagicmulti_endPerlIO_list_sPerlIO_list_tCOPHHscream_posxpvmgIargvgvdespatch_signals_proc_tgetdate_errxio_flagsIsharehookold_regmatch_statexcv_xsubnextwordIminus_EIcheckavpad_1pad_2ImarkstackxpvnvPL_bitcountIdump_re_max_lenxcv_flagsPL_warn_nlIstatusvalueIDBsingleutf8_substr__u6_addr8min_offsetPL_warn_nosemipmopst_atimsival_intIlast_in_gvIreg_curpmshare_proc_tIhash_rand_bits_enabled_call_addrop_privatelex_formbrackSVt_LASTyaml_syck_parser_handlersbu_dstrIrunopsIpsig_pend_ctime_bufferIcomppad_namePL_magic_vtablesImarkstack_maxXS_YAML__Syck_LoadYAMLsbu_itersemitter_xtrasi_typeinternalperl_json_preprocessIreentrant_retintjson_syck_parser_handlerINonL1NonFinalFold__spins__blkcnt_tPerl_gv_fetchpvPTR_TBL_tPerl_call_methodxhv_max_protoent_sizejson_quote_charPL_no_symrefhent_hek_grent_ptr_getlogin_bufferxivu_eval_seenPL_curinterp__locale_dataPL_hash_seedpos_flagsIstack_baseexecImax_intro_pendingposcacheop_pmstashstartugroupsbu_strendre_scream_pos_data_scop_stashoffs_addrst_sizePL_opargspthread_key_tIperldblastparensi_addr_lsbIinplace__locale_t_pkeyPerl_pop_scopeIDBlinePL_bincompat_optionsIsv_arenarootjumpPL_uudmapgp_egvnewvalpadnamestatesxio_bottom_gvobjectsIphaseyaml_syck_emitter_handlerstrncmpsubbeg_asctime_sizeIblockhooksend_shift__nuserssbu_oldsaveix_pwent_ptrIosnamen_addrtypelex_casemodslex_brackstacknumbered_buff_STOREIefloatsizePADLISTimplicit_binaryoutioIpeeppPADNAMEPerl_grok_octIregex_padretopprogram_invocation_namebdeparsexcv_padlist_uminmodsp_pwdpIutf8_foldclosuresPL_checkIsv_yesparenfloorPL_op_private_bitfieldsPerl_sv_catpvbranchlikeJMPENVImain_startqr_anoncvIstashpad_archmy_perlPerl___notusedIenvgvIperlioIpadname_constPerl_xs_boot_epilogperl_syck_output_handler_mgIregmatch_stateprev_rexIisarevIutf8localeIsignalhook__ownerPL_Noop_optc2_utf8__ino64_tsa_family_tsockaddr_inarp__pthread_list_tsubcoffsetsvu_fpyy_stack_frameIdebstash__errno_locationtopwordPerl_safesysfreereg_substr_datumsi_stackXS_YAML__Syck_LoadJSONxpadl_maxInomemok__uint8_tfirstposIdiehookprev_recurse_locinputany_ptr_readdir64_ptrperl_syck_output_handler_pvCLONE_PARAMSIcompcvlex_repltimespecPL_interp_size_5_18_0PerlInterpreterxpadnl_max_namedPerl_hv_common_key_lenPL_check_mutexxpvlenu_pvILatin1st_nlinkIminus_Fre_eval_strIscopestack_ixsp_maxIscopestack_maxIminus_aany_pvpIminus_cPerl_newSVuvIminus_lIminus_nIminus_pIargvout_stackPL_op_seqIinitavPerl_newSVpvnsin6_familytbl_itemsbase64Perl_ophook_tcache_maskPL_no_dir_funcfirstcharsImaxsysfdIlocalizinglex_sharedforward_anchorservent_crypt_struct_bufferPL_op_private_labelsrxfreepw_namesp_lstchgcurlyoutsv_getlogin_sizePL_sig_nameIunicodeblku_subqr_packageIrestartop__timezonePL_thr_keygofsin_quote__mask_was_savedPERL_PHASE_CONSTRUCTIlastgotoprobecop_lineIsecondgv__locale_structIsavebegininitializedXPVAVis_asciiSTRLENexitlistentrylangop_ppaddrxpadnl_allocIcheckav_saveIdebug_pad__jmp_buf_taglex_flagsIendavblku_oldscopespIutf8_idcontyaml_syck_mark_emitterIcomppad_name_fillmy_opIHasMultiCharFoldglobhook_ttmpXSoffXPVCVPerl_savetmpsPL_sh_pathPL_hash_seed_setregnodePerl_PerlIO_writeIperl_destruct_levelsi_cxixmg_virtualpadnamelistoptoptinterpreterPL_warn_reservedPMOPIstashpadixPerl_xs_handshakest_uidlongfoldsp_minxcv_xsubanyPADOFFSETPL_valid_types_RVIstatbufsbu_rflagsxpv_curxpadn_flagsIstderrgvxio_page_lenperl_memory_debug_headerIin_clean_allmark_nameop_flagsold_regmatch_slab__ino_treg_substr_datalex_super_state_grent_structparser_xtraxcv_root_ucurlymsettingPL_uuemapPL_nanPL_magic_dataIcustom_op_descsPL_hexdigitsi_prevXPVGV_addr_bndsp_namplex_startsIsavestacksi_codeImodcountprev_curlyxIsortstashPL_mod_latin1_ucIstdingvsvt_localsp_warnIcustom_opsCHECKPOINTXPVHVany_av_grent_bufferlast_uniXPVIOsp_expireXPVIV__uint16_tminlenretIofsgvTARGi_ivIdelaymagic_gidxcv_gv_uIcollxfrm_multPerl_gv_add_by_typetbl_arena_endIsavestack_ixperl_json_postprocessPL_C_locale_objsockaddr_x25SVt_PVAVsin6_flowinfoPerl_call_pvxmg_magicsvu_gpany_dptrintuitIbody_rootssi_sigvalhek_lenIcollation_ixtokenbufop_nextopPerl_savepvline_tmgvtblPL_valid_types_NVXPL_runops_dbg_readdir64_sizeIutf8_xidcontsi_cxstackPerl_grok_hexjson_syck_mark_emitter_hostent_ptrsbu_rxxcv_padlistPL_revisionsvt_get_Boolsvu_iv__prevXPVMGIsort_RealCmpsbu_rxtaintedop_moresibxpv_len_uIpatchlevel_pwent_structnextvalsvu_pvXPVNVany_gvIhash_rand_bitssbu_origioerror__gid_tIparserxpadlarr_dbgstack_max1runops_proc_tany_hvPL_subversionIpadlist_generationSVt_PVFM__environxpadnl_maxIdefoutgv_lowerIstatusvalue_posix_pwent_buffer__ctype_tolowersiginfo_tPerl_newSVivany_ivmax_offsetIchopsetIrpeeppoldcomppadPL_fold_localesbu_rxresSVt_PVGVIincgvsi_markoffxpadnl_fillS_POPMARKPL_no_usymtv_nsecnexttypesig_slurpyIcurpm_underSVt_PVHVSighandler_tpthread_getspecificsvu_hashin6addr_loopbacksvu_nvlex_inpatlast_lopsockaddr_ax25PL_isa_DOESptr_tbl_arenaSVt_PVIOSVt_PVIVfilteredIlastfdPL_perlio_fd_refcntIeval_start_readdir_structIlast_swash_keyls_linestrPerl_check_t_readdir_size__alignPerl_gv_stashpvPADNAMELISTSVt_PVCVPERL_PHASE_STARTxcv_hscxtany_u32Perl_croak_nocontextPerl_is_utf8_string_ctime_sizeop_pmreplrootud_inoIsavestack_maxPerl_newSVnvIlocalpatchesIsv_rootSVt_PVLVp5rxop_nextPerl_looks_like_number__saved_masksvu_rvsvu_rxsockaddr_eonany_opsixtyIcurstackSVt_PVMGIpadix_floorPerl_push_scopesi_statusxpadl_arrh_addrtype_strerror_sizeIdelaymagic_euidbufendPerl_newSVpvlex_inwhatany_pvPL_valid_types_PVXXS_YAML__Syck_DumpYAMLIntoxnv_nvPL_phase_namessin_zeroIopfreehook_protoent_ptrPerl_safesysmallocIunitcheckavsvu_uvPerlIOluse_codestrtokprotoentmg_lenImemory_debug_headerPL_no_modifyany_svSVt_IVItop_env__blksize_t_spent_ptrPerl_av_fetchPerl_block_gimmeItmps_stackyy_lexsharedperl_syck_output_handler_iooffsPerl_newSVsvIseen_deprecated_macroIsv_undefIpsig_nameLEXSHAREDclone_paramsperl_drand48_tIgensymPL_foldIregmatch_slabop_redooprsfp_hostent_structstart_tmpxio_fmt_namesvt_lencop_hintsh_nameIerrorsPL_no_memxpvlenu_lenh_aliases_hostent_sizePL_YesXS_YAML__Syck_DumpYAMLFileregister_bad_aliasop_pmreplstarthent_refcountblobsaved_copylex_sub_inwhatany_uvItmps_floorPL_do_undumpIstrxfrm_is_behavedxpadl_idIbasetimeIop_maskIsighandlerpunreferencedxpadnl_refcntIUpperLatin1xio_ofp_hostent_buffercop_seqmulti_startop_pmreplrootSVt_NVIDBtracemaxlenpre_prefixop_targIbeginavje_retresume_statePL_dollarzero_mutexjson_quote_styleIsv_constspw_dirlex_casestackop_lastopIsub_generationblku_evalfloatPL_versionPL_no_securityimplicit_unicodeIutf8_foldable__countsi_cxmaxmulti_open_killst_rdevLOOPILB_invlistSVt_PVPerl_croak_svPerl_eval_pvPerl_sv_setpvREENTRImess_svIglobalstashImin_intro_pendingPL_perlio_mutexexpectoldlocIcollxfrm_baseIutf8_perl_idcontcx_blkIstatnameRETVALxnv_u__uid_tsin6_scope_idblku_gimmePL_valid_types_IVXst_ctimrecheck_utf8_validityIutf8_tofoldxcv_rootISB_invlistblock_formatin_addr_top_sibparenttz_dsttime__dataold_namesvxpadn_type_uIAssigned_invlistpeep_tPL_my_ctx_mutexPerl_sv_free2Isv_nominlenperl_phaseIin_clean_objsd_reclenPL_mmap_page_sizePERL_PHASE_DESTRUCTin_podPerl_stack_growgp_ioImultideref_pcIors_svxpadn_protocvIevalseqIunlockhookregexp_enginemg_flagsIcurstashgr_passwdPerl_markstack_growPerl_ppaddr_tgr_gidPerl_my_atofIstashpadmaxsi_overrun__clock_tSVt_NULLls_bufptrIbeginav_savePerl_grok_number__uint32_tIorigfilenamexmg_hash_indexlast_lop_opInumeric_localcop_warningsPL_op_private_bitdef_ixIcop_seqmaxop_pmtargetgvPL_veto_cleanupform_lex_stateIstatgvwroteIdestroyhookcoplinest_blocks_sys_siglistsbu_msbu_smark_stack_entrysave_curlyxIcomppadsub_no_recoverlex_dojoinxmg_udirent64gp_cvgenPL_utf8skipxcv_fileSVt_PVNVitervar_ugp_flagsxiou_dirp_servent_bufferPL_op_mutexPerl_newSVpvn_shareparen_namesPerl_sv_lenIregistered_mrossi_uidpw_passwdlex_allbracketsopvalIcurcopdbblock_subentitypos_magicgp_file_hekPerl_hv_placeholders_getsv_refcntsockaddr_in6__nlink_ttbl_aryxav_allocsi_fdnparensPL_no_funcPerl_av_shiftxpadn_refcntIeval_rootold_eval_rootnamed_buff_iterst_gidIdowarnyycharIfirstgvmg_moremagicop_pmoffsetop_pmstashoffPerl_av_storePERL_SIMGVTBLbnumop_staticMAGICPerl_sv_newmortalItmps_maxoptargPL_latin1_lcsockaddr_ipxIthreadhookPL_valid_types_IV_setbadancblku_givwhengr_nameop_typeIutf8_perl_idstartPerl_hv_iterinitsublenblku_oldmarkspxivu_ivIutf8_swash_ptrs_netent_ptrIpadname_undefpreamblingproto_perl_uppercx_uIDBcvPL_sigfpe_savedtrieIlockhooknew_rvav__ctype_toupperPerl_newRVPL_inf_xnvuPerl_keyword_plugin_txio_lines_leftcompflagssockaddr_isopthread_mutex_tIin_load_modulePL_memory_wrapxio_pagePerl_newSVsigjmp_bufIlaststype__ctype_bpref_av__listh_addr_listIutf8_charname_continuein_my_stashxpadn_len_strerror_bufferlocal_patchesdummycolonIunitcheckav_savePL_op_descsi_stimePL_no_aelemPerl_sortsvlastcloseparenifmatchPerl_mg_getIdumpindentIoldnamepreambledop_code_listxhv_keysitersave_readdir64_structIAboveLatin1Iutf8_mark_servent_sizesi_signoIDBgvIlast_swash_tmpsPerl_sv_2bool_flags__namessv_anyblk_uxcv_startacceptedgvvalIWB_invlistDumpYAMLImplolddepthIutf8cache_boundsprev_evalIpadixsortkeysdefsv_save_netent_bufferxcv_stashxcv_gv__builtin_strcatPL_keyword_plugincop_hints_hashIcustom_op_nameslex_sub_replxpadn_highre_scream_pos_datahek_hash_ttyname_bufferperl_syck_error_handlerPL_hints_mutexload_codeIknown_layers_netent_errnoItaintingPL_op_private_bitdefsIcurcopIstack_sp__ssize_tany_boolregmatch_info_auxPERL_PHASE_ENDPL_interp_sizeIcollation_standard__glibc_reservedlex_deferxmg_stashPL_runops_stdIorigalensbu_maxiterssockaddrIdebugXS_YAML__Syck_DumpJSONIntorefcounted_heIcurpadPL_op_private_valid__time_t__daylightst_mtims_protosbu_targd_typelogicalIforkprocesslex_bracketsxio_top_gvIutf8_tolowerPerl_newRV_noincPL_op_sequenceblku_oldcopperl_mutexIcurstackinfoIstart_envPerl_newXS_deffilelex_fakeeoflex_sub_opstashesIstashcachexnv_linesPerl_sv_blessPL_use_safe_putenvp_aliases_netent_structin_mynext_offxivu_uvsin_portpadnlImodglobalin6addr_anyICmdsockaddr_atregmatch_info_aux_evalxcv_start_uPL_no_helem_svbasespIgenerationIGCB_invlistIstrtabxpadl_outidxpadn_lowblock_givwhenregexp_paren_pairXS_YAML__Syck_DumpJSONFilecrypt_datapprivatecv_flags_tcur_top_envxpadn_typestashIin_utf8_COLLATE_localeIlast_swash_slenstate_uPERL_PHASE_RUN_sigfaultop_sparelex_opst_inopw_gecos__pid_tparsed_subop_lastPerl_free_tmpsxio_typeyylvaljson_max_depthsp_inactresolve_bad_aliassockaddr_dlxav_fillhent_valIorigenvironIdelaymagic_egidgp_avscream_oldsmg_ptrregexpmaxposOutputStreamsa_familyptr_tblInumeric_namelazyiv_sifieldsSVCOMPARE_tSVt_REGEXPIpsig_ptrgp_cvxgv_stashnetentsaved_curcoptv_secblku_u16Iprofiledataref_type__sigset_tgp_lineImainstackIcurpmop_pmflagsst_blksize__builtin_strcmpxpadn_ourstashprogram_invocation_short_namePL_sig_numptr_tbl_ent_hostent_errnoop_slabbedIsublineIargvoutgvIwatchaddrIdefgvhek_keyPerl_av_clearPerlExitListEntryxio_bottom_namegp_formIreentrant_bufferhent_nextcheck_ixIunsafeIhintgvsockaddr_in__jmp_bufIDBsignalIutf8_charname_beginblku_formatPL_ppaddr__dirstreamsin_addrIXpvIregex_padavPL_perlio_debug_fdblku_loopdump_codecache_offsetwantedpw_uid_timerIstrxfrm_NUL_replacement__locksig_elemsPL_valid_types_NV_setgr_memIxsubfilenamegp_hvIpad_reset_pendingopterrdfoutgvPerl_sv_setsv_flags_sigchldxcv_depthprev_vItaint_warnIArgvpw_shellsi_next_errsv_syscallPL_no_symref_svIexitlistsinglequoteIsubnamePL_warn_uninitany_i32Ihv_fetch_ent_mhUNOP_AUX_itemsvt_dup__pthread_mutex_sPerl_sv_setiv_mgInumeric_radix_svPerl_sv_2ioPL_fold_latin1xcv_outside_seqPL_magic_vtable_namesPL_no_sock_funcIsplitstrxcv_heksvt_freesockaddr_nsold_ssi_addrdirentIbody_arenascheckstr_grent_sizePerl_hv_itervalPL_csighandlerpSVt_INVLISTIsortcopPL_warn_uninit_svsin_familyIsignalssbu_typesi_pidmg_privatedupePerl_form_nocontextje_buflazysvin_stringItoptargetIstrxfrm_max_cpIerrgvPerl_sv_2pv_flagssvt_clearPERL_PHASE_CHECKnexttokePL_no_myglobItmps_ixIsig_pendingsubstrsany_svpintflagsdestroyable_proc_tIfdpidxpadlarr_allocivalany_dxptrn_netPerl_croak_xs_usageop_pmtargetoffIcollation_nameIefloatbuf_pwent_sizeoldvalany_longxiou_anyIexit_flagsc1_utf8Iglobhooksin6_portyaml_quote_stylePL_block_typed_offxio_top_namecur_lenIptr_tableIcolorsetPerl_hv_iternext_flags__jmpbufIfilemode__dev_t__kindIexitlistlensockaddr_unop_foldedIdelaymagicPL_charclassImarkstack_ptrpw_gidprev_yes_statePerl__is_utf8_char_helpers_name_protoent_structop_compgp_svsvu_array__pthread_internal_listwhilemIInBitmapmother_re__valn_aliases_sigsysperl_syck_bad_anchor_handlerextflagsxio_fmt_gvxpadn_genPerl_sv_reftypeis_bad_alias_objectcop_fileIcurstnamecx_subst__u6_addr16Isv_countsvt_setIdefstashItaintedtz_minuteswestIbodytargetjson_syck_emitter_handleroldoldbufptrxav_maxxiv_u_protoent_bufferst_modesavearray_xivuleave_opIutf8_xidstartre_eval_startperl_debug_padIstack_maxsvtypest_dev__u6_addr32je_prevIclocktickPerl_sv_2iv_flags__syscall_slong_tIXPosix_ptrsIDBsubspwdreallen__nextIutf8_idstartje_mustcatchnumbered_buff_LENGTHyy_parserblock_loopop_savefreeIscopestackIformtargetpad_offsetDumpJSONImplPL_perlio_fd_refcnt_sizes_aliaseslastcpIconstpadixmulti_closestatherelinesImy_cxt_listIPosix_ptrsxivu_namehek_ttyname_sizesin6_addrIwatchokS_SvREFCNT_decPL_my_cxt_indexPerl_av_len__tznamep_protoPerl_sv_2mortalsvt_copyboot_YAML__Syckxnv_bm_tailsival_ptrPerl_hv_commonmark_locsi_utimexpvavIsrand_calledload_blessedoptindSyck.c__mode_tsp_flagperl_keyIreplgvsa_dataIbreakable_sub_genrsfp_filtersS_SvREFCNT_incIin_evalsuboffset__sigval_t_servent_ptrXS_YAML__Syck_DumpYAMLlex_re_reparsingIutf8_toupperPerl_hv_iterkeysvlinestartsig_optelemsPERL_PHASE_INITIcv_has_evalmg_typexpvcvnumbered_buff_FETCHIrandom_stateIscopestack_namesi_bandxpadn_pvIcomppad_name_floorIdelaymagic_uidIwarnhookIlast_swash_klen_xmgu_sigpollxio_dirpucur_text__elisionblku_oldpmImain_cvUªSª´óUŸ´S.0Ÿ.e\ez]z­\´\.dŸ.³_´_..P.±^±´P´ò^ò÷P÷^2zVz‡P‡«V´VE[QœQ´ÄQ MUMm]mróUŸrñ]ñûUûö] MTMaSaróTŸrˆ Sˆ è óTŸè Ï SÏ BóTŸBöS‡Pº\È×P×O^\ñ^[\u‰\‰ì^ r^r‡PŸ”^ \ | ^Î î ^’ ^, è ^[ t ^w ² P÷ ' ^' e \e — ^— ¨ \¨ « PÏ Þ PÞ Bwó^(\(2^2>P>rwåö\WaV¢«pp.R.8q˜³0Ÿ[0Ÿu‰0Ÿ 0Ÿ' e 0Ÿ— ¨ 0Ÿ(0Ÿåö0Ÿìp+P39p\dpdqpqtq¼àP‰”p p2R2@qŸ¤p¨ÂRÂÐq;Dpª´pÄÌpÐìTì÷r÷q p*R*8qˆ”p pITpÞ RÍÑPÑõ\õùUù\Ë Þ \, J \[ _ U_ è \Ï B\2r\‚ Š _Š V ¡ S¡ ® V® Å sŸÏ (V… è ^Ï Ú ^Í Ú PÍ Û _Í Û SqP((Q((T((PV^qV^Pjm v~ $ &ŸmrQjrTjrP<U0ŸUˆV~ — VÔí0ŸíVe ~ V'p/>P>Fqb’P®ÆPÆÊrÊÐpþ p' * P7 : P: G qÜ0Ÿñ 0Ÿ' G 0Ÿ— ¨ 0Ÿ(0Ÿåö0Ÿ$DPJ T P© ´ P´ Æ qÆ Ë q†Ÿ0ŸŸáVá \ V| ª Vª ® qî ’ V , Vè  V  Q A VA [ QBóVr•V••^•­Q­Ö^ÖÜQ†ŸdŸŸ¯RáRw R , w  RA [ Rµ¿R¿ÏwÙãRãówŒ¸R¸¿r€Ÿ¿ÉRÉÖwÖåRŸŸPŸ_| Î _î ’ _ ' _' , Pè [ _BÊ_ÊÏPÏî_îóPrÔ_ÔÖPÖå_Ÿ¯sè ^²ÔQÔÔpî ô Qô ø pø q @ PX i |y Œ QŒ ’ Pè  P ) |BdPdv|†ŠP«¿Pw~UŒ•P•呼Œ•0Ÿ•£~vŸ¨­qvŸ­Ö~vŸÖÜqvŸ’ ² Pp&&U&Œ'SŒ'”'óUŸ”'(Sp&¸&T¸&õ&Võ&”'óTŸ”'¶'V¶'Ä'TÄ'ë'Vë'(óTŸp&¸&Q¸&p'\p'”'óQŸ”'¶'\¶'Ä'QÄ'(\((óQŸñ&&'0Ÿ&'j'^ë'(0Ÿ 'j'V+'4'p Ÿ4'8'Q+'9'0Ÿ+'9']9'U'V9'U']p%%U%Ã%SÃ%Ç%óUŸÇ%ì%Sì%ó%Uó%ô%óUŸô%$&S$&+&U+&,&óUŸ,&f&S†%Š%PŠ%Ä%VÇ%í%Vô%%&V,&f&V‘%¹%P¹%Æ%\Ç%Ø%PØ%ï%\ô% &P &'&\,&3&P3&f&\"¬"U¬" #\ ##U##óUŸ#f%\"¬"T¬" #] ##T##óTŸ#f%]°"³"P³"#S#f%SX#t#P$2$Pw$§$P‘$”$~p”Ÿ”$Í$^š$§$0Ÿ§$¾$V¾$Ã$vŸÃ$Í$VØ#þ#P%C%P.%0%vp”Ÿ0%f%V6%C%0ŸC%W%^W%\%~Ÿ\%f%^ç$í$0Ÿí$ö$Rö$û$rŸû$%Rç$ %P %%V%%0ŸÀ!Ù!UÙ!"S"#"óUŸ#"F"SF"N"óUŸN"„"SÀ!Ù!TÙ!""^""#"óTŸ#"M"^M"N"óTŸN"„"^À!Ù!QÙ! "] "#"óQŸ#"K"]K"N"óQŸN"„"]à!ä!Pä!"V#"G"VN"„"Vì!î!Pî!"\#"I"\N"S"PS"„"\ð !U !K!SK!S!óUŸS!v!Sv!~!óUŸ~!´!Sð !T !R!^R!S!óTŸS!}!^}!~!óTŸ~!´!^ð !Q !P!]P!S!óQŸS!{!]{!~!óQŸ~!´!]!!P!L!VS!w!V~!´!V!!P!N!\S!y!\~!ƒ!Pƒ!´!\ÐUÓ\ÓÚóUŸÚð\ðúUúûóUŸûy\ÐçTç-]9yóTŸÐQyóQŸÐR@S@9óRŸ9ySÐX0V09óXŸ9yVüRMSMVŸVe_ehŸh°S°µsŸµËSÚå_ûŸySüR@S@«^°Ë^û9^9ySüR@S@€T°sŸ°µ^µËsŸÚåTû T_9sŸ9ySÀèUèh]hkóUŸk„]„ŠUŠ‹óUŸ‹É]ÀÐTÐÉóTŸÀäQäS‹óQŸ‹ÉSÀèRè\‹óRŸ‹É\ÉäQäSsŸ vŸ DSDIsŸIbSk{sŸ‹ÉSÉäQäS6TDIVk{T‹ÉSÉäQäS V bSkkSk{\‹ÉSPŒUŒï\ïùUùúóUŸú±\PˆTˆ±‘¼P^Q^õ_õúóQŸú±_PŒRŒ±óRŸTØ0ŸúC0ŸCS1ŸS±0ŸY^Q^•_ÌØsŸS]sŸ]ctŸY^Q^õ_õúóQŸú±_Y^Q^•_•¥^ÌØ^S]sŸ]ctŸàU\‰U‰ŠóUŸŠA\àTA‘¼àîQî…_…ŠóQŸŠA_àRAóRŸäh0ŸŠÓ0ŸÓã1ŸãA0ŸéîQî%_\hsŸãísŸíótŸéîQî…_…ŠóQŸŠA_éîQî%_%5^\h^ãísŸíótŸð(U(V™U™šóUŸšÞVðýTýÞóTŸðQ‘]‘šóQŸšÞ]ð(R(ÞóRŸ Q3]3DTDLŸLL_LTŸToTopŸpp_pxŸš´T´ÁŸÁÔTÔÞŸ Q3]3\š¼\¼Á_ÁÞ\°áUánSnxóUŸxßSßáU°áTás]sxóTŸxß]ßáT°áQáq\qxóQŸxß\ßáQ´á0Ÿá\V\avŸaoVxßVßá0Ÿ€¹U¹V"U"#óUŸ#¬V¬µóUŸµï V€¹T¹ï ‘°€¹Q¹²^²ÃóQŸÃá^á6Ÿ#j^^µã^è^ ^c ¿ ^Ä ï ^€¹R¹ï ‘¤€¹X¹ï ‘œ€¹Y¹á‘£#A‘£AKUK¦‘£µï ‘£€Ø‘ØS#«Sµ— S— œ ‘²‘0.(Ÿœ ï S€æ‘æ$]7‘7m0Ÿc œ ‘„R4ŸRvQvv ”rv ”3)(ŸÃ4ŸµèQè v ”rv ”3)(ŸT c Qc œ 4Ÿœ ¥ Q¥ ï v ”rv ”3)(ŸÀÄPÄ\#®\µï \ÍÔPÔï ‘¨Í0ŸPò_M0ŸMQPQá_#4_†_µ _T c _c œ 0Ÿœ ï _DPR P Ã‘¸@žUžÉSÉÊVÊÏóUŸÏ(S(3U3¯S@xTx2Y ZY(3T€¯YD]0Ÿ] Z Z0ŸZ¼Z¼¿[¿(Z(30Ÿ3€Z€¯0ŸD]0Ÿ] [ Z0ŸZ¯[¿í[ò([(30Ÿ3€[€¯0ŸD‹0Ÿ‹EP]mPm¦X¦ØPØæXæ(P(30Ÿ3xPx{p !Ÿ{¯P°¿U¿á\áâóUŸâ9\9>óUŸ 0Ÿ QqŸ!QÉÐPÐÞSâ3SùûPû7V7=U ¶ U¶  V óUŸ 6 V6 A UA ¬V ³ T³ ç S 6 S6 A T º Qº 6 óQŸ6 A QA ¬óQŸÔ ê Pê  \ 3 P3 6 \A ¬\b Ï ]u˜]uBŸŒ ¤ Y¤ X .~Ÿ˜Y˜¬X@ u Uu + S+ 5 óUŸ5 ˆ S@ u Tu  V 5 óTŸ5 G VG s óTŸs 8 V8 o óTŸo ƒ Vƒ ˆ óTŸq ¾ 0Ÿ¾ Ê T5 G 0Ÿ= È 0ŸË  \s = \È  \o ƒ \| ‚ P‚ Û \Û ã Pã 0 ]5 G \G = ]= È \È ˆ ]` j Pj u Uu à ]Ã È 0Ÿ` v °±Ÿ` j Pj u Uu v ]ã ì Pì ð Uð = ^È ^ã ñ DZŸã ì Pì ð Uð ñ ^8 D PD H UH o V8 I ϱŸ8 D PD H UH I VCUCZSZ\óUŸ\eS$T$GPGUV\ePp”U”¾S¾ÄóUŸÄ> Sp”T”Ã]Äü]ü T ( ]( 4 T4 > ]p”Q”Á\Äù\ ( \( 4 Q4 > \˜župŸžªRÄÑRä V! ( Vð Vðü]ü Tð Uªµ\ªµ]ª´sàÀÑUÑåSåæóUŸæSP\U\­S­±U±²óUŸ ¸U¸ëSëíóUŸíHSHJóUŸ ÓUÓdSdlóUŸl›S ÁTÁúVúlóTŸl›V ¸Q¸g\glóQŸl›\`‰U‰ŽóUŸŽ‘U°¼U¼SóUŸ U óUŸTóTŸ0ŸQóQŸgˆPˆ)S)*PÀÕUÕÉSÉ÷s|Ÿ÷iSquSu‘s~ŸÀÕTÕG\G£óTŸÀÕQÕnVnqóQŸq V £óQŸÄv ÿŸve[q„[ĉ ÿŸ‰FRFJXq‡R‡‘s”8$8&2$x"Äž0ŸžMQq‘ ÿŸ°e\Ö£PÖGPG¶U¶ÅuŸÅ×u~ŸðUuŸ)U)8U8YuŸYeTe€U€‹uŸ‹‘U›£UàCTCqóUóT"Ÿq£Tîÿ0Ÿ$rŸ$(R(,rŸ,2 u2$x"”#Ÿ SUS{S{ßs}ŸßýSÿASC¨SªºS WTWwVwßvŸßþVÿBVC©VªºV$k0ŸksTs”tŸ”·tŸ·ÛtŸÛéT&tŸ&/tŸ/4tŸKotŸo“tŸ“ tŸªº0ŸXºP`ŠUŠãv¨oãéóUŸé ‘˜o ÕóUŸã:vÔo:[‘Äo[_P_Ñ‘Äo<‘ÄoQY0ŸY‘Äo·ùXé‘Äo  ‘Äo J ‘ÄoL ± ‘Äo± » X» ‰‘ÄoŽª‘Äo¯Õ‘Äov{^$ ”0$0&Ÿ%0P0<q¿"”8$8&t"Ÿ» ”0$0&Ÿ»Á s0$0&ŸÁèp¾"”ÿŸèsÿŸŠ²P²·p¾"”ÿŸ # ^>sÿŸÝ^Ýås1$À¿"”0$0&Ÿå ‘Ào”~"Ÿ{^ËíP$P6·rÿŸ·Ñ~ÿŸÁÓPÓèp¾"”ÿŸèsÿŸŠ^E^~Òs1$À¿"”0$0&Ÿ ) rÿŸ)  ~ÿŸ # ^# z ~ÿŸz ® ^® G ~ÿŸy  ~ÿŸ* ± ~ÿŸ>sÿŸ[Ð~ÿŸ1ŸãvÄo;v‘´ov{T{¯‘´o¯$3Ÿ$Ñ‘´o<S‘´oS3ŸŠ‘´o·é‘´o  ‘´o J ‘´oL ‘´o>3Ÿ>T‘´o[‰‘´oŽª‘´o¯Ð‘´o™ã0Ÿã:vÐo:´‘ÀoÖÑ‘Ào<‘ÀoY0ŸYŠ‘Ào·é‘Àoé 0Ÿ  ‘Ào J ‘ÀoL ‰‘ÀoŽª‘Ào¯Õ‘Ào ™µvðoŸµã^ã¤T¥vØo;NTNÑ‘ÈoSŠ‘Èo·é‘Èoé ‘àoŸ  ‘Èo J ‘ÈoL >‘Èo>ITT‰‘ÈoŽª‘Èo¯Ð‘Èoã_ò_;_Ÿ~Ÿp_<S_SŸÁ~ŸÁŠ_·é_ # _z ® _± » _» ^>_T[_ ™¼v€sŸ¼ã]ã¤R¤Úv¸oßv¸o;NRNÑ‘¨oSŠ‘¨o·E‘¨oEbUb鑨oé ‘ðrŸ  ‘¨o J ‘¨oL >‘¨o>IRT‰‘¨oŽª‘¨o¯Ð‘¨oòû v¸o}"8Ÿû]_{Pú}xŸ]}xŸ$] <]S]Á}xŸðû}Ÿû]Š·]E~] # P™ãÈŸãvÈo0P07vÈo1$Ÿ7?Q?:vÈo:;‘¸o;NUNÑ‘¸oSŠ‘¸o·é‘¸oé ÈŸ  ‘¸o J ‘¸oL >‘¸o>EUE‰‘¸oŽª‘¸o¯Õ‘¸o~…T“…ˆ 1s`Á"”ÿ $ &3$t"“ˆ· 1s`Á"”ÿ $ &3$}"“·Ñ‘ o“ÑÑP“Ñ<‘ o“Š·‘ o“ . 1s`Á"”ÿ $ &3$}"“. C !ts`Á"”ÿ $ &3$}"“C  ‘ o“# . ‘ o“. 3 P“3 N ‘ o“N S P“S u ‘ o“u z P“® ë ‘ o“ë ð P“ð  ‘ o“  P“ ; ‘ o“; @ P“@ t ‘ o“t y P“y Í ‘ o“Í Ò P“Ò _ ‘ o“_ d P“d { ‘ o“{ € P“€ Ž ‘ o“Ž “ P““ £ ‘ o“£ ¨ P“¨ Õ ‘ o“Õ Ú P“Ú  ‘ o“ J ‘ o“L c ‘ o“h ‘ o“ ” P“” ¬ ‘ o“¬ ± P“[‰‘ o“Žª‘ o“¯Ð‘ o“Z·s`Á"”ÿŸ·Ñ~ $ &`Á"”ÿŸ Y s`Á"”ÿŸY  ~ $ &`Á"”ÿŸ# z ~ $ &`Á"”ÿŸ® G ~ $ &`Á"”ÿŸy  ~ $ &`Á"”ÿŸ* ± ~ $ &`Á"”ÿŸ[Ð~ $ &`Á"”ÿŸ ]>T]7¤T“p 📤P¤ºvØoºÌ ~ øvØo"ŸÌÓ ~ øvØo"ŸÓÞUÞßv¸oßvÈo3$# øv¸o"ŸE~‘¸o3$# ø‘¨o"ŸºÈ~ŸÈÐPÐ ~ Ÿ  vÈo1$#ŸEp~ Ÿp~ ‘¸o1$#Ÿß vÈo3$#ŸE~ ‘¸o3$#ŸE~ ‹¶ŸLdpdhUî õ Põ  SmŽS+ L SޝSæ í Pí % S¯ÐSVu ¨¶Ÿ]ppptUSx ȱŸ_wsÁò¾nœs,Y ͶŸ3KpÖú ȱŸÝù~ò¾n~E »¶Ÿ'?p~¤ ȱŸ‡ŸpŸ£U¹Òò¾nÀÌpé e¶Ÿ÷ p ) rÿŸ)  ~ÿŸY ^ P^ S ž ]ž ­ }Ÿ­ Ç ] ) rÿ1$ Â"” ÿÿŸ)  ~ÿ1$ Â"” ÿÿŸ D 0¹Ÿ: ? p? C U ­ ȱŸ“ ¨ p¨ ¬ UÇ ö ·Ÿì ñ pñ õ Uz ® ñ¶Ÿ˜ ¤ p¤ ¨ UÔ ø ȱŸÛ ÷ s ò¾n s> :·Ÿ 8pUeSejs~Ÿj}ST9\9‡óTŸ(0vPj K¶ŸPivo~v¹U¹ÃSÃÇTÇÈóUŸÈìSìðTðñóUŸ¬T¬³Q³ÈóTŸÈÕTÕÜQÜñóTŸñúŸ§È O¶Ÿ§¹U¹ÃSÃÇTÇÈóUŸºÈò~oãñò~oºÃSÃÇTÇÈóUŸãìSìðTðñóUŸÈìSìðTðñóUŸUKVKNóUŸNQUTJSJNóTŸNQTTJSJNóTŸUKVKNóUŸ'+P+M\°ÉUÉ]óUŸ°ÉTÉ^óTŸ°ÉQÉ V óQŸæîPî Sæï]æîPîïSææòIææPïòRïSV^S`kUk«V«¬óUŸ`yTyªSª¬óTŸƒP¤R ¤Q¤¥ s $ &Ÿ ¥V ¤Rƒ ò}ƒP R!U!BVBEóT#EYVY_U_`óUŸ.T.ASAEóTŸEXSX`óTŸ.Q.D\DEóQŸE[\[`óQŸð U vVv{óUŸ{Vð8T8Y\YY0Ÿ{ \PgUgÑSÑÓóUŸÓîSPTÒVÒÓóTŸÓÜTÜîVPUŸóUŸŸ®U®D\DIóUŸPTŸóTŸŸ¿T¿DVDIóTŸPQ–S–ŸPŸ»Q»DSDHPHISUHóUŸT&S&'óTŸ'GSGHóTŸ&s&'óT'<s€“U“ S TóUŸxSxƒuŸƒ„óUŸ„ÔSÔåóUŸåˆSˆ’óUŸ’SUóUŸ¬S“U“·S··qŸ·ÃqŸÃÏqŸÏÜqŸÜèq Ÿèôq Ÿôþq Ÿ(S(DTDDSDhsŸhhShtsŸtƒUƒ„óU#Ÿ„S°T°°sŸ°¸sŸ¸ÁTáìsŸìU#U#+tŸ+-T-3U37T7Ù^åëUëëTëtŸtŸ tŸ 0tŸ0JtŸJNTN’\’›U©±T±ÏRÏèTèRT4R44T4@sŸ@aTaisŸiŠTŠ sŸ ÇQÇ T sŸ2T2:sŸ:[T[csŸc„T„ŒsŸŒ­T­µsŸµÖTÖÞs ŸÞÿTQqŸ?Q?OqŸO_qŸ_oqŸoqŸŒqŸš¬Q¬ÍRÍ Q TtŸ.tŸ.>tŸ>KtŸKYTYyRyytŸy‰t Ÿ‰™t Ÿ™§t Ÿ§¬T› V tp"ŸyVyƒup"1Ÿ„ÞVåVup"Ÿ¬V·þsŸ(DTDhsŸ°T°ÁsŸáìsŸ44T4@sŸ@aTaisŸi®T®ÇsŸØÿsŸ sŸYysŸ›·U··R·ÃqÃÓqÓÜRÜèq èôq ôþq $U$(s(LULhQhtUtxsxƒu„ŒUŒs°U°ÄQáïQQ'-Qëtt t 4t4JQ±¾Q¾ÇrÏètèþQþrQ4r4@U@eQeitiŽQŽt“Q“±RÇØtØäQäètè Q t6Q6:t:_Q_ctcˆQˆŒtŒ±Q±µtµÚQÚÞtÞÿQR#?q?OqO_q_oqoƒqƒšR°ÁQÁÍrÑíqñ q Q.t.BtBkQkyryyQy‰t ‰™t ™§t §¬tSZPZÙ\ÙÙ0ŸÔØPØÙSSZQZ[}ŸSZTZ[SSZPZ[\[²ò4œ[²\²¼ Û±Ÿ²¼UlpPp]’0ŸˆŒPŒ’SlpQpq~ŸlpTpqSlpPpq]ÀòUòSmóUŸmvUÀòTòjVjmóTŸmvTSWPWm‘\$8P9KPPX\Xm0Ÿ#P#`S`m0Ÿ&U&8óUŸ8nUn‰óUŸ‰õUõ óUŸ aUacu~ŸcŠUŠ‘qŸ‘¡u}Ÿ¡U uŸ  U $óUŸ$’U’ÞóUŸÞœUœùóUŸù> U> C u}ŸC ` U` e u|Ÿe d Ud { rŸ{ U&T&8óTŸ8aTaÞóTŸÞöTö*óTŸ*¢T¢"óTŸ"ûTûùóTŸùe Te u óTŸu Ñ TÑ 9 óTŸ9 { T{ ƒ óTŸƒ   T  » óTŸ» Ô TÔ óTŸU&QdjuŸrrUr‰uŸ‰˜U˜´R´ÄQÄÕqŸÕßqŸççQçùqŸþU R 4rŸ4FrŸFFUFjuŸjquŸ||U|ŠuŸŠ¡uŸ¡¡U¡ÑuŸÑÑUÑñuŸõõUõ uŸ  U uŸ,uŸ,,U,SuŸS]uŸccUc‘uŸ‘‘U‘¬uŸ¬¾uŸ¾¾U¾ÊuŸÊÜuŸÜèUèQuŸ(U(CQCPUPnQnxqŸx‚uŸŠŠUŠ¡uŸ¡¡U¡¼uŸ¼ÎuŸÎÎUÎçuŸççUçuŸ .uŸ.@uŸ@XRXtQt…R…•uŸ•®Q®ÅqŸÅçQçÿuŸÿ uŸ  U $uŸ$0Q0LqŸLXUXauŸaŸQ«öQö T *Q**uŸ*BuŸBIRIIuŸIZuŸZluŸlquŸqŠuŸŠŠuŸŠ¢uŸ¢®R®®Q®ÐqŸÐØQØùRùùQùqŸ"Q",R,JQJJuŸJbuŸbbuŸbtuŸttQtqŸšuŸš¸Q¸ÎuŸÎQ$qŸ$xRxxQx€qŸ€œQœµqŸµÐqŸÐ& Q& : uŸR \ uŸe u Ru u uŸu | uŸ| } qŸ} qŸ uŸ ¥ uŸ¥ ª Qª ª rŸª Æ rŸÆ Æ uŸÆ Ñ uŸÑ Ù TÙ á Qá ø qŸø  qŸ  qŸ " qŸ" 2 qŸ2 [ qŸ[ } Q} qŸ — qŸ— § qŸ§ · qŸ· Á qŸÁ Ñ qŸÑ é qŸé " R" 9 rŸ9 9 qŸ9 R uŸR \ uŸd d Ud { uŸ{ ƒ Rƒ ‹ uŸ‹   Q  » T» » uŸ» Æ uŸÆ Æ rŸÆ Ô uŸÔ Ü TÜ ê Qê R 0 rŸ0 G rŸG j rŸj ‚ rŸ‚ ‹ T‹ ¡ Q¡ ¯ qŸ¯ ¼ qŸ¼ Ä TÄ Ä qŸÄ Ø qŸØ Ø qŸØ é qŸé é qŸé ó q Ÿó  q Ÿ  q Ÿ  q Ÿ - q Ÿ- A qŸA y Ry rŸ ƒ Rƒ ƒ qŸƒ ” qŸ” ” R” « rŸ« ¯ R¯ É rŸÉ É qŸÉ Ù qŸÙ þ qŸþ qŸrŸ#R##qŸ#-q Ÿ-Dq ŸDTq ŸT^q Ÿ^nq Ÿn‚qŸ‚™R™¡rŸ¡ÆRÆÝrŸÝR&ut"Ÿ&8óUóT"Ÿ8nut"Ÿn‰óUt"Ÿ‰õut"Ÿõ óUt"Ÿ aut"Ÿacut"2ŸcŠut"ŸŠ‘qt"1Ÿ‘¡ut"3Ÿ¡ut"Ÿ ut"1Ÿ  ut"Ÿ $óUt"Ÿ$aut"Ÿa’uóT"Ÿ’ÞóUóT"ŸÞöut"Ÿö*uóT"Ÿ*¢ut"Ÿ¢"uóT"Ÿ"ûut"ŸûœuóT"ŸœùóUóT"Ÿù> ut"Ÿ> C ut"3ŸC ` ut"Ÿ` e ut"4Ÿe u uóT"Ÿu Ñ ut"ŸÑ 9 uóT"Ÿ9 d ut"Ÿd { rt"1Ÿ{ ƒ uóT"Ÿƒ   ut"Ÿ  » uóT"Ÿ» Ô ut"ŸÔ uóT"Ÿ˜ÄRFRFquŸ|¡uŸ¡ÑuŸÑñuŸ ,uŸ,]uŸc‘uŸ‘¾uŸ¾ÜuŸèQuŸ(CQP‘Q‘¡u~Ÿ¡ÎuŸçuŸ @uŸ@PRt…R…•uŸ•®Qç uŸ$0QXauŸÞèQè uŸ*BuŸBIRI¢uŸ"0R0JqŸJtuŸtšQ¸¼Q¼ÓuŸÓÛQÛûuŸu | uŸ| } Q ª uŸª Æ RÆ á uŸ9 R QR { Rƒ Æ uŸÆ Ô RÔ ê uŸu&Rdjur‰u‰˜u˜´Q´ÄPÄÕqÕßqçùqþu$Q$4P4FuFTuTjPjqu||u|ŠuŠ¡u¡¬u¬ÌPÌÑuÑÜuÜñQõ u  u u,u,4u4SQS]uclulŒPŒ‘u‘œuœ¬P¬¾u¾¾u¾ÊuÊÜuÜèuèPu(u(CqCPuPnPnxux‚uŠ¡u¡¬u¬¼P¼ÎuÎÎuÎçuçôuôQ .Q.@u@PQXnPt…Q…®P²çRçùPùÿuÿ u $u$EPELqLXuXaQo¦P«³P³ÊqÎÞqÞêPêíRíòPüÿQÿP**P*BuBIQIIPIZuZlulquqqPqŠuŠŠPŠ¢u¢«Q´ÐPØôPôùr"R",Q0JRJJPJbubbQbtut‰P‰ušu¸¼q¼¾u¾ÁQÁÛPÛûRPq(P(RQYsPsxr|…P…RœP ÝRí R! & R& : uC R uR \ ue h Ph u ru u uu | u| } u} } P} q • P• ˜ Q˜ ¿ P¿ Æ uÆ Æ uÆ Ñ uÙ á Pá ø qø  q  q " q" 6 q6 m R} q — q— § q§ · q· Á qÁ Ñ qÑ é qé " P" 9 r9 9 P9 R uR \ ud { u{ ~ Q~ ƒ rƒ ‡ P‡ ‹ q0Ÿ‹ ˜ P˜ œ Rœ   q  » R» » u» Æ uÆ Æ PÆ Ô uÔ Ø RØ Ü tÜ ê Rñ  P r P 0 r0 K rK j Qj ‚ r‚ ‹ tŒ ¯ R¯ ¼ q¼ Ä tÄ Ä qÄ Ø qØ Ø RØ é qé é qé ó q ó  q   q   q  - q - E qE \ Q} ƒ Qƒ ƒ qƒ ” q” « r¯ É rÉ É qÉ Ý qÝ þ Tþ qr##q#-q -Dq DTq T^q ^nq n†q†™Q¤QÁÆQÆÝrèrPUP”S”˜óUŸ˜»S»¿óUŸLTL—\—˜óTŸ˜¾\¾¿óTŸX ²ŸXXPXVƒUƒ•V˜¤U¤¼VÐøUøySyzóUŸz´S´µóUŸµ¹U´Áu ” u ð/U/IóUŸðT \ !q3$p"!H\HIóTŸÿS!ESV!qŸ!FV °U°ÊSÊåóUŸÊäSPcUc{V{|óUŸmqPqzSz|Px€P€…u …ŒPŒ‘u HPPPTu U\P\`u PwUw&óUŸP‚T‚&óTŸTUu ^àVá&VozPz–QšÄQÄÈqŸÈÚQáôQ&0Ÿz‚R‚–TáðTðôs´U´óUŸ°T°×]רóTŸØ]ÁQÁÕ\ÕØóQŸØðQð\¨ÒSØS¬ÓVØV 0U0cScŒóUŸc‹S 4U4KVKNóUŸ 4T4M\MNóTŸ>EPEJSJNP ³U³Þ\ÞßóUŸß\³¾U¾ÐSÐÐUÐÛSÛßUßóSóÿUÿsŸ¾ÜVßìVìïQïvŸVøÿuŸÿSøÿUÿsŸÐöUö`S`hóUŸÐúTúe]ehóTŸÐúQúaVahóQŸÐúRúg^ghóRŸFSVFRTRS]FRs #p€U€—V—UžóUŸpˆTˆ“S“TžóTŸpˆQˆ™\™RžóQŸ0KUK•\•šóUŸ0KTK“V“šóTŸ0KQK—]—šóQŸW[P[’S’šPu‚Vu‚\us # ³U³ÁSÁÆUÆÇóUŸ ³T³ÂVÂÆQÆÇóTŸ"(P!P!'S'(p àæP½ÑPÑåSåæp ‹‘P]qPqS‘p ÀÌUÌõSõùUùúóUŸ U 4S45p5P` Š UŠ À VÉ Ø UØ ë Vì U` Š TŠ À SÉ Ø TØ ê Sì TŠ ¤ 1Ÿ¤ À Q0 S US X óUŸ0 N TN W XW X óTŸ U ! S! " óUŸp U ¿ S¿ Á óUŸÁ ò Sp T ¬ V¬ Á óTŸÁ Ô TÔ ð Vð ò óTŸt ¬ 0Ÿ¬ ¬ P¬ À VÀ Á PÁ ð 0Ÿð ò Pt ‘ 0Ÿ‘ ¨ PÁ Õ 0ŸÕ ì Pð U @ S@ B óUŸB l Sô- 0Ÿ- - P- A VA B PB j 0Ÿj l Pô 0Ÿ ) PB M 0ŸM f P0yUy¨S¨¬óUŸNTtpŸT]\]^tuÀŸj«\AHuøtŸH[V[^Pj©V©¬Ps~Vs}Ts}PPƒUƒûSûóUŸ3SPqTqªVªóTŸ3VPhQhþ\þóQŸ3\ÐùUùþóUŸþUU'V'-U-.óUŸT#S#-T-.óTŸQ)\)-R-.óQŸ€žUžÜVÜáóUŸáùVùþóUŸ€žTžÂSÂþp€žQžà]àáóQŸáý]ýþóQŸ€žRžÞ\Þápáï\ïþóRŸ 5U5cScgóUŸg|S|€óUŸ 5T5f\fgpg\€p 5Q5dVdgpgwVw€óQŸ€USUóUŸÐßUßCSCDóUŸàñUñýóUŸýUàõTõöóTŸöý0ŸýýTý0ŸàõQõýóQŸýQ «U«ÃóUŸ ¶T¶·óTŸ·ÃT ¶Q¶·óQŸ·ÃQ@XUXsóUŸs…U…˜w@XTXsóTŸs…Q…˜‘hDc0Ÿcf s $ &ŸfjTjr s $ &Ÿrs p $ &Ÿs˜0ŸÌÐPÐASABP ±U±SóUŸ,S(U([S[]óUŸ]ªSª¬óUŸU`\`aóUŸaw\wxóUŸx\DTDaóTŸaT!Q!)Q)9óQvŸaƒQƒóQŸRMVMaóRŸauVuxPxVQRaRG0ŸGVSam0Ÿx0ŸGVSGQTGM|v"ŸMV|óR"Ÿ ¯U¯ÒVÒÓóUŸ ¿T¿ÓóTŸ ¤Q¤¨qrŸ¨ÃQÃÑóQsŸÑÓóQóRŸ ºRºÑSÑÓóRŸ¤Ä0ŸÄÓP¤¥t¤¨qrŸ¨ÃQÃÄóQsŸ¤Ä1Ÿ¤¯ur"Ÿ¯ÃUÃÄvs"Ÿ`lUl’V’“óUŸ`uTu‘S‘“óTŸ~‹P~ŒS~ŒV~‹PUUV$T$U\%H ÜŸ7Gs@[U[qSqróUŸU2R24rŸ4DR>P>C r”8$8&Ÿ!0Ÿ!.Q4CQÀéUé` S` j óUŸj S ‘ UÀéTéc \c j óTŸj \ ‘ TÀéQéa Va j óQŸj V ‘ Q 4 _4 ? wH i _j j _j w w _é 0Ÿ Q ]j j ]j w _w ]' H _y _ + Pj y PÄé0Ÿég ^j ^ ‘ 0Ÿ  À UÀ É SÉ Ë óUŸ  ± T± À QÀ Ë óTŸ¼ Ê VÊ Ë óU# ðU`^`aóUŸa—^—˜óUŸ˜·^·¸óUŸðT\\\aóTŸa“\“˜óTŸ˜³\³¸óTŸð Q ^]^aóQŸa•]•˜óQŸ˜µ]µ¸óQŸðRZVZaóRŸa‘V‘˜óRŸ˜©V©¸óRŸp~”Ÿ!WSaS˜¦S¦¨q3$p"¨±q3$~"ÀÝUÝU]UXóUŸXŽ]Ž‘óUŸ‘Ñ]ÑÔóUŸÔé]ÀßTßQVQXóTŸXŠVŠ‘óTŸ‘ÍVÍÔóTŸÔéVÀÚQÚS\SXóQŸXŒ\Œ‘óQŸ‘Ï\ÏÔóQŸÔé\àæp}”Ÿœ¤søKSX‰S‘ÇSÔéS »U»z]z}óUŸ}¤]¤§óUŸ§À]ÀàPàvV}’V’žP§ÀVpS}’S FPPbPbp‘Hö 0Ÿ¶ S’ŸS¬ÀS-U-wSwóUŸœS/T/xVxóTŸœV'Q'z\zóQŸœ\69P9~^œ^69prŸ9K~rŸK|]Ž~rŸšœQUPÐóUóˆ_ˆ‰óUŸ‰Ù_ÙÚóUŸÚ_ÐõTõ‚\‚‰óTŸ‰Ó\ÓÚóTŸÚ\ÐðQð†^†‰óQŸ‰×^×ÚóQŸÚ^þP€V‰ÑVÚVþprŸ+vrŸïv”ŸS‰”SªÆPÆË}-U-»^»¼óUŸ¼Ê^ÊËóUŸ/T/·\·¼óTŸ¼Æ\ÆËóTŸ*Q*¹]¹¼óQŸ¼È]ÈËóQŸ48P8µV¼ÄV48p~”Ÿ8[v~”Ÿ@´S¼¼S ¸U¸ÿ\ÿUóUŸÇØUÙæSæðUÔæS¤¸0Ÿ¸ðV€U“T“”óUŸ@OUOSTSTóUŸUóUŸ`®U®à\àãóUŸãU`©T©â]ãTÁÐPÐÝSÝãPd©TãTd‚0Ÿ‚©PãôPô0Ÿd‚8Ÿ‚ŸQãôQô8ŸôR$T$-R$TÕÞPÞ=\=?}Õé0ŸA^B_^Ä6S6:v psŸ r”sŸ…ÄRB_R…š0ŸšÄPBPPP_0Ÿ…š8Ÿš»QBPQP_8Ÿ0/R/UR/T/TT/U/óUŸU/o/To/p/óUŸðøUøùóUŸUŽSŽóUŸöS 6Q68p8HQHLpTdP€…q¡¬Q¬°p°ºqÕãPp/–/U–/—/óUŸ—/§/U§/¶/óUŸ¶/Ç/UÇ/Ö/óUŸÖ/è/Uè/é/óUŸp/–/T–/—/óTŸ—/«/T«/¶/óTŸ¶/Ë/TË/Ö/óTŸÖ/è/Tè/é/óTŸ/U/û‘ø~û óUŸ ·‘ø~·‡óUŸ‡‘ø~óUŸ†‘ø~†.óUŸ.Z‘ø~ZøóUŸø ‘ø~  U  ‘ø~ \ óUŸ\ ‘ø~ ¡ óUŸ¡ ‘ø~§óUŸ§Z‘ø~ZlóUŸl ‘ø~ óUŸå‘ø~åêóUŸêE‘ø~E–óUŸ–±‘ø~±ÂóUŸÂ‘ø~›óUŸ›h‘ø~h‰óUŸ‰š‘ø~šóUŸ?‘ø~?bóUŸbs‘ø~s¡ óUŸ¡ Z!‘ø~Z! #óUŸ #î#‘ø~î#P$óUŸP$p$‘ø~p$y$óUŸy$¤%‘ø~¤%(óUŸ(:)‘ø~:)É)óUŸÉ)ø)‘ø~ø)Ž*óUŸŽ*Ô*‘ø~Ô*+óUŸ+",‘ø~",<,óUŸ<,h,‘ø~h,Â,óUŸÂ,-‘ø~-/óUŸ/T/û_û óTŸ †_†.].¿_¿øóTŸø _  T S_S©]©1_1U]U”_”óTŸ`_`ê]ê)_)¥]¥¶_¶E]EW_W–óTŸ–±]±Ù_Ùö]ö¬_¬â]â!_!H]HW_Wh]hš_š?]?¡ _¡ ¸ ]¸ !_!4!]4!"_"#]#7&_7&h&]h&0'_0'l']l'(_(((]((š(_š(•)]•)s*_s*Ž*]Ž*¨*_¨*",]",/,_/,h,]h,Â,_Â,g-]g-£-_£-á-]á-*._*./]>î_ †_†.].¿_¿øóTŸø _ S_S©]©1_1U]U”_”óTŸ`_`ê]ê)_)¥]¥¶_¶E]EW_W–óTŸ–±]±Ù_Ùö]ö¬_¬â]â!_!H]HW_Wh]hš_š?]?¡ _¡ ¸ ]¸ !_!4!]4!"_"#]#7&_7&h&]h&0'_0'l']l'(_(((]((š(_š(•)]•)s*_s*Ž*]Ž*¨*_¨*",]",/,_/,h,]h,Â,_Â,g-]g-£-_£-á-]á-*._*./]>î‘ø~ ·‘ø~‡‘ø~†‘ø~.Z‘ø~ø ‘ø~\ ‘ø~¡ ‘ø~§Z‘ø~l ‘ø~呸~êE‘ø~–±‘ø~‘ø~›h‘ø~‰š‘ø~?‘ø~bs‘ø~¡ Z!‘ø~ #î#‘ø~P$p$‘ø~y$¤%‘ø~(:)‘ø~É)ø)‘ø~Ž*Ô*‘ø~+",‘ø~<,h,‘ø~Â,-‘ø~R›\®î\ ·\‡€\}\.Z\øH \Š ¢ \ ! \% * pДŸ* w \¹ \\ \É é 0Ÿ \§[\©ÿ\ÿ 0Ÿ   ÿŸ 1\U \9\9`0Ÿê)\¥¶\ÂÙ\ö\›¬\‰š\bs\¸ !\4!Z!\ #î#\P$p$0Ÿy$¤%\(š(\É)ø)\Ž*¨*0Ÿ`oPo›]Öî] z]z‹P˜p]‡]f].Z]ø ] ü ]ý ]¡ É ]É é Pé = ]™ ]]·]É]§ ]©ÿ] 1]U”]9])]¥¶]ö]›¬]bs]4!HP¯)¶)P9=P=›\Þ'(\¯)¼)\h&q&0Ÿq&}& ÿŸ}&ž&]((0Ÿ((pqŸD#Š#0Ÿh& &0Ÿ &Ì&]í&ü&]((0Ÿ*s*]…&š&PH#Š#]h&y&]((]­&±&Pí&ð&Pð&ü&pŸ* *0Ÿ0*6*xsŸ6*Y*rsŸY*i* ‘”sŸi*n*xsŸ`†1Ÿ†.‘€šK‘€P†‘€­‘€²ý‘€"#‘€7&h&‘€0'l'‘€(((‘€:)‡)‘€Œ)•)‘€s*Ž*‘€Ô*+‘€/,<,‘€-^-‘€£-á-‘€*.v.‘€{./‘€`†0Ÿ†.Sš4S4P^PjSj^S"#S7&h&S0'l'S(((S:)•)Ss*Ž*SÔ*+S/,<,S-K-SK-N-sŸN-g-^£-á-S*.c.Sc.f.sŸf.{.^{.¥.S¥.».Y».Þ.QÞ.î.‘˜î./S//Y`†dŸ†.\š\"±"\##\7&h&\0'J'\:)•)\s*Ž*\Ô*+\/,<,\-g-\£-á-\*.Ë.\Ë.Ú.|€xŸÚ./\ƒ†P†.VšV"#V7&h&V0'E'VE'J'PJ'l'V(((V:)•)Vs*Ž*VÔ*+V/,<,V-g-V£-¸-V¸-º-Pº-Ï-VÏ-Ô-PÔ-á-V*.ì.Vì.î.Pî./V//P//VŸÐQÐèPš°Q°ÙÙÞpÞáPáý}èýpP}èP\“›¥²¶ÚòQòõõp"¦"Q7&;&Q;&F&c&h&PŒ))PÔ*Ø*Pê*ÿ*}è--}èŽ.0Ÿš¨0Ÿ¨1ŸP1Ÿ"#0Ÿ7&h&0ŸJ'l'0Ÿ(((0Ÿ:)•)0Ÿs*Ž*0ŸÔ*+0Ÿ/,<,0Ÿ-g-1Ÿ£-á-1Ÿ*./0Ÿ:)C)0ŸC)O) ÿŸO)Œ)^s*‰*0Ÿ‰*Ž*pqŸ*.-.^è.0Ÿ:)Œ)0Ÿs*Ž*0Ÿ*./.0Ÿ/.Z.^ˆ.î.^//^W)l)Pì.^:)K)^s*z*^<.@.Pˆ.‹.P‹.—.pŸµ.».ysŸ».Þ.qsŸÞ.î. ‘˜”sŸ/ /ysŸ¶"À"P("(P±"µ"Pµ"#\J'l'\(((\aŠ_º-Ô-_>-E-PE-b-_£-º-_-5-P5-^-‘ˆ£-º-‘ˆFZ0ŸZÆVÆø^ \ V ¡ VYVYivŸq†V†ŒvŸŒ¢]¢§V Vo”V”^E–V?bVÕ%&V&7&vŸ((B(VFZdŸZ«^ \ ^ ¡ ^§^ ^ow^w~€xŸ”^EW^?F^FM~€xŸMb^Õ%7&^((B(^ZÁ\ÁÆSÆø\ \ \ ¡ \§\ \o\”P”\EW\W–S?]\]bPÕ%7&\((=(\=(B(PrŒP @ P@ \ tt p P+è+/p/<P<Hèqyt¢§t Pq.p.4P48q8CpCC ŸCQpQm Ÿm|P|qÕ%æ%èbø0Ÿ \ 0Ÿ ¡ 0Ÿ§0Ÿ 0Ÿo0ŸE–0Ÿ?b0ŸÕ%7&0Ÿ((B(0Ÿ¿ëPëø_”£P£_W_P_–_ÆÝVÝáSáøV”íV¿ø]”Ÿ]Ÿ|~"ŸW–]ÙáÙáRííQííTííPz‚z‚RŽ‘ v $ &Ÿ‘–QŽ–TŽ–P}†Q?TQTb‘€ &&P&.&‘€((B(‘€ë%&P&.&‘ˆ((B(‘ˆ¹ ]0Ÿ [0Ÿ[¸^¸Ó\Ó©^1U^`o^o‘\‘Ý^ÝðVðê^)¥^¶ý^ý \ E^–±^Ùö^¬é^éé\é^!\!Q^QhR?^¡ ¸ ^!4!^š(:)^¨*Ô*^+-+^-+Å+SÅ+,V,",^<,],^],h,SÂ,ä,Sä,-^¹ ]dŸ [dŸ[Z‘ˆl©‘ˆ1@‘ˆELTLU‘ˆ`呈)¥‘ˆ¶E‘ˆ–±‘ˆÙᑈæíTíö‘ˆ¬é‘ˆé!V!)‘ˆ6:T:H‘ˆH[V[h‘ˆ?‘ˆ¡ ¸ ‘ˆ!!‘ˆ$!+!T+!4!‘ˆš(:)‘ˆ¨*Ô*‘ˆ+-+‘ˆ,",‘ˆ<,],‘ˆä,ä,‘ˆä,ó, ‘ˆ”#€Ÿó,ú,Tú,- ‘ˆ”#€ŸÏ Ó PÓ ]‘ F‘[©_1P_PUP`ê_)¥_¶E_–±_Ùñ_ñöP¬Ó_ÓP!P!C_ChP?_¡ ¸ _!/!_/!4!Pš(:)_¨*Ô*_++_+,‘,",_<,],_],h,‘Â,-‘--PÏ 0Ÿ ]‘˜ Z‘˜l©‘˜1U‘˜`员)¥‘˜¶E‘˜–±‘˜Ùö‘˜¬h‘˜?‘˜¡ ¸ ‘˜!4!‘˜š(:)‘˜¨*Ô*‘˜+",‘˜<,h,‘˜Â,-‘˜Ï 0Ÿ ]‘€ ‘€(‘€-Z‘€l©‘€1U‘€`å‘€)¥‘€¶E‘€–±‘€Ùö‘€¬h‘€?‘€¡ ¸ ‘€!4!‘€š(:)‘€¨*Ô*‘€+",‘€<,h,‘€Â,-‘€Ï ]0Ÿ [0Ÿ[ ‘l©‘1U‘`=‘P‘!PU¥‘¶E‘–¤‘Ùö‘¬½‘?‘¡ ¸ ‘!4!‘š(£(‘++‘Ï  ÿŸ [‘ []P Z‘ l©‘ 1U‘ `‘ 0T0å‘ )¥‘ ¶E‘ –±‘ Ùö‘ ¬h‘ ?‘ ¡ ¸ ‘ !4!‘ š(:)‘ ¨*Ô*‘ +",‘ <,h,‘ Â,-‘ Ï ]S MSèùP`oPÎÛPÛT‘¨TYPY周–šP𱑍ÙíP½h‘¨?‘¨š(:)‘¨¨*Ô*‘¨,",‘¨<,],‘¨Ô ] ÿŸ [ ÿŸÜöpö<P P2?Pš(ž(Pp˜vœ¦pÓÜvÜãvvp7OP•¤vlxv€…P…ŒvŒv•vU]p]cqltPy}Pœp¶ºqº¾}èÂØT05q¡ © T© ¸ qc0Ÿ¦1ŸÓ©0Ÿ`ê0Ÿ)U0ŸUl1Ÿl¥0Ÿ¶E1Ÿ–±0ŸÙö0Ÿ¬h0Ÿ?0Ÿ¡ ¸ 1Ÿ!!0Ÿ!4!1Ÿš(:)0Ÿ¨*Ô*0Ÿ+,1Ÿ,",0Ÿ<,],0Ÿ],h,1ŸÂ,-1Ÿ‚”U”«\«ÝU½éU!1USSVS•0Ÿ‘½0Ÿ½å‘¸–±‘¸½h‘¸?‘¸š(:)‘¸¨*Ô*‘¸,",‘¸<,],‘¸S•0Ÿ‘†0Ÿ†ÓV–±0Ÿ½ÚVÚ!‘Hh‘?0Ÿš(:)0Ÿ¨*Ô*0ŸS•0Ÿ‘~0Ÿ–±0Ÿ?0Ÿš(:)0Ÿ¨*Ô*0ŸS•0Ÿ‘=0Ÿ=Y1ŸY†P–±0Ÿ?0Ÿš(:)0Ÿ¨*Ô*0ŸS•V‘0V–ªVV ?Vš(¶(VÜöP02P0<T™ P ¨pŸ9OPO¸V,",V<,S,PS,],V¦¸S×ÚS½é0Ÿéû |‘¼”Ÿûÿ ‘¼” ~"Ÿÿ ~‘¼”Ÿ! |‘¼”ŸHQ ~‘¼”ŸQh r‘¼”Ÿ¶(Ì(PÌ(:)V¨*³*V³*Ê*PÊ*Ô*V#):)S´ÊPÊZV)4V4KPKUVRS_+u+Pu+,\],h,\Â,Ù,PÙ,ä,\Å+ú+SÜ ô Py$}$P}$$r‰$˜$P˜$¤$èÄ$à$Pà$ä$qè$ù$Qù$%p %%R%%p<%@%P@%H%rL%[%R^%h%Rq%t%Pt%%q%ˆ%RÏ !0Ÿy$¤%0Ÿ(š(0ŸîûS ‘³‘U³‘ë’óUŸ ‘·‘T·‘ë’óTŸà‘ä‘P䑿’Væ’ê’T t>tU>t¾uóUŸ tBtTBtÌt^Ìt¯uóTŸ¯u¾u^Htpt\u>u^’u¯u^]tbtVbt„tvŸ„t¤t]¤t³tvŸ¯u¾uvŸbtitv $ &3$p"Ÿitmtv $ &3$p"Ÿmt‘tP¯u½uPbtit|v $ &3$p8Ÿ¤tu]iu’u]Ìtu^iu’u^udu]’u¯u]ñtOuV’u¯uVudu]’u¯u]Buiu1ŸMt]tPÀwÞwUÞw>yóUŸÀwâwTâwSx^Sx/yóTŸ/y>y^èwx\˜xÅx^y/y^ýwxVx$xvŸ$xDx]DxxxvŸðxûxvŸ/y>yvŸx xv $ &3$p"Ÿ x xv $ &3$p"Ÿ x1xP/y=yPx x|v $ &3$p8ŸDxˆx]ðxy]Sx˜x^ðxy^ˆxëx]y/y]xxÖxVy/yV˜xëx]y/y]Éxðx1ŸíwýwPðrsUs»sóUŸðr sT sis]is¬sóTŸ¬s»s]s8sV(s-s^-sGs~ŸGsWs\Ws˜sV˜s«s~Ÿ¬s»s~Ÿ-s1s~ $ &3$p"Ÿ1s5s~ $ &3$p"Ÿ-s1sv~ $ &3$p8ŸWs[sp|"[scsp|"ismsPms~s]~s‚sP‚s©s]‹s¬s1Ÿs(sPÀîUîRóUŸÀòTò¾]¾ óTŸ 6 ]6 >óTŸ>M]MRóTŸø^V7vŸ7 \ >\>MvŸMR\v $ &3$p"Ÿv $ &3$p"Ÿ'ù^ù ‘ˆ 6 ^6 >‘ˆ>M^MR‘ˆ’hV Û V6 N Væ V’V¼ Ó VÓ × P× í V’TVT¼ ‘ð~ Û VÛ  ‘ð~6 N VS æ ‘ð~æ V’‘ð~’V>‘ð~X g PhlPl™ VÛ  Vl æ V’V>Ví¼ ]  ]6 >]-/P/¼ ‘è~  ‘è~6 >‘è~h _ _6 S _À  _æ _)L_’_7[_Õ÷_£¼ ^  ^6 >^çëXëa‘ð~ ¤ ‘ð~æ ‘ð~¢­‘ð~Øõ‘ð~*P*¼ w  w6 ØwØìPì>w—TV® Û V’¢VV¸×0Ÿ×7T7?tŸ?GT® Û T’¢T0Ÿ¸ÌPÌ×R×¼ ‘ð~®  ‘ð~S æ ‘ð~¢‘ð~P>‘ð~×öPöþrBPBGr® Û P’¢P—×0Ÿ×GQ® Æ QË Ö Q’Q0Ÿ—×0Ÿ××U×ê0ŸêU?0Ÿ?GU® Û 0Ÿ’¢0Ÿ0Ÿ¸ÌPÌ×R×þXþRGX® Û X’¢XPŸ­P­T‘€® Û ‘€’¢‘€‘€ P¼ _  _S À _ æ _)_L’_7_[Õ_÷>_q z Pq z Pà  1ŸMR1ŸýP Œ¾ŒU¾Œ>ŽóUŸ ŒÂŒTÂŒL^L/ŽóTŸ/Ž>Ž^ÈŒðŒ\‘¾^Ž/Ž^ÝŒâŒVâŒvŸ$]$3vŸ/Ž>ŽvŸâŒéŒv $ &3$p"ŸéŒíŒv $ &3$p"ŸíŒP/Ž=ŽPâŒéŒ|v $ &3$p8Ÿ$]éŽ]L‘^éŽ^ä]Ž/Ž]qÏVŽ/ŽV‘ä]Ž/Ž]Âé1ŸÍŒÝŒP >U>ž‘óUŸ BTB³^³‘óTŸ‘ž‘^Hp\ø%‘^r‘‘^]bVb„vŸ„¤]¤ØvŸP‘[‘vŸ‘ž‘vŸbiv $ &3$p"Ÿimv $ &3$p"Ÿm‘P‘‘Pbi|v $ &3$p8Ÿ¤è]P‘r‘]³ø^P‘r‘^èK‘]r‘‘]Ø6‘Vr‘‘VøK‘]r‘‘])‘P‘1ŸM]Pp‹ˆ‹Uˆ‹;ŒóUŸp‹Œ‹TŒ‹é‹]é‹,ŒóTŸ,Œ;Œ]’‹¸‹V¨‹­‹^­‹Ç‹~ŸÇ‹×‹\׋ŒVŒ+Œ~Ÿ,Œ;Œ~Ÿ­‹±‹~ $ &3$p"Ÿ±‹µ‹~ $ &3$p"Ÿ­‹±‹v~ $ &3$p8Ÿ×‹Û‹p|"Û‹ã‹p|"é‹í‹Pí‹þ‹]þ‹ŒPŒ)Œ] Œ,Œ1Ÿ—‹¨‹P`ŽUŽ2óUŸ`’T’2]2$óTŸ$9]9óTŸ-]-2óTŸ˜¾^®³V³×vŸ×\—\-vŸ-2\³·v $ &3$p"Ÿ·»v $ &3$p"ŸÇH^H$‘ˆ$>^>‘ˆ-^-2‘ˆ2];ü]>„]"6]àù]Ad]zÌ] ];]6MVMQPQgV2];ü]>„]"6]àù]Ad]zÌ] ];]`kPk»]ÆËPËÒ]ÀÏPaePe;VÏüV>"V—àVùV$zVÌV’”P”^‘è~>6‘è~—‘è~$‘è~ÒÔPÔ$‘€>6‘€—‘€ =_>6_—_$_H`^>6^—^$^ƒaV;ÏV"6VàùVzÌV¹ÅPÅ$‘ð~>6‘ð~—¦‘ð~¦¼P¼‘ð~P;]üï]„"]—à]ùA]d±]$z]Ì ];]]ïóPó`]±]8`0Ÿ`—_¸»]»ç_OYPY`‘¯»P¯¸PÝïPÝïPZ—1Ÿ-21Ÿ®P@ŽPŽUPŽ2]23óUŸ3]@Ž^ŽT^ޝŽS¯Ž²ŽóTŸ²Ž-S3SŸŽ«Žp«Ž¼Žp…p@ŒrŒUrŒ‘ŒóUŸ@ŒfŒTfŒrŒtrŒ‘ŒóTŸ°‰Ç‰Ulj™Š]™ŠšŠóUŸšŠh‹]Š•ŠVšŠh‹V=ŠEŠPEŠŠSŠšŠPšŠc‹Sc‹g‹Pg‹h‹S°zÓzUÓz£‰‘°°zÓzTÓzm]mvóTŸv£‰]°zÓzQÓz£‰‘¸åzçzPçzJVvù‚Vƒ£‰V'{ _vù‚_ƒ£‰_g{i{Pi{b‘˜w£‰‘˜¢{k\v£‰\Ý{o^v£‰^!|#|P#|£‰‘ R|–|Tv€T°…È…Tú† ‡T ‡#‡‘¨÷‡ˆTˆ$ˆ‘¨k€£€T¾þTì„2…TÁˆÓˆTÓˆðˆ‘¨!‰3‰T3‰;‰‘¨[R2…z…R;‰K‰RK‰p‰‘¨p‰›‰R›‰£‰‘¨@%‰%U‰%&^&.&óUŸ.&Û(^Û(þ(óUŸþ(“3^“3£3óUŸ£3Ó5^Ó5Ø5óUŸØ56^@%£%T£%»%\»%t&óTŸt&%'\%'9']9'P'óTŸP'T'TT'h'\h''*óTŸ'*±*\±*.óTŸ.E.\E.6óTŸ¸+»+pŸ»+Ç+QÇ+!,|Ÿ¡,;-‘˜Ã/›0‘˜:5b5‘˜¸+Ç+0ŸÇ+Û+SÛ+ë+sŸë+!,SÁ,Ë,0ŸË,×,\×,4-|Ÿ4-;-\š.«.0Ÿ«.Ç._ö/00Ÿ00P0m0_m0~0P~0™0Ÿ™0›00Ÿ›0Ç0\Ç0Ó0PÓ091\:5b50Ÿu%£%T£%»%\»%&].&t&]t&%'\%'P']P'T'TT'h'\h'Ù(]þ('*]'*±*\±*.].;.\;.ž2]£3H4]ý4Ó5]|%•%P•%£%~˜P'T'~˜‘% &S.&¨+S!,{,S[-Ã/S91:5Sb5Ó5SØ56S‘%&_.&Y&_t&5(_e(š(_þ(Œ)_*±*_N+u+_.E._™%£%R£%»%‘˜t&9'‘˜P'T'RT'h'‘˜'*`*‘˜e*x*‘˜}**‘˜•*±*‘˜.E.‘˜%£%P£%»%‘ t&9'‘ P'T'PT'h'‘ '*`*‘ e*x*‘ }**‘ •*±*‘ .E.‘ %»%0Ÿt&¶&0Ÿ¶&'P9'J'PP'h'0Ÿ'*±*P#.E.Py)})P})*\+/+\[-á-\b.‡.\Ý.2/\f/Ã/\£3À3\°)*_f/…/_x.Ý.1Ÿ£3ú31Ÿú340Ÿ‡.Ý.\Å34\š.Ý.PÅ3Ï3PÖ3Ú3PÚ34V~((P(þ(\N+z+\E.b.\2/f/\“3£3\£(Û(_E.b._2/`/_ã(þ(\“3ž3\ã(þ(P“33Pè(ô(Qô(ù(|ù(þ(qŸ“33QÇ+Ú+P,,PP,N-]Ã/91]:5b5]ö/0P091S:5E5PÞ/â/Pâ/ö/S.020P20Q0\00‘ F0I0PI0›0‘ æ0î0‘˜11P›0­0P­0Ó0‘ 1-1P4191Pò,ö,Pö,$-S- -P -;-_$-(-P(-;-SW1Y1PY1l2‘˜l2ˆ2\ˆ2£2|xŸç2ñ2Pñ2ø2pxŸ4H4‘˜ý4:5‘˜b5q5‘˜q55\5”5P”5¶5‘˜¶5»5P»5Ó5‘˜Ø5á5Pü2'3\H4x4\ß2ã2Pã2ü2\Ø5æ5\3'3Pl4|4P|4“4Q“4è4\ô5ý5\ý56Qô23]H4ã4]ô5ø5]ý56]W1ž2]4H4]ý4:5]b5Ó5]…1“3_4:5_b5Ó5_Ø56_2l2\”5Î5\Î5Ó5P¶&À&ò,¶&À&S'9' víŸ'9'S9'J'P9'P'S<*L* ·íŸ<*L*SL*e*ò(,L*e*Se*}* ÃíŸe*}*S}*•*ò2,}*•*S•*±* ¢íŸ•*±*S.#. ‚íŸ.#.S#.6.ò<,#.6.S@yZyUZy„yV„yyóUŸy9zV9zBzóUŸBz¯zV@yZyTZy¯zóTŸczfzpŸfztzQtz¯z~Ÿcztz0Ÿtzz]z­z}ŸzœzPÔy?z^äyìy0Ÿìyôy]ôy.z}Ÿ.z=z]zzPzAz_#z-zPpCùCUùC'H\'HWHUWHýI\ýIJóUŸJJUJÝK\ÝKëKUëKÊL\ÊLÓLUÓLÂN\ÂNÔNUÔNµa\pCüCTüC'HV'HWHTWHœIVœIJóTŸJJTJÝKVÝKþKTþKÊLVÊLÓLTÓLÂNVÂN×NT×N `V ``óTŸ`µaV£CtG0ŸtGxGPxG'H^'HWH0ŸWHJ^JëJ0ŸëJKPKÝK^ÝK.L0Ÿ.L6LP6LÊL^ÊLóM0ŸóM NP N¢N^¢N½N0Ÿ½NÂNPÂN\P0Ÿ\P`PP`PÐP^ÐP~Q0Ÿ~Q‚QP‚Q”Q^”QóQ0ŸóQRPRAS^ASlS0ŸlStSPtST^T2T0Ÿ2T7TP7TaT0ŸaTfTPfT{U^{UIV0ŸIVNVPNV~V0Ÿ~VÃV^ÃV6W0Ÿ6W>WP>W£W^£WÍW0ŸÍW1X^1XvX0ŸvXÏX^ÏX‡Y0Ÿ‡YŒYPŒYªY0ŸªYÅY^ÅY0Z0Ÿ0ZEZ^EZç[0Ÿç[M\^M\ ]0Ÿ ]¥]^¥] ^0Ÿ ^^P^?^]?^a^Pa^p^^p^‡^]‡^Í^0ŸÍ^Ò^PÒ^n_0Ÿn_s_Ps_ˆ_0Ÿˆ__P_Ð_0ŸÐ_`^`µa0Ÿ-J1JP1J„KwüRSwöLúLPúL¢N‘/Q3QP3Q~Q^-JóTŸ[>„>V„>y?óTŸy?¸?V¸?â?óTŸâ?@V@@@óTŸ@@i@Vi@AóTŸA‰AV‰AéAóTŸéAÃBVÃBüBóTŸüBNCVNCbCóTŸ¬6í60Ÿí6-7S77Ö70ŸÖ7Û7PÛ7ó90Ÿó9ø9Pø9â:0Ÿâ:ç:Pç:H;0ŸH;W;PW;Ô;SÔ;ù;0Ÿù;þ;Pþ;4<0Ÿ4<9<P9<u<Su<«<0Ÿ«<°<P°<Ù<0ŸÙ<è<Pè<=S=O=0ŸO=^=P^=[>S[>H?0ŸH?M?PM?³?0Ÿ³?¸?P¸?Î?0ŸÎ?â?Sâ?@0Ÿ@@@S@@ñ@0Ÿñ@ö@Pö@‰A0Ÿ‰AéASéAyB0ŸyB~BP~BÃB0ŸÃBÞBSÞB÷B0Ÿ÷BüBSüBNC0ŸNCbCSc7g7Pg7Û7_$:(:P(:ç:‘˜c7n70Ÿn7·7^$:3:0Ÿ3:Á:S¬6¸6S¸6¼6sŸ¼6í6S77n7SÛ7ú7Sø9 :So>E?^M?y?^¸?Î?^v>¦>]¦>¨>uŸ ??]¸?Æ?]Æ?Î?P[>ˆ>1Ÿˆ>?VM?y?V¸?Î?V[>ˆ> žˆ>Þ>cÞ> ?‘˜ ??cM?k?‘˜k?y?c¸?Î?cˆ>ß> žß>?aM?k?ak?y? ž¸?Î? žŒ>¨>U¨>¼>P¼>À>UÀ>É>P¸?¾?U¾?À?PÀ?É?UÉ?Î?]‘?™?a™?¸?‘˜S@Ò@]ö@A]ÞB÷B]Z@†@S†@ˆ@uŸÆ@ñ@SÞBïBSïB÷BP@@i@1Ÿi@Â@_Æ@Ë@_ö@A_ÞB÷B_@@i@0Ÿi@Ë@^ö@A^ÞB÷B^i@®@0Ÿ®@²@Pö@A0ŸÞB÷B0Ÿm@ˆ@Uˆ@@P@”@U”@@PÞBäBUäBéBPéBòBUòB÷BS B3BP~B”BPÑ9Ù9PÙ9ó9Sc7g7Pg7Û7_7‘7P‘7·7S 7©7S$:(:P(:ç:‘˜^:b:Pb:Á:^u:y:Py:Á:_œ:Á:_h;k;_k;u;ph;u;Vk;Ô;_9<u<_à=[>_Î?â?_k;Ô;V9<u<Và=[>VÎ?â?VM>[>Po=r=_r=y=po=y=Vr=à=_@@@_‰AéA_ÃBÞB_NCbC_r=à=V@@@V‰AéAVÃBÞBVNCbCVÐBÞBPPlUlwóUŸw’U’ÎóUŸPlTlwóTŸw–T–ÉVÉÎóTŸPlQlwóQŸw–Q–Ë\ËÎóQŸeqSwÈS¨³P!U!AóUŸ%T%:V:@Q@AóTŸ%Q%<\<@R@AóQŸu˜ÀáUáþóUŸÀåTå÷V÷ýQýþóTŸÀåQåù\ùýRýþóQŸÄÆu˜€¬U¬±óUŸ€¢T¢°X°±óTŸ U óUŸT9V9óTŸnrPr{S{P696U96o6So6q6óUŸq6v6S6=6T=6p6Vp6q6óTŸq6v6VÐäUä óUŸÐäTä óTŸÕHVHIóUóT"ŸI•V•–óUóT"Ÿ– VÕäUä=SI”S– S½ÈP@oTo°\°ñóTŸñd\dióTŸ@oQoãSãðQðñóQŸñiSkê^ñi^¢¬PñÿP°æ\æðTdi\°¹SP-]29<¢¸”˜³[x³º×Þâø[x D† P Ð ð Ð  , è [ ' e — ¨ Bó(rÔe ~ @<% P ª è ~ — ” % Ð  , P   ª [ è Ï B2ræ[ è Ï B2r} © ® è Ï +0B %((+05HLPSV_gj DP „ ˜ Ð †„ Ð ð ˜  , è [ Bór埄 ˆ ð ˜  , è [ Bóråééíñ ' e — ¨ (åöÒ  & ðöü ¸ 8 Ð  Î à ã ñ @ ` ` à O ] ` v & 5 8 I H 0x¬Œ ,¬è2369>*#P#Ð$ %6#6#Ð$ %P##$@$€$Ð$Ð#$ %f%ñ&j'ð'(+'0'4'9' (1APPPSaejosw|‚‡ºÂÃÐãëìñI@NE€>>‹¬¶ººÁÄÓ‹¬¶ººÁÄÓ߯ÀXX_x,,3LÖÖÝú  'Eðð÷  & ) D ˆ š ž ­ Ç Ç Î ö z z ˆ ® Z t Ò * ¯ÐÚ  mŽ  L Ž¯Ô Ô Û ø  >¶Ä0}€•˜ ¥ƒ•˜ ×ÝæïÝãææïôýôý7d{€¡¢ab™ { } Ž Ð Ñ Q R Å Æ Ó Ô êêîd”—› wÙè ¬JMS[[wz’—¡¨­²’—¡¨­²µ¸¼¿Æ`cfilq\buuy‚,2FFJSïóøADGV¤¤·Ä%07H4 : A C G X …ÄB_ddq©è”ÄÆËà6AKv€œ ö>ð /K¤àð:nxxV``04AF ¨ È  ¨ @ ™ ¹ `§° 8h˜@)¥¶ö›¬bs4!Z! #î#P$y$É)ø)Ž*¨*KRovz¤àð:nxxV``04AF ¨ È  ¨ @ ™ ¹ `§° 8h˜@)¥¶ö›¬bs4!Z! #î#P$y$É)ø)Ž*¨*D ¨ P$y$Ž*¨*§®®±µà ¨ È ` @ ™  ˜@`ðÂÙ ‰š¸ È ƒ ¨ ¸ È s À  @`Ä Ç Ë è :e±Âh‰s¡ Z!Œ"Š# #¤%Õ%l'Þ't((¼)É)h,Â,g-£-î-*.WZ_ª»e±Âh‰s¡ Z!Œ"Š# #¤%Õ%l'Þ't((¼)É)h,Â,g-£-î-*.Aò!Œ"}'Þ't((("="y"Œ"/7œ ¡ ÏÏÒÚ$eŠ# #nxx ›Œ""#Š#î#P$h&0'Þ'(B(t(•)¼)ø)s*",/,á-î-”˜ ›Œ""#Š#î#P$h&0'Þ'(B(t(•)¼)ø)s*",/,á-î-,›Þ'(¯)¼)D#Š#h&ü&((ø)s* &±&í&ü&** *s*V``0epš"#7&h&0'l'(((:)•)s*Ž*Ô*+/,<,-g-£-á-*./†ŠŽ0epš"#7&h&0'l'(((:)•)s*Ž*Ô*+/,<,-g-£-á-*./è0:)•)s*Ž**.{.ˆ.//.D.ˆ.œ.ep¡"¦"¦"#J'l'(((TX\“º-Ô- ---g-£-º-4AF ` ¨ §pEš?bÕ%7&((B(FMZ^b ` ¨ §pEš?bÕ%7&((B(Œ ˜E𫮏¼¿¿Ðëð ˜ðõÓÖÙâêííðõútwzƒ‹Ž†‹ŽŽy¢?bÙ%â%æ%7&((B(¹ `°8h`ð)¥¶Eš±Ùö¬h?¡ ¸ !4!š(:)¨*Ô*+",<,h,Â,-58;>PS[_c°8h`ð)¥¶Eš±Ùö¬h?¡ ¸ !4!š(:)¨*Ô*+",<,h,Â,-58;>PSO˜˜ðš±½h?š(:)¨*Ô*,",<,],Ô ?*ð,",<,],§(:)¨*Ô*¥p)UP+,],h,Â,ä,È Ë Ï !y$¤%(š(èëð8P‘“  ýýÿ1à >’¼ @ >—T° à ˜­ò Ÿ®ÑZ 2(@6 êþØêìï8:=OT`e»ø ¨) ) 2 2 P !P!P#€#û$ %2 2 2 P û$ %° !P!p!@#P#× !P!p!p!€"€#û$ %4%ð!ô!ø!W"€#–#š##`$‚$’$û$Ð"Û"ç" #¶&À&À&Ò&','0'9'p'Ø'*0*h(Û(Û(ã(ã()P+€+H.h.8/f/“3£3ã(ã(ã()“3£3`)*+/+`-è-h.8/f/Ã/£34¬)û)f/…/x.à.£34Å3ú3ú34Ð+Û+ë+(,P,`-Ã/91:5b5Ð,Ó,×,4-Ã/Ø/Û/Þ/ 0Â0Ó09191“34:5b5Ó5Ø56ý1B2»5Ó5@7G7J7c7p7 7 7©7:: :$:8:œ:œ:¯:h;Ô;9<u<à=[>Î?â?x;{;„;Ô;9<u<à=[>Î?â?o=à=@@@‰AéAÃBÞBNCbC€=ƒ=Œ=à=@@@‰AéAÃBÞBNCbC[>H?M?y?¸?Î?ˆ> ?M?y?¸?Î?„?³?AA@@ñ@ö@AÞB÷Bi@Æ@ö@AÞB÷BjA‰AüBNCLF0HÐ_ ``G`ÄFG0`G`qH|H€HcIcII¼RÓRIcIcImI¼RÓR#I&I(I6I;I\I¼RÓRJI\I¼RÓR JJJ-J@J¹J¹JÃJôJ„KüRS„KàKüM¢NSASULÐL=U{UÍW1XvX‘X0ZHZhLkLtLÐL=U{UÍW1XvX‘X0ZHZÓLÚLÝLöLM·M·MÊM·M·M»MÊMu˜u¯uíwíwïwýwxÉxðx/yxx˜xÅxy/yìyðyôy.z,€€À‚ð„€…È†‡Èˆðˆ(‰£‰£€€8…€…Ȇ‡@‰£‰—‹—‹™‹¨‹ÍŒÍŒÏŒÝŒþŒÂð/ކˆ‘¾Ž/ŽMMO]~)‘P‘‘íïø%‘x‘‘8`xà ü1 4 4à< PQ pQ _ Àl ü¯ °Pñ¸ö°P$"X$"`$"(&"(("0"@0"p4b ! ñÿ €m v}- ÀlE Àla Àl~ ÀlŸ Àl» ÀlÛ Àlô Àl €m+ —nC —nh v}”ñÿ‹ €}ž †¥µ ÀlÌ Àlç Àl Àl# Àl> Àl] Àlu Àl‘ €}µ —}× —}õ :àµA :9 #U0"``0"p #” –¶ –à » »1 ÛX Û~ ‚¢ ‚È ƒì ƒ ʃ< ʃ\ ª„z ª„ž ¹„À ¹„ã É„ É„% 2…D 2…f „…† „…¨ å…È å…ê ¾†  ¾†# Š: ŠW ,Œr ,Œ’ ¾Œ° ¾ŒÐ /î / a‘2 a‘S ^’r ^’• Á”¶ Á”× 1—ö 1—  I˜6  I˜V  ù™t  ù™”  ož²  ožÏ  4Ÿê  4Ÿ   "   @  æ¢\  æ¢y  棔  棺  †¥ç ñÿÞ  ¥î  e´  Àl  Àl.  ÀlG  Àld  Àl|  Àl˜  Àl­  ÀlÆ  ¥ä  ¦  ¥‡  ¦0  ¦O  ¦aa €$"¨i  ¦‰  ᦧ  á¦À  e´× À¿Þ  Äê `¼ò ¾ú àÀ€ `ÁP ÀÁP ¿ ÀÀ ເ&   . ÀÃP5 ÀÂäD ñÿ;  p´N  š¸e  Àl|  Àl—  Àl³  ÀlÓ  Àlî  Àl  Àl% ÀlA p´c ¸´ƒ ¸´§ ¹µÉ ¹µð ^¶ ^¶9 €·[ €·| з› з¸ ¸Ó ¸î ¸ ¸( š¸PñÿG  ¸[ LÐs Àl‹ Àl§ ÀlÄ Àlå Àl Àl! Àl: ÀlW  ¸z £Ç› £Ç» _ÈÙ _Èô É  É0 LÐZñÿQ PÐa JØu Àl‰ Àl¡ Àlº Àl× Àlï Àl  Àl  Àl9 PÐX …Ðu …Г áЯ áÐÍ 6Ñé 6Ñ xÑ# xÑ@ êÑ[ êÑw Ò‘ Ò² ¸ÒÑ ¸Òñ îÒ îÒ8 RÓ_ RÓ| mÓ— mÓµ ÜÓÑ ÜÓí dÔ dÔ# žÔ= žÔ\ vÕy vÕ— Õ³ ÕÒ ±Õï ±Õ  áÕ' áÕE 5Öa 5Ö} ™Ö— ™Ö³ ÌÖÍ ÌÖë ÝÖ ÝÖ& ñÖC ñÖ` ×{ ל Ø» ØÙ JØþñÿõ PØ Pã Àl0 ÀlI Àlc Àl Àlš Àl· ÀlÍ Àlç PØ íØ% íØF #Ùe #Ù‡ SÙ§ SÙ ¥ÙÛ ¥Ù÷ ãÙ ãÙ9 |Ú_ |ÚŒ ‰Ú· ‰ÚÓ èÚí èÚ  Û) ÛE ”Û_ ”Û‚ ©Û£ ©ÛÎ ¿Û÷ ¿Û# ÏÛM ÏÛv ÙÛ ÙÛË éÛ÷ éÛ! øÛI øÛr Ü™ ܾ QÜá QÜ  üÜ/ üÜN ’Ýk ’Ý ƒÞ³ ƒÞÎ ÂÞç ÂÞ  cß%  cßE  Ðßc  Ðß‚  NàŸ  Nàà  ~àå  ~à! üà#! üàC! 8áa! 8á! ¼áŸ! ¼áÂ! Bâã! Bâý! râ" râ?" ¨âg" ¨â•" PãÊ"ñÿÁ" PãÔ" íë" Àl# Àl# Àl9# ÀlY# Àlt# Àl“# Àl«# ÀlÇ# Pãã# _ãý# Pã $ _ã!$ ”ãD& `ã46$ ”ãL$ ­ã`$  ã g$ ­ã~$ ·ã§% °ã“$ ·ã°$ ¯äË$ ÀãïÙ$`Üèà$ ¯ä% Qå,% QåI% måd% må„% ‚å¢% 0"¯% ‚åÙ% ¤å& ¤å!& Âå?&0"L& Âåv& äåž& äå»& TæÖ& Tæï& ç' ç' Qè6' QèS' ìèn' ìè…' êš' ê³' 9ëÊ' 9ëè' ì( ì( áì6( áìU( í{(ñÿr( íƒ( ˜( Àl­( ÀlÆ( Àlà( Àlþ( Àl) Àl4) ÀlJ) Àld) í€) îš) î´) ÓîÌ) Óîç) ï* ï* ï2* ïS* 2r* 2Š* J * J¹* Ð* ç* +ñÿü*  + û¯ + Àl4+ ÀlL+ Àle+ Àl‚+ Àlš+ Àl¶+ ÀlË+ Àlä+ , :, a, Á†, Á±, Ú, - Q.- QY- Þ‚- Þ¥-  Æ- à=Ú-  ý- É . ©2. É X. b-|. Ð ’ “. b-¹. B:Ý. p-Ò ô. B:/ y;D/ P:)^/ y;‡/ IB®/ €;ÉÕ/00"æ/ IB0 S60h4"G0 Sk0 †S0 †Sµ0 r`Û0 r`1 Å~)1 Å~N1 +€q1 +€—1 ç»1 0€·ß1 çû1 'Ž2 'Ž-2 øC2 øi2 Ë2 ˤ2 ËÀ2 !‘Ú2 !‘3 Î’,3 0‘žG3 Î’c3 È”}3 È”§3 N–Ï3 Д~ê3 N–4 ¿—44 P–oX4 ¿—t4 ³¦Ž4 ³¦¦4 x¨¼4 x¨â4 K©5 €¨Ë5 K©95 ¡©S5 ¡©}5 N«¥5 °©žÀ5 N«Ü5 (­ö5 (­ 6 ®®H6 0­~c6 ®®‚6 û¯Ÿ6ñÿª6 Àl¬6 ðl¿6 0mÕ6@0"ä6X$" 7 pm7P$"Ÿ6ñÿ67¨ñÿD7 ü¯J7`$"W7(&"`7Pñs7@0"7(("•7 PQ›7§7 °å¸7 À†HÂ7 ¸ Ô7 ÐQã7õ7 88 Õ!+8B8T8 PØe8 `æ»o8 ¦Q€8“8±8Â8 Pâ"Í8  Ýãã8ó89 $9 ¸a09=9 p´HP9d9 @ÖYq9†9 pžÄ”9 °®K¤9 ðÐF³9Æ9×9ë9 : @Ñ8:  2:>: ƒªX: ‚ûo:~: ï-:ž: €à|¯: °ä¡Ç: `ÙEÓ:ã: ×éõ: À;<0"; ÐÖ %; 0ŒŽ6;A; @…DT;  ÔÖd; ð£–{; ðÙŒ”; ×¢; á8³; зLÁ;Õ; @ŸÄã; `¶ ø; ê)< 1< `Ó (<D< ìÑO< €â(j< Ü„< À႘<¬<½< ÐåØ<ã< Šñ< ç1û<= €`E.=<=J=W= @á|h=v= À´ù‹= ðì+›=¯= ð…ÎÂ= p‘îÔ=æ=ú= àÖ > ðè > ðØ3$>9>P> ðÒbj>{> 0€·’> 01¦> pÓlµ>È>Û> É,ï> Ð~[? ðÕE? y? €·P:3 ÐQ.? pÔ.;?80"J? `èŒX? Þ2d? A€?”? Дa¦?´?È? À—óÕ?æ? …Uù? @ €Ñj@  ¸+@ ï 6@ E@R@f@ ð7 s@‡@ °Ç¯˜@¦@¹@É@Õ@ šoæ@ `’aú@A °Ù3A  nÖ*A på;A ðÛVAcA ÀŒotA•A ÛtpG °„ ¢A¶AÊAÑA °ÛíA @ëÈüAÝ3 Ð’øB àÛ 0Bl4":B Sfp4"OB À„ cBvB €mB åV6 P«ØœB ðÑ'©B ÚX³5 P©Q¶BÄB 0fÙBêB ÀÕ!øB î³CC'C3C40"CCOC P–ofC{CˆC Ü1žC @ §C<0"³C›2 0ŽÈÂCÏCàCúC ÀµžD  Ö,D €;É?B ðÚ#9DFD 0Ù#YD  }š5 À¦¸hD}D‹D Sâ ¤D ÀÒ.µDÁDÓDáD @— óD `Üœ E ЄbE `ȶ*E @ã9E pß`JE P˜©[E=  Û jE~E Ð>šE®E €Ú ÌE PÐ5ÜEóEþE0¶F à1F/FAFRFfFzFˆF Pà.F¤F  Ö³F ÐÛ ÍFáFüF GG Ø:)G àÓ„6G ð¦u @G ÐÞ“QG kG PBÆ…G `~¡G®G Ý’¾GÒGâG ÀÛÿG `å H!H P@+H Ðß~;HGHUH €Õ dH"€H’H Ò˜¤H €}¹H °â ØH àî,äH íöñHýHI$I ðåd2I`4"BIVI ЃÚgI‚I›I ð¢ö.annobin_bytecode.c.annobin_bytecode.c_end.annobin_bytecode.c.hot.annobin_bytecode.c_end.hot.annobin_bytecode.c.unlikely.annobin_bytecode.c_end.unlikely.annobin_bytecode.c.startup.annobin_bytecode.c_end.startup.annobin_bytecode.c.exit.annobin_bytecode.c_end.exit.annobin_get_inline.start.annobin_get_inline.end.annobin_sycklex_bytecode_utf8.start.annobin_sycklex_bytecode_utf8.end.annobin_emitter.c.annobin_emitter.c_end.annobin_emitter.c.hot.annobin_emitter.c_end.hot.annobin_emitter.c.unlikely.annobin_emitter.c_end.unlikely.annobin_emitter.c.startup.annobin_emitter.c_end.startup.annobin_emitter.c.exit.annobin_emitter.c_end.exit.annobin_syck_st_free_anchors.start.annobin_syck_st_free_anchors.end.annobin_syck_base64enc.start.annobin_syck_base64enc.endb64_table.annobin_syck_base64dec.start.annobin_syck_base64dec.endfirst.4421b64_xtable.4422.annobin_syck_emitter_st_free.start.annobin_syck_emitter_st_free.end.annobin_syck_emitter_current_level.start.annobin_syck_emitter_current_level.end.annobin_syck_emitter_parent_level.start.annobin_syck_emitter_parent_level.end.annobin_syck_emitter_pop_level.start.annobin_syck_emitter_pop_level.end.annobin_syck_emitter_add_level.start.annobin_syck_emitter_add_level.end.annobin_syck_emitter_reset_levels.start.annobin_syck_emitter_reset_levels.end.annobin_syck_new_emitter.start.annobin_syck_new_emitter.end.annobin_syck_emitter_handler.start.annobin_syck_emitter_handler.end.annobin_syck_output_handler.start.annobin_syck_output_handler.end.annobin_syck_free_emitter.start.annobin_syck_free_emitter.end.annobin_syck_emitter_clear.start.annobin_syck_emitter_clear.end.annobin_syck_emitter_flush.start.annobin_syck_emitter_flush.end.annobin_syck_emitter_write.start.annobin_syck_emitter_write.end.annobin_syck_emit.start.annobin_syck_emit.end.annobin_syck_emit_tag.start.annobin_syck_emit_tag.end.annobin_syck_emit_indent.start.annobin_syck_emit_indent.end.annobin_syck_scan_scalar.start.annobin_syck_scan_scalar.end.annobin_syck_emitter_escape.start.annobin_syck_emitter_escape.end.annobin_syck_emit_1quoted.start.annobin_syck_emit_1quoted.end.annobin_syck_emit_2quoted_1.start.annobin_syck_emit_2quoted_1.end.annobin_syck_emit_2quoted.start.annobin_syck_emit_2quoted.end.annobin_syck_emit_literal.start.annobin_syck_emit_literal.end.annobin_syck_emit_folded.start.annobin_syck_emit_folded.end.annobin_syck_emit_scalar.start.annobin_syck_emit_scalar.end.annobin_syck_emit_seq.start.annobin_syck_emit_seq.end.annobin_syck_emit_map.start.annobin_syck_emit_map.end.annobin_syck_emit_item.start.annobin_syck_emit_item.end.annobin_syck_emit_end.start.annobin_syck_emit_end.end.annobin_syck_emitter_mark_node.start.annobin_syck_emitter_mark_node.end.annobin_gram.c.annobin_gram.c_end.annobin_gram.c.hot.annobin_gram.c_end.hot.annobin_gram.c.unlikely.annobin_gram.c_end.unlikely.annobin_gram.c.startup.annobin_gram.c_end.startup.annobin_gram.c.exit.annobin_gram.c_end.exit.annobin_yy_stack_print.start.annobin_yy_stack_print.endyy_stack_print.annobin_yysymprint.isra.0.start.annobin_yysymprint.isra.0.endyysymprint.isra.0yytname.annobin_apply_seq_in_map.start.annobin_apply_seq_in_map.end.annobin_syckparse.start.annobin_syckparse.endyypactyytranslateyycheckyytableyydefactyyr2yyr1yypgotoyydefgotoyystosyyrlineyyprhsyyrhs.annobin_handler.c.annobin_handler.c_end.annobin_handler.c.hot.annobin_handler.c_end.hot.annobin_handler.c.unlikely.annobin_handler.c_end.unlikely.annobin_handler.c.startup.annobin_handler.c_end.startup.annobin_handler.c.exit.annobin_handler.c_end.exit.annobin_syck_hdlr_add_node.start.annobin_syck_hdlr_add_node.end.annobin_syck_hdlr_add_anchor.start.annobin_syck_hdlr_add_anchor.end.annobin_syck_hdlr_remove_anchor.start.annobin_syck_hdlr_remove_anchor.end.annobin_syck_hdlr_get_anchor.start.annobin_syck_hdlr_get_anchor.end.annobin_syck_add_transfer.start.annobin_syck_add_transfer.end.annobin_syck_xprivate.start.annobin_syck_xprivate.end.annobin_syck_taguri.start.annobin_syck_taguri.end.annobin_syck_try_implicit.start.annobin_syck_try_implicit.end.annobin_implicit.c.annobin_implicit.c_end.annobin_implicit.c.hot.annobin_implicit.c_end.hot.annobin_implicit.c.unlikely.annobin_implicit.c_end.unlikely.annobin_implicit.c.startup.annobin_implicit.c_end.startup.annobin_implicit.c.exit.annobin_implicit.c_end.exit.annobin_syck_match_implicit.start.annobin_syck_match_implicit.end.annobin_try_tag_implicit.start.annobin_try_tag_implicit.end.annobin_syck_tagcmp.start.annobin_syck_tagcmp.end.annobin_syck_type_id_to_uri.start.annobin_syck_type_id_to_uri.end.annobin_node.c.annobin_node.c_end.annobin_node.c.hot.annobin_node.c_end.hot.annobin_node.c.unlikely.annobin_node.c_end.unlikely.annobin_node.c.startup.annobin_node.c_end.startup.annobin_node.c.exit.annobin_node.c_end.exit.annobin_syck_alloc_node.start.annobin_syck_alloc_node.end.annobin_syck_alloc_map.start.annobin_syck_alloc_map.end.annobin_syck_alloc_seq.start.annobin_syck_alloc_seq.end.annobin_syck_alloc_str.start.annobin_syck_alloc_str.end.annobin_syck_new_str2.start.annobin_syck_new_str2.end.annobin_syck_new_str.start.annobin_syck_new_str.end.annobin_syck_replace_str2.start.annobin_syck_replace_str2.end.annobin_syck_replace_str.start.annobin_syck_replace_str.end.annobin_syck_str_blow_away_commas.start.annobin_syck_str_blow_away_commas.end.annobin_syck_str_read.start.annobin_syck_str_read.end.annobin_syck_map_empty.start.annobin_syck_map_empty.end.annobin_syck_map_add.start.annobin_syck_map_add.end.annobin_syck_new_map.start.annobin_syck_new_map.end.annobin_syck_map_update.start.annobin_syck_map_update.end.annobin_syck_map_count.start.annobin_syck_map_count.end.annobin_syck_map_assign.start.annobin_syck_map_assign.end.annobin_syck_map_read.start.annobin_syck_map_read.end.annobin_syck_seq_empty.start.annobin_syck_seq_empty.end.annobin_syck_seq_add.start.annobin_syck_seq_add.end.annobin_syck_new_seq.start.annobin_syck_new_seq.end.annobin_syck_seq_count.start.annobin_syck_seq_count.end.annobin_syck_seq_assign.start.annobin_syck_seq_assign.end.annobin_syck_seq_read.start.annobin_syck_seq_read.end.annobin_syck_free_members.start.annobin_syck_free_members.end.annobin_syck_free_node.start.annobin_syck_free_node.end.annobin_syck_.c.annobin_syck_.c_end.annobin_syck_.c.hot.annobin_syck_.c_end.hot.annobin_syck_.c.unlikely.annobin_syck_.c_end.unlikely.annobin_syck_.c.startup.annobin_syck_.c_end.startup.annobin_syck_.c.exit.annobin_syck_.c_end.exit.annobin_syck_io_str_read.start.annobin_syck_io_str_read.end.annobin_syck_io_file_read.start.annobin_syck_io_file_read.end.annobin_syck_st_free_nodes.start.annobin_syck_st_free_nodes.end.annobin_syck_assert.start.annobin_syck_assert.end.annobin_syck_strndup.start.annobin_syck_strndup.end.annobin_syck_parser_reset_cursor.start.annobin_syck_parser_reset_cursor.end.annobin_syck_parser_set_root_on_error.start.annobin_syck_parser_set_root_on_error.end.annobin_syck_add_sym.start.annobin_syck_add_sym.end.annobin_syck_lookup_sym.start.annobin_syck_lookup_sym.end.annobin_syck_st_free.start.annobin_syck_st_free.end.annobin_syck_parser_handler.start.annobin_syck_parser_handler.end.annobin_syck_parser_implicit_typing.start.annobin_syck_parser_implicit_typing.end.annobin_syck_parser_taguri_expansion.start.annobin_syck_parser_taguri_expansion.end.annobin_syck_parser_error_handler.start.annobin_syck_parser_error_handler.end.annobin_syck_parser_bad_anchor_handler.start.annobin_syck_parser_bad_anchor_handler.end.annobin_syck_parser_set_input_type.start.annobin_syck_parser_set_input_type.end.annobin_syck_parser_current_level.start.annobin_syck_parser_current_level.end.annobin_syck_parser_pop_level.start.annobin_syck_parser_pop_level.end.annobin_syck_parser_reset_levels.start.annobin_syck_parser_reset_levels.end.annobin_syck_new_parser.start.annobin_syck_new_parser.end.annobin_syck_parser_add_level.start.annobin_syck_parser_add_level.end.annobin_free_any_io.start.annobin_free_any_io.end.annobin_syck_free_parser.start.annobin_syck_free_parser.end.annobin_syck_parser_file.start.annobin_syck_parser_file.end.annobin_syck_parser_str.start.annobin_syck_parser_str.end.annobin_syck_parser_str_auto.start.annobin_syck_parser_str_auto.end.annobin_syck_move_tokens.start.annobin_syck_move_tokens.end.annobin_syck_check_limit.start.annobin_syck_check_limit.end.annobin_syck_parser_read.start.annobin_syck_parser_read.end.annobin_syck_parser_readlen.start.annobin_syck_parser_readlen.end.annobin_syck_parse.start.annobin_syck_parse.end.annobin_syck_default_error_handler.start.annobin_syck_default_error_handler.end.annobin_syck_str_is_unquotable_integer.start.annobin_syck_str_is_unquotable_integer.end.annobin_syck_st.c.annobin_syck_st.c_end.annobin_syck_st.c.hot.annobin_syck_st.c_end.hot.annobin_syck_st.c.unlikely.annobin_syck_st.c_end.unlikely.annobin_syck_st.c.startup.annobin_syck_st.c_end.startup.annobin_syck_st.c.exit.annobin_syck_st.c_end.exit.annobin_delete_never.start.annobin_delete_never.enddelete_never.annobin_strhash.start.annobin_strhash.end.annobin_numcmp.start.annobin_numcmp.endnumcmp.annobin_numhash.start.annobin_numhash.end.annobin_rehash.isra.0.start.annobin_rehash.isra.0.endrehash.isra.0primes.annobin_st_init_table_with_size.start.annobin_st_init_table_with_size.end.annobin_st_init_table.start.annobin_st_init_table.end.annobin_st_init_numtable.start.annobin_st_init_numtable.endtype_numhash.annobin_st_init_numtable_with_size.start.annobin_st_init_numtable_with_size.end.annobin_st_init_strtable.start.annobin_st_init_strtable.endtype_strhash.annobin_st_init_strtable_with_size.start.annobin_st_init_strtable_with_size.end.annobin_st_free_table.start.annobin_st_free_table.end.annobin_st_lookup.start.annobin_st_lookup.end.annobin_st_insert.start.annobin_st_insert.end.annobin_st_add_direct.start.annobin_st_add_direct.end.annobin_st_copy.start.annobin_st_copy.end.annobin_st_delete.start.annobin_st_delete.end.annobin_st_delete_safe.start.annobin_st_delete_safe.end.annobin_st_foreach.start.annobin_st_foreach.end.annobin_st_cleanup_safe.start.annobin_st_cleanup_safe.end.annobin_token.c.annobin_token.c_end.annobin_token.c.hot.annobin_token.c_end.hot.annobin_token.c.unlikely.annobin_token.c_end.unlikely.annobin_token.c.startup.annobin_token.c_end.startup.annobin_token.c.exit.annobin_token.c_end.exit.annobin_eat_comments.start.annobin_eat_comments.end.annobin_escape_seq.start.annobin_escape_seq.end.annobin_newline_len.start.annobin_newline_len.end.annobin_is_newline.start.annobin_is_newline.end.annobin_sycklex_yaml_utf8.start.annobin_sycklex_yaml_utf8.end.annobin_syckwrap.start.annobin_syckwrap.end.annobin_syckerror.start.annobin_syckerror.end.annobin_sycklex.start.annobin_sycklex.end.annobin_Syck.c.annobin_Syck.c_end.annobin_Syck.c.hot.annobin_Syck.c_end.hot.annobin_Syck.c.unlikely.annobin_Syck.c_end.unlikely.annobin_Syck.c.startup.annobin_Syck.c_end.startup.annobin_Syck.c.exit.annobin_Syck.c_end.exit.annobin_perl_syck_bad_anchor_handler.start.annobin_perl_syck_bad_anchor_handler.end.annobin_perl_syck_error_handler.start.annobin_perl_syck_error_handler.end.annobin_perl_syck_output_handler_pv.start.annobin_perl_syck_output_handler_pv.end.annobin_perl_syck_output_handler_mg.start.annobin_perl_syck_output_handler_mg.end.annobin_perl_syck_output_handler_io.start.annobin_perl_syck_output_handler_io.end.annobin_Perl_is_utf8_string.start.annobin_Perl_is_utf8_string.endPerl_is_utf8_string.annobin_is_bad_alias_object.start.annobin_is_bad_alias_object.endis_bad_alias_object.annobin_XS_YAML__Syck_LoadJSON.start.annobin_XS_YAML__Syck_LoadJSON.endXS_YAML__Syck_LoadJSON.annobin_XS_YAML__Syck_LoadYAML.start.annobin_XS_YAML__Syck_LoadYAML.endXS_YAML__Syck_LoadYAML.annobin_register_bad_alias.isra.0.start.annobin_register_bad_alias.isra.0.endregister_bad_alias.isra.0.annobin_json_syck_emitter_handler.start.annobin_json_syck_emitter_handler.endjson_syck_emitter_handler.localalias.3json_quote_style.annobin_yaml_syck_emitter_handler.start.annobin_yaml_syck_emitter_handler.endyaml_quote_style.annobin_perl_syck_lookup_sym.start.annobin_perl_syck_lookup_sym.end.annobin_json_syck_parser_handler.start.annobin_json_syck_parser_handler.end.annobin_yaml_syck_parser_handler.start.annobin_yaml_syck_parser_handler.end.annobin_perl_json_postprocess.start.annobin_perl_json_postprocess.end.annobin_json_syck_mark_emitter.start.annobin_json_syck_mark_emitter.endjson_syck_mark_emitter.localalias.4.annobin_DumpJSONImpl.start.annobin_DumpJSONImpl.end.annobin_DumpJSON.start.annobin_DumpJSON.end.annobin_XS_YAML__Syck_DumpJSON.start.annobin_XS_YAML__Syck_DumpJSON.endXS_YAML__Syck_DumpJSON.annobin_DumpJSONFile.start.annobin_DumpJSONFile.end.annobin_XS_YAML__Syck_DumpJSONFile.start.annobin_XS_YAML__Syck_DumpJSONFile.endXS_YAML__Syck_DumpJSONFile.annobin_DumpJSONInto.start.annobin_DumpJSONInto.end.annobin_XS_YAML__Syck_DumpJSONInto.start.annobin_XS_YAML__Syck_DumpJSONInto.endXS_YAML__Syck_DumpJSONInto.annobin_yaml_syck_mark_emitter.start.annobin_yaml_syck_mark_emitter.endyaml_syck_mark_emitter.localalias.2.annobin_DumpYAMLImpl.start.annobin_DumpYAMLImpl.end.annobin_DumpYAML.start.annobin_DumpYAML.end.annobin_XS_YAML__Syck_DumpYAML.start.annobin_XS_YAML__Syck_DumpYAML.endXS_YAML__Syck_DumpYAML.annobin_DumpYAMLFile.start.annobin_DumpYAMLFile.end.annobin_XS_YAML__Syck_DumpYAMLFile.start.annobin_XS_YAML__Syck_DumpYAMLFile.endXS_YAML__Syck_DumpYAMLFile.annobin_DumpYAMLInto.start.annobin_DumpYAMLInto.end.annobin_XS_YAML__Syck_DumpYAMLInto.start.annobin_XS_YAML__Syck_DumpYAMLInto.endXS_YAML__Syck_DumpYAMLInto.annobin_boot_YAML__Syck.start.annobin_boot_YAML__Syck.endcrtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.7294__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entry__FRAME_END___fini__dso_handle_DYNAMIC__GNU_EH_FRAME_HDR__TMC_END___GLOBAL_OFFSET_TABLE__initPerl_sortsvst_init_strtablesyck_emitsyck_try_implicitsyck_alloc_mapPerl_sv_2iv_flagsPerl_sv_2bool_flagsfree@@GLIBC_2.2.5syck_map_assignPerl_looks_like_numberPerl_hv_iterkeysvsyck_io_str_readst_lookupapply_seq_in_mapabort@@GLIBC_2.2.5__errno_location@@GLIBC_2.2.5Perl_newRV_noincsyck_parsesyck_parser_add_levelPerl_stack_growstrncmp@@GLIBC_2.2.5_ITM_deregisterTMCloneTablesyck_taguriPerl_my_atofsyck_hdlr_add_nodestrcpy@@GLIBC_2.2.5syck_seq_addPerl_sv_catpvn_flagssyck_emit_seqboot_YAML__Sycksyck_alloc_seqfread@@GLIBC_2.2.5Perl_call_methodstrtod@@GLIBC_2.2.5perl_syck_bad_anchor_handlersyck_alloc_strsyck_emitter_current_levelPerl_av_lensyck_emitter_reset_levelssyck_emitter_add_levelPerl_pop_scopesycklex_yaml_utf8Perl_av_shiftsyck_move_tokensst_init_table_with_sizesyck_assertPerl_sv_reftypesyck_free_memberssyck_emitter_parent_level_edatasyck_seq_countsyck_emit_indentPerl_newSVsyck_emitter_clearsyck_map_updatesyck_emitter_mark_nodesyck_parser_reset_cursorsyck_seq_readsyck_check_limitsyck_xprivatestrlen@@GLIBC_2.2.5syck_emit_mapsyck_hdlr_get_anchorst_deleteperl_syck_error_handlersyck_str_read__stack_chk_fail@@GLIBC_2.4st_foreachsyck_default_error_handlersyck_parser_current_levelsyck_parser_readlenstrchr@@GLIBC_2.2.5Perl_sv_setiv_mgst_init_strtable_with_sizePL_thr_keysyck_emit_tagst_insertPerl__is_utf8_char_helperyaml_syck_parser_handlerPerl_av_storePerl_sv_setpvPerl_newSVnvsyck_parser_readPerl_sv_blesssyck_hdlr_add_anchorst_cleanup_safememset@@GLIBC_2.2.5syck_emitter_writesyck_emit_1quotedPerl_sv_2pv_flagsPerl_xs_boot_epilogsyck_seq_assignst_copysyck_io_file_readstrncat@@GLIBC_2.2.5Perl_hv_iternext_flagssyck_str_blow_away_commasPerl_grok_numberjson_syck_mark_emittersyck_emitter_escapesyck_map_emptyfputc@@GLIBC_2.2.5Perl_safesysmallocsyck_type_id_to_uriperl_json_postprocesssyck_seq_emptysycklexsyck_add_transfersyck_new_mapjson_max_depthst_add_directfree_any_ioperl_syck_output_handler_mgcalloc@@GLIBC_2.2.5syck_emit_2quotedPerl_grok_octstrcmp@@GLIBC_2.2.5DumpYAMLImplPerl_sv_isobjectsyck_emitter_flushPerl_gv_fetchpvsyck_new_str2syck_match_implicitis_newline__gmon_start__Perl_newSVsvPerl_croak_xs_usageDumpJSONImplstrtol@@GLIBC_2.2.5try_tag_implicitPerl_savetmpsmemcpy@@GLIBC_2.14Perl_gv_stashpvPerl_sv_lensyck_emit_scalarsyck_emit_2quoted_1Perl_av_pushsyck_strndupsycklex_bytecode_utf8st_init_numtablesyck_parser_set_input_typePerl_newSVpvsyck_scan_scalarpthread_getspecific@@GLIBC_2.2.5syck_st_freemalloc@@GLIBC_2.2.5fflush@@GLIBC_2.2.5PL_nansyck_parser_implicit_typingst_delete_safePerl_croak_nocontextsyck_parser_bad_anchor_handlersyckdebugperl_syck_lookup_symsyck_output_handlerPerl_newXS_deffileget_inlinest_init_numtable_with_sizesyck_new_strsyck_add_symPerl_grok_hexsyck_emitter_st_freePerl_hv_iterinitsyck_map_readescape_seqPerl_sv_setsv_flagsPerl_sv_2mortalPerl_sv_cmpjson_quote_charPerl_mg_getyaml_syck_mark_emitterrealloc@@GLIBC_2.2.5Perl_eval_pvsyck_parser_pop_levelsyckwrap__bss_startPerl_hv_commonPerl_newSVuvPerl_safesysfree__printf_chk@@GLIBC_2.3.4syck_hdlr_remove_anchorsyck_new_seqjson_syck_emitter_handlerPerl_call_pvsyck_st_free_nodessyck_base64encmemmove@@GLIBC_2.2.5Perl_croak_svjson_syck_parser_handlersyck_replace_strPerl_sv_2ioPerl_xs_handshakePerl_av_fetchsyck_emit_literalsyck_parser_reset_levelssyck_free_emittersyck_tagcmpsyck_base64decsyck_parser_filesyck_emit_foldedPerl_free_tmpsstrtok@@GLIBC_2.2.5perl_syck_output_handler_pvPerl_markstack_growsyck_parser_set_root_on_errorsyck_alloc_nodePerl_hv_common_key_lenPerl_newRVhex_tablesyck_emitter_pop_levelPerl_newSV_typePerl_PerlIO_writePerl_block_gimmePerl_form_nocontextstrcat@@GLIBC_2.2.5Perl_sv_catpvsyck_parser_str_autoPL_infsyck_emit_itemsyck_parser_error_handlerfwrite@@GLIBC_2.2.5__fprintf_chk@@GLIBC_2.3.4Perl_sv_free2Perl_push_scopesyck_free_nodesyck_map_addsyckparsesyck_free_parser_ITM_registerTMCloneTableyaml_syck_emitter_handlerperl_syck_output_handler_ioPerl_newSVivsyck_new_parserPerl_newSVpvn_sharePerl_hv_itervalsyck_parser_taguri_expansionst_init_tablePerl_gv_add_by_typesyckerrorsyck_parser_strPerl_savepvPerl_newSVpvnsyck_map_count__cxa_finalize@@GLIBC_2.2.5Perl_sv_newmortalsyck_replace_str2syck_st_free_anchorssyck_str_is_unquotable_integernewline_leneat_commentsPL_utf8skip__ctype_b_loc@@GLIBC_2.3Perl_av_clearst_free_tablesyck_parser_ptrstderr@@GLIBC_2.2.5syck_new_emitter__sprintf_chk@@GLIBC_2.3.4Perl_hv_placeholders_getsyck_emit_end.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.note.gnu.property.init_array.fini_array.data.rel.ro.dynamic.got.data.bss.comment.gnu.build.attributes.debug_aranges.debug_info.debug_abbrev.debug_line.debug_str.debug_loc.debug_ranges88$.öÿÿo``8 xxh@à à Hÿÿÿoü1ü1Uþÿÿo 4 4€d 4 4@nBà<à<pxPQPQspQpQ° ~ _ _  ‡ÀlÀl;Cü¯ü¯ “ ° °0A ›PñPñd©¸ö¸öô!³°° ÆP$"P$ÒX$"X$Þ`$"`$È ë(&"(&ô(("((Ðù0"0<ÿ@0"<00 0<0, p4bh0P“#¸Ãà2˜Å….>ô*L5¾éX0ó|[coc@\n¯¿àF 8L# ÈR ©Iqœ |perl5/auto/version/.packlist000064400000000554152462470720012060 0ustar00/usr/local/lib64/perl5/auto/version/vxs/vxs.so /usr/local/lib64/perl5/version.pm /usr/local/lib64/perl5/version.pod /usr/local/lib64/perl5/version/Internals.pod /usr/local/lib64/perl5/version/regex.pm /usr/local/lib64/perl5/version/vpp.pm /usr/local/lib64/perl5/version/vxs.pm /usr/local/share/man/man3/version.3pm /usr/local/share/man/man3/version::Internals.3pm perl5/auto/version/vxs/vxs.so000055500000467250152462470720012263 0ustar00ELF>€@¨e@8 @$#øbøb jj j ðø ll l 888$$ØbØbØb SåtdØbØbØb PåtdØZØZØZÄÄQåtdRåtdjj j ððGNU‡+¸ç’AANˆ[áXzŒu™ A;ˆ@ (;=>BEÕì»ã’|ÙqX}Ïg°; Mv˜ó>åü .§»±|_ €»Û'Ïœ©¦œOæ¸p@eâŠeÌ‹ÈØ£Ú, VõJ0bF"êÕp èp Üp x àRŽ__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizelibpthread.so.0Perl_hv_common_key_lenPerl_sv_isobjectPerl_sv_derived_from_pvnPerl_croak_nocontextPerl_croak_xs_usagePerl_croakPerl_ckwarnPerl_vwarner__stack_chk_failPerl_av_lenPerl_av_fetchPerl_sv_2iv_flagsPerl_newSVpvfPerl_sv_catpvfPerl_sv_catpvn_flagsPerl_newSVpvnPerl_sv_2mortalPerl_newSVsv__snprintf_chkPerl_savepvnPerl_save_pushptrPL_charclassPerl_newSV_typePerl_newSVrvPerl_sv_upgradePerl_newSVivPerl_av_pushPerl_savesvpvPerl_newRV_noincPerl_sv_2pv_flagssetlocalePerl_savepvPerl_sv_setpvfPerl_safesysfreePerl_sv_insert_flagsPerl_mg_findPerl_newSVPerl_sv_free2strcmpPerl_sv_setsv_flagsPerl_sv_setpvnmemmemmemmovePerl_sv_newmortalPerl_gv_stashpvnPerl_sv_blessPerl_mg_getPerl_newSVpvn_flagsPerl_sv_2bool_flagsPerl_gv_stashsvPerl_sv_mortalcopy_flagsboot_version__vxsPerl_xs_handshakePerl_newXSPerl_xs_boot_epiloglibperl.so.5.26libc.so.6_edata__bss_start_endGLIBC_2.2.5GLIBC_2.4GLIBC_2.3.4Ëui íii ùti j 0 j ð j  j @j ¡THj 0OPj ÍTXj Ð!`j ÞThj Fpj ðTxj F€j Uˆj `,j U˜j `, j .U¨j Ð*°j @U¸j Ð*Àj UUÈj  (Ðj jUØj  Iàj }Uèj  Iðj Uøj  Ik £Uk Ek ·Uk E k ÍU(k Ð!0k ÞU8k Ð!@k ïUHk Ð!Pk VXk Ð!`k Vhk Ð!pk #Vxk Ð!€k 5Vˆk Ð!k GV˜k Ð! k YV¨k Ð!°k lV¸k Ð!Àk „VÈk Ð!Ðk —VØk °!àk ®Vèk àKðk ¿Vøk àKl ÕVl !Øo ào èo ðo 3øo 9(n 0n 8n @n Hn Pn Xn `n  hn  pn  xn  €n  ˆn n ˜n  n ¨n °n ¸n Àn Èn Ðn Øn àn èn ðn øn o o  o !o " o #(o $0o %8o &@o 'Ho (Po )Xo *`o +ho ,po -xo .€o /ˆo 0o 1˜o 2 o 4¨o 5°o 6¸o 7Ào 8Èo 9Ðo :óúHƒìH‹IW H…ÀtÿÐHƒÄÃÿ5bU òÿ%cU óúhòéáÿÿÿóúhòéÑÿÿÿóúhòéÁÿÿÿóúhòé±ÿÿÿóúhòé¡ÿÿÿóúhòé‘ÿÿÿóúhòéÿÿÿóúhòéqÿÿÿóúhòéaÿÿÿóúh òéQÿÿÿóúh òéAÿÿÿóúh òé1ÿÿÿóúh òé!ÿÿÿóúh òéÿÿÿóúhòéÿÿÿóúhòéñþÿÿóúhòéáþÿÿóúhòéÑþÿÿóúhòéÁþÿÿóúhòé±þÿÿóúhòé¡þÿÿóúhòé‘þÿÿóúhòéþÿÿóúhòéqþÿÿóúhòéaþÿÿóúhòéQþÿÿóúhòéAþÿÿóúhòé1þÿÿóúhòé!þÿÿóúhòéþÿÿóúhòéþÿÿóúhòéñýÿÿóúh òéáýÿÿóúh!òéÑýÿÿóúh"òéÁýÿÿóúh#òé±ýÿÿóúh$òé¡ýÿÿóúh%òé‘ýÿÿóúh&òéýÿÿóúh'òéqýÿÿóúh(òéaýÿÿóúh)òéQýÿÿóúh*òéAýÿÿóúh+òé1ýÿÿóúh,òé!ýÿÿóúh-òéýÿÿóúh.òéýÿÿóúh/òéñüÿÿóúh0òéáüÿÿóúh1òéÑüÿÿóúh2òéÁüÿÿóúh3òé±üÿÿóúh4òé¡üÿÿóúh5òé‘üÿÿóúòÿ%ýQ Dóúòÿ%õQ Dóúòÿ%íQ Dóúòÿ%åQ Dóúòÿ%ÝQ Dóúòÿ%ÕQ Dóúòÿ%ÍQ Dóúòÿ%ÅQ Dóúòÿ%½Q Dóúòÿ%µQ Dóúòÿ%­Q Dóúòÿ%¥Q Dóúòÿ%Q Dóúòÿ%•Q Dóúòÿ%Q Dóúòÿ%…Q Dóúòÿ%}Q Dóúòÿ%uQ Dóúòÿ%mQ Dóúòÿ%eQ Dóúòÿ%]Q Dóúòÿ%UQ Dóúòÿ%MQ Dóúòÿ%EQ Dóúòÿ%=Q Dóúòÿ%5Q Dóúòÿ%-Q Dóúòÿ%%Q Dóúòÿ%Q Dóúòÿ%Q Dóúòÿ% Q Dóúòÿ%Q Dóúòÿ%ýP Dóúòÿ%õP Dóúòÿ%íP Dóúòÿ%åP Dóúòÿ%ÝP Dóúòÿ%ÕP Dóúòÿ%ÍP Dóúòÿ%ÅP Dóúòÿ%½P Dóúòÿ%µP Dóúòÿ%­P Dóúòÿ%¥P Dóúòÿ%P Dóúòÿ%•P Dóúòÿ%P Dóúòÿ%…P Dóúòÿ%}P Dóúòÿ%uP Dóúòÿ%mP Dóúòÿ%eP Dóúòÿ%]P Dóúòÿ%UP DH=yP HrP H9øtH‹>P H…Àt ÿà€Ã€H=IP H5BP H)þHÁþH‰ðHÁè?HÆHÑþtH‹P H…ÀtÿàfDÀóú€=P u+UHƒ=òO H‰åt H=J èIÿÿÿèdÿÿÿÆÝO ]ÃÀóúéwÿÿÿ€S‹F H‰óöÄtH‹^‹C < uIHƒì¹E1ÉH‰ÞjH*3A¸ è&þÿÿZYH…ÀtH‹H‹@H…Àt€x u H‰Ø[Ä1À[Ãff.„AVAUA‰ÍATI‰ÔUSH‹GxH‰ûH‹/HPüH‰WxHcH‰éH‹GHÐH)ÁH‰ÈHÁøƒø…„L‹uL‰öè3üÿÿ…ÀtfE1À¹L‰öH‰ßHƒ2èõüÿÿ„ÀtHHƒìI‹vD‰éL‰âjE1ÉH‰ßA¸è`ýÿÿZH“hYH…ÀH‹PHDÑH‰UH‰+[]A\A]A^ÃH=21Àè[üÿÿH‰÷H52èÜûÿÿff.„óú¹H5é ÿÿÿff.„óú¹Hè4éëþÿÿff.„óúUSH‰ûH‰÷HƒìH‹CxH‹KH‹3HPüH‰SxHcH‰ÂHÁH)ÆH‰ðHÁø…À~JƒÂH‰ßHcêH‹4éèûÿÿ…Àt#H‹CE1À¹H‰ßHb1H‹4èèÐûÿÿ„ÀuH5:1H‰ß1Àè;ûÿÿH5E1èÿúÿÿH5ˆ4H‰ß1Àèûÿÿff.„ATI‰ÔU‰õSH‰ûHìÐH‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$)¬$ )´$°)¼$ÀdH‹%(H‰D$1À‰îH‰ßè üÿÿ„Àu-1öH‰ßèûûÿÿ„ÀuH‹D$dH3%(uGHÄÐ[]A\ÃH„$ðH‰áL‰â‰îH‰D$H‰ßHD$ Ç$ÇD$0H‰D$è¢úÿÿë©è;ùÿÿff.„AWAVAUATUH‰ýSH‰ÓHƒìè·üÿÿH‰ÞH‰ïI‰Äè©üÿÿM…ä„¥H‰ÃH…À„™HƒìE1ÉA¸ L‰æj¹HÏ/H‰ïèÎúÿÿE1ɹH‰ÞH‹A¸ H¬/H‰ïL‹pÇ$è úÿÿH‰ïH‹L‰öL‹hXZèløÿÿL‰îH‰ïH‰ÃH‰D$èYøÿÿI‰ÇH‰$L9ûLNûM…ÿˆÚ1ÛL‰ö1ÉH‰ÚH‰ïè@úÿÿH‹0‹F % =…šH‹D‹` L‰î1ÉH‰ÚH‰ïèúÿÿH‹0‹F % =uYH‹‹P 1ÀA9ÔœÀHƒÃ÷ØA9Ô~¸HƒÄ[]A\A]A^A_Ã@…À”ÂL9ûžÁ„Ñ…mÿÿÿH‹ $H9L$•Á!ÊëEDºH‰ïè+÷ÿÿ‰Â뜀ºH‰ïè÷ÿÿA‰ÄéXÿÿÿH‹<$H9|$•Â1À1Û„Ò„}ÿÿÿH‹L$H‹<$…À”ÂH9ùŒ‰H9ÙŒ]ÿÿÿ„Òu&éTÿÿÿ€H‹Hƒx •ÀHƒÃH9\$|D„Àu@L‰ö1ÉH‰ÚH‰ïèùÿÿH‹0‹F % =tĺH‰ïèwöÿÿH…À•ÀHƒÃH9\$}¼HƒÄ¶À[]A\A]A^A_Ã@H9$ŒÓþÿÿ„Òu0éÊþÿÿDH‹Hƒx •À¶ÀHƒÃ÷ØH9$Œ§þÿÿ…À…ŸþÿÿL‰î1ÉH‰ÚH‰ïèrøÿÿH‹0‹F % =t¸ºH‰ïèãõÿÿH…À•Àë®H5_-H‰ï1Àè:÷ÿÿf.„AWAVAUATUH‰ýSHƒìèÊùÿÿH…À„HƒìE1ÉA¸ H‰Æj¹Hü,H‰ïèû÷ÿÿZH‰ïYH‹L‹hL‰îèÇõÿÿH‰D$A‰Æƒøÿ„&L‰î1É1ÒH‰ïè·÷ÿÿH‹0‹F % =…™H‹‹@ HcÐH5Ã,H‰ï1Àè7øÿÿI‰Ä‹D$…ÀŽˆ»L=£,ë+f.„H‹‹@ HcÈL‰úL‰æH‰ï1ÀƒÃèdõÿÿA9Þ|OL‰îHcÓ1ÉH‰ïè/÷ÿÿH‹0‹F % =t½ºH‰ïè ôÿÿë´fDºH‰ïè‹ôÿÿé[ÿÿÿfDH‹D$ƒø4»)Ãt+L--fDA¸L‰êL‰æH‰ï¹è‡ôÿÿƒëuâHƒÄL‰à[]A\A]A^A_ÃHƒÄH‰ïH5-1Ò[]A\A]A^A_éA÷ÿÿH5•+H‰ïèrõÿÿfóúATUSH‰ûH‰÷H‹CxH‹+H‹KHPüH‰îH‰SxHcPHÁH)ÆH‰ðHÁøƒøueHcÒH‰ßL‹$ÑL‰æèÁôÿÿ…ÀtAE1À¹L‰æH‰ßH+èƒõÿÿ„Àt#I‹t$H‰ßèÂýÿÿH‰ßH‰EH‰ÆH‰+[]A\é|õÿÿH=+1ÀèõÿÿH5+è’ôÿÿfAWAVAUATUH‰ýSHƒìèZ÷ÿÿH…À„ÃHƒì¹H‰ÆE1ÉjA¸H‰ïH‰ÃH•-èˆõÿÿY^H…ÀtHÅ*¾ H‰ï1ÀèKùÿÿHƒìE1ÉA¸ H‰ÞjHK*¹H‰ïèEõÿÿH‹L‹`XZM…ä„#L‰æH‰ïèóÿÿI‰ÅHƒøÿ„ L‰æ1É1ÒH‰ïèüôÿÿH‹0‹F % =…–H‹‹@ ™H5L*H‰ï1Ð)ЉÂ1ÀèxõÿÿI‰ÆM…펄»L=(*ë%fDH‹‹H L‰úL‰öH‰ï1Àè²òÿÿHƒÃI9Ý|pL‰æ1ÉH‰ÚH‰ïèyôÿÿH‹0‹F % =t¿ºH‰ïèêñÿÿ‰Áë´fDºH‰ïèÓñÿÿé^ÿÿÿfDuA¸¹H‰ÆH‰ïH›)èéñÿÿHƒÄL‰ð[]A\A]A^A_ÀHƒÄH‰ïº[H5*]A\A]A^A_éžôÿÿH5ò(H‰ï1ÀèÍòÿÿff.„fóúATUSH‰ûH‰÷H‹CxH‹H‹sHHüI‰ÑH‰KxHcHHÆI)ÁL‰ÈHÁø…À~vHcÉH˜H‰ßH‹,ÎHÁàH)ÂH‰îI‰Ôèòÿÿ…ÀtFE1À¹H‰îH‰ßHV(èÈòÿÿ„Àt(H‹uH‰ßèxýÿÿIT$H‰ßI‰D$H‰ÆH‰[]A\é¼òÿÿH= (1ÀèNòÿÿH5(èÒñÿÿfUSH‰ûHƒìè¢ôÿÿH…À„¤HƒìH‰ÆH‰ßE1ÉjA¸ ¹H‰ÅHF(èÐòÿÿ^_H…Àt)H‹0Hƒ8öF u HƒÄ[]ÃfHƒÄH‰ß[]éRñÿÿfHƒì¹H‰îH‰ßjH¤*E1ÉA¸èzòÿÿZH‰îYH‰ßH…Àt HƒÄ[]é"úÿÿfHƒÄ[]é…üÿÿH5Y'H‰ß1Àè4ñÿÿ@óúATUSH‰ûH‰÷H‹CxH‹H‹sHHüI‰ÑH‰KxHcHHÆI)ÁL‰ÈHÁø…À~vHcÉH˜H‰ßH‹,ÎHÁàH)ÂH‰îI‰Ôèvðÿÿ…ÀtFE1À¹H‰îH‰ßHÆ&è8ñÿÿ„Àt(H‹uH‰ßè¨þÿÿIT$H‰ßI‰D$H‰ÆH‰[]A\é,ñÿÿH=z&1Àè¾ðÿÿH5ˆ&èBðÿÿfAWA‰×AVAUATUH‰ýSHì¸H‰t$dH‹%(H‰„$¨1À‹F ‰Ââ€ú€„úöÄ„‰H‹D$H‹Hx ÿÿÿŽìH\$`¹@1ÀA¹ÿÿÿL|&º¾@H‰ßèîÿÿº H‰ÞH‰ïèðïÿÿº H‰ïH‰ÆH‰D$(èëïÿÿ¹ÿÿÿH‰ï1ÀHR+¾èôÿÿL‹l$(H‹äA A¶EH‰Á‹ƒ‰ÂâDúD… DIƒÅA¶EH‰Á‹ƒ‰ÂâDúDtáE„ÿ„E‰û¨…Ý €ùv„€ù-„C A¶EI‰À‹ƒA‰ÂAÑêAƒâ„PM‰ìDIƒÄA¶$H‰Â‹ƒ¨uí€ú.„ü ‰Öƒæ¿@€þ;t„Òt%D=Dt €ú}…0M9å„/A¶$E1öÇD$ ÇD$0H‰Ð‹“é¼@öÄ…Ÿ©à…4öÄ„BH‹\$H‹H‹R% ‰Ó=…= H‹D$H‰T$XH‹p‰ÚH‰ïèeîÿÿé.E1Û€ùv…ÿÿÿA¶Eöƒ„uÇD$0MeÇD$ IƒÄA¶$I‰ÀöƒuîA€ø.„¤ A¶$E1öA»H‰Ð‹“‰ÖæDþDuIƒÄA¶$H‰Ð‹“‰ÖæDþDtáƒâu‰Âƒâ¿€ú;@•Æ„À•Â@„Öt<}…î ƒ|$ ~ A€|$ÿ.„‹ €ùv…1MU¾ H‰ïDˆ\$GL‰T$8è—îÿÿH‹t$HT#H‰ïH‰D$èŽîÿÿº H‰ïH‰ÆI‰ÇH‰D$èVìÿÿD¶\$GL‹T$8AO E„Û…B E„ötB¾H‰ïL‰T$8èƒîÿÿHƒìA¸$H‰ïjH‹t$(I‰Á¹Hè%èÛíÿÿ_AXL‹T$8‹D$0ƒøNHcðH‰ïL‰T$0E1ÿè3îÿÿHƒìA¸$H‰ïjH‹t$(I‰Á¹H=#è‹íÿÿ_AXL‹T$0A¶M‰ÐH‰Â‹ƒ€ú_t¨t!f.„IƒÀA¶H‰Â‹ƒ¨uî€ú_té%@=@„±D‰úL‰l$0M‰ÖM‰Åƒòƒ|$ L‰d$H”À!ÂL;t$0ˆT$GA—ÄD"d$G…-M‰é1ÉA¼1öIƒéM9ÎwvA¾9@€ÿ_tíƒï0AüÿÿÿtA¸ÿÿÿD‰À™A÷ü9ÇA¯üA)ðþD9Ç~$¾HY"H‰ï1Àè|ðÿÿMNÿ¾ÿÿÿ¹AüÌÌÌ qG$¤IƒéEäM9ÎvŠHcöH‰ïˆL$8èâìÿÿH‹t$H‰ïH‰ÂèRëÿÿ¶L$8„É…}A¶E<.„(<_„Ø<,„жЋ “A‰ÎAÑîAƒæ„ZE„ÿ„L‰êfDHƒÂ¶ ö‹uó€ù_tîM‰îI‰ÕL;t$0A—ÄD"d$G„ÔþÿÿIEÿA¹dM‰ð1öH‰D$8E‰æ1ÉE‰Ì„M9ņ6ÿÿÿA¾8@€ÿ_„9D‰àºgfffƒï0÷ê‰ðA¯üAÁüÁøÁú÷D)â1ÆA‰Ô‰ú)ÆÁú‰Ð1ø)Ð9ÆÅL‰ÀIƒÀ€x_„¤‰þ똄H‹Hx ÿÿÿ‡úÿÿH‹t$H‰ïèRéÿÿº H‰ÆH‰ïH‰D$(è-êÿÿéXúÿÿ„H‹\$H‹ öÄ„OH‹QHƒú„q òA(f/'‡¾ H‹QéFûÿÿDHÉ$H5 H‰ï1Àè˜éÿÿ„Hé#€ùuuÛIu¹H=c ó¦—À¾À‰D$ …Àu¹¾ H‰ïè•êÿÿH‹t$HRH‰ïH‰D$èŒêÿÿº H‰ïI‰ÆH‰ÆH‰D$èTèÿÿAN E„ÿ…#M‰ìM‰êé˜üÿÿ„IUA¶EE„ÿ…þ¶ÈI‰Õ‹ ‹L‰ê1öë#fDƒþñýÿÿ<_tƒÆHƒÂ¶ H‰È‹ ‹ƒáuÞƒþÏýÿÿ<_táM‰îI‰ÕéÆýÿÿfDL@‰þéíýÿÿD¹ÿÿÿH‰ï1À¾H$è]íÿÿH‹D$8M‰èD‰ñ¿ÿÿÿéþÿÿ„ëþfDA¶Uö“„!ýÿÿIUE„ÿt`A¶EI‰Õ¶Ðö“…"ýÿÿL‰ê<_„ýÿÿM‰îI‰Õé-ýÿÿDA¼ÿÿÿéüÿÿDI‰Õ<0uÁf„IƒÅA¶E<0tóë©A¶MI‰ÕH‰È‹ ‹éØþÿÿDL‹l$0L‹d$HE„ÿ„5H‹D$»E‰þH‹H‹P¸H)ÐH)ÓH…À é @H‰Ã1öH‰ïèûèÿÿH‹t$H‰ïH‰ÂèkçÿÿHCÿH…ÛÚE„ö…ÙM9ì†hL‰âL‰îH‰ïL)êèïèÿÿƒ|$ u E„ÿ…çHƒìI‰ÁA¸$H‰ïjH‹t$(¹H}èèÿÿA]A^H‹t$H‰ïè¦åÿÿHƒìH‰ïA¸$jH‹t$(I‰Á¹HÌèÎçÿÿA¶$AYAZøÿÿfDM‰èL‹l$0E„ÿ„¯þÿÿH‹D$»M‰ÄH‹H‹P¸H)ÐH)ÓH…Àúüÿÿé!ýÿÿf.„A¶EÇD$ ÇD$0D‹ƒI‰ÀAÑêAƒâM‰ìE„Ò…!öÿÿé.öÿÿ@H‹D$»M‰ÔE1öH‹H‹P¸H)ÐH)ÓH…Àˆüÿÿé¯üÿÿ„A¶T$It$H‰Ð‹“ö„ÖÇD$0E1ÉE1ö„‰×Ñïƒçt'¶FAƒÁ<.„Ç<_t#¶ÐHƒÆ‹“‰×ÑïƒçuÙI‰ôÇD$ é õÿÿE„ö…'¶VH‰Ð‹“ö„$HƒÆA‰þD‰L$0ë–fDA¶T$ƒD$ It$E1öH‰Ð‹“‰×Ñïƒçuéyf„L‰æ¶VLfH‰Ð‹“öÂuê<_„R<.„jö„_L‰æëµ@HQé3ùÿÿ@L‹l$(é}óÿÿfD¾H‰ïDˆ\$8L‰T$0èAäÿÿHƒìH‰ïA¸$jH‹t$(I‰Á¹Hºè™ãÿÿE„öAYAZL‹T$0D¶\$8„¾H‰ïL‰T$0E‰÷èìãÿÿHƒìH‰ï¹jH‹t$(I‰ÁA¸$HQèDãÿÿY^L‹T$0é¸õÿÿ„H‹t$HT$X¹H‰ïèyáÿÿH‰Æé²óÿÿ‰Çƒç¿@€ÿ;A•Æ„À@•ÇA þt0‰×çDÿDA•Æ<}@•ÇA þtH´é6øÿÿ€E1ÉÇD$0éèýÿÿ„H)é øÿÿ@òA(f/Ç}1ö¿è1âÿÿ¹H=H‰ÆH‰Ãó¦—À„À„ ¹H=öH‰Þó¦—À„À„E1íH‰ÞH‰ïèÄâÿÿH5Í¿I‰ÄèÐáÿÿƒ…ÔM…í„ÚH‹D$H¬L‰îH‰ïH‹ò@(¸è\âÿÿI‹EM‹uH‹X‹…Ôƒø~ ƒè‰…ÔM…ät#L‰æ¿èjáÿÿL‰çèráÿÿë H…Û„'H‰ÓA¶DÿHSÿ<0tæ<.EÓL‰öH‰ïè–àÿÿº H‰ïH‰ÆH‰D$(è‘àÿÿM…털ðÿÿA‹Uƒú†©ƒêA‰UéŸðÿÿ€A€}v„ùÿÿHƒìH‰ÆA¹1ÉjLB1ÒH‰ïH‰D$0èæÞÿÿA_XH‹D$ éÚøÿÿf„HÙé[öÿÿ@E„ö…ÇD$ éûÿÿf.„L‰ÂL‰îH‰ïL‰D$ L)êèjáÿÿL‹D$ M‰Äé~øÿÿD€ú_…ïýÿÿM9儿ýÿÿA¶D$H9öƒHþHDÐéÜõÿÿD©à„æðÿÿDH‹\$¾VH‰ßènàÿÿH…À„ÕH‹PH‹p(H‰ïA¿è?ßÿÿº H‰ïH‰ÆH‰D$(è:ßÿÿéeïÿÿD¾@H‰ïèóÝÿÿH‹\$I‰Å‹C öÄ„þH‹ éõÿÿ€Hñé;õÿÿ@D‰ÂM‰ìéÀïÿÿDE„öu[¶VA‰þHƒÆH‰Ð‹“é^ûÿÿDE„öu»¶VƒD$ HƒÆH‰Ð‹“é<ûÿÿ1Òéèýÿÿf„‹C éÔïÿÿ„H é»ôÿÿ@HÉé«ôÿÿ@ƒ…ÔE1äH‹D$Lt$`¹@LȺ¾@L‰÷H‹ò@(¸è¡Üÿÿƒø?gHcØE1íéýÿÿ1ö¿è•Þÿÿ¹H=yH‰ÆH‰Ãó¦—À„ÀuXE1äé üÿÿI‰ôA»éÂïÿÿL‰îH‰ïè÷ÞÿÿéòíÿÿA‰ûéªïÿÿè•ÜÿÿH5 H= 1Àè°ÝÿÿE‰ßéøðÿÿE1ÿéððÿÿH5 H‰ßE1äèÞÜÿÿ…À„6üÿÿéüÿÿM‰êéËïÿÿH5ÂH‰ï1Àè(Ýÿÿ„AWAVAUATI‰ô1öUSH‰ûHƒìèÜÿÿL‰æH‰ßH‰Åè—Üÿÿ…Àu[A÷D$ à…L9åt¹L‰âH‰îH‰ßè\ÝÿÿH‰îH‰ßèaÝÿÿH‰î1ÒH‰ßèDìÿÿƒ@H‰ÅHƒÄH‰è[]A\A]A^A_ÃE1À¹L‰æH‰ßHŒèþÜÿÿ„Àt‡¾ H‰ßè­ÝÿÿHoH‰îH‰ßI‰Åè¨Ýÿÿº H‰ßI‰ÆH‰ÆèuÛÿÿAN AöD$ tM‹d$Hƒì¹E1ÉL‰æjHDA¸H‰ßèÝÿÿZYH…Àt7¾H‰ßè†ÝÿÿHƒìL‰öH‰ßjI‰ÁA¸$¹HèàÜÿÿA[A_HƒìE1ÉA¸L‰æj¹HÆH‰ßè¶ÜÿÿAYAZH…Àt6¾H‰ßè ÝÿÿHƒìH‰ßL‰öjA¸$I‰Á¹H‡èzÜÿÿ_AXHƒì¹L‰æE1ÉjA¸ HH‰ßèQÜÿÿY^H…ÀtOH‹0‹F % =…tH‹‹@ HcðH‰ßè£ÜÿÿHƒìL‰öH‰ßjI‰ÁA¸$¹H¯èýÛÿÿXZHƒìE1ÉA¸ L‰æj¹HNH‰ßèÕÛÿÿA[A_H…Àt5H‹0H‰ßèqÚÿÿHƒìL‰öH‰ßjI‰ÁA¸$¹Hè›ÛÿÿAYAZHƒìA¸ L‰æH‰ßjE1ɹE1äHlènÛÿÿ_AXH‹L‹xë%fH‹‹@ HcðH‰ßIƒÄèËÛÿÿL‰îH‰ßH‰Âè=ÚÿÿL‰þH‰ßèÙÿÿI9Ä1L‰þ1ÉL‰âH‰ßè ÛÿÿH‹0‹F % =t§ºH‰ßèzØÿÿëž„¾VL‰çèÛÿÿH…À„æüÿÿL‹pL‹h(H‰îH‰ßL‰ñL‰êèÑÚÿÿ‹E % =…–L‹e¹HÆL‰öL‰çècÙÿÿH…Àt0K4HpH‰ÇH)ÂHRÿèGÚÿÿH‹EHƒhH‹EH‹UH‹@ÆA¶UH‹’+ ö„lüÿÿHƒì1ÒA¹1ÉjLNH‰îH‰ßèö×ÿÿXZéCüÿÿ€¹1ÒH‰îH‰ßèfØÿÿI‰ÄéTÿÿÿfDL‰îH‰ßè×ÿÿHƒìL‰öH‰ßj¹I‰ÁA¸$HÅèÇÙÿÿY^éüÿÿºH‰ßè3×ÿÿé€ýÿÿff.„óúATUSH‰ûH‰÷H‹CxH‹+H‹KHPüH‰îH‰SxHcPHÁH)ÆH‰ðHÁø…À޼HcÒH˜H‰ßL‹$ÑHÁàH)ÅL‰æèÕ×ÿÿ…À„‹E1À¹L‰æH‰ßH!è“Øÿÿ„ÀtmºH‰ßH5.M‹d$è¶ÙÿÿH‰ßHƒÅH‰Æè‡ØÿÿH‰ßH‰Æè¼úÿÿH‰ßH‰ÆèqØÿÿL‰æH‰ßH‰Âè£ÝÿÿH‰ßHcðèHÙÿÿH‰ßH‰EH‰ÆH‰+[]A\éBØÿÿH= 1ÀèÔ×ÿÿH5ž èX×ÿÿ„óúAWAVAUATUSH‰ûHƒìH‹/H‹OdH‹%(H‰D$1ÀH‹GxH‰îHPüH‰WxHcI‰ÄDhHÁH)ÆH‰ðHÁøHcÐHÁâH)Õƒøtƒø„åƒøt@H=1ÀèB×ÿÿfAƒÄMcäN‹4áA‹F © …^öÄÿu3<t/%ÿÀ= t#H‰ßè¨Øÿÿ¹Hª H‰ßH‰ÆI‰ÆèÎ×ÿÿH‹CMcíH‰ßN‹,èL‰îè8Öÿÿ…À„0I‹EH‹H‹D‹` Aä„H‹H‹H1öH‹RHTÑL‹:M…ÿt"‹z…ÿ„¸I‹HzH…ÒHDúI‰ÿtHcrH‰4$H‹E1äH‹@HTÁH‹H…Àt.‹R…Òt H‹E1äH…ÀtHcPE1äöD A•ÄAÁä„L‰öH‰ßèÅøÿÿH‹$I‰ÅHƒú u¹ H=À L‰þó¦—À„ÀtD‰áL‰þH‰ßƒÉèýÔÿÿL‰îH‰ßH‰ÂèÿÔÿÿL‰mHƒÅL‰îH‰ßH‰+è)ÖÿÿH‹D$dH3%(…þHƒÄ[]A\A]A^A_ÃfDE‹e D‰à% =u}I‹EM‹}H‹@H‰$Aä éAÿÿÿè ×ÿÿAƒÄI‰ÆH‹CMcäJ‹4à‹F % =uZH‹NHé L‰öH‰ß1ÀèrÖÿÿé?þÿÿDHÇ$E1ÿéèþÿÿ„H‰â1ÉL‰îH‰ßè0ÔÿÿE‹e I‰Çéwÿÿÿ@¹"1ÒH‰ßèÔÿÿH‰Áë–@L‰úIƒÇéOþÿÿ@L‰öè0ÕÿÿA‹F é‘ýÿÿè‚ÓÿÿfóúAWAVAUATUSH‰ûHƒìH‹GxH‹/H‹OHPüI‰îH‰WxHcI‰ÔBHÑI)ÖIÁþAƒþŽ[H˜IcÖL‹,ÁHÁâH)ÕL‰îè¯Óÿÿ…À„-E1À¹L‰îH‰ßHû èmÔÿÿ„À„ H‹SAD$M‹mH˜L‹<ÂAƒþtlAƒÄMcäJ‹4âH…öt\‹V A‰ÔAÁìAƒä…¸öÆÿu€út‰Ð%ÿÀ= u3öÆ„ïH‹H…Àt"H‹@Hƒø†aA¼ë f„E1äL‰þH‰ßèòÒÿÿ…À…ŠA‹G öÄÿu<t%ÿÀ= …ÝDL‰þH‰ßèýõÿÿH‰ßH‰Æè²ÓÿÿI‰ÇI‹wL‰êE…äuH‰òL‰îH‰ßHƒÅèÑØÿÿH‰ßHcðèvÔÿÿH‰ßH‰EH‰ÆH‰+HƒÄ[]A\A]A^A_éfÓÿÿfDE1À¹L‰þH‰ßH´è&Óÿÿ„Àu“éSÿÿÿDöÆtköÆtH‹Hƒx …ÿÿÿ€æ„ÿÿÿH‹E1äfïÀ¸f.B(AšÄDEàéùþÿÿfD¹ºH5m H‰ßè'ÒÿÿI‰Çéÿÿÿ€1ÒH‰ßè¾ÐÿÿD¶àé¸þÿÿDH…À„ªþÿÿH‹FE1ä€80A•Äé—þÿÿ@ºH‰ßèƒÐÿÿD¶àé}þÿÿH=È1Àè ÒÿÿH‰÷H5ÃèÑÿÿff.„fóúAWL=( AVAUATUSH‰ûHƒì(H‹/H‹OdH‹%(H‰D$1ÀH‹GxÇD$I‰ìHPüH‰WxHcH‰ÐHÑI)ÔIÁüIcÔHÁâH)ÕPHcÒL‹,ÑHÇD$Aƒü„þA÷E àulH‰ßèüÒÿÿI‰ÆI9Åt¹L‰êH‰ÆH‰ßè‘ÑÿÿºL‰öH‰ßèàÿÿAƒütdL‰uHƒÅH‰+H‹D$dH3%(…gHƒÄ([]A\A]A^A_ÃD¾VL‰ïèÛÑÿÿH…Àt‚L‰îH‰ßè{óÿÿH‰ßH‰Æè0ÑÿÿI‰ÆAƒüuœH‹T$Hƒúu¹H=yL‰þó¦—À„À„sÿÿÿ‹L$L‰þH‰ßƒÉèœÏÿÿL‰öH‰ßH‰ÂèžÏÿÿéNÿÿÿf„ƒÀH˜L‹ÁA‹@ © …˜öÄÿu<t%ÿÀ= …kL‰îH‰ßL‰D$èÏÿÿL‹D$…À„ŠI‹EH‹H‹‹p æ‰t$„ÍH‹H‹H1öH‹RHTÑL‹:M…ÿt‹z…ÿ…ðL‰úIƒÇHcrH‰t$H‹H‹@HTÁH‹H…Àt‹R…ÒtUH‹H…ÀuMM‰ÅÇD$é/þÿÿDE‹u D‰ð% =ueI‹EM‹}H‹@H‰D$Aæ M‰ÅD‰t$éòýÿÿHcPM‰ÅD¶t D‰ðÁà% ‰D$éÑýÿÿ€HÇD$M‰ÅE1ÿé¶ýÿÿ@HT$¹L‰îH‰ßL‰D$è6ÎÿÿE‹u L‹D$I‰ÇéÿÿÿDI‹HzH…ÒHDúI‰ÿ…ÿÿÿéÿþÿÿH5íH‰ß1ÀèƒÎÿÿL‰ÆL‰D$è#ÏÿÿL‹D$A‹@ éMþÿÿèpÍÿÿóúAWAVAUATUSH‰ûHƒìH‹GxH‹/HPüH‰WxHcH‹GI‰ÕDbHÐH)ÕHÁý…íŽ*McäJ‹4àJ åH‰L$öF „íH‹Fö@„ H‹L‹0M…ö„ˆHƒìA¸ H‰ßE1Éj¹HâL‰öèÊÎÿÿ_AXH…Àt H‹€x „¥ƒý„ß1ÒAöFt#I‹H‹PI‹FHDÐH‹H…Òt ‹p…ötH‹H‰ÑH5î H‰ß1Àè\Íÿÿ@L»8ƒý…L‰þH‰ßèÝÌÿÿ…À…­H‹CN‰<àL‹t$LsL‰3HƒÄ[]A\A]A^A_Ãf1ÒèiÍÿÿI‰ÆéÿÿÿH‹@H‹0H…ö„Kÿÿÿ‹F öÄÿu<t%ÿÀ= …/ÿÿÿH‰ßºèwÌÿÿH‰ßH‰ÆI‰ÇèYÌÿÿ…À…™1ÒL‰þH‰ßè4Üÿÿƒý„SÿÿÿAƒÅH‹CH‰ßMcíJ‹,èH‰îè!Ìÿÿ…ÀtE1À¹H‰îH‰ßHqèãÌÿÿ„ÀuH‰îH‰ßè4ïÿÿH‰ßH‰ÆèéÌÿÿH‰ÅL‰úH‰îH‰ßèÒÿÿ…ÀŽèþÿÿH‹uP¹H‰ßjHFE1ÉA¸èÍÿÿZH‰îYH‰ßH…À„&èÆÔÿÿL‰þH‰ßH‰Åè¸ÔÿÿH‰ÆH‰ßè}ÌÿÿH‰îH‰ßI‰ÄèoÌÿÿ1ÒAöFt!I‹H‹JI‹VHtÊH‹H…Òt ƒ~tH‹H‰ÁM‰àH5XH‰ß1ÀèŽËÿÿfDE1À¹L‰þH‰ßH|èîËÿÿ„À„1þÿÿL‰þH‰ßè[ÙÿÿH‰ßH‹l$HkH‰ÆèçËÿÿH‰EéþÿÿfDH‹CH5%H‰ßJ‹à1ÀèËÿÿ€E1À¹L‰þH‰ßH è~Ëÿÿ„À…Rþÿÿé@þÿÿH51ÀèãÊÿÿH541ÀèÕÊÿÿèÐØÿÿL‰þH‰ßH‰ÅèÂØÿÿéÕþÿÿL»8éiýÿÿóúAVH‰þHÐ1ÀAUH ½ATL%ÂUH‰ý¿çà SH+ L«Ðè_ËÿÿHƒ…øH5qHùûÿÿA‰Æë @H‹SH‹3L‰áH‰ïHƒÃèŠÊÿÿL9ëuå[D‰öH‰ï]A\A]A^é¢ÉÿÿóúHƒìHƒÄÃlobjlobj is not of type versionlobj, ...Invalid version objectv%ld.%ldverver is not of type versionalpha->numify() is lossy%d.%03d000original%dsnprintfpanic: %s buffer overflowCPOSIX%.9fwidthInteger overflow in versionv.Infvinfv%sundefversion::vxslobj, robj, ...version::vxs::_VERSIONv5.26.0vxs.cvxs.xsversion::vxs::()version::vxs::newversion::vxs::parseversion::vxs::(""version::vxs::stringifyversion::vxs::(0+version::vxs::numifyversion::vxs::normalversion::vxs::(cmpversion::vxs::(<=>version::vxs::VCMPversion::vxs::(boolversion::vxs::booleanversion::vxs::(+version::vxs::(-version::vxs::(*version::vxs::(/version::vxs::(+=version::vxs::(-=version::vxs::(*=version::vxs::(/=version::vxs::(absversion::vxs::(nomethodversion::vxs::noopversion::vxs::is_alphaversion::vxs::qvversion::vxs::declareversion::vxs::is_qvoperation not supported with version objectInvalid version format (misplaced underscore)Invalid version format (multiple underscores)Invalid version format (fractional part required)Invalid version format (underscores before decimal)Invalid version format (version required)Invalid version format (non-numeric data)Invalid version format (alpha without decimal)Invalid version format (trailing decimal)Invalid version format (dotted-decimal versions require at least three parts)Invalid version format (negative version number)Integer overflow in version %dVersion string '%s' contains invalid data; ignoring: '%s'Usage: version::new(class, version)Usage: UNIVERSAL::VERSION(sv, ...)Cannot find version of an unblessed reference%2p does not define $%2p::VERSION--version check failed%2p version %-p required--this is only version %-p%-p defines neither package nor VERSION--version check failed_ÀýÝvÒa…J;ÄؽÿÿàHÁÿÿhÅÿÿ ØÅÿÿL¸Æÿÿ˜ØÆÿÿ¬øÆÿÿÀ¨Çÿÿà˜ÈÿÿˆËÿÿˆHÍÿÿøøÍÿÿ(øÏÿÿ¤¸ÐÿÿÔˆÑÿÿ<HÒÿÿl˜åÿÿp(êÿÿD8ëÿÿtHîÿÿÀñÿÿ XôÿÿXøÿÿÀzRx $ð¼ÿÿpFJ w€?:*3$"D8Àÿÿ`(\@ÄÿÿdAƒZM SA[ I CHˆ„ÄÿÿÔBŽBE ŒD(†A0ƒe8L@R8H0V (A BBBA ÔÅÿÿè$Åÿÿü0Åÿÿ¢E†AƒJ 0ÀÅÿÿåBŒD†C ƒJð  AABD pP|ÆÿÿæBBŽB B(ŒA0†D8ƒGPlXN`PXAP¢ 8A0A(B BBBE þ 8D0A(B BBBE lÄøÈÿÿ¾BBŽB B(ŒA0†D8ƒDPRXN`UXDP8 8D0A(B BBBA D 8M0A(B BBBE ,4HÊÿÿ®FŒA†A ƒ„ ABE xdÈÊÿÿóBBŽB B(ŒA0†D8ƒD@RHMPYHA@_HNP\HA@ 8D0A(B BBBH D 8I0H(B BBBE ,àLÌÿÿ¾FŒA†A ƒ” ABE dÜÌÿÿÌA†AƒG R(K0[(A Y AAC D DAG D(M0V(D L AAG D AAE ,xDÍÿÿ¾FŒA†A ƒ” ABE ¨ÔÍÿÿHBEŽB B(ŒA0†D8ƒGðjøK€ZøBðiøK€ZøBð]øN€XøBðQøK€`øBðo 8A0A(B BBBD ¸øK€[øCðøK€]øFðLøH€[øAð^øK€ZøDðøK€^øBðjøJ€[øAð øM€XøAðЬ àÿÿ‚BBŽB B(ŒF0†A8ƒG@a 8D0A(B BBBD lHMPVHA@VHHP\HB@DHNPVHB@VHHP[HB@DHMPVHA@pHHP[HA@DHNPVHB@THHP\HB@DHNPXHB@'HLPSHA@{HHP[HA@,€ÜãÿÿFŒA†A ƒÞ ABE H°¼äÿÿFBŽB B(ŒA0†A8ƒGPú 8A0A(B BBBG Hü€çÿÿ³FBŽB B(ŒA0†A8ƒG@† 8A0A(B BBBK HHôéÿÿPFIŽB B(ŒA0†A8ƒG`Ì 8A0A(B BBBF d”øìÿÿ¯FBŽB B(ŒA0†A8ƒGPoXN`UXBPš 8A0A(B BBBC åXJ`VXDP8ü@ðÿÿŽFŽNI ŒH(†I0ƒN(G BBBGNUÀ0 ð j ¡T0OÍTÐ!ÞTFðTFU`,U`,.UÐ*@UÐ*UU (jU I}U IU I£UE·UEÍUÐ!ÞUÐ!ïUÐ!VÐ!VÐ!#VÐ!5VÐ!GVÐ!YVÐ!lVÐ!„VÐ!—V°!®VàK¿VàKÕV!U»Ë  pSj j õþÿo`€˜  n €P 0 ûÿÿoþÿÿo ÿÿÿoðÿÿo ùÿÿo=l ÀÐàð 0@P`p€ °ÀÐàð 0@P`p€ °ÀÐàð 0@P`p€ °ÀÐàðGCC: (GNU) 8.4.1 20200928 (Red Hat 8.4.1-1)GA$3a1€€GA$3a1¦GA$3a1pSxSGA$3a1€9 GA$3p950@ nSGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFY@ ¤ GA+GLIBCXX_ASSERTIONS@ ¤ GA*FORTIFY¤ „!GA+GLIBCXX_ASSERTIONS¤ „! GA*FORTIFY„!¥!GA+GLIBCXX_ASSERTIONS„!¥! GA*FORTIFY¥!Å!GA+GLIBCXX_ASSERTIONS¥!Å! GA*FORTIFYÅ!r"GA+GLIBCXX_ASSERTIONSÅ!r" GA*FORTIFYr"e#GA+GLIBCXX_ASSERTIONSr"e# GA*FORTIFYe#V&GA+GLIBCXX_ASSERTIONSe#V& GA*FORTIFYV&(GA+GLIBCXX_ASSERTIONSV&( GA*FORTIFY(Î(GA+GLIBCXX_ASSERTIONS(Î( GA*FORTIFYÎ(Ã*GA+GLIBCXX_ASSERTIONSÎ(Ã* GA*FORTIFYÃ*Ž+GA+GLIBCXX_ASSERTIONSÃ*Ž+ GA*FORTIFYŽ+\,GA+GLIBCXX_ASSERTIONSŽ+\, GA*FORTIFY\,-GA+GLIBCXX_ASSERTIONS\,- GA*FORTIFY-h@GA+GLIBCXX_ASSERTIONS-h@ GA*FORTIFYh@òDGA+GLIBCXX_ASSERTIONSh@òD GA*FORTIFYòDFGA+GLIBCXX_ASSERTIONSòDF GA*FORTIFYFIGA+GLIBCXX_ASSERTIONSFI GA*FORTIFYIÓKGA+GLIBCXX_ASSERTIONSIÓK GA*FORTIFYÓK0OGA+GLIBCXX_ASSERTIONSÓK0O GA*FORTIFY0OßRGA+GLIBCXX_ASSERTIONS0OßR GA*FORTIFYßRnSGA+GLIBCXX_ASSERTIONSßRnS GA$3h950€€GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950€€GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950€€GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950€€GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA$3a1nSnSGA$3a1nSnSGA$3a1¦«GA$3a1xS}S,@ .3+³ñ ¶y@ .3‰#-f9Ç9Â9‹# %-ä- '9inty{' )Eì< L¡$ Ew ‘EÒ ’L; “LåA ”EÈ) •Lâ% –‘í6 —‘h4 ˜yF' š‘Z1 ž‘8 ¬‘a ±‘h0 ¿‘|? Â!‘eZ’#ey @°£$ O¤j0 lB\1 = ØL €  Ä Ï= Ä LÔ L½5 ­ ¯   —5   N œ=R0 …T#0 §?U#0` V 9(v¸ è7xy #yE  zy Æ |E ô<”y Ešf uCšf -›6½9´1E(C ùO%EBµ3Fù G ‘ e  L',HË ‡6((s81 AA LS~™AEc'EJ?(n?(Ž6c Zm}'… ²èý ûý -"h ;#p 4,$x ¶.'$€   L é@€ 44 L l44é*!P®ëD7n ‘~ L [È!³ Ù<'b j( y@  )ÔH ~à Lß,S³~õy£A (BBÏ 8% ˆ:: %);¤ ?V «A y ;'B y {Cõ G‡ ˆ:I %)J¤ {Kõ OÒ ˆ:Q %)R¤ ïS y ¶AT À-U aö c ( ü+d (^seÒúg… YI Ô9[ ( Ô]f /h ö lm íBn‘ ú)o y tž fv ( ¨8w y ? xE p3F5«#<±7D%_rtLV`8V‡74iJCpIß=ym y L €$ c ‚.& y {( y ©* y ‹0 y H5{ žK|„y„(co :  L@C( D( ÅôÓZö!Óí*$ZÓA2 y=87 y; yqE 9 1²Q !5´ Bµ V) ef L )fÿ2qq{͆†¯4››¥»°°º 7í k:ï Ô2ð­  ^7ñ’  zôO ÅÅ »)üi þ T<ÿ­ @¢Ò@ ©$¢  n Q y y ƒ +Ž Ž ˜ €,£ £ ­ ±9¸ ¸  =Í Í × *â â ì Q÷ v ‹   µ#  . i 9 ~ D “ O ¨ Z ½ e Ò p ç { -%¢ _7­ “!† àw–Õç Ü× ç />Ø ÷ ?Ù  Š÷ L – L ¢ L Ó@Ó2 ÉÚ ¹  î2ã2 ‡ä2 -_ L z@ .0 ? 0 ˜ X4 5 ¼ - =à §> >Ô Æ @ ¤ R* A ° ‹ C y$ Ä# E ˜( š J ì0 í5 N*8 9( P6@  [àH n1 \àX à$ ]àh ¿0 j0 x N@ L ZP LUA!Ÿ@ c1!  yO!¡‘WA!¦@ e1!® yQ!¯‘! y Q"4Í `>"6 y D%"7 y¥ Í  #-Z6#.Z ƒ5$2 $ Z Õ=$ Ó þ $y ’;$ ¢ à %b ý %d Z "!%e Ó %fy P%gy &-%h Ó r %ÿÇ l=% ZJ@% ÓÂ%yš1% ZÕ%D°%F Z¤2%G Ó^A%HyÜ9&P 7&È l<&ø &&9 «1& - Ð&! P e` Lÿ‘(&%° 7&'È l<&(ø &&)9 «1&*- Ð&+ PDIR'¼R7IV(v‘ÁUV(wLNV(Eêv@#Û) y þ(/ ¡OP(1 #!op(*Êþ ˜*Ë"3 7%*Ë"3 *ËZL ±"*˹J"T+*ËE  ", *ËE "K6*ËE "ó?*ËE "Á**ËE "=*ËE "¼*ËE "H4*ËE ·*ËG2" }*ËG2#COP(2  #copP+yX˜+z"37%+z"3+zZL±"+z¹J$T++zE  $, +zE $K6+zE $ó?+zE $Á*+zE $=+zE $¼+zE $H4+zE ·+zG2"}+zG2#Ÿ+}½2$†+€¹J(>+‚ Z0í +‡ Š28X"+ˆ Š2<¾'+ŠøS@…/+ þSH £(8 e `*û¡ ˜*ü"3 7%*ü"3 *üZL ±"*ü¹J"T+*üE  ", *üE "K6*üE "ó?*üE "Á**üE "=*üE "¼*üE "H4*üE ·*üG2" }*üG2# Y*ý "3( {4*þ "30‰**¹J8â5*Š2@(* fLH;*˜LP!.* "3X Ì#(< ®î?P*§ß˜*¨"37%*¨"3*¨ZL±"*¨¹J$T+*¨E  $, *¨E $K6*¨E $ó?*¨E $Á**¨E $=*¨E $¼*¨E $H4*¨E ·*¨G2"}*¨G2#Y*© "3({4*ª "30¯ *« "38·*¬ "3@#*­ "3H Ó (G ì%†à (œ1% ^0,#3&Iop,$"3 >1,%3 ,'3 û>,(3 ž,*·b( ú,,y20 B,-y24 ÿ?,/½b8 K,0y2@ a,1y2D É,33H +;,4‰P ‘!,5‰X ã*,6‰` &#,8Š2h v,:½bp A=,<½bx è,=½b€ N,AG2ˆ E,CÒ w3,E3˜ d&,H`L  Û5,K—C¨ E,L—C° 60,N(3¸ W>,O(3¹ (=,^h2º T,`G2¼ /B,aG2½ €6,b 3À Y*,nG2È ù.,u<2É M>,z3Ð á&,{3Ø V0,}âVà Ï,~3è +2,Ãbð Ð5,€3ø';>,„Á',†õ2'5 ,‡õ2'$,Š—C'  ,Éb 'Þ ,‘Ïb('h(,“üJ0'C ,¤1%8'Ô%,¥1%P'Ð ,¦1%h'»+,§¬1€'Ž ,¨¬1°(ISv,©õ2à'Œ,«Õbè'c2,­3ð(Ina,»ø',¿_ '0,À_ '(,Á 3 '†$,Âõ2((Irs,Ôõ20',Õ 38'°,Ö 3@' ,× 3H',Ø4P' @,Ùõ2X'o>,Úõ2`'³:,Ûõ2h'4,Þ"3p',ß Ux',á U€'92,âÛSˆ'!,ãõ2`'ù8,æ<9h',è"3p'P:,ë"3x'Ç,ì3€'h*,í 3ˆ'¨,î 3'Õ;,ñZ˜'9 ,ò '.,ôh2¨'+<,÷G2ª' ,ù(3«'­,ú(3¬'÷3,û(3­'9,ýõ2°)T,Ûb¸)M ,¥aè)Š,/¥að)ƒ,=5bø)u6,?Ó)A,@Z)Â,BŠ2)v:,DŠ2) ,Fy)R,Iy)\,JÓ ) ,K 3()¿,L 30)ÿ6,M 38)†',NZ@)8,O4H)* ,Põ2P))C,Qõ2X)Ù,Tõ2`)s,Uëbh)–9,V4p)‹,X(3x),Y(3y)¦,Z(3z)”,[(3{)z,\(3|)6,](3})b,^(3~)J,_(3)à,aZ€)ú,bõ2ˆ)×!,d•)J,fy2˜)¹,hy2œ),ly2 )4;,oy¤)°,pñb¨)ã,s 3°)M,t 3¸)¿,u 3À)j6,v 3È)¯,w3Ð)ÿA,z 3Ø)Î:,} 3à)‹.,€ 3è) , 3ð)›?,™ 3ø)Æ,šõ2)–",›õ2)7,œõ2)X,3)k,Ÿ÷b )’ ,¢38)$,£3@)>,¤õ2H)¹",¥3P)~,¦3X),§3`)a,¨3h)ä,©3p)m;,¬3x)á!,¯Z€)ŠC,²D>ˆ)Ò,³"3) ,´"3˜))*,µ"3 )N,¶"3¨)b),¹âV°)â<,»y¸),¼y¼).,½ZÀ)‘8,¾cÈ)ú2,¿ZÐ)J,Ä3Ø)ü#,Åõ2à)„&,Æõ2è)Á1,Éyð) ,Ìy2ô)ŸB,Í(3ø)…8,Î(3ù) -,Ïh2ú),Ñyü)±,Óy2)û<,×y2)Á8,Ø c)ã2,ç3)§5,êc)H,ìþ )m ,îD>p)É,ïöJx)¢,ð¹J€)þB,ñ¹Jˆ),,ùD>)^3,úy˜) ,ýŠ2œ)õ%,ÿ(3 )Ÿ,(3¡)û ,(3¢)Â,(3£)C,}¤),}¨)·,q¬)Ú4,q°*Ian, Š2´)B, Š2¸)ã',Š2¼)«&,Š2À)1,Š2Ä)Í4,ÓÈ)ö ,ZÐ)ê!,×5Ø)o,!cà)"1,#›2`)Ï,%Š2d)¨,'^h)Ë8,)õ2p)a6,+y2x)$,,¹J€),.¹Jˆ)/,/¹J)[@,1¹J˜)â,3¹J )Å;,6Z¨)C$,7¡°)Ý,8¡¸),9Š2À)Ï7,:G2Ä)ª!,;(3Å)¾:,=G2Æ)«0,>(3Ç)÷6,F(3È)Ã<,G(3É)† ,L-aÌ)¬,,N(3Ð)K,SSÑ)É,WyÔ)¯',Y(3Ø)35,[Zà)29,\õ2è)%,aõ2ð)",bõ2ø)\.,cõ2 )»=,dõ2 )2,fõ2 )»,gõ2 )i.,jõ2 )kB,kõ2( ) ,lõ20 )æ1,mõ28 )þ$,nõ2@ )'7,oõ2H )2-,põ2P )+,r)cX )–@,s9c¨ )Ž?,t9c( )j3,uõ2¨ )Ñ#,võ2° )%,wõ2¸ )ä.,xõ2À )Š%,yõ2È ) ,z3Ð )ü,|3Ø )‘.,}ôEà )4,~è )j,Icð )3C,€G2ü )*8,ˆ(3ý )ÅA,‰(3þ )i5,3 )M ,‘3 )¸<,ŸYc )m', 3 )ñ9,¢( )f ,¦3( )l7,¨30 )5 ,­_c8 ).',®¹J@ )¨,¯¹JH )È6,³ecP )œ/,¶3X )H,·3` )† ,º¿5h )0,»kcp )þ,¼kcx )®?,¿õ2€ )•,Àõ2ˆ )Ï>,Áõ2 )\+,Âõ2˜ )m$,Ãõ2  ) ,Äõ2¨ )’,ÆÈa° )2,È3¸ )£-,É3À )??,Ì‘È ),Ï.^Ð )*,,Ð.^Ø )´&,×.^à )+,ÙQ^è )$(,Ü^^ð ) ,ß…^ø )þ ,â3 )),è3 )° ,ë3 )´ ,ï3 )r#,óõ2 )þ,õ3( )g7,÷qc0 )ÜB,ûc8 )@,ýxa@ )J<,sbˆ )‰@, wc )², y˜ )å,È]  )ü","}c¸ )ÎB,-§JÐ )“,/Ø SV(O B%1%!sv-çƒ% ¾.-è( ˜)-èŠ2 W8-èŠ2 #-é.7AV(P %!av-öÐ% ¾.-÷à: ˜)-÷Š2 W8-÷Š2 #-ø^:HV(Q á%Ð%!hv-û"& ¾.-üh; ˜)-üŠ2 W8-üŠ2 #-ýæ:CV(R .&!cv-ño& ¾.-òX: ˜)-òŠ2 W8-òŠ2 #-óÖ9 b5(S |&“-Ã&¾.-09˜)-Š2W8-Š2 #-<GP(T Ï&!gpP. ~' Œ=. õ2 ^&. ³J s5. D> š(. Š2 ê. Š2 $8. 3 ë4. 3( À6. D>0 R . 38"È5.E@"Ù(.E@ Œ). =HGV(U Š'!gv-ìË' ¾.-íÐ9 ˜)-íŠ2 W8-íŠ2 #-îN9#io-(¾.-û;˜)-Š2W8-Š2 #-n; ¬(W (`+?;(,+C»WP=`+Ìä(é+Í G2·$+Î G2ž5+Ï h2C+Ð y2i+Ò y2v++Ó y2 2+Ô âVC+Õ —C¿+Ö‰ …+× y2(Å.+ß–V0 Ë*(Z ö(ä( R0/l) |*/ C= h/ Y :/ h2 ¬B/ e Î&/ G2 Þ/ ‰ \/ õ2 5/ Z(XPV([ y)#xpv -õÀ)ê0-ö3‹(-ö=9-öÏ-öI= ‡(\ Í)|(-ù"*ê0-ú3‹(-ú=9-úÏ-ún=>-ûÑ< Q(] /*ô(-„*ê0-3‹(-=9-Ï-“=¥&-Ñ< 0(^ ‘*0-ô*ê0-3‹(-=9-Ï-¸=>- Ñ< ›$- Ž<( Œ(_ +¹0-d+ê0-3‹(-=9-Ï-Ý=>-Ñ< ›$-Ž<( ç(b q+ ¿A(0 À+ ê00 3 ‹(0 = »40 ‰ ˆ>0 ‰ ð)0 3 "(c Í+ ¦ 1‡, ê01ˆ 3 ‹(1‰= ..1Š v1‹ m(d ,0-4,ê0-53‹(-5=9-5Ï-5>>-6Ñ< ›$-7Ž<( á(e Œ, ´Bh2 P- ê023 ‹(2= 92 Ï2^K G/23 .32€K( 2¢K0 Ç2ÄK8 ¯(2Z@ — 2æKH Ý2D>P S92Š2X ¤2'>\ i82y2` w(h ]-vˆ-^h.ê0-_3‹(-_=9-_Ï-_V>>-`Ñ< 2"-bH9(bC-o{>0Ë,-q Á8W-r Á@g,-s ÁHr<-t ZPÛ1-u 3XØ -v Z`ð=-w 3h°6-x Zpo -y 3x–4-z e€-{ G2 º*(i z.h. Ô@/ ð. p/ ‘X E>/ ‘X å / °X ï:/ ‘X ¨9/ ‘X „A/ ÞX( 9/ ýX0 ì/ ‘X8ANY(j ý.+any(Þé/,I (ß (,(àõ2,I;(á3,6(â 3,((ã3,º(ä3,È(å"3,@(æZ,ƒ(çÓ,ñ8(è y2,ð(é Š2,b(ê Á,Š!(ë Ò,<(ì ‘,r0(í (3,_(î Õ2,ˆ;(ï J306({"0©?(|±]<(}¿Y (~ ( l(l /0+50(’0Ò)(‚·]’(ƒ Ò („ Òú(…Â]’(†±] ì(‡±]( ` (m Ÿ0t (-bô0[2-c3Ñ&-dÒâ+-eD3`-fD3÷!-g3 E (q 1 I3C1 ñ 3 ‰ ù3&K ¾!3' Š2 33( Š2PAD(r ƒ% º(s ]1 s(3+¬1 å3, ‰ %3-0K þ3. ‰ ã 3/¹J "30 Š2 T (t ¹1 ` 03L<2 õB3MZ ø53M3 }%3M5Fö4h ”/5Hyp Ç5Iyt €)5J ìx 55M9€ ˆ 5NS‚ …"5Oü4ƒ é75Q 5ˆ @5Y ø : 5[5˜ 5\"5  ¢@5]ö4¨ ;5^ (° ½@5_ ¡¸ ©>5`yÀ } 5b(5Ä#A6P3/l5+Që4P3 e 5 Lã47 5 5 e85 LE7‰D5×4º/7ŠD5÷ 7‹D5S.8 y :y5.n58y5R.8 y8y5±9<®5óô9>¿5¢5 š9NÒ5Œq:7ŠQ/;¤!6ƒ;;§ y2P);© ZO);ª "3Þ.;« 3Q/;¯ã50E-„¢61P'11"1Ý#14:1 1Æ(1Ù1^51¶ 1Š 17 1R 1Æ 1ë11–?-™-6HE-»¹6!he1 í6 Ú61$ <9 š1% = 1)¦QHEK-¼ù6!hek 1-.7 ò/1.Š2 …1/y2 –615ü4-é°7-éZ~-éÁª-éÒ˜-éÞ­-éõ2´-é09’=-é3~-é69X-éB9| -éH9 ´+È<š09 ê0<›3 ‹(<›= 9<› Ï<›Ö? Ç&<œ´@ Å=<œË?( )<œ30 ç=<œŠ28 Û%<œ‰@ ˜<œ‰H e<œP A;<œº@X *<œŠ2` Q;<œŠ2d Ç3<œ(h Ê<œŠ2p Õ-<œŠ2t ý<œÀ@x 8 <œÓ€ “ <œZˆ p!<œõ2 o+<œ‰˜ 8B<œ‰  q <œ‰¨ Ÿ"<œ‰°"¦"<œE¸"v,<œE ¸ + <œD>À°7<9®6Ã&³5-îÐ9-îZ~-îÁª-îÒ˜-îÞ­-îõ2´-î09’=-î3~-î69X-îB9| -îH9,-óX:-óZ~-óÁª-óÒ˜-óÞ­-óõ2´-ó09’=-ó3~-ó69X-óB9| -óH9,-øà:-øZ~-øÁª-øÒ˜-øÞ­-øõ2´-ø09’=-ø3~-ø69X-øB9| -øH9d+-ýh;-ýZ~-ýÁª-ýÒ˜-ýÞ­-ýõ2´-ý09’=-ý3~-ý69X-ýB9| -ýH9À+2-û;,-Z,~-Á,ª-Ò,˜-Þ,­-õ2,´-09,’=-3,~-69,X-B9,| -H9P-2-Ž<,-Z,~-Á,ª-Ò,˜-Þ,­-õ2,´-09,’=-3,~-69,X-B9,| -H93K,-áÑ<,d-â Þ,y5-ã 3,o2-ä ½2,A-å (33¹>-è=,…+-é Á,Ì2-ê Ò,°@-ë =,Í-ì (3í63DC-ðC=,N-ñ C=,”'-ò ä(2-ön=,!-ö,-öZ2-ú“=,!-ú,-úZ2-¸=,!-,-Z2-Ý=,!-,-Z2->,!-,-Z2-5'>,!-5,-5Z Ð3-: Š2D>D3D>"&4>ô02-_{>,!-_,-_Z2-l >,â(-m >,<-n (° 4±>.¦>£(=±> "<÷> Ñ&<G2 J< G2 Ã2< h2"<Â> × (<&R? ç<' ‰ v<( ‰ Õ<) õ2 Ð<* õ2 ¼ <+ ‰ Ú€<-z? ä6<. G2 Q%5@<áîE]=<ã*DÊ<ä Š2Õ-<å Š2 6cp<æDÕ.<è Š2Í<é (3C <êîE 6me<ë7E( <ì ôE0?<í Š28A<î h2<£ <ï h2>h2G25@<ô€F]=<ö*D»<÷*D /<ø$*Dî <ùË?6cp<úD T@<ûD$Ó<üŠ2(6B<ý7E03 <þZ85<ÂF]=<*D£7< y2¹1< y2 6me<7E5 < G]=< *Dô< *D­<  õ2­A< Z5<G6val< y58<£G]=<*D»<*D6me<7E6B<7E6cp<D ¥ < (3$Ø < y(ƒ#<" y,1<# Z05(<&H]=<(*D\(<)*D6cp<*DT@<+D,<, Z–7<- y2 %<. y2$5`<1ÖH]=<3*D6c1<4 y6c2<4y 6cp<5DÊ<6 Š2Õ-<7 Š21<8 y2ƒ#<9 y2 ¥ <: (3$6A<;7E(6B<;7E06me<<7E87<<=ÖH@3 <>ÖHN G2æH L 5hKLË'ö3‰ 3!öJ Ý23"öJ j3# üJ p3$ üJP1C13$Kt;3 $K”3%*KüJÅJ6K¬13M^Kç33M3—&3MD>2€K!22Z2¢KË.2"3ê2ð.2ÄK %2"382J>2æKc/2 3 92=2LE2P>æ2(*º ?L@*»¹Jsv*¼õ2iv*½Áuv*¾Ò 9*¿L4"3ZLD3KL?L2*˜L,l"*"3,¶;* ¹J,ï'* 32* ½L,S!* "3,¤**  ¹J î&0?1&M Á?3 Z ,)?4 Z ª7?6 ¤ V=?7 ° _4?8 Z #?9 Z —8?: Z( V @*hM L+@, Z ë&@- Z '@. ° 8@/ Ó¼3€AHÊM ,AMÊM'!AVÊM€'C A[ÛM'Ç0AbìM'ÛAieÿ'AnýM eÛM8L eìM8Lÿ eýM8Lþ eN8Lÿw ¢?HB+‘N }B- Z ¬ B. Z ÉB/‘ ÖB0‘ ZB1‘ öB2‘( ¦4B4‘0 }B6‘8 îAB8L@9PCh WQ¹CjZ¢ Ck ¡zCqWQ»CuZ Cv ¡ úCy&M(/CzZH:C{ ¡P±C}]QX¾ C„2 `H"CˆZ€,!C‰ ¡ˆ1CŒcQ<6Cy˜¼C“Z ÙC” ¡¨®2C—ð °8/C›ZÈnCœ ¡Ðž+CŸiQØ(0C¢yàs=C¦Ç è)–>CªZ)~C« ¡)C®oQ)þCµ½L)-C¶ZH)û;C· ¡P)ë C¹uQX)(CÀ `)ì(CÄZ€)t.CÅ ¡ˆ)MBCÈ{Q)CÏN˜)FCÐZà)¡CÑ ¡è)z"CÓQð)ZCÚ‡Qø)’CÛ ¡)#C݇Q)@.CáQ)üCâ ¡)Q CäQ )€-CìZ()Cí ¡0)û/CðZ8)Ä@Cñ ¡@)-Cô yHhM&M2 ð Ç ½L N` õ#Cõ‘N"31&ÈQÄ41'õ2b!1( ¡ Ú)1ER \1F 5R <51G4 R1H h2 C1I h2 ö/1J Š2ÈQ435RD33Š2R Ù+H1MËR SC1O3 "1Sõ2 ;@1T3 ?1U Š2 w 1V Š2 \ 1WËR &isa1X3( &1Y30 ã1ZD>8 « 1[ Š2@RY/1g÷R1h =B1i ÷R= Ë81l€S :1mÑR £%1n 3 d1o <9 ‡1p y2 •*1x y2 Õ+1y€S j1{Š2( ö1|Š2, £1Š20;R %Ø+ ÕS *?+!ÕS Ÿ:+"à Â"+# yÐ ¼?+$ (3Ô c+%h2Ö†S +(†S¨+šóS01çSl)(+'XTq +( "3î+* üJ6cv++ D>ð.+- y2¯>+. 3  %(+3«Tq +4 "3î+6 üJ6cv+7 D>6gv+9 3D8+: 3 ·0+u Uq +v "3j%+x õ24*+y "3lC+z õ26cv+{ D> Û3+| U(ÛS2+Œ7U7svp+ 37gv+Ž 35+’]U6ary+“ 36ix+” Á5+–ƒUW3+— y26ix+˜ Á5+šªU6cur+› Á6end+œ Á5+žÑU6cur+Ÿ õ26end+  õ22+‘V7ary+•7U,ë +™]U,A5+ƒU,¦:+¡ªUè?0+ŠeVµ+‹ eVÏ(+U7.+õ2 4+¢ÑU’+¤ üJ(¡•3+Ä–VÆ>+Å"3/+Æ õ220+ÙâV,+ÚT,<7+ÛXT,6#+Ü«T,Œ7+ÝV,?++ÞkVþ)>X+ÿ»W:+ G2.+ G2 + h2Ï + y2÷+ ‰ 1+ ‰U+ ZŸ+ õ2 ¢1+  õ2(V(+  Z0P(+  Z8\+  Z@¬+  (H>+Ë?P2`+@àW,$+A;(,&>+BèV/20+Ú_Xè +Û 3+Ü_Xe+ÝeX 8+ÞeX`+ß y2 —#+à y2$+á y2(Ú+â y2,(àW ²*+çàW4y‘XD3õ2C=xX4Š2°XD3õ2C=—X4yÞXD3õ2C=õ24y2¶X4yýXD3C=«BäXh. D GY&valD !6 Ð"D f ûD y2 n D D>ƒ D Y æ(D¢Y ËD¢Y zD õ2 Y'D Z Þ>D Z ?D õ2 SYX D SYÞ?€D"s] (D&s] Ÿ4D'!6 a*D(y %D+y D-y ë D.y] ¡D/y](&psD0y]0 Î1D4 y28 D5 y2<  D6 Z@ #D7 ZH à0D8 G2P €(D9 G2Q 5$D; G2R .D< (3S ˆD= y2T ©D> "3X Q4D? "3` ¦ D@ õ2h 5DA h2p £'DB h2r “DC y2t òDD õ2x `"DE y2€ ‚DF y2„  #DG Òˆ n@DH Ò ZBDI(3˜ êDJ G2™ {!DK h2š ?)DL y2œ P2DM "3  ­/DN õ2¨ `DO]° }DP õ2¸ \'DQ ZÀ ~>DT ZÈ {>DU ZÐ .DV ZØ yBDW Zà EDX Zè ³DY Zð 1(D^ ½2ø ½2D_ h2ü (D` G2þ šDa G2ÿ'J-Db 3'¹ Dc H9'"BDd 3' Df …]'Dg •]@' ;Dh G2T' (Di G2U'D2Dj G2V'tDk G2W'Š5Dl âVX'›Dm P`'@Dn ½2`'Ê+Do ½2d'ï7DrÁh'ƒBDsÁp'(Dtex'è$Dv(3y:W&DxEx:DyEx: DzE x:p4D{E x'q(D}(3{'–D~ G2|´YGY¨Y !6•] L y2¥] LÞ?D´Yé/±]ö½]n(^†(D3‡($^©?($^È] ¬(Q^^^4y.^D3 /(R;^A^Q^D3õ2 ‘(S^ Z;(Uk^q^4(3…^D3õ2 Ç(V’^˜^£^D3 l®^.£^â8(u®^Y:(w®^ò(y®^’({®^®(}®^Ñ(®^(ƒ®^±8(…®^ (ˆ®^É-(Š®^:3(Œ®^(Ž®^ l__ LO_ !(__c#(’®^†9(”®^0(–®^*(˜®^;(š®^ß(œ®^¼,(ž®^:!(¡®^& (£®^Y(¥®^ë(ª®^d(¸ R2X#(º R2Á(¼ R2 l7` L@'`)(¿7`Û(Å®^ lf` LÿV`H (Úf`‡(Ûf`ý(Üy5 €`.’`%6(Ý`˜ (‹±>D9(Œ±>Ò(±>ô*(ޱ> -î`.(·ã`H(±> 4a.^<(a (–®^;ê%E(¡ka1{1Ï1ù:1!&1(4101C&k(¶y5ì>H(F•a6pad(G•a 1%¥a L œ%(P²a¸aÈaD3"3 R5(aÕaÛa4y2ôaD3û2û2 Â$(dJ> õ&(fZL …(gb!b4"35bD3"3 (h²a Q,(iObUb4ysbD3Z Q Í(l’^(sªb6fn(t J36ptr(u ( ž6(v€bð.y2kXšJ}J¥] Zëb L:y Ác L4ªbŠ2 ()c L õ29c L õ2Ic L G2Yc L "03“QÅ5l)( õ2c L"œ0( t2¸ (ªt2¬E’y5µ-E&y5 bËc.H7EÅÀc bãc.Ç EcØc¢Eþ«2 c2d.ýcË'E d t2%d.d@0E %dE ®^õ E d R2\d.QdF1E \dü(F&Û2ÜF(D3ZF-è2!F1(3‚2F4(3,FK×5$:FL×5%$FXÛ2:F[ñb"@F\yy7F]y1&FaÁ 0FeÛ23FfÛ2FiV F“Û2¶%F§Û29AF©yý'F®ys/FåBb2Fç3¾FèÒÖ"FëÛ28Fó1%Fù(3 -ªe L÷Fúšeô0(4^î(6^0EG=Ÿf1ñ1W131'1'1ä#1 11I31R$ 1ò, 14 1vA 1F# 1(/1@:1 1 1+1¤1ã91V-1ƒ41ª+1&1& 12?1Ð01,1v11Í1ê; :¯f LŸfc9Gƒ¯f u.Ðf LÀf×G Ðf R2ñf Lÿáf:(N ñf /3g.gÍ$(bgÛ(cgG(dg(eg)+(fgù7(gg0EH8i1u1˜;1ô1Á1L1à;1ç:1Ç!1¿1= 1Œ& 1= 1d$ 1 1,1q1Ï!1û1Â/1º1­1¯1>1ú1Á/1¹1¬1®1=1è1õ1‘-1×& 1±#!1y2"1Ñ #1-$1Í<%1$&1’<'1ê,(1± )1 <*1[+1q*,1õ-1 .1ã)/1Ÿ01â)11µ521 31´541 5161&7181&91«:1 *;1W6<1V6=1Z>1š ?1- @1ÝAA1u%B16)C1?<D1E1iF1— G1gH1ñ4I1ÚAJ1MK2(Z[i7nv(ZÞ7u8(Z`i8i G2pi LD,(Z[i2([ i7nv([Þ7u8([`i}i3([ iVh+¥]P í6¿i >øi <54 <ôaÐi øi j Lýi< >$" j @j =b ÈàRŽœ~k>Y ÈD3 ?cvÈD>€|@a ÍyAaxÍ y2¿¹Bo.Í 3 AspÍ 3=;BÍ y2caCð-k<>44 ÆTŸB<6~k¢šDend7~k l ŸEVS~°FUvFR|G!S‹°hkFU çà FTvFQ ÀTFR ¸THnS˜°FUóUøiIã ¼!œûkJY ¼D3  Kcv¼D>JFH¥!”oFUóUFTóTFQ ¼VFR2IçˆàKPœoJY ˆD3‹ƒKcvˆD>öêLspŠ3‹LaxŠy2þMo.Š3nhMŠy2âÞCpànLverŽõ2&Lsv0õ2ÍÁLrvõ2YONlen‘‘°Mç’4àÈMÑ&“ Š2O`MËämLsv1• õ2Ÿ™Cà`mMî0žoðêG¡M¥°~mFUsFT}GÊN²°¨mFUsFT}FQ‘°FR2G O¿°ÍmFUsFT ðWEO̰FT‘¨GtLÙ°ümFUsGLæ°%nFUsFT~FQ}FRBGŸL{“HnFUsFT~FQ1GåLó°fnFU}FTVGõL碄nFUsFT}GM±œnFUsGDM ±ÅnFUsFTFR‘¨”1!ERM±FUsFT~Pó¯L Š oQ°; 9 R0O'±Ü%I…1ƒ°!œ”oJY ƒD3b ^ KcvƒD>Ÿ › HÅ!”oFUóUFTóTFQ ¨VFR5IV%p° Ôœ¡qJY pD3à Ø Kcvp D>I ? Kkeyp14Æ ¾ Jœ p:y- % Lspr3˜ Œ Laxry2( Mo.r3© Ÿ Mry2j d C0UqMÒ võ2ú Lretwõ2a_CpqMúxõ2ˆ„Gý ¥°ÇpFUsFT~G!0±üpFUsFT~FQ ™SFR7FX0Eu!=±FU …SS*qT_py(E@!J±FUsFQ|FR}FX8FY0Pó¯È r~qQ°À¾E„!W±FUóTFT €SI¼bÐ!¢œ$sJY bD3çãKcvbD>'Lspd3¢œLaxdy2øîMo.d3wMdy2SNrUØkÍPó¯Ù! dwrQ°ÏËG"¥°rFUsG@"0±¾rFUsFQ ™SFR7FX0GU"¿°ãrFUsFT …SGa"W±sFT ¡SEr"¿°FUsFT ðVI½ NEœ›uJY ND3KcvND>‹LspP3LaxPy2WQMo.P3¦ MPy2MÒ Q õ2™—Cp`tMúUõ2À¼G[E¥°tFUsFT|G}E0±DtFUsFT|FQ ™SFR7FX0EüE=±FU …SCÐVuLrsW û2øöC±tMú^õ2HîE±FUóUGšEd±ÛtFUsFT ¾TFQ1G©E±ótFUsG´Eç¢ uFUsG¿E±#uFUsGÍEê†AuFUsFT|EØEq±FUsPó¯E PuQ°B@EFW±FT ¡SIs&+ I³œÚxJY +D3oeKcv+D>ëáLsp-3f`Lax-y2½±Mo.-3KEM-y2¿»C@ŽxMÒ 2 õ2ýõCàvMú3õ2]YGI¥°vFUsFT}G£I0±ÄvFUsFT}FQ ™SFR7FX0EÄK=±FU …SVðLrs5 õ2•“Lrvs6 õ2¼¸M¿#7õ2ûóMÎ 8€]WC0lwMúI õ2¨¦HÊJ±FUóUG>J¥°ŠwFUsFTGsJ碨wFUsFTG~J±ÀwFUsGŸJê†ØwFUsGªJq±ðwFUsGêJ0±%xFUsFTFQ ™SFR7FX0GYK~±VxFUsFT ¾TFQ1FR@?$GrK‹±sxFUsFQ0E­K‹±FUsFQ2Pó¯vlLsp3÷ëLaxy2„~Mo.3ÓÍMy2ICCPhzLver$ õ2ÊÈC€zMú%õ2òîGo(¥°ÎyFUsFT|G(0±zFUsFT|FQ ™SFR7FX0EÂ(=±FU ÐSV°Mú'õ2*(Gž(|ŒQzFUsH´(±FUóUPó¯5(‘zQ°OMEÎ(W±FT ÌSIu Ð*¾œ€|JY D3|rKcvD>øîLsp3}mLaxy2.(Mo.3wMy29 3 CÀ;|MÒ  õ2ˆ † C ò{Múõ2² ¬ G*+¥°¡{FUsFTvGH+0±Ö{FUsFTvFQ ™SFR7FX0E‚+=±FU …SV€Múõ2ý û GX+V$|FUsHt+±FUóUPó¯å*pd|Q°"! !EŽ+W±FT ¡SIP`,¾œS~JY D3O!E!KcvD>Ë!Á!Lsp3P"@"Laxy2#û"Mo.3T#J#My2 $$CP~MÒ   õ2[$Y$C°Å}Mú õ2…$$Gº,¥°t}FUsFTvGØ,0±©}FUsFTvFQ ™SFR7FX0E-=±FU …SVMú õ2Ð$Î$Gè,èŠ÷}FUsH-±FUóUPó¯u,7~Q°õ$ó$E-W±FT ¡SW‚ºFœ>Y ºD3 %%?cvºD>ƒ%%Asp¼3Ä%¼%Aax¼y2,&"&Bo.¼3¥&›&B¼y2c'U'Avs½ õ2)((Arv¾ õ2±(«(Bç¿4)ú(DlenÀ ‘°BÑ&Á Š2B*6*B^ õ2×*Ç*CÀÍBeÉõ2‡+ƒ+ReHÙ°GžH˜±­FUsFT~FQ zTEïH²°FUsFQ0FR"C€ëBî0ä oÃ+½+OñG/€Búõõ2, ,EH±FUsFT}Xó¯FUsFT}GÐH²°gFUsFT}FQwFR0GḬFT~RI'±W{\0O¯œÙ†>Y \D3s,k,?cv\D>Ú,Ò,Asp^3>-<-Aax^y2j-b-Bo.^3×-Ë-B^y2Ö.Î.Apkg_ 3:/2/Agvp` Ù†˜/–/Agva 3¿/»/Asvb õ20õ/BÄ+c4r1f1C Þ„Areqƒõ22 2OôODê‚B<5‡å†ó2ñ2E4P¿°FUsFT ZO`QƒA_p¡ (33GQ¥°1ƒFUsFTvG-Q0±fƒFUsFTvFQ ™SFR7FX0G}>S[‹T_p (C°Ž‹Lpvõ2¹>·>Hþ+ý±FUóUS ‹T_p(Gž+Â’¿‹FUsFTóTGÐ+J±ú‹FUsFTvFQ TFR8FX FY0G&,J±4ŒFUsFTvFQ ¼VFR2FX8FY0Z>,|ŒMŒFUóU[K,VE\,¿°FUsFT «SYÝ Éõ2`&¾œVJY ÉD3ê>Ü>KvsÉõ2?…?LiÎ y2ô?ì?LlenÎ y2c@S@M_Îy2AALsvÏ õ2AwALavÐ 3ßAÛACPŽL_pÙ (BBS\T_pÙ (E¥&J±FUvFQ ™SFR7FX FY0CîLtsváõ2SBOBGÙ&رÔFUvFT}FQ0FR0E•'ä±FUvFQ2CÀyŽLtsvæõ2B‰BGL' ²0ŽFUvFT|FQGa'ر_ŽFUvFT}FQs $ &FR0E€'ä±FUvFQ2Gv&Â’˜ŽFUvFTóTG¹&ñ±¶ŽFUvFT}G '²ÛŽFUvFT ÂSGÙ'$² FUvFT|FQ}FR2FX2Z(d±4FUóUFT UFQ0E(¿°FUvFT «SYÈõ2Ð(óœÂ’JY D3ÑBÃBKvsõ2zClCLi„ ‰DDLlen„‰gDcDM_… y2¡DDM”1† (3ÝD×DLsv‡ õ23E)ELavˆ 3¦E¢ES.T_p’ (Cà•L_p›(àEÜES]T_p›(E[)J±FUvFTsFQ ™SFR7FX FY0CõLtsv¦õ2FFG”)رÛFUvFT|FQ0FR0EM*ä±FUvFQ2C@z‘Ltsv¬õ2TFPFGþ) ²7‘FUvFT~FQG*ر`‘FUvFT|FQsFR0E6*ä±FUvFQ2Gæ(Â’™‘FUvFTóTG)J±Ó‘FUvFTsFQ ¨VFR5FX8FY0G5)Á®ý‘FUvFT=FQ ëSGx)ñ±’FUvFT|GÈ)²@’FUvFT TGw*$²u’FUvFT~FQ  TFR3FX2Z²*d± ’FUóUFT ¾TFQ1EÃ*¿°FUvFT «SY¢Võ2@ dœ{“JY VD3ŽFŠFKvsVõ2ÏFÇFLsv[ õ2-G+GLsvp\ 3RGPGSI“T_pe (Ez J±FTsFQ ™SFR7FX FY0YA!9õ2 -HœÌ¢JY 9D3•GuGKver9õ2ôHØHKqv9'(34¤K€KLs>4*M$MLmg@Ì¢wMsM\jô!/C@¡•LlenK ¯M­M]Û;L×¢‘ð~Cp)•LlenMyÕMÓM^°…-…-+M•Q:°ûMùMQ.°)N'NQ"°RNNNE°-1²FUsFT@FQ1FR@FX TFY ÿÿÿE @=±FU &TFT TGÀ-<²L•FUvFTsFQ:GÕ-I²q•FUvFT‘¸~FQ:Eð-Á®FUvFT?FQ 8YFR ÿÿÿC` †˜Llen` ‘N‹N]Û;c×¢‘ð~Lsvdõ2æNÚNLbufeZrOjOCð ¯—My4àOÎOOj?:³–LlenÁy PœP_°j?@ÁQ:°ØPÖPQ.°QQQ"°/Q+QEŸ?1²FU~FT@FQ1FR@FX HTG<V²Ï–FU1FT0Gl<b²í–FUvFTsG€<V²—FU1FT @TG´<˜±<—FUvFT}FQ HTGæ<V²Y—FU1FT|Gî<o²q—FU|G»?V²—FU1FT0EB@|²FUsFT BTSÁ—T_pê(P¤¯/=€ê(˜Q½¯lQhQQ±¯¦Q¢Q`ȯ°aɯäQÜQEù?ˆ²FUvFT}G=<²F˜FUvFT~G/=I²k˜FUvFT‘¸~FQ:E>•²FUvFT@C ™Nlenö ‘è~GK/<²¾˜FUvFQsG“3I²ã˜FUvFT‘¸~FQ:E‡;²°FUvFT‘ ~FQ‘è~FR2Pâ«ð- - ê¡b¬Q ¬]RCRQ¬²S~SQô«ÚUÀUV a$¬WáVa1¬ÌXœXa>¬´Z¦ZaK¬m[I[aX¬]ì\ae¬˜^v^ar¬"``a¬ªa‚aaŒ¬^cJca˜¬`d2q±MœFUvEN2¯²FUvFT‘˜~dH­0 ¾œaM­“|u|G%6q±¡œFUvFT0E56¯²FUvFT‘˜~dŽ­€ Âa“­Ö}Ì}Ga6d±ÿœFUvFT}FQ|}G™6J±7FUvFT‘¨~FQ TFR8FX$GC7d±`FUvFT}FQ‘°~}GŠ=»²œFUvFT‘°~FQ0FR0FX ½VFY1Eæ=d±FUvFT}FQ‘°~}d[­à Œža`­I~G~G48d±žFUvFT oTFQ5G_8J±<žFUvFTsFQ TFR8FX$Gn8q±YžFUvFT1E”8J±FUvFTsFQ uTFR4FX$GR0Ȳ¹žFUvFT‘ ~FQ ™SGj0ղܞFUvFTFQ<G0q±ùžFUvFT1GÅ0J±1ŸFUvFT‘¨~FQ ¨VFR5FX$Gí0q±IŸFUvG1J±ŸFUvFT‘¨~FQ MTFR5FX$Gø3¿°¦ŸFUvFT {TGT4ȲӟFUvFT‘ ~FQ ™SGl4Õ²öŸFUvFT~FQ<Gª6â² FUvFT‘˜~GÒ6J±N FUvFT‘¨~FQ ™SFR7FX$GÌ7d±x FUvFT ¾TFQ1Gô7J±° FUvFT‘¨~FQ TFR8FX$G8q±Í FUvFT0G8¯²í FUvFT‘˜~G°8q± ¡FUvFT1GØ8J±B¡FUvFT‘¨~FQ ¼VFR2FX$Gß:q±_¡FUvFT1G;J±—¡FUvFT‘¨~FQ ¼VFR2FX$G4;q±´¡FUvFT1E\;J±FUvFT‘¨~FQ ¨VFR5FX$G~3ï² ¢FUvFT‘ ~Gž7Á®B¢FUvFTó°`¢FUsFTVGq><²x¢FUvG†>I²¢FUvFT‘¸~FQ:R @'±Eh@¿°FUvFT  Xñ(Ì¢ eç¢ L?Y¨×õ2p@‚œÍ«JY ×D3t~l~Kver×õ2ç~Ó~LrvÜû2ľC°ò¨Lkeyà ‰€ €Lavá 3€‰€Lsavâ3܀؀Lhvä û2CÚ£L_pá(gaE#A¢²FUsFT;Sì£T_pî(Sþ£T_pï (S¤T_pñ(S"¤T_pò (CÀ"¥Lsvpô 3²°SR¤T_pô(Cê¤M*1ö …2×ÕS‚¤T_p÷ (G}Bq±š¤FUsG£BJ±Ð¤FUsFT~FQ MTFR5FX$EíDä±FUsFQ2EOBJ±FUsFT|FQ MTFR5FX FY0CPê¥Lsvpû 3üúSR¥T_pû(Sd¥T_pý (GËBJ±Ÿ¥FUsFT|FQ TFR8FX FY0GßBý±·¥FUsECJ±FUsFT~FQ TFR8FX$CL¦L_pÿ(#‚‚S¦T_pÿ(E2CJ±FUsFQ ™SFR7FX FY|Cà÷¦Lsvû2]‚Y‚Lrev…2•‚“‚GUCq±–¦FUsGcC¯²´¦FUsFT}G‡CرݦFUsFTFQ|FR0E¦Cä±FUsFQ2S §T_p(S§T_p(G8AȲF§FUsFTvFQ ™SGKAÕ²i§FUsFT~FQ<G†AJ±£§FUsFT|FQ ¼VFR2FX8FY0GšAq±À§FUsFT1GÀAJ±ö§FUsFT~FQ ¼VFR2FX$GêAJ±0¨FUsFT|FQ ¨VFR5FX8FY0GBq±M¨FUsFT1G&BJ±ƒ¨FUsFT~FQ ¨VFR5FX$GnCñ±¡¨FUsFTG³Dⲿ¨FUsFT}EÙDJ±FUsFT~FQ ™SFR7FX$CàܪLmg Ò¢º‚¸‚OÆC☪Llen߂݂M[#:ƒƒLraw Z)ƒ'ƒMLZNƒLƒ];Ý« ÈZPH°Dß©Qq°sƒqƒQe°£ƒŸƒQY°ÝƒÛƒR)Dü²GßC¥± ªFUsFTvFQ}FR~G D³9ªFU|FT~FQ ÈZFR1GzD»²sªFUsFTvFQ0FR0FX ½VFY1EšD²°FUsFTvFQ0FR2GÄ@æ°ÁªFUsFTvFQ|FRBE½Có°FU|FTVCP«L_p' („„EÜ@{“FUsFTvFQ0PÖ¯ã@€' B«Qç¯'„%„G‹@•²_«FUsFT0G™@¥°}«FUsFT|GÏ@±›«FUsFTvEA0±FUsFT|FQ ™SFR7FX0 lÝ« LÍ«f<4â­gY D3hs&4hrv-õ2hqv6(3Uf"4Tpos 4U~4 4Uí 4Uj  yU*1  yU”1 (3U= (3Tav 3Thv õ2S¶¬T_p& (SȬT_p/(SÚ¬T_p1(Sì¬T_p3(SH­Trev8y2S8­Tend>4Uç? y2US@y2iTi]yiUR “yS[­Tlen ‰SŽ­UY¬õ2S­T_p­(iT_p®(S¯­UY±õ2iT_p¶(SÁ­T_p¹(SÓ­T_p¾ (iT_p¾ (jß4Á®kY D3ls)4kc1(3kíclsqvîBkiñbk)1+ñbkg@9îBmqv (3n*1 ynj yn”1 (3md 4o¸72o¡<ÒS´®miL ymjM yimjvyIê"a5€"圤¯JY a5D3R„J„Kerra5Š2¹„±„Kpata504 ……p][c5 ~‘~G÷"³O¯FUsFTvG#³l¯FUsFT0G^#!³–¯FUsFTvFQ|FRwRe#'±qA¶Ö¯kY ¶D3lsv¶õ2imrc¹Š2j<ªõ2ó¯lsvªõ2jy2°kY  D3r%@yH°l__s@`l__n@¡k@?pr&(~°k²1&(kà&¿k÷ &¡sÉ/É/I, s´´I®s I­sššI` sÕ:Õ:I› sããIIsö-ö-IÍsÑ*Ñ*Iz sL8L8I( sU)U)I¼sfAfAI sÕÕI~s¸(¸(IÄ t(A(AsååI søøIôsô ô I”s¢;¢;IbsììI sUUIúsÆÆI s¢.¢.I~ sí+í+Iú sp p I u ž(undef)s**Is¢)¢)Iw v±±I¶s\?\?IŒ vIAIAIÁs  I sttIÓ sÖÖI sffIâ wø@î@sy9y9I( sÜ@Ü@I vóóJzsÁÁI$ sI¡ vZZK‰ sÆ%Æ%IF sÔ,Ô,Iâs??IïvIÎsNNIZ sE E I s''IU sô1ô1IÑs:":"I< w sA4A4Kqs 3 3I.sÐÐI„% $ > &I: ; 9 I$ >   I7I  : ; 9  : ; 9 I8 I !I/  : ; 9  : ; 9  : ; 9 II : ;  : ; I8 < : ; 9  : ; 9 I'I4: ;9 I?<&4: ; 9 I?< : ;9 I8  : ;9  : ; 9 : ; 9 I: ;9 I : ;9 I! : ; 9 " : ; 9 I 8 # : ;9 $ : ;9 I 8 % : ;9 & : ; 9 I8 ' : ; 9 I8( : ; 9 I8) : ;9 I8* : ;9 I8+ : ;9 , : ;9 I-5I.!/: ; 9 0> I: ; 9 1( 2 : ;9 3 : ;9 4'I5 : ;9 6 : ;9 I8 7 : ;9 I8!I/9 : ;9 : : ; 9 I 8;> I: ;9 <4: ; 9 I=.?: ; 9 '@—B>: ; 9 I·B?: ; 9 I·B@.?: ; 9 'I<A4: ; 9 I·BB4: ; 9 I·BC UD4: ; 9 IE‰‚1FŠ‚‘BG‰‚1H‰‚•B1I.: ;9 '@—BJ: ;9 I·BK: ;9 I·BL4: ;9 I·BM4: ;9 I·BN4: ;9 IO P1R¸BUX YW Q1·BR‰‚1S T4: ;9 IU4: ;9 IV UW.: ; 9 '@—BX1R¸BUX Y W Y.: ;9 'I@—BZ‰‚•B1[‰‚•B1\ : ;9 ]4: ;9 I^1R¸BX YW _1R¸BUX YW ` 1Ua41·Bb1c 1d 1Ue 1f.: ;9 'I g: ;9 Ih: ;9 Ii j.: ; 9 'I k: ; 9 Il: ; 9 Im4: ; 9 In4: ; 9 Io : ; 9 pq.: ; 9 ' r.?: ; 9 'I 4s.?<n: ;9 t.?<nu6v.?<n: ; 9 w.?<n: ; ¾)Cû /usr/lib64/perl5/CORE/usr/include/bits/usr/include/sys/usr/include/bits/types/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/usr/include/netinetvutil.cvxs.incinline.hppport.hstdio2.hstring_fortified.hvxs.cvxs.xstypes.htypes.htime_t.hstddef.h__sigset_t.hstruct_timespec.hthread-shared-types.hpthreadtypes.hstdarg.hstdint-uintn.h__locale_t.hlocale_t.hsetjmp.hsetjmp.h__sigval_t.hsiginfo_t.hsignal.hunistd.hgetopt_core.hsockaddr.hsocket.hin.hstat.htime.htime.herrno.hnetdb.hnetdb.hdirent.hdirent.hperl.hmath.hop.hcop.hintrpvar.hsv.hgv.hmg.hav.hhv.hcv.hpad.hhandy.hstruct_FILE.hFILE.hstdio.hsys_errlist.hperlio.hiperlsys.hperly.hregexp.hutf8.hutil.hpwd.hgrp.hcrypt.hshadow.hreentr.hparser.hopcode.hperlvars.hmg_vtable.hoverload.hproto.hlocale.hstring.h @ Ùz &z<BYJ? K# u<JY”  / †|È £~ÖÝJ=<›~#JJÞfJJfK“K :J ue<Y Xuu 1 ò= ‚ ¬<K ò= ‚ t<=º0 YXJ.J..eX uX f ÀÈ ªÈ¬ zº/.„  f…<„J  tLò=‚tÈhJ   tzJB J.. lXw<‚>H0  "ò=‚tÈ‚^ºŽäx Y“ &  Vt  È=•ä= ‚ ¬<< äX=J ‚[ -<=Ö?XYò= ‚ tÈ‚ Ȭ Ÿ X./È!<2.nt nJº.J nJyXä  (ÇzKJ ö~f‹J<î~#‹õ~J‹Jõ~< J<‹<J ŸZ<<J‚JÈÈtf  ,XÖº Ð(âv  Y ”º ºu]-° פä= ‚ ¬<<%  %ž. JŸ \ ã<=òJZò= ‚ tÈž zȬ /½...mž mJ‚ m t . mfmXº‚{ KJ ƒfþJ<û~#þ‚JþJ‚< J<þ<JŸ L< 1< GJ?< >XJȺX‚f  ,XÖtX +ñ  •Y “º »u= ytfX v<  vJ <  v t& !; !;YX vX mXº÷yKJ ‘fðJ<‰#ðJðJ< J<ð<JŸ L< 1< GJ?< >XJȺX‚f  ,XÖtX  -·fu Xf»Zó{ XÈ ;v ‚>XŸQ É <ž"`žfž  >É I Xt X.XX‘   XX w<| ƒ< Ö= J] • ‘ ö, $ X†é ‚%.ä|ž  »YÈtKfMéŸ }(  ò+r,=;==#È'òí‚‘   XX w<| ƒ<ä ø|XjXºå   XX é~<Ž<| ƒ<Xç}!_fFXfÛ JY   IK  ‚ ttJ; JXY<5ÈEK‘ žK‘K :Èò~eYXp   JX Ø= K JU   f_ ‚ ‰ i2t– zX¬ ¬uÈ<ž!.  Æä(¸{.8X5‚!ž®,oò¶* . $.XY$ã =.XƒX*e‚<(­(¹= 4Xx‘$ KIK  ¬YÉž< žKY ­ «YYÌ{‘K‘&uf X¬ <= ¬äf.&‘ ¬äfJ ’:º:tM<=(bNX%Ò¬’ò=‚tÈž É‘KK .Kg Y|ï ‘|‚ï< ‘|tXð‘J½  X w0J¬tÖ! mtÙ~äKJ Å~f¼J<½~#¼Ä~J¼JÄ~< J<¼<JŸ„</<IJ=, ,¬„JJ „  L :^ << ?J X ¯tfX<.. +¬q4Ô&XX Ö!'¬&¶4ž&Öf4È Ö8tX àKÚ fwtåsóƒ~# ÿJw‚Š~< ‚föJu  @<K  ‘ žŸ ­X.öjLJ?0óUŸ>0Ÿ2Sð.0|1\Â1Ÿ2\"/W/uø#” $ &3$p"ŸW/g/uø#” $ &3$u"Ÿ>0F0sø#” $ &3$p"Ÿ_2h2sø#” $ &3$p"Ÿh2l2sø#” $ &3$s"Ÿm2z2sø#” $ &3$s"Ÿ-/0V>0Ç0V2{2V“2Ÿ2Vg/(0^J0O0PO0_2^{2Ÿ2^–/¡/P¡/«/PO0T0P0F0TW0ˆ0T’0–0P–0h1_h1r1P2_2_m2v2Pv2z2 |3$s"#{2Ž2_Ž2“2P“2Ÿ2s¸Ÿ«/ô/ò²±ÿ/0ò²±¬0Â10Ÿ212ò²±{2“20Ÿ“2Ÿ2ò²±´/ó/} $ &3$s"Ç0c1Vc1g1Pg1Â1V202} $ &3$s"{22T2‰2V‰22P2“2Và/ó/Q 1%1v%1C1T#0>01Ÿô./U0HUHsVs|óUŸ|ƒVƒŒóUŸŒV0HTHRóTŸRVPV\Õè\\0HQHWSW‘P‘ÝSPõ0ŸaSamsŸ||sŸ|£sŸ£ÕSÕè0Ÿ‚SŒºSº¼sŸ¼SâæPæSÕ‘¸ÕèS葸õ{_{|‘¸‘°‘¸‘°,(Ÿ|‹_‹Œ‘¸‘°‘¸‘°,(ŸŒ_îPqwq|‘°|ÕwÕæPæ~w~Œ‘°Œwõc0ŸcmPmm1Ÿ|£P£è0ŸP+0Ÿ+6pÿŸ:o0ŸozpÿŸŒ£P£¼0Ÿ¼ÎPÎ0Ÿ00Ÿ-m\|¹\Õè0Ÿ0Ÿ00ŸUmQ|…QÕè0Ÿ0Ÿ´y^|‰^Œ^Íw]|‡]Œ]´y^|‰^Œ^Íw]|‡]Œ]-T¹ÌT@UT£´T£³TáüT6TMhTP ] U] ¬ S¬ ® pÈ}Ÿ® ¸ S¸ ½ U½ ¾ óUŸ¾ ø Sø ý Uý þ óUŸþ  S U óUŸ  SP ] T] ^ óTŸ^ P ­ V® ¹ V¾ ó Vó ý Tþ T  P ¡ P¾ å Pš ½ T 5U5§V§°óUŸ°ÂVÂÎUÎÏóUŸÏÞV 5T56óTŸ6dPÏÝPÌæ1ŸæS sŸ BS˜P˜o^oqspŸq™S™œsŸœžS°ÎPÎÏw@µÄPÄÈQöP RÌÐPÐB\Z©\©°Pqz]°Æ]qz]°Æ]œµTBTTæöT$?T¥U¥@ V@ I óUŸI e Ve q Uq r óUŸr ƒ V¥T¥¦óTŸ¦×P×™ Sú 7 SI ] Sr ~ P‹ ¢ 1Ÿ¢ ú S 7 1Ÿ; S PS D ]p } P® ½ Rß0Ÿßõ1Ÿr ƒ 0Ÿ‹ ¢ P¢ ú ^ 6 P6 F ^F I P" B \I g \" B \I g \W p Tú T¢ ® TÚ õ T9U9dóUŸTWSWXPXcSHVP:DPà k Uk ´V´ÌUÌV9U9XVX’U’ÌVÌÕóUŸÕ¼V¼ÚUÚëVë U KVKXUX( Và h Th ´‘ ~´ÌTÌ‘ ~6T6X‘ ~X’T’¼‘ ~¼ÕTÕë‘ ~ë T K‘ ~KUTU( ‘ ~à  Q ° _´_›_O_¼_ë,_,FóQŸFK1ŸKy_Ýø_ _®¾_Ëà_ð _ ( _ ” P” ´‘¸~‘¸~NRPRX‘¸~›t‘¸~t}]}(‘¸~O¼‘¸~êîPî둸~AEPEK‘¸~yÝ‘¸~ø‘¸~ Ë‘¸~àð‘¸~  ‘¸~ŸÎ\6c\ÆË\0PçóPp ° :Ÿp ° :ŸE p TŸE p @ŸE J ‘ð~ŸJ p S€ÏSÝçSgoSÓ!0ŸehPhy]*0Ÿo ]ð ]€^Ýç^go^®¾^ñóP;?P?\Ýç\*0Ÿ*o\P®¾\Ëà\_oPËÛP*_ HTŸ*_@Ÿ*4‘ð~Ÿ4_^ï]®¹]ïV®¹VüQ } qŸ®¸Q° ´‘ ~‘ ~›Ÿ‘ ~Õ6‘ ~c(‘ ~O¼‘ ~ë‘ ~yÝ‘ ~ø‘ ~ ®‘ ~¾Æ‘ ~àð‘ ~  ‘ ~° Û ‘¸~Û ä }Ÿä ÿ ]NW]xŒ^ pŸ  P pŸîH]²¼pŸ¼ÃXèøP(Q“Q¢Ô\ŸŸ\,6|Ÿ66\ctX[¢]°æXt}]}‚‘¸~†¥X¥®\®³‘°~° ´VV›ŸVÕ6Vc(VO¼VëVyÝVøV ®V¾ÆVàðV  V ° ´‘¸~Õ‘¸~ÕÝ]›H‘¸~[¢‘¸~æ$‘¸~Xt‘¸~t}]}‚‘¸~‚(]O¼‘¸~W†‘¸~³ë‘¸~yÝ‘¸~ø‘¸~ ®‘¸~¾Æ‘¸~àð]  ]XB_X_Z]ZŒQŒ]îT]TkQkr]r²Q²](Q(F]FKQK[][gQg]“Q“]ctX[°]°æX†¥X¥®\®³‘°~ ÕÝ\ÇH][¢]ot]‚(\àð\  \° ´0ŸÝ0Ÿ›§0Ÿ¸Ç0ŸÇúQæ$0ŸXo0Ÿot YŸt(0ŸO¼0ŸW†0Ÿ³ë0ŸyÝ0Ÿø0Ÿ ®0Ÿ¾Æ0Ÿàð0Ÿ  0Ÿ° ´0ŸÕ0ŸÕÝ‘°~›H0Ÿ[¢0Ÿæ$0ŸX‚0Ÿ‚(‘°~O¼0ŸW†0Ÿ³ë0ŸyÝ0Ÿø0Ÿ ®0Ÿ¾Æ0Ÿàð‘°~  ‘°~ ° ´3ŸÕ3ŸÕ¥‘À~›H3Ÿ[¢3Ÿæ$3ŸX‚3Ÿ‚š‘À~O¼3ŸW†3Ÿ³ë3ŸyÝ3Ÿø3Ÿ ®3Ÿ¾Æ3Ÿèð‘À~  ‘À~ ° ´0ŸÕ0ŸÕÝ^›H0Ÿ[¢0Ÿæ$0ŸX‚0Ÿ‚(^O¼0ŸW†0Ÿ³ë0ŸyÝ0Ÿø0Ÿ ®0Ÿ¾Æ0Ÿàð^  ^ ° ´0Ÿm0ŸÈÒ1Ÿ¨0Ÿ›²0Ÿèø1ŸK0Ÿ[“0Ÿ¢Ô1ŸÕ0Ÿct0Ÿ[(0ŸO¼0ŸWë0ŸyÝ0Ÿø0Ÿ ®0Ÿ¾Æ0Ÿàð0Ÿ  0Ÿ P‘˜~P摘~$X‘˜~‚(‘˜~W‘˜~†³‘˜~ÆË‘˜~àð‘˜~%)P)¨_¨‘¨~'+P+H^H[‘¨~[¢^¢æ‘¨~$X‘¨~‚ï_ï(‘¨~W‘¨~†³‘¨~ÆË‘¨~àã_ã葨~èë_ëð‘¨~ ÿ ´0ŸÕ0Ÿ›§0Ÿ¸Ç0Ÿæ$0ŸXo0ŸO¼0ŸW†0Ÿ³ë0ŸyÝ0Ÿø0Ÿ ®0Ÿ¾Æ0Ÿ ÿ ´VÕV›§V¸ÇVæ$VXoVO¼VW†V³ëVyÝVøV ®V¾ÆV ÿ ´ò¦™Õò¦™›§ò¦™¸Çò¦™æ$ò¦™Xoò¦™O¼ò¦™W†ò¦™³ëò¦™yÝò¦™øò¦™ ®ò¦™¾Æò¦™ ÿ ´ò™™Õò™™›§ò™™¸Çò™™æ$ò™™Xoò™™O¼ò™™W†ò™™³ëò™™yÝò™™øò™™ ®ò™™¾Æò™™ ÿ ´òŒ™ÕòŒ™›§òŒ™¸ÇòŒ™æ$òŒ™XoòŒ™O¼òŒ™W†òŒ™³ëòŒ™yÝòŒ™øòŒ™ ®òŒ™¾ÆòŒ™ ÿ ´ò'™Õò'™›§ò'™¸Çò'™æ$ò'™Xoò'™O¼ò'™W†ò'™³ëò'™yÝò'™øò'™ ®ò'™¾Æò'™ ÿ ´ò™Õò™›§ò™¸Çò™æ$ò™Xoò™O¼ò™W†ò™³ëò™yÝò™øò™ ®ò™¾Æò™ ÿ ´]Õ]›§]¸Ç]æ]$\Xo]O¼]W†]³ë]yÝ]ø] ®]¾Æ]1Ÿ7p1Ÿæ$1Ÿúd1Ÿ›Ý1Ÿ ®1Ÿ¾Æ1Ÿ 3Ÿ7?3ŸpÕ‘À~æ3Ÿ$‘À~ˆì‘À~ìúYW†‘À~ ‘À~ 0Ÿ7?0ŸpÕ‘°~æ0Ÿ$‘°~Xú1Ÿú ‘°~d‘°~O¨1ŸWl‘°~l†1Ÿ›Î‘°~ 1Ÿ ®‘°~¾Æ‘°~ 0Ÿ7p0ŸpÕ^æ$0Ÿˆð^ðú1Ÿú0Ÿd^W†^yŒ^›¥^¥»1Ÿ»Ý^ø^ ®^¾Æ^ ]%C]C[\7}Ÿ7R\pÕ\›§}Ÿæ]$\k™T™´tŸ´ÐTÐðtŸðúT'T'3\3;T;d\O¨TWl\l†tŸŒ›]›¥\¥°tŸ°»T»Å\ÅÒtŸÒÝT tŸ ®T¾Æ\´0Ÿ¸Ç0ŸXˆ0ŸˆúYdo0ŸO¨0Ÿl†Y³ë0ŸŒ›0Ÿ Y0Ÿ'0Ÿ ®0Ÿ P‘˜~P摘~$X‘˜~‚(‘˜~W‘˜~†³‘˜~ÆË‘˜~àð‘˜~Bm0ŸÈÒ ÿÿÿŸx¨0ŸæU²ÐUèø ÿÿÿŸB_X_m]mÃYÈçYçêyŸêïYxŒQŒ]²]K[YBm1Ÿmã\êï\x¨1Ÿæéq|ŸéðQð\²ø\KV\U¼ÃU†¤U¤Ãy”8$8&0Ÿr²T¿¿Q¿Ç2qŸÇÊPÊÔSÔÛPÛùSùPÍÍQÍÕ2qŸÕØPØæS??Q?G2qŸGJPJXS!1PPIPIW‘°~¦³P P0 J UJ « S« µ óUŸµ ²$S0 = T= „ \„ £ óTŸµ æ"\æ"ñ"Th#¶#\¶#A$óTŸA$]$\]$b$óTŸ $²$\T X PX £ Vµ ²$Vü"þ"0Ÿþ"#\###|Ÿ##h#\b$ $\ó ÷ P÷ h#]b$²$]ü"h#_b$ $_! !P !h#^b$²$^ó ÷ P÷ h#]b$²$]""P2"<"P‹"ž"Pü"h#_b$ $_þ"#TJ#e#T##P}#ž#PŠ#b$^Ž#b$]¶#A$\Í#è#PÒ#è# p |"~"ŸÒ#Ú#pŸÚ#è#TÒ#è#P£ £ P£ £ P@²U²áSáåóUŸå%S@¯T¯âVâåóTŸå%V@¶Q¶ä\äåóQŸå%\~‚ˆ±ßß'8µß'8™™ ¤«¹lll’ °´’ °´´´ÀÃÆÉÍm€€¨ä /:s~¨¼Î???ejqеH`Ý Hîòõõùýko‚Qt‚Qkotõõõ" E p  ™ ¾ Ç ž ¢ ¥ ¥ © ­ ° · Ì Ï Ñ Ø ß â å + / B Ì Ï Ñ Ø ß â å 4 B + / 4 — § ° ° ´ · ¹ À . 2 5 5 9 = @ G \ _ a h o r u » ¿ Ò \ _ a h o r u œ Ä Ò œ » ¿ Ä E ° ËàE p Ëà° ¸ttÄÄ  11]]ŸØ6h££  BB‡‡¶¶  0PÀð€à  ®àð  ÿ ¸Õ §ÀÇõ(`oPÀ`¸ð€à  ®–ÀÇ`hoPÀp¸ð  h€ à ®âôôù îû B P¢Bïx™› ¸P`yãçêP`«þ¹õ(58`11]í`¸à  BB`á>S0P ÀïïP€à  ®¹ð Ó!°  ð **/MP_﮹ø®¹] „ p#h$Ò#Ò#Ú#Ý#ä#é# œ   £ œ   £ £ Ö ! !i!i!„!„!Õ!Õ!é!é!L"L"e"e"®"®"É"É"p#h$h$h$‡$‡$²$Ö ã ð ó é!é!é!L"L"e" $²$"L"L"e" $²$e"e"e"®"®"É"É"É"É"ã"æ"ò"õ"ü"# ####7#p#Î$Ò$Õ$Õ$Ù$Ý$à$ç$%%% %%A%P%U%®%¼%A%P%U%¥%©%®%]%a%˜%¥%©%®%ü%&&&À&`'h(€(¸(È( (h( (¸(õ(ù(ü(ü())))))+).)2)9)w*…*‡+))+).)2)9)k)t)x)v+‡+k)t)x)w*…*v+V*Z*j*w*…**¦+­+×+ß+,,,i,i,p,˜,ë.n-ø-0.p. .¼.Ó+×+â+ð+ô.ô./ / ////´/ø/µ0È1282{2“2½2Ä2Î2Ü2á2÷2ú238`˜€  P €  °  € pS€SØZ [Øbj j  j l n p p` ñÿ @  nS# €6 €M €e € €˜ €³ €Ç €ß @ ü ¤  @ d% ¤ H „!i ° Ô} „!ž ¥!½ !Ï ¥!ó Å! °!* Å!J r"h Ð!¢y r"š e#¹ €"åË e#å V&ý p#æ V&% (@ `&¾N (p Î( (®£ Î(À Ã*Û Ð(óé Ã*  Ž++ Ð*¾> Ž+^ \,| +Ì \,² -Õ `,¾ë -  h@+ -H= h@^ òD} p@‚ÈZ  òDà Fä Eø F I4 FD Id ÓK‚ I³“ ÓK± 0OÍ àKPÜ 0O ßR$ 0O¯: ßR[ nSz@j Ђñÿ € °¢ ð¸p Çj î 0 új ‚ñÿÔbñÿ' pS- j :l CØZVp bn x ~¤ÀÑ í  # p * 5 Q ` p ~   ¯ à Ð ä õ   * > R f q ~ ‹  ² p ½ Í Ú ó   # p /  àRŽA X i ~  ž µ Ä Ñ á î ü  " 1 > J X f "‚ .annobin_vxs.c.annobin_vxs.c_end.annobin_vxs.c.hot.annobin_vxs.c_end.hot.annobin_vxs.c.unlikely.annobin_vxs.c_end.unlikely.annobin_vxs.c.startup.annobin_vxs.c_end.startup.annobin_vxs.c.exit.annobin_vxs.c_end.exit.annobin_Perl_vverify2.start.annobin_Perl_vverify2.endPerl_vverify2.annobin_S_version_check_key.start.annobin_S_version_check_key.endS_version_check_key.annobin_VXS_version_is_qv.start.annobin_VXS_version_is_qv.endVXS_version_is_qv.annobin_VXS_version_is_alpha.start.annobin_VXS_version_is_alpha.endVXS_version_is_alpha.annobin_VXS_version_noop.start.annobin_VXS_version_noop.endVXS_version_noop.annobin_DPPP_my_ck_warner.start.annobin_DPPP_my_ck_warner.endDPPP_my_ck_warner.annobin_Perl_vcmp2.start.annobin_Perl_vcmp2.endPerl_vcmp2.annobin_Perl_vnormal2.start.annobin_Perl_vnormal2.endPerl_vnormal2.annobin_VXS_version_normal.start.annobin_VXS_version_normal.endVXS_version_normal.annobin_Perl_vnumify2.start.annobin_Perl_vnumify2.endPerl_vnumify2.annobin_VXS_version_numify.start.annobin_VXS_version_numify.endVXS_version_numify.annobin_Perl_vstringify2.start.annobin_Perl_vstringify2.endPerl_vstringify2.annobin_VXS_version_stringify.start.annobin_VXS_version_stringify.endVXS_version_stringify.annobin_Perl_upg_version2.start.annobin_Perl_upg_version2.endPerl_upg_version2.annobin_Perl_new_version2.start.annobin_Perl_new_version2.endPerl_new_version2underscore.19657.annobin_VXS_version_boolean.start.annobin_VXS_version_boolean.endVXS_version_boolean.annobin_VXS_version_new.start.annobin_VXS_version_new.endVXS_version_new.annobin_VXS_version_vcmp.start.annobin_VXS_version_vcmp.endVXS_version_vcmp.annobin_VXS_version_qv.start.annobin_VXS_version_qv.endVXS_version_qv.annobin_VXS_universal_version.start.annobin_VXS_universal_version.endVXS_universal_version.annobin_boot_version__vxs.start.annobin_boot_version__vxs.enddetailscrtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.7294__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entry__FRAME_END___fini__dso_handle_DYNAMIC__GNU_EH_FRAME_HDR__TMC_END___GLOBAL_OFFSET_TABLE__initPerl_sv_2iv_flagsPerl_sv_2bool_flags__snprintf_chk@@GLIBC_2.3.4Perl_newRV_noinc_ITM_deregisterTMCloneTablePerl_sv_catpvn_flagsPerl_sv_insert_flagsPerl_av_len_edataPerl_newSV__stack_chk_fail@@GLIBC_2.4Perl_sv_catpvfPerl_sv_upgradePerl_savesvpvPerl_gv_stashpvnPerl_sv_blessPerl_sv_2pv_flagsPerl_xs_boot_epilogPL_charclassstrcmp@@GLIBC_2.2.5Perl_sv_isobjectPerl_sv_mortalcopy_flags__gmon_start__Perl_newSVsvPerl_croak_xs_usagememmem@@GLIBC_2.2.5Perl_newSVpvn_flagsPerl_croakPerl_av_pushPerl_savepvnPerl_save_pushptrPerl_croak_nocontextPerl_newXSPerl_gv_stashsvPerl_vwarnerPerl_sv_derived_from_pvnPerl_sv_setsv_flagsPerl_sv_2mortalPerl_mg_get__bss_startboot_version__vxssetlocale@@GLIBC_2.2.5Perl_safesysfreememmove@@GLIBC_2.2.5Perl_xs_handshakePerl_av_fetchPerl_hv_common_key_lenPerl_sv_setpvnPerl_mg_findPerl_newSV_typePerl_newSVrvPerl_sv_free2Perl_ckwarn_ITM_registerTMCloneTablePerl_sv_setpvfPerl_newSVivPerl_savepvPerl_newSVpvfPerl_newSVpvn__cxa_finalize@@GLIBC_2.2.5Perl_sv_newmortal.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.note.gnu.property.init_array.fini_array.data.rel.ro.dynamic.got.bss.comment.gnu.build.attributes.debug_aranges.debug_info.debug_abbrev.debug_line.debug_str.debug_loc.debug_ranges88$.öÿÿo``48 ˜˜è@€€Hÿÿÿo ~Uþÿÿo  @dP P 0nB€€xs°°p~  `‡€€î3pSpS “€S€SX›ØZØZÄ© [ [8³ØbØb Æj jÒj jÞ j jð ël lôn nðùp pþ0p,p`,pHt0,¤/³8Ó4Fá;Â)R0£e“C]6©…hµ.@øE "~ ˜W” ,dvperl5/auto/Crypt/SSLeay/.packlist000064400000001024152462470720012625 0ustar00/usr/local/lib64/perl5/Crypt/SSLeay.pm /usr/local/lib64/perl5/Crypt/SSLeay/CTX.pm /usr/local/lib64/perl5/Crypt/SSLeay/Conn.pm /usr/local/lib64/perl5/Crypt/SSLeay/Err.pm /usr/local/lib64/perl5/Crypt/SSLeay/MainContext.pm /usr/local/lib64/perl5/Crypt/SSLeay/Version.pm /usr/local/lib64/perl5/Crypt/SSLeay/X509.pm /usr/local/lib64/perl5/Net/SSL.pm /usr/local/lib64/perl5/auto/Crypt/SSLeay/SSLeay.so /usr/local/share/man/man3/Crypt::SSLeay.3pm /usr/local/share/man/man3/Crypt::SSLeay::Version.3pm /usr/local/share/man/man3/Net::SSL.3pm perl5/auto/Crypt/SSLeay/SSLeay.so000055500000563340152462470720012534 0ustar00ELF>0&@àÝ@8 @$#àƒàƒ àŠàŠ àŠ ( øŠøŠ øŠ 00888$$ÀƒÀƒÀƒ SåtdÀƒÀƒÀƒ PåtdÌxÌxÌx44QåtdRåtdàŠàŠ àŠ  GNUL¤#€­‚Ïßt¨a!.…£ÂÒXˆ@ XZºã’|CEÕì8oÛ ÙqX>pþ˜ÌªñäeYH{ªC ӸŰˆ(¦¯ ¸æ  êð|, ÞtF"ÕbV]˜*mÚ4„“ýÎ0ˆ´$<I&s˜‹ñ6moÊ£ú À_„®–å}=ÏÔJó¸m Z Ë °m a __gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizelibpthread.so.0PL_thr_keypthread_getspecificPerl_sv_newmortalOpenSSL_versionPerl_sv_setpvPerl_mg_setPerl_croak_xs_usagePerl_sv_setiv_mgPerl_sv_derived_fromPerl_sv_2iv_flagsX509_getm_notAfterPerl_croak_nocontextX509_getm_notBeforeX509_get_issuer_nameX509_NAME_onelinePerl_newSVpvCRYPTO_freePerl_sv_2mortalX509_get_subject_nameX509_freePerl_sv_2pv_flagsSSL_ctrlSSL_get_current_cipherSSL_CIPHER_get_nameSSL_get_shared_ciphers__stack_chk_failSSL_get_verify_resultPerl_newSVivSSL_get_peer_certificatePerl_sv_setref_pvSSL_readSSL_get_errorPerl_sv_growPerl_sv_pvn_force_flagsPerl_sv_catpvn_flagsSSL_writeSSL_acceptSSL_connectSSL_set_fdSSL_pendingSSL_freeSSL_newSSL_set_connect_statePerl_sv_2ioPerl_PerlIO_filenoSSL_set_info_callbackPerl_sv_2bool_flagsSSL_alert_desc_string_longSSL_alert_type_string_longstderr__fprintf_chkSSL_state_string_longgetenvSSL_CTX_load_verify_locationsSSL_CTX_set_verifySSL_CTX_check_private_keyfopen64d2i_PKCS12_fpfclosePKCS12_parsePKCS12_freeSSL_CTX_use_PrivateKeyEVP_PKEY_freeSSL_CTX_use_certificateSSL_CTX_use_PrivateKey_fileSSL_CTX_use_certificate_fileSSL_CTX_set_cipher_listSSL_CTX_freeRAND_load_fileRAND_seedSSLv2_client_methodSSL_CTX_newSSL_CTX_set_optionsSSL_CTX_set_default_verify_pathsOPENSSL_init_cryptoOPENSSL_init_sslSSLv3_client_methodTLS_client_methodERR_get_errorERR_error_string_nboot_Crypt__SSLeayPerl_xs_handshakePerl_newXS_deffilePerl_xs_boot_epiloglibssl.so.1.1libcrypto.so.1.1libz.so.1libperl.so.5.26libc.so.6_edata__bss_start_endGLIBC_2.4GLIBC_2.2.5GLIBC_2.3.4OPENSSL_1_1_0P@ii rui |ti ˆ% m”U ui |m”àŠ à&èŠ  &ðŠ ðŠ Ð  Ø à è "ð %ø G@ H P X ` h p x €  ˆ   ˜    ¨ ° ¸ À È Ð Ø à è ð ø Ž Ž Ž Ž  Ž  (Ž !0Ž #8Ž $@Ž %HŽ &PŽ 'XŽ (`Ž )hŽ *pŽ +xŽ ,€Ž -ˆŽ .Ž /˜Ž 0 Ž 1¨Ž 2°Ž 3¸Ž 4ÀŽ 5ÈŽ 6ÐŽ 7ØŽ 8àŽ 9èŽ :ðŽ ;øŽ < = > ? @ A( B0 C8 D@ EH FP HX I` Jh Kp Lx M€ Nˆ O P˜ Q  R¨ S° T¸ UÀ VÈ WóúHƒìH‹ t H…ÀtÿÐHƒÄÃÿ5Jq òÿ%Kq óúhòéáÿÿÿóúhòéÑÿÿÿóúhòéÁÿÿÿóúhòé±ÿÿÿóúhòé¡ÿÿÿóúhòé‘ÿÿÿóúhòéÿÿÿóúhòéqÿÿÿóúhòéaÿÿÿóúh òéQÿÿÿóúh òéAÿÿÿóúh òé1ÿÿÿóúh òé!ÿÿÿóúh òéÿÿÿóúhòéÿÿÿóúhòéñþÿÿóúhòéáþÿÿóúhòéÑþÿÿóúhòéÁþÿÿóúhòé±þÿÿóúhòé¡þÿÿóúhòé‘þÿÿóúhòéþÿÿóúhòéqþÿÿóúhòéaþÿÿóúhòéQþÿÿóúhòéAþÿÿóúhòé1þÿÿóúhòé!þÿÿóúhòéþÿÿóúhòéþÿÿóúhòéñýÿÿóúh òéáýÿÿóúh!òéÑýÿÿóúh"òéÁýÿÿóúh#òé±ýÿÿóúh$òé¡ýÿÿóúh%òé‘ýÿÿóúh&òéýÿÿóúh'òéqýÿÿóúh(òéaýÿÿóúh)òéQýÿÿóúh*òéAýÿÿóúh+òé1ýÿÿóúh,òé!ýÿÿóúh-òéýÿÿóúh.òéýÿÿóúh/òéñüÿÿóúh0òéáüÿÿóúh1òéÑüÿÿóúh2òéÁüÿÿóúh3òé±üÿÿóúh4òé¡üÿÿóúh5òé‘üÿÿóúh6òéüÿÿóúh7òéqüÿÿóúh8òéaüÿÿóúh9òéQüÿÿóúh:òéAüÿÿóúh;òé1üÿÿóúh<òé!üÿÿóúh=òéüÿÿóúh>òéüÿÿóúh?òéñûÿÿóúh@òéáûÿÿóúhAòéÑûÿÿóúhBòéÁûÿÿóúhCòé±ûÿÿóúhDòé¡ûÿÿóúhEòé‘ûÿÿóúhFòéûÿÿóúhGòéqûÿÿóúhHòéaûÿÿóúhIòéQûÿÿóúhJòéAûÿÿóúhKòé1ûÿÿóúhLòé!ûÿÿóúhMòéûÿÿóúhNòéûÿÿóúhOòéñúÿÿóúhPòéáúÿÿóúhQòéÑúÿÿóúòÿ%%l Dóúòÿ%l Dóúòÿ%l Dóúòÿ% l Dóúòÿ%l Dóúòÿ%ýk Dóúòÿ%õk Dóúòÿ%ík Dóúòÿ%åk Dóúòÿ%Ýk Dóúòÿ%Õk Dóúòÿ%Ík Dóúòÿ%Åk Dóúòÿ%½k Dóúòÿ%µk Dóúòÿ%­k Dóúòÿ%¥k Dóúòÿ%k Dóúòÿ%•k Dóúòÿ%k Dóúòÿ%…k Dóúòÿ%}k Dóúòÿ%uk Dóúòÿ%mk Dóúòÿ%ek Dóúòÿ%]k Dóúòÿ%Uk Dóúòÿ%Mk Dóúòÿ%Ek Dóúòÿ%=k Dóúòÿ%5k Dóúòÿ%-k Dóúòÿ%%k Dóúòÿ%k Dóúòÿ%k Dóúòÿ% k Dóúòÿ%k Dóúòÿ%ýj Dóúòÿ%õj Dóúòÿ%íj Dóúòÿ%åj Dóúòÿ%Ýj Dóúòÿ%Õj Dóúòÿ%Íj Dóúòÿ%Åj Dóúòÿ%½j Dóúòÿ%µj Dóúòÿ%­j Dóúòÿ%¥j Dóúòÿ%j Dóúòÿ%•j Dóúòÿ%j Dóúòÿ%…j Dóúòÿ%}j Dóúòÿ%uj Dóúòÿ%mj Dóúòÿ%ej Dóúòÿ%]j Dóúòÿ%Uj Dóúòÿ%Mj Dóúòÿ%Ej Dóúòÿ%=j Dóúòÿ%5j Dóúòÿ%-j Dóúòÿ%%j Dóúòÿ%j Dóúòÿ%j Dóúòÿ% j Dóúòÿ%j Dóúòÿ%ýi Dóúòÿ%õi Dóúòÿ%íi Dóúòÿ%åi Dóúòÿ%Ýi Dóúòÿ%Õi Dóúòÿ%Íi Dóúòÿ%Åi Dóúòÿ%½i Dóúòÿ%µi Dóúòÿ%­i Dóúòÿ%¥i Dóúòÿ%i DH=Éi HÂi H9øtH‹–i H…Àt ÿà€Ã€H=™i H5’i H)þHÁþH‰ðHÁè?HÆHÑþtH‹]i H…ÀtÿàfDÀóú€=Ui u+UHƒ=:i H‰åt H=.d èIüÿÿèdÿÿÿÆ-i ]ÃÀóúéwÿÿÿ€óúAVAUI‰õATUSH‹Êh ‹;èúÿÿ‹;H‹(è úÿÿ‹;H‹PxHJüH‰HxLc2èóùÿÿH‹@JðH)ÅHÁý…í…È‹;EfèÑùÿÿ‹;H‹@ö@#uuèÀùÿÿH‰ÇèHüÿÿH‰Å¿Mcäè(þÿÿ‹;I‰ÅèžùÿÿL‰êH‰îH‰ÇèÀúÿÿ‹;è‰ùÿÿH‹@NlàøöE@uRI‰m‹;èoùÿÿ‹;H‹hèdùÿÿJTåH‰[]A\A]A^ÃèKùÿÿ‹;H‹hè@ùÿÿH‹@H‹@H‹lÅéyÿÿÿfD‹;è!ùÿÿH‰îH‰ÇèüÿÿëšH5ÔJL‰ïèEýÿÿDóúAVAUI‰õATUSH‹šg ‹;èãøÿÿ‹;H‹(èÙøÿÿ‹;H‹PxHJüH‰HxLc2èÃøÿÿH‹@JðH)ÅHÁý…í…È‹;Efè¡øÿÿ‹;H‹@ö@#uuèøÿÿH‰ÇèûÿÿH‰Å¿Mcäèøüÿÿ‹;I‰ÅènøÿÿL‰êH‰îH‰Çèùÿÿ‹;èYøÿÿH‹@NlàøöE@uRI‰m‹;è?øÿÿ‹;H‹hè4øÿÿJTåH‰[]A\A]A^Ãèøÿÿ‹;H‹hèøÿÿH‹@H‹@H‹lÅéyÿÿÿfD‹;èñ÷ÿÿH‰îH‰ÇèæúÿÿëšH5¤IL‰ïèüÿÿDóúAVAUI‰õATUSH‹jf ‹;è³÷ÿÿ‹;H‹(è©÷ÿÿ‹;H‹PxHJüH‰HxLc2è“÷ÿÿH‹@JðH)ÅHÁý…í…È‹;Efèq÷ÿÿ‹;H‹@ö@#uuè`÷ÿÿH‰ÇèèùÿÿH‰Å¿McäèÈûÿÿ‹;I‰Åè>÷ÿÿL‰êH‰îH‰Çè`øÿÿ‹;è)÷ÿÿH‹@NlàøöE@uRI‰m‹;è÷ÿÿ‹;H‹hè÷ÿÿJTåH‰[]A\A]A^Ãèëöÿÿ‹;H‹hèàöÿÿH‹@H‹@H‹lÅéyÿÿÿfD‹;èÁöÿÿH‰îH‰Çè¶ùÿÿëšH5tHL‰ïèåúÿÿDóúAVAUI‰õATUSH‹:e ‹;èƒöÿÿ‹;H‹(èyöÿÿ‹;H‹PxHJüH‰HxLc2ècöÿÿH‹@JðH)ÅHÁý…í…È‹;EfèAöÿÿ‹;H‹@ö@#uuè0öÿÿH‰Çè¸øÿÿH‰Å¿Mcäè˜úÿÿ‹;I‰ÅèöÿÿL‰êH‰îH‰Çè0÷ÿÿ‹;èùõÿÿH‹@NlàøöE@uRI‰m‹;èßõÿÿ‹;H‹hèÔõÿÿJTåH‰[]A\A]A^Ãè»õÿÿ‹;H‹hè°õÿÿH‹@H‹@H‹lÅéyÿÿÿfD‹;è‘õÿÿH‰îH‰Çè†øÿÿëšH5DGL‰ïèµùÿÿDóúAVAUI‰õATUSH‹ d ‹;èSõÿÿ‹;H‹(èIõÿÿ‹;H‹PxHJüH‰HxLc2è3õÿÿH‹@JðH)ÅHÁý…í…È‹;Efèõÿÿ‹;H‹@ö@#uuèõÿÿH‰Çèˆ÷ÿÿH‰Å1ÿMcäèkùÿÿ‹;I‰ÅèáôÿÿL‰êH‰îH‰Çèöÿÿ‹;èÌôÿÿH‹@NlàøöE@uUI‰m‹;è²ôÿÿ‹;H‹hè§ôÿÿJTåH‰[]A\A]A^ÃfDè‹ôÿÿ‹;H‹hè€ôÿÿH‹@H‹@H‹lÅéyÿÿÿfD‹;èaôÿÿH‰îH‰ÇèV÷ÿÿë—H5FL‰ïè…øÿÿDóúAVAUI‰õATUSH‹Úb ‹;è#ôÿÿ‹;H‹(èôÿÿ‹;H‹PxHJüH‰HxLc2èôÿÿH‹@JðH)ÅHÁý…í…Ý‹;Efèáóÿÿ‹;H‹@ö@#…èÌóÿÿH‰ÇèTöÿÿH‰Å‹;Mcäè·óÿÿ‹;H‹@Nlàø‹E %ÿ™ƒøA”Æè˜óÿÿ€¸¹tgE„ötbM HÇE¿I‰m‹;èpóÿÿ‹;H‹hèeóÿÿJTåH‰[]A\A]A^Ã@èKóÿÿ‹;H‹hè@óÿÿH‹@H‹@H‹lÅémÿÿÿfD‹;è!óÿÿº¿H‰îH‰Çèá÷ÿÿë”H5ÏDL‰ïè@÷ÿÿóúAVAUI‰õATUSH‹ša ‹;èãòÿÿ‹;L‹ èÙòÿÿ‹;H‹PxHJüH‰HxLc2èÃòÿÿH‹@JðI)ÄIÁüAƒü…‡‹;AnèŸòÿÿ‹;H‹@ö@#…ÿèŠòÿÿH‰ÇèõÿÿI‰Ä‹;HcíL,íèmòÿÿ‹;H‹@L‹4èè^òÿÿHCL‰öH‰ÇèÜöÿÿ„À„‹;è=òÿÿ‹;H‹@H‹èH‹@‹@ % =„´èòÿÿ‹;H‹@H‹èH‹hèòÿÿºH‰ÇH‰îèöÿÿH‰Çèlóÿÿ‹;H‹hèáñÿÿL‰æH‰êH‰Çèóÿÿ‹;èÌñÿÿH‹@Jl(øAöD$@usL‰e‹;è°ñÿÿ‹;H‹hè¥ñÿÿLíH‰([]A\A]A^ÃfDè‹ñÿÿ‹;L‹`è€ñÿÿH‹@H‹@M‹$Äéðþÿÿ€ècñÿÿH‹@H‹èH‹@H‹H‹x éZÿÿÿ‹;èAñÿÿL‰æH‰Çè6ôÿÿévÿÿÿH=ÂD1Àè£ôÿÿH5ÜAL‰ïèTõÿÿ@óúAVAUI‰õATUSH‹ª_ ‹;èóðÿÿ‹;L‹ èéðÿÿ‹;H‹PxHJüH‰HxLc2èÓðÿÿH‹@JðI)ÄIÁüAƒü…‡‹;Anè¯ðÿÿ‹;H‹@ö@#…ÿèšðÿÿH‰Çè"óÿÿI‰Ä‹;HcíL,íè}ðÿÿ‹;H‹@L‹4èènðÿÿH,AL‰öH‰Çèìôÿÿ„À„‹;èMðÿÿ‹;H‹@H‹èH‹@‹@ % =„´è'ðÿÿ‹;H‹@H‹èH‹hèðÿÿºH‰ÇH‰îèôÿÿH‰Çè|òÿÿ‹;H‹hèñïÿÿL‰æH‰êH‰Çèñÿÿ‹;èÜïÿÿH‹@Jl(øAöD$@usL‰e‹;èÀïÿÿ‹;H‹hèµïÿÿLíH‰([]A\A]A^ÃfDè›ïÿÿ‹;L‹`èïÿÿH‹@H‹@M‹$Äéðþÿÿ€èsïÿÿH‹@H‹èH‹@H‹H‹x éZÿÿÿ‹;èQïÿÿL‰æH‰ÇèFòÿÿévÿÿÿH=ÒB1Àè³òÿÿH5ì?L‰ïèdóÿÿ@óúAVAUI‰õATUSH‹º] ‹;èïÿÿ‹;H‹(èùîÿÿ‹;H‹PxHJüH‰HxLc2èãîÿÿH‹@JðH)ÅHÁýƒý…F‹;EfIcìè½îÿÿ‹;L$íH‹@L‹,èè¦îÿÿHd?L‰îH‰Çè$óÿÿ„À„ù‹;è…îÿÿ‹;H‹@H‹èH‹@‹@ % =„´è_îÿÿ‹;H‹@H‹èL‹hèLîÿÿºH‰ÇL‰îèLòÿÿH‰Çè´îÿÿ1Ò1öH‰ÇèXðÿÿ‹;I‰ÅèîÿÿL‰î1ÒH‰ÇèññÿÿºüH5Þ>L‰ïI‰Æèªïÿÿ‹;èóíÿÿL‰öH‰Çèøîÿÿ‹;I‰ÅèÞíÿÿH‹@L‰,è‹;èÏíÿÿ‹;H‹hèÄíÿÿLåH‰([]A\A]A^ÃDè«íÿÿH‹@H‹èH‹@H‹H‹x éZÿÿÿH=$A1ÀèñÿÿH5>>L‰ïè¶ñÿÿfDóúAVAUI‰õATUSH‹ \ ‹;èSíÿÿ‹;H‹(èIíÿÿ‹;H‹PxHJüH‰HxLc2è3íÿÿH‹@JðH)ÅHÁýƒý…F‹;EfIcìè íÿÿ‹;L$íH‹@L‹,èèöìÿÿH´=L‰îH‰Çètñÿÿ„À„ù‹;èÕìÿÿ‹;H‹@H‹èH‹@‹@ % =„´è¯ìÿÿ‹;H‹@H‹èL‹hèœìÿÿºH‰ÇL‰îèœðÿÿH‰Çèðÿÿ1Ò1öH‰Çè¨îÿÿ‹;I‰ÅènìÿÿL‰î1ÒH‰ÇèAðÿÿºðH5.=L‰ïI‰Æèúíÿÿ‹;èCìÿÿL‰öH‰ÇèHíÿÿ‹;I‰Åè.ìÿÿH‹@L‰,è‹;èìÿÿ‹;H‹hèìÿÿLåH‰([]A\A]A^ÃDèûëÿÿH‹@H‹èH‹@H‹H‹x éZÿÿÿH=t?1ÀèUïÿÿH5Ž<L‰ïèðÿÿfDóúAVAUI‰õATUSH‹ZZ ‹;è£ëÿÿ‹;L‹ è™ëÿÿ‹;H‹PxHJüH‰HxLc2èƒëÿÿH‹@JðI)ÄIÁüAƒü…â‹;AnHcíè\ëÿÿ‹;L$íH‹@L‹,èèEëÿÿH<L‰îH‰ÇèÃïÿÿ„À„•‹;è$ëÿÿ‹;H‹@H‹èH‹@‹@ % =tWèëÿÿ‹;H‹@H‹èH‹hèïêÿÿºH‰ÇH‰îèïîÿÿH‰ÇèGïÿÿ‹;èÐêÿÿ‹;H‹hèÅêÿÿJT%øH‰[]A\A]A^Ã@è«êÿÿH‹@H‹èH‹@H‹H‹x ëºH='>1ÀèîÿÿH5A;L‰ïè¹îÿÿf„óúAVI‰öAUATUSH‹ Y ‹;èSêÿÿ‹;L‹(èIêÿÿ‹;H‹PxHJüH‰Hx‹*è4êÿÿHcÕH‹@HÐI)ÅIÁýAƒý…R‹;DeƒÅHcíèêÿÿ‹;H‹@H‹è‹@ % =„êèåéÿÿ‹;H‹@H‹,èèÖéÿÿ¹1ÒH‰îH‰ÇèÄîÿÿH‰Å‹;McäN,åè¯éÿÿ‹;H‹@N‹4àè éÿÿH†:L‰öH‰Çèîÿÿ„À„Ï‹;èéÿÿ‹;H‹@J‹àH‹@‹@ % =„~èYéÿÿ‹;H‹@J‹àL‹`èFéÿÿºH‰ÇL‰æèFíÿÿH‰ÇH‰é1Ò¾7èíÿÿ‹;èéÿÿ‹;H‹hèéÿÿJT-øH‰[]A\A]A^ÃèûèÿÿH‹@H‹èH‹hé)ÿÿÿf.„èÛèÿÿH‹@J‹àH‹@H‹H‹x ë“H5¢9L‰÷è÷ìÿÿH=p<1Àè)ìÿÿf„óúAVAUI‰õATUSH‹:W ‹;èƒèÿÿ‹;L‹ èyèÿÿ‹;H‹PxHJüH‰HxLc2ècèÿÿH‹@JðI)ÄIÁüAƒü…‹;Anè?èÿÿ‹;H‹@ö@#…è*èÿÿH‰Çè²êÿÿI‰Ä‹;HcíL,íè èÿÿ‹;H‹@L‹4èèþçÿÿHä8L‰öH‰Çè|ìÿÿ„À„‹;èÝçÿÿ‹;H‹@H‹èH‹@‹@ % =„¼è·çÿÿ‹;H‹@H‹èH‹hè¤çÿÿºH‰ÇH‰îè¤ëÿÿH‰ÇèLèÿÿH‰Çèéÿÿ‹;H‰ÅèzçÿÿH‰êL‰æH‰Çèœèÿÿ‹;èeçÿÿH‹@Jl(øAöD$@utL‰e‹;èIçÿÿ‹;H‹hè>çÿÿLíH‰([]A\A]A^Àè#çÿÿ‹;L‹`èçÿÿH‹@H‹@M‹$Äéèþÿÿ€èûæÿÿH‹@H‹èH‹@H‹H‹x éRÿÿÿ‹;èÙæÿÿL‰æH‰ÇèÎéÿÿéuÿÿÿH=‚:1Àè;êÿÿH5µ7L‰ïèìêÿÿff.„óúAVAUI‰õATUSHìH‹3U dH‹%(H‰„$1À‹;èiæÿÿ‹;L‹ è_æÿÿ‹;H‹PxHJüH‰HxLc2èIæÿÿH‹@JðI)ÄIÁüAƒü…²‹;Anè%æÿÿ‹;H‹@ö@#…%èæÿÿH‰Çè˜èÿÿI‰Ä‹;HcíL,íèóåÿÿ‹;H‹@L‹4èèäåÿÿHÊ6L‰öH‰Çèbêÿÿ„À„9‹;èÃåÿÿ‹;H‹@H‹èH‹@‹@ % =„Úèåÿÿ‹;H‹@H‹èH‹hèŠåÿÿºH‰ÇH‰îèŠéÿÿH‰ÇH‰æºèzåÿÿ‹;H‰Åè`åÿÿH‰êL‰æH‰Çè‚æÿÿ‹;èKåÿÿH‹@Jl(øAöD$@…ŽL‰e‹;è+åÿÿ‹;H‹hè åÿÿLíH‰(H‹„$dH3%(…€HÄ[]A\A]A^Ãèëäÿÿ‹;L‹`èàäÿÿH‹@H‹@M‹$ÄéÊþÿÿ€èÃäÿÿH‹@H‹èH‹@H‹H‹x é4ÿÿÿ‹;è¡äÿÿL‰æH‰Çè–çÿÿé[ÿÿÿH=J81ÀèèÿÿèžçÿÿH5x5L‰ïè¯èÿÿff.„@óúAVAUI‰õATUSH‹úR ‹;èCäÿÿ‹;H‹(è9äÿÿ‹;H‹PxHJüH‰HxLc2è#äÿÿH‹@JðH)ÅHÁýƒý…&‹;EfIcìèýãÿÿ‹;L$íH‹@L‹,èèæãÿÿHÌ4L‰îH‰Çèdèÿÿ„À„Ù‹;èÅãÿÿ‹;H‹@H‹èH‹@‹@ % =„”èŸãÿÿ‹;H‹@H‹èL‹hèŒãÿÿºH‰ÇL‰îèŒçÿÿH‰ÇèÔæÿÿ‹;I‰Åèjãÿÿ1öM…í@”ÆH‰Çè‰æÿÿ‹;I‰ÅèOãÿÿL‰îH‰ÇèTäÿÿ‹;I‰Åè:ãÿÿH‹@L‰,è‹;è+ãÿÿ‹;H‹hè ãÿÿLåH‰([]A\A]A^Ãè ãÿÿH‹@H‹èH‹@H‹H‹x ézÿÿÿH=¬61ÀèeæÿÿH5ß3L‰ïèçÿÿfDóúAVAUI‰õATUSH‹jQ ‹;è³âÿÿ‹;H‹(è©âÿÿ‹;H‹PxHJüH‰HxLc2è“âÿÿH‹@JðH)ÅHÁýƒý…&‹;EfIcìèmâÿÿ‹;L$íH‹@L‹,èèVâÿÿH<3L‰îH‰ÇèÔæÿÿ„À„Ù‹;è5âÿÿ‹;H‹@H‹èH‹@‹@ % =„”èâÿÿ‹;H‹@H‹èL‹hèüáÿÿºH‰ÇL‰îèüåÿÿH‰Çè4åÿÿ‹;I‰ÆèÚáÿÿH‰Çèbäÿÿ‹;I‰ÅèÈáÿÿL‰ñL‰îH€2H‰ÇèÃãÿÿ‹;è¬áÿÿH‹@L‰,è‹;èáÿÿ‹;H‹hè’áÿÿLåH‰([]A\A]A^Ãè{áÿÿH‹@H‹èH‹@H‹H‹x ézÿÿÿH=51ÀèÕäÿÿH5O2L‰ïè†åÿÿfDóúAWAVAUATI‰ôUSHƒì8H‹ÔO dH‹%(H‰D$(1À‹;è áÿÿ‹;H‹(èáÿÿ‹;H‹PxHJüH‰HxD‹*èíàÿÿIcÕAMH‹@‰L$HÐH)ÅI‰ïIÁÿAƒÿŽø‹;AmHcíè¸àÿÿ‹;H‹@H‹è‹@ % =„kè–àÿÿ‹;H‹@H‹,èè‡àÿÿºH‰îH‰Çè‡äÿÿA‰Ä‹;èmàÿÿ‹;AUH‹@HcÒL‹4ÐèWàÿÿHcL$‹;H‹@HÍH‰L$H‹,ÈH‰T$è1àÿÿH1H‰îH‰Çè¯äÿÿ„À„k‹;èàÿÿH‹L$‹;H‹@H‹ÈH‹@‹@ % =„’èåßÿÿH‹T$‹;H‹@H‹ÐH‹hèÍßÿÿºH‰îH‰ÇèÍãÿÿH‰ÅA‹F %¡=…FI‹ÇD$H‹@H‰D$ Aƒÿ…VE…äˆÀ‹D$Fl McíAöF…èI‹L9h‚ÛI‹FLcl$H‰D$IÅë„ƒèƒø‡ÄL‰îH‰ïD‰âèáÿÿH‰ïA‰Ç‰Æè¹ãÿÿE…ÿxÔ‹D$I‹DøH˜H‰AH‹L$Æ‹;èôÞÿÿIc÷H‰ÇèâÿÿH‰Å‹;èßÞÿÿH‰îH‰Çèäßÿÿ‹;H‰ÅèÊÞÿÿH‹L$H‹@H‰,È‹;è¶Þÿÿ‹;H‹hè«ÞÿÿHl$H‰(H‹D$(dH3%(…ÞHƒÄ8[]A\A]A^A_Ë;èyÞÿÿL‰êL‰öH‰Çè âÿÿé ÿÿÿfD‹;èYÞÿÿHT$ ¹L‰öH‰Çè„àÿÿÇD$Aƒÿ„ªþÿÿ‹;AƒÅMcíè$Þÿÿ‹;H‹@J‹è‹@ % =„èÞÿÿ‹;H‹@N‹,èèóÝÿÿºL‰îH‰Çèóáÿÿ‰D$‹t$H‹D$ …öˆ¾Lcl$L=j5L9èƒ1þÿÿf„‹;è©Ýÿÿ¹L‰úL‰öH‰ÇA¸èÞÿÿH‹D$ HƒÀH‰D$ L9èrÍéðýÿÿ„‹;èiÝÿÿH¨8éwþÿÿDèSÝÿÿH‹L$H‹@H‹ÈH‹@H‹H‹h é|ýÿÿfDè+ÝÿÿH‹@H‹èH‹D‹` é£üÿÿ€‰ò÷ÚHcÒH9Âw(D$é-ÿÿÿèóÜÿÿH‹@J‹èH‹‹@ ‰D$éýþÿÿH=í-1ÀèNàÿÿH5Ì-L‰çèÿàÿÿH=æ-1Àè1àÿÿèÌßÿÿH=e01Àèàÿÿff.„óúAWAVAUATI‰ôUSHƒì(H‹-$K dH‹%(H‰D$1À‹}è\Üÿÿ‹}H‹èQÜÿÿ‹}H‹PxHJüH‰HxD‹:è:ÜÿÿIc×H‹@HÐH)ÃHÁûH‰$ƒûŽë‹}A_EwHcÛèÜÿÿ‹}H‹@H‹Ø‹@ % =„*èåÛÿÿ‹}H‹@H‹ØèÕÛÿÿHT$¹H‰ÞH‰ÇèÀàÿÿI‰Å‹}Mcöè²Ûÿÿ‹}J õH‹@H‰L$J‹ðè•ÛÿÿH{,H‰ÞH‰Çèàÿÿ„À„=‹}èsÛÿÿ‹}H‹@J‹ðH‹@‹@ % =„ èLÛÿÿ‹}H‹@J‹ðH‹Xè8ÛÿÿºH‰ÞH‰Çè8ßÿÿƒ<$D‹d$H‰ÃtéôDƒèƒø‡¤L‰îH‰ßD‰âèæÛÿÿH‰ßA‰Ç‰Æè‰ßÿÿE…ÿxÔ‹}èÜÚÿÿIc÷H‰ÇèÞÿÿH‰Ã‹}èÆÚÿÿH‰ÞH‰ÇèËÛÿÿ‹}H‰Ãè°ÚÿÿH‹@J‰ð‹}è Úÿÿ‹}H‹Xè”ÚÿÿH\$H‰H‹D$dH3%(…WHƒÄ([]A\A]A^A_Ãf„‹}èXÚÿÿH˜8ë€èCÚÿÿƒ<$D‹d$H‹@J‹ðH‹@H‹H‹X „ÿÿÿ‹}EgMcäèÚÿÿH‹@J‹à÷@ ÿuy‹}èùÙÿÿH‹@J‹à€x tc‹}èãÙÿÿH‹@J‹à‹@ %ÿÀ= tDD‹d$é„fè»Ùÿÿ‹}H‹@H‹ØH‹H‹@H‰D$èŸÙÿÿH‹@H‹ØL‹héÑýÿÿfD‹}è€ÙÿÿH‹@J‹à‹@ % =tQ‹}èaÙÿÿ‹}H‹@N‹$àèQÙÿÿºL‰æH‰ÇèQÝÿÿA‰Äƒ<$u@H‹T$1ÀH‰ÖIcÌ)ÂH9ñDGâéþÿÿD‹}èÙÿÿH‹@J‹àH‹D‹` ëÁ€‹}AƒÇMcÿèéØÿÿ‹}H‹@J‹ø‹@ % =t|èÊØÿÿ‹}H‹@N‹<øèºØÿÿºL‰þH‰ÇèºÜÿÿH‹T$…Àx/HcÈH…ÒtH9ÑrH=¥)1ÀèÜÿÿfDH‰ÖIÍH)ÎéDÿÿÿ‰Á÷ÙHcÉH9ÑwÒÐH‰ÖHcÈH)ÎIÍé%ÿÿÿèNØÿÿH‹@J‹øH‹‹@ ë”H=÷+1Àè°ÛÿÿH5g)L‰çèaÜÿÿè<Ûÿÿff.„óúAWAVAUI‰õATUSHƒìH‹¤F ‹;èí×ÿÿ‹;L‹ èã×ÿÿ‹;H‹PxHJüH‰HxLc2èÍ×ÿÿH‹@JðI)ÄIÁüAƒü…¬‹;Anè©×ÿÿ‹;H‹@ö@#…!è”×ÿÿH‰ÇèÚÿÿI‰Ä‹;HcíL,íèw×ÿÿ‹;H‹@L‹4èèh×ÿÿHN(L‰öH‰ÇèæÛÿÿ„À„8‹;èG×ÿÿ‹;H‹@H‹èH‹@‹@ % =„Öè!×ÿÿ‹;H‹@H‹èH‹hè×ÿÿºH‰ÇH‰îèÛÿÿH‰Çè¶Ûÿÿ‹;HcèèìÖÿÿA‹T$ ‹;H‹@âÿ™ƒúNt(øA”ÇèÊÖÿÿ€¸¹„E„ÿ„„AL$ I‰l$M‰f‹;è›Öÿÿ‹;H‹hèÖÿÿLíH‰(HƒÄ[]A\A]A^A_ÃèsÖÿÿ‹;L‹`èhÖÿÿH‹@H‹@M‹$ÄéÎþÿÿ€èKÖÿÿH‹@H‹èH‹@H‹H‹x é8ÿÿÿ‹;è)ÖÿÿH‰êL‰æH‰ÇèëÚÿÿépÿÿÿH=Ï)1ÀèˆÙÿÿH5'L‰ïè9Úÿÿf„óúAWAVAUI‰õATUSHƒìH‹„D ‹;èÍÕÿÿ‹;L‹ èÃÕÿÿ‹;H‹PxHJüH‰HxLc2è­ÕÿÿH‹@JðI)ÄIÁüAƒü…¬‹;Anè‰Õÿÿ‹;H‹@ö@#…!ètÕÿÿH‰Çèü×ÿÿI‰Ä‹;HcíL,íèWÕÿÿ‹;H‹@L‹4èèHÕÿÿH.&L‰öH‰ÇèÆÙÿÿ„À„8‹;è'Õÿÿ‹;H‹@H‹èH‹@‹@ % =„ÖèÕÿÿ‹;H‹@H‹èH‹hèîÔÿÿºH‰ÇH‰îèîØÿÿH‰ÇèF×ÿÿ‹;HcèèÌÔÿÿA‹T$ ‹;H‹@âÿ™ƒúNt(øA”ÇèªÔÿÿ€¸¹„E„ÿ„„AL$ I‰l$M‰f‹;è{Ôÿÿ‹;H‹hèpÔÿÿLíH‰(HƒÄ[]A\A]A^A_ÃèSÔÿÿ‹;L‹`èHÔÿÿH‹@H‹@M‹$ÄéÎþÿÿ€è+ÔÿÿH‹@H‹èH‹@H‹H‹x é8ÿÿÿ‹;è ÔÿÿH‰êL‰æH‰ÇèËØÿÿépÿÿÿH=¯'1Àèh×ÿÿH5â$L‰ïèØÿÿf„óúAWAVI‰öAUATUSHƒìH‹dB ‹;è­Óÿÿ‹;L‹(è£Óÿÿ‹;H‹PxHJüH‰Hx‹*èŽÓÿÿHcÕH‹@HÐI)ÅIÁýAƒý…"‹;DeƒÅHcíèaÓÿÿ‹;H‹@H‹è‹@ % =„Œè?Óÿÿ‹;H‹@H‹,èè0ÓÿÿºH‰îH‰Çè0×ÿÿA‰Æ‹;èÓÿÿ‹;H‹@ö@#…&èÓÿÿH‰Çè‰ÕÿÿH‰Å‹;McäN,åèäÒÿÿ‹;H‹@N‹<àèÕÒÿÿH»#L‰þH‰ÇèS×ÿÿ„À„]‹;è´Òÿÿ‹;H‹@J‹àH‹@‹@ % =„ûèŽÒÿÿ‹;H‹@J‹àL‹`è{ÒÿÿºH‰ÇL‰æè{ÖÿÿH‰ÇD‰öèÐÓÿÿ‹;LcàèVÒÿÿ‹U ‹;H‹@âÿ™ƒúNt(øA”Çè6Òÿÿ€¸¹„±E„ÿ„¨M L‰eI‰n‹;è Òÿÿ‹;H‹hèÿÑÿÿLíH‰(HƒÄ[]A\A]A^A_Ãf.„èÛÑÿÿ‹;H‹hèÐÑÿÿH‹@H‹@H‹lÅéÈþÿÿfDè³ÑÿÿH‹@H‹èH‹D‹p é‚þÿÿ€è“ÑÿÿH‹@J‹àH‹@H‹H‹x éÿÿÿ‹;èqÑÿÿL‰âH‰îH‰Çè3ÖÿÿéIÿÿÿH=%1ÀèÐÔÿÿH5•"L‰÷èÕÿÿóúAWAVAUI‰õATUSHƒìH‹Ô? ‹;èÑÿÿ‹;L‹ èÑÿÿ‹;H‹PxHJüH‰HxLc2èýÐÿÿH‹@JðI)ÄIÁüAƒü…¬‹;AnèÙÐÿÿ‹;H‹@ö@#…!èÄÐÿÿH‰ÇèLÓÿÿI‰Ä‹;HcíL,íè§Ðÿÿ‹;H‹@L‹4èè˜ÐÿÿH~!L‰öH‰ÇèÕÿÿ„À„8‹;èwÐÿÿ‹;H‹@H‹èH‹@‹@ % =„ÖèQÐÿÿ‹;H‹@H‹èH‹hè>ÐÿÿºH‰ÇH‰îè>ÔÿÿH‰ÇèÖÓÿÿ‹;HcèèÐÿÿA‹T$ ‹;H‹@âÿ™ƒúNt(øA”ÇèúÏÿÿ€¸¹„E„ÿ„„AL$ I‰l$M‰f‹;èËÏÿÿ‹;H‹hèÀÏÿÿLíH‰(HƒÄ[]A\A]A^A_Ãè£Ïÿÿ‹;L‹`è˜ÏÿÿH‹@H‹@M‹$ÄéÎþÿÿ€è{ÏÿÿH‹@H‹èH‹@H‹H‹x é8ÿÿÿ‹;èYÏÿÿH‰êL‰æH‰ÇèÔÿÿépÿÿÿH=ÿ"1Àè¸ÒÿÿH52 L‰ïèiÓÿÿf„óúAVAUI‰õATUSH‹º= ‹;èÏÿÿ‹;L‹ èùÎÿÿ‹;H‹PxHJüH‰HxLc2èãÎÿÿH‹@JðI)ÄIÁüAƒü…â‹;AnHcíè¼Îÿÿ‹;L$íH‹@L‹,èè¥ÎÿÿH‹L‰îH‰Çè#Óÿÿ„À„•‹;è„Îÿÿ‹;H‹@H‹èH‹@‹@ % =tWèbÎÿÿ‹;H‹@H‹èH‹hèOÎÿÿºH‰ÇH‰îèOÒÿÿH‰Çè÷Ðÿÿ‹;è0Îÿÿ‹;H‹hè%ÎÿÿJT%øH‰[]A\A]A^Ã@è ÎÿÿH‹@H‹èH‹@H‹H‹x ëºH=¯!1ÀèhÑÿÿH5âL‰ïèÒÿÿf„óúAWAVI‰öAUATUSHƒìH‹d< ‹;è­Íÿÿ‹;L‹ è£Íÿÿ‹;H‹PxHJüH‰Hx‹*èŽÍÿÿHcÕH‹@HÐI)ÄIÁüAƒüŽÑ‹;DeDmMcäMcíè]Íÿÿ‹;N4íèNÍÿÿ‹;UH‹@HcÒL‹<Ðè9Íÿÿ‹;H‹@J‹4àH‰t$è%ÍÿÿH‹t$H‡H‰Çè¡Ñÿÿ„À„Z‹;èÍÿÿ‹;H‹@J‹àH‹@‹@ % =„¡èÜÌÿÿ‹;H‹@J‹àL‹`èÉÌÿÿºH‰ÇL‰æèÉÐÿÿH‰ÇèqÎÿÿI‰ÄH‰ÇèÆÐÿÿ1ɺL‰ç¾!è‚ÐÿÿM…ÿt4A‹G © …¶öÄÿ…Í<„ʼnÂâÿÀú „±‹;ƒÅHcíèLÌÿÿ‹;H‹@H‹,èè=ÌÿÿH‰ÇH‰îèBÏÿÿ‹;H‹hè'ÌÿÿH‰ÇH‰îèüÎÿÿL‰ç‰Æè‚Íÿÿ‹;è ÌÿÿH‰Çè“Îÿÿ‹;H‰ÅèùËÿÿL‰áH‰îHÙH‰ÇèôÍÿÿ‹;èÝËÿÿH‹@J‰,è‹;èÎËÿÿ‹;H‹hèÃËÿÿIîL‰0HƒÄ[]A\A]A^A_ÃfDöÄt3I‹H…À„>ÿÿÿH‹@Hƒøv}H5öL‰çè.Ìÿÿé ÿÿÿf„öÄt{öÄuFöÄ„ÿÿÿI‹fïÀf.@(z„ðþÿÿ뺀è;ËÿÿH‹@J‹àH‹@H‹H‹x émþÿÿI‹Hƒz u‰ë®@H…À„®þÿÿI‹G€80…mÿÿÿéœþÿÿD‹;èéÊÿÿ1ÒL‰þH‰ÇèLËÿÿ„À„{þÿÿéBÿÿÿ€‹;èÁÊÿÿºL‰þH‰Çè!ËÿÿëÓH=1Àè!ÎÿÿH5îL‰÷èÒÎÿÿfóúATU‰ÕSH÷Æu÷Æ H÷H ûHDÙ@öÆui÷Æ@tQƒæH ž‰ïH°HDÙè•Ìÿÿ‰ïI‰ÄèÍÿÿM‰áH‰Ù¾I‰ÀH‹î8 [H°]A\H‹81Àé¡Êÿÿƒæt…ít7xM[]A\ÃèKËÿÿH‰ÙH‘I‰ÀH‹¯8 [¾]A\H‹81ÀédÊÿÿ@èËÿÿH‰ÙHhI‰ÀëÎ@èËÿÿH‰ÙHaI‰Àë¶@óúAVAUI‰õATUSH‹*8 ‹;èsÉÿÿ‹;H‹(èiÉÿÿ‹;H‹PxHJüH‰HxLc2èSÉÿÿH‹@JðH)ÅHÁýƒý…†‹;EfIcìè-Éÿÿ‹;L$íH‹@L‹,èèÉÿÿH}L‰îH‰Çè”Íÿÿ„À„9‹;èõÈÿÿ‹;H‹@H‹èH‹@‹@ % =„ôèÏÈÿÿ‹;H‹@H‹èL‹hè¼ÈÿÿºL‰îH‰Çè¼ÌÿÿI‰ÆH=~èmËÿÿH=€I‰Åè^ËÿÿL‰éH Át~L‰îH‰ÂL‰÷èxÊÿÿ1Ò¾L‰÷èYÍÿÿ‹;èbÈÿÿ¾H‰Çè…ËÿÿI‰Å‹;èKÈÿÿL‰îH‰ÇèPÉÿÿ‹;I‰Åè6ÈÿÿH‹@L‰,è‹;è'Èÿÿ‹;H‹hèÈÿÿLåH‰([]A\A]A^ÃD1Ò1öL‰÷èìÌÿÿ‹;èõÇÿÿ1öH‰ÇèËÿÿI‰Åë”fDèÛÇÿÿH‹@H‹èH‹@H‹L‹p éÿÿÿH=¤1Àè5ËÿÿH5†L‰ïèæËÿÿfDóúAWAVAUI‰õATUSHƒìH‹46 ‹;è}Çÿÿ‹;L‹ èsÇÿÿ‹;H‹PxHJüH‰HxLc2è]ÇÿÿH‹@JðI)ÄIÁüAƒü…¬‹;Anè9Çÿÿ‹;H‹@ö@#…!è$ÇÿÿH‰Çè¬ÉÿÿI‰Ä‹;HcíL,íèÇÿÿ‹;H‹@L‹4èèøÆÿÿH_L‰öH‰ÇèvËÿÿ„À„8‹;èׯÿÿ‹;H‹@H‹èH‹@‹@ % =„Öè±Æÿÿ‹;H‹@H‹èH‹hèžÆÿÿºH‰ÇH‰îèžÊÿÿH‰ÇèÆÉÿÿ‹;Hcèè|ÆÿÿA‹T$ ‹;H‹@âÿ™ƒúNt(øA”ÇèZÆÿÿ€¸¹„E„ÿ„„AL$ I‰l$M‰f‹;è+Æÿÿ‹;H‹hè ÆÿÿLíH‰(HƒÄ[]A\A]A^A_ÃèÆÿÿ‹;L‹`èøÅÿÿH‹@H‹@M‹$ÄéÎþÿÿ€èÛÅÿÿH‹@H‹èH‹@H‹H‹x é8ÿÿÿ‹;è¹ÅÿÿH‰êL‰æH‰Çè{ÊÿÿépÿÿÿH=‡1ÀèÉÿÿH5iL‰ïèÉÉÿÿf„óúAWAVI‰öAUATUSHƒìHH‹4 dH‹%(H‰D$81À‹;èMÅÿÿ‹;L‹(èCÅÿÿ‹;H‹PxHJüH‰HxD‹"è-ÅÿÿIcÔH‹@HÐI)ÅIÁýAƒý…`‹;El$Al$McíèýÄÿÿ‹;H‹@J‹è‹@ % =„€èÛÄÿÿ‹;H‹@N‹,èèÌÄÿÿ¹1ÒL‰îH‰ÇèºÉÿÿI‰Æ‹;AƒÄMcäè©Äÿÿ‹;H‹@J‹à‹@ % =„ è‡Äÿÿ‹;H‹@N‹$àèxÄÿÿ¹1ÒL‰æH‰ÇèfÉÿÿH‰D$HÇD$0‹;èQÄÿÿ‹;H‹@ö@#…™è<ÄÿÿH‰ÇèÄÆÿÿI‰Ä‹;HcíL,íèÄÿÿ‹;H‹@L‹<èèÄÿÿHwL‰þH‰ÇèŽÈÿÿ„À„T‹;èïÃÿÿ‹;H‹@H‹èH‹@‹@ % =„ŽèÉÃÿÿ‹;H‹@H‹èH‹hè¶ÃÿÿºH‰îH‰Çè¶ÇÿÿH‰ÅH5«L‰÷èÄÇÿÿH…ÀtP1öH‰ÇH‰D$è ÄÿÿH‹T$I‰ÆH‰×è0ÇÿÿM…öt,H‹t$HL$(HT$ L‰÷LD$0èÿÇÿÿ…À…'L‰÷èÈÿÿ‹;è8Ãÿÿ‹;Lct$H‹@Jl(øA‹D$ %ÿ™ƒøA”ÇèÃÿÿ€¸¹„5E„ÿ„,AL$ M‰t$L‰e‹;èãÂÿÿ‹;H‹hèØÂÿÿIíL‰(H‹D$8dH3%(…HƒÄH[]A\A]A^A_Àè£Âÿÿ‹;L‹`è˜ÂÿÿH‹@H‹@M‹$ÄéVþÿÿ€è{ÂÿÿH‹@J‹àH‹@H‰D$éþÿÿDè[ÂÿÿH‹@J‹èL‹pé“ýÿÿf.„è;ÂÿÿH‹@H‹èH‹@H‹H‹h é€þÿÿH‹t$ H…ötH‰ïè.ÄÿÿH‹|$ ‰D$èÐÅÿÿH‹t$(H…ö„«þÿÿH‰ïèzÂÿÿH‹|$(‰D$èLÆÿÿéþÿÿ€‹;èÉÁÿÿL‰òL‰æH‰Çè‹ÆÿÿéÈþÿÿèÑÄÿÿH5¡L‰÷èâÅÿÿH=ƒ1ÀèÅÿÿ@óúAWAVI‰öAUATUSHƒìH‹$0 ‹;èmÁÿÿ‹;L‹(ècÁÿÿ‹;H‹PxHJüH‰Hx‹*èNÁÿÿHcÕH‹@HÐI)ÅIÁýAƒý…š‹;DmDeMcíè Áÿÿ‹;H‹@J‹è‹@ % =„ãèþÀÿÿ‹;H‹@N‹,èèïÀÿÿ¹1ÒL‰îH‰ÇèÝÅÿÿI‰Å‹;ƒÅHcíèÍÀÿÿ‹;H‹@H‹è‹@ % =„°è«Àÿÿ‹;H‹@H‹,èèœÀÿÿºH‰îH‰ÇèœÄÿÿA‰Æ‹;è‚Àÿÿ‹;H‹@ö@#…*èmÀÿÿH‰ÇèõÂÿÿH‰Å‹;McäN<åèPÀÿÿ‹;H‹@J‹4àH‰t$è<ÀÿÿH‹t$HžH‰Çè¸Äÿÿ„À„z‹;èÀÿÿ‹;H‹@J‹àH‹@‹@ % =„èó¿ÿÿ‹;H‹@J‹àL‹`èà¿ÿÿºH‰ÇL‰æèàÃÿÿH‰ÇD‰òL‰îèrÂÿÿ‹;Lcà踿ÿÿ‹U ‹;H‹@âÿ™ƒúNl8øA”Æè˜¿ÿÿ€¸¹„ËE„ö„ÂM L‰eI‰m‹;èl¿ÿÿ‹;H‹hèa¿ÿÿIïL‰8HƒÄ[]A\A]A^A_Ã@èC¿ÿÿ‹;H‹hè8¿ÿÿH‹@H‹@H‹lÅéÄþÿÿfDè¿ÿÿH‹@J‹èL‹hé0þÿÿf.„èû¾ÿÿH‹@H‹èH‹D‹p é^þÿÿ€èÛ¾ÿÿH‹@J‹àH‹@H‹H‹x éöþÿÿ‹;è¹¾ÿÿL‰âH‰îH‰Çè{Ãÿÿé/ÿÿÿH=‡1ÀèÂÿÿH5£L‰÷èÉÂÿÿf„óúAWAVI‰öAUATUSHƒìH‹- ‹;è]¾ÿÿ‹;L‹(èS¾ÿÿ‹;H‹PxHJüH‰Hx‹*è>¾ÿÿHcÕH‹@HÐI)ÅIÁýAƒý…š‹;DmDeMcíè¾ÿÿ‹;H‹@J‹è‹@ % =„ãèî½ÿÿ‹;H‹@N‹,èèß½ÿÿ¹1ÒL‰îH‰ÇèÍÂÿÿI‰Å‹;ƒÅHcíè½½ÿÿ‹;H‹@H‹è‹@ % =„°蛽ÿÿ‹;H‹@H‹,è茽ÿÿºH‰îH‰ÇèŒÁÿÿA‰Æ‹;èr½ÿÿ‹;H‹@ö@#…*è]½ÿÿH‰Çèå¿ÿÿH‰Å‹;McäN<åè@½ÿÿ‹;H‹@J‹4àH‰t$è,½ÿÿH‹t$HŽH‰Çè¨Áÿÿ„À„z‹;è ½ÿÿ‹;H‹@J‹àH‹@‹@ % =„èã¼ÿÿ‹;H‹@J‹àL‹`èмÿÿºH‰ÇL‰æèÐÀÿÿH‰ÇD‰òL‰îèò½ÿÿ‹;Lcà証ÿÿ‹U ‹;H‹@âÿ™ƒúNl8øA”Æèˆ¼ÿÿ€¸¹„ËE„ö„ÂM L‰eI‰m‹;è\¼ÿÿ‹;H‹hèQ¼ÿÿIïL‰8HƒÄ[]A\A]A^A_Ã@è3¼ÿÿ‹;H‹hè(¼ÿÿH‹@H‹@H‹lÅéÄþÿÿfDè ¼ÿÿH‹@J‹èL‹hé0þÿÿf.„èë»ÿÿH‹@H‹èH‹D‹p é^þÿÿ€èË»ÿÿH‹@J‹àH‹@H‹H‹x éöþÿÿ‹;è©»ÿÿL‰âH‰îH‰ÇèkÀÿÿé/ÿÿÿH=w1Àè¿ÿÿH5“ L‰÷蹿ÿÿf„óúAWAVI‰öAUATUSHƒìH‹* ‹;èM»ÿÿ‹;L‹(èC»ÿÿ‹;H‹PxHJüH‰Hx‹*è.»ÿÿHcÕH‹@HÐI)ÅIÁýAƒý…‹;DeƒÅHcíè»ÿÿ‹;H‹@H‹è‹@ % =„Œèߺÿÿ‹;H‹@H‹,èèкÿÿ¹1ÒH‰îH‰Ç辿ÿÿI‰Æ‹;è´ºÿÿ‹;H‹@ö@#…$蟺ÿÿH‰Çè'½ÿÿH‰Å‹;McäN,å肺ÿÿ‹;H‹@N‹<àèsºÿÿHÚ L‰þH‰Çèñ¾ÿÿ„À„S‹;èRºÿÿ‹;H‹@J‹àH‹@‹@ % =„ñè,ºÿÿ‹;H‹@J‹àL‹`èºÿÿºH‰ÇL‰æè¾ÿÿH‰ÇL‰öè.ºÿÿ‹;Lcàèô¹ÿÿ‹U ‹;H‹@âÿ™ƒúNt(øA”ÇèÔ¹ÿÿ€¸¹„§E„ÿ„žM L‰eI‰n‹;訹ÿÿ‹;H‹hè¹ÿÿLíH‰(HƒÄ[]A\A]A^A_Äè{¹ÿÿ‹;H‹hèp¹ÿÿH‹@H‹@H‹lÅéÊþÿÿfDèS¹ÿÿH‹@H‹èL‹pé‡þÿÿfè;¹ÿÿH‹@J‹àH‹@H‹H‹x éÿÿÿ‹;è¹ÿÿL‰âH‰îH‰ÇèÛ½ÿÿéSÿÿÿH=ç 1Àèx¼ÿÿH5 L‰÷è)½ÿÿf„óúAVAUI‰õATUSH‹z' ‹;èøÿÿ‹;L‹ 蹸ÿÿ‹;H‹PxHJüH‰HxLc2裸ÿÿH‹@JðI)ÄIÁüAƒü…â‹;AnHcíè|¸ÿÿ‹;L$íH‹@L‹,èèe¸ÿÿHÌ L‰îH‰Çèã¼ÿÿ„À„•‹;èD¸ÿÿ‹;H‹@H‹èH‹@‹@ % =tWè"¸ÿÿ‹;H‹@H‹èH‹hè¸ÿÿºH‰ÇH‰îè¼ÿÿH‰ÇèW¸ÿÿ‹;èð·ÿÿ‹;H‹hèå·ÿÿJT%øH‰[]A\A]A^Ã@èË·ÿÿH‹@H‹èH‹@H‹H‹x ëºH=— 1Àè(»ÿÿH5y L‰ïèÙ»ÿÿf„óúAVI‰öAUATUSHìH‹#& dH‹%(H‰„$1À‹;èY·ÿÿ‹;L‹ èO·ÿÿ‹;H‹PxHJüH‰Hx‹*è:·ÿÿHcÕH‹@HÐI)ÄIÁüAƒü…ë‹;DmƒÅHcíMcíè ·ÿÿ‹;N$íèû¶ÿÿ‹;H‹@H‹è‹@ % =„èÙ¶ÿÿ‹;H‹@H‹,èèʶÿÿºH‰îH‰Çèʺÿÿ‰Å‹–% …À„ ¾H=çèé¶ÿÿ=t H‰ç¾èU·ÿÿƒý„41Àƒý„è¼·ÿÿHcøèdºÿÿH‰Å¾T€H‰ï褸ÿÿH‰ïè<¶ÿÿ1Ò1öH‰ïè0»ÿÿ‹;è9¶ÿÿH‰ÇèÁ¸ÿÿ‹;I‰Æè'¶ÿÿH‰éH‹L‰öH‰Çè"¸ÿÿ‹;è ¶ÿÿH‹@N‰4è‹;èüµÿÿ‹;H‹hèñµÿÿIìL‰ H‹„$dH3%(…°HÄ[]A\A]A^Ã@軵ÿÿH‹@H‹èH‹‹h ‹‹$ …À…õþÿÿ1ö¿ èã¹ÿÿ1ö¿ è÷¸ÿÿ1ö¿è˹ÿÿ1ö1ÿèâ¸ÿÿÇL$ é¹þÿÿ軹ÿÿHcøèS¹ÿÿH‰ÅéêþÿÿècµÿÿH‰Çè;¹ÿÿH‰ÅéÒþÿÿH5_L‰÷èd¹ÿÿè?¸ÿÿff.„@óúAVAUI‰õATUSHìH‹£# dH‹%(H‰„$1À‹;èÙ´ÿÿ‹;H‹(èÏ´ÿÿ‹;H‹PxHJüH‰HxLc2è¹´ÿÿH‹@JðH)ÅHÁý…í…‹;Efè—´ÿÿ‹;H‹@ö@#…Ÿè‚´ÿÿE1íH‰Çè·ÿÿH‰Å说ÿÿH…À…¬‹;Mcäè\´ÿÿL‰êH‰îH‰Çè~µÿÿ‹;èG´ÿÿH‹@NlàøöE@…”I‰m‹;è)´ÿÿ‹;H‹hè´ÿÿJTåH‰H‹„$dH3%(……HÄ[]A\A]A^Àèã³ÿÿ‹;E1íH‹hèÕ³ÿÿH‹@H‹@H‹lÅè´ÿÿH…À„TÿÿÿI‰åºH‰ÇL‰î致ÿÿé<ÿÿÿf‹;虳ÿÿH‰îH‰Ç莶ÿÿéUÿÿÿH5IL‰ï躷ÿÿè•¶ÿÿDóúUSHƒìH‹" ‹;èX³ÿÿL§¿çà H  H‰ÆHž1Àèµÿÿ‹;‰Åè+³ÿÿ‹;è$³ÿÿ‹;è³ÿÿHþÿÿH5H‰Çè§´ÿÿ‹;è³ÿÿHiûÿÿH5^H‰Ç芴ÿÿ‹;èã²ÿÿHüùÿÿH5YH‰Çèm´ÿÿ‹;èÆ²ÿÿHO÷ÿÿH5ðH‰ÇèP´ÿÿ‹;該ÿÿH"ôÿÿH5ûH‰Çè3´ÿÿ‹;茲ÿÿHõðÿÿH5H‰Çè´ÿÿ‹;èo²ÿÿHèìÿÿH5H‰Çèù³ÿÿ‹;èR²ÿÿH«êÿÿH5$H‰Çèܳÿÿ‹;è5²ÿÿHžèÿÿH5/H‰Ç迳ÿÿ‹;è²ÿÿHAäÿÿH5§H‰Ç袳ÿÿ‹;èû±ÿÿHÔâÿÿH5£H‰Çè…³ÿÿ‹;èÞ±ÿÿH—àÿÿH5 H‰Çèh³ÿÿ‹;èÁ±ÿÿHêÝÿÿH5 H‰ÇèK³ÿÿ‹;褱ÿÿH­ÛÿÿH5ŸH‰Çè.³ÿÿ‹;臱ÿÿHpÙÿÿH5ŸH‰Çè³ÿÿ‹;èj±ÿÿHÓÔÿÿH5žH‰Çèô²ÿÿ‹;èM±ÿÿHÐÿÿH5œH‰Çèײÿÿ‹;è0±ÿÿHYÎÿÿH5JH‰Ç躲ÿÿ‹;è±ÿÿH¬ÌÿÿH5]H‰Çè²ÿÿ‹;èö°ÿÿHOÊÿÿH5hH‰Ç耲ÿÿ‹;èÙ°ÿÿH2ÈÿÿH5sH‰Çèc²ÿÿ‹;è¼°ÿÿHEÆÿÿH5vH‰ÇèF²ÿÿ‹;蟰ÿÿHØÄÿÿH5H‰Çè)²ÿÿ‹;è‚°ÿÿH ÃÿÿH5lH‰Çè ²ÿÿ‹;èe°ÿÿH>ÁÿÿH5wH‰Çèï±ÿÿ‹;èH°ÿÿH1¿ÿÿH5‚H‰ÇèÒ±ÿÿ‹;è+°ÿÿH$½ÿÿH5•H‰Çèµ±ÿÿ‹;è°ÿÿH—ºÿÿH5 H‰Ç蘱ÿÿ‹;èñ¯ÿÿHª»ÿÿH5«H‰Çè{±ÿÿ‹;èÔ¯ÿÿH-¹ÿÿH5¾H‰Çè^±ÿÿ‹;è·¯ÿÿHà·ÿÿH5ÉH‰ÇèA±ÿÿ‹;蚯ÿÿH“¶ÿÿH5ÜH‰Çè$±ÿÿ‹;è}¯ÿÿH5öH?µÿÿH‰Çè±ÿÿ‹;è`¯ÿÿHƒÄ‰î[H‰Ç]éð±ÿÿóúHƒìHƒÄÃcertCrypt::SSLeay::X509SSLeay.xsssl, nameCrypt::SSLeay::Connsslssl, buf, len, ...Offset outside stringNegative lengthssl, buf, ...ssl, fdpackname, ctx, debug, ...Crypt::SSLeay::CTXSSL_connectSSL_acceptundefinedSSL3 alert %s:%s:%s %s:failed in %s %s:error in %s ctxHTTPS_CA_FILEHTTPS_CA_DIRctx, filename, passwordrbctx, filename, modectx, cipherspackname, ssl_version/dev/urandom0.72v5.26.0SSLeay.cCrypt::SSLeay::CTX::newCrypt::SSLeay::CTX::freeCrypt::SSLeay::Conn::newCrypt::SSLeay::Conn::freeCrypt::SSLeay::Conn::pendingCrypt::SSLeay::Conn::set_fdCrypt::SSLeay::Conn::connectCrypt::SSLeay::Conn::acceptCrypt::SSLeay::Conn::writeCrypt::SSLeay::Conn::readCrypt::SSLeay::X509::freecert is not an Crypt::SSLeay::X509ssl is not an Crypt::SSLeay::Connctx is not an Crypt::SSLeay::CTXCrypt::SSLeay::Err::get_error_stringCrypt::SSLeay::CTX::set_cipher_listCrypt::SSLeay::CTX::use_certificate_fileCrypt::SSLeay::CTX::use_PrivateKey_fileCrypt::SSLeay::CTX::use_pkcs12_fileCrypt::SSLeay::CTX::check_private_keyCrypt::SSLeay::CTX::set_verifyCrypt::SSLeay::Conn::get_peer_certificateCrypt::SSLeay::Conn::get_verify_resultCrypt::SSLeay::Conn::get_shared_ciphersCrypt::SSLeay::Conn::get_cipherCrypt::SSLeay::Conn::set_tlsext_host_nameCrypt::SSLeay::X509::subject_nameCrypt::SSLeay::X509::issuer_nameCrypt::SSLeay::X509::get_notBeforeStringCrypt::SSLeay::X509::get_notAfterStringCrypt::SSLeay::Version::openssl_versionCrypt::SSLeay::Version::openssl_version_numberCrypt::SSLeay::Version::openssl_cflagsCrypt::SSLeay::Version::openssl_platformCrypt::SSLeay::Version::openssl_built_onCrypt::SSLeay::Version::openssl_dir;0%£ÿÿLD¨ÿÿt$®ÿÿŒT¯ÿÿÌ„°ÿÿ ´±ÿÿLä²ÿÿŒ´ÿÿÌTµÿÿ D·ÿÿL4¹ÿÿŒäºÿÿÌ”¼ÿÿ ä½ÿÿL´¿ÿÿŒ´ÁÿÿÌôÃÿÿ„ÅÿÿTÇÿÿ”ÄËÿÿàDÐÿÿ,dÒÿÿx„ÔÿÿÄ×ÿÿ4Ùÿÿ\„ÚÿÿœÄÝÿÿèÄÞÿÿ0´àÿÿpÔâÿÿ¼Äæÿÿ ÔéÿÿX äìÿÿ¤ tïÿÿð Äðÿÿ0 Dóÿÿx äôÿÿÀ zRx $À¡ÿÿ0FJ w€?:*3$"DȦÿÿ <\¬ÿÿ+FŽBE ŒA(†A0ƒÆ (A BBBD <œ€­ÿÿ+FŽBE ŒA(†A0ƒÆ (A BBBD <Üp®ÿÿ+FŽBE ŒA(†A0ƒÆ (A BBBD <`¯ÿÿ+FŽBE ŒA(†A0ƒÆ (A BBBD <\P°ÿÿ+FŽBE ŒA(†A0ƒà (A BBBG <œ@±ÿÿ@FŽBE ŒA(†A0ƒÕ (A BBBE <Ü@²ÿÿìFŽBE ŒA(†A0ƒS (A BBBG <ð³ÿÿìFŽBE ŒA(†A0ƒS (A BBBG <\ µÿÿªFŽBE ŒA(†A0ƒT (A BBBF <œ·ÿÿªFŽBE ŒA(†A0ƒT (A BBBF <Ü€¸ÿÿGFŽBE ŒA(†A0ƒõ (A BBBE <¹ÿÿÇFŽEB ŒA(†A0ƒX (A BBBB <\ »ÿÿôFŽBE ŒA(†A0ƒZ (A BBBH Dœà¼ÿÿ1FŽBE ŒA(†A0ƒGÀŽ 0A(A BBBD <äؾÿÿŠFŽBE ŒA(†A0ƒ8 (A BBBB <$(ÀÿÿŠFŽBE ŒA(†A0ƒ6 (A BBBD HdxÁÿÿ¢FBŽB B(ŒD0†A8ƒDp  8A0A(B BBBA H°ÜÅÿÿtFBŽB B(ŒD0†A8ƒD` 8A0A(B BBBJ HüÊÿÿFBŽB E(ŒA0†A8ƒD@u 8A0A(B BBBD HHäËÿÿFBŽB E(ŒA0†A8ƒD@u 8A0A(B BBBD H”¸ÍÿÿFBŽE B(ŒA0†A8ƒD@Æ 8A0A(B BBBK HàüÏÿÿFBŽB E(ŒA0†A8ƒD@u 8A0A(B BBBD <,ÐÑÿÿGFŽBE ŒA(†A0ƒõ (A BBBE HlàÒÿÿ>FBŽE B(ŒA0†A8ƒDP 8A0A(B BBBG D¸ÔÕÿÿüFŒA†C ƒq HBK L ABA Z FBN <ŒÖÿÿêFŽBE ŒA(†A0ƒl (A BBBF H@<ØÿÿFBŽB E(ŒA0†A8ƒD@u 8A0A(B BBBD LŒÚÿÿìFBŽE B(ŒA0†A8ƒD€± 8A0A(B BBBH HܰÝÿÿFBŽE B(ŒA0†A8ƒDP$ 8A0A(B BBBE H(tàÿÿFBŽE B(ŒA0†A8ƒDP$ 8A0A(B BBBE Ht8ãÿÿ‡FBŽE B(ŒA0†A8ƒD@È 8A0A(B BBBI <À|åÿÿGFŽBE ŒA(†A0ƒõ (A BBBE D ŒæÿÿqFŽEB ŒA(†A0ƒGÀ­ 0A(A BBBE DH Äèÿÿ›FŽBE ŒA(†A0ƒGÀ 0A(A BBBH ( êÿÿ E†AƒD  CDGNUÀà& &ðŠ U%6@P À ÐqàŠ èŠ õþÿo`8 ˜ ¢ ( °8Ø ûÿÿoþÿÿo˜ÿÿÿoðÿÿoÚùÿÿoøŠ ð 0@P`p€ °ÀÐàð 0@P`p€ °ÀÐàð 0@P`p€ °ÀÐàð 0@P`p€ °ÀÐàð  0 @ P ` p €   ° À Ð à ð !GCC: (GNU) 8.5.0 20210514 (Red Hat 8.5.0-4)GA$3a10&0&GA$3a1ÀÖGA$3a1ÐqØqGA$3a10&é& GA$3p972ð&ÐqGA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA*cf_protectionð&( GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection(K) GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionK){* GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection{*«+ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection«+Û, GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÛ, . GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection . 0 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection 0ü1 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionü1ª3 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionª3Z5 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionZ5§6 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection§6w8 GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionw8t: GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectiont:±< GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection±<J> GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionJ>Ú? GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionÚ?‚D GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection‚DI GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionI'K GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection'KGM GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionGMßO GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionßO÷Q GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection÷QGS GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionGSŽV GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionŽVŒW GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionŒWzY GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionzY—[ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection—[Œ_ GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionŒ_—b GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection—b§e GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection§e7h GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection7h‡i GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection‡il GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionl«m GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protection«mÐq GA*FORTIFYGA+GLIBCXX_ASSERTIONS GA$3p9720&0&GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p9720&0&GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p9720&0&GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3p9720&0&GA$running gcc 8.5.0 20210514GA$annobin gcc 8.5.0 20210514 GA*GOWªÄGA*GA!stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA$3a1ÐqÐqGA$3a1ÐqÐqGA$3a1ÖÛGA$3a1ØqÝq,ð&àJáô šð&àJ5$-1 9º<µ<7$ú %-ß.ÿ'9inty‹()E,@L´%Eù‘E)’Ld “LÀE”Eø*•Læ&–‘Ë9—‘87˜y`(š‘3ž‘ ¬‘z±‘ 2¿‘8CÂ!‘`>$`û@°¶%O¤ 2lB3 ØL€  ¿ oA ¿ LÏ Lµ8 ¨ p   ˜8  º N Ô ú@ ¤ l+A ° ˜C y$ i$E ˜( ÐJ ì0 å8N*8 \)P6@ Õ[ÛH (3\ÛX è%]Ûh `2jÀ x NÐ L Zà LJEŸÐ 3  y™¡‘LE¦Ð 3® y›¯‘Ô y ›4] B6 y `&7 y5 ] ­ -Zÿ8.Z „8 ¾  Z uA `  y Õ> / é b m!d Z ž!e ` ífy ägy .h ` ‹ ÿW à@ Z;D `@y03 Z¶D .F Z€4G `SEHyÏ< à í È –? ø ' 9 ^3 - › ! à  `ð LÿÖ) %@ í 'È –? (ø ' )9 ^3 *- › + à DIR!LQ:IV"v‘QUV"wLNV"Ez3÷#×# y;"/ œOP"1 ®op($ʉ y$ËÌ1 ?&$ËÌ1 P$Ë¿J #$ËIœ,$ËE  U $ËE C9$ËE ÕC$ËE  ,$ËE @$ËE Q$ËE ÿ6$ËE $Ëö0" :$Ëö0#COP"2 – copP%yãy%zÌ1?&%zÌ1P%z¿J#%zI!œ,%zE  !U %zE !C9%zE !ÕC%zE ! ,%zE !@%zE !Q%zE !ÿ6%zE %zö0":%zö0#é%}l1$¼%€I(¥A%‚ Z0c!%‡ 918Â"%ˆ 91<Î(%ŠŸP@Ú0% ¥PH×"8 ð Ð`$û, y$üÌ1 ?&$üÌ1 P$ü¿J #$üIœ,$üE  U $üE C9$üE ÕC$üE  ,$üE @$üE Q$üE ÿ6$üE $üö0" :$üö0# í$ý Ì1( K7$þ Ì10¶+$I8Ú8$91@Þ$ ËJH…$ýJP/$ Ì1X˜$"< 9¸CP$§jy$¨Ì1?&$¨Ì1P$¨¿J#$¨I!œ,$¨E  !U $¨E !C9$¨E !ÕC$¨E ! ,$¨E !@$¨E !Q$¨E !ÿ6$¨E $¨ö0":$¨ö0#í$© Ì1(K7$ª Ì10%!$« Ì183$¬ Ì1@Ó#$­ Ì1H· "G w"ºà "œ¼$ ÿ1&#¯1#Iop&$Ì1 ø2&%¯1 9&'¯1 áB&(¯1 &*Q_( {&,(10 ý&-(14 áC&/W_8 &0(1@ .&1(1D O &3¯1H Q>&4„P û!&5„X :,&6„` Ý#&891h 8&:W_p ¢@&<W_x Ä&=W_€ &Aö0ˆ Â&Cb 6&EÆ1˜ V'&HÅJ  Ó8&KüA¨ ô&LüA° ×1&NÒ1¸ úA&OÒ1¹ ‰@&^1º t&`ö0¼ F&aö0½ m9&bº1À s+&nö0È =0&uë0É ðA&zÆ1Ð (&{Æ1Ø ÷1&}‰Sà ¹&~À1è á3&]_ð È8&€À1ø$ÎA&„Q$b&†¤1$O &‡¤1$ó&ŠüA$!&c_ $ &‘i_($¥)&“aI0$¶ &¤¼$8$Å&&¥¼$P$ &¦¼$h$ò,&§[0€$¼ &¨[0°%ISv&©¤1à$&«o_è$'4&­Æ1ð%Ina&»•ø$d&¿ï $D&Àï $?)&Áº1 $%&¤1(%Irs&Ô¤10$ç&Õº18$&Öº1@$ƒ&׺1H$&ØÁP$íC&Ù¤1X$B&Ú¤1`$Û=&Û¤1h$Ž&ÞÌ1p$ß&ß´Qx$ &á´Q€$ï3&â‚Pˆ$€!&ã¤1`$Ô;&æë7h$Ú&èÌ1p$2=&ëÌ1x$@&ìÆ1€$‚+&íº1ˆ$ò&îº1$#?&ñZ˜$U &ò• $ñ.&ô1¨$`?&÷ö0ª$/ &ùÒ1«$Ê&úÒ1¬$™6&ûÒ1­$ &ý¤1°&(&u_¸&i &L^è&'&/L^ð&p&=Ï^ø&b9&?`&E&@Z&ú&B91&s=&D91&&Fy&_&Iy&i&J` & &Kº1(&j&Lº10&Ý9&Mº18&–(&NZ@&;&OÁH& &P¤1P&_G&Q¤1X&€&T¤1`&9&U…_h&‰<&VÁp&u&XÒ1x&º&YÒ1y&Ã&ZÒ1z&±&[Ò1{&d&\Ò1|&&]Ò1}&ö&^Ò1~&&_Ò1& &aZ€&ë&b¤1ˆ&1"&d&d&f(1˜&ˆ&h(1œ& &l(1 &Z>&oy¤&{&p‹_¨&\&sº1°&Œ&tº1¸&§&uº1À&W9&vº1È&Ì&wÀ1Ð&ÚE&zº1Ø&>&}º1à&¶/&€º1è&2 &º1ð&eC&™º1ø&•&š¤1&õ"&›¤1&:&œ¤1&g&À1&(&Ÿ‘_ &» &¢Æ18&%&£Æ1@&®A&¤¤1H&#&¥À1P&¨&¦À1X&Š&§À1`&#&¨À1h&ø&©À1p&“>&¬À1x&;"&¯Z€&±G&²©<ˆ&n&³Ì1&` &´Ì1˜&C+&µÌ1 &è&¶Ì1¨&–*&¹‰S°&"@&»y¸&Ì&¼y¼&ý.&½ZÀ&e;&¾¡_È&ë4&¿ZÐ&&ÄÀ1Ø&û$&Ť1à&|'&Ƥ1è&m3&Éyð&ñ &Ì(1ô&ŽF&ÍÒ1ø&Y;&ÎÒ1ù&õ-&Ï1ú&&Ñyü&*&Ó(1&;@&×(1&œ;&ا_&¿4&çÆ1&¨8&ê­_&\&ì‰ &P &î©<p&”&ï[Ix&Ú&ðI€&G&ñIˆ&4-&ù©<&¡5&úy˜&:&ý91œ& '&ÿÒ1 &ö&Ò1¡&ñ &Ò1¢&&Ò1£&OG&x¤&&x¨&$&l¬&Í7&l°'Ian& 91´&êE& 91¸&ó(&91¼&’'&91À&¨2&91Ä&²7&`È& &ZÐ&D"&†4Ø&þ&!³_à&È2&#J1`&Q&%91d&s&'®Zh&¦;&)¤1p&N9&+(1x&%&,I€&J&.Iˆ&Z0&/I&fD&1I˜&Ì&3I &?&6Z¨&u%&7œ°&Q&8œ¸&&991À&É:&:ö0Ä&"&;Ò1Å&÷=&=ö0Æ&L2&>Ò1Ç&Õ9&FÒ1È&@&GÒ1É&  &LÔ]Ì&Â-&NÒ1Ð&l&SSÑ&Å&WyÔ&¿(&YÒ1Ø&48&[Zà&&<&\¤1è&ò &a¤1ð&ˆ"&b¤1ø&t/&c¤1 &[A&d¤1 & &f¤1 &ó&g¤1 &/&j¤1 &FF&k¤1( &©&l¤10 &’3&m¤18 &&&n¤1@ &&:&o¤1H &.&p¤1P &Õ,&rÃ_X &¬D&sÓ_¨ &XC&tÓ_( &Ø5&u¤1¨ &$&v¤1° &&&w¤1¸ &(0&x¤1À &Š&&y¤1È &“ &zÆ1Ð &"&|Æ1Ø &È/&}YDà &Í6&~•è &þ&ã_ð &iG&€ö0ü &$;&ˆÒ1ý &«E&‰Ò1þ &j8&¯1 &À &‘¯1 &@&Ÿó_ &}(& À1 &ô<&¢( &œ &¦¯1( &}:&¨À10 &v &­ù_8 &H(&®I@ &Ü&¯IH &¦9&³ÿ_P &é0&¶Æ1X &Á&·Æ1` &´ &ºn4h &ˆ1&»`p &‹&¼`x &xC&¿¤1€ &¿&À¤1ˆ &‹B&Á¤1 &¤,&¤1˜ &„%&ä1  &|&Ĥ1¨ &5&Æo^° &g&ÈÀ1¸ &ž.&ÉÀ1À &C&Ì‘È &ê&ÏÕZÐ &O-&ÐÕZØ &›'&×ÕZà &e,&ÙøZè &G)&Ü[ð &; &ß,[ø &' &âÆ1 &K*&èÆ1 &Ú &ëÀ1 &ñ &ïÆ1 &$&ó¤1 &w&õÆ1( &x:&÷ `0 &úF&û¡_8 &u&ý^@ &t?& _ˆ &ŸD& ` &N& y˜ &Æ&oZ  &¨#&"`¸ &ìF&- IÐ &U&/•Ø SV"O Í$¼$sv'ç% 0'è( Ó*'è91 'è91 õ'éÝ5AV"P %av'ö[% 0'÷9 Ó*'÷91 '÷91 õ'ø 9HV"Q g%hv'û¨% 0'ü: Ó*'ü91 'ü91 õ'ý•9CV"R ´%cv'ñõ% 0'ò9 Ó*'ò91 'ò91 õ'ó…8c8"S &t'I&0'ß7Ó*'91'91 õ'°:GP"T U&gpP( ' A( ¤1 P'( I t8( ©< ß)( 91 w( 91 ;( Æ1 Þ7( À1( ž9( ©<0 l ( º18À8(E@*(E@ Ç*( Ã;HGV"U 'gv'ìQ' 0'í8 Ó*'í91 'í91 õ'îý7 io'—'0'ª:Ó*'91'91 õ':™"W ¤'Â`%?Á'(-%CbT±@`%Ìj(…%Í ö0Ê%%Î ö0Ÿ8%Ï 1K%Ð (1x%Ò (1¾,%Ó (1 À3%Ô ‰S¦G%Õ üA[%Ö„ ¯%× (1( 0%ß=S0","Z w( á0)í( ‹+) ò; ‰) ªU Œ=) 1 ›F) ` é') ö0 ¿) „ W) ¤1 8) Z(XPV"[ ú( xpv 'õA)2'öÆ1Ð)'öÉ;x'ö•v'öø;ù"\ N)9('ù£)2'úÆ1Ð)'úÉ;x'ú•v'ú<3B'û€; µ"^ °)C0'*2'Æ1Ð)'É;x'•v'B<3B' €; ®%' =;(,"b  * ¥E(* o* 2* Æ1 Ð)* É;  7* „ +B* „ +* ¯1 Ž"c |* “ +‡¾* 2+ˆ Æ1 Ð)+‰É; F/+Š• ©+‹•æ"d Ë*10'4.+2'5Æ1Ð)'5É;x'5•v'5g<3B'6€; ®%'7=;("e ;+ £Fh, ÿ+ 2,Æ1 Ð),É; x,• v,ÃI ¦0,Æ1 :5,åI( ˆ,J0 4,)J8 ô),Z@ Ô ,KJH y,©<P S<,91X f,Œ<\ O;,(1`é"h  ,3ˆ'^-2'_Æ1Ð)'_É;x'_•v'_»<3B'`€; •"'b÷7(‰G'oà<0á-'q Q8–'r Q@Œ-'s QHÍ?'t ZP‡3'u º1XN!'v Z`A'w º1hŽ9'x Zp‰ 'y º1xf7'z `€à'{ ö0,"i )-- D@) Ÿ- ) 8U èA) 8U [!) WU >) 8U ›<) 8U kE) …U( ó;) ¤U0 e) 8U8ANY"j ¬-(any"Þ˜.), "ß ()ø"à¤1)o>"á¯1)»"âº1)”"ãÀ1)<"äÆ1)²"åÌ1)7"æZ)m"ç`)Ì;"è (1)­"é 91)"ê Q)ô!"ë b)N?"ì ‘)2"í Ò1)î"î „1)Ë>"ï ô1(9"{Ñ.sC"|XZG?"}Ls "~ (’"l Þ.,80"A/ +"‚^Z?"ƒ b"„ b}"…iZ¯"†XZ m"‡XZ(C "m N/Õ ('b£/4'cÀ1('db -'eî1o'fî1Q"'gÀ1 a "q °/ ú-ò/ ç - „ ã-&gI ("-' 91 6-( 91PAD"r %}"s  0 ”(-+[0 |-, „ Z--•I x-. „ Ç -/I ^"-0 91 ƒ "t h0 z 0-Lë0 G-MZ ð8-MÆ1 }&-M¡I 6-M91 B1-M91 6+-M91 ›A-My$ A.-Mö0( €-Mö0)I8.ªSU8.«-ö0I16.¬f1U16.­91I32.®y(1U32.¯E91*91 E1Z1+O1•@.ÙZ1=.< 91„1(y1Ì3"w 6ÑE"y º¼$¤1¤1¯1'%[%¢!Ò1î1î1(jÞ1 EØ/13 (/3y /6 Z //7 Z ¯;/8 Z [4/9 Z K./: Z( þ/; Z0 Ü/< Z8 % /= Z@ è/@ ZH €/A ZP Ä/B ZX ¿0/Dš3` {B/F 3h z/Hyp n/Iyt ´*/J ìx 8/M9€ X /NS‚ ä"/O¦3ƒ ã:/Q¶3ˆ üC/Y ø ­ /[Á3˜ è/\Ì3  ¸D/] 3¨ O/^ (° ÓD/_ œ¸ SB/`yÀ — /bÒ3ÄE0ú1,î/+•3ú1 `¶3 L3ª ¼3åÇ3 `â3 Lf1‰î33î311Šî3 1‹î3k/2 y Ç(4+4A2(4j/2 y@2(4ž3<]43>n4Q4ˆ3N4z 47°05¤Ð4Æ>5§ (1‘*5© Z*5ª Ì1"05« º1°05¯’4-E'„Q5.j(.ÿ.î".Ï$.&=..ý).Ã._8.S .k .² . .‰ .e.‡.SìB'™Ü4HE'»h5he+ œ5 ¸9+$ ë7 Ó+% Ã; ¡+) PHEK'¼¨5hek +-Ý5 `1+.91 +/(1 t9+5¦3 'é_6®'éZ''éQ—'ébE'énŽ'é¤1•'éß7A'é¯1+'éå7ç'éñ7¥ 'é÷7 8È6šß7 26›Æ1 Ð)6›É; x6›• v6›;> Ò'6œ? eA6œ0>( ?*6œÆ10 ‡A6œ918 ß&6œ„@ 6œ„H ¯6œ•P g>6œ?X #+6œ91` w>6œ91d V66œ(h  6œ91p Ð.6œ91t Ž 6œ%?x  6œ`€ Å 6œZˆ Ú!6œ¤1 ·,6œ„˜ F6œ„  š 6œ„¨ þ"6œ„°#6œE¸›-6œE ¸ l 6œ©<À_6ë7]5I&b4 'î8®'îZ''îQ—'îbE'înŽ'î¤1•'îß7A'î¯1+'îå7ç'îñ7¥ 'î÷7¾* 'ó9®'óZ''óQ—'óbE'ónŽ'ó¤1•'óß7A'ó¯1+'óå7ç'óñ7¥ 'ó÷7.+ 'ø9®'øZ''øQ—'øbE'ønŽ'ø¤1•'øß7A'ø¯1+'øå7ç'øñ7¥ 'ø÷7* 'ý:®'ýZ''ýQ—'ýbE'ýnŽ'ý¤1•'ýß7A'ý¯1+'ýå7ç'ýñ7¥ 'ý÷7o*/'ª:)®'Z)''Q)—'b)E'n)Ž'¤1)•'ß7)A'¯1)+'å7)ç'ñ7)¥ '÷7ÿ+/'=;)®'Z)''Q)—'b)E'n)Ž'¤1)•'ß7)A'¯1)+'å7)ç'ñ7)¥ '÷70p-'á€;)Q'â n)z8'ã Æ1)>4'ä l1)tE'å Ò10uB'èÃ;)Í,'é Q)¨4'ê b)ÆD'ë Ã;)ø'ì Ò1œ50zG'ðò;)Ý'ñ ò;)¤('ò •j(/'ö<)’!'ö•)ç 'öZ/'úB<)’!'ú•)ç 'úZ/'g<)’!'•)ç 'Z/'5Œ<)’!'5•)ç '5Zf6': 91©<î1©<¨%™<£//'_à<)’!'_•)ç '_Z/'l=)*'m=)W?'n (@ 4=+ =è)7= ^6\= (6ö0 `36 ö0 Ÿ46 1^6'= Í (6&·= ¶6' „ 6( „ ¤6) ¤1 Ÿ6* ¤1 æ 6+ „ 1€6-ß= Â96. ö0 m&6/ß= h=ï= L 266:$> Ð"6; „#end6< „ D!6C „266Dï=õ%0> 6›]>’!6›•ç 6›Z Ë'h6«? û@6¬Š? E6­Ç? ÷6°@ =6¸@ ½6¹5@ ØF6ºU@( A 6¼€@0 “C6¾¤@8 Å6ÀÍ@@ \+6Âñ@H R6Ä@P —=6ÆAX ø@6ÈYA`]>?·=$>86_6 §6¢_? ä76¤ ` œ6¥_?„M16¦7?10>Š?î1ª191q?1(1Ç?î16>ZZZ„¤1(91?1Zÿ?î16>¤1ÇZZE1ÿ?e?Í?1¤1@î16> @5@î16>%@U@î16>41ª1;@u@î16>41{@È$u@[@1(1¤@î16>{@41†@1¤1Í@î16>ª1ª1E1ª@1¤1ñ@î16>{@E1Ó@1(Aî16>AA/÷@10>SAî1µ1yÌ1?0>SA9191Ò1A2P6h öA3rex6i öAÔ86jüAÚ!6l¤1Å 6nZ·,6o • F6p •(š 6q •0ª*6rò;83pos6s „@/6t ö0H+?ã#56u_A2 6| RB,56}RBõ6~B6ÑB]6€ ZB x6§BV#6¨ y# 6© Z3u6P!HXB"!ˆ6\ÑB‚ 6]ïH&06^ÑBx&sC6^"ÑB€•B26Bƒ6¥ (126Ç CÑ@6ÈB26Î LCÑ@6ÐB 6Ñ 91Ð.6Ò 91 3cp6ÓäB2 6לCÑ@6ÙB 6Ú 91Ð.6Û 91 3cp6ÜäB6ÞœC\=2@6áSDÑ@6ãB 6ä 91Ð.6å 91 3cp6æäB06è 916é Ò1] 6êSD 3me6ëœC( 6ì YD0Y6í 9186î 1<Å 6ï 1>1ö02@6ôåDÑ@6öB46÷BP06ø$B 6ù0>3cp6úäB _D6ûäB$ù6ü91(3B6ýœC0 6þZ826'EÑ@6B´:6 (1e36 (1 3me6œC2 6 jEÑ@6 B6 B6  ¤1“E6 Z26ƒE3val6 y286FÑ@6B46B3me6œC3B6œC3cp6äB â 6 Ò1$+ 6 y(/$6" y,ó6# Z02(6&tFÑ@6(B™)6)B3cp6*äB_D6+äBî6, Z§:6- (1 ?6. (1$2`61;GÑ@63B3c164 y3c264y 3cp65äB 66 91Ð.67 91­268 (1/$69 (1 â 6: Ò1$3A6;œC(3B6;œC03me6<œC8l?6=;G@\ 6>;GN ö0KG L 2h6A!Hÿ6B 913cp6CäB 6D 91Ð.6E 91 3c16F y3c26Fy86G ZZ%6H Z /$6I y(3min6J y,3max6Jy03A6KœC83B6KœC@l?6L;GH\ 6M;GV/h6«âH)%26À×B),56 B4yes6ÉñB)N 6Õ C)#6ßLC)J-6ð¢C);6ÿ_D)é.6åD)‡/6'E)‘6jE)ž)6$ƒE)TA6/F)“6?tF)ú6NKG 6QXB âHÿH L !6_•Bâ 8KLQ'H-„-![I ¹4-"[I ,-# aI 2-$ aIÿ/ò/ -‰I·>- ‰I-%IaI*I›I[0 -MÃI‰6-MÆ1„'-M©< ,åI’!,•ç ,Z ,J0,Ì1<,Ÿ- ,)J&,Ì1,¯< ,KJ¸0,º1“<,Ã; ,mJö,µ<£,( $º ¤JùC$»Isv$¼¤1iv$½Quv$¾bå;$¿mJ1Ì1¿Jî1°J¤J/$ýJ)Ö"$Ì1)?$ I))$º1/$ "K)½!$ Ì1)Ø+$  I (091‹K Ñ93 Z v*94 Z »:96 ¤ Ê@97 ° /798 Z ³#99 Z k;9: Z( – :*ÍK ”,:, Z (:- Z 5(:. ° ;:/ `K6€;H/L --;M/L$š;V/L€$& ;[@L$h2;bQL$ ;i`ÿ$ó;nbL `@L5L `QL5Lÿ `bL5Lþ `sL5Lÿw lCH<+öL ö<- Z é <. Z ð;%: º1 50%u´Q§ %v Ì1r&%x ¤1N+%y Ì1“G%z ¤13cv%{ ©< q6%|´Q(‚P/%ŒÞQ4svp% ¯14gv%Ž º12%’R3ary%“ À13ix%” Q2%–*Rš5%— (13ix%˜ Q2%šQR3cur%› Q3end%œ Q2%žxR3cur%Ÿ ¤13end%  ¤1/%‘·R4ary%•ÞQ)á %™R)B8%*R)µ=%¡QR²C0%Š Sí%‹ S*%ºQO/%¤1Þ6%¢xR/%¤ aI(,$6%Ä=S‚B%ÅÌ1a0%Æ ¤1/0%Ù‰S)I%Ú«P);:%ÛÿP)í#%ÜRQ):%Ý·R)‡,%ÞS‰¼AX%ÿbT|=% ö0m% ö0C% 1ù % (1Ó% „²2% „Ò% Z\% ¤1 U3%  ¤1(“)%  Z0s)%  Z8œ%  Z@I%  (Hï%0>P/`%@‡T)–%%AÁ')¹A%BSå30%ÚUÞ %Û À1µ%ÜUÞ%Ý Ut;%Þ U%ß (1 C$%à (1$Ý%á (1(q%â (1,—'‡Tú+%ç‡T1y8Uî1¤1ò;U191WUî1¤1ò;>U1y…Uî1¤1ò;¤1Á(1]U1y¤Uî1ò;A‹U-> îU#val> Ð4 ]#> f |> (1 Q > ©<¬ >°U (>IV ñ>IV > ¤1 s(> Z ÄB> Z > ¤1 úUË > úU¨C€>"Z >&Z o7>'Ð4 {+>(y Ö>+y ¿ >-y á >. Z #>/ Z(#ps>0 Z0 z3>4 (18 % >5 (1< 2 >6 Z@ º#>7 ZH q2>8 ö0P Å)>9 ö0Q S%>; ö0R />< Ò1S E>= (1T L>> Ì1X 7>? Ì1` g >@ ¤1h ,>A 1p ³(>B 1r >C (1t >D ¤1x Ê">E (1€ p>F (1„ L$>G bˆ „D>H b 5F>IÒ1˜ A>J ö0™ å!>K 1š €*>L (1œ 4>M Ì1  1>N ¤1¨ €>O&Z° !>P ¤1¸ v(>Q ZÀ !B>T ZÈ B>U ZÐ >V ZØ TF>W Zà Ó>X Zè V>Y Zð T)>^ l1ø ™4>_ 1ü 5)>` ö0þ ‡>a ö0ÿ$5.>b Æ1$/!>c ÷7$ýE>d À1$š>f ,Z$Â>g >h ö0T$0)>i ö0U$ú3>j ö0V$ž>k ö0W$‹8>l ‰SX$*>m à `$•D>n l1`$->o l1d$é:>rQh$^F>sQp$Ë>t`x$ð%>vÒ1y7I'>xEx7™>yEx7Ï>zE x7@7>{E x$®)>}Ò1{$ƒ>~ ö0|[VîUOV Ð4[V˜.XZydZÏ"¨Zº"î10"$¨ZsC"$¨ZoZ."QÀZ®ZÆZ1yÕZî1þ"RâZèZøZî1¤1"SÀZ€>"U[[1Ò1,[î1¤1¯"V9[?[J[î1 gU[+J[½;"uU[;="wU[Á"yU[Æ"{U[p"}U[^"U[Æ"ƒU[Œ;"…U[¯"ˆU[Ä."ŠU[i5"ŒU[Û"ŽU[ g\ Lö[ˆ!"\$"’U[y<"”U[J"–U[++"˜U[D>"šU["œU[Ò-"žU[¶!"¡U[O "£U[Ò"¥U[("ªU[ "¸ 1ý#"º 1C"¼ 1 gÞ\ L@Î\¢"¿Þ\m"ÅU[ g ] Lÿý\b "Ú ]I"Û ]."Ü(4 €D]+9]9"ÝD]ù "‹=D<"Œ=K"=K,"Ž= -•]+:"·Š]Ü"= Áº]+ˆ?"¯]: "–U[8'E"¡^.Å.’.*>.kF.æ6..2.5'X"¶(4ÒBH"F<^3pad"G<^ ¼$L^ Lœ&"PY^_^o^î1Ì1S8"a|^‚^1(1›^î1ª1ª1'("f¿J)"gµ^»^1Ì1Ï^î1Ì11"hY^v-"ié^ï^1y _î1Z•P"l9[B"sD_3fn"t ô13ptr"u (|9"v_Ÿ-(1UÿHâHLZ Z…_ LÇy Q¡_ LÁD_91 (Ã_ L ¤1Ó_ L ¤1ã_ L ö0ó_ L Ñ.Æ1øOt4í(( ¤1'` L"=2" #1y "ª#1*?’(4°.?&(4 ›^e`+G:?ÅZ` ¨^}`+ ?cr`Ø?þZ1 1¢`+—`Û(? ¢` #1¿`+´`á1? ¿`¨? U[6 ? ¢` 1ö`+ë`3? ö`3*@&Š1@(î1¤@-—1"@1Ò1H4@4Ò1:-@K†4=@L†42%@XŠ1Ô@[‹_D@\yŠ:@]y#'@aQy1@eŠ1&@fŠ1‰@iãØ @“Š1£&@§Š1%E@©y )@®yÈ0@åÜ^±3@çÆ1î@èbc#@ëŠ1 @ó¼$M@ùÒ1 -Db L"@ú4bš2"4»Z^"6»Z Çzb Ljbc<Aƒzb $-›b L‹b¢A ›b 1¼b Lÿ¬b³"N ¼b Ù1Ùb+ÎbÕ%"bÙbK"cÙb>"dÙbR"eÙbq,"fÙbó:"gÙb/"ZOc4nv"Zn4u8"ZTc,c ö0dc Li-"ZOc/"[”c4nv"[n4u8"[Tcqc¬"[”c B>·c¦c{üB]Èc¼/eB{Ùc½)SSLB–ïcÞc$fB—dÖ<5ECß²cÙ'Cà²c}6C²cOC²c·@C-²cŸC:²cc*C@²c"CT²cÀC[²cð4C\²cú0C]²cC^²c]C_²cM=Cd²cš/Cf²cÅ Cg²cšBCh²c Ci²cûCj²c Ck²c¦Cl²c§ Cm²c…Cn²cy)Cp²c\D²cØAD²cE²cB%E²crDE$²cS7E.²c¢FB²cÍc¼c\£e²?G̲c!GÛ²cL&GܲcèGݲc{2GÞ²c²BGß²cÙGà²c¤ Gá²cˆGâ²c©Gã²cÛGå²cÊ4Gæ²c4H÷²c31Hø²cHù²c5Hû²c0H²cð7H²c™H²cî&H²c]:H²c§H²c;H ²c.?H"²cóBH&²c)H(²cËH)²cÖ$HP²cæ=HQ²cÐHR²c³H\²c£=H]²cDH^²c<(HÖ²cœHײcHزc‹ HÚ²cfHô²cÞcêcjIt U[|;J-µg×3-J»²cÌ&J¼²c!1J½²c,J¾²cÿ(JÀ²cÄFJÁ²c9á<7°m œ†p:† 7î1;cv7©<A=<Ž <y=ax< (1€z>‡/< ¯1?sp< ¯1>#< (1@;BAÁ ƒsŸAÈmùÜBìmÝøhCU çà CQ ƒsCR {sCX vsAõmùÜAümùÜAnùÜBnÝKiCT 0uCQ lA nùÜB6nÝ„iCT ŒsCQ iA=nùÜBSnݽiCT ¤sCQ @hAZnùÜBpnÝöiCT XuCQ °eAwnùÜBnÝ/jCT €uCQ  bA”nùÜBªnÝhjCT °uCQ _A±nùÜBÇnÝ¡jCT ØuCQ  [AÎnùÜBänÝÚjCT vCQ €YAënùÜBoÝkCT (vCQ WAoùÜBoÝLkCT ½sCQ PSA%oùÜB;oÝ…kCT ÖsCQ RABoùÜBXoݾkCT ðsCQ àOA_oùÜBuoÝ÷kCT  tCQ PMA|oùÜB’oÝ0lCT )tCQ 0KA™oùÜB¯oÝilCT FtCQ IA¶oùÜBÌoÝ¢lCT btCQ DAÓoùÜBéoÝÛlCT }tCQ à?AðoùÜBpÝmCT HvCQ P>A pùÜB#pÝMmCT xvCQ À<A*pùÜB@p݆mCT  vCQ €:AGpùÜB]pÝ¿mCT ÈvCQ €8AdpùÜBzpÝømCT èvCQ °6ApùÜB—pÝ1nCT —tCQ `5AžpùÜB´pÝjnCT wCQ °3A»pùÜBÑpÝ£nCT @wCQ 2AØpùÜBîpÝÜnCT hwCQ 0AõpùÜB qÝoCT ˜wCQ  .AqùÜB(qÝNoCT ÀwCQ °+A/qùÜBEq݇oCT èwCQ à,ALqùÜBbqÝÀoCT xCQ €*AiqùÜBqÝùoCT @xCQ P)A†qùÜBœqÝ2pCT pxCQ  (A£qùÜB¹qÝkpCT  xCQ ð&AÀqùÜDÐq ÝE[ #ð&+œÈr:† #î1ÍÉ;cv#©<<Ž %y=sp% ¯1 š=ax% (1õéF‡/% ¯1}F#% (1ÔÒG0rF§%)Á F#*ª1HDAO'ùÜA`'ùÜAh'-ÝBx':ÝžqCU4A‚'ùÜB'FÝÉqCTvCQ}A—'ùÜAÕ'ùÜAà'ùÜAÿ'ùÜH (SÝCTvIª'WrF0]€~A±'ùÜA¼'ùÜJ°Ü'% rKÁܦ¤A 'ùÜA'ùÜA-'ùÜH(`ÝCU}CT çrEŠ (+œ u:† î1ÍÉ;cv©<<Ž y=sp ¯1 š=ax (1õéF‡/ ¯1}F# (1ÔÒGTtF§%Á F#ª1HDA(ùÜA(ùÜA˜(-ÝB¨(:ÝàsCU2A²(ùÜBÀ(FÝ tCTvCQ}AÇ(ùÜA)ùÜA)ùÜA/)ùÜH:)SÝCTvIÚ(™tF]€~Aá(ùÜAì(ùÜJ°ÜG(` ÁtKÁܦ¤A=(ùÜAG(ùÜA](ùÜHK)`ÝCU}CT çrET@ÿP)+œLw:† ÿî1ÍÉ;cvÿ©<<Ž y=sp ¯1 š=ax (1õéF‡/ ¯1}F# (1ÔÒGð–vF§%Á F#ª1H D A¯)ùÜAÀ)ùÜAÈ)-ÝBØ):Ý"vCU3Aâ)ùÜBð)FÝMvCTvCQ}A÷)ùÜA5*ùÜA@*ùÜA_*ùÜHj*SÝCTvI *ÛvF ]€ ~ A*ùÜA*ùÜJ°Üw)À wKÁܦ ¤ Am)ùÜAw)ùÜA)ùÜH{*`ÝCU}CT çrE/í€*+œŽy:† íî1Í É ;cví©<  <Ž ïy=spï ¯1  š =axï (1õ é F‡/ï ¯1 } F#ï (1Ô Ò GPØxF§%óÁ F#ôª1H D Aß*ùÜAð*ùÜAø*-ÝB+:ÝdxCU1A+ùÜB +FÝxCTvCQ}A'+ùÜAe+ùÜAp+ùÜA+ùÜHš+SÝCTvI:+yFú]€ ~ AA+ùÜAL+ùÜJ°Ü§* ï EyKÁܦ ¤ A*ùÜA§*ùÜA½*ùÜH«+`ÝCU}CT çrEw#Ûà,@œÃ{:† Ûî1Í É ;cvÛ©<  <Ž Ýy=spÝ ¯1  š =axÝ (1ó é F‡/Ý ¯1jfF#Ý (1½»G {F§%á‘÷óF#âª1;7G@¾zFæ QuqAˆ-ùÜAÿ-ùÜH.mÝCTvCQ ¿A?-ùÜAT-ùÜA\--ÝAi-ùÜAÕ-ùÜAà-ùÜI©-R{Fè]·µA°-ùÜA»-ùÜJ°Ü-àÝ z{KÁÜÝÛAý,ùÜA-ùÜA-ùÜH .`ÝCU}CT çrE©É°++œ~:† Éî1;cvÉ©<I=<Ž Ëy=spË ¯1×Ñ=axË (1, F‡/Ë ¯1¸´F#Ë (1  G°O}F§%ÏÁEAF#Ъ1{A,ùÜA ,ùÜA(,-ÝB5,:ÝÛ|CU0A?,ùÜBM,FÝ}CTvCQ}AT,ùÜA•,ùÜA ,ùÜA¿,ùÜHÊ,SÝCTvIg,”}FÖ]·µAn,ùÜAy,ùÜJ°Ü×+€Ë ¼}KÁÜÝÛAÍ+ùÜA×+ùÜAí+ùÜHÛ,`ÝCU}CT çrE¢® .ìœ :† ®î1;cv®©<I=<Ž °y=sp° ¯1×Ñ=ax° (1, F‡/° ¯1¶²F#° (1 G°j€FZ´—eA?F§%µ ZfdF#¶ª1‰GàdFó¹QÅÃAã.ùÜA /ùÜA/ùÜB,/zÝVCTvCQ2A½/ùÜA.ùÜA–.ùÜAž.-ÝA³.ùÜAÂ.ùÜBÔ.‡ÝÊCT~CQ åqA4/”ÝA?/ùÜBM/FÝ€CT|CQvAT/ùÜA•/ùÜA /ùÜAß/ùÜBê/SÝN€CT|Hý/¡ÝCU ¸tIi/¯€FÄ]êèAp/ùÜA{/ùÜJ°ÜG.€° ×€KÁÜA=.ùÜAG.ùÜA].ùÜH 0`ÝCU}CT àqE{0“0ìœ;„:† “î173;cv“©<|p<Ž •y=sp• ¯1 =ax• (1_SF‡/• ¯1éåF#• (1<:G@…ƒFZ™—etrF§%š Z™—F#›ª1À¼Gp‚FóžQøöAÓ0ùÜAù0ùÜA 1ùÜB1zÝq‚CTvCQ2A­1ùÜAq0ùÜA†0ùÜAŽ0-ÝA£0ùÜA²0ùÜBÄ0‡Ýå‚CT~CQ åqA$1®ÝA/1ùÜB=1F݃CT|CQvAD1ùÜA…1ùÜA1ùÜAÏ1ùÜBÚ1SÝiƒCT|Hí1¡ÝCU ¸tIY1ʃF©]A`1ùÜAk1ùÜJ°Ü70• òƒKÁÜCAA-0ùÜA70ùÜAM0ùÜHü1`ÝCU}CT àqEF5s2ªœ\‡:† sî1jf;cvs©<«£<Ž uy=spu ¯1  =axu (1;/F‡/u ¯1ÅÁF#u (1GЦ†FZy—ePN=strøZwsF§%}¤1µ­Gš…Fó€QA›2ùÜAÁ2ùÜAÔ2ùÜBä2zÝŒ…CT}CQ2Au3ùÜAc2ùÜAz2ùÜBŒ2‡ÝÙ…CT}CQ åqAì2»ÝBø2È݆CT0CQ0A3ùÜB3ÕÝ,†CT}CQ0B&3âÝX†CU}CT ùqCQ üA-3ùÜB83ïÝ}†CT~AB3ùÜH›3¡ÝCU ¸tIJ3ë†FŽ]86AQ3ùÜA\3ùÜJ°Ü'2 u ‡KÁÜ^\A2ùÜA'2ùÜA=2ùÜHª3`ÝCU}CT àqE§'S°3ªœ}Š:† Sî1…;cvS©<ƾ<Ž Uy=spU ¯1'%=axU (1VJF‡/U ¯1àÜF#U (131G`ljFZY—eki=strìZ’ŽF§%]¤1ÐÈG»ˆFó`Q.,AK4ùÜAq4ùÜA„4ùÜB”4zÝ­ˆCT}CQ2A%5ùÜA4ùÜA*4ùÜB<4‡ÝúˆCT}CQ åqAœ4üÝB¨4ÈÝ#‰CT0CQ0A²4ùÜB¿4ÕÝM‰CT}CQ0BÖ4âÝy‰CU}CT ùqCQ ðAÝ4ùÜBè4ïÝž‰CT~Aò4ùÜHK5¡ÝCU ¸tIú4 ŠFn]SQA5ùÜA 5ùÜJ°Ü×30U 4ŠKÁÜywAÍ3ùÜA×3ùÜAí3ùÜHZ5`ÝCU}CT àqEl"<`5GœÐŒ:† <î1 œ;cv<©<áÙ<Ž >y=sp> ¯1B @ =ax> (1q e F‡/> ¯1ý ù F#> (1P!N!GðŒFZB—eˆ!†!G ²‹FóEQ­!«!Aü5ùÜA6ùÜA16ùÜBA6zݤ‹CTvCQ2Au6ùÜAÄ5ùÜAÛ5ùÜBí5‡Ýñ‹CT}CQ åqAI6 ÞH˜6¡ÝCU ¸tII6_ŒFN]Ò!Ð!AP6ùÜA[6ùÜJ°Ü‡5À> ‡ŒKÁÜø!ö!A}5ùÜA‡5ùÜA5ùÜH§6`ÝCU}CT àqEA"°6Çœ¤:† "î1"";cv"©<f"X"<Ž $y=sp$ ¯1##=ax$ (15#)#F‡/$ ¯1Ã#»#F#$ (1<$:$G€îŽ=ssl(gt$r$F=8)Á$—$GÀŽFó-Qè$æ$A¡7ùÜAÇ7ùÜAÚ7ùÜBê7zÝ ŽCT|CQ2AE8ùÜA7ùÜA;7ùÜAJ7ùÜB\7ÞcŽCTvCQ0CR2Aq7ùÜA€7ùÜB’7‡Ý¢ŽCT~CQ  rBü7#ÞÅŽCT7CQ0CRvA%8ùÜHw8¡ÝCU àtIü73F6] % %A8ùÜA8ùÜJ°Ü×6P$ [KÁÜ3%1%AÍ6ùÜA×6ùÜAì6ùÜHi8`ÝCU~CT rEx5€8ôœÌ’:† î1Z%V%;cv©<Ÿ%“%<Ž y=sp ¯1-&'&=ax (1‚&v&F‡/ ¯1 ''F# (1_']'G ’=ssl g—'•'F§%  Z¾'º'F# ª1ø'ô'GP‘FóQ0(.(AC9ùÜAi9ùÜA|9ùÜBŒ9zÝõCTvCQ2A%:ùÜAá8ùÜAö8ùÜAþ8-ÝA9ùÜA"9ùÜB49‡Ýi‘CT~CQ  rA”90ÞAœ9=ÞA¦9ùÜB´9FÝ®‘CT|CQvA»9ùÜAý9ùÜA:ùÜAG:ùÜBR:SÝú‘CT|He:¡ÝCU àtIÐ9[’F]U(S(A×9ùÜAâ9ùÜJ°Ü§8ð ƒ’KÁÜ{(y(A8ùÜA§8ùÜA½8ùÜHt:`ÝCU}CT !rE­1ä€:1œ–:† äî1¢(ž(;cvä©<ç(Û(<Ž æy=spæ ¯1u)o)=axæ (1Ê)¾)F‡/æ ¯1T*P*F#æ (1§*¥*G°T•=sslêgß*Ý*LbufÉ@L‘À{F§%î Z++F#ïª1@+<+Gà<”FóòQx+v+A];ùÜAƒ;ùÜA–;ùÜB¦;zÝ.”CTvCQ2A]<ùÜAû:ùÜA;ùÜA;-ÝA-;ùÜA<;ùÜBN;‡Ý¢”CT~CQ  rB¶;JÞÁ”CTwCQ AÀ;ùÜBÎ;FÝì”CT|CQvAÕ;ùÜA5<ùÜA@<ùÜA<ùÜBŠ<SÝ8•CT|H<¡ÝCU àtIî;™•Fÿ]Ÿ+›+Aõ;ùÜA<ùÜJ°ÜÁ:€æ Á•KÁÜÙ+×+A·:ùÜAÁ:ùÜA×:ùÜA¢<WÞH±<`ÝCU}CT !rE_ÈÀ<ŠœÛ˜:† Èî1,ü+;cvÈ©<A,9,<Ž Êy=spÊ ¯1¢, ,=axÊ (1Ó,Å,F‡/Ê ¯1r-n-F#Ê (1Å-Ã-G@%˜=sslÎgý-û-F§%Ϥ1(. .Gpa—FóÒQ†.„.A[=ùÜA=ùÜA”=ùÜB¤=zÝS—CT}CQ2A>ùÜA#=ùÜA:=ùÜBL=‡Ý —CT}CQ  rA¬=`ÞA¶=ùÜBÇ=mÞ×—CT}0)ÿAÑ=ùÜBÜ=ïÝü—CT}Aæ=ùÜH;>¡ÝCU àtIî=j˜FÞ]«.©.Aõ=ùÜA>ùÜJ°Üç<Ê ’˜KÁÜÑ.Ï.AÝ<ùÜAç<ùÜAý<ùÜHJ>`ÝCU}CT !rE£ªP>ŠœÁ›:† ªî1ø.ô.;cvª©<9/1/<Ž ¬y=sp¬ ¯1š/˜/=ax¬ (1É/½/F‡/¬ ¯1S0O0F#¬ (1¦0¤0GÐ ›=ssl°gÞ0Ü0F§%± —e11G%šFó´Q=1;1Aë>ùÜA?ùÜA$?ùÜB4?zÝšCT}CQ2A¥?ùÜG0£šFའ¤1d1`1AF?ùÜAN?-ÝAX?ùÜBm?zÞ•šCT}CQ åqCR~At?ùÜA³>ùÜAÊ>ùÜBÜ>‡ÝâšCT}CQ  rA ¬ x›KÁÜÂ1À1Am>ùÜAw>ùÜA>ùÜHÚ?`ÝCU}CT !rE±6Sà?¢œø :† Sî1é1å1;cvS©<02"2<Ž Uy=spU ¯1Ð2Î2=axU (1 3ó2>‡/U ¯1F#U (144G1 =sslYg}4u4=lenZyá4Ù4=bufyZE5=5@¹,z•‘°FýC{y¿5§5F=|yÔ6Â6=svb¤1 7˜7F§%c¤18ü7Gà|FófQS8K8AAùÜA;AùÜASAùÜBcAzÝnCTvCQ2AÍCùÜG &ž=ny¹8¯8=xžy09(9BúA”ÞÏCUvCT}CQ|BB¡ÞíCUvCTA,BùÜB7BmÞžCT $ &A·CùÜAh@ùÜAŠ@ùÜA™@ùÜB©@zÝjžCTvCQ2A³@ùÜAÉ@ùÜAï@ùÜBA‡Ý¶žCTvCQ  rAABùÜBLBïÝÛžCTvAVBùÜA§BùÜBµB®ÞŸCT~CQ}AÇBùÜBÜB»ÞDŸCT~CQ‘°CR2AüBùÜACùÜA-CùÜB=Cz݈ŸCT}CQ2AwCùÜBCÈÞ½ŸCT~CQCR1CX2AõCùÜA-DùÜBRD¡ÝöŸCU 8rBoD¡Ý CU NrH‚D¡ÝCU àtIcBv F¥]”99AjBùÜAuBùÜJ°Ü@`U ž KÁÜÎ9Ì9A@ùÜA@ùÜA3@ùÜBaD`Ýê CU|CT %rAtDWÞE83Dtœò¥:† î1õ9ñ9;cv©<@:.:<Ž y=sp ¯1 ;;=ax (18;,;F‡/ ¯1Æ;¾;F# (1I<=<G€ +¥=ssl gÚ<Ð<@¹,;•‘°=len<yO=I=FýC=y¦=˜=F6>yK>?>=bufZß>Ó>F§%¤1g?a?G° §¢FóQº?°?A­EùÜAÔEùÜAèEùÜBøEzÝ™¢CTsCQ2AÝFùÜG Q£=n\y3@)@=x]yª@¢@B*FÕÞú¢CUsCT}CQ|B7F¡Þ£CUsCTADFùÜBOFmÞC£CT $ &AÈFùÜAEùÜA;EùÜAKEùÜB`EÞœ£CTsCQ‘°CR2AnEùÜA‹EùÜBE‡ÝÛ£CTsCQ  rAZFùÜBeFïݤCTsApFùÜAGùÜA'GùÜA=GùÜAeGùÜAGùÜA GùÜA¿GùÜAÏGùÜBßGzÝ’¤CT|CQ2AHùÜA7HùÜAVHùÜAfHùÜBvHzÝã¤CTCQ2BšH¡Ý¥CU 8rAÒHùÜHðH¡ÝCU àtIxFp¥FN]A AA€FùÜAŒFùÜJ°ÜÏDP  ˜¥KÁÜHAFAAÄDùÜAÏDùÜAæDùÜBÿH`Ýä¥CU|CT ^rAIWÞE˜+éIœ©:† éî1oAkA;cvé©<´A¨A<Ž ëy=spë ¯1BBP<Ž „y=sp„ ¯1§P¥P=ax„ (1ÖPÊPF‡/„ ¯1bQ^QF#„ (1µQ³QGð w´=sslˆgíQëQG ´Fó‹QRRAœRùÜA¾RùÜAÑRùÜBáRzÝ´CTvCQ2ASùÜAdRùÜA{RùÜBR‡ÝN´CT}CQ  rAéRßH8S¡ÝCU àtIéR¼´F”]7R5RAðRùÜAûRùÜJ°Ü'RÀ „ ä´KÁÜ]R[RARùÜA'RùÜA=RùÜHGS`ÝCU}CT !rE<DPS>œÀ¹:† Dî1„R€R;cvD©<ÅR½R<Ž Fy=spF ¯1&S$S=axF (1SSISF‡/F ¯1ÎSÆSF#F (1GTETG€ ¹>j=J¤1=ctxL À¹T}TFÉ2M¤1¦T¢T=sslgäTÜTF§%RgFU@UG°®¶FóUQ‘UUATùÜADTùÜAWTùÜBgTzÝ ¶CT|CQ2AåUùÜIÇTGC·=io÷7¶U´UAÔTùÜAãTùÜBîT#ß ·CTvAùTùÜBU0ß.·CTvHUüÞCU|IU=Í·Fàw ¤1ÝUÙUAUùÜAU-ÝA'UùÜB¼CT}AêXùÜB$Y‹ßm¼CU~CT0CQ0A+YùÜB5YmÞ‘¼CT0HkY¡ÝCU uIòXò¼F?]¾Y¼YAùXùÜAYùÜJ°Ü·Wð ½KÁÜäYâYA­WùÜA·WùÜAÍWùÜHzY`ÝCU}CT ørE €YœÀ:† î1 ZZ;cv©<PZDZ<Ž y=sp ¯1ÞZØZ=ax (13['[F‡/ ¯1½[¹[F# (1\\G°Ë¿=ctx À¹H\F\F§%yo\k\F#ª1©\¥\Gà¾Fó Qá\ß\AIZùÜAoZùÜA‚ZùÜB’ZzÝ´¾CTvCQ2AE[ùÜG¿F Q]]AÆZùÜAg[ùÜHu[mÝCT|CQvAçYùÜAüYùÜAZ-ÝAZùÜA(ZùÜB:Z‡Ý{¿CT~CQ ŽrAšZ˜ßA¤ZùÜA[ùÜA([ùÜHˆ[¡ÝCU uIîZÀF]@]>]AõZùÜA[ùÜJ°Ü­Y€ 8ÀKÁÜf]d]A£YùÜA­YùÜAÃYùÜH—[`ÝCU}CT ørE©$É [ìœÀÅ:† Éî1]‰];cvÉ©<Ô]Æ]<Ž Ëy=spË ¯1x^r^=axË (1Í^Á^F‡/Ë ¯1[_S_F#Ë (1Ô_Ò_GýÄ=ctxÏ À¹` `F;ÐÁL`D`F2ÒÁ®`¨`NfpÆî3aý`O- Çe‘ OZÈ—e‘¨Pcaɨe‘°Np12ÊÀÅVaPaF§%Ûy©aŸaF#ܪ1$bbGÐ`ÂFóßQqbmbA1]ùÜAW]ùÜAj]ùÜBz]zÝRÂCTvCQ2Aå^ùÜG³ÂFù Q­b§bA^ùÜAW_ùÜHe_mÝCT|CQ~A#\ùÜAE\ùÜAT\ùÜBf\ÞüÂCT}CQ0CR2Aw\ùÜA™\ùÜA¨\ùÜBº\ÞEÃCT|CQ0CR2AÏ\ùÜAä\ùÜAì\-ÝA]ùÜA]ùÜB"]‡Ý«ÃCTCQ ŽrBŒ]¥ßÐÃCU~CT /sB ]²ßïÃCU‘˜CT0B°]¾ß ÄCU‘˜BÑ]Êß>ÄCU~CT‘ˆCQ‘ CR‘¨CX‘°Bá]ÖßVÄCU~Aè]ùÜA}^ùÜAˆ^ùÜA¥^ùÜAÅ^ùÜB_â߯ÄCUvA _ïßB6_üßÔÄCUvAD_ ÞHŒ_¡ÝCU uI6^BÅFû]ccA=^ùÜAH^ùÜJ°ÜÝ[`Ë jÅKÁÜ?c=cAÓ[ùÜAÝ[ùÜAó[ùÜAo_WÞH~_`ÝCU~CT s©gEÚ?«_œÈÉ:† «î1fcbc;cv«©<«cŸc<Ž ­y=sp­ ¯19d3d=ax­ (1Žd‚dF‡/­ ¯1eeF#­ (1•e“eGpÉ=ctx± À¹ÍeËeF;²ZøeðeFTB´y\fTfF§%¶y¼f¸fF#·ª1öfòfG OÇFóºQ.g,gAaùÜA-aùÜA@aùÜBPazÝAÇCT|CQ2AEbùÜGТÇF QUgQgAˆaùÜAgbùÜHubmÝCTvCQ|A`ùÜA"`ùÜA1`ùÜBC`ÞëÇCT}CQ0CR2AS`ùÜAu`ùÜA„`ùÜB”`zÝ/ÈCTvCQ2Až`ùÜA³`ùÜA»`-ÝAÐ`ùÜAä`ùÜBø`‡Ý—ÈCT‘¸CQ ŽrB^a àµÈCT}CQ~AhaùÜAÝaùÜAèaùÜAbùÜA%bùÜHˆb¡ÝCU uI­aWÉFÄ]g‹gA´aùÜA¿aùÜJ°Ü½_@­ ÉKÁܳg±gA³_ùÜA½_ùÜAÒ_ùÜH—b`ÝCU~CT 2sE­5 bœÊÍ:† î1ÚgÖg;cv©<hh<Ž y=sp ¯1­h§h=ax (1iöhF‡/ ¯1iˆiF# (1 jjGPÍ=ctx“ À¹Aj?jF;”ZljdjFTB–yÐjÈjF§%˜y0k,kF#™ª1jkfkG€QËFóœQ¢k kAdùÜA=dùÜAPdùÜB`dzÝCËCT|CQ2AUeùÜG°¤ËF¤ QÉkÅkA˜dùÜAweùÜH…emÝCTvCQ|AcùÜA2cùÜAAcùÜBScÞíËCT}CQ0CR2AccùÜA…cùÜA”cùÜB¤czÝ1ÌCTvCQ2A®cùÜAÃcùÜAËc-ÝAàcùÜAôcùÜBd‡Ý™ÌCT‘¸CQ ŽrBndà·ÌCT}CQ~AxdùÜAídùÜAødùÜAeùÜA5eùÜH˜e¡ÝCU uI½dYÍF¦]lÿkAÄdùÜAÏdùÜJ°ÜÍb  ÍKÁÜ'l%lAÃbùÜAÍbùÜAâbùÜH§e`ÝCU~CT 2sE>q°e‡œ^Ñ:† qî1NlJl;cvq©<“l‡l<Ž sy=sps ¯1!mm=axs (1vmjmF‡/s ¯1nümF#s (1}n{nG0¨Ð=ctxw À¹µn³nF©xZànØnF§%zy@oÏFó~Q²o°oAÎfùÜAôfùÜAgùÜBgzÝ0ÏCT|CQ2AågùÜG‘ÏF† QÙoÕoALgùÜAhùÜHhmÝCTvCQ|AfùÜAAfùÜAPfùÜBbfÞÚÏCTvCQ0CR2AlfùÜAfùÜA‰f-ÝAžfùÜA­fùÜB¿f‡Ý@ÐCTCQ ŽrB"g#àXÐCT~A,gùÜA¥gùÜA°gùÜAÍgùÜH(h¡ÝCU uIqgíÐFˆ]ppAxgùÜAƒgùÜJ°ÜÝes ÑKÁÜ7p5pAÓeùÜAÝeùÜAòeùÜH7h`ÝCU~CT FsEGZ@hGœ±Ó:† Zî1^pZp;cvZ©<Ÿp—p<Ž \y=sp\ ¯1qþp=ax\ (1/q#qF‡/\ ¯1»q·qF#\ (1r rGûÒ=ctx` À¹FrDrG@“ÒFócQkrirAÜhùÜAþhùÜAiùÜB!izÝ…ÒCTvCQ2AUiùÜA¤hùÜA»hùÜBÍh‡ÝÒÒCT}CQ ŽrA)i0àHxi¡ÝCU uI)i@ÓFl]rŽrA0iùÜA;iùÜJ°Üghà\ hÓKÁܶr´rA]hùÜAghùÜA}hùÜH‡i`ÝCU}CT ørEEDiqœ(Ø:† î1ÝrÙr;cv©< ss<Ž y=sp ¯1—s•s=ax (1ÆsºsF‡/ ¯1TtLtF# (1ÍtËtG a×>j=¤1FÇy uuF§% À¹iuguNctxyÀ¹ŽuŒuO¿7zy  Pbuf{(Ø‘ÀwGÐÕQɘyíÔRAÅk=àAÍkIàI¯jJÕQŠ.y/ÕRA´jVàA¼jIàIàj=ÔÕFàO ¤1·u±uAçjùÜAïj-ÝAùjùÜBkzÞÆÕCT~CQ ŽrCRvAkùÜAjùÜA%jùÜAGjùÜAVjùÜBfjzÝ%ÖCTvCQ2B‡jbàKÖCU isCT B›jnàjÖCUwCT BÌjzà‹ÖCUvCT T€BÔj‡à£ÖCUvBàj‹ßÅÖCUvCT0CQ0AekùÜBk”àîÖCUvÛ>Lb^ < <Lè ^&C&CLŒ ^v7v7L ^{F{FHˆ ^µµLô^ó ó H… ^ï>ï>H ^³&³&Hb^L ^##M^[E[EL ^(#(#Hƒ ^~"~"H(^>>L› ^++I9^nnIñ^a%a%Iõ^ššI`EE^œ?œ?IÐ ^ööLú^cBcBL ^77I“^€E€EI* ^eeID ^``LP ^ò'ò'L¶ ^ssLâ ^³³I5 ^3434I' ^™™I) ^È#È#I ^I ^ ( (I^8<8<L„ ^ooL½^<<IÀ^Â+Â+I ^j4j4IÉ^Ù/Ù/L~ ^À*À*Nw^DDI ^p p I›^p.p.I¹ ^Ön1_%%JØ __6_61Õ _í/í/JÄ_]$]$J»^e'e'I§ ^ÌÌO^½C½CIª ^~~I@ ^š>š>IB ^>#>#Iã ^ÇÇIæ_Éɘ^t!t!Iä_Š.Š._¶¶P5_ââP.^ß ß IP^å5å5I¿ ^æ+æ+M‰^ 3 3I< ^üüIR_ê*ê*Qß_ÛÛQí_JCJCX ^Ï2Ï2IŽ^©F©FIŒ^##IU% $ > &I: ; 9 I$ >   I : ; 9  : ; 9 I8 I !I/  : ; 9   : ; 9  : ; 9 I<7I : ; 9  : ; 9 I'I4: ;9 I?<&4: ; 9 I?< : ;9  : ;9 I8  : ; 9 : ; 9 I: ;9 I: ;9 I : ; 9  : ; 9 I 8  : ;9 ! : ;9 I 8 " : ;9 # : ; 9 I8 $ : ; 9 I8% : ; 9 I8& : ;9 I8' : ;9 I8( : ;9 ) : ;9 I*5I+!,: ; 9 -> I: ; 9 .( / : ;9 0 : ;9 1'I2 : ;9 3 : ;9 I8 4 : ;9 I5!I/6 : ;9 7 : ; 9 I 88> I: ;9 9.?: ;9 '@—B:: ;9 I·B;: ;9 I·B<.?: ;9 'I<=4: ;9 I·B>4: ;9 I?4: ;9 I@4: ;9 IA‰‚1B‰‚1CŠ‚‘BD‰‚•B1E.: ;9 '@—BF4: ;9 I·BG UH‰‚1I J1R¸B UX YW K1·BL4: ;9 IM4: ; 9 I·BN4: ; 9 I·BO4: ; 9 IP4: ; 9 IQ.?: ; 9 I<RS.: ; 9 '@—BT: ; 9 I·BU: ; 9 I·BV.?: ; 9 'I<W1R¸B UX Y W X‰‚•B1Y1Z1[.: ; 9 'I \: ; 9 I].?: ; 9 'I 4^.?<n: ;9 _.?<n: ; 9 `.?<ná9‚û /usr/lib64/perl5/CORE/usr/include/bits/usr/include/sys/usr/include/bits/types/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/usr/include/netinet/usr/include/opensslSSLeay.cinline.hSSLeay.xsstdio2.htypes.htypes.htime_t.hstddef.h__sigset_t.hstruct_timespec.hthread-shared-types.hpthreadtypes.hstdint-uintn.h__locale_t.hlocale_t.hsetjmp.hsetjmp.h__sigval_t.hsiginfo_t.hsignal.hunistd.hgetopt_core.hsockaddr.hsocket.hin.hstat.htime.htime.herrno.hnetdb.hnetdb.hdirent.hdirent.hperl.hmath.hop.hcop.hintrpvar.hsv.hgv.hmg.hav.hhv.hcv.hpad.hhandy.hstruct_FILE.hFILE.hstdio.hsys_errlist.hperlio.hiperlsys.hperly.hregexp.hutf8.hutil.hpwd.hgrp.hcrypt.hshadow.hreentr.hparser.hopcode.hperlvars.hmg_vtable.hossl_typ.hasn1.hec.hrsa.hdh.hpkcs7.hx509.hssl.hpkcs12.hpthread.hproto.hcrypto.hstdlib.hevp.hrand.herr.h ð&£ K  ­XXèvX# ‘  ïv.J ‚< ‘ X JJ<K†eXº ŽzòöXŠz<öXŠz.ö<XÖ%òfLÈÈJJyJ%(<yä  (kK  ­XXúvX# ÿ w.J ‚< ÿX JJ<K†eXº ™zòëX•z<ëX•z.ë<XÖ%òfLÈÈJJyJ%(<yä P)kK  ­XXŒwX# í “w.J ‚< íX JJ<K†eXº ¤zòàX z<àX z.à<XÖ%òfLÈÈJJyJ%(<yä €*kK  ­XXžwX# Û ¥w.J ‚< ÛX JJ<K†eXº ¯zòÕX«z<ÕX«z.Õ<XÖ%òfLÈÈJJyJ%(<yä °+YK  ­XXÂwX# · Éw.J ‚< ·X JJ<K†eXº Åzò¿.Áz<¿XÁz.¿<XÖ%òfLÈÈJJyt%(<yä à,K  ­XX°wX# É ·w.J ‚< ÉX JJ<K†eXò ºzòÊX X. ä.t‚LÈÈJy (‚yä  .PK  ­XXÝwX# œ äw.J ‚< œX JJ<K£dXò ô X‚ä f ƒ(. uÒz¶XÊz.¶J.%ò‚LtJq¬(ä% f  Öuä 0bK  ­XXøwX#  ÿw.J ‚< X JJ<K£dXò ô X‚ä f ƒ(. uåz£XÝz.£J.%ò‚LtJq¬(ä% f  Öuä 2]K  ­XX˜xX# á Ÿx.J ‚< áX JJ<K  zf ÿz…  ‚ž‚ f ƒ( + ùz$X»- =X Éã =X ! -=X„Ȭfq‚º Ösä °3]K  ­XX¸xX# Á ¿x.J ‚< ÁX JJ<K  zf “{ñ  ‚ž‚ f ƒ( + {$X»- =X Éã =ûX ! -=X„Ȭfq‚º Ösä `5fK  ­XXÏxX# ª Öx.J ‚< ªX JJ<K £d  _K  ­XXáyX# ˜ èy.J ‚< ˜X JJ<K –c  ‚ž‚ f ƒ( + [ +>Xƒ-=XK t…Ȭf.pJº Övä à?¦ Ksó .XX¸zX# Á ¿z.J ‚< Á<tu¡Ö  ¬ $Ÿ|<æ  w +J J<K   = ƒ- 0 ™|<7‡ ‘ ž “fÉ Ý< ž4;r×;=vZJ»%‘Jý ! -=XÊÈȬJ. î{ lä ­zˆŸf<f¬äJK Ys!åÔ# # ttlÊž(t òJª|ºtZJ~ò½ÖÒ»|äÖ” DXš¬ Ksó f ô X . ƒ(. u ƒ -= XX J XÖtJLȬ‚r( òJÀä Ösä àOcK  XXò{X# ‡ ù{.J ‚< ‡X JJ<K£dXò ô X‚ä f ƒ(. u Y -= Xt J XÖXLȬ‚rž(ä Öuä RfK  ­XX‰|X# ð |.J ‚< ðX JJ<K £d  Xä‚ ?X<ä#ö*N#XÛJå-=XK t…Ȭ‚.J –}t X ºŸ ¹XXÁºä¿}òf)<< Å‚Öoä Vð{KzÎ „ v i ƒ(<u(-tKX žf¬< tp  pt  .Xfj </  L1 rJ Xbž< pt  pX  .ÖlXlž<f nXnž<·fK  ­XXñ|X# ˆ ø|.J ‚< ˆX JJ<K  yf Ê}º  ‚ž‚ f ƒ( + Ä}»s = Z  ‡×åÅf t­ -=X„Ȭf. ±}f»<¶‚tX Örä €YcK  XX‹}X# î ’}.J ‚< îX JJ<K£dXò ô X‚ä f ƒ(. u Y -= Xt J XÖXLȬ‚rž(ä Öuä  [F Ksó .XXÂ}X# · É}.J ‚< ·X tJ<K(¢¹(‚ (¬)(f<f(¬ä ô}¬ ‘‘f ô X . ƒ(. u ì} ä Y åW =„Y¬ ‚ž‚ tt ,XLt<‚J`ž(v((d‚ät‚ó}XY"ƒ"WKZX‘"ƒ"WKX ¡ºQX äI K  XXà}X# ™ ç}.J ‚. ™X tJ<K¢‚ ¬)X< f¬ä J>f ô X 5 ƒ(. u ­ -= XX J XJžtJLȬ‚r¬( h òJÀä Öqä  b_K  XXþ}X# û …~.J ‚. ûX tJ<K¢‚ ¬)X< f¬ä J>f ô X 5 ƒ(. u ­ -= XX J XJžtJLȬ‚r¬( h òJÀä Öqä °eaK  XXš~X# ß ¡~.J ‚. ßX tJ<K¢e¬ ¬ä’f ô X . ƒ(. u ƒ -= XX J XÖtJLȬ‚rä(‚zä Ösä @hfK  ­XX±~X# È ¸~.J ‚< ÈX JJ<K £d   Ý~  ×»»»‘  ‚‚‚ òXÀäž< Ys/ .XX˜X# á Ÿ.J ‚< áX JJ<K ‚ â~fœXòç~X™< æ~¬ X¥.<.%òžLÈÈf¬Jr‚ç~t™< æ~X X •.% tfm䫞N  jX(Xt »»»»»»»»»»»»»»»»»»»»¼¼»»»»»»»»»»ºvH0>XIlaststatvallong long intold_parserPL_locale_mutexkeep_trying_to_writeblku_oldsaveixcertIorigargcIorigargvPerl_sv_catpvn_flagssi_errnokeeper__pad0ASN1_INTEGER_ittbl_arena_next_spent_sizeIin_utf8_CTYPE_localeRETVALSVhostentls_prevclose_parenPL_no_localize_reflex_stuffIlast_swash_hvxpvgv_readdir_ptrIstatcache_freeres_bufIcompilingIdbargsnew_perlblku_oldspsub_error_countxpvhvPERL_CONTEXT_asctime_bufferRAND_load_fileInumeric_standardsigngamprevcomppadIe_scriptsv_u_servent_structPL_sv_placeholderIpreambleavIDBcontrolxpvioxpvivtbl_maxsi_tidImy_cxt_sizeblku_old_tmpsfloorImain_rootxcv_outsideblku_type_PerlIO__localeshe_valuIutf8_totitle_spent_structnamed_buffX509_CRL_itPL_freqh_lengthop_firstIdoswitches_netent_sizethrhook_proc_tnext_branchPL_op_nameblock_evals_port__in6_uASN1_OBJECT_itPL_no_wrongrefin_port_tgp_refcntprev_markIdef_layerlist/home/.cpanm/work/1637689469.60246/Crypt-SSLeay-0.72saw_infix_sigilIrestartjmpenvsave_lastlocASN1_IA5STRING_itIwarn_locale_spent_bufferIcolorsX509_SIG_itXS_Crypt__SSLeay__Conn_newmg_objje_old_delaymagicmulti_endPerlIO_list_sPerlIO_list_tCOPHHscream_posIargvgvdespatch_signals_proc_tSSL_CTX_freegetdate_errxio_flagsIsharehookold_regmatch_statexcv_xsubnextwordIminus_EIcheckavpad_1pad_2ImarkstackxpvnvPL_bitcountIdump_re_max_lenxcv_flagsPL_warn_nlASN1_ITEM_stIstatusvalueIDBsingleutf8_substr__u6_addr8min_offsetPL_warn_nosemipmopst_atimsival_intIlast_in_gvIreg_curpmshare_proc_tIhash_rand_bits_enabled_call_addrlong doubleop_privatelex_formbrackSVt_LASTsbu_dstrSSL_get_errorIrunopsIpsig_pend_ctime_bufferIcomppad_namePL_magic_vtablesNETSCAPE_SPKI_itImarkstack_maxsbu_iterssi_type_IO_wide_datainternalTLS_client_methodIreentrant_retintINonL1NonFinalFold__spinsX509_NAME_ENTRY_itXS_Crypt__SSLeay__Conn_freeSSL_version_str__blkcnt_tASN1_TIME_itPTR_TBL_tPBE2PARAM_itxhv_max_protoent_sizewherePL_no_symrefhent_hek_grent_ptr_getlogin_bufferxivu_eval_seenPL_curinterp__locale_dataPL_hash_seedpos_flagsIstack_baseexecImax_intro_pendingposcacheSSL_CTXSSL_get_current_cipherop_pmstashstartugroupsbu_strendre_scream_pos_data_scop_stashoffs_addrst_sizePL_opargsRAND_seedpthread_key_tIperldblastparensi_addr_lsbIinplace__locale_t_pkeyIDBlinePL_bincompat_optionsIsv_arenarootjumpPL_uudmapgp_egvnewvalpadnamestatesxio_bottom_gv_unused2IphaseASN1_GENERALIZEDTIME_ityylensubbeg_asctime_sizeIblockhooksend_shift__nuserssbu_oldsaveix_pwent_ptrIosnamen_addrtypelex_casemodslex_brackstacknumbered_buff_STOREIefloatsizePADLISTIpeeppSSL_CTX_set_verifyPADNAMESCRYPT_PARAMS_itIregex_padretopprogram_invocation_nameDISPLAYTEXT_itxcv_padlist_uminmodsp_pwdpIutf8_foldclosuresPL_checkIsv_yesASN1_GENERALSTRING_itparenfloorPL_op_private_bitfieldsbranchlikeJMPENVImain_startqr_anoncvIstashpad_archmy_perlPerl___notusedIenvgvPKCS7_DIGEST_itIperlioIpadname_constPerl_xs_boot_epilogSSL_CTX_set_optionsX509_getm_notBeforeIregmatch_stateprev_rexstderrIisarevIutf8localeIsignalhook__ownerPL_Noop_optc2_utf8__ino64_tsa_family_tsockaddr_inarp__pthread_list_tsubcoffsetsvu_fpyy_stack_frameIdebstashtopwordreg_substr_datumsi_stackxpadl_maxInomemok__uint8_tfirstposIdiehookprev_recurse_locinputany_ptr_readdir64_ptrCLONE_PARAMSIcompcv_vtable_offsetlex_repltimespecPL_interp_size_5_18_0XS_Crypt__SSLeay__CTX_check_private_keyPerlInterpreterxpadnl_max_namedPL_check_mutexxpvlenu_pvILatin1st_nlinkIminus_Fre_eval_strIscopestack_ixsp_maxIscopestack_maxXS_Crypt__SSLeay__CTX_set_cipher_listIminus_aany_pvpIminus_cSSL_CTX_use_PrivateKey_fileSSL_get_shared_ciphersIminus_lIminus_nIminus_pIargvout_stackPKCS7_ATTR_SIGN_itPL_op_seqIinitavPerl_newXS_deffilesin6_familytbl_itemsX509_itPerl_ophook_tcache_maskPL_no_dir_funcfirstcharsImaxsysfdfopenIlocalizinglex_sharedservent_crypt_struct_bufferPL_op_private_labelsrxfree_IO_save_endpw_namePKCS7_SIGN_ENVELOPE_itsp_lstchgcurlySSL_pending_getlogin_sizeASN1_NULL_itCAdirPL_sig_nameIunicode__fmtblku_subqr_packageASN1_BMPSTRING_itPerl_PerlIO_filenoPerl_mg_setIrestartop__timezonePL_thr_keygofs__mask_was_savedPERL_PHASE_CONSTRUCTIlastgotoprobecop_lineIsecondgvEVP_PKEY__locale_structIsavebegininitializedXPVAVpasswordSTRLENexitlistentryop_ppaddrxpadnl_allocIcheckav_saveIdebug_pad_IO_backup_base__jmp_buf_taglex_flagsIendavblku_oldscopespIutf8_idcontEVP_PKEY_freeIcomppad_name_fillmy_opIHasMultiCharFoldglobhook_ttmpXSoffXPVCVSSLeay.cPL_sh_pathInfoCallback_sys_errlistPL_hash_seed_setregnodestdinIperl_destruct_levelsi_cxixmg_virtualpadnamelistoptoptX509_EXTENSIONS_itinterpreterPL_warn_reservedPMOPIstashpadixPerl_xs_handshakest_uidlongfoldASN1_T61STRING_itsp_minCRYPTO_free_IO_read_endxcv_xsubanyPADOFFSETPL_valid_types_RVIstatbufsbu_rflagsxpv_curxpadn_flagsIstderrgvxio_page_lenXS_Crypt__SSLeay__Conn_get_peer_certificateperl_memory_debug_header_IO_save_baseIin_clean_allmark_nameop_flagsold_regmatch_slab__ino_treg_substr_datalex_super_state_grent_structXS_Crypt__SSLeay__Conn_get_verify_resultxcv_root_ucurlymsettingPL_uuemapPL_nanPL_magic_dataIcustom_op_descsPL_hexdigitsi_prevXPVGV_addr_bndsp_namp_IO_write_endlex_startsIsavestacksi_codeImodcountprev_curlyxIsortstashPL_mod_latin1_ucIstdingvsvt_localsp_warnIcustom_opsCHECKPOINTXPVHVany_av_grent_bufferXS_Crypt__SSLeay__Version_openssl_versionlast_uni_IO_buf_baseXPVIOsp_expireXPVIV__uint16_tminlenretIofsgvTARGi_ivIdelaymagic_gidxcv_gv_ukeep_trying_to_readIcollxfrm_multPerl_sv_growtbl_arena_endIsavestack_ixPL_C_locale_objX509_REQ_itsockaddr_x25SVt_PVAVsin6_flowinfoSSLv3_client_methodxmg_magicsvu_gpany_dptrintuitIbody_rootssi_sigvalhek_lenIcollation_ixtokenbufop_nextopline_tmgvtblPL_valid_types_NVXPL_runops_dbg_readdir64_sizeIutf8_xidcontXS_Crypt__SSLeay__Version_openssl_built_onsi_cxstackASN1_VISIBLESTRING_ityyerrstatus_hostent_ptrsbu_rxxcv_padlist_IO_markerPL_revisionsvt_get_Boolsvu_iv__prevIsort_RealCmpsbu_rxtaintedop_moresibECPKPARAMETERS_it_flags2xpv_len_uIpatchlevel_pwent_structnextvalDHparams_itsvu_pvXPVNVany_gvIhash_rand_bitssbu_origERR_error_string_n_IO_lock_t__gid_t_IO_read_ptrIparserxpadlarr_dbgstack_max1runops_proc_tany_hvPL_subversionIpadlist_generationSVt_PVFM__environxpadnl_maxIdefoutgvX509_VAL_it_lowerIstatusvalue_posixSSL_write_pwent_bufferX509_CERT_AUX_it__ctype_tolowersiginfo_tPerl_newSVivany_ivmax_offsetsv_flagsIchopsetIrpeeppoldcomppadPL_fold_localesbu_rxresSVt_PVGVstack_st_X509Iincgvsi_markoffxpadnl_fillPKCS7_ENCRYPT_itSSL_connectS_POPMARKPL_no_usymtv_nsecnexttypesig_slurpyXS_Crypt__SSLeay__Conn_set_fdIcurpm_underSVt_PVHVSighandler_tpthread_getspecificsvu_hashin6addr_loopbacksvu_nvlex_inpatlast_lopsockaddr_ax25PL_isa_DOESptr_tbl_arenaSVt_PVIOSVt_PVIVfilteredXS_Crypt__SSLeay__X509_get_notAfterStringIlastfdPL_perlio_fd_refcntIeval_startGNU C17 8.5.0 20210514 (Red Hat 8.5.0-4) -m64 -mtune=generic -march=x86-64 -g -g -O2 -fexceptions -fstack-protector-strong -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection=full -fwrapv -fno-strict-aliasing -fPIC -fplugin=annobin_readdir_structIlast_swash_keyRSAPublicKey_itls_linestrPerl_check_t_readdir_sizeNETSCAPE_CERT_SEQUENCE_it__alignPKCS8_PRIV_KEY_INFO_itPADNAMELISTSVt_PVCVPERL_PHASE_STARTxcv_hscxtany_u32Perl_croak_nocontext_ctime_sizefopen64op_pmreplrootud_inostack_topIsavestack_maxfprintfPBKDF2PARAM_itSSL_state_string_longIlocalpatchesXS_Crypt__SSLeay__CTX_freeIsv_rootSVt_PVLVp5rxop_next__saved_masksvu_rvsvu_rxsockaddr_eonPKCS7_itany_opIcurstackSVt_PVMGIpadix_floorsi_statusxpadl_arrh_addrtype_strerror_sizeIdelaymagic_euidbufendPerl_newSVpvlex_inwhatany_pvPL_valid_types_PVXxnv_nvPL_phase_namessin_zeroIopfreehook_protoent_ptrIunitcheckavsvu_uvPerlIOlASN1_UTCTIME_itprotoentmg_lenImemory_debug_headerPL_no_modifyPKCS7_SIGNED_itany_svSVt_IVItop_envASN1_ITEM__blksize_t_IO_buf_endshort unsigned int_spent_ptrItmps_stackXS_Crypt__SSLeay__Version_openssl_diryy_lexsharedoffsIseen_deprecated_macro_IO_codecvtIsv_undefIpsig_nameLEXSHAREDclone_paramsperl_drand48_tIgensymPL_foldPKCS7_SIGNER_INFO_itIregmatch_slabop_redooprsfp_hostent_structstart_tmpxio_fmt_namesvt_lencop_hintsh_nameSSL_CTX_newIerrorsPL_no_memxpvlenu_lenh_aliases_hostent_sizePL_Yesop_pmreplstarthent_refcountsaved_copylex_sub_inwhatany_uvItmps_floorPL_do_undumpIstrxfrm_is_behavedxpadl_idIbasetimeIop_maskIsighandlerpunreferencedxpadnl_refcntXS_Crypt__SSLeay__X509_freeIUpperLatin1xio_ofpASN1_OCTET_STRING_it_hostent_buffercop_seqmulti_startop_pmreplroot_shortbufSVt_NVIDBtracemaxlenpre_prefixop_targIbeginavje_retX509_get_subject_nameSSL_CTX_set_cipher_listresume_statePL_dollarzero_mutexXS_Crypt__SSLeay__Version_openssl_version_numberIsv_constspw_dirlex_casestackSSL_set_fdop_lastopIsub_generationblku_evalfloatPL_versionPL_no_securityssl_stIutf8_foldable__countunsigned charsi_cxmaxmulti_open_killPKCS12_freest_rdevXS_Crypt__SSLeay__Err_get_error_stringLOOPILB_invlistXS_Crypt__SSLeay__CTX_use_pkcs12_fileSVt_PVX509_REVOKED_itPerl_sv_setpvREENTRImess_svd2i_PKCS12_fpIglobalstashImin_intro_pendingPL_perlio_mutexRSAPrivateKey_itexpectoldlocSSL_CIPHER_get_nameIcollxfrm_baseIutf8_perl_idcontcx_blkIstatnameRETVALxnv_u__uid_tsin6_scope_idblku_gimmePL_valid_types_IVXst_ctimrecheck_utf8_validityIutf8_tofoldxcv_rootISB_invlistblock_formatin_addr_top_sibparentPKCS7_RECIP_INFO_ittz_dsttime__dataold_namesvxpadn_type_uIAssigned_invlistpeep_tPL_my_ctx_mutexX509_NAME_onelineIsv_noPKCS12_MAC_DATA_itminlen__off_tX509_ATTRIBUTE_itperl_phaseIin_clean_objsd_reclenPL_mmap_page_sizePERL_PHASE_DESTRUCTin_podgp_ioImultideref_pcSSL_CTX_use_PrivateKeyIors_svxpadn_protocvIevalseqIunlockhookXS_Crypt__SSLeay__X509_subject_nameregexp_engineASN1_SET_ANY_itmg_flagsPerl_sv_pvn_force_flagsSSL_freeIcurstashgr_passwdPerl_ppaddr_tgr_gidPBEPARAM_itIstashpadmaxsi_overrun__clock_tSVt_NULLls_bufptrIbeginav_save__uint32_tIorigfilenamexmg_hash_indexlast_lop_opInumeric_localcop_warningsPL_op_private_bitdef_ixIcop_seqmaxPKCS12_SAFEBAGS_itop_pmtargetgvPL_veto_cleanupform_lex_stateIstatgvIdestroyhookcoplinest_blocks_sys_siglistsbu_mASN1_OCTET_STRING_NDEF_itsbu_ssave_curlyxIcomppadsub_no_recoverx509_stlex_dojoinxmg_udirent64gp_cvgenPL_utf8skipxcv_fileSVt_PVNVitervar_ugp_flagsxiou_dirp_servent_bufferPL_op_mutexparen_namesIregistered_mrossi_uidASN1_ENUMERATED_itpw_passwdlex_allbracketsopvalIcurcopdbblock_subpos_magic_old_offsetgetenvgp_file_heksv_refcntsockaddr_in6ERR_get_error__nlink_tSSL_ctrltbl_aryxav_allocsi_fdnparensPL_no_funcxpadn_refcntIeval_rootold_eval_rootnamed_buff_iterst_gidIdowarnyycharIfirstgvmg_moremagicXS_Crypt__SSLeay__Conn_acceptop_pmoffsetSSL_set_connect_stateop_pmstashoffOPENSSL_init_cryptoPERL_SIMGVTBLop_staticPKCS12_BAGS_itMAGICPerl_sv_newmortalItmps_maxoptargPL_latin1_lcsockaddr_ipxIthreadhookPL_valid_types_IV_setblku_givwhengr_nameop_typeIutf8_perl_idstartsublenblku_oldmarkspxivu_ivIutf8_swash_ptrs_netent_ptrIpadname_undefpreamblingproto_perlPKCS12_it_uppercx_uoutputIDBcvPL_sigfpe_savedtrieIlockhook__ctype_toupperPL_inf_xnvuPerl_keyword_plugin_txio_lines_leftcompflagssockaddr_isopthread_mutex_tIin_load_modulePL_memory_wrapxio_pagesigjmp_bufIlaststype__ctype_b__listh_addr_listIutf8_charname_continuein_my_stashxpadn_len_IO_write_ptr_strerror_bufferdummySSL_CTX_check_private_keySSLv2_client_methodIunitcheckav_savePL_op_descsi_stimePL_no_aelemlastcloseparenshort intifmatchIdumpindentIoldnamepreambledop_code_listXS_Crypt__SSLeay__Version_openssl_cflagsxhv_keysitersave_readdir64_struct_sys_nerrIAboveLatin1Iutf8_mark_servent_sizeDIRECTORYSTRING_itsi_signoIDBgvevp_pkey_stIlast_swash_tmpsPerl_sv_2bool_flagsPKCS12_parse__namessv_anyblk_uxcv_startacceptedgvvalIWB_invlistolddepthIutf8cache_boundsprev_evalIpadixdefsv_save_netent_bufferXS_Crypt__SSLeay__X509_get_notBeforeStringxcv_stashYYSTYPExcv_gv_markersPL_keyword_plugincop_hints_hashIcustom_op_namesASN1_UTF8STRING_itlex_sub_replstdoutPKCS12_SAFEBAG_itX509_ALGORS_itxpadn_highre_scream_pos_datahek_hash_ttyname_bufferPL_hints_mutexIknown_layers__stream_netent_errnoXS_Crypt__SSLeay__Conn_get_shared_ciphersItaintingPL_op_private_bitdefsIcurcopIstack_sp__ssize_tany_boolregmatch_info_auxPERL_PHASE_ENDPL_interp_sizeIcollation_standard__glibc_reservedlex_deferPKCS7_ENC_CONTENT_itxmg_stashPL_runops_stdIorigalensbu_maxiterssockaddrIdebugSSL_alert_desc_string_longrefcounted_heIcurpadPL_op_private_valid__time_t__daylightst_mtims_protoXS_Crypt__SSLeay__Conn_writesbu_targd_typelogicalIforkprocesslex_bracketsxio_top_gvIutf8_tolowerOPENSSL_init_sslPL_op_sequenceblku_oldcopperl_mutexPKCS12_stIcurstackinfoIstart_envlex_fakeeoflex_sub_opstashesX509_ALGOR_itIstashcacheSSL_acceptxnv_linesPL_use_safe_putenv_IO_write_baseSSL_set_info_callbackp_aliases_netent_structin_mynext_offxivu_uvsin_portpadnlImodglobalPKCS7_ATTR_VERIFY_itin6addr_anyICmdASN1_UNIVERSALSTRING_itsockaddr_atX509_PUBKEY_itregmatch_info_aux_evalxcv_start_uXS_Crypt__SSLeay__X509_issuer_namePL_no_helem_svXS_Crypt__SSLeay__Conn_get_cipherbasespIgenerationXS_Crypt__SSLeay__CTX_use_certificate_fileIGCB_invlistSSL_CTX_set_default_verify_pathsIstrtabxpadl_outidxpadn_lowblock_givwhenregexp_paren_pair__sizecrypt_datapprivatefclosecv_flags_tcur_top_envASN1_ANY_itxpadn_typestashIin_utf8_COLLATE_localeXS_Crypt__SSLeay__Conn_readIlast_swash_slenstate_uPERL_PHASE_RUN_sigfaultop_sparelex_opst_inoSSL_get_peer_certificatepw_gecos__pid_tparsed_subop_lastRSA_OAEP_PARAMS_itxio_typeyylvalPerl_sv_derived_fromsp_inactsockaddr_dlxav_fillhent_valIorigenvironbNotFirstTimeIdelaymagic_egidgp_avscream_oldsX509_REQ_INFO_itmg_ptr_cur_columnregexpmaxpossa_familyptr_tblInumeric_namelazyiv_sifieldsSVCOMPARE_tSVt_REGEXPIpsig_ptrgp_cvxgv_stashnetentsaved_curcoptv_secblku_u16Iprofiledata__sigset_tgp_lineImainstackIcurpmop_pmflagsst_blksizexpadn_ourstashprogram_invocation_short_namePL_sig_numptr_tbl_ent_hostent_errnoop_slabbedIsublineIargvoutgvIwatchaddrIdefgvhek_keyPerlExitListEntryxio_bottom_namegp_formIreentrant_bufferhent_nextcheck_ix__off64_tIunsafeIhintgvXS_Crypt__SSLeay__CTX_set_verifysockaddr_in__jmp_bufIDBsignalIutf8_charname_beginblku_formatPL_ppaddr__dirstreamX509_EXTENSION_itsin_addrIXpvIregex_padavPL_perlio_debug_fdblku_loopcache_offsetwantedpw_uid_timerIstrxfrm_NUL_replacement__locksig_elemsPL_valid_types_NV_setgr_memIxsubfilenamegp_hvIpad_reset_pendingopterrdfoutgv_sigchldxcv_depthItaint_warnIArgvpw_shellsi_nextPKCS12_syscallPL_no_symref_svIexitlistIsubname_IO_read_basePL_warn_uninitany_i32Ihv_fetch_ent_mhUNOP_AUX_itemsvt_dup__pthread_mutex_sPerl_sv_setiv_mgSSL_newInumeric_radix_svPerl_sv_2ioPL_fold_latin1xcv_outside_seqPL_magic_vtable_namesPL_no_sock_funcIsplitstrxcv_heksvt_freesockaddr_nslong long unsigned intsi_addrdirentssl_ctx_stboot_Crypt__SSLeayIbody_arenascheckstr_grent_sizePL_csighandlerpSVt_INVLISTIsortcopPL_warn_uninit_svASN1_PRINTABLE_itsin_familypacknameIsignalssbu_typesi_pidmg_privatedupeje_bufNETSCAPE_SPKAC_itlazysvXS_Crypt__SSLeay__Conn_pendingItoptargetX509_CRL_INFO_itIstrxfrm_max_cpIerrgvPerl_sv_2pv_flagssvt_clearPERL_PHASE_CHECKnexttokePL_no_myglobItmps_ixIsig_pendingsubstrsany_svpintflagsdestroyable_proc_tIfdpidSSL_CTX_use_certificate_filexpadlarr_allocivalany_dxptrn_netPerl_croak_xs_usageX509_get_issuer_nameop_pmtargetoffIcollation_nameIefloatbufX509_NAME_it_pwent_sizeoldvalany_longxiou_anyIexit_flagsc1_utf8Iglobhooksin6_portPL_block_typed_offSSL_get_verify_resultPKCS7_ISSUER_AND_SERIAL_itxio_top_nameXS_Crypt__SSLeay__CTX_use_PrivateKey_fileIptr_tableIcolorset__jmpbufIfilemode__dev_t__kindIexitlistlensockaddr_unXS_Crypt__SSLeay__Version_openssl_platformop_foldedIdelaymagicPL_charclassImarkstack_ptrblockASN1_BIT_STRING_itpw_gidprev_yes_states_name_protoent_structop_compgp_svsvu_arrayXS_Crypt__SSLeay__Conn_set_tlsext_host_name__pthread_internal_listwhilemIInBitmapmother_re__valn_aliases_sigsysextflagsxio_fmt_gvxpadn_gencop_fileIcurstnamecx_subst__u6_addr16Isv_countECPARAMETERS_itsvt_setIdefstashItaintedtz_minuteswestIbodytargetoldoldbufptrxav_maxxiv_uCAfile_protoent_bufferst_modesavearrayPerl_sv_setref_pv_xivu_chainleave_opIutf8_xidstartASN1_PRINTABLESTRING_itPKCS7_ENVELOPE_itre_eval_startperl_debug_padIstack_maxsvtypeX509_CINF_itst_dev__u6_addr32je_prevIclocktickPerl_sv_2iv_flags__syscall_slong_t__fprintf_chkIXPosix_ptrsIDBsubspwd__nextIutf8_idstartje_mustcatchnumbered_buff_LENGTHyy_parserblock_loopSSL_CTX_use_certificateop_savefreeIscopestackIformtargetpad_offsetPL_perlio_fd_refcnt_sizeSSL_CTX_load_verify_locationss_aliasesXS_Crypt__SSLeay__CTX_newlastcpIconstpadixRSA_PSS_PARAMS_itmulti_closestatherelinesImy_cxt_listIPosix_ptrs_freeres_listxivu_namehek__pad5OpenSSL_version_ttyname_sizesin6_addrIwatchok_IO_FILE__stack_chk_failPL_my_cxt_indexASN1_SEQUENCE_ANY_it__tznamep_protoPerl_sv_2mortalsvt_copyxnv_bm_tailSSL_readsival_ptrmark_locsi_utimexpvavIsrand_calledoptind__mode_tsp_flagperl_keyIreplgvsa_dataIbreakable_sub_genrsfp_filtersIin_evalsuboffset__sigval_t_servent_ptrlex_re_reparsingIutf8_toupperlinestartsig_optelemsPERL_PHASE_INITX509_getm_notAfterIcv_has_evalmg_typexpvcvSSL_alert_type_string_longPKCS12_AUTHSAFES_itnumbered_buff_FETCHIrandom_stateIscopestack_namesi_bandxpadn_pvIcomppad_name_floorXS_Crypt__SSLeay__Conn_connectIdelaymagic_uidIwarnhookIlast_swash_klen_xmgu_sigpollxio_dirpucur_text__elisionblku_oldpmImain_cvÀFÓFUÓFàJóUŸÀF×FT×FàJóTŸGGPGÛJVÛJßJTU+óUŸT]ÝóTŸÝ]óTŸ+]"HV°¶]]8=^=Z~ŸZØ\ØÜ~ŸÝ\+~Ÿ=A~ $ &3$p"ŸAE~ $ &3$p"Ÿ=Av~ $ &3$p8Ÿ‘P‘°]{ÇVVºÝ1Ÿ'8P0HUH[óUŸ0LTL½]½ óTŸ 2]2LóTŸL[]RxVàæ]2L]hm^mŠ~ŸŠ\ ~Ÿ L\L[~Ÿmq~ $ &3$p"Ÿqu~ $ &3$p"Ÿmqv~ $ &3$p8Ÿ½ÁPÁà]«÷V2LVê 1ŸWhP`xUx‹óUŸ`|T|í]í=óTŸ=b]b|óTŸ|‹]‚¨V]b|]˜^º~Ÿº8\8<~Ÿ=|\|‹~Ÿ¡~ $ &3$p"Ÿ¡¥~ $ &3$p"Ÿ¡v~ $ &3$p8ŸíñPñ]Û'Vb|V=1Ÿ‡˜P¨U¨»óUŸ¬T¬]móTŸm’]’¬óTŸ¬»]²ØV@F]’¬]ÈÍ^Íê~Ÿêh\hl~Ÿm¬\¬»~ŸÍÑ~ $ &3$p"ŸÑÕ~ $ &3$p"ŸÍÑv~ $ &3$p8Ÿ!P!@] WV’¬VJm1Ÿ·ÈPðU0óUŸð T „]„ÜóTŸÜ]!óTŸ!0]8V„µ]!](-^-J~ŸJ×\Ü!\!0~Ÿ-1~ $ &3$p"Ÿ15~ $ &3$p"Ÿ-1v~ $ &3$p8ŸoÜ ¿Ÿ! ¿ŸoÆV!V„Ü ¿Ÿ! ¿Ÿ¹Ü1Ÿ(PÀØUØëóUŸÀÜTÜJ]JšóTŸšÂ]ÂÜóTŸÜë]âVms]ÂÜ]øý^ý~Ÿ•\•™~ŸšÜ\Üë~Ÿý~ $ &3$p"Ÿ~ $ &3$p"Ÿýv~ $ &3$p8ŸJNPNm];„VÂÜVwš1ŸçøP0HUH óUŸ0LTL¾]¾šóTŸšÁ]Á óTŸ  ]Rx\muVåÿVhm^mŒ~ŸŒ'VšåVÿ V  ~Ÿmq~ $ &3$p"Ÿqu~ $ &3$p"Ÿmq|~ $ &3$p8Ÿ?CUJmV±•\Á \?CUyš1ŸWhP 8 U8 óUŸ < T< ® ]® Š óTŸŠ ± ]± ý óTŸý ]B h \] e VÕ ï VX ] ^] | ~Ÿ|  VŠ Õ Vï ý Vý ~Ÿ] a ~ $ &3$p"Ÿa e ~ $ &3$p"Ÿ] a |~ $ &3$p8Ÿ/ 3 U: ] V¡ … \± ý \/ 3 Ui Š 1ŸG X P ( U( º óUŸ , T, … ]… « óTŸ« º ]2 X VH M ^M k ~Ÿk } \} g V{ « V« º ~ŸM Q ~ $ &3$p"ŸQ U ~ $ &3$p"ŸM Q v~ $ &3$p8Ÿ÷ û U  P M ]1 5 P5 M ^M Q PQ x ]÷ û UZ { 1Ÿ7 H PÀ Ø UØ jóUŸÀ Ü TÜ 5 ]5 [óTŸ[j]â  Vø ý ^ý  ~Ÿ - \- V+[V[j~Ÿý  ~ $ &3$p"Ÿ  ~ $ &3$p"Ÿý  v~ $ &3$p8Ÿ§ « U½ Á PÁ ý ]á å På ý ^ý P(]§ « U +1Ÿç ø PpˆUˆ·óUŸpŒTŒæ]æ¨óTŸ¨·]’¸\¨­^­Ì~ŸÌ<V<{~Ÿ|¨V¨·~Ÿ­±~ $ &3$p"Ÿ±µ~ $ &3$p"Ÿ­±|~ $ &3$p8ŸTXUTXUY|0Ÿ—¨PÀØU؇óUŸÀÜTÜ‹^‹/óTŸ/F^FjóTŸjy^y‡óTŸâ ]÷üVüvŸå\/j\jyvŸy‡\üv $ &3$p"Ÿv $ &3$p"Ÿ(PjxPü}v $ &3$p8Ÿý UoVFjVy‡Vý U /0Ÿç÷P¨U¨„óUŸ¬T¬]óTŸ)])uóTŸu„]²Ø\ÔÜVMgVÈÍ^Íì~Ÿì‡VMVguVu„~ŸÍÑ~ $ &3$p"ŸÑÕ~ $ &3$p"ŸÍÑ|~ $ &3$p8ŸŸ£U±µPµÔVü\)u\Ÿ£Uà1Ÿ·ÈPÂUÂÁóUŸÆTÆ8]8=óTŸ=a]a²óTŸ²Á]Ìò\îúV…ŸVâç^ç~Ÿ¡V=…VŸ­V²Á~Ÿçë~ $ &3$p"Ÿëï~ $ &3$p"Ÿçë|~ $ &3$p8Ÿ¹ÅUËÏPÏîV+8\a²\¹ÅUþ=1Ÿ­²1ŸÑâPÐèUèZóUŸÐìTìE]EKóTŸKZ]òV ^ +~Ÿ+=\= V ~ŸKVKZ~Ÿ ~ $ &3$p"Ÿ~ $ &3$p"Ÿ v~ $ &3$p8Ÿ·»UÜàPàñ]ñõPõ]·»Uþ1Ÿ÷P`xUxêóUŸ`|T|Õ]ÕÛóTŸÛê]‚¨V˜^»~Ÿ»Í\Í™V­ÛVÛê~Ÿ¡~ $ &3$p"Ÿ¡¥~ $ &3$p"Ÿ¡v~ $ &3$p8ŸGKUQUPU¬^GKUcgPgª]Œ­1Ÿ‡˜PðU’óUŸð"T"¼\¼úóTŸú\bóTŸbq\q’óTŸ(YV>R]RwRw•‘”•¨}ŸÊô‘”ô}Ÿ8}}ŸÓ‘”5T}}ŸbpRpq‘”„’‘”`¨_Ên_Óq_„’_vJV°ÎVbVqV¼©\°ú\b\q’\ãèPè°‘¨¸Ó‘¨„‘¨¼¨0Ÿ¨Ê‘”ÊQ0ŸQÓ‘”Óú0Ÿ,T,0‘”5T0ŸTaTab‘”q„‘”„’0Ÿ¼51Ÿ5°0Ÿ°¸1Ÿ¸Ó0ŸÓú1Ÿb1Ÿq1Ÿ„0Ÿ„’1ŸÔ­^°ú^b^q’^aePe€VÎÓVvJV°ÎVbVqVèü_P¯_¸Ó_„_èóPóüpŸ P¸ÆpŸs°1Ÿ„1Ÿ->P ÏUÏ"óUŸ ÓTÓ\áóTŸáö\ön óTŸn ¢ \¢ ò!óTŸò!"\""óTŸÚSñö_ö Ÿ Ä^Ç"^""Ÿ""^öý $ &3$p"Ÿý $ &3$p"Ÿ'P""P S¼w¼Ç‘ Ç"w""S""wPbSÇßS n S¢ ò!Sò !\!!R1!ò!\ 0Ÿá!0Ÿ!!P!†!0Ÿ†!¥!Pª!Ý!PÝ!"0Ÿ L1ŸLÇ0ŸÇÇ1ŸÇá0Ÿá"1Ÿ""0Ÿs]án ]¢ !]!¶!]¾!Ø!]Ý!"]{P—SßáSPbSÇßS n S¢ ò!S,_@FPFÆ_Çá_""_#P#,pŸGSPÇ×pŸˆÇ1Ÿ""1ŸßñP ">"U>"7$óUŸ "B"TB"´"]´"µ#óTŸµ#Ù#]Ù#($óTŸ($7$]H"n"\]#Š#^ý#$^^"c"^c"‚"~Ÿ‚"#Vµ#ý#V$($V($7$~Ÿc"g"~ $ &3$p"Ÿg"k"~ $ &3$p"Ÿc"g"|~ $ &3$p8Ÿ5#9#U?#›#Vý#$V§"®#\Ù#($\5#9#U]#›#Vý#$VŽ#µ#1ŸM"^"P@$^$U^$W&óUŸ@$b$Tb$Ô$]Ô$Õ%óTŸÕ%ù%]ù%H&óTŸH&W&]h$Ž$\}%ª%^&:&^~$ƒ$^ƒ$¢$~Ÿ¢$=%VÕ%&V:&H&VH&W&~Ÿƒ$‡$~ $ &3$p"Ÿ‡$‹$~ $ &3$p"Ÿƒ$‡$|~ $ &3$p8ŸU%Y%U_%»%V&:&VÇ$Î%\ù%H&\U%Y%U}%»%V&:&V®%Õ%1Ÿm$~$P`&~&U~&ï(óUŸ`&‚&T‚&'^'r(óTŸr(Œ(^Œ(à(óTŸà(ï(^ˆ&°&]ñ'(^µ(Ò(^&¢&V¢&Ä&vŸÄ&°'\F(µ(\Ò(à(\à(ï(vŸ¢&©&v $ &3$p"Ÿ©&­&v $ &3$p"Ÿ­&Î&Pà(î(P¢&©&}v $ &3$p8ŸÈ'Ï'U'ñ'^F(r(^‘(µ(^Ò(à(^Õ'?(\µ(Ò(\:',(V‘(à(VÈ'Ï'Uñ'?(\µ(Ò(\(F(1Ÿ&&Pð()U)+óUŸð()T)„)]„)…*óTŸ…*©*]©*ø*óTŸø*+])>)\-*Z*^Í*ê*^.)3)^3)R)~ŸR)í)V…*Í*Vê*ø*Vø*+~Ÿ3)7)~ $ &3$p"Ÿ7);)~ $ &3$p"Ÿ3)7)|~ $ &3$p8Ÿ* *U*k*VÍ*ê*Vw)~*\©*ø*\* *U-*k*VÍ*ê*V^*…*1Ÿ).)P+(+U(+W,óUŸ+,+T,+†+]†+H,óTŸH,W,]2+X+\H+M+^M+l+~Ÿl+Ü+VÜ+,~Ÿ,H,VH,W,~ŸM+Q+~ $ &3$p"ŸQ+U+~ $ &3$p"ŸM+Q+|~ $ &3$p8Ÿô+ø+Uô+ø+Uù+,0Ÿ7+H+P`,~,U~,ž/óUŸ`,‚,T‚,Ý,^Ý,/óTŸ/ž/^ˆ,°,\,¢,V¢,È,vŸÈ,}.]‚./]/ž/vŸ¢,©,v $ &3$p"Ÿ©,­,v $ &3$p"Ÿ­,Ò,P//P¢,©,|v $ &3$p8Ÿz-~-Uò,._‚./_‚-‰-P‰-{.\‚.é.\ //\ž-{.\‚.é.\ //\z-~-U.2.V2.6.P6.h.V[.‚.1Ÿ,,P 0¸0U¸0Š2óUŸ 0¼0T¼01]1{2óTŸ{2Š2]Â0è0VØ0Ý0^Ý0û0~Ÿû0 1\ 12V#2{2V{2Š2~ŸÝ0á0~ $ &3$p"Ÿá0å0~ $ &3$p"ŸÝ0á0v~ $ &3$p8Ÿ‡1"2^#2J2^1¡1P¡1Þ1]#2H2]¢1·1P#232PÞ1ä1Pä1õ1]õ1ù1Pù1 2]H2J2P‡1"2^#2J2^2#21ŸÇ0Ø0P2®2U®2§4óUŸ2²2T²2$3]$3%4óTŸ%4I4]I4˜4óTŸ˜4§4]¸2Þ2\Í3ú3^m4Š4^Î2Ó2^Ó2ò2~Ÿò23V%4m4VŠ4˜4V˜4§4~ŸÓ2×2~ $ &3$p"Ÿ×2Û2~ $ &3$p"ŸÓ2×2|~ $ &3$p8Ÿ¥3©3U¯3 4Vm4Š4V34\I4˜4\¥3©3UÍ3 4Vm4Š4Vþ3%41Ÿ½2Î2P°4Þ4UÞ4œ8óUŸ°4â4Tâ4y5^y5Ë7óTŸË7á7^á78óTŸ8Ž8^Ž8œ8óTŸè45]7B7VY8z8Vþ45\5+5|Ÿ+5u6V78V8Ž8|ŸŽ8œ8V5 5| $ &3$p"Ÿ 55| $ &3$p"Ÿ525P88P5 5}| $ &3$p8Ÿ67V 8Y8Vy5¸6^7Ë7^æ7 8^Ž8œ8^Ï5©7‘ˆæ78‘ˆŽ8œ8‘ˆœ6¯6P¯6ñ6‘˜ 8Y8‘˜¸6¿6P¿6ñ6^ 8Y8^é67‘”+8/8P/8O8‘”O8S8PS88‘”ÿ5z7\æ78\Ž8œ8\67V 8Y8V7~7^~77 ‘”” $ &ŸY88^F771Ÿz881Ÿí4þ4P 8¾8U¾8§;óUŸ 8Â8TÂ8§9^§9 ;óTŸ ;D;^D;˜;óTŸ˜;§;^È8ð8]:¹:]m;Š;]Ý8â8Vâ89vŸ9K:\ä:m;\Š;˜;\˜;§;vŸâ8é8v $ &3$p"Ÿé8í8v $ &3$p"Ÿí89P˜;¦;Pâ8é8}v $ &3$p8Ÿc:m:UV9:]ä: ;]&;m;]Š;˜;]§9“:^ä: ;^I;m;^Š;˜;^s:Ý:\m;Š;\Î9Ê:VI;˜;Vc:m:U:Ý:\m;Š;\½:ä:1ŸÍ8Ý8P°;Î;UÎ;·>óUŸ°;Ò;TÒ;·<^·<>óTŸ>T>^T>¨>óTŸ¨>·>^Ø;<]Ÿ=É=]}>š>]í;ò;Vò;<vŸ<[=\ô=}>\š>¨>\¨>·>vŸò;ù;v $ &3$p"Ÿù;ý;v $ &3$p"Ÿý;<P¨>¶>Pò;ù;}v $ &3$p8Ÿs=}=Uf<Ÿ=]ô=>]6>}>]š>¨>]·<£=^ô=>^Y>}>^š>¨>^ƒ=í=\}>š>\Þ<Ú=VY>¨>Vs=}=UŸ=í=\}>š>\Í=ô=1ŸÝ;í;PÀ>Þ>UÞ>GAóUŸÀ>â>Tâ>u?^u?Ò@óTŸÒ@é@^é@8AóTŸ8AGA^è>?]S@}@^ A*A^ý>?V?$?vŸ$?@\¨@ A\*A8A\8AGAvŸ? ?v $ &3$p"Ÿ ? ?v $ &3$p"Ÿ ?.?P8AFAP? ?}v $ &3$p8Ÿ*@1@Uu?S@^¨@Ò@^î@ A^*A8A^7@¡@\ A*A\œ?Ž@Vî@8AV*@1@US@¡@\ A*A\@¨@1Ÿí>ý>PPAhAUhA—BóUŸPAlATlAÆA]ÆAˆBóTŸˆB—B]rA˜A\ˆAA^A¬A~Ÿ¬ABVB[B~Ÿ\BˆBVˆB—B~ŸA‘A~ $ &3$p"Ÿ‘A•A~ $ &3$p"ŸA‘A|~ $ &3$p8Ÿ4B8BU4B8BU9B\B0ŸwAˆAP BÒBUÒBEóUŸ BÖBTÖBD^DlDóTŸlD E^ EEóTŸÜBC\ñBöBVöBCvŸCiD]lDýD]ýD EvŸ EE]öBýBv $ &3$p"ŸýBCv $ &3$p"ŸC%CPýD EPöBýB|v $ &3$p8ŸxC~CP~CÏCVƒDàDVåDøDVðC:DVÏC:DVDDPDkD^ EE^-DlD1Ÿ EE1ŸáBñBP EREURE»FóUŸ EVETVE±E]±EAFóTŸAFRF]RF§FóTŸ§F¶F]¶F»FóTŸ\E‚EVòEüE]ŽF§F]rEwE^wE”E~Ÿ”Ejs°bq„’vØðüüJÀÎßßâñˆÐ"µèíö ,,bÐßM"M"O"^"|"Ž#¸#($â"5#à#$D#K#O#X#]#Š#$$m$m$o$~$œ$®%Ø%H&%U%& &d%k%o%x%}%ª% &:&&&&&¾&(P(à(u'È'˜(¸(Ú'ß'ã'ì'ñ'(¸(Ò())).)L)^*ˆ*ø*²)*°*Ð****(*-*Z*Ð*ê*7+7+9+H+f+ù+ ,H,¥+ô+ ,:,,,,,¾,[.ˆ./'-z-ð./00000"0%000E0O0R0R0R0Y0Z0_0b0p00—0š0œ0u00‚0ˆ0Ç0Ç0É0Ø0õ02(2{241‡1P2m2½2½2¿2Î2ì2þ3(4˜4R3¥3P4p4´3»3¿3È3Í3ú3p4Š4í4í4ï4þ45F7ˆ7z8Ž8œ8:66ð78ø6ÿ67B7`8z8Í8Í8Ï8Ý8þ8½:è:˜;:c:P;p;x:}::Š::¹:p;Š;Ý;Ý;ß;í;<Í=ø=¨> =s=`>€>ˆ==‘=š=Ÿ=É=€>š>í>í>ï>ý>?@°@8A×?*@ð@A<@A@E@N@S@}@A*AwAwAyAˆA¦A9B`BˆBåA4B`BzBáBáBãBñBC-DpDýD´C¶CÐDèDaEaEcErEŽEFHF§F8`˜8 Ú˜8 À à ! 0& ÐqàqÌxzÀƒàŠ èŠ ðŠ øŠ (  ` ñÿ ð& Ðq) 0&? 0&Y 0&t 0&“ 0&­ 0&Ë 0&â 0&ý ð&2 (e ð&+‹ (Å K)ý (+( K)b {*š P)+Å {*ý «+3 €*+\ «+• Û,Ì °++ö Û,6 .t à,@¥ .Þ 0 .ì? 0y ü1± 0ìÜ ü1 ª3> 2ªa ª3” Z5Å °3ªé Z5 §6= `5GY §6” w8Í °6Çù w8* t:Y €8ô{ t:´ ±<ë €:1  ±<M  J>ƒ  À<Ь  J>ç  Ú?  P>ŠL  Ú?w  ‚D   à?¢¼  ‚Dè  I  Dt/  I\  'K‡  I¥  'KÓ  GMÿ  0K  GMK  ßOv  PM”  ßO  ÷Qî  àO  ÷Q8  GSa  RG}  GS§  ŽVÏ  PS>ê  Vü÷  ŽV ŒW- ŒW] zY‹ Wê¬ zYã —[ €Y@ —[u Œ_¨  [ìÎ Œ_ —b> _h —b¢ §eÚ  b §e: 7hm °e‡“ 7h½ ‡iå @hG ‡i) lP iqj ~ l´ «mè l› «m1 ÐqQñÿ\ 0&^ `&q  &‡ –èŠ ½ à&ÉàŠ Qñÿ踃ñÿöÌx  Ðq( % 1ðŠ >øŠ G ÀM}žÄå )Gcn‚¦Íè  B[}–«»Øæ&Ke‡ £ÆÙô  %7O"k˜ °m «½ã?i„§¹Íø$7 Cmy…¡®×ÿ$DY~$ ‹¦º×äü+=bw‹® µØñ%B^x‰¤Æ.annobin_SSLeay.c.annobin_SSLeay.c_end.annobin_SSLeay.c.hot.annobin_SSLeay.c_end.hot.annobin_SSLeay.c.unlikely.annobin_SSLeay.c_end.unlikely.annobin_SSLeay.c.startup.annobin_SSLeay.c_end.startup.annobin_SSLeay.c.exit.annobin_SSLeay.c_end.exit.annobin_XS_Crypt__SSLeay__Version_openssl_dir.start.annobin_XS_Crypt__SSLeay__Version_openssl_dir.endXS_Crypt__SSLeay__Version_openssl_dir.annobin_XS_Crypt__SSLeay__Version_openssl_built_on.start.annobin_XS_Crypt__SSLeay__Version_openssl_built_on.endXS_Crypt__SSLeay__Version_openssl_built_on.annobin_XS_Crypt__SSLeay__Version_openssl_platform.start.annobin_XS_Crypt__SSLeay__Version_openssl_platform.endXS_Crypt__SSLeay__Version_openssl_platform.annobin_XS_Crypt__SSLeay__Version_openssl_cflags.start.annobin_XS_Crypt__SSLeay__Version_openssl_cflags.endXS_Crypt__SSLeay__Version_openssl_cflags.annobin_XS_Crypt__SSLeay__Version_openssl_version.start.annobin_XS_Crypt__SSLeay__Version_openssl_version.endXS_Crypt__SSLeay__Version_openssl_version.annobin_XS_Crypt__SSLeay__Version_openssl_version_number.start.annobin_XS_Crypt__SSLeay__Version_openssl_version_number.endXS_Crypt__SSLeay__Version_openssl_version_number.annobin_XS_Crypt__SSLeay__X509_get_notAfterString.start.annobin_XS_Crypt__SSLeay__X509_get_notAfterString.endXS_Crypt__SSLeay__X509_get_notAfterString.annobin_XS_Crypt__SSLeay__X509_get_notBeforeString.start.annobin_XS_Crypt__SSLeay__X509_get_notBeforeString.endXS_Crypt__SSLeay__X509_get_notBeforeString.annobin_XS_Crypt__SSLeay__X509_issuer_name.start.annobin_XS_Crypt__SSLeay__X509_issuer_name.endXS_Crypt__SSLeay__X509_issuer_name.annobin_XS_Crypt__SSLeay__X509_subject_name.start.annobin_XS_Crypt__SSLeay__X509_subject_name.endXS_Crypt__SSLeay__X509_subject_name.annobin_XS_Crypt__SSLeay__X509_free.start.annobin_XS_Crypt__SSLeay__X509_free.endXS_Crypt__SSLeay__X509_free.annobin_XS_Crypt__SSLeay__Conn_set_tlsext_host_name.start.annobin_XS_Crypt__SSLeay__Conn_set_tlsext_host_name.endXS_Crypt__SSLeay__Conn_set_tlsext_host_name.annobin_XS_Crypt__SSLeay__Conn_get_cipher.start.annobin_XS_Crypt__SSLeay__Conn_get_cipher.endXS_Crypt__SSLeay__Conn_get_cipher.annobin_XS_Crypt__SSLeay__Conn_get_shared_ciphers.start.annobin_XS_Crypt__SSLeay__Conn_get_shared_ciphers.endXS_Crypt__SSLeay__Conn_get_shared_ciphers.annobin_XS_Crypt__SSLeay__Conn_get_verify_result.start.annobin_XS_Crypt__SSLeay__Conn_get_verify_result.endXS_Crypt__SSLeay__Conn_get_verify_result.annobin_XS_Crypt__SSLeay__Conn_get_peer_certificate.start.annobin_XS_Crypt__SSLeay__Conn_get_peer_certificate.endXS_Crypt__SSLeay__Conn_get_peer_certificate.annobin_XS_Crypt__SSLeay__Conn_read.start.annobin_XS_Crypt__SSLeay__Conn_read.endXS_Crypt__SSLeay__Conn_read.annobin_XS_Crypt__SSLeay__Conn_write.start.annobin_XS_Crypt__SSLeay__Conn_write.endXS_Crypt__SSLeay__Conn_write.annobin_XS_Crypt__SSLeay__Conn_accept.start.annobin_XS_Crypt__SSLeay__Conn_accept.endXS_Crypt__SSLeay__Conn_accept.annobin_XS_Crypt__SSLeay__Conn_connect.start.annobin_XS_Crypt__SSLeay__Conn_connect.endXS_Crypt__SSLeay__Conn_connect.annobin_XS_Crypt__SSLeay__Conn_set_fd.start.annobin_XS_Crypt__SSLeay__Conn_set_fd.endXS_Crypt__SSLeay__Conn_set_fd.annobin_XS_Crypt__SSLeay__Conn_pending.start.annobin_XS_Crypt__SSLeay__Conn_pending.endXS_Crypt__SSLeay__Conn_pending.annobin_XS_Crypt__SSLeay__Conn_free.start.annobin_XS_Crypt__SSLeay__Conn_free.endXS_Crypt__SSLeay__Conn_free.annobin_XS_Crypt__SSLeay__Conn_new.start.annobin_XS_Crypt__SSLeay__Conn_new.endXS_Crypt__SSLeay__Conn_newInfoCallback.annobin_InfoCallback.start.annobin_InfoCallback.end.annobin_XS_Crypt__SSLeay__CTX_set_verify.start.annobin_XS_Crypt__SSLeay__CTX_set_verify.endXS_Crypt__SSLeay__CTX_set_verify.annobin_XS_Crypt__SSLeay__CTX_check_private_key.start.annobin_XS_Crypt__SSLeay__CTX_check_private_key.endXS_Crypt__SSLeay__CTX_check_private_key.annobin_XS_Crypt__SSLeay__CTX_use_pkcs12_file.start.annobin_XS_Crypt__SSLeay__CTX_use_pkcs12_file.endXS_Crypt__SSLeay__CTX_use_pkcs12_file.annobin_XS_Crypt__SSLeay__CTX_use_PrivateKey_file.start.annobin_XS_Crypt__SSLeay__CTX_use_PrivateKey_file.endXS_Crypt__SSLeay__CTX_use_PrivateKey_file.annobin_XS_Crypt__SSLeay__CTX_use_certificate_file.start.annobin_XS_Crypt__SSLeay__CTX_use_certificate_file.endXS_Crypt__SSLeay__CTX_use_certificate_file.annobin_XS_Crypt__SSLeay__CTX_set_cipher_list.start.annobin_XS_Crypt__SSLeay__CTX_set_cipher_list.endXS_Crypt__SSLeay__CTX_set_cipher_list.annobin_XS_Crypt__SSLeay__CTX_free.start.annobin_XS_Crypt__SSLeay__CTX_free.endXS_Crypt__SSLeay__CTX_free.annobin_XS_Crypt__SSLeay__CTX_new.start.annobin_XS_Crypt__SSLeay__CTX_new.endXS_Crypt__SSLeay__CTX_newbNotFirstTime.35577.annobin_XS_Crypt__SSLeay__Err_get_error_string.start.annobin_XS_Crypt__SSLeay__Err_get_error_string.endXS_Crypt__SSLeay__Err_get_error_string.annobin_boot_Crypt__SSLeay.start.annobin_boot_Crypt__SSLeay.endcrtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.7295__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entry__FRAME_END____GNU_EH_FRAME_HDR_fini_GLOBAL_OFFSET_TABLE___TMC_END____dso_handle_DYNAMIC_initSSL_CTX_set_default_verify_paths@@OPENSSL_1_1_0pthread_getspecific@@GLIBC_2.2.5SSL_get_shared_ciphers@@OPENSSL_1_1_0TLS_client_method@@OPENSSL_1_1_0SSL_CTX_set_cipher_list@@OPENSSL_1_1_0ERR_get_error@@OPENSSL_1_1_0RAND_load_file@@OPENSSL_1_1_0SSL_CTX_free@@OPENSSL_1_1_0PL_thr_keyPerl_sv_2bool_flagsX509_get_issuer_name@@OPENSSL_1_1_0SSL_CTX_use_certificate@@OPENSSL_1_1_0__fprintf_chk@@GLIBC_2.3.4SSL_set_info_callback@@OPENSSL_1_1_0__gmon_start__SSL_get_current_cipher@@OPENSSL_1_1_0RAND_seed@@OPENSSL_1_1_0ERR_error_string_n@@OPENSSL_1_1_0SSL_write@@OPENSSL_1_1_0Perl_sv_catpvn_flagsPerl_sv_2mortald2i_PKCS12_fp@@OPENSSL_1_1_0Perl_sv_setpvSSL_CTX_use_certificate_file@@OPENSSL_1_1_0SSLv2_client_methodSSL_state_string_long@@OPENSSL_1_1_0SSL_set_fd@@OPENSSL_1_1_0X509_getm_notAfter@@OPENSSL_1_1_0_ITM_deregisterTMCloneTableSSL_CIPHER_get_name@@OPENSSL_1_1_0Perl_newXS_deffileCRYPTO_free@@OPENSSL_1_1_0SSL_new@@OPENSSL_1_1_0_ITM_registerTMCloneTablePerl_xs_handshakeSSL_read@@OPENSSL_1_1_0__cxa_finalize@@GLIBC_2.2.5SSL_CTX_load_verify_locations@@OPENSSL_1_1_0boot_Crypt__SSLeayPerl_sv_setref_pvSSL_CTX_use_PrivateKey@@OPENSSL_1_1_0X509_NAME_oneline@@OPENSSL_1_1_0Perl_sv_pvn_force_flagsSSL_CTX_set_options@@OPENSSL_1_1_0SSL_alert_desc_string_long@@OPENSSL_1_1_0SSL_connect@@OPENSSL_1_1_0X509_getm_notBefore@@OPENSSL_1_1_0Perl_sv_newmortalPerl_xs_boot_epilogSSL_CTX_use_PrivateKey_file@@OPENSSL_1_1_0SSL_free@@OPENSSL_1_1_0getenv@@GLIBC_2.2.5Perl_PerlIO_fileno__bss_startSSL_alert_type_string_long@@OPENSSL_1_1_0Perl_mg_setPerl_sv_2io__stack_chk_fail@@GLIBC_2.4Perl_newSVivSSL_CTX_check_private_key@@OPENSSL_1_1_0SSL_get_peer_certificate@@OPENSSL_1_1_0SSL_get_verify_result@@OPENSSL_1_1_0OPENSSL_init_ssl@@OPENSSL_1_1_0Perl_croak_nocontextX509_get_subject_name@@OPENSSL_1_1_0Perl_sv_growSSL_pending@@OPENSSL_1_1_0fclose@@GLIBC_2.2.5EVP_PKEY_free@@OPENSSL_1_1_0Perl_newSVpvSSL_ctrl@@OPENSSL_1_1_0SSL_CTX_new@@OPENSSL_1_1_0stderr@@GLIBC_2.2.5Perl_sv_2iv_flagsSSL_set_connect_state@@OPENSSL_1_1_0fopen64@@GLIBC_2.2.5Perl_croak_xs_usageOPENSSL_init_crypto@@OPENSSL_1_1_0_edataSSLv3_client_method@@OPENSSL_1_1_0X509_free@@OPENSSL_1_1_0OpenSSL_version@@OPENSSL_1_1_0Perl_sv_derived_fromSSL_get_error@@OPENSSL_1_1_0PKCS12_parse@@OPENSSL_1_1_0SSL_accept@@OPENSSL_1_1_0Perl_sv_setiv_mgPKCS12_free@@OPENSSL_1_1_0SSL_CTX_set_verify@@OPENSSL_1_1_0Perl_sv_2pv_flags.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.note.gnu.property.init_array.fini_array.data.rel.ro.dynamic.got.bss.comment.gnu.build.attributes.debug_aranges.debug_info.debug_abbrev.debug_line.debug_str.debug_loc.debug_ranges88$.öÿÿo``48 ˜˜ @8 8 ¢HÿÿÿoÚÚ¸Uþÿÿo˜˜ d88ØnB°xÀÀsàà0~!! ‡0&0& KÐqÐq “àqàqê›ÌxÌx4©zz¼ ³ÀƒÀƒ ÆàŠ àŠÒèŠ èŠÞðŠ ðŠëøŠ øŠ0ô( (Øù þ0,`,¸ä¨0,©á8ŠÒFíå9R0ÒɺG]Œt~h``¦0"§ ¾ØhÜvperl5/auto/IO/LockedFile/.packlist000064400000000267152462470720012704 0ustar00/usr/local/share/man/man3/IO::LockedFile.3pm /usr/local/share/man/man3/IO::LockedFile::Flock.3pm /usr/local/share/perl5/IO/LockedFile.pm /usr/local/share/perl5/IO/LockedFile/Flock.pm perl5/auto/IO/Tty/.packlist000064400000000422152462470720011454 0ustar00/usr/local/lib64/perl5/IO/Pty.pm /usr/local/lib64/perl5/IO/Tty.pm /usr/local/lib64/perl5/IO/Tty/Constant.pm /usr/local/lib64/perl5/auto/IO/Tty/Tty.so /usr/local/share/man/man3/IO::Pty.3pm /usr/local/share/man/man3/IO::Tty.3pm /usr/local/share/man/man3/IO::Tty::Constant.3pm perl5/auto/IO/Tty/Tty.so000055500000422240152462470720010773 0ustar00ELF>@ @8 @$#ˆtˆt 0|0| 0| ÐØ H|H| H| 888$$hththt Såtdhththt Påtd€q€q€qddQåtdRåtd0|0| 0| ÐÐGNUHÈœVy\¶¡©zÙèÀŒ›52ˆ@ € 245BEÕì»ã’|ÙqXo½ôÐìÝJ;d³ ¬ ˜± eV¡¼‰Ó.ʶ Ã4!p×}u‘NåkÂóú, „þF")ì<÷€ € þ€ ^ Ð,E7__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizelibpthread.so.0PL_thr_keypthread_getspecificPerl_newSVivPerl_sv_2mortalPerl_sv_2pv_flagsPerl_stack_growPerl_croak_xs_usagePerl_croak_nocontextPerl_sv_2iv_flagsPerl_newSVpvn__stack_chk_failPerl_sv_2ioPerl_sv_newmortalPerl_PerlIO_filenottynamePerl_sv_setpv__errno_locationPerl_mg_setfcntl64closestrerrorPerl_warn_nocontextsigactionsigemptysetgrantptunlockptptsname_rptsnameopen64stderrfwrite__fprintf_chkPerl_get_svposix_openptPerl_newSVpvgetptopenpty__sprintf_chkPerl_sv_2bool_flagsboot_IO__TtyPerl_xs_handshakePerl_newXS_deffilePerl_gv_stashpvPerl_newCONSTSUBPerl_newSVPerl_xs_boot_epiloglibutil.so.1libperl.so.5.26libc.so.6_edata__bss_start_endGLIBC_2.2.5GLIBC_2.3.4GLIBC_2.28GLIBC_2.4Ð ui U ui íti ˆ‘–'ii 2ui 0| @8| @| @| Ð Ø  à è )ð .ø 0p~ x~ €~ ˆ~ ~ ˜~  ~ ¨~  °~  ¸~  À~  È~ Ð~ Ø~ à~ è~ ð~ ø~       ( 0 8 @ H P  X !` "h #p $x %€ &ˆ ' (˜ *  +¨ ,° -¸ .À /È 1óúHƒìH‹ùn H…ÀtÿÐHƒÄÃÿ5Zm òÿ%[m óúhòéáÿÿÿóúhòéÑÿÿÿóúhòéÁÿÿÿóúhòé±ÿÿÿóúhòé¡ÿÿÿóúhòé‘ÿÿÿóúhòéÿÿÿóúhòéqÿÿÿóúhòéaÿÿÿóúh òéQÿÿÿóúh òéAÿÿÿóúh òé1ÿÿÿóúh òé!ÿÿÿóúh òéÿÿÿóúhòéÿÿÿóúhòéñþÿÿóúhòéáþÿÿóúhòéÑþÿÿóúhòéÁþÿÿóúhòé±þÿÿóúhòé¡þÿÿóúhòé‘þÿÿóúhòéþÿÿóúhòéqþÿÿóúhòéaþÿÿóúhòéQþÿÿóúhòéAþÿÿóúhòé1þÿÿóúhòé!þÿÿóúhòéþÿÿóúhòéþÿÿóúhòéñýÿÿóúh òéáýÿÿóúh!òéÑýÿÿóúh"òéÁýÿÿóúh#òé±ýÿÿóúh$òé¡ýÿÿóúh%òé‘ýÿÿóúh&òéýÿÿóúh'òéqýÿÿóúh(òéaýÿÿóúh)òéQýÿÿóúh*òéAýÿÿóúh+òé1ýÿÿóúòÿ%•j Dóúòÿ%j Dóúòÿ%…j Dóúòÿ%}j Dóúòÿ%uj Dóúòÿ%mj Dóúòÿ%ej Dóúòÿ%]j Dóúòÿ%Uj Dóúòÿ%Mj Dóúòÿ%Ej Dóúòÿ%=j Dóúòÿ%5j Dóúòÿ%-j Dóúòÿ%%j Dóúòÿ%j Dóúòÿ%j Dóúòÿ% j Dóúòÿ%j Dóúòÿ%ýi Dóúòÿ%õi Dóúòÿ%íi Dóúòÿ%åi Dóúòÿ%Ýi Dóúòÿ%Õi Dóúòÿ%Íi Dóúòÿ%Åi Dóúòÿ%½i Dóúòÿ%µi Dóúòÿ%­i Dóúòÿ%¥i Dóúòÿ%i Dóúòÿ%•i Dóúòÿ%i Dóúòÿ%…i Dóúòÿ%}i Dóúòÿ%ui Dóúòÿ%mi Dóúòÿ%ei Dóúòÿ%]i Dóúòÿ%Ui Dóúòÿ%Mi Dóúòÿ%Ei Dóúòÿ%=i DH=ii Hbi H9øtH‹&i H…Àt ÿà€Ã€H=9i H52i H)þHÁþH‰ðHÁè?HÆHÑþtH‹ýh H…ÀtÿàfDÀóú€=õh u+UHƒ=Úh H‰åt H=e è9ÿÿÿèdÿÿÿÆÍh ]ÃÀóúéwÿÿÿ€óúAVI‰öAUATUSH‹rh ‹;èÓýÿÿ‹;H‹(èÉýÿÿ‹;H‹PxHJüH‰HxLc"è³ýÿÿH‰éH‹@JàH)ÁH‰ÈHÁøƒø…‡‹;El$HƒíMcíè‚ýÿÿH‹@N‹$èI‹$H‹pHƒþ…iA‹D$ ‹;% =…ùI‹D$L‹ èDýÿÿH‹@ H)èHƒøŽ‹;HƒÅ è(ýÿÿA·ôH‰Çèüýÿÿ‹;I‰ÅèýÿÿL‰îH‰ÇèWýÿÿ‹;H‰EèèüüÿÿL‰æHÁîH‰Ç·öèÊýÿÿ‹;I‰ÅèàüÿÿL‰îH‰Çè%ýÿÿ‹;H‰EðèÊüÿÿL‰æHÁî H‰Ç·öè˜ýÿÿ‹;I‰Åè®üÿÿL‰îH‰Çèóüÿÿ‹;H‰Eøè˜üÿÿL‰æHÁî0H‰Çèiýÿÿ‹;I‰ÄèüÿÿL‰æH‰ÇèÄüÿÿ‹;H‰EèiüÿÿH‰([]A\A]A^ÃDèSüÿÿ¹1ÒL‰æH‰Çè‘ûÿÿ‹;éîþÿÿf.„‹;è)üÿÿH‰êH‰î¹H‰ÇèöúÿÿH‰ÅéÛþÿÿH5LL‰÷è¿ûÿÿºH=#T1Àè üÿÿff.„óúAWAVI‰öAUATUSHƒì(H‹\f dH‹%(H‰D$1À‹;è­ûÿÿ‹;H‹(è£ûÿÿ‹;H‹PxHJüH‰HxD‹*èûÿÿIcÕH‹@HÐH)ÅHÁýEþƒø‡¥‹;EeMcäèaûÿÿJ å‹;H‹@H‰ $J‹à‹@ % =„è3ûÿÿ‹;H‹@N‹4àè$ûÿÿºL‰öH‰Çè¤ùÿÿA‰Ç‹;EuMcöèûÿÿ‹;H‹@J‹ð‹@ % =„æèáúÿÿ‹;H‹@N‹4ðèÒúÿÿºL‰öH‰ÇèRùÿÿ‹;1ÉA‰Æ1ÀƒýÓf‰L$fD‰|$fD‰t$f‰D$è•úÿÿºHt$H‰Çè“ûÿÿ‹;H‰ÅèyúÿÿH‰îH‰Çè¾úÿÿ‹;H‰ÅèdúÿÿH‹@J‰,à‹;èUúÿÿ‹;H‹hèJúÿÿH,$H‰(H‹D$dH3%(…`HƒÄ([]A\A]A^A_ÃèúÿÿH‹@J‹àH‹D‹x éöþÿÿ€èûùÿÿ‹;1ÉH‹@J‹ðH‹D‹p 1ÀƒýŽ-ÿÿÿèØùÿÿAU‹;H‹@HcÒH‰T$H‹Ћ@ % =„ŸèªùÿÿH‹T$‹;H‹@H‹4ÐH‰t$è‘ùÿÿH‹t$ºH‰Çèøÿÿ‰Á‹;ƒý„·‰L$AƒÅèeùÿÿMcí‹L$H‹@J‹è‹@ % =tW‹;‰L$è<ùÿÿ‹;H‹@J‹,èè-ùÿÿºH‰ÇH‰îè­÷ÿÿ‹;‹L$ébþÿÿfè ùÿÿH‹T$H‹@H‹ÐH‹‹H évÿÿÿ‹;èéøÿÿ‹;‹L$H‹@J‹èH‹·@ éþÿÿèú÷ÿÿH53QL‰÷è{øÿÿ1Àéþÿÿ@óúAVAUI‰õATUSH‹2c ‹;è“øÿÿ‹;H‹(è‰øÿÿ‹;H‹PxHJüH‰HxLc2èsøÿÿH‹@JðH)ÅHÁýƒý…2‹;EfMcäèMøÿÿ‹;N,åH‹@J‹,àè6øÿÿH‰ÇH‰îè»øÿÿ‹;L‹`è øÿÿ‹;H‹@ö@#…è øÿÿH‰Çè3ùÿÿH‰ÅM…ä„‹;èð÷ÿÿL‰æH‰Çè¥öÿÿ‰Çè>øÿÿI‰Ä‹;èÔ÷ÿÿL‰âH‰îH‰Çè÷ÿÿ‹;è¿÷ÿÿH‹@Nd(øöE@upI‰l$‹;è¤÷ÿÿ‹;H‹hè™÷ÿÿLíH‰([]A\A]A^Ãf.„è{÷ÿÿ‹;H‹hèp÷ÿÿH‹@H‹@H‹lÅM…ä…cÿÿÿè%öÿÿÇéoÿÿÿf.„‹;è9÷ÿÿH‰îH‰Çèn÷ÿÿéyÿÿÿH5 FL‰ïèÚöÿÿf.„‹ƒø~ ÄUº1öSH‰û‰Ç1ÀHƒìèg÷ÿÿ‰Å…Àx‹;èJöÿÿ‰+HƒÄ[]ÃH‹aa ‹8èÂöÿÿ€¸Ètáè„õÿÿ‹8è÷ÿÿ‹3HƒÄH=8OH‰Â[1À]é¤õÿÿ@H†ÿH‰òë @H9Ât#HƒÂ¶JÿHƒÇˆOÿ„ÉuèH‰ÐH)ðHƒèÃDÆDHƒÀ€xÿuöH)ðHƒèÃff.„U1öSH‰û¿HìHdH‹%(H‰„$81ÀH”$ èíôÿÿƒøÿtxH9œ$ tDH‰å1À¹H‰ïóH«H}è…õÿÿ1ÒH‰î¿Ç„$ˆH‰$è§ôÿÿƒøÿt2H‹œ$ H‰ØH‹Œ$8dH3 %(uHÄH[]Ãf.„HÇÀÿÿÿÿëÐè¢ôÿÿfAUATI‰ôUH‰ÕSH‰û1ÿHƒìè&ÿÿÿD‹` I‰ÅE…À…s‹;èìõÿÿ…Àˆ“‹=ò_ …ÿ…æ‹;è¿ôÿÿ…ÀˆL‰ïèßþÿÿ€}uq‹5Ç_ …ö…›‹;ºH‰îèlôÿÿ…À…€}uF‹ œ_ …É…˜‹;èióÿÿH…À„¸H‰ÆH‰ï1Àè#þÿÿH=ÿ‡w1À€}tM€A‹$…Ày)‹N_ …Ò…ú¾H‰ï1ÀèãôÿÿA‰$…ÀˆH‰ßèOýÿÿL‰çèGýÿÿ¸HƒÄ[]A\A]ÀH‹ñ^ º¾H=,CH‹èàôÿÿ‹;è¹óÿÿ…À‰úþÿÿH‹¢^ ‹8èôÿÿ€¸È„ßþÿÿèÁòÿÿ‹8èÚôÿÿH=MH‰Æ1Àèéòÿÿé½þÿÿ@H‹^ º¾H=§BH‹èpôÿÿ‹;èYôÿÿ…À‰mþÿÿH‹2^ ‹8è“óÿÿ€¸È„RþÿÿèQòÿÿ‹8èjôÿÿH=[LH‰Æ1Àèyòÿÿé0þÿÿ@H‹^ º¾H=bBH‹èôÿÿé@þÿÿH‹é] º¾H=QBH‹èØóÿÿ‹;è±ñÿÿH…À…HþÿÿH‹™] ‹8èúòÿÿ€¸È„Fþÿÿè¸ñÿÿ‹8èÑóÿÿH=šLH‰Æ1Àèàñÿÿé$þÿÿH‹Y] ‹8èºòÿÿ€¸È„Éýÿÿèxñÿÿ‹8è‘óÿÿH=òKH‰Æ1Àè ñÿÿé§ýÿÿH‹9] H‰é¾H¸AH‹81Àè8óÿÿéáýÿÿH‹ñ\ ‹8èRòÿÿ€¸Èu1‹;è²ñÿÿHƒÄ1À[]A\A]ÃD1ÀH=·Kè2ñÿÿ1ÀéÉýÿÿèãðÿÿ‹8èüòÿÿH‰îH=úKH‰Â1Àèñÿÿë­fDóúAWAVAUATUSH‰óHìÈH‹-i\ dH‹%(H‰„$¸1À‹}è¶ñÿÿ‹}L‹8L‰|$è¦ñÿÿ‹}H‹PxHJüH‰HxLc"èñÿÿH‹@JàI)ÇL‰øHÁø…À…ä‹}A‰Äèjñÿÿ1ÒH5½@H‰ÇèiñÿÿH‰ÃH…Àt3‹@ © …köÄÿ…ê<„â‰ÂâÿÀú „΋Ü[ ÇD$(ÿÿÿÿÇD$,ÿÿÿÿÆ„$°…À…í¿Hœ$°èæñÿÿ‰D$(…ÀˆúHD$(Ht$,H‰ÚH‰ÇH‰t$H‰$èLûÿÿ…À„ç‹D$(‹}…Àˆ€¼$°„Æ„$¯èŠðÿÿH‹@ H+D$HƒøŽ¿‹}Lcd$(èjðÿÿL‰æH‰Çè?ñÿÿ‹}I‰ÄèTðÿÿL‰æH‰Çè™ðÿÿL‹t$‹}Lcd$,I‰Fè3ðÿÿL‰æH‰Çèñÿÿ‹}I‰ÄèðÿÿL‰æI‰ÜH‰Çè_ðÿÿI‰FA‹$IƒÄ‚ÿþþþ÷Ò!Ð%€€€€tç‰Â‹}Áê©€€DÂIT$LDâ‰ÁÁIƒÜèÌïÿÿI)ÜH‰ÞL‰âH‰Çè«ïÿÿ‹}I‰Äè°ïÿÿL‹t$L‰æH‰ÇèðïÿÿI^‹}I‰FH‰\$è‹ïÿÿH‹L$H‰H‹„$¸dH3%(…êHÄÈ[]A\A]A^A_Ãf.„öÄ„?H‹H…À„þÿÿH‹@Hƒø†5ÇçY ÇD$(ÿÿÿÿÇD$,ÿÿÿÿÆ„$°H‹¼Y º¾H=^>H‹è«ïÿÿéîýÿÿfDHD$,H‰D$HD$(H‰$‹}èÅîÿÿ€¸È…(D‹uY E…À…Øè3îÿÿ‰D$(…ÀxH‹t$H‹<$H‰Úèùÿÿ…À…Îýÿÿ‹}èzîÿÿ€¸È…Õ‹=+Y …ÿ…Ÿ1ÿè(øÿÿH‹<$H‹t$1ÉE1À1ÒI‰Åè îÿÿL‰ïA‰ÆèøÿÿE…öx ‹t$(…ö‰´‹}ÇD$(ÿÿÿÿÇD$,ÿÿÿÿè îÿÿ€¸È…׋ ½X …É…¡¾H=§=1ÀèNîÿÿ‰D$(…ÀxH‹t$H‹<$H‰ÚèUøÿÿ…À… ýÿÿ‹}èµíÿÿ€¸È…ˆ‹fX …Ò…RA¿pº0Ll$0Lt$pëAAƒÄÆ„$°Aü€„³üÿÿD‰àH mHƒà¶D‰àH „HÁøH˜D¾<¾ÂE‰øH =L‰ïA‰Á‰D$º@1À¾èZîÿÿD‹L$L‰÷1À¾E‰øº@H ï<è7îÿÿ1ÀL‰öH‰ßèZöÿÿH=ÿ‡¾L‰ï1Àè?íÿÿ‰D$(…ÀxH‹t$H‹<$H‰ÚèF÷ÿÿ…À…úûÿÿE‰àH ¤<L‰ï1Àº@¾èÐíÿÿ¾L‰÷1ÀE‰àH ˆ<º@è²íÿÿ1ÀL‰öH‰ßèÕõÿÿH=ÿ‡¾L‰ï1Àèºìÿÿ‰D$(…ÀxH‹t$H‹<$H‰ÚèÁöÿÿ…À…uûÿÿD‹L$E‰øº@L‰ïH *<¾1ÀèFíÿÿD‹L$L‰÷1À¾E‰øº@H <è#íÿÿ1ÀL‰öH‰ßèFõÿÿH=ÿ‡ò¾L‰ï1Àè+ìÿÿ‰D$(…ÀxH‹t$H‹<$H‰Úè2öÿÿ…À…æúÿÿE‰àH Â;L‰ï1Àº@¾è¼ìÿÿ¾L‰÷1ÀE‰àH ¨;º@èžìÿÿ1ÀL‰öH‰ßèÁôÿÿH=ÿ‡m¾L‰ï1Àè¦ëÿÿ‰D$(…ÀˆªýÿÿH‹t$H‹<$H‰Úè©õÿÿ…À„‘ýÿÿéXúÿÿ@öÄ„ÿöÄ…–öÄ„ÏùÿÿH‹fïÀf.@(Š®ûÿÿ„·ùÿÿé£ûÿÿH‹U º¾H==:H‹èpëÿÿè;êÿÿ‰D$(…À‰üÿÿéüÿÿf.„è[éÿÿ‹8ètëÿÿH=­DH‰Æ1ÀèƒéÿÿD‹0U E…À„»ûÿÿë‘H‹Hƒz …%ûÿÿéWÿÿÿDH‹ùT º¾H=ü9H‹èèêÿÿé‰üÿÿèëèÿÿ‹8èëÿÿH=ÅDH‰Æ1ÀèéÿÿéVüÿÿfDH…À„ÑøÿÿH‹C€80…µúÿÿé¿øÿÿDH=¹D1ÀèÚèÿÿ‹}é2úÿÿfH‹qT º¾H=@9H‹è`êÿÿé<ûÿÿècèÿÿ‹8è|êÿÿH=åCH‰Æ1Àè‹èÿÿé ûÿÿfDH‹t$H‹<$H‰Úèïóÿÿ…À…£øÿÿé.ûÿÿfH‹T º¾H=å8H‹èðéÿÿé:ûÿÿèóçÿÿ‹8è êÿÿH=CH‰Æ1ÀèèÿÿéûÿÿfD‹}èøèÿÿ1ÒH‰ÞH‰Çè›çÿÿ„À…¶ùÿÿéÀ÷ÿÿfD‹}èÐèÿÿºH‰ÞH‰ÇèpçÿÿëÓfD‹}è°èÿÿH‹t$¹H‰ÇH‰òè{çÿÿH‰D$éøÿÿH5Ï7H‰ßèBèÿÿè­çÿÿff.„fóúAUATUSHƒìH‹-óR ‹}èSèÿÿLš8¿çà H “8H‰ÆH‘81ÀèÏèÿÿ‹}A‰Äè$èÿÿ‹}èèÿÿ‹}èèÿÿHöÿÿH5g8H‰Çè.èÿÿ‹}èöçÿÿH?ïÿÿH5_8H‰Çèèÿÿ‹}èØçÿÿHñëÿÿH5R8H‰Çèòçÿÿ‹}èºçÿÿHÃéÿÿH5J8H‰ÇèÔçÿÿ‹}èœçÿÿºH5F8H‰ÇèXçÿÿ‹}H‰Ãè}çÿÿºH598H‰Çèyçÿÿ‹}I‰Åè^çÿÿHÇBL‰îH‰ÇèŒæÿÿ‹}èDçÿÿ1öH‰Çèèÿÿ‹}I‰Åè/çÿÿL‰éHB;H‰ÞH‰Çèæÿÿ‹}èçÿÿ¾H‰Çèåçÿÿ‹}I‰ÅèúæÿÿL‰éHÈ7H‰ÞH‰Çèååÿÿ‹}èÝæÿÿ¾H‰Çè°çÿÿ‹}I‰ÅèÅæÿÿL‰éH˜7H‰ÞH‰Çè°åÿÿ‹}è¨æÿÿ¾ H‰Çè{çÿÿ‹}I‰ÅèæÿÿL‰éHk7H‰ÞH‰Çè{åÿÿ‹}èsæÿÿ¾H‰ÇèFçÿÿ‹}I‰Åè[æÿÿL‰éH<7H‰ÞH‰ÇèFåÿÿ‹}è>æÿÿ¾H‰Çèçÿÿ‹}I‰Åè&æÿÿL‰éH 7H‰ÞH‰Çèåÿÿ‹}è æÿÿ1öH‰Çèåÿÿ‹}I‰ÅèôåÿÿL‰éHß6H‰ÞH‰Çèßäÿÿ‹}è×åÿÿ¾ H‰Çèªæÿÿ‹}I‰Åè¿åÿÿL‰éH²6H‰ÞH‰Çèªäÿÿ‹}è¢åÿÿ¾H‰Çèuæÿÿ‹}I‰ÅèŠåÿÿL‰éHƒ6H‰ÞH‰Çèuäÿÿ‹}èmåÿÿ¾H‰Çè@æÿÿ‹}I‰ÅèUåÿÿL‰éHU6H‰ÞH‰Çè@äÿÿ‹}è8åÿÿ¾H‰Çè æÿÿ‹}I‰Åè åÿÿL‰éH%6H‰ÞH‰Çè äÿÿ‹}èåÿÿ¾ H‰ÇèÖåÿÿ‹}I‰ÅèëäÿÿL‰éHø5H‰ÞH‰ÇèÖãÿÿ‹}èÎäÿÿ¾H‰Çè¡åÿÿ‹}I‰Åè¶äÿÿL‰éHÉ5H‰ÞH‰Çè¡ãÿÿ‹}è™äÿÿ1öH‰Çè¯ãÿÿ‹}I‰Åè„äÿÿL‰éHœ5H‰ÞH‰Çèoãÿÿ‹}ègäÿÿ¾H‰Çè:åÿÿ‹}I‰ÅèOäÿÿL‰éHo5H‰ÞH‰Çè:ãÿÿ‹}è2äÿÿ¾H‰Çèåÿÿ‹}I‰ÅèäÿÿL‰éHA5H‰ÞH‰Çèãÿÿ‹}èýãÿÿ¾ H‰ÇèÐäÿÿ‹}I‰ÅèåãÿÿL‰éH5H‰ÞH‰ÇèÐâÿÿ‹}èÈãÿÿ¾H‰Çè›äÿÿ‹}I‰Åè°ãÿÿL‰éHå4H‰ÞH‰Çè›âÿÿ‹}è“ãÿÿ¾H‰Çèfäÿÿ‹}I‰Åè{ãÿÿL‰éH´4H‰ÞH‰Çèfâÿÿ‹}è^ãÿÿ¾H‰Çè1äÿÿ‹}I‰ÅèFãÿÿL‰éH†4H‰ÞH‰Çè1âÿÿ‹}è)ãÿÿ¾H‰Çèüãÿÿ‹}I‰ÅèãÿÿL‰éHV4H‰ÞH‰Çèüáÿÿ‹}èôâÿÿ1öH‰Çè âÿÿ‹}I‰ÅèßâÿÿL‰éH(4H‰ÞH‰ÇèÊáÿÿ‹}èÂâÿÿ¾ H‰Çè•ãÿÿ‹}I‰ÅèªâÿÿL‰éHú3H‰ÞH‰Çè•áÿÿ‹}èâÿÿ¾H‰Çè`ãÿÿ‹}I‰ÅèuâÿÿL‰éHË3H‰ÞH‰Çè`áÿÿ‹}èXâÿÿ1öH‰Çè.ãÿÿ‹}I‰ÅèCâÿÿL‰éH 3H‰ÞH‰Çè.áÿÿ‹}è&âÿÿ¾ H‰Çèùâÿÿ‹}I‰ÅèâÿÿL‰éHo3H‰ÞH‰Çèùàÿÿ‹}èñáÿÿ¾ H‰ÇèÄâÿÿ‹}I‰ÅèÙáÿÿL‰éH>3H‰ÞH‰ÇèÄàÿÿ‹}è¼áÿÿ¾H‰Çèâÿÿ‹}I‰Åè¤áÿÿL‰éH3H‰ÞH‰Çèàÿÿ‹}è‡áÿÿ1öH‰Çèàÿÿ‹}I‰ÅèráÿÿL‰éHã2H‰ÞH‰Çè]àÿÿ‹}èUáÿÿ1öH‰Çè+âÿÿ‹}I‰Åè@áÿÿL‰éHm6H‰ÞH‰Çè+àÿÿ‹}è#áÿÿ1öH‰Çè9àÿÿ‹}I‰ÅèáÿÿL‰éHˆ2H‰ÞH‰Çèùßÿÿ‹}èñàÿÿ1öH‰Çèàÿÿ‹}I‰ÅèÜàÿÿL‰éHa2H‰ÞH‰ÇèÇßÿÿ‹}è¿àÿÿ¾H‰Çè’áÿÿ‹}I‰Åè§àÿÿL‰éH12H‰ÞH‰Çè’ßÿÿ‹}èŠàÿÿ¾H‰Çè]áÿÿ‹}I‰ÅèràÿÿL‰éHä7H‰ÞH‰Çè]ßÿÿ‹}èUàÿÿ1öH‰Çè+áÿÿ‹}I‰Åè@àÿÿL‰éH¸7H‰ÞH‰Çè+ßÿÿ‹}è#àÿÿ1öH‰Çè9ßÿÿ‹}I‰ÅèàÿÿL‰éHŸ1H‰ÞH‰ÇèùÞÿÿ‹}èñßÿÿ¾H‰ÇèÄàÿÿ‹}I‰ÅèÙßÿÿL‰éHp1H‰ÞH‰ÇèÄÞÿÿ‹}è¼ßÿÿ¾H‰Çèàÿÿ‹}I‰Åè¤ßÿÿL‰éH@1H‰ÞH‰ÇèÞÿÿ‹}è‡ßÿÿ1öH‰ÇèÞÿÿ‹}I‰ÅèrßÿÿL‰éH1H‰ÞH‰Çè]Þÿÿ‹}èUßÿÿ¾H‰Çè(àÿÿ‹}I‰Åè=ßÿÿL‰éH4H‰ÞH‰Çè(Þÿÿ‹}è ßÿÿ¾H‰Çèóßÿÿ‹}I‰ÅèßÿÿL‰éH°0H‰ÞH‰ÇèóÝÿÿ‹}èëÞÿÿ1öH‰ÇèÞÿÿ‹}I‰ÅèÖÞÿÿL‰éH…0H‰ÞH‰ÇèÁÝÿÿ‹}è¹Þÿÿ¾H‰ÇèŒßÿÿ‹}I‰Åè¡ÞÿÿL‰éHZ0H‰ÞH‰ÇèŒÝÿÿ‹}è„Þÿÿ¾H‰ÇèWßÿÿ‹}I‰ÅèlÞÿÿL‰éH+0H‰ÞH‰ÇèWÝÿÿ‹}èOÞÿÿ¾H‰Çè"ßÿÿ‹}I‰Åè7ÞÿÿL‰éHü/H‰ÞH‰Çè"Ýÿÿ‹}èÞÿÿ¾H‰ÇèíÞÿÿ‹}I‰ÅèÞÿÿL‰éHÎ/H‰ÞH‰ÇèíÜÿÿ‹}èåÝÿÿ1öH‰ÇèûÜÿÿ‹}I‰ÅèÐÝÿÿL‰éH£/H‰ÞH‰Çè»Üÿÿ‹}è³Ýÿÿ1öH‰ÇèÉÜÿÿ‹}I‰ÅèžÝÿÿL‰éHy/H‰ÞH‰Çè‰Üÿÿ‹}èÝÿÿ¾H‰ÇèTÞÿÿ‹}I‰ÅèiÝÿÿL‰éHI/H‰ÞH‰ÇèTÜÿÿ‹}èLÝÿÿ1öH‰Çè"Þÿÿ‹}I‰Åè7ÝÿÿL‰éH/H‰ÞH‰Çè"Üÿÿ‹}èÝÿÿ¾H‰ÇèíÝÿÿ‹}I‰ÅèÝÿÿL‰éHì.H‰ÞH‰ÇèíÛÿÿ‹}èåÜÿÿ¾H‰Çè¸Ýÿÿ‹}I‰ÅèÍÜÿÿL‰éH».H‰ÞH‰Çè¸Ûÿÿ‹}è°Üÿÿ¾H‰ÇèƒÝÿÿ‹}I‰Åè˜ÜÿÿL‰éHŠ.H‰ÞH‰ÇèƒÛÿÿ‹}è{Üÿÿ¾H‰ÇèNÝÿÿ‹}I‰ÅècÜÿÿL‰éHY.H‰ÞH‰ÇèNÛÿÿ‹}èFÜÿÿ¾€H‰ÇèÝÿÿ‹}I‰Åè.ÜÿÿL‰éH*.H‰ÞH‰ÇèÛÿÿ‹}èÜÿÿ¾H‰ÇèäÜÿÿ‹}I‰ÅèùÛÿÿL‰éHû-H‰ÞH‰ÇèäÚÿÿ‹}èÜÛÿÿ¾€H‰Çè¯Üÿÿ‹}I‰ÅèÄÛÿÿL‰éHÍ-H‰ÞH‰Çè¯Úÿÿ‹}è§Ûÿÿ1öH‰Çè½Úÿÿ‹}I‰Åè’ÛÿÿL‰éH£-H‰ÞH‰Çè}Úÿÿ‹}èuÛÿÿ1öH‰Çè‹Úÿÿ‹}I‰Åè`ÛÿÿL‰éHz-H‰ÞH‰ÇèKÚÿÿ‹}èCÛÿÿ1öH‰ÇèÜÿÿ‹}I‰Åè.ÛÿÿL‰éHS-H‰ÞH‰ÇèÚÿÿ‹}èÛÿÿ¾H‰ÇèäÛÿÿ‹}I‰ÅèùÚÿÿL‰éH"-H‰ÞH‰ÇèäÙÿÿ‹}èÜÚÿÿ¾ H‰Çè¯Ûÿÿ‹}I‰ÅèÄÚÿÿL‰éHñ,H‰ÞH‰Çè¯Ùÿÿ‹}è§Úÿÿ¾0H‰ÇèzÛÿÿ‹}I‰ÅèÚÿÿL‰éHÀ,H‰ÞH‰ÇèzÙÿÿ‹}èrÚÿÿ¾0H‰ÇèEÛÿÿ‹}I‰ÅèZÚÿÿL‰éH,H‰ÞH‰ÇèEÙÿÿ‹}è=Úÿÿ¾H‰ÇèÛÿÿ‹}I‰Åè%ÚÿÿL‰éH51H‰ÞH‰ÇèÙÿÿ‹}èÚÿÿ¾H‰ÇèÛÚÿÿ‹}I‰ÅèðÙÿÿL‰éH1H‰ÞH‰ÇèÛØÿÿ‹}èÓÙÿÿ¾@H‰Çè¦Úÿÿ‹}I‰Åè»ÙÿÿL‰éHö+H‰ÞH‰Çè¦Øÿÿ‹}èžÙÿÿ¾H‰ÇèqÚÿÿ‹}I‰Åè†ÙÿÿL‰éHÈ+H‰ÞH‰ÇèqØÿÿ‹}èiÙÿÿ1öH‰ÇèØÿÿ‹}I‰ÅèTÙÿÿL‰éHœ+H‰ÞH‰Çè?Øÿÿ‹}è7Ùÿÿ¾H‰Çè Úÿÿ‹}I‰ÅèÙÿÿL‰éHn+H‰ÞH‰Çè Øÿÿ‹}èÙÿÿ1öH‰ÇèØÿÿ‹}I‰ÅèíØÿÿL‰éHD+H‰ÞH‰ÇèØ×ÿÿ‹}èÐØÿÿ1öH‰Çèæ×ÿÿ‹}I‰Åè»ØÿÿL‰éH ,H‰ÞH‰Çè¦×ÿÿ‹}èžØÿÿ1öH‰Çè´×ÿÿ‹}I‰Åè‰ØÿÿL‰éHè*H‰ÞH‰Çèt×ÿÿ‹}èlØÿÿ1öH‰Çè‚×ÿÿ‹}I‰ÅèWØÿÿL‰éH¿*H‰ÞH‰ÇèB×ÿÿ‹}è:Øÿÿ1öH‰ÇèP×ÿÿ‹}I‰Åè%ØÿÿL‰éH–*H‰ÞH‰Çè×ÿÿ‹}èØÿÿ¾H‰ÇèÛØÿÿ‹}I‰Åèð×ÿÿL‰éH./H‰ÞH‰ÇèÛÖÿÿ‹}èÓ×ÿÿ¾H‰Çè¦Øÿÿ‹}I‰Åè»×ÿÿL‰éH4*H‰ÞH‰Çè¦Öÿÿ‹}èž×ÿÿ¾H‰ÇèqØÿÿ‹}I‰Åè†×ÿÿL‰éH*H‰ÞH‰ÇèqÖÿÿ‹}èi×ÿÿ¾ H‰Çè<Øÿÿ‹}I‰ÅèQ×ÿÿL‰éHØ)H‰ÞH‰Çè<Öÿÿ‹}è4×ÿÿ¾H‰ÇèØÿÿ‹}I‰Åè×ÿÿL‰éH©)H‰ÞH‰ÇèÖÿÿ‹}èÿÖÿÿ¾@H‰ÇèÒ×ÿÿ‹}I‰ÅèçÖÿÿL‰éH{)H‰ÞH‰ÇèÒÕÿÿ‹}èÊÖÿÿ¾H‰Çè×ÿÿ‹}I‰Åè²ÖÿÿL‰éHM)H‰ÞH‰ÇèÕÿÿ‹}è•Öÿÿ¾H‰Çèh×ÿÿ‹}I‰Åè}ÖÿÿL‰éH )H‰ÞH‰ÇèhÕÿÿ‹}è`Öÿÿ¾H‰Çè3×ÿÿ‹}I‰ÅèHÖÿÿL‰éHð(H‰ÞH‰Çè3Õÿÿ‹}è+Öÿÿ1öH‰Çè×ÿÿ‹}I‰ÅèÖÿÿL‰éHÃ(H‰ÞH‰ÇèÕÿÿ‹}èùÕÿÿ¾€H‰ÇèÌÖÿÿ‹}I‰ÅèáÕÿÿL‰éH’(H‰ÞH‰ÇèÌÔÿÿ‹}èÄÕÿÿ¾€H‰Çè—Öÿÿ‹}I‰Åè¬ÕÿÿL‰éHa(H‰ÞH‰Çè—Ôÿÿ‹}èÕÿÿ1öH‰Çè¥Ôÿÿ‹}I‰ÅèzÕÿÿL‰éH5(H‰ÞH‰ÇèeÔÿÿ‹}è]Õÿÿ¾H‰Çè0Öÿÿ‹}I‰ÅèEÕÿÿL‰éH (H‰ÞH‰Çè0Ôÿÿ‹}è(Õÿÿ¾H‰ÇèûÕÿÿ‹}I‰ÅèÕÿÿL‰éHÛ'H‰ÞH‰ÇèûÓÿÿ‹}èóÔÿÿ¾H‰ÇèÆÕÿÿ‹}I‰ÅèÛÔÿÿL‰éH¬'H‰ÞH‰ÇèÆÓÿÿ‹}è¾Ôÿÿ¾H‰Çè‘Õÿÿ‹}I‰Åè¦ÔÿÿL‰éH~'H‰ÞH‰Çè‘Óÿÿ‹}è‰Ôÿÿ¾€H‰Çè\Õÿÿ‹}I‰ÅèqÔÿÿL‰éHO'H‰ÞH‰Çè\Óÿÿ‹}èTÔÿÿ¾H‰Çè'Õÿÿ‹}I‰Åè<ÔÿÿL‰éH!'H‰ÞH‰Çè'Óÿÿ‹}èÔÿÿ¾€H‰ÇèòÔÿÿ‹}I‰ÅèÔÿÿL‰éHó&H‰ÞH‰ÇèòÒÿÿ‹}èêÓÿÿ¾H‰Çè½Ôÿÿ‹}I‰ÅèÒÓÿÿL‰éHÄ&H‰ÞH‰Çè½Òÿÿ‹}èµÓÿÿ¾ H‰ÇèˆÔÿÿ‹}I‰ÅèÓÿÿL‰éH–&H‰ÞH‰ÇèˆÒÿÿ‹}è€Óÿÿ¾@H‰ÇèSÔÿÿ‹}I‰ÅèhÓÿÿL‰éHi&H‰ÞH‰ÇèSÒÿÿ‹}èKÓÿÿ¾H‰ÇèÔÿÿ‹}I‰Åè3ÓÿÿL‰éH:&H‰ÞH‰ÇèÒÿÿ‹}èÓÿÿ¾H‰ÇèéÓÿÿ‹}I‰ÅèþÒÿÿL‰éH &H‰ÞH‰ÇèéÑÿÿ‹}èáÒÿÿ¾ H‰Çè´Óÿÿ‹}I‰ÅèÉÒÿÿL‰éHÛ%H‰ÞH‰Çè´Ñÿÿ‹}è¬Òÿÿ¾H‰ÇèÓÿÿ‹}I‰Åè”ÒÿÿL‰éH­%H‰ÞH‰ÇèÑÿÿ‹}èwÒÿÿ¾H‰ÇèJÓÿÿ‹}I‰Åè_ÒÿÿL‰éH~%H‰ÞH‰ÇèJÑÿÿ‹}èBÒÿÿ¾H‰ÇèÓÿÿ‹}I‰Åè*ÒÿÿL‰éHO%H‰ÞH‰ÇèÑÿÿ‹}è Òÿÿ¾H‰ÇèàÒÿÿ‹}I‰ÅèõÑÿÿL‰éH %H‰ÞH‰ÇèàÐÿÿ‹}èØÑÿÿ1öH‰ÇèîÐÿÿ‹}I‰ÅèÃÑÿÿL‰éHó$H‰ÞH‰Çè®Ðÿÿ‹}è¦Ñÿÿ1öH‰Çè¼Ðÿÿ‹}I‰Åè‘ÑÿÿL‰éHË$H‰ÞH‰Çè|Ðÿÿ‹}ètÑÿÿ1öH‰ÇèŠÐÿÿ‹}I‰Åè_ÑÿÿL‰éHŸ$H‰ÞH‰ÇèJÐÿÿ‹}èBÑÿÿ1öH‰ÇèXÐÿÿ‹}I‰Åè-ÑÿÿL‰éHu$H‰ÞH‰ÇèÐÿÿ‹}èÑÿÿ1öH‰Çè&Ðÿÿ‹}I‰ÅèûÐÿÿL‰éHJ$H‰ÞH‰ÇèæÏÿÿ‹}èÞÐÿÿ1öH‰ÇèôÏÿÿ‹}I‰ÅèÉÐÿÿL‰éH$H‰ÞH‰Çè´Ïÿÿ‹}è¬Ðÿÿ1öH‰ÇèÂÏÿÿ‹}I‰Åè—ÐÿÿL‰éHô#H‰ÞH‰Çè‚Ïÿÿ‹}èzÐÿÿ1öH‰ÇèÏÿÿ‹}I‰ÅèeÐÿÿL‰éHÉ#H‰ÞH‰ÇèPÏÿÿ‹}èHÐÿÿ1öH‰Çè^ÏÿÿH‹-Ï: I‰Å‹}è,ÐÿÿL‰éH–#H‰ÞH‰ÇèÏÿÿ‹}èÐÿÿ1öH‰Çè%Ïÿÿ‹}I‰ÅèúÏÿÿL‰éHk#H‰ÞH‰ÇèåÎÿÿ‹}èÝÏÿÿ1öH‰ÇèóÎÿÿ‹}I‰ÅèÈÏÿÿL‰éH@#H‰ÞH‰Çè³Îÿÿ‹}è«Ïÿÿ1öH‰ÇèÁÎÿÿ‹}I‰Åè–ÏÿÿL‰éH#H‰ÞH‰ÇèÎÿÿ‹}èyÏÿÿ1öH‰ÇèÎÿÿ‹}I‰ÅèdÏÿÿL‰éHê"H‰ÞH‰ÇèOÎÿÿ‹}èGÏÿÿ¾ H‰ÇèÐÿÿ‹}I‰Åè/ÏÿÿL‰éH»"H‰ÞH‰ÇèÎÿÿ‹}èÏÿÿ1öH‰ÇèèÏÿÿ‹}I‰ÅèýÎÿÿL‰éHŽ"H‰ÞH‰ÇèèÍÿÿ‹}èàÎÿÿ¾H‰Çè³Ïÿÿ‹}I‰ÅèÈÎÿÿL‰éH]"H‰ÞH‰Çè³Íÿÿ‹}è«Îÿÿ¾H‰Çè~Ïÿÿ‹}I‰Åè“ÎÿÿL‰éH,"H‰ÞH‰Çè~Íÿÿ‹}èvÎÿÿ¾€H‰ÇèIÏÿÿ‹}I‰Åè^ÎÿÿL‰éHý!H‰ÞH‰ÇèIÍÿÿ‹}èAÎÿÿ¾H‰ÇèÏÿÿ‹}I‰Åè)ÎÿÿL‰éHÏ!H‰ÞH‰ÇèÍÿÿ‹}è Îÿÿ¾€H‰ÇèßÎÿÿ‹}I‰ÅèôÍÿÿL‰éH !H‰ÞH‰ÇèßÌÿÿ‹}è×Íÿÿ¾@H‰ÇèªÎÿÿ‹}I‰Åè¿ÍÿÿL‰éHq!H‰ÞH‰ÇèªÌÿÿ‹}è¢Íÿÿ¾H‰ÇèuÎÿÿ‹}I‰ÅèŠÍÿÿL‰éHB!H‰ÞH‰ÇèuÌÿÿ‹}èmÍÿÿ¾H‰Çè@Îÿÿ‹}I‰ÅèUÍÿÿL‰éH!H‰ÞH‰Çè@Ìÿÿ‹}è8Íÿÿ¾ H‰Çè Îÿÿ‹}I‰Åè ÍÿÿL‰éHä H‰ÞH‰Çè Ìÿÿ‹}èÍÿÿ¾H‰ÇèÖÍÿÿ‹}I‰ÅèëÌÿÿL‰éH¶ H‰ÞH‰ÇèÖËÿÿ‹}èÎÌÿÿ¾H‰Çè¡Íÿÿ‹}I‰Åè¶ÌÿÿL‰éH‡ H‰ÞH‰Çè¡Ëÿÿ‹}è™Ìÿÿ1öH‰Çè¯Ëÿÿ‹}I‰Åè„ÌÿÿL‰éH[ H‰ÞH‰ÇèoËÿÿ‹}ègÌÿÿ¾H‰Çè:Íÿÿ‹}I‰ÅèOÌÿÿL‰éH. H‰ÞH‰Çè:Ëÿÿ‹}è2Ìÿÿ1öH‰ÇèHËÿÿ‹}I‰ÅèÌÿÿL‰éH H‰ÞH‰ÇèËÿÿ‹}èÌÿÿ¾H‰ÇèÓÌÿÿ‹}I‰ÅèèËÿÿL‰éHÕH‰ÞH‰ÇèÓÊÿÿ‹}èËËÿÿ¾H‰ÇèžÌÿÿ‹}I‰Åè³ËÿÿL‰éH§H‰ÞH‰ÇèžÊÿÿ‹}è–Ëÿÿ¾@H‰ÇèiÌÿÿ‹}I‰Åè~ËÿÿL‰éHyH‰ÞH‰ÇèiÊÿÿ‹}èaËÿÿ1öH‰ÇèwÊÿÿ‹}I‰ÅèLËÿÿL‰éHNH‰ÞH‰Çè7Êÿÿ‹}è/Ëÿÿ1öH‰ÇèEÊÿÿ‹}I‰ÅèËÿÿL‰éH#H‰ÞH‰ÇèÊÿÿ‹}èýÊÿÿ1öH‰ÇèÓËÿÿ‹}I‰ÅèèÊÿÿL‰éHùH‰ÞH‰ÇèÓÉÿÿ‹}èËÊÿÿ¾H‰ÇèžËÿÿ‹}I‰Åè³ÊÿÿL‰éHÉH‰ÞH‰ÇèžÉÿÿ‹}è–Êÿÿ¾H‰ÇèiËÿÿ‹}I‰Åè~ÊÿÿL‰éH™H‰ÞH‰ÇèiÉÿÿ‹}èaÊÿÿ¾H‰Çè4Ëÿÿ‹}I‰ÅèIÊÿÿL‰éHiH‰ÞH‰Çè4Éÿÿ‹}è,Êÿÿ¾H‰ÇèÿÊÿÿ‹}I‰ÅèÊÿÿL‰éH9H‰ÞH‰ÇèÿÈÿÿ‹}è÷Éÿÿ1öH‰Çè Éÿÿ‹}I‰ÅèâÉÿÿL‰éHH‰ÞH‰ÇèÍÈÿÿ‹}èÅÉÿÿ¾ TH‰Çè˜Êÿÿ‹}I‰Åè­ÉÿÿL‰éHàH‰ÞH‰Çè˜Èÿÿ‹}èÉÿÿ¾TH‰ÇècÊÿÿ‹}I‰ÅèxÉÿÿL‰éH²H‰ÞH‰ÇècÈÿÿ‹}è[Éÿÿ¾TH‰Çè.Êÿÿ‹}I‰ÅèCÉÿÿL‰éH„H‰ÞH‰Çè.Èÿÿ‹}è&Éÿÿ1öH‰ÇèüÉÿÿ‹}I‰ÅèÉÿÿL‰éHYH‰ÞH‰ÇèüÇÿÿ‹}èôÈÿÿ¾H‰ÇèÇÉÿÿ‹}I‰ÅèÜÈÿÿL‰éH-H‰ÞH‰ÇèÇÇÿÿ‹}è¿Èÿÿ¾H‰Çè’Éÿÿ‹}I‰Åè§ÈÿÿL‰éHÿH‰ÞH‰Çè’Çÿÿ‹}èŠÈÿÿ¾H‰Çè]Éÿÿ‹}I‰ÅèrÈÿÿL‰éHÔH‰ÞH‰Çè]Çÿÿ‹}èUÈÿÿ¾H‰Çè(Éÿÿ‹}I‰Åè=ÈÿÿL‰éH¥H‰ÞH‰Çè(Çÿÿ‹}è Èÿÿ1öH‰ÇèöÈÿÿ‹}I‰Åè ÈÿÿL‰éH|H‰ÞH‰ÇèöÆÿÿ‹}èîÇÿÿ¾H‰ÇèÁÈÿÿ‹}I‰ÅèÖÇÿÿL‰éHNH‰ÞH‰ÇèÁÆÿÿ‹}è¹Çÿÿ¾H‰ÇèŒÈÿÿ‹}I‰Åè¡ÇÿÿL‰éHH‰ÞH‰ÇèŒÆÿÿ‹}è„Çÿÿ¾H‰ÇèWÈÿÿ‹}I‰ÅèlÇÿÿL‰éHôH‰ÞH‰ÇèWÆÿÿ‹}èOÇÿÿ1öH‰Çè%Èÿÿ‹}I‰Åè:ÇÿÿL‰éHÌH‰ÞH‰Çè%Æÿÿ‹}èÇÿÿ¾ TH‰ÇèðÇÿÿ‹}I‰ÅèÇÿÿL‰éHŸH‰ÞH‰ÇèðÅÿÿ‹}èèÆÿÿ¾TH‰Çè»Çÿÿ‹}I‰ÅèÐÆÿÿL‰éHqH‰ÞH‰Çè»Åÿÿ‹}è³Æÿÿ¾TH‰Çè†Çÿÿ‹}I‰Åè›ÆÿÿL‰éHCH‰ÞH‰Çè†Åÿÿ‹}è~Æÿÿ¾TH‰ÇèQÇÿÿ‹}I‰ÅèfÆÿÿL‰éHH‰ÞH‰ÇèQÅÿÿ‹}èIÆÿÿ1öH‰Çè_Åÿÿ‹}I‰Åè4ÆÿÿL‰éHìH‰ÞH‰ÇèÅÿÿ‹}èÆÿÿ¾TH‰ÇèêÆÿÿ‹}I‰ÅèÿÅÿÿL‰éHÁH‰ÞH‰ÇèêÄÿÿ‹}èâÅÿÿ¾TH‰ÇèµÆÿÿ‹}I‰ÅèÊÅÿÿL‰éH“H‰ÞH‰ÇèµÄÿÿ‹}è­Åÿÿ¾TH‰Çè€Æÿÿ‹}I‰Åè•ÅÿÿL‰éHfH‰ÞH‰Çè€Äÿÿ‹}èxÅÿÿ¾ TH‰ÇèKÆÿÿ‹}I‰Åè`ÅÿÿL‰éH9H‰ÞH‰ÇèKÄÿÿ‹}èCÅÿÿ1öH‰ÇèYÄÿÿ‹}I‰Åè.ÅÿÿL‰éHH‰ÞH‰ÇèÄÿÿ‹}èÅÿÿ1öH‰Çè'Äÿÿ‹}I‰ÅèüÄÿÿL‰éHåH‰ÞH‰ÇèçÃÿÿ‹}èßÄÿÿ1öH‰ÇèõÃÿÿ‹}I‰ÅèÊÄÿÿL‰éH¼H‰ÞH‰ÇèµÃÿÿ‹}è­Äÿÿ1öH‰ÇèÃÃÿÿ‹}I‰Åè˜ÄÿÿL‰éH“H‰ÞH‰ÇèƒÃÿÿ‹}è{Äÿÿ1öH‰Çè‘Ãÿÿ‹}I‰ÅèfÄÿÿL‰éHkH‰ÞH‰ÇèQÃÿÿ‹}èIÄÿÿ1öH‰Çè_ÃÿÿH‹-Ð. I‰Å‹}è-ÄÿÿL‰éH;H‰ÞH‰ÇèÃÿÿ‹}èÄÿÿ1öH‰Çè&Ãÿÿ‹}I‰ÅèûÃÿÿL‰éHH‰ÞH‰ÇèæÂÿÿ‹}èÞÃÿÿ1öH‰ÇèôÂÿÿ‹}I‰ÅèÉÃÿÿL‰éHéH‰ÞH‰Çè´Âÿÿ‹}è¬Ãÿÿ¾(TH‰ÇèÄÿÿ‹}I‰Åè”ÃÿÿL‰éH½H‰ÞH‰ÇèÂÿÿ‹}èwÃÿÿ1öH‰ÇèÂÿÿ‹}I‰ÅèbÃÿÿL‰éH”H‰ÞH‰ÇèMÂÿÿ‹}èEÃÿÿ¾TH‰ÇèÄÿÿ‹}I‰Åè-ÃÿÿL‰éHhH‰ÞH‰ÇèÂÿÿ‹}èÃÿÿ¾ TH‰ÇèãÃÿÿ‹}I‰ÅèøÂÿÿL‰éH<H‰ÞH‰ÇèãÁÿÿ‹}èÛÂÿÿ1öH‰ÇèñÁÿÿ‹}I‰ÅèÆÂÿÿL‰éHH‰ÞH‰Çè±Áÿÿ‹}è©Âÿÿ1öH‰Çè¿Áÿÿ‹}I‰Åè”ÂÿÿL‰éHëH‰ÞH‰ÇèÁÿÿ‹}èwÂÿÿ¾$TH‰ÇèJÃÿÿ‹}I‰Åè_ÂÿÿL‰éH¿H‰ÞH‰ÇèJÁÿÿ‹}èBÂÿÿ1öH‰ÇèXÁÿÿ‹}I‰Åè-ÂÿÿL‰éH–H‰ÞH‰ÇèÁÿÿ‹}èÂÿÿ1öH‰Çè&Áÿÿ‹}I‰ÅèûÁÿÿL‰éHmH‰ÞH‰ÇèæÀÿÿ‹}èÞÁÿÿ¾TH‰Çè±Âÿÿ‹}I‰ÅèÆÁÿÿL‰éHAH‰ÞH‰Çè±Àÿÿ‹}è©Áÿÿ¾)TH‰Çè|Âÿÿ‹}I‰Åè‘ÁÿÿL‰éHH‰ÞH‰Çè|Àÿÿ‹}ètÁÿÿ¾TH‰ÇèGÂÿÿ‹}I‰Åè\ÁÿÿL‰éHêH‰ÞH‰ÇèGÀÿÿ‹}è?Áÿÿ¾TH‰ÇèÂÿÿ‹}I‰Åè'ÁÿÿL‰éHÂH‰ÞH‰ÇèÀÿÿ‹}è Áÿÿ1öH‰Çè Àÿÿ‹}I‰ÅèõÀÿÿL‰éH›H‰ÞH‰Çèà¿ÿÿ‹}èØÀÿÿ1öH‰Çèî¿ÿÿ‹}I‰ÅèÃÀÿÿL‰éHrH‰ÞH‰Ç访ÿÿ‹}è¦Àÿÿ1öH‰Ç輿ÿÿ‹}I‰Åè‘ÀÿÿL‰éHIH‰ÞH‰Çè|¿ÿÿ‹}ètÀÿÿ1öH‰Ç芿ÿÿ‹}I‰Åè_ÀÿÿL‰éH H‰ÞH‰ÇèJ¿ÿÿ‹}èBÀÿÿ1öH‰ÇèX¿ÿÿ‹}I‰Åè-ÀÿÿL‰éH÷H‰ÞH‰Çè¿ÿÿ‹}èÀÿÿ1öH‰Çè&¿ÿÿ‹}I‰Åèû¿ÿÿL‰éHÎH‰ÞH‰Çèæ¾ÿÿ‹}èÞ¿ÿÿ1öH‰Çèô¾ÿÿ‹}I‰ÅèÉ¿ÿÿL‰éH¥H‰ÞH‰Çè´¾ÿÿ‹}謿ÿÿ¾TH‰ÇèÀÿÿ‹}I‰Å蔿ÿÿL‰éHyH‰ÞH‰Çè¾ÿÿ‹}èw¿ÿÿ¾TH‰ÇèJÀÿÿ‹}I‰Åè_¿ÿÿL‰éHMH‰ÞH‰ÇèJ¾ÿÿ‹}èB¿ÿÿ¾TH‰ÇèÀÿÿ‹}I‰Åè*¿ÿÿL‰éH!H‰ÞH‰Çè¾ÿÿ‹}è ¿ÿÿ¾TH‰Çèà¿ÿÿ‹}I‰Åèõ¾ÿÿL‰éHõH‰ÞH‰Çèà½ÿÿ‹}èØ¾ÿÿ¾@H‰Çè«¿ÿÿ‹}I‰ÅèÀ¾ÿÿL‰éHÉH‰ÞH‰Ç諽ÿÿ‹}裾ÿÿ¾@H‰Çèv¿ÿÿ‹}I‰Å苾ÿÿL‰éHžH‰ÞH‰Çèv½ÿÿ‹}èn¾ÿÿ¾ H‰ÇèA¿ÿÿ‹}I‰ÅèV¾ÿÿL‰éHrH‰ÞH‰ÇèA½ÿÿ‹}è9¾ÿÿ¾H‰Çè ¿ÿÿ‹}I‰Åè!¾ÿÿL‰éHGH‰ÞH‰Çè ½ÿÿ‹}è¾ÿÿ¾H‰Çè×¾ÿÿ‹}I‰Åèì½ÿÿL‰éHH‰ÞH‰Çè×¼ÿÿ‹}èϽÿÿ¾H‰Ç袾ÿÿ‹}I‰Åè·½ÿÿL‰éHñH‰ÞH‰Ç袼ÿÿ‹}èš½ÿÿ¾€H‰Çèm¾ÿÿ‹}I‰Å肽ÿÿL‰éHÅH‰ÞH‰Çèm¼ÿÿ‹}èe½ÿÿ¾€H‰Çè8¾ÿÿ‹}I‰ÅèM½ÿÿL‰éH™H‰ÞH‰Çè8¼ÿÿ‹}è0½ÿÿ¾H‰Çè¾ÿÿ‹}I‰Åè½ÿÿL‰éHnH‰ÞH‰Çè¼ÿÿ‹}èû¼ÿÿ¾H‰Çèνÿÿ‹}I‰Åèã¼ÿÿL‰éHCH‰ÞH‰Çèλÿÿ‹}èÆ¼ÿÿ¾H‰Ç虽ÿÿ‹}I‰Å讼ÿÿL‰éHH‰ÞH‰Çè™»ÿÿ‹}葼ÿÿ¾"TH‰Çèd½ÿÿ‹}I‰Åèy¼ÿÿL‰éHëH‰ÞH‰Çèd»ÿÿ‹}è\¼ÿÿ¾ TH‰Çè/½ÿÿ‹}I‰ÅèD¼ÿÿL‰éHÀH‰ÞH‰Çè/»ÿÿ‹}è'¼ÿÿ¾TH‰Çèú¼ÿÿ‹}I‰Åè¼ÿÿL‰éH”H‰ÞH‰Çèúºÿÿ‹}èò»ÿÿ1öH‰Çè»ÿÿ‹}I‰ÅèÝ»ÿÿL‰éHkH‰ÞH‰ÇèȺÿÿ‹}èÀ»ÿÿ¾'TH‰Ç蓼ÿÿ‹}I‰Å註ÿÿL‰éHAH‰ÞH‰Ç蓺ÿÿ‹}è‹»ÿÿ¾TH‰Çè^¼ÿÿ‹}I‰Åès»ÿÿL‰éHH‰ÞH‰Çè^ºÿÿ‹}èV»ÿÿ1öH‰Çèlºÿÿ‹}I‰ÅèA»ÿÿL‰éHíH‰ÞH‰Çè,ºÿÿ‹}è$»ÿÿ1öH‰Çè:ºÿÿ‹}I‰Åè»ÿÿL‰éHÄH‰ÞH‰Çèú¹ÿÿ‹}èòºÿÿ¾#TH‰ÇèÅ»ÿÿ‹}I‰ÅèÚºÿÿL‰éH˜H‰ÞH‰ÇèŹÿÿ‹}轺ÿÿ1öH‰ÇèÓ¹ÿÿ‹}I‰Å診ÿÿL‰éHoH‰ÞH‰Ç蓹ÿÿ‹}苺ÿÿ1öH‰Ç衹ÿÿ‹}I‰ÅèvºÿÿL‰éHFH‰ÞH‰Çèa¹ÿÿ‹}èYºÿÿ1öH‰Çèo¹ÿÿ‹}I‰ÅèDºÿÿL‰éHH‰ÞH‰Çè/¹ÿÿ‹}è'ºÿÿ1öH‰Çè=¹ÿÿ‹}I‰ÅèºÿÿL‰éHöH‰ÞH‰Çèý¸ÿÿ‹}èõ¹ÿÿ¾TH‰ÇèȺÿÿ‹}I‰ÅèݹÿÿL‰éHÊH‰ÞH‰Çèȸÿÿ‹}èÀ¹ÿÿ1öH‰ÇèÖ¸ÿÿ‹}I‰Å諹ÿÿL‰éH¢H‰ÞH‰Çè–¸ÿÿ‹}莹ÿÿ¾TH‰Çèaºÿÿ‹}I‰Åèv¹ÿÿL‰éHvH‰ÞH‰Çèa¸ÿÿ‹}èY¹ÿÿ1öH‰Çèo¸ÿÿ‹}I‰ÅèD¹ÿÿL‰éHQH‰ÞH‰Çè/¸ÿÿ‹}è'¹ÿÿ¾TH‰Çèú¹ÿÿ‹}I‰Åè¹ÿÿL‰éH&H‰ÞH‰Çèú·ÿÿ‹}èò¸ÿÿ1öH‰Çè¸ÿÿ‹}I‰ÅèݸÿÿL‰éHüH‰ÞH‰ÇèÈ·ÿÿ‹}èÀ¸ÿÿ¾TH‰Ç蓹ÿÿ‹}I‰Å訸ÿÿL‰éHÐH‰ÞH‰Çè“·ÿÿ‹}苸ÿÿ1öH‰Çè¡·ÿÿ‹}I‰Åèv¸ÿÿL‰éH©H‰ÞH‰Çèa·ÿÿ‹}èY¸ÿÿ1öH‰Çèo·ÿÿH‹-à" I‰Å‹}è=¸ÿÿL‰éHwH‰ÞH‰Çè(·ÿÿ‹}è ¸ÿÿ1öH‰Çè6·ÿÿ‹}I‰Åè ¸ÿÿL‰éHNH‰ÞH‰Çèö¶ÿÿ‹}èî·ÿÿ1öH‰Çè·ÿÿ‹}I‰ÅèÙ·ÿÿL‰éH&H‰ÞH‰ÇèĶÿÿ‹}è¼·ÿÿ1öH‰ÇèÒ¶ÿÿ‹}I‰Åè§·ÿÿL‰éHûH‰ÞH‰Çè’¶ÿÿ‹}芷ÿÿ1öH‰Çè ¶ÿÿ‹}I‰Åèu·ÿÿL‰éHÑH‰ÞH‰Çè`¶ÿÿ‹}èX·ÿÿ1öH‰Çèn¶ÿÿ‹}I‰ÅèC·ÿÿL‰éH¦H‰ÞH‰Çè.¶ÿÿ‹}è&·ÿÿ¾H‰Çèù·ÿÿ‹}I‰Åè·ÿÿL‰éHxH‰ÞH‰Çèùµÿÿ‹}èñ¶ÿÿ1öH‰Çè¶ÿÿ‹}I‰ÅèܶÿÿL‰éHMH‰ÞH‰Çèǵÿÿ‹}è¿¶ÿÿ1öH‰ÇèÕµÿÿ‹}I‰Å誶ÿÿL‰éH!H‰ÞH‰Ç蕵ÿÿ‹}è¶ÿÿ¾ H‰Çè`·ÿÿ‹}I‰Åèu¶ÿÿL‰éHò H‰ÞH‰Çè`µÿÿ‹}èX¶ÿÿ1öH‰Çènµÿÿ‹}I‰ÅèC¶ÿÿL‰éHÉ H‰ÞH‰Çè.µÿÿ‹}è&¶ÿÿ¾H‰Çèù¶ÿÿ‹}I‰Åè¶ÿÿL‰éH› H‰ÞH‰Çèù´ÿÿ‹}èñµÿÿ¾ H‰ÇèĶÿÿ‹}I‰ÅèÙµÿÿL‰éHk H‰ÞH‰ÇèÄ´ÿÿ‹}è¼µÿÿ¾H‰Çè¶ÿÿ‹}I‰Å褵ÿÿL‰éH; H‰ÞH‰Çè´ÿÿ‹}臵ÿÿ¾H‰ÇèZ¶ÿÿ‹}I‰ÅèoµÿÿL‰éH H‰ÞH‰ÇèZ´ÿÿ‹}èRµÿÿ1öH‰Çè(¶ÿÿ‹}I‰Åè=µÿÿL‰éHá H‰ÞH‰Çè(´ÿÿ‹}è µÿÿ¾H‰Çèóµÿÿ‹}I‰ÅèµÿÿL‰éH² H‰ÞH‰Çèó³ÿÿ‹}èë´ÿÿ¾H‰Çè¾µÿÿ‹}I‰ÅèÓ´ÿÿL‰éHƒ H‰ÞH‰Çè¾³ÿÿ‹}è¶´ÿÿ¾H‰Ç艵ÿÿ‹}I‰Åèž´ÿÿL‰éHU H‰ÞH‰Ç艳ÿÿ‹}è´ÿÿ¾H‰ÇèTµÿÿ‹}I‰Åèi´ÿÿL‰éH% H‰ÞH‰ÇèT³ÿÿ‹}èL´ÿÿ¾ H‰Çèµÿÿ‹}I‰Åè4´ÿÿL‰éHö H‰ÞH‰Çè³ÿÿ‹}è´ÿÿ¾H‰Çèê´ÿÿ‹}I‰Åèÿ³ÿÿL‰éHÊ H‰ÞH‰Çèê²ÿÿ‹}èâ³ÿÿ¾ H‰Çèµ´ÿÿ‹}I‰ÅèʳÿÿL‰éHœ H‰ÞH‰Çèµ²ÿÿ‹}è­³ÿÿ¾ H‰Ç耴ÿÿ‹}I‰Å蕳ÿÿL‰éHm H‰ÞH‰Ç耲ÿÿ‹}èx³ÿÿ1öH‰Ç莲ÿÿ‹}I‰Åèc³ÿÿL‰éHA H‰ÞH‰ÇèN²ÿÿ‹}èF³ÿÿ1öH‰Çè´ÿÿ‹}I‰Åè1³ÿÿL‰éH H‰ÞH‰Çè²ÿÿ‹}è³ÿÿ¾@H‰Çèç³ÿÿ‹}I‰Åèü²ÿÿL‰éHå H‰ÞH‰Çèç±ÿÿ‹}èß²ÿÿ¾@H‰Çè²³ÿÿ‹}I‰ÅèDzÿÿL‰éH´ H‰ÞH‰Çè²±ÿÿ‹}課ÿÿ¾H‰Çè}³ÿÿ‹}I‰Åè’²ÿÿL‰éH… H‰ÞH‰Çè}±ÿÿ‹}èu²ÿÿ¾H‰ÇèH³ÿÿ‹}I‰Åè]²ÿÿL‰éHV H‰ÞH‰ÇèH±ÿÿ‹}è@²ÿÿ1öH‰ÇèV±ÿÿ‹}I‰Åè+²ÿÿL‰éH, H‰ÞH‰Çè±ÿÿ‹}è²ÿÿ¾H‰Çèá²ÿÿ‹}I‰Åèö±ÿÿL‰éHü H‰ÞH‰Çèá°ÿÿ‹}èÙ±ÿÿ1öH‰Çèï°ÿÿ‹}I‰ÅèıÿÿL‰éHÐ H‰ÞH‰Ç诰ÿÿ‹}è§±ÿÿ1öH‰Çè½°ÿÿ‹}I‰Åè’±ÿÿL‰éH¥ H‰ÞH‰Çè}°ÿÿ‹}èu±ÿÿ¾H‰ÇèH²ÿÿ‹}I‰Åè]±ÿÿH‰ÞL‰éHt H‰ÇèH°ÿÿ‹}è@±ÿÿHƒÄD‰æ[H‰Ç]A\A]é‹°ÿÿóúHƒìHƒÄÃhandletrying grantpt()... trying unlockpt()... trying ptsname_r()... trying ptsname()... trying to open %s... IO::Tty::DEBUGtrying posix_openpt()... trying getpt()... trying openpty()... trying /dev/ptmx... /dev/ptmxtrying BSD /dev/pty??... /dev/pty%c%c/dev/tty%c%c/dev/ptyp%d/dev/ttyp%d/dev/pt/%c%c/dev/tt/%c%c/dev/ptyp%04d/dev/ttyp%04d1.16v5.26.0Tty.cIO::Pty::pty_allocateIO::Tty::ttynameIO::Tty::pack_winsizeIO::Tty::unpack_winsizeIO::Tty::ConstantIO::Tty::CONFIGB110B115200B1200B134B150B153600B1800B19200B200B230400B2400B300B307200B38400B460800B4800B50B57600B600B75B76800B9600BRKINTBS0BS1BSDLYCBAUDCBAUDEXTCCTS_OFLOWCDELCDSUSPCEOL2CEOTCERASECESCCIBAUDCIBAUDEXTCINTRCKILLCLNEXTCLOCALCNSWTCHCNULCQUITCR0CR1CR2CR3CRDLYCREADCRPRNTCRTSCTSCRTSXOFFCRTS_IFLOWCS5CS6CS7CS8CSIZECSTOPBCSUSPCSWTCHCWERASEDEFECHODIOCGETPDIOCSETPDOSMODEECHOCTLECHOEECHOKECHOKEECHONLECHOPRTEXTAEXTBFF0FF1FFDLYFIORDCHKFLUSHOHUPCLICANONICRNLIEXTENIGNBRKIGNCRIGNPARIMAXBELINLCRINPCKISIGISTRIPIUCLCIXANYIXOFFIXONKBENABLEDLDCHGLDCLOSELDDMAPLDEMAPLDGETTLDGMAPLDIOCLDNMAPLDOPENLDSETTLDSMAPLOBLKNCCSNL0NL1NLDLYNOFLSHOCRNLOFDELOFILLOLCUCONLCRONLRETONOCROPOSTPAGEOUTPARENBPAREXTPARMRKPARODDPENDINRCV1ENRTS_TOGTAB0TAB1TAB2TAB3TABDLYTCDSETTCFLSHTCGETATCGETSTCIFLUSHTCIOFFTCIOFLUSHTCIONTCOFLUSHTCOOFFTCOONTCSADRAINTCSAFLUSHTCSANOWTCSBRKTCSETATCSETAFTCSETAWTCSETCTTYTCSETSTCSETSFTCSETSWTCXONCTERM_D40TERM_D42TERM_H45TERM_NONETERM_TECTERM_TEXTERM_V10TERM_V61TIOCCBRKTIOCCDTRTIOCCONSTIOCEXCLTIOCFLUSHTIOCGETCTIOCGETDTIOCGETPTIOCGLTCTIOCGPGRPTIOCGSIDTIOCGSOFTCARTIOCGWINSZTIOCHPCLTIOCKBOFTIOCKBONTIOCLBICTIOCLBISTIOCLGETTIOCLSETTIOCMBICTIOCMBISTIOCMGETTIOCMSETTIOCM_CARTIOCM_CDTIOCM_CTSTIOCM_DSRTIOCM_DTRTIOCM_LETIOCM_RITIOCM_RNGTIOCM_RTSTIOCM_SRTIOCM_STTIOCNOTTYTIOCNXCLTIOCOUTQTIOCREMOTETIOCSBRKTIOCSCTTYTIOCSDTRTIOCSETCTIOCSETDTIOCSETNTIOCSETPTIOCSIGNALTIOCSLTCTIOCSPGRPTIOCSSIDTIOCSSOFTCARTIOCSTARTTIOCSTITIOCSTOPTIOCSWINSZTM_ANLTM_CECHOTM_CINVISTM_LCFTM_NONETM_SETTM_SNLTOSTOPVCEOFVCEOLVDISCARDVDSUSPVEOFVEOLVEOL2VERASEVINTRVKILLVLNEXTVMINVQUITVREPRINTVSTARTVSTOPVSUSPVSWTCHVT0VT1VTDLYVTIMEVWERASEWRAPXCASEXCLUDEXMT1ENXTABSIO::Tty::unpack_winsize(): Bad arg length - got %d, expected %drow, col, xpixel = 0, ypixel = 0IO::Tty::pty_allocate(nonfatal): tried to move fd %d up but fcntl() said %.100sIO::Tty::pty_allocate(nonfatal): grantpt(): %.100sIO::Tty::pty_allocate(nonfatal): unlockpt(): %.100sIO::Tty::open_slave(nonfatal): ptsname_r(): %.100sERROR: IO::Tty::open_slave: ttyname truncatedIO::Tty::open_slave(nonfatal): ptsname(): %.100sIO::Tty::open_slave(nonfatal): open(%.200s): %.100spty_allocate(nonfatal): posix_openpt(): %.100spty_allocate(nonfatal): getpt(): %.100spty_allocate(nonfatal): openpty(): %.100spty_allocate(nonfatal): open(/dev/ptmx): %.100sERROR: pty_allocate: ttyname truncated0123456789abcdefghijklmnopqrstuvpqrstuvwxyzabcdefghijklmnoABCDEFGHIJKLMNOPQRSTUVWXYZ-DHAVE_DEV_PTMX -DHAVE_GETPT -DHAVE_GRANTPT -DHAVE_OPENPTY -DHAVE_POSIX_OPENPT -DHAVE_PTSNAME -DHAVE_PTSNAME_R -DHAVE_PTY_H -DHAVE_SIGACTION -DHAVE_TERMIOS_H -DHAVE_TERMIO_H -DHAVE_TTYNAME -DHAVE_UNLOCKPT;d €Ÿÿÿ€P¢ÿÿ¨Ð¥ÿÿÀà§ÿÿ«ÿÿL°¬ÿÿŒ0­ÿÿÄ­ÿÿØP®ÿÿбÿÿTP»ÿÿ¤zRx $øžÿÿÐFJ w€?:*3$"D ¡ÿÿÀ<\¥ÿÿFŽEB ŒA(†A0ƒ| (A BBBF HœØ¦ÿÿ,FBŽE B(ŒA0†A8ƒD`  8A0A(B BBBA <輩ÿÿ–FŽBE ŒA(†A0ƒ (A BBBK 4(«ÿÿ|Q†HƒK X AAB iKÃCÆ`d«ÿÿR(t°«ÿÿ¾A†CƒOà AAK L D¬ÿÿzBBŒD †D(ƒI0  (A ABBH  (C ABBF Lðt¯ÿÿs FBŽB B(ŒA0†A8ƒJ€s 8A0A(B BBBK 8@¤¸ÿÿE7FBŒA †A(ƒD0&7(D DBBGNUÀ@@| UÐÝí Ø d0| 8| õþÿo`¨˜ < X~  ¸ à Ø ûÿÿoþÿÿoP ÿÿÿoðÿÿoä ùÿÿoH|  0@P`p€ °ÀÐàð 0@P`p€ °ÀÐàð 0@P`p€ °ÀGCC: (GNU) 8.4.1 20200928 (Red Hat 8.4.1-1)GA$3a1GA$3a1ØîGA$3a1d dGA$3a1I GA$3p950PdGA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA*FORTIFYPTGA+GLIBCXX_ASSERTIONSPT GA*FORTIFYTŒGA+GLIBCXX_ASSERTIONSTŒ GA*FORTIFYŒ&GA+GLIBCXX_ASSERTIONSŒ& GA*FORTIFY&¬GA+GLIBCXX_ASSERTIONS&¬ GA*FORTIFY¬GA+GLIBCXX_ASSERTIONS¬ GA*FORTIFYÎGA+GLIBCXX_ASSERTIONSÎ GA*FORTIFYÎJ#GA+GLIBCXX_ASSERTIONSÎJ# GA*FORTIFYJ#Ã,GA+GLIBCXX_ASSERTIONSJ#Ã, GA*FORTIFYÃ,dGA+GLIBCXX_ASSERTIONSÃ,d GA$3h950GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3c950GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3s950GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realign GA$3e950GA$running gcc 8.4.1 20200928GA$annobin gcc 8.4.1 20200928 GA*GOW*ÅGA*GA+stack_clashGA*cf_protection GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*GA!GA+omit_frame_pointerGA*GA!stack_realignGA$3a1ddGA$3a1ddGA$3a1îóGA$3a1 d%d,PÅL¾ï@ $‘PÅLŸ!-,95707¡!F %-©+ž '9intye% )E: LÔ" E7 ‘Eæ ’L˜ “L¥> ”E…' •Lõ# –‘€4 —‘Ø1 ˜y:% š‘ø. ž‘( ¬‘Å ±‘ . ¿‘”< Â!‘j_¨!j9 @°Ö" O¤. lGú.  ØL €  É ; É LÙ LD3 ²    3  æ S Ä:R5 oT#5 Í<U#5 ½ V  ‡6(v½ d5xy —!yE { zy c |E :”y ¨šf (@šf ¹*›;+761E(C þ†#EG,1FþmG ‘ j L'**HÐ H Z mg%… è” Z” ¯*"¯h ó#µp Ñ)$µx o,'»€ ¤¤ L ªk@€ ËË L qËËk*!çEmÛ¦4 ‘ L ´È!J :'ù À( y@ y)ÙH Z Ly*SJtŒ^yc> (?f 8¼ í7: ';¤ ?í A y /%B y qCŒ G í7I 'J¤ qKŒ Oi í7Q 'R¤ ÈS y v>T …+U a Ëc ( ™)d (^¯€eivg… Yà B7[ ( V]f ½,h  l ®?n‘ ¯'o y t5 ¤v ( 6w y Ó xE p3ŸŸ5ŸÁ!<˜D5D¼_rtLíÑ5V®1i¯@pà;y y¯ L €$ ú ;,& y Y( y Î* y i0 y Ï2{ 5|¯U#H#yE"P $ `ZyZ(úE S ˜¨ B+&# Ÿ.Ù ˜ 1 yˆ ©4 ©¨ Ñ¿ L@¯4&¿5&¿éÞ¬÷_®!÷“($_“>2 yÂ57 y°; y¯¢ 9 ¾.²u ¨2´A Ç>µ zM jŠ L MŠw0••Ÿ˜ªª´2¿¿É”ÔÔÞ š4í+ Ð7ïA L0ðÑ  ñ4ñ¶  `ôs éé0 x'ü >þA ²9ÿÑ 69â=; Ü"9; ; ’ ®   § ¶(² ² ¼ *Ç Ç Ñ 7Ü Ü æ 0:ñ ñ û     u š& ¯1 Ä< ÙG + R  ] ¢ h · s Ì ~ á ‰ ö ”  Ÿ d#9 ò4Ñ !ª :w-Õ 7× e;Ø  V<Ù + ! L -+ L 9; L ã=ÓV #Ú Ý ; f0ãV cäV -ƒ L Š=.T C<0 ˜ È15 ¼ z =à Ý;>Ô ÷@ ¤ (A ° iC y$ â!E ˜( J ì0 t3N/8 *&P;@ V[åH /\åX #]åh d.jT x Sd L _t L> Ÿd /   y¥ ¡‘!> ¦d / ® y§ ¯‘B  y §!4ñ –;!6 y {#!7 yÉ ñ  "-_Ž3"._ 3#V - # _ ;# ÷   #y æ8# 9 ´ $b¥ N$d _ s$e ÷ Ü$fy ¯$gy À*$h ÷ ¨ $ÿë ”:$ _a=$ ÷$y#/$ _¹$D$ù$F _0$G ÷(>$Hy 7 %f 14%9 ~%%9 ï$%9 ö8% 9J7&¶ &È Ê9&ø $&9 4/& - &! ¶ jÆ Lÿ‚&&% &'È Ê9&(ø $&)9 4/&*- &+ ¶DIR'"å4IV(v‘'UV(wLNV(EP´V!“) yW(/ ¦OP(1 „op(*Ê_ q*Ë¢2 n#*Ë¢2 t*Ë•K Ù *ËôI )*ËE  ‰ *ËE Ò3*ËE =*ËE g(*ËE F:*ËE ¦*ËE ¸1*ËE Ë*ËÌ1" »*ËÌ1#COP(2 l!copP+y¹q+z¢2n#+z¢2t+z•KÙ +zôI")+zE  "‰ +zE "Ò3+zE "=+zE "g(+zE "F:+zE "¦+zE "¸1+zE Ë+zÌ1"»+zÌ1#õ+}B2$+€ôI(H;+‚ _0>+‡ 28‹ +ˆ 2<¯%+ŠuQ@4-+ {QHÔ(8 Æ Q`*û q*ü¢2 n#*ü¢2 t*ü•K Ù *üôI )*üE  ‰ *üE Ò3*üE =*üE g(*üE F:*üE ¦*üE ¸1*üE Ë*üÌ1" »*üÌ1# ¸*ý ¢2( ë1*þ ¢20>(*ôI8i3*2@ú* ¡KH½*ÓKPÚ+* ¢2Xê!(< =P*§@q*¨¢2n#*¨¢2t*¨•KÙ *¨ôI")*¨E  "‰ *¨E "Ò3*¨E "=*¨E "g(*¨E "F:*¨E "¦*¨E "¸1*¨E Ë*¨Ì1"»*¨Ì1#¸*© ¢2(ë1*ª ¢20*« ¢28­*¬ ¢2@2!*­ ¢2H+ (G M#·à (œ’% .,#…2$Iop,$¢2 Ü.,%…2 ,'…2 1<,(…2 «,*'`( ð,,þ10 ,-þ14 %=,/-`8 ˜ ,0þ1@ ® ,1þ1D T,3…2H 8,4ŽP ×,5ŽX ‰(,6Ž` ,aÌ1½ 4,b2À (,nÌ1È ²,,uÁ1É ƒ;,zœ2Ð Û$,{œ2Ø û-,}_Tà ¨,~–2è £/,3`ð W3,€–2ø%q;,„'%G,†z2%º,‡z2%t,ŠÒB%ñ,9` %; ,‘?`(%Y&,“7J0%¦,¤’%8%ç#,¥’%P%m ,¦’%h%n),§11€%ÿ ,¨11°&ISv,©z2à%L,«E`è%Û/,­œ2ð&Ina,»kø%C,¿ƒ %,Àƒ % &,Á2 %²",Âz2(&Irs,Ôz20%h,Õ28%³,Ö2@%Á,×2H%5,ØËP%1=,Ùz2X%¥;,Úz2`%8,Ûz2h%š,Þ¢2p%w,ߊRx%ù,áŠR€%±/,âXQˆ%U,ãz2`%`6,æÁ8h%æ,è¢2p%µ7,ë¢2x%ì,ìœ2€%(,í2ˆ%þ,î2%39,ñ_˜%è ,òk %»+,ôí1¨%‰9,÷Ì1ª%c ,ù¨2«%‹,ú¨2¬%n1,û¨2­%“,ýz2°'®,K`¸'ü ,"_è'>,/"_ð'i,=¥_ø'ü3,?÷'ì=,@_'D,B2'Û7,D2'i,Fy'E,Iy'O,J÷ 'ð ,K2('s,L20'’4,M28'p%,N_@'›5,OËH' ,Pz2P'ã?,Qz2X'Î,Tz2`'9,U[`h'ü6,VËp'Ø ,X¨2x'ê ,Y¨2y'ó ,Z¨2z'á ,[¨2{'Ç ,\¨2|'ƒ ,]¨2}'Á,^¨2~'ˆ,_¨2'b,a_€'§,bz2ˆ' ,dš'‡,fþ1˜',hþ1œ'Ò,lþ1 'ˆ8,oy¤'ó,pa`¨',s2°'u,t2¸',u2À'ñ3,v2È'ü ,w–2Ð'¿>,z2Ø'-8,}2à'D,,€2è'…,2ð'Á<,™2ø'!,šz2'¾ ,›z2'°4,œz2'2,–2'ä,Ÿg` '÷ ,¢œ28'1",£œ2@'Q;,¤z2H'á ,¥–2P'×,¦–2X'ƒ,§–2`'µ,¨–2h',©–2p'Á8,¬–2x'' ,¯_€'=@,²=ˆ'1,³¢2'³ ,´¢2˜'Þ',µ¢2 ',¶¢2¨'8',¹_T°' :,»y¸'ì,¼y¼'Ç+,½_À'ð5,¾w`È'r0,¿_Ð'Ø,Ä–2Ø'(",Åz2à'„$,Æz2è'J/,Éyð'á,Ìþ1ô'`?,ͨ2ø'ä5,Ψ2ù'¤*,Ïí1ú',Ñyü'Ö,Óþ1'#:,×þ1' 6,Ø}`'[0,çœ2'.3,êƒ`'',ì_ 'Ý ,î=p' ,ï1Jx'û,ðôI€'¿?,ñôIˆ'¬),ù='Ê0,úy˜'?,ý2œ',ÿ¨2 '³,¨2¡'= ,¨2¢'ã:,¨2£'Ó?,‚¤'ö,‚¨'º,v¬'J2,v°(Ian, 2´'Ï>, 2¸'Ô%,2¼'¥$,2À'§.,2Ä'=2,÷È'˜ ,_Ð'0 ,\5Ø'e,!‰`à'Ç.,# 2`',%2d'ë,'„[h'26,)z2p'è3,+þ1x'>",,ôI€'¡,.ôIˆ'Ï,,/ôI'r=,1ôI˜'»,3ôI '#9,6_¨'o",7¦°'Ó,8¦¸'ƒ,92À'K5,:Ì1Ä'ð,;¨2Å'8,=Ì1Æ'P.,>¨2Ç'Š4,F¨2È'÷9,G¨2É' ,Lª^Ì'I*,N¨2Ð'|,SSÑ',WyÔ' %,Y¨2Ø'º2,[_à'™6,\z2è'r ,az2ð'` ,bz2ø',,cz2 'ø:,dz2 '•,fz2 ',gz2 '",,jz2 '+?,kz2( 'l,lz20 'o/,mz28 '&#,nz2@ 'º4,oz2H 'Õ*,pz2P '@),r™`X '¦=,s©`¨ '´<,t©`( 'Ö0,uz2¨ 'ï!,vz2° '<#,wz2¸ ',,xz2À '¾#,yz2È 'r,zœ2Ð 'í,|œ2Ø 'J,,}/Eà '†1,~kè '7,¹`ð 'í?,€Ì1ü '¯5,ˆ¨2ý '…>,‰¨2þ 'ð2,…2 '°,‘…2 'ì9,ŸÉ` 'W%, –2 '_7,¢( ' ,¦…2( 'ÿ4,¨–20 'É ,­Ï`8 '"%,®ôI@ 'Ù,¯ôIH '[4,³Õ`P 'C-,¶œ2X 'U,·œ2` '÷ ,ºD5h '¶-,»Û`p 'X,¼Û`x 'Ô<,¿z2€ 'î,Àz2ˆ '<,Áz2 '),Âz2˜ '™",Ãz2  'ö,Äz2¨ 'v,ÆE_° '‹,È–2¸ 'h+,É–2À 'w<,Ì‘È 'X,Ï«[Ð 'Ç),Ы[Ø '®$,׫[à 'Ã(,ÙÎ[è '&,ÜÛ[ð 'o ,ß\ø '[ ,âœ2 '÷&,èœ2 'M ,ë–2 'Q ,ïœ2 'ˆ!,óz2 '#,õœ2( 'ú4,÷á`0 '?,ûw`8 '™,ýõ^@ '¨9,ã_ˆ '™=, ç` ', y˜ 'É,E[  '!,"í`¸ '?,-âIÐ 'î,/kØ SV(O £%’%sv-çä% w,-è( n'-è2 ,-è2 ±-é³6AV(P ð%av-ö1& w,-÷e: n'-÷2 ,-÷2 ±-øã9HV(Q =&hv-û~& w,-üí: n'-ü2 ,-ü2 ±-ýk:CV(R Š&cv-ñË& w,-òÝ9 n'-ò2 ,-ò2 ±-ó[9é2(S Ø&Y-'w,-µ8n'-2,-2 ±-†;GP(T +'gpP. Ú' ´:. z2 o$. îI ú2. = ‹&. 2 D. 2 ©5. œ2 [2. –2( S4. =0 ×. 28 O3.E@ ¼&.E@ b'. ™<HGV(U æ'gv-ì'( w,-íU9 n'-í2 ,-í2 ±-îÓ8!io-m(w,-€;n'-2,-2 ±-ó:d(W z(Ð`+?—( )+C8Ux:`+Ì@)H+Í Ì1ê"+Î Ì1%3+Ï í16+Ð þ1C+Ò þ1))+Ó þ1 Œ/+Ô _T2@+Õ ÒB+ÖŽ Þ+× þ1(~,+ßT0q((Z M) H0/Ã) 1(/ È< ™/ €V ô7/ í1 m?/ j È$/ Ì1 Â/ Ž ¶/ z2 ƒ2/ _(XPV([ Ð)!xpv -õ*.-öœ2|&-öŸ<a-ök¹-öÎ<˜(\ $*ü(-ùy*.-úœ2|&-úŸ<a-úk¹-úó<Æ;-ûV< ÷(^ †*Õ0-é*.-œ2|&-Ÿ<a-k¹-=Æ;- V< Î"- <(=(b ö* >(0 E+ .0 œ2 |&0 Ÿ< +20 Ž ¾;0 Ž ¥'0 …2 G(c R+ ^ 1‡”+ .1ˆ œ2 |&1‰Ÿ< ç+1Šk Ú1‹kz(d ¡+ü0-4,.-5œ2|&-5Ÿ<a-5k¹-5==Æ;-6V< Î"-7<(:(e , u?h2 Õ, .2œ2 |&2Ÿ< a2k ¹2™J -2œ2 š02»J( 2ÝJ0 Ê2ÿJ8  &2_@ 4 2!KH <2=P Æ622X ÿ2b=\ Ú52þ1`ˆ(h â,öˆ-^í-.-_œ2|&-_Ÿ<a-_k¹-_‘=Æ;-`V< s -bÍ8(@-o¶=0h*-q '8-r '@*-s 'HÐ9-t _Pd/-u 2X)-v _`3;-w 2h84-x _pô-y 2x2-z j€N-{ Ì1`((i ÿ-í- ¾@/ u. Z/ V {;/ V 6/ -V N8/ V 7/ V N>/ [V( 6/ zV0 / V8ANY(j ‚.)any(Þn/*¬ (ß (*ë(àz2*8(á…2*ý(â2*M(ã–2*z(äœ2*¡(å¢2*&(æ_*Ð (ç÷*X6(è þ1*»(é 2*(ê '*Ð(ë 8*l9(ì ‘*.(í ¨2*U(î Z2*Ü8(ï Ê2·3({§/Ï<(|.[e9(}ÞÞ(~ (Ð(l ´/²20(0'(‚4[(ƒ 8J(„ 8Á(…?[p(†.[ â(‡.[(Ð (m $0Å(-by0Ó/-c–2› -d8Ž)-eÄ2:-fÄ2= -g–2 ô (q †0 ;3È0 3 3 Ž Ò3&=J  3' 2 ë03( 2PAD(r ä%…(s â0 ¤(3+11 …3, Ž ~3-kJ ¶3. Ž ; 3/ôI J 30 2  (t >1 å03LÁ1 ¶?3M_ 33Mœ2 ±#3MwJ 13M2 p-3M2 È'3M2 >;3My$ +3MÌ1( i3MÌ1)I84ªSU84«-Ì1I164¬fÜ1U164­9í1I324®yþ1U324¯E2+2 202,%2\:4Ù02·4< 2Z2(O2˜/(w 6¶>(y Ä’%z2z2…2Ú'ä%1&xb¨2Ä2Ä2(@´2 õ=Ø51W4 š 53y ?56 _ 57 _ ;658 _ 059 _ +5: _( ’5; _0 {5< _8 5= _@ ¥5@ _H ¤5A _P ê5B _X -5Dp4` õ;5Fv4h †5Hyp ±5Iyt V'5J ìx Š25M9€ å 5NS‚ ­ 5O|4ƒ e55QŒ4ˆ @=5Y ø 5[—4˜ U5\¢4  ²=5]v4¨ 5^ (° Í=5_ ¦¸ ß;5`yÀ  5b¨4Äù=6Ð2-,5+Ck4Ð2 jŒ4 Lc4š’4R4 j¸4 Lv7‰Ä4W4Ä4a-7ŠÄ4T 7‹Ä4 ,8 y Ñþ4,ó4F8þ4 ,8 yE8þ4—9<35RS9>D5'5ô9NW5æ9:7` -;¤¦5×8;§ þ13';© _2';ª ¢2—,;« 2 -;¯h5.E-„'6/D%/ò/· /û!/™7/Ú/©&/²/å2/j /P /- /! /‘ /£/Ñ/Ô<<-™²5HE-»>6he1 r6 m41$ Á8 %1% ™< d1)áPHEK-¼~6hek 1-³6 Ž-1.2 {1/þ1 415|4-é57ð-é_h-é'-é8t-éD†-éz2-éµ8º:-é…2Z-é»8N-éÇ8Ù -éÍ8 g)È<šµ8 .<›œ2 |&<›Ÿ< a<›k ¹<›? Á$<œï? ;<œ?( ë&<œœ20 *;<œ28 î#<œŽ@ ©<œŽH »<œkP •8<œõ?X µ'<œ2` ¥8<œ2d >1<œ(h L<œ2p š+<œ2t m<œû?x › <œ÷€  <œ_ˆ ¶<œz2 ")<œŽ˜ ø><œŽ  Î <œŽ¨ Ç <œŽ° Î <œE¸ *<œE ¸ ¿ <œ=À57Á836'85-îU9ð-î_h-î'-î8t-îD†-îz2-îµ8º:-î…2Z-î»8N-îÇ8Ù -îÍ8”+-óÝ9ð-ó_h-ó'-ó8t-óD†-óz2-óµ8º:-ó…2Z-ó»8N-óÇ8Ù -óÍ8,-øe:ð-ø_h-ø'-ø8t-øD†-øz2-øµ8º:-ø…2Z-ø»8N-øÇ8Ù -øÍ8é*-ýí:ð-ý_h-ý'-ý8t-ýD†-ýz2-ýµ8º:-ý…2Z-ý»8N-ýÇ8Ù -ýÍ8E+0-€;*ð-_*h-'*-8*t-D*†-z2*-µ8*º:-…2*Z-»8*N-Ç8*Ù -Í8Õ,0-<*ð-_*h-'*-8*t-D*†-z2*-µ8*º:-…2*Z-»8*N-Ç8*Ù -Í81è)-áV<*J-â D*3-ã œ2*ç/-ä B2*W>-å ¨21ï;-è™<*8)-é '*D0-ê 8*À=-ë ™<*J-ì ¨2r61þ?-ðÈ<*D-ñ È<*…%-ò k@)0-öó<*g-ök*g -ö_0-ú=*g-úk*g -ú_0-==*g-k*g -_0-5b=*g-5k*g -5_G1-: 2=Ä2=~&o=y00-_¶=*g-_k*g -__0-lÛ=*Å&-mÛ=*u9-n ( 4ì=,á=”&=ì= n<2> › <Ì1 6/< Ì1 ;0< í1n<ý=  (<&> R<' Ž !<( Ž 0<) z2 +<* z2 Y <+ Ž î€<-µ> w4<. Ì1 ˆ# >>Å> L 1<:ú> ™ <; Ž$end<< Ž Ë&?<›3?g<›kg <›_ º$h<«ê? ¯:<¬`@ œ<­@ ^<°Û@ l7<¸õ@ Ú<¹ A {?<º+A( Ô <¼VA0 ï<<¾zA8 ˆ<À£A@ ÷'<ÂÇAH W<Äõ@P ÿ7<ÆìAX ¬:<È/B`3?ê?>ú>g)<57 ó<¢5@ k2<¤ ÷ <¥5@Ž{-<¦ @2?`@Ä2€22G@2þ1@Ä2 ?___Žz2(2f@2_Õ@Ä2 ?z2Ñ__2Õ@;@£@2z2õ@Ä2 ?á@ AÄ2 ?û@+AÄ2 ? 2€2AKAÄ2 ? 2QAž%KA1A2þ1zAÄ2 ?QA 2\A2z2£AÄ2 ?€2€22€A2z2ÇAÄ2 ?QA2©A2(æAÄ2 ?æA0ÍA2?)BÄ2‹2y¢2ï??)B22¨2òA3P3@<á)E…:<ãeCL<ä 2š+<å 2 4cp<æºCŽ,<è 2þ<é ¨2È<ê)E 4me<ërD(] <ì /E0|<í 28<î í1< <ï í1>í1Ì13@<ô»E…:<öeCà<÷eCÅ,<ø$eCK <ù?4cp<úºC k=<ûºC$Ä<ü2(4B<ýrD0– <þ_83<ýE…:<eC65< þ1B/< þ1 4me<rD3 < @F…:< eCN< eCÁ<  z2m>< _3<YF4val< y38<ÞF…:<eCà<eC4me<rD4B<rD4cp<ºC B < ¨2$u < y(™!<" y,‹<# _03(<&JG…:<(eCM&<)eC4cp<*ºCk=<+ºC†<, _)5<- þ1 b<. þ1$3`<1H…:<3eC4c1<4 y4c2<4y 4cp<5ºCL<6 2š+<7 2¬.<8 þ1™!<9 þ1 B <: ¨2$4A<;rD(4B<;rD04me<<rD8•9<=H@ <>HN Ì1!H L 3hKL'('3Ž 3!1J U03"1J ¾3# 7J Ä3$ 7JÕ0È03_JÈ83 _JT3%eJ7JJqJ113M™J^13Mœ2—$3M=2»Jg2kg 2_2ÝJ„,2¢22u.2ÿJ3#2¢2v2…=2!K-2272™<2CK72‹=±2(*º zK==*»ôIsv*¼z2iv*½'uv*¾8q6*¿CK2¢2•KÄ2†KzK0*ÓK*Ÿ *¢2*9* ôI*à%*20* øK*™* ¢2*J(*  ôI è$0?1aL ÷?3 _ '?4 _ =5?6 ¤ ~:?7 ° Ï1?8 _ !?9 _ ö5?: _( Ø @*£L ò(@, _ å$@- _ %@. ° ”5@/ ÷31€AHM ¥)AMM%.AVM€%¦ A[M%l.Ab'M%1Aijÿ%`An8M jM6L j'M6Lÿ j8M6Lþ jIM6Lÿw È<HB+ÌM ŠB- _ I B. _ ÿB/‘ B0‘ § B1‘ B2‘( 2B4‘0 ŽB6‘8 ®>B8L@7PCh ’PqCj_? Ck ¦°Cq’PþCu_ßCv ¦ CyaL(\Cz_H}7C{ ¦P.C}˜PXC„V `{ Cˆ_€„C‰ ¦ˆ#CŒžPÃ3Cy˜9C“_ C” ¦¨&0C— °ñ,C›_ÈÍCœ ¦ÐQ)CŸ¤PØÍ-C¢yà›:C¦ë è'Ì;Cª_'âC« ¦'uC®ªP'ÚCµøK'åC¶_H'Y9C· ¦P' C¹°PX'¶CÀ¥ `'Ï&CÄ_€'-,CÅ ¦ˆ' ?CȶP'zCÏIM˜' CÐ_à'CÑ ¦è'?CÓ¼Pð''CÚÂPø'_CÛ ¦'CÝÂP'ù+CáÈP'æCâ ¦'´ CäÈP '#+Cì_('çCí ¦0'—-Cð_8'Ô=Cñ ¦@'b+Cô yH£LaLV  ë øK¥ IMfÆ!"CõÌM¢21&Q421'z2¨1( ¦ Ø+ RQ b<+!RQ 8+"Z ê +# yÐ â<+$ ¨2Ô ½+%í1ÖQ¬ +(Q+špQÎ.kdQB'(+'ÕQ +( ¢2›+* 7J4cv++ =©,+- þ1å;+. –2 H#(+3(R +4 ¢2›+6 7J4cv+7 =4gv+9 2É5+: 2 0+uŠR +v ¢2#+x z2é'+y ¢2@+z z24cv+{ = R1+|ŠR(XQ0+Œ´R5svp+ …25gv+Ž 23+’ÚR4ary+“ –24ix+” '3+–SÃ0+— þ14ix+˜ '3+š'S4cur+› '4end+œ '3+žNS4cur+Ÿ z24end+  z20+‘S5ary+•´R*- +™ÚR*È2+S* 8+¡'S=0+ŠâS+‹ âS²&+Rð++z2—1+¢NSF+¤ 7J( 1+ÄTü;+Å¢2Ö,+Æ z200+Ù_T*N+ÚQ*Ï4+ÛÕQ*L!+Ü(R*5+ÝS*å(+ÞèS__;X+ÿ8Uä7+ Ì1V+ Ì1„+ í1x + þ1@+ ޱ.+ Ž#+ _â+ z2 +/+  z2(G&+  _0A&+  _8Þ+  _@`+  (H0+?P0`+@]U*«"+A—(*\;+BeT§/0+ÚÜU* +Û –2+ÜÜUr+ÝâUÿ5+ÞâU‘+ß þ1 ­!+à þ1$J+á þ1(z+â þ1,m(]UX(+ç]U2yVÄ2z2È<õU22-VÄ2z2È<V2y[VÄ2z2È<z2Ëþ13V2yzVÄ2È<æAaVí- D ÄV$valD ¦5 ø D f ñD þ1 Þ D =è D†V `(DW ¼DW GD z2 M%D _ <D _ Œ D z2 ÐV»D ÐV=€D"ðZ D&ðZ 2D'¦5 (D(y D+y  D-y - D.öZ aD/öZ($psD0öZ0 W/D4 þ18 « D5 þ1< ¸ D6 _@ $!D7 _H ….D8 Ì1P q&D9 Ì1Q a"D; Ì1R Ð+D< ¨2S ÆD= þ1T …D> ¢2X Á1D? ¢2`  D@ z2h DA í1p ”%DB í1r  DC þ1t ãDD z2x “ DE þ1€ ÜDF þ1„ ¶!DG 8ˆ ~=DH 8 ?DI¨2˜ þDJ Ì1™ ÁDK í1š "'DL þ1œ È/DM ¢2  T-DN z2¨ DOüZ° JDP z2¸ P%DQ _À ´;DT _È ±;DU _Ð DV _Ø 9?DW _à rDX _è DY _ð "&D^ B2ø 50D_ í1ü &D` Ì1þ RDa Ì1ÿ%í*Db œ2% Dc Í8%â>Dd –2%èDf [%îDg [@%i8Dh Ì1T%þ%Di Ì1U%¼/Dj Ì1V%ÍDk Ì1W%3Dl _TX%‘Dm ¶`%=Dn B2`%})Do B2d%k5Dr'h%C?Ds'p%÷Dtjx%#Dv¨2y8X$DxEx8ãDyEx8gDzE x8à1D{E x%b&D}¨2{%ND~ Ì1|1WÄV%W ¦5[ L þ1"[ L=D1Wn/.[½:[Œ(~[·(Ä2q($~[Ï<($~[E[l(Q–[„[œ[2y«[Ä2(R¸[¾[Î[Ä2z2Ú(S–[®8(Uè[î[2¨2\Ä2z2(V\\ \Ä2 q+\, \I6(u+\¾7(w+\B(y+\Ã({+\ (}+\+(+\ (ƒ+\6(…+\Û(ˆ+\Ž+(Š+\¦0(Œ+\Þ(Ž+\ qÜ\ LÌ\](Ü\y!(’+\ì6(”+\m(–+\½'(˜+\r8(š+\Ð(œ+\Y*(ž+\’(¡+\ƒ (£+\f(¥+\:(ª+\N(¸ ×1n!(º ×1(¼ ×1 q´] L@¤]6(¿´]±(Å+\ qã] LÿÓ]Í(Úã]â(Ûã]3(Üþ4 €^,^¬3(Ý^é(‹ì=·6(Œì=÷(ì=š((Žì= -k^,Q(·`^§(ì= Ë^,¼9(…^(–+\9ý#E(¡è^/Ñ/š/X8/P?/Ÿ1/2./D$Q(¶þ4"<H(F_4pad(G_ ’%"_ LÐ#(P/_5_E_Ä2¢2Ù2(aR_X_2þ1q_Ä2€2€2ù$(f•KR(g‹_‘_2¢2¥_Ä2¢2T(h/_î)(i¿_Å_2yã_Ä2_kÛP&(l\^(s`4fn(t Ê24ptr(u (4(vð_u.þ1èUÕI¸I"[ _[` LÑy 'w` LË`2 (™` L z2©` L z2¹` L Ì1É` L §/œ2ÎPJ5Ã)( z2ý` L"A.( ù1 (ªù1õE’þ4z+E&þ4 q_;a,Û4EÅ0a ~_Sa,d EcHa$Eþ02 è1xa,ma¼%E xa ù1•a,Šaå-E •aÅE +\€ E xa ×1Ìa,Áaä.E Ìaß&F&`2YF(Ä2°F-m2ãF1¨2ú/F4¨2²)FK\5‰7FL\5Q"FX`2F[a`H=F\y 5F]y2$Fa'§-Fe`2&Ff`2FiíX F“`2×#F§`2>F©yî%F®y"-Få²_}/Fçœ2 Fè8þ Fë`2ÆFó’%]Fù¨2 -c LyFú c™.(4‘[Ø(6‘[.EG=d/À/&//%/ô/"/f /þ/µ0/~" /Œ* /“ /@> /\! /á,/¥7// /§(/š/Q7/ù*/ó1/])//‰/j</u./:*///#/H9 Ñd LdÖ6Gƒd ú-@d L0dG @d ×1ad LÿQdG(N ad ¯2~d,sdõ"(b~dÅ(c~d-(d~d1(e~dÏ((f~du5(g~d.EH¨f/Ï/ì8/C/¯/Î/>9/F8/ /J/<: /Œ$ /  /" /l /s/¾ / /@/i-/¨///“/k/ @/h-/§/./’/j//+/V+/Ñ$ /Ç!!/ñ/"/. #/œ*$/š%/Ã"&/Ý9'/„*(/" )/~9*/*+/&(,/3-/|./˜'//{0/—'1/<32/03/;34//5/M6/$7/L8/$9/á:/Õ';/Þ3/ ?/²@/>A/˜#B/'C/9D/ëE/ÂF/ô G/éH/a2I/š>J/°K0(ZËf5nv(ZD5u8(ZÐf¨f Ì1àf Lá)(ZËf0([g5nv([D5u8([Ðfíf@([g:w2 y € J< Í8 ÑTg L9Dg;4+I†Tg½}<Ç HÐ,E7œ•Ê=Ù HÄ2>cvH=A=?á My@axM þ1€zA(,M …2BspM …2ANM þ1CL;RË ›eŸDœ-\6-ÉE“.oœ2ÍÉEÛpz2F¤-¢íG¸-¯íˆhHT öeHQ1FÃ-¢íG×-¼í¹hHT fHQ1Fâ-¢íGô-ÉíëhHT}HQ °pFü-¢íG.ÖíiHT0F.¢íG&.ãíGiHTsHQ ]iHR}F..¢íG;.ÖíkiHT3FF.¢íG[.ãí£iHTsHQ fHR}Fc.¢íGp.ÖíÉiHT F{.¢íG.ãíjHTsHQ fHR}F˜.¢íG¥.Öí%jHT9F°.¢íGÅ.ãí]jHTsHQ %fHR}FÍ.¢íGÚ.ÖíjHT4Få.¢íGú.ãí¹jHTsHQ +fHR}F/¢íG/ÖíÝjHT5F/¢íG//ãíkHTsHQ 0fHR}F7/¢íGA/ðí9kHT0FL/¢íGa/ãíqkHTsHQ 5fHR}Fi/¢íGv/Öí•kHT:F/¢íG–/ãíÍkHTsHQ =fHR}Fž/¢íG«/ÖíñkHT>F¶/¢íGË/ãí)lHTsHQ CfHR}FÓ/¢íGà/ÖíMlHT6Fë/¢íG0ãí…lHTsHQ JfHR}F0¢íG0Öí«lHT F 0¢íG50ãíãlHTsHQ OfHR}F=0¢íGJ0ÖímHT;FU0¢íGj0ãí?mHTsHQ WfHR}Fr0¢íG0ÖícmHT7FŠ0¢íGŸ0ãí›mHTsHQ ]fHR}F§0¢íG±0ðí¿mHT0F¼0¢íGÑ0ãí÷mHTsHQ bfHR}FÙ0¢íGæ0ÖínHT?Fñ0¢íG1ãíSnHTsHQ jfHR}F1¢íG1ÖíynHT F&1¢íG;1ãí±nHTsHQ qfHR}FC1¢íGP1ÖíÕnHT<F[1¢íGp1ãí oHTsHQ yfHR}Fx1¢íG…1Öí1oHT1F1¢íG¥1ãíioHTsHQ fHR}F­1¢íGº1ÖíoHT FÅ1¢íGÚ1ãíÇoHTsHQ ƒfHR}Fâ1¢íGï1ÖíëoHT8Fú1¢íG2ãí#pHTsHQ ŠfHR}F2¢íG$2ÖíGpHT2F/2¢íGD2ãípHTsHQ fHR}FL2¢íGV2ðí£pHT0Fa2¢íGv2ãíÛpHTsHQ “fHR}F~2¢íG‹2ÖíÿpHT=F–2¢íG«2ãí7qHTsHQ šfHR}F³2¢íGÀ2Öí[qHT2FË2¢íGà2ãí“qHTsHQ  fHR}Fè2¢íGò2Öí·qHT0Fý2¢íG3ãíïqHTsHQ §fHR}F3¢íG'3ÖírHT F23¢íGG3ãíMrHTsHQ «fHR}FO3¢íG\3ÖísrHT Fg3¢íG|3ãí«rHTsHQ ¯fHR}F„3¢íG‘3ÖíÑrHT Fœ3¢íG±3ãí sHTsHQ µfHR}F¹3¢íGÃ3ðí-sHT0FÎ3¢íGã3ãíesHTsHQ »fHR}Fë3¢íGõ3Öí‰sHT0F4¢íG4ãíÁsHTsHQ wjHR}F4¢íG'4ðíåsHT0F24¢íGG4ãítHTsHQ ÄfHR}FO4¢íGY4ðíAtHT0Fd4¢íGy4ãíytHTsHQ ÏfHR}F4¢íGŽ4ÖítHTIF™4¢íG®4ãíÕtHTsHQ ÔfHR}F¶4¢íGÃ4ÖíùtHT4FÎ4¢íGã4ãí1uHTsHQ ¼lHR}Fë4¢íGõ4ÖíUuHT0F5¢íG5ãíuHTsHQ ÂlHR}F5¢íG'5ðí±uHT0F25¢íGG5ãíéuHTsHQ ÛfHR}FO5¢íG\5Öí vHT4Fg5¢íG|5ãíEvHTsHQ áfHR}F„5¢íG‘5ÖíjvHTFœ5¢íG±5ãí¢vHTsHQ æfHR}F¹5¢íGÃ5ðíÆvHT0FÎ5¢íGã5ãíþvHTsHQ ífHR}Fë5¢íGø5Öí"wHT?F6¢íG6ãíZwHTsHQ šjHR}F 6¢íG-6Öí‚wHT F86¢íGM6ãíºwHTsHQ òfHR}FU6¢íG_6ðíÞwHT0Fj6¢íG6ãíxHTsHQ ùfHR}F‡6¢íG”6Öí:xHT3FŸ6¢íG´6ãírxHTsHQ gHR}F¼6¢íGÉ6Öí–xHTEFÔ6¢íGé6ãíÎxHTsHQ  gHR}Fñ6¢íGþ6ÖíòxHTFF 7¢íG7ãí*yHTsHQ gHR}F&7¢íG37ÖíPyHT F>7¢íGS7ãíˆyHTsHQ gHR}F[7¢íGe7ðí¬yHT0Fp7¢íG…7ãíäyHTsHQ gHR}F7¢íG—7ðízHT0F¢7¢íG·7ãí@zHTsHQ %gHR}F¿7¢íGÌ7ÖídzHTLF×7¢íGì7ãíœzHTsHQ *gHR}Fô7¢íGþ7ÖíÀzHT0F 8¢íG8ãíøzHTsHQ 0gHR}F&8¢íG38Öí{HT F>8¢íGS8ãíV{HTsHQ 4gHR}F[8¢íGh8Öí|{HT Fs8¢íGˆ8ãí´{HTsHQ 8gHR}F8¢íG8ÖíÚ{HT F¨8¢íG½8ãí|HTsHQ <¢íGH<ðí[‚HT0FS<¢íGh<ãí“‚HTsHQ ¡gHR}Fp<¢íGz<ðí·‚HT0F…<¢íGš<ãíï‚HTsHQ ¯hHR}F¢<¢íG¬<ðíƒHT0F·<¢íGÌ<ãíKƒHTsHQ ©gHR}FÔ<¢íGÞ<ðíoƒHT0Fé<¢íGþ<ãí§ƒHTsHQ ²gHR}F=¢íG=ðí˃HT0F=¢íG0=ãí„HTsHQ »gHR}F8=¢íGE=Öí'„HT8FP=¢íGe=ãí_„HTsHQ ˆlHR}Fm=¢íGz=Öí…„HT F…=¢íGš=ãí½„HTsHQ ÃgHR}F¢=¢íG¯=Öíá„HT@Fº=¢íGÏ=ãí…HTsHQ ËgHR}F×=¢íGä=Öí>…HT Fï=¢íG>ãív…HTsHQ ÑgHR}F >¢íG>Ö휅HT F$>¢íG9>ãíÔ…HTsHQ ×gHR}FA>¢íGN>Öíù…HT@FY>¢íGn>ãí1†HTsHQ ÞgHR}Fv>¢íGƒ>ÖíW†HT FŽ>¢íG£>ãí†HTsHQ ågHR}F«>¢íG¸>Öí³†HT>FÃ>¢íGØ>ãíë†HTsHQ ígHR}Fà>¢íGí>Öí‡HT?Fø>¢íG ?ãíG‡HTsHQ ògHR}F?¢íG?Öík‡HT0F*?¢íG??ãí£‡HTsHQ ÷gHR}FG?¢íGT?ÖíɇHT €F_?¢íGt?ãíˆHTsHQ ûgHR}F|?¢íG‰?Öí'ˆHT €F”?¢íG©?ãí_ˆHTsHQ ÿgHR}F±?¢íG»?ð탈HT0FÆ?¢íGÛ?ãí»ˆHTsHQ hHR}Fã?¢íGð?ÖíáˆHT Fû?¢íG@ãí‰HTsHQ hHR}F@¢íG%@Öí?‰HT F0@¢íGE@ãíw‰HTsHQ hHR}FM@¢íGZ@Ö훉HT2Fe@¢íGz@ãíÓ‰HTsHQ hHR}F‚@¢íG@Öíù‰HT Fš@¢íG¯@ãí1ŠHTsHQ "hHR}F·@¢íGÄ@ÖíWŠHT €FÏ@¢íGä@ãíŠHTsHQ (hHR}Fì@¢íGù@Öí³ŠHT1FA¢íGAãíëŠHTsHQ /hHR}F!A¢íG.AÖí‹HT€F9A¢íGNAãíH‹HTsHQ 6hHR}FVA¢íGcAÖíl‹HT4FnA¢íGƒAãí¤‹HTsHQ iHR}FªI¢íG·IÖíCšHT @FÂI¢íG×Iãí{šHTsHQ EiHR}FßI¢íGéIðퟚHT0FôI¢íG JãíךHTsHQ LiHR}FJ¢íGJðíûšHT0F&J¢íG;Jãí3›HTsHQ SiHR}FCJ¢íGMJÖíW›HT0FXJ¢íGmJãí›HTsHQ [iHR}FuJ¢íG‚JÖíµ›HT FJ¢íG¢Jãíí›HTsHQ `iHR}FªJ¢íG·JÖíœHT FÂJ¢íG×JãíKœHTsHQ eiHR}FßJ¢íGìJÖíqœHT F÷J¢íG Kãí©œHTsHQ jiHR}FK¢íG!KÖíÏœHT F,K¢íGAKãíHTsHQ oiHR}FIK¢íGSKðí+HT0F^K¢íGsKãícHTsHQ viHR}F{K¢íGˆKÖí‰HT TF“K¢íG¨KãíÁHTsHQ }iHR}F°K¢íG½KÖíçHT TFÈK¢íGÝKãížHTsHQ „iHR}FåK¢íGòKÖíEžHT TFýK¢íGLãí}žHTsHQ ‹iHR}FL¢íG$LÖí¡žHT0F/L¢íGDLãíÙžHTsHQ ’iHR}FLL¢íGYLÖíýžHT2FdL¢íGyLãí5ŸHTsHQ ›iHR}FL¢íGŽLÖíYŸHT2F™L¢íG®Lã푟HTsHQ ¢iHR}F¶L¢íGÃLÖíµŸHT3FÎL¢íGãLãííŸHTsHQ ¬iHR}FëL¢íGøLÖí HT1FM¢íGMãíI HTsHQ ²iHR}F M¢íG*MÖím HT0F5M¢íGJMãí¥ HTsHQ »iHR}FRM¢íG_MÖíÉ HT1FjM¢íGMãí¡HTsHQ ÂiHR}F‡M¢íG”MÖí%¡HT1FŸM¢íG´Mãí]¡HTsHQ ÈiHR}F¼M¢íGÉMÖí¡HT2FÔM¢íGéMãí¹¡HTsHQ ÒiHR}FñM¢íGûMÖíÝ¡HT0FN¢íGNãí¢HTsHQ ÜiHR}F#N¢íG0NÖí;¢HT TF;N¢íGPNãís¢HTsHQ äiHR}FXN¢íGeNÖ홢HT TFpN¢íG…NãíÑ¢HTsHQ ëiHR}FN¢íGšNÖí÷¢HT TF¥N¢íGºNãí/£HTsHQ òiHR}FÂN¢íGÏNÖíU£HT TFÚN¢íGïNãí£HTsHQ úiHR}F÷N¢íGOðí±£HT0F O¢íG!Oãíé£HTsHQ jHR}F)O¢íG6OÖí¤HT TFAO¢íGVOãíG¤HTsHQ  jHR}F^O¢íGkOÖím¤HT TFvO¢íG‹Oãí¥¤HTsHQ jHR}F“O¢íG OÖíˤHT TF«O¢íGÀOãí¥HTsHQ jHR}FÈO¢íGÕOÖí)¥HT TFàO¢íGõOãía¥HTsHQ #jHR}FýO¢íGPðí…¥HT0FP¢íG'Pãí½¥HTsHQ *jHR}F/P¢íG9Pðíá¥HT0FDP¢íGYPãí¦HTsHQ 3jHR}FaP¢íGkPðí=¦HT0FvP¢íG‹Pãíu¦HTsHQ ¿HT0Fd^¢íGy^ãív¿HTsHQ »lHR}F^¢íG‹^ðíš¿HT0F–^¢íG«^ãíÒ¿HTsHQ ÁlHR}F³^¢íGÀ^Öíö¿HT=FË^¢íGà^ãí.ÀHTsHQ ÇlHR}Fè^¢íGò^ðíRÀHT0Fý^¢íG_ãíŠÀHTsHQ ÐlHR}F_¢íG'_Öí®ÀHT4F2_¢íGG_ãíæÀHTsHQ ×lHR}FO_¢íG\_Öí ÁHT;Fg_¢íG|_ãíBÁHTsHQ ÜlHR}F„_¢íG‘_ÖífÁHT@Fœ_¢íG±_ãížÁHTsHQ álHR}F¹_¢íGÆ_ÖíÂÁHT2FÑ_¢íGæ_ãíúÁHTsHQ çlHR}Fî_¢íGø_ÖíÂHT0F`¢íG`ãíVÂHTsHQ îlHR}F `¢íG-`ÖízÂHT3F8`¢íGM`ãí²ÂHTsHQ ôlHR}FU`¢íGb`ÖíÖÂHT?Fm`¢íG‚`ãíÃHTsHQ úlHR}FŠ`¢íG—`Öí2ÃHT6F¢`¢íG·`ãíjÃHTsHQ mHR}F¿`¢íGÌ`ÖíŽÃHT1F×`¢íGì`ãíÆÃHTsHQ mHR}Fô`¢íGaÖíêÃHT<F a¢íG!aãí"ÄHTsHQ  mHR}F)a¢íG6aÖíFÄHT8FAa¢íGVaãí~ÄHTsHQ mHR}F^a¢íGkaÖí¢ÄHT9Fva¢íG‹aãíÚÄHTsHQ mHR}F“a¢íG aÖíþÄHT:F«a¢íGÀaãí6ÅHTsHQ "mHR}FÈa¢íGÒaðíZÅHT0FÝa¢íGòaãí’ÅHTsHQ (mHR}Fúa¢íGbÖí¶ÅHT0Fb¢íG$bãíîÅHTsHQ /mHR}F,b¢íG9bÖíÆHT @FDb¢íGYbãíLÆHTsHQ 3mHR}Fab¢íGnbÖírÆHT @Fyb¢íGŽbãíªÆHTsHQ 7mHR}F–b¢íG£bÖíÎÆHT5F®b¢íGÃbãíÇHTsHQ =mHR}FËb¢íGØbÖí*ÇHT>Fãb¢íGøbãíbÇHTsHQ CmHR}Fc¢íG cðí†ÇHT0Fc¢íG*cãí¾ÇHTsHQ KmHR}F2c¢íG?cÖíâÇHT4FJc¢íG_cãíÈHTsHQ PmHR}Fgc¢íGqcðí>ÈHT0F|c¢íG‘cãívÈHTsHQ VmHR}F™c¢íG£cðíšÈHT0F®c¢íGÃcãíÒÈHTsHQ ]mHR}FËc¢íGØcÖíøÈHT Fãc¢íIøcãíHTsHQ dmHR}Fí,¢íG-ýí|ÉHU çà HQ ›eHR “eHX ŽeF-¢íF$-¢íF,-¢íGB- îÏÉHT ¡eHQ P#FJ-¢íG`- îÊHT ·eHQ Fh-¢íG~- îAÊHT ÈeHQ `F†-¢íGœ- îzÊHT ÞeHQ PFd¢íJdîK{'Pœ»Í=Ù 'Ä2A=>cv'=‚z?á )y@sp) …2éá@ax) þ1SGE(,) …2ÝÙEN) þ10.L0IÍE7 /z2lfBws`$F¾¢íFü¢íF¢íG$Öí©ËHT| ÿÿF.¢íG9$îÎËHT}FD¢íGVÖíùËHT|@% ÿÿF`¢íGk$îÌHT}Fv¢íGˆÖíJÌHT | % ÿÿF’¢íG$îoÌHT}F¨¢íG·Öí—ÌHT|0%FÁ¢íGÌ$î¼ÌHT|F×¢íFí¢íGÿ1îøÌHT|HQ0HR2F¢íG*>î(ÍHTvHQvHR4ITKîHU pmHQ8Míäw) rÍNþä·µFm¢íFw¢íF¢íIAXîHU~HT ÖeK' ú`,œDÑ=Ù úÄ2ÞÚ>cvú=%?á üy@spü …2ÅÃ@axü þ1ôèE(,ü …2€zENü þ1ìäLÀ€Ð@rowyNH@colyŸ—Eò$yûAù8yE¼"z2kcOwsR$‘°FߢíF ¢íF¢íG,eî ÏHT~HQ2F=¢íF_¢íFn¢íG~eîdÏHT~HQ2F«¢íG½rîÏHT‘°HQ8FÇ¢íGÒ$î´ÏHTvFÜ¢íF%¢íFE¢íFh¢íF–¢íF¯¢íGÁeî!ÐHT‘¨HQ2FÛ¢íF¢íF¢íG#eîeÐHTvHQ2F5¢íFW¢íDäÅÐE1"3ËÇFë¢íFö¢íMíäü îÐNþäF“¢íF¢íF³¢íFvîI…XîHU~HT °mK^Ü–œöÓ=Ù ÜÄ2,(>cvÜ=me?á Þy@spÞ …2ÒÌ@axÞ þ1%  E(,Þ …2ž š ENÞ þ1ñ ï L0?ÓEØâ8g+ ' E¼"ä _e a EÜ å€2¢ œ Fó¢íF ¢íGˆîeÒHTvF ¢íF5¢íF=•îFP¢íG[¢î±ÒHT|Fb¯îFl¢íGzÉíéÒHTvHQ|F¢íFÅ¢íFТíFë¼îF¢íIÈîHTvD•„ÓE1õ3í ë Fœ¢íF§¢íMíä·Þ ­ÓNþä  F­¢íF·¢íFÍ¢íI&XîHU}HT (dK‘´P#s œÌâ=Ù ´Ä2: 6 >cv´=} s ?á ¶y@sp¶ …2 ò @ax¶ þ1Ä ¾ E(,¶ …2  EN¶ þ1t f L€IâC:y‘¨|C$; y‘¬|@rety CÃ2 ¶‘°}EÈ." z2m_MÌâ($Ð+ àNãNøâ²¢Nëât`NÞâhTM å5&Pð­ÕN(åDBNårpIU&ÕîHU «dHT1HQIPã€øÖQãž–Q$ãúM å€+Ð/ÖN(å`^N厌I +ÕîHU ØdHT1HQDGè&?çFÖHU0G'àîvÖHUwHT‘ˆ|HQ0HR0HX0G '?çŽÖHU}F4'¢íGá+8èÂÖHUwHT‘ˆ|HQsF,¼îF$,ìîI5,ùîHU ÈoR¾äO'O'+ \×Nßä´²NÓäÜÚIb'ïHU eHT P2ãsÞS3ã‘°|S@ã‘ð|QMãQXãtnQeãÞØQrãHBQã—M6åþ'PÕ-ØNSåñïNGåI&(ïHU}HT1HQ@HR &eHXHY‘”|”R6å&(&(#تØNSåDBNGårpII(ïHU~HT1HQ@HR 3eHXHY‘”|”R¾äb(b(ß ÙNßä—•NÓ俽Iq(ïHU}HT R6å’(’(ä{ÙNSåäâNGåI°(ïHU}HT1HQ@HR @eHX|R6å°(°(åïÙNSå75NGåecIÎ(ïHU~HT1HQ@HR LeHX|R¾äç(ç(ê LÚNß䊈NÓä²°Iö(ïHU}HT R6å))#ïÉÚNSå×ÕNGåI:)ïHU}HT1HQ@HR XeHXHY‘”|”R6å:):)#òFÛNSå*(NGåXVI])ïHU~HT1HQ@HR eeHXHY‘”|”R¾äv)v)ù £ÛNßä}{NÓ䥣I…)ïHU}HT R6å¦)¦)þÜNSåÊÈNGåøöIÄ)ïHU}HT1HQ@HR reHX|R6åÄ)Ä)ÿ‹ÜNSåNGåKIIâ)ïHU~HT1HQ@HR €eHX|R¾äû)û) èÜNßäpnNÓ䘖I *ïHU}HT M åø*€ÒCÝN(å½»NåëéI+ÕîHU  eHT1HQIGV(áæaÝHUsHT~GŠ(8èˆÝHUwHT‘ˆ|HQsGÛ(áæ¦ÝHUsHT~G)8èÍÝHUwHT‘ˆ|HQsGj)áæëÝHUsHT~Gž)8èÞHUwHT‘ˆ|HQsGï)áæ0ÞHUsHT~G'*8èWÞHUwHT‘ˆ|HQsIv+ùîHU (pM åp*°ýÎÞN(åNå?=I*ÕîHU ÅdHT1HQBM åð+à()ßN(åecNå“‘I,ÕîHU ídHT1HQDGZ$ïBßHU G„$8èißHUwHT‘ˆ|HQsF{&¢íF&*ïG¶&8èªßHUwHT‘ˆ|HQsFÆ&¢íG{'8èÞßHUwHT‘ˆ|HQsF‹'¢íF•**ïFµ*¼îF¼*ìîGÍ*ùî1àHU poF%+¼îF,+ìîG=+ùîjàHU øoF­+¼îF´+ìîIÅ+ùîHU  oFÖ#¢íGç#¼íÑàHT œdHQ0F¶$¢íFÖ$¢íGá$ÖíáHT|Fì$¢íG÷$$î(áHT|F %¢íG%ÖíMáHT|F#%¢íF1%$îFt%¢íG…%7ï’áHTsHQ|F%¢íG %$î·áHT|Fµ%¢íFH,¢íGU,DïîáHTsHQ0Fp,¢íG€,DïâHTsHQ2F,¢íI¥,>îHT‘˜|HQ‘˜|HR3Míäš#P¶ râNþä¹·FŠ#¢íFš#¢íF±#¢íG¾,Xî¾âHUsHT …dFÃ,îT%$¿yŽãU:¿a`U$;¿a`Uu7¿,_U÷0¿9yV2ãAH4 egBret  yWBbufÈ ŽãA99É ŽãBiÊ yAî:ËËA¡ÌËA¦Í yA‹5Î y jžã L?XÃúyäY:úa`Y$;úa`Yu7ú*_Y÷0ú7yVòãAH4 egWAÃ21 _Zú(á)ä[fdáa`W;Ëä y\q*¾¦}ä[dst¿_[srcÀË[sizÁ¦]dÃ_]sÄË]nŦXÌ*€eg¾ä[sig€y[act€eg]saƒf]osaƒf^¼!)}yíäY† )ËY#7)y_XÑþ1 åYÙ  Ä2`by6åYÄ-bÊ4YHb<Ö_`T"yaå[__s"eYH"Ö_`ï;(—åY;/;(YÝ;yYH;¦`(ÍåY;/*Y«äYH¦`M@yæYf@yY@_Y4@¦aä0|œáæNäæÜL`xæQäc[GYQï]æHT0HQ3Ff]ïF~¢íb䇰áNäÿc+æ°däFŒ¼îF“ìîe¬ùîHU Øma)ä°Rœ?çN:äüfFäTQ^ä;9Qhäb^Qrä ˜gRäa}侜8èNšäS¦ä‘ }S±ä‘À~hŽäiaåRRˆÍçNŠå–”N~å½»NråãáGCjïðçHUAHT0HQ‘À~GkvïèHUwG‰jï*èHUAHTwHQ0FÎîažãÐzœ¢íN¯ãN»ã¦šNÇã:.gÓãPßã=êQäãÎÂM å!PöèN(åR P Nå€ ~ I !ÕîHU DdHT1HQEM åp!€QéN(å¦ ¤ NåÔ Ò I!ÕîHU /dHT1HQDGê?çhéHU0F ‚ïF! ïG1 ?çšéHU}F'!ïF=!¢íFO!¼îFV!ìîGg!ùîíéHU `nF—!‚ïF­!¢íF¿!¼îFÆ!ìîI×!ùîHU (nRÍåE E (§êNöåú ø Nêå"! !NÞåG!E!IT œïHTvHQ Pòã°¶ëQóãs!k!M å"ð4ëN(åÑ!Ï!Nåÿ!ý!I("ÕîHU qdHT1HQDFw ¨ïG áæGëHUvHTtF/"¨ïFF"¢íFX"¼îF_"ìîGp"ùîšëHU oI#ùîHU ÐnR¾ä¾ ¾ uìNßä%"#"NÓäM"K"IÍ ïHUvHT M åà! &nìN(år"p"Nå "ž"I"ÕîHU ZdHT1HQFR å¸"¸"(rÖìN(åÆ"Ä"Nåö"ò"IØ"µïHT1HQ †dHRvGá äîìHUsGé äíHU|F†"¢íF˜"¼îFŸ"ìîG°"ùîLíHU ˜nFî"¢íFþ"]ïF-#¼îF4#ìîIH#ùîHU 8oHTvjFFJ`juuK{jl l KÑj""Kñ j  KújKXj–2–2KâjååK®j++K/ j  K­j0>0>K j4848K› j_$_$Kn jÃÃKôj99Kbj‚<‚<KŒ jK kþ=þ=j«6«6K„ jw(w(Kz j{{K½jiilbb"% jŽŽKÛmª# #NlL$ j««Mjy y K1l}à  mÀ¶NjÕ!Õ!OÅ jm m Oá jK j[,[,K~ lX ˆ)P² j„=„=a lS S ð lL L Ä jà à OÍ j||OÑ lMñ6 j*6*6OÖl¦<¦<X % $ > &I: ; 9 I$ >  7I I  : ; 9  : ; 9 I8 I !I/  : ; 9  : ; 9  : ; 9 I< : ; 9  : ; 9 I'I'4: ;9 I?<&4: ; 9 I?< : ;9 I8  : ;9  : ; 9 : ; 9 I: ;9 I: ;9 I : ; 9  : ; 9 I 8 ! : ;9 " : ;9 I 8 # : ;9 $ : ; 9 I8 % : ; 9 I8& : ; 9 I8' : ;9 I8( : ;9 I8) : ;9 * : ;9 I+5I,!-: ; 9 .> I: ; 9 /( 0 : ;9 1 : ;9 2'I3 : ;9 4 : ;9 I8 5 : ;9 I6!I/7 : ;9 8 : ; 9 I 89> I: ;9 :4: ; 9 I;4: ; 9 I<.?: ;9 '@—B=: ;9 I·B>: ;9 I·B?.?: ;9 'I<@4: ;9 I·BA4: ;9 IB4: ;9 IC4: ;9 ID E4: ;9 I·BF‰‚1G‰‚1HŠ‚‘BI‰‚1J‰‚•B1K.: ;9 '@—BL UM1R¸BUX YW N1·BO4: ;9 IP 1UQ41·BR1R¸BX YW S41T.: ;9 'I U: ;9 IV W X.: ; 9 'I Y: ; 9 IZ.: ; 9 ' [: ; 9 I\.: ; 9 I ]4: ; 9 I^.?: ; 9 n'I 4_`.?: ; 9 'I 4a.1@—Bb1R¸BUX Y W c 1Ud41e‰‚•B1f1g1h1 i1R¸BX Y W j.?<n: ;9 k.?<nl.?<n: ; 9 m.?<n: ; !Šû /usr/lib64/perl5/CORE/usr/include/bits/usr/include/sys/usr/include/bits/types/usr/lib/gcc/x86_64-redhat-linux/8/include/usr/include/usr/include/netinetTty.cinline.hTty.xsstring_fortified.hstdlib.hfcntl2.hstdio2.hxssubs.ctypes.htypes.htime_t.hstddef.h__sigset_t.hstruct_timespec.hthread-shared-types.hpthreadtypes.hstdint-uintn.h__locale_t.hlocale_t.hsetjmp.hsetjmp.h__sigval_t.hsiginfo_t.hsignal.hsigaction.hunistd.hgetopt_core.hsockaddr.hsocket.hin.hstat.htime.htime.herrno.hnetdb.hnetdb.hioctl-types.hdirent.hdirent.hperl.hmath.hop.hcop.hintrpvar.hsv.hgv.hmg.hav.hhv.hcv.hpad.hhandy.hstruct_FILE.hFILE.hstdio.hsys_errlist.hperlio.hiperlsys.hperly.hregexp.hutf8.hutil.hpwd.hgrp.hcrypt.hshadow.hreentr.hparser.hopcode.hperlvars.hmg_vtable.hoverload.hpatchlevel.hpthread.hproto.hpty.hstring.hstdlib.hfcntl.h P§K  ­XXäxX# • ëx.J ‚< •X tJŸ•tL<X±~‚‚¡fX½yÄ<X1GXX­-Kò­-Kò­-KÈÕ¬«~.ÕJ«~XÖ<‚£~f(ºXŸ~ä˜Ö Ksó .XX‘yX# è ˜y.J ‚< èXtJ<K<“f ä¬ (>.Ê~ Vg gY Çf¹~.Ç< X­ -=X„Ⱥ¬J.]  òô <L.“#¬02.ËJX<Jòtfäy"J³ò[Xä_¬K  ­XX¯yX# Ê ¶y.J ‚< ÊX JJ<K“fW½# us/ X#‹+J.ê"XŠ äñ N  ¢žX*X‚ ÉÉÉŒ~È  ­ ;= XŽy< ò<Žy<X!t‘555552555555255555552552555222255225525525555225255555552225555555525222225555555552552555555555555555552222222292222525555555555525255522255552555255552555255552555522222922525522522555522222225555555555555555552552252222525252529222225225255552555555552255552522ñ5„H>><,XIlaststatvallong long intold_parserPL_locale_mutexblku_oldsaveixIorigargcIorigargvsi_errnokeeper__pad0tbl_arena_next_spent_sizeIin_utf8_CTYPE_localeptyminorsstrerrorhostentls_prevclose_parenPL_no_localize_reflex_stuffIlast_swash_hvxpvgv_readdir_ptrIstatcache_freeres_bufIcompilingIdbargsnew_perlblku_oldspsub_error_countxpvhvPERL_CONTEXT_asctime_bufferInumeric_standardsigngamprevcomppadIe_scriptsv_u_servent_structPL_sv_placeholderIpreambleavIDBcontrolmemsetxpvioxpvivtbl_maxsi_tidImy_cxt_sizeblku_old_tmpsfloorImain_rootxcv_outsideblku_type_PerlIO__localeshe_valuIutf8_totitle_spent_structnamed_buffwant_vtbl_hintselemPL_freqh_lengthop_firstIdoswitches_netent_sizethrhook_proc_tnext_branchPL_op_namePerl_newCONSTSUBblock_evals_port__in6_uPL_no_wrongrefin_port_tgp_refcntprev_markIdef_layerlistsaw_infix_sigilIrestartjmpenvsave_lastlocIwarn_locale_spent_bufferIcolorsmg_objje_old_delaymagicfallback_amgmulti_endPerlIO_list_sPerlIO_list_tCOPHHscream_posIargvgvdespatch_signals_proc_trshift_ass_amggetdate_errxio_flagsIsharehookold_regmatch_statexcv_xsubnextwordIminus_EXS_IO__Pty_pty_allocatesa_restorerIcheckavpad_1pad_2ImarkstackxpvnvconfigPL_bitcountIdump_re_max_lenxcv_flagsPL_warn_nlIstatusvalueIDBsingleutf8_substr__u6_addr8PL_warn_nosemipmopst_atimsival_intIlast_in_gvIreg_curpmshare_proc_tIhash_rand_bits_enabled_call_addrlong doubleop_privatelex_formbrackSVt_LAST__chsbu_dstrIrunopsIpsig_pend_ctime_bufferIcomppad_namePL_magic_vtablesImarkstack_maxptyfdsbu_iterssi_type_IO_wide_datainternalIreentrant_retintXS_IO__Tty_unpack_winsizeINonL1NonFinalFold__spinsmax_amg_codemysig_t__blkcnt_tPTR_TBL_txhv_max_protoent_size__ptsname_r_alias__bufPL_no_symrefIin_clean_objshent_hek_grent_ptr_getlogin_bufferxivu_eval_seenPL_curinterp__fd__locale_dataPL_hash_seedpos_flagsIstack_baseexecImax_intro_pendingposcacheop_pmstashstartuto_gv_amggroupsbu_strendsmart_amgre_scream_pos_data_scop_stashoffs_addrst_sizePL_opargssge_amgpthread_key_tIperldblastparensi_addr_lsbIinplace__locale_t_pkeyunlockptIDBlinewant_vtbl_nkeysPL_bincompat_optionssin_amgIsv_arenarootjumpPL_uudmapgp_egvnewvalpadnamestatesxio_bottom_gv_unused2Iphaseyylensubbegcos_amgXS_IO__Tty_pack_winsize_asctime_sizeIblockhooksend_shift__nusersPerl_get_svsbu_oldsaveix__path_pwent_ptrIosnamen_addrtypelex_casemodslex_brackstackboot_IO__Ttynumbered_buff_STOREIefloatsizePADLISTIpeeppPADNAMEIregex_padretopprogram_invocation_namexcv_padlist_uminmodsp_pwdpIutf8_foldclosuresPL_checkIsv_yesparenfloorPL_op_private_bitfieldssa_flagsbranchlikeJMPENVImain_startqr_anoncvIstashpad_archmy_perlPerl___notusedIenvgvIperlioIpadname_constPerl_xs_boot_epilogpow_ass_amgmult_ass_amgIregmatch_stateprev_rexstderrIisarevIutf8localeIsignalhook__ownerPL_Noop_optc2_utf8__ino64_tsa_family_tsockaddr_inarp__pthread_list_tsubcoffsetsvu_fpgrantptyy_stack_frameIdebstashtopwordwant_vtbl_ovrldreg_substr_datumsi_stackxpadl_maxInomemok__uint8_tsa_sigactionfirstposwant_vtbl_debugvarPerl_warn_nocontextIdiehookprev_recurse_locinputany_ptr_readdir64_ptr__open_aliasCLONE_PARAMSIcompcv_vtable_offsetconcat_ass_amglex_repltimespecPL_interp_size_5_18_0PerlInterpreterxpadnl_max_namedsigemptysetPL_check_mutexxpvlenu_pvILatin1st_nlinkIminus_Fre_eval_strIscopestack_ixsp_maxIscopestack_maxiter_amgIminus_aany_pvpIminus_cIminus_lIminus_nIminus_pIargvout_stackPL_op_seqIinitavPerl_newSVpvnPerl_newXS_deffilesin6_familytbl_itemsPerl_ophook_tcache_maskPL_no_dir_funcfirstcharsImaxsysfdIlocalizinglex_sharedservent_crypt_struct_bufferPL_op_private_labelsrxfreencmp_amg_IO_save_endpw_namesp_lstchgcurly_getlogin_sizenomethod_amgadd_amgPL_sig_nameIunicode__fmtblku_subqr_package__errno_locationneg_amgPerl_PerlIO_filenoPerl_mg_setIrestartop__timezonePL_thr_keygofs__mask_was_savedPERL_PHASE_CONSTRUCTIlastgotoprobecop_lineIsecondgv__locale_structsa_handlerwant_vtbl_vecinitializedXPVAVto_av_amgptsname_rSTRLENexitlistentryabs_amgop_ppaddrxpadnl_allocIcheckav_saveIdebug_pad_IO_backup_base__jmp_buf_tagconcat_amglex_flagsIendavblku_oldscopespIutf8_idcontIcomppad_name_fillmy_opIHasMultiCharFoldglobhook_ttmpXSoffXPVCVGNU C17 8.4.1 20200928 (Red Hat 8.4.1-1) -m64 -mtune=generic -march=x86-64 -g -g -O2 -fexceptions -fstack-protector-strong -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection=full -fwrapv -fno-strict-aliasing -fPIC -fplugin=annobinPL_sh_path_sys_errlistmin_offsetPL_hash_seed_setregnodestdinIperl_destruct_levelsi_cxixmg_virtualpadnamelistoptoptinterpreterPL_warn_reservedPMOPIstashpadixPerl_xs_handshakest_uidlongfoldsp_min_IO_read_endxcv_xsubanyPADOFFSETPL_valid_types_RVIstatbufsbxor_amgsbu_rflagsxpv_curxpadn_flagsIstderrgvxio_page_lenperl_memory_debug_header_IO_save_baseIin_clean_allmark_nameop_flagsold_regmatch_slab__ino_treg_substr_datalex_super_state_grent_structxcv_root_ucurlymsettingPL_uuemapPL_nanPL_magic_dataIcustom_op_descsPL_hexdigitsi_prevXPVGV_addr_bndsp_namp_IO_write_endlex_startsIsavestack__builtin___sprintf_chksi_codeImodcountprev_curlyxIsortstashPL_mod_latin1_ucIstdingvsvt_localsp_warnIcustom_opssbor_ass_amgCHECKPOINTXPVHVany_avsprintf_grent_buffersne_amglast_uni_IO_buf_baseXPVIOsp_expireXPVIV__uint16_tminlenretIofsgvIdelaymagic_gidxcv_gv_uIcollxfrm_multtbl_arena_endIsavestack_ixwant_vtbl_defelemPL_C_locale_objsockaddr_x25SVt_PVAVsin6_flowinfoxmg_magicsvu_gpany_dptrintuitIbody_rootssi_sigvalhek_lenIcollation_ixtokenbufwant_vtbl_packelemop_nextopline_tmgvtblPL_valid_types_NVXPL_runops_dbg_readdir64_sizeIutf8_xidcontsi_cxstackopenptyyyerrstatus_hostent_ptrsbu_rxxcv_padlist_IO_markerPL_revisionsvt_get_Boolsvu_iv__prevIsort_RealCmpsbu_rxtaintedseq_amgdiv_ass_amgop_moresib_flags2xpv_len_uopen_slaveIpatchlevel_pwent_structnextvalsvu_pvXPVNVany_gvmemcpynot_amgIhash_rand_bitssbu_orig_IO_lock_t__gid_t_IO_read_ptrIparserxpadlarr_dbgstack_max1runops_proc_tany_hvPL_subversionIpadlist_generationSVt_PVFM__environxpadnl_maxIdefoutgv_lowerIstatusvalue_posix_pwent_buffer__ctype_tolowersiginfo_tPerl_newSVivany_ivmax_offsetsv_flagsIchopsetIrpeeppoldcomppadPL_fold_localesbu_rxresSVt_PVGVIincgvsi_markoffxpadnl_fill/root/.cpanm/work/1633575402.47567/IO-Tty-1.16want_vtbl_arylenS_POPMARKPL_no_usymtv_nsecnexttypesig_slurpywant_vtbl_backrefIcurpm_underSVt_PVHVlshift_ass_amgSighandler_tpthread_getspecificsvu_hashin6addr_loopbacksvu_nvsband_amglex_inpatlast_lopsockaddr_ax25num_minorsPL_isa_DOESptr_tbl_arenanewfdSVt_PVIOSVt_PVIVfilteredIlastfdwant_vtbl_collxfrmPL_perlio_fd_refcntIeval_start_readdir_structIlast_swash_keyls_linestrPerl_check_t_readdir_size__alignPerl_gv_stashpvPADNAMELISTSVt_PVCVPERL_PHASE_START__srcxcv_hscxtany_u32Perl_croak_nocontexthandle_ctime_sizerepeat_ass_amgop_pmreplrootud_inoIsavestack_maxfprintfwant_vtbl_arylen_pIlocalpatchesIsv_rootSVt_PVLVp5rxXS_IO__Tty_ttynameop_next__saved_masksvu_rvsvu_rxsockaddr_eonany_opIcurstackSVt_PVMGIpadix_floorsi_statusxpadl_arrh_addrtype_strerror_sizeIdelaymagic_euidbufendPerl_newSVpvlex_inwhatany_pvPL_valid_types_PVXatan2_amgxnv_nvPL_phase_namessin_zeroIopfreehook_protoent_ptrIunitcheckavsvu_uvPerlIOlsa_masksgt_amgto_hv_amgprotoentmg_lenImemory_debug_headerPL_no_modifyany_svSVt_IVItop_envwant_vtbl_sigelem__blksize_t_IO_buf_endshort unsigned int_spent_ptrbool__amgItmps_stackyy_lexsharedoffsIseen_deprecated_macrowant_vtbl_substr_IO_codecvtIsv_undefIpsig_nameLEXSHAREDclone_paramsperl_drand48_tIgensymPL_foldIregmatch_slabop_redooprsfp_hostent_structstart_tmpxio_fmt_namesvt_lencop_hints__lenh_nameIerrorsPL_no_memxpvlenu_lenh_aliasesopen64_hostent_sizePL_Yesop_pmreplstarthent_refcountsaved_copylex_sub_inwhatany_uvItmps_floorPL_do_undumpIstrxfrm_is_behavedxpadl_iddec_amgint_amgIbasetimeIop_maskIsighandlerpunreferencedxpadnl_refcntfcntl64IUpperLatin1getptxio_ofp_hostent_buffercop_seqmulti_startop_pmreplroot_shortbufSVt_NVIDBtracemaxlenpre_prefixop_targIbeginavje_retresume_statePL_dollarzero_mutexIsv_constspw_dirlex_casestackop_lastopIsub_generationblku_evalfloatwant_vtbl_isaelemPL_versionPL_no_securityIutf8_foldable__countunsigned charsi_cxmaxmulti_open_killsubtr_ass_amgposix_openptst_rdevLOOPILB_invlistSVt_PVwant_vtbl_dblinePerl_sv_setpvREENTRImess_svIglobalstashImin_intro_pendingPL_perlio_mutexexpectoldlocIcollxfrm_basewant_vtbl_envelemcopy_amgIutf8_perl_idcontcx_blkIstatnameRETVALmodulo_amgxnv_u__uid_tsin6_scope_idblku_gimmePL_valid_types_IVXst_ctimrecheck_utf8_validityIutf8_tofoldxcv_rootISB_invlistblock_format__sighandler_tin_addr_top_sibparenttz_dsttime__dataold_namesvlog_amg__builtin_fwritexpadn_type_uIAssigned_invlistpeep_tPL_my_ctx_mutexIsv_nominlen__off_tperl_phaseTty.csbxor_ass_amgd_reclenallocate_ptyPL_mmap_page_sizePERL_PHASE_DESTRUCTin_podPerl_stack_growgp_ioImultideref_pcIors_svstring_amgxpadn_protocvIevalseqIunlockhookregexp_enginemg_flagssubtr_amgIcurstashgr_passwdws_xpixelPerl_ppaddr_tgr_gidwant_vtbl_checkcallIstashpadmaxsi_overrun__clock_tSVt_NULLls_bufptrIbeginav_save__uint32_tIorigfilenamews_colxmg_hash_indexlast_lop_opInumeric_localcop_warningsPL_op_private_bitdef_ixIcop_seqmaxop_pmtargetgvPL_veto_cleanupform_lex_stateIstatgvIdestroyhookcoplinest_blocks_sys_siglistsbu_msbu_ssave_curlyxIcomppadsub_no_recoverlex_dojoinxmg_udirent64gp_cvgenPL_utf8skipxcv_fileSVt_PVNVitervar_ugp_flagsxiou_dirp_servent_bufferPL_op_mutexparen_namesIregistered_mrossi_uidpw_passwdsqrt_amglex_allbracketsopvalIcurcopdbblock_subpos_magic_old_offsetgp_file_heksv_refcntsockaddr_in6__nlink_ttbl_arysband_ass_amgxav_allocsi_fdnparensPL_no_funcxpadn_refcntscmp_amgIeval_rootold_eval_rootnamed_buff_iterst_gidIdowarnyycharIfirstgvrshift_amgmg_moremagicop_pmoffsetop_pmstashoffPERL_SIMGVTBLop_staticMAGICPerl_sv_newmortalItmps_maxoptargPL_latin1_lcwant_vtbl_packsockaddr_ipxIthreadhookPL_valid_types_IV_setblku_givwhengr_namemake_safe_fdop_typeIutf8_perl_idstartsublenblku_oldmarkspxivu_ivIutf8_swash_ptrs_netent_ptrwant_vtbl_regexpIpadname_undefpreamblingfcntlproto_perl_uppercx_uoutputIDBcvPL_sigfpe_savedtrieIlockhook__ctype_toupperPL_inf_xnvuPerl_keyword_plugin_txio_lines_leftcompflagssockaddr_isopthread_mutex_twant_vtbl_utf8Iin_load_modulePL_memory_wrapxio_pagestrlcpysigjmp_bufpow_amgwant_vtbl_hintsdiv_amgIlaststype__ctype_b__listh_addr_listmysignalIutf8_charname_continuein_my_stashwant_vtbl_regdataxpadn_len_IO_write_ptr_strerror_bufferlocal_patches__sigaction_handleradd_ass_amgdummyIunitcheckav_savePL_op_descsi_stimePL_no_aelemlastcloseparenshort intifmatchIdumpindentIoldnamepreambledop_code_listxhv_keysitersave_readdir64_struct_sys_nerrIAboveLatin1Iutf8_mark_servent_sizesi_signoIDBgvIlast_swash_tmpsPerl_sv_2bool_flags__namessv_anyblk_uxcv_startacceptedgvvalIWB_invlistolddepthIutf8cache_boundsprev_evalIpadixdefsv_savewant_vtbl_lvref_netent_bufferxcv_stashYYSTYPExcv_gv_markersPL_keyword_plugincop_hints_hashIcustom_op_nameslex_sub_replstdoutsle_amgxpadn_highre_scream_pos_datahek_hash_ttyname_bufferPL_hints_mutexIknown_layers__stream_netent_errnoItaintingPL_op_private_bitdefsIcurcopIstack_sp__ssize_tany_boolregmatch_info_auxPERL_PHASE_ENDPL_interp_sizeIcollation_standard__glibc_reservedwant_vtbl_taintlex_deferxmg_stashPL_runops_stdIorigalensbu_maxiterssockaddrIdebugrefcounted_heIcurpadPL_op_private_valid__time_t__daylightst_mtimwant_vtbl_uvars_protosbu_targd_type__destlogicalIforkprocesslex_bracketsxio_top_gvIutf8_tolowerPL_op_sequenceblku_oldcopperl_mutexIcurstackinfoIstart_envlex_fakeeoflex_sub_opstashesIstashcachexnv_linesmult_amgPL_use_safe_putenv_IO_write_basep_aliases_netent_structin_mynext_offxivu_uvsin_portpadnlImodglobalin6addr_anyICmdsockaddr_atregmatch_info_aux_evalxcv_start_uPL_no_helem_svwant_vtbl_envbasespIgenerationIGCB_invlistIstrtabxpadl_outidnamebuflenxpadn_lowblock_givwhenregexp_paren_pair__sizecrypt_datapprivatecv_flags_tcur_top_envxpadn_typestashIin_utf8_COLLATE_localeIlast_swash_slenstate_uPERL_PHASE_RUN_sigfaultop_sparelex_opst_inopw_gecos__pid_tparsed_subop_lastwant_vtbl_regdatumxio_typeyylvalsp_inactsockaddr_dlxav_fillhent_valIorigenvironIdelaymagic_egidgp_avftest_amgscream_oldsprint_debugmg_ptr_cur_columnPerl_newSVmaxpossa_familyptr_tblInumeric_namelazyiv_sifieldsSVCOMPARE_tSVt_REGEXPIpsig_ptrgp_cvxgv_stashnetentsaved_curcoptv_secblku_u16Iprofiledatasbor_amg__sigset_tgp_lineImainstackIcurpmop_pmflagsst_blksizexpadn_ourstashprogram_invocation_short_namePL_sig_numptr_tbl_ent_hostent_errnoop_slabbedscompl_amgIsublineIargvoutgvIwatchaddrIdefgv__buflenhek_keyPerlExitListEntryws_rowxio_bottom_nameold_signalgp_formIreentrant_bufferhent_nextcheck_ix__off64_tIunsafeIhintgvsockaddr_in__jmp_bufIDBsignalIutf8_charname_beginblku_formatPL_ppaddr__dirstreamsin_addrIXpvIregex_padavPL_perlio_debug_fdblku_loopcache_offsetwantedpw_uid_timerIstrxfrm_NUL_replacement__locksig_elemsPL_valid_types_NV_setnum_ptysgr_memIxsubfilenamegp_hvIpad_reset_pendingopterrdfoutgv_sigchldxcv_depthItaint_warnIArgvpw_shellsi_next_syscallPL_no_symref_svIexitlistptsnameIsubname_IO_read_basePL_warn_uninitany_i32Ihv_fetch_ent_mhUNOP_AUX_itemsvt_dup__pthread_mutex_sInumeric_radix_svPerl_sv_2ioPL_fold_latin1xcv_outside_seqPL_magic_vtable_namesPL_no_sock_funcIsplitstrxcv_heksvt_freesockaddr_ns__oflaglong long unsigned intsi_addrdirentwant_vtbl_posIbody_arenascheckstrnamebuf_grent_sizePL_csighandlerpSVt_INVLISTwant_vtbl_mglobIsortcopPL_warn_uninit_svsin_familyIsignalssbu_typesi_pidmg_privatedupeje_buflazysvItoptargetIstrxfrm_max_cpIerrgvPerl_sv_2pv_flagsinc_amgsvt_clearPERL_PHASE_CHECKnexttokePL_no_myglobItmps_ixIsig_pendingsubstrsany_svpintflagsdestroyable_proc_tIfdpidxpadlarr_allocivalany_dxptrn_netto_sv_amgws_ypixelPerl_croak_xs_usageop_pmtargetoffIcollation_nameIefloatbufto_cv_amgmagic_vtable_max_pwent_sizeoldvalany_longxiou_anylshift_amgIexit_flagsc1_utf8repeat_amgIglobhooksin6_portPL_block_typed_offxio_top_namemodulo_ass_amgIptr_tableIcolorset__jmpbufIfilemode__dev_t__kindIexitlistlensockaddr_unnumer_amgop_foldedIdelaymagicPL_charclassImarkstack_ptrblockpw_gidprev_yes_states_name_protoent_structop_compgp_svsvu_array__pthread_internal_listwhilemIsavebeginptymajorsIInBitmapmother_re__valn_aliases_sigsysttyfdextflagsxio_fmt_gvxpadn_gencop_fileIcurstnamecx_subst__u6_addr16Isv_countsvt_setIdefstashItaintedtz_minuteswestIbodytargetoldoldbufptrxav_maxxiv_u_protoent_bufferst_modesavearray_xivu_chainleave_opIutf8_xidstartre_eval_startperl_debug_padIstack_maxsvtypest_devInOutStream__u6_addr32je_prevwant_vtbl_svIclocktickPerl_sv_2iv_flags__syscall_slong_t__fprintf_chkIXPosix_ptrsIDBsubspwd__nextIutf8_idstartje_mustcatchnumbered_buff_LENGTHyy_parserblock_loopop_savefreeIscopestackIformtargetpad_offsetPL_perlio_fd_refcnt_sizes_aliaseslastcpIconstpadixmulti_closestatherelinesImy_cxt_listIPosix_ptrs_freeres_listxivu_namehek__pad5_ttyname_sizesin6_addrIwatchok_IO_FILE__stack_chk_failPL_my_cxt_index__tznamep_protoPerl_sv_2mortalwant_vtbl_isasvt_copyxnv_bm_tailsival_ptrmark_locsi_utimexpvavIsrand_calledoptindregexp_amg__mode_tsp_flagperl_keyIreplgvsa_dataIbreakable_sub_genrsfp_filtersIin_evalsuboffset__sigval_t_servent_ptrlex_re_reparsingIutf8_toupperlinestartsig_optelemsPERL_PHASE_INITIcv_has_evalmg_typexpvcvnumbered_buff_FETCHIrandom_stateIscopestack_namesi_bandxpadn_pvIcomppad_name_floorIdelaymagic_uidIwarnhookIlast_swash_klen_xmgu_sigpollslt_amgxio_dirpucur_text__elisionblku_oldpmImain_cv€˜U˜ÅLóUŸ€œTœÅLóTŸÇËP˾L\¾LÄLTnrPr¸LS‘P‘¼]UóUŸT’^’“óTŸ“^"ÃVÃÞv`Ÿ“ÝVâV8=\=b|ŸbÙ]“â]âñ|Ÿñ]=D| $ &3$p"ŸDH| $ &3$p"Ÿ=Dv| $ &3$p8Ÿv§\“¶\ñ\'8P>U><óUŸBTBÇ^ÇÐóTŸÐé^é&óTŸ&5^5<óTŸHqV^c]c‡}Ÿ‡É\Ð&\&5}Ÿ5<\cj} $ &3$p"Ÿjn} $ &3$p"ŸnxPu@VоVÞ!V&<VßÏ_é&_5<_57P7Í^&^5<^sŠRН‘¨ý!‘¨5<RrvPv‡V‡‹P‹¡V”Ð1Ÿ!&1ŸM^P@XUXÖóUŸ@\T\­]­ÇóTŸÇÖ]bˆV:@\¦Ç\x}^}›~Ÿ›Ë\Ëe~ŸfÖ~Ÿ}~ $ &3$p"Ÿ…~ $ &3$p"Ÿ}v~ $ &3$p8ŸË\f¦\:\–¦0ŸðùPùRVÇVEf1ŸgxP 5 U5 sóUŸ 9 T9 š Sš _óTŸ_nSnsóTŸE l _l œ ‘˜|œ Ó ‘˜|#ŸÓ E~ŸET‘˜|#ŸT`S`Z‘˜|_s‘˜|\ a \a |Ÿ_n|Ÿa e | $ &3$p"Ÿe i | $ &3$p"Ÿs … P… < \–m\ä\.2\_mPmn3&ŸY `1Ÿ&.0Ÿ2_1Ÿš ¢ P¢  S– Sä S£SòSê2SØ Y  ŸÍä Ÿ  Ÿ£ò Ÿ& Ÿ.ê ŸØ  ‘°}Ÿ Y SÍ ‘°}Ÿ äS S£òS&S.êSØ ‘¬|Ÿ 3 T3 Y ‘ˆ|Í‘¬|ŸP䑈| ‘ˆ|£ò‘ˆ|&‘ˆ|.ꑈ|Ø  ‘¨|Ÿ 3 P3 Y wÍ‘¨|Ÿ#P#äw w£òw&w.êwå  «dŸìp«¯P¯f]£ò]zê]¶ºPºk^£ò^zê^.U ØdŸ7Opÿ Ÿÿ eŸmt\t||Ÿ|ä\&\Hä xpŸ£Í xpŸ. xpŸHä PpŸ£Í PpŸ. PpŸHä Ÿ£Í Ÿ. ŸHä €Ÿ£Í €Ÿ. €Ÿ®Ö &eŸ®Ö]Öù 3eŸÖù^! Ÿ!]B` @eŸB`]`~ LeŸ`~^—¦ Ÿ—¦]Çê XeŸÇê]ê  eeŸê ^&5 Ÿ&5]Vt reŸVt]t’ €eŸt’^«º Ÿ«º]£Í  eŸ¯Çp V ÅdŸ'?p Å ídŸ§¿pJ \ PàþUþSóUŸTST\óUŸ PV'P'WV7TST\óUŸ`lUl²óUŸl²Ul“Q“­Pll tq#€Ÿly tq#ÿŸy“ tq#€Ÿ“²0ŸÀÌUÌFSFfóUŸfySy~óUŸ˜Ÿ0ŸW€‘U‘£ S£ © óUŸ© µ Sµ » óUŸ» ú S€™T™¦ \¦ © óTŸ© ¸ \¸ » óTŸ» ú \€™Q™¤ V¤ © óQŸ© ¶ V¶ » óQŸ» ú V¤³P³¨ ]©  ] ' P' º ]» ú ]© ß DdŸ· Ï p O /dŸ' ? põ  Ÿõ Võ s' 8 P8 I Tß ï P» Í Tµ è qdŸ¿ × pn }  Ÿn } V µ ZdŸ— ¯ ph †dŸo ƒ pƒ ‡ U'')8[bf¤§Š˜âñMMO^”Ð!5<ggix•EpÇñøü 77EISTVW\€€‘•á° ° ° · Ð ' @  I ¸ ( À Ø ¸ ¸ ¿ Ø — ¸ J J M \ { m Vp_Ø Y ÍVpè ¨ø&0ðååì#ƒñ0X€ Èð007XHVpè¨Ð&®®±Ö¨¨¯Ð  '@  §È8`˜¨ä P à ¸  Ø  Ð  d(d€qèqht0| 8| @| H| X~ € €` ñÿ P d# 6 M e  ˜ ³ Ç ß P T/ PI Tp Œ• `,­ ŒÏ &ï – & ¬8 0|E ¬h ‰ °R Á Îã ¾ø Î J#B ÐzY€ e J#Œ Ã,± P#s É Ã,å dÿñÿ    À 5€ D8| k @w0| ÿñÿ–`tñÿ¤ dª@| ·H| À€qÓ€ ßX~ õ Øû "6Igw “ª»€ ÂÖáý(<Ofy¨ ·ËÛðý*€ ?R^nƒ€ £·ÃÕêþ 3 Ð,E7@Mc}‹"§¹Í.annobin_Tty.c.annobin_Tty.c_end.annobin_Tty.c.hot.annobin_Tty.c_end.hot.annobin_Tty.c.unlikely.annobin_Tty.c_end.unlikely.annobin_Tty.c.startup.annobin_Tty.c_end.startup.annobin_Tty.c.exit.annobin_Tty.c_end.exit.annobin_XS_IO__Tty_unpack_winsize.start.annobin_XS_IO__Tty_unpack_winsize.endXS_IO__Tty_unpack_winsize.annobin_XS_IO__Tty_pack_winsize.start.annobin_XS_IO__Tty_pack_winsize.endXS_IO__Tty_pack_winsize.annobin_XS_IO__Tty_ttyname.start.annobin_XS_IO__Tty_ttyname.endXS_IO__Tty_ttyname.annobin_make_safe_fd.start.annobin_make_safe_fd.endmake_safe_fd.annobin_strlcpy.constprop.3.start.annobin_strlcpy.constprop.3.endstrlcpy.constprop.3.annobin_mysignal.constprop.4.start.annobin_mysignal.constprop.4.endmysignal.constprop.4.annobin_open_slave.constprop.2.start.annobin_open_slave.constprop.2.endopen_slave.constprop.2print_debug.annobin_XS_IO__Pty_pty_allocate.start.annobin_XS_IO__Pty_pty_allocate.endXS_IO__Pty_pty_allocate.annobin_boot_IO__Tty.start.annobin_boot_IO__Tty.endcrtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.7294__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entry__FRAME_END___fini__dso_handle_DYNAMIC__GNU_EH_FRAME_HDR__TMC_END___GLOBAL_OFFSET_TABLE__initPerl_sv_2iv_flagsptsname@@GLIBC_2.2.5Perl_sv_2bool_flagsPerl_PerlIO_fileno__errno_location@@GLIBC_2.2.5Perl_stack_grow_ITM_deregisterTMCloneTablesigaction@@GLIBC_2.2.5Perl_newCONSTSUB_edataPerl_warn_nocontextPerl_newSV__stack_chk_fail@@GLIBC_2.4PL_thr_keyPerl_sv_setpvPerl_sv_2pv_flagsPerl_xs_boot_epilogclose@@GLIBC_2.2.5ptsname_r@@GLIBC_2.2.5getpt@@GLIBC_2.2.5unlockpt@@GLIBC_2.2.5sigemptyset@@GLIBC_2.2.5__gmon_start__Perl_croak_xs_usagePerl_gv_stashpvopenpty@@GLIBC_2.2.5Perl_newSVpvpthread_getspecific@@GLIBC_2.2.5Perl_get_svPerl_croak_nocontextPerl_newXS_deffilePerl_mg_setPerl_sv_2mortalttyname@@GLIBC_2.2.5__bss_startopen64@@GLIBC_2.2.5fcntl64@@GLIBC_2.28Perl_sv_2ioPerl_xs_handshakegrantpt@@GLIBC_2.2.5fwrite@@GLIBC_2.2.5__fprintf_chk@@GLIBC_2.3.4_ITM_registerTMCloneTableboot_IO__TtyPerl_newSVivstrerror@@GLIBC_2.2.5posix_openpt@@GLIBC_2.2.5Perl_newSVpvn__cxa_finalize@@GLIBC_2.2.5Perl_sv_newmortalstderr@@GLIBC_2.2.5__sprintf_chk@@GLIBC_2.3.4.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.note.gnu.property.init_array.fini_array.data.rel.ro.dynamic.got.bss.comment.gnu.build.attributes.debug_aranges.debug_info.debug_abbrev.debug_line.debug_str.debug_loc.debug_ranges88$.öÿÿo``48 ˜˜@¨¨<Hÿÿÿoä ä lUþÿÿoP P dà à ØnB¸ ¸ xØØsÐ~ÐÐÀ‡…Mdd “2(d(dX ›€q€qd©èqèq|³htht Æ0| 0|Ò8| 8|Þ@| @|ëH| H|ôX~ X~¨ù€ €þ0€,€`,€È ôŒ0,$Âï8æ|^FDƒ%R0išF@]¯Ú-#hÜýðP "Y @è(vperl5/Net/SSL.pm000055500000040771152462470720007343 0ustar00package Net::SSL; use strict; use MIME::Base64; use Socket; use Carp; use vars qw(@ISA $VERSION $NEW_ARGS); $VERSION = '2.86'; $VERSION = eval $VERSION; require IO::Socket; @ISA=qw(IO::Socket::INET); my %REAL; # private to this package only my $DEFAULT_VERSION = '23'; my $CRLF = "\015\012"; my $SEND_USERAGENT_TO_PROXY = 0; require Crypt::SSLeay; sub _default_context { require Crypt::SSLeay::MainContext; Crypt::SSLeay::MainContext::main_ctx(@_); } sub _alarm_set { return if $^O eq 'MSWin32' or $^O eq 'NetWare'; alarm(shift); } sub new { my($class, %arg) = @_; local $NEW_ARGS = \%arg; $class->SUPER::new(%arg); } sub DESTROY { my $self = shift; delete $REAL{$self}; local $@; eval { $self->SUPER::DESTROY; }; } sub configure { my($self, $arg) = @_; my $ssl_version = delete $arg->{SSL_Version} || $ENV{HTTPS_VERSION} || $DEFAULT_VERSION; my $ssl_debug = delete $arg->{SSL_Debug} || $ENV{HTTPS_DEBUG} || 0; my $ctx = delete $arg->{SSL_Context} || _default_context($ssl_version); *$self->{ssl_ctx} = $ctx; *$self->{ssl_version} = $ssl_version; *$self->{ssl_debug} = $ssl_debug; *$self->{ssl_arg} = $arg; *$self->{ssl_peer_addr} = $arg->{PeerAddr}; *$self->{ssl_peer_port} = $arg->{PeerPort}; *$self->{ssl_new_arg} = $NEW_ARGS; *$self->{ssl_peer_verify} = 0; ## Crypt::SSLeay must also aware the SSL Proxy before calling ## $socket->configure($args). Because the $sock->configure() will ## die when failed to resolve the destination server IP address, ## whether the SSL proxy is used or not! ## - dqbai, 2003-05-10 if (my $proxy = $self->proxy) { ($arg->{PeerAddr}, $arg->{PeerPort}) = split(':',$proxy); $arg->{PeerPort} || croak("no port given for proxy server $proxy"); } $self->SUPER::configure($arg); } # override to make sure there is really a timeout sub timeout { shift->SUPER::timeout || 60; } sub blocking { my $self = shift; $self->SUPER::blocking(@_); } sub connect { my $self = shift; # configure certs on connect() time, so we can throw an undef # and have LWP understand the error eval { $self->configure_certs() }; if($@) { $@ = "configure certs failed: $@; $!"; $self->die_with_error($@); } # finished, update set_verify status if(my $rv = *$self->{ssl_ctx}->set_verify()) { *$self->{ssl_peer_verify} = $rv; } if ($self->proxy) { # don't die() in connect, just return undef and set $@ my $proxy_connect = eval { $self->proxy_connect_helper(@_) }; if(! $proxy_connect || $@) { $@ = "proxy connect failed: $@; $!"; croak($@); } } else { *$self->{io_socket_peername}=@_ == 1 ? $_[0] : IO::Socket::sockaddr_in(@_); if(!$self->SUPER::connect(@_)) { # better to die than return here $@ = "Connect failed: $@; $!"; croak($@); } } my $debug = *$self->{ssl_debug} || 0; my $ssl = Crypt::SSLeay::Conn->new(*$self->{ssl_ctx}, $debug, $self); my $arg = *$self->{ssl_arg}; my $new_arg = *$self->{ssl_new_arg}; $arg->{SSL_Debug} = $debug; # setup SNI if available $ssl->can("set_tlsext_host_name") and $ssl->set_tlsext_host_name(*$self->{ssl_peer_addr}); eval { local $SIG{ALRM} = sub { $self->die_with_error("SSL connect timeout") }; # timeout / 2 because we have 3 possible connects here _alarm_set($self->timeout / 2); my $rv; { local $SIG{PIPE} = \¨ $rv = eval { $ssl->connect; }; } if (not defined $rv or $rv <= 0) { _alarm_set(0); $ssl = undef; # See RT #59312 my %args = (%$arg, %$new_arg); if(*$self->{ssl_version} == 23) { $args{SSL_Version} = 3; # the new connect might itself be overridden with a REAL SSL my $new_ssl = Net::SSL->new(%args); $REAL{$self} = $REAL{$new_ssl} || $new_ssl; return $REAL{$self}; } elsif(*$self->{ssl_version} == 3) { # $self->die_with_error("SSL negotiation failed"); $args{SSL_Version} = 2; my $new_ssl = Net::SSL->new(%args); $REAL{$self} = $new_ssl; return $new_ssl; } else { # don't die, but do set $@, and return undef eval { $self->die_with_error("SSL negotiation failed") }; croak($@); } } _alarm_set(0); }; # odd error in eval {} block, maybe alarm outside the evals if($@) { $@ = "$@; $!"; croak($@); } # successful SSL connection gets stored *$self->{ssl_ssl} = $ssl; $self; } # Delegate these calls to the Crypt::SSLeay::Conn object sub get_peer_certificate { my $self = shift; $self = $REAL{$self} || $self; *$self->{ssl_ssl}->get_peer_certificate(@_); } sub get_peer_verify { my $self = shift; $self = $REAL{$self} || $self; *$self->{ssl_peer_verify}; } sub get_shared_ciphers { my $self = shift; $self = $REAL{$self} || $self; *$self->{ssl_ssl}->get_shared_ciphers(@_); } sub get_cipher { my $self = shift; $self = $REAL{$self} || $self; *$self->{ssl_ssl}->get_cipher(@_); } sub pending { my $self = shift; $self = $REAL{$self} || $self; *$self->{ssl_ssl}->pending(@_); } sub ssl_context { my $self = shift; $self = $REAL{$self} || $self; *$self->{ssl_ctx}; } sub die_with_error { my $self=shift; my $reason=shift; my @err; while(my $err=Crypt::SSLeay::Err::get_error_string()) { push @err, $err; } croak("$reason: " . join( ' | ', @err )); } sub read { my $self = shift; $self = $REAL{$self} || $self; local $SIG{__DIE__} = \&Carp::confess; local $SIG{ALRM} = sub { $self->die_with_error("SSL read timeout") }; _alarm_set($self->timeout); my $n = *$self->{ssl_ssl}->read(@_); _alarm_set(0); $self->die_with_error("read failed") if !defined $n; $n; } sub write { my $self = shift; $self = $REAL{$self} || $self; my $n = *$self->{ssl_ssl}->write(@_); $self->die_with_error("write failed") if !defined $n; $n; } *sysread = \&read; *syswrite = \&write; sub print { my $self = shift; $self = $REAL{$self} || $self; # should we care about $, and $\?? # I think it is too expensive... $self->write(join("", @_)); } sub printf { my $self = shift; $self = $REAL{$self} || $self; my $fmt = shift; $self->write(sprintf($fmt, @_)); } sub getchunk { my $self = shift; $self = $REAL{$self} || $self; my $buf = ''; # warnings my $n = $self->read($buf, 32768); return unless defined $n; $buf; } # This is really inefficient, but we only use it for reading the proxy response # so that does not really matter. sub getline { my $self = shift; $self = $REAL{$self} || $self; my $val=""; my $buf; do { $self->SUPER::recv($buf, 1); $val .= $buf; } until ($buf eq "\n"); $val; } # XXX: no way to disable <$sock>?? (tied handle perhaps?) sub get_lwp_object { my $self = shift; my $lwp_object; my $i = 0; while(1) { package DB; my @stack = caller($i++); last unless @stack; my @stack_args = @DB::args; my $stack_object = $stack_args[0] || next; return $stack_object if ref($stack_object) and $stack_object->isa('LWP::UserAgent'); } return undef; } sub send_useragent_to_proxy { if (my $val = shift) { $SEND_USERAGENT_TO_PROXY = $val; } return $SEND_USERAGENT_TO_PROXY; } sub proxy_connect_helper { my $self = shift; my $proxy = $self->proxy; my ($proxy_host, $proxy_port) = split(':',$proxy); $proxy_port || croak("no port given for proxy server $proxy"); my $proxy_addr = gethostbyname($proxy_host); $proxy_addr || croak("can't resolve proxy server name: $proxy_host, $!"); my($peer_port, $peer_addr) = (*$self->{ssl_peer_port}, *$self->{ssl_peer_addr}); $peer_addr || croak("no peer addr given"); $peer_port || croak("no peer port given"); # see if the proxy should be bypassed my @no_proxy = split( /\s*,\s*/, $ENV{NO_PROXY} || $ENV{no_proxy} || ''); my $is_proxied = 1; my $domain; for $domain (@no_proxy) { if ($peer_addr =~ /\Q$domain\E$/) { $is_proxied = 0; last; } } if ($is_proxied) { $self->SUPER::connect($proxy_port, $proxy_addr) || croak("proxy connect to $proxy_host:$proxy_port failed: $!"); } else { # see RT #57836 my $peer_addr_packed = gethostbyname($peer_addr); $self->SUPER::connect($peer_port, $peer_addr_packed) || croak("proxy bypass to $peer_addr:$peer_addr failed: $!"); } my $connect_string; if ($ENV{"HTTPS_PROXY_USERNAME"} || $ENV{"HTTPS_PROXY_PASSWORD"}) { my $user = $ENV{"HTTPS_PROXY_USERNAME"}; my $pass = $ENV{"HTTPS_PROXY_PASSWORD"}; my $credentials = encode_base64("$user:$pass", ""); $connect_string = join($CRLF, "CONNECT $peer_addr:$peer_port HTTP/1.0", "Proxy-authorization: Basic $credentials" ); } else { $connect_string = "CONNECT $peer_addr:$peer_port HTTP/1.0"; } $connect_string .= $CRLF; if (send_useragent_to_proxy()) { my $lwp_object = $self->get_lwp_object; if($lwp_object && $lwp_object->agent) { $connect_string .= "User-Agent: ".$lwp_object->agent.$CRLF; } } $connect_string .= $CRLF; $self->SUPER::send($connect_string); my $timeout; my $header = ''; # See RT #33954 # See also RT #64054 # Handling incomplete reads and writes better (for some values of # better) may actually make this problem go away, but either way, # there is no good reason to use \d when checking for 0-9 while ($header !~ m{HTTP/[0-9][.][0-9]\s+200\s+.*$CRLF$CRLF}s) { $timeout = $self->timeout(5) unless length $header; my $n = $self->SUPER::sysread($header, 8192, length $header); last if $n <= 0; } $self->timeout($timeout) if defined $timeout; my $conn_ok = ($header =~ m{HTTP/[0-9]+[.][0-9]+\s+200\s+}is) ? 1 : 0; if (not $conn_ok) { croak("PROXY ERROR HEADER, could be non-SSL URL:\n$header"); } $conn_ok; } # code adapted from LWP::UserAgent, with $ua->env_proxy API # see also RT #57836 sub proxy { my $self = shift; my $proxy_server = $ENV{HTTPS_PROXY} || $ENV{https_proxy}; return unless $proxy_server; my($peer_port, $peer_addr) = ( *$self->{ssl_peer_port}, *$self->{ssl_peer_addr} ); $peer_addr || croak("no peer addr given"); $peer_port || croak("no peer port given"); # see if the proxy should be bypassed my @no_proxy = split( /\s*,\s*/, $ENV{NO_PROXY} || $ENV{no_proxy} || '' ); my $is_proxied = 1; for my $domain (@no_proxy) { if ($peer_addr =~ /\Q$domain\E\z/) { return; } } $proxy_server =~ s|\Ahttps?://||i; # sanitize the end of the string too # see also http://www.nntp.perl.org/group/perl.libwww/2012/10/msg7629.html # and https://github.com/nanis/Crypt-SSLeay/pull/1 # Thank you Mark Allen and YigangX Wen $proxy_server =~ s|(:[1-9][0-9]{0,4})/\z|$1|; $proxy_server; } sub configure_certs { my $self = shift; my $ctx = *$self->{ssl_ctx}; my $count = 0; for (qw(HTTPS_PKCS12_FILE HTTPS_CERT_FILE HTTPS_KEY_FILE)) { my $file = $ENV{$_}; if ($file) { (-e $file) or croak("$file file does not exist: $!"); (-r $file) or croak("$file file is not readable"); $count++; if (/PKCS12/) { $count++; $ctx->use_pkcs12_file($file ,$ENV{'HTTPS_PKCS12_PASSWORD'}) || croak("failed to load $file: $!"); last; } elsif (/CERT/) { $ctx->use_certificate_file($file ,1) || croak("failed to load $file: $!"); } elsif (/KEY/) { $ctx->use_PrivateKey_file($file, 1) || croak("failed to load $file: $!"); } else { croak("setting $_ not supported"); } } } # if both configs are set, then verify them if ($count == 2) { if (! $ctx->check_private_key) { croak("Private key and certificate do not match"); } } $count; # number of successful cert loads/checks } sub accept { shift->_unimpl("accept") } sub getc { shift->_unimpl("getc") } sub ungetc { shift->_unimpl("ungetc") } sub getlines { shift->_unimpl("getlines"); } sub _unimpl { my($self, $meth) = @_; croak("$meth not implemented for Net::SSL sockets"); } 1; __END__ =head1 NAME Net::SSL - support for Secure Sockets Layer =head1 METHODS =over 4 =item new Creates a new C object. =item configure Configures a C socket for operation. =item configure_certs Sets up a certificate file to use for communicating with on the socket. =item connect =item die_with_error =item get_cipher =item get_lwp_object Walks up the caller stack and looks for something blessed into the C namespace and returns it. Vaguely deprecated. =item get_peer_certificate Gets the peer certificate from the underlying C object. =item get_peer_verify =item get_shared_ciphers =item getchunk Attempts to read up to 32KiB of data from the socket. Returns C if nothing was read, otherwise returns the data as a scalar. =item pending Provides access to OpenSSL's C attribute on the SSL connection object. =item getline Reads one character at a time until a newline is encountered, and returns the line, including the newline. Grossly inefficient. =item print Concatenates the input parameters and writes them to the socket. Does not honour C<$,> nor C<$/>. Returns the number of bytes written. =item printf Performs a C of the input parameters (thus, the first parameter must be the format), and writes the result to the socket. Returns the number of bytes written. =item proxy Returns the hostname of an https proxy server, as specified by the C environment variable. =item proxy_connect_helper Helps set up a connection through a proxy. =item read Performs a read on the socket and returns the result. =item ssl_context =item sysread Is an alias of C. =item timeout Returns the timeout value of the socket as defined by the implementing class or 60 seconds by default. =item blocking Returns a boolean indicating whether the underlying socket is in blocking mode. By default, Net::SSL sockets are in blocking mode. $sock->blocking(0); # set to non-blocking mode This method simply calls the underlying C method of the IO::Socket object. =item write Writes the parameters passed in (thus, a list) to the socket. Returns the number of bytes written. =item syswrite Is an alias of C. =item accept Not yet implemented. Will die if called. =item getc Not yet implemented. Will die if called. =item getlines Not yet implemented. Will die if called. =item ungetc Not yet implemented. Will die if called. =item send_useragent_to_proxy By default (as of version 2.80 of C in the 0.54 distribution of Crypt::SSLeay), the user agent string is no longer sent to the proxy (but will continue to be sent to the remote host). The previous behaviour was of marginal benefit, and could cause fatal errors in certain scenarios (see CPAN bug #4759) and so no longer happens by default. To reinstate the old behaviour, call C with a true value (usually 1). =back =head1 DIAGNOSTICS "no port given for proxy server " A proxy was specified for configuring a socket, but no port number was given. Ensure that the proxy is specified as a host:port pair, such as C. "configure certs failed: ; " "proxy connect failed: ; " "Connect failed: ; " During connect(). =head2 SEE ALSO =over 4 =item IO::Socket::INET C is implemented by subclassing C, hence methods not specifically overridden are defined by that package. =item Net::SSLeay A package that provides a Perl-level interface to the C secure sockets layer library. =back =cut perl5/Win32/DBIODBC.pm000044400000010664152462470720010077 0ustar00package # hide this package from CPAN indexer Win32::ODBC; use strict; use DBI; # once we've been loaded we don't want perl to load the real Win32::ODBC $INC{'Win32/ODBC.pm'} = $INC{'Win32/DBIODBC.pm'} || 1; #my $db = new Win32::ODBC("DSN=$self->{'DSN'};UID=$self->{'UID'};PWD=$self->{'PWD'};"); #EMU --- my $db = new Win32::ODBC("DSN=$DSN;UID=$login;PWD=$password;"); sub new { shift; my $connect_line= shift; # [R] self-hack to allow empty UID and PWD my $temp_connect_line; $connect_line=~/DSN=\w+/; $temp_connect_line="$&;"; if ($connect_line=~/UID=\w?/) {$temp_connect_line.="$&;";} else {$temp_connect_line.="UID=;";}; if ($connect_line=~/PWD=\w?/) {$temp_connect_line.="$&;";} else {$temp_connect_line.="PWD=;";}; $connect_line=$temp_connect_line; # -[R]- my $self= {}; $_=$connect_line; /^(DSN=)(.*)(;UID=)(.*)(;PWD=)(.*)(;)$/; #---- DBI CONNECTION VARIABLES $self->{ODBC_DSN}=$2; $self->{ODBC_UID}=$4; $self->{ODBC_PWD}=$6; #---- DBI CONNECTION VARIABLES $self->{DBI_DBNAME}=$self->{ODBC_DSN}; $self->{DBI_USER}=$self->{ODBC_UID}; $self->{DBI_PASSWORD}=$self->{ODBC_PWD}; $self->{DBI_DBD}='ODBC'; #---- DBI CONNECTION $self->{'DBI_DBH'}=DBI->connect($self->{'DBI_DBNAME'}, $self->{'DBI_USER'},$self->{'DBI_PASSWORD'},$self->{'DBI_DBD'}); warn "Error($DBI::err) : $DBI::errstr\n" if ! $self->{'DBI_DBH'}; #---- RETURN bless $self; } #EMU --- $db->Sql('SELECT * FROM DUAL'); sub Sql { my $self= shift; my $SQL_statment=shift; # print " SQL : $SQL_statment \n"; $self->{'DBI_SQL_STATMENT'}=$SQL_statment; my $dbh=$self->{'DBI_DBH'}; # print " DBH : $dbh \n"; my $sth=$dbh->prepare("$SQL_statment"); # print " STH : $sth \n"; $self->{'DBI_STH'}=$sth; if ($sth) { $sth->execute(); } #--- GET ERROR MESSAGES $self->{DBI_ERR}=$DBI::err; $self->{DBI_ERRSTR}=$DBI::errstr; if ($sth) { #--- GET COLUMNS NAMES $self->{'DBI_NAME'} = $sth->{NAME}; } # [R] provide compatibility with Win32::ODBC's way of identifying erroneous SQL statements return ($self->{'DBI_ERR'})?1:undef; # -[R]- } #EMU --- $db->FetchRow()) sub FetchRow { my $self= shift; my $sth=$self->{'DBI_STH'}; if ($sth) { my @row=$sth->fetchrow_array; $self->{'DBI_ROW'}=\@row; if (scalar(@row)>0) { #-- the row of result is not nul #-- return something nothing will be return else return 1; } } return undef; } # [R] provide compatibility with Win32::ODBC's Data() method. sub Data { my $self=shift; my @array=@{$self->{'DBI_ROW'}}; foreach my $element (@array) { # remove padding of spaces by DBI $element=~s/(\s*$)//; }; return (wantarray())?@array:join('', @array); }; # -[R]- #EMU --- %record = $db->DataHash; sub DataHash { my $self= shift; my $p_name=$self->{'DBI_NAME'}; my $p_row=$self->{'DBI_ROW'}; my @name=@$p_name; my @row=@$p_row; my %DataHash; #print @name; print "\n"; print @row; # [R] new code that seems to work consistent with Win32::ODBC while (@name) { my $name=shift(@name); my $value=shift(@row); # remove padding of spaces by DBI $name=~s/(\s*$)//; $value=~s/(\s*$)//; $DataHash{$name}=$value; }; # -[R]- # [R] old code that didn't appear to work # foreach my $name (@name) # { # $name=~s/(^\s*)|(\s*$)//; # my @arr=@$name; # foreach (@arr) # { # print "lot $name name col $_ or ROW= 0 $row[0] 1 $row[1] 2 $row[2] \n "; # $DataHash{$name}=shift(@row); # } # } # -[R]- #--- Return Hash return %DataHash; } #EMU --- $db->Error() sub Error { my $self= shift; if ($self->{'DBI_ERR'} ne '') { #--- Return error message $self->{'DBI_ERRSTR'}; } #-- else good no error message } # [R] provide compatibility with Win32::ODBC's Close() method. sub Close { my $self=shift; my $dbh=$self->{'DBI_DBH'}; $dbh->disconnect; } # -[R]- 1; __END__ # [R] to -[R]- indicate sections edited by me, Roy Lee =head1 NAME Win32::DBIODBC - Win32::ODBC emulation layer for the DBI =head1 SYNOPSIS use Win32::DBIODBC; # instead of use Win32::ODBC =head1 DESCRIPTION This is a I basic I alpha quality Win32::ODBC emulation for the DBI. To use it just replace use Win32::ODBC; in your scripts with use Win32::DBIODBC; or, while experimenting, you can pre-load this module without changing your scripts by doing perl -MWin32::DBIODBC your_script_name =head1 TO DO Error handling is virtually non-existent. =head1 AUTHOR Tom Horen =cut perl5/YAML/Syck.pm000044400000023157152462470720007623 0ustar00package YAML::Syck; # See documentation after the __END__ mark. use strict; our ( $Headless, $SingleQuote, $ImplicitBinary, $ImplicitTyping, $ImplicitUnicode, $UseCode, $LoadCode, $DumpCode, $DeparseObject ); use 5.006; use Exporter; use XSLoader (); our $VERSION = '1.34'; our @EXPORT = qw( Dump Load DumpFile LoadFile ); our @EXPORT_OK = qw( DumpInto ); our @ISA = qw( Exporter ); our $SortKeys = 1; our $LoadBlessed = 0; XSLoader::load( 'YAML::Syck', $VERSION ); use constant QR_MAP => { '' => sub { qr{$_[0]} }, x => sub { qr{$_[0]}x }, i => sub { qr{$_[0]}i }, s => sub { qr{$_[0]}s }, m => sub { qr{$_[0]}m }, ix => sub { qr{$_[0]}ix }, sx => sub { qr{$_[0]}sx }, mx => sub { qr{$_[0]}mx }, si => sub { qr{$_[0]}si }, mi => sub { qr{$_[0]}mi }, ms => sub { qr{$_[0]}sm }, six => sub { qr{$_[0]}six }, mix => sub { qr{$_[0]}mix }, msx => sub { qr{$_[0]}msx }, msi => sub { qr{$_[0]}msi }, msix => sub { qr{$_[0]}msix }, }; sub __qr_helper { if ( $_[0] =~ /\A \(\? ([ixsm]*) (?:- (?:[ixsm]*))? : (.*) \) \z/x ) { my $sub = QR_MAP()->{$1} || QR_MAP()->{''}; &$sub($2); } else { qr/$_[0]/; } } sub Dump { $#_ ? join( '', map { YAML::Syck::DumpYAML($_) } @_ ) : YAML::Syck::DumpYAML( $_[0] ); } sub Load { if (wantarray) { my ($rv) = YAML::Syck::LoadYAML( $_[0] ); @{$rv}; } else { @_ = $_[0]; goto &YAML::Syck::LoadYAML; } } sub _is_glob { my $h = shift; return 1 if ( ref($h) eq 'GLOB' ); return 1 if ( ref( \$h ) eq 'GLOB' ); return 1 if ( ref($h) =~ m/^IO::/ ); return; } sub DumpFile { my $file = shift; if ( _is_glob($file) ) { for (@_) { my $err = YAML::Syck::DumpYAMLFile( $_, $file ); if ($err) { $! = 0 + $err; die "Error writing to filehandle $file: $!\n"; } } } else { open( my $fh, '>', $file ) or die "Cannot write to $file: $!"; for (@_) { my $err = YAML::Syck::DumpYAMLFile( $_, $fh ); if ($err) { $! = 0 + $err; die "Error writing to file $file: $!\n"; } } close $fh or die "Error writing to file $file: $!\n"; } return 1; } sub LoadFile { my $file = shift; if ( _is_glob($file) ) { Load( do { local $/; <$file> } ); } else { if ( !-e $file || -z $file ) { die("'$file' is empty or non-existent"); } open( my $fh, '<', $file ) or die "Cannot read from $file: $!"; Load( do { local $/; <$fh> } ); } } sub DumpInto { my $bufref = shift; ( ref $bufref ) or die "DumpInto not given reference to output buffer\n"; YAML::Syck::DumpYAMLInto( $_, $bufref ) for @_; 1; } 1; __END__ =pod =head1 NAME YAML::Syck - Fast, lightweight YAML loader and dumper =head1 SYNOPSIS use YAML::Syck; # Set this for interoperability with other YAML/Syck bindings: # e.g. Load('Yes') becomes 1 and Load('No') becomes ''. $YAML::Syck::ImplicitTyping = 1; $data = Load($yaml); $yaml = Dump($data); # $file can be an IO object, or a filename $data = LoadFile($file); DumpFile($file, $data); # A string with multiple YAML streams in it $yaml = Dump(@data); @data = Load($yaml); # Dumping into a pre-existing output buffer my $yaml; DumpInto(\$yaml, @data); =head1 DESCRIPTION This module provides a Perl interface to the B data serialization library. It exports the C and C functions for converting Perl data structures to YAML strings, and the other way around. B: If you are working with other language's YAML/Syck bindings (such as Ruby), please set C<$YAML::Syck::ImplicitTyping> to C<1> before calling the C/C functions. The default setting is for preserving backward-compatibility with C. =head1 Differences Between YAML::Syck and YAML =head2 Error handling Some calls are designed to die rather than returning YAML. You should wrap your calls in eval to assure you do not get unexpected results. =head1 FLAGS =head2 $YAML::Syck::Headless Defaults to false. Setting this to a true value will make C omit the leading C<---\n> marker. =head2 $YAML::Syck::SortKeys Defaults to false. Setting this to a true value will make C sort hash keys. =head2 $YAML::Syck::SingleQuote Defaults to false. Setting this to a true value will make C always emit single quotes instead of bare strings. =head2 $YAML::Syck::ImplicitTyping Defaults to false. Setting this to a true value will make C recognize various implicit types in YAML, such as unquoted C, C, as well as integers and floating-point numbers. Otherwise, only C<~> is recognized to be C. =head2 $YAML::Syck::ImplicitUnicode Defaults to false. For Perl 5.8.0 or later, setting this to a true value will make C set Unicode flag on for every string that contains valid UTF8 sequences, and make C return a unicode string. Regardless of this flag, Unicode strings are dumped verbatim without escaping; byte strings with high-bit set will be dumped with backslash escaping. However, because YAML does not distinguish between these two kinds of strings, so this flag will affect loading of both variants of strings. If you want to use LoadFile or DumpFile with unicode, you are required to open your own file in order to assure it's UTF8 encoded: open(my $fh, ">:encoding(UTF-8)", "out.yml"); DumpFile($fh, $hashref); =head2 $YAML::Syck::ImplicitBinary Defaults to false. For Perl 5.8.0 or later, setting this to a true value will make C generate Base64-encoded C data for all non-Unicode scalars containing high-bit bytes. =head2 $YAML::Syck::UseCode / $YAML::Syck::LoadCode / $YAML::Syck::DumpCode These flags control whether or not to try and eval/deparse perl source code; each of them defaults to false. Setting C<$YAML::Syck::UseCode> to a true value is equivalent to setting both C<$YAML::Syck::LoadCode> and C<$YAML::Syck::DumpCode> to true. =head2 $YAML::Syck::LoadBlessed Defaults to false. Setting to true will allow YAML::Syck to bless objects as it imports objects. This default changed in 1.32. You can create any kind of object with YAML. The creation itself is not the critical part. If the class has a DESTROY method, it will be called once the object is deleted. An example with File::Temp removing files can be found at L =head1 BUGS Dumping Glob/IO values do not work yet. Dumping of Tied variables is unsupported. Dumping into tied (or other magic variables) with C might not work properly in all cases. =head1 CAVEATS This module implements the YAML 1.0 spec. To deal with data in YAML 1.1, please use the C module instead. The current implementation bundles libsyck source code; if your system has a site-wide shared libsyck, it will I be used. Tag names such as C is blessed into the package C, but the C and C tags are blessed into C. Note that this holds true even if the tag contains non-word characters; for example, C is blessed into C. Please use L to cast it into other user-defined packages. You can also set the LoadBlessed flag false to disable all blessing. This module has L and has only been semi-actively maintained since 2007. If you encounter an issue with it probably won't be fixed unless you L in Git that's ready for release. There are still good reasons to use this module, such as better interoperability with other syck wrappers (like Ruby's), or some edge case of YAML's syntax that it handles better. It'll probably work perfectly for you, but if it doesn't you may want to look at L, or perhaps at looking another serialization format like L. =head1 SEE ALSO L, L L =head1 AUTHORS Audrey Tang Ecpan@audreyt.orgE =head1 COPYRIGHT Copyright 2005-2009 by Audrey Tang Ecpan@audreyt.orgE. This software is released under the MIT license cited below. The F code bundled with this library is released by "why the lucky stiff", under a BSD-style license. See the F file for details. =head2 The "MIT" License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. =cut perl5/YAML/Loader/Syck.pm000044400000000155152462470720011022 0ustar00package YAML::Loader::Syck; use strict; sub new { $_[0] } sub load { shift; YAML::Syck::Load( $_[0] ) } 1; perl5/YAML/Dumper/Syck.pm000044400000000155152462470720011050 0ustar00package YAML::Dumper::Syck; use strict; sub new { $_[0] } sub dump { shift; YAML::Syck::Dump( $_[0] ) } 1; perl5/version/Internals.pod000044400000060702152462470720011737 0ustar00=head1 NAME version::Internals - Perl extension for Version Objects =head1 DESCRIPTION Overloaded version objects for all modern versions of Perl. This documents the internal data representation and underlying code for version.pm. See F for daily usage. This document is only useful for users interested in the gory details. =head1 WHAT IS A VERSION? For the purposes of this module, a version "number" is a sequence of positive integer values separated by one or more decimal points and optionally a single underscore. This corresponds to what Perl itself uses for a version, as well as extending the "version as number" that is discussed in the various editions of the Camel book. There are actually two distinct kinds of version objects: =over 4 =item Decimal versions Any version which "looks like a number", see L. This also includes versions with a single decimal point and a single embedded underscore, see L, even though these must be quoted to preserve the underscore formatting. =item Dotted-Decimal versions Also referred to as "Dotted-Integer", these contains more than one decimal point and may have an optional embedded underscore, see L. This is what is commonly used in most open source software as the "external" version (the one used as part of the tag or tarfile name). A leading 'v' character is now required and will warn if it missing. =back Both of these methods will produce similar version objects, in that the default stringification will yield the version L only if required: $v = version->new(1.002); # 1.002, but compares like 1.2.0 $v = version->new(1.002003); # 1.002003 $v2 = version->new("v1.2.3"); # v1.2.3 In specific, version numbers initialized as L will stringify as they were originally created (i.e. the same string that was passed to C. Version numbers initialized as L will be stringified as L. =head2 Decimal Versions These correspond to historical versions of Perl itself prior to 5.6.0, as well as all other modules which follow the Camel rules for the $VERSION scalar. A Decimal version is initialized with what looks like a floating point number. Leading zeros B significant and trailing zeros are implied so that a minimum of three places is maintained between subversions. What this means is that any subversion (digits to the right of the decimal place) that contains less than three digits will have trailing zeros added to make up the difference, but only for purposes of comparison with other version objects. For example: # Prints Equivalent to $v = version->new( 1.2); # 1.2 v1.200.0 $v = version->new( 1.02); # 1.02 v1.20.0 $v = version->new( 1.002); # 1.002 v1.2.0 $v = version->new( 1.0023); # 1.0023 v1.2.300 $v = version->new( 1.00203); # 1.00203 v1.2.30 $v = version->new( 1.002003); # 1.002003 v1.2.3 All of the preceding examples are true whether or not the input value is quoted. The important feature is that the input value contains only a single decimal. See also L. IMPORTANT NOTE: As shown above, if your Decimal version contains more than 3 significant digits after the decimal place, it will be split on each multiple of 3, so 1.0003 is equivalent to v1.0.300, due to the need to remain compatible with Perl's own 5.005_03 == 5.5.30 interpretation. Any trailing zeros are ignored for mathematical comparison purposes. =head2 Dotted-Decimal Versions These are the newest form of versions, and correspond to Perl's own version style beginning with 5.6.0. Starting with Perl 5.10.0, and most likely Perl 6, this is likely to be the preferred form. This method normally requires that the input parameter be quoted, although Perl's after 5.8.1 can use v-strings as a special form of quoting, but this is highly discouraged. Unlike L, Dotted-Decimal Versions have more than a single decimal point, e.g.: # Prints $v = version->new( "v1.200"); # v1.200.0 $v = version->new("v1.20.0"); # v1.20.0 $v = qv("v1.2.3"); # v1.2.3 $v = qv("1.2.3"); # v1.2.3 $v = qv("1.20"); # v1.20.0 In general, Dotted-Decimal Versions permit the greatest amount of freedom to specify a version, whereas Decimal Versions enforce a certain uniformity. Just like L, Dotted-Decimal Versions can be used as L. =head2 Alpha Versions For module authors using CPAN, the convention has been to note unstable releases with an underscore in the version string. (See L.) version.pm follows this convention and alpha releases will test as being newer than the more recent stable release, and less than the next stable release. Only the last element may be separated by an underscore: # Declaring use version 0.77; our $VERSION = version->declare("v1.2_3"); # Parsing $v1 = version->parse("v1.2_3"); $v1 = version->parse("1.002_003"); Note that you B quote the version when writing an alpha Decimal version. The stringified form of Decimal versions will always be the same string that was used to initialize the version object. =head2 Regular Expressions for Version Parsing A formalized definition of the legal forms for version strings is included in the C class. Primitives are included for common elements, although they are scoped to the file so they are useful for reference purposes only. There are two publicly accessible scalars that can be used in other code (not exported): =over 4 =item C<$version::LAX> This regexp covers all of the legal forms allowed under the current version string parser. This is not to say that all of these forms are recommended, and some of them can only be used when quoted. For dotted decimals: v1.2 1.2345.6 v1.23_4 The leading 'v' is optional if two or more decimals appear. If only a single decimal is included, then the leading 'v' is required to trigger the dotted-decimal parsing. A leading zero is permitted, though not recommended except when quoted, because of the risk that Perl will treat the number as octal. A trailing underscore plus one or more digits denotes an alpha or development release (and must be quoted to be parsed properly). For decimal versions: 1 1.2345 1.2345_01 an integer portion, an optional decimal point, and optionally one or more digits to the right of the decimal are all required. A trailing underscore is permitted and a leading zero is permitted. Just like the lax dotted-decimal version, quoting the values is required for alpha/development forms to be parsed correctly. =item C<$version::STRICT> This regexp covers a much more limited set of formats and constitutes the best practices for initializing version objects. Whether you choose to employ decimal or dotted-decimal for is a personal preference however. =over 4 =item v1.234.5 For dotted-decimal versions, a leading 'v' is required, with three or more sub-versions of no more than three digits. A leading 0 (zero) before the first sub-version (in the above example, '1') is also prohibited. =item 2.3456 For decimal versions, an integer portion (no leading 0), a decimal point, and one or more digits to the right of the decimal are all required. =back =back Both of the provided scalars are already compiled as regular expressions and do not contain either anchors or implicit groupings, so they can be included in your own regular expressions freely. For example, consider the following code: ($pkg, $ver) =~ / ^[ \t]* use [ \t]+($PKGNAME) (?:[ \t]+($version::STRICT))? [ \t]*; /x; This would match a line of the form: use Foo::Bar::Baz v1.2.3; # legal only in Perl 5.8.1+ where C<$PKGNAME> is another regular expression that defines the legal forms for package names. =head1 IMPLEMENTATION DETAILS =head2 Equivalence between Decimal and Dotted-Decimal Versions When Perl 5.6.0 was released, the decision was made to provide a transformation between the old-style decimal versions and new-style dotted-decimal versions: 5.6.0 == 5.006000 5.005_04 == 5.5.40 The floating point number is taken and split first on the single decimal place, then each group of three digits to the right of the decimal makes up the next digit, and so on until the number of significant digits is exhausted, B enough trailing zeros to reach the next multiple of three. This was the method that version.pm adopted as well. Some examples may be helpful: equivalent decimal zero-padded dotted-decimal ------- ----------- -------------- 1.2 1.200 v1.200.0 1.02 1.020 v1.20.0 1.002 1.002 v1.2.0 1.0023 1.002300 v1.2.300 1.00203 1.002030 v1.2.30 1.002003 1.002003 v1.2.3 =head2 Quoting Rules Because of the nature of the Perl parsing and tokenizing routines, certain initialization values B be quoted in order to correctly parse as the intended version, especially when using the C or L methods. While you do not have to quote decimal numbers when creating version objects, it is always safe to quote B initial values when using version.pm methods, as this will ensure that what you type is what is used. Additionally, if you quote your initializer, then the quoted value that goes B will be exactly what comes B when your $VERSION is printed (stringified). If you do not quote your value, Perl's normal numeric handling comes into play and you may not get back what you were expecting. If you use a mathematic formula that resolves to a floating point number, you are dependent on Perl's conversion routines to yield the version you expect. You are pretty safe by dividing by a power of 10, for example, but other operations are not likely to be what you intend. For example: $VERSION = version->new((qw$Revision: 1.4)[1]/10); print $VERSION; # yields 0.14 $V2 = version->new(100/9); # Integer overflow in decimal number print $V2; # yields something like 11.111.111.100 Perl 5.8.1 and beyond are able to automatically quote v-strings but that is not possible in earlier versions of Perl. In other words: $version = version->new("v2.5.4"); # legal in all versions of Perl $newvers = version->new(v2.5.4); # legal only in Perl >= 5.8.1 =head2 What about v-strings? There are two ways to enter v-strings: a bare number with two or more decimal points, or a bare number with one or more decimal points and a leading 'v' character (also bare). For example: $vs1 = 1.2.3; # encoded as \1\2\3 $vs2 = v1.2; # encoded as \1\2 However, the use of bare v-strings to initialize version objects is B discouraged in all circumstances. Also, bare v-strings are not completely supported in any version of Perl prior to 5.8.1. If you insist on using bare v-strings with Perl > 5.6.0, be aware of the following limitations: 1) For Perl releases 5.6.0 through 5.8.0, the v-string code merely guesses, based on some characteristics of v-strings. You B use a three part version, e.g. 1.2.3 or v1.2.3 in order for this heuristic to be successful. 2) For Perl releases 5.8.1 and later, v-strings have changed in the Perl core to be magical, which means that the version.pm code can automatically determine whether the v-string encoding was used. 3) In all cases, a version created using v-strings will have a stringified form that has a leading 'v' character, for the simple reason that sometimes it is impossible to tell whether one was present initially. =head2 Version Object Internals version.pm provides an overloaded version object that is designed to both encapsulate the author's intended $VERSION assignment as well as make it completely natural to use those objects as if they were numbers (e.g. for comparisons). To do this, a version object contains both the original representation as typed by the author, as well as a parsed representation to ease comparisons. Version objects employ L methods to simplify code that needs to compare, print, etc the objects. The internal structure of version objects is a blessed hash with several components: bless( { 'original' => 'v1.2.3_4', 'alpha' => 1, 'qv' => 1, 'version' => [ 1, 2, 3, 4 ] }, 'version' ); =over 4 =item original A faithful representation of the value used to initialize this version object. The only time this will not be precisely the same characters that exist in the source file is if a short dotted-decimal version like v1.2 was used (in which case it will contain 'v1.2'). This form is B discouraged, in that it will confuse you and your users. =item qv A boolean that denotes whether this is a decimal or dotted-decimal version. See L. =item alpha A boolean that denotes whether this is an alpha version. NOTE: that the underscore can only appear in the last position. See L. =item version An array of non-negative integers that is used for comparison purposes with other version objects. =back =head2 Replacement UNIVERSAL::VERSION In addition to the version objects, this modules also replaces the core UNIVERSAL::VERSION function with one that uses version objects for its comparisons. The return from this operator is always the stringified form as a simple scalar (i.e. not an object), but the warning message generated includes either the stringified form or the normal form, depending on how it was called. For example: package Foo; $VERSION = 1.2; package Bar; $VERSION = "v1.3.5"; # works with all Perl's (since it is quoted) package main; use version; print $Foo::VERSION; # prints 1.2 print $Bar::VERSION; # prints 1.003005 eval "use foo 10"; print $@; # prints "foo version 10 required..." eval "use foo 1.3.5; # work in Perl 5.6.1 or better print $@; # prints "foo version 1.3.5 required..." eval "use bar 1.3.6"; print $@; # prints "bar version 1.3.6 required..." eval "use bar 1.004"; # note Decimal version print $@; # prints "bar version 1.004 required..." IMPORTANT NOTE: This may mean that code which searches for a specific string (to determine whether a given module is available) may need to be changed. It is always better to use the built-in comparison implicit in C or C, rather than manually poking at C<< class->VERSION >> and then doing a comparison yourself. The replacement UNIVERSAL::VERSION, when used as a function, like this: print $module->VERSION; will also exclusively return the stringified form. See L for more details. =head1 USAGE DETAILS =head2 Using modules that use version.pm As much as possible, the version.pm module remains compatible with all current code. However, if your module is using a module that has defined C<$VERSION> using the version class, there are a couple of things to be aware of. For purposes of discussion, we will assume that we have the following module installed: package Example; use version; $VERSION = qv('1.2.2'); ...module code here... 1; =over 4 =item Decimal versions always work Code of the form: use Example 1.002003; will always work correctly. The C will perform an automatic C<$VERSION> comparison using the floating point number given as the first term after the module name (e.g. above 1.002.003). In this case, the installed module is too old for the requested line, so you would see an error like: Example version 1.002003 (v1.2.3) required--this is only version 1.002002 (v1.2.2)... =item Dotted-Decimal version work sometimes With Perl >= 5.6.2, you can also use a line like this: use Example 1.2.3; and it will again work (i.e. give the error message as above), even with releases of Perl which do not normally support v-strings (see L above). This has to do with that fact that C only checks to see if the second term I and passes that to the replacement L. This is not true in Perl 5.005_04, however, so you are B to always use a Decimal version in your code, even for those versions of Perl which support the Dotted-Decimal version. =back =head2 Object Methods =over 4 =item new() Like many OO interfaces, the new() method is used to initialize version objects. If two arguments are passed to C, the B one will be used as if it were prefixed with "v". This is to support historical use of the C operator with the CVS variable $Revision, which is automatically incremented by CVS every time the file is committed to the repository. In order to facilitate this feature, the following code can be employed: $VERSION = version->new(qw$Revision: 2.7 $); and the version object will be created as if the following code were used: $VERSION = version->new("v2.7"); In other words, the version will be automatically parsed out of the string, and it will be quoted to preserve the meaning CVS normally carries for versions. The CVS $Revision$ increments differently from Decimal versions (i.e. 1.10 follows 1.9), so it must be handled as if it were a Dotted-Decimal Version. A new version object can be created as a copy of an existing version object, either as a class method: $v1 = version->new(12.3); $v2 = version->new($v1); or as an object method: $v1 = version->new(12.3); $v2 = $v1->new(12.3); and in each case, $v1 and $v2 will be identical. NOTE: if you create a new object using an existing object like this: $v2 = $v1->new(); the new object B be a clone of the existing object. In the example case, $v2 will be an empty object of the same type as $v1. =back =over 4 =item qv() An alternate way to create a new version object is through the exported qv() sub. This is not strictly like other q? operators (like qq, qw), in that the only delimiters supported are parentheses (or spaces). It is the best way to initialize a short version without triggering the floating point interpretation. For example: $v1 = qv(1.2); # v1.2.0 $v2 = qv("1.2"); # also v1.2.0 As you can see, either a bare number or a quoted string can usually be used interchangeably, except in the case of a trailing zero, which must be quoted to be converted properly. For this reason, it is strongly recommended that all initializers to qv() be quoted strings instead of bare numbers. To prevent the C function from being exported to the caller's namespace, either use version with a null parameter: use version (); or just require version, like this: require version; Both methods will prevent the import() method from firing and exporting the C sub. =back For the subsequent examples, the following three objects will be used: $ver = version->new("1.2.3.4"); # see "Quoting Rules" $alpha = version->new("1.2.3_4"); # see "Alpha Versions" $nver = version->new(1.002); # see "Decimal Versions" =over 4 =item Normal Form For any version object which is initialized with multiple decimal places (either quoted or if possible v-string), or initialized using the L operator, the stringified representation is returned in a normalized or reduced form (no extraneous zeros), and with a leading 'v': print $ver->normal; # prints as v1.2.3.4 print $ver->stringify; # ditto print $ver; # ditto print $nver->normal; # prints as v1.2.0 print $nver->stringify; # prints as 1.002, # see "Stringification" In order to preserve the meaning of the processed version, the normalized representation will always contain at least three sub terms. In other words, the following is guaranteed to always be true: my $newver = version->new($ver->stringify); if ($newver eq $ver ) # always true {...} =back =over 4 =item Numification Although all mathematical operations on version objects are forbidden by default, it is possible to retrieve a number which corresponds to the version object through the use of the $obj->numify method. For formatting purposes, when displaying a number which corresponds a version object, all sub versions are assumed to have three decimal places. So for example: print $ver->numify; # prints 1.002003004 print $nver->numify; # prints 1.002 Unlike the stringification operator, there is never any need to append trailing zeros to preserve the correct version value. =back =over 4 =item Stringification The default stringification for version objects returns exactly the same string as was used to create it, whether you used C or C, with one exception. The sole exception is if the object was created using C and the initializer did not have two decimal places or a leading 'v' (both optional), then the stringified form will have a leading 'v' prepended, in order to support round-trip processing. For example: Initialized as Stringifies to ============== ============== version->new("1.2") 1.2 version->new("v1.2") v1.2 qv("1.2.3") 1.2.3 qv("v1.3.5") v1.3.5 qv("1.2") v1.2 ### exceptional case See also L, as this also returns the stringified form when used as a class method. IMPORTANT NOTE: There is one exceptional cases shown in the above table where the "initializer" is not stringwise equivalent to the stringified representation. If you use the C() operator on a version without a leading 'v' B with only a single decimal place, the stringified output will have a leading 'v', to preserve the sense. See the L operator for more details. IMPORTANT NOTE 2: Attempting to bypass the normal stringification rules by manually applying L and L will sometimes yield surprising results: print version->new(version->new("v1.0")->numify)->normal; # v1.0.0 The reason for this is that the L operator will turn "v1.0" into the equivalent string "1.000000". Forcing the outer version object to L form will display the mathematically equivalent "v1.0.0". As the example in L shows, you can always create a copy of an existing version object with the same value by the very compact: $v2 = $v1->new($v1); and be assured that both C<$v1> and C<$v2> will be completely equivalent, down to the same internal representation as well as stringification. =back =over 4 =item Comparison operators Both C and C=E> operators perform the same comparison between terms (upgrading to a version object automatically). Perl automatically generates all of the other comparison operators based on those two. In addition to the obvious equalities listed below, appending a single trailing 0 term does not change the value of a version for comparison purposes. In other words "v1.2" and "1.2.0" will compare as identical. For example, the following relations hold: As Number As String Truth Value ------------- ---------------- ----------- $ver > 1.0 $ver gt "1.0" true $ver < 2.5 $ver lt true $ver != 1.3 $ver ne "1.3" true $ver == 1.2 $ver eq "1.2" false $ver == 1.2.3.4 $ver eq "1.2.3.4" see discussion below It is probably best to chose either the Decimal notation or the string notation and stick with it, to reduce confusion. Perl6 version objects B only support Decimal comparisons. See also L. WARNING: Comparing version with unequal numbers of decimal points (whether explicitly or implicitly initialized), may yield unexpected results at first glance. For example, the following inequalities hold: version->new(0.96) > version->new(0.95); # 0.960.0 > 0.950.0 version->new("0.96.1") < version->new(0.95); # 0.096.1 < 0.950.0 For this reason, it is best to use either exclusively L or L with multiple decimal points. =back =over 4 =item Logical Operators If you need to test whether a version object has been initialized, you can simply test it directly: $vobj = version->new($something); if ( $vobj ) # true only if $something was non-blank You can also test whether a version object is an alpha version, for example to prevent the use of some feature not present in the main release: $vobj = version->new("1.2_3"); # MUST QUOTE ...later... if ( $vobj->is_alpha ) # True =back =head1 AUTHOR John Peacock Ejpeacock@cpan.orgE =head1 SEE ALSO L. =cut perl5/version/vpp.pm000044400000052642152462470720010443 0ustar00package charstar; # a little helper class to emulate C char* semantics in Perl # so that prescan_version can use the same code as in C use overload ( '""' => \&thischar, '0+' => \&thischar, '++' => \&increment, '--' => \&decrement, '+' => \&plus, '-' => \&minus, '*' => \&multiply, 'cmp' => \&cmp, '<=>' => \&spaceship, 'bool' => \&thischar, '=' => \&clone, ); sub new { my ($self, $string) = @_; my $class = ref($self) || $self; my $obj = { string => [split(//,$string)], current => 0, }; return bless $obj, $class; } sub thischar { my ($self) = @_; my $last = $#{$self->{string}}; my $curr = $self->{current}; if ($curr >= 0 && $curr <= $last) { return $self->{string}->[$curr]; } else { return ''; } } sub increment { my ($self) = @_; $self->{current}++; } sub decrement { my ($self) = @_; $self->{current}--; } sub plus { my ($self, $offset) = @_; my $rself = $self->clone; $rself->{current} += $offset; return $rself; } sub minus { my ($self, $offset) = @_; my $rself = $self->clone; $rself->{current} -= $offset; return $rself; } sub multiply { my ($left, $right, $swapped) = @_; my $char = $left->thischar(); return $char * $right; } sub spaceship { my ($left, $right, $swapped) = @_; unless (ref($right)) { # not an object already $right = $left->new($right); } return $left->{current} <=> $right->{current}; } sub cmp { my ($left, $right, $swapped) = @_; unless (ref($right)) { # not an object already if (length($right) == 1) { # comparing single character only return $left->thischar cmp $right; } $right = $left->new($right); } return $left->currstr cmp $right->currstr; } sub bool { my ($self) = @_; my $char = $self->thischar; return ($char ne ''); } sub clone { my ($left, $right, $swapped) = @_; $right = { string => [@{$left->{string}}], current => $left->{current}, }; return bless $right, ref($left); } sub currstr { my ($self, $s) = @_; my $curr = $self->{current}; my $last = $#{$self->{string}}; if (defined($s) && $s->{current} < $last) { $last = $s->{current}; } my $string = join('', @{$self->{string}}[$curr..$last]); return $string; } package version::vpp; use 5.006002; use strict; use warnings::register; use Config; our $VERSION = 0.9929; our $CLASS = 'version::vpp'; our ($LAX, $STRICT, $WARN_CATEGORY); if ($] > 5.015) { warnings::register_categories(qw/version/); $WARN_CATEGORY = 'version'; } else { $WARN_CATEGORY = 'numeric'; } require version::regex; *version::vpp::is_strict = \&version::regex::is_strict; *version::vpp::is_lax = \&version::regex::is_lax; *LAX = \$version::regex::LAX; *STRICT = \$version::regex::STRICT; use overload ( '""' => \&stringify, '0+' => \&numify, 'cmp' => \&vcmp, '<=>' => \&vcmp, 'bool' => \&vbool, '+' => \&vnoop, '-' => \&vnoop, '*' => \&vnoop, '/' => \&vnoop, '+=' => \&vnoop, '-=' => \&vnoop, '*=' => \&vnoop, '/=' => \&vnoop, 'abs' => \&vnoop, ); sub import { no strict 'refs'; my ($class) = shift; # Set up any derived class unless ($class eq $CLASS) { local $^W; *{$class.'::declare'} = \&{$CLASS.'::declare'}; *{$class.'::qv'} = \&{$CLASS.'::qv'}; } my %args; if (@_) { # any remaining terms are arguments map { $args{$_} = 1 } @_ } else { # no parameters at all on use line %args = ( qv => 1, 'UNIVERSAL::VERSION' => 1, ); } my $callpkg = caller(); if (exists($args{declare})) { *{$callpkg.'::declare'} = sub {return $class->declare(shift) } unless defined(&{$callpkg.'::declare'}); } if (exists($args{qv})) { *{$callpkg.'::qv'} = sub {return $class->qv(shift) } unless defined(&{$callpkg.'::qv'}); } if (exists($args{'UNIVERSAL::VERSION'})) { no warnings qw/redefine/; *UNIVERSAL::VERSION = \&{$CLASS.'::_VERSION'}; } if (exists($args{'VERSION'})) { *{$callpkg.'::VERSION'} = \&{$CLASS.'::_VERSION'}; } if (exists($args{'is_strict'})) { *{$callpkg.'::is_strict'} = \&{$CLASS.'::is_strict'} unless defined(&{$callpkg.'::is_strict'}); } if (exists($args{'is_lax'})) { *{$callpkg.'::is_lax'} = \&{$CLASS.'::is_lax'} unless defined(&{$callpkg.'::is_lax'}); } } my $VERSION_MAX = 0x7FFFFFFF; # implement prescan_version as closely to the C version as possible use constant TRUE => 1; use constant FALSE => 0; sub isDIGIT { my ($char) = shift->thischar(); return ($char =~ /\d/); } sub isALPHA { my ($char) = shift->thischar(); return ($char =~ /[a-zA-Z]/); } sub isSPACE { my ($char) = shift->thischar(); return ($char =~ /\s/); } sub BADVERSION { my ($s, $errstr, $error) = @_; if ($errstr) { $$errstr = $error; } return $s; } sub prescan_version { my ($s, $strict, $errstr, $sqv, $ssaw_decimal, $swidth, $salpha) = @_; my $qv = defined $sqv ? $$sqv : FALSE; my $saw_decimal = defined $ssaw_decimal ? $$ssaw_decimal : 0; my $width = defined $swidth ? $$swidth : 3; my $alpha = defined $salpha ? $$salpha : FALSE; my $d = $s; if ($qv && isDIGIT($d)) { goto dotted_decimal_version; } if ($d eq 'v') { # explicit v-string $d++; if (isDIGIT($d)) { $qv = TRUE; } else { # degenerate v-string # requires v1.2.3 return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions require at least three parts)"); } dotted_decimal_version: if ($strict && $d eq '0' && isDIGIT($d+1)) { # no leading zeros allowed return BADVERSION($s,$errstr,"Invalid version format (no leading zeros)"); } while (isDIGIT($d)) { # integer part $d++; } if ($d eq '.') { $saw_decimal++; $d++; # decimal point } else { if ($strict) { # require v1.2.3 return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions require at least three parts)"); } else { goto version_prescan_finish; } } { my $i = 0; my $j = 0; while (isDIGIT($d)) { # just keep reading $i++; while (isDIGIT($d)) { $d++; $j++; # maximum 3 digits between decimal if ($strict && $j > 3) { return BADVERSION($s,$errstr,"Invalid version format (maximum 3 digits between decimals)"); } } if ($d eq '_') { if ($strict) { return BADVERSION($s,$errstr,"Invalid version format (no underscores)"); } if ( $alpha ) { return BADVERSION($s,$errstr,"Invalid version format (multiple underscores)"); } $d++; $alpha = TRUE; } elsif ($d eq '.') { if ($alpha) { return BADVERSION($s,$errstr,"Invalid version format (underscores before decimal)"); } $saw_decimal++; $d++; } elsif (!isDIGIT($d)) { last; } $j = 0; } if ($strict && $i < 2) { # requires v1.2.3 return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions require at least three parts)"); } } } # end if dotted-decimal else { # decimal versions my $j = 0; # special $strict case for leading '.' or '0' if ($strict) { if ($d eq '.') { return BADVERSION($s,$errstr,"Invalid version format (0 before decimal required)"); } if ($d eq '0' && isDIGIT($d+1)) { return BADVERSION($s,$errstr,"Invalid version format (no leading zeros)"); } } # and we never support negative version numbers if ($d eq '-') { return BADVERSION($s,$errstr,"Invalid version format (negative version number)"); } # consume all of the integer part while (isDIGIT($d)) { $d++; } # look for a fractional part if ($d eq '.') { # we found it, so consume it $saw_decimal++; $d++; } elsif (!$d || $d eq ';' || isSPACE($d) || $d eq '}') { if ( $d == $s ) { # found nothing return BADVERSION($s,$errstr,"Invalid version format (version required)"); } # found just an integer goto version_prescan_finish; } elsif ( $d == $s ) { # didn't find either integer or period return BADVERSION($s,$errstr,"Invalid version format (non-numeric data)"); } elsif ($d eq '_') { # underscore can't come after integer part if ($strict) { return BADVERSION($s,$errstr,"Invalid version format (no underscores)"); } elsif (isDIGIT($d+1)) { return BADVERSION($s,$errstr,"Invalid version format (alpha without decimal)"); } else { return BADVERSION($s,$errstr,"Invalid version format (misplaced underscore)"); } } elsif ($d) { # anything else after integer part is just invalid data return BADVERSION($s,$errstr,"Invalid version format (non-numeric data)"); } # scan the fractional part after the decimal point if ($d && !isDIGIT($d) && ($strict || ! ($d eq ';' || isSPACE($d) || $d eq '}') )) { # $strict or lax-but-not-the-end return BADVERSION($s,$errstr,"Invalid version format (fractional part required)"); } while (isDIGIT($d)) { $d++; $j++; if ($d eq '.' && isDIGIT($d-1)) { if ($alpha) { return BADVERSION($s,$errstr,"Invalid version format (underscores before decimal)"); } if ($strict) { return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions must begin with 'v')"); } $d = $s; # start all over again $qv = TRUE; goto dotted_decimal_version; } if ($d eq '_') { if ($strict) { return BADVERSION($s,$errstr,"Invalid version format (no underscores)"); } if ( $alpha ) { return BADVERSION($s,$errstr,"Invalid version format (multiple underscores)"); } if ( ! isDIGIT($d+1) ) { return BADVERSION($s,$errstr,"Invalid version format (misplaced underscore)"); } $width = $j; $d++; $alpha = TRUE; } } } version_prescan_finish: while (isSPACE($d)) { $d++; } if ($d && !isDIGIT($d) && (! ($d eq ';' || $d eq '}') )) { # trailing non-numeric data return BADVERSION($s,$errstr,"Invalid version format (non-numeric data)"); } if ($saw_decimal > 1 && ($d-1) eq '.') { # no trailing period allowed return BADVERSION($s,$errstr,"Invalid version format (trailing decimal)"); } if (defined $sqv) { $$sqv = $qv; } if (defined $swidth) { $$swidth = $width; } if (defined $ssaw_decimal) { $$ssaw_decimal = $saw_decimal; } if (defined $salpha) { $$salpha = $alpha; } return $d; } sub scan_version { my ($s, $rv, $qv) = @_; my $start; my $pos; my $last; my $errstr; my $saw_decimal = 0; my $width = 3; my $alpha = FALSE; my $vinf = FALSE; my @av; $s = new charstar $s; while (isSPACE($s)) { # leading whitespace is OK $s++; } $last = prescan_version($s, FALSE, \$errstr, \$qv, \$saw_decimal, \$width, \$alpha); if ($errstr) { # 'undef' is a special case and not an error if ( $s ne 'undef') { require Carp; Carp::croak($errstr); } } $start = $s; if ($s eq 'v') { $s++; } $pos = $s; if ( $qv ) { $$rv->{qv} = $qv; } if ( $alpha ) { $$rv->{alpha} = $alpha; } if ( !$qv && $width < 3 ) { $$rv->{width} = $width; } while (isDIGIT($pos) || $pos eq '_') { $pos++; } if (!isALPHA($pos)) { my $rev; for (;;) { $rev = 0; { # this is atoi() that delimits on underscores my $end = $pos; my $mult = 1; my $orev; # the following if() will only be true after the decimal # point of a version originally created with a bare # floating point number, i.e. not quoted in any way # if ( !$qv && $s > $start && $saw_decimal == 1 ) { $mult *= 100; while ( $s < $end ) { next if $s eq '_'; $orev = $rev; $rev += $s * $mult; $mult /= 10; if ( (abs($orev) > abs($rev)) || (abs($rev) > $VERSION_MAX )) { warn("Integer overflow in version %d", $VERSION_MAX); $s = $end - 1; $rev = $VERSION_MAX; $vinf = 1; } $s++; if ( $s eq '_' ) { $s++; } } } else { while (--$end >= $s) { next if $end eq '_'; $orev = $rev; $rev += $end * $mult; $mult *= 10; if ( (abs($orev) > abs($rev)) || (abs($rev) > $VERSION_MAX )) { warn("Integer overflow in version"); $end = $s - 1; $rev = $VERSION_MAX; $vinf = 1; } } } } # Append revision push @av, $rev; if ( $vinf ) { $s = $last; last; } elsif ( $pos eq '.' ) { $s = ++$pos; } elsif ( $pos eq '_' && isDIGIT($pos+1) ) { $s = ++$pos; } elsif ( $pos eq ',' && isDIGIT($pos+1) ) { $s = ++$pos; } elsif ( isDIGIT($pos) ) { $s = $pos; } else { $s = $pos; last; } if ( $qv ) { while ( isDIGIT($pos) || $pos eq '_') { $pos++; } } else { my $digits = 0; while ( ( isDIGIT($pos) || $pos eq '_' ) && $digits < 3 ) { if ( $pos ne '_' ) { $digits++; } $pos++; } } } } if ( $qv ) { # quoted versions always get at least three terms my $len = $#av; # This for loop appears to trigger a compiler bug on OS X, as it # loops infinitely. Yes, len is negative. No, it makes no sense. # Compiler in question is: # gcc version 3.3 20030304 (Apple Computer, Inc. build 1640) # for ( len = 2 - len; len > 0; len-- ) # av_push(MUTABLE_AV(sv), newSViv(0)); # $len = 2 - $len; while ($len-- > 0) { push @av, 0; } } # need to save off the current version string for later if ( $vinf ) { $$rv->{original} = "v.Inf"; $$rv->{vinf} = 1; } elsif ( $s > $start ) { $$rv->{original} = $start->currstr($s); if ( $qv && $saw_decimal == 1 && $start ne 'v' ) { # need to insert a v to be consistent $$rv->{original} = 'v' . $$rv->{original}; } } else { $$rv->{original} = '0'; push(@av, 0); } # And finally, store the AV in the hash $$rv->{version} = \@av; # fix RT#19517 - special case 'undef' as string if ($s eq 'undef') { $s += 5; } return $s; } sub new { my $class = shift; unless (defined $class or $#_ > 1) { require Carp; Carp::croak('Usage: version::new(class, version)'); } my $self = bless ({}, ref ($class) || $class); my $qv = FALSE; if ( $#_ == 1 ) { # must be CVS-style $qv = TRUE; } my $value = pop; # always going to be the last element if ( ref($value) && eval('$value->isa("version")') ) { # Can copy the elements directly $self->{version} = [ @{$value->{version} } ]; $self->{qv} = 1 if $value->{qv}; $self->{alpha} = 1 if $value->{alpha}; $self->{original} = ''.$value->{original}; return $self; } if ( not defined $value or $value =~ /^undef$/ ) { # RT #19517 - special case for undef comparison # or someone forgot to pass a value push @{$self->{version}}, 0; $self->{original} = "0"; return ($self); } if (ref($value) =~ m/ARRAY|HASH/) { require Carp; Carp::croak("Invalid version format (non-numeric data)"); } $value = _un_vstring($value); if ($Config{d_setlocale}) { use POSIX qw/locale_h/; use if $Config{d_setlocale}, 'locale'; my $currlocale = setlocale(LC_ALL); # if the current locale uses commas for decimal points, we # just replace commas with decimal places, rather than changing # locales if ( localeconv()->{decimal_point} eq ',' ) { $value =~ tr/,/./; } } # exponential notation if ( $value =~ /\d+.?\d*e[-+]?\d+/ ) { $value = sprintf("%.9f",$value); $value =~ s/(0+)$//; # trim trailing zeros } my $s = scan_version($value, \$self, $qv); if ($s) { # must be something left over warn(sprintf "Version string '%s' contains invalid data; " ."ignoring: '%s'", $value, $s); } return ($self); } *parse = \&new; sub numify { my ($self) = @_; unless (_verify($self)) { require Carp; Carp::croak("Invalid version object"); } my $alpha = $self->{alpha} || ""; my $len = $#{$self->{version}}; my $digit = $self->{version}[0]; my $string = sprintf("%d.", $digit ); if ($alpha and warnings::enabled()) { warnings::warn($WARN_CATEGORY, 'alpha->numify() is lossy'); } for ( my $i = 1 ; $i <= $len ; $i++ ) { $digit = $self->{version}[$i]; $string .= sprintf("%03d", $digit); } if ( $len == 0 ) { $string .= sprintf("000"); } return $string; } sub normal { my ($self) = @_; unless (_verify($self)) { require Carp; Carp::croak("Invalid version object"); } my $len = $#{$self->{version}}; my $digit = $self->{version}[0]; my $string = sprintf("v%d", $digit ); for ( my $i = 1 ; $i <= $len ; $i++ ) { $digit = $self->{version}[$i]; $string .= sprintf(".%d", $digit); } if ( $len <= 2 ) { for ( $len = 2 - $len; $len != 0; $len-- ) { $string .= sprintf(".%0d", 0); } } return $string; } sub stringify { my ($self) = @_; unless (_verify($self)) { require Carp; Carp::croak("Invalid version object"); } return exists $self->{original} ? $self->{original} : exists $self->{qv} ? $self->normal : $self->numify; } sub vcmp { my ($left,$right,$swap) = @_; die "Usage: version::vcmp(lobj, robj, ...)" if @_ < 2; my $class = ref($left); unless ( UNIVERSAL::isa($right, $class) ) { $right = $class->new($right); } if ( $swap ) { ($left, $right) = ($right, $left); } unless (_verify($left)) { require Carp; Carp::croak("Invalid version object"); } unless (_verify($right)) { require Carp; Carp::croak("Invalid version format"); } my $l = $#{$left->{version}}; my $r = $#{$right->{version}}; my $m = $l < $r ? $l : $r; my $lalpha = $left->is_alpha; my $ralpha = $right->is_alpha; my $retval = 0; my $i = 0; while ( $i <= $m && $retval == 0 ) { $retval = $left->{version}[$i] <=> $right->{version}[$i]; $i++; } # possible match except for trailing 0's if ( $retval == 0 && $l != $r ) { if ( $l < $r ) { while ( $i <= $r && $retval == 0 ) { if ( $right->{version}[$i] != 0 ) { $retval = -1; # not a match after all } $i++; } } else { while ( $i <= $l && $retval == 0 ) { if ( $left->{version}[$i] != 0 ) { $retval = +1; # not a match after all } $i++; } } } return $retval; } sub vbool { my ($self) = @_; return vcmp($self,$self->new("0"),1); } sub vnoop { require Carp; Carp::croak("operation not supported with version object"); } sub is_alpha { my ($self) = @_; return (exists $self->{alpha}); } sub qv { my $value = shift; my $class = $CLASS; if (@_) { $class = ref($value) || $value; $value = shift; } $value = _un_vstring($value); $value = 'v'.$value unless $value =~ /(^v|\d+\.\d+\.\d)/; my $obj = $CLASS->new($value); return bless $obj, $class; } *declare = \&qv; sub is_qv { my ($self) = @_; return (exists $self->{qv}); } sub _verify { my ($self) = @_; if ( ref($self) && eval { exists $self->{version} } && ref($self->{version}) eq 'ARRAY' ) { return 1; } else { return 0; } } sub _is_non_alphanumeric { my $s = shift; $s = new charstar $s; while ($s) { return 0 if isSPACE($s); # early out return 1 unless (isALPHA($s) || isDIGIT($s) || $s =~ /[.-]/); $s++; } return 0; } sub _un_vstring { my $value = shift; # may be a v-string if ( length($value) >= 1 && $value !~ /[,._]/ && _is_non_alphanumeric($value)) { my $tvalue; if ( $] >= 5.008_001 ) { $tvalue = _find_magic_vstring($value); $value = $tvalue if length $tvalue; } elsif ( $] >= 5.006_000 ) { $tvalue = sprintf("v%vd",$value); if ( $tvalue =~ /^v\d+(\.\d+)*$/ ) { # must be a v-string $value = $tvalue; } } } return $value; } sub _find_magic_vstring { my $value = shift; my $tvalue = ''; require B; my $sv = B::svref_2object(\$value); my $magic = ref($sv) eq 'B::PVMG' ? $sv->MAGIC : undef; while ( $magic ) { if ( $magic->TYPE eq 'V' ) { $tvalue = $magic->PTR; $tvalue =~ s/^v?(.+)$/v$1/; last; } else { $magic = $magic->MOREMAGIC; } } $tvalue =~ tr/_//d; return $tvalue; } sub _VERSION { my ($obj, $req) = @_; my $class = ref($obj) || $obj; no strict 'refs'; if ( exists $INC{"$class.pm"} and not %{"$class\::"} and $] >= 5.008) { # file but no package require Carp; Carp::croak( "$class defines neither package nor VERSION" ."--version check failed"); } my $version = eval "\$$class\::VERSION"; if ( defined $version ) { local $^W if $] <= 5.008; $version = version::vpp->new($version); } if ( defined $req ) { unless ( defined $version ) { require Carp; my $msg = $] < 5.006 ? "$class version $req required--this is only version " : "$class does not define \$$class\::VERSION" ."--version check failed"; if ( $ENV{VERSION_DEBUG} ) { Carp::confess($msg); } else { Carp::croak($msg); } } $req = version::vpp->new($req); if ( $req > $version ) { require Carp; if ( $req->is_qv ) { Carp::croak( sprintf ("%s version %s required--". "this is only version %s", $class, $req->normal, $version->normal) ); } else { Carp::croak( sprintf ("%s version %s required--". "this is only version %s", $class, $req->stringify, $version->stringify) ); } } } return defined $version ? $version->stringify : undef; } 1; #this line is important and will help the module return a true value perl5/version/regex.pm000044400000007750152462470720010750 0ustar00package version::regex; use strict; our $VERSION = 0.9929; #--------------------------------------------------------------------------# # Version regexp components #--------------------------------------------------------------------------# # Fraction part of a decimal version number. This is a common part of # both strict and lax decimal versions my $FRACTION_PART = qr/\.[0-9]+/; # First part of either decimal or dotted-decimal strict version number. # Unsigned integer with no leading zeroes (except for zero itself) to # avoid confusion with octal. my $STRICT_INTEGER_PART = qr/0|[1-9][0-9]*/; # First part of either decimal or dotted-decimal lax version number. # Unsigned integer, but allowing leading zeros. Always interpreted # as decimal. However, some forms of the resulting syntax give odd # results if used as ordinary Perl expressions, due to how perl treats # octals. E.g. # version->new("010" ) == 10 # version->new( 010 ) == 8 # version->new( 010.2) == 82 # "8" . "2" my $LAX_INTEGER_PART = qr/[0-9]+/; # Second and subsequent part of a strict dotted-decimal version number. # Leading zeroes are permitted, and the number is always decimal. # Limited to three digits to avoid overflow when converting to decimal # form and also avoid problematic style with excessive leading zeroes. my $STRICT_DOTTED_DECIMAL_PART = qr/\.[0-9]{1,3}/; # Second and subsequent part of a lax dotted-decimal version number. # Leading zeroes are permitted, and the number is always decimal. No # limit on the numerical value or number of digits, so there is the # possibility of overflow when converting to decimal form. my $LAX_DOTTED_DECIMAL_PART = qr/\.[0-9]+/; # Alpha suffix part of lax version number syntax. Acts like a # dotted-decimal part. my $LAX_ALPHA_PART = qr/_[0-9]+/; #--------------------------------------------------------------------------# # Strict version regexp definitions #--------------------------------------------------------------------------# # Strict decimal version number. our $STRICT_DECIMAL_VERSION = qr/ $STRICT_INTEGER_PART $FRACTION_PART? /x; # Strict dotted-decimal version number. Must have both leading "v" and # at least three parts, to avoid confusion with decimal syntax. our $STRICT_DOTTED_DECIMAL_VERSION = qr/ v $STRICT_INTEGER_PART $STRICT_DOTTED_DECIMAL_PART{2,} /x; # Complete strict version number syntax -- should generally be used # anchored: qr/ \A $STRICT \z /x our $STRICT = qr/ $STRICT_DECIMAL_VERSION | $STRICT_DOTTED_DECIMAL_VERSION /x; #--------------------------------------------------------------------------# # Lax version regexp definitions #--------------------------------------------------------------------------# # Lax decimal version number. Just like the strict one except for # allowing an alpha suffix or allowing a leading or trailing # decimal-point our $LAX_DECIMAL_VERSION = qr/ $LAX_INTEGER_PART (?: $FRACTION_PART | \. )? $LAX_ALPHA_PART? | $FRACTION_PART $LAX_ALPHA_PART? /x; # Lax dotted-decimal version number. Distinguished by having either # leading "v" or at least three non-alpha parts. Alpha part is only # permitted if there are at least two non-alpha parts. Strangely # enough, without the leading "v", Perl takes .1.2 to mean v0.1.2, # so when there is no "v", the leading part is optional our $LAX_DOTTED_DECIMAL_VERSION = qr/ v $LAX_INTEGER_PART (?: $LAX_DOTTED_DECIMAL_PART+ $LAX_ALPHA_PART? )? | $LAX_INTEGER_PART? $LAX_DOTTED_DECIMAL_PART{2,} $LAX_ALPHA_PART? /x; # Complete lax version number syntax -- should generally be used # anchored: qr/ \A $LAX \z /x # # The string 'undef' is a special case to make for easier handling # of return values from ExtUtils::MM->parse_version our $LAX = qr/ undef | $LAX_DOTTED_DECIMAL_VERSION | $LAX_DECIMAL_VERSION /x; #--------------------------------------------------------------------------# # Preloaded methods go here. sub is_strict { defined $_[0] && $_[0] =~ qr/ \A $STRICT \z /x } sub is_lax { defined $_[0] && $_[0] =~ qr/ \A $LAX \z /x } 1; perl5/version/vxs.pm000044400000000744152462470720010452 0ustar00#!perl -w package version::vxs; use v5.10; use strict; our $VERSION = 0.9929; our $CLASS = 'version::vxs'; our @ISA; eval { require XSLoader; local $^W; # shut up the 'redefined' warning for UNIVERSAL::VERSION XSLoader::load('version::vxs', $VERSION); 1; } or do { require DynaLoader; push @ISA, 'DynaLoader'; local $^W; # shut up the 'redefined' warning for UNIVERSAL::VERSION bootstrap version::vxs $VERSION; }; # Preloaded methods go here. 1; perl5/version.pm000044400000006735152462470720007640 0ustar00#!perl -w package version; use 5.006002; use strict; use warnings::register; if ($] >= 5.015) { warnings::register_categories(qw/version/); } our $VERSION = 0.9929; our $CLASS = 'version'; our (@ISA, $STRICT, $LAX); # !!!!Delete this next block completely when adding to Perl core!!!! { local $SIG{'__DIE__'}; eval "use version::vxs $VERSION"; if ( $@ ) { # don't have the XS version installed eval "use version::vpp $VERSION"; # don't tempt fate die "$@" if ( $@ ); push @ISA, "version::vpp"; local $^W; *version::qv = \&version::vpp::qv; *version::declare = \&version::vpp::declare; *version::_VERSION = \&version::vpp::_VERSION; *version::vcmp = \&version::vpp::vcmp; *version::new = \&version::vpp::new; *version::numify = \&version::vpp::numify; *version::normal = \&version::vpp::normal; if ($] >= 5.009000) { no strict 'refs'; *version::stringify = \&version::vpp::stringify; *{'version::(""'} = \&version::vpp::stringify; *{'version::(<=>'} = \&version::vpp::vcmp; *{'version::(cmp'} = \&version::vpp::vcmp; *version::parse = \&version::vpp::parse; } } else { # use XS module push @ISA, "version::vxs"; local $^W; *version::declare = \&version::vxs::declare; *version::qv = \&version::vxs::qv; *version::_VERSION = \&version::vxs::_VERSION; *version::vcmp = \&version::vxs::VCMP; *version::new = \&version::vxs::new; *version::numify = \&version::vxs::numify; *version::normal = \&version::vxs::normal; if ($] >= 5.009000) { no strict 'refs'; *version::stringify = \&version::vxs::stringify; *{'version::(""'} = \&version::vxs::stringify; *{'version::(<=>'} = \&version::vxs::VCMP; *{'version::(cmp'} = \&version::vxs::VCMP; *version::parse = \&version::vxs::parse; } } } # avoid using Exporter require version::regex; *version::is_lax = \&version::regex::is_lax; *version::is_strict = \&version::regex::is_strict; *LAX = \$version::regex::LAX; *LAX_DECIMAL_VERSION = \$version::regex::LAX_DECIMAL_VERSION; *LAX_DOTTED_DECIMAL_VERSION = \$version::regex::LAX_DOTTED_DECIMAL_VERSION; *STRICT = \$version::regex::STRICT; *STRICT_DECIMAL_VERSION = \$version::regex::STRICT_DECIMAL_VERSION; *STRICT_DOTTED_DECIMAL_VERSION = \$version::regex::STRICT_DOTTED_DECIMAL_VERSION; sub import { no strict 'refs'; my ($class) = shift; # Set up any derived class unless ($class eq $CLASS) { local $^W; *{$class.'::declare'} = \&{$CLASS.'::declare'}; *{$class.'::qv'} = \&{$CLASS.'::qv'}; } my %args; if (@_) { # any remaining terms are arguments map { $args{$_} = 1 } @_ } else { # no parameters at all on use line %args = ( qv => 1, 'UNIVERSAL::VERSION' => 1, ); } my $callpkg = caller(); if (exists($args{declare})) { *{$callpkg.'::declare'} = sub {return $class->declare(shift) } unless defined(&{$callpkg.'::declare'}); } if (exists($args{qv})) { *{$callpkg.'::qv'} = sub {return $class->qv(shift) } unless defined(&{$callpkg.'::qv'}); } if (exists($args{'UNIVERSAL::VERSION'})) { local $^W; *UNIVERSAL::VERSION = \&{$CLASS.'::_VERSION'}; } if (exists($args{'VERSION'})) { *{$callpkg.'::VERSION'} = \&{$CLASS.'::_VERSION'}; } if (exists($args{'is_strict'})) { *{$callpkg.'::is_strict'} = \&{$CLASS.'::is_strict'} unless defined(&{$callpkg.'::is_strict'}); } if (exists($args{'is_lax'})) { *{$callpkg.'::is_lax'} = \&{$CLASS.'::is_lax'} unless defined(&{$callpkg.'::is_lax'}); } } 1; perl5/Crypt/SSLeay.pm000044400000042164152462470720010410 0ustar00package Crypt::SSLeay; use strict; use vars '$VERSION'; $VERSION = '0.72'; $VERSION = eval $VERSION; eval { require XSLoader; XSLoader::load('Crypt::SSLeay', $VERSION); 1; } or do { require DynaLoader; use vars '@ISA'; # not really locally scoped, it just looks that way @ISA = qw(DynaLoader); bootstrap Crypt::SSLeay $VERSION; }; use vars qw(%CIPHERS); %CIPHERS = ( 'NULL-MD5' => "No encryption with a MD5 MAC", 'RC4-MD5' => "128 bit RC4 encryption with a MD5 MAC", 'EXP-RC4-MD5' => "40 bit RC4 encryption with a MD5 MAC", 'RC2-CBC-MD5' => "128 bit RC2 encryption with a MD5 MAC", 'EXP-RC2-CBC-MD5' => "40 bit RC2 encryption with a MD5 MAC", 'IDEA-CBC-MD5' => "128 bit IDEA encryption with a MD5 MAC", 'DES-CBC-MD5' => "56 bit DES encryption with a MD5 MAC", 'DES-CBC-SHA' => "56 bit DES encryption with a SHA MAC", 'DES-CBC3-MD5' => "192 bit EDE3 DES encryption with a MD5 MAC", 'DES-CBC3-SHA' => "192 bit EDE3 DES encryption with a SHA MAC", 'DES-CFB-M1' => "56 bit CFB64 DES encryption with a one byte MD5 MAC", ); use Crypt::SSLeay::X509; # A xsupp bug made this necessary sub Crypt::SSLeay::CTX::DESTROY { shift->free; } sub Crypt::SSLeay::Conn::DESTROY { shift->free; } sub Crypt::SSLeay::X509::DESTROY { shift->free; } 1; __END__ =head1 NAME Crypt::SSLeay - OpenSSL support for LWP =head1 HEARTBLEED WARNING C will display a warning if it thinks your OpenSSL might be vulnerable to the L. You can, of course, go ahead and install the module, but you should be aware that your system might be exposed to an extremely serious vulnerability. This is just a heuristic based on the version reported by OpenSSL. It is entirely possible that your distrbution actually pushed a patched library, so if you have concerns, you should investigate further. =head1 SYNOPSIS use Net::SSL; use LWP::UserAgent; my $ua = LWP::UserAgent->new( ssl_opts => { verify_hostname => 0 }, ); my $response = $ua->get('https://www.example.com/'); print $response->content, "\n"; =head1 DESCRIPTION This Perl module provides support for the HTTPS protocol under L, to allow an L object to perform GET, HEAD, and POST requests over encrypted socket connections. Please see L for more information on POST requests. The C package provides C, which, if requested, is loaded by C for https requests and provides the necessary SSL glue. This distribution also makes following deprecated modules available: Crypt::SSLeay::CTX Crypt::SSLeay::Conn Crypt::SSLeay::X509 =head1 DO YOU NEED Crypt::SSLeay? Starting with version 6.02 of L, C support was unbundled into L. This module specifies as one of its prerequisites L which is automatically used by L unless this preference is overridden separately. C is a more complete implementation, and, crucially, it allows hostname verification. C does not support this. At this point, C is maintained to support existing software that already depends on it. However, it is possible that your software does not really depend on C, only on the ability of C class to communicate with sites over SSL/TLS. If are using version C 6.02 or later, and therefore have installed C and its dependencies, and do not explicitly C C before loading C, or override the default socket class, you are probably using C and do not really need C. If you have both C and C installed, and would like to force C to use C, you can use: use Net::HTTPS; $Net::HTTPS::SSL_SOCKET_CLASS = 'Net::SSL'; use LWP::UserAgent; or local $ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = 'Net::SSL'; use LWP::UserAgent; or use Net::SSL; use LWP::UserAgent; =head1 ENVIRONMENT VARIABLES =over 4 =item Specify SSL Socket Class C<$ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS}> can be used to instruct C to use C for HTTPS support rather than C. =item Proxy Support $ENV{HTTPS_PROXY} = 'http://proxy_hostname_or_ip:port'; =item Proxy Basic Authentication $ENV{HTTPS_PROXY_USERNAME} = 'username'; $ENV{HTTPS_PROXY_PASSWORD} = 'password'; =item SSL diagnostics and Debugging $ENV{HTTPS_DEBUG} = 1; =item Default SSL Version $ENV{HTTPS_VERSION} = '3'; =item Client Certificate Support $ENV{HTTPS_CERT_FILE} = 'certs/notacacert.pem'; $ENV{HTTPS_KEY_FILE} = 'certs/notacakeynopass.pem'; =item CA cert Peer Verification $ENV{HTTPS_CA_FILE} = 'certs/ca-bundle.crt'; $ENV{HTTPS_CA_DIR} = 'certs/'; =item Client PKCS12 cert support $ENV{HTTPS_PKCS12_FILE} = 'certs/pkcs12.pkcs12'; $ENV{HTTPS_PKCS12_PASSWORD} = 'PKCS12_PASSWORD'; =back =head1 INSTALL =head2 OpenSSL You must have OpenSSL installed before compiling this module. You can get the latest OpenSSL package from L. We no longer support pre-2000 versions of OpenSSL. If you are building OpenSSL from source, please follow the directions included in the source package. =head2 Crypt::SSLeay via Makefile.PL C accepts the following command line arguments: =over 4 =item C Path to OpenSSL headers. Can also be specified via C<$ENV{OPENSSL_INCLUDE}>. If the command line argument is provided, it overrides any value specified via the environment variable. Of course, you can ignore both the command line argument and the environment variable, and just add the path to your compiler specific environment variable such as C or C etc. =item C Path to OpenSSL libraries. Can also be specified via C<$ENV{OPENSSL_LIB}>. If the command line argument is provided, it overrides any value specified by the environment variable. Of course, you can ignore both the command line argument and the environment variable and just add the path to your compiler specific environment variable such as C or C etc. =item C Use C<--live-tests> to request tests that try to connect to an external web site, and C<--no-live_tests> to prevent such tests from running. If you run C interactively, and this argument is not specified on the command line, you will be prompted for a value. Default is false. =item C Boolean. Default is false. B: Does it work? =item C Boolean. Default is false. If you pass C<--verbose> on the command line, both C and C instances will be configured to echo what they are doing. =back If everything builds OK, but you get failures when during tests, ensure that C points to the location where the correct shared libraries are located. If you are using a custom OpenSSL build, please keep in mind that C must be built using the same compiler and build tools used to build C and OpenSSL. This can be more of an issue on Windows. If you are using Active State Perl, install the MinGW package distributed by them, and build OpenSSL using that before trying to build this module. If you have built your own Perl using Microsoft SDK tools or IDEs, make sure you build OpenSSL using the same tools. Depending on your OS, pre-built OpenSSL packages may be available. To get the require headers and import libraries, you may need to install a development version of your operating system's OpenSSL library package. The key is that C makes calls to the OpenSSL library, and how to do so is specified in the C header files that come with the library. Some systems break out the header files into a separate package from that of the libraries. Once the program has been built, you don't need the headers any more. =head2 Crypt::SSLeay The latest Crypt::SSLeay can be found at your nearest CPAN mirror, as well as L. Once you have downloaded it, C installs easily using the standard build process: $ perl Makefile.PL $ make $ make test $ make install or $ cpanm Crypt::SSLeay If you have OpenSSL headers and libraries in nonstandard locations, you can use $ perl Makefile.PL --incpath=... --libpath=... If you would like to use C with such custom locations, you can do $ OPENSSL_INCLUDE=... OPENSSL_LIB=... cpanm Crypt::SSLeay or, on Windows, > set OPENSSL_INCLUDE=... > set OPENSSL_LIB=... > cpanm Crypt::SSLeay If you are on Windows, and using a MinGW distribution bundled with ActiveState Perl or Strawberry Perl, you would use C rather than C. If you are using Microsoft's build tools, you would use C. For unattended (batch) installations, to be absolutely certain that F does not prompt for questions on STDIN, set the environment variable C as with any CPAN module built using L. =head3 VMS I do not have any experience with VMS. If OpenSSL headers and libraries are not in standard locations searched by your build system by default, please set things up so that they are. If you have generic instructions on how to do it, please open a ticket on RT with the information so I can add it to this document. =head1 PROXY SUPPORT L and L have their own versions of proxy support. Please read these sections to see which one is appropriate. =head2 LWP::UserAgent proxy support C has its own methods of proxying which may work for you and is likely to be incompatible with C proxy support. To use C proxy support, try something like: my $ua = LWP::UserAgent->new; $ua->proxy([qw( https http )], "$proxy_ip:$proxy_port"); At the time of this writing, libwww v5.6 seems to proxy https requests fine with an Apache F server. It sends a line like: GET https://www.example.com HTTP/1.1 to the proxy server, which is not the C request that some proxies would expect, so this may not work with other proxy servers than F. The C method is used by C's internal proxy support. =head2 Crypt::SSLeay proxy support For native C proxy support of https requests, you need to set the environment variable C to your proxy server and port, as in: # proxy support $ENV{HTTPS_PROXY} = 'http://proxy_hostname_or_ip:port'; $ENV{HTTPS_PROXY} = '127.0.0.1:8080'; Use of the C environment variable in this way is similar to Cenv_proxy()> usage, but calling that method will likely override or break the C support, so do not mix the two. Basic auth credentials to the proxy server can be provided this way: # proxy_basic_auth $ENV{HTTPS_PROXY_USERNAME} = 'username'; $ENV{HTTPS_PROXY_PASSWORD} = 'password'; For an example of LWP scripting with C native proxy support, please look at the F script in the C distribution. =head1 CLIENT CERTIFICATE SUPPORT Client certificates are supported. PEM encoded certificate and private key files may be used like this: $ENV{HTTPS_CERT_FILE} = 'certs/notacacert.pem'; $ENV{HTTPS_KEY_FILE} = 'certs/notacakeynopass.pem'; You may test your files with the F program, bundled with the distribution, by issuing a command like: perl eg/net-ssl-test -cert=certs/notacacert.pem \ -key=certs/notacakeynopass.pem -d GET $HOST_NAME Additionally, if you would like to tell the client where the CA file is, you may set these. $ENV{HTTPS_CA_FILE} = "some_file"; $ENV{HTTPS_CA_DIR} = "some_dir"; Note that, if specified, C<$ENV{HTTPS_CA_FILE}> must point to the actual certificate file. That is, C<$ENV{HTTPS_CA_DIR}> is *not* the path were C<$ENV{HTTPS_CA_FILE}> is located. For certificates in C<$ENV{HTTPS_CA_DIR}> to be picked up, follow the instructions on L There is no sample CA cert file at this time for testing, but you may configure F to use your CA cert with the -CAfile option. (TODO: then what is the F<./certs> directory in the distribution?) =head2 Creating a test certificate To create simple test certificates with OpenSSL, you may run the following command: openssl req -config /usr/local/openssl/openssl.cnf \ -new -days 365 -newkey rsa:1024 -x509 \ -keyout notacakey.pem -out notacacert.pem To remove the pass phrase from the key file, run: openssl rsa -in notacakey.pem -out notacakeynopass.pem =head2 PKCS12 support The directives for enabling use of PKCS12 certificates is: $ENV{HTTPS_PKCS12_FILE} = 'certs/pkcs12.pkcs12'; $ENV{HTTPS_PKCS12_PASSWORD} = 'PKCS12_PASSWORD'; Use of this type of certificate takes precedence over previous certificate settings described. (TODO: unclear? Meaning "the presence of this type of certificate"?) =head1 SSL versions C tries very hard to connect to I SSL web server accommodating servers that are buggy, old or simply not standards-compliant. To this effect, this module will try SSL connections in this order: =over 4 =item SSL v23 should allow v2 and v3 servers to pick their best type =item SSL v3 best connection type =item SSL v2 old connection type =back Unfortunately, some servers seem not to handle a reconnect to SSL v3 after a failed connect of SSL v23 is tried, so you may set before using LWP or Net::SSL: $ENV{HTTPS_VERSION} = 3; to force a version 3 SSL connection first. At this time only a version 2 SSL connection will be tried after this, as the connection attempt order remains unchanged by this setting. =head1 ACKNOWLEDGEMENTS Many thanks to the following individuals who helped improve C: I for writing this module and many others including libwww, for perl. The web will never be the same :) I deserves kudos for his excellent patches for better error handling, SSL information inspection, and random seeding. I for host name resolution fix when using a proxy. I of Core Communications, Inc. who found the need for building C<--shared> OpenSSL libraries. I for a patch for freeing memory when using a pkcs12 file, and for inspiring more robust C behavior. I is a champ for finding a ridiculous memory leak that has been the bane of many a Crypt::SSLeay user. I for his patch adding proxy support, and thanks to I for submitting another approach. I for Alpha linux ccc patch. I for his patches for client certificate support. I for adding PKCS12 certificate support. I for CA cert support and insights into error messaging. I for working through a tricky CA cert SSLClientVerify issue. I for a patch to build under perl 5.8.0. I for the time he spent maintaining the module. I for help with alarms on read failures (CPAN bug #12444). I for significant improvements in configuring things in Win32 and Netware lands and Jan Dubois for various suggestions for improvements. and I who provided bug reports, suggestions, fixes and patches. If you have reported a bug or provided feedback, and you would like to be mentioned by name in this section, please file request on L. =head1 SEE ALSO =over 4 =item Net::SSL If you have downloaded this distribution as of a dependency of another distribution, it's probably due to this module (which is included in this distribution). =item Net::SSLeay L provides access to the OpenSSL API directly from Perl. See L. =item Building OpenSSL on 64-bit Windows 8.1 Pro using SDK tools My blog post L might be helpful. =back =head1 SUPPORT For issues related to using of C & C with Perl's L, please send email to C. For OpenSSL or general SSL support, including issues associated with building and installing OpenSSL on your system, please email the OpenSSL users mailing list at C. See L for other mailing lists and archives. Please report all bugs using L. =head1 AUTHORS This module was originally written by Gisle Aas, and was subsequently maintained by Joshua Chamas, David Landgren, brian d foy and Sinan Unur. =head1 COPYRIGHT Copyright (c) 2010-2014 A. Sinan Unur Copyright (c) 2006-2007 David Landgren Copyright (c) 1999-2003 Joshua Chamas Copyright (c) 1998 Gisle Aas =head1 LICENSE This program is free software; you can redistribute it and/or modify it under the terms of Artistic License 2.0 (see L). =cut perl5/Crypt/SSLeay/X509.pm000044400000001051152462470720011043 0ustar00package Crypt::SSLeay::X509; use strict; sub not_before { my $cert = shift; not_string2time($cert->get_notBeforeString); } sub not_after { my $cert = shift; not_string2time($cert->get_notAfterString); } sub not_string2time { my $string = shift; # $string has the form 021019235959Z my($year, $month, $day, $hour, $minute, $second, $GMT)= $string=~m/(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(Z)?/; $year += 2000; my $time="$year-$month-$day $hour:$minute:$second"; $time .= " GMT" if $GMT; $time; } 1; perl5/Crypt/SSLeay/CTX.pm000044400000000102152462470720011030 0ustar00package Crypt::SSLeay::CTX; require Crypt::SSLeay; use strict; 1; perl5/Crypt/SSLeay/MainContext.pm000044400000001607152462470720012636 0ustar00package Crypt::SSLeay::MainContext; # maintains a single instance of the Crypt::SSLeay::CTX class use strict; use Carp (); require Crypt::SSLeay::CTX; my $ctx = &main_ctx(); sub main_ctx { my $ssl_version = shift || 23; my $ctx = Crypt::SSLeay::CTX->new($ssl_version); $ctx->set_cipher_list($ENV{CRYPT_SSLEAY_CIPHER}) if $ENV{CRYPT_SSLEAY_CIPHER}; $ctx; } my %sub_cache = ('main_ctx' => \&main_ctx ); sub import { my $pkg = shift; my $callpkg = caller(); my @func = @_; for (@func) { s/^&//; Carp::croak("Can't export $_ from $pkg") if /\W/;; my $sub = $sub_cache{$_}; unless ($sub) { my $method = $_; $method =~ s/^main_ctx_//; # optional prefix $sub = $sub_cache{$_} = sub { $ctx->$method(@_) }; } no strict 'refs'; *{"${callpkg}::$_"} = $sub; } } 1; perl5/Crypt/SSLeay/Version.pm000044400000004426152462470720012034 0ustar00package Crypt::SSLeay::Version; require Crypt::SSLeay; use Exporter qw( import ); our @EXPORT = qw(); our @EXPORT_OK = qw( openssl_built_on openssl_cflags openssl_dir openssl_platform openssl_version openssl_version_number ); use strict; __PACKAGE__; __END__ =head1 NAME Crypt::SSLeay::Version - Obtain OpenSSL version information =head1 SYNOPSIS use Crypt::SSLeay::Version qw(\ openssl_built_on openssl_cflags openssl_dir openssl_platform openssl_version openssl_version_number ); my $version = openssl_version(); if (openssl_cflags() =~ /DOPENSSL_NO_HEARTBEATS/) { print "OpenSSL was compiled without heartbeats\n"; } =head1 SUMMARY Exposes information provided by L. =head1 EXPORTS By default, the module exports nothing. You can ask for each subroutine bloew to be exported to your namespace. =head1 SUBROUTINES =head2 openssl_built_on The date of the build process in the form "built on: ..." if available or ``built on: date not available'' otherwise. =head2 openssl_cflags The compiler flags set for the compilation process in the form "compiler: ..." if available or "compiler: information not available" otherwise. =head2 openssl_dir The C setting of the library build in the form "OPENSSLDIR: ..." if available or "OPENSSLDIR: N/A" otherwise. =head2 openssl_platform The "Configure" target of the library build in the form "platform: ..." if available or "platform: information not available" otherwise. =head2 openssl_version The version of the OpenSSL library including the release date. =head2 openssl_version_number The value of the C macro as an unsigned integer. This value is more like a string as version information is packed into specific nibbles see C in the OpenSSL source and L for explanation. =head1 AUTHOR A. Sinan Unur C<< >> =head1 COPYRIGHT Copyright (C) 2014 A. Sinan Unur. =head1 LICENSE This program is free software; you can redistribute it and/or modify it under the terms of L. perl5/Crypt/SSLeay/Conn.pm000044400000000103152462470720011270 0ustar00package Crypt::SSLeay::Conn; require Crypt::SSLeay; use strict; 1; perl5/Crypt/SSLeay/Err.pm000044400000000102152462470720011122 0ustar00package Crypt::SSLeay::Err; require Crypt::SSLeay; use strict; 1; perl5/IO/Tty.pm000044400000020216152462470720007230 0ustar00# Documentation at the __END__ # -*-cperl-*- package IO::Tty; use strict; use warnings; use IO::Handle; use IO::File; use IO::Tty::Constant; use Carp; require POSIX; require DynaLoader; use vars qw(@ISA $VERSION $XS_VERSION $CONFIG $DEBUG); $VERSION = '1.16'; $XS_VERSION = "1.16"; @ISA = qw(IO::Handle); eval { local $^W = 0; undef local $SIG{__DIE__}; require IO::Stty }; push @ISA, "IO::Stty" if ( not $@ ); # if IO::Stty is installed BOOT_XS: { # If I inherit DynaLoader then I inherit AutoLoader and I DON'T WANT TO require DynaLoader; # DynaLoader calls dl_load_flags as a static method. *dl_load_flags = DynaLoader->can('dl_load_flags'); do { defined(&bootstrap) ? \&bootstrap : \&DynaLoader::bootstrap; } ->(__PACKAGE__); } sub import { IO::Tty::Constant->export_to_level( 1, @_ ); } sub open { my ( $tty, $dev, $mode ) = @_; IO::File::open( $tty, $dev, $mode ) or return undef; $tty->autoflush; 1; } sub clone_winsize_from { my ( $self, $fh ) = @_; croak "Given filehandle is not a tty in clone_winsize_from, called" if not POSIX::isatty($fh); return 1 if not POSIX::isatty($self); # ignored for master ptys my $winsize = " " x 1024; # preallocate memory ioctl( $fh, &IO::Tty::Constant::TIOCGWINSZ, $winsize ) and ioctl( $self, &IO::Tty::Constant::TIOCSWINSZ, $winsize ) and return 1; warn "clone_winsize_from: error: $!" if $^W; return undef; } # ioctl() doesn't tell us how long the structure is, so we'll have to trim it # after TIOCGWINSZ my $SIZEOF_WINSIZE = length IO::Tty::pack_winsize( 0, 0, 0, 0 ); sub get_winsize { my $self = shift; ioctl( $self, IO::Tty::Constant::TIOCGWINSZ(), my $winsize = q<> ) or croak "Cannot TIOCGWINSZ - $!"; substr( $winsize, $SIZEOF_WINSIZE ) = ""; return IO::Tty::unpack_winsize($winsize); } sub set_winsize { my $self = shift; my $winsize = IO::Tty::pack_winsize(@_); ioctl( $self, IO::Tty::Constant::TIOCSWINSZ(), $winsize ) or croak "Cannot TIOCSWINSZ - $!"; } sub set_raw($) { require POSIX; my $self = shift; return 1 if not POSIX::isatty($self); my $ttyno = fileno($self); my $termios = new POSIX::Termios; unless ($termios) { warn "set_raw: new POSIX::Termios failed: $!"; return undef; } unless ( $termios->getattr($ttyno) ) { warn "set_raw: getattr($ttyno) failed: $!"; return undef; } $termios->setiflag(0); $termios->setoflag(0); $termios->setlflag(0); $termios->setcc( &POSIX::VMIN, 1 ); $termios->setcc( &POSIX::VTIME, 0 ); unless ( $termios->setattr( $ttyno, &POSIX::TCSANOW ) ) { warn "set_raw: setattr($ttyno) failed: $!"; return undef; } return 1; } 1; __END__ =head1 NAME IO::Tty - Low-level allocate a pseudo-Tty, import constants. =head1 VERSION 1.16 =head1 SYNOPSIS use IO::Tty qw(TIOCNOTTY); ... # use only to import constants, see IO::Pty to create ptys. =head1 DESCRIPTION C is used internally by C to create a pseudo-tty. You wouldn't want to use it directly except to import constants, use C. For a list of importable constants, see L. Windows is now supported, but ONLY under the Cygwin environment, see L. Please note that pty creation is very system-dependend. From my experience, any modern POSIX system should be fine. Find below a list of systems that C should work on. A more detailed table (which is slowly getting out-of-date) is available from the project pages document manager at SourceForge L. If you have problems on your system and your system is listed in the "verified" list, you probably have some non-standard setup, e.g. you compiled your Linux-kernel yourself and disabled ptys (bummer!). Please ask your friendly sysadmin for help. If your system is not listed, unpack the latest version of C, do a C<'perl Makefile.PL; make; make test; uname -a'> and send me (F) the results and I'll see what I can deduce from that. There are chances that it will work right out-of-the-box... If it's working on your system, please send me a short note with details (version number, distribution, etc. 'uname -a' and 'perl -V' is a good start; also, the output from "perl Makefile.PL" contains a lot of interesting info, so please include that as well) so I can get an overview. Thanks! =head1 VERIFIED SYSTEMS, KNOWN ISSUES This is a list of systems that C seems to work on ('make test' passes) with comments about "features": =over 4 =item * AIX 4.3 Returns EIO instead of EOF when the slave is closed. Benign. =item * AIX 5.x =item * FreeBSD 4.4 EOF on the slave tty is not reported back to the master. =item * OpenBSD 2.8 The ioctl TIOCSCTTY sometimes fails. This is also known in Tcl/Expect, see http://expect.nist.gov/FAQ.html EOF on the slave tty is not reported back to the master. =item * Darwin 7.9.0 =item * HPUX 10.20 & 11.00 EOF on the slave tty is not reported back to the master. =item * IRIX 6.5 =item * Linux 2.2.x & 2.4.x Returns EIO instead of EOF when the slave is closed. Benign. =item * OSF 4.0 EOF on the slave tty is not reported back to the master. =item * Solaris 8, 2.7, 2.6 Has the "feature" of returning EOF just once?! EOF on the slave tty is not reported back to the master. =item * Windows NT/2k/XP (under Cygwin) When you send (print) a too long line (>160 chars) to a non-raw pty, the call just hangs forever and even alarm() cannot get you out. Don't complain to me... EOF on the slave tty is not reported back to the master. =item * z/OS =back The following systems have not been verified yet for this version, but a previous version worked on them: =over 4 =item * SCO Unix =item * NetBSD probably the same as the other *BSDs... =back If you have additions to these lists, please mail them to EFE. =head1 SEE ALSO L, L =head1 MAILING LISTS As this module is mainly used by Expect, support for it is available via the two Expect mailing lists, expectperl-announce and expectperl-discuss, at http://lists.sourceforge.net/lists/listinfo/expectperl-announce and http://lists.sourceforge.net/lists/listinfo/expectperl-discuss =head1 AUTHORS Originally by Graham Barr EFE, based on the Ptty module by Nick Ing-Simmons EFE. Now maintained and heavily rewritten by Roland Giersig EFE. Contains copyrighted stuff from openssh v3.0p1, authored by Tatu Ylonen , Markus Friedl and Todd C. Miller . I also got a lot of inspiration from the pty code in Xemacs. =head1 COPYRIGHT Now all code is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Nevertheless the above AUTHORS retain their copyrights to the various parts and want to receive credit if their source code is used. See the source for details. =head1 DISCLAIMER THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. In other words: Use at your own risk. Provided as is. Your mileage may vary. Read the source, Luke! And finally, just to be sure: Any Use of This Product, in Any Manner Whatsoever, Will Increase the Amount of Disorder in the Universe. Although No Liability Is Implied Herein, the Consumer Is Warned That This Process Will Ultimately Lead to the Heat Death of the Universe. =cut perl5/IO/Pty.pm000044400000022377152462470720007236 0ustar00# Documentation at the __END__ package IO::Pty; use strict; use Carp; use IO::Tty qw(TIOCSCTTY TCSETCTTY TIOCNOTTY); use IO::File; require POSIX; use vars qw(@ISA $VERSION); $VERSION = '1.16'; # keep same as in Tty.pm @ISA = qw(IO::Handle); eval { local $^W = 0; undef local $SIG{__DIE__}; require IO::Stty }; push @ISA, "IO::Stty" if ( not $@ ); # if IO::Stty is installed sub new { my ($class) = $_[0] || "IO::Pty"; $class = ref($class) if ref($class); @_ <= 1 or croak 'usage: new $class'; my ( $ptyfd, $ttyfd, $ttyname ) = pty_allocate(); croak "Cannot open a pty" if not defined $ptyfd; my $pty = $class->SUPER::new_from_fd( $ptyfd, "r+" ); croak "Cannot create a new $class from fd $ptyfd: $!" if not $pty; $pty->autoflush(1); bless $pty => $class; my $slave = IO::Tty->new_from_fd( $ttyfd, "r+" ); croak "Cannot create a new IO::Tty from fd $ttyfd: $!" if not $slave; $slave->autoflush(1); ${*$pty}{'io_pty_slave'} = $slave; ${*$pty}{'io_pty_ttyname'} = $ttyname; ${*$slave}{'io_tty_ttyname'} = $ttyname; return $pty; } sub ttyname { @_ == 1 or croak 'usage: $pty->ttyname();'; my $pty = shift; ${*$pty}{'io_pty_ttyname'}; } sub close_slave { @_ == 1 or croak 'usage: $pty->close_slave();'; my $master = shift; if ( exists ${*$master}{'io_pty_slave'} ) { close ${*$master}{'io_pty_slave'}; delete ${*$master}{'io_pty_slave'}; } } sub slave { @_ == 1 or croak 'usage: $pty->slave();'; my $master = shift; if ( exists ${*$master}{'io_pty_slave'} ) { return ${*$master}{'io_pty_slave'}; } my $tty = ${*$master}{'io_pty_ttyname'}; my $slave = new IO::Tty; $slave->open( $tty, O_RDWR | O_NOCTTY ) || croak "Cannot open slave $tty: $!"; return $slave; } sub make_slave_controlling_terminal { @_ == 1 or croak 'usage: $pty->make_slave_controlling_terminal();'; my $self = shift; local (*DEVTTY); # loose controlling terminal explicitly if ( defined TIOCNOTTY ) { if ( open( \*DEVTTY, "/dev/tty" ) ) { ioctl( \*DEVTTY, TIOCNOTTY, 0 ); close \*DEVTTY; } } # Create a new 'session', lose controlling terminal. if ( POSIX::setsid() == -1 ) { warn "setsid() failed, strange behavior may result: $!\r\n" if $^W; } if ( open( \*DEVTTY, "/dev/tty" ) ) { warn "Could not disconnect from controlling terminal?!\n" if $^W; close \*DEVTTY; } # now open slave, this should set it as controlling tty on some systems my $ttyname = ${*$self}{'io_pty_ttyname'}; my $slv = new IO::Tty; $slv->open( $ttyname, O_RDWR ) or croak "Cannot open slave $ttyname: $!"; if ( not exists ${*$self}{'io_pty_slave'} ) { ${*$self}{'io_pty_slave'} = $slv; } else { $slv->close; } # Acquire a controlling terminal if this doesn't happen automatically if ( not open( \*DEVTTY, "/dev/tty" ) ) { if ( defined TIOCSCTTY ) { if ( not defined ioctl( ${*$self}{'io_pty_slave'}, TIOCSCTTY, 0 ) ) { warn "warning: TIOCSCTTY failed, slave might not be set as controlling terminal: $!" if $^W; } } elsif ( defined TCSETCTTY ) { if ( not defined ioctl( ${*$self}{'io_pty_slave'}, TCSETCTTY, 0 ) ) { warn "warning: TCSETCTTY failed, slave might not be set as controlling terminal: $!" if $^W; } } else { warn "warning: You have neither TIOCSCTTY nor TCSETCTTY on your system\n" if $^W; return 0; } } if ( not open( \*DEVTTY, "/dev/tty" ) ) { warn "Error: could not connect pty as controlling terminal!\n"; return undef; } else { close \*DEVTTY; } return 1; } *clone_winsize_from = \&IO::Tty::clone_winsize_from; *get_winsize = \&IO::Tty::get_winsize; *set_winsize = \&IO::Tty::set_winsize; *set_raw = \&IO::Tty::set_raw; 1; __END__ =head1 NAME IO::Pty - Pseudo TTY object class =head1 VERSION 1.16 =head1 SYNOPSIS use IO::Pty; $pty = new IO::Pty; $slave = $pty->slave; foreach $val (1..10) { print $pty "$val\n"; $_ = <$slave>; print "$_"; } close($slave); =head1 DESCRIPTION C provides an interface to allow the creation of a pseudo tty. C inherits from C and so provide all the methods defined by the C package. Please note that pty creation is very system-dependent. If you have problems, see L for help. =head1 CONSTRUCTOR =over 3 =item new The C constructor takes no arguments and returns a new file object which is the master side of the pseudo tty. =back =head1 METHODS =over 4 =item ttyname() Returns the name of the slave pseudo tty. On UNIX machines this will be the pathname of the device. Use this name for informational purpose only, to get a slave filehandle, use slave(). =item slave() The C method will return the slave filehandle of the given master pty, opening it anew if necessary. If IO::Stty is installed, you can then call C<$slave-Estty()> to modify the terminal settings. =item close_slave() The slave filehandle will be closed and destroyed. This is necessary in the parent after forking to get rid of the open filehandle, otherwise the parent will not notice if the child exits. Subsequent calls of C will return a newly opened slave filehandle. =item make_slave_controlling_terminal() This will set the slave filehandle as the controlling terminal of the current process, which will become a session leader, so this should only be called by a child process after a fork(), e.g. in the callback to C (see L). See the C script (also C) for an example how to correctly spawn a subprocess. =item set_raw() Will set the pty to raw. Note that this is a one-way operation, you need IO::Stty to set the terminal settings to anything else. On some systems, the master pty is not a tty. This method checks for that and returns success anyway on such systems. Note that this method must be called on the slave, and probably should be called on the master, just to be sure, i.e. $pty->slave->set_raw(); $pty->set_raw(); =item clone_winsize_from(\*FH) Gets the terminal size from filehandle FH (which must be a terminal) and transfers it to the pty. Returns true on success and undef on failure. Note that this must be called upon the I, i.e. $pty->slave->clone_winsize_from(\*STDIN); On some systems, the master pty also isatty. I actually have no idea if setting terminal sizes there is passed through to the slave, so if this method is called for a master that is not a tty, it silently returns OK. See the C script for example code how to propagate SIGWINCH. =item get_winsize() Returns the terminal size, in a 4-element list. ($row, $col, $xpixel, $ypixel) = $tty->get_winsize() =item set_winsize($row, $col, $xpixel, $ypixel) Sets the terminal size. If not specified, C<$xpixel> and C<$ypixel> are set to 0. As with C, this must be called upon the I. =back =head1 SEE ALSO L, L, L, L, L =head1 MAILING LISTS As this module is mainly used by Expect, support for it is available via the two Expect mailing lists, expectperl-announce and expectperl-discuss, at http://lists.sourceforge.net/lists/listinfo/expectperl-announce and http://lists.sourceforge.net/lists/listinfo/expectperl-discuss =head1 AUTHORS Originally by Graham Barr EFE, based on the Ptty module by Nick Ing-Simmons EFE. Now maintained and heavily rewritten by Roland Giersig EFE. Contains copyrighted stuff from openssh v3.0p1, authored by Tatu Ylonen , Markus Friedl and Todd C. Miller . =head1 COPYRIGHT Now all code is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Nevertheless the above AUTHORS retain their copyrights to the various parts and want to receive credit if their source code is used. See the source for details. =head1 DISCLAIMER THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. In other words: Use at your own risk. Provided as is. Your mileage may vary. Read the source, Luke! And finally, just to be sure: Any Use of This Product, in Any Manner Whatsoever, Will Increase the Amount of Disorder in the Universe. Although No Liability Is Implied Herein, the Consumer Is Warned That This Process Will Ultimately Lead to the Heat Death of the Universe. =cut perl5/IO/Tty/Constant.pm000044400000016070152462470720011024 0ustar00 package IO::Tty::Constant; our $VERSION = '1.16'; use vars qw(@ISA @EXPORT_OK); require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw(B0 B110 B115200 B1200 B134 B150 B153600 B1800 B19200 B200 B230400 B2400 B300 B307200 B38400 B460800 B4800 B50 B57600 B600 B75 B76800 B9600 BRKINT BS0 BS1 BSDLY CBAUD CBAUDEXT CBRK CCTS_OFLOW CDEL CDSUSP CEOF CEOL CEOL2 CEOT CERASE CESC CFLUSH CIBAUD CIBAUDEXT CINTR CKILL CLNEXT CLOCAL CNSWTCH CNUL CQUIT CR0 CR1 CR2 CR3 CRDLY CREAD CRPRNT CRTSCTS CRTSXOFF CRTS_IFLOW CS5 CS6 CS7 CS8 CSIZE CSTART CSTOP CSTOPB CSUSP CSWTCH CWERASE DEFECHO DIOC DIOCGETP DIOCSETP DOSMODE ECHO ECHOCTL ECHOE ECHOK ECHOKE ECHONL ECHOPRT EXTA EXTB FF0 FF1 FFDLY FIORDCHK FLUSHO HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR IMAXBEL INLCR INPCK ISIG ISTRIP IUCLC IXANY IXOFF IXON KBENABLED LDCHG LDCLOSE LDDMAP LDEMAP LDGETT LDGMAP LDIOC LDNMAP LDOPEN LDSETT LDSMAP LOBLK NCCS NL0 NL1 NLDLY NOFLSH OCRNL OFDEL OFILL OLCUC ONLCR ONLRET ONOCR OPOST PAGEOUT PARENB PAREXT PARMRK PARODD PENDIN RCV1EN RTS_TOG TAB0 TAB1 TAB2 TAB3 TABDLY TCDSET TCFLSH TCGETA TCGETS TCIFLUSH TCIOFF TCIOFLUSH TCION TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW TCSBRK TCSETA TCSETAF TCSETAW TCSETCTTY TCSETS TCSETSF TCSETSW TCXONC TERM_D40 TERM_D42 TERM_H45 TERM_NONE TERM_TEC TERM_TEX TERM_V10 TERM_V61 TIOCCBRK TIOCCDTR TIOCCONS TIOCEXCL TIOCFLUSH TIOCGETD TIOCGETC TIOCGETP TIOCGLTC TIOCSETC TIOCSETN TIOCSETP TIOCSLTC TIOCGPGRP TIOCGSID TIOCGSOFTCAR TIOCGWINSZ TIOCHPCL TIOCKBOF TIOCKBON TIOCLBIC TIOCLBIS TIOCLGET TIOCLSET TIOCMBIC TIOCMBIS TIOCMGET TIOCMSET TIOCM_CAR TIOCM_CD TIOCM_CTS TIOCM_DSR TIOCM_DTR TIOCM_LE TIOCM_RI TIOCM_RNG TIOCM_RTS TIOCM_SR TIOCM_ST TIOCNOTTY TIOCNXCL TIOCOUTQ TIOCREMOTE TIOCSBRK TIOCSCTTY TIOCSDTR TIOCSETD TIOCSIGNAL TIOCSPGRP TIOCSSID TIOCSSOFTCAR TIOCSTART TIOCSTI TIOCSTOP TIOCSWINSZ TM_ANL TM_CECHO TM_CINVIS TM_LCF TM_NONE TM_SET TM_SNL TOSTOP VCEOF VCEOL VDISCARD VDSUSP VEOF VEOL VEOL2 VERASE VINTR VKILL VLNEXT VMIN VQUIT VREPRINT VSTART VSTOP VSUSP VSWTCH VT0 VT1 VTDLY VTIME VWERASE WRAP XCASE XCLUDE XMT1EN XTABS); __END__ =head1 NAME IO::Tty::Constant - Terminal Constants (autogenerated) =head1 SYNOPSIS use IO::Tty::Constant qw(TIOCNOTTY); ... =head1 DESCRIPTION This package defines constants usually found in or (and their #include hierarchy). Find below an autogenerated alphabetic list of all known constants and whether they are defined on your system (prefixed with '+') and have compilation problems ('o'). Undefined or problematic constants are set to 'undef'. =head1 DEFINED CONSTANTS =over 4 =item + B0 =item + B110 =item + B115200 =item + B1200 =item + B134 =item + B150 =item - B153600 =item + B1800 =item + B19200 =item + B200 =item + B230400 =item + B2400 =item + B300 =item - B307200 =item + B38400 =item + B460800 =item + B4800 =item + B50 =item + B57600 =item + B600 =item + B75 =item - B76800 =item + B9600 =item + BRKINT =item + BS0 =item + BS1 =item + BSDLY =item + CBAUD =item - CBAUDEXT =item + CBRK =item - CCTS_OFLOW =item - CDEL =item + CDSUSP =item + CEOF =item + CEOL =item - CEOL2 =item + CEOT =item + CERASE =item - CESC =item + CFLUSH =item + CIBAUD =item - CIBAUDEXT =item + CINTR =item + CKILL =item + CLNEXT =item + CLOCAL =item - CNSWTCH =item - CNUL =item + CQUIT =item + CR0 =item + CR1 =item + CR2 =item + CR3 =item + CRDLY =item + CREAD =item + CRPRNT =item + CRTSCTS =item - CRTSXOFF =item - CRTS_IFLOW =item + CS5 =item + CS6 =item + CS7 =item + CS8 =item + CSIZE =item + CSTART =item + CSTOP =item + CSTOPB =item + CSUSP =item - CSWTCH =item + CWERASE =item - DEFECHO =item - DIOC =item - DIOCGETP =item - DIOCSETP =item - DOSMODE =item + ECHO =item + ECHOCTL =item + ECHOE =item + ECHOK =item + ECHOKE =item + ECHONL =item + ECHOPRT =item + EXTA =item + EXTB =item + FF0 =item + FF1 =item + FFDLY =item - FIORDCHK =item + FLUSHO =item + HUPCL =item + ICANON =item + ICRNL =item + IEXTEN =item + IGNBRK =item + IGNCR =item + IGNPAR =item + IMAXBEL =item + INLCR =item + INPCK =item + ISIG =item + ISTRIP =item + IUCLC =item + IXANY =item + IXOFF =item + IXON =item - KBENABLED =item - LDCHG =item - LDCLOSE =item - LDDMAP =item - LDEMAP =item - LDGETT =item - LDGMAP =item - LDIOC =item - LDNMAP =item - LDOPEN =item - LDSETT =item - LDSMAP =item - LOBLK =item + NCCS =item + NL0 =item + NL1 =item + NLDLY =item + NOFLSH =item + OCRNL =item + OFDEL =item + OFILL =item + OLCUC =item + ONLCR =item + ONLRET =item + ONOCR =item + OPOST =item - PAGEOUT =item + PARENB =item - PAREXT =item + PARMRK =item + PARODD =item + PENDIN =item - RCV1EN =item - RTS_TOG =item + TAB0 =item + TAB1 =item + TAB2 =item + TAB3 =item + TABDLY =item - TCDSET =item + TCFLSH =item + TCGETA =item + TCGETS =item + TCIFLUSH =item + TCIOFF =item + TCIOFLUSH =item + TCION =item + TCOFLUSH =item + TCOOFF =item + TCOON =item + TCSADRAIN =item + TCSAFLUSH =item + TCSANOW =item + TCSBRK =item + TCSETA =item + TCSETAF =item + TCSETAW =item - TCSETCTTY =item + TCSETS =item + TCSETSF =item + TCSETSW =item + TCXONC =item - TERM_D40 =item - TERM_D42 =item - TERM_H45 =item - TERM_NONE =item - TERM_TEC =item - TERM_TEX =item - TERM_V10 =item - TERM_V61 =item + TIOCCBRK =item - TIOCCDTR =item + TIOCCONS =item + TIOCEXCL =item - TIOCFLUSH =item + TIOCGETD =item - TIOCGETC =item - TIOCGETP =item - TIOCGLTC =item - TIOCSETC =item - TIOCSETN =item - TIOCSETP =item - TIOCSLTC =item + TIOCGPGRP =item + TIOCGSID =item + TIOCGSOFTCAR =item + TIOCGWINSZ =item - TIOCHPCL =item - TIOCKBOF =item - TIOCKBON =item - TIOCLBIC =item - TIOCLBIS =item - TIOCLGET =item - TIOCLSET =item + TIOCMBIC =item + TIOCMBIS =item + TIOCMGET =item + TIOCMSET =item + TIOCM_CAR =item + TIOCM_CD =item + TIOCM_CTS =item + TIOCM_DSR =item + TIOCM_DTR =item + TIOCM_LE =item + TIOCM_RI =item + TIOCM_RNG =item + TIOCM_RTS =item + TIOCM_SR =item + TIOCM_ST =item + TIOCNOTTY =item + TIOCNXCL =item + TIOCOUTQ =item - TIOCREMOTE =item + TIOCSBRK =item + TIOCSCTTY =item - TIOCSDTR =item + TIOCSETD =item - TIOCSIGNAL =item + TIOCSPGRP =item - TIOCSSID =item + TIOCSSOFTCAR =item - TIOCSTART =item + TIOCSTI =item - TIOCSTOP =item + TIOCSWINSZ =item - TM_ANL =item - TM_CECHO =item - TM_CINVIS =item - TM_LCF =item - TM_NONE =item - TM_SET =item - TM_SNL =item + TOSTOP =item - VCEOF =item - VCEOL =item + VDISCARD =item - VDSUSP =item + VEOF =item + VEOL =item + VEOL2 =item + VERASE =item + VINTR =item + VKILL =item + VLNEXT =item + VMIN =item + VQUIT =item + VREPRINT =item + VSTART =item + VSTOP =item + VSUSP =item - VSWTCH =item + VT0 =item + VT1 =item + VTDLY =item + VTIME =item + VWERASE =item - WRAP =item + XCASE =item - XCLUDE =item - XMT1EN =item + XTABS =back =head1 FOR MORE INFO SEE L =cut