biber000755 000765 000024 00214656473 14577236112 013105 0ustar00krumeichstaff000000 000000 ELF&@\<@8 @@@@888__ m m mx;;0m0m0m``TTTDDPtdXXXQtdRtd m m m/lib/ld-linux-aarch64.so.1GNUGNUnz)Ktch7!(@ E"78;>?GHIJKMOPQT4nG-k|.śvT@ ְB@ ְF@" ְJ@B ְN@b ְR@ ְV@ ְZ@ ְ^@ ְb@ ְf@" ְj@B ְn@b ְr@ ְv@ ְz@ ְ~@ ְ@ ְ@" ְ@B ְ@b ְ@ ְ@ ְ@ ְ@ ְ@ ְ@" ְ@B ְ@b ְ@ {G[@/ҫS`8R*1T@DqaTC@{sgaB`"4b@"s#sbb_ba"5@@`'@@@ @@@+@+@n@@@+@@#GcGG#RG@F_ր`.!`.?T!GA _ Հ`.!`.!!C!A!ABGB@_{ `bn9@5G@ R`b.9 @{¨_ {ScBGX@X[R@9_qD@zT@~@ 5`ju8qT@[BcCSA{Ĩ_@8_qD@zTK˵sCSA[BcC{Ĩ_cC {[GS@sGb@7@ @Ax#  @@G@@ ʠSA[B{Ĩ_֣{S[ckG@9"@7qE`>Tg}`@9q@z T  @8q@zT!!|@9G 6@Lj8 g"@@8Bxc?q$@zA9T@8A8?q$@zTRA8j`8Ah 85RG7@@AaSA[BcCkD{Ǩ_ աj`8j 85+ G@@@R*"@ |}"KB5"R" ~@X} GZ{:g+@ G;~@X}ңR+@+{SG"@o[@9A5[BGo@@ SA{Ψ_cbkc%L 4 4 |@c!RR1Tk@ @qT[BcCkD[ck {ScGRd@Wh5;@R! ?@q$Bz`TsGW@a@AʁSA{˨_RARq {[GSc@o'2/`P'@!Rc'@cR+5@G@?T@'X82|@'@c!R=R!R*1T@b@bAba@*Va@ TRG*o@@ASA[BcC{Ψ_*91 T=R 3R@l1!T|SR$ c0#@{SGe@K`iTaja8?qT@9?qT8aTR @TG#@"@@Aʡ{@SAc0_9G#@@@ {@SAc0`C@C@{S[c `G@"Ҥ*Хc!R҇7|@~@`j48sGC@"@a@A{@SA[BC@_֩ c0#@{kBGS[+@D@dt҉RZG#@"t@A@A! {@SA[BkD+@c0_q&9cc a@9A44aT`j`8qT "@9_qT?8aTҔTc!RR5{@  @qTcCR44!R?5cC4c{R ` @{¨  { @9B4HT @{¨ @{¨` @{¨_`{ SaG[c"@'Ҕ`   Bc  @B !sG'@`@ SA[BcC{Ũ_`c{` bGC@}@9q@zsG@a@A @{è_Rw{G)G@',@? + )CCD!R/'#='=+=/=3=7=;=?=?R CC@BRC@{[GSc*e@$(<@s>@3DDT7R*T*k1T|@T рTT@@_ATGC@"$@@Aa{@SA[BcCCC@_sB@B@T {@@{_{SbG[bC@'@95b:sG'@`@ SA[B@{Ũ_~Хc!Ru ѢB{CH$A[cGS@'HBCFC' DD JE C@KB4@W @9!!5k3?`@949 !R4s @8$5[@L@@ g`@9!44a Д~@4Ec!R 8R1T@DqATR*4@GB@!R@XkE3@G@@Aʁ{ASB[CcD_R 3t`@9`4l 43tұ@ @qAT@kT@ qAT@Z@ qT|@!5qT`Q _8q TX5R.*@ 5!`=U@*c!RЇ@DqATs**!Ru8R1TCkE3@ycR  ss`@9!4 std R@G!RB@@kE3@UP@6(R*g*TcA@D?kTa @y@@y?kTR*R*ҦTE@c@!RC9 @ iT!lq[k3B{S.!qd@TSA{¨_`@94! 5SA{¨ шc {G#@Oҡ@@@!Z a`ghx&x!SpC!!TEA@B C@D@cA0@!!#_a!|@A<_aT@#3ACPA"tҪ[ӭBJy"ۭ!!k*@*B!xJ @.|@ʌJ kk! O[k k  OB! y B!p[! !    }@mBӌʭy .[ӌK J}@@ k,Bk k[ӌyk  B!zCD}@! ! o[!  }@J  J aB+x J  J}@+@[!!Bӭ /z ! ! jʰ[k}@J  J  JBE-z [Bӌ!J !}@!ʌ 0z! [! J }@ J  JFB,z [kB!J !~@!k .z! o[! J }@ J  JGqB+z [ӭB!J !}@!ʭ /z ! [! jJ k}@ J  JHB-z [ӌB!J !}@!ʌ 0z! [! J }@ J  JIB,z [k!J k ~@!!j[! BӮy!J }@J ! }@! Q[!1 J! mB1@1y /~@ ! [!! !CB-@-ax }@j_@JJ[JcJBNA.y}@/ c@ J-[A+Jc Bm@-Cy}@g@JJ [JA!kJ!BKA+*xo}@a k@! J[!@,! B,@,y}@No@ J [A#kc Bk@+yo}@.s@ J[A*J BLA,y}@n w@ J [A!k! B+@+yo}@N{@ J[A#c Bl@,y}@.@ J [A*kJ BKA+yo}@n @ J[A!! B,@,yNʐ}@ JA# [Pkc Bk@+yo}@-ʬ J[ӊA*J BMA-y}@l @ J [aA!! B,@,ay}@O@ Jm[A# cBm@-y}@/@ J [A*JnBLA,y }@o @ JM[A! !B-@-y@o J}@A#cNBy [/ ʌ JA+l@,?T}@m[ӭkBmA-yP ʮ}@  JpBӁA![z!@ a- JB!xA*[1|@ Bm|@j @J BJbcx KA+l|@k *! J[JJ  7VB!x.|@[J k kkBӪcxk[p|@k *@ JJB!x+J [/|@J  k@ k kBcx [k.M k*n|@@ J JB!x [J0l Jk0|@@ k kBcx [k/M k*o|@@ J JB!x [J.l Jk.|@@ k kBcx [k0M k*p|@@ J JB!x [J/l Jk/|@@ k kBcx *k[m|@k  *@  J JB!x [J0lJk0|@@ kkBcx[k/N k*o|@@J  JB!x +J ,|@J kk k[k\ Bcxn|@*[1 k *+ J JB!x Jo[-|@J c@ c  c jBJy c [ 1+ c L}@! k kBcxk?^.[JJ@k n|@Jp[J  "J -BӡyPA0 ~@/|@cc rBc M[c  bKz M@-! ʱ}@!J@:,[CL!B!NB,@,y }@b AB J [B!B.BM@-y}@OA J[A+BkBlA,y}@0 A J[ B*kJ BMA- z}@P A J[B!J! B,@, z}@p A J[B"!BBM@-z}@PA J[ B+BkBlA,z}@0A J[ B*kJ BMA- z}@P A J[B!J! B,@, z}@p #A J[B"!BBM@-z}@P'A J[ B+BkBlA,z}@0+A J[ B*kJ BMA- z}@P /A J[B!J! B,@, z}@p 3A J[B"!BBM@-z}@P7A J[ B+BkBkA,zo}@0;A J[ B*BӭJ zMA-P ʮ}@ J?A[B!JkB! z*@* A}@ JCA-[B"BBzM@-pGA}@  J0BLA,J[zJKAJ PBӍ JA+C[k c zc GF e  ! OA@b {@ _ {&`%qğÎ>ҦDCBz |x{_ {B|@S[cBx@  cbtB4RKk Җ~@gz@ zqTSA[BcC{Ĩ_KsqTQ~SgSv `@sb}d~dzTK~@?zSA[BcC{Ĩ_{S[u`@v*@w2@ S Z Z_q 8" TR"KRB|@^P6wZ)Ia@!XӁ9a@!PӁ9a@!HӁ 9a@9a@!XӁ9a@!PӁ9a@!HӁ9a@9a @!XӁ"9a @!PӁ&9a @!HӁ*9a @.9a@!XӁ29a@!PӁ69a@!HӁ:9a@>9a@!XӁB9a@!PӁF9a@!HӁJ9a@N9SA[B@{Ĩ`R"KRB|@ {S4[4*cCt գzss*`?֟!TSA[BcC{Ĩ_ _{{_CACHE...%s/%s%s.%luexe/proc/%i/%sPAR_TEMPPAR_PROGNAME:/%s%s%sPERL5LIBPERLLIBPERL5OPTPERLIOPAR_INITIALIZEDPAR_SPAWNEDPAR_CLEANPAR_DEBUGPAR_CACHEPAR_GLOBAL_DEBUGPAR_GLOBAL_TMPDIRPAR_TMPDIRPAR_GLOBAL_TEMPPAR_GLOBAL_CLEAN1lseek failedread failedLD_LIBRARY_PATHSYSTEM%02xpar-%s%s%s%s%s: creation of private subdirectory %s failed (errno=%i) %s: private subdirectory %s is unsafe (please remove it and retry your operation) PATHparl.parshort read%s%scache-%s%s%s%stemp-%u%s%s%stemp-%u-%u%s%s: creation of private cache subdirectory %s failed (errno= %i) %s: exec of %s (custom Perl interpreter) failed (errno=%i) %s: extraction of %s (custom Perl interpreter) failed (errno=%i) %s: extraction of %s failed (errno=%i) USERUSERNAMETMPDIRTEMPDIRTEMPTMP/tmpparlibperl.so;h@H0Dhph(p4xlX`$H8| <0\ hh@X(\zRx ,,8 @4HA BNdXd|HA@BCDWACA@OAAA@BB,A@BDa A LP@Ap B C K@ A I` A JBDChd@tABGDGADEt AAA CAAA$LACW A 4ABDBN A 404BD B i A M B <hA@BB@@B@@C@@j AAA `8BB B C D ^ A J ~ A S A CA l,A CF0DxpB BK A C B C4xxAP DDBH A pA0DS A @A('DHAPBЀC@@B@@D@@@@w AAA 8 AF0XAP BDBW A |AC21C.-B,+W0/F)*A(YAKA0/.-,+*)(21z AA bAF*)(@A)*A(, hA BJ A K$< dA` DH A dAFTS, A TAS@(A@CCBZ A c A 4A@BCCU A 0$(|A@BCESXt''x! p" S m(mo   o88p oooobo0mSpS%"""""""""""""""""""""""""""""""""""""""""""""pq PAR.pm WT8UWWWWWW@(#) Packed by PAR::Packer 1.059eholdPerl_share_hekPerl_sv_pvutf8nPerl_pp_splitPerl_PerlSock_accept_cloexecPerl_pp_ucPerl_save_freeopPerl_sv_setpvn_freshPerl_ck_indexmsgget@@GLIBC_2.17PerlIOPending_seekXS_utf8_upgradePerl_ck_readlinePerl_grok_number_flagsPerl_pmop_dumpPerl_set_numeric_standardPerl_sv_report_usedPL_collxfrm_basePL_magic_vtablesPL_perldbPerl_hv_ename_addPerl_pp_padrangePL_rpeeppPerl_gv_add_by_typePL_runops_stdPerl_csighandlerPL_utf8_perl_idcontPL_max_intro_pendingPerlIOCrlf_set_ptrcntPerl_pp_rv2svPL_op_maskstrcmp@@GLIBC_2.17Perl_pp_gmtimePerl_newFORMPerl_block_startPerl_sv_cmp_localePerl_get_cvPerl_ck_rvconstPL_op_private_bitfieldssqrt@@GLIBC_2.17Perl_delimcpy_no_escapePerl_pp_entertrycatchPL_sublinePerlIO_tmpfile_flagsPerl_gv_fetchmethod_pv_flagsPerl_packagePerl_mg_findPL_op_descPerl_foldEQ_utf8_flagsPL_hexdigitPerl_pad_allocPL_latin1_lcPerlIO_list_freePerl_my_clearenvPerl_gv_fetchmeth_pvPerl_ck_globPL_sig_namePerl_sv_del_backrefXS_UNIVERSAL_canPerl_watchsin@@GLIBC_2.17Perl_pp_atan2Perl_deb_stack_allPerl_cmpchain_finishPL_magic_vtable_namesPerl_apply_attrs_stringPerl_padnamelist_storePL_blockhooksPerl_pp_systemXS_builtin_created_as_stringPL_multideref_pcPerl_sv_isobjectgetegid@@GLIBC_2.17opendir@@GLIBC_2.17Perl_gv_efullname3Perl_pp_telldir__memcpy_chk@@GLIBC_2.17Perl_wait4pidPerl_ck_openPerl_newAVPerl_pp_multiplyPL_sub_generationPerl_utf8_to_utf16_basePerl_uvuni_to_utf8PL_laststypePL_comppadgetpwent@@GLIBC_2.17Perl_save_re_contextPL_top_envPerl_refPerl_pp_rangePerl_Slab_FreePerl_my_lstat_flagsPerl_my_strtodPerl_sv_setpviv_mgPerl_gv_fetchmethod_sv_flagsPerl_pp_seekdirPerlIOBase_noop_okcalloc@@GLIBC_2.17PL_wcrtomb_psPerl_sv_newrefgetenv@@GLIBC_2.17Perl_init_i18nl10nPerl_pp_enterPerl_PerlIO_unreadPerl_pp_transPerl_pp_flopPerl_newNULLLISTPL_curstnamePL_no_modifyPL_utf8_markPerl_ck_sassignPL_uudmapsetsockopt@@GLIBC_2.17PL_defoutgvPerl_sv_growPerl_mro_meta_initPerlIO_tmpfilePerl_sv_2pvbyte_nolenPerl_pp_runcvPerl_upg_versionPerl_save_aptrPerlIOUtf8_pushedPerl_cv_get_call_checkerexecv@@GLIBC_2.17Perl_pp_neop_flags_namesPerl_pp_mkdirPerl_PerlIO_writePerl_grok_atoUVPL_envgvPerl_bind_matchPerl_core_prototypePerl_newPVOPPerlIOPending_pushedPerl_whichsig_pvPerl_newXS_len_flagsPL_Private_Usegettimeofday@@GLIBC_2.17Perl_PerlIO_stdinPerl_pad_block_startPL_e_scriptPerl_report_uninitPerl_dump_evalPerl_magic_gettaintPerl_save_gpPerl_rsignal_savePL_SvPerl_sv_derived_from_pvPerlIOPending_fillPerl_sv_len_utf8_nomgPL_reg_curpmPerl_magic_freemglobshmctl@@GLIBC_2.17PL_extended_utf8_dfa_tabPL_restartopPerl_do_tellPerl_pp_cond_exprPerl_reentrant_initstrchr@@GLIBC_2.17Perl_sv_getsPerlIO_releaseFILEPerl_pp_octPerl_pp_untiePerl_pp_chopPerl_do_aexecPL_hv_fetch_ent_mhPerl_av_popPerlIOBase_closePerl_parse_termexprPerl_report_redefined_cvPerl_grok_octPL_origargcPL_valid_types_NVXPerl_pp_aelemPerl_sv_derived_from_pvnPL_no_sock_funcXS_UNIVERSAL_DOESPerl_pp_ltPL_globhookPerl_sv_magicextXS_re_regexp_patternPerlIOCrlf_unreadPerl_refcounted_he_freePerl_magic_clearhintsPL_DBcvPerl_safesysmallocPerl_newSLICEOPgetgrnam@@GLIBC_2.17Perl_pp_joinPerl_newCVREFPerl_pp_gvsvPerl_amagic_deref_callPerl_gv_handlermkdir@@GLIBC_2.17Perl_sv_copypvPerl_hv_delete_entPL_cv_has_evalftello64@@GLIBC_2.17perlsio_binmodePerl_pad_compname_typePerl_ck_subrPerl_hv_placeholders_setPerl_sv_copypv_flagsPerl_dump_subPerlIO_getnamePL_no_memPerl__invlist_intersection_maybe_complement_2ndPerlIOUnix_refcnt_incPerl_reg_qr_packageXS_utf8_is_utf8PL_strxfrm_NUL_replacementtowlower@@GLIBC_2.17Perl_seedPerl_savestack_grow_cntPerl_pp_ftttyPerl_newSVpvexecvp@@GLIBC_2.17Perl_yyunlexPerl_pp_notPL_scopestack_ixPerl_amagic_callPerl_whichsig_svPerl_lex_grow_linestrPerl_init_argv_symbolsPerl_report_evil_fhPerl_pp_leavesublvPerl_pp_grepstartPerl_sv_setpvivPerl_pad_findmy_pvnPerl_pp_weakenPL_lastgotoprobePerl_cv_get_call_checker_flagsgetgrgid@@GLIBC_2.17Perl_op_append_elemPerl_pp_ssockoptPerl_ck_cmpPerl_hv_backreferences_pPerl_pp_tiememchr@@GLIBC_2.17PL_unlockhookPerl_sv_catpvn_mgPerl_pp_kvhslicePerl_pp_padcvsysconf@@GLIBC_2.17PL_runops_dbgPerl_unpack_strPerl_pp_i_nePerl_parse_stmtseqPL_hash_state_waccept@@GLIBC_2.17Perl_delete_eval_scopePerl_pp_moduloPerl_pp_fcPerl_pp_lvrefslicePerl_magic_regdatum_setPerl_pp_leaveloopXS_utf8_validPL_no_symrefPerl__utf8n_to_uvchr_msgs_helperPerl_sv_pvbytenPerl_sawparensPerl_save_pptrPerlIOBase_dupPerl_pp_waitpidPerl_localtime64_rPerl_reg_numbered_buff_storePerl_pp_aeachPerl_savestack_growshmget@@GLIBC_2.17Perl_mg_sizemodf@@GLIBC_2.17Perl_translate_substr_offsetsPerl_sv_utf8_upgrade_flags_growXS_NamedCapture_flagsPerl_gp_refPerl_PerlIO_set_ptrcntPerlIOBuf_poppedPerl_setlocalePerl_pp_gtPerl_sv_pos_b2u_flagsPerlIOUnix_seekPerl_av_pushPerl_sv_cat_decodePerl_pp_waitaccept4@@GLIBC_2.17Perl_sv_usepvn_flagsPerl_pp_rv2cvPerl_sub_crush_depthPerl_sv_2iv_flagsPL_perlio_fd_refcntPerl_tmps_grow_pPerl_magic_setlvrefPerl_PerlIO_get_baseclearerr@@GLIBC_2.17surrogate_cp_formatXS_re_is_regexpPL_strxfrm_is_behavedrenameat@@GLIBC_2.17Perl_to_uni_upperPerlIO_opennPerl_repeatcpyPL_do_undumpPL_utf8cachePerl_av_unshiftfchown@@GLIBC_2.17Perl_validate_protoPL_tmps_ixPL_stack_maxPerl_my_atofPerlIOBuf_dupPL_WARN_NONEPerl_pp_orPerl_gv_fullnamePerl_gv_stashpvnPerl_pp_refPerl_pp_globPerl_newASSIGNOPatan2@@GLIBC_2.17XS_DynaLoader_dl_undef_symbolsXS_PerlIO__Layer__NoWarningsPerl_pp_helemPerl_pp_packPL_no_myglobPerl_PerlProc_pipe_cloexecPL_XPosix_ptrsunlinkat@@GLIBC_2.17PerlIO_vprintfPL_statusvalue_posixPerl_init_constantsfree@@GLIBC_2.17Perl_croak_svPerl_gv_stashpvPerl_av_arylen_pPerl_grok_numberPerl_sv_unmagicextPL_InMultiCharFoldPerl_PerlIO_clearerrPerl_pp_sysseekPerlIOUnix_tellPerl_block_endPerl_mg_find_mglobPL_memory_wrapPerl_pp_hintsevalPerl_pp_ggrentPerl_pp_leaveevalPerl_sv_catsv_mgPerl_pp_padsvPerl_re_intuit_startPerl_croak_xs_usagePerl_pp_cmpchain_dupPL_regmatch_slabPerl_pp_substrPL_pad_reset_pendingPL_uuemapstrerror@@GLIBC_2.17PL_mmap_page_sizePL_op_private_validPerl_new_versionPerl_sv_setref_uvPerl_pp_leavesubPerl_grok_hexPerl_newHVREFPerl_croakPerl_cast_ulongPerl_reg_named_buff_scalarPerl_pp_tieddeprecated_property_msgsASCII_TO_NEEDPerl_pp_i_ncmpPerl_pp_blessPerl_pad_fixup_inner_anonsPerl_pp_addPerl_pp_randPerl_magic_getdefelemPerl_sv_2cvPerl_pp_ioctlPL_keyword_pluginPerlIOPending_flushPerl_pp_nbit_andPerl_io_closePerl_pp_qrPerl_sv_utf8_encodePerlIO_list_pushPerl_PerlIO_stderrendgrent@@GLIBC_2.17Perl_sv_pvutf8n_forcePerl_ck_deletePerl_padnamelist_freePerl_pp_method_superPerl_sv_does_pvnPerl_magic_setdblinePerl_safesysfreePerl_pp_slefwrite@@GLIBC_2.17PL_DBsubPerl_call_pvPerl_newGIVENOPPerlIOCrlf_flushPerl_push_scopePerl_cast_uvPerlIOStdio_tell__ctype_get_mb_cur_max@@GLIBC_2.17Perl_taint_envPerl_pp_semctlPerl_magic_setenvPerl_my_lstatPerl_pp_eachPerl_newXSPerl_op_append_listPerl_pp_enterwhenPerl_reg_numbered_buff_lengthPerlIOUnix_readPerl_hv_commonPerl_pp_statPL_cop_seqmaxPerl_save_pushi32ptrPerl_vwarnerPerl_savepvPerl_magic_getpackPerlIOBase_setlinebufPL_InBitmapPerl_mg_freePerl_newSUBPerl_sortsvPerl_multideref_stringifyPerl_newSVuvPL_delaymagic_euidgetprotobyname@@GLIBC_2.17Perl_sv_2boolPerl_pp_flipPerl_grok_bslash_cPerl_save_clearsvPerl_newPADNAMELISTPerl_hv_iterkeyPerl_uvoffuni_to_utf8_flags_msgsPerl_re_compilePerl_sys_init3PL_magic_dataPerl_pp_getpgrpcategory_namesPerl_pp_lcPerl_pp_unweakenPerl_unshare_hekPerl_sv_taintedchroot@@GLIBC_2.17memmove@@GLIBC_2.17dlopen@@GLIBC_2.17PerlIO_ungetcPerl_pp_argcheckPerl_scan_versionPL_random_statePerl_multiconcat_stringifyfutimes@@GLIBC_2.17PerlIO_crlfPerl_pad_findmy_svPL_charclassPerl_newHVPerlIO_rawPL_minus_aPerl_sv_decPerl_cxincsetpwent@@GLIBC_2.17Perl_pp_ghostentPerl_hv_name_setPL_savestack_maxPerl_getenv_lenPerlIO_getposPL_known_layersPerl_sv_catpvnPL_use_safe_putenvPerl_pp_argelemPerl_reentrant_sizePerl_amagic_is_enabledPL_internal_random_statePL_ors_svPerl__to_fold_latin1Perl_hv_delayfree_entPerl_sv_rvunweaken__environ@@GLIBC_2.17Perl_dup_warningsPL_utf8_foldclosuresPL_padname_undefPerl_gv_fullname4connect@@GLIBC_2.17Perl_savetmpsPerl_pp_dbmopenPerl_utf8_to_uvuniPL_xsubfilenamePerl_pp_eofPerl_scalarPerl_refcounted_he_chain_2hvPerl_cv_const_svPerlIO_sv_dupPerl_yyparsePerlIO_allocatePerl_sv_2nvPerl_pp_refaddrPL_sv_arenarootPerl_utf8_to_uvuni_bufPerl_sv_derived_fromPerl_utf16_to_utf8Perl_pp_lvrefPL_block_typePL_minus_nPL_curcopdbPerl_sv_pvn_forcePerl_save_I16getprotoent@@GLIBC_2.17Perl_die_svPerl_lex_next_chunkPerl_str_to_versionPerl_get_no_modifyPerl_gv_fetchmethod_autoload__ctype_tolower_loc@@GLIBC_2.17Perl_pp_gprotoentPerl_pp_redostrlen@@GLIBC_2.17Perl_save_generic_svrefPL_sv_placeholderPerlIOUnix_dupPerl_sv_catpvf_mgPerl_pp_postdec__sprintf_chk@@GLIBC_2.17PL_ppaddrPerl_magic_cleararylen_pPerlIO_intmode2strPerl_cv_clonePerl_pp_negatePL_strategy_socketpairPerl_newSVpvfPerl_ckwarnPL_op_namePerl_unsharepvnPerl_mro_package_movedPerl_pp_getpeernamePerl_init_tmPerlIOBase_openPerl_do_op_dumpPL_warn_localePerl_regnextPL_strategy_socketPerl_start_subparsePerl_pp_readlinePL_warnhookPL_main_cvPerl_pp_acceptPerl_av_existsPerl_grok_bslash_oPL_sharehookfopen64@@GLIBC_2.17ungetc@@GLIBC_2.17PL_incgvPerl_magic_setcollxfrmPerl_pp_coreargsPL_naPerl_sv_uni_displayPL_varies_bitmaskPerl_newSVpvn__snprintf_chk@@GLIBC_2.17Perl_newATTRSUB_xPerl_magic_killbackrefsPL_delaymagic_uidPerl_report_wrongway_fhPerl_dump_allPerl_new_stackinfoPerl_newSVpvn_flagsPerl_do_sprintfXS_PerlIO__Layer__findPerl_sv_pos_u2bPerl_op_classPL_versionPL_WB_invlistPerl_refcounted_he_fetch_pvPL_unitcheckav_savePL_debug_padPerl_pp_sysreadPerl_pp_bindPerl_fbm_instrPL_utf8_tosimplefoldPerl_hv_eiter_setPerl_hv_placeholders_pPerl_markstack_growPL_runopsPerl_magic_setpackPL_stack_basePerl_sv_pvn_nomgPerl_gv_checkPerl_ck_backtickPerlIOUnix_closeendhostent@@GLIBC_2.17Perl_sv_setiv_mgPL_revisiongetsockname@@GLIBC_2.17Perl_skipspace_flagsPerl_utilizePL_hash_rand_bitsPerl_get_hash_seedPerl_boot_core_mroPerl_pp_oncePL_Zerosetpriority@@GLIBC_2.17PL_op_private_bitdef_ixPerl_pad_add_anonPerlIOBuf_readXS_Internals_SvREFCNTXS_utf8_downgradePerlIOBase_filenoPerl_newRVPerl_mg_free_typePerl_localizePerl_cx_dumpPerl_ptr_table_newPerl_pp_gpwentmemset@@GLIBC_2.17PL_utf8_tolowerPerl_pp_floorPerl_pp_breakPerl_pp_listPerl_mg_magicalPerl_my_strlcpyPerl_debstackptrsPerl_PerlIO_set_cntPerl_sv_sethekPerl_rsignalPerl_sv_backoffPerl_Gv_AMupdatePerl_dowantarrayPL_origalenPL_parserPerl_pp_continuePerl_save_destructor_xPerl_av_new_allocPL_formtargetXS_Internals_SvREADONLYPL_deBruijn_bitpos_tab32Perl_sv_2pv_flagsPerl_sv_magicPerl_my_atof2Perl_sv_utf8_decodesetregid@@GLIBC_2.17PL_utf8skipPerl_lex_stuff_pvPerl_lex_read_toPerlIO_stdoutfPerl_init_named_cv.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.got.plt.data.bss.comment$.oI8 KK@h-h-HoUodnBHH(kxp:p:s::G~  `oooo`#44LB@4@4767676x8x7087@87#98!9!8o0!8!8\  9 H+;CF_AUX_TABLE_62CF_AUX_TABLE_61CF_AUX_TABLE_60CF_AUX_TABLE_59CF_AUX_TABLE_58CF_AUX_TABLE_57CF_AUX_TABLE_56CF_AUX_TABLE_55CF_AUX_TABLE_54CF_AUX_TABLE_53CF_AUX_TABLE_52CF_AUX_TABLE_51CF_AUX_TABLE_50CF_AUX_TABLE_49CF_AUX_TABLE_48CF_AUX_TABLE_47CF_AUX_TABLE_46CF_AUX_TABLE_45CF_AUX_TABLE_44CF_AUX_TABLE_43CF_AUX_TABLE_42CF_AUX_TABLE_41CF_AUX_TABLE_40CF_AUX_TABLE_39CF_AUX_TABLE_38CF_AUX_TABLE_37CF_AUX_TABLE_36CF_AUX_TABLE_35CF_AUX_TABLE_34CF_AUX_TABLE_33CF_AUX_TABLE_32CF_AUX_TABLE_31CF_AUX_TABLE_30CF_AUX_TABLE_29UC_AUX_TABLE_ptrsTC_AUX_TABLE_ptrsLC_AUX_TABLE_ptrsIVCF_AUX_TABLE_ptrstaint.cmisc_env.21308deb.cglobals.cperlio.cS_lockcnt_decS_perlio_async_runPerl_PerlIO_flush.localalias.35PerlIO_cleantable.localalias.36PerlIOBase_dup.localalias.34numeric.cmathoms.cPerl_utf8_to_uvuni.localalias.4locale.cS_stdize_localeS_category_nameS_restore_switched_locale.constprop.7Perl__mem_collxfrm.localalias.3S_my_nl_langinfoS_set_numeric_radixS_new_numericS_new_collateS_new_ctypepp_pack.cdoencodesS_group_endS_get_numS_next_symbolS_measure_structmarked_upgradeS_sv_check_infnanS_sv_exp_growS_my_bytes_to_utf8utf8_to_byteS_utf8_to_bytesS_unpack_recS_pack_recpackpropspp_sort.cS_sortcv_xsubS_sortcv_stackedsortsv_cmp.isra.11sortsv_cmp_locale.isra.15sortsv_cmp_locale_desc.isra.16sortsv_cmp_desc.isra.12S_sortcvsortsv_ncmp.isra.7sortsv_ncmp_desc.isra.8sortsv_i_ncmp.isra.3sortsv_i_ncmp_desc.isra.4sortsv_amagic_cmp.isra.9sortsv_amagic_cmp_locale.isra.13sortsv_amagic_cmp_locale_desc.isra.14sortsv_amagic_cmp_desc.isra.10sortsv_amagic_ncmp.isra.5sortsv_amagic_ncmp_desc.isra.6sortsv_amagic_i_ncmp.isra.1sortsv_amagic_i_ncmp_desc.isra.2caretx.cdquote.ctime64.cdays_in_monthlength_of_yearjulian_days_by_monthsafe_yearsDynaLoader.cSaveError.constprop.0my_cxtaddtf3.oeqtf2.oletf2.oextenddftf2.otrunctfdf2.osfp-exceptions.o__FRAME_END____GNU_EH_FRAME_HDR_fini_GLOBAL_OFFSET_TABLE___letf2__sfp_handle_exceptions__addtf3__TMC_END____lttf2__dso_handle__trunctfdf2__extenddftf2__netf2__eqtf2_DYNAMICe843419@0004_00000030_dd10e843419@0005_0000003b_4824e843419@000e_00000093_61d0e843419@0018_000000ea_afd8e843419@0018_000000ea_5fdce843419@001a_000000fc_e3ece843419@001c_00000111_2834e843419@001f_0000012c_4268Perl_pp_shmwritePerl_sv_chopPerl_sv_setnv_mgPerl_instrPerl_package_versionPL_modcountPerl_bytes_from_utf8strxfrm@@GLIBC_2.17PL_start_envPerl_rninstrPL_padlist_generationPL_sv_immortalsPerl_sighandlersetlinebuf@@GLIBC_2.17Perl_sv_taintPerlIO_cleantablePerl_setfd_inhexecPL_threadhookPerl_pp_padhvPerl_PerlIO_fillPerl_pp_entertryPerl_newWHILEOPPL_origargvPerl_rv2cv_op_cvPerlIOStdio_clearerrPerl_save_aryPerl_ck_existsPerl_pad_add_name_svPerl_pp_nextPerl_pregcompPerl_get_prop_valueskill@@GLIBC_2.17PL_phase_namesPL_ofsgvPerl_hv_ename_deletePL_warn_reservedPerl_find_scriptgethostent@@GLIBC_2.17Perl_pp_scomplementPerl_savesharedpvPL_deBruijn_bitpos_tab64Perl_pp_entergivenPerl_sv_numeq_flagsPerl_ck_anoncodePerl_sv_force_normal_flagsPerl_pp_ftrreadPL_in_some_foldPerlIOBuf_pushedPerl_hv_clearPL_utf8_charname_beginPL_statusvaluePerl_sv_insertPerlIOBuf_fillPerl_do_seekPerl_my_mkstemp_cloexecPerl_pp_iterPerl_pp_ehostentPerlIO_debugPerl_cv_undefPerl__to_utf8_lower_flagsPerl_pp_leavewritePerl_magic_setarylenPerl_savesharedsvpvPerl_notify_parser_that_changed_to_utf8Perl_hv_iterinitPL_argvgvPerl_scan_hexPerlIO_destructPerl_magic_set_all_envPerlIOBase_readPerl_do_msgsndPerl_pp_right_shiftputenv@@GLIBC_2.17Perl_ck_evalPerl_hv_iternextPerlIO_apply_layersPerl_cv_namePerl_sv_pvbytePerl_mg_getPL_colorsPerl_pp_sselectPerl_pp_refgenPerl_dump_all_perlPerl__to_uni_fold_flagsPL_setlocale_bufsizePL_underlying_numeric_objPerl__is_uni_perl_idstartPL_strategy_open3Perl_call_argvregexp_extflags_namesPerl_reginitcolorsPerl_pp_stringifyPerl_caller_cxPL_splitstrPerl_pp_sbit_orPerl_sv_pvnPerl_PerlSock_socketpair_cloexecPerl_pp_methodgetppid@@GLIBC_2.17Perl_sv_setivPerl_do_closePL_colorsetPerl_ck_warnermsgrcv@@GLIBC_2.17PL_dump_re_max_lenPerl_gv_try_downgradePerlIOBuf_bufsizPerl_ck_concatPerlIOBuf_seekPL_sighandlerpXS_builtin_truePerl_croak_no_memPerl_ck_substrPerl_pp_enterloopPL_XpvPerl_hv_pushkvPerl_op_linklistPerl_sv_blessPL_lockhookPerl_dump_indentperl_freePL_replgvPerl_sv_len_utf8Perl_sv_freePL_isarevPerl_drand48_init_rPerl_pp_sassignPerl_cv_clone_intoPerlIOPending_readunlink@@GLIBC_2.17Perl_pp_undefPerl_newHVhvPerl_newPMOPPL_Latin1Perl_parse_barestmtPerl_save_sptrPerl_yyerror_pvnPerl_pp_dbstatePerl_save_ivPerl_newGVREFPerl_utf8n_to_uvchr_errorPerl_invlist_clonePerlIOBase_clearerrPerl_pp_definedPerl_pad_newPerl_PerlIO_stdoutPerl_av_lenPerl_gv_autoload_pvnPL_phasePerl_do_exec3Perl_get_hvPerl_hv_ksplitPL_hash_seed_setPerl_sv_truePerl_newUNOP_AUXstrcspn@@GLIBC_2.17PerlIO_fdopenPerl_get_op_namesPerl__invlist_union_maybe_complement_2ndPL_perlioPerl_hv_free_entPerl_pp_enterwritePerl_lex_peek_unicharPL_opargsPL_exitlistPL_unicodePerl_form_alien_digit_msgPL_taintingPerl_opslab_force_freePerl_pp_chrPerl_mfreePL_secondgvPerl_require_pvpipe@@GLIBC_2.17Perl_write_to_stderrPerl_pp_padavPerl_hv_kill_backrefsdlclose@@GLIBC_2.17Perl_sv_usepvnPerl_pp_indexPL_Posix_ptrsPerl_save_nogvPerl_newANONATTRSUBPerl_scan_wordXS_utf8_decodePerl_invertPerl_allocmyPerl_lex_stuff_svPerl_newCONDOPPerl_warnPerl_pp_syscallPL_srand_calledPL_langinfo_bufsizePerl_new_warnings_bitfieldPerl_get_svPL_TR_SPECIAL_HANDLING_UTF8fchmod@@GLIBC_2.17PerlIOStdio_openPerl_save_scalarPL_argvoutgvPerlIO_printfPL_dumpindentPerl_sv_setsv_mgPerl_reg_named_buff_nextkeyPerl_do_opennPerl_mg_localizePL_regmatch_state__vsnprintf_chk@@GLIBC_2.17sendto@@GLIBC_2.17Perl_boot_core_PerlIOPerl_sv_pvutf8Perl_do_shmioPerl_filter_delPerl_get_vtblPerl_hv_existsPerl_pp_existsPerl_gv_fetchmethodalarm@@GLIBC_2.17Perl_pp_lastPL_subnamePerl_mess_svPerl_boot_core_UNIVERSALPL_osnamePerl_custom_op_nameperl_parsePL_psig_namePerl_pp_selectPL_localpatchesPerl_gv_autoload_svPerl_bytes_cmp_utf8Perl_save_allocPerl_diefdopen@@GLIBC_2.17sigfillset@@GLIBC_2.17lseek64@@GLIBC_2.17Perl_my_statPerl_newRV_noincPerl__to_utf8_fold_flagsPerlIO_list_allocPerl_vdebPerl_gv_fetchmethod_pvn_flagsPerl_Slab_AllocPerl_eval_pvPerl_grok_bin_oct_hexPerl_sv_2bool_flagsPerl_pp_gnetentPerl_hv_copy_hints_hvgetpwnam@@GLIBC_2.17Perl_pp_aelemfastPerl_defelem_targetPL_Assigned_invlistPerl_vivify_refPerl_ck_rfunPerl_gv_init_pvPerl_pp_andPerl_sv_setsvPerlIO_perlioPerl_sv_add_backrefPerl_pp_aslicePL_gensymPL_strxfrm_max_cpPL_utf8_totitlePerlIOStdio_dupPerl_magic_clearenvPerl_pp_unpackPerl_mg_clearPerl_pp_xorPL_sig_numPerl_free_tied_hv_poolPerl_op_dumpPL_sh_pathPerl_pp_complementPL_unitcheckavPL_perl_destruct_levelPerl_pad_tidyPerl_savesvpvPerl_ck_definedPL_padix_floorsetprotoent@@GLIBC_2.17Perl_load_charnameslocaltime@@GLIBC_2.17Perl_my_stat_flagsPerl_sv_clean_allPerl_vverifyPerl_sv_setsv_cowPerl_parse_labelPerl_clear_defarrayseekdir@@GLIBC_2.17Perl_sv_unmagicPL_bitcountPL_c9_utf8_dfa_tabPerl_vivify_defelemPerl_sv_inc_nomgPerl_sv_setpv_mgPerl_magic_sethintPerl_tied_methodPerl_newLISTOPPerlIOCrlf_writedup3@@GLIBC_2.17Perl_call_atexitPerl_atfork_unlockPerl_hv_eiter_pPerl_get_prop_definitionrecvfrom@@GLIBC_2.17PL_tmps_stackPerl_av_deletePL_eval_startPerl_fbm_compilemkostemp64@@GLIBC_2.17Perl_dorefPL_utf8_idstartgetservent@@GLIBC_2.17Perl_croak_no_modifyPerl_reg_named_buff_existsPerl_valid_utf8_to_uvuniPerl_reg_named_buff_fetchfileno@@GLIBC_2.17Perl_save_destructorPerl_ck_entersub_args_protoPL_curstashPerl_sv_magicext_mglobPL_minus_FPerl_do_joinPerl_keyword_plugin_standard__gmon_start__PL_generationPerl_magic_freecollxfrmPerl_pp_closePerl_my_vsnprintfPerl_hv_iternext_flagsPerl_sv_nosharingPerl_no_bareword_filehandlePerl_save_generic_pvrefPL_origenvironPerl_pp_returnPerl_do_eofXS_builtin_func1_scalarPL_curpadPerlIO_putcgetprotobynumber@@GLIBC_2.17Perl_save_deletePerl_utf16_to_utf8_reversedPerl_lex_unstuffPerl_gv_fetchmeth_pv_autoloadPL_utf8_tofoldPerlIO_default_layersPL_utf8_xidstartPerl_reg_named_buff_iterPerl_gv_fetchmeth_svPerl_pp_warnPerl_ck_grepPerl_ck_smartmatchPerlIO_removePerl_my_dirfdsetresuid@@GLIBC_2.17Perl_jmaybePL_mess_svPerlIO_stdioPerl_save_intPL_checkavPL_argvout_stackrename@@GLIBC_2.17strtod@@GLIBC_2.17Perl_sv_does_pvPerl_save_hashXS_utf8_encodePerl_cop_fetch_labelXS_builtin_indexedPerl_sv_free_arenasPerl_printf_nocontextPerl_PerlIO_tellPerlIO_find_layerPL_signalhookPerl_av_makePerl_pp_sysopenPerlIO_importFILEPerl_ck_repeatkillpg@@GLIBC_2.17Perl_magic_clearsiggetcwd@@GLIBC_2.17ldexp@@GLIBC_2.17Perl_newLOOPOPPL_YesPL_collation_namePL_sv_rootPerlIOBase_poppedPerl_do_openPL_fdpidPerl_do_gvgv_dumpPerl_utf8_to_uvchrPerl_ck_refassignPerl_op_unscopePerl_ck_requirePerl_scan_binPerlIOUnix_pushedPerl_find_lexical_cvPL_ptr_tablePerl_sv_streq_flagsPerl_pp_pushPerl_do_readlinePerl_cvgv_from_hekPerl_filter_addgp_flags_namesstrnlen@@GLIBC_2.17Perl_mg_freeextPerl_pmruntimePerl_init_debuggerPerl_vnewSVpvfPL_simple_bitmaskPerl_get_ppaddrPerl_magic_setregexpPerl_sv_utf8_downgrade_flagsPerl_parse_listexprsuper_cp_formatPerl_pp_sprintfPerl_magic_regdatum_getPerlIOBase_unreadPerl_thread_locale_initPerl_scan_vstringPL_basetimePL_comppad_namePerl_padname_freePL_reentrant_retintPL_checkPerl_dump_packsubsPL_constpadixPerl_gv_stashsvpvn_cachedPerl__new_invlistreadlink@@GLIBC_2.17Perl_sv_2uvgetpid@@GLIBC_2.17PL_DBsinglePerl_pp_shostentsocket@@GLIBC_2.17PerlIOStdio_fillPL_isa_DOESPerl_pp_i_lePerl_save_hintsgetpwuid@@GLIBC_2.17PL_prevailing_versionPerl_newRANGEPerl_pp_blessedXS_NamedCapture_tie_itPerlIOBuf_flushPerl_sv_insert_flagsPerl_lex_read_unicharPerl_pp_anonhashPerlIO_putsPerl_vcroakfreelocale@@GLIBC_2.17PerlIOBuf_writePerl_pp_sbit_andPerl_ck_returnPerl_pp_filenoNATIVE_TO_NEEDnonchar_cp_formatPerl_uvoffuni_to_utf8_flagsPerl_pp_chrootPerl_is_utf8_chargetservbyname@@GLIBC_2.17Perl_sv_untaintPerlIO_has_cntptrPL_defstashPerl_pp_i_gePerl_newSVavdefelemPerl_pp_lvavrefPerl_av_create_and_pushPerl_my_strerrorPerl_sv_vcatpvfn_flagsPL_WARN_ALLPerl_pp_rewinddirPerl_pp_eqnl_langinfo@@GLIBC_2.17Perl_sv_does_svPerl_reg_temp_copyPerl_sv_setref_pvnPerl_do_open_rawPerl_pp_i_gtPerl__setup_canned_invlistPerl_save_svrefPerl_drand48_rPL_laststatvalPerlIO_initPerl_current_re_enginePerlIO_exportFILEPerl_sv_pvbyten_forcePL_nomemokPerl_av_clearPerl_lex_bufutf8Perl_magic_setsigPerl_init_dbargsmsgctl@@GLIBC_2.17Perl_scalarvoidPerl_sv_catpv_flagsPL_stdingvstdout@@GLIBC_2.17Perl_gv_fullname3Perl_PerlIO_seekPerl_sv_unref_flagsPerlIO_reopenPerl_vformPerlIO_fast_getsPerl_delimcpyPerl_pp_open_dirPL_collxfrm_multPL_strategy_dupPerlIOBuf_set_ptrcntPerl_sv_catpvfPerl_call_listPerl_ck_trycatchPL_mbrtowc_psPerl_sv_cmp_flagsPerl_leave_scopePerl_hv_riter_setPerlIOBuf_closePerlIO_arg_fetchPL_utf8localeperl_runPerlIOPop_pushedPL_in_clean_objsPerl_pp_method_redirPL_csighandler3pPerl_op_nullPerl_my_popenPerl_magic_setsubstrPerl_sv_catpvn_flagsPerl_pp_sinPerl_pp_tellPerl_sv_recode_to_utf8Perl_newSVsv_flagssigaction@@GLIBC_2.17getgrent@@GLIBC_2.17Perl_sv_2pv_nolenPL_sortstashPerl_pp_gelem__stack_chk_guard@@GLIBC_2.17PL_in_evalPerl_op_convert_listPerl_pp_execPerl_av_shiftPL_efloatsizePerl_gv_fetchpvmemcpy@@GLIBC_2.17Perl_ck_truncPerl_ck_lengthPerl_gp_freegetgid@@GLIBC_2.17Perl_sv_2mortalPerl_my_mkostemp_cloexecPerlIOStdio_writePerl_sv_collxfrmPerl_magic_clearpackPerl_vnormalPerl_pp_listenPL_in_load_modulePerl_pp_binmodePerl_coresub_opPerl_to_uni_titlePerl_sv_vsetpvfnPerl_do_binmodePerl_pp_chownPerl_cmpchain_startPL_compilingPL_SB_invlistPerl_do_gv_dumpPerl_op_refcnt_lockPL_savestack_ixPerl_sv_setrv_noincPL_hash_rand_bits_enabledPerl_pv_prettyPL_DBsignalPerlIOStdio_flush__ctype_b_loc@@GLIBC_2.17setnetent@@GLIBC_2.17Perl_pv_uni_displayPL_sortcopPerl_is_utf8_char_helper_PL_exit_flagsfread@@GLIBC_2.17XS_re_regnamesPerl_sv_usepvn_mgPerl_newPROGsymlink@@GLIBC_2.17Perl_pp_multiderefPerl_hv_clear_placeholdersPerl_sv_setpvPerl_magic_clear_all_envPerlIOStdio_unreadPL_last_in_gvPerlIO_parse_layersgetnetent@@GLIBC_2.17Perl_bytes_to_utf8Perl_sv_eq_flagsXS_NamedCapture_FETCHPerl_pp_poptryPerl_nextargvgethostbyname@@GLIBC_2.17PL_lastfdPL_mainstackPerl_vload_modulePerl_newGPmemmem@@GLIBC_2.17getpriority@@GLIBC_2.17Perl_gv_fetchsvPerl_magic_setutf8Perl_sv_pos_u2b_flagsPerl_pp_repeatPerl_my_atof3PL_efloatbufPerl_rxres_savePerl_ck_entersub_args_proto_or_listPerl_despatch_signalsPerl_av_undefPerl_find_runcv_wherePerl_pp_isaPerl_hv_scalarPerl_ck_entersub_args_listPerl_scan_numPerlIOBase_noop_failPerlIO_pendingPerl_my_setenvPerl_emulate_cop_ioPerl_PerlIO_restore_errnoPerl_pp_seqPerl_do_dump_padsetreuid@@GLIBC_2.17Perl_do_transPerl_pp_nextstatePerl_optimize_optreePerl_sv_grow_freshPerl_pp_resetPerl_vstringifyPerl_do_open9Perl_pp_openPL_patchlevelPerl_ck_matchPerl_mro_method_changed_inPerl_pregfreePerl_start_globPerl_newANONSUBPerl_rpeepPL_checkav_saverealloc@@GLIBC_2.17PerlIOUnix_refcnt_deccos@@GLIBC_2.17Perl_sighandler1Perl_newLOGOPPerl_newGVOPPL_setlocale_bufsigismember@@GLIBC_2.17Perl_pp_grepwhilePerl_formPerl_pp_sortPerl_hv_deletePerl_pp_deletePerl_newGVgen_flagsPerlIOUnix_oflagsPerl_regpropPL_numeric_radix_svflock@@GLIBC_2.17PerlIOBuf_get_basePerl_pp_catchPerl__invlist_invertPerl_newSVhekPL_main_startPerl_cv_ckproto_len_flagsdup2@@GLIBC_2.17Perl_PerlIO_flushstrftime@@GLIBC_2.17Perl_pad_add_weakrefgetgroups@@GLIBC_2.17Perl_magic_copycallcheckerPerl_utf16_to_utf8_basePerl_gv_fetchpvn_flagsPerl_pp_substcontPerl_pp_ucfirststrrchr@@GLIBC_2.17PerlIOStdio_seekPerl_yyerror_pvdirfd@@GLIBC_2.17Perl_my_snprintfPerl_sv_refPerlIOUnix_openPerl_hv_iternextsvPerl_refcounted_he_new_svPL_padname_constPerl_op_scopePerl_leave_adjust_stacks__ctype_toupper_loc@@GLIBC_2.17Perl_newPADNAMEpvnPL_body_rootsXS_DynaLoader_dl_load_filePL_modglobalPerl_sv_dumpPerl_gmtime64_rPerl_grok_binPerl_pp_ftrownedmkstemp64@@GLIBC_2.17Perl_free_tmpsmktime@@GLIBC_2.17Perl_sv_nvPerl_hv_storePL_filemodePerl_applyPerl_magic_getarylenPerl_refcounted_he_incPL_compcvPerl_newSVpvn_sharePerl_padlist_storePerl_newDEFSVOPPerl_get_opargsmemrchr@@GLIBC_2.17Perl_yyquitPerl_scan_octPL_utf8_perl_idstartPerl_save_adeletePL_watch_pvxexecl@@GLIBC_2.17Perl_find_rundefsvoffsetPL_delaymagic_egidPL_evalseqPerl_hv_exists_entPerl_packlistPerl_whichsig_pvnPerl__invlistEQselect@@GLIBC_2.17PL_stack_spPerlIOPending_closePerlIOBuf_openPerl_ck_funPerl_prescan_versionPerl_hv_store_flagsPerl_oopsAVPerlIO_cleanupPerl_setfd_cloexec_or_inhexec_by_sysfdnessPerl_hugePerl_pp_ncomplementreaddir64@@GLIBC_2.17Perl_get_regclass_nonbitmap_dataPerl_pp_vecPerl_listPerl_pp_readdirPerl_reg_named_buffPerl_sv_force_normalPerl_parser_free_nexttoke_opsPerl_PerlIO_get_bufsiz__cxa_finalize@@GLIBC_2.17XS_UNIVERSAL_isaop_class_namesPL_CCC_non0_non230PerlIO_canset_cntsleep@@GLIBC_2.17Perl_taint_properfreopen64@@GLIBC_2.17Perl_more_svPerl_unimplemented_opPerl_do_printPL_no_helem_svPL_user_def_propsPerl_ck_eachgp_flags_imported_namesshutdown@@GLIBC_2.17PL_variesPerl_is_utf8_FF_helper_Perl_debstackPerl_sv_peekPL_oldnamePerl_gv_init_pvnPL_valid_types_IV_setPerl_ninstr_ITM_deregisterTMCloneTablePL_errorsPerl_pp_scmpPerl_gv_fetchmeth_pvn_autoloadPerl_PerlIO_readPerl__invlist_dumpPL_savestackPerl_reentrant_freestrstr@@GLIBC_2.17Perl_looks_like_numberPerlIOStdio_eofPerl_sv_collxfrm_flagsPerl_noperl_diePerl_get_and_check_backslash_N_namePerl_pp_backtickPerl__invlist_searchPL_toptargetPerl_die_unwindPL_numeric_standardPerl_pp_i_ltPerl_newSVsvPerl_magic_getuvarPL_scopestackPerl_ck_entersub_args_corePerl_pp_i_subtractsigaddset@@GLIBC_2.17perl_allocXS_DynaLoader_dl_unload_filePerl_pp_mapwhilePerl_newXS_deffilePerl_reallocshmat@@GLIBC_2.17PerlIOBase_binmodePerl_populate_isaPerl_magic_clearisa_exit@@GLIBC_2.17Perl_rsignal_restorePerl_sv_setuvPerlIOPending_set_ptrcntPL_UpperLatin1Perl_magic_setPL_curpmPerl_try_amagic_binPerl_magic_methcallgetsockopt@@GLIBC_2.17Perl_op_lvalue_flagsPerl_pp_regcompPerlIO_pushPerl_pp_gvPerl_ck_methodPerl_pp_stubPerl__mem_collxfrmPerl_get_op_descsPerl_save_hptrPerl_sv_clearXS_builtin_created_as_numberPerl_newSVOPPL_bincompat_optionsPerl_save_opdup@@GLIBC_2.17Perl_pp_multiconcatPerl_runops_standardPL_signalsPerl_reg_named_buff_firstkeyPerl_hv_riter_pPerl_vmessPL_taint_warnPL_numeric_underlying_is_standardPerl_thread_locale_termPerl_pp_timePerl_pp_cryptPerl_parse_blockPerlIOBase_flush_linebufPerl_dounwindPerl_PerlIO_context_layersPerl_softref2xvPerl_magic_setvecPerl_grok_infnanXS_builtin_trimumask@@GLIBC_2.17Perl_rsignal_statePL_min_intro_pendingPerl_nothreadhookPerl_cv_set_call_checkerPerl_sv_setpvn_mgendprotoent@@GLIBC_2.17Perl_pp_diePerl_sv_cmpPerl_pp_av2arylenPerl_uvchr_to_utf8Perl_utf8n_to_uvchrPL_localizingPerl_pp_substPerl_hfree_next_entryPL_opPerl_sv_reftypePL_stashcachePerl_sv_catsvPL_DBtracePerl_pp_requirePerl_intro_myPerl_sighandler3PL_hash_seed_wPerl_vcmpPerl_to_uni_lowerPL_tmps_maxPL_op_sequencePerl_parse_fullstmtPerl_pp_is_weakPerl_PerlIO_save_errnoPerl_av_extend_gutsPerl_pp_rv2avPerl_mg_copy__open64_2@@GLIBC_2.17Perl_pp_printPerl_sv_derived_from_svPerl_pp_pushdeferPerl_pp_srandPerl_check_utf8_printPL_reg_extflags_namePerl_cv_const_sv_or_av_ITM_registerTMCloneTableclosedir@@GLIBC_2.17PL_warn_uninit_svPerl_warn_svPerl_pv_escapePerl_gv_name_setPerl_pp_cmpchain_andPerl_gv_dumpPerl_xs_handshakePL_scopestack_namePerl_gv_setrefPerl_refcounted_he_fetch_pvnPerl_magic_freearylen_pPerl_cntrl_to_mnemonicPerlIOStdio_filenoPerl_do_sv_dumpPerl_utf8_to_bytesPerl_sv_2pvutf8_nolenPerl_pp_is_boolPerl_pp_bit_andPerl_wrap_keyword_pluginPerl_pp_renamePerl_save_listPerl_callocstrncmp@@GLIBC_2.17Perl_save_I32getnetbyaddr@@GLIBC_2.17Perl_av_create_and_unshift_onePerl_pp_matchPerl_magic_getsubstrPerl_pp_i_eqPerlIO__closePerl_newIOPL_locale_utf8nessPerl_sv_nounlockingPerl_pp_powPerl_sv_doesPL_strtabPerl_uvchr_to_utf8_flagsPL_beginav_savestderr@@GLIBC_2.17Perl_pp_enteriterPL_minus_EPerl_magic_setnonelemPL_utf8_xidcontPerl_magic_scalarpackPerl_parse_arithexprPL_savebeginPL_curpm_underPerl_init_unipropsfmod@@GLIBC_2.17PL_strategy_mkstempPL_debstashPerl_mro_set_private_dataPerl_pp_lePerl_newSVREFabort@@GLIBC_2.17Perl_newSTUBmsgsnd@@GLIBC_2.17Perl_opslab_free_nopadPerl_PerlIO_get_cntPerlIO_define_layerPL_delaymagicPerl_save_hdeletePerl_mro_set_mroPerl_sortsv_flagscv_flags_namesPL_NoPerl_pp_dividePerl_pp_enterevalPL_in_clean_allPerl_mini_mktimePL_minus_pPerl_pp_argdefelemPerl_pp_method_namedPerl_PerlLIO_dup_cloexecPL_psig_ptrPL_watchaddrPerl_savepvnPerl_uvuni_to_utf8_flagsPL_strategy_pipePL_markstack_maxPerl__is_uni_perl_idcontPL_hintgvPerl_pp_setpgrpsecond_sv_flags_namesPerl_sys_termPerl_do_kvPerl_PerlIO_eofPerl_ptr_table_fetchPL_veto_cleanupPerl_refcounted_he_new_pvnPL_eval_rootPerl_padnamelist_fetchpmflags_flags_namesfrexp@@GLIBC_2.17Perl_pp_avhvswitchPerl_magic_getdebugvarPerl_magic_nextpackPerl_newCONSTSUB_flagsPerlIO_default_bufferPerl_magic_setisaPerl_sv_catpvPerl_magic_clearhintPerl_av_reifyPerl_pp_forkXS_NamedCapture_TIEHASHcrypt@@GLIBC_2.17PL_regkindPL_anPL_preambleavPerl__to_utf8_upper_flagsPerl_debug_hash_seedPerl__is_utf8_perl_idcontPerl_qerrorPerl_op_wrap_finallyPerl_mallocPerl_pad_add_name_pvPL_DBlineendservent@@GLIBC_2.17Perl_sv_replacePL_warn_uninitPerl_gv_fetchmeth_pvnPerl_is_utf8_char_bufPerl_pp_pipe_opPerl_my_forkPerl_finalize_optreePerl_pp_rcatlinePerl_save_pushptrptrboot_DynaLoaderPL_simplePerl_sv_2pvutf8_flagsPL_minus_lstrspn@@GLIBC_2.17Perl_magic_getPerl_av_iter_pPerl_gv_HVaddPerl_my_exit__sigsetjmp@@GLIBC_2.17Perl_sv_setref_pvPerl_PerlIO_setlinebufPerl_pp_syswritePerlIORaw_pushedPerl_atfork_lockPL_op_private_labelsPerl_csighandler3Perl_sv_2ivPerl_isinfnanPerl_pp_akeysPerl_pp_refassignrmdir@@GLIBC_2.17Perl_cv_undef_flagsPL_collation_ixferror@@GLIBC_2.17Perl_sv_rvweakenPerl_pp_entersubPerl_mg_lengthPerl_newANONHASHPerlIO_stdstreamstelldir@@GLIBC_2.17Perl_magic_setuvarPerl_gv_efullname4Perl_pp_closedirPerl_magic_dumpPerl_sys_initPerl_pregfree2PL_custom_op_namesPerl_setdefoutPL_markstack_ptrPL_no_wrongreffgetc@@GLIBC_2.17Perl_magic_getsigXS_constant__make_constfflush@@GLIBC_2.17Perl__is_cur_LC_category_utf8Perl_do_semopPL_minus_cPerl_create_eval_scopePerl_av_nonelemPerl_candoPL_taintedPerl_pp_bit_oruselocale@@GLIBC_2.17Perl_newMYSUBPerl_scan_strPerl_peepPL_nanPerl_do_hv_dumpPerl_pp_constPerl_pp_truncatePerl_gv_stashsvPerl_newXS_flagsPerl_refcounted_he_new_pvperl_constructPerlIO_findFILEsetresgid@@GLIBC_2.17Perl_vnumifyPerl_sv_vsetpvfPL_sighandler1pPL_no_securityPerl_yylexPL_mbrlen_pstowupper@@GLIBC_2.17Perl_pp_left_shiftPerl_sv_uvsetservent@@GLIBC_2.17semctl@@GLIBC_2.17PL_markstackPerl_av_extendPL_curinterpPerl_pp_method_redir_superPerl_pp_leavetrycatchpause@@GLIBC_2.17Perl_PerlIO_closePL_peeppPerl_sv_pos_b2u__fxstat64@@GLIBC_2.17Perl__inverse_foldsPL_foldPL_comppad_name_fillPerl_pp_ceilPerl_pp_readlinkPerl_boot_core_builtinPerl_pp_ncmpPerlIO_clonePerl_yyerrorPerl_sv_cmp_locale_flagsPerl_sv_setrv_incPerl_utf8_to_uvchr_bufPerlIOStdio_readPerl_ck_listiobPerl_pp_flockPL_no_dir_funcPL_stderrgvPL_op_seqPerl_gv_efullnamePerl_sv_2pvbytePerl_magic_setdebugvarPerl_save_mortalizesvPerl_newWHENOPPerl_is_lvalue_subPerl_pop_scopePerl_invmap_dumpPL_debugPerlIO_popgetuid@@GLIBC_2.17Perl_pp_shutdownPL_no_funcPL_comppad_name_floorPerl_newUNOPPerl_ck_lfunPerl_oopsHVPerlIOBuf_unreadPL_opfreehookPerl_magic_freeovrldPerl_newSVrvPerl_pp_anonlistmbtowc@@GLIBC_2.17Perl_cvstash_setPerl_pp_unstackregexp_core_intflags_names__errno_location@@GLIBC_2.17PerlIOUnix_writePerl_mro_registerPerl_sv_mortalcopy_flagsPL_scopestack_maxPerl_my_unexecPerl_save_freesvPerl_pp_i_negatePerl_magic_sizepackPL_custom_opsPerl_sv_upgradePL_beginavPerl_isinfnansvPL_errgvPerl_ck_spairPL_sv_countPerl_pp_reversePerl_dump_packsubs_perlPL_utf8_charname_continuePL_curstackinfoPerl_more_bodiesPerl__byte_dump_stringsemget@@GLIBC_2.17XS_re_regnameprctl@@GLIBC_2.17XS_DynaLoader_dl_find_symbolPerl__add_range_to_invlistPL_sighandler3pPerl_sv_isa_svPerl_mro_isa_changed_inPerl_pp_posPL_curstackPerlIOBuf_get_ptrPerl_find_rundefsvPerl_set_numeric_underlyingPerlIOStdio_errorPerl_save_vptrPerl_pp_introcvPerl_get_re_argPerl_pp_concatPerlIO_binmodePerlIO_unixPL_strategy_dup2Perl_hv_store_entPerl_cast_i32Perl_wrap_op_checkerPerlIOBase_pushedPL_extended_cp_formatPerl_do_open6Perl_save_padsv_and_mortalizePerl_warnerPerl_gv_const_svsigprocmask@@GLIBC_2.17PL_SCX_invlistXS_DynaLoader_dl_errorPerl_pp_exitPerl_ck_isaPerl_doing_taintPerl_pp_lengthstdin@@GLIBC_2.17Perl_gv_SVaddPerl_call_svPerl_pp_prtfPerl_lex_discard_toPerl_pp_sneeaccess@@GLIBC_2.17Perl_my_attrsPerl_hv_undef_flagsPerl_pp_linkPerl_pp_getcPerl_ck_eofPL_endavPerl_sv_setsv_flagsPerl_pp_callerPerl_do_msgrcvPerl_refcounted_he_fetch_svPerl_sv_setref_nvPerl_filter_readPerl_pp_i_dividePerl_av_storePerl_ck_execsignal@@GLIBC_2.17Perl_sv_dec_nomgPL_main_rootXS_PerlIO_get_layersPerl_sv_pvn_force_flagsPerl_pp_prototypePerl_sv_get_backrefsPerl_init_i18nl14nXS_builtin_func1_voidPerl_cvgv_setsetgrent@@GLIBC_2.17semop@@GLIBC_2.17sethostent@@GLIBC_2.17PL_globalstashPerlIOStdio_modePerlIOCrlf_binmodePerl_magic_wipepackPerl_set_caret_XPerlIO_getcsyscall@@GLIBC_2.17Perl_pp_i_moduloPerl_sv_isaPerl_gv_autoload_pv__lxstat64@@GLIBC_2.17Perl_pp_predecPerlIO_openPerl_PerlLIO_dup2_cloexecPerl_sv_setpvnPL_collation_standardPerl_dofileXS_NamedCapture_FIRSTKEYPerl_pp_smartmatchPerl_mro_get_linear_isarewinddir@@GLIBC_2.17Perl_dump_formPerl_save_freepvfork@@GLIBC_2.17Perl_pp_shiftPerl_sv_setpv_bufsizePerl_sv_utf8_upgradeshmdt@@GLIBC_2.17Perl_reentrant_retryPerl_grok_numeric_radixPerl_newLOOPEXPerlIOCrlf_get_cntPerl_is_utf8_string_locunsetenv@@GLIBC_2.17setlocale@@GLIBC_2.17Perl_pp_ordPerl__is_utf8_FOOPerl_was_lvalue_subPerl_gv_fetchfilePerlIOStdio_setlinebufPerl_pp_leavetryPL_chopsetPL_valid_types_PVXPerl_pregexecgetspnam@@GLIBC_2.17Perl_pp_aassignPL_watchokPerl_sv_free2Perl_pp_ftislog@@GLIBC_2.17Perl_hv_fetchPL_HasMultiCharFoldPL_EXACTFish_bitmaskPerl_op_prepend_elemPerl_pp_getloginPerl_pp_srefgen__h_errno_location@@GLIBC_2.17Perl_do_aexec5PerlIO_setposPerl_pp_anoncodePerl_stack_growPerlIOStdio_pushedPerl_block_gimmePerl_parse_unicode_optsPL_valid_types_RVPerl_sv_mortalcopylisten@@GLIBC_2.17getservbyport@@GLIBC_2.17Perl_my_failure_exitPerl_sv_ivPL_csighandlerpPL_origfilenamePL_perlio_debug_fdPerl_ptr_table_freePerl_my_strftime__stack_chk_fail@@GLIBC_2.17PL_maxsysfdPerl_pp_unshiftPL_strategy_acceptPerl_do_ncmpPerlIO_has_basePerl_newPADNAMEouterPerl_gv_IOaddPerl_gv_fetchfile_flagsgethostbyaddr@@GLIBC_2.17Perl_pad_swipePerl_regcurlyPerl_ck_selectPerl_pp_i_addPL_profiledataPerl_op_freePerlIOBuf_tellPL_GCB_invlistPL_fold_localePerl_pad_add_name_pvnPerl_pp_leavenewlocale@@GLIBC_2.17Perl_pp_sockpairPL_numeric_underlyingPerl_pp_gotoPerlIO_fdupopenPerlIOStdio_closePL_DBgvPerl_dump_sub_perlfchdir@@GLIBC_2.17PL_dbargsPerl_pp_intPL_valid_types_IVXPL_delaymagic_gidPerlIOUnix_filenoPL_no_aelemPerl_custom_op_descPerl_pp_rv2gvPerl_custom_op_registerPerl_cast_ivPL_strategy_openPerl_do_ipcgetPerl_sv_setpvf_mgPerl_newSVpv_sharePerl_vwarnPerl_croak_callerPerl_bytes_from_utf8_locPL_no_symref_svPerl_sv_2uv_flagsPerl_pad_leavemyXS_builtin_import__vfprintf_chk@@GLIBC_2.17Perl_ck_splitPerl_newANONLISTPL_sig_pendingPerl_op_contextualizePerl_save_I8Perl_switch_to_global_localePerl_pp_postincsocketpair@@GLIBC_2.17Perl_fprintf_nocontextPerl_sv_newmortalPerl_pp_chdirPerl_save_longPerlIO_resolve_layersPerl_runops_debugPerl_sv_2pvPerl_regdumpPerl_sv_incPerl_setfd_inhexec_for_sysfdPerl_pp_splicePerl_pp_hslicePerl_av_fetchPerl_unpackstringPerl_av_fillPerl_sv_2pvbyte_flagsPerl_lex_stuff_pvnPL_sigfpe_savedfcntl64@@GLIBC_2.28PerlIOUnix_refcnt__xstat64@@GLIBC_2.17Perl_sv_setnvPerl_blockhook_registerPerl_do_vecgetPL_exitlistlenPerl_ckwarn_dPerlIOBase_eofPerl_newOPPerl_get_contextPerl__is_utf8_perl_idstartPerl_mro_get_from_namePL_curcopPerl_pp_gserventPerlIOBase_errorPL_warn_nosemisetgroups@@GLIBC_2.17categoriesPerl_get_deprecated_property_msgPerl_my_socketpairPerl_pp_nbit_orPerl_parse_fullexprPerl_hv_magicPL_infPerl__is_uni_FOOPL_firstgvPerl_sv_resetpvnPL_in_utf8_CTYPE_localePerl_pp_studyPerl_xs_boot_epilogPL_AboveLatin1strpbrk@@GLIBC_2.17PerlIO_layer_fetchPerl_pad_findmy_pvPerl_sv_eqPL_csighandler1pPerl_do_ipcctlftruncate64@@GLIBC_2.17PL_rsPL_utf8_idcontPerl_newBINOPPerl_my_fflush_allPerl_pp_preincPerl_sv_catsv_flags__longjmp_chk@@GLIBC_2.17Perl_perly_sighandlerPerl_debPerl_form_cp_too_large_msgPerl_op_sibling_splicePerl_cv_set_call_checker_flagsPerl_pp_clonecvPerl_newDEFEROPPL_destroyhookPerl_savesharedpvnPerl_pp_setpriorityPerl_init_stacksPerl_gv_overridePL_statgvPL_op_private_bitdefsPerl_save_helem_flagsPL_sv_constsPerl_newTRYCATCHOPPerl_dump_vindentPerl_pp_wantarrayPerl_pp_getppidPerl_newMETHOP_namedPerl_gv_AVaddPerl_ck_tellPerl_pp_reftypePerl_sv_2nv_flagsendnetent@@GLIBC_2.17Perl_alloc_LOGOPPerl_sv_lenPerl_opslab_freePerl_hv_placeholders_getPerl_is_graphemePerl_pp_fttextPerl_pp_tmsPerl_sv_setref_ivPerlIO_apply_layeraPerl_magic_existspackPerl_pp_nullPerl_sv_2pvutf8Perl_mg_findextPerl_load_modulePL_subversionfeof@@GLIBC_2.17PL_statnamepow@@GLIBC_2.17Perl_sync_localePerl_newFOROPPL_clocktickPerl_pp_sleepPerl_do_vopPerl_custom_op_get_fieldPerl_sv_setrv_noinc_mgPerl_find_runcvPerl_magic_settaintPerl_varnamePerl_pp_pushmarkXS_utf8_native_to_unicodePerl_sv_destroyablePL_defgvPerl_my_pclosePerl_pv_displayPerl_pp_anonconstPerl_save_aelem_flagsmemcmp@@GLIBC_2.17Perl_pp_formlinePerl_get_db_subperl_destructPerl_PerlSock_socket_cloexecPL_breakable_sub_genPerl_sv_vcatpvf_mgPerl_pp_regcresetPL_def_layerlistPerl_call_methodPL_bodytargetsetegid@@GLIBC_2.17Perl_pp_leavewhenPL_mod_latin1_ucPerl_ck_bitopPerl_magic_setsigallPerl_PerlIO_filenomatch_unipropPerl_regexec_flagsPerl_mem_collxfrmPerl_PerlLIO_open_cloexecPerl_cv_forget_slabPerl_pp_rmdirPerl_ck_ftstmalloc@@GLIBC_2.17Perl_newSTATEOPPL_diehookPerl_op_refcnt_unlockPL_tmps_floorPerl_pp_semgetPerl_pp_subtractPerl_pp_lslicePL_strict_utf8_dfa_tabPerl_PerlLIO_open3_cloexecgetnetbyname@@GLIBC_2.17PL_unsafeXS_builtin_falsePerl_magic_getvecPerlIOBuf_get_cntPerl__new_invlist_C_arrayPerl_hv_iterkeysvPerl_utf8n_to_uvunisigemptyset@@GLIBC_2.17Perl_safesyscallocPerl_ck_prototypePerl_pad_freePL_EXACT_REQ8_bitmaskPerl_pp_gePerl__warn_problematic_localePerl_ck_svconstPerl_parse_subsignaturePerl_reg_numbered_buff_fetchPerl_sv_catpv_mgPerl_newCONSTSUBPerl_gv_fetchmeth_sv_autoloadPerl_sv_set_undefPL_inplacePerl_sv_clean_objsPerl_re_op_compilePL_core_reg_enginePerl_sv_setpvfPerl_op_parentPerl_op_cleargetpgid@@GLIBC_2.17Perl_sv_string_from_errnumPL_warn_nlgeteuid@@GLIBC_2.17first_sv_flags_namesPerl_PerlIO_errorPerl_keywordPL_in_utf8_COLLATE_localePL_utf8_toupperseteuid@@GLIBC_2.17Perl_hv_bucket_ratioPerl_save_pushptrPerl__is_in_locale_categoryPerl_pack_catPerl_pp_lockPL_fold_latin1PerlIO_bytePerl_ck_warner_dPerl__to_utf8_title_flagsPerl_pp_ftlinkPerl_ptr_table_storePerl_pp_quotemetaPerl_croak_memory_wrapsend@@GLIBC_2.17Perl_save_set_svflagsPerl_newSVPerl_save_strlenPerlIO_utf8bind@@GLIBC_2.17pipe2@@GLIBC_2.17Perl_sv_pvPerl_debprofdumpPL_doswitchesdlsym@@GLIBC_2.17Perl_sv_nolockingPerl_gv_init_svXS_mro_method_changed_indlerror@@GLIBC_2.17Perl_ck_shiftendpwent@@GLIBC_2.17Perl_mg_setPerl_regfree_internalPerlIO_tab_svPerl_pp_absPL_forkprocessPerl_pad_pushPerl_sv_resetPerl_setfd_cloexecPerl_isSCRIPT_RUNPerlIO_isutf8Perl_magic_setmglobPerl_hv_rand_setPerl_sv_vcatpvfnPL_custom_op_descsPerl_eval_svPerl_save_itemPerl_debopPerl_parser_freePerl_sv_2ioPL_body_arenasPerl_do_vecsetPL_reg_intflags_namePL_initavPerlIO_default_layerPerl__to_upper_title_latin1Perl__force_out_malformed_utf8_messagePerl_messPerl_magic_getposPerl_safesysreallocPerl_do_uniprop_matchPerl_sv_vcatpvfPerl_pp_leavegivenwaitpid@@GLIBC_2.17XS_DynaLoader_dl_install_xsubPL_perlio_fd_refcnt_sizePerlIOCrlf_pushedPerl_pp_alarmfclose@@GLIBC_2.17Perl_pp_kvaslicePerl_getcwd_svPerl_sv_kill_backrefsPerl_try_amagic_unPerl_pp_getpriorityPerlIO_modestrPL_langinfo_bufPerl_utf8_lengthPerlIO_clone_listisatty@@GLIBC_2.17setpgid@@GLIBC_2.17Perl_hv_fetch_entioctl@@GLIBC_2.17Perl_pp_umaskPerl_sv_setuv_mgPerl_sv_setrv_inc_mgPerl_cmpchain_extendPerl_moreswitchesPerl_ptr_table_splitPerl_newAVREFPerl_get_cvn_flagsPerl_pp_schopPerl_newSVivPerl_save_shared_pvrefPerl_csighandler1Perl_do_magic_dumpPL_padixPerl_lex_read_spacePerl_magic_setposPL_no_usymPerl_mro_get_private_dataPerl_cop_store_labelPerl_do_sysseekPerl_save_boolPerl_newSVnvXS_re_regnames_countPerl_magic_freeutf8Perl_set_contextPerl_setfd_cloexec_for_nonsysfdPerl_magic_regdata_cntPL_in_utf8_turkic_localePerl_magic_setdefelemPerl_sv_vsetpvf_mgPL_valid_types_NV_setPL_restartjmpenvPerl_mode_from_disciplinePerl_hv_common_key_lenPerl_abort_executionPL_reg_namePerl_sv_unrefPerl_do_pmop_dumpPL_no_localize_refPerl_my_strlcatPL_DBcontrolPerl_pp_i_multiplyPL_LB_invlistPerlIO_rewindPerl_re_intuit_stringPL_registered_mrosPerl_pp_socketPL_numeric_namePerl_grok_bslash_xPerl_ck_sortPerl_ck_nullPerl_magic_getnkeysPerlIO_teardownPerl_get_avPerl_hv_itervalPL_statcachePerl_reg_named_buff_allhv_flags_namesPerl_magic_setnkeysgetlogin@@GLIBC_2.17Perl_ck_stringifyPerl_sv_2numPerl_closest_copPerl_ck_joinPerl_langinfogetpeername@@GLIBC_2.17fseeko64@@GLIBC_2.17Perl_croak_popstackXS_utf8_unicode_to_nativePerl_hv_fillPerl_lex_startPL_psig_pendPerl_sv_utf8_downgradePerl_my_popen_listPL_dowarnPerl_newMETHOPPerl_PerlIO_get_ptrPerl_hv_auxallocXS_Internals_hv_clear_placO_invlistUNI_SUTTONSIGNWRITING_invlistUNI_SUPSYMBOLSANDPICTOGRAPHS_invlistUNI_SUPPUNCTUATION_invlistUNI_SUPPUAB_invlistUNI_SUPPUAA_invlistUNI_SUPMATHOPERATORS_invlistUNI_SUPERANDSUB_invlistUNI_SUPARROWSC_invlistUNI_SUPARROWSB_invlistUNI_SUPARROWSA_invlistUNI_SUNDANESESUP_invlistUNI_SUND_invlistUNI_STERM_invlistUNI_SPECIALS_invlistUNI_SOYO_invlistUNI_SORA_invlistUNI_SOGO_invlistUNI_SOGD_invlistUNI_SO_invlistUNI_SMALLKANAEXT_invlistUNI_SMALLFORMS_invlistUNI_SM_invlistUNI_SK_invlistUNI_SINHALAARCHAICNUMBERS_invlistUNI_SINH_invlistUNI_SIND_invlistUNI_SIDD_invlistUNI_SHRD_invlistUNI_SHORTHANDFORMATCONTROLS_invlistUNI_SHAW_invlistUNI_SGNW_invlistUNI_SD_invlistUNI_SC__ZYYY_invlistUNI_SC__YI_invlistUNI_SC__YEZI_invlistUNI_SC__TIRH_invlistUNI_SC__THAA_invlistUNI_SC__TGLG_invlistUNI_SC__TELU_invlistUNI_SC__TAML_invlistUNI_SC__TALE_invlistUNI_SC__TAKR_invlistUNI_SC__TAGB_invlistUNI_SC__SYRC_invlistUNI_SC__SYLO_invlistUNI_SC__SOGD_invlistUNI_SC__SINH_invlistUNI_SC__SIND_invlistUNI_SC__SHRD_invlistUNI_SC__ROHG_invlistUNI_SC__QAAI_invlistUNI_SC__PHLP_invlistUNI_SC__PHAG_invlistUNI_SC__PERM_invlistUNI_SC__OUGR_invlistUNI_SC__ORYA_invlistUNI_SC__NKO_invlistUNI_SC__NAND_invlistUNI_SC__MYMR_invlistUNI_SC__MULT_invlistUNI_SC__MONG_invlistUNI_SC__MODI_invlistUNI_SC__MLYM_invlistUNI_SC__MANI_invlistUNI_SC__MAND_invlistUNI_SC__MAHJ_invlistUNI_SC__LINB_invlistUNI_SC__LINA_invlistUNI_SC__LIMB_invlistUNI_SC__LATN_invlistUNI_SC__KTHI_invlistUNI_SC__KNDA_invlistUNI_SC__KHOJ_invlistUNI_SC__KANA_invlistUNI_SC__KALI_invlistUNI_SC__JAVA_invlistUNI_SC__HIRA_invlistUNI_SC__HANO_invlistUNI_SC__HANG_invlistUNI_SC__HAN_invlistUNI_SC__GURU_invlistUNI_SC__GUJR_invlistUNI_SC__GREK_invlistUNI_SC__GRAN_invlistUNI_SC__GONM_invlistUNI_SC__GONG_invlistUNI_SC__GLAG_invlistUNI_SC__GEOR_invlistUNI_SC__DUPL_invlistUNI_SC__DOGR_invlistUNI_SC__DEVA_invlistUNI_SC__CYRL_invlistUNI_SC__CPRT_invlistUNI_SC__CPMN_invlistUNI_SC__COPT_invlistUNI_SC__CAKM_invlistUNI_SC__BUHD_invlistUNI_SC__BUGI_invlistUNI_SC__BOPO_invlistUNI_SC__BENG_invlistUNI_SC__ARAB_invlistUNI_SC__ADLM_invlistUNI_SC_invlistUNI_SB__XX_invlistUNI_SB__UP_invlistUNI_SB__ST_invlistUNI_SB__SP_invlistUNI_SB__SE_invlistUNI_SB__SC_invlistUNI_SB__NU_invlistUNI_SB__LO_invlistUNI_SB__LE_invlistUNI_SB__FO_invlistUNI_SB__EX_invlistUNI_SB__CL_invlistUNI_SB__AT_invlistUNI_SAUR_invlistUNI_SARB_invlistUNI_SAMR_invlistUNI_S_invlistUNI_RUNR_invlistUNI_RUMI_invlistUNI_ROHG_invlistUNI_RJNG_invlistUNI_RI_invlistUNI_RADICAL_invlistUNI_QMARK_invlistUNI_QAAI_invlistUNI_PUA_invlistUNI_PS_invlistUNI_PRTI_invlistUNI_PO_invlistUNI_PLAYINGCARDS_invlistUNI_PI_invlistUNI_PHONETICEXTSUP_invlistUNI_PHONETICEXT_invlistUNI_PHNX_invlistUNI_PHLP_invlistUNI_PHLI_invlistUNI_PHAISTOS_invlistUNI_PHAG_invlistUNI_PF_invlistUNI_PERM_invlistUNI_PE_invlistUNI_PD_invlistUNI_PCM_invlistUNI_PC_invlistUNI_PAUC_invlistUNI_PATSYN_invlistUNI_PALM_invlistUNI_P_invlistUNI_OUGR_invlistUNI_OTTOMANSIYAQNUMBERS_invlistUNI_OSMA_invlistUNI_OSGE_invlistUNI_ORYA_invlistUNI_ORNAMENTALDINGBATS_invlistUNI_ORKH_invlistUNI_OLCK_invlistUNI_OGAM_invlistUNI_OCR_invlistUNI_NV__NAN_invlistUNI_NV__900000_invlistUNI_NV__90000_invlistUNI_NV__9000_invlistUNI_NV__900_invlistUNI_NV__90_invlistUNI_NV__9_SLASH_2_invlistUNI_NV__9_invlistUNI_NV__800000_invlistUNI_NV__80000_invlistUNI_NV__8000_invlistUNI_NV__800_invlistUNI_NV__80_invlistUNI_NV__8_invlistUNI_NV__700000_invlistUNI_NV__70000_invlistUNI_NV__7000_invlistUNI_NV__700_invlistUNI_NV__70_invlistUNI_NV__7_SLASH_8_invlistUNI_NV__7_SLASH_2_invlistUNI_NV__7_SLASH_12_invlistUNI_NV__7_invlistUNI_NV__600000_invlistUNI_NV__60000_invlistUNI_NV__6000_invlistUNI_NV__600_invlistUNI_NV__60_invlistUNI_NV__6_invlistUNI_NV__500000_invlistUNI_NV__50000_invlistUNI_NV__5000_invlistUNI_NV__500_invlistUNI_NV__50_invlistUNI_NV__5_SLASH_8_invlistUNI_NV__5_SLASH_6_invlistUNI_NV__5_SLASH_2_invlistUNI_NV__5_SLASH_12_invlistUNI_NV__5_invlistUNI_NV__49_invlistUNI_NV__48_invlistUNI_NV__47_invlistUNI_NV__46_invlistUNI_NV__45_invlistUNI_NV__44_invlistUNI_NV__432000_invlistUNI_NV__43_invlistUNI_NV__42_invlistUNI_NV__41_invlistUNI_NV__400000_invlistUNI_NV__40000_invlistUNI_NV__4000_invlistUNI_NV__400_invlistUNI_NV__40_invlistUNI_NV__4_SLASH_5_invlistUNI_NV__4_invlistUNI_NV__39_invlistUNI_NV__38_invlistUNI_NV__37_invlistUNI_NV__36_invlistUNI_NV__35_invlistUNI_NV__34_invlistUNI_NV__33_invlistUNI_NV__32_invlistUNI_NV__31_invlistUNI_NV__300000_invlistUNI_NV__30000_invlistUNI_NV__3000_invlistUNI_NV__300_invlistUNI_NV__30_invlistUNI_NV__3_SLASH_80_invlistUNI_NV__3_SLASH_8_invlistUNI_NV__3_SLASH_64_invlistUNI_NV__3_SLASH_5_invlistUNI_NV__3_SLASH_4_invlistUNI_NV__3_SLASH_20_invlistUNI_NV__3_SLASH_2_invlistUNI_NV__3_SLASH_16_invlistUNI_NV__3_invlistUNI_NV__29_invlistUNI_NV__28_invlistUNI_NV__27_invlistUNI_NV__26_invlistUNI_NV__25_invlistUNI_NV__24_invlistUNI_NV__23_invlistUNI_NV__22_invlistUNI_NV__216000_invlistUNI_NV__21_invlistUNI_NV__20000000_invlistUNI_NV__200000_invlistUNI_NV__20000_invlistUNI_NV__2000_invlistUNI_NV__200_invlistUNI_NV__20_invlistUNI_NV__2_SLASH_5_invlistUNI_NV__2_SLASH_3_invlistUNI_NV__2_invlistUNI_NV__19_invlistUNI_NV__18_invlistUNI_NV__17_SLASH_2_invlistUNI_NV__17_invlistUNI_NV__16_invlistUNI_NV__15_SLASH_2_invlistUNI_NV__15_invlistUNI_NV__14_invlistUNI_NV__13_SLASH_2_invlistUNI_NV__13_invlistUNI_NV__12_invlistUNI_NV__11_SLASH_2_invlistUNI_NV__11_SLASH_12_invlistUNI_NV__11_invlistUNI_NV__1000000000000_invlistUNI_NV__10000000000_invlistUNI_NV__100000000_invlistUNI_NV__10000000_invlistUNI_NV__1000000_invlistUNI_NV__100000_invlistUNI_NV__10000_invlistUNI_NV__1000_invlistUNI_NV__100_invlistUNI_NV__10_invlistUNI_NV__1_SLASH_9_invlistUNI_NV__1_SLASH_80_invlistUNI_NV__1_SLASH_8_invlistUNI_NV__1_SLASH_7_invlistUNI_NV__1_SLASH_64_invlistUNI_NV__1_SLASH_6_invlistUNI_NV__1_SLASH_5_invlistUNI_NV__1_SLASH_40_invlistUNI_NV__1_SLASH_4_invlistUNI_NV__1_SLASH_320_invlistUNI_NV__1_SLASH_32_invlistUNI_NV__1_SLASH_3_invlistUNI_NV__1_SLASH_20_invlistUNI_NV__1_SLASH_2_invlistUNI_NV__1_SLASH_160_invlistUNI_NV__1_SLASH_16_invlistUNI_NV__1_SLASH_12_invlistUNI_NV__1_SLASH_10_invlistUNI_NV__1_invlistUNI_NV__0_invlistUNI_NV___MINUS_1_SLASH_2_invlistUNI_NUMBERFORMS_invlistUNI_NT__NU_invlistUNI_NT__DI_invlistUNI_NSHU_invlistUNI_NO_invlistUNI_NL_invlistUNI_NKO_invlistUNI_NFKDQC__N_invlistUNI_NFKCQC__Y_invlistUNI_NFKCQC__N_invlistUNI_NFDQC__Y_invlistUNI_NFCQC__Y_invlistUNI_NFCQC__M_invlistUNI_NEWA_invlistUNI_NBAT_invlistUNI_NB_invlistUNI_NARB_invlistUNI_NAND_invlistUNI_N_invlistUNI_MYMR_invlistUNI_MYANMAREXTB_invlistUNI_MYANMAREXTA_invlistUNI_MUSIC_invlistUNI_MULT_invlistUNI_MTEI_invlistUNI_MRO_invlistUNI_MONGOLIANSUP_invlistUNI_MONG_invlistUNI_MODIFIERTONELETTERS_invlistUNI_MODIFIERLETTERS_invlistUNI_MODI_invlistUNI_MN_invlistUNI_MLYM_invlistUNI_MISCTECHNICAL_invlistUNI_MISCSYMBOLS_invlistUNI_MISCPICTOGRAPHS_invlistUNI_MISCMATHSYMBOLSB_invlistUNI_MISCMATHSYMBOLSA_invlistUNI_MISCARROWS_invlistUNI_MIAO_invlistUNI_MERO_invlistUNI_MERC_invlistUNI_MEND_invlistUNI_MEETEIMAYEKEXT_invlistUNI_MEDF_invlistUNI_ME_invlistUNI_MC_invlistUNI_MAYANNUMERALS_invlistUNI_MATHOPERATORS_invlistUNI_MATHALPHANUM_invlistUNI_MATH_invlistUNI_MARC_invlistUNI_MANI_invlistUNI_MAND_invlistUNI_MAKA_invlistUNI_MAHJONG_invlistUNI_MAHJ_invlistUNI_LYDI_invlistUNI_LYCI_invlistUNI_LOWSURROGATES_invlistUNI_LOE_invlistUNI_LO_invlistUNI_LM_invlistUNI_LISUSUP_invlistUNI_LISU_invlistUNI_LINEARBSYLLABARY_invlistUNI_LINEARBIDEOGRAMS_invlistUNI_LINB_invlistUNI_LINA_invlistUNI_LIMB_invlistUNI_LETTERLIKESYMBOLS_invlistUNI_LEPC_invlistUNI_LB__ZWJ_invlistUNI_LB__ZW_invlistUNI_LB__XX_invlistUNI_LB__WJ_invlistUNI_LB__SY_invlistUNI_LB__SP_invlistUNI_LB__SG_invlistUNI_LB__SA_invlistUNI_LB__QU_invlistUNI_LB__PR_invlistUNI_LB__PO_invlistUNI_LB__OP_invlistUNI_LB__NU_invlistUNI_LB__NS_invlistUNI_LB__NL_invlistUNI_LB__LF_invlistUNI_LB__IS_invlistUNI_LB__IN_invlistUNI_LB__ID_invlistUNI_LB__HY_invlistUNI_LB__HL_invlistUNI_LB__H3_invlistUNI_LB__H2_invlistUNI_LB__GL_invlistUNI_LB__EX_invlistUNI_LB__CR_invlistUNI_LB__CP_invlistUNI_LB__CM_invlistUNI_LB__CL_invlistUNI_LB__CJ_invlistUNI_LB__CB_invlistUNI_LB__BK_invlistUNI_LB__BB_invlistUNI_LB__BA_invlistUNI_LB__B2_invlistUNI_LB__AL_invlistUNI_LB__AI_invlistUNI_LATN_invlistUNI_LATINEXTG_invlistUNI_LATINEXTF_invlistUNI_LATINEXTE_invlistUNI_LATINEXTD_invlistUNI_LATINEXTC_invlistUNI_LATINEXTB_invlistUNI_LATINEXTADDITIONAL_invlistUNI_LATINEXTA_invlistUNI_LATIN1_invlistUNI_LAO_invlistUNI_LANA_invlistUNI_L_invlistUNI_KTHI_invlistUNI_KNDA_invlistUNI_KITS_invlistUNI_KHOJ_invlistUNI_KHMR_invlistUNI_KHMERSYMBOLS_invlistUNI_KHAR_invlistUNI_KATAKANAEXT_invlistUNI_KANGXI_invlistUNI_KANBUN_invlistUNI_KANASUP_invlistUNI_KANAEXTB_invlistUNI_KANAEXTA_invlistUNI_KANA_invlistUNI_KALI_invlistUNI_JT__U_invlistUNI_JT__T_invlistUNI_JT__R_invlistUNI_JT__L_invlistUNI_JT__D_invlistUNI_JT__C_invlistUNI_JOINC_invlistUNI_JG__ZHAIN_invlistUNI_JG__ZAIN_invlistUNI_JG__YUDHHE_invlistUNI_JG__YUDH_invlistUNI_JG__YEHWITHTAIL_invlistUNI_JG__YEHBARREE_invlistUNI_JG__YEH_invlistUNI_JG__WAW_invlistUNI_JG__VERTICALTAIL_invlistUNI_JG__THINYEH_invlistUNI_JG__TETH_invlistUNI_JG__TEHMARBUTA_invlistUNI_JG__TAW_invlistUNI_JG__TAH_invlistUNI_JG__SYRIACWAW_invlistUNI_JG__SWASHKAF_invlistUNI_JG__STRAIGHTWAW_invlistUNI_JG__SHIN_invlistUNI_JG__SEMKATH_invlistUNI_JG__SEEN_invlistUNI_JG__SADHE_invlistUNI_JG__SAD_invlistUNI_JG__ROHINGYAYEH_invlistUNI_JG__REVERSEDPE_invlistUNI_JG__REH_invlistUNI_JG__QAPH_invlistUNI_JG__QAF_invlistUNI_JG__PE_invlistUNI_JG__NYA_invlistUNI_JG__NUN_invlistUNI_JG__NOON_invlistUNI_JG__NOJOININGGROUP_invlistUNI_JG__MIM_invlistUNI_JG__MEEM_invlistUNI_JG__MANICHAEANZAYIN_invlistUNI_JG__MANICHAEANYODH_invlistUNI_JG__MANICHAEANWAW_invlistUNI_JG__MANICHAEANTWENTY_invlistUNI_JG__MANICHAEANTHAMEDH_invlistUNI_JG__MANICHAEANTETH_invlistUNI_JG__MANICHAEANTEN_invlistUNI_JG__MANICHAEANTAW_invlistUNI_JG__MANICHAEANSAMEKH_invlistUNI_JG__MANICHAEANSADHE_invlistUNI_JG__MANICHAEANRESH_invlistUNI_JG__MANICHAEANQOPH_invlistUNI_JG__MANICHAEANPE_invlistUNI_JG__MANICHAEANONE_invlistUNI_JG__MANICHAEANNUN_invlistUNI_JG__MANICHAEANMEM_invlistUNI_JG__MANICHAEANLAMEDH_invlistUNI_JG__MANICHAEANKAPH_invlistUNI_JG__MANICHAEANHUNDRED_invlistUNI_JG__MANICHAEANHETH_invlistUNI_JG__MANICHAEANGIMEL_invlistUNI_JG__MANICHAEANFIVE_invlistUNI_JG__MANICHAEANDHAMEDH_invlistUNI_JG__MANICHAEANDALETH_invlistUNI_JG__MANICHAEANBETH_invlistUNI_JG__MANICHAEANAYIN_invlistUNI_JG__MANICHAEANALEPH_invlistUNI_JG__MALAYALAMTTA_invlistUNI_JG__MALAYALAMSSA_invlistUNI_JG__MALAYALAMRA_invlistUNI_JG__MALAYALAMNYA_invlistUNI_JG__MALAYALAMNNNA_invlistUNI_JG__MALAYALAMNNA_invlistUNI_JG__MALAYALAMNGA_invlistUNI_JG__MALAYALAMLLLA_invlistUNI_JG__MALAYALAMLLA_invlistUNI_JG__MALAYALAMJA_invlistUNI_JG__MALAYALAMBHA_invlistUNI_JG__LAMADH_invlistUNI_JG__LAM_invlistUNI_JG__KNOTTEDHEH_invlistUNI_JG__KHAPH_invlistUNI_JG__KAPH_invlistUNI_JG__KAF_invlistUNI_JG__HETH_invlistUNI_JG__HEHGOAL_invlistUNI_JG__HEH_invlistUNI_JG__HE_invlistUNI_JG__HANIFIROHINGYAPA_invlistUNI_JG__HANIFIROHINGYAKINNAYA_invlistUNI_JG__HAMZAONHEHGOAL_invlistUNI_JG__HAH_invlistUNI_JG__GAMAL_invlistUNI_JG__GAF_invlistUNI_JG__FINALSEMKATH_invlistUNI_JG__FEH_invlistUNI_JG__FE_invlistUNI_JG__FARSIYEH_invlistUNI_JG__E_invlistUNI_JG__DALATHRISH_invlistUNI_JG__DAL_invlistUNI_JG__BURUSHASKIYEHBARREE_invlistUNI_JG__BETH_invlistUNI_JG__BEH_invlistUNI_JG__ALEF_invlistUNI_JG__ALAPH_invlistUNI_JG__AIN_invlistUNI_JG__AFRICANQAF_invlistUNI_JG__AFRICANNOON_invlistUNI_JG__AFRICANFEH_invlistUNI_JAVA_invlistUNI_JAMOEXTB_invlistUNI_JAMOEXTA_invlistUNI_JAMO_invlistUNI_ITAL_invlistUNI_IPAEXT_invlistUNI_INZANABAZARSQUARE_invlistUNI_INYEZIDI_invlistUNI_INWARANGCITI_invlistUNI_INWANCHO_invlistUNI_INVS_invlistUNI_INVITHKUQI_invlistUNI_INVAI_invlistUNI_INUGARITIC_invlistUNI_INTOTO_invlistUNI_INTIRHUTA_invlistUNI_INTIFINAGH_invlistUNI_INTIBETAN_invlistUNI_INTHAI_invlistUNI_INTHAANA_invlistUNI_INTELUGU_invlistUNI_INTANGUT_invlistUNI_INTANGSA_invlistUNI_INTAMIL_invlistUNI_INTAKRI_invlistUNI_INTAIVIET_invlistUNI_INTAITHAM_invlistUNI_INTAILE_invlistUNI_INTAGBANWA_invlistUNI_INTAGALOG_invlistUNI_INSYRIAC_invlistUNI_INSYLOTINAGRI_invlistUNI_INSUNDANESE_invlistUNI_INSOYOMBO_invlistUNI_INSORASOMPENG_invlistUNI_INSOGDIAN_invlistUNI_INSINHALA_invlistUNI_INSIDDHAM_invlistUNI_INSC__VOWELINDEPENDENT_invlistUNI_INSC__VOWELDEPENDENT_invlistUNI_INSC__VOWEL_invlistUNI_INSC__VISARGA_invlistUNI_INSC__VIRAMA_invlistUNI_INSC__TONEMARK_invlistUNI_INSC__TONELETTER_invlistUNI_INSC__SYLLABLEMODIFIER_invlistUNI_INSC__REGISTERSHIFTER_invlistUNI_INSC__PUREKILLER_invlistUNI_INSC__OTHER_invlistUNI_INSC__NUMBERJOINER_invlistUNI_INSC__NUMBER_invlistUNI_INSC__NUKTA_invlistUNI_INSC__NONJOINER_invlistUNI_INSC__MODIFYINGLETTER_invlistUNI_INSC__INVISIBLESTACKER_invlistUNI_INSC__GEMINATIONMARK_invlistUNI_INSC__CONSONANTWITHSTACKER_invlistUNI_INSC__CONSONANTSUCCEEDINGREPHA_invlistUNI_INSC__CONSONANTSUBJOINED_invlistUNI_INSC__CONSONANTPREFIXED_invlistUNI_INSC__CONSONANTPRECEDINGREPHA_invlistUNI_INSC__CONSONANTPLACEHOLDER_invlistUNI_INSC__CONSONANTMEDIAL_invlistUNI_INSC__CONSONANTKILLER_invlistUNI_INSC__CONSONANTINITIALPOSTFIXED_invlistUNI_INSC__CONSONANTHEADLETTER_invlistUNI_INSC__CONSONANTFINAL_invlistUNI_INSC__CONSONANTDEAD_invlistUNI_INSC__CONSONANT_invlistUNI_INSC__CANTILLATIONMARK_invlistUNI_INSC__BRAHMIJOININGNUMBER_invlistUNI_INSC__BINDU_invlistUNI_INSC__AVAGRAHA_invlistUNI_INSAURASHTRA_invlistUNI_INSAMARITAN_invlistUNI_INRUNIC_invlistUNI_INREJANG_invlistUNI_INPUNCTUATION_invlistUNI_INPSALTERPAHLAVI_invlistUNI_INPHOENICIAN_invlistUNI_INPHAGSPA_invlistUNI_INPC__TOPANDRIGHT_invlistUNI_INPC__TOPANDLEFTANDRIGHT_invlistUNI_INPC__TOPANDLEFT_invlistUNI_INPC__TOPANDBOTTOMANDRIGHT_invlistUNI_INPC__TOPANDBOTTOMANDLEFT_invlistUNI_INPC__TOPANDBOTTOM_invlistUNI_INPC__TOP_invlistUNI_INPC__RIGHT_invlistUNI_INPC__OVERSTRUCK_invlistUNI_INPC__NA_invlistUNI_INPC__LEFTANDRIGHT_invlistUNI_INPC__LEFT_invlistUNI_INPC__BOTTOMANDRIGHT_invlistUNI_INPC__BOTTOMANDLEFT_invlistUNI_INPC__BOTTOM_invlistUNI_INPAUCINHAU_invlistUNI_INPAHAWHHMONG_invlistUNI_INOSMANYA_invlistUNI_INOSAGE_invlistUNI_INORIYA_invlistUNI_INOLDUYGHUR_invlistUNI_INOLDTURKIC_invlistUNI_INOLDSOGDIAN_invlistUNI_INOLDPERSIAN_invlistUNI_INOLDPERMIC_invlistUNI_INOLDITALIC_invlistUNI_INOLDHUNGARIAN_invlistUNI_INOGHAM_invlistUNI_INNYIAKENGPUACHUEHMONG_invlistUNI_INNUSHU_invlistUNI_INNKO_invlistUNI_INNEWTAILUE_invlistUNI_INNEWA_invlistUNI_INNANDINAGARI_invlistUNI_INNABATAEAN_invlistUNI_INMYANMAR_invlistUNI_INMULTANI_invlistUNI_INMRO_invlistUNI_INMONGOLIAN_invlistUNI_INMODI_invlistUNI_INMIAO_invlistUNI_INMEROITICCURSIVE_invlistUNI_INMENDEKIKAKUI_invlistUNI_INMEETEIMAYEK_invlistUNI_INMEDEFAIDRIN_invlistUNI_INMASARAMGONDI_invlistUNI_INMARCHEN_invlistUNI_INMANICHAEAN_invlistUNI_INMANDAIC_invlistUNI_INMALAYALAM_invlistUNI_INMAKASAR_invlistUNI_INMAHAJANI_invlistUNI_INLYDIAN_invlistUNI_INLYCIAN_invlistUNI_INLISU_invlistUNI_INLINEARA_invlistUNI_INLIMBU_invlistUNI_INLEPCHA_invlistUNI_INLAO_invlistUNI_INKHUDAWADI_invlistUNI_INKHOJKI_invlistUNI_INKHMER_invlistUNI_INKHITANSMALLSCRIPT_invlistUNI_INKHAROSHTHI_invlistUNI_INKATAKANA_invlistUNI_INKANNADA_invlistUNI_INKAITHI_invlistUNI_INJAVANESE_invlistUNI_ININSCRIPTIONALPARTHIAN_invlistUNI_ININSCRIPTIONALPAHLAVI_invlistUNI_INIMPERIALARAMAIC_invlistUNI_INIDC_invlistUNI_INHIRAGANA_invlistUNI_INHEBREW_invlistUNI_INHATRAN_invlistUNI_INHANUNOO_invlistUNI_INHANIFIROHINGYA_invlistUNI_INHANGUL_invlistUNI_INGURMUKHI_invlistUNI_INGUNJALAGONDI_invlistUNI_INGUJARATI_invlistUNI_INGREEK_invlistUNI_INGRANTHA_invlistUNI_INGOTHIC_invlistUNI_INGLAGOLITIC_invlistUNI_INGEORGIAN_invlistUNI_INETHIOPIC_invlistUNI_INELYMAIC_invlistUNI_INELBASAN_invlistUNI_INEGYPTIANHIEROGLYPHS_invlistUNI_INDUPLOYAN_invlistUNI_INDOGRA_invlistUNI_INDIVESAKURU_invlistUNI_INDICSIYAQNUMBERS_invlistUNI_INDICNUMBERFORMS_invlistUNI_INDEVANAGARI_invlistUNI_INCYRILLIC_invlistUNI_INCYPROMINOAN_invlistUNI_INCUNEIFORM_invlistUNI_INCOPTIC_invlistUNI_INCHORASMIAN_invlistUNI_INCHEROKEE_invlistUNI_INCHAM_invlistUNI_INCHAKMA_invlistUNI_INCAUCASIANALBANIAN_invlistUNI_INCARIAN_invlistUNI_INBUHID_invlistUNI_INBUGINESE_invlistUNI_INBRAHMI_invlistUNI_INBOPOMOFO_invlistUNI_INBHAIKSUKI_invlistUNI_INBENGALI_invlistUNI_INBATAK_invlistUNI_INBASSAVAH_invlistUNI_INBAMUM_invlistUNI_INBALINESE_invlistUNI_INAVESTAN_invlistUNI_INARMENIAN_invlistUNI_INARABIC_invlistUNI_INANATOLIANHIEROGLYPHS_invlistUNI_INAHOM_invlistUNI_INADLAM_invlistUNI_IN__NA_invlistUNI_IN__9_invlistUNI_IN__8_invlistUNI_IN__7_invlistUNI_IN__6_DOT_3_invlistUNI_IN__6_DOT_2_invlistUNI_IN__6_DOT_1_invlistUNI_IN__6_invlistUNI_IN__5_DOT_2_invlistUNI_IN__5_DOT_1_invlistUNI_IN__5_invlistUNI_IN__4_DOT_1_invlistUNI_IN__4_invlistUNI_IN__3_DOT_2_invlistUNI_IN__3_DOT_1_invlistUNI_IN__3_invlistUNI_IN__2_DOT_1_invlistUNI_IN__2_invlistUNI_IN__14_invlistUNI_IN__13_invlistUNI_IN__12_DOT_1_invlistUNI_IN__12_invlistUNI_IN__11_invlistUNI_IN__10_invlistUNI_IN__1_DOT_1_invlistUNI_IDST_invlistUNI_IDSB_invlistUNI_IDS_invlistUNI_IDEOGRAPHICSYMBOLS_invlistUNI_IDEO_invlistUNI_IDENTIFIERTYPE__UNCOMMONUSE_invlistUNI_IDENTIFIERTYPE__TECHNICAL_invlistUNI_IDENTIFIERTYPE__RECOMMENDED_invlistUNI_IDENTIFIERTYPE__OBSOLETE_invlistUNI_IDENTIFIERTYPE__NOTXID_invlistUNI_IDENTIFIERTYPE__NOTNFKC_invlistUNI_IDENTIFIERTYPE__NOTCHARACTER_invlistUNI_IDENTIFIERTYPE__LIMITEDUSE_invlistUNI_IDENTIFIERTYPE__INCLUSION_invlistUNI_IDENTIFIERTYPE__EXCLUSION_invlistUNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlistUNI_IDENTIFIERSTATUS__RESTRICTED_invlistUNI_IDENTIFIERSTATUS__ALLOWED_invlistUNI_IDC_invlistUNI_HYPHEN_invlistUNI_HUNG_invlistUNI_HST__NA_invlistUNI_HMNP_invlistUNI_HMNG_invlistUNI_HLUW_invlistUNI_HIRA_invlistUNI_HIGHSURROGATES_invlistUNI_HIGHPUSURROGATES_invlistUNI_HEBR_invlistUNI_HATR_invlistUNI_HANO_invlistUNI_HANG_invlistUNI_HAN_invlistUNI_HALFMARKS_invlistUNI_HALFANDFULLFORMS_invlistUNI_GURU_invlistUNI_GUJR_invlistUNI_GREXT_invlistUNI_GREK_invlistUNI_GREEKEXT_invlistUNI_GRBASE_invlistUNI_GRAN_invlistUNI_GOTH_invlistUNI_GONM_invlistUNI_GONG_invlistUNI_GLAGOLITICSUP_invlistUNI_GLAG_invlistUNI_GEORGIANSUP_invlistUNI_GEORGIANEXT_invlistUNI_GEOR_invlistUNI_GEOMETRICSHAPESEXT_invlistUNI_GEOMETRICSHAPES_invlistUNI_GCB__XX_invlistUNI_GCB__V_invlistUNI_GCB__T_invlistUNI_GCB__SM_invlistUNI_GCB__PP_invlistUNI_GCB__L_invlistUNI_GCB__EX_invlistUNI_GCB__CN_invlistUNI_EXTPICT_invlistUNI_EXT_invlistUNI_ETHIOPICSUP_invlistUNI_ETHIOPICEXTB_invlistUNI_ETHIOPICEXTA_invlistUNI_ETHIOPICEXT_invlistUNI_ETHI_invlistUNI_EPRES_invlistUNI_ENCLOSEDIDEOGRAPHICSUP_invlistUNI_ENCLOSEDCJK_invlistUNI_ENCLOSEDALPHANUMSUP_invlistUNI_ENCLOSEDALPHANUM_invlistUNI_EMOTICONS_invlistUNI_EMOJI_invlistUNI_EMOD_invlistUNI_ELYM_invlistUNI_ELBA_invlistUNI_EGYPTIANHIEROGLYPHFORMATCONTROLS_invlistUNI_EGYP_invlistUNI_ECOMP_invlistUNI_EBASE_invlistUNI_EARLYDYNASTICCUNEIFORM_invlistUNI_EA__W_invlistUNI_EA__NA_invlistUNI_EA__N_invlistUNI_EA__H_invlistUNI_EA__F_invlistUNI_EA__A_invlistUNI_DUPL_invlistUNI_DT__VERT_invlistUNI_DT__SUP_invlistUNI_DT__SUB_invlistUNI_DT__SQR_invlistUNI_DT__SML_invlistUNI_DT__NONE_invlistUNI_DT__NONCANON_invlistUNI_DT__NB_invlistUNI_DT__NAR_invlistUNI_DT__MED_invlistUNI_DT__ISO_invlistUNI_DT__INIT_invlistUNI_DT__FRA_invlistUNI_DT__FONT_invlistUNI_DT__FIN_invlistUNI_DT__ENC_invlistUNI_DT__COM_invlistUNI_DT__CAN_invlistUNI_DSRT_invlistUNI_DOMINO_invlistUNI_DOGR_invlistUNI_DINGBATS_invlistUNI_DIAK_invlistUNI_DIACRITICALSSUP_invlistUNI_DIACRITICALSFORSYMBOLS_invlistUNI_DIACRITICALSEXT_invlistUNI_DIACRITICALS_invlistUNI_DIA_invlistUNI_DI_invlistUNI_DEVANAGARIEXT_invlistUNI_DEVA_invlistUNI_DEP_invlistUNI_DASH_invlistUNI_CYRL_invlistUNI_CYRILLICSUP_invlistUNI_CYRILLICEXTC_invlistUNI_CYRILLICEXTB_invlistUNI_CYRILLICEXTA_invlistUNI_CYPRIOTSYLLABARY_invlistUNI_CWU_invlistUNI_CWT_invlistUNI_CWL_invlistUNI_CWKCF_invlistUNI_CWCM_invlistUNI_CWCF_invlistUNI_CURRENCYSYMBOLS_invlistUNI_CUNEIFORMNUMBERS_invlistUNI_CPRT_invlistUNI_CPMN_invlistUNI_COUNTINGROD_invlistUNI_COPTICEPACTNUMBERS_invlistUNI_COPT_invlistUNI_CONTROLPICTURES_invlistUNI_COMPEX_invlistUNI_COMPATJAMO_invlistUNI_CN_invlistUNI_CJKSYMBOLS_invlistUNI_CJKSTROKES_invlistUNI_CJKRADICALSSUP_invlistUNI_CJKEXTG_invlistUNI_CJKEXTF_invlistUNI_CJKEXTE_invlistUNI_CJKEXTD_invlistUNI_CJKEXTC_invlistUNI_CJKEXTB_invlistUNI_CJKEXTA_invlistUNI_CJKCOMPATIDEOGRAPHSSUP_invlistUNI_CJKCOMPATIDEOGRAPHS_invlistUNI_CJKCOMPATFORMS_invlistUNI_CJKCOMPAT_invlistUNI_CJK_invlistUNI_CI_invlistUNI_CHRS_invlistUNI_CHESSSYMBOLS_invlistUNI_CHEROKEESUP_invlistUNI_CHER_invlistUNI_CHAM_invlistUNI_CF_invlistUNI_CE_invlistUNI_CCC__R_invlistUNI_CCC__L_invlistUNI_CCC__IS_invlistUNI_CCC__DB_invlistUNI_CCC__DA_invlistUNI_CCC__BR_invlistUNI_CCC__BL_invlistUNI_CCC__B_invlistUNI_CCC__AR_invlistUNI_CCC__AL_invlistUNI_CCC__A_invlistUNI_CCC__91_invlistUNI_CCC__9_invlistUNI_CCC__84_invlistUNI_CCC__8_invlistUNI_CCC__7_invlistUNI_CCC__6_invlistUNI_CCC__36_invlistUNI_CCC__35_invlistUNI_CCC__34_invlistUNI_CCC__33_invlistUNI_CCC__32_invlistUNI_CCC__31_invlistUNI_CCC__30_invlistUNI_CCC__29_invlistUNI_CCC__28_invlistUNI_CCC__27_invlistUNI_CCC__26_invlistUNI_CCC__25_invlistUNI_CCC__24_invlistUNI_CCC__23_invlistUNI_CCC__22_invlistUNI_CCC__216_invlistUNI_CCC__214_invlistUNI_CCC__21_invlistUNI_CCC__202_invlistUNI_CCC__20_invlistUNI_CCC__19_invlistUNI_CCC__18_invlistUNI_CCC__17_invlistUNI_CCC__16_invlistUNI_CCC__15_invlistUNI_CCC__14_invlistUNI_CCC__132_invlistUNI_CCC__130_invlistUNI_CCC__13_invlistUNI_CCC__129_invlistUNI_CCC__122_invlistUNI_CCC__12_invlistUNI_CCC__118_invlistUNI_CCC__11_invlistUNI_CCC__107_invlistUNI_CCC__103_invlistUNI_CCC__10_invlistUNI_CCC__1_invlistUNI_CCC__0_invlistUNI_CARI_invlistUNI_CANS_invlistUNI_CAKM_invlistUNI_C_invlistUNI_BYZANTINEMUSIC_invlistUNI_BUHD_invlistUNI_BUGI_invlistUNI_BRAI_invlistUNI_BRAH_invlistUNI_BPT__O_invlistUNI_BPT__N_invlistUNI_BPT__C_invlistUNI_BOXDRAWING_invlistUNI_BOPOMOFOEXT_invlistUNI_BOPO_invlistUNI_BLOCKELEMENTS_invlistUNI_BIDIM_invlistUNI_BIDIC_invlistUNI_BHKS_invlistUNI_BENG_invlistUNI_BC__WS_invlistUNI_BC__S_invlistUNI_BC__RLO_invlistUNI_BC__RLI_invlistUNI_BC__RLE_invlistUNI_BC__R_invlistUNI_BC__PDI_invlistUNI_BC__PDF_invlistUNI_BC__ON_invlistUNI_BC__NSM_invlistUNI_BC__LRO_invlistUNI_BC__LRI_invlistUNI_BC__LRE_invlistUNI_BC__L_invlistUNI_BC__FSI_invlistUNI_BC__ET_invlistUNI_BC__ES_invlistUNI_BC__EN_invlistUNI_BC__CS_invlistUNI_BC__BN_invlistUNI_BC__B_invlistUNI_BC__AN_invlistUNI_BC__AL_invlistUNI_BATK_invlistUNI_BASS_invlistUNI_BAMUMSUP_invlistUNI_BAMU_invlistUNI_BALI_invlistUNI_AVST_invlistUNI_ARROWS_invlistUNI_ARMN_invlistUNI_ARMI_invlistUNI_ARABICSUP_invlistUNI_ARABICPFB_invlistUNI_ARABICPFA_invlistUNI_ARABICMATH_invlistUNI_ARABICEXTB_invlistUNI_ARABICEXTA_invlistUNI_ARAB_invlistUNI_ANY_invlistUNI_ANCIENTSYMBOLS_invlistUNI_ANCIENTGREEKNUMBERS_invlistUNI_ANCIENTGREEKMUSIC_invlistUNI_ALPHABETICPF_invlistUNI_ALL_invlistUNI_ALCHEMICAL_invlistUNI_AHOM_invlistUNI_AGHB_invlistUNI_AGE__9_invlistUNI_AGE__8_invlistUNI_AGE__7_invlistUNI_AGE__6_DOT_3_invlistUNI_AGE__6_DOT_2_invlistUNI_AGE__6_DOT_1_invlistUNI_AGE__6_invlistUNI_AGE__5_DOT_2_invlistUNI_AGE__5_DOT_1_invlistUNI_AGE__5_invlistUNI_AGE__4_DOT_1_invlistUNI_AGE__4_invlistUNI_AGE__3_DOT_2_invlistUNI_AGE__3_DOT_1_invlistUNI_AGE__3_invlistUNI_AGE__2_DOT_1_invlistUNI_AGE__2_invlistUNI_AGE__14_invlistUNI_AGE__13_invlistUNI_AGE__12_DOT_1_invlistUNI_AGE__12_invlistUNI_AGE__11_invlistUNI_AGE__10_invlistUNI_AEGEANNUMBERS_invlistUNI_ADLM_invlistUNI__PERL_QUOTEMETA_invlistUNI__PERL_PROBLEMATIC_LOCALE_FOLDS_invlistUNI__PERL_PROBLEMATIC_LOCALE_FOLDEDS_START_invlistUNI_UPPERCASELETTER_invlistUNI_TITLE_invlistUNI_LOWERCASELETTER_invlistUNI_CASEDLETTER_invlistUNI_prop_value_ptrsUNI_age_valuesUNI_ahex_valuesUNI_bc_valuesUNI_blk_valuesUNI_bpt_valuesUNI_ccc_valuesUNI_dt_valuesUNI_ea_valuesUNI_gc_valuesUNI_gcb_valuesUNI_hst_valuesUNI_identifierstatus_valuesUNI_identifiertype_valuesUNI_inpc_valuesUNI_insc_valuesUNI_jg_valuesUNI_jt_valuesUNI_lb_valuesUNI_nfcqc_valuesUNI_nfdqc_valuesUNI_nt_valuesUNI_nv_valuesUNI_sb_valuesUNI_sc_valuesUNI_vo_valuesUNI_wb_valuesdump.cS_deb_curcvS_sequence_num.part.4S_opdump_indentS_opdump_linkS_deb_padvar.constprop.12S_append_padvar.constprop.13S_append_gv_nameS_gv_display_pv_display_flagsS_do_op_dump_barS_do_pmop_dump_barPerl_do_sv_dump.localalias.11svshorttypenamessvtypenamesmagic_namesutil.cS_ckwarn_commonS_with_queued_errorsS_invoke_exception_hookS_mess_allocS_env_allocunderscore.22562mg.cS_unwind_handler_stackS_save_magic_flagsS_restore_magicunblock_sigmaskrestore_sigmaskS_mg_free_structS_magic_methcall1S_magic_methpackPerl_csighandler1.localalias.8Perl_sighandler1.localalias.9reentr.cmro_core.cS_mro_clean_isarevPerl_mro_set_private_data.localalias.1S_mro_get_linear_isa_dfsS_mro_gather_and_renamefile.21664dfs_algkeywords.cbuiltin.cck_builtin_funcNck_builtin_func1ck_builtin_constbuiltin_not_recognisedbuiltinshv.cS_new_heS_save_hek_flagsS_hv_auxinitS_unshare_hek_or_pvnhek_eq_pvn_flagsS_hsplit.isra.1S_share_hek_flagssbox32_hash_with_state.constprop.9S_hv_free_ent_retS_hv_free_entriesS_clear_placeholdersS_hv_notallowedPerl_hv_common.localalias.6S_refcounted_he_valueS_strtab_errorav.cS_get_aux_mg.part.1S_adjust_indexrun.cpp_hot.cS_pushavS_are_we_in_Debug_EXECUTE_rS_softref2xv_liteS_opmethod_stash.part.11an_array.21881a_hash.21882sv.cS_visitS_F0convertS_find_array_subscriptS_croak_overflowS_expect_numberS_hextractS_sv_pos_u2b_midwayS_sv_pos_b2u_midwayS_assert_uft8_cache_coherent.part.5do_clean_allS_sv_setnvS_find_uninit_varS_not_a_numberS_sv_2iuv_commonPerl_sv_2uv_flags.localalias.25S_sprintf_arg_num_valS_glob_assign_globS_cursedo_cursedo_clean_named_objsdo_clean_objsdo_clean_named_io_objsS_sv_uncowS_sv_unmagicext_flagsS_utf8_mg_len_cache_updateS_utf8_mg_pos_cache_updateS_sv_pos_u2b_cached.part.15Perl_sv_2pv_flags.localalias.23S_sv_display.constprop.31S_glob_2number.part.19Perl_sv_2nv_flags.localalias.24Perl_sv_2iv_flags.localalias.26S_find_hash_subscriptnullstr.23689fake_rvS_destroyfake_hv_with_auxint2str_tablepp.cS_postincdec_commonS_scomplementS_localise_aelem_lvalS_localise_helem_lvalS_find_runcv_nameS_shift_amountS_localise_gv_slotS_do_chompS_maybe_unwind_defavS_reftoS_rv2gvCSWTCH.2145CSWTCH.2146CSWTCH.2147scope.cS_save_scalar_atS_save_pushptri32ptr.constprop.3arg_countspp_ctl.cS_dopoptogivenforS_check_op_typeS_outside_integerS_dofindlabelS_docatchS_check_type_and_openS_make_matcherS_dopoptosub_at.part.9S_destroy_matcher.isra.13S_try_yyparse.constprop.22S_doopen_pmS_matcher_matches_svS_rxres_freeS_pop_eval_context_maybe_croak_invoke_defer_blockinvoke_finally_blockS_doeval_compileS_run_user_filterS_do_smartmatchS_unwind_loopcontext_namepp_sys.cS_ft_return_falseS_space_join_names_mortalS_try_amagic_ftestS_doformzero_but_trueCSWTCH.1364CSWTCH.1365CSWTCH.1366CSWTCH.1367CSWTCH.1368CSWTCH.1369monname.22955dayname.22954doop.cdoio.cS_openn_setupS_exec_failedS_dir_unchanged.isra.0S_argvout_dupS_openn_cleanup.isra.5S_argvout_finalS_argvout_freeargvout_vtblregexec.cPerl_foldEQPerl_foldEQ_latin1Perl_foldEQ_localeS_regcppopS_foldEQ_latin1_s2_foldedS_reg_check_named_buff_matchedS_isFOO_lcS_find_span_end_maskS_find_next_maskedS_regcppushS_push_slabS_reg_set_capture_stringS_test_EXACTISH_ST.isra.4.part.5S_to_utf8_substr.isra.6.part.7S_reghopmaybe3.part.8S_reghopmaybe3S_reghop4S_reghop3.part.10S_reghop3S_to_byte_substr.isra.11S_setup_EXACTISH_ST.isra.16S_cleanup_regmatch_info_auxS_advance_one_WB_Perl_WB_invmapS_backup_one_SB_Perl_SB_invmapPerl_utf8_to_uvchr_buf_helper.constprop.24S_backup_one_WBS_isWBS_reginclassS_backup_one_GCB_Perl_GCB_invmapS_isGCBS_backup_one_LB_Perl_LB_invmapS_isSBS_isFOO_utf8_lcS_isLBS_regrepeat_Perl_SCX_invmapS_regtryS_find_byclassWB_tableGCB_tableLB_tablesets_utf8_locale_requiredSCX_AUX_TABLE_lengthsscript_zerosb_utf8_locale_requiredSCX_AUX_TABLE_59SCX_AUX_TABLE_58SCX_AUX_TABLE_57SCX_AUX_TABLE_56SCX_AUX_TABLE_55SCX_AUX_TABLE_54SCX_AUX_TABLE_53SCX_AUX_TABLE_52SCX_AUX_TABLE_51SCX_AUX_TABLE_50SCX_AUX_TABLE_49SCX_AUX_TABLE_48SCX_AUX_TABLE_47SCX_AUX_TABLE_46SCX_AUX_TABLE_45SCX_AUX_TABLE_44SCX_AUX_TABLE_43SCX_AUX_TABLE_42SCX_AUX_TABLE_41SCX_AUX_TABLE_40SCX_AUX_TABLE_39SCX_AUX_TABLE_38SCX_AUX_TABLE_37SCX_AUX_TABLE_36SCX_AUX_TABLE_35SCX_AUX_TABLE_34SCX_AUX_TABLE_33SCX_AUX_TABLE_32SCX_AUX_TABLE_31SCX_AUX_TABLE_30SCX_AUX_TABLE_29SCX_AUX_TABLE_28SCX_AUX_TABLE_27SCX_AUX_TABLE_26SCX_AUX_TABLE_25SCX_AUX_TABLE_24SCX_AUX_TABLE_23SCX_AUX_TABLE_22SCX_AUX_TABLE_21SCX_AUX_TABLE_20SCX_AUX_TABLE_19SCX_AUX_TABLE_18SCX_AUX_TABLE_17SCX_AUX_TABLE_16SCX_AUX_TABLE_15SCX_AUX_TABLE_14SCX_AUX_TABLE_13SCX_AUX_TABLE_12SCX_AUX_TABLE_11SCX_AUX_TABLE_10SCX_AUX_TABLE_9SCX_AUX_TABLE_8SCX_AUX_TABLE_7SCX_AUX_TABLE_6SCX_AUX_TABLE_5SCX_AUX_TABLE_4SCX_AUX_TABLE_3SCX_AUX_TABLE_2SCX_AUX_TABLE_1SCX_AUX_TABLE_ptrsutf8.cS_restore_cop_warningsS_new_msg_hvPerl_uvoffuni_to_utf8_flags.localalias.7S__to_utf8_caseS_check_locale_boundary_crossingUppercase_Mapping_invmapTitlecase_Mapping_invmapLowercase_Mapping_invmap_Perl_IVCF_invmapSimple_Case_Folding_invmapmalformed_textuneesUC_AUX_TABLE_lengthsTC_AUX_TABLE_lengthsLC_AUX_TABLE_lengthsIVCF_AUX_TABLE_lengthsUC_AUX_TABLE_72UC_AUX_TABLE_71UC_AUX_TABLE_70UC_AUX_TABLE_69UC_AUX_TABLE_68UC_AUX_TABLE_67UC_AUX_TABLE_66UC_AUX_TABLE_65UC_AUX_TABLE_64UC_AUX_TABLE_63UC_AUX_TABLE_62UC_AUX_TABLE_61UC_AUX_TABLE_60UC_AUX_TABLE_59UC_AUX_TABLE_58UC_AUX_TABLE_57UC_AUX_TABLE_56UC_AUX_TABLE_55UC_AUX_TABLE_54UC_AUX_TABLE_53UC_AUX_TABLE_52UC_AUX_TABLE_51UC_AUX_TABLE_50UC_AUX_TABLE_49UC_AUX_TABLE_48UC_AUX_TABLE_47UC_AUX_TABLE_46UC_AUX_TABLE_45UC_AUX_TABLE_44UC_AUX_TABLE_43UC_AUX_TABLE_42UC_AUX_TABLE_41UC_AUX_TABLE_40UC_AUX_TABLE_39UC_AUX_TABLE_38UC_AUX_TABLE_37UC_AUX_TABLE_36UC_AUX_TABLE_35UC_AUX_TABLE_34UC_AUX_TABLE_33UC_AUX_TABLE_32UC_AUX_TABLE_31UC_AUX_TABLE_30UC_AUX_TABLE_29UC_AUX_TABLE_28UC_AUX_TABLE_27UC_AUX_TABLE_26UC_AUX_TABLE_25UC_AUX_TABLE_24UC_AUX_TABLE_23UC_AUX_TABLE_22UC_AUX_TABLE_21UC_AUX_TABLE_20UC_AUX_TABLE_19UC_AUX_TABLE_18UC_AUX_TABLE_17UC_AUX_TABLE_16UC_AUX_TABLE_15UC_AUX_TABLE_14UC_AUX_TABLE_13UC_AUX_TABLE_12UC_AUX_TABLE_11UC_AUX_TABLE_10UC_AUX_TABLE_9UC_AUX_TABLE_8UC_AUX_TABLE_7UC_AUX_TABLE_6UC_AUX_TABLE_5UC_AUX_TABLE_4UC_AUX_TABLE_3UC_AUX_TABLE_2UC_AUX_TABLE_1TC_AUX_TABLE_45TC_AUX_TABLE_44TC_AUX_TABLE_43TC_AUX_TABLE_42TC_AUX_TABLE_41TC_AUX_TABLE_40TC_AUX_TABLE_39TC_AUX_TABLE_38TC_AUX_TABLE_37TC_AUX_TABLE_36TC_AUX_TABLE_35TC_AUX_TABLE_34TC_AUX_TABLE_33TC_AUX_TABLE_32TC_AUX_TABLE_31TC_AUX_TABLE_30TC_AUX_TABLE_29TC_AUX_TABLE_28TC_AUX_TABLE_27TC_AUX_TABLE_26TC_AUX_TABLE_25TC_AUX_TABLE_24TC_AUX_TABLE_23TC_AUX_TABLE_22TC_AUX_TABLE_21TC_AUX_TABLE_20TC_AUX_TABLE_19TC_AUX_TABLE_18TC_AUX_TABLE_17TC_AUX_TABLE_16TC_AUX_TABLE_15TC_AUX_TABLE_14TC_AUX_TABLE_13TC_AUX_TABLE_12TC_AUX_TABLE_11TC_AUX_TABLE_10TC_AUX_TABLE_9TC_AUX_TABLE_8TC_AUX_TABLE_7TC_AUX_TABLE_6TC_AUX_TABLE_5TC_AUX_TABLE_4TC_AUX_TABLE_3TC_AUX_TABLE_2TC_AUX_TABLE_1IVCF_AUX_TABLE_28IVCF_AUX_TABLE_27IVCF_AUX_TABLE_26IVCF_AUX_TABLE_25IVCF_AUX_TABLE_24IVCF_AUX_TABLE_23IVCF_AUX_TABLE_22IVCF_AUX_TABLE_21IVCF_AUX_TABLE_20IVCF_AUX_TABLE_19IVCF_AUX_TABLE_18IVCF_AUX_TABLE_17IVCF_AUX_TABLE_16IVCF_AUX_TABLE_15IVCF_AUX_TABLE_14IVCF_AUX_TABLE_13IVCF_AUX_TABLE_12IVCF_AUX_TABLE_11IVCF_AUX_TABLE_10IVCF_AUX_TABLE_9IVCF_AUX_TABLE_8IVCF_AUX_TABLE_7IVCF_AUX_TABLE_6IVCF_AUX_TABLE_5IVCF_AUX_TABLE_4IVCF_AUX_TABLE_3IVCF_AUX_TABLE_2IVCF_AUX_TABLE_1LC_AUX_TABLE_1CF_AUX_TABLE_73CF_AUX_TABLE_72CF_AUX_TABLE_71CF_AUX_TABLE_70CF_AUX_TABLE_69CF_AUX_TABLE_68CF_AUX_TABLE_67CF_AUX_TABLE_66CF_AUX_TABLE_65CF_AUX_TABLE_64CF_AUX_TABLE_63" 4 (1 X ? \N \"9k x `+909 c  8T xt9 T 7# <5+9= ,Pc+9m y $4+9   ?4B  0v p `f\!9 h# 0_5 4H @S He  ~ p@4B % 2   Kx67 4"9  @U<" X/ pL X\s Љ   Ѝ X[$ 0 0   4 he# s 2 eA lO La h ln 8d 6 +9 =l  и  `?4"9' p$5 $D O H,` { 0L+9  $ A4 Hx44 h  `W" 2 F  T 4[ @4l,9w ,9 L l,9 HD r 4  ȕ@9' @6N,9T ,9c h9$q @- 0P +   8H >  d1 @uA &QX9` <s P l  (,9 `'4 0,9 83 t  p#  03  H  `V  @tc  s  h,       8  X,    h   0  4  @4  PpJ  0W  g  `u@w  XW  =4  #9   x|  l 0"9     F4Q  P\"  089  (I  ,]  >j  0t{  (P  pW H-9  )    0x  4   }4  e-  4;  s@X "9m  _\  k H"9  ` P-9   X  P64  4  d  h/  ,=  `x0P  ؕb  l4|  0 \    -   ph X-9  ж  9  p4  ȭ m, P 4C (n@^w`-9 X d %L X  @ D! +03 5 A 4W b @`  0 , d X:8 wL  p@h-9" X5 l%H8`[ @^j ضy 0 x| A4/8 h P;DN p-9#x-93G (\ Pn ر (  P848    H  >T! 8I X_ j |{8 H -9  8 9!5 @CX q$d h (z H -9 h<  8< (e   @ ` @D _(-9; 8H x0W xb @3 s X(-9 Bؐ8h-9 8  Ы` 0 P0 D @ Z 8dDj d} R!9 / p P  7 E01 H \D 8X -xg"9w г  | $ K| 8 xD   .  @ U )hc v       ,-9 S   @@4- x! |6 F \U b `@w , P, He y-9 d ^\ `$4+-9< HhV Lm @@8   >4# a-9 h-9 L,   ,#-96 XE-9U XC\h u   >D \ -9 8P X  1 > `O \ j ` X Q HT @. h.9  "Pp.9" <1 ,\E 0V Uv ظd 4 4 HtL P)    ȩ` <% M@5 /F pr] $l 0L x.9H8@.9 ؾ$ L9 (,8 &.9:.9O )e xxs"9~  P^\ p H `4 D ,4d . `D.9O _d  @  0u08   =4! _ 4 P74  \  XL  t() 8(5  I  @EDZ  He u  xP    B 8  W  8D .9  (` ! p*!.9;! \L!`!t! x! (!! ("|! @! ! !9! 8" 0 $" 91".9<"Q" <f".9q" z" p" 8|" 0" d" 8" " `"  # #.9.# @=#P#  c# pq# !\# Ќ# #  #.9# ?4,#.9# J(# h<4#$.9$ d!$ @4$ aC$ H Y$ g$ xFhx$ $ @D$ @T$$ $p8`$ H$ T$ ~P%.9% G('% H;% H% 0L]% (n% %.9%% ]D% 81 %.9% #% `& 0\& !& !3&.99& 7HQ& d& pz& #9& p && 8"4&/9& X& X5\& H'' P- (' K|;' pG' X<U' `|b'  p'/9' 4' 0' ' 0' n'/9' $4' D( 7!( (?4(1( AC( `N("9Z( k( g( &( p( 4(/9( P( T\() p[ ) *\) /() 0 ?) ` 8O)a) 0p) )"9)) X) ) |) p`) P * 8* K&* p?40* l`* 8v* * G *"9** XY* d* 08* @++ (B '+ hT3+ /9D+ U+ f+ X5 \|+ p+ 0.\+ + ؘ|+ + Hq X+ @+(/9, /,D, X, i, 0u, 0, PP,,h9, , (i, t,-8-  - `+-  x>-0/9(`N-a- Hx- Pp- XE- @X- p{ - (- H- @4@- | . 4. @*. (9. `6xH. X. Mk. H . S. l.. s.. X. #&;/ /// Pd;/ (-TR/ dc/ r/ x}/ @/ xh/ / p/ p,// X/ x~0 pH0 p.0!9B0 0S0 زg0 \|00 h30 _0900 l0 W0 @+1"919(1 81K1 > _1(9j1X9w1 H1 81 =41 PQ|1 0 1 1 ؃1 5p1 s12 Qh'2 DD2 DR2 Qp_2 >4!l2 qD2`922 L292 "t22 8,3 43 x(D#3 ~43 G39Z3 Ho3  3 3 |3 У|3 h>43 3 H! 3 3 4 4 Hk '4 HC;4 pP4#9a4  p494 p=4A44!94 %44 J4 44 0@4 n 5 X*h5 p%5 eD55 P5 \0]5|8v5 @5 `T5 X$5 0: 5 pT\5 \5 ء45 (5 6096 pH+6 h<6 \J6 tU6 H)Ti6 pz6 ^D66 @L6 6 px h6 86 C@7 0t7 X )7 57H79Q7 (^7 $n7 0U7 7 fT7  77 7 `7 8 8 XP8 H P&8 :8 L8 h 0j8 Q(z8 8 8"98 P8 `8 P<8 P8 8"99 wd9  9 &,9 F9 (S99f99 9 (T9 p99 H9 8B \9 09 : l: (%: $43: ,C:8hR: (5]: H@n: : P:::: Kp: 0,: @>4:9 ; %;9;8E; r X; B4e; p;8{;9; 8 4; ;; `; @;9; ,p; ch<P"9< x"<95< |E< @Y< 8p<9< 9< P< < << d<(9=090= ȅD1=E= lS= P]c= xhv="9= = 8= x= H= P6=  *= (= (> >`9#> :> `7@O>  b> 8p>(8p~>h9>"9> h> 0X>> h > J > B ? x, ? P 1?Q? c? Pp?? P?p9? h9? d? P??9 @ ț @ `.@ _ 0<@ K@!9b@ Hfp@ 0|@8 @ @ p/@ @ 1@ 2@ @9@  l A!9A 8 82A 8CA9OA9ZA |iA %xA ?Ax9AAA9A @A A9A  B 4B 8*BEB  WB @oB9B H-B XB `B 4B =B LB C C =4C9,C 0DHC8"9\C9HiC z yC $C C9C <C X<C C9C D9D (#D 1D آBD ;SDjD @8{D =4DD U D MD0#9D `jD ;@D @E =4E&E @)4<>E ps PE xP\_E XT(uE @NE P,E @2E XxE rE  E `HE pEF9F 0$F X2F l?F (ptOF (b`_F qF ,\F F F hF `0F $F 9F(9F `F PG 88#G091G Q<IG @$4 bG HtG @G ؅G (tGG A4G : 4G 8< G ^G p H/usr/lib/gcc/aarch64-linux-gnu/8/../../../aarch64-linux-gnu/crti.o$xcall_weak_fn/usr/lib/gcc/aarch64-linux-gnu/8/../../../aarch64-linux-gnu/crtn.ocrtstuff.cderegister_tm_clones$d__do_global_dtors_auxcompleted.8216__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entryS_mark_padname_lvalueS_is_handle_constructorS_search_constS_no_bareword_allowedS_assignment_typeS_forget_pmopS_looks_like_boolS_op_varname_subscriptS_fold_constants_evalS_check_hash_fields_and_hekifycustom_op_register_freeconst_sv_xsubconst_av_xsubS_set_hasevalS_scalar_mod_typeS_link_freed_op.isra.12S_op_pretty.part.13S_scalar_slice_warningS_finalize_opS_aassign_scan.constprop.49sbox32_hash_with_state.constprop.52S_check_for_bool_cxt.isra.11.constprop.54S_op_const_sv.isra.17S_op_clear_gvS_maybe_multiconcatS_move_proto_attrS_scalarkids.part.25Perl_scalar.localalias.46S_force_listS_dup_attrlistS_fold_constantsS_scalarbooleanS_maybe_multiderefS_op_sibling_newUNOPS_newGIVWHENOP.isra.32S_new_logopS_newONCEOPPerl_list.localalias.45S_gen_constant_listS_listkids.part.34S_voidnonfinalS_warn_implicit_snail_cvsigS_optimize_opS_process_optreeS_modkids.part.37S_ref_array_or_hashS_cant_declareS_no_fh_allowedS_bad_type_pvS_bad_type_gvPerl_coresub_op.localalias.44S_already_defined.isra.39S_process_special_blocks.isra.41S_apply_attrs.isra.42S_my_kidxop_null.25657array_passed_to_statno_list_state.23611custom_op_register_vtblperl.cS_init_idsPerl_SvREFCNT_decread_e_scriptS_Internals_VS_my_exit_jumpS_incpush_if_existsS_incpushS_incpush_use_sepS_init_postdump_symbolsS_minus_vS_usagenon_bincompat_options.21686local_patchesusage_msg.21941universal.cS_isa_lookupS_sv_derived_from_svpvnXS_version_qvXS_version_newoptimize_out_native_convert_functionXS_universal_versionXS_utf8_native_to_unicode.localalias.2S_version_check_keyXS_version_is_qvXS_version_is_alphaXS_version_booleanXS_version_vcmpXS_version_normalXS_version_numifyXS_version_stringifyXS_version_noopfile.22500these_detailsgv.csbox32_hash_with_state.constprop.8S_gv_init_svtypeS_maybe_add_coresubS_require_tie_modcore_xsubPerl_gv_check.localalias.6S_gv_fetchmeth_internalPerl_amagic_call.localalias.5file.21546bodies_by_typeS_autoloadPL_AMG_namelensPL_AMG_namestoke.cS_word_takes_any_delimiterS_checkcommaS_check_uniyyl_safe_barewordyyl_croak_unrecognisedyyl_strictwarn_barewordS_missingtermS_parse_recdescent_for_opS_postderef.part.1S_force_ident.part.3S_parse_expryyl_constant_opS_update_debugger_infoS_newSV_maybe_utf8yyl_fatcommaS_inclineS_scan_identS_intuit_moreS_lopS_scan_heredocS_add_utf16_textfilterS_utf16_textfilteryyl_fake_eof.isra.7S_force_wordyyl_hyphenS_intuit_methodyyl_leftcurlyS_vcs_conflict_markerS_scan_inputsymbolyyl_subyyl_colonS_pmflagS_scan_patS_no_opyyl_just_a_word.isra.8yyl_dollaryyl_snailyyl_myS_new_constantS_tokeqS_sublex_startS_scan_constS_force_versionS_tokenize_useyyl_word_or_keyword.isra.10yyl_keylookup.constprop.16yyl_tryyyl_rightcurlyS_sublex_donePerl_yylex.localalias.13ident_too_longident_var_zero_multi_digitnvshift.23693bases.23694Bases.23695maxima.23696perly.cS_clear_yystackyycheckyytableyy_type_tabyystosyytranslateyypactyydefactyyr2yyr1yypgotoyydefgotopad.cS_cv_cloneS_pad_alloc_nameS_pad_findlexregcomp.cS_delete_recursion_entryS_skip_to_be_ignored_textS_nextcharS_unwind_scan_framesS_alloc_code_blocksS_free_codeblocksS_regex_set_precedenceS_initialize_invlist_gutsS_add_dataS_re_croakS_get_quantifier_valueS_reg_scan_nameS_get_fq_nameS_output_posix_warningsS_set_regex_pvS_change_engine_sizeS_reg2LanodeS_reganodeS_handle_named_backrefS_reg_nodeS_reginsert.isra.14S_reg_la_NOTHINGS_reg_la_OPFAILS_scan_commit.isra.22S_invlist_replace_list_destroys_src.isra.24S_execute_wildcard.constprop.37S__append_range_to_invlistS_pat_upgrade_to_utf8S_concat_patS_is_ssc_worth_it.isra.5S_ssc_is_cp_posixl_initS_set_ANYOF_argS_add_multi_matchS_handle_possible_posixS_add_above_Latin1_foldsS_ssc_anything.isra.26S_ssc_init.isra.27S_populate_ANYOF_from_invlist.part.29S_ssc_finalizeS_get_ANYOF_cp_list_for_ssc.isra.31S_ssc_orS_ssc_andS_regtailS_make_trie.isra.33S_rck_elide_nothingS_study_chunk.constprop.38mph_tablemph_blobUNI_XPOSIXALNUM_invlistUNI_XPOSIXALPHA_invlistUNI_XPOSIXGRAPH_invlistUNI_XPOSIXLOWER_invlistUNI_XPOSIXPRINT_invlistUNI_XPOSIXUPPER_invlistUNI_XPOSIXWORD_invlist_Perl_GCB_invlist_Perl_SB_invlist_Perl_WB_invlist_Perl_LB_invlist_Perl_SCX_invlistUNI_ASSIGNED_invlistUNI__PERL_IDSTART_invlistUNI__PERL_IDCONT_invlistUNI__PERL_CHARNAME_BEGIN_invlistUNI__PERL_CHARNAME_CONTINUE_invlistUppercase_Mapping_invlistLowercase_Mapping_invlistTitlecase_Mapping_invlistSimple_Case_Folding_invlist_Perl_IVCF_invlistUNI_M_invlistuni_prop_ptrsS_parse_uniprop_stringS_handle_user_defined_propertyS_regclassS_regS_grok_bslash_NS_regbranchS_regpieceregarglenreg_off_by_argUNI_ASCII_invlistUNI_XPOSIXBLANK_invlistUNI_CASED_invlistUNI_XPOSIXCNTRL_invlistUNI_XPOSIXDIGIT_invlistUNI_XPOSIXPUNCT_invlistUNI_XPOSIXSPACE_invlistUNI_VERTSPACE_invlistUNI_XPOSIXXDIGIT_invlistUNI_POSIXALNUM_invlistUNI_POSIXALPHA_invlistUNI_POSIXBLANK_invlistUNI_POSIXCNTRL_invlistUNI_POSIXDIGIT_invlistUNI_POSIXGRAPH_invlistUNI_POSIXLOWER_invlistUNI_POSIXPRINT_invlistUNI_POSIXPUNCT_invlistUNI_POSIXSPACE_invlistUNI_POSIXUPPER_invlistUNI_POSIXWORD_invlistUNI_POSIXXDIGIT_invlistAboveLatin1_invlistUpperLatin1_invlistUNI__PERL_ANY_FOLDS_invlistUNI__PERL_FOLDS_TO_MULTI_CHAR_invlistUNI__PERL_IS_IN_MULTI_CHAR_FOLD_invlist_Perl_CCC_non0_non230_invlistUNI_CO_invlistparens.26340UNI__PERL_SURROGATE_invlistUNI__PERL_PATWS_invlistUNI__PERL_NCHAR_invlistUNI_ZZZZ_invlistUNI_ZYYY_invlistUNI_ZS_invlistUNI_ZP_invlistUNI_ZNAMENNYMUSIC_invlistUNI_ZL_invlistUNI_ZANB_invlistUNI_Z_invlistUNI_YISYLLABLES_invlistUNI_YIRADICALS_invlistUNI_YIJING_invlistUNI_YI_invlistUNI_YEZI_invlistUNI_XSUX_invlistUNI_XPEO_invlistUNI_XIDS_invlistUNI_XIDC_invlistUNI_WCHO_invlistUNI_WB__XX_invlistUNI_WB__WSEGSPACE_invlistUNI_WB__SQ_invlistUNI_WB__NU_invlistUNI_WB__NL_invlistUNI_WB__MN_invlistUNI_WB__ML_invlistUNI_WB__MB_invlistUNI_WB__LE_invlistUNI_WB__KA_invlistUNI_WB__FO_invlistUNI_WB__EXTEND_invlistUNI_WB__EX_invlistUNI_WB__EB_invlistUNI_WB__DQ_invlistUNI_WARA_invlistUNI_VSSUP_invlistUNI_VS_invlistUNI_VO__U_invlistUNI_VO__TU_invlistUNI_VO__TR_invlistUNI_VO__R_invlistUNI_VITH_invlistUNI_VERTICALFORMS_invlistUNI_VEDICEXT_invlistUNI_VAI_invlistUNI_UIDEO_invlistUNI_UGAR_invlistUNI_UCASEXTA_invlistUNI_UCASEXT_invlistUNI_UCAS_invlistUNI_TRANSPORTANDMAP_invlistUNI_TOTO_invlistUNI_TNSA_invlistUNI_TIRH_invlistUNI_TIBT_invlistUNI_THAI_invlistUNI_THAA_invlistUNI_TGLG_invlistUNI_TFNG_invlistUNI_TERM_invlistUNI_TELU_invlistUNI_TAVT_invlistUNI_TANGUTSUP_invlistUNI_TANGUTCOMPONENTS_invlistUNI_TANG_invlistUNI_TAML_invlistUNI_TAMILSUP_invlistUNI_TALU_invlistUNI_TALE_invlistUNI_TAKR_invlistUNI_TAIXUANJING_invlistUNI_TAGS_invlistUNI_TAGB_invlistUNI_SYRIACSUP_invlistUNI_SYRC_invlistUNI_SYMBOLSFORLEGACYCOMPUTING_invlistUNI_SYMBOLSANDPICTOGRAPHSEXTA_invlistUNI_SYLD w wD wD Ĥ D D @ߤ HD HD  D  (D (D 0 D D @QK HQD HQD f D D : L xp `8  PlХH#9ܥ @P#9P 095$9`E 0Ul z X2` 8e `9 b `̦ ( \ݦ %9 (x  X  - < g Q ^ 0l X 88%9 Ȯ HA49Ч b` 8  8 D $4@7 (J XP^ P8o  8%9 P/ 8hɨ%9 %9  PU  @h ho 2 P? P ] 0} k  xo< Px  =  (%9 o p" 89 N@I 8X @Xl +   8 $ ppͪ x٪0%90 0` 8 H -x"9Bh"9\ 4v!9 8p   H1xҫ $x!9  (  up* 9M [ (<i`%9u 9  h %HѬ @ |h%9  t  иl/ 8tAp%9H 0<W hh Dvp9  0x%9 (4 x ŭ("9ϭ j 02$ 8} 8> P, t: tG ( PT%9^ 0 ,r H 8 D  'X (׮ @  `, R D  ]D. 8 ,: Ot"9X 8Hf X\r (!9 0 @į Z ү X,  L X"9 P@( nT; P HQ P/4x["9g%9r ;x';%9   ư%9Ұ  8P `8 x,@ O ]%9k pz v H  L (( تXű : ױ F0  X$x&9"9$ P? $K &9 gz pD 0&9 M9Ų X<ֲ  PX vD8&9#?R Lh pw P G d -$ @H c ճ @&9 xT  | %H&9/ C x!NP&9[ gdjX&9z   h  pδ  | 0 $B L |j Xz P gh H T h X(׵ Y @`&9& 86 hlC HS 0-t_ pmX8{  @M"9"9h&9ʶ X:ڶ  NX t  PX P:4" `9 $F =4Q dp&9sp"9 t   ثdx&9ŷݷ X#  $ $, O9 K ` $\ pp   h;4 4` wǸ ظ 8 @ >D   8*-> HtO x b Э0r H &9 #,&9˹ Pܹ H&9% : h U n  8P ̺&9غ h&9 89H $ 39A <Y PFg `\`y  hW  pֻ&9 P X L&9" LP.K $\ ( x ;  D&9 ̼&9ݼ 0   8 % `<88F iTj 8v&988 X|&9&9˽޽ BP  PK  (l! xD4 DH p^ 8To P9 pd y 0H, x; 0 xy( >4/&9A&9L ^ $k&991t l  (` Xt ˿ nٿ 0@ &9   T! }. ( ? R D bp80q y '   e 4 ,   0 . 35> 4N hzf H!dx  S '9'9 pC '99  '9 ( :O [n '9z   h=4 p ('9 P$t H! Xk8 SH :] R s p0 XL8 Hh "d  x J 8 3F 8/ @> HPj Dz @80'9 h 8   p )x:  =4 ' O2J =Z p m H8 wp x h 8x 0j09 8  x  `I @H28'9= 8K 5 X\ n H h -@@'9 p ` X  (b X$ 85 PC T9e!9u (&h xc H H'9   @ 5d  8P'9+ (4 HE"9V k89| pT % , )L X   Y 0B/ 8 AX'9N \z`'9 1  Xh'9 м8   # P3 p4L ^ Еo  @R tq"9 xM  p XeX    H 'p'9X4'9B R ȶf'9v 9 Ȑl'9 0 '9  :'9HZ dTi { [ @  H t Ќ "'9 x&< H|O l` qLv  h$ '9(9 U T  h @4/ `LE T pb(9o o  ( ( ! h `l   V ! 6x8E \T {h V4  6 h 'h / @Z4 L @d  T ȋ,( BX5(9C HQ H7l  z d w  ,@"9> P;|  B  "9,D V 7` &m БP| `Y@  ` ?  (9 0p    4 B( (96 Pa s (t   ȻP XX q   3  D 4Tf [w x @ d x(((90 < x B d+X(99 YT(9a tn H\~ n @  ؇ L(9 t ` 1(9; O ; b +(r ,  0  Xo(9 d!9 0 (9""9- P4@ PN ` @ p)9 5, 3 ؘ  8 А  @ @> e-  7 Ka x  L  ` | h `4  +T"! C\28pA)9T x0fx   p T ?4D!9 l08@, 046 (N `\ ȓLi)9t h p$4  #9 d ( O\  )9* P>Q h 8 x h  d $  P0  )9 <9 ' 4 Њ8G()9U @4Pp  8 xW X\ @ x P hx) P\=O "d xDr &0)9 8)9   ( ` k $" 1l- PD< sI \ h, n } 8   x  54 @ < )@)9 ( 8 0H \SD)9a9  0  , 8p  0W  v (+ px< L^ 0!XqH)9   8 ;$ h `zp   ,P)9: H ^X)9d 8t`)9 h)9 P4D 1  8p)9 M  T )9!9  ,$ X4 HN4K @_ fm uz \ P7 l $ h@8 4 3H A4"Z xDg Pv (< 4 P @]` "9 f  X ؛@ ) D< p4,L H_ X u x  $    p  2 X @ U `b 1hp x@{)9 ȍ H pBD*9 `"9 *9 4*9D ,Z o"9|*9 ( !9*9 x  +h 8!4 `K p,T_ (Ps*9  : 08 >4  8D "9 2 *9 (+ @ e(Y*9e"9r \ !9*9 x4*9 P8  XM Hh, @A!9Q l*9y B Ѕ8 L (  8   ! ,3 8lA  V ( d pq Xm H4"9*9  @ZD  @ X'x$ h0 hg DE*9Of H8v A4!  ` H   4 x8  `P  Z| 4# 'd9*9DW `p f (Du h H 0L H x @ p  ,4a `+ 7 $E xUS <ew x Th"9    r 04 Zp 8) << 88M 4] (k @ 0z+9 d@+9 @4 X XS  X) 7+9B H Y )i lt(#9 | Z (   4 pP .l   `! 0H; (<J pJZp @P} ^@+9 P?4 x ," +9 T !(+9. 0 ="9J `e { 2T9 4  P940+9 H  @ X$5 ؾ8B O @ ,\ Lu h p @ rh d >4+8+9!9 P  ( l+ A ЌP c @r @+9 t  >4!H+9 H" (@   @#9! l6 C oTg `dx 68 R  HAP+9  . ? HSX+9a @q`+9| h+9  p+9  <x+9+9  )< aJ\ Uy @ +9 P;I ' {+9 P%< 0 @ P$  6 8E u4U ihe 7t H8!9 0 fL ( -X >4S xx  X) 5 `LF^+9m S 0 0  8 X  uT <   X+ p<9 @M Z jg إs+9| p @ 8 x  p 0 0H ` `   l, `=+9J V _ |w  \  p T+9" @C(3 HF lZ p8k PXw  0 ` @ P a f@ 09- 09 XsR e "t} @ 8 ؀ ,   XP$ p< K 8(T^ v (  \ , h   !9 $4+ 9N l@^+9i @@w  D+9 4 P h# @  H/ b= (N ^ hCq l xW $4 (   H9+9,!9? !LS 6d9  !9  0 C P p 8)$@hJ x)$|J *$J *$0J *$J X+$@J +$0J +$0 K +$PK H,$03K x,$0HK ,$0YK ,$@jK -$0}K H-$0K x-$0K -$0K -$0K .$0K 8.$0L h.$0L .$0/L .$0BL .$0XL (/$0oL X/$0L /$0L /$0L /$0L 0$0L H0$0L x0$0M 0$0M 0$0*M 1$0@M 81$0TM h1$0kM 1$0M 1$0M 1$0M (2$0M X2$0M 2$0M 2$0N 2$0$N 3$0:N H3$]N 8$~N hA$pN A$PN (D$N E$N G$PO XG$P$O H$0FO H$cO XJ$P{O ^$0O ^$O a$O c$0O c$0 P c$,P d$PMP (e$`tP e$0P e$P f$`P f$PQ Hg$9Q Xh$[Q Xi$@}Q i$0Q i$0Q i$Q j$R xk$ ,R Hu$OR (v$0uR Xv$R y$0R ({$0R X{$0R {$0R {$0S {$0S |$09S H|$0RS x|$0hS |$S X}$`S }$S 8~$0S h~$@T ~$4T ($P JT x$ bT $`T X$ T أ$T ؤ$T $`T H$0 U x$0 $U $0d P)0Od )p`d )ppd `")0d ")0d ")Pd $)0d @%)0d p;)d =)0d >)5e t)!e u)02e u)Ce v)Te w)0ne Pw)e x)0e @x)0e px)e y)0e Py)0e y)f )@"f ؍)@5f ) If 8)]f 8)@pf x)@f )Hf )f )0f 0)0f `)0f )0g )0g )`/g P)PAg )0dg )0|g )0g 0)0g `)0g ) g @)0g p)0h )0h )0Ah )@Rh @)dh )vh )0h )h `)h )h )h 0)Ph )P i )pi @)p,i )@i )`Ti )hi )P|i )i * i *pi `*i *i `#*@i )*j p.*P"j .*`7j 3*0Kj P:*_j :*sj ?*j PN*0j N*0j N*Pj O*0j 0O*j O*0j P*0!k 0P*0=k `P*0Vk P* fk \*0uk ]*0k ^*k ^*k @_*k `*k a*0k a*0l a*0l b*05l @b*0Rl pb*P'bl *@'rl *0&l 0*4l +Pl +'l ;+0l 0;+0l `;+m <+@m P<+0)m <+0Hm <+`Ym =+0um @=+m A+0m B++m m+0m n+0m 8n+0m hn+0 n n+0n n+03n n+0Gn (o+0[n Xo+0on o+0n o+0n o+0n p+0n Hp+0n xp+0o p+o x+0'o +0@o ؋+0Xo +Pio X+`zo +po (+0o X+0o +0o +0o +`o H+Po +`p +@"p 8+P5p +pIp +`]p X+pp h+0p +p (+0p X+0p +p H+0p x+0p +0 q ئ+0 q +04q 8+@Hq x+@\q +@pq +@q 8+@q x+@q +0q +0q +0q H+0q x+0r +`%r +0:r 8+0Nr h+Pcr +0wr +0r +@r X+0r +0r +0r +0r +0s H+Ps +0-s Ȭ+0Bs +0Ws (+0ks X+0s +0s +0s +0s +0s H+s + s +0 t (+Pt x+`+t ػ++9t +0Tt +@et (+Pvt x+0t +Pt + t +t + t 8+0t h+0u +u x+0+u +@=u +`Ou H+``u +qu h+u +Pu H+0u x+0u +0u +u h,0u ,0 v , v ,3v #,0Gv #,0[v $,0ov 8$,v A,0v A,v C,v @D,v 0E,v F,v 8H,pw H,w HI,,w (K,@=w hK,@Nw K,0cw K,@tw L,@w XL,@w L,0w L,`w (M,@w hM,0w M,0w M,0 x M,0$x (N,0;x XN,0Rx N,Pcx Q,(sx R,0x 0R,0x `R,0x R,0x R, x R,0 y S,Py `S,@.y S,`Ay W,Ty Z,gy c,@y d,0y 0d,y i,y p,y `v,y |,P z `~,#z ,6z Ј,Oz ,`hz ,{z ,@z ,z ,z ,z ,0z ,z ,{ ,%{ 0,0?{ `,pP{ Ь,l{ X,{ @,{ 8.({ .{ x.0)| . 87,|87@|pS8hO|R8_|P8m|,8#||,8P|%8|#8(|"8|8|8|P8|(8(|`8}X8(}8H8}x8F}8T} 8b}0 8hs} 8H}p 8x}8}(8}07}7}7 V28[5}D ~} ~} P4~ X~ ~ ؄9~ V~ g~ ؎t~ 8~ P0 N2~ ~ p4,0|8~0|8~|8~0}8 R2}5~D h~ hh h 8  5 B P hn2N hn2 pn2 xn2 5_D 0nd 0n{ Hn p n oh ho x2  D    8z25/D @58D C XV x} Px @ 2 2 p8p8 2H5D P; 2 2H5̀D ր h @ H  2  2.8 8 K2p5)D . h7 H U `j H{   @| 2 ҁ 0   4  % ; 2+ V25JD O <c X 25rD )5xD 0* 0* +x P, ,L 02т 02  @2 H285D    l `. > I ] h`q P L  X2 I( h΃ ߃ % (( ( P,0 9 0M [ @r X}   XLɄ T H p (<6 h,V pv H `2 h2 p2 2 2 (2 2h5˅D (`Ѕ (` a b c Xd|0 d|? Xe`R e] xmr `nz p 2 2 2 2 2H 6D   pT x2 28 256D    P h T ( 6 x@ H$V pxe p| X8    8҇ h߇ 8L H    '  8 *x J S4 02Z 8h8p p2(=6uD ,~ , `- .< e 2ƈ 2 Ԉ 2 2 2 г2 س2 2 88`*X88 2 V2@Q68D ' hz2l6?D @aF @aT Hcb dy dH h p x88@ 2n6ʉD Pԉ PT T T XD d+ xJ U pj $}  l D 8pϊ X l pX  p/ D9 @R an J K (2t HNh H3l2ˋ P< Q TT 2  (W [+ m3< ^HD H_T F3'd `ak Pf{ Xk p 2  ȕ | lY 2 2!ʌ H2ӌ 02F x2< 2  2L' 38 3I 3 Z 3k 3 | 3 3 3 3  3э 3, H34 38 3 3& 37 3H 3 Y 3j 3 { @3$ h3 x3  3 3Ў 3  3  3 3 3% 36 3G 3X 3i 3z (3 03 83  H3 P3Ϗ X3 `3 h3  x3 3T$ 3P5 030F `34W 3h 3 y 3 3$ 3 3  3ɐ (3ِ 03 83 @3Ї8 Ї8 X3}6D # h: G 8p @ 0@ 3 830ӑ 3 3 3 @3l 3 3( 35. 3IC @3.X p3m x3o 3J 3 3 3 3Ē 3Ԓ 3 3  ȥ3  إ3 3$ 34 3 D 3T 3d 3t 3 3  03 83 @3 ē P3 ԓ `3 h3  x3  3 3$ 34 3D 3 T 3d 3t Ȧ3 Ц3 ئ3 3 3Ĕ 3Ԕ 3 3 3 3 3$ 34 (3D 03T 83d @3t H3 P3 X3 `3 h3ĕ p3ԕ x3 3 3 3 3 $ 3 4 3 D ȧ3T Ч3d ا3t 3 3 3 3 3  3 Ζ 3ݖ (3 03 h3  p3 x3+ 3; 3K 3[ 3 k 3 { 3 3 Ƚ3 н3  3˗ 3ۗ 3 3  3  3 3 + (3 ; 83K @3 [ P3 k `3{ h3 p3 x3  3 3˘ 3ۘ 3  3  3  о3 ؾ3+ 3; 3J 3Y 3h 3w 3  3  (3 03 83™ 3ԙ 3 3 3  3  3. 3@ 3R 3d 3v 3 3 3 3 3К 3 3  3  03 83) @3: H3K P3\ X3m `3~ h3 p3 x3 x3 4Л 4 4 4 4 4  4 0 4 @ 4P 4` 4p 4  4 4 4 (4 04 М @4 H4 P4  `4  p4  x4 0 4 @ 4P 4` 4p 4 4  4 4 4 4Н 4 4 4 4 4  40 4@ 4P (4` 04p 84 @4ę H4֙ P4 X4 `4  h4 p40 x4B 4T 4f 4x 4 4 4  4  4 Қ 4 4 4 4 4+ 4< 4M 4 ^ 4 o 04 84 @4 H488H8ph8ƞx8Ȟ`8P P46ڞD 88( 46D 8 4P6 49!909x!98ؐ8 F4D    + K X2`k `6x8 (s4Е6D d 6D  xh 2h6D Кş К՟ P ؜h  + Ы< pP ^ Xl p @x48 x4P6xD    x p P (Р  @  x P  X1 P~4- X>8 4 46BD @UL @UtZ Vk X,~ _, f| hn|ϡ uء w X P  H 2 K Эl     ˢ @ ,   x46'D p8 60D p9 ؎469D H 4B 4P 4_ 40t H48 4 486D Q T 8#98#9 V26D p\86D 8hX6D Hix6£D j6УD k6ݣD o6664 o8+ Hi<3 opK p\ T!9` Hi<h9u k8 jP 8h  8h x8 p::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::9@ 21H4X2121821G4~4V211 2Hxp412111 1xU2(10181@1H1P1X1`1h1p1x11111V2@ 211H411X2P1111ȳ1г1س11821G4~411 2Hxp41<d   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~Y2GCC: (Debian 8.3.0-6) 8.3.0Kh-H p: :  o o4@4777x8889!9D G D p:D oTD |:D oD 8 8 h9 !977 77T4!9:D 1 tG h_ n < ؄ X 0 Ȉ X  ` ( X6 H8D V `n Xp ȓ hh Й | o 0 ' 5 8dI [ <p 8  ` \  8  ((h (4 ;8 I L6 OJ U<] Ul V (W xZ$ 8rH  @ | 8 h & @ X8a Yw Hl z( 0z1 hz>77@ z {4D  l X  x   3 L= 8O Pg q xX Ȕy  887870 @ 5D - -T p.p 0 p3 h6& 8L; (Pb 8uv 0v @v Pv Hw y z X{ | 8 8 (8(8 H5 D }% }| H XY 0m и 8    ( 0   Kh7 h7X V2 5 D #  >  K  P W  X i  P p   0         |   x       8#   % /  ( <  ( F  V 4S  l la  8u g  u v       К 4        p   p     8   %  .  9  4A  X   hc  h m   t     .   h0   2 !  Xg   h `  Hj 8   +    "  x ,";  8J  PB e  (7s 7( 7( 7( X/5 D `  `   8   *  Ph  b  r    `  ( 1  `1    h DQ5 D 0   H  E  b -  `h  F F(R5; D p} E  p} ^  ~ hx  p l  ,   h  Й  x  p  h   h  , : R da v    8 p h  \ p ` p  8 '  G b x x  p ` Ъ   @  8 + 0   P D  h3 p Y ` h X   l H h    6 pS  `T Xs ! ! j./ X=.@-/ H.,G h-)_ -+w -( (c-/ 0(9 0d ؠ/= x0@N /06 .+ (,0), X,/E (:-)f ( -0 `!/, (*1( pM/x* 0R1H, w/( 80) "U8@&# x 3: qY p @hd k g Jj ` x z o` h9 `Oo @Po P( P xQ  H[8 [ _ . kF kP\ 0lu lP m@ @m@ m8 m0 m0 n0 Hn0- xn`D n@[ o0r Ho` oP o( p( Hp0 xp hy  X{2 } P P_  l 0 p @@ + X  p 0 00 `0! 02 @ `0X 0o 0   ` p@ ) 1/ a@ a@0  $ 07 J ЖP] p  И P#  ` p    (0 X@0 0B `Q ( c H@v   8 0 0 80 h x@ 0# 07 0H H0d x0u @  h @ 8 P P h 80 h@ 05 0R `c ht 0 H` P ` X0 0 ` 0  H (0C X0i Pz 0 0 80 h0 0 0 05 (0L X0c 0z 0 @ ( 8 0 h 0  @  0  @ H   07 8 0N h ]  l  0    ` ( @ h   0  0 H P  '  < $ @O $ Pd @% @y % 0 % @ %  & @ ( @ `( @ ( P  ( `!  P) 06  ) 0K  ) `  * @u  * 0  + @  P+   @- P  - 0  - 0  - 0! . ! / @1! `/ PF! / P[! 0 pp! p0 ! 0 @! 01 ! 1 @! 2 @! @2 0! p2 " 3 P" P3 p-" 3 B" @6 @W" 6 l" p7 @" 7 " 8 @" 8 P" 09 p" 9 0" 9 " : `# 0< (# P= =# P> `R# @ g# A |# PB # B # PC # D p# D 0# D `# E $ E $$ 0F 09$ `F PN$ F @c$ F 0x$ G @$ `G P$ G $ H $ `L P$ L p$ N 4% (% )% <% @O% а Pb% u% 0 )% !% !p% !% !% !`% @!@% !0 & !@& !(& (!@9& (!0J& )![& )!@l& )!0{& *!P& p*!& `+!`& ,!0& ,!& 2!@& @2! & =!0 ' >!' >!04' ?!0L' P?!@]' ?!`n' ?!@' 0@!0' `@!P' @!' pA!@' A!' F!P' G!' pH!( H!0( I!&( K!07( 0K! E( W!PV( pW!0v( W!@( W!@( X!@( `Y!0( Y!0( Y!0( Y!0( Z!0 ) PZ! ) Pg!06) g!`L) g!`a) @h!u) h!) i!0) i!) p!0) q!`) pq!`) q! * Pr!* 0s!/* z!0F* @z!`\* z!`q* {!* {!* p|!0* |!0* |!0* }!* !0+ @!`&+ !`;+ !O+ !b+ !@t+ !0+ !+ !+ !+ !+ !0+ !P, @!0+, p!0F, !0X, К!0k, !0~, 0!0, `!0, !0, !0, !0, !0, P!0- !0- !01- !`G- @!`\- !p- 0!@- p!0- !- !0- !0- !0- @!0- p!0. !0!. Ш!04. !0G. 0!0Z. `!0q. !`. !`. P!. !P. 0!@. p!0. !0/ Ь!0-/ !G/ !@b/ !0|/ !p/ !/ !0/ @!0/ p!0/ !0/ з!00 !00 0!0.0 `!0A0 !0X0 !0k0 !00 !@0 `!`0 !p0 0!0 !`0 !01 @!!1 н!31 !F1 !Y1 !0t1 !1 `!1 !01 !1 !1 !01 P! 2 !2 p!072 !0S2 !f2 p!@2 !02 !P2 0!02 `!02 !p3 !3 !p-3 `!PA3 !T3 p!0n3 !03 !3 `!03 !03 !`3 !P 4 p!@'4 !A4 !@]4 !0x4 !4 !@4 !04 !@4 @!p4 !05 !P45 0!F5 !@X5 0!0y5 `!05 ! 5 !`5 !@5 !5 P!5 0!5 ! 6 "`"6 '"86 7"M6 F" b6 M"w6 pP"@6 P"@6 P"X6 HT"06 xT"6 (U"6 ]"`6 ^"07 8^"07 h^"0+7 ^"<7 _"PM7 h_"P]7 _"0v7 _"p7 X`"07 `"07 `"P7 a" 7 (v"7 v"08 (w"0&8 Xw"0B8 w"0_8 w"0|8 w"08 x"P8 hx"08 x"P8 x"@8 (y"08 Xy"09 y"p9 y"0 !9 ("0;9 X"0U9 "0n9 "9 x"P9 Ȏ"P9 "P9 h"09 "09 ȏ"P9 "@9 ("0 : X"0$: "4: "pC: "pR: "0f: ("@w: h"0: "0: ": "`: ": h"0; "P; "0'; "0:; H"(M; @"@`; "0s; "0; "0; "P; `"; P"; "; "; P# < P#0< #01< #0D< #W< #`j< # }< #0< #< #< ,#< E#< F#< @H#0= pH#@= H#(= Z#;= H`#N= b#0a= Hb#@t= b#= (d#`= j#@= j#2= Ȝ#= #= #0= #0> #0&> H#0<> x#0R> #0h> ا#0> #0> 8#0> h#> 8#p> #(> H#`> #p? #@? X#`#? #`4? #0M? H#^? #0v? #0? H#0? x#0? #0? #0? #P? X#0? #`@ # @ $02@ $pD@ X $V@ ($ph@ $0z@ $0@ $0@ ($0@ X$0@ $0@ $0A $A $/A $0LA H$0dA x$0yA $PA $0A ($`A $0A $0A $0 B $0 B H$08B x$MB $0cB 8$`wB $0B $0B $B $0B $pB H$0B x$0C $0&C $`;C 8$ ZC X$0nC $PC $0C $0C 8$0C h$0D $0#D $0BD $0`D ($0~D X$0D $0D $0D $0D $0E H$08E x$0VE $0tE $0E $0E 8$0E h$0E $0F $04F $0VF ($0wF X$0F $0F $0F $0F  $0G H $0+G x $0HG $0fG $0G !$0G 8!$0G h!$0G !$0G !$0H !$0+H ("$p?H "$@ZH "$0pH #$0H 8#$`H #$0H #$0H #$0H ($$0H X$$PI $$`4I %$0SI 8%$gI &$@}I H&$I &$0I ('$`I '$0I '$`I ($0J H($PJ ($p/J )$0SJ @f2Hf2Xf2hf2xf2 f2@f2f2f2f2f2f2f2g2g2 g20g2@Hg2 Xg2hg2xg2g2g2g2 g2@g2g2g2h2h2 h20h2 @h2@Ph2Xh2`h2 hh2@ph2xh2h2h2h2 h2@h2h2h2h2h2h2 i2@i2i2i2(i20i28i2Hi2Xi2 hi2@xi2i2i2i2i2i2i2i2i2i2i2 i2@j2j2j2 j2@ j2(j20j28j2@j2(1l2l2l2l2l2l2l2l2l2l2l2l2m2m2m2 m2@ m20m2 @m2@Hm2Pm2Xm2hm2xm2m2m2m2 m2P2P22е102`2p2H2P2X2`2h2p2x22H122222222Ȼ2л2xd@38303(33333333`30333x3h3`3X3P3H38303(3333333333333x3h3@3 33333333H33333333333303(3 3333333ا3Ч3ȧ3333333x3p3h3`3X3P3H3@38303(3 333333333ئ3Ц3Ȧ33333333x3h3`3P3@38303 33333333إ3ȥ333333338303(33333333ؾ3о3333333x3p3h3`3P3@383(33333333н3Ƚ33333333x3p3h3x3x3p3h3`3X3P3H3@38303 333333333333333333H4@48404 44444444444444444x4p4h4`4X4P4H4@48404(4 444444444444444444x4p4`4P4H4@404(4 4444444444444444484F4G4G4G4(G48G4HG4PG4`G4pG4G4G4G4G4G4G4G4G4G4H4H4(H48H4HH4PH4XH4hH4xH4H4H4H4H4H4H4I4I4 I40I4@I4PI4`I4hI4xI4I4(8I4I4I4I4I4I4I4I4I4I4I4I4I4I4J4J4J4J4 J4(J40J4@J4HJ4PJ4XJ4`J4hJ4pJ4xJ4J4J4J4J4J4J4J4J4J4J4J4J4J4J4J4J4K4K4(K48K4HK4XK4hK4xK4K4K4K4K4K4K4K4K4K4K4K4K4K4L422L4L42L4 L4(L40L48L4@L4HL4PL4XL4`L4hL4pL4xL4L4L4L4L4L4L4L4L4L4L4L4L4L41L41L4F41M4M4M4(M48M4@M4PM4`M4pM4xM4M4M4M4M4M4M4N4N4(N48N4PN4`N4xN4N4N4N4N4N4N4N4O4O4(O48O4PO4`O4xO4O4O4O4O4O4O4O4P4 P40P48P4HP4PP4`P4pP4xP4P4P4P4P4P4ȮP4P4P4P4P4P404P4P4Q4Q4Q4 Q4(Q40Q4X8Q4@Q4HQ4PQ4`Q4p{hQ4xQ4Q4Q4Q4Q4Q4Q4Q4R4R4(R4@R4PR4hR4R4R4R4R4R4R4x2S4S40S4HS4`S4xS4S4S4S4S4S48@2S4S4T4T4 T48T4HT4`T4XT4T4xT4T4T4T4T4T4T4T4U4U40U4(U4@U4XU4PU4pU4hU4U4U42U4U4U4U4U4V4V4 V40V4@V4PV4`V4pV4V4V4V4V4V4V4W4W4 W40W4PW4hW4W4HW4`W4xW4W4W4W4W4W4W4X4W4X48X4HX4PX4XX4`X4hX4pX422xX4X4X4X4X40Q4HQ4ȏ2X422X4X4X4X4X4X41X4X4Y4Y428Y4HY4`Y4pY4Y4Y4Y4Y42x2Y42Y4Y4Y4Z404Z42Z4 Z48Z4PZ4XZ4`Z4hZ4pZ44xZ4Z4Z4Z4Z4Z4Z4Z4Z4Z4[4[4([4@[4`[4[4[4[4[4[4\4 \4H\4P\4X\4`\4p\4\4\4\4\4\42\4\4\4]41 ]4(]40]48]4`2@]4H]4X]4p]4]4]4]4]4]4]4^4^421(^40^4д28^4@^4H^4P^4X^4`^4p^4^4^4^4p2^4ػ22^42^4^4^4^4^4^42^4^4_4_4_4p22_4 _4(_40_48_4H_4X_4h_4x_4P2`2_4_4_4_4_4Ȧ_4_422_4_4_4_4_4p2_4_4_42`4`4`4`4 `4(`483222ظ22x2220`48`4@`422P`4X`4``4h`4p`4`4`4`4`40282`4`4`4@2`4H2`4`4X2h2`4`4`4`4a4a4a4 a4(a40a48a4@a4Ha4Pa4`a4pa4a4a4a4a4a4a4a4b4b4 b40b4Hb4Xb4hb4xb4b4b4b4b4b4b4b4b4c4c4(c48c4Hc4Xc4hc4xc4c4c4c4@2X2c4c4c4c4d4d4d4d4d40d4Pd4Pd4Pd4hd4d4d4d4d4d4d4e4e4 e48e4Pe4he4e4e4e4e4e4e4e4X2`Q4p{hQ4xQ4дe4e4e4e4e4e4f4f4f4f4(f40f4|@f4Hf4Pf4R4Xx20Xf4hf4xf41f4f4f4f4f4f4f4S4f4T4f4p{P4f4f4f4f4g4g4 g4(g48g4@g4Pg4`g4hg4xg4g4g4g4g4g4g4g4g4g4g4h41h4h4 h4(h420h48h4@h48Hh4Ph4Xh4`h4hh4ph4xh4h4h4h4h4h4h4h4h4h4h4h4h4i4i4W4i4(i48i4Hi4HX4PX4XX4`X4hX4pX422xX4X4X4X4X40Q4HQ4ȏ2X422X4X4X4X4X4X41X4Xi4`i4pi4i4i4i4i4i4i4Y4Y4Y42x2i4i4i4i4i4Z404Z4i4i4j4j4PZ4XZ4`Z4hZ4pZ44xZ4 j40j4@j4Pj4`j4hj4pj4xj4@1[4j4j4j4j4j4j4j4j4j4k4k4H\4P\4X\4XS4 k4(k48k4@k4Hk4Pk4HXk4hk4pk4k41 ]4(]40]48]4`2@]4 k4k4k4k4k4k4k4l4^4^421l40^4д28^4@^4H^4P^4X^4`^4 l4^4^4^4(l48l4Hl42^42^4^4^4^4^4^42^4^4_4_4_4p2Pl4_4 _4(_40_48_4`l4pl4h_4x_4P2`2l4l4l4l4l4l4l4l4l4l4l4l4l4m4m4m4 m4(m40m48m4@m4Hm4Pm4Xm4`m4hm4pm422ظ22x2220`48`4@`422m4X`4``4h`4p`4`4`4`4`40282`4`4`4@2`4H2`4m4X2h2`4`4`4`4a4a4a4 a4(a40a48a4@a4Ha4m4m4hm4m4m4m4m4n4n4 n40n48n4Hn4Xn4hn4xn4n4n4n4n4n4n4n4n4n4o4o4o4 o4(o40o48o4@o4Ho4Po4c4@2X2c4Xo4`o4po4o4d4o4o4o4o4o4P4o4o4o4Ȯo4o4p4p4(p4 p40p4@p4Hp4Pp4Xp4e4e4e4e4e4hp4pp4p4Pxp48p4(p4p4p4p4p4p4p4p4q42L4q4q4 q4(q40q48q4@q4Hq4Pq4Xq4`q4hq4pq4xq4q4q4q44q4q4q4q4q4q4q4q4q4q4q4q4q4(n2r4r4r4r4 r4(r40r48r4@r4Hr4Pr4Xr4`r4hr4pr4xr4r4r4r4r4r4r4r4r4r4r4r4r4r4r4r4r4s4s4s4s4~2 s4}4}4}4}4}4}4}4~4 ~40~4@~4x4`ȱر88 |p3(p38X{HX{`zpzyHwHwHwPvвPv | | | |( |8 |H |X |h |x | |@v0ȳ00v 0@pPhxhش (8@V2Xp   @` ж2H2HЄ2222(2@2X2p222222hw4Xw4Pw4P w4((w4(0w48w4`Z4'5BV p: o77oh-K 8(kH oooox8::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::(181H1P1X1h1p111111111111111111111 1(10181@1H1P1X1`1h1p1x1111111111111111111 1(181H1`P1X1`1h1p1x11111111111111111 1(10181@1H1P1h1x11111111hG42111111ȴ1д111111ȵ1HJ2е1h1p111111ȗ1111 1(11:2 101@1 1H1P1X1`1h1pW2d4p1x11P@211w41111111111111111111 1(10181@1H1P1X1`1h1p1x1111111(1111111111111@K41 1(1pw40181N2@1H1P1X1`1h1p1x11111111 1111111111111 1(10181@1H1P1X1`1h1p1x111111111111111111111 1(10181@1H1P1X1`1h1p1x111111111111111021 1(10181@1H1P1ȗ11H4 1X1(82`1h111p1x1H4 1X1(82`1h111121111111111111 101@1P1`1p111111111111110181@1P1`1p1111111ȴ1д1111 1X1k4`1p111111 1(10181@1H1P111(101X1`1h1p1x1111q42111111111 1(10181@1h1p1H1X1h1x11111111&21ȗ111H2111G11(1 01@1P1X1`1p101H1`111X:211X1h1111111H1`1111w41111ȷ111 2X2F 101@1P1P1`1p111211xp4211`131111 101@1H1P1X1`1h1p1x111111111xU2pf411111 1(181H1P1X1`1h1p1x1111111111 10181@1H1P1X1`1h1p1x1111111111111(181H1X1h1x1111111111101@1P1`1p111111111(181H1`1x1111111111(181H1X1h1x111111111 101@1X1p11111111111 1(1@11P1X1`1h1p1x11(11111111111111111 1(10181H1X1h1x1111111111111 1(181H1P1P11X1h1x111111111111111 181P1h1x11111111181P1`1x1111111 181P1p111111111 181H1X1h1p1`1`H2x11 1(11111111 101@1P1X1`1h1p1x11111`111111111111 10181@1H1P1X1h1x1111111101@1P1h1x1111111111(181H1X1`1h1p111111111111P1 101@1j4H1X1h1p1x111111xp42111111111ȴ1д1111 1(181H1P1X1k4`1p11111ص1111P1h1p1@1j4h1p1 1(1 1(1018101H1`11@1H1P1`1xp421w411ȷ1 2p11111111111111@1P11111121 101H1X1h181@1x1111HJ2е111P111111 101@1P1^4X1`1h11p11111Y2111111111111111(1H4 181M4@11X1(H1X1`1`H211 1(1h1x11111111Я211(10181@1x11H1P1X1`1h1Gp111111 21G4P1:2K2H2111H111111`111 101(1@1P1`1p11111111112X211( 2`111 211H4 111 1(101G2811@1H1P1X1`1p1111111111111111111 1(10181@1H1P1`1p1x11111 1(111111111H11111 1(10181@1:2`*22H1P1X1`1h1x1@1H11(11@K4 1(1pw40181N2@1H1P1X1`1h1p1x11111111 11111111111111111111111111 1(10181@12X2H11P1`1p111211111111111111 101@1X1822p181x1`111111111111111111 1(10181@1H1P1X1`1h1p1x111111111111111111111 1(10181@1H1P1X1`1h1p1x111111111111111111111 1(10181H1X1h1x111111111111P1111222(202h1p182@2H2P2281@1P1X1X2`211 1H1 2h22`1h1p222112222222(2H2h22112222202H2`2x222112222222(2@2X2h2x222222 202@2`2222222 282P211h2p2x220181`1p11122222222211й1ع1111 1(282H2P1`1X2h2x222222111122 21к11102@2P2p2222`1h12p111111л11222(2@2X2h2x2112@2222222 2 28 2P 2h 2 2 2 2 2 2@ 2X 2p 2 2 2 2 2 2 2 2 2 2 2 2 20 28 2H 2P 2h 2x 2 2 2 2 2 2 2 2 20 2P 2p 2 2 2 2 2 2( 2P 2x 2 2 2 2202X2x2222282X222222(2P2x22222@2h222222282X2p22222@1`22222(282P2h2h1x122222 282P2`2x222111ȼ1222222202H2`2x22222222(2@2X2p2111122222222(282X2p2222281H1h1p122222112(2H2`2222Ƚ1111(101222(2@2X2p222222(282H2h222222 2H1X1@2P2`2p22222222202H2`2x22222222(2@2X2h22222x11222(2@2X2h2x2221122222111 1(101(2@2X2h2x2222H1X12x1111222 2 28 2X 211x 2 2 2 2 2 2!2!20!2H!2`!2x!2!2!2!2!21181@1X1`1x11!2"2 "2@"2X"2p"2"2"211"2"2"2"2#2(#2@#2X#2#2#2#211#2$2$20$2H$2`$2@1X1x$2p11$2$2$2$2$2(11$2$2$2%21111%2 %20%2@%2P%2`%2p%2%2%2%2%2%2%2%2%2%2&2&2&2&2(&28&211H1X1H&2X&2h&2&2&2&2 101H1X1&2h1111&2'2'2111181@1 '2('20'2@'2P'2h'2'2'2'2'2'2'2'2'2(2(20(2@(2`(2(2(2(2(2(2(2)2)20)2H)2X)2p)2)2)2)2)2)2)2*2*2(*28*2H*2X*2h*2x*2*2*211*2*2*211+211+20+2H+2`+2x+2+211+2+2+2+2+2+2,2,2(101H1P1X1h1 ,2(,20,2@,2P,211111111(101`,281H1p,2,2,2,2,2-2-20-2H-2X-2h-2x-2-2X1h1-211-2-2-2-2.2.211(.211@.2 181P1X1X.2h.2x.2.2.2.2/2@/2h/2/2/2/2/202 02H02p02020202020212(12@12X12h12x121212p1x19212121212112222 22822P221111h22 G2p2222221122222222222232(32@32X321(1H1X1p32111x32113213232323232113211323281@142H1X142p11 421104211H4211X4211h421(1x4281P142`1p142114242421152(52@521111X52p525252 101P1`152115211525252626211 62062@62X62&2p6262626262627272p11(72@72X72h72H1X1x7272 211172727272721111(181X1`1h1p17282 821111882P82h828282828282828292 928921 1P92H1X1x11`929292929211929292:2(:2@:2P:2`:2p:2:2:2:2:2:2:2;2 ;28;2P;2h;2;2;2;2;2;2;2<2(<2P<2x<2<2<2<2<2 =2H=2p=2=2=2=2>20>2P>2`>2h>2x>2>2>2>2>2>2>2?2(?2118?2X?2x?2?2?2?2@2(@211H@2X@2h@2@2@211(181@2@2@2H1P1@2X1h1@2p11@2@2A2 A28A21111PA2`A2pA2A2A21111A2A2A2A2B2B20B2HB281@1x111111111111`B2xB2B2B2B2B2B2B2C2C2C2(181(C2PC2xC2C2C2D20D2hD2D2P1X1D2D2E2E28E2XE2xE2E2E2E2E2E2E2E211F2F2F2 F211(F211 1(18F2@F2HF2`F2xF2F2F2F2F2F2F2F2P1h1G2G2(G2HG2hG212G21G2G2G2G2822G2G2G2G2H2H2(H220H2H28H2@1@H22HH2XH2hH2H2H2H2H2H2H2I2P1I2I2(I2@I2XI2pI2I2I2I2I2I2I2I2I2H1X1I2I2H92I2J211J2 J2(J20J28J2PJ2hJ2J22J2J2J2J2J2K2K20K2HK2PK2XK2`K2hK2pK2G4PxK2K2K2K2K2p.2( 2`1K2K2H4 1X1(xp42K2K282`1h1K2K2L2L2L2L2 L2(L20L28L2@L2ȣHL2PL2XL2`L2hL2pL2xL2L2L2L2L2L211P1`1L2L2L2L2L2L2L2L2L2L2L2M2M2M2M2 M2(M20M28M2@M2HM2PM2XM2`M2hM2pM2xM2M2M2M2M2M2M2M2M2M2M2M2M2M2M2M2M2N2N2N2N2 N2`,0,,,,,,,,,,,Ј,,`~,|,`v,p,i,0d,d,c,Z,W,S,`S,S,R,R,R,`R,0R,R,Q,N,XN,(N,M,M,M,hM,(M,L,L,P.XL,L,K,K,hK,(K,HI,H,8H, F,0E,@D,C,A,A,8$,$,#,#,,,,h,++x+H++h++H+++x++h+8+++++x+(+++ػ+x+(++xQ.+H+++++X+(++Ȭ++H+++++X++++h+8+++x+H++++x+8+++x+8++ئ++x+H++X+(++h+X+++8+++H++++X+(++X++؋++x+p+xp+Hp+p+o+o+o+Xo+(o+n+n+n+hn+8n+n+m+ B+A+@=+=+<+<+P<+<+`;+0;+;++ +0***pb*@b*b*a*a*a*`*@_*^*^*]*\*P*`P*0P*P*O*0O*O*N*N*PN*?*:*P:* 3*.*p.*)*`#**`***)))))@))))0)))`)))@))))p)@))`)0))))P))))`)0))))x)8)8))؍))y)Py) y)px)@x)x)Pw) w)v)u)u)t) >)=)p;)@%)$)")")`")))P))P) ))))0))`))P)((0((((P(w(pg(@Q(J(2(p,(0'(%(%('''$X$($$$$h$8$$$$x$H$$$$$X$($$$$h$8$$$$x$H$$$$$X$($$Ⱦ$$h$8$$ؽ$$x$H$$$$$X$($$Ȼ$$h$8$$غ$$x$H$$$$$X$($$ȸ$$h$8$$ط$$x$H$$$$$X$($$ȵ$$h$8$$ش$$x$H$$$$$X$($$Ȳ$$h$8$$ر$$x$H$$ؤ$أ$X$$x$($~$h~$8~$}$X}$|$x|$H|$|${${${$X{$({$y$Xv$(v$Hu$xk$j$i$i$i$Xi$Xh$Hg$f$f$e$e$(e$d$c$c$c$a$^$^$XJ$H$H$XG$G$E$(D$A$hA$8$H3$3$2$2$2$X2$(2$1$1$1$h1$81$1$0$0$x0$H0$0$/$/$/$X/$(/$.$.$.$h.$8.$.$-$-$x-$H-$@'h'm'B''x&'&H& &&{&(a&0F&*&&%%%0%g%A%%$$-$,$,$x,$H,$+$+$+$X+$*$*$*$x)$8)$)$($H($($'$'$('$&$H&$&$8%$%$$$X$$($$#$#$#$8#$#$"$"$("$!$!$!$h!$8!$!$ $ $x $H $ $$$$X$($$$$h$8$$$$x$H$$$$$X$($$$$h$8$$$$X$8$$$x$H$$$$$$8$$x$H$$$$$($$$x$H$$$$$$X$($$$$($X $ $$##X####x#H###H###X###H##8#h#8##ا##x#H#####Ȝ#j#j#(d#b#Hb#b#H`#Z#H#pH#@H#F#E#,#########P#P#""P"`"""""@"H""""h"""""h"("""""x.X"("""ȏ""h""Ȏ"x"""X"("y"y"Xy"(y"x"x"hx"x"w"w"w"Xw"(w"v"(v"a"`"`"X`"_"_"h_"_"^"h^"8^"^"]"(U"xT"HT"P"P"pP"M"F"7"'""!0!P!!! !!`!!0!!`!!!!`!0!!!p!!!p!!P! !! !!`!!!!!!!@!!!!!!!!p! !!!`!!!p!н!!0!!`! !!!!`!0!!з!!p!@!!@!!!!P!!!`!0!!Ш!!p!@!!!! !!!!Ь!!p!0!!0!!@!!!!P! !!!!`!0!!К!p!!! !!!!p!@!!!!!!!@!!}!{!{!z!@z!z!|!|!p|!0s!Pr!q!pq!q!p!i!h!@h!g!g!Pg!i!PZ!0! Z!Y!Y!Y!`Y! X!W!W!pW! W!0K!K! I!H!pH!G!F!A!pA!@!`@!0@!?!?!P?! ?!>! >!=!@2!lm@mmmmnHnxnnoHoo2!,!,!`+!p*! *!)!)! )!(!(!!!!@!!!!! 0 а N L `L H G `G G F F `F 0F E E D D D PC B PB A @ P> P= 0< : 9 9 09 8 8 7 p7 6 @6 3 P3 3 p2 @2 2 1 01 0 p0 0 / `/ / . - - - @- P+ + * * ) ) P) ( ( `( ( & % % % @% $ $   H   h (     h 8  H    h 8 (X(h8X(HXHhh8h8h.xHxh8.8k8H(X(pPИ  Жaa1pj.X=.PH[[H.h--_ k-(c-0l``0pxp(:-( -hyX,(,X{@@,X,Ь,V2(N2N2m2m2m2m2m2m2m2m2m20^2n2n2n2n2 n2(n2(m2m2m20n2m2m2m2m28n2n2@n2Hn2Pn2Xn2`n2c2#c2%Hj2*Xj2.hj2:pj2<j2@j2Bj2cj2Dj2dj2Ej2ej2fj2gk2Hk2h k2I0k2i8k2kHk2LXk2lhk2Nxk2nk2ok2Pk2pk2qk2rk2Sk2sk2tk2Ul2ul2V l2v0l2w8l2x@l2YPl2y`l2\pl2]l2~l2@gAP BCCLQ AA jI A BB A C A @haA&%B$#B"!C C A $X A B{ A A` BD CCCGAAACA`  SAAA H AABAA ^AAAB hDP CDUB A DEC{ AAAA `BACP AAA֗B4<A Bg C C A [hAP BCBp A IDGbFAP A<L@TABC F Cl A HXABB B C DH HA TحD0CR A DIDC0v AA B A 40HAP DGc A OPBThD0CR A DIDC0v AA B A \ACC CJ KKA DD BHQ U AAHA FIAHA HDKHBA HKS HAA M AAHAA A AHA@BDFfAAA@DA@AAA@CDA@@Ap B BF Cg A hTABBDKL HE  A H@ HA aHlHAHHAH L` BD DETPXAA`  _AEC`  ]D8 ACBB F ` A vIA kJA p A P A Z A }T |AA@?B<;H>=:98765H4I3J2K1 JKHIA p@TlYAA&%B$#C"!B LBH IHAJA  AA o IHuHIrIHSJVIHBJLHIJ^HIJDIHHIVHIBHI|HIAIHcHIBIHcIHf IHA ^HIdIHoHIQHIHIHI~HIhHIA IHB AIHJHIAIHNHIA IHB AIHFHIJA IHAJB AIHAJZHIA IHB AIHPIHAJAJAIHDP A$#B D"!CB  A  0A.-C,+C('D*)J&%$#d A xH"H\H"DH}H" HA  HA \HIH"v HA [H\H"iHMH"PHCH"HMH"SHTH"JHBH"HMH"KHAH"UHCH",ĴhA DN A E0A@BEO A \(,AP CBCFC A GAP  A LlL`AP BDDCc A ] A    8( (A0DDh A U A (dx A0BDr4|A"!CBE C[HdHDHiHiHLHLA "!HKH[HRHvHoH_HfHhHvHcHXHQHDHYHHHHHHMHFHJHB HA DHKHGHO HA HHBHiH` HA VHYHPHGHL8`A` B CCBE A h @AP CBDbAAP pAP EG~ A @T"A0BDg B I A R A @D$A0BDg B I A R A 0ܸ% A Ch A F A NL&hA0Dh A J A D A W A j A @`(A0BBA A R A W A @8* A@BBI A Aj AA H A +0+|A0BDA A U|0T,PA` C BCFGcBBAAAA`  CCIAAA$- ĺ - lغ-AB B BH BmOA kCCAH.4AKh.4AK.4AK.\FȻ/lC FO/pC FPD0O FP(0(<1A0DCs A (h\2A0DCs A (83A0DCs A 84A0BDZ A F A 84ApA B BDB A 88|7 ApA B BDB A dtP:AA B B DCh A B A hGFBAFA@ܽ>AA B BD BC A 0 CAA B C Cm A TEhAp B CB CJVBDAp  B BABA LDB @IABBC B C U A $hL@8lLA BFD A 0|`A0DE A Z A `aAB B B ~ A ya\ANG A DEABAeHA@O A 4fHe\e`JG|0f fDTfDf|fpf$f$ f f4f ,HfpA BE A H A xff AFf AFf f0FEf AF f 4f HfhA BQ A ,l0gA B] A D A lg@AP DBCCc AAAA EAADAP LAAA@ hD0Cd A H A D@P,iA@DBC_ AAA EADi$idA0BBSiDAJ A $jjj ,jA BP A Pk$AG8pkB BZ A BB ,kA0BB] A (l|A0BCUCTl,HltA BS A ELlPMD llHA BN(lHA BG A F<mA` CCC klJ A IDnAp BCD F Hd HA DpHA0DL4h,pLAP DBQr AA (DrPA0CG A G|hrBp C C CBY A HPACp  [ A iPN A Lt`tttDMHtA0BI A BzHA0g A tvLA EJ v8A BI4 v$A@BC_ AA J AA <XwC@BBCY A E8xA0BCO A M A $xHAH A G$xhAM A E A $x,DD$DxTAI A E A l(y`AL A $hyTAI A E A LyA@BM A ABVAAA@D A ,(zA0BCV A (4zHB BI A B4`zB0BDS CB HC,${|A0BK A O$t{`A BN A {AD {<A0BK(4{pA0BES`|`AL A D|@HG$d|hAM A E A $|hAM A E A |HJE },$(}HJEDP}0Xl}8l}8}0,}\AI A E A E<~@A@CCk A S A (dA0BBS0<\PFDP|AP BCBa A H A  dAP BBBIvD\FAP I BA I BA DCF BA ($<A BF A D$PLA BK A (x$HA BG A F,@hA0BK A JxDtA0BBr A Y A P A 80ăTA0BB_ A m A $lA0BT A d`A@BDC AAA EBA@E AAA $xTAI A E A ,$\AI A E A E$T؆TAI A E A ,|\AI C D A D,8TAI A D A D`x0ćXMR A HLV A $$A@BV A $LXA BX A tLA BO0 A B[ A G A $hAM A E A ȊTA BQ(`A0BDNB<D0ApA B CCh A J A TApA B CCBm A q A L A ,A BG$dA0BBS(4<xAP BDBw A 8t A0CQ AA I AA AE4tA@BBAT AAA HAP BBBU A L A G A L\AP BCIUIAP MB`|AQ A HA0DDZCA0H AA A\TA0BWSAA0FA0AFA0AxlAO A dA C\ ȓDA BMG(A0BB\@,HAp B CD CB] A p(DA` B CVQLA`  AF<`AB C C B A T ,A0BCc AA ADA0F AA Q8dAP BBXQK A EBB0A BV A D A D0|C DQ A B A B4A$ 4pA0CT A H|PA0CN A l8A0BJ ,A DE(ȞA@DCg A $A$#D"a A 4B BGp,@B@BBEYD A KA@VB@Bܠ\PF XA0CP A 0P\B0BH A CC0@|A0BBO A T A Fh\(A@DIC[ACA@C AAA EABIA`A@DBCSACA@EABKAA@,8A@CBj A j A p|4A@Cb A FOl 4B BG0 MUFB A AdACB D B CFHIl HIA Kg]CY A A| (pA BF A Q4X$A@BBBc A (HDA BG A E( dDA BG A E$LA&%C$#f A (tDA BG A E4$Ap E C CL A l(`A@BD] A ,̮A@BC_ A $H<A0Bg A $phA0BU A 4A('HA0D^ A EBHJAHAA0GBHDL(\<@TPhAGC XH I J YIHAJG A z I H D BI H IJ nHIJHH I J XJJIHAA H I J pHIJHH I J aHIJ[H I J DHIJJH I J DJQIHAH I J HJAIHHI H BJ AJdظxԸи$ܸAP D\ A $LAP D] A $AP D\ A L,AP DBWbOAP L A NFAF<hĻAp C B BC A \Ap B D nDTTd A LjB{ A dA,PA@BCD A TLAp B B Cv A AHt HA IHBHJH^HFHGH4`A` B CE~ A $$A@Ci A ,@tThhl|`TH< 8 4 0$0 DXl ( (4@(4pA DP A E $x4A CH(HpA DP A E t4A CH $A$#D"a A $XA&%C$#f A   $ 8L`t $A BE,A0BG  8A0BBK A q A T(h$|A0C] A $A0CW A L C` BDE BCi A E0D Xl4AK$ L HAP4D$hP$8A Df A $`lA Dk A <0$(<$P@A Dz A xADAD0DXl|@pA0BBa A E A D A `Hh(<Pdxxl` \HA@BBB] A S A z A 4xA0CEOCA0,LAP CBA A (|hB0CGB0$T`A BR A hABCE ZH PHA A BH JHFH BHH YHGH EHBH @<ACCHAAm BABA 8A0F A } A 0LAQ`PARdAP BBBKQR A NRDEG A H B Fd\xA@BBAs AAA Q AAA GQA@@dXABD B a uI A a IB xA Cd A @pABHGIFEDC>=H=HGH<ZL ABA?@B FABA?@YACBA@?xAABA?@A` B BBELEjEA`  FCA`  _A`  C CA B A GED A CFADA@ A('C"!B&%F$#  A 04A DT A ^ A , @|A DYdPxD8,A0Dg A xZ|DABCJ DM AAA u AA CBFA ,hAB B Z A tL A` BD ABARAAABA`  ] AABAA $t A BL A 8 @L@ 4` xAP BCDJ A x,PABEF S aB nNA A A GD DA L1A21B*)C0/D.-F,+('H&I% HIA dC>AANMBDCHLKJIYGHAEFAIAHBj J@A  J@A YJ@BJrJ@wJ_J@GJb J@D pAAIHLALKJIHGFEDCNMHBIA J@A THIAGHAEFAIAHB^ J@D  J@A @J@EJC J@A J J@A G J@A B J@G C J@A DJ@KHIJAGHAEFAIAHBAJ@4ABDB q A 8XAp B BB CP A (ACDf A @(dpAE D D ] A <ltA` G EBx A @ȉA` D BE A LT,ABI A L@4,ABI A L|ABI A LD|ABI A 80tAP DBEK A LlبABI A LXABI A L  ABI A L\ ABI A L ABIZ A LABIZ A LL ABIj A L ABIj A L ABI A L<(@ABI A L),ABIG A L:ABI, A ,LABDGCCAnAAAIAKCAA" AAAA VAAAAxS`lSAIUHh HA A A IA4tdB ECDn A 4eAB D B d A PfxA` B BBDB A E A 48jA@BBBd A DpjAC C FB BR A @\n\AB C FB C^ A 8xs\A@BCHI HIA 08wAC C  A l|hV8P|AP DBBKs AA (}A0DB\ A $P~ A"!D v A <8AP DBBK} AA 4TA@DMBw AAA 8PAP EMB| AAA 0|A@DDP A 0  Fؐ tE<ȑ<vE\Pv F|8 E0p 0  0hpx (08@PX`hpx (08@HPX`hpxV2V2V2V2V2Pw4V2pS8R8P8,8,8%8#8"888P8(8`8X88x88 80 8 8p 88(8077711ȴ1д1ش1111111 1(181H1P1X1k4`1p11111111ȵ1HJ2е1ص111111(10181@1H1X1h1p1x1111111ȶ1ض111111111ȗ11 1(101H1`11h1x11111w411ȷ12з1ط1111101H1p1`13P1X1`1h1p1x1111111и1ظ1111111 1(10181@1H1P1X1`1p111111111й1ع11111111 10181@1H1P1`1p1x1111111111к11111111(1@1H1P1X1`1h1p1111111Ȼ1л111111 1(10181@1`2H1P1X1`1h1x111111ȼ1ؼ11111111(10181H1X1`1h1p1x11111111Ƚ1111111 1(10181@1H1X1h1p1x111111Ⱦ1о1ؾ111111111 1(10181@1H1X1h1p1x111111ȿ1п1ؿ11111111(10181@1H1P1X1`1h1p1x1111111111111111 101@1X1p1111111111111111H1X1 10181@1H1X1h11111111111111111 1(10181@1H1P1X1`1h1p1x1111111111111111111 1(10181@1H1P1X1h1x11111111111111111 1(10181H1X1h1x11111111111111 181P1X1`1h1p1x115211111111111111111(181@1H1X1h1p1x1111111111111111(10181@1H1X1`1h1p11111111111(181P1`1p1111111111111111111 101@1H1P1`1p1x11111111111111111(10181@1H1X1h1p1x1111111111111111111 1(181H1P1X1`1h1p1x1111111111111111111 1(10181@1H1X1h1p1x11111111111111111 10AP DDR A Dq A [ A MA`*tAP CE A CF BA AA[ AAA s AAA A AAA 0`+lA` B CCx A `+8 TA@BXDI A \\AA@JEFB A H A D D B D B0+, A` BCC m A D,, LA` D C^ A CKJJ A ABCBt,(,A@BCc A H,@dA0BBc A Y A M A D A 0-\A D_ A | C (4-8A BF A C `-DB BK(-8A BF A C -4A0BI$-LA BI A -@4A0BI4 .TA DBHa HA z HD (X.8A BF A CX.AB Q OH A d J^ AH A MH WHIH DHyH LHP AH .|4F El/`B0DZ A OHYHAA0EHAHA0Q A _HFHDHp/4F E /0A0BH,/|A@BCf A H/AP CCz A TTZCY A A A IDH00l"dA0BBc A Y A M A D A |0#TA CM A 40#LAP DCD~ A ,0%AP BCr A 1&@A0BLP,1& BBCBCFHSAdBA}AMHABH_HASP CE P BN G^AAp AA KPA AD D BD gTDAX2$1lA` B BGCkAHA`  RABA(2828A BF A CT3D2Ap D D BCwVJ A pKIGCWKDA<`3l5AB B D Bm A 37HA CM 37LA CN$38A0Bi A <48A0BBYCA0FBFDP4d9AP BBQpI A [eFCCMA4;0Ap D BD CDbIAAAAAp  HX AAAAAA LEAA CAAAA DC AAh5,>jD5>(Bp B DE Cl A R_U A Z A ` A WmBS A GgWY]ABp  K A H A N A NMRKBQtEK A QFY A EB B B 6L(A BL A \6MAp B D T A ICA AAA ^AAA ,7Q@A0BK$P7QA D] A (x7R\A0BO A C$7HRA D] A 7R(7R\A0BO A C0 8RA@BCD[ A (@8SA@CBG A 4l80UA0BB\ A J A 08UA C] A D A 08pA0E\ B \ A K A XH>q$AP BDMm A RVAP XA A C0>sAP BCBy A (>dwLA@DBm A D?xAp B CB s A BMNIHNA,L?(zA0DCX B @|?z|Ap EC D y A h?{tA@BBd A DdQ A GA@B A BECOM<,@A0EBc B D A K<l@A0EBc B D A K4@XA` BG n A x@AP BBGPd AA VHaAHDAP DHKHiFKHCHLDx`A AP BBGPRHbAHDAP AHMHx A NHAHFCHCHQDXHA0pA` B BHOAAH~BAHDA`  H`HFAAHIHDHdBAB E J^HKHad` A mHEHELBHAHQNFHFHMRA AHA EAHAHEHBA` BBH Pg AA vHbAHEA`  IHKHBHEHEFKHCHVDPCTAP BBERfDAP xFLPCXAP BBERgDAP wFMX4D A0BdHLHDA0HAHCA0HJHgHAH<DA0BKUCA0OFE<DdA0BKUCA0OFE<E<A0BKUCA0OFE<PEA0BKUCA0OFE<EA0BKUCA0OFEPEģ8A@BKAcBBA@FFAE8$FAP BCCr A <`FA0BKNCA0CFB<FtA0BKNCA0CFB4FdAP CCC{ A xG$A` BBG PAvAEA`  DFAMDPGAP BDIqDAP pFFPG\A@BKARBBA@FFAEh=B<;C:9BH6 HA d4A@BCESAA@DA@I AA Ph|@A@BBBY A E A J A Dh A0BBW A D A I A d@4A@BCESAA@DA@I AA DlDA0BBX A D A L A P@A@BBBY A E A J A pLA@BBIND A D A IA@F A G A K A G|pAP BCEEODAAP DAP LAAP H A G A RD pAABC CC B F A PTAABBHIDBDB HIA $dXAE F A E hП\A@BEjC A HA@F AA K AA t AA P<pAp B E Dh A g A XC@BF] A EPGC@Q A G A I<<A0BO^C A L A G(,$ AA*)B&%B('C$#K h!"CIHaBIHLA('&%$#"! *)HIeJBIHBJA"!HIJ BIHB ~HIC"!HIGHIP"!HIMJ\JCAIHB"!HIJOHIJH"!HIJWJEJIJJAIHA"!HIJsJEAIHB!"AIHAJTX%XB@BJAsACC@G AA BA&XNGТ,'hAM A <t'A NJAA FA DP0'hB@BDB[ A fB@,(TAP BBx A t+$AP BDzGI A F\ A ESIQDDH A B A I A ABl,/A` B Ce A GCG AA BJWWCA AA EAPh3A"!BBC BEHIDm BHIA @6HA BBCBB A (4:tA$#CB"!DB HHIPEGPMHIA"! $#HInHAJUJHOH`QaJZJvGEAJGJNJEJWJA AJA CJTJGJEJEJEJDJ\JOJDUDJDJMJGJNJHJNAAJAJC JA AJl`TGlA@CR A AFD A CP DA EPBDA@CdЦTHA@BCb A Z A N A K A J A J<8IABCD~ A ,x|MAP BCw A 4N8AP BCc A 4PAP BBBJ A < 0>HA BMT>h>\|>4,AA|{BvuFtsGyzCwxBqrCIoHpAAAIHIAzyxwvutsrq|{HpIog AAAIHA `HIDzyxwrqHpIoKmJnaKJKmJnU KJA EJKKKmJnVKJhJnKmMJKFJnKmFJKKmJnnKJJnKmIKJJnKmiJK|JnKmBJKFHIAyzAwxAqrAIoHpAKmJnAJKfJnKmSJK`ܲi,BB D C BCDHIf HIA HI@Tn4A F(`lntA BK D G nHA BN0nA@BBFVC@oh ohA BK A o 0o DoXolooDoAP BCEDS A NPܴ0pA` C CCC A X A 0q LDqA@BBC_ A E A F@0rAB B D BX A صvH0wA0DC[CA0J AA AT8wPA0BU A L A CH A A A P AA D C xtA$yPA CJ A \ж=B<;C:9P78UI A J78Q56_AY87TO87EA8765AAB78A56<,AB C C s A $8tA BV A `,A CFDA0BR_AA0HbPMCBCHABDS A h A A A Z ro A A A  A A kAAx rE FP HC Lk A A A a CAAJ Fa ZM IK WS Gd A A A Y A A J B C B MA A GHTA@BBBZ A M A J A ,dXA@BDa A 0A.-B,+C*)H('L%&mZ A S%&NQ %&A$L s&%WX&%WH&%B $PAA K A T B EG&%D B DA%&A$ ,`#0A BH Pl#A0C\ A t#(A BFX# A,+B&%C('D*)E$#"!FH IJK JKHIA (-g -  -@4-A.-E,+E*)('B&%B$#} A xd/`/T/0H/AP BE\ A (5 A@BBc A h@4A BI$8|@A D\ A (`AlA BL A JHA(AHPQDQ8Q ,QPA@Q A < XQXA` BD CCH0LpRxA DQ A D A 8RA@BBU A DuFLA0TLAQ$`TA BQ A T@A CK(TxABBBH ^ AA K AH A BBH HCBAA EH DHDH HAAH AHDAH \@ABBHIL[JTJz HIA   JB DJB JB HJEJDJM JC FJo JA BJTJqJ^JAJtPntAP CB_NXAD AAA CQCBgAAAAAP CAGAGA A CAEBAVCCAACAA@HrAI 9 A zACBHIBJf JHIA A A A A AAACJHIA D FA A A AP0ԁA0BH{AA0BV AA {A,A0DMR AA 0A0BW A B A @AG$ DNA CY A 04 A@DEa A 0hA@DEb A 4@LAP DECk A 0XA@DCKV BA 04A@DCKg BA @<Ap E B EW[ AA 4AP DECi A \|DA` F CnWJ A [ A R A ldAF B KBmHVHFAA HDHCH$A0D] A <@A@DBl A G A S8 A@Eh B J A <,$AP DGBCr B ,lhA BJ A K<A@BBBV A G4`A DQFA JA @ABB C B B{ A $XAR A H A 4,E@BCCK A TAp BI C Ae CBA l CBA |$$X`A0BBRDL(I0BFiBA0A BA HpT0GD0GD @A BH A ( DA BH A D 8 <A BH A \(Ap BE AAE pAAABAp  IAAABAp  ] AAAA N AAAA X AAAA DAD A AA40GD8T xC BKB G A C$\A0BT A AD(A0CH A HL$,HA BR A (T@BJBA(B BO A J0 A BQ A E A ,lA@BCz A (A@BBa A (<XdA` C DR A phAP BAZ BA AAc AA H AA C AA F AA HAgOAEAd$A` B CBBv A e A c A DxXA CF A $h,AF A B@A0BHx AA MDA04A BR A O A G4 A@CCT A 0D@dA@BBO A Cpxt<A` B CPDdADA`  NBAp AA $@ `A BH A 8x AP BBCBv A ,P\ HD BEB Dt hB` CB IS`Z A QEHA`  R A D$X 4A@CE$,hABB DLY H A W A nLA kH \HP H A \DH DHl A @ A _H YHo A c H A LH FHX A ` A jH DHq A T A t A y A  A rH JHGH EHAAH AHYH FHF H A FH DHAH JH^H CHT%Lh4&tAC C j GAPAADA AAI AAAA \D IO DAL*(AP CDj\KAP d``,E0BJ A HD0P A BmAA0CHD`8.B@BBC A aA@] A D(t2xA` B ABAA| BAAAA p4A` C BCC\DCAAA`  EAD AAA BiAAAAA` DAA 7DA0BM0( 8 AP BCCf A L\8AC B DB BCHIR HIA @=HA@BN0d=(A` B CCg A X>pB BV(><>l(P?|A CV A |X?<AM8x?A0BDFMA0sF ApA@AP DCEBfAAAAAP OCAAA@`CA@BFDFC@N BA |DAP BBL{AAP AAKJUAP TDCIT$`FlA@BT A E A Q A BG B BFK A 8|xH8A0CCu A G A ptIdA` B BDeCAAEA`  COLA,hK8A@BTFxABA@MAA@BGCDAA@NAAA@AALLA@EKIBBA@CBB@GA8,`MA0CH A l A Th,N4A0DU AA E AA ELBAA0JA A GA` OA0Cb A BMAA0Ae AA AEJA,$pPA0BBL A TTHQXA0D^ AA E AA ELBAA0JA A GAHR,FDPXRlA@CBa A \ A F A F A d tSA@BFDvAB A OA@BHJ AAA @T,A@BE_ BA I BA r BA pVA@BVA@AE A LW A L A AD A F^ A T A B D C A A A C(@XDA CF A E(lYDA CF A E0,YA0CZ A C A ,YA DQ A JXYA` C BDUKKA`  HRX<[xA V C x[AT B \LA0<\tA Dg C O A ]lA CR A ]A Ee B ,,^A0CCW A \_p_tAX B $t_xA DT B _lA CR A <`$A` BCD Be A 0b\A0Dk A K A 0P$dA Dj A F B dABB E X AHpBHJA HyHG AHLHE AH 0iA CQHH[A HTHQHnHGHGHiHGHFHCHaHIHaHLHWH<xA@BD~ A E A <zA0BKUCA0OFE H{A ET C l|A ET C 4|||A0DBp A N A \}A@BDBb A P A N A L A (\A` BBH Pg AA xHbAHEA`  IHWH@HEHEFaHCHDHDH@ЃA@BCBj A ] A ,,A@GC\d0A` DF Bs A F A g E Hĉ8A@CCBm A a A E A A` BC BJd_AA`  H`LA`  PHGGFS A Y A AlȎAp B CD B A h A [hi A [E_kJE B FCELDAp P@AQ A M HA sHnHkHa HB CHA HA g HA CH8tAP BF_ A @X AFDw A  A*)B$#D('&%B"!J [HfHTHKHKA('&%$#"! *)H| HC FHNHHGHrHCHRHEHYHCH_HAHP08AP BBx A qGG_ AA GYFAL WHfHQHHCHIHBHYHLA Hi HA `HBHXHAH$APoCHHTH`HEHa CHAA zHDHFHLHHEHHAAH8$AP BE_ A \`TxAEI G {T bI A M QA R0lA CN A W A C8@A0CCO A q A 0HHFP$ AB CC c  CA T_ KH A P Ot SC A E CE wH sb KD GU GE A D KJ A"!D <$x8A0Bh A BfHk] A JU4dpA0CC] A K A |DAB CG H\ HA Ab BHA AFY BHA G B <  A` CE E A P\ 8DAp BF E A e A , Ap BC NH TScAIAp  JHG URE A EOIAA AAADp\  ABE B PTHTHF A KH_Hx HA KHOHR HA D HA AHp $ACE B RUHTHI A JH\Hx HA KHNHR HA D HA AHpD HAC D CEbHSHq A S HA NH\Hy HA KHNHT HA AHp dAC D CEbHSHu A S HA JH\H| HA OHNHT HA AHP, AP EED]BBAP E $ l 4`A |b0 A@CHDBy HA  h! "`4 P"PA@BT "A`t " "$4 "DAP BEE A < $A@BCCg A S$$A BW A <8%h$P%A B[ A x<&LA CN0h&TA Bm A I A @(A0CQ A A\AA0C(H)\GEHB0@|)A B^ A p A ,t*A BZ A G A X+`\+PA@BXDH A \\AA@JEFB A H A D D B D B H-A D] A ,@-A BZ A O A <p\.Ap B C DB A 44A0BIX5O@BCBuD@UD@06\EP<7\K K,p|7B X A B A E7DGH$ 8PIF B B 48HA CM X8@0 8A@BCn A @T89A0BP A AX AA LA 9LB BM(:tA0DDB A (d;A@BCS A L@=AP BZ A B[B[_A A C B O B EEFDd?A E A 8@x:A>=B:9C<;B65b34L78JI1H2yHIhA<;:9876543>=H2I1VAIHRA8743H2I1HIMI1H2RIHA 34A E8743H2I1HID8743H2I1BIHZ87H2I1HIKA8743H2I1HIB87H2I1'HIC87H2I1FHIC87H2I1HIS8743H2I1DHIGH2I1F IHA D8743QHIP8743H2I1QHID8743H2I1^HIA78A34AI1H2$DxA"!D h A lyDA0BK$yA"!D k A $\zXAP BDN$zA0C\ A $zA"!D ^ A @0l{ AB C BB A t Ap BB D FjbVJAp  _ A gM^ A K A L A ` A DVKUAAHMXAWI A J A PHEOFK A O AA Ct A DO A VJeNc A DIK A M AA W A _ABAUA(<A CF A C,A@BB@ A ,TA0B\ A H A DA BX A K A J A I B XAp B C ICwADAp   AAA I AAA { AAA 0A DU A X A ($ȝ8A BF A CPԝ(dНDA CH A C$|A CW A D@,Ap D B JCCGAp  H AAA COAp  W AAA E AAA Q AAA FCt8 Ap B B HCCUAAHAp  AAA0$ث@A CW A T A ]0X0C BvB C A S BK0LM BN A OB L U BK,dA0BCg A 8LȰA0FR A O A  $XA Dq A D@BFCQACA@iB@E AAA I AAA L `A` D BMEJAC AAA CAAA`   AAAAA D^AGAAA`  HHA`JAXCNACAAAAA`  B A SEAAAXl@A BN A O A Q A E A G C J A XA0/B*)C,+F('N A B-.DA.-B%&hAS-.A%& $л<A0BKDHpD0CURTB0L A J,A0BBr A 8AP BBCCi A  4hA BI F ,4 xA0CS A <d HA0BEUCA0E A C A 4 G0BBGB0` 8LE@BBCQ A UA@S A 8@!$TA` D CCCn A 8|!@DA0BBg A T A (!L8A0BC| A ,!XA0CCt A "AB D B o A KJJAyBEMKFe A tJV A LGGAD A EFECFAAA "A0Cb A "A0B[ A 4#4A` B DBN A @#0T#A` B Ec A #\4F E@#tLAp B B CV]JAJ A A(#A@BCW A L$Ap B B LLhAAp  E h$44B CFX$H@AP CBh A LMU A L A RJC A D8$,A0BCr A o A <$%B0BBVB0K B 0d%4A@CEs A %pAB BS A A BL pDABA ] DABA U$&AB_ A D&<A0BK,h&,A@BDG A 8&AP BCh A : HA AHX&XAP BZ A B[BY\D A C B U A F A EEB A B A FD,0'A0CDe A ,`'A0CD_ A 'DA0DU A $'A CW A \'PAP BCGDf ACA J ACA ^CA,<(B BXB 8l((A0BC[ A O A 0(8A@CEt A @(A@CCB A O B ( ),A0BCm A 4L)A0BCr A Y A ()8A BF A C )A@Cu A ()8A BF A C *8A0BJh$*tA@BBI_CA@DMA@G AA (*$8A BF A C<*A Bj A E A 0*lA B` A p A X +ļ`AP BCAj ABA o ABA wE\OD A Bt|+ȿA,+B('B*)Q%&MJ A r%&ub&%C$BC D H$F A M A BE %&A$A K%&A$(+0A@BCY A ,ABFHIL B r AJD F AJ AABJAHIA ^JB A L JwJD A A AJ,(|,,ABBP A ACC  AAA H rHAAA AH AHI H B BH xT-AB B D BK[L A F[D B \ B L B UC A BDP-A0Eg A h A h A Y A T$.AP CCBE A _ A Q A \|.8AP BBBm AA VGQCAP .( .dA BU,/A0EBt A @D/hA` BB BCCY A </ |Ap BB CC v A /L8A` B EBm A FCrDAA`  SDO A Q A CP`0Ap C BBC A U A 0PPA0BM B 0|`A@BR A 0@A0BJ< 1Ap B CD B] A `1L ABGKvIHAJQHIJU A yIHAJIHAJHIJJJAIHHIJJHIJkHIJGHIJMHIJDHIJJHIJEHIJFHIJBHIJFHIJjHIJIHAJAHIJ\2p A65B21P430/.-,+ A  I)H*SHIIH*I)AHIIH*I)|HIbH*I)RHIOH*I) IHA HIBH*I)NHIFH*I)[HIKH*I)@HIAI)H*L3?(A` BDBD v A z A Ph3\BxC0CBU A c A OA0D3DAP BCBQaL ABA  A 44XLA@BCCn A $<4MA D] A Hd4@NA` B BBHAMAc A BA$4OA@Fo@4dPADDD ) A d5aA` D BkBjAM A a A pMGFHA(5f<A@BCo A 5$gAB C E ILA HGAAAHJA QDBH\ AAAHB W AAAHA U AAAHB 0h6i(A By A I A (6kA GL C K6tk $6pkLA0BO7{$7{lA0CV@7{ 4T7{A0BDY A G,7P|A0EBl A $7}A@BD,7~ABC\ A 88(AH48@(AHT8H$h8L8AI A B8\(8`tA0BDU8$AG8LAp D C BCL A H A JF\[ECJ A KD A 8t9A@BCc A D 9\A CJ A 9@\A CJ A ,9|A CQ A N A (:4A0BI,L:ACDCCBAB@ A |:Ȍ(A BF4:̌AP EDCi A ,:`A BL A G(;̍8A:9C87 A 04;ؒA BP A O A 4h;DAP CBCQ A ;AC8;A@BCY A H0;A GO A K A 00<A@DC A d<lA DU8<\<A` CF BO A H<`xAB Z A CBm AA BFAh=pAP DBAB\ARAP CI B N A d|=AB B BD IHFIHY A HICHILIH(= A87E65 A 4>4A87K6543210 A H>A Bh>LA E>XA B4> Ap B B D_ A D>T!ABfeFdcbaF`_^]\[HZo HA ,(?A43I210/{ A X?TA B$t?lA DU4?8TAP CCCW A P?XpA@BCCy A E A I A ((@tA0EB` A 8T@A` F Dv A 8@A` D BDq A 4@X A0BDY A R A A! A!@A0BJ A@BBCn A l@ACCG OCOA qKFD H` lIH4 JDP BDCBNDP 0|KA@BBBx A @M+A BDQAQt B QVBAAIA CZMOhBx_HDIAAAABE^RKkI AAAA Ck@DCkCG AAAA \Bd BAAA dkIqHAAAFs I BRDIAAAATRR[QBSB H CIBAAAJBYK AAA B I B AAA K I BIIHP|vA0EOQDA0MA0CD0wxA PNC A OO A I BA J B B `x0A0BHlxA` D MFmyAAE A BFC ABA FAAAAAAAA0zHPEB A K A 4А{H BOD B8d{A0CEb BB DC A D|0G@\(|K BVG DC 0|A@BC\ A 0ԑH~|BJCH A A B p~dA@BZ A WDPAAA@YCEa BBA CAA| Fh0AP EcB\N A ] A JAP g AA F AA T(PA0DDa A 0@ XA@CD{ A t0 <40`A@Db A Г܆LA` B Bc A b A AEAkO A HA`  P AAA BAABAAE A DSAAA`A` BI BDUAAA AAGA`  NH B AAB h AAA Y AAA O AAA i AAB S AAA LPAA B C ^ A GKSEMA hA0BV ĕHDA CL lhA DT lA` B FEIAmUA`  BFA`  S AAA D AAA AAAIAAAACAAA`  _ AAAA X AAAAA AAA@F D_ A x A VA (XėA@BDm A 8A` B EN A 4ԛlA@BBBm A h hA@BDw A O A R A i A M`dAP BQCEYAADAP `EȘ4\G,$,8 LL0A0CEAC A BA0JB0A@BBB{ A LЙT(A@EJA^ACA@SB ,lV@8A0BBY A J A F|6A&%B$#Rx!"A E !"D C H!"A ]D"!  ACA B!"A ?E"! [E!"B T D@BEe A CA@EPxXsAA`_B^]B\[BZYBXWCVUBHTISL HIA L̛V<A` DT AA B AeAG A A ATW,AP JUBKADAP TB,tpXA0E3 A X]L]̜H]D]@]3AAnmBdcElkSjihgfe< A IaHb]IHwHbIaKIHHbIaKIHSHbIaGHIZIaHbQIHOHbIacHIPHbIaJ IHA + IHB eHID IaHbA oHbIahHIAIaHbP IHA lHIHbIaHHI IaHbA KHbIaGHICIaHbRHIPIaHbUIH0 @hACDCB:9NBA@?>=<;I7H8VJ6PHIJI7H8aIHI7H8QHIII7H8AJ6IHAJN A MH8I7MJ6EHIJBH8I7J6`JHIeH8I7DIHDH8I7a J6K a J6K y J6N ZIHmI7H8kIHLH8I7]HIGH8I7EHItH8I7EHIBH8I7HIBH8I7 IHA C IHA kIHDH8I7J6A IHAJA F IHAJA JHIJBH8I7 IHA BIHJH8I7BIHCH8I7^ J6J ]HIBH8I7A J6H d IHA _IHCH8I7qHIBH8I7AJ6HHIJBH8I7c J6H  J6L pHICH8I7@ J6H A J6H eHIDH8I7` J6A v J6J I J6H A J6H P J6A \ J6N A J6H D J6H  J6H e J6H B J6H y J6H  J6H l J6H A J6H F J6A ` J6A RHIFI7H8AJ6AJI J6A X J6A Y J6H HJ6GHIJAI7H8CJ6GJH IHA A IHA D J6I ^HIAI7H8AJ6AJ\ J6A A J6H X IHA A J6H I J6A d J6K @ J6A E J6H c J6H W J6K T IHA A J6H DJ6]JDJ6CJb J6K C J6H z J6A g J6H  IHA w J6H D IHA UHIBH8I7 J6A  J6L m J6L C J6H C J6P f J6A n J6L i J6L A J6H  J6H D J6H [ J6H A J6H ] J6M Z J6L Y J6L P J6H D J6H D J6H ^ J6H DJ6HJH@,gAA$#BC"!DG H HA [l%A ABCDCLUHHE A `H HA HFHHQHJ HA h HA KHCHmHCHmHAH 0|lA0DT A TȀx AABCDBoAARfJb A p A  A E A  A I A Q A jA A hAANMBDCBLKBJICHGBFEx A  HBK \ HBK ] HBK fHBKH HBK HBRHQ HBM A HBH \ HBL e HBL _HBZHW HBK @HBfHDHB]Hm HBK [ HBK HHBHHj HBK  HBH 6 HBH L HBH  HBH f HBH a HBH g HBH AHB]HHB\HZ HBK LHBAHB HBH m HBN @ HBH C HBI c HBL B HBH L HBH r HBL X HBH LHBEHN HBH ] HBH [HBGHf HBK A HBH PHBSHS HBH HBIHb HBJ e HBH A HBH AHBlHS HBH cHBKHA HBI CHBGHDHBcHA HBI EHBFHA HBH D HBH G HBA F HBA H HBH [HB HA c HA z HA HCHBHHM HBA HHBCHA HBH N HBD A HBH A HBG JHB\HAHBKHCHBCHA HBH I HBA D HBH S HBA j HBA MHBHZ HBA T HBA BHBCHDHBHHCHBCHKHBL HA @Ȧ`AB B D Dv A AABBCCHsCNHAHM B oVjDzHAABJ S A A HA BT AHEAHG AA CAA HAAHL AA qAB Hr AAAHA HBHU AB h HAAHNAA A AHAHA CHE AAAHA 8l4AP BFr A KlLLAHܨhXA,+D&%D*)B('D$#"!CH [ HA H(tA@BEW B F A M A FLt AP DCQ\GAP ,ĩA B\ A E4HB0D]G0H@,ABCDC i A ,p$A@DDX A HlAB CHCJ\++FNHt<P6:kttJ<T}BHPQBGAANo group ending character '%c' found in templatepack/unpack repeat count overflowsSiIlLqQjJfFdDpP(sSiIlLxXnNvV@.Invalid type ',' in %s()-group starts with a count in %sToo deeply nested ()-groups in %s'%c' allowed only after types %s in %sCan't use both '<' and '>' after type '%c' in %sCan't use '%c' in a group with different byte-order in %sDuplicate modifier '%c' after '%c' in %sMalformed integer in [] in %s'/' does not take a repeat count in %sWithin []-length '*' not allowed in %sInvalid type '%c' in %sWithin []-length '%c' not allowed in %s'X' outside of string in %spanic: marks beyond string end, m=%p, marks=%p, level=%dCannot compress %g in packCannot pack %g with '%c'Malformed UTF-8 string in '%c' format in unpackCharacter in '%c' format wrapped in unpackCharacter(s) in '%c' format wrapped in %sInvalid type '%c' in unpack'@' outside of string in unpack'@' outside of string with malformed UTF-8 in unpackMalformed UTF-8 string in unpack'X' outside of string in unpack'x' outside of string in unpack'/' must follow a numeric type in unpackU0 mode on a byte string%.*luUnterminated compressed integer in unpack'P' must have an explicit size in unpackfFdDcCsSiIlLnNUWvVqQjJCount after length/code in unpacklength/code after end of string in unpackNegative '/' count in unpackCode missing after '/' in unpack0000000000@XxuOut of memory during pack()Code missing after '/' in packaAZInvalid type '%c' in pack'%%' may not be used in packMalformed UTF-8 string in pack'%c' outside of string in packpanic: predicted utf8 length not available, for '%c', aptr=%p end=%p cur=%p, fromlen=%zuCharacter in 'c' format wrapped in packCharacter in 'C' format wrapped in packCharacter in 'W' format wrapped in packCannot compress negative numbers in packCannot compress integer in packCan only compress unsigned integers in packAttempt to pack pointer to temporary valueField too wide in 'u' format in packpanic: string is shorter than advertised, aptr=%p, aend=%p, buffer=%p, todo=%zd$$Undefined sort subroutine "%-p" calledUndefined subroutine in sort/proc/self/exeCharacter following "\c" must be printable ASCIIUse "%c" instead of "\c{""\c%c" is more clearly written simply as "%s"\x{%02x}Non- character terminates \%c early. Resolved as "\%c%loUse of code point %s%.*s is not allowed; the permissible max is %sMissing braces on \o{}Empty \o{}Non-octal characterMissing right brace on \o{}Empty \xUse \x{...} for more than two hex charactersNon-hex characterEmpty \x{}Missing right brace on \x{}mn;Zx0N<[y1O0oUnC,UTCDynaLoaderperl_name, symref, filename="$Package"libhandle, symbolname, ign_err=0libreffilename, flags=0DynaLoader.cDynaLoader::dl_load_fileDynaLoader::dl_unload_fileDynaLoader::dl_find_symbolDynaLoader::dl_undef_symbolsDynaLoader::dl_install_xsubDynaLoader::dl_errorPERL_DL_NONLAZY;LBHHdBxxBBBBxBBC(ChPC@CChC0C0TDxDhDX$EPEpdEhEEx,FpF G@(G OAx???pI@ JX0Jl8J0L@LHLPLS4]`^^(_PoXo `o ho4oXqq@ss( tP`tt|(  !!X|"ئ"# 4#`X##h#0# $T$$$%d%x% %X <&h x& & & ('p`'X''(P\(p(0(X(()4)PX)))**@* + $+ P+ d+ x+`!+!+ "+",,@%\,%,P(,+(-0-h0-0-82 .2X.6.@7.98/9`/;/H;/=P0>x0W1W1h\\2_2Pa3et3hh3@lP4lt4m4@r4r5sP5 tt58t5t5(u5hu58w$6x86@z6{6}p7H78x8 (9x99 :p::H:x;l;;<<Е<<=@H==`==@=0>(T>x>ȝ>>X>О?@(?hh?ȣ??X@A(TA@AнA`ABtBCLC |CC0DDXEEhF8LF(F` DGG "pH&H+ I@,@I.|I.IX:TJ:pJ(>J?JPDhKQK0VKYLH^MbMpgNlxNlNmN0nNn O o$OpXOxqlOqO(rOrOrOrO(t P@u`PuP0vPwPXwPyQz`Q{Q|QP}Qh}RhR`R RR8 S@|SS@S؋S Tp4TXTlTT؎T(U4U`U8UUWHWWhX,XXTX|XXhYY,ZH\ZPZ(<[@p[x[[[P\`\\\P p] ] ]P ] 0^h D^h^h^^^___`aHpaaaa b"\b#b%b%bh&(c(c,cX-d.0dX0`d09 e90e:Texep>e?8fP@dfBf(CfhE4gGpgGgIgxKhh8LhxLhQhW iPZ|iH[i(\i\j](j8`j`jajc(kjlk@kklkmk n lXnLlnplpl@pm8rHmum xmxzDn|xnX}n`}nH~oLoPooЁoo@ pHpȂlpppp,qLqHqqr00r|rXrr$s Ts`xsth(uTu uuvX4v@\vvvwwxyxyPyy@yz,z8Xz0zzzh${X{h{{|p| |P}}}P}@~0~l~p~~8d8HLh$Ppȁ hx`X0 `(H؅P",$p&܆'(\)*܇+ -p.h/(0,1dx4647;=T>xB̋CE$HGhHpIJHLNOHPQ؎xR pShpTpUV0YtZ0]^4`hdfHj(hl`mtx{Hȃȋ0`t8h\PP p$`8080pؙ TXЛܜ|ԝ<PH#P&4)@**80d@1p2Р24,4Th56X667<8pX9@:Ԣ(KKDpLhNNԣO P8PdPx@QQФpRR `S8SLS`StSVW,XXX|YhYY@Z̦Z[[8\0H\DX\Xh\l\\]X]]ܧ^^H_0_D_X`(bHc,cX0dldx y$(y8xyLylz~X<dhH dHЬ0D`0DDh8@̳0(Pp!P'P (p`,./P1HP89̶?lp@HC DPHJK̸MQdSTUԹ@ee48gHHg\p q,s\spuXvĻ8yy$`|X0ļ8ؼ(<Phؽh $Pp Ⱦ`D p` 0`40`@hX0 d (d0  4|(  X#&<P*-@/@x2?D`EGHPJ8KxNPQ88TU(WHXHY[]8`Pf@i0j`k8(mp`n@p@qrHv(x0z{8||~x@ЉXdxh(H Tp0\hPX<p8HXx$8 L8xPXTX`88xx  P  <X |@xXH<!0x1P3H78;,W>g>(z(?@x?ȓH@Г\@@@(0AAAhBȵHB(BB(B C8C`CC0CDHDHhDXDDD DzRx ܬ,,8 @HA BNd@|0t <A BK$A Ba A 0A BQ A C A 48A BV A G A I A p$A0/E.j A X0AB B D B A BHYHOHQHmHKHAH Ե`A BP A @,A@DBB^ A G A dpA@DBC A BVAA@F A FDA A C(,8TfGL8PA@BBQ A ASGA@I,lpA BK A K@ApA B IgaJ A rNB A B@DhAP BDBm A T B WL$hAP QHJ\W A tEHAJF B A A J A G A AEAGIMAdBVHAEC|pAP BBDFe AAAA CAADAP [ AAAA @xA0BB\ A T A D A XXA@DH B AFNAAA@AACC 8A BJ,<|E DPB C,l`A BQ A B(8A Dg A BTXAP CBCe A u A c]UAZT A0BX A _ A jLhf A pHRRD|xFP CLHcACAP O\BAP I4|A0BC[ A J 0TE BMT0h$| A0B\p 4A BI$ tA BI A ( d AE(H dA@BB` A tt AM N A DDAAIA IA A A( pA0BCd$ lA0DDQ`@ <A` B BBCTV` A N A ]MLm_GG H 4, (A0CCB A 8A BJ $4A Dv A D 8@DX dDA0BV A AI AA K AA  dh XDA@FBBsAAA@DA@c AAA  4,4 xA CV A  A 8d A@BCCN A O \TA0DN A < dA@DCBb A i A   , 00@ L8T HpA@BBV A Bl A LA\ |\A` B BDvTKA`  AX A RJA< |A@CBt A r A L0dAABD^AuUtQAXAfFR AB GAVAHbHHqAAHd HD ^HkHMHQHEHxAAAHAHEHIHBAAHAABB C GIJA ^ QG A H h AA v AA fAA 8 AP BCDDw A H8AAB C D OLQVc A VGcAAA A BAA AA MAA <A BK\HA` D BHDE AAA zCA`  8TA GL AA CLA MA0DA BV A I A Q,A@Ed A  4A@CCCr A @DK DJ,dK CN A KD(A BM A B A Z A C A CHA@CwOAA@FFD ] B8(tA0BIPD A L A JA4d <A@BBBh A @(<B B` A QC E B ($ A0BC^ A 0  A@BBB` A <@!PA@BCZHO A {OGAC0#AP CCc A ,h$A BP A [$\ABCLBDBIHgAAAIHIAHIeJrAAAIHAJAHI~JiJDJtHIJAAAAIHAJ*0*AP CCf A 0H+A0BJ A SRI(0 ,xA BU A D8\X,@A@BCo A R A \- ACBCCH I QA JHB KD A A EB IAB S DBHIA oCA NAB W DBHIA [ AA SAA Dx5AP CEl A w A HL7tAP BBBBg A L A ( x9A@BBW A 89xA \ X4:XF DG(|h:hA0BDR:(BD0:4AP BFm A ;hEGK ;hEGKD8<\B S(dxA0BGmDA0AJ A FB0P A I A ,@A BP A P(p@A BX B E@@A@BDt A z A (DBA0BBtplChCdCPAp D BZ J^ A B AHvEHAAp  C AHD B HGFHAAp  C AHA GHAA fHO A L HFHD HB HAEA 0FA BH A O A WDDG$AP BBCCs A i A d($I8A` B CCx A J A N A F A O A FOAp C O mBAp  A BACACBAp  HGHA AAxT(S0A@BBEz AA LAA@E B EC@(UA@Es0V(A B^ A O A 40WA@BBC A ,hlZAEDCEBA@ A _\A0DQ `<A BK`<GED <`B0Bb A ARBCC0AH a[E0h |aA@BEc A `d4A BI4 td$A0BBu A C A l deA@DEEAA@EH AA m AA DHA@dh!g\AP BBDFTS A IAP KC!iBp B BC C A T A mBp  T"zHA BN0x"zhA B[ A U A x"{AP CB] A [ A P A Ae AA f AA RGSV,(# AP BCq A 4X#tA` BCD n A L#ĊlAC C BBHI HIA <#AP CD^ A STN] A DA, $BO C H A IP$$A F,p$A0BK B QD$|<A0BDhCA0L AA $txA BZ$ %ȔA Bb A D4%H|A` BL AS BAA sB A$|%Aa A Q A 4%HAP CCX A (%|A BP A J(&A0DS A Mt4&` AC C U{N A C A O A ^IX A ADA4&A0BQ A I[ A BD0& A B\ A M A 'A BW A 0<'XA BT A C A p'lA BH A $'@A BR A l'A0CU{AA0AKAA0BA0KB@,(X`A@BQCPACA@ p(t@A BL$(lA0CV((حdCL A EA(X(AP BHo A AjGc A E A m A O A ADX)D\A@W A D A ACAi AAAA @)\A0EI AA BTBAA0B,)жD BN A H0*(A BS A [ A H*|A BN A l* lA BJ A $*ltAN A I A 0*oru   #%')+-/13e,<f,BGIKMOqsw{P0acegikmoqsuwy{}   !#%')+-/a-'---24>ABJcK   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}a 0@QSUW`prvzx|kN!p!!$0,a,k}}h,j,l,QqPRs,v,?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACEGIKMOQSUWY[]_acegikm#%')+-/3579;=?ACEGIKMOQSUWY[]_acegikmoz|yef\aljSçȧʧѧק٧A( `n"tm~vtktetvstfflffiflfiffBB|BBBBBBtBBpgfedcba`'&%$#"! Bay w th1ej nisstextwarn_categoriesflag_bitOperation "%s" returns its argument for UTF-16 surrogate U+%04lXOperation "%s" returns its argument for non-Unicode code point 0x%04lXimmediately0x%s: %s (overflows)%s (empty string)%s: %s (unexpected continuation byte 0x%02x, with no preceding start byte)%s: %s (too short; %d byte%s available, need %d)%d bytes%s: %s (unexpected non-continuation byte 0x%02x, %s after start byte 0x%02x; need %d bytes, got %d)UTF-16 surrogate (any UTF-8 sequence that starts with "%s" is for a surrogate)Any UTF-8 sequence that starts with "%s" is for a non-Unicode code point, may not be portableAny UTF-8 sequence that starts with "%s" is a Perl extension, and so is not portable%s: %s (any UTF-8 sequence that starts with "%s" is overlong which can and should be represented with a different, shorter sequence)%s: %s (overlong; instead use %s to represent %s%0*lX)panic: _force_out_malformed_utf8_message should be called only when there are errors foundCan't do %s("\x{%lX}") on non-UTF-8 locale; resolved to "\x{%lX}".%s %s%s_reversedpanic: utf16_to_utf8%s: odd bytelen %luMalformed UTF-16 surrogatepanic: to_upper_title_latin1 did not expect '%c' to map to '%c'uppercasetitlecaselowercasefoldcaseẞCan't do fc("\x{1E9E}") on non-UTF-8 locale; resolved to "\x{17F}\x{17F}".ſtCan't do fc("\x{FB05}") on non-UTF-8 locale; resolved to "\x{FB06}".stUnicode surrogate U+%04lX is illegal in UTF-8\\\x{%lx} while running setuid while running setgid while running with -t switch while running with -T switchanother variable%%ENV is aliased to %s%s%%ENV is aliased to %%%s%s$ENV{PATH}Insecure directory in %s%sTERM-_.+Insecure $ENV{%s}%sIFSCDPATHBASH_ENV => 3?@ !"#$%n&'=>?@ABCHIJKLMNOPQSVW """"&'((((((((((((((67777;;=>????CDEFGHHHHHHHHHHRSSSSSXYZ[S]^_`aaaddddddj;mn77YYYYBBCCCCCCCCCC''AAAATT????hhffggiijj  9.4& )2$ 8-# ,    \ ! a^  1 )CS1   A !AAAA A?A 10A8PB(>60Y7g0A0A1?0AP1?A,081(5B0X7B14x LEBP<9X8)(|" @H&dHgx t p 1g0F10Fg8g30Fg040FlC0F0FGG0F;1+1g830F0X71?B_0/1g01?10>,D0X7P1?BA,0/P1B0X7- '0y#,*<$+6,*x.00xLEB'9U%|/90X7==|/gI<9X8)(L! L! 1F: Gd$2100A+g0A+00A #(*1454:;;BEKKMPPPPPPPRPPPPTW]__ aaa___aaaa_K ]KK]]KKKKKKKbehjj44KK]nuuv{~(((v{~444 444]] 44444444444444444444444444]44444444444]]K]]]]]]]K44]]]]]]]]4]44444444444444444 KK1KKKKT[P)/)/z$MOD+1-AMPERAPPENDASSIGNAVBAREBKWARDBOOLBOOL?BYTESCAN_FORCE_UTF8COMPLCOM_AGGCOM_RC1COM_SCALARCONSTCOPHHCVCV2GVDBGDEFDELDELETEDEREF1DEREF2DESCDOLISTDREFAVDREFHVDREFSVEARLYCVELEMENTEREDEXISTSFAKEFINALLYFTACCESSFTAFTERtFTSTACKEDFTSTACKINGGROWSGUESSEDHAS_HHHUSHHVIDENTIMPLIMINARGSINBININCRINPLACEINTITERKEYSKVSLICELEXLINENUMLVLVDEFERLVINTROLVSUBMARKNEGNESTEDNO()NOINITNOVERNUMOURINTROUTBINOUTCRREFCREPARSEREPL1STREVREVERSEDSHORTSLICESLICEWARNSQUASHSTATESTRICTSTRINGIFYSUBSVTARGTARGMYUNIUSEINTUSE_SVOPUTFkeyoffsetrangeDDDD@@@DD@! " ++dDdD, , >>> ">>&&&&&&..  HD6@0244@;H;;@KHKKHBDDD $B"$$444 $TTA! $ $  @ @ $   D  @@@@@@@ d)d k d Et!{D{DK d d d d d  d d dd d dddddd d dddkklllllllllllllllllllllllllll$$$$ dk kdkk $            ě@@ {@@@@D@ @@ D HAS_TIMES PERLIO_LAYERS USE_64_BIT_ALL USE_64_BIT_INT USE_LARGE_FILES USE_LOCALE_COLLATE USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~  !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./0123456789:;<=>?isa`!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_$/bin/sh0123456789abcdef0123456789ABCDEF01Code point 0x%lX is not Unicode, requires a Perl extension, and so is not portablepanic: memory wrapCan't localize through a reference"%s" %s %s can't be in a packageThe %s function is unimplementedUnsupported directory function "%s" calledUnsupported socket function "%s" calledInsecure dependency in %s%sOut of memory! Modification of a read-only value attemptedModification of non-creatable hash value attempted, subscript "%-p"Modification of non-creatable array value attempted, subscript %dCan't use an undefined value as %s referenceCan't use string ("%-32p"%s) as %s ref while "strict refs" in useCan't use string ("%.32s") as %s ref while "strict refs" in useCan't use %s ref as %s refUnsuccessful %s on filename containing newlineUnquoted string "%s" may clash with future reserved wordSemicolon seems to be missingUse of uninitialized value%-p%s%sUse of uninitialized value%s%s%s `````````l``````````````````@L`A`A`A`A`A`A`A`A`A`A`A`A`A`A`AQQQQQQQQQQ`A`A`A`A`A`A`ASgSCSCSCSCSgCCCgCgCgCOCGCCCGCCCCCCCCCoCgCCCCCgCCCgCC`A`A`A`AaA`ASgSCSCSCSCSgCCCgCgCgCOCGCCCGCCCCCCCCCoCgCCCCCgCCCgCC`A`A`A`A`                               @ `@@@@@`@@`@@@@@@@@@O``@@`@@@`CCCCCOCCCCCCCCCCCCCCCCC@CCCCCCCOCCCCCOCCCCCCCCCCCCCCCCC@CCCCCCCOSKIPIMPLICITNAUGHTYVERBARG_SEENCUTGROUP_SEENUSE_RE_EVALNOSCANGPOS_SEENGPOS_FLOATANCH_MBOLANCH_SBOLANCH_GPOSRECURSE_SEENMULTILINESINGLELINEFOLDEXTENDEDEXTENDED_MORENOCAPTUREKEEPCOPYCHARSET0CHARSET1CHARSET2STRICTSPLITUNUSED_BIT_12UNUSED_BIT_13UNUSED_BIT_14UNUSED_BIT_15NO_INPLACE_SUBSTEVAL_SEENUNBOUNDED_QUANTIFIER_SEENCHECK_ALLMATCH_UTF8USE_INTUIT_NOMLUSE_INTUIT_MLINTUIT_TAILIS_ANCHOREDCOPY_DONETAINTED_SEENTAINTEDSTART_ONLYSKIPWHITEWHITESUCCEEDSBOLMBOLSEOLMEOLEOSGPOSBOUNDBOUNDLBOUNDUBOUNDANBOUNDNBOUNDLNBOUNDUNBOUNDAREG_ANYSANYANYOFANYOFDANYOFLANYOFPOSIXLANYOFHANYOFHbANYOFHrANYOFHsANYOFRANYOFRbANYOFMNANYOFMPOSIXDPOSIXLPOSIXUPOSIXANPOSIXDNPOSIXLNPOSIXUNPOSIXACLUMPBRANCHEXACTLEXACTEXACTLEXACTFEXACTFLEXACTFUEXACTFAAEXACTFAA_NO_TRIEEXACTFUPEXACTFLU8EXACT_REQ8LEXACT_REQ8EXACTFU_REQ8EXACTFU_S_EDGELNBREAKTRIETRIECAHOCORASICKAHOCORASICKCNOTHINGTAILSTARPLUSCURLYCURLYNCURLYMCURLYXWHILEMSROPENSRCLOSEREFFREFFLREFFUREFFAREFNREFFNREFFLNREFFUNREFFANLONGJMPBRANCHJIFMATCHUNLESSMSUSPENDIFTHENGROUPPEVALMINMODLOGICALRENUMGOSUBGROUPPNINSUBPDEFINEPENDLIKEOPFAILVERBMARKPOINTCUTGROUPKEEPSLOOKBEHIND_ENDOPTIMIZEDPSEUDOREGEX_SETTRIE_nextTRIE_next_failEVAL_BEVAL_B_failEVAL_postponed_ABEVAL_postponed_AB_failCURLYX_endCURLYX_end_failWHILEM_A_preWHILEM_A_pre_failWHILEM_A_minWHILEM_A_min_failWHILEM_A_maxWHILEM_A_max_failWHILEM_B_minWHILEM_B_min_failWHILEM_B_maxWHILEM_B_max_failBRANCH_nextBRANCH_next_failCURLYM_ACURLYM_A_failCURLYM_BCURLYM_B_failIFMATCH_AIFMATCH_A_failCURLY_B_minCURLY_B_min_failCURLY_B_maxCURLY_B_max_failCOMMIT_nextCOMMIT_next_failMARKPOINT_nextMARKPOINT_next_failSKIP_nextSKIP_next_failCUTGROUP_nextCUTGROUP_next_failKEEPS_nextKEEPS_next_failarylenarylen_pbackrefcheckcallcollxfrmdblinedebugvardefelemenvenvelemhintshintselemisaelemlvrefmglobnkeysnonelemovrldpackelemposregdataregdatumregexpsigsigelemsubstrtaintuvarvecnull operationstubpushmarkwantarrayconstant itemscalar variableglob valueglob elemprivate variableprivate arrayprivate hashprivate valueref-to-glob castscalar dereferencearray lengthsubroutine dereferenceanonymous subroutinesubroutine prototypereference constructorsingle ref constructorreference-type operatorblessquoted execution (``, qx)append I/O operatorregexp internal guardregexp internal resetregexp compilationpattern match (m//)pattern quote (qr//)substitution (s///)substitution iteratortransliteration (tr///)chopscalar chopchompscalar chompdefined operatorundef operatormatch positioninteger preincrement (++)integer predecrement (--)integer postincrement (++)integer postdecrement (--)exponentiation (**)integer multiplication (*)integer division (/)integer modulus (%)repeat (x)integer addition (+)integer subtraction (-)concatenation (.) or stringleft bitshift (<<)right bitshift (>>)numeric lt (<)integer lt (<)numeric gt (>)integer gt (>)numeric le (<=)integer le (<=)numeric ge (>=)integer ge (>=)numeric eq (==)integer eq (==)numeric ne (!=)integer ne (!=)numeric comparison (<=>)integer comparison (<=>)string ltstring gtstring lestring gestring eqstring nestring comparison (cmp)numeric bitwise and (&)numeric bitwise xor (^)numeric bitwise or (|)string bitwise and (&.)string bitwise xor (^.)string bitwise or (|.)integer negation (-)notnumeric 1's complement (~)string 1's complement (~)smart matchatan2sincosrandsrandexpinthexoctabslengthrindexordchrcryptucfirstlcfirstucquotemetaarray dereferenceconstant array elementconstant lexical array elementarray sliceindex/value array sliceeach on arrayvalues on arraykeys on arrayeachvalueskeyshash dereferencehash slicekey/value hash slicearray or hash lookupunpacksplitlist sliceanonymous array ([])anonymous hash ({})splicepushpopshiftunshiftreversegrepgrep iteratormapmap iteratorflipfloprange (or flip)range (or flop)logical and (&&)logical or (||)logical xordefined or (//)conditional expressionlogical and assignment (&&=)logical or assignment (||=)defined or assignment (//=)subroutine entrysubroutine exitlvalue subroutine returncheck subroutine argumentssubroutine argumentsubroutine argument default valuecallerwarndiesymbol resetline sequencenext statementdebug next statementiteration finalizerblock entryblock exitforeach loop entryforeach loop iteratorloop exitlastnextredodumpexitmethod lookupmethod with known namesuper with known nameredirect method with known nameredirect super method with known namegiven()leave given blockwhen()leave when blockbreakcontinuepipefilenobinmodetieuntietieddbmopendbmcloseselect system callselectgetcreadwrite exitsaysysseeksysreadsyswriteeoftellseekfcntlioctlflocksendrecvbindconnectlistenacceptshutdowngetsockoptsetsockoptgetsocknamegetpeername-R-W-X-r-w-s-M-C-O-o-z-S-b-f-d-u-g-k-l-t-Tlinksymlinkreadlinkopendirreaddirtelldirseekdirrewinddirclosedirforkwaitwaitpidkillgetppidgetpgrpgetprioritytimetimesalarmsleepshmgetshmctlshmreadshmwritemsggetmsgctlmsgsndmsgrcvsemopsemgetsemctldo "file"eval hintseval "string"eval "string" exiteval {block}eval {block} exitgethostbynamegethostbyaddrgethostentgetnetbynamegetnetbyaddrgetnetentgetprotobynamegetprotobynumbergetprotoentgetservbynamegetservbyportgetserventsethostentsetnetentsetprotoentsetserventendhostentendnetentendprotoentendserventgetpwnamgetpwuidgetpwentsetpwentendpwentgetgrnamgetgrgidgetgrentsetgrentendgrentgetloginonceunknown custom operatorCORE:: subroutineArray/hash switch__SUB__fcprivate subroutinelist of private variableslvalue ref assignmentlvalue array referenceanonymous constantderived class testcomparison chainingcomparand shufflingtry {block}try {block} exitpop trycatch {} blockpush defer {} blockboolean type testweakref type testreference weakenreference unweakenblessedrefaddrreftypeceilfloorfreed opgvsvgvgelempadsvpadavpadhvpadanyrv2gvrv2svav2arylenrv2cvanoncoderefgensrefgenrefrcatlineregcmayberegcresetmatchsubstsubstconttranstransrsassignaassignschopschomppreinci_preincpredeci_predecpostinci_postincpostdeci_postdecpowmultiplyi_multiplydividei_dividemoduloi_modulorepeataddi_addsubtracti_subtractconcatmulticoncatstringifyleft_shiftright_shifti_ltgti_gti_lei_geeqi_eqi_nencmpi_ncmpsltsgtslesgeseqsnescmpbit_andbit_xorbit_ornbit_andnbit_xornbit_orsbit_andsbit_xorsbit_ornegatei_negatecomplementncomplementscomplementsmartmatchrv2avaelemfastaelemfast_lexaelemaslicekvasliceaeachavaluesakeysrv2hvhelemhslicekvhslicemultiderefjoinlsliceanonlistanonhashgrepstartgrepwhilemapstartmapwhilerangeflipflopanddorcond_exprandassignorassigndorassignentersubleavesubleavesublvargcheckargelemargdefelemlineseqnextstatedbstateunstackenterleaveenteriteriterenterloopleaveloopmethod_namedmethod_supermethod_redirmethod_redir_superentergivenleavegivenenterwhenleavewhenpipe_opsselectenterwriteleavewriteprtfsockpairgsockoptssockoptftrreadftrwriteftrexecftereadftewritefteexecftisftsizeftmtimeftatimeftctimeftrownedfteownedftzeroftsockftchrftblkftfileftdirftpipeftsuidftsgidftsvtxftlinkftttyfttextftbinaryopen_dirtmsdofilehintsevalleaveevalentertryleavetryghbynameghbyaddrghostentgnbynamegnbyaddrgnetentgpbynamegpbynumbergprotoentgsbynamegsbyportgserventshostentsnetentsprotoentsserventehostentenetenteprotoenteserventgpwnamgpwuidgpwentspwentepwentggrnamggrgidggrentsgrentegrentcustomcoreargsavhvswitchruncvpadcvintrocvclonecvpadrangerefassignlvrefslicelvavrefanonconstcmpchain_andcmpchain_dupentertrycatchleavetrycatchpoptrypushdeferis_boolis_weakweakenunweakenfreedCONSTRUCTSTARTRUNDESTRUCTWHENBLOCKGIVENLOOP_ARYLOOP_LAZYSVLOOP_LAZYIVLOOP_LISTLOOP_PLAINSUBSUBSTDEFERZEROHUPINTQUITILLTRAPABRTBUSFPEKILLUSR1SEGVUSR2PIPEALRMSTKFLTCHLDCONTSTOPTSTPTTINTTOUURGXCPUXFSZVTALRMPROFWINCHPWRSYSNUM32NUM33RTMINNUM35NUM36NUM37NUM38NUM39NUM40NUM41NUM42NUM43NUM44NUM45NUM46NUM47NUM48NUM49NUM50NUM51NUM52NUM53NUM54NUM55NUM56NUM57NUM58NUM59NUM60NUM61NUM62NUM63RTMAXIOTPOLLRecursive call to Perl_load_module in PerlIO_find_layerPerlIOPerlIO::Layer::NoWarningsPerlIO::LayerUsage class->find(name[,load])Invalid separator character %c%c%c in PerlIO layer specification %sArgument list not closed for PerlIO layer "%.*s"Unknown PerlIO layer "%.*s"panic: PerlIO layer array corruptPERLIOperlio.cPerlIO::Layer::findsize expected by this perlPerlIO layer function table size%s (%lu) does not match %s (%lu)PerlIO layer instance size%s (%lu) smaller than %s (%lu)refcnt_inc: fd %d: %d <= 0 refcnt_inc: fd %d < 0 refcnt_dec: fd %d >= refcnt_size %d refcnt_dec: fd %d: %d <= 0 refcnt_dec: fd %d < 0 refcnt: fd %d >= refcnt_size %d refcnt: fd %d: %d <= 0 refcnt: fd %d < 0 r+Don't know how to get file nameMore than one argument to open(,':%s')IrIwUnknown PerlIO layer "scalar"HashCodeGlobTMPDIR/tmp/PerlIO_XXXXXXcrlfpendingperliostdiounixrawbytesBinary number > 0b11111111111111111111111111111111Octal number > 037777777777Hexadecimal number > 0xffffffffIllegal %s digit '%c' ignoredIllegal octal digit '%c' ignored%s non-portableinqs#silence compiler warning:raw?  Can't fix broken locale name "%s"LC_ALL%d%s (unknown)locale.cpanic: %s: %d: setlocale %s restore to %s failed, errno=%d panic: %s: %d: Could not find current %s locale, errno=%d panic: %s: %d: Could not change %s locale to %s, errno=%d �panic: %s: %d: Corrupt utf8ness_cache=%s len=%zu, inserted_name=%s, its_len=%zu ABCDEFGHIJKLMnopqrstuvwxyzlocale The following characters (and maybe others) may not have the same meaning as the Perl program expects: Some characters in it are not recognized by Perl.' 'Locale '%s' contains (at least) the following characters which have unexpected meanings: %s The Perl program will use the expected meaningsLocale '%s' may not work well.%s%s%s ; codeset=%sunsetFailed to fall back toFalling back tothe standard localea fallback localeLANGUAGEPERL_SKIP_LOCALE_INITPERL_BADLANG C 0 POSIX 0perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = %c%s%c, LC_ALL = %c%s%c, LC_LC_ALL=ABCDEFGHIJKLMNOPQRSTUVWXYZ %.*s = "%s", LANG = %c%s%c are supported and installed on your system. perl: warning: %s %s ("%s"). perl: warning: %s %s. PERL_UNICODELC_NUMERICLC_CTYPELC_COLLATELC_TIMELC_MESSAGESLC_MONETARYLC_ADDRESSLC_IDENTIFICATIONLC_MEASUREMENTLC_PAPERLC_TELEPHONE m%tJ xmmStNpH                                                                                                                                                                                                      panic: isFOO_lc() has an unexpected character class '%d'panic: paren_elems_to_push, %i < 0, maxopenparen: %i parenfloor: %i REGCP_PAREN_ELEMS: %upanic: paren_elems_to_push offset %lu out of range (%lu-%ld)Malformed UTF-8 character (fatal)ffiWide character (U+%lX) in %sMatched non-Unicode code point 0x%04lX against Unicode property; may not be portablepanic: regrepeat() called with unrecognized node type %d='%s'corrupted regexp pointersPattern subroutine nesting without pos change exceeded limit in regexInfinite recursion in regexEVAL without pos change exceeded limit in regexREGMARKComplex regular subexpression recursion limit (%d) exceeded%lx %d regexp memory corruptionREGERRORpanic: unknown regstclass %dcorrupted regexp programMalformed UTF-8 characterMalformed UTF-8 character (unexpected end of string)Code point 0x%lX is not Unicode, may not be portableUnicode non-character U+%04lX is not recommended for open interchangeUTF-16 surrogate U+%04lXAx   "$&(*,.I2469;=?ACEGJLNPRTVXZ\^`bdfhjlnprtvy{}SC=   "$&(*,.02;~,AFHJLNo,m,p,b,n,d,ŧDEprv`bdfhjlnprtvxz|~   "$&(*,.1!"*bJ}c,Ƨ   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~`(8HY[]_h2!`!!$,`,:>g,i,k,r,u,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@BDFHJLNPRTVXZ\^`bdfhjl"$&(*,.2468:<>@BDFHJLNPRTVXZ\^`bdfhjlny{~ħ§ǧɧЧ֧ا!p| @nD=NFD;D5DFSTFFLFFIFLFIFFBBBBBBBBBBonmlkjih/.-,+*)(     BAY W TH15RJ NSSAx   "$&(*,.I2469;=?ACEGJLNPRTVXZ\^`bdfhjlnprtvy{}SC=   "$&(*,.02;~,AFHJLNo,m,p,b,n,d,ŧDEprv`bdfhjlnprtvxz|~   "$&(*,.1!"*bJ}c,Ƨ   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~`(8HY[]_h2!`!!$,`,:>g,i,k,r,u,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@BDFHJLNPRTVXZ\^`bdfhjl"$&(*,.2468:<>@BDFHJLNPRTVXZ\^`bdfhjlny{~ħ§ǧɧЧ֧ا!p| @nDmNvDkDeDvStFflFfiFlFiFfBEBEEBBBBBEBEEBEBEEBAY W TH15J NSsa   !#%')+-/357:<>@BDFHKMOQSUWY[]_acegikmoqsuwz|~sSTVY[`cihoru   #%')+-/13e,<f,BGIKMOqsw{P0acegikmoqsuwy{}   !#%')+-/a-'---24>ABJcK   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}a 0@QSUW`prvzx|kN!p!!$0,a,k}}h,j,l,QqPRs,v,?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACEGIKMOQSUWY[]_acegikm#%')+-/3579;=?ACEGIKMOQSUWY[]_acegikmoz|yef\aljSçȧʧѧק٧A( `n"ALTx   "$&(*,.2469;=?ACEGJLNPRTVXZ\^`bdfhjlnprtvy{}C=   "$&(*,.02;~,AFHJLNo,m,p,b,n,d,ŧDEprv#+`dfhjlnprtvxz|~   "$&(*,.1p}c,Ƨ   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^bdfhjlnprtvxz|~(8HY[]_h2!`!!$,`,:>g,i,k,r,u,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@BDFHLNPRTVXZ\^`bdfhjl"$&(*,.2468:<>@BDFHJLNPRTVXZ\^`bdfhjlny{~ħ§ǧɧЧ֧ا!p| @nJ`b*"!&!E+!SK*!a   !#%')+-/357:<>@BDFHKMOQSUWY[]_acegikmoqsuwz|~STVY[`cihoru   #%')+-/13e,<f,BGIKMOqsw{P0acegikmoqsuwy{}   !#%')+-/a-'---p   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} 0@QSUW`prvzx|kN!p!!$0,a,k}}h,j,l,QqPRs,v,?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACEGIKMOQSUWY[]_acegikm#%')+-/3579;=?ACEGIKMOQSUWY[]_acegikmoz|yef\aljSçȧʧѧק٧A( `n"ia   !#%')+-/357:<>@BDFHKMOQSUWY[]_acegikmoqsuwz|~sSTVY[`cihOJJJJJJ| BB===ccZ'''''JJ,JZZJ66666699JJNNNNNNN,,9Pnn*pqqxxww%MMMJJJ88zdd555}}QQ]\\\CCCCCCCCsoVVV;;::~~~tmmm33ru&??RFFbbbbbGG++++++++++++++++gg__`"!!!!!!!!eee{ WWWXXXXXXX......SO$$aaa yyyyyY^^^iDDi#####999999,J)))))jjjj''''[[9VuMNNNh=BJc "-/?FGR_ "-/?@FGR_e "-/?@FGRT_e01>HJ>A7>017>AH7>A 01>H 0127>AH 0127>AH01>H +JJ` +@ +@ev e @Tv + +@`|42H(Jc@e+-F/b  "?R "+-./@GLRTXev "+-./@GRTXev +-/@JTv +-/@JTv33UVu~3h3hJ)p 1                                                                                                                                                                                                                                                                                     #! ! $  ! !       '(!!!!&           !!!!                        &         %%%%%%%"%%%%%                    !    %%%%%%%%%%%%%            %%%%%%% %%% %%                                                                                                                                                                                                                                                                                                                                                                   mro_private_data() for '%.*s' %dpanic: hv_store() failed in mro_register() for '%.*s' %dCan't linearize anonymous symbol tableRecursive inheritance detected in package '%2p'panic: invalid MRO!Can't call mro_isa_changed_in() on anonymous symbol tableCan't call mro_method_changed_in() on anonymous symbol tableclassnameNo such class: '%-p'!Invalid mro name: '%-p'mro::method_changed_indfsiiiiiiiiiiiiiiiiiiiiiiiioiici=1!iiiIpSD2$  lSJA8elseif should be elsif'%-p' is not recognised as a builtin functionbuiltin::Built-in function '%s%s' is experimentalargpanic: unhandled opcode %ld for xs_builtin_func1_scalar()trimpanic: unhandled opcode %ld for xs_builtin_func1_void()builtin::indexedbuiltin::import can only be called at compile time&%-pbuiltin::%-ppanic: unrecognised builtin_const value %ldbuiltin::truebuiltin.cbuiltin::importbuiltin::falsebuiltin::is_boolbuiltin::weakenbuiltin::unweakenbuiltin::is_weakbuiltin::blessedbuiltin::refaddrbuiltin::reftypebuiltin::ceilbuiltin::floorbuiltin::trimbuiltin::created_as_stringbuiltin::created_as_number~ytoje`[VQLGB=81*#Cannot modify shared string table in hv_%s (utf8)Attempt to free nonexistent shared string '%s'%sSorry, hash keys must be smaller than 2**31 bytespanic: hv name too long (%lu)panic: hv_placeholders_p%ld/%ldUse of each() on hash after insertion without resetting hash iterator results in undefined behaviorpanic: hv_placeholders_setAttempt to delete readonly key '%-p' from a restricted hashfetchstoredeleteAttempt to delete disallowed key '%-p' from a restricted hashAttempt to access disallowed key '%-p' in a restricted hashpanic: refcounted_he_value bad flags %lxpanic: refcounted_he_chain_2hv bad flags %lxpanic: refcounted_he_fetch_pvn bad flags %lxpanic: refcounted_he_fetch_sv bad flags %lxpanic: refcounted_he_new_sv bad flags %lxpanic: cop_store_label illegal flag bits 0x%lxNEGATIVE_INDICESpanic: av_extend_guts() negative count (%ld)Out of memory during array extendEXTENDPUSHPOPUNSHIFTSHIFTSTORESIZEan ARRAYa HASHE_DEBUG_FLAGSDOESCan't call method "%-p" on unblessed referenceUseless assignment to a temporaryCan't return array to lvalue scalar contextCan't return hash to lvalue scalar contextNot %s referenceCan't return %s to lvalue scalar contextOdd number of elements in hash assignmentReference found where even-sized list expectedpanic: attempt to copy freed scalar %pAssigned value is not a SCALAR referencepanic: pp_match?? already matched onceInfinite recursion via empty patternString shorter than min possible regex match (%zd < %zd) panic: pp_match start/end pointers, i=%ld, start=%ld, end=%ld, s=%p, strend=%p, len=%lu, core dumpedREADLINEglob failed (child exited with status %d%s)$&*(){}[]'";\|?<>~`utf8 "\x%02X" does not map to UnicodeUse of freed value in iterationpanic: pp_iter, type=%upanic: pp_subst, pm=%p, orig=%pSubstitution loopDeep recursion on anonymous subroutineDeep recursion on subroutine "%-p"a subroutineCan't use string ("%-32p"%s) as a subroutine ref while "strict refs" in useNot a CODE referenceUndefined subroutine &%-p calledUndefined subroutine calledClosure prototype calledDB::lsubNo DB::sub routine definedCan't modify non-lvalue subroutine call of &%-pNot an ARRAY referenceUse of reference "%-p" as array indexNot a HASH referenceCan't call method "%-p" without a package or object referenceCan't call method "%-p" on an undefined value~ytoje`[VQLGB=81*#z2z)z2222222222222222222222zzzz2v2222e^/222Y22 PX N LJH PF6 6VTRNDH(==11%111=411==4J111#111111111111111111111111111111111111111111111111111111111111(null)!  !(c (!t0 e` F 00Gx00YPPZ(({ |hh}hh>  DESTROYX |00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899sv_vcatpvfnInteger overflow in format string for %sHexadecimal float: internal error (entry)Hexadecimal float: internal error (overflow)panic: %s cache %lu real %lu for %-ppanic: del_backref, svp=0panic: del_backref, *svp=%p phase=%s refcnt=%lupanic: del_backref, *svp=%p, sv=%pCan't unweaken a nonreferenceReference is not weakNot a subroutine referencesprintfjoin or string in sv_vcatpvfn()Cannot yet reorder sv_vcatpvfn() arguments from va_listBbDdiOouUXxinternal %%p might conflict with future printf extensionsvector argument not supported with alpha versionsCannot printf %g with '%c'panic: frexp: %LgNumeric format result too large%c%+dMissing argument for %%n in %sInvalid conversion in %sprintf: "%end of stringMissing argument in %sRedundant argument in %s%.*g%2p::%2ppanic: attempt to copy value %-p to a freed scalar %ppanic: attempt to copy freed scalar %p to %pBizarre copy of %s in %sBizarre copy of %sCannot copy to %s in %sCannot copy to %sUndefined value assigned to typeglob*LVALUEARRAYREFVSTRINGHASHFORMATUNKNOWNGLOBCan't upgrade %s (%lu) to %lusv_upgrade from type %d down to type %dDESTROY created new reference to dead object '%2p'Attempt to free unreferenced scalar: SV 0x%lxpanic: attempt to undefine a freed scalar %ppanic: sv_chop ptr=%p, start=%p, end=%pCan't weaken a nonreferenceReference is already weakutf8_mg_pos_cache_updatesv_pos_u2b_cacheCan't bless non-reference valuepanic: reference miscount on nsv in sv_replace() (%lu != 1)NULLREFsv_len_utf8panic: sv_pos_b2u: bad byte offset, blen=%lu, byte=%lusv_pos_b2uDon't know how to handle magic of type \%opanic: sv_setpvn_fresh called with negative strlen %ldArgument "%s" isn't numeric in %sArgument "%s" isn't numericsv_2iv assumed (U_V(fabs((double)SvNVX(sv))) < (UV)IV_MAX) but SvNVX(sv)=%g U_V is 0x%lx, IV_MAX is 0x%lx cat_decodeInvalid argument to sv_cat_decodepanic: sv_setpvn called with negative strlen %ldWide characterCan't coerce %s to integer in %sCan't coerce %s to number in %sLost precision when incrementing %f by 1Argument "%s" treated as 0 in increment (++)Lost precision when decrementing %f by 1Can't coerce %s to string in %sWide character in $/panic: sv_insert, midend=%p, bigend=%p{%s}[%ld]within semi-panic: attempt to dup freed stringpanic: magic_killbackrefs (freed backref AV/SV)panic: magic_killbackrefs (flags=%lx)existshash elementarray element$_$.${$/}Bad filehandle: %2pBad filehandle: %-pdecodeUse of strings with code points over 0xFF as arguments to %s operator is not allowedNot a GLOB referencea symbolNot a SCALAR referenceCan't find an opnumber for "%d%lu%4p"Attempt to bless into a freed packageAttempt to bless into a referenceExplicit blessing to '' (assuming package main)FILEHANDLEPACKAGE(anonymous)Constant subroutine %-p undefinedIllegal division by zeroIllegal modulus zeroNegative repeat count does nothingNon-finite repeat count does nothingOut of memory during list extendOut of memory during string extendsqrtlogCan't take %s of %gInteger overflow in srand0 but trueCannot chr %gInvalid negative number (%-p) in chrCan't modify index/value array slice in list assignmentCan't modify keys on array in list assignmentpanic: avhv_delete no longer supportedCan't modify key/value hash slice in %s assignmentOdd number of elements in anonymous hashSPLICEsplice() offset past end of arraySplit loop[out of range]panic: unimplemented op %s (#%d) calledNot enoughToo many or arrayreference to one of [$@%&*]scalar referencereference to one of [$@%*]%s arguments for %sType of arg %d to &CORE::%s must be array referenceType of arg %d to &CORE::%s must be hash%s referenceType of arg %d to &CORE::%s must be %spanic: unknown OA_*: %xat most manyfewat least Too %s arguments for subroutine '%-p' (got %lu; expected %s%lu)Odd name/value argument for subroutine '%-p'C>3$ XEjYI.!Nbpanic: stack_grow() negative count (%ld)Out of memory during stack extendpanic: pad offset %lu out of range (%p-%p)panic: save_alloc elems %lu out of range (%ld-%ld)panic: corrupt saved stack index %ldpanic: leave_scope inconsistency %u]+TQZ+=7*Can't "goto" into a binary or list expressionCan't "goto" into the middle of a foreach loopCan't "goto" into a "given" blockTarget of goto is too deeply nestedCan't "goto" into a "defer" blockpathnameInvalid \0 character in %s for %s: %s\0%s%-p did not return a true value%-pCompilation failed in requireUnknown error Compilation errorPerls since %-p too modern--this is %-p, stoppedPerl %-p required--this is only %-p, stoppedv%d.%d.0Perl %-p required (did you mean %-p?)--this is only %-p, stoppedMissing or undefined argument to %sCan't locate %s: %sAttempt to reload %s aborted. Compilation failed in requireBareword in require maps to disallowed filename "%-p"Bareword in require contains "\0"Bareword in require contains "/."/loader/0x%lx/%s@INC entryCan't locate %s: %s: %s (you may need to install the module) (change .h to .ph maybe?) (did you run h2ph?).ph (did you run h2ph?)Can't locate %s in @INC%-p (@INC contains:%-p)Can't locate %sdo "%s" failed, '.' is no longer in @INC; did you mean do "./%s"?Smart matching a non-overloaded object breaks encapsulation%0*.*f%#0*.*f%#*.*f%*.*fNull picture in formlineRepeated format line will never terminate (~~ and @#)Not enough format arguments Range iterator outside integer rangeE0panic: bad gimme: %d finallydeferExiting %s via %sCan't "%s" outside a loop blockLabel not found for "%s %-p"Can't "%s" out of a "%s" block (in cleanup) %-p(eval)No DB::DB routine defineda readonly valuea temporaryCan't return %s from lvalue subroutineGoto undefined subroutine &%-pGoto undefined subroutineCan't goto subroutine outside a subroutineCan't goto subroutine from an eval-stringCan't goto subroutine from an eval-blockCan't goto subroutine from a sort sub (or similar callback)gotoDB::gotogoto must have labelCan't "goto" out of a pseudo blockpanic: goto, type=%u, ix=%ldUse of "goto" to jump into a construct is deprecatedCan't find label %d%lu%4peval_<(eval %lu)[%s:%ld]_<(eval %lu)Can't return outside a subroutinepanic: return, type=%udefaultwhenCan't "%s" outside a topicalizerCan't "continue" outside a when blockCan't "break" outside a given blockCan't "break" in a loop topicalizerpseudo-blocksubstitutiondefer block0 but trueRWXrwx@@esMACOozScbfdpugk85.OWn8ѰSnCrbrt`` ...caughtWarning: something's wrongPROPAGATE ...propagatedDiedCannot open %2p as a filehandle: it is already open as a dirhandleOPENCLOSEFILENOumaskBINMODETIEHASHTIEARRAYTIEHANDLETIESCALARCannot tie unreifiable arrayCan't locate object method "%s" via package "%-p"Can't locate object method "%s" via package "%-p" (perhaps you forgot to load "%-p"?)Can't locate object method "%s" via package "%2p"Self-ties of arrays and hashes are not supportedUNTIEuntie attempted while %lu inner references still existAnyDBM_FileNo dbm on this machineAnyDBM_File.pmNon-string passed as bitmaskGETCUndefined format "%-p" called%2p_TOPUndefined top format "%-p" calledpage overflowPRINTFREADNegative length%s() isn't allowed on :utf8 handlesOffset outside stringWRITEEOFTELLSEEKtruncatePossible memory corruption: %s overflowed 3rd argumentsocketpairlstat() on filehandle%s%-pThe stat preceding lstat() wasn't an lstatstat-T and -B not implemented on filehandleschdir() on unopened filehandle %-pchdirHOMELOGDIRchrootrenamemkdirrmdirCannot open %2p as a dirhandle: it is already open as a filehandlereaddir() attempted on invalid dirhandle %2ptelldir() attempted on invalid dirhandle %2pseekdir() attempted on invalid dirhandle %2prewinddir() attempted on invalid dirhandle %2pclosedir() attempted on invalid dirhandle %2psystemexecsetpgrpsetprioritylocaltimegmtime%s(%.0f) too large%s(%.0f) too small%s(%.0f) failed%s %s %2d %02d:%02d:%02d %ldalarm() with negative argumentsleep() with negative argumentToo many args to syscallToo few args to syscallJanFebMarAprMayJunJulAugOctNovDecSunMonTueWedThuFriSatprintfIllegal number of bits in vecUse of strings with code points over 0xFF as arguments to vec is forbiddenBit vector size > 32 non-portableNegative offset to vec in lvalue contextOut of memory!Can't modify keys in list assignmentWarning: unable to close filehandle %2p properly. Can't exec "%s": %sCurrent directory has changedCannot complete in-place edit of %s: %sOUTERRFilehandle STD%s reopened as %2p only for inputFilehandle STDIN reopened as %2p only for outputsysopenUnknown open() mode '%.*s'Missing command in piped openpiped openCan't open bidirectional pipeMore than one argument to '%c&' openMore than one argument to '>%c' openMore than one argument to '<%c' openpanic: sysopen with multiple args, num_svs=%ldWarning: unable to close filehandle %2p properly: %-pWarning: unable to close filehandle properly: %-pCan't rename %s to %s: %s, skipping fileCannot complete in-place edit of %s: failed to rename work file '%s' to '%s': %sFailed to close in-place work file %s: %sinplace openCan't do inplace edit: %s is not a regular fileXXXXXXXXw++>&Can't open %s: %sCan't do inplace edit on %s: Cannot make temp name: %sprintThe stat preceding -l _ wasn't an lstatUse of -l on filehandle %2pUse of -l on filehandlelstat$&*(){}[]'";\|?<>~` -cchmodchownUnrecognized signal name "%-p"Can't kill a non-numeric process IDunlinkutimeBad arg length for %s, is %lu, should be %ldArg too short for msgsndecho |tr -s ' ' '\n\n\n\n'|LS_COLORSglob failed (can't start child: %s) ^g**HHSS44>>++;F0jedbdZ53ZIVVVVO VVOOVVVVVVVVOOVVVf[ q `  R < __LL l 5 + "    =b k xp__Ou,     {8xI9-  *#>=sk, # [ _=l 6  kkkk22iiiiiiiirr33OO,,YY````gguupnQKKK>>nniillii77                  !!!!   !!    !!!!Use of (?[ ]) for non-UTF-8 locale is wrong. Assuming a UTF-8 locale    0P0000P000 P0f000000P00000000f Pf 00000000 0 f 0000 00000000Щ0f 000 00@F00000f 0f 000P00000P`jf 0 P0@0P000000000f 0Pk00000000Ш000 00 000@0 j0f `P 000 0`Use of \b{} or \B{} for non-UTF-8 locale is wrong. Assuming a UTF-8 locale                                                                                                                                                                                                                            JJJJJJJJ9,9,9J,,,,,,,,,,,666hhUU 9 ////////////////--------------vvvvvvvvvvvvvv@@@@@@@@@@@@TTTTTTTIIIIIIIIIIIcc(((((''''''''''''''''''k4EEE`````LLLLLffffE9 KKKl(( eJ,J,J,JJ,999J,,,,,,,,,,,,,,,,9JJJ9,JJJJ)J((('''''''''nkNot_ReorderednotreorderedNRnrOVovOverlayoverlayVRvrOpenAegean NumbersAegean_NumbersaegeannumbersAlchemicalalchemicalAlchemical SymbolsAlchemical_SymbolsalchemicalsymbolsAlphabetic_PFalphabeticpfAlphabetic Presentation FormsAlphabetic_Presentation_FormsalphabeticpresentationformsAnatolian HieroglyphsAncient_Greek_MusicancientgreekmusicAncient Greek Musical NotationAncient_Greek_Musical_NotationancientgreekmusicalnotationAncient Greek NumbersAncient_Greek_NumbersancientgreeknumbersAncient SymbolsAncient_SymbolsancientsymbolsArabic_Ext_AarabicextaArabic_Ext_BarabicextbArabic Extended-AArabic_Extended_AarabicextendedaArabic Extended-BArabic_Extended_BarabicextendedbArabic_MatharabicmathArabic Mathematical Alphabetic SymbolsArabic_Mathematical_Alphabetic_SymbolsarabicmathematicalalphabeticsymbolsArabic_PF_AarabicpfaArabic_PF_BarabicpfbArabic Presentation Forms-AArabic_Presentation_Forms_AarabicpresentationformsaArabic Presentation Forms-BArabic_Presentation_Forms_BarabicpresentationformsbArabic_SuparabicsupArabic SupplementArabic_SupplementarabicsupplementArrowsarrowsASCIIasciiBamum_SupbamumsupBamum SupplementBamum_SupplementbamumsupplementBasic LatinBasic_LatinbasiclatinBassa VahBlock ElementsBlock_ElementsblockelementsBopomofo_ExtbopomofoextBopomofo ExtendedBopomofo_ExtendedbopomofoextendedBox DrawingBox_DrawingboxdrawingBraille PatternsBraille_PatternsbraillepatternsByzantine_MusicbyzantinemusicByzantine Musical SymbolsByzantine_Musical_SymbolsbyzantinemusicalsymbolsCanadian_SyllabicscanadiansyllabicsCaucasian AlbanianCherokee_SupcherokeesupCherokee SupplementCherokee_SupplementcherokeesupplementChess SymbolsChess_SymbolschesssymbolsCJKCJK_CompatcjkcompatCJK_Compat_FormscjkcompatformsCJK CompatibilityCJK_CompatibilitycjkcompatibilityCJK Compatibility FormsCJK_Compatibility_FormscjkcompatibilityformsCJK Compatibility IdeographsCJK_Compatibility_IdeographscjkcompatibilityideographsCJK Compatibility Ideographs SupplementCJK_Compatibility_Ideographs_SupplementcjkcompatibilityideographssupplementCJK_Compat_IdeographscjkcompatideographsCJK_Compat_Ideographs_SupcjkcompatideographssupCJK_Ext_AcjkextaCJK_Ext_BcjkextbCJK_Ext_CcjkextcCJK_Ext_DcjkextdCJK_Ext_EcjkexteCJK_Ext_FcjkextfCJK_Ext_GcjkextgCJK_Radicals_SupcjkradicalssupCJK Radicals SupplementCJK_Radicals_SupplementcjkradicalssupplementCJK StrokesCJK_StrokescjkstrokesCJK_SymbolscjksymbolsCJK Symbols and PunctuationCJK_Symbols_And_PunctuationcjksymbolsandpunctuationCJK Unified IdeographsCJK_Unified_IdeographscjkunifiedideographsCJK Unified Ideographs Extension ACJK_Unified_Ideographs_Extension_AcjkunifiedideographsextensionaCJK Unified Ideographs Extension BCJK_Unified_Ideographs_Extension_BcjkunifiedideographsextensionbCJK Unified Ideographs Extension CCJK_Unified_Ideographs_Extension_CcjkunifiedideographsextensioncCJK Unified Ideographs Extension DCJK_Unified_Ideographs_Extension_DcjkunifiedideographsextensiondCJK Unified Ideographs Extension ECJK_Unified_Ideographs_Extension_EcjkunifiedideographsextensioneCJK Unified Ideographs Extension FCJK_Unified_Ideographs_Extension_FcjkunifiedideographsextensionfCJK Unified Ideographs Extension GCJK_Unified_Ideographs_Extension_GcjkunifiedideographsextensiongCombining Diacritical MarksCombining_Diacritical_MarkscombiningdiacriticalmarksCombining Diacritical Marks ExtendedCombining_Diacritical_Marks_ExtendedcombiningdiacriticalmarksextendedCombining Diacritical Marks for SymbolsCombining_Diacritical_Marks_For_SymbolscombiningdiacriticalmarksforsymbolsCombining Diacritical Marks SupplementCombining_Diacritical_Marks_SupplementcombiningdiacriticalmarkssupplementCombining Half MarksCombining_Half_MarkscombininghalfmarksCombining_Marks_For_SymbolscombiningmarksforsymbolsCommon Indic Number FormsCommon_Indic_Number_FormscommonindicnumberformsCompat_JamocompatjamoControl PicturesControl_PicturescontrolpicturesCoptic Epact NumbersCoptic_Epact_NumberscopticepactnumbersCounting_RodcountingrodCounting Rod NumeralsCounting_Rod_NumeralscountingrodnumeralsCuneiform_NumberscuneiformnumbersCuneiform Numbers and PunctuationCuneiform_Numbers_And_PunctuationcuneiformnumbersandpunctuationCurrency SymbolsCurrency_SymbolscurrencysymbolsCypriot SyllabaryCypriot_SyllabarycypriotsyllabaryCypro-MinoanCyrillic_Ext_AcyrillicextaCyrillic_Ext_BcyrillicextbCyrillic_Ext_CcyrillicextcCyrillic Extended-ACyrillic_Extended_AcyrillicextendedaCyrillic Extended-BCyrillic_Extended_BcyrillicextendedbCyrillic Extended-CCyrillic_Extended_CcyrillicextendedcCyrillic_SupcyrillicsupCyrillic SupplementCyrillic_SupplementcyrillicsupplementCyrillic_SupplementarycyrillicsupplementaryDevanagari_ExtdevanagariextDevanagari ExtendedDevanagari_ExtendeddevanagariextendedDiacriticalsdiacriticalsDiacriticals_ExtdiacriticalsextDiacriticals_For_SymbolsdiacriticalsforsymbolsDiacriticals_SupdiacriticalssupDingbatsdingbatsDives AkuruDominodominoDomino TilesDomino_TilesdominotilesEarly Dynastic CuneiformEarly_Dynastic_CuneiformearlydynasticcuneiformEgyptian Hieroglyph Format ControlsEgyptian_Hieroglyph_Format_ControlsegyptianhieroglyphformatcontrolsEgyptian HieroglyphsEmoticonsemoticonsEnclosed_AlphanumenclosedalphanumEnclosed AlphanumericsEnclosed_AlphanumericsenclosedalphanumericsEnclosed Alphanumeric SupplementEnclosed_Alphanumeric_SupplementenclosedalphanumericsupplementEnclosed_Alphanum_SupenclosedalphanumsupEnclosed_CJKenclosedcjkEnclosed CJK Letters and MonthsEnclosed_CJK_Letters_And_MonthsenclosedcjklettersandmonthsEnclosed_Ideographic_SupenclosedideographicsupEnclosed Ideographic SupplementEnclosed_Ideographic_SupplementenclosedideographicsupplementEthiopic_ExtethiopicextEthiopic_Ext_AethiopicextaEthiopic_Ext_BethiopicextbEthiopic ExtendedEthiopic_ExtendedethiopicextendedEthiopic Extended-AEthiopic_Extended_AethiopicextendedaEthiopic Extended-BEthiopic_Extended_BethiopicextendedbEthiopic_SupethiopicsupEthiopic SupplementEthiopic_SupplementethiopicsupplementGeneral PunctuationGeneral_PunctuationgeneralpunctuationGeometric ShapesGeometric_ShapesgeometricshapesGeometric_Shapes_ExtgeometricshapesextGeometric Shapes ExtendedGeometric_Shapes_ExtendedgeometricshapesextendedGeorgian_ExtgeorgianextGeorgian ExtendedGeorgian_ExtendedgeorgianextendedGeorgian_SupgeorgiansupGeorgian SupplementGeorgian_SupplementgeorgiansupplementGlagolitic_SupglagoliticsupGlagolitic SupplementGlagolitic_SupplementglagoliticsupplementGreek and CopticGreek_And_CopticgreekandcopticGreek_ExtgreekextGreek ExtendedGreek_ExtendedgreekextendedGunjala GondiHalf_And_Full_FormshalfandfullformsHalf_MarkshalfmarksHalfwidth and Fullwidth FormsHalfwidth_And_Fullwidth_FormshalfwidthandfullwidthformsHangul Compatibility JamoHangul_Compatibility_JamohangulcompatibilityjamoHangul JamoHangul_JamohanguljamoHangul Jamo Extended-AHangul_Jamo_Extended_AhanguljamoextendedaHangul Jamo Extended-BHangul_Jamo_Extended_BhanguljamoextendedbHangul SyllablesHangul_SyllableshangulsyllablesHanifi RohingyaHigh Private Use SurrogatesHigh_Private_Use_SurrogateshighprivateusesurrogatesHigh_PU_SurrogateshighpusurrogatesHigh SurrogatesHigh_SurrogateshighsurrogatesIDCidcIdeographic Description CharactersIdeographic_Description_CharactersideographicdescriptioncharactersIdeographic_SymbolsideographicsymbolsIdeographic Symbols and PunctuationIdeographic_Symbols_And_PunctuationideographicsymbolsandpunctuationImperial AramaicIndic_Number_FormsindicnumberformsIndic Siyaq NumbersIndic_Siyaq_NumbersindicsiyaqnumbersInscriptional PahlaviInscriptional ParthianIPA_ExtipaextIPA ExtensionsIPA_ExtensionsipaextensionsJamo_Ext_AjamoextaJamo_Ext_BjamoextbKana_Ext_AkanaextaKana_Ext_BkanaextbKana Extended-AKana_Extended_AkanaextendedaKana Extended-BKana_Extended_BkanaextendedbKana_SupkanasupKana SupplementKana_SupplementkanasupplementKanbunkanbunKangxikangxiKangxi RadicalsKangxi_RadicalskangxiradicalsKatakana_ExtkatakanaextKatakana Phonetic ExtensionsKatakana_Phonetic_ExtensionskatakanaphoneticextensionsKayah LiKhitan Small ScriptKhmer SymbolsKhmer_SymbolskhmersymbolsLatin_1latin1Latin_Ext_AlatinextaLatin_Ext_AdditionallatinextadditionalLatin_Ext_BlatinextbLatin_Ext_ClatinextcLatin_Ext_DlatinextdLatin_Ext_ElatinexteLatin Extended-ALatin_Extended_AlatinextendedaLatin Extended AdditionalLatin_Extended_AdditionallatinextendedadditionalLatin Extended-BLatin_Extended_BlatinextendedbLatin Extended-CLatin_Extended_ClatinextendedcLatin Extended-DLatin_Extended_DlatinextendeddLatin Extended-ELatin_Extended_ElatinextendedeLatin Extended-FLatin_Extended_FlatinextendedfLatin Extended-GLatin_Extended_GlatinextendedgLatin_Ext_FlatinextfLatin_Ext_GlatinextgLatin_1_Suplatin1supLatin-1 SupplementLatin_1_Supplementlatin1supplementLetterlike SymbolsLetterlike_SymbolsletterlikesymbolsLinear ALinear B IdeogramsLinear_B_IdeogramslinearbideogramsLinear B SyllabaryLinear_B_SyllabarylinearbsyllabaryLisu_SuplisusupLisu SupplementLisu_SupplementlisusupplementLow SurrogatesLow_SurrogateslowsurrogatesMahjongmahjongMahjong TilesMahjong_TilesmahjongtilesMasaram GondiMath_AlphanummathalphanumMathematical Alphanumeric SymbolsMathematical_Alphanumeric_SymbolsmathematicalalphanumericsymbolsMathematical OperatorsMathematical_OperatorsmathematicaloperatorsMath_OperatorsmathoperatorsMayan NumeralsMayan_NumeralsmayannumeralsMeetei MayekMeetei_Mayek_ExtmeeteimayekextMeetei Mayek ExtensionsMeetei_Mayek_ExtensionsmeeteimayekextensionsMende KikakuiMeroitic CursiveMeroitic HieroglyphsMisc_ArrowsmiscarrowsMiscellaneous Mathematical Symbols-AMiscellaneous_Mathematical_Symbols_AmiscellaneousmathematicalsymbolsaMiscellaneous Mathematical Symbols-BMiscellaneous_Mathematical_Symbols_BmiscellaneousmathematicalsymbolsbMiscellaneous SymbolsMiscellaneous_SymbolsmiscellaneoussymbolsMiscellaneous Symbols and ArrowsMiscellaneous_Symbols_And_ArrowsmiscellaneoussymbolsandarrowsMiscellaneous Symbols and PictographsMiscellaneous_Symbols_And_PictographsmiscellaneoussymbolsandpictographsMiscellaneous TechnicalMiscellaneous_TechnicalmiscellaneoustechnicalMisc_Math_Symbols_AmiscmathsymbolsaMisc_Math_Symbols_BmiscmathsymbolsbMisc_PictographsmiscpictographsMisc_SymbolsmiscsymbolsMisc_TechnicalmisctechnicalmodifierlettersModifier Tone LettersModifier_Tone_LettersmodifiertonelettersMongolian_SupmongoliansupMongolian SupplementMongolian_SupplementmongoliansupplementMusicMusical SymbolsMusical_SymbolsmusicalsymbolsMyanmar_Ext_AmyanmarextaMyanmar_Ext_BmyanmarextbMyanmar Extended-AMyanmar_Extended_AmyanmarextendedaMyanmar Extended-BMyanmar_Extended_BmyanmarextendedbNBNew Tai LueNKoNo_BlocknoblockNumber FormsNumber_FormsnumberformsNyiakeng Puachue HmongOCRocrOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOld UyghurOptical Character RecognitionOptical_Character_RecognitionopticalcharacterrecognitionOrnamental DingbatsOrnamental_DingbatsornamentaldingbatsOttoman Siyaq NumbersOttoman_Siyaq_NumbersottomansiyaqnumbersPahawh HmongPau Cin HauPhags-paPhaistosphaistosPhaistos DiscPhaistos_DiscphaistosdiscPhonetic_ExtphoneticextPhonetic ExtensionsPhonetic_ExtensionsPhonetic Extensions SupplementPhonetic_Extensions_SupplementphoneticextensionssupplementPhonetic_Ext_SupphoneticextsupPlaying CardsPlaying_CardsplayingcardsPrivate Use AreaPrivate_Use_AreaprivateuseareaPsalter PahlaviPUApuaRumirumiRumi Numeral SymbolsRumi_Numeral_SymbolsruminumeralsymbolsShorthand Format ControlsShorthand_Format_ControlsshorthandformatcontrolsSinhala Archaic NumbersSinhala_Archaic_NumberssinhalaarchaicnumbersSmall_FormssmallformsSmall Form VariantsSmall_Form_VariantssmallformvariantsSmall_Kana_ExtsmallkanaextSmall Kana ExtensionSmall_Kana_ExtensionsmallkanaextensionSora SompengSpacing Modifier LettersSpacing_Modifier_LettersspacingmodifierlettersSpecialsspecialsSundanese_SupsundanesesupSundanese SupplementSundanese_SupplementsundanesesupplementSup_Arrows_AsuparrowsaSup_Arrows_BsuparrowsbSup_Arrows_CsuparrowscSuper_And_SubsuperandsubSuperscripts and SubscriptsSuperscripts_And_SubscriptssuperscriptsandsubscriptsSup_Math_OperatorssupmathoperatorsSupplemental Arrows-ASupplemental_Arrows_AsupplementalarrowsaSupplemental Arrows-BSupplemental_Arrows_BsupplementalarrowsbSupplemental Arrows-CSupplemental_Arrows_CsupplementalarrowscSupplemental Mathematical OperatorsSupplemental_Mathematical_OperatorssupplementalmathematicaloperatorsSupplemental PunctuationSupplemental_PunctuationsupplementalpunctuationSupplemental Symbols and PictographsSupplemental_Symbols_And_PictographssupplementalsymbolsandpictographsSupplementary Private Use Area-ASupplementary_Private_Use_Area_AsupplementaryprivateuseareaaSupplementary Private Use Area-BSupplementary_Private_Use_Area_BsupplementaryprivateuseareabSup_PUA_AsuppuaaSup_PUA_BsuppuabSup_PunctuationsuppunctuationSup_Symbols_And_PictographssupsymbolsandpictographsSutton SignWritingSutton_SignWritingsuttonsignwritingSyloti NagriSymbols_And_Pictographs_Ext_AsymbolsandpictographsextaSymbols and Pictographs Extended-ASymbols_And_Pictographs_Extended_AsymbolsandpictographsextendedaSymbols for Legacy ComputingSymbols_For_Legacy_ComputingsymbolsforlegacycomputingSyriac_SupsyriacsupSyriac SupplementSyriac_SupplementsyriacsupplementTagstagsTai LeTai ThamTai VietTai_Xuan_JingtaixuanjingTai Xuan Jing SymbolsTai_Xuan_Jing_SymbolstaixuanjingsymbolsTamil_SuptamilsupTamil SupplementTamil_SupplementtamilsupplementTangut ComponentsTangut_ComponentstangutcomponentsTangut_SuptangutsupTangut SupplementTangut_SupplementtangutsupplementTransport_And_MaptransportandmapTransport and Map SymbolsTransport_And_Map_SymbolstransportandmapsymbolsUCASucasUCAS_ExtucasextUCAS_Ext_AucasextaUnified Canadian Aboriginal SyllabicsUnified_Canadian_Aboriginal_SyllabicsunifiedcanadianaboriginalsyllabicsUnified Canadian Aboriginal Syllabics ExtendedUnified_Canadian_Aboriginal_Syllabics_ExtendedunifiedcanadianaboriginalsyllabicsextendedUnified Canadian Aboriginal Syllabics Extended-AUnified_Canadian_Aboriginal_Syllabics_Extended_AunifiedcanadianaboriginalsyllabicsextendedaVariation SelectorsVariation_SelectorsvariationselectorsVariation Selectors SupplementVariation_Selectors_SupplementvariationselectorssupplementVedic_ExtvedicextVedic ExtensionsVedic_ExtensionsvedicextensionsVertical FormsVertical_FormsverticalformsVSvsVS_SupvssupWarang CitiYijingyijingYijing Hexagram SymbolsYijing_Hexagram_SymbolsyijinghexagramsymbolsYi RadicalsYi_RadicalsyiradicalsYi SyllablesYi_SyllablesyisyllablesZanabazar SquareZnamenny_MusicznamennymusicZnamenny Musical NotationZnamenny_Musical_NotationznamennymusicalnotationANArabic_LetterarabicletterArabic_NumberarabicnumberBNbnBoundary_NeutralboundaryneutralCommon_SeparatorcommonseparatorCSENESETEuropean_NumbereuropeannumberEuropean_SeparatoreuropeanseparatorEuropean_TerminatoreuropeanterminatorFirst_Strong_IsolatefirststrongisolateFSIfsiLeft_To_RightlefttorightLeft_To_Right_EmbeddinglefttorightembeddingLeft_To_Right_IsolatelefttorightisolateLeft_To_Right_OverridelefttorightoverrideLRElreLRIlriLROlroNSMnsmOther_NeutralotherneutralPDFpdfPDIpdiPop_Directional_FormatpopdirectionalformatPop_Directional_IsolatepopdirectionalisolateRight_To_LeftrighttoleftRight_To_Left_EmbeddingrighttoleftembeddingRight_To_Left_IsolaterighttoleftisolateRight_To_Left_OverriderighttoleftoverrideRLErleRLIrliRLOrloSegment_SeparatorsegmentseparatorWhite_SpacewhitespaceWSFalsefalseTruetrue1.12.02.13.03.13.24.04.15.05.15.26.16.26.37.08.09.010.011.012.012.113.014.0V10_0V11_0V12_0V12_1V13_0V14_0V1_1V2_0V2_1V3_0V3_1V3_2V4_0V4_1V5_0V5_1V5_2V6_0V6_1V6_2V6_3V7_0V8_0V9_0v100v11v110v120v121v130v140v20v21v30v31v32v40v41v50v51v52v60v61v62v63v70v80v90Surrogates should never appear in well-formed text, and therefore shouldn't be the basis for line breakingSupplanted by Line_Break property values; see www.unicode.org/reports/tr14yyyEE0y      %123456789ABCDF| %-4lu ???? +-- ===> [SELF] %lu [%s 0x%lx] [0x0] [%lu][%d%lu%4p$%-p%cx%02lX%cx%02lx%cx{%02lx}snprintfpanic: %s buffer overflow%c%03o%c%ocv ref: %s(NULL)""<>\0VOIDWILDSV_UNDEFSV_NOSV_YESSV_ZEROSV_PLACEHOLDER\CV(%s)FREED(null)[%s] [UTF8 "%s"](%g)(%ld) [tainted]<%*s{} { GV_NAME = %s-> %s} %s = 0x%lx "%s" "%s" :: "%s" ->UNKNOWN(%d){UTF8 ,%ld(%s)(%-p)NULL OP IN RUNWARNING: %lx changed from %lx to %lx Can't determine class of operator %s, assuming BASEOP (ex-%s) %s(0x%lx)PARENT*** WILD PARENT 0x%p TARG = %ld ,VOID,SCALAR,LIST,UNKNOWN,SLABBED,SAVEFREE,STATIC,FOLDED,MORESIBFLAGS = (%s) =PRIVATE = (%s) PRIVATE = (0x%lx) GV = %-p (0x%lx) ARGS = %lu => 0x%lx NARGS = %ld CONSTS = (%-p) SV = %s LINE = %lu PACKAGE = "%s" LABEL = "%s" SEQ = %u REDONEXTLASTOTHERREFCNT = %lu PV = "%-p" (0x%lx) INVMAP = 0x%lx TABLE = 0x%lx SIZE: 0x%lx %4lx: %2ld %02lxPMf_PRE %c%.*s%c PMf_PRE (RUNTIME) ,ONCE:USED,TAINTED,SCANFIRST,ALL,START_ONLY,SKIPWHITE,WHITE,NULLPMFLAGS = (%s) TARGOFF/GV = 0x%lx PMf_REPL = CODE_LIST = CODE_LIST = 0x%lx SUB %s = SUB = (xsub 0x%lx %d) FORMAT %s = PL_YesPL_NoANONMAINUNIQUEnullUNDEFINEDSTANDARDPLUG-INSV = 0 (0x%lx) at 0x%lx %*s REFCNT = %ld %*s FLAGS = (PADSTALE,PADTMP,ROK,WEAKREF,IsCOW,PCS_IMPORTED,SCREAM,IMPORTALL, ),IsUV,UTF8SV = UNKNOWN(0x%lx) %s UV = %lu IV = %ld NV = %.*g RV = 0x%lx OFFSET = %lu PV = 0x%lx ( %s . ) CUR = %ld [BOOL %s] REGEXP = 0x%lx LEN = %ld COW_REFCNT = %d PV = 0 STASH USEFUL = %ld ARRAY = 0x%lx (offset=%ld) ALLOC = 0x%lx FILL = %ld MAX = %ld ,REAL,REIFY FLAGS = (%s) Elt No. %ld AUX_FLAGS = %lu (%d%s:%d, hash quality = %.1f%% KEYS = %ld FILL = %lu RITER = %ld EITER = 0x%lx RAND = 0x%lx (LAST = 0x%lx) PMROOT = 0x%lx NAME = "%s" NAMECOUNT = %ld , "%s", (null) ENAME = %s ENAME = "%s" BACKREFS = 0x%lx MRO_WHICH = "%s" (0x%lx) CACHE_GEN = 0x%lx PKG_GEN = 0x%lx MRO_LINEAR_ALL = 0x%lx MRO_LINEAR_CURRENT = 0x%lx MRO_NEXTMETHOD = 0x%lx ISA = 0x%lx Elt %s [UTF8 "%s"] [CURRENT] HASH = 0x%lx REFCNT = 0x%lx AUTOLOAD = "%s" PROTOTYPE = "%s" COMP_STASH SLAB = 0x%lx START = 0x%lx ===> %ld ROOT = 0x%lx XSUB = 0x%lx XSUBANY = 0x%lx (CONST SV) XSUBANY = %ld GVGV::GV FILE = "%s" DEPTH = %ld FLAGS = 0x%lx OUTSIDE_SEQ = %lu PADLIST = 0x%lx HSCXT = 0x%p OUTSIDE = 0x%lx (%s) TYPE = %c TARGOFF = %ld TARGLEN = %ld TARG = 0x%lx FLAGS = %ld NAMELEN = %ld GvSTASH GP = 0x%lx SV = 0x%lx REFCNT = %ld IO = 0x%lx FORM = 0x%lx AV = 0x%lx HV = 0x%lx CV = 0x%lx CVGEN = 0x%lx GPFLAGS = 0x%lx (%s) LINE = %ld FILE = "%s" EGV IFP = 0x%lx OFP = 0x%lx DIRP = 0x%lx LINES = %ld PAGE = %ld PAGE_LEN = %ld LINES_LEFT = %ld TOP_NAME = "%s" TOP_GV TOP_GV = 0x%lx FMT_NAME = "%s" FMT_GV FMT_GV = 0x%lx BOTTOM_NAME = "%s" BOTTOM_GV BOTTOM_GV = 0x%lx TYPE = '%c' TYPE = '\%o' COMPFLAGS = 0x%lx (%s) EXTFLAGS = 0x%lx (%s) ENGINE = 0x%lx (%s) INTFLAGS = 0x%lx (%s) INTFLAGS = 0x%lx NPARENS = %lu LASTPAREN = %lu LASTCLOSEPAREN = %lu MINLEN = %ld MINLENRET = %ld GOFS = %lu PRE_PREFIX = %lu SUBLEN = %ld SUBOFFSET = %ld SUBCOFFSET = %ld SUBBEG = 0x%lx %s SUBBEG = 0x0 MOTHER_RE = 0x%lx PAREN_NAMES = 0x%lx SUBSTRS = 0x%lx PPRIVATE = 0x%lx OFFS = 0x%lx QR_ANONCV = 0x%lx SAVED_COPY = 0x%lx arylen(#)sv(\0) MAGIC = 0x%lx MG_VIRTUAL = &PL_vtbl_%s MG_VIRTUAL = 0x%lx MG_VIRTUAL = 0 MG_PRIVATE = %d MG_FLAGS = 0x%02X TAINTEDDIR MINMATCH REFCOUNTED GSKIP COPY DUP LOCAL BYTES MG_OBJ = 0x%lx PAT = %s MG_LEN = %ld MG_PTR = 0x%lx => HEf_SVKEY ???? - dump.c does not know how to handle this MG_LEN %2ld: %lu -> %lu MG_TYPE = PERL_MAGIC_%s MG_TYPE = UNKNOWN(\%o) WATCHING, %lx is currently %lx %5lu %s SKIP,IMPLICIT,NAUGHTY,VERBARG_SEEN,CUTGROUP_SEEN,USE_RE_EVAL,NOSCAN,GPOS_SEEN,GPOS_FLOAT,ANCH_MBOL,ANCH_SBOL,ANCH_GPOS,PMf_MULTILINE,PMf_SINGLELINE,PMf_FOLD,PMf_EXTENDED,PMf_EXTENDED_MORE,PMf_KEEPCOPY,PMf_NOCAPURE,IS_ANCHORED,NO_INPLACE_SUBST,EVAL_SEEN,CHECK_ALL,MATCH_UTF8,USE_INTUIT_NOML,USE_INTUIT_ML,INTUIT_TAIL,SPLIT,COPY_DONE,TAINTED_SEEN,TAINTED,START_ONLY,SKIPWHITE,WHITE,NULL, SV AV HV CVINTRO,MULTI,ASSUMECV,SHAREKEYS,LAZYDEL,HASKFLAGS,OVERLOAD,CLONEABLE,ANON,UNIQUE,CLONE,CLONED,CONST,NODEBUG,LVALUE,METHOD,WEAKOUTSIDE,CVGV_RC,DYNFILE,AUTOLOAD,HASEVAL,SLABBED,NAMED,LEXICAL,ISXSUB,OOK,FAKE,READONLY,PROTECT,BREAK,pIOK,pNOK,pPOK,TEMP,OBJECT,GMG,SMG,RMG,IOK,NOK,POK,rhash(%)debugvar(*)pos(.)symtab(:)backref(<)arylen_p(@)bm(B)overload_table(c)regdata(D)regdatum(d)env(E)envelem(e)fm(f)regex_global(g)hints(H)hintselem(h)isa(I)isaelem(i)nkeys(k)dbfile(L)dbline(l)shared(N)shared_scalar(n)collxfrm(o)tied(P)tiedelem(p)tiedscalar(q)qr(r)sig(S)sigelem(s)taint(t)uvar(U)uvar_elem(u)vstring(V)vec(v)utf8(w)substr(x)nonelem(Y)defelem(y)lvref(\)checkcall(])ext(~)UNOPBINOPLOGOPLISTOPPMOPSVOPPADOPPVOPLOOPCOPMETHOPUNOP_AUX,KIDS,PARENS,REF,MOD,STACKED,SPECIAL,CONST,KEEP,GLOBAL,CONTINUE,RETAINT,EVAL,NONDESTRUCT,HAS_CV,CODELIST_PRIVATE,IS_QRUNDEFIVNVPVINVLSTPVIVPVNVPVMGREGEXPPVLVAVHVCVFMIOINVLISTPVGVPVAVPVHVPVCVPVFMPVIO_vaJ\a\e\f\n\r\t\bPRINTpanic: POPSTACK linechunk at %s line %ld, <%-p> %s %ld during global destructionEXECInsecure %s%sCan't fork, trying again in 5 secondspanic: kid popen errno read, n=%uCan't fork: %soutFilehandle %2p opened only for %sputFilehandle opened only for %sputunopenedclosedwritesocket%s%s on %s %s%s%-p (Are you trying to call %s%s on dirhandle%s%-p?) Invalid version format (dotted-decimal versions require at least three parts)Invalid version format (no leading zeros)Invalid version format (maximum 3 digits between decimals)Invalid version format (no underscores)Invalid version format (multiple underscores)Invalid version format (underscores before decimal)Invalid version format (0 before decimal required)Invalid version format (negative version number)Invalid version format (non-numeric data)Invalid version format (alpha without decimal)Invalid version format (misplaced underscore)Invalid version format (fractional part required)Invalid version format (dotted-decimal versions must begin with 'v')Invalid version format (trailing decimal)ndefwidthInteger overflow in version %dInteger overflow in versionv.Inforiginalvinf%dPOSIX%.9fVersion string '%s' contains invalid data; ignoring: '%s'Invalid version objectalpha->numify() is lossy%d.%03dv%ld.%ld.0Unknown Unicode option letter '%c'Invalid number '%s' for -C option. Unknown Unicode option value %lu/dev/urandomNORANDOMDETERMINISTICPERL_HASH_SEED_DEBUGSBOX32_WITH_SIPHASH_1_3HASH_FUNCTION = %s HASH_SEED = 0x%02x PERTURB_KEYS = %d (%s)panic: my_snprintf buffer overflowpanic: my_vsnprintf buffer overflowfirstsecondXS_VERSION%s: loadable library and perl binaries are mismatched (got %s handshake key %p, needed %p) Perl API version %s of %-p does not match %s%-p::%s%-p object version %-p does not match $%-p::%s %-pbootstrap parameter %-pexecute on PATHfind, '.' not in PATHPATHCan't %s %s%s%sPERL_HASH_SEEDperl: warning: Non hex character in '$ENV{PERL_HASH_SEED}', seed only partially set PERL_PERTURB_KEYSperl: warning: strange setting in '$ENV{PERL_PERTURB_KEYS}': '%s' PlxP)7lqafDHD>rHTUBHkg&: %Size magic not implementedopen<open>(unknown)HILD_ERROR_NATIVENCODINGLOBAL_PHASEAST_FHPENAFE_LOCALESAINTNICODETF8LOCALETF8CACHEARNING_BITSUUUUUUUUUUUUUUUUUUUU_TOPFETCHSTOREDELETEFETCHSIZEFETCHSIZE returned a negative valueCLEARNEXTKEYFIRSTKEYEXISTSAttempt to set length of freed arraysubstr outside of stringsetenv key (encoding to utf8)Wide character in %ssetenvAttempt to use reference as lvalue in substrpanic: magic_setdbline len=%ld, ptr='%s'n ARRAY SCALAR HASH CODEAssigned value is not a referenceAssigned value is not a%s referencea negative integer${^ENCODING} is no longer supportedassigning to $^OSetting $/ to a reference to %s is forbiddenSetting $/ to a%s %s reference is forbiddenAssigning non-zero to $[ is no longer possible$0Can't set $0 with prctl(): %sCLDIGNORE__DIE__No such hook: %sNo such signal: SIG%sDEFAULTSignal SIG%s received, but no signal handler set. SIG%s handler "%2p" not defined. SIG%s handler "__ANON__" not defined. signoerrnostatusuidpidbandMaximal count of pending signals (%lu) exceeded_SUB__areword_filehandlesitwisendirectore_delimsultidimensionalostderef_qqefaliasingignaturesnicodenievalmro_core.cpanic: hv_store() failed in set_o svname in reg_scan_nameReference to nonexistent named groupmsixxnRegexp out of spaceSequence %.3s... not terminated in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Sequence (%s... not terminated in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/panic: attempting to append to an inversion list, but wasn't at the end of the list, final=%lu, start=%lu, match=%cOverloaded qr did not return a REGEXPAssuming NOT a POSIX class since it doesn't start with a '[' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since no blanks are allowed in one in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/POSIX syntax [%c %c] is reserved for future extensions in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since the '^' must come after the colon in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since a semi-colon was found instead of a colon in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since there must be a starting ':' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/xdigitAssuming NOT a POSIX class since the name must be all lowercase letters in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since there is no terminating ':' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since there is no terminating ']' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/POSIX class [:%s%d%lu%4p:] unknown in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/PERL_RE_COLORSregcomppanic: Unknown flags %d in named_buff_iterpanic: Unknown flags %d in named_buff_scalarpanic: Unknown flags %d in named_buffRegexppanic: Incorrect version for previously generated inversion listpanic! %s: %d: Tried to warn when none expected at '%s'Perl folding rules are not up-to-date for 0x%02X; please use the perlbug utility to report; in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/%sCan't dump inversion list because is in middle of iterating %s[%lu] 0x%04lX .. INFTY %s[%lu] 0x%04lX .. 0x%04lX %s[%lu] 0x%04lX panic: regfree data code '%c'Corrupted regexp opcode %d > %dtupanic! In trie construction, unknown node type %u %sE_TRIE_MAXBUFerror creating/fetching widecharmap entry for 0x%lXpanic! In trie construction, no char mapping for %ldpositivenegativeQuantifier unexpected on zero-length expression in regex m/%d%lu%4p/panic: unexpected varying REx opcode %dLookbehind longer than %lu not implemented in regex m/%d%lu%4p%s/Variable length %s lookbehind with capturing is experimental in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/panic: %s regnode should be resolved before optimization \p{utf8::([<)]>)]>Unicode property wildcard not terminatedThe Unicode property wildcards feature is experimentalplaceholder_charnames::_get_names_infopanic: Can't find '_charnames::_get_names_info -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ() ABCDEGHIJKLMNOPRSTUWYhighlegal%s-0000%s-%XNo Unicode property value wildcard matches:_charnames::_loose_regcomp_lookuppanic: Can't find '_charnames::_loose_regcomp_lookupnumericvaluenumericcanonicalcombiningclasscccagepresentinspace; Timeout waiting for another thread to defineInfinite recursion in user-defined propertyError " in expansion of %.*s%.0f%.*s%.*e%.*s%s%lu/%luUse of '%.*s' in \p{} or \P{} is deprecated because: %sprivate_use%d=Insecure private-use overrideThe private_use feature is experimentalUnknown user-defined property nameIllegal user-defined property nameCan't find Unicode property definition~Insecure user-defined propertyHANGUL SYLLABLE (but this one isn't fully valid) (but this one isn't implemented)#%d POSIX syntax [%c %c] belongs inside character classes%s in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Literal vertical space in [] is illegal except under /xUnmatched [panic: grok_bslash_N set NEED_UTF8\N in a character class must be a named character: \N{...}Ignoring zero length \N{} in character class in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/\N{} here is restricted to one characterUsing just the first character returned by \N{} in character class in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Use of '\%c%c' is not allowed in Unicode property wildcard subpatterns in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Empty \%c in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Missing right brace on \%c{} in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Empty \%c{} in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/%d%lu%4p in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Unicode string properties are not implemented in (?[...])Using just the single character results returned by \p{} in (?[...]) in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Inverting a character class which contains a multi-character sequence is illegal!+foo\p{Alnum}utf8.pmNeed exactly 3 octal digitsUnrecognized escape \%c in character class in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Unrecognized escape \%c in character class passed through in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/False [] range "%d%lu%4p" in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Invalid [] range "%d%lu%4p" in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/False [] range "%*.*s" in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Both or neither range ends should be Unicode in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Ranges of ASCII printables should be some subset of "0-9", "A-Z", or "a-z" in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Ranges of digits should be from the same group of 10 in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/-[]\^"%.*s" is more clearly written simply as "%s" in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/?:?-don't E_COMPILE_RECURSION_LIMITToo many nested open parensUnmatched (In '(*VERB...)', the '(' and '*' must be adjacentIn '(*...)', the '(' and '*' must be adjacentUnterminated verb pattern argumentUnterminated '(*...' argumentUnterminated verb patternUnterminated '(*...' constructACCEPTCOMMITPRUNEasratomic_script_runatomicplbpositive_lookbehindplapositive_lookaheadnlbnegative_lookbehindnlanegative_lookaheadscript_run'(*%d%lu%4p' requires a terminating ':' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Unknown verb pattern '%d%lu%4p' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Unknown '(*...)' construct '%d%lu%4p' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Verb pattern '%.*s' has a mandatory argument in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/In '(?...)', the '(' and '?' must be adjacentSequence (?P<... not terminatedSequence (?P>... not terminatedSequence (%.*s...) not recognized in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/? m can't match in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Useless use of greediness modifier '%c' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/%d%lu%4p is forbidden - matches null string many times in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/%d%lu%4p matches null string many times in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Nested quantifiersUse of quantifier '*' is not allowed in Unicode property wildcard subpatternspanic: regpiece returned failure, flags=%#lx in regex m/%d%lu%4p%s/Illegal range in "# panic: %s: %d: Unexpected operation %dCode point too large in "~ %04lX%cINFTY%c%04lX%c%04lX%c%04lX%cGGGSNJNHLGLMLBLSLTLPLHMBSNGJPAEYAYAEEOYEOYEOWAWAEOEYOUWEOWEWIYUEUYIIDDBBJJALetteraletterCRcrDouble_QuotedoublequoteDQdqEBebE_BaseebaseE_Base_GAZebasegazEBGebgEME_ModifieremodifierEXexExtendextendExtendNumLetextendnumletFOfoformatGAZgazGlue_After_ZwjglueafterzwjHebrew_LetterhebrewletterHLhlKAkaKatakanakatakanaLFlfMBmbMidLettermidletterMidNummidnumMidNumLetmidnumletMLmlMNmnNewlinenewlineNLnlNUOtherotherRegional_IndicatorregionalindicatorRISingle_QuotesinglequoteSQsqWSegSpacewsegspacexxZWJzwjRotatedrotatedTrTransformed_RotatedtransformedrotatedTransformed_UprighttransformeduprightTuUprightuprightAdlamadlamAdlmadlmAghbaghbAhomahomAnatolian_HieroglyphsanatolianhieroglyphsArabarabArabicarabicArmenianarmenianArmiarmiArmnarmnAvestanavestanAvstavstBalibaliBalinesebalineseBamubamuBamumbamumBassbassBassa_VahbassavahBatakbatakBatkbatkBengbengBengalibengaliBhaiksukibhaiksukiBhksbhksBopobopoBopomofobopomofoBrahbrahBrahmibrahmiBraibraiBraillebrailleBugibugiBuginesebugineseBuhdbuhdBuhidbuhidCakmcakmCanadian_AboriginalcanadianaboriginalCanscansCaricariCariancarianCaucasian_AlbaniancaucasianalbanianChakmachakmaChamchamChercherCherokeecherokeeChorasmianchorasmianChrschrsCommoncommonCoptcoptCopticCpmncpmnCprtcprtCuneiformcuneiformCypriotcypriotCypro_MinoancyprominoanCyrilliccyrillicCyrlcyrlDeseretdeseretDevadevaDevanagaridevanagariDiakdiakDives_AkurudivesakuruDogrdogrDogradograDsrtdsrtDuplduplDuployanduployanEgypegypEgyptian_HieroglyphsegyptianhieroglyphsElbaelbaElbasanelbasanElymelymElymaicelymaicEthiethiEthiopicethiopicGeorgeorGeorgiangeorgianGlagglagGlagoliticglagoliticGonggongGonmgonmGothgothGothicgothicGrangranGranthagranthaGreekgreekGrekgrekGujaratigujaratiGujrgujrGunjala_GondigunjalagondiGurmukhigurmukhiGuruguruHanhanHanghangHangulhangulHanihaniHanifi_RohingyahanifirohingyaHanohanoHanunoohanunooHatrhatrHatranhatranHebrhebrHebrewhebrewHirahiraHiraganahiraganaHluwhluwHmnghmngHmnphmnpHunghungImperial_AramaicimperialaramaicInheritedinheritedInscriptional_PahlaviinscriptionalpahlaviInscriptional_ParthianinscriptionalparthianItalitalJavajavaJavanesejavaneseKaithikaithiKalikaliKanakanaKannadakannadaKayah_LikayahliKharkharKharoshthikharoshthiKhitan_Small_ScriptkhitansmallscriptKhmerkhmerKhmrkhmrKhojkhojKhojkikhojkiKhudawadikhudawadiKitskitsKndakndaKthikthiLanalanaLaolaoLaoolaooLatinlatinLatnlatnLepclepcLepchalepchaLimblimbLimbulimbuLinalinaLinblinbLinear_AlinearaLinear_BlinearbLisulisuLycilyciLycianlycianLydilydiLydianlydianMahajanimahajaniMahjmahjMakamakaMakasarmakasarMalayalammalayalamMandmandMandaicmandaicManimaniManichaeanmanichaeanMarcmarcMarchenmarchenMasaram_GondimasaramgondiMedefaidrinmedefaidrinMedfmedfMeetei_MayekmeeteimayekMendmendMende_KikakuimendekikakuiMercmercMeromeroMeroitic_CursivemeroiticcursiveMeroitic_HieroglyphsmeroitichieroglyphsMiaomiaoMlymmlymModimodiMongMongolianmongolianMromroMroomrooMteimteiMultmultMultanimultaniMyanmarmyanmarMymrmymrNabataeannabataeanNandnandNandinagarinandinagariNarbnarbNbatnbatNewanewaNew_Tai_LuenewtailueNkonkoNkoonkooNshunshuNushunushuNyiakeng_Puachue_HmongnyiakengpuachuehmongOgamogamOghamoghamOl_ChikiolchikiOlckolckOld_HungarianoldhungarianOld_ItalicolditalicOld_North_ArabianoldnortharabianOld_PermicoldpermicOld_PersianoldpersianOld_SogdianoldsogdianOld_South_ArabianoldsoutharabianOld_TurkicoldturkicOld_UyghurolduyghurOriyaoriyaOrkhorkhOryaoryaOsageosageOsgeosgeOsmaosmaOsmanyaosmanyaOugrougrPahawh_HmongpahawhhmongPalmpalmPalmyrenepalmyrenePaucpaucPau_Cin_HaupaucinhauPermpermPhagphagPhags_PaphagspaPhliphliPhlpphlpPhnxphnxPhoenicianphoenicianPlrdplrdPrtiprtiPsalter_PahlavipsalterpahlaviQaacqaacQaaiqaaiRejangrejangRjngrjngRohgrohgRunicrunicRunrrunrSamaritansamaritanSamrsamrSarbsarbSaursaurSaurashtrasaurashtraSgnwsgnwSharadasharadaShavianshavianShawshawShrdshrdSiddsiddSiddhamsiddhamSignWritingsignwritingSindsindSinhsinhSinhalasinhalaSogdsogdSogdiansogdianSogosogoSorasoraSora_SompengsorasompengSoyosoyoSoyombosoyomboSundsundSundanesesundaneseSylosyloSyloti_NagrisylotinagriSyrcsyrcSyriacsyriacTagalogtagalogTagbtagbTagbanwatagbanwaTai_LetaileTai_ThamtaithamTai_ViettaivietTakrtakrTakritakriTaletaleTalutaluTamiltamilTamltamlTangtangTangsatangsaTanguttangutTavttavtTeluteluTeluguteluguTfngtfngTglgtglgThaathaaThaanathaanaThaithaiTibetantibetanTibttibtTifinaghtifinaghTirhtirhTirhutatirhutaTnsatnsaTotototoUgarugarUgariticugariticUnknownVaivaiVaiivaiiVithvithVithkuqivithkuqiWanchowanchoWarawaraWarang_CitiwarangcitiWchowchoXpeoxpeoXsuxxsuxYeziyeziYezidiyezidiYiyiYiiiyiiiZanabazar_SquarezanabazarsquareZanbzanbZinhzinhZyyyzyyyZzzzzzzzATermatermCLclClosecloseLOloLowerlowerOLetteroletterSCSContinuescontinueSESepsepSPSpspSTermstermUPUpperupper-1/21/3201/1601/801/641/401/323/803/641/201/161/121/101/91/81/73/201/63/161/51/41/33/82/55/121/27/123/55/82/33/44/55/67/811/123/225/237/249/2511/2613/2715/217/2910121315161718192021222324252627282931323334353637383940414243444546474849506070809010020030040050060070080090010002000300040005000600070008000900010000200003000040000500006000070000800009000010000020000021600030000040000043200050000060000070000080000090000010000001000000020000000100000000100000000001000000000000NaNnanDeDecimaldecimalDidiDigitdigitNoneNuNoYesyesMaybemaybeAIaiALAlphabeticalphabeticAmbiguousambiguousB2b2BAbabbBKbkBreak_AfterbreakafterBreak_BeforebreakbeforeBreak_BothbreakbothBreak_SymbolsbreaksymbolsCarriage_ReturncarriagereturnCBcbCJcjClose_ParenthesiscloseparenthesisClose_PunctuationclosepunctuationCMcmCombining_MarkcombiningmarkComplex_ContextcomplexcontextConditional_Japanese_StarterconditionaljapanesestarterContingent_BreakcontingentbreakCPcpExclamationexclamationGLglGlueglueH2H3h2h3HYhyHyphenhyphenIDidIdeographicideographicInfix_NumericinfixnumericInseparableinseparableInseperableinseperableISisJLjlJTjtJVjvLine_FeedlinefeedMandatory_BreakmandatorybreakNext_LinenextlineNonstarternonstarterNSOPOpen_PunctuationopenpunctuationPOPostfix_NumericpostfixnumericPRPrefix_NumericprefixnumericQUquQuotationquotationSASGsgSpaceSurrogatesurrogateSYsyWJwjWord_JoinerwordjoinerZWzwZWSpacezwspaceDual_JoiningdualjoiningJoin_CausingjoincausingLeft_JoiningleftjoiningNon_JoiningnonjoiningRight_JoiningrightjoiningTransparenttransparentAfrican_FehafricanfehAfrican_NoonafricannoonAfrican_QafafricanqafAinainAlaphalaphAlefalefBehbehBethbethBurushaski_Yeh_BarreeburushaskiyehbarreeDaldalDalath_RishdalathrishFarsi_YehfarsiyehFefefehFinal_SemkathfinalsemkathGafgafGamalgamalHahhahHamza_On_Heh_GoalhamzaonhehgoalHanifi_Rohingya_Kinna_YahanifirohingyakinnayaHanifi_Rohingya_PahanifirohingyapaHehehehHeh_GoalhehgoalHethhethKafkafKaphkaphKhaphkhaphKnotted_HehknottedhehLamlamLamadhlamadhMalayalam_BhamalayalambhaMalayalam_JamalayalamjaMalayalam_LlamalayalamllaMalayalam_LllamalayalamlllaMalayalam_NgamalayalamngaMalayalam_NnamalayalamnnaMalayalam_NnnamalayalamnnnaMalayalam_NyamalayalamnyaMalayalam_RamalayalamraMalayalam_SsamalayalamssaMalayalam_TtamalayalamttaManichaean_AlephmanichaeanalephManichaean_AyinmanichaeanayinManichaean_BethmanichaeanbethManichaean_DalethmanichaeandalethManichaean_DhamedhmanichaeandhamedhManichaean_FivemanichaeanfiveManichaean_GimelmanichaeangimelManichaean_HethmanichaeanhethManichaean_HundredmanichaeanhundredManichaean_KaphmanichaeankaphManichaean_LamedhmanichaeanlamedhManichaean_MemmanichaeanmemManichaean_NunmanichaeannunManichaean_OnemanichaeanoneManichaean_PemanichaeanpeManichaean_QophmanichaeanqophManichaean_ReshmanichaeanreshManichaean_SadhemanichaeansadheManichaean_SamekhmanichaeansamekhManichaean_TawmanichaeantawManichaean_TenmanichaeantenManichaean_TethmanichaeantethManichaean_ThamedhmanichaeanthamedhManichaean_TwentymanichaeantwentyManichaean_WawmanichaeanwawManichaean_YodhmanichaeanyodhManichaean_ZayinmanichaeanzayinMeemmeemMimmimNo_Joining_GroupnojoininggroupnoonNunnunNyanyaPeqafQaphqaphRehrehReversed_PereversedpeRohingya_YehrohingyayehSadsadSadhesadheSeenseenSemkathsemkathShinshinStraight_WawstraightwawSwash_KafswashkafSyriac_WawsyriacwawTahtahTawtawTeh_MarbutatehmarbutaTeh_Marbuta_GoaltehmarbutagoalTethtethThin_YehthinyehVertical_TailverticaltailWawYehYeh_BarreeyehbarreeYeh_With_TailyehwithtailYudhyudhYudh_HeyudhheZainzainZhainzhainAvagrahaavagrahaBindubinduBrahmi_Joining_NumberbrahmijoiningnumberCantillation_MarkcantillationmarkConsonantconsonantConsonant_DeadconsonantdeadConsonant_FinalconsonantfinalConsonant_Head_LetterconsonantheadletterConsonant_Initial_PostfixedconsonantinitialpostfixedConsonant_KillerconsonantkillerConsonant_MedialconsonantmedialConsonant_PlaceholderconsonantplaceholderConsonant_Preceding_RephaconsonantprecedingrephaConsonant_PrefixedconsonantprefixedConsonant_SubjoinedconsonantsubjoinedConsonant_Succeeding_RephaconsonantsucceedingrephaConsonant_With_StackerconsonantwithstackerGemination_MarkgeminationmarkInvisible_StackerinvisiblestackerJoinerjoinerModifying_LettermodifyingletterNon_JoinernonjoinerNuktanuktaNumber_JoinernumberjoinerPure_KillerpurekillerRegister_ShifterregistershifterSyllable_ModifiersyllablemodifierTone_LettertoneletterTone_MarktonemarkViramaviramaVisargavisargaVowelvowelVowel_DependentvoweldependentVowel_IndependentvowelindependentbottombottomandleftbottomandrightleftleftandrightNAnaOverstruckoverstruckrightToptopTop_And_BottomtopandbottomTop_And_Bottom_And_LefttopandbottomandleftTop_And_Bottom_And_RighttopandbottomandrightTop_And_LefttopandleftTop_And_Left_And_RighttopandleftandrightTop_And_RighttopandrightVisual_Order_LeftvisualorderleftDefault_IgnorabledefaultignorableDeprecateddeprecatedExclusionexclusionInclusioninclusionLimited_UselimiteduseNot_CharacternotcharacterNot_NFKCnotnfkcNot_XIDnotxidObsoleteobsoleteRecommendedrecommendedTechnicaltechnicalUncommon_UseuncommonuseAllowedallowedRestrictedrestrictedLeading_JamoleadingjamoLVLV_SyllablelvsyllableLVTlvtLVT_SyllablelvtsyllableNot_ApplicablenotapplicableTrailing_JamotrailingjamoVVowel_JamovoweljamoCNcnControlcontrolPPppPrependprependSMsmSpacingMarkspacingmarkCased_LettercasedletterCcccCfcfCnCntrlcntrlCocoConnector_PunctuationconnectorpunctuationCsCurrency_SymbolcurrencysymbolDash_PunctuationdashpunctuationDecimal_NumberdecimalnumberEnclosing_MarkenclosingmarkFinal_PunctuationfinalpunctuationInitial_PunctuationinitialpunctuationLClcLetterLetter_NumberletternumberLine_SeparatorlineseparatorLlLmlmLoLowercase_LetterlowercaseletterLtltLumarkMath_SymbolmathsymbolMcmcMeMnModifier_LettermodifierletterModifier_SymbolmodifiersymbolNdNlNonspacing_MarknonspacingmarkOther_LetterotherletterOther_NumberothernumberOther_PunctuationotherpunctuationOther_SymbolothersymbolParagraph_SeparatorparagraphseparatorPcpcPdpdPfpfPipiPoPrivate_UseprivateusePspsPunctpunctpunctuationScSkskSmSosoSpace_SeparatorspaceseparatorSpacing_MarkSymbolTitlecase_LettertitlecaseletterUnassignedunassignedUppercase_LetteruppercaseletterZzZlzlZpzpZszsFullwidthfullwidthHalfwidthhalfwidthNaNarrownarrowNeutralWWidewideCancanCanonicalcanonicalCirclecircleComcomCompatcompatEncencFinfinFinalfinalFontfontFrafraFractionfractionInitinitInitialinitialIsoisoIsolatedisolatedMedmedMedialmedialNarnarNbnbNobreaknobreakNon_CanonnoncanonNon_CanonicalnoncanonicalSmallsmallSmlsmlSqrsqrSquaresquareSubSupersuperVertvertVerticalvertical8491103107118122129130132133202214216218220222224226228230232233234240AboveAbove_LeftaboveleftAbove_RightARarATAataATARatarATBatbATBLatblAttached_AboveattachedaboveAttached_Above_RightattachedaboverightAttached_BelowattachedbelowAttached_Below_LeftattachedbelowleftBelowBelow_LeftBelow_RightbelowrightBLblBRbrCCC10CCC103CCC107CCC11CCC118CCC12CCC122CCC129CCC13CCC130CCC132CCC133CCC14CCC15CCC16CCC17CCC18CCC19CCC20CCC21CCC22CCC23CCC24CCC25CCC26CCC27CCC28CCC29CCC30CCC31CCC32CCC33CCC34CCC35CCC36CCC84CCC91ccc10ccc103ccc107ccc11ccc118ccc12ccc122ccc129ccc13ccc130ccc132ccc133ccc14ccc15ccc16ccc17ccc18ccc19ccc20ccc21ccc22ccc23ccc24ccc25ccc26ccc27ccc28ccc29ccc30ccc31ccc32ccc33ccc34ccc35ccc36ccc84ccc91DAdaDBdbDouble_AbovedoubleaboveDouble_BelowdoublebelowHANRhanrHan_ReadinghanreadingIota_SubscriptiotasubscriptKana_VoicingkanavoicingKVkvNK&&&'''''''''!'"'(')'3'5'D'E'G'H'L'M'N'O'S'V'W'X'c'h'''''''''4)6)++++P+Q+U+V+,,---.*00010=0>0002222ost~ #%'(,-Ĩƨ&.GRT`})/1357CDLMN|}ª89TUpqĬŬ45PQlmܭݭ01LMhiخٮ,-HIdeԯկ ()DE`a|}аѰ $%@A\]xy̱ͱ !<=XYtuȲɲ89TUpqijų45PQlmܴݴ01LMhiصٵ,-HIdeԶն ()DE`a|}зѷ $%@A\]xy̸͸ !<=XYtuȹɹ89TUpqĺź45PQlmܻݻ01LMhiؼټ,-HIdeԽս ()DE`a|}оѾ $%@A\]xy̿Ϳ !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm 0v{      8 ; ? @   $ ( FQ8Gpqsu',-5EGst,/24568>?;=>?@AEGIKNWXbdfmpu58@BEFG^_03;=>?A "&',,/89;01679;=>?@ABCD 39:;?GHQWY\/078>?@17:;<>?FGH0494jj0k7kOoPoQoooooooo.0Gefgjmns{BE7;muv"#%&+07DK /0lr~/02;<@I>FPt HPZ` ;<FG A[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123:;<=>?ABCDEFGHIJKLMNOpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp&!'!*!+!,!2!3!`!p!!!$$,0,`,a,b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}~§çħŧƧǧȧɧʧЧѧ֧קا٧!;(p{|  @n`n"A[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123:;<=>?ABCDEFGHIJKLMNOEFpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNPQRSTUVWYZ[\]^_`hp&!'!*!+!,!2!3!`!p!!!$$,0,`,a,b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}~§çħŧƧǧȧɧʧЧѧ֧קا٧p!;(p{|  @n`n"Sequence (?#... not terminated%s in regex m/%d%lu%4p%s/regcomp.cpanic: %s: %d: negative offset: %ld trying to output message for pattern %.*sInvalid quantifier in {,}Quantifier in {,} bigger than %d in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Group name must start with a non-digit word characterpanic: n= > E G I K N U X b d f p  < = > E F I J N U W b d f p w x  ; = > E F I J N W X b d f p y z 124;?@GOPZ\     *456789:;<=>@q+?@JLVZ^abegnqu`]`ab257RTrt   ,0<DFPU_`}4EPZ\]akt}$8;@JPZ~              $ ' ( * / 0 8 9 ; < > D E F G J V W X \ ] ` a f p } ~  !! ! !!!""""# # # # ###)#*#+###&&&&&&&&& &9&<&h&i&&&&&&&&&&&&&&&&&&&&&&&&&&'' ''['a'b'd'e'h'i'j'k'l'm'n'o'p'q'r's't'u'v'''''''''''''''))))))))))))))))))))))))))))))),,,,,,,-p-q----......... .".#.$.%.&.'.(.).*.../.0.2.3.5.:.<.?.@.B.C.K.L.M.N.P.S.U.V.W.X.Y.Z.[.\.].^.....////000000 0 0 0 0 00000000000000000 0*0005060;0=0@0A0B0C0D0E0F0G0H0I0J0c0d00000000000000000000000000000000000000110111111122 2H2P2MNǤ  *ost~ #(,-89tvxƨΨШڨ &.0GT`}ǩʩЩک)7CDLNPZ]`{~ª89TUpqĬŬ45PQlmܭݭ01LMhiخٮ,-HIdeԯկ ()DE`a|}аѰ $%@A\]xy̱ͱ !<=XYtuȲɲ89TUpqijų45PQlmܴݴ01LMhiصٵ,-HIdeԶն ()DE`a|}зѷ $%@A\]xy̸͸ !<=XYtuȹɹ89TUpqĺź45PQlmܻݻ01LMhiؼټ,-HIdeԽս ()DE`a|}оѾ $%@A\]xy̿Ϳ !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm)*78=>?@BCEFP>?@ 056789:;<=>?@ABCDEGHIPQRSTVXYZ[\]^_ghijkl  ;<=>[\]^_`bcefgqv{WX        8 ; ? @ P X      9 @ $ ( 0 : FQ8GIfpqsu'56@DEGstuv,8:;=>?;=>EGIKNWXbdfmpu5GKOPZ\^_0ACPZ`m,0:<?,;0679;?@ABDGPZ 3:;?@AEFGHQ\/78@AFPZpqr17:;<>?FGHPZ p$u$X2[2^22222222y3z3|304748494EEE`jjjnjpjjjjjj0k7k:kDkEkPkZknnOoPoQooooooooop #PSdhp.0GejmBE7;muv"#%&+07@JDKPZ^`,0 mp<@IPR`fBDFQfy|}%2Jtvz{EHKPvy|t HPZ`   &'0:<?wxT`npux} 6aklst{      !"#$%&'()*+,-./0345678:;<=>?@ABCDEFGHIKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      #$%&'()*+,-./01234<=?ABCGHIJKLMNOPQRSTUVXYZ[\]`abcdefghijklmopqrsuv}~qrstwx{~02345>?ABCJKP`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0ayz}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FQRSTUVWX`hprvxz|~N!O!p!!!!$$0,`,a,b,e,f,g,h,i,j,k,l,m,s,t,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopz{|}§çħȧɧʧ˧ѧҧקا٧ڧSTA[(P  `nn"D"  pK`pq0K$%().Y\  : ; < = > A I M N P Q X b d    < = > A C G I K N Q R p r u v    < = > @ A E G I K M N U X b d    < = > A E F I J N U W b d   ; = > ? A E F I J M N O W X b d 1234;GO56789:>@q-1289;=?VXZ^aqu`]`245RTrt  #'),0239<UVWX_`abcems}4;<=BCEkt$,468   ( / < = I J ` p "!#!9!:!!!!!##(#)#########$$%%%%%%%%&&&&            6 8 ; ? I P Y `          6 9 @ V X ` s x        I       ( 0 : `(0ZpNRv56HPw? )*1245:;=EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij #$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjpjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOooooooooooop֌  #PSdhpkp}.0GP')gj{FW`ryUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K    !"#'*,./0:;?@A[\]^a{|}~      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOpqrstuvwxz~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./01WYZ]^`  K`jkmnpq0KM$%().789:=?@Y\`kp : = > P Q X b d f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f p r u v       ) * 1 2 4 5 : < = > E G I K N U X \ ^ _ b d f p q r     ) * : < = > E F I J N U W X [ ] ^ ` b d f p     ; = > E F I J N O T W X _ b d f p z 124;@GOPZ *56789:>@HImq+?@JLPVZ^abegnquIJNPWXYZ^`[]`bcgimno257@RT`mnqrt    y ,0<DFPnpu U_`}4EMPZ\^`kt}$8;=@JMPZ~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FHNPXYZ[\]^_`hp~      $ % ( * / 0 9 ; < > E G J _ ` e f p q r }  !!!! ! !!!!!!!!!$!%!&!'!(!)!*!.!/!0!4!5!9!:!!@!E!F!J!N!O!`!p!!!!!!# #)#+#$$$['a'h'v''''')))))),0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-0-h-o-p---------------------.... .*.../.0.<.=.B.C.S.U.].0000000000 0!0*000106080=0A000000000110111111124MNФ  *,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnost~ "#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧ˧Чѧҧӧԧէ֧קا٧ڧ #(,-@tvxƨΨШڨ &./0GT`}ȩʩϩЩک)7@CDLNPZ]`wz{~ªê۪ު  '(/0[\ijpnp)*78=>?@BCEF>@P 0135EGIPRSUVXY_cdpuv  !;<=>A[\]^_abdef  '(;<>?NP^@u -KPv{(P(0dp{|7@V`h  679<=?V`w   :                6 8 ; ? @ V X ` }         6 @ V ` s    I      $ ( 0 : '(0FQUZp8GIfpqsuv'56@ADEGHPstvw,8:;=>? )*1245:;=>EGIKNPQWX]bdfmpu5GKMPZ^_b0ACDEPZ,0:<?@G,;   0679;?@ABDEFGPZ 3:;?BDGHPQ\  /78@ACPZr  17:;<>?FGHPZ`fgij #$o$$D%//0/40494DGFh9j@j_j`jjjnjpjjjjjjjjjk0k7k9k@kDkEkPkZkckxk}kk@n`nnnnoKoOoPoQoooooooooooop֌ #PSdhpkp}.0Gejms{BE4NUVh  8:;?@EFGJQRl"<Vp56OPVop7;muv  "#%&+-07>@JNO"DKLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjpvy9@ K    !"#$%&'()*+,-./0:<?@[\]^{|}~OP\cp~   K`jkmpq0K$%().Y\ : = > P Q X b d f p   < = > C G I K N Q R f p r u v   <    !"#$%&'()*+,-./0123:;<=>?ABCDEFGHIJKLMNOEFpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp&!'!*!+!,!2!3!`!p!!!$$,0,`,a,b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}~§çħŧƧǧȧɧʧЧѧ֧קا٧p!;(p{|  @n`n"  !"#'(,-./0:;<A[_`a{puvxz~01WY]^_`  K`jklmnpq0KM$%().@Y\`kp : = > P Q X b d f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f p r u v       ) * 1 2 4 5 : < = > E G I K N U X \ ^ _ b d f p q r     ) * : < = > E F I J N U W X [ ] ^ ` b d f p     ; = > E F I J N O T W X _ b d f p z 124;GOPZ *56789:>@HImq+?@JVZ^abegnquIJNPWXYZ^`[]`mo25@RT`mnqrt  y ,0<FPU_`}4EMPZkt$8@JMPZ~ FHNPXYZ[\]^_~     $ % ' ( * / 0 < = ? A D E I J T U _ ` e f p q r  !!!! !!!!!!"!#!$!%!&!'!(!)!*!.!/!9!:!0000000110111111122222223X3Ф  *,@ost~˧Чҧӧԧէڧ #(,-@tƨШڨ &.0GT`}ϩЩک)7@CDLNPZ{~ª  '(/0jp)*78=>?@BCEFP>P 035MPQRSTUVpuv !;?@A[f  '(;<>?NP^@u -KPv{(0dp{|7@V`h  679<=?V`w   :                6 8 ; ? @ ` }         6 @ V ` s    I      $ ( 0 : '(0FQp8Gfpqsuv'56@DEGHPstvw,8>? )*1245:;=>EGIKNPQWX]bdfmpu5GKPZ^_b0ADEPZ,0:,;   0679;?@ABDPZ 3:;?GHPQ\  /78@APZr  17:;<>?FGHPZ`fgij #$o$$D%//0/40494DGFh9j@j_j`jjjpjjjjjjjjk0k7k@kDkPkZkckxk}kk@nnoKoOoPoQoooooooooooo #dhkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv"#%&+-07>@JNODKLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0JPjlpr~/02;<@I>FPt HPZ` ;<FG A[a{BCEFcptuxz~01WY   @AKV`jpqKMP.0?@\^_`kp Q R S U d e f p       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f p w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?@\HImq@JIJNPWXYZ^`[]} 57@T`mnqrt y ,0<@ADPnpu _`}MP8;JMP&+,]bfkxy FHNPXYZ[\]^_~  / 0 e f q r t  !&!'!*!,!2!3!N!O!`!!!!'$@$K$`$()t+v+++,`,,,,-&-'-(---.-0-h-o-q---------------------.C.D.^.....////0000000000 0!0*0.00010607080<0>0@0A00000000011011111111122 2H2`222222223X3q3{33334MNǤФ,@op"˧Чҧӧԧէڧ-036:@xƨΨڨ./0T_`}ΩϩЩکީ7@NPZ\`ê۪  '(/0[\efjlpnp78=>?@BCEFP>@ .0EGSTghlpuv!;A[afpq  '(;<>?NP^47@$-0KP{P(0dop{|7@V`h  679<=?@VW`    : ? @    JNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K a{      !"#$%&'()*+,-./012345678:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      #$%&'()*+,-./01234<=?ABCGHIJKLMNOPQRSTUVXYZ[\]`abcdefghijklmopqrsuv}~EFqrstwx{~0P`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0ayz}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPQRSTUVWX`hprvxz|~N!O!p!!!!$$0,`,a,b,e,f,g,h,i,j,k,l,m,s,t,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopz{|}§çħȧɧʧ˧ѧҧקا٧ڧSTpA[(P  `nn"DLa{      !"#$%&'()*+,-./012345678:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      #$%&'()*+,-./01234<=?ABCGHIJKLMNOPQRSTUVXYZ[\]`abcdefghijklmopqrsuv}~EFqrstwx{~0P`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0ayz}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPQRSTUVWX`hprvxz|~N!O!p!!!!$$0,`,a,b,e,f,g,h,i,j,k,l,m,s,t,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopz{|}§çħȧɧʧ˧ѧҧקا٧ڧSTpA[(P  `nn"DA[      !"#$%&'()*+,-./2345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  ------------./.0.00!0*0106080=0A0000000110111111124MNФ ,@ot| "˧Чҧӧԧէڧ(@tĨŨƨШڨ+0S`}ϩک7@NPZ`wzªê۪ު  '(/0[\jpnp)*78=>?@BCEF>Ppuv!;A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 ` }        6 @ V ` s    I      ( 0 : '(0FpFfpqv36@DHPsvw578>? )*1245:=EGIKMPQWX]dBCFGKPZ_b?@ADEPZ+0:@G9   679;=?CPZ35?P  78?@APZr  7:;<>?BCDFHPZ`fgij #$o$$D%//0/4DGFh9j@j_j`jjjpjjjjjjk0k@kDkPkZkckxk}kk@nnoKoOoooooooooop֌ #PSdhpkp}UV  :;?@EFGJQR56OPop"#%&+-7>@JNODGHKLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjp9@ K A[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp!!!! !!!!!!!!$!%!&!'!(!)!*!.!0!4!>!@!E!F!!!,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧЧѧ֧קا٧!;(p{|  @n`n4Nh  8:;?@EFGJQl"<Vp5Vo"#a{      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOqrstwx{~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0`,kxy      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPX`hp~ ! !!!!!/!0!4!5!9!:!!F!J!N!O!!!0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqyz{|}§çħȧɧʧ˧ѧҧӧԧէ֧קا٧ڧ0[`ipA[(P  `nn4NUVh8Rl"<Vp6OPVp  "DA[a{ptvx{~01W`,kxy FHNPXYZ[\]^_~!!!! !!!!!!$!%!&!'!(!)!*!.!/!5!9!:! C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqI (08@FPX`hp~q r  ! !!!!!/!0!4!5!9!:!!F!J!N!O!p!!!!$$0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧ˧ѧҧӧԧէ֧קا٧ڧ0[\ipA[(P  `nn4NUVh8Rl"<Vp6OPVp  "D!xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ ( * / 0 _ ` e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K A[a{EFpuvxz~01WYZ` XY`n@M-@Y`kp< = M N Q U d q       ) * 1 2 4 5 7 8 : > C G I K M Q R Y ] ^ _ p v       ) * 1 2 4 5 : = E G I K M V X \ ^ _ d q r      ) * : = E F I J M U W X [ ] ^ ` d    ; = E F I J M N O T X _ d z ;@GMN@HImq789;@PIJNPWXYZ^`[mo4@T`mnqrt y ,09Pnpu _au45DEM7MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF>Ppuv!;A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 ` }        6 @ V ` s    I      ( '(0FpFqv3DHPsvw578>? )*1245:=EGIKMPQWX]dBCFGK_b?@ADE+@G9   679;=?C35?P  78?@Ar  7:;<>?BCDFH`fgij #$o$$D%//0/4DGFh9j@j_jpjjjjk0k@kDkckxk}kk@nnoKoOoooooooooop֌ #PSdhpkp}UV  :;?@EFGJQR56OPop"#%&+-7>NODGHKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjp9@ K0:A[a{EFpuvxz~01WYZ` XYjn@M-@Y`kp< = M N Q U d f p q       ) * 1 2 4 5 7 8 : > C G I K M Q R Y ] ^ _ f v       ) * 1 2 4 5 : = E G I K M V X \ ^ _ d f p q r      ) * : = E F I J M U W X [ ] ^ ` d f p    ; = E F I J M N O T X _ d f p z ;@GMNPZ *@HImq789;JPIJNPWXYZ^`[mo4@T`mnqrt y ,09Fnpu _au45DEMPZ7@JM~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!? )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:@G;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij #$o$$D%//0/4DGFh9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@nnoKoOoooooooooop֌ #PSdhpkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv"#%&+-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjp9@ KA[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp!!!! !!!!!!!!$!%!&!'!(!)!*!.!0!4!>!@!E!F!`!p!!!$$,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧЧѧ֧קا٧!;(p{|  @n`n4Nh  8:;?@EFGJQl"<Vp5Vo"0JPjpy xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ ( * e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K 9a{      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOEFqrstwxz~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  7:;<>?HPZ`fgij #$o$$D%//0/4DGFh9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@nnoKoOoooooooooop֌ #PSdhpkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv"#%&+-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~9@ K !(*-.0:A[_`a{uvx{~01WYZ` jnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789:>HImqJPIJNPWXYZ^`[]`mo5@T`mnqrt  y ,0<Fnpu _`}MPZkt8@JM~ FHNPXYZ[\]^_~? A T U q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF^d>P 035MPqrstwxyz{|}~!;?@A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : '(0QpGfv56@DHPtvw8>? )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:@G;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij #$o$$D%//0/4DGFh9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@nnoKoOoooooooooop֌ #PSdhpkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv"#%&+-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~9@ KA[a{puvx{~01WYZ` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 123@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF^d>Pqrstwxyz{|}~!;A[f  '(;<>?NP^ -ABJPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ '(0Fp8qsuv'DEGHPsvw, )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij #$D%//0/4DGFh9j@j_jpjjjjk0k@kDkckxk}kk@nnoKoPoQooooooop֌ #PSdhpkp}UV  :;?@EFGJQR56OPop-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~9@ K0:A[_`a{uvxz~01WYZ` jnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789:>HImqJPIJNPWXYZ^`[]`mo5@T`mnqrt  y ,0<Fnpu _`}MPZkt8@JM~ FHNPXYZ[\]^_~  ? A T U q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF>P 035MPpuv!;?@A[f  '(;<>?NP^@u -KP{(0dp{| GH_a lU W X _ ?NP^47@&(N  679<=?@Ww !OPcpnp  7@T`mnqrtG H N S W X _ d q r =!L!!""#|#}###$$%%%&&&r&~&&&h'v''''()+;0>000000112Q2`222¤ŤƤ0kEGst_aI $0K&(N'*UV  :;?@EFGJQRצ  "4FObc PQ]^SV-0K jk"#()+,36:@ZGHIJNPWXYZ^` GH[a}w x/ 0 H N 9!;!!!!!##{#|#}##%$'$%%&&p&r&()....////80;0>0?0114M¤ŤƤǤ ;HIjq  p< = ] ^  LM} /,0,_,`,S.^.§Чҧӧԧէڧ@Pp{|ppv@G//pjjjj#.0GPyz{}ަ59wU V   ++P.S.11MMǧ˧,-hlGHZ[`b   679;GPZoooo֌  mp  rswytuצަK23yw x +++,O.P.§ǧfh_` 0494EoKoOoPoooooPSdh-0>@JNPKL>lm ?@qr{|Tptx{w`a v w   xy++++++J.O./1014 6 H I  ( 0 : (0ZDG;<^_<`fgij@nnryq/0MPlqswz{|`nQ`k  ; =  #$++E.J..1/1֟-0HP  7:;<>?HPZoop`f  (013LM_l@  @ALPZ^`N0:A[_`a{OP_a  ? A T U p !`$%v'',..000!00010d1e1>@EGs{02IJxy*!,!02IJxy*!,!#A[_`a{puvx{~01WYZ` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 123@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF^d>Pqrstwxyz{|}~!;A[f  '(;<>?NP^@u -KPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ '(0Fp8qsuv'DEGHPsvw, )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij #$o$$D%//0/4DGFh9j@j_jpjjjjk0k@kDkckxk}kk@nnoKoPoQooooooop֌ #PSdhpkp}UV  :;?@EFGJQR56OPop-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~9@ K0:A[_`a{uvx{~01WYZ` jnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789:>HImqJPIJNPWXYZ^`[]`mo5@T`mnqrt  y ,0<Fnpu _`}MPZkt8@JM~ FHNPXYZ[\]^_~? A T U q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF^d>P 035MPqrstwxyz{|}~!;?@A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : '(0QpGfv56@DHPtvw8>? )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:@G;   679;DPZ?GHP  78APZr$%().Y\`  )*P        8 ; ? @   9 @  @ `0pDKpPi j , - !#&+;A[a{tv~ x  :> @ADF ( 5 D E _ |  !!!!! !!!!!!$!%!&!'!(!)!*!:!P0PQRTUV_`bdghikl !;A[f@  9 @ Rf`mooBEFWOP,0 /0jp`ft HPZ`T`npux}pK`pq0K$%().Y\ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d  ; = A E M N b d 124;GO56789:q-1289;=?XZ^aqu]`24RTrt  #')239<VWX_`abcems}456;<=BCkt,468 ,,---.*0.000ost~ %',-Ĩƨ&.GR)/1357CDLM|}ª 0v{      8 ; ? @   $ ( FQ8Gpqsu',-5st/24568>?;=@Afmpu8@BEFG^_3;=>?A "&',/89;;=>?CD  39;?GHQWY\078>17:;<>?FGHjj0k7kOoPooooo.0Ggj{BE7;muv"#%&+07DK- . f g * + A[a{ptv~ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d x   ; = A E M N b d 124;?@GO56789>q-1289;=?XZ^aqu]`24RTrt #')239<@ADFVWX_`abcems}456;<=BCkt,468   q t  !!!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?;=@Afmpu8@BEFG^_3;=>?A`m "&',/89;;=>?CD  39;?GHQWY\078>17:;<>?FGHjj0k7kOoPooooooo.0GgjsFWOP7;muv"#%&+07,0/0jp`ft HPZ`T`npux} h i 1#&  jk ?@0 5 .!/!""8:_`ik+,-.z | "")*bd 0:p q t z $$ ,-.0:;  / 0 D E PQRSUV @   ` f j p s{   ) * `jkm0 : `9    Kmpq0K`P>Pp $ ( 0 : @ 0FQppPjjjjh@jh9jMP 6 9 @ !" 1WY@VW`PpPp gPp Ppuv` !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~@PP,0G0dopi O P T W X _ v y ##C.E.Ũƨ>?Z[\]^`m  78FPmpoop"#%&+KPZ^`;<z{ (013?@LP_w Z [ _ `  !!++֟͟`dp.0             PQ,0@##$D%DGF-0~KPCE (0 x y  4 5    ##''M+P+Z+t+v++++++++<.C.|0`df'. P{(0dop7@V`h`            Pw> )*1245:<EGIKNWX]dfmpuEPZo##c$o$t$u$@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kkkp}  !-67}~?@AB>@DKhz{ACP HPZ`f j   '''',,'-(---.-f-h-2.<.̟͟t|.0    56DoEoPoooo !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~jl@D &(,-.045&( !_`@\^_: < O P V X s x r x ) * : ; N O ]_ ##&&&&&&'' ' '(')'L'M'N'O'S'V'_'a'''''''''p-q---11`b  '(/NRph9j012=>?@BCFGJOWX_`jpyz{}2;PR!067}?@AB>Ph &(,-.045AEPt@$&.0?  N O U V y { Z_w _`} P!S!!!##&&&&&&&&&&&'W'X'U+Z+p,q,~,,,,1.2.D2P2ğ̟Ф0:`}Ωϩکީ`|ê۪kn@VW`  `   6 9 V X s x   I `0/4 /12=>?@BCFGJOWX_`yz{}2@I5ptvx$ ;@nq s Q R u v D E b d = > X Z b d x = > D E b d p v y km"#()+,36:@Z8;JMd e O!P!!!&&&&&&''''+ +$+M+P+U+m,p,q,t,x,~,-....1.-1.111ğ,@`bt| "ŨΨڨT_`7@NPZ\`$' : ? @ )*,0GBP{~{ } ~ LP} M!O!!!##&&''++ +$+`,m,t,x, "@x     o#$c$p$t$`r7BX]  Y_Pn} ~ GHRϩЩ)/1357CDLMpq|}ªݪު[`il 0RSUV>?@Apqv{      8 ; ? @   $ ( FQ8Gpqsu',-5st/24568>?;=@Afmpu8@BEFG^_3;=>?A "&',/89;;=>?CD 39;?GHQWY\078>?@17:;<>?FGH0494jj0k7k@kDkOoPooooooo.0GgjsBE7;muv"#%&+0>DL ppp 7@NPZ\`+  * / ` e f p 0494s{ CX ` 3 4 6 7 Y \ ^ _ \ ^ CDMNRSWX\]ijvwxy** *78=>?@BCEFO^emn.000EF \]_`bc]_`b 9:-0.0*0+0!#')49=GJMOSWY[UW\]_`12457:;=>?BCDEFGHIY\R S 5678;<lm +.'.  : ;   FHKLMQ{ XY,0-0 +0,0=EFGJMPSWX[\cpSUW\]_012457:;=>?BCDEFGHIK$%(). Q R S U ]`:;u}klmt ,,-.opt~ª '.0v{  8 9   $ ( HKLMfmpu^_0k7kBE"#%&+07DJV W oM N M N M N M N ; = M N :;9;45`aDE--,-ĨŨST? @ FGpq3556MNBC?@+,9:=?45GH?@DFU V 005< = < = < = < = 784578st67;=FG:;CDBCJKoopqRSQRPQOPNOMNLMKL 9:egns!#')tursz~qrHL8:49 9 : jjgjyOPpK`pq0K$%().Y\ < = M N Q U < = M N < = M N < = M N U W ; = M N 8;HL56789:qstuz~789;]`459<`au}45DEkt78 ,,---.*00000opt~,-ĨŨ+.STª 0v{    8 ; ? @   $ ( FQFGpq35st57;=MNfmpuBCFG^_?@+,9;=?CD45GH?@BCDFjj0k7kooejms{BE"#%&+07DK  @J56Hy xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~  * / ` p r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/4DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')s{FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K57@T ϩЩ()NRv()[\{|:;<=E F } ~ # # # #)#*#h'i'j'k'l'm'n'o'p'q'r's't'u'''''''''''''))))))))))))))))))))))))))))".#.$.%.&.'.(.).U.V.W.X.Y.Z.[.\.0 0 0 0 0 0000000000000YZ[\]^ ;<[\_`bc=(*[\]^{|}~:>E G }  # #)#+#h'v'''''))))))".*.U.].0000Y_ ;<=>[\]^_abd)*]^}~;<=>F G ~  # # # #*#+#i'j'k'l'm'n'o'p'q'r's't'u'v'''''''''''''))))))))))))))))))))))))))))#.$.%.&.'.(.).*.V.W.X.Y.Z.[.\.]. 0 0 0 0 00000000000000Z[\]^_ =>]^`acd%%1100000 0*0.0001070800010111EGaf%%(*<=>?[\]^{|}~:>9 ; E G }  @!A!"""""""""""#"$"%"&"'"+"4"9":";"M"R"V"_"a"b"c"d"l"n"""""""""""""""""""## # #"#)#+#h'v''''''''''''''')))))))))))))))))))))))))))) ***"*$*%*&*'*)***+*/*4*6*<*?*W*Y*d*f*j*n*o*q*s*u*y********************++.. . . .... .*.U.].0000Y_df ;<=>[\]^_abdOP   * / f j   78FPm5Q S d f  ! ( ) _ ` 00  . / g h + , O@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqyz{|}§çħȧɧʧЧѧ֧קا٧\`ijp !"#%'*np78=>?@BCEF>P0EGSTghlpstuv(p{|  @n`n^es{UV  :;?@EFGJQR" !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPRA[a{89!"4:UVXYZ[]`bcdeghmopqsuv}~EFptvx{~01Wayz}~ FHNPXYZ[\]^_~&!'!*!,!2!3!N!O!`!!!!$$,q,r,t,u,w,~,,,,,,-&-'-(---.-@n"02py˧Чҧ֧ڧSTp!;A[Pp{|    @nnDA[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHIKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOEFpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp&!'!*!,!2!3!`!p!!!$$,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧЧѧ֧קا٧p!;(p{|  @n`n" $$47@  679<=?@//` ,,,-$@$@BCEtu~X ` 3 4 6 7 Y \ ^ _ \ ^ CDMNRSWX\]ijstuwxyqrstuvwxyz{|}~  &!'!*!,!)#+#** !"#%'*np *78=>?@BCEFO^e011txz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K 0@011./P @ @4M 0P34NW'(./:;^_`aptvz{YZ_`@AK`pq0K.Y\ : ; < = A I M N Q X b d q r   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d  ; = A E M N b d 124;FO56789:q-1289;=?XZ^aqu]`24RTrt CD #')239<VWX_`abcems}456;<=BCkt,468x~,kxy    $ % ' ( * / ` e f p q r  |,~,,,o-p----./.0.00*0.01060;0<00000 ost~"pq %',-Ĩƨ&.G,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopz{|}§çħȧɧʧ˧ѧҧקا٧ڧSTpA[(P  `nn"Da{      !"#$%&'()*+,-./012345678:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      #$%&'()*+,-./01234<=?ABCGHIJKLMNOUVXYZ[]`bcdeghmopqsuv}~EFqrstwx{~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0ayz}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPX`hp~N!O!p!!!!$$0,`,a,b,e,g,h,i,j,k,l,m,s,t,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopz{|}§çħȧɧʧ˧ѧҧקا٧ڧSTpA[(P  `nn"DA[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp&!'!*!,!2!3!`!p!!!$$,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧЧѧ֧קا٧!;(p{|  @n`n"A[      !"#$%&'()*+,-./0125679:;<=>?BCDEFGHIKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNO@BCFOPpqrstuvwz{~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1WuyX ` 3 4 6 7 Y \ ^ _ \ ^ 34  CDMNRSWX\]ijstuz_a ,/0;<NOkxy      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hpqrstuvwxyz{|}~      $ ' * 0 3 5 6 8 < = > ? G J W X _ r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!:!;!A!E!J!P!!!!!!,"."/"1")#+#`$$ * *t*w***,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,o-p-....//00607080;00000011111122 2H2P2224@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>? 34  CDMNRSWX\]ijstuz&'     ;<=>@BCD,/0;<NOkxy FHNPXYZ[\]^_~     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!2!3!:!;!A!E!J!P!!!!!!!!!!"" " " " "$"%"&"'","."/"1"A"B"D"E"G"H"I"J"`"a"b"c"m"r"t"v"x"z""""""""""""")#+#`$$ * *t*w***|,~,o-p-....//00607080;0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0e0f0g0h0i0j0p0r0s0u0v0x0y0{0|0~000000000000000000000000000000000000000000000000000011111122 2H2P2224pq\`ij !"#%'*np78=>?@BCEF>P0EGSTghlpstuv.0KM89^eUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPR24?AIJz{uy34  wxyz,/0;<NOkxy     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!(!)!,!.!/!2!3!:!;!A!E!J!P!!!!,"."/"1"`$$ * *t*w*|,~,o-p-....//00607080;00000011111122 2H2P2224pq\`ij *O>P0EGSTghlpstuvUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPR       / 0 amUVYZ]^abefijmnqruvyz}~4<qrwxyz{|}~PQRSVWZ[^_bcfgjknorsvwz{~d=>pqrstuvwxyz{|}~TUXY\]`adehilmpqtuxy|}-4PQRXYZ\^`bcdefhiklmnpqrtwx}~P!`!!!!! !!!!!!$!%!(!)!,!.!/!2!3!5!9!:! ? G J W X _ ` !!!!!! ! !!!!!"!5!9!;!@BCD FHNPXYZ[\]^_~  &!'!*!,!!!!!!!"" " " " "$"%"&"'"A"B"D"E"G"H"I"J"`"a"b"c"m"r"t"v"x"z""""""""""""")#+#**L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0e0f0g0h0i0j0p0r0s0u0v0x0y0{0|0~000000000000000000000000000000000000000000000000000 !"#%'*np *78=>?@BCEFO.0KM89^eP0d p 0:<''   679;GPZ !p^_`aOPX]ctvz{YZKSWY0K< = M N Q U q r < = M N < = M N U V < = M N ; = M N GMNO56789:>@789;cein]`9<u}45DEkt68x~,k,,/.0.*0000000op|~"ĨŨ+/ST{~ê[`il 0>?@Apq  " ( FQFGpq35st57<=MNfmpuBCFG?@+,9;=?CD45GH?@BCDFjj0k7koooo.0Ggjms{07DGHK#OP_a   * / ` p d1e1s{ S U  0:IJstwxyzj p )#+#/-.  S T { | ""....:.<.@.A.].^.0000100013XYcd 0+,xy-.C.D.@.00@-.@a{      !"#$%&'()*+,-./012345678:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      #$%&'()*+,-./01234<=?ABCGHIJKLMNOUVXYZ[]`bcdeghmopqsuv}~EFqrstwx{~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0ayz}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPX`hp~N!O!p!!!!$$0,`,a,b,e,g,h,i,j,k,l,m,s,t,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56789:>@q-89?VZ^aqu]`25RTrt  ,0<U_`abce}4Ekt$8  ( / ` p ,,---.*00000ost~ #(,-ƨ&.GT`})7CDLN|}ª 0v{      8 ; ? @   $ ( FQ8Gpqsu'5EGst,8>?;=>EGIKNWXbdfmpu5G^_0A ",,;0679;D 3?GHQ\/78@17:;<>?H0494jj0k7kOoPoQoooooooo.0GejmBE7;muv"#%&+07DK`A  ; < > A I M N P   > A   @ A G I K M   A E   ? A F I J M 34>@12;=VX45#'),0239UVWXms;<=BCE$,46#%'(ĨRT/135MN,-EG,/2456?@AEGIKNbd58@BEF03;=>?&',/891679=>@ABC9:WY/0>?QoooofgmnN O ?@AB:;FG``}pK`pq0K$%().Y\ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = > @ A E M N U X b d    < = > A F I J N U W b d  ; = > ? A E M N W X b d 124;GO56789:q-1289;=?XZ^aqu]`24RTrt  #')239<VWX_`abcems}4;<=BCkt,468 ,,---.*00000ost~ %',-Ĩƨ&.GR)/1357CDLM|}ª 0v{      8 ; ? @   $ ( FQ8Gpqsu',-5st/24568>?;=>?@AWXfmpu8@BEFG^_3;=>?A "&',/89;01;=>?CD 39;?GHQWY\078>?@17:;<>?FGHjj0k7kOoPooooo.0Gefgjns{BE7;muv"#%&+07DK &     ( / ` p 0494s{ < = I J "!#!9!:!!!!!##(#)#########$$%%%%%%%%&&&&&&&'''''''''!'"'(')'3'5'D'E'G'H'L'M'N'O'S'V'W'X'c'h'''''''''4)6)++++P+Q+U+V+0010=0>02222 /0lr~/02;<@I>FPt HPZ` ;<FGC@AU V FG  CD67{|0010600000 ϩЩpqݪުpq]^BkDkoooo<>DG0--IIJNPWXYZ^`[]}------------------  '(/########%%&&H&T&&&&&&&&&&&&&&&&&&&&&&&&&&&'' ' '(')'L'M'N'O'S'V'W'X'''''''++P+Q+U+V+/0278;PR!-67}~?@AB>KOPhz{P ;<FGpux}23`$%P3#$*+0:< = I J "!#!9!:!!!!!##(#)#######$$%%%%%%%%&&&&&&&&&&&& &!&"&$&&&'&*&+&.&0&8&;&@&A&B&C&H&T&_&a&c&d&e&g&h&i&{&|&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''!'"'(')'3'5'D'E'G'H'L'M'N'O'S'V'W'X'c'e'''''''''4)6)++++P+Q+U+V+0010=0>02222pr~/02;PR"$>IOPhoqs{P ;<FGpux}(04@40/40494#$*+0:   Q&&&& ''BDFQfy|}tvz{EHKP   &'0:<?wx$P%`##)#+#######%%&&H&T&&&&&&&&&&&&&&&&&&&&&&&&&&&'' ' '(')'L'M'N'O'S'V'W'X'''''''++P+Q+U+V+....////0?0A00011011111112 2H2P2MNǤ`}0STghloooop֌ #PSdhp<@IPR`f!-67}~?@AB>KOPhz{P ;<FGpux} ''))3 &(+,1489?CDEHLMNRTfhklQRabpPQR`        # $ ( 0 1 2 4 5 6 ; < > ? t u  !!!! ! !!!!!!!#!&!'!+!,!S!U![!_!`!l!p!z!!!!!!!!!!!!!""""" " " """"""""""!"#"$"%"&"'"-"."/"4"8"<">"H"I"L"M"R"S"`"b"d"h"j"l"n"p"""""""""""""####)#+#######`$$$L%P%t%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& & &&&&&&&&&@&A&B&C&H&T&`&b&c&f&g&k&l&n&o&p&&&&&&&&&&&&&&&&&&''' ' '(')'='>'L'M'N'O'S'V'W'X'v''''''''''))++P+Q+U+Z+....////0?0A00011011111112 2MNǤ`}0STghloooop֌ #PSdhp .0jp<@IPR`f!-67}~?@AB>KOPhz{P ;<FGpux} a00ag&(+,1489?CDEHLMNRTfhklQRabpPQR        # $ ( 0 1 2 4 5 6 ; < > ? t u  !!!! ! !!!!!!!#!&!'!+!,!S!U![!_!`!l!p!z!!!!!!!!!!!!!""""" " " """"""""""!"#"$"%"&"'"-"."/"4"8"<">"H"I"L"M"R"S"`"b"d"h"j"l"n"p"""""""""""""##`$$$L%P%t%%%%%%%%%%%%%%%%%%%%%%%%%%%&& & &&&&&&&@&A&B&C&`&b&c&f&g&k&l&n&o&p&&&&&&&&&&&&&&&&&&&&&&&&'='>'v''V+Z+H2P2 .0jp kp} 00010EGI;,/0;<NObxyp r t !!!"!#!},~,o-p-11pq\`ijjm bk |,},P2Q2222X3q33340P<PSTghl&(1289ACJLRTfh &4@BCEtuz{~ 9:PRSTWX\_vx"'uy) * 1 2 4 5 X ` 3 4 6 7 Y \ ^ _ H I K M \ ^ H I J M NФ ,@pt~ "˧Чҧӧԧէڧ(,-@tƨШڨ.0T`}ϩک7@NPZ`wzê۪ު  '(/0[\jpnp)*78=>?@BCEF>P 035MPpuv!;?@A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : '(0QpGfv56@DHPtvw8>? )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:@G;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij #$o$$D%//0/4DGFh9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@nnoKoOoooooooooop֌ #PSdhpkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv"#%&+-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~9@ K-.  ..00cd ef       `} -0>@JNP kFkPkZk[kbkckxk}kkDGF!00000 000607080<0>0A000000EGafpq PS78=>?@BCEFP  7+00000 0.01070800011122`22`}EGafK....//00000 0!0.0001070@0001111 2H2222223X3q3{33334MNnpEGafoooo`rPR9@ K 0'Q S d f       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w 0:#Q S d f 0:pK`pq0K$%().Y\ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = > @ A E M N U X b d    < = > A F I J N U W b d  ; = > ? A E M N W X b d 124;GO56789:q-1289;=?XZ^aqu]`24RTrt  #')239<VWX_`abcems}4;<=BCkt,468 ,,---.*00000ost~ %',-Ĩƨ&.GR)/1357CDLM|}ª 0v{      8 ; ? @   $ ( FQ8Gpqsu',-5st/24568>?;=>?@AWXfmpu8@BEFG^_3;=>?A "&',/89;01;=>?CD 39;?GHQWY\078>?@17:;<>?FGHjj0k7kOoPooooo.0Gefgjns{BE7;muv"#%&+07DK MBCEFptuxz~&+]bfk FHNPXYZ[\]^_~&!'!ef@F  pxz01WYK`pq0M$%()0?@Y^_`kp : ; < = A I M N Q X b d       ) * 1 2 4 5 7 8 : > A Y ] ^ _ f p r u v w       ) * 1 2 4 5 : = > @ A G I K M \ ^ _ b f x       ) * : = > A E X [ ] ^ ` b f p w     ; = > ? A F I J M N P T W X b f 124?GO\56789:HIm-1289;=?XZ^aquIJNPWXYZ^`[`}247@R`mnq  y#'),0239@ADnpuVWXabcems4;<=BCMPkt,46;JM FHNPXYZ[\]^_~  ( / ` p r t !!!'$@$K$`$t+v+++,,,,&-'-(---.-0-h-o-q-------------------.^.....////0*000@0A00011011111112 2ǤФ,@ost~˧Чҧӧԧէڧ %',0:@xĨΨڨ&.GRT_}Ωϩکީ)/135@CDLMNPZ\|}ªê۪  '(/0lpnp78=>?@BCEF0STghlpuv  '(;<>?NP^47$-KPv(0do{|7@V`h  679<=?VW  : ? @            6 @ I P Y `       6 9 V X s x       I      $ 0 : `(0FQZp8GNRpqsuv',-6HPstw/24568> )*1245:=>?@AEGIKNPQ]d8@BEFG\]^_b3;=>?AEPZ`m "&'0G/89;<   01679=>?CDGPZ 39;?GPQWY\  0>?@FPmp  1FGPZ`fgij#$o$p$u$$D%//0/4DGFh9j@j_j`jjjnjjjjjjjjk0k7kFkPkZk[kbkckxk}kk@nnoKoPoooooooop֌ #PSdhpkp}P')efgjnBEFW`yUV  :;?@EFGJQR7;muv-7>@JNPDKLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K3Q S d f   )*1245:;EGIKNPQWX]dfmpu0Kd f   7:;<>?HPZd f `fgij0,`,C.D.op"#%&+-0--&-'-(---.-%& pK`pq0K$%().Y\ : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J O W X b d 123;GO ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K KMP@\^_`k ,0<@ADnpu _`}MP8;JM0-h-p-q---ǤФ,-ƨΨڨ./0Ωϩکީ7@NPZ\`ê۪p ( 0 : 56H\]b`fgijh9joKoOoooo-0>@JNPLPZ^`'(-/:;uv        ' ( 0000.0?7@T`mnqrt  y ,`,,,,-@x0T_`ϩЩ  '(;<>?NP^47@$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I       (0ZpNRvPw? )*1245:=EGIKNPQWX]dfmpuEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ #$o$p$u$$D%//0/40494DGF@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoooop֌ pkp}"#%&+'OP_a    * / ` e f j d1e1s{  '(-/0;A[_`a{24?AIJ &4YZ #)-/02568:BCEFuv{~`*.01WYZa @AV`jpstuyPp N O Q V X ` d f p q x y       ) * 1 2 3 5 6 8 : < = > C G I K N \ ] f u       ) * 1 2 4 5 : < D G I K N U X _ b f p q r     ) * 4 5 : < E F I J N U W ] ^ ` b f p        ; = D F I J O T X ` b f p z 34;@OPZ   *5678>CDHIMNRSWX\]ijmqstuzJPIJNPWXYZ^`[]` FHNPXYZ[\]^_qrstuvwxyz{|}      ' ( '-(---.-------------------00A000000001.1/101114MN ˧Чҧӧԧէڧ`wz  '(/fh !"#%'*;=oo#PSdh9@ K '(-/0;A[_`a{24?AIJ &4YZ #)-/02568:BCEFuv{~`*.01WYZa @AV`jpstuyPp N O Q V X ` d f p q x y       ) * 1 2 3 5 6 8 : < = > C G I K N \ ] f u       ) * 1 2 4 5 : < D G I K N U X _ b f p q r     ) * 4 5 : < E F I J N U W ] ^ ` b f p        ; = D F I J O T X ` b f p z 34;@OPZ   *5678>CDHIMNRSWX\]ijmqstuzJPIJNPWXYZ^`[]` FHNPXYZ[\]^_qrstuvwxyz{|}      ' ( '-(---.-------------------00A000000001.1/101114MN ˧Чҧӧԧէڧ`wz  '(/fh !"#%'*;=oo#PSdh9@ K0:A[_`a{uvxz~01WYZ` jnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789:>HImqJPIJNPWXYZ^`[]`irmo5@T`mnqrt  y ,0<Fnpu _`}MPZkt8@JM~ FHNPXYZ[\]^_~? A T U q r  !!!! !!!!!!$!%!&!'!(!)!*!:! P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 124@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!:!?@BCEF>Ppuv!;A[f  '(;<>?NP^@u -KPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ '(0Fp8qsuv'DEGHPsvw, )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij #$o$$D%//0/4DGFh9j@j_jpjjjjk0k@kDkckxk}kk@nnoKoPoQooooooop֌ #PSdhpkp}UV  :;?@EFGJQR56OPop-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~9@ Kop'00!0*080;04MNnpoop֌ p9@ K &7PSUVX[\cdhjrs !#234567XYV` U V Q R u v D E b d Z [ b d D E b d 9:T U !!++h,m,op|~`d.0@j_j`jjjOP47PYZ!)-/03478:@FOPXYc`a@KS U   kt,/0;<NOkxy? A !!.!/!!!$%()`,h,w,|,,,..!0001060;0=022MN"0hi>P 0EGst.0GP')^es{BEW0:A[_`a{24?AIJ &4YZ #)-/02568:BCEF{~`*.01WYZa @AV`jpstuyPp N O Q V X ` d f p q x y       ) * 1 2 3 5 6 8 : < = > C G I K N \ ] f u       ) * 1 2 4 5 : < D G I K N U X _ b f p q r     ) * 4 5 : < E F I J N U W ] ^ ` b f p        ; = D F I J O T X ` b f p z 34;@OPZ *5678>CDHIMNRSWX\]ijmqstuzJPIJNPWXYZ^`[]` FHNPXYZ[\]^_qrstuvwxyz{|}'-(---.-------------------00A00000000001.1/101114MN ˧Чҧӧԧէڧ`wz  '(/fh !"#%'*;=oo#PSdh9@ Kwx|}ctvx`*.@AnpN O Q S x y  4 5 X Z     ; = _ ` _airV W X _ '!(!2!3!N!P!!!m,w,~,,-&--.*.3.5.6.9.:.00.000.1/112*,@op|"pq`}0[df@uooF  '(-/0;A[_`a{Z` jn0?^_d f p q v w p q r x w O P X _ p z ?@OPZ\   *56789:>JP`ir}mo57 @ADF Zkt;@~     $ ( * 0 3 5 6 8 < = > A G J T U W X _ !!! !!!!!! !#!$!%!&!'!(!)!*!:!;!A!E!J!N!O!P!!!!,"."/"1")#+#'$@$K$$ * *t*w***t+v+++,,,,-p-q-.^.......//000!000107080=0@01111H2P222MNǤ pt~ "(,0:txΨШ.0_`Ωީ\`wzު[\jl>PEG47@u $opW`w     ? @       @ I P Y }        9 @ X ` x        `'QZGNRf@Dtv8>KPZ\]^AD`m:@;<DG?GAFZmpr p$u$//0494njpjjj7k@kDkFk[kbknnooP')^jmBEFW`y7;muvOP^`q>,0 /0Pjm`ft HPZ`T`npux}24?A@BCEtuz{~uyX ` 3 4 6 7 Y \ ^ _ \ ^ 34  CDMNRSWX\]ijstuwxy,/0;<NOkxyqrstuvwxyz{|}~     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!2!3!:!;!A!E!J!P!!!!,"."/"1"`$$ * *t*w***|,~,o-p-....//00607080;000000111d1e111122 2H2P2224pq\`ij !"#%'*np78=>?@BCEF>P0EGSTghlpstuv^eUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPRw  xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f 7@NPZ\ê۪  '(/0hpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$-KP{(0dop7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZNRp56GPw? )*1245:;EGIKNPQWX]dfmpuZ[\]`EPZ`m,0@<HP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%0/40494DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooopPSdhpkp}')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 mp<@IPR`ft HPZ`  rswzT`nptx{צ5@   8xz01WYKM.0?@\^_`k       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x    ) * : = E F I J N U W X [ ` d f p x      E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt y ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v++++++,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------O.....////0@0A0001101111111112 223MMǤФ,@,0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0fpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$-KP{(0dop7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZNRp56GPw? )*1245:;EGIKNPQWX]dfmpuZ[\]_EPZ`m,0@<HP  78FPmp  7:;<>?HPZ`fgij #$o$p$u$$D%0/4DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kk@nnoEoPooooooppkp}')FW`yUV  :;?@EFGJQR"#%&+KPZ^`q !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 lp<@IPR`ft HPZ` ?@qswz{|`nצ5@   &xz01WY`aKM.0?@\^_`k       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x      ) * : = E F I J N U W X [ ` d f p x      E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v++++++++++,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------J.....////0@0A00011/1111111112 223MMǤФ,@,0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0fpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$-KP{(0dop7@V`h  679<=?VW  : ? @              4 8 ; ? H P Y `       6 9 V X s x       I       `NRp56DPw? )*1245:<EGIKNPQWX]dfmpuZ[\]^EPZ`m,0@HP  78FPmp  7:;<>?HPZ #$o$p$u$$D%0/4DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kkoEoPooooooppkp}')FW`rUV  :;?@EFGJQR"#%&+KPZ^` !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp<@IPR`ft HPZ` ?@MPlצ5@   @PF`btvz{~ PQ]^1WY`a   !;@S`np   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\Z_ FHNPXYZ[\]^_~ / 0 G j q t !9!S!!!!""###{#$%$@$K$`$$%%%%&&&p&''' ' '(')'L'M'N'O'S'V'W'X'_'a'h'v''''''080?0@0A0000001-11111122 2D2`2|22222223w3{3333N.78=>?@BCEF@P $0EISTghlpstuv_a//////A[a{puvxz~01WYZ` Knpq0Mpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K  \xz01WYKM.0?@\^_`k       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : = E F I J N U W X [ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt y ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++/,0,_,`,,,&-'-(---.-0-h-o-q--------------------S.....////0@0A00011011111112 2ǤФ,@§˧-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$-KP{(0dop7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZNRp56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0@<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%0/40494DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ PSdhpkp}')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`yzT`npux{ަ5@ K  Hxz01WYKM.0?@\^_`k       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x    ) * : = E F I J N U W X [ ` d f p w      E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt y ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++/,0,_,`,,,&-'-(---.-0-h-o-q--------------------P.....////0@0A0001101111111112 2MMǤФ,@§ǧ,0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0hpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$-KP{(0dop7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZNRp56GPw? )*1245:;EGIKNPQWX]dfmpuZ[\]`EPZ`m,0@<HP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%0/40494DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooopPSdhpkp}')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 mp<@IPR`ft HPZ`  rswzT`nptx{צ5@   Jxz01WYKM.0?@\^_`k       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x    ) * : = E F I J N U W X [ ` d f p w      E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt y ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++/,0,_,`,,,&-'-(---.-0-h-o-q--------------------P.....////0@0A0001101111111112 223MMǤФ,@§ǧ,0:@xƨΨڨT_}Ωϩکީ       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_GHIJNPWXYZ^` GH[a}w  7@T`mnqrt x FHNPXYZ[\]^_~ S W X _ d j r t !;!=!L!S!!!#$'$@$K$`$$%&&&&~&&&''' ' '(')'L'M'N'O'S'V'W'X'_'a'''''''''+....////0@0A00011-11111112 2D2Q2|222223w3{33334MNǤ.0k78=>?@BCEF@P $0GISTghlpuv $0K&(N'*UV  :;?@EFGJQRצ  $ "4PO`ctvz{~1WY`a   !;@V`np-0K   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_GHIJNPWXYZ^` GH[a}w x FHNPXYZ[\]^_~ G H N j q t !;!S!!!!""#|#}##$'$@$K$`$$%%%%&&&r&''' ' '(')'L'M'N'O'S'V'W'X'_'a'h'v''''''()....////0;0>0@0A0000001-11111122 2D2`2|22222223w3{33334MN¤ŤƤǤ.78=>?@BCEF@P $0EISTghlpstuv_a $0K&(N'*UV  :;?@EFGJQRצ   "4PO`ctvz{~1WY`a   !;@V`np-0K   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_GHIJNPWXYZ^` GH[a}w x FHNPXYZ[\]^_~ G H N j q t !;!S!!!!""#|#}##$'$@$K$`$$%%%%&&&r&''' ' '(')'L'M'N'O'S'V'W'X'_'a'h'v''''''()....////0;0>0@0A0000001-11111122 2D2`2|22222223w3{33334MN¤ŤƤǤ.78=>?@BCEF@P $0EISTghlpstuv_a pPF`btvz{~ PQ]^1WY`a   !;@S`np   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIjqZ_ FHNPXYZ[\]^_~ / 0 G j q t !9!S!!!!""###{#$%$@$K$`$$%%%%&&&p&''' ' '(')'L'M'N'O'S'V'W'X'_'a'h'v''''''080?0@0A0000001-11111122 2D2`2|22222223w3{3333N.78=>?@BCEF@P $0EISTghlpstuv_a pPF`btvz{~ PQ]^1WY`a   !;@S`np   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIjqZ_ FHNPXYZ[\]^_~ / 0 G j q t !9!S!!!!""###{#$%$@$K$`$$%%%%&&&p&''' ' '(')'L'M'N'O'S'V'W'X'_'a'h'v''''''080?0@0A0000001-11111122 2D2`2|22222223w3{3333N.78=>?@BCEF@P $0EISTghlpstuv_a xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghl&&&'''' ' '(')'L'M'N'O'S'V'_'a'''''''''''M+P+Z+,/,0,_,`,,,&-0-f-o-p--------------------2.....////0@0A00011.1111111112 223MM̟ǤФ,@`bt|,0:@xŨΨڨT_}Ωϩکީ7@NPZ\|ê۪.0np78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?VW`   : ? @          4 8 ; ? H P Y `   6 9 V X s x   I ` o#$c$p$t$0/4')FW`rUV  :;?@EFGJQR,0 /12=>?@BCFGJOWX_`yz{}2@Iצ5  xz$1WY`a !_`KM : < N P U X s {       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f r       ) * 4 5 : = E F I J N U W X Z ` d f p x       ) * : = E F I J N W X ` d f v y ;?\HImqZ_IJNPWXYZ^`[_}w  7@T`mnqrt x ,0<@ADnpu LP}8;JM FHNPXYZ[\]^_~ e j r t !P!S!!!#$'$@$K$`$&&&&&''' ' '(')'L'M'N'O'S'V'W'X'_'a'''''''''''M+P+U+,/,0,_,`,p,q,~,,,,&-0-f-o-p--------------------1.....////0@0A00011.1111111112 2D2P223MMğǤ,@`bt|,@xŨΨڨT_`7@NPZ\`.0kp78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?@   : ? @          4 8 ; ? H P Y  o#$c$p$t$')FW`rUV  :;?@EFGJQR,0צ  pptvz1WY`a  !;@_`KMn : < N P U X q {       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 5 : < D G I K N V X \ ^ _ b f r       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_IJNPWXYZ^`[_}w  7@T`mnqrt x ,0<@ADnpu LP} FHNPXYZ[\]^_~ d j r t !O!S!!!#$'$@$K$`$&&&''' ' '(')'L'M'N'O'S'V'W'X'_'a'''''''''''+ +$+,/,0,_,`,m,t,x,,,,&-0-f-o-p-------------------........////0@0A00011-1111111112 2D2P223MMǤ ",@x.0kp78=>?@BCEF@P $0STghlpuv  '(;<>?NP^47 $0K  679<=?@             4 8 ; ? H P Y  o#$c$p$t$'*FW`rUV  :;?@EFGJQRצ  \BPptvz{~1WY`a  !;@_`KMn : < N P U X q } ~       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 5 : < D G I K N V X \ ^ _ b f r       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_IJNPWXYZ^`[_}w  7@T`mnqrt x ,0<@ADnpu  FHNPXYZ[\]^_~ d j r t !M!S!!!#$'$@$K$`$&&&''' ' '(')'L'M'N'O'S'V'W'X'_'a'''''''''''+,/,0,_,,,,&-0-f-o-p-------------------........////0@0A00011-1111111112 2D2P223MMǤ,.0kp78=>?@BCEF@P $0STghlpuv  '(;<>?NP^47 $0K  679<=?@         4 8 ; ? H P Y '*FWUV  :;?@EFGJQRצ  87PX]ptvz{~1WY`a  !;@Y`KMP : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 5 : < D G I K N V X \ ^ _ b f r       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_GHIJNPWXYZ^` GH[a}w  7@T`mnqrt x ,0<@ADnpul FHNPXYZ[\]^_~ U W X _ d j r t !?@BCEF@P $0STghlpuv  '(;<>?NP^47@ $0K  679<=?@'*WUV  :;?@EFGJQRצ  !"4PP`ptvz{~1WY`a   !;@V`-0K   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u   679<=?VW`   : ? @              4 8 ; ? H P Y `   6 9 V X s x   I `NRp56D o#$c$p$t$0/4h9joEoPoooo')FW`rUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp;@IPR!067}?@AB>@DPhAEPtצ5@  Jxz(1WY`aKM.0?@\^_ x y       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x       ) * 4 5 : = E F I J N U W X Z ` d f p x       ; = E F I J O W X ` d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e j r t !!!#$'$@$K$`$''M+P+Z+,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------<.....////0@0A00011.1111111112 223MM͟ǤФ,@,0:@xŨΨڨT_}Ωϩکީ7@NPZ\|ê۪  '(/np78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?VW`   : ? @              4 8 ; ? H P Y `   6 9 V X s x   I `NRp56D o#$c$p$t$0/4h9joEoPoooo')FW`rUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp;@IPR!067}?@AB>@DPhAEPtצ5@  Jxz(1WY`aKM.0?@\^_ x y       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x       ) * 4 5 : = E F I J N U W X Z ` d f p x       ; = E F I J O W X ` d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e j r t !!!#$'$@$K$`$''M+P+Z+,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------<.....////0@0A00011.1111111112 223MM͟ǤФ,@,0:@xŨΨڨT_}Ωϩکީ7@NPZ\|ê۪  '(/np78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?VW`   : ? @              4 8 ; ? H P Y `   6 9 V X s x   I `NRp56D o#$c$p$t$0/4h9joEoPoooo')FW`rUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp;@IPR!067}?@AB>@DPhAEPtצ5@  xz(1WY`aKM.0?@\^_ x y       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x       ) * 4 5 : = E F I J N U W X Z ` d f p x       ; = E F I J O W X ` d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e j r t !!!#$'$@$K$`$''''''M+P+Z+,/,0,_,`,,,&-0-f-o-q--------------------2.....////0@0A00011.1111111112 223MM̟ǤФ,@t|,0:@xŨΨڨT_}Ωϩکީ7@NPZ\|ê۪  '(/.0np78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?VW`   : ? @          4 8 ; ? H P Y `   6 9 V X s x   I `NRp o#$c$p$t$0/4h9j')FW`rUV  :;?@EFGJQR,0 /0jp;@IPR!067}?@AB>Ph &(,-.045AEPtצ5@  xz&1WY`a !_`KM.0? : < O P V X s y       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f r       ) * 4 5 : = E F I J N U W X Z ` d f p x       ) * : = E F I J N W X ` d f v y ;?\HImqIJNPWXYZ^`[_}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e j r t !!!#$'$@$K$`$&&&}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!#$'$@$K$`$t+v++++++++++,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------E.....////0@0A00011.1111111112 223MM֟ǤФ,@,0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0fpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$0KP{(0dop7@V`h  679<=?VW  : ? @              4 8 ; ? H P Y `       6 9 V X s x       I       `NRp56DPw? )*1245:<EGIKNPQWX]dfmpuZ[\]^EPZ`m,0@  78FPmp #$o$p$u$$D%0/4DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kkoEoPoooooopkp}')FW`rUV  :;?@EFGJQR"#%&+KPZ^` !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp<@IPRt HPZ` (013?@LP_צ5@   xz01WY`aKM.0?@\^_       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x      ) * : = E F I J N U W X [ ` d f p x       ; = E F I J O W X _ d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!#$'$@$K$`$t+v++++++++++,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------C.....////0@0A00011.1111111112 223MM֟ǤФ,@,0:@xŨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0fpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$0KP{(0dop7@V`h  679<=?VW  : ? @              4 8 ; ? H P Y `       6 9 V X s x       I       `NRp56DPw> )*1245:<EGIKNPQWX]dfmpuEPZ,0@ #$o$p$u$$D%0/4DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kkoEoPooookp}')FW`rUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp;@IPRz{t HPZ`צ5@   xz01WY`aKM.0?@\^_       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x      ) * : = E F I J N U W X Z ` d f p x       ; = E F I J O W X ` d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!#$'$@$K$`$t+v++++++++,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------C.....////0@0A00011.1111111112 223MM͟ǤФ,@,0:@xŨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0`dfnp78=>?@BCEF@P .0STghlpuv  '(;<>?NP^47$0KP{(0dop7@V`h  679<=?VW   : ? @              4 8 ; ? H P Y `       6 9 V X s x       I `NRp56DPw> )*1245:<EGIKNWX]dfmpuEPZ #$o$p$u$0/4h9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kkoEoPooookp}')FW`rUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp;@IPR-0~KPz{CEt HPZ`צ5@  Jxz(1WY`aKM.0?@\^_ x y       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x       ) * 4 5 : = E F I J N U W X Z ` d f p x       ; = E F I J O W X ` d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!#$'$@$K$`$''M+P+Z+,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------<.....////0@0A00011.1111111112 223MM͟ǤФ,@,0:@xŨΨڨT_}Ωϩکީ7@NPZ\|ê۪  '(/np78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K   ? @ U W    > A F H J N U V  ; = M O 1248GO9:rsz-/27:;qu23RSrs "'):;X[bceikls}4568BCklmt-467  &'ŨƨJKOR)-./12CDLM|}ª    8 9 8<BGpqsu'*-.0145024568>?@Afmpu>@CE^_9;=>@A "$'(),38;=?@AB 59:;QRTW028>16:;<>?BCDM  ; < > ? @ A I M O P   > ? @ A   > ? @ A   A E   > C W X 0124EF>?+-89;<VXbegn45#%),0239WXabcemn56DE$'*,#%'(ĨRT34MN{|}~EG,/56>@AEMNWXbd5678@BEF03;=>? ",-./8905=>@A9:WY/0>?FG       : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J O W X b d 0;@FGO56789:>@q+9:?VZ^abegnqu25RTrt ,0<U_a}4Ekt$8  #(,-ƨ+.GT)7CDLN{~ª      8 ; 8Gpqsu'345EGst,8>?;=>EGIKNWXbdfmpu5G^_0A,,;0679;>?D 3?Q\/78@17:;<>?EFH K L J M @BKM89_? @ N O ? @ G H F I ?@12UVns>@')46/145,-GI67&'-.5678 ;<BC#< = A E M N R S V X b d < = A C M N Q R u v < = A E M N b d < = V W b d C E b d 8;5678qrtv/178=?XZ^a34STst"#239:;<VW[_iklm8;lm,-78%&,-ĨŨ+.GJKO-.2357    9 ; <B*,13st/0;=8>BCFG39?@$&()/39;CD  35;?RTY\27?@67BCDEGHkk p P 0P0  Pp@jpj`oo  @nn`p  @` P @ ФPPP ` 01 @ ` `  @`/0@00  @ @  ` p0P,`,0004P`p0@ /0 $,-`P0p@` 101p jk @ 0DFP`xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K  xz01WY`aKM.0?@\^_       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x      ) * : = E F I J N U W X [ ` d f p x       ; = E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`=@Afmpu8@BEFG^_3;=>?A "&',/89;;=>?CD 39;?GHQWY\078>?@17:;<>?FGH0494jj0k7kOoPooooo.0GgjsBE7;muv"#%&+07DL "&'()*/3HIqtux()*+,-/0MNY\kmqrsuxz@AFHIJTUVYghikp                              " # 34TUtv rs       !&'()*/3@AHIKnpx()*+,-/NY\kmqrsuxzAFHIJTUV`abfhi y@r                         " # $ 034EQTptvD @A      MN !&'IKxywx$%HIvxxz)*,- 79+,#$35\]mnpq}() 57'(13[\kmqr)* BCop&'"# FGgjA !"@AKnpqtu0M`kp                       ! # $ !"EFeg                                                      cdjkghbcefde`aijhiabfg ! DEjkNO  CDGH            ! # $ ,/WYnprs|}./;=be$% AB`bOP =@uw%&*+/0 /1Y[z|-.()*,noyPW"$%&'(qtuvsup 9;]`Ωϩکީ`$-0PPp@0-- ppjj  P` P0P0p   ` b r x           ` b      ` b      _ b !+RV #@C`cMSΫЫѫҫqs `b   PQ     `fgijl : < > M N P U X b d > C G I K M > E G I K M U X b d > E F I J M U W b d > E F I J M W X b d 0:@FGHq~+6VZbcgiqu24RTrt ):;at5D&-#(ĨGO)3      8Fsu'3EG,4>EGIKMWXbd5B0=@A +,70679 Q\/78<17:;<>?@CD cn^bfg"+PUG          89  EF>?899:>?AB7M N M N M N M N M N DEĨŨFG56MNBC?@9:?@HL78ceinuz+.{~ªpuªê' 5678;<{}67t u ^_34-; = :;NO:;45z{,-STpq45+,=>45DE-.0: P Q S U d f p r       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f t u v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z /0;@FGOPZ 456789:@HImqJKLNOP5@T`mnqrt ,0<Fnpu _`}MPZ8@JMP    t u %%(,-@tƨШڨ.0TЩک7@NPZ`pqwzê         6 8 ; ? I GRv56@DHPt8>? )*1245:;EGIKNWX^dfmpuHPZ^bAPZ,0<@G;   679;DPZ@EFGHP  78APmr  7:;<>?HPZ`fgij[0:f p f p f p f p f p PZ 4@JFPPZ@JШڨ ЩکPZ@ I fp6@PZPZ0<PZPmPZ7< = < = < = < = 9:45788 ; st67;=FG:;CDBC  9:`a? @ 34>?GHEFq r 78  `b),WX[_$&giqr ?@:;N O ABFG-. r t KLNO  %%tw?@EFu v ;?^aUW37 @ABC;?GHLMZ[023:XZ-4OS@N۫  ] ^ T W z 7 : X ` x  ) * 1 2 4 5 7 8 : Y ] ^ _  ) * 1 2 4 5 : \ ^ _ ` q r  ) * : X [  ; /@HIm!?@PRZ^abegnqu #2CRcmnqPc MSU4EM$MP #@^bfiqrs "0G)`pqtz{~ΫЫѫҫ۫       6 8uv'DEGHUs,)*1245:50@G , 0 3\/r 1lQ S Q R  >?fmpuRfq    p q         MN~6723tu46 stŨƨ  45^`CE_`=>78;=59<>@A#= > = > = > = > =>GH@A@0` p     @ W X %'CD24 L M  H I )*=><= H I stvz<=.0  : ; E I Q R S V   G I K M p r %%%%%%%%%%%%&&&& & &&&&&& &9&<&@&A&B&C&`&b&c&f&g&k&l&n&o&p&&&&&&&&&&&&'''W'X'['a'b'e'h''''''))))))U+Z+t+v+++,,,,,-&-'-(---.-0-h-o-p-------------------..... ./.0.2.3.5.:.?.@.K.L.M.N.P.S.MNФ  *,@ost~˧Чҧӧԧէڧ #(,089:@t &0G_`ǩʩΩϩЩީ)@CDL\]  '(/0lp)*P>@puv  '(;<>?NP^47$-KPv(0do{|7@V`h  679<=?VX  : ? @            6 @ I X Y `       6 @ V X s x       I      $ `(0FQZp8INRfqsuv'DEGHPstuvw,:;=> )*1245:=>PQ]b5GKOP]^_b0CE,;<   0?@AB 3:;@AFGPQ\  /@AZmr  1FG`fgij #$o$$D%//0X2^22222y3|3/4DEEGFh9j@j_jpjjjjk0k:kDkEkFk[kbkckxk}kk@nnnnoKoPoQooo֌kp}P')ejmBEFW`yUV  :;?@EFGJQR7;muv-7>NPDKLq> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~.0jm%2JPv|t HPZ` T  " ; < t u  !!!!!!#!+!,!T!V![!\!^!_!`!l!p!z!!!!!!!!!""""" " " """"""""""!"#"$"%"&"'"-"."/"4"8"<">"H"I"L"M"R"S"`"b"d"h"j"l"n"p"""""""""""""##`$$%L%P%u%%%%%%%%%%%%%%%%%%%%%%%%%%%&& & &&&&&@&A&B&C&`&b&c&f&g&h&i&k&l&n&o&p&&&&&&&&&&&&&&&&&&&&&&&W'X'v''U+Z+H2P2 .0jp]A[a{cpQ S &,]bfkxy/ 0 q r  *!,!2!3!N!O!`!!`,,"˧Чҧӧԧէڧ./0[\efj!;A[0p `,,P  _`}A[a{puvxz~01WYZ` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 124@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF>Ppuv!;A[f  '(;<>?NP^ -ABJPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ '(0Fp8qsuv'DEGHPsvw, )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij #$D%//0/4DGFh9j@j_jpjjjjk0k@kDkckxk}kk@nnoKoPoQooooooop֌ #PSdhpkp}UV  :;?@EFGJQR56OPop-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~9@ K f p 0:+Q S d f 06oo֌  0:?          6 8 ; ? I P Y 12//110'00000 000607080<0>0000112223X3EGa #dh0p !"`ntuKM$%().@\`abfgkp : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d  ; = A E M N b d 124;GO56789:q-1289;=?XZ^aqu]`24RTrt  y #')239<VWX_`abcems}456;<=BCkt,468  * / ` e j p ,,---.*0.000ost~ %',-@sĨƨ&.GR)/1357CDLM|}ª 0v{      8 ; ? @                  ( 0EFUp8Gpqsu',-5st/24568>?;=@Afmpu8@BEFG^_3;=>?A "&',/89;;=>?CD 39;?GHQWY\078>?@17:;<>?FGH0494jj0k7kOoPooooo.0GgjsBE7;muv"#%&+07L pK`pq0K$%().Y\ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d  ; = A E M N b d 124;GO56789:q-1289;=?XZ^aqu]`24RTrt  #')239<VWX_`abcems}456;<=BCkt,468   * / ` e j p ,,---.*0.000ost~ %',-Ĩƨ&.GR)/1357CDLM|}ª 0v{      8 ; ? @   $ ( FQ8Gpqsu',-5st/24568>?;;<=>?@ABCDGHYZ[\]^ ;<[\_`bcX2[22222y3z37484EE^`}0:`jkmf p f p f p f p f p PZ *@JFPPZ@JPZ *Шڨ ЩکPZ0 : fp6@PZPZ0:PZPZPZ`jjjjjPkZk@JPZ#< > G J 0000;0=000000000TVefooy| ,-./:<~ D E  $ ' ""  O####&&&&&&&&& &9&<&h&i&&&&&&&&&&&&&&&&&&&&&&&&&&'' 'd'e'....////000000 0*0005060;0=0@0B0C0D0E0F0G0H0I0J0c0d0000000000000000000000000000000000011011111122 2H2P2MNǤ05EGIPQRXY_ghikl  ;<=>[\]^_fgqp #p mpBDFQfy|}%2Jtvz{EHKt HPZ`  &'0:<?wxT-.)*78=>?@BCEFP89TUpqĬŬ45PQlmܭݭ01LMhiخٮ,-HIdeԯկ ()DE`a|}аѰ $%@A\]xy̱ͱ !<=XYtuȲɲ89TUpqijų45PQlmܴݴ01LMhiصٵ,-HIdeԶն ()DE`a|}зѷ $%@A\]xy̸͸ !<=XYtuȹɹ89TUpqĺź45PQlmܻݻ01LMhiؼټ,-HIdeԽս ()DE`a|}оѾ $%@A\]xy̿Ϳ !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm89TUpqĬŬ45PQlmܭݭ01LMhiخٮ,-HIdeԯկ ()DE`a|}аѰ $%@A\]xy̱ͱ !<=XYtuȲɲ89TUpqijų45PQlmܴݴ01LMhiصٵ,-HIdeԶն ()DE`a|}зѷ $%@A\]xy̸͸ !<=XYtuȹɹ89TUpqĺź45PQlmܻݻ01LMhiؼټ,-HIdeԽս ()DE`a|}оѾ $%@A\]xy̿Ϳ !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlmOP\c       / 0 0474oo3!"?@   DFb'd',,,,../.S.U.vxVX qr )*]^>  OP\cpK`pq0K$%().Y\ : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J N W X b d 56789:>@q]`25RTrt  ,0<4Ekt$8   * / f p ,,---.*000506000ost~ #(,-ƨ&.GT)7CDLN 0v{      8 ; ? @   $ ( FQ8Gpqsu'5EGst,8>?;=>EGIKNWXbdfmpu5G^_0A,;0679;?@ABD 3:;?GHQ\/78@17:;<>?FGHjj0k7kOoPoQoooooo.0GejmBE7;muv"#%&+07DK }~;<=>F G ~  # # # #*#+#i'j'k'l'm'n'o'p'q'r's't'u'v'''''''''''''))))))))))))))))))))))))))))#.$.%.&.'.(.).*.V.W.X.Y.Z.[.\.].00 0 0 0 0 000000000000000 0>?6789:;<=>?@ABCDEHIPQRSZ[\]^_ =>]^`bce[2^2222222z3|38494EE7A0B0C0D0E0F0G0H0I0J0c0d0000000000000000000000000000000000012gqPSdh ( * 1w x   tvuv`m?@EFpq |}d f Z\  45JLab57Z\]a};@~       ' ( V W X \ ] ` ,,,-p-q-......*...0.2.3.5.<.?.@.B.C.K.L.M.N.P.].^.00 ΨШ.0ǩʩ]`WX  P X   9 @ GI@D8:;=KOZ\AC<?DGAEAF p$u$njpjjj7k:kDkEknn  :.<.=#$&'*+<?@[^{~pxz~01WY  Kmpq0M$%()0?@Y^_`kp : = > P Q X b p     ) * 1 2 4 5 7 8 : Y ] ^ _ r u v w     ) * 1 2 4 5 : = > \ ^ _ b p x     ) * : = > X [ ] ^ ` b x     ; = > N P T W X b p y z OP *46789@HImLPIJNPWXYZ^`[`ab}2@R`mnq   y@A 4EM\]akt}$MPZ~ FHNPXYZ[\]^_~  " $ 8 9 > D J V W X \ ] a e p r u } !!!!! ! !!!!!!!#!+!,!T!V![!\!^!_!`!l!p!z!!!!!!!!!""""" " " """"""""""!"#"$"%"&"'"-"."/"4"8"<">"H"I"L"M"R"S"`"b"d"h"j"l"n"p"""""""""""""""# #####)#+###'$@$K$$%L%P%u%%%%%%%%%%%%%%%T/135MN{|}~,-EG,/2456>@AEGIKNWXbd58@BEF03;=>? "&',/890679=>@ABC9:WY/0>?Qooooegms"#+,<?^_|}~   2 5 @ A D E R S a e z  !!!! !!!!!!$!%!(!*!,!.!/!2!3!9!?\]^_UV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~p@A    @A@\^_0d p 0:PwWpK`pq0K$%().Y\ : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J N W X b d 124;GO56789:>@q+?VZ^abegnqu]`25RTrt  ,0<U_`}4Ekt$8 ,,---.*00000ost~ #(,-ƨ&.GT)7CDLN{~ª 0v{      8 ; ? @   $ ( FQ8Gpqsu'5EGst,8>?;=>EGIKNWXbdfmpu5G^_0A,,;0679;?@ABD 3:;?GHQ\/78@17:;<>?FGHjj0k7kOoPoQoooooooo.0Gejms{BE7;muv"#%&+07DK : ? @ @E @AKnpq0M@Y`kp : = > P Q X b r     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 124@F@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq CDyPnpu U4EM$MPZx5!9!0-h-------------------00<0=0A0000000110111111124MNФ  *,no #@t &0G`})@CDL`pqwz{~ªê۪ݪ  '(/np)*78=>?@BCEF>Ppuvfpq  '(;<>?NP^ -ABJPvP(0d7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I  $ '(0Fp8qsuv'DEGHPsvw, )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij #$D%//0/4DGFh9j@j_jpjjjjk0kckxk}kkoKoPoQop֌ #PSdhpkp}  -NO !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~9@ Ktuz{YZ@A$%()q r FGCDx~,kxyq r  |,~,o-p-/.0.001060;0<00000  pqϩЩpqݪު\`ijpq@kDkoooooo7>KLФ  '(;<>?NP^47@ 47@V`h e f  ,0<@ADP!P!8;JMP   xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ ` a /0 !G;@O@PPnpu _`}`ê۪,:<?G"#'(     9 ; ['a'.... .".vy3$%+,\] ?@ !!""ij1%&  jk y z 0 8 !! ! !89jk()[\{|:;<=    E F } ~ # # # #)#*#h'i'j'k'l'm'n'o'p'q'r's't'u'''''''''''''))))))))))))))))))))))))))))..".#.$.%.&.'.(.).B.C.U.V.W.X.Y.Z.[.\.0 0 0 0 0 000000000000000?@56789: 9:PRSTWX\_vx"'uy) * 1 2 4 5 X ` 3 4 6 7 Y \ ^ _ H I K M \ ^ H I J M 34  CDMNRSWX\]ijstuz&'     ;<=>@BCD,/0;<NOkxy FHNPXYZ[\]^_~     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!2!3!:!;!A!E!J!P!!!!!!!!!!"" " " " "$"%"&"'","."/"1"A"B"D"E"G"H"I"J"`"a"b"c"m"r"t"v"x"z""""""""""""")#+#`$$ * *t*w***|,~,o-p-....//00607080;0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0e0f0g0h0i0j0p0r0s0u0v0x0y0{0|0~000000000000000000000000000000000000000000000000000011111122 2H2P2224pq\`ij !"#%'*np78=>?@BCEF>P0EGSTghlpstuv.0KM89^eUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPRI24?AIJ #)-/0289@Ftuz{~SVuy< = X ` 3 4 6 7 Y \ ^ _ > ? V X \ ^ V W > ? W X 34  CDMNRSWX\]ijstuz./av56,/0;<NOkxyqrstuvwxyz{|}~     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!2!3!:!;!A!E!J!P!!!!,"."/"1")#+#`$$ * *t*w***|,~,o-p-....//00607080;00000011111122 2H2P2224pq\`ij !"#%'*np78=>?@BCEF>P0EGSTghlpstuv'(>?WX01^eUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPR24?AIJ@BCEtuz{~uyX ` 3 4 6 7 Y \ ^ _ \ ^ 34  CDMNRSWX\]ijstuz,/0;<NOkxyqrstuvwxyz{|}~     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!2!3!:!;!A!E!J!P!!!!,"."/"1")#+#`$$ * *t*w***|,~,o-p-....//00607080;00000011111122 2H2P2224pq\`ij !"#%'*np78=>?@BCEF>P0EGSTghlpstuv^eUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPR&(1489?CILRTfh &4@BCEtu~ 9:PRSTWX\_vx"') * 1 2 4 5 X ` 3 4 6 7 Y \ ^ _ H I K M \ ^ H I J M CDMNRSWX\]ijstuwxy&'     ;<=>@BCD FHNPXYZ[\]^_~  &!'!*!,!!!!!!!"" " " " "$"%"&"'"A"B"D"E"G"H"I"J"`"a"b"c"m"r"t"v"x"z""""""""""""")#+#**L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0e0f0g0h0i0j0p0r0s0u0v0x0y0{0|0~000000000000000000000000000000000000000000000000000 !"#%'*np *78=>?@BCEFO.0KM89^e #)-/0289@Ftu~SV< = X ` 3 4 6 7 Y \ ^ _ > ? V X \ ^ V W > ? W X CDMNRSWX\]ijstuwxy./av56qrstuvwxyz{|}~  &!'!*!,!)#+#**00 !"#%'*np *78=>?@BCEFO'(>?WX01^eU #)-/0289BCEFSV< = > ? V X V W > ? W X ./av5600'(>?WX01\]bh//@      P  @ `PPP`P%/@4DFhk@nnoooP0P`pP P  d f 06 0:`jf p f p f p r x f p x  X _ f y PZ 4@Ji}FPPZ@JPZp q t z P!!!!`$$$%v'',,00!0*080;011 2*2H2P2Q2`22222 *06Шڨ ЩکPZ4@y $ABJKX`y         @ I }      X ` x      0 : `'QURp6@PZPZ0<PZPmPZ$o$`jjjjjPkZk[kbknn`y@JPZq./>  ./`` f p @j_j`jjjnjpj`  y/ 0 `m 0:EPZpK`pq0K$%().Y\ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d  ; = A E M N b d 124;GO56789:q-1289;=?XZ^aqu]`24RTrt  #')239<VWX_`abcems}456;<=BCkt,468 ,,---.*0.000opt~ %',-Ĩƨ&.GR)/1357CDLM|}ª 0v{      8 ; ? @   $ ( FQ8Gpqsu',-5st/24568>?;=@Afmpu8@BEFG^_3;=>?A "&',/89;;=>?CD 39;?GHQWY\078>?@17:;<>?FGHjj0k7kOoPooooo.0Ggj{BE7;muv"#%&+07DKQ S d f    E F I J P T d f 03#$&')*''+,oKoOoooo        @nn  psc  ; < > A I M N P   > A   > ? @ A G I K M W X   A E   > A F I J M W X >@+-1289;=VXbegn45#'),0239UVWXabcems56;<=BCE$,46.000#%'(ĨRNNggoo'(רبשةWX   7 8 fgXYmn=>WXWX78WXWX`aWX$$ $ $$$$$)$*$A$D$l$m$gjhjjjWkXknnfgGHWXwx45    01  *+ '(  !"  wx9:wxM2N2  no`ahino67fgl m l m l m l m l m VW&'FGnoLMVWFGVWv w e!f!u!v!!!e$f$y$z$$$$${'|'''''&0'0%2&222mQnQFGxy&'֨ר֩שVW    6 7 efWXlm<=VWVW67VWVW_`VW$$ $ $$$$$($)$@$A$N$O$k$l$fjgjjjVkWknnefFGVWvw34    !!/0GHVW  )*!!&'FGNOrs   !n!o!~!!EFLMSTlq  vw5vwl!m!|!}!!!L2M222DEJKQRfjtu#$  ~    mn_`ghh$i$mn~]!^!Z![!  \$]$,-  56efk l k l k l k l k l UV%&EFmnKLUVEFUVu v d!e!t!u!d$e$x$y$$$$$z'{'''''%0&0$2%22244*8+8NN OO%&ը֨թ֩UV  CDHIOP_`st!"}~      5 6 de!"VWkl;<UVUV56UVUV^_UV$$ $ $$$$$"$#$'$($1$2$9$:$M$N$T$V$j$k$ejfjjjUkVknndevwxyEFUVuv23!"2222222222223$4$222222   ./  () %&     uv89%uvK2L222LSMS  lm^_fgg$h$lm}~     X!Y!45dej k j k j k j k j k TU$%DElmJKTUDETUt u c!d!s!t!c$d$w$x$$$$$y'z'''''$0%011#2$222NNVV$%ԨըԩթTU  |}  C D [ \ { |   4 5 cd !UVjk:;TUTU45TUTU]^TU$$ $ $$$$$!$"$&$'$0$1$8$9$<$@$L$M$R$T$i$j$djejjjTkUknncduvDETUtu12dembnb22222222_2`2^2_2]2^2\2]2[2\2   -.  '( $%  kl  tu'tu:0;0J2K2Z2[2ESFSef  kl$%]^efkl|}    Z [ \!]!W!X! t u u v 23xy  ] ^ +,  w x x y 56 34cdi j i j i j i j { | ~  i j ST#$CDklIJSTCDST b!c!r!s!b$c$v$w$$$$$x'y'''''#0$011"2#222 N NNNSS__#$ӨԨөԩSTkl  Z[{|    B C Z [ z {   3 4 bc TUij9:STST34STST\]ST$$$ $$$ $!$$$&$.$0$6$8$:$<$K$L$Q$R$W$X$cjdjjjSkTknnnnbctuCDSTst01    ));;Y2Z2X2Y2W2X2V2W2U2V2T2U2S2T2R2S22$3$Q2R2   ,-  &' #$  :;   stIsts$t$$$$$$$90:0I2J2DSES^_\]    E F     ] ^ } ~   jk#$ST\];<dejk{|  V!W!T!U!wx  ~[$\$^$_$f$g$23bch i h i h i h i z { } ~ h i RS"#BCjkHIRSBCRS a!b!q!r!a$b$u$v$$$$$w'x'''''"0#011!2"22244NNiQjQ ____01"#ҨӨҩөRSxy [_YZz{    A B Y Z y z   2 3 abSThi89RSRS23RSRS[\RS$$$$$ $#$$$-$.$5$6$J$K$P$Q$V$W$Y$Z$bjcjjjRkSknnnnabstBCRSrs/0##r$s$$$$$$$nnq$r$$$$$$$nn23p$q$$$$$$$nn o$p$$$$$$$nn12 n$o$$$$$$$nn m$n$$$$$$$nn01 l$m$$$$$$$nnk!l!{!|!k$l$$$$$$$nn/0  j!k!z!{!j$k$~$$$$$$nnFQGQakbk`kakNNQQ_k`k^k_k !!  |}!!NN,-+,UV_`  ]k^k%&;<+ r s o!p!!!NNCSDS!""#MNTUqr^_  G H _ `     efG q r {|m!n!}!~!pOqO~vvLMKLRSjk]^     F G   ^ _ ~      rs%&TUdelm\k]ku p q rsi!j!y!z!i$j$}$~$$$$$''''''8090)2*2H2I222NNASBSbbstIJPQWX`e"#[\~    D E     \ ] | }     ij"#RS[\:;cd[k\knnijz{  78Q!R! v w w x [!\!45_$`$P!Q! Y!Z!  a$b$=>^ _ U!V!Y Z  r s s t 01@A  |}`$a$b$d$ S!T!  }~Z$[$]$^$e$f$[ \ #s t t u *+,,12ABuw    H I {|&'d$e$<=X Y   u v v w 34  \ ] R!S!12abg h g h g h g h y z | } g h QR!"ABijGHQRABQR _!a!p!q!`$a$t$u$$$$$v'w'''''!0"011 2!222NNXXXXz^{^ _ _!"ѨҨѩҩQRBCX[ !XYyz    @ A } ~     X Y x y     1 2 `aQRRSgh78QRQR12QRQRZ[QR$$$$,$-$4$5$O$P$X$Y$ajbjjjQkRknnnn`arswxABQRqr* + 01`af g f g f g f g x y f g PQ !@AFGPQ@APQp q !!$$$%00 !ШѨЩѩPQ0 1 fg67PQPQ01PQPQPQ`jajjjPkQknn@APQ  34P!!/ r x x  X _ p y *4r}P!!!!i$t$}$$$$$$$$'''''',,00!0*080;011 2*2H2P2Q2`222224444*8+8M;N;NNNNNN N N]N^NNNNNNNNNNNNN OOpOqOQQFQGQiQjQkQlQmQnQASBSCSFSLSMSSSVVXXXXz^{^^_ ____bbLcMcggooss~vv,-01!"FGLMxy06klstxy4@y $ABJKX`y         D I }      X ` x      i'QU[f:<Zm$o$[kbknn`yq./>  de!"* +             ##));;mbnb)irp q t z `$i$t$}$$$$$$$$%v''''''@ D `iR[ oop r x x  X _ p y *4i}p q t z P!`!!!`$$$%v'',,11 2*2H2P2Q2`22222064uy $X`y         @ I }      X ` x      `'QURf:<Zm[kbknn`yq./> `!!!!00!0*080;0@uABJK$o$    >@&(1289ACJLRTfh &4@BCEtuz{~WXYZ[\]^_`acdegklstxy}~9@ K+   * / ` e f p 0494s{]pK`pq0K$%().Y\ : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J N W X b d 124;GO56789:>@q+?VZ^abegnqu]`25RTrt  ,0<U_`}4Ekt$8  ,,---.*00000ost~ #(,-ƨ&.GT)7CDLN{~ª 0v{      8 ; ? @   $ ( FQ8Gpqsu'5EGst,8>?;=>EGIKNWXbdfmpu5G^_0A,,;0679;?@ABD 3:;?GHQ\/78@17:;<>?FGHjj0k7kOoPoQoooooooo.0Gejms{BE7;muv"#%&+07DK ["#'*[\]^{|}~:> 9 ; E G }  # #)#+#['a'h'v''''')))))).... .*.B.C.U.].00000 0>@5EGIY_ ;<=>[\]^_abdvy ./$ % RSƨΨڨ`  .0?$%+,<?^_`a|}~uv    p q  O P y z ?@ 456789mn@Aakt}D E R S z } !!!!! !!!!!!$!%!&!'!(!)!*!.!/!:!0@00011111122*2H2P2Q2`222224MNǤ "(,6:wz[\jl)*@Pbcdgij >?@A\]^_7@ywy  ?@?@ABCDGHYZ[\]^ ;<[\_`bc@ V X ` s!$%(*+,-.0:<?A\]~Z`    jn0?^_d f p q v w w x OPZ\JP`ino57 DF Za};@~  ( 0 9 ; ? A D G R S T U _ ,,,-p-q-... . . ........ .*./.0.:.<.@.A.B.C.P.R.U.00=0>000 st~txΨШ.0_`Ωީ\`ު01EGIMPSTX_bhijl !<=abdfopWX  ? @ P Y     9 @   UZGN@Dtv8>KPZ\]^AD`m<?;<DG?GAFpr p$u$//njpjjj7kF G ~  # # # #*#+#i'j'k'l'm'n'o'p'q'r's't'u'v'''''''''''''))))))))))))))))))))))))))))#.$.%.&.'.(.).*.V.W.X.Y.Z.[.\.]. 0 0 0 0 000000000000000 0>?6789:;<=>?@ABCDEHIZ[\]^_ =>]^`acd'-.  ....:.<.@.A.].^.0000100013XYcd  _`? A T U 35MP?@9!0:A[_`a{ ( 0 ? A T U _ !`$%v'',..000!00010>@EG`{!$%+,0:<?A[^_`{|}~~Z`    jn0?^_d f p q v w w x OPZ\:>JP`ino57 DF Za};@~ ( 0 D E R S _ }  # #)#+#h'v''''')))))),,,-p-q-./.0.P.R.^.00000 00010=0>00000 st~txΨШ.0_`Ωީ\`ު>@0STbcdhijl !;>?@[\]^_fopWX  ? @ P Y     9 @   UZGN@Dtv8>KPZ\]^AD`m<?;<DG?GAFpr p$u$//njpjjj7k de!"* +             ##));;mbnb   34  -. *+  $%!"JK  z{z{ABqrcdklqr./9:ijo p o p o p o p o p YZ)*IJqrOPYZIJYZy z h!i!x!y!h$i$|$}$$$$$~'''''')0*0(2)222]N^N^^ss)*٨ڨ ٩کYZ  9 : hiZ[op?@YZYZ9:YZYZbcYZ$$$$$$$$+$,$F$J$n$o$ijjjjjYkZknnhiIJYZyz  67     23  ,- )*  #$  !  yzyzO2P2pqbcjkpq89hin o n o n o n o n o XY()HIpqNOXYHIXYx y g!h!w!x!g$h${$|$$$$$}'~'''''(0)0'2(222kQlQLcMc()ب٨ ة٩XY  8 9 ghYZno>?XYXY89XYXYabXY$$ $$$$$$*$+$D$F$m$n$hjijjjXkYknnghHIXYxy 56     12  +, ()  "#    xyxyN2O2  opabijop^!_!-.  78ghm n m n m n m n m n WX'(GHopMNWXGHWXw x f!g!v!w!f$g$z${$$$$$|'}''''''0(0&2'222M;N;QSTUWXYZ[\]^_`acdegklstxy}~0JPjpvy9@ K A[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp!!!! !!!!!!!!$!%!&!'!(!)!*!.!0!4!>!@!E!F!`!p!!!$$,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧЧѧ֧קا٧!;(p{|  @n`n4Nh  8:;?@EFGJQl"<Vp5Vo"0JPjp!"?@ 789:=?d f JLbcgino57  DFZ\^`};=~< > G J ../.<.=.S.U.00vxΨШ/0ȩʩ]`VX abV X UZGIAD8:;=KMAC<?DEFGBDACnjpjjj7k9kDkEknn ! / 0 _ ` 00( * ',.:;]^    0013PRUVXYcd de0:`jkmf p f p f p f p f p PZ *@JFPPZ@JPZ *Шڨ ЩکPZ0 : fp6@PZPZ0:PZPZPZ`jjjjjPkZk@JPZ3a{      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOqrstwxz~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPX`hp~q r  ! !!!!!/!0!4!5!9!:!!F!J!N!O!p!!!!$$0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧ˧ѧҧӧԧէ֧קا٧ڧ0[\ipA[(P  `nn4NUVh8Rl"<Vp6OPVp  "D1tuYZ Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 124@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~5!9!!!!!0-h-o-p-------------------/.0.00!0*0106080=0A0000000110111111124MNФ  *,no  #@t &0G`}ϩЩ)@CDL`wz{~ªê۪ު  '(/ijnp)*78=>?@BCEF>Ppuvf  '(;<>?NP^@u -KPvP(0d7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I  $ '(0Fp8qsuv'DEGHPsvw, )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij #$o$$D%//0/4DGFh9j@j_jpjjjjk0k@kDkckxk}kkoKoPoQooooooop֌ #PSdhpkp}  -7>NOKL !#$%'()3489:;<BCGHIJKLMPQSTU=KMAC<?DEFGBDACnjpjjj7k9kDkEknnP(@A0Zu p q  O P y z  456789mn@Aakt}!!!!! !!!!!!$!%!&!'!(!)!*!.!/!:!0@011111122*2H2P2Q2`222224MNǤ(,689:wz@P7@ywy  ?@?@Ad f  d f 0: Q R PAik/0IJhiVWXYbc-.q r H!J!|,},"$VX&(Z\*,^`\A[a{tu~   @Ad f ?@57  e f q t  !&!'!*!,!2!3!N!O!`!!!!'$@$K$`$()t+v+++,.^.//00000!00080<0@00000001111 2`22223X34MN"0:./ϩЩ[\jl>@0STghl!;A[fpq47@P')gj{W`yUV  :;?@EFGJQRq>,0<@IPR`ft HPZ`T`npux} Ǥ     ) * : < E F I J N U W X [ ] ^ ` d f p w %  Pnpu`mnqrt KMP`k-0Z  ( 0 : ;pKVpqQ U   *0.000 .;<.0Ggj{      @xP{p      ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x `   y`mEPZ    E F I J P T d f     @\^_Pw  '(;<>?NP^7@V`h  ,0<@ADPMA[a{&,]bfkxyq r  *!,!2!3!N!O!`!!`,,"˧Чҧӧԧէڧ0[\efj!;A[ ?000112223X3fpq #dh./0ΩЩکީ A0000 PS 5.00011122`22`})....//0000!0*080<04MNnpoooo9@ K!      ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w  Iptuxz~&+]bfk FHNPXYZ[\]^_~&!'!ef@F )*1245:<EGIKNPQWX]dfmpu  7:;<>?HPZ `fgij ,`,"#%&+-&-'-(---.- kp}<  Q U d f 0+,xy-.@.0   679<=?@//,,,-56H@T 10111 s   @AKVpqPp P>@puv` !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~LPZ^`+$%   ?@ 89ij}  #'*,/0;?@A\]^a|}~uvxz~01WYZ]^` jkmnKM.789:=?@\`kpp q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789HImqLPIJNPWXYZ^`[]`bcgimn7@T`mnqrt   y ,0<Dnpu _`}MP\^`kt}8;=@JM FHNPXYZ[\]^_~     $ % ( 0 9 ; < > E J _ e f p q r } !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF@P 0135EGIPSU_cdpuv  !<=>A\]^_ef  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ V X ` }        6 @ V ` s    I      ( 0 : '(0QUZpIfv56@AHPtvw:;=>? )*1245:;EGIKNPQWX]dfmpuMPZ^bCDEPZ,0:<?@G;   679;EFGPZ?BDGHP  78CPZr  7:;<>?HPZ`fgij #$o$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjk9k@kEkPkZkckxk}kk@nnnnoKoOoooooooooop֌ #PSdhpkp}.0GejmBEUV  :;?@EFGJQR56OPop7;muv"#%&+-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMP  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : '(0QpGfv56@DHPtvw8>? )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij #$o$$D%//0/40494DGFh9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@nnoKoOoooooooooo #dhkp}.0GejmBEUV  :;?@EFGJQR56OPop7;muv"#%&+-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjp   !   _ ` 00'(0:`jklf p f p f p f p f p PZ *@JFPPZ@JPZ *Шڨ ЩکPZ0 : fp6@PZPZ0:PZPZPZ`jjjjjPkZk@JPZ ( * ,-;<~ lmD E PQTU :;_`' ( UV ./  $ % RSuA[a{puvxz~01WY]^_` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z @HImIJNPWXYZ^`[mo2@R`mnq y4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!Ppuv!;A[  '(;<>?NP^@u -KPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ '(0Fp8qsuv'DEGHPsvw, )*1245:=>PQ]b5GK_b0DE,   0?@AB 3:;PQ\  /@Ar  1FG`fgij #$o$$D%//0/4DGFh9j@j_jpjjjjk0k@kDkckxk}kk@nnoKoPoQoooooookp}UV  :;?@EFGJQR56OPop-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjp106000000112223X3f #dh)  * / ` e f p 0494s{_pK`pq0K$%().Y\ : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J N W X b d 124;GO56789:>@q+?VZ^abegnqu]`25RTrt  ,0<U_`}4Ekt$8 ,,---.*00000ost~ #(,-ƨ&.GT)7CDLN{~ª 0v{      8 ; ? @   $ ( FQ8Gpqsu'5EGst,8>?;=>EGIKNWXbdfmpu5G^_0A,,;0679;?@ABD 3:;?GHQ\/78@17:;<>?FGHjj0k7kOoPoQoooooooo.0Gejms{BE7;muv"#%&+07DK _`/ 0 ? A T U 35MP?@"#    " 0 2 ; = B C G J Q R e f !!! !!!!!!!!$!%!&!'!(!)!*!.!/!5!@!E!K!L!N!O!!!!""4"6"## # #$#)#+#,#}##########$$$%%& &h'v''+0+P+Z++++++++,P.R..00000 00010A0B0C0D0E0F0G0H0I0J0c0d0000000000000000000000000000000000000'1(1122X3{33Ф` 0ISX_cgp  ;<=>?@[  0@4DFoE00A0B0C0D0E0F0G0H0I0J0c0d00000000000000000000000000000000000'1(1122X3{33PS  )#+#000 000100000Y_ ;<=>?@[a  " 0 2 ; = B C G J Q R e f !!! !!!!!!!!$!%!&!'!(!)!*!.!/!5!@!E!K!L!N!O!!!!""4"6"## # #$#,#}##########$$$%%& &h'v''+0+P+Z++++++++,P.R..Ф` 0IPXYcgp a  0@4DFop{| ,4MN !"#%'*9@ Kpjjjj Q S d f 0:HImq;@\   `j 570-h-o-q---!",-./:<?@~      0?^_d f Z\  JLaino57 DFZ\]`};@~< > G J ../.<.=.A.B.L.M.N.P.S.U.00 vxΨШ/0ǩʩ]`ߪPSTX  abdeWX  V X   : @   UZGNAD8=KNZ\AC<?DEFGBDADqrp$u$njpjjj7k:kDkEknn#Q S d f    ) * : < E F I J N U W X [ ] ^ ` d f p w ê۪ oop 3Q S d f ;=   @JPnpu d f 0:` 57`mnqrt`p   @AKVpqKMP`kpd f -..*+p ))'(!"./?@ 789:=?d f JLbcgino57  DFZ\^`};=~< > G J ../.<.=.S.U.00vxΨШ/0ȩʩ]`RSVX abV X UZGIAD8:;j{WryUV  :;?@EFGJQRq>,0<@I`ft HPZ`T`npux}  ! / 0 _ ` 00) * ( ) H ! ( * / 0 _ ` 00ФMN00000000Ǥaf   `j  #$o$p$u$$D%A[a{puvx{~01WYZ` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 123@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!:!?@BCEF^d>Pqrstwxyz{|}~!;A[f  '(;<>?NP^@u -KPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ '(0Fp8qsuv'DEGHPsvw, )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij #$o$$D%//0/4DGFh9j@j_jpjjjjk0k@kDkckxk}kk@nnoKoPoQooooooop֌ #PSdhpkp}UV  :;?@EFGJQR56OPop-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~9@ K0:A[_`a{uvx{~01WYZ` jnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789:>HImqJPIJNPWXYZ^`[]`irmo5@T`mnqrt  y ,0<Fnpu _`}MPZkt8@JM~ FHNPXYZ[\]^_~? A T U q r  !!!! !!!!!!$!%!&!'!(!)!*!:!?@BCEF^d>P 035MPqrstwxyz{|}~!;?@A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : '(0QpGfv56@DHPtvw8>? )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:@G;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij #$o$$D%//0/4DGFh9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@nnoKoOoooooooooop֌ #PSdhpkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv"#%&+-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~9@ K  !"#'(,-./0<A[_`a{uvxz01WY]^  jkmnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z 124;GOPZ *56789:>HImq+?@JVZ^abegnquIJNPWXYZ^`[]`mo5@T`mnqrt  y ,0<FPU_`}MPZkt8@JM~ FHNPXYZ[\]^_~      $ % ' 0 ? A D E T U _ e f p q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF>P 035MQRSTVpuv !;?@A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h3 3 o u  T 9% "# "$& g9c EGmZ@afgY $9iZ:$ P  M"Ba7 N"^: W !9 NA _N  iW h ZN Y@LQd tN MT A Zo BN  Q   )X\  9' *2K Z UT j  "ah i{c gLBZ  @Z H7dL   B% LB{dW 6&Z %KZLn h uWe   dN/Z!9L@  fL@d N %TtN DD  f! Xb P NQ_ ]u7 ': 9(  :  M61  L'39 F7 =`v <m9z * dv d E6WW;V7"a  $rNb fLNf*  i%N X ZT gV !:W  Wd{  _@c)LH bu$ J/Qn W5 DW  &yn*fb6gB]%  J  X Z .5 W,23\  ( WK (  G\sX  (# W 9  =Na  LN.Z 8N x oH  67  f ;X ' `K2 !T qWig "+ gPW q(YP v P 90 mWld> QX   !N7 Z9t 2$]!6GWkGYK-N g  ]wL0 g!H# A2WQSFO F{ +k(gJ;    i   d   e S/ = (N vBWa %  )\!GZ\ N  >' +6kZTN2B <qW Kd 6 )#   h95 ^ km! p  ' W (    `B )% = B%!bQ ,7ee q  d1 NEGK  [kLA  N #  N])G0 WH 9KdW W9   &dANjW^ !>  6 ?5s8 C! R N( NT ) fRL lK+  y -1 _!nW N3]_ Lp x NWW W! 9!*|js ! 9  ?EX *sB X"K dL pY?gc     >A h! F.m(6 n !b pW}q  H  : HT! %VP( N  g9!+}N ".9H\b^W:  +%Wt Zqx<Z!y - Q_  =   ,r Un R ! w$6 \ "?6tU- gd@# ) " IXW("%N{ !  NVj)aqNeqM% N;aW9H j,4TZB  a9  M' (\9W(k  $ N4 &*x \Q@Q8t ; Z   N%Ix1 V!Oveb "? NN ^ Lc97L' ]1(0}c 0   NY9_} n _fidUO X    Zb Y D M "^LiVSAdA L`Q_nHz  WV   L[_A P )(3lL>P    i  !  N*a"A>V   ;  N?g  7N dW  EN]cU!  yNa  +' & :c3  U O9 %F% W!+}X xz Xn)/ # 5-t *Z!( 8W| !"  "7   A R?"NuztNx M]ApT W} / <: d ,N #X Q ] 9@ ZtT rX9l G Z %BNOj+3U  @ N WhU  I9w W   5 gWNdv 9,Ndv&Z=!gT   N}$ " xcqL] g 4  0  GzY &&j  F 43 Z   )> fYbU!N ,   ZA 3[ ?N  F_$ e wFj] X ZmY?va9w &% 2 ,xc Z 1a ?U!TdWD  ^-Nj+d ]F   gc(J Z  QSG $5! X  AL  "A Z Dp"6Wg!d1 "i @  d ( KOZ  90mg,fV  aN9@  A F $Z9*2D  9z @WgK @  N @ &X  _[? P" 'XZ  4 ? ui]"<K   %d1!" 8 Qld>= b"qNR  z  Kd O(0Nk 7 'Nk |b*2W|!y.- j% )q ji  !WXQNmA  D#N db{DW XVZ?9g! KN;Y7^a N 9c LW!"{  a_.@ 7+9Y9R W ' 9 _M : N  )& 9k  !:AdpW/ NL '   {cX9 wzL.  <H(b!*|V   B!E 9!"{ &W] a % " ^ !aDf!X s  /+F a  T N?(  } :W$m{ A  2f a!K +@" w 9Fgf  WA FW   , Ri  @L N  N  ]G T  LdI U! Wd No  av HU (WL  6NZI  1 NQ   .T i |_fQY>^ [9C 2b,@9 ^ 1v   CE ~BU! &Wh ! K    v LI  g&bv K= ' "  $W  9% sLx %G  g{2N #t  0B@7 Adp D [ U!4 I2  vd_v G)8G  9N   .O z   !&3Qh f89D ~@!P  u  (@dQ\ Ub i{ 9u$d!$ [9z " FS N% ( ql&cwlextgocrpcmadlmaghbahexahomarmiavstbatkbhksbuhdcakmcanschamchrscpmncprtcwucyrldsrtgonggrekgujrguruhluwhmngzlkitskndalaoolatnmedfmteimymrnarbnewaoryaosgeougrphlpphnxqaacrjngrohgrunrsamrsgnwshawtagstamltavttfngtglgtibttotowchoxpeoxsuxyiiizanbzyyyzzzzcntrlcwcfcwcmcwkcfcwtzpgcb=b2h2jlxxnushu3040nv=90oriyapatwsprintqmarktailevssupfsipdfcarianccc=118491vre=yeschakmasmlsqrgothicgrexthyphen3.26.3415161miaoarmndiakgonmhanokhmrlinamroonkooogamolckorkhphliplrdprtiqaaishrdsogotnsavaiibehgafhahrehbunkhojkilydiannfdqcnv=3//5nv=7patsynrejangsb=stangsaebg3.04.0age=56.07.08.09.052avestanccc=22e=truedeseretdt=nonewideelbasanelymaicextpictgrbashanunoohst=lvtadlambuhiddogralimbuoghamosagerunictakribatakisotheeemnoonseenshinzainkannadakayahlilinearamandaicmarchennfkcqc-1/2/645/217/2olchikiosmanyahmnpkalilananbatsarbsyrczinhsharadashavianstermuaatagalogtaithamtaiviettibetantirhutauideounknownage=10.0age=v1armenianbalinesebassavahbpt=opene=falsecompexsuperduployanextendergujaratigurmukhihiraganahatrankaithilepchalycianteluguwanchoyezidijamoextbgamalkhaphmahajaninfkdqcnv=1/31/12nv=2erlwordkthilinbmercnshuscx=talupecialstagbanwatifinaghvithkuqipfabhaiksuki2435nuktacirclemedialea=narrowmoticonsbengaligranthainheritedinkanamakasarmultaninoblockphagspasiddhamsoyombouablamadhkhudawadinabataeannewtailue1600032000olditalicoldpermicoldturkicolduyghurpalmyrenepaucinhausamaritanthaanawb=mixidstartbasiclatinboxdrawingccc=ccc1viramachorasmianstrokesdeprecateddivesakuruorizspacebugineseingeorgiajamoextajavanesebinduugariticiskanathinyehkharoshthiiscarrowsnt=oldpersianphoeniciansaurashtraolettermallformssoftdotteduprightwarangcitialetternewlineerlspaceextdoverlaycyprominoandominotilesfractionisolatedpfbextfisarabicisspaceisvertfarsiyehswashkaflinefeednextlinemedefaidrinnfcqc=maybenv=10000pahawhhmongscript=mlymsorasompengerandsubsylotinagriebasegazyisyllablesbidicontrolbidimirroredblk=kanaucasextahesssymbolsambiguousgraphemebasegunjalagondiompatjamooldsogdianvisargayiradicalsisposixsyriacwawjoiningtype=breakbothbkh3jvmasaramgondiathalphanummendekikakui1.0.111e-01.250e-01.429e-01.500e+00.562e-02.563e-02.667e-01.875e-01.500e-013.125e-02.333e-01.750e-01nv=4.167e-01.688e-02.000e-02nv=5.833e-01nv=6.250e-02nv=8.333e-02oldhungarianphaistosdiscplayingcardspresentin=14wsegspacexidcontinueegeannumbersblockelementscaseignorablunassignedreekextendedvoweljamoincyrillicinethiopictakanaextiscsymbolsinmyanmarnandinagariavagrahatonemarkipaextensionsiscasedletterisgeorgiajoincontrolismyanmarisxposixblankjg=africanfehdalathrishknottedhehreversedpenonjoiningbreakafternonstarterwordjoinerowsurrogatesayannumeralsisctechnical-5.000e-01patternsyntaxpresentin=56.1verticalformsncientsymbolsbc=righttoleftblk=arabichanreadingemojicomponentgc=othereekandcoptichighsurrogateslphabeticpfkhmersymbolsnonjoineriscyrillicisethiopicmahjongtilesrohingyayehstraightwawyehwithtaildualjoiningjoincausingleftjoiningjt=transparentbreakbeforeexclamationinseparableinseperablenfcquickchecknumerictype=epresentin=v1psalterpahlaviquotationmarkdoublequotesinglequoteany_foldsquotemetaasciihexdigitarabicletterotherneutralblk=georgiadoubleabovekanavoicingontrolpictureseastasianwidth=letternumbergraphemeextendeadingjamoimperialaramaicoverstruckpurekillerdecimalnumberenclosingmarkfinalsemkathverticaltailrightjoininghebrewletterinfixnumericmeroiticcursiveiscpictographsnfdquickchecknumericvalue=236numericvalue=4oldnortharabianoldsoutharabianextendnumletglueafterzwjzanabazarsquareblk=cyrillicblk=ethiopicblock=arabicnotreorderedcypriotsyllabarylineseparatorhalfandfullformshighpusurrogatestrailingjamocompatformsgxiradicalsinlatinextendedphoneticextsupislatinextendedlisusupplementnonspacingmarklllajg=malayalamnnnamemtawprefixnumericinearbideogramsiscmathsymbolsanfkcquickchecknumericvalue=1/numericvalue=5/8numericvalue=70numericvalue=80numericvalue=9sentenceterminaltangutcomponentseuropeannumberanadiansyllabicscaucasianalbanianiotasubscriptemojipresentationgmodifiersymbolspaceseparatornotapplicableidsbinaryoperatorbraillepatternscurrencysymbolsindicsiyaqnumbersleftandrightnumberjoinervedicextensionsdashpunctuationdiacriticalsexthangulsyllableslowercaseletteropenpunctuationhamzaonhehgoalbethfivehethkaphqophreshyodhqaphtethkhitansmallscriptcarriagereturncomplexcontextmandatorybreakpostfixnumericetterlikesymbolslinebreak=zwspacenfkdquickchecknumericvalue=3/2regionalindicatorscriptextensions=mallformvariantsttonsignwritingboundaryneutralcommonseparatorblk=latinextendedblock=cyrillicextcopticepactnumberstitlecaseletteruppercaseletteridstrinaryoperatorinitialpunctuationlinearbsyllabaryiscmathsymbolsbbopomofoextendedclosepunctuationfinalpunctuation1supplementyriacsupplementtangutsupplementalephgimelsadhezayinlaphzhainadditionalcontingentbreaknumericvalue=6ornamentaldingbatsparagraphseparatorpatternwhitespaceruminumeralsymbolssegmentseparatorbamumsupplementdiacriticalssuptamilsupplementblock=kanaegyptianhieroglyphsemojimodifierbaselchemicalsymbolsgeminationmarkvoweldependenthanifirohingyapadalethlamedhsamekhjg=manichaeantwentyyudhhe=closeparenthesisodifiertonelettersottomansiyaqnumbersatermarrowsawordbreak=mi_perl_charname_beanatolianhieroglyphsblk=myanmarblock=latinextendedconnectorpunctuationextendedpictographicombininghalfmarksneralpunctuationvisualorderleftmodifyingletterregistershifterinscriptionalpahlavitaixuanjingsymbolscherokeesupplementdevanagariextendedmallkanaextensiondhamedhhundrednyiakengpuachuehmongterminalpunctuationeuropeanterminatorfirststrongisolateattachedbelowleftchangeswhencasefoldedchangeswhencasemappedchangeswhenlowercasedchangeswhentitlecasedchangeswhenuppercasedgraphemeclusterbreak=identifiertype=notncientgreeknumbersountingrodnumeralsmeroitichieroglyphsantillationmarkinvisiblestackersyllablemodifierinscriptionalparthianinsupplementalarrowsbnclosedalphanumsuphanguljamoextendedamongoliansupplementsundanesesupplementissupplementalarrowsclogicalorderexceptionnoncharactercodepointsinhalaarchaicnumbersvo=transformedrotatedyijinghexagramsymbolsoverridearabicnumberbidipairedbrackettypeblock=ethiopicblock=georgianblock=myanmarmathoperatorsfontdiacriticalsforsymbolsarlydynasticcuneiforminsc=consonantprefixedglagoliticsupplementburushaskiyehbarreebreaksymbolsnumericvalue=100000000.500e-02.125e-03.750e-02.250e-03bc=lefttorightembeddingpopdirectionalformatblhanguljamoextendedbhangulcompatibilityjamoobsoletecompatibilityformsradicalssupplementsubjoinedjoininggroup=africanqafsentencebreak=shorthandformatcontrolsznamennymusicalnotationhighprivateusesurrogatesstatus=allowedinclusioncompatideographssupommonindicnumberformsiscellaneoustechnicalinpc=topandbottomandleftbrahmijoiningnumberheadletterpacingmodifierletterstransportandmapsymbolshanifirohingyakinnayajoininggroup=malayalamfolds_to_multi_charmeeteimayekextensionschangeswhennfkccasefoldeddefaultignorablecodepointfullcompositionexclusionlimitedusebyzantinemusicalsymbolsplaceholderwithstackermetricshapesextendederscriptsandsubscriptsymbolsforlegacycomputingcanonicalcombiningclass=27halfwidthandfullwidthformsrecommendeduncommonuseinarabicpresentationformsbcombiningmarksforsymbolsprependedconcatenationmarkis_in_multi_char_foldeuropeanseparatorblk=supplementalcanonicalcombiningclass=128nclosedcjklettersandmonthsgeneralcategory=othestatus=restrictedymbolsandpictographsextanojoininggrouptehmarbutagoalopticalcharacterrecognitionbidiclass=lefttorightbidiclass=righttoleftatarprecedingrephakatakanaphoneticextensionssupplementaryprivateuseareaacanonicalcombiningclass=ccc1succeedingrephalphabeticpresentationformsancientgreekmusicalnotationlb=conditionaljapanesestarteriscellaneoussymbolsandarrowsdecompositiontype=nonhangulsyllabletype=lvtinitialpostfixedryprivateuseareabvariationselectorssupplementjoininggroup=manichaeantpopdirectionalisolatenclosedideographicsupplementathematicalalphanumericsymbolsideographicdescriptioncharactersincjkunifiedideographsextensnclosedalphanumericsupplementiscjkunifiedideographsextensuneiformnumbersandpunctuationymbolsandpictographsextendedaaboveleftiscellaneousmathematicalsymbolsablk=cjkunifiedideographsextensbelowrightgyptianhieroglyphformatcontrolsideographicsymbolsandpunctuationmathematicalalphabeticsymbolsdoublebelowombiningdiacriticalmarksextendedindicpositionalcategory=topandiscellaneousmathematicalsymbolsbblock=cjkunifiedideographsextensindicsyllabiccategory=consonantiscellaneoussymbolsandpictographsombiningdiacriticalmarksforsymbols_perl_problematic_locale_foldeds_compatibilityideographssupplementbottomandrightvowelindependentverticalorientation=transformombiningdiacriticalmarkssupplementblock=supplementalmathematicaloperatorsattachedaboverightisunifiedcanadianaboriginalsyllabicsextendeda   !  ( * % pxz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K (A[a{tu~?@  / 0 e f q t  !&!'!*!,!2!3!N!O!`!!!!'$@$K$`$()t+v+++,.C.D.^.//000000 0!06070H2`2222222q3{33334MN"[\jl0EGSTghl!;A[aP')gt$ v !"{!*tT N0      (iCn  0 mwa-BJ!dpW $m RZKZgL@X7N [  4kZW0md b Wd  I.+    9 9j |  !bi %F_ 92-`W 89auBDmW['4NI (6)7,  NodWrc 6  9 #p!NNW ALpW x g @WI  v RI4(\v 38v 4<X uE.vN7 W# 1 { !b#/ ] n  WZ iL~za ;    _Y U! T   P "  ( jZ %6 P(7 qZ&~J  O"  zv K(  n  $ @ 0mW0 mv "zWB 07z  Y 1  ?gZNa E  }i7|c Xe CWW(89G!k    d % !NVnW \s V  e   ( DNX%9>'E]' (  _ =  H ` 9t(     WON KLOb ( ? ygL@P   > N 9'iQ]  s   #7?5 Q RWx Nt  4!!W tU&P =d >tW"3  J cZ  X gW|gJ  d:3 9 ot{ QJZ@LWj L 9@ .d  %@CNHr8W^  9 3  a  @  o &# j$  4  wh >'L(E '*4gX  A xKcD=  7 ^k+ >*a?g: W &  ((x M2fW JG $Zvx1\   Nx W VdV Nq&  ) % F[  W\  L K> 9 -ZZ v :N :Z !   ~A &  0; W eFa"W= BZ~ o d  ]4 !D ZCN/ f(%!!${ WC T ZLK g *oH g@3lZ dLA@Zg  Q T+Wti H8 . .WeB% E 1K o  w  x L    & NV sLN"   *a%g %_qL_  -C K8N MgJ WVGHrNN i0O  Nbb   % R -K O 9  &G ! L $ LW@  d/9X;  +9  ( x O N   [ W  y1$NjB=N _XZ %!ZA9_|qb t WZ 9zk 2 Wu_Q] x;9@: e~-&f W4 m   "9K8  G)2 Z U!!b  6>%z Z <Z! .aXb"W~  Y# q*W Wy [!' ZC pc ps   mL  WydkW. $  SBL  N{   { #q J W  kUx Gl :  {Q  sn"4 !  %KGxw1  k  &Wg 1 iU"C (P KZAWHNvY3{  N)(w('s . a! aS  W]   =gBW CW-Eyx CdXW  Z Z %ALp9  c 3 v (D )( _}@_n 4 IA n0 !0N7? Z@W\s      W& W   6 9 _RA fZUN z 3!" [ L D( ( KW?X + rc.  *N>K>dk {o&  LN( ?{ ( i  gp@  ' 2+y 3Wzh (G1L $ : N ]  /Z!aAN)G!p5W6x M "{L  9 !]GWx#  > xG &d" 9'  (. W"@  NjK9'd    \a  %.d  ND P7?gX ! 2 A  D$ 9WLA2fW1  Vnb3 ~d E  NRWqE% o +    ]G Kim: " ZWHNNZ0WS /  A`] E6@ aZ9 ; =  j&4 I  d4 " 9>H| ! %  gNPj9'(P B "9d N  Kiyh Wd  k -Ti&ck  {  X7Z  T KZQ  @q a)&E`  )  Wt v 9  9bp  ;  & %&r1WH2dNL W!Dc z UMgY(~p `  ( \ .WD]dW  7   L !"$(a;?Y] GF -  i]G AN (8  ? ` .vL b<V61d  -^gLB {5 2XW[ 6 P !" S   X @p  r  gd:1 H9 e)LWg"Zb    N DB"C (6)gBN NY>NvLN X C BG ZqN( N9 Y#j+9  8d>  #I 4 )"m.%(7[ `  &%OogX Ngg ( ?g &ZT  EX  LXqd4 IK GCjAN Z !W   1i!nkNy(])Wn -c  W$f zv3t XIj   p d 92 ZT l(9g: GiKV x MU! [g!Z H )J9-T  DZW R<L xj   z v3C!F V9(  fPMX!+}%K^ ow  % QH   KO!x fY)?x N O4 Y  "L9=  _N C-W9z 5{{    ) |V)NRy #NL 9z3]2#d3 _{k ]u/ 5  { R    T# y [pW_%  )WE  9X &E Q_H9eW + +J dN <!N R   + ( (ZhVZkd v HZ Q_/  .N&  Q 0 2( J HVAgW7  bpV aR_@Q kKd n ^]L(Va  ? bv73+n  W>'/W +ZW2( J Lb  W!*|/ IH27X"74 aZKL3  #  4 7@g  +diK  *4  :QhY2&D K ' { Bq{fD# LA#cv 7&  k~ / N  hfh* %  W LF = F   k r "  c Wch]  k ZA& eWZWz   :Ww%?Bz 3 a2  1 Z  !?/fLCX a!%d  ] LU!!bd! d) C>'j $K O B :L>{>sG8$ {@W  ZL 9   W !t`IN  FT1 3 ( H  9 -z  1  tv S95(6;   6W  ~ l 4  7rU\ $sG3HD= o1NI  |&  LLKd !bqd ?Z b|vdZ *(HgZ>!u4 WnNL f9 9P RA fb5"n!u 9.x. &Fg Z gY Zg3"  kN% = * |!yItVk   D C ( H:fb!" ,t  J 4 n P-!Wj~BV Cb(6 W  ZWz  Y  l:a  _AN@ t!p Q  9' (&!ZN  W[L  XX bh)9 ;N[s9|N  Nm4  9S >  @N $ 7S   g7  D`Y<"|$0\ Sda_2  qiW  {9(N  Lc(  wa  J -  h(WD3!" = 7Z76  CN5   tg)Q_s=/f WXdAZC LaNWLb_|!"{ h&/]$7^e ]  Z#/ gn  RX 4 ia     P Aj;1 0"4 k  k$dL@ 9@N[hN VL * 4   .r "w_  NWA  ( %( wVN5.@Nqd IzQZ  :  p 8c ZA5gh g * NB9 `K g   #NW)$W  bS 9]`0 n -)" WnH&@d N(W H9 'n @ eW x\F 2E[ _X +  bZ c9 Ra ( @LNW ' F  Q U9 Ix S 0 %b6g! X Z5 = L +M 37R _uZ   T { $fYbZV $!nHWPduM H W)5.v  KWn&dRZg%cW# {!   j 8: -X  9Wo uKWL8"b *u  ;V W' (9 ]  4CN -Y   z  N%d9 j& < dfP$-;x E 2i  ! 9rF  W9@ NGG 9-N. gpX  9 h ,W$9 [   OW_}  .N]uQ 2  Y+  |! HzG9? Y ( ! _x Q ? o! \ d4 <' z>/Q:}  XdN-9|  ! N NIjiCNNsp~LW -fQ K"G9  &|f L   S)KLt Ww H1 g c!x  8 ?3 (5(W  U!F_Y  FcZH+  fL"^N"CNb W+tW` $  +: REZ@^ W m2 b $c}$((g< KdL(= Nf9n - W YEWr Q X N  &*@.( !d Z u'v NDRIR3_ c (Ij4Hr1Q  _b|Xt :W-  {  k N9  dA"  ]!G:_N@ LX tNf Kd O ZA!kQn  W$L94@ g %!^ 9 o{ [L$]"  {    1 i  5 N  h2B+Jf B1 0  NC9bNR C >/&N! 4Z6 Z9LT ! ,!a  N +WQ  L WERd58 6 d`m9y NW W#&N 'eqq9 |g  j~@T r'+. `77 C7N*. f AT  LX  dv2= 7 T(  &  mZfM 9Y N0v 7 rWwBNz E  gd@EU NB   Ic$dN+M e 93 \ # !^9@0mi$[sJ 2 csU! W_X1   n  dv m GW    )HK#d   W_x :L!1N'4']c  ~(^W }  Cj(G _y N|!N 79 ff  XN0R  aN #9 NNq  X^ ! 2LHr$W -' x@Z  ( a F" 9 KLEG L4xct [ Z q(HV+th AZ(X2W4 ]caJg ."dL -W` ^ 99 _}&xJ ?   Q F X      G q    pP 9L) uT 90 mrD  - dvWYi@2-  " M vKdG !WD!4(a $  P BB %%s[" w  ZvW.WZ W TW  *km  p(   W o"n>HWI 9N <N  "sa dE )+LZ  3:@h.9 P" !  W6 U~ kNCL2 YiH8N L? '  6n  J Z  n9)AU!_ W cqU!VP(c d XTY-    x M 9eR Bh]bNQ }j@  W`!9Z   {K Z U  W oT 9 S    9 X  Wa Z ! (itK <  ( aZ# Z zdWE    : RLWla W| !   Au m L"1 +LI W (gE& KL9B  d<Y(L  !.4N3!HUR m K  JzAe] f* )/.dT l  ( O + AJPf g \]m" ^x@!$!?g K <!UJ 0QN%   + W (!WQp !W ]3j rgB F@dN91 _{J z9ti99@ ]4)  W> I8^f95 W%b n  8'4OiZCcL)  ' yj)+:I '   K .9 ?(1XPNkW LT  h19=Wu   C QN!^e i+&9/   N   " dgL@ Wc Z@(O1  I  t!Iz9( Z T t NL UZ 6 ,(!x 1   Zv JA  f/ lt#k 7 +6gk  ZhG*aEI(4|!O  !  ,   ?NN (] - 2BN 9NrYA  Ba' wcX!5 #d0 c "FUnW9k i"@pI N BN& _g  n   9$"&9RKd V0K 0EY 5  d`C  X v{dd  (g]z ^W ] =   ^ i  !6 CVn0 \  WWFQ_ : 8W S(/<$!J )N( dBY %!  Ld9t vE X H dQUm wu' 79A "  ec$3  !KV!w6WO g 4  A L 9]ExK' 7|W o( w%NgdB z  $Zt *U! \W` [9 Z %WV w| L 5 ( 34 p ( a( ?gd@!I  % n~x)(H^k _( ~   R L Q H| " Bb!,|U/ QWh WD~d9 1g  W]IN N( !aW \^ !  \  iz~iL6t \; oNx   a" rc9k  ( y Z <]c,# t NW% 9. " t *$vbV!L ;4  d0  [9 X"x 6E N+" tU H-&Z Z   >  4 !6L C, tM g dzd!=qN}  WX v9  TC$]  &(g &  NBg6 -( ?  WYg< : $ {Q69+ QN,!6 #"^~L_9 5wg1 " O: 7FN)>(? oWX ! < $L7^v8^Z     #  H c[s   #W[Lb Ldv*-X   ' W ' R 0> t v0+Q_ 9WXn /Jz g ?    KZ    (  gg~jAZ 9 N?/^WH  L Ez  L  Zc)@c!bN]u3A d s  WRi  !T F(& oa  $ |! x D0 9 -`4   3LnB 9Xgk   pQ\ d(.J|    KdO_ 5NW`W 9F fb E  HaX ]LdWnD T a 3NNs9o u 9!Nt GnW  A9XE\ Y    x  R N" d  k% \ 9(mqR  #aV NcW5Wa   }" K ExV LLdF %cZ a\   w+v xEk3 W  @AZ f* soN# '@ b(n 2=VN"&zfYnEY& 9R3 8$Zv%d RhX ! Qy1Z _]AZ % ( s@dN$ ' O9[!x S <EYW{d<L >P  6 #g 7^N.L q ${ +g  (s G $!4 odLWQp v \5&r "   Zc7d$ )%adv ;HWzYX0 3yAtEY>7 eK a_  7( N]cv Z 6Q v KL Nf"ax NLAggbv 0Q" ^jN J )  ' =>?BCDEFGHIY\< = M N R S < = M N < = M N < = M N U W ; = M N 8;HL56789:qstuz~789;459:;<`a45DElm78 --*00000,-ĨŨ+.ST'.  9 ; ? @   FHKLMQFGpq35st57;=MNBCFG?@+,9;=?CD45GH?@BCDFjjooejms{JK=!aA<,>Bbt ) OlZ& q   kgWJ4 !Lp( a N@!N.~  D n I  &l 3 i6Wg{c N+ Y id {Z \  F  9O() + kaLWv bZx Zj    <Z 4"cl(  LA7Z7 KdO!^(F N7d (7Ws1  .LU! ZxtZNQ_& %L  &W b f Wz  [)C 9 N W? #Q. J  N  .   .h\ d%Z Z O 1  9\  V @Z@dQ&J i9 _ N""n >!wJ  9Q1Z _&0cw( h   AZ(. &v WCd j D 9 } Z We@L N== Z  ~z q   LN 4 m    N 7Rn  7Wl(.Z Lpy = ]c ~ LN%Ai dx W '4W Q"jW PQ[gNX X L d:T    }qn -!t N Kj&N>/[ - xT/Z . fgdB 4s=d95 9OW5= v 2_z l=Z  JB 5 ZD . 59 2 W|  !) ytNM$/ L d%  _|8 : 0 m2N g | !N~fd sfg0Nb u N f N-E    [  b<PWdJ{ Z>K( !L> Z qx%M N#ZNN)_(NZZ Wc  *NN$<LW u '[9  LHNB_gC. a n /T =L >B [g% vW> QWK  X    * NxKZ  Nt )| H WL +X   ^ *GZcZ!\    Wy(  w  +(N .K U! \V%cb)0H "WH 9 ' +8 iT Jk!c KL ) IQs! "G Jy.Z:#IW1P' $dv( i WX ZD Hdd 5!<0 KnAgA8 QWL  qW v3v : dRc ]g &V { Rh2-"x(6 !C $  zYFA5$ X 9 "K(!fV  )KdN 9l  6 N N(% kWI<d >eq( NEw $mN" ^   p Wv 7  X  k ~T  9 "l4]&6  T    kd (5 *L 9I9V_' {~_>    I  n -NQT   bF_)B+MYU>4 K znm   WR O9 oJ    N awg+z {/  ({t *  k  {dA"" m #XG  . 9 z \+V  Nh]KZ>vBt9$(5'   LT O:9Og? N  _   L  ' *VdE Zz  o9x N !  _4 " fTNt *  J "1!9dU! Vd( W &!6   ;: 5 W] x S (Z-Wa | eq J - , :  ^ (m. "< >?X s !   {9Nhg !Z {NN?@LQWCUE M 0m?9= f  gy  9Y!  NL1   M(u WbY &;Lz   7v EJ"&  d9_>   L   &LKd1   ca  A  .C3?E  W d D  )=!  We6.+d _} B   ]3 ;9VK 0    fd*3 NN4@ R   0 q#fT      NH ){;4  .(L&  xd K 7nBl(L =9ZN@   Z 6  L o f*W9 (   s)*  6 W{fWk GVPC5 (L    }-qY  m^ ) pQx7 Z 9 #^ Z9H Nj3 (t RA}    2IW'  QhBHrL9v f;  Gc +  !B 1 Z9@^ue Z6:    e#(dZ %! H7eNNOWcdW+!dpT 0T ?Y= [hx M W !9 s  hJcW ?]! W 9xk N #]u4  ( `} Z V]Ltf! XKL ONC( .CKZm N1U! X \ u ' _>%   YQhT ( ( 3!"m3Ww !L .WbYA `7  dNU!'X9HN  !Np"\cg ", 3M[sT TNX    "Z> P! f/. X   } C  b +% [9.}   # ?Hbq 7,!b"|"iw #g   (O"Y  L9jH t ZE]  ivt!E NJ  N 79)' ?W  1z  a  (a8Y>(O p 9I 9 # NN#/ b Z  %$mmqYs 6 +| 9 W gH \@Z   vT    !*|_  W|  0 *9HXg@ ?  9J  t$]dB!+} v0+% v 8Z?n C AZ } SG B 9   x5Z39k H9    W=h ZvW #Z3 { @Yg- zdA r jL( IV 95 "X_9 #J y9 a9` !  0@( a63 (O  fZb!p  v  5NU!Z G LWU! wg dZW1  N jgZ *9Na LQKZ>       Wl ( #eqNW 4  K v vD<d >    h7!O  7d k v F=   5 RBW9 jWF(n H{c  W_| jV AWo wZ & 8  W  lVn9 W~dNO\ Zt * P(U P9| !   WME$   3 1 ,b"l `[s   2W"!?(:  WiW  2-T  V\ L YT(G qSW_ +Y  L`;  W% gYQ ]ZAN[s d: 5v 86{ dEX% < >W Z9 Wl9QG?d aNdU!E Yc.dAF . F T a $!(CEk{% Jz P   J  hT  M ] 9a R9U! JW(  $/ZB( W jF !3  u9M&n  9| !  (WX%&  S 9iYL Vd +  N+"ieK =+M1 OJN    `ka  n F_kz  I W % 2H @gX    O  &oO  i  7^ vW_{NCNB j '5U K [  d  dY29]3]a (&xNW '<  1i" 1 !+})7+ # a-v JW  n J l> N W   ((   npd  @    $ a 2!d\d N~ZB Q_ H [s!\s{x  L I  H)87LW"  ZN" W=WrcL     % kY3: % vsWL  W y  xL%dmH 0 T 3  k 6@Zݒ I  2"2Wz B u QNx4  W5    =L >W  !? Y &Z Ck (TW 9 F  /fJW  > &   ^9 T"\ c F 5   kb  %N gd@+M  =;c&d{d(pW  dW"?NFB=J 4  vY3fZbd 9 iF W  V Z  = >"^d !Xq!     2 us !dL >UN#6 T ZW" % z J ( #ZZ_+ a 97 @(PQ  ND=d >E)&D\ Z  $g@   ;N    WW {Jja "zW .!^ V |E% ( qU N  9 Q W XWV$ | 9,&!a $)"W|! xw UkN$LcW M99 i#9|&  (7  Z6 " 1ZT  (n   FWbpZV  Wl   (.f Z !%L    (C ( K ^ !jO 7     %!b+"ZNf     c ] g  GdpHZ cW*LVo{o  =  D(ZZB !)J x Z> L  #  d 9C~B A  # =    oNt \   LKL OLW .L qK _? .9 Nn5NfU$vWGW ON & S9U92NF9W# # 1d T    %  ,7 b,caX  g WNhw _},YVn)A jWmfK 2b J    5Y  U! UW r c "?: "   b9}q#8BX  X B . N 9" =#/ =v Dd !Kf 4 ?? 4:tWP> 19 u! W & x R KWXTQT #  `+t-Ny N~"".ZWr& RNg@4p.Lc9( !' LX N  3(Z2' utA WlN L  je 5&1 "-` Ol i!   VLR [  9@,n  1   6 dQ_  (? ? X v CB{; ZL' A tAZZ%cBY\ LNt +  p  bL_ |_  d Y9EY YV 1 Y9s  @z cj %NOy 9   6BdW>HgY gL fd  $    DZ_(  d(] G ZaO \ M  %U!$] X  8dQZ& 9z LC`SW  5$N6 kn VP=>   b "W(] !a (jw Z(E  d +  LQ?     x Z_  \9 mYU)8G   4   79^ !=Z  ! 9 sU!Z 6ba9 U!Jx N Y   H V `Ndv 9AA d {  +0`{  4 Y x9F%Z NZ AN  I!LuNx #G( wxe  g#{zL v B92LyZ  $ tiAp`  Xp <Y  k  +'4~OW2    Z KZ  "?   +P {K"LVZ}$CW@=9os ! A Z D  Wje;    7  '  !^yUQ JdNj+ b <ZVN^ 9 Z u !.e $!sG     xWw^ +   =  Z2\  @ A P  N*ULT     9lz  9a   ,! Wg  . ST ; )W  (   7<Z g9 W7W Z9 T n !bXkLW> l Gt [R[ L s  d qYd  tL Ro u   Z - ty &99[`)rGCK>8,<dv  $Zv9 s9y [ f12d  N_", gZfeq]N t   gY< >i9: N]d  sLBA   ~  }  Y &~ZBNb% % 0 N3  $  ZC"B"Kb.  < * N"1tW(k  L Gp   ; ]Z dU   gHKd|  !N&~L  [( X  W  L@NN  \KLOL N &5  'G9W `MWpZWN  &s (g   #jVn /3-^N9_{      '    B  BZ ^oW sX  NxfdacWOlZg_ !  F   %J}+0Q  N Nt] (]mQ  hU9 C_O lN d~ d9m  u  Z9c 9{ rgh Z/N11  9QSN*a 77 z d   N(  ! 37S WicaO \  ZA7 5K OW2-w 5 d L  2Z=R 9y  ! YTg5b9K     &":N %@Z gj(c 09  b3!"* k d "zp  J% &{4cE0HG "  cZ 2N7^   N,heH [ ER W$"W   NI U! [1 _LW2f   $j (  V sGN s ! 9;VX7L= (}gB+M@R9_x f* %Ol   |  9 .Zd=Z vdA NNj  L yN 9n}@U L   Z h@ jz  nHd  PWk A :  NXWHr  @+t F9 4\ DW X Nc6  L \     )Wva  2Z=+n P  1 v F= K8 !Lp 7 zH XW-T "x 9B @X  1d>W w&] ZL+ovt Z _  bg . !ZX  dBd9$.NLvWR (Z&pk LNb"N `)>   5@Gm@I  ZN < h pZfvL>W !  aFWT Na  &  %+9(\Ol2B1Y !9WZ<d $# d  T ( ?  qZ 2 NG 6 XNBOG(W #N MN RWIjU!I90>/   J WW4   p9d9cd  PZ vP]3"+V |  \v F9@ 9?H ,.Z Wx S)F9 QlZ  E!<dNWg6]3A NcA55 vU   au#W E&Wv 6   *9 NY_   B (T  (U  [.  * 7v oB_%L WS T%4 Ig(B %!"@  &4  Do"ogr j+  b  +3 7  HDYVP c@ Y  :T X   f<X Z   T+n9  a($aiZCm]ZAD&] c   6  \ 5ZA3 Npf W%  |&()*-./0126789:?S|'}| rßrrQr|}|iröqUV rbcb`a`>EFXY[\]^_`abcdejmnopr rrrrLirrr| 5}/01268}rQq|}N}qqٶrqN qõq Grq}iLr;|ȶqRq qq qZqrq ~ rr}rX}q}r}qq q qqqqrqqq õR  qǗqrqqP34}rqq } rqqqO}q?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr%k 5k k k !k k kkk k 2k k k k k k k 9 x ^o}Ecp v#k k $ + k 9:k Ck 9b;k k k k k k k k k k k k k k k k k k k k k k k k K k k k k k k k K\ Mk k k k k k ggzk k wN:k 9  Nuk W Him X \\-ii4k k n QR|5ok k k k ]dk k _qq#ark hDk k Uk $|k k k 1\@  k k k  k k F k $k 0 o ~```FAa_ G -0/. !#"&-.$bc   __%+@?Q;>knmykutxzedhf j*(,]^ "XRJEKZHILMlvg i%$Y[VW\G48qpsow~{|<UU.r#X)*}!&N'(79=,-O/316UCB5S2:DPT0   sutvtwtxtytzt{t|}~M<6G5Y]zI:3$ ipr7op]KC FQsk)\ uY$|st l=>K?@ABCDEFGHIJefKLMNOPQRS| k2,  4  2  +,-./aQ h,r/kno rrr,- bL UV e N,-`K2rX UVrUVUVimUV/t rrN  :UVrUVb  UViNUV T rUVUVqUV r /012N6 8  UVrNbcG rUV  T UVUVUV,rr qUV5<rLUVqUV`aUV34rEFq%&qqEQ$%Dqlde2NUVjZ[mnop>?elUVqjNmnopLpqSUVmnop% kqEFpDEFr|}qi;BC`abcdeJ cjemnopjlRmnop^_`aq VEFknomejrmnopXbcderrqj  mnopr  q&qqq-.rj mnopEFqqAqR H qMqqR_`abcderj_qmnopP/012rq6q8rqqqOOq<qm E_T[OUVT}"X~'+l.1356789,  < !"#$%&'()*+,-./0126789:=?@ABCDGHIJKLMSWfgiklr  !"#$%&'()*+,-./0126789:=?@ABCDGHIJKLMSWfgiklr  !"#$%&'()*+,-./0126789:=?@ABCDGHIJKLMSWfgiklr  !"#$%&'()*+,-./0126789:=?@ABCDGHIJKLMSWfgikl r !"#$%&'()*+,-./0126789:=?@ABCDGHIJKLMSWfgikl r !"#$%&'()*+,-./0126789:=?@ABCDGHIJKLMSWfgikl r !"#$%&'()*+,-./0126789:=?@ABCDGHIJKLMSWfgikl r !"#$%&'()*+,-./0126789:=?@ABCDGHIJKLMPSWfgikl r !"#$%&'()*+,-./0126789:=?@ABCDGHIJKLMSWfgikl r !"#$%&()*+,-./0126789:=?@ABCDGHIJKLMSWfgi kl r !"#$%+,EF=@ABCDGHIJKLM^_`abcdeWjmnopfgi kl r !"#$%+,=@ABCDGHIJKLM Wfgiklqr/01268>EFRUVXYZ[\]^_`abcdeEFjmnopq]^_`abcdejmnop/01268>EFRUVXYZ[\]^_`abcdejmnopq  !"#$%+,=@ABCDGHIJKLMWfgikl r !"#$%+,=@ABCDGHIJKLMWfgi kl r !"#$%+,=@ABCDGHIJKLMWfgi kl qr !"#$%+,=@ABCDGHIJKLMWfgi kl qr !"#$%+,=@ABCDGHIJKLMWfgi kl qr !"#$%+,=@ABCDGHIJKLMWfgi kl qr !"#$%+,=@ABCDGHIJKLMWfgi kl qr !"#$%+,=@ABCDGHIJKLMWfgi kl qr !"#$%+,=@ABCDGHIJKLMWfgi kl qr !"#$%+,=@ABCDGHIJKLMWfgi kl r !"#$%+,=@ABCDGHIJKLMW>EFfgiklrXYZ[\]^_`abcdej>mnopEFXY[\]^_`abcdej>mnopEFY[\]^_`abcdej>mnopEF[\]^_`abcdejmnopUu xx{xxx;xxjqq;T%*xxDE;z~yyyyyyy<<yT^< x  ;;ABCDE&FGHiVj <<IqX1Tr"vw='(*+-LGJd;h&'NOPQRSTUZ[/^_`acklno9:x tvtttt iB<IJj#UWY %q\ymwxyzb{q~h;v $%2<;>?"qqLqS((VX6a#,-.<@AHMWNO+R[_nP03Z}`q}( !gVTTvWw !"#$XmYZ[%&\]^_`abcdef'g()*+,-./0123h456789:)./0123456789:;<=>?@VTW !"#$XmYZ[%&\]^_`abcdef'g()*+,-./0123h4567V89:TW !"#$XmYZ[%&\]^_`abcdef'g()*+,-./0123h456789:VTW !"#$XmYZ[%&\]^_`abcdef'g()*+,-./0123h4V56789T4:W !"#$XmYZ[%&\]^_`abcdef'g()*+,-./0123h4V56789T5:W !"#$XmYZ[%&\]^_`abcdef'g()*+,-./0123h4V56789T8:W !"#$XmYZ[%&\]^_`abcdef'g()*+,-./0123h4V56789T:W !"#$XmYZ[%&\]^_`abcdef'g()*+,-./0123]h4V56789T:W !"#$XmYZ[%&\]^_`abcdef'g()*+,-./0123h4V56789T:W !"#$XYZ[%&\]^_`abcdef'g()*+,-./0123h4V56789: !"#$%&'()*+,-./01234V56789: !"#$%&'()*+,%-./0123%%4%%56789:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Tw !"#$%&'()*+,-./0123456789T: !"#$%&'()*+,-./0123456789: !"#$%&'()*+,-./0123456789: !"#$%&'()*+,-./0123456789: !"#$%&'()*+,-./0123456789!: !"#$%&'()*+,-./0123456789,: !"#$%&'()*+,-./0123456789M: !"#$%&'()*+,-./0123456789: !"#$%&'()*+,-./0123456789: !"#$%&'()*+,-./0123456789: !"#$%&'()*+,-./0123456789UnimplementedMultiple slurpy parameters not allowedA slurpy parameter may not have a default valueSlurpy parameter not lastOptional parameter lacks default expressionMandatory parameter follows optional parameterExperimental subroutine signatures not enabled~ytoje`[VQLGB=81*#  !(c (!t0 e` F 00Gx00YPPZ(({ |hh}hh>  %d%lu%4p never introducedpanic: pad_swipe curpad, %p!=%ppanic: pad_swipe po=%ld, fill=%ldpanic: pad_free curpad, %p!=%ppanic: pad_free poPADNAME = 0x%lx(0x%lx) PAD = 0x%lx(0x%lx) %2d. 0x%lx<%lu> FAKE "%s" flags=0x%lx index=%lu %2d. 0x%lx<%lu> (%lu,%lu) "%s" %2d. 0x%lx<%lu> SubroutineVariable%s "%d%lu%4p" is not availableConstants from lexical variables potentially modified elsewhere are no longer permittedpanic: no pad in cv_clonepanic: pad_alloc, %p!=%pscopestatementpanic: pad_add_name_pvn illegal flag bits 0x%lx"%s" %s %d%lu%4p masks earlier declaration in same %s"our" variable %d%lu%4p redeclared (Did you mean "local" instead of "our"?) panic: pad_findlex illegal flag bits 0x%lx%s "%d%lu%4p" will not stay sharedpanic: pad_findmy_pvn illegal flag bits 0x%lxCan't undef active subroutine         }   42-(!PKIDB@ |z 1/*% HFA?= IIIIIIIIIIIIIIIIIIII.I_II+IIIIIIIIIIIIIIIII+_II)} 52-(!}KIDB@{+6A NNNNNNNNNe-aaaaaaaaa@>OJaZ gb]X     ! / 0 _ ` 007A[a{EFptvxz~01W` FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!5!9!:!JP`ino57 DF Za};@~ ( 0 D E R S _ }  # #)#+#h'v''''')))))),,,-p-q-./.0.P.R.^.00000 00010=0>00000 st~txΨШ.0_`Ωީ\`ު>@0STbcdhijl !;>?@[\]^_fopWX  ? @ P Y     9 @   UZGN@Dtv8>KPZ\]^AD`m<?;<DG?GAFpr p$u$//njpjjj7k files in place (makes backup if extension supplied) -Idirectory specify @INC/#include directory (several -I's allowed) -l[octnum] enable line ending processing, specifies line terminator -[mM][-]module execute "use/no module..." before executing program -n assume "while (<>) { ... }" loop around program -p assume loop like -n but print line also, like sed -s enable rudimentary parsing for switches after programfile -S look for programfile using PATH environment variable -t enable tainting warnings -T enable tainting checks -u dump core after parsing program -U allow unsafe operations -v print version, patchlevel and license -V[:configvar] print configuration summary (or a single Config.pm variable) -w enable many useful warnings -W enable all warnings -x[directory] ignore text before #!perl line (optionally cd to directory) -X disable all warnings Run 'perldoc perl' for more help with Perl. universal.cUNIVERSALInvalid version format (version required)v%sUsage: version::new(class, version)Usage: UNIVERSAL::VERSION(sv, ...)Cannot find version of an unblessed reference%2p does not define $%2p::VERSION--version check failedqv%2p version %-p required--this is only version %-p%-p defines neither package nor VERSION--version check failedisaUsage: invocant->DOES(kind)Usage: CODE(0x%lx)(%s)Usage: %2p(%s)Usage: %2p::%2p(%s)reference, kindobject-ref, methodsvsv, failok=0SCALAR[, ON]SCALARSCALAR[, REFCOUNT]hvfilehandle[,args]inputoutputdetailsget_layers: unknown argument '%s'%-p(%-p)utf8name[, all ][all]NULL array element in re::regnames()aamsixxnpAPTURE_ALLpackage, ...all$key$key, $value$lastkeylobjlobj is not of type versionalphalobj, ...lobj, robj, ...verver is not of type versionoperation not supported with version objectUNIVERSAL::isautf8::unicode_to_nativeutf8::native_to_unicodeRegexp::DESTROYUNIVERSAL::canUNIVERSAL::DOESUNIVERSAL::VERSIONversion::_VERSIONversion::()version::newversion::parseversion::(""version::stringifyversion::(0+version::numifyversion::normalversion::(cmpversion::(<=>version::vcmpversion::(boolversion::booleanversion::(+version::(-version::(*version::(/version::(+=version::(-=version::(*=version::(/=version::(absversion::(nomethodversion::noopversion::is_alphaversion::qvversion::declareversion::is_qvutf8::is_utf8utf8::validutf8::encodeutf8::decodeutf8::upgradeutf8::downgradeInternals::SvREADONLY\[$%@];$Internals::SvREFCNTInternals::hv_clear_placeholders\%constant::_make_const\[$@]PerlIO::get_layers*;@re::is_regexpre::regname;$$re::regnames;$re::regnames_countre::regexp_patternTie::Hash::NamedCapture::_tie_itTie::Hash::NamedCapture::TIEHASHTie::Hash::NamedCapture::FETCHTie::Hash::NamedCapture::STORETie::Hash::NamedCapture::DELETETie::Hash::NamedCapture::CLEARTie::Hash::NamedCapture::EXISTSTie::Hash::NamedCapture::SCALARTie::Hash::NamedCapture::FIRSTKEYTie::Hash::NamedCapture::NEXTKEYTie::Hash::NamedCapture::flags~ytoje`[VQLGB=81*#OB4&i s*pppppRpEpppp.p^pppp^ppppppppphpdppsssss|sssjsjjjjjjjjjjjjjjjjjtjtjtjtjtjtjtjtjtjtjtjtjtjtjjjjjjjjjjjtjtgv.c  !(c (!t0 e` F 00Gx00YPPZ(({ |hh}hh>  AUTOLOAD Attempt to free unreferenced glob pointerspanic: gp_free failed to free glob pointer - something is repeatedly re-creating entriesoverloadingpanic: gv name too long (%lu)Cannot convert a reference to %s to typeglob%COREVariable "%c%d%lu%4p" is not imported (Did you mean &%d%lu%4p instead?) Global symbol "%s%d%lu%4p" requires explicit package name (did you forget to declare "my %s%d%lu%4p"?)::ErrnoTie::Hash::NamedCapture$%c is no longer supported as of Perl 5.30ISAHad to create %d%lu%4p unexpectedlyEXPORTEXPORT_OKEXPORT_FAILEXPORT_TAGSSIGHILD_ERROR_NATIVEAPTURELOBAL_PHASE AST_FH ATCHOSTMATCHAFE_LOCALESAINTNICODETF8LOCALETF8CACHEARNING_BITS _tie_itpanic: Can't use %c%c because %s is not availablepanic: Can't use %c%c because %s does not define _tie_it%d%lu%4p::_GEN_%ldevalbytesdirhandleBad symbol for %sIO::File::panic: sv_upgrade to unknown type %luName "%2p::%2p" used only once: possible typo&CORE::%s cannot be called directlyCan't use anonymous symbol table for method lookupCan't locate package %-p for @%2p::ISAWhile trying to resolve method call %.*s->%.*s() can not locate package "%-p" yet it is mentioned in @%.*s::ISA (perhaps you forgot to load "%-p"?)::SUPERUse of inherited AUTOLOAD for non-method %-p::%d%lu%4p() is no longer allowedSUPERIO/File.pmCan't locate object method "%d%lu%4p" via package "%2p"Can't locate object method "%d%lu%4p" via package "%-p" (perhaps you forgot to load "%-p"?)(${}Stub found while resolvingCan't resolve((nil???%s method "%-256p" overloading "%s" in package "%3p"() left in overloaded package has no overloaded magic, right argument in overloaded package , right argument has no overloaded magicOperation "%s": no method found,%sargument %s%-p%s%-pCopy method did not return a referenceOverloaded dereference did not return a reference(@{}(%{}(*{}(&{}(++(--(bool(0+(""(!(=(abs(neg(<>(int(<(<=(>(>=(==(!=(lt(le(gt(ge(eq(ne(nomethod(+(+=(-(-=(*(*=(/(/=(%(%=(**(**=(<<(<<=(>>(>>=(&(&=(&.(&.=(|(|=(|.(|.=(^(^=(^.(^.=(<=>(cmp(~(~.(atan2(cos(sin(exp(log(sqrt(x(x=(.(.=(~~(-X(qrC{CCTxurolifc`]ZW:741.+(@=X <    ph\XTI  tc]YS{ulc_[UOFB<*" ~vrnjfWD>82,&  NHD@2$ fb\XTPLF40*WIE?93-'! {wqke_YSMGC?95,#|vmbJ8x DG j~tSG=f.V[Identifier too longNumeric variables with more than one digit may not start with '0'  !(c (!t0 e` F 00Gx00YPPZ(({ |hh}hh>  ?@@ @0@our @F=split(qmsyqqwxr;&/|})]oaiuwef!=%s (...) interpreted as functionNo comma allowed after %sWarning: Use of "%d%lu%4p" without parentheses is ambiguousOperator or semicolon missing before %c%d%lu%4pAmbiguous use of %c resolved as operator %cUnrecognized character %s; marked by <-- HERE after %d%lu%4p<-- HERE near column %d\x%02XCan't find string terminator %c%d%lu%4p%c anywhere before EOFParse errorparse_exprParsing code internal error (%s)lex_startLexing code internal error (%s) ;lex_stuff_pvnLexing code attempted to stuff non-Latin-1 character into Latin-1 inputlex_stuff_svlex_unstufflex_read_tolex_discard_to$@%*;[]&\_+Prototype after '%c' for %-p : %sMissing ']' in prototype for %-p : %sIllegal character in prototype for %-p : %sIllegal character after '_' in prototype for %-p : %sSource filters apply only to byte streamsfilter_del can only delete in reverse order (currently)lex_next_chunk;}continue{print or die qq(-p destination: $!\n);}lex_peek_unicharlex_read_unicharlex_read_space[...]{...}Old package separator used in string (Did you mean "%d%lu%4p" instead?) [\]^_?Ambiguous use of %c{%s%s} resolved to %c%s%sAmbiguous use of %c{%-p} resolved to %c%-p*[{[#!%*<>()-=])} =wds]rnftbxcavaA01! zZ79~Unterminated delimiter for here documentUse of bare << to mean <<"" is forbiddenDelimiter for here document is too longIndentation on line %d of here-doc doesn't match delimiterUnsupported script encoding UTF-32LEUnsupported script encoding UTF-32BEperl -indirCan't exec %sToo late for "-%.*s" optionpanic: utf16_textfilter called in block mode (for %d characters)panic: utf16_textfilter called after error (status=%ld)CORE::%s%s had compilation errors. %sExecution of %s aborted due to compilation errors. at EOFnext token ???at end of linewithin patternwithin stringnext char ^%c\%03o at %s line %ld, near "%d%lu%4p" %-p (Might be a runaway multi-line %c%c string starting on line %ld) %s%s has too many errors. syntax error([{< )]}> )]}>Version control conflict marker)]}>([{<)>]}(<[{«»»܆܇༺༻༼༽᚛᚜‘’’“””‵′‶″‷‴‹››⁅⁆⁍⁌⁽⁾₍₎→←↛↚↝↜↠↞↣↢↦↤↪↩↬↫↱↰↳↲⇀↼⇁↽⇉⇇⇏⇍⇒⇐⇛⇚⇝⇜⇢⇠⇥⇤⇨⇦⇴⬰⇶⬱⇸⇷⇻⇺⇾⇽∈∋∉∌∊∍≤≥≦≧≨≩≪≫≮≯≰≱≲≳≴≵≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊣⊢⊦⫞⊨⫤⊩⫣⊰⊱⋐⋑⋖⋗⋘⋙⋜⋝⋞⋟⋠⋡⋦⋧⋨⋩⋲⋺⋳⋻⋴⋼⋶⋽⋷⋾⌈⌉⌊⌋⌦⌫〈〉⍈⍇⏩⏪⏭⏮☛☚☞☜⚞⚟❨❩❪❫❬❭❮❯❰❱❲❳❴❵⟃⟄⟅⟆⟈⟉⟞⟝⟦⟧⟨⟩⟪⟫⟬⟭⟮⟯⟴⬲⟶⟵⟹⟸⟼⟻⟾⟽⟿⬳⤀⬴⤁⬵⤃⤂⤅⬶⤇⤆⤍⤌⤏⤎⤐⬷⤑⬸⤔⬹⤕⬺⤖⬻⤗⬼⤘⬽⤚⤙⤜⤛⤞⤝⤠⤟⤳⬿⤷⤶⥅⥆⥇⬾⥓⥒⥗⥖⥛⥚⥟⥞⥤⥢⥬⥪⥭⥫⥱⭀⥲⭁⥴⭋⥵⭂⥹⥻⦃⦄⦅⦆⦇⦈⦉⦊⦋⦌⦍⦐⦏⦎⦑⦒⦓⦔⦕⦖⦗⦘⦨⦩⦪⦫⦳⦴⧀⧁⧘⧙⧚⧛⧼⧽⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪍⪎⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪦⪧⪨⪩⪪⪫⪬⪭⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫏⫐⫑⫒⫕⫖⫥⊫⫷⫸⫹⫺⭆⭅⭇⭉⭈⭊⭌⥳⭢⭠⭬⭪⭲⭰⭼⭺⮆⮄⮊⮈⮕⬅⮚⮘⮞⮜⮡⮠⮣⮢⮩⮨⮫⮪⮱⮰⮳⮲⯮⯬⸂⸃⸃⸄⸅⸅⸉⸊⸊⸌⸍⸍⸑⸐⸜⸝⸝⸠⸡⸡⸢⸣⸤⸥⸦⸧⸨⸩⸶⸷⹂„⹕⹖⹗⹘⹙⹚⹛⹜〈〉《》「」『』【】〔〕〖〗〘〙〚〛〝〞꧁꧂﴾﴿﹙﹚﹛﹜﹝﹞﹤﹥()<>[]{}⦅⦆「」→←𝄃𝄂𝄆𝄇👉👈🔈🕨🔉🕩🔊🕪🕻🕽🖙🖘🖛🖚🖝🖜🗦🗧🠂🠀🠆🠄🠊🠈🠒🠐🠖🠔🠚🠘🠞🠜🠢🠠🠦🠤🠪🠨🠮🠬🠲🠰🠶🠴🠺🠸🠾🠼🡂🡀🡆🡄🡒🡐🡢🡠🡪🡨🡲🡰🡺🡸🢂🢀🢒🢐🢖🢔🢚🢘🢡🢠🢣🢢🢥🢦🢧🢤🢩🢨🢫🢪)>]}»«܇༻༽᚜’‘”“′″‴›‹⁆⁌⁾₎←↚↜↞↢↤↩↫↰↲↼↽⇇⇍⇐⇚⇜⇠⇤⇦⬰⬱⇷⇺⇽∋∌∍≥≧≩≫≯≱≳≵≻≽≿⊁⊃⊅⊇⊉⊋⊢⫞⫤⫣⊱⋑⋗⋙⋝⋟⋡⋧⋩⋺⋻⋼⋽⋾⌉⌋⌫〉⍇⏪⏮☚☜⚟❩❫❭❯❱❳❵⟄⟆⟉⟝⟧⟩⟫⟭⟯⬲⟵⟸⟻⟽⬳⬴⬵⤂⬶⤆⤌⤎⬷⬸⬹⬺⬻⬼⬽⤙⤛⤝⤟⬿⤶⥆⬾⥒⥖⥚⥞⥢⥪⥫⭀⭁⭋⭂⥻⦄⦆⦈⦊⦌⦐⦎⦒⦔⦖⦘⦩⦫⦴⧁⧙⧛⧽⩺⩼⩾⪀⪂⪄⪆⪈⪊⪎⪖⪘⪚⪜⪞⪠⪢⪧⪩⪫⪭⪰⪲⪴⪶⪸⪺⪼⪾⫀⫂⫄⫆⫈⫊⫌⫐⫒⫖⊫⫸⫺⭅⭉⭊⥳⭠⭪⭰⭺⮄⮈⬅⮘⮜⮠⮢⮨⮪⮰⮲⯬⸃⸂⸅⸄⸊⸉⸍⸌⸐⸝⸜⸡⸠⸣⸥⸧⸩⸷„⹖⹘⹚⹜〉》」』】〕〗〙〛〞꧂﴿﹚﹜﹞﹥)>]}⦆」←𝄂𝄇👈🕨🕩🕪🕽🖘🖚🖜🗧🠀🠄🠈🠐🠔🠘🠜🠠🠤🠨🠬🠰🠴🠸🠼🡀🡄🡐🡠🡨🡰🡸🢀🢐🢔🢘🢠🢢🢦🢤🢨🢪(<[{«»܆༺༼᚛‘’“”‵‶‷‹›⁅⁍⁽₍→↛↝↠↣↦↪↬↱↳⇀⇁⇉⇏⇒⇛⇝⇢⇥⇨⇴⇶⇸⇻⇾∈∉∊≤≦≨≪≮≰≲≴≺≼≾⊀⊂⊄⊆⊈⊊⊣⊦⊨⊩⊰⋐⋖⋘⋜⋞⋠⋦⋨⋲⋳⋴⋶⋷⌈⌊⌦〈⍈⏩⏭☛☞⚞❨❪❬❮❰❲❴⟃⟅⟈⟞⟦⟨⟪⟬⟮⟴⟶⟹⟼⟾⟿⤀⤁⤃⤅⤇⤍⤏⤐⤑⤔⤕⤖⤗⤘⤚⤜⤞⤠⤳⤷⥅⥇⥓⥗⥛⥟⥤⥬⥭⥱⥲⥴⥵⥹⦃⦅⦇⦉⦋⦍⦏⦑⦓⦕⦗⦨⦪⦳⧀⧘⧚⧼⩹⩻⩽⩿⪁⪃⪅⪇⪉⪍⪕⪗⪙⪛⪝⪟⪡⪦⪨⪪⪬⪯⪱⪳⪵⪷⪹⪻⪽⪿⫁⫃⫅⫇⫉⫋⫏⫑⫕⫥⫷⫹⭆⭇⭈⭌⭢⭬⭲⭼⮆⮊⮕⮚⮞⮡⮣⮩⮫⮱⮳⯮⸂⸃⸄⸅⸉⸊⸌⸍⸑⸜⸝⸠⸡⸢⸤⸦⸨⸶⹂⹕⹗⹙⹛〈《「『【〔〖〘〚〝꧁﴾﹙﹛﹝﹤(<[{⦅「→𝄃𝄆👉🔈🔉🔊🕻🖙🖛🖝🗦🠂🠆🠊🠒🠖🠚🠞🠢🠦🠪🠮🠲🠶🠺🠾🡂🡆🡒🡢🡪🡲🡺🢂🢒🢖🢚🢡🢣🢥🢧🢩🢫Use of unassigned code point or non-standalone grapheme for a delimiter is not allowedUse of '%d%lu%4p' is experimental as a string delimiterUse of '%d%lu%4p' is deprecated as a string delimiterExcessively long <> operatorUnterminated <> operatorGlob not terminatedreadlineMissing name in "%s"Prototype not terminatedIllegal declaration of anonymous subroutineIllegal declaration of subroutine %-pUnterminated attribute listUse of := for an empty attribute list is not allowedUnterminated attribute parameter in attribute listlvalue:const is experimental:const is not permitted on named subroutinesInvalid separator character %c%c%c in attribute listSubroutine attributes must come before the signaturemethodUnknown regexp modifier "/%.*s"Regexp modifiers "/%c" and "/%c" are mutually exclusiveRegexp modifier "/%c" may not appear twiceRegexp modifier "/a" may appear a maximum of twicemsixxnopnadlumsixxnopnadlugcSearch pattern not terminatedUse of /c modifier is meaningless without /g%s found where operator expected (Missing semicolon on previous line?) (Do you need to predeclare %d%lu%4p?) (Missing operator before %d%lu%4p?) BarewordBad name after %d%lu%4p%sBareword "%d%lu%4p" refers to nonexistent package{$:+-@Array lengthScalarFinal $ should be \$ or $nameMultidimensional syntax %d%lu%4p not supportedYou need to quote "%d%lu%4p"$@"'`q&*<%Array $#+-'"Can't redeclare "%s" in "%s"__PACKAGE__No such class %.1000sunknown} is not defined$^H{}} did not return a defined valueCall to &{$^H{PropagatedConstant(%.*s)%s %s%s%scharnames_charnames:full:shortUnknown charname ''Unknown charname '%s'charnames alias definitions may not contain trailing white-space; marked by <-- HERE in %.*s<-- HERE %.*sMalformed UTF-8 returned by %.*s immediately after '%.*s'Invalid character in \N{...}; marked by <-- HERE in %.*s<-- HERE %.*scharnames alias definitions may not contain a sequence of multiple spaces; marked by <-- HERE in %.*s<-- HERE %.*sqrtrqqAmbiguous range in transliteration operatorInvalid range "%c-%c" in transliteration operatorInvalid range "\x{%04lX}-\x{%04lX}" in transliteration operator:'{$()| Possible unintended interpolation of $\ in regex\%c better written as $%clLuUEQFUnrecognized escape \%c passed throughMissing braces on \N{}Missing right brace on \N{}Missing right brace on \N{} or unescaped left brace after \NInvalid hexadecimal number in \N{U+...}%02X.\N{U+%X.%X%.*s must not be a named sequence in transliteration operatorMissing control char name in \cpanic: constant overflowed allocated space, %lu >= %lu\N{U+\N{_}Integer overflow in decimal number0o37777777777integerfloatpanic: scan_num, *s=%dMisplaced _ in numberIllegal octal digit '%c'Illegal binary digit '%c'Integer overflow in %s numberHexadecimal float: exponent underflowHexadecimal float: exponent overflowNo digits found for %s literal%s number > %s non-portablebinaryNumber too longHexadecimal float: mantissa overflow+-0123456789_no"%s" not allowed in expressiontry/catch is experimentaldefer is experimentalGDBM_File::DB_File::NDBM_File::AnyDBM_File::ISAODBM_File::SDBM_File::try/catch/finally is experimentalMissing $ on loop variablefor my (...) is experimentalgiven is experimental|&*+-=!?:.Precedence problem: open %d%lu%4p should be open(%d%lu%4p)Possible attempt to separate words with commasPossible attempt to put comments in qw() list<> at require-statement should be quotesSubstitution pattern not terminatedSubstitution replacement not terminatedmsixxnopnadlugcerUse of /c modifier is meaningless in s///eval do {subroutine nameTransliteration pattern not terminatedTransliteration replacement not terminatedwhen is experimentalCORE::%d%lu%4p is not a keywordBad plugin affecting keyword '%s'dump() must be written as CORE::dump() as of Perl 5.30Ambiguous call resolved as CORE::%s(), qualify as such or use &Format not terminatedMissing right curly or square bracketBEGIN { require 'perl5db.pl' };use feature ':5.36';LINE: while (<>) {chomp;our @F=split(%s);our @F=split(' ');Smartmatch is experimentalUnmatched right square bracket=====+-*/%.^&|<Reversed %c= operator!=~ should be !~<<<<<>>>>>studyStringBackticksCan't use \%c to mean $%c in expressionBackslashNo package name allowed for %s %s in "our"Possible unintended interpolation of %d%lu%4p in stringUseless use of \EL\uU\lLUFpanic: yylex, *s=%uBad evalled substitution patternSequence (?{...}) not terminated with ')'$:@%&*;\[]Illegal character following sigil in a subroutine signature'#' not allowed immediately following a sigil in a subroutine signature=~>Illegal operator following parameter in a subroutine signatureA signature parameter must start with '$', '@' or '%'Unmatched right curly bracketparse_blockparse_barestmtparse_labelparse_fullstmtparse_stmtseqparse_subsignature0377777777770xffffffffBinaryOctalHexadecimaloctalhexadecimalZ dIZZZdZdXd \ T @ , FFA{n9T>>b{`[XFC;1)jXj^WQFFXFXFFbFbFXWXdb75) 7kI|IIFFIIcf_I^^voI^^voF-    ~ o .yF}FFFFFjFrAFsTt"agK~TFIuTulK}FFFFb3ZD~jF tuvwxyz{  !"#$%+,=@ABCDGHIJKLMWfgiklr} R#wk@o@r{_@cT@BTRkT`@ X6` @ @6@@ @7 ! ?qAT@@@`@ qT`@@_ TןAR\wAR\lAR\AR\@X6 @" @6!@!@! @a7 qaT@@@ q!T@@LTK@Gk@RrB _qAT@@ `T `TRB@RrB _qT@@ `T `Tb @%A@TRk@?kTG@[ARI\ARE\AR%XAR"XTRa@X6a @" @6!@!@! @7 qT@@`@ q! T`@@_KTןa@X6a @" @6!@!@! @7 qT@@`@ qAT`@@_ןR kT)T TAR[`@ qTAR;[;@a@!X6a @" @6!@!@! @A7  qT@@`@ qT`@@ןR AR[`@ q@TAR[@RrB _qT@@ `RTuAR;[;@AR[ @@RrB _qa T@@ `T2@#K@ Հ@?TARW7@@?@ BT@ @ X6@" @6!@!@! @A6RBR;Z;@ @b@7@RrB _qaT@@ `RT R;@##@@RrB _qT@@ `RTARFW@Q@RrB _qT@@ `RT.@l@X6 @" @6!@!@! @7 qAT@@@ qT@@_ןR ?@k&s@RrB _q!T@@ `̽T `T AR W @Czaz!?!T<ARV5@4@3ARVAR;[;@AR[MxbB}ed@d@#Tk@h"h%*M@T[`BE@ {@SA[BcCkDsEC,_g@CMF}$xb#˥BC$@dTk@@%h&!@R!@?q T R @uWARV>!0!P ?qT@@@TUWARV `R{T6R C,? {k`SB[cks@T?(T6}#sYok@?L@@X6 @" @6!@!@! @A7a@X6a @" @"6!@!@! @6RBRY @@6@@q-TR+# 6}k@?L@@ _6 @" @6@4L qT@@`@4L qTARJZ ARFZ`@4L qT`@@?@k@낀To@ Rr?@`c7xC?T@7@@@`X6 @" @6!@!@! @6RBRYg @e@6@@qTR kT7@C?@@7?Tw#TT7@?@@?`X`]Ta˜AA 5T`B ZCZv4 ?@T`TTw"T ե @ IX6@" @H6!@!@! @AH6RBR;;Y;@S @"P@6@@qDTR kDTBѿHT5CT_3 @@@IX6 @" @H6!@!@! @aH6RBRY[ @BY@6@@q BTR k!T`"bT @b@ccT|a@X6a @" @6!@!@! @7 qT@@`@ qaT`@@য়e~ARoYARkY7@?@NT?@RT R#wk@o@r{c MT@ Ac LT@!VT@|@cWaZ4@w@|@Aa@x`  J_@@ xu}T5@CK @OK@O@W T@@@ #X6 @" @"6!@!@! @A"6RBR~X@= @;@6@@#7 K@;k;@G7;bT@4#XҢ @-2T Ax`z T#`@a##R#?CdR 9RRC*r T@`P6 ?qT Rr  RkTBRCTOq{@\@@"6 g@8g@@B"# cc@9cSxC`7@"@54@@ \@87@x7 @g :D!B@o) ?@C@ @]E" L@tC@qAQ|@ARpQ @ @s@A* )4@#4T+4ARDM @ @, F@ IB!Ro)?@C@l@#Rh!8#RtC@@9@T@9R Rj!'T@@؉EDqDЋˉ@hF )@J8 @@tC@C| )Z$@@`@J @Pha82h!8_!@@ @@ @9c @Cy`5A@ `@'$@ `qTA@C!`@ON@DC@O@CA@@!`hFcAxa@@`4A@!dE#@a@!@A,@!a@B @ha8CЀ(7@A#@hFA!@cA@'@aBS@@"`_'@?qT!Q@B;@D@"(CR"@C@D@"@TWЀ6EkRrAiR! cR`"RF@ 6EcR "R!ҾF@`6ERrAC@COC@R@@O@C@C@"@@@@b@@@@ @9R@@@@!rA@@.R@@@`A"GA!DC@4@@!2@G@K@{ 6aRR4MrAT@4 4`BpARRCPRC@`@  "ћ44vDD@B/@dE@@ @"_/@?q T!QC`A@@ @ 7@@EA!ˡ A @"@$>4@444{˂J@x}{ SqJ2@IS@8omLT4%hfdmJ@G@D#@@YW Kg@#RҫH :cBRCBC@QJkzJCM@} c0cR"R! {SSdB[@E@ ;v@C@Tj 8Tсju85uRGOIA!@!@!@DsBH`@ {@SA[Bc0_5J{SS`B[c@?C@@xTq`TQBR_dR59@8RxTsB*?@a@ASA[BcC{Ȩ_րRQrTA <"R!LG@!u@7A_!j`BT R@R!R9U!8_ 86*#ER R`;8R aR@<R E RR#*RHI {S[ck+K:J@99864D*҄F_T@9e8BBD9_T?qT*! !=K! !=)I#qTaCR!`'C4 RREBBGBy8D! != I#q@TRR CR!"bC! CR!=bҚC@9x TBR^J@9x T! *! >*hC55` TCR~C5BREJ CR!"sC @?qT!Q ` @SA[BcCkD+@{ƨ_֡ CR!`="`C CR!`"YC! CR!.BRC CR!@"KC4CR"a!CCBR J@9xTaCR!"5CRR CR!`+CH` @SA[BcCkD+@{ƨ_K{S[ccI"qT Д ! '!?J! *!`?B! !?BB` @SA[BcC{Ĩ_ Дb5 ! >!?JVB {[UccRBSks`@GD@`Ta@9?qTˡR3M` 3@GRLGb @9xbc kATa !@9xb"j@TTLGR"_8bxbB _kT!a_8axa_!jTsAT! R!! R!@BG@@ASA[BcCkDsE{ɨ_ aCRRdRD@@3@ 7Rj@ T7@R$@9LGxd kTc$"hc8xb"j@TC@b˃T5R.OrT9 RiTGb @9RLGb kTa"@8b#jAT!T! R!@B}_T@9!}?AT#T*%RR=?XR;5s! !@C@R9HRwTAc@9b!G$c8d R! FG {[UcCRBSks`@GD@`cT4 RB*G@@A%SA[BcCkDsE{ɨ_a@9?qT5GRRRC?`C@@_ s T@06_TRNrT<R aC 5<RgRRRC]?`C@@?@T? @T4TCDha8aG!d8kˡR8L` HRMGb @9xbc k!Ta!@9xb"j@TTMGR_8bxbB _kTa_8axa_!jaTsATz4R {iRRRR# ?@`#F7Rj@TMGR#@9yc k!T B# hb8x` j@TC@`b_@Ts: 5R3Mr3@ T<RCR <*RR$> R0 R+bTHb @9RMGxbC kTa"@8xb"jAT!T R`MG`7@9yag6CT#Y4-T@a@9Ga8cc *%RR=3@R R! E@C@RR~G` R! E3@dF {S['m@ g @A`!A`? ?C!`ixkTAeA` ggC!`ixTAeA`gC!`xg` TAe7v76nb9`bc)`CxpR`gq!`*T!` gakTp4b2R a9ab࣐R`=r2RD|@| `|!K! 5-R R飐R 2Ri=r Reba-R||) h`ӂ| TBK9`?@ RB "4|-RK T `4-R R*9` g Ra!`TncQ(bh4b2R a9ab࣐R`=r*2R) @| %* Rg|Kq|@%0yKafQ@b(|$|* h`ӂ|BKM TbB @-R R)`"4|-RKT `4-R R*QtQs66@ T| RK-R4R*|@) $!~ӂha8@c hTR"! hb89`*B c hIT)x)~ӓZ)&)!yxD)" )SA[B'Cm{Ĩ_dS6R*|@"A$,@9K b h-TRA&cha8*!K)`@b h Tc)`dd-RRDRfR {" STA@[@B a"@? T@ W@Q qT*% qMT꣐R ARRj=r 2R R |*&|-R`|BKB B4?@-RT|K q!c kT࣐R|`=r2R&R| `|!K!5|@Sg&ӥ I)F$gRQRxx|H)  bBbblS!K!tSd!bde`(` (`@(`^ ! !@ aT^6RR =@@a@a@a  @a@a@b@b@b @c"@c@`v4B?@@ASA[B{Ȩ_S@u!K?,qT?,1aTu࣐R`=r2Rd|`| `|!K!a4@ T_qT-Ra㣐RDqc=r!Q||# R!|#`|!`BK#|aKB 5|2RK",qA࣐R`=r Rd|`| `|BKB5|2RK"DqA`R% IrB@ | ` ||KpS`K kp @GxQWq T@T룐RRRk=r 2R R D-R||+`|! K! A4_@-RT| K qƴBQcK_kjT-| RK5vQuRR*@!T| RKq!(DR ABD!,DBG#@Ce%E@c@@b#!!C5"B т_{ !I{A!,DST[VcG"@ CD$@B@s@U""#ssCb Q_q T~@} xu @b,BT _qT Rrc  RkT!@ @ @!4!L ?qT@@ qT" B`$R1BxKG@%> C`z5@SA[BcC#@{Ũ_րG@@ @A,!T ?qT RrB  R_kaT@BRK@! @ @!4!L ?q@TARHBR҂K! !aI{A!,DSTUG#@ Cb"@b@@S"!!C5`ARA==@a~@@x!@ SA@{è_ !:I { S=C kB l@' C#)==#='=+=/=3=? @A,!T ?qT RrB  R_kAT`@a@@bc@ABsB'@`@ @ @{Ѩ_BRK@.C {A!,DSS[VcxG"@ CD$@B@t@U""k˔C Q_q T~@} xu @B4BL _qT@@! @ @A,!T ?qT RrB  R_kaT@ q-T`G@@ @!4!L ?q!T@ @4E`G@hC{5:4sG C`@SA[BcCkD{Ũ_E`G@SC{5`G@xu9BRҬJARH@ARH* E @ H! !@|H {A!,DSSTdG"@ CE%@B@a@C"[!c!C?q! T`|@}Ӏx` @!4!L ?qT@@@tC@ @9 6@! @A@xa9q5A@uGR!4D#0rC "q#@9@cR@j`T RB* CwSA[BcC{Ĩ_ARG@tC@ @9 7B9q4D @ I@! !H{A!,DS[UVG"@ CE%c@A@@4a!cs#sCaQ?q( T~@}`xt @A,!T ?qT RrB  R_kTq@"-TG!@ h` @!4!L ?qT@ @a!@C?q@! 2HG@B {4@xt8G C@SA[BcC#@{Ũ_BRIq",T`@Cq!cHG@cB {40D @ lAR1G! !G{" SSB`cB[d@t>*A !B>A !HC>A !D>A !F >A !E>A !D> HA!F @4 E HRH@@ErT@{@?ITR * dBsB@`@ SA[B{Ĩ_ xEvA f%f&D;$P$pp}@ @!}E !C<<@E<J<@q}+}ӀTKq T M!Tq"TqL-TRcKb%Ϛk!Ú Úb$ϚB!"?!!)@ #c0QK !ÚI ÚB$A`|@TcK`q'TRBK$%)!š?" šB!$BD @@&RRjP`T`TqRR#MCPT!Lc8" “!C@g%@e8PA5_T_4!T" 1B,D" ?#?b* D R@9KqTM TqTq$TRcKd%ƚk!Ú Úc$ƚb! qT" ?!!D@@R(h""1;T/*_T A0*ҀgA_ b#qaT" ? #T!L@@BRB!A@@|jP@T`R @!T*ҤRLR*ҀgA{*=={¨_R@ !$q2#M_! T_4T"( b''- SpSP@ @R T@!$RL !LD@@R0A#q T!0QA  %rӥ@ү$C" ѓ@7QR!@1 " ?)ډD dj`AT R " 1@.T&*_ T r @K!M_@TqTqTRcK$&Ś""Ú_" ÚB%$ŚB$ B?!MRBKqcQ š  "$Ú?RcKq Úck$šB!?b*  K!M_TqTqTRcK$&ƚ""Ú_" ÚB&$ƚBB  RBKq šbK$ƚ_`T*   T_T *Xj`AT `%rӯRJj`TPR?jT`TP TRR_ T+ !? !"˓@@!AO T_ Tbc@"CaxCӣx!@*!D!@"C_@ T R/Rb*  'R ՏR!?RBKq" š"Q!$Ś?B`r*@  " ?ǟ!L@@(R`TRR_T  Mj`TPR@4RRb%r_@үT Nb* *  D@@&RRBKq" š"Q!$ƚ?B+b*   *R%r_@ҥ*T *c@"CaxCӣx!@*!*D!@"CӀRҏRuj` _R!1i"   _T RZ *N q" “$CaTL#MR5uRzf"f#D;$p"c @B!@cp`TT RT_( R_%EaT(? RGAT_kRT R! ?_?QT{ R R{_ RT(h ?Q@T f"f#D;$p*@"k@gpa TTFc R_@aTcCdF4?Z_gcc_T_Z_{ R:@R{_֟TT_ (TqIT_ TqRIbT_ RZ_ D;ft"_$@ӠTDҥ@R! Dӣ@g#8PA`_֡_8qTRAK$Ś @R!K!8@g#8PA`_`D!Q D@g#@c8PA``{ R=={¨_ң@Rg#8PA`_ң@Rg#8PA`__E<Q ŚfD;"p$}A?4Ca}@TB_TjTPT`&5R _ TRaA!R?@TjRP@T` TC #IF5c B_@TB(a A#@C(LA`g`5_RB(ҀRr_!CR!MRjR&R!PT# qa#I42!CB(_TjR&R!Ҽj@TP@ T`R?qBR*ң@C(LA`g{K@{¨_' @#a#I5%CB(q# aMMTC FK Ú"A$ƚ?!??@ T}C K& Ú!$š! Ú4RRqRB#I R"қe_6R26 !!D;ՠ6. "!D;6µRr!'B' ("!D;Հ6D !!D; 6.' 8" D;_{{_~ytoje`[VQLGB=81*#9<#####++7TW+####+##==OO5:::555O5O5?:5Xheeeeeqeeeeeeeeeeeeeeeeee_aeeeeeceeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee zeeeeeezeee$e,eeeeeeeeeeeeeeeee//eeR___reeeeeeeeememkmeeekeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeek>Hkzs0N1:#1FQZZZZZZZHHtZ+s333;;;;;;?;H;;;M;;;V;;;;;;;!;;;;;;;;;;;*;;Array passed to stat will be coerced to a scalarInitialization of state variables in list currently forbidden S@d;O@(\@%C @~R8 @p= #@Bareword "%-p" not allowed while "strict subs" in useAssignment to both a list and a scalarFIELDSNo such class field "%-p" in variable %d%lu%4p of type %2pMagical list constants are not supportedundef...Scalar value @%-p%c%s%c better written as $%-p%c%s%cScalar value @%-p%c%-p%c better written as $%-p%c%-p%cStatement unlikely to be reached (Maybe you meant system() when you said exec()?) %-p() called too early to check prototypeSTDERRSTDOUTSTDIN_ARGVARGVOUTDATABareword filehandle "%s" not allowed under 'no feature "bareword_filehandles"'subroutine signature"state""my"panic: allocmy illegal flag bits 0x%lx Can't use global %c^%c%.*s in %sCan't use global %.*s in %s'%s' trapped by operation mask%s[%lu] 0x%04lX .. INFTY .. 0x%04lX TR_UNLISTED TR_SPECIAL_HANDLING VERSIONPrototype mismatch: sub %-p (%d%lu%4p): none vs none&.^&|.^.Possible precedence problem on bitwise %s operatora HASHa SCALARan ARRAYCan't use bareword ("%-p") as %s ref while "strict refs" in useSUPER::::SUPER::panic: rv2cv_op_f}$xc"˥cC$@DT[@@%h&G҆z{x+? {[SB[cks@w)T?HET7}c|_[@"7 @exqaT RRlr TҠ|7}[@ "7 @SxqTKqן7@[@B@T_@7@vbtBTKqןkT7@BBT@@5xqAT RR<rTp|kTxT T7@9@ T-T!AA<5T CZCZ|4 ?@TTTxbT Kqןk!T{C#T`wqT RR~r`T.|k T!T%T #T @c@dcT7@ %T7@R(TCg[@_@kosW. MT@A B T@!`#T@|@BGa%4@g@|@Aa@x` HO@@ xt}S4@C; @?;@?@W T`@@wqTKq T?@R77@|8ҟT akz@pwKq TkT9?mT}7@|T  T_@[wKq Tk Ty#T#?BTˠ@!C!!A!A8!{aFwKq`Tk T?TaT<a@cT@B;@?@WT;@ T?@(T@K@BqS@O@@` TG@@w@OyR R~r@@TO{@ RR~r@TF{@cTa@Bk7@ R}rT;@7q-{;@7i`@;@ T`@;@TKqןkTB"T`_ @vqaT RR}r T{ RR}rTza7@9@ TT @vq@ TKqן7@k{9@#"@C zaz!?!Tl5@a4@K@T|BwE@ {@SA[BcCkDsE+_Kxcc}ED@D@"T[@h#h%W@CG@ RRm}rTҡzKf}$xc"˥cC$@DT[@@%h&GҀnx=vC,? {kSB[cks@iT?HUT7}#szo7}# k@"? P@ @!4!L ?qT@@@4L qTARe{ ARb{@4L qT@@?@ןk@R{NTo@ Rr?@ c76C?T-@@@ qT@R@ן!kT7@B?@@7? T@7@5@ @! ?qTAR({@ qTAR {ןR!k`T<#T? T7@?@3@`V7TaZ 5T`B ՔBZ{4 ?@T T?b T<"T@@` @ qAT`@R@ן!kaTBѿ +T @! ?q`TAR;z;@` @ qTARzןR!kT'T?-T`"?BT@#@$?cT7@?@.T?@{RT R#wk@o@r{z7_ MT@ AAZc_ LT@_!,T@|@cW-4@w@|@Aa@x`  J_@@ xt}S4@CK @OK@O@Vi T`@@ @! ?qAT@@@ q!T@@LTK@GkOG@C;? T@ks @! ?qT@@@ qT@@J TOGC@#?Tk@7ןkJTz#_BT!ˠ@!C!!A @!AB _q[X{a T@@@ qA T@@T_T7@aT`a@cT@BK@O@VTK@TO@T@[@Bqc@_@@``TW@@ z@_jk@ן?kTZ_mT{s}?cTHOG9 T@;_ @! ?qT@@`@ qT`@@ Tk@ן?kTG@ARyARyxARyARy@cTa@B8ARy TO@kGHARy6AR;y;@ARy@@@ qAT@@ןR!kTCbT_ @ @! ?q TARgy@ qTAR_yK@`@?Ti7@?@3@`VT @ @! ?qT@@` @ qT`@@ןR ?@ks."Z"AC zaz!?!T75@4@ARyAR;y;@MxbB}ed@d@#Tk@h"h%M@TyBE@ `{@SA[BcCkDsEC,_g@CZMF}$xb#˥BC$@dTk@@%h&H9W\usC,? {kSB[cks@iT?ST7}#swo7}# k@"; L@ @!4!L ?qT@@`@4L qTARx ARx`@4L qT`@@;@k@MTo@ Rr;@8c6ChT&@@`@ q!T`@@য়kAT;@CBT@@ @! ?q@TARrx`@ q TARjxয়kT ?#T ? T;@3@`V@7TaZ; 5T`BBZ{4 ?@TT? T ?BT@@`@ qT`@@য়k!TBѿ +T @! ?qTAR x`@ qTAR7x7@য়k T)(T?c-T?@`"?T @#@$?cT;@.T;@{RHT R#wk@o@r{7_ mT@  AAZc_ LT@_!+T@|@cW-4@w@|@Aa@x`  J_@@ xt}S4@CK @OK@O@V)T`@@ @! ?qT@@@ qT@@kTK@;k;@G:;_T@7kt @! ?q T@@@ qA T@@Tk@ӟZ?kTsmT{t}:_T[GSH8 ?T@;_ @! ?qAT@@`@ qT`@@Tk@ӟZ?k T:#Tk@7ӟZkKT_BTˠ@!C!!A @!AB _qSY{a T@@ @ qT @@Tz"_T7@ AR-wAR*w;@aT(a@cT@BK@O@V(TK@! TO@T@[@Bqc@_@@`TW@@ z@:_<@cTa@BBARvARvO@k;OARvCARv9GG@AR?v?@xARvn?@@@`@ qT`@@_য়kTCT_ @ @! ?q`TARv`@ q@TAR7v7@K@ `@?T;@3@`V?@T @ @! ?qT@@@ @ qAT@@@;@য়ks2"Z"DCzaz!?!TgA5@A4@AR7mv7@AR7hv7@MxbB}ed@d@#Tk@h"h%M@TvBE@ `{@SA[BcCkDsEC,_g@CYMF}$xb#˥BC$@dTk@@%h&G8W\rp,? {cSB[cks@ҩT?(sT6}k9ugc@3P@`@X6` @ @6@@ @i7@hX7BRjqן3@c@oTg@3@bBiT ճ@@`@X6` @ @a6@@ @6RbRKu  @S@6!@R!@?qMT RkT3@BBT_TBT3@@ VKTa{!! 5T`B9C{9|4 ?@?T TBT_bT Փ`@=X6` @ @A=6@@ @<6RbR7t7@< @@@6!@R!@?qMT Rk<T ՔBџTCT_ @`@ 6RbR7m7@ ? @"B@6@@qm;TR ՟kA;TBџHTCT_ @`@=X6` @ @!=6@@ @<6RbR|m = @I@6@@q8TR ՟kaT 6}c@3P@`@_6` @ @6P`"T@@cTt@X6 @ @6@@ @7BR!gKqןcy3@?T3@RHToc@g@sw{U MT@ aA{c LT@!FT@|@cOF4@o@|@Aa@x`  IW@@ xt}S4@CG @CG@C@WITu@@@X6 @ @a6@@ @6RbRl` @,@6@@7 G@33@?<BT պ@jy@@` X6@ @ @ 6@@ @ 6RbRl  @@6@@q-TF?@<#_IT@˸@C@@A{`X6 @ @6@@ @6RbRl @@6@@qT _TaT~a@cT@BG@C@WTG@A!TC@/T@S@Bq[@W@@`4TO@@ {@5W[TRk*T|#@ X6 @ @6@@ @7 BR+fKk*TmTә}#T_FSG ?T@_@ X6 @ @ 6@@ @@ 6RbR70l7@  @$@6@@qTTR k T3@ @ X6 @ @6@@ @ 7 BReK@cTa@B @ X6 @ @6@@ @@7 BReKqTC@R3@RrB _qT@@ ` T `TR@RrB _qT@@ ` T ``T|#$ARHhAREhTR| @ X6@ @6@@ @7 BReKkT)T T= @ X6@ @6@@ @@7 BRyeKqן @@ X6@ @ @6@@ @7 BRgeKqן@RrB _qaT@@ `T `@RrB _qa T@@ `T `TG@ `@?TARg3@@?`UT@@@X6@ @ @6@@ @7 @X6@ @6@@ @7BR#eKqן3@kst #{" @RrB _qT@@ ` T `NARg@RrB _qT@@ ` T `RbR7k7@` @@7@RrB _qT@@ `-TRAR~g@RrB _qT@@ `<#T `T3@lC zaz!?!Tv! 5@4@AR[gARXgLxbB}ed@d@#Tc@h"h%L@T lBE@ ʠ {@SA[BcCkDsE,__@C @ @a6@@ @6RbRj  @@6@@qmTRLF}$xb#˥BC$@dTc@@%h&g@@qlTG `DARfy!0!P ?qT@@ OjEvgeARf `T `m ,? {cSB[cks@T?uT6}kjgc@3P@`@X6` @ @6@@ @k7@jX7BR_Kqן3@c@pTg@3@bB T@@`@@X6` @ @6@@ @`6RbR'j @U@6@@qTRkT3@BBHT_T"T3@@?`UMTa{!! 5T`B9C{9|4 ?@TT"T_bT Փ`@?X6` @ @a?6@@ @>6RbR7i7@ ? @"B@6@@qm;TR ՟kA;TBџHTCT_ @`@=X6` @ @!=6@@ @<6RbRi = @I@6@@q8TR ՟kaT 6}c@3P@`@_6` @ @6P`"T@@cTt@X6 @ @6@@ @7BR^Kqןcy3@?T3@RHToc@g@sw{U MT@ aA{c LT@!FT@|@cOF4@o@|@Aa@x`  IW@@ xt}S4@CG @CG@C@WITu@@@X6 @ @a6@@ @6RbR$i` @,@6@@7 G@33@?<BT պ@jy@@` X6@ @ @ 6@@ @ 6RbRh  @@6@@q-TF?@<#_IT@˸@C@@A{`X6 @ @6@@ @6RbRh @@6@@qT _TaT~a@cT@BG@C@WTG@A!TC@/T@S@Bq[@W@@`4TO@@ {@5W[TRk*T|#@ X6 @ @6@@ @7 BR]Kk*TmTә}#T_FSG ?T@_@ X6 @ @ 6@@ @@ 6RbR7lh7@  @$@6@@qTTR k T3@ @ X6 @ @6@@ @ 7 BR]K@cTa@B @ X6 @ @6@@ @@7 BR]KqTC@R3@RrB _qT@@ ` T `TR@RrB _qT@@ ` T ``T|#$ARdARdTR| @ X6@ @6@@ @7 BRK]KkT)T T= @ X6@ @6@@ @@7 BR-]Kqן @@ X6@ @ @6@@ @7 BR]Kqן@RrB _qaT@@ `T `@RrB _qa T@@ `T `TG@ `@?TARd3@@?`UT@@@X6@ @ @6@@ @7 @X6@ @6@@ @7BR\Kqן3@kst #{" @RrB _qT@@ ` T `NARc@RrB _qT@@ ` T `RbR7Wg7@` @@7@RrB _qT@@ `-TRARc@RrB _qT@@ `<#T `T3@lC zaz!?!Tv! 5@4@ARcARcLxbB}ed@d@#Tc@h"h%L@THhBE@ ʠ {@SA[BcCkDsE,__@C @ @a6@@ @6RbRf  @@6@@qmTRLF}$xb#˥BC$@dTc@@%h&g@@qlTG `DAR9cy!0!P ?qT@@ OjEvdaAR'c `T `m ,? {cSB[cks@T?h|T8}kQfgc@3P@`@X6` @ @6@@ @@7@X6 @ @!6@@ @6RBRyf @w@6@R@qT8R 8}c@3P@`@_6` @ @6aqrTqן3@c@rTg@*3@zbvBIT@U@@X6 @ @a6@@ @6RBR?f@ @Z@6@R@qmT4R ՟kT3@ZCBTxTbT3@@?VQT9aa| 5TB{C9{|4 ?@T@ Tb TxbT մ@@@X6 @ @?6@@ @`?6RBR7e7@? @D@6@R@qMT4Rk?TBѿHTBT_ @@@?X6 @ @>6@@ @`>6RBRe> @M@6@R@qMT4RkaT"T @b@ccT@X6 @ @6@@ @@7`q=Tqןq3@ET3@RToc@g@sw{Y? MT@ !A9c? LT@?!KT@|@cOL4@o@|@Aa@x`  IW@@ xu}S5@CG @CG@C@X)Tt@@@X6 @ @a6@@ @6RBRHe` @B2@6@@qTC@R33@?<ҸBT@j{ @ X6 @ @a 6@@ @ 6RBR!e@  @@6@@q-T mTӛ}TcFWG T@_`@X6` @ @6@@ @ 6RBRd @7@6@@qT3@ aTaa@cT@BG@C@X(TG@'TC@5T@S@Bq[@W@@`9TO@@ y@9;W\@@X6@ @ @6@@ @@7_q@ Tk TF?@"?)T ˗@C@@A\[{`AX6 @ @6@@ @`6RBRd @ @6@@q T ՚#_T@cTa@B)T RkT`@X6` @ @6@@ @7_qT Rfr@Tc RfraTRcR@ X6 @ @6@@ @@7 _q TqTG@3 @RrB _qT@@ `T `TR@RrB _qAT@@ ` T `TATRkT3@8AR`AR`ATRf@ X6 @ @6@@ @7 R_qT RZfrTҎc RSfrT҇cG@3 @ X6@ @6@@ @7 0_qTqןkTT T@ X6 @ @6@@ @7 _q Tqן  RRfrTLc@RrB _qT@@ `R̺T RRfr`T9c@RrB _q T@@ `lT] RRer T'cG@`@?TAR`3@@?VaT@@X6 @ @6@@ @6RBR7c7@  @B@7@RrB _qT@@ `RT8R2`#9"`e@RrB _qT@@ `RT.AR_@RrB _qT@@ `R TAR_ @X6@ @6@@ @ 7^q Tqן3@k@RrB _qT@@ ` T `T|C {az!?!TI5@4@AR_AR_LxbB}ed@d@#Tc@h"h%L@T@d`BE@ ʀ{@SA[BcCkDsE,__@Cb RR7er TkbLF}$xb#˥BC$@dTc@@%h&H@R@q T8R RRerTKblOOAR6_K'!0!P ?qT@@`]AR(_ `RT8RU,? {c`SB[cks@T?~T8}kSbgc@3P@`@X6` @ @6@@ @@7@`X6 @ @6@@ @6RBR{b @y@6@@qmyTR 8}c@3P@`@ _6` @ @6]qsTKqן3@c@tTg@*3@zbvB T@U@@X6 @ @a6@@ @6RBRAb@ @B[@6@@q-TRkT3@ZCBHTxTT3@@?VRT9aa| 5TB{C9{|4 ?@T T TxbT մ@AX6 @ @A6@@ @A6RBR7a7@ A @BE@6@@q=TR ՟ka=TBѿHTBT_ @@?X6 @ @A?6@@ @>6RBRa ? @BO@6@@q:TR ՟kaT"T @b@ccT@X6 @ @6@@ @@7\q=TKqןn3@ET3@RToc@g@sw{Z? mT@  !A9c? LT@?!MT@|@cOM4@o@|@Aa@x`  IW@@ xu}S5@CG @CG@C@X Tt@@@X6 @ @!6@@ @6RBRHa  @B2@6@@7 G@33@?x;T@wjz@X6 @ @a6@@ @ 6RBR!a@ @@6@@qMTF?@"?IT ˚@C@A@Aw|{`X6@ @ @6@@ @6RBR` @@6@@q T TaT(a@cT@BG@C@XHTG@'TC@H7T@S@Bq[@W@@`@;TO@@ y@<W]@cTa@BcT RkT"@X6 @ @6@@ @@7[q TKkTmT{z}xTcFWG T@_@@X6@ @ @6@@ @6RBR`` @'@6@@qTTRk T3@@ X6 @ @6@@ @ 7 [qTK RbraTR_R RbrT_@ X6 @ @6@@ @7 [qTKqTC@R3@RrB _qT@@ `T `TR@RrB _qT@@ `T `T"4AR\AR\ATRv`@X6` @ @6@@ @ 7R[qTK RXbr@TҌ_G@3kT T T, @X6@ @6@@ @ 7([qTKqן@X6 @ @6@@ @`7[qTKqן RRbr TM_@RrB _qAT@@ `lT ` RRbrT9_|@RrB _q T@@ `lT ` Tb RRar`T%_G@`@?TAR \3@@?VT@@ X6 @ @A 6@@ @ 6RBR7_7@  @@7@RrB _qAT@@ `-TRJ`#9"`` Rar T^@RrB _qT@@ `lT `!AR[@RrB _q!T@@ `lT `@RrB _qT@@ `"T `T3@KAR[ @X6@ @6@@ @`7mZq@ TKqן3@kC{az!?!T<5@4@AR[AR[LxbB}ed@d@#Tc@h"h%L@T4``BE@ {@SA[BcCkDsE,__@CU RR+arT_^LF}$xb#˥BC$@dTc@@%h&;@@qlT RR ar@T@^_ `OAAR([?!0!P ?qT@@L\YAR[ `T `CC,? {k`SB[cks@T?(T6}#sC^ok@?L@@X6 @" @6!@!@! @!6RBRt^ @@6@R@qmT6R1# 6}k@?L@@@_7a@X6a @" @6!@!@! @74L qT@@`@4L qTAR^ AR^`@4L qT`@@ןR?@k@BTo@ Rr?@`c7xC?T@7@@@X6 @" @6!@!@! @6RBR^i @g@6!@R!@?qmT R kT7@C?@@7?Tw#T"T7@@?@ B`^Ta˜AA 5T`B ZCZv4 ?@?TT"Tw"T ե @`HX6@" @H6!@!@! @G6RBR;];@T @Q@6!@R!@?qMT RkaHT յBѿT5CBT_3 @@IX6 @" @bI6!@!@! @H6RBR][ @Z@6!@R!@?qmT R kT`"T @b@ccTa@X6a @" @6!@!@! @!7 qT@@`@ qT`@@ןR azAR]AR]7@?@@OT?@R(T͟C4C@ @2 '@[06F@-^TC@#Ԓ@!aT#S@@9z:a@Z_T#S@S @RC_q*@ X@S@ TVTRUTB R!8`T|S @T@5@9-Te C!Ac _8"b8AT R_iTc05F@8T"aT!! @T"@bLTRS KT*I|S!8TS @T@5@9|S!8aTS@&-T@TB HT@9!?q TTT@VT"GBVT@9Aa8!T˿Ѐe4-TTSbS@Ś BڙChT@iT@9!Q!?q)TMITHFg *oR B|SX7@4ET R@  `8 8T*gJo@ @9@ӅэTTg@S 8E ջ4c R#r`TE9S@cG Rsg8crTE9E`b8@ 5Y@ @mT c)`T@T@M1T@"Tc|EWo @MTc)`-T@?TRaEr<@9R"|8@@4 R!(! D9<|@ BiTA@9@$@Aa8D9T@T@ UQ"E,T@@W@o@@)G $@9$d8!c?TT @Rb@*` a@@@?h 8TT|@@z T8$F@L#TF!C@!@?m+TmT@TH)TR!LG@94 `_ jTTC*cSS@J@9Ec8"@5y@ uՖ"ɒ)'RA(! D99|@BiTA@9#@ya8D9 TRC;@ T@dR!(! HD99|@B_bTA@9`$@aa8D9`TRC@!? Ta`8?TqTqTqTHT@9!G!b8 T &Л@@TiT!GT@9"b8ATT_kqT_T@9@4@@94B_T C@qAT@X5 RR  bC@MT@9%qT! *@@x`v( S6C@BRRS@"SS@r 'n8"s #RR@@9hqT @9q!T @9qSXS@@8C8?TNT@!?|SaTWT|*CC@A@9qTq!T @9|qK @- , + - (eP3SS@ @9%Q `(qAz?q! & % * ( !C*bS!!B*A SR& @)ۚtSR  {sCb!BSBC[G"@7ka'@R!EKa7@?qd @zT@@`4ck'mu#@KcKc@@g`3@c @ @Hg)gq\Ts@s va8407@!?Ta~@4?T!˟HT@bPTd@bAdBbCa#@#a'@a6`4;A b/*KA?q)TG@TC@@m;Ajq!"RK[ΎqvQLqT /;EvqQLqhT ! X`xa v@V@4@7+T\BTaG @9"b8VhT#T`!?#T@`! @tTR˟9@ @`A`B`C`#@`#@r4@`3@ @ @qu#@\T . @G@U@[ _cc? T@`@H6`@@ `DT`@@@7~!g aTp7h6@eg# 3lD@`gbB@eAd@@`"@e`|TAcX `8ay`2`8TI9!l5 9@ 4T@ӂ @@hT9@Z@@\R9?lTcNyMTC @G@s@ @@y#y5'xT$*| @bG7R<#yS4RAѱTGO@S@Sԕ /T`~@s̭T@ ,T q/T R Rr k@.TBRO@@-6!$E!@!8@A-7@6RO!cU@!՚B|ÛBBAӤ4?ȶTA~B_#T@#B @;T C##_ @[O@Rr`T5o@ғ5@@!˗4R3@_J[@-Ty_ [@@C@G@ `@7raT5q#T@_DT?g@T{@9`@@6`@rTa@"!?TaR ?@qTr T,!T ?q@T Rr  RkTRҟ Ք4cB9C_DьT_Jg[@uyѭTC @G@s@ @@yZ#y35'xTT*n @BG7R<Z#y34RAymT[@Ck s@G@*K @@6@ @5qDTZ_TJG"yMT[@Ck s@G@ *! @c@6@@s5q# ATZ_T?TC@9 @C* @G7 Ry4cB9S@>yT[@Ck s@G@t * @#@6@@y#yS5q@9Ty Z_T?TC@9 @C* @#G7R?<#y4cB9S@AymT[@Ck s@G@t* @c@6@@s5q#`6TZ_ T?TC@9 @C* @G7 R4cB9S@y T[@Ck s@G@ *o @c@6@ @s5q-TZ_T?TC@9 @C*V @G7 Rǖ4cB9S@Ҍy@-Tc @C@G@w @!0!P ?q!T@@ h-T0E@@b5q%TTScJ yMTo @Ck gH@@Rr  @! ?qT@@5qA#T@{TJg_@W@@ `3 G@MT* @"@6@@T95sф8 TGS@W@@@]4T_bT_8q`Ts!Tb@A낕T"@T ! @a@@q$ES6 @@!@V8@2 o Y*Tt* @ Rr_#jT@@5؈5 T@6 {@R!4uT9!@HaT@! @T!VsR9lTO@S@ZsMT_ @**@ RG@Cr *Y @?#jT@@@y#y5q T@yZ sTG[@_@0s TC_  R@** r@G@*/ @?#jT@@5qA#T@sTS@mTC@ @C* @?#jT R4cB9W@J@?qB!HPT@ B @T#@@\ s T RCr@ @WG@ @ @Z:5GsTt* @"j TRNZ:4O@RsTS@GW@˧sTC_  R@** r@G@ * @?#jT@ @5qAT@sTS@mTC@ @C* @?#jT R4cB9W@s TC_  R@** r@G@*g @?#jT@@5qA#T@sTS@mTC@ @C*M @?#jT Rɏ4cB9W@҂sMTC_  R@** r@G@*) @?#jT@ @5qA T@sTS@mTC@ @C* @?#jT R4cB9W@D@,!T ?qT R Rr ?kTBR@@R6$E@8@`,7@R_qT@@qsa!A"AW4_+TAB_c*T@ B @뢮T5@sҀ"q`T_ 5EcsC*R  @mT ՘4룕T69S T_Kc@s@6@58@?qTW@@"˓Rd`w_ @@_G@TARя5q#TZ_lT_JGR_ @@G@ _-TtARP[=S5qCT=Za'@! CK-t@,!T ?q T R Rr ?k`TBR3@@)R6$E@8@7@R?q6@@qsb:aA@"CW4_TAB_cT@ B @TГ q TE cR*C* @?6jT74?CT @TS?6T*?@KcNT@!(58@_qT"?AW@B R˴t@ ,T q T R Rr k`TBR@A6!$E!@!8@7@A5@6@@?qsjqaTg@IT!cGD@9?%dd8BBTT@5@aqvjqTq v!?cT@! @BT@2?r`T@,(T`*Tˀ˹@q`Tst*W @@6@@`'@|tF) ^x#y A!*b`'a7@C@k@cx:5a'@ys\@!?k@aT q`'@ dTCC@c@qT!Q!D!@95qTS G@ { R!F!@f$RdCBCF@4F>C"A@R@cdC_q@d9@4SAR[B@{ĨqR R>C_C@_R@4>CSA[B@{ĨIײ@`@95sF`@β!Rcc@s*T* 3 R7@RTkDsEF *Z@9b R?q Q$BzIzT "R7@qT_@ B0 !( A7@R3Er3@T_@Z2' @R!V3@T@9(qT;`@9(qTsaTkDsERSA[BcC{̨_ R3HTjhqaT'@`A2'Ta@9CR?lq Q$CzIzT_@ B0 !( AĪ@Rs3v R3v Ra@9!?$(T@9tq T'@ B0 !( @A@ABC #@ _=SGHIJ_@#*<'@ (c0?@*c @x'@ c0 B(*@ bm'@ 0 B(*@ b_@ B0 !( AY{S[ ւrT`2@qTa"@t@ t`8BrTB@UTprATSA[B{Ȩ_`qTlTqT T q TT@qT"qTTq@TmT`qTtԚkTqTTԚqaTqT`&@ c0 B(!@ bq T,ThqTqTTq`T`&@ c0 B(!@ b@q@TqAT:@qTbAd@bbAdBbCa"@?|VE`DbCdFb?@`"xqTTrq`TTqTQqiTc&@ B0 !( @Ac&@ B0 !( @@ A{k @a7S[cs@ @@[_T@9697T!2SA[BcCsEkD{ƨ_֕˷`" 7@|}4@A{" @` 7a{ @T``@cTcTOu`@T@8שT9`@T u`@T 7`T9 7{` 9#@ya@@6@!x @A @ @2SA[BcCkDsE{ƨ_ @" @@Z@@=@T7ҍ7҈/-#7@  {S* @B7X7rTSA{¨_ֶb@_6 ` @ @A6@@ @6:`@H6`@@qT *@"Ѩ !ΨR+ @CACHT @_A Cad7?IT@_rT?T8?T@9d|Sgd2`2g6$8D9?AT_%8!D9T#_8d|Sfd2`2F78! {[*cBS@'@B TRr@9R@Ea8D@4Rs*s D9s~@ B`TA@9%@a8D9T~#@_T T @R!#7s@#@@3@"ҵB*'@@ASA[BcC{Ũ_T˂# ",O{S3R;sB[Rk"@GNrR rsq@TT?bTc3ERG7 $@9tEAd8#@5!Ҁ@C9iT2@qT@8T?CTcCRrCR( aD9|@ BiTC@9d@c8!!D9?T3@*C@_ATT!@97@Aa8992BBC@8ZaT x 46R;@rR6@?`ViTE@9`8`D9!)T"@9@Bb8D9@T*a@9Ga8 VHT?9X6@X7 c(@R !@$jcC R;@95BG@@ASA[BkDsE{ɨ_cC C CZLT Rc0c{{kSC[Gcs'm/@%@[CBb '@BCGb@kEDKg#_%Yr@T@:#@`4_qG@G!@CAT 3@qT%@@?@*[@ Ww @?w84@! šЁ@zT@@zATF@˿ LTF!C@!@?TQXNqT A% @9Xwxa ֿ@;*5! Ś%5@?|T Z *`+E-T* B+ץ@(CF@GTC@#* '@`"6G@G@CTr qT 3@q`pT?@oT_ @!4!L ?qT@@nR:#@|O ET@bT4Rr@9REx8"@A4R( @D9@!`T$@9 @$d8D9T_@a*@@PT@qaRQDAzu Tb)`TOJwMT@멯TC@ W;5@9@7`86T@TCV@Mw@{@cT )@I/T@9!Q!?q.TS !|FOC@g@@9`8@4|F ?§T @9T  @9`8bT"@9tSB_T#!@9a8"_TAlSB*!b@9B_Tdb@9b8C]TbdS!C*B@9!cT@9c8cB*B999vZ_@,T@8_(q@TBT"@9_(q`TT@9!Q!?qT@SJON!F@PT#C@ '@7?kTcSW{5 q@@T@y3y53yMTb)`џ T4J*CKU "3yVTcSW*o۽5q@T@@uTb)`џTo@5@@˿ ;TBRyѭTcSW;5 q@TD@A")`џ T[4J* Ɵ"A"TcSW5q@T@@)`џT{4J*"@ΟWTcsSo5q@T@@s\!TW@s@ @@?q#}`TcЅU[4MTTC7A@b%T*3s"`8TC@ü@bT.5@9_qaѠ,TTG!?SaTZ *`+Ҳ` R>  bMTgB) `>T!`T)i!`Tic̣iA`CF@̸T"~@u5Ѕ_kqT_qAT4 '@16,TBLGcG@9`4?qTT 97`v( S 5C%T @`[4n@6?JTO @{5@?qTRLTˤF@mT#^MTcSW*5q@T@U}@{Tb)`џT ? 3@q #TF@ T@ ?(T5qT@@R#h$ TcSW*5 ՟q@TD@_;q@TA uTc)`џT4J*_;qTAZf"AZTcSW*[5q@T@5@ oTc)`џT4J*qU <"@0ѭTcSW*[5q@TD@5AMiTc)`џT4J*GU "A@@qc`TcЅS`֗ @RS@*W@@ C_q TR THFg *o  SX7@c4T*|S"b8"8T*gJo@9C@FA@@B@ lT" C@#u-TSW5 q@@|T@@)`џT{4J*"@ѭTcSW*[5q@@vTD@5AMRTb)`џT4J*U j"m~TcSW*[5q@T@5@MTb)`џ`T4J*uU @"@@5@ Ś%F-xTcSW*[5q@`wTD@5AFTb)`џ T4J*CU "N;5M:TT@`c_8a?@c)` TZ *`+h* B+R` q ա R  b@qBz@/T '@6Rh A@('B@2 '@d@z@c"CA $\*!7@ '3!('@1\('C4"#@#!78# @q2x@" '@<T '@@!C" ?#@ #7@A B"@"C !@/?qbTWo{5q@`\T uA`^[=ZX^@`џ`T4W@*o@ dS"[=E^S@ec]4;'@{Cэ\TcSW*5 ՟q@@STD@_;q@TA+Tb)`џ T4J*c_;qTAZ*"jmVTcSW*[5q@GT@5@$Tc)`џ`T4J*5U "@-QTcSW5 q@JT@y3y_q@T3y Tb)`џ NT4J*C _qT3ByZ3yқ"3ymKTcSW5 q@CT@y3y_q@T3ByTc)`џ`HT4J*C_qT3ByZ3y"3ByѭETcSWo*[5 ՟q@`CT @5mTc)`џqT;4J*@U "CNTbT!G뢺T@9"b8ATCTRRR999^_bCRBӂR@RR@AR aR@9qQDAzI<@"|M8JT@`c _8a?,TA `+R| ՚ %F@˿ /TSq@S@n  @W@@7D?7Ҝ#@D   p   " &%C OC ZΚ"@"+@9KAqAT '@ R)RDcrC @"1T5@9@RrS ?q T Rr  Rk TBR@? T@2kTA `.LBR @?q+T!Q @Rr ?qT Rr  Rk@TBRס@!ha8a5a_84Ta@9!Qb A|!c3! AK!a8T?7Rr`@ ?q!'Ta @ @9qT  @8qT#U@@ @@@ @@W@W @W@[@r *+S@*o@PJ*J_J*Dk@a@ G!CBB@7@A@aG@C!SA[BcCkDsE'Fm{٨_S@ B#@8C8?TnS@ B #@8C8?TS@ B #@8C8?TS@ B  #@8C8?TS@ B #@8C8?TJS@ B  #@8C8?T@9g9@9c9S@ B #@8C8?TS@ B #@8C8?Tb@9g9@9c9@9g9@9c9W@ @B@#@8C8?TS@ B  #@8C8?TS@ B #@8C8?TS@ B  #@8C8?TwS@ B @8C8T@S@ B#@8C8?TBS@ B  #@8C8?TS@ B #@8C8?T@_x?qTTM4{j  @RCW@*@ 9C@Fb@@`@!?@ nTC@#yRrC@`@ ?q T Rr  Rk`TBRvTg@_qT@"5T1T9SA[BcC#@{Ũ_rT[BcC#@SA{Ũ_{4A@_q@TSA[BcC#@{Ũ_ @!@5{S[@@@AH7uE}*1AT W@4@?qT@5l*1 TokSA[B{è_WrTSA[B{è_Z4_ {S @c@5[cx@E!c@@ @qT@5!@c@  SA[BcC{Ĩ_rT[BcCSA{Ĩ_ _{S@`@a"@T~@A@!t ASA@{è_ {@@@m|@{_֘"R  R_*r`TqT`RqE5CR"#9?h"8_RDP6" R"9q"TBcR#9?h"8_րRqE#4qTBCnR#y?h"8_R"#9 _ { ss^Ac@b@T B_ @{¨_Na{ B!{_ @{S@s @ @?TB@A@ q T@@@sTJSA{¨FSA{¨__ @@{S[@ @?kTt hT|ӿ`a@t "|!ah"u @ SA[B{è_T|ӑ`: {S@TR҂@!|sCAhab@@a~@?TSA@{è_ _ {S@@!@a ? `@@ 4`@@R`@SA{¨_ր@`SA{¨ @@"@B@6"@Bx"_{n{__{S@`@a"`T[SA{¨_{ @A@p7 @{¨!xAI @{¨{a[ BcwSB@"@/s ab@ D@!t!aB,@ B@.``@`@`@ `@ `@x2`5@x#+@b @CRC`?+@@++@@+@@+@@@b#@B/@@ASA[BcC{ƨ_`R/#{ky*s{|9_G[{ASoEc3gTf @@T @sT`|k`@Tf@53@SA[BcCkDsE{Ǩ_z4u@@u@TsuB@9@5 fR! 4uG @ sB%RRRe9d  {R"R  ( @@{è{`,DSt[uvG@ C$D@ @‚Bs@ C@'cssCqT!|@!7}Ӏxa @b,BT _qT Rrc  RkT@@#xa@ qaTR#@iG"ѵ C@ւB! @'@@a SA[BcC{Ũ_րG@@`@`7abU!@`C| T`@r`T P7@7 X6` @"R @6@@ @ 6R5BR `@``@R@"RTR@` @@9q`@@ ` { ss^G`@ @{è`@ @{è{St@[vcsbNGs`@94`Rq*% DzNGT`@8q`$ Bz`T 5R*SA[BcCsE{Ǩ_!!x?P@q T&RNGk@9b$j`T_qT?hTkDR*_$R @8q`TTqTpqT@@9B 4 45BK! R!ckD8"R77@`u @?q)T!Q qaTZ5)@B`c@qRDR**! !R,7RK*! R!kDzғ ab!AB@B`7 @ @_ց@T_ @!|ha_{ `  {Ss`nE@@?mTSA{è_`[lA@9 5`F@ 4  Ra@utnED}`PGz`Aw`Bt`HGq`En`Bk`Ehb@B@B`6@@[B@?TsnE`@SA{è_tunEDL`PGI`AF`BC`HG@`E=`B:`E7b@B@B`tnE@^@[B  {a !G 3 s"`a @ {¨ !F { *ls6@s a~@b @{¨BBs{S!@?T @a?|IT!W@c@`a@P@ @?@SA@{Ĩ_@$?֠SA@{Ĩ_ # ! c!@'# ! c! *T{S[c@P@sTRSA[BcC{Ĩ_SA[BcC{Ĩ_R_{S[%`D@d@TR*SA[B{è_* 4*SA[B{è_@C*{҃q{_a!PGg{_{`@B@B$@@?**{_j**{_֙"R @{g|@{__ {@c@c4@c{`}R{_w!R { @c@c8@`?**{_dR_"R{@!@!<@a{ OR{_I!R {S@!@!D@Ra ?**SA{Ĩ_w[R^A@  a@sqT@w*SA[B@{Ĩ_R*SA{Ĩ_!R {[v^AS@VԂ `@@a!@7`@@T@SA[B{è_j{ @_ @{¨__֠{@BSL@ ճa@!!@ ?ր@?T@SA^@{èf_@s@SAo@{èf_of_{S''@|@@SA{è_փ@`@x`@|@@SA{è_ {S@a@!!p?@q@T`@b@a@!SA{¨_@`{{_{ ''@@|@ @{è_ {[v@R^ArS@ӂ s T`@@ j!TSA[B{è_{ @!@!H@ ?**{_0R+"R@@!zAR# " c :B )! R!`)mkFh@C@@hB@@D@hAR_\{S [%`7t@95*7 !@VAA!Ba@5 *1TSA[B{è_[BSA{è_*5SA[B{è_ ДB*+A!*$*[B {SS[aB"@'Ҡ@A7{@94A!B@@@5@@sB'@a@AʡSA[B{Ũ_@{ @C"@cB_T"@_T!@һ`@6 @{¨_3@ @{¨_ @{¨_@{DB B@C@aTC@Te6 @{¨l @{¨__ { ` {?1ST*B"@T"9`ZB@@ASA{è_*{" S9sBc@ҫ@a@Aʁ @{è_{{ p@ @{è_{R ^ @{¨ {STBC@ҟ @A,!T ?qT RrB  R_kT`@a @@ia @?qiT!Qa B*@@ASA@{Ĩ_BR@'{ SsB/j@7 # )D/E'=#='=+=/=3=7=;=7@a@Aʁ @{Ҩ_{ @@` @{¨__ ` {[c@ @P6SUTdTT4b SA[BcC{Ĩ_2 !R[BcC{Ĩ_˵"T4_SA@@,@D&{g!R{_ {" SsBc@Ү@9@a@@Z @{è_s { @@c @{è @{è__  B {S[`@,TTSA[B{è_d@Tbj@SA[B{è_SA[B{èZ {S @c@5@R҃@c q!T[VcE @@qT@5*T @T@ @2 [BcCSA{Ĩ_SA[BcC{Ĩ_r@T[BcC,q T@A@!2A[BcC{S @c@c5[Vc@E @@qT@5*5[BcCSA{Ĩ_r T[BcC,q T@A@!2ASA[BcC{Ĩ_{S[c@@6@@bITT@sbTҀ@s@@ @t  7@ѾqSA[BcC{Ĩ_ցT4@A@!2AO!6B@!Tt@ RQ|@4 CB҂~@SA[BcC{Ĩ_@H @"(@RC9?(¼ {S[@ 5@@`7`@` `@ .5a@b"@U Ta@4t@A@!2ASA[B{Ĩ_-Tjt"@`@ҖR>@`@[`@3|@ 4 TbT@A@!2Aȿp4@A@!2A Հ{ @a@ @{¨__ A!$E"@C8@@9qT !)6{RR@$@ο @?r@T",BT _qT Rr!  R?kaT{`@_c6 !`){_{BRz_ CѿAz{C[VłBSc*s*'m@Gh''aT@@@`?T*@sdTO`@sTւBG@@Aa{ASB[CcDsF'GmC_֕@@CDC@`Sks@sb# @R`?C@@:)A @?q)T!QA C@@C!@@C@@CkEqmT@6&&&*?@cJT_4ҋ91T S`@94Ґ@9@4kk@  *RRRC{ Ss^A`@ @{¨_Ҫ` R! s R@R @{¨{S[*c@\A@` 5R4@ @X6@ @6 s`@9 5N`@9`54@SA[BcC{Ĩ_55(4@@@4?(q(T_ @qT"$Q_khT@6 "R-rcRBB@B`X?,q`TT?0qT?4qT R`[ ?$qaT RR5R6e R@G5R@R(> R!5R { Ss^A`@ @{¨_A`@ @{¨_ { Ss^A`@ @{¨_/`@ @{¨_ {SSsB=j@7 / )#='=+=/=3=7=;=DE7@a@AʁSA{Ө_{ Ss^A`@ @{¨_`@ @{¨_ {B BlA[U!StXBc @@9@7" @!@ 5@F@ 4  R@RCc*`@9C5**7*V#R#@R*G*׷@ @ 2 ` @a @?q T!Qa B7@@ASA[BcC{Ǩ_/*` @ɺ*6a @?q T!Qa **6! *` @**6RC *J F=#R#@R*G=*zR{S3bBC@`Ro&RRR}sB@a@AʡSA@{Ĩ_{S3[bBC@`RH&RRRVsB@a@AʡSA[B{Ĩ_ {S3bB @C@r@T,BT _qT Rr  RkT"@ @A@? T@R*sB*@a@ASA{è_BR@? TR{S3sBa@ҝ(@a@@ZSA{è_֍{()C)B@',@? + )CCD!R/'#='=+=/=3=7=;=?=ѿ R{"BBS@8@7 7 $E@8@7 6!RRsrT D@95 gy adT `ӟZ_<gR adTx_ <g a$T>gy adT `ӟZ_<gR adTx_ |g adT~g aT^ f_~ f_|gg bT^ f_  `dT~g aT^ f_~ f_|gg bT^ f_ {S[cksZ@6@_7Җ@9J!xA(41TqaT@9Jx5 $ q3T#q  `BB R ! Cg@RC@*)2H h`c(h('Fm;@SA[BcCkDsE{̨_"TT&TC'T'T'T7@9NGa$ 6"|S FB! *s"Ě |@@9NGa$ 6 |S"F! *s"Ě |@@9NGa$ 6"|S FB! *s"Ě |@@9NGa$6 |S"F! *s"Ě |@@9NGa$6"|S FB! *s"Ě |@@9NG!`!$!6|SFc !*@9! s"Ě!|@3NG!`!$A6|SFB !*s"Ě "|@)T'mˀ 'mˀ 9Rc9#;!;* RKNG /J kR`@~S#F!*`~! )b4|@ is"Ěs6@9t$`7~qAT?@ 4@9a$ 6" T ѵ*`TT7@$T* R!`OH@O@ ՚06@2&5;@@TSA[BcCkDsE'Fm{̨_J hhc )jF587R' [O@r@H'I[@TCqT q@B`B`'B(A` R W@@@HIW@(A`T70_qTZ7ROw@rHO@T#qT q@B'B`*B R!@HO@447777@9NG!`!$6|SF! s*` |@(A`&RF@97 67(A`&R8:/7 qT#q  `BB R ! ܳ@2'Fm~BB' Bf;@'Fmt9R9#;'mc;F BF RR$RRRRG@RRdR2G {F RRS3$R@bB?C@'д?@@A7csB'@`@ SA{Ũ_#@ {RRS3dR@bB2C@'??@@A7csB'@`@ SA{Ũ_#@{RRS3ЄR@bB?C@'?@@A7csB'@`@ SA{Ũ_#@p {"BBS3[aB@8@"@'7 7 $E@8@7@ 6!RRyrT D@94 B@ @A,!T ?qT RrB  R_kT@@!@#ƹV?ր@#@T8@R@?T"@9_qTsB'@a@AʁSA[B{Ũ_*"5@ R#@!@ C@@RrTټG6`@5R2`R5RrTYW P6z X6`@2`Y 7 W@PBC"P7R4RR5RrT\O@G!@9a8qTg6Rҽ4Y 7*R?j TW@{@?hTO@RR&R" @@$?r`T`@?r2`@9G|(T23@@w'6`@z2`Y 6W@?{ W5 b&_@1 Rur!TYW6`@5R2`u3@!2G3@O@G!@9a8qITR@9G<qiT23@ W@F(RKrTRJ3RW@R0B@_@7@R?jT?@RO@RnRiR !`6%5RRrAT5R W@3R?@O@ THgRC T`+ERfW@ !`6'RqR5R3@*T! ␂!@?G?@qFG@iT2-`@ RTR5R*`R&RDJ3RCrT R!rC@ T`+RgR$ Rf`@R4R5R*`W Մ@9Ef8@%5@F_ֈR( D9|@   BT@9 @'h8D9T@9Eg8@f5@GD_֩R) %D9}@   BT@9*@Hi8 D9eTҦ {S#`B[*cu@/җF&E@aR9  @6Y@XB !@9Ea8!`D9 B)TC@9 #c8D9`TzSeW W@ 45sB/@`@ SA[BcC#@{ƨ_K ,$ (!{?S[Tc@@9Ga`8@@Tja8? qTH@9? qTaa8_HT8E@95R3rTSA[BcC{Ũ_ց@9!G@#`8a@V?TRs*s ?s~@T @8@?TtC@@@y" _qT! @DFxaR! ! *@7SA[B{Ũ_G@9@`8cCa@ARXR@9GrcEs8as8 @T``RB(B D9B|@ Մ`IT@9@"ee8D9@TR_BtC@@@y# qT! @DFxa R!-cCb@`RB(B D9B|@`IT@9@ee8D9TRAR''@{SR$b@9rcEdb8@AT`R( D9@|@ եdIT@9F@bb8D9TSA@{èRM@@˥SA@{è_`@@5˥@aTcTSA@{è_`R( D9@|@dIT@9F@bb8D9TRa@9ҁ4{SRb@9rcEdb8@AT`R( D9@|@ եdIT@9F@bb8D9TSA@{èR@@˥SA@{è_`@@5˥@aTcTSA@{è_`R( D9@|@dIT@9F@bb8D9TRa@9ҁ4{ "T@9#҄Gb8KT s#T@9b8*TtC@@@y" _qT! @DFxa B`6RBa !( @{¨_?T @{¨_AR B`6BRA !  @{¨_ {CSB0CCT%@9kAT?bCT@8E@т?6(TTd@9e *qT@9BkTBRB$Z*SA{è_?R`CT?BZ*SA{è_"*SA{è_րtC@@@y" _q T! @DFxa B`6RBa !(0"*SA{è_֟qTR!e@9$ c@9*` !`6'R$tC@@@y# q T! @c cDFxaR! !@+"*SA{è_C c B`6BA ЀR! "ARE*@c c@{S3@s BӂTB @B@BB}BT 96`97c@T+?T1c?T`96 TB)TD@9d?6@ TTD@9BqTSA@{è_c ` ?T`@@TCQcSA@{è_8cbTb@9b?6a@9c!"*B8T9ˡSA@{è_{S[@@95CSA[B{Ĩ_ @T8T@9hE?6@эTHT@9e*qaT5ˤA9SA[B@{ĨA9@!_{S@bSa BBB@B@B}B˿tT A8A_@TB C_B cGcc|CTTYT+8sTb@9C|SFdd2c`2f6$8s9AT9SA@{è_ҟiT Ղ8BT.T9SA@{è_ {Sb7csTkR@Rr[@BTku8 kt8a  !T Wz,TCht8Bhu8B  #"hTA( ! #T [BkDaSAcCsE{ƨ_ @,7A@qC c! !`+ a+[cks'%RR R$R {Sck`B[@?B TsЄE@@R @9b8 @5@@";#!$ ) TJR$@ |Sh99 <S%9h9)9_TsE7@53@sB?@a@ASA[BcCkD{Ȩ_փ* aD9|@B_iTC@9ad@cc8!!D9?T RA#!$ ;@`@95 R<S BB7@RRs {@BG@x`@ {_ {B,F@@@ {_ {BB@@@ {_ ՄtEe8@86TFӄ2c2#9C$9C_$9!A_ֿ|qTqTqT{** ,QRRsRR/c` R 9` #9AA_ T$ -{C !E`6f`&$@ ҥ >{A_c R )T$ .{C !Af`6&$@  Х r{A_cRTLFc87 9!A@_$ @.{C !Gf`6&`$@ Х&J{A_|Scc`2d2$9@#9DD_qT|qd@zTcLFc`8`@C86cFc22$9D#9D_#9!A_փRRw7`nR yA`A_ր@R/Ңr"_ {S@cE%@9G@be8x`4@@Rd!(! D9!|@iT@9b@dd8BBD9b_TRT`@9`5@ SA@{è_#RR$ {SBE@9cB@D`8u@4@ER!(! D9!|@ciTd@9@d8BBD9b_TRkT`@9`5@ SA@{è_#RR {SBE@9c,F@D`8u@4@ER!(! D9!|@ciTd@9@d8BBD9b_TR)T`@9`5e@ SA@{è_#RR {SsnG[`@K !!x`?q@T Tb@! D@B@@9Bxc!KSA[B{è_ҿSA[B{è_bB&KB  `6Baa8AD@{CS[`Bc+r@7ҠTG@@98E@9 4E@9y5487*c R@@94?6?T@T@9_qT*@Y4%@xHT9!ҡsB7@a@Aʡ{ASB[CcD+@_֔?6REt8@4R@( D9~@ciT`@9@`8BBD9"_T#Rp3@AT#RR4?7@x T!|S!d2B`29A9@ 3 -!E `6f `$@& >y4rcc3q`T?T@y8R_k@TR?7l@Ҡa&y Ҡ! R 9{CS[`Bc+r@7ҠTG@@98E@9 4E@95487*cR~@94?6?T@T@9_qT*@Y4c@xHT9!ҡsB7@a@A{ASB[CcD+@_֔?6REt8@4R@( D9~@ciT`@9@`8BBD9B_T#R3@AT#RR14?7"@x T!|S!d2B`29A9@ 3 .!A f`6& $@ y4,Vqcc3q`T?T@y8R_k@TR?7k@Ҡa&y Ҡ! R 9P {CS[`Bckr@?ҠTG@ @98E@9 4E@9y5487LFt8a79!ҡ@sB?@a@AA!{ASB[CcDkE_@94?6?T@HT@9_qT*@Y4@xT9!ҡ&q` T?TR4?6Et8@4R@( D9~@ciT`@9@`8BBD9b _T#R;@AT#RRc?7@xT!|S!d2B`29A9@ ; @.!G f`6& $@`&y4^}g!|SBd2!`29B9qcc;sn T˟Ta@yR?k TR:b@9r@Eb8#@ATR(! bD9!|@ iT@9"d@#c8BBD9_TRg ՀC@@`6@9&qT@Ҡaljy &sF)a@9Ga8{TA@R(! bD9!|@iT@9d@c8BBD9_TR/@yR_kTT?6R  R9!ҡ sFs Ҡ! R 9sF{CSc`B[k3@?6G@@98E@9 4E@95RT87*c@9?6u˿T@TcE`t8@ 4dR ( D9~@BiT@@9a@``8!!D9?T#R;@_T#RRDv 6 .!A F`6&$@ 64 T@y!\RkT᝕RkTH T?7@xHT9 sB?@a@Aʁ{ASB[CcDkE3@_|Sd2!`29@9  ;@7 .!G ҥ=$@z56"@T@9G86 aa8_T@9a?7@9Gt8@"_TR( |@ T  @8@T~Ӄ҄@T`ҟ Tp@9?qT*@z52$@~T R/Ҡr @9qaT! R!@0 `1a!`@y@9y 9~BB;C @9?xqaT! R!.&q`Tu˿TR4?7|qT@ 4&`ljy`@yR?kTR?7 4 R9Q {CSt[aB#"@?6!G!@! !8E!@9a4!E!@95ITRjT *:sB?@a@Aa{ASB[C#@_֔6" B.!A F`6&$@ 6" B.!G ҥ=$@ҵ/Z/@j {[sTS;Rc@9Gt8?T k1E a@9Ga8sTt@9t8TqT?lTT?TqTqT@T`@9t<qAT` @9qT`@9hT R7r7@TERt8!D9! T"@9b8D9TR7R7@q(T ՟qaT`@9|T` @9hT@R7r7@TREr7@CC9a@TAR( !D9|@cAITd@9@Dd8!!D9?aTR77@@R7R7@v`@9qTq!T` @9TkDc ctC@ @@y" _qT! @DFxa B`6a BR!(SARcC*[BsE{Ǩ_*SA[BcCkDsE{Ǩ_`@9|q@TxqT^` @9@|)T:AR;RqAT`@9<qTMqT`@9<qT?T&AR( !D9|@cAITd@9@Dd8!!D9?TR7a7@RBFT#@8@Cc8D9TqTR7[7@R7r7@T c )T@94$@9!_kHTTEt8@D9c  Tb@9"hb8D9@TR7 {k+ABS[c#@?s@xT9 9c2E@@TRd@9rEabd8@@a T`R(B D9B|@ եiT@9@`8ccD9CTR_) Ta@9Ga8{(TZB @?@A@A SA[BcCkD+@{Ȩ_ւ@W6LGb 6_ AT76*77@CRcR(B cD9B|@iT@9@`8ccD9CTR_(TD76@xhTCR"9_pT CR!@2BACR!/b]"@!@B@{[`SABckXRs@`k 6`xR8E@94`E@95yXRkk@2!rC@@@bG@ @;f O?_ G@`@;FO?@_@O@;@ ;zCSGSW?@;@2@BTg@ 7@@96AG `8gk@T7@@9 67$kg@@G@9"@9a8b8kaTqDAz@T˔ 9u T @9 @9ca8b`8_kATq$@zT{@f`4Ra9B@!@ASA[BcCkDsE{Ш_f;?O_77@b7@b497@!B!_hc" 0gc9k@g@@!4?@c*#a77@"7@b497@!B!_h" 0k9@5gJ@*+k@g@U@ ҁ4@G@9a8k@5 @G@9a8gJ*;@Sk@c*#@`?@O_@4AG4`8k|S!Dd2!`2k99T_@@aTO@@TLC@@G@ R7e@@5$;O# TE{bB4DS@@95SA{è_`DD* k c2@T`E@95``C@94SAR{è%P*k c2@aT``C@94 c@3` c3E@95{[uSFcwBa@@? #@`@` @7`@bsABlA!$@c6D@@@9"v@9`9E@ 4  5s6Dv9F@ @@ A R!RR`@  @? r!T RQ`L@9 7F@ @@`  Rb6RR@ @? r TvxSs@7Dba@7*7@RR@T @? rT`@`F@@4@R@@B?@@ SA[BcC{Ȩ_ !@44br@Tb a@6BlAB@99VR a@#@vcb clA!5B4D5c@9C9DR@@R@@{rT`@r TksЀ@c6D @A,y@9!T ?qT RrB  R_kTBR;@`6D9BTyЁ@9#R"OG@a jT+ :R9OG{6T@9 a_ j@TITbb6s6D BlA6B@9b9kD+@Ycb clA8E@9@5@9 qT ! !(R$ #@G T$RrT@x4@3TbA9`5 @1T`́T@9!a8뻠iT$RhrT@@@9`8BG@8E@9@5@9? qT ! !(R @9x@ 59*#iT@9CӠ @9$6_4bA95 @cTT@9CӠ @9$7@AR@_@T_86RNGa!jT#GbA9a5 @?OT@_ yT#@9c8!_ IT@9za!j?k!T9R @WG6E@a8T@9@9*kTRKdr#EK@b{8a@@aBTB`R([ D9`@`T@9b@ff8BBD9B_TRҒ@@"L@!|S7T@9"@#[G)T@9a1 `$Rr`T@x4@DTbA95 @BT? T@9@Gb8?붠T9*#@T@@9L@!|S?T4bA9@5 @NT)T@@9L@!|S?TR#G@d8BiT@9D@9|S@CKc( #(T$RMr&T@D@9@#NGGT@9 R@9b 2#jTb8 T@9 R@9b 2#jT9*? ;4bA9@5 @?9T"_T@9Gc8_론RG@P#@9GT@9 k`T@x4TbA9`5 @T` PT@9a8뻠iT@9 kT@ @9 `8!G@WұG@@J8E@95jA9w{DR@9@2q`T;T*q@|T.q!QT#GNG T@9697NGAa!,KkHTx4_TbA95 @]T_mT@9G!c8_T6R6R8R9*@9NG#멻T@9 R@9zb 2"jkT? 4bA95 @THTR9*@OG#iT@9@9{`$kT?4bA95 @"TT@9@9{`$kTRG@?@9*# T!@9@9 k`T4bA95 @T6ɯT!@9@9 kT9@ BT9*#G@9a8T@9@9«T 4bA9A25 @hTrYT@@ bT9*#BT@9@9bT A4bA95 @TraPT@@9@WE뉤Tb*RL@9r@Eab8d@ATR(d D9|@ciTd@9"@$d8BBD9B_TRz@@"L@!|STx4`TbA9 5 @T?MfT@9Gb8?떣@@R@?@T@_87RNG` j_T# bA95 @_iTZ_낕T@@9{` jkATR@9@@a5@R@T@_8NG`IT#Z_T@@9z` *kTbA95 @bTRra?TR@G@'@9 \5@@_@TE@9w8a@C4RB(B #D9B|@ @?iT@9@e8ccD9CT!R_q*A|@-TR@IT#:ENG@987:E@94NGv *k@T @_-+T@9!G!c8_렠T8E@94NG*@ *kTbA915 @#T#r@T"@ƒT9*#G@9a8"T@9@9BT4bA95 @hTYr,T@@~T9*#}T@9@9|TA4bA9!5 @T6r!&T@9*#@)zT@@9L@!|S?T4bA9x5 @bTwT@@9L@!|S?T@9@#ZGIuTb*t$RQr`T@x4TbA9s5 @"T? T@9``8?붠T#ZG@@`8BioT@@9@9?kT$R$rT@@@9R@9@@A5@R@T@_8NG`T# bA95 @TZ_BT@@9z` *kATRG@@925@@_`|TůE@9w8a@c{4RB(B #D9B|@ @?iT@9@e8ccD9CT!R_q*A|@TRd@oT#:ENG:E@9`4NGv *k@TbA9_5 @T_T@9!G!c8_렠ikT@9v?6@!? @HT"_ T@9CqTB @9V*4{ *G@@9t5@UR@@TU_8;E@94LGu9_T#;ENGx *?kTbA95 @bTZ_B}TX@9;5@qhax@z@9@@5_ TK @9EK@c8@dj4RB(B #D9B|@ @?iT@9@e8ccD9CT!R_q*A|@eTR@iT#NGG @bA95 @?T#T@9b8ifTbT@987NGb *?k@T9R @9*@G#iGTa?T@9"(QB_ qHT@4bA9E5 @T_T@9G!c8_렠CTa?TT@9"(QB_ qiT?qNTa8WҔҒWB{[D9*@G#?T@9B87@9!RcLG! !2cb?#j@T 4bA9=5 @‹T_mT@9a8_렠HT:R@AR@_@T_86RNGa!jT#G@9za!j?k T @@_-T#@9c8!_ TNG!R*@?"j?k6TbA9a5 @?c5T#r4T@bA99R5 @?BTG@{@9 F5@VR@@TV_8;E@9{g4_NGv9jT#;ENG x *?kTZ_hTX@95i@qhax@z@9@@`:5TK@9EK@c8@5cLGc9 T @#NGG?IT@9b87NGb *?k@ T @#T@9b8HTLG(@ *?k%TbA95 @%T#r@a$T!bA99Rc5 @?TrrT@7Rw@@R@?@T@_87RNG` j_"T#Z_bT@@9{` jkTbA9 _5 @bTRFrTR@7l9*#@T`T@9@(Q_qCzHT?4bA9 5 @낍T T`lT@T7F@9qITqTqTq@Tq8 2@@!@6x`@ L B@ xb(D k Y} 1N@R9 @!* f@O@,!T ?qJ T Rr  Rk`TBRO JO@ q`T@y@ TCo Eg*s5R R @ G* * *Ok *@|dah`x\Tq T4@R! @ Kʚ y`@4*9 ʚ y @`Nb"Tq-TTq`-T%Tq8T#q!7TCRG@ O@@9E`a8@`H5 @!O@AO)TS@S@Ro@RR JK`@ @!4!L ?q@T@@@@ysR @@$R5xzU>4*a"@"44r@y!*! !+dT@?kT@!|}@kATha44|~|**ahux4b@R! @)K ʚ zi@iT-g@`A9@5g@#OWrO@W@!Tg@@@?ThA94@9Gb8? T!FE!@@?T Ҡ@5T sT`@9Ck`8$6T**a @y cw @@Kc@w@W7`@9O O@JKiT@눏TڢR!Rr!!|!b@OA(T@s@ x`xTbA9R5 @`Tr@_TF W#AR@aTbLGb9 q`TTqTb@9Eb8a@!@@!R&**Z|ahzxBCR@s*7O@@9E b8@ *5@@!RT`@9 Cke8$7k@`@9Cke8$7 `8sTcO UO@J?KTc@9BGWc8ҁ!iTp+r@T @RG@@b@9EW@b8a@ 4_ qT8E@9`5Rc<@r@W@c@NOTR @r@KNOaaTdR(b  D9B|@ciTa@9%@a8D9TR JK_B `@9" G@@w@9qT8E@9 5R rJKATDR@JER( |@!D9BiTC@9e@c8!!D9aT?TRc JK!r@T @k@@9aa8)@@9Aa8zЁ@9Ga8@@$R(d D9|@ ciTd@9@d8BBD9"_TRҀ@AR <@JsKKr@`TDraT@d=r@TdRO@@( D9|@ B_bTD@9a@dd8!!D9.?TO@Rc ?JKQ!R`( O@|@!D9s@eB_TC@9g@c8!!D9)?T@!? @(5T"_MT@9CqTB @9V*Q4{ *Cr@T @bA9U5 @bT9RrbT@99R@r@T @C**@x4`6TbA95 @5Ta?-T@9Gb8?뻠x4@7TbA95 @5T?T@9@Gb8?뼠@;-@~qhax@z@x4@2TbA95 @0Ta?T@9`8?뻠`@ cR( bD9`@`T@9f@c8BBD9_TRҀ @#RR R#RR RR @9R@?T@9!(? VT@9>r"T@7rT @}G!b8+r@T @#r@T @1#rKT@ @@~qhax@zC@c7T#T@9dqaT`*@z` *Xr@T @,O;O@(?q8T?qOT@9_q!OT@9B_NTTC@c(1T#T@9dqaT`*@z` *1 r@ Tjr@Tcr@rT\O@A!9r@TQ"@cB_i-TBa8_댵T?q T?q&T?qRT@9_qT@9?q86q`8T>qT#GNG멅T@987NGAa!a4@k4@ @ @ b.@A @@4@T@8@ @kB 7KW@7@K@#Tk@9?@G@@@k@@5g@ 4$@`5K@@97UkbTa@9Gha8`{3k{s@O^CHO@@w@5KD9@5C@C}G/HTC@GA@9ha8@@0Cl`3@m G@ 3 w@IW@4S@a@TG@ 3 I3J GOܛK؛G@O@e @usb.@@ ! SwIS@ SIS@@SC`bOrHO@aT{ScB[ks"@0@9s(q@AT9@@ 6$E@8@7 R) k@A9O9:3@`@7<#@``VTRB@@ASA[BcCkDsE{ר_) k@A9O9:3@G6;@a6!+@`6!E9@_5{T;@ybXTa O6<#@CT!;@B? r@`T;@6 /@b,@П_ T @@93pqAT@"xB 2  q! !!;S@99t]9_ ;@`7)RaG&@TРA@RA fcG  * *gqT qT@@!<TskKTAq@AT@@!<ITN@sk T@I`(*H@J&K@g@? @ ;@'7@PC?@GG@@G OT ?@"?@RBB}L k@rT`6@VTG@3"?@R ;@BB|3@@B@kmT*0G4G@` @[? k@=E9@G5#T;G@.7IRts@G!;@G@!06;@_yXT@?o?";@\4! 2!;@!'@@"!@9a˄Gc8T @9aBуc8`T"!;@ ;@ 7A9s@՘ R@ @a@@ !<iT]!/@# @O#@ )7@O5 @KWK@SE9*@zO4k5O@@@K@@9!!,*S@@z_BITS5#gG S@TE9K@`85@O@LW@E9K@ˡ/4Q cw_Kc@BT[w@[@@_,5T@c(TrTMg@;@86 ;@@T@B@k, T @@,;@ 6 R3@Q#CwrT k@W6iTd@9"@$d8BBD9_TR?=?@5`@9(q7qT?qA'TR469NG?8G`@987NG `@@T_q@T_qqT_q`Tq@J  @= @@ R Ֆ@k@R6!R` 5o'!R` `3j'@R@o@`4@`#@w@_kTaLT@9?TTR1 5jA9`o59qm0TA9 T@9A9A9! _!kTq@T.T qRTqR`T@9S@9@* @9! *@9*L) ?k,T B'@!@kT#@5H)QCkT`@94k@`@!@ x`@ 43[B'@!@kT#@594@ 5C@CW@3a@"R3A4H@k3=qן36W@b@@T@a K*@?@{ xbcT/RC?@c@|x"ATCB@GJ@t]Ӡf9[@c@"@ @9F "@@@@?qT!QW`RW@+ cBG@!@kjT")#@`b7@Q7`4'@k@@@y@!@yAxa$@RW4RkT?q"@z!|h`x 5"|y+A#@q@Ao@+BA@@)k@@ [@!@@9+@ x`@P@! *@[K65*@!5c4@y`x`x34*  R+{@@aT@;@R@#B;@@@`@9o4k@`@!@ x`o`Ro@r`@9 h4@ׯk@`@!@9x`BR@5)@U5@Wq`@9nW@@ BzT@TACRvCc$E@j@@B@G@_k@a@@@hF@L!@cHa8@q#TqFTY_@@?`$T@Ra# R!R!Rj0@@` R#@Dg$@@@hF!@@k}! a @A!@`$@AnP@@.`$@?qT!Q`8@!R)vCCF9i+8@`@9@Tl@9 RRjaTD؉@hF@ȉ @)@`8@`C|)y$ @`@m `P @ `@9! Aay7!@ `@ ` @`@?qTQ0 @@`@@@@Aa@hF#@D RBhF@ @#@cA &@@@ @@? T@9a636@@@y! ?qT!$E A;@@@ "@ @@ @Q67@` "@ @ L@92 L9o@!R` `3G%o@BR,vCCGG+a@@@D?@Ca@@@@˟ T_@vC@ 4@@q` @  bT!5Y6m@ @6@B@B @7 !? qET D7rgTvCsMB$E@G@r@PCqBF!C@B@#@MT R0Ao@`@3khTA;@R@33J@t#N3A5t@t "@9?\q'!R+9@t#/R'+{@+c@yw9`@9Q9@4#4*jA9K  @5 CT Q9w5@@+@[55t@t T{ R+t@t !|T` 02 ) JEk R_4RJ@B;@|ECha@NAo@kTDA@TxT@!qT@d)Q?qAzTB**x0`4@?SBThc8?!T!q TDiy8kT B˗#T_-T!qT ?q5G@ L)JDK R  )AJYD+ R ) JEk@9`@G@` ЉL)JD Љ )AJYDB9f.rT`a@RB;@ |Cc@Ch B;@@@@o@?kITAoW@AiH@`i4!kiTW@!Q@?@B,@x!c@RB;@g@`AkfT4[@`@bL@a(@W @y @ywL_kT[@(@ 0T`@9@/4J@4N@QN@5@J@81B@` @B|B|@*@_,TRs3N@sAA,6N@$Rc@9a !QcDӢ@!|@C @@B@"D A|@Cch`8`)T[@ L@Q L_8b@9q~T[@B[@o@!@kCC9ЂR9KO++@o@/@@3@84AgkIT`@y@CB9S@+95`@yq@4@K5@9 D?qBa8CQcxcd@zT#5_qT+@@94;@RC;@?q|@c @zT*jA97@K@~5!`@9#ABo@+kA@/ITa @y`#Ga@yK2W@` H@! 4#@ 4?k T%R d4W@@H@ A5Ac@RCW@@c"@A @!t]ӡf9@@F@@@@@?qɘT!Qc@@c@ 0@9:@(qATZ@B3@k BsW@[@@@G[E@I@@_qAK H@4B?@!Q@Cx!@WW@aRWT(@#{#`_xG`_xKЁ@9R Da8Qj@T?qT?q T#x"dQPqB@AzC R◟?q$CzB5 DR?qW@T?q@T#x"dQBPq@Az⇟?q$FzB4"<_XqT @9?qT"<a8?q T_qT_PqT@y@9#RC{ D@9a8QjTq!S49@S@4G@59CB?q@' TK@Rk,T@d5|@a%ˀ A97@iTA9kTag%I@CIT@@K!54@*C@+@ C kFT#@`4RC@W;@|M4jA9ѻ@5j4R#@B;@@#@Ao@kiT@o#@@ R/@I {#CI@;@# B7@!@k+RTsc[@RL@kTRj1r@TnA95 Rn9a *R!3{)[@RA@[T@/@H5@9?q[TR2B+@!@kMT/@@o@kITRA;@Q"/@kHT@o3@@@9@4+@R @ykT;@k7T#@B+@!@kHT@965+@;@ @y?k 6TW@H@4@95 @59 7YzA9 lT@9cA9gA9! _!k!lTqTixT qRTqR;T@9@* @9! *@9*K) ?kiT+@,@@04RD@8B9B9-.4@@ 5p@-4ER@[@@L@A(Q@LG@`,4@CB @Cha8*@h!8\@[ @7L@ @ykKYTRkTR0rVT[@QLG@ )4@CB @Cha8*@h!8B@a@BRA$4@@?TjA9@A35 @@o@%@o'k@R@`@B@@x`soJ?S"T@<5?7`@ MT@9 ?(qN?S T7R?-OT @*4Ghy8cT>9@9b@9a@ ? kSBT@9b@9a@ ? kS"T+@@9A"4w@9kTЀR)@r@Ea˂w8@@!T,R(W D9~@iT@9@f8BBD9B_TR. a@"L@!|S(T@@9`4`@9kTЀR)r@@Eaw8@@T%R(W D9~@ ՄiT@9@e8BBD9B_T@!R*5b@9`Ta#q*5$RrTo@!R*@ 5`@9R@9|S!K!(@ ! T$Rr TV@!R* 5a@9@9?k T$RrTD@@ R@*4?q@@zR@zD@8TcqF@@{Te@9?E@Y`8Thy8k8T'G@I@q@D@8@zaTF@cDER8E@944B7@!@k+Tsj[@@@L@A(Q@LG@4@CB @Cha8*@h!8BC@!@kkT@[W@@H@4A?@QB,@"x @c"@A @!t]ӡf9@@F@@@@@?qET!Qc@@c@ 0@9:@(qTB3@kBG@!@k+Ts#@B_q @KJ H@4"@QA?@"x `T@9 @(iT?4qT@ 4?qT?q!T@9qT @9HT`Ҝ@TY?$JT?$JS"T@ 5T'R@!R*5a@9@9?kHT$R r@Tq?STk;@+@;qTW@@H@4@94Ak`kT@`4*R*C;@|jA97@c@K`4?q @!|@BA@@`@;@@@o@kBTDoW@D@lW@H@4+@@94?k@/T@5R'@X?$J!TcTa@T9_8(qTY@ATU@ R+@F@B+Aq!@B3@kT+@@o@kITRA;@Q"+@kHT@o/@@@`@9qLq +@5$'R@$TLG!R_8LGBxc?"j"R$xy_ j?kkaT'RG@@,`@9,5@@@Z58E@9eT_8@4LG7wZLGxy/@ R+@+@?k{3_q$@zT'@@9?Xq`T@@@T` 0, _gR@`5?ST9@b@9!RLG! !2xy? jkTcRE@R?q@ @zBzD@8F@ Te@9?@YT`kTT_`?4_@Rc@XD7R?SBT@?⇟a@9R@*C4LGxy$!kT7RG@?SBT@?ᇟR *`W5 @a?iT@9hiT@9@qhT`@9A!* kAT!7RRRRG@@Y( ,)JE Rz Ru ,)JE RC'R@4`@9qTT 4qT@9R* 5$D@SR&r@9E@@b8@AT4R!(! D9!|@iT@9@e8BBD9"_TaRs @RTLG!RLGB(@?"j"R(@_ jR@?b,T@`@9B5q ?TT qTqT9R*@5_8 9Gs @6"z`@9 @2"z`@!&RRRsAj@4q T9RC* 5_8*_4qa T@9(qURG@s'`@9sA48E@9@14 @RZ@T@AbT@9x96 @T`'T@9@qA'TBA*LG!@xa ՙ @BT@9q96@@(T -T@9`qTa!*LG!@xa@ J @RkaTV@'M qTqaT@9R*5$G@gR &r@9E@@b8@!T 4R!(! D9!|@iT@9@e8BBD9_TaRs3*sA@ f o!!G*@Ix`R%r@@9@E @`b8@aT4dR!(! D9!|@ ?iT@9b@dd8BBD9_T!R)@@fs4@@9@9>H@=4@BkA=Ta8?qaT@y!@4 @`"QR_j>T?qA>5uTT@9_ qT@987_kTc?T)Tb@9_ qȊT@9?6e@9*"kTcK@CG@k+T@ T/@ DA@9a8q$Ez]TB@' RbcT@9 T?0q/T T?8q)T?<q!T@9R?qJT k T @"_-kT@9Gc8_뜣Q?(qT?,qAT@9qTqTqRT@9?qT @9q9 6B9r]TTsW@9sA878E@9 4LG7w@9Y%978E@9;4LGy%RD@8P` @yq@ 5+@;@ @yk xTQ;7@jA9K@4@?q!|@B?T@T59 E69'@D!T@9A@!(?"T_4q 7T@!4_qsT@9?qasTRD@8B3@!@k+T+@@o@kITRA;@Q"+@kHT@o/@@7@Q7`o4`@9*c knTW@BBH@4@c_kTqT @y5x&*F@ER R@4RG@ @q@zT`@9qT8E@9 5R*ArA TRS$@r@9 @EAAc8@TRB(B D9B|@ciTe@9@e8D9TR{(AA_BtC@@@y# q`T! @DFxaA R!-"AA Rs*m@ =5@9r5@yRkT;@km(T#@`R8E@9 5RJ*r@@`TR#@9@rXEb8@1T R( D9B|@iT@9@f8D93TR( a@9?0qT@9R?qaT@9?qT?qT @9!ST@9A@!(? _T@@R5_qQ4 Ҝ@`@ 7ARB@k1TJG@k T9@CB?q@'LT4w& [@A95klT^@@ Z?ST!C9 ha8$9Y7 @|| h`xI4@ 2qS9o+yHTR R * * *E  * ! @`~|"T@ h`x45@9!"4+[@y?qAzBTy:Ry4@U)TqT TqT#$TqT"qTCRG@@Ne[$@9'/($Y'Z/[iT@TڢR!Rr!!|!b@{A(T^!@!x`xG@ @9_ q T8E@9`5R=)ArYZ@@TR"rAY#EZeb8@@@T`R( D9B|@iT@9`@ee8D9TR+#&+Y#Z[_BtC@@@y# qT! @DFxaA R!-'/ !DR@Y'Z/[Kb@9E b8@5@@!{)T@z@RRR'/$Y'Z/[@y@ Rr @! ?qT@^@@y ՜e R94 s@y * +DT @kT!@~}"B@_k aT*   y&4@y@4@RR |!`h`x5@yR7'@B| qT(TqAT@9E`a8@ 5 @!+[CRE@955 R`@`4`_8qT`  @9!?q`T*9wR%cAkT`^#@74+@@o@kiTR A;@Q"+@kHT@o/@@'@&RlFD@a@E9$@9! @A @ @CD& #@gG@@@@˭FCDC @@ @B@@ @  @-@@ @ &@a&$@kLT R &@|+ CF9aG-Dh 8MD@R`9 g @!@@ @ kFPC!CEBvCa)-%Ea@Fa(@&R@k @@m@`@9@Ta@9 RR?ja=TDAR@hF؉@ @‰(@`8vC@`C|(y$ @`@m `P' @' `@9 `y@"A@@7!@ `@ ` @`@?qMT@" @@`@@@cA@a@hF&@f+{69R*^5_8 "9Bs @z`@9 @z`@ &RRsAT_8LGxaZ@LGxy JfA9jA9rT@A?k6T@ 2 &a@@"L@!|ShT `@@L@|SHT+@@o/@@Z@BB3@k!@G@kT@ jA9@!575@94 @y;;+@+@q{3@9Ga8 %R+@\ 4C@K@@CkTqR @zTG#@ 4@[uog@9@4m/@@o@kT+@@o@k Tt @yq8E@94LG7(@y@@?TjA9@453 R@@ְ R+6Kq͛T뉛TGɚT@9qAa8!Ta@9E`a8@`5 @!Ҳ#+h?Y#Z+[@T@9BGEc8Ё!ɣT!Q9@jA9 "5oD+@@o@kITRA;@Q"+@kHT@o/@@95W@|S!`7QJ@9@qVTBB*LGB@xb$k@T s@~qsAhaxCYs@?sAxyx C kk!T`W@@|@A?k"T@ 1$ R@5G@ AAAAnA9 5 Rn9*RA !3[@L@?[@AaH@|(3!R@B@7T@"?qT$x#dQPqc`AzD R㇟?q$Dzc4 DE R?qW@T ?qT#x"dQBPq@Az⇟?q$EzB4"<_XqT @9?qT"<a8?q T_qT_PqT@y@9+DAR} @`"^7*R3h`q7?jAT/%/Z@A@ a@ @[@AaK@3|+aRB@7AfA9cjA9r@TyU9 U7]aH@Ar3|+RB@7#0 iL)JDK RR( iL)JD  @9R?hq7Tq!TxqAT#@`4RC@W;@| 4jA9ѹ@/5j4R#@B;@@#@Ao@kiT@o#@@`R/@gH@"4@c_kTa8_qIT@yI4 K@9I@94@@9C%@*   R94R@@ @H@9?qTL@9A7@!@ ՠ@b76!$E!@!8@67 "@# @` "@ @ L@9x L9 H@*C@9R*`5$B@R`r@9E@@b8@T4R!(! D9!|@iT@9@e8BBD9b_TaRs@T RRY$E@R(r@9E@@b8@T4R!(! D9!|@iT@9@e8BBD9b_TaRs4 @!B@!@c{0@9@(qATc @!!y\@xa@?T@TZ@`vC@`5HA@@BRi`@7vCsMB$E@G@ PCBF!C@B@#@4˶ A9!T@9A9A9b kT?qTT? qRT?qRT @9"@*@9B *@9!*L)! _kT!|4@!c8@T@t?qT@"A9A94IT@9!?qTATR@9AS%REAT@9qTq T@9qTqRT @9|q+!R.74(RBG @IxaLr@$ˀ@9E`8"@TRa(! BD9!|@ ?iT@9e@c8BBD9_TRw!T@ f@ kTqJs@~qsAhaxCs@sA(@y C5@!? @JTRssA98E@9@4 LG(@@E@y5 ! !@?RssA @ @@?@T!R@q@w5kN[@RA@[T@RE2`T RRЁ_87 9Es @Dz`@9 @@z`@ &R4RsAy74LG7(@ R@DR@9"dR@( D9|@BiTD@9a@dd8!!D9?TR+# +Y#Z[G@@@9@F4? q FT8E@9E5R"ArYZ@@CT'/,_BtCY@'Z@@y/[# q T! @DFxaA R!-'/@9Y'Z/[@A4AR'/ <Y'Z/[^@9Z! @LAR# @"vCsNB$E@G@ N@PCqBF!C@B@#T aRS2@9@(qATc @d8@RAxd8e0@DG@dDkDO@dLDS@dPDW@ldTK/3C!B @G @ @h-T@ T@9?qT* 8E9!@9`4LGa@ @6@B8@b6",BT _qT Rr!  R?kT@"@R3" A@@k@Rf @+,@r!R`?R@r @?jaTbR! ?@qTRBR" )s6@sA(@yCӹa!R`( @!D9d|@B_bTC@9m@c8!!D9?TR+#+Y#Z[^dR@( D9|@dB_TL@9a@ll8! !D9}?T5bU!@`C| T` @3rTP7@7@X6`@!R3 @6@@ @ 6Rd3;?q@?4ks!@?qsAhax C3Y@9(q(@` @ARR @"4r! ?q`TBRҐq3!s@sA(@yC@9?qaT @9 JR(W D9~@ ՄiT@9@e8BBD9_TRRF@LGb JA?mT@9a?qTcw*8E@94LGWa@y;LGaJ!k!TxARR!Y@`@  Ra(! BD9!|@ ?iT@9e@c8BBD9B_TR?G_8?(qATA@9?qTQG Rs[sA^R( D9B|@ եiT@9@f8D9@TR_BtC@@@y# qzT! @DFxaA R!-a@93R(W D9~@T@9@f8BBD9B_TL d4R!(! D9!|@iT@9@e8BBD9_TaRs U4R!(! D9!|@ iT@9@e8BBD9_TaRssA@ f7 Y!E*@Ix`Rr@@9@E @`b8@aVTV4dR!(! D9!|@ ?iT@9b@dd8BBD9_T!R@@fs&z`%R &@H4R!(! D9!|@ iT@9@e8BBD9_TaRsҽsA@ f !B"*@Ix`R_r@@9@E @`b8@CTB4dR!(! D9!|@ ?iT@9QT>ҷLT&RCc@9(qPTc @9q!PT@ӃҪ5W`*)c@9cxcpqC5` @95x$qUT0q KT`*`@90qHTR5WӃ* `@9xq@LT$qT0qAT@`~c@9q}Te @9xqc`Dz|T?T_q BhIT`@9xqET$qST0qTRc@xRkDTc@9qRT,Rb*c!RD2969:9O9C93y@ RO@` @9qTR` @95x$qT0qT`*w`*`@90q&TRҰ57`*c@90qa?Tc @9q?T&!c@9dxLq!TPqTq=Tc @9qA=T`@90q@TRҏ`@9xq`5T$q4T0q`TR҂c@9cxcq.T$q@.T0qa9T@`5WӃ*sq%T(q@T8qoT<qmTTqXTqTc@9q STqTb @9_qQT_q@PT_qOT_qMT_qLT_q@KT_qJT_qHT_qGT_q@FT_qTb@9_8qaTb@9_qT@`@90q!TR<`@90q@TR5` @90q@#TR.\qaTc@90qa/Tc @9(q/TӃҡa @9``!x!?$q`T?0q`ҁ`a@9 xLq TPqT?qTR  `҇`*57`*5҃*c@90q)Tc @9 qa)T҃tc@9dxLq~TPq}Tq(Tc @9q'Tfc@90q'Tc @90q&T>^`@90qTRa@9 xLq`TPq`yT?q TR`Hw`*`@90qTR<`@90q`TRҸ`@90q@vTRұc@90q Tc @90qT>&5W`*` @9q TRҞ5&*` @9q@TRғ5W`*5WӃ*\qATc@90qTc @9(qaTӃ` @9q nTRx5҃*t `dq`Tc@90qTc @9(qT Ӄ` @9 qkTRa`@9q@lTRZc@90q!Tc @9qT&`@90q`TRK` @9q`TRDb@9_qTc @9bxB_Lq@T_PqTqaTb@9_qTҰ` @9(q aTR,`@90qTR%5ҷ`*!@O@c @9 q T҃Җ5>*` @9q TR5*  `҅a @9``!x!?$qoT?0q`ҁ`z`@90qYTR`@90q`BTR Rc@90qaTc @9qT҃a57`*` @95x$qTT0q`ST`*'awT &R` @90qTR` @9qTR`*5`*? Tc@9exqTe@ykAT`@9xLqTPqTRҦ`!q T(qT8qT<q@TTqTqETb@9_qT_q^Tb @9_q@T_qT_qT_qT_qT_qT_qT_q@T_qT_q` T_q[Tb@9_8qa[Tb@9_q[T@5*pw`*mc@9q+Tc @9c*T ` @9(qTR^` @9 q TRW57Ӄ*S5҃*O57`*K -aOc@y@93yBk9*"87!R2969:99C9hcc8Ec@9C5w%4>65RU{5R Rd`@9q@4Tq@2Tq2TR`@9q`*Tq@)Tq"Tq`!TqTR`@9q Tq T$q@T8q TR5R R` @90q` T4q@TR` @98qTR` @94qT8qTR`@9q`TR`@9qTR`@9qTR5җ*5w*`@98qT5*` @90qT4qTRҺ`@9qTRҳ`@9 q TRҬ5*`@90q T4q TRҟ` @90qTRҘ`@95q`T*`@9LqTRҊ*5җ*`@9qTR|`@9 qTLq TRs5*o`@90qT4qT5*f`@90q`T4q@TR]`@95qT*V`@95qTqT*M*J*GW*D`@9qTR=`@9qTq TR45*05r*,5W*(`@9qTR!`@9qTq TR5*5v*5W* ` @94qT8qTR` @94q` T8q@ TR`@9qTR`@9q TR5w*`@98qT5*` @9(q TR`@9q`TRx&` @98qTR` @98qTR`@9qTRҼ`@9q TRҵ5җ*5җ*`@9qTRҦ`@9q TRҟ5w*`@98qT5*` @9TqTRҍ` @9TqTR҆` @9Xq`TR5Ӄ*{`@95q`T*t`@9qTRm*j5b*f`@9q@TqTq@TqTRY`@9qTRR5wb*N5ҷb*J5җb*F5b*B5*>`*;w`*8 `ҳ`@95q`T*/` @9(q TR(5Ӄ*$5W`* *` @9x8q TR57Ӄ*57)* 5&*5҃*` @9q@TRa @9 xLqTPq@T?q TR5&*`@9qTR5ҷ`*5*5*c@90qTc @9(qT ӃNc@90qTc @9(qTӃFc@90qTc @9 qT҃>c@9dxLq TPqTqATc @9qT0b @9_TqATb@9_qTb(b @9_TqATb@9_qT_qT_qT_q!T`bb@9_q T_q@ T_qT_qT_qTb @9_4q!Tb@9_qTb@9_q!Tc @9bxB_LqT_PqTqTb@9_qTc@90qTc @9(qT Ӄ`b @9_4q@T_8qATb@9_qT`b @9_4qT_8qTb@9_qT`b@9_qTb@9_qaTb @9_8qTb@9_qaTb @9_8qTb@9_qaTҼb @9_XqTb@9_qaTఀҴb@9_qT_q`T_$qT_8qTb @9_8qTb@9_qATң`ҡҟb @9_4q@T_8qTb@9_qT`ҕb @9_0qT_4qTb@9_qATҋb @9_0qTb@9_LqAT҃b@9_qT~b@9_LqTyb@9_qaTb @9BxB_8qT )obmbkbi`@9q`/TqTR`@9qZTqYTq@`TR` @9qTqTqTqTqTqTq Tq Tq`Tq@Tq TRҽ5W`*c@90qTc @9(qTӃ.`@98q`TRҪ`@98q`TRң`@98q`TRҜ`@9q`TRҕ`@9qTRҎ`@9qTR҇5W*5W*5W*{`@98qTRt`@98qTRm`@9qTRf`@9q TR_5*[5*W`@98qTRP`@98qTRI`@9qTRB`@9q TR;5ҷ*75җ*3`@98qTR,`@98qTR%`@9qTR`@9q TR5w*5W*`@98qTR`@98qTR`@9qTR`@9q TR57*5*`@90q@TRa@9 xLq`TPqT?qTR` @9 qTR` @9q TR5҃*5*5ҷ`*5*` @9 qTRҲ` @90q TRҫ5҃*5>*`@9q`@Tq Tq@TRҘ`@9q Tq@ T$q:T8qTRҋ` @9Tq:TR҄` @98qLTR}`@9qCTRv` @9Tq4TRo` @9q Tq`TqT q Tq@TqTqTq@Tq Tq` TqTq`TqTqTq TqTRJ` @90q6T4qTRA` @90q`6TR:`@9qTR3`@98q ?TR,`@90qTR%`@98q 7TR`ҙ`@98qTR`@98qTR`@9qTR`@9q TR5w*5W*`@98qTR`@98qTR`@9qTR`@9q TR57*5*`@98qTR`@98qTR`@9qTRҿ`@9q TRҸ5ҷ*5җ*`@98q TRҩ5*`@9qTRҞ`@98q@TRҗ`@98q TRҐ`@98q@TR҉`@98q TR҂`@98qTR{`@98q@ TRt`@98qTRm` @9(q@ TRf5*b`@9qTR[`@9q TRT5w*P5W*L`@9qTRE`@9q TR>57*:5*6`@9qTR/`@9q TR(5ҷ*$5җ* `@9q TR57Ӄ*5*` @9TqTR ` @9Xq@TR`@9q@TqTq@TqTR`@9qTR5wb*5b*5*5ҷb*5җb*` @9Tq@TR`@9qTq Tq`TqTR`@9qTR5wb*` @94qT8qTRҳ`@9q`TRҬ`@9qTRҥ`@9q TRҞ` @9XqTRҗ5ҷb*`@9LqTRҌ`@9Lq TR҅5*5җ*}`@9q TRv5b*r5*n5҃*j`@9q TRc` @9x8qTRZ` @9xLq`TPqTRO5*K57)*G5ҷ`*C5*?`@90qTR8`@9qTR1` @9(q TR*5*&5Ӄ*"`@9q TR5w*5җ*5b*5b* 5җb*`@9qTR5*`@9qTqT$qT8qTR`@9qTqTq Tq@ TqTR` @98qTR` @94q`T8q@TR` @94qTR`@9qTR`@9q TRһ5җ*5*`@9qTRҬ`@9q TRҥ5w*5*` @94qT8qTRҔ` @94q T8qTRҋ`@9qTR҄`@9q TR}5w*y5*u` @98qTRn` @98qTRg`@9qTR``@9q TRY5җ*U5җ*Q`@9qTRJ`@9q TRC5w*?5*;` @90qjT4qTR2` @90qjTR+`@9qTR$b@9_8qaPTb@9_qPT@ҙb@9_8qTb@9_q!T@ґb@9_8qTb@9_q!T@҉b@9_8qTb@9_q!Tҁb@9_8qTb@9_q!Tyb@9_8qTb@9_q!Tqb@9_8qTb@9_q!Tib@9_8qTb@9_q!T`ab@9_8qTb@9_q!T@Yb@9_8qTb@9_q!T Qb@9_8qTb@9_q!TIb @9_q@T_qT_qT_ qT_q@T_qT_qT_qT_q@T_q T_q T_q T_q@ T_qT_q@T_qTb@9_8qaTb@9_qT b@9_q`T_q`T_qTb @9_TqTb@9_q!Tbb@9_8qTb@9_q!T b @9_TqTb@9_qT_q T_qT_qaT`bb @9_XqTb@9_qaTఀbbbb@9_8qTb@9_qTb@9_8qTb@9_qTb@9_8qTb@9_qT`b@9_8qTb@9_qT@b@9_8qTb@9_qT b@9_8qTb@9_qTҽb@9_8qTb@9_qTҵb@9_8qTb@9_qTҭb@9_8qTb@9_qTҥb@9_8qTb@9_qTҝb@9_8qTb@9_qT`ҕb@9_8qTb@9_qT@ҍb@9_8qTb@9_qT ҅b@9_8qTb@9_qT}b@9_qT_qT_$qT_8qATb @9_8qTb@9_qTlb@9_q T_q T_qT_q`T_q}Tb @9_0q@T_4qA}Tb@9_q|TWb @9_4qT_8q|Tb@9_q{T`Mb@9_ q{Tb@9_0qT_4qazTb@9_qzT@b@9_qayT`@98q@T8b@9_q`T_q!xTr1b@9_q+@)b @9_4q@T_8qAvTb@9_quT`b @9_4qT_8quTb@9_qtT`b@9_qtT`@98q`T b@9_qsT`@98q Tb@9_qb@9_qb @9_8qpTb@9_q!pTb @9_8qoTb@9_q!oTb @9_0qT_4qAnTb@9_qmTb @9_0qAmTb@9_LqlTb@9_ qT_LqlT`@90q T4q Tb@9_qjTb @9BxB_8q!jT )5&*@b@9_q`@9qTqb@9_0q@T_4qgTb@9_qfTҥ@ңb@9_qT_qeTvҜ`@90q@$TR`@9qTqTqTq Tq TR 5ҷ`*`Ҁ~`*@y`@9qTR`@9qTR` @9x8q@TRa @9 xLq"TPq@T?q TR57)*`@9q !TR5ҷ`*` @9qTR` @90q TRһ5*5>*5*` @94q`TRҨ` @94q T8qTRҟ` @98qTRҘ` @98qTRґ`@9qTRҊ`@9q TR҃5җ*5җ*{` @94qT8qTRr`@9q TRk`@9qTRd`@9qTR]`@9qTRV`@9qTRO5*K5w*G5*C5w*?5*;`@9qTR4`@90q@TR-a @9 xLq`TPqT?qTR ` @9(qTR`@9q TR57Ӄ*5* 5ҷ`*5*`@9qTR` @9(qTR` @9x8q TR5Ӄ*57)*`@9LqTR`@9Lq TR5*5җ*5*5*` @9qTRҾ5ҷ`*5WӃ*5*5҃*dqaTc@90qaTc @9(qT Ӄ!b@9_qaTb @9BxB_8qT )b@9_q!Tb @9BxB_Lq@IT_PqAT` ` 5>*`@9qTq TR}5*y` @9q@Tq?Tq;Tq:Tq6Tq5Tq1Tq0Tq,Tq+Tq@TR^` @9q'Tq%Tq"T q TqTqTqTqTqTqTqTq Tq TqTqTqTR9`@98q`TR2`@98q`TR+`@98q`TR$`@9q`TR`@9qTR`@9qTR5W* 5*5*`@98qTR`@98qTR`@9qTR`@9q TR5ҷ*5җ*`@98qTR`@98qTR`@9qTR`@9q TR5w*5W*`@98qTRҴ`@98qTRҭ`@9qTRҦ`@9q TRҟ57*5*`@98qTRҐ`@98qTR҉`@9qTR҂`@9q TR{5*w5*s`@98qTRl`@98qTRe`@9qTR^`@9q TRW5ҷ*S5җ*O`@98qTRH`@98qTRA`@9qTR:`@9q TR35w*/5W*+`@98qTR$`@98qTR`@9qTR`@9q TR57* 5*`@98qTR`@98qTR`@9qTR`@9q TR5W*5W*`@98qTR`@98qTR`@9qTR`@9q TR5*5*`@98qTRҸ`@98qTRұ`@9qTRҪ`@9q TRң5ҷ*5җ*`@98qTRҔ`@98qTRҍ`@9qTR҆`@9q TR5w*{5W*w`@98qTRp`@98qTRi`@9qTRb`@9q TR[57*W5*S5ҷ`*O5*Kb@9_8qTb@9_qaT Ҽb@9_8qTb@9_qaTҴb @9_q@T_qT_qT_ qT_q@T_qT_qT_qT_q@T_q T_q T_q T_q@ T_qT_q@T_qTb@9_8qTb@9_qATҋb@9_q`T_q`T_q!Tb @9_TqTb@9_qaTb|b@9_8qTb@9_qaTtb @9_TqTb@9_qT_q T_qT_qT`bfb @9_XqTb@9_qTఀ^b\bZbXb@9_8qATb@9_qTPb@9_8qATb@9_qTHb@9_8qATb@9_qT`@b@9_8qATb@9_qT@8b@9_8qATb@9_qT 0b@9_8qATb@9_qT(b@9_8qATb@9_qT b@9_8qATb@9_qTb@9_8qATb@9_q~Tb@9_8qA~Tb@9_q}Tb@9_8qA}Tb@9_q|T`b@9_8qA|Tb@9_q{T@b@9_8qA{Tb@9_qzT b@9_8qAzTb@9_qyTb@9_q T_qT_$qT_8qxTb @9_8q!xTb@9_qwTb@9_q T_q T_q`T_qT_q!vTb @9_4quTb@9_qauTb @9_4q T_8qtTb@9_q!tT`Һb @9_4q`T_8qT_q@ Bi[Tb@9_8qArTb@9_qqTҨb@9_8qAqTb@9_qpTҠb @9_0qT_4qpTb@9_qoTҖb @9_0qoTb@9_LqnTҎb@9_LqnT҉b@9_qATb @9BxB_8qT )b@9_qTc @9bxB_LqT_PqTqTb@9_qTnb @9_8qTb@9_qTfb @9_8qTb@9_qT^b @9_4qT_8qTb@9_qAT`Tb@9_qfTOb@9_qTJ`HFb@9_8qeTb@9_qdT>b@9_8qdTb@9_qcT6b@9_8qcTb@9_qbT@.5*b@9_8qaTb@9_q!aT`"b@9_8q`Tb@9_q!`T@b@9_qaT`b@9_qT{S@ @Ka@`@D8@b@L!2b@Pb@Tb @8H`"@@a&@ b"@aBA9@L@9!x*@L9A`@!PCb@"@?qT!Q@BABA!G`GD# GKSA{¨_{E {k@_ TSB[uc" 4YsWA@9X GGa8E[{T ՀR?FBk|8Erf@db8@ T `R!(! D9!|@BT@9@A`8ccD9CTRiJAA ! x`54Q?qTz@ GA@9a8[{TSA[BcCsE`RkD{ƨ_VW ֺG A@9@Az`54Q?qTz@@`TSA[BcCA@zAA ! x`55SA[BcCkDsE{ƨ_@cR!(! cD9!|@BT@9@A`8ccD9TRJSA[BcCkD{ƨ_#@T{BSB5[Uv B" aa_8@7Az`Q?qTc@`aџTtR[BSA{Ũ_c W[VEk֖B{ RE"@9rE@b8@!TR!(! D9!|@cITd@9@d8BBD9_bTRI @a ! x x`Q?q)TSA[BcCkD{Ũ_A@R!(! D9!|@cIT`@9@`8BBD9_bTR{ISA[B{Ũ_րR_cCkDRcC{SREBr@9aBED`8@aTCR( cD9|@ ՄCIT@9@Ee8ccD9cTSA{¨R@I@SA{¨_փCR( cD9|@ ՄCIT@9@Ee8ccD9#TSA{¨RI {S[cw@@@[qTQ?qWq5@R`R65`@HTw5UV ֢G b_8@9@z`QqT`@џTxRt*SA[BcC{Ũ_`@ Rk VWֺGE u RyD@9rE&@b8@TCR!(! D9!|@c?ITd@9@d8BBD9_bTRH ?A !y8x`QqUzTkD`Rt65kA@R!(! D9!|@c?IT`@9@`8BBD9_TRqHkDxR*SA[BcC{Ũ_kDz{SS4 ccB["k*+ob@G" U@ *!6hy8FqiT!RJv8a * q$qaT RsB*G@a@A SA[BcCkD+@{ɨ_4R*Lq TqZq*#Rf$q@Tq*HqT6q*#RRHqT>q*#RH0qIz`T&q*0qIzT.q*R2Qqᇟ*3*3@B {ST[cBks3g$@9@@G@9@*X3@ "A iT@9 5"aC` Aha8 $7y`SzTr@T76@Dhs8C@h`8$ 67*RR5T@1T 06OqT$@z@ Tf"RCh>@A!E!@95>@`6C@A!8E!@9!5@E@94~$@z T TTF@9AJNBCBE@a8@ 4CRs*s `D9s~@!_iT#@9@d@Cc8D9TA#RCGC@?T@9T{SQ{qT (67*iTW86@9LqTRBr`T R! .LA 0qT@8E@9 5 @E@9 5BG@@Aʡ SA[BcCkDsE3@{ɨ_*`@Xn q`T@8E@95RIr`T@tC@@@y" _qT@! @DFxa !-RAw/7 ՠ@1!Tq%>7R@96*@4` R "jTA9ZZZ@#AUA? kT-!!C Rᗟ?j T#@9#x$qT?qT?$qT!&=6:V@9AJAR C&=6-A#RR+D#@CT{BS"5`hT@aсDa_8@= !@7 x`SA{è_[(# [B`RSA{è_`R_AR!D3@BC@9rcEeb8@TdR!(! D9!|@ bIT@9@dd8BBD9_TRGFA@= !@7 x`SA[B{è_`R[BdR%( D9|@bIT@9@dd8BBD9_"TRF{*% [V `ƂBS@'Ha8q@T)T qTqT# *[q`TqqւB'@@AʡSA[B{Ũ_ R#*Cq`T@q7R#*4,q@TqZq@@#@CT{BS"5`hT@aсEa_8@q  5?3qs?q5?7qT? q#!T f**q@T?;q$AzTcCsE3@f*#* QqTq2QAzT cC3@5?qTsE.qNzAzT@42QzqCz3@cC#f**4q@T Rf*CK0q T Q?qGzT*K@GQqTR3@cCf*G@CK<q q@4sE3@ncs3?!*9E<q Tx? qLz`T Q?qGz T8qAzT_RbT; 4{B<A@9Ga8Z TR@!B@9r#EEh@ab8 @T hR(! D9!|@ ՄiT@9h@c8BBD9_TRED f;A !  x`Q?qTA@`Ra(! D9!|@ ciT`@9"@ `8BBD9B_TRD\ #{BA@9`@V;{`Q?qTZTR q T8 {S3@9386[v@ iT 8E@95REr T.q T T2q T>qTqRAT@9?qT @9 *qTqTq TqRTSA[B@{Ĩ_**SA{ĨRqRT@9?qT?qT @9!R!G4th?#rcEbs8@@ T `R(S D9`~@bIT@9@ee8BBD9_B TRҖCJqTqaT@9q TqTRR8?#rcEbs8@@A T`R(S D9v~@B`ITD@9@dd8D9 TRfC tC@@@y" _qT ! @DFxa R!-z=.q@9aT`@:@ SA[B@{Ĩ_!@9*[B!!*SA{Ĩ`R(S D9v~@ B`ITD@9@dd8D9TRC`R(S D9`~@bIT@9@ee8BBD9_TRC@9qTqRT @9|q"@9hqT @9q@9R?hqT@9?qaTARW? @9|B_$q?qᇟ* @9 Q(q?q @9"Q `B_(qAz?q{[5c*7 СBS"ks "@73*AA3hx82qHT.q"T"q Tq T q TqTqB*7@@A SA[BcCkDsE{Ǩ_*qGz@Tx?qThQ?qIzTRBqT>qbT*Hq`T:qsQsq TQ?xr TqVzT*qVz@Ttq3@I T 53 T @9E@9a ! x`tqa TR3Rs*yq@T3*!*oq`Tq!RT"8c9? q`TqT*" Jz8q!R*Sq`Tx?q ThQ?qIz Tx?q*AqVz@Ttq@T2qf*qc @9Ga83T!R{!E8@=#jw8rcEfb8@aTdR!(! D9!|@ iT@9b@dd8BBD9_TRA  9a ! x`w*Tx?q RA@dR!(! D9!|@ iT@9b@dd8BBD9B_TRҗA< {S4[Bcks @wҁhA9Rk@T*4@9  Q4q)T#*3 cE/bbBB$ X`xd ֧|@`gy@9??qiT 8E@95RaCr`T6ЀR=rֆE?@y8aˀ@aTRB(Y D99@BiTD@9@d8D9@TR.A?9 tC@@@y" _qT ! @DFxa R!-B;  G@`= jA9fA9*r TC9`8B~T@{K H@h@9@9}KB*w@@ASA[BcCkDsE{Ϩ_H@h"bT d@9@9"RLGRB B2!xd_!jT@9axa_!jrTATK@{K G@@ 8E@9`5@9? qT! ! !(Rz2 @9x`k5@{K T`@9#{KCk`8$7`@9Ck`8$v6sT{K_qST@R`@9"L@!|S?T`@9T{s_kST_qSIT@9Rd@9*E7A|S@K!G(a!R? BDzTy`@9{_k`8sSIT@9c@9$ |Sb@ KB%(_ `AzT$RrT ՛5@{KY_qMT@9`뉰T7#RG$Rpr@T`@9{_k`8sT@9`T<`4_qS)Ta@97@9RG?kT,`@9{_k`8sSTa@9@9?k!T$RCrT7R_q@9ןᗟ3q `lTPT+q@qT/qwTR469NG?8G`@9Y87NG `,KkTa@9{ G_ka8sSiTT#RRn=R_qSITa@97@9RG?kT`@9{_k`8sS Ta@9@9?kT$RrTo_qRSHTa@9 @( =T?4q FT?qKT?qT`@9qT` @9T`{s_kSTTa:Tb@9A@!(?9T_4qBT_qTa@9?qTA_qSTa@9?(q@T RGa@9?(qTa8{sD[z T_qS Ta@9 @9R@ GkT|a@9" _kTa8{_ksSTqR_qSixT6RG`@9{_k`8sSIT@9P kT"R vT e@9@9LGRxe$kTK @9x`$k?T!TK?7R6R G@o)qT@9s <Ta@9* k!T{K)_qRST$"%RLGBG@h`8{_ksS)T`@9 ?7@9x` !2?#jaTRR_qR`ShTa@9 (Q?qBz)&T?4qaT`@9(q{s_k`SɾT`TTb@9A(Q_q! CzITR G@i _qן8E7 @9;5@9 q@fT47RG`@9{_k`8sST$RrATg _qSRGTa@9{a8sD[zLTK lT d@9@9"RLGRB B2!xd_!jT@9axa_!j5TATKR=@9@9SK_qSItT6w@9@9RنEkaTR?&:r†E?@@w8@TCBR`( BD9|@ciTd@9@d8BBD9_TR?S>?@ @"L@!|S(T a@9{G_ka8sSTw@9@9kTG_qRSTB_qS _T@R`@9"L@!|ST6`@9HT{s_kST,_qSIhT6w@9@9RنEk(TR?9r†E?@@w8@ TC BR`( BD9|@ciTd@9@d8BBD9_TR?=?@ @"L@!|ST a@9{G_ka8sSITw@9@9kTAR=@DKR &ATa@9!(? Tu @s@BR`( BD9|@ciTd@9"@$d8BBD9_TR?=?@BR`( BD9|@cr5R(R@a4R9@4R9(R @9q &T<@R5 5@9?@zTaNGR `_ j!TbNGR Հ@8@x`? jT 5@9$+TaRRs@)0@9!$Q?q(T@@(@(Y @1syto?@'T?~@?'T|@?@5T@@B9qT554@Rfx@@4R9ka R x&RRRRq(1T`NGR@9xb? j@T@@ @@7p7@9$i"T@@z@ @94aNGqR ` BzTW oR@qW@9<(-TR?(Ra  8a? Tc_8RdNGxcc kT"_8xb"jT?8?ATcNGR@9cac k`T@9a"j`T4?q`T lA@9#5@R9@4@ R9qT*{@@R9sNGR@9b`B _kT Հ@8a`_!jTR46nq9@ ! :s[ }L[@!lA @94 !8[cs[@c@@ 9?@9qT @9 @R!`8v@7{R@@9 @94aNGqR ` BzAT{R@ q@9T R:)}<  vARJ c :B ) R!`)RnRrs@4@@ @ Rr!  Rr?k T@RR @@5*RR|:R@uR@Ri@R945R.{r@T@{@T45R*{r@!T5q@R@9u5R>@`4R9(AR>wRR@ҁ ! : or@9Lo@u!R@@9q @zaT!lA @9`4 !8_r@_@:t@**RR|@7*1}R@T_g|@_@g@@R9XRX@ 9!B9f|O R@:`|vRRZR3{@#45{* **B|@9p{*B|@u }@;C|{SS@[u@DB9q@ TqTB@_s5dx5 @t1 @ 46 @!R RB@m@ R!@<^x[B*SA{Ĩ_֓4uR!R*SA{Ĩ_֟ 3R_*SA[B{Ĩ_ր @q @t @5*SA[B{Ĩ_%x5@@t1  _w41!G `Trb!BA_qT!*y 2?qA !R mR R! = x*SA[B{Ĩ_ր@R@p@@^tR!A  {ST[Rcks@Qv`@R!Lv`@RAGv`@RaBv`@R=v`@R8v@@@n*`@ R@r @ Rr! ?k\@aT@@vTR*{{ @ @!4!L ?qT@@n? AT8 46@@R**%}6Ot@ RqAz T@**c@z 7 @**!@z7*SA[BcCkDsE{Ǩ_ARzARuvT @vc@7 @pc@**lt@ RqAzT@@T 4;lR*SA[BcCkDsE{Ǩ_@*R!@z4t@ RqAzT5@@3s@z3@ ` z@@l5 @ RqAz`T@@T5R*z7@@ @!@B@zF >za@kr T@@m5a@`rT@!@k5~a@Ur@T@!@m5sR*kz`7@@"@3z3@  >z @ RqAzTa@4r T@@k@ RqAzAT@@k"@{SR[7u@ @B4BL _qT@@ @TA@qaTA@5RRSA[B{Ĩ_ARyR`@u@ @!4!L ?q!T@@m T@vqRSA[B{Ĩ_R_ARy`@!Rt@3@r@ u@3mRy`7@(s@ RqAz!TIk@{S3 @"_ @qT!!$Q?qT@a4@4[uB Ru@*[ Rdm@4@@ @$@R9*[B*SA{è_֠A@4rR!R*SA{è_4xRr!RR*y {C[Sc8EsB4@@` @@S@ARn`aRuA@`FS@@ B9_ q;TA@@!@!@?@a9T` @"B@!BC?AkR7lA'm @ RrrC7 @@`` @@mgaRu@9@35` @@0fBRr` @@ @a17" _q T!  R?k TBRu{E*C@@a 8(4d @a %R! "r'5R5tr!(T` @@ @6x|@ES@@6b@@B9662@9A6`@B96B@@!@=R"R` 4nqkE'Gm!B@!@AC{ASB[CcDsF_@@@@kE*C@@ak@cRRWlrTlA@9`55k@`)TB@  @q$T@C B@@3B@ D@!!a_`B,@@2bB@C,@EB@@_@@@@ @@_ @@x2@@94 !*Owv@4O@ARRw[O@0fpfARm5r*Cfk@!@lrq_?uO` @A@*@ @" _qT!  R?k"T@R[0n #[@O@MrO@ CR!lRqo 'O@@)i* &io@7* ! i @f !@RRRbRKjrTO@!qfARlAqBxaqk|@guqXv_uqA@p@ @@%O@BRqAcRc@@ R@@vL@9!2L9A @?q#T!QA A@@@@t4B6` @kE@'Gm@C@k@Rkq`4` @kE@'Gm@q@*CcR@r`7@@  @qT R! Zq@*OwO@ R!`OqRuf@BR@^q` @@ @Ϸ6 ht` @@ @r` @@kc*CR ! @)tRhRh4Rwu@@kOEx 9@@!FB"@C@cCk*C@@9qATR"R` 4@mpO@@?qiTO@!Q*C_@@O@wO@R !sRhA @?qIT!QA C@?AkE'Gm`BRҕyR[m O@ !6q`R4"RmW@*R%pB@!@0i@@kT@@kT X)B@v7 !mRmi`Rnpjuoa @?qiT!Qa kE'GmfgqO*C_g@[@[fbCRwkfA@CRk@kARu `@9O@OK@4^O@qwRt@@qqC@ qkE'Gmk'mC.q {S0@9!$Q?qhT@!3@[ca@!B9?qTvCA @96@TRk` @j4` @yn,To@` @zp*1AT` @j`4` @l4` @fnT` @x[BcC RSA{Ĩ_ R_/x` @`wR[BcCR[BcC0@9!$Q?q(T@!@!@ai{uo!R{_{0@9c$Qq)Tuo"RR*{_@c@c@cj *|S{ 0@9c$QqT@cc@#c@S*Er7q` @T*SA{¨xh_ubo!R{¨_\oRSA Հ {[RNGSc@9A4?qTa`!j@TAR_ua @95RSA[BcC{Ĩ_`@9q@TqAT` @9q`TqT`@9qAT`@9qTa@9?q$@zTa jTs`@9qT `a@9` @9R_a@9?q$@zTsѺa j`T`{S[aB"@'  @" _qT",BT _qT Rr!  R?k T@ @@qr4@ 6ER&rpr@Tl@urqsB'@a@Aa SA[B{Ũ_@@7!`g@@6$E@8@7%R9#.p@9 5#@DsuRBRwa!,YgUj@ RtC@@@y" _qT! @DFxaa R! 0q@ BARqo {[*vCS@aB"@'@9 6@ dE@TXE@ 2@9!$Q?qiT!R҄dFcLEyto!\B46t9n"R*W@9R q@TC@@@ 7? @q`Tc`X6 @b @A?(qHTB7B_ @qT,!T ?q T Rr  Rk T2w#@ZEcLE@nvC@!R!dF@#yU@@@y#@# qT! @GxaTR tRBFo*^B7cC*sB'@a@AASA[B{Ũ_`6e@c @dF!RcLE7@҅ytn @p@7*RBFlm*\BcC@ @@#!$Q?qhTdE@! T Ք^B@!6m!R@@@gce @a @  @qT!!$Q?q T@_6a0@9?<qAT!RXEҥdF҄LE@yFntmAR R B ) !`)\e^B RurTu_8(qT RB!!Em Ք^BcC@q\B@m!R҄dFcLEyn!RoKXE@dF!RcLE҅ytncCcC+m"R \B*cCDcCcFn {Sc*vCaB@"@/@9 6@ dE@TdF@y,qT^B@6l!R@sB*/@a@AʁSAcC{ƨ_@9R q T[BC#c!R!dFB@LEV@#y@5X6 @@? @qT<qT @q@T.T qT Rr RkAT@ @@+XE@~hvC+@@@@y" _q T! @GxaTRr@RBFQm*^B7[B#@2Cu$QqTRtrT @9 5@ РR!`_BB@B@l@lAR R B ) !`)id^B RtrTt`_8(qT RB@!El^B[B@#@bdF@y,q!T\B@Y!Rn$Q?qTRtrT @Rtr@T РR!l@lR!\B"rtr`T @ РR!`B@_BB@B@l)l"R+ @[#Gm @ ! [#s {ckBS['m@h''EssC!?TRW  Rrr qAR:os"T`@"`  @" _q T!  R?k TBRtDsAR%os"bT A@ ,T q`T Rr! R?kTBRt+sAR o`@9qTlA@9 5R!E!@2q`@95`@qRIis@@ "&& zkBR@@ASA[BcCkDsE'Fm{Ѩ_@@ @kAR`@@@9qTlA@9`4rR!E!@p!ER!@pSqRinlrR!E!@p {Sk*B[c+*"@nsrpARnf@94NGRb`B _kTa`_!jT@85 !(i` 4NG"R@9s*c kT @8`"jTq T34 9c q@TdT*+q@85 AAhT}pARCniAR=nNG@9R`4|@zb j T "@8xb%jT5@RaE!@Tp@pRnhj@ qT@**4NGR@9xb? j!TsERa@7psA B !;gRKh**jBR@@A SA[BcCkD+@{Ш_yba jT` jT @85_8 @9qaTNGR@9xb? j`T !(h4T*qTqT@9qT @9qATT_8qTNGR_8xb? jT@9 5AR Rf1T8Xm@9@59SY~kNGR ` kTC@84#c#jT{kS* oAc[B'm@9cG"@is@5q`(TM Tq2TqT6D@9`O5Ts"@ @A,!T ?qT RrB  R_k!GT@@!@K@9R_qZT!!?d=T_LqK@@ITf*j76D@9 c5˵"6DsC9oAT@ @7 @?r`T @@6@ @@95**[4dqsK"bTE@`G5sEXq Tqa Ts6D@9@D5R RZEsCCrrG Ք"T@ @" _qT!  R?k TG@BRrg6D@9 5K@_TfBRo @@95fcRUj@ 7@ @qTi"RsQT@ @" _qT @@ @K6D@9 4 oA@94!fҺfRB*@@AaYSA[BcCkD'Fm{Ҩ_`qsKRo*@9`4 @9 4!fҜf}fV4@sfaqsK`ifARsQ b c@B )a R!`)Ga!a@XsQ6D@9G5@Ts;@ @!4!L ?q*T@@B@ @!4!L ?q>T@ @6D@9I5˛ z R{sCZ#)r Ք"6T@ @67 @"_ @q#TX6@A @#(qTAD7@a @"_ @q8T  @" _q0T Rr!  R?k@/TRCr6D@9 55K@_TBRo:B&&:c`4sQ6D@9=5"Ts@ @!4!L ?qT@ @6D@9 @5"˚ }{ @RsCZ{#)r"T@ @,7 @"_ @q@TX6@A @#(qT87@a @"_ @q@-T  @" _q@&T Rr!  R?k%TRCq6D@9`(5K@_TBRn.&g4sQ6D@915@-TsМB@!@!`A3T  @!4!L ?qT@@ `@4L q!-T`@@c 6D@935˛ R{csCz r@#)G#T@ @7 @"_ @q`TX6@A @#(qT-7@a @"_ @q!T  @" _qT Rr!  R?k TRCPqg6D@95K@_TfBRYn`fnqsK"HT@ @? r@TorT!oA4D!@99@ @!4!L ?q T@ @Z6K;R"B$Q_qT`@`@ @j*6D@9@5'6hsQ!R0"B$Q_qT`@@@@j*6D@9 5<$6 gsQ!RARfngARbn'BRCp"B$Q_qhT`@@@@j*6D@95!6 gsQ!R^ARDnEARAn*@9_$qT@9_qAT! K oA@94!fd oA@94!fdB@?sE oA@94!fd oA@9`4!fd oA@94!fҽd@@ @K@@ @K@@@ @K|gfG@ARsQEa R!`)e_sE;@<_@J9_@6_@ oA@94!fҎd oA@9`4!f҇d oA@94!fҀdR!!$Q?qT<!!$Q?qTL!!$Q?q(TiARm g @9!!?dTK@;R!K@9 G-gG@ARa R!`)sQ_RGgG@ARa R!`)sQ_ARm oA@9@4!f7d oA@94!f0dl oA@9@4!f)d^@8^@^@v oA@94!fd oA@9 4!f d oA@94!fd oA@9 4!fc]B&&*jmqsK&*_qsK*pnqsKPs;g ;m; @ m {?rS*Ti5 RqTa@" R R?jT! ?@qSA{Ĩ_[u@ikT`@[BjSA{Ĩ_gf4[u@cfk`Tu@ak`TRc*qlT`@[BTjSA{Ĩ_u@nk|~l*bQ  7"_Q_kTm@`@[B TjSA{Ĩ_m@ {S*[ @ @!0!P ?qT@>q@xTsBv@`@ @!4!L ?qT@@3f>q*TRq@T.q TSA[B{Ĩ_ARh>qxTs"`@ @!4!L ?qTARlf>q*aT**SA[B{Ĩj@ Rr R rkT@SA@*[B{ĨDl@4L qaT@SA @*[B{ĨfAR?xg?@*SA[B{Ĩ-lAR?al?@**SA[B{Ĩe {S*[ck+B@"@_ @!4!L ?qa T@Vq@*` T"R@ @!4!L ?qT@ @@q*BqTVqT2q@ T@A7?r!TҥeBqTVq`T2qTB*_@@AʁSA[BcCkD+@{̨_ց@6@@eBqT**`*`ARkq*Bq @ATQ?qhTҀ@4?qT7R!0rjTA@7@ @? T @ARkVq*T @B @!4!L ?q T@@*QqTҀ@x5Rr q! T@@3 @_T !DF!s?lQ?qIT4Q?xrAT4qBRR*d*1TS@ZӺ**j*9*@j`T@RrR:@ @!@h!8@ *6hrBq S**|@*d*ARk*B ҉aR e@6jORqkdBRf3@\@<Rr\@v\@nf{S[@B"@' @!4!L ?qTb@@A @s @!4@!L ?q*T@@Ra@r@! ?q*T`@a @@#S qTdq@zKT@*b~@*:cB'@@AʁSA[B{Ũ_ARkb@*s @A @!4!L ?q`TARk*a@Rr! ?q@TBRIf#@RAe @~k {S[c@ @!4!L ?q T@ @@*`@r T@ @!4!L ?q T@@*@A @!4!L ?q T@@@@ @!4!L ?qaT@@Rc@!4r*a ?qTBRdc@~@&7`@ @Txi'5dq@z@zKT'@**"\*7c@|@ RrR``@c@ *`b @`@!lA_h 8 @95*SA[BcC{Ũ_a @ARjARjARjARj @*`@rTdR҂RmR{S[c@B"@' @!4!L ?qAT@Rb @r@A @*! ?qAT@@S@@#cITtU~ԛBӁaTR~@~!ii44Qcc d@ys$y!dx$xdx$xT*;d*jB*'@@AaSA[BcC{Ũ_ARjb @Rr*A @! ?qTBROe#@Rd{cS[*k@B"@g @!4!L ?q T@@* AA @!4!L ?q T@@@@ @!4!L ?q T@@\ccAR**_h1Tq!@zTG@s~@9@a?(T76q T*R``T@Rr qAT@ @@+k~@^kTdBg@@ASA[BcCkD{ͨ_BRCd+@k~@^kTK`RB|@kARiARiARi*R҄`T@7?qTrTRRr !*!7@ @?)T$hU^@@ @@?h 8@7lA@94R҂Rk @c@aRb@Z@;fRARAc{S[Bc"@'f@ ,T qT Rr! R?k T@ @@#_TBRh iaRea !@^BRdCRa "!]F@ @@u b RR"Rf@FR!@c@u@j#RdRa@B"@@a @b @$bsB'@@ASA[BcC{Ũ_BRHk#@Rsjr`T4b@&ia R! bRf@@%bARc c)Ba R!`) Z>c "4BQXD fhc8%hc8kTe8kT_T R_R_ "4BQE fhc8%hc8kTe8kT_T R_R_ "4BQD fhc8%hc8kTe8kT_T R_R_ ՃcBk5Cb@d@GQFQf|}E QBQfg|}G|}hieF hhblhg$Tb@ Rg@IQ8@|*}}iBQhb8@bh(b@l@BQbkQg@T8@b  Tl@<@ChTRb| 8@&@cTh"8@B`<@bT_ բ4@9#@9LFd8kTBQ!E"hb8B$hb8c8kT_!T R_R_  @0@!@ x`@@$@MTl@RR ՠxb!k"|@T8@ (c@T_TR_{q 3` THT q TTq TT8E@94LGs @{¨_,q`T(T$q TT8E@9 4LGs HqTHT8E@9`4LGsD4q@TCT8qTy8E@94LGsF8E@94LGs(J8E@94LGsE8E@9 4LGs4Mӷ8E@9@ 4LGs0LӮ8E@9` 4LGsGӥ8E@94LGs CӜ8E@94LGsAӓ8E@94LGsBӊ8E@94LGs,KӁ8E@94LGsrwL\s@hsxrpE\s@hs8j?\s@hsx(Jd9\s@hsx,K^3\s@hsx$IX-\s@hsx CR'\s@hsx0LL!\s@hsxAF\s@hsxB@\s@hsx4M:\s@hsx8N4 \s@hsx|S.\@a~qhax C&[@3`@9 * `)Rg @Bӄ@@&˄Bc}ӄT@9d _kT@9d kT@ATD@f@||@T!!!!!!!!C!Q_  ?T ?)T@9d kT? T @9d kT?AT_ @Bӄ@@&˄Bc}ӄCT@9d _kT@9d k`T@ATF@e@||@ʄ@T$!!!!!C!Q_  ?bT?IT@9d kT? T @9d kT?AT_ {CK[cBS` @` 7 *d|@@a TzӄXGb *@_kT!k+TBR%5C$|(b:@g@B!kB@#@f:@G@hdf"c:@@c@D|}Bb@h$@Te!5Cc|}B@"@*Th#@#@DB|}dn@dh"@#@DB|}d@dh""@@#V!SA[BcC{Ũ_O9e@O@e*dR* `*Sf#|@ *+Mf{SstG@GsGaSA{¨_dsG@ ?aSA{¨_ {S0@9@?(qT6a @6`@ @ b@@_8qT`J@` @Rr k` TR!0rj T`:@ 7`J@X`J@aFt VSA@{Ĩ_s@D7`J@ @R!0r_jT`:@7uFt VSA@{Ĩ_RR r kT`:@6aN@`F@TNZ`F@h48t `:@V2`:˺b@@A"Ttd`F`F@e`:@x`:RNV`F@e`:@@x`:!jT@b@_!T`:@@6`F@e`:@aJ@x`:!@R2V@bb`F cqT)T qRTqT @9@*@9 *@9* k*_q#RT@9SR{[URcRrS4ғ~s@s}! @`!@aqTSA[BcC{Ĩ_5RARY@ARc`d@@ @ @! ?PqTA4@?TX8@#@#bH@9_qT @94@Rb@BbW@~@ @AR c @`@@R@S`@!?TT_8#?6T_8Tdq`TqT{ ,e?_ ?+TTTb!CG)T@9?!bb8!T__?Te!CGbT @9?!Ѣb8◟jT__T_8_Tdq`TqT! ?B@T_8?7!__{ ,d ?B)T _887!?BHT_T_8Tdq`Tq(T{ ,dbCG@9bb8T?!ET_ {[RURcrS4ғ~s@s}! @@! @AR#XBR!RWrT! @?qiT!Q! *SA[BcC#@{Ũ_@ @ @B _PqT@C@aH@9?qTAR6b @`@@@@94#@Rb@BbW@~}!9 @8@@_T#@qT**SA[BcC{Ũ_5R4#@2^#@RV@{St[BcWks{@9"@ aR_q DAz +yT@ y:9O9 39#Ky 5b@QBEB@@$@ 7`@9_q*Tcc8Ec@94c RcEc@9 4 4387? yTxCqTqeT qT$qT(q TLqTPqTc@90q@T_q BiJT_q@TџIT$q R@Bz ITa@9b#O! *ALF"`8c9A@7*Rc299C9FCR7R<7@!_;RSy8b@#XF9B*@@Aʡ SA[BcCkDsE{Ө_b@9_q*,TRw5?I%Tx!?qkT?LqgT|qzT_q! RAz@.Ta#O!LF"`8c9A97*c299C9 aF@8lp87!R5R299C9CD969:9_qTa@QR!D!@ $6`@9O@@*4a!G!`8#@cTRb+ @T A@8!@<T-Tx!?q jT?qPT? qpT?$q~T?(qT?LqT?Pq T?\qT?dqTqT(q`&T8qT<q TTqTqoTR_q%T kT[W4 WTa@Rr?kaVTӃR3RH@CR bT@5@T_q@<Tᇟ?k`TIT_qTᇟ?kATQ5T29#R@A}!"8! Ú29%i!8Q6@9`8_kIT69:@9_kTy8:9@CTH529 u46@9Rxqk34s#sA:@9R RRA@9q9!9T R R@8%"Jk ! !T9!9_ kTJ k)TD9q#D999B).TRRpSB@9!@9&kB *! *TŒ)q^TCRRR7?k@*TR7@a^Xs8@ V{@9k>9TB@9B9l"R2969 R:9O@9`@9C9@ ՟mTxq?TLq9TR_q`FT_qR6TSZT4bR69HTxqT`@9xqYT$q@HT0qT5W`*!Tx!?q`*T?qIT? qXT?$qdT?(qrT?LqT?Pq`T?\qT?dqTqT(q`T8qT<qTTq6Tq`5TRҒ4*cIc@9q4?ȂT?`T? T? aFTxCq@iTq`T qT$qT(qTLqTPq@T\qTdqTq`:T(q8T_q BT@B_HT?Tb@yCR_kTcR_kTcadRcScD9872@9 R299C9U45RB|S `2Ad2BR299R9C94_|qTA R75R2969:99C9a Tx!?qCT?q`MT? q@YT?$qmT?(q T?LqT?PqT?\qT?dqTqT(q`"T8q`T<q OTTqMTR yBq^LTCR7uҢ@T429R7s@% aG!Rs@7@29@"829$S@ _ a-Tx!?q`KT?qiT? q`hT?$qT?(qT?Lq=T?Pq<T?\qT?dq TTqT(qITRxCq6Tq >T q MT$qaT(qzTLqxTPqvT\q@TdqTqT(q T8qT<q@TTqTb@9_q T_qT_qT_q BTB`@9xq`/T$qAT0qLTRҎc@9cxcq4T$q<T0qT@`ccCRQcD9?6294dЃ G7Rb8C9B@^29դ4"RҒc@9c㇟5N`@9(q`3TRYRҠrOc R*b?65Rc@9qTc @9cT?TRm29R@% {#`F{@#H&TڠR!Rr!!|!b?a@9!x!?LqT?PqaT`z$<TT`T R$`@9xLqTPqaT5ҷ`*2a@9!x!?qTa @9``!x!?$qT?0q`ҁ`TxCq TqT qT$q@(T(q5TLq ITPqAlTc@90q!Tc @9 qT҃_`@9xqT` @95x$q`2T`*0q@T`*`@9(qTRR74@@7RHT`@9 C9*299u4oc@9(qTc @9qT@Ӄ- R299C9Ru4_`КRDh|8c@9(q}Tc @9q}T@Ӄ`@90qTRґ RanRCbR*5Rc29O9C93y;c@90qazTc @9qzT҃57`*BTxq/TLqwTRj5* `0`@9xq'T$q5T0q`YTRW` @9q(TRP?TxB_q'T_LqAT`@9xLqTPqT`Ҽc@9R$qdEzqõ5$c@9cxcqT$qDT0qoT@`Ҩ`@90q TR$c@90qanTc @9qnT&ҙ` @95x$q+T0q`AT`*`@9(q`TR c@9(q!kTc @9qjT@Ӄc@9q5!Rc@90qAiTc @9qhT҃p5`@90q@7TR`@90q#TRa @9``!x!?$q@T?0q`ҁ`U`Ңc@90qdTc @90qAdT>Kc@9cxcq4T$qJT0qbT@`@` @9q@)TRҼ`@9xq`T$q5T0q`ATRүc@90q_Tc @9qa_T&$Rң `` @9qDTRҚa@9 xLq@dTPqMT?q YTRҍ`@90qHTR҆57`*`@9(q`MTR{a @9``!x!?$q@T?0q`ҁ`` @9q:TRic@9dxLq4TPq2TqAVTc @9qUT`@90q6TRTc@90qaTTc @9qTT҃` @9q7TREw`*ic@90q!RTc @90qx {Sb C[cW@vC!A@_"@ @c @!4!L ?qUxc!T@@_ @!4!L ?qAT@ @*(@Rc4D!0rA ?q|@c@9cRjT RB* vCs C@v@SA[BcC{Ĩ_AR_ @!4!L ?qTAR{S C[c#vC@!AC@`@"@ @c @!4!L ?qWxc!T@vB@`_ @!4!L ?qAT@@`_ @!4!L ?qT@!lA @ @95**a@R#4D$0r|SD q`@9RjT RB* vCw C@@SA[BcC#@{ƨ_ARDvB`_ @!4!L ?qTAR_9`__@ @!4!L ?qTAR_.*_@!lA @9@4 ! )_ӓ_@G {[vCS!AB@ C!@B @s@6xbR$0r 4Dc@@9D qR jT RB* F@ TvC C@SA @[B{è_Y"p {[FS CcBS@"@7@`M T#ˎ`^Ev"'@ @!a^a^ `wC@ @9raTD@@(@7B@ R#@9 qT CB7@@ @"SA[BcC{Ǩ_ŗ` ^Ev+@@!a^a^ ``@/@a^!a^ ``@3@a^!a^ `ܗwC@ " {C[vCS c)B+B@#@W C A@@yb)B@9! ?q_ @s@T`_ @!0!P ?qaT@@@e!h7TA` !)R!h T7@S;@a^7 A!`dT A!`L TvC@@@y q TgvC@ @9raTD@@(@7B@ R#@9 qTF@MTt"# @BAI !*@xc`#PiꋀN)O)Cxc"yjvC C@@ւBW@@A{ASB[CcD+@_A` !)R]7@ R!*V F@M TF!C@!@$? T`t"s8` w4`{0`,`Ⴠ(`@ bޖ`ዀږ`"Ꮐ֖`&ᓀA` ! *RARN C@`` @Wh"!vC@x C @"( {S` C[vC@!AC@@"@ @c @!4!L ?qVxcT@@7ڍ7@R*c4D$0rD q`@9Rj`T RB* vCs C@u@SA[B{è_vC@s C`@uSA@[B{è_AR;6 !@+RRvC!@s C!`@uSA@[B{è_{[c#vCS!A@#@ @B Cwxd#@/S@@@9 @T_ @!4!L ?qT@@7$CD@R4D#0rC !q@9!Rc 4 RB* F@TvCw C@@B/@@ASA[BcC{ƨ_ARʚ6 !+RDR!F @TvC C@@  @$";"5 I{[,DSvCBG!A@c@ C!@B@f @`@@y HqS 6xf@TLqTDqT *!|S@RB4D#0r qB@9BRjT R* vC C@SA @[B{è_R *!|S *!|S8 *!|Sw {,D[ScvC@!GdBA C@3@aC@@s @@@y vxd#1T@R|@c4D$0rD q`@9RjT RB* vC C6@SA@[BcC{Ĩ_@@` @@SA[BcC{Ĩ_) {,DS[cBGvC@!Ad CD@@s@ #@ @@@y vxdu1@T4@R|@c4D$0rD q`@9RjT RB* vCa" Cv@@SA[BcC{Ĩ_ !! B@6@@`` @SA[BcC{Ĩ_Л{[vCck CS FB!@d@/@S@5@@y˵" TvqTzq T`@ @!4!L ?qAT@@Rb_r*sBA @! ?qATA@@@!@+*3 vC@ @9raTD@@(@@ 7B@ R#@9 qa T@uZ`@` }`x`@@9Ft@R">@@ @lT"œR@"+vC@ C @B/@@Aʁ SA[BcCkD{ƨ_$T@1@T<!A `_Rr @! ?qT@`-`s"vqT@!@aR@!@ vC C@@BR0ARg@&vC C@@CBR +@fBfGvC@w{SvC[ C@3@@@y"q Tq T`@ @!4!L ?qT@@ Rb_r* RrsBA @! ?k!T@@@*F@` TvC@ @9raTD@@(@7B@ R#@9 qT@w`@` ``@vC@ C @SA[B@{Ĩ_ָU@1@T<!A F@`LT`_Rr @! ?qT@ɔv`s"qT@vC C@@SA[B@{Ĩ_BR~AR7@AR<{SvC[ C@3@@@y"ߎq` TߒqT`_ @!4!L ?q T@@F@@TbҚ F@@mTvC@ @9raTD@@(@7B@ R#@9 qT7@vbN`@V` `LvC@ C @SA[B@{Ĩ_`_Rr @! ?qT@Ř`s"ߎqT@vC C@@SA[B@{Ĩ_BRAR{SvC[ C@3@@@y"ߚq TߞqAT`@Rr @! ?qT@ R`_r RsBr @! ?kT@@Z<@9?q"F@`T F@`mTvC@ @9raTD@@(@ 7B@ R#@9 qAT@vV`@` y`@!Z!<@@ҭH`vC@ C @SA[B@{Ĩ_`@Rr @! ?qT@R`_rsB @! ?qT@@9?qiJ`s"ߚq@T@[vC C@@SA[B@{Ĩ_BRR`_RrsB @! ?q@TBRFBRBg@!Z!<@dARk {S` C@@ @!4!L ?qT@vC @!@!@@y! ?qTIT?qT?qATvC@s C@u@SA@{è_?qaTARĖvC!@!@@y! ?qAT {SvC C@3@@@yB _q T)T_qTIT_qT_qaTF F@mTvC C!@@SA @@{è__qTϗ_qTT_qT|d"{[vCSc@ C@@y"q3@ TqTq@TF@ TvC@ @9raTD@@(@@ 7B@ R#@9 qa TU #Ҡ@B`˓=` @@@aq@@P6nA@9@5R`@FM`@B@AR`AR`Ҹ@R `nA!@9A 5@m`"ҵ@R`&nAs"!@9 5vC#@@ C @SA[BcC{Ũ_`s"qT@&vC C@@SA[BcC{Ũ_`_ @!4!L ?qaT@@F@ TBXn`_Rr @! ?qT@u]JZBRAR@ό@|R҂R4yR҂R.R҂R({SvC[ C@3@@@y"q` TqAT`_ Rr Rr @! ?k! T@@F@`T PF@`mTvC@ @9raTD@@(@ 7B@ R#@9 qAT@vN`@I` o`@d@`vC@ C @SA[B@{Ĩ_`_Rr @! ?qT@aR`s"qT@cvC C@@SA[B@{Ĩ_BRZAR@0{SvC[!Ac CFB@@!@u@B @6xb TԒ" vCs C@w@SA[B@{Ĩ_֔vCs C@@`w @SA[B@{Ĩ_"f {,DS[cks@CwCFGCT AnA}c@BB@@D@!@9s@&b @CC7xb 5 RR@rb s"?CT`@ @?rqB 4! ?qA T@@#CqTq` T Tq T Tq` T"qaTGHIJ b@GRc4D$0r@D 7@qc@9cR j T RB*b` ZwCC@@8B4@@A@ SA[BcCkDsE{Ҩ_lr Ts"?T`@ @? r@TARH`TR"4r! ?qAT@qT-T qTqTGG@\T5 ,BR4GHNGHIIGHO@DGHIW@>?@;G84nA@9G3@7@s4 !-WnA!4D@9 9 @,~{"RcvCS[Bc@$@o @v@9?jkrBB5",BT _qT Rr!  R?k+T`@@cZsu5`@R!0r ?@q TR!4r ?q6Ta@!@cxRvC!\!*a@(43U@"R"R!A"Rߎ@ @!0!P ?qOT@@vC@@#@@9x@z@S)`@9Gw]@; @{C\@S7@@ןaS 055vC@@9@@a@ ,T q>T Rr! R?k=TR#Kg@K@7@O4K@O"1TC_vE[WIG@@C@Dx`8{@q4s@65H9T8k@{,T`@x@9@6.87@ k({`?(TZ?aT@S@6k@{vC@!@9"T07?bTC?@ҵER; b@9b8 @T5@@"kTy!\6k@#k@9{T?@"@Q5?9`@`@2a6sE Bo@@A!iSA[BcCkD{Ψ_vC@@X4"R3"R! a@@ ,T q@V@)T Rr! R?k@(TR#Og@TC78E; a@kfz`k@ZT`@@9`6[?6R#Era{8 @*T<`RA(! D9!|@ BiTD@9`@dd8D9\T;@R3@9<5BRc@  2jV@TqT#Ra@g@|7T `@9y`7Z`9{Ta@7sEha@ ,T q 8T R Rr k`7T#RӔa@g@I7T@8 y Z@ATsEHqTR#a@@g@yW@9{ 7.4BATd Zk`T*8!?@T#@9#By6_1`CTZR`@RvCx!\!*a@5"Ra5@ Rr Rr @! ?k,T@@SpsE3@s@ᇟR * 5`@@;7`@9;78k@ {TO@@49`@`@s@c$@zA#T6ʎsE3@R%r#Ebx8@@A T@`R(D D9|@ BiTE@9`@ee8D9>T_@RRX`@94#RRՎ{`?@TaHR8k@`@| @@g`@a @K@gsWI:`@{ @@gG`@{ @@gcR(D `D9|@BTC@9[@e@c8D9@5aT_@R8`@94k@cR(! `D9!|@ BiTC@9d@c8D9`1T;@Rݐ@9`4kAR@`@w07KTK@ECG`; c@9Ec8A@"5a@"kITy61TZ1Tk@{cTK@@ 59`@`@2`qןdcnh(a(ay OK@T O@ <@Z{@q;@ @ T;ґ @k  @km a@k7 a@k2``ط6TZ8!?T#@9#By6_1T_1Z#RRӍARS`@x @@gIKT K@-?cT ?@v* aD9|@ BiTC@9d@c8!!D9 ?T;@RER!(! D9!|@B?iTC@9d@c8D9TG@!RT@5k@c;Jk@.!<@.k@Z{y 9`@`@BBBBk@&k@'|Sd2!!`2@$89k@8Pd8vC@@9sb TCRE @@!HT y Z@며T@9b8 @A4* aD9|@ BiTC@9ad@cc8!!D9?TRmk@ TqZA!@k@k]@k}@k#sEs3Fs3߂{ccxCSB[ks! @@G ,T qT Rr! R?kAT@@\ @@?q"QҍT?@#@c|2@9qT@`8! @?TqT;}R{C Rrr R@ @7X6@$ @6!@!@! @7_r`TA ?qTB _kT@@c յ"T@a@7@ @TЁ@lA"x@95qT@BRϊB?@?qMT QеR R'Eurr  R_k TBR`@C@ @R6@R8@}cs"ރT`@ @ ?qT@"@C@@@R6R$E@8@}?q T Հ@@ 7BG@@ ʠ SA[BcCkDsE{ɨ_ QеR R9'Eurr  R_kTBRY`@C@ @R6$@R8@}cs" T?@*`@ @ ?qT@"@C@BR6.fiaR313@0BR' RFRC@ RrrcL? rTӂY1{S[B@@"@/ @A,!T ?qT R RrA ?kT@?9_ r@!@+T`@x`@! @6!$E!@!8@a72`+@Ѥ"?d`@7?A9`5B/@@ @SA[B@{ƨ_lA@9`4R҂R̐BRCĐ@?9 @_ r@TIrTlA@9`4tC@@@y ?tqT?qTGā !) !`/{ctCS[*c`@B"@'@9(7@9 7@R ,T qaT@ @@# qmT`QjT@ 7"qTR#@ |@ ? T~j`8 @ Ӛ (|@3B'@!@AaSA[BcC{Ũ_ 4@R ,T qT Rr! R?k T2Gqt~` T~@!š!?T#@V|Ђ TT TK T@T AT@@9&TTTjv8s"Q Ӛ`ҺR!RrT@ ,T qT Rr! R?kT@ @@#A@9 @@9!@@@9 `A @9cQ! Ú A@9cbQ! Ú!@@9bBQ š*u R!@1~ /̍ 0ȍ {[@B"@7$A9S4ck6 1+ 2+ @cR!4r@ ?qAT@ @!@37R Rr R*r R@r k!T@@LCkq-T`QjTql TRb~@ ~9 @|@ "3@BBCӣT?CTqT!kv83 ӚaQ7 ! ! "ٚ!*k68@ 7cCkDB7@@ `SA[B{Ǩ_+!#b T@ 7@! @? T @BR)@q+@mTBq TTqTqT R !@1+~HPX9999bQabQ&š 9&9aBQs"Q&9&Ӛk68"qT`~|@!!?cT~b~@ҙ"qTs"Q&Ӛk68AR@}BR@6R!Rv@`@Z[643@rlcCkD /+ck+ {[SBcks*"@O99Ta@ ,T q`T Rr! R?kTRŎ@R!4r qTR6@ ,T qT Rr! R?kTR`@ 6$E@8@@$7$R#9?@G@7RARBЈ@Ҡ6$E@8@7$RC9C@K@7RARB˹A9*5A9`*5@RrR #4R*?jGT@y" @ @?CT?T`@ Twq"@ E #T{q@Tsq@T5 4D@95BO@@ ʀ%SA[BcCkDsE{ʨ_`@| @@?}@ @@C`@`7RwqT{qTsqaT$ѹk`8Bk`8! aj 8!Ts94RipqT@rTׅ`@R!4r qAT`@| @@?Owq T{qTsqT$bh`8eh`8!*aj 8ATscC@_)T TBAR3@ @@?h 8K@34R(R#?@_TTBˁRR7B@7@ @y"?T7R@7@@B`@JB Ձh`8eh`8!Jaj 8ATG@74R@@ @@?h 8K@lA@9 4R҂R҇2R{f e@!$^csde^$^d$_e_d$_e_dTZ0{f e@!$^csde^$^d$_e_d$_e_dTCG{fe@!$^csde^$^d$_e_d$_e_dTC| !DF!{< {S[ CkvCc@!@3@9_sraTD@@(@7B@ R#@9s @@y Hq`TqTDqR{qTvC q@T@97 C!*{vC[B@SA@cCkD{Ũ_ @9qq{qaTvC C@@SA[BcCkD{Ũ_9RR@,@ q T @@y3R HqTi{ @@ySR HqTa{ @ @9(7@9 7@ @ A@xc 7@@s @R!4D"0r _q!@9!R_j T R* vC C@@SA[BcCkD{Ũ_ B@S b@ D@!!AB(@ B@Q*|||||BC` %@@@%TRAb R@x%e@ 2e[`@a R 9a@ @ 8 @4 7 2> `5vC@ R`sR}`ˋ @R6 !F{S[ck0@9$Qq TR@@R9!E?"R` @"a@"B9_qAT ?SA[BcCkD{Ũ_ֺ*@D@9Ta@b @ B9q`T @T`~*` @~1`Ta@ @@s` @`@@`@B99a@ZD@@kjT`D@0@9?$qTՅ @ !3B@_BB@B@xwa@@@@@@Y*M~*J~* {S`B[*@'*~@RGrT5sB'@`@ SA[B@{Ũ_*j R!`4~4**!{RScBd@_@@9@?q@T!R 7@@?T@#@?aT@ RsB_@a@AASA{̨_֢ B4@57Y{ @@?q T!QR @{¨_"RAR RAR ա!D!@?kKT_֜ ա!D!@?kJT_hu ա!D!@?kKTau {[SrB@_qT_q@T*RR*1`T!R1 T6 R*SA[B{è_SAR[BR{è{*1@Tb*SA[B{è_ֵrBAR*X}@XQxrT*{1TAR*I@XQxr`T@R{[ժD@q Tq@TRS**Iw*1`T!Rl1T6 RSA*[B@{Ĩ_[BR{Ĩ5wz*1T*[B@{Ĩ_֪DAR*SA}@XQxr`TSA**y1TAR*SA@XQxrT@RSAC{Ss`B[ckcH93@H9s AAR|rT@B9q Tq T*@B9q@zq@zෟ?j T y`T|BkT7B*y 7@"R`$B@~@3@94c$B"R@`@@~@@0@94@@@s@4*6R@@9){s7|*s@*}*~*Ã*@ B9x 9#B 4@ B9q@Tq @zjT55R#BxsB*Aa@AA{@SA[BcCkDsE3@C_#*Ro|7@ 0@qT`5@B9xqT R#*U7 Հ@aR9y@ @qaTa@9cRRf?$q*$Cz{RRRh9@"`  9|T @ R!6B@_BB@B@|Cy|!Rz@B9qT R;r T;@;@_8(qT RB :!E|a |rt@TvT@B9!R?]|?@F!RX|6t @ @6 B5 c@B! 6Rcc@c@|3|@`qATV} {[ES*@qTq T! 29z*1T!R}1@T 6 R*SA[B@{Ĩ_SA! 2[B{Ĩ$z#z*1@T*SA[B@{Ĩ_EAR*{@XQxrT* z1TAR*t@XQxr T@R {c[&AS*@qTq`T*! 2*1T!R}1`T@6 R*SA[BcC{Ĩ_SA! 2[BcC{Ĩ*1 T?*SA[BcC{Ĩ_&AAR*4{@XQxrT**1TAR*#@XQxrT@R{[SC@_qT_qTR9u*1@T!RH}1T6 R*SA[B{è_SAR[B{è%u(x*1`T~*SA[B{è_ֵCAR*~\{@XQxr!Tx1TAR*~@XQxrT@R{[CS*@qTq T! 2t*1T!R|1@T 6 R*SA[B@{Ĩ_SA! 2[B{Ĩtt*1@T~*SA[B@{Ĩ_CAR*~{@XQxrT*t1TAR*~@XQxr T@R {[SC@?qT?qTRW~*1T`@!R|1`T@6 R*SA[B{è_SAR[B{èB~es*1`T`@\~`@Z~*SA[B{è_ֵC@R`@P~`@N~z@XQxrTIs1 TAR*`@>~`@<~@XQxrT@R {c[GS*@qTq`T**! 2.u*1T!R]|1`T@6 R*SA[BcC{Ĩ_SA! 2[BcC{Ĩuu*1 T~*SA[BcC{Ĩ_GAR*}nz@XQxrT***t1TAR*}@XQxrT@R{c[D@q TqTRS**1T!R |1 T6 RSA*[BcC{Ĩ_[BRcC{ĨX*1`T}*[BcC{Ĩ_DAR*}SAz@XQxr`TSA*<1TAR*}SA@XQxrT@RSA {cGS*@qT#qT! 2[**{*1T`@!R{1T6 R[B*SAcC#@{Ũ_SA! 2cC{Ũ}{|{*1@T`@_}`@]}*SAcC#@{Ũ_G@R`@R}`@P}[By@XQxr`T[B***Y{1TAR*@XQxrT@R[BC{ScaB[*ks*"@gu`ȀRjTlA@95cR*9AR`9_**&RJc9B9#9T)ksBg@a@A{CSD[EcFkGsHC_֡ !7}vszC{S' m(g gB[*cks"@tC@@@y! ?|q TfwARd|bNGR@9Axa! ?kT Հ@8@x`? jT TbNGRa_8Axa! ?kT`_8@x`? jT8AT5e@@9 9qT@9Rq TqTq@)T4q`STf *7@@ @A4!h !4A,!T ?q"T RrB  R_k@!TBR߁D@ TR ~LTxwh@9D[EcF|SW@9x?qT4 Ta_8?q T!lA!@9_5@9(R9qAT@95sNGR@9a`_!jTu5e@4q lA@9T`E54R9@%4@ R9q#T*|@9R(R`A5NfC9B#9 f@c9 B@@Aa{CSD[EcFkGsH'ImC_` wAR {L[lA@9=5@9qTR9@4A R9qTaNGR"`B _kT  @8`_!jTq+T&4* RRW~W@R(R? 4@9q@z TsNG``xP@q`T,@95@RMr@8T xRR@qAT @9aTa_8?q'T@RsNGR"9@9buB _kT @8au_!jTAR9@4A R9qaT@934aRX&RRRRd~@Q@!@@@ R 9 9 @9w@9_q @zT,5 եрhe8qATh%8@R[r[@`T @R! 9x[@@9RqTdNGR @9`_!j`TAR9@4A R9qTq*T4*RR  ~@?Zz4@9qqZ4sNG``xP@qTR@A4R9AR61(<'E@8@7 RtC@@@yA ?q$Ez&T`@R!4rR r?kTa@b @!@[2`8@4JAR?x?@_ T BR? @?@@4`@ϸ @A?q) T7@@ @#T I @tC@@@y qT 7@ ?@e?@`7@@C?@4O@2\Tc @:0:B@ 5`@77@@B9 7 lA@95 "K@RG#0rB4D @@@# ;@qB@9BR jT R!*  !tC7CK@@SA @~aRضB@ 7`@R 7`@ @C Ta @**`b@ҀRr@`@b @@_h 8`@ @a 5R*`77@@B9 7 lA@95 @;@GK@S@sG !tC7C@SA @8[@?ZmTBRa@q`@@)R`@ta@!@ G@ R Rr*`@ a_8c!?qT a_8!?qTTzrK@kJ`@2`DR҂R?CRZR҂R/SD?qT B @DFxb` AR { ,D[6S45csG@D@"B3 CA@Os}ӛsC@|@k3@9$QqT7 R s}kD G!vC@!@ C ``@@BO@@A'SA[BcCsE{ʨ_ց @a7 :@vCA!@@" @9@@yxb!#;?qD @#T@@` 7`C7c @?@ @A@!B9?q T3|{3@7b @@,T q T R Rr@ kTBR#33@b @R6 $E@8@!}! S@ @95B9@5@q T7@ TG@{@ s}8G@3!R;@"0r!4D` @!@9 _q!R_j@T R*` xvC C;@`@kD@s}7r`@y@@Ge!R@s## T5VEN@CDRЮkDbkDR`@zc @!4!L ?qA T@@*IT`@ @",BT _q` T Rr!  R?kTBRCc c@K@{@G@`@zc @!4!L ?qT@@ T`@ @!4!L ?q!T@@G@ T"9_BwG@CKoB9 5K@GbAR^AR[AR3V3@@%@K@_ T_9BP @F@Tg#* Cu{@G@ :R`%Nm;@LH"ү`C7c @?:kvC@@@y" _qT ! @DFxa`G@_B vC@@@y" _qT ! @DFxa 0mAR AR{[65SvCc C`@!@@9_ @ T 7RBt_t2@9$QqTw"7r @TvC` C@@SA[BcC{Ũ_ @`@8@ 7vCw"@@9? @AT96 @@B9@6 @@ @ 7@@ RvC  C@@` @"BFB@B_T97 RB@"BAC@b @D @qT"BB_! C!@a@SA[BcC{Ũ_BB$Q_qT a@WRB4@!Rk@4VEn@5@E%RSADR[BcCkD{Ũ`"Ѵ`@kDvC@|@k9c@R"@B9x9 @X@"U@7kDQaR>@@tR n!@kD>kD: { [5vCS4cA!@ C@" @!@9s@? @xbTw_ B2@9$QqT#@Rc4D$0rD qc@9cRj T RB* vCv C@@SA[BcC{Ũ_ F@ T B@=@a5!R!@R!4D"0r _q!@9!R_j T R*  @ @@6!R4VEj@SAR[BDRcC{Ũ"R'xj'@{[5 CSck@`@ @!4!L ?q T@@*c_wBa @!4!L ?q T`@@!t_!B42@9$QqiT6*vC@@@y q`T+TTҶE`( @@v@ 6!R4VEf@@/abSAER[B*cCkD/@{ƨ< @``vC C@@SA[BcCkD{ƨ_ARAR $r @T`A R/f/@{S3` C[ck@_ @!4!L ?q T@@4]vC@_9 7@7  @qTX6 @ @C(q T7B_ @qTc$QqIT@ X7 ,T qT Rr! R?k T @ lA@9` 56@`5 R vC@s C`@vSA@[BcCkD{Ũ_ $QqT @@ lA@9 5W @*79RARRR0@9$QqHT0@9 <q!Tj*7 vC@s C@v@SA[BcCkD{Ũ_R@! @ @a? @qaTc~! {" Rc7r CS4[6 RkrsvC5@BA@ÂB_f@?B@# @ @_! ?kYxcaT@@_`3@9$Qq TR8@@`@@`@`P7r T4L q!T`@@R!4r q T`@AS?r!4@ <@;{ @ T`@!R@ak 8vC lA!@@9<@@y# 5q`@ T8*)|@`@ P6`@@ak`8?DqATk 8`@`7_ T: ! @R!4D"0r _q!@9!R_jT R* : vC C@@ւB?@@A SA[BcCkDsE{Ȩ_` @ @BR7FAS?r!4@ <iT7V`@7@ARu*|@!! Bҹ @ 6}AR7x7@ vC@ C`@@!"RvC!@ C!`@@!7!DF!|7@qyN|vC@@@y" _q T ! @Gxa Ʃ!R`{!S34b C[cW@vC!A@_"@ @c @!4!L ?qUxcAT@@_0@9B$Q_q)T"R"@RB4D#0r qB@9BRjT R* vCs C@v@SA[BcC{Ũ_@!@#9@YI*׬a#@|SAR #@ {[5 CSck@`@ @!4!L ?q!T@@*b_A @!4!L ?qa T@@@xb`_ @!4!L ?q T@@*v^2@9$Qq) TRܴ@@ @R!!lA @9@ 5****7!! @ *!@aR@9 @`@!@a ! CtC!@a@SA@[BcCkD{Ũ_ր@@ @@@`* ! C@!tC`` @SA@[BcCkD{Ũ_ @@TAR`AR\ARX@@ @` !@{[65 CScks33@B@?`@ @!4!L ?qT@@'b_A @!4!L ?qT@@@`_ @!4!L ?qT@@*x^zѸ3@9$QqTR?@@y^ 3@9$Qq TR4@@ @Ru @Rp!!lA @9 5&**[7s@99 C{Rާ s@@٧w@@[9ӧ w@@Χ@9 @ @!@ @@!@a CtC!@a@@@@@ @ @@@ @` C@!tC`` @@B?@@AʁSA[BcCkDsE3@{Ȩ_ @@@ @@@ARtARgAR[@@ @@@ s@@@ @@@@w@! t {S C[c7@`B_@/؆_2@9$Qq TR}@@@k* 7@ ,T qT Rr! R?ka T@ @@+vClA!@@98@@y#@ 5* q+@ T *|S@4vC C@@kD@sB/@a@A!SA[BcC{ƨ_֠ @@@`#R!@BtC!` C@@@vC@ C`@kD@BRCkDױ *|S!DF!xk {S` C[@_ @!4!L ?q T@@*_2@9$QqITR@@@ *] 7s CtC!@v@SA@[B@{Ĩ_ր @@@ &)#R!@BtC!`s C@@vSA@[B@{Ĩ_s C@!tC`v @SA@[B@{Ĩ_AR c0R{AS[vCc CC@@@c @`BXxcg@7_ 0@9!$Q?qT@ak:@A @s_`3@9$Qq TR|@A @@[* 7 @R!*!0;@ *!@*`aR @9 @`!@!@g@e@7vC C@@kDsEkD!RvC@ C`@@sB7Ha@A{@SA[BcCc0_` @@2 @@  @kDsE @@& @ @@*'kDsEks {Sb C[c#vCX@!A@_"@ @c @!4!L ?qUxc T@@*_2@9$Qq)TR@@@*z@Rac4D$0rD |Sqc@9cRjT RB* vCs C@w@SA[BcC#@{Ũ_ @@@@"RvC!@s C!`@wSA@[BcC#@{Ũ_AR {cvCS[ksB3!@@G C4@@y"q@ Tx_`@ @!4!L ?q T@@zB`_ @!4!L ?qT@@y_ 3@9$QqTRq@@@*@7qT"qTzbvC C@@ @@@@!RvC@ C``@@BG@@Aa SA[BcCkDsE3@{ɨ_ARARg @7p6Rr qT@ @@*(@R@rc Rc* ҅&*@ @c@h#8@ @@ 7@@@ @@?h 8x`@6@ @R*)&**7@`R C@@Rc{[ CSvCck8@B@"@/@@@y9#2@9$QqiTRǰ@@@ @`R Ww @RrW@a@ R*`"`@a @@?h 8@ @ݮ7?'qT?+qT`@W@vC C`@a @@?h 8@@B/@@ASA[BcCkD{ƨ_ @@z@ @ ۱ޫ!RvC@ C`@@a @S76a @Sv@6{cvCS[kB@"@7 C@9X@ 6@@@yafE ,q @`,T.T!R!dFXE"y@4cLEtk2@9$Qq)'T^B!R@qRvC@ @9raTD@@(@`&7B@ R#@9 qTqTF@-0T@4 4s"` CB @7@@A!3SA[BcCkD{Ǩ_T4Д~@F@˟.TF!C@!@?.T`x F@@/` /@ߨ`@ۨ`@רެ`@Өڬ`@Ϩ֬`@Ҭ`"@ά`&&@ʬ`*.@ Ƭ`.6@¬`2:`6"@vC@t_@A 7  @qT!X6 @ @b_(qT_<q!TvC@@@y ,q@"T!RXE!dF@"ycLEyY @@`7*RBF!\B P7c @q`TlA@95 ,T qT Rr! R?k T@ @@3[E@vC@E@!LEBdF@@y @?c @Ӂ,Cy!T ?qT Rr  RkT@@@y3@ qT! @GxaTR vCBF@@@y ,qRTa!\B R6 RRr`T_8(qT RB!!EΪ $QqHTvC@BRtE@Rm @@r!\B  @@ L@,@ qTT @@@@ B'R!@ +sfE`@aTR\B@6,!R@'AR R B )!`)\B!RsdF@y,q`T ء@ !ӡ @ @A? @qTBB$Q_qT@A_60@9[E@@"vC@y c@Bc\vC @  Bc@c {RSЂvC[cC@aBd@9"@/a@@y! "4QB<_qTB<@`hb8Т CB@B@B @B(BX b4b@9B7k!8Q!<?qTR RR4 C@@ @A,!T ?qT RrB  R_kaT@@+@@`@@y ?qT @!G:x`TR@*6 4ةqTT@%kDsB/@a@Aa SA[BcC{ƨ_!<@@xaha8Xxa5RƢ`7**BFrTvC C@@A@9 6!F!@!?-TA@97!@  C@@kD6AR B )!`) R@`kD>vCk@a@@y! yCBR$vC+@@`@@y ?qT!RA@97!@@A@"@k#{R[СvCS"@S@@ys"aNQ!<?qT!<@`ha8 C!@!@! @!(!X a4A@9 7RL@7vCNq@TVqA @A@xaT) TZq T^qTB4B!FgA@ 4@!a^a^ 8`b@7bU!@C| IT@rTP7 @7X6 @ @A6@@ @6Rѡ 4vC C@@A@9 6!F!@!?-TA@9A6T@  C@@SA[B{è_RqAT!F!@lSA[B{è_ր@ @T @@9q!TSA[B{è"B4B!FgA@ $@@@A@9a7@B4B!FgA@ ,@SA[B{è@` CA@9@a 6!F!@!?TA@9A6A@ wA@97!@@!@"0@"+@{RSavC"@A@@y! @!`Q!<?,qT!<@ha8Ё C!@!@! @!(!X a4A@9a 7Rk7[uvC@@@@y tqTTqTITq T TqTF@H7SA[B{è@hqTTlq TpqaTF@ @qT CA@9@ 7A@97svC!@b@2`q TdqTF@kT@ CA@9@A'6kxqT|qTF@ @qTSA{è_F@  @qaT Հ CA@9@ 7A@97!@@ C@@[BF@_6F@ 0@qTF@`k!T@ CA@9@'6!F!@!?T"@*SA{è@` F@ @qTF@F@ @q!TF@W6 CA@9@'6!F!@!?T A@96A@ !F!@!?TsvCb@!@"@{S` C@@ @(X 4tC@@97R97F@ (@qTSA{¨@ R*SA{¨_` CvC@@A@9! 6!F!@!?TA@97!@ s C`@@SA{¨_SA{¨@`A@9a7!@@A@"@{S C[aB@"@/ҶvC@@ @("@9X @4b 7 6 @0@9!$Q?qi T վ"R @`psB/@a@AaSA[B{ƨ_ր C@@@@ @q@TbX6 @ @#(qT7"_ @q T@@,T qT R Rr@ kT@ @@'BR0@9!$Q?q)T@9$HTCЫrT+@{@@T\`5@'@$QqT @@ @R`@"@9"'6R#f@'@@@@@'7@@@`@!!$Q?qT@ @@@vC C@@A@9 6!F!@!? TA@96A@  C@@mA@9a7!@@!@ @ @w"#@7 {[ CSvC@B@"@?a@ @("@9X 46!@@y R@R! ?q@  ՔB?A@Aʁb{@SA[B _c 63@bdE@TXENE@@0@9!$Q?qT!R!\BdF#yĥ6R@`rcC!@9R q`T C@@a@  @qTX7k ,T qT Rr! R?kTR`ZE@VvC;@@@@y" _q >T! @GxaTRKsZE!LEb@W@)MkD!R!dF"yH`7*R F!\B `F7RRk@_m@T`Ss B@}_TT-@%T96D/s BW! @!@!!}!6TbJ96 979? @TdE@SJLE@2@9<q T$QqT @`D` @ @C(q(TBC7A? @q`1Tka@[ca@"@9"'6 $QqiT_6@`@_B!RdFCy7 @B4 @7*Rs F_B 7`@ @q! TvC@@@@y q`3T CA@9@a' 6!F!@!?m<TA@9!96A@ 5!R_BdFCy`@w @@;c"R @`dcC!XE@@R` RڬrT`_8(qT RB :!E@`CcC @#M%Tk @ @_@T%@09079@7 @T""?#-T@@TCQD9# #T @@TCQ9?T#@9{F* T"@9bb8`!D9`Tq TT#@9sF*?iT@9dd8bBBD9"_TqT_ sE_&T`@9&4s<RK8LGR8E3&E@8@63@{@9@94RLG{jAT9 s_ T`@9`5sE9 9 9@vC_ᷟ@@@@y q?kT@cCkD 6RR&rT a@9 @xITaR$jT? qT?lq!Tl{@h{xr@T?,qT9 sE9@3ܫ3@ vC@@@@y qT  CA@9@A 6!F!@!? TA@9A6A@ !RAvC C@@A@9'7A@97!@@ C@@cCA@97!@@  C@@cCkDA!$Q?qhT?T #@9c?79TsER3oo@3@9?T#@9  @*1Tk @vC@! ?@q@T@@@y qT CA@9@ 6!F!@!?lT"LvC@@cCE2@ޢ@`cC9&AR R B )!`)B\B!R!dF@D#y`cCkD!R!\BdF#ykDc!@^!@7A@97vC!@@o` @ @-"@R"@5cks !ks֛sks @} {SvC[cA!@ C@# @ @9@ qVxc TF@@8@8F@T R! #RRw"Ҧ @ @A,!T ?q`T RrB  R_kTBRҚlA@94 !##a@R#4D$0r|SD q`@9RjT RB* vvC C@@SA[BcC{Ũ_@# 9_ 7 @7? @qTX67 @@"_(qT7  @q@T @ ,!T ?qT Rr  RkTRI#@!$Q?qT+8 @#@ R!@#RR[@@ `!R!lA @95vC C@@R@@dRR@ lA@952@9$QqhT @ @ @@]a@R!4D#0rC q#@9|ScRjT RB* v#@v @`6ڧݡ"RvC!@ C! a@SA@[BcC#@{Ũ_"آ  $Qq)T @tfM7 @@g @YZ`RraT#R!@BlA! a@@9`5vC C@@#@2 `R!`" !#v !# !# {,DS[vCBG@!Af C@D@s@ #@ @@@y vxd0R#0r|@E4D@D @9qcRjT RB* F@TvCv C@@SA[B{è_"P {S` C[vC@!AD@@#@ @ @A,!T ?quxdT RrB  R_kT@lA@95aҢ@R#4D$0r|SD q`@9RjT RB* vCs C@v@SA[B@{Ĩ_BRlA@9@4 !`#!{Sb C[c#vCW@!A@_#@ @ @A,!T ?quxdT RrB  R_k!T@_ @A,!T ?qT RrB  R_kT@lA@9@5Κa@R!4D#0rC q#@9|ScRj`T RB* vCs C@v@SA[BcC#@{Ũ_BRҥlA@94 !#BRҘ0{Sb C[ckX@vC!A@_$@ @e @A,v@@y!T ?q"xeT RrB  R_kT@_ @A,!T ?qT RrB  R_k!T@lA@95߾q`T@Rac4D$0rD !|Sq`@9RjT RB* vCs C@w@SA[BcCkD{Ũ_BR;lA@94!DF!vUBR-Bè  c0{BA[SvCc Cc@!lA4DB@c @@!@9Wxc9aB@"@' @A,!T ?qT RrB  R_k!T@#{`k#8@7vC C@@sB'Ha@A {@SA[BcCc0_BR#بYvC@ C`@@;{cvCS[k?R C!A@BS@d@/!@ @@9`@r8xbTt"р @ Rr R! r?k T@@*`_ @A,!T ?qT RrB  R_k T@@+`@@?RT!рja8q T!lA @95*1a@R|Sc4D$0rD qc@9cRj T RB* x5vC C@B/@@A@SA[BcCkD{ƨ_"уjb8qT+?!T9R!lA @9@4 !#iCBRA+@`AR*ѧO{[ CSc#vC@!AD@ @B#@A@/ @ @A,!T ?qwxdT RrB  R_k T@@+ @@?RT!`ja8qTlA@95@Rac4D$0rD |Sqc@9cRjT RB* 75vC C@B/@@A@SA[BcC#@{ƨ_ bj`8_qT+?!Ty8RlA@9`4 !#CBRç+@W՟{S` C[c#@_ @A,!T ?qT RrB  R_kT@_2@9$QqITR5@@ @@@@@`@@s CtC!@w@SA@[BcC#@{Ũ_֠ @@6BRsd@a5!Rs C@!tC`w @SA@[BcC#@{Ũ_֡ @ #!@?@!@K{cwCS[k@! C@9r7@aTD@ (@7!@ R"@9v_2@9$QqTR̢@@@@nAF `z"qT@@ LB @!B9a 7@9 5@ T" zz"q``TwC@9 C: @SA[BcCkD{Ũ_ @@@@@ @ !%RB@_BB@B@͕؝@a5!RqTwC@9 C`@7SA@[BcCkD{Ũ_wCq@ T9 C@``3 @SA[BcCkD{Ũ_R҂Rҽ ,@ qzwC9 C@3@{SvC[b CA!@V@@@! @xa2@9$QqTR.@@@@Ȝ@Rc4D$0rD qc@9cR?jT RB* vCs C@v@SA[B@{Ĩ_֠ @`@ @@ բ @ !%RB@_BB@B@GR@a5!RvC@s C`@vSA@[B@{Ĩ_ {S` C[@_ @!4!L ?qT@@Ԃ_2@9$Qq)TRɡ@@@@s CtC!@u@SA@[B@{Ĩ_ր @@@@@ @ !&RB@_BB@B@@a5!Rs C@!tC`u @SA@[B@{Ĩ_ARe{S` C@@2@9$QqTR{@@@@s CtC!@u@SA@@{è_ր @ @@@ @ !@'RB@_BB@B@@a5!Rs C@!tC`u @SA@@{è_ {S` C[@@2@9$QqITR3@@@@@7@tC_!@s C@u@SA[B{è_ր @@@@  Ղ @ R!(B@_BB@B@Wb@a5!Rs C@!tC`u @SA@[B{è_@{[vCScks!A CFB@dB@@!@w@B @8xb- Tҩ:@R"$*"5BFEA@A@?h @T|@@Ri|@R~@B4D#0r qB@9BRjT R* vC C@@sB@a@AASA[BcCkDsE{ר_|@@R@|6vC C@@` @"x {cwCSS[k!A\CB@ĂB C@/@!@B @u@9xb@ 7EZB R1T@q! T@4@@?R1`Tq|@TW@G_1`TDr@cAqT*_y2@BA@ @RB4D#0r qB@9BRj T R* ! F@-TwC C@ւB/@@A@SA[BcCkD{ƨ_GARY"Xj {[Т CScks3Y@vC!AĂB@@_"@@? @c @!4!L ?qXxcAT@@*"_A @!4!L ?qa T@@ @\C@ 7ДE{B &*1T@?q T@4`@?&*1`Tq|@M Tw@G_1 TDr@cAqT*_y2@BA@@RB4D#0r qB@9BRj`T R* vC8 C@ւB?@@A@SA[BcCkDsE3@{Ȩ_AR<'\C@6&*AR/GAJț  {,DS[cks@wCDGC@!Ac@}BB@E@_!@b @ @C7;xb#TR Rrr R@ k`TRu?@"@BB 2@#TY@"@7@ qT @BB 2@? @Т@"TG@7@nA}Ӏ@9`5Ö#*E!R#R7@,qTR^1*1TqTv6#!@R7!`R@qTR*!*1T@Rj@R7@`R`Gw@?1@T#r bBA_qT*?y2 СA G@7R@* T qT@qATޙsGA{@``@RB4D#0r qB@9BRj@T R*`a F@M TЛwCC@<@:B_AA@Aʁ{@SA[BcCkDsE _y"@Ja@GRB4D#0r@# B@9q@Rj T R!*a` F@T#6@RwCC@<@@55A@/L@RΙ@R 7@`R`GAq@@@94 !("c *=R"Vg@RV6wC6*~S@@907` `T@*7@ߠ`@AR+ @",BT _qT Rr!  R?kTBR @*m@* @! `@{,D[ScksФvC@coAE!A@GTb@9 C}!@ @@8xdz@" 5^vC@@9 07@ TRR@97DRG$0r@#@9D @qcRjT RB* F@ TvC C@SA @[BcCkDsE{ƨ_@@AR @A,!T ?qT RrB  R_k TBRҨRR@@"RR@`@"ҙ-ϟ<7DR Rrr R"_cT@ @" ! _q`T?k TBR{ RR Rrr@94{oAGa@9@4 !(z{[СvCSA!@ C@! @S@xa5R#0r|@E4D@D @9qcRjT RB* F@TvC C@SA @[B{è_Ѡ"4 {R[ТvCS!AB@ C!@C @B@9@_ @6xc@Tb_A @!4!L ?qT@@@4@R|@c4D$0rD qc@9cRj T RB* F@MTvCv C@@SA[B{è_AR`" {[cRvCSA@ C@" @!@9s@! ?qxbT5F@ Ts"RlA@9 5**a@R!4D#0rC q#@9|ScRjT RB* vCv C@@SA[BcC{Ĩ_`_ @B4BL _qaT@ @`@R  @!4!L ?qT@ @lA@9@4  !)AR**@@9! "kD{Ψ_xB!8@!7 6wG&E@8@a׏6$@RHGR Rbd@ @CW6R4ec6AR??@R 4r @` qT??@ @o ?O@@ RG~?@9RK@b@TB*@@ 0L_kT@R?j?q@z` TvC@CC@`#;@`#@`C6R!4ra ?qT??@ @qA,@? q!w=wGPBR??@[@ @X??@`C!@@#@B`@@c($$@A!??@@@?@Kow&E@lA!{C{@C@<?Q@r`?@TlA@9/`@?@RTB҃R@?@K@Wc*cTB`@&xwalA!4D@9 9Scs3@ {`StF C@3@-TuvC@@ C @SA@@{è_"x {`ES[@5a` RR!DG!@@3 @ @s"`@yt b@9|SXqt T_q! Tba`BF!EC!@B@_l Tdce.@$E*f @cBt@@c@9`sT5`D@@@Sa@ R?j@Ta @?q T!Qa SA[B{Ĩ_`C@7_qaT@@` 7acU!@C| T@5Rr`T P7@7 X6 @R @6@@ @6R??@RRa@RrR ? r*`T?`B@?q@@RT5R@ @@9q@@??@ {`SstavCA"@@B @ 5xb"D@@!@!BR D@@@T@ R?j@T @?qT!Q svC@`@SA{è@_L@RrR ? r*Tj@@{` RStDB!@@3 @ @s#`@kTbc @9aBBc!DC9bD"`a@yA07`"@"@?qT!QDag:@f!LDe@dcb,D((@gFPC c$EBE @f*@i*A!Qh@Hi SA{¨_*@?q T!Q`{cw*kvCS[v@D@9sr4@T*@7@ R"@9sb`D)BC?kBU@@*T!" Rb@!| hi`d RMDdh!8A,D9)Ggfebtd@c!@)@!$E ˥PC!BBECF)D F@@(@ G@E@$@AaG!@A!\@cvC|b؉clF!@ĉBBc@0C@9%R!@@y֒Dc! SE9!*y@#(@8#@C| ((6R@9@6vCD@SA[BcCkD{Ũ_`D@@@Sa@ R?jTa @?qT!Qa ="D@"@.@ qsu?a@RrR ? r*` T] `lF@E95{R ssvC`@@@`@ @{¨@_`@> {`ES[@ 5u R`DGB@@T @W@~!a b@9 _qa Tbv`BFĂECC@@,Ta`@!B!@k Tbc @9aBBc!DC9bD"`a@y07`"@"@?qiT!QDdf:@eLDc@b`$E&(@ւEdPCc,DBFg @f@f*@e@dFjt8p,q@Tu@`" @DBQ" @@@Sa@ R?j Ta @?q T!Qa :SA[B@{Ĩ_*@?q)T!Q#Rmva`@!B!@kT`tC@@a@RrR ? r*`Tb`B@?\{`aSt,D[uD!G@e@C C(@)@F @@& @6*L*kTQ R!K|"!#@9" _4qTATS 7 Ru~5@9_qTiu8R $q! T$@cR@\@*$D@@s`@9 ?(qT?,qT?$q`T@ I Rs" t 4 T`T`@9 qaT cT " C`&@@\@6SA[B{è" R ,qTSA[B{èSA[B{è,@ qT(qT96qMT?T@AR @_j`TRSA[B{è_SA[B{èSA[B{è CARG?{@B=B< B!"@>@  {cwvCS[vuk@ C@9r3@ATD@ (@ 7!@ R"@9xgE@@Y@ `_@!D@`@B D)@?k*T!" Rb@!| ih`dR)Gdh!8MD9A,Dgfec@d"@!@bvC!cE!BFBC$E)PCF@@a@@(@@a@d C@SA[BcCkD{Ũ_9"@"@x ,@gE q@@Y@R@@"@@ {` RStDG"@@S @A@s#a b@9 _qaT`Ca!B`@!@kkT`b@dE@@ @"@?q)T!Qg`DeLDdtCcba@@f,DPC& cFB$E!E@!@i*Ad*@Qe@Id%!@SA{¨_#Ra`@!B!@kTQ R҃{StsvC[c@a C@9r7@aTa!D"@A(@!7B@ R!#6@987_u@7abU!@C| T@r T P7`@7X6 @ @A6@@ @6R 4##x`DB@@D)?k*T!" Rb@!| ih`$R)Gdh!8MD9A,Dgfec@d"@!@˔vC!cE!BFBC$E)PCF@@a@@(@s C@a@w@SA[BcC#@{Ũ_F"@"@@@@HT @@9qT  q TvCs C@x@SA@[BcC{Ũ_A,@? qy`@`@@(q { RStD@ @@*$"@9 7u*_qG@ T`C* D Rs~"@`@hs8?rT7a @eGfLD "dcba@C,DG cFBPC!$E@ @ @e  @)(@`J!@SA@{è_`E@@5@@SA{è_#R`B@?cBB ActC! @ c@c9qA{StD@A @ 7 RD@ |%h`8 qTec`d GcC@B d@`@kkThfedMDc`g,D!Q @PCEG Fc$Ei*Ah@ie*@f@@A SA{¨_#Q*c%Q1TdY8 qAT?k-Tv RD@A @@@33D@A @@` { s`D@ @*( 7 R@|!Aha8?r!TklT` RaG#!C@@b " @{¨_7@ wBsD`@ @@@ n { s`vC@9@B7@;]svC`@ @{¨@_ր;TsvC`@ @{¨@_  @{[UvCST@ CC@9S@!@C 6@F@T! 6 C@@9@6SSA[B{è_`@9@6s@`B@y hq TSA[B{è_ @"%@ {S@ R'Wa@d@CR"SA@{è_SA@{èAR@@AR@ {[VcW CSSvC"@@aBU@"@'@9@A7@ 7ҠX6 @ @A6@@ @6R!9=R" R@ @a 7AbU!@C| T@rT@P7@7X6 @ @A6@@ @6R4vC C@@A@9A 6A!F!@!?TA@9A6T@  CT@sB'@a@AʡSA[BcC{Ũ_L@@@@(T @@9qT %@@A@9!7@-"i@~ {BcXW CS[Vks@vCBA`_@BD@b@ @% @b,BT _qxeT Rrc  Rk!T@4@9raT@D@@(@7B@ R#@9Y oA@95 @9 7{z@Z Zh `@95qT q TZ;oAZF`@95 aR@@@ Tv`s"@AAPiT!A @ `@94RR @Rl @?qT!Q A1!G Trb!BA_qT!*y 2@A@9oA4D!@99ZZ @A@ q!GA" TvC C@@B@@A!SA[BcCkDsE{ר_BR@d"ҟ  lT;A1!G !TA!A @,@Y q oA@94 A!@vC@L.qAT@vC@ C`@@TЗBECc@c` b@B@`@F@-T!oA @94R҂RB]+Z": O{STЁvC[Uc#@ Ca@9@A87w_ C`@ @73raTDЄD@(@7@ R&@9sX7!87@F@`?֔vC@@SA[BcC{ƨ_ARRu`vC@@ @a@9 @`@SA[BcC{ƨ_&@lA@95TSДBsBE R!@P`@AR9'/SA[BcC/@{ƨ_֤,@ qs_6 @D @$6B@B@B @6A# RR!@!`vC@a@9B@#R!B4D!)DDC9 Cq6@TqTvC@ @906ӂ_BRvC@@9@06"`@@7vC C@9@A6@@@y? @TA!,D"@B"@@! @A@xa# @7@@s"ѳ@F@T" {7kTs#@a|@A@!tCB!@!@{@,DS[UVcW@G#Ѣ CB4@@/S@}!` T Tt@XWЀ@`7X7,!T ?qT Rr  Rk T@@+` ?wC@w C@ւB/@@A@aSA[BcC{ƨ_@F@M TW3 X@<@@_6@G@ @D@@4@T @ 7_7p6@@4#RCACR!`B$#@X@wC3 AWЁ@@$ @@xd!@BRC+@`@_6AR @r@RA"Ҭ@!R?@@b@@_666R#{@[VU.DScWkGA@B%Ѥ CE@/c@"@b  T@`@X7,!T ?qT Rr  RkT`@@+ @D@@3@3`@@7X7rT,!T ?qT Rr  Rk T`@@+`@Rҹ ID@AtCT A@@ @!@xd!BRC1+@4` @A"R! @@5X'E@@@@('E@$@{@F@@T.DA!C@!@ TG CAR@BCx @@H@AR Ѣ@RC+@`@_6R{@@|ARACR!`ab {[UVSDcWks* 'mgIgf@B C @&@WZ@@B HDXY!@*Gb@?@@)F!C C@D3@@!@! @!}d$@@@}s!@_ ,TAB!,DBC @B@  TG!@a!C@ `|"7 5 C; 7fa!2D C@@"@ZDqGC@@c@a9F!CaA@!@C@c@c @c}$$D@@@}3A@AT|@ Tc˟T˔}! a`" Ca@BtCW@@A@@SA[BcCkDsE'Fm{̨_֠Q?csO) <"!}G@#4T@G@6" _q,TK@"!@C5 wow@T?@ C%;'6SsjG! 4D`b}ӁB`BIu fw?Ow@?@iARRw@a@w@ "w?\w@?@Sw?w@?@@ {@A,DcWSX[UkYsG@s@CwC@!A}sCd"Bc@@?|@% C"@c @@@?$qZxcT?(qT @qAT @@[a@ B9x 9`@@`@ 7T @@ @A,!T ?qT RrB  R_kTBR3i3@;@ CҤrG@ TBA@@RB4D#0r!E B@9qBR!j@ T R*@A wC"@9 C!@B?@@AA SA[BcCkDsE{Ȩ_` @dB @A,!T ?qT@@B@;!R33@TVEJ@DRCӨB"wCBE@B@5BB@B B9 CB@!A`@R3@3@@ R7cJF@!!$E @ !@?@!@{[UVvCS C@4@@9 @ T_S `2@9$QqT!RrBB@`TvC C"@aSA@[B{Ũ_@AF!F@3@ T`2@9$Qq(TB` @@@`6!RiSsVE`z@SAR[BDR@{Ũ"!R@rBrB@T@F@"҄ R'`z'@{[VU CSc#B9@@/3__`2@9$Qqi TR@@ @R92@9$Qq TR@@` @R*C7S@A! W@ w@!@RR@ @`@@` @9`@9 @a@!@@A CtC!@!@@S@`@@`@A C@!tC`  @@B/@@ASA[BcC#@{ƨ_ @ @` @@W@ {[UvCST@ C@93@_ @Ta@"0@9B$Q_q T@vC@ C``@SA@[B{Ũ_BB@B`b3@SA[B{Ũ_!@7@A@ @ A@xcB7@@ @C@R|@c4D$0rD qc@9cRjT RB* vCv C@@SA[B@{Ũ_֐@/!RW`TVEv@@a"SAR[BDR@{Ũ R 'v'@ {@[UvCSTA!@ C@" @!@9s@? @xb@T`_ @!4!L ?qAT@@2*@lA@95@@R*4D#0rC q@9RjT RB* @F@-TvCv C@@SA[B@{Ĩ_@R *HqT@lA@94!!@IAR" {kY!wC[USSB!@@?b C @9T@ @@Tcr_TB_2@9$Qq)TA"R9wC!@s C!`t @cC@B?@@AʁSA[BkD{Ȩ_@@`T @ @+@ `@ 7x @X ` C;ZA@ ,T q`T Rr! R?kTBR;@a@**!B94a@ @ b @T!B9*4s CA9wC`@!@!@`cC @+@s C@9wCa@@"@` a@@cC+@@@Z @@;+@!RESsVE`r@`_RcC+@ R`7`r7@c+~ {s[b/DS[VUck3@@GC C!@}3\@Cx@;z"@@,q`#T(T$qTA? @q&T(q`'T(99#` @ZC$5` @R@""R;:W?ZD?@ @ @`,D@@DB TBG#@a@C@!@ˌFC<{/D@ C!@AD@BCi@c@) @c)  @)@9 @9 @hc@@(T!B@!Ca#7F@_ l"TCQ4c|}aBc &# "h`h T9@AR C?@Y(?@g0qT@R"jTR9ZC9` @4WD@ @D@@DB TBG!@C@?@c@ˋFC|{/D@ C!@D@BCi@c@) @c) i @)@< @< @Gc@@TB@!Ca7F@_ ,TCQ4c|}aBc # "h`h T CAR?\1?@D C@@@S@!DG@@c@B˅FBCb"@C@"@B@B @b "@B@B@b "@:4&»` @@ T&RAG@;@@tC4  C@SA@[BcCkDsE3@{ɨ_b76!@99x2c @` @`X7?$q TP6`@@  997 @@ 9(9@ A9q T9(9#@@ABx^%3@9,QqhT ??@bCc@cARRG@ Gka @RҚ SG@5ARR(!@?@  R"G=GG@A@&@9(9# @iA! B7@7@@"D@!Y! B<@9BR@"R!? |A`|||||||@@@xC! 2@ @@@!@@@ @ @@]Rn O@<@?qmT@@  D `=?1TT@@@{ST C[cV@_`@#,Qq T @q T?(qTa@7R! A9?q T7*`@?0q@TA@ C!tC@!@ @SA[BcC{ƨ_7R@6*k@`@ @@!R! 0@9$q T @qT*kDk`@?0qT@R? jTa@!@Ax`Mf#$QqT7` @@`@ R @;*!!`RkD+@ @@AB!,DBC @B@ `TA!G!@!C@A!F @T<! @!Q| C!Ra@kD"+@n@AtC!@V@@u@A C@!tC` @@j+@<"t {@CS@@`@",Q_qiT_ @qT?(qaTa@5R! A9?q`T7@A@!tC` @SA@@{è_5R`6* @A!tCSA @@{è@_"$Q_q(T7` @@`@ RY` @{RaST c C[s3@s`h_{R6ւ"Rk V4X.DC @B@ TYB!GBF!@a!C@@T|@4L q T@@@ 5{`Ap@rTU@uAR C @S@#S@`@@5.Dz"C@@@ T9G!@ZZC|nW` Lu CAR @@@@`@`5w@ CtC@SA@[BcCkDsE3@{Ǩ_ "R@  *`Af Rfa@R RAR`4w k{ k:9AwCS[#Rc7sA C"@!;@ t@B @bB8xb@w;@`@`7r@T!Rj T@P6`@@k֢9##T@bc @`7rT H6 @@ `T^%g#a^8cb^c mg|@Ҡ@ @rT@@"# cT KrSc@;;@*f`j|!@ TBRa`j| @ 7#c`T @ @kLT@@k" TBK?8  kT@` 7@P7 p6 7@X6a @" @6!@!@! @a6rR??@@@R!4r qT`@@"@R~@B4D#0r qB@9BRj T R* @wC@ @9raT D@@(@ 7B@ R#@9Cz T  CBw@@ @ SA[BcCkDsE{Ϩ_ @6;@Rr`@R `@R`@@@>`@3GG@G@@@|ggH3S@%gBO@a^a^a)`A`&ZwC3@A@Rss@%s @s@33_!@!FB#@ a@?qT!Qa_#{#ctCS[c8k`@@9rATD@ (@7!@ R#@9`@\@(7D# cC4@BD)@?kw@j T!" R+@!| *)`DRkGdh!8J-D9)MD('&,d@.D!@CC@؉ҌEc%EcBF )PC@ω@@@(@-F4(@8a@@!C!|(FjF!@,B@y a @b@!a A`@!A`,@@!`@`@$@?qT4a@ $@!`@@"jFaaBA!@A`@SA[B@cCkD{ƨ_/U"4@/@"@/ /@~ ,@ qv {[5vCS4cҀ C!@@ @9@4x_7F@@_ @qT F@ Tw"4`x3@9$Qq(T @@vC C@@SA[BcC{Ũ_R$Qq(T @@B@ @ @qa T$QqT@@@@ @6@d@c<@1@TqT@ T#'RB@R( @F B@A"@@9xh@BZK@ T#@"F#R@Q @7 F@-Tyw"#@1T@"m~ { [56vCScA!@ C@# @ @9@ rXxcTt_2@9!$Q?q)Tr!T$#"lA c4D!'@9d9y @@@a @ 9 @@@K4 @"@BGa@9Wa8)T7@ @T @a@@@ @27vCx C@@SA[BcC{ƨ_!!dB4@2@9!$Q?q)T5 F@T"Ҍ@7erT @ p!"RvC!@ C!`a@SA@[BcC{ƨ_ց @7@ 4@`6!R*vC#9@"WE4@9r@`@aT!!D"@A(@ 7B@ R!$4@9*R׵ qTvCSA@[B@cC#@{ƨ_!!dB4@4&@xc @z@B9qATDR*RDR  C@@?TB€R{@ 6i R@+_y9WE_@+@ cA,@? q@T$R*R$R F@T {S43vC` C!@@!@9? @aT!!F!@!?T!!F!@ 0@9$QqT @@c@u4@ @@vCs CdB9@bxb9SA@{è@ vC@s C@@bSA{è@_A_ F@"=Rܺ ` { Rc7DS[5ks<wC@#@ @@v@@ys""z*@@ @@?6q5;@5t@Gg'@@@!@T! t !GB"@@`@T kT{.@.a @?qIT!Qa a"@hFA!@"`&@&BAA@A`@!QA`@?q)T!QD$h:@!ЄLD'@&!F%(#"Љ@,DPChFc$E( BE$@ @i*Af*@!Qg@iGw@ T6q"`T5"@V@GA$@@@c@!A$aBraT @"!еGBpE!CB@3SA[BcCkDsE{Ȩ_!!8C!@T`/@@`B9 6qmTGQ@@; @@?Q1 TbAR77@`@TcR"R! Tq@Tq@TqaPT Ղ@8_qTR&R@8_qTRR_qR TT?xqB)0c4@ U@e4@ V?xqRTDO6q@BT@q_k!TH?(qT@KFq@?T`T@!N@ @C@28aB@a0 bTGB!@8@#@ @a @;7 7$E@8@78 7@:3>3\ {Ss.D[cb@G C@@w@}$ T  `YfER@@"@@@@ @5@@IPCF`@@zx`@@7fEx `@A@ @@?q T!QA@` @vC` 3 C@ @@y qT @SA[B@cC{Ĩ_ARz8 @!E"@B"BbvC@ @9raTD@@(@ 7B@ R#@9qT C @@SA[BcC{Ĩ_@,@ qTF@MT" C@  @@V@@@"ҨvC@ {[svCS`/Dc#@@ Ct@9 _r\@aTBDC@b(@"7c@ RB $T@9q"@Gd@ ˄Ck@zT`/D@S)K?kjTksKs x@CKksy~@%7!F!@!?$Tg/D` @@ @ 3&4Q!!} Ղk`bh ?T`/DkD@S_G q@S3s" TqQmT$@a``T$!FE!@@?, T{/D`@)_k,TUPCRGa@@!xa`@7x `fE@A@ @@?qT!QA@` @vC` C3@SA[B@cCsE{ɨ_``@ qGa_!Q`@@ _d!KS Ta!q3vC C@@SA[BcCsE{ɨ_֋b,@_ q T4R k|@:FCCB@@`?T9E!@B:_TA@C@B}xA(Qk@  Bk@C@q!F @@ TY * `j:!@!@Z#?kB *Tkz("|} @!7AR# )''G`j:#M)@!@ Z#?k*TEG@B@|}Ӡ!}FC@@8XTA*#@ Q !Kb`?qA @! 2A TkD;vCRBA#0r@!|@B@ @4DTxd@9@BR qj`T R* F@mTs"t_AR: @%'RTRk7`/Dk@@@_kk@@@@kDS_kkk@B@X"!@C@X8 TkD {S`vC@ @9raTD@@(@7B@ R#@9 q T! @A@xa@`7bU!@C| T@rT P7@7X6 @ @A6@@ @6R4svC`@SA{¨@_ @SA{¨_ր@ @HT @@9qTsvC`@SA{¨@_ր@@s{S`vC@ @9raTD@@(@7B@ R#@9 q Tc C[AU@@ @9# @@Xxc06#9B!@ 0@9$QqTcR"R!@@@!4!L ?q! T@6@ @!4!L ?q T@@#@4svC!Ab@@B@B @xb:`@9 74"`@ C@SA[B@cC{Ũ_ @SA{Ũ@_@ 7bU!@C| ) T@rT`P7 @7X6 @ @6@@ @@6RM5svC C`@@SA[BcC{Ũ_AR @@ @!4!L ?qTAR @ @@4L qAT@@!@#@!@?#@!@`@T @@9qTARY!@!@!@@@ys {[vCcS CkB!@C@7@ @9rt@aTD@@(@ 7B@ R#@9 qA Tu_zBѠ@7@7@rT!5@?r`TA@6!7@@@6@@@@6@@T T? TF!C@!@ ?m3TF@? T9s}TSs"V 4p6@?r T @6@?rTG7)H6@|g!@0 ` T@!@@A! @@xavC@@9@069B!@ 0@9$QqTcR"R!@@@@!4!L ?q!T@4@ @!4!L ?qT@@ 4vCZA@@@B@B@B @xb CR!`<RV7ks8{[ЕcvCSs@B@O@987ka C9@ 07@;EG9os CDy@ @7 Rws"%s"=3@h{8 (q T$qb T@ 4qC T @C3@K@ o@@K@fJf64;@ 5D@@@S @kTaKc~@!Q Ras~"##c}hs8A ?4qTsAT*D@@ RB!O@@AʡSA[BcCkDsE{ʨ_ @ @A,!T ?qT RrB  R_kAT@@G @@; @9#o,qT!p?,q`TvC` @@@y# qT Հ! @Gxa`R@9 @@TQ{џ1TD@0qTvC` @@@y# qT!R?*?@?!T;@T@`5ЀD@\ @k7 R@@9xw#"=hy8a ?(qHT?$qT4?qTQ9џ1TD@@@hy8a ?(q T?,qATcp,qT`@a@@y# qT! @Gxa`R8@@9 @TvC@B@y ?q T @!G x``=7?0qT;@,4BR#3;@@906 @G@lvC@@@y" _qT! @GxavC@@906 @ @6o@G@ 2;@`> !R33@vC@@@y# qT! @Gxa_{cc!RD@!@"hs8!RG@!R{!B @94`7D@ @@BRG@C9!9{¨_ր0C@ BRaR!?`gRR@@@ {!BS[c#3@9 4!TA!@?q@ T@!v6a!?R}ЗИ RD CD@# @ 7`|3$@h`8 ,qT" !@9G?q@ TР @4@cCaR73@ bЀ!FE!@@?T @! BRz5`D@@@ @"R?j!T? rTsD`@@"@b@BRЂЁlF!FBE@4W@ aRWPAR2 @D@@@Ѓ@G@@cFBFC"@B@ @@ @@ ` @@@@  @bQ*B3Q1TDY8 ,qATk-TD R@ @@9"y`D@@@ @"R?jT? rTsD`@@"@" @B€RKRIB @`@dAR-@@?q)T!Qja!@&bR R*@!R]@kAR @@?qIT!Q`@ ZRF@\P {SЀ C[c#@__@7bUa@C| T@RrT@ P7` @7 X6 @9R @!6@@ @6R@` 7a@bUC| i T@R?r TP7 @7!X6 @ R" @B6!@!@! @6R} ?ks@TtC C@@SA[BcC#@{Ũ_֡@!@ R?hTR! @@9q@@9RTR @@9qtCs C@SA@[BcC#@{Ũ_@@@6 @@y{*BDF@(@@6 @ RA-G(@ 7( @#@)B$@`T*QA4Q 6,@qT@ @@{_ R%Ke@9! !$Q?qTJ-GF@FQq@!@$@@T R"$@? {SF[a C@5@-T"vC@97D@ (@&@7 R!@9qT qTs C@v`@SA[B{è_s C@v@SA[B{è_! @O7 RT@9@qTs C@v@SA[B{è_"ts C@@`v @{[vCcSBk@"@7 C@93rT@aT!D"@A(@7B@ R!#!@93@9? @@T_R  @B4BL _qaT@9R@A  @@ @_0qTqF@T$TvC"@z @@A@xc@ C@RRA  qTF@)TvC@ C`@@B7@!@A*SA[BcCkD{Ǩ_@TZvCAB@@B @xb`@`7 @@@@(ҰK Ҡ @@9B06@#R@&ga&@\4@9 $QqT3@$@@!@!Rz@9`(7 @@9 @?q@T!? q @@9 ,q`T @Sc`@@9R qAT!$EC!@@!@?T.` @!8@n @!F @T !XB T@` @$@@R^vC` C@@w6 @@:<@4Z@=A,@? q3@`!@!`DARvC9R!@!@9vC C@@S@R)!Ҹ@9/6 @vCb C@@A @` @k`R`?!@! z@y|SdqT"@ ARsSc@ @@}`@rF@96@ ,nb @`y$`Ё`%\"*@@@@?IT@@!B @BB 2^@ @Sc@H+&@R!@!$@!@ x`@@`@t @@@ECc@@a@@B @_KT?T!?(T@E"}a@@@*`@@ZE@@@+@'"ҹAR#@ Hc@a@+{[vCScaB#@"@'ҁ C@96@ @T_` @A,!T ?qT RrB  R_kAT@@!@# F@mT"#B$EB@B@dvC CsB@@'@a@@@aSA[BcC{Ũ_BRW#@"Sh { RsD[ck@G" @%@vCB($FEh$E4DE C@9A"@@ @LTE@5vC@@9 7!E @$@!@SD@" @ @q"T$Qq!T @@3!`@@ `@?qTkD!@6T C\@@@6*kDCGBB4C@@@@|}@!cXG!Ch F`@kKT,DBC@B@!? TG@{{C;a@!@ ?9FE!@@?TvCSA@@[BcCkDsE{Ǩ_ցD@B4@@D)kT" R@|%)aRGh xLD ,D@@a@!CvCEBc$E)FPC9F@@@g@*@ @@9@@ TD؉ҡjF@ʼnkDd(@:$@a@!C!|a(&a@!`@"Ra @!a yE CBBG4C@@@@|}@!cXG!Ch F`@k+ Ta@ `@ ``@`@?qT$@`@`@$@jFB@Z CAaA[!@`@SA[B@cCkDsE{Ǩ_E@4B@?փ@@c@@SA[BcCkDsE{Ǩ_@9 R?j Tg77@"g@4@"@[D;9&.`? {[vCSc@D@9r3@T`*@ 7a@ R"@9aD)BC?kBT@@T!a" Re@!| BRJGh!8)MD9a,D)@B@!@vC! cE!BFBC%E)FPC@@b@@(@@a@SA[BcC{Ĩ_[`"D@a"@`.@ q{SvC[@@9sraTD@ (@7!@ R"@9snF@E9@5ckֆD@9@@@V@ R?jT @?q T!Q @DBC7@BD)@?kV@j T!" R@!| `JMDdh!8A,D9kG!@J@vC! k@!BBE %ECF)PCF)@@A@@(@@A!@ DaGB@$!@A!\@nF|$RBB@0C@9!A@yDc! SD9!*yvC@@B(@8 @SA[BcCkD{Ũ_րSA[B{Ũ R{ @@@977* R ,qT;@@!R;{$@9 R R{O@;@/S@fq`@[@TB@y q@@zT_@`D@ @kT`tC@Ru@gUu@5_6"*,@Ra!``D@ @kTs`B@?րRgG`B! ?js`D@(@@7 R~"h`8 ?,q T`< 7 @?k T |"h`8` 4q<T!Q""CY8e 4q;T!Q?kATa`b @!FBEb !@@?T @kT R`@~!LD`YaGb(,D`8Aia@!CBFPC@#+@&@ $CG@!a @!B!@kTAku8R qTb@@@ @ku8 $qT@\@64#@ s#7@@9aR=-,T`G@F@_ ,T@G@ ?8 Ts@5 @x|`@5?@ x<TAku8R q$Ta #@!hF<@ @@asDi*,Dhg%;@b@)C%EAA@F @+@!) @Q? AF E(`"T`dcKGG@B@cCBC"xa@!@ ?x`@ @k* 6`@_@SRO`D@R*^`D@ @O`A@@ T @7@@FA! A @"@#ha@\@x7S@s#R`@j"R.R@yR q T`V@!p '@!S@@` '@@?qT!Qb@:aRS$@;'`@`@ Sa@ `@ `` @a@` 7`@qTqT*b`% @aB$Ec@EAb@!hF@``x` @b@ku8(6@@@?q)T!QfET @@" @@@@T! T@?qT!Qss&F`@`7`@aK@m`(G@aR+,@|@ s`1g`@@?6`R``,D`C"@@B"_T`aG3CARe@c@ccCC`@ `fE"/@@@ @"?/@?qiT!Q:fE@@ @?@Rr@T `@`@eG@GG@b@`b@a ! `{G@?kvib@`{@B=Bd[ {aR!tC!@!@9? @Ta!C!@"@A @!4!L ?q!T@@@a!B"@9B2"9ZARa!B"@9B2"9Q Bc`c$EBc@T`<@@`D@Hi R R R)C!@#7c|-,qTdc@hc8 $QqT$@"%@@@ T77_qT_ qT?+`Tkd @_qT`G@_ք77`_qT@$@@kaT_ք ,qT,@``0G@@@<@@_R{a[uРnFk!B@"@oE985vStvCcs3@@9!rwaTD"@A(@87B@ R!#!@9!wa@9"Ca!hE[@!@z#(6_GAA@xw @d@ @*P7`,T qT R Rr` k4T@@[@bB 2 @05R rA9T`lA@975vC`BRB!@@ @97qRs*`&F@@6&E @$@05f"RCd@ ?@ |@KB?@F@ BC@AC@!RA$Dg;@` D)kJ&T`# Rec@|!adRLDbdh 8`!,DgA9fBG9cdХ@!@B@!vCBcEBC&E!BF)PCaЄF@@b@@d@(@cТ@ !DbG!@$A@A!\@|aеnF؉!B@0"@9ĉ@@yDB! SFR!*yb&F@E@"(@j8"@C| (@Ta`!AC!@@?@TB@C@@CcG4R|`@\@@@;@[T`uМ#BBODVC@~@8`X%T@@!@ ?O@@`Ѓ~@@xBSAR|||$? @(C@S@ `f@CA9G@r`s&FhEa@@ T@ ,K_kT@R?j?q@z T`ASAcCsE@3@a!Bo@!@AA@19@tC, @B@' @B@"9m@FBA# @`!* R3R{@9@HӀB89@ 9@HӀB8y@9@9! @?q ?T!Q!  @_B@ @vB@ @B@9@hFNA! @`BXB @!FDA9@ATcBy 9@#X`6D!9?뀛BT@o9@EF R!A!@: Q7@ BW 0q@T4qT,q`T.@D@! ҟD@?qiT!QA@ @2 Z#_TE@@ @!?TR!|rja$T?,qT) T?0q T?4q T@\@@x6b_?BbT?@@@\@x6@@=?@@[@ \@2 \@ \@2 \ @x2 3S!A!@4|@c4X# z ѝ" @3aB9m@ 8@6C@A@ @@?@?q'T!QA@ @cB?H`$@q?@LBy8{$yTBFBK0!4Rr D@D@!!a`B,@fB@,@@@ @ @x2 D@?qT5f@\@@ax7@@D" B@@!!`BF4@fB@4||||||0D@\@x6@G_@@@@@@ \@2 \@@@ \@2 \$@D@! Ҁ`B0@`fB@0@@@ Rr @ 7@2 D??@ @0?a ?@ @*G @`@@@ $@?H]?@LB98;$yC@A@ @@?q$T!QA@3@ o!RjT! 6?0q`T?@ @ raTR!0rj@TR? ?@ @! @?qT!Q! 3@3@A@?qTB!QA@=??@`RG??@ ҀRyGp??@d!`B4@G` ҠRGaGG@"?<G@7B@B6CcҠ@BXG&@|@ x @@#k# +TrCAR9B9@Ё~@#ck B@B@?B?@@B6CfҀ@!XGB@|@E Yx @k*T2R?q?@ @?4qATR!0rjTU63@@?q T!Q/=?@ @@ RGw@`W @3@ w@#@y"iR! kT!@9?q!T @ W@@AtE ?@ @??@! @;! @?1JTA@6_1*Tb@lҀRn3@B@O}@A@43@?s?@!Fc@C @BBQc@ A@``?kLT_֩_ `7 RBDB@B@##@9!b _ qTT_qHT 7Q1T_{ T@@y $q`TdqT{_%D@'A&>  @_raTR_{ "H6@@A`RrT|g R!`IT!`T~ g!`Ta@ Rr!jT`@@R @@{¨_Rp@`R {kS!B[c"@G"T@@yBR *?pq$Q$Bz#R?0q$Cz<Cq⇟B*"4@T@9 6@3s@@906Z@@C@y  Q<qT  @C@JE6 4 q4sEAT`Tp5sE#*77@`@9`06{@sEBG@@AASA[BcCkD{ɨ_@v"F@T`C@y  Q<q T3@ST_T*k`C@y PqaT(hT_T@@y  Q<qTۄQ q4{_lT@9"6@B@@yB _ qT @B`ABxe4?qTB _ q 4B@ya?R"+R ?@qXzqBz 4@ @9qT B @9`77 ?R q!' ss4 {lF BtCRcBB@@e@*C{!lF9@yy"S4q@T@ AtC@"@ q`T*!@& RF@!E$@T@BlF!tC@@"@* @?!tC G@?lFBC!tC@BycBDy@"@c@ @{٨_?@tCA@ {SaB @$@_A,!T ?qT RrB  R_kT`@a@@RO7K@ @q`TR@q T!?&RRRsB_@a@AaSA{̨_BRgR+6RRv {ARSRv  @ b@9!RtB2b9yARtC@{SA{¨_A7 R*!"#@9b _(q T_,q T_$qTQ!џ1T*_cp,qT*_֣?7*_*!FE!@@?LT{{{clF BBRc@D@*kBC9!lFB@yy 4q`T@ @! q@T*!@& R@ RByq*CclF!By@b@!@Aʁ @{ب_* A@{SB[ @#@'A,!T ?qT RrB  R_kAT@ @@#)TbR@TsRjsx?k@TB'@@ASA[B{Ũ_BR#@@@9qT%TB€R!`7CR" lAR Rc 6B )!`)T @{SdFa CCtC!@@`B_M Tt C5@_@7bU!@C| T@rTP7 @7 X6 @ R" @6!@!@! @6RW s CuSA@{è_Rs CuSA@{è_ց@R!@ R?TRA @@9q@s C@uSA@{è_" {S@4 @@@?qT!Q@SA{è_{cBS[*@a@k Ta@y4 |SXq@TRdD!cBBDa9D`a@y07`"@"@?q T!Qb:@D!LD@,D("@hFPCH$EcE @g*@i*A!Qb@b U5SA[B@{Ĩ_*@?qT!Qw"@"5R a@y ywG@ @@@qTRR@R`*gR@@R҅RR *R@+* {SD[cks3(gu@b CBD)@?kB@ T!" R@!| `&RdGvh!8GOD9/D@@B!@BCE!&'E!BF)RCF#c@@@(@@DARctC?`@E?@Gh@?#H@@?TD R`G@{ CA @C@@3 %B` @ ``@kTZOD!Q`/DC@9'EF`RCEd @$`*@d@c@A SA[BcCkDsE3@{ɨ_?"u@@?@"@ @A @v Rl Rh {*cgwCS[ks@;&E!CB@y@?9#?[q:@`DT@9|2aBB,DcC 9@@a@@ QT!G"B!@A!CS@Ja@AD@!B!ҡ4@JB R@#4||||||0` #D\@!2\`@a@!xa @@! "3,@ @"A99`@X @ a@@R<(|@wCR'_&E7A"@@B@_`TW7@ @@0@9?0q@:TDX"B#@<b@"D@!B!a,@a<B"@,a?aRDd@d@d@ d@Cb @BxB2b BA,"B@<a@D@!B!a,@B<B@@aR.b_b@_b@Db@D Ab@_b @BxB2b  !B77@&E3DBB@y? Xq`T9 7D@@W@W@ R?j`)T @?qi=T!Q 77@@@ ?gq T@9` 7@{B x Bc@9|@8;@C@A@ @@?q9T!QA@R;@ RR!R@ Rr Rr @! ?k!0T@ @BPBR"@?@`#@C"&@'?@$@@+ &`[F@ @6|@B!CLB:!@y @@R"@RF@9` 6XB"`[F@ @A7@@{[F`@@xw@@@6@A ?aT?[qTlF@E95@ R5DG @!@!C9 5` B!R"@$C@9c2C9S$F@6B@y Xq"TA@!FA@@3 "Rc@,D*b`fRG"@GC#wC#C@@A9 aSA[BcCkDsE{Ȩ_ 6F"aB @92 9*?@8@-wCD,D RDCD@"@GE%c@@s @@!@e@Zs& BRD@@3@a@ ,T qT Rr! R?k@TBR@94g@ qTZ#@`@CR:SA[BcCkDsE{Ȩ_` @@9`5"!+2wC q@TD@`B@92fL")3@RrR ? r*T@BpF!7@@@7@@@b @6b@A@B<@B4!@6Ds"B#@r B!a,@ `R7H 7@?@$@ &kX B!ҡk@4@  ҠRk. k@G B!a,@" `R7 7@R@@Ukk@uAR*@@AR,D!CC@@c@@6@T!GBF!@!C@@TBC@RV% 7 7@ @@2" P{cGcBc@@GS[ksI*S|@`@@x@@@?r,@3*<@` T",BT _qT Rr!  R?k-T@C @*.TBRC@@sRr +7 Ro@rT7RqI T R 5_@z T`@7789 44R~qm!Tx?B*G@@A>SA[BcCkDsE{ɨ_ր@orT% B@)b@ D@!!a B @39B@ !F|BCc @B@ J+T!A!@;x `@ 2`qTaR! R4 R * *_|S@zT C@;?RdE@r@%@@ @@@;@F@ +TdE@E@@@?q)+T!QE@` @!,D` BC @B@ (Tf !G@!@B a!C3@bf@3@` CAR;F ;@qB@-Tx_@%7rT4L qaT@ @  C!FE!@@?lTp `@@6dT`@6R`@84,!T ?qT Rr  RkaT`@@C` @;ST;@|#;@s% `@6@2`@C@!P6`@9a@56R!5 !4@R!4r q`TBR qT@3@@?q)T!Q@,A @?qT!QA @<`+(xo@q@zAROaTBRK @Rr A6BR&C@@y4qTCRd6R!L mn`@p;@AR??@;@Ta@!(D@@&@ @7@aUC| IT @r@TP7 @7X6@ @6@@ @`6RG5%JR;C@EAR;:;@*@ @ TAR;;@3@ ` e!@;@Q C@RB5`R aBҝ ;%;@; @;@@;N@;@R;@;@@@@7G@@9qT' a@!`@} {lF!B@"@E9@55k CS[@t_@@75 Cr+T r*TW!tC!@"@@y!@9B !rT!D"@A(@a}7B@ R!#!@9!@B 6?Xq!@AsrT,!T ?qT Rr  Rka/T@ @@@[@9@4@XqUT[@TRXclAs@9@5@9qATqAT@9q ATqT @9q@T @Xq6T_3 Cc R_@G@@<@@K B@{b@ D@!!aB @ B@Т?|a w`3{@?G7@@?@?lnT?@"R\ @@@"7#X6B @A @!P!L ?,qETG@!3 K@a @C @>7qF@ ?Tg,D!C@@!@@GTo!G" C!@a!CzK@` @C97g74aR6 * Cq@6Tt|@ˀ"dxj`@:X6 @@?(q>T_ @q`kTqjT@@(X6 @ER @_ @q=T@? @q(T`X6 @0@94qT @k Te @ s# Օ @ k CFBE!@@@?L/T_@G@ @@@5ARG@R@ @@Rr @" _q,T Rr!  R?k@+TBRCV? @?qVT!Q  @?qUT!Q ?@?@62|@: R s@WtC@@@y! ?\qaT@9!r@T!@scGBR@_rTW@BtC@@@@@@y qaT@@9h7qWTW@! CtC@`@@3SA@[BcCkDC!B@!@AA{ۨ_RC\@@`_7 @a4r"TRr ?q#T Rr  Rk#TRc@TR &`@@!!7`@ @cTc @@@_8_q`BTR8G@@BQRc@`!lA`@!@9*`T5a @C yc@@bqMzTG@@XqgT*'C@356R]@ @?r TW@! CtC@`@@3@SA[BcCkDsE}@!R] X R! ? @qaTER !$Q?qT @@8@ @@@@KT _kjTe@X7tv R@XqLT@ cdCU_c@_@G@@5@HC@ҩ @RR go?kaR* Cq@lT@CaG R .A K@TB€RuF@ TBҗ%R? @qTsT w@"R& @@`:7B @R @@R@@U @@%R_ @qT!$Q?qhTZG@ @@H@RR} @ @]7?r7T@[@c@ARs@A{@ R!`)&E0URs@ RСB )!`)@Xq@TD@@@T@ R?j3T @?qaT!Q wW@@"tC`! C`@@3SA@[BkDe?G@|KG?@ @@N[@RR** @23@!B@B;@ C@@`DBR҃N U! B @@)@#AD"@B"!BR `+@⧀"@7,@<D@D)k"T" R@|" M6LDdR$h 8C9CG9g@EB,D?@W@ FB@@c@B˥Fc&tCcCPCBB&E )@@@ (@@@Ď*@d !DBG!@@@@\@~W@lFTtC؉ B@‰@2@9`@@yD! S*yZB@@#(@:#@C~6(_'&E$ CҢ@C9B<@r`TA)!>U;LA,@? q!@c@G@5@@Xq&TbqMzT@94_@G@@5@UHsRҙgRҗ'@@ (TCR"b"R@sBR%@6I |@%R%$QqT%RsR3R @R! RRR@ @R@@R @4L qT@ARL *qTR! 9RBR `@!7`@@T @! ":1B?@4+?@`,t@ds@Y] "@"@gB @kA@@@k@R2 @@W@! CtC@xRRI@RrR ? r*`T `oqTs3@??@`+b_@G@ @@*A @*R!A R 3@`@W@_G@ @@(@RRk W@tC@@96@ @@y qT43L @976@ŅRCyR * 5@9qTjuxR?k @T@03s@=@[R @@[@9;aR @@)c@@@RrT3@D@@@T@ R?jT @?q8T!Q H W@@"tC`! C`@@3@@ @@ T Rjax?k`TR_xk1T@yR?k2T f 6 |@c@@6q!CT,@XqT3Cr@ @a6rw`@7`@@R T*- !R C  B?@ GЀ-R# @@SH@9q@Tc@3@`RmTR!_x?k%TT ѕ6a(@ @!@RrR ? r*@T g!@R! @4L q@!T@AR \ q ŤR̬r|"BbB|KR53A @q@T@qT!?#&RRR c@! 7@Re3@c@3@N |@dR@@R@@C@@9qTC@@8?qTCu⣐Rb=r|"BeB|KJaR@@ @9?qT@ @{"T@99RWOG 4 87AOG*!` 7?!j TqTsiT`@9AOG!`@!?T?-Ta@9"_qTCOG!!**a!!@y7``? jTAT$E@8@}d @zT@9LGxaxP@qaTfCR! 4Tf"s)T`@9CRqTfBITBOG sT`@9A`?!j@Tb@9Gb8s)T\OG`!6`8s)T`@9 ?6@!?T?mTa@9"_qT!!*!@zaa72rT`@9/raT`@9AOG!`u#RRtfCR!4҉t@@ @ @9qTfCR!5ze;#RR`@9AOG!`M@@9qTR. C3@%`2 s@.cs3T@987!LG `@P4fCR! 4E^fCR!4>)<@!?HT@9"_q!T! *ALG  @y#RRS[cks3RҀcs35 PE @cӥ|S*? ?@`//3 @0@94qVT Rbp3C_13tysw {Sc` C[ks@W B4@7@ X7a CBr9@TR@X6 @@d6 qMT84 @ @#4q1T0q@ST,qAT! _5@@x C@ Հ @R`7"R@` @;_`@\7`aUC| [T`@r@TPP7W@7X6` @ @P6@@ @ P6R3O3@@O5T@tC!s C!@i@ @B@6B@B@B @"7b CBrY@TC@6b_ qT@X7a?4q%T?0qFT?,qT? q!Tt Cr@@ATs CtCt@@b@6AR@6 AR @] q`T@A%7_r Tr!TP6&4@r T ?!$E` C!@ 8@"7` C@@56@K7bU@C| KT@r`4T3P7G@7X6 @ @A6@@ @6R24@tCs C@v@@"r Ts C@BtCa@@@SA[BcCkDsE{Ȩ_@bcg6 R7?7@f@7R7R7@7^RRR7@@ R727@w5@@cc@Kcc@"ѿkATs CtCB@‚a@SA@[BcCkDsE{Ȩ_ @@ cا7C@a?4q T?0q2T?,q0T0q@FT,qKT qTa _r!Tag5@@@5(@ @r T T @Rs CtC!@@v@~CR R s CBtCa@ @@a@os C@!tC @vSA@[BcCkDsE{Ȩ_s C?vSA[BcCkDsE{Ȩ ,D!C@!@B_@?Tt CARcGc@))CI׎@@4@ @6@!!FE!@@?,T{ @!@! @6t C?#R RZ@BtC @@@a CBр@9rT`_6 @"@0q%T,qaT07@@33@ R.Dw{CZG` C7R@@a@`TA@!!C"#@ 7@AR@5wFE!@@?T3@T"#s CtC@w@'5@b  @!_ @J7@cU C| iIT @rT@)P7G@7X6 @ @B6@@ @6R? 5'@ @hT @@9qT@tCs C@v@{4 @1@9?4qT?0q@:T?,qa T @ @?7@@vu C  @R@zr<T@AT@!tCs C @i@G_r TRRR"s CtC!@b@@0il`@`@ T@TtCs C@b@ ? qT2@90q@;T,qaT_r@T0qT,q/T qaT; @7t C "r5T@RZ`@@Ss C@!tCb @@ @@|@3%3@48R14.D{UCR  $y@@!?*TBGB@"BC"*ARz C IY@5R!FE!@@?lT:_:@@@7@@C| ?T@@rT*P7=@7X6@ @ @!6@@ @6R)5@b4 @w;|@3{(7@@@R`@R @RR/T @`@(T @@9qTb` @@9qT$7@@@$7@@T6@b7 Հ @R_RZ@ T@ @r!T@@ @rTZ_Ts CtC@4@i@ ! B8@9@"D@!!ҁB0@ 7B@R2r@@@ @* A47@2!FBC @d B@  *6T!A!@8x @ 2@3SRRR3@@@@?T@7A@"@7|@7@ˡ@"@7|@7@T7_raT4"#s CtC@4@b4@d7@@wR33@@RRRQ3@T @!tCB@!@ @m2|@ @@@5x$|@?5??@@}!tCB@!@ @D@1@ԎtCs C@v@6@@@T@@ @@9qT|@@b!!@ |@@|@T@@"6|@ R7V7@R@@3RRR3@`@3v7@RRR3@@@i7@RRR3@c CR@@ @ d@"_@ @@7@cU@C| T@ @rT@P7@7X6@@ @ӧ6@@ @6RX`5@tC!s C@v@f|@ @ @@@@5_`5c@cR@! B;@ b@"D@!!ҁB0@B@R2r``@`@`@ `@* `7c@2!F`BC @d B@  *T!A!@;x `@ 2`@\ҀRD:`@ҀR,3t3@c%O R7p7@3@@@m@@@T Rf_c@@@9q]R[@8@@ ա!tC4D!@9 @_{!R[vCSck@9B@9C@? C@Y@06!,DG"@@@ @` ! !Ct@42@9@_(q T@h,@b.@EfB@*,?`B@ 6vC2@9A_(q!@@! @@xa T@!@\A94`B@y xq` T @?qT!Q T @?q T!Q vZ7D@@9 5`@@0@9(q @AT! @!B9! @`TvCaB@@7 C9#B?@@A@! SA[BcCkD{Ȩ_@@ @ @PC@`!F!@T!C!@?AT1+B @oo@vC@@9~+@7Da@9@906 _ @7@7D9+@lA@952@9@(qAT! @ 8@2 8`@dE@ @@RD@@!A!@ x`}ZR҂R+ {S@"0@9!@_(q`@` T"<@@"BTAxS!$!|}0b2@9a@_(q` T#8@C6"D@a2@9b@?(qATB @A8@!xA8b2@9a@_(qAT! @!<@b2@9a@_(qAT! @!H@b2@9a@_(qAT! @?Hb2@9a@_(qAT! @!D@ b2@9a@_(qAT! @!L@b2@9a@_(qAT! @!P@b2@9a@_(qAT! @#T@RR<@?kT8@!B@hc@d2@9`@(qAT @8@@@d2@9#|`@(qaT @<@?kITSA{¨_" @B<@@"T! @T <@xS$|}ө @<@xS${Р!DS[ Rcks!@tC5 @CE@7@~$C`@S@!@7a@;tA|@v@y+@ B5?T @?q)UT!Q @ y"@!@@(qz'@` T H@ @R$0rj T`8@!7@@B_(q 7T 8@2 8_A@"3@9 @_(qAT @< 3@9!@(qAT! @ H@2@?qi@T!Q 3@9!@(q@ @AT! @ H_ A@"3@9 @_(qAT @D 3@9!@(q@@AT! @|@ L 3@9!@(q@@AT! @|@ PB 3@9#@(q@@ATc @|@RR`T%|C@8@B@c|@h% 3@9C_(q$@AT @!8@c|@#3@9 @(qAT @<@?k Tz@Nn` @IT7@@ @87R?n?@4D@975ju8|TBTb#@u@_T@B6$E@8@`7@@?6R!3@9 @?(qAT @8@6`@y2`y`B@+7@R 0r?j(T $qBT@ @ @AA7E@ @ @!@@@! @ @"7 4D97@ @Rx\*nA@9/5@@.7Т`@Z4D!B_9!@k$T`#`+@+@?qI7T!Q`@@?q+T!QDE@@ @Q *5C7@`@SA[BcCkDsE{Ȩ_@T 8@x 8# @`H@` @R#0rj TRF"@!@@(qT# @`8@6`D@ 3@9!@(qAT! @ 8@x 8"@!@!3@9 @?(qAT @R@;@@e@b#@??ր47@?@ n7!3@9 @?(qT8@6D@@T`#@" a J j##3@9 @(qT @8@@bT@B 6$E@8@7`@ @ 7R @ARcx RqR!3@9 @?(qAT @8@wB@l`B@f@P7R!4r q T@bP6"7O@92O9?T @ lA@9 5`#СC!PC7@3`*@SA[BcCkDsE{Ȩ_@ @vB6$E@8@7 @O@9xO9! @H! @ 8@x 8F$E@8@ 7@2@@ H@9?qTL@97@!@@RbRf@ @a8@6aD@T\7@ B@? @"3@9_(q T#8@a@yc77#R! ?k@T`@T`@y@@T`B@R҂RfeB4D9~!2ay"3@9 @_(qAT @8@!28 @`@y2`yF?W7@?@@6{B@?֩`@y7!R ?$qT` 7@a T@!4D"9M@"P66@@`H@9?qTL@97@!@@N@92N94D@9 4nA@94R҂RUO 3@9!@(qAT! @ 8@2 8`@yR @ARcx RO%H"X"6!$E!@!8@7 @N@9!xN97@R҂R@`@y_8Bp_!x 7 {С,DS"GR@B@dФcCc}BB cCDsS@k_@wBB@C@ka@ ,T qT Rr! R?kAqT_@ @@3@[cks@_@@0@9q(kT_@RR_@c F Rc[g_@@B @B, @SA,!T ?qT RrB  R_kTBR@tTR R A@8(?q$Jz$Dz`_!T|~9T!RD; RRRRA@8RRR5RXRR/RRRRIRwR[rRRR?qTeT?$qT?(q8/ R8<@.D!`!C@!@ T"G!4!CD@d˄C6>VE&@@R77`@o?R(8& @2?0 {[5vCS4 C@@ 97v_ @@y q@T< F@MT@7vCw C@@SA[B@{Ĩ_ dE@@V@6aR;@@@j2 F@ T"8o2 { [6.Dc8S7k9sGa@S@"b#wC4A}|c@C@7 C@@c @@;xc 6 R;@.D!!C@!@@TG C!@BCs3=sVE`2@ R 76(:#aCC!C?b@yw==?@ R`yTs&іCssCs z|AR1 7T@C@y7ZC@y@y wCG@@7@ @9T q@T@@7@@!"`@RB4D#0r qB@9BRj`T R*`a 9wC"!@ C @SA[BcCkDsE{Ȩ_<|@9>R@(7`2?1~> {$ ,Dc7SvC[5G6Bb@!@Ee@? C@S @9@s raT D@`(@7c@ R %@9 qT sA_ # @@xc`@x`,THT dE@@!@$BRo6 F@-+T"`@7R!4r q!Ta@` @!@;? Tb@s @" 6"B$EB@B8@ 7|(T k9E9GsTt@9?6R7!r~@#Edt8@TbR( BD9|@ ՄiT@9b@ee8BBD9"_TR;`b@9"kb8b@hTt@9@9a88cTT ` @kD;@!sTb@9@98a8cT`@Rx\*`vCsE@ CB?@@ @BSA[BcC{Ȩ_ @96,DkB т@ @ rA T @"@B@ bTC@@AcTvCkD@!!@x"!./{ZBR5;@_`"T #@@"cTvC@cR( bD9|@iT@9Be@Cc8BBD9b_TRP;r@BR5"8`@ s<R36g @7 @@ҭT |4W=rTR=r T"R6"R@6@fBR^5-f-TvCkD@sE3@Z9@@ R9@@@@T"R!`.<"R!,<!@ `4 ;|@=r TRd."Rg6@|-kD&RU."R"ҭ5 @R  @ ]= 0ks35{ !tCS[cks"CK@ S@B@"@9`@b 6!@9a/07 @!4!L ?q/T@@Wy_`BO!@ ,T qT R Rr k+T @< @@3?cs&E`@8@}C{`&X7`% 7 @tC{@@&48(@o@9r!kaT!B!@!!D"@A(@t7B@ R!#!@9!?q{@R?qRAt@@@b_(qAT! @!8@%$GӿqT@9aR 607"r7`&@B7@!@Kk@B@K@a @!a /`@7@@x b R [{[@_(q@G@AT@8@6{@a]4"T&'RGLG`P6`8IT@9 ?6@!?MT`8?̃Tq}Tq Tq mT K@S3`W@s_(qAT@:@@6:RO@YOGw s T{@`,52@9@?(qAT @8@$Gq9T@`'5BT@OGR@9xb? jTw@@9@x`? j TAT @`5[@@GO@5@uCCo@ TH0TW@@/TW@_ k@!3CB@{@klCT@<4{@PK@ 33i.:sVE`&@@R323 @C? q@@T !RtC !A"0rc@!@c @4D3xc@9`@!R _q_jT R*`u F@ͅTt#s !tC!C@4@!!B@!@A!SA[BcCkDsE{Ѩ_Ri6r@T`@8@}@ CG tC{@@5 X+c `@9!Br!@@T@?qRBRTq!T @9|qT"T AOG 8Eg@9*`y W7T@9T5k-@!haxo6 @9Q`cB(q@AzRBzTz; 6 R@Fs@O@@T BT@9_(qT"@9_(qT!aT4 T94s!T* :@@-NT{#|@ qTM [{iT  8EAOG@9*`|`P6@T@9T5 -@haxo7K-6T@9(q5T!!*!@xaAW6A`8|,{@q²WC#T{@ct]Ӡ>@k<T*`o"^Ts`^T !R@G`@*O@*!C?3 ?@_(q @AT @@RG@ @$`?!!C;@'4"@ @C(q`!T8@07!8@!@3"4(q` T<@ 58@@i$T $TB$GqT@/5BLT @9RLGxd kT)@9xa!jTAT K@ @@7K@x2A@@ " @b_lFTK@B}R` @9`@ @,T Ct@DTK@! }Ӂ @2,@ @*7@ q`T C^K @<@4&_6RF(q`T<@8@kTR~!ha@34(qT @<@8@kT_@A,@BR? qA\5A@;7a&@xaKp@-5@ ͟T `@@a!@s4T77K@@@`6K@@ @@9qT @9qT"8T 3C8E_aNG@9*`w`P61T@9T5+@hbxo7@@C@_@p_@tPT@k)T)4L>TO@g@T@@ Th{#"@$@C@ˏ8g@@LT"1 @$8@6! !lA4D!@99 @ @@!t8 F@m!Tv{#"@ @C @9 Q`)c?)q`AzHz T3@9hqT**3@LW+mK@ R4{z!"!,DBC @B@  (T![O@"!GBF!@a!C@@'T{@@$O@  R @Ob#RRd3@@b"Ұ07@9qTqzT @9|qzT!Br_qR!@l! !lA4D!@99 @r?rmT%!lA!4D@9%9eT @9LGxaP7@9xauW6aTK@/K@t2t@ r Tß6cc*5@B @@?@@(q1TB$@_#T@8@Tu"TRFG\GO@{@@v 5tTG@G@tT@7`s@`5@a7@ T{#v"%0W@O@sR8˙7"0mTs#K@@bR0@@az4T{tC!C@;@"/ 5SO@F@T{@ 5@*!G7!T{R:R(<0`&b @9 Q`)?)qAzKz[T@@C@_@K@)`@ @K@4|@C31a&@ 6@! &K"ҥ/K@_7*aR33@@K"7_ TW@_@TO@"/Ot@s#G@9*a86`z8T AGc@9!c8?Ta@9сa8?Ts RO@RO@O@U/oR3e/"I/3;'RO@7{ܿ7 @,!T ?q` T Rr  Rk TBR+7@9R GGF@O@sTT@9?kT)@9?kTaTw4TR{@@5!G˃@9!hc8_iT@9G@aa8?BTTV43@T6g@Th{#3@".3 @B @B$@_T@ @s76 !tCA!@@" @xb@ @`7 @_x @ @_{Sa CDA5@@@ ?ր2@9,QqTs CtCu@SA@@{è_{tC@@@yB _tqhTGb@Q<0qHTF~&@Q<!@0q Tu&{sSswC[ckc@`@ @@7y9RdE`A!@@ @G@ -@@6@4| S94 q` T*RRR_q T CӔ!*|?q5k>TkmTsbDFe@14 Rr!  Rr?kAT@ @(R`Aef87`qy9dE@@@`R5q6T9T*RR RBD!GB@!@@ @I@$*8 ,5C`@SA[BcCkDsE{ɨ_AR.*c@RkK5T RBD!GB@!@@ @C@ &8 63 )C?/M)3@?@k T~@T*7F@_ TC49*q)}S @z T RA@ZA!`3 ? q TT?q T?qaT64`wC@@9'a@a'" @"'X6"@ARC0@94kh&T"qT~s"Q4q @z*!TdwCC@@SA[BcCkDsE{ɨ_?qT%?qTq 54`@`"~4?qTQv4*C@``@ s"?!TBdwCC@@SA[BcCkDsE{ɨ_"V5~R3`@ @X6@0@9?0qTQ_q Kz`T_qDFc *c0Be4%64`@ @aX6@0@9?,qT"( 4kҁTdE@@!@a"`@  @X6@A @# @q@TawC!@"@9Bj,~@66~@co-c@o@G*qaRAz!0LRRRdEa@@!@?T ){ӯawC3@!@"@9Bj_q )b$E{B@B8@BAg {@M)H,@@"~`4%E!@R ){' @M)\@{@H@6@@@!@aR ){L0@@ M){@H| S6 ){ HM){@dE@awC@@!@`"@9Bj!!$Q?qTRRC~@ ){0@@*BDFBeu$!G"e 5qaRAzcc*`e$Q#s"`@ @",BT _qT Rr!  R?kTBRV4sb@s" c` RCRctC@`@@@9!Gc0@9,qB ` {[РvCS@ C93@ 7-F@mT@\@`@6@63&vC C @SA@[B{è_@`!@R&F@T"+ {cvCS[С C@3@@9t@6s"t@@906s"t@@"X6?@qTT?q`T?qT @B0@9_4qT@_$q@TT_,q` T_0qAT87 @RRR @ @2vC@@9(7 C@SA[BcC{Ũ_ց5 @B0@9_(q T!@2O5Ё @A @C@"@`xdB"ax$@?qiT!QvC@@9!?qTA @@ 1@@9C/6AR%%`vC C@@SA[BcC{Ũ_֤ 87@4L qaT@@ @b@Bb @*vC@@9 @B0@9_,qT! 2 @B0@9_0q T!`2@3#O#87(@6-vC@@9AR07"Rw R/#@@@@"R!`.<2@"R!,62#@!2 +7"RY R.#@@@@@y"R!`.2"R!,2#@R#@R#@2e%2a%2#" { BS[c C@4@S b@ D@!B!@ B@!F|||BC` @B@  T!AvC!@3x `@A@ 2` @9`7 @9@06_%@Ђ Rc Fc9/vC"@A@9 yA@96L@9!`2L9A@9!87F@TvC C@@SA[BcC{Ũ_ @9@07"%Bї@Ф&!ҠB@R})"l*#9R@7*,qTЪ#@/#@ R.@@@@"R!`.T1"R!,N1@!R@77B @!A @ 01$ {,DDtCS[cs!Gw@cCEф@ @S9u@ {"_ 7C Tk9s"BBD)@@ad@@B@F$|||!CF@ @FT$ RA@y& @ 2 e1Tc@W7e@7%7@d@@ R7?(7@?@kDtC!C@5@SA[BcCsE{Ȩ_2@97,qA9T 7@7?/7@?@7@@!Rw7{",qTT Rr`@@s"Tc@ARb @B _q`T. RC-@@@@4"R!`.0`"R!,y0@w@ @-T'Sw@1#@ @jT{SЀvC@@906M&` C!F@@!@!?TvCs C@` @SA@{è_ֻ "/) {S$Es C@t@@@0@9d@0qd+#t!tCSA @{¨@_{BtC!dES[cksAZ@!@@ @V@@U@i/@@9zvrTa@7a@q6@@ @T@5@"@L*|@TЭTМ@{Dc;`TRv)#B<@`@@"`%ҟ€R;@D@(%( @?qT!Q T6TР@'m;c g?D@"@!f#ҟBR'RRR.`7D9 !R?@*)@@(A`;@R!)@@ Ѡ@ 7#B<@\$-A@9|@ @q T 5@@  4@cTTR(A @€R"'a @?qT!Qa @@9` 06C@A_`7D@9 5?TBR'@`6*@@SA[BcCkDsE{Ȩ_?D$?@U@@SA[BcCkDsE'Fm{Ȩ_AR'E- *|S5 T'm&@c9D? @b@" f%BR;H';@N'`7D9T?@R(#B@@#@#!Rr(@' @ raT{7D9!@!`'e;<.r;@ T {dES[@vC@4@@@`@@7`@@jT[B@SA{è_,|@TR Cs@3(`@F@ TvC C@SA @[B{è_@b"p' {!dES[tC"@@B@ @B@X@B@@@9S@sT'q@zTq@zT @SA[B@{Ĩ_q @T!ܧVЄ! 'ss6Χ@ 'Є`!Є! {S` C@__6&r@ATs C tCt@SA@@{è_ {CS@3_`@7bU!@`C| T`@rTP7@@7X6` @ @6@@ @`6R5tCSA@{¨@_`@@TSAtC{¨@@_`@@55` @@9qT {S` C!F@?!@!?mTs C!tC` @SA{¨@_"&{Sb C[vCU@A"@@@@B @6xb 7Rr? j T!@!?vCs C@u@SA[B@{Ĩ_ @!BC_D@!@@T!&@ {Sb C[vCU@A"@@@@B @6xb7Rr? j!@@T!vCs C@u@SA[B@{Ĩ_@ {Ss Ct@_[$tSAtC{¨@@_{Ss Ct@_,tSAtC{¨@@_{S` C@@@ 7X6 @ @6vC@@9(7 7"RҐ!vCs C@u@SA@{Ĩ_s C@!tC`u @SA@@{Ĩ_%q@T  @@ @b6@@@B<@b4@@_1 T_q T@@ @9qT{Sb C[vCU@A"@@@@B @6xb7X6 @(vCs C@u@SA[B@{Ĩ_BR!@!`$Z@ {Sb C[vCU@A"@@@@B @6xb@7@X6 @Rh"vCs C@u@SA[B@{Ĩ_BR!@!`$)@{S` C[vC@!AC@@"@ @c @!0!P ?qUxcT@@@Rd!4D"0r _q!@9!R_j`T@@R* vCs C@v@SA[B{è_AR&g {S` C[vC@!AC@@"@ @c @!0!P ?qUxcT@@@R@e!4D"0r _q!@9!R_j`T@@R* vCs C@v@SA[B{è_ARL&-  B@x@w{S@6SA{è_* B@#@@D@B ?a2@9qIT@@@SA@{è_ {cG c@!˂!C$s Cc˟`TBAD@D`@ @{¨_ &@!&{S[**c4% B@3 b@ D@!B!a,@B@q.Ɵ`!Q!|@`@`@`@ `@ `@x2``@x` R@~3Q@@c@@c`B@C@B@_~Z)$aR!(SA[BcC{Ĩ_q!Ba,@ `RI {[֒DScNĮ@XN&@ !|A 4|~@?T"|@@!!}"@_$hTcA@dBaRcB} '@SA @[BcC{Ĩ_P" {S[zDuF@@?kT@C@sF#BBcB@!SA[B{Ĩ_! !|A 7|~@?hT!~BC@"@@"" {[NDSC@@˔B s~S s~s~~z"4!,D4SA[B{è_{SZG@ |@ |a~@!?T!}ӵ6C@Y"SA@{è_! ҄B4C@XGg@c|@ y#@$kLT_ּ$ {!BS3@ a~@!?T!}Ӕ6C@*"!XG3SA{¨_ֶ! {S[C@?T@sssTa}ӵA@"CSA[B{è_֒! {BES!AFT@$@@ Ձ _B Tb xb` A)cx  ?qT!Qb@@SA@{è_ B|@Bf4C@XGg @c|@ y#@kKT_A${S@a@a @7 @ a@ @ R!RSA{è"@a@ @6 RrC9`@9@@"@B"R bR@@"R i҄B4C@XGg@c|@ y#@k KT_#{S*0@9a @$qT @\@`x7c @Rcc 4[ya@4@@` @6@C@B<@_1@T_qTb@_ T!@"@_ qT@5@` @ @@B9 7v [BSA{Ĩ_c @Ra @cc p5` @#a@ @@ SA{Ĩ_cR B@5 @ D@!!B<@ BR@"R>П|A`|||||||@@xC! 2@ @@@!@@@ @ B92 9v 4cCSA[B{ĨN` @_1Tb@G#@y"iR! kT!@9?qaT@@B9 7v Rc8R[BcC {S@4@@`6c @Rcc ` @` @@u@@SA@{è_aRy!@@@76aRn!@@@@@"R {S@@!T@T"R` @` @@@@SA@{è_ցRE!@@R?!@@@@ "Ri {AR R @{¨RBB$4CA@cXG%@!|@x! @9Eb@ *_k|@ KT_֬" B|@Bf4C@XGg @c|}i#@kKT_֗"@AReBB4C@H@|zB @|}IFӟ kaT  cBXG`@?kT_֥ aRbi'x" BB$4CA@cXG%@!|@x! 9Eb@x _kKT_a"BB$4CA@cXG%@!|@x! yEb@x~ _kKT_K"@ReBBR4C!*@!|@@%F|}kaT@ cBXG`@?kT_֥ bRAi$+"@ReBBR4C!*@!|@@|@ aT@ cBXG`@?kT_֥ bRa҆x( " {StB!XG@!@b _kTeaBB4C%E@@##@E@f&# @B@#D SA{è_!@@ R@R@BR@!ABBJ(@4C y`A@@&$ @!|@hF$ cXGy`x!F@`@ kKT_ַ!R@wR@s!|@cBE4Cb@XGF@B|@ x"f@kKT_֛!@!AD @#@x D !C?FAT$zBB4C@!XGB@D% @k T_{!9"x! *b@Bb {S`B" @@@,T qT R Rr@ kT@ @!@_c @5ZB *zsB@`@ ʀSA@{Ĩ_BR$@@eBD4C@@G|@ @x'cBB XGb@kKT_ ! (cB4Cb@XGF @B|@ x"f@kKT_ !HcB4Cb@XGF @B|@ x"f@kKT_ {StB&@x:@6CЄB4CRB@@@iB@c|}MBFU@Ei#XG@y@" * kB|@ +TC@"@_4@sB`BSA@{èSA*BLB{èB@yB\SB2!  {[Sc*kBB4C@@Y@ @~@77` @` 3{:@@!ДB!XG  @kkT`@`6*ax7`@ 7SA[BcCkD{ƨ_//@y 6  R@SA[BcCkD{ƨ {S[c*@@ @7ТB4CS@@c~@X  @ Tx#ARd@@!sB"!XG  @k T*w7@7SA[BcC{Ũ_''@,  R@ SA[BcC{Ũ\ { @ @7 @R !R @{¨a@AR!R @{¨BBХ4C@@!E@|@FcXG )@x F@ `@kKT_ {Q SЄ|@[CuB@@7  TР z!XG!@kTХ sB!4C*b!@6%SA[B@{Ĩ_#|@|@"x R@ {1S*`6D[s@9oTB@_kMTcCk;6CBQ`6DD|@#@9Bi xxdq!w8BK) !˩T* $F Xwxa 9m@By@ ՟kTcCkDs6DA9`9SA[BsE{ɨ_9m@By@9@FӀB8@9@ ?րB@B`9m@;R@c@9m@7@[ @?qI~T!Q `@@y7a @?q }T!Qa  @?q }TB!Q @9m@" @W@9m@ @3w @z`gz8B@9@ @7 ՀB@9m@! @3 @; * 9m@! @ @@?qT!Q! @;`@x7! @?qpTB!Q! @9m@ @`T;B@~9m@( @RRR3a @?qT!Qa cw@@`@bT @b@y73@9m@!GC'@@f@c˄FgCBD# @#D!@@! @a B$@Y@b "@<9m@! @3 @@ @6@"@"!<@?1T?q-yTA@? T3@!0@9?4qTa@A!0@9?4qT! @T"@T!@?q)zT`F@!3@P9m@aB 8@77 $@?H?@LB98;$yC@@@@` B@Ws@ D@! Ҁ`B0@qfB@R0r@@@ @@ bk7@2 RR  !CB!@@ @9m@! @ @;@?q)]T!Qa @?q[TB!Qa @9m@R @@aD4U!@; @ @b6@C@B<@_1T_qMgTb@_ T!@"@_ q aT5a@!5a @a@?qihT`F@!!m@9m@`@TyB@y9@"R# @3a @@Y6BDW@@`@`CT @6 R?k?@\W@3@9m@! @ @@?qi]T!Q! @;9@FӀB8@J @B@E9@! @ ?!cGCc@a 6 @BB@z`TRgӟj@Tg#㇟d@zT"5a"4aRaH@ TRgӄjT*#Rg_ Rb4{a"R[uvCScxkys!A@B$ Ce@_@9!@ @@9@;xct(7R77raTa!D#@a(@A47c@ R! $4@9qw@IT q|"Ѡ$T`_sB$@4L q!2T@@2_&R@ 4L q`TARs{h]@s@{@7 R@ 4L qT@@7vC Rr% k@s|_@9` 7sBW5'@ ,T qT Rr! R?ka)T@ @?@O@@070X7R!4r ?q#T@ @!@@6a!$E!@!8@a7O@*4a!$E!@!8@!r!5.7X6 @ @6@@ @-7NK@`TB9A97@7K\r7@@TJ[@`/7X6 @ @6@@ @`.7R7^RqG@7@T ?@ '5@rT)W?@O@[@RQ յvC@@9 7qTa@!17{s"9 C3@v_sbW4` B@t,a@ D@!v!AB(@@3Ba@b!F*|||||BC (@@@(/TiR)ARs{)@4y(@ 2_@Rs@{@ 9@ @ 7@<  Rr@zT@ $A92 $9@_Rǟ?jT@ $A92 $9@vC9 Ct@3@Rҗ_?@*`R!! /M`vC@9 C``@3@B_@@Aʡ'SA[BcCkDsE{̨_K@B9A97@\r`TJ[G@qT`lA@95c@[@cxc7TV R!O7@`@2`1RCVG@@,!T ?q T R Rr ?kTBRC^G@? 6a!$E!@!8@!a4BRcz^?a,@? q`ARk[k@@ Rr!j_z,Uq@@9@9?"5R[@,!T ?qT R Rr ?kTRCJ^G@@? @G!@KM@_6 `R!!0M@vHAYAR|PARt[@ ,T qT Rr! R?kT@ @@O@r`TO@[@RO @?qi T!Q _T@ TcG@cG"@9bb8!aTG@:˟ TѠ TccG B@9_dd8aT[6BRc]s{ Rs@{@G@B _8!qT  _8qTB_T?X{@uOFUd@ @G!@K5 @_8BqT @_8qTcT@[s{@{@| @Rs{Ts@{@_G@[U  /[7KU7@O@p {[v CScks3@@ @!4!L ?qT@@uB:RvCN@@9(7@9R7a@ 4L qT`@@ Rr_!jT@R5vC`aA!lAB@!@9@B @xb5Q`@7vC C@@SA[BcCkDsE3@{Ǩ_a@!@aRҚ4 ` B@s ab@ D@!z!A@B(@ ZBa@b!FC+|||||BC` %@@@%TfRAR@x%e@ 2e]`@R 9a@ @ 8 b@Wb@Hb@[$9~QARZZa@ARVZgq&RUSqpNP@WAZ @RS {`bStvC[vcksA!@ÂBDC@`@O# @ @97@@y @q"gZxcKy" T@_' @!4!L ?q$T!R@kw@@ ,T qT@ @@G@,!T ?qT R Rr ?k!T@ @!@K@a6bB$E/B8@7'5K@9[ARҵY@ ,T qT Rr! R?k$T@ @@K@A6 RRsG@[kw@ ,T qT Rr! R?kTBR#@\CBR:\@@74`$E@8@ 7$RC9TB9` 5` B@ b@@D@B ҿRK@~Ys@R @7aX6 @" @6!@!@! @6qRRBG@s9R6G@R?e[@?@@ 7X6 @" @b7g@?qTk@5G@ G@g@?<МqTK@Js@qA Ta @?qT!Qa vC@@9(6aF!@k"A` 7a`vCC@ւBO@@A@aSA[BcCkDsE{ʨ_!@!@! @a6 B9RK@_qRb [k@ @ 5g@G@qTBa@@R!4D#0r q!@9!Rj T R*@U zs@@zTg@qTK@ARX RkRX RsWkrTk@4s@@z!T G@?<МRZts@@zTR7(Ng@7@qATBRC6[ R9 RsA6RG@4JzlS[ZzdG@;FO;@2S {`a,D[uSvtcxkvC@oAE!A@GB`@9 CB}!@SC @@9xdz@@5A"!CcZ!@? rTG@ 7vC C@SA @[BcCkD{Ũ_LbYrT!@DU`!@oA4D@99 {a`!CSt[svC7@AC@@aB@ @'@c @ ,T qUxcT R Rr kAT@ @B@#a6a!$E!@!8@7#@&Rҡd@9Ec8E@5a@@9&Rd@R4D#0rC q@9Rc j T RB* vCsB@'@a@A@SA[B@{Ũ_BRiZ@MUR( D9|@ cbTf@9@f8BBD9_TRmW %YR{a`!CS[uvC6@AB@@@@B @3xb7@X70QrTw@&E!@!8@7`67@6@!@h6 H6@ @ `$T Rr? jT@@`@?qITT 5`@ @? T!RRa @r49?9a@ *` 7vCSA@[B@@{Ĩ_rT7 O7ROrT+ @aRK@ RcTO@ @sQS@KGS@so@(T `4 ƌ`&x@'E29@ @@s3@8@7`'6RR OrTRRO#@BR( BD9|@cTd@9C@@d8BBD9_aTRQ4'E@8@ 77 7`X66 R 4r! ?qT@@\ @@O@?SrT@4D@94@lA@94R҂R~TeRa(! D9!|@ciTd@9@d8BBD9_TRQ @xF@H 7 Ro@6'E@b8tT&RRNra T'E@8@ X7@'6R{NrT@8@@7WTYbjRvE9E'E @9[ 5s@T@9`8`9qT@9|qT[Ѐ BӁ\! @!@!!}!C T"8B?@T! "_! BGBB|BTY ƌ`&xoOA@W:E@95TYД9wE G@xvvj;8{ T@9k{84qTqT~qT6v8RBA@GN`@8@`7'6RRo;No@r;@`T@9qTRRMr TA@ @8E@95RRc*KO@MҟTa8ATq` T @ARsO@sPO{E @a@9s5cT Հ@8c R2NO@sTU@R҂R}S_@ @cTbxH @os;Oo@;@bx<'E`@8@X7 6RMr T`@A@8@6A@6A@'E@8@7'6RRMrTcvT@9qTv&x! RJP`c RMO@sGK{@ACS[cks@!Bx@ @_@a27RV`r @Qq T@?@",ctCBT A_qb@@B @xbT Rr! R?kAT@ @@O@?qT7@! @?T!O@Rr R*u&E@ 8@ 6@G@@5Y@O@9E{ 9@9+5 5s&ES@8@%77! 7&E@8@"X7_sˢT@ka8@cBh@0k!8!T&ET9@ @@F8@`6A@!lA4D!@99.5T@ rT@"7?@A:BtC_@A@A@@3SA[BcCkDsE{̨_ 7@RO@4&E@8@W!7S_ T&EY[C;!E7aG3 DS@IT&E@RA@93@[a88@$R`7R  7;@Y@7@@95S@_)T@T @bT @{NS@ @XaRCI@IRc9RO@=RRsL'6RRmLr!T@&E29@ @@F`{C@@8@ 6@5@@9$qTB9q@&E@7@"R 4r! ?qT@ @@O@Д?Pr T@4D@94@lA@9 4R҂RQJ8@67`'6RR!Lr@TY9E @9 4@`8RRLraT@O@4G'6RRL@rToRRLrT&E@8@@X7`'6RKrT@8@ @7B_sBLFT Ak`8Aa8k 8aT5_TYT{9;ENFw8k38sT @9Wks8 5P@xwKI@@kRcHO@zRSS 4&E@8@6! RN`\3@! R3vN @ BAZ!@ @!@!!}!? T "8B?@T! "_! BGBB|BTT a8ATRN@ @O@@45KVR҂R.Q! R9N RSkSAyR?kTC_dljcLFcT_``878Z_T@@9$qT$x|Sd2!!`2@$89Ҷ8@I {A@!CS[VcWvC8@AC@@B@ @?a@c @ ,T qUxcT Rr! R?k T`@@t @"x@; k!?qs T7@ @bTLYa@ @;'E`@8@6@'7YZ;@9G\OG`@9"c8C 87AOG!xc6 R`8;@_B;" Ձj`8aj 8_T;@s@29R@ @sS@x\*kDsE7vCւB@?@@A@A+SA[BcC{Ȩ_BRsP@;@"x@H@`6JaReG;@@"6Tc@cT?4qT?`q@T?qT?q T?qT?q`T?qT?qT@9?qTX7 7;@CA;$R R!LGBe&8@9@9;@;@9b#`#jT@9?<q!5{@9dqT`@8@7 7`*@{`@7;@k@9?pq5fRHJrT9'E @8@;@Cр7;A R"LG d&8@9 9;@;@9aC`7@9?q T?qT?q T$#c$q`HzT#@d|џ@ TcT?DqT?tq T?xqAT @9!P?iT%@9?q`T?hq T?xqT?qT @9!,?T@9?qT?qAT @9?qT  @9dQa! q Xzᇟq!5 @9!?ᇟA5 @9$!#Hqᇟhq㇟!*5 @9!|?ᇟ5@9?qT?qT?q@ T?q T?q T?qT @9!? T_7< @9!?ᇟ5 @9?q!5@9?lqT?tqT @9?qaT@9!?TRR7Ir7@T@9@9C @9!?ᇟ5 @9!@?ᇟ5 @9!?<ᇟ5 @9?qT@9!? T @9!?ᇟA5 @9?q5 @9!?|ᇟ5 @9?qA5 @9!?ᇟ5~ksC@_T`@T @Tb @9{JC@AC@{(T `@2`@9$Eb@` @!@fFA 8@ 6A@!lA4D!@99'5@@ rA T`@ 7@A7@tC"CA@!BCO@!@A@)SA[BcCkDsE{ʨ_XR'6RRH*@@@6=@@^aRZE`@6 J`@m R{MrAT4ҹ?Z?@ @$E@8@ 7 7 X7?T  ka8@cBh@0`k!8!T{'6RRfHrTW`'6RR_HrTLrT@4D@94@lA@94R҂RNRN?@RR>Hr T@$E@8@ X7'6R3HrT@8@7?bT$@9qTUW@bnRE$ENF ՠ@95 @9|q T`8`99{T$@9qaT! B Y! @@}˟ T*@9BG!@aT _ BGBB|!BTC@ 8@ 7'6RRcGc@rT @9$q*TJU@8E@95?TTҔNFw8`k68@T@97kv8q`T5L@xwG`@ @cTxR5?@!4T`8!@T$qTc @ARf?c@fJ?a @"@9&_$q`T"f"h x9 T3 @83@*J`jAE{@A,DS4R[c7tCsA@$CC@@BG @9B}ӕ@Ws@_(7 @9R7@_,q T @9raT@D@@(@7B@ R#@9 qT@;@G@TBB@B` @C @SA[BcCsE{Ȩ_?@B_kR;9;@|S! s 7(TZ R rZ@3Zc`@ ;7`T`@ @! ?qT@7R@5f*aEt5@`T@3@kDtC@AR7RJgY4fKf4#RKF@k@@XCq@79R4hT Rr@#@_ZT@ @! ?qTAR#I_ZT@ @jTC R,H @@@@"R!`.hK "R!,bKR@ @T@kDtC@BL>@fE6< {@,DcXkY CS[s\#wC3G@@D`@#@S_@9s @9˔C 7 @?F@ T"c" T |bzvbh aTs"hT\ Rr@b `@ @! ?qT@@f*D4`@Z @C@!`dA TARB`@@`sBT9wC!@ @9raT@D@@(@7B@ R#@9 qT?@˭T@U#@ C @SA[BcCkDsE3@{Ȩ_AR-I~B4*T7 `I@@`G@s˩C@`C? @!4!L ?qT@@@E;ARI {cWX CSwC[k@9@@9rS_aT@D@ (@`7!@ R"@9zA@`@@7`@@T qTwC C!@ @SA[BcCkD{Ũ_@F@ mTC@0:qTwC C!@ @SA[BcCkD{Ũ_H|@ ,@ qBwCB@ CB`"!@SA @[BcCkD{Ũ_RC@YC@ B"C @@`{[UcW C#vCS@ @@9v_raT@D@ (@ 7!@ R"@9A q TqTvC@ C @SA[BcC#@{Ũ_֠vC@@97@ 7@@D T@F@_ TvC@ @@y <q TqTY9@9cxRuC@@aT@vC@@A!@@! @xa7@@!B`@RB4D#0r qB@9BRjT R*`a vC@ ,@ q@T@!@G|@G|@ @9qT"C`b9JTBJ>A47 @iH{[VUvCS Cc@3@@9rx_aT@D@ (@7!@ R"@9R-;@F@ TW?D`qa"TvC@ C @SA[BcC{Ĩ_vC q@TB CB@B`b @ ,@ qpE` vCsB@B#B{STvC[VcB!@@_@C @9"@9x@U87u5A!D#@a(@7c@ R! $5@9qvSr#T2@90q,T,qLT"K86 @B4BL _q! T@@*: 7 4C;ACkR!,DsdG;#@@d$z@Z}AC?<3@9(6{xC8@F@7T#! T |yxAh aTs"R3qT/qDTvC@974;@kDGsE@?@s@vCC@3@ւB_@@A?SA[BcC{̨_ֿ qTkDsEARGa,@URR? q@@`75[{}TZX|@Z@}Zc @@*:Tkx Rr @! ?qTARFGG@  (Ta@kDsEksu5A!D"@A(@A37B@ R!#5@9A;#!GG!@O07_Ca@R:R!,7@!q?@?0qT?,q3TvC@9`26C@ ?T@ Rr@3K`S@@[5|4f"RA@,f<"?T@ @! ?q`TARuF[gZ4fCH\5fR9[4 fCRK@B[@fR9[@K@3@@ 4C@qO@CT qT;@!G!@ ?@ $TG@?!_@vCC@?@"@kDsE[{}TZX|@2Z@}Zc*jyR*RFBT@@fK@CRJB@3@S@R2RF@@G@?,DG@@" O@ C>q`TG@?@ f"RA@[U4 fCRK@B[@AR[?[@8QC@ ?T73@Kb< 4fRRRF@ f="T@[4fRRR{FR\ 5fRRpF[8 Հ@fCR\A[@!!@!`kDsEe;@!G!@ ?=@;@G@c8fRRR?F[@[@ fCR-A[@AR>[@'8fRR'F @[ RCa@Aӿ6 RC@@@@"R!`.F@"R!,Fa@Ra@~A,@? qh@[E!?!@!`gG:ks3? fC7ks 37ks@?37{c7vCS3[6k C@`BC@94@@7ҁ@07_/"Ѡ2@90qaTRRRҷE @:@@sB7@a@A SA[BcCkD{Ǩ_,q T@97 vC@ C@@RcJE @4@@ @4L qT @@}FrT vC@ C@@3@ 0@9?$qT@@a@4 vC@ C@@ARD,?@? 7{ !,Dk9S[6R5wCcs@$CCѡ@ [G @9@8@9a}S|@_`(7RX7S7R;@ ( T7'm@bg:R@55fRRRE@`a@A!fT'Fm9wC!@ @9raT D@@(@7B@ R#@9 qT ;@G@H T @`t#` CT @SA[BcCkDsE{Ȩ_fRRRDv4fRRRD @?$W TX6b@@"6`@@<@`4@@@ @_$qTX6 @0@94qTz4#wCfc@c9#*c|S?f;`@7 Rw?@_"wCA@!9!*!|SB=q@@9Sx6 RB@@@@"R!`.ME@"R!,GEK fC,6E8 { ,Dc78S C[ks<wC'mG@u@#@@B@3_@9S @9tC 7[ F@LT#c" T Հ|bztbh aTs"hT;{@{cigfRRR3D@@`sBT|@4fRRR D @@?$[@ T`@AR<`@ fsB`TwC@ @9raT D@@(@7B@ R#@9 qT_MT@5#  C @SA[BcCkDsE'Fm{Ǩ_h<4*V7@@@9raT D@ (@7!@ R"@9 q!-! ~C @`G@s=@YCs Cm5!- {!5!,DvC"@@D$`@9raT D@ (@7!@ R$@9 q@T S3T@a CF @B@B_T"BGB@B4A T @`s C@aSA`@@{è_@"5=vC@ { #,DS[56cks@cG CDvCy@$@:@W#@3|@9sCr4*aT D@@(@7B@ R%@9 qT 4_cT8 Rr@`7@`"_T@ @! ?q T@ @q q[zT|@zs`/6 @A6AR;z3"_TvC@ C`@SA[BcCkDsE{Ǩ__T F@T @` {8vC C@@SA[BcCkDsE{Ǩ_ {d @!4!L ?qT@ @q qSzjT` {8ARB7@ C"Ѵ`@SA[BcCkDsE{Ǩ_ARA"< { !,DS4[!G@ CD!@S`@3 v"C5 F@T5РvC@976vC` C@@SA[B@{Ĩ__4"Q<  { ,DS[6cks<3@"B$ ЃG5C}S@h@@C?3 a@AD@!7!ҁB0@B@R2r``@`@`@ b@@ `72` b@tC@  !@!97t6g!D?, TT79"BD@#T@A @ 7@[ @a@gRA@F;RRR%B_bTU@@ 6AR:@#TR!2"B@& @D@! RRRBG ?@F@@! MT (tC C`@A@SA[BcCkDsE3@{Ȩ_7[272~C`@3ҀR:g7]"҃;{ !,D[c"G@V@" C X@}C;@@7S!RjkKT#B?(TsҠ@LAsTC q 1T˔T<_CˠT@@7`=7@{{AR5@{;{AT&#h;Tb}?? @?@! 5@ T @@@  T w?H8T}ӰA @@?@ @ @@ @ @8 _`T?5T @ l5?@ ;@?tC6!;G@t@@9raT D@ (@7!@ R"@9 q T3# @`z6A@ rTR= @ @!4!L ?qT@@7sb?T@ڂ @!4!L ?q%T@@@@ssRiAA?'TAt@" ˥ @@ "! @xt x4T@s@?9V Rg>S3sVE`6@@0!!tC!@!@9!r$2T!!D"@A(@!.7B@ R!$$@92"SAC[BcC{ɨ 33gx.;@!? !tC}G@ @Z@9raT D@ (@7!@ R&@9 qT @ _@x$@!7@ @ + T @TA  T}@ @@@@ sT sx3|Tf @ 4fU@@3@ rT?@!!CtC:@SA@[BcCkDsE{ɨ_@LAsAR?7@@s T:3T>gj4}ˠ @T B эTDB Ձx`Ax T @@ A @8X @@76@bTn5@ Txt@{4@V{4sрxsz6@a7R!`0@@r@s F@TD4 !F!C@!@`? T9}9@9cTB5{! T @ha@{;Y{;AR?;C4 @eѿ;@{C@mT`{y@?q)T!Q9T@xd` ?8@?@A@ @`@x$sC3s@C@Cz ц;3;@@Cz  @ T]3;%7;E9;@H ;3;@  Tzs@?qT!Qs !F!C@!@`?,T;>;@U;39 @;@Gc@zps>s@vzv9;9s;@A,@? q$R@;9`6;@x 3E1s313@{![5Т.Dk9S:cs#G@@d@CBwC!A}ӛB@Cs@3 w#!@C`@B @v@Pn>@``@SA@[B{Ĩ_W5@1h:{@a6@qn@&Ra z"q@ Rr ?"j@@T *a@ Rrk @T`Rҹ" ATĚ `k@B4DB@9BRT?TR!#0r_q @Az T R* vC C@@#@Ru@! HӁ4Ru`@ HӁ'RR2lr!T#@heR_qR"0r @Az!@KT R* vCvC@@ cR_q!0r Bz@aT@@R* Trwe' ]g{S[vCc C@3@@9u_07 @ A@xbx@@@ *(X @5k+/ R?jaT?rT9 H5H6@@!`Aa~g(LhW!`T@;R` H6@@ `@aW L`{5~g aTl(a@e 4)aAe!``TA`Jl `j@T9`@a_q `o@@7vCw C@kD@+@/@SA[BcC{ƨ_ Rr!j@`T@/RR@ RjaTrT@@6 Rr? j@ T@R ؚJ!?j:4A?TeR(pR@t@9 H4*/RcR2t@ G7 R5R/RR@ c@ayoA`9RtRo@`j4ktRR2krTk+/u@PqR@vC@@@ f{[vCSckB!@@? C @9S@`06t_r @9aT!D"@A(@7B@ R!#8@9qT 5`!@ @ *(X @5s"ѡ `7 h63H6 @@A`llr"T!`Tx3@q Ta@TRm@R 4r@ q!T@@;6$E@8@ 7?8RT9!{@;@!ٚ? C"T!!"7@B @_T @*# s@ @|9@ @@?h 8@ 5RrB RB*U Rr!j@T@6 @@yR! dqTvC@@9A76?B,DGC@:@aAt}ZMTs|!ٚo}C?뀣B,T8@9XF@T{TlBx  "џi T@ @46ARl @y@!@`4s"!6d!@g6BxRB\B*B7vCt@ C@ւB?@@ASA[BcCkD{Ȩ_q;@# @BAB@Txc*?RT9@}R m@VA,@? q(`_)!@9@?98RRjrA Ty@s"!@ Rn@`!Rr$``sA#* #rsvCsE@3@[,DZG@B@#99}B@ (TsF{@@T{!@Y@!`AsES@!@oR!@ d3@?s~`_@y@YvC@@x&mG@ZD"mB@Bs3-m@! s3s@! 3r {[kvCS! Cc@6@@9ׂ_07 @ A@xb@@@C*a(!X A5+R"jT @6@@a@"@!fCf!~c~!c!A7@R!0r!~ ?q`T!fftvCԂ9 C@;@SA[BcCkD+@{ƨ_֡H7 _r:R` T RjaTrT HS4 5@*@ Rr_ j"@TbRkTA?T@B4DB@9BR5?TR!#0r_q @AzT R* vCԂ/@H6@@4@@H6@@8h@R"0r!4D _q!@9!R_jT@@R* vCԂ9 C@;@+@/@SA[BcCkD{ƨ_֡vC!@:@9 RjZzZFӁTR"0rAa@Rm@`@ R?jaT?ra T# H@#4 Rr_!j@$@TRRq@ HS4@|"g@`@$@ b+T|#g cT^%a^ e!T bT cT^Ca^ cT@R!0r8d ?qTKbE_hT?iT/R\m R* 5RRhrT+@@*@@R* $'bA_TcRcF_qR"0r @Az!@TnPRKq@# HӒvC@@m cR_q!0r Bz@aAT@@R* 8\s5a2 {Sc`vC[ C@5@@9_07 @ A@xb@@ @!*!(!X  5#`*`vC"@@96@ @6@@ 7q ؚЀ@RB4D#0r qB@9BRj T R* svC C`@@#@SA[BcC{Ũ_@ Rr!jT@@7qLT ؚ!BBЀ@R4D#0r q@9Rc _jT R* Rk6KqT$ؚ!BBKq(ؚRpR@RgrT#r"RnsvC`@@ {Sc`vC[ C@5@@9_07 @ A@xb@@ @!*!(!X  5#*`vC"@@96@ @6@@ 7q(ؚ8Ѐ@RB4D#0r qB@9BR?j T R* svC C`@@#@SA[BcC{Ũ_@ Rr!jT@@7qLT$ؚ!BBЀ@R4D#0r q@9Rc _jT R* R9k6KqT ؚ!BBKq ؚRpRR;grT#7r"R|msvC`@@{S R`@jaTrT HA4@ R?jaT?rT" HB4 Rr! ?k `T@k!@@T`@@?ן᧟KH6`@@@H6@@!`TT!`@xSSA{è_@ RSA{è_Rk@`@@O7RkRo`@ Hk`@T@@@?'ᗟKRo@`@" Hӵ`@@?Z@@B@_Z@ {SЀ C@` @$ @E*(cX C5B u"@67@ @A@@?য়5@` C tC@@@SA{è_bH6@ @A@@0 `W`4@j1R R|frT` @$ @E*tC@@{SЀ C@` @$ @E*(cX C5B u"@67@ @A@@?ן5@` C tC@@@SA{è_bH6@ @A@@0 `ן`4@iqR`R6frT` @$ @E*tC@@{SЀ C@` @$ @E*(cX C5B u"@67@ @A@@?ǟ5@` C tC@@@SA{è_bH6@ @A@@0 ``4@iqǟR@RerT` @$ @E*tC@@{SЀ C@` @$ @E*(cX C5B u"@67@ @A@@?ෟ5@` C tC@@@SA{è_bH6@ @A@@0 `ෟ`4@ei {C@@ @A(!X a 5ScvC!Ac@$@a@9e @xea7 Rr?"jT@@!@R!4D 0r` Bq@9R j`T Rc* svC`@SA@@{è_"@6@@!@Rc4D$0rD qc@9cRj@T RB* Rb Rrg RRdraTS@ @ditC@@ {C@@ @(X 5SbvCAB@@B @xb@ 7svC`@SA@@{è_RRdrTS@1dtC@@{[vCS C@3@@9a_07 @@A@xc`@! @ @A*!(!X !5c@6@x"@`_ @@6@@@Rc4D$0rD ~qc@9cRj`T RB* vCt C@cC@SA[B{Ĩ_Rfx"`_ @G7RfR@R^rTc`@ @hvC@@{[cvCS C@4@@9_07 @ A@xb@@ @A*!(!X a5#"@6@@@@6@@@T ؚb@R4D#0rC q@9Rj@T RB*ba vC C@@#@SA[BcC{Ũ_RfRfRR]rT# @hvC@@` X{[vCS C@3@@9a_07 @@A@xc`@! @ @A*!(!X 5cB@6@@x"`_ @!@6@@7@R4D#0rC q@9Rc `T ך!4 RB* vCt C@cC@SA[B{Ĩ_֣4 RB* R%fR"fRRA]rTc`@ @=hvC@@5h`@ X{S[vC C@3@@9a_07 @@A@xc`@! @ @A*!(!X 5cx"@6@@`_ @?rT@6@@a@R!4D"0r _q!@9!R_jT R* vCu C@cC@SA[B{Ĩ_ւvCB@B@9B77G7ReReRR\r!Tc`@ @gvC@@{St[vvC C@3@@9a_07b @@A@xc`@! @ @A*!(!X 5cw"@6@@a_" @_rT@6 @@c@Rc4D$0rD q`@9RjT RB* vCu C@cC@SA[B{Ĩ_փvCc@c@977G7R^eR[eRRz\rTc`@ @vgvC@@{St C@a @! @A*!(!X a5[@6@@u"`_ @@6@@`@Ta` C tC@[B@SA{è_ReReR R;\rT[`@ @`tC@@ {St C@a @! @A*!(!X a5[@6@@u"`_ @@6@@`@Ta` C tC@[B@SA{è_RdRdR`R[rT[`@ @`tC@@ {St C@a @! @A*!(!X a5[@6@@u"`_ @@6@@`@Ta` C tC@[B@SA{è_RdRdR@R[rT[`@ @`tC@@ {St C@a @! @A*!(!X a5[@6@@u"`_ @@6@@`@Ta` C tC@[B@SA{è_RedRbdRR[rT[`@ @`tC@@ {St C@a @! @A*!(!X 5["@6@u"@`_ @A@6@@`@@Ta` C tC@[B@SA{è_R(du"`_ @G7R!dRRA[rT[`@ @`tC@@ {St C@a @! @A*!(!X 5["@6@u"@`_ @A@6@@ab @BtC C `@@[B@SA{è_Rcu"`_ @G7RcRR[rT[`@ @`tC@@ {aSt C[uc@vCe!A@ @#@ @ @A*!(!X vxd!5@6@@x"`_ @a@6@@d@4DӟZR%!|@#0r@9C !qRjT RB* vCv C@@SA[BcC{Ĩ_RcRcR@RZrT`@ @e@@ {Stscxw CsvC[kA@`@@@ @`B5xb@7 @(!X  5`R ?@qT@ @ @6@@c@Rc4D$0rD ˟qc@9cRjT RB* vC@@sB7@a@A SA[BcCkDsE{Ǩ_`P7rT,!T ?qT Rr  RkAT @7 @@3`@9LGaxP@q T?qT?qTY`5R\@9R@@"4r?quR RqTA@@ @!@39@@7vC@@RbR}eRRD`r`@AT@@@ @ @:xb"a!`]BR}^dR\_t] {aSt C[uvC@!Ae@#@ @ @ @A*!(!X vxd5bH6@@`_w" @H6@@ba@R!4D"0r _q!@9!R_j@T@@R* vCv C@@SA[B@{Ũ_R'o^'@Rk^@`RRYrT`@ @CS@@{a`[uvCS!AB@C!@C @S@@y@s"q6xc TTq TRqTt"aR@ @b(BX 5 cH6@@qT ` Tq TTq Tq! Ta `D T a@R!4D"0r _q!@9!R_j@T@@R*(vC@@@SA[B@{Ũ_qT@qR! @b(BX 4*Rn_rT@ @O7 R]qTW@` ` T\@`tARBRf`@`\@`!RA`R' `'@``oT&`vC@@{SsszA[cw#`@94stxvC C@@ @9 @T`F@T"n`" @A C@FG7xb.V `RsvC[B`@SA@cC#@{Ũ_n_ @B0BP _qT@@!`n``*FG7S R`9ARz]@`@"\n @ {`[vuvCStA!@B CD@/@" @!@9s@? @xbT`_ @A,!T ?qT RrB  R_ka T@#@!@+ar` TK@`**'`DGR`"R'@xA9Ad!@R4D%0r` q@9R 4 Rc* `F@TvCw Ca"@B/@@A@!SA[B@{ƨ_AB!@W[@`6^BRCc+@#larTRA!]*'"Җ[v^[ {a`!CSs[wvC6@A@@@C @@@(X 4xc` 5@6_rATaЀ@R!4D"0r _q!@9!R_j T R* svC`@@SA[B@{Ĩ_֠@@7bЁ@RB4D#0r# qB@9BRj T R!* R`@_rTG7H6@@A`UYrT!`+T~g!` TAe@Ra"0r!4D _q!@9!R_jT@@R* @R*]ra T@@ Rr"jT@@eЃ@R4D$0rd  q@9BӥR j T Rc* RO\@`|g!` TRa"0rd@Rh[]A`a eЂ@Rcӥ4D$0rD q@9R jT RB* @@lA`,[cЂ@Rc4D$0rD qc@9cRjaTUbaЀ@R!4D"0r _q!@9!R_jT@@R*(P`@b@c@@@7C @TΕb@@@@`@a @@ ?T _88b @_T"@#RB_(! 9R 4 7ARa@!G7` @n(a?A9~g8`g `,TA`R!;Ia@Rr`TR!<@9i @b7щ_{@{¨ȉ  {R"0rS @?jT"R?jaTX6@@6@!@! @A6#RR!@!``t @ R6a@@7 @qTh7 (qh T"_ @q Tp7qTa@Rr"a@ `7 R*`a@` @!@Ɩ 4 7ARia@! @6`@@A7 TRr `7 R*`@@@SA{è_$CRr! a 5a@ R!*aa@hg(@!` Thg!` Ta@Rr `7n@Ra@9`*`(SA@{è_$Q_qhTA7f_R/a@G7`@b@` @=nSA8a{ègRr! aD5 R!*a@@@?rR!~w`@sa@b@|gGh`@d`@p`g `,TA`R!@=P @b7ۏ_{"@{¨ҏ { 7@ @{è_{S[*B @"@V67R 0rjTR r`  qTCP6`@@c@cxRBc\c*c@@` @ SA[B{Ĩ_Rc@W7`(q Tc @qT$Qq Tzu@c@`qT` @TX7@A7`@ @T)@` @a@@ a @?h 8c@W7Rc*c4D@94lA@9 4RRݗc@X7aR׎c@Rc@`qTc@RtC@@@y" _q@T! @DFxa>ARG {SB[c@@'c` T @b,BT _qT#"RjTR 4r` qT"c@`5` q`TRAR r`  rkT7f@@'`@2`@B'@@A!SA[B{Ũ_b@@@7B @_T`@@r T*Yc@6U`@@7 @bT#@7 @_"Ty`@f@R_f@@'d @@DB@}T9 797@TZ_TG_T96We@DhCiB @}˟ T5_iT h96c_T @! TA?b@d @C@h#8BTDD8!?T$@9C6cc`28#@9c|Scd2C8b@@2`@7 @_bTk  _#T@c@TccccCcQ˧d8D@Th _!_Gӄ| DT`@f@?qT@a RdL@9!xL9R]u`@f@@@f@`@f@@ {S @A6 7 R?jT7 R+Ra@ ,T q5T Rr! R?k@TSAR@{èT  @q T_6R  $QqT!_6`@@` @SA@{è_T Rr! R?kTRSA@{è,` @SA@{è_@ {!R  @_jaTARc`@x` @{¨_R {R%4r[*SBc @"@'҅ qa T@x @@#vp67x7#@ !7b@B @_T#@c @`u`@@7`@c @R@!4Dh 8`@!@9x\*`5v86`@ 7B'@@ ʠ SA[BcC{Ũ_67 R`@@##@ !7b@B @_T#@a @ T8T@9"B6!|S!d2BB`2a$89aTa @a@ *d@lA@94R҂R {S[`B@'Ҵ@* ,T qT Rr! R?k@TB2]u6@@7@R#@6R$E@8@}cu86@7sB'@`@ @SA[B{Ũ_ր@ @@#@N { /A/@@* @{èm$c0R#0r{k$BS[3@(g @?jT_q!tS@!?qT@5@RrR *@f@5!$EB!@?TuBE@A @?r TX6@@ @4cL q!T@c@%T AP6@@@@Kfl(qTf|@4w@!$E2B!@?TZ4 URcssKfc؆4fE@@D @K?"%TK@C$@JT@|@ǟ@!e78TѐR⏀fcsa6RsKfc5 _ @K@\ fΈm T|k`8@`4RÆ1TK@@@T @ !4Tf 4s@5@!@? TcCsE @9BP!@AAB$3@{@SA[BkDc0_f(qT*fߒ fы*1T`8kSTssf5sBE`@ @+7cs",BT _qT Rr!  R?kA'T@@ @K$@s_8Uf4@ $6@aR 1T*fcURsZ#? Rsh@@&7Rr R*s4fs4sBEcRsrR`@r @! ?kTBRCډK@ARI T@A @*cRt5@  @qTfTg@ᏀCB_MT@!!7@ @BTcs Rr  R@rkT@@~@@BC!@7@ @T @ffןq5@{ak;8@@!TcCsE(|@Rf @{ ՟mTK@``@8k8T*{{ȅK@s_T @`CT` 5f9@ @{sҩ5ff @{Њ*f @;Èf1T@ @{[!@7@ @bTS @h;8;K@_UzAT@ @{[@A7@" @@_bT9 @Rs{`K@@! @sRs[R23Z@@BRCܒK@R\:ARQ*cs@@ @BR!R2crsT`@ @! B5@Т@"D@! ҿs~@aRfR-R@BRsj@@뀹T @Bz@ҘG ?T75 _#Ts T@9c8 _"TT ;C@ARBˀ@a!!@7@ @T @fT{_;@hT_iT;B@??@k*TK|@ ~@_T ;W5ocsZ>3{S[B"@/5cR!4r# @ ?q!T@y @@+9!7`@ @TK+@?` @c@RB4Da@B@9!a`@x\*`b5cC#@B/@@ SA[B{ƨ_BRCpx@+@lA@9`4R҂RcC#@c# { `@7 @{¨_ @{¨E{R&4r[BSck@7 @& q T@@3 xR\a @*`?Tb@@ @`!cT 3@4ITb@7b@B @_TЍ3@c @R`j`@4D@9`5_T+{ @z` T`@X@bTT˟T7 , T_9Z`@`@ 7+@B7@@ `SA[BcCkD{Ǩ_@@!T7*߈a@`@Ab@@!7 @Ta@#@eh:8"Tdha8h!8!?T֏a@ @:`@6YmŏՆARf` @`@`6+@ZZ@lA@9`4R҂Rl0+>{S[*Bc8k@?/{/@2@9?$q T@$@@@"@9!@y`@2`q@T q TqTB?@@AʡSA[BcCkD{Ȩ_֣Rc?T/L/@  B@ Т@ D@! ҿ@ ,T q T Rr! R?k`TRb @Rf@RG97@!? @?qT!Q R99>` @@9hq(T R"ERD99c @R!?d9@ @@7{;e{BRSBRR`@@` @SA{¨_{BRSҫRw`@@` @SA{¨_ {S*t6 @7 B@b@`D@c zoFBC@B@!?TBAB@Sx!a@! 2aSA{è_~@@c{S* @"_qT7 B@b@ D@! z0@SA{è_A6~R!?@ {[SB@'4 @?1T!|@"@9 77 B@b@ D@!!aB @ B@Rr_|Rrb _Bv `@`@ `@*a*@9_@`@B'@@A SA[B{Ũ_@96`@2` B@sb@ D@! # B@b@ D@!!aB @B@_|b #@ R`@2`@@ARsLIF`R$`R( {7Sc8 @q`T[k/q`TsR֢r sa@_!jT $Q_qT4QqT2@90qT`@/qAT"T@7@sE`@a @?qIT!Qa SA[BcCkD{Ǩ_4@ @4@Ts@R r `*7b6(`@ @@@? T@@ @a6@ @!<@4@?1@T?qT @ aTRCRB׀ARRga @?qIT!Qa a@ \@2 \a@ \@2 \ @ `@``@xBx/q@TSA[BcCkDsE{Ǩ_@qT` @qhT`@zHC@94SAcC>SA[BcCkD*@=[ks7 @_ rT@|B@GB`@?$DbBFT @@7@|}d L"cD`@@@?T @_T@c aT_{@v{ R{S@cbG[Vk5aB@y Qq T`@96y@ @@y qT`5 @9`63 @906!@  "R @9`069@SA[BcCkD{Ǩ_֢B@X`xb@ s@`B@y q`;TTX`T6R @ @r@TqCzT`@9/6@E@ @!_6@TRҙa@ @@y  qT5 @ T @9@j06!@ @9@706`@96Ry@tC@JTS`@@@y? @AT @?($BT@stCa@@#@_7TR` @T!T $TB*T%#@! ` @TR ! 9@`|@ T&T@T^_*Tҿq+T3!A!@3xx@@7Tt:5:`@ r5T>A@x{4@0!X a45H45@RRRvIV&5RRsEkcRR!Ҟ @@TRASA[BcCkD{Ǩ{b@4A@xb @A7a9R@aTb@ERd9ҁR?`@9y@06 C@y  qT*5 @6R T @9S06 @@9a766R@t@4 @@@ @7a9R@!Td9ER6`@977dE@@!@a%`7Tb@"A@xbaT%RҁRSA[BcCkD{ǨTb@4A@xbTs@`@@4@!@?T@!@A%RSA[BcCRkD{Ǩ3`B@y ?(qTq@Ta@,qTqB @@y q'TtC@ATzT 4! <@4Rҥ#07A)TcG()T0TCT44RT`|RT! ;@$"T aT`|T T@T4R@TRaT! 8@T`|T T@TR4RR! :@R! $@! ! ҡ4R4RҲRҮ6R06`@9r@T|!Z@ @@`TsE%RҁRsE8`@`@!@4@!@?aTI @@y qT @TqKzTq Tb@A@xb@ERRb@_!T_Tq!@\F@?! @q"LBssEb@A!@!xb#0@90qaTe &eRҡR6R6@@55Rm4`@ r!T4RRRщ@aTeRҡRsE_8T5ERRsEq!@sE{A@x{T%RҁRsE@ @@R7@7@TsEl4@T @b 4@t@B@y_(q T RqBzT@b@@yB _qTw@Tq @ T@Y C@y q TR C@y q T! ?Xq TЪ֧5B@yRRc RqdJzҁ҂@TRAa@A@xaY5RR.44L qT@@R77@V5R@҂@A@xb@ZERR@@eRҡR@s;@`@rT5V4@ r!T`B@y XqT @ @!4!L ?qaT@@Z4RY@aT`B@y@ Xq T @ @!4!L ?qZ4aT@@ERRsE9@:RnR!Ҡ`!@BRsEfARRRRÈ@`TsE5RҡRAR݇xAR7ԇ7@aT@@eRҡRsEAR7Ç7@s@9} s@9} {  @ $qT(qT<qT @{¨_  @q T?rTAX6` @ @A7` @`@  x` @ @RR| 0@9!$Q?qT@`@`@7@!$Ea@!@R`{S`B[@@7 L4qTAp6 @sB7@a@A!SA[B{Ǩ_$E@8@7@_6c Cks@D@ @`@ED "@G@_@!@&FC" C@Dc@@@ @d @@@| \@ }@@7!,DBC @B@ TG"F!@!C@@@T CAR[ I@ _ @A,!T ?qT RrB  R_k T@@ @3 @T@3@B7@! @_T3@ @B@3@!FE!@@?LTD C@@@ ZDGB@@B@!9F#CC@"@@!@! @A !@!@!@A @A@?qIT@!@ R` R|@2 @cCkDsE2BR|TB€RohARRs@ 8bpdcksZ {   @B{èi{{ =CsB#)k@'  ==#='=+=/=3=Q'@`@ ʀ @{Ш_݀{  ҇B7{`@7 @{è_ @{è { =CsB#)k@'  ==#='=+=/=3='@`@ ʀ @{Ш_֡GRSz{  B`@7 @{è_ @{è {S[vCC"@a@@V@@y!X7BRqT`@@7@7vC[B@SA@@{Ĩ_x`@`7@r!Tw@Հ@6{RSBd@@@,T qT R Rr@ kT@ @@6A@@x*5!a@9q!*a8T @ATqT Q|SapS! a b@"bT KqMTQ  "@9"*"8?TB@@ ʠSA@{Ĩ_Rۇ@@}@@@@xBtC!DFB@B@@yB @!xb {SU @4L qT @@4rT"RR@#RSA@{èOAR SA@{èh{E {_rS TRRRɅRRR@@SAR{¨SA{¨|CX {S@"\@x74@t#RSA{¨_ֳs@sSA{¨_֒x {  @@6@@7kTRЁ @{¨_Ra@6`@R @@{¨_ !raT{ @@ @ R }` @ @{¨_?@q@Txku{S[BcXr@?T@E@ @rTX7`@?,q@T?0q!T!Rja9T,s!T ?qT Rr  RkT`@{ @@7847@A7wBE@ @#P6@@@9(q T'_8(q&Tkz@ka8(qT!7VAkDkD ҔB?@@Aʡ1SA[BcC{Ȩ_7@|@K8qTR 4r q TR~|@6$E@8@@77@Xxk,T_8qT[@@9qTZATT+~_9Z៙R`@r`@ `@2|@kD7 sEBR] @ @!4!L ?q T@@ T{7@  ~|@6a,!T ?q T R Rra ?k`TBR9BE@ @7`@;@cJC7_ T7@A?(Tc7 5`@R!4r qTR}a@R7@r"a@b @!@_h!8a@ `a7+sERk`7`@@Z7R9@9cR~@~@?T*_kJTkD7AR\T1tRv`#*Rv*`@{ @@7<628sE@@!@;"a7c}k68Rra@7@"|@ ||6@9@9?k@TҞtBE`@@! @ J@6 6$R9~A9 5;@c6nXB B@ZB @@}?#T @969@7 @T""cT@@TCQT@99F *?T"@9"b8 !D9TqT@TkDݷ6Ry T@9 TT@9?6w;@sEz;@7ks;}ksuXҎ { RDS@ @@s~!js8(7SA{¨_֠#,@dE@@@@C?,@?qT!QA@@ @A7@@DA!ˁ A @"@#js8xj38SA{¨_RTu|{S @"_(qT_,qT7 7 @!x ) B@b@ D@!cBFc !C @!@B_jTcAc@sx"b@B 2b:wSA{¨_֡76oz@@C A9qaTA@T @ @ ARv B@x! RK@@t@@b @! RB t {Ss[6U @`<$q@Td7X6 @d@6`@@ @ 7<q T? @qaT$QqT6tC@@906SA[B{Ĩ_ր @qTraTq@sbSATtC@@9| @zT RbrAT@[BsbSA@{Ĩ_ 55ЂR!tC @@9 q@T"R!Rv`@x`SA[B{Ĩ_֫|RCB+Lx @` @` @R@d@ Rj T B@3 b@ D@!Р" !$EtC!@@!@ @ 0@90q!RB+tr} @@d@x"RRvКr@d$QqToRzRA@xb~s@`wЁ!@Esp6@b/B!@?B0Ѓc@EsJtbB{SгЁvC` C!@@"@9BraTBDC@b(@7c@ RB $B@9B_q`Ts C` @SA{¨_b,@_ qT բBFB@B_T s CB@B`` @SA{¨_"]{vC@ {СSгДvCAd C!F@@!@@D @!?uxd-Ts C`@@SA@{è_"9{@Р!tCA!@@" @xb@ @x @ @_ {Sд[uvCA@@B @7xb|@@B$@ @B@B@B@Bx`V@@B\@"6Qz @@ @@ @svC6x `@SA@[B@{Ĩ_ r@@! @ fsvC[B`@SA@@{Ĩ_ {SдavC[ C$@@@9@9_rBAӠ@87@@yc dqcavC!@"9b7svC C`@@SA[B{è_#Re/7QavC!@"96!9!*!|S${SvC[ @@@9G6&4p7bBEr*@9f5 7 RˁraTq@@TvC@@9raTD@ (@7!@ R#@9 q@T!@!`ASA[B{è_C86c(6*SA!R[B{èSuc@b/Bc@B0Ecr~B R>u@!@!`A{S` C[@B@"@Ҁ@7X6 @ @!7!?(qH TvC"@A@9(6A@987!rAT s CvCa@ @@a@B@@A!SA[B{Ĩ_@B@B @6!R~@ @? @qT$Qq)T!=bRv @@ R}@@p@0r@@@@y @Tqs CtC@a@@@@qzq` !E {SгЀvC[a C@5@@9@(7@9 7@@7@@|*҂SABR{¨!+ {S*[c @B8kTksqT q@TTt4qT@X6 q @T"q@TQqT@9Ҡ 6R* +qTҟkT@**q\!}*HTq Tq TBѠ kDsESA[BcC{Ǩ_֡6R q@aT qRs"@*q\**!} T2qHT<Bxy B.q@{9@T|Rr@@ b72qi T@A@@A@@9@ 4  @9BBxxCk!x8SA[BcCkDsE{Ǩ_ qTbѠ SA[BcCkDsE{Ǩ_>qhTB @9@07ja8!҂@97 |@67@@9"4@9 @9?kCTB|@A>q T qT <*Bxy B@9Re@{977@@9`**+ SA[BcCkDsE{Ǩ_] I J Z@@x2 qTҳR\*" a|@BK"}!@*#!hb8b@hҽ@s"RR"RA `Z @xC! 2@Z` @@@!@@@ R!}*7ja8B@Ǵ7@  {R"0rS @?jT qAzTqTRr `72`t SA{¨_`@ @` @7`@ `@Rra@ `a6r`@t 2`SA{¨_!R|a@Ra@_8Bp_!xa`  { `@7 @{¨_ @{¨Ϸ"@B"{"@ B"߯`@7 @{¨_ @{¨ {!S B@!b@ D@!aBa@Bx SA{¨_T @!-{"BTBS[6A@!!HE!@ ?rTc8k9s! C@D7@@ `@6`@@<@B5 @aC@4 `F@?kTRݲ@@ |`F@`C@ \@7@7 @@ @@y qT q T @!R*`@@ @%@@ D#&!@bG@?A@@F!C' C@D7@W@!@! @!}"@B@B@B}!@? T !,D!C@!@ TcG' CRb@BC޳D&F%@@@Db@@!F"C@"@!@a@B@B @" @B@W@7 @5a @?q T!Qa  Ձ@a6@@@`TY@ 5 RSA[B{Ǩ_!@@7v4 @@5cCkDsE|@|@!x S@_a @?qT!Qa RSA[B{Ǩ_#R|@@<  `F@`C @ 4 |B@95cCkDsE5!x _cCkDsEI @Q  aA)x`?q(TcCkDsE @@@y 4qTARR_A@ $~#UB#D`@@6`@@<@@4!@@,ѹ: !!`D!@a"@"!0@9!$Q?qHTC@`T!!F!@A"@!0@9!$Q?qTTRC@T_ {[6SB3@7 ckBsҁ@?r:a Ta%X6` @Rr_!j@(T_3qTB}!!2a@ @9` 06 *B@9Bc@xadeh"x! T` @5`@Ra7  B@a D@!` @4Q` `5a@ R?jT cU"@BG`C| dBT` Y:3@9_/qT_3qTYcCkDsEւB7@@ ʀ;SA[B{Ǩ__qT7_3q`T`@@R`@p`_+q@T T_;q T_7qbT_/q"T_3q T`@@*!!TA!@?qTa@a6@!<@b4!@ xC@`#" '@DR҄@9SRRҾ`@b@3@3C_#qT(T_qcTa@` @6_8Bp_` !_7"_<qb@ T6R! ?k`(TR?kA @$T"hb84BQb9`@ `@ @a@_3qAT 7 ҚR7_?qT{ @{ T{ @T{ @̸Ta@ B9@07#B9`R$ RRqd@zdDz a@ @`"B9"06?`@(@¸`@0@`@8@ LE@?aTa@` @!@" @ @!#Sx`@@94`@g @@@AR:3@93ӱ!@!!2aT` @`5:R!R>rTz2@9_3qT`@@!-a@A @tCB977Ҵݨ`@@@a@` @Oa@ A9Pq`Tqa Ta@  qTRBR r  rkT  @q` @`T"BBC@`T"BLEC@T"B`DC@aT_)Y$ hF@? Ta@`@a6@@+a@ ua@  @q` @T"B$Q_qhT@a5@ `@@ @6@A@!B<@_1T_qT!@? TPa@ @`ha@ @`a@` @` @a@AR0a@ @@?q T!Q"d @`@b @ @xaYx#Mٮa@!ha85շa@; @|@ B @a `@ a@` @! A_ `@ @A! @ @@@?qT!Q`@ @ F@"a@! @N#A\xc!@  `@ @d=b`@ @_1T!@cks{?q  @aT !Rj@T bU!@!G`C| dAT` @{¨_` @@5`@Ra7  B@a D@! @{¨_7!!C!@95!RjT bU!@!G`C| dA`TRr T @R{¨! -a@a{ @` @@ @6?@?q)T!Qa @ @@ @6?@?qT!Qa @ @@ @6?@?qT!Qa @ @  @6?@?q)T!Qa @?qT!Qa @{¨__ @{¨İða @a @a @@A @6 @Rr!j`T!x A@?qT!QA__{ `@ xx` @{¨_ @!!`D!@?T!!F!@?`T{ 0@9a @$Q!a q T?qIT!Qa @{¨_@@ @6_@?qIT!Qa @ @{¨g_ea @!$B!@?T!C!@?T A)c2 ?qT!Q_P  @Rr"j@TBx b@_qTTBQb_a6*;{  `@ xx` @{¨_ {S[ @! X7 qTa7 7@ @ @`TsT!@"(AA?3 FT`}s"̲@ SA[B{è_@ @ @T"@bBsT T@ @@a @"aR@ @ @R@R, {RRS[@ @@D uAB FzT %b @Bуjb8C5SA[B{è_R@_ a6 @!  V4"SA[B{è= @7`@ @bT߳` @;`@`@a @@?h 8cQj"8R@6R  @?qT!Q_{$RRS*c~B:d9R!R6R!R=R* F@@? @qT!`D @? @"_ @qT @?qT!Q s~B9SA{¨_$QqHT!`D @? @"_ @qT!!$Q?qT0!!$Q?qHT0@9q T{S@@3cR"[*vc cJ@9d@kTS@@!@ rT[BcCRSA{Ĩ_a@?4"@@?`@`aJ@9?qTb@_,T_`T?qT`N@97@3`@@@?qiT!Q@R_pRSA[BcC{Ĩ_`N@96RSA[BcC{Ĩ_@?qT!QRҐ {#R @S_j[a,T*6C0q`Tb@U"X7B6c@W @q@Tk"qTRAR r@  rkTcCkD_ rATSA[B{ƨ_*SA[B{ƨ*qTXC B@ @ D@! RV) qTTkTBр  *q`@`T@@ `@a@_(q@Tv4 *q`T\x*`@`A)R r\?q*T!Q SA[BcCkD{ƨ_ֿqT+* Bx{9B@9Rd@${; @9q c˃T`@@``@a@@!@`@+@ R RSA[B{ƨ`@X@a#R&QqT6Bxb@!` @`@5@`@@@ @6@A@B<@"4!@ ia@ @Ա`@a@ @~ `@@@v`@*x`!?$qT4Rr a7B@ TLE@ TcC5 @ 4`@dx`j8 @5!@` @p` `@@@ R`@*`Ra@` @!@a` a@ @Ab}!@*#!hb8b@ak B@9B@!a@" @ " A " B a@"'@"!'``@\2`kD@X`uRbр +@SA[BcCkD{ƨhcCa@#RB*!xaURʬSRnck+{S @?rT"R?j T@`!TSA{¨_4aX6Rr_!jT@t@?q T!QSA{¨_?qTR"0r?jT  @qTRr `6SA{¨R;tSA{¨_ $QqTSA{¨R!`)Ra@-SA{¨{c[Bk@ҕ2@90qTB@@@ @[BcCkD{ب_xS@` @`SAs R7 T@9R@9R70rr*_qT*a!$R$8kT`@R6R@7 @tS `@ @9``8`4| @3@9$qT @:@@@jATj!T?$qT A7 @ @` @ @@ @6@"@!<@a4A@!s@3@ @k T7@T@9@9*_q@aT @9?k-TvR@@SAsEAR@ @@!|}"T@?b@@Bx b@hTrSs{ @9_qw@ @{èP a @$p6{S@4T@ @#( TR 0rjTxR\*`7 @[d@v @ ATf` @²`@a @@?h 8[B`@e@2` @?ˠ b@@@@` @t T8SA{è__֣@` @_8Ap_r8SA{è_Rd@e@C.[#R{S[!@5XA` @R"0r?jaT@` a@!?qiT@6RR k @Tk T@ @cRr"h`8B"h 8 @ca b2d@@?cAa a@5SA[B{è_ցRCa@?qT@2 @! @8@ @ @ B@b@ D@! aR@ @ _cRr  @aR@cRr{S[*c*#0@9?qi T s@U@aTzaRqAzaTuqT~@vJ9aqT 1`Txy7SA[BcC#@{Ũ_`qT2@9$qT`N@9 @2`N9! 2@9OzAT@_6 @0@9!$Q?qHT@@TaR2 @x  @@?`T@?T@?T@?@T@?T@aT { 0@9?(qT @R{¨c F Rc@! A9?qAT|`@ @{S[ @"_0q@ T? r TR@ @ a2@9?,q TL@9!2L9 B@S b@ D@!!aB,@ B#@.a?a@?a@"a@" a@? bA)B!tb)@?!Q@a@b @ @ @Ax `@@!b @Ux!SA[B{è_Rc FRc0`@ AA_kT,`@@!2@9?,qTқ`R {S @rT`X6Rr jT!RjTt @`@*` @?qT!Q @SA{è_ЀR!/<@@@@/C  @R#r qT{S!@5 SA@{è__֥qTR@Rc FRc  @'RjT{S[c!@3@sF9 7`@xRSA[BcC{Ĩ_a@a) Ta@xRa@w6 @Ȭ@T@0_qTRRc FRcr @3@ Ҁ̫@"#Tˁ˂## #A#B"$c# !!(#!(#("!($ !MTa@a˄#C###$c# `( (%HT!8"B8$!!B"A(!!(% !T` @` xRSA[BcC{Ĩ_!8$8"B"!!$(!"(" "TxR {R'rS[c#yF @' q'9T RR_H TG B@9c8@hTT )%_4qdATq@zATSA[BcC#@{ƨ_)R4@b@@ @` T@@ TsFg9BTiT@C @  Tc + +@6 R  %R@,T qaT4!?qTR٬E'9 TiT @@c+  o+@sFC @g9  Tc+ RRq@ @JT G a@9a8sShT)RT Rs")%s s˧6+ @ 0t {S[ @a7X6 @!R`@jT!RjTҀ6a@6@ 2aqIT @ `@ @?qT!Q `@7SA[B{è_ 2aqTRRC`SA[B{è_6@ R5`Y 1] {SR!0rA)_j!T @?qT`@ rT@ r`Ta@@!@a@@! *a@`@p`? @` @` `2@9qaT`B`u Ҁ@7 B@D@!SA@{è_ցRR*1 {S@ B[@t @ D@! ҟRa@ 0r?j!T qTX7qAzTq T`@ @ `@a@Rr `72`t !RޞSA[B{è_ǯ`@RVa@ qTv @ zv~)!Rʦa@` @@?qIT!Qa@!Ra@` @A7׭`@ܣa@_8Bp_!xa` {[BSc* @"@?S687X6 @@7? q!T!$E!@!8@7@c 2!x!@@ @Sp6@@ @B?@@A?SA[BcC{Ȩ_@!@! @6h7#RBR!@k!`A2 @82+VARkD+@3 @6`q) T@q R@@@jT)R_I-TgQcZ @B_|ǛB AˁxaxaxT$Twѥe84Rш@9sZ @saT @@h38!2 @V@ Ɲ@nH6sqT@`@`@ `@T %T @`!g@ a-T `eTR"8#ɍR R6x"99)T@2@94@85@Rr`T@NRk+@6@@ @6@@7<@4@WT[St!RHF с88d@sDhd8d8RRRs b8sa8`87R8a8s˔>TW` @q TVX7pC@95 RrT@!RjTqsTaRt wxex`xH T @RxV`$QqT#RB*`@@6@2`@@s @RJJRFs+"@x2B@9_@|s `FTk@`@hiT @B8@ 7` 7$E@8@@7 7Z?C@@4@@Rc%!R+S`?kD(!R*Cr@TDs>C@9a@ 5?qT'a@F@5AB!@!@!@?T @!h_C T @!R@Rc%ZB@@ @6@+@2cZ@`@ @? rTX6 @ @TP63 @ @@!@@?cx2kD=<rAT!@*!@A֩?#ҩaͩsk@i@kD#A@sD)R R6x9@@x/!RRr!T`k+!@BlA4DB@99{R dB @@?j T#,cT qT Rr!  R?k TRS@zsB@a@Aʁ @{è_A@@@!@`R Y{ bBC@Ҁ @b,BT _qT Rrc  RkaT @@sB@a@Aa @{è_BR@2 {SaB[*c"@/Ҁ  @A,!T ?q@T RrB  R_kT2#@ ,T q@T Rr! R?kT2C+@'@V@@AJ6!$E!@!8@7b6ʜkT$T R @ @@''@+ZsB/@a@ASA[BcC{ƨ_⒖pqTT"T@ @6@+'qTT RRBR͞{SbB[ @C@/",BT _qT R Rr" _kT@F@'B9  @45'@sB/@a@ASA[B@{ƨ_R#iF@B9 B5'@@42? rT'@+)CR+ @TF96'@T2@'@@'@G @b7_{@{¨ {S[cB @"@7ҁ,!T ?qT Rr  RkT@ @@/#3WiV@ T[#@ *cޫ/@#@B7@@ASA[BcC{Ǩ_# {ScBd@!bCR@sB@`@ SA@{Ĩ_CR£ {S[Bc @$@73a,!T ?qT Rrc  RkT@ @@/#T@!RjTaF!94qHT JsFa9!4/@TLB7@@Aʁ SA[BcC#@{Ǩ_c\/@R3@@_ T@?T_T @@ T/@csFa9A6 a9?q@ATA4 @@T/@? @T@ @@ @ߥ$33 Հ{BR !Q` @{¨__ {_qS*[T@9!!$|sJF:@9!!$xsJF6@9!!$tsJF2@9!!$psJF.@9!!$lsJF*@9!!$hsJF&@9!!$dsJF"@9!!$`sJF@9!!$\sJF@9!!$XsJF@9!!$TsJF@9!!$PsJF@9!!$LsJF @9!!$HsJF@9!!$DsJF@9$@sJ` B@xa!Ba_ @@ `R9$c $HcF&(˦`@b A @bC"AB“ATq ѥ}  TT q@TTqaT@9c BC"AʄB“$B@Ҁa"ʄē bc!`A"cÓc bc!`A!abӓSs``sJqTTqT@9@9@9 @9`@9@@9 @9 @ys @9s { //@** @{èp ՠ  @,qCT0qT4qT@c@#__{S[*e 7X6v @@6@!@! @ 7?4q T 7? @q T$Qq T@? @qT$QqhT @@zr@@ T @@a5@R @"@5 @?__֠ @qT$QqiTR21 ҿSA[B@{Ĩ_?__e@e_6@!@R@@@@"   @P6@@ R_TR @@9q_"@7"H6@@ `__R_{AR.{_@@_  @7X6@ @PT_R_{@R" @X6 @ @PT{¨_ `{ @#7X6@@ @B6@@ @6@@@`B<@b4@ rq{¨_R{¨_ AC @R_ 0@9_qT@!@a{R @! {__ 0@9_qhTR_@!@{Rm @{_R{_{ 8?@b` @{¨_"J@B ABPA@Bxb@@?T@_{S[c@@ӿT|$_T}B}R7ҷa@#@JB @@P@T`jt aj4@s"TSA[BcC{Ĩ_ {S3JsA@sRAscxs c@d@?TbSA{è_[BT``u@xs`@x3 @ a@@TSA[B{è_Ұ@@ SA[B{è @{S @ @@SA{¨_ {{@"STSBa@@?Ba@_$b Bu@@_#  a@CB'@cCh_F$#nE((@B&&@G &@&@D|D@"$@%,D"$@_ "$@_!$@?BSA@{è_RRR@ {STSvCaB@"@ @@y?RR" _k`T! ? q T?q TA@@y!DF @$x`U@A@vCR@XI$ERc'@A R!D$@@A@T@A#c!C RsB@`@ ʀSA@{Ĩ_֤@D@,@? qT @`5T$Є;@@dA R!Dh@9a/6$ AR+{SScB @d@'B6 7BX6 @ @6@B@B @b6A h6sB'@a@ASA{Ũ_@ ` Pq T@ qTRAR r@  rk TR 0r_j T R_jT_rT RrA T@@ @@*R qT 7ҁ(75RrT- U@?x@?@A#R*!@!`@ @X6@ @@T RrB Rr_kAT @@@`6@@@@@a!H@9?qTARP@@ @7@#@0/rT@ARi~@@w @u{ |@{¨_@ @6"A@ @ 7@6@@@T!Ra9 T R @ Rr? jT@@@R {[@SkB_@"@g6A!$E!@!8@!}! SG6`~7R!4r qA_T@@_@_@Ts @9q;T<?";T@c@c@;'m?k9iT@9q`aT@8?q@%T?AT?T@@@@R_j"@!6Ta5 @?T@@ @.h58@@?T@9 T@@9qDT;@gRRq[CTq+T)Tq,T*TqT@9qT k@9qT4 b*o@o@NP`Qq(T!!0 X`xa KT @9qaKT_@_AJT `TFAJT @9qIT @9qITA@@@7<!}A@Rv@B@@ SA[BkD{ߨ_qTɕTq`TqT,$RR"?T@4cC'Fm2@9qiT@@R@4D@95sER@9qAT 5R R@;4@[@XT R@@kT@4@@Z@T@a"b@5@ 멑T@h47` @4TkD9 @54-CC@8h!8!T R 8T@oC@o@5R8T@@?9*r@ @!T@2|4@@*5@|T@9 T@@9RhR"R#4qT TqTqAT R@9C5 [{gRq;@TqT|5 hg@9<RqTң@9b@B_ iTqAT!5z,A@@@!-7<!}A@@ ,T qT R Rr k@TBRb@g6@$E@8@` 7 R@XqTqT@9qT c Rq`TqT@90q!T #RkqTqT Rk9qHz)T@9t8AT5 @TL@@@ @T8@?)Ts@9"6!|S!d2BB`2a$89@?(T9@@4@ @@A7@5@cqTTq`TqTSСRsvC`@@@y qAzaT@R rTsa@cBB@9%@@y!!# qb?HT!CR!$!@R! s@AC@9qATgC@9"R2ARAR@,!T ?q.T Rr  Rk-TBRg@@ c!R@9qT@9 )sT#9A@@@&7,!}A@#o #E9@?q[ Ro@c@8Rr T@tC@@@@y" _q T@! @DFxa!R!$@ w@kD9M@ @w@A5@A4CC@8h!8!T T @9qaT @9qT @9qTg@'m@ @!0!P ?qLT@@A`ArTA`#I'FmsR_@Tg@ uR;_@T R@a_@T@"R@Ru8TCC@8#h 8T R 8T@o@o@ @ ,T qT R Rr kTBR;;@ @6@$E@8@7@4[@@T!7!PY6 @ @O6@@ @@O6;GM;@G@[@ @?!+7X6 @ @6@@ @*7R;GL;@G@@b*T[@ {Rs@ RR;[ R[@;" B_q,T@@!o-[@ Ro@c@8AR MN@)@@@ @@@ ;XR 5 @`g7 X7o@ro@T87YqA@@@ T<TqT:Tq`Tq:T7<!}A@ R qT 4T#q!7T-c@"E!A8C@@?qR@zaT c@@4[@7T4KWqA@@@ T Tq[TI.Tq`Tq T_7<!}A@`R- RC9S45; XRA@@@@7<!}A@ M;5 @@,T q.T R Rr@ k@-TBR M@ @R6@$E@8@} S@9"`@;5! qTc@% A!!8`@?q@za|T-XRqUTq`QTXqT7,!}AzA@@@7<!}A@@;4[@Wo{RRR W@o@7_`@zNT@q@@z *rTA@@@7<!}A@BR BHF R;c@% DAHa88@?q-R@zTCRh-8 -h!88;R4 R_@@!@ Z@{@A@q@@ TQTqTvTq`TqQT!7<!}A@;:zs T"?T@9q!TA!0so3s@*o@5B@A@s@"7 ,}@!@*?q<*}A`@7 <}@k R R%@-XR;C9;44 8R;R|4 R;<5XR#R;5R#RqjTqjT RAqA@@@@yT!87<!}A @R A`=@ A`r@ DTqT!`g `kT8!`Tc@4`R9#ɍR R4x"9c@9 R;c@V;XR4 XRqTA6q! T-TA!$E!@!8@7c@ 8Rw;@Mw@%CqTBcqBHFTB@@ @@qT7,!}A R@,qTq@TXqAT[@?@a4@Ҡ@9[q1T-c@@E@8BT@!RR kARC@M@ @a3NS@"!@9?q!STS@#9!R_@Tg@RBx`\ #R;!!rMT @!R!RRMb@R!!!o@o@@ " B_q̿T@@!DEc8@4R(  D9|@c bTe@9@e8BBD9_T# R M@@qT!R@9`@ WT'9qeT RiT@!7&*9;@LcC;@'Fm_@DTRr DT@tC@@@y" _q@T@! @DFxa!R!@% @ Rr!j T@@q\TqAT<@ R>f @R M@ RP RR8;#RhXR; @@e@6@@qhTq<@ M8RR@B5@e5;@\-5XR;+q6T+Tq6Tq@6T]+5A@XR@@7<;!}A@(Rj@A7,!}Ayoo@@ @"@B_qT@ @!=" B_qLT@@!@7,!}A@9-4- RC9@lA@914R҂RҷsETT?V|4u5 XR;qVTqUT @R 7`EH6@ @ A`=@@#qRw4lq|TqzTXqT7<!}A@;;.;@@ @[@q@@@z@zkT@&5@B8@!7 7@$E@q8@!7x@$ 7`{q Tq`T[@q$@T@,4@z5!T{@`"TWBo@?TA"B@@Fo@@9@J5c@99q`eT@ 5@@4R8kD94R8sѕ48s@4aR8sѡR8A!4@D@95@џCT_8 5?@95џTo=sUAs@@4AQoD9 4@9?q8T R!|?qT98TRB KR) R@9a c(! ! *j9 8T@9q@`64oD964[@?8T[@A @9q7T q[@@i`86T<q 㗟 9C64[@@ TAid8!!# Ci$8?<q㗟HT @9!!# 9?<q㗟T TqA @W3TA@9@q@@zAT a@e @!@i@ 65ҟ!@o@ha8 9R R# Cq,T@@!X;K[F;@K@ A` *!;XR@?kT!TBBG!@9?Cc8aT˫ @[# CqT@@!d˞!_8B_qT_8B_qT!?Tˎ @9qTA@@@7<!}A@ R!G@8?" B_q nT@@!p@R'FmmAR @`@ @qT@@"D DqT ,*}@" B_qLT@@!g@@ @7RHC@`bq4B@B_qc$-T <}@Wg@@7 } G@RRG@ RKjcs'm+! ]kD9^5@qR4@qR jT[@ A 4 D@95 qT @6qRAT @@75!" BB4C@B@|@C Tx$v@D@D$!B҄XGb @?k :T@ @ ,T0@5 @@b\@`46@B\@"87@;#@@@8 @6@@<@@4!@Cb@B@%y@c\@~B|'4 @?@ @~ @@` @A@?q 2T!QA @@@q/T!!`F#@c#@ ՠ @ @{@ @T"#@B$EB@B@_T 2qT@@?T _8?qAT_8qT @+6 @@!+<@1*Tq -T @ *TR).q T2qT @Rւ4@ @ 52qT.qY T@ @@_ q T?8jAT@@ rTB?@@ ʀ.SA[BcCkDsE{Ȩ_6q@TT.q`T2qaT @Rւ5 @:qT>qT @R">qT xC@5?8jT! @?qT!Q! @@ r`T'rT 4D@9`4 lA@94R҂Rҏ @R @R֢ @@\4RAT @9qT9}@y"iR kT@9qT @` @!6@@<@1`Tq-T @ Ty @@7@6! R@0@9,qT!! B5@ @"D@!;!a`B,@{B#@c/?@?@"@" @? @!x!2a@u@ 0@9,q!T @5@@1T||BA`@A@!A_wTҖ4@`45@@P6@_4q @#@Te @@ @~ @@ @!@?q) T `F@! @ @ @~ @@|5 @R6q@TfR@c @@?q)T!Q @? @<`R7r@T7@\5W$\@$o6! @dB!#˳@@ܷ @@@ @5ӷ~0 @=Cb@ A@ J1jT @1JT @.R" Rҋ@@7@@LTR)@*" Rzs|@! R5[! R0@7@"@`@B"@Kv @`@B C`R_x! R @0@9,q`T {c7S?B[@7Ҡ Tk*V'@@*3**qTq TR 0rjaTq!THT qT Tq TqATJ@@* ?7qCT /Qq$Nz-T+XX6 @q@T? qT @`@" @r7@? @@Rr ?7 @@!@ *+@@ r TkrT 4D@9 4 lA@94R҂RkD B7@@ ʀoSA[BcC{Ǩ_S4qT@x-@6?q@T? q*ZT52BрRr Y7 R*@@!@@6@2kD"qThTqT?q T@qT@66W@ @q(T*q)T@?k T*z*qTRm tC@+*@@y" _q@QT ! @DFxa'g RjfT5X6Rr5jT R?j @`TBт X6 @"@B"8R @?q)3T!QkDRe@  R?jTkDx@H7  'QqiTRr u7kDk? qLT*6@@*!R@q*!Tr!TRqT?qAT'+?q T@ @q` TRc  qT"q`T qTRAR r  rkTݴ+@!8 R8* @ 6@bp6@Rr R*SdAR ?Bq,T`R @q `@H+T@R? j`3T0H6xB6yEGT <HGT?GT@ @! @_8q.T @@! @@79C@ @ @Ah`8!Ah 8 @ @ @@2 h6@@q@@ TX `7@`Rr *@ r.TkD+@R tC@+@ @@y" _q/T ! @DFxa(}?q@-T T?q,TT 'QqIT @R@rB@"@ +7@R*kDrTRr 527`Rr *`6@@!@h6@@!@+@qx_6? q$AzT=kD$Qq Jz,T*PkDt q@TRAR r  rk`T@?qhTR)$@(  &+@xx_8Ap_Bx 9T?qT*$QqhTraTЀR!`)+@$QqȿT @ @_$q %T? qT(kD+@%r@ T/T q@T R Rr kTBR@3@B7@ @T3@B @4@R3@rR@@ ** \@x \kD 'QqT'A@!A` @ @& +@@@!@@x6!2R q x @qTRr +@u6|Rr u6 <T?bT A*5 @?AzAT @@ @(7 @@R @ r@B @ @@B@@x @@ $7@  @@x a7@ @bT @ @ۿ@@ @@?h 8 @@" @7]@R @ ? @@* R@ R@(@ 2+@<@ @@3@R@AR"R!R T@@? T _8?qT @ mA@!A_` @E +@ ARxR@0@1$QqHT#RB*+@@m @qT?` T*kD+@Rc"r R_kT7"_<(T?T?TT@! @?T6a @@! @ @ _  @ @2 @! @8@c @TT @9qaT @@@! @@ ` @׽ @@!6@A@B<@_1`T_qT!@? B(T3@<4\3! "lTieUC@K@S@BB_TK@B}A@W@ !  "@U _T@{#B} ! @ZBRA@" C!A@?jTA@x!Ttt`}ӹC#RtC@@9/7@9R6WqW@&\ @_6! @@.!0@9!,Q?qBe`C C@I/3`23{[vCSck@ C@4@2@9@(qAT@@!(@ ? B@S b@ D@!cB!FcBC @B@ * T!A!@3x `@ 2a 4ҡ` a@!2a0@9@?(qAT@^@!R*! @?qiT!Q! ;@7F@TvC C@SA @[BcCkD{Ũ_!R@@\@/6^A @?qT!QA r"~nA@94R҂Rr@94` @R҂RjQ {tCS[cks7@B@@g` C@@3@9(qAT@@9raT!D"@A(@a07B@ R!#4@9!B!@07@`,!A!@6x`F@:T` C@@ ,T qT Rr! R?k@TRK:@c@7B@@ 7? HRB4DB@9_q" ?@g4D97@3@9(q @AT! @C!B9! @%T"@7@?-Tg@ *5 RRO7@PC[!;$EGS_g@:3@9?q;@A;(q@AT @|@@@;@ @G@@?A4S@[@ @@C@C`6 2 @@;@ 42;?@lA!4D@9 9g@4 @ q@!TO@ -@P7;@@"6!$E!@!8@7!oO@"L@9 @x L9;@x+@2A@!?O@ L9?@#` C_@@ ,T qT Rr! R?kTBRs]@ @@cX7g@5?@(4@ q(Tg@qq` C 4|@@A7F@˟TF!C@!@?-TRkTt#R~::@#"h`_ Tc@ TaK_a@ !@z!|@ T7@? T@R6_@RB@B8@_}RB#kTg@ *4;@@+@!2@@!` C?5 R?" g?@4D96@xEC@aT @ 5@B@k TqtC@@ Ts C@h @!Bg@!@Aʡ%SA[BcCkDsE{ͨ_G@~@2pdE@@6@Re@@PC@C`@@CA,@? q!B!@76+7O`O@ B7O@;@@L@9!@2@L9A S@@@6sO` @Rҟq!R R qtC@Ts C| @@xE"@_ATg@ 4B@ 6~y 'L@9D07@6!$E!@!8@a7c@ 7 X6 @ @ 6@@ @ 6!/ TO@zL@9"T&C@F@?@TC@@3@9@(qT@M O@,@r@TJ!0g@55@@@@H@9?qTL@9A7@!@|@B@klTs CtC@@h@'!C!@C!T1 ,@r`T"@c@!1g@5@7X6 @ @6@@ @7RO@$L@9LCAcG@9!?bb8aTO@L@97@B@klTs CtC|@@`0g@@S@4B@7O@ {cwCS[ks@!B@9"@ҡ C4@306_s@@yB"@0@9!$Q?qiTғ5D@ (@7!@ R"@9s63@@7 @bq-T@B9?q =T qT@jq*"T:X7? @q*T*!?qi4T@ @G@ R?j ETjq0T'O @!A!@6wC"B;@@@!@9!8Gӣ;@@@R q9T@B9`'7!lA4D!@994R҂R!R`VE^@4R*D q1TwC3@@@@AB9a7bq`3T3@7RrXz!.T q TwC C@@?! !A @ @J@ B@6_@!@2 @@&7 @@!B@@@RacB9"x9lA@9`65B@ @@4ac"B@@@ @!"7 @7 _6R"4r qTR@@@A @@ O@#TbBaC!b@!@d!!}!C Tc@`T`96Tf@9F *T"@9b8!D9TqTTKRBTb@9S@Ra !$Q?qTR!4r ?q`T" qT@B@AAPT Rq@@D @[@!@E!@"@B@[@A@94`@5?K?@@8?4K@b;;@JR;z;@6@r T@P7R!4r qTRE@@'OaR[jqT@ 7"wC!@!@9!8G{RB@@B9@@@@B9`/7@E@ @rT@5lR@-"Ҕ|rB@c ` cT`@@TCQc?;;@'1@*R҂Rh@!@!@9h`8_kTh 8A@ @ @ @[f|@ @RKGK@cBTf@9 bTf@9?7cT- fB@!A @ @@ ' C@a@?TB€R@`7|i|e`R@4;^;@V_; @B9_@jq*@TR 0r?jaTRr A7 C3@7t"|!aR@@gbqTRB@rTd4cBAcaR!4B@_yB| qaT@E@RM@R`@@X3A@ @@`uIRQ@@nB3{S[u C@ @  @ 7vCB@B@9TraTBDD@(@7@ RB%B@9T# X7b C# рBC!@ @_ @qTX7` CBF@B@B_Ts C``@B a@SA[B{Ũ"@@ @ @qT$QqHTBB$Q_qT@_6! ѡAB@A,@_ qT"RB!@@C @6B@B@B @B6# RRc!@!`!@` CcC@@ @ @a Cq6@Tq@TvC@ @906Ԃ_BRvC@@9@06"р@7vCs C@v@SA[BcC{Ũ_֠! @A@xa# @7@@"4F@˟lT"Y {8kT񔢟#@a$|@{ RDS[cks@BB @@C@O~!73kv8 8707svC@ @@@3c?q TiTqATD'T@+@@!TA @R 0r qT R!*A XT&@{#&TvC3@@@!AC@'T!CB@#@d $b@q(TvC D!@!@9!@!*T @@7@@ן@! @@!7@xx@9 (7 @?qT 7@!x  A@A@?q)T!QA{#TqaTDRKr @ ?qT R Rr ?kT@@!@K@6B$E@@8@7 X6K@rT@K@!@?(T@@@TBRf @5qTvC *@"@A@9!@!*aT ן`@9G@xxa/6@_@TBRb@ @a6nARGJǟ@9(7@`aT*'6R r@T H@@8@7@@BRCCgC@ @@C|@C@L[ vC@!C@$@cA %@@@?T3@7BO@@Aʁ SA[BcCkDsE{ʨ_CC@A@?q T!QAARCC@A@?qT!QAd`@6|@`R@i @3@@@!`@?qIT!Q[vRC C@@@?@@9/6Q@@QAR&85 @`<!kv8`6! 73U{tCS[ksB!@@wҀ?C3@@`2@9z@(qATZ@?@!B@@!@@6_?@E@H5 @9 406_@ I7?@!@@7!RjAyT?$qET?(qT`"R!< r?kwTc,!C3BT _q5T R Rr ?k5T@ @!@s`1p79R[?@RlA!@@@9" I5?@$EK*RPCS_@s@6K@@8@)7b2@9a@C_(q @T"B9B @T @'R @@?ր.4PCt@6$E@8@} @zT@ ,T q T R Rr k TcBR@R6!$E!@68@}S2!b5DB@9_q8@ @zTa'@o@?"+T@5a;@74@C7 պ 4?@@@ 7@R!4r qaT@R @@s?@c@@#7@!7K4R 4rc qT RR|@ @B@o# @bB9B @ATPC@`a@S@@b@!F!@?T@ga@`2@9(q!T; @n<4ARpR5@@;@A;@f2R!@y6R$E@8@}BKqGK@'RqRB$E6RSS o@@G@c@6@@4a2@9`@?(qAT @@R @R@?4C@5?TA;@2?fA6@G@T;A;@R@4@t6S@@@8@}@G@@;@@y5G@BRg@@7a;@7/=TBRWW@ARWW@a @ ,T qT Rr! R?kTBRc6Ra@6R`@!@oC@?T`1i @`dE@@<@\&F@T"cN?$qT rT[?@lA!@@@9" !5RRqz5*2RA@w6!A!@svC`@@`vCaD@:@@9rT@+@7A@ R"@9AD)?kJT!A# RD@!| .DG RMDh!8B9Y@@%R@gvC)EB%EBCkFB)JQCF@b@ @@@B+H@L#@ @9@@T@9 RR_j TcD؉qkFb@ƉsvCC(@C;@@@@C|@(\'@`@C#@Sha82@h!8Ya@ @ @9 Ey@`@$@s`qlT"@kFBs!AC@#4bw@CCdEx@@ @@/ @ 7@ @,T"A@y R qTqT C@@BG@@Aʡ0SA[BcCkDsE{ɨ_hT @"*@f42F.G@@@`AO7f@\@6!$EG!@@\@@)7.G@@@+@@a*c\@cE@#c@`D@A#@1 X74qT `:c}* 7 87@ x7@?!@? T|c #R?@` ;c@/@ q (qTT$qT`@@a5@RV?@!B9@@tC@B@9D"# cc@9cSc*`@@0qiT7X6`@ @a7;@@@ ?ց~@ C!GC@"@A  TBTc@c` CCx `@@ @@?(TT?0@TT?4T`@s"@9@|@@ T T T T`@s"@:@ ^FT07RRRI@UTC? T?$Ta@s" @@R@@` 7 X6Y @ @70q T@@?@` C!F@!@!?TvCs C@` @SA[BcCkD+@{ƨ_@fҸAR1_s"z@s"z@Ys"a@A@xaIs"a@A@xas"t@s"a@A@xa+s"a@A@xaa@s" @@`R*@@ C@:_@@6F@@_7 ?0qT @qT!$Q?qTAЂR!=@ @@R@@Ps"a@A@xaIR@@RR@@R@@e@@>H"Mwܯ7` @ @6@@ @7Rnr TA!>Rz@!@!@! @6aR@ @J!@!@! @A6AR@ @EvCa@ @9rT@' 7 @9raTD@ (@ #7!@ R"@9q"TRRRK`9@9cvCa@ @9rT! 7 @9raTD@ (@%7!@ R"@9q$TR!@9A(6r5R77R*}u4@7 @6 R`@`/@@@A"R!`.@A"R!,,4#RZ@!@9a(7`7RRS!7RRR@ @`ֿ6 @ ֯6M8R**;R7qR @zRҥlS@74`_@`D@a Tu4a! B3@s`b@"D@!t!AB(@ Ba@c!F*|||||cC` "@`@B"_Tc$RARcAc@sx"c@b@B 2bd 9R"R4 @?qT!Q @! `@ `@G6 @ 6!@ @!<@a4@@@ @?$qTX6@@0@94q`T4vCBc@c9#*c|SH @( 7RR& @!@ÿ6k ,@ qTR҅RR7vC@@,rTy9@9RRR!`y9@4 @7 @@_ T& ,@ qTRa75bB@B`(~q`@**@9+`@`rq`@@9r @z"Rb|@AT @6 RV@ @@@{A"R!`.A"R!,RRR W< @Rl;RzvC!@!9!*!|Sq  f {cw CS[ks@3_`@4L q T`@@z<RVwC_@@9@9a(7R 7a@ X7@?,qT67 Rcq<4`@ Rr _k T` H7LT@Sv7TwC@@9!rTZwC C@@@SA[BcCkDsE{Ǩ_֠ @@6`@6ARX4@ 7@@, T7ZwC C@@@SA[BcCkDsE{Ǩ_֑q@a@@9_6a7` @ @6@@ @7RrTA!>R0P q T`@@x|@s@s@sb@6!H kT`@@@@'"RR`ZwC@ C`@@@@6 RE@@@@A"R!`.33@A"R!,y cKTAR77@AR7x7@H C@@Rc@@4#R33@@A33@@:`E* {cw C[u@B@"@7@X6 @"0@9_4q Tkzy@/D!G@!@S `T@Sb@7R@ Rk@ TX7_rT@ @q T@,sT qT R Rr@ kaT`@{ @@3T2 sEs @`@7? @qT$QqT` @@@`@6`@@`R0@9?$qaT@@a C!tC @SAkD@B7@@A! [BcC{Ǩ_`@ @R.b@_6Rb@3@b@tC@@@$Q?q(Ta @A !@ (q T[Z/D9GA@9@4 {43@R* 0@9B$Q_qT3@*sE@sn8b@_6@<@\0Z/D9GA@9@4 {4sE{`@ A9?qT @sSksp@?sG@?C{s|{/DS[vcxwkbGwC@ CĂBB@@?!@t@@ :@T@3b@7R@ Rk TX7_rT@ @qT@,3T qT R Rr@ k T`@Uh @2@;f 3@s @S`@7? @qT$Qq(T` @@`@`6`@@ 3@90qTRRR5@`2@9$q T`R`F@ T`2@9$qaT` @@wC C@@ւB?@@AʡSA[BcCkDsE{Ȩ_`@ @`R4b@_6Rgb@;@fU2L fR;@*)0@9B$Q_q T;@f*;3@` @@!@u4 @ @@ a@!`F!@ kT`F@ T` @wC C@@@@$Q?qTa @A!@(qT1/D{G@y@5 {5^@3W!b@_6S"Z|@a9@9/D{G@y@5 {53@?`@ A9?qAT @t";3@?3%3G@?{as|{Ѐ/DS[vcxwkdGwC!$E@ CłB@@?!@B@ s@9@Z@`T@@b7R@ Rk T"X7_rT@ @qT@,3T qT R Rr@ k T@U @2@;f` @3@ @ @@7? @qT$QqhT @ @ @6 @ @@@RRR @2@9$q@ T`R`F@T2@9$qaT @@twC C@@ւB?@@ASA[BcCkDsE{Ȩ_ր@ @R @b_6Rg@;@fU2"fR;@*0@9B$Q_qi T;@!f*3@ @@@u4 @ @ a@!`F!@ k!T`F@T @wC C@`@@@$Q?qT @!!@(q`T /D{G@{@5`{5c@30@"_6X"3@4@t/D{G@{@5`{53@E@ A9?qaT @"H3@?33!@?{R[vvCScwxkzys@B\Bd@? Cu@b@/D!G@"@a@@ ?T@b@b7R@ Rk@ T X7_rT@ @qT@,3T qT R Rr@ k T`@Th @2@;f^@ 3@ RRR@`2@9$qT`R`F@T`2@9$qaT` @@vC C@ @B?@@ASA[BcCkDsE{Ȩ_s @`@`7? @qaT$QqT` @@` @73:`@ @Rb@_6vC@@Rdgb@;@fT2fR;@*0@9B$Q_q T;@ f*3@@$Q?qTa @ !@a (q@ TZ/D9GA@9@4 {4` @@@t4`@ @a@!`F!@ kaT`F@mTa @vC C!@@ @@3 b@"_6" f@3@SZ/D9GA@9@4p {43@q`@ A9?qT @("@?33@? {R[vvCScwxkzys@B\Bd@? Cu@>@/D!G@"@a@@ ?T@sb@7R@ Rk T" X7_r T@ @qT@,3T qT R Rr@ k T`@Th @2@;f:@ 3@[`@ @@@RRR@`2@9$q T`R`F@-T`2@9$qaT` @@vC C@ @B?@@A!SA[BcCkDsE{Ȩ_s @`@7? @qaT$QqT` @@` @@73`@ @ Rb@_6R@gb@;@fT2fR;@*0@9B$Q_qi T;@f*3@` @@@t4`@ @ a@!`F!@ kT`F@ Ta @vC C!@@ @@$Q?qTa @!@a(q@TZ/D9GA@9@4j {4)]@3b@_6vC@@^"c@3@sZ/D9GA@9@4E {43@n`@ A9?qT @"@?33@?{ccxG[kv@V**cRRS  @bZTsb Tc@dc q TkTa @4?sbZHT@*SA[BcCkD{Ũ_R*[BkD{Ũ_  `@a!L`( ` T~**B'@@A!SA[B@{Ũ_Rc RkT@ @` @_BRX @#@o*#G{[k?BS*csƄG'm@GCg$Fa TR*g*6T`T@9?6cT!@!?(T@9!?qTBT*"  5chT*q`Tq@TqT**)`B!Razr9G@@A!SA[BcCkDsE'Fm{ɨ_ @@` 2 @`P7@6 Rr? jTg**,!T ?qT R Rr ?kAT!@) @<@CcR R*!ftC@'v raTRRgBR g@ @C@{IAR @886@9 c`*@8T*h dHcFg(`@b A@bC"AB“ATq ѥ}  TT q@TTqaT@9c BC"@A“!@ҢʀA"ʃēc bc!`A"cÓc bc!`A!ʁʂԓTʔʀ`ӔJ7qTTqT@9@9@9 @9`@9@@9 R*gF {  )9B G)** @{Ĩ{S*B[@/37@*,T qT R Rr kaT@ @@+c`24**B/@@AASA[B@{ƨ_R RkT@ @@ @_BRC'@D*$`{S@Q4`@Q``5@RRҞ@ssSA{¨__ր@!_ $@@d@qTc @9q!Tp@9cqTa@#p@9!?@q!SAt__ {xrS*TR6 @2 &@RR"ҡ!?(&SA{¨_*`%h {c FRRcL@9!2L9{_ {S5@5 @@ 7X7@@ 7@@a@` SA{è_֠ @ @6@R! &R@R`@0@9?$q!T@@@7bU!@C| T@rTP7@@7X6 @ @A6@@ @6R9 4 R@N|@ @_6x@@hT@ @@9qT@@   @7@bAB!?-T@!_x!@b@B?,T@@` !тxa_DETC@cC@@b@_!CT@B@!_x! @!x!2 _ {?T[c@@jTSkb@@?@T!:C@@H T@b}`@*@(?T@ 6_ T@B}R [@ SAkD[BcC{Ũ_(T?T@5})@!D @TX@A:6̌|TA!?jT@'N`ҠT`T}@:@cC"Gf@@F˥e@|&S[ck!{S @6 R`@SAA{ĨCB` VE@:@"SA$R@R{ĨR'n:@ {S[ @' 7 R_j@TB7@@c'@?*T@B7"7@'@` @ Tb@@_ @JT 4aU@6@6RC@ bJ@9A@!?dHTK@BB@y4`J@9$qT!2Ry s@3 5'@SA[BcC{Ũ_c@@'!@ R_jT 4za@?q T!Q RZ'@#-rTK@ҏSA[B{Ũ_@'@D@T Bbz"@'@b@_+T|@~@a6|@'@$vGC@@? T @b@8'@r  {S @A7`@@@!?T` @xa SA{Ĩ_C5SA{Ĩ_ B@ D@`D@c _SA{Ĩ_ R[33@ @rT B@ @ D@!!AB(@B@!F*|||||BC #@@@c#TA@x#@;@ 2V@R 9@ @[B[B@@x R33@`[By' @R {S@ B[6@3b@ D@!!aB,@B@.``@`@`@ `@ `@x2`T}Ӕb@@` a@4 5SA[B{è_R;SA[B{è_`Rn{S["Bs<@\@"D@!`B!a,@ sB@b.@@@ @ @x2ckH T}@3FBC @`@B@a _ T!FBA8 "BB@{D\x :@`@"@`?`€Rz3zss`Tzs @7@@@@@A9F @!TZ:cCkDSA[BsE{ƨ_֣ )!`Ba,@ `RE`@A@a@` x:cCkD {S R@?jT@a6@ C@y?qD@A T @ @![@ @6cF!C@@s!@? T @FBA b@Tx 7@ssѠzsz3@?q)T!Q@ @"@@T# @` @@ F@AT @?qT!Q [BcCSA{Ĩ_@_ T!  @@ SA[B{Ĩ_FBH@9_$qT!2y@ SA[B{Ĩ_ּ@A@@` x7SA[BcC{Ĩ$[c {#R @S?jT6 R@VE&@@SA$R@R{Ĩa@SA!@{Ĩ!{R(w&@  {S[@SA[B{èX B@3b@ D@!!aB,@B@.``@`@`@ `@ `@x2`SA[B{è+ `R{"R @S?jTa7`@@5b@a @@@4x`C?x `@7SA{è_@bSA{è_ Rb@VE*@"RR*SAAR@{è `@6|S@R (**  {"RS @?j! T7-T@@7 7@ @"@T" @C`ҀB" s@A@!A @ ˀ ATSA{è_ R[VE2@"*@RSA[B{è [5@񶢟@_ @  @TB} sѿz3@ @ @ @  @  SA[B{è_[B[@R@(u2M[ {S[@s!҄Ҁ@SA[B{è] B@b@ D@!!aB,@ B@.``@`@`@ `@ `@x2` `R {"R @S?j T7`@@5a@` @@a6` @ a@` @ a@ @ `@7SA{è_@bSA{è_ RW@VE.@"RR SAAR@{è `@6|S@R`(.  @7@@_{|@{_ {?S4[ @7@ @?+T@@ @6T `@@?qIT!QT@@`7SA[B{Ĩ_ TT RVE@@SA$R[BR{Ĩ SA[B{ĨSA[B{Ĩ|R(t@ {S @ 7@6[F!C@@s!@? T @FBA b@Tx 7@s @sxs@?q)T!Q@@@? @ @ @7F@Tѷ @?q)T!Q [B@SA{Ĩ_@@? @ @ @@6SA{Ĩ RlT@@SA[B@{ĨA@@` x7 {*"R @S?j!T7@ a@!@?Ta@A7a 7a @4x`?x b@@A@?`T`@74U7`@6 SA@{Ĩ_ց @?qI T!Q  SA@{Ĩ_a@7a@!@! !a @!x`b@A@!A`@@6 R@"R @nRRSA@{Ĩ_rT@"R @L|@@R@ {S @7@ a@!@? Ta @ x` @A6! R*SA{Ĩ_@ R*SA{Ĩ_a@7a@!@! R RR@!j T`@7`@@@S;@ Rv@@4R*SA{Ĩ_|@@bU!@C| T@rTP7@7X6 @ @6@@ @6R@rT@|@@@ @ T4R@@@@@{@y @@@9qr {R  @{¨_ @{¨_ {R ` @{¨_` @{¨_ {S@ B@c@@D@B  `R" RSA{è_SA{è: @{tC @ @?`E@5R!4D?9 @{¨_B@?R!4D?9 @{¨_{S[ck C @Z@a7@@tF@˟T@`7V#T+wC@` @xs@z3sAT+@TwC C@@SA[BcCkD{ƨ_a@!@9/6 |@ @6 T+V#9@wC9c R;@z3sTa@!@9/6  {$E@!R )(@ @@6!4!L ?q!T@@@{¨x_AR{tC @@@9g64p7BEJ4{!R*@/Bc@B0E: { @P6@!HB_T)(R`) {ES@5 C@@`@7bU!@`C| T`@rTP7`@7X6` @ @6@@ @@6R'5SAtC{¨@@_`@@TtC@ @@y qT @SA{¨_֔ C@ р @`@@`5B@?ָ5 ` @@9q!T { !F` C!@@!?Ts C!tC!@"@` @ @{¨_"  {D RBG@ @@F$*cEhvC!C$E4DG@c@9@ @"lTE@5svC`@ @{¨@_5E@4B@? {SF[a C@5@-Tж"vC@"9 @7@B@"s Cv @SA[B{è_R@@@"R @ tC@@_ {!,DBC @B@ T!CcG!@c@BtC!!C@@{@_ֵ {SBRcvC!ACc@@!@c @4xc@@7svC`@SA{¨@_z{ !F` C!@@!?Ts C!tC!@"@` @ @{¨_"  {k@ C[SvCc+@7D"@@9ӂ_@@9t_rwq5@87! 7TBR* `@@ 7vCӂA C@;@SA[BcCkD+@{ƨ_֙ @  @q83@97Q@Tq T@@9raTD@ (@ 7!@ R"@9q@ T"R!R|qT @X7 @@ @ ! @?q T!Q! a@@? rT7D9`@@JT  @qTRrTR!@*  !!$Q?qT"@r@@9T" @@@@" @`@@a ! @?qT!Q!  a@ $Qq(T6 ,@ qTR"R# @"_$qT?rT4 @4R!*at @ vCׂA C@;@n  !R& a@ {ES@b C@@A5s C_`@7bU!@C| T@rTP7 @7X6 @ @6@@ @@6R5SAtC@@{è_ր@@TSAtC@@{è_ր@@5!B!@ ?@5 @@9q!T {ES@@5 RcD!Ge@ЄF @@BEs'Cc4D%@a B@9@  TДvC@ 97`@BBB@kT @SA{¨_J@SA{¨ @_B@? {[kvCS Cc!@@B @9C@O_07" @A@xb@@b@*(X  5s3"Z4b@@,T qT R Rr@ k!Ta@` @!@G*6B$EB@[8@{CR @A,!T ?qT RrB  R_kaT`@h @@G@`,T qT R Rr` k TRC)@K@6$E@8@ 7 @R2Z 4k T 54R]a@ ,T qT Rr! R?kT`@h @@GfRJ@7vC9 C@<sE@3@BO@@ASA[BcCkD{ʨ_֟@ Tr TR 4r` qTRW @$R$E@8@c6q 5a@ ,T qT R Rr kaT`@h @@G;R6$E@8@{CRk!TG@@ @@K7Z @$RxRG@#Rga@@BR#g^R#b@G@> @9|ST RrTF @R#|gG@xRg@fRG@\RRrTvCs3@ gcx vC@@es3q C{tCS[cks!B@"@g#C@;@9y@$@G@9%{ 0643kwO;@"!C@#?SvTR:rKSW@ @@@Z!*?q{#?CTw@@ ?qTaT{#C?bT {@v@ 4*X `5rA T R#rTR 0rjZTqYTRRr **`E @@A@@ SxcW87G@OF@T"Rrja Tr@TTS@Rc@r T RrA TK@@!*r!TR 4r qOT6jAdT*`@{@?q@zi;@tU5;@@?!`@ @OTu @eA{@J5@g@_W@B@@@?! BaTB @A"BB @G@O_:;@@K@LG@ӵ\T@3W տ(TA }T 6C@xa!T T8RTR@R@r *jTG7`T@G7@X6 @ @6@@ @ 6tC@@9{T!T85RR @RR @P T@'6raT RDrW@Tw @R@`6z4@Rr@ q)T R Rr@ k(TR@_@*6B$EB@X8@CRU @Rr" _q@%T Rr!  R?k$TBRg@Rr qT R Rr k TR@c@6$E@8@ 7e`@ R2`5@Rr ?q T R Rr ?kTRg@@8R6$E@8@C?kT5z!4R @Rr ?qT Rr  Rk TRg_@fR`@@7jT3@O@{@"4A4tCC`@4!B@gB!@AB{@SA[BcCkDsEC_ ;@ @AK@@ 2cKT@_6 @ @a6@@ @6@TrTT@)R$E@8@g6qR4xm@@c @7`@)Rx``tC@@9! 6@ P7@T{@_q B) T 7O@3@˔"4@9a07@9'6BR]`@ 6h ?7! B8@/@"D@!!aB @.B@a F_|!C @!@c ,TBRA@x#@c 2 @`63 {@4iT8Rm@@ @@_@ @!@_@ @!@_@ @@_"R _@RgRR 4r qTR g@^fR_@ W@y5IT@@BT9O@4Dta@b @@95`5`@ 7tC9R G_@aTB@_-T@@_TBTT@ Rl rT W@_T Հ@TRv@} G@OHaRv@0Rv@(;E ;@tC@;@ @KRplA@9`4R҂R $E@8@ 7;@G@a@b@?v @_DV!W@TW@ @?T @@ @Bcc@cc}c?cT8BC@T  À_ cGcc| BCTT 8BCTA)T @?T T !9RBR@ķ6 `@W@x`멞T@a@HT$E@8@7R :Ww `RxtC@cT8_T`@8a6|Sd2!!`2$893k{SvC[ C$@@@9@9 @s87q@Tb@F@_ T!,DBC @B@ T!G!@!CS 4"BAC@c  bx`"x kTvC`Q$@97 C@SA[B@{Ĩ_!,DBC @B@  T!GBdE!@!CA@ @@ vC C$@@@9!B`zӄ4C4%@@cA@BXGc@%$@@t kTvC@4`Q@b @Bx b aT C@SA[B@{Ĩ_vC@aRY@@D  @ {S C@` @$ @E*(cX C5B u"@67@ @A@@?5@` C tC@@@SA{è_bH6@ @A@@ ``4@qRRrT` @$ @E*tC@@{R!C "4r @@`@ q!Ta@ @T `@7 @tC{¨@@_`@6{R!C "4r @@`@ q!Ta@ @T `@7 @tC{¨@@_ `@6{ESa C@5@`5@@7bU!@C| T@rTP7@7X6 @ @6@@ @@6R5"s CtC@@@y@! ?qUuSA@{è_ր@@Ts CtCu@SA@@{è_ր@@@5B@?ֺ5 @@9qT {SvC[u?Rca C@6@@@y" q@aTE@58@@_4q@T7rTqaTvCs C@v@SA[BcC{Ĩ_x@avC@s C@vSA@[BcC{Ĩ_ֿq!TvCqs C"р@6vSA[B@cC{Ĩ_vC@s C@v@SA[BcC{Ĩ_B@?ֹ @q T @ {[kvCS! Cc@6@@9ׂ_07 @ A@xb@@@C*a(!X 5+R"jT @6@@a@"@!fCf!~c~!c!A7@R!0r!^ ?qT!f vCԂ9 C@;@SA[BcCkD+@{ƨ_aH7 _r:R T RjaTraT Hӓ45@*@ Rr_ j"@TbRk`T_T?(T@B4DB@9BR5?TR!#0r_q @AzT R* vCԂ/@`H6@@4@H6@@@R)`!4D"0r _q!@9!R_jT@@R* vCԂ9 C@;@+@/@SA[BcCkD{ƨ_֡vC!@:@9 RjZzZFAT@R!4D"0r _q!@9!R_jT@@R*(R@`@ R?jaT?r T# H@4 Rr_!j@$@ TR}R@ H4r@|"g@`@$@ b+T|#g cT^%a^ e!T bT cT^Ca^ cT@R!0r(d ?qT7A?"T/xR| R* )RRrT+@@*@@R* A_CTcRc?_qR"0r @Az!@ TIR@# Hӗ[_vC@@cA`SW cR_q!0r Bz@aAT@@R* * '?$ {[SvCc C@@ @@y $q`T @@W@7 4@989F@T@@i @zT*@44vC C@SA @[BcC{Ĩ_֔5@c@6@6@@? T @xvC C@SA @[BcC{Ĩ_" @A@xb*EaR@@@@"Ҡ {,DS[vCBG@!Ad@@@s C  @w"D @@a@xdJ@v@SA[B@{Ĩ_{,DcSvC[ks@D@"G" C6@9`@}U@C 06@ a@ $QqT<?!RGF@@! TvC@9 C` @!SA@[BcCkDsE{ƨ_` @@@@7@@@4 s"A@!@!@! @!4!h 4CT`@Fr`T{"TvC@@@y q ThG@ @?r T@@B9 7GF@@! MTvC@ 9 C@!@SA[BcCkDsE{ƨ_ F@cT`@rTs"@@@r`T T@ @R2~71T|"!44r"һvrTh!? @qT@0@9!$Q?qHT@@@@6!Rf G@ Tv"VER@vCeC@GRSADR[BcCkDsE{ƨ@@y q !RBN"x{!F!@!?Ta"@CT"`BB R:Rs"V@ {[vCSA"@ CC@9@B @@ 7xb 87F@M TvC@A@9 7@@9!7a5D@ (@@7!@ R#@9!? qT?qT C@@SA[B@{Ĩ_@A@9!47a5D@ (@`7!@ R#@9!?qT* ,@ q`T Cw@@SA[B@{Ĩ_SA[B@{Ĩ ,@ qT@7@@w"@ `77P"@@9(6@` vC|@"@b`vC@{[vCSckA@ C@9!@ @@ 9xb87F@mTvC@S@9 7@@9s7 CX6@s5!D#@a(@a7`@ R!#3@9sq@T5q Ts@@9 (7RR 7 @ 7 @@s 4@S vC"@ C@SA[BcCkDsE{ƨ_/@S@9@4s 6@@9{R4"4vCAR@#0r@@!4DE @"@9xeBR@# qjT R!*  ,@ q T Cَ@@SA[BcCkD{ƨ_ @3R*6 R@sRj!T Cs@@9X6@4vC@* vC@@q*vC@wa,@? qT4vC@@@SA[BcCkD{ƨ_"IC77_@s5D@ (@7!@ R#@9s q!T+ss4}vC@@@9Jj@Z{[vCcS Ck@"B!@C@7@93Ur:@aT!D"@A(@7B@ R!#"@9U@@yA@ q,qstR.A7aX6W @@ 7 kaTvC@@9(7! 7@9 73 4q T qTvC C@3@@!B7@!@A&SA[BcCkD{Ǩ_ kTvC@@9!'63@vC C@3@@A,@? qU*A@+47q@TqbBa!A,+M@!@! @6aR!@@@`7@@!vC@@9"(6@3@ +qvC C`@3@@9A#A3`T5qT@9 (7R` 7@7@@s {4@S @vC C@@+@ @RA#0r@4D@@9xeBR`@ qj@T R*`a 3@k3@ C! 3 i!(q"@!`,+!? @qT 4*!(@ @@7vC@9A7@9=9b6` +!E3R* $QqT5 @ @@ vC@96@@9@@9|@e Rn sRjaTNRtvCR!A"0rc@!@c @4D3xc@9`@!R _q_jT R*`u Sk(`@R!(*!@G*i`@+@@tq*AiSHR@@aR@@{7+i{,DS[ Rcks@FCcG$@Dc@C6w "!tCg @y旟yj%@T?@ T@ @@87@! @77 bT;@@a! @R7 BT@9rT@Q(6;@ @@_q T0@9,q!PT մ@9rTD@ (@@I7!@ R"@9?@(T;@pT@;ZF eU6D@9n@ ,qLT0q!TZC\7CFC!@@! _MrTA  @ABC@ @FUx!@WSoT}"@c}B`@"h TC@F@"C@O@!F@ CTK@@;AS@S} A)9C!x B)a@ h<#T @@!?@TA€R 9Ca@ h<#bTJ :@@S@ qIW uTtC@@9` 6C@O@F!C@!@@?ͅTcDTC@S FCK@A @ @N7A@f@!@ABx!9CbTSK@@7@"@|@?`TO@,5T@ q_TW@R9@}_9cT[K@  A@h3`@@7Bs"Tn@RRRX`@<R6Bys"T [@-5C@FS@"@sTO@ C@!F @?qijT!Q" C!R?j(T@!?RTX6 @ @q`XsT@BRCK=@eUC@K@m7"TT ՠЁ6DC?9@@yx>5C@qAyy T@"qTСtC!C@3@SA[BcCkDsE{ͨ_[GTеzU9@G!RjTC| UT׆HT6Dw@9@?,q T?0q!T@7@"@|@T7@@ pC@y`6@ 6u@6@C@?@ ѣ;@@9{{C{е;@ @RR*CG* **KW dd Ta@ @jB,Q_qi T4"@_qT"RjTC@eU"BCB|_ K@$BaT 5tCI@W@*2 @R@jATT5#?bT*tCI@W@4;@_bT_ @_!x CTA7Dq?92TxA€R@@*@R@jTA7D?964w ?@F@-/TtC@@97 @GR6D#0r@A!C@9@BRxd@ qjPT R* td B@o ,@ qТ!@BG!C!|? B TG@?  `K@_@A@!@`! Us@9;@{{C{T{RC9FCC:O!@@!@_m-TK @_ABC@ b@FUx!@S-$TO@$@B}ӄ`B} a@$h _TC@F@@C@!F ;)5S@W}BHTK@@;[A A)!x c)a@"! T@@!? TA€Rna@"! BTJS@ J@7@!@S@S@!R Rk!T@O@@ @? TO@@_1TK@{}B}OA @@!VC@O@F@?3TC@:BF@C@y@)7 @?qi(T!Q ;@/A€R `@@?묱TG**9**B@y_@T6G@6!8G!@**C@y_r T 6E@(6!C!@"**lA!@94kkB_q!lA9O@*_-,Tv}K@<@CAc t@jv@j6`@`7"aTIK@C@A!@@!`8@;R5@?@/3UCBB`S[@S@Y"U!? @qT$QqHT6RCKtrC@K@TR!@*@C@K@TW@S@!@!lTRW@3@S !}` K@fRRRbA@h: @`7sBZ#Th@RRRfy@M@<Rs!@!@R qTHTS@S }K@{*A @ @7`X6! @ 0@9(qhT{5@"@"B"TSJ @AR@C@O@F;C@a@@?ThT @A€R bTtyxdr TB-`TaЀR! \ @`;@";@@ַ6[@SL|@?T7 T9@9c @RRR@@3 qRRRRR_qTRRRR@9?q/T@9qRRSRRRRRR-5! !$EB!@? 8@tZ,T_<q@/TRRRRRRRRRRR$@9?qT(@9?qAT,@9s qRRRRRRRRR~R|RzRxRvRtRrRpRnRlRjRhRfRdRbR`R^R\RZRXRVRTRRRP@9?qT@93qHRFRD RBR@R>R<5*9R7q T R3R1R/R-R+)s'B5! !$EB!@? 8@tZT5R@9?qT@9 qR5R R _q(TR_qTRRDQR_<qT4 P@RqDQR_<qT_<qTRRs(@9?qT,@9?qT0@9 q@8@tZC Q qTsR_<q@TRRDQ<qT 4 P@ RpqT RDQ4 P@s{RRRRRRqT5*DQR<q!T4 P@pqhTDQR<q`TRRR@9?qT@9 q@9?qT@9 q|RzRxRvRt@9?q!T@9 ql@9?q!T@9 qdbR`R^R\RZRXRVRT_<q`TRPRNqTRJ5*GDQ<qT@4 P@Rp>qTR:R8DQ4 P@Ro1R/R-_<q@TR)@8@tZC Q qHT"DQ@4 P@~_<qTRRRRqTR R DQ<qT`4 P@RsR_<qTDQ@4 P@RoRRRR5*R(@9?qT,@9?qT0@9 qqhTRRR5! !$EB!@? 8@tZ@T5RR_qT3R5R3RDQR_<qaT4 P@3Rp_qhT3RDQR_<q`TRRRRRRRRRRRRRRRRR {! ,DS[56Gc/@B C@! @@ ` R˔C585@`~@!!@Ax @ SA[B@{Ĩ_!;{! ,DS[56Gc`/@B C@! @@ ` R˔C85!`~@@!@!Ax @ SA[B@{Ĩ_!; {!## ,DS[6B c7@G C! '@` RcG(@@x~@@@cxx47CqTjqTMTrqT+TvqaTW=G C@4SA[BcC#@{Ũ_Zq`Tfq`TVq`T f-6c2/2U<4! >; {!!,DS43G"@d CC#@C@@d##[BBC_qaT|@}6x`!@7 P7@G s C@`SA[B@{Ĩ_Rr"j@!T#" @cBBCB+@@!! :{!!,DS43G"@d CC#@C@@d##[BBC_qT|@}6x`!@"7 _r TP7Rr"j@T#" @cBBCB@G s C@`SA[B@{Ĩ_+@@!! :{!!,DS4[56cck$@G C"@@B B@@7s ! ` R6+sCq1T! @!tCA!@y@@! @xa+7?r T R;r(T39$6 s$E@8@@73@@v@[@)T?qT3@A7@@ @T83@@ @.A @R3@?h 8A@@@3@*@"`@ 6!@@!$E!@!8@72@a@? rAT#7G C@B87@@ 'SA[BcCkD+@{Ǩ_ /T qT R Rr  kaT`@s @@3y6 $E@8@7yT&'GLG `@9 87`!v!( SA5@`8c3s#?T#RR63@R? T_8"$Q?qB@DzT?qT$"B q@DzT"@?qB@A T_8?qaT_8?qTA?LTAT_8A$Q_q! DzT_qDEz!T_8?qT!r:rT 4D@95@@~?T_8A$Q_q! DzT cG_8?qT?hqT_8?qaTA@$!?)T`8?Tq Tq Tq T3@?qT?|q T?q`T_8!?TATa@9$qAT!!*!@xa!v!( Ss@@x5aR2@@a@9?hqATa @9?qd#$`@9LGx` P6f"@9xbP6!`?`3T_8?qATvsRn;y@3@+a@9?qT3@Ja@9?qT?q!Ta @9?|q3_8?q@T7y@тLGaj`8AxaP7aj`8AxaW63`*y@5t)@@3@@@d @9Q`!)q Azᗟq! lA@9 4R҂R&;@@93! 8{!## ,DS[65cB @G C! '@` RcG(@@~@@@cxx3<5CqATs^q Tbq!Ts9G C3@SA[BcC#@{Ũ_7*! 8 { !,DS[6ck:DG@!tCE C@@@"@a@ @@93rsCaT D@@(@@7B@ R#@9q TqT`zS|@ 7 F@ TsQt~@T 9@+335ZGs}ӵ} ju{"AR"ѐ1j;ѐ5W@-j3sBW@!T+@8 C"SA[BcCkD{ƨ_@,@ qATB!` szS R[)9@`~@p5ZG3}T@, Cz9@@SA[BcCkD{ƨ_֠RB!C)ZG C9Y@9SA[BcCkD{ƨ_O2@G@9@ { !,DS[6c8kG@BC!C@U@@:@ss5Zˠ7^84;:BSCL)@jF@!$@!@!@C)@vA@!$@!@!@:)@q@M TR RZ 9#rr3>  RkTBR9#5` 49f,g@9`, @" _qT#  RkTBR9@!5fAR>(}cAa@" x`@?qT!Q @_k TT@u`@ ?qT` @ @?1?@ @_kb@ BTaT 3@.SA[BcCkDsE{Ȩp0 7@37 { RrS@ @ Rr kT@@@@B` R! 3!8aR3SA@{è@*AR1 { RrS R@ @r kT@@@c@B` R! 3!@8aR3@*s2@ys4@ @9065@@906@@9`06SA@{Ĩ_!@ @9@77SA@{Ĩ_AR1"RZ2@94j1**SA@{Ĩ/{ RrS[@ @ Rr kT@@@@s` R! O3d8aRA3@)@?aT3s@:1[BSAR{ĨR-3s@01[BsRSAR{Ĩ-ARe1( {&S"5Х@'q{_րkaT RT0q IT_{[S"RcbBa}@919B@94!G @4D@ R@B}`v 6@@ BJG @* #@@ kTcz`#'@94C@c4cDCcCbz`6B@"`z`@A!!TSA[BcC{Ĩ_#az @"az @{s[{@!Cc @@@SkV T@***xaw `@@?kT_!T Tc0 5@9kT` @` 9@7`@SA[BcCkDsE{Ǩ_s@`63`( 9Fun)9vR x! @ @@c"BT!C#@@;4`@SA[BcCkDsE{Ǩ_ ]4?`@F @hT?`q)TBF$VR%}DrfED)Jd@H< @@KKB4JD @ EDKJT6@g0K#@` T `TTBR KchBJAbJ B ! !8A J0! BJ l! K!(BKJT @`@TA TYZsB_@a@A;SA[BkDsE{̨__1+TaT"@b6<@@c3]\`c B38@`@"D@!v!aB,@Bw@#,cF@cC?@@!c@?@b @_ @x2*+TbBAB@Xx!@! 2Qg[A!8RRbRGY@@ @"_ @qT!!$Q?q T ` B:@Z`B@"D@!B!ҁ_0@B@R2r@@@@@@@ B@@ @ 7Fa2@"C@@@ @@_ J!T`yARA! 5$@R@`"Rx&F@ 2FXfR&@RR`\BA)#RsB!x !*BB)_@b@zA)x !*)#3@SA[BcCkDsE{̨"Sz@*<@|8]@@Y`RTHQ>@@ @@"@K1`Ty|} !@@S `CWK@R _KW@[SG@@@?$@G@`@ @@\|@OLOS@@ @B4O@ O|@G AROO@ x"kKUU@@Z@_1`T;`@ @VPa@! B@G<@B@S`@"D@!x!aB,@Ba@/b!F@BC @@B@@C @ _ @!x!2*TaS@!A_1!@TLT?q>T,FTR?qaT@9q@TITq Tqs Rs* @{¨_?0qDTT?(q@IT,NT@9qT Tq TCTqTRqaT@9R?qT@9?qT @9?q!T@9?qT@9?qaT@9?qT@9?qT @9sq?q`'TRT@9!Q?qhTR?8qaTK TR?@q!T@9R?qT@9?qAT@9?qT @9?qT@9?q!T@9?qT@9?qaT@9?qT @9?qT$@9?qAT(@9?qT,@9?qT0@9?qAaT4@9?q`T8@9?q,T<@9s qqSR`TqRsqT)Tq aTRqT@9R?qaT@9?qT @9?qT@9?qAT@9?qT@9?qT@9?q!T @9qdRTq!T@9R_8qT@9_$qAT @9_PqT@9_ qT@9_ q!T@9_qT@9_ qaT @9,q3G@9?q%TT?q"TT?q\TR?qaT@9R?qT@9?qT @9?qT?q@T?qT@9?qAT@9?q7T?q@6T?qaT@9?qT@9 q?q`ZTR?qT@9R?qAT@9?qT @9?qT@9?qT@9?qT@9?qT@9Sq?|q@TT?q ZTR?qT@9R?qAT@9?qT @9?qT@9?qaT@9?qT@9?qT@9qR?qaT@9R?TqT@9?PqT @9?<q!T@9?0qT@9?<qaT@9?qT@9Rq@9R?qT@9?qT@9?q!T @9?q`>T?qT@9R?qT@9?qT@9?qAT@9?qT @9?qT$@9?q7T?qT(@9?qT,@9?q0T0@93 q@9?q"TT?qT T?qwT?q`RTR?qT@9?qTT?q@T?q@TR?qaT@9?qT @9?qT@9?qT@9Rqm?qT)T?qpTUTR?qT@9R?qT@9?qT @9?qAT@9?qT@9 qR?q`PTR?qT@9?qBTR?qT@9R?qaT @9?qT@9?qT@9q8?q@JTR?qaT@9R?qT@9?qT @9?q!T@9?qT@9SRq!@9!$Q?qI2TR@9?q TT?q TIT?qdT?q`@TR?qT@9q_TiTq3RTqSRs?qTiT?q@?TR?qAT@9 Rq?q`=TR?qT@93q?q=TR?qT@93q@TqRs@9!Q?qi+TR@9R?qT@9?q!T@9?qT @9?qaT@9?qT@9?qT@9?qT@9?qaT @9?q@T?qAT$@9?qAT(@9?q!T,@9 q@9?q nT?qST?qRT@9?qT@9?q!T @9?q;T?qT@9R?qT@9?qT@9?qAT@9?qT @9?qT$@9q@9?q@T)T?qFTR?qT@9R?qAT@9?qT @9?qT@9?q!T@9?q T?qT@9?q!T@9?qT @9?qaT$@9?qT(@9Sq[R?|qT@9R?|qT@9?@q!T @9?qT@9? qaT@9?,qT@9?qT@9?qAT @9?qT$@9?|qT(@9S|q7@9?qTT?qT T?|qST?q0TR?q!T@9R?qT@9?LqAT @9?PqT@9?HqT@9?<q!T@9SRdq?qTT?qTT?q 2TR?qAT@9R?qT@9?qaT @9?qT@9?qT@9?qAT@9q?qIT#,TR?qT@9R?qaT@9?qT @9?qT@9?qAT@9?qT@9Sq?q CT?q`.TR?qaT@9?qTR?qT@9R?q!T @9?qT?qT@9?q!T@9?qT@9sRq@9R?qT@9?qAT@9?qT @9?qT@9?q!T@9?qT@9?qaT@9?qT @9?qT$@9?qAT(@9?qT,@9?qT0@9?q!T4@9S q#caXaxca! #cPaXaxca! #c aXaxca! @9R?qT@9?qaT @9?qT@9?qT@9?qAT@9?qT@9?qT @9 q_@9R?qaT@9?qT @9?qT@9?qlT@9?q!T@9?qT@93 qG@9?q`T?qT?qRT@9?qT @9?qT?qT@9?qAT@9?qT@9?qT@9sq)@9?q`TR?qaT@9R?qT @9?qbT@9?qT@9?qT@9?q!T@9sq@9sq @9Rq@9S qTqS s@93Rq@9R?qa~T@9?q~T @9?q}T@9?qA}T@9q@9R?q!|T@9?q{T @9?q T)T?q@T?qzT@9?qazT@9q@9R?qAyT@9?qxT @9?qxT@9?q!xT@9q@9?q@TR?qvT@9R?qAvT @9?quT@9?quT@9Rq@9R?qatT@9?qtT @9?qsT@9?qAsT@9?qrT@9sq@9R?qqT@9?qaqT @9?qqT@9?qpT@9?qApT@9sq}@9R?q!oT@9?qHT?qFT?qAnT @9?qmT@9?qmT@9?q!mT@9qd@9R?qlT@9?qkT @9?qAkT@9?qxT?qjT@9?qAjT@9 qM@9R?q!iT@9?qhT @9?q T?q!hT@9?qgT@9?qagT@9?qgT@9?qfT @9?qAfT$@9?qeT(@9s q*@9R?qdT@9?qadT @9?qdT@9?qcT@9?qAcT@9?qbT@9?qbT @9q@9?qTR?q!aT@9R?q`T @9?qA`T@9?q_T@9?q_T@9?q!_T@9?q^T @9?qa^T$@9q@93Rq@9?q@TR?qa\T@9R?q[T @9?q[T@9?q![T@93 Rq@9R?qZT@9?q`T?qaYT @9?qYT@9?qXT@93q@9?qTR?qAWT@9R?qVT @9?qaVT@9?qVT@9?qUT@9Rq@9?q`TR?qATT@9R?qST @9?qaST@9?qST@9?qRT@9Sq@9R?|qQT@9?q T?LqPT @9?TqPT@9?q!PT@9?|qOT@9|qaOT5A@!$EB!@?`T 8@tZC Q qHTl@9R?qMT@9?qLT @9?qALT@9?qKT@9?qKT@9RqW@9R?qaJT@9?qJT @9?qIT@9?qAIT@9?qHT@9?qHT@9?q!HT @9q<@9R?qGT@9?qFT @9?qT?qFT@9?q%TR?qAET@9?qHT@9?qsT@9?quT @9?qAT$@9 q@9R?qBT@9?qABT @9?qAT@9?qAT@9?q!AT@9?q@T@9?qa@T @9q@9?qTR?q?T@9R?q>T @9?q!>T@9?q=T@9?qa=T@9?q=T@9?qT@9?8q>T@9?qoT@9?|q!T@93|q@9?q2T @9 Rq @9?$qA;T@9?0q:T@9?q:T@9?|qT@9|qZ@9?qA&T @9?q`^T?q!_T@9?qaT@9q@9?q$T @9?q!\T@9?qYT@9q@9?qLT?q.T @9?qkT?qjT@9?q!T@9Sq@9?qa/T @9?qQT@9?qOT@9q@9?qT @9?qbT@9?qST@9Sq @9?qFT@9?qaLT@9sqvRtRr@9?qa;T @9?qabT@9sqg@9?q`0T?q/T @9?q[T@93RqZ@9?q!,T @9?qYT@9qO@9?q)T@9?q!)T@9?q(T@9SqA @9?q'T@9?qa'T@9?q'T@9q3 @9?q&T@9?q%T@9?qA%T@9Rq% @9?qA/T@9?qaOT@9?qPT@9?qAqT@9Sq@9?q"T @9?qAFT@9q RRRR@9?q T@9?q!DT@9?qDT @9?qrT$@9S qRRRRRRRRR@9?q,T@9?qWT?q`jT?q iTR@9?qa3T@9?qQT@9?q!RT@9S q @93qRRRRR @9qR_<q`)TRR @9?qGT@9Rq @9qRRRRR @9?q!2T@9?q1T@9?q!|T@9sqR @9SRq|@9?qA?T@9?q>T@9?qasT @9?qrT$@9qk@9?q T@9?q T@9?qA T @9?q T$@9?q T(@9 qWRURSRQRORMRKRIRGRERC?q&T@9?qtT@9?qsT@9q6R4R2R0 @9?qA%T@9?q$T@9?qqT@9q"R R@9?qaT@9?qT @9?qT$@9?qAT(@93q R R RR qHTRRRRRRR@9?qT@9?qT@9qbTRRRR @9?qA/T@9q6TR_<qTRRR@9?qT@9?qaT@9?qdT@9qRR @9qRR@9?qT@9qSRRRRRRR@9?qT@9RqRRRR@9?qT@9 q@9?qT@9?qT@9q 9Tqs|RzRxRvt @9?qT@9ql @9?q T?qa T@9qbDQ#4 P@y[@9?qT@9qSRQ @9qLRJRH @9?qAT@9?q*T@9q= @9?qT@93q5R3R1R/@9?q!TT@9?qST@9q$@9?qQT@9?q!QT@9qRRR@9SqR R RRRRRRR@9?q!T@9?qT @9?qaT$@9?qT(@9Ts Tb@9?6_t}`Rqw{S @ @9@9@QqTRSA{Ũ_bB @X`xb@ ֠PC@@@0@9!@_(q@ATc @c@c@`?RSA{Ũ_c @a@5:zRSA{Ũ_[w@bx@=5w`@8P6f@d @@H@ѡR!LGh`8#xcc k6T Հ6тha8xb"jBTnhG@BR|rE@ @r9TBR|rE@ @? r Tt~rTlA@9@4R҂R84a!)v{5!G!n!hD!@!p@!snw4a!@*b{ 55!D!nia!`*U{5!TA@!@xa'~'@SwV!B!8@5tP!E!@OrJa!*6{5!B@!@`?$@TJvu7PC@@@0@9@?(q`Ta@4@c-4a!*{5Bxr)5G@`/C9,q/Ta@Rr `!6O!$F!@9na!@+z+4a!`+z-4a!+z 5!F!9$n'4a!+z5B!F @,T!XB*T"@v%4a! +z5lA@9*5m{*sRr*qT`@2`PC@@`0@9@?(q$Tal@4F@C@`@`@0@qF@`0@9!$Q?qT@@`@!@my*vs!A!mu*ksF@@0@9!$Q?qT@@@@! @muF@ 0@9!$Q?qT@`@ @!B9!BӔmcF@0@9!$Q?qhT@ @@!$@mRB@0@9!$Q?qHT@@@!@rmA'p'@|@ @ @"_$q T!4!L ?q T@@T]mlA@9 43p&F@C@`@@(@a@?!!@!@! qaCR!,ҫpp*r@9`@@R*`[B|~[z"+*q*q TzthpkLT\|[B@"[x`@@`@ ``@@@! +.x4a!*y5!ҭrAR{!0D!@9l!A!@plA@94!F!@9!@l!4B!@l!hA!@rB@9@4x!|@lc @al@4!xB!@9rra! ,ua!`(! }ux`C@95!E@9q!ڣ"@bC@#{@@`?R{_R_{" @ @_1TүpR{_ @A,!T ?qT RrB  R_kT@ҞpR{_BRҔ}ҖpR{_{!pC[SB @9A@/`5BR/@@ASA[B{ƨ_RcrkJy RSlr Rx @ k TxBR^}_pR0n{x @ qATx@cCkDck]u{yR{_֡!pC!@9?q`TR_{ ktxwRn R @{¨_ բBTAB@_qT{S@o`@ @A?$qT7?,q@ T @ @6@"@"!<@?1T?qTA@? aTRSA{¨_@ @R_! Rx@0@9?,q@!T4@@t@T`@@@` @!6@"@!<@?1`T?q TA@? Tts?1jTA@?1*TA@ ՠC@y6 H@9q`THqR_ {S@ @Zk@7@@*vaK!|@kRSA@{è_ RRex`sRoma~@skRSA@{è_ { @S @3 @!4!L ?qTA@kR @{¨_ARy{[c*BSk*s'm gHg Cbw"@W g@zP7D@@ @@@JDB gG"@A@_@!@sˆFbC"-D@ C"@D@)C@ @D @@@@S @E  @`Tb BC|@`7F@_ T@@`e"H75 Cfe7 7ARds 4`@ a@D@@@ZD{GB@c@B@!˜F!CA C@"@b@!@! @A @!@!@A @w@A 4!FE!@@?TrւBW@@A SA[BcCkDsE'Fm{ͨ_$Q4!@s!` T Cf e76Rsa@zwbDjD@@ @`ARR{A@ Ta@s@ fc{nPo9QC *sRO) Ղ7! @ATF49 lF qT*&R! "*&R?{?@@Isv{S[*4@T! @?T*SA[B@{ŨoRG'zG@'@QSA[B@{Ũo H@9qT @G':vmG@'@ {$RR BRrR @{¨_ {S H@9qT L@92 L9sVEb@"RSA@{è_R`,us`RSA@{è_{SsnAa@95sVEb@DRR{RSA@{Ĩ_ցRv @6ARqa@94R҂Rz@`R,:s`@ "H@9_q T{SVE~@"SA@{èR_R`,s~SA@{èr {SsVEb@$RR'` @!4!L ?qAT@@Q1TSA@{è_ARwQRSA@{è_`R-r``@-ix{SsVEb@bRRnRSA@{è_`R-r` {S[@ @VEr`TB@"$RRnBRqRSA[B{è_ւ>@RRn`R.rB`R .r>{SsVEb"@SA@{èR``.}r`"SA@{è{S[!@A @s>R@@yVEF@"RRnSA[B{è_֠SA@[B`{è_@@6@@SA@[B{è_oroSy`@rT@y6lR-rF {!@!  @ 7 @@hR @{¨_v|@sR{¨_{ 3@S @!4!L ?q!T@@GrR @{¨_ARwRa!.ohR @{¨_R? _ ՠC@9`4R_{ @aR4!2ycCkDsE@4L q8T@ @!$F 4DB@@b@4L q8T@@!F!@!@!@!@ ЀE@@o@?rA;TEBR!R}br:TG@?qiTcR"4r@ q>T@ @@K*ѕ@@@;T"Q\c@G R@$@AFQ@H$8!@?kTa@? A@kkTRRRRgX5cC@ @7rRTb@2@9$q,TN@9`;72N9Ob|@k@9a!5F@9rT@4L q9T@ @Fq@9Bx!*9@ Rr R rk(T@ @Ѓ!CcE"@y`(4B2"yr@9,4a!4l5c@ ,T q 3T Rr! R?k`2TBRCpK@RmB8@!28T2@!!BoAC!)RRR@@@kjˢ@BoAC!`)RRR@@@wkjcC$@ X6 @R1e@9 RLqAzCT@4L q!'T@@BE@?T@?q,T!QARzbBE@R!4r qT @!D @4L qT@@!4B @4L qT@@!F!@"@B@B@@$ @@@$@$Gl@ @@ @@CP4GҖBE@@rTB!@a"0@9B$Q_qT!@!@a4L q!.T@@B@!@!@!@ A!@*ak 5@rT@@4cksmA!+Sk*@5F@9rT@P7BBXB @!FBAa'TB"uAR m[ARhARmARlARl{ARhARlhARl@ARlARgARl2ARl@`|@C^;ARgBRf:co/@icCkDsE)fb&ARajG BRl@uxi_%@@@DmBAB7! 0Rvi#A@Qm@r@TlA@95w_Aa@RK@@Gh"8@K@@@`BBnBRCf@K@ARwlARslc @a@4n@)@ @@Kp @?q)T!Q N@9 ARZl1@@BNnCA!)RR@R@@iDiK@pff@t7 @`6b@ B92 9AR2lnA@9 4rE@q`cC,!T ?qT Rr  Rk TBR#nG@R R@8#J*B*aT4_qS T@,!T ?qT Rr  Rk TBRCnK@B"@1^",@9j'6F@9!29R@ @!@GB!XB @FABTBF"> l@ @!@KARkA!4zb1CfN@9cksiflBZB @!FBATFB@9ZB!29"BRckseBB3a! @A@5 lc!@EkBRs!@e@9@_q!!@6 lkse@kB@7lk{SRF[@@maTg5RF[B!ACSA x`@{Ĩ_ֿTT@y`R?k@TSA[B@{Ĩ_@aRr R_kZSA[B@{Ĩ_ @9qT R{SaB["y"@5@@?1Ta"yqMT|@C!@!xvBResBR@a@A!SA[B{Ĩ_{bTgC @@ 5x6@x  @A,!T ?qT RrB  R_kTBRm@@@!@`a"yA!@8!ee{S[aBc"@@3@1 T@9|q@T"y4qm TkOg*aRdklaRg<4!TB@̌RLr_kTrLŤB$A@ -`.?TA@yR?kT%@ T,TB@x`.R@_kTXDT.B@M l_ TM,aTB@x@.RA_k TE_4aT@̌RLr_kT<_,AT@xA@.R_kT4_LAŤ$@!!-a._AT@yR?kT_@ T_,T@x@`.R_k@TMB$A@-?ATA@ymR?kTA@R MrB$?kTA@ylR?kAT@@9qT A@x ,R?k!T B$A@-@?T@ @9qaTB$A@.,?ATA@mR r?kTA@y-R?k!T@8@9qTA@.Rr?kT@x ,R?k!T@R!Mr$_k!T@ylR_kT@9qAT M$@-_T@ymR?kT!$@-A_AT @9qT$@.,_롲T@mR!r_kT@y-R_kT8@9q!T~@.Rr?kATwC@yRkAT=@yR_kTkb\ { ssB`&@`&RR @{¨_ {RSa҂J@9!@!`.dJ@9_L@97@`@ @ bN@9 RaA2aN9SA{¨_`@@?qT!Q[{  @a@6ab"@y@!E@ R#x" @{¨_Rmaab"@y R!E#x" @{¨_ {bBE! @yAxaRR{_ Gn<`RBT:@9~@3@7 @9aja8a4!T@9?kT*bp`4t 4vTos T`@9k T`*Y@)T`@9kTa7@?`T%_8D_8k`TT 97`_8(qtK@97a_8`_8?kTkATtAt (qAT=t;1ARٛ`IT@9) (qT(T qTHTq9_4q TlqT0q :_֠:_֠:_֠:_֠`:_֠@:_{?D@ST[v5?T @963@S`B@y* @T`@ ``@906s@3 [BSA{è_ @T"@@yB _ qTSA[B{è_[B {SsbD`@ @0@94"$Q_q)T?$q@T“SA{è@@@@SSA{è@[U@@7?$qT[B[B!R8sVEbR@"$RSAÀR[B{è`@`0@9[B?$qTR:Ɨ`R{`D@0@9?$q T]6:!R RN@@@@!F× {S#@ SA{¨_!`B!@9A5{S[*B @"@/? @q T X7 !` ?Pq Tcr T 7CR!4"O`@R ?qTR!4r q T`@w @@+@ k`@?qT៙Rr c F`BRRcz+@_)T_Y B8v* ҧ+@ AET A@9ha8kaTKh!8BT`@ q`@9cCkDB/@@ ʀ SA[B{ƨ_!$Q?qTa@!@ H@9qTARf c`@BRC+@cC rTRTCR!4"ѐ@``@R ?qT,!T ?qT Rr  Rk TBRCm+@vRk`@wck~ {SsSA{¨_ {5Sh38SA@{èRSA@{è { aB @$@A,!T ?qT RrB  R_kAT`@a@@BBsB@a@AA @{Ĩ_BR@){S@3@SA@{è_SA{è!`B!@9!4SA@{è_{è_܌ {SSA{¨@_ʌ {  @h38 @{è/ { aB @$@A,!T ?qT RrB  R_kTa@`@!@sB@a@A! @{è_BR@ {`D@0@9?$qT!:P R@@@@{Sc`B[6r@GҠTG@G@ TRl2@`@A5@k Cs@a5AR @#RB* aRՒDR@ @"@ D )B@HG @_@@{*FbC C @c,D@ŒD'@`@@ @G G'@@@U &@&`C@ T!FBC @ T CR`֒D@@@@ DZG@C@B@!9F#CC@"@B@!@! @A !@!@!@A @ RkDsERsBG@a@AaSA[BcC{ɨ_|E@dAR" @#RB* aRՒD@ @R~"Ŕ7M7@@ARR#@R  jksʔARR@R  ] { ^]RD@@"@@RzR'@{B= @ c')===#='=+=/= {B= @ c')===#='=+=/= {! G B {|@ Y`{_!`B!@9a5- TA@qT{SB@SSA{¨_֠RҒ ғ` SA{¨_{S"@` @SA{è_{ =CsB#)k@' C==#='=+=/=3='@a@Aʁ @{Ѩ_ {!SbB @C@Ҡ X7v$@zTBR@@&E@@9B07RBtCB@ `$@c4@@@@B(*!;эB@ 0@9$QqITTA@q@ TCR!BލsB@a@AaSA@{Ĩ_ց @ _8(q@T&E@a5EBRےR@BtCB@Ȗ&E@ @@0@9_<q!T@@@E@ @_rTP6@c@#C,cT qT RrB  R_k TBRKB!@@9BA(q@@`T?T @@Bc`;@@!;@@@\CR!zw̕*=6@ @9s~qjskT~~@js @9qzwk!T:*w@;#ф|SB  Rs@~@zw{[kBScs"@?@9q TT3@9lA@9@57q<R *|S< Í@,qaT@RR*qkT!T[5@ @9qzxkT$~@zxa @9qzwkT5!E?~@@zwQzxO4s@Lw@J4ҵB?@@AʡSA[BcCkDsE{Ȩ_@@9 5!@9?q17RR 5@~@zxzw?k+T*$zw!|@"R$B@@2@94a~@@EA[4R s@*AT qTs@zwqTF@qTR*H1Tc@ҁzwzxz7~@:zws@uw@ޔs@۔5zw!R+e!< .w@*^ R {[BSc"@/ˏ|@R$B@#R@0@9?qT@?q T!Q*?qAzT#@1TRB/@@A!SA[BcC{ƨ_@3@qןSn@*@?qTR*1T1T#@*z1T#@7W@4#@@#{[_q@TSS|@Ҕc T"h`8bh 8TcTALTu~ TlTSAcC[B{Ĩ_[B{Ĩ!@9D[BB|SAcC{ĨχS[c__ G_ DF_ tF_ `A_ G_ {BFSA@A4^`WR@OSA{¨_MqT|z! F__ ғ{S4RLr@T`@? @qTqcТc@B`>BSA{¨R! ?USA{¨_$QqT` @@q@@Tb`>! @4SA{¨R!>9`@ {!tCS[c# @@@y"w@&QqiT`Rr TSA[BcC#@{ƨ_u @@U@B9qTRrT"@q`TRC`Rr@T6Q<҄?yRhqiTfQ<q TQД> @2qT`@@'!`*ۋ@@AB977*SA![BcC#@{ƨȋ"@q@T?yRҀ6Q<hqTХ@DFtQ>2qIT@B9qT$s ДДs@sqT?yRqaT" 3`@@'@!`*Іs@@g!`*vR@@@@a4//@yR?x @  {SaB"@҈b  @ A B@sB@`@ ʠSA@{Ĩ_ A)@qTc&R䣐Rd=rqc| ̌R!|$̬r!|-Rf|&@` R q|aK|K! c ! )T@)RlSc|BKb B+dT/R#r_kTxR'RI4rrI|))`I )} )}K"G|elScKBK .Q׀Rf-r2VR}Rr}&d?RrՑRbR Ro͢rK2R* ) R#6Rqr-R&Q}$` ||K |  }}"BgG K*|#c` c|c|Kb B g ' 5qDQdDzBQa T#RR)!cR#Ir_qG 䣐R#|#簂d=r-R|c`D|$# Bc|`c|KK|bpSKCKK!K)_@)R*Rc|lSBKb B+T㠈RF|Er0R$rC|#c`C c|iK *))5! R㠈R0REr$rxR'RC|#I4rrc`C c|c|K! bI|)kzRdźr%R ̌Rt!q̬rd|$`d ||Kd|||(aK -Tc8QDQ'5cQR)c8,CR'RKxRI4r'Rr!Qd!  |))`Ӊ )} )}K"G|'`G ||KlScKBK EDQcQBQ{c*[BS*k**s**@o*O )@)@o)g)sF G H O@kL e4|@!?T`5@9 4ϑy~@i R| k+TszSy~@]*a Q!TBo@@A!SA[BcCkDsE{Ψ_!&5!:9Ҡ c0{!lASbB!@9C@!5 RsBHa@A{@SA@c0__RRRQg!@9n@95qT4q !Tq`Tq`T@ *%T @8'@$T?q`T?q$@z T T @9RRmR %@$HT !5h@9RmRRqaTh@9@$T`a 5RmR @9@$iTqT5 @9.R MG R yi) ? kT@8Hg?(jT@%TxR?q@zHzTqT_8qTCn9EDF9_ !A_'QR jMG Ri Jz TT?}qaT!5@9$T !` A_`@9 $HT B!A_֢!`5A_q TRmR%iT@9 @ $( TRRmR)?%TG@9qT|q`T@J)?%T*|@N*!55G @9/RJ @0&T "! A_ RR@9$TR ?qCz T @9'@$T?}q@ T?q T5 !A_ !A_a5qq!4|@QR MGjRmRyi,j!!5 /R; b!A_@9@$TRmR% ! A_ ! A_ !A_ 54! A_!55.R|@mR "!A_ b!@A_!A_/RM ?qAzT @9*.R  _ {cRS[sLG3B?9@9R@W_9)Sxd! ?kT Հ@8@x`? jT_sc?RS@g1@9q!;T! R`:5ck B@0@ D@!`B!a,@B0sBA@a.!_@_@C@C @_ @BxB2jR?B9@2a5_B95@Rq1Ta@9 Q?|qIzT@8 Q?|qIziTd)$T𓙙Rbr R䗟j T@qT:RRRBTA@9?|q`T!Q_k T kT!|K?k TR(9RbA  _kB:xSZӜT|@45@9?B9qT|q@ Tq T@!?$( T4Q|q IzT @8 Q?|qIziTR䗟jT:RR RЃR! 9BR*_B9`4 RR!R?B95xQ|q! IzRT |q@8BQ|q! Iz@Bz T@9@!?$ T5 ՟BTa0?B95R!RR!RRR`@9qT`! Xaq;BW@@ASA[BcCkDsE3@{˨_@9%4qT`@8qT|xњ̌RC@ R̬r R?R{"@9!_|q;"Ta@9?|qT!QqZB< BbqZ|KZkmT?@R]~*C@*|@mΌY4?B9Y4@@3f!@sTҀ!RRRz PfR!@RRo~4@@3!@sTR8` T94hgck@9qA T B@vO!`Ba,@`R(z!@`n!RRR2i<@?q!T@9?qTERc@$қ&@@3!@sT|@RR! R ?B9j1 ckь {SB[6C@O @ Rr? j`T@@6a@{@!@?MT`"RcA]ARR! }*I@9a5BO@@ASA[B{ʨ_H6cka@P6"@_ T!@ 8G0 `TcCkDa@{@!@?T~AR*@94R!_} r T@P6,!T ?q@T Rr  RkTCBRea@!@ ARa@` @!@+!@8G0 ` T R)u+ 4! 4+ R!?C @ X b@!@@L@ @@9?C @qmTQ : RIja8_q`T_qARR @?qT!Q cCkDa rTcCkD RΉ @6R@AR:QO`@ W7 Rͅuҡ+4!`4`@t!?C @ a@c"R @7qT|@ҢcCkD#cCkDck! ck{S 5@ r!TTB€RR@` SA{Ũ_Rc*rT@cC r T RU[5 @6@0a@ ,T qT Rr! R?kTBRu#B9FBa@ @ `@a @@?h 8@9$T[Bt @[ B#@@ D@!!aB,@B@@._@_@C@C @_ @BxB2R/@2@@X6 @"9RRBRD@ RRBR:ւRRR1@ RRR'R RR@@ @!4!L ?q T@ @|@ RRR RRR`@AR(RRRRRR R@r@ `@ @|@ |RkT`@ARb @B _q@T |RRRʇ[BcC#@ERc@$:~[BAR`RH> {  @`X6s @`@0qTR!RR`@@0@9,qT @{¨_ @{¨_{|SR!RRРR! ;{R!RRs@@4 [{ TRc@ @!4!L ?q!T@ @qZ@\MT R3r @s @M~kTRDŽ@ @! ?qTARs*;~TSA[BcC{Ĩ_ARyTCRbA!J~SA[BcC{Ĩ_SA@{Ĩ!`NSA@[B!{Ĩ`G[cމ {[c#K| RRR!@@{1* TRSv@ @!4!L ?qT@ @|@qMT R3Rr @s @|@}kkTa~@RT@ @! ?qTARs|@}kT qTSRsk@Tе"CRB}sqATSA[BcC#@{Ũ_AR[BcC#@{Ũ֊Sn { {R!RR@ @P7 @@{¨`_ @AR{¨}R! 9RBRz @{¨} @{΅> {[/{/@{Sc@kTsRRRT@RRR@K@9@gzdzҀ  RrR@ @! ?q T@ @R@ @! ?qAT@ @ksᣟZ-T!R*SA[BcCkD{ƨ_ ǟjAT 4?qkTq RrST@@s R⷟_jTR~@ @! ?qTAR?AR:AR7*RqS T Rr @@skSTRV@ @! ?qTAR4 _  R_{SB@@'a@9! 4"@RB_$hTcņr T#@@ T@a@9?q$Jz$MzT XrTB'@@ASA@{Ũ_?<qT?LqT2 a@84?0qTIT?q TiT?qT?qAT2?qTT?q`T?$q!T2?qT22?(q$Mz TRBLGBa"j T@,22222 RC*{RS bBC@1T*5@T'*'@5^BaHRr '{'@bR!RCa RT!r|@  sB@a@AʁSA{Ĩ_ {!FS @4RC@3A!`m4a@9 RA5RkTSA{è_ԇЂЁB@!zyBsCuʇb@8syaTć!B"@9"4_qЃ!cc!`cySA@!4{è\yc` {SCjB/K@G # )D/E''=+=/=3=7=;=?=C="RAy74sBG@a@A!SA{Ԩ_֟ TVy{ "R$@'A#y7s T @{ƨ_ր`={`GS@9G@5A@T @RVs@ s?SA{¨_ȅ{SB[*C/ @? 37c )̡RkOaT @C$@T(706,D!G@BCd$@a@@@5L!br CTs@/@ 7#<c}/_q!@T#@®Rerk`TcBGkc"B@BXuφs@/@a7a,`@!}U@!,!}/braTs>HS5B*?@@AASA[B{ʨ_vGS76s@ck/@ 7A<!}/qX@ G@9Xu T6x`VcCkDd sq,T3@!#" s_qlT3@aT!@s?q Ta,!}/U@B@{R4x` @r Ta@Rd4!grTWzRZ}4{0|{!wz#z# sq T3@B!B Tck|"U@e#@yƅRkaT"@9_qT_̡B:@n{Rwck2!=z>{S[`iTsss[zj48SA[B@{Ĩ_ {S3s@s"Azj38SA@{Ĩ_$c0{SbB[c8rA@sc9TR?sBHa@AA${@SA[BcCc0_sF@@4@ R @| Tck@S7c?C R98 qTcD9Aq@Z?@R>@! ?@q@zT? @q`TC@`T7@DRx@;a@ ?T5sE?@!R R}r T?@!RR}r`TC@jkDsEC@5C@;@7kDC@ZsE{MkDcR 7@ @qT;@7C;@6dc@!kCC@  ks,;@6C@cc! c@!kCkD{B,GS[c@@@3@6D7@9?9|$F@`06`@?q$AzTa@ R*`4`@775SA[BcC{ƨ_ց@ \@ x78@(\ 4BR'~4 @?qiT!Q `@6-W4 ՠ6DlA@99RK@@R}`@w@\@7#R|k!+@;@z#1 4 @@` T@2@9$qTkD+@ @@AT@ @ @6@b@Bc<@1Tqm TB@_ @T'@R @@9@AT @@ @6@@<@qmT!@;CRB!x!@RR!@$ "@9@xkD+@d+~a @ @a6@"@!<@?1T?qTA@? Tcg@ZRD@9m@AT1T!?1TA@!@1 TB@ @y_{  @? rT!X7!? q@T @{¨_s @a@ta@a_6_!|pa!_ ҃͜ݻA@!|!,!@A b w{[ FS~R~`F@4`߄R3@ R@9NGAxa! ?kT ՠ@8@x`? jT!!`NqBxS 9@9qTNG``6 |SF! B* @  Sj$8@9 |SFӣ`!!*! !*c `7Ra ?kTNG ՠ@8`?#jT@4`6sF@`@5 !!`4!`@ 5B9/%ɷGE ja8!? @`ATGS"SA[B{Ĩ_ֵfGg3whyj48!T@sF`@4YRR@j$8 @9`a0L!a5`t ՔB@9qT*G @9?qaT @9 p!< 4!4!!4!5B@R9t@B R9ā*G `) ՠB@!Q_{S[**R @47R ~@Ȅ%R"!4CcB$@6@c@ #)7@9@5  SA[B@{Ĩ_ R| @A,!T ?qT RrB  R_kTa@@R{{BR{@R{{ "@B@B@?`@,TT`N@9 7 @{¨`@`N@9 6`@@?qT!Q @{¨`@@@?qT!Q_|]|  @@Bp !@#@d@$L@9d7B 2 d@dB 2 c @cB 2 !@_ raTB 2 _ {S6C[5@hu@?qIT@!@x @!4*B@9j5B @@?kT4 @qTiTQ SA[B@{Ĩ_6C!Q@cacF!Kb4v@x RSA[B@{Ĩ{ {R[ScRs|@rC@9q!TdE@@!@!T R*@@еrC7C>G CL@9@9fxS@6@FL9cf @pf qT@B@?~RSA[BcC{Ĩ_BH@986[@@ {[S@B3@@' t@t @s@s@@,T qT RrB R_kT @B'@@ASA[B{Ũ_RRsR* @@?*~@#6C@@BR{#@{{S[@3@t@t @s@s2@9,qAT3@[B*SA{è_RRUs*Rw @@?*~@*SA[B{è_ր(B {RSR:s*R\`@@ U @c @C`?@~@RSA{è_@@@H@9?k`T@__@@ @H@9?kT@_!T__{S#@@R[c* e@*@?9 s@dN@9d7tJ@9@VqтYT9Bqa@T*s@*SA[BcC#@{Ũ_!GuR*SA#@{Ũ_{cdEScW`@@!@`T[6R@>G@d@$?@@! *s@bJ@987dN@9c@/7aBe@7@?qT@!@A@!  *4"RarC"9 7srC9[BSAcC{Ĩ_SA[BcC{Ĩ_~@@| {S@@b S@@3@R@!pSA{¨_ {S@@[*@H@9S@kAT@c@C@bW@@[B@SA{Ĩ {[@@*cS`H@9s@k@TSSAcC[B{Ĩb@_AT@B@b@Cx@r@PC@@@#@0@9@T_(q T l@7"8@R!"@_T"@_ATQ!`1TAT__TQ_! @_(q`T <@_! @ <@{cPC`@@@$@! @ !A70@9@(qATc @e<@kTRf8@%|%heT@`TTTc@c@`?R{è_{R{è_`8@6dD@d eLJ!ˁs|a @@.v{Nr 8@_raT{{SKy`@x`:@7CR!`("s:@7SA{¨_ր&@RRҁ!`)vBRzCR!`("Ҳs:@`6&@RRҁ!)vBRSA{¨oz{S**s [s @@934$E@8@` 7@@vT BӡU! @!@!!}!T87`9@ 7s @T`!)v[BSA{è_s"`"T`@@TCQsTb@9֞F *T@9c8!!D9?A T_q T@TSA[B{è_xSA{è__Ts_T`96u˶a B`Sa @@u} Ts @T`96s"`"_T`@@TCQsu  R wrT@2[BRt@sTb@9[ B@Ђ@ D@!!aB @`BТ@!F|BC @B@  T!A!@4x @ 2[B%!  Rr?kT@@B'@@Aʁ SA[B{Ũ_5BR`C@s  B@S!b@ D@!7!ҁB0@B@R2r``@`@`@ b@@ `7a@2C`  @AR3sfDa@!a`@`@IҀR'0 {c7BS*[ks3=3a@_ gW#)7=;=?=C=G=K=O= 64*sQ L!@1@TY#:* 4qQ T* 5A#|!4x !`4*1~ST:"9Rq @z!T!bIfJfB_@@ SA[BcCkDsE3@{֨_&6H*!#!|@sQ??1TQ!@O!@21aT!4+!'{S!@T`B@y ?qT! @!G@#x`SA{Ĩ! SA!@ @{Ĩ!RSA! @@{ĨSA!@{Ĩ {"BDS[c*@@ @a@$@@@@!#4Qk9c Z#RѴ@.@9"R@ծksT%!%ήkaTkDSA[B!cC{Ũ®{Sa @$@@@`@9"Re@cQ@c|@! @` @Rh48SA{¨_SA{¨!`  Հ{"B BWS@3#`@@bDC@cC R! a @?q)T!Qa WA{è_R! ղ@WA{è {c S*B[ks;@_G62 Rq!һR R@`@K* "H{c9@R ;@ W4!p6!H7;@"3T!9Eh@9f@x5 `7iT@@ 5h7@k{@[z!T3q`/T T+q-T(.TR'qaTg9s B շCRcX7K@T_q`UTG@;@) @!!B_@!@AA.SA[BcCkDsE{̨_րR7r!7@#Eb{8@@ T KTX7 {@"Rcqqh)T|@`T_iTss*! +X7p@zAT@ q` q T(T7qT@Rg9s Bzq`TsqT{@k T s5T"R$c2|@ K@95R5o7t7pd@zTK@?Tk`8$T{@"R *c|@uscK`R( D9|@BiTD@9`@dd8D9 TRCrpcR( `D9|@ BiTC@9 d@#c8D9 TRCBT.+O6;@AB@BA@@}# TA@97`97s @T)xT3q TiTqTTqTsq`T{@Kp@@[RqTB9g9G 8Rs"`"_T`@@TCQsTc@999F *?T"@9"b8 !D9TqTX5;@_TsTc@9?6R+ sBTc@9 ҳ Rg9s BUvRg9s Bҕp Rg9s Bj;@{@"R *c,;@;@! ۴{RS3cB[d@ R@"_ @qT!!$Q?q T @R\ @,T qT @RS @ R Rr kT @RH@! @,T q@T R Rr kTBRt@@|SR rC*csB@a@ASA[B{Ĩ_ր@ @@CR! ҟ#R @R BRF_{c73(gBS[ks*"@O< 7 6b  4@9`@! @N 6 @GfC*6GZ4Hх2?f0(@9! %4K@T[4`@@˟T'CR"4`@@TB` @O@@AʡSA[BcCkDsE3@{ʨ_B A5Cf24`@@CR!/bGq`@@ij {2S[.bTjs84 @SA[B{è_CRB! ׭ @SA[B{è_ R{S>S9c2@0T`2@9Tq/T+;[8Ru@k:R"^rZkD/ T`TT 5CR! Ҥ`@jT!RjTCR!?"`@X6"CR! @@@6(#Ts @3%2@ T`2@9TqTbGdB@zdATa @4@@6 F@"BAC@bx`T1bx`%TaT?q)T! @R^rR rkT@@@ `ATCR!@ `@R^rR rkaT`@@?Ta @!@9?qAT@n `TCR!#"̬`@_76qT rAT*!0!xb:4`@p6` @ŹCR!#"Ү`@6a @"_8B"p_!!@~c@a @b A! s`@7 @?q T!Q cBRSA{ƨ9CR! V`@ r TrTCR!BqcC^CR!/|@@b@ @@h$8b9CR! QZRv5[BcCkD+@BCR!M$ h6 ЪCR! Bū! 3a {$AS@yc!@B|@A SA@{Ũ_ { 3=CsB#)k@' ==#='=+=/=3= '@`@ ʀ @{Ш_I{RS4B[d@/,!ը#Ra@ ,T qT Rr! R?kA T`@a @@+'`@DR|S%r*cc RB @@? T#R#a@ ,T qT Rr! R?kaT`@a @@+'c@RD%rc|Sce*CcB RçҶAR϶RB@B/@@ SA[B{ƨ_CBRCBR!`\{S S`@6`@@<@`4!@!R5 a@6a@$@D!<@4@d@! #c|@RR%r!r$@9@ ARSA{èHR#%rҁSA!`@{è@! #c|@#R%r{S ?3`@@ Ta@R'r!@& #@b|@c cc|@@9S*ISA{¨!`ڧARSA{¨{S  `@@ TR[pb@! :U@@6@@a<@`4!@"@! RR&r%rC B|@ cc|@@9@!a@R'r!@& #@b|@c cc|@@9S*SA[B!{èARSA{è {RkR#BSr[Rcsc)>3d@?@(g@ @`TTT T TRh Tf@"V 4|TS 4R!@"ͩ TTC@ Ta!`=R" 069B?@!@AʡSA[BcCkDsE3@{Ȩ_@"@T R ( TT0 TT4T3R@6R"{|TR!BaTR56RR!BM! T$T3R@"W3R3Rf@6R"%GӃR"e TTCAT"4@` @" _q@T Rr!  R?kTBR;@fRa!`=}3RcR@"qa!`=!of@"@@B@;@!`\R! ba!`=R{RS[@.N@ @fRCEւ҂zsը`!TSA[B@{Ĩ_CR!`ғA B$E!CB@!@B@_ T{S@@y ?q T @!G!x` aB@y! ?,qT?q TT? qT?dqTD@ @δ!%x!4!RSA{¨_?`qT?qTa@9`@!h!4RSA{¨_?$qbT?qTT?qHTY`@!hD!@7R_N۴!R˯`@!RA!4RSA{¨_9`@b!ݥ0!4٥RSA{¨_{SvC@ [cjDCFvC`@@?``@ 40Ӵ@@sD`@? T@c@@! jD@7jD@7jD@A07@E@?TvC`@@?`E@54D9[BcCRSA{Ũ_{@7jD@`6vC@TjD@76#vC@9@B7!$EC!@@!@?TsD`@!C@y! @xaBx!#@R!B@?#@3ҍ`!4Kn { @@yC r`TqT q Tq TB @`Axb! ?q@TT?,qT)T?4qTiT?8q@T?@*`@9f*Є fa@Af*Є@fa"@6f*Є`fa&@+`@9`@976fe@,x@f*_ӵ"f{|*t?T`@9v`@f*Є`@gf*]`@9a`@9y@`7f*Є5@Nf9#*E5`ZC;f ?\Tf!4T;{x@Tb?@6 ff*`@9&f*Єfa@`@9`@9ajTRa@;/;@Rc%r6ff@`@Hff@*`@9`@9fCR! :`@976CR!@2 CR!+`@9/6CR!""`@9'6CR!`@9`6Ruf@Qf;@*|f* * @@R#%r@ c cc|@R#%rR%r#Ҋ#({CS[c*kc@9cBca@y%eB@R @R#0@9mB(q@TB9Q'@ @*@K`*V`B@`5`@ @s{B@t@77@@#(q T8@7,@c4@Bh@B06"_(q`T8@78@b77!?(qT8@7 7RDB@T@j`T@BT@E@* @?qT!Q sF`B@ye&@ pqT*Є`a&@ !@9!F!'e.@%`B@ 6*Єa.@ !@9{A!F!SB[CcDkE @*{ASB[CcDkE @dCR!@"CR! 6{ASB[CcDkE_CR!  @!8@6CR!@@"_(qaT @!8@7 @!8@7 @!8@a6CR!2@9@?(q T8@6CR!b2@9@?(qT8@6CR!@Bբ@@C @8@*ju @C8@7C,@c4@Bh@77CR!Bҹ@@CR!`@@#(qT @*C_AsF4ҷ{[@{¨Rr ]{M@{¨Rp {!SbB[C@/ @ @_ @q`T55RB @\@! 7@ bsB/@`@ SA[B{ƨ_֡@#\@7!@a_ @qT$Qq(Tc$QqhT @5RdR_#Rҹ@ ,T qT Rr! R?kT@ @@+'@RD%rc|Sce*CcRB@ ɞ@@\@!6ԭ@RB d(@c@ʭRB!CBRħ R{S<#Rk @RB@!` @@@@SA{¨؟SA{¨B!R {[6@"@B" @7cVBRS @x3t @@X6 @0@9_4q`T!?$qT@5@* @@``@@!Q! @9qTs@S@ @kMTSAcC[B{Ĩ_@B\@6@!?$qT @ @@@T*A R={ @?D@@r* @TB{¨@+RD@e{cBk*d@҂LScA[*s'mgf@y(gElA)|#A@*t :7:7REC@T@j`T@CT`:X7dLz<T@RYC<9C?@T @j`T!@9C?T[x62qZT@? @q>T.q`TR? j{TCR!%.qTi0T2qXT:q9TR@C#\@C*C@T@?j`T@CdT@2q`T@`>7a@b @ @Bh`8_qT `@a @@?h 8CR"!Ϡfc @*B%CrC@,TB0B*f!.Bxd0t%4.qqDz 1T2Q qiT"q!TqEz PT2Q@? qiT"qpTQ5 q"T*qPT@_ @qT? q @ TTRBR r  r?k@STR[ 6|_8ofB@'*>f*B'8@`7q@-T@Ҡ@@i4$fERf! @7Rr? jTf!4םf@*B(c@*q<+4@f*B(c @ @+7@@B&fB9f@**@@f*B)eq GzHT@ ` Pq hT.qTi)T6q HT#T:qKT>qaTf* @B ݜf@*B`c@֜f@*Bc@Ϝf@*Bc@Ȝf@*B c@f@*B`c @f@*Bc$@@(@f*B @,@`0@9$q`Tf*B&f@*@B9#f,@z@0@f*B @4@`0@9$qTf*B&f@*@B9#f4@]@8@f*B q@<@`0@9$q`Tf*Bf&f@*@B9#f<@@@B9`@xTf*B Q@f*B`9cB9J a @?qT!Qa SA[BsE'FmBA@ `{@cCkD_֟&q T@"*_ @q_Tq@@zeT2q T@CR!#"jŏ6CR! $c&f@!%ќa @?qTSA[BsE'FmCR!@$M@Rr!jTCR!`$BCR!$;CR!`%b@2 ՠ@qT@`"X7@#@`B7f*B&ۛfARo!$Q?qT.qTxT2qT:q)Tf!4f*B: f@*B(c@@f*B(c @@6@ @ Fq TB"hCR!%"q ;TT*qDT@  q@TRCR r"  r_k9T!? @qT$QqHTR@R'r!@& #@b|@c cc|@@9S*f*B`/nf@*Bc@<f @*B`>c@5f @*B>c@.f @*B?c@'f @*B@?c@ f @*B?c@f @*B?c A9cG @f*B`c@@cx@ @$@Cc f*Bf @*Bc@RFCCT@j`T@ q!Tq`3T*qf* @B'˚@kjT&fB9f @*bNf@*B&#R@@T9Rg.qsThT"qTT`@\@h7@P6R @DP6@?4q @b@TCcR|S&r*Ҳf*B5 գ@f*B@6c@@\@a7@4X6f*B6t@f@*B@7m@@@_$@zAT\@@zx6fc B`/*^@f*B8c @Wf@*B 9c`Pf@*B`9c\@If@*B9cX@B@\@$@As7f*B :9@k˯T@(@@ \@ 87BGB@T@7`x7 @R/m g@\@x7@@@ @! !!|@C@fC@gRR(r@9%r@'/Gmf*B:@@(@_ ZzT\@r@T#&fB9f*CR!$,) @? @qxT !` ?PqT@!@a!H@9?qTAR@f*B@&ə|s_2@9(q@AT@m Ay R<+AT0DӛC T@j`T@r@@!H@9?qTARh@f@*B)}@f*B7c@@f*c@B7&fB9f@*d@ @fB )c*c_8v@f*B ;c A9nf@*B`;c@gf@*B;c@`f@*B @*Bfn@*B@ f@*B f"@*B zf&@*B@ tf*@*B nfB9*B c @gfN@*B@ afR@*B [fV@*B UF@TH$fN@CfB@ *Ff*@B @@kJT@&fB9f*f*@B@ .f.@*B (f2@*B"f:@*B`f^@*BfJ@*B"$Q_qWT^&qc{T@c RB(B$@*9C2T @j`T!@$faERCf!'@_7f* @B *ߗ@@C@O5fARf@*B`-җ @Ҡ@" @ C ccC@?_cbTf*B-f@*B@+c @@Z7ARv@f*B/@6@ @@8!<@a4@7 R@t6@$@s!<@a4@@! #c|@$RR%r!r$@9@ҥf*B`/{@27@_keT@@ae[K!`4KS/m @K@4xbt_q{Q T@RrO@6@I @" _qT Rr!  R?k@TO@BRG[@$f @ERfC4*> @7@ 6@@Tf!44f*C@TfAR &fB9Bff@@*@U{Q1aT/Gm @@[! @f* @B * @ @"@OTf!`*BCf@*B*c@@f*B+c@f@*B@+c @@7`L7`@@`c @cf*B+ؖ@?kQT @tQ@@QX@PTC@9,/mfz{*{&fBff****@@kTT/GmC@eCR!+@f*B:@(@T@ \@87BGB@_aT!f*B8Ș. @B!C_DA,TB!!Bf!@(5Z@B@BBĦf!`'@GRa@@"*_ @qaFT 0f*B)Zf*Bܙf*B֙f*BЙ"@B@BBӓfS@f*B`5f @! 5f*B6%@!$Q?qhT! "!$Q?qTf*B vD Rj@BT@j`T@a@d @ @`тh`8_qT `@a @@?h 8d @fj@*BS@@C#<@4 @35 @HC@f*B0ҕ&fB9f@*R0@R&r" @y%$@y!@C cS*B<@c|@ڛf@*B@1f@*B1f@*B 2@f*B2&fB9f@*@w@f*B3&fB9f@*@g @f*B3|&fB9f @*@W@#f*B4l&fB9f@*@Gf!,/mRdR'@R @ @RybR @!?q!Љ$|@ckb|@{{d_{$TA!,yKSR@4fqC*kTf!,ݕkTf!R@@K@S@ /;4 `{{q|bJ)`AT@|S 64AR !xS|S5 c@ nARcf+8kk a`` (aݖfjj g*B-@ `/Gm@f*B@,cP@@f*B-c8ߔ@`6@@f*B .Ք@`6@H@f*B.˔@6@I)?k T8@1Tf*!.yfAR@fRB$@ØR@`,T qT R Rr` kTBR@[@c|ScR%re*Ccf*B5fARkf@CR!+×"wf*!B:o&@K@!K @?낟T/Gm@ @"@[f* "B:W@fc(*B@8N@#Ҵ@"Ef*c|@B/?@ @`<<@qM T@R}@@T0R! 0 *9r*SR@% #@b|@c cc|@@9S*.O@.")T@K@CRDR#%rsCR!@%8@8S@* @,!T ?q T Rr  Rk`TBRӤf*B`0ѓ1JT@`R4K@c|}@ @c@@ \@X@#`x6@@ \@B@Yx6@@@"\@@ |@Cx6@@ \@D@ x6@@`TR@6@$@D %<@1@Tq T@! qT@qB T@qc@c cc|@m T@RR%r&r$@9@ҏf*B0ee\@o6e @C!˥Ѣcc`UR#%rS[s'm/mc@! #c|@R%rR#%r1T1T@@#Ҡ1T@1T @@@ @@@  @@@  @@@ @ B){S*"F[!c*ks'm'g? *C@C`0TbTB*C#@y5BK@9" 40@#`A8?k T@**BԒCO@9# 5C@c*B`˒@K@9qT@O@97C@ C@*B`@@@K@9qTҠ fB@A@Z!:e @?qT!Q AR@K@9q`TZ@SA[BcCkDsE'Fm{Ȩ_֣c բB@*CO@9#4*B@K@9q Tq@O@9T@7 77@ 7(7@K@9qT@O@976B *pB`*jB*d6*B]@O@96*BU@O@9@/6B*N*B`H@O@9'6*B @@O@9`6*B8@O@9@6 TT@K@9q`T!ΔAR @K@9qT\@@*A#*vcˢTFcFB *xc !f$&B@*` <:?@*@O@9@6*B @K@9pW@hR|@@ @|SB@*r*Bܑ @*B=֑!uf$&B@*` +"_ {Ϡ@{¨RRRR { ` @X7 @R{¨RRRߗ @R{¨RRRԗ {SsCD`@b@@!@SA{¨A{S[D@@֒GsTD@hs@4~@bjbhss#aT@SA[B{Ĩ_ B$E!XBB@C @T!FaT @4S|S"! Ca! @9!(6 R_R_{ s2Cb@A@!@a @X6 @{¨_BRF`@AR'a@!@?@?qT!Q_@ٟ_  0 J П {Ssc7*[#`Ta SA[BcC#@{Ũ_TJTj383SA[BcC#@{Ũ_{S[ck"s T @9*Rk T˟mT* ٞ_8DpqT_8pqT?IT@bˀ6_T6R˟Tb4v5_TSA[BcCkDsE{ƨ_{`ITk58SA[BcCkDsE{ƨ_\b\c!B {S[u˿c"ˍTT@Tx_8  @4Tb*`SA[BcC{Ĩ_@9SA[BcC{Ĩ SA[BcC{Ĩ_ {[Sck*sB@ @"@?,!T ?qT R Rr ?kT@ @5@; w` Pq TRTT T@9R@9tkTT` cT*B _8k`T T`@9kT`*`@9kT 4`_8k@TւB?@@A!SA[BcCkDsE{Ȩ_ր@@!H@9?qT@9 R84TT @TY7t˗@9T`_8(q!T@9kT сh4@9kT с_`4BR@;@TTa@9@9?kTG`4ARR`@@95RAR!!9?@!R @d#z[Cd`'@@?@d?@z[`+@j @?qIT!Q @@Ar+TkEbc@`#RkE\`hb8qT"?)T@`T4?@:z#_ ?CT,!CR!"?y?@A`)++HS@CRb+jb#@CRBdW@CR"_a#@+HeC!;;RKb@ `#@_qC?kbk@?@``@j#`aR1`O@`AR-`S@`AR)a Dd@`/@!T Tb@k@_q* 5` B@Y a"@ D@!z!ҁ?@B0@ ZB@RC3r  @ @ @ "@@ 7!@2  ? y]RkE@aR A*K_!RkE?q*?@\>_ԶaRld!RkE{ @GeC!;;£RKxa#@*`@RR??@ +kҀR~GGUk~eC!;;BRKRb@"4bBG@`8!?)1i#`@`aR`O@`AR`S@`ARa Dd@`/@!HTTa@?qa*! : 5( eC!;;RK`@`aR^`O@`ARZ`S@`ARVg@R=cDd@b/@cB_ TCdTa@?q_G* 5`#@`#Da@`@s`aR*`O@`AR&`S@`AR" T%/`@Ӏd@q@,$%?{@RkEeC!;;BRK˵C {sSs[Vc*kZ`B+t#@@Gw;@/@9q`gTITpq@iThTqTlq!DTfGE9'R|# R*R` +A*6`*4ҠsBGAa@A{BSC[DcEkFsGC _qTTq eTq?T^*AR /A!6`CT +A !22+xqATa@!a]D@$7AR*cRY]`#@@@9?qTx#`#@@9?q(T $T?qjT?q"Ta@ur"T@W@K^*K@@cT_IT^*@`#]_k*MTA Rcb'@"a#@`/@!d@a[@_MTa!$E!@Acb! @cXB?BF$C$BTa@g @?qTT*琀R!@b'@"a#@`/@!b@`[@# T` @_@`[`7@ARySq+T`@i#`aR `O@`AR `S@`ARaD`/@d@!g @TTCa@?q*!@0 5q&T/A'7`@`aR`O@`AR`S@`ARaD`/@d@!g @TdTCa@?q*!0 5`#@@9tq` T`@|#`aR`O@`AR`S@`ARaD`/@d@!g @hfT$-TCa@?q*!@ 5[a7@!!@9?q Ta@җrT`GE9c#@c 4`@c#`aR`O@`AR`S@`ARa Dd@`/@!(TfTCa@?q*!@6 5*aR b@+A+Ax\?qT\+A9R*jTRR@!*A*R_kATa@!2a45`@ i7Ra`{@$qLT`{7\+A!R*jQT9R@9pqWTcDa`/@ag@a[@˟TA*@!*?q:R9ӚA*T? 4`{@$qT|@  `{Ra`7@~h!8`7@y`7@ y`#@@9?qT?qT"Q?qB@AzIT?qATa@rT`#@ `@a#`aR`O@`AR`S@`ARaD`/@d@!g @먓TDTCa@?q*! 5eGE9 `#*fra!T+A/7 |# `@@)6`@ Dq"!`[x;@4`S`7@~R Rch!8RdR`7@occEw9*ka7@@ ybF@@!a; @9a#@qDz`O`@6|SrO@@R)*Ra@?"T@__T@Qg @9pqTTqTTtq!T`#@T`GE9@4a'@ d/@e@b[@TbB$E@@@cb @cXBBFCBpT@f@h @qb@8aˀ)4T!`>R*b'@@Bc/@d@"e[@bC Tc @b낀Bb[@9 "87@9RZa@@?)T@9bQqB@Az)Tq@TRb@6@@$Gq@T?T`LGa`7ߢqD@T`@ )5g@T@A8@Z$5a@@?T_@S_"Tvq(TqbTq T@"@8q`Tlq!T**Y[@9B!F_z b7@aR@@9@`#x&q@Tq@TxqT@"@8[`@6!R<`+Axa{@2+?$qT!a{ y#@9qT!5!X`xbA! Z`#@@94`@`D 6R`vrT **![q TqT`@@6@qA@zMTqTa7@q@ T@qRD@z 9dR@b7@~Ca@9?q$DzTz`;@!b@y;4a7@bR@ @9?q$BzT @9`Ga8_+AeT@x"2@*a#+Z+A9Rj!T:RR_}R_c@4ccEdb8@5B@_)T`@&4{@_Tb'@B@`/@!b@a[@-TaC!D{SgOf{@!>fARf'@&@d/@"e@`[@B_ "T`$E@@cb @cXBBFCBxT c@a @q@iQT$*f Rdb'@@`/@!b@`[@#T` @_@`[C@R9RP:RRM@?T@?H#T ڢRRr|b@@KT@@?TZ Ra@b7@@!$G?q@T@?qAR#@9,qaT`@`aRj`O@`ARf`S@`ARbaDg@`/@#?!#  TA#TCd@q**!wZCeC!;;bÇRK Ra@`@h@!2b@a%G` ?BT @9qTBR@9a#e@9RLG@@cj@c kT`# @8j"j`T)TLGR_8bxbB _kT_8`x`_ jTAT`@f#`aR`O@`AR`S@`ARbD`/@e@Ba @(T`T'Cb@_q**!*Z`@ ?T @9q TqaRAz`&T`@x#`aR`O@`AR`S@`ARbD`/@e@Ba @ȟT'TCb@_q*!7*YfGE9'R|# *RRƹ+A!(7`#@`# ?T@9?qTa@҉rTCa#@`@!a#`aR`O@`AR{`S@`ARwa Dd@`/@!ȗTDrT`@`aRh`O@`ARd`S@`AR`a Dd@`/@!(T$TCa@?q*!2 5)R `@a@`7AR]~b7@ R@h!8`#@`@ 7R]a@`#@!a`@7R]qz@T @9 ?qTR?qT%R`#CcKrT@{@ITCa#@`@!@9!?$2T`aR`O@`AR`S@`ARa Dd@`/@!TTa@?q*!@( 5`@?#TCa@`@s`aR`O@`AR`S@`AR-T%Х/`@d@q!:;R^]+A`#@!2+(RU]+A`#@!2+`@ 4`@ i#`aR`O@`AR`S@`ARa Dd@`/@!(TTCa@?q*!1 5G`@ 6`@ i#`aR`O@`AR`S@`AR{a Dd@`/@!TTCa@?q*!0 5!/AbR+Ax! *+eC!;; RKR=T@`#9RW+AYjcT@@AY**`@2`_7R aR\~e7@*h$8~r@T`SE9v5AR\`SE94`7@aRyaR\*l~rTa3@T?`{@!a3$qLaTxS`{ R`S9Ҡ@2F@2a#+Z`@`aR`O@`AR`S@`ARaD`/@d@!g @TdoTCa@?q*! 5Z`@T _8dHT`GE9@5k@?IT _8dT _8pqTa'@ c/@d@`b[@ ~TBB$EB@BE@B @XB_FDED@!T@g @a@`?qT넳T*R!@bR@?qa7@ 6+A@!*bA R5YaR1Y`7@aRyECeC!;;RK%@T@|@zTaz`@?L_!$Ga5wTBABXD!EBhc8!hc8_k@!@%5`b_d!@8@ZfCeC!;;"׆RK"RӃ?b?pBB5`@R 25K$T"2_/q)TRzR?qA!!X~b7@Xh!8`#@@`#Sa#@* @9q7T+A!R*_jTR_k,T@A_q!*TwT T?"7@A_q!* TߢqTaTcR$( f@cD9B|@w@!iT$@9@d8ccD9DTo@R@@!`@$G?qTQ!?q/Tc7@@=ߢqbB@9b8DT`@[@ BB`@MTb! wS_hTe7@#R@6RdR#9c7@@`yc7@@`@9kdDz O S@$RXR1RXHߢqT?pӃ?aA4@!4@9a6`@`aRh`O@`ARd`S@`AR`cD`/@g@aY`T˭_#qR@:T_'qT R`+RA?hT d!A8@Za@84a7@8R@ @4@9p6`@`aR1`O@`AR-`S@`AR)d@a'@c/@w`#CaT@LFc8Cc%r+T@{@a#@H+T$*c@i+Tk @9j*T$T!a#! _8$iT_kT`@q-T_k+TC`@`aR`O@`AR`S@`ARa Dd@`/@!QT>TeC!;;RK``@!Ra R6|S RqTra RTq!$Va7@ @9$qaT R`C9+AxRc2+Q-?qVRR@9bR?q$Bza+T @9@)5!RaC9YaRBW`#@!4@9}6`@`aR`O@`AR`S@`ARcD`/@d@ccĻT^ T_q@TT_qLT_qAT? T @9qTRf#$L5aCE9q2"R`bAK4`@K7+A !22+_q!T?HT?T!@x`LR?k!T8Rj'@#g/@b e@`[@B_"T@$E@@CB @cXBBFCB!iT"@8c@i @ q AT$ *R!c'@*a#@`/@!b@!c[@ T` @_@`[ rAjTCa@`@s`aR`O@`AR `S@`ARmT%/`@/d@q.a#@`@!a#`aR`O@`AR`S@`ARa Dd@`/@!T7TCa@?q*!` 5 R RlVa@`#@!2a6C@CeC!;;RKy!a#@ @9Tc@ @9$)T? T @9q1T`@x#`aR`O@`AR`S@`ARbD`/@g@Ba @$T:T"Cc@q*!3*Q R`C9\R@@D@7a7@@ #!4@9Af6`@`aRk`O@`ARg`S@`ARca D`/@d@! !xR?Lq`T@!z?LTR@9! Cb@A RBbUa@`#@!2aCeC!;;RK**CeC!;;vRKR`#x>U`@`aR `O@`AR`S@`ARbD`/@e@Ba @Td=T'Cb@_q**!*/QCeC!;;bRKqT@q@zTa7@R@ CeC!;;RKBˡR<@8&ERLG#bc kT@8"xb"jT@9?q`TR@9!?$T@?BTd#EЁ@9RLGbxaB _kT`#_8axa_!j`TR4@9@6`@`aR`O@`AR`S@`ARe@a'@d/@jR(4 Rwa#q`TRh߶q@/T`@!R)$G2@K@&`@`aR`O@`AR`S@`AR{a Dd@`/@!T^TCa@?q*!9 5`@+k#`aR]`O@`ARY`S@`ARUa Dd@`/@!HTEZTCeC!;;NRK5_8@Bx_Lq@!뤷T't!RaRR@zqT'CeC!;;BRK*? T @9qTxR_#q T_+qTj'@g/@a e@`[@!?T@$E@@BA @BXB!FBATa#@ ql@" k @`! !`˄qc UT\Tg R*!4c'@@ca#@`/@!b@!c[@ -T` @ZR_@`[CeC!;;"RKs4@9 6`@`aR`O@`AR`S@`ARe@f'@d/@>_qaT@9A@!?$TC@8!?$Ta@`#aR`O@`AR`S@`ARa Dd@`/@!먱TFTa@?q*!8 51`aRr`O@`ARn`S@`ARja Dd@`/@!STATa@?q*!9 5!R* *Tc@4bK_qT`#F`@`aRB`O@`AR>`S@`AR:a Dd@`/@!(HT?TCa@?q*!: 5CeC!;;RKa#@fZR@ (TanR#R@)A$x.0@96`@`aR`O@`AR`S@`ARe@f'@d/@@/4@96`@`aR`O@`AR`S@`ARe@a+Dg/@CeC!;;RK`;@ O@`;#K!K@SA*Schc$Cc @9c(#7x|S#TcSchc$Cc @9c(7p|S"TcSchc$Cc @9c(c7|SC!4cxSchc$C @9c(C 6`@`aR`O@`AR`S@`ARSAe@f'@d/@@@Schc$Cc @9c(#7x|STcSchc$Cc @9c(7p|STcSchc$Cc @9c(c7|Sc4cxSchc$C @9c(c6`@`aRh`O@`ARd`S@@;AR`SAe@f'@d/@@@`Schc$Cc @9c(#7x|STcSchc$Cc @9c(7p|STcSchc$Cc @9c(c7|Sc4cxSchc$C @9c(c6`@`aR-`O@`AR)`S@vAR%SAe@f'@d/@@@*}6@ z5@!WSW@_A@f#@S@!LFW@gGS{1T_@@#@@x!@@`/5@9|q`Tg@ `88T;눫TSCeC!;;RKSASA{#{T˨`@@a#`aR`O@`AR`S@`ARa Dd@`/@!'T&TCb@@_q* 5e`@@@z4`@TAC@9!G!hc8!`@Aa#`aR`O@`AR`S@`ARa Dd@`/@!!T%TCeC!;;BBRK8CeC!;;" RK/Ca@`@s`aRl`O@`ARh`S@`ARdm T/`@+d@q eC!;; RK eC!;;BRK4@9 6`@`aR@`O@`AR<`S@AR8fTCeC!;; RK+A**07-7y#a`@@a#`aR`O@`AR`S@`ARa Dd@`/@!hTTCeC!;; RRRRT*_8J_qIT_myT*@9ByB_qT_q T_ qT_$qT_(qT_LqT_Pq`(TB\QR_ jT"@9_0q` TT _T"@9Jx_q T_8q`T_<qTSAS@"Ga@9Aha8a` 4h4_@!xa 4f_@Sa#@C@Ja@`@s`aR`O@`AR`S@`ARTХ/`@d@q*?f@S Ka#@C@&"@9_(qT RbT ˌ|`T#@_T8S@?`HTRS@ R# R?ET@9!x!?q DT?Lq`BTBT?T_8!x!?q VT5**R5C@O@**_qT_)q@T_9q T_=q`T_Uq`T_q!T"@9_q@T_qT"@9J_qTJx_qDNzT" @9_8q!T"@9_qT"@9B B_qT" @9_8qT"@9_qAT"@9_qT_q@T_qAT"@9_TqT" @9_qT"@9_q T_qT_$q`T_8qAT"@9_8qT" @9_qTx"@9_TqT" @9_qJxDLzDGzT!"@9_XqT" @9_qaTg"@9_4qT_8qT" @9_qAT^"@9_0q@T_4qT" @9_q!TU"@9_0qT" @9_LqATN" @9_qTJ" @9_ qT_LqTD"@9Jx_qT_qDDzAT"@9_4q T_8qaT" @9_qT4"@9_qT*@9ByBLQB_qiT_qT" @9_q!T%"@9_qT"@9BxB_8qT"@9_0qT_4qAT"@9_qT"@9_0qaT"@9_ qT _qT"@9_0qT_4qT" @9_qT"@9_8q!T" @9_qT" @9_ qAT"@9_0qT_4qT"@9_qAT" @9_qT"@9B_(T"@9B_TeCЀ!;;SRK-SAe@f'@d/@@@Ѐ!;ÇRC*SWCeC!;;"=RK $j*@6RRCg_O@CeC!;;rRKCc#@!;rR**dCa@`@s`aR`O@`AR`S@`ARTХ/`@+d@q-CeC!;;BORKFңuCeC!;;BIRK$Ѐ!;RC%RCeC!;;"KRK!8SAe@f'@d/@@@'Ѐ!;BORC}4@9 96`@ aRO@@O@`O@ ARO@@O@`S@ARO@@e@j'@g/@O@Ѐ!;"KRCRe@j'@g/@Ѐ!;sRCD Lq#Q Rcx$Dzc$ R$Dzd@z Tq@ T(q@ T8q` T<qTTqTq TRZ@9!x!LQ!?q(Tѿ RT@9!x!?qT?$q$Bz`T!T@9!x!?qAT@9!x!?q$Cz$BzT@9xBCQ_qcxcd@zT@@RLG!@9a_ j T?|qT@#@T8RS@ˤS@@9R#xq$@z?$q@5S@@9 xqT?qR$@z?q5S@@9qTRS@@9q@TRS@@9q`TqTS@@9 qT xq?q5_ALTS@@9x!?qT#  q@T Lq#Q Rcx$Dzc$ R$Dzd@zTqT(qT8qDT<qGTTqTS@@9R?q$@z?q`5S@R@9 qTR@9!x!?qT@9!x!?$q$BzTRA!LF!`8`@$Gq TanR$xS@RS@ RS#  qT Lq RD@z_dq5 !!LF `8a@!$G?q T`nR$x`nR&x;!8(T_@}_!;BIRC+&*`@$G?q T!R)ҊCj)AgCeC!;;ÇRKUC@a*(Be#T*@9ByB_q"T_q T_ qT_$q`T_(q@T_LqT_Pq`TB\QR_ jT"@9_0qT"@9_(qaTS@S@IT _8q ET RS_qT_)qT_9qT_=q`T_Uq`T_q!T"@9_q@T_qT"@9J_qTJx_qDNzT" @9_8q!T"@9_qTR"@9B B_qT" @9_8qT"@9_qATF"@9_q`T_qT_qA~T"@9_Tq}T" @9_q}T8"@9_q T_qT_$q@T_8qA|T"@9_8q{T" @9_q{T("@9Jx_qT_qDDzaT"@9_4qT_8qyT" @9_qyT"@9_4q`T_8qxT" @9_qaxT" @9_qwT " @9_qawT_qwT"@9_4qvT" @9_qAvT"@9_8quT" @9_qauT"@9_0qT_4qtT" @9_qAtT"@9_0qsT" @9_LqasT" @9_LqrT"@9_qarT"@9BxB_8qqT"@9_qAqT*@9ByBLQB_q)zT_qApT" @9_qoT"@9_TqaoT" @9_qJxDLzDGz@xTt"@9_Xq!nT" @9_qmT R@"@9_0qmT"@9_ qlT*@9ByBLQB_qiuT_qkT"@9_q!kT"@9_0qjT"@9_0qAjT"@9_0qiT"@9_qaiT"@9_0qhT"@9_qhT"@9BxB_q`qT_$qDCzqT:"@9_(qfT"@9_qfT_(T*@9ByB_q'T_q%T_ q$T_$q`#T_(q@"T_Lq T_Pq`TB\QR_ jT"@9_0q!cT"@9_(qbTbTS@@9x!?qXT#  qXT Lq#Q Rcx$Dzc$ R$Dzd@zVTqT(qT8q@T<qTS@R@9$qxCz?q@T5S@R˼_q T_)qT_9q T_=q T_Uq[T"@9_q@T_qT_qZT"@9_TqaZT" @9_qZTS@@9 xqPT xq?q@O5"@9_TqXT" @9_qJxDLzDGz`T"@9_XqVT" @9_qaVTS@#R@98q_TS@@9x!#Q?qcxcd@zJT#  q`JT Lq R$@z?dq M4I"@9_q T_qT_$q@T_8qAQT"@9_8qPT" @9_qPT"@9Jx_qT_qDDzaT"@9_4qT_8qNT" @9_qNT"@9_4q`T_8qMT" @9_qaMT" @9_qLT" @9_qaLT_qLT"@9_4qKT" @9_qAKT"@9_8qJT" @9_qaJT"@9_0qT_4qIT" @9_qAIT"@9_0qHT" @9_LqaHT" @9_LqGT"@9_qaGT"@9BxB_8qFT"@9_qAFT*@9ByBLQB_q)OT_qAET" @9_qDTs"@9_0qaDT"@9_ qDTl*@9ByBLQB_qLT_qBT"@9_qBT`"@9_0qBT"@9_0qATY"@9_0q!AT"@9_q@TR"@9_0qA@T"@9_q?TK"@9BxB_qHT_$qDCz`HT"@9_(qA>T"@9_q=T;_ AT*@9ByB_qT_q`T_ q@T_$q T_(qT_Lq@T_Pq TB\QR_ j! T"@9_0q:T"@9_(q!:T"@9_q` T_$q;T" @9_4q:T" @9_qA:T"@9_8q9T"@9_q9T GT _8qIT_M8T"@9BxB_q7T"@9BxB_q7T" @9BxB_$qDCzA6T"@9_qDDzT_qa5T" @9_0q5T" @9_ q4T"@9_0qT_4q4T"@9_q3T_q T_)qa1T"@9_q1T"@9BxB_8qa0T"@9B_h1T"@9_qA/T"@9BxBLQB_q)8Ts" @9_0q/T" @9_ qDOz!/T"@9_0q-T"@9_ q,T*@9ByBLQB_qi5T_q+T"@9_q!+T"@9_0q*T"@9_0qA*T"@9_0q)T"@9_qa)T"@9_0q(T"@9_q(T"@9BxB_q`1T_$qDCz1T:"@9_(q&T"@9_q&T_!&T"@9BxB_q@T_LqA%T"@9BxBLQB_q).T#"@9_0q$T"@9_q#Ti*@9ByBLQB_qi,T_q"T"@9_q!"T]"@9_0q!T"@9_0qA!TVf_@C@,"@9BxB_q@)T_$qDCz(T"@9_(qT"@9_qaT?"@9_0qT"@9_qT8"@9BxB_qD^zDCz &T {c7[BS*ks#@?w5PE9a 4a RHRaRҚR<R{CaCT@9qZz@Tw@*cxw`w@'7rTB?@@A SA[BcCkDsE{Ȩ_ֿw@@! *`z@$qT*7jr7@T9`zR I8?qATw@@!*aRHa@`@`aRT`N@`ARP`R@`ARLT/`@wd@q R`R9@2Х{Cc7S[kA;gB @a@Ҁ).T q@T R Rr kTa@` @3@g@! "Rv]G@B9$@W#@k!0@y wyb*T8?@sOG!SCC@9q` T+q TaQq!xR!dBz$@zT@9OGa@ `6 "|S F# @8B* a|@"`6TAR @@@cL@! CR"!õksF k@B@@Aʁ!{ASB[CcDkE;@_ART Հ@W@@ TsF8! [R[@TOGR_8!xc! ?kT_8z`? jT!TCB9sB9cB9SB9S@0@9?q@TARysFBR##u@g@RCR"ҁ!9f@f! ?@9(qTAR[[@q@TiTqTC@k@RfqATC@k@"Rq!TC@k@"RTR@ kTOG@8ba"jT?qT$JzTg6@9OG#|S F$ @8c* a|@#`6_T:*{R"C@k@R]CR!8B1@[3&[@Ϲpk@sF %2AR!Rc kTOG@8a jT?qT?(q`\T_TT@@CRBҡ! ̴@! CR!"AR# #K@W@@T9Ds}*!;@ ⹋RRCR!8B{C[6c0@CƂBO@@W`@C5C@`C@ւBW@@A){A[CcD_s!@@*Ha8?q`TsFcSxc@ @@O@@ T@@@ TB @ 5C@k;&s `@ARt @@%TZc 'SgR RRRS S@aj`8?(q@T?$q TBS˵CR&CR"! @ @` O@`@kE;@`O@SBsFC@SBsFkE;@O@7[`@RO@SBsFod@TRa @R#@9R$Rq@@O@ cRa @?qT!Qa O@@?2C@`SBsFO@=S@s`@9qT(q`TTs!R HgsaT`@9@`@4fqf`S@kf`S@SBkEsF;@ARO@kE;@`4!ґ@s  @@`BRrT@"Ra@ *C!;;RKVTh@r`hT`*[ @@q@@z@tTqsTlTq@sT Tq`sTjTqljT@R*[S@@i*!@khTCRRR_f@BGR#Ry 5@!с#dւ1T @9qBTqaT;0T4G@9 #)T@9_q3TG@9_q2T#Y4b8#T@6)4`aRuO@`ARqS@`ARm D@/@!HVTjT@?q*!, 5@`8!##@@9!?dT`aRJO@`ARFS@`ARB D@/@!Td[T@?q*!+ 5#RR*@qaTR[@q]TT@qaTR[O9q`TqTTb@a RBxb[qT!R[qZTqTqTqQT47@c@:D@9Aa8?q@TaR97@!"@9_q]T? T RC9B7@!?hT!!By @@ 5C?"T"@9@_qT!#`aRO@`ARS@`AR D@/@!(TVT@?q*!' 5f7@a#[@!R*!BM@ 4km0TO@zS~}!|}@ORBKB|}&S@!}@RSBKB|}i b@Rq!PdBz T ן_@'7@~ӁRth"8*rT#@4`aR[O@`ARWS@`ARS D@/@!DTBT@?q*!+ 59RR}@kJT@_@`aR-O@`AR)S@`AR% D@/@!H+T@T@?q*!@- 5R R@64`aRO@`ARS@`AR D@/@!TAT@?q*!- 54ˣ@9@qTi%TqhTTqlTq`=Tq`nT ҁ#@Y4˿-T"@9Ghb8 #@z@HT`aRO@`ARS@`ARD/@@Bˁ @HTlT"˃@q*!3*}qRTRTqLT 5T4R R#@&@R@U#҂OCNSsC!;;ЅRK@4ҘC!;;FRK5q T Tq@JTqHTqETg7Rc_rL.T-7'@92#)/@` ˄@[@m,T$E@@ @BXB!FBAa)TTaB 8!#@@ @ q )Te *R!!B'@&#@/@"@B˄[@@ T@`T4qTR5 R#@qGTq`Tq:TqB|SY5@@ q@aT2@B*`62@ p* @9qTg|R`LqTPqTT@ Rȩr?kT@! R2#@{Rր@~2#@!7@"Ra!`|!R7@@@B@Xx 7@h481T7@ )| qATTq Tq!TT!.O)O@5#@@{1JT*Ra RnqTTT@(R r?kTA R4qaTT@)R@jr?kaT#@@T[@`aRO@`AR{S@`ARwD/@@Bˁ @aTDT"˃@q*!6**|C!;;⪅RK`aRSO@`AROS@`ARK D@/@!TD T@?q*!@. 5C!;;BRK`@x`'Rŀ7@[S@gA"C!;;RKC!;;RKC!;;"RKC!;;FRKqT@#@y7@B;C!;;RKC!;;BRKq`DTqT qTq@T Tq`TiTR rLT R?jT'@9*#y/@` ˄@[@ T$E@@ @BXB!FBAyT#@%@9wTkB 8k @ @ quT'  *!@ R'@@q@TqTqA T`@#@2``aRO@`ARS@`AR{D/@@Bˁ @H`T$#T"˃@q*! 5*{CT@8!?$T @9!?$T#_!T@`aRMO@`ARIS@`ARE D@/@!?nT#DTˀ@q?'* 5`@#@2`m7R rLT@RV55 T5@@5@#@5R R ҨR}`@#@2``@#@2`QB _kK T@qTkT#@@!#`aRO@`ARS@`AR D@/@!?T#dTˀ@q?'* 5c_q[TR#@bu5뀬TTRR#@[[@@#w a|5@?qzS*:R#@(@ R~@@B2!a@!2azuT!.O 5 RTF`TT!/WW@5RR[#@?렆T@R@R@c*B# _9 TN`TJaT!`0WW@`5! RRTNTJ!TB!`1WW@ 5!RRC!;;˅RK C!;;b˅RKC!;;̅RK"B4@49@"D@!!aB,@6B@#,!F@cC @@c@@b @ _ @!x!22T"BBAB@Tx @6@ 2V1@"D@!B!a,@(B@.9F@{C @@b@a@A @ ? @!x!2J%TZAA@6x @ 2@@ D_?T R Rrr_@"RoxCBT@9Scg@q@*TTq3THTq!Ta|@R"`@ @@6! ?k(T@@(T C@&4"@9Ghb8!#?T@`aRO@`ARS@`AR D@/@!TTˁ@?q*! 52qT@#@Y4"@9Ghb8@!#?"T@`aRdO@`AR`S@`AR\ D@/@!(TTˁ@?q*! 5qT@@k@`|@Tk@MTaQR!|@@ @!@6! ?kT@@9*x**x_kTos @@7j @O@7?q +T(T?qTS@Rs@O@@?qT!QV@?q T!Qs@)@qaTk@y|@?Tk@O TRa@@ @@7k@O@9?T2@;vq TTnqTrqTc&RR*RR #@р#@k@!@9|@?TR-@ @aS@6! ?kT@@9qo@sT@?qT!Qk@@!@9|@?ETo@ARzqTqT?qTIRs@?{qTc@Rs@O@Rg@s@ N"RS@w@@?qIT!Q{@@?qIT!Qb?qT_ !q,TCT@9?q T#@`aR^O@`ARZS@`ARV D@/@!TTˁ@?q*! 5AR#@$R!T * c|S!7c&RR*RU`@rT`C_T@@9q Tk@5@TR@ @A7k@˿ T!QR!|@u@@ @~A6k@$ @C|@kW4R#`aRO@`ARS@`AR-Te/Ҁ@@q!;A?T!/OL`P5 R7@h48=T@`jR r?kS@`AR:D/@@Bˁ @hT$T"˃@q*!2*Pvk@q @Tk@ T@RQ!|@@ @G7o@@?qT!Q@`aRO@`ARS@`AR D@/@!+TD*Tˁ@?q*! 5#CT@`aRO@`ARS@`AR D@/@!ȩT넨Tˁ@?q*!@9 5}@SW@MW@RRR`K@4K@`HP64L qIT@@Ҁ @xa@k T!?KT@@A@!7C @T@A@!A@x5@ @ 4Rtf`@5R2`#@##ARB;zRR"0tR5 R#@!0WW@5AR@R!0WW@4!@1WW@@5O@oC!;;RK?##|T@`aR9O@`AR5S@`AR1 D@/@! T Tˁ@?q*!9 5!KI Ҫ@?q T!Q@`aR O@`ARS@`ARD/@@Bˁ @(TT'˂@_q**!*uC!;;مRKC!;;bRKf##Rx$`&C!;;ԅRKҚ @$Tc~B)!)mC!;;zRKhC!;;ՅRK`%ҸC!;;{RKUҦ@@s`aRO@`ARS@`AR Te/Ҁ@〹@q 6yEХC!;;BxRK($r#@@!#`aRbO@`AR^S@`ARZ D@/@!?T#dTˀ@q?'* 5Rs_C!;;RK2@@s`aR+O@`AR'S@`AR# Te/Ҁ@〹@q !;zRC!;;RK҅4@96@`aRO@`ARS@`AR@'@/@EХ@@_9c@a@Q`@#@,!T ?qPT Rr  Rk@OTBR@R{@_q@ '@cx%RR@R+@9' @?qNT!Q @?q)JT!Q [@6@2M`@rAT@@`aRO@`ARS@`AR-Te/Ҁ@a@qBT˥EХC!;;RK3C!;;" RK+$qTҁ@ R@"*"AR >R! B4@Ђ@"D@!!ҁB0@B@R2r@@@ @* 7@2" W[g=@ҀRA@9 ORO@@^G@A# GAR;@=a@!rT7@ @9?qT;@!_aT@OoO@A@?q T!QAG@;рG@`aRO@`ARS@`AR D@/@!HTTˁ@?q*! 5~aC!;;ORKs@@s`aRO@`ARS@`AR-Te/Ҁ@@q!;SIEХvqDT#@@!#`aRO@`ARS@`ARD/@@Bˁ @TDT'˂@_q**!*r@C!;;hRK$Ta RpRA RDvq@@@@`aREO@`ARAS@`AR= D@/@!T$Tˁ@?q*!* 5@@@@`aR!O@`ARS@`AR D@/@!( TTˁ@?q*! 5N @@7qT @?qIT!Q C!;;RK*R! Ru@@ G@`#@ҕ;@#fu7@~ R?h 87@!67@!#97@ y; ҹyC!;;B~RKx@!#`aRO@`ARS@`AR D@/@!T$Tˁ@?q*! 5U@s`aRO@`ARS@`ARmTe/Ҁ@@q!';9C!;;kRK1 R&C!;;|RK'EХ]%+@@{ @`@9!Cd@!?T @}ӂb? heTd@c_ T-Y@qT7@~Ӂ@RB!p!2C97@Ah`8!2Ah 8jAO@ c @!4!L ?qT@@k! @?qT!Q! k@@kPo @@G6#@##@ _8tqAT@@WAR)@!#`aRO@`ARS@`AR D@/@!@?q(TT!`* 5C!;;BuRKqC!;;}RKvl`RC!;;]RKd&}!ҞC!;;bʅRKT&hC!;;|RKI C!;;"ӅRK>˴n|i`RJGd=&&˹ARAT@@?qT!Q@C@C$?_-.T@R!Lrk*T!@@k)TR!Lrk )T!@@k(T_KTb!O'4_OO@TЂ!&4b!`%4Ђ!O@$4l(TL!`OO@5!;R4@9 6@`aR O@`ARS@@AR@@'@/@!;xR$T#SB)k)CC!;;xRK4@9 6@`aRO@`ARS@`AR@'@/@!@@'@/@jҎ҂@!#`aRO@`ARS@`AR D@/@TT'˃@_8q*!$*o R^C!;;ƒRKI$!wrT{@{@_IT@`aRyO@`ARuS@`ARq D@/@!2T1Tˁ@?q*! 5w@ R#Ks#@R#@9qT@@4@-TBGBc8B@!#`aR@O@`ARRs*ɔrT*TrT *!@r&TfC!;;BRKr#TUT4@`aRPO@`ARLS@`ARH D@/@!H T Tˁ@?q*! 5R R#r*"R_)@rT@@`aR O@`ARS@`ARc TE/Ҁ@〹@q *Ur`T@6`@2`#@6@9fm2EEC!;;RK<C!;;BRKҠC!;;"RKl#vA"R!`m@!@!L 6 @! * Rf#@9?q`T"@B_ T?q`TR RXC!;;"RKd RRq#@4R!#HR #ARn @ R@B6wrT{@{@_HTw@B R#' "R R#"!;|R/6@!#`aRjO@`ARfS@`ARb D@/@HTT'˃@_8q*!*{m #q@ T!@9?kT`aR@O@`ART!@@f @f  k!\z T_kAT @#|{!@hc@aR "@@y_ @aT"9|B "@9 07 u5V5C@y qAT6RARnC@y qT @?AR"@@yB _qT"@"$"@9B76!@*!? qTs R`9` @` BB!@Aʁ{BSC[DcEkFsG_RS@!,@@"!6c$Ec@c8@76@B 2_S@*@@?!@!4O?A @ <?A@?Aa @?q]T!Qa R_CE@9CxqZC _@__@+/7sl@Y BR@RB@S@0@Ay8"3yu6@?A@@M@!@@h@!R&` *#sR9k#'B'A+7#B'(6`06AN?AR@@p'BA?q$T'`A`@@?q &T!Q~l@'BQ <@< WT@@"@`.GB5A`(7 OR,BsC_S[Wccgo @ ,@? ||||||||+A'BR[Bb|R5O@C+|=|>|?||||||||tkA@8;B4`@2`@A$qT@ h@2 h@A!S06g@@c@@@S@9O4JR_@ R!r RC9@,@?4,@?8,@ @,@@`.@ `.@$B @96A`6`:@aZ2`:a"@@`&MT`"A E(76@ h@2 hA6@ 8@2 8?A@ 8@2 8A 86@8@h@B28!2hA@6@ h@2 h A4@ h@2 h A @ @h@?rT8@!28@!Dvt@9qCz5t8 TqBzTqb@9AT4 q`TqTa!D!b8?xqT8@, B@@ @ 'A/7! @?q)T!Q! |@*P$cThb8qThd8qTqaT! @9?qT9Ra!|}'RB}A!A'!}'RB}@@?qHTPYs ?`B @`R1f#B2''?A[@@}o4|@ C`(@j@ Rc "@8_qDEzaT|@[#NR[@#4x?ARR R RR,R" 9 %@_kT@}{chb`!Th`8#_qDFzAT&$8b9ToAR"97 ;B [_q?8! BS!<[@ `D`@ @@@@E !eAcGf@jDc?@ g@@~F@f C!CARI@) @G@@ @' G@@@gD( hH@H$a @fec?q _T!Qa ` CD"@@G_"@;@{`@7abU!@`C| \T`@rT P7V@7X6` @ @!6@@ @6R[[@efc`5@` @` ` CD@@@cDgGe@)@@B FICeF@EB@"@@@!@! @A @!@!@A @aLT;B M@AB9 @! @Tb@@BB_T@q@@z!TC@@B(R"9  7 7@)@@@BBB@BB}B T 8!B@T _ BGBB|!BTF[f[@? @<@b "9-$x@cc@ T+8@cc@CT,8`@@@)GT`ARR[*[@`@@ R[Q@efc[@@`@6efc[@&ҿT 8!BTa$G@Kdf?g5Vaj@`>@!2aj}*`>AO@+AA5062C|=|>|?||||||||eJR R_@ o@C9RDw69R/aRs=8DRRR_qT$@yRkT_qC RDCzT_q!T6R @"@9_qT*5R`c8!@9*qAT%@yRk&Tb8*qT_qAT@9`84*_hq R*7R%@yE5_q T `RR D`q ,B s@X Tq "TA|S@aa8 (7x qTq$T_q@"Tu4A5w5_qA"Ta@9 a8@q!Th@ra!T?A"!?@qc*2hb@9b8q!T`BQD@$B6RR jT3s0O,g(;C9OBaRRgBaR;BaR@@@#_@@S@y4J!RC9Rc@ r`* R#I'Bq3TJR@Cc<RRRk;B7@AV5@@@",@<4OB!@!@SBkB3T@34d4kA36Aa#3P77@@ @#S6#~cC  7@eC@Cf@# G@B ;@ˠ@P4R7@4kA?@9 @ };@!,@G@!B"@?@!,@_ T@G@,@6@!7@ @ є"<>5 @ @@9@QqHT?@,@ @@BBᇟ9@!|@ ~a.@}"B@"<a.@"B @"4a.@"B@"8a.@"B@",a.@ @ 0T`j@r`T2`ja.@ 4@L`:@ 2b:"4@KA@!@9!4 2`:67R@d@L$@#@#A|S@Aa8 (@7_qTh@c2hRjTu4A@5?A@ h@2 hh@_ qc*hxSJ!RC9Rc@`*R #hDw69R`@@Y|@W"NRR"4x 9!7!X_6 @# @W6!@!@! @AW6c@c$Ec@c8@#V6Rg@@R@efc.` @@9qT)CA`Zqb@9 TqaT8@5!28cB4@ 8@2 8GBq-T 'AQGA!`@#@ Bxc@ GBqLT'@Z`:A`~A` zC@C'B?@ |[ |+AR|}AR'q8@ T!q$@zT@c@98@#4@4B"@9B7kA!nr8T@,@`ДQD@$7`@9aRqAz!0T@qT`@9qTU@95X 8@2 8a@9?(qsTI@934@8@CR9@5CB?BTAR/B *5@ 8@ 2 8R58@!28rC@@]gBc@c@?T@ ~}B_ @!,@  @AW@!s@y"R@@x cO@A`@9@qT @@@`@@A`A@@w`@@w@@b@9` Bb9*{{@@b|!@k@k!L"$A$mk@{@ @@`~%@{k@!RARa A{@@5?k TkbEzhTK@}bB@_qT`h`@4Y>Y *?kT@*@ kwk@w@rR4*k@R @R y` *g@@K?q@Tck TkEz T @}"B@?k!T0h`4*~| f @?qTyb*@` k懟kjTK @}jE@?kTfifF4@@@`5?qi1hox5||h`x@4@y y  *ґ@4@jKD @@qTkA!lraT@P7@#~cC ej @@@`@ Aw@!"R!b*Bf@4@^*!z!@B@D@xaDADB@B@`@xa`@`j@x`j"8@ 8@@Rh`@9qT`@9OW@s`aRA`ARA`ART%;B@q!@;tOWaRs˳AEҥ/R@~X 8@2 8"R!b*B@4@*!z!@B@D@xaDADB@B@`@xa`@h@!xh,@CZ,'A {c* scEsB!RRh@:@a@Aʁ @{è_: {CSs[bBcsC@o* @c|!RRac@@9?q T`#Rf!R@2`{@$qlT `{sB*o@a@AʁP{ASB[CcDsF_kERR`c@@9?qT`#ta@ rTky#@ @9qT`@`aR`O@`AR`S@`ARaD`/@d@!g @[TTa@?qa*!@8 5a@rTc@c@`#eC!;;™RKb@:z#RBˢ`@yTaCE9p2"R`b!4`@7@R2kE@%@9@TbR CLGcec kT`#A@9xa!j@T_ TALGRB_8 "xbB _kTw _8 x`_ jaT)_ ATy@9/a#@RR*qG (@"@@,T qT R Rr@ k@TBRC?6"@?@k@$E6b@9BGCc8cQc|@HTV@9@4bBGEd8@TR!(! !|@T@@8@Tj#`!RkE`@`aRA`O@`AR=`S@`AR9a D`/@e@!b @?TGdTa@?q*! R*Ra 8 TB!`+(G5`=C! , Z z#?K#OIg9R RRR+gg@+H7c#@aa#2? T?@"  @@k @{|qTj#"4`@Jj#`aR`O@`AR`S@`ARa Dd@`/@!h8T&Ta@?q*!+ 5~*#@C7tA`)?BRC@@R@@?qT!Q@XpT[{C4s pT @*s@ @%@B"4@@lSS@{ARR@ "@2'm3P`RD^C@ACR!8Bv@5'mC@ACR!8Bk.C@ACR!8BGcG@@@@@_@@@Ss'mkiabea o_[Hwfâ g@R[@@k@@*@o@s"T@fX!fa@@ @%@B4@~@*g@"rT[@@! [0 RkaT'GmN@Y_S3@,  ݗҩջ{sSB[cko@`s@#A73yD*x@|9R*@'E@ @cXBBFC!AH5`#@!рR@Ba B@`y @A@x !@@ 4eC @9?hTRLG`c kT?`"jAT6v# @9TxqT ՜@!>5tq>TݗҠջgK@ @@@#`T4e@T@9RLGbxaB _kT@9axa_!jT`#T T@9tqTw@'m@a@\5@v#nT@?wTT@`TzavTA$Rq-@ 4cCiT@9RLGxbB _kaT@9xa_!jT`#!Tw@@°T`@s#@`aR`O@`AR`S@`ARbD`/@g@Ba @}TT"Kd@@qcAc|@!**v#@@9xqT`{@a#$qlT`{E4e@?ET@9RLG`c kT>`"jagT6v# @9T!RQ!?qTqRAz RAzT$R*AqaA:+?Te'@@e`/@cg@a[@_=TA'E!@! @cXB?BF$C$BT!4@9a6`@`aRo`O@`ARk`S@`ARgb'@@a/@g@ a#@1#@9Tb@a @_q?TT"? A*!R e'@6@`/@#b@`[@#v#@ T` @_@`[@9@ @@33g@ `@46$G'mq`Tccg@RA#C@s@@?@@?@s@?qT!Q'HmROL@- a @?q T!Qa @@.cR! @@?qIT!Q@-c@y2T@LC@a @r@ccR @@?qT!Q@c@R@ @@?q)T!Q Yc@R @@?q T!Q@@C"R<@@A@@C@9`2B AA@?qIkT!Q@%@AG@4#@b@@BRcR @@?qiT!Q@"4@c@`2b$G_q@"TA5@@@2 R`C9o@ @2 <@At;@a@?tqT!'m@sݗջgKa@wA4P@9AW@R`)A'mK`@h'Cm@j#@qmT|@4Q@ZC b5RTBrTR! @R@t T5CR"/s@`@@T _8lq`TCR"!@ @CR@@b#@sBCR!"@`/@,!T ?qT Rr  Rk TCBR@$Rs@`*3A`C d#o@b RA`@! *`h/h'mj#ma @?q)T!Qa @@?qIT!Q@@?qiT!Q@@?qIT!Q@@?q)T!Q@@?q T!Qg@@?qIT!Q'HmK@BA!@AA{BSC[DcEkFsG _v#@@9.38@9"R#cc@@c@ycT@D@c@b$G_qT@6@e@@A@cB@9_ A cT@2@!2@@@cR @@?qT!Q@Av#@4?6BEC`8a@ø5@ v#@@ @InCR"!@ =CR"!`)7@@CR@b#@sB-`C?TCR!>"$@9!CӃ@!?ɿT@f?a} Sxc TTLGs6@$GAz`T@z Ebj`8 T@t6T@$GqT*sT@@Rc$GqcSd g@f Հ@_|S DzT_ AzTA?hTr T@`B Tf4q`T@aQBxa*@A*@BcU@ T_T@y7@r`T R`@(5k@7AC5`@AҙR$Gq TYR[@?7@@?q@$@z@T!R o@@@{(6'HmA R?jT#WTT`@`aRW`O@`ARS`S@`AROa Dd@`/@!HyTDTKa@?qA*@!` 5LGw`7r Ta@?(T`@`aR+`O@`AR'`S@`AR#a Dd@`/@!TDTKa@?qA*@!@ 5ARCq"*37@@@@B@c#@@hT_i:Ta#w@Gc#@@uA3`=4`@`aR`O@`AR`S@`ARbD`/@g@Ba @눀T$T"Kc@@qA~@!`**@'4?1a`TRT7`@yETpaCE92` R`D4`@D7o@ @2 'Hm AyRt;@1`7@~h38`7@9`7@yaF`;B9 h38`7@@9!X?iTc{A4`7@(@4a7@ hs82 h38 Y!<cR @@?q*T!Qa7@ hs82 h38@@@@@#@a7@!@@?qT!Q@@?qT!Q@cR} @@?qT@ccu :kYc@L'mLL@"@@ R &J@@ @ "q@@@@@sT@@@@9CӔT7A @}Ӏ _Ad4R#R b ` *$jpT!?xqTA QjT$@@T@ 7@P59@n4!R`{@9R$qlT`{o@@@/74s@@?q ^T!Q@@?q=T!Q@``@?q_T!Q'Hm1CRU@C@R@@"RJ@ @cR@@?qT!Q@@?q)T!QY"R2@@A@B@9_ AT@?qT!Qc@9BCBT@7$@B}B B_B_◟_k`#@@9?q!Tb@Tw4bT@9RLGa kT@9a#juTAT@aҹR&1lT @SLC@w@@vqRAdBz!D @?qiT!Q@y&m @6@!&h @6@w@"@!@9? BT@Axa?T@2; ;A@*A@9CB@iTI @GGG}!  xbTc9cq T`'@@,a/@cg@ a[@_TA'E!@A! @cXB?BF$C$BTb@~@a @_q?ZT&@? A*!`Rb'@@"a#@`/@!b@`[@# T` @_@`[s@@csg@@g@c@ }c|Sb_q@!T?uqTrNzJT_q@IJTBtAAa"#;w;A@$!BB!@!ѡccn{@7AᗟR?j Te'@e c#@`/@cb@a[@M TDT@!!>dARie'@.c#@a/@`d@ b[@mT@'E@@ @XBBFFBa5Tc`@e @q!?@ T? R!*e'@%a#@`/@#b@`[@# T` @_@`[a@@?~@zAGTA` 4Rr Tw@`hAKAq$@z@T@@T?xɕT?x(TA5?dTdTcDe.a/@`d@ b[@T@'E@@ @XBBFFBT`@cg @q!?i*T?'!!`#*Re'@%a#@`/@#b@`[@# T` @_@`[@Tg@gwv#@'Hmlv#@'Hmh@?q=T<qRaRG!@"acw;;A@?uqT!RAA ?jNT@@cx{@!x!'Hmg@A'HmK@;g@8'HmK@420.,*Aq@@z Tv5S#9Rcwg_?q)Tg@CRtA@G?q`T@ 9S@RLCs?{q Tk@7@A@* rT 54Rq!c@!9*ٛa7@~6h 8@@?qɃT!Q@ @?qi T!Q;  Tq AwT`@$GqpTo5(lTb@RD@ziT3Rt;@u@b7@~ӡgR_h 8b7@BY9b7@B_ycFfBAAa;@9?q$GzavTa7@q fT9"Bq"!T?{qT@c@{@@?q T!Q@@?qi~T!Q@q@q@$@z]4@O@T@?? ]TikTa@!$G$Az@zjT@끓b@@@}ccH9cH9H9_kxT?qHxT@BK KA Ak wTAkvTAk@R"SB*o@@@(6'Hm'@k1T6S@@=@.@4RA RY RrAR* #D9~@a@B?iTD@9@d8ccD9CET!RGv#@@5qLz!T@Ga?KqT='Hmy8@~@   'Hm; PUT`@`aR8`O@`AR4`S@`AR0@RcDd@b/@cB_TC$YTKa@?q_G@* 59Q9T",b@@9B487@v#?5Q qH9T!(!Xcxca! @@ 1K!eC !;;b$RK@롸T~T)TD@ `@7a@@!$G?qBRRcCe@?뀵T`A 4s@v#@s'Hmvw@B`T@9?tq_Tv#?1WTA}5RrTe'@@3e{a/@d@ b[@ T@'E@@ @cXBBFCBST`#@c@b @q!?(T#}T@?@!**!R!@ b'@"a#@`/@!b@`[@# T` @_@`[s@@!sQ v#@'Hm "I:7@w;Ga;A@N@@$ETAq@@z3TR@2T@@@AA@9C AT 7 @} `_ @T?54@qn K!eC !;;ӈRK V@@G!2c6`@aR @`O@AR @`S@ eAR ` Da/@@g@ ! !;DRKy RR  R c#@cC9D9_q #Ca@rAT`@`aR `O@`AR `S@`AR a Dd@`/@!T TKb@@_q*  59@e'@c#@a/@`d@ f[@T@'E@  @XBFF@ATc!c@e @q?(T#T?!!! 5*_ e'@%a#@`/@#b@`[@# T` @_@`[@hTA )K!eC !;;RKK!eC !;;"RKAS$C @9(&7x|S TS$C @9(7p|STS$C @9(f7|S4xS$C @9(6`@`aR `O@`AR `S@`AR Ad@cDa/@@Z@  R! !;b(RK`@@3`aR `O@`AR `S@`AR bD`/@g@Ba @(TT"Kc@@q!*!@ **ؑK!eC !;;b(RK[F K!eC !;;'RKO&@$ RҀ@!!qc#@cC9D9_q #Ca@l rT`@`aRf `O@`ARb `S@`AR^ a Dd@`/@!TTK!eC !;;RK@e'@c#@a/@`d@ f[@mT@'E@  @XBFF@A!Tc!c@e @q?T#TK!eC !;;RK#T*S$C @9(&7x|STS$C @9(7p|S`TS$C @9(f7|S&4xS$C @9(&6`@`aR `O@`AR `S@`AR Ad@cDa/@@AK!eC !;;DRK ` IRc#@C`@9#rAT`@b#@4`@TC@9!G!hc8!`@Aa#`aR `O@`AR `S@`AR a Dd@`/@!TTKeC!;;RKP!c#@@cG9c#e'@ea/@`d@ f[@mT@'E@ @XBFF@ATc!c@e @q?T?!!! 5*oe'@%a#@`/@#b@`[@# T` @_@`[A @;#TS$C @9(&7x|STS$C @9(7p|STS$C @9(f7|SF4xS$C @9(F6`@`aR `O@`AR `S@`AR Ad@cDa/@@AKeC!;;bRK   )RR#DTˤ4@9 g6`@`aR `O@`AR `S@`AR d@cDa/@)#T0KeC!;;,RK KeC!;;CRK}  !;CRKv RR!4@9i6`@`aR `O@`AR `S@`AR c#@@>` Da/@g@  !;bRKU Lp5**a7@~5h 8@4 !;ƈR'mK; 8 !;6RK1 4@9r6`@`aRo `O@`ARk `S@`ARg d@cDa/@cDa/@`d@ b[@ T@'E@@ @XBBFFBTc`@e @q!?@)T?R!!!*e'@a#@`/@#b@`[@#덹T` @ @_@`[ !; RK #T-4@96`@`aR `O@`AR `S@`AR d@cDa/@KeC!;; RK RRKc#@ !;,R 'mKeC!;;ƈRK ˾'Hm6'Hm4&KeC!;;bRK |BEC`8d@85@vc#@@*cc#464#W@UTQ qT! - X`xa 'mK0@96`@`aR`O@`AR`S@`ARd@cDa/@E#DT˭ !;b8RKG KeC!;;b8RK> b@ b@c#@D9C3Ao@,r,T@(07&(7AqTc#@ Te'@e a/@`d@ b[@ T@'E@@ @XBBFFBHT`@cg @q!?T#$T?*'R!! cDa/@`b@!`[@$˟ T` @_@`[s@s'HmKeC!;;"܈RK  !;"܈RK `A5@@R *@*4A4`@cc#`aR`O@`AR`S@`ARa Dd@`/@!Td TKa@?q!* ! 5 e'@%a/@`d@ b[@덏T@'E@@ @XBBFFBT`@cg @q!?T?*'R!!le'@a#@`/@#b@`[@#덊T` @_@`[L !;݈RKb #TKeC!;;݈RKU `@9q@T a˳ Ӂ/c#@]4@9@6`@`aR`O@`AR`S@`AR~d@cDa/@҅KeC!;;݈RK* `@`aRj`O@`ARf`S@`ARba Dd@`/@!TdTKa@?q!* !  5 `@7`@yAwTpaCE92` R`av4`@ v7o@ @2 'HmKeC!;;ۈRK Ka@`@s`aR$`O@`AR `S@`ARMT/`@!d@q!; K@Q_ qT!p/!XbxbA! DR* D9|@c?`Te@9@@De8D9T!R $c#@`A 4`#A RdRRRCd#@@b#? T`@4`@mTha8aG!hd8!`@Aa#`aR`O@`AR`S@`ARa Dd@`/@!hTTKa@?q!* !@ 5U KeC!;;RKJ !G R`#aR*RCaa#@@5u# TA 06b@_) T h`8$ TR_ r Te'@ `/@cb@a[@T@'E@@ @BXB!FBA TcCR`@@qRc De@a/@ccb@!_q? T$? !*R!! 5De'@Ea#@`/@!b@#d[@  T` @_@`[@ A$!; RK #T'4@9@6`@`aR`O@`AR`S@`ARd@cDa/@4@9 6`@`aR`O@`AR`S@ARKeC!;; RK *KARR*яc  cH9H9_kTb7@~YRAh 8@(TڠRsRss  YRb@B5@ @?qI T!Qb@ 4`ҟ끒T`@`$Gq"4( Ta@RRLG|j$@zT!4TTiT'T T@TTTITTT TTsT)T`TT҃T@ӃҟTӃҟTiT!%_?ERFR@xraT`@R5YRRRb@?YRhTb@:o@ R 'Hmsh 8NR2a7@~cRyR!#9a7@"h 8LG@`@ERRxs@!s@,aT@TR`{@$qlTR`{,#T<R$KeC!;;6RK w'Hm4@9@6`@`aR`O@`AR`S@`ARd@e'@a/@R& @RN`RLR@M$@9@9kT!(T6!TR:B@9C TB}d @7 cR_ cH9ccH9Rt;@!B!6`7@~#Rh78`7@9`7@y`7@h78`7@ `FbR%@9qBzT&@ B=$f9Re8 f;R~VT9ҿA;AT!!AidTG@SS7@@Ģ@RTR7cDa/@`d@ b[@QT@'E@@ @XBBFFBT`@cg @q!?)T?'!!%\!;BARK4@9 6`@`aR0`O@`AR,`S@`AR(d@cDa/@#aTiR*b@c#@b@c#@m@zTa@ $Gq TLG| 7 6?~dh^T@Z5a@ @ !@9CTb @!EAxa_8aTR{#sWC'g#Rf7R @RxrTc@`T@4c$GqTqRRA @?qiT!QA @@?qIT!Q4]RR^[9RG@OO7RR4QTRyRhw8 B`CT`@`aR`O@`AR`S@`ARbD`/@e@Ba @tT$sT'Kc@E9q!*! *b@9_qTT!!?dITa@4T!G!b8!`@aa#`aRN`O@`ARJ`S@`ARFbD`/@e@Ba @TDT'Kc@E9q!*!*]KeC!;;RK$!6RҀI`@d@q@#BCR#91@@6@`#@`6 R``@`aR`O@`AR`S@`ARbD`/@g@Ba @h]T\T#Kb@@_q@!!Bt] @* @@:@5e'@ a/@d@"c[@B_ T@'E@@ @cXBBFCBWT`@g @q!? T?R'*! N`'@`a/@c@"`[@A?mTa @@?!a!a[@?qT!Qw2@9q T@@T@CR!"Ҏ@BRV@@2!2IRu#|!;RK$@CR!"p`@2`T#G9 4@@?@TR}s@s"Rv!r7@ @!@9CT R!@5G@@@@"RRR4 e @Axa?@*v@@`@u#`aR`O@`AR `S@`ARa Dd@`/@!T!TKa@?q* !  5@]#d T?aA5@@?@?k T@`@!a#`aR`O@`AR`S@`ARa Dd@`/@!TTKa@?q* !@ 5uKeC!;;RKlO @A7@!@!A @!7@@~Ӹ g$ @ 7@@ R @r!  Rr?kAT@@iTa@!4 f@n @?qIT!Q OA@5w|@@AR# #L?dHTdT4@9 6`@`aR[`O@`ARW`S@`ARSd@cDa/@`?$hTBš#ša(T_A!@BXx*B!(TcR#sigJc@\KeC!;;b RK$KeC!;;BARK)Ry!TRHLG|7jc$Gӟ #T`Dz;@k|@PKeC!;;"RKKeC!;;RK|@Go@ R  @?qT!Q !fm@|/yˡR@cRc#LGcc#c#@`@9%`_%j@Txq`T@` T@RLGbh`8xb?"j`Ta#@`@!a#`aR`O@`AR`S@`ARg Df@`/@TT$Kc@E9q_8*! *`@c#`aRp`O@`ARl`S@`ARhbD`/@e@Ba @h T T'Kb@_q**!*`@`aRK`O@`ARG`S@`ARCbD`/@e@Ba @HTT'Kb@_q**!*Z{cRc#LGcc#c#@b@9xb?"j@TpKeC!;;RK$KeC!;;bRK$ҨKeC!;;RK&4@9`6`@`aR`O@`AR`S@`ARd@e'@a/@3`@5qRR KeC!;;RK$_KeC!;;RK%C{c*S*Bs[!Rk)CC@҂@@#@" @a @6 4*L q! T@@~iT@`aRO@`ARS@`ARD/@@!ˇ @hT$T@?q* !@* 5744 qC T T@`aRpO@`ARlS@`ARhD/@@!ˇ @TT@?q* !* 5AR~ӯ}@R_*"Rt@@r !T`B@@Aʁ{BSC[DcEkFsGC@_֟qT@9q`Tq*T@)(7W)?qmT@R* _@@5O@@À9RRxa_@x!#@@9qT@q@Ty5@"Ra@@ *qT_`#@ @9qaT*[!V4@?k9*R@*)rT@"R`@! *`#@ @9qTSE94RA R *[!@C!;;RKr_8qTT@9q`TqaT!@(B(@#@C@#$@d1CpAD@!pACA`aRO@`ARS@`AR D@/@!H TT@?q*!8 53`#@@9qT*[[@*rT@@4qT@2K5R7@!~cX~4DTdLq`TV`@9`8qT7@z[@A*!Br@T`@9qTR@b@!*a5"R *`_#@ @9qT* Հ@@*yT@b5@4p2@?T @9qT@#`aRO@`ARS@`AR D@/@!TT@?q*!* 5 T*T!1WfW@5@@yATCE9p2"Ra4@ 86OE9#`4@qaT@RRR_@(!(@"@ @1"pA&@pA#4@@94Gv8T#Tq T##@[@9@xq`T>5@5@TRRq?bTRGR_#q` TITqTITq`TiTqTqT@`@?q!x!22`#@ ҂@4 @9_@@`8!#?|T@ @96TqtTq@TTq`T)TqTq`TqT"s7 ~T`@#@2`R7@!TR1Xvxa *`^5Ҁ@!#`aR9O@`AR5S@`AR1 D@/@PTĻT"[@@dq*!`*G@є#`aRO@`AR S@`AR D@/@!(TDT@?q*! 5##@@9?q@_TR#@wrT{@{@_hTw@#qBZ@9q`T@`aRO@`ARS@`AR D@/@!TdTˁ@?q*! 5wT@9qaT@@2?qlT`@R2`@Q@?xrT!K?k+T@?qT@B ?q@@zLT#@@!#`aRO@`ARS@`AR D@/@!?T#dTˀ@q?'* 5c2W)q WT@RR_)R@@!`@ A?kT@!|{#@qDc@cja˔DT@@@sK6`aRMO@`ARIS@`AREsT/Ҁ@@q!;@9 Tє#@k$G?qTp2yaTCE9p2"R4@@7`@2`@9qTqTq@T@4Y-4˿͘T!G!`8!@#`aRO@`ARS@`ARD@/@ChT$T#˄@BKq*!@:* @9?qT44˿TGa8!@#`aRO@`ARS@`AR D@/@ȝTĚT"˃@q!`**فRB?`RR.@9qTq*TR!R#@#@T@T@9kyT@`aRO@`ARS@`AR~Dq/@R@Bˁ @hTĐT'˂@_q**!<*RRRARhN@@CT@9qT@`aRMO@`ARIS@`ARE D@/@!yTDTˁ@?q*!@ 5@`aR,O@`AR(S@`AR$D/@@Bˁ @TAT'˂@_q**!@?*<RB ?sy RRGE94'@/@ ˄@[@mT$E@@С @BXB!FBA!T#@?q @ iT*R!`'@b#@/@!˂@[@#aT @@_@ˀ[ѕ@9Tq7Tq TqR@z:Tq#RAR[@@?q`+TPRjT@ @@T @v@@zT!! R 9* k?9@9k@_ qT"R9[@*@B@@@6B@9_q@T@?9@ n6@_!T!@y! "_8_qaT"@!"_8_ @T[@b@Bb_<q,T#3@B*"8A@94aQQ!?qYT@C w23456789:;[@`[@@T@sC@BP@o@*g@#4!@yR?kTO@2s 74?M@ B9*C9 *@@@94@_A( TA@?T@yqsA@XTZ @9[@B#ArB#H6 @2 [@B W^6[@X@O@`6 @f @k#A#`AD@8!Q@9(qT@9`?qZTg[@S@X@_SAV[@@Z@UZ@@@@eR@90qAT@9`?qVTE[@RAP@R!@?q!!9@cTAx!?q T?Lq!T@9!x!LQ!?q)ST*C@4"R( BD9|@ciTd@9"@$d8BBD9b_TRS7@AR< #@9q[@aQQ!?q(=T@C w23456789:;#@@4[@X@@E6[@@X@=@90qT@9`?0qIT@@?qA!T ! L>"@9L#B,B$|SBd8B(7@J DBa8_q-T?qbR$Bz,T@?q,T 5>@9L?q,T"O@!7@# @!!BAx#!7@# @"S@!B!Ax#@R 9`R!9 %9:@5@3@90qT@9`?q?T@9!x!?qT?$q@$Gz>TO@`P7qT@[@t @2 _@@ЁaT?ITT$TIT`TTTTT)T @TɱTpTiTT T҃?TAӃ)TӃ TT!%_?FȮT)T& GRS @BchB@0 8@ qViTT@96DRe.@9@s@ b8!R&- @!9G7!#-@@@9O@S^7[@ 7R"8X@"+@?jT *+?|qT@@9Qqc!q@zT*7RRRkhT9`Q=S@AT@9`4qTqARAzTxR_qCz!T*_q5T_q5T_q@5Tq@z`TRS@**5Ҵ4RRҠ[@@ @#@k @",zBT _q 2T Rr!  R?k`1TBRS=[@S@@@@F @@Y5!RS&= @S@@@@@<5@S@k@?@BIT[@@B @5@@@B [@@@9?qT @9q}T[@@@ Co@[@ R9@@9xq`;T$qDz}T[@!R!GZ@!<@@3:Z@@9(!t9Z@ @9x 9@@9qT@T @k`KT'AknT[@a@P@A@@T@@@@ Co@S[@q R9S@***5@@9kcT @9!x!?qPT?$q@$Gz Ta3T@9 xq@(TqT q`^T$q@~T(q }TLq`bTPq`aT\QRjT@90qTRy5#*7R@[@ @o@x C-L@XS9AR67[@@@x`X@!2D@@AB@DADBA@VaX@SA @92 9@90qST@9`?qT[@@X@@@GW4@@ Swa9S@gw@nT f*G'Sw@9S@7`8b7qT8q!TXqPTqTqT7@Ab!_h 08T*fAA@@9qTw@DR,@@!?TqTq !TqeT0qRT8qbTq@ETqGTqT. qaT@9|q4.'@9?qaT @9!?TqRAzT@9?qT*@_@k@!@@|T:T@9|qaTR@9@J[@!R!GZ@!<@@+Z@@BZ@ @9x 9@9xLQqiZT@9(q;T@9`?q@T@9xqXT$q0q R B@9Gxb7+@B@9_qA1T!"R!LC!@8@*W+A@9?$q@9(q^T @9qA^T[@1 @2 3@@9x$qGz@a6S@@63@AAS@@95@9qT#@90qa-T@9`?qTf@9x$qDzBTaH@9x@q4_T@9 xqTq``T q*T$q 3T(q 2TLq8TPq7T\QRj4T@90q3TR@F5D@8G6kӀ@9RR?$q$Bz$@zT~@90q%T@9`?0q@T#@90q$T@9`?q@TҠT@B@|!7B@B @_Tk|7k@@@A @*k 8C@[@BR`@|`@@@`@`@E4[@k@@@ @@a6? rATS@[@[|S` @` _qJT_(qT_8q@T_<q@|T_Tq zT_qAT@9q TqT@9?qTxRqAzT @98q!T@9qT*[@@@@@@hf @9Gb8TF@9˄f8TB$C!R@S2gS@=@98@90qT@9`? q@T@9 xLQqI.T?qaT@9`?qT~O@ V6@[@o@@x C@_@9x$qGz@!rTbQQB_qhT@C w23456789:;o{@sA@#L@"|SB1@C5O@X7 @?q?T!Q +"@@97RBA *cA@R6@Bc8"*qTB@9A@B _k!Tz1kHT@@9tqT@.5O@`X7@?qT!Q@+Be1@5O@@_6[@"RZ@@6Z@@9(!t9@90q(T @9q'T@9xLqT@@9QqITI9@9q@9!x!?qT?$q@$GzT@9?(qaT@9?qT@@9 E@9!x!?qT?$q?0q5 [@"RX@@^)w@9x$qGz@0 )9@@9? q@T'@@9?qA5=*"@@h@`H7@g@!R!!4[@a!@rTO@P62@h"@@(@_@TA(gl2@h @(g_qT_(q T_8qT_<qT_Tq@T_qT@9qTq!T@9?qTxRqAzT @98qT@9qAT@90qT@9`?qTP@9 xLQqT?qT@9qT`ұ@90qT@9`?0q@T;@90qT@9 qT`ҡ@9 xLQq T?qaT@9qT`Ҕ@9x!?pqaTO@`zP7O@y`7@@t R@Ҁ@9q@z'M41"&_0&[0@90qT @90qaT@90qT @9qT"'@# @B /@b%@"[@T $E@@"! @BXB!FBAT"@ca_q!@)R'!'@@@%@ /@a![@_ T`렀 [)!TS@9A!By RcTS@9T@[@RwX@@C(w@R@ C[@o@@@K@9x Rg4g@` X@9qaT@9 xLQq)T?qaT @9qT@/[@AX@ (@7 (@X@(@66 (H@90qT@9q!T`@9?0qT@9?qxTXAT@9 xqTq T q T$q T(qTLq TPqT\QRjAT@90qTR`5@9!x!?qT?$q?0q5}@[@X@ @92 9@[@RX@@'@9x$qGz@@9?qT?q T?qT?qwT @9 q@|T xRRq$CzBz@{T@9( R!x!?q$Hz$Gz lT%@s @`aRe2 O@`ARa2 S@`AR]2T/ @a$@q`!@; 6 @9Q!?qDzHpTS @9(q5 ?q`hT?(q`gT?8qjT?<q`YT?Tq[T?q!T@9qZTq bTR5@ WE95#D!R!W9@"/@a%@A$[@!? T!$E!@A! @XB?F$F$D T&@c! @Qq@dbЄ)B(BqT$*aR! ,1 '@ ##@!/@c$@# [@a?Z T! @?!끀!![a`!;bR5T'!@ @s`aR1 O@`AR1 S@`AR1T/ @$@q`+o5!d96 @aR1@ O@AR1@ S@AR1@%@#D"/@%Ca`!;;bRKO5%@#D"/@qTq TqaT*RXR@9q7TqTqT@9TqAT @9qTc@9q9Tq8T$q6T8qT@98q!T @9qTR@9Tq!T @9RRqHzxAz!TE@9x?qTqRAzT@94q@T8qAT @9qT3@9qAT@9x8qT`) @9qT@98qT!q!T@90qT4qT @9q!T@98qT @9q!T @9q  @9 qT@90q@T4q!T@9qT*** 6@!@@@!@@@@6x`#P7@rST@bD@4[@@@A@@ @@`4 R@9_@g@_TaL! ЀgO@`7@]67[@t#!X@uZ@`4@[@   RC 23456789:;w`@aR@o`V@sg@#SA 5@2s@@`X`x4 A+ A*!o@ s@@B9C9 DB@9hb8q T"@@ Ҁ_ T&@ B#A?r#x6_@z@_@Ѐ`@S2`H6`@2`B`SA5@Z@!?k T*AA@VN# @@Ch@y @B2 @w@O"5O@S@# R{@o@swf2AR/@x[@!2X@"|@AB@ "} "~ @[@#X@ej[@@X@@t@ C[@o@@@g>[@X@j1@ Co@[@ R9&@9XqhT @9qgTҩ@94q@T8qfT @9qafTҟ@90qT4qeT @9q!eTҕ@90qdT @9Lq!dTҍ @9qcT@98qT҅ @9 qTLqAbT@90q T4q Ty@9q s@9 q m@9!?f@90q@T4qa^T@9q^T\@9qTqT$qT8qTR@{5/ @9R qTR@z5'@9qTqTq@TRy5@98q@TR@x5 @9Tq TRw5@9qv5 @9q@v5 @9Tq@TRu5 @9XqTRt5@9bRRqBzxAzs5@9qr5 @9?qTxR_qAzT@98qTRq5@9QTRo5@9q@o5@9q@TRn5@9q`TRm5 @9x8ql5 @9 xLQqT?qTRk5@9x?q@TqRAz!T @94q T8q@TRi5@9JTҼ@9q h5@9qg5q@TRf5 @98q@TR f5 @94q TR`e5@9qd5{@9q d5v@9qc5q R c5n @98qTR`b5h @94qT8q TR`a5`@9q`5[@9q `5V@9q_5Q @90q T4q@TR^5I @90qTR]5C@9q ]5>@9Lq\59@9Lq[54[@RX@@07,R/k@@@@ @S@A @90qcT @9 q!cT@9 RAx!LQ!?k bT_qTRV5 @ 2@w@`! @9qT5@9R q!5T @98q4T@9qa4T@9q3T@9 xLQq)T?q2T @9qa2T_q T_(qT_8qT_<q T_Tq0T@9qTqTq0T@9Tq/T @9qA/T@90q.T@9 qA.T``@9Tqa-T @9hRRqHzxAza,T@9Xq+T @9qa+T@9q TqT$qT8q*T@98q)T @9qA)TҶ@9x?qTqRAzT@94q@T8qa'T @9q'TҤ@94qT8q!&T @9q%TҚ @9q!%Tҕ @9q$TҐq$T@94q#T @9qA#T҆@98q"T @9qA"T~@90qT4qa!T @9q!Tt@90qa T @9Lq Tl @9LqaTg@9qT@9x8q!T`]@9qT@9 xLQqi T?qT @9q!TM@9q Tq TqT@9TqT @9qAT>@9x?qTqRAzAT@94q@T8qaT @9qT,@9qaT@9x8qT`" @9q!TqT@94qAT @9qT@98qAT @9qT @9q@Tq T$qT8qT@98q!T @9qT`@94qT8qT @9qAT@90q@T4qaT @9qT@9TqaT @9hRRqHzxAza T@90q T @9Lqa T @9q T@9Xq! T @9q T @9Lq! Tҽ5@@2kw%w@.o*"[@RwX@@:/w@%_@aTBa`!;B̂Ra0@ 4@9 *6 @aR,@@ O@AR,@@ S@AR,%@@@7@x@9?q!T @9 ?xqDzhT @9 q?xq" R)@9?qAT @9!?ᗟ5G@9R qAT @98qT@9qTH@%@@90qTR5@9 xLQq T?q TR5 @9 q5  @9q`5 R5@90q@TR@5@90q TR5 @90q5 @9q@5 @9(q5?q ET?(q DT?8qAT?<q @T?TqT@9qOTqNTqRTR 5@90qRTR`5@9 xLQq:T?q6TR5?q@T?(q@TR 5@90qTR` 5@9qTR 5@9qTR 5 @9 q@ 5 @9x8q` 5 @9xLQq`5 @9(q5?qST?(qRT?8q`T?<q T?TqT?qT@9q`Tq@TR@5c@98` *`*a/ @9?qTxR_qAzT@98qTR5jR@5g@9q5b @9R qTR5Z@9qTqTq@TR`5P@98q@TR5J @9Tq TR5D@9q@5?@9q5: @9Tq@TR54 @9XqTR 5.@9RRqBzxAz5$@9q@5@9q Tq T$qT8qTR5@9x?qTqRAzT @94qT8q TR5 @98qTR5 @94qT8q TR5@9q`5@9q5@9q 5@9q5@9q5qAT @90q T4q@TR5 @98qTR5@9q@5@9 qT@90qT4q TR5@9q@5@9q5@95 @90q9T4q@TR5 @90q8TR 5@9q5@9!x!?qT?$q?0q 5l(A@!9"O@@!7@c@!!BAx#@!7@C@"S@B@x#@ Ro@*R 9{@@9A** C9Sg@S@g@ @9(q5Z @9t@q @9 R#Q"8cBq@Bzi{T @?qA@90qTR@5?@90q`TR59@9 xLQq)T?q@TR 5.@9 R!x!?qT?$q R$@z5" T@9xq@TLq!T@9xLQqT @9q5  @9q`5 @9q5 R`5@90qTR5 @9q5 R5@9 R!x!?q$@z?0q@5 @90q5@9q`Tq T$qT8qTR 5@9x?q@TqRAz!T @94q T8q@TR 5@9q@TR`5@9q`TR5 @9x8q5 @9 xLQqT?q TR`5@9q5@9q 5qTR5 @98q@TR5@9q 5 @94qTR`5 R5@9q`5@9q5{_qT_(qAT@9qT@9x8qAT`Ҏ@90qT@9 qAT`҆ @9Tq@TR@5_ @9XqTR5Y@9RRqBzxAz@5O@9q5J @9Tq TR5D @9 q@5?@9q5: @98qTR54 @94qT8q TR5,@9q@5'@9q5"@9q5 @90q T4q@TR5 @90qTR@5@9q5 @9Lq5@9Lq`5@9q@TR5@9q`TR5 @9x8q5 @9 xLQqT?qTR5@9 q@TLq5@9Lq 5@90q`T4qTR 5@9q5 R 5@9q5@95@9 xLQq T?qT@9qaT`@90qT@90qaT`@@9qT@9xLQqȉT`Һ9} {PCcB@"@/@0@9@?(qAT @<@1TqTS[wRS[,3RVBsklTe~@"R-*@RRy)@0@9?$qaT@!@skTSA[BB/@@ ʀcC{ƨ_S[T& {!<MRe2R ! r r[c d@8JB|TC|S&RըrRv"(c|Rciccxcx#4b BJSS|Sks~sisu @9@9C kTSAkD*[BcC{Ũ_@yX@Z/@'54 @y"@@' 5b "(SAkDy { BS[@'b@ D@!!ҁB0@ %B@R2r``@`@`@ b@@ `b"7b@2` CA U= B'SДGs: `*' `5' '.b'&/'60' ub>'" 'a .'`}'`+z'*a v'`.s'AЀ> o'`B/l'2h'vA:`B1d'`2a' `3^'. @`4&Y'6`b5V'`"6S'"`6P'`7M'`b8J'`9G'*`:D'`;>@'`"=='2 9'!D @ 3'b!B @`-'!G @#''!E @`7!'!D '!4G `?'!Tkh8 AK&8@9qq@z@T_5*$<65@@q@zTZ  Q*$@<@65Q9 Q5L4sm4CB9cB9iT@R r?k hTCR!4"TS@ R 9A@9 CdY@TAK88B )TK`8?7kMGa`a6KK`8?7a`*6b@K#8@ B T*!K@%=)c8@R 5!$5D@ @ @%Db@ ["@G@_@!@#FFbC" C@Dc@@@ @d @@@y Y@ '}(%B,D!C@@!@@ TGAFB@"BC @T CAR[b `@BF_`!E` @B@!@` _LZTF D C@@@ [@GYD@"@!ZF#CB@C@a@B@?r@!@! @A A@!@!@A @! Ta @"G @9@C`8b@_3TR!* ~@T  @8@T`@@렒TK@@#B5@/U#BD@@!B!a,@’BD@$,R_@?@#@# @? @!x!2w'p&4Gb@9@@b87@wT* b|@T A@8!@ T_'X&a@` @!@cTK@@M&@ @y@GR?k!TZQQҮƭRKr@k`k!Tf @y@.RkT`@9qATNFkax`LRk AT@9qAT;R**Tky8!?dT- 4xqTy?TA@9?q T?qTAK88Tg|qA TK`8B_$ T* Tk`8qaTA@y-R?kwT*coF# <@@@@c@o@A5@@y-Rk@T!mRk@ҁT ҋ*Ra! s` C@ACR!>ұq`\R@z`TRQyR?xrxTkh8**0RA@lRr?kTkv8|qATR@K88@@9qaT0R!Tk`8?qTQBKa8_q]Tf,Kka-Af, TRR @W6*@C@@@C@ACR! <ҏC@@C@ACR!8B҄%AATNKkalA.A@T! @9?qTR TRC@@@C@ACR!8Bf"}C@@@9!jC@ACR!8BGMG@@94'm^ ` @ڠ/b@'Gm" CARS@5RRR( AR CC@S@% @@x @@T Rq?nARR.!@ @ @[@ B B;ow[@~4A3@9@@?(qAT @8@@3@[@ @;b TAR[ARf @ T`_8qTARW_8(qT_8(qTsi TRB_8_8_8 |SFc%|S_8*5FӃ_8 *! E|S AF!*LS|Sf|SB @ F! bF* B*c  B !lS   9*~@5@@e @@@;`ARP[ Lo@t TK@@ K@@@ @@;pL_@x a@b @%@B5a @?qIT!Qa A @?q) T!QA 4@ @@9qR B3@ b@"D@! `B,@@B@/``@`@`@ `@ `@x2`K@w@T@Ё@AD@! ``/@B@#,@@@ @ @x2|`R`R95 R4`R.c@"R@P @?qT!Q @?qT!Q `Rc@"R@> @?qT!Q _[BcC6 #cB5`Tѥx7 T TTs THT! b}ӻRB@@@A@9CT@@9#}@A@ @ A@@ @!@!?! Z@ @sBCA @?qT!QA [BcCkD+@SA[BcC{ƨX`Q`{w@5RK6`@"a@ @ a@` @!@!?! Z` [BcCkD+@_6@@}'#T b}ORSA[BcCkD+@{ƨW)Z[BcC,  |"@{ RS)RB@_ '@@@"`@@ 5@9`@(7@A@@?q T!QSA{¨_֣@9BCӤ@B_iT@_} bxdT_hT@9_c29T*R|@Cӂ"!khc8B*h#8T+Rcc@hѣ_T*_kT+RB@9_ A@TSA{¨_aR!4G!@4\`@@A@a`@"R!4G!@(\@9`@/6_NW{StB`@C@҇Na@9!X?To@@@?q)T!Q`*@4`@9Ra92`9B@@ ʀSA@{Ĩ_֠@4R`9WVq*{_փ@9cCc@9!@b4! "@b@ "5*_BR*_! cRT@ b T@9 Rq T?Tf@9RLGye kTE|@ye j!Td@8?AT@$ T ?)Tf|@RLG(ye kT?|@ ye jaTd@8?HTq!Tid@9? TfRLGdc kT?d jT$@8? aT@$hT d@9@$Tc?(T R *_ր@ $T$(T@8@?HTq@T R LGRxe kaTd@9d&jTc?HT@$)T *R ҟqT` `BC,G4II*RK*Rf|@*R@9{__ _  @@"_(qAT @?c,@ F _ @?qT!Q_֕S{S0@9@?(q T[`@ @?qT!Q`.@R~@~! " @A@ qI T@`.@~! "@A@ q T@`.@4Y2@9@(qT H@ @R"0rjT 8@ 7`J@@?qI T!Q`:@Y`^@@?qiT!Q`>@[BSA{è{YSA{è_6R`@@ ?`@`s@" @@H@ @R"0rjT! @ 8@ 6 D@_Y2@9@(qT 8@x 8RI2@9@(qT! @! @S`.@S`.@S S S{S[ 0@95@(qT` @t2@9a@" @ ? Rra@?a@ `A7*qTRs@@2(qATs@R@rҡBc `Bc* @ MM 4:@`>@R~"|W`::@@M.@tW`.ҡ.@8M`.@ @ @ `.@@ @ `.@ @ @ `.@$@@!2@9@(qAT! @ 8@x 8J@@!``^@@!>@>@}=W`>SA[B@{Ĩ_ր@ @` B@4 a@ D@!w!B @ BRa@ ~~~~~~~~~~ ~ ~  uZZ*qT` B@a@ D@!w!B @B@"|||||||||| | |  a@ A)\?qT!Q @`@7R!@s@<VXa@*[NXNRR3QR.Q {[0@9@?(qAT @0@ @@@BSS@@@sQt~@7ht8?q ThT?Lq T T?Pq Tv~@ Wxv@Q 4@@@sQ6X@XSA@[B{Ĩ X?qIT?qaTw~@ Vx`@Q5@W @W@W@@W@@W@ W@xwW?qTA3#@Ca@?q)T!Qa@@@?qT?qT$W?qT?qT?0qTB3@@W@@@ @aW@_W@xv\W@@YW@@@Q@@@[B{Ĩ_`@9?qHTB=BAa85@y?q!_@?q!__{ R@%nW {S[4@6@3Bt~@X@6@=4@9a84K RSA[B{è_? TKy RSA[B{è_yRSA[B{è_ {S` B`kBsw"@O@?Kb,`B@"D@!`!K@aB_,@&aK@"B@!%D,BR@@@ @ @cxc2 )AqHTq&TqTqT [c Ub@ RAA@@? C[@B@BL#ZT@a;XD@[@T@!R&H @k@6w@@@Tw@cO@w@"-TG_cW G@S@5 @9qbT?@T@9A_kT_qARAziT_qTx?qT_#G@WGO@?T "T~>UUs@yk@~ @4L qT @@̂TUs@yҠ>@|T@T@ O@w@B|Tc*R7S_s @9qT?@;T;@A@9_kT_qARAz`T_qRR@TBs@yA @>R~6|"hvxsW@@?@heS@Bh!xs@S@4R@@B|hbxh*k@_|@;@h7x@@T@B7@c@!<ӃS@cBh!xs@S@!!4R@Zhzxh7x@y@h:xSSO@hT~| @7UW[H[@;GW P@q)TRR&R;S****W3k9C" TW @R @@y@yQq-T*ARk!!<>kKT"<}hbx_kT!*!<k T *!K7@_@!:TNs@yk"R KTC<}@s@y$B`KB<!hcx@ A@}#h A@ @ @@Ra @yQ_k-TK QA @k!9C3#TSH*B@!};@W@YF@D9w@@ VTO@%Rw@E?B y@@@VTI@'@?!Sc@?@@AA@B@ys@B y@?@A @| h`x5A@S@c@Tc@R 9c@B99@[@"RR5 BB<_kTD|E@hdx5 @4Z`4*C @|fhax4*|ahaxaF5z``5h$x@[@BB<_kTZQa@@!@4x K@@?qsTK@!QA@@RA?@R?qA!B@!@A!SA[BcCkDsE{Ө_;RRs;@z5 @@yh"x@9R(qArT @9qqT@9ax!LQ!?q_TqRpT @9?qApTaR @9 R!x!?$q$Cz!*R?@W?Tx?q!TqaRAz!TW@ @lT@R:RE*{*;@@94@Ga8@_TR( !|@IT@@8@T?) TKRRRMh@ Rr @! ?qT@@@ycg4d @|~|cQc<@ R<}KAhax?k T<RbA@y!QkTG@X5@@y@?kT!<}*9h!x` @@ @y *` @@ @y y*hT**"||W@{@!kOk@"RR@` @@y` @@d @@;@C@@T!@:`@xaxb@5AxS!}oLo@@@` @@` @@@yARO<@LFa8?Tw:q!@`@xax|W@G@8AAA/N;@kK@BT~}laib$4m!"|}C lic#4!?k*T~} @ ***`i!@@@ @@O@@A|S!E@7@"}RQ@ @7@@@9R?(qMT @9?qLTaRsQss@b35 @ @h6xQ;@RRgQ?@;? *TSx?q+TqaRAzT;@ @v )TYR E[_@**<R@@9` 4@Ga8@ TR( !|@ T@@8@T?ITHRRRLC@ Rr @! ?q!T@@@y`B4QB@# }Ah`5Sh QaQC@|L<@cCs@yD@s !B7@!Bbx!h`hTQ*@*;@[@?T!@6@@xax*ARN<@LFa8?!Tw6!@@@xax;@lG@8AAsWIM@s@W@[cE @9 R!x!?$q$Cz!@9R?0q4T @9?q4TaR@9R?0q3T @9?0qa3TaR*h$x@[@@ @H!||9D@ A@B@!}l!?w@@TO@w@c@9qT!@9!x!?qT?$q RR$Cz.TAR @ K @@\@ @@9O@@9qT@@%RE?@ATY@@W@*Qk)TWb @|`r@yCAhax?qu@G47RG*kTkhTb@K?kTb@AL!!@?kATq)Tq}TK@RKI@Rr @" _qT Rr!  R?kTBRҏP qa@ "T@@9C"#h`8B*"h 8[@@9b@`k`8C"Ch`8!*Ah 8@`5@@9 87`r@y*kT*G@quTK@A@RI@Rr @" _q`T Rr!  R?kTW@BRWPqc@@T@9cR?q$CzT@9c@! !aAG"ha8#k!8!_AT9aV@!Qkb1T*p@9R?0qT @9?q!TaR$@9R?0qaT @9?qTaR@9R?0qAT @9?0qTaR@9R?0q!T @9?(qTaR @9R?0qT @9?qTaR @9 R!x!?$q$Cz!AR@9R?0qT @9? q!TaR@9R?0qaT @9?0qTaR`RFa@|S""`@9* `9`r@yj@qc@@`@@T@aR9qdAzT R@>CK@[Ecc@!@9c@! a9u@9!x!?qT?$q RR$CzTAR***@9+ R RcxcqdKzdDzST.@9R?0qAT @9?qTaR@9R?0q!T @9? qTaRK@GfIc@9R@9ax!LQ!?qITqRaT @9?qTaRs?|?1?|A Ta@W@*@9R?0qAT @9?qTaRbAR`@'\M9X@9ax!LQ!?qITqR!T @9?qTaRI_qsT_(q nT_8qkT_<q@_T_Tq`]T_qRT@9?q3T?qAT @9#qT$xRq$CzrT@9?8q rTR @9 R!x!?$q$Cz! ARK@!@RG@Rr @" _q`>T Rr!  R?k=TBRO@9c@"!C"dha8B*bh!8[@9c@aka8"!C"dha8B*bh!8@a@b5@9 ?6"`@9|S"* `9a@jR@9" @" AL_@9R?0qT @9?(qTaR@9R?0qT @9? qTaR@9R?qT @9!x!?8q!TaR@9R?qaT @9ax!LQ!?q TqaT@9?qTR@9ax!LQ!?q cTqRT @9?qATaRF**BSdc@=cR@9?q$Cza8a@A$T@ \?B<!dGD bc@D `y!?@B`y+9R(Ry@9R?0qT @9?0qaTaRnaRl@9?q T?q T?$q@T?8qRT @9?8qTR@9#xq`T?qR$CzaT @9?4qT?8qRAT@9?qTRRI@9?q!TRD @9?4q@T?8qTR@9?qTR@9?qTR?qRaT @9?4qT@9?qTR(@9?qTRR!R @9R_8qT@9?qaTRR @9?0q`T?4qTR @9R?0qT@9?Lq!TR@9?qTR@9?LqTRRR@9R?qT @9!x!?8qTaR@9R?qAT @9ax!LQ!?qTqAT@9?qTR @9R! ?qT@9?8qT@9?qATR@9?qT?qT?qRT @9_TqT@9?qATR@9R?0qT @9? q!TaRaR @9R_Tq!T@9dRR?q$Dz!x$Cz!TR @9R?XqaT@9?qTR @9R! ?q!T@9?8q`TR$@9?q!TR@ @URUWs@W  SI@!7E@'wKS@cc@@9O@Sc_q`T_(qRAT@9?qT @9!x!?8qATaR]@9?qTR@9R?qT @9!x!LQ!?q(TaRLRJ @9_Tq`TR @9?XqT@9?qATR=@9RR?q$Dz!x$Cz!TR3@9?qT?qT?$q@T?8qRT @9?8q!T@9?qTR!@RR @9?4qT?8qRT@9?qTR @9?0qT?4qRT@9?qATR @9R?0qT@9?Lq!TR@9?q@TR@9? q T?LqTR@9?8q TR@9?0qT?4qTR@9?0qT?4q TRp@9RRq!@9?q TRe@9!?TR_RR@9RRq!@9RRc!0_SAQFFG@@9#xqT?qR$CzT @9?4q T?8qRaT@9?qTR@9?qTR)Ssw?qRaT @9?0q T?4qT@9?qaTR @9R_8qT@9?qATR}@9? qT@9?0q`T?4qTR@9R?qAT@9?8qTRjRh@9RRq!b@9?q TR@9!?TRWRU@9?q@ T?q@ T?qRT @9_Tq@TR@9?q T?qT?$q`T?8qR!T @9?8qTR@9?q!TR4@9?qTR/ @9?4q`T?8qTR @9?0q@T?4qRT@9?qATR @9R?0qT@9?Lq!TR@9?LqTR@9?q@TR@9?qTRRRR @9R_TqT@9RR?q$Dz!x$CzTR @9R?XqT@9?qTR@9#xqT?qR$CzT @9?4qT?8qRT@9?qATR@9R?qT @9!x!?8qTaR@9R?q!TR?qRT @9?4q!T@9?qTR @9R_8qT@9?qTR@9R?qT @9ax!LQ!?qITqT@9?qTRR0aR@9?qTR)ARR @9?q@T{w=SB[Aa85@yRT D _HqAT@4a ?kT*J@@9b8?qaT@y!4a ?kT=@9`8`4SA[B@{Ĩ_@_ySA[B@{Ĩ_  {S+C[c*k@s*'m:@B@@@9L9q#C[o'aT@@'O@P6[@@FcC R K9?2?3?4?5?6?7?8?9?:?;?!r Ez8A@A_Ta^Rb(C !D9z|@BiTC@9d@c8!!D9a?TR6B??q@T***RR@9RD@8!@aj4q'g@T#K@9RcG R տgTˢ@9T@xq`TTq T q@T$qT(q@TLqBTPqAT\QRj7T@90qRT@9(qRT`hQq^TSw'?K@9'Q RS@w@@Q  R9V#X@<? r|TRz@| @A| 8!gsR 9R!@9?qaT"!@9c@9aQa!@9?qAT"94#@9?qTaRa9b@y@y! ay[O@!W6[@q@o@!@* C@0@` @!4!L ?qT@@@ @,4@@9qaTC@9?qT@STRw*z@9_q@T_q@RD@zT@{RqDBzaT*qDXzATRkTMqC@aT**A@zAw@@%TqgTS@* *qX3T@q@X "T@2A"TS@ ?!T @x @_DACT[@@@@@5B@#_Ё[@@ Co@[@"@[@[@ R 9kT@xqTq T q`T$q`T(qTLq@NTPqMT\QRjDT@90qa3T@9(q3T` S=C8 3AS@ 3$IT@xqTqT q` T$qDT(qFTLqETPqT\QRj!T@90q-T@9(qa-T`O@=P6[@ @$@zaT@S[@@?@@T@_`T@f|@+ ˡ,?A![@@T@o@ Ck@_k@@z T @@`6 r!TTBRg:[@S@`@g@`@5a@[@[@ R 97A @?q)T@!QA g*A*o@ {@B9[@C9@@@?qA֟Rz4[@X@w*)5 r5O@X7@RtJ@r T @9A`8?q T!Q!D!@ $@ 7 QB g+@@O@@P76[@ @ C[@o@"SA@4# @@ @9k T[@#X@W[@@X@@t [@X@@X49@R? @?qT!Q [@AX@ @9x 9@X@@9(!t9I5@P6[@ @ _@_O@`P7O@@`6[@@@9q6X@yT@@@!tL S< @S@ 3A!@ 3?T@5@@SAS@qTCTqiT B@9tAxb1[@O@Z@` CbX6*-?Z@@9(!t9@@?qi#T!Q@g5@@tlqThqT@qTcdTHq#dT[@X@O@`X6d@9(qT@9`?qT b8KZ@ =HARb(C !D9z|@BiTC@9d@c8!!D9A?TR=?@ Co@[@8 R9O@@Hg6[@X@@?+A5@ATc4@[@@T@@?r@@ T_@8T@@* 5 /@ [@@@x2(X@8X@T"86Rbb8? T@9B?7[@Z@@8@Z@Z@ @9x 9@g%qTf@?6&@q@TqTTQq◟_STR R' R R(xqTLqAmT@9xLQq(TMqA(T_멧Tˡ@9,TjT(xqT@9xqGzDz T ?TAx!?qT?qT? qT?$qT?(q YT?Lq@WT?Pq@T!\QR?j>T@90qT@9(qaT`҇ATxqT@9! RxqAz0q 4c8RS?|?|0 :!@9r!ES@#d8b@A9Tcy4"R( BD9|@ciTd@9"@$d8BBD9_TRS7>S@A@9?qKT@{T@9 xqTqT qT$qT(qTLqTPqT\QRjT@9R?0q`T`5S 8S@w7A@9@`w@R@****S4@QBxd$@џT_凟䇟kT7A@9B4TS@**?qTz$TTT" 7?@9!x!?q@T?$q@$GzzTf`@Rc0[@@Z@Z@ @9x 9?2=AR:@x[@!2X@"|@AB@ "} "~ @`R@`ARzTe/`@d@q!:;Z~#@t_eC?"T@4d˟MT%@9BGBe8!#R# T_#R# N { @Z~ @{¨_ {S*|"R@'bR)5SA{¨_ր~{|`SA{¨_?qThT?q T?qaT@R_?q TR_?tq R T)T?xqT?q`RT_`R_?q`RT_րR_{!}!$  @7`@ @_T|`@R`@`@`@*` @{¨_{S[c*k@@@@ Q*! !}ӀzqT`@*@@xz`@@`@@@r*SA[BcCkD{Ũ_9**!}^za@*5@A|R`@@@9`@@ Ѩ{BCS? =@7C!=" =#$=$(=%,=&0='4=" $~@0@#j{ CRj38#_h38/ ) t @A,!T ?qT RrB  R_kT`@a@@#_iT@##@@C{b* 9}BR>#@{CSBC@/'#r{r@T+@ T`@'@a"`aRZy`N@`ARVy`R@`ARRya D`.@e@!b @( TGTa@?q*!=R*k@9'@q`@!Ta"`aR2y`N@`AR.y`R@`AR*yaD`.@d@!g @TTa@?q*!= 5|/@@Aʡ{ASB@_eC!;;fRK|eC!;;"eRK|D˱v{S*[C_T$E@8@@7`@4_i T@9@87!LG!`!@P! 4c|@OGGj`8cc"T`@9 87z`7acC!|@Z@9LGxaxP@q@4`@b@`5c%RLGa@9cxa!jTc"TR|@}q!TSA[B{Ĩ_@!?TA?T#RRyc"@c`@c"`aRx`N@`ARx`R@`ARxaD`.@d@!g @(T Tca@?q*!? 5(|c@RRqB}q T`bV@RRRf|`@@`@q- T`@`aRLx`N@`ARHx`R@`ARDxaD`.@d@!g @h TTca@?q*! 5{c`@9T@!?TA? Ta@9$qT!!*!@{aA7RRurTbC`@9AceC!;;BRK{acR#Rsxa"@cC!!|@ceC!;;⅄RK{@9#qT!!*cLGa!!@y! vc"@%a"@cC!!|@pҟ?c{Y {St[UR`|4*"oSA[B@{Ĩ_֡!$EB!@?T @ @!6@@<@`4@T"y|*"oCR!BoA@{B$EcRB@BB @XB_cFDDDC T$@ [ @,@c@BX@B_- T@x bS b @Rqta @?q T!Qa ~o TW4 po@`aRNwN@`ARJwR@ARFwb @RRta @?qHTt_oAT Ղ&@B"@.@!˂@Z@LTSA[BcC{Ĩ_$@W4@9Aӄ!@cC{Ĩn[B @? _@ˀZSA[BcC{Ĩ_{S[ck@@8@w`&GaF*s5%*R@@sA#@A$IV!_qs8˦!!"Ax!@RR"*"r!*@Rq!!y 54@8@$Gq TT` 4q! T!"!n5aR$ R*@96D$8s~S5@R9@n@" @ B9bE 394"BRbh58"R"y!@" @ SA[BcCkD{Ũ_ q`TqT!`Bn4 q:R@ R 9R8"!+A"!` {S@@@aB!~!v`a@ 0c6mTlT~R`:@SA{¨`{SA{¨_cva@`@`aRMv`N@`ARIv`R@`AREvTeХ/`@d@q!@;ye{[5!=S*!u8*8@!b6@~Ӆ_h!8d6@b6@BVb6@BU9b6@A?ye:SA[B@{Ĩ_{[6!=S*4v88@b6@~ӣ_h!8c6@cwb6@BV9b6@A?yt:SA[B@{Ĩ_ C{CS[ARvc @q`"@U TT@9kT`@`aRu`N@`ARu`R@`ARucD`.@e@ca @( T' Tb@_q*!*R"RA!`*`@@L" @ c@ R`~ R6c|S! R`qTr RTq!8@!2{ASB[CcDC_֦@9RLGa kT a"!@9xd$j@TeC!;;∅RK"y$ҩ{5!=S!u88@!a6@~Ӄ?h"8a6@!59a6@!?yc:SA@{è_{[6!=S7v8~@`Fb@c:7bN@b@R_q-T fR@xeLTx%`@ҟkT4fN@|@xeTx%fR@xeT`@ҟkT `6@bf@bUuf~? T  _``6@?hTD8~Rc6@cv9c6@dySA[B@{Ĩz{CS*RaCT`@`aRt`N@`ARt`R@`ARtbD`.@e@Ba @hT'Tb@_q*! *a@!a@9qTa@`@!*a`{ASB@_eC!;;bRK\xaR;$ {CS*R\aCT`@`aRt`N@`ARt`R@`AR{tbD`.@e@Ba @T'Tb@_q*! *@9q@Ta@b@`@!*Bab`{ASB@_eC!;;RKxRA R8$@!Q?qT{S@@q TRa~{" @? A@ qT@@@sklTxSA{¨x_q@@ {S[*c@!@5b@9 @BB@bT@@@hTT`@@T?x@9TBRq@@ 7a @@cBcbc@Cx5b"@b&b@`C`@|BtB*` @` @ @a6? rT`@at`SA[BcC{Ĩ_h`@9@`@4ha @55c@d@EdЂb>R;u@ b@b>sa @ { RS[ck!@6D3A&@8@9@9eC@h$8˓9v9?}@ @@9@@@SA[BcCkD{Ũ_ {S]wsjDvn`@2@9x`(q@BCAT @@R@?#o#@SA{Ĩ_ {S[c#@@ACC&@94TE5@9c 3}T@_wh8TcBbSA[BcC#@{ƨ_օc @g axe?Tf T }8C3}bT@!}Ӡ7@ @?T/t@/@_@ @@9c wh8aT@ }ASA[BcC#@{ƨ__TB}ӀR RcvR {S[*3@F@` @b BaS!b!@!!}!T #8C?@T! $_! _Gӄ|DT_T u@  R R!8 A}{ kT@c@d4@?T J!с R@_Taj`8$|S'd2`2g6$89_T8_ATt@bAR 9crjSA[B@{Ĩ_dha!T Bbh!+R@_T {?S['Bksq@W #7? 95" TcR@w`3 5@X(@??,q TV&B@y? @%T9R!17@9$07`7X6 @ @6@@ @7T$@C X6 @ @ 6@@ @` 6RRt`"BR%ow@4a@w @K  7@"T@cC`4@27BW@!@Aʁ1SA[BkDsE{˨_ef@#RB R@!`|t` @aX6@@!? q`TuY@"R?,qT 7@@s@9 07 @cRBR!@j@?@*@Y@@X6 @ @6@@ @7@sb Ձ4 @@ @6A@!@! @A6#RBR2t@T@ @X6X6 @B @T`7@X6 @@ @ q@ T@R 4rc q T@ @3@OS@`6@6R;p\4b@Rw@@B@!@` !3@9 qT@@!,@A0@ @@4?@ R 9b@B @GA@@@c@c a|{qG@@@`@ @R@_qT3@9@_(qAT @"|{c@!@w@B9g@|{ @hbh&we@@`@@` @@c@ @@_klT @R 4rc qTRc=nO@e@@{@ۯ6RRۯ6@@sbS@`@`s@|@! @9 06@4T`}5sARp R7o3@@@{:Z_T @? qT4@@Rb@!w@B@` @AA_(T_R RBzTARhh|4@@ @cha855t@@b@w@B@`|{Ah a@!@!6a@!@  @9`06`<Rw@@`w@cIm@2Ҙ@uaRgp7@#Tv @@`)mppoc8n@9} #@$Sqb@@ Tq RR T*QR*R_'@@D@CӤ RA_D@9E@˭T@I } xeTM@@BKT` C  kT!@R!@"_@@D@9C`T7c@} dIR`ÒR$rCr_񌀌h R R R_lIRȒR,rHr"@B@_&@@b@"`!@R!@"_d@9BCe@B_iT@f_} xeT"@B@C@4!(@?k_ R_քe@B"eE {cS B[#@ b@ D@!!a B,@@9B@"/``@`@`@ `@ b@BxB2b @c l @!c l @Ac lNe"R!@9b@!@!L 3SA[BcC#@{Ũ_ _`R:lTi {S[atraT B@3 b@ D@!!aB,@ B`@.cc@c@dc@d c@ c@cxc2c^lOrSA[B@{Ĩ_Rm@ B@@ D@!!aB,@ B@.@@@ @ @x2`Rkhh`Rk {s @oB@҃@@fo@BTSc_8lq@tT@ s@@SMA$@@,@aF@A@C@[?qɔT* Os7Rqo@R@9LG@t koTqR@zaTo@?T"@9k T  T%@9&R*!LGq!e! $FzTE b_q! $CzT@9TkTkzq@pTq@TqT@s@@MA$@@,@aF@A@C@?q)T*`Is~qo@@9LGvQq tITR_ jTR? juT7Rk?o@ R?!4@9LGotR? j sTzqTvqTkwE o@T*RRLGRR_N@u@d Tt&R@*t[6 *:q(T T@9R* s? j TR_ jTvqT)T@9$c kKTtqOT`QnqAzTZ_ qTs@s[6:q)Tww@i?T@`s@@eSC [DcEkF!BB!@A{BsG_Z_ qTww@;T @@4)87u[6 *(R*hT :qwᗟ_ qן; */K5qC4_83RLG7xb? j BT qiTqGTqETq+T4c TR)s" ҉ Ү¤ ȸ ? k pM Wl " D҅+ oM BJ= Clb  0"?AOAB &R_q/7;?CGO D p ` h$A'h$B'h$C'h$D'h$E'h$F'H%G'w{T/A3A q * K+K@@@+AkTZkl#T@z u!|{?h3T{@}ho@}Әk@{:ҕG\oG@|@@_ T@No|k@G9 TrXG@3ҟ`T!@@@@T@b@ˡhb{saxa `T`{xzsz8s9#@Ta@@@?Tk@k!{T@Ts@@T@ _n|IJ_@RW kr@"E@@Cs8@`@W@T@R* D9~@ciTd@9@@Dd8D9TRG/o@9@@@@G@u[6 *Gt8(o@@R@r?kTR@a@;*4K_@z8|TSz3dx8Z"@@_T@ gunJ|IKg@{@G@ˠsx`  @oo@KT36K@ K@Tw@@hT7Rw@@`@KA ]4@`s@@s@A$@C@a@,@A@?q멂T*pn;A i57AZ5/Al4BR* @@D9~@ciTb@9E@b8D9 TRGTLG@9c!jTAT(R*QT@9RBLGB`?"j /T7R37(Rtq*Twq;*K`@Tq@T7R/7 R3|ko@@R r?kTo@@y R?kaTR.o@@9q@T)TqTTqTqTo@,R,r@kyTNR!ͭrkTRmrkT@RqTTq`TqTo@@ lR`,r?kTRq!To@@ Rr?kaTR RR[Ozo@#@9Cxc#ja8T3!T@o7s@@s@A$@C@a@,@A@?q6T* 7Ro!no@o@9Wo@@`s@@Tas@A$@C@a@,@A@?q#TDT* omo@R@9LG t k@T7RokUc@9#xc#jTb(T@os@@MA$@@,@aF@A@C@?qh_TT* 7Rokmt@9+?RLGo@@9Cxc?#jTHTo@s@@OMA$@@,@aF@A@C@?qTdT* homo@7R@9zq TLGRAt! ?kTo@@9Cxc?#jT(To@ &s@@Cs@A$@C@a@,@A@?qHT뤕T* 7R4oimo@o@9vqATOA 5o@_8q@TqaTkM@`џZTc_8"R!LG#xcc kT_8xb"jTџ!To?kA5o@@9o RkDTZtqTq,T7qRaT R77R/3_o@@@s@@]s@A$@@,@aF@A@?qTC@* nmo@!R*o?@9LGt7R[O*$ToҀJo@@9?tqhToAq@zTs@@ @A `aRis@L@`ARis@P@`ARis@aD`,@f@!b@먦T$TAs@kc@q****! w@  HT @9tqTt4@Q!X`?tT R*37o@7R?@9o t;!R/7o@7Ro?@9LGt.SC[DcEkF  R*377R? @oo@7Ro@9ğTK@=s@@oMb$@`,@!f@a@c@k?qT뤛T* 7R nUlo@7Ro@9s@#@T:! B3@Yb@"D@!!aB,@VB#@.a?a@?a@"a@" a@? a@!x!2a2as@5;A@57A4@ .s@@Ss@A$@C@a@,@A@?q.T* mk3A+5s@@Xs@A$@C@a@,@A@?q,T*mks@@@' @!(7@@&s@@@ASC[DcEkF R7! B3@s#b@"D@!!aB,@]B#@.a?a@?a@"a@" a@? a@!x!2a`s@@s@@>s@A$@C@a@,@A@?q) T* Smk7A5/A5@`s@@qs@A$@C@a@,@A@?qI?T*4mik3A`4! B5@i@"D@!!aB,@agB#@.?@?@"@" @? @!x!2L`s@! B3@eb@"D@!!aB,@!cB#@.a?a@?a@"a@" a@? a@!x!2a!`s@Y! B5@^@"D@!!aB,@[B#@.?@?@"@" @? @!x!2_s@[T! B3@3Rb@"D@!!aB,@OB#@.a?a@?a@"a@" a@? a@!x!2a_s@wa@RR7A`4SC[DcEkF@zj|@!R/7GTˌdYT3A5@DcT˚7Rk)o@=o@@`̍RNr?k7T@Ro@Rᮬr@k%Ts@@$7@`aWl5R@s@@@^kA[D` SCcEkF\o@@`R lr?k2TRo@@LR r?k1TRo@@@R ̭r?k0TRo@@ Rr?k/TR! B5@>@"D@!!aB,@A<B#@.?@?@"@" @? @!x!2 _s@ ! B5@Y@"D@!!aB,@AWB#@.?@?@"@" @? @!x!2^s@7Rt@9k@! B5@4@"D@!!aB,@!2B#@.?@?@"@" @? @!x!2^s@o@"@9 ! B3@0b@"D@!!aB,@-B#@.a?a@?a@"a@" a@? a@!x!2a^s@`R,cHE`>$:T! B3@3*b@"D@!!aB,@'B#@.a?a@?a@"a@" a@? a@!x!2a`^s@8R@`<G5SRRrk!Ts@@`7@:F5R! B3@4b@"D@!!aB,@A2B#@.a?a@?a@"a@" a@? a@!x!2a^s@@0s@@/] SC[DcE@ s@@! B3@S;b@"D@!!aB,@8B#@.a?a@?a@"a@" a@? a@!x!2a]s@_`Rvb s@kRC!;;KQis@kЂRC!;;KFi@`@oA5s@Ssb< @; kA?qA!s`aRves@L@`ARqes@P@`ARles@ D,@@C@TT#M@BDѿq !**}s@2R!;C;Ki'*s@kRC!;;KhS[ckcs@.R!;C;Kh`Ra_u`Ra_`Rak^a`Ra^`Ra^`Ra ^`Ra^`Ra^s@".R!;C;Kh* R*37w@w,! B3@b@"D@!!aB,@B#@.a?a@?a@"a@" a@? a@!x!2a\s@Is@Ђ.R!;C;KQh`Rea~^s@k"RC!;;K=hs@B/R!;C;K3hs@kR!;C;K)hE`R:ajS^` SC[DcEs@ЂR!;C;Khs@kЂRC!;;Khs@Т/R!;C;Kg@RR R @@@s@@@[SC[DcERs@kbRC!;;KgSC[DcEB`R`B^8s@kRC!;;Kgs@kRC!;;Kg`R`6],@} } {FS@4@ehRi@ gUsAt`!Rf8`s"!T!R@0A9SA{è_րA!A!R0A9SA{è_u@e{!$EB!@?`T $@R!RS^` @!@6 Rr! ?qT@@`SAE{¨_րC@@@!8@6R!RRSfd@@ @G6 Rr! ?qAT@@SAARf@`@ q TSAAR{¨fARf`@ @4 qT@SA@`@SA@{ /Z/@@ @{è@{Ss0@9@(qT@*RRR[=gk@5 @sH6 B@[b@ D@!!a`B,@sB@b.``@`@`@ `@ `@x2`"@@@m Tc:"BD$R;@!|#ha T`@T@ h2@9@?(qAT @@zsc@`?;f"@s@@Tzs?@kJT@t@@j[BcCkDSAsE{ƨ_֜@\j;cCSA[BkDsE{ƨ~X"@@@lT[BkD[B[BcCkD`Rp_\| 0@9@(qT@{H7@C2҄ @?@?q)T!Q RA{_ք @dR_R{_RRRf{_` R 0@9@_(qTcc@#{S*Va2@9`@?(qT@vB2SA{¨c$@`c @ @_ {[0@9@_(q TSR3@ RX @"@&@E@MTn@xa!kKTC|6:@hcT@!T?AT4SA[B{è@>[b54SA[B{è_ֵ@ Ղ0786*W*\{*e0@9@(qTC@@R?jT{S@6D@#2҄ @?@ @a7@@a @?qT!Qa SA{¨b`@`_B @d|@`@@b_`e {S*[0@9@?(qAT@` B@ a@ D@!s!a`B,@ sB@b.@@@ @ @x2@sRUR)X`@"@&@E@mTn@ xa!kKTC|6:@hcT@aTAT4@ZdRXSA[B@{Ĩ4W"5`R2^L[ գ7{rTC 7CX7Rj*@T{ e*W*Wr`@AT{_{*NbW d {S0@9@_(qATs@"_xr?1q@@zTc:@07ccPCc@e@TSA{Ĩ``@@`76cF@#? 1TRRb:@ | A@h`T"@_TaR@Bc[v6D@99l^`:@97@xa!lA!@95SA[B@{Ĩ_cF@?1T`:@@_Tq$A:AT`:@@TbIcB_q$B:T@2b>*Ta:@66DqT@!R9R҂R@҅@f@f@@`@%R9RSA[BR@{ĨnfSA[B@{Ĩ X `pC@9@4_{W{S0@9@(qATc @DqhTd8@ 06_1 T T_1T_1`T`<@kk TR`8@B|$hb1|@` T@1*TKqm Ta8@! 6[Kc~@sP@xD@S BӠU @@}CTk86`9@ 7s @T=_1T`8@R@`Tq*TR*SA{Ũ_`8@R@?T`L@"|@KqTRdPC@@T R'eRr'@AT*SA{Ũ_ұ@@77Hb*SA{Ũ_s"`"T`@@TCQswTc@9uF*T"@9b8!D9TqTT[BcCd*[BcCRY sbTc@9 Ts Tc@9?6wd{aSB B@aub@ D@!B!ҁ@bBC@@@_|_|_c oSA@{è_uY!ҠB@ҀRc\{aS B[c@ @b@?avb@ D@!B!ҁ@`B@@ԝB||a aTbt ? @}a@R"r79a@5a@?a@#a@!*aSA[BcC{Ĩ_v7Y!B@ ҀR\b@@@9BCCbC@@ Ђ}Өx`Txd_Tc_TmTBBBAxb(T@Ax` T@_TB__֤xbTc@(T_@"@#@9d@ BTcR#9_Қ {S[c@@@9Cs6saR[@`6}69@ @ @VSA[BcC{Ĩ_U{S[U%@@@9CӓT55@@A@B@9_ A TSTҖS@bBa @?q)T!Qa SA[B{ƨ_ր@v@@ S54W3 `@"a@ @ a@` @!@!?! ^` SA[B{ƨ_cCw@9Tk+@ @y 5`U`{w@@}A @B@ ?U9 ՟b0ST&{d{cCTT#Bc4ex7[@ pUSA[B{ƨ_ S4SA[B{ƨBWxb #s`\U`{w 3$7$BB5aTx7@Td7@T7m T( T! }#VB@@@A@9CT@@9#}WA@ @ A@@ @!@!?! V^@ @ BC2A @?q T!QA cCkD+@_cC@cCkD+@VSA[B{ƨq[ҷRMRe#svT }U]SA[BcCkD+@{ƨV[ {c/@@D SC[@9@ T#}@ 7d__) T? T9zu@Tt Tx Tz5T/@W!} "{uT@"TT 6}#{`_T! kaT"k! ՟@Tsa?HTb}! B ћa/@u@A@9!!}5USA[B#@SA[B/@cC{ƨ_zuT/@RW@T@aT//@SA[B#@/@/@ @av !}Ӣ7@C @?(T@sU@9c  Ts}b"}s@ѣLaj3/@@A@9!!}6VSA[B#@^/@@TҀ/@W @kT/@#@"@9c"c}#SA[B#@!T_mT T$k!_`/@7SA[B#@T/@@TT/@V@88{ Q\@SR/@cRQa @?qiT!Qa SA[B#@/@\u T}!@B!`/@s @A@9!!}3SSA[B#@F7k!/@@"@9"ZG_⧟˥ {CSt3[qB@?`TTqT Tq`TqT@/.YB?@@ ʀ{ASB[C_Nq@ Tq T.q@ Tc`7w@?d TsX Da.@c@Z@_ Ta!$E!@Acb! @cXB?BF$C$BT@ @_q$?TdT7?* *!R\&@""@.@!@Z@ T @? _@ZcDqAT@sXwX@B%X@cD@/X@b%X_@?qhTTRaT3@Bxa_q)T@*XR*4`)T@Xs@*X!4@96@`aR[N@`AR[R@`AR[ D.@@!vcgY!;R=_C!;;RK4_ {SR@QX@a@9!!}3s@@!@9!A SA{è_{S8XS`@92`9SA{¨_ {DR#RS~!d9cyb~~@?q`*SA{¨_{S @d@cCw@9 T[U"@V@v B@9C Tk+@ @y u4xb#RRa{w? @TA @B@ ?U90V T&{c{e T` T%B 4!Tx7@`@"a@ @ a@` @!@!?! V[` SA{ƨ_֓@cCSRSA{ƨ_֓@u4@T3O@@a @?q T!Qa SA[BcC{ƨ_ֲOSA[BcC{ƨ5R R{!$4b Հ5R RՆ{!%4V {S*cxr`B@/[TG@RE94֖@@?qT$4sB/@a@ASA[BcC{ƨ_R<&E@!@`@!8@7\@! @A6l@?T T@9@ 5!LG `p@S`5G#CR @!+@erT#@t5  4! _\E97!B!8@A7@9LGxaxP@q@9?6@B_T"_T@9CqaTB@*!LG  @yR@@RA\@!@Y`ݚ@CK`@$@9qT@`#@#RRw@"5@?@}R$@9q TDd@!A Dh+@c @c6&E@c8@7R*#@dB\E9B7RBBX8@ r!@%4## Հ5R R{!%4 { 5!R RRqA:T @{¨_ 4'R @{¨_!%4a5AR!RՅ{!&4V  @ {S[c0@@q TRRK!X7 @@"qi T2@kT@Rs TB1B B`@@kT`yb @`8z`q TA@?qT!QA@sb?TSA[BcC{ĨA`@@?TD@chF$@!A@8B@d@#A@!$@!@!@`@Bb @72@_{S*!G[BcWRks:@@G@#@C@S@@c@ @ SqT@1@8_X_3 B5jU`SSy{y7A@_3*?T@@!!bUs!C!|BU4ӟH/T 4}b^@SC1"xx1T@@1%T v3qT~@ xxk%TC1@0xx 47@R Qq8 RA3~@K|$yj`T'Xcxb@ `]a^cBb@v@@(@@!\@a@6 @`6@I9A3@2@ 9 ?q TRRK!L< @@?qT!QA3@?kT!|@!BssbSy@@!B` " !B`ht8dxQ!@a|@Axx! ?t3qT!|@ BBxx_k@Tb ;xx{yp`%@zKaT @@4 qTC1  4#+`R@x1Tt3qT|@zx?qT@@@T`@!B!@k+Tay b @a8 {`q`TA@?q)T!QAsbSxy`@!B$@T"B@!hFB$@AB@B@"A@`@ b @{xqmTCqT`b@!ByB@b"@A@!Ay!B!@ ` @@?q)(T!Q@@sbS)TC14B B`@@kTay` @a8{a?qTa@@_T@BhF$@!A@@@@ a@Е` @@?qIT!Q@@sbST  RkLk@8BG@@Aʡ$SA[BcCkDsE{ɨ_@@ 4 @M@qWRTB78 +xxqTBqT@@5`b@!ByB@b"@A@!A!B!@ A@4!QAy@@ +xx{y~y{ @y@}`]v^`@; ;@R*5A3@Ҿ`R9`@K9ѓy^9`b@D`@A3@`^a]b@A3@`^a]b@A3@`^#A3@@yy@`@қR RƓA3@`@ɛRRA3@`[ؗA3@{`^Rb@A3@t`@A3@o_yy@ly@A3@hA3@cb]Rc@RA3@[_y`@A3@T`@A3@O R@K9Lf]cZ!Rd^Re@vX*v`UA3@@;`@RvA3@5a^B@_yA3@_,`^a@;j;@RRRZA3@`[Rb^׎A3@`@j`@9`^* 9A3@ `^LRAR R@R=A3@`@X`@9`^* 9A3@`^a[4RR(A3@`@v^*R*A3@B@@!`^c@ϋA3@_yy]`@!RA3@`@ƋA3@<A3@C@RhC@0F@_ǟ9|@A3@dZ#`Xa]b^hA3@v]ߞqT*R۔A3@`]A3@a^Rb@b]RRbRRRBA3@`]b@RRPRRR0A3@o`Xb^RÓb[RR:RΘRRA3@Ya]vZ*b^RR* A3@J`^a@A3@D`X@Rb[`^;8c@R;@?B8@!28A3@-a@ @92 9`@%A3@$`]v@DA3@RR|@aRBB@@A3@RR|@aRBB@@A3@R R|@aRBB@@A3@c]b@R`^A3@@c]!Rb@RA3@`@'c]!RRvA3@c]Rb@ R~A3@c]Rb@RvA3@a@R*R?q!A3@`[Rb^A3@`^aA3@b@`^R B@_1BQT!$E!@"$@BQBRRbRA3@@R`Rԓ ORRRR~A3@`@RA3@}`]RRA3@tRRA3@n`^a@)R`RA3@d@I9y^v@ 5A7A@;A!A7@;B@y @T@97 jپA3@K@I9v]y^|@`5V 9 [RA3@9R`Rt`]`Z"RR@RRR`Z@9!@9* 9A3@v@!$E!@ 8@tZ_qT_<qTDQӠ4 P@`p6L@7AҀR`RE;AEI9@9@RTR;@RKR2@RVR`RR"RB@@ \@2 \CK9_yB 9A3@g@ a@ _@ A3@@y_7_;_ 9`[a^;;@R*RRA3@b]Rc@ RVA3@b^Ra]c@A3@`@RRِA3@v^b]qTؘv^b];`@Ә;@R*A3@`^Rb@CA3@a[Rb^ؑbZRRORRR/A3@n`^a@A3@ha]@Rb@A3@a|@^`@!RR`RA3@T|@Q`[a^!RRRA@`Z?khTA3@?`]c`[`܇A3@8d^!Re@RRA3@-`Zi`];;@RRA3@`[wR"R,`^;X;@R@RA3@`ZfR"R`^;G;@R@RrA3@`[U`^;9;@R@RdA3@bZ;`]-;@RRXA3@a^Rb@9bZRIRRA3@`@,A3@"R9`!GRD"9a@_A3@`]A@?kIT@`[a^A3@y^`]A@?kIT@a[@Rb^vZT*ݖA3@`[A3@b@R`RՏA3@aZRb]c@A3@`@ЗR RďA3@`^ǗRRRRA3@{b[Ra^}A3@tbZRa^vA3@m`]RvRR@KA9qTA3@^`[v^RfR•RR@KA9qTA3@J`Zv^RRRRRv@KA9qTA3@6_yA3@2`ZR"R?`];;@RRA3@!`XuR"R.`];z;@RRA3@`[PRRRA@KA9qxTA3@bZ;`^|XvR*.;@Ra@a5`QA3@@`@RRA3@a^RA3@ R@yR`R`^?`[("RR݈RRRx`[@x@9!@9* 9A3@a[RJA3@`@RB8@!28A3@R`R`^`["RaRR`R`Rp`[p@9!@9* 9A3@a^`@A3@B@@!`]b^c@oA3@r`^9`a@wB<A3@h`^Rb]c@ A3@``[A@?kIT@`]a^A3@U`[1A3@Pa]Rb@A3@I`[A@?kIT@`]a^wA3@>!ҀRRLwb^RRRA3@)B@@!aXb] @@y q`Z@cTc^d@i@I9A3@2@ 9B@@A\@!2A\ @!2 A3@`^)`]@A3@B@@!aZc^ @@y q`[ ]Td@Һ=@I9A3@2@ 9`^a@A3@`@ۊA3@B@@!`WaXb[c]d^Ӗ@I9A3@2@ 9`]RA3@`@A3@`^a]b@cA3@b]Rc@`RSA3@`@|]v[ɍ*֔A3@`@|]v['*Ȕ`XA3@@a[`^b@vZGR*`WA3@@{a[;`^vZtc@R;@{*`WA3@@i`WRaRvZjb[Rc^d@L*`UA3@@V`WvRf[e]!Rd@R RR;;@@R@RB8@B28`Qj`A3@@@.aW @@y $qT @92 9aWRb[c^d@vT *R`QA3@@aXRb[c^d@vW*C`TA3@@`]v^G`@;C;@*A3@R`R5`]b`Z/"RRRR߆R?`;`Z:@9!@9* 9A3@bWRvZ`RRaR؊b[Rc^d@*`TA3@@bXRvU`RRaRŠb[Rc^d@*`RA3@@`@"RRRRA3@b@@@@yq`T@@@!79``^Rb@q*R͌A3@`^@ @6 @Eb@*̏`^%A3@`^@ @6 @6b@*`^A3@r`]ƓA3@m`@RA3@db[c^Rd@vZK*`WA3@@Ua^v]*b@RR*A3@Fa]Rb@A3@?R9`@K9;a@R΄A3@5`@RdA3@/"R9`!GRD"9a@f_A3@!a]RA3@"R9`!GRD"9a@R_A3@  R9`@K9 `^A3@`@DRRRR5A3@`@8RRRR)A3@a^@Rb@!RG9`^ `@B8@!28A3@a^@Rb@~!RG9`^ `@B8@!28A3@R̐BI9|@A3@BxB 9 RĐBI9|@A3@BxB 9`WA@?kIT@`Xa]A3@B@@!`[a]b^c@A3@`].A3@RR8|@aRBB@@*A3@#Aٌ`A@S@T` @@?qIT!QA@sb?TRAUŌA@@@R-@7Aр @9R2 9 @@ <RA3@QA3@OA3@@L cRR~A3@@A3@>A3@_K9;A3@_K98A3@_K95A3@_K92A3@0A3@.< D; ?҄RR4R*T}jA3@A3@A3@A3@A3@ A3@ A3@ A3@d@Rɓc^Rd@ēA3@A3@URp I@@A\@X6!xA\@ @`_x,!] @?T! _ @ _Ɖ _dE@ @@@_{RǏ@{@_{StnD[*v8B@@v4^D `snDsjCf0Fc^D_sA\!EG!@a9SA[B{è_!B <@4?<hC!@c8BB0F1Gc@D@@?e@ T բxa!BC@94C@97C@1aTG ) ?mT1G?1ThC!\D$_0G@ {[cGS:B9jC^D!@@B@5@`lT3@2G@MT^DҠzs @94@97@1@T Հ@skT2G1@TSA[BcC{Ũ_c0Fs@LT @,Tzss`@9#4@97@c@R"R@-T:BЀ^D@@2G3@@ T2G1TSA[BcC{Ũ_7@@@9q Az TR0R'*'@@Rs @@{SДA@BhF@@_T@@Tu}!C58B@ @AT@B@?Ts@SA{è_SA@{è_!@pG x3@xs`@?qT!Q@c  !A"@{!hF!@!@_TBx`!@_!`DAAT!E"@_mT {_A @6!xA !E"@_T_ Ȑ Ő" {CS*[ck*C@ Bv@@@@?T Z33 {#@@9*{s 6D@@C)F@ *B@@s?kTzsb@@9@594{s*D@*@s?T3@{ASB[CcDkE_D@FC)@@*z@_{S @? @q`T4qTBRÉSA@{Ĩ_ֵ??@a2@9B?4q*@ T 4a@!@3SA@{Ĩ_$Q?qTU@ 5#RzSA@{Ĩ_Ba@ \@B*`x65 @@ @6@@<@`4!@! CR!Bg`@\@x6@RR$ "@9@W!@!@4!@!@!@!@!#R0@}  {S[c@rG`@T@6@T'sTzsT`T@!@!@9?qT@9zs#73@94q T @r`T8@@(@@?qT!Q@@@@(sTSA[BcC{Ũ_@(@?AT\@a'7 @?q T!Q C@c(@@c@}d$@@@@x`@97@@hf''@'{'@{S3|@[@MT }@B_T@B}R B@zs@?qIT!Qz3SA[B{è_֪M {"|@ST}L@_TbzbSA{Ǩ_sc*#B[k5@3Т@"D@!!a`B,@aB@t#,@@@ @ @x2a@_@9h@@W@`hT@@@ @ -T&(RFrDA@94@9@@9?q@z Tzs @ @sTh6TB{s?v}@@jTzss @B @Th6aT#B@a@D@!`B!a,@{B`@*`/c3@c@c@dc@d c@ c@cxc2c @sc@cxc2cSA[BcCkDsE{Ǩy#B4@T@@"#B?q@ T?qT D@ @ ҟ„XD@ @ `B"0@ aB @)0@@@ @  ! 7@2 }`R~87R(&Fr7@k`Rl~t D@ @ `B!a,@ aB @),@@@ @ @x2A7_R(&rF7@7R(&rF@7@ҀR7'R(&rF7@78R(&rF7@v`R7 R(&rF7@7R(&rF7@ {SҁT։!Rbt~a"SA{¨_ @_T@xa__{S!$Rcd"h48t9SA@{è_ {  Ң$R b@C`_c C`9b@99 @{¨_ @!Q 5BB!pGA@T{ @@?qT!Q`@@?qT!Q`@9 7 @{¨_ _`@ @{¨ZX{S[@KT@?Tb_(T@ B}R` $@zs@€z3SA[B{è_ք"BC{S*[ck7 *"B3@b@"D@! B!a,@B BD@,b_b@_b@Cb@C b@_ b@z@BxB2b@a`@@b  `@84"B@t@ D@! B!a,@9B#@#/?:B@?@"@" @? @!x!2a @4@@!x!2"@!"lLjF"!A` @ SA[BcCkD{Ũ_!@"@B",BpGM:B'jFLA\DhCcEB@B!F` @?9_SA[BcCkD{Ũ_jFR@È5:B}Eو@Bֈ\DӈhCЈ0F͈F6G<! Ba,@" `RoB`Rilc {ScB[@o74@@!\@! \a@ \@2 \@\@ @%`7a@ @ \@$x6`@\@x6@@ \@x6"@@_@@b@\@Cx6@Aa@ \@2 \@!@@\@;7@ @! @@a@ @`@!@@`@!X@X@@P7@R@\@"c7s$@[kd@g@D@B@;Ic@@V@`G?B}?@55`@\@p6 @ `@(!8B|?@`R:b@?}?@ZkF@$b@c@@@B$@CjA@`A!@C@@$@@@G@!xb<@b@@@$@?RT F!BO W;@@Z*A@D@! @_{`A@:h3T?s}ӫT{{|@94@@@9 6O@@Zxa:A@6`7C@@`@5@  @B@@9 !q#RB*@|@@ @9q?T!Bq:@@9TqJTwB@"D@! _@9@6@@2@@ @aRcR*C)a @?qiT!Qa @@4gu6@ \@2 \kDsEBo@@AʡSA[BcC{Ψ_@ @@6`@2`@!@`kD sE@ 7(@a@@\@B*(7$@B@_kT* R??@ G @`z{{@ @@ `A@:h3aTc@GHA47@?@ @zT :pG ՟T{y$}ZT@97@@9q#T 9!T` @` c@u\@6`@$@@@@y! ?$qaTa$@$@@"@ @BxaE@q !Tzu\kDsEg@k Bs2@9@.b@ D@!*!R ab):}+q|TqTk0T T`b`kDsE=7q`T+T;qT@907`kz8!҂ @9 |@m` kDsE+?qyTB#xy Bbkz8Re@x93 @9?q``ATR"RAҠ`a@xC! 2a@z @@@!b@@`@ `@h@a@@ @`@!@/aRg?@TkDsE7@+C qG#O hAR T {|}Z4@97@@9q`T ՜TX5c@GG@4 zApG ՟T{y"}[T@97@@9q@,T 9!T 6@hw@\@@77;@ x|!S@(@k@T7@RK@RRWW@@dA *F@c@!hwQx|ciJR7@RR@iw @ iw׆[@76O@a6a@;@!hdxyN@@$@@@xa@@!@!xd!@9!6a@!@!@"@976!@T@9a06@ {FB@"D@!!a_`B,@`CcB@b,@@@@@@@ @@_ @@x2@!"}#*3!hb8b@h3@@96z{@@\@b07!Bc@(@Bc:@?@_RzBB@"D@!!ҡ_`B4@@BcB@a4||||||0@_ \@!2\RBxy4B/q@x9``@a@T?Ra@r" a@ `a/7a@2`  `@kDsE`B`kDsE??@2B@"D@!!ҁ_`B0@@/cB@a0R@r@@@@@@ B@@ @*7A@2@ _ @9qiT@B z{ڻB B@70B@ D@!!7@B_0@-B@R0r7@``@`@`@ b @@ ` B%77@2!FBC @ @d B@ ,T7@!A!@"x @ @ 2@ c6@@hb @\@`77FxyB@B(@' a@ `@`@x2`g@9q)T@QF_`q+T Q` @_XqHTc@bXbxcb"@F+#`@9Bc BxcJF*#\@9Bc BxcJF)#X@9Bc BxcJF(#T@9BcBxcJF'`#P@9BcBxcJF&@#L@9BcBxcJF% #H@9BcBxcJF$#D@9BcBxcJF"@@9bB$|JF"<@9bB$xJF"8@9bB$tJF"4@9bB$pJF"0@9bB$lJF",@9bB$hJF"(@9bB$dJF"$@9bB$`JF" @9bB$\JF"@9bB$XJF"@9bB$TJF"@9bB$PJF"@9bB$LJF" @9bB$HJF"@9bB$DJ!@9W@!DxaJ!B:@B@"D@!!ҡ_`B4@cB@`4||||||0E_ \@ x6@6@@E@!R@9*@!KS!|@!S@@A@ \@2 \A@ \@2 \`@}@Es@@@akz8*@33@W?b@@?@ҀR[x@[@|}@m`R[d@[@x}@ҀRQG?h}7?@3%3@]}@??@ ҠR[0@[@C}@@L ҠR_@@_@GQB|@e@L1DH:b AL @cʥœH CȓAT?q!$!}! L TT? q@TT?qaTAka8cBC ʥœ!ʣ!@@a#B“B CB!@a#B“B CB!@a!ʂē@ʄ`J?qTT?qT@9 @9 @9 @9` @9@ @9 ksks@} @@y}  @!$@8{`!}{ck*kF[A5@@ @S?ATG@95@@94!s!8B!@:@7!E3@{#BDkF s_v}ӫTxsa!@!,T @hv@@6U@@@9@@95 B@4@ D@! ҟv}Ӡ@ @@ T @l T6kFb@@@@#!@B3@t@@@a ҟ@ @@T @T6@7@E!5kFsEb@@A$*A@SA[BcCkD{Ȩ_ hv6@?qT!Q~@ @F|F8BBB@ƃ${2@Bn~@ @ xs6@?qT!QF{!s {S R[*R{`@92`9 @ u 4`@9t2`9 @ :B@`@9qiT@ SA[B@{Ĩ_6`@92`9 {_prS[*ckAT3hg{66f*@hC@A0F@9qTqTq`T3@SA[BcCkD{Ȩ_օR8B@@Rwr TslD@@T?sT{s@9@9kT@97@1T@1T@B@@;܀;@5@`5RЂ!G(B(!@!Ay?$q$CzB@@9a@!@qcc1"`"e@s!#$RRJ~ @`4T8sT{s@9@9k!T@97@?1T@?1!T@?T@B@@5R@"R!`$$~lD@@lTЀR!%~sE Հ"@"}WRA@xs}h"@sE"}JaRA@xs}3@SA[BcCkD{Ȩ_֠RA@xs}M@B(*"s3{ ?B?@* @{Ĩ~ {RrS*fB @@'R! r?kAT@@!@#*~sB'@a@AaSA@{Ũ_BRa|Cz~ {Cc*S[k )bBG@A@_axr$@sc@CT@@ @@-TO@Ty{| @9AT @T`5 @9 7 @1T"@_1 T@kᇟk䗟k *! !!4 R@A\@86OG@@@_sB_@a@Aʁ;{ASB[CcDkEsF_O@ T@(@)G@ X@@G@%R'T@@ @ T;@ ~@$kF a@B;BAc@'@H@C@@#@!@9!I@@)Z;B9kF@4HT @A;@O@?k)T Kw2k4 R@A\@?7r\@R_jT2@9?8qTGR@K|S4O@`{|@@!@!"_@RA ?qT c@ҁ@q|}}G@ h`@x| @6@@`@!q$@z!T`kc@97@@9 @B@9#R!ߘqB*Jt B4@@9_qT_q@T_q@T B!D@ @  ҟ!FBC @B@ T!A!@4x @ 2G@-RaG7@@xS@R!\@?jT@ \@2 \a2@98qTG@@@A@!AG|G@Qt@"D@!!ҡB4@B@6||||||0!FBC @77O@ "_@R@ qTb77$[@@#+@G@@R@4@@9 @B@9#R!ߘqB*sG@j76O@?`{|@9@7@4 RrT@9@?qBB#R*!&{@x[T@"D@!!ҁB0@ B@R2r@@@ @@ "7@2!FBC @d B@ T4Ђ@"D@!!aB,@B@.Ѐ!F@BC @@B@_@C @ _ @!x!2 T4@`RN{hxҀRF{`x]x# ҠR;{%;D|*%;{CcB@7S5ДB@s0G[҄@%RaT@9qT@@$@@@ @@T"sTzs@9AT@97@@T}5@1T[CB7@@A{ASBcD_[C* '[ǁ[{{ /߂/@* @{è {RrS*eBR @r@! ?kT@@!@*sB@a@A!SA{è_BRy@{ {S*!<8wR*\@8B@qhF@z@(@a\@!2\@(@@?qT!QSA{è_]{ {RSR4!Ҁ<w@8B@@yhFSA@{èz {!FS*[ @95$F@4B@@ @\@286C\"@@\@2@\ @(@"@`T@@ гjF`:B!@@!@@!@_KTq` T4jFzr@Ts:B @b@@D@TХЩA}JqG(R@gU)Gh` @"h`A!CC @j!|T? DIT7h`c2!@9A7C aTjF@A @SA[B{Ũ_֠ B@Ђ@ D@!!aB,@ B@.ҀjF@@@@ @ @cxc2&z@@x2h jFs:B@b@ @U@@TcзsGs}@#yU ՠjsA@hs` @!R_j Tˢ!CBG!|? BTjs"@!@9A4A@9?qT@?qT!Qs"TjFA@cC @#@SA[B{Ũ_ָj3S~MUzA@cv`Rjy{  @Q`"`4 @{¨_A!abxasa@ g @{¨c{S*[@`"@a^@`"`77`@`b@5`RjF@d|a^@AX7`@`zx@ RB ra^@47ax6`@`a^@!xa^6& @`5`*@ * 7@?q T!Qa^@7R r! a^SA[B{Ǩ_a^@A6v&@cTA@@q@Tks h@bZ@|*@\@[ @T% Tzt@`@9qTx{t@ @ @qTY43@94qT@(@?aT @4\@!x\@(@X @ kDsE @TиjFA @?q T!Q@T xt@?T@?qHTy@aT @A8B"@_ T@@&a^@cC`@@@?qT!QRa^@ r! a^SA[B{Ǩ_@kDsEa@ _x , ] @?T! J_6`@`КRjF@{СG!A@?`a@hu`@p x6{4 @?q T9Q!Q 4|xa^@9 @_qT?z-ya^@>*ya^@:o%y9Qo@(S'cks" RKw{ o @@{è{S*s"C*R`@R1|@ @?q@TP6SA@{è_*`@RSA@R{è| )R_raT @) CӨ&@G@_mT@9_qT@9_qT@9_q T  4"Tb@9E$Q_qDzT@5_q%!Tc#@#T T%b8KT_q@T_qTb@9_qTb@9EB`Bq@AzTe_qTe@9b(qTC@9E(qT_AT@2#@ C#b@9_q!TE_@T"@9qT@T{S@ @`aRz`N@`ARz`RM*R!"!GB$E!@B@#@B$@?H9_k `B"* G@@5XE9_$qRT R"R!,RH9` #Ra!R #RAR #R/R #R(R "RA)RG@H9`q!R R *k!R%R*e #RR G@@5XE9_$q(KT R"R!,RH9`R #RaR #RR!R"R4G!#R@H@Rb'R@PE9Cq@H98!R'RԼ*2 #RARd!RRʼ*( 1R"RA,RG@H9`!RR* #RRJ!R`R* G@@5XE9_q@T"#R&RB$EB@B$@H9` #RR. G@@5XE9_$q>T R"R!,RH9`AR R*!R"R4G!#R@@CRb'R@PE9Cq@H9 #R)Rߞq!RRZg*"5R! B$E!` GC@@c$@Cù@"R&RH9`!R RO* #R!!R -R'RG@H9`!R,R<*!R,R6* #RA.R #R!.R b.R'RG@H9` ,R'RG@H9`z!R,R*t #Ra,R!R`(R *j (R'RG@H9`a #R!(R #RA!R B,R'RG@H9`P #R,R!R ,R*F b/R'RG@H9`= +R'RG@H9`4 #R+Rf!R+R̻** #R.R\ #R.RX /R'RG@H9` CRRK G@@5XE9_$q!T R"R!,RH9`!RR**]* B'R'RG@H9`5G@A@5@XE9qHTc7&ER@c$@CKG@HA9? qAT@!8@7\@! @6l@TAT@95!!LG8`CPӠG@4k\@l@9@V T R T@y-R?kT6 @9RNG!xb!jXT @9qT@9 RqAz!TG@\@4@kG"RH9&R`cF!RR8* #RRAR'R.* #R+"+RG@d@H9y`t@9qT(R{R@9R_qc+R"`T%R#+RBGB@Dd@CEH9CyA`Dt!@9?qT(Rb G@@5XE9_$qH T# R"R+RH9`S #RR .R'RG@H9`F .R'RG@H9`=!R Rٺ*7 #R RiR@9"?qoTBGR'RB@C_H9@`$!R` R* -R'RG@H9` -R'RG@H9`  -R'RG@H9` B/R'RG@H9`" #Ra&RB$EGB@@B$@H9` RA&RG@H9` #RR!R"R4G!#R@@#Rb'R@PE9Cq@H9R6@9?q T?q5TcRCG#R@9k@@?TR64cFߺqG"R(R@H9`#!RRcBd8@2d8=* #RaR #RAR R! ! RA*RG@H9` R'RG@H9``! " !@B&  $ `%" B!RR*d #R!R!R`R*Z #Ra0R #R!R #RaR R! !T Ra'RG@H9`B #RARt R'RG@H9`5!RRѹ*/!RR˹*)!R@ RŹ*#!R R* G@@5XE9_qT"R*RH9` #R!)RB!R R* #RR8 G@HA9? qrT_@#9w@*G* B@@\@B(6R@0R"#$RBGc$EB@d@@C@$@_H9kT`@ #RR  A@R" @6!@ @!<@A4@5RRG@;#$R@c$ED@`@$@_H9kT`@5c6&E `@!$@GRR@@$R@C@$@_H9kT`@cFc7&E@@@@(5)GRR@&E$R@@C@$@_H9kT`@cFw G@@5XE9_qTCR"R*RH9`h5G@@!E9 B@9G4_qbTRRQ*W G@@5XE9_$qTc R"R,RH9`H #R!'Rz #RRv #RA%Rr!R%Rظ*6Ra "R$z #R%Rb R! !@2 RA'RG@H9`  #RRR #RRN R#RG@d@H9y`t@9kaT(R!R %R*! ЀR!^@RW@bG@9_q"@mT@\@cF@>RT:5&E@8@`^7G@\@!]! @\6l@gT`oT#RRL84%r Tg@bqATR!RR7X**Rӷ"@9GcB$E*@*C@97 0"@`$@?H9k4` *cFsHG@>@@?qIMT!QJ9>G#R@`cFkGRR*4" 4 B  Kg5?q*Tk@LGka@8Ba?"jTR?qjT*RWz&@@W@LGk`@8 x`? jAT'R*Ga@<@ @6&E@8@}BSO}O@DRRR&@k@\E97!!B!8@A7 @9LGxaxP@q@45k ҡGR6!@!RNG4@9At! ?kT@8@t? jTt/4 B *. Rr .Tq-TqUT9R*,5G@"\@SB @S6&E@B8@S7 R**! !  RkGնB  R(RG@H9`R@0R@9R"x_q$Vz`,TR4@9x?qVz`+T5G@T`k@,;@]C`!RcFkGsHBGR&RB@CH9@`\E97!!B!8@7G LG!@!E9xaxP@qqG@B@2BT8  ՜QCRq!TCR! !GBR@!T@W"aCR!`=@@T@@?qi4T!Q&EVT8R@ $@k@T;$@T@R*G@@T@@(@T@@9R5|{  [4I#9J*Kw@*CBRCk@"B@B`r #RR@9q&TcFWK@RW:&@@W@c_q@T TB@4RRR@2@9$qTR@ @ 2@9$QqT @@AG@!@ @@ @@@@B92@94@ @T@R@9!G!$E@!@!8@A7\@ ! @A 6@ B\G@cFz!! B4@ @"D@!7!B<@*BR@"R> |A`|||||||@ @xC! 2@ @@@!@@@ @ @@9qTkGr@9`86@B_hT"_ T@9Cq! T!B@*!LG  @yV\E9a7!!B!8@A7_E9a 7#"RrcBa8@?iB`@**h R(RG@H9``\E97!!B!8@P7 @9LGxaxP@q@9@5!!LG `@P"Rc A@#!Rh@9qT5c@R@9Lcks@"@B_h TE9CqT#@*aLG  @y1"R=cRCrBV_k`lT_@9`H?6@B_(T"_mT@9CqT!B@*!LG  @y4 xcF!\E97!!B!8@7NG@9z`xP@qGC#R !@!DRJ2Ϭ#RRIG@/ s@^! ! A`4@y-R?kT6 @9RNG!xb!j@TR Tb!()`5*@9RNG!xb!jT@9 86@B_H T"_͗T@9CqATNGB@* @y@APE9RR #@A %Dx#@P9cFTТ!(5@9RLGxb? jTRA74 `s"@95NG`@Pp!\E96Rh@9qaTkG0 B!B8@%8@\Wӥ\W[@[Rb!( 4RV T*wRcks! R!0~R84s@<@@?qT!QG @?<е @ ks˵¯ks@<@@?qT!QG @?< cks R {[SGckBe@&@ҡ`@x@C@r@9aTq@To@&TRDLG`?$j%TBLGRA`!jT`@8cTq` Tc@cc$G#c@`?֡G!@4q TqAKT$@G@ c$E$R%PE9`@$@k 4 ՔB*@@AʡH{BSC[DcEkF_7`@9`"HA9 C@v5_ q T5*R*@07xzrTq T4@9q@ TGR@CKb@ݶ@9@?q *T@\@C@@vV`R@**C9A*`@9qT*?H9@9qTo@TRALG!@!jTc@cc$G#c@`?a@@5"HA9 C@7`@9`RC@"l@_Tb@9_qTb@9_q T"\@sB5B @46&ERc@c8@C47MGRR@&E$R@@#@$@3`k gR CGC9R@T8B@@xx@)a@6a@ @!<@A4@CRB!GC@@\@#c @6R$E@8@$7a@R!!2oC@ RR#9 *\E9R7RB8@icC@G#@G@"$E$R$PE9@$@k 5`R H9?TcA`R@r?kT#9R*GRC@@*zw* 6`JA94@9qT`^@` @ 6Rr$E@8@@ 7R@@@ 5@@@87@@\@@RGgDR@*@!;;;@ @ @? @qTR? jTKqTqD@TB @! R!B@_BB@B@B ޤ*sDGa@R@B-GRC@@9C@q@\@@vTV`@f*t`^E9R7RrB8@iB@9qT*KqT ңˤC@g#R GQ@9?qTs@"RG@v*ޯ 5?qT`^@ @@6!R$E@8@7 KqT@@ 5@ RRC@b@9s@q TG@v"R*`4`7qRAz RAz*C9Ҏ* RRG; ;@RGfDR@*@!~KqTgKR!$Q?qT@@5@@@?78!\E9R7R!B"8@B rBVzab@R!@ab#9*`^E9`7B8@!\W6 !`Rx {CSB[ckgRru@9@?NGqTG@\@! @~6'E@!8@!~7l@?hT#RRs $Xuxa ֟ q`Td9T !*1ATG@`@u@9G@JA9$qTy@9z ?qT@5s|'Eb@r@W@?T:@@tZCQqHT`@9q@T5!RqZE9R#R_kj T T RA R J9b@@9q TsF+RB*?@@A0{ASB[CcDkE_a@9G?q@$Tp@?Ta_8?(qATl@b !?Tc"@2kTHA9a @9b/5?q,T@,5XE9?qI,T`G@@"z5XE9?qyT``@9q T`*G@! XG@HA9A4@#R!$E!@!$@H9?k`!G@JA9qJz~Tj@зv@TRG'E@@#@B$@?H9_k `B"*`@9G!@"4@4#8@_kT"HA9_ q`T"5qcTqT"@€5 XE9qiT3`u*quG@@y?qTHA94!R-RH9`cG@:@"@?qlTG":s!8#R!R@@H9!`Nu@9qTqx` @Tq Tt4NGRb @9xb? j TG@HA9? qsT!!?duTp@!Ta_8?(qtTl@!B!@9a4@C9?(qRTG@9T@9T*qaT@!l@e@l@ T@kaTbAR@Tu@9G@ HA9c5`@9qsT"@s5 XE9q)sT3``R*G@ 8@4" @@ _8qTRs*еG@ HA9$q@T 5`@9q TqT`R"R#"H9 ``@9q@OT(RG@@b5XE95BQR`@9?q`T.RGc$E@c@$@c$@?H9k `c#G@@N5XE9? qiNT`a@9G?q@HA9kTu"5?qeT@be5XE9?q eT``@9$hTG@HA94b @9c b@8@Q_|qIziT_q T_q!T`@9qCz`CTQqJzT\@a` @ 6R'E@8@`7R G@! Ђ#R@c$E$@c@c$@?H9k `c#Mc@9Gq@ eTdB$EB@A8@%tZӦQqIT! Rq@T#R,RH9`5c@9h Gq@@\Ta$E@8@tZQqOTqT5"RqXE9R%RckTB4? T R"RH9`"@9_q@7T+R G@@95XE9?q9T``@9Gq@!T p@T`_8(q!T l@c Tb"@2_k`fT` @9qAT"@5 XE9qT3`!$E!@ 8@tZCQqH3T!G@8!@_q"@5#R@9R$XE9%RqBkJT R4 Rc RB#R"#H9$`@9_qT*R `Y*/*G@8@p4 @B!B_8_q jT?quoT!Q8@C9!Q_$qcT@!R!$E!@!$@H9?k`!G@@C9(q`QTqcTAl@*?!T (q Ts T`@9u@9sRR>*1TlG@@)@y)5l@cOT!B!@9a5LA9}4_R$*1`TR`G!@"h@#x@,T#t@_@,T"R"H9RG".R@#@ `c#;RRRAG'E@"@@A$ P)k@T`HA9I4R@B$@H9?k`!]*`@9$TG@HA9A5Ra"RH9`a@9?kTs *R`RRRG@HA94SGR@<@ @A,!T ?qT RrB  R_kTBR;@C@B$EH@R@9 R_qDCzDDz T87'R@87";@`ha8qFzDzTR%@@H9k`*RRRG@HA943GR!$E@!@@!$@H9?k`!*`@9w Gq5@@2TqvTs R,RJ9bI9!2 9u@9$ ^ Yq@T@cB_$HTsq STšG@4@48@?kTu@9\E97s{Ba;@sF!7NGRu? j@4;*1TS!*R`Os *R3`KPE9"R9)R#"R!$@`P9@_<q9TG@#@95jAs#R+RH9`/s!R!RH9`)@@"$Ea@;H@@%P)_k@T`%@WI96l@c"T8@4 @A!!_8?q T4@! ! _q@ WGR@`@sdR!$E"R!@!$@H9?k`!<q`T R!DQӡ4AP@a7 R"d$qtTR 9R!ҧ@E9a4HA9?qFTh@x@_ETPE9H9R$E E@RAb"Rg@x%P9@$@`?k!5/87NGu@P\a@9?q@<T5?q`T@5ZE9?q)Tb<q`=T4 RG@HA9? qT?qATb@9R!LG#b#jDMzTb@8$b$jDMzT_qDJz T@"5XE9?qɎT`"R!R J9b`@9qATs *RbuBR R"(R H9#``@9qmTs *R3`hR!R(RH9`a@9?qkTs *R`[`cR"R#"H9 ``@9qaTs *R3`N $@B5e @9RXE9Rq!kKT`=s ,5@-R!$E!@!$@H9?k`!/G@p@?`'Ta_8?(q'T@B5XE9?$qT`HA9?q$JzT@"f5XE9?$qeT`4@\@_tTc@9a@!?$HtTR *!@` @9qMT@'5ZE9$qi'TbB@9`4@@rAl@Tu@8 QT*qTvcpTu@9u@9~!(!|@3"@:@"@ G'E@@ G@c@$E@@q`T%@a@9?q\T`ľu@9U`@9qT@5d @9RZE9Rq?kTb_<qTl5`@9DQ`4R@P7!#R e@E9H9A$4#R@E9#4@#R!$E!@!$@H9?k`!"@65 XE9q6T3`{8@5a@9?qeT!x?lqTR9DQ 4 P@7.d R@p@@STAl@?T`^!RH9`B+Ra @9?qJTsR*R`QR`NR#9k*A@DT @(q Ta>GcR@9$.RB 8@r @<$@h"83@aRE9c9 #@a@?dz#`R9@9?q@T?qT?0q`T?Tq T?DqT?qTac0R# @ tb!(RBaz bR9`v@`4`>@vqT`.@kD!R#Q@`R9@`@`vza rT66a:@`"@?qvT"b:~!86G@ @ 6G@ @Q >q@DT*SA[BcC{ɨ_an@ 4G!R@tb@a9 bf@t aAyR?k uTsJA9*G@ @qTTpqT|q@T I9x 9`n@`T R`J9`.@@9?qzT!RF9a9`b@@9?q bT`v@av~4`>@`5`.@@R(R` @9RC@B`"jMz!TLG  @8`"jMzT(q fTo@_eTBARZ_TR ?q?{qq{T@9?qT@9qT`@@`RK9&E@8@7_@^ @^6`@z @@@`@2` RSE9RRG3#R3@``RE9` @aR9`6@_4tbkDsECR?Ӛ??@T_84q`,TG@G@`FA9`U5`@ytb@q^T`Z@ @ @9?qTtb@6n`Z@@ @`b@ @@! @ GRR!R@RE9 @#R3"R` PE9 @#P9 X@ "H9`^@@ @6&E@8@7kzn@@}Ts BӁT! @!@!!}!mT96`9@57{ @T`^E97B8@7 9qT5 I92 9@A`n@uT`^@@!@?Ta.@ARW@GRRt@s@tn@kzC9G@`.@aC9?k;T@9RR_pq`9kD`b@TaRE9$Re@ "@a#R%dJ9cz"`R9`v@avq4`>@@@5`.@@!RtbvJ@Ga@ D"dB9"9\`@`@p`@`@XP`@ `@`@G`@ؖ`@``@iT`@@ՖG`@ͤ`@`ʤ`@ Ǥ`@@Ĥ`@`@`@`@`@i`@ f`@c`@``@͜a@ " KC"X@#`@C"<@?<#T@#4?T"\`@b@aRD\@@C C Cp@@_cClt@6@aRt@BF9ҟZ9"Gt@a@bR& $@?<9`@t9T@!$E!@"$ 4G@"X@ X 4Ay yq5TxQ<qHT#P@*R#,BB@@9xC9D `9_8(qTb@a @C@G! 8?8a@\@ @ :Gk@v ARx"@9aAya4?LqJT`bE9@_q!! A@A\@^! @^6Rc$Ec@c8@]7qG@v`^@V @V6R$E@8@U7ysG@Rq`$@zaeTa^@ˁ"! @A"6R!$E!@!8@!7+GRR@i@R`q @9@IT #\@BBB@9_qB=c @=6c$Ec@c8@<7B2!E9cR?qT?qc,6#RkDcdG@`@{#`#9T`@@TCQ{bTc@9*?jT"@9b8!D9TqTahTkDsE 9_R\`T8B@@xs@o" @6!@ @!<@A4@BCR!G@\@_B @b_6RB$EB@B8@^7GRR@@Rq @9@8T E9bRqTqB,AR6#RkD@@!2@&`>@@4a&@QG`>"`8? 8@`@l@?T_0qTDxRDqDCzT!bR`9@.R!Q`>@5R !`ڔG@`b@an@`T`b`R`9tb@aZ@ R(R cbaRE9@9dJ9$a!q@`b%@dR9@R(R` tba@q.R-R QaRF9`a9R S{TQ_E97B8@7 a^E9Ra7R!B"8@B rB`@@WE9"R9`@@a @?qWT!Qa G@46!RSA[BcCkDsE{ɨ!(!|@BG`"3@a:@`"@C@R yXa6@`^@T0@9?qT@@9@4`n@A{T6bI9RBxb 9G@t@8`q*?TTqT!R`.Q!?q(T@9 B*fF G@q<ThTq@CTqBTv"R`q Ty `#@9"R*Qxr! AzBzT`@8Qxr! AzCzATG@`a>@!4"R R!RbF9`9aB!RbR9G!R'.RR@r$(R@cRE9baB@i@c!@hB@ ejz)!@gz"dz!`R9`.@tb@ @TG@WE99`@@ `RK9@9SE9RLG*` kaT(qT(q@T @8`"j`TqT}@R@ K9*(R{!|@)R@{!S9 TV{`Tc@9?6=#\E9C7D2cBc8@iqTq/T"R`z dE9?$qc(!(F!qB@@A\@A! @6Rc$Ec@c8@C7G@aAyR?k &TRR]G@ "\@B @6Rc$Ec@c8@7G`R@Ay_kATy#RkD76#RkD4SA[BcC{ɨ$E@`@`@ `@`eTkD 9Ctb?`@@qWE99`@@qR@9qRT`Rtb`9-!\E9R7R!B"8@B rB`^E9R 7RB8@B rBJ@R` (RkD`>@.RGQ`>_ 8@ @Q kDacR#!|@G`&3@`>@z&@xB\E9R7R!B!8@! r!nB\E9R7R!B!8@! r! B BAZ!B @!@Y!!}!cT#Z_ @T@96_TD@9F *?eT"@9bb8`!D9Tq@T?AdTZ#@#?T@@@TCQZRaZ_TD@9 ?TZ?_TD@9?6aC9?(qTv:@V5b^@!B @b6B$EB@B8@7RrcRG@3@aE9?qT@`@G@\@`! @ !6$E@8@ 76RR* !G@`RH9.R`4C@9qa8TG@999*@aCR#c6ARRG@9!@"E9_qT_q22`9\E9R@7RB8@ickD.G@Ay5ւ`!R`aR##RRҝ@@9q0Tq`TRs&E@8@@ 7G@\@ ! @ 6l@CTT#RRG@y9R@9q Tq!RAzTG@H9G@E9A4PE9R"#@ 4x#P9sEaR#}s̚s@AGRR#R@@ @ kDaR#hc^E9Rc7RrcBc8@iB3\E97!B!8@7`@9LGx`xP@q4Gk@ \@9a ! @! 6&E8R@!8@ 7NG7@G;G@l@? T?T4b@987NGb7b@9#RNG b kT9kDb8b@8#b#j?㗟jT !/G@)sE'\E97B8@^W@984 b@"*v`Q{r#RAzCzT`@8Qxr! AzCzATG `"@3`@yY5\E9@7B8@_WӟG*R#R@ PE97d@ %x$#H9"P9@`@986@B_HT"_ Tb@9CqTB@*LG @yk`@9@5ЄLG`@Pd@@H T - T`@9q T7@*  @y6@GNGb8G|@l@bT@987`4@9;@ `8aT@94#RRc??TH?@B@B_T"_MT@9HqTB@*@`x`R)GGG@@9_rTb@9#RRa#!( ssl ks`@@5 ksWE99`@@@~`RK9;5 {SsG`@t@"t! 4<@A 54@,\$@A@  pB@B@D9!lX99`@4@t"0@9_qIT!@!@94!R"Rt9%$E@$@%`@TA9C9_k`TPA9 5H@?T`B@ K`\@!*Rb@lc@c@H9Bl*SA{¨_aR49\@"Rb0@9_qT`Bb@$ED(@c@b$@B B b$`*SA{¨_R9SA{¨Ҡys@a^@! @6 @!2 J9RRŕ`#R*SA{¨_ޔ {StG[6@@8@qMTA @Q@8#`8CH9@@aDC9Q@$qT7@PE9c5@ a!R@CP9W`"RSA[B@{Ĩ_@ "R@CP9 qTsG"R)Ra@"PE9C""D@7`#P9SA[B@{Ĩ_@8@ 57@@yq`T@9q`TxlqTR@9 @$o@CHA9sGb@cCH9W`SA[B@{Ĩ5@4@A\@aT0@9?q T@@94 @9qTR@9cRCH9W`@9 R_"@B_B$GC@#@_ *@R *R *`R *@R "@9b8!D9@TqTT&R@T@9 TT@9?6 BW @@}cT969@7 @T""_T@@TCQ_iTv֞F_T"@8b8D9`T@9qT_T*RL@T _T97_TDQ4P@@7`\E97`B8@!\W R {[vucwGS&E3@@BA$@`@d@cJA9k`$q@9 TqaT@8@@7`^@@ @6an@ ?( T &T#RR{G @9@tkR`9aRG@JA95b@Tрf@b` %G@E94C9X@9(q`T:@4RGG@JA9qaTj@z@?TC9J9(q`T:@4yR3OGax!jTRE9RR!R"#@%z#bR9kD q Ttb@9q` T!RJ9tb յB@@A!^SA[BcC{ب_ցn@& 5G@`^E97`B8@7ky @99OG akDxP@qT` %d R`9aҀRxG@@HA95@`@T@d@@`` %wG@@E9@5AR(RAH9S`!R!RAPE9fR_H9R#$@A (R&Ex$S`CP9n@(TARJ9b!RkD`b @9qT (RJ9tbGA@9?lq@ T?qTsRA 9!@:* 5R*r Tn@R@ ˡR yR"OG a@8@a jT&EB@B8@b;7^@b:B @":6GT?qS JT#RRGsE@7 @986C@c!T#-T@9dqTky`9OG** kD@y@7dj@z@?T@yqTX@9` '*@$ RJ9ky*9OG bkD 7K @95ky9OG @y@6kDG(RE(RsER9Rr T`s|GSOGn@ Ta@9R a kT?qR$@zT @$T?qa@9T?qaTa@9 @s$iT?qbBBT `@8$T`@9qATsaT&EeOG@B8@5^@  @6T!T`@9 5OG ` 4&E^@@8@! @67`@9``8ssT`@9q`T^E9 ҇7B8@7s^E9`78@7a@9 Raxa!j`@9?6@!?TA?mTa@9'qT! *OG@ x`ReGF4@n@cd&EcBGg8@OG )@^@a @6!9@a7a@9a8sTa@9xa!j`Tb^E9!7g5` &G@R#RG@n@N` Ta @9!{a!`6OG@9axa`6aT>rGT@j6 @9@`?q!Tb@RyQbG@al@?bT`@9tqT @9tqT9?aT`\@ @6&E"R@8@ 7d`@Ra !&#cc|@GsE@*` Ђ'&E!@!8@!@%5^@ @` 6n@@?(TT#RR!&E@8@!!5G@\@! @6l@?hTT#RRG@@9@!?$@Tq TqT9OGR@@9q ` AzaT\E97a!B!8@7X@9 OGxxP@q4 #Rs@Re`41TMT,1@TT1T1TG!R@H9G@^E97`B8@ 7 OGA@9xaxP@qTG R@J9^E97bBBB8@bſ7xP@q4#R @9$OGRaB _kT@8a_#jT?qTG;@@`\@ @`6&ER@8@7G@\@! @6&E!@!8@A7;R;@*a ЀR!@'`\E9 7`B8@B\W2B@9" 86C@cT#-TC @9dqT!OG`*  @y 7F@@986@B_T"_TB@9CqaT!OGB@*  @ya86 @ TͷT`@9_qAT"OG*@ @yR@Pӄ@@9`5!OG `@PDksB@95 OGb7 1TS(1 T1T1!TL@@9$TQR?jaTC@9R!OGq!c! $BzTqTqT@@9q!T9OGR@ @9@@9`z`xP@q!T9)rT&E@8@!qT@@9R9OGqBzR ` AzT.\E97`B8@{_WR`\E97`B8@B\WBS<R:{[uSGa@"HA9_$q` TR"9R!;s@`JA94`E9 4s`C9(q`T`:@4RG@`JA9qTaj@`z@? T`$E@J9`RE9RR@`cz"aR9`@'@tbk`"RSA[BsE{Ǩ_`b@T`f@`b` ( G@`E9 5@R`J9tb"RSA[B{Ǩ_an@|4Gc@93@qTR`9@9wx&Elq<@TRrTcC `@9q@T C9$q Tc?H9#`"RSA[B{Ǩ_`G$E@@"RAx@9ROGb`B _kT@8a`_!jTq;@Tkzy c@B9#(7 5`^@  @6an@"T@9 87OG!{6  @6c5`@9Ga8 T#RR G&E@93@@[ 4*d `^@;@ca^E9 7AB!8@!7@9qaTC 7`^@@ @ 6an@ ?( TT @9c5OGc *5k;@a^E977@!8@7@9 ROG!{!jT`^@ 8@5@R D9|b@B_T"_T@9EqATA!*OG!@Axa!7@9"5OG!@a7cCkDRr T&EG<@@;@c`^@d{tqTR` cCkDG&E@93@@`^E97`B8@7OG!R @9xb? j @9C?6b@B_(T"_T@9Dq!T@*OG@ x` *#RRo&EG@@cCR&EGR\@3@ {Sst[`Gc*B@"@/Ay4`&qTbq ! (!(!_$q`T_`q " (B(B` `(>`G@yvR#&E@8@ 7`G@\@! @6l@?hT`T#RR@9pqTsGe@!R`)RH9`B/B@A"{@SA[BcC_\E97a!B!8@7`@9LGxaxP@q`5@9pqT&E@ 8@tZ_<qTDQ@4 P@6! R!@|kCyG#R !@!+@ T9@aR:"By_kTA _@"_8_q@T @ 6&ER@8@ 7R@@``G@ \@` @ 6&ER@8@7*aG%@ @@ kD@9@86@B_T"_T@9CqaTaB@*!LG  @y! _$q!(T" B(R%@/aTҡ@*`h ? T@95a!LG `@P~\E9R7`B8@B\WBS \E9R`7`B8@B\WBS \@T`c"Rd  )`G@@\@ @@6&ER@8@7%sGkDe@/!_8?qT @6&ER@8@ 7R aG@%@@RaG%@A@yR?kT@+@9|qT`A@t@\E9R@7`RB8@! r!CA @9?qaT*kD _E9R7`B8@B\WBS`G@\@0 `kAkc{hCS[utck'mIg(g/mg@C C @B@@OZ@S@`B8@@7#cd )igA&%f` @+ea @!a BO@@A-SA[BcCkD'Fm/Gm{ʨ_!fC@R*R!@@@@rTs$ @T@aT`@`G`D`@ @#@@{ ceG|"@fD_@@g@k~F!@bf CBC"b@BD!@@@ @% @@@! C@@bdC@B,DC@@@@ TbGFB@"BC@@T$`8G@ b CCRZBARD@9qa@@9@5`D@@:@:@@7abU!@@C| )T@@rT`P7@7X6@ @ @a6@@ @6R@5_ @! BA CBF!E`B@ @_, T)@ CD@@@@B{GCDd@b@!˜F$CB@D@@B@b?r@!@! @A @!@!@A @a@AT# f d c? **A&sE&%f` @+vWA!G"@A\@a! @!6CRc$Ec@c8@c7B\E9R7AR!B!8@! r!AfRwGfRq# f d c?Ơ)*sE$ 3T@@`@Ta CR!+B2A@ ,T qT Rr! R?k@TCBRK@Ra @#!a gb'ARR2a@ A@@ @!@KLC@RT@@,@@@5C_ 5?m!`@ @@9qT6sC{C[UcWCkB3` +z SR@@@s:@74 qAT?B+#2@?qT!Q{ASB[CcDkE3@C_A` ,` @,??@RH*RR"RA+nG @ @rT- {C[VBScks[@Wb3TC@9RbLGAxa! ?kTe`@9@x`? j! TsATqXBS@!@a `*i )+ #@OH"  RR"R@@ @X6@0@9?4q"T |@9 5CdcLG`| )6@T`@9a`!7&T@9A`&6qT_8qTCˁc!` 1 cLGR_8axa! ?kTZ_)T@_8@x`? j@T@?q)4T!Q` `,ւBW@@A!:{ASB[CcDkEsF_87@{LG|`67T@;DK@E|@9<87@LG| 6qT{_T|_8;@q2TO@ @`6,!T ?q"T Rr  Rk!TO@BRcS@v BӁ\! @!@!!}!C(T096`9 7s @T`_8qAT;@}@ hT`@9A* LGB@xb 6{ RGrAX#EHd|8@@T`R!(! D9!|@ cbTd@9@@Dd8D9`TR-fn@6d;@a!` /K[@a@9Ga8{z`cR!(! `D9!|@B_bTC@9`d@cc8D9 TR @` ,&O@@?qT!Q.@@` @!6@ @!<@4@ !@(qTk"@-@ _T!@ylR?k!TO@ @` T`@9A{ *!LG@ x`7d@9#X˔Xd;@vA;R! A(@YrA!E"|8@@T R{+{ D9{@B_bTC@9 d@#c8D9`TRf@@ 6d;@XO@ @<@@Ss"`"T`@@TCQsTc@9XF*T"@9b8!D9@TqTTARR!G!@!l@` cK*.oRQ`sTc@9 T c@9#?7sTO@ha@a@9;@Ga8{sO@[ R{+{ D9{@B_bTC@9 d@#c8D9TRzCac!d` -'7Xd Z |_8V{;{C[V’B @@C8@qcT"@_ TS @!@T s Tb@9_pqaTb@9_pqTTc5 RT=C8iT#@8pqT(T9_9֒B@ @B"SB:@c5{A[C_c@9pqTD8SB4`'&{A[C_B 2a SB{STSЁG`B!@@ @4qT#0@R%C9'R&C9"(R'H9?P9&T9%d9 4y#P$9#R#?0sB*@a@ASA{Ĩ_ 0@#R ?0[ <@?<c @A?q`TGRR@#R[BA,!T ?qT R RrA ?kTBR @@By @?qIT!Q @ @!@[ {CcWSG[ksO@B`@#@l@4s`@) @\@A! @6A8R*!$E!@!8@6\E9@76RRGwaR{@ Rs@EG@* *W{@ *r6TG@@y?qTB@9,@_lqT_tqT@?d@z!fTA\@c@c@T_qa(TA@94\@bBB @"B6BB$EB@B8@A7@"tT|87@LGa@P 15s@@ 5[S@9*[@/G@,@c)/T@@9pqT\TGs@`@yq`TS@9q'T`,@@^:q!T@ @9qT@ [r[@Ts@@9_q pT<T_q pT;T_qsT_q:TG@\@! @A6A*!$E!@!8@7RR[tr[@oTw@ cTt4" @#@"@HT`ڡRRr|bs@@d @! èT R[Ir[@w@ B}*s@Vi!TB@9R@"86*rTjaT! @ @!4B @* ?9 @!@2# 7)A!T @)s@*B@9"?7@s@@9 8s@(!@A!@)@AR! @) @@`,@S@9*S75 R 8s@_qTA@9@?qa*!T4\@@@@T@{@ 5@@9q6T q@jIT{3@?`@zTO@@_눂TA_8@ ?pqTDR_8pqT*"RAT (T_qT?@*cr@TA , @_815$_8@ ; џGT8TxTxGT@ 4f@sR@@9 8s@D* Gzb8 s@s_qT @)TS@9@ 6*[`[@*rqA TA R! 6{C){@C@A @Z A?T @|Sd2 $8s@@9`2 9s@ss*S#5`,@`@RLGb? jTA R!7[s@[@B@9@B8@ȿ68R*C!@@6T A@9?(qT@s@@9 8s@_T* @3 @ @3_KT?9RqR @r" @)  @"@** @Ac5TO@s@?TBGB$Es@C@?T@9_(qaTb$@Bb$dbB4B b$b?aT# @B RRc# BBd.@B8@_jT`bB95aB B2C`@yq`hTqnT$q`^@@@uTF 3GO@!]G@RRP`f@Bs@@!@Aʡ{ASB[CcDkEsF_ s@@9N\E97@B8@7@"RLGa_ j_q!TR 8F_qATR 8A_8q`1TT_q@7T_qTs<T@9 [r[@YT)+_q!T@R 8&_qTR 8!@QqTaB R*RR[]s@@@O?zBT[@Th|8$TR]r[@TG"@A\@m! @m6A!$E!@!8@m7*RR[! R^[@w@@ 7*' 'K*sO@_7?4?qT`_8?qTa_8f {"_qTa_8"_qTJ%@BGMa8@dTRb( %|@T A@8!@%TJGM`8@_j TRb!( _|@IT A@8!@_ T@!T{GT@, ˚ r%@!@Tџ@TqZ%@ !@# @7&AZA"TK K@K{84@a@9G a8i T!8s Ta`@6 !|S!d2`2A$8 9*O@@_ TA_8@ ?pqA TCR_8_pq!T!RaT@T]sQRjTX @ T@t5@@sa4A@9@?q{0686{@{@A @ Q@ *4)`Q qT@ @9$iTRA *!7? sR@@9?@38s@aA @9?q1T<@@5?q`T?qT@@9q!T MT_{s@Fi T{sk38sTB)<8{@{s@6#RR[[@`!@ZAMs@9q T@ @8[[@?8s@`R 8G@\@!#! @"6A*!$E!@!8@!"7RR[ r[@T@[nw[@ R 8R 8"@B_T_MTB @9CqTC@*aLG  @y#^T @a`7_뢳T{ {@)T" @#@"˖, @2 V{@ <[4O[@L R' sG'K@/YTA @9R"LGEd kT$d@9d"j$T`sTd@9TqT@9?q0TC9S5\@! ! @6A*!$E!@!8@!7 @[@G#@a\@'! @A'6BRB$EB@B8@&7[[@O@@,!T ?qT Rr  RkTBR[[@G@,@A0{@a." @@@$[c37B B=!#@@! #@ @@ @7 @ @T_(K @ )@ T\ М:k  @8"Rs:@y`x @9`8aTkK@ ѡR9A @?q)BTs!QA s [[@7\E9R`o7@B8@\Wv\E9R7@B8@\W#B` @Z A ?T )T@99cT9@{s@{@{@D_[@)[@ 5@TyA@9?qTs@@9 8s@@T{@{F G3JJG \@9h|8``8Ђ@ T @9qjT s@s_lTR@@@{F @4\E9R7A!B"8@B\WDF '@9!LGRb_8"xbB _kTT_8axa_!j@TF G 3}bR# @* ?9w@iT@2TڡRRr|bs@ARBBV#@) @`@w@) [T'`Sb\E9Rb7AR!B!8@! r!,@[$@ 9[@[Gs@&@@9[@?SS@?@ '3b!@!$7!@" @_#T @)@ ,@sA4A@9 R!LG x```7@ :[v[@ss?8s@A\E9R7@B8@\WӒBs_"T@@9$`Dg7qCzT@@9 x`g7}@ =)@  @  A  P @y@@_q`)T !6{@x$4s@dbT @"@;!!7"@B @_T[[@{@  ؿ{@)@@9EEd8@5@!#*"RD Є:k|@ˁ"@gc@k@!7 @ @T @[@[cc@@[@TAO !E[**c@9[@ @!c8"@5`@!*@ ;"R@|@g@a! 7@ @C T @x@`HTOM*c@* 6JR( BD9|@!iT#@9e@c8BBD9 _T_@Ra CR( cD9|@BiTE@9@e8ccD9T_@Rgg@g@ 8~[@ckc@k@t[s[@!@s?8@ @3@ <@s@@9 @9Eb B)' s[@A!)!!awR[@@[@,!T ?qT Rr  Rk@TBR[p[@5@@{@6!@c @s@  R @B* ?9 @#@2!a@7d @@T @*i@{@ @@@{F @{@,!T ?qT Rr  RkT[7[@@@{@ 6@@9Ga8C T@?q0gRRRR[:w@[@s@˟!T`@#75) T@ TڡRR$@! @BBR!ˁ @* ?96 @#@2!a@7d @@CT @i@ w@_ T R[r[@ B}[*sR[w[@4 TO@s[aK@ ;z[@?8**:8G@@yqT ұA#@AR @) @@)ҡG!@!@y?qTT ҘA[#@[@D@@@{F @[AR[ @*) @@[@){@w@{c@SB[s@?@9?qaT@9i T Q?|qIzT Q?|qIzTa@8!T?q TkV = : 9џHT @9|q`TQA |@l:iTR9 TCR{T@2|T`@9qTa@9 @$T`Ta@9 Q?|qSIzT?q T_ T@9_qT@9qT dT@B?@@ASA[BcCsE{Ȩ_֠@RdK* R@ 2kD?qTERLGac kT@9xb"jTHTbvkkl C{CST[Bcks;C@gҢ@9_qH T_qBT_qT_q~T@9 x`q!Tq`'T?qqC5<qZT8R|?|qRҀGTZ6 (R@OGG֢R/RR?q(T?q.T?qC$T?qiTq>T3 @@ 5@#ܚ $ܚ?TA!B!8@p6z @zTx @9q@=Tx@qAT3RR@9?q)T?|q(TT QqTqT!@3$8R_qVsTҞ|aRG@!l@` @` RRC@ Bg@@AAp{ASB[CcDkEsF;@C_VnRGRK@h @A :@?LG@Q$q_|q5795`T_q*@$TBx_q`T_@q @z<T'49w34@q@TK@a~h@B8@h6B B>GҠ@˝C@`TaT8b@8!@9@ Т`S@S@ R@8 @9:|q=TQR?jaT: 8 @9|q!KT[5RA !@? Iz`@9#RA R!@?WQ!?$q|qs54@!?$(2T_"ZTZ 8@@9 @9Rc5A R!@?Oub@9#RO@@B+HcA R!KBxg[@@@K@[@ abzg"R @z `((``T @9R< QqiT _8|qT @9qKTx?@q5Tq` @zTVG#@s`@@5!+y`@ `!|RG@@`"4kk=g!`T+"x|@a 5@x|A R!A`G@B8@X4`7`w6B B`!6{%TqT@ ?WV@9@@@@W@@_T+"x|@5@x|A R!׷U{Tb@8`@9q`T8y`@9|q"TS@ @?sNG"@9@Q$q_|q5w4`b?`7 _8|q "T_q8RaT @9$TwG@ˈq@T$qaTc@T˲@B8@g6B B>";T_|q T893RR C5#RA R!@?S|@@@@S@2@ Wֻ=@9@@@@W@ @9KG@!``7x@qaT'_8|q@T!| S3RR47 x_Aq`4Tq` @zaT6G@s`@9G@h3RRA R!@?>@9#RB B>!cbg6e-a?!T5*RS9@S@ZC c`>C c`>95*RS @S@;!@9@ `S-@S@.R@8H{_T@@9Q|q! IziT4@@9ZWW@R @@9*Iu4A R!ڶc@V<#5#RA R!@?Wɶ@@@@W@ 4 @9R; Qj T|qT#R R @9 R|.#5#RA R!@?S@S@5A R!@?O"@9#RO@|d hT@ !QT@Q QqT+ @9aMG!`!| SfMG$R* RK Ձ6 |SFk ! *|q LzT@ 4?q lTK@@ ܚK @@8`!| S|q!T@q; 8 @9|q`T#RRK@qן?qן*w4A@9!x?@qTA@9?qT?qTE R$@%T Q?|qRIzTR @K1T@8 Q?|qIzT$@џ$T`   Q 5q-TA R!@`K`6b@`GRq@@h 9TqTR9 @9A R9 @9@4 R9* @9 @9+ @9aMG!`!| S@qT*$q`T*KK@(|@ ˚K476 QRoRf*R|A R!@? I9cTA ! |RE A @9 RtA @9E *p4K-6 QRA@ *> QR9ȾA R! K@|649{S*R=@9qaT`@9b@!?$T|qQR!Cz IzT@@8|qQCz! IzITqT!QRj!LG@zR ` BzAT[6G@! l@4@@@_qT[B5 G@$#R PE9@ $x#"P9SA{Ĩ_qT@VG@@R*@[B@RA {S3*[uG@HA9? qTqB B!:@ !vݼ@!RH9R@9A@!?$T_qT@9!?$ TR#R!#RPRpsGa@4SA[B{è_!Re@9R?q$Uz!TsG%#Ra@ PE9@ %x$4#P9SA[B{è_R@9?q$Uz@T?qTHQ q{S3iB[*%@o_C9s@iTw@#9*U* sB*o@a@A{CSD[E_ Xhxa  G@HA9!s5@9?qT@5XE9_qHTR"R(RH9`@9_q!T*R`cR! "R< #RR G@d@H9y`t@9qTR'@9A(Rq!T(R G@@5XE9_qT"#R%RB$EB@B$@H9`5G@A@5@XE9qT#RA !c$Ec@c$@CG"R&R@H9`#!RRcBd8@2d8$* R'RG@H9`y!R'R*s b'R'RG@H9`j!R@R*d #R!R!R%R*Z R"%RBGB@@`Q G@@5XE9_q(T"#R%RB$EB@B$@H9`? #RRq!RR*5!R@R*/!R`%R*) G@@5XE9_q(T"#R!&RB$EB@B$@H9` CRaRI CRaRE #RARA #RR=!R@R*"5 RA B$E!@GC@@c$@C@R!'RH9`5CRGRR@ k@RRRc RRRR@9q`"TI!Tq!Tq!"TR (R'RG@H9` (R'RG@H9` #RR!RRR* #R&R #RR!RRD*AR'R>*!RR8*!RR2*!R`R,*!R/R&*!R&R *~!R R*x #RR #R!R #RR #RaR!RR*b!RR*\!R@R*V5B BG@!R@%R#R!#R*H9JARR*>!R R*8!R R*2 #RA)Rd #R R`!R R*$!R)R*!R)R*!R`)R*!R)R*  CRR>!R!R* #R-R4 Ђ.R'RG@H9` #Ra-R'!R(R*!R@(R* #RA-R #R!-R "/R'RG@H9`!RRp*!R`*Rj*!R*Rd*!R*R^*!R`RX*!R&RR*!R RL* #RAR!"B$!G!@!ޥAR@R:*5CRGR!R9@¹cgo7s&ER@R@Rk@g$@@kg k@RR#VV ւRVg@ @94?qATg@9A5B@7<5&EG!@@ $@kATR@T0@@g@&EA@@$@_H9kC`@*cFkGsHA #Ra&Rs!RRٿ*7 #R'Ri!RRϿ*- G@@5XE9? qiTaRX9R"Ra(RH9` #R!RNR@9A@!?$)T_qT@9!?$ 9T5c7иG#R!#R*@9&E@8@@ 7@\@! ! @6E9897 LGa@P`4Gk@_@-A @-6&E@!8@!-7"Rr*@cFkG߶qG*RR@EPE9Cd@qFEH9DyT`Ct1)R!R%Ra* #RR!R"R4G!#R@@Rb'R@PE9Cq@H9!RRE* CRR CR!&R CR!R #R&R!RR/* #R RRRR`J!"R!GB$E!@B@##@B$@?H9_k `B"*p_@RRRkF5c7РGk&E@!@@"$P)_k@T`<@H9@@RsF@R"4r! R?qTk @&*LGRLG Ճє@9`a? jT T˔k@8a?"jT4 #RR\Ru!"!GB$E!@B@#@B$@?H9_k `B"*RRRC;!ЃR!G!@"<@#B@C@AT_"#@B$EB@B$@?H9_k `B"b*RRR$7!"!GB$E!@C@"@b$"P)k@T?`R""@c$@?H9_k `B"C*!R`Rq* #RAR!"B$!G!@!ARR_*!"B$!G!@!AR RQ* CRR CRR!R RC*R#R!#R6RkNGR@9Axa! ?kT Հ@8@x`? jTC!R=T  B@ !Т@ D@! ҿRֿRR $#RG@@PE9@@ Dx#AP9R%R@H9T`Z!R`R*T #RR G@@5XE9_qiT#R"R*RH9`A!R&Rݽ*;c7R&E@8@ 7 G@\@! @6l@TT#RR!RR*cF #RRM@9qTR{@9qT G@@5XE9? qiTaRX9"R*RH9`R"С%RBGB@@`!R"R4G!#R@@Rb'R@PE9Cq@H9 G@@5XE9_$qh[TC R"R+RH9`**!R *Rk*!R@*Re*!R)R_*!R*RY*!R@&RS*AR;TAJT@9J5!LG ` *I5&E`G!@ BYLG{cG @C!8@!5\@@ @6l@_h TAAT@@9>5!LG `4&E\@@8@! @67@@9`8Z]E97B8@7@9!RLGxb? j\E9 Ң7BB8@7Z\E9`7:@7A@9 Rza!j`5{@@C@Z˿КZ@KlU@@9?6@!?TA?TA@9&qT! *@!LG x`RaG$@I9A;@C;@?TG4 @8(qT@cB@c^E9`7B8@ֿ6@ @@b BaS!b @!@v!!}!"Ts @@T`96Tc@9F *T"@9b8!D9 Tq`TT! @O l!@B@ҠR!{@#RR@?KC@-`G?@@K@h RsGG@??k78xGs@@@\@@?q%T!QC@D\A`B@@p6 @!@VH m@l'Fmv|@@:Ҽ @ @{4 @R*bT?@ Հ@9(q`TK$T#5ITkv8(qT#h`8(qT<ATCRo#T@ @B@?@> @?qiT!Q ZCR"YR6*?"ˁs׀`GZ:s@Y@ `B `AD@ @@7@ R | [@" h`8 ,q@ TS@sBmb@`GA@@!As@X@?T`B6 4wAb@a @B@!ls"`"T`@@TCQsR`sTc@9 Ts@Tc@9?6 *@9`?6@B_T"_mT@9Cq TB@*!LG@ x` *@@y|SdqT@(@!TARsCC@s@A@y@(!2AyS`w|@|@S@s!s@@uR;RG{@@C@#RR`GG@;* @_@g@{@@C@+ (s%s@@wG@@\@@?qT!QC@@\H m`G@#RR `'m?@'m; * 'm-@ 'm 'm {S[5NsG@a@!l@!N@`,@$a@RR@d#\@c@!\@Ka@"\@@ @2@ \@@@c@B"lSA@[B{è_{SkgRbG[56'EcrBs#@\@ !l@k`G@I96@R?@o@cA$@!A$cB4! A$crT@@@$@Q@$;`@U4 @d@9RQB_qEzaTuG@"\@D@@T I9 6 l@mT`@kT`@9d T `G@ @ I96 I9@77_@o ks9'E@@B@ @!o$@qT7@`!4;@k !TSE9 R9)R""R!$@cS98b@94 I9@6@@$lB@`@9qB@ TTq TqA T`@9qAT` @9`5`@944{ iT!R*`G@5_ )T`@9b @95_qT`@9q!T `9'E"R"@A$@!QA$B@@A0SA[BcCkDsE{Ө_ \@`G@"\@ I9[@; x;pD@B@@?B"l 9`@9qT{ ITR@d_ IT`@95` @94`@95B_ Td@xbR`kR?b@9ITR&OGb kaT`b$jT?@9!T_qB@9 T@5`@9qT`@9qTv T` @9R$OG`! ?kT@8`?"jTR!OG5 `_ j`T@85 ! @9$OGaA4R"jT"j T@8a5R?"jT%OGR@8a"jT?qTźEC&F#G@9@9k@9w @ZkA )x4qTZ @@9 qTA?GlA@?@kT@@9a@9?q`T{5`@94bc9; C T0D@95 ! @@@`G8R"OG@l@@8Dxd$jT?(T@@C!ER!@XR @ R"jTٺEk@ @9R *4&FBR`G!@?jo@@ @zTG@95C@9`4s@qw@@zT_@ҲsGAR&F`@@\@jA@ hpC@A@b@L9!laTF!@@!@"@D@9qTB@94! qT&OGR` jT! @9`5 !KD@F@ |}MsGR&OG`@l@@9xc_#jT?(TF9@B@@B! B|}p  {cGcBc@@?S[ks#7a@!@6`@X@\@[/@5| @Y @UAR3{  T`@@(`@@`T_)T@a @ h`8 q(TBB*|@jT@B*?@@A! SA[BcCkDsE{Ȩ_@Y @SA@!!7@@bTc @b` @!X3@R$R@;@&F9a@ @`6a @" _8 9`@@AR @Y @$@|_@ @Y @dT7@CR3M3@5?@3@%RRu`@@`@@ *   `@} {B [cGSks*!@7"\@ B @66RB$EB@B8@7 G;'E87*CLGc` 7!Rc k@T<4q`TqTa@9?qATa @9?qTs $8`_8@9G@!l@?TiT`@95ALG#`!Rc kTBLG @8`@8A`!jᗟjT"\E9R7BBV8@^WӺ@8@}@j!TBLG`@9@x`xP@qT7@_9WSA[BcCkDsE{ɨ_֠Ge@9@l@ GBLGe8{GT !T`@95@`4`@9@;@!l@``8{bT`@9?6@cT#mTc@9hqTc`*@x`#RRbC? T?@@B_HT"_ Tc@9b_qa Tcc**FLG#c@yc7`\r!T`@9ALG#`SGGG@Gc@l@?T@TR#R`@9E`@986@ѿT%˿MTe @9qTBLG*B @@y6s@GR$x8`@95BLG@``6#RR`@9ALG#`?r?@aT`@9 `!( {Sc**bB[*C@/RV$E@8@@7G@\@! @6l@?T`T#RRM 5sB/@a@A!SA[BcC{ƨ_\E97!B!8@7@9LGxaxP@qT#G@C* 84G+@@@5R 5jq TG@+@9GRR@SE9@6 PE9 @@@92@9 PE9 @"P9#@@9qAT@9qT#C#RG @!4@+@@? T@cRCrkaT@yCGRkT@!Ѽ@986C@cHT#T@9dqTcb*!LG""A@y6#@95!LG!b6##@rR@9qGT@H9@!RH9rTG#@x# {[S@84BBѴ_diT@9_k T?qTGB@CHA9 5?qaTA@!5CXE9qT@`*SA[B{è_@94GB@CHA9 5R#RA(RCH9U`@9qT*R@`@9#RBLGDxd$jTG%@l@`@9iT@9RCxcc kTb@9"xb"j TsATQ?qT`@9G@AHA95E@-R$E@c$@_H9k@`cC*SA[B{è_֠RLGa!jTA`@!@9xa jTG@ RA"R@H9U`#RCH9@`a-R*SA[B{è_R@9zqTa@9?q TqAT?qT&E@8@7G@\@! @A6l@?Tq S@T#RRG`@9q@`T&E-R@@B$@H9_k`B^˟mTb@yLJR_kTRR!#RfG#RA"R@CH9@`K BAXaxbA! ֿqR@zTa@9 b$ qT`@9aRqAzAT ՔG"R-R@H9`, "R*d@CRA(RH9y*`tSA[B{è_ $R*$R*"R*"R*$R* #R*$R*@#R*@"R* cR "R!Tq T6q@Tq`TG@`@,#R*`$R*@$R*#R*`"R*#R*#R*#R*!R*!R*$R*`#R*!R*$R*\E97!B!8@A7LGuxP@q4RA#R#RG-R@@`"R-RH9`586@T -T`@9_qT*!LG  @y7G@,q`TLGu@P` @9qTV:G"R*@VG"R*@QG"R*@L{S[aBc"@Ҙ@9RR&E!@"8@CtZqiT<qTRsB@a@ASA[BcC{ר_BDQӂ4!P@AG6 Հ0@9?$qTqu @!P7@9?qT#R k+3@R*7*`5 T рja8q`T@G@ \@ @` 6&ERr@8@ 7Rn@ 0@9 4?$qT@@A5@ kD+@!?4q @Ta@9A4R?qLGaB DDzT}a?qB DDzTa@8A5@9?q!TG@A@y!Q!<?qTAE9!?d)T@9R!LG!xd!j`TARAH9T`@9q T@#R{@@@"\@o6!@!c \E9R@7BRr8@iB5@G3@@@\@@ @ 6&E@8@7R* R @G@l@T @9qT3@AZGRRU@RE9A@R4"R##R PE9 @9"H9 PE9 @9`"P9 @9kDq+@aT`#R%?q@T: @9q!Tkhx8qaTj!83@\E97BR:@iU @B\@RV@@A\@!@4}k+C{S*cRBB[CFk*BZ@@eA@7q ! BR3@ b@"D@! "R (b^):qTs*`Bx| {B@9Rd@d{<sE @9`˔B` CF!$ERb@#@A\@9*Y\a$@s@`& @@! 0GC@@v(@@X@$@B@@@$@*SA[BcCkD{ƨ_֠@9@77@9!Ң @9 |@@0G#@@( @X!(}!*#!hb8b@"@@yB _qT@R(@B@D\@j@T\@!2\_{S @ @A,!T ?qT RrB  R_kT@a !`5a@ \@2 \`@2`SA{¨_a !@4a !4a !@4a !@5C$@" @a@!@!@!xb!@96_BRI{c0Db@94 @ 4 /{csBS[Vk*#@7RҙG@u@U4VqTsL@b`@TY?TDST3e`@T?lTb@9R!LG$xb kT``d@8"xb"j`T%&E@@`@@s*9B @9@4D@@!@A @@W @`@@ҁ CR! BB 2;&E@@A@"@B(G!@#dB1*AT$@ !@G@ \@@ @ 6&E"R@8@`7 #@!G`@P)kT&EB@B$@AK?q T$B@96xR!9G@C9?$qTByR7@@AASA[BcCkDsE{Ǩ_ֿq,T 1!T`C9(qTs,@ !@ CRҚ \E9R7B8@B\Wӷ@`W CR! B~q,TQA@R!?dBRB !np !g CR! @|@@ ! [`@@@D8E@94LGuF4CR"9cF@9R!LG%xe kaT`h@8$xd$j`TY5@ux8N* ! %( CR! =  CR! }R{ R @{¨ {[ЖSGc8kB@@?:@?qTJA9q T q`TУT(q` Tj@z@:@_:"@T? 8GR@b@BbP@9_q@T@@KA9q`"T_qsARDAz RDAzWo@$T`_8_kT?pqTIT{OGR@9b`B _kT@9a`_!jaTAT@KA9q@&T@#@bRA;G8@"H9sE2q T 4qT:@#R"@G:? 8)R@"@#H9B"3`)@9?q!TE9#RR!#Rq`qGATsE@ bR:@"@G:? 8@ @"H9 #'Eq "RD!Rc@c$@#3`"ւB?@@AQSA[BcCkD{Ȩ_"@!(!|@"@]:@bR"@:еG" 8n@B1TsRbOGd@9BxdB _kT`@9`x`_ jaTsATsE9:@"R"@:еG" 8bR9`@9q@T"'EB@B8@7^@B @B687aOG `@P@5 sE@ HA9q!T C9$qTb R H9 "`Ј@"R" 8"R)R"H93`^E97BBB8@B7aOG `xP@q 4ROG7@n@bT{OGR@9cac kTLba"j!T@8aTEq TqT@9qaT!RAK9Sc)RsE_Ck@A{@`TR.@9qTG@ l@Tb@y`R_k` T`R H9;_qT 'E@8@@ 7@_@@ @ 6C!T_q`W@$T#RRG@Wo@9tT`@9RdOG`c kTd@9`"jTATsEsEG R@ H9@B_T"_#T@9Cqa#TaOGB@*  @y4wa@9 Q?qYzHT@KA9@_E97B8@7 R{OGab!j4@_@ @6 'E@8@ 7a@9Ga8tTЄ;'E|LGB  'E@8@`7Ё@9Ga8Wo@T`@8@`7@_@ @`6@9`87aLG ``6G@@_@` @`7A_E9 7B!8@!7@_E9`78@`7@9 R{a!j`Tt@!?hT? T@9"_q! T! *aLG@ x` 7btTy@9"RdOGy# kTR  {OGkTay!jT@8cT"T?q T4 k@ T T@8pqT?sqTTt R3orЄ3@AT+gG7@`4@_E94@7B8@@7m` @9qT3``R@9@q3`@aT R H9-#RR@KA9b86@@TT`@9?qAT*aOG@ x`@65!Q?qT{OG`b)@B"RRE9 @R9sE4 *H @9_kT!R#TkTk!T@8pqTTt #RRGsE@?qR$AzTt BTy @9y!jATЄЃ<'EBcG  'E@8@ 7@9``8Wo@T@8@`7@_@ @`6@987aOG ``6G@@_@` @7A_E9 7B!8@a7@_E9`78@`7`OG!R@9xb? j@Ts@!?T?T@9"_qT! *aOG@ x`7aRrFTWRG:@Wo@@9qTCT_s#RRQG@Wo@  *{SG @@#L3 "h@@l@TsTa@9?(qaTSA{¨_{S[cks)LG#B[@9Rd@oOxb?"j PTaG$E6@@@^@&@k @O@4@96:@;7t86Rrn@ EO@t8˂@UT"\@ cO@r`_TO@#c@3+aG$E6@@^@O@@9^E9%6; қ@#3c#93@&@h<8bBF:@tZ?<q !T4 @46:@`47 b8ҁ3@7 57@S)T! @ 6:@"R` 73@ R !/`G@F@^@y= @ =6$E@8@<7S@G#@9c8@_"`MTR9+9 S@#@7!_T @8@_T77@J@! B@B@ D@!B!ҡ@ BB@@|@ 7 @8T @7@ RR@rc@c c*@ 45`GO@4R@!G5K @o@@@A!7B @_T`G@@ @o@aG @S@Tx@9c@+qTsqT7@p[TˀBT5Qq TH?T3@q^@ @` 6$E@8@ 7 87{8`G@n@T?@9bG@ @A@` l@T @mT_8_84qT(qT_4qT`GAR8@$E@@$@@$#`B4 @$?` l@ `Rr!T`G@@c@ODQ4R@76& @&6:@`&7 Дb18a|;B8@ڿ6?6^E9R7;@B8@B\W^E9`7;@B8@6?6K@#Rx8{?@`I9 7$E@ $@ $bBB5x@9n@_@|`53@x`4@qH @ Tn5x@9f R8x@9C@@]AT_84qT@R8A@ $bn@x@93_(qT@R8aG@ @!@@q^@?@ @6$E@8@77@O@rT @1@_4qT_E9`7;@B8@76x@9sqAT^E97;@B8@63@   8Ҕb7. 3@(Y @6:@"R73@@R !7`GS@F@v@c@@5@t4@2"@$E@$@#$@ `@ AD T <@@6T[@`sGa@"H_aTc@[@ Bo@!@ASA[BcCkDsE{Ψ_sG$Ea@@!@$^E97;@B8@ÿ7S@@97,O@CR:@c@Z XRO} Xҁ^E9R@7;@B8@B\WӅ^E9` 7;@B8@ 6 Дb18a|ҼB @@! @n `G@ <@6<CR@c@q!ҀB@ ҠR3@7JSb R{+t O@~@cD9BiTD@9@d8ccD9c TO@R`G@l@;O@iT@94c1`@7  X@^R{+t O@~@cD9BiTD@9@d8ccD9TO@Rj`G@l@@ c @SO@@O@@{ARSG[cs3u@;BBn@C@GҼ ,@9qT @9q@ T;@R+@?q2T 3Tk'E9?_qTE9qG'ERNGB@BB8@@B5`_@ @6T@T#RRGc@9@qdYzAT'E`_@B@B8@B@ @65c@9Gc8sc_E9 ҃7Bc8@7sc_E9c7:@7c@9 RGc'jT`_@c@987NGc6g@H TTg@9qaT*NGc@xc7@us a T4 `E9q@TG@@\@ @` 6'E!Rr@8@ 7R U'RR& RPG'E@@_@0 8@tZ_qT_<qTF ՀB?@G@A@AaSA[BcCkDsE3@{ɨ_c@95NGc@c7@us TR` ;@RRR? `;Rr T'EGA@@"8@B`_@cGc@9@W@\E9!R@7!RrR`B8@i!vRRgRRbRRRR;@ @9qT;@9 IT;@(k?@ 4@@Ҡ 4`E9qTᇀR`T8B@@xs@" @6!@ @!<@A4@@*RlRu!R@9Rn;@rT@9FsGZˀ ?h:8a@!`@ZA A@ ` {SGs!B[@"@GaKA9?q T?q/TA-4b@b5a[E925AQ#R"+RcK9a`cB*G@!@A7SAsE{ɨ_[Rck3aK9R!RYOGB8r? &EG!@@ 8@`7`_@ @@6ao@?(T)T@9`)5AOG `@PӠ 4wI9aR @9dGTC@R@&`qTZq`TTDqTTQqT `_@` @ 6&ER@8@7f`@9q TG@<@ BR@RRR,G@@<@@?qT!Q_<R@9q TaTG@R@9qAz@ TbKA9 5qq!a 4qR@Rb"5[BcCkD3@`c@Y`_E9R`7RB8@B rBfW`@9qT"R*RM G&E@!@@"$P)_kT<@`Ay5C@T TRRxRR`@9qAT@9qTRV>`_E97?@8@`7@9 {` P@qF@C@dqTTDqT`I9 55`SE9#R@`c{"aS9|c)R[BcCkD3@qTq!T@9@?6@B_T"_ T@9Cqa TCOGA!*`!@y` @aRmr@_kT@9qATs75`R !`B@"@@\@2@\ @\@`?7  ?2G;@a @͎R"r @kTRrkT!@yR?k!TJ5`B@@ \@2 \ $@aAy4aC9?(q`Ta;@!4`c@9[?qck3T [Rck3aK9 #RR#@yRkT5`B@@ \@2 \`cpqq!|c@9"5 @3G!R"+R@H9`[BcCkD3@X|c @@95 *,u u [ck3 { //@* @{è {kzAGS[cs5@T@^@@96@6{a'E!@!8@A7a!G8s8Tn@TqAT#RRRAS^E97`B8@6`Gs8T{`'E@8@7V7`B8@7`!RLGs? j4@* EG@A\@!! @ 6{'ERc@c8@C 7@*SA[BcCkDsE{Ǩ_*Fq@TTq@TTqTTqT @2 @ Ք3R*SA[BcCkDsE{Ǩ_q TqTqT @2 @q TTqTq TqAT @ 2 @qTq!T @2 @8Ҏ86`@(T T@9_q!Ta*!LG@3x`s@77^E9|B\E9R7aR!B!8@! r!*mF``LGssrRla@9 5 @p2  R`9@ @2 @a@95 @p2 s9@kT* x@3R~ @2 @v @@x2_q!2 @@ia@9!5 @p s9@a @2 @\a@95 @p2 s9@S @ 2 @N @2 @I?qaT @$G? qaTp2 * 2 .{b?|qBBcxS *BaC@9 s@?sc!R9g[k7wR*xG@D@ T~qT rT7@@95B@ R k TGRB@?@@7@#60 SA[BcCkD{Ȩ_uB@A 2B@@@AR+ ;@ @{CzZ}A X;~q:@*+@T G@<@ @",BT _qT Rr!  R?kT@@"@;B@T_ T@9?qaT@9?qT@9?qT?qaT @9?qTc2 c2B R! BR;@@@RBRc ++{St[Gc!@5\L3p@ 6` `!G"@A\@! @6cRc$Ec@c8@7bBBC@9c2C9,RrrTTG@h@ky!'E!@!8@%7\@A @6l@c TTR#R3GkD@\@A @a6a"R!$E!@!8@7R !@#G@`SA[BcC{ƨ_B\E9R7aR!B!8@! r! R!" ՔG@`SA[BcC{ƨ_\E97a!B!8@7ab@9!LG!xb!!x?P@q T\@kDc@986d@џHT$˟Td@9qaTf!*LGa!!@ya6 +w{8'ENGvB5\@a @6l@?T@ T#RRGd@9@q!T@\@!8@%Ca @65ab@9!G!b8s\E9!҂7bBB8@7s\E9a7:@A7d@9!RBd?"jT\@d@987NG!d7\E9R@7`B8@B\Wm@B_T"_MTb@9FqTA!*NG!@Axa7`@?iTaR!LG!d_!jT\@! @69'E"R!@!8@!7h@ R!"cGkD@+@^kD+@[d@95NG!@7\@+Rr T!'EG!@@!8@%\@c@9c5a!LG!c7kDGd@9@}mrTG@\@H\E9R7a!B"8@B\W!'E+G!@@!8@%h@O {Sst[aGckRsB9B3!@{@WG `@g"h@@T_8"HA95"p@@T@9q`HTqET` # T`G @ E9q!TA@ BRK @?qTT!Q wcGR&Ee@@R@$@kOO@R@@9[@@`G@ h@` "`@ T"x@(T"t@#R'T?H9R@9q@ TqT`G&E@@ $@@k8cЀ@9RcLGb`B _kT ՠ@8a`_!jTq@T[@PE9@ 9f##RsG5!R`@PE9"!#@`P9>wbR!&E! B(E@$@cQ$@ $@ $@9q@TqTs?H9 RRV@9qT@9@_q!R!P5{@?q@!5bX BB@8@H6sG`@@ @92 9f*u*B*W@@AʡqSA[BcCkDsE3@{˨_wcG&ERU# @RRc# *RRC9g@A4G@ @?$q1TG@_68@3@94qK&E!@!8@7aG!@"\@B @b6!l@c/TqA 5T#RR@9qaRAzT {@?q@!!5Zf[@*|E9qTR_wrGT\@;! @a;6&ER!@!8@:7R??@`E`G@?9.&ER@R?@c$@kcsGR?@`@@9**m@9qATaG B#R!@!!S@` R 1f[@3*N*ER:&Eb!@#8@dtZӟq"T<q"T{@q@cC4l HA9q@T`"@y#R`Axb8LqT@9R]aG&E!@@ \@B8@@ˢ(7 @7 \E9 (7bBB@8@'6!l@C,T@9TR#RGN@9G@_q$T R`Gf`A@#@y"\@cU@8Lq &TqTq`TX, By|qT`A"@yxb 0qT"h@*#x@"H93fr"\E97bBBB8@"7a!LG!`!!x?P@q`TqaT@4*`4[@xG$#@c #@!@@_@/ @@/6&E@8@.7W4\ 4 @2 f}jqATsG`@@5XE9? qiTaRX9`G@@ BR:@9qATaG B#R!@!!M#R2!! B#R` #7@9@ Є _qc`  $*4G@@@86@B_(T"_MT@9CqTaB@*!LG  @y@7#a!LG!`7ZcDQ4#P@G6fsGR`@@d@yx5XE9? qiTaRX9RU#RH9``LG@y@6?rsGR&ERv@@@c$@kcG`@R@9{]@@T -T@9qTa*!LG  @y6 @4G(*G@ 5`Т@9LGbxP@qT-`G@zqTq!TG *G@5\E9R!7a!B"8@B\WBS#@9?7`LGb7rT@9&E@8@tZ_q)T_<q@%T `Gf@#@yq TcxqTf`aG&E8@@@&@k[ "@#B "sG&Ex@_@ @@` 6:@ 7;@6`2!R* @&@5#RK9?kc ``G@\@  @6&E"R@8@@7Ra !$?+`G?@@@95`LG@y7:@_E9 7`B8@6&E@8@@6 @x \E9R7`B8@B\W[@@?_jT@_E9;@*7a!B!8@!6:@6GrG@T@9 BW @@}T@969@7 @T""T@@TCQT@9v֞F*T!R*@,* @ {*[* CS@@`@7 X6` @ @6@@ @7v 7R*SA[B{Ĩ_ R!@c*!`$`6'6`@_6R*SA[B{Ĩ_?`@?@BtC!`AC@b@@yB @!xba 6a@9 7 C!Rc @BRA@xcx`@`7 {*[ CS*@@7`T`@ 7@X6 @ @a6@@ @6 6tC@@9` 06c2_"BRC`@ 7 C!R*SA[B@{Ũ_`@ X6` @ @6@@ @@7 ՟T 6_ @AX7`@X7R*SA[B@{Ũ_`@@6Sa@?rT RrTBR!@! `@6h'7R*SA[B@{Ũ_y"BtC!`AC@b@@yB @!xb 6a@9 6b @!A!@3xbO@O@}O;O@|R{S @X6*` @ @A6@@ @6@P@`7@b @X6`T@b @?T" @B6!@ @ @6#R*# @SA{è_@ * { /A/@@* @{è9_qB\S{S @6@C@CD<@55|@@ @a RC)c`FB t@T @@?k@TR1Ta Rc@c SA{è_@9!6 @2@9$qTSA@{è_a!!"R!xu@@@@{S[*`B$ @@Ҁ,T qT R Rr kaT@ @@c2c sB@a@AʡSA[B{Ĩ_BR@@{ //@@* @{è !TA!@?q T@ߒ#""!"?@T_ @"_ @qT"B$Q_qT@@d@d7E@qTE@E@E@EE@E@E@aTe@%LE@TƬB@T`D@@T? r@T? rTa@&H@9q!T!@{ST@t6@@"!?`TSA{è_g@SA {è@҅R҄@9t@A@?aTA\@!7B@T6b|R?jATa@#" '@DR҄@9Y`@T@@ @ a@4@ u S!R R4<*aBa`R)@{RRS[n@@@5@`@@87RRD*@`@3`@?$q@TR? jTSA[B{è_` @@5@`@[B@ysSA{è_ց@RSA[B{è_{?T?RT*{_@9_qT_q!T@9 -@9 `-*{_@9q {[SBc3Hg"@@9q@TG%@l@0TRdLG`?$jATcLGRa`!jT`@8aTqTS"TB@9RcLGbxbB _kT`@9`x`_ jTsCT'E@8@7\@ @6T !T#RR ւB@@ )SA[BcC3@{٨_֠\E97B8@7a@9LGxaxP@q4Gk'Es5@@^@8@! @a6@7a@9Ga8n@tyOG:RB C5^@ @@6 TAT@95aOG `@4'E^@@8@ca @!67@9Ga8^E94 7B8@ 7^E9 a7B!8@7^E9`78@7@9 {`_ j5@9 TRcLGc`c kT]`!jA T@8aTq TkDsE@9`?6@!?TA?mT@9#qT! *aOG@ x`R?{G?@5@n@qTL`@9q TG@l@TRaLG!@!jT;#RR/G@n@`@986@B_(T"_Tb@9Cq!TB@*!LG  @yGqATTR*5^@! @a6'E@!8@7R*R@@ 4 T#>RR#98!Tf ..`@95!LG `@P^E9A7R!B!8@?iRTr Ta @9` A4"R?qBK@8?qD@zT?qTBRdLGa_$jTcLGR @8ba"jT4 -R !.F`@9@RbLGB@?"jTks{cGS@j@v@TSAcC{ƨ_[Rk+NG@9bxbB _kAT va@9axa_!j@T&EuB@9G8@c C5^@ @A6n@?hT`T#RRVGd@9@q!TA@^@#8@c @65`@9 `8s^E9 ҁ7aB!8@7s^E9a7:@7d@9 RNG!d!j!T^@d@987NG!d7q@T Ղb@_)TBRSA[BcCkD+@{ƨ_ւ@B_T"_MTb@9EqTBD*NG@!xd7b@_(T^@ @`6&E"R@8@7v@ [BcSARcC! /kDc|@+@{ƨ^E9R 7B8@B\Wb@95NG!@7R r T&EG!@@#8@c^@Gd@9@~ {[GS4Qq! AzE@HTI96\@` @ 67R$E@8@`7**R ! 0=* *!0R7G@@` #RSA[B{Ĩ_֠\E9R7B8@^W {R[SFG@\@A! @6!$E!@!8@a7@9l@RcG!chd8a/#B\E9 6@9 3G@p@\@Ta@I T_8qJzTsT`_8qJzAT` @6$E@8@ 7fG@\@C\E96( Ta @6!$E!@!8@!7"_bDbT Ձ_8!?qbDTB_bDTa @6"R!$E!@!8@7 1Y\E9R7!B"8@B\W!B!8@7B8@7\E97!B!8@a7*{SG3@a@y"Q!QB<!<_q AzT!B!8@aH7qTR^r@TbE9`A@!?dTb@8A@!?dT5a^@a! @!6RB$EB@B8@b7@SA{¨_b@A@9!2A9b^E9R7!B!8@!\W!SGR!A@SAB{¨E{BBSA@'`AR `9G@ \@ @65R$E@8@7ARR@R ** 3 \E97B8@^WG@H@?|T\@B @b6B$EB@B8@7/5R9R!R RRS999\E97B8@7?TR399 {[Sc**DvG@@:@?q T"@"sG:R!8`@pa@ X?a@*7X9V4`@C9`4D@'.SA[BcC'@{Ũ_ր"@!(!|@"@:@ 40!G!@"PE9$C9?H9Cc$q T""#R@@#P9 `@ `_$8@5R$9\qaT "E-R*@ {S*[6@9a4=`G@ \@ @@6R$E@8@7RR sG'#RR!Bc@"@9aPE9_q%&@a B gx&eP99`\@` @ 6$E@8@7B2>qcRT^qcRTNqR RcSA[B{èh  \E9R`7RB8@B rB`\E97A2B8@i"{?xr !T**` R8 @{¨_ֳ5G@C94 @R{¨R 4j !`44{S[cG@@GR@`@9`2`9yd@x@ P7PE9@#@ $R#R'#RB&H9x#P9@5XE9 q(T )R`SA[BcC{Ĩ_R!G@a@ @@?qT!Qa@ @ 52@9,q@ T`@9a@ @92 9a@ @9`2 9vb #RSA[BcC{Ĩ_@4q @5@`TR@aRLG c@9sc$j`TC8T9@@T@9q*T?q"Q RB$Dz@AzT@9 4?pqT?qT@9q TG@@8?qaT@8?q`T`RX9b@RR`G@ $RGB$E@B@#@B$@?H9_k6`B"z?pqTG@9%@4 ՔG@9@4_lqT?tqT @8?tq$@zT?tqT@9`5qaTd@t!R@$RH9`X \@o6 @sˇG@@a@b!AA!@@a !fG@ @5 XE9 qiT`R X9R`$R"H96`0 B!T{[&Ec@c@c@v@vcSGk@dB1@T"R9@`@?q TP6BR`@@7a@ R*`?G@dB1TSAcCkD[B{Ũ_ B@b@ D@!!@B@@ZB@A|||``@ W7TCR RJ`@W7&ESA@[BcCkD{Ũ!$@c RA {B$E[c@@8@7G@ \@` @ 6*[BcC{Ĩ \E97B8@`7R*[BcC{Ĩv BӠU @@S} Ta96 `9@7s @Ts"`"CT`@@TCQs`TRSAs @@T`96Tc@9F*?"T"@9b8!D9Tq`TRSAs"`"T`@@TCQsTsT`96*SA[BcC{Ĩ b BaS!b @!@t!!}!TR sTc@9 TsTc@9?6{SsG[&Ec@@`d@B$@_kBb5v@RR a@@R#@ #Rd9B$@#@?H9_k5`B"SA[B{è_ {[&EScGe@D@$@Bc$@҆`B4c $`@f@8ߌq`TB@@ %SA[BcC{Ѩ_@9RNGxb kT`@8x` jT  Tb@-Rr_kaTNGRd@9Exd kT`@9sD` kT`@8b`"jT@$Tb@9@@$T@8@@$TNGR_qb Ez_(qDMz5k@9`c kT@8`"jTq` T@9NGA`4R!jT!jT @8A`5?0QRc! qBNG$DzAT ?@@80Q!`#j Az)TqJzTrT&E9C@?@vQ TGZ@@@AA @?qIT!QA _R &E@@!@V$kD_I9b7C9_(qTl@_TqaT$@Q$Q"*@9"NG?!`I97zs< #( TR$x7RRTB*3@|@0@9$q T3@R3@ F@&E3@ @$@kTA @"@BA@<@˟T@@a~@S@ |  s_`3@T:bzz@@@3 _AT`T8&EsE@Z@pkDC &E@m#ks @ @@@!@ @ @@@!@ aR3@3@@{c[*B@?Skb4_hrA%TP BGaRY@@R9$E@`"C9CRdR!RdJ9`c9b9x`fa 964@ @ tK`"H b&_9`Zu s@,!T ?q T R Rr ?k`TBR@ 7  6 @u^  sER @`  `j`raI9@!tBC@?@@`nv^9a 9SA[BcCkD{Ȩ_֡@ @!@;@6@@ b Ba[!b @!@z!!}! T`96997 @T*BRcR!RcJ9`byx`fa 9 6!`^;@*u^X CR!6BtsEu^@""_T@@TCQT@9ЄF*_T@9c8!!D9?T_qT_T a#RRTh_T@9?6R77@"T@9 B@Ђ@ D@!!a@B,@ ZB@B/@@@ @ @x24`R s !@55s{!$ES\@b@"@?qT!Q`@G!@!\E9A 7a@!@?@T- `@@?qIT!Q`>@@?qT!Q`V@@?q T!Q`"@`&@`Z@Ga@SA{¨6T R P N {S[PE9 sQ1 T`~@ BydQ4qT@@9b6_xN"B@_T sQ1@!TSA[B{Ĩ_ G@ \@@ @6 RB$EB@B8@B7_!\E9R7B8@\W_{SЁG#@d\@@@! @?T[cksfX@wN@{hLy`Msx@5˜?{˵sZ9s4 @"?V%G@t@h ` paUtx@aSx4X@ @aV [BcCkDsESA{ƨ_SA[BcCkDsE{ƨ_ {_xrS[TG@\@ @ 6!$E!@!8@! 7@@b 5T B! @!@c!!}!˿T)T"9c6b !T#zG @l@`@BB!@ \@@@@S l@ lT8T@9A6|Sd2!!`2@$89aTSA[BcC#@{Ũ_\E965@@CG@l@`@BB`@d\@@@dl@ulSA[B{ŨB8@74`Tc@9 q( TT @9 q Tb3_T@hT @9qT aT@@8#G@l@`@BB@ \@@@@X l@9lT8T@9@?6@9 ! *cC A8sA_@TB C_B cGcc|sCTHTcA `6# ! 65c#{ //@* @{èz  {SbBC@!5 @A,!T ?qT R RrA ?kT@ @!@Bt]^ sB@`@ SA{è_BR@@ !75  {SДG@@`@T@TSl@?HTbB5sˁ@ \@@@@@3l@SA{è_ !75` !G#@a`@?Tbl@_#T?TB$ED@?T"@8_(qT$@B$e`B4B $`ap?aT``_{ !857{S`G@ \@@(T`T"`@_T"d@t_BT#d"h@_cT"t@_BCBT?t"x@_BCBT?x"l@BB˭sG`@\@C@b@BbL Mt@ c bBtx@bAxSA{¨_#h !@85G@`!R 9_ { @b )SB@_[ck3! @ ,T qT Rr! R?k TO@ @!@?@GG@[ s LG8?@?RRRRRR;C)v@9 v jTqs4C@b* ;@b* @4nq`TvqTqߖq5~qrqZ[_{T@sEq?@` @zG@?@5[BcCkD3@B*_@!@AaSA{̨_ RRR RR RR@*5*'O@BRa?[@GRRҀO@G@" @?@!B7G@R҃@4S@AR@@B@S `S5@ 5@5W4S@ R!:~[BcCkD3@R#|S@ !:Rh4R4RRR)S@ !`9RY& S@!8RQARpF@OrCRBҡ !DS@BRS [cks3 G@@?1T!4PE9"(QBx? qD@z @EAT8@@ @BQQ8b8!@*!2@cx$P9!_?qT@!.R@rBQ{cBS['m"@? @.!T ?qT R Rr ?k T`@t @@7 T# /n'5E gc!h j))aT@9!@@4$Eb8e@C4R7@( D9|@cbTd@9@d8BBD9_TR c;@!h j))aT #@'@B A`?@@ SA[BcC'Em{Ȩ_BRRv@7@CT /a!#'_{S [G@ \E97@3 `2@98qT`@!ҴGb@@@B92@9`@ @@@@I97@\E96C`@Al@"T Հ@8(q T?T [BSA{Ǩ_R c B@@ D@!!aB,@` B@.G@@@@ @ @x2TcC3- [BcksY\@Z\N$ @\LvXx@Z@@˜{7 G @@@^ \@%t@@@B@#p ; $p7@7t"x@b8x @@ @" @ I92 9[BcCkDsE`R ;cks{ !G!@A!@"@B@{#@bxbB@B@_T {z_ `Bck{G9c@k@s@?#RR% CR!=Bk9k@{G*|GRs@9*kk@ !@=5[cksM {xr[c*B@/STG@ K4l@ @6$E@8@@7` Tb@9*86#_qˉT!G8b8TG2@`@l@?T** rT`@9E`8"@4RA( D9|@ciTe@9@e8BBD9B_T#RC# +@?T#@  \E97B8@@7T`@9B/@@ASA[BcC{ƨ_* r`TG@`@* r`TG@`@l@#RRa!+ !`>5# #{xrT.1T(q!G!@`T"\@B @6B$EB@B8@7"`@cGD@9cd8B"`{_B$EC@b$@Bb$$`B4B b$?`"\@ "\E97BBB8@7"`@B"`{_֡ !>5 {krS[c*tsxo 5RGRxLG@$E3`@4l@`@9 q T(qT`"j Tq`TT7b@3`!`B*S$@e! A$_ r`@A@$3`@4l@To@j T"@R`@9A@q`T(qaT|4`@9qST`@8(qaT5`@9s3`SA[BcCkDsE{Ǩ_T`T#RR@9NG!Rb`B _kaTT@6T8@8a`_!j@Tb5T9!G@9$E!@@!l@$@?TNGRe? j,TlqTqT5$E@3a!*ss@4RkKrTKRI4k@ `?$Elq@ ? @R!S$@W$*K@$)G @8@ @$8C!8!@ @ cC(NGca㝇6*86@!?)Ta?T@9"_q!TNG! *@ @y 4@9Gc8GK@j`85NG@y6@95NGa@PqAT#RRo 8@5R#Rh@9{NG"`:$E@8@}s@@zTA@9NGxaR!r k!TZ@@GR!$x@B_T"_mTB@9CqTNGBB**b"B@y7b`!R?"jAT NG#R8@@8`!jᗟ_jT@D@9l@ ՠNGOG"Gd8D?T !T @95``@4@9A@``8!l@?T@9?6 @ ѿT-˿T@9qT*O@@ x` GH#RRGCTG GD@l@?TT#RR?@@9?@?r?@aT@@9NG"`@@986@B_ T"_TB @9CqATNGB@*  @y6_@@95NG ` Ӈ6X 8@5RBR"H9 9cC*R#R?@@9NG?@"`nNG*w@p7@@8@6@9NGcxP@q@T@9Դ5RrT@9B@Rl@9c@9LC@c( T#-T @9dqTNGa!*!!@yp6rG!T@@94R`Rs~rpT@99wc `!(  G@C9?$qAT8@5RrT@@!ARR !?_8qT_8`8_8 R`8bT@8q@T`8@9{ErsT@9&$8_8b9c *!@R$8b_8b9c *!@RcC {[GsBc@@|8@ 5S@9qTxlqTd,@%ReP9 @9q.T@9`vQq Tc RB-3 q-T`@$H T @9tq`/T@$hT@9c RtqT3@bTk?@9qTSA*BB@Aʁ8{@[BsE_փ @9`xlq T!$EB!@?@/T"8@@|Sr `(Tq((Tq 1TqT@9 b SA<R[$6kD<RSAcCc R3@-T[Rk AcRcGqTrqaT@97[F9Y4 *C7@C@$R{*3@(8T*@9q* TTqTqT!RLGz? jT@{RqDAzTC`ks8{Ks8! 'En@8@` 7G@\@! ! @6l@? hTT #RRkCk@C@@9qT@94 bkCkk@C@ @9 Тkba+QeQk@C@;@@9*7U?sq7@ T@{{?@*7Ka{C9;R_q7@T Q?qIz`Q\E97!B!8@7@9!RLGxb? j 4G@RkCB(k@C@ TG!@"\@B @69'ER#@c8@#7cRG@kCk@C@ {QV{C9*Q@986@B_T" _T @9CqaTB@*!LG@ x`@9 5!LG ` dT@94@B_dT@9Bd)TKRkCq`[Qk@C@0RSASAcCkDc Rw3@Tk{+Q<q!T@DQ4 P@_6c Rc; 3@Tk!\E9R7!B"8@B\WBSB9B9*5 " *7C7@C@`R{*R{* 8@|S_rB `T_q T_<qTDQR kC4k@C@:SAcCZ@9qTqT@9q!TSAx @R*$(T Q{$qT ) @9Q$qIT R *SckGR* { d$EsG@c@`e@$@fPE9k`y`d@b``xd5!aH9@@9q`TR@9qTc@`(Ra@5aXE9? qiTaRaX9 @{¨_ (R @{¨_{!RSbG[ckssH@!B"@o@_AR&E} RY@J@V%@9,@8?qT @9 7RR *!LG!i! ?kaT\@8*`|? jTqRAz@R@zGTm@BSaG;@ao@?@T׀K{ T{GYRxRK@b@DZl@B˳*"_(q T!8b@Zl@?"T"@9_4qT8"@9_(q!!%@94qT!8aG9"@A\@@l"@!@@ B@5\кТ@ D@!@B!ҡ@[ZB@@B|@ `7 @< Tq`T@Rq,T`G@@cBA @s@4@@y5'm{G@`x@BQ_@CLmE9_a@л {(XLG{ \@@ l&E `!`BRB@! A$+r!T@@} @_8(q}T&E`G!@@6$ _@@ @ o@_8_(q@T @ yGCRB @\@N9@ _@@@!@ o"cB!s@B?"c?%c@mT_8_8?4q T?(q "T_4qTw4!o@׀!? T";`;@LT_cZT_8R!LG&xd k!TGB_TD@9{d$j!T_KTТ@9RLGxb? jiT!_@BR`G@ l@D@@[ @K@ [_@@@y5K@ARBo@B˶`@a @@ S@S@|@?A!;W64Q_)LGA |@Wg;@bT@9G(qT@cB@cG0R`4;@T'm @?qfT!Q &EsG@`@V$k qT@RT_8?4qaTaGBR89@5@9kT o@׀kT!5 _@@?q)cT!QC@"_!cB@@ s6 A@!@6( m o'Fm@A#2T&EsG@w@8@7^@@* @*6@ @@*2`*@2 ՠ>B@ o@!@AK@!_SA[BcCkDsE{Ψ_s@K@ c@ARy @c@9" P@|4@@@R _(qTaGBR89@ o@!_@ o"@!@@_4q!TR _!T`w|@|@]ATPThT@9W@Axa!jT!(T"@9{b"jT`KT"@9_(qaT|@A@_@Gg@ |@sEG@! aGS@h:8׀!@@??s@ `BQ `#2T'm?T|@@@|@_@g@*?qqaT*@9@@ 7]@@ @6m@?!!$|JAFd8@9!!$xJAFd4@9!!$tJAFd0@9!!$pJAFd,@9!!$lJAFd(@9!!$hJAFd$@9!!$dJAFd @9!!$`JAFd@9!!$\JAFd@9!!$XJAFd@9!!$TJAFd@9!!$PJAFd @9!!$LJAFd@9!!$HJAFd@9!!$DJBFa@9BA$@J_@9B @y U@9 R  @A?$q@TX6@ 0@9,Qxr!_@"@B5 @> { S 9 $Et@$@aB@Ax3aB@@ @-) @Q|@ahT * g;`&!RaSA{¨_ҭ!H !F$˧"@#A Ȅ@@B“!#aB`AcÓAT ˟qH}  TTq@TTqaT@9!dCʀB“dAʣCē ʄ@b cÓAc"`c!b cÓAc"`c!bC `aÓ"@`JqTTqT@9@9@9 @9`@9@@9  {S@A\@x6s@@=@ \@x \@A\@!xA\@`@? @qaT$QqT` @@?T@TSA{¨/@@TP6@?q)T!Q@ \@x \@A\@!xA\@`@? @qT@ \@2 \` @` SA{¨_:@A\@7 @C@T{S:@SSA{¨H/SA{¨__ {_[vS!@!s@1`@6a@ @`!<@A4@@q DCzT@-R#ͭrk`TB|@R# CR!B#1@@82G1BRSA[B{è7@q DCzT@-R ͭrkTB|@ RR@9@c1 CR!B0 $ @c @q@T{=$QqT$@@!r= { @@!a@a@4@?q)T!Q  @{¨_y6   @"_ @q T!!$Q?q( T@ "@",4{_q7()T STA[ Rc7ks;@b{CG $@F;?$5L@?|4@?;pB?|9@?@<R @?qT!Q  @?qT!Q һ`@?0q@T3a @?qT?qT!Qa  @?q T!Q ! @?q T!Q! 57@@ $@ qT 1"._6`@@a<@G@@B4!@?@`T#" '@DR҄@9[TLqA>T@@9$q=T@ @9q=T#RRs.s@Rs/@s@@ #RR.zRs/@s@@@ q1TA@9`R?q$@z!1T  -A@Rr?kVTA @y@R?kUT @ !9s-s@@T4A@9 RB7ss@ @@a@ @2 @!Rs<0s@BA@ `?QT !E/,f **@=>/ *Rҽ"{ )S0E)** @{è${ *E0q@A ?@|@p$ @"R{è!R#{*S*aB @$@'A,!T ?q T R RrA ?k`TuBRB?0@?@#@@ @!@#BB*w$sB'@a@AʡSA@{Ũ_){Sc*bBk'mC@G"R +qT[*ZQq T s/m@ @ .d'ERCG҉@j@&,BRR@/'@/(@ !,* ,RR*+@@A\@!2A\5/@*#&%R/@HqQQ Azx@zTL'{'EgBZGiJsE/Gm@dq T 5 @9pp+R!DC) @?qT!Q [B  ! # H`8a [BgsBfG@a@AʡSAcCkD'Fm{ɨ_4 @g @ "B@@ D@!!ҡ@B4@ZB@@c:@7_|_|_|_|_|_|_0 @U @_@\@B2\@C'@ ,* b,yRR*2+@dqT'T|@|@i.lg&{'EgBZGiJ[BsE/Gm̎@!A,_T"@9?qT + uR"B4@@"D@! ҟDR$@ @ :4s/m#:Rg|'[Be@ \@x \9 ҠR&~#[s/m' {S*@0@9$QqT[?0q` @T?,q`T?<qT@ SA[B{ƨ_@ c Bk+@@ D@!* !R,"R)}ӟ*q(TqTk TTbѠ cCkD+@@6qTC T:qTa@907jy8!b @9 |@T) .qT`@@@? q TcCkD+@>qTAB#xxcZBjy8Rd@D{8/` @9>qcˣ!TR"RA `"@xC! 2@ @@@!@@@  @,} *#!hb8b@"&;#BѠ @BxxZB.q@A{8@@`T?R@r" @ 7@2 @y!iR _k!T@9qTR" R.cCkD+@D @ @@x2x.@jy8*b@%[>qck+T2qT.q -!! , B$tC!?@@@y, q!0! , ?0qT(T?$qT?,q!T@B@_?8qT?<qAT0@9$QqTR#*a4`@@R*@B@_`@ @_{cSkWB[6sBS@@w3*T㋇R$x @RRRc*w)@`2@9$qaTAR$F@jT` @@a`T`,Bw@@ASA[BcCkDsE{Ϩ_WBR@l"v @-AR$F@jT*S@@aR)@@R҂ R.R)a @@!@@a&{ -R @{¨$&  @a6@AP@!2AP@" @7{[Rk5r&EcRS @w  Bb@@ C@d|@T%_8q T4E @9|q T!@!8@A 71 T$@9 6qm T 87LGe@P 4z @@3@9$qT@@@@7+R&EC @@a@@`$@!x@a' A @`!$@!%`@6@@<@`4B@ C@Rc@$+@s@3@ @kT P@x PSA[BcCkD{ƨ_!_8?qATa @%0@9$qT!@!@ATB@AT @6 @P@`7yA@! @7LGe P@q#RR (s@S@џTqTB$@9Cq!TA!*LG! @y_%& P@x P_{S@3@'@R @@9v+@@a2@9@\@?$qT`5@SA{è_ B@sb@ D@! @@\@A@4B@D C@9SC!@\@6@+@ \@x \@@` @` @ \@2 \SA@{è_@@k+@ \@x \@!@}  {@"\@x7 @ @@!@! *{CS[ck_,$*~SnS@`6@ @s@-"<@B5 ;W\ @+@!`F @@ K@`6@ @@,@*_@qR** @2 RwRrWrO 2@9$qTt _@* @ @!@ &@kTT_@T@`6@ @!<@a4@@q!T@kTp $ ! O @B 4@[7@   Th@Rf" _@RR**@@3@9$qT@ @@"@5 @@?q%TsF;@{ASB[CcDkE_s; *@Rr ?q@T  RkTO@R ,@; _@@2C @3@9$q TT@qI T @@?q`TsF;@{ASB[CcDkE_րR+r@T_@@9q` T T@R`r?k T fO@W@**R_@_T`@6a@ @ !<@a4@@?qAT[@ !5eK@o7_@@$Rx @@?qaTA @3@a@!@@@?qIT!Q` @` @ @@sF;@^ T!Ҁ@!T @y@R?kaT@9dqT ՠ@6@@<@@4{@f R!M@ @@_@{ASB[CcDkEsF;@_ R 5!RR([~';&@?qDAzT@?q T!Q @ @ B@b@ D@!!ҁB0@B@R2r``@`@`@ b@@ `7a@2`  @ @@ @@lA@!@@@?qT!Q@@@ @i*`@ҀR!"G"G@"P{  )) E)@* @*{è **{S[*c* SA[BcC{Ĩ_T"T @ ? T !,! *R @@@@`X7*V6KRRҸ%@[BSAcC{Ĩ_*Rr *v7RKR{S[*`B*# @@'`,T qT R Rr` kT@ @@#c2*sB'@a@ASA[B@{Ũ_BRJ*@#@a"{  )U) E)@** @{è| {*SbB[*# @E@'b,BT _qTce*XsB'@a@AASA[B{Ũ_ Rr`  RkT@ @@#c2*BR?)@?@#@"{_ [*kBScs{@@?ҀT@@,qT@,;T qT R Rr@ kAT@ @!@;BB 2;)`6 CR! Fa,<! R@8@@@B7!@!5@!@?T\@ 7 x7@@@s,s"RRR$@'2@9$qTR @! B @@#AD"@B"!`N @@lA@95BR CRB![4R`@2`B?@@AASA[BcCkDsE{Ȩ_@6@ @!<@A4@: @ P6*(@@P6?4q @ T4@@BbR~ !@ ?T @Rq r2! @ \@2 \@\@a6BR)@;@=R$@@-{7@@@P6@_4q"@TccDS8@Rc 2I A)x ?q)T!Q @ @ @BR7&7@@"\@"h6"@C4 @#\@co6! @!"q & 4"@B  {S3*[cwkas30@9,qՂ_Tbq@A(TIT@8qTT˿T*T !4@**&gs*R\4@@a@ @3@SA[BcCkDsE{Ȩ_#@9qT9A@`Rr?k TR ! #4 !@#5Rw$@zT@6@@@`A<@a4@ @ qaT !@@G(?TG@ @@ ДRRRC^& *R !RW4fc*J@@9HqAT2$E@@gg*|@Q%`2gsg*n#\@b$B\"4@B"# cc@9cSc2k*gYx7 @@!@?R]#@@ @B 2%'@q  %@@?q7 @%@qX@@<@4@@q@ {S[*`B$ @@Ҁ,T qT R Rr kaT@ @@c2csB@a@AʡSA[B{Ĩ_BRb'@@y !{kBBScsC@ooa R#@ @LC)!`Fs @s @@?k Ta RLR 'ER R! B9[@@S`@7bU!@`C| IT`@rTP7 @7X6` @ @A6@@ @6R/@4`RR9@9ZB*oAA@Aʁ{@SAcCkDsE _ R! B`[R@ , c֢ P@3҂RRx P B@R* @b@A@ @@$\@d x7@@@$ @D6$@@<@D4!@@ qT @ q<RTqTwq*s. T!bjx8xs@y-R kT R?@z!T @ qT @͎ҡL!T|@| @ P6R" @@@9qaTR<Rs*.!T5@ P@2 PA95[BxRb RR9q&j!@$ @$7 "2LRb R9^&[BV`@r@T R<R9f`@`@T` @@9qT`@@`6A9o@ 4[B3o@5@@P6 @ @@ ! c@q!6@@<@@4@  $[4 R a҃%{;$ESk**s@aB8@"@aA BG`7[cX3 7;@ @@ X6 @ @6@@@`66@"@b!<@a4A@R%{5@ xRz6 @9q)TX 7 QqT QqIT?Gq T?[q-QTtR?sq TP@9qPTt$@OTO!R QRq(T ! ' X`xa R7@_6 @ @A6@@@66@"@B!<@a4A@R%u5@x $QqT[BcC3@ sB@a@AaSAkDsE{Ш_*6$raT QqT5;t@RG @@9qT@ @(T @@9qT[BcC3@;@ 'Qqi3T QqTv@R;CA'*qO8Rq)T@1A%T@R ?5R@17T?WlF C@(@E9$4"RWRD  !@{9C@R9 @8@@ D_"@(G_A@@@g~KF!@fBC" C@Dc@@@ @h h@@ @v V@B #C@ARtC[@@!'KI$F@6!AC!@@?TC929{O@F@? l?T@q!$TG܆@H$5bH4?@@`?@< @ c,DBG Cc@BB |@@?C@8tCG@?oqG C!@@<<@"TqAT/07_D C@@@#D6Ga@@!@C<W@WF"lF@F@"@@!@! @A @!@!@A @B99@a4?Wq@BTT?Gq?TT?qK>T?qBT?/q=T`@ =7?@bU@`C| MT`@r@T@GP7C@7X6` @ @BG6@@ @F6RjR `4?@[B@cC3@RRO @RROzqRRO ՟qA ;yp*8R Qq ITRO?WlF C@(@E9 C"tCDC@!@b@@yB _ qTb@9WrT"(@B7#@ RB (B@9W"R q {9 TqT76`R9?Oq/T3T`@4L q*T`@@ǟ?gq .TT?_q,T,T`@4L q)T`@@?3qT`@@hX6{ @` @` [BcC3@7[BcC3@3?oq@+T-T?sq T?@[B@cC{3@';@@@ 4?@H@`4@ ,g) `!R܂i8i!Q!|@"@4?@@`",@ WR_ q"R {9`T R7R9a@ ??k T4;@ @ @q T?@#RR@!`P@ *7 @?q)T!Q %?@@ARR["D[@!@ 2"RWR  {9%TRz!@@9qɸT R;t| ;t@ QA'*!RqRO?@q QAz)T B@b@ D@!!a@B,@ZB@B/` Ff@AC@f@B!@_a@# a@? `@x2` TcACQ@c@{x"b@B 2b}4* †_@QH1AT\}Ӝ}=@9qHT;@Zr@ ! @ `!B'SdFX6@ @AF6@@ @E6  H6@ @!<@A4@@ CX6 @ @B6@@ @AB6 E6@ @!<@A4@ @!@~ ARǟ>AR8f9?@[B@cC3@`@4L qT`@@"`@4L qAT`@@ן`@4L qTAR ;@TBR[BcC3@`@4L qT`@@ `@@@9qHTiARAR ARן`R,`@@T;3@[BcC;@xa R@@96@" *a "Q_q TRkTO?a R`@@@97u@9qT` @@9qT !P) X`xa ֠5RRO +Hb8b@ ֠R5RO?DRORO|R@Ol@9Bq4xTy@%*wTw6?/qT,T?q T-T?'q TT*@WСlFO C@?(@E9T?CqLT??qT?7qTT;@@R@?jTz@ Q5?qMT?q Tۂ@"RRУ@@?O#Rۆ@R?!R@;@ ;O5*@{&@Rۤ.@ۊ@"R4RJ@ >@ ۆ@R?#R;@"R!@!  @7?@bU@C| iT@rwT@vW7 @7X6 @ @A6@@ @6R.u4qTG!R@ ;&@[ R?ۆ@; RRR.@TR;*@.@TRy@>@R[ ?#R;@BR!@!  @!0!P ?qT@@ `W~@{ RRRiRAR `WAR  @ 2`@@@!a@ [BcC3@)8RR=8RR:@@`y[c3@@9qiT**4дД@ b @ vۆ@R QqcT[x@a@94`? j~TAT`@9q}T`lA@95a"R9 `C9x`4D@95`slAs6D@9`9W9`F@Z Д"Z#`lA@9 l5`F@4@ ]\hV_R_@gRR@ sR@ R!@ ` ~R@ ` yR@ tRa@ osnA?`@9R_jTBRd`@95`F@4@ @\_Rj_@A !<[ 4`F@@xA@ UaR!D ss&Eb@@@@?qT!Q`_D@Wa!$E"@@!a@!D @@9?qoT1AoT@@9 \595$\RV*Y*-R*[*kCza}T RT@\T{4@  @y@9cy 95` B@Ya"@ D@!`!a?B @`b@[ BB\ Z2{Cc@ ?|!? R \@9?qT@9?qTSSAR_^_@@@9`4dRqLG`! $CzT@@8 4`q! $CzATqIzT @8qIzTq`zTS@S@X 7` B@a@ D@!`!ҡB4@dcbRBBGcB%@4?|?|?|?|?|?|?0Vv @A\@!2A\@dNa! B&6@y`@"D@!`!ҁB0@wb@RBBrD0@@@ @@ l7@a2 LAA NNU^B B!$@ .]O@`O@?!R N"!!'VcR "R%!\R@ iF D )A@G҃(B @ BFSRR"R @4?RaR!dB @A@!A@@@9[ cR"R@ @+RR"R 4@@ @ @R@ @ ` @@@9M@ ATcR"R@ `RR"R 4@@ @ @Qa!`D @A@!A@@@9y\@ cR"R@ Q d@@B @B b@V]baBF!XEB@9 N4`hA@406`xB@94!6`dB@0@9B$Q_q2T!6`F@0@9B$Q_q3T!6``D@0@9B$Q_qIbT?r@T@ cR"RҞQ@@4`hA@ ad6A !`c4!bU@`6{X`F@]4@ Z@]Ri]@tA ! YB5`\C@!2*UY! @?qYT!Q! @ ;]a!A @G5T@ R\*@_5`G@C9^5a`s!$EAsVB!@@b@?$T@?q[T!Q@@@`A`F@ @?q ZT!Q`F`F@9A5`!RF@9?j>TkTa`!FE!@@?L=T[ab`!ABEF!@_a@O` B@b@CRBTACOOFy`@9q`&T@ s@\;O"`@9a`s"R`C!lA9"9`@9s R`@9`@95@@9Q"@5@ N[`!RC9bWF@``@9`5@Q`Q"F@ S`A CR!4F"@Or`@94aR!LG `_ jTtA !X@M4A !Xu5`@9`4`6RSUsw T.\RI`aF@RT'6R=Q"D@@`I@@ IG`F@?4@ Y` \R]\@RBҳa !TVE7*RS7@ @qCTR@RA !K R\a"!}|T@9`4`@85@ O`"RA@`@a TTTa"!}(T@94 @85B`b`@@@@ @@@A@C Rc!B9S`hA@[@@@@@@AB9C RcS`hA@TlW|[@83?q@}T]\`@+Ta@RrR ? r*` UTZ"R [@951@T*a !Kis RR@ n[cV[sc@Q[R[@[B9s#RJsD`=[CA !kjQ5@#@9R$(TCc@#[Xr`To@{@(%Tk@* @9$4qA(T @9'4 [Z`@$Zz@uvZ ZcҀRSy`F@R@SYB @`YRW@@ P^A !@{W#5`\C@!x҃K@*U@`7*RkR7k@T{AkTkTAk!TsAW6`F@9`5@ YaOss&E`@J`@P`TB@4[R!L[@@ R!ҕ@9Pq^Ta`"R!lA`C"99#@_8 RB@_8QQc!q IzDzT@A !@P5^V[Sb@RUS#a!$E!@3@a@3@s*CY@ NYҀRbRA|O7yO:Sb@lR*qUk\TM*4WkA\T X*b@dGIJ&S{`ORS)o@ FW@ @AW,@ =Wt ҠR+RS4@ /W@@@@@ AB9C RcAR`hA@sA`_7C`R Rb@ W !R4A !! R@ XRRb@$R2@ Xa !D!@VA @ !@XS@@ X@ X@ X@ X &@ X@ `X@ * X`$E@@`@@s*RQR{dbclFSRBF[CcBB@@e@?'Pca#cC39!lFqd@yy"T TsqsFT q T`F@``D@0@9?$q TXA !5Ja`!FE!@@? TCy R55Q`@?@kTa`!FE!@@?LT`sAsVB@b@T@?qT!Q@@@`A`B@9 7`D@`0D@9`4`CyA@4cbacCBlF!Bdy'@C@!@ASA[B{ڨ_@@@@@MMb?@RBTACDLRb@`D@ `F@ `aRF!TA@"dcabcG tCBEa@_ ?RO Rs`sDBa@@?`Tut CD abe@c!G@&@BBcFCD@@@"@!@! @A a@!@!@A @a?@T*N@@@!U`B@ba`$RBG!GB@tCB@!@D` ?ָ`0D@94``D@0@9?$q`TW@@@@ bA !@BDB@RIRO`$F@ (6`DB@`!E`E@Ab?@cRBTACKs{ iP@4a1@T<"A@ssB`@97@7v"A2a9@ A I`@9x`9ka"A@@|41<@R@N {a!A *!@`F@oKa`~@cb!Gc@$@BCx !@ @ @{¨_  !hG{S[c*#@3 @st@RRw]bS!R*SA[BcC#@{Ũ_**F  @!6@ @!<@?qmT@CD G@R@9>S&Qt@Lt@R?1TT@@@}  {S[c* @ 7X6s @RI4@ ,T qT Rr! R?kTBRTRP4`@@6`@@*yrAT@ R 5!R@R`*SA[BcC{ĨhRSA[BcC{Ĩ_RK RSA[BcC{Ĩ_ICa@ @P5{@A,DSTB!G@ Cd$@s@@F 3sC@3  TL` HL@H CSA@{è_BTL {@A,DS[UVck@!GDѣ C!@S@b@`ÂB|@33Sd@/4x`sC+ qX3ˀT9R@ rTLTB€RK!RXP q@T CւB/@@ ʀSA[BcCkD{ƨ_ RO@QxF qT+@T! !O4B2*QB} @@` 7r TO5@@/T qT R Rr@ kTBRCS@Z @@@ @:6@9@Y!<@A4!@?# cA"+@ @!<@a4@ R@ @@+$@9ZS+~9#"dB@K `5Q {@,DST[USc#G@ C""@ @a@cB@ d@/Cq7 T q T~@q`T @6kQ~@Xx`@7rTL! !/KG@xvQO4 @@@ @ 6 @@Y<@ 4 @ c@+R!@ @@!<@4@R$@9S)Q+@T! !N42*P-B C6EsB/@`@ SA[BcC#@{ƨ_@.T qT R Rr k!T@ @@+K~@ @xa @A,!T ?qT RrB  R_kAT@! ! 6 M+RCR@BRR9#A@oJ{S @!-RCa @?qT!Qa @ @9 07"@@@9 07SA@{è_3@3b@976b@B@977"RKJSA@{è_J*{ QR @@{èҵ{ /Q/@ @*@{èң*Ҟ {@,DS[UVТG@ C$B@ @s@@ c`#CqT~@}@xt @X6@ @6@@! R!:RRrM@0@9?$qTq T@Ҡ7 @84P@@B<@4B@qTX9#@cN 5G@x4G # C@9SA[BcC#@{ƨ_RH@@@ @?rTAR IM 4! R!NrTR?N9#q@TG@hyM 4! R!NrTOcDFqmT` @! R! 9RBR MZDWD@6@@<@@4s@DD/@D/@$ @9O! R!TNr`TDG3@-D`z4G :@!xtO 6O 7ODD {S @"X6@RC @7*SA{Ĩ_[@@! R! ;b@yG T C2@9?$q@@ TOVP@F@ -T@A,D!C@!@B_ TC CcGARc@cCC Hv@Ն_U@@7AbU!@˿C| iT@r@TP7`@7 X6 @3R @!6@@ @6RbAA@Д C!FE!@@? TG*SA[B@{Ĩ_R*SA{Ĩ_ @@DSAR[B{Ĩ/FR?@R@3RhTR @@9q@@PBI {ST C[@#OO`@ 7r@T X7P6a@!@BRC5AB!,DBC @B@ TAB!GBF!@!C@@ MT@ C BV "@3Ab@ D@!U!aB @@BUB@ F|BCc @B@!?T@VAJB@Sx!b@a@! 2a_ Ow@RAR v b@B*bG C@@@ 7AbU!@˟C| T@RrTP7 @7 X6 @3R @!6@@ @6R@@FE@@?T+G*SA[B@{Ĩ_a @" @B6"RCnGR*SA[B{Ĩ_ր@@@3RTR @@9qCG3R*SA[B{Ĩ_>`@E[Du@@B(HZOL>My`R%Gc {@,DSS[UsG@ C"c@!@@4a!Cq!T~@R}a`xt!@ArT@a@@ x4`@SA[B{è_a@@@ x4`@SA[B{è_ @;M {SNR>OSAR{¨A {S*Nb 2*O*SA@{èA{b 2S*O*SA{¨A{S@"\@x7 @@@" @6"@A@AB<@b4!@@ `Gqa@@"A Cx5@SA[BcC{Ũ_#yh` @`7SbUa@ C| T @r`T P7`@7 X6 @!R @B6@@ @6R<#@ @R@!RiT#@#@ @#@@R @#@@9q?#@5;! !=#PJ {A R!,DSr[UVc R @rG% C@B@3@~@@ s˗}@xtsC @! ?kaT@@qLTJG@> C`z4@SA[BcC{Ĩ_ARD! !`=J {A!,DS[UV"@GD$ CB@@S@s~@b"!bxsF @cX6t}!C?q"W@T?qT@@``x3@SA[BcC{Ũ_@ R?j@@AT`x3@SA[BcC{Ũ_#yh` @ 7XbU@ C| T @r`TP7`@7X6 @ @A6@@ @6R;4G@@2 C@ @@@T @@9qT յG@@ C@x8x3@SA[BcC#@{Ũ_ @@?i:! !=#I ABD!,DBG#@B@e%Ce@!@c|@E%f}!Cxc!Ce @u AzTe@!R @* ,qTC B_֠@@T@` T@# @c2# @  TC B_{! !>DI {A!,DST[VG"@ CE%c@B@@Sb"!s~@!C"Q_qbxsTD @X6u}?q"W@@T @!Q*IG@= Cz3@ SA[B@{Ĩ_`h` Rr Rr @B _kT@@* C* ! ! >H{A!,DSTSG"@s CC#@B@a@C"!!C?qTa|@5}Ӂxa" @bX6 @"ѧ=@`SA@{è_! !>H{AB!,DSDcCG"@CD$Ad@C@!Bb@#g"@GxCq-ITI6sq9T|@CGTR[ Rk9͍RR;RrrruU@ @" _q`T!  R?kTBRJ@9_q T_qTC@?T@᭎Rr_kT  `?H_qaTC@?T@R.r_kaT@y!R_kT@9?qT@0@ @07A!@@_C| T@ @Rr T+P7`-@7 X6@@7R @A6@@ @6R: ՜CT[BkD@ st@@ 57? @q@T@X7RR9=0@9$QqiT@AG;Cg@!@`@BG@@ 8SAcCsE{ɨ_@@C@@@9_q!TC@?!T@?kT@9?qaT@"@ @ 7A!@@_C| T@ @RrT P7 @7 X6@@;R @!6@@ @6RC1:T@yR_kaT@b@ @ 7A!@@_C| T@ @rT P7 @7 X6@@R @A6@@ @6RC :RTxC;R"Ts@@;R@R(T;R@@C@9qTb@@@;R(TR@@C@9qTR@@C@TJ@@C@TBCRbT=7g87@7b87@t @ @"_(qTA7!? @q!TB$Q_qIT@_71!$Q?qT @@`[[4@u> @a7@@ {"3 `B?@k@@c; R BRBRR B@` @(JR@` @(JR`@` @ H@F@@ T 4@@`Y 5A`!@ `F5A` !@ `Z5{c`TkD @?qiT!Q @AGg@;C @} `[B@@`@7RTR@@C@9qT@@C@TCR"T777@v*Rbk@k@5 ?jc#Ty5;@`4a@!@!@x7@ Ё@7 HQ;`7@@k @ @G;`Ak@!@ `4@A@@@!@B @BB 25HA` !@ `4a@ @ `@.;{7@U@7 @ @";`7@?@|CR H` m@@`7 @ @A? @qT@ _6BE|@R;R'|@^B! !>[ksgF[k@ {A!,DSS[UsG"@ CC#c@B@@Tb"!!C?qT~@}`xt?a@ @ x4`@SA[B{è_ a@@ x4`@SA[B{è_! !`=.F {"!B,DS3!PC[4f CC@G$@@fF@c@@u#!!C5@0@9A@(qAT! @$@R҄ @?a C6@:Gs C@5uSA[B{è_ @`u@5!!C5 ~@G@s C`x5@ uSA[B{è_!E{!!,DS43G"@f CD$d@A@@"![a!C%QqT%@|@c!ˢPC}B@V@?q#RT2@9@?(q`T@_D @Ҁ?a C6@9:Gs C"р@uSA[B{Ĩ_ @` @ G"@s C`@uSA[B{Ĩ_x`@7!bU!@C| IT@rTP7@7X6 @ @6@@ @`6R7G$@4#R@G#R@@@@@@TG@.6G#R@@` @@9qGT@! !`@@5g>@@@hT @@9q@T@RY 5TK5 {D! !dD {!"!,DS4[65ckG @BtCѣ C%@@B@@s9w@"@?@99rsCaT D@ (@7!@ R"@9 F@ T+qTG9@3}`@xy|=q !T @@(qT8@$Gӡ5! (!bR R`6k989|S! 4*"@9ARv88 C`@B?@@ ʀSA[BcCkD+@{Ȩ_?qT T? qT?q T! !`Yn8D@@@(q@T8@! (!bR R?qA T9!a@T  C@ x9`@ ,@ q F@ lTB=9!` Cs"! @ER8@9!+A@(qE @AT# @!@B 2`B9s"! @!ˠ(ER#EG C@ @8@$Gӡ5ER! !`=C={!!,DS4[5G"@ CE%@B@a@C"c!k!C?q T`|@}әx` @@  B@ !b@ D@!`B` ! @ !` @@9# A5C7@\@x7@@!@[4 R5R RVEa @?qIT!Qa G"є C@SA[BcCkD{Ũ_! !@q ZC7@\@a66Z9R@@@=! !`=C {!!,DS4[6c7sG#@ Ce%B@s@Bu@S3#@Gk3!C?qmT~@};@xu @A,!T ?qT RrB  R_kTsB@ T8R @ Rrr?!  R?kTBRDC@? TsBT`@ @" _qT@@C`@? @AT@y!R_kT@9qaTz@:@@7?@aU@C| )T@@r T P7 @7X6@ @ @A6@@ @6R4 4sB@ҟT G B8@@!b@ D@!!"cB!FcBC @B@ T"fGBAB@Sx `@ 2`{5@xu]; 9 C@;@ւBG@@ SA[BcCkDsE3@{ɨ_BRsBaDgHT  ҁG B8@@8@@@@hT@ @@9qT  o@@@5A?@_52yR4 R!?rT @*RR$>!s C @ tSA[B@{Ĩ_ @! !@ BR! 9! R!{!"!,DS4BG#@ Cd$D@a@@#!A!C?qTcS!>4 R!T?rT!Ҡ` @B,5@*57|@= SA@{è5 @! !@ {!!,DS4[5ДG"@ CC#@S@@bs3c3#sCqT@|@73}vx`u>4 R?rT@ q @@TRc>`5`@r` TY@4` @T5^7|@d= C"SA[BcC#@{Ũ4N7|@T=@y @7!bU!@ ?C| T @r`T@P7@7 X6 @4R @6@@ @ 6RV2R>rT`@rT ՠR`!ҐA @R@4RhTR @@9q @@0 ?! !? {!"!,DS3BG#@s Cd$B@a@t@#A!!C?qTUc= 4 R!u>r T @Y4tSA@{èK4 @?! ! ?{!"!,DS4BG#@ Cd$D@a@@#!A!C?qMTcS!=@4 R!D>r@T @08 SA@{è4 ?! !?{!"!,DS4BG#@ Cd$D@a@@#!A!C?qMTcS!u=@4 R!>r@T @4 SA@{è3 h?! !Q?{!#!,DS4cCG"@D$@B@a@"!!C?qMTBS|}hsE=@4@ R!hs=rT @?! !)? :? {! S3s !C4u`@c @R7@sa_(TR <R w"qx {S*xS`6*Rloka2SA{¨KpRcxa2SA{¨Cp{SsvC BB7`@C@+G6ww`@ARsC!G#BF@!@ctCB@!CdCA?TRBC@@ 7+@#+R@y *{`2b 3 y9X7lA@95RBlFB@?nqcC9!lFc@yy"T TqT qT!F @`?cEAtC # TG@?֠C@GBC@@@a!CG@ (7D@@@Sa@ R?jTa @?q T!Qa @wlF!C?@7@Cy#y4 Ձ!GcFBEC$@C@B@Gc@!MTkoG@BtC!B@C@!@AʁSA{ݨ_5#tC@!T oa@RrR ? r*``T}vCy?@lF!C7@#y5R9a9SGdE?ց!tC @?@ h7+@C@GcC q@!`T %Rd!@G!`Cya !` l="o"CyGoyBA!G@ AsVB@a@@Tp`@@!!A !FE!@@?MTqkCy!ClF?@#yoCyD!C@clF$y@b"@R@s@ @au{S*st4 jAR%r!C"@@_"SA{¨_ARra @?qiT!Qa !C"@@_"SA{¨_ko {S[uDc C@4@ @ @@D! GR@R@` @@FC C@sD@@@ @ @@@ @dlviRq`@@@@@B@!#CC@"@@!@! @A @!@!@A @`SA[BcC{Ũ_ARR'v@'@ wr{h{R}e{S*[m*/q*qi*r4kk 5qRT@"@9_qTSA[B@{Ĩ_ @9SAxPq[B@{Ĩ_ {cRBR` S^jaRtr@E@`@7x2`SA{¨_h`@ 7@`@x2`SA{¨_ Rr` t {CS[aA@7@@!aA h#R` BR #j@` cR DBRAҤj@RBRҥD` !jRr@A` cR,G !BRi@FB@ @! @6R҃"FBRcrFB y@ @ 7!` cR`!BRi@~C@ @@6"FRBRcr~C!R y@ @7A` cR!BRi@B@ @!@6"FRBRcrBAR y@ @7`A@@?qT!QsAwSA[B@{Ĩ_d@d@d@pppm { RR muBDB'R@ƜD,@ CGD@cFB@B @ boAEcFBCfSoLDc,DBCdFoR@CcFBxDEoRc4CBB!XG`_$ @{¨_ {[ASBc#C@/9?qMTBGF!E_aFΝBF5DkFJGXE1D!RcA9UD9(F2C9)9D B_g @"_RfyRrD^B_TEdFrDCERuG_-A RDk5FN8G'AF EdA!RBAhyR?91~BJ@)F?9DAGCC!9 DiE91GkC9tlB%D9FASE9JYC*Jҟ9)D9dC`|A`{BFS!A[Bc#B@@!9` 9 '"4i`lRDm@a !'ni5A9? kmT!9B@9 7d!FE!@@?댋TG@B$EB@"Lh\@aa5f@@?*5DB$E!G@cBC"@`A@!$@!%@hF@cA@d!8BB@B$@B@B@"e!GD"@BA@?qT!QARTA!G?\{gG@@?qT!Q|E!G@?@?qiT!Q|Es"EfA!||ha@@ ?b@@AQa_qTfkE@@?qɶT!QGA@@?T`G@9@5 @* Jks@ sDk!AG!@A9rTaB@@?qT!QA!B@?!B@!@AʡSA[BcC#@{ܨ_ւRBlFB@7cD9cC lF@c@y_y0D@9`47@!ClF#yxC@@?qT!QsGxCa@ @kc`@A@95sEE|G9CD9TG9cA9BF9!E9`@_9?9jB@@?qT!QF@ @?qT!QFA!$F@?@?q T!QhG!A@?@?q T!Q@EG@?@?qɠT!QsA!@E`@?jXE@@?qiT!QsB!LEBXE`@?_tjD!B@?@?qɡT!QC@@?qT!QD@@?q T!Q B@@?q)T!QB@@?qIT!QA@@?qiT!QG@@?qT!QE@@?qT!QDcCBDRB1BA_GECDkAJeB)aDB_DB?|C?_BF!EFcE?|BC@_?@?qɉT!QG@@?qT!QA@@?qT!QHA@@?qT!QD@@?qɍT!QD@@?qT!Q,G@@?q T!QBFƨGAHAcDBD!,G@_?@?q T!QB!B@?@?qɀT!QD!B@?@?qT!QA!D@?@?qI~T!Q8C!A@?@?qT!QpE!8C@?@?qIT!QsBBpE!G`@_?Eia@T\s"A`@`\sF`@5iB@@?qtT!QsB!B`@?`#isE`@`iG@@?q ~T!QqTs"R!CA"@Y]BBXB @!FBAA7TsB`&@"e&`@@?qIIT!Qa RsVB! (Bu@RR_d @?qFT!Q pF@@?q 9T!Q0C!pF@?@?qI6T!QLA!0C@?@?q 5T!Q!FE!@@?L-TA9qTF@-5B@,5E@_Ta BR!)5cD@ @1T|@a !*R)cLYqT$B@A)Bx ?q6T!Q$BsVEvb!Qs"T`@@@?qT`s"T Հy 9C+RC@@@8@@*arTv@b @*c _fvSkTt`)fC@@?@?q4T!Q@ ;]:6]>"R1]&sGV +]`b"&]&`:!]`>D@R=arAT`sD^\a#sD!@`@"$@B ?)}f`sF@wfX`4F@rfsA`@ofab!FBC @?_ff`D@ @a @`DtD  @Uf@SfS`sA@Kf`LD@Gf`@C@Cf`4C@?ffedcba`lA`CB9chD9B(D8!E|D_?YsGGa$f`@`B@ @@S`@t@aJ@9?qTa@Aff`B@ @ @"" @ @7f`B@@sesB`@e`A@_edRr?T3@{@?!Z^@5`A@!B5a"R G ss.A`@eA R! ,^B`bRFBTA@CY_CyQ[cTeFB|@A R!)aB|@A R!@(ay_w_%u_/s_Le`@feA !'9Wg_?c_a_m__]_[_PY_ZW_U_S_\Q_:O_@M_GK_NI_G_E_C_A_?_D=_N;_X9_b7_l5_v3_1_/_-_+_)_'_%_#_!_ ______M___N _ _ _r_|___^^^^2^<^F^P^^^^^^^^^^]_8Cp_Bx" _ {St*B@97@7s4qT`1@Ts>Aa`!AG32*@ ,9oV@9x95a`!AG?7\{@ "S fUA !,iVa @?qT!Qa A ! .`VA !.\VR\^{SUbA B@!;s B@B@IVA !4-Xa@R\{[uS'Bc@7Ҙ@9qT` fd@ Xxxa ր'@9g4q@ <T@ `< 'Ҷe'@cRcLG@9$R `t jq`4a'b@9t@9_q`TqT*a 't @9cTb5LeqtDTCRxXq >T`'DW'@ B7@!@Aʁ^SA[BcC{Ǩ_qT'@8qTqs_`BE@@?qWT!Q@9q;T @9:4 ' @9Y4@85RRRRs_3 V'@3@ )OT" '39eaBE @ BT7@" @_4T@Od TڡRRr|baBE!@"@@ @2 !R nUsBEBRa@]'@3@s`!R|G9`!RC9`!RE9~`!RF9x#']a!hA G6`F9iR_^r>Tc' RcLG@9axa! ?kT  '`@9`x`? j@TSsdcab.ATG'cA@!|G"R@99b9"9B4cRcLGae_!jAT aa_!j0T'@9!5Za.A'@ ,'@9D4cReLGdA ?ka)T d?"j(T'@9$5` .c`lA@95"` *B$c`!RE9vbwaBdRBF @ZB!FD9CA!1T֒BZB"vbawBRBF @!XBFD9AC/T֒BF"`F@9?raT!29'@9?q%T?qR$BzAT'@9?q-T@ a`=?d'@cc@9'RcLGqaf! $Gz5T '@8qef Gz Tq (TCRWa@' ,T qT Rr! R?k@TBRd` Wa @?q/T!Qa `$F@a5RVs`BE@@?q +T!Qb!RsBE B@B`bETa@BR['@sia`"R!TG|G"99``!R0D9Zs`E@b'@ '"@9"$4cRcLGbb"j`#T!bb!"j T'"@9"5! ZaE'@ ;s`Д"RcjG'D`@"9@?q#T!Q`jG@9$T`@E@ @P6@!@ARVajG'@ '@@9!5A CR!`b}VAb`[v@  b_@R2RdRs_3:T\xT`aBE@` UbCRS XVsabCRRV'@CR!'KVaCRBFVeLGRB 5a@8aB 4_kaTd@8d"jTq@zT !R'`@9qs_kTtˁ|@53@T!oo9&caBE a @`Ђ @9!RLGxb? jT A @ !<<'V'@@9!@ 4_ csjGR'@R`dR_@(@92_qs 3Sa@!@ 9'@3@ssA R!>Z'@Ja'@vGa'@BCRU'@A !=B'UA@ ='bA@ ?bajG'@ J baBE~@ @by 7@" @VڣR!Rr!!|!b!_BT_ baBE 7['@E4[vڢR!Rr!!|!b!m_fAi_b#['@[b7E[@ a@ *a@ *aK?a@ *@?a  `{C BSR[*cks;"@X`baGBF!@@U4v84s!RsF`@995ssD`@`/[`aG!B@?@?qiT!Qa`!G4B?`SdbcRlFBFcFB@@9Xb*`BC#lF 9B@yqOy@)T-T q)TqT``D@0@9?$qT`A !qR6ROFya`@!ClF"ya*!BA!@A{ASB[CcDkEsF;@ _65`cba B$RcTABF!@d@T@6@ab@ D@!`!ҁB0@b@RBBrD0``@`@`@ b@@ `B7a@2`ec RTB d @RcAd @ sVdE ЃR"RpFҀ (U@@@?qT!QuA R!VBR@`@@f @%RcR"Ra@ d@*dUaR]R]a!G @!@!cR"R@ @Ua!C @!@!cR"R@ `4@Ua!dE @!!@ cR"RzUa!D @!@!cR"R@ @iUa!HA @!@s!@ !@b@Bb$UsDR`@l]a@ @@]`D@@@Sa@ R?jTa @?qT!Qa aadЃRBR!TB@ B`%@҅Q",U@dB RC@%@BR!U@bЀ BD#@!RCHQA "!4TbBB@B@B\@>7X7R"0r?javTqAztTqT@ @ @7.@ @@Rr As7g@2Ҥ @2@9$qT@@7 RARR@RK$F@H6$E@$@`V5*A@6P RUR'm;V)@m\@>a @R ?1LӴE9B'qh@iDmVTk@aYTW,W@*x6`@6@k@*@Wq%W@`@ \@2 \@`B! @@@\@$@*\@*T\"@@B(@("@@BX@X"@@B$@$ @ ( @ $"@@B@ @"@@\@ @\@!@ \@* \yB5$E@@ @@!(@BAa @A@b\@Bxb\L`B@@`$@V$F@6`F@!`B@@?qJT!QeB'Fm;@@@`Zc@@4@2'hE@!@@ \@x \@@ @?`9T! O@G[@&@\@x7@@@ @! @jT$F@` 6!AC!@@?` TRR BRx$E@@!@!@!($@ @B@FBRRR ,G@@@# @@O@!@RRR @@:!,DBC @# CB@ x@\T!GBF!@!C@@[T9 CR8 G@6(tC9 *5@BG@5 @@5@[@#aRRB@G@!@9qT !5;@'FmB@2@9$q /Tk@ahDT *@q@ \@2 \$E@@ @@!(@BAa @A@b\@Bxb\=R@(@@!\@a@6 @`6R( G@@@6A@ @k@@S`B@@@\@!@!\@!*@\G!@;@QR @]TB@Tk@ARR@RZ[@CGR@OTGR@aRBAT@[@@@ @ ҝ`B@@!\@!D!@- *m\@c@-+eB@ @\@7O@BENg@)`B@@c\@cDc@C5b4T@@c@@@X6`B@@?q:T!QeBGR@6@k@!AS!@ҌVzҡ@R @ @@@ @A6@"@!<@?q-3TA@?4 @!@?qɅT`F@!.a_72c@@ 4@2R `U@ @~7 RARՋ_ARԋ@9?q T?qT?Tq@T? qT !@ޓ52@9$qT@\@ *x7 @ @?q TG!QR @Ő @!A @B!@?B`@@c($@ ! 8R**Rjx?$qT !4RR@@Tv5 ! 4R H!F, $@'A %@@!B“$ BAʄēATB!џqB}B  TT q@TTqaTB@9"ʠ"ʥœ !!@ҀA"ʄē ʂʄ!A"ʄē ʂʄ!A!ʁʂēBB@`[JqTTqTE@9E@9ƠE@9ƀE @9`E@9@E@9  ! 4Ri@!Rx@R@;!Rm@cU@dR@ IR@@?1Ta4  !@4R HcF*a@b A!@ !c?bC!@#B“AT _q}  TT_ q@TT_qaT@9c BC!%@ʄA“!@ҢʀA"ʃēc bc!`A"cÓc bc!`A!abÓBB@`BJ_qTT_qT@9@9@9 @9`@9@@9 5?1 ThA@?4A@?_.b"ю ,'m;_8Bp_!x _8Ap_9{ SGR@P{[SBcks@GB@y{B_q 5TB@yw xqT@qR!2qJz@TaB 8@2 85R6B@y xq0TB@42B.w2B!lA!@9 7!56B@@!@{@R\@2\ƕR RR`Rw @07RR+!RU\-RsB9`:@|S` **9`:@(7B@y@! !lQ!<?q)!TB@ys"*"G@ @@y rT @9`!7G@ R| R`9@G@`3&`@@*B@!@AʡSA[BcCkDsE{ۨ_?qlRьB@@9aR*9aB 8@2 84B@ڇB@Z+Z22Bt4i,@I@5sB*Rh:@YS* ?B@7.@R<RB@Z`B@ya@9 r!aT`9@7R5@ B@y xqT@?RZRTD`5`9 7`@976s@S`B@y qJzT`@9aR*`9 QRj4`@@4`@4R`G@qTB@G@! 2B@yBs"f*zuq4QR!<Cz AzTA@!@@y! ?qT$Q< qT@@0@9(q @ T"B9B @@T 8@7RR`@9774R1`@``@@@y! ?qT@C@9C06A@a`@ ?`@`@@y" ! _ q$@zDZzT@`4&`@'r7G7h,@*R?֠Z!@ @@y  qAT @96 @@@y? @T@9A76@@@977@@@y wGFA:RB@4y! @'m@G@a@@ ,T qT Rr! R?k!lT`@a @s@@.T qT R Rr k!iT@ @{@@9 B (@E H$K!B6FL7#8@FJc2DM5s@s@8sB#8O !(7q A? *|S@z`TO@[@s@{  @K7!@ @)TK@.@9Hgg@"u n  (v&w'R"x@A@9!!}A h{ T*{@ s@Gk_ O@?'Bbr4\@ @9@A59<S@SK@{?{@@Tzas}so s*JQ_ p{fT@DTZ(jT?HT_ TZ *K@ Ea@{sJ?"T@ @9@5'ҕ W_@g!_ A7 *g@aT@lRL4_):T@_ (TLڣRRr0R}biT@HTڣRRr~b kT R_  * jnaWTnT@ 눠T ڣRRr}bӀba@l@92l9 i)`zf TB_h#T?:TK@ B} @7 @ @?TK@w;̏GR;A@w@@9K@w 3 !@6 (>TA =?@  <Tw@} wc!wa??@`w@aK@G!@@ @9JkA3A@} j#zk#j+hk+9*/k@$`8@?!TR#* ?~@T `@8@?TO@?T @9<qT&@9@@f8@9TR!( ?|@T  @8@?T˜:)T?눏T *<W@!G&`8@?a(TRu( ?|@'T ՠ@8@?T[@%T @98Wq>T_ wTC_($T T@P?R T K@ B} @7 @ @?TK@w;GR;A@w@?K@w@9!@;6 $TA r?@Cˠ#T}@! ?u!wA=?@`a 7C@w@z{&K@Jj5hk5;A!@@ @9} s?RTa!R@4_ jqka#T1?#Tp 55K@ B} @7K@@ @?TK@w3G3A@w@@@9K@w+  !@6 (TA ?@  TC@} w!kA Ga` ېj7K@zk7!@ @9} +Aw@?T}u!  ?@aK@@ @9} @C@,RT:@q!у%4_ pkqRTjqPˑTC_(T?Ta!PjaaT@C 4pkajT w+_H T} ~G y@K@@ @9} +Aw@a!QRRja_`T% *8W?T[@)T @98q`TW?BTa!Rja T@aTڣRJRrJ_1RJ}Jb T_TR4kG@{@B@kLTxBhBR#@{@s'ҕW}_T@_ *RHTQڣR1Rr11~1b_k@Tp5? T4?hT}uA@ ?@a .RRs,!B!@"@B"{@RҤa2@9`@?(qAT @\B@y! ta @ C_@TJ?Ta!ja_TT"5j!Z b5*R* @_ hKTLڣRRr}bӁb;'@9G@g8@#WTR!( |@T @8@Tjq5T@ITڣRRr2R~bITJTڣRRRrRR~Rb_k`TC_HT?BTa!Rja롼TRJ_@_@24O *@@?qi?T!Q@@9}A@z@Ts@{@Tza{`?T{`?A;TTc29%4S}c29 B@:Ђ@ D@!!aB,@b8B@@._K@@_@C@C @_ @BxB2΍Ïȍ A`~ÍA_@qS@ATz A7S@_@#"TG@'Fm>g@ÁO@s@?TRG@9a@s4c8D@TA+! !|@Tb@8B@ATT@9_qT>Ty@Ҁ_o@@@9!CӃ@"T @a {_ c a}xc T tCR;T"RdCR+@@A{@@ @ ,T qT Rr! R?k T@BRCɏs@s@ @O?q#T!Q R@ @9!CӃ@"_IT @a_a}Ӡ xciTc@{{@9@ef8@TB+B B|@T Ճ@8c@bTg *R `TC_T?’Ta!Pja?!T@4`kajTpzK@S}@@4@9 `"їj`i TTc29@_@S@AT R!6~@ @!@s@v]o{@[ R!` $~ɤT@0RTgW@vR]RCcB@C@?Ta!*K@{:=K!R@@.@9{@h cx9!B& yHAR _ RbT%ya{bzb!<hT_q B:!T *Rb<_kT#*C d $ "#qBc<yakT<<@_T A!7yByq!yK@@?qTK@!Qy!**qTaB 8@`(72 807aB2 887aB2 8`BqT8@Xc6AP@!628 @R!F @ZB!FBAT`BZB 8@?R!@R! @4L qT@AR2T<z|@R߃@R @4L qTՃ@ARSR_|@ǃ@@@ƒ@@@ # {S*[c7$E4"RhRR=*RR@929RR7a@`@T67<!}a@4**SA[BcC{Ĩ7<!}a@B}b@"RRzR·a@`@# <6c<qB}mTb`@!݆؇" b_qT`@!" b_q T`@! { =CsB#)k@' ==#='=+=/=3= S}'@`@ ʀ @{Ш_֗{Sk+C҇ [c5ĉRRRl[BcCAҠ @-RRRR~R>R:SAkDR+@{ƨ[cROG Հ@9{` j`Ts@8sz` j`T@8sza!jaTuRR~R3 {?rST@<@A4@a}AҠ @S@RR~RR~@ @RځRցSAR@{ĨV {k #BS[csCBS|@w 8@ @2@ 8[s}BX(@@_@ $@@@@@xc@@978(@*}@"$@B@C@c@zx`@@9`6@@5 `@q|}GAh``@7@@+C9+4O@s@ @,!T ?q-T R Rr ?k@,TBRO@@@ @C@9s!Rc2C9K@C@9!Rc2C9G@`C9\5@@`@`&4@?\@@(64'B@y q@RT@\@@87`@\@77<R R$@G 8@9`5K@`CW;`@@@$A@9RB7s@S@|7@3TAW@k7@(@OT@@9@O7 @?qitT!Q @ \@2 \N`@\@Td@@ bR ,DBr (@d# R@$ !0L!B\@B*\@`@B(@(@`@BX@X@`@B$@$@ (@ $@`@B@@@@\@ @\@@\@*@\O5`@$@چ$F@6`F@! @?q NT!Q 9B;a@ \@2 \`@\@x7?@aA _ a@ \@x6 @`@a@?@ a@ \@2 \W@a@ @`"\@0`7 'E@@@@( c@Ab\@!@Bxb\S@?s@,5t,hE@!`@a@ \@x \`@@ @?BT! G@K@A@ @! @f$F@ 6AC!@@?TҀ ЃRBR{9'E @@!@!@!($@ @B@FB|A@ @'6@@&<@`4!@!&* CR!Bz-A@9R@@RCc@@9? 7`@\@!1x6@?AT GW@@ @S`@`P6A@9R@@s@S@x{@`@4@\@(7W@aS#A)kcB2#)݁`@W@!6b@Ab@A\@!2A\b@A\@!2A\@c@"\@a\@B!*a\% @?q)0T!Q 9B?a@ \@2 \`@\@6@`W@@[@`@v$@@t@k@4jsv @?q)T!Q @@`@k@q@zTG@`w@B@k,TC@8B_@@AFSA[BcCkDsE{̨_yj3@RAR4|R@Rd~@G vG=@@9~@ 6T@a @$@!@xt@@hsa [h3@?qT!QTW@ RkbA) BB!2b)@ b@ D@!!ҡ`B4@,cB@!$Eb4||||||0` !@!@!@!@!( BAc@A@b\@Bxb\$~2`@2`K@CNa@@\@7G@RWK@k&A@ @! @ B B!~B@9RA@BQB|@!SyRR,GR@@@F @@@!@ARRR8 @@!,DBC @ CB@ w@`-T!GBF!@!C@@-+T CR~GGa@$@kRG@k@`@_N@9G@Q`q|@ T &*!R!K !|@(?N@9K@Q`q|@mlT *!R!K !|@?@@@@ \@2 \@@ \@2 \\s~~ B@@?qT!Q9B?b~@B\@BDB@A*\`@ @`@ P~M~zR@@]$H cF!&˥a@b A l@ !ʿ BC!@#B“ATq$ѥ}  TTq@TTqaTie8c BC!%@ʄA“!@ҢʀA"ʃēc bc!`A"cÓc bc!`A!abÓBB@`BJRqTTqT@9@9@9 @9`@9@@9  ҠR|aR*$H cF!'˥`@b A,@ʿ bC"AB“AT q$ѥ}  TTq@TTqaTie8c BC"@A“!@ҢʀA"ʃēc bc!`A"cÓc bc!A`!abÓ@`BJqTTqT'@9'@9'@9' @9`' @9@'@9 k}h}^"w}}@(@`TkT@@97kF {cGS[a@a Ay`qTSR C95`B@y  raT`@x@T_qDAzT_8q_qc_Tq`@zT@LQqT@$QqT>R@  qTDCzTc8B#?y?@a@@xa@G@ @@@ R!RRB @ @`_TCAkRRy@6@ @!<@A4@dxR R/}/@R`@RyR`R{//@R|R|RR xR|RR#~Rہ!RR'w@RӁcC#@q`@9a@9d2`2!2a9`9SA[B{ƨ_s4RaxqTt@I@976@4`RSd@@@y q`T`@92`9SA[B{ƨ_@?y?_8q@4@@T5"@ Ձ@@w!$E!@ 8@tZ_<qTDQӠ4 P@`6 R !@~`@ "@R@@ AC@R}JA@1"@aR@@R@@*R@@ `c#8 {S`B@@9!RB29i~@B@y! ?$qT@@y! ?xqTRasB!G@b@b!@?y?SA@{Ĩ_@uB@y! ? qT"R+}=|@R?ւ@9`29 | {[c*@97SG@LT`_8qTSA5RRzxG@?y?[BcC{Ȩ_@4QRj@ TSAkDsE3@{G@?y?[BcC{Ȩ_Rr{ Ta@9 Д5a@8A4`kК 9OGsZ#3|@9g4R4b*`@94!`!j@T86` @9s 4 a`!j@T 86`@8`5SAkDsE3@74a@95a@84fҍ`{@|@95q`T@4QRjTSAkDsE3@@4QRjAT4AyLqT`q B((B R!@zSAkDsE3@4 B  B( {S1w@96@!@9 06`869 F@@ B@b@ D@! bBRdwR~RRavR!a @?q T!Qa @9`6SA{¨_րЁ)D|@@99 F@.AҀ R@Rp|y B@wvR@9@9ARRB`29~RRvRRyRRasRRyRRyҀSA{¨_z{R R Rawa@!\@7 @{¨R`R|yARRtR1Rty @{¨R`Rny *r {Sҡ@RSA{è>x  @RO@R{@R+@'@BC#RR'@T+@?@T`@`!@ sRR\`&u@9@9! **99ւB/@@ASA[BcC{ƨ_@R{+@U*+@RR #? bR#@aB@yGA 3aBy,Cs` 9`@@y qATx@@7!bU!@C| iT@r@T P7 @7X6 @ @6@@ @6R##@ 5/'@5` @`T`@96`@@9B A064_qT@@y! ?q$XzT5 @`T R@R'Gɮ'@RRRo##@+@i@"A@@y! ?q$YzTA@9A76@9qT@`@T @@9qaT?4qR$@z@T@@#Y#@{S[ck*s'mga'!@@y 8q@ T$qT4xqT@ ,@@y" _ q*T@9+06@+@@y ?$q+T@906@(@@y! ?$qa&T @ @_&T@9a&06@3Ҁ@@@y! ?$qa$T @sc_%T@9778 ;B#@a@!xt"$@9A06@}@!  b@BhaD$@9779RRn;B@@xt@9?qaT@@9?qT@92|q7 RA 3ByG@4@ @9 @@y qTRB@y qJz T5@96@ @@y qT!R'R!R;н;@R!& RD@99A7 @ @9x 9@4@929R@R f*RSA!R[BcCkDsE'Fm{Ȩ_x(qT ڮ@" A" B" @"@b@9Bxb9@A"RARW !RR!RD@9@9 7R@8Զ;B@@xt$_@P` T"! @ (BDFAxaz $ @&r !@dE@?T2Re @@@@9@9x 06@9?RR; ?@@@"@;@8@S"RRRBdERB@2b29RR9RR(&!@@y DFA @xa33  ' $ ! @DFxa $ !$ !$ %! @!DF!x`9;.RR;@@@C@ }  {HqS3bB[*C@'!@@y!  T?q@T?qT*R!sB!B'@c@C"8@B2"8 SA[B{Ũ_?q!T@9 77RaRhR`R@@y qT@ @A,!T ?qT RrB  R_kT@@7@#T@@96RyB@y qTBR#@AT@ @",6BT _qT Rr!  R?kAT@**й@BRv{R@@y! ?q#(Q$Ezc<`Az(TRaR{R`R7#,Q!\Qc<!<q AziT{_@9ERRc c29{ܵ_{@CR{¨"R {SrTSAR{èbR @R` R6SAR{èbR {S9@7[t@@9@06@"R8"R3R(R#B@y ?xqTB@y ?xqT[BSA{è_ց@9A77!R@ 3By!G |@ SA[B{è_֡@977!R@ 3By!G |@ B@y ?xq!T {S@@9A06@ B@@\@`6S RAR[`@9`06s@3SA{¨_{S@@9A07@@907 a@906aB@y! ?qTa@9!?qTRR7`@9 07a@977SA{¨_s@@{[5@BC@/"@907!@"@906Sc6@@906s@a@977!RɪRĪ!"@9!BB$F9!8@B@!*9b6"!BA!CB@!@_`T29`B@y @qTT qhT@929B@y q TxqT ՘RC#6@\@A7@D`?ֵB/@@ASA[BcC{ƨ_G@@6@ \@ 877@x6d  ARR۷@9!29wa@9@9!!*9BARRʷ@9!29@9Ӣx9`@ @AW6",BT _q@T Rr!  R?kTCBRݻ+@ac@Rc @c!Z`@!R @_jT@*`@@?q)T!Qv@@976@@@y! ?qAT@9!x9@@+`@@vtdzSc@9}  {@@y! rT@9aA ?qT !87!@@y!DF @!x`"BG@@Ay_LqT_`q c( B( B(Ԯ{:?q!TAR"BG@@Ay_LqaT B((®{(@@@y! raT@9 {S[c#@@@y#B@y ?Q@9<s" q TV4@qR TsQs>qT@9c 7B@y qT@ @\$qT@@hTB@y Q<qT,Q<q)T4Q<qIT$Q<qT<Q<qTD@9c2x9@99B*9"R?PSA[BcC#@{Ũ_րR7rT:q@TqT6 4@B@y 8qAT@96@@@y! ?qAT@ !`)@@ 4 B@y"Rs"@96@@@y! ?qT@ !`)@@ s5V4@B@y qT?qT #@DFxx R!) @B@y@9s"ev4@e_kT@9d2x9@99B*9f4c29_kT_kTAR3_kT@9x9@9B*95R8{ @@y" _qT ! @DFxa *ȭ/ @{¨_AR  *$ @{¨_ {$ *DFB@@yd@@yB @ ?qxb`T @*xd + @R{èڭAR*B + @R{ḙ̀ {S[ck9@@y "cA6 B~@@9d@GBxxS| S063 6c~ 4sz 76s@B@y  q T 4q`5Ts 4V{?RR@ Rk{5` qT!` Zq@T, TqT,TqTs~_q%TNqAT@9Ҡ074{4R 4 cAxx@86R-87D5!7BG@@A!CSA[BcCkD{ɨ_Q@5@9@*9AB@y q<T ! @DFxa ,@ T@9 '06@&@@@y qT TqTk@s~q@ AzTR*L7R@R!RRR!!$E!@ 8@tZ_q T_<q6T_qT@@j"RƱ s~as~ߎqR@zaT@906B@ys~ q`T,QTq!x!<$@zTqJz!TR*g>qmTk@9s~77{GB@y TqKzaTs~!*s~RRs~DB@yB _qDMzT_qT_dqT*rTC_$q!T !Ro8B@@@xa@9@C;RR ;@A@x{`@9q`T "!@GC@CR;Uo@4;@ @2 RRsW@9@9@*96 ՛4 s~7zraTsE B@y ?q@!T! @!DF!x` @.4RnsE! Rp5B@y xq!T q`T! ,!DF!xx@ @X6@0@9,q T!*Ts5B@y xqT@977*r TRsos~o@R6s@@9<*9" R!,BDFBxxz! -!DF!xxګRғ5NsEIR*Q !-*s~ RR"R4 }!s~54@9!*9sE{_8qT@ @@y q`TT @@!@# !C@@$@9So%_(qRD@zT@@@y_(q# c ' BbqRCzT@g@@y q T!?(q ToCR*CʬRR c+A@x{ۯG @ 8B@@xc@!C@9!B@9 .3;b@@,T qT R Rr@ kTBRb@@o;c;@CR*;AR|ARwDQ 4 P@7F`@@@ C@9.B@9!@! `@c @@Cs@9`6?s{{S@97RRSA{è_`@@9A76@ .@a@ŰRRݪRRiRR RR`@`@9@`6SA{è_ {S@9@@ys"A6e`@9A7@@a@906a@a"@9"07B@yB _LqT!@9!?q TSA{¨_B@ya! BG# 3ByAa SA{¨?"@@yB _@q`T!@97C_qc `AzT_TqT "Ri{B@ys"*P{ !@996@@@y! ?0qT T?\qT?`qTRa997b @{¨_a@9!`2a9Z?Xq`T /?(qTB`2b9?,qTB`2b9Ra996B`2b9{S@9`6`@@@y q@T@A@@y! ?4qTA@9!2A9SA{¨_SA{¨_tB@yRRBA"B@#R*@A@@y! ?4qT{ @907A6 @{¨_֮@@906@@@y! ?4qaT@@y}  {S@96@B@y q`T(qTXqTSA{¨_aB@y"R! DB@y @qTG@@C94`@92`9!`2a9 /x 0u{RSTR@@y@B @9_q@9B 06b 4@B@B@@yB BQB<_q T[cx9҂@9Bb5qT;IG@`C95`@@9A06@@@y? @AT@@b*AR*99`@@906@@906@ s@R!RҪ`@9 77SA[B{è_[4q@T,SA[B{è_SA{è ! 1@@y} [@} @9}  {S@9`6`@@906@@906@TB@y qT[R6D@W@9@ ?qTrT X6R6D9[B@SA{Ĩǩ? qTRBR r  r?k TrT B@@ D@! BR@y@@?q)T!Q@۩{S@@y4 @9a6*SA{¨_{S@@y@96@" s@"R*7`@9 77SA@{è_ @96{@!@@y! ?,qTT?qT?Tq T{?(qT 2b 3^ @A@@y! ?q@TOC@9 Ra ? qaT@$@976!@$@976!@A$@@y qT$@ @eW6@$@9qT@9qaT$@9$76!@_TcxC9* {SaB[@9"@'6@B@y! ?q`T87 6c @9 7[RR_RRRRRRsB'@a@A0SA[B{Ũ_c6R@@9@  06 5M7@ @@#5T @9q T? -TRT T`@8qAT @9qTx8"ai@ @@ CR!6bҕ@ @a( T @ 2*@?c46@*@9cC5!T ?qTcC{   @9q!T @4 rT-T q`T R Rr kTBR@#@ @qTcZRA @?qT!Q @9cCMR|@ @@# R0@@9cC=4  aTӻ*cڢШ  @(cFHa@b A !@ !cbC!@#B“ATq ѥ}  TT q@TTqaT@9c BC!!@ʄ#B“B@a"ʄē bc!`A"cÓc bc!`A!abÓBB@`BJHqTTqT@9@9@9 @9`@9@@9 @Wګ HcF(a@b ADŽ@ !ʿbC!@#B“ATq ѥ}  TT q@TTqaT@9c BC!!@ʄ#B“B@a"ʄē bc!`A"cÓc bc!`A!abÓBB@`BJ<qTTqT@9@9@9 @9`@9@@9 c @5z {@96@C@906B@bB@9b07_@"@906!@"@@yB _4q`T{Ĩ_"@9Bx"9{Ĩ_SDR[@@yG 3@ybCB@@ybA"6u7v6`@aB@ybA `(6BBB8@6B GA 3aByba qTa@ @9x 9SA[B@{Ĩ *AR` {@97SBBB@B@B\@@7!`29SA{è_RRBAtB@yB@"SRRީC*SAR@{èҩ{èױ@#@906{S4@B@yc dQtq<`DzhT@906SA{¨Ҧ SA{¨_@@y}  {S@@906@tB@y xqTq`T$qT8q TSA{¨9`7@9 76@@977@9q!T"R٫!RRSA{¨_ր@@@y qT@9r!TRDZrT@` @@D(q@AT# @B!@B 2`B9! @!ˀ R!`6ȩB@y  R@6{ @9!6@@@@y raT@@9`06B@ @{¨Q@@@y q!T@@976@@9/7!`2a9c$EA@9c@!xA9`8@tZ?q)T?<qT@@@$DQ`4`P@7 { -@96`@9qT @{¨_`@@@y? @TRRЦ@9a76@  {@9A6@?Ra@@y" _@qT! ?4qT{_a@9!06c@a@@ya@9!2a9{_@@y}  {SR0r@T`@96`@@@yA ?qTT!! ?qTB !R_,q_Tqtq Bc 7 c!@7R)SA{¨_?TqTSA{¨_4 R! 8 R! 9 {S@9`6t@4B@yaB@y ,q! `TTq T(qAT?@q T?HqT`B@yR*@ 3`ByGa` SA{¨qTTq T?@qTR˰r`T@9 6@ @@y Q<qHT @96 @@@y@9 @!b06@@ @@y q!T R! :Ǩ?@qTRrT@96@ @@y Q<qT @96 @`@@y@9 @!b06@@A @@y qT R! ; `B@yR*@ 3`By@9q T@ @X6@0@9,Qq(T  -BDFAxa R ! <SA{¨_`B@yR*@ 3`By {c@@9S[06@@@9B@y @qT T(qT)T,q T8qRaT@9!d*`9@@@y q@TB@y qT! @DFxa `c>c*RRp@@977 TfR҂ ` a@!FBO@@ASA[BcCkDsE'Fm;@{ʨ_|qT@94 b? |aq!TdlqTtqTG4lqT q T_8lqaTK:f Ѡf*Aq` TfR5 @hqTB@y qJzT5f:f*c&B@y 4q TqT@9x92YP6ks@ @\@@"o6 @"sK"RRܡ_8@9x9@fRbR g@? 4:f4@@@@y@qTB@y TqKzTg5f:f*c6B@y Xq\z8qIz 5'5"RRf:f *c-5bˡ R'R@T@8qT B@y 4qT5fC@:f*3R@9765f:f*c@fR5:f *>cks;٤@9}  D @r(Jӿ4qC4x{[SB@_s`@9@6ւB_@@ SA[B{̨_kcRsŪAR wC@Ȧ$EGG `@97 @a@9 wC!2a9aB@y ,q T(qqTq@nT$q T`@9aR q T`@9qyTaB@y" _(qa T|@ C@y qT" _qA T`@@@yc ;qRdNzdAzT@9!?qT97@``C@y  qrTs@`@9R@QjTh@A@y q@TTqTB@9XqoT wC@B@@@y (qT@@9raT@ Rr @! ?qT@@??@ITaB@yq`TTqT" c@9_qBXqTdq)T"  5e`@a T`@9x`9s@ 7X c?R(FTR k!DZ!@``@ ?`@`@@y" ! _ q$@zDTzT@`kQATcCkDsE:Z`xb@ b@9" 6`@@@yc HqT@9 #QcqT@9cc*#5c@9hB (  @"*c2jb9-qc9 BzTb@9 B_q TaB@y" _,qT{? @ZTs@s`@9qTR 4BRbB@yB B4`@ T$E`@9x`9`@\``@9x`9s@s`@9qTRR 4Bճ wC@`@@@y? @T@`@@y? @T_qTZc bB@yk!cDZB  4_q TZc " k!cDZ 4`@@@yB C<qfT$q@fTqzT@@@y!9qAyT@9rxT@ A@y?!@!yT @(A@y!q@eTR@.RcdEc@!jTj@@yR.Rc qAiT@9i 7@9 R jhTc* qhT@g@@y @ATc@g@@y  qAtT`@0@@y/RRB 0`@9 qT" `97B@@B\@"/7"86cFc@95c$Fc@5b@6 @a6$!R@*bB@yR!G 3bByB `@9!@`2a `9|B47`@9q`Tb@@@@y qA(T@@@@y q T4qa'TB@@\@&7 wC@@@9@06@C@y qT@97"R@Rޣ@929`@9t29bB@yB 4`@9quT wC@`(@@`(@@y? @`T_q tTZc@ bB@yk!c@DZB  B4C`@RcAd@d*`@S!Ryq@z`T{rIT@qT`@9t`9`@9qaTRR 4B`@9qTR (qT`@9qaTRR 4B wC@ @@@y_ @T @ @@y_ @T @@@y_ @T @ @@y_ @T $@@@y_ @T @ $@@y_ @T_qjTZc bB@ykc! DZB  B4wb@9$Ea@b206b@ @@y_ Cz1T@@@y 4q@~T ` $F@ 7b@TA@@y q`%T)%Tq%T q$T! ? q$T9ss wC@@@@@y? @T @@@@y? @T`@`cB@y@@ybJ_ @`T! r(T@`_qfTZc"wC k! DZA@! `@92`9bB@yB 4" $E"4RU@?bB@yB 4 `@9qT`@9'6" _q]TZc " k!DZa@! ²4`@G@@yB _qLT? @Ts@ `@97|@FC@y rT@\C@y q ET$qaT@(A@y (qT@`@@y_ @T @_ T@9b76@ @@y_ @T @_xaT@_T@`@@y  qAT`@976`@Tb@b@@@y  qTi@ @AT@@9`06@@  @?RrR! r? kdT@@`_ A@9Ja9*|zG@929@9293@`977|@\C@y  qTa@97`@9@77`@@@yB _q! T@9B_ qT@xC@yc  qT@906@AT!2a9N@JbB@yB b4Xc@b@@yB _qT_Tq T_8qT" _(q`xT@@yc qAT@ܑc@9 b _Hq`RzT a@(qRBaB@y s@5B@"aB@y<b@9hRB _qTh@9eB@QBB*5h@A@yB _q YT_TqT" @9?Yq!T@@9caB@y `@9x`9*3`@9qT`@`Qc q.TqT?qAT@9!?qT@`!@aA @@y $Q<qT @9@!T @@@y! ? qaT@! @@y $Q<qhT @9@T @@@y  qATx`@@r3|@"R@?@@?@BRwRRژR@9?2t29f?@@`@9(6@9(6@9!29bB@y3@B 4}xr@T@?qTv@Ԓb:@R`"@Bxb:z`"@`"`ZF>@ @7@@ZF@@xss@@@6@*A ?aT*SA[B{è_[|@{[Sc*k{sG* "@AI9!xA 9$F@6&E@$@ 5aB@ybRGA 3aBy C` z9&EB:@s`r)@@ @`"@@$@`&:@ARB2:G&E@@dB?1Ta&@@@!A@a`B@y qTX87SA@R[BcCkDsE{ƨ@@@@@a&@RW@!@!`_TA @ R!*A @@8?6 ݒAC!@@?@TaB@yRGA 3aByC` @1Tc&@$@`&{c[Bk*S[*c*T҅b@@y~@BG"3@yBxx29@Ta@9t!2a9@9@!29a@9!xa9@ a!4F!@a!u8a5aSA!BkR'm)g;C???@+Ti T?)Th T?!'R(TSs3f;@ RRg dRF_k T`B@y qT$qTq`T`B@y rTs@`B@y (qXq!4oB@y!@zoTPq` TLqAThB@y`>B!@(G!xh?!To@9b@yrB0A@@y! rA/TA @?(!/4`@9Ro5@87 4zc *"R?? !TiT? `T?:TSRs4!RC@;@ @  ;@@?8TRSs?1T?57TS'Rs4C@;@ @?@;@@S'Rs5hB@y`>B!@@!xh?! TR4z*"R`sSK{8?q"TY4c R"54`B@yR qAzT`@9Xq!Tf@9qhguҀs@a(qA-To@9r`T"@Q_r$TO87`@9R!Rxq4 4`@9hgRqs@R5SA[BcCkDsE'Fm{̨_"?qR`@ @ 4?r@Tb@A@@y! ?Xq!T* _2@@HJ_@4`@`c |s@o@9`Ra@9q BzTy4`@`c {s@o@9`@9q BzTa@ @@y 8qaT @9xqT @9rT4`@`c |3@zhg"R_G6 Rr! ?qaT@@?ᇟq!A54``@@?qT!Q?%ATSs5uo9PqATrRRlo@9SRs5 4 4;@R RGO_1@G@O@T@9*9@`4C@ ?$H TA@y LQ<qHT@ "RGRC@_1G@ATs@fGG@@9@06s@GG@a@9!77GG@fG?qG@ATSA[BcCkDsE'Fm{̨_?(q!5RRRc 5;@GqcˀAzsCT`}!G@; ?9SAsE$_dLqTRC@?T@9@A7AR _@@HJ_@DA9a7@@@@y! ?Tqqa9`R BR! 9aB@y! ?PqT?LqRT`@9R a _@@HJ_@BLQXqB<R@AzTo@94!@Q?r`T'Ss{d1S*[c# T* SW~@bAxv7X@@yG~"#3@y!22bxv99a@906A!4F!@a!u8a 5A!P*l@Rs@@yA+R!Gb 3@y!pE`SA[B@{Ĩ_ {S@9@ 7tB@y"6[v@B@y"qT*qTqJzTRra T@B8@ 6`B@y qT`@92`96QjqT6Q<hq(T`@9q2`9@929T[BSA{è_[BqT*RSA{èB*SARBdB{èB@@976@9/7@R!RR*[BR q@T`@92`9[BARG" B (B! ЀR!BR! {S@96`@@@y! ?4qT@9!29JSA{¨_BRRBAB@R R3SA{¨_ { !5 A@RRRRRR @R{¨R @{¨R*R {S*[c*7`B@y xq@ TR UЖ~@`@bA!xv6@9A07rqT@aB@yG"3aByxv` `@9*`97@4F@`t8@ 5A!rT`5@@907@@977T"RS `a@!SAPw2TBAT@A@" @6!@ @!<@a4@ Ո[BRcCRkDsE{Ǩ4S3(g@@9`06@`@977`9R@7GQRqTCqOQAzZcSf"R'9 55@"+"A2`A:x qT(T55*R qTSA[BcCkDsE3@{Ǩ@@9S3a06g@,qT0q@T*SAR[BcCkDsE3@{Ǩ`TS3SA[BRcCkDsE3@{Ǩ** T"Rk `a@!/@907*R q!T@sfA `!$E!@!$@[BRcCRkDsE{Ǩ2@$E@@@@(L9@7RdBB@B`F3@SA[BcCkDsE{Ǩ7f"RRҕ^@9} { @@y xqT @{¨_A!$E!@ 8@tZ_qT_<qT  @{¨_DQ4 P@W6"RcR!` RRoR @R{¨Rx {S*[c*#+ X`B@y~@2G"3`By>H@xy` a9u 2t9@929@907x9`@@907@4F@`w8@ 5A!@ 07`@9x`9@9x99ґt@R@929@9x9aFy@@>@hv8 54@a{t ?@!xR1RykDsESA[BcC{Ǩ_@@y! ?kTSabA4xt7t6@ @A@@ysbA c`(6CcBc8@#6Dc Ga 3A@ycAqaTA@ @9x 9@`@9x`9@9x9R1RRR@~77@6*AR77@@ I*ARGA 8!DF!y[ksA 8!DF!t@9}  {S[c*<@R~2@99*9@A!4F @`B95A!@@y?k)Txs@x3SA[B{Ĩ_cw~@}@y" _hTB}/ Ry@cCxs@x3SA[B{Ĩ_ Q<y<@c{S@3`@ P7rT` /@SA{¨_*f@RҀb@a @SA{¨B@{CSbB[@@yC@7! ?\q@TA 4u R R@9a6!G!@a!C95@@906@B@y q TqbTq T TpqT( T q)T? @T@xT#@9A06@!R B@y q` T` /3 @!t3@ a **!0 *R{#@ sB7@`@ {ASB[C_ @u RgR R?\RqT(Tq TTqT? @!T qTqTqT? @T qTxqaT\qTdqTxqTdq!TuRRcO/@a **!0 #@##@@y}  {[u c1&ES`B@y Xq`TTq`ThT` 4qaT`@97`@96`@`B@y XqTa@ @@y qaT`@4`@9s@07ST`@9s@06SSA[BcC{Ũ_`5q@ T,qTqT qT\q`T`qT`@@9a06@ @@y raT @xaT @@9B 07`@b9 7@@yB _Tq"RqaT`@9`06x@C@y  Q<q T`@9 6s@3xqTq@T`@97s@`@a\AT`@@977#@@y} &E`&@n`@9`/6`RsrTx@3@9$qaT @@@##Rqa `R!@3x#@hү@a`@`bNRKrT@976@@@y Lq AzT@'@RX$@C$TRa !`2P@$?{A9B`A!tC jdE[RR^RR?RSRf@@y?q`D Ti@9)6c rT?yqR4x@ C@y)!?q$CzT,qT(qT qTTq T$qT@Ri @@cCxi$@?kT@! 5$RF@22Ff9q*T*SA[B{Ũ_ֿ,qTTqTTq@Tq@T8q! TE@Ff@@@y qT 2E!(q" T qTTqT$qT@Ri @@xi$@?kTe@T@9&76e@E`Te@976e@xq TqTpqTe@9% 6e@9e06e@Eu4qTeE@&07f 6f@9F 72Ee@9E6e@Tf@@y,q)TTqTTxqTqaT(qbT qThT5i @?yYcCE@RE T*cCE@Ee@@@y q` T2 4qTeE@cC76;cCTq@T(TqTqT8q!TcCkxq Tq Tpq!TcCcC2E@EcC2E@A5%4E @9 76 @8A@y8 qATk9@9:Y 78@9* rT9*?qTkD 2E2dTe@9e'62^E@2EYe@9'6e9qƳ*RE@REe@@9e6?klS*cCe@ xq@z=ER@i @@xi$@?kT5 @R$*.)@)7A@y"q TRkD@?k* W@)@kD?ZS բ?`@F @hT?`q)TBF$VR%}DrfED)Jd@H< @@KKB4JD @ EDKJT6@g0K#@` T `TTBR KchBJAbJ B ! !8A J0! BJ l! K!(BKJXaxd! AF,d\@9! !xdJAF+dX@9! !xdJAF*dT@9! !xdJAF)dP@9! !xdJAF(`dL@9!!xdJAF'@dH@9!!xdJAF& dD@9!!xdJAF%d@@9!!xdJAFd<@9!!$|JAFd8@9!!$xJAFd4@9!!$tJAFd0@9!!$pJAFd,@9!!$lJAFd(@9!!$hJAFd$@9!!$dJAFd @9!!$`JAFd@9!!$\JAFd@9!!$XJAFd@9!!$TJAFd@9!!$PJAFd @9!!$LJAFd@9!!$HJAFd@9!!$DJBFa@9BA$@J_@9B @y U@9 R Bc@@y qTqTq`T(Td5@R @9B*"9_֟q`T @9qBB*"9_֟q`TTqTqT@9q@T5*qTqB@9c qT@9zB _ {S@c@#c9;B[VRs@`B@y r!  BzCzTqTq Tq T$qjT @a@@xa@96s@ յ5SA[BcC#@{Ũ_t@4[BcC#@SA{Ũ_`@95 B@T@ D@! ҟaRW@ \@2 \SA[BcC#@{Ũ_9{S@@y@q @ TB _dqT @R?qT!Q4 @?qT Q ?qTSA@{è_ր@A4!b@5RA@RSA@{èSA@{è{BBSS@c@a@SA{Ĩ t@T a\@a X6[@ @>CӶ>eB@y? TQ!<@kiTxa c KQ<!<@A !, @ ?T Փ@saJ@y <@T?qT`F@yqTxS<|@}!ҘDyHy@``J@ya}"CC Dy6h x`J@yKvJy`@92`9SA[B@{Ĩ_@R!E[s 2BҔ"`@a@ \@2 \`@y㿀³RJy aRy*Vy`ybBe`@R@92`9{S@t@SA{¨_@9b7 6_{3R _x@@y,!˃ 33]@ya`B9`@T` @{¨_ @{¨p {SsjFb@2`@R7!A?]SA{¨SA{¨W{a !4 4a ! 4 4a !@4~4a !`4y4a !4t@4a !4o4a !4j4` 4y @{¨ @{¨_{_xrS[vGc@wAyTX"7@9LGxaxP@q TNq` T` 4`AyBRc@`qsGa@!Ay?`qTSA[BcC{Ũ_?IT@9b87 LGb@PT Ֆ@9~qaTNqTc@A@@yR"R?kT"RTB@sGa@!Ay?`qT Ձ!B!@"@A\@?6!2A\SA[BcC{Ũ_րc@A@D "RT@9`AyRk T`qc w c664qT*` 8*`G@k97@@xT` `7*@ QZR_g$@8RB Q` 7m`GkD@vD@џTџT @9q!T*LG"@@y^kD#RRR@Vw "6x4@N#RRaGR#@G` *6k{S@@y@ dq@TTXqhTTq Tq@TTpqTq T`@`@TSA{è_|q TqTqbTq T`&@`B@ 6.&`@@?q T!Q`@mTSA{è_! ?qhT`@9R?jaTB_q`@aTa@97Z`qTT`q(T`@@?qT!Q`@@?qT!Q qAT[t@@@u9VaT4[BxqBTqTTq(Tabdq TlqTa@9a'6 hqiT@ ,Q<qT q`Ta@9'65`.@[t@@@ TTTTTRT@">|@T T`TT"(07G5v06`@ [BV"@(`TT0 TCT4T5R"  T$TaT|@THT77Gӻ5R@"R5R@"GӬa@9'6`@9@77`&@6.t|@T@z"@?q T!QGӒ <"`@?qiT!Q >G| @@@y" _xqT{S[@9 06_ qT_q"TA! ?qTcЗ@rDcR# 54u@9aB@yz S`Txqy@T@4 b@?T5t2@yQ!<?qiTtC@?TcC#@SA[B{Ũ_s@3`@97u@9aB@yz STxqTaB@y`@! ?q@T@?q T!QЁ`"@BXB!FBAT`&@$E@?aT!TA!@?q`T@"@"a&@R @?T"@B@AT" @ߝRrB " @@ `@_q`T_hqT@ `@97 T`@9s@76`B@y xqTqiTpq!T8_aR@@`@s@{[SJ@yF@yT`@ys)T`R@y xq T`@97`"-@ATSA[B{èM@u@TSA[B{è_ @@y_ @AT_{ `B@y!G @Xb`By @` @{¨_ _ _ @9@77_{S*@@y@"3!G@y!tR9s@a@977a@9`!xa9SA{è_ A@a_TA@9B@A77A@96A@#@C$@9$06 !@$@d$@9D77bA@A@97B_T@@_B@ { $E @{¨2 Հ@9!29_ {S@@y qTSA{¨_֓@`@976s@`B@y  Q<qT {>{@XF{S*|@L@@yЁfz4Fs~!G"3@@y99@!xubAu8!5SA!`5 @@9_qT@!" 2a@!3"\@@`_s"\@o6! @:Z !A!@" @6!@ @!<@ 5 a CR!Bң@X6 @@\@ x6@RR$ "@9@A b!;;+@CRA !;A CR!<}A CR! <vpA b!;Tx#RY5k@BR#@} 0@9!4Q?q(TA@"\@6 @0@9?,q__` @X7@"\@B6 @_@__ {S@ B[6@s b@ D@!B!ҡ4@ B@6||||||0` @ @V4@79$E@@ @@!(c@BAa c@A@b\@Bxb\@A@!ASA[B{è_ր@@ @a6@"@!<@?qTA@?!4 @!@?qT`F@!ARR` @x !ҠB4@  ҠR}?1kTA@? { @@y@! ` @{¨_{!B @9 8@S`907aB@y   q(Tb@@@9@06C@@@@y 4qhT@@9 7!  R?xq$@z@T?pq R$@zT?tq R$@zT?qT?q@ B bB B=B B > _ {S@A@@y! ?qAT[cW XR?S@ 89ER$f @!b@Rt @U@Ua@ R?cZ`Tjc8qTLja8qTaaTa~RhRRSA[BcC{ĨpSA{Ĩ_֡Ra~ T" T&A !?"V4 Ra~RROt;SA[BcC{Ĩ_a~RRR<RRu!T@`Rr?kT @y@JR?k!T@9qTRR ՂB8B!BB@$@A@!x`#@96@ D(@ @@A$@!@!@!@!x`#@977!@a_ց@!$@!@!@!@!x`_ {?lr T*@@y! ?@qT@97@9A6@ @@y q Tq@TqT @{¨_!@ @@_6"@A0@9?4qT76B@A\@?rT?y@T@@ @ @ @C$qTX6@A0@9?4qaT37D@\@a$!\A4@x7@@C@c5B@6"@9B2"9 @{¨@ ?E{S*[ @? rTsBSA[B@{Ĩ_֡ R`@@L@9*sSA[B@{Ĩ_{ !RsBe@@`@ ʀ @{è_, {BS[?* TRҢ R!@!` RL@97tZ T @ `N@92`N9x*2`N9SA[B@{Ĩ_`N@9`@@?qT!Q`N@9tZx`N9AT_TRҢ R!@!` RL@97tZA @? rTSA R[B@{Ĩ #R@#RA @?jT6D@C@ @!2A @c8A @#R!*A _RR#r# kTD@AcBTC@e_8qT@A@@y! ?q@T_A@976 ! A9_ց!(F!@ {S[v~D@3oRRRҲSA[B{Ĩ_ր B@b@ D@!!ҁB0@B@R2r``@`@`@ b@@ `b7a@2~D`  @ `@YҀR7@ @@{S[*Bc@"@/~D@RRRQ@ @!4!L ?qAT@@ 4`@j`T qTTq`T"qT`@c(D@@ RRR#-   @ @A,!T ?qT RrB  R_k@TCBR+@rb@`!EB2b @RRR@ @A,!T ?q` T RrB  R_k TCBR+@Pa@` !2a @~DRRR@@RcR'#@5B/@@AʁSA[BcC{ƨ_#@5S s"(ARqaT`@ qTiTqT"q@T@ *#`qATGEa@ |@DFE` @@@!@+@@!@+#f {S[ @9@066@_q@ T@9BqT ` 4@Bq@9aT 4@@9x9 `@9?` 06s@`@977`@9a@3`9@929SA[B@{Ĩ_ `@906Rx`9@929 B@y qT 4!`A X` xs?q@RAzATS`@9wx`9SA[B@{Ĩ_@_q@T҃U@9?@39Ҝ$qT@x? 9@9!x9RG29@  %{SaB[c"@0C@y?1 <?qT?qT*sC_q`TO_qT_qTksR RRR7RR*5D@@906@A@9I@9!D)r!TDA@y <qTT`D,T %RqTRE5@9Cs06@9407@C`@9u06u@B@y <_dq Tc@@yRsc ~i 5CTccc 4@Bќ@T@)ReDT@@yR qaT@$ @jT7@957_qBZR @t]* @G@_`T sBD`@ j{@SA[BcC%_;@FMT_ TC@y! ?qTK@@?d@zT_ B$@T!TkDsE @GA_T@9% 6?q@TK,@9rsT@@9 76@C9@@y *7B@y <$qTC@c@9r!Tk#*?q9G#kD!c  @BGBAT@9'6?qK@ @TksK @!G!A_Tks@A@@y! ? qATA@976T@B@y! ?qAT@@"4BT _qT ,T qST Rr! R?kSTBRm{@  "XTC86?IQT#@8qT? VTA@9?qMT?qaUTBB@y! ?qAT@A@@y! ?$qTK@B @! @_T@a@@y! ?$qTa @?T Հ_WHTRrS[*c Rr  RkTR"@9x4BT@`@X4`6 ?qT`@@` @95B@B@B@BB}B_T 8!B@T  Ղ_ BGBB|!BTT 8!BTR%`@*WS@R[@c@c_@W@ }ӦSS@![4+P ;T[@8_ T"@8_q!Tb@9a_qT sc K@@9"A06@s@B2s@@yG O< 3oS@c5Tk[@kk W   @  @Bџ T@A">R(q RFzdBzTS[gR@@@S@[@g@K B"@9B06 @TqRlS@qc@A\`@hW@C@G@ G@"R'TG@WRQC@C@y q`TT#"RCC@R>@R`4M"R4@@9cRaC@y cR*29!Gb 3A9Cy9 A S@kDsEWMmC@g w g ?T[ @T T@9A06@?9C{#T@3@g@Mw@ Tz@ "RRT:H@`C@y qTO@@@9B06@[T@O@!T"RR @ @ "RRҠ"RRJ_@FS@? T xj_TE"8_TB@8Cc6B|SBd2cc`2_$8#9T"z*J T "RgRa{K@Rs@!2sT @? !T@906@"RGC@RA@C@Rs@52a@9b @!!* sHG@@"R)@R$`@7BcR}S !*3@[@@ @)@{j@@T@@9rWv]a06@!"@9B_qT"@9<҂07Ts@!2W@4Rs_9"@976!@"@9B_qTB@y 'ks3"R3C@R@} ks3@@y}  {Cs{[`Bk<@@O|SvC@y qTxqTSB{BO@`@ ){A[CkEsF_ր@ @A,!T ?q@T RrB  R_kTBRZC@?$mTN@⍮"T@y RkTc!,(@B @B@@?q#T!Q_%@ @9`07u_SB@@!@C3@c@ ;R`B@y Rr rq T `@9 07@@@!@9!06@ $qTP6 @@9_qTR:rT@s`R4rT`@ @",BT _qT Rr!  R?kTBR#@ @",BT _q`T Rr!  R?kTBRC;;@qT!T@AR @B@G@A Ѕ@!@`RHB @ @Bt]ӥt]@sSBcDM`@``B@y qT`@ @" _q@ T!  R?kTBRC@?$TN@㍮#_T@y RkATb@!,(B @B`@@?qi T!Qd?RrT?@ @@ qTA R?k@TBRC|`@K@ @;@Bt]ӀR@@"RN@@!@C@*"RX@@ @Gi@!@K@v#RCSBcD@!" 2a@!ѱ4@@K@`ARpF@CRBA !zBRBGT??@Sc;^_ {[v@Rcwr&ESG#bB@yA  Q<qiT5`@ T `@9 7@ccC95?XqR$CzR$CzTx@9C  7tq2`9iTd`Ac7 @T@9a77@TSA[BcC#@{Ũ_d`Ac$'7tq2`9TD ?XcxfĨ$֠77?qT`@bB@yA ?q`'T`B @DFxbA РR!`@@@y! ? qT@9!06@A@@y! !$Q!<?q(TA@9?@TA@906B@BA@@y! !$Q!<?qTA@9?@T`@77`6`@`@@@yB _qT@96?qbB@ya*T!GRb 3bBy!Ba `@@976@B B`{qTa@A @@y 4qTb@@@@y LQ<qT@@@@y_ @!T @_xTBb@@yB _ q`TT@@yB _@qaTc2x9"@9B2"9@9!29Zc@`@@9$06@@@@y Q<qT@@977@@@9A76@@@906 @9!06!@`@9!06`@@ @9768@xC@y qJzT@9779C7#@977#@@yq`  T(qAT# @@TC@9c2C9@9"9IGC@y qTA`aB@yRGA 3aBy@` `aB@yRGA 3aBy@` `aB@yRGA 3aBy@` `aB@y"RGA 3aBy@` `7676`@R@@y xQQ<jAzTB BqAT5?q@T`DFpB7RrT7x@@rT q!T@@ `@Tn aT@ P7rATB B r!T?qT`DFcr!T`@9@06`@B B @@y dq!T`B@6B Bf6|AR)B B AR@ A ! RFw @ @f@RB@B @x! @?q)T!Q! \qAT @@@yc qT@@@yc qT@@aT%pD@@k(!G#Rb 3bBy!Ba c@} @@y}  C{C[uSBcx@GB`G@b@C95a@9?@aT`B@y 4qT!tq!2a9TqT`q`ThTqT`@`@906`@@@9a06@!@907#`@9x`9 xq TqTBA B;!` ReRB$E@ ՟ T`@906`@`a4$E0qa Tk`q`RCy R R9R: @C9` 4kEqTT qTpq Ts@`@@9A76@k?R`@906a@aB@y?jTa@! ? T@@y! ?pqTuqTqaT`@s@`B@y  qHTqTxq`Tq#RB!Ta4$EBG@@A {ASB[CcDC_pq#RB!!R!R`@@976@N!6`@~R|r`T`@@9s06@ҁ@9A06@!R C@y qT@ /Ca @!jC@A **!  *RqkEsFRkEkEkEsFJx?@A **!  ks&@9} { @s@`@9`77 @{¨_ {ccGS[Ub@bBC9B5`cRRG#RcB@y` (qT T,q(T(qTqT$qTb@9?q$NzT?qd9R`T?Tqc*B2b9c96*s@cB@y` (qaT?q$NzT?TqTc9Ra@9B*b9!2a9* 4 ՟T`@9s@76`@9@77`@@@y q`TTSA[BcC#@{ƨ|8q Tq`T4qT?qTa@9!`2a9*q T)TqT(TqT?Pq@R$@zaT`@9 07##3cBy`@_B@b @`@9_@`2`9Xq@Txq`TTqT4b@9B2b9 qTR`@96s@SA[B{ƨ_?TqTd9R?q$Nz`T?TqTc9Rb@9*`9@2`9?qb@9TB2b964`@92`9`@@9B76@X`@9?q@zTs@o?qc9RT?Tqs?qc9RT?Tq{@@y ,q`T T8q`TTq TRA ! W @{¨_$qT @da@@yBRGA 3a@y"RR(@d{¨c`B@yR"RcG 3`BycBc  @{¨_ { @@yA ?8qTHT!! ?qTc*dR"RcG 3@yRc,@ @{¨?q TRA !@  @{¨_cbB@yR`@9cG" 3bByx"RcTBc `9m @{¨_{d1S[*`T* cb@@y~@c`ABG"3@yvxuAxuDy`67V7`4F@`t85aSA!@8H8P8X8`8h8p8+x8$8t8-88886888U 8788 88! 888888^ 8(80888` @8H8 P8X8x`8h8p8x88888N88 888T8888088c 888X 88O 8(80888[@8 H8P8X8`8h8p8x888888Y 888w8888t8U88D8`8u888 8U(80888@8H8P8X8`8h8p8x888f8- 88O888g898e882888888l88. 8(80888V@8oH8P8X8`8oh8=p8x88 8888M88J888p888L8e8j88S 8Q88 8(808K88E@8LH8P8X8(`8h8e p8>x8888888W88888%8k888888V88` 8(8r08S88@8H8P8<X8f`8.h8p8x8888888888V 888D88888888 8(80888@8H8P8X8^`8h8}p8x88 88888%888888l888% 889888 8(80888@8H8 P8> X8`8h8Bp8x888n8888888 8858Q88&88 8o888 85(8 08q88Y@8H8P8 X8`8h8ep8x8_8 8Y88*8S8a8(8888.888889)99r9 9(90989@9H9P9 X9`9Mh9p9Ux99Y999 9>9A99999\9;999Z999@99A 9 (900989@9H9P9X9`9jh9p9Xx99k99999\9L 99999E99999999, 9&(9d0989@9H9P9X9`9h9p9x9L99@9 9g99%9{999 99a929999X99u97 9(909[89@9H9P9X9`9xh9p9/x9 99*999O 99K{{_{G?    @ @"  @B @b @ @ @ @ "@ &@" *@B .@b 2@ 6@ :@ >@ B@ F@" J@B N@b R@ V@ Z@ ^@ b@ f@" j@B n@b r@ v@ z@ ~@ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ A A"  AB Ab A A A A "A &A" *AB .Ab 2A 6A :A >A BA FA" JAB NAb RA VA ZA ^A bA fA" jAB nAb rA vA zA ~A A A" AB Ab A A A A A A" AB Ab A A A A A A" AB Ab A A A A A A" AB Ab A A A A B B"  BB Bb B B B B "B &B" *BB .Bb 2B 6B :B >B BB FB" JBB NBb RB VB ZB ^B bB fB" jBB nBb rB vB zB ~B B B" BB Bb B B B B B B" BB Bb B B B B B B" BB Bb B B B B B B" BB Bb B B B B C C"  CB Cb C C C C "C &C" *CB .Cb 2C 6C :C >C BC FC" JCB NCb RC VC ZC ^C bC fC" jCB nCb rC vC zC ~C C C" CB Cb C C C C C C" CB Cb C C C C C C" CB Cb C C C C C C" CB Cb C C C C D D"  DB Db D D D D "D! &D"! *DB! .Db! 2D! 6D! :D! >D! BD" FD"" JDB" NDb" RD" VD" ZD" ^D" bD# fD"# jDB# nDb# rD# vD# zD# ~D# D$ D"$ DB$ Db$ D$ D$ D$ D$ D% D"% DB% Db% D% D% D% D% D& D"& DB& Db& D& D& D& D& D' D"' DB' Db' D' D' D' D' E( E"(  EB( Eb( E( E( E( E( "E) &E") *EB) .Eb) 2E) 6E) :E) >E) BE* FE"* JEB* NEb* RE* VE* ZE* ^E* bE+ fE"+ jEB+ nEb+ rE+ vE+ zE+ ~E+ E, E", EB, Eb, E, E, E, E, E- E"- EB- Eb- E- E- E- E- E. E". EB. Eb. E. E. E. E. E/ E"/ EB/ Eb/ E/ E/ E/ E/ F0 F"0  FB0 Fb0 F0 F0 F0 F0 "F1 &F"1 *FB1 .Fb1 2F1 6F1 :F1 >F1 BF2 FF"2 JFB2 NFb2 RF2 VF2 ZF2 ^F2 bF3 fF"3 jFB3 nFb3 rF3 vF3 zF3 ~F3 F4 F"4 FB4 Fb4 F4 F4 F4 F4 F5 F"5 FB5 Fb5 F5 F5 F5 F5 F6 F"6 FB6 Fb6 F6 F6 F6 F6 F7 F"7 FB7 Fb7 F7 F7 F7 F7 G8 G"8  GB8 Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< G< G< G< G= G"= GB= Gb= G= G= G= G= G> G"> GB> Gb> G> G> G> G> G? G"? GB? Gb? G? G? G? G? @ @"  @B @b @ @ @ @ "@ &@" *@B .@b 2@ 6@ :@ >@ B@ F@" J@B N@b R@ V@ Z@ ^@ b@ f@" j@B n@b r@ v@ z@ ~@ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ A A"  AB Ab A A A A "A &A" *AB .Ab 2A 6A :A >A BA FA" JAB NAb RA VA ZA ^A bA fA" jAB nAb rA vA zA ~A A A" AB Ab A A A A A A" AB Ab A A A A A A" AB Ab A A A A A A" AB Ab A A A A B B"  BB Bb B B B B "B &B" *BB .Bb 2B 6B :B >B BB FB" JBB NBb RB VB ZB ^B bB fB" jBB nBb rB vB zB ~B B B" BB Bb B B B B B B" BB Bb B B B B B B" BB Bb B B B B B B" BB Bb B B B B C C"  CB Cb C C C C "C &C" *CB .Cb 2C 6C :C >C BC FC" JCB NCb RC VC ZC ^C bC fC" jCB nCb rC vC zC ~C C C" CB Cb C C C C C C" CB Cb C C C C C C" CB Cb C C C C C C" CB Cb C C C C D D"  DB Db D D D D "D! &D"! *DB! .Db! 2D! 6D! :D! >D! BD" FD"" JDB" NDb" RD" VD" ZD" ^D" bD# fD"# jDB# nDb# rD# vD# zD# ~D# D$ D"$ DB$ Db$ D$ D$ D$ D$ D% D"% DB% Db% D% D% D% D% D& D"& DB& Db& D& D& D& D& D' D"' DB' Db' D' D' D' D' E( E"(  EB( Eb( E( E( E( E( "E) &E") *EB) .Eb) 2E) 6E) :E) >E) BE* FE"* JEB* NEb* RE* VE* ZE* ^E* bE+ fE"+ jEB+ nEb+ rE+ vE+ zE+ ~E+ E, E", EB, Eb, E, E, E, E, E- E"- EB- Eb- E- E- E- E- E. E". EB. Eb. E. E. E. E. E/ E"/ EB/ Eb/ E/ E/ E/ E/ F0 F"0  FB0 Fb0 F0 F0 F0 F0 "F1 &F"1 *FB1 .Fb1 2F1 6F1 :F1 >F1 BF2 FF"2 JFB2 NFb2 RF2 VF2 ZF2 ^F2 bF3 fF"3 jFB3 nFb3 rF3 vF3 zF3 ~F3 F4 F"4 FB4 Fb4 F4 F4 F4 F4 F5 F"5 FB5 Fb5 F5 F5 F5 F5 F6 F"6 FB6 Fb6 F6 F6 F6 F6 F7 F"7 FB7 Fb7 F7 F7 F7 F7 G8 G"8  GB8 Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< G< G< G< G= G"= GB= Gb= G= G= G= G= G> G"> GB> Gb> G> G> G> G> G? G"? GB? Gb? G? G? G? G? @ @"  @B @b @ @ @ @ "@ &@" *@B .@b 2@ 6@ :@ >@ B@ F@" J@B N@b R@ V@ Z@ ^@ b@ f@" j@B n@b r@ v@ z@ ~@ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ A A"  AB Ab A A A A "A &A" *AB .Ab 2A 6A :A >A BA FA" JAB NAb RA 99h9x9999999990989@9X9`9h9p9999999999999999 9(90989@9H9P9X9`9h9p9x9988N 8(8#0888Q@8PH8_P8X8`8hh8p8Bx8!988888Q88>8888848T8' 88-8888 8(80888@8H8P8jX8`8 h8p8x888V888?88888I88885888R888W 8(80888@8H8P80 9X8x`8h8p86x858)88888!886888'888j88788$8w81 8V(8%0888E@8@H8HP8X8`8h8p8x888m888F8x8f 8K888a8t8=09z89m@9jH99@9H9p9x999 9 9 9 9 9 9 9( 90 98 9@ 9H 9P 9h 9 9 9 9 9 9 9 9 9 9h 9p 9 9 9 9 9 9 9 9 9 9 9099999999999990989@9H9p9x99999999999999999999999 9(90989@9H9P9X9`9x9999999999999999 9(90989@9P9999999999999 9(9H9P9x999:X9:9n9n9n 9n@ 9n 9(9c09p9p9pP9DX9`999999989 9A 9A 9A 9A( 9A0 9A8 9A@ 9A 9A 9 9w 9 9 9x 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9( 9 97X 9` 9p 9`x 9` 96 96 96 96 96( 96x 9) 9 9 9 9U 9 9X 998999"9"9dP9d9 9(9X9D`9Dh999Y9Y9Y9Y9Y9Y 9Y(9Y09Y89Y@9YH9YP9YX9Y`9Yh9Yp9Yx9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y99H97`9p9999999`999999999999998 98 999999_ 9(9Y09|89@9#H9P9X9h9Mp9?x99I9n99p9p9"999999 9@999;9X99999, 9,(90989]@9 H9VP9~X9I`9" h9p9rx9299999t99999>999{9)9999N99v 9(9_0989@9H9P9X91`9h9'p9x999999999D9999z99R9999 999N(90989@9H9gP9eX9~`9h9p9&x9U99H99999x9D9O09O999}9H99999X9 9 9(989@9cH9pP9X9`9h9.p9x99999-999999999`999$99 89 9}(9PH9XP9X9`9h9p9x99(999999k9O9Q9y999}9 9b9P9b9b 9(909a89@9H9FP9X9 `9h9ip9x99999+99)99999+9V99909999<999 9C(9P989<x9<@9H9 X9`9Th9Tp99K999999f99999R9R999999 9%(9%09%89%@9%H9P9X9`9h9p9x9999999?99999 9 9 9 9 99999 9 9(90989@9?H9P9X9`9h9p9}x9\9n999 99#959$9$9999(999099Y9Y9Y9Y 9YH9X9h9; p99x99999#9#9#9999999C9C9C9C9!9! 9! 9!( 9!0 9!P 9!X 9! 9] 9] 9]8 9@ 9H 9` 9^h 9p 9x 9 9 9o 9E 9 9G 9g 9J 9: 9 9 9 9 91 9X 9Y!9\!9!9 !9=(!9W0!9W8!9@!9H!9 P!9X!9`!9>h!94p!9888^8 8(80888`@8rH8P8X8N`8h8Rp8x88k88888B88888<888/8u888+88? 8,(80888@8H8P8uX8`8)h8 p8Ux8888888K8^88 8 8b888C8[8b88L88 8(808`88@8#H8P8 X8`8h8p8x88 8T 8 8888888d898!88888888 8x(808k88@8H8hP8X8`8h8lp8fx8888888s88J 88838:888888T88 8_(8f0888@8H8P8X8 `8( h8p8P x888n8a88e8u8888888e88888c8:8G 8 8(8!08488!@8H8nP8X8`8fh8"p8x8O8]8#888$8%88s888_88&8'8(8]88)88l 8@(80888@8*H8P8X8`8Jh8p8x838-8u88+8,8-88.8888*8y8I8/8E80888p 8(8|0888@81H8P8X8x`8h8p8x88z8888a82888B838E888J886 8? 88$8!8 8 (808884@85H8P8X8.`87h8H p88x88888F8z88\81898:88;8}8<8[8a88=88 8o(8>08y88@8?H8@P8X8 `8h87p8x88 88888888A888C 8 8C88B8C88D8 8(8E08V88F@8H8GP8X8`8h8Hp8:x8I88J8 88K88L88 8z88M8381 8N8P8O888 8P(808P88@8H8QP8X8`8Oh8Rp8x8K8S888S8~88M 88T8"8U88V888W8y8W 8%8 8(8i0888Y@8H8P8X8`8h8p8x8Z8.8[888E8\88)888]858G8R8y8|8^88 8 8(8@08$88@8_H8P8`X8`8h8p8x80888Q88O8J8a8898Z 8c8888888C88 8W(8d0888e@8 H8P8NX8`8fh8[ p80x8h8'88i88j88) 888d888+8H888k8868 8(808l88@8 H8P8oX8# `8mh8hp8x8M88?88n88t8o88m88p88q8r8 888s8h8  8;(8t08u88P8{X8`8P4h8f4p8f4x8f48f48g48g48 g48(g488g48@g48Pg48`g4Ȧ8hg4Ц8xg4ئ8g48g48g48g48g48g48g48g48g4 8g4(8h408188h4@8h4H8 h4P8X8(h4`82h80h4p88h4x8@h4888Hh48Ph48Xh48`h48hh48ph48xh48h4ȧ8h4Ч8h4ا8h48h48h48h48h48h48h48h48h4 8i4(8i408W488i4@8(i4H88i4P8Hi4X8HX4`8PX4h8XX4p8`X4x8hX48pX482828xX48X48X48X48X480Q4Ȩ8HQ4Ш8ȏ2ب8X482828X48X48X48X48X48X4 81(8X408Xi488`i4@8pi4H8i4P8i4X8i4`8i4h8i4p8i4x8Y48Y48Y4828x28i48i48i48i48i4ȩ8Z4Щ804ة8Z48i488i48j48j48PZ48XZ48`Z4 8hZ4(8pZ408488xZ4@8 j4H80j4P8@j4X8Pj4`8`j4h8hj4p8pj4x8xj48@18[48j48j48j48j48j48j48j4Ȫ8j4Ъ8j4ت8k48k48H\48P\48X\48XS48 k48(k488k4 8@k4(8Hk408Pk488H@8Xk4H8hk4P8pk4X8k4`81h8 ]4p8(]4x80]488]48`28@]48 8k48k48k48k48k4ȫ8k4Ы8k4ث8l48^48^482818l480^48д288^4 8@^4(8H^408P^488X^4@8`^4H8 l4P8^4X8^4`8^4h8(l4p88l4x8Hl4828^4828^48^48^48^48^48^4Ȭ82Ь8^4ج8^48_48_48_48p28Pl48_48 _48(_4 80_4(88_408`l488pl4@8h_4H8x_4P8P2X8`2`8l4h8l4p8l4x8l48l48l48l48l48l48l48l48l48l4ȭ8m4Э8m4ح8m48 m48(m480m488m48@m48Hm48Pm48Xm4 8`m4(8hm408pm4882@82H8ظ2P82X8x2`82h82p80`4x88`48@`482828m48X`48``48h`48p`48`4Ȯ8`4Ю8`4خ8`48028828`48`48`48@28`48H2 8`4(8m408X288h2@8`4H8`4P8`4X8`4`8a4h8a4p8a4x8 a48(a480a488a48@a48Ha488m48m48hȯ8m4Я8m4د8m48m48m48n48n48 n480n488n48Hn4 8Xn4(8hn408xn488n4@8n4H8n4P8n4X8n4`8n4h8n4p8n4x8n48o48o48o48 o48(o480o488o48@o48Ho4Ȱ8Po4а8c4ذ8@28X28c48Xo48`o48po48o48d48o4 8o4(8o408o488o4@8P4H8o4P8o4X8o4`8Ȯh8o4p8o4x8p48p48(p48 p480p48@p48Hp48Pp48Xp48e4ȱ8e4б8e4ر8e48e48hp48pp48p48P8x8p488 8p4(8(08p488p4@8p4H8p4P8p4X8p4`8p4h8p4p8q4x828L48q48q48 q48(q480q488q48@q48Hq4Ȳ8Pq4в8Xq4ز8`q48hq48pq48xq48q48q48q4848q4 8q4(8q408q488q4@8q4H8q4P8q4X8q4`8q4h8q4p8q4x8q48(n28r48r48r48r48 r48(r480r488r4ȳ8@r4г8Hr4س8Pr48Xr48`r48hr48pr48xr48r48r48r4 8r4(8r408r488r4@8r4H8r4P8r4X8r4`8r4h8r4p8r4x8r48r48s48s48s48s48~28 s48}4ȴ8}4д8}4ش8}48}48}48}48~48 ~480~48@~48x4(8`H8h8ȱ8ر88888ȵ8е8 |88p38(8p3(8808X{H8HP8X{h8`p8z8p8z88yȶ8ж8Hw88Hw88Hw(808PvH8вP8Pvh8p8 |88 |88 |ȷ8з8 |8(8 |888 |(8H08 |H8XP8 |h8hp8 |8x8 |88 |ȸ8и8@v8808ȳ80(8080vH8h888 ȹ808@8(8pH8PX8hh8xx8h8888شȺ8غ88888 (8(888H8@X8V2h8Xx88p8Ȼ888(8 H8@h8`88ȼ8ж828H828H(8Є288H82X8h82x88288(28Ƚ8@2ؽ88X288p28(8288H82h82x8828828h8w48w4`8w4@8 w4 8(w480w488w488`Z4999@ 2919H49X2919291982919G49~49V2 91(9109 289H@9xp4H91P9X92`91h91p91x9 19xU29(19019819@19H19P19X19`19h19p19x1919191919V29@ 29191 9H4(9109189X2@9PH91P91X91`91h9ȳ1p9г1x9س191982919G49~491919 29H9xp4919x!9Y2!908 8P8,p8VP8p88{8й88 808P8pp888=к88 808P8Wp8B8r8л8g8g8g08gP8gp8g88м8 8x880888н88808P8Gp8GP8wp88j8898` 8` 8 8888W 8F(80888W@8(8H8\P8h88@ 808]P8h888d8S8i8P8&`80 888z8f 8SP88`8E8Z8(8~H8kP8888 8H8P8<`88R8F 888P8 8888k88~H8_P8i8H8^8 888H8pP8_ 8\89 89 99 8-8Q8Q8Q8P8P848u8u8u84848488889888888 8 8(8808T8T8T8T88888@8L 8L8L8LH8(888P8G08G8GX8288282`8J@8J 8Jh87p88088p8P88888E8E8<8Y8n8lH8h(8hP8x8808JX8w`8@8 8h8w88T8848988888F888888NH8`8h8 p8lx888> 8 8\8882(88888B8B8K 88288888u`9u88g8 9g88888 8"(80888\ @8&H8P8X8`8h8p88r88c8N8f888888R 8i888d88Z8Z8[8 8Z(80888@83H8909P8X8`8h8p8x8?8 888D88s888 8!8B 8,p9,x9,88-8Z8X8p88C8L 8(8 0888}@8H8= P8X8i`8h8p8x888(8q88:8N88*8s88388t88M8868!8Q 8 8(8s08488 @85H8P8X8`8~h8p8x8A8 P9 8, 8898888w88m88>8 818I8888=8T(808^88@8aH8P8>X8X`8h8p8x8~88* 8G88{8^ 888 88`988S88889@9888 8;(8b08 88@8H8bh9bP8{X8`8gh8p8x8888888<8P98>8888888L88|8888| 8b(808882@8eH8P8X8`8'h8ip89x88~88 888h888$ 88 8888888838G 8(80888@8@H8UP8$X8`8h8p8x8q8 88T88'88l8d88D8v88%8=88H838n8(8& 87 (808888"@8*H8P8X8`8;h8p8x88888q8'8 8886X968"88 88888888 80888@8H8,P8HX8`8h8-p8;x888888 888`88A88{8/8+888899999999999989h999999H 9P 9X 9` 9h 9p 9x 9 9 9 9 9 90 98 9@ 9H 9P 9X 9` 9h 9p 9 9 9 9 9 9 9 9 9 9H 9P 9X 9` 9 9 9 9 9 9 9 9 9 9( 90 98 9@ 9H 9P 9` 9h 9p 9x 9 9 9 9 9 9 9 9 9 9 9 9 9999 9(9@9H9P9X9`9h9p9x9999h9p99p7 v86 v8@6 v83 v8P3 v83 v8p2 v8@2 v82 v81 v801 v80 v8p0 v80 v8/ v8`/ w8 / w8 . w8- w8- w8- (w8@- 0w8P+ 8w8+ @w8* Hw8* Pw8) Xw8) `w8P) hw8( pw8( xw8`( w8 ( w8& w8% w8% w8% w8@% w8$ w8$ w8 w8 w8H w8 w8 w8h w8( w8 x8 x8 x8 x8h x88 (x8 0x8H 8x8 @x8 Hx8 Px8h Xx88 `x8(hx8px8xx8x8Xx8(x8x8x8x8hx88x8x8x8x8Xx8(x8Hx8x8x8y8Xy8y8y8H y8(y8h0y88y8@y8Hy8hPy88Xy8h`y8hy8py88xy8y8hy8y8.y8y8xy8Hy8y8y8y8xy8hy88.y88y8y8y8kz88z8z8z8H z8((z80z88z8X@z8(Hz8Pz8Xz8p`z8hz8pz8Pxz8Иz8 z8 z8Жz8z8z8z8az8az81z8z8pz8j.z8X=.z8Pz8H[z8[{8H.{8h-{8-{8_ {8 k({8-0{8(c-8{80l@{8H{8P{8X{8`{8h{8`p{8x{8{8`{80{8{8p{8{8{8xp{8(:-{8( -{8hy{8X,{8(,{8X{{8@{8{8@,|8X,|8Ь,|8|8V2 |8(N2(|8N20|8m28|8m2@|8m2H|8m2P|8m2X|8m2`|8m2h|8m2p|8m2x|80^2|8n2|8n2|8n2|8n2|8 n2|8(n2|8(|8m2|8m2|8m2|80n2|8m2|8m2|8m2|8m2|88n2}8n2}8@n2}8Hn2}8Pn2 }8Xn2(}8`n28}8c2H}8c2X}8Hj2h}8Xj2x}8hj2}8pj2}8j2}8j2}8j2}8j2}8j2}8j2}8j2~8j2~8j2(~8k28~8k2H~8 k2X~80k2h~88k2x~8Hk2~8Xk2~8hk2~8xk2~8k2~8k2~8k2~8k2~8k28k28k2(8k288k2H8l2X8l2h8 l2x80l288l28@l28Pl28`l28pl28l28l28@f28Hf2(8Xf288hf2H8xf2X8f2h8f2x8f28f28f28f28f2Ȁ8f2؀8g28g28 g280g28Hg2(8Xg288hg2H8xg2X8g2h8g2x8g28g28g28g28g2ȁ8h2؁8h28 h280h28@h28Ph2(8Xh288`h2H8hh2X8ph2h8xh2x8h28h28h28h28h2Ȃ8h2؂8h28h28h28h28i2(8i288i2H8i2X8(i2h80i2x88i28Hi28Xi28hi28xi2ȃ8i2؃8i28i28i28i28i2(8i288i2H8i2X8i2h8i2x8j28j28j28j28 j2Ȅ8(j2؄80j288j28@j28(818l28l2 8l2(8l208l288l2@8l2H8l2P8l2X8l2`8l2h8l2x8m28m28m28m28 m2ȅ80m2؅8@m28Hm28Pm28Xm28hm2(8xm288m2H8m2X8m2h8m2p8Px828P2І82؆8е18028`28p28H28P28X28`28h2 8p2(8x208288H1@82H82P82X82`82h82p82x828Ȼ28л28x8d؇8@38838038(38383838383 83(8308`38803@83H83P8x3X8h3`8`3h8X3p8P3x8H38838038(3838383838383Ȉ83Ј83؈838383838x38h38@38 383 83(83083883@83H83P8H3X83`83h83p83x838383838383838038(3ȉ8 3Љ83؉83838383838ا38Ч38ȧ383 83(83083883@83H8x3P8p3X8h3`8`3h8X3p8P3x8H38@38838038(38 383838383Ȋ83Њ83؊83838ئ38Ц38Ȧ383838383 83(8308388x3@8h3H8`3P8P3X8@3`883h803p8 3x838383838383838إ38ȥ383ȋ83Ћ83؋838383838838038(383 83(83083883@83H83P8ؾ3X8о3`83h83p83x8383838x38p38h38`38P38@3883Ȍ8(3Ќ83،8383838383838н38Ƚ383 83(83083883@83H83P8x3X8p3`8h3p8x38x38p38h38`38X38P38H38@3883ȍ803Ѝ8 3؍838383838383838383 83(83083883@83H83P83X83h8H4p8@4x8848048 484848484848484Ȏ84Ў84؎848484848484848x48p4 8h4(8`408X488P4@8H4H8@4P884X804`8(4h8 4p84x84848484848484848484ȏ84Џ84؏848484848x48p48`48P48H4 8@4(80408(488 4@84H84P84X84`84h84p84x84848484848484848488Ȑ84ؐ8F48G48G48G48(G488G48HG48PG48`G4 8pG4(8G408G488G4@8G4H8G4P8G4X8G4`8G4h8G4p8H4x8H48(H488H48HH48PH48XH48hH48xH48H48H4ȑ8H4Б8H4ؑ8H48H48I48I48 I480I48@I48PI48`I4 8hI4(8xI408I488(@88H8I4P8I4X8I4`8I4h8I4p8I4x8I48I48I48I48I48I48I48I48J48J4Ȓ8J4В8J4ؒ8 J48(J480J48@J48HJ48PJ48XJ48`J48hJ4 8pJ4(8xJ408J488J4@8J4H8J4P8J4X8J4`8J4h8J4p8J4x8J48J48J48J48J48J48J48K48K48(K4ȓ88K4Г8HK4ؓ8XK48hK48xK48K48K48K48K48K48K4 8K4(8K408K488K4@8K4H8K4P8K4X8L4`82h82p8L4x8L4828L48 L48(L480L488L48@L48HL48PL4Ȕ8XL4Д8`L4ؔ8hL48pL48xL48L48L48L48L48L48L4 8L4(8L408L488L4@8L4H8L4P8L4X81`8L4h81p8L4x8F4818M48M48M48(M488M48@M48PM48`M4ȕ8pM4Е8xM4ؕ8M48M48M48M48M48M48N48N48(N4 88N4(8PN408`N488xN4@8N4H8N4P8N4X8N4`8N4h8N4p8N4x8O48O48(O488O48PO48`O48xO48O48O48O4Ȗ8O4Ж8O4ؖ8O48O48P48 P480P488P48HP48PP48`P4 8pP4(8xP408P488P4@8P4H8P4P8P4X8Ȯ`8P4h8P4p8P4x8P48P48P48048P48P48Q48Q48Q48 Q4ȗ8(Q4З80Q4ؗ8X88Q488@Q48HQ48PQ48`Q48p{8hQ4 8xQ4(8Q408Q488Q4@8Q4H8Q4P8Q4X8Q4`8R4h8R4p8(R4x8@R48PR48hR48R48R48R48R48R48R48x2Ș8S4И8S4ؘ80S48HS48`S48xS48S48S48S48S48S4 88(8@208S488S4@8T4H8T4P8 T4X88T4`8h8HT4p8`T4x8XT48T48xT48T48T48T48T48T48T48T4ș8U4Й8U4ؙ80U48(U48@U48XU48PU48pU48hU48U48U4 82(8U408U488U4@8U4H8U4P8V4X8V4`8 V4h80V4p8@V4x8PV48`V48pV48V48V48V48V48V48V48W4Ț8W4К8 W4ؚ80W48PW48hW48W48HW48`W48xW48W48W4 8W4(8W408W488W4@8X4H8W4P8X4X88X4`8HX4h8PX4p8XX4x8`X48hX48pX482828xX48X48X48X48X4ț80Q4Л8HQ4؛8ȏ28X482828X48X48X48X48X4 8X4(8108X488X4@8Y4H8Y4P82X88Y4`8HY4h8`Y4p8pY4x8Y48Y48Y48Y4828x28Y4828Y48Y4Ȝ8Y4М8Z4؜8048Z48288Z48 Z488Z48PZ48XZ4 8`Z4(8hZ408pZ4884@8xZ4H8Z4P8Z4X8Z4`8Z4h8Z4p8Z4x8Z48Z48Z48[48[48([48@[48`[48[48[4ȝ8[4Н8[4؝8[48\48 \48H\48P\48X\48`\48p\48\4 8\4(8\408\488\4@82H8\4P8\4X8\4`8]4h81p8 ]4x8(]480]488]48`28@]48H]48X]48p]48]48]4Ȟ8]4О8]4؞8]48]48^48^482818(^480^48д2 88^4(8@^408H^488P^4@8X^4H8`^4P8p^4X8^4`8^4h8^4p8p2x8^48ػ2828^4828^48^48^48^48^4ȟ8^4П82؟8^48^48_48_48_48p2828_48 _4 8(_4(80_4088_488H_4@8X_4H8h_4P8x_4X8P2`8`2h8_4p8_4x8_48_48_48Ȧ88_48_48228_48_4Ƞ8_4Р8_4ؠ8_48p28_48_48_4828`48`48`4 8`4(8 `408(`488832@82H82P8ظ2X82`8x2h82p82x80`488`48@`482828P`48X`48``48h`48p`4ȡ8`4С8`4ء8`48`48028828`48`48`48@28`4 8H2(8`408`488X2@8h2H8`4P8`4X8`4`8`4h8a4p8a4x8a48 a48(a480a488a48@a48Ha488Pa48`a4Ȣ8pa4Т8a4آ8a48a48a48a48a48a48b48b48 b4 80b4(8Hb408Xb488hb4@8xb4H8b4P8b4X8b4`8b4h8b4p8b4x8b48b48c48c48(c488c48Hc48Xc48hc48xc4ȣ8c4У8c4أ8c48@28X28c48c48c48c48d48d4 8d4(8d408d4880d4@8Pd4H8Pd4P8Pd4X8hd4`8d4h8d4p8d4x8d48d48d48e48e48 e488e48Pe48he48e4Ȥ8e4Ф8e4ؤ8e48e48e48e48X28`Q48p{8hQ48xQ4 8д(8e408e488e4@8e4H8e4P8e4X8f4`8f4h8f4p8f4x8(f480f48|8@f48Hf48Pf48R48X8x280ȥ8Xf4Х8hf4إ8xf4818f488f48f48f48f48f4 8f4(8S408f488T4@8f4H8p?2K8?2K8?2K8@2K8(@2K81K81K8H@2K8X@2K8h@2L8@2L8@2L81L81 L8(1(L8810L8@28L8@2@L8@2HL8H1PL8P1XL8@2`L8X1hL8h1pL8@2xL8p1L81L8@2L8@2L8A2L8 A2L88A2L81L81L81L81L8PA2L8`A2L8pA2L8A2L8A2L81M81M81M81M8A2 M8A2(M8A20M8A28M8B2@M8B2HM80B2PM8HB2XM881`M8@1hM8x1pM81xM81M81M81M81M81M81M81M81M81M81M8`B2M8xB2M8B2M8B2M8B2M8B2M8B2N8B2N8C2N8C2N8C2 N8(1(N8810N8(C28N8PC2@N8xC2HN8C2PN8C2XN8D2`N80D2hN8hD2pN8D2xN8P1N8X1N8D2N8D2N8E2N8E2N88E2N8XE2N8xE2N8E2N8E2N8E2N8E2N8E2N8E2N8E2N81O81O8F2O8F2O8F2 O8 F2(O810O818O8(F2@O81HO81PO8 1XO8(1`O88F2hO8@F2pO8HF2xO8`F2O8xF2O8F2O8F2O8F2O8F2O8F2O8F2O8F2O8P1O8h1O8G2O8G2O8(G2O8HG2O8hG2P81P82P8G2P81 P8G2(P8G20P8G28P8G2@P882HP82PP8G2XP8G2`P8G2hP8G2pP8H2xP8H2P8(H2P82P80H2P8H2P88H2P8@1P8@H2P82P8HH2P8XH2P8hH2P8H2P8H2P8H2P8H2P8H2Q8H2Q8I2Q8PQ81 Q8I2(Q8I20Q8(I28Q8@I2@Q8XI2HQ8pI2PQ8I2XQ8I2`Q8I2hQ8I2pQ8I2xQ8I2Q8I2Q8I2Q8H1Q8X1Q8I2Q8I2Q8Q8H92Q8I2Q8J2Q81Q81Q8J2Q8 J2Q8(J2Q80J2R88J2R8PJ2R8hJ2R8J2 R82(R80R8J28R8J2@R8J2HR8J2PR8J2XR8K2`R8K2hR80K2pR8HK2xR8PK2R8XK2R8`K2R8hK2R8pK2R8G4R8PR8xK2R8K2R8K2R8K2R8K2R8p.2R8( 2R8`1R8K2S8K2S8H4S8 1S8X1 S8((S8xp40S828S8K2@S8K2HS8PS882XS8`1`S8h1pS8K2xS8K2S8L2S8L2S8L2S8L2S8 L2S8(L2S80L2S88L2S8@L2S8ȣS8HL2S8PL2S8XL2S8`L2S8hL2S8pL2T8xL2T8L2T8L2T8L2 T8L2(T8L20T818T81@T8P1HT8`1PT8L2XT8L2`T8L2hT8L2pT8L2xT8L2T8L2T8L2T8L2T8L2T8L2T8M2T8M2T8M2T8M2T8 M2T8(M2T80M2T88M2T8@M2T8HM2T8PM2U8XM2U8`M2U8hM2U8pM2 U8xM2(U8M20U8M28U8M2@U8M2HU8M2PU8M2XU8M2`U8M2hU8M2pU8M2xU8M2U8M2U8M2U8M2U8M2U8M2U8N2U8N2U8N2U8N2U8 N2U8`,U80,U8,U8,V8,V8,V8,V8, V8,(V8,0V8,8V8,@V8Ј,HV8,PV8`~,XV8|,`V8`v,hV8p,pV8i,xV80d,V8d,V8c,V8Z,V8W,V8S,V8`S,V8S,V8R,V8R,V8R,V8`R,V80R,V8R,V8Q,V8N,V8XN,W8(N,W8M,W8M,W8M, W8hM,(W8(M,0W8L,8W8L,@W8PHW8.PW8XL,XW8L,`W8K,hW8K,pW8hK,xW8(K,W8HI,W8H,W88H,W8 F,W80E,W8@D,W8C,W8A,W8A,W88$,W8$,W8#,W8#,W8,W8,W8,X8h,X8+X8+X8x+ X8H+(X8+0X8h+8X8+@X8H+HX8+PX8+XX8x+`X8+hX8h+pX88+xX8+X8+X8+X8+X8x+X8(+X8+X8+X8ػ+X8x+X8(+X8+X8xQX8.X8+X8H+X8+Y8+Y8+Y8+Y8X+ Y8(+(Y8+0Y8Ȭ+8Y8+@Y8H+HY8+PY8+XY8+`Y8+hY8X+pY8+xY8+Y8+Y8h+Y88+Y8+Y8+Y8x+Y8H+Y8+Y8+Y8+Y8x+Y88+Y8+Y8+Y8x+Y88+Z8+Z8ئ+Z8+Z8x+ Z8H+(Z8+0Z8X+8Z8(+@Z8+HZ8h+PZ8X+XZ8+`Z8+hZ88+pZ8+xZ8+Z8H+Z8+Z8+Z8+Z8X+Z8(+Z8+Z8X+Z8+Z8؋+Z8+Z8x+Z8p+Z8xp+Z8Hp+Z8p+[8o+[8o+[8o+[8Xo+ [8(o+([8n+0[8n+8[8n+@[8hn+H[88n+P[8n+X[8m+`[8 B+h[8p[8A+x[8@=+[8=+[8<+[8<+[8P<+[8<+[8`;+[80;+[8;+[8+[8 +[80*[8*[8*[8pb*[8@b*[8b*\8a*\8a*\8a*\8`* \8@_*(\8^*0\8^*8\8]*@\8\*H\8P*P\8`P*X\80P*`\8P*h\8O*p\80O*x\8O*\8N*\8N*\8PN*\8?*\8:*\8P:*\8 3*\8.*\8p.*\8)*\8`#*\8*\8`*\8*\8*\8)]8)]8)]8)]8) ]8@)(]8)0]8)8]8)@]80)H]8)P]8)X]8`)`]8)h]8)p]8@)x]8)]8)]8)]8p)]8@)]8)]8`)]80)]8)]8)]8)]8P)]8)]8)]8)]8`)]80)^8)^8)^8)^8x) ^88)(^88)0^8)8^8؍)@^8)H^8y)P^8Py)X^8 y)`^8px)h^8@x)p^8x)x^8Pw)^8 w)^8v)^8u)^8u)^8t)^8 >)^8=)^8p;)^8@%)^8$)^8")^8")^8`")^8)^8)^8P)_8)_8P)_8 )_8) _8)(_8)0_80)8_8)@_8`)H_8)P_8P)X_8(`_8(h_80(p_8(x_8(_8(_8P(_8w(_8pg(_8@Q(_8J(_82(_8p,(_80'(_8%(_8%(_8'_8'_8'_8$_8X$`8($`8$`8$`8$ `8h$(`88$0`8$8`8$@`8$H`8x$P`8H$X`8$``8$h`8$p`8$x`8X$`8($`8$`8$`8$`8h$`88$`8$`8$`8$`8x$`8H$`8$`8$`8$`8$`8X$a8($a8$a8Ⱦ$a8$ a8h$(a88$0a8$8a8ؽ$@a8$Ha8x$Pa8H$Xa8$`a8$ha8$pa8$xa8X$a8($a8$a8Ȼ$a8$a8h$a88$a8$a8غ$a8$a8x$a8H$a8$a8$a8$a8$a8X$b8($b8$b8ȸ$b8$ b8h$(b88$0b8$8b8ط$@b8$Hb8x$Pb8H$Xb8$`b8$hb8$pb8$xb8X$b8($b8$b8ȵ$b8$b8h$b88$b8$b8ش$b8$b8x$b8H$b8$b8$b8$b8$b8X$c8($c8$c8Ȳ$c8$ c8h$(c88$0c8$8c8ر$@c8$Hc8x$Pc8H$Xc8$`c8ؤ$hc8أ$pc8X$xc8$c8x$c8($c8~$c8h~$c88~$c8}$c8X}$c8|$c8x|$c8H|$c8|$c8{$c8{$c8{$c8X{$c8({$d8y$d8Xv$d8(v$d8Hu$ d8xk$(d8j$0d8i$8d8i$@d8i$Hd8Xi$Pd8Xh$Xd8Hg$`d8f$hd8f$pd8e$xd8e$d8(e$d8d$d8c$d8c$d8c$d8a$d8^$d8^$d8XJ$d8H$d8H$d8XG$d8G$d8E$d8(D$d8A$e8hA$e88$e8H3$e83$ e82$(e82$0e82$8e8X2$@e8(2$He81$Pe81$Xe81$`e8h1$he881$pe81$xe80$e80$e8x0$e8H0$e80$e8/$e8/$e8/$e8X/$e8(/$e8.$e8.$e8.$e8h.$e88.$e8.$e8-$f8-$f8x-$f8H-$f8@' f8h'(f8m'0f8B'8f8'@f8x&Hf8'Pf8&Xf8H&`f8 &hf8&pf8{&xf8(a&f80F&f8*&f8&f8%f8%f8%f80%f8g%f8A%f8%f8$f8$f8-$f8,$f8,$f8x,$g8H,$g8+$g8+$g8+$ g8X+$(g8*$0g8*$8g8*$@g8x)$Hg88)$Pg8)$Xg8($`g8H($hg8($pg8'$xg8'$g8('$g8&$g8H&$g8&$g88%$g8%$g8$$g8X$$g8($$g8#$g8#$g8#$g88#$g8#$g8"$g8"$h8("$h8!$h8!$h8!$ h8h!$(h88!$0h8!$8h8 $@h8 $Hh8x $Ph8H $Xh8 $`h8$hh8$ph8$xh8X$h8($h8$h8$h8$h8h$h88$h8$h8$h8$h8x$h8H$h8$h8$h8$h8$h8X$i8($i8$i8$i8$ i8h$(i88$0i8$8i8$@i8$Hi8X$Pi88$Xi8$`i8$hi8x$pi8H$xi8$i8$i8$i8$i8$i88$i8$i8x$i8H$i8$i8$i8$i8$i8($i8$i8$i8x$j8H$j8$j8$j8$ j8$(j8$0j8X$8j8($@j8$Hj8$Pj8$Xj8($`j8X $hj8 $pj8$xj8#j8#j8X#j8#j8#j8#j8x#j8H#j8#j8#j8H#j8#j8#j8X#j8#j8#j8H#k8#k88#k8h#k88# k8#(k8ا#0k8#8k8x#@k8H#Hk8#Pk8#Xk8#`k8#hk8Ȝ#pk8j#xk8j#k8(d#k8b#k8Hb#k8b#k8H`#k8Z#k8H#k8pH#k8@H#k8F#k8E#k8,#k8#k8#k8#k8#l8#l8#l8#l8# l8P#(l8P#0l8"8l8"@l8P"Hl8`"Pl8"Xl8"`l8"hl8"pl8@"xl8H"l8"l8"l8"l8h"l8"l8"l8"l8"l8h"l8("l8"l8"l8"l8"l8x.l8X"m8("m8"m8"m8ȏ" m8"(m8h"0m8"8m8Ȏ"@m8x"Hm8"Pm8"Xm8X"`m8("hm8y"pm8y"xm8Xy"m8(y"m8x"m8x"m8hx"m8x"m8w"m8w"m8w"m8Xw"m8(w"m8v"m8(v"m8a"m8`"m8`"m8X`"n8_"n8_"n8h_"n8_" n8^"(n8h^"0n88^"8n8^"@n8]"Hn8(U"Pn8xT"Xn8HT"`n8P"hn8P"pn8pP"xn8M"n8F"n87"n8'"n8"n8!n80!n8P!n8!n8!n8 !n8!n8`!n8!n80!n8!n8`!o8!o8!o8!o8`! o80!(o8!0o8!8o8p!@o8!Ho8!Po8p!Xo8!`o8P!ho8 !po8!xo8 !o8!o8`!o8!o8!o8!o8!o8!o8!o8@!o8!o8!o8!o8!o8!o8!o8!p8p!p8 !p8!p8! p8`!(p8!0p8!8p8p!@p8н!Hp8!Pp80!Xp8!`p8`!hp8 !pp8!xp8!p8!p8`!p80!p8!p8з!p8!p8p!p8@!p8!p8@!p8!p8!p8!p8P!p8!p8!q8`!q80!q8!q8Ш! q8!(q8p!0q8@!8q8!@q8!Hq8!Pq8 !Xq8!`q8!hq8!pq8Ь!xq8!q8p!q80!q8!q80!q8!q8@!q8!q8!q8!q8P!q8 !q8!q8!q8!q8`!q80!r8!r8К!r8p!r8! r8!(r8 !0r8!8r8!@r8!Hr8p!Pr8@!Xr8!`r8!hr8!pr8!xr8!r8!r8@!r8!r8}!r8{!r8{!r8z!r8@z!r8z!r8|!r8|!r8p|!r80s!r8Pr!r8q!r8pq!s8q!s8p!s8i!s8h! s8@h!(s8g!0s8g!8s8Pg!@s8i!Hs8PZ!Ps80!Xs8 Z!`s8Y!hs8Y!ps8Y!xs8`Y!s8 X!s8W!s8W!s8pW!s8 W!s80K!s8K!s8 I!s8H!s8pH!s8G!s8F!s8A!s8pA!s8@!s8`@!t80@!t8?!t8?!t8P?! t8 ?!(t8>!0t8 >!8t8=!@t8@2!Ht8lPt8mXt8@m`t8mht8mpt8mxt8nt8Hnt8xnt8nt8ot8Hot8ot82!t8,!t8,!t8`+!t8p*!t8 *!t8)!t8)!t8 )!t8(!u8(!u8!u8!u8! u8@!(u8!0u8!8u8!@u8!Hu8 Pu80 Xu8 `u8а hu8 pu8 xu8 u8 u8 N u8L u8`L u8H u8G u8`G u8 G u8F u8F u8`F u80F u8E u8E u8D u8D v8D v8PC v8B v8PB v8A (v8@ 0v8P> 8v8P= @v80< Hv8: Pv89 Xv89 `v809 hv88 pv88 xv87 v8 81 81 81 81!81!81!81!8Я2 !81(!810!8(18!801@!881H!8@1P!8x1X!81`!8H1h!8P1p!8X1x!8`1!8h1!8G!8p1!81!81!81!81!81!8 2!81!8G4!8P!81!8:2!8K2!8H2"81"81"81"8H1 "81("810"818"81@"81H"8`1P"81X"81`"8 1h"801p"8(1x"8@1"8P1"8`1"8p1"81"81"81"81"81"81"81"81"81"82"8X2"81#81#8( 2#8`1#81 #81(#80#8 28#81@#81H#8H4P#8 1X#81`#81h#8 1p#8(1x#801#8G2#881#81#8@1#8H1#8P1#8X1#8`1#8p1#81#81#81#81#81#81$81$81$81$81 $81($810$818$81@$81H$81P$81X$81`$8 1h$8(1p$801x$881$8@1$8H1$8P1$8`1$8p1$8x1$81$81$81$81$8 1$8(1$81$81$81$81%81%81%81%81 %8H1(%80%818%81@%81H%81P%8 1X%8(1`%801h%881p%8@1x%8:2%8`*2%82%8H1%8P1%8X1%8`1%8h1%8x1%8@1%8H1%81%8(%81%81%8@K4&8 1&8(1&8pw4&801 &881(&8N20&8@18&8H1@&8P1H&8X1P&8`1X&8h1`&8p1h&8x1p&81x&81&81&81&81&81&81&8 &81&81&81&81&81&81&81&81&81&81'81'81'81'81 '81('810'818'81@'81H'81P'81X'81`'81h'81p'81x'81'8 1'8(1'801'881'8@1'82'8X2'8H1'81'8P1'8`1'8p1'81'81'82'81(81(81(81(81 (81((810(818(81@(81H(81P(81X(81`(81h(8 1p(801x(8@1(8X1(882(82(8p1(881(8x1(8`1(81(81(81(81(81(81(81(81(81)81)81)81)81 )81()810)818)81@)8 1H)8(1P)801X)881`)8@1h)8H1p)8P1x)8X1)8`1)8h1)8p1)8x1)81)81)81)81)81)81)81)81)81)81)81)81*81*81*81*81 *81(*810*818*81@*8 1H*8(1P*801X*881`*8@1h*8H1p*8P1x*8X1*8`1*8h1*8p1*8x1*81*81*81*81*81*81*81*81*81*81*81*81+81+81+81+81 +81(+810+818+81@+8 1H+8(1P+801X+881`+8H1h+8X1p+8h1x+8x1+81+81+81+81+81+81+81+81+81+81+81+8P+81+81+81+81,82,82,82,8(2 ,802(,8h10,8p18,882@,8@2H,8H2P,8P2X,82`,8h,881p,8@1x,8P1,8X1,8X2,8`2,8,81,81,8 1,8H1,8,8 2,8h2,82,8`1,8h1-8p2-82-82-81 -81(-820-828-82@-82H-82P-82X-82`-8(2h-8H2p-8h2x-82-81-81-82-82-82-82-82-802-8H2-8`2-8x2-82-82-81-81-82.82.82.82.82 .82(.820.8(28.8@2@.8X2H.8h2P.8x2X.82`.82h.82p.82x.82.8 2.802.8@2.8`2.82.82.82.82.82.82.8 2.882.8P2.81.81.8h2/8p2/8x2/82/801 /881(/8`10/8p18/81@/81H/82P/82X/82`/82h/82p/82x/82/82/82/81/81/8й1/8ع1/81/81/81/8 1/8(2/882/8H2/8P1/8`1/8X208h208x2082082 082(08200828081@081H081P081X082`082h08 2p081x08к1081081080208@208P208p208208208208`108h108208p108108108118118118л1181 182(1820182818(2@18@2H18X2P18h2X18x2`181h181p182x18@218218218218218218218 218 2188 218P 218h 218 218 218 218 218 228@ 228X 228p 228 2 28 2(28 2028 2828 2@28 2H28 2P28 2X28 2`28 2h28 2p28 2x280 2288 228H 228P 228h 228x 228 228 228 228 228 228 228 228 2280 228P 228p 238 238 238 238 2 38 2(38( 2038P 2838x 2@38 2H38 2P38 2X382`3802h38X2p38x2x382382382382388238X238238238238238238(238P238x238238238248248@248h2482 482(48204828482@482H4882P48X2X48p2`482h482p482x48248@148`248248248248248(2488248P248h248h148x148248248248258258 2588258P2 58`2(58x205828582@581H581P581X58ȼ1`582h582p582x582582582582580258H258`258x258258258258258258258258(258@268X268p2681681 681(68106828682@682H682P682X682`682h682p68(2x688268X268p2682682682682688168H168h168p168268268268268268178178278(278H2 78`2(78207828782@78Ƚ1H781P781X781`78(1h7801p782x78278278(278@278X278p278278278278278278(2788278H278h278278288288288288 2 88H1(88X1088@2888P2@88`2H88p2P882X882`882h882p882x882882882880288H288`288x288288288288288288288288(288@288X298h2982982982 982(98x109818982@982H982P98(2X98@2`98X2h98h2p98x2x98298298198198298298298298298198198198 198(1980198(298@2:8X2:8h2:8x2:82 :82(:820:8H18:8X1@:82H:8x1P:81X:81`:81h:82p:82x:82:8 2:8 2:88 2:8X 2:81:81:8x 2:8 2:8 2:8 2:8 2:8 2:8!2:8!2:80!2:8H!2;8`!2;8x!2;8!2;8!2 ;8!2(;8!20;818;81@;881H;8@1P;8X1X;8`1`;8x1h;81p;8!2x;8"2;8 "2;8@"2;8X"2;8p"2;8"2;8"2;81;81;8"2;8"2;8"2;8"2;8#2;8(#2;8@#2;8X#2<8#2<8#2<8#2<81 <81(<8#20<8$28<8$2@<80$2H<8H$2P<8`$2X<8@1`<8X1h<8x$2p<8p1x<81<8$2<8$2<8$2<8$2<8$2<8(1<81<8$2<8$2<8$2<8%2<81<81<81<81<8%2=8 %2=80%2=8@%2=8P%2 =8`%2(=8p%20=8%28=8%2@=8%2H=8%2P=8%2X=8%2`=8%2h=8%2p=8%2x=8&2=8&2=8&2=8&2=8(&2=88&2=81=81=8H1=8X1=8H&2=8X&2=8h&2=8&2=8&2=8&2=8 1>801>8H1>8X1>8&2 >8h1(>810>818>81@>8&2H>8'2P>8'2X>81`>81h>81p>81x>881>8@1>8 '2>8('2>80'2>8@'2>8P'2>8h'2>8'2>8'2>8'2>8'2>8'2>8'2>8'2>8'2>8(2?8(2?80(2?8@(2?8`(2 ?8(2(?8(20?8(28?8(2@?8(2H?8(2P?8)2X?8)2`?80)2h?8H)2p?8X)2x?8p)2?8)2?8)2?8)2?8)2?8)2?8)2?8*2?8*2?8(*2?88*2?8H*2?8X*2?8h*2?8x*2?8*2?8*2@81@81@8*2@8*2 @8*2(@810@818@8+2@@81H@81P@8+2X@80+2`@8H+2h@8`+2p@8x+2x@8+2@81@81@8+2@8+2@8+2@8+2@8+2@8+2@8,2@8,2@8(1@801@8H1@8P1@8X1@8h1A8 ,2A8(,2A80,2A8@,2 A8P,2(A810A818A81@A81HA81PA81XA81`A81hA8(1pA801xA8`,2A881A8H1A8p,2A8,2A8,2A8,2A8,2A8-2A8-2A80-2A8H-2A8X-2A8h-2A8x-2A8-2A8X1B8h1B8-2B81B81 B8-2(B8-20B8-28B8-2@B8.2HB8.2PB81XB81`B8(.2hB81pB81xB8@.2B8 1B881B8P1B8X1B8X.2B8h.2B8x.2B8.2B8.2B8.2B8/2B8@/2B8h/2B8/2B8/2B8/2C8/2C802C8 02C8H02 C8p02(C8020C8028C802@C802HC802PC812XC8(12`C8@12hC8X12pC8h12xC8x12C812C812C8p1C8x1C892C812C812C812C812C81C81C822C822C8 22C8822C8P22D81D81D81D81 D8h22(D8 G20D8p228D822@D822HD81PD81XD822`D822hD822pD822xD822D822D832D8(32D8@32D8X32D81D8(1D8H1D8X1D8p32D81D81D81D8x32D81D81E832E81E832E832 E832(E8320E8328E81@E81HE832PE81XE81`E832hE832pE881xE8@1E842E8H1E8X1E842E8p1E81E8 42E81E81E8042E81E81E8H42E81E81E8X42F81F81F8h42F81 F8(1(F8x420F8818F8P1@F842HF8`1PF8p1XF842`F81hF81pF842xF842F842F81F81F852F8(52F8@52F81F81F81F81F8X52F8p52F852F852F8 1F801G8P1G8`1G852G81 G81(G8520G818G81@G852HG852PG852XG862`G862hG81pG81xG8 62G8062G8@62G8X62G8&2G8p62G862G862G862G862G862G872G872G8p1G81G8(72G8@72H8X72H8h72H8H1H8X1 H8x72(H8720H8 28H81@H81HH81PH872XH872`H872hH872pH872xH81H81H81H81H8(1H881H8X1H8`1H8h1H8p1H872H882H8 82H81H81H81H81I8882I8P82I8h82I882 I882(I8820I8828I882@I882HI882PI892XI8 92`I8892hI81pI8 1xI8P92I8H1I8X1I8x1I81I8`92I892I892I892I892I81I81I892I892I892I8:2I8(:2J8@:2J8P:2J8`:2J8p:2 J8:2(J8:20J8:28J8:2@J8:2HJ8:2PJ8;2XJ8 ;2`J88;2hJ8P;2pJ8h;2xJ8;2J8;2J8;2J8;2J8;2J8;2J8<2J8(<2J8P<2J8x<2J8<2J8<2J8<2J8<2J8 =2J8H=2J8p=2K8=2K8=2K8=2K8>2 K80>2(K8P>20K8`>28K8h>2@K8x>2HK8>2PK8>2XK8>2`K8>2hK8>2pK8>2xK8?2K8(?2K81K81K88?2K8X?2K8x?2K8171717171717171717 17017@17X1 7p1(71071871@71H71P71X71`71h71p71x71717171717H17X17 17017817@17H17X17h171717171717171 71(71071871@71H71P71X71`71h7 1p7(1x7017817@17H17P17X17`17h17p17x17171717171717171717171 71(71071871@71H71P71X7 1`7(1h701p781x7@17H17P17X17h17x1717171717171717171717171717171 71(7 107(18701@781H7H1P7X1X7h1`7x1h71p71x71717171717171717171717 17817P17X17`17h17p17x171752 71(71071871@71H71P71X71`71h71p71x7171717171717(17817@17H17X17h17p17x171717171717171 71(71071871@71H71P71X71`7(1h701p781x7@17H17X17`17h17p1717171717171717171717(17817P17`17p1 71(71071871@71H71P71X71`71h71p71x717171717171717 17017@17H17P17`17p17x1717171717171 71(71071871@71H71P71X71`71h71p7(1x7017817@17H17X17h17p17x171717171717171717171717171 71(71071871@71H7 1P7(1X781`7H1h7P1p7X1x7`17h17p17x17171717171717171717171717171717171 71(7 107(18701@781H7@1P7H1X7X1`7h1h7p1p7x1x717171717171717171717171717171717 18(18818H18P1 8X1(8h108p1881@81H81P81X81`81h81p81x8181818181818181818181818 18(18018818@18H18P18X18`1 8h1(8p108x1881@81H81P81X81`81h81p81x818181818181818181818 18(18818H18`8P18X18`18h18p18x1 81(81081881@81H81P81X81`81h81p81x81818181818 18(18018818@18H18P18h18x181818181818181(8hG4082881@81H81P81X81`81h8ȴ1p8д1x81818181818ȵ18HJ28е1888h18p181818181818ȗ818181 81(8 108(1881@8:2H8 1P801X8@1`8 1h8H1p8P1x8X18`18h18pW28d48p18x1818P@281818w48181818181818181 81(81081881@81H81P81X81`81h81p81x8 18(18018818@18H18P18X18`18h18p18x18181818181818(8181 81(81081881@81H81P81X81`81h81p81x8@K4818 18(18pw48018818N28@18H18P18X18`18h18p18x18181818181 81(8108 881@81H81P81X81`81h81p81x81818181818 18(18018818@18H18P18X18`18h18p18x181818181 81(81081881@81H81P81X81`81h81p81x81818181818 18(18018818@18H18P18X18`18h18p18x1 81 81 81 81 81( 810 818 81@ 81H 81P 81X 81` 81p 81x 802 81 8 1 8(1 801 881 8@1 8H1 8 8P1 8ȗ 81 81 8H4 8 1 8X1 8( 8 882 8`1 8h10 818 81@ 8p1H 8x1P 8H4X 8 1` 8X1h 8(p 8x 882 8`1 8h1 81 81 81 82 81 81 81 81 81 81 81 81 81 81 81 81 81 8 1( 8010 8@18 8P1@ 8`1H 8p1P 81X 81` 81h 81p 81x 81 81 81 81 81 81 81 81 801 881 8@1 8P1 8`1 8p1 81 81 81 81 81 81 8ȴ1 8д1( 810 818 81@ 8 1H 8X1P 8k4X 8`1` 8p1h 81p 81x 81 81 81 8 1 8(1 801 881 8@1 8H1 8P1 81 81 8(1 801 8X1 8`1 8h1 8p1 8x1 81 81 81( 8q40 828 81@ 81H 81P 81X 81` 81h 81p 81x 81 8 1 8(1 801 881 8@1 8h1 8p1 8H1 8X1 8h1 8x1 81 81 81 81 8181818&281 8ȗ(81081881@8H2H81P81X81`8Gh81p81x8(18 8018@18P18X18`18p18018H18`181818X:281818X18h1818181 81(8108188H1@8`H81P81X81`81h8w4p81x8181818ȷ181818 288X28F8 18018@18P18P818`18p18181 82(8081881@8xp4H82P81X81`8`1h83x818181818 18018@18H18P18X18`18h18p18x181818181818181 81(8xU208pf4881@81H81P81X81`8 1h8(1p881x8H18P18X18`18h18p18x18181818181818181818 18018818@18H1 8P1(8X108`188h1@8p1H8x1P81X81`81h81p81x818181818181818(18818H18X18h18x18181818181818181 81(81080188@1@8P1H8`1P8p1X81`81h81p81x818181818(18818H18`18x18181818181818181818(18818H1 8X1(8h108x1881@81H81P81X81`81h81p81x8 18018@18X18p1818181818181818181818 18(18@1818P18X1 8`1(8h108p188x1@81H8(1P81X81`81h81p81x81818181818181818181818 18(18018818H18X18h18x18181 81(81081881@81H81P81X81`81h81p8 1x8(18818H18P18P1818X18h18x18181818181818181818181 81(8108188 1@881H8P1P8h1X8x1`81h81p81x81818181818818P18`18x18181818181818 18818P18p18181 81(81081881@81H81P8 1X881`8H1h8X1p8h1x8p18`18`H28x1818 18(1818181818181818 18018@18P18X18`18h1 8p1(8x1081881@81H81X8`1`81h81p81x81818181818181818 18018818@18H18P18X18h18x181818181 81(810818801@8@1H8P1P8h1`8x1h81p81x818181818181818(18818H18X18`18h18p181818181818181(81081881@81P8PX81`8 1h801p8@1x8j48H18X18h18p18x181818181818xp4828181818818181 81(8108188ȴ1@8д1H81P81X81`8 1h8(1p881x8H18P18X18k48`18p1818181818ص18181818P818h18p18@18j48h1 8p1(8 108(188 1@8(1H801P881X801`8H1h8`1p81x8@18H18P18`18xp4828188w481818ȷ18 288p18181818181 81(81081881@81H81P81X81`8@1h8P1p81x8181818182818 18018H18X18h18818@18x18181818HJ28е18181 8P(81081881@81H81P81X8 1`801h8@1p8P1x8^48X18`18h1818p1818181818Y2818181818181 81 81 81 81 81( 810 818 81@ 81H 8(1P 8H4X 8 1` 881h 8M4p 8@1x 81 8X1 8( 8H1 8X1 8`1 8`H2 81 81 8 1 8(1 8h1 8x1ic_killbackrefsPerl_sv_kill_backrefsPerl_magic_setmglobPerl_magic_freemglobPerl_magic_setuvarPerl_magic_setregexpPerl_magic_setcollxfrmPerl_magic_freecollxfrmPerl_magic_setutf8Perl_magic_setenvPerl_magic_setsubstrPerl_bytes_to_utf8Perl_sv_len_utf8_nomgPerl_magic_setdblinePerl_magic_freeutf8Perl_magic_setlvrefPerl_gv_setrefPerl_magic_setPL_delaymagic_uidPL_delaymagic_euidsetgroupsPL_delaymagic_egidprctlPL_delaymagic_gidsetregidsetegidsetreuidseteuidPerl_whichsig_pvnPL_sig_numPerl_magic_getsigPerl_magic_setsigsigaddsetPL_csighandlerpPerl_magic_clearsigPerl_whichsig_svPerl_whichsig_pvPerl_perly_sighandlerPL_XpvPL_SvPerl_csighandler3Perl_csighandler1Perl_csighandlersigismemberPerl_magic_sethintPerl_refcounted_he_new_svPerl_magic_clearhintPerl_refcounted_he_new_pvnPerl_magic_clearhintsPerl_magic_copycallcheckerPerl_magic_setdebugvarPerl_magic_getdebugvarPerl_reentrant_sizePerl_reentrant_initPerl_reentrant_freePerl_reentrant_retryPerl_mro_get_private_dataPerl_mro_set_private_dataPerl_mro_get_from_namePerl_mro_registerPerl_newHVhvPerl_hv_ename_deletePerl_hv_ename_addXS_mro_method_changed_inPerl_mro_set_mroXS_builtin_trueXS_builtin_falseXS_builtin_func1_scalarPerl_pp_floorPerl_pp_reftypePerl_pp_is_weakPerl_pp_blessedPerl_pp_is_boolPerl_pp_refaddrPerl_pp_ceilXS_builtin_created_as_stringXS_builtin_created_as_numberXS_builtin_trimXS_builtin_func1_voidPerl_pp_unweakenPerl_pp_weakenXS_builtin_indexedXS_builtin_importPerl_hv_auxallocPerl_bytes_from_utf8_locPL_hv_fetch_ent_mhPerl_hv_fillPerl_hv_riter_pPerl_hv_eiter_pPerl_hv_riter_setPerl_hv_rand_setPerl_hv_kill_backrefsPerl_unsharepvnPerl_hv_free_entPerl_hv_delayfree_entPerl_hfree_next_entryPerl_hv_placeholders_pPerl_hv_scalarPerl_hv_bucket_ratioPerl_hv_iternextsvPerl_hv_pushkvPerl_hv_placeholders_setPerl_sv_setpvn_freshPerl_hv_undef_flagsPerl_refcounted_he_chain_2hvPerl_refcounted_he_fetch_svPerl_refcounted_he_new_pvPerl_av_reifyPerl_av_new_allocPerl_av_makePerl_av_deletePerl_av_arylen_pPerl_av_iter_pPerl_av_nonelemPL_no_symref_svPL_no_usymPerl_pp_andPerl_pp_constPerl_pp_nextstatePerl_pp_gvsvPerl_pp_nullPerl_pp_stringifyPerl_pp_gvPerl_pp_sassignPerl_pp_cond_exprPerl_pp_unstackPerl_pp_concatPerl_pp_multiconcatPerl_save_clearsvPerl_pp_padrangePerl_savestack_growPerl_pp_eqPerl_do_ncmpPerl_pp_preincPerl_pp_predecPerl_sv_decPerl_pp_orPerl_pp_definedPerl_pp_addPerl_sv_setnv_mgPerl_sv_setuv_mgPerl_pp_aelemfastPerl_pp_joinPerl_do_joinPerl_pp_printPerl_PerlIO_writePerl_tied_methodPerl_pp_padavPerl_is_lvalue_subPerl_pp_padhvPerl_block_gimmePerl_pp_rv2avPerl_softref2xvPL_no_localize_refPerl_save_hashPerl_save_aryPerl_pp_aassignsetresuidsetresgidPerl_pp_qrPerl_pp_matchPerl_regexec_flagsPL_curpm_underPerl_do_readlinePerl_nextargvPerl_do_closePerl_do_open6__lxstat64Perl_sv_unref_flagsPerl_start_globPerl_pp_readlinePerl_pp_rv2gvPerl_pp_iterPerl_newSVavdefelemPerl_pp_substPerl_rxres_savePerl_cxincPerl_pp_grepwhilePerl_leave_adjust_stacksPerl_clear_defarrayPerl_pp_leavesubPerl_sub_crush_depthPerl_pp_entersubPerl_was_lvalue_subPerl_croak_callerPerl_caller_cxPerl_vivify_refPerl_pp_padsvPerl_pp_helemPerl_save_helem_flagsPerl_save_hdeletePerl_save_gpPerl_pp_multiderefPL_multideref_pcPerl_save_aelem_flagsPerl_save_adeletePerl_pp_aelemPerl_pp_methodPerl_pp_method_namedPerl_pp_method_superPerl_pp_method_redirPerl_pp_method_redir_superPL_sv_arenarootfrexpPerl_sv_report_usedPL_body_arenasPL_infPL_nanPerl_sv_grow_freshPerl_sv_get_backrefsPerl_sv_rvunweakenPerl_sv_newrefPerl_sv_numeq_flagsPerl_sv_truePerl_sv_isaPerl_ptr_table_newPerl_ptr_table_fetchPerl_ptr_table_splitPerl_ptr_table_storePerl_ptr_table_freePL_ZeroPL_warn_uninitPL_warn_uninit_svPerl_cast_uvPerl_sv_vcatpvfn_flagsPerl_isinfnanPerl_isinfnansvstrnlenPL_hexdigitPerl_sv_catpv_flags__sprintf_chkPerl_sv_vcatpvfPerl_sv_catpvf_mgPerl_vnewSVpvfPerl_sv_setsv_mgPerl_sv_setrv_noinc_mgPerl_sv_setrv_inc_mgPerl_sv_resetpvnPerl_sv_resetPerl_sv_unmagicextPerl_sv_setsv_cowPerl_sv_replacePerl_looks_like_numberPerl_sv_lenPerl_sv_cmpPerl_sv_pos_u2bPerl_sv_pos_b2uPerl_cast_ivPerl_sv_cat_decodePerl_sv_setpvn_mgPerl_sv_setpvivPerl_sv_setpviv_mgPerl_sv_setref_pvnPerl_sv_setpv_mgPerl_utf8_to_bytesPerl_sv_streq_flagsPerl_sv_collxfrm_flagsPerl__mem_collxfrmPerl_sv_cmp_locale_flagsPerl_sv_cmp_localePerl_sv_2pvbyte_flagsPerl_sv_setref_uvPerl_sv_setref_pvPerl_sv_setref_ivPerl_sv_inc_nomgPerl_grok_number_flagsPerl_sv_dec_nomgPerl_sv_setref_nvPerlIO_isutf8PerlIO_getcPerl_PerlIO_eofPerlIO_fast_getsPerl_PerlIO_get_cntPerl_PerlIO_get_ptrPerl_PerlIO_set_ptrcntPerl_sv_catpv_mgPerl_sv_pvbyten_forcePerl_sv_pvutf8n_forcePerl_sv_2ioPerl_sv_recode_to_utf8Perl_sv_vsetpvfPerl_sv_vsetpvf_mgPerl_sv_setpvf_mgPerl_sv_vcatpvfnPerl_sv_vcatpvf_mgPerl_save_pushptrptrPerl_pp_stubPerl_pp_padcvPerl_pp_introcvPerl_pp_clonecvPerl_save_padsv_and_mortalizePerl_pp_rv2svPerl_pp_av2arylenPerl_pp_posPerl_pp_rv2cvPerl_pp_prototypePerl_pp_anoncodePerl_pp_srefgenPerl_pp_refgenPerl_pp_refPerl_pp_blessPerl_pp_gelemPerl_pp_studyPerl_pp_transPerl_do_transPerl_pp_schopPerl_pp_chopPerl_pp_undefPerl_pp_postincPerl_pp_postdecPerl_pp_powPerl_pp_multiplyPerl_pp_dividePerl_pp_modulofmodPerl_pp_repeatPerl_pp_subtractPerl_pp_left_shiftPerl_pp_right_shiftPerl_pp_ltPerl_pp_gtPerl_pp_lePerl_pp_gePerl_pp_nePerl_pp_ncmpPerl_pp_slePerl_pp_seqPerl_pp_snePerl_pp_scmpPerl_pp_bit_andPerl_do_vopPerl_pp_nbit_andPerl_pp_sbit_andPerl_pp_bit_orPerl_pp_nbit_orPerl_pp_sbit_orPerl_pp_negatePerl_pp_notPerl_pp_complementPerl_pp_ncomplementPerl_pp_scomplementPerl_pp_i_multiplyPerl_pp_i_dividePerl_pp_i_moduloPerl_pp_i_addPerl_pp_i_subtractPerl_pp_i_ltPerl_pp_i_gtPerl_pp_i_lePerl_pp_i_gePerl_pp_i_eqPerl_pp_i_nePerl_pp_i_ncmpPerl_pp_i_negatePerl_pp_atan2Perl_pp_sincossqrtPerl_pp_randPL_srand_calledPL_random_statePerl_pp_srandPerl_pp_intPerl_pp_absPerl_pp_octPerl_pp_lengthPerl_pp_substrPerl_pp_vecPerl_pp_indexPerl_pp_sprintfPerl_do_sprintfPerl_pp_ordPerl_pp_chrPerl_pp_cryptPerl_pp_ucfirstPerl__to_utf8_lower_flagsPL_in_utf8_turkic_localePerl__to_utf8_title_flagsPerl__to_upper_title_latin1__ctype_toupper_locPerl__warn_problematic_locale__ctype_tolower_locPerl_pp_ucPerl__to_utf8_upper_flagsPL_mod_latin1_ucPerl_pp_lcPerl_pp_quotemetaPerl_pp_fcPerl_pp_aslicePerl_pp_kvaslicePerl_pp_aeachPerl_pp_akeysPerl_pp_eachPerl_pp_deletePerl_pp_existsPerl_pp_hslicePerl_pp_kvhslicePerl_pp_listPerl_pp_lslicePerl_pp_anonhashPerl_pp_splicePerl_pp_pushPerl_pp_shiftPerl_pp_unshiftPerl_pp_reversePerl_pp_splitPerl_pp_oncePerl_pp_lockPerl_unimplemented_opPL_no_sock_funcPerl_pp_coreargsPerl_pp_avhvswitchPerl_pp_runcvPerl_pp_refassignPerl_pp_lvrefPerl_pp_lvrefslicePerl_pp_lvavrefPerl_pp_anonconstPerl_pp_argelemPerl_pp_argdefelemPerl_pp_argcheckPerl_pp_isaPerl_pp_cmpchain_andPerl_pp_cmpchain_dupPerl_savestack_grow_cntPerl_save_shared_pvrefPerl_save_set_svflagsPerl_save_pushi32ptrPerl_save_hptrPerl_save_aptrPerl_save_deletePerl_save_destructorPerl_save_svrefPerl_cx_dumpPL_lastgotoprobePerlIO_opennPerl_pp_requirePerl_pp_regcresetPerl_pp_regcompPerl_pp_substcontPerl_pp_formlinePerl_pp_grepstartPerl_pp_mapwhilePerl_pp_rangePerl_pp_flipPerl_pp_flopPerl_dowantarrayPerl_pp_xorPerl_pp_wantarrayPerl_pp_callerPerl_pp_resetPerl_pp_dbstatePerl_pp_enterPerl_pp_entertrycatchPerl_pp_leavePerl_pp_enteriterPerl_pp_enterloopPerl_pp_leaveloopPerl_pp_leavesublvPerl_pp_lastPerl_pp_nextPerl_pp_redoPerl_pp_gotoPerl_pp_exitPerl_pp_enterevalPerl_pp_hintsevalPerl_pp_leaveevalPerl_pp_leavetrycatchPerl_pp_catchPerl_pp_entertryPerl_pp_leavetryPerl_pp_returnPerl_pp_leavewritePerl_pp_poptryPerl_pp_entergivenPerl_pp_leavegivenPerl_pp_smartmatchPerl_pp_enterwhenPerl_pp_leavewhenPerl_pp_continuePerl_pp_breakPerl_pp_pushdeferPerl_pp_backtickPerl_PerlIO_context_layersPerl_pp_globPL_no_securityPerl_pp_rcatlinePerl_pp_warnPerl_pp_diePerl_pp_openPerl_pp_closePerl_pp_pipe_opPerl_pp_filenoPerl_pp_umaskPerl_pp_binmodePerl_mode_from_disciplinePerl_pp_tiePerl_pp_untiePerl_pp_tiedPerl_pp_dbmopenPerl_pp_sselectPerl_pp_selectPerl_pp_getcPerl_do_eofPerl_pp_enterwritePerl_pp_prtfPerl_pp_sysopenPerl_do_open_rawPerl_pp_sysreadrecvfromPerl_pp_syswritesendtosendPerl_pp_eofPerl_pp_tellPerl_do_tellPerl_pp_sysseekPerl_do_sysseekPerl_do_seekPerl_pp_truncateftruncate64Perl_pp_ioctlfcntl64Perl_pp_flockPerl_pp_socketPerl_PerlSock_socket_cloexecPerl_pp_sockpairPerl_PerlSock_socketpair_cloexecPerl_pp_bindconnectPerl_pp_listenPerl_pp_acceptPerl_PerlSock_accept_cloexecPerl_pp_shutdownPerl_pp_ssockoptgetsockoptsetsockoptPerl_pp_getpeernamegetsocknamePerl_pp_statPL_statcachePL_warn_nlPerl_pp_ftrreadeaccessPerl_my_stat_flagsPerl_pp_ftisPerl_pp_ftrownedPerl_pp_ftlinkPerl_my_lstat_flagsPerl_pp_ftttyisattyPerl_pp_fttextPerlIO_has_basePerl_PerlIO_get_bufsizPerl_PerlIO_get_basePerl_pp_chdirfchdirPerl_pp_chownPerl_applyPerl_pp_chrootPerl_pp_renamePerl_pp_linksymlinkPerl_pp_readlinkPerl_pp_mkdirPerl_pp_rmdirPerl_pp_open_diropendirPerl_pp_readdirreaddir64Perl_pp_telldirPerl_pp_seekdirPerl_pp_rewinddirPerl_pp_closedirPerl_pp_forksigfillsetPerl_pp_waitPerl_pp_waitpidPerl_pp_systemPerl_pp_execPerl_pp_getppidPerl_pp_getpgrpgetpgidPerl_pp_setpgrpsetpgidPerl_pp_getpriorityPerl_pp_setpriorityPerl_pp_timePerl_pp_tmsPerl_pp_gmtimePerl_gmtime64_rPerl_localtime64_rPerl_pp_alarmPerl_pp_sleeppausePerl_pp_shmwritePerl_do_shmioPerl_do_msgrcvPerl_do_msgsndPerl_do_semopPerl_pp_semgetPerl_do_ipcgetPerl_pp_semctlPerl_do_ipcctlPerl_pp_ghostentgethostbyaddrgethostent__h_errno_locationgethostbynamePerl_pp_gnetentgetnetbyaddrgetnetentgetnetbynamePerl_pp_gprotoentgetprotobynumbergetprotoentgetprotobynamePerl_pp_gserventgetservbyportgetserventgetservbynamePerl_pp_shostentsetserventsethostentsetnetentsetprotoentPerl_pp_ehostentendgrentsetpwentendhostentendserventendpwentsetgrentendnetentendprotoentPerl_pp_gpwentgetspnamgetpwuidgetpwnamgetpwentPerl_pp_ggrentgetgrgidgetgrentgetgrnamPerl_pp_getloginPerl_pp_syscallPerl_do_kvPerl_setfd_cloexecPerl_setfd_inhexecPerl_setfd_cloexec_for_nonsysfdPerl_setfd_inhexec_for_sysfdPerl_PerlLIO_dup_cloexecPL_strategy_dupPL_strategy_dup2dup3PL_strategy_open__open64_2Perl_PerlLIO_open3_cloexecPL_strategy_open3Perl_my_mkstemp_cloexecPL_strategy_mkstempmkostemp64mkstemp64Perl_my_mkostemp_cloexecPL_strategy_pipepipe2PL_strategy_socketPL_strategy_acceptaccept4PL_strategy_socketpairPerlIO_intmode2strPerlIO_fdupopenPerl_do_opennrenameatfchmodunlinkunlinkatPL_lastfdPL_filemodePL_oldnamefchownPerlIO_has_cntptrPerlIO_canset_cntPerl_PerlIO_set_cntPerl_PerlIO_seeklseek64Perl_check_utf8_printexecvpPL_sh_pathexeclkillpgfutimesmsggetshmgetmsgctlshmctlshmatshmdtPL_fold_localePL_EXACT_REQ8_bitmaskPL_regmatch_statePerl_isSCRIPT_RUNPerl_foldEQ_utf8_flagsPerl__is_uni_FOOPerl_re_intuit_startPerl_pregexecnonchar_cp_formatsuper_cp_formatsurrogate_cp_formatPerl_uvoffuni_to_utf8_flagsPerl_uvchr_to_utf8Perl_uvchr_to_utf8_flagsPerl_is_utf8_char_helper_Perl__byte_dump_stringPerl_utf8n_to_uvchrPerl_utf8n_to_uvchr_errorPerl_utf8_to_uvchr_bufPerl_utf8_to_uvuni_bufPerl_bytes_from_utf8Perl_utf16_to_utf8Perl_utf16_to_utf8_reversedPerl_utf8_to_utf16_basePerl__is_uni_perl_idcontPerl__is_uni_perl_idstartPerl_to_uni_upperPerl_to_uni_titlePerl_to_uni_lowerPerl_pv_uni_displayPerl_vdebPerl_debstackptrsPL_simplePL_variesPL_reg_intflags_namePL_reg_extflags_namePL_c9_utf8_dfa_tabPL_deBruijn_bitpos_tab64PL_deBruijn_bitpos_tab32PL_valid_types_NV_setPL_valid_types_IV_setPL_valid_types_RVPL_valid_types_PVXPL_valid_types_NVXPL_valid_types_IVXPL_runops_dbgPL_runops_stdPL_watch_pvxPL_perlio_debug_fdPL_perlio_fd_refcnt_sizePL_perlio_fd_refcntPL_csighandler3pPL_csighandler1pPL_wcrtomb_psPL_mbrtowc_psPL_mbrlen_psPL_ptr_tablePL_collxfrm_basePL_reentrant_retintPL_locale_utf8nessPL_in_utf8_COLLATE_localePL_secondgvPL_firstgvPL_sortstashPL_sortcopPL_naPL_op_private_validPL_block_typePL_uudmapPL_uuemapPL_subversionPL_versionPL_revisionPL_no_funcPL_no_dir_funcPL_no_symrefPL_no_wrongrefPerl_pp_unpackPerl_pp_packPerl_pp_sortXS_PerlIO__Layer__NoWarningsPerlIOUtf8_pushedPerlIOBase_noop_okPerlIOBase_noop_failPerlIOBase_eofPerlIOBase_errorPerlIOBase_setlinebufPerlIOUnix_filenoPerlIOBuf_get_basePerlIOUnix_tellPerlIOStdio_errorferrorPerlIOStdio_seekfseeko64PerlIOStdio_tellftello64PerlIOStdio_flushfflushPerlIOStdio_eoffeofPerlIOStdio_clearerrPerlIOStdio_setlinebufPerlIOUnix_seekPerlIOStdio_readfreadfgetcPerlIOStdio_fillPerlIOStdio_writefwritePerlIOBase_poppedPerlIOBuf_poppedPerlIOStdio_filenoperlsio_binmodePerlIO_debugPerlIO_allocatePerlIO_list_allocPerlIO_list_freePerlIO_list_pushPerlIO_clone_listPerlIO_clonePerlIO_popPerlIOBase_binmodePerlIOPending_flushPerlIOCrlf_binmodePerlIO_find_layerPerlIO_tab_svXS_PerlIO__Layer__findPerlIO_define_layerPerlIO_parse_layersPerlIO_default_bufferPerlIO_perlioPerlIO_arg_fetchPerlIO_layer_fetchPerlIO_default_layersPerlIO_unixPerlIO_rawPerlIO_stdioPerlIO_crlfPerlIO_utf8PerlIO_removePerlIO_bytePerlIO_default_layerPerlIO_pushPerlIO_apply_layeraPerlIOBase_filenoPerlIOPop_pushedPerlIORaw_pushedPerlIOBuf_seekPerlIOBuf_tellPerlIOPending_fillPerlIOPending_seekPerlIOBase_flush_linebufPerl_PerlIO_fillPerlIOBase_clearerrPerlIOBuf_unreadPerlIOBase_unreadPerlIO_pendingPerl_PerlIO_unreadPerlIOStdio_unreadPerlIOBuf_writePerlIOBuf_get_ptrPerlIOBuf_get_cntPerlIOBuf_bufsizPerlIOBuf_set_ptrcntPerlIOPending_set_ptrcntPerlIOCrlf_unreadPerlIOCrlf_get_cntPerlIOCrlf_set_ptrcntPerlIOCrlf_writePerlIO_modestrPerlIOBase_pushedPerlIOBuf_pushedPerlIOCrlf_pushedPerlIOPending_pushedPerlIOBase_closePerlIO__closePerlIO_cleantablePerlIOBase_openPerlIOBuf_openPerlIOPending_closePerlIOBuf_closePerlIO_sv_dupPerlIOBase_dupPerlIOBuf_dupPerlIOUnix_refcnt_incPerlIOUnix_dupPerlIOStdio_dupPerlIOUnix_refcnt_decPerlIOUnix_closePerlIOStdio_closefclosePerlIOUnix_oflagsPerlIOUnix_pushedPerlIOUnix_openPerlIOStdio_modePerlIOStdio_pushedPerlIOStdio_openfreopen64fopen64PerlIO_importFILEPerlIO_exportFILEPerlIO_findFILEPerlIO_releaseFILEPerlIO_getnamePerlIO_rewindPerl_PerlIO_save_errnoPerlIOBase_readPerlIOBuf_readPerlIOPending_readPerlIOUnix_readPerlIOUnix_writePerlIOBuf_flushPerlIOCrlf_flushPerlIOBuf_fillPerlIO_resolve_layersPerlIO_tmpfile_flagsPerlIO_stdstreamsPerlIO_stdoutfPerlIO_tmpfilePerlIO_reopenPerlIO_setposPerlIO_getpos__vfprintf_chkPerl_my_strtodPerl_cast_ulongPerl_cast_i32Perl_grok_binPerl_grok_hexPerl_grok_octPerl_scan_binPerl_scan_octPerl_scan_hexPerl_grok_numeric_radixPerl_grok_infnanPerl_my_atof2Perl_refPerl_sv_unrefPerl_sv_taintPerl_sv_2ivPerl_sv_2uvPerl_sv_2nvPerl_sv_2pvPerl_sv_2pv_nolenPerl_sv_2pvbyte_nolenPerl_sv_2pvutf8_nolenPerl_sv_force_normalPerl_sv_setsvPerl_sv_catpvnPerl_sv_catpvn_mgPerl_sv_catsvPerl_sv_catsv_mgPerl_sv_ivPerl_sv_uvPerl_sv_nvPerl_sv_pvnPerl_sv_pvn_nomgPerl_sv_pvPerl_sv_pvn_forcePerl_sv_pvbytePerl_sv_pvbytenPerl_sv_pvutf8Perl_sv_pvutf8nPerl_sv_utf8_upgradePerl_fprintf_nocontextPerl_printf_nocontextPerl_hugePerl_gv_fullnamePerl_gv_efullnamePerl_gv_fullname3Perl_gv_efullname3Perl_gv_fetchmethodPerl_hv_iternextPerl_hv_magicPerl_do_openPerl_do_open9Perl_do_binmodePerl_do_aexecPerl_init_i18nl14nPerl_is_utf8_string_locPerl_sv_nolockingPerl_save_longPerl_save_nogvPerl_save_listPerl_sv_usepvn_mgPerl_sv_usepvnPerl_unpack_strPerl_unpackstringPerl_pack_catPerl_packlistPerl_hv_store_entPerl_hv_exists_entPerl_hv_fetch_entPerl_hv_delete_entPerl_hv_store_flagsPerl_hv_storePerl_hv_existsPerl_hv_fetchPerl_hv_deletePerl_newAVPerl_newHVPerl_sv_insertPerl_save_freesvPerl_save_mortalizesvPerl_save_freeopPerl_save_freepvPerl_save_opPerl_gv_SVaddPerl_gv_AVaddPerl_gv_HVaddPerl_gv_IOaddPerl_newIOPerl_my_statPerl_my_lstatPerl_sv_eqPerl_sv_collxfrmPerl_mem_collxfrmPerl_sv_2boolPerl_custom_op_namePerl_custom_op_descPerl_newSUBPerl_sv_mortalcopyPerl_sv_copypvNATIVE_TO_NEEDASCII_TO_NEEDPerl_is_utf8_charPerl_is_utf8_char_bufPerl_utf8_to_uvuniPerl_valid_utf8_to_uvuniPerl_pad_compname_typePerl_instrPerl_newSVsvPerl_sv_utf8_downgradePerl_sv_2pvutf8Perl_sv_2pvbytePerl_uvuni_to_utf8Perl_utf8n_to_uvuniPerl_uvuni_to_utf8_flagsPerl_utf8_to_uvchrcategoriescategory_namesstrxfrm__ctype_get_mb_cur_maxmbtowcnl_langinfoPerl_langinfonewlocaletowuppertowlowerPerl_setlocalePerl_switch_to_global_localePerl_sync_localePerl_thread_locale_initPerl_thread_locale_termmodfPerl_sortsv_flagsPerl_sortsvXS_DynaLoader_dl_undef_symbolsXS_DynaLoader_dl_install_xsubXS_DynaLoader_dl_errorXS_DynaLoader_dl_find_symboldlsymdlerrorXS_DynaLoader_dl_unload_filedlcloseXS_DynaLoader_dl_load_filedlopenboot_DynaLoaderlibpthread.so.0libnsl.so.1libdl.so.2libm.so.6libcrypt.so.1libutil.so.1libc.so.6__environld-linux-aarch64.so.1GLIBC_2.17GLIBC_2.28' lV l l l lBwl777 870@7 H7P7X7 h70p7x7h7p7x777777777777777777 7(707 87(@70H78P7@X7P`7Xh7`p7hx7p7x7777777777777777777 7(7 07(870@78H7@P7HX7P`7Xh7`p7hx7p7x77777777V277V2777V277V2777V27Pw4 7V2(707@7pS8H7R8P7P8X7,8`7,8h7%8p7#8x7"878787P87(87`87X8787x8787 870 87 87p 8787(870777777171 7ȴ1(7д107ش1871@71H71P71X71`71h7 1p7(1x7817H17P17X17k47`17p1717171717171717ȵ17HJ27е17ص1717171 71(7107(18701@781H7@1P7H1X7X1`7h7p7h1x7p17x17171717171717ȶ17ض171717171717171717ȗ7171 7 1(7(1070187H1@7`1H71P7h1X7x1`71h71p71x717w471717ȷ17277з17ط17177171717017H17p17`1737P1 7X107`187h1@7p1H7x1P71X71`71h71p71x717и17ظ17171717171717 17(17017817@17H17P17X17`17p17171 71(71071871@71H71P7й1X7ع1`71h71p71x717171717 17017817@17H17P17`17p17x17171717171717171 71(7к1071871@71H71P71X71`71h7(1p7@1x7H17P17X17`17h17p17171717171717Ȼ17л171717171717 17(1 701(78107@187`2@7H1H7P1P7X1X7`1`7h1h7x1p71x717171717ȼ17ؼ1717171717171717(17017817H17X17`17h17p1 7x1(71071871@71H71P71X71`7Ƚ1h71p71x717171717 17(17017817@17H17X17h17p17x171717171717Ⱦ17о1 7ؾ1(71071871@71H71P71X71`71h7 1p7(1x7017817@17H17X17h17p17x171717171717ȿ17п17ؿ17171717171 71(7107(18701@781H7@1P7H1X7P1`7X1h7`1p7h1x7p17x17171717171717P HD i X: pJ H,L 1~ 1 ȶw ,B Hty{ he^p 8ty D> r 4  hS u @'  X+9 9[. 7Hy P\ 8G08@  Hx `k  bg% )9I (́!9(.9d 8 @28  9j (< 6 h,= @p (,9 2{] X x h\ >Dh(9Z ; X| ؘ  xc `t  @ ` |/ (  H  DB H K x`" "9-9> g U  g ȭ2   x =4 8Dm (?4( p  7 0H `SD Uu  P/~  ` \s X$. D4 |)*9aI : 0Xwr ;$/ :A l 5 I <` l3h 2)9*!"9@I .  4f ^ pHk $4A  ,  Xx, 8l 4 XL?0%90  hg S @? 0c -x{L 8 ,X< 0 P <ji   8#X&9B , 8W> r / 0> x T+D!9 eDge X( x4&U.9[ C. P75 г m @XJ-93{ (e  ? >4+8#1 XT($"P9< |w 8Uc a A4"#B P846 = I xD 0p 0 A   h H PO X,O - @pp () 0U x"9&'9 { 8,u $0 % H-9!Y  ] vu J qD"' 9Q ?4B%8hS"9r J M `u@i & 4# ( Kh X8 0(`&9M 8/d 4T9 `<0  :  8 f Ln   t<.9+ x[    ( 4C v @t "dI XeX2 0p=Q 0\I HhF X7 x 8 `,.o k  0@ pp P_ _B X U  4 9 ( ,s 0`W x!)&9. -'@&9eV XP0n p{4 l i `T:K 8H Hp TH  TH9Z #, 81 H +, LS >U  ё  Xt,U `DT+9X HT~l (i+9w G(> |[ <0q ( \ؐ8h(8p? / (X $40 PKz Ќ [ 9P+9 nc'9֋ xP\ -9b h v9 X# x |[ 74 DN Њ8JX @h  5F (9 )Ln $j \ds nT 8h h< )i P<m |* D &~ h3_ @ > ! 8~X 0 P4' B4[ Py L$5   *\(l S  @q I @"h%9Z F0FZ 0Hm  b g @Xb!q"9 h  0} B @+y @Qf xxA  4/ G ,9j $lH pEW XE l~t s@ҍ (4C|8k_ ;  x `-& @3 .9̏ (+9 "9j NX;@'9Qe @L 9  <n $  Hx44Z @@4-yO 'l p0a 0x!9 P  HZ (Db 8<W H6|!9jA H4 ( K% , @D P&h ؾ8v @  , "9< XWX @Dx$H&9%  4 +9W X0&9 "9J  `] H!d7 P H px PPo q /  PDm L2 ȅDu HtL HN hz <o p Z xÆX8|*@+9#(9ec 8p&9 q d$ ~B Xo  5d9!9 8 ȻPލ 0` 8 +9q h91 _  wdK x, $   0 \({ XMd ,\MC 0Dm0 @8,K %QV P? R H U x(p = hHK )g Ppk X'x&8+9> `6x* pI ?4,* $d p,T @4Pc `dox8 ( hxc H87O ЌKx H\ L r -X]4 D HZ p@4B.m p  )^ \Aq  #&9 xh P ؛@ @ 9` L- "txm ;R F? 3 OH  $ H5 P >6 `4 rG8PS% (tb C'h'9/%%9H X   P\  yE `G Pd @# 4qP ,!x"9GF $S 54Q (] `x06 : 4se Y7 h = 8D qa =4__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizePL_compcvPerl_messPerl_qerrorPerl_yyerrorPL_curpmPerl_mg_findPerl_safesysfreePL_sv_immortalsPerl_varnamePL_top_env__stack_chk_guard__sigsetjmpPL_delaymagicPL_runops__stack_chk_failPerl_newSVpvn_sharePerl_hv_commonPerl_croakPL_comppad_namePerl_padnamelist_fetchPerl_hv_common_key_lenPerl_sv_2pv_flagsPerl_sv_free2Perl_sv_2iv_flagsPL_markstack_ptrPL_stack_spPL_stack_basePL_stack_maxPerl_stack_growPL_opPL_curstackinfomemcpyPerl_newSVivPerl_sv_2mortalPerl_croak_memory_wrapPL_cv_has_evalPL_cop_seqmaxmemsetPerl_croak_no_memPerl_sv_newmortalPerl_pv_prettyPL_parserPerl_sv_chopPerl_warnerPL_curcopPerl_ckwarnPerl_gv_efullname4PL_generationPL_opargsPL_defgvPL_hash_state_wPerl_ck_nullPL_sv_rootPL_sv_countPerl_save_pushptrPerl_more_svPerl_gv_try_downgradePerl_Slab_AllocPerl_opslab_freePerl_Slab_FreePerl_opslab_free_nopadPL_comppadPerl_push_scopePL_curpadPerl_pop_scopePerl_no_bareword_filehandlestrcmpPerl_allocmyPL_charclassPerl_pad_add_name_pvnPL_curstashPL_defstashPerl_formPerl_yyerror_pvmemchrPerl__force_out_malformed_utf8_messagePerl__is_utf8_perl_idstartPerl_op_clearPerl_op_freePerl_pad_freePL_opfreehookPL_WARN_ALLPL_WARN_NONEPerl_refcounted_he_freePL_phasePerl_av_fetchPerl_gv_add_by_typePerl_opslab_force_freePerl_op_nullPL_ppaddrPerl_op_refcnt_lockPerl_op_refcnt_unlockPerl_op_parentPerl_alloc_LOGOPPerl_op_linklistPerl_finalize_optreePerl_save_vptrPerl_sawparensPerl_op_unscopePerl_blockhook_registerPL_blockhooksPerl_av_create_and_pushPerl_newMETHOP_namedPL_op_maskPL_checkPL_op_descPerl_invmap_dumpPerl_PerlIO_stderrPerlIO_printfPerl_packagePL_curstnamePerl_save_generic_svrefPerl_save_itemPerl_gv_stashsvPerl_sv_setsv_flagsPL_compilingPerl_package_versionPerl_gv_fetchpvn_flagsPerl_cv_ckproto_len_flagsPerl_ckwarn_dPerl_newSVpvn_flagsPerl_bytes_cmp_utf8Perl_sv_setpvnPerl_sv_catpvfPerl_sv_catpvn_flagsmemcmpPerl_newSVhekPerl_sv_catsv_flagsPerl_cv_const_svPerl_cv_const_sv_or_avPerl_newSTUBPL_body_rootsPerl_cvgv_setPerl_cvstash_setPL_sub_generationPerl_gv_fetchsvPerl_more_bodiesPerl_mro_method_changed_inPerl_ck_anoncodePerl_pad_add_anonPerl_ck_bitopPerl_ck_warnerPerl_ck_concatPerl_ck_rvconstPerl_ck_matchPerl_ck_methodPerl_sv_insert_flagsstrncmpPerl_find_lexical_cvPerl_rv2cv_op_cvPerl_cvgv_from_hekPerl_cv_get_call_checker_flagsPerl_ck_entersub_args_proto_or_listPerl_cv_get_call_checkerPerl_cv_set_call_checker_flagsPerl_sv_magicPerl_mg_free_typePerl_cv_set_call_checkerPerl_ck_svconstPerl_ck_isaPerl_peepPL_rpeeppPerl_custom_op_registerPL_custom_opsPerl_sv_backoffPerl_custom_op_get_fieldPL_custom_op_namesPerl_safesyscallocPerl_savepvnPL_custom_op_descsPerl_sv_magicextPL_op_namePerl_op_sibling_splicePerl_sv_utf8_upgrade_flags_growPerl_validate_protoPerl_newSVsv_flagsPerl_scalarvoidPerl_scalarPerl_sv_2nv_flagsPerl_newSVpvfPerl_newSVpvnPerl_dorefPerl_oopsAVPerl_ck_warner_dPerl_oopsHVPerl_newOPPerl_pad_allocPerl_newNULLLISTPerl_newLISTOPPerl_op_append_elemPerl_op_prepend_elemPerl_op_append_listPerl_ck_trycatchPerl_newMETHOPPerl_op_scopePL_perldbPL_taintingPerl_cmpchain_startPerl_cmpchain_extendPerl_newPMOPPerl__is_in_locale_categoryPerl_refcounted_he_fetch_pvnPerl_newSVOPPL_diehookPL_warnhookPL_dowarnPL_sv_placeholderPerl_create_eval_scopePL_errgvPerl_delete_eval_scopePerl_sv_setpv_bufsizePerl_mg_freePerl_pad_swipePerl_newGVOPPerl_newPVOPPerl_ck_repeatPerl_newUNOP_AUXPerl_ck_deletePerl_ck_existsPerl_newUNOPPerl_newRANGEPerl_sv_upgradePerl_newDEFEROPPerl_op_wrap_finallyPerl_newGVREFPerl_invertPerl_newAVREFPerl_newHVREFPerl_newCVREFPerl_newSVREFPerl_newDEFSVOPPerl_ck_prototypePerl_ck_evalPL_hintgvPerl_hv_copy_hints_hvPerl_newSVuvPerl_ck_ftstPL_stdingvPerl_ck_readlinePL_argvgvPerl_dofilePerl_gv_overridePerl_op_convert_listPerl_newTRYCATCHOPPerl_newANONLISTPerl_newANONHASHPerl_ck_entersub_args_corePerl_cv_namePerl_newSVpvPerl_jmaybePerl_newBINOPPerl_sv_2bool_flagsPerl_mg_getPerl_newLOGOPPerl_cmpchain_finishPerl_newCONDOPPerl_ck_sassignPerl_listPL_peeppPerl_pp_pushmarkPerl_pp_anonlistPerl_newSLICEOPPerl_op_contextualizePerl_optimize_optreePerl_pad_tidyPL_in_evalPL_main_startPL_eval_startPerl_newPROGPL_eval_rootPL_main_rootPerl_get_cvn_flagsPL_markstack_maxPerl_call_svPL_savestack_ixPerl_cv_forget_slabPerl_markstack_growPerl_newFORMPerl_leave_scopePerl_op_lvalue_flagsPL_modcountPerl_ck_listiobPerl_newASSIGNOPPerl_sv_setivPerl_newLOOPOPPerl_newWHILEOPPerl_newFOROPPerl_newLOOPEXPerl_savesharedpvPerl_newGIVENOPPerl_newWHENOPPerl_ck_smartmatchPerl_ck_returnPerl_ck_entersub_args_listPerl_ck_subrPL_debstashPerl_ck_cmpPerl_ck_funPerl_ck_backtickPerl_ck_spairPerl_ck_eofPerl_ck_execPerl_ck_grepPerl_ck_indexPL_taintedPerl_fbm_compilePerl_sv_copypv_flagsPerl_ck_lfunPerl_ck_rfunPerl_ck_definedPerl_ck_openPerl_ck_requirememmovePerl_share_hekPerl_sv_sethekPerl_unshare_hekPerl_diePerl_sv_force_normal_flagsPerl_ck_selectPerl_ck_shiftPerl_ck_stringifyPerl_ck_joinPerl_ck_truncPerl_ck_substrPerl_ck_tellPerl_ck_lengthPerl_ck_eachPerl_ck_refassignPerl_gv_init_svPerl_ck_sort__memcpy_chkPerl_pad_findmy_pvnPerl_ck_entersub_args_protoPerl_rpeepPerl_newRVPerl_sv_rvweakenPerl_cop_fetch_labelPerl_core_prototypePerl_coresub_opPerl_report_redefined_cvPerl_sv_cmp_flagsPerl_wrap_op_checkerPerl_dup_warningsPerl_block_startPerl_pad_block_startPerl_save_hintsPerl_save_I32Perl_mg_sizePerl_newSTATEOPPerl_intro_myPerl_refcounted_he_incPerl_cop_store_labelPerl_block_endPerl_pad_leavemystrrchrPL_initavPL_scopestack_ixPL_curstackPerl_save_sptrPL_beginavPerl_call_listPL_savebeginPL_checkavPerl_av_create_and_unshift_onePL_endavPL_unitcheckavPerl_new_stackinfoPerl_croak_popstackPerl_newXS_len_flagsPerl_sv_setpvPerl_savepvPL_xsubfilenamePerl_cv_undefPerl_newXSPerl_newXS_flagsPerl_newXS_deffilePerl_newCONSTSUB_flagsPerl_newATTRSUB_xmemrchrPerl_pad_fixup_inner_anonsPL_breakable_sub_genPL_sublinePL_DBsubPerl_pad_add_weakrefPerl_gv_init_pvnPerl_sv_setpvfPerl_pmruntimePerl_current_re_enginePerl__new_invlistPerl__add_range_to_invlistPerl_safesysmallocPL_utf8skipPerl__invlist_searchPerl_sv_growPerl_safesysreallocPerl_re_op_compilePerl_av_pushPerl_newSVnvPerl__invlist_invertPerl_uvoffuni_to_utf8_flags_msgsPerl_bind_matchPerl_ck_splitPerl_utilizePerl_new_versionPerl_sv_setnvPerl_upg_versionPerl_vcmpPerl_sv_derived_fromPL_prevailing_versionPerl_vload_modulePerl_lex_startPerl_start_subparsePerl_load_modulePerl_apply_attrs_stringPerl_newMYSUBPerl_cv_clone_intoPerl_cv_clonePL_incgvPerl_my_attrsPerl_localizePerl_ck_globPL_globhookPerl_newANONATTRSUBPerl_newANONSUBPerl_newCONSTSUBPerl_nothreadhookgetuidgeteuidgetgidgetegidPL_e_scriptPerl_filter_delPL_bincompat_optionsPL_mainstackPerl_dounwind__longjmp_chkPL_markstackPL_tmps_floorPL_statusvalue__xstat64Perl_sys_initPL_sigfpe_savedPerl_sys_init3Perl_sys_termPL_veto_cleanupPerlIO_teardownperl_allocPL_curinterpperl_freePerl_call_atexitPL_exitlistlenPL_exitlistPerl_get_svPerl_gv_fetchpvPerl_av_unshiftPerl_av_storePerl_get_avPerl_get_hvPerl_get_cvPL_DBcvPL_tmps_ixPerl_free_tmpsPerl_savetmpsPL_restartopPL_restartjmpenvPL_statusvalue_posixPerl_call_pvPerl_call_argvPerl_call_methodPerl_eval_svPerl_taint_properPerl_croak_svPerl_eval_pvPerl_require_pvPerl_my_unexecgetpidkillPerl_doing_taintPerl_init_dbargsPL_dbargsPerl_av_clearPerl_init_debuggerPL_DBgvPL_DBlinePL_DBsinglePL_magic_vtablesPL_DBtracePL_DBsignalPerl_mg_setPerl_init_stacksPL_tmps_stackPL_tmps_maxPL_scopestackPL_scopestack_maxPL_savestackPL_savestack_maxperl_constructPL_perl_destruct_levelPL_clocktickPL_errorsPL_hash_rand_bitsPL_hash_rand_bits_enabledPL_utf8cachePL_reg_curpmPL_regmatch_slabPL_statnamePL_chopsetPL_dumpindentPL_laststatvalPL_laststypePL_curcopdbPL_profiledataPL_sig_pendingPL_maxsysfdPL_splitstrPL_gensymPL_watchaddrPL_padlist_generationPL_in_clean_objsPL_strxfrm_is_behavedPL_collation_standardPL_collxfrm_multPL_strxfrm_max_cpPL_strxfrm_NUL_replacementPL_collation_ixPL_evalseqPL_anPL_in_clean_allPL_langinfo_bufPerl_runops_standardPL_numeric_standardPL_numeric_underlyingPL_numeric_underlying_is_standardPL_langinfo_bufsizePL_underlying_numeric_objPL_perlioPL_in_load_modulePL_setlocale_bufPL_checkav_savePL_unitcheckav_savePL_def_layerlistPL_setlocale_bufsizePL_beginav_savePL_known_layersPL_lockhookPL_sharehookPL_threadhookPL_unlockhookPL_signalhookPL_dump_re_max_lenPL_destroyhookPL_InBitmapPL_scopestack_namePL_isarevPerl_sv_nosharingPerl_despatch_signalsPerl_sv_destroyablePerl_sv_nounlockingPerl_init_constantsPL_sighandlerpPL_sighandler1pPL_sighandler3pPerl_sighandlerPerl_sighandler1Perl_sighandler3PL_rsPerl_seedPL_internal_random_statePerl_drand48_init_rPL_start_envPerl_init_unipropsPL_TR_SPECIAL_HANDLING_UTF8PL_localpatchesPerlIO_initPL_fdpidPL_modglobalPL_debug_padPL_hash_seed_setPL_strtabPL_sv_constsPL_origenvironsysconfPL_stashcachePL_mmap_page_sizePL_patchlevel__errno_locationPL_osnamePL_registered_mrosPerl_init_i18nl10ngetenvPerl_grok_numberPL_hash_seed_wPerl_get_hash_seedPerl_hv_ksplitPerl_populate_isaPerl_init_argv_symbolsPL_doswitchesstrchrPL_unicodePL_utf8localePL_inplacePerl_sv_utf8_decodePL_toptargetPL_bodytargetPL_formtargetPL_origfilenamePL_envgvPerl_sv_incPL_minus_aPerl_hv_iterinitPerl_hv_iternext_flagsPerl_my_setenvPerl_av_shiftPL_stderrgvperl_destructPL_exit_flagsPerl_parser_freePerl_PerlIO_stdoutPerl_PerlIO_flushPerl_my_fflush_allPL_main_cvPerlIO_destructPerl_sv_clean_objsPL_use_safe_putenvPerlIO_cleanupPL_minus_cPerl_PerlIO_closePL_minus_FPL_minus_nPL_minus_pPL_minus_lPL_unsafePL_ofsgvPL_ors_svPL_efloatbufPL_statgvPL_efloatsizePL_argvoutgvPL_last_in_gvPL_DBcontrolPL_replgvPL_argvout_stackPL_preambleavPL_subnamePL_collation_nameuselocalefreelocalePL_numeric_namePL_numeric_radix_svPL_warn_localePL_AboveLatin1PL_Assigned_invlistPL_GCB_invlistPL_HasMultiCharFoldPL_InMultiCharFoldPL_Latin1PL_LB_invlistPL_SB_invlistPL_SCX_invlistPL_UpperLatin1PL_in_some_foldPL_utf8_foldclosuresPL_utf8_idcontPL_utf8_idstartPL_utf8_perl_idcontPL_utf8_perl_idstartPL_utf8_xidcontPL_utf8_xidstartPL_WB_invlistPL_utf8_toupperPL_utf8_totitlePL_utf8_tolowerPL_utf8_tofoldPL_utf8_tosimplefoldPL_utf8_charname_beginPL_utf8_charname_continuePL_utf8_markPL_CCC_non0_non230PL_Private_UsePL_XPosix_ptrsPL_Posix_ptrsPerl_sv_clean_allPerl_sv_clearPL_psig_namePerl_free_tied_hv_poolPL_psig_pendPL_psig_ptrPL_taint_warnPL_debugPerl_sv_free_arenasPL_mess_svPerl_grok_atoUVPerl_PerlIO_restore_errnoPerl_my_exitPerl_warnabortPL_origargvPerlIO_putsPerl_moreswitchesPerl_grok_bin_oct_hexPL_do_undumpPerl_parse_unicode_optsperl_parsePerl_debug_hash_seedPL_origalenPL_origargcPL_basetimePerl_hv_name_setPL_globalstashPerl_set_caret_XPerl_gv_fetchfilePerl_PerlIO_stdinPerl_rsignal_statePerl_sv_getsstrstrPerlIO_ungetcPerl_pad_newPerl_boot_core_PerlIOPerl_boot_core_UNIVERSALPerl_boot_core_builtinPerl_boot_core_mroPerl_setdefoutPL_defoutgvPL_signalsPerl_yyparsePL_minus_EPerl_sv_catpvPerlIO_openPerl_PerlIO_fileno__fxstat64Perl_rsignalPerlIO_binmodePerlIO_fdopenPerl_find_scriptPerl_gv_checkPerl_filter_addPerl_abort_executionperl_runPerl_my_failure_exitPerl_xs_boot_epilogPerl_gv_stashsvpvn_cachedPerl_mro_meta_initPerl_mro_get_linear_isaPerl_sv_reftypePerl_gv_stashpvnXS_NamedCapture_flagsPerl_sv_setuvPerl_sv_blessPerl_sv_isobjectPerl_sv_derived_from_svPerl_sv_derived_from_pvPerl_sv_derived_from_pvnPerl_sv_mortalcopy_flagsPerl_vnormalPerl_vstringifyPerl_sv_isa_svPerl_gv_fetchmeth_pvnPerl_sv_does_svPerl_sv_eq_flagsPL_isa_DOESPerl_sv_refPerl_tmps_grow_pXS_UNIVERSAL_DOESPerl_sv_doesPerl_sv_does_pvPerl_sv_does_pvnPerl_croak_xs_usageXS_UNIVERSAL_isaXS_UNIVERSAL_canPerl_gv_fetchmethod_sv_flagsXS_utf8_is_utf8XS_utf8_validPL_extended_utf8_dfa_tabPerl_is_utf8_FF_helper_XS_utf8_encodePerl_sv_utf8_encodeXS_utf8_decodePerl_sv_pvn_force_flagsXS_utf8_upgradePerl_sv_setiv_mgXS_utf8_downgradePerl_sv_utf8_downgrade_flagsXS_utf8_native_to_unicodePerl_sv_2uv_flagsXS_utf8_unicode_to_nativeXS_Internals_SvREADONLYXS_constant__make_constXS_Internals_SvREFCNTXS_Internals_hv_clear_placeholdPerl_hv_clear_placeholdersXS_PerlIO_get_layersXS_re_is_regexpPerl_get_re_argXS_re_regnames_countXS_re_regnameXS_re_regnamesXS_re_regexp_patternXS_NamedCapture_tie_itPerl_sv_setrv_noincPerl_sv_unmagicXS_NamedCapture_TIEHASHPerl_newSVrvXS_NamedCapture_FETCHPerl_croak_no_modifyXS_NamedCapture_FIRSTKEYPerl_vnumifyPerl_gv_const_svPerl_newGPPerl_sv_add_backrefPerl_sv_del_backrefPerl_gv_fullname4Perl_gp_refPerl_gp_freePerl_io_closePerl_magic_freeovrldPerl_amagic_is_enabledPerl_gv_name_setPerl_sv_usepvn_flagsPerl_gv_init_pvPerl_mro_package_movedPL_sig_namePerl_gv_stashpvPerl_save_scalarPerl_newGVgen_flagsPerl_keywordPerl_hv_clearPerl_gv_fetchfile_flagsPerl_gv_fetchmeth_pvPerl_gv_fetchmeth_pvn_autoloadPerl_gv_fetchmeth_sv_autoloadPerl_gv_fetchmeth_pv_autoloadPerl_gv_fetchmeth_svPerl_gv_autoload_pvnPerl_sv_untaintPerl_gv_fetchmethod_pvn_flagsPerl_Gv_AMupdatePerl_amagic_callPerl_av_extendPerl_try_amagic_unPerl_sv_2numPerl_try_amagic_binPerl_report_uninitPerl_amagic_deref_callPerl_gv_fetchmethod_pv_flagsPerl_gv_fetchmethod_autoloadPerl_gv_handlerPerl_gv_autoload_svPerl_gv_autoload_pvPerl__is_utf8_FOOPerl_sv_uni_displayPerl_utf8_lengthPL_warn_reservedPerl_save_I8Perl_PerlIO_clearerrPerl_parser_free_nexttoke_opsPerl_lex_bufutf8Perl_lex_grow_linestrPerl_lex_stuff_pvnPerl_lex_stuff_pvPerl_lex_stuff_svPerl_lex_unstuffPerl_lex_read_toPerl_lex_discard_toPerl_notify_parser_that_changed_to_utf8Perl_yyunlexPerl_str_to_versionPL_strict_utf8_dfa_tabPerl__utf8n_to_uvchr_msgs_helperPerl_newSVPerl_av_popPerl_sv_freePerl_filter_readPerl_PerlIO_readPerl_PerlIO_errorPerl_lex_next_chunkPerl_lex_peek_unicharPerl_lex_read_unicharPerl_lex_read_spacePerl_skipspace_flagsPerl__is_utf8_perl_idcontPerl_regcurlyPerl_delimcpymemmemPerl_PerlIO_tellPerl_rsignal_saveexecvPerl_rsignal_restorePerl_utf16_to_utf8_basePerl_scan_wordPerl_init_named_cvPerl_yyerror_pvnPL_in_utf8_CTYPE_locale__ctype_b_locPerl_yyquitPerl_scan_strPerl_is_graphemePerl_save_boolPL_warn_nosemi__snprintf_chkPerl_load_charnamesPerl_get_and_check_backslash_N_namePerl_grok_bslash_xPerl_grok_bslash_cPerl_form_alien_digit_msgPerl_grok_bslash_oPerl_form_cp_too_large_msgPerl_scan_vstringPerl_scan_numPerl_my_atofPerl_prescan_versionPerl_scan_versionPerlIO_apply_layersPL_keyword_pluginPerl_yylexstrpbrkPerl_save_I16Perl_save_ivPerl_save_pptrPerl_save_generic_pvrefPL_no_myglobPerl_keyword_plugin_standardPerl_wrap_keyword_pluginPerl_parse_arithexprPerl_parse_termexprPerl_parse_listexprPerl_parse_fullexprPerl_parse_blockPerl_parse_barestmtPerl_parse_labelPerl_parse_fullstmtPerl_parse_stmtseqPerl_parse_subsignaturePerl_save_intPerl_save_destructor_xPL_min_intro_pendingPL_max_intro_pendingPL_pad_reset_pendingPerl_find_rundefsvoffsetPerl_find_rundefsvPL_comppad_name_floorPerl_save_strlenPL_comppad_name_fillPL_padix_floorPL_padixPL_constpadixPL_padname_undefPerl_do_dump_padPerl_dump_indentPerl_padlist_storePerl_av_extend_gutsPerl_pad_pushPerl_newPADNAMELISTPerl_newPADNAMEpvnPerl_newPADNAMEouterPerl_padname_freePL_padname_constPerl_padnamelist_storePerl_mg_copyPerl_av_fillPerl_find_runcv_wherePerl_find_runcvPerl_pad_add_name_pvPerl_pad_add_name_svPerl_sv_2pvutf8_flagsPerl_pad_findmy_pvPerl_pad_findmy_svPerl_padnamelist_freePerl_cv_undef_flagsPL_user_def_propsPerl_vmessPerl_av_undefPL_bitcountPerl_sv_len_utf8Perl_newRV_noincPerl_av_existsPerl_reginitcolorsPL_colorsPL_colorsetPL_core_reg_enginePerl_pregcompPerl_reg_named_buff_fetchPerl_reg_named_buff_existsPerl_reg_named_buff_firstkeyPerl_reg_named_buff_nextkeyPerl_reg_named_buff_iterPerl_reg_named_buff_scalarPerl_reg_named_buff_allPerl_reg_named_buffPerl_reg_numbered_buff_fetchPerl_sv_set_undefPerl_reg_numbered_buff_storePL_localizingPerl_reg_numbered_buff_lengthPerl_reg_qr_packagePerl__new_invlist_C_arrayPerl_invlist_clonePerl__invlist_union_maybe_complement_2ndPerl__inverse_foldsPerl__to_fold_latin1Perl__setup_canned_invlistPerl__invlist_intersection_maybe_complement_2ndPL_regkindPerl__invlist_dumpPerl__invlistEQPerl_regdumpPerl_regpropPerl_re_intuit_stringPerl_pregfreePerl_pregfree2Perl_reg_temp_copyPerl_regfree_internalPerl_regnextPL_foldPL_fold_latin1PL_latin1_lcPL_reg_namePL_varies_bitmaskPL_EXACTFish_bitmaskPL_simple_bitmaskPerl__to_utf8_fold_flagsPerl_repeatcpyPerl_save_re_contextmatch_unipropPerl_do_uniprop_matchPerl_get_prop_definitionPerl_get_prop_valuesPerl_get_deprecated_property_msgdeprecated_property_msgsPerl_refcounted_he_fetch_pvPerl_my_atof3strspnPerl_my_strlcatPerl__to_uni_fold_flagsPL_extended_cp_formatPerl_my_strlcpyPerl_cntrl_to_mnemonicPerl_re_compilePerl_get_regclass_nonbitmap_datastrcspnPL_op_sequencePL_op_seqPerlIO_vprintfPerl_pv_escapePerl_pv_displayPerl_sv_peekPerl_sv_taintedPerl_set_numeric_standardPerl_set_numeric_underlyingPerl_dump_vindentPerl_gv_dumpPerlIO_putcPerl_do_hv_dumpPerl_do_gv_dumpPerl_do_gvgv_dumpPerl_multideref_stringifyPerl_multiconcat_stringifyPerl_debopPerl_debPerl_runops_debugPL_watchokPerl_debstackPerl_deb_stack_allPerl_op_classop_class_namesPL_op_private_bitdef_ixPL_op_private_labelsPL_op_private_bitdefsPL_op_private_bitfieldsop_flags_namespmflags_flags_namesPerl_do_pmop_dumpPerl_pmop_dumpPerl_do_op_dumpPerl_op_dumpPerl_dump_sub_perlPerl_dump_subPerl_dump_formPerl_dump_packsubs_perlPerl_dump_packsubsPerl_dump_all_perlPerl_PerlIO_setlinebufPerl_dump_allPerl_dump_evalPerl_do_sv_dumpfirst_sv_flags_namessecond_sv_flags_namescv_flags_namesPerl_do_magic_dumphv_flags_namesregexp_extflags_namesgp_flags_imported_namesgp_flags_namesPerl_hv_iterkeysvPL_YesPL_Noregexp_core_intflags_namesPerl_hv_backreferences_pPL_magic_vtable_namesPerl_magic_dumpPerl_sv_dumpPerl_watchPerl_debprofdumpPerl_mallocPerl_callocPerl_reallocPerl_mfreePerl_delimcpy_no_escapePerl_ninstrPerl_rninstrPerl_fbm_instrPerl_closest_copPerl_write_to_stderrPerl_do_printPerl_magic_methcallPerl_newSVpv_sharePL_no_memPL_nomemokPerl_savesvpvPerl_savesharedpvnPerl_savesharedsvpvPerl_sv_2cvPerl_vcroakPerl_die_unwindPerl_mess_svPL_memory_wrapPerl_vformPerl_sv_vsetpvfnPL_no_modifyPerl_die_svPerl_warn_svPerl_vwarnPerl_vwarnerPerl_new_warnings_bitfieldunsetenvPerl_atfork_lockPerl_atfork_unlockPerl_my_forksigemptysetsigactionPerl_wait4pidPerl_my_popen_listPerl_PerlProc_pipe_cloexecPL_forkprocessPerl_PerlLIO_dup2_cloexecPerl_taint_envPerl_do_aexec5Perl_setfd_cloexec_or_inhexec_by_sysfdnessPerl_my_popenPerl_do_exec3Perl_my_pclosePerlIOUnix_refcntPerl_get_contextPerl_set_contextPerl_get_op_namesPerl_get_op_descsPerl_get_no_modifyPerl_get_opargsPerl_get_ppaddrPerl_getenv_lenPerl_get_vtblPerl_report_wrongway_fhPerl_report_evil_fhPerl_init_tmlocaltimePerl_mini_mktimePerl_my_strftimePerl_getcwd_svgetcwdPerl_av_lenPerl_vverifyPerl_my_socketpairPerl_PerlLIO_open_cloexecgettimeofdayPerl_my_snprintf__vsnprintf_chkPerl_my_vsnprintfPerl_my_clearenvPerl_xs_handshakePerl_noperl_diePerl_candoPerl_get_db_subPerl_my_dirfdPerl_drand48_rldexpsigprocmaskPerl_mg_magicalPerl_save_allocPL_magic_dataPerl_mg_lengthPerl_mg_clearPerl_mg_findextPerl_mg_localizePerl_mg_freeextPerl_magic_regdata_cntPerl_magic_regdatum_getPerl_magic_regdatum_setPerl_emulate_cop_ioPerl_sv_string_from_errnumPerl_my_strerrorPerl__is_cur_LC_category_utf8Perl_magic_getPL_phase_namesPerl_sv_setrv_incgetgroupsPerl_magic_getuvarPerl_magic_clearenvPerl_magic_set_all_envPerl_hv_itervalPerl_hv_iterkeyPerl_magic_clear_all_envPerl_magic_setsigallPerl_magic_clearisaPerl_mro_isa_changed_inPerl_magic_setisaPerl_magic_getnkeysPerl_hv_placeholders_getPerl_magic_setnkeysPerl_magic_getpackPerl_magic_setpackPerl_magic_clearpackPerl_magic_sizepackPerl_magic_wipepackPerl_magic_nextpackPerl_magic_existspackPerl_magic_scalarpackPerl_hv_eiter_setPerl_magic_getarylenPerl_magic_setarylenPerl_magic_cleararylen_pPerl_magic_freearylen_pPerl_magic_getsubstrPerl_translate_substr_offsetsPerl_sv_pos_u2b_flagsPerl_magic_gettaintPerl_magic_settaintPerl_magic_getvecPerl_do_vecgetPerl_magic_setvecPerl_do_vecsetPerl_defelem_targetPerl_magic_getdefelemPerl_vivify_defelemPL_no_helem_svPL_no_aelemPerl_mg_find_mglobPerl_magic_getposPerl_sv_pos_b2u_flagsPerl_magic_setposPerl_sv_magicext_mglobPerl_magic_setdefelemPerl_magic_setnonelemPerl_magpC m 4  h4 n Ȑl3\ pT\+ gh.9  Qh ؅iC p"9[ l;  ,, d@s x~09 u HD PpD P3 8h; ` $9G 9) )x+9+929 (&hI: 8 p! (i `wQ `?4F < HN4c ` 0.9 8 xFh 8|Dl XPn 4p)&9t9^: @>4OM i{ h# X*hF{ 8e (9p y'x%9 إ|j  A, | n 8x.<.9~ $4 p p  2  H `0 Q<9'(,91 XkV 0L%09  pp  @^ ȕ#* 8 i 8?B@8f ؃'&9C xb  Q XL `\`i ho(/97 j(-9 H 8Ps^ ` 0]#9AN {3f X/ HY ͉ 1h-[ H1x[ Oi x$ и M(9q- 7 А K h, *  o!t @hu A4/J P` 4X 0 q  @@ P=r 5p]*9O"9s. 7k XE++"9r BXl l &, K L$ tq  (9 ж).9Yr x8 Ȃ'9'-9Y p`q X<x&9, X*9C 7 (t  xpb**9 0s\ p[t  0BxH xt9T ({ e(h *H'9?\ `82 `L5 H \r H Ǔ 0 C p"9M} @8P ț T q$m h hTz w)9g xK -$?[ 1l8,9[ 8"9 |n 99$`)9e (-T`@P)9s z < P< X-9 (%9v h ?4 .9t%P-94 >4!l S- @.u  vo8 8T7J p z ؕA hzV x  ( P/8#9)_ 8E"X9m6 X5 \ 5W \ `8% X Jr P?4F /, D BY n LeL 7?`%9[ /'w (. @R,*9&&9! k; o pJ1 ihQ ?4DQl `Y@ B P94*v 0" lr K|o P4D<0+9 * ~Pӂ9E t ZpO PH TL 6c` !  Htg %9 %9  = h l'9j 4&+9E i pT   \Hg X;8 a] >4#P o*e X:8'*9;p+9v'9-  (<&h9&*9} hQ& C/ pBDaq xo<"q  }i e `PU T `[3 X8 8k >T6 6 D tf tj :i `#f @uot X ([J V0'9A @  3 suu X)9 X:R E0'i h1 `@qf {? \ 8 4HJ x P `hg H4 f _ 0[ t݌ df2 V (E ,4au P2 qL9Q ء4W M vD `$4=((90  Di @G80 H"' `DH H{!9 i `( pDk (54^ P;e @Hh #c `f\Rq Pj O q, ;@_ dj P Ha  P^\b5  @!@"9c~ @4Tm , J "PQ @  n  P/ BPD r PPZ 0-tg `)N p{ 1 dTb 8dD`H hiK H,S9 D 4x PL  @q< 0 @L l4ݏ  g 2   h, h[x M9 $ ’ H#90"9C G d @9L H- 4 pY 1 lC<9P+ x!'`-93P l8 !!p9"$&9 chXs X HO ,#  0u0I h ~ 352 u-9L#9N XC;  ؇"9nW 0C (b`2 Pd =4YX xDH8u= C PЊ ?h M rh B#,9a\ Y3 `M ys 8} 8 4 ( 0 Y xa )x:%+95 ` 8# 0I 4((9Z (M yM``9  @= p@8 jw pA  ?M e:G89"`9*9 ( l[ 6 0tS pp .; V ؾ$th F4+9G_ D P/4xc& @-|x  f ya A4!x  p"9 R @` XP89L h +hw p,^ 8e _? #9. = !H"9. /v @\ PQ|~0 @NM V B X  0q/ HC 1 \ b_ $+9<: HKB 4Ɏ H  : >H T2B P74h C p 8+9V  \ K| @?  O 8V xم p. xDnZ 88p: }" hWl s z м8a  0L7 R r Hh] XW H0x 0" pWTb 08i J(C l[ L-E O  1 XS2. \7w `"r 0W]a !L1 g H7 T\| `i Е#X p@)x-9p] t4b eY{ HeM \:%P'9;j $>p 8Tn 38()`9U l $bo }4 /9I h>4^  f @S ز rw  0QQ ,N ~^ "0 H)TV tol e8 H ed E ! P PxJ(#9u"9Y @H Q( =4w 0" "tA^ 8L [~ &9* HƋ N@zK P,|9 .9 @$4 a U_ pN p% pcS , X/] 6l xU  XZ .lfv K5 0 p  h: =V H , Kp>  xT d 8d#9G p4,c  T U  PO dP XY  0:  h+9r PFL 0.\.t  91*P&9'%9i!9: (P)h&9 Z| R+T(9w P9 ;xN  P;|u p  (xt t2"9 +  / x 8('9A h (m <!9 ظd $-9, hC |u 8`/ C@dR dۉ X2`WK =l- Z w  fLk P) ` + p82 ` X En d w s Y 0< ضu @ ,5 ` @& XGw GX(9- HU P)9v pxuA v D ^E8p _ 43 P;DNR `R У|~ 4u 0x|!9Wh dL8 X  8+I p?4g иlb   dq  $4@v H p D^ dʇ |Ki  [ 0 &= x "9 pƒ  # 1# 8F Hl ؀G8p 0X  T (0)9Xg P ` 8  60 L%9^ p+  I f X${v 1@ p@"9`  >  n  o p P !9VF ^ 0@Cb X<{ (n@ E B 4M @]`E&9VW L( P/ C\*9<H)99X H@Iz +9S p.9] p9nY X{!9d PXjr 8a fT95  n 8P /j> px h  d|!9#P#9P: S ; HZ x(D; l]n  6 Xy ``? h   < A4 "9 w E { (@ @D'H 4i ȅ n@ h 0v $d Hh p ; 0 ,j =: x ,"xk @` 8 S  NI <R P  @Kt 9 p9 8 E0 | ps N= 8B \Q'0&9Y1 H ;z p: PlN `p  @T_  'X +09 ? JD LP x <q X H `7@9 XC\)9U^ ] h$ eQ d g 2 (lQ Bc 8[ &'(9 * XL8  H  /  x o PX"+9%.9 $ hli 6 < 7 (B @ XZ pdh   8p9_ Yw 88  b"9b H%h-9v tm 0,Hk h- (B @ _.9 dL~  %G8tn X| ho L] l@v БP+j9% \] xx33 8.> 'd ȋ,e ^@`+9 @]M 0j0&9 B/9K X, c HF 8 l (3a l mX9 A4g     04; $: 8Ij p+ 9       HE x#+9f PՃ J `h DS 0taj p (b(&9]0 M@ѐ (R#9Ks j3 !FЅ8h |& n4 2 T* V4g Th j X93 | PX @ U*h.9q (   ر5 '&9t1 V {2 Xsd  \ J f@3 4U8[ / / 8"4v  -97 B t UO X+'9l 4T""9B  lP p7H t*9l }͔ ] `Il ( ,9V Ȯo @ xzR | XH 91 U ثd"h9f ( 8 "o @d9(+9+ 0!XR . TA @ 0c 4E e s P  (lX 8 0 p$4$p)9 Z8 P|!9ߐ P( =4k 0f 8J&98 x@ )hN hPU 5D LMR h_} x0r P0o (T*(+9>!h"9dh   '9 Kx2 @P 0p-9 h<4 \& pw1 ق %4؈ %H + "H'9!P"9  8R 8*H  %-9+ ]D)9;})90/9(`v&9k-9} `s y> h;4eO P\2` `  l @MU(9vd pr8 p H*9  >] \ fZ[ X5\e di xP3 \| 7a 81/ A@ n `l  5,W; Y (\E 0 xyK ` <-9>!9'*9  0- lfF $mj 8b H8 %9 `4$- b`I xTG `Qv \/  D (,)6 HJ 5I8'9K ,p- ` @ hC0#9kb xD:  $*9!9w (`R p #9H6 8< \6 5 XU @ Lj  9 0 K @ (_ ,@)9 ^D}f x~ 8 $+9X/95- a @F $43 l 8F 0 (PU {  xSd 4c  (`F  6 HA49d ` O XX   o pT 9 K , C >4S @Z4 Tx p49+*9s X<_| p4 & @>~M (pt6 ;  =47 J   ,p p   (Pnx p+2 Xm@= h< 8 \ \` H> (4 |P H t p >Da =4! Hq Xf ? S ,q&9Հ 4`++9.k  #\ R[ "9  8$ `j rh^ p p$o GP .: V so ؘ|[ 0PF'9).9DD PC- D $ hx=h)9~ 8. l $F @X 8 D'Q `LA p W p{? ( Fp8` +( 8 ړ @ W 9/ xm 8&S <(+9?h S f y Qpj  wL7.9`)9{ X$x P&^ 0v X\+ P- W(%99 Љ((9Y @D 0Lg 'h-t"9(p `c^ o A  : >4!G8pt~ Hk ; 0 ," ( %R @3 p/<H+9v !8"9e Zt |_G ,K , t xtp 8D x 8] ( e 0_G 0o W PN884 c   h9$ تX @C(by h{!9 > %nE+9C h  uI (s P]F Hd p 085 #[ UN x|/}(9 @+9SE 8HM $4 8  @k P64I9 \ H T` 4G >4 @. ĕ Y@o kX Э0 A PE ,4d"88 Ы`I X   4$ 8? 0 P%<E @)4<  4 (Y > hg D  = ; Lp 4 0 G Hp3 H 5 C@ H  (x L# &9 q7 %7 B "b dk# j>* `< ȩ`Q   n j&9d HmU @f u4ƈ %LrB 4|+/9T 0]B 4 ' pHem L  / h=4Up%9x('9[P Pp P,Cc 8 x0s wp U  <8)9Ad 0L_ Dg *%9^''9a Ѝn ELF @,;@8@666779Px7x8x800$$Ptd444LBLBQtdRtd677GNU,'j[yhꅐwN# d  BЀ3Z 3"4@@  B XAG0S @ v0HA0(@20*I"P h$ @%@6(P"Ȩ: @@  A.cA'J0 4@(P`8#"a0 P0-PB a 0"#! `<@ V ! aLa PEd. -D0* Q"`0"KB! &!02+LP Dh@PLD@ B*82 P B@ @`J3P8A8H C0EX@@P ! BH! $cB|bCŞ4p!PH 9  1@TDFhQ &4G@8D@b@XÅH@ n @@ J@Pc"@2H"( 0 )>]@ #D0iCAP B DA$A(!%@@P  20X P IN  `- ( -@ 0HH(A *$AHB0DX#@s 8VTb8yA 0@ :DX#tXP I($ Aߛ<  800,$d H(  BhQ(@, BI 0!$`(#D@G^@ 0@$ C$ @#F"$b`(Rb0a `dA Ӳ1@H0:B0 @(A]"Q X@ ! I -!@"0`A@ 04 *@@) dBR@"2H` T@$H@54 E (0(hB 0F"  `#8"!0ENLm&ȇ(тl2f`d!e["C"9< 4hKDL2#"8@@!Ԣ $T \ PS0B> L F IT@D IQ@p., )1: !A B† "@XL#5( b @A @ B0 a@0 @3 8  H 1@BHJR @ U8E p  DHB@W H $"TPAf A''@y<   L @o%(8 @7$@1hh HQqN`Ht<7$¡,XJ @,@P8@@4$2  PPp  9 @)AES!@  `<1D(e+RȎ ( @A@a8 "H2d>X00 EH(Bs!(^0T P@    !"#&()*,-.134689=>?ABEFGIJLMNQRSTUVX[^befhijnoqrstuwz{|}~   !$&(*+,-/01237:;<>?@BDFGIJLMNOPQRSUVWYZ[]_`befijknqrsuvwxyz}~    !"&)+./024689:<>?BCEHLMNOQRSTUWX[]^_abcghjkmnoprtvwy{}   !$%&'()*+./0134678:;=>?@ACEFJLMPSVXY\]_bdgijknoprsuvxz|~    !"&'(*+-/026789:=>?ACEFGIJMNPQSUVWYZ[^_abefhilmnopqsuwy{|}     !$%&(*,./1245789;=@ABCDFHLNPRSTXZ[\]_`acdefghijklopstuwyz}~  !#$%&')+,-/1235678:<=>?@ABCEHILNPTUVY^adfijkmnoqrtvx|}~   $%&(*+-.026789:<=?@ABEHIKNOQRUVXYZ[\]`acefhlpqstux{|}~                   ! # $ & ' ( * , . / 1 3 4 5 8 9 : < ? @ B E F G J L M O P Q R S T U W X Z \ ] ^ _ ` b d e 0;#zKz=1H]%N|$)5"ewuR!Tk o\nj%AE"}k]Rݜ4-]]#_+(ۅwbs7Jl#'燥3E.dSTbx<(e85]gZ`5+oXQA)ZMFJ+U/$Kqx9K_3xU.IDx`i`7u1ƿRH\ld>ۼK ddKC̠ղ1<=J$ivz7qtQ(Nx ٤P ң1{.a<2 )c驪UI5j 'eg[haysYnU@ "3OҘS ˖dӻ}~͍"D#O;Y7i"i(u T3@Z{{ao`EX "y96pk}_JI6仕'(_^sYojaK \&ҩjjF3áL8V&d?o_}] 0MM97j>xj5EN]dl2GPֶNO[E>mEyz=hPdP3^,働-bF W;Zu}1&)@8I3?ďas~b GβI>+Zs- ڗnv'B2 "Y ̈~HhU=<\;';EO`y3Uk:S #Xh(C5>." >r9WweUWZRXwYPNd_޶Onq ZFGMwG-˼5WfaT ufJ"兤5鄾sJBmFRlI][6MtK7QUxPns'S7ɏ:?_?yw%j/#o̊XgTGvj;{y2]UYc ⍸7c}}#%]d0Z Cg& "?R8HY0˵haղq# OMY[L\;IQ}_] Z:FH33iq2MIipy!\˟j]|l[fd;爭~0:Ԓkw,Qk$UÔ+CQ!etY".MawQGt)uA)blo?_@0)'y<;Uyu͋':.ZQyYIY[%'QV1[294A x~IlK$ ?98y|Hlnd(T WGpaz`\mK #S2-05V0Q#lZ&#w5BzzsP(Jc=C x8̥L=2 qz^m_M dé(ز=vD A'rE&cl (+^ݙuZd9}W-hza"=.)eRr'Ow/|9__}_;3 vp ujBJȞH!7. @Mhtmq(k*JB('(Ylc .̃4["$k!46RA1e?Wmd"ٜk2'|#^,kL|?oJpOtTdD./V$I q*Gq.(G)k.Kś10sI\nZǧ~Y&ǻP ?vh}ò> CPbJHԛ)˯ő A˙En"W'<.AOl[=HkQOgP͙y4?HtG%iq>'in5 sdy;'+ԛDZM Fudl/ .`L~,-ֵ);>2Ց -hq! mWQ:mpm)>4.N$ؐuB/4w:6 ͤ"IKR95"p𑣒3x4_ { %9iu kX<ػ,3&8Мզ֗5kOXڳW/ll}j{[hMHOƑw78;{G=s ݟg_@])꛵S:u *יZ,M3Qn!MQ!_=Շ~7Fqҗ(u v V[ꖷ7)g@'V?VHnG#_g:=fu]Q1U@GkYz8N7ߍq b* D/Wnv/@bsG }`Ӊ?zNWo* [8'Cm?AsE*(hg;LhMl1$[8go*/WnNzNzZ8~Cmsu5U\[8YM'ߵWzZ8e "F DHYG Pa O/Wngy-_DIDNYקk~:n4m{t dk $I 'pUsxuq̪]A<'VNhaU}m*,H'ǟM*\KR+_#x U)F*!nY.X^ly+^lں9]_B%Q<X M:Fۅh{Fn [ˊCJ%mnXX3gPY=}~1'R٫,7e ԣ=M,k1/?,밍uʦXH 1LWd*0m&BD@<jRiHݍ4LqTh-P]lUU0 4!u\=CE6) *}jU^[Tc[7W.?l>T6gntnY$ԛCgO,5Sm_ZS+m` iWYkP)c15x),3n;EKɟJKic =+ΗLYWN;/BDjɶ\l4Ͻۂ"k/n60iVY-7?*'fxCz="y_:*q"Eǣi#q:o~^aд !Ivtoo')+s!Z7KȎL]DՍ}QFK\IkNK(s"YVF9zcg),p Rw\o*͗"]sILH£K LB͉Nz6hkĊGśOͮ&u'ZwkX~Ņo}[P蛠wJS_~h77&#L+vT 'تOhYAb;f?ހTֶc~ud%v"sbYM#HԌ - | ?!>9l {Җ0ߒ, L\uir 7s)b+Y< хTz` ':T]sϽ{e,SŰҥGEj*,$LGg&7Z=XG\had́vPY@KII޿r` s(QWx-PԜBDf3 sWRRG1lYOW+i9s; k$ePK+ M55}AkpG=?&Qӱ<]a. S(9Ǯ HӄT \[a0 0\mU2mga7c1-lj\v84ZAŧ߽C}c{_.4>)?6)(,Н $ Ɵɢ.::\څx1Rr9Vq!-Gkr HsTۇ2WHx`cȿ5H_j-E%J;@-dTVG-ȐNJ?=wː%ZTz7KDx\<=y<}i)xz_q۵ù/v}op._w\icLG,?j}+֌[ޟPĕ,'2_b.-gk-ǛS.lE@vg+P޻JtvCvAYDed9nz4z ok`Ei_EP&wo7 CVgbo$B[³$j*!a_'h.Mf{<@zW96al ((+E^[YɔA+#Q8v2Q}YiksBB uˑC(O;Ù)B}X]2ΎQtއ{˙)p֎~ YW ݗ<1X]?-ްmh.E%7E>OOk;oR]U M^,)?biM,JUeChYSZxywMqT(SCYp>nʵ$C gI \=dOyfj3`~EaY^q|l7+B(hK u sk7 kU⦭c^]nxۦo7iM7*FtǞgaDc 7~vHǕ9錯gae΀K,}ӣ+Ϸ?}tFJer@^}ZgzΎ2jjgY"hmӞW/l2ĝ^ɏl}M~e b'K_ZRv䵧 h19+ի;6ٺ0q5VHg[࿀Qd]AǬGUIsMe*wu +6}E?4fTY"3| bY^\PAkhKo'T%l5A^Bҫ{{qܪg62;?2ƏNJ_6}YȮ2[mt5ŇM&@b%r313LQLBuEtu<=OI6Hha1_iZlOCcu QqUjqzӣ…,w@?BD;cgʍ6^S] !U_@}+[;FU`$_8)qmA:1GIbR(I.P$ډ$&W =*P]- EUB}Z0IF,c!'%sQ̒$⿚LcZ dm:1EE-Uga OctyX;@;S3NDx#+ djmހdi0٘L+4}-ЋMALY=Dl[q&8#j_#^ӧ0ha1L%:%C QcF~R5V %TN53 >-_iLLLh1m3RthOh)ZM/eVCڅrd9Pn[M/˪&!N, N$'0]cC,PY_gt#:U5@q|BS$S7B4"MA6o&DGga% bb ]݌+l{TF-;r*y+cI @]ژjT7rM+uMzx(z {]Owrw}.Jz-AytynM(yttvΌ\|Yt!T:?tz˄pgnv_TeHyhJw pTst|zwɊvwSt{]u} jj/wzqH$Ju8L}(%zv}z|1$t}}|56}F}i}xNZzL<yvߕ}&czLt<ykM!<bC,g9Nlziux}lVT  X(T X~J ("|$W :] S%?8`<090o $L O 4V h s  > \ >< >S @4*Z x ws uT:v +Ts \0 l%}_ 97 P 4= P$t>& ]D @U<c h R 8~  P8 $  w`-9N @4@4 `0`'9J[ 02$$ (X @cD ȓL 0 P6I X[$r xM>  :89 / @ED&9 @ X p<m 0x Mb= B d\ 89H ` l) 8(T 83 ((~ 3FD!9 &6 l|W } =4+ @ L,ƍ  z  آS  P9 xW!x9_ H= u  _ 4&9c Ls"("9 ,H8@Rx.9 @; ,] @^f  hb q l6 : X | @: 2 U ))9 .9\ T8 U " ȍ ` 04 `(%9t )  7 O\b O P7 | a `H Y dg Ќ x|\ lΒ (f  [ @4|!9X  phԎ hU 4  "95 %}'9B < t(9K e9a $"9@ @  @!`"9,.9-g `| "9:~   Hf{  P @CL 2t $[ Hq `s t  8#!91Y P@B F G Gp801 aL  s4!m  |!9  [+ @ZD, aK 0H, $0,9o  H & 2T<'9at d0 QQS X!X"9)%90c p@  #~ !\ + _ 0$9`t!"9G$!9Z ): PU; pц 8 @#x 0) if defined $>;}; if ( defined(&Win32::LoginName) ) { $username = &Win32::LoginName; } elsif (defined $pwuid) { $username = $pwuid; } else { $username = $ENV{USERNAME} || $ENV{USER} || 'SYSTEM'; } my $stmpdir = "$path$sys{_delim}par-".unpack("H*", $username); mkdir $stmpdir, 0755; my $cache_dir; if ($ENV{PAR_CLEAN}) { $cache_dir = "temp-$$"; } else { open my $fh, "<:raw", $progname or die qq[Can't read "$progname": $!]; if ((my $magic_pos = find_par_magic($fh)) >= 0) { seek $fh, $magic_pos - $FILE_offset_size - length("\0CACHE"), 0; my $buf; read $fh, $buf, length("\0CACHE"); if ($buf eq "\0CACHE") { seek $fh, $magic_pos - $FILE_offset_size - length("\0CACHE") - $cache_name_size, 0; read $fh, $buf, $cache_name_size; $buf =~ s/\0//g; $cache_dir = "cache-$buf"; } } close $fh; } if (!$cache_dir) { $cache_dir = "temp-$$"; $ENV{PAR_CLEAN} = 1; } $stmpdir .= "$sys{_delim}$cache_dir"; mkdir $stmpdir, 0755; $ENV{PAR_TEMP} = $stmpdir; last; } $par_temp = $1 if $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/; } sub _save_as { my ($name, $contents, $mode) = @_; my $fullname = "$par_temp/$name"; unless (-e $fullname) { my $tempname = "$fullname.$$"; my $fh; (open $fh, '>:raw', $tempname) && (print $fh $contents) && (close $fh) or die qq[Error writing "$tempname": $!]; chmod $mode, $tempname if defined $mode; rename($tempname, $fullname) or unlink($tempname); } return $fullname; } sub _set_progname { if (defined $ENV{PAR_PROGNAME} and $ENV{PAR_PROGNAME} =~ /(.+)/) { $progname = $1; } $progname ||= $0; if ($ENV{PAR_TEMP} and index($progname, $ENV{PAR_TEMP}) >= 0) { $progname = substr($progname, rindex($progname, $sys{_delim}) + 1); } if (!$ENV{PAR_PROGNAME} or index($progname, $sys{_delim}) >= 0) { if (open my $fh, '<', $progname) { return if -s $fh; } if (-s "$progname$sys{_exe}") { $progname .= $sys{_exe}; return; } } foreach my $dir (split /\Q$sys{path_sep}\E/, $ENV{PATH}) { next if exists $ENV{PAR_TEMP} and $dir eq $ENV{PAR_TEMP}; $dir =~ s/\Q$sys{_delim}\E$//; (($progname = "$dir$sys{_delim}$progname$sys{_exe}"), last) if -s "$dir$sys{_delim}$progname$sys{_exe}"; (($progname = "$dir$sys{_delim}$progname"), last) if -s "$dir$sys{_delim}$progname"; } } sub _fix_progname { $0 = $progname ||= $ENV{PAR_PROGNAME}; if (index($progname, $sys{_delim}) < 0) { $progname = ".$sys{_delim}$progname"; } my $pwd = (defined &Cwd::getcwd) ? Cwd::getcwd() : ((defined &Win32::GetCwd) ? Win32::GetCwd() : `pwd`); chomp($pwd); $progname =~ s/^(?=\.\.?\Q$sys{_delim}\E)/$pwd$sys{_delim}/; $ENV{PAR_PROGNAME} = $progname; } sub _par_init_env { if ( $ENV{PAR_INITIALIZED}++ == 1 ) { return; } else { $ENV{PAR_INITIALIZED} = 2; } for (qw( SPAWNED TEMP CLEAN DEBUG CACHE PROGNAME ) ) { delete $ENV{"PAR_$_"}; } for (qw/ TMPDIR TEMP CLEAN DEBUG /) { $ENV{"PAR_$_"} = $ENV{"PAR_GLOBAL_$_"} if exists $ENV{"PAR_GLOBAL_$_"}; } if ($ENV{PAR_TEMP}) { delete $ENV{PAR_CLEAN}; } } sub outs { return if $quiet; if ($logfh) { print $logfh "@_\n"; } else { print "@_\n"; } } sub init_inc { require Config; push @INC, grep defined, map $Config::Config{$_}, qw( archlibexp privlibexp sitearchexp sitelibexp vendorarchexp vendorlibexp ); } package main; require PAR; unshift @INC, \&PAR::find_par; PAR->import(@par_args); die qq[par.pl: Can't open perl script "$progname": No such file or directory\n] unless -e $progname; do $progname; CORE::exit($1) if ($@ =~/^_TK_EXIT_\((\d+)\)/); die $@ if $@; }; $::__ERROR = $@ if $@; } CORE::exit($1) if ($::__ERROR =~/^_TK_EXIT_\((\d+)\)/); die $::__ERROR if $::__ERROR; 1; __END__ ;"84hH\0ДH((xHp0@hpXȞp8ؠȡTغ$0DXpzRx ,,8 @  F %No[o`jtB~88yPP t0PPPPxA @@p``ءء``(0`|ELF "@p@8 @@@@888,,ppTTTDDPtd QtdRtd  /lib/ld-linux-aarch64.so.1GNUGNU<:!&K!(@ EKLOST]^_abdefgj4nG-k|.śd|vT`CD!z Ep ;h 3> u (, 96` 0,0{` `., x0pPD PM(O 0+W 2 0)ء .l`X P/ "_ P| LT+ ء 2  P+ xNo /xlibperl.so__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTablePerl_sv_setpvnPerl_sys_init3Perl_croakPerl_safesysmallocPL_do_undumpPL_perl_destruct_levelPerl_mg_setperl_constructPerl_sv_setpvperl_parsePerl_gv_fetchpvPL_taintedboot_DynaLoaderperl_runPerl_sys_termPL_taintingperl_allocPerl_newXSPL_exit_flagsperl_destructperl_freePerl_get_svPerl_newXS_flagslibpthread.so.0__errno_locationopen64readlseek64libnsl.so.1libdl.so.2libm.so.6libcrypt.so.1libutil.so.1libc.so.6__stpcpy_chkexitstrncmpstrrchrclosedir__stack_chk_failunlinkmkdirreallocabortmemchrgetpidstrdupstrtokstrlenmemsetstrstrrmdir__fprintf_chkmemcpy__lxstat64opendir__xstat64stderrgetuidreadlinkstrchr__vfprintf_chkreaddir64__cxa_finalize__sprintf_chkmemmoveaccessstrcmp__libc_start_main__environld-linux-aarch64.so.1__stack_chk_guardpar_current_execpar_basename__libc_csu_finiXS_Internals_PAR_BOOTpar_env_cleanpar_current_exec_procpar_dirnamesha_finalget_username_from_getpwuidpar_cleanup_IO_stdin_used__data_start__bss_start__sha_updatexs_init__end____libc_csu_init__bss_end____bss_startsha_init_endpar_mktmpdir_edatapar_setup_libpathpar_findprogmy_par_plpar_diepar_init_envGLIBC_2.17/usr/local/lib/perl5/5.36.0/aarch64-linux-gnu/COREM  #"hPȟP TP(RT T(T0T@pTHxTXTpx  #&(П>؟I ( 0 8 @ HPX`hpx !Ƞ"Р$ؠ%')*+,-./ 0(10283@4H5P6X7`8h9p:x;<=?@ABCEGȡHСJ{{_{G?    @ @"  @B @b @ @ @ @ "@ &@" *@B .@b 2@ 6@ :@ >@ B@ F@" J@B N@b R@ V@ Z@ ^@ b@ f@" j@B n@b r@ v@ z@ ~@ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ @ @" @B @b @ @ @ @ @ @" @B {SG#d@7C_sG@9@ 4[_@!G@U |}"@9B2"9+@b !c,A@_@Eq T  x`!klT |}v h&*@! %4u @o*rs `@1G*7@@AʡSA[B@{Ǩ_b @ [*G9@ @`zK r R.@#GcGGG@_ ! ?T!GA _  ! !!C!A!ABGB@_{ `I9@5G@ R` 9 @{¨_ {ScBGX@X[R@9_qD@zT@~@ 5`ju8qT@[BcCSA{Ĩ_@8_qD@zTK˵sCSA[BcC{Ĩ_cC {[GS@sGb@7@ @Ax#  @@G@@ ʠSA[B{Ĩ_օ{S[ckG@9"@7q`Tg}`@9q@z T  @8q@zT!!|@9G 6@fj8 g"@@8Bxc?q$@zA9T@8A8?q$@zTRA8j`8Ah 85RG7@@AaSA[BcCkD{Ǩ_ աj`8j 85+ G@@@R*"@ |}"hBB5"R"h'~@X}T GZ{:g+@ G;~@X}ңR+@+{SG"@o[@9A5[BGo@@ SA{Ψ_c"CkcL 44 |@c`!RR1Tk@ @qT`m[BcCkD[ck  c0{ScG[#d@'q TQb854T|@RosG'H`@ @ {@SA[B@c0_*` {!GB{c`!@'R@, {ScGRd@W65;@R! ?@q$Bz`TsGW@a@AʁSA{˨_RARq& c0{SGd@Ҋ`iTaja8?qT@9?qT8aTR TGH@Aʁ{@SAc0_9GH@ {@SAc0  աB!G  c0{S[c `G@'a*c"!RP7|@~@Yj48sG'Pa@A {@SA[Bc0_֧ c0{kBGS[+C@wҦR`@ZGwHA@A! {@SA[BkD+@c0_9c# a@9A44aT`j`8qT "@9_qT?8aT?(Tc!RRG5{@  @q T ҾcCF44!R5@@cC4c{R ` @{¨. { @9"4Q@HT @{¨ @{¨  @{¨_  {SaG[c"@'Ҕb0 -@*'%" #@8@/@'! #sG'@`@ SA[BcC{Ũ_ #{  bGC@қ@9q@zsG@a@A @{è_Rw{ЩG)G@',@? + )CCD!R/'#='=+=/=3=7=;=?=SRCC@BRC@{[УGSc*e@$<@s>@3DDT7R*T*1T|@T рTT@@_ATGC@"$@@Aa{@SA[BcCCC@_sB@B@T {@@{_{SbG[" C@'@95" XsG'@`@ SA[B@{Ũ_Хc!R 6 ѢB{CH$A[cGS@'HBFC' DD JE C@KB4@W @9!!5k3@949  !Rs @8$5[@L@@ `@9!4"4 Д~@lEƠ c !R8Rz1T7@DqATR<*4@GB !R@,kE3@G@@Aʡ{ASB[CcD_R 3t`@9`4 4=3tұ@ @qAT@kT@ qAT` @\@H qT|@!  5qT`Q _8q@TX5R.*@ 5! [Uq`*c@!R@DqAT\s**!R 8R1T/kE3@ycR  ss`@9!4 sҬd Rb @G!RB @kE3@UP@6(R**gT@cA@?kaTa @y@@y?kTR**QTE`c!RC9@ IT! _qZk3A  {BGSг[GcG@'B@9b9<@9?qT3bR!R@@!@ @@ @7bR !R@@@ @@@!R@v! sG9 8R?qQzTG'@@ @SA[B@{Ũ_@94@%  @@@@!@9 *`@!@{S)qd@TSA{¨_`@94! z5SA{¨ Ѩc {G#@Oҡ@@@!Z a`ghx&x!SpC!!TEA@B C@D@cA0@!!#_a!|@A<_aT@#3ACPA"tҪ[ӭBJy"ۭ!!k*@*B!xJ @.|@ʌJ kk! O[k k  OB! y B!p[! !    }@mBӌʭy .[ӌK J}@@ k,Bk k[ӌyk  B!zCD}@! ! o[!  }@J  J aB+x J  J}@+@[!!Bӭ /z ! ! jʰ[k}@J  J  JBE-z [Bӌ!J !}@!ʌ 0z! [! J }@ J  JFB,z [kB!J !~@!k .z! o[! J }@ J  JGqB+z [ӭB!J !}@!ʭ /z ! [! jJ k}@ J  JHB-z [ӌB!J !}@!ʌ 0z! [! J }@ J  JIB,z [k!J k ~@!!j[! BӮy!J }@J ! }@! Q[!1 J! mB1@1y /~@ ! [!! !CB-@-ax }@j_@JJ[JcJBNA.y}@/ c@ J-[A+Jc Bm@-Cy}@g@JJ [JA!kJ!BKA+*xo}@a k@! J[!@,! B,@,y}@No@ J [A#kc Bk@+yo}@.s@ J[A*J BLA,y}@n w@ J [A!k! B+@+yo}@N{@ J[A#c Bl@,y}@.@ J [A*kJ BKA+yo}@n @ J[A!! B,@,yNʐ}@ JA# [Pkc Bk@+yo}@-ʬ J[ӊA*J BMA-y}@l @ J [aA!! B,@,ay}@O@ Jm[A# cBm@-y}@/@ J [A*JnBLA,y }@o @ JM[A! !B-@-y@o J}@A#cNBy [/ ʌ JA+l@,?T}@m[ӭkBmA-yP ʮ}@  JpBӁA![z!@ a- JB!xA*[1|@ Bm|@j @J BJbcx KA+l|@k *! J[JJ  7VB!x.|@[J k kkBӪcxk[p|@k *@ JJB!x+J [/|@J  k@ k kBcx [k.M k*n|@@ J JB!x [J0l Jk0|@@ k kBcx [k/M k*o|@@ J JB!x [J.l Jk.|@@ k kBcx [k0M k*p|@@ J JB!x [J/l Jk/|@@ k kBcx *k[m|@k  *@  J JB!x [J0lJk0|@@ kkBcx[k/N k*o|@@J  JB!x +J ,|@J kk k[k\ Bcxn|@*[1 k *+ J JB!x Jo[-|@J c@ c  c jBJy c [ 1+ c L}@! k kBcxk?^.[JJ@k n|@Jp[J  "J -BӡyPA0 ~@/|@cc rBc M[c  bKz M@-! ʱ}@!J@:,[CL!B!NB,@,y }@b AB J [B!B.BM@-y}@OA J[A+BkBlA,y}@0 A J[ B*kJ BMA- z}@P A J[B!J! B,@, z}@p A J[B"!BBM@-z}@PA J[ B+BkBlA,z}@0A J[ B*kJ BMA- z}@P A J[B!J! B,@, z}@p #A J[B"!BBM@-z}@P'A J[ B+BkBlA,z}@0+A J[ B*kJ BMA- z}@P /A J[B!J! B,@, z}@p 3A J[B"!BBM@-z}@P7A J[ B+BkBkA,zo}@0;A J[ B*BӭJ zMA-P ʮ}@ J?A[B!JkB! z*@* A}@ JCA-[B"BBzM@-pGA}@  J0BLA,J[zJKAJ PBӍ JA+C[k c zc GF e  ! OA@b {@ _t {&`%qğÎ>ҦDCBz |x{_ {B|@S[cBx@  cbtB4RKk Җ~@z@ zqTSA[BcC{Ĩ_KsqTQ~SgSv `@sb}d~dzTK~@zSA[BcC{Ĩ_{S[u`@v*@w2@ S Z Z_q 8" TR"KRB|@NP6wZ)Ia@!XӁ9a@!PӁ9a@!HӁ 9a@9a@!XӁ9a@!PӁ9a@!HӁ9a@9a @!XӁ"9a @!PӁ&9a @!HӁ*9a @.9a@!XӁ29a@!PӁ69a@!HӁ:9a@>9a@!XӁB9a@!PӁF9a@!HӁJ9a@N9SA[B@{ĨR"KRB|@ {S3[3*cCt գzss*`?֟!TSA[BcC{Ĩ_ _{{_perlxsi.cCACHE...%s/%s/proc/self/exeDynaLoader::boot_DynaLoaderInternals::PAR::BOOTexe/proc/%i/%sPAR_TEMPPAR_PROGNAME:/%s%s%sPERL5LIBPERLLIBPERL5OPTPERLIOPAR_INITIALIZEDPAR_SPAWNEDPAR_CLEANPAR_DEBUGPAR_CACHEPAR_GLOBAL_DEBUGPAR_GLOBAL_TMPDIRPAR_TMPDIRPAR_GLOBAL_TEMPPAR_GLOBAL_CLEAN1lseek failedread failedLD_LIBRARY_PATHSYSTEM%02xpar-%s%s%s%s%s: creation of private subdirectory %s failed (errno=%i) %s: private subdirectory %s is unsafe (please remove it and retry your operation) PATHparl.parshort read%s%scache-%s%s%s%stemp-%u%s%s%stemp-%u-%u%sperl0PAR::Packer::VERSION1.059Unable to create cache directory%s: creation of private cache subdirectory %s failed (errno=%i) -e--USERUSERNAMETMPDIRTEMPDIRTEMPTMP/tmpeval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; # not running under some shell package __par_pl; my ($PAR_MAGIC, $FILE_offset_size, $cache_name_size); BEGIN { $PAR_MAGIC = "\nPAR.pm\n"; $FILE_offset_size = 4; # pack("N") $cache_name_size = 40; $PKZIP_MAGIC = "PK\003\004"; } sub find_par_magic { my ($fh) = @_; my $chunk_size = 64 * 1024; my $buf; my $size = -s $fh; my $pos = ($size-1) - ($size-1) % $chunk_size; # NOTE: $pos is a multiple of $chunk_size while ($pos >= 0) { seek $fh, $pos, 0; read $fh, $buf, $chunk_size + length($PAR_MAGIC); if ((my $i = rindex($buf, $PAR_MAGIC)) >= 0) { return $pos + $i; } $pos -= $chunk_size; } return -1; } my ($par_temp, $progname, @tmpfile, %ModuleCache); END { if ($ENV{PAR_CLEAN}) { require File::Temp; require File::Basename; require File::Spec; my $topdir = File::Basename::dirname($par_temp); outs(qq[Removing files in "$par_temp"]); File::Find::finddepth(sub { ( -d ) ? rmdir : unlink }, $par_temp); rmdir $par_temp; if (-d $par_temp && $^O ne 'MSWin32') { my $tmp = new File::Temp( TEMPLATE => 'tmpXXXXX', DIR => File::Basename::dirname($topdir), SUFFIX => '.cmd', UNLINK => 0, ); my $filename = $tmp->filename; print $tmp <<"..."; x=1; while [ \$x -lt 10 ]; do rm -rf '$par_temp' if [ \! -d '$par_temp' ]; then break fi sleep 1 x=`expr \$x + 1` done rm '$filename' ... close $tmp; chmod 0700, $filename; my $cmd = "$filename >/dev/null 2>&1 &"; system($cmd); outs(qq[Spawned background process to perform cleanup: $filename]); } } } BEGIN { Internals::PAR::BOOT() if defined &Internals::PAR::BOOT; eval { _par_init_env(); my $quiet = !$ENV{PAR_DEBUG}; my %sys = ( path_sep => ($^O =~ /^MSWin/ ? ';' : ':'), _exe => ($^O =~ /^(?:MSWin|OS2|cygwin)/ ? '.exe' : ''), _delim => ($^O =~ /^MSWin|OS2/ ? '\\' : '/'), ); _set_progname(); outs(qq[\$progname = "$progname"]); _set_par_temp(); outs(qq[\$ENV{PAR_TEMP} = "$ENV{PAR_TEMP}"]); my ($start_pos, $start_of_FILE_section); MAGIC: { local $SIG{__WARN__} = sub {}; unless (open _FH, '<:raw', $progname) { outs(qq[Can't read from file "$progname"]); # don't use $! here as it requires Errno.pm last MAGIC; } my $magic_pos = find_par_magic(*_FH); if ($magic_pos < 0) { outs(qq[Can't find magic string "$PAR_MAGIC" in file "$progname"]); last MAGIC; } outs("Found PAR magic at position $magic_pos"); seek _FH, $magic_pos - $FILE_offset_size - length("\0CACHE"), 0; read _FH, $buf, length("\0CACHE"); if ($buf ne "\0CACHE" && $buf ne "\0CLEAN") { outs("No cache marker found"); last MAGIC; } outs(qq[Cache marker "$buf" found]); seek _FH, $magic_pos - $FILE_offset_size, 0; read _FH, $buf, $FILE_offset_size; my $offset = unpack("N", $buf); outs("Offset from start of FILEs is $offset"); seek _FH, $magic_pos - $FILE_offset_size - $offset, 0; $start_of_FILE_section = tell _FH; my %require_list; read _FH, $buf, 4; # read the first "FILE" while ($buf eq "FILE") { read _FH, $buf, 4; read _FH, $buf, unpack("N", $buf); my $fullname = $buf; outs(qq[Unpacking FILE "$fullname"...]); my $crc = ( $fullname =~ s|^([a-f\d]{8})/|| ) ? $1 : undef; my ($basename, $ext) = ($buf =~ m|(?:.*/)?(.*)(\..*)|); read _FH, $buf, 4; read _FH, $buf, unpack("N", $buf); if (defined($ext) and $ext !~ /\.(?:pm|pl|ix|al)$/i) { my $filename = _save_as("$crc$ext", $buf, 0755); $PAR::Heavy::FullCache{$fullname} = $filename; $PAR::Heavy::FullCache{$filename} = $fullname; } else { $ModuleCache{$fullname} = { buf => $buf, crc => $crc, name => $fullname, }; $require_list{$fullname}++; } read _FH, $buf, 4; } local @INC = (sub { my ($self, $module) = @_; return if ref $module or !$module; my $info = $ModuleCache{$module}; return unless $info; delete $require_list{$module}; $INC{$module} = "/loader/$info/$module"; if ($ENV{PAR_CLEAN} and defined(&IO::File::new)) { my $fh = IO::File->new_tmpfile or die "Can't create temp file: $!"; $fh->binmode(); $fh->print($info->{buf}); $fh->seek(0, 0); return $fh; } else { my $filename = _save_as("$info->{crc}.pm", $info->{buf}); $info->{file} = $filename; open my $fh, '<:raw', $filename or die qq[Can't read "$filename": $!]; return $fh; } die "Bootstrapping failed: can't find module $module!"; }, @INC); require XSLoader; require PAR::Heavy; require Carp::Heavy; require Exporter::Heavy; PAR::Heavy::_init_dynaloader(); require IO::File; while (my $filename = (sort keys %require_list)[0]) { unless ($INC{$filename} or $filename =~ /BSDPAN/) { if ($filename =~ /\.pmc?$/i) { require $filename; } else { do $filename unless $filename =~ /sitecustomize\.pl$/; } } delete $require_list{$filename}; } if ($buf ne $PKZIP_MAGIC) { outs(qq[No zip found after FILE section in file "$progname"]); last MAGIC ; } $start_pos = (tell _FH) - 4; # start of zip } my @par_args; my ($out, $bundle, $logfh, $cache_name); delete $ENV{PAR_APP_REUSE}; # sanitize (REUSE may be a security problem) if (!$start_pos or ($ARGV[0] eq '--par-options' && shift)) { my %dist_cmd = qw( p blib_to_par i install_par u uninstall_par s sign_par v verify_par ); if (@ARGV and $ARGV[0] eq '--reuse') { shift @ARGV; $ENV{PAR_APP_REUSE} = shift @ARGV; } else { # normal parl behaviour my @add_to_inc; while (@ARGV) { $ARGV[0] =~ /^-([AIMOBLbqpiusTv])(.*)/ or last; if ($1 eq 'I') { push @add_to_inc, $2; } elsif ($1 eq 'M') { eval "use $2"; } elsif ($1 eq 'A') { unshift @par_args, $2; } elsif ($1 eq 'O') { $out = $2; } elsif ($1 eq 'b') { $bundle = 'site'; } elsif ($1 eq 'B') { $bundle = 'all'; } elsif ($1 eq 'q') { $quiet = 1; } elsif ($1 eq 'L') { open $logfh, ">>", $2 or die qq[Can't open log file "$2": $!]; } elsif ($1 eq 'T') { $cache_name = $2; } shift(@ARGV); if (my $cmd = $dist_cmd{$1}) { delete $ENV{'PAR_TEMP'}; init_inc(); require PAR::Dist; &{"PAR::Dist::$cmd"}() unless @ARGV; &{"PAR::Dist::$cmd"}($_) for @ARGV; exit; } } unshift @INC, @add_to_inc; } } if ($out) { { require IO::File; require Archive::Zip; require Digest::SHA; } my $par = shift(@ARGV); my $zip; if (defined $par) { open my $fh, '<:raw', $par or die qq[Can't find par file "$par": $!]; bless($fh, 'IO::File'); $zip = Archive::Zip->new; ( $zip->readFromFileHandle($fh, $par) == Archive::Zip::AZ_OK() ) or die qq[Error reading zip archive "$par"]; } my %meta_par = do { if ($zip and my $meta = $zip->contents('META.yml')) { $meta =~ s/.*^par:$//ms; $meta =~ s/^\S.*//ms; $meta =~ /^ ([^:]+): (.+)$/mg; } }; if (defined $par) { open my $ph, '<:raw', $par or die qq[Can't read par file "$par": $!]; my $buf; read $ph, $buf, 4; die qq["$par" is not a par file] unless $buf eq $PKZIP_MAGIC; close $ph; } CreatePath($out) ; my $fh = IO::File->new( $out, IO::File::O_CREAT() | IO::File::O_RDWR() | IO::File::O_TRUNC(), 0777, ) or die qq[Can't create file "$out": $!]; $fh->binmode(); seek _FH, 0, 0; my $loader; if (defined $start_of_FILE_section) { read _FH, $loader, $start_of_FILE_section; } else { local $/ = undef; $loader = <_FH>; } if (!$ENV{PAR_VERBATIM} and $loader =~ /^(?:#!|\@rem)/) { require PAR::Filter::PodStrip; PAR::Filter::PodStrip->apply(\$loader, $0); } $fh->print($loader) or die qq[Error writing loader to "$out": $!]; if ($bundle) { require PAR::Heavy; PAR::Heavy::_init_dynaloader(); init_inc(); require_modules(); my @inc = grep { !/BSDPAN/ } grep { ($bundle ne 'site') or ($_ ne $Config::Config{archlibexp} and $_ ne $Config::Config{privlibexp}); } @INC; s|/+|/|g, s|/$|| foreach @inc; my %files; $files{$_}++ for @DynaLoader::dl_shared_objects, values %INC; my $lib_ext = $Config::Config{lib_ext}; # XXX lib_ext vs dlext ? my %written; foreach my $key (sort keys %files) { my ($file, $name); if (defined(my $fc = $PAR::Heavy::FullCache{$key})) { ($file, $name) = ($key, $fc); } else { foreach my $dir (@inc) { if ($key =~ m|^\Q$dir\E/(.*)$|i) { ($file, $name) = ($key, $1); last; } if ($key =~ m|^/loader/[^/]+/(.*)$|) { if (my $ref = $ModuleCache{$1}) { ($file, $name) = ($ref, $1); last; } if (-f "$dir/$1") { ($file, $name) = ("$dir/$1", $1); last; } } } } next unless defined $name; next if $written{$name}++; next if !ref($file) and $file =~ /\.\Q$lib_ext\E$/i; outs(sprintf(qq[Packing FILE "%s"...], ref $file ? $file->{name} : $file)); my $content; if (ref($file)) { $content = $file->{buf}; } else { local $/ = undef; open my $th, '<:raw', $file or die qq[Can't read "$file": $!]; $content = <$th>; close $th; PAR::Filter::PodStrip->apply(\$content, "/$name") if !$ENV{PAR_VERBATIM} and $name =~ /\.(?:pm|ix|al)$/i; PAR::Filter::PatchContent->new->apply(\$content, $file, $name); } $fh->print("FILE", pack('N', length($name) + 9), sprintf("%08x/%s", Archive::Zip::computeCRC32($content), $name), pack('N', length($content)), $content) or die qq[Error writing embedded FILE to "$out": $!]; outs(qq[Written as "$name"]); } } if ($zip) { $zip->writeToFileHandle($fh) == Archive::Zip::AZ_OK or die qq[Error writing zip part of "$out"]; } if ($meta_par{clean}) { $fh->print("\0CLEAN"); } else { if (!defined $cache_name) { my $ctx = Digest::SHA->new(1); seek $fh, 0, 0; $ctx->addfile($fh); seek $fh, 0, 2; $cache_name = $ctx->hexdigest; } $cache_name = substr $cache_name, 0, $cache_name_size; $cache_name .= "\0" x ($cache_name_size - length $cache_name); $fh->print($cache_name, "\0CACHE"); } my $offset = $fh->tell - length($loader); $fh->print(pack('N', $offset), $PAR_MAGIC); $fh->close or die qq[Error writing trailer of "$out": $!]; chmod 0755, $out; exit; } { last unless defined $start_pos; _fix_progname(); require PAR; PAR::Heavy::_init_dynaloader(); { require File::Find; require Archive::Zip; } my $fh = IO::File->new; # Archive::Zip operates on an IO::Handle $fh->fdopen(fileno(_FH), 'r') or die qq[fdopen() failed: $!]; Archive::Zip::setChunkSize(-s _FH); my $zip = Archive::Zip->new; ($zip->readFromFileHandle($fh, $progname) == Archive::Zip::AZ_OK()) or die qq[Error reading zip archive "$progname"]; Archive::Zip::setChunkSize(64 * 1024); push @PAR::LibCache, $zip; $PAR::LibCache{$progname} = $zip; outs("Extracting zip..."); if (defined $ENV{PAR_TEMP}) { # should be set at this point! foreach my $member ( $zip->members ) { next if $member->isDirectory; my $member_name = $member->fileName; next unless $member_name =~ m{ ^ /?shlib/ (?:$Config::Config{archname}/)? ([^/]+) $ }x; my $extract_name = $1; my $dest_name = File::Spec->catfile($ENV{PAR_TEMP}, $extract_name); if (-f $dest_name && -s _ == $member->uncompressedSize()) { outs(qq[Skipping "$member_name" since it already exists at "$dest_name"]); } else { outs(qq[Extracting "$member_name" to "$dest_name"...]); ($member->extractToFileNamed($dest_name) == Archive::Zip::AZ_OK()) or die qq[Error extracting zip member to "$dest_name"]; chmod(0555, $dest_name) if $^O eq "hpux"; } } } } unless ($PAR::LibCache{$progname}) { die << "." unless @ARGV; Usage: $0 [ -Alib.par ] [ -Idir ] [ -Mmodule ] [ src.par ] [ program.pl ] $0 [ -B|-b ] [-Ooutfile] src.par . $ENV{PAR_PROGNAME} = $progname = $0 = shift(@ARGV); } sub CreatePath { my ($name) = @_; require File::Basename; my ($basename, $path, $ext) = File::Basename::fileparse($name, ('\..*')); require File::Path; File::Path::mkpath($path) unless(-e $pX0h[=X3;S=X)<P;H);@:8):09()9 8)87)76(65(54(4Ш3(32(21(10(0/(/.x(.p-h(-`,X(,P+H(+@*8(*0)(() ((('('&'&%'%$'$Ч#'#"'"!'! ' 'x'ph'`X'PH'@8'0(' ''&&&Ц&&&&&x&p h& ` X& P H& @ 8& 0 (& &&%%%Х%%3r<0*`<GCC: (Debian 8.3.0-6) 8.3.0.shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.got.plt.data.bss.comment 88TT !tt$4o> F Nobb[o`jpp tB888~p"p"y""%%t.SSTTXX Y Yl m m(m(m0m0m`ooXoohqhq0;[=[<0[<[<FILE'2ca09494/IO/Compress/Adapter/Deflate.pm package IO::Compress::Adapter::Deflate ; use strict; use warnings; use bytes; use IO::Compress::Base::Common 2.106 qw(:Status); use Compress::Raw::Zlib 2.103 qw( !crc32 !adler32 ) ; require Exporter; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, @EXPORT, %DEFLATE_CONSTANTS); $VERSION = '2.106'; @ISA = qw(Exporter); @EXPORT_OK = @Compress::Raw::Zlib::DEFLATE_CONSTANTS; %EXPORT_TAGS = %Compress::Raw::Zlib::DEFLATE_CONSTANTS; @EXPORT = @EXPORT_OK; %DEFLATE_CONSTANTS = %EXPORT_TAGS ; sub mkCompObject { my $crc32 = shift ; my $adler32 = shift ; my $level = shift ; my $strategy = shift ; my ($def, $status) = Compress::Raw::Zlib::Deflate->new( -AppendOutput => 1, -CRC32 => $crc32, -ADLER32 => $adler32, -Level => $level, -Strategy => $strategy, -WindowBits => - MAX_WBITS); return (undef, "Cannot create Deflate object: $status", $status) if $status != Z_OK; return bless {'Def' => $def, 'Error' => '', } ; } sub compr { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflate($_[0], $_[1]) ; $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub flush { my $self = shift ; my $def = $self->{Def}; my $opt = $_[1] || Z_FINISH; my $status = $def->flush($_[0], $opt); $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub close { my $self = shift ; my $def = $self->{Def}; $def->flush($_[0], Z_FINISH) if defined $def ; } sub reset { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflateReset() ; $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub deflateParams { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflateParams(@_); $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "deflateParams Error: $status"; return STATUS_ERROR; } return STATUS_OK; } #sub total_out #{ # my $self = shift ; # $self->{Def}->total_out(); #} # #sub total_in #{ # my $self = shift ; # $self->{Def}->total_in(); #} sub compressedBytes { my $self = shift ; $self->{Def}->compressedBytes(); } sub uncompressedBytes { my $self = shift ; $self->{Def}->uncompressedBytes(); } sub crc32 { my $self = shift ; $self->{Def}->crc32(); } sub adler32 { my $self = shift ; $self->{Def}->adler32(); } 1; __END__ FILEcbbf4635/FileHandle.pmpackage FileHandle; use 5.006; use strict; our($VERSION, @ISA, @EXPORT, @EXPORT_OK); $VERSION = "2.03"; require IO::File; @ISA = qw(IO::File); @EXPORT = qw(_IOFBF _IOLBF _IONBF); @EXPORT_OK = qw( pipe autoflush output_field_separator output_record_separator input_record_separator input_line_number format_page_number format_lines_per_page format_lines_left format_name format_top_name format_line_break_characters format_formfeed print printf getline getlines ); # # Everything we're willing to export, we must first import. # IO::Handle->import( grep { !defined(&$_) } @EXPORT, @EXPORT_OK ); # # Some people call "FileHandle::function", so all the functions # that were in the old FileHandle class must be imported, too. # { no strict 'refs'; my %import = ( 'IO::Handle' => [qw(DESTROY new_from_fd fdopen close fileno getc ungetc gets eof flush error clearerr setbuf setvbuf _open_mode_string)], 'IO::Seekable' => [qw(seek tell getpos setpos)], 'IO::File' => [qw(new new_tmpfile open)] ); for my $pkg (keys %import) { for my $func (@{$import{$pkg}}) { my $c = *{"${pkg}::$func"}{CODE} or die "${pkg}::$func missing"; *$func = $c; } } } # # Specialized importer for Fcntl magic. # sub import { my $pkg = shift; my $callpkg = caller; require Exporter; Exporter::export($pkg, $callpkg, @_); # # If the Fcntl extension is available, # export its constants. # eval { require Fcntl; Exporter::export('Fcntl', $callpkg); }; } ################################################ # This is the only exported function we define; # the rest come from other classes. # sub pipe { my $r = IO::Handle->new; my $w = IO::Handle->new; CORE::pipe($r, $w) or return undef; ($r, $w); } # Rebless standard file handles bless *STDIN{IO}, "FileHandle" if ref *STDIN{IO} eq "IO::Handle"; bless *STDOUT{IO}, "FileHandle" if ref *STDOUT{IO} eq "IO::Handle"; bless *STDERR{IO}, "FileHandle" if ref *STDERR{IO} eq "IO::Handle"; 1; __END__ =head1 NAME FileHandle - supply object methods for filehandles =head1 SYNOPSIS use FileHandle; $fh = FileHandle->new; if ($fh->open("< file")) { print <$fh>; $fh->close; } $fh = FileHandle->new("> FOO"); if (defined $fh) { print $fh "bar\n"; $fh->close; } $fh = FileHandle->new("file", "r"); if (defined $fh) { print <$fh>; undef $fh; # automatically closes the file } $fh = FileHandle->new("file", O_WRONLY|O_APPEND); if (defined $fh) { print $fh "corge\n"; undef $fh; # automatically closes the file } $pos = $fh->getpos; $fh->setpos($pos); $fh->setvbuf($buffer_var, _IOLBF, 1024); ($readfh, $writefh) = FileHandle::pipe; autoflush STDOUT 1; =head1 DESCRIPTION NOTE: This class is now a front-end to the IO::* classes. C creates a C, which is a reference to a newly created symbol (see the C package). If it receives any parameters, they are passed to C; if the open fails, the C object is destroyed. Otherwise, it is returned to the caller. C creates a C like C does. It requires two parameters, which are passed to C; if the fdopen fails, the C object is destroyed. Otherwise, it is returned to the caller. C accepts one parameter or two. With one parameter, it is just a front end for the built-in C function. With two parameters, the first parameter is a filename that may include whitespace or other special characters, and the second parameter is the open mode, optionally followed by a file permission value. If C receives a Perl mode string (">", "+<", etc.) or a POSIX fopen() mode string ("w", "r+", etc.), it uses the basic Perl C operator. If C is given a numeric mode, it passes that mode and the optional permissions value to the Perl C operator. For convenience, C tries to import the O_XXX constants from the Fcntl module. If dynamic loading is not available, this may fail, but the rest of FileHandle will still work. C is like C except that its first parameter is not a filename but rather a file handle name, a FileHandle object, or a file descriptor number. If the C functions fgetpos() and fsetpos() are available, then C returns an opaque value that represents the current position of the FileHandle, and C uses that value to return to a previously visited position. If the C function setvbuf() is available, then C sets the buffering policy for the FileHandle. The calling sequence for the Perl function is the same as its C counterpart, including the macros C<_IOFBF>, C<_IOLBF>, and C<_IONBF>, except that the buffer parameter specifies a scalar variable to use as a buffer. WARNING: A variable used as a buffer by C must not be modified in any way until the FileHandle is closed or until C is called again, or memory corruption may result! See L for complete descriptions of each of the following supported C methods, which are just front ends for the corresponding built-in functions: close fileno getc gets eof clearerr seek tell See L for complete descriptions of each of the following supported C methods: autoflush output_field_separator output_record_separator input_record_separator input_line_number format_page_number format_lines_per_page format_lines_left format_name format_top_name format_line_break_characters format_formfeed Furthermore, for doing normal I/O you might need these: =over 4 =item $fh->print See L. =item $fh->printf See L. =item $fh->getline This works like <$fh> described in L except that it's more readable and can be safely called in a list context but still returns just one line. =item $fh->getlines This works like <$fh> when called in a list context to read all the remaining lines in a file, except that it's more readable. It will also croak() if accidentally called in a scalar context. =back There are many other functions available since FileHandle is descended from IO::File, IO::Seekable, and IO::Handle. Please see those respective pages for documentation on more functions. =head1 SEE ALSO The B extension, L, L. =cut FILE66058cac/File/Temp.pm]package File::Temp; # git description: v0.2310-3-gc7148fe # ABSTRACT: return name and handle of a temporary file safely our $VERSION = '0.2311'; #pod =begin :__INTERNALS #pod #pod =head1 PORTABILITY #pod #pod This section is at the top in order to provide easier access to #pod porters. It is not expected to be rendered by a standard pod #pod formatting tool. Please skip straight to the SYNOPSIS section if you #pod are not trying to port this module to a new platform. #pod #pod This module is designed to be portable across operating systems and it #pod currently supports Unix, VMS, DOS, OS/2, Windows and Mac OS #pod (Classic). When porting to a new OS there are generally three main #pod issues that have to be solved: #pod #pod =over 4 #pod #pod =item * #pod #pod Can the OS unlink an open file? If it can not then the #pod C<_can_unlink_opened_file> method should be modified. #pod #pod =item * #pod #pod Are the return values from C reliable? By default all the #pod return values from C are compared when unlinking a temporary #pod file using the filename and the handle. Operating systems other than #pod unix do not always have valid entries in all fields. If utility function #pod C fails then the C comparison should be #pod modified accordingly. #pod #pod =item * #pod #pod Security. Systems that can not support a test for the sticky bit #pod on a directory can not use the MEDIUM and HIGH security tests. #pod The C<_can_do_level> method should be modified accordingly. #pod #pod =back #pod #pod =end :__INTERNALS #pod #pod =head1 SYNOPSIS #pod #pod use File::Temp qw/ tempfile tempdir /; #pod #pod $fh = tempfile(); #pod ($fh, $filename) = tempfile(); #pod #pod ($fh, $filename) = tempfile( $template, DIR => $dir); #pod ($fh, $filename) = tempfile( $template, SUFFIX => '.dat'); #pod ($fh, $filename) = tempfile( $template, TMPDIR => 1 ); #pod #pod binmode( $fh, ":utf8" ); #pod #pod $dir = tempdir( CLEANUP => 1 ); #pod ($fh, $filename) = tempfile( DIR => $dir ); #pod #pod Object interface: #pod #pod require File::Temp; #pod use File::Temp (); #pod use File::Temp qw/ :seekable /; #pod #pod $fh = File::Temp->new(); #pod $fname = $fh->filename; #pod #pod $fh = File::Temp->new(TEMPLATE => $template); #pod $fname = $fh->filename; #pod #pod $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.dat' ); #pod print $tmp "Some data\n"; #pod print "Filename is $tmp\n"; #pod $tmp->seek( 0, SEEK_END ); #pod #pod $dir = File::Temp->newdir(); # CLEANUP => 1 by default #pod #pod The following interfaces are provided for compatibility with #pod existing APIs. They should not be used in new code. #pod #pod MkTemp family: #pod #pod use File::Temp qw/ :mktemp /; #pod #pod ($fh, $file) = mkstemp( "tmpfileXXXXX" ); #pod ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix); #pod #pod $tmpdir = mkdtemp( $template ); #pod #pod $unopened_file = mktemp( $template ); #pod #pod POSIX functions: #pod #pod use File::Temp qw/ :POSIX /; #pod #pod $file = tmpnam(); #pod $fh = tmpfile(); #pod #pod ($fh, $file) = tmpnam(); #pod #pod Compatibility functions: #pod #pod $unopened_file = File::Temp::tempnam( $dir, $pfx ); #pod #pod =head1 DESCRIPTION #pod #pod C can be used to create and open temporary files in a safe #pod way. There is both a function interface and an object-oriented #pod interface. The File::Temp constructor or the tempfile() function can #pod be used to return the name and the open filehandle of a temporary #pod file. The tempdir() function can be used to create a temporary #pod directory. #pod #pod The security aspect of temporary file creation is emphasized such that #pod a filehandle and filename are returned together. This helps guarantee #pod that a race condition can not occur where the temporary file is #pod created by another process between checking for the existence of the #pod file and its opening. Additional security levels are provided to #pod check, for example, that the sticky bit is set on world writable #pod directories. See L<"safe_level"> for more information. #pod #pod For compatibility with popular C library functions, Perl implementations of #pod the mkstemp() family of functions are provided. These are, mkstemp(), #pod mkstemps(), mkdtemp() and mktemp(). #pod #pod Additionally, implementations of the standard L #pod tmpnam() and tmpfile() functions are provided if required. #pod #pod Implementations of mktemp(), tmpnam(), and tempnam() are provided, #pod but should be used with caution since they return only a filename #pod that was valid when function was called, so cannot guarantee #pod that the file will not exist by the time the caller opens the filename. #pod #pod Filehandles returned by these functions support the seekable methods. #pod #pod =cut # Toolchain targets v5.8.1, but we'll try to support back to v5.6 anyway. # It might be possible to make this v5.5, but many v5.6isms are creeping # into the code and tests. use 5.006; use strict; use Carp; use File::Spec 0.8; use Cwd (); use File::Path 2.06 qw/ rmtree /; use Fcntl 1.03; use IO::Seekable; # For SEEK_* use Errno; use Scalar::Util 'refaddr'; require VMS::Stdio if $^O eq 'VMS'; # pre-emptively load Carp::Heavy. If we don't when we run out of file # handles and attempt to call croak() we get an error message telling # us that Carp::Heavy won't load rather than an error telling us we # have run out of file handles. We either preload croak() or we # switch the calls to croak from _gettemp() to use die. eval { require Carp::Heavy; }; # Need the Symbol package if we are running older perl require Symbol if $] < 5.006; ### For the OO interface use parent 0.221 qw/ IO::Handle IO::Seekable /; use overload '""' => "STRINGIFY", '0+' => "NUMIFY", fallback => 1; our $DEBUG = 0; our $KEEP_ALL = 0; # We are exporting functions use Exporter 5.57 'import'; # 5.57 lets us import 'import' # Export list - to allow fine tuning of export table our @EXPORT_OK = qw{ tempfile tempdir tmpnam tmpfile mktemp mkstemp mkstemps mkdtemp unlink0 cleanup SEEK_SET SEEK_CUR SEEK_END }; # Groups of functions for export our %EXPORT_TAGS = ( 'POSIX' => [qw/ tmpnam tmpfile /], 'mktemp' => [qw/ mktemp mkstemp mkstemps mkdtemp/], 'seekable' => [qw/ SEEK_SET SEEK_CUR SEEK_END /], ); # add contents of these tags to @EXPORT Exporter::export_tags('POSIX','mktemp','seekable'); # This is a list of characters that can be used in random filenames my @CHARS = (qw/ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 _ /); # Maximum number of tries to make a temp file before failing use constant MAX_TRIES => 1000; # Minimum number of X characters that should be in a template use constant MINX => 4; # Default template when no template supplied use constant TEMPXXX => 'X' x 10; # Constants for the security level use constant STANDARD => 0; use constant MEDIUM => 1; use constant HIGH => 2; # OPENFLAGS. If we defined the flag to use with Sysopen here this gives # us an optimisation when many temporary files are requested my $OPENFLAGS = O_CREAT | O_EXCL | O_RDWR; my $LOCKFLAG; unless ($^O eq 'MacOS') { for my $oflag (qw/ NOFOLLOW BINARY LARGEFILE NOINHERIT /) { my ($bit, $func) = (0, "Fcntl::O_" . $oflag); no strict 'refs'; $OPENFLAGS |= $bit if eval { # Make sure that redefined die handlers do not cause problems # e.g. CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; $bit = &$func(); 1; }; } # Special case O_EXLOCK $LOCKFLAG = eval { local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; &Fcntl::O_EXLOCK(); }; } # On some systems the O_TEMPORARY flag can be used to tell the OS # to automatically remove the file when it is closed. This is fine # in most cases but not if tempfile is called with UNLINK=>0 and # the filename is requested -- in the case where the filename is to # be passed to another routine. This happens on windows. We overcome # this by using a second open flags variable my $OPENTEMPFLAGS = $OPENFLAGS; unless ($^O eq 'MacOS') { for my $oflag (qw/ TEMPORARY /) { my ($bit, $func) = (0, "Fcntl::O_" . $oflag); local($@); no strict 'refs'; $OPENTEMPFLAGS |= $bit if eval { # Make sure that redefined die handlers do not cause problems # e.g. CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; $bit = &$func(); 1; }; } } # Private hash tracking which files have been created by each process id via the OO interface my %FILES_CREATED_BY_OBJECT; # INTERNAL ROUTINES - not to be used outside of package # Generic routine for getting a temporary filename # modelled on OpenBSD _gettemp() in mktemp.c # The template must contain X's that are to be replaced # with the random values # Arguments: # TEMPLATE - string containing the XXXXX's that is converted # to a random filename and opened if required # Optionally, a hash can also be supplied containing specific options # "open" => if true open the temp file, else just return the name # default is 0 # "mkdir"=> if true, we are creating a temp directory rather than tempfile # default is 0 # "suffixlen" => number of characters at end of PATH to be ignored. # default is 0. # "unlink_on_close" => indicates that, if possible, the OS should remove # the file as soon as it is closed. Usually indicates # use of the O_TEMPORARY flag to sysopen. # Usually irrelevant on unix # "use_exlock" => Indicates that O_EXLOCK should be used. Default is false. # "file_permissions" => file permissions for sysopen(). Default is 0600. # Optionally a reference to a scalar can be passed into the function # On error this will be used to store the reason for the error # "ErrStr" => \$errstr # "open" and "mkdir" can not both be true # "unlink_on_close" is not used when "mkdir" is true. # The default options are equivalent to mktemp(). # Returns: # filehandle - open file handle (if called with doopen=1, else undef) # temp name - name of the temp file or directory # For example: # ($fh, $name) = _gettemp($template, "open" => 1); # for the current version, failures are associated with # stored in an error string and returned to give the reason whilst debugging # This routine is not called by any external function sub _gettemp { croak 'Usage: ($fh, $name) = _gettemp($template, OPTIONS);' unless scalar(@_) >= 1; # the internal error string - expect it to be overridden # Need this in case the caller decides not to supply us a value # need an anonymous scalar my $tempErrStr; # Default options my %options = ( "open" => 0, "mkdir" => 0, "suffixlen" => 0, "unlink_on_close" => 0, "use_exlock" => 0, "ErrStr" => \$tempErrStr, "file_permissions" => undef, ); # Read the template my $template = shift; if (ref($template)) { # Use a warning here since we have not yet merged ErrStr carp "File::Temp::_gettemp: template must not be a reference"; return (); } # Check that the number of entries on stack are even if (scalar(@_) % 2 != 0) { # Use a warning here since we have not yet merged ErrStr carp "File::Temp::_gettemp: Must have even number of options"; return (); } # Read the options and merge with defaults %options = (%options, @_) if @_; # Make sure the error string is set to undef ${$options{ErrStr}} = undef; # Can not open the file and make a directory in a single call if ($options{"open"} && $options{"mkdir"}) { ${$options{ErrStr}} = "doopen and domkdir can not both be true\n"; return (); } # Find the start of the end of the Xs (position of last X) # Substr starts from 0 my $start = length($template) - 1 - $options{"suffixlen"}; # Check that we have at least MINX x X (e.g. 'XXXX") at the end of the string # (taking suffixlen into account). Any fewer is insecure. # Do it using substr - no reason to use a pattern match since # we know where we are looking and what we are looking for if (substr($template, $start - MINX + 1, MINX) ne 'X' x MINX) { ${$options{ErrStr}} = "The template must end with at least ". MINX . " 'X' characters\n"; return (); } # Replace all the X at the end of the substring with a # random character or just all the XX at the end of a full string. # Do it as an if, since the suffix adjusts which section to replace # and suffixlen=0 returns nothing if used in the substr directly # and generate a full path from the template my $path = _replace_XX($template, $options{"suffixlen"}); # Split the path into constituent parts - eventually we need to check # whether the directory exists # We need to know whether we are making a temp directory # or a tempfile my ($volume, $directories, $file); my $parent; # parent directory if ($options{"mkdir"}) { # There is no filename at the end ($volume, $directories, $file) = File::Spec->splitpath( $path, 1); # The parent is then $directories without the last directory # Split the directory and put it back together again my @dirs = File::Spec->splitdir($directories); # If @dirs only has one entry (i.e. the directory template) that means # we are in the current directory if ($#dirs == 0) { $parent = File::Spec->curdir; } else { if ($^O eq 'VMS') { # need volume to avoid relative dir spec $parent = File::Spec->catdir($volume, @dirs[0..$#dirs-1]); $parent = 'sys$disk:[]' if $parent eq ''; } else { # Put it back together without the last one $parent = File::Spec->catdir(@dirs[0..$#dirs-1]); # ...and attach the volume (no filename) $parent = File::Spec->catpath($volume, $parent, ''); } } } else { # Get rid of the last filename (use File::Basename for this?) ($volume, $directories, $file) = File::Spec->splitpath( $path ); # Join up without the file part $parent = File::Spec->catpath($volume,$directories,''); # If $parent is empty replace with curdir $parent = File::Spec->curdir unless $directories ne ''; } # Check that the parent directories exist # Do this even for the case where we are simply returning a name # not a file -- no point returning a name that includes a directory # that does not exist or is not writable unless (-e $parent) { ${$options{ErrStr}} = "Parent directory ($parent) does not exist"; return (); } unless (-d $parent) { ${$options{ErrStr}} = "Parent directory ($parent) is not a directory"; return (); } # Check the stickiness of the directory and chown giveaway if required # If the directory is world writable the sticky bit # must be set if (File::Temp->safe_level == MEDIUM) { my $safeerr; unless (_is_safe($parent,\$safeerr)) { ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)"; return (); } } elsif (File::Temp->safe_level == HIGH) { my $safeerr; unless (_is_verysafe($parent, \$safeerr)) { ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)"; return (); } } my $perms = $options{file_permissions}; my $has_perms = defined $perms; $perms = 0600 unless $has_perms; # Now try MAX_TRIES time to open the file for (my $i = 0; $i < MAX_TRIES; $i++) { # Try to open the file if requested if ($options{"open"}) { my $fh; # If we are running before perl5.6.0 we can not auto-vivify if ($] < 5.006) { $fh = &Symbol::gensym; } # Try to make sure this will be marked close-on-exec # XXX: Win32 doesn't respect this, nor the proper fcntl, # but may have O_NOINHERIT. This may or may not be in Fcntl. local $^F = 2; # Attempt to open the file my $open_success = undef; if ( $^O eq 'VMS' and $options{"unlink_on_close"} && !$KEEP_ALL) { # make it auto delete on close by setting FAB$V_DLT bit $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, $perms, 'fop=dlt'); $open_success = $fh; } else { my $flags = ( ($options{"unlink_on_close"} && !$KEEP_ALL) ? $OPENTEMPFLAGS : $OPENFLAGS ); $flags |= $LOCKFLAG if (defined $LOCKFLAG && $options{use_exlock}); $open_success = sysopen($fh, $path, $flags, $perms); } if ( $open_success ) { # in case of odd umask force rw chmod($perms, $path) unless $has_perms; # Opened successfully - return file handle and name return ($fh, $path); } else { # Error opening file - abort with error # if the reason was anything but EEXIST unless ($!{EEXIST}) { ${$options{ErrStr}} = "Could not create temp file $path: $!"; return (); } # Loop round for another try } } elsif ($options{"mkdir"}) { # Open the temp directory if (mkdir( $path, 0700)) { # in case of odd umask chmod(0700, $path); return undef, $path; } else { # Abort with error if the reason for failure was anything # except EEXIST unless ($!{EEXIST}) { ${$options{ErrStr}} = "Could not create directory $path: $!"; return (); } # Loop round for another try } } else { # Return true if the file can not be found # Directory has been checked previously return (undef, $path) unless -e $path; # Try again until MAX_TRIES } # Did not successfully open the tempfile/dir # so try again with a different set of random letters # No point in trying to increment unless we have only # 1 X say and the randomness could come up with the same # file MAX_TRIES in a row. # Store current attempt - in principle this implies that the # 3rd time around the open attempt that the first temp file # name could be generated again. Probably should store each # attempt and make sure that none are repeated my $original = $path; my $counter = 0; # Stop infinite loop my $MAX_GUESS = 50; do { # Generate new name from original template $path = _replace_XX($template, $options{"suffixlen"}); $counter++; } until ($path ne $original || $counter > $MAX_GUESS); # Check for out of control looping if ($counter > $MAX_GUESS) { ${$options{ErrStr}} = "Tried to get a new temp name different to the previous value $MAX_GUESS times.\nSomething wrong with template?? ($template)"; return (); } } # If we get here, we have run out of tries ${ $options{ErrStr} } = "Have exceeded the maximum number of attempts (" . MAX_TRIES . ") to open temp file/dir"; return (); } # Internal routine to replace the XXXX... with random characters # This has to be done by _gettemp() every time it fails to # open a temp file/dir # Arguments: $template (the template with XXX), # $ignore (number of characters at end to ignore) # Returns: modified template sub _replace_XX { croak 'Usage: _replace_XX($template, $ignore)' unless scalar(@_) == 2; my ($path, $ignore) = @_; # Do it as an if, since the suffix adjusts which section to replace # and suffixlen=0 returns nothing if used in the substr directly # Alternatively, could simply set $ignore to length($path)-1 # Don't want to always use substr when not required though. my $end = ( $] >= 5.006 ? "\\z" : "\\Z" ); if ($ignore) { substr($path, 0, - $ignore) =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge; } else { $path =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge; } return $path; } # Internal routine to force a temp file to be writable after # it is created so that we can unlink it. Windows seems to occasionally # force a file to be readonly when written to certain temp locations sub _force_writable { my $file = shift; chmod 0600, $file; } # internal routine to check to see if the directory is safe # First checks to see if the directory is not owned by the # current user or root. Then checks to see if anyone else # can write to the directory and if so, checks to see if # it has the sticky bit set # Will not work on systems that do not support sticky bit #Args: directory path to check # Optionally: reference to scalar to contain error message # Returns true if the path is safe and false otherwise. # Returns undef if can not even run stat() on the path # This routine based on version written by Tom Christiansen # Presumably, by the time we actually attempt to create the # file or directory in this directory, it may not be safe # anymore... Have to run _is_safe directly after the open. sub _is_safe { my $path = shift; my $err_ref = shift; # Stat path my @info = stat($path); unless (scalar(@info)) { $$err_ref = "stat(path) returned no values"; return 0; } ; return 1 if $^O eq 'VMS'; # owner delete control at file level # Check to see whether owner is neither superuser (or a system uid) nor me # Use the effective uid from the $> variable # UID is in [4] if ($info[4] > File::Temp->top_system_uid() && $info[4] != $>) { Carp::cluck(sprintf "uid=$info[4] topuid=%s euid=$> path='$path'", File::Temp->top_system_uid()); $$err_ref = "Directory owned neither by root nor the current user" if ref($err_ref); return 0; } # check whether group or other can write file # use 066 to detect either reading or writing # use 022 to check writability # Do it with S_IWOTH and S_IWGRP for portability (maybe) # mode is in info[2] if (($info[2] & &Fcntl::S_IWGRP) || # Is group writable? ($info[2] & &Fcntl::S_IWOTH) ) { # Is world writable? # Must be a directory unless (-d $path) { $$err_ref = "Path ($path) is not a directory" if ref($err_ref); return 0; } # Must have sticky bit set unless (-k $path) { $$err_ref = "Sticky bit not set on $path when dir is group|world writable" if ref($err_ref); return 0; } } return 1; } # Internal routine to check whether a directory is safe # for temp files. Safer than _is_safe since it checks for # the possibility of chown giveaway and if that is a possibility # checks each directory in the path to see if it is safe (with _is_safe) # If _PC_CHOWN_RESTRICTED is not set, does the full test of each # directory anyway. # Takes optional second arg as scalar ref to error reason sub _is_verysafe { # Need POSIX - but only want to bother if really necessary due to overhead require POSIX; my $path = shift; print "_is_verysafe testing $path\n" if $DEBUG; return 1 if $^O eq 'VMS'; # owner delete control at file level my $err_ref = shift; # Should Get the value of _PC_CHOWN_RESTRICTED if it is defined # and If it is not there do the extensive test local($@); my $chown_restricted; $chown_restricted = &POSIX::_PC_CHOWN_RESTRICTED() if eval { &POSIX::_PC_CHOWN_RESTRICTED(); 1}; # If chown_resticted is set to some value we should test it if (defined $chown_restricted) { # Return if the current directory is safe return _is_safe($path,$err_ref) if POSIX::sysconf( $chown_restricted ); } # To reach this point either, the _PC_CHOWN_RESTRICTED symbol # was not available or the symbol was there but chown giveaway # is allowed. Either way, we now have to test the entire tree for # safety. # Convert path to an absolute directory if required unless (File::Spec->file_name_is_absolute($path)) { $path = File::Spec->rel2abs($path); } # Split directory into components - assume no file my ($volume, $directories, undef) = File::Spec->splitpath( $path, 1); # Slightly less efficient than having a function in File::Spec # to chop off the end of a directory or even a function that # can handle ../ in a directory tree # Sometimes splitdir() returns a blank at the end # so we will probably check the bottom directory twice in some cases my @dirs = File::Spec->splitdir($directories); # Concatenate one less directory each time around foreach my $pos (0.. $#dirs) { # Get a directory name my $dir = File::Spec->catpath($volume, File::Spec->catdir(@dirs[0.. $#dirs - $pos]), '' ); print "TESTING DIR $dir\n" if $DEBUG; # Check the directory return 0 unless _is_safe($dir,$err_ref); } return 1; } # internal routine to determine whether unlink works on this # platform for files that are currently open. # Returns true if we can, false otherwise. # Currently WinNT, OS/2 and VMS can not unlink an opened file # On VMS this is because the O_EXCL flag is used to open the # temporary file. Currently I do not know enough about the issues # on VMS to decide whether O_EXCL is a requirement. sub _can_unlink_opened_file { if (grep $^O eq $_, qw/MSWin32 os2 VMS dos MacOS haiku/) { return 0; } else { return 1; } } # internal routine to decide which security levels are allowed # see safe_level() for more information on this # Controls whether the supplied security level is allowed # $cando = _can_do_level( $level ) sub _can_do_level { # Get security level my $level = shift; # Always have to be able to do STANDARD return 1 if $level == STANDARD; # Currently, the systems that can do HIGH or MEDIUM are identical if ( $^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'MacOS' || $^O eq 'mpeix') { return 0; } else { return 1; } } # This routine sets up a deferred unlinking of a specified # filename and filehandle. It is used in the following cases: # - Called by unlink0 if an opened file can not be unlinked # - Called by tempfile() if files are to be removed on shutdown # - Called by tempdir() if directories are to be removed on shutdown # Arguments: # _deferred_unlink( $fh, $fname, $isdir ); # # - filehandle (so that it can be explicitly closed if open # - filename (the thing we want to remove) # - isdir (flag to indicate that we are being given a directory) # [and hence no filehandle] # Status is not referred to since all the magic is done with an END block { # Will set up two lexical variables to contain all the files to be # removed. One array for files, another for directories They will # only exist in this block. # This means we only have to set up a single END block to remove # all files. # in order to prevent child processes inadvertently deleting the parent # temp files we use a hash to store the temp files and directories # created by a particular process id. # %files_to_unlink contains values that are references to an array of # array references containing the filehandle and filename associated with # the temp file. my (%files_to_unlink, %dirs_to_unlink); # Set up an end block to use these arrays END { local($., $@, $!, $^E, $?); cleanup(at_exit => 1); } # Cleanup function. Always triggered on END (with at_exit => 1) but # can be invoked manually. sub cleanup { my %h = @_; my $at_exit = delete $h{at_exit}; $at_exit = 0 if not defined $at_exit; { my @k = sort keys %h; die "unrecognized parameters: @k" if @k } if (!$KEEP_ALL) { # Files my @files = (exists $files_to_unlink{$$} ? @{ $files_to_unlink{$$} } : () ); foreach my $file (@files) { # close the filehandle without checking its state # in order to make real sure that this is closed # if its already closed then I don't care about the answer # probably a better way to do this close($file->[0]); # file handle is [0] if (-f $file->[1]) { # file name is [1] _force_writable( $file->[1] ); # for windows unlink $file->[1] or warn "Error removing ".$file->[1]; } } # Dirs my @dirs = (exists $dirs_to_unlink{$$} ? @{ $dirs_to_unlink{$$} } : () ); my ($cwd, $cwd_to_remove); foreach my $dir (@dirs) { if (-d $dir) { # Some versions of rmtree will abort if you attempt to remove # the directory you are sitting in. For automatic cleanup # at program exit, we avoid this by chdir()ing out of the way # first. If not at program exit, it's best not to mess with the # current directory, so just let it fail with a warning. if ($at_exit) { $cwd = Cwd::abs_path(File::Spec->curdir) if not defined $cwd; my $abs = Cwd::abs_path($dir); if ($abs eq $cwd) { $cwd_to_remove = $dir; next; } } eval { rmtree($dir, $DEBUG, 0); }; warn $@ if ($@ && $^W); } } if (defined $cwd_to_remove) { # We do need to clean up the current directory, and everything # else is done, so get out of there and remove it. chdir $cwd_to_remove or die "cannot chdir to $cwd_to_remove: $!"; my $updir = File::Spec->updir; chdir $updir or die "cannot chdir to $updir: $!"; eval { rmtree($cwd_to_remove, $DEBUG, 0); }; warn $@ if ($@ && $^W); } # clear the arrays @{ $files_to_unlink{$$} } = () if exists $files_to_unlink{$$}; @{ $dirs_to_unlink{$$} } = () if exists $dirs_to_unlink{$$}; } } # This is the sub called to register a file for deferred unlinking # This could simply store the input parameters and defer everything # until the END block. For now we do a bit of checking at this # point in order to make sure that (1) we have a file/dir to delete # and (2) we have been called with the correct arguments. sub _deferred_unlink { croak 'Usage: _deferred_unlink($fh, $fname, $isdir)' unless scalar(@_) == 3; my ($fh, $fname, $isdir) = @_; warn "Setting up deferred removal of $fname\n" if $DEBUG; # make sure we save the absolute path for later cleanup # OK to untaint because we only ever use this internally # as a file path, never interpolating into the shell $fname = Cwd::abs_path($fname); ($fname) = $fname =~ /^(.*)$/; # If we have a directory, check that it is a directory if ($isdir) { if (-d $fname) { # Directory exists so store it # first on VMS turn []foo into [.foo] for rmtree $fname = VMS::Filespec::vmspath($fname) if $^O eq 'VMS'; $dirs_to_unlink{$$} = [] unless exists $dirs_to_unlink{$$}; push (@{ $dirs_to_unlink{$$} }, $fname); } else { carp "Request to remove directory $fname could not be completed since it does not exist!\n" if $^W; } } else { if (-f $fname) { # file exists so store handle and name for later removal $files_to_unlink{$$} = [] unless exists $files_to_unlink{$$}; push(@{ $files_to_unlink{$$} }, [$fh, $fname]); } else { carp "Request to remove file $fname could not be completed since it is not there!\n" if $^W; } } } } # normalize argument keys to upper case and do consistent handling # of leading template vs TEMPLATE sub _parse_args { my $leading_template = (scalar(@_) % 2 == 1 ? shift(@_) : '' ); my %args = @_; %args = map +(uc($_) => $args{$_}), keys %args; # template (store it in an array so that it will # disappear from the arg list of tempfile) my @template = ( exists $args{TEMPLATE} ? $args{TEMPLATE} : $leading_template ? $leading_template : () ); delete $args{TEMPLATE}; return( \@template, \%args ); } #pod =head1 OBJECT-ORIENTED INTERFACE #pod #pod This is the primary interface for interacting with #pod C. Using the OO interface a temporary file can be created #pod when the object is constructed and the file can be removed when the #pod object is no longer required. #pod #pod Note that there is no method to obtain the filehandle from the #pod C object. The object itself acts as a filehandle. The object #pod isa C and isa C so all those methods are #pod available. #pod #pod Also, the object is configured such that it stringifies to the name of the #pod temporary file and so can be compared to a filename directly. It numifies #pod to the C the same as other handles and so can be compared to other #pod handles with C<==>. #pod #pod $fh eq $filename # as a string #pod $fh != \*STDOUT # as a number #pod #pod Available since 0.14. #pod #pod =over 4 #pod #pod =item B #pod #pod Create a temporary file object. #pod #pod my $tmp = File::Temp->new(); #pod #pod by default the object is constructed as if C #pod was called without options, but with the additional behaviour #pod that the temporary file is removed by the object destructor #pod if UNLINK is set to true (the default). #pod #pod Supported arguments are the same as for C: UNLINK #pod (defaulting to true), DIR, EXLOCK, PERMS and SUFFIX. #pod Additionally, the filename #pod template is specified using the TEMPLATE option. The OPEN option #pod is not supported (the file is always opened). #pod #pod $tmp = File::Temp->new( TEMPLATE => 'tempXXXXX', #pod DIR => 'mydir', #pod SUFFIX => '.dat'); #pod #pod Arguments are case insensitive. #pod #pod Can call croak() if an error occurs. #pod #pod Available since 0.14. #pod #pod TEMPLATE available since 0.23 #pod #pod =cut sub new { my $proto = shift; my $class = ref($proto) || $proto; my ($maybe_template, $args) = _parse_args(@_); # see if they are unlinking (defaulting to yes) my $unlink = (exists $args->{UNLINK} ? $args->{UNLINK} : 1 ); delete $args->{UNLINK}; # Protect OPEN delete $args->{OPEN}; # Open the file and retain file handle and file name my ($fh, $path) = tempfile( @$maybe_template, %$args ); print "Tmp: $fh - $path\n" if $DEBUG; # Store the filename in the scalar slot ${*$fh} = $path; # Cache the filename by pid so that the destructor can decide whether to remove it $FILES_CREATED_BY_OBJECT{$$}{$path} = 1; # Store unlink information in hash slot (plus other constructor info) %{*$fh} = %$args; # create the object bless $fh, $class; # final method-based configuration $fh->unlink_on_destroy( $unlink ); return $fh; } #pod =item B #pod #pod Create a temporary directory using an object oriented interface. #pod #pod $dir = File::Temp->newdir(); #pod #pod By default the directory is deleted when the object goes out of scope. #pod #pod Supports the same options as the C function. Note that directories #pod created with this method default to CLEANUP => 1. #pod #pod $dir = File::Temp->newdir( $template, %options ); #pod #pod A template may be specified either with a leading template or #pod with a TEMPLATE argument. #pod #pod Available since 0.19. #pod #pod TEMPLATE available since 0.23. #pod #pod =cut sub newdir { my $self = shift; my ($maybe_template, $args) = _parse_args(@_); # handle CLEANUP without passing CLEANUP to tempdir my $cleanup = (exists $args->{CLEANUP} ? $args->{CLEANUP} : 1 ); delete $args->{CLEANUP}; my $tempdir = tempdir( @$maybe_template, %$args); # get a safe absolute path for cleanup, just like # happens in _deferred_unlink my $real_dir = Cwd::abs_path( $tempdir ); ($real_dir) = $real_dir =~ /^(.*)$/; return bless { DIRNAME => $tempdir, REALNAME => $real_dir, CLEANUP => $cleanup, LAUNCHPID => $$, }, "File::Temp::Dir"; } #pod =item B #pod #pod Return the name of the temporary file associated with this object #pod (if the object was created using the "new" constructor). #pod #pod $filename = $tmp->filename; #pod #pod This method is called automatically when the object is used as #pod a string. #pod #pod Current API available since 0.14 #pod #pod =cut sub filename { my $self = shift; return ${*$self}; } sub STRINGIFY { my $self = shift; return $self->filename; } # For reference, can't use '0+'=>\&Scalar::Util::refaddr directly because # refaddr() demands one parameter only, whereas overload.pm calls with three # even for unary operations like '0+'. sub NUMIFY { return refaddr($_[0]); } #pod =item B #pod #pod Return the name of the temporary directory associated with this #pod object (if the object was created using the "newdir" constructor). #pod #pod $dirname = $tmpdir->dirname; #pod #pod This method is called automatically when the object is used in string context. #pod #pod =item B #pod #pod Control whether the file is unlinked when the object goes out of scope. #pod The file is removed if this value is true and $KEEP_ALL is not. #pod #pod $fh->unlink_on_destroy( 1 ); #pod #pod Default is for the file to be removed. #pod #pod Current API available since 0.15 #pod #pod =cut sub unlink_on_destroy { my $self = shift; if (@_) { ${*$self}{UNLINK} = shift; } return ${*$self}{UNLINK}; } #pod =item B #pod #pod When the object goes out of scope, the destructor is called. This #pod destructor will attempt to unlink the file (using L) #pod if the constructor was called with UNLINK set to 1 (the default state #pod if UNLINK is not specified). #pod #pod No error is given if the unlink fails. #pod #pod If the object has been passed to a child process during a fork, the #pod file will be deleted when the object goes out of scope in the parent. #pod #pod For a temporary directory object the directory will be removed unless #pod the CLEANUP argument was used in the constructor (and set to false) or #pod C was modified after creation. Note that if a temp #pod directory is your current directory, it cannot be removed - a warning #pod will be given in this case. C out of the directory before #pod letting the object go out of scope. #pod #pod If the global variable $KEEP_ALL is true, the file or directory #pod will not be removed. #pod #pod =cut sub DESTROY { local($., $@, $!, $^E, $?); my $self = shift; # Make sure we always remove the file from the global hash # on destruction. This prevents the hash from growing uncontrollably # and post-destruction there is no reason to know about the file. my $file = $self->filename; my $was_created_by_proc; if (exists $FILES_CREATED_BY_OBJECT{$$}{$file}) { $was_created_by_proc = 1; delete $FILES_CREATED_BY_OBJECT{$$}{$file}; } if (${*$self}{UNLINK} && !$KEEP_ALL) { print "# ---------> Unlinking $self\n" if $DEBUG; # only delete if this process created it return unless $was_created_by_proc; # The unlink1 may fail if the file has been closed # by the caller. This leaves us with the decision # of whether to refuse to remove the file or simply # do an unlink without test. Seems to be silly # to do this when we are trying to be careful # about security _force_writable( $file ); # for windows unlink1( $self, $file ) or unlink($file); } } #pod =back #pod #pod =head1 FUNCTIONS #pod #pod This section describes the recommended interface for generating #pod temporary files and directories. #pod #pod =over 4 #pod #pod =item B #pod #pod This is the basic function to generate temporary files. #pod The behaviour of the file can be changed using various options: #pod #pod $fh = tempfile(); #pod ($fh, $filename) = tempfile(); #pod #pod Create a temporary file in the directory specified for temporary #pod files, as specified by the tmpdir() function in L. #pod #pod ($fh, $filename) = tempfile($template); #pod #pod Create a temporary file in the current directory using the supplied #pod template. Trailing `X' characters are replaced with random letters to #pod generate the filename. At least four `X' characters must be present #pod at the end of the template. #pod #pod ($fh, $filename) = tempfile($template, SUFFIX => $suffix) #pod #pod Same as previously, except that a suffix is added to the template #pod after the `X' translation. Useful for ensuring that a temporary #pod filename has a particular extension when needed by other applications. #pod But see the WARNING at the end. #pod #pod ($fh, $filename) = tempfile($template, DIR => $dir); #pod #pod Translates the template as before except that a directory name #pod is specified. #pod #pod ($fh, $filename) = tempfile($template, TMPDIR => 1); #pod #pod Equivalent to specifying a DIR of "File::Spec->tmpdir", writing the file #pod into the same temporary directory as would be used if no template was #pod specified at all. #pod #pod ($fh, $filename) = tempfile($template, UNLINK => 1); #pod #pod Return the filename and filehandle as before except that the file is #pod automatically removed when the program exits (dependent on #pod $KEEP_ALL). Default is for the file to be removed if a file handle is #pod requested and to be kept if the filename is requested. In a scalar #pod context (where no filename is returned) the file is always deleted #pod either (depending on the operating system) on exit or when it is #pod closed (unless $KEEP_ALL is true when the temp file is created). #pod #pod Use the object-oriented interface if fine-grained control of when #pod a file is removed is required. #pod #pod If the template is not specified, a template is always #pod automatically generated. This temporary file is placed in tmpdir() #pod (L) unless a directory is specified explicitly with the #pod DIR option. #pod #pod $fh = tempfile( DIR => $dir ); #pod #pod If called in scalar context, only the filehandle is returned and the #pod file will automatically be deleted when closed on operating systems #pod that support this (see the description of tmpfile() elsewhere in this #pod document). This is the preferred mode of operation, as if you only #pod have a filehandle, you can never create a race condition by fumbling #pod with the filename. On systems that can not unlink an open file or can #pod not mark a file as temporary when it is opened (for example, Windows #pod NT uses the C flag) the file is marked for deletion when #pod the program ends (equivalent to setting UNLINK to 1). The C #pod flag is ignored if present. #pod #pod (undef, $filename) = tempfile($template, OPEN => 0); #pod #pod This will return the filename based on the template but #pod will not open this file. Cannot be used in conjunction with #pod UNLINK set to true. Default is to always open the file #pod to protect from possible race conditions. A warning is issued #pod if warnings are turned on. Consider using the tmpnam() #pod and mktemp() functions described elsewhere in this document #pod if opening the file is not required. #pod #pod To open the temporary filehandle with O_EXLOCK (open with exclusive #pod file lock) use C<< EXLOCK=>1 >>. This is supported only by some #pod operating systems (most notably BSD derived systems). By default #pod EXLOCK will be false. Former C versions set EXLOCK to #pod true, so to be sure to get an unlocked filehandle also with older #pod versions, explicitly set C<< EXLOCK=>0 >>. #pod #pod ($fh, $filename) = tempfile($template, EXLOCK => 1); #pod #pod By default, the temp file is created with 0600 file permissions. #pod Use C to change this: #pod #pod ($fh, $filename) = tempfile($template, PERMS => 0666); #pod #pod Options can be combined as required. #pod #pod Will croak() if there is an error. #pod #pod Available since 0.05. #pod #pod UNLINK flag available since 0.10. #pod #pod TMPDIR flag available since 0.19. #pod #pod EXLOCK flag available since 0.19. #pod #pod PERMS flag available since 0.2310. #pod #pod =cut sub tempfile { if ( @_ && $_[0] eq 'File::Temp' ) { croak "'tempfile' can't be called as a method"; } # Can not check for argument count since we can have any # number of args # Default options my %options = ( "DIR" => undef, # Directory prefix "SUFFIX" => '', # Template suffix "UNLINK" => 0, # Do not unlink file on exit "OPEN" => 1, # Open file "TMPDIR" => 0, # Place tempfile in tempdir if template specified "EXLOCK" => 0, # Open file with O_EXLOCK "PERMS" => undef, # File permissions ); # Check to see whether we have an odd or even number of arguments my ($maybe_template, $args) = _parse_args(@_); my $template = @$maybe_template ? $maybe_template->[0] : undef; # Read the options and merge with defaults %options = (%options, %$args); # First decision is whether or not to open the file if (! $options{"OPEN"}) { warn "tempfile(): temporary filename requested but not opened.\nPossibly unsafe, consider using tempfile() with OPEN set to true\n" if $^W; } if ($options{"DIR"} and $^O eq 'VMS') { # on VMS turn []foo into [.foo] for concatenation $options{"DIR"} = VMS::Filespec::vmspath($options{"DIR"}); } # Construct the template # Have a choice of trying to work around the mkstemp/mktemp/tmpnam etc # functions or simply constructing a template and using _gettemp() # explicitly. Go for the latter # First generate a template if not defined and prefix the directory # If no template must prefix the temp directory if (defined $template) { # End up with current directory if neither DIR not TMPDIR are set if ($options{"DIR"}) { $template = File::Spec->catfile($options{"DIR"}, $template); } elsif ($options{TMPDIR}) { $template = File::Spec->catfile(_wrap_file_spec_tmpdir(), $template ); } } else { if ($options{"DIR"}) { $template = File::Spec->catfile($options{"DIR"}, TEMPXXX); } else { $template = File::Spec->catfile(_wrap_file_spec_tmpdir(), TEMPXXX); } } # Now add a suffix $template .= $options{"SUFFIX"}; # Determine whether we should tell _gettemp to unlink the file # On unix this is irrelevant and can be worked out after the file is # opened (simply by unlinking the open filehandle). On Windows or VMS # we have to indicate temporary-ness when we open the file. In general # we only want a true temporary file if we are returning just the # filehandle - if the user wants the filename they probably do not # want the file to disappear as soon as they close it (which may be # important if they want a child process to use the file) # For this reason, tie unlink_on_close to the return context regardless # of OS. my $unlink_on_close = ( wantarray ? 0 : 1); # Create the file my ($fh, $path, $errstr); croak "Error in tempfile() using template $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => $options{OPEN}, "mkdir" => 0, "unlink_on_close" => $unlink_on_close, "suffixlen" => length($options{SUFFIX}), "ErrStr" => \$errstr, "use_exlock" => $options{EXLOCK}, "file_permissions" => $options{PERMS}, ) ); # Set up an exit handler that can do whatever is right for the # system. This removes files at exit when requested explicitly or when # system is asked to unlink_on_close but is unable to do so because # of OS limitations. # The latter should be achieved by using a tied filehandle. # Do not check return status since this is all done with END blocks. _deferred_unlink($fh, $path, 0) if $options{"UNLINK"}; # Return if (wantarray()) { if ($options{'OPEN'}) { return ($fh, $path); } else { return (undef, $path); } } else { # Unlink the file. It is up to unlink0 to decide what to do with # this (whether to unlink now or to defer until later) unlink0($fh, $path) or croak "Error unlinking file $path using unlink0"; # Return just the filehandle. return $fh; } } # On Windows under taint mode, File::Spec could suggest "C:\" as a tempdir # which might not be writable. If that is the case, we fallback to a # user directory. See https://rt.cpan.org/Ticket/Display.html?id=60340 { my ($alt_tmpdir, $checked); sub _wrap_file_spec_tmpdir { return File::Spec->tmpdir unless $^O eq "MSWin32" && ${^TAINT}; if ( $checked ) { return $alt_tmpdir ? $alt_tmpdir : File::Spec->tmpdir; } # probe what File::Spec gives and find a fallback my $xxpath = _replace_XX( "X" x 10, 0 ); # First, see if File::Spec->tmpdir is writable my $tmpdir = File::Spec->tmpdir; my $testpath = File::Spec->catdir( $tmpdir, $xxpath ); if (mkdir( $testpath, 0700) ) { $checked = 1; rmdir $testpath; return $tmpdir; } # Next, see if CSIDL_LOCAL_APPDATA is writable require Win32; my $local_app = File::Spec->catdir( Win32::GetFolderPath( Win32::CSIDL_LOCAL_APPDATA() ), 'Temp' ); $testpath = File::Spec->catdir( $local_app, $xxpath ); if ( -e $local_app or mkdir( $local_app, 0700 ) ) { if (mkdir( $testpath, 0700) ) { $checked = 1; rmdir $testpath; return $alt_tmpdir = $local_app; } } # Can't find something writable croak << "HERE"; Couldn't find a writable temp directory in taint mode. Tried: $tmpdir $local_app Try setting and untainting the TMPDIR environment variable. HERE } } #pod =item B #pod #pod This is the recommended interface for creation of temporary #pod directories. By default the directory will not be removed on exit #pod (that is, it won't be temporary; this behaviour can not be changed #pod because of issues with backwards compatibility). To enable removal #pod either use the CLEANUP option which will trigger removal on program #pod exit, or consider using the "newdir" method in the object interface which #pod will allow the directory to be cleaned up when the object goes out of #pod scope. #pod #pod The behaviour of the function depends on the arguments: #pod #pod $tempdir = tempdir(); #pod #pod Create a directory in tmpdir() (see L). #pod #pod $tempdir = tempdir( $template ); #pod #pod Create a directory from the supplied template. This template is #pod similar to that described for tempfile(). `X' characters at the end #pod of the template are replaced with random letters to construct the #pod directory name. At least four `X' characters must be in the template. #pod #pod $tempdir = tempdir ( DIR => $dir ); #pod #pod Specifies the directory to use for the temporary directory. #pod The temporary directory name is derived from an internal template. #pod #pod $tempdir = tempdir ( $template, DIR => $dir ); #pod #pod Prepend the supplied directory name to the template. The template #pod should not include parent directory specifications itself. Any parent #pod directory specifications are removed from the template before #pod prepending the supplied directory. #pod #pod $tempdir = tempdir ( $template, TMPDIR => 1 ); #pod #pod Using the supplied template, create the temporary directory in #pod a standard location for temporary files. Equivalent to doing #pod #pod $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir); #pod #pod but shorter. Parent directory specifications are stripped from the #pod template itself. The C option is ignored if C is set #pod explicitly. Additionally, C is implied if neither a template #pod nor a directory are supplied. #pod #pod $tempdir = tempdir( $template, CLEANUP => 1); #pod #pod Create a temporary directory using the supplied template, but #pod attempt to remove it (and all files inside it) when the program #pod exits. Note that an attempt will be made to remove all files from #pod the directory even if they were not created by this module (otherwise #pod why ask to clean it up?). The directory removal is made with #pod the rmtree() function from the L module. #pod Of course, if the template is not specified, the temporary directory #pod will be created in tmpdir() and will also be removed at program exit. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut # ' sub tempdir { if ( @_ && $_[0] eq 'File::Temp' ) { croak "'tempdir' can't be called as a method"; } # Can not check for argument count since we can have any # number of args # Default options my %options = ( "CLEANUP" => 0, # Remove directory on exit "DIR" => '', # Root directory "TMPDIR" => 0, # Use tempdir with template ); # Check to see whether we have an odd or even number of arguments my ($maybe_template, $args) = _parse_args(@_); my $template = @$maybe_template ? $maybe_template->[0] : undef; # Read the options and merge with defaults %options = (%options, %$args); # Modify or generate the template # Deal with the DIR and TMPDIR options if (defined $template) { # Need to strip directory path if using DIR or TMPDIR if ($options{'TMPDIR'} || $options{'DIR'}) { # Strip parent directory from the filename # # There is no filename at the end $template = VMS::Filespec::vmspath($template) if $^O eq 'VMS'; my ($volume, $directories, undef) = File::Spec->splitpath( $template, 1); # Last directory is then our template $template = (File::Spec->splitdir($directories))[-1]; # Prepend the supplied directory or temp dir if ($options{"DIR"}) { $template = File::Spec->catdir($options{"DIR"}, $template); } elsif ($options{TMPDIR}) { # Prepend tmpdir $template = File::Spec->catdir(_wrap_file_spec_tmpdir(), $template); } } } else { if ($options{"DIR"}) { $template = File::Spec->catdir($options{"DIR"}, TEMPXXX); } else { $template = File::Spec->catdir(_wrap_file_spec_tmpdir(), TEMPXXX); } } # Create the directory my $tempdir; my $suffixlen = 0; if ($^O eq 'VMS') { # dir names can end in delimiters $template =~ m/([\.\]:>]+)$/; $suffixlen = length($1); } if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) { # dir name has a trailing ':' ++$suffixlen; } my $errstr; croak "Error in tempdir() using $template: $errstr" unless ((undef, $tempdir) = _gettemp($template, "open" => 0, "mkdir"=> 1 , "suffixlen" => $suffixlen, "ErrStr" => \$errstr, ) ); # Install exit handler; must be dynamic to get lexical if ( $options{'CLEANUP'} && -d $tempdir) { _deferred_unlink(undef, $tempdir, 1); } # Return the dir name return $tempdir; } #pod =back #pod #pod =head1 MKTEMP FUNCTIONS #pod #pod The following functions are Perl implementations of the #pod mktemp() family of temp file generation system calls. #pod #pod =over 4 #pod #pod =item B #pod #pod Given a template, returns a filehandle to the temporary file and the name #pod of the file. #pod #pod ($fh, $name) = mkstemp( $template ); #pod #pod In scalar context, just the filehandle is returned. #pod #pod The template may be any filename with some number of X's appended #pod to it, for example F. The trailing X's are replaced #pod with unique alphanumeric combinations. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut sub mkstemp { croak "Usage: mkstemp(template)" if scalar(@_) != 1; my $template = shift; my ($fh, $path, $errstr); croak "Error in mkstemp using $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => 1, "mkdir"=> 0 , "suffixlen" => 0, "ErrStr" => \$errstr, ) ); if (wantarray()) { return ($fh, $path); } else { return $fh; } } #pod =item B #pod #pod Similar to mkstemp(), except that an extra argument can be supplied #pod with a suffix to be appended to the template. #pod #pod ($fh, $name) = mkstemps( $template, $suffix ); #pod #pod For example a template of C and suffix of C<.dat> #pod would generate a file similar to F. #pod #pod Returns just the filehandle alone when called in scalar context. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut sub mkstemps { croak "Usage: mkstemps(template, suffix)" if scalar(@_) != 2; my $template = shift; my $suffix = shift; $template .= $suffix; my ($fh, $path, $errstr); croak "Error in mkstemps using $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => 1, "mkdir"=> 0 , "suffixlen" => length($suffix), "ErrStr" => \$errstr, ) ); if (wantarray()) { return ($fh, $path); } else { return $fh; } } #pod =item B #pod #pod Create a directory from a template. The template must end in #pod X's that are replaced by the routine. #pod #pod $tmpdir_name = mkdtemp($template); #pod #pod Returns the name of the temporary directory created. #pod #pod Directory must be removed by the caller. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut #' # for emacs sub mkdtemp { croak "Usage: mkdtemp(template)" if scalar(@_) != 1; my $template = shift; my $suffixlen = 0; if ($^O eq 'VMS') { # dir names can end in delimiters $template =~ m/([\.\]:>]+)$/; $suffixlen = length($1); } if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) { # dir name has a trailing ':' ++$suffixlen; } my ($junk, $tmpdir, $errstr); croak "Error creating temp directory from template $template\: $errstr" unless (($junk, $tmpdir) = _gettemp($template, "open" => 0, "mkdir"=> 1 , "suffixlen" => $suffixlen, "ErrStr" => \$errstr, ) ); return $tmpdir; } #pod =item B #pod #pod Returns a valid temporary filename but does not guarantee #pod that the file will not be opened by someone else. #pod #pod $unopened_file = mktemp($template); #pod #pod Template is the same as that required by mkstemp(). #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut sub mktemp { croak "Usage: mktemp(template)" if scalar(@_) != 1; my $template = shift; my ($tmpname, $junk, $errstr); croak "Error getting name to temp file from template $template: $errstr" unless (($junk, $tmpname) = _gettemp($template, "open" => 0, "mkdir"=> 0 , "suffixlen" => 0, "ErrStr" => \$errstr, ) ); return $tmpname; } #pod =back #pod #pod =head1 POSIX FUNCTIONS #pod #pod This section describes the re-implementation of the tmpnam() #pod and tmpfile() functions described in L #pod using the mkstemp() from this module. #pod #pod Unlike the L implementations, the directory used #pod for the temporary file is not specified in a system include #pod file (C) but simply depends on the choice of tmpdir() #pod returned by L. On some implementations this #pod location can be set using the C environment variable, which #pod may not be secure. #pod If this is a problem, simply use mkstemp() and specify a template. #pod #pod =over 4 #pod #pod =item B #pod #pod When called in scalar context, returns the full name (including path) #pod of a temporary file (uses mktemp()). The only check is that the file does #pod not already exist, but there is no guarantee that that condition will #pod continue to apply. #pod #pod $file = tmpnam(); #pod #pod When called in list context, a filehandle to the open file and #pod a filename are returned. This is achieved by calling mkstemp() #pod after constructing a suitable template. #pod #pod ($fh, $file) = tmpnam(); #pod #pod If possible, this form should be used to prevent possible #pod race conditions. #pod #pod See L for information on the choice of temporary #pod directory for a particular operating system. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut sub tmpnam { # Retrieve the temporary directory name my $tmpdir = _wrap_file_spec_tmpdir(); # XXX I don't know under what circumstances this occurs, -- xdg 2016-04-02 croak "Error temporary directory is not writable" if $tmpdir eq ''; # Use a ten character template and append to tmpdir my $template = File::Spec->catfile($tmpdir, TEMPXXX); if (wantarray() ) { return mkstemp($template); } else { return mktemp($template); } } #pod =item B #pod #pod Returns the filehandle of a temporary file. #pod #pod $fh = tmpfile(); #pod #pod The file is removed when the filehandle is closed or when the program #pod exits. No access to the filename is provided. #pod #pod If the temporary file can not be created undef is returned. #pod Currently this command will probably not work when the temporary #pod directory is on an NFS file system. #pod #pod Will croak() if there is an error. #pod #pod Available since 0.05. #pod #pod Returning undef if unable to create file added in 0.12. #pod #pod =cut sub tmpfile { # Simply call tmpnam() in a list context my ($fh, $file) = tmpnam(); # Make sure file is removed when filehandle is closed # This will fail on NFS unlink0($fh, $file) or return undef; return $fh; } #pod =back #pod #pod =head1 ADDITIONAL FUNCTIONS #pod #pod These functions are provided for backwards compatibility #pod with common tempfile generation C library functions. #pod #pod They are not exported and must be addressed using the full package #pod name. #pod #pod =over 4 #pod #pod =item B #pod #pod Return the name of a temporary file in the specified directory #pod using a prefix. The file is guaranteed not to exist at the time #pod the function was called, but such guarantees are good for one #pod clock tick only. Always use the proper form of C #pod with C if you must open such a filename. #pod #pod $filename = File::Temp::tempnam( $dir, $prefix ); #pod #pod Equivalent to running mktemp() with $dir/$prefixXXXXXXXX #pod (using unix file convention as an example) #pod #pod Because this function uses mktemp(), it can suffer from race conditions. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut sub tempnam { croak 'Usage tempnam($dir, $prefix)' unless scalar(@_) == 2; my ($dir, $prefix) = @_; # Add a string to the prefix $prefix .= 'XXXXXXXX'; # Concatenate the directory to the file my $template = File::Spec->catfile($dir, $prefix); return mktemp($template); } #pod =back #pod #pod =head1 UTILITY FUNCTIONS #pod #pod Useful functions for dealing with the filehandle and filename. #pod #pod =over 4 #pod #pod =item B #pod #pod Given an open filehandle and the associated filename, make a safe #pod unlink. This is achieved by first checking that the filename and #pod filehandle initially point to the same file and that the number of #pod links to the file is 1 (all fields returned by stat() are compared). #pod Then the filename is unlinked and the filehandle checked once again to #pod verify that the number of links on that file is now 0. This is the #pod closest you can come to making sure that the filename unlinked was the #pod same as the file whose descriptor you hold. #pod #pod unlink0($fh, $path) #pod or die "Error unlinking file $path safely"; #pod #pod Returns false on error but croaks() if there is a security #pod anomaly. The filehandle is not closed since on some occasions this is #pod not required. #pod #pod On some platforms, for example Windows NT, it is not possible to #pod unlink an open file (the file must be closed first). On those #pod platforms, the actual unlinking is deferred until the program ends and #pod good status is returned. A check is still performed to make sure that #pod the filehandle and filename are pointing to the same thing (but not at #pod the time the end block is executed since the deferred removal may not #pod have access to the filehandle). #pod #pod Additionally, on Windows NT not all the fields returned by stat() can #pod be compared. For example, the C and C fields seem to be #pod different. Also, it seems that the size of the file returned by stat() #pod does not always agree, with C being more accurate than #pod C, presumably because of caching issues even when #pod using autoflush (this is usually overcome by waiting a while after #pod writing to the tempfile before attempting to C it). #pod #pod Finally, on NFS file systems the link count of the file handle does #pod not always go to zero immediately after unlinking. Currently, this #pod command is expected to fail on NFS disks. #pod #pod This function is disabled if the global variable $KEEP_ALL is true #pod and an unlink on open file is supported. If the unlink is to be deferred #pod to the END block, the file is still registered for removal. #pod #pod This function should not be called if you are using the object oriented #pod interface since the it will interfere with the object destructor deleting #pod the file. #pod #pod Available Since 0.05. #pod #pod If can not unlink open file, defer removal until later available since 0.06. #pod #pod =cut sub unlink0 { croak 'Usage: unlink0(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; cmpstat($fh, $path) or return 0; # attempt remove the file (does not work on some platforms) if (_can_unlink_opened_file()) { # return early (Without unlink) if we have been instructed to retain files. return 1 if $KEEP_ALL; # XXX: do *not* call this on a directory; possible race # resulting in recursive removal croak "unlink0: $path has become a directory!" if -d $path; unlink($path) or return 0; # Stat the filehandle my @fh = stat $fh; print "Link count = $fh[3] \n" if $DEBUG; # Make sure that the link count is zero # - Cygwin provides deferred unlinking, however, # on Win9x the link count remains 1 # On NFS the link count may still be 1 but we can't know that # we are on NFS. Since we can't be sure, we'll defer it return 1 if $fh[3] == 0 || $^O eq 'cygwin'; } # fall-through if we can't unlink now _deferred_unlink($fh, $path, 0); return 1; } #pod =item B #pod #pod Compare C of filehandle with C of provided filename. This #pod can be used to check that the filename and filehandle initially point #pod to the same file and that the number of links to the file is 1 (all #pod fields returned by stat() are compared). #pod #pod cmpstat($fh, $path) #pod or die "Error comparing handle with file"; #pod #pod Returns false if the stat information differs or if the link count is #pod greater than 1. Calls croak if there is a security anomaly. #pod #pod On certain platforms, for example Windows, not all the fields returned by stat() #pod can be compared. For example, the C and C fields seem to be #pod different in Windows. Also, it seems that the size of the file #pod returned by stat() does not always agree, with C being more #pod accurate than C, presumably because of caching issues #pod even when using autoflush (this is usually overcome by waiting a while #pod after writing to the tempfile before attempting to C it). #pod #pod Not exported by default. #pod #pod Current API available since 0.14. #pod #pod =cut sub cmpstat { croak 'Usage: cmpstat(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; warn "Comparing stat\n" if $DEBUG; # Stat the filehandle - which may be closed if someone has manually # closed the file. Can not turn off warnings without using $^W # unless we upgrade to 5.006 minimum requirement my @fh; { local ($^W) = 0; @fh = stat $fh; } return unless @fh; if ($fh[3] > 1 && $^W) { carp "unlink0: fstat found too many links; SB=@fh" if $^W; } # Stat the path my @path = stat $path; unless (@path) { carp "unlink0: $path is gone already" if $^W; return; } # this is no longer a file, but may be a directory, or worse unless (-f $path) { confess "panic: $path is no longer a file: SB=@fh"; } # Do comparison of each member of the array # On WinNT dev and rdev seem to be different # depending on whether it is a file or a handle. # Cannot simply compare all members of the stat return # Select the ones we can use my @okstat = (0..$#fh); # Use all by default if ($^O eq 'MSWin32') { @okstat = (1,2,3,4,5,7,8,9,10); } elsif ($^O eq 'os2') { @okstat = (0, 2..$#fh); } elsif ($^O eq 'VMS') { # device and file ID are sufficient @okstat = (0, 1); } elsif ($^O eq 'dos') { @okstat = (0,2..7,11..$#fh); } elsif ($^O eq 'mpeix') { @okstat = (0..4,8..10); } # Now compare each entry explicitly by number for (@okstat) { print "Comparing: $_ : $fh[$_] and $path[$_]\n" if $DEBUG; # Use eq rather than == since rdev, blksize, and blocks (6, 11, # and 12) will be '' on platforms that do not support them. This # is fine since we are only comparing integers. unless ($fh[$_] eq $path[$_]) { warn "Did not match $_ element of stat\n" if $DEBUG; return 0; } } return 1; } #pod =item B #pod #pod Similar to C except after file comparison using cmpstat, the #pod filehandle is closed prior to attempting to unlink the file. This #pod allows the file to be removed without using an END block, but does #pod mean that the post-unlink comparison of the filehandle state provided #pod by C is not available. #pod #pod unlink1($fh, $path) #pod or die "Error closing and unlinking file"; #pod #pod Usually called from the object destructor when using the OO interface. #pod #pod Not exported by default. #pod #pod This function is disabled if the global variable $KEEP_ALL is true. #pod #pod Can call croak() if there is a security anomaly during the stat() #pod comparison. #pod #pod Current API available since 0.14. #pod #pod =cut sub unlink1 { croak 'Usage: unlink1(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; cmpstat($fh, $path) or return 0; # Close the file close( $fh ) or return 0; # Make sure the file is writable (for windows) _force_writable( $path ); # return early (without unlink) if we have been instructed to retain files. return 1 if $KEEP_ALL; # remove the file return unlink($path); } #pod =item B #pod #pod Calling this function will cause any temp files or temp directories #pod that are registered for removal to be removed. This happens automatically #pod when the process exits but can be triggered manually if the caller is sure #pod that none of the temp files are required. This method can be registered as #pod an Apache callback. #pod #pod Note that if a temp directory is your current directory, it cannot be #pod removed. C out of the directory first before calling #pod C. (For the cleanup at program exit when the CLEANUP flag #pod is set, this happens automatically.) #pod #pod On OSes where temp files are automatically removed when the temp file #pod is closed, calling this function will have no effect other than to remove #pod temporary directories (which may include temporary files). #pod #pod File::Temp::cleanup(); #pod #pod Not exported by default. #pod #pod Current API available since 0.15. #pod #pod =back #pod #pod =head1 PACKAGE VARIABLES #pod #pod These functions control the global state of the package. #pod #pod =over 4 #pod #pod =item B #pod #pod Controls the lengths to which the module will go to check the safety of the #pod temporary file or directory before proceeding. #pod Options are: #pod #pod =over 8 #pod #pod =item STANDARD #pod #pod Do the basic security measures to ensure the directory exists and is #pod writable, that temporary files are opened only if they do not already #pod exist, and that possible race conditions are avoided. Finally the #pod L function is used to remove files safely. #pod #pod =item MEDIUM #pod #pod In addition to the STANDARD security, the output directory is checked #pod to make sure that it is owned either by root or the user running the #pod program. If the directory is writable by group or by other, it is then #pod checked to make sure that the sticky bit is set. #pod #pod Will not work on platforms that do not support the C<-k> test #pod for sticky bit. #pod #pod =item HIGH #pod #pod In addition to the MEDIUM security checks, also check for the #pod possibility of ``chown() giveaway'' using the L #pod sysconf() function. If this is a possibility, each directory in the #pod path is checked in turn for safeness, recursively walking back to the #pod root directory. #pod #pod For platforms that do not support the L #pod C<_PC_CHOWN_RESTRICTED> symbol (for example, Windows NT) it is #pod assumed that ``chown() giveaway'' is possible and the recursive test #pod is performed. #pod #pod =back #pod #pod The level can be changed as follows: #pod #pod File::Temp->safe_level( File::Temp::HIGH ); #pod #pod The level constants are not exported by the module. #pod #pod Currently, you must be running at least perl v5.6.0 in order to #pod run with MEDIUM or HIGH security. This is simply because the #pod safety tests use functions from L that are not #pod available in older versions of perl. The problem is that the version #pod number for Fcntl is the same in perl 5.6.0 and in 5.005_03 even though #pod they are different versions. #pod #pod On systems that do not support the HIGH or MEDIUM safety levels #pod (for example Win NT or OS/2) any attempt to change the level will #pod be ignored. The decision to ignore rather than raise an exception #pod allows portable programs to be written with high security in mind #pod for the systems that can support this without those programs failing #pod on systems where the extra tests are irrelevant. #pod #pod If you really need to see whether the change has been accepted #pod simply examine the return value of C. #pod #pod $newlevel = File::Temp->safe_level( File::Temp::HIGH ); #pod die "Could not change to high security" #pod if $newlevel != File::Temp::HIGH; #pod #pod Available since 0.05. #pod #pod =cut { # protect from using the variable itself my $LEVEL = STANDARD; sub safe_level { my $self = shift; if (@_) { my $level = shift; if (($level != STANDARD) && ($level != MEDIUM) && ($level != HIGH)) { carp "safe_level: Specified level ($level) not STANDARD, MEDIUM or HIGH - ignoring\n" if $^W; } else { # Don't allow this on perl 5.005 or earlier if ($] < 5.006 && $level != STANDARD) { # Cant do MEDIUM or HIGH checks croak "Currently requires perl 5.006 or newer to do the safe checks"; } # Check that we are allowed to change level # Silently ignore if we can not. $LEVEL = $level if _can_do_level($level); } } return $LEVEL; } } #pod =item TopSystemUID #pod #pod This is the highest UID on the current system that refers to a root #pod UID. This is used to make sure that the temporary directory is #pod owned by a system UID (C, C, C etc) rather than #pod simply by root. #pod #pod This is required since on many unix systems C is not owned #pod by root. #pod #pod Default is to assume that any UID less than or equal to 10 is a root #pod UID. #pod #pod File::Temp->top_system_uid(10); #pod my $topid = File::Temp->top_system_uid; #pod #pod This value can be adjusted to reduce security checking if required. #pod The value is only relevant when C is set to MEDIUM or higher. #pod #pod Available since 0.05. #pod #pod =cut { my $TopSystemUID = 10; $TopSystemUID = 197108 if $^O eq 'interix'; # "Administrator" sub top_system_uid { my $self = shift; if (@_) { my $newuid = shift; croak "top_system_uid: UIDs should be numeric" unless $newuid =~ /^\d+$/s; $TopSystemUID = $newuid; } return $TopSystemUID; } } #pod =item B<$KEEP_ALL> #pod #pod Controls whether temporary files and directories should be retained #pod regardless of any instructions in the program to remove them #pod automatically. This is useful for debugging but should not be used in #pod production code. #pod #pod $File::Temp::KEEP_ALL = 1; #pod #pod Default is for files to be removed as requested by the caller. #pod #pod In some cases, files will only be retained if this variable is true #pod when the file is created. This means that you can not create a temporary #pod file, set this variable and expect the temp file to still be around #pod when the program exits. #pod #pod =item B<$DEBUG> #pod #pod Controls whether debugging messages should be enabled. #pod #pod $File::Temp::DEBUG = 1; #pod #pod Default is for debugging mode to be disabled. #pod #pod Available since 0.15. #pod #pod =back #pod #pod =head1 WARNING #pod #pod For maximum security, endeavour always to avoid ever looking at, #pod touching, or even imputing the existence of the filename. You do not #pod know that that filename is connected to the same file as the handle #pod you have, and attempts to check this can only trigger more race #pod conditions. It's far more secure to use the filehandle alone and #pod dispense with the filename altogether. #pod #pod If you need to pass the handle to something that expects a filename #pod then on a unix system you can use C<"/dev/fd/" . fileno($fh)> for #pod arbitrary programs. Perl code that uses the 2-argument version of #pod C<< open >> can be passed C<< "+<=&" . fileno($fh) >>. Otherwise you #pod will need to pass the filename. You will have to clear the #pod close-on-exec bit on that file descriptor before passing it to another #pod process. #pod #pod use Fcntl qw/F_SETFD F_GETFD/; #pod fcntl($tmpfh, F_SETFD, 0) #pod or die "Can't clear close-on-exec flag on temp fh: $!\n"; #pod #pod =head2 Temporary files and NFS #pod #pod Some problems are associated with using temporary files that reside #pod on NFS file systems and it is recommended that a local filesystem #pod is used whenever possible. Some of the security tests will most probably #pod fail when the temp file is not local. Additionally, be aware that #pod the performance of I/O operations over NFS will not be as good as for #pod a local disk. #pod #pod =head2 Forking #pod #pod In some cases files created by File::Temp are removed from within an #pod END block. Since END blocks are triggered when a child process exits #pod (unless C is used by the child) File::Temp takes care #pod to only remove those temp files created by a particular process ID. This #pod means that a child will not attempt to remove temp files created by the #pod parent process. #pod #pod If you are forking many processes in parallel that are all creating #pod temporary files, you may need to reset the random number seed using #pod srand(EXPR) in each child else all the children will attempt to walk #pod through the same set of random file names and may well cause #pod themselves to give up if they exceed the number of retry attempts. #pod #pod =head2 Directory removal #pod #pod Note that if you have chdir'ed into the temporary directory and it is #pod subsequently cleaned up (either in the END block or as part of object #pod destruction), then you will get a warning from File::Path::rmtree(). #pod #pod =head2 Taint mode #pod #pod If you need to run code under taint mode, updating to the latest #pod L is highly recommended. On Windows, if the directory #pod given by L isn't writable, File::Temp will attempt #pod to fallback to the user's local application data directory or croak #pod with an error. #pod #pod =head2 BINMODE #pod #pod The file returned by File::Temp will have been opened in binary mode #pod if such a mode is available. If that is not correct, use the C #pod function to change the mode of the filehandle. #pod #pod Note that you can modify the encoding of a file opened by File::Temp #pod also by using C. #pod #pod =head1 HISTORY #pod #pod Originally began life in May 1999 as an XS interface to the system #pod mkstemp() function. In March 2000, the OpenBSD mkstemp() code was #pod translated to Perl for total control of the code's #pod security checking, to ensure the presence of the function regardless of #pod operating system and to help with portability. The module was shipped #pod as a standard part of perl from v5.6.1. #pod #pod Thanks to Tom Christiansen for suggesting that this module #pod should be written and providing ideas for code improvements and #pod security enhancements. #pod #pod =head1 SEE ALSO #pod #pod L, L, L, L #pod #pod See L and L, L for #pod different implementations of temporary file handling. #pod #pod See L for an alternative object-oriented wrapper for #pod the C function. #pod #pod =cut package ## hide from PAUSE File::Temp::Dir; our $VERSION = '0.2311'; use File::Path qw/ rmtree /; use strict; use overload '""' => "STRINGIFY", '0+' => \&File::Temp::NUMIFY, fallback => 1; # private class specifically to support tempdir objects # created by File::Temp->newdir # ostensibly the same method interface as File::Temp but without # inheriting all the IO::Seekable methods and other cruft # Read-only - returns the name of the temp directory sub dirname { my $self = shift; return $self->{DIRNAME}; } sub STRINGIFY { my $self = shift; return $self->dirname; } sub unlink_on_destroy { my $self = shift; if (@_) { $self->{CLEANUP} = shift; } return $self->{CLEANUP}; } sub DESTROY { my $self = shift; local($., $@, $!, $^E, $?); if ($self->unlink_on_destroy && $$ == $self->{LAUNCHPID} && !$File::Temp::KEEP_ALL) { if (-d $self->{REALNAME}) { # Some versions of rmtree will abort if you attempt to remove # the directory you are sitting in. We protect that and turn it # into a warning. We do this because this occurs during object # destruction and so can not be caught by the user. eval { rmtree($self->{REALNAME}, $File::Temp::DEBUG, 0); }; warn $@ if ($@ && $^W); } } } 1; # vim: ts=2 sts=2 sw=2 et: __END__ =pod =encoding UTF-8 =head1 NAME File::Temp - return name and handle of a temporary file safely =head1 VERSION version 0.2311 =head1 SYNOPSIS use File::Temp qw/ tempfile tempdir /; $fh = tempfile(); ($fh, $filename) = tempfile(); ($fh, $filename) = tempfile( $template, DIR => $dir); ($fh, $filename) = tempfile( $template, SUFFIX => '.dat'); ($fh, $filename) = tempfile( $template, TMPDIR => 1 ); binmode( $fh, ":utf8" ); $dir = tempdir( CLEANUP => 1 ); ($fh, $filename) = tempfile( DIR => $dir ); Object interface: require File::Temp; use File::Temp (); use File::Temp qw/ :seekable /; $fh = File::Temp->new(); $fname = $fh->filename; $fh = File::Temp->new(TEMPLATE => $template); $fname = $fh->filename; $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.dat' ); print $tmp "Some data\n"; print "Filename is $tmp\n"; $tmp->seek( 0, SEEK_END ); $dir = File::Temp->newdir(); # CLEANUP => 1 by default The following interfaces are provided for compatibility with existing APIs. They should not be used in new code. MkTemp family: use File::Temp qw/ :mktemp /; ($fh, $file) = mkstemp( "tmpfileXXXXX" ); ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix); $tmpdir = mkdtemp( $template ); $unopened_file = mktemp( $template ); POSIX functions: use File::Temp qw/ :POSIX /; $file = tmpnam(); $fh = tmpfile(); ($fh, $file) = tmpnam(); Compatibility functions: $unopened_file = File::Temp::tempnam( $dir, $pfx ); =head1 DESCRIPTION C can be used to create and open temporary files in a safe way. There is both a function interface and an object-oriented interface. The File::Temp constructor or the tempfile() function can be used to return the name and the open filehandle of a temporary file. The tempdir() function can be used to create a temporary directory. The security aspect of temporary file creation is emphasized such that a filehandle and filename are returned together. This helps guarantee that a race condition can not occur where the temporary file is created by another process between checking for the existence of the file and its opening. Additional security levels are provided to check, for example, that the sticky bit is set on world writable directories. See L<"safe_level"> for more information. For compatibility with popular C library functions, Perl implementations of the mkstemp() family of functions are provided. These are, mkstemp(), mkstemps(), mkdtemp() and mktemp(). Additionally, implementations of the standard L tmpnam() and tmpfile() functions are provided if required. Implementations of mktemp(), tmpnam(), and tempnam() are provided, but should be used with caution since they return only a filename that was valid when function was called, so cannot guarantee that the file will not exist by the time the caller opens the filename. Filehandles returned by these functions support the seekable methods. =begin :__INTERNALS =head1 PORTABILITY This section is at the top in order to provide easier access to porters. It is not expected to be rendered by a standard pod formatting tool. Please skip straight to the SYNOPSIS section if you are not trying to port this module to a new platform. This module is designed to be portable across operating systems and it currently supports Unix, VMS, DOS, OS/2, Windows and Mac OS (Classic). When porting to a new OS there are generally three main issues that have to be solved: =over 4 =item * Can the OS unlink an open file? If it can not then the C<_can_unlink_opened_file> method should be modified. =item * Are the return values from C reliable? By default all the return values from C are compared when unlinking a temporary file using the filename and the handle. Operating systems other than unix do not always have valid entries in all fields. If utility function C fails then the C comparison should be modified accordingly. =item * Security. Systems that can not support a test for the sticky bit on a directory can not use the MEDIUM and HIGH security tests. The C<_can_do_level> method should be modified accordingly. =back =end :__INTERNALS =head1 OBJECT-ORIENTED INTERFACE This is the primary interface for interacting with C. Using the OO interface a temporary file can be created when the object is constructed and the file can be removed when the object is no longer required. Note that there is no method to obtain the filehandle from the C object. The object itself acts as a filehandle. The object isa C and isa C so all those methods are available. Also, the object is configured such that it stringifies to the name of the temporary file and so can be compared to a filename directly. It numifies to the C the same as other handles and so can be compared to other handles with C<==>. $fh eq $filename # as a string $fh != \*STDOUT # as a number Available since 0.14. =over 4 =item B Create a temporary file object. my $tmp = File::Temp->new(); by default the object is constructed as if C was called without options, but with the additional behaviour that the temporary file is removed by the object destructor if UNLINK is set to true (the default). Supported arguments are the same as for C: UNLINK (defaulting to true), DIR, EXLOCK, PERMS and SUFFIX. Additionally, the filename template is specified using the TEMPLATE option. The OPEN option is not supported (the file is always opened). $tmp = File::Temp->new( TEMPLATE => 'tempXXXXX', DIR => 'mydir', SUFFIX => '.dat'); Arguments are case insensitive. Can call croak() if an error occurs. Available since 0.14. TEMPLATE available since 0.23 =item B Create a temporary directory using an object oriented interface. $dir = File::Temp->newdir(); By default the directory is deleted when the object goes out of scope. Supports the same options as the C function. Note that directories created with this method default to CLEANUP => 1. $dir = File::Temp->newdir( $template, %options ); A template may be specified either with a leading template or with a TEMPLATE argument. Available since 0.19. TEMPLATE available since 0.23. =item B Return the name of the temporary file associated with this object (if the object was created using the "new" constructor). $filename = $tmp->filename; This method is called automatically when the object is used as a string. Current API available since 0.14 =item B Return the name of the temporary directory associated with this object (if the object was created using the "newdir" constructor). $dirname = $tmpdir->dirname; This method is called automatically when the object is used in string context. =item B Control whether the file is unlinked when the object goes out of scope. The file is removed if this value is true and $KEEP_ALL is not. $fh->unlink_on_destroy( 1 ); Default is for the file to be removed. Current API available since 0.15 =item B When the object goes out of scope, the destructor is called. This destructor will attempt to unlink the file (using L) if the constructor was called with UNLINK set to 1 (the default state if UNLINK is not specified). No error is given if the unlink fails. If the object has been passed to a child process during a fork, the file will be deleted when the object goes out of scope in the parent. For a temporary directory object the directory will be removed unless the CLEANUP argument was used in the constructor (and set to false) or C was modified after creation. Note that if a temp directory is your current directory, it cannot be removed - a warning will be given in this case. C out of the directory before letting the object go out of scope. If the global variable $KEEP_ALL is true, the file or directory will not be removed. =back =head1 FUNCTIONS This section describes the recommended interface for generating temporary files and directories. =over 4 =item B This is the basic function to generate temporary files. The behaviour of the file can be changed using various options: $fh = tempfile(); ($fh, $filename) = tempfile(); Create a temporary file in the directory specified for temporary files, as specified by the tmpdir() function in L. ($fh, $filename) = tempfile($template); Create a temporary file in the current directory using the supplied template. Trailing `X' characters are replaced with random letters to generate the filename. At least four `X' characters must be present at the end of the template. ($fh, $filename) = tempfile($template, SUFFIX => $suffix) Same as previously, except that a suffix is added to the template after the `X' translation. Useful for ensuring that a temporary filename has a particular extension when needed by other applications. But see the WARNING at the end. ($fh, $filename) = tempfile($template, DIR => $dir); Translates the template as before except that a directory name is specified. ($fh, $filename) = tempfile($template, TMPDIR => 1); Equivalent to specifying a DIR of "File::Spec->tmpdir", writing the file into the same temporary directory as would be used if no template was specified at all. ($fh, $filename) = tempfile($template, UNLINK => 1); Return the filename and filehandle as before except that the file is automatically removed when the program exits (dependent on $KEEP_ALL). Default is for the file to be removed if a file handle is requested and to be kept if the filename is requested. In a scalar context (where no filename is returned) the file is always deleted either (depending on the operating system) on exit or when it is closed (unless $KEEP_ALL is true when the temp file is created). Use the object-oriented interface if fine-grained control of when a file is removed is required. If the template is not specified, a template is always automatically generated. This temporary file is placed in tmpdir() (L) unless a directory is specified explicitly with the DIR option. $fh = tempfile( DIR => $dir ); If called in scalar context, only the filehandle is returned and the file will automatically be deleted when closed on operating systems that support this (see the description of tmpfile() elsewhere in this document). This is the preferred mode of operation, as if you only have a filehandle, you can never create a race condition by fumbling with the filename. On systems that can not unlink an open file or can not mark a file as temporary when it is opened (for example, Windows NT uses the C flag) the file is marked for deletion when the program ends (equivalent to setting UNLINK to 1). The C flag is ignored if present. (undef, $filename) = tempfile($template, OPEN => 0); This will return the filename based on the template but will not open this file. Cannot be used in conjunction with UNLINK set to true. Default is to always open the file to protect from possible race conditions. A warning is issued if warnings are turned on. Consider using the tmpnam() and mktemp() functions described elsewhere in this document if opening the file is not required. To open the temporary filehandle with O_EXLOCK (open with exclusive file lock) use C<< EXLOCK=>1 >>. This is supported only by some operating systems (most notably BSD derived systems). By default EXLOCK will be false. Former C versions set EXLOCK to true, so to be sure to get an unlocked filehandle also with older versions, explicitly set C<< EXLOCK=>0 >>. ($fh, $filename) = tempfile($template, EXLOCK => 1); By default, the temp file is created with 0600 file permissions. Use C to change this: ($fh, $filename) = tempfile($template, PERMS => 0666); Options can be combined as required. Will croak() if there is an error. Available since 0.05. UNLINK flag available since 0.10. TMPDIR flag available since 0.19. EXLOCK flag available since 0.19. PERMS flag available since 0.2310. =item B This is the recommended interface for creation of temporary directories. By default the directory will not be removed on exit (that is, it won't be temporary; this behaviour can not be changed because of issues with backwards compatibility). To enable removal either use the CLEANUP option which will trigger removal on program exit, or consider using the "newdir" method in the object interface which will allow the directory to be cleaned up when the object goes out of scope. The behaviour of the function depends on the arguments: $tempdir = tempdir(); Create a directory in tmpdir() (see L). $tempdir = tempdir( $template ); Create a directory from the supplied template. This template is similar to that described for tempfile(). `X' characters at the end of the template are replaced with random letters to construct the directory name. At least four `X' characters must be in the template. $tempdir = tempdir ( DIR => $dir ); Specifies the directory to use for the temporary directory. The temporary directory name is derived from an internal template. $tempdir = tempdir ( $template, DIR => $dir ); Prepend the supplied directory name to the template. The template should not include parent directory specifications itself. Any parent directory specifications are removed from the template before prepending the supplied directory. $tempdir = tempdir ( $template, TMPDIR => 1 ); Using the supplied template, create the temporary directory in a standard location for temporary files. Equivalent to doing $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir); but shorter. Parent directory specifications are stripped from the template itself. The C option is ignored if C is set explicitly. Additionally, C is implied if neither a template nor a directory are supplied. $tempdir = tempdir( $template, CLEANUP => 1); Create a temporary directory using the supplied template, but attempt to remove it (and all files inside it) when the program exits. Note that an attempt will be made to remove all files from the directory even if they were not created by this module (otherwise why ask to clean it up?). The directory removal is made with the rmtree() function from the L module. Of course, if the template is not specified, the temporary directory will be created in tmpdir() and will also be removed at program exit. Will croak() if there is an error. Current API available since 0.05. =back =head1 MKTEMP FUNCTIONS The following functions are Perl implementations of the mktemp() family of temp file generation system calls. =over 4 =item B Given a template, returns a filehandle to the temporary file and the name of the file. ($fh, $name) = mkstemp( $template ); In scalar context, just the filehandle is returned. The template may be any filename with some number of X's appended to it, for example F. The trailing X's are replaced with unique alphanumeric combinations. Will croak() if there is an error. Current API available since 0.05. =item B Similar to mkstemp(), except that an extra argument can be supplied with a suffix to be appended to the template. ($fh, $name) = mkstemps( $template, $suffix ); For example a template of C and suffix of C<.dat> would generate a file similar to F. Returns just the filehandle alone when called in scalar context. Will croak() if there is an error. Current API available since 0.05. =item B Create a directory from a template. The template must end in X's that are replaced by the routine. $tmpdir_name = mkdtemp($template); Returns the name of the temporary directory created. Directory must be removed by the caller. Will croak() if there is an error. Current API available since 0.05. =item B Returns a valid temporary filename but does not guarantee that the file will not be opened by someone else. $unopened_file = mktemp($template); Template is the same as that required by mkstemp(). Will croak() if there is an error. Current API available since 0.05. =back =head1 POSIX FUNCTIONS This section describes the re-implementation of the tmpnam() and tmpfile() functions described in L using the mkstemp() from this module. Unlike the L implementations, the directory used for the temporary file is not specified in a system include file (C) but simply depends on the choice of tmpdir() returned by L. On some implementations this location can be set using the C environment variable, which may not be secure. If this is a problem, simply use mkstemp() and specify a template. =over 4 =item B When called in scalar context, returns the full name (including path) of a temporary file (uses mktemp()). The only check is that the file does not already exist, but there is no guarantee that that condition will continue to apply. $file = tmpnam(); When called in list context, a filehandle to the open file and a filename are returned. This is achieved by calling mkstemp() after constructing a suitable template. ($fh, $file) = tmpnam(); If possible, this form should be used to prevent possible race conditions. See L for information on the choice of temporary directory for a particular operating system. Will croak() if there is an error. Current API available since 0.05. =item B Returns the filehandle of a temporary file. $fh = tmpfile(); The file is removed when the filehandle is closed or when the program exits. No access to the filename is provided. If the temporary file can not be created undef is returned. Currently this command will probably not work when the temporary directory is on an NFS file system. Will croak() if there is an error. Available since 0.05. Returning undef if unable to create file added in 0.12. =back =head1 ADDITIONAL FUNCTIONS These functions are provided for backwards compatibility with common tempfile generation C library functions. They are not exported and must be addressed using the full package name. =over 4 =item B Return the name of a temporary file in the specified directory using a prefix. The file is guaranteed not to exist at the time the function was called, but such guarantees are good for one clock tick only. Always use the proper form of C with C if you must open such a filename. $filename = File::Temp::tempnam( $dir, $prefix ); Equivalent to running mktemp() with $dir/$prefixXXXXXXXX (using unix file convention as an example) Because this function uses mktemp(), it can suffer from race conditions. Will croak() if there is an error. Current API available since 0.05. =back =head1 UTILITY FUNCTIONS Useful functions for dealing with the filehandle and filename. =over 4 =item B Given an open filehandle and the associated filename, make a safe unlink. This is achieved by first checking that the filename and filehandle initially point to the same file and that the number of links to the file is 1 (all fields returned by stat() are compared). Then the filename is unlinked and the filehandle checked once again to verify that the number of links on that file is now 0. This is the closest you can come to making sure that the filename unlinked was the same as the file whose descriptor you hold. unlink0($fh, $path) or die "Error unlinking file $path safely"; Returns false on error but croaks() if there is a security anomaly. The filehandle is not closed since on some occasions this is not required. On some platforms, for example Windows NT, it is not possible to unlink an open file (the file must be closed first). On those platforms, the actual unlinking is deferred until the program ends and good status is returned. A check is still performed to make sure that the filehandle and filename are pointing to the same thing (but not at the time the end block is executed since the deferred removal may not have access to the filehandle). Additionally, on Windows NT not all the fields returned by stat() can be compared. For example, the C and C fields seem to be different. Also, it seems that the size of the file returned by stat() does not always agree, with C being more accurate than C, presumably because of caching issues even when using autoflush (this is usually overcome by waiting a while after writing to the tempfile before attempting to C it). Finally, on NFS file systems the link count of the file handle does not always go to zero immediately after unlinking. Currently, this command is expected to fail on NFS disks. This function is disabled if the global variable $KEEP_ALL is true and an unlink on open file is supported. If the unlink is to be deferred to the END block, the file is still registered for removal. This function should not be called if you are using the object oriented interface since the it will interfere with the object destructor deleting the file. Available Since 0.05. If can not unlink open file, defer removal until later available since 0.06. =item B Compare C of filehandle with C of provided filename. This can be used to check that the filename and filehandle initially point to the same file and that the number of links to the file is 1 (all fields returned by stat() are compared). cmpstat($fh, $path) or die "Error comparing handle with file"; Returns false if the stat information differs or if the link count is greater than 1. Calls croak if there is a security anomaly. On certain platforms, for example Windows, not all the fields returned by stat() can be compared. For example, the C and C fields seem to be different in Windows. Also, it seems that the size of the file returned by stat() does not always agree, with C being more accurate than C, presumably because of caching issues even when using autoflush (this is usually overcome by waiting a while after writing to the tempfile before attempting to C it). Not exported by default. Current API available since 0.14. =item B Similar to C except after file comparison using cmpstat, the filehandle is closed prior to attempting to unlink the file. This allows the file to be removed without using an END block, but does mean that the post-unlink comparison of the filehandle state provided by C is not available. unlink1($fh, $path) or die "Error closing and unlinking file"; Usually called from the object destructor when using the OO interface. Not exported by default. This function is disabled if the global variable $KEEP_ALL is true. Can call croak() if there is a security anomaly during the stat() comparison. Current API available since 0.14. =item B Calling this function will cause any temp files or temp directories that are registered for removal to be removed. This happens automatically when the process exits but can be triggered manually if the caller is sure that none of the temp files are required. This method can be registered as an Apache callback. Note that if a temp directory is your current directory, it cannot be removed. C out of the directory first before calling C. (For the cleanup at program exit when the CLEANUP flag is set, this happens automatically.) On OSes where temp files are automatically removed when the temp file is closed, calling this function will have no effect other than to remove temporary directories (which may include temporary files). File::Temp::cleanup(); Not exported by default. Current API available since 0.15. =back =head1 PACKAGE VARIABLES These functions control the global state of the package. =over 4 =item B Controls the lengths to which the module will go to check the safety of the temporary file or directory before proceeding. Options are: =over 8 =item STANDARD Do the basic security measures to ensure the directory exists and is writable, that temporary files are opened only if they do not already exist, and that possible race conditions are avoided. Finally the L function is used to remove files safely. =item MEDIUM In addition to the STANDARD security, the output directory is checked to make sure that it is owned either by root or the user running the program. If the directory is writable by group or by other, it is then checked to make sure that the sticky bit is set. Will not work on platforms that do not support the C<-k> test for sticky bit. =item HIGH In addition to the MEDIUM security checks, also check for the possibility of ``chown() giveaway'' using the L sysconf() function. If this is a possibility, each directory in the path is checked in turn for safeness, recursively walking back to the root directory. For platforms that do not support the L C<_PC_CHOWN_RESTRICTED> symbol (for example, Windows NT) it is assumed that ``chown() giveaway'' is possible and the recursive test is performed. =back The level can be changed as follows: File::Temp->safe_level( File::Temp::HIGH ); The level constants are not exported by the module. Currently, you must be running at least perl v5.6.0 in order to run with MEDIUM or HIGH security. This is simply because the safety tests use functions from L that are not available in older versions of perl. The problem is that the version number for Fcntl is the same in perl 5.6.0 and in 5.005_03 even though they are different versions. On systems that do not support the HIGH or MEDIUM safety levels (for example Win NT or OS/2) any attempt to change the level will be ignored. The decision to ignore rather than raise an exception allows portable programs to be written with high security in mind for the systems that can support this without those programs failing on systems where the extra tests are irrelevant. If you really need to see whether the change has been accepted simply examine the return value of C. $newlevel = File::Temp->safe_level( File::Temp::HIGH ); die "Could not change to high security" if $newlevel != File::Temp::HIGH; Available since 0.05. =item TopSystemUID This is the highest UID on the current system that refers to a root UID. This is used to make sure that the temporary directory is owned by a system UID (C, C, C etc) rather than simply by root. This is required since on many unix systems C is not owned by root. Default is to assume that any UID less than or equal to 10 is a root UID. File::Temp->top_system_uid(10); my $topid = File::Temp->top_system_uid; This value can be adjusted to reduce security checking if required. The value is only relevant when C is set to MEDIUM or higher. Available since 0.05. =item B<$KEEP_ALL> Controls whether temporary files and directories should be retained regardless of any instructions in the program to remove them automatically. This is useful for debugging but should not be used in production code. $File::Temp::KEEP_ALL = 1; Default is for files to be removed as requested by the caller. In some cases, files will only be retained if this variable is true when the file is created. This means that you can not create a temporary file, set this variable and expect the temp file to still be around when the program exits. =item B<$DEBUG> Controls whether debugging messages should be enabled. $File::Temp::DEBUG = 1; Default is for debugging mode to be disabled. Available since 0.15. =back =head1 WARNING For maximum security, endeavour always to avoid ever looking at, touching, or even imputing the existence of the filename. You do not know that that filename is connected to the same file as the handle you have, and attempts to check this can only trigger more race conditions. It's far more secure to use the filehandle alone and dispense with the filename altogether. If you need to pass the handle to something that expects a filename then on a unix system you can use C<"/dev/fd/" . fileno($fh)> for arbitrary programs. Perl code that uses the 2-argument version of C<< open >> can be passed C<< "+<=&" . fileno($fh) >>. Otherwise you will need to pass the filename. You will have to clear the close-on-exec bit on that file descriptor before passing it to another process. use Fcntl qw/F_SETFD F_GETFD/; fcntl($tmpfh, F_SETFD, 0) or die "Can't clear close-on-exec flag on temp fh: $!\n"; =head2 Temporary files and NFS Some problems are associated with using temporary files that reside on NFS file systems and it is recommended that a local filesystem is used whenever possible. Some of the security tests will most probably fail when the temp file is not local. Additionally, be aware that the performance of I/O operations over NFS will not be as good as for a local disk. =head2 Forking In some cases files created by File::Temp are removed from within an END block. Since END blocks are triggered when a child process exits (unless C is used by the child) File::Temp takes care to only remove those temp files created by a particular process ID. This means that a child will not attempt to remove temp files created by the parent process. If you are forking many processes in parallel that are all creating temporary files, you may need to reset the random number seed using srand(EXPR) in each child else all the children will attempt to walk through the same set of random file names and may well cause themselves to give up if they exceed the number of retry attempts. =head2 Directory removal Note that if you have chdir'ed into the temporary directory and it is subsequently cleaned up (either in the END block or as part of object destruction), then you will get a warning from File::Path::rmtree(). =head2 Taint mode If you need to run code under taint mode, updating to the latest L is highly recommended. On Windows, if the directory given by L isn't writable, File::Temp will attempt to fallback to the user's local application data directory or croak with an error. =head2 BINMODE The file returned by File::Temp will have been opened in binary mode if such a mode is available. If that is not correct, use the C function to change the mode of the filehandle. Note that you can modify the encoding of a file opened by File::Temp also by using C. =head1 HISTORY Originally began life in May 1999 as an XS interface to the system mkstemp() function. In March 2000, the OpenBSD mkstemp() code was translated to Perl for total control of the code's security checking, to ensure the presence of the function regardless of operating system and to help with portability. The module was shipped as a standard part of perl from v5.6.1. Thanks to Tom Christiansen for suggesting that this module should be written and providing ideas for code improvements and security enhancements. =head1 SEE ALSO L, L, L, L See L and L, L for different implementations of temporary file handling. See L for an alternative object-oriented wrapper for the C function. =for Pod::Coverage STRINGIFY NUMIFY top_system_uid =head1 SUPPORT Bugs may be submitted through L (or L). There is also a mailing list available for users of this distribution, at L. There is also an irc channel available for users of this distribution, at L on C|irc://irc.perl.org/#toolchain>. =head1 AUTHOR Tim Jenness =head1 CONTRIBUTORS =for stopwords Tim Jenness Karen Etheridge David Golden Slaven Rezic mohawk2 Roy Ivy III Peter Rabbitson Olivier Mengué John Acklam Gim Yee Nicolas R Brian Mowrey Dagfinn Ilmari Mannsåker Steinbrunner Ed Avis Guillem Jover James E. Keenan Kevin Ryde Ben Tilly =over 4 =item * Tim Jenness =item * Karen Etheridge =item * David Golden =item * Slaven Rezic =item * mohawk2 =item * Roy Ivy III =item * Peter Rabbitson =item * Olivier Mengué =item * Peter John Acklam =item * Tim Gim Yee =item * Nicolas R =item * Brian Mowrey =item * Dagfinn Ilmari Mannsåker =item * David Steinbrunner =item * Ed Avis =item * Guillem Jover =item * James E. Keenan =item * Kevin Ryde =item * Ben Tilly =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2020 by Tim Jenness and the UK Particle Physics and Astronomy Research Council. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut FILEf70cb08a/Exporter/Heavy.pmpackage Exporter::Heavy; use strict; no strict 'refs'; # On one line so MakeMaker will see it. our $VERSION = '5.77'; =head1 NAME Exporter::Heavy - Exporter guts =head1 SYNOPSIS (internal use only) =head1 DESCRIPTION No user-serviceable parts inside. =cut # # We go to a lot of trouble not to 'require Carp' at file scope, # because Carp requires Exporter, and something has to give. # sub _rebuild_cache { my ($pkg, $exports, $cache) = @_; s/^&// foreach @$exports; @{$cache}{@$exports} = (1) x @$exports; my $ok = \@{"${pkg}::EXPORT_OK"}; if (@$ok) { s/^&// foreach @$ok; @{$cache}{@$ok} = (1) x @$ok; } } sub heavy_export { # Save the old __WARN__ handler in case it was defined my $oldwarn = $SIG{__WARN__}; # First make import warnings look like they're coming from the "use". local $SIG{__WARN__} = sub { # restore it back so proper stacking occurs local $SIG{__WARN__} = $oldwarn; my $text = shift; if ($text =~ s/ at \S*Exporter\S*.pm line \d+.*\n//) { require Carp; local $Carp::CarpLevel = 1; # ignore package calling us too. Carp::carp($text); } else { warn $text; } }; local $SIG{__DIE__} = sub { require Carp; local $Carp::CarpLevel = 1; # ignore package calling us too. Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT") if $_[0] =~ /^Unable to create sub named "(.*?)::"/; }; my($pkg, $callpkg, @imports) = @_; my($type, $sym, $cache_is_current, $oops); my($exports, $export_cache) = (\@{"${pkg}::EXPORT"}, $Exporter::Cache{$pkg} ||= {}); if (@imports) { if (!%$export_cache) { _rebuild_cache ($pkg, $exports, $export_cache); $cache_is_current = 1; } if (grep m{^[/!:]}, @imports) { my $tagsref = \%{"${pkg}::EXPORT_TAGS"}; my $tagdata; my %imports; my($remove, $spec, @names, @allexports); # negated first item implies starting with default set: unshift @imports, ':DEFAULT' if $imports[0] =~ m/^!/; foreach $spec (@imports){ $remove = $spec =~ s/^!//; if ($spec =~ s/^://){ if ($spec eq 'DEFAULT'){ @names = @$exports; } elsif ($tagdata = $tagsref->{$spec}) { @names = @$tagdata; } else { warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS]; ++$oops; next; } } elsif ($spec =~ m:^/(.*)/$:){ my $patn = $1; @allexports = keys %$export_cache unless @allexports; # only do keys once @names = grep(/$patn/, @allexports); # not anchored by default } else { @names = ($spec); # is a normal symbol name } warn "Import ".($remove ? "del":"add").": @names " if $Exporter::Verbose; if ($remove) { foreach $sym (@names) { delete $imports{$sym} } } else { @imports{@names} = (1) x @names; } } @imports = keys %imports; } my @carp; foreach $sym (@imports) { if (!$export_cache->{$sym}) { if ($sym =~ m/^\d/) { $pkg->VERSION($sym); # inherit from UNIVERSAL # If the version number was the only thing specified # then we should act as if nothing was specified: if (@imports == 1) { @imports = @$exports; last; } # We need a way to emulate 'use Foo ()' but still # allow an easy version check: "use Foo 1.23, ''"; if (@imports == 2 and !$imports[1]) { @imports = (); last; } } elsif ($sym !~ s/^&// || !$export_cache->{$sym}) { # Last chance - see if they've updated EXPORT_OK since we # cached it. unless ($cache_is_current) { %$export_cache = (); _rebuild_cache ($pkg, $exports, $export_cache); $cache_is_current = 1; } if (!$export_cache->{$sym}) { # accumulate the non-exports push @carp, qq["$sym" is not exported by the $pkg module]; $oops++; } } } } if ($oops) { require Carp; Carp::croak(join("\n", @carp, "Can't continue after import errors")); } } else { @imports = @$exports; } my($fail, $fail_cache) = (\@{"${pkg}::EXPORT_FAIL"}, $Exporter::FailCache{$pkg} ||= {}); if (@$fail) { if (!%$fail_cache) { # Build cache of symbols. Optimise the lookup by adding # barewords twice... both with and without a leading &. # (Technique could be applied to $export_cache at cost of memory) my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @$fail; warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Exporter::Verbose; @{$fail_cache}{@expanded} = (1) x @expanded; } my @failed; foreach $sym (@imports) { push(@failed, $sym) if $fail_cache->{$sym} } if (@failed) { @failed = $pkg->export_fail(@failed); foreach $sym (@failed) { require Carp; Carp::carp(qq["$sym" is not implemented by the $pkg module ], "on this architecture"); } if (@failed) { require Carp; Carp::croak("Can't continue after import errors"); } } } warn "Importing into $callpkg from $pkg: ", join(", ",sort @imports) if $Exporter::Verbose; foreach $sym (@imports) { # shortcut for the common case of no type character (*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next) unless $sym =~ s/^(\W)//; $type = $1; no warnings 'once'; *{"${callpkg}::$sym"} = $type eq '&' ? \&{"${pkg}::$sym"} : $type eq '$' ? \${"${pkg}::$sym"} : $type eq '@' ? \@{"${pkg}::$sym"} : $type eq '%' ? \%{"${pkg}::$sym"} : $type eq '*' ? *{"${pkg}::$sym"} : do { require Carp; Carp::croak("Can't export symbol: $type$sym") }; } } sub heavy_export_to_level { my $pkg = shift; my $level = shift; (undef) = shift; # XXX redundant arg my $callpkg = caller($level); $pkg->export($callpkg, @_); } # Utility functions sub _push_tags { my($pkg, $var, $syms) = @_; my @nontag = (); my $export_tags = \%{"${pkg}::EXPORT_TAGS"}; push(@{"${pkg}::$var"}, map { $export_tags->{$_} ? @{$export_tags->{$_}} : scalar(push(@nontag,$_),$_) } (@$syms) ? @$syms : keys %$export_tags); if (@nontag and $^W) { # This may change to a die one day require Carp; Carp::carp(join(", ", @nontag)." are not tags of $pkg"); } } sub heavy_require_version { my($self, $wanted) = @_; my $pkg = ref $self || $self; return ${pkg}->VERSION($wanted); } sub heavy_export_tags { _push_tags((caller)[0], "EXPORT", \@_); } sub heavy_export_ok_tags { _push_tags((caller)[0], "EXPORT_OK", \@_); } 1; FILE8902686e/File/Path.pmpackage File::Path; use 5.005_04; use strict; use Cwd 'getcwd'; use File::Basename (); use File::Spec (); BEGIN { if ( $] < 5.006 ) { # can't say 'opendir my $dh, $dirname' # need to initialise $dh eval 'use Symbol'; } } use Exporter (); use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); $VERSION = '2.18'; $VERSION = eval $VERSION; @ISA = qw(Exporter); @EXPORT = qw(mkpath rmtree); @EXPORT_OK = qw(make_path remove_tree); BEGIN { for (qw(VMS MacOS MSWin32 os2)) { no strict 'refs'; *{"_IS_\U$_"} = $^O eq $_ ? sub () { 1 } : sub () { 0 }; } # These OSes complain if you want to remove a file that you have no # write permission to: *_FORCE_WRITABLE = ( grep { $^O eq $_ } qw(amigaos dos epoc MSWin32 MacOS os2) ) ? sub () { 1 } : sub () { 0 }; # Unix-like systems need to stat each directory in order to detect # race condition. MS-Windows is immune to this particular attack. *_NEED_STAT_CHECK = !(_IS_MSWIN32()) ? sub () { 1 } : sub () { 0 }; } sub _carp { require Carp; goto &Carp::carp; } sub _croak { require Carp; goto &Carp::croak; } sub _error { my $arg = shift; my $message = shift; my $object = shift; if ( $arg->{error} ) { $object = '' unless defined $object; $message .= ": $!" if $!; push @{ ${ $arg->{error} } }, { $object => $message }; } else { _carp( defined($object) ? "$message for $object: $!" : "$message: $!" ); } } sub __is_arg { my ($arg) = @_; # If client code blessed an array ref to HASH, this will not work # properly. We could have done $arg->isa() wrapped in eval, but # that would be expensive. This implementation should suffice. # We could have also used Scalar::Util:blessed, but we choose not # to add this dependency return ( ref $arg eq 'HASH' ); } sub make_path { push @_, {} unless @_ and __is_arg( $_[-1] ); goto &mkpath; } sub mkpath { my $old_style = !( @_ and __is_arg( $_[-1] ) ); my $data; my $paths; if ($old_style) { my ( $verbose, $mode ); ( $paths, $verbose, $mode ) = @_; $paths = [$paths] unless UNIVERSAL::isa( $paths, 'ARRAY' ); $data->{verbose} = $verbose; $data->{mode} = defined $mode ? $mode : oct '777'; } else { my %args_permitted = map { $_ => 1 } ( qw| chmod error group mask mode owner uid user verbose | ); my %not_on_win32_args = map { $_ => 1 } ( qw| group owner uid user | ); my @bad_args = (); my @win32_implausible_args = (); my $arg = pop @_; for my $k (sort keys %{$arg}) { if (! $args_permitted{$k}) { push @bad_args, $k; } elsif ($not_on_win32_args{$k} and _IS_MSWIN32) { push @win32_implausible_args, $k; } else { $data->{$k} = $arg->{$k}; } } _carp("Unrecognized option(s) passed to mkpath() or make_path(): @bad_args") if @bad_args; _carp("Option(s) implausible on Win32 passed to mkpath() or make_path(): @win32_implausible_args") if @win32_implausible_args; $data->{mode} = delete $data->{mask} if exists $data->{mask}; $data->{mode} = oct '777' unless exists $data->{mode}; ${ $data->{error} } = [] if exists $data->{error}; unless (@win32_implausible_args) { $data->{owner} = delete $data->{user} if exists $data->{user}; $data->{owner} = delete $data->{uid} if exists $data->{uid}; if ( exists $data->{owner} and $data->{owner} =~ /\D/ ) { my $uid = ( getpwnam $data->{owner} )[2]; if ( defined $uid ) { $data->{owner} = $uid; } else { _error( $data, "unable to map $data->{owner} to a uid, ownership not changed" ); delete $data->{owner}; } } if ( exists $data->{group} and $data->{group} =~ /\D/ ) { my $gid = ( getgrnam $data->{group} )[2]; if ( defined $gid ) { $data->{group} = $gid; } else { _error( $data, "unable to map $data->{group} to a gid, group ownership not changed" ); delete $data->{group}; } } if ( exists $data->{owner} and not exists $data->{group} ) { $data->{group} = -1; # chown will leave group unchanged } if ( exists $data->{group} and not exists $data->{owner} ) { $data->{owner} = -1; # chown will leave owner unchanged } } $paths = [@_]; } return _mkpath( $data, $paths ); } sub _mkpath { my $data = shift; my $paths = shift; my ( @created ); foreach my $path ( @{$paths} ) { next unless defined($path) and length($path); $path .= '/' if _IS_OS2 and $path =~ /^\w:\z/s; # feature of CRT # Logic wants Unix paths, so go with the flow. if (_IS_VMS) { next if $path eq '/'; $path = VMS::Filespec::unixify($path); } next if -d $path; my $parent = File::Basename::dirname($path); # Coverage note: It's not clear how we would test the condition: # '-d $parent or $path eq $parent' unless ( -d $parent or $path eq $parent ) { push( @created, _mkpath( $data, [$parent] ) ); } print "mkdir $path\n" if $data->{verbose}; if ( mkdir( $path, $data->{mode} ) ) { push( @created, $path ); if ( exists $data->{owner} ) { # NB: $data->{group} guaranteed to be set during initialisation if ( !chown $data->{owner}, $data->{group}, $path ) { _error( $data, "Cannot change ownership of $path to $data->{owner}:$data->{group}" ); } } if ( exists $data->{chmod} ) { # Coverage note: It's not clear how we would trigger the next # 'if' block. Failure of 'chmod' might first result in a # system error: "Permission denied". if ( !chmod $data->{chmod}, $path ) { _error( $data, "Cannot change permissions of $path to $data->{chmod}" ); } } } else { my $save_bang = $!; # From 'perldoc perlvar': $EXTENDED_OS_ERROR ($^E) is documented # as: # Error information specific to the current operating system. At the # moment, this differs from "$!" under only VMS, OS/2, and Win32 # (and for MacPerl). On all other platforms, $^E is always just the # same as $!. my ( $e, $e1 ) = ( $save_bang, $^E ); $e .= "; $e1" if $e ne $e1; # allow for another process to have created it meanwhile if ( ! -d $path ) { $! = $save_bang; if ( $data->{error} ) { push @{ ${ $data->{error} } }, { $path => $e }; } else { _croak("mkdir $path: $e"); } } } } return @created; } sub remove_tree { push @_, {} unless @_ and __is_arg( $_[-1] ); goto &rmtree; } sub _is_subdir { my ( $dir, $test ) = @_; my ( $dv, $dd ) = File::Spec->splitpath( $dir, 1 ); my ( $tv, $td ) = File::Spec->splitpath( $test, 1 ); # not on same volume return 0 if $dv ne $tv; my @d = File::Spec->splitdir($dd); my @t = File::Spec->splitdir($td); # @t can't be a subdir if it's shorter than @d return 0 if @t < @d; return join( '/', @d ) eq join( '/', splice @t, 0, +@d ); } sub rmtree { my $old_style = !( @_ and __is_arg( $_[-1] ) ); my ($arg, $data, $paths); if ($old_style) { my ( $verbose, $safe ); ( $paths, $verbose, $safe ) = @_; $data->{verbose} = $verbose; $data->{safe} = defined $safe ? $safe : 0; if ( defined($paths) and length($paths) ) { $paths = [$paths] unless UNIVERSAL::isa( $paths, 'ARRAY' ); } else { _carp("No root path(s) specified\n"); return 0; } } else { my %args_permitted = map { $_ => 1 } ( qw| error keep_root result safe verbose | ); my @bad_args = (); my $arg = pop @_; for my $k (sort keys %{$arg}) { if (! $args_permitted{$k}) { push @bad_args, $k; } else { $data->{$k} = $arg->{$k}; } } _carp("Unrecognized option(s) passed to remove_tree(): @bad_args") if @bad_args; ${ $data->{error} } = [] if exists $data->{error}; ${ $data->{result} } = [] if exists $data->{result}; # Wouldn't it make sense to do some validation on @_ before assigning # to $paths here? # In the $old_style case we guarantee that each path is both defined # and non-empty. We don't check that here, which means we have to # check it later in the first condition in this line: # if ( $ortho_root_length && _is_subdir( $ortho_root, $ortho_cwd ) ) { # Granted, that would be a change in behavior for the two # non-old-style interfaces. $paths = [@_]; } $data->{prefix} = ''; $data->{depth} = 0; my @clean_path; $data->{cwd} = getcwd() or do { _error( $data, "cannot fetch initial working directory" ); return 0; }; for ( $data->{cwd} ) { /\A(.*)\Z/s; $_ = $1 } # untaint for my $p (@$paths) { # need to fixup case and map \ to / on Windows my $ortho_root = _IS_MSWIN32 ? _slash_lc($p) : $p; my $ortho_cwd = _IS_MSWIN32 ? _slash_lc( $data->{cwd} ) : $data->{cwd}; my $ortho_root_length = length($ortho_root); $ortho_root_length-- if _IS_VMS; # don't compare '.' with ']' if ( $ortho_root_length && _is_subdir( $ortho_root, $ortho_cwd ) ) { local $! = 0; _error( $data, "cannot remove path when cwd is $data->{cwd}", $p ); next; } if (_IS_MACOS) { $p = ":$p" unless $p =~ /:/; $p .= ":" unless $p =~ /:\z/; } elsif ( _IS_MSWIN32 ) { $p =~ s{[/\\]\z}{}; } else { $p =~ s{/\z}{}; } push @clean_path, $p; } @{$data}{qw(device inode)} = ( lstat $data->{cwd} )[ 0, 1 ] or do { _error( $data, "cannot stat initial working directory", $data->{cwd} ); return 0; }; return _rmtree( $data, \@clean_path ); } sub _rmtree { my $data = shift; my $paths = shift; my $count = 0; my $curdir = File::Spec->curdir(); my $updir = File::Spec->updir(); my ( @files, $root ); ROOT_DIR: foreach my $root (@$paths) { # since we chdir into each directory, it may not be obvious # to figure out where we are if we generate a message about # a file name. We therefore construct a semi-canonical # filename, anchored from the directory being unlinked (as # opposed to being truly canonical, anchored from the root (/). my $canon = $data->{prefix} ? File::Spec->catfile( $data->{prefix}, $root ) : $root; my ( $ldev, $lino, $perm ) = ( lstat $root )[ 0, 1, 2 ] or next ROOT_DIR; if ( -d _ ) { $root = VMS::Filespec::vmspath( VMS::Filespec::pathify($root) ) if _IS_VMS; if ( !chdir($root) ) { # see if we can escalate privileges to get in # (e.g. funny protection mask such as -w- instead of rwx) # This uses fchmod to avoid traversing outside of the proper # location (CVE-2017-6512) my $root_fh; if (open($root_fh, '<', $root)) { my ($fh_dev, $fh_inode) = (stat $root_fh )[0,1]; $perm &= oct '7777'; my $nperm = $perm | oct '700'; local $@; if ( !( $data->{safe} or $nperm == $perm or !-d _ or $fh_dev ne $ldev or $fh_inode ne $lino or eval { chmod( $nperm, $root_fh ) } ) ) { _error( $data, "cannot make child directory read-write-exec", $canon ); next ROOT_DIR; } close $root_fh; } if ( !chdir($root) ) { _error( $data, "cannot chdir to child", $canon ); next ROOT_DIR; } } my ( $cur_dev, $cur_inode, $perm ) = ( stat $curdir )[ 0, 1, 2 ] or do { _error( $data, "cannot stat current working directory", $canon ); next ROOT_DIR; }; if (_NEED_STAT_CHECK) { ( $ldev eq $cur_dev and $lino eq $cur_inode ) or _croak( "directory $canon changed before chdir, expected dev=$ldev ino=$lino, actual dev=$cur_dev ino=$cur_inode, aborting." ); } $perm &= oct '7777'; # don't forget setuid, setgid, sticky bits my $nperm = $perm | oct '700'; # notabene: 0700 is for making readable in the first place, # it's also intended to change it to writable in case we have # to recurse in which case we are better than rm -rf for # subtrees with strange permissions if ( !( $data->{safe} or $nperm == $perm or chmod( $nperm, $curdir ) ) ) { _error( $data, "cannot make directory read+writeable", $canon ); $nperm = $perm; } my $d; $d = gensym() if $] < 5.006; if ( !opendir $d, $curdir ) { _error( $data, "cannot opendir", $canon ); @files = (); } else { if ( !defined ${^TAINT} or ${^TAINT} ) { # Blindly untaint dir names if taint mode is active @files = map { /\A(.*)\z/s; $1 } readdir $d; } else { @files = readdir $d; } closedir $d; } if (_IS_VMS) { # Deleting large numbers of files from VMS Files-11 # filesystems is faster if done in reverse ASCIIbetical order. # include '.' to '.;' from blead patch #31775 @files = map { $_ eq '.' ? '.;' : $_ } reverse @files; } @files = grep { $_ ne $updir and $_ ne $curdir } @files; if (@files) { # remove the contained files before the directory itself my $narg = {%$data}; @{$narg}{qw(device inode cwd prefix depth)} = ( $cur_dev, $cur_inode, $updir, $canon, $data->{depth} + 1 ); $count += _rmtree( $narg, \@files ); } # restore directory permissions of required now (in case the rmdir # below fails), while we are still in the directory and may do so # without a race via '.' if ( $nperm != $perm and not chmod( $perm, $curdir ) ) { _error( $data, "cannot reset chmod", $canon ); } # don't leave the client code in an unexpected directory chdir( $data->{cwd} ) or _croak("cannot chdir to $data->{cwd} from $canon: $!, aborting."); # ensure that a chdir upwards didn't take us somewhere other # than we expected (see CVE-2002-0435) ( $cur_dev, $cur_inode ) = ( stat $curdir )[ 0, 1 ] or _croak( "cannot stat prior working directory $data->{cwd}: $!, aborting." ); if (_NEED_STAT_CHECK) { ( $data->{device} eq $cur_dev and $data->{inode} eq $cur_inode ) or _croak( "previous directory $data->{cwd} " . "changed before entering $canon, " . "expected dev=$ldev ino=$lino, " . "actual dev=$cur_dev ino=$cur_inode, aborting." ); } if ( $data->{depth} or !$data->{keep_root} ) { if ( $data->{safe} && ( _IS_VMS ? !&VMS::Filespec::candelete($root) : !-w $root ) ) { print "skipped $root\n" if $data->{verbose}; next ROOT_DIR; } if ( _FORCE_WRITABLE and !chmod $perm | oct '700', $root ) { _error( $data, "cannot make directory writeable", $canon ); } print "rmdir $root\n" if $data->{verbose}; if ( rmdir $root ) { push @{ ${ $data->{result} } }, $root if $data->{result}; ++$count; } else { _error( $data, "cannot remove directory", $canon ); if ( _FORCE_WRITABLE && !chmod( $perm, ( _IS_VMS ? VMS::Filespec::fileify($root) : $root ) ) ) { _error( $data, sprintf( "cannot restore permissions to 0%o", $perm ), $canon ); } } } } else { # not a directory $root = VMS::Filespec::vmsify("./$root") if _IS_VMS && !File::Spec->file_name_is_absolute($root) && ( $root !~ m/(?]+/ ); # not already in VMS syntax if ( $data->{safe} && ( _IS_VMS ? !&VMS::Filespec::candelete($root) : !( -l $root || -w $root ) ) ) { print "skipped $root\n" if $data->{verbose}; next ROOT_DIR; } my $nperm = $perm & oct '7777' | oct '600'; if ( _FORCE_WRITABLE and $nperm != $perm and not chmod $nperm, $root ) { _error( $data, "cannot make file writeable", $canon ); } print "unlink $canon\n" if $data->{verbose}; # delete all versions under VMS for ( ; ; ) { if ( unlink $root ) { push @{ ${ $data->{result} } }, $root if $data->{result}; } else { _error( $data, "cannot unlink file", $canon ); _FORCE_WRITABLE and chmod( $perm, $root ) or _error( $data, sprintf( "cannot restore permissions to 0%o", $perm ), $canon ); last; } ++$count; last unless _IS_VMS && lstat $root; } } } return $count; } sub _slash_lc { # fix up slashes and case on MSWin32 so that we can determine that # c:\path\to\dir is underneath C:/Path/To my $path = shift; $path =~ tr{\\}{/}; return lc($path); } 1; __END__ =head1 NAME File::Path - Create or remove directory trees =head1 VERSION 2.18 - released November 4 2020. =head1 SYNOPSIS use File::Path qw(make_path remove_tree); @created = make_path('foo/bar/baz', '/zug/zwang'); @created = make_path('foo/bar/baz', '/zug/zwang', { verbose => 1, mode => 0711, }); make_path('foo/bar/baz', '/zug/zwang', { chmod => 0777, }); $removed_count = remove_tree('foo/bar/baz', '/zug/zwang', { verbose => 1, error => \my $err_list, safe => 1, }); # legacy (interface promoted before v2.00) @created = mkpath('/foo/bar/baz'); @created = mkpath('/foo/bar/baz', 1, 0711); @created = mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711); $removed_count = rmtree('foo/bar/baz', 1, 1); $removed_count = rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1); # legacy (interface promoted before v2.06) @created = mkpath('foo/bar/baz', '/zug/zwang', { verbose => 1, mode => 0711 }); $removed_count = rmtree('foo/bar/baz', '/zug/zwang', { verbose => 1, mode => 0711 }); =head1 DESCRIPTION This module provides a convenient way to create directories of arbitrary depth and to delete an entire directory subtree from the filesystem. The following functions are provided: =over =item make_path( $dir1, $dir2, .... ) =item make_path( $dir1, $dir2, ...., \%opts ) The C function creates the given directories if they don't exist before, much like the Unix command C. The function accepts a list of directories to be created. Its behaviour may be tuned by an optional hashref appearing as the last parameter on the call. The function returns the list of directories actually created during the call; in scalar context the number of directories created. The following keys are recognised in the option hash: =over =item mode => $num The numeric permissions mode to apply to each created directory (defaults to C<0777>), to be modified by the current C. If the directory already exists (and thus does not need to be created), the permissions will not be modified. C is recognised as an alias for this parameter. =item chmod => $num Takes a numeric mode to apply to each created directory (not modified by the current C). If the directory already exists (and thus does not need to be created), the permissions will not be modified. =item verbose => $bool If present, will cause C to print the name of each directory as it is created. By default nothing is printed. =item error => \$err If present, it should be a reference to a scalar. This scalar will be made to reference an array, which will be used to store any errors that are encountered. See the L section for more information. If this parameter is not used, certain error conditions may raise a fatal error that will cause the program to halt, unless trapped in an C block. =item owner => $owner =item user => $owner =item uid => $owner If present, will cause any created directory to be owned by C<$owner>. If the value is numeric, it will be interpreted as a uid; otherwise a username is assumed. An error will be issued if the username cannot be mapped to a uid, the uid does not exist or the process lacks the privileges to change ownership. Ownership of directories that already exist will not be changed. C and C are aliases of C. =item group => $group If present, will cause any created directory to be owned by the group C<$group>. If the value is numeric, it will be interpreted as a gid; otherwise a group name is assumed. An error will be issued if the group name cannot be mapped to a gid, the gid does not exist or the process lacks the privileges to change group ownership. Group ownership of directories that already exist will not be changed. make_path '/var/tmp/webcache', {owner=>'nobody', group=>'nogroup'}; =back =item mkpath( $dir ) =item mkpath( $dir, $verbose, $mode ) =item mkpath( [$dir1, $dir2,...], $verbose, $mode ) =item mkpath( $dir1, $dir2,..., \%opt ) The C function provide the legacy interface of C with a different interpretation of the arguments passed. The behaviour and return value of the function is otherwise identical to C. =item remove_tree( $dir1, $dir2, .... ) =item remove_tree( $dir1, $dir2, ...., \%opts ) The C function deletes the given directories and any files and subdirectories they might contain, much like the Unix command C or the Windows commands C and C. The function accepts a list of directories to be removed. (In point of fact, it will also accept filesystem entries which are not directories, such as regular files and symlinks. But, as its name suggests, its intent is to remove trees rather than individual files.) C's behaviour may be tuned by an optional hashref appearing as the last parameter on the call. If an empty string is passed to C, an error will occur. B For security reasons, we strongly advise use of the hashref-as-final-argument syntax -- specifically, with a setting of the C element to a true value. remove_tree( $dir1, $dir2, ...., { safe => 1, ... # other key-value pairs }, ); The function returns the number of files successfully deleted. The following keys are recognised in the option hash: =over =item verbose => $bool If present, will cause C to print the name of each file as it is unlinked. By default nothing is printed. =item safe => $bool When set to a true value, will cause C to skip the files for which the process lacks the required privileges needed to delete files, such as delete privileges on VMS. In other words, the code will make no attempt to alter file permissions. Thus, if the process is interrupted, no filesystem object will be left in a more permissive mode. =item keep_root => $bool When set to a true value, will cause all files and subdirectories to be removed, except the initially specified directories. This comes in handy when cleaning out an application's scratch directory. remove_tree( '/tmp', {keep_root => 1} ); =item result => \$res If present, it should be a reference to a scalar. This scalar will be made to reference an array, which will be used to store all files and directories unlinked during the call. If nothing is unlinked, the array will be empty. remove_tree( '/tmp', {result => \my $list} ); print "unlinked $_\n" for @$list; This is a useful alternative to the C key. =item error => \$err If present, it should be a reference to a scalar. This scalar will be made to reference an array, which will be used to store any errors that are encountered. See the L section for more information. Removing things is a much more dangerous proposition than creating things. As such, there are certain conditions that C may encounter that are so dangerous that the only sane action left is to kill the program. Use C to trap all that is reasonable (problems with permissions and the like), and let it die if things get out of hand. This is the safest course of action. =back =item rmtree( $dir ) =item rmtree( $dir, $verbose, $safe ) =item rmtree( [$dir1, $dir2,...], $verbose, $safe ) =item rmtree( $dir1, $dir2,..., \%opt ) The C function provide the legacy interface of C with a different interpretation of the arguments passed. The behaviour and return value of the function is otherwise identical to C. B For security reasons, we strongly advise use of the hashref-as-final-argument syntax, specifically with a setting of the C element to a true value. rmtree( $dir1, $dir2, ...., { safe => 1, ... # other key-value pairs }, ); =back =head2 ERROR HANDLING =over 4 =item B The following error handling mechanism is consistent throughout all code paths EXCEPT in cases where the ROOT node is nonexistent. In version 2.11 the maintainers attempted to rectify this inconsistency but too many downstream modules encountered problems. In such case, if you require root node evaluation or error checking prior to calling C or C, you should take additional precautions. =back If C or C encounters an error, a diagnostic message will be printed to C via C (for non-fatal errors) or via C (for fatal errors). If this behaviour is not desirable, the C attribute may be used to hold a reference to a variable, which will be used to store the diagnostics. The variable is made a reference to an array of hash references. Each hash contain a single key/value pair where the key is the name of the file, and the value is the error message (including the contents of C<$!> when appropriate). If a general error is encountered the diagnostic key will be empty. An example usage looks like: remove_tree( 'foo/bar', 'bar/rat', {error => \my $err} ); if ($err && @$err) { for my $diag (@$err) { my ($file, $message) = %$diag; if ($file eq '') { print "general error: $message\n"; } else { print "problem unlinking $file: $message\n"; } } } else { print "No error encountered\n"; } Note that if no errors are encountered, C<$err> will reference an empty array. This means that C<$err> will always end up TRUE; so you need to test C<@$err> to determine if errors occurred. =head2 NOTES C blindly exports C and C into the current namespace. These days, this is considered bad style, but to change it now would break too much code. Nonetheless, you are invited to specify what it is you are expecting to use: use File::Path 'rmtree'; The routines C and C are B exported by default. You must specify which ones you want to use. use File::Path 'remove_tree'; Note that a side-effect of the above is that C and C are no longer exported at all. This is due to the way the C module works. If you are migrating a codebase to use the new interface, you will have to list everything explicitly. But that's just good practice anyway. use File::Path qw(remove_tree rmtree); =head3 API CHANGES The API was changed in the 2.0 branch. For a time, C and C tried, unsuccessfully, to deal with the two different calling mechanisms. This approach was considered a failure. The new semantics are now only available with C and C. The old semantics are only available through C and C. Users are strongly encouraged to upgrade to at least 2.08 in order to avoid surprises. =head3 SECURITY CONSIDERATIONS There were race conditions in the 1.x implementations of File::Path's C function (although sometimes patched depending on the OS distribution or platform). The 2.0 version contains code to avoid the problem mentioned in CVE-2002-0435. See the following pages for more information: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905 http://www.nntp.perl.org/group/perl.perl5.porters/2005/01/msg97623.html http://www.debian.org/security/2005/dsa-696 Additionally, unless the C parameter is set (or the third parameter in the traditional interface is TRUE), should a C be interrupted, files that were originally in read-only mode may now have their permissions set to a read-write (or "delete OK") mode. The following CVE reports were previously filed against File-Path and are believed to have been addressed: =over 4 =item * L =item * L =back In February 2017 the cPanel Security Team reported an additional vulnerability in File-Path. The C logic to make directories traversable can be abused to set the mode on an attacker-chosen file to an attacker-chosen value. This is due to the time-of-check-to-time-of-use (TOCTTOU) race condition (L) between the C that decides the inode is a directory and the C that tries to make it user-rwx. CPAN versions 2.13 and later incorporate a patch provided by John Lightsey to address this problem. This vulnerability has been reported as CVE-2017-6512. =head1 DIAGNOSTICS FATAL errors will cause the program to halt (C), since the problem is so severe that it would be dangerous to continue. (This can always be trapped with C, but it's not a good idea. Under the circumstances, dying is the best thing to do). SEVERE errors may be trapped using the modern interface. If the they are not trapped, or if the old interface is used, such an error will cause the program will halt. All other errors may be trapped using the modern interface, otherwise they will be Ced about. Program execution will not be halted. =over 4 =item mkdir [path]: [errmsg] (SEVERE) C was unable to create the path. Probably some sort of permissions error at the point of departure or insufficient resources (such as free inodes on Unix). =item No root path(s) specified C was not given any paths to create. This message is only emitted if the routine is called with the traditional interface. The modern interface will remain silent if given nothing to do. =item No such file or directory On Windows, if C gives you this warning, it may mean that you have exceeded your filesystem's maximum path length. =item cannot fetch initial working directory: [errmsg] C attempted to determine the initial directory by calling C, but the call failed for some reason. No attempt will be made to delete anything. =item cannot stat initial working directory: [errmsg] C attempted to stat the initial directory (after having successfully obtained its name via C), however, the call failed for some reason. No attempt will be made to delete anything. =item cannot chdir to [dir]: [errmsg] C attempted to set the working directory in order to begin deleting the objects therein, but was unsuccessful. This is usually a permissions issue. The routine will continue to delete other things, but this directory will be left intact. =item directory [dir] changed before chdir, expected dev=[n] ino=[n], actual dev=[n] ino=[n], aborting. (FATAL) C recorded the device and inode of a directory, and then moved into it. It then performed a C on the current directory and detected that the device and inode were no longer the same. As this is at the heart of the race condition problem, the program will die at this point. =item cannot make directory [dir] read+writeable: [errmsg] C attempted to change the permissions on the current directory to ensure that subsequent unlinkings would not run into problems, but was unable to do so. The permissions remain as they were, and the program will carry on, doing the best it can. =item cannot read [dir]: [errmsg] C tried to read the contents of the directory in order to acquire the names of the directory entries to be unlinked, but was unsuccessful. This is usually a permissions issue. The program will continue, but the files in this directory will remain after the call. =item cannot reset chmod [dir]: [errmsg] C, after having deleted everything in a directory, attempted to restore its permissions to the original state but failed. The directory may wind up being left behind. =item cannot remove [dir] when cwd is [dir] The current working directory of the program is F and you are attempting to remove an ancestor, such as F. The directory tree is left untouched. The solution is to C out of the child directory to a place outside the directory tree to be removed. =item cannot chdir to [parent-dir] from [child-dir]: [errmsg], aborting. (FATAL) C, after having deleted everything and restored the permissions of a directory, was unable to chdir back to the parent. The program halts to avoid a race condition from occurring. =item cannot stat prior working directory [dir]: [errmsg], aborting. (FATAL) C was unable to stat the parent directory after having returned from the child. Since there is no way of knowing if we returned to where we think we should be (by comparing device and inode) the only way out is to C. =item previous directory [parent-dir] changed before entering [child-dir], expected dev=[n] ino=[n], actual dev=[n] ino=[n], aborting. (FATAL) When C returned from deleting files in a child directory, a check revealed that the parent directory it returned to wasn't the one it started out from. This is considered a sign of malicious activity. =item cannot make directory [dir] writeable: [errmsg] Just before removing a directory (after having successfully removed everything it contained), C attempted to set the permissions on the directory to ensure it could be removed and failed. Program execution continues, but the directory may possibly not be deleted. =item cannot remove directory [dir]: [errmsg] C attempted to remove a directory, but failed. This may be because some objects that were unable to be removed remain in the directory, or it could be a permissions issue. The directory will be left behind. =item cannot restore permissions of [dir] to [0nnn]: [errmsg] After having failed to remove a directory, C was unable to restore its permissions from a permissive state back to a possibly more restrictive setting. (Permissions given in octal). =item cannot make file [file] writeable: [errmsg] C attempted to force the permissions of a file to ensure it could be deleted, but failed to do so. It will, however, still attempt to unlink the file. =item cannot unlink file [file]: [errmsg] C failed to remove a file. Probably a permissions issue. =item cannot restore permissions of [file] to [0nnn]: [errmsg] After having failed to remove a file, C was also unable to restore the permissions on the file to a possibly less permissive setting. (Permissions given in octal). =item unable to map [owner] to a uid, ownership not changed"); C was instructed to give the ownership of created directories to the symbolic name [owner], but C did not return the corresponding numeric uid. The directory will be created, but ownership will not be changed. =item unable to map [group] to a gid, group ownership not changed C was instructed to give the group ownership of created directories to the symbolic name [group], but C did not return the corresponding numeric gid. The directory will be created, but group ownership will not be changed. =back =head1 SEE ALSO =over 4 =item * L Allows files and directories to be moved to the Trashcan/Recycle Bin (where they may later be restored if necessary) if the operating system supports such functionality. This feature may one day be made available directly in C. =item * L When removing directory trees, if you want to examine each file to decide whether to delete it (and possibly leaving large swathes alone), F offers a convenient and flexible approach to examining directory trees. =back =head1 BUGS AND LIMITATIONS The following describes F limitations and how to report bugs. =head2 MULTITHREADED APPLICATIONS F C and C will not work with multithreaded applications due to its use of C. At this time, no warning or error is generated in this situation. You will certainly encounter unexpected results. The implementation that surfaces this limitation will not be changed. See the F module for functionality similar to F but which does not C. =head2 NFS Mount Points F is not responsible for triggering the automounts, mirror mounts, and the contents of network mounted filesystems. If your NFS implementation requires an action to be performed on the filesystem in order for F to perform operations, it is strongly suggested you assure filesystem availability by reading the root of the mounted filesystem. =head2 REPORTING BUGS Please report all bugs on the RT queue, either via the web interface: L or by email: bug-File-Path@rt.cpan.org In either case, please B patches to the bug report rather than including them inline in the web post or the body of the email. You can also send pull requests to the Github repository: L =head1 ACKNOWLEDGEMENTS Paul Szabo identified the race condition originally, and Brendan O'Dea wrote an implementation for Debian that addressed the problem. That code was used as a basis for the current code. Their efforts are greatly appreciated. Gisle Aas made a number of improvements to the documentation for 2.07 and his advice and assistance is also greatly appreciated. =head1 AUTHORS Prior authors and maintainers: Tim Bunce, Charles Bailey, and David Landgren >. Current maintainers are Richard Elberger > and James (Jim) Keenan >. =head1 CONTRIBUTORS Contributors to File::Path, in alphabetical order by first name. =over 1 =item > =item Charlie Gonzalez > =item Craig A. Berry > =item James E Keenan > =item John Lightsey > =item Nigel Horne > =item Richard Elberger > =item Ryan Yee > =item Skye Shaw > =item Tom Lutz > =item Will Sheppard > =back =head1 COPYRIGHT This module is copyright (C) Charles Bailey, Tim Bunce, David Landgren, James Keenan and Richard Elberger 1995-2020. All rights reserved. =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut FILE9f207e19/File/GlobMapper.pm=Cpackage File::GlobMapper; use strict; use warnings; use Carp; our ($CSH_GLOB); BEGIN { if ($] < 5.006) { require File::BSDGlob; import File::BSDGlob qw(:glob) ; $CSH_GLOB = File::BSDGlob::GLOB_CSH() ; *globber = \&File::BSDGlob::csh_glob; } else { require File::Glob; import File::Glob qw(:glob) ; $CSH_GLOB = File::Glob::GLOB_CSH() ; #*globber = \&File::Glob::bsd_glob; *globber = \&File::Glob::csh_glob; } } our ($Error); our ($VERSION, @EXPORT_OK); $VERSION = '1.001'; @EXPORT_OK = qw( globmap ); our ($noPreBS, $metachars, $matchMetaRE, %mapping, %wildCount); $noPreBS = '(? '([^/]*)', '?' => '([^/])', '.' => '\.', '[' => '([', '(' => '(', ')' => ')', ); %wildCount = map { $_ => 1 } qw/ * ? . { ( [ /; sub globmap ($$;) { my $inputGlob = shift ; my $outputGlob = shift ; my $obj = File::GlobMapper->new($inputGlob, $outputGlob, @_) or croak "globmap: $Error" ; return $obj->getFileMap(); } sub new { my $class = shift ; my $inputGlob = shift ; my $outputGlob = shift ; # TODO -- flags needs to default to whatever File::Glob does my $flags = shift || $CSH_GLOB ; #my $flags = shift ; $inputGlob =~ s/^\s*\<\s*//; $inputGlob =~ s/\s*\>\s*$//; $outputGlob =~ s/^\s*\<\s*//; $outputGlob =~ s/\s*\>\s*$//; my %object = ( InputGlob => $inputGlob, OutputGlob => $outputGlob, GlobFlags => $flags, Braces => 0, WildCount => 0, Pairs => [], Sigil => '#', ); my $self = bless \%object, ref($class) || $class ; $self->_parseInputGlob() or return undef ; $self->_parseOutputGlob() or return undef ; my @inputFiles = globber($self->{InputGlob}, $flags) ; if (GLOB_ERROR) { $Error = $!; return undef ; } #if (whatever) { my $missing = grep { ! -e $_ } @inputFiles ; if ($missing) { $Error = "$missing input files do not exist"; return undef ; } } $self->{InputFiles} = \@inputFiles ; $self->_getFiles() or return undef ; return $self; } sub _retError { my $string = shift ; $Error = "$string in input fileglob" ; return undef ; } sub _unmatched { my $delimeter = shift ; _retError("Unmatched $delimeter"); return undef ; } sub _parseBit { my $self = shift ; my $string = shift ; my $out = ''; my $depth = 0 ; while ($string =~ s/(.*?)$noPreBS(,|$matchMetaRE)//) { $out .= quotemeta($1) ; $out .= $mapping{$2} if defined $mapping{$2}; ++ $self->{WildCount} if $wildCount{$2} ; if ($2 eq ',') { return _unmatched("(") if $depth ; $out .= '|'; } elsif ($2 eq '(') { ++ $depth ; } elsif ($2 eq ')') { return _unmatched(")") if ! $depth ; -- $depth ; } elsif ($2 eq '[') { # TODO -- quotemeta & check no '/' # TODO -- check for \] & other \ within the [] $string =~ s#(.*?\])## or return _unmatched("["); $out .= "$1)" ; } elsif ($2 eq ']') { return _unmatched("]"); } elsif ($2 eq '{' || $2 eq '}') { return _retError("Nested {} not allowed"); } } $out .= quotemeta $string; return _unmatched("(") if $depth ; return $out ; } sub _parseInputGlob { my $self = shift ; my $string = $self->{InputGlob} ; my $inGlob = ''; # Multiple concatenated *'s don't make sense #$string =~ s#\*\*+#*# ; # TODO -- Allow space to delimit patterns? #my @strings = split /\s+/, $string ; #for my $str (@strings) my $out = ''; my $depth = 0 ; while ($string =~ s/(.*?)$noPreBS($matchMetaRE)//) { $out .= quotemeta($1) ; $out .= $mapping{$2} if defined $mapping{$2}; ++ $self->{WildCount} if $wildCount{$2} ; if ($2 eq '(') { ++ $depth ; } elsif ($2 eq ')') { return _unmatched(")") if ! $depth ; -- $depth ; } elsif ($2 eq '[') { # TODO -- quotemeta & check no '/' or '(' or ')' # TODO -- check for \] & other \ within the [] $string =~ s#(.*?\])## or return _unmatched("["); $out .= "$1)" ; } elsif ($2 eq ']') { return _unmatched("]"); } elsif ($2 eq '}') { return _unmatched("}"); } elsif ($2 eq '{') { # TODO -- check no '/' within the {} # TODO -- check for \} & other \ within the {} my $tmp ; unless ( $string =~ s/(.*?)$noPreBS\}//) { return _unmatched("{"); } #$string =~ s#(.*?)\}##; #my $alt = join '|', # map { quotemeta $_ } # split "$noPreBS,", $1 ; my $alt = $self->_parseBit($1); defined $alt or return 0 ; $out .= "($alt)" ; ++ $self->{Braces} ; } } return _unmatched("(") if $depth ; $out .= quotemeta $string ; $self->{InputGlob} =~ s/$noPreBS[\(\)]//g; $self->{InputPattern} = $out ; #print "# INPUT '$self->{InputGlob}' => '$out'\n"; return 1 ; } sub _parseOutputGlob { my $self = shift ; my $string = $self->{OutputGlob} ; my $maxwild = $self->{WildCount}; if ($self->{GlobFlags} & GLOB_TILDE) #if (1) { $string =~ s{ ^ ~ # find a leading tilde ( # save this in $1 [^/] # a non-slash character * # repeated 0 or more times (0 means me) ) }{ $1 ? (getpwnam($1))[7] : ( $ENV{HOME} || $ENV{LOGDIR} ) }ex; } # max #1 must be == to max no of '*' in input while ( $string =~ m/#(\d)/g ) { croak "Max wild is #$maxwild, you tried #$1" if $1 > $maxwild ; } my $noPreBS = '(?{OutputGlob}' => '$string'\n"; $self->{OutputPattern} = $string ; return 1 ; } sub _getFiles { my $self = shift ; my %outInMapping = (); my %inFiles = () ; foreach my $inFile (@{ $self->{InputFiles} }) { next if $inFiles{$inFile} ++ ; my $outFile = $inFile ; if ( $inFile =~ m/$self->{InputPattern}/ ) { no warnings 'uninitialized'; eval "\$outFile = $self->{OutputPattern};" ; if (defined $outInMapping{$outFile}) { $Error = "multiple input files map to one output file"; return undef ; } $outInMapping{$outFile} = $inFile; push @{ $self->{Pairs} }, [$inFile, $outFile]; } } return 1 ; } sub getFileMap { my $self = shift ; return $self->{Pairs} ; } sub getHash { my $self = shift ; return { map { $_->[0] => $_->[1] } @{ $self->{Pairs} } } ; } 1; __END__ =head1 NAME File::GlobMapper - Extend File Glob to Allow Input and Output Files =head1 SYNOPSIS use File::GlobMapper qw( globmap ); my $aref = globmap $input => $output or die $File::GlobMapper::Error ; my $gm = File::GlobMapper->new( $input => $output ) or die $File::GlobMapper::Error ; =head1 DESCRIPTION This module needs Perl5.005 or better. This module takes the existing C module as a starting point and extends it to allow new filenames to be derived from the files matched by C. This can be useful when carrying out batch operations on multiple files that have both an input filename and output filename and the output file can be derived from the input filename. Examples of operations where this can be useful include, file renaming, file copying and file compression. =head2 Behind The Scenes To help explain what C does, consider what code you would write if you wanted to rename all files in the current directory that ended in C<.tar.gz> to C<.tgz>. So say these files are in the current directory alpha.tar.gz beta.tar.gz gamma.tar.gz and they need renamed to this alpha.tgz beta.tgz gamma.tgz Below is a possible implementation of a script to carry out the rename (error cases have been omitted) foreach my $old ( glob "*.tar.gz" ) { my $new = $old; $new =~ s#(.*)\.tar\.gz$#$1.tgz# ; rename $old => $new or die "Cannot rename '$old' to '$new': $!\n; } Notice that a file glob pattern C<*.tar.gz> was used to match the C<.tar.gz> files, then a fairly similar regular expression was used in the substitute to allow the new filename to be created. Given that the file glob is just a cut-down regular expression and that it has already done a lot of the hard work in pattern matching the filenames, wouldn't it be handy to be able to use the patterns in the fileglob to drive the new filename? Well, that's I what C does. Here is same snippet of code rewritten using C for my $pair (globmap '<*.tar.gz>' => '<#1.tgz>' ) { my ($from, $to) = @$pair; rename $from => $to or die "Cannot rename '$old' to '$new': $!\n; } So how does it work? Behind the scenes the C function does a combination of a file glob to match existing filenames followed by a substitute to create the new filenames. Notice how both parameters to C are strings that are delimited by <>. This is done to make them look more like file globs - it is just syntactic sugar, but it can be handy when you want the strings to be visually distinctive. The enclosing <> are optional, so you don't have to use them - in fact the first thing globmap will do is remove these delimiters if they are present. The first parameter to C, C<*.tar.gz>, is an I. Once the enclosing "< ... >" is removed, this is passed (more or less) unchanged to C to carry out a file match. Next the fileglob C<*.tar.gz> is transformed behind the scenes into a full Perl regular expression, with the additional step of wrapping each transformed wildcard metacharacter sequence in parenthesis. In this case the input fileglob C<*.tar.gz> will be transformed into this Perl regular expression ([^/]*)\.tar\.gz Wrapping with parenthesis allows the wildcard parts of the Input File Glob to be referenced by the second parameter to C, C<#1.tgz>, the I. This parameter operates just like the replacement part of a substitute command. The difference is that the C<#1> syntax is used to reference sub-patterns matched in the input fileglob, rather than the C<$1> syntax that is used with perl regular expressions. In this case C<#1> is used to refer to the text matched by the C<*> in the Input File Glob. This makes it easier to use this module where the parameters to C are typed at the command line. The final step involves passing each filename matched by the C<*.tar.gz> file glob through the derived Perl regular expression in turn and expanding the output fileglob using it. The end result of all this is a list of pairs of filenames. By default that is what is returned by C. In this example the data structure returned will look like this ( ['alpha.tar.gz' => 'alpha.tgz'], ['beta.tar.gz' => 'beta.tgz' ], ['gamma.tar.gz' => 'gamma.tgz'] ) Each pair is an array reference with two elements - namely the I filename, that C has matched, and a I filename that is derived from the I filename. =head2 Limitations C has been kept simple deliberately, so it isn't intended to solve all filename mapping operations. Under the hood C (or for older versions of Perl, C) is used to match the files, so you will never have the flexibility of full Perl regular expression. =head2 Input File Glob The syntax for an Input FileGlob is identical to C, except for the following =over 5 =item 1. No nested {} =item 2. Whitespace does not delimit fileglobs. =item 3. The use of parenthesis can be used to capture parts of the input filename. =item 4. If an Input glob matches the same file more than once, only the first will be used. =back The syntax =over 5 =item B<~> =item B<~user> =item B<.> Matches a literal '.'. Equivalent to the Perl regular expression \. =item B<*> Matches zero or more characters, except '/'. Equivalent to the Perl regular expression [^/]* =item B Matches zero or one character, except '/'. Equivalent to the Perl regular expression [^/]? =item B<\> Backslash is used, as usual, to escape the next character. =item B<[]> Character class. =item B<{,}> Alternation =item B<()> Capturing parenthesis that work just like perl =back Any other character it taken literally. =head2 Output File Glob The Output File Glob is a normal string, with 2 glob-like features. The first is the '*' metacharacter. This will be replaced by the complete filename matched by the input file glob. So *.c *.Z The second is Output FileGlobs take the =over 5 =item "*" The "*" character will be replaced with the complete input filename. =item #1 Patterns of the form /#\d/ will be replaced with the =back =head2 Returned Data =head1 EXAMPLES =head2 A Rename script Below is a simple "rename" script that uses C to determine the source and destination filenames. use File::GlobMapper qw(globmap) ; use File::Copy; die "rename: Usage rename 'from' 'to'\n" unless @ARGV == 2 ; my $fromGlob = shift @ARGV; my $toGlob = shift @ARGV; my $pairs = globmap($fromGlob, $toGlob) or die $File::GlobMapper::Error; for my $pair (@$pairs) { my ($from, $to) = @$pair; move $from => $to ; } Here is an example that renames all c files to cpp. $ rename '*.c' '#1.cpp' =head2 A few example globmaps Below are a few examples of globmaps To copy all your .c file to a backup directory '' '' If you want to compress all '' '<*.gz>' To uncompress '' '' =head1 SEE ALSO L =head1 AUTHOR The I module was written by Paul Marquess, F. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILEb72ca165/File/Find.pmpackage File::Find; use 5.006; use strict; use warnings; use warnings::register; our $VERSION = '1.40'; use Exporter 'import'; require Cwd; our @EXPORT = qw(find finddepth); use strict; my $Is_VMS = $^O eq 'VMS'; my $Is_Win32 = $^O eq 'MSWin32'; require File::Basename; require File::Spec; # Should ideally be my() not our() but local() currently # refuses to operate on lexicals our %SLnkSeen; our ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow, $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat, $pre_process, $post_process, $dangling_symlinks); sub contract_name { my ($cdir,$fn) = @_; return substr($cdir,0,rindex($cdir,'/')) if $fn eq $File::Find::current_dir; $cdir = substr($cdir,0,rindex($cdir,'/')+1); $fn =~ s|^\./||; my $abs_name= $cdir . $fn; if (substr($fn,0,3) eq '../') { 1 while $abs_name =~ s!/[^/]*/\.\./+!/!; } return $abs_name; } sub PathCombine($$) { my ($Base,$Name) = @_; my $AbsName; if (substr($Name,0,1) eq '/') { $AbsName= $Name; } else { $AbsName= contract_name($Base,$Name); } # (simple) check for recursion my $newlen= length($AbsName); if ($newlen <= length($Base)) { if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/') && $AbsName eq substr($Base,0,$newlen)) { return undef; } } return $AbsName; } sub Follow_SymLink($) { my ($AbsName) = @_; my ($NewName,$DEV, $INO); ($DEV, $INO)= lstat $AbsName; while (-l _) { if ($SLnkSeen{$DEV, $INO}++) { if ($follow_skip < 2) { die "$AbsName is encountered a second time"; } else { return undef; } } $NewName= PathCombine($AbsName, readlink($AbsName)); unless(defined $NewName) { if ($follow_skip < 2) { die "$AbsName is a recursive symbolic link"; } else { return undef; } } else { $AbsName= $NewName; } ($DEV, $INO) = lstat($AbsName); return undef unless defined $DEV; # dangling symbolic link } if ($full_check && defined $DEV && $SLnkSeen{$DEV, $INO}++) { if ( ($follow_skip < 1) || ((-d _) && ($follow_skip < 2)) ) { die "$AbsName encountered a second time"; } else { return undef; } } return $AbsName; } our($dir, $name, $fullname, $prune); sub _find_dir_symlnk($$$); sub _find_dir($$$); # check whether or not a scalar variable is tainted # (code straight from the Camel, 3rd ed., page 561) sub is_tainted_pp { my $arg = shift; my $nada = substr($arg, 0, 0); # zero-length local $@; eval { eval "# $nada" }; return length($@) != 0; } sub _find_opt { my $wanted = shift; return unless @_; die "invalid top directory" unless defined $_[0]; # This function must local()ize everything because callbacks may # call find() or finddepth() local %SLnkSeen; local ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow, $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat, $pre_process, $post_process, $dangling_symlinks); local($dir, $name, $fullname, $prune); local *_ = \my $a; my $cwd = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::getcwd(); if ($Is_VMS) { # VMS returns this by default in VMS format which just doesn't # work for the rest of this module. $cwd = VMS::Filespec::unixpath($cwd); # Apparently this is not expected to have a trailing space. # To attempt to make VMS/UNIX conversions mostly reversible, # a trailing slash is needed. The run-time functions ignore the # resulting double slash, but it causes the perl tests to fail. $cwd =~ s#/\z##; # This comes up in upper case now, but should be lower. # In the future this could be exact case, no need to change. } my $cwd_untainted = $cwd; my $check_t_cwd = 1; $wanted_callback = $wanted->{wanted}; $bydepth = $wanted->{bydepth}; $pre_process = $wanted->{preprocess}; $post_process = $wanted->{postprocess}; $no_chdir = $wanted->{no_chdir}; $full_check = $wanted->{follow}; $follow = $full_check || $wanted->{follow_fast}; $follow_skip = $wanted->{follow_skip}; $untaint = $wanted->{untaint}; $untaint_pat = $wanted->{untaint_pattern}; $untaint_skip = $wanted->{untaint_skip}; $dangling_symlinks = $wanted->{dangling_symlinks}; # for compatibility reasons (find.pl, find2perl) local our ($topdir, $topdev, $topino, $topmode, $topnlink); # a symbolic link to a directory doesn't increase the link count $avoid_nlink = $follow || $File::Find::dont_use_nlink; my ($abs_dir, $Is_Dir); Proc_Top_Item: foreach my $TOP (@_) { my $top_item = $TOP; $top_item = VMS::Filespec::unixify($top_item) if $Is_VMS; ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item; if ($Is_Win32) { $top_item =~ s|[/\\]\z|| unless $top_item =~ m{^(?:\w:)?[/\\]$}; } else { $top_item =~ s|/\z|| unless $top_item eq '/'; } $Is_Dir= 0; if ($follow) { if (substr($top_item,0,1) eq '/') { $abs_dir = $top_item; } elsif ($top_item eq $File::Find::current_dir) { $abs_dir = $cwd; } else { # care about any ../ $top_item =~ s/\.dir\z//i if $Is_VMS; $abs_dir = contract_name("$cwd/",$top_item); } $abs_dir= Follow_SymLink($abs_dir); unless (defined $abs_dir) { if ($dangling_symlinks) { if (ref $dangling_symlinks eq 'CODE') { $dangling_symlinks->($top_item, $cwd); } else { warnings::warnif "$top_item is a dangling symbolic link\n"; } } next Proc_Top_Item; } if (-d _) { $top_item =~ s/\.dir\z//i if $Is_VMS; _find_dir_symlnk($wanted, $abs_dir, $top_item); $Is_Dir= 1; } } else { # no follow $topdir = $top_item; unless (defined $topnlink) { warnings::warnif "Can't stat $top_item: $!\n"; next Proc_Top_Item; } if (-d _) { $top_item =~ s/\.dir\z//i if $Is_VMS; _find_dir($wanted, $top_item, $topnlink); $Is_Dir= 1; } else { $abs_dir= $top_item; } } unless ($Is_Dir) { unless (($_,$dir) = File::Basename::fileparse($abs_dir)) { ($dir,$_) = ('./', $top_item); } $abs_dir = $dir; if (( $untaint ) && (is_tainted($dir) )) { ( $abs_dir ) = $dir =~ m|$untaint_pat|; unless (defined $abs_dir) { if ($untaint_skip == 0) { die "directory $dir is still tainted"; } else { next Proc_Top_Item; } } } unless ($no_chdir || chdir $abs_dir) { warnings::warnif "Couldn't chdir $abs_dir: $!\n"; next Proc_Top_Item; } $name = $abs_dir . $_; # $File::Find::name $_ = $name if $no_chdir; { $wanted_callback->() }; # protect against wild "next" } unless ( $no_chdir ) { if ( ($check_t_cwd) && (($untaint) && (is_tainted($cwd) )) ) { ( $cwd_untainted ) = $cwd =~ m|$untaint_pat|; unless (defined $cwd_untainted) { die "insecure cwd in find(depth)"; } $check_t_cwd = 0; } unless (chdir $cwd_untainted) { die "Can't cd to $cwd: $!\n"; } } } } # API: # $wanted # $p_dir : "parent directory" # $nlink : what came back from the stat # preconditions: # chdir (if not no_chdir) to dir sub _find_dir($$$) { my ($wanted, $p_dir, $nlink) = @_; my ($CdLvl,$Level) = (0,0); my @Stack; my @filenames; my ($subcount,$sub_nlink); my $SE= []; my $dir_name= $p_dir; my $dir_pref; my $dir_rel = $File::Find::current_dir; my $tainted = 0; my $no_nlink; if ($Is_Win32) { $dir_pref = ($p_dir =~ m{^(?:\w:[/\\]?|[/\\])$} ? $p_dir : "$p_dir/" ); } elsif ($Is_VMS) { # VMS is returning trailing .dir on directories # and trailing . on files and symbolic links # in UNIX syntax. # $p_dir =~ s/\.(dir)?$//i unless $p_dir eq '.'; $dir_pref = ($p_dir =~ m/[\]>]+$/ ? $p_dir : "$p_dir/" ); } else { $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" ); } local ($dir, $name, $prune); unless ( $no_chdir || ($p_dir eq $File::Find::current_dir)) { my $udir = $p_dir; if (( $untaint ) && (is_tainted($p_dir) )) { ( $udir ) = $p_dir =~ m|$untaint_pat|; unless (defined $udir) { if ($untaint_skip == 0) { die "directory $p_dir is still tainted"; } else { return; } } } unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { warnings::warnif "Can't cd to $udir: $!\n"; return; } } # push the starting directory push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; while (defined $SE) { unless ($bydepth) { $dir= $p_dir; # $File::Find::dir $name= $dir_name; # $File::Find::name $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ # prune may happen here $prune= 0; { $wanted_callback->() }; # protect against wild "next" next if $prune; } # change to that directory unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { my $udir= $dir_rel; if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_rel) )) ) { ( $udir ) = $dir_rel =~ m|$untaint_pat|; unless (defined $udir) { if ($untaint_skip == 0) { die "directory (" . ($p_dir ne '/' ? $p_dir : '') . "/) $dir_rel is still tainted"; } else { # $untaint_skip == 1 next; } } } unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { warnings::warnif "Can't cd to (" . ($p_dir ne '/' ? $p_dir : '') . "/) $udir: $!\n"; next; } $CdLvl++; } $dir= $dir_name; # $File::Find::dir # Get the list of files in the current directory. my $dh; unless (opendir $dh, ($no_chdir ? $dir_name : $File::Find::current_dir)) { warnings::warnif "Can't opendir($dir_name): $!\n"; next; } @filenames = readdir $dh; closedir($dh); @filenames = $pre_process->(@filenames) if $pre_process; push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process; # default: use whatever was specified # (if $nlink >= 2, and $avoid_nlink == 0, this will switch back) $no_nlink = $avoid_nlink; # if dir has wrong nlink count, force switch to slower stat method $no_nlink = 1 if ($nlink < 2); if ($nlink == 2 && !$no_nlink) { # This dir has no subdirectories. for my $FN (@filenames) { if ($Is_VMS) { # Big hammer here - Compensate for VMS trailing . and .dir # No win situation until this is changed, but this # will handle the majority of the cases with breaking the fewest $FN =~ s/\.dir\z//i; $FN =~ s#\.$## if ($FN ne '.'); } next if $FN =~ $File::Find::skip_pattern; $name = $dir_pref . $FN; # $File::Find::name $_ = ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } else { # This dir has subdirectories. $subcount = $nlink - 2; # HACK: insert directories at this position, so as to preserve # the user pre-processed ordering of files (thus ensuring # directory traversal is in user sorted order, not at random). my $stack_top = @Stack; for my $FN (@filenames) { next if $FN =~ $File::Find::skip_pattern; if ($subcount > 0 || $no_nlink) { # Seen all the subdirs? # check for directoriness. # stat is faster for a file in the current directory $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3]; if (-d _) { --$subcount; $FN =~ s/\.dir\z//i if $Is_VMS; # HACK: replace push to preserve dir traversal order #push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink]; splice @Stack, $stack_top, 0, [$CdLvl,$dir_name,$FN,$sub_nlink]; } else { $name = $dir_pref . $FN; # $File::Find::name $_= ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } else { $name = $dir_pref . $FN; # $File::Find::name $_= ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } } } continue { while ( defined ($SE = pop @Stack) ) { ($Level, $p_dir, $dir_rel, $nlink) = @$SE; if ($CdLvl > $Level && !$no_chdir) { my $tmp; if ($Is_VMS) { $tmp = '[' . ('-' x ($CdLvl-$Level)) . ']'; } else { $tmp = join('/',('..') x ($CdLvl-$Level)); } die "Can't cd to $tmp from $dir_name: $!" unless chdir ($tmp); $CdLvl = $Level; } if ($Is_Win32) { $dir_name = ($p_dir =~ m{^(?:\w:[/\\]?|[/\\])$} ? "$p_dir$dir_rel" : "$p_dir/$dir_rel"); $dir_pref = "$dir_name/"; } elsif ($^O eq 'VMS') { if ($p_dir =~ m/[\]>]+$/) { $dir_name = $p_dir; $dir_name =~ s/([\]>]+)$/.$dir_rel$1/; $dir_pref = $dir_name; } else { $dir_name = "$p_dir/$dir_rel"; $dir_pref = "$dir_name/"; } } else { $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel"); $dir_pref = "$dir_name/"; } if ( $nlink == -2 ) { $name = $dir = $p_dir; # $File::Find::name / dir $_ = $File::Find::current_dir; $post_process->(); # End-of-directory processing } elsif ( $nlink < 0 ) { # must be finddepth, report dirname now $name = $dir_name; if ( substr($name,-2) eq '/.' ) { substr($name, length($name) == 2 ? -1 : -2) = ''; } $dir = $p_dir; $_ = ($no_chdir ? $dir_name : $dir_rel ); if ( substr($_,-2) eq '/.' ) { substr($_, length($_) == 2 ? -1 : -2) = ''; } { $wanted_callback->() }; # protect against wild "next" } else { push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; last; } } } } # API: # $wanted # $dir_loc : absolute location of a dir # $p_dir : "parent directory" # preconditions: # chdir (if not no_chdir) to dir sub _find_dir_symlnk($$$) { my ($wanted, $dir_loc, $p_dir) = @_; # $dir_loc is the absolute directory my @Stack; my @filenames; my $new_loc; my $updir_loc = $dir_loc; # untainted parent directory my $SE = []; my $dir_name = $p_dir; my $dir_pref; my $loc_pref; my $dir_rel = $File::Find::current_dir; my $byd_flag; # flag for pending stack entry if $bydepth my $tainted = 0; my $ok = 1; $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" ); $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" ); local ($dir, $name, $fullname, $prune); unless ($no_chdir) { # untaint the topdir if (( $untaint ) && (is_tainted($dir_loc) )) { ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; # parent dir, now untainted # once untainted, $updir_loc is pushed on the stack (as parent directory); # hence, we don't need to untaint the parent directory every time we chdir # to it later unless (defined $updir_loc) { if ($untaint_skip == 0) { die "directory $dir_loc is still tainted"; } else { return; } } } $ok = chdir($updir_loc) unless ($p_dir eq $File::Find::current_dir); unless ($ok) { warnings::warnif "Can't cd to $updir_loc: $!\n"; return; } } push @Stack,[$dir_loc,$updir_loc,$p_dir,$dir_rel,-1] if $bydepth; while (defined $SE) { unless ($bydepth) { # change (back) to parent directory (always untainted) unless ($no_chdir) { unless (chdir $updir_loc) { warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $dir= $p_dir; # $File::Find::dir $name= $dir_name; # $File::Find::name $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ $fullname= $dir_loc; # $File::Find::fullname # prune may happen here $prune= 0; lstat($_); # make sure file tests with '_' work { $wanted_callback->() }; # protect against wild "next" next if $prune; } # change to that directory unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { $updir_loc = $dir_loc; if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_loc) )) ) { # untaint $dir_loc, what will be pushed on the stack as (untainted) parent dir ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; unless (defined $updir_loc) { if ($untaint_skip == 0) { die "directory $dir_loc is still tainted"; } else { next; } } } unless (chdir $updir_loc) { warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $dir = $dir_name; # $File::Find::dir # Get the list of files in the current directory. my $dh; unless (opendir $dh, ($no_chdir ? $dir_loc : $File::Find::current_dir)) { warnings::warnif "Can't opendir($dir_loc): $!\n"; next; } @filenames = readdir $dh; closedir($dh); for my $FN (@filenames) { if ($Is_VMS) { # Big hammer here - Compensate for VMS trailing . and .dir # No win situation until this is changed, but this # will handle the majority of the cases with breaking the fewest. $FN =~ s/\.dir\z//i; $FN =~ s#\.$## if ($FN ne '.'); } next if $FN =~ $File::Find::skip_pattern; # follow symbolic links / do an lstat $new_loc = Follow_SymLink($loc_pref.$FN); # ignore if invalid symlink unless (defined $new_loc) { if (!defined -l _ && $dangling_symlinks) { $fullname = undef; if (ref $dangling_symlinks eq 'CODE') { $dangling_symlinks->($FN, $dir_pref); } else { warnings::warnif "$dir_pref$FN is a dangling symbolic link\n"; } } else { $fullname = $loc_pref . $FN; } $name = $dir_pref . $FN; $_ = ($no_chdir ? $name : $FN); { $wanted_callback->() }; next; } if (-d _) { if ($Is_VMS) { $FN =~ s/\.dir\z//i; $FN =~ s#\.$## if ($FN ne '.'); $new_loc =~ s/\.dir\z//i; $new_loc =~ s#\.$## if ($new_loc ne '.'); } push @Stack,[$new_loc,$updir_loc,$dir_name,$FN,1]; } else { $fullname = $new_loc; # $File::Find::fullname $name = $dir_pref . $FN; # $File::Find::name $_ = ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } } continue { while (defined($SE = pop @Stack)) { ($dir_loc, $updir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE; $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel"); $dir_pref = "$dir_name/"; $loc_pref = "$dir_loc/"; if ( $byd_flag < 0 ) { # must be finddepth, report dirname now unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { unless (chdir $updir_loc) { # $updir_loc (parent dir) is always untainted warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $fullname = $dir_loc; # $File::Find::fullname $name = $dir_name; # $File::Find::name if ( substr($name,-2) eq '/.' ) { substr($name, length($name) == 2 ? -1 : -2) = ''; # $File::Find::name } $dir = $p_dir; # $File::Find::dir $_ = ($no_chdir ? $dir_name : $dir_rel); # $_ if ( substr($_,-2) eq '/.' ) { substr($_, length($_) == 2 ? -1 : -2) = ''; } lstat($_); # make sure file tests with '_' work { $wanted_callback->() }; # protect against wild "next" } else { push @Stack,[$dir_loc, $updir_loc, $p_dir, $dir_rel,-1] if $bydepth; last; } } } } sub wrap_wanted { my $wanted = shift; if ( ref($wanted) eq 'HASH' ) { # RT #122547 my %valid_options = map {$_ => 1} qw( wanted bydepth preprocess postprocess follow follow_fast follow_skip dangling_symlinks no_chdir untaint untaint_pattern untaint_skip ); my @invalid_options = (); for my $v (keys %{$wanted}) { push @invalid_options, $v unless exists $valid_options{$v}; } warn "Invalid option(s): @invalid_options" if @invalid_options; unless( exists $wanted->{wanted} and ref( $wanted->{wanted} ) eq 'CODE' ) { die 'no &wanted subroutine given'; } if ( $wanted->{follow} || $wanted->{follow_fast}) { $wanted->{follow_skip} = 1 unless defined $wanted->{follow_skip}; } if ( $wanted->{untaint} ) { $wanted->{untaint_pattern} = $File::Find::untaint_pattern unless defined $wanted->{untaint_pattern}; $wanted->{untaint_skip} = 0 unless defined $wanted->{untaint_skip}; } return $wanted; } elsif( ref( $wanted ) eq 'CODE' ) { return { wanted => $wanted }; } else { die 'no &wanted subroutine given'; } } sub find { my $wanted = shift; _find_opt(wrap_wanted($wanted), @_); } sub finddepth { my $wanted = wrap_wanted(shift); $wanted->{bydepth} = 1; _find_opt($wanted, @_); } # default $File::Find::skip_pattern = qr/^\.{1,2}\z/; $File::Find::untaint_pattern = qr|^([-+@\w./]+)$|; # this _should_ work properly on all platforms # where File::Find can be expected to work $File::Find::current_dir = File::Spec->curdir || '.'; $File::Find::dont_use_nlink = 1; # We need a function that checks if a scalar is tainted. Either use the # Scalar::Util module's tainted() function or our (slower) pure Perl # fallback is_tainted_pp() { local $@; eval { require Scalar::Util }; *is_tainted = $@ ? \&is_tainted_pp : \&Scalar::Util::tainted; } 1; __END__ =head1 NAME File::Find - Traverse a directory tree. =head1 SYNOPSIS use File::Find; find(\&wanted, @directories_to_search); sub wanted { ... } use File::Find; finddepth(\&wanted, @directories_to_search); sub wanted { ... } use File::Find; find({ wanted => \&process, follow => 1 }, '.'); =head1 DESCRIPTION These are functions for searching through directory trees doing work on each file found similar to the Unix I command. File::Find exports two functions, C and C. They work similarly but have subtle differences. =over 4 =item B find(\&wanted, @directories); find(\%options, @directories); C does a depth-first search over the given C<@directories> in the order they are given. For each file or directory found, it calls the C<&wanted> subroutine. (See below for details on how to use the C<&wanted> function). Additionally, for each directory found, it will C into that directory and continue the search, invoking the C<&wanted> function on each file or subdirectory in the directory. =item B finddepth(\&wanted, @directories); finddepth(\%options, @directories); C works just like C except that it invokes the C<&wanted> function for a directory I invoking it for the directory's contents. It does a postorder traversal instead of a preorder traversal, working from the bottom of the directory tree up where C works from the top of the tree down. =back Despite the name of the C function, both C and C perform a depth-first search of the directory hierarchy. =head2 %options The first argument to C is either a code reference to your C<&wanted> function, or a hash reference describing the operations to be performed for each file. The code reference is described in L below. Here are the possible keys for the hash: =over 4 =item C The value should be a code reference. This code reference is described in L below. The C<&wanted> subroutine is mandatory. =item C Reports the name of a directory only AFTER all its entries have been reported. Entry point C is a shortcut for specifying C<< { bydepth => 1 } >> in the first argument of C. =item C The value should be a code reference. This code reference is used to preprocess the current directory. The name of the currently processed directory is in C<$File::Find::dir>. Your preprocessing function is called after C, but before the loop that calls the C function. It is called with a list of strings (actually file/directory names) and is expected to return a list of strings. The code can be used to sort the file/directory names alphabetically, numerically, or to filter out directory entries based on their name alone. When I or I are in effect, C is a no-op. =item C The value should be a code reference. It is invoked just before leaving the currently processed directory. It is called in void context with no arguments. The name of the current directory is in C<$File::Find::dir>. This hook is handy for summarizing a directory, such as calculating its disk usage. When I or I are in effect, C is a no-op. =item C Causes symbolic links to be followed. Since directory trees with symbolic links (followed) may contain files more than once and may even have cycles, a hash has to be built up with an entry for each file. This might be expensive both in space and time for a large directory tree. See L and L below. If either I or I is in effect: =over 4 =item * It is guaranteed that an I has been called before the user's C function is called. This enables fast file checks involving C<_>. Note that this guarantee no longer holds if I or I are not set. =item * There is a variable C<$File::Find::fullname> which holds the absolute pathname of the file with all symbolic links resolved. If the link is a dangling symbolic link, then fullname will be set to C. =back This is a no-op on Win32. =item C This is similar to I except that it may report some files more than once. It does detect cycles, however. Since only symbolic links have to be hashed, this is much cheaper both in space and time. If processing a file more than once (by the user's C function) is worse than just taking time, the option I should be used. This is also a no-op on Win32. =item C C, which is the default, causes all files which are neither directories nor symbolic links to be ignored if they are about to be processed a second time. If a directory or a symbolic link are about to be processed a second time, File::Find dies. C causes File::Find to die if any file is about to be processed a second time. C causes File::Find to ignore any duplicate files and directories but to proceed normally otherwise. =item C Specifies what to do with symbolic links whose target doesn't exist. If true and a code reference, will be called with the symbolic link name and the directory it lives in as arguments. Otherwise, if true and warnings are on, a warning of the form C<"symbolic_link_name is a dangling symbolic link\n"> will be issued. If false, the dangling symbolic link will be silently ignored. =item C Does not C to each directory as it recurses. The C function will need to be aware of this, of course. In this case, C<$_> will be the same as C<$File::Find::name>. =item C If find is used in L (-T command line switch or if EUID != UID or if EGID != GID), then internally directory names have to be untainted before they can be C'd to. Therefore they are checked against a regular expression I. Note that all names passed to the user's C function are still tainted. If this option is used while not in taint-mode, C is a no-op. =item C See above. This should be set using the C quoting operator. The default is set to C. Note that the parentheses are vital. =item C If set, a directory which fails the I is skipped, including all its sub-directories. The default is to C in such a case. =back =head2 The wanted function The C function does whatever verifications you want on each file and directory. Note that despite its name, the C function is a generic callback function, and does B tell File::Find if a file is "wanted" or not. In fact, its return value is ignored. The wanted function takes no arguments but rather does its work through a collection of variables. =over 4 =item C<$File::Find::dir> is the current directory name, =item C<$_> is the current filename within that directory =item C<$File::Find::name> is the complete pathname to the file. =back The above variables have all been localized and may be changed without affecting data outside of the wanted function. For example, when examining the file F you will have: $File::Find::dir = /some/path/ $_ = foo.ext $File::Find::name = /some/path/foo.ext You are chdir()'d to C<$File::Find::dir> when the function is called, unless C was specified. Note that when changing to directories is in effect, the root directory (F) is a somewhat special case inasmuch as the concatenation of C<$File::Find::dir>, C<'/'> and C<$_> is not literally equal to C<$File::Find::name>. The table below summarizes all variants: $File::Find::name $File::Find::dir $_ default / / . no_chdir=>0 /etc / etc /etc/x /etc x no_chdir=>1 / / / /etc / /etc /etc/x /etc /etc/x When C or C are in effect, there is also a C<$File::Find::fullname>. The function may set C<$File::Find::prune> to prune the tree unless C was specified. Unless C or C is specified, for compatibility reasons (find.pl, find2perl) there are in addition the following globals available: C<$File::Find::topdir>, C<$File::Find::topdev>, C<$File::Find::topino>, C<$File::Find::topmode> and C<$File::Find::topnlink>. This library is useful for the C tool (distributed as part of the App-find2perl CPAN distribution), which when fed, find2perl / -name .nfs\* -mtime +7 \ -exec rm -f {} \; -o -fstype nfs -prune produces something like: sub wanted { /^\.nfs.*\z/s && (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_)) && int(-M _) > 7 && unlink($_) || ($nlink || (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_))) && $dev < 0 && ($File::Find::prune = 1); } Notice the C<_> in the above C: the C<_> is a magical filehandle that caches the information from the preceding C, C, or filetest. Here's another interesting wanted function. It will find all symbolic links that don't resolve: sub wanted { -l && !-e && print "bogus link: $File::Find::name\n"; } Note that you may mix directories and (non-directory) files in the list of directories to be searched by the C function. find(\&wanted, "./foo", "./bar", "./baz/epsilon"); In the example above, no file in F<./baz/> other than F<./baz/epsilon> will be evaluated by C. See also the script C on CPAN for a nice application of this module. =head1 WARNINGS If you run your program with the C<-w> switch, or if you use the C pragma, File::Find will report warnings for several weird situations. You can disable these warnings by putting the statement no warnings 'File::Find'; in the appropriate scope. See L for more info about lexical warnings. =head1 BUGS AND CAVEATS =over 4 =item $dont_use_nlink You can set the variable C<$File::Find::dont_use_nlink> to 0 if you are sure the filesystem you are scanning reflects the number of subdirectories in the parent directory's C count. If you do set C<$File::Find::dont_use_nlink> to 0, you may notice an improvement in speed at the risk of not recursing into subdirectories if a filesystem doesn't populate C as expected. C<$File::Find::dont_use_nlink> now defaults to 1 on all platforms. =item symlinks Be aware that the option to follow symbolic links can be dangerous. Depending on the structure of the directory tree (including symbolic links to directories) you might traverse a given (physical) directory more than once (only if C is in effect). Furthermore, deleting or changing files in a symbolically linked directory might cause very unpleasant surprises, since you delete or change files in an unknown directory. =back =head1 HISTORY File::Find used to produce incorrect results if called recursively. During the development of perl 5.8 this bug was fixed. The first fixed version of File::Find was 1.01. =head1 SEE ALSO L, find2perl. =cut FILE81617f82/File/Copy.pm>^# File/Copy.pm. Written in 1994 by Aaron Sherman . This # source code has been placed in the public domain by the author. # Please be kind and preserve the documentation. # # Additions copyright 1996 by Charles Bailey. Permission is granted # to distribute the revised code under the same terms as Perl itself. package File::Copy; use 5.035007; use strict; use warnings; no warnings 'newline'; no warnings 'experimental::builtin'; use builtin 'blessed'; use overload; use File::Spec; use Config; # We want HiRes stat and utime if available BEGIN { eval q{ use Time::HiRes qw( stat utime ) } }; our(@ISA, @EXPORT, @EXPORT_OK, $VERSION, $Too_Big, $Syscopy_is_copy); sub copy; sub syscopy; sub cp; sub mv; $VERSION = '2.39'; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(copy move); @EXPORT_OK = qw(cp mv); $Too_Big = 1024 * 1024 * 2; sub croak { require Carp; goto &Carp::croak; } sub carp { require Carp; goto &Carp::carp; } sub _catname { my($from, $to) = @_; if (not defined &basename) { require File::Basename; File::Basename->import( 'basename' ); } return File::Spec->catfile($to, basename($from)); } # _eq($from, $to) tells whether $from and $to are identical sub _eq { my ($from, $to) = map { blessed($_) && overload::Method($_, q{""}) ? "$_" : $_ } (@_); return '' if ( (ref $from) xor (ref $to) ); return $from == $to if ref $from; return $from eq $to; } sub copy { croak("Usage: copy(FROM, TO [, BUFFERSIZE]) ") unless(@_ == 2 || @_ == 3); my $from = shift; my $to = shift; my $size; if (@_) { $size = shift(@_) + 0; croak("Bad buffer size for copy: $size\n") unless ($size > 0); } my $from_a_handle = (ref($from) ? (ref($from) eq 'GLOB' || UNIVERSAL::isa($from, 'GLOB') || UNIVERSAL::isa($from, 'IO::Handle')) : (ref(\$from) eq 'GLOB')); my $to_a_handle = (ref($to) ? (ref($to) eq 'GLOB' || UNIVERSAL::isa($to, 'GLOB') || UNIVERSAL::isa($to, 'IO::Handle')) : (ref(\$to) eq 'GLOB')); if (_eq($from, $to)) { # works for references, too carp("'$from' and '$to' are identical (not copied)"); return 0; } if (!$from_a_handle && !$to_a_handle && -d $to && ! -d $from) { $to = _catname($from, $to); } if ((($Config{d_symlink} && $Config{d_readlink}) || $Config{d_link}) && !($^O eq 'os2')) { my @fs = stat($from); if (@fs) { my @ts = stat($to); if (@ts && $fs[0] == $ts[0] && $fs[1] eq $ts[1] && !-p $from) { carp("'$from' and '$to' are identical (not copied)"); return 0; } } } elsif (_eq($from, $to)) { carp("'$from' and '$to' are identical (not copied)"); return 0; } if (defined &syscopy && !$Syscopy_is_copy && !$to_a_handle && !($from_a_handle && $^O eq 'os2' ) # OS/2 cannot handle handles && !($from_a_handle && $^O eq 'MSWin32') ) { if ($^O eq 'VMS' && -e $from && ! -d $to && ! -d $from) { # VMS natively inherits path components from the source of a # copy, but we want the Unixy behavior of inheriting from # the current working directory. Also, default in a trailing # dot for null file types. $to = VMS::Filespec::rmsexpand(VMS::Filespec::vmsify($to), '.'); # Get rid of the old versions to be like UNIX 1 while unlink $to; } return syscopy($from, $to) || 0; } my $closefrom = 0; my $closeto = 0; my ($status, $r, $buf); local($\) = ''; my $from_h; if ($from_a_handle) { $from_h = $from; } else { open $from_h, "<", $from or goto fail_open1; binmode $from_h or die "($!,$^E)"; $closefrom = 1; } # Seems most logical to do this here, in case future changes would want to # make this croak for some reason. unless (defined $size) { $size = tied(*$from_h) ? 0 : -s $from_h || 0; $size = 1024 if ($size < 512); $size = $Too_Big if ($size > $Too_Big); } my $to_h; if ($to_a_handle) { $to_h = $to; } else { $to_h = \do { local *FH }; # XXX is this line obsolete? open $to_h, ">", $to or goto fail_open2; binmode $to_h or die "($!,$^E)"; $closeto = 1; } $! = 0; for (;;) { my ($r, $w, $t); defined($r = sysread($from_h, $buf, $size)) or goto fail_inner; last unless $r; for ($w = 0; $w < $r; $w += $t) { $t = syswrite($to_h, $buf, $r - $w, $w) or goto fail_inner; } } close($to_h) || goto fail_open2 if $closeto; close($from_h) || goto fail_open1 if $closefrom; # Use this idiom to avoid uninitialized value warning. return 1; # All of these contortions try to preserve error messages... fail_inner: if ($closeto) { $status = $!; $! = 0; close $to_h; $! = $status unless $!; } fail_open2: if ($closefrom) { $status = $!; $! = 0; close $from_h; $! = $status unless $!; } fail_open1: return 0; } sub cp { my($from,$to) = @_; my(@fromstat) = stat $from; my(@tostat) = stat $to; my $perm; return 0 unless copy(@_) and @fromstat; if (@tostat) { $perm = $tostat[2]; } else { $perm = $fromstat[2] & ~(umask || 0); @tostat = stat $to; } # Might be more robust to look for S_I* in Fcntl, but we're # trying to avoid dependence on any XS-containing modules, # since File::Copy is used during the Perl build. $perm &= 07777; if ($perm & 06000) { croak("Unable to check setuid/setgid permissions for $to: $!") unless @tostat; if ($perm & 04000 and # setuid $fromstat[4] != $tostat[4]) { # owner must match $perm &= ~06000; } if ($perm & 02000 && $> != 0) { # if not root, setgid my $ok = $fromstat[5] == $tostat[5]; # group must match if ($ok) { # and we must be in group $ok = grep { $_ == $fromstat[5] } split /\s+/, $) } $perm &= ~06000 unless $ok; } } return 0 unless @tostat; return 1 if $perm == ($tostat[2] & 07777); return eval { chmod $perm, $to; } ? 1 : 0; } sub _move { croak("Usage: move(FROM, TO) ") unless @_ == 3; my($from,$to,$fallback) = @_; my($fromsz,$tosz1,$tomt1,$tosz2,$tomt2,$sts,$ossts); if (-d $to && ! -d $from) { $to = _catname($from, $to); } ($tosz1,$tomt1) = (stat($to))[7,9]; $fromsz = -s $from; if ($^O eq 'os2' and defined $tosz1 and defined $fromsz) { # will not rename with overwrite unlink $to; } if ($^O eq 'VMS' && -e $from && ! -d $to && ! -d $from) { # VMS natively inherits path components from the source of a # copy, but we want the Unixy behavior of inheriting from # the current working directory. Also, default in a trailing # dot for null file types. $to = VMS::Filespec::rmsexpand(VMS::Filespec::vmsify($to), '.'); # Get rid of the old versions to be like UNIX 1 while unlink $to; } return 1 if rename $from, $to; # Did rename return an error even though it succeeded, because $to # is on a remote NFS file system, and NFS lost the server's ack? return 1 if defined($fromsz) && !-e $from && # $from disappeared (($tosz2,$tomt2) = (stat($to))[7,9]) && # $to's there ((!defined $tosz1) || # not before or ($tosz1 != $tosz2 or $tomt1 != $tomt2)) && # was changed $tosz2 == $fromsz; # it's all there ($tosz1,$tomt1) = (stat($to))[7,9]; # just in case rename did something { local $@; eval { local $SIG{__DIE__}; $fallback->($from,$to) or die; my($atime, $mtime) = (stat($from))[8,9]; utime($atime, $mtime, $to); unlink($from) or die; }; return 1 unless $@; } ($sts,$ossts) = ($! + 0, $^E + 0); ($tosz2,$tomt2) = ((stat($to))[7,9],0,0) if defined $tomt1; unlink($to) if !defined($tomt1) or $tomt1 != $tomt2 or $tosz1 != $tosz2; ($!,$^E) = ($sts,$ossts); return 0; } sub move { _move(@_,\©); } sub mv { _move(@_,\&cp); } # &syscopy is an XSUB under OS/2 unless (defined &syscopy) { if ($^O eq 'VMS') { *syscopy = \&rmscopy; } elsif ($^O eq 'MSWin32' && defined &DynaLoader::boot_DynaLoader) { # Win32::CopyFile() fill only work if we can load Win32.xs *syscopy = sub { return 0 unless @_ == 2; return Win32::CopyFile(@_, 1); }; } else { $Syscopy_is_copy = 1; *syscopy = \© } } 1; __END__ =head1 NAME File::Copy - Copy files or filehandles =head1 SYNOPSIS use File::Copy; copy("sourcefile","destinationfile") or die "Copy failed: $!"; copy("Copy.pm",\*STDOUT); move("/dev1/sourcefile","/dev2/destinationfile"); use File::Copy "cp"; $n = FileHandle->new("/a/file","r"); cp($n,"x"); =head1 DESCRIPTION The File::Copy module provides two basic functions, C and C, which are useful for getting the contents of a file from one place to another. =over 4 =item copy X X The C function takes two parameters: a file to copy from and a file to copy to. Either argument may be a string, a FileHandle reference or a FileHandle glob. Obviously, if the first argument is a filehandle of some sort, it will be read from, and if it is a file I it will be opened for reading. Likewise, the second argument will be written to. If the second argument does not exist but the parent directory does exist, then it will be created. Trying to copy a file into a non-existent directory is an error. Trying to copy a file on top of itself is also an error. C will not overwrite read-only files. If the destination (second argument) already exists and is a directory, and the source (first argument) is not a filehandle, then the source file will be copied into the directory specified by the destination, using the same base name as the source file. It's a failure to have a filehandle as the source when the destination is a directory. B Files are opened in binary mode where applicable. To get a consistent behaviour when copying from a filehandle to a file, use C on the filehandle. An optional third parameter can be used to specify the buffer size used for copying. This is the number of bytes from the first file, that will be held in memory at any given time, before being written to the second file. The default buffer size depends upon the file, but will generally be the whole file (up to 2MB), or 1k for filehandles that do not reference files (eg. sockets). You may use the syntax C to get at the C alias for this function. The syntax is I the same. The behavior is nearly the same as well: as of version 2.15, C will preserve the source file's permission bits like the shell utility C would do, while C uses the default permissions for the target file (which may depend on the process' C, file ownership, inherited ACLs, etc.). If an error occurs in setting permissions, C will return 0, regardless of whether the file was successfully copied. =item move X X X The C function also takes two parameters: the current name and the intended name of the file to be moved. If the destination already exists and is a directory, and the source is not a directory, then the source file will be renamed into the directory specified by the destination. If possible, move() will simply rename the file. Otherwise, it copies the file to the new location and deletes the original. If an error occurs during this copy-and-delete process, you may be left with a (possibly partial) copy of the file under the destination name. You may use the C alias for this function in the same way that you may use the C alias for C. =item syscopy X File::Copy also provides the C routine, which copies the file specified in the first parameter to the file specified in the second parameter, preserving OS-specific attributes and file structure. For Unix systems, this is equivalent to the simple C routine, which doesn't preserve OS-specific attributes. For VMS systems, this calls the C routine (see below). For OS/2 systems, this calls the C XSUB directly. For Win32 systems, this calls C. B is defined (OS/2, VMS and Win32)>: If both arguments to C are not file handles, then C will perform a "system copy" of the input file to a new output file, in order to preserve file attributes, indexed file structure, I The buffer size parameter is ignored. If either argument to C is a handle to an opened file, then data is copied using Perl operators, and no effort is made to preserve file attributes or record structure. The system copy routine may also be called directly under VMS and OS/2 as C (or under VMS as C, which is the routine that does the actual work for syscopy). =item rmscopy($from,$to[,$date_flag]) X The first and second arguments may be strings, typeglobs, typeglob references, or objects inheriting from IO::Handle; they are used in all cases to obtain the I of the input and output files, respectively. The name and type of the input file are used as defaults for the output file, if necessary. A new version of the output file is always created, which inherits the structure and RMS attributes of the input file, except for owner and protections (and possibly timestamps; see below). All data from the input file is copied to the output file; if either of the first two parameters to C is a file handle, its position is unchanged. (Note that this means a file handle pointing to the output file will be associated with an old version of that file after C returns, not the newly created version.) The third parameter is an integer flag, which tells C how to handle timestamps. If it is E 0, none of the input file's timestamps are propagated to the output file. If it is E 0, then it is interpreted as a bitmask: if bit 0 (the LSB) is set, then timestamps other than the revision date are propagated; if bit 1 is set, the revision date is propagated. If the third parameter to C is 0, then it behaves much like the DCL COPY command: if the name or type of the output file was explicitly specified, then no timestamps are propagated, but if they were taken implicitly from the input filespec, then all timestamps other than the revision date are propagated. If this parameter is not supplied, it defaults to 0. C is VMS specific and cannot be exported; it must be referenced by its full name, e.g.: File::Copy::rmscopy($from, $to) or die $!; Like C, C returns 1 on success. If an error occurs, it sets C<$!>, deletes the output file, and returns 0. =back =head1 RETURN All functions return 1 on success, 0 on failure. $! will be set if an error was encountered. =head1 NOTES Before calling copy() or move() on a filehandle, the caller should close or flush() the file to avoid writes being lost. Note that this is the case even for move(), because it may actually copy the file, depending on the OS-specific implementation, and the underlying filesystem(s). =head1 AUTHOR File::Copy was written by Aaron Sherman Iajs@ajs.comE> in 1995, and updated by Charles Bailey Ibailey@newman.upenn.eduE> in 1996. =cut FILE77fee733/File/Basename.pm+=head1 NAME File::Basename - Parse file paths into directory, filename and suffix. =head1 SYNOPSIS use File::Basename; ($name,$path,$suffix) = fileparse($fullname,@suffixlist); $name = fileparse($fullname,@suffixlist); $basename = basename($fullname,@suffixlist); $dirname = dirname($fullname); =head1 DESCRIPTION These routines allow you to parse file paths into their directory, filename and suffix. B: C and C emulate the behaviours, and quirks, of the shell and C functions of the same name. See each function's documentation for details. If your concern is just parsing paths it is safer to use L's C and C methods. It is guaranteed that # Where $path_separator is / for Unix, \ for Windows, etc... dirname($path) . $path_separator . basename($path); is equivalent to the original path for all systems but VMS. =cut package File::Basename; # File::Basename is used during the Perl build, when the re extension may # not be available, but we only actually need it if running under tainting. BEGIN { if (${^TAINT}) { require re; re->import('taint'); } } use strict; use 5.006; use warnings; our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase); require Exporter; @ISA = qw(Exporter); @EXPORT = qw(fileparse fileparse_set_fstype basename dirname); $VERSION = "2.85"; fileparse_set_fstype($^O); =over 4 =item C X my($filename, $dirs, $suffix) = fileparse($path); my($filename, $dirs, $suffix) = fileparse($path, @suffixes); my $filename = fileparse($path, @suffixes); The C routine divides a file path into its $dirs, $filename and (optionally) the filename $suffix. $dirs contains everything up to and including the last directory separator in the $path including the volume (if applicable). The remainder of the $path is the $filename. # On Unix returns ("baz", "/foo/bar/", "") fileparse("/foo/bar/baz"); # On Windows returns ("baz", 'C:\foo\bar\', "") fileparse('C:\foo\bar\baz'); # On Unix returns ("", "/foo/bar/baz/", "") fileparse("/foo/bar/baz/"); If @suffixes are given each element is a pattern (either a string or a C) matched against the end of the $filename. The matching portion is removed and becomes the $suffix. # On Unix returns ("baz", "/foo/bar/", ".txt") fileparse("/foo/bar/baz.txt", qr/\.[^.]*/); If type is non-Unix (see L) then the pattern matching for suffix removal is performed case-insensitively, since those systems are not case-sensitive when opening existing files. You are guaranteed that C<$dirs . $filename . $suffix> will denote the same location as the original $path. =cut sub fileparse { my($fullname,@suffices) = @_; unless (defined $fullname) { require Carp; Carp::croak("fileparse(): need a valid pathname"); } my $orig_type = ''; my($type,$igncase) = ($Fileparse_fstype, $Fileparse_igncase); my($taint) = substr($fullname,0,0); # Is $fullname tainted? if ($type eq "VMS" and $fullname =~ m{/} ) { # We're doing Unix emulation $orig_type = $type; $type = 'Unix'; } my($dirpath, $basename); if (grep { $type eq $_ } qw(MSDOS DOS MSWin32 Epoc)) { ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/s); $dirpath .= '.\\' unless $dirpath =~ /[\\\/]\z/; } elsif ($type eq "OS2") { ($dirpath,$basename) = ($fullname =~ m#^((?:.*[:\\/])?)(.*)#s); $dirpath = './' unless $dirpath; # Can't be 0 $dirpath .= '/' unless $dirpath =~ m#[\\/]\z#; } elsif ($type eq "MacOS") { ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/s); $dirpath = ':' unless $dirpath; } elsif ($type eq "AmigaOS") { ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/s); $dirpath = './' unless $dirpath; } elsif ($type eq 'VMS' ) { ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/s); $dirpath ||= ''; # should always be defined } else { # Default to Unix semantics. ($dirpath,$basename) = ($fullname =~ m{^(.*/)?(.*)}s); if ($orig_type eq 'VMS' and $fullname =~ m{^(/[^/]+/000000(/|$))(.*)}) { # dev:[000000] is top of VMS tree, similar to Unix '/' # so strip it off and treat the rest as "normal" my $devspec = $1; my $remainder = $3; ($dirpath,$basename) = ($remainder =~ m{^(.*/)?(.*)}s); $dirpath ||= ''; # should always be defined $dirpath = $devspec.$dirpath; } $dirpath = './' unless $dirpath; } my $tail = ''; my $suffix = ''; if (@suffices) { foreach $suffix (@suffices) { my $pat = ($igncase ? '(?i)' : '') . "($suffix)\$"; if ($basename =~ s/$pat//s) { $taint .= substr($suffix,0,0); $tail = $1 . $tail; } } } # Ensure taint is propagated from the path to its pieces. $tail .= $taint; wantarray ? ($basename .= $taint, $dirpath .= $taint, $tail) : ($basename .= $taint); } =item C X X my $filename = basename($path); my $filename = basename($path, @suffixes); This function is provided for compatibility with the Unix shell command C. It does B always return the file name portion of a path as you might expect. To be safe, if you want the file name portion of a path use C. C returns the last level of a filepath even if the last level is clearly directory. In effect, it is acting like C for paths. This differs from C's behaviour. # Both return "bar" basename("/foo/bar"); basename("/foo/bar/"); @suffixes work as in C except all regex metacharacters are quoted. # These two function calls are equivalent. my $filename = basename("/foo/bar/baz.txt", ".txt"); my $filename = fileparse("/foo/bar/baz.txt", qr/\Q.txt\E/); Also note that in order to be compatible with the shell command, C does not strip off a suffix if it is identical to the remaining characters in the filename. =cut sub basename { my($path) = shift; # From BSD basename(1) # The basename utility deletes any prefix ending with the last slash '/' # character present in string (after first stripping trailing slashes) _strip_trailing_sep($path); my($basename, $dirname, $suffix) = fileparse( $path, map("\Q$_\E",@_) ); # From BSD basename(1) # The suffix is not stripped if it is identical to the remaining # characters in string. if( length $suffix and !length $basename ) { $basename = $suffix; } # Ensure that basename '/' == '/' if( !length $basename ) { $basename = $dirname; } return $basename; } =item C X This function is provided for compatibility with the Unix shell command C and has inherited some of its quirks. In spite of its name it does B always return the directory name as you might expect. To be safe, if you want the directory name of a path use C. Only on VMS (where there is no ambiguity between the file and directory portions of a path) and AmigaOS (possibly due to an implementation quirk in this module) does C work like C, returning just the $dirs. # On VMS and AmigaOS my $dirs = dirname($path); When using Unix or MSDOS syntax this emulates the C shell function which is subtly different from how C works. It returns all but the last level of a file path even if the last level is clearly a directory. In effect, it is not returning the directory portion but simply the path one level up acting like C for file paths. Also unlike C, C does not include a trailing slash on its returned path. # returns /foo/bar. fileparse() would return /foo/bar/ dirname("/foo/bar/baz"); # also returns /foo/bar despite the fact that baz is clearly a # directory. fileparse() would return /foo/bar/baz/ dirname("/foo/bar/baz/"); # returns '.'. fileparse() would return 'foo/' dirname("foo/"); Under VMS, if there is no directory information in the $path, then the current default device and directory is used. =cut sub dirname { my $path = shift; my($type) = $Fileparse_fstype; if( $type eq 'VMS' and $path =~ m{/} ) { # Parse as Unix local($File::Basename::Fileparse_fstype) = ''; return dirname($path); } my($basename, $dirname) = fileparse($path); if ($type eq 'VMS') { $dirname ||= $ENV{DEFAULT}; } elsif ($type eq 'MacOS') { if( !length($basename) && $dirname !~ /^[^:]+:\z/) { _strip_trailing_sep($dirname); ($basename,$dirname) = fileparse $dirname; } $dirname .= ":" unless $dirname =~ /:\z/; } elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) { _strip_trailing_sep($dirname); unless( length($basename) ) { ($basename,$dirname) = fileparse $dirname; _strip_trailing_sep($dirname); } } elsif ($type eq 'AmigaOS') { if ( $dirname =~ /:\z/) { return $dirname } chop $dirname; $dirname =~ s{[^:/]+\z}{} unless length($basename); } else { _strip_trailing_sep($dirname); unless( length($basename) ) { ($basename,$dirname) = fileparse $dirname; _strip_trailing_sep($dirname); } } $dirname; } # Strip the trailing path separator. sub _strip_trailing_sep { my $type = $Fileparse_fstype; if ($type eq 'MacOS') { $_[0] =~ s/([^:]):\z/$1/s; } elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) { $_[0] =~ s/([^:])[\\\/]*\z/$1/; } else { $_[0] =~ s{(.)/*\z}{$1}s; } } =item C X my $type = fileparse_set_fstype(); my $previous_type = fileparse_set_fstype($type); Normally File::Basename will assume a file path type native to your current operating system (ie. /foo/bar style on Unix, \foo\bar on Windows, etc...). With this function you can override that assumption. Valid $types are "MacOS", "VMS", "AmigaOS", "OS2", "RISCOS", "MSWin32", "DOS" (also "MSDOS" for backwards bug compatibility), "Epoc" and "Unix" (all case-insensitive). If an unrecognized $type is given "Unix" will be assumed. If you've selected VMS syntax, and the file specification you pass to one of these routines contains a "/", they assume you are using Unix emulation and apply the Unix syntax rules instead, for that function call only. =back =cut BEGIN { my @Ignore_Case = qw(MacOS VMS AmigaOS OS2 RISCOS MSWin32 MSDOS DOS Epoc); my @Types = (@Ignore_Case, qw(Unix)); sub fileparse_set_fstype { my $old = $Fileparse_fstype; if (@_) { my $new_type = shift; $Fileparse_fstype = 'Unix'; # default foreach my $type (@Types) { $Fileparse_fstype = $type if $new_type =~ /^$type/i; } $Fileparse_igncase = (grep $Fileparse_fstype eq $_, @Ignore_Case) ? 1 : 0; } return $old; } } 1; =head1 SEE ALSO L, L, L FILEc6c12f79/Compress/Zlib.pm package Compress::Zlib; require 5.006 ; require Exporter; use Carp ; use IO::Handle ; use Scalar::Util qw(dualvar); use IO::Compress::Base::Common 2.106 ; use Compress::Raw::Zlib 2.103 ; use IO::Compress::Gzip 2.106 ; use IO::Uncompress::Gunzip 2.106 ; use strict ; use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); $VERSION = '2.106'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @EXPORT = qw( deflateInit inflateInit compress uncompress gzopen $gzerrno ); push @EXPORT, @Compress::Raw::Zlib::EXPORT ; @EXPORT_OK = qw(memGunzip memGzip zlib_version); %EXPORT_TAGS = ( ALL => \@EXPORT ); BEGIN { *zlib_version = \&Compress::Raw::Zlib::zlib_version; } use constant FLAG_APPEND => 1 ; use constant FLAG_CRC => 2 ; use constant FLAG_ADLER => 4 ; use constant FLAG_CONSUME_INPUT => 8 ; our (@my_z_errmsg); @my_z_errmsg = ( "need dictionary", # Z_NEED_DICT 2 "stream end", # Z_STREAM_END 1 "", # Z_OK 0 "file error", # Z_ERRNO (-1) "stream error", # Z_STREAM_ERROR (-2) "data error", # Z_DATA_ERROR (-3) "insufficient memory", # Z_MEM_ERROR (-4) "buffer error", # Z_BUF_ERROR (-5) "incompatible version",# Z_VERSION_ERROR(-6) ); sub _set_gzerr { my $value = shift ; if ($value == 0) { $Compress::Zlib::gzerrno = 0 ; } elsif ($value == Z_ERRNO() || $value > 2) { $Compress::Zlib::gzerrno = $! ; } else { $Compress::Zlib::gzerrno = dualvar($value+0, $my_z_errmsg[2 - $value]); } return $value ; } sub _set_gzerr_undef { _set_gzerr(@_); return undef; } sub _save_gzerr { my $gz = shift ; my $test_eof = shift ; my $value = $gz->errorNo() || 0 ; my $eof = $gz->eof() ; if ($test_eof) { # gzread uses Z_STREAM_END to denote a successful end $value = Z_STREAM_END() if $gz->eof() && $value == 0 ; } _set_gzerr($value) ; } sub gzopen($$) { my ($file, $mode) = @_ ; my $gz ; my %defOpts = (Level => Z_DEFAULT_COMPRESSION(), Strategy => Z_DEFAULT_STRATEGY(), ); my $writing ; $writing = ! ($mode =~ /r/i) ; $writing = ($mode =~ /[wa]/i) ; $defOpts{Level} = $1 if $mode =~ /(\d)/; $defOpts{Strategy} = Z_FILTERED() if $mode =~ /f/i; $defOpts{Strategy} = Z_HUFFMAN_ONLY() if $mode =~ /h/i; $defOpts{Append} = 1 if $mode =~ /a/i; my $infDef = $writing ? 'deflate' : 'inflate'; my @params = () ; croak "gzopen: file parameter is not a filehandle or filename" unless isaFilehandle $file || isaFilename $file || (ref $file && ref $file eq 'SCALAR'); return undef unless $mode =~ /[rwa]/i ; _set_gzerr(0) ; if ($writing) { $gz = IO::Compress::Gzip->new($file, Minimal => 1, AutoClose => 1, %defOpts) or $Compress::Zlib::gzerrno = $IO::Compress::Gzip::GzipError; } else { $gz = IO::Uncompress::Gunzip->new($file, Transparent => 1, Append => 0, AutoClose => 1, MultiStream => 1, Strict => 0) or $Compress::Zlib::gzerrno = $IO::Uncompress::Gunzip::GunzipError; } return undef if ! defined $gz ; bless [$gz, $infDef], 'Compress::Zlib::gzFile'; } sub Compress::Zlib::gzFile::gzread { my $self = shift ; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'inflate'; my $len = defined $_[1] ? $_[1] : 4096 ; my $gz = $self->[0] ; if ($self->gzeof() || $len == 0) { # Zap the output buffer to match ver 1 behaviour. $_[0] = "" ; _save_gzerr($gz, 1); return 0 ; } my $status = $gz->read($_[0], $len) ; _save_gzerr($gz, 1); return $status ; } sub Compress::Zlib::gzFile::gzreadline { my $self = shift ; my $gz = $self->[0] ; { # Maintain backward compatibility with 1.x behaviour # It didn't support $/, so this can't either. local $/ = "\n" ; $_[0] = $gz->getline() ; } _save_gzerr($gz, 1); return defined $_[0] ? length $_[0] : 0 ; } sub Compress::Zlib::gzFile::gzwrite { my $self = shift ; my $gz = $self->[0] ; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'deflate'; $] >= 5.008 and (utf8::downgrade($_[0], 1) or croak "Wide character in gzwrite"); my $status = $gz->write($_[0]) ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gztell { my $self = shift ; my $gz = $self->[0] ; my $status = $gz->tell() ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzseek { my $self = shift ; my $offset = shift ; my $whence = shift ; my $gz = $self->[0] ; my $status ; eval { local $SIG{__DIE__}; $status = $gz->seek($offset, $whence) ; }; if ($@) { my $error = $@; $error =~ s/^.*: /gzseek: /; $error =~ s/ at .* line \d+\s*$//; croak $error; } _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzflush { my $self = shift ; my $f = shift ; my $gz = $self->[0] ; my $status = $gz->flush($f) ; my $err = _save_gzerr($gz); return $status ? 0 : $err; } sub Compress::Zlib::gzFile::gzclose { my $self = shift ; my $gz = $self->[0] ; my $status = $gz->close() ; my $err = _save_gzerr($gz); return $status ? 0 : $err; } sub Compress::Zlib::gzFile::gzeof { my $self = shift ; my $gz = $self->[0] ; return 0 if $self->[1] ne 'inflate'; my $status = $gz->eof() ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzsetparams { my $self = shift ; croak "Usage: Compress::Zlib::gzFile::gzsetparams(file, level, strategy)" unless @_ eq 2 ; my $gz = $self->[0] ; my $level = shift ; my $strategy = shift; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'deflate'; my $status = *$gz->{Compress}->deflateParams(-Level => $level, -Strategy => $strategy); _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzerror { my $self = shift ; my $gz = $self->[0] ; return $Compress::Zlib::gzerrno ; } sub compress($;$) { my ($x, $output, $err, $in) =('', '', '', '') ; if (ref $_[0] ) { $in = $_[0] ; croak "not a scalar reference" unless ref $in eq 'SCALAR' ; } else { $in = \$_[0] ; } $] >= 5.008 and (utf8::downgrade($$in, 1) or croak "Wide character in compress"); my $level = (@_ == 2 ? $_[1] : Z_DEFAULT_COMPRESSION() ); $x = Compress::Raw::Zlib::_deflateInit(FLAG_APPEND, $level, Z_DEFLATED, MAX_WBITS, MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY, 4096, '') or return undef ; $err = $x->deflate($in, $output) ; return undef unless $err == Z_OK() ; $err = $x->flush($output) ; return undef unless $err == Z_OK() ; return $output ; } sub uncompress($) { my ($output, $in) =('', '') ; if (ref $_[0] ) { $in = $_[0] ; croak "not a scalar reference" unless ref $in eq 'SCALAR' ; } else { $in = \$_[0] ; } $] >= 5.008 and (utf8::downgrade($$in, 1) or croak "Wide character in uncompress"); my ($obj, $status) = Compress::Raw::Zlib::_inflateInit(0, MAX_WBITS, 4096, "") ; $status == Z_OK or return undef; $obj->inflate($in, $output) == Z_STREAM_END or return undef; return $output; } sub deflateInit(@) { my ($got) = ParseParameters(0, { 'bufsize' => [IO::Compress::Base::Common::Parse_unsigned, 4096], 'level' => [IO::Compress::Base::Common::Parse_signed, Z_DEFAULT_COMPRESSION()], 'method' => [IO::Compress::Base::Common::Parse_unsigned, Z_DEFLATED()], 'windowbits' => [IO::Compress::Base::Common::Parse_signed, MAX_WBITS()], 'memlevel' => [IO::Compress::Base::Common::Parse_unsigned, MAX_MEM_LEVEL()], 'strategy' => [IO::Compress::Base::Common::Parse_unsigned, Z_DEFAULT_STRATEGY()], 'dictionary' => [IO::Compress::Base::Common::Parse_any, ""], }, @_ ) ; croak "Compress::Zlib::deflateInit: Bufsize must be >= 1, you specified " . $got->getValue('bufsize') unless $got->getValue('bufsize') >= 1; my $obj ; my $status = 0 ; ($obj, $status) = Compress::Raw::Zlib::_deflateInit(0, $got->getValue('level'), $got->getValue('method'), $got->getValue('windowbits'), $got->getValue('memlevel'), $got->getValue('strategy'), $got->getValue('bufsize'), $got->getValue('dictionary')) ; my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldDeflate" : undef) ; return wantarray ? ($x, $status) : $x ; } sub inflateInit(@) { my ($got) = ParseParameters(0, { 'bufsize' => [IO::Compress::Base::Common::Parse_unsigned, 4096], 'windowbits' => [IO::Compress::Base::Common::Parse_signed, MAX_WBITS()], 'dictionary' => [IO::Compress::Base::Common::Parse_any, ""], }, @_) ; croak "Compress::Zlib::inflateInit: Bufsize must be >= 1, you specified " . $got->getValue('bufsize') unless $got->getValue('bufsize') >= 1; my $status = 0 ; my $obj ; ($obj, $status) = Compress::Raw::Zlib::_inflateInit(FLAG_CONSUME_INPUT, $got->getValue('windowbits'), $got->getValue('bufsize'), $got->getValue('dictionary')) ; my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldInflate" : undef) ; wantarray ? ($x, $status) : $x ; } package Zlib::OldDeflate ; our (@ISA); @ISA = qw(Compress::Raw::Zlib::deflateStream); sub deflate { my $self = shift ; my $output ; my $status = $self->SUPER::deflate($_[0], $output) ; wantarray ? ($output, $status) : $output ; } sub flush { my $self = shift ; my $output ; my $flag = shift || Compress::Zlib::Z_FINISH(); my $status = $self->SUPER::flush($output, $flag) ; wantarray ? ($output, $status) : $output ; } package Zlib::OldInflate ; our (@ISA); @ISA = qw(Compress::Raw::Zlib::inflateStream); sub inflate { my $self = shift ; my $output ; my $status = $self->SUPER::inflate($_[0], $output) ; wantarray ? ($output, $status) : $output ; } package Compress::Zlib ; use IO::Compress::Gzip::Constants 2.106 ; sub memGzip($) { _set_gzerr(0); my $x = Compress::Raw::Zlib::_deflateInit(FLAG_APPEND|FLAG_CRC, Z_BEST_COMPRESSION, Z_DEFLATED, -MAX_WBITS(), MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY, 4096, '') or return undef ; # if the deflation buffer isn't a reference, make it one my $string = (ref $_[0] ? $_[0] : \$_[0]) ; $] >= 5.008 and (utf8::downgrade($$string, 1) or croak "Wide character in memGzip"); my $out; my $status ; $x->deflate($string, $out) == Z_OK or return undef ; $x->flush($out) == Z_OK or return undef ; return IO::Compress::Gzip::Constants::GZIP_MINIMUM_HEADER . $out . pack("V V", $x->crc32(), $x->total_in()); } sub _removeGzipHeader($) { my $string = shift ; return Z_DATA_ERROR() if length($$string) < GZIP_MIN_HEADER_SIZE ; my ($magic1, $magic2, $method, $flags, $time, $xflags, $oscode) = unpack ('CCCCVCC', $$string); return Z_DATA_ERROR() unless $magic1 == GZIP_ID1 and $magic2 == GZIP_ID2 and $method == Z_DEFLATED() and !($flags & GZIP_FLG_RESERVED) ; substr($$string, 0, GZIP_MIN_HEADER_SIZE) = '' ; # skip extra field if ($flags & GZIP_FLG_FEXTRA) { return Z_DATA_ERROR() if length($$string) < GZIP_FEXTRA_HEADER_SIZE ; my ($extra_len) = unpack ('v', $$string); $extra_len += GZIP_FEXTRA_HEADER_SIZE; return Z_DATA_ERROR() if length($$string) < $extra_len ; substr($$string, 0, $extra_len) = ''; } # skip orig name if ($flags & GZIP_FLG_FNAME) { my $name_end = index ($$string, GZIP_NULL_BYTE); return Z_DATA_ERROR() if $name_end == -1 ; substr($$string, 0, $name_end + 1) = ''; } # skip comment if ($flags & GZIP_FLG_FCOMMENT) { my $comment_end = index ($$string, GZIP_NULL_BYTE); return Z_DATA_ERROR() if $comment_end == -1 ; substr($$string, 0, $comment_end + 1) = ''; } # skip header crc if ($flags & GZIP_FLG_FHCRC) { return Z_DATA_ERROR() if length ($$string) < GZIP_FHCRC_SIZE ; substr($$string, 0, GZIP_FHCRC_SIZE) = ''; } return Z_OK(); } sub _ret_gun_error { $Compress::Zlib::gzerrno = $IO::Uncompress::Gunzip::GunzipError; return undef; } sub memGunzip($) { # if the buffer isn't a reference, make it one my $string = (ref $_[0] ? $_[0] : \$_[0]); $] >= 5.008 and (utf8::downgrade($$string, 1) or croak "Wide character in memGunzip"); _set_gzerr(0); my $status = _removeGzipHeader($string) ; $status == Z_OK() or return _set_gzerr_undef($status); my $bufsize = length $$string > 4096 ? length $$string : 4096 ; my $x = Compress::Raw::Zlib::_inflateInit(FLAG_CRC | FLAG_CONSUME_INPUT, -MAX_WBITS(), $bufsize, '') or return _ret_gun_error(); my $output = '' ; $status = $x->inflate($string, $output); if ( $status == Z_OK() ) { _set_gzerr(Z_DATA_ERROR()); return undef; } return _ret_gun_error() if ($status != Z_STREAM_END()); if (length $$string >= 8) { my ($crc, $len) = unpack ("VV", substr($$string, 0, 8)); substr($$string, 0, 8) = ''; return _set_gzerr_undef(Z_DATA_ERROR()) unless $len == length($output) and $crc == Compress::Raw::Zlib::crc32($output); } else { $$string = ''; } return $output; } # Autoload methods go after __END__, and are processed by the autosplit program. 1; __END__ =head1 NAME Compress::Zlib - Interface to zlib compression library =head1 SYNOPSIS use Compress::Zlib ; ($d, $status) = deflateInit( [OPT] ) ; $status = $d->deflate($input, $output) ; $status = $d->flush([$flush_type]) ; $d->deflateParams(OPTS) ; $d->deflateTune(OPTS) ; $d->dict_adler() ; $d->crc32() ; $d->adler32() ; $d->total_in() ; $d->total_out() ; $d->msg() ; $d->get_Strategy(); $d->get_Level(); $d->get_BufSize(); ($i, $status) = inflateInit( [OPT] ) ; $status = $i->inflate($input, $output [, $eof]) ; $status = $i->inflateSync($input) ; $i->dict_adler() ; $d->crc32() ; $d->adler32() ; $i->total_in() ; $i->total_out() ; $i->msg() ; $d->get_BufSize(); $dest = compress($source) ; $dest = uncompress($source) ; $gz = gzopen($filename or filehandle, $mode) ; $bytesread = $gz->gzread($buffer [,$size]) ; $bytesread = $gz->gzreadline($line) ; $byteswritten = $gz->gzwrite($buffer) ; $status = $gz->gzflush($flush) ; $offset = $gz->gztell() ; $status = $gz->gzseek($offset, $whence) ; $status = $gz->gzclose() ; $status = $gz->gzeof() ; $status = $gz->gzsetparams($level, $strategy) ; $errstring = $gz->gzerror() ; $gzerrno $dest = Compress::Zlib::memGzip($buffer) ; $dest = Compress::Zlib::memGunzip($buffer) ; $crc = adler32($buffer [,$crc]) ; $crc = crc32($buffer [,$crc]) ; $crc = crc32_combine($crc1, $crc2, $len2); $adler = adler32_combine($adler1, $adler2, $len2); my $version = Compress::Raw::Zlib::zlib_version(); =head1 DESCRIPTION The I module provides a Perl interface to the I compression library (see L for details about where to get I). The C module can be split into two general areas of functionality, namely a simple read/write interface to I files and a low-level in-memory compression/decompression interface. Each of these areas will be discussed in the following sections. =head2 Notes for users of Compress::Zlib version 1 The main change in C version 2.x is that it does not now interface directly to the zlib library. Instead it uses the C and C modules for reading/writing gzip files, and the C module for some low-level zlib access. The interface provided by version 2 of this module should be 100% backward compatible with version 1. If you find a difference in the expected behaviour please contact the author (See L). See L With the creation of the C and C modules no new features are planned for C - the new modules do everything that C does and then some. Development on C will be limited to bug fixes only. If you are writing new code, your first port of call should be one of the new C or C modules. =head1 GZIP INTERFACE A number of functions are supplied in I for reading and writing I files that conform to RFC 1952. This module provides an interface to most of them. If you have previously used C 1.x, the following enhancements/changes have been made to the C interface: =over 5 =item 1 If you want to open either STDIN or STDOUT with C, you can now optionally use the special filename "C<->" as a synonym for C<\*STDIN> and C<\*STDOUT>. =item 2 In C version 1.x, C used the zlib library to open the underlying file. This made things especially tricky when a Perl filehandle was passed to C. Behind the scenes the numeric C file descriptor had to be extracted from the Perl filehandle and this passed to the zlib library. Apart from being non-portable to some operating systems, this made it difficult to use C in situations where you wanted to extract/create a gzip data stream that is embedded in a larger file, without having to resort to opening and closing the file multiple times. It also made it impossible to pass a perl filehandle that wasn't associated with a real filesystem file, like, say, an C. In C version 2.x, the C interface has been completely rewritten to use the L for writing gzip files and L for reading gzip files. None of the limitations mentioned above apply. =item 3 Addition of C to provide a restricted C interface. =item 4. Added C. =back A more complete and flexible interface for reading/writing gzip files/buffers is included with the module C. See L and L for more details. =over 5 =item B<$gz = gzopen($filename, $mode)> =item B<$gz = gzopen($filehandle, $mode)> This function opens either the I file C<$filename> for reading or writing or attaches to the opened filehandle, C<$filehandle>. It returns an object on success and C on failure. When writing a gzip file this interface will I create the smallest possible gzip header (exactly 10 bytes). If you want greater control over what gets stored in the gzip header (like the original filename or a comment) use L instead. Similarly if you want to read the contents of the gzip header use L. The second parameter, C<$mode>, is used to specify whether the file is opened for reading or writing and to optionally specify a compression level and compression strategy when writing. The format of the C<$mode> parameter is similar to the mode parameter to the 'C' function C, so "rb" is used to open for reading, "wb" for writing and "ab" for appending (writing at the end of the file). To specify a compression level when writing, append a digit between 0 and 9 to the mode string -- 0 means no compression and 9 means maximum compression. If no compression level is specified Z_DEFAULT_COMPRESSION is used. To specify the compression strategy when writing, append 'f' for filtered data, 'h' for Huffman only compression, or 'R' for run-length encoding. If no strategy is specified Z_DEFAULT_STRATEGY is used. So, for example, "wb9" means open for writing with the maximum compression using the default strategy and "wb4R" means open for writing with compression level 4 and run-length encoding. Refer to the I documentation for the exact format of the C<$mode> parameter. =item B<$bytesread = $gz-Egzread($buffer [, $size]) ;> Reads C<$size> bytes from the compressed file into C<$buffer>. If C<$size> is not specified, it will default to 4096. If the scalar C<$buffer> is not large enough, it will be extended automatically. Returns the number of bytes actually read. On EOF it returns 0 and in the case of an error, -1. =item B<$bytesread = $gz-Egzreadline($line) ;> Reads the next line from the compressed file into C<$line>. Returns the number of bytes actually read. On EOF it returns 0 and in the case of an error, -1. It is legal to intermix calls to C and C. To maintain backward compatibility with version 1.x of this module C ignores the C<$/> variable - it I uses the string C<"\n"> as the line delimiter. If you want to read a gzip file a line at a time and have it respect the C<$/> variable (or C<$INPUT_RECORD_SEPARATOR>, or C<$RS> when C is in use) see L. =item B<$byteswritten = $gz-Egzwrite($buffer) ;> Writes the contents of C<$buffer> to the compressed file. Returns the number of bytes actually written, or 0 on error. =item B<$status = $gz-Egzflush($flush_type) ;> Flushes all pending output into the compressed file. This method takes an optional parameter, C<$flush_type>, that controls how the flushing will be carried out. By default the C<$flush_type> used is C. Other valid values for C<$flush_type> are C, C, C and C. It is strongly recommended that you only set the C parameter if you fully understand the implications of what it does - overuse of C can seriously degrade the level of compression achieved. See the C documentation for details. Returns 0 on success. =item B<$offset = $gz-Egztell() ;> Returns the uncompressed file offset. =item B<$status = $gz-Egzseek($offset, $whence) ;> Provides a sub-set of the C functionality, with the restriction that it is only legal to seek forward in the compressed file. It is a fatal error to attempt to seek backward. When opened for writing, empty parts of the file will have NULL (0x00) bytes written to them. The C<$whence> parameter should be one of SEEK_SET, SEEK_CUR or SEEK_END. Returns 1 on success, 0 on failure. =item B<$gz-Egzclose> Closes the compressed file. Any pending data is flushed to the file before it is closed. Returns 0 on success. =item B<$gz-Egzsetparams($level, $strategy> Change settings for the deflate stream C<$gz>. The list of the valid options is shown below. Options not specified will remain unchanged. Note: This method is only available if you are running zlib 1.0.6 or better. =over 5 =item B<$level> Defines the compression level. Valid values are 0 through 9, C, C, C, and C. =item B<$strategy> Defines the strategy used to tune the compression. The valid values are C, C and C. =back =item B<$gz-Egzerror> Returns the I error message or number for the last operation associated with C<$gz>. The return value will be the I error number when used in a numeric context and the I error message when used in a string context. The I error number constants, shown below, are available for use. Z_OK Z_STREAM_END Z_ERRNO Z_STREAM_ERROR Z_DATA_ERROR Z_MEM_ERROR Z_BUF_ERROR =item B<$gzerrno> The C<$gzerrno> scalar holds the error code associated with the most recent I routine. Note that unlike C, the error is I associated with a particular file. As with C it returns an error number in numeric context and an error message in string context. Unlike C though, the error message will correspond to the I message when the error is associated with I itself, or the UNIX error message when it is not (i.e. I returned C). As there is an overlap between the error numbers used by I and UNIX, C<$gzerrno> should only be used to check for the presence of I error in numeric context. Use C to check for specific I errors. The I example below shows how the variable can be used safely. =back =head2 Examples Here is an example script which uses the interface. It implements a I function. use strict ; use warnings ; use Compress::Zlib ; # use stdin if no files supplied @ARGV = '-' unless @ARGV ; foreach my $file (@ARGV) { my $buffer ; my $gz = gzopen($file, "rb") or die "Cannot open $file: $gzerrno\n" ; print $buffer while $gz->gzread($buffer) > 0 ; die "Error reading from $file: $gzerrno" . ($gzerrno+0) . "\n" if $gzerrno != Z_STREAM_END ; $gz->gzclose() ; } Below is a script which makes use of C. It implements a very simple I like script. use strict ; use warnings ; use Compress::Zlib ; die "Usage: gzgrep pattern [file...]\n" unless @ARGV >= 1; my $pattern = shift ; # use stdin if no files supplied @ARGV = '-' unless @ARGV ; foreach my $file (@ARGV) { my $gz = gzopen($file, "rb") or die "Cannot open $file: $gzerrno\n" ; while ($gz->gzreadline($_) > 0) { print if /$pattern/ ; } die "Error reading from $file: $gzerrno\n" if $gzerrno != Z_STREAM_END ; $gz->gzclose() ; } This script, I, does the opposite of the I script above. It reads from standard input and writes a gzip data stream to standard output. use strict ; use warnings ; use Compress::Zlib ; binmode STDOUT; # gzopen only sets it on the fd my $gz = gzopen(\*STDOUT, "wb") or die "Cannot open stdout: $gzerrno\n" ; while (<>) { $gz->gzwrite($_) or die "error writing: $gzerrno\n" ; } $gz->gzclose ; =head2 Compress::Zlib::memGzip This function is used to create an in-memory gzip file with the minimum possible gzip header (exactly 10 bytes). $dest = Compress::Zlib::memGzip($buffer) or die "Cannot compress: $gzerrno\n"; If successful, it returns the in-memory gzip file. Otherwise it returns C and the C<$gzerrno> variable will store the zlib error code. The C<$buffer> parameter can either be a scalar or a scalar reference. See L for an alternative way to carry out in-memory gzip compression. =head2 Compress::Zlib::memGunzip This function is used to uncompress an in-memory gzip file. $dest = Compress::Zlib::memGunzip($buffer) or die "Cannot uncompress: $gzerrno\n"; If successful, it returns the uncompressed gzip file. Otherwise it returns C and the C<$gzerrno> variable will store the zlib error code. The C<$buffer> parameter can either be a scalar or a scalar reference. The contents of the C<$buffer> parameter are destroyed after calling this function. If C<$buffer> consists of multiple concatenated gzip data streams only the first will be uncompressed. Use C with the C option in the C module if you need to deal with concatenated data streams. See L for an alternative way to carry out in-memory gzip uncompression. =head1 COMPRESS/UNCOMPRESS Two functions are provided to perform in-memory compression/uncompression of RFC 1950 data streams. They are called C and C. =over 5 =item B<$dest = compress($source [, $level] ) ;> Compresses C<$source>. If successful it returns the compressed data. Otherwise it returns I. The source buffer, C<$source>, can either be a scalar or a scalar reference. The C<$level> parameter defines the compression level. Valid values are 0 through 9, C, C, C, and C. If C<$level> is not specified C will be used. =item B<$dest = uncompress($source) ;> Uncompresses C<$source>. If successful it returns the uncompressed data. Otherwise it returns I. The source buffer can either be a scalar or a scalar reference. =back Please note: the two functions defined above are I compatible with the Unix commands of the same name. See L and L included with this distribution for an alternative interface for reading/writing RFC 1950 files/buffers. =head1 Deflate Interface This section defines an interface that allows in-memory compression using the I interface provided by zlib. Here is a definition of the interface available: =head2 B<($d, $status) = deflateInit( [OPT] )> Initialises a deflation stream. It combines the features of the I functions C, C and C. If successful, it will return the initialised deflation stream, C<$d> and C<$status> of C in a list context. In scalar context it returns the deflation stream, C<$d>, only. If not successful, the returned deflation stream (C<$d>) will be I and C<$status> will hold the exact I error code. The function optionally takes a number of named options specified as C<< -Name=>value >> pairs. This allows individual options to be tailored without having to specify them all in the parameter list. For backward compatibility, it is also possible to pass the parameters as a reference to a hash containing the name=>value pairs. The function takes one optional parameter, a reference to a hash. The contents of the hash allow the deflation interface to be tailored. Here is a list of the valid options: =over 5 =item B<-Level> Defines the compression level. Valid values are 0 through 9, C, C, C, and C. The default is Z_DEFAULT_COMPRESSION. =item B<-Method> Defines the compression method. The only valid value at present (and the default) is Z_DEFLATED. =item B<-WindowBits> To create an RFC 1950 data stream, set C to a positive number. To create an RFC 1951 data stream, set C to C<-MAX_WBITS>. For a full definition of the meaning and valid values for C refer to the I documentation for I. Defaults to MAX_WBITS. =item B<-MemLevel> For a definition of the meaning and valid values for C refer to the I documentation for I. Defaults to MAX_MEM_LEVEL. =item B<-Strategy> Defines the strategy used to tune the compression. The valid values are C, C and C. The default is Z_DEFAULT_STRATEGY. =item B<-Dictionary> When a dictionary is specified I will automatically call C directly after calling C. The Adler32 value for the dictionary can be obtained by calling the method C<< $d->dict_adler() >>. The default is no dictionary. =item B<-Bufsize> Sets the initial size for the deflation buffer. If the buffer has to be reallocated to increase the size, it will grow in increments of C. The default is 4096. =back Here is an example of using the C optional parameter list to override the default buffer size and compression level. All other options will take their default values. deflateInit( -Bufsize => 300, -Level => Z_BEST_SPEED ) ; =head2 B<($out, $status) = $d-Edeflate($buffer)> Deflates the contents of C<$buffer>. The buffer can either be a scalar or a scalar reference. When finished, C<$buffer> will be completely processed (assuming there were no errors). If the deflation was successful it returns the deflated output, C<$out>, and a status value, C<$status>, of C. On error, C<$out> will be I and C<$status> will contain the I error code. In a scalar context C will return C<$out> only. As with the I function in I, it is not necessarily the case that any output will be produced by this method. So don't rely on the fact that C<$out> is empty for an error test. =head2 B<($out, $status) = $d-Eflush()> =head2 B<($out, $status) = $d-Eflush($flush_type)> Typically used to finish the deflation. Any pending output will be returned via C<$out>. C<$status> will have a value C if successful. In a scalar context C will return C<$out> only. Note that flushing can seriously degrade the compression ratio, so it should only be used to terminate a decompression (using C) or when you want to create a I (using C). By default the C used is C. Other valid values for C are C, C, C and C. It is strongly recommended that you only set the C parameter if you fully understand the implications of what it does. See the C documentation for details. =head2 B<$status = $d-EdeflateParams([OPT])> Change settings for the deflate stream C<$d>. The list of the valid options is shown below. Options not specified will remain unchanged. =over 5 =item B<-Level> Defines the compression level. Valid values are 0 through 9, C, C, C, and C. =item B<-Strategy> Defines the strategy used to tune the compression. The valid values are C, C and C. =back =head2 B<$d-Edict_adler()> Returns the adler32 value for the dictionary. =head2 B<$d-Emsg()> Returns the last error message generated by zlib. =head2 B<$d-Etotal_in()> Returns the total number of bytes uncompressed bytes input to deflate. =head2 B<$d-Etotal_out()> Returns the total number of compressed bytes output from deflate. =head2 Example Here is a trivial example of using C. It simply reads standard input, deflates it and writes it to standard output. use strict ; use warnings ; use Compress::Zlib ; binmode STDIN; binmode STDOUT; my $x = deflateInit() or die "Cannot create a deflation stream\n" ; my ($output, $status) ; while (<>) { ($output, $status) = $x->deflate($_) ; $status == Z_OK or die "deflation failed\n" ; print $output ; } ($output, $status) = $x->flush() ; $status == Z_OK or die "deflation failed\n" ; print $output ; =head1 Inflate Interface This section defines the interface available that allows in-memory uncompression using the I interface provided by zlib. Here is a definition of the interface: =head2 B<($i, $status) = inflateInit()> Initialises an inflation stream. In a list context it returns the inflation stream, C<$i>, and the I status code in C<$status>. In a scalar context it returns the inflation stream only. If successful, C<$i> will hold the inflation stream and C<$status> will be C. If not successful, C<$i> will be I and C<$status> will hold the I error code. The function optionally takes a number of named options specified as C<< -Name=>value >> pairs. This allows individual options to be tailored without having to specify them all in the parameter list. For backward compatibility, it is also possible to pass the parameters as a reference to a hash containing the name=>value pairs. The function takes one optional parameter, a reference to a hash. The contents of the hash allow the deflation interface to be tailored. Here is a list of the valid options: =over 5 =item B<-WindowBits> To uncompress an RFC 1950 data stream, set C to a positive number. To uncompress an RFC 1951 data stream, set C to C<-MAX_WBITS>. For a full definition of the meaning and valid values for C refer to the I documentation for I. Defaults to MAX_WBITS. =item B<-Bufsize> Sets the initial size for the inflation buffer. If the buffer has to be reallocated to increase the size, it will grow in increments of C. Default is 4096. =item B<-Dictionary> The default is no dictionary. =back Here is an example of using the C optional parameter to override the default buffer size. inflateInit( -Bufsize => 300 ) ; =head2 B<($out, $status) = $i-Einflate($buffer)> Inflates the complete contents of C<$buffer>. The buffer can either be a scalar or a scalar reference. Returns C if successful and C if the end of the compressed data has been successfully reached. If not successful, C<$out> will be I and C<$status> will hold the I error code. The C<$buffer> parameter is modified by C. On completion it will contain what remains of the input buffer after inflation. This means that C<$buffer> will be an empty string when the return status is C. When the return status is C the C<$buffer> parameter will contains what (if anything) was stored in the input buffer after the deflated data stream. This feature is useful when processing a file format that encapsulates a compressed data stream (e.g. gzip, zip). =head2 B<$status = $i-EinflateSync($buffer)> Scans C<$buffer> until it reaches either a I or the end of the buffer. If a I is found, C is returned and C<$buffer> will be have all data up to the flush point removed. This can then be passed to the C method. Any other return code means that a flush point was not found. If more data is available, C can be called repeatedly with more compressed data until the flush point is found. =head2 B<$i-Edict_adler()> Returns the adler32 value for the dictionary. =head2 B<$i-Emsg()> Returns the last error message generated by zlib. =head2 B<$i-Etotal_in()> Returns the total number of bytes compressed bytes input to inflate. =head2 B<$i-Etotal_out()> Returns the total number of uncompressed bytes output from inflate. =head2 Example Here is an example of using C. use strict ; use warnings ; use Compress::Zlib ; my $x = inflateInit() or die "Cannot create a inflation stream\n" ; my $input = '' ; binmode STDIN; binmode STDOUT; my ($output, $status) ; while (read(STDIN, $input, 4096)) { ($output, $status) = $x->inflate(\$input) ; print $output if $status == Z_OK or $status == Z_STREAM_END ; last if $status != Z_OK ; } die "inflation failed\n" unless $status == Z_STREAM_END ; =head1 CHECKSUM FUNCTIONS Two functions are provided by I to calculate checksums. For the Perl interface, the order of the two parameters in both functions has been reversed. This allows both running checksums and one off calculations to be done. $crc = adler32($buffer [,$crc]) ; $crc = crc32($buffer [,$crc]) ; The buffer parameters can either be a scalar or a scalar reference. If the $crc parameters is C, the crc value will be reset. If you have built this module with zlib 1.2.3 or better, two more CRC-related functions are available. $crc = crc32_combine($crc1, $crc2, $len2); $adler = adler32_combine($adler1, $adler2, $len2); These functions allow checksums to be merged. Refer to the I documentation for more details. =head1 Misc =head2 my $version = Compress::Zlib::zlib_version(); Returns the version of the zlib library. =head1 CONSTANTS All the I constants are automatically imported when you make use of I. =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L For RFC 1950, 1951 and 1952 see L, L and L The I compression library was written by Jean-loup Gailly C and Mark Adler C. The primary site for the I compression library is L. The primary site for gzip is L. =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 1995-2022 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILEd1d560bb/Carp/Heavy.pmpackage Carp::Heavy; use Carp (); our $VERSION = '1.52'; $VERSION =~ tr/_//d; # Carp::Heavy was merged into Carp in version 1.12. Any mismatched versions # after this point are not significant and can be ignored. if(($Carp::VERSION || 0) < 1.12) { my $cv = defined($Carp::VERSION) ? $Carp::VERSION : "undef"; die "Version mismatch between Carp $cv ($INC{q(Carp.pm)}) and Carp::Heavy $VERSION ($INC{q(Carp/Heavy.pm)}). Did you alter \@INC after Carp was loaded?\n"; } 1; # Most of the machinery of Carp used to be here. # It has been moved in Carp.pm now, but this placeholder remains for # the benefit of modules that like to preload Carp::Heavy directly. # This must load Carp, because some modules rely on the historical # behaviour of Carp::Heavy loading Carp. FILE78eee0ed/Exporter.pmK package Exporter; use strict; no strict 'refs'; our $Debug = 0; our $ExportLevel = 0; our $Verbose ||= 0; our $VERSION = '5.77'; our %Cache; sub as_heavy { require Exporter::Heavy; # Unfortunately, this does not work if the caller is aliased as *name = \&foo # Thus the need to create a lot of identical subroutines my $c = (caller(1))[3]; $c =~ s/.*:://; \&{"Exporter::Heavy::heavy_$c"}; } sub export { goto &{as_heavy()}; } sub import { my $pkg = shift; my $callpkg = caller($ExportLevel); if ($pkg eq "Exporter" and @_ and $_[0] eq "import") { *{$callpkg."::import"} = \&import; return; } # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-( my $exports = \@{"$pkg\::EXPORT"}; # But, avoid creating things if they don't exist, which saves a couple of # hundred bytes per package processed. my $fail = ${$pkg . '::'}{EXPORT_FAIL} && \@{"$pkg\::EXPORT_FAIL"}; return export $pkg, $callpkg, @_ if $Verbose or $Debug or $fail && @$fail > 1; my $export_cache = ($Cache{$pkg} ||= {}); my $args = @_ or @_ = @$exports; if ($args and not %$export_cache) { s/^&//, $export_cache->{$_} = 1 foreach (@$exports, @{"$pkg\::EXPORT_OK"}); } my $heavy; # Try very hard not to use {} and hence have to enter scope on the foreach # We bomb out of the loop with last as soon as heavy is set. if ($args or $fail) { ($heavy = (/\W/ or $args and not exists $export_cache->{$_} or $fail and @$fail and $_ eq $fail->[0])) and last foreach (@_); } else { ($heavy = /\W/) and last foreach (@_); } return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy; local $SIG{__WARN__} = sub {require Carp; &Carp::carp} if not $SIG{__WARN__}; # shortcut for the common case of no type character *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_; } # Default methods sub export_fail { my $self = shift; @_; } # Unfortunately, caller(1)[3] "does not work" if the caller is aliased as # *name = \&foo. Thus the need to create a lot of identical subroutines # Otherwise we could have aliased them to export(). sub export_to_level { goto &{as_heavy()}; } sub export_tags { goto &{as_heavy()}; } sub export_ok_tags { goto &{as_heavy()}; } sub require_version { goto &{as_heavy()}; } 1; __END__ =head1 NAME Exporter - Implements default import method for modules =head1 SYNOPSIS In module F: package YourModule; use Exporter 'import'; our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request or package YourModule; require Exporter; our @ISA = qw(Exporter); # inherit all of Exporter's methods our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request or package YourModule; use parent 'Exporter'; # inherit all of Exporter's methods our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request In other files which wish to use C: use YourModule qw(frobnicate); # import listed symbols frobnicate ($left, $right) # calls YourModule::frobnicate Take a look at L for some variants you will like to use in modern Perl code. =head1 DESCRIPTION The Exporter module implements an C method which allows a module to export functions and variables to its users' namespaces. Many modules use Exporter rather than implementing their own C method because Exporter provides a highly flexible interface, with an implementation optimised for the common case. Perl automatically calls the C method when processing a C statement for a module. Modules and C are documented in L and L. Understanding the concept of modules and how the C statement operates is important to understanding the Exporter. =head2 How to Export The arrays C<@EXPORT> and C<@EXPORT_OK> in a module hold lists of symbols that are going to be exported into the users name space by default, or which they can request to be exported, respectively. The symbols can represent functions, scalars, arrays, hashes, or typeglobs. The symbols must be given by full name with the exception that the ampersand in front of a function is optional, e.g. our @EXPORT = qw(afunc $scalar @array); # afunc is a function our @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc If you are only exporting function names it is recommended to omit the ampersand, as the implementation is faster this way. =head2 Selecting What to Export Do B export method names! Do B export anything else by default without a good reason! Exports pollute the namespace of the module user. If you must export try to use C<@EXPORT_OK> in preference to C<@EXPORT> and avoid short or common symbol names to reduce the risk of name clashes. Generally anything not exported is still accessible from outside the module using the C (or C<< $blessed_ref->method >>) syntax. By convention you can use a leading underscore on names to informally indicate that they are 'internal' and not for public use. (It is actually possible to get private functions by saying: my $subref = sub { ... }; $subref->(@args); # Call it as a function $obj->$subref(@args); # Use it as a method However if you use them for methods it is up to you to figure out how to make inheritance work.) As a general rule, if the module is trying to be object oriented then export nothing. If it's just a collection of functions then C<@EXPORT_OK> anything but use C<@EXPORT> with caution. For function and method names use barewords in preference to names prefixed with ampersands for the export lists. Other module design guidelines can be found in L. =head2 How to Import In other files which wish to use your module there are three basic ways for them to load your module and import its symbols: =over 4 =item C This imports all the symbols from YourModule's C<@EXPORT> into the namespace of the C statement. =item C This causes perl to load your module but does not import any symbols. =item C This imports only the symbols listed by the caller into their namespace. All listed symbols must be in your C<@EXPORT> or C<@EXPORT_OK>, else an error occurs. The advanced export features of Exporter are accessed like this, but with list entries that are syntactically distinct from symbol names. =back Unless you want to use its advanced features, this is probably all you need to know to use Exporter. =head1 Advanced Features =head2 Specialised Import Lists If any of the entries in an import list begins with !, : or / then the list is treated as a series of specifications which either add to or delete from the list of names to import. They are processed left to right. Specifications are in the form: [!]name This name only [!]:DEFAULT All names in @EXPORT [!]:tag All names in $EXPORT_TAGS{tag} anonymous array [!]/pattern/ All names in @EXPORT and @EXPORT_OK which match A leading ! indicates that matching names should be deleted from the list of names to import. If the first specification is a deletion it is treated as though preceded by :DEFAULT. If you just want to import extra names in addition to the default set you will still need to include :DEFAULT explicitly. e.g., F defines: our @EXPORT = qw(A1 A2 A3 A4 A5); our @EXPORT_OK = qw(B1 B2 B3 B4 B5); our %EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]); Note that you cannot use tags in @EXPORT or @EXPORT_OK. Names in EXPORT_TAGS must also appear in @EXPORT or @EXPORT_OK. An application using Module can say something like: use Module qw(:DEFAULT :T2 !B3 A3); Other examples include: use Socket qw(!/^[AP]F_/ !SOMAXCONN !SOL_SOCKET); use POSIX qw(:errno_h :termios_h !TCSADRAIN !/^EXIT/); Remember that most patterns (using //) will need to be anchored with a leading ^, e.g., C rather than C. You can say C to see how the specifications are being processed and what is actually being imported into modules. =head2 Exporting Without Using Exporter's import Method Exporter has a special method, 'export_to_level' which is used in situations where you can't directly call Exporter's import method. The export_to_level method looks like: MyPackage->export_to_level( $where_to_export, $package, @what_to_export ); where C<$where_to_export> is an integer telling how far up the calling stack to export your symbols, and C<@what_to_export> is an array telling what symbols *to* export (usually this is C<@_>). The C<$package> argument is currently unused. For example, suppose that you have a module, A, which already has an import function: package A; our @ISA = qw(Exporter); our @EXPORT_OK = qw($b); sub import { $A::b = 1; # not a very useful import method } and you want to Export symbol C<$A::b> back to the module that called package A. Since Exporter relies on the import method to work, via inheritance, as it stands Exporter::import() will never get called. Instead, say the following: package A; our @ISA = qw(Exporter); our @EXPORT_OK = qw($b); sub import { $A::b = 1; A->export_to_level(1, @_); } This will export the symbols one level 'above' the current package - ie: to the program or module that used package A. Note: Be careful not to modify C<@_> at all before you call export_to_level - or people using your package will get very unexplained results! =head2 Exporting Without Inheriting from Exporter By including Exporter in your C<@ISA> you inherit an Exporter's import() method but you also inherit several other helper methods which you probably don't want and complicate the inheritance tree. To avoid this you can do: package YourModule; use Exporter qw(import); which will export Exporter's own import() method into YourModule. Everything will work as before but you won't need to include Exporter in C<@YourModule::ISA>. Note: This feature was introduced in version 5.57 of Exporter, released with perl 5.8.3. =head2 Module Version Checking The Exporter module will convert an attempt to import a number from a module into a call to C<< $module_name->VERSION($value) >>. This can be used to validate that the version of the module being used is greater than or equal to the required version. For historical reasons, Exporter supplies a C method that simply delegates to C. Originally, before C existed, Exporter would call C. Since the C method treats the C<$VERSION> number as a simple numeric value it will regard version 1.10 as lower than 1.9. For this reason it is strongly recommended that you use numbers with at least two decimal places, e.g., 1.09. =head2 Managing Unknown Symbols In some situations you may want to prevent certain symbols from being exported. Typically this applies to extensions which have functions or constants that may not exist on some systems. The names of any symbols that cannot be exported should be listed in the C<@EXPORT_FAIL> array. If a module attempts to import any of these symbols the Exporter will give the module an opportunity to handle the situation before generating an error. The Exporter will call an export_fail method with a list of the failed symbols: @failed_symbols = $module_name->export_fail(@failed_symbols); If the C method returns an empty list then no error is recorded and all the requested symbols are exported. If the returned list is not empty then an error is generated for each symbol and the export fails. The Exporter provides a default C method which simply returns the list unchanged. Uses for the C method include giving better error messages for some symbols and performing lazy architectural checks (put more symbols into C<@EXPORT_FAIL> by default and then take them out if someone actually tries to use them and an expensive check shows that they are usable on that platform). =head2 Tag Handling Utility Functions Since the symbols listed within C<%EXPORT_TAGS> must also appear in either C<@EXPORT> or C<@EXPORT_OK>, two utility functions are provided which allow you to easily add tagged sets of symbols to C<@EXPORT> or C<@EXPORT_OK>: our %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]); Exporter::export_tags('foo'); # add aa, bb and cc to @EXPORT Exporter::export_ok_tags('bar'); # add aa, cc and dd to @EXPORT_OK Any names which are not tags are added to C<@EXPORT> or C<@EXPORT_OK> unchanged but will trigger a warning (with C<-w>) to avoid misspelt tags names being silently added to C<@EXPORT> or C<@EXPORT_OK>. Future versions may make this a fatal error. =head2 Generating Combined Tags If several symbol categories exist in C<%EXPORT_TAGS>, it's usually useful to create the utility ":all" to simplify "use" statements. The simplest way to do this is: our %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]); # add all the other ":class" tags to the ":all" class, # deleting duplicates { my %seen; push @{$EXPORT_TAGS{all}}, grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS; } F creates an ":all" tag which contains some (but not really all) of its categories. That could be done with one small change: # add some of the other ":class" tags to the ":all" class, # deleting duplicates { my %seen; push @{$EXPORT_TAGS{all}}, grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach qw/html2 html3 netscape form cgi internal/; } Note that the tag names in C<%EXPORT_TAGS> don't have the leading ':'. =head2 Ced Constants Many modules make use of Cing for constant subroutines to avoid having to compile and waste memory on rarely used values (see L for details on constant subroutines). Calls to such constant subroutines are not optimized away at compile time because they can't be checked at compile time for constancy. Even if a prototype is available at compile time, the body of the subroutine is not (it hasn't been Ced yet). perl needs to examine both the C<()> prototype and the body of a subroutine at compile time to detect that it can safely replace calls to that subroutine with the constant value. A workaround for this is to call the constants once in a C block: package My ; use Socket ; foo( SO_LINGER ); ## SO_LINGER NOT optimized away; called at runtime BEGIN { SO_LINGER } foo( SO_LINGER ); ## SO_LINGER optimized away at compile time. This forces the C for C to take place before SO_LINGER is encountered later in C package. If you are writing a package that Cs, consider forcing an C for any constants explicitly imported by other packages or which are usually used when your package is Cd. =head1 Good Practices =head2 Declaring C<@EXPORT_OK> and Friends When using C with the standard C and C pragmas, the C keyword is needed to declare the package variables C<@EXPORT_OK>, C<@EXPORT>, C<@ISA>, etc. our @ISA = qw(Exporter); our @EXPORT_OK = qw(munge frobnicate); If backward compatibility for Perls B 5.6 is important, one must write instead a C statement. use vars qw(@ISA @EXPORT_OK); @ISA = qw(Exporter); @EXPORT_OK = qw(munge frobnicate); =head2 Playing Safe There are some caveats with the use of runtime statements like C and the assignment to package variables, which can be very subtle for the unaware programmer. This may happen for instance with mutually recursive modules, which are affected by the time the relevant constructions are executed. The ideal way to never have to think about that is to use C blocks and the simple import method. So the first part of the L code could be rewritten as: package YourModule; use strict; use warnings; use Exporter 'import'; BEGIN { our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request } Or if you need to inherit from Exporter: package YourModule; use strict; use warnings; BEGIN { require Exporter; our @ISA = qw(Exporter); # inherit all of Exporter's methods our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request } The C will assure that the loading of F and the assignments to C<@ISA> and C<@EXPORT_OK> happen immediately like C, leaving no room for something to get awry or just plain wrong. With respect to loading C and inheriting, there are alternatives with the use of modules like C and C. use base qw(Exporter); # or use parent qw(Exporter); Any of these statements are nice replacements for C with the same compile-time effect. The basic difference is that C code interacts with declared C while C is a streamlined version of the older C code to just establish the IS-A relationship. For more details, see the documentation and code of L and L. Another thorough remedy to that runtime vs. compile-time trap is to use L, which is a wrapper of Exporter that allows all boilerplate code at a single gulp in the use statement. use Exporter::Easy ( OK => [ qw(munge frobnicate) ], ); # @ISA setup is automatic # all assignments happen at compile time =head2 What Not to Export You have been warned already in L to not export: =over 4 =item * method names (because you don't need to and that's likely to not do what you want), =item * anything by default (because you don't want to surprise your users... badly) =item * anything you don't need to (because less is more) =back There's one more item to add to this list. Do B export variable names. Just because C lets you do that, it does not mean you should. @EXPORT_OK = qw($svar @avar %hvar); # DON'T! Exporting variables is not a good idea. They can change under the hood, provoking horrible effects at-a-distance that are too hard to track and to fix. Trust me: they are not worth it. To provide the capability to set/get class-wide settings, it is best instead to provide accessors as subroutines or class methods instead. =head1 SEE ALSO C is definitely not the only module with symbol exporter capabilities. At CPAN, you may find a bunch of them. Some are lighter. Some provide improved APIs and features. Pick the one that fits your needs. The following is a sample list of such modules. Exporter::Easy Exporter::Lite Exporter::Renaming Exporter::Tidy Sub::Exporter / Sub::Installer Perl6::Export / Perl6::Export::Attrs =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut FILE997d1752/Carp.pmpackage Carp; { use 5.006; } use strict; use warnings; BEGIN { # Very old versions of warnings.pm load Carp. This can go wrong due # to the circular dependency. If warnings is invoked before Carp, # then warnings starts by loading Carp, then Carp (above) tries to # invoke warnings, and gets nothing because warnings is in the process # of loading and hasn't defined its import method yet. If we were # only turning on warnings ("use warnings" above) this wouldn't be too # bad, because Carp would just gets the state of the -w switch and so # might not get some warnings that it wanted. The real problem is # that we then want to turn off Unicode warnings, but "no warnings # 'utf8'" won't be effective if we're in this circular-dependency # situation. So, if warnings.pm is an affected version, we turn # off all warnings ourselves by directly setting ${^WARNING_BITS}. # On unaffected versions, we turn off just Unicode warnings, via # the proper API. if(!defined($warnings::VERSION) || eval($warnings::VERSION) < 1.06) { ${^WARNING_BITS} = ""; } else { "warnings"->unimport("utf8"); } } sub _fetch_sub { # fetch sub without autovivifying my($pack, $sub) = @_; $pack .= '::'; # only works with top-level packages return unless exists($::{$pack}); for ($::{$pack}) { return unless ref \$_ eq 'GLOB' && *$_{HASH} && exists $$_{$sub}; for ($$_{$sub}) { return ref \$_ eq 'GLOB' ? *$_{CODE} : undef } } } # UTF8_REGEXP_PROBLEM is a compile-time constant indicating whether Carp # must avoid applying a regular expression to an upgraded (is_utf8) # string. There are multiple problems, on different Perl versions, # that require this to be avoided. All versions prior to 5.13.8 will # load utf8_heavy.pl for the swash system, even if the regexp doesn't # use character classes. Perl 5.6 and Perls [5.11.2, 5.13.11) exhibit # specific problems when Carp is being invoked in the aftermath of a # syntax error. BEGIN { if("$]" < 5.013011) { *UTF8_REGEXP_PROBLEM = sub () { 1 }; } else { *UTF8_REGEXP_PROBLEM = sub () { 0 }; } } # is_utf8() is essentially the utf8::is_utf8() function, which indicates # whether a string is represented in the upgraded form (using UTF-8 # internally). As utf8::is_utf8() is only available from Perl 5.8 # onwards, extra effort is required here to make it work on Perl 5.6. BEGIN { if(defined(my $sub = _fetch_sub utf8 => 'is_utf8')) { *is_utf8 = $sub; } else { # black magic for perl 5.6 *is_utf8 = sub { unpack("C", "\xaa".$_[0]) != 170 }; } } # The downgrade() function defined here is to be used for attempts to # downgrade where it is acceptable to fail. It must be called with a # second argument that is a true value. BEGIN { if(defined(my $sub = _fetch_sub utf8 => 'downgrade')) { *downgrade = \&{"utf8::downgrade"}; } else { *downgrade = sub { my $r = ""; my $l = length($_[0]); for(my $i = 0; $i != $l; $i++) { my $o = ord(substr($_[0], $i, 1)); return if $o > 255; $r .= chr($o); } $_[0] = $r; }; } } # is_safe_printable_codepoint() indicates whether a character, specified # by integer codepoint, is OK to output literally in a trace. Generally # this is if it is a printable character in the ancestral character set # (ASCII or EBCDIC). This is used on some Perls in situations where a # regexp can't be used. BEGIN { *is_safe_printable_codepoint = "$]" >= 5.007_003 ? eval(q(sub ($) { my $u = utf8::native_to_unicode($_[0]); $u >= 0x20 && $u <= 0x7e; })) : ord("A") == 65 ? sub ($) { $_[0] >= 0x20 && $_[0] <= 0x7e } : sub ($) { # Early EBCDIC # 3 EBCDIC code pages supported then; all controls but one # are the code points below SPACE. The other one is 0x5F on # POSIX-BC; FF on the other two. # FIXME: there are plenty of unprintable codepoints other # than those that this code and the comment above identifies # as "controls". $_[0] >= ord(" ") && $_[0] <= 0xff && $_[0] != (ord ("^") == 106 ? 0x5f : 0xff); } ; } sub _univ_mod_loaded { return 0 unless exists($::{"UNIVERSAL::"}); for ($::{"UNIVERSAL::"}) { return 0 unless ref \$_ eq "GLOB" && *$_{HASH} && exists $$_{"$_[0]::"}; for ($$_{"$_[0]::"}) { return 0 unless ref \$_ eq "GLOB" && *$_{HASH} && exists $$_{"VERSION"}; for ($$_{"VERSION"}) { return 0 unless ref \$_ eq "GLOB"; return ${*$_{SCALAR}}; } } } } # _maybe_isa() is usually the UNIVERSAL::isa function. We have to avoid # the latter if the UNIVERSAL::isa module has been loaded, to avoid infi- # nite recursion; in that case _maybe_isa simply returns true. my $isa; BEGIN { if (_univ_mod_loaded('isa')) { *_maybe_isa = sub { 1 } } else { # Since we have already done the check, record $isa for use below # when defining _StrVal. *_maybe_isa = $isa = _fetch_sub(UNIVERSAL => "isa"); } } # We need an overload::StrVal or equivalent function, but we must avoid # loading any modules on demand, as Carp is used from __DIE__ handlers and # may be invoked after a syntax error. # We can copy recent implementations of overload::StrVal and use # overloading.pm, which is the fastest implementation, so long as # overloading is available. If it is not available, we use our own pure- # Perl StrVal. We never actually use overload::StrVal, for various rea- # sons described below. # overload versions are as follows: # undef-1.00 (up to perl 5.8.0) uses bless (avoid!) # 1.01-1.17 (perl 5.8.1 to 5.14) uses Scalar::Util # 1.18+ (perl 5.16+) uses overloading # The ancient 'bless' implementation (that inspires our pure-Perl version) # blesses unblessed references and must be avoided. Those using # Scalar::Util use refaddr, possibly the pure-Perl implementation, which # has the same blessing bug, and must be avoided. Also, Scalar::Util is # loaded on demand. Since we avoid the Scalar::Util implementations, we # end up having to implement our own overloading.pm-based version for perl # 5.10.1 to 5.14. Since it also works just as well in more recent ver- # sions, we use it there, too. BEGIN { if (eval { require "overloading.pm" }) { *_StrVal = eval 'sub { no overloading; "$_[0]" }' } else { # Work around the UNIVERSAL::can/isa modules to avoid recursion. # _mycan is either UNIVERSAL::can, or, in the presence of an # override, overload::mycan. *_mycan = _univ_mod_loaded('can') ? do { require "overload.pm"; _fetch_sub overload => 'mycan' } : \&UNIVERSAL::can; # _blessed is either UNIVERAL::isa(...), or, in the presence of an # override, a hideous, but fairly reliable, workaround. *_blessed = $isa ? sub { &$isa($_[0], "UNIVERSAL") } : sub { my $probe = "UNIVERSAL::Carp_probe_" . rand; no strict 'refs'; local *$probe = sub { "unlikely string" }; local $@; local $SIG{__DIE__} = sub{}; (eval { $_[0]->$probe } || '') eq 'unlikely string' }; *_StrVal = sub { my $pack = ref $_[0]; # Perl's overload mechanism uses the presence of a special # "method" named "((" or "()" to signal it is in effect. # This test seeks to see if it has been set up. "((" post- # dates overloading.pm, so we can skip it. return "$_[0]" unless _mycan($pack, "()"); # Even at this point, the invocant may not be blessed, so # check for that. return "$_[0]" if not _blessed($_[0]); bless $_[0], "Carp"; my $str = "$_[0]"; bless $_[0], $pack; $pack . substr $str, index $str, "="; } } } our $VERSION = '1.52'; $VERSION =~ tr/_//d; our $MaxEvalLen = 0; our $Verbose = 0; our $CarpLevel = 0; our $MaxArgLen = 64; # How much of each argument to print. 0 = all. our $MaxArgNums = 8; # How many arguments to print. 0 = all. our $RefArgFormatter = undef; # allow caller to format reference arguments require Exporter; our @ISA = ('Exporter'); our @EXPORT = qw(confess croak carp); our @EXPORT_OK = qw(cluck verbose longmess shortmess); our @EXPORT_FAIL = qw(verbose); # hook to enable verbose mode # The members of %Internal are packages that are internal to perl. # Carp will not report errors from within these packages if it # can. The members of %CarpInternal are internal to Perl's warning # system. Carp will not report errors from within these packages # either, and will not report calls *to* these packages for carp and # croak. They replace $CarpLevel, which is deprecated. The # $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval # text and function arguments should be formatted when printed. our %CarpInternal; our %Internal; # disable these by default, so they can live w/o require Carp $CarpInternal{Carp}++; $CarpInternal{warnings}++; $Internal{Exporter}++; $Internal{'Exporter::Heavy'}++; # if the caller specifies verbose usage ("perl -MCarp=verbose script.pl") # then the following method will be called by the Exporter which knows # to do this thanks to @EXPORT_FAIL, above. $_[1] will contain the word # 'verbose'. sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; @_ } sub _cgc { no strict 'refs'; return \&{"CORE::GLOBAL::caller"} if defined &{"CORE::GLOBAL::caller"}; return; } sub longmess { local($!, $^E); # Icky backwards compatibility wrapper. :-( # # The story is that the original implementation hard-coded the # number of call levels to go back, so calls to longmess were off # by one. Other code began calling longmess and expecting this # behaviour, so the replacement has to emulate that behaviour. my $cgc = _cgc(); my $call_pack = $cgc ? $cgc->() : caller(); if ( $Internal{$call_pack} or $CarpInternal{$call_pack} ) { return longmess_heavy(@_); } else { local $CarpLevel = $CarpLevel + 1; return longmess_heavy(@_); } } our @CARP_NOT; sub shortmess { local($!, $^E); my $cgc = _cgc(); # Icky backwards compatibility wrapper. :-( local @CARP_NOT = scalar( $cgc ? $cgc->() : caller() ); shortmess_heavy(@_); } sub croak { die shortmess @_ } sub confess { die longmess @_ } sub carp { warn shortmess @_ } sub cluck { warn longmess @_ } BEGIN { if("$]" >= 5.015002 || ("$]" >= 5.014002 && "$]" < 5.015) || ("$]" >= 5.012005 && "$]" < 5.013)) { *CALLER_OVERRIDE_CHECK_OK = sub () { 1 }; } else { *CALLER_OVERRIDE_CHECK_OK = sub () { 0 }; } } sub caller_info { my $i = shift(@_) + 1; my %call_info; my $cgc = _cgc(); { # Some things override caller() but forget to implement the # @DB::args part of it, which we need. We check for this by # pre-populating @DB::args with a sentinel which no-one else # has the address of, so that we can detect whether @DB::args # has been properly populated. However, on earlier versions # of perl this check tickles a bug in CORE::caller() which # leaks memory. So we only check on fixed perls. @DB::args = \$i if CALLER_OVERRIDE_CHECK_OK; package DB; @call_info{ qw(pack file line sub has_args wantarray evaltext is_require) } = $cgc ? $cgc->($i) : caller($i); } unless ( defined $call_info{file} ) { return (); } my $sub_name = Carp::get_subname( \%call_info ); if ( $call_info{has_args} ) { # Guard our serialization of the stack from stack refcounting bugs # NOTE this is NOT a complete solution, we cannot 100% guard against # these bugs. However in many cases Perl *is* capable of detecting # them and throws an error when it does. Unfortunately serializing # the arguments on the stack is a perfect way of finding these bugs, # even when they would not affect normal program flow that did not # poke around inside the stack. Inside of Carp.pm it makes little # sense reporting these bugs, as Carp's job is to report the callers # errors, not the ones it might happen to tickle while doing so. # See: https://rt.perl.org/Public/Bug/Display.html?id=131046 # and: https://rt.perl.org/Public/Bug/Display.html?id=52610 # for more details and discussion. - Yves my @args = map { my $arg; local $@= $@; eval { $arg = $_; 1; } or do { $arg = '** argument not available anymore **'; }; $arg; } @DB::args; if (CALLER_OVERRIDE_CHECK_OK && @args == 1 && ref $args[0] eq ref \$i && $args[0] == \$i ) { @args = (); # Don't let anyone see the address of $i local $@; my $where = eval { my $func = $cgc or return ''; my $gv = (_fetch_sub B => 'svref_2object' or return '') ->($func)->GV; my $package = $gv->STASH->NAME; my $subname = $gv->NAME; return unless defined $package && defined $subname; # returning CORE::GLOBAL::caller isn't useful for tracing the cause: return if $package eq 'CORE::GLOBAL' && $subname eq 'caller'; " in &${package}::$subname"; } || ''; @args = "** Incomplete caller override detected$where; \@DB::args were not set **"; } else { my $overflow; if ( $MaxArgNums and @args > $MaxArgNums ) { # More than we want to show? $#args = $MaxArgNums - 1; $overflow = 1; } @args = map { Carp::format_arg($_) } @args; if ($overflow) { push @args, '...'; } } # Push the args onto the subroutine $sub_name .= '(' . join( ', ', @args ) . ')'; } $call_info{sub_name} = $sub_name; return wantarray() ? %call_info : \%call_info; } # Transform an argument to a function into a string. our $in_recurse; sub format_arg { my $arg = shift; if ( my $pack= ref($arg) ) { # legitimate, let's not leak it. if (!$in_recurse && _maybe_isa( $arg, 'UNIVERSAL' ) && do { local $@; local $in_recurse = 1; local $SIG{__DIE__} = sub{}; eval {$arg->can('CARP_TRACE') } }) { return $arg->CARP_TRACE(); } elsif (!$in_recurse && defined($RefArgFormatter) && do { local $@; local $in_recurse = 1; local $SIG{__DIE__} = sub{}; eval {$arg = $RefArgFormatter->($arg); 1} }) { return $arg; } else { # Argument may be blessed into a class with overloading, and so # might have an overloaded stringification. We don't want to # risk getting the overloaded stringification, so we need to # use _StrVal, our overload::StrVal()-equivalent. return _StrVal $arg; } } return "undef" if !defined($arg); downgrade($arg, 1); return $arg if !(UTF8_REGEXP_PROBLEM && is_utf8($arg)) && $arg =~ /\A-?[0-9]+(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?\z/; my $suffix = ""; if ( 2 < $MaxArgLen and $MaxArgLen < length($arg) ) { substr ( $arg, $MaxArgLen - 3 ) = ""; $suffix = "..."; } if(UTF8_REGEXP_PROBLEM && is_utf8($arg)) { for(my $i = length($arg); $i--; ) { my $c = substr($arg, $i, 1); my $x = substr($arg, 0, 0); # work around bug on Perl 5.8.{1,2} if($c eq "\"" || $c eq "\\" || $c eq "\$" || $c eq "\@") { substr $arg, $i, 0, "\\"; next; } my $o = ord($c); substr $arg, $i, 1, sprintf("\\x{%x}", $o) unless is_safe_printable_codepoint($o); } } else { $arg =~ s/([\"\\\$\@])/\\$1/g; # This is all the ASCII printables spelled-out. It is portable to all # Perl versions and platforms (such as EBCDIC). There are other more # compact ways to do this, but may not work everywhere every version. $arg =~ s/([^ !"#\$\%\&'()*+,\-.\/0123456789:;<=>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]^_`abcdefghijklmnopqrstuvwxyz\{|}~])/sprintf("\\x{%x}",ord($1))/eg; } downgrade($arg, 1); return "\"".$arg."\"".$suffix; } sub Regexp::CARP_TRACE { my $arg = "$_[0]"; downgrade($arg, 1); if(UTF8_REGEXP_PROBLEM && is_utf8($arg)) { for(my $i = length($arg); $i--; ) { my $o = ord(substr($arg, $i, 1)); my $x = substr($arg, 0, 0); # work around bug on Perl 5.8.{1,2} substr $arg, $i, 1, sprintf("\\x{%x}", $o) unless is_safe_printable_codepoint($o); } } else { # See comment in format_arg() about this same regex. $arg =~ s/([^ !"#\$\%\&'()*+,\-.\/0123456789:;<=>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]^_`abcdefghijklmnopqrstuvwxyz\{|}~])/sprintf("\\x{%x}",ord($1))/eg; } downgrade($arg, 1); my $suffix = ""; if($arg =~ /\A\(\?\^?([a-z]*)(?:-[a-z]*)?:(.*)\)\z/s) { ($suffix, $arg) = ($1, $2); } if ( 2 < $MaxArgLen and $MaxArgLen < length($arg) ) { substr ( $arg, $MaxArgLen - 3 ) = ""; $suffix = "...".$suffix; } return "qr($arg)$suffix"; } # Takes an inheritance cache and a package and returns # an anon hash of known inheritances and anon array of # inheritances which consequences have not been figured # for. sub get_status { my $cache = shift; my $pkg = shift; $cache->{$pkg} ||= [ { $pkg => $pkg }, [ trusts_directly($pkg) ] ]; return @{ $cache->{$pkg} }; } # Takes the info from caller() and figures out the name of # the sub/require/eval sub get_subname { my $info = shift; if ( defined( $info->{evaltext} ) ) { my $eval = $info->{evaltext}; if ( $info->{is_require} ) { return "require $eval"; } else { $eval =~ s/([\\\'])/\\$1/g; return "eval '" . str_len_trim( $eval, $MaxEvalLen ) . "'"; } } # this can happen on older perls when the sub (or the stash containing it) # has been deleted if ( !defined( $info->{sub} ) ) { return '__ANON__::__ANON__'; } return ( $info->{sub} eq '(eval)' ) ? 'eval {...}' : $info->{sub}; } # Figures out what call (from the point of view of the caller) # the long error backtrace should start at. sub long_error_loc { my $i; my $lvl = $CarpLevel; { ++$i; my $cgc = _cgc(); my @caller = $cgc ? $cgc->($i) : caller($i); my $pkg = $caller[0]; unless ( defined($pkg) ) { # This *shouldn't* happen. if (%Internal) { local %Internal; $i = long_error_loc(); last; } elsif (defined $caller[2]) { # this can happen when the stash has been deleted # in that case, just assume that it's a reasonable place to # stop (the file and line data will still be intact in any # case) - the only issue is that we can't detect if the # deleted package was internal (so don't do that then) # -doy redo unless 0 > --$lvl; last; } else { return 2; } } redo if $CarpInternal{$pkg}; redo unless 0 > --$lvl; redo if $Internal{$pkg}; } return $i - 1; } sub longmess_heavy { if ( ref( $_[0] ) ) { # don't break references as exceptions return wantarray ? @_ : $_[0]; } my $i = long_error_loc(); return ret_backtrace( $i, @_ ); } BEGIN { if("$]" >= 5.017004) { # The LAST_FH constant is a reference to the variable. $Carp::{LAST_FH} = \eval '\${^LAST_FH}'; } else { eval '*LAST_FH = sub () { 0 }'; } } # Returns a full stack backtrace starting from where it is # told. sub ret_backtrace { my ( $i, @error ) = @_; my $mess; my $err = join '', @error; $i++; my $tid_msg = ''; if ( defined &threads::tid ) { my $tid = threads->tid; $tid_msg = " thread $tid" if $tid; } my %i = caller_info($i); $mess = "$err at $i{file} line $i{line}$tid_msg"; if( $. ) { # Use ${^LAST_FH} if available. if (LAST_FH) { if (${+LAST_FH}) { $mess .= sprintf ", <%s> %s %d", *${+LAST_FH}{NAME}, ($/ eq "\n" ? "line" : "chunk"), $. } } else { local $@ = ''; local $SIG{__DIE__}; eval { CORE::die; }; if($@ =~ /^Died at .*(, <.*?> (?:line|chunk) \d+).$/ ) { $mess .= $1; } } } $mess .= "\.\n"; while ( my %i = caller_info( ++$i ) ) { $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n"; } return $mess; } sub ret_summary { my ( $i, @error ) = @_; my $err = join '', @error; $i++; my $tid_msg = ''; if ( defined &threads::tid ) { my $tid = threads->tid; $tid_msg = " thread $tid" if $tid; } my %i = caller_info($i); return "$err at $i{file} line $i{line}$tid_msg\.\n"; } sub short_error_loc { # You have to create your (hash)ref out here, rather than defaulting it # inside trusts *on a lexical*, as you want it to persist across calls. # (You can default it on $_[2], but that gets messy) my $cache = {}; my $i = 1; my $lvl = $CarpLevel; { my $cgc = _cgc(); my $called = $cgc ? $cgc->($i) : caller($i); $i++; my $caller = $cgc ? $cgc->($i) : caller($i); if (!defined($caller)) { my @caller = $cgc ? $cgc->($i) : caller($i); if (@caller) { # if there's no package but there is other caller info, then # the package has been deleted - treat this as a valid package # in this case redo if defined($called) && $CarpInternal{$called}; redo unless 0 > --$lvl; last; } else { return 0; } } redo if $Internal{$caller}; redo if $CarpInternal{$caller}; redo if $CarpInternal{$called}; redo if trusts( $called, $caller, $cache ); redo if trusts( $caller, $called, $cache ); redo unless 0 > --$lvl; } return $i - 1; } sub shortmess_heavy { return longmess_heavy(@_) if $Verbose; return @_ if ref( $_[0] ); # don't break references as exceptions my $i = short_error_loc(); if ($i) { ret_summary( $i, @_ ); } else { longmess_heavy(@_); } } # If a string is too long, trims it with ... sub str_len_trim { my $str = shift; my $max = shift || 0; if ( 2 < $max and $max < length($str) ) { substr( $str, $max - 3 ) = '...'; } return $str; } # Takes two packages and an optional cache. Says whether the # first inherits from the second. # # Recursive versions of this have to work to avoid certain # possible endless loops, and when following long chains of # inheritance are less efficient. sub trusts { my $child = shift; my $parent = shift; my $cache = shift; my ( $known, $partial ) = get_status( $cache, $child ); # Figure out consequences until we have an answer while ( @$partial and not exists $known->{$parent} ) { my $anc = shift @$partial; next if exists $known->{$anc}; $known->{$anc}++; my ( $anc_knows, $anc_partial ) = get_status( $cache, $anc ); my @found = keys %$anc_knows; @$known{@found} = (); push @$partial, @$anc_partial; } return exists $known->{$parent}; } # Takes a package and gives a list of those trusted directly sub trusts_directly { my $class = shift; no strict 'refs'; my $stash = \%{"$class\::"}; for my $var (qw/ CARP_NOT ISA /) { # Don't try using the variable until we know it exists, # to avoid polluting the caller's namespace. if ( $stash->{$var} && ref \$stash->{$var} eq 'GLOB' && *{$stash->{$var}}{ARRAY} && @{$stash->{$var}} ) { return @{$stash->{$var}} } } return; } if(!defined($warnings::VERSION) || do { no warnings "numeric"; $warnings::VERSION < 1.03 }) { # Very old versions of warnings.pm import from Carp. This can go # wrong due to the circular dependency. If Carp is invoked before # warnings, then Carp starts by loading warnings, then warnings # tries to import from Carp, and gets nothing because Carp is in # the process of loading and hasn't defined its import method yet. # So we work around that by manually exporting to warnings here. no strict "refs"; *{"warnings::$_"} = \&$_ foreach @EXPORT; } 1; __END__ =head1 NAME Carp - alternative warn and die for modules =head1 SYNOPSIS use Carp; # warn user (from perspective of caller) carp "string trimmed to 80 chars"; # die of errors (from perspective of caller) croak "We're outta here!"; # die of errors with stack backtrace confess "not implemented"; # cluck, longmess and shortmess not exported by default use Carp qw(cluck longmess shortmess); cluck "This is how we got here!"; # warn with stack backtrace $long_message = longmess( "message from cluck() or confess()" ); $short_message = shortmess( "message from carp() or croak()" ); =head1 DESCRIPTION The Carp routines are useful in your own modules because they act like C or C, but with a message which is more likely to be useful to a user of your module. In the case of C and C, that context is a summary of every call in the call-stack; C returns the contents of the error message. For a shorter message you can use C or C which report the error as being from where your module was called. C returns the contents of this error message. There is no guarantee that that is where the error was, but it is a good educated guess. C takes care not to clobber the status variables C<$!> and C<$^E> in the course of assembling its error messages. This means that a C<$SIG{__DIE__}> or C<$SIG{__WARN__}> handler can capture the error information held in those variables, if it is required to augment the error message, and if the code calling C left useful values there. Of course, C can't guarantee the latter. You can also alter the way the output and logic of C works, by changing some global variables in the C namespace. See the section on C below. Here is a more complete description of how C and C work. What they do is search the call-stack for a function call stack where they have not been told that there shouldn't be an error. If every call is marked safe, they give up and give a full stack backtrace instead. In other words they presume that the first likely looking potential suspect is guilty. Their rules for telling whether a call shouldn't generate errors work as follows: =over 4 =item 1. Any call from a package to itself is safe. =item 2. Packages claim that there won't be errors on calls to or from packages explicitly marked as safe by inclusion in C<@CARP_NOT>, or (if that array is empty) C<@ISA>. The ability to override what @ISA says is new in 5.8. =item 3. The trust in item 2 is transitive. If A trusts B, and B trusts C, then A trusts C. So if you do not override C<@ISA> with C<@CARP_NOT>, then this trust relationship is identical to, "inherits from". =item 4. Any call from an internal Perl module is safe. (Nothing keeps user modules from marking themselves as internal to Perl, but this practice is discouraged.) =item 5. Any call to Perl's warning system (eg Carp itself) is safe. (This rule is what keeps it from reporting the error at the point where you call C or C.) =item 6. C<$Carp::CarpLevel> can be set to skip a fixed number of additional call levels. Using this is not recommended because it is very difficult to get it to behave correctly. =back =head2 Forcing a Stack Trace As a debugging aid, you can force Carp to treat a croak as a confess and a carp as a cluck across I modules. In other words, force a detailed stack trace to be given. This can be very helpful when trying to understand why, or from where, a warning or error is being generated. This feature is enabled by 'importing' the non-existent symbol 'verbose'. You would typically enable it by saying perl -MCarp=verbose script.pl or by including the string C<-MCarp=verbose> in the PERL5OPT environment variable. Alternately, you can set the global variable C<$Carp::Verbose> to true. See the C section below. =head2 Stack Trace formatting At each stack level, the subroutine's name is displayed along with its parameters. For simple scalars, this is sufficient. For complex data types, such as objects and other references, this can simply display C<'HASH(0x1ab36d8)'>. Carp gives two ways to control this. =over 4 =item 1. For objects, a method, C, will be called, if it exists. If this method doesn't exist, or it recurses into C, or it otherwise throws an exception, this is skipped, and Carp moves on to the next option, otherwise checking stops and the string returned is used. It is recommended that the object's type is part of the string to make debugging easier. =item 2. For any type of reference, C<$Carp::RefArgFormatter> is checked (see below). This variable is expected to be a code reference, and the current parameter is passed in. If this function doesn't exist (the variable is undef), or it recurses into C, or it otherwise throws an exception, this is skipped, and Carp moves on to the next option, otherwise checking stops and the string returned is used. =item 3. Otherwise, if neither C nor C<$Carp::RefArgFormatter> is available, stringify the value ignoring any overloading. =back =head1 GLOBAL VARIABLES =head2 $Carp::MaxEvalLen This variable determines how many characters of a string-eval are to be shown in the output. Use a value of C<0> to show all text. Defaults to C<0>. =head2 $Carp::MaxArgLen This variable determines how many characters of each argument to a function to print. Use a value of C<0> to show the full length of the argument. Defaults to C<64>. =head2 $Carp::MaxArgNums This variable determines how many arguments to each function to show. Use a false value to show all arguments to a function call. To suppress all arguments, use C<-1> or C<'0 but true'>. Defaults to C<8>. =head2 $Carp::Verbose This variable makes C and C generate stack backtraces just like C and C. This is how C is implemented internally. Defaults to C<0>. =head2 $Carp::RefArgFormatter This variable sets a general argument formatter to display references. Plain scalars and objects that implement C will not go through this formatter. Calling C from within this function is not supported. local $Carp::RefArgFormatter = sub { require Data::Dumper; Data::Dumper->Dump($_[0]); # not necessarily safe }; =head2 @CARP_NOT This variable, I, says which packages are I to be considered as the location of an error. The C and C functions will skip over callers when reporting where an error occurred. NB: This variable must be in the package's symbol table, thus: # These work our @CARP_NOT; # file scope use vars qw(@CARP_NOT); # package scope @My::Package::CARP_NOT = ... ; # explicit package variable # These don't work sub xyz { ... @CARP_NOT = ... } # w/o declarations above my @CARP_NOT; # even at top-level Example of use: package My::Carping::Package; use Carp; our @CARP_NOT; sub bar { .... or _error('Wrong input') } sub _error { # temporary control of where'ness, __PACKAGE__ is implicit local @CARP_NOT = qw(My::Friendly::Caller); carp(@_) } This would make C report the error as coming from a caller not in C, nor from C. Also read the L section above, about how C decides where the error is reported from. Use C<@CARP_NOT>, instead of C<$Carp::CarpLevel>. Overrides C's use of C<@ISA>. =head2 %Carp::Internal This says what packages are internal to Perl. C will never report an error as being from a line in a package that is internal to Perl. For example: $Carp::Internal{ (__PACKAGE__) }++; # time passes... sub foo { ... or confess("whatever") }; would give a full stack backtrace starting from the first caller outside of __PACKAGE__. (Unless that package was also internal to Perl.) =head2 %Carp::CarpInternal This says which packages are internal to Perl's warning system. For generating a full stack backtrace this is the same as being internal to Perl, the stack backtrace will not start inside packages that are listed in C<%Carp::CarpInternal>. But it is slightly different for the summary message generated by C or C. There errors will not be reported on any lines that are calling packages in C<%Carp::CarpInternal>. For example C itself is listed in C<%Carp::CarpInternal>. Therefore the full stack backtrace from C will not start inside of C, and the short message from calling C is not placed on the line where C was called. =head2 $Carp::CarpLevel This variable determines how many additional call frames are to be skipped that would not otherwise be when reporting where an error occurred on a call to one of C's functions. It is fairly easy to count these call frames on calls that generate a full stack backtrace. However it is much harder to do this accounting for calls that generate a short message. Usually people skip too many call frames. If they are lucky they skip enough that C goes all of the way through the call stack, realizes that something is wrong, and then generates a full stack backtrace. If they are unlucky then the error is reported from somewhere misleading very high in the call stack. Therefore it is best to avoid C<$Carp::CarpLevel>. Instead use C<@CARP_NOT>, C<%Carp::Internal> and C<%Carp::CarpInternal>. Defaults to C<0>. =head1 BUGS The Carp routines don't handle exception objects currently. If called with a first argument that is a reference, they simply call die() or warn(), as appropriate. =head1 SEE ALSO L, L =head1 CONTRIBUTING L is maintained by the perl 5 porters as part of the core perl 5 version control repository. Please see the L perldoc for how to submit patches and contribute to it. =head1 AUTHOR The Carp module first appeared in Larry Wall's perl 5.000 distribution. Since then it has been modified by several of the perl 5 porters. Andrew Main (Zefram) divested Carp into an independent distribution. =head1 COPYRIGHT Copyright (C) 1994-2013 Larry Wall Copyright (C) 2011, 2012, 2013 Andrew Main (Zefram) =head1 LICENSE This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILEb956cb79/Digest/base.pmpackage Digest::base; use strict; use warnings; our $VERSION = "1.20"; # subclass is supposed to implement at least these sub new; sub clone; sub add; sub digest; sub reset { my $self = shift; $self->new(@_); # ugly } sub addfile { my ( $self, $handle ) = @_; my $n; my $buf = ""; while ( ( $n = read( $handle, $buf, 4 * 1024 ) ) ) { $self->add($buf); } unless ( defined $n ) { require Carp; Carp::croak("Read failed: $!"); } $self; } sub add_bits { my $self = shift; my $bits; my $nbits; if ( @_ == 1 ) { my $arg = shift; $bits = pack( "B*", $arg ); $nbits = length($arg); } else { ( $bits, $nbits ) = @_; } if ( ( $nbits % 8 ) != 0 ) { require Carp; Carp::croak("Number of bits must be multiple of 8 for this algorithm"); } return $self->add( substr( $bits, 0, $nbits / 8 ) ); } sub hexdigest { my $self = shift; return unpack( "H*", $self->digest(@_) ); } sub b64digest { my $self = shift; my $b64 = $self->base64_padded_digest; $b64 =~ s/=+$//; return $b64; } sub base64_padded_digest { my $self = shift; require MIME::Base64; return MIME::Base64::encode( $self->digest(@_), "" ); } 1; __END__ =head1 NAME Digest::base - Digest base class =head1 SYNOPSIS package Digest::Foo; use base 'Digest::base'; =head1 DESCRIPTION The C class provide implementations of the methods C and C in terms of C, and of the methods C and C in terms of C. Digest implementations might want to inherit from this class to get this implementations of the alternative I and I methods. A minimal subclass needs to implement the following methods by itself: new clone add digest The arguments and expected behaviour of these methods are described in L. =head1 SEE ALSO L FILEf561aa83/IO/Compress/Base.pm] package IO::Compress::Base ; require 5.006 ; use strict ; use warnings; use IO::Compress::Base::Common 2.106 ; use IO::File (); ; use Scalar::Util (); #use File::Glob; #require Exporter ; use Carp() ; use Symbol(); #use bytes; our (@ISA, $VERSION); @ISA = qw(IO::File Exporter); $VERSION = '2.106'; #Can't locate object method "SWASHNEW" via package "utf8" (perhaps you forgot to load "utf8"?) at .../ext/Compress-Zlib/Gzip/blib/lib/Compress/Zlib/Common.pm line 16. sub saveStatus { my $self = shift ; ${ *$self->{ErrorNo} } = shift() + 0 ; ${ *$self->{Error} } = '' ; return ${ *$self->{ErrorNo} } ; } sub saveErrorString { my $self = shift ; my $retval = shift ; ${ *$self->{Error} } = shift ; ${ *$self->{ErrorNo} } = shift() + 0 if @_ ; return $retval; } sub croakError { my $self = shift ; $self->saveErrorString(0, $_[0]); Carp::croak $_[0]; } sub closeError { my $self = shift ; my $retval = shift ; my $errno = *$self->{ErrorNo}; my $error = ${ *$self->{Error} }; $self->close(); *$self->{ErrorNo} = $errno ; ${ *$self->{Error} } = $error ; return $retval; } sub error { my $self = shift ; return ${ *$self->{Error} } ; } sub errorNo { my $self = shift ; return ${ *$self->{ErrorNo} } ; } sub writeAt { my $self = shift ; my $offset = shift; my $data = shift; if (defined *$self->{FH}) { my $here = tell(*$self->{FH}); return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) if $here < 0 ; seek(*$self->{FH}, $offset, IO::Handle::SEEK_SET) or return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; defined *$self->{FH}->write($data, length $data) or return $self->saveErrorString(undef, $!, $!) ; seek(*$self->{FH}, $here, IO::Handle::SEEK_SET) or return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; } else { substr(${ *$self->{Buffer} }, $offset, length($data)) = $data ; } return 1; } sub outputPayload { my $self = shift ; return $self->output(@_); } sub output { my $self = shift ; my $data = shift ; my $last = shift ; return 1 if length $data == 0 && ! $last ; if ( *$self->{FilterContainer} ) { *_ = \$data; &{ *$self->{FilterContainer} }(); } if (length $data) { if ( defined *$self->{FH} ) { defined *$self->{FH}->write( $data, length $data ) or return $self->saveErrorString(0, $!, $!); } else { ${ *$self->{Buffer} } .= $data ; } } return 1; } sub getOneShotParams { return ( 'multistream' => [IO::Compress::Base::Common::Parse_boolean, 1], ); } our %PARAMS = ( # Generic Parameters 'autoclose' => [IO::Compress::Base::Common::Parse_boolean, 0], 'encode' => [IO::Compress::Base::Common::Parse_any, undef], 'strict' => [IO::Compress::Base::Common::Parse_boolean, 1], 'append' => [IO::Compress::Base::Common::Parse_boolean, 0], 'binmodein' => [IO::Compress::Base::Common::Parse_boolean, 0], 'filtercontainer' => [IO::Compress::Base::Common::Parse_code, undef], ); sub checkParams { my $self = shift ; my $class = shift ; my $got = shift || IO::Compress::Base::Parameters::new(); $got->parse( { %PARAMS, $self->getExtraParams(), *$self->{OneShot} ? $self->getOneShotParams() : (), }, @_) or $self->croakError("${class}: " . $got->getError()) ; return $got ; } sub _create { my $obj = shift; my $got = shift; *$obj->{Closed} = 1 ; my $class = ref $obj; $obj->croakError("$class: Missing Output parameter") if ! @_ && ! $got ; my $outValue = shift ; my $oneShot = 1 ; if (! $got) { $oneShot = 0 ; $got = $obj->checkParams($class, undef, @_) or return undef ; } my $lax = ! $got->getValue('strict') ; my $outType = IO::Compress::Base::Common::whatIsOutput($outValue); $obj->ckOutputParam($class, $outValue) or return undef ; if ($outType eq 'buffer') { *$obj->{Buffer} = $outValue; } else { my $buff = "" ; *$obj->{Buffer} = \$buff ; } # Merge implies Append my $merge = $got->getValue('merge') ; my $appendOutput = $got->getValue('append') || $merge ; *$obj->{Append} = $appendOutput; *$obj->{FilterContainer} = $got->getValue('filtercontainer') ; if ($merge) { # Switch off Merge mode if output file/buffer is empty/doesn't exist if (($outType eq 'buffer' && length $$outValue == 0 ) || ($outType ne 'buffer' && (! -e $outValue || (-w _ && -z _))) ) { $merge = 0 } } # If output is a file, check that it is writable #no warnings; #if ($outType eq 'filename' && -e $outValue && ! -w _) # { return $obj->saveErrorString(undef, "Output file '$outValue' is not writable" ) } $obj->ckParams($got) or $obj->croakError("${class}: " . $obj->error()); if ($got->getValue('encode')) { my $want_encoding = $got->getValue('encode'); *$obj->{Encoding} = IO::Compress::Base::Common::getEncoding($obj, $class, $want_encoding); my $x = *$obj->{Encoding}; } else { *$obj->{Encoding} = undef; } $obj->saveStatus(STATUS_OK) ; my $status ; if (! $merge) { *$obj->{Compress} = $obj->mkComp($got) or return undef; *$obj->{UnCompSize} = U64->new; *$obj->{CompSize} = U64->new; if ( $outType eq 'buffer') { ${ *$obj->{Buffer} } = '' unless $appendOutput ; } else { if ($outType eq 'handle') { *$obj->{FH} = $outValue ; setBinModeOutput(*$obj->{FH}) ; #$outValue->flush() ; *$obj->{Handle} = 1 ; if ($appendOutput) { seek(*$obj->{FH}, 0, IO::Handle::SEEK_END) or return $obj->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; } } elsif ($outType eq 'filename') { no warnings; my $mode = '>' ; $mode = '>>' if $appendOutput; *$obj->{FH} = IO::File->new( "$mode $outValue" ) or return $obj->saveErrorString(undef, "cannot open file '$outValue': $!", $!) ; *$obj->{StdIO} = ($outValue eq '-'); setBinModeOutput(*$obj->{FH}) ; } } *$obj->{Header} = $obj->mkHeader($got) ; $obj->output( *$obj->{Header} ) or return undef; $obj->beforePayload(); } else { *$obj->{Compress} = $obj->createMerge($outValue, $outType) or return undef; } *$obj->{Closed} = 0 ; *$obj->{AutoClose} = $got->getValue('autoclose') ; *$obj->{Output} = $outValue; *$obj->{ClassName} = $class; *$obj->{Got} = $got; *$obj->{OneShot} = 0 ; return $obj ; } sub ckOutputParam { my $self = shift ; my $from = shift ; my $outType = IO::Compress::Base::Common::whatIsOutput($_[0]); $self->croakError("$from: output parameter not a filename, filehandle or scalar ref") if ! $outType ; #$self->croakError("$from: output filename is undef or null string") #if $outType eq 'filename' && (! defined $_[0] || $_[0] eq '') ; $self->croakError("$from: output buffer is read-only") if $outType eq 'buffer' && Scalar::Util::readonly(${ $_[0] }); return 1; } sub _def { my $obj = shift ; my $class= (caller)[0] ; my $name = (caller(1))[3] ; $obj->croakError("$name: expected at least 1 parameters\n") unless @_ >= 1 ; my $input = shift ; my $haveOut = @_ ; my $output = shift ; my $x = IO::Compress::Base::Validator->new($class, *$obj->{Error}, $name, $input, $output) or return undef ; push @_, $output if $haveOut && $x->{Hash}; *$obj->{OneShot} = 1 ; my $got = $obj->checkParams($name, undef, @_) or return undef ; $x->{Got} = $got ; # if ($x->{Hash}) # { # while (my($k, $v) = each %$input) # { # $v = \$input->{$k} # unless defined $v ; # # $obj->_singleTarget($x, 1, $k, $v, @_) # or return undef ; # } # # return keys %$input ; # } if ($x->{GlobMap}) { $x->{oneInput} = 1 ; foreach my $pair (@{ $x->{Pairs} }) { my ($from, $to) = @$pair ; $obj->_singleTarget($x, 1, $from, $to, @_) or return undef ; } return scalar @{ $x->{Pairs} } ; } if (! $x->{oneOutput} ) { my $inFile = ($x->{inType} eq 'filenames' || $x->{inType} eq 'filename'); $x->{inType} = $inFile ? 'filename' : 'buffer'; foreach my $in ($x->{oneInput} ? $input : @$input) { my $out ; $x->{oneInput} = 1 ; $obj->_singleTarget($x, $inFile, $in, \$out, @_) or return undef ; push @$output, \$out ; #if ($x->{outType} eq 'array') # { push @$output, \$out } #else # { $output->{$in} = \$out } } return 1 ; } # finally the 1 to 1 and n to 1 return $obj->_singleTarget($x, 1, $input, $output, @_); Carp::croak "should not be here" ; } sub _singleTarget { my $obj = shift ; my $x = shift ; my $inputIsFilename = shift; my $input = shift; if ($x->{oneInput}) { $obj->getFileInfo($x->{Got}, $input) if isaScalar($input) || (isaFilename($input) and $inputIsFilename) ; my $z = $obj->_create($x->{Got}, @_) or return undef ; defined $z->_wr2($input, $inputIsFilename) or return $z->closeError(undef) ; return $z->close() ; } else { my $afterFirst = 0 ; my $inputIsFilename = ($x->{inType} ne 'array'); my $keep = $x->{Got}->clone(); #for my $element ( ($x->{inType} eq 'hash') ? keys %$input : @$input) for my $element ( @$input) { my $isFilename = isaFilename($element); if ( $afterFirst ++ ) { defined addInterStream($obj, $element, $isFilename) or return $obj->closeError(undef) ; } else { $obj->getFileInfo($x->{Got}, $element) if isaScalar($element) || $isFilename; $obj->_create($x->{Got}, @_) or return undef ; } defined $obj->_wr2($element, $isFilename) or return $obj->closeError(undef) ; *$obj->{Got} = $keep->clone(); } return $obj->close() ; } } sub _wr2 { my $self = shift ; my $source = shift ; my $inputIsFilename = shift; my $input = $source ; if (! $inputIsFilename) { $input = \$source if ! ref $source; } if ( ref $input && ref $input eq 'SCALAR' ) { return $self->syswrite($input, @_) ; } if ( ! ref $input || isaFilehandle($input)) { my $isFilehandle = isaFilehandle($input) ; my $fh = $input ; if ( ! $isFilehandle ) { $fh = IO::File->new( "<$input" ) or return $self->saveErrorString(undef, "cannot open file '$input': $!", $!) ; } binmode $fh ; my $status ; my $buff ; my $count = 0 ; while ($status = read($fh, $buff, 16 * 1024)) { $count += length $buff; defined $self->syswrite($buff, @_) or return undef ; } return $self->saveErrorString(undef, $!, $!) if ! defined $status ; if ( (!$isFilehandle || *$self->{AutoClose}) && $input ne '-') { $fh->close() or return undef ; } return $count ; } Carp::croak "Should not be here"; return undef; } sub addInterStream { my $self = shift ; my $input = shift ; my $inputIsFilename = shift ; if (*$self->{Got}->getValue('multistream')) { $self->getFileInfo(*$self->{Got}, $input) #if isaFilename($input) and $inputIsFilename ; if isaScalar($input) || isaFilename($input) ; # TODO -- newStream needs to allow gzip/zip header to be modified return $self->newStream(); } elsif (*$self->{Got}->getValue('autoflush')) { #return $self->flush(Z_FULL_FLUSH); } return 1 ; } sub getFileInfo { } sub TIEHANDLE { return $_[0] if ref($_[0]); die "OOPS\n" ; } sub UNTIE { my $self = shift ; } sub DESTROY { my $self = shift ; local ($., $@, $!, $^E, $?); $self->close() ; # TODO - memory leak with 5.8.0 - this isn't called until # global destruction # %{ *$self } = () ; undef $self ; } sub filterUncompressed { } sub syswrite { my $self = shift ; my $buffer ; if (ref $_[0] ) { $self->croakError( *$self->{ClassName} . "::write: not a scalar reference" ) unless ref $_[0] eq 'SCALAR' ; $buffer = $_[0] ; } else { $buffer = \$_[0] ; } if (@_ > 1) { my $slen = defined $$buffer ? length($$buffer) : 0; my $len = $slen; my $offset = 0; $len = $_[1] if $_[1] < $len; if (@_ > 2) { $offset = $_[2] || 0; $self->croakError(*$self->{ClassName} . "::write: offset outside string") if $offset > $slen; if ($offset < 0) { $offset += $slen; $self->croakError( *$self->{ClassName} . "::write: offset outside string") if $offset < 0; } my $rem = $slen - $offset; $len = $rem if $rem < $len; } $buffer = \substr($$buffer, $offset, $len) ; } return 0 if (! defined $$buffer || length $$buffer == 0) && ! *$self->{FlushPending}; # *$self->{Pending} .= $$buffer ; # # return length $$buffer # if (length *$self->{Pending} < 1024 * 16 && ! *$self->{FlushPending}) ; # # $$buffer = *$self->{Pending} ; # *$self->{Pending} = ''; if (*$self->{Encoding}) { $$buffer = *$self->{Encoding}->encode($$buffer); } else { $] >= 5.008 and ( utf8::downgrade($$buffer, 1) or Carp::croak "Wide character in " . *$self->{ClassName} . "::write:"); } $self->filterUncompressed($buffer); my $buffer_length = defined $$buffer ? length($$buffer) : 0 ; *$self->{UnCompSize}->add($buffer_length) ; my $outBuffer=''; my $status = *$self->{Compress}->compr($buffer, $outBuffer) ; return $self->saveErrorString(undef, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; *$self->{CompSize}->add(length $outBuffer) ; $self->outputPayload($outBuffer) or return undef; return $buffer_length; } sub print { my $self = shift; #if (ref $self) { # $self = *$self{GLOB} ; #} if (defined $\) { if (defined $,) { defined $self->syswrite(join($,, @_) . $\); } else { defined $self->syswrite(join("", @_) . $\); } } else { if (defined $,) { defined $self->syswrite(join($,, @_)); } else { defined $self->syswrite(join("", @_)); } } } sub printf { my $self = shift; my $fmt = shift; defined $self->syswrite(sprintf($fmt, @_)); } sub _flushCompressed { my $self = shift ; my $outBuffer=''; my $status = *$self->{Compress}->flush($outBuffer, @_) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; if ( defined *$self->{FH} ) { *$self->{FH}->clearerr(); } *$self->{CompSize}->add(length $outBuffer) ; $self->outputPayload($outBuffer) or return 0; return 1; } sub flush { my $self = shift ; $self->_flushCompressed(@_) or return 0; if ( defined *$self->{FH} ) { defined *$self->{FH}->flush() or return $self->saveErrorString(0, $!, $!); } return 1; } sub beforePayload { } sub _newStream { my $self = shift ; my $got = shift; my $class = ref $self; $self->_writeTrailer() or return 0 ; $self->ckParams($got) or $self->croakError("newStream: $self->{Error}"); if ($got->getValue('encode')) { my $want_encoding = $got->getValue('encode'); *$self->{Encoding} = IO::Compress::Base::Common::getEncoding($self, $class, $want_encoding); } else { *$self->{Encoding} = undef; } *$self->{Compress} = $self->mkComp($got) or return 0; *$self->{Header} = $self->mkHeader($got) ; $self->output(*$self->{Header} ) or return 0; *$self->{UnCompSize}->reset(); *$self->{CompSize}->reset(); $self->beforePayload(); return 1 ; } sub newStream { my $self = shift ; my $got = $self->checkParams('newStream', *$self->{Got}, @_) or return 0 ; $self->_newStream($got); # *$self->{Compress} = $self->mkComp($got) # or return 0; # # *$self->{Header} = $self->mkHeader($got) ; # $self->output(*$self->{Header} ) # or return 0; # # *$self->{UnCompSize}->reset(); # *$self->{CompSize}->reset(); # # $self->beforePayload(); # # return 1 ; } sub reset { my $self = shift ; return *$self->{Compress}->reset() ; } sub _writeTrailer { my $self = shift ; my $trailer = ''; my $status = *$self->{Compress}->close($trailer) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; *$self->{CompSize}->add(length $trailer) ; $trailer .= $self->mkTrailer(); defined $trailer or return 0; return $self->output($trailer); } sub _writeFinalTrailer { my $self = shift ; return $self->output($self->mkFinalTrailer()); } sub close { my $self = shift ; return 1 if *$self->{Closed} || ! *$self->{Compress} ; *$self->{Closed} = 1 ; untie *$self if $] >= 5.008 ; *$self->{FlushPending} = 1 ; $self->_writeTrailer() or return 0 ; $self->_writeFinalTrailer() or return 0 ; $self->output( "", 1 ) or return 0; if (defined *$self->{FH}) { if ((! *$self->{Handle} || *$self->{AutoClose}) && ! *$self->{StdIO}) { $! = 0 ; *$self->{FH}->close() or return $self->saveErrorString(0, $!, $!); } delete *$self->{FH} ; # This delete can set $! in older Perls, so reset the errno $! = 0 ; } return 1; } #sub total_in #sub total_out #sub msg # #sub crc #{ # my $self = shift ; # return *$self->{Compress}->crc32() ; #} # #sub msg #{ # my $self = shift ; # return *$self->{Compress}->msg() ; #} # #sub dict_adler #{ # my $self = shift ; # return *$self->{Compress}->dict_adler() ; #} # #sub get_Level #{ # my $self = shift ; # return *$self->{Compress}->get_Level() ; #} # #sub get_Strategy #{ # my $self = shift ; # return *$self->{Compress}->get_Strategy() ; #} sub tell { my $self = shift ; return *$self->{UnCompSize}->get32bit() ; } sub eof { my $self = shift ; return *$self->{Closed} ; } sub seek { my $self = shift ; my $position = shift; my $whence = shift ; my $here = $self->tell() ; my $target = 0 ; #use IO::Handle qw(SEEK_SET SEEK_CUR SEEK_END); use IO::Handle ; if ($whence == IO::Handle::SEEK_SET) { $target = $position ; } elsif ($whence == IO::Handle::SEEK_CUR || $whence == IO::Handle::SEEK_END) { $target = $here + $position ; } else { $self->croakError(*$self->{ClassName} . "::seek: unknown value, $whence, for whence parameter"); } # short circuit if seeking to current offset return 1 if $target == $here ; # Outlaw any attempt to seek backwards $self->croakError(*$self->{ClassName} . "::seek: cannot seek backwards") if $target < $here ; # Walk the file to the new offset my $offset = $target - $here ; my $buffer ; defined $self->syswrite("\x00" x $offset) or return 0; return 1 ; } sub binmode { 1; # my $self = shift ; # return defined *$self->{FH} # ? binmode *$self->{FH} # : 1 ; } sub fileno { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->fileno() : undef ; } sub opened { my $self = shift ; return ! *$self->{Closed} ; } sub autoflush { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->autoflush(@_) : undef ; } sub input_line_number { return undef ; } sub _notAvailable { my $name = shift ; return sub { Carp::croak "$name Not Available: File opened only for output" ; } ; } { no warnings 'once'; *read = _notAvailable('read'); *READ = _notAvailable('read'); *readline = _notAvailable('readline'); *READLINE = _notAvailable('readline'); *getc = _notAvailable('getc'); *GETC = _notAvailable('getc'); *FILENO = \&fileno; *PRINT = \&print; *PRINTF = \&printf; *WRITE = \&syswrite; *write = \&syswrite; *SEEK = \&seek; *TELL = \&tell; *EOF = \&eof; *CLOSE = \&close; *BINMODE = \&binmode; } #*sysread = \&_notAvailable; #*syswrite = \&_write; 1; __END__ =head1 NAME IO::Compress::Base - Base Class for IO::Compress modules =head1 SYNOPSIS use IO::Compress::Base ; =head1 DESCRIPTION This module is not intended for direct use in application code. Its sole purpose is to be sub-classed by IO::Compress modules. =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005-2022 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILE#e1c05e9e/IO/Compress/Base/Common.pmXpackage IO::Compress::Base::Common; use strict ; use warnings; use bytes; use Carp; use Scalar::Util qw(blessed readonly); use File::GlobMapper; require Exporter; our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE); @ISA = qw(Exporter); $VERSION = '2.106'; @EXPORT = qw( isaFilehandle isaFilename isaScalar whatIsInput whatIsOutput isaFileGlobString cleanFileGlobString oneTarget setBinModeInput setBinModeOutput ckInOutParams createSelfTiedObject isGeMax32 MAX32 WANT_CODE WANT_EXT WANT_UNDEF WANT_HASH STATUS_OK STATUS_ENDSTREAM STATUS_EOF STATUS_ERROR ); %EXPORT_TAGS = ( Status => [qw( STATUS_OK STATUS_ENDSTREAM STATUS_EOF STATUS_ERROR )]); use constant STATUS_OK => 0; use constant STATUS_ENDSTREAM => 1; use constant STATUS_EOF => 2; use constant STATUS_ERROR => -1; use constant MAX16 => 0xFFFF ; use constant MAX32 => 0xFFFFFFFF ; use constant MAX32cmp => 0xFFFFFFFF + 1 - 1; # for 5.6.x on 32-bit need to force an non-IV value sub isGeMax32 { return $_[0] >= MAX32cmp ; } sub hasEncode() { if (! defined $HAS_ENCODE) { eval { require Encode; Encode->import(); }; $HAS_ENCODE = $@ ? 0 : 1 ; } return $HAS_ENCODE; } sub getEncoding($$$) { my $obj = shift; my $class = shift ; my $want_encoding = shift ; $obj->croakError("$class: Encode module needed to use -Encode") if ! hasEncode(); my $encoding = Encode::find_encoding($want_encoding); $obj->croakError("$class: Encoding '$want_encoding' is not available") if ! $encoding; return $encoding; } our ($needBinmode); $needBinmode = ($^O eq 'MSWin32' || ($] >= 5.006 && eval ' ${^UNICODE} || ${^UTF8LOCALE} ')) ? 1 : 1 ; sub setBinModeInput($) { my $handle = shift ; binmode $handle if $needBinmode; } sub setBinModeOutput($) { my $handle = shift ; binmode $handle if $needBinmode; } sub isaFilehandle($) { use utf8; # Pragma needed to keep Perl 5.6.0 happy return (defined $_[0] and (UNIVERSAL::isa($_[0],'GLOB') or UNIVERSAL::isa($_[0],'IO::Handle') or UNIVERSAL::isa(\$_[0],'GLOB')) ) } sub isaScalar { return ( defined($_[0]) and ref($_[0]) eq 'SCALAR' and defined ${ $_[0] } ) ; } sub isaFilename($) { return (defined $_[0] and ! ref $_[0] and UNIVERSAL::isa(\$_[0], 'SCALAR')); } sub isaFileGlobString { return defined $_[0] && $_[0] =~ /^<.*>$/; } sub cleanFileGlobString { my $string = shift ; $string =~ s/^\s*<\s*(.*)\s*>\s*$/$1/; return $string; } use constant WANT_CODE => 1 ; use constant WANT_EXT => 2 ; use constant WANT_UNDEF => 4 ; #use constant WANT_HASH => 8 ; use constant WANT_HASH => 0 ; sub whatIsInput($;$) { my $got = whatIs(@_); if (defined $got && $got eq 'filename' && defined $_[0] && $_[0] eq '-') { #use IO::File; $got = 'handle'; $_[0] = *STDIN; #$_[0] = IO::File->new("<-"); } return $got; } sub whatIsOutput($;$) { my $got = whatIs(@_); if (defined $got && $got eq 'filename' && defined $_[0] && $_[0] eq '-') { $got = 'handle'; $_[0] = *STDOUT; #$_[0] = IO::File->new(">-"); } return $got; } sub whatIs ($;$) { return 'handle' if isaFilehandle($_[0]); my $wantCode = defined $_[1] && $_[1] & WANT_CODE ; my $extended = defined $_[1] && $_[1] & WANT_EXT ; my $undef = defined $_[1] && $_[1] & WANT_UNDEF ; my $hash = defined $_[1] && $_[1] & WANT_HASH ; return 'undef' if ! defined $_[0] && $undef ; if (ref $_[0]) { return '' if blessed($_[0]); # is an object #return '' if UNIVERSAL::isa($_[0], 'UNIVERSAL'); # is an object return 'buffer' if UNIVERSAL::isa($_[0], 'SCALAR'); return 'array' if UNIVERSAL::isa($_[0], 'ARRAY') && $extended ; return 'hash' if UNIVERSAL::isa($_[0], 'HASH') && $hash ; return 'code' if UNIVERSAL::isa($_[0], 'CODE') && $wantCode ; return ''; } return 'fileglob' if $extended && isaFileGlobString($_[0]); return 'filename'; } sub oneTarget { return $_[0] =~ /^(code|handle|buffer|filename)$/; } sub IO::Compress::Base::Validator::new { my $class = shift ; my $Class = shift ; my $error_ref = shift ; my $reportClass = shift ; my %data = (Class => $Class, Error => $error_ref, reportClass => $reportClass, ) ; my $obj = bless \%data, $class ; local $Carp::CarpLevel = 1; my $inType = $data{inType} = whatIsInput($_[0], WANT_EXT|WANT_HASH); my $outType = $data{outType} = whatIsOutput($_[1], WANT_EXT|WANT_HASH); my $oneInput = $data{oneInput} = oneTarget($inType); my $oneOutput = $data{oneOutput} = oneTarget($outType); if (! $inType) { $obj->croakError("$reportClass: illegal input parameter") ; #return undef ; } # if ($inType eq 'hash') # { # $obj->{Hash} = 1 ; # $obj->{oneInput} = 1 ; # return $obj->validateHash($_[0]); # } if (! $outType) { $obj->croakError("$reportClass: illegal output parameter") ; #return undef ; } if ($inType ne 'fileglob' && $outType eq 'fileglob') { $obj->croakError("Need input fileglob for outout fileglob"); } # if ($inType ne 'fileglob' && $outType eq 'hash' && $inType ne 'filename' ) # { # $obj->croakError("input must ne filename or fileglob when output is a hash"); # } if ($inType eq 'fileglob' && $outType eq 'fileglob') { $data{GlobMap} = 1 ; $data{inType} = $data{outType} = 'filename'; my $mapper = File::GlobMapper->new($_[0], $_[1]); if ( ! $mapper ) { return $obj->saveErrorString($File::GlobMapper::Error) ; } $data{Pairs} = $mapper->getFileMap(); return $obj; } $obj->croakError("$reportClass: input and output $inType are identical") if $inType eq $outType && $_[0] eq $_[1] && $_[0] ne '-' ; if ($inType eq 'fileglob') # && $outType ne 'fileglob' { my $glob = cleanFileGlobString($_[0]); my @inputs = glob($glob); if (@inputs == 0) { # TODO -- legal or die? die "globmap matched zero file -- legal or die???" ; } elsif (@inputs == 1) { $obj->validateInputFilenames($inputs[0]) or return undef; $_[0] = $inputs[0] ; $data{inType} = 'filename' ; $data{oneInput} = 1; } else { $obj->validateInputFilenames(@inputs) or return undef; $_[0] = [ @inputs ] ; $data{inType} = 'filenames' ; } } elsif ($inType eq 'filename') { $obj->validateInputFilenames($_[0]) or return undef; } elsif ($inType eq 'array') { $data{inType} = 'filenames' ; $obj->validateInputArray($_[0]) or return undef ; } return $obj->saveErrorString("$reportClass: output buffer is read-only") if $outType eq 'buffer' && readonly(${ $_[1] }); if ($outType eq 'filename' ) { $obj->croakError("$reportClass: output filename is undef or null string") if ! defined $_[1] || $_[1] eq '' ; if (-e $_[1]) { if (-d _ ) { return $obj->saveErrorString("output file '$_[1]' is a directory"); } } } return $obj ; } sub IO::Compress::Base::Validator::saveErrorString { my $self = shift ; ${ $self->{Error} } = shift ; return undef; } sub IO::Compress::Base::Validator::croakError { my $self = shift ; $self->saveErrorString($_[0]); croak $_[0]; } sub IO::Compress::Base::Validator::validateInputFilenames { my $self = shift ; foreach my $filename (@_) { $self->croakError("$self->{reportClass}: input filename is undef or null string") if ! defined $filename || $filename eq '' ; next if $filename eq '-'; if (! -e $filename ) { return $self->saveErrorString("input file '$filename' does not exist"); } if (-d _ ) { return $self->saveErrorString("input file '$filename' is a directory"); } # if (! -r _ ) # { # return $self->saveErrorString("cannot open file '$filename': $!"); # } } return 1 ; } sub IO::Compress::Base::Validator::validateInputArray { my $self = shift ; if ( @{ $_[0] } == 0 ) { return $self->saveErrorString("empty array reference") ; } foreach my $element ( @{ $_[0] } ) { my $inType = whatIsInput($element); if (! $inType) { $self->croakError("unknown input parameter") ; } elsif($inType eq 'filename') { $self->validateInputFilenames($element) or return undef ; } else { $self->croakError("not a filename") ; } } return 1 ; } #sub IO::Compress::Base::Validator::validateHash #{ # my $self = shift ; # my $href = shift ; # # while (my($k, $v) = each %$href) # { # my $ktype = whatIsInput($k); # my $vtype = whatIsOutput($v, WANT_EXT|WANT_UNDEF) ; # # if ($ktype ne 'filename') # { # return $self->saveErrorString("hash key not filename") ; # } # # my %valid = map { $_ => 1 } qw(filename buffer array undef handle) ; # if (! $valid{$vtype}) # { # return $self->saveErrorString("hash value not ok") ; # } # } # # return $self ; #} sub createSelfTiedObject { my $class = shift || (caller)[0] ; my $error_ref = shift ; my $obj = bless Symbol::gensym(), ref($class) || $class; tie *$obj, $obj if $] >= 5.005; *$obj->{Closed} = 1 ; $$error_ref = ''; *$obj->{Error} = $error_ref ; my $errno = 0 ; *$obj->{ErrorNo} = \$errno ; return $obj; } #package Parse::Parameters ; # # #require Exporter; #our ($VERSION, @ISA, @EXPORT); #$VERSION = '2.000_08'; #@ISA = qw(Exporter); $EXPORT_TAGS{Parse} = [qw( ParseParameters Parse_any Parse_unsigned Parse_signed Parse_boolean Parse_string Parse_code Parse_writable_scalar ) ]; push @EXPORT, @{ $EXPORT_TAGS{Parse} } ; use constant Parse_any => 0x01; use constant Parse_unsigned => 0x02; use constant Parse_signed => 0x04; use constant Parse_boolean => 0x08; use constant Parse_string => 0x10; use constant Parse_code => 0x20; #use constant Parse_store_ref => 0x100 ; #use constant Parse_multiple => 0x100 ; use constant Parse_writable => 0x200 ; use constant Parse_writable_scalar => 0x400 | Parse_writable ; use constant OFF_PARSED => 0 ; use constant OFF_TYPE => 1 ; use constant OFF_DEFAULT => 2 ; use constant OFF_FIXED => 3 ; #use constant OFF_FIRST_ONLY => 4 ; #use constant OFF_STICKY => 5 ; use constant IxError => 0; use constant IxGot => 1 ; sub ParseParameters { my $level = shift || 0 ; my $sub = (caller($level + 1))[3] ; local $Carp::CarpLevel = 1 ; return $_[1] if @_ == 2 && defined $_[1] && UNIVERSAL::isa($_[1], "IO::Compress::Base::Parameters"); my $p = IO::Compress::Base::Parameters->new(); $p->parse(@_) or croak "$sub: $p->[IxError]" ; return $p; } use strict; use warnings; use Carp; sub Init { my $default = shift ; my %got ; my $obj = IO::Compress::Base::Parameters::new(); while (my ($key, $v) = each %$default) { croak "need 2 params [@$v]" if @$v != 2 ; my ($type, $value) = @$v ; # my ($first_only, $sticky, $type, $value) = @$v ; my $sticky = 0; my $x ; $obj->_checkType($key, \$value, $type, 0, \$x) or return undef ; $key = lc $key; # if (! $sticky) { # $x = [] # if $type & Parse_multiple; # $got{$key} = [0, $type, $value, $x, $first_only, $sticky] ; $got{$key} = [0, $type, $value, $x] ; # } # # $got{$key}[OFF_PARSED] = 0 ; } return bless \%got, "IO::Compress::Base::Parameters::Defaults" ; } sub IO::Compress::Base::Parameters::new { #my $class = shift ; my $obj; $obj->[IxError] = ''; $obj->[IxGot] = {} ; return bless $obj, 'IO::Compress::Base::Parameters' ; } sub IO::Compress::Base::Parameters::setError { my $self = shift ; my $error = shift ; my $retval = @_ ? shift : undef ; $self->[IxError] = $error ; return $retval; } sub IO::Compress::Base::Parameters::getError { my $self = shift ; return $self->[IxError] ; } sub IO::Compress::Base::Parameters::parse { my $self = shift ; my $default = shift ; my $got = $self->[IxGot] ; my $firstTime = keys %{ $got } == 0 ; my (@Bad) ; my @entered = () ; # Allow the options to be passed as a hash reference or # as the complete hash. if (@_ == 0) { @entered = () ; } elsif (@_ == 1) { my $href = $_[0] ; return $self->setError("Expected even number of parameters, got 1") if ! defined $href or ! ref $href or ref $href ne "HASH" ; foreach my $key (keys %$href) { push @entered, $key ; push @entered, \$href->{$key} ; } } else { my $count = @_; return $self->setError("Expected even number of parameters, got $count") if $count % 2 != 0 ; for my $i (0.. $count / 2 - 1) { push @entered, $_[2 * $i] ; push @entered, \$_[2 * $i + 1] ; } } foreach my $key (keys %$default) { my ($type, $value) = @{ $default->{$key} } ; if ($firstTime) { $got->{$key} = [0, $type, $value, $value] ; } else { $got->{$key}[OFF_PARSED] = 0 ; } } my %parsed = (); for my $i (0.. @entered / 2 - 1) { my $key = $entered[2* $i] ; my $value = $entered[2* $i+1] ; #print "Key [$key] Value [$value]" ; #print defined $$value ? "[$$value]\n" : "[undef]\n"; $key =~ s/^-// ; my $canonkey = lc $key; if ($got->{$canonkey}) { my $type = $got->{$canonkey}[OFF_TYPE] ; my $parsed = $parsed{$canonkey}; ++ $parsed{$canonkey}; return $self->setError("Muliple instances of '$key' found") if $parsed ; my $s ; $self->_checkType($key, $value, $type, 1, \$s) or return undef ; $value = $$value ; $got->{$canonkey} = [1, $type, $value, $s] ; } else { push (@Bad, $key) } } if (@Bad) { my ($bad) = join(", ", @Bad) ; return $self->setError("unknown key value(s) $bad") ; } return 1; } sub IO::Compress::Base::Parameters::_checkType { my $self = shift ; my $key = shift ; my $value = shift ; my $type = shift ; my $validate = shift ; my $output = shift; #local $Carp::CarpLevel = $level ; #print "PARSE $type $key $value $validate $sub\n" ; if ($type & Parse_writable_scalar) { return $self->setError("Parameter '$key' not writable") if readonly $$value ; if (ref $$value) { return $self->setError("Parameter '$key' not a scalar reference") if ref $$value ne 'SCALAR' ; $$output = $$value ; } else { return $self->setError("Parameter '$key' not a scalar") if ref $value ne 'SCALAR' ; $$output = $value ; } return 1; } $value = $$value ; if ($type & Parse_any) { $$output = $value ; return 1; } elsif ($type & Parse_unsigned) { return $self->setError("Parameter '$key' must be an unsigned int, got 'undef'") if ! defined $value ; return $self->setError("Parameter '$key' must be an unsigned int, got '$value'") if $value !~ /^\d+$/; $$output = defined $value ? $value : 0 ; return 1; } elsif ($type & Parse_signed) { return $self->setError("Parameter '$key' must be a signed int, got 'undef'") if ! defined $value ; return $self->setError("Parameter '$key' must be a signed int, got '$value'") if $value !~ /^-?\d+$/; $$output = defined $value ? $value : 0 ; return 1 ; } elsif ($type & Parse_boolean) { return $self->setError("Parameter '$key' must be an int, got '$value'") if defined $value && $value !~ /^\d*$/; $$output = defined $value && $value != 0 ? 1 : 0 ; return 1; } elsif ($type & Parse_string) { $$output = defined $value ? $value : "" ; return 1; } elsif ($type & Parse_code) { return $self->setError("Parameter '$key' must be a code reference, got '$value'") if (! defined $value || ref $value ne 'CODE') ; $$output = defined $value ? $value : "" ; return 1; } $$output = $value ; return 1; } sub IO::Compress::Base::Parameters::parsed { return $_[0]->[IxGot]{$_[1]}[OFF_PARSED] ; } sub IO::Compress::Base::Parameters::getValue { return $_[0]->[IxGot]{$_[1]}[OFF_FIXED] ; } sub IO::Compress::Base::Parameters::setValue { $_[0]->[IxGot]{$_[1]}[OFF_PARSED] = 1; $_[0]->[IxGot]{$_[1]}[OFF_DEFAULT] = $_[2] ; $_[0]->[IxGot]{$_[1]}[OFF_FIXED] = $_[2] ; } sub IO::Compress::Base::Parameters::valueRef { return $_[0]->[IxGot]{$_[1]}[OFF_FIXED] ; } sub IO::Compress::Base::Parameters::valueOrDefault { my $self = shift ; my $name = shift ; my $default = shift ; my $value = $self->[IxGot]{$name}[OFF_DEFAULT] ; return $value if defined $value ; return $default ; } sub IO::Compress::Base::Parameters::wantValue { return defined $_[0]->[IxGot]{$_[1]}[OFF_DEFAULT] ; } sub IO::Compress::Base::Parameters::clone { my $self = shift ; my $obj = [] ; my %got ; my $hash = $self->[IxGot] ; for my $k (keys %{ $hash }) { $got{$k} = [ @{ $hash->{$k} } ]; } $obj->[IxError] = $self->[IxError]; $obj->[IxGot] = \%got ; return bless $obj, 'IO::Compress::Base::Parameters' ; } package U64; use constant MAX32 => 0xFFFFFFFF ; use constant HI_1 => MAX32 + 1 ; use constant LOW => 0 ; use constant HIGH => 1; sub new { return bless [ 0, 0 ], $_[0] if @_ == 1 ; return bless [ $_[1], 0 ], $_[0] if @_ == 2 ; return bless [ $_[2], $_[1] ], $_[0] if @_ == 3 ; } sub newUnpack_V64 { my ($low, $hi) = unpack "V V", $_[0] ; bless [ $low, $hi ], "U64"; } sub newUnpack_V32 { my $string = shift; my $low = unpack "V", $string ; bless [ $low, 0 ], "U64"; } sub reset { $_[0]->[HIGH] = $_[0]->[LOW] = 0; } sub clone { bless [ @{$_[0]} ], ref $_[0] ; } sub getHigh { return $_[0]->[HIGH]; } sub getLow { return $_[0]->[LOW]; } sub get32bit { return $_[0]->[LOW]; } sub get64bit { # Not using << here because the result will still be # a 32-bit value on systems where int size is 32-bits return $_[0]->[HIGH] * HI_1 + $_[0]->[LOW]; } sub add { # my $self = shift; my $value = $_[1]; if (ref $value eq 'U64') { $_[0]->[HIGH] += $value->[HIGH] ; $value = $value->[LOW]; } elsif ($value > MAX32) { $_[0]->[HIGH] += int($value / HI_1) ; $value = $value % HI_1; } my $available = MAX32 - $_[0]->[LOW] ; if ($value > $available) { ++ $_[0]->[HIGH] ; $_[0]->[LOW] = $value - $available - 1; } else { $_[0]->[LOW] += $value ; } } sub add32 { # my $self = shift; my $value = $_[1]; if ($value > MAX32) { $_[0]->[HIGH] += int($value / HI_1) ; $value = $value % HI_1; } my $available = MAX32 - $_[0]->[LOW] ; if ($value > $available) { ++ $_[0]->[HIGH] ; $_[0]->[LOW] = $value - $available - 1; } else { $_[0]->[LOW] += $value ; } } sub subtract { my $self = shift; my $value = shift; if (ref $value eq 'U64') { if ($value->[HIGH]) { die "bad" if $self->[HIGH] == 0 || $value->[HIGH] > $self->[HIGH] ; $self->[HIGH] -= $value->[HIGH] ; } $value = $value->[LOW] ; } if ($value > $self->[LOW]) { -- $self->[HIGH] ; $self->[LOW] = MAX32 - $value + $self->[LOW] + 1 ; } else { $self->[LOW] -= $value; } } sub equal { my $self = shift; my $other = shift; return $self->[LOW] == $other->[LOW] && $self->[HIGH] == $other->[HIGH] ; } sub isZero { my $self = shift; return $self->[LOW] == 0 && $self->[HIGH] == 0 ; } sub gt { my $self = shift; my $other = shift; return $self->cmp($other) > 0 ; } sub cmp { my $self = shift; my $other = shift ; if ($self->[LOW] == $other->[LOW]) { return $self->[HIGH] - $other->[HIGH] ; } else { return $self->[LOW] - $other->[LOW] ; } } sub is64bit { return $_[0]->[HIGH] > 0 ; } sub isAlmost64bit { return $_[0]->[HIGH] > 0 || $_[0]->[LOW] == MAX32 ; } sub getPacked_V64 { return pack "V V", @{ $_[0] } ; } sub getPacked_V32 { return pack "V", $_[0]->[LOW] ; } sub pack_V64 { return pack "V V", $_[0], 0; } sub full32 { return $_[0] == MAX32 ; } sub Value_VV64 { my $buffer = shift; my ($lo, $hi) = unpack ("V V" , $buffer); no warnings 'uninitialized'; return $hi * HI_1 + $lo; } package IO::Compress::Base::Common; 1; FILEd15c47c5/IO/Compress/Gzip.pmtpackage IO::Compress::Gzip ; require 5.006 ; use strict ; use warnings; use bytes; require Exporter ; use IO::Compress::RawDeflate 2.106 () ; use IO::Compress::Adapter::Deflate 2.106 ; use IO::Compress::Base::Common 2.106 qw(:Status ); use IO::Compress::Gzip::Constants 2.106 ; use IO::Compress::Zlib::Extra 2.106 ; BEGIN { if (defined &utf8::downgrade ) { *noUTF8 = \&utf8::downgrade } else { *noUTF8 = sub {} } } our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $GzipError); $VERSION = '2.106'; $GzipError = '' ; @ISA = qw(IO::Compress::RawDeflate Exporter); @EXPORT_OK = qw( $GzipError gzip ) ; %EXPORT_TAGS = %IO::Compress::RawDeflate::DEFLATE_CONSTANTS ; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); sub new { my $class = shift ; my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$GzipError); $obj->_create(undef, @_); } sub gzip { my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$GzipError); return $obj->_def(@_); } #sub newHeader #{ # my $self = shift ; # #return GZIP_MINIMUM_HEADER ; # return $self->mkHeader(*$self->{Got}); #} sub getExtraParams { my $self = shift ; return ( # zlib behaviour $self->getZlibParams(), # Gzip header fields 'minimal' => [IO::Compress::Base::Common::Parse_boolean, 0], 'comment' => [IO::Compress::Base::Common::Parse_any, undef], 'name' => [IO::Compress::Base::Common::Parse_any, undef], 'time' => [IO::Compress::Base::Common::Parse_any, undef], 'textflag' => [IO::Compress::Base::Common::Parse_boolean, 0], 'headercrc' => [IO::Compress::Base::Common::Parse_boolean, 0], 'os_code' => [IO::Compress::Base::Common::Parse_unsigned, $Compress::Raw::Zlib::gzip_os_code], 'extrafield'=> [IO::Compress::Base::Common::Parse_any, undef], 'extraflags'=> [IO::Compress::Base::Common::Parse_any, undef], ); } sub ckParams { my $self = shift ; my $got = shift ; # gzip always needs crc32 $got->setValue('crc32' => 1); return 1 if $got->getValue('merge') ; my $strict = $got->getValue('strict') ; { if (! $got->parsed('time') ) { # Modification time defaults to now. $got->setValue(time => time) ; } # Check that the Name & Comment don't have embedded NULLs # Also check that they only contain ISO 8859-1 chars. if ($got->parsed('name') && defined $got->getValue('name')) { my $name = $got->getValue('name'); return $self->saveErrorString(undef, "Null Character found in Name", Z_DATA_ERROR) if $strict && $name =~ /\x00/ ; return $self->saveErrorString(undef, "Non ISO 8859-1 Character found in Name", Z_DATA_ERROR) if $strict && $name =~ /$GZIP_FNAME_INVALID_CHAR_RE/o ; } if ($got->parsed('comment') && defined $got->getValue('comment')) { my $comment = $got->getValue('comment'); return $self->saveErrorString(undef, "Null Character found in Comment", Z_DATA_ERROR) if $strict && $comment =~ /\x00/ ; return $self->saveErrorString(undef, "Non ISO 8859-1 Character found in Comment", Z_DATA_ERROR) if $strict && $comment =~ /$GZIP_FCOMMENT_INVALID_CHAR_RE/o; } if ($got->parsed('os_code') ) { my $value = $got->getValue('os_code'); return $self->saveErrorString(undef, "OS_Code must be between 0 and 255, got '$value'") if $value < 0 || $value > 255 ; } # gzip only supports Deflate at present $got->setValue('method' => Z_DEFLATED) ; if ( ! $got->parsed('extraflags')) { $got->setValue('extraflags' => 2) if $got->getValue('level') == Z_BEST_COMPRESSION ; $got->setValue('extraflags' => 4) if $got->getValue('level') == Z_BEST_SPEED ; } my $data = $got->getValue('extrafield') ; if (defined $data) { my $bad = IO::Compress::Zlib::Extra::parseExtraField($data, $strict, 1) ; return $self->saveErrorString(undef, "Error with ExtraField Parameter: $bad", Z_DATA_ERROR) if $bad ; $got->setValue('extrafield' => $data) ; } } return 1; } sub mkTrailer { my $self = shift ; return pack("V V", *$self->{Compress}->crc32(), *$self->{UnCompSize}->get32bit()); } sub getInverseClass { no warnings 'once'; return ('IO::Uncompress::Gunzip', \$IO::Uncompress::Gunzip::GunzipError); } sub getFileInfo { my $self = shift ; my $params = shift; my $filename = shift ; return if IO::Compress::Base::Common::isaScalar($filename); my $defaultTime = (stat($filename))[9] ; $params->setValue('name' => $filename) if ! $params->parsed('name') ; $params->setValue('time' => $defaultTime) if ! $params->parsed('time') ; } sub mkHeader { my $self = shift ; my $param = shift ; # short-circuit if a minimal header is requested. return GZIP_MINIMUM_HEADER if $param->getValue('minimal') ; # METHOD my $method = $param->valueOrDefault('method', GZIP_CM_DEFLATED) ; # FLAGS my $flags = GZIP_FLG_DEFAULT ; $flags |= GZIP_FLG_FTEXT if $param->getValue('textflag') ; $flags |= GZIP_FLG_FHCRC if $param->getValue('headercrc') ; $flags |= GZIP_FLG_FEXTRA if $param->wantValue('extrafield') ; $flags |= GZIP_FLG_FNAME if $param->wantValue('name') ; $flags |= GZIP_FLG_FCOMMENT if $param->wantValue('comment') ; # MTIME my $time = $param->valueOrDefault('time', GZIP_MTIME_DEFAULT) ; # EXTRA FLAGS my $extra_flags = $param->valueOrDefault('extraflags', GZIP_XFL_DEFAULT); # OS CODE my $os_code = $param->valueOrDefault('os_code', GZIP_OS_DEFAULT) ; my $out = pack("C4 V C C", GZIP_ID1, # ID1 GZIP_ID2, # ID2 $method, # Compression Method $flags, # Flags $time, # Modification Time $extra_flags, # Extra Flags $os_code, # Operating System Code ) ; # EXTRA if ($flags & GZIP_FLG_FEXTRA) { my $extra = $param->getValue('extrafield') ; $out .= pack("v", length $extra) . $extra ; } # NAME if ($flags & GZIP_FLG_FNAME) { my $name .= $param->getValue('name') ; $name =~ s/\x00.*$//; $out .= $name ; # Terminate the filename with NULL unless it already is $out .= GZIP_NULL_BYTE if !length $name or substr($name, 1, -1) ne GZIP_NULL_BYTE ; } # COMMENT if ($flags & GZIP_FLG_FCOMMENT) { my $comment .= $param->getValue('comment') ; $comment =~ s/\x00.*$//; $out .= $comment ; # Terminate the comment with NULL unless it already is $out .= GZIP_NULL_BYTE if ! length $comment or substr($comment, 1, -1) ne GZIP_NULL_BYTE; } # HEADER CRC $out .= pack("v", Compress::Raw::Zlib::crc32($out) & 0x00FF ) if $param->getValue('headercrc') ; noUTF8($out); return $out ; } sub mkFinalTrailer { return ''; } 1; __END__ =head1 NAME IO::Compress::Gzip - Write RFC 1952 files/buffers =head1 SYNOPSIS use IO::Compress::Gzip qw(gzip $GzipError) ; my $status = gzip $input => $output [,OPTS] or die "gzip failed: $GzipError\n"; my $z = IO::Compress::Gzip->new( $output [,OPTS] ) or die "gzip failed: $GzipError\n"; $z->print($string); $z->printf($format, $string); $z->write($string); $z->syswrite($string [, $length, $offset]); $z->flush(); $z->tell(); $z->eof(); $z->seek($position, $whence); $z->binmode(); $z->fileno(); $z->opened(); $z->autoflush(); $z->input_line_number(); $z->newStream( [OPTS] ); $z->deflateParams(); $z->close() ; $GzipError ; # IO::File mode print $z $string; printf $z $format, $string; tell $z eof $z seek $z, $position, $whence binmode $z fileno $z close $z ; =head1 DESCRIPTION This module provides a Perl interface that allows writing compressed data to files or buffer as defined in RFC 1952. All the gzip headers defined in RFC 1952 can be created using this module. For reading RFC 1952 files/buffers, see the companion module L. =head1 Functional Interface A top-level function, C, is provided to carry out "one-shot" compression between buffers and/or files. For finer control over the compression process, see the L section. use IO::Compress::Gzip qw(gzip $GzipError) ; gzip $input_filename_or_reference => $output_filename_or_reference [,OPTS] or die "gzip failed: $GzipError\n"; The functional interface needs Perl5.005 or better. =head2 gzip $input_filename_or_reference => $output_filename_or_reference [, OPTS] C expects at least two parameters, C<$input_filename_or_reference> and C<$output_filename_or_reference> and zero or more optional parameters (see L) =head3 The C<$input_filename_or_reference> parameter The parameter, C<$input_filename_or_reference>, is used to define the source of the uncompressed data. It can take one of the following forms: =over 5 =item A filename If the C<$input_filename_or_reference> parameter is a simple scalar, it is assumed to be a filename. This file will be opened for reading and the input data will be read from it. =item A filehandle If the C<$input_filename_or_reference> parameter is a filehandle, the input data will be read from it. The string '-' can be used as an alias for standard input. =item A scalar reference If C<$input_filename_or_reference> is a scalar reference, the input data will be read from C<$$input_filename_or_reference>. =item An array reference If C<$input_filename_or_reference> is an array reference, each element in the array must be a filename. The input data will be read from each file in turn. The complete array will be walked to ensure that it only contains valid filenames before any data is compressed. =item An Input FileGlob string If C<$input_filename_or_reference> is a string that is delimited by the characters "<" and ">" C will assume that it is an I. The input is the list of files that match the fileglob. See L for more details. =back If the C<$input_filename_or_reference> parameter is any other type, C will be returned. In addition, if C<$input_filename_or_reference> is a simple filename, the default values for the C and C' => '<*.gz>' or die "gzip failed: $GzipError\n"; and if you want to compress each file one at a time, this will do the trick use strict ; use warnings ; use IO::Compress::Gzip qw(gzip $GzipError) ; for my $input ( glob "/my/home/*.txt" ) { my $output = "$input.gz" ; gzip $input => $output or die "Error compressing '$input': $GzipError\n"; } =head1 OO Interface =head2 Constructor The format of the constructor for C is shown below my $z = IO::Compress::Gzip->new( $output [,OPTS] ) or die "IO::Compress::Gzip failed: $GzipError\n"; It returns an C object on success and undef on failure. The variable C<$GzipError> will contain an error message on failure. If you are running Perl 5.005 or better the object, C<$z>, returned from IO::Compress::Gzip can be used exactly like an L filehandle. This means that all normal output file operations can be carried out with C<$z>. For example, to write to a compressed file/buffer you can use either of these forms $z->print("hello world\n"); print $z "hello world\n"; The mandatory parameter C<$output> is used to control the destination of the compressed data. This parameter can take one of these forms. =over 5 =item A filename If the C<$output> parameter is a simple scalar, it is assumed to be a filename. This file will be opened for writing and the compressed data will be written to it. =item A filehandle If the C<$output> parameter is a filehandle, the compressed data will be written to it. The string '-' can be used as an alias for standard output. =item A scalar reference If C<$output> is a scalar reference, the compressed data will be stored in C<$$output>. =back If the C<$output> parameter is any other type, C::new will return undef. =head2 Constructor Options C is any combination of zero or more the following options: =over 5 =item C<< AutoClose => 0|1 >> This option is only valid when the C<$output> parameter is a filehandle. If specified, and the value is true, it will result in the C<$output> being closed once either the C method is called or the C object is destroyed. This parameter defaults to 0. =item C<< Append => 0|1 >> Opens C<$output> in append mode. The behaviour of this option is dependent on the type of C<$output>. =over 5 =item * A Buffer If C<$output> is a buffer and C is enabled, all compressed data will be append to the end of C<$output>. Otherwise C<$output> will be cleared before any data is written to it. =item * A Filename If C<$output> is a filename and C is enabled, the file will be opened in append mode. Otherwise the contents of the file, if any, will be truncated before any compressed data is written to it. =item * A Filehandle If C<$output> is a filehandle, the file pointer will be positioned to the end of the file via a call to C before any compressed data is written to it. Otherwise the file pointer will not be moved. =back This parameter defaults to 0. =item C<< Merge => 0|1 >> This option is used to compress input data and append it to an existing compressed data stream in C<$output>. The end result is a single compressed data stream stored in C<$output>. It is a fatal error to attempt to use this option when C<$output> is not an RFC 1952 data stream. There are a number of other limitations with the C option: =over 5 =item 1 This module needs to have been built with zlib 1.2.1 or better to work. A fatal error will be thrown if C is used with an older version of zlib. =item 2 If C<$output> is a file or a filehandle, it must be seekable. =back This parameter defaults to 0. =item -Level Defines the compression level used by zlib. The value should either be a number between 0 and 9 (0 means no compression and 9 is maximum compression), or one of the symbolic constants defined below. Z_NO_COMPRESSION Z_BEST_SPEED Z_BEST_COMPRESSION Z_DEFAULT_COMPRESSION The default is Z_DEFAULT_COMPRESSION. Note, these constants are not imported by C by default. use IO::Compress::Gzip qw(:strategy); use IO::Compress::Gzip qw(:constants); use IO::Compress::Gzip qw(:all); =item -Strategy Defines the strategy used to tune the compression. Use one of the symbolic constants defined below. Z_FILTERED Z_HUFFMAN_ONLY Z_RLE Z_FIXED Z_DEFAULT_STRATEGY The default is Z_DEFAULT_STRATEGY. =item C<< Minimal => 0|1 >> If specified, this option will force the creation of the smallest possible compliant gzip header (which is exactly 10 bytes long) as defined in RFC 1952. See the section titled "Compliance" in RFC 1952 for a definition of the values used for the fields in the gzip header. All other parameters that control the content of the gzip header will be ignored if this parameter is set to 1. This parameter defaults to 0. =item C<< Comment => $comment >> Stores the contents of C<$comment> in the COMMENT field in the gzip header. By default, no comment field is written to the gzip file. If the C<-Strict> option is enabled, the comment can only consist of ISO 8859-1 characters plus line feed. If the C<-Strict> option is disabled, the comment field can contain any character except NULL. If any null characters are present, the field will be truncated at the first NULL. =item C<< Name => $string >> Stores the contents of C<$string> in the gzip NAME header field. If C is not specified, no gzip NAME field will be created. If the C<-Strict> option is enabled, C<$string> can only consist of ISO 8859-1 characters. If C<-Strict> is disabled, then C<$string> can contain any character except NULL. If any null characters are present, the field will be truncated at the first NULL. =item C<< Time => $number >> Sets the MTIME field in the gzip header to $number. This field defaults to the time the C object was created if this option is not specified. =item C<< TextFlag => 0|1 >> This parameter controls the setting of the FLG.FTEXT bit in the gzip header. It is used to signal that the data stored in the gzip file/buffer is probably text. The default is 0. =item C<< HeaderCRC => 0|1 >> When true this parameter will set the FLG.FHCRC bit to 1 in the gzip header and set the CRC16 header field to the CRC of the complete gzip header except the CRC16 field itself. B that gzip files created with the C flag set to 1 cannot be read by most, if not all, of the standard gunzip utilities, most notably gzip version 1.2.4. You should therefore avoid using this option if you want to maximize the portability of your gzip files. This parameter defaults to 0. =item C<< OS_Code => $value >> Stores C<$value> in the gzip OS header field. A number between 0 and 255 is valid. If not specified, this parameter defaults to the OS code of the Operating System this module was built on. The value 3 is used as a catch-all for all Unix variants and unknown Operating Systems. =item C<< ExtraField => $data >> This parameter allows additional metadata to be stored in the ExtraField in the gzip header. An RFC 1952 compliant ExtraField consists of zero or more subfields. Each subfield consists of a two byte header followed by the subfield data. The list of subfields can be supplied in any of the following formats -ExtraField => [$id1, $data1, $id2, $data2, ... ] -ExtraField => [ [$id1 => $data1], [$id2 => $data2], ... ] -ExtraField => { $id1 => $data1, $id2 => $data2, ... } Where C<$id1>, C<$id2> are two byte subfield ID's. The second byte of the ID cannot be 0, unless the C option has been disabled. If you use the hash syntax, you have no control over the order in which the ExtraSubFields are stored, plus you cannot have SubFields with duplicate ID. Alternatively the list of subfields can by supplied as a scalar, thus -ExtraField => $rawdata If you use the raw format, and the C option is enabled, C will check that C<$rawdata> consists of zero or more conformant sub-fields. When C is disabled, C<$rawdata> can consist of any arbitrary byte stream. The maximum size of the Extra Field 65535 bytes. =item C<< ExtraFlags => $value >> Sets the XFL byte in the gzip header to C<$value>. If this option is not present, the value stored in XFL field will be determined by the setting of the C option. If C<< Level => Z_BEST_SPEED >> has been specified then XFL is set to 2. If C<< Level => Z_BEST_COMPRESSION >> has been specified then XFL is set to 4. Otherwise XFL is set to 0. =item C<< Strict => 0|1 >> C will optionally police the values supplied with other options to ensure they are compliant with RFC1952. This option is enabled by default. If C is enabled the following behaviour will be policed: =over 5 =item * The value supplied with the C option can only contain ISO 8859-1 characters. =item * The value supplied with the C option can only contain ISO 8859-1 characters plus line-feed. =item * The values supplied with the C<-Name> and C<-Comment> options cannot contain multiple embedded nulls. =item * If an C option is specified and it is a simple scalar, it must conform to the sub-field structure as defined in RFC 1952. =item * If an C option is specified the second byte of the ID will be checked in each subfield to ensure that it does not contain the reserved value 0x00. =back When C is disabled the following behaviour will be policed: =over 5 =item * The value supplied with C<-Name> option can contain any character except NULL. =item * The value supplied with C<-Comment> option can contain any character except NULL. =item * The values supplied with the C<-Name> and C<-Comment> options can contain multiple embedded nulls. The string written to the gzip header will consist of the characters up to, but not including, the first embedded NULL. =item * If an C option is specified and it is a simple scalar, the structure will not be checked. The only error is if the length is too big. =item * The ID header in an C sub-field can consist of any two bytes. =back =back =head2 Examples TODO =head1 Methods =head2 print Usage is $z->print($data) print $z $data Compresses and outputs the contents of the C<$data> parameter. This has the same behaviour as the C built-in. Returns true if successful. =head2 printf Usage is $z->printf($format, $data) printf $z $format, $data Compresses and outputs the contents of the C<$data> parameter. Returns true if successful. =head2 syswrite Usage is $z->syswrite $data $z->syswrite $data, $length $z->syswrite $data, $length, $offset Compresses and outputs the contents of the C<$data> parameter. Returns the number of uncompressed bytes written, or C if unsuccessful. =head2 write Usage is $z->write $data $z->write $data, $length $z->write $data, $length, $offset Compresses and outputs the contents of the C<$data> parameter. Returns the number of uncompressed bytes written, or C if unsuccessful. =head2 flush Usage is $z->flush; $z->flush($flush_type); Flushes any pending compressed data to the output file/buffer. This method takes an optional parameter, C<$flush_type>, that controls how the flushing will be carried out. By default the C<$flush_type> used is C. Other valid values for C<$flush_type> are C, C, C and C. It is strongly recommended that you only set the C parameter if you fully understand the implications of what it does - overuse of C can seriously degrade the level of compression achieved. See the C documentation for details. Returns true on success. =head2 tell Usage is $z->tell() tell $z Returns the uncompressed file offset. =head2 eof Usage is $z->eof(); eof($z); Returns true if the C method has been called. =head2 seek $z->seek($position, $whence); seek($z, $position, $whence); Provides a sub-set of the C functionality, with the restriction that it is only legal to seek forward in the output file/buffer. It is a fatal error to attempt to seek backward. Empty parts of the file/buffer will have NULL (0x00) bytes written to them. The C<$whence> parameter takes one the usual values, namely SEEK_SET, SEEK_CUR or SEEK_END. Returns 1 on success, 0 on failure. =head2 binmode Usage is $z->binmode binmode $z ; This is a noop provided for completeness. =head2 opened $z->opened() Returns true if the object currently refers to a opened file/buffer. =head2 autoflush my $prev = $z->autoflush() my $prev = $z->autoflush(EXPR) If the C<$z> object is associated with a file or a filehandle, this method returns the current autoflush setting for the underlying filehandle. If C is present, and is non-zero, it will enable flushing after every write/print operation. If C<$z> is associated with a buffer, this method has no effect and always returns C. B that the special variable C<$|> B be used to set or retrieve the autoflush setting. =head2 input_line_number $z->input_line_number() $z->input_line_number(EXPR) This method always returns C when compressing. =head2 fileno $z->fileno() fileno($z) If the C<$z> object is associated with a file or a filehandle, C will return the underlying file descriptor. Once the C method is called C will return C. If the C<$z> object is associated with a buffer, this method will return C. =head2 close $z->close() ; close $z ; Flushes any pending compressed data and then closes the output file/buffer. For most versions of Perl this method will be automatically invoked if the IO::Compress::Gzip object is destroyed (either explicitly or by the variable with the reference to the object going out of scope). The exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In these cases, the C method will be called automatically, but not until global destruction of all live objects when the program is terminating. Therefore, if you want your scripts to be able to run on all versions of Perl, you should call C explicitly and not rely on automatic closing. Returns true on success, otherwise 0. If the C option has been enabled when the IO::Compress::Gzip object was created, and the object is associated with a file, the underlying file will also be closed. =head2 newStream([OPTS]) Usage is $z->newStream( [OPTS] ) Closes the current compressed data stream and starts a new one. OPTS consists of any of the options that are available when creating the C<$z> object. See the L section for more details. =head2 deflateParams Usage is $z->deflateParams TODO =head1 Importing A number of symbolic constants are required by some methods in C. None are imported by default. =over 5 =item :all Imports C, C<$GzipError> and all symbolic constants that can be used by C. Same as doing this use IO::Compress::Gzip qw(gzip $GzipError :constants) ; =item :constants Import all symbolic constants. Same as doing this use IO::Compress::Gzip qw(:flush :level :strategy) ; =item :flush These symbolic constants are used by the C method. Z_NO_FLUSH Z_PARTIAL_FLUSH Z_SYNC_FLUSH Z_FULL_FLUSH Z_FINISH Z_BLOCK =item :level These symbolic constants are used by the C option in the constructor. Z_NO_COMPRESSION Z_BEST_SPEED Z_BEST_COMPRESSION Z_DEFAULT_COMPRESSION =item :strategy These symbolic constants are used by the C option in the constructor. Z_FILTERED Z_HUFFMAN_ONLY Z_RLE Z_FIXED Z_DEFAULT_STRATEGY =back =head1 EXAMPLES =head2 Apache::GZip Revisited See L =head2 Working with Net::FTP See L =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L For RFC 1950, 1951 and 1952 see L, L and L The I compression library was written by Jean-loup Gailly C and Mark Adler C. The primary site for the I compression library is L. The primary site for gzip is L. =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005-2022 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILE&98448d92/IO/Compress/Gzip/Constants.pm+package IO::Compress::Gzip::Constants; use strict ; use warnings; use bytes; require Exporter; our ($VERSION, @ISA, @EXPORT, %GZIP_OS_Names); our ($GZIP_FNAME_INVALID_CHAR_RE, $GZIP_FCOMMENT_INVALID_CHAR_RE); $VERSION = '2.106'; @ISA = qw(Exporter); @EXPORT= qw( GZIP_ID_SIZE GZIP_ID1 GZIP_ID2 GZIP_FLG_DEFAULT GZIP_FLG_FTEXT GZIP_FLG_FHCRC GZIP_FLG_FEXTRA GZIP_FLG_FNAME GZIP_FLG_FCOMMENT GZIP_FLG_RESERVED GZIP_CM_DEFLATED GZIP_MIN_HEADER_SIZE GZIP_TRAILER_SIZE GZIP_MTIME_DEFAULT GZIP_XFL_DEFAULT GZIP_FEXTRA_HEADER_SIZE GZIP_FEXTRA_MAX_SIZE GZIP_FEXTRA_SUBFIELD_HEADER_SIZE GZIP_FEXTRA_SUBFIELD_ID_SIZE GZIP_FEXTRA_SUBFIELD_LEN_SIZE GZIP_FEXTRA_SUBFIELD_MAX_SIZE $GZIP_FNAME_INVALID_CHAR_RE $GZIP_FCOMMENT_INVALID_CHAR_RE GZIP_FHCRC_SIZE GZIP_ISIZE_MAX GZIP_ISIZE_MOD_VALUE GZIP_NULL_BYTE GZIP_OS_DEFAULT %GZIP_OS_Names GZIP_MINIMUM_HEADER ); # Constant names derived from RFC 1952 use constant GZIP_ID_SIZE => 2 ; use constant GZIP_ID1 => 0x1F; use constant GZIP_ID2 => 0x8B; use constant GZIP_MIN_HEADER_SIZE => 10 ;# minimum gzip header size use constant GZIP_TRAILER_SIZE => 8 ; use constant GZIP_FLG_DEFAULT => 0x00 ; use constant GZIP_FLG_FTEXT => 0x01 ; use constant GZIP_FLG_FHCRC => 0x02 ; # called CONTINUATION in gzip use constant GZIP_FLG_FEXTRA => 0x04 ; use constant GZIP_FLG_FNAME => 0x08 ; use constant GZIP_FLG_FCOMMENT => 0x10 ; #use constant GZIP_FLG_ENCRYPTED => 0x20 ; # documented in gzip sources use constant GZIP_FLG_RESERVED => (0x20 | 0x40 | 0x80) ; use constant GZIP_XFL_DEFAULT => 0x00 ; use constant GZIP_MTIME_DEFAULT => 0x00 ; use constant GZIP_FEXTRA_HEADER_SIZE => 2 ; use constant GZIP_FEXTRA_MAX_SIZE => 0xFFFF ; use constant GZIP_FEXTRA_SUBFIELD_ID_SIZE => 2 ; use constant GZIP_FEXTRA_SUBFIELD_LEN_SIZE => 2 ; use constant GZIP_FEXTRA_SUBFIELD_HEADER_SIZE => GZIP_FEXTRA_SUBFIELD_ID_SIZE + GZIP_FEXTRA_SUBFIELD_LEN_SIZE; use constant GZIP_FEXTRA_SUBFIELD_MAX_SIZE => GZIP_FEXTRA_MAX_SIZE - GZIP_FEXTRA_SUBFIELD_HEADER_SIZE ; if (ord('A') == 193) { # EBCDIC $GZIP_FNAME_INVALID_CHAR_RE = '[\x00-\x3f\xff]'; $GZIP_FCOMMENT_INVALID_CHAR_RE = '[\x00-\x0a\x11-\x14\x16-\x3f\xff]'; } else { $GZIP_FNAME_INVALID_CHAR_RE = '[\x00-\x1F\x7F-\x9F]'; $GZIP_FCOMMENT_INVALID_CHAR_RE = '[\x00-\x09\x11-\x1F\x7F-\x9F]'; } use constant GZIP_FHCRC_SIZE => 2 ; # aka CONTINUATION in gzip use constant GZIP_CM_DEFLATED => 8 ; use constant GZIP_NULL_BYTE => "\x00"; use constant GZIP_ISIZE_MAX => 0xFFFFFFFF ; use constant GZIP_ISIZE_MOD_VALUE => GZIP_ISIZE_MAX + 1 ; # OS Names sourced from http://www.gzip.org/format.txt use constant GZIP_OS_DEFAULT=> 0xFF ; %GZIP_OS_Names = ( 0 => 'MS-DOS', 1 => 'Amiga', 2 => 'VMS', 3 => 'Unix', 4 => 'VM/CMS', 5 => 'Atari TOS', 6 => 'HPFS (OS/2, NT)', 7 => 'Macintosh', 8 => 'Z-System', 9 => 'CP/M', 10 => 'TOPS-20', 11 => 'NTFS (NT)', 12 => 'SMS QDOS', 13 => 'Acorn RISCOS', 14 => 'VFAT file system (Win95, NT)', 15 => 'MVS', 16 => 'BeOS', 17 => 'Tandem/NSK', 18 => 'THEOS', GZIP_OS_DEFAULT() => 'Unknown', ) ; use constant GZIP_MINIMUM_HEADER => pack("C4 V C C", GZIP_ID1, GZIP_ID2, GZIP_CM_DEFLATED, GZIP_FLG_DEFAULT, GZIP_MTIME_DEFAULT, GZIP_XFL_DEFAULT, GZIP_OS_DEFAULT) ; 1; FILE"a639866c/IO/Compress/RawDeflate.pmi-package IO::Compress::RawDeflate ; # create RFC1951 # use strict ; use warnings; use bytes; use IO::Compress::Base 2.106 ; use IO::Compress::Base::Common 2.106 qw(:Status :Parse); use IO::Compress::Adapter::Deflate 2.106 ; use Compress::Raw::Zlib 2.103 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY); require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError); $VERSION = '2.106'; $RawDeflateError = ''; @ISA = qw(IO::Compress::Base Exporter); @EXPORT_OK = qw( $RawDeflateError rawdeflate ) ; push @EXPORT_OK, @IO::Compress::Adapter::Deflate::EXPORT_OK ; %EXPORT_TAGS = %IO::Compress::Adapter::Deflate::DEFLATE_CONSTANTS; { my %seen; foreach (keys %EXPORT_TAGS ) { push @{$EXPORT_TAGS{constants}}, grep { !$seen{$_}++ } @{ $EXPORT_TAGS{$_} } } $EXPORT_TAGS{all} = $EXPORT_TAGS{constants} ; } %DEFLATE_CONSTANTS = %EXPORT_TAGS; #push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); sub new { my $class = shift ; my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$RawDeflateError); return $obj->_create(undef, @_); } sub rawdeflate { my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$RawDeflateError); return $obj->_def(@_); } sub ckParams { my $self = shift ; my $got = shift; return 1 ; } sub mkComp { my $self = shift ; my $got = shift ; my ($obj, $errstr, $errno) = IO::Compress::Adapter::Deflate::mkCompObject( $got->getValue('crc32'), $got->getValue('adler32'), $got->getValue('level'), $got->getValue('strategy') ); return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; return $obj; } sub mkHeader { my $self = shift ; return ''; } sub mkTrailer { my $self = shift ; return ''; } sub mkFinalTrailer { return ''; } #sub newHeader #{ # my $self = shift ; # return ''; #} sub getExtraParams { my $self = shift ; return getZlibParams(); } our %PARAMS = ( #'method' => [IO::Compress::Base::Common::Parse_unsigned, Z_DEFLATED], 'level' => [IO::Compress::Base::Common::Parse_signed, Z_DEFAULT_COMPRESSION], 'strategy' => [IO::Compress::Base::Common::Parse_signed, Z_DEFAULT_STRATEGY], 'crc32' => [IO::Compress::Base::Common::Parse_boolean, 0], 'adler32' => [IO::Compress::Base::Common::Parse_boolean, 0], 'merge' => [IO::Compress::Base::Common::Parse_boolean, 0], ); sub getZlibParams { return %PARAMS; } sub getInverseClass { no warnings 'once'; return ('IO::Uncompress::RawInflate', \$IO::Uncompress::RawInflate::RawInflateError); } sub getFileInfo { my $self = shift ; my $params = shift; my $file = shift ; } use Fcntl qw(SEEK_SET); sub createMerge { my $self = shift ; my $outValue = shift ; my $outType = shift ; my ($invClass, $error_ref) = $self->getInverseClass(); eval "require $invClass" or die "aaaahhhh" ; my $inf = $invClass->new( $outValue, Transparent => 0, #Strict => 1, AutoClose => 0, Scan => 1) or return $self->saveErrorString(undef, "Cannot create InflateScan object: $$error_ref" ) ; my $end_offset = 0; $inf->scan() or return $self->saveErrorString(undef, "Error Scanning: $$error_ref", $inf->errorNo) ; $inf->zap($end_offset) or return $self->saveErrorString(undef, "Error Zapping: $$error_ref", $inf->errorNo) ; my $def = *$self->{Compress} = $inf->createDeflate(); *$self->{Header} = *$inf->{Info}{Header}; *$self->{UnCompSize} = *$inf->{UnCompSize}->clone(); *$self->{CompSize} = *$inf->{CompSize}->clone(); # TODO -- fix this #*$self->{CompSize} = U64->new(0, *$self->{UnCompSize_32bit}); if ( $outType eq 'buffer') { substr( ${ *$self->{Buffer} }, $end_offset) = '' } elsif ($outType eq 'handle' || $outType eq 'filename') { *$self->{FH} = *$inf->{FH} ; delete *$inf->{FH}; *$self->{FH}->flush() ; *$self->{Handle} = 1 if $outType eq 'handle'; #seek(*$self->{FH}, $end_offset, SEEK_SET) *$self->{FH}->seek($end_offset, SEEK_SET) or return $self->saveErrorString(undef, $!, $!) ; } return $def ; } #### zlib specific methods sub deflateParams { my $self = shift ; my $level = shift ; my $strategy = shift ; my $status = *$self->{Compress}->deflateParams(Level => $level, Strategy => $strategy) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; return 1; } 1; __END__ =head1 NAME IO::Compress::RawDeflate - Write RFC 1951 files/buffers =head1 SYNOPSIS use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ; my $status = rawdeflate $input => $output [,OPTS] or die "rawdeflate failed: $RawDeflateError\n"; my $z = IO::Compress::RawDeflate->new( $output [,OPTS] ) or die "rawdeflate failed: $RawDeflateError\n"; $z->print($string); $z->printf($format, $string); $z->write($string); $z->syswrite($string [, $length, $offset]); $z->flush(); $z->tell(); $z->eof(); $z->seek($position, $whence); $z->binmode(); $z->fileno(); $z->opened(); $z->autoflush(); $z->input_line_number(); $z->newStream( [OPTS] ); $z->deflateParams(); $z->close() ; $RawDeflateError ; # IO::File mode print $z $string; printf $z $format, $string; tell $z eof $z seek $z, $position, $whence binmode $z fileno $z close $z ; =head1 DESCRIPTION This module provides a Perl interface that allows writing compressed data to files or buffer as defined in RFC 1951. Note that RFC 1951 data is not a good choice of compression format to use in isolation, especially if you want to auto-detect it. For reading RFC 1951 files/buffers, see the companion module L. =head1 Functional Interface A top-level function, C, is provided to carry out "one-shot" compression between buffers and/or files. For finer control over the compression process, see the L section. use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ; rawdeflate $input_filename_or_reference => $output_filename_or_reference [,OPTS] or die "rawdeflate failed: $RawDeflateError\n"; The functional interface needs Perl5.005 or better. =head2 rawdeflate $input_filename_or_reference => $output_filename_or_reference [, OPTS] C expects at least two parameters, C<$input_filename_or_reference> and C<$output_filename_or_reference> and zero or more optional parameters (see L) =head3 The C<$input_filename_or_reference> parameter The parameter, C<$input_filename_or_reference>, is used to define the source of the uncompressed data. It can take one of the following forms: =over 5 =item A filename If the C<$input_filename_or_reference> parameter is a simple scalar, it is assumed to be a filename. This file will be opened for reading and the input data will be read from it. =item A filehandle If the C<$input_filename_or_reference> parameter is a filehandle, the input data will be read from it. The string '-' can be used as an alias for standard input. =item A scalar reference If C<$input_filename_or_reference> is a scalar reference, the input data will be read from C<$$input_filename_or_reference>. =item An array reference If C<$input_filename_or_reference> is an array reference, each element in the array must be a filename. The input data will be read from each file in turn. The complete array will be walked to ensure that it only contains valid filenames before any data is compressed. =item An Input FileGlob string If C<$input_filename_or_reference> is a string that is delimited by the characters "<" and ">" C will assume that it is an I. The input is the list of files that match the fileglob. See L for more details. =back If the C<$input_filename_or_reference> parameter is any other type, C will be returned. =head3 The C<$output_filename_or_reference> parameter The parameter C<$output_filename_or_reference> is used to control the destination of the compressed data. This parameter can take one of these forms. =over 5 =item A filename If the C<$output_filename_or_reference> parameter is a simple scalar, it is assumed to be a filename. This file will be opened for writing and the compressed data will be written to it. =item A filehandle If the C<$output_filename_or_reference> parameter is a filehandle, the compressed data will be written to it. The string '-' can be used as an alias for standard output. =item A scalar reference If C<$output_filename_or_reference> is a scalar reference, the compressed data will be stored in C<$$output_filename_or_reference>. =item An Array Reference If C<$output_filename_or_reference> is an array reference, the compressed data will be pushed onto the array. =item An Output FileGlob If C<$output_filename_or_reference> is a string that is delimited by the characters "<" and ">" C will assume that it is an I. The output is the list of files that match the fileglob. When C<$output_filename_or_reference> is an fileglob string, C<$input_filename_or_reference> must also be a fileglob string. Anything else is an error. See L for more details. =back If the C<$output_filename_or_reference> parameter is any other type, C will be returned. =head2 Notes When C<$input_filename_or_reference> maps to multiple files/buffers and C<$output_filename_or_reference> is a single file/buffer the input files/buffers will be stored in C<$output_filename_or_reference> as a concatenated series of compressed data streams. =head2 Optional Parameters The optional parameters for the one-shot function C are (for the most part) identical to those used with the OO interface defined in the L section. The exceptions are listed below =over 5 =item C<< AutoClose => 0|1 >> This option applies to any input or output data streams to C that are filehandles. If C is specified, and the value is true, it will result in all input and/or output filehandles being closed once C has completed. This parameter defaults to 0. =item C<< BinModeIn => 0|1 >> This option is now a no-op. All files will be read in binmode. =item C<< Append => 0|1 >> The behaviour of this option is dependent on the type of output data stream. =over 5 =item * A Buffer If C is enabled, all compressed data will be append to the end of the output buffer. Otherwise the output buffer will be cleared before any compressed data is written to it. =item * A Filename If C is enabled, the file will be opened in append mode. Otherwise the contents of the file, if any, will be truncated before any compressed data is written to it. =item * A Filehandle If C is enabled, the filehandle will be positioned to the end of the file via a call to C before any compressed data is written to it. Otherwise the file pointer will not be moved. =back When C is specified, and set to true, it will I all compressed data to the output data stream. So when the output is a filehandle it will carry out a seek to the eof before writing any compressed data. If the output is a filename, it will be opened for appending. If the output is a buffer, all compressed data will be appended to the existing buffer. Conversely when C is not specified, or it is present and is set to false, it will operate as follows. When the output is a filename, it will truncate the contents of the file before writing any compressed data. If the output is a filehandle its position will not be changed. If the output is a buffer, it will be wiped before any compressed data is output. Defaults to 0. =back =head2 Examples Here are a few example that show the capabilities of the module. =head3 Streaming This very simple command line example demonstrates the streaming capabilities of the module. The code reads data from STDIN, compresses it, and writes the compressed data to STDOUT. $ echo hello world | perl -MIO::Compress::RawDeflate=rawdeflate -e 'rawdeflate \*STDIN => \*STDOUT' >output.1951 The special filename "-" can be used as a standin for both C<\*STDIN> and C<\*STDOUT>, so the above can be rewritten as $ echo hello world | perl -MIO::Compress::RawDeflate=rawdeflate -e 'rawdeflate "-" => "-"' >output.1951 =head3 Compressing a file from the filesystem To read the contents of the file C and write the compressed data to the file C. use strict ; use warnings ; use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ; my $input = "file1.txt"; rawdeflate $input => "$input.1951" or die "rawdeflate failed: $RawDeflateError\n"; =head3 Reading from a Filehandle and writing to an in-memory buffer To read from an existing Perl filehandle, C<$input>, and write the compressed data to a buffer, C<$buffer>. use strict ; use warnings ; use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ; use IO::File ; my $input = IO::File->new( " \$buffer or die "rawdeflate failed: $RawDeflateError\n"; =head3 Compressing multiple files To compress all files in the directory "/my/home" that match "*.txt" and store the compressed data in the same directory use strict ; use warnings ; use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ; rawdeflate '' => '<*.1951>' or die "rawdeflate failed: $RawDeflateError\n"; and if you want to compress each file one at a time, this will do the trick use strict ; use warnings ; use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ; for my $input ( glob "/my/home/*.txt" ) { my $output = "$input.1951" ; rawdeflate $input => $output or die "Error compressing '$input': $RawDeflateError\n"; } =head1 OO Interface =head2 Constructor The format of the constructor for C is shown below my $z = IO::Compress::RawDeflate->new( $output [,OPTS] ) or die "IO::Compress::RawDeflate failed: $RawDeflateError\n"; It returns an C object on success and undef on failure. The variable C<$RawDeflateError> will contain an error message on failure. If you are running Perl 5.005 or better the object, C<$z>, returned from IO::Compress::RawDeflate can be used exactly like an L filehandle. This means that all normal output file operations can be carried out with C<$z>. For example, to write to a compressed file/buffer you can use either of these forms $z->print("hello world\n"); print $z "hello world\n"; The mandatory parameter C<$output> is used to control the destination of the compressed data. This parameter can take one of these forms. =over 5 =item A filename If the C<$output> parameter is a simple scalar, it is assumed to be a filename. This file will be opened for writing and the compressed data will be written to it. =item A filehandle If the C<$output> parameter is a filehandle, the compressed data will be written to it. The string '-' can be used as an alias for standard output. =item A scalar reference If C<$output> is a scalar reference, the compressed data will be stored in C<$$output>. =back If the C<$output> parameter is any other type, C::new will return undef. =head2 Constructor Options C is any combination of zero or more the following options: =over 5 =item C<< AutoClose => 0|1 >> This option is only valid when the C<$output> parameter is a filehandle. If specified, and the value is true, it will result in the C<$output> being closed once either the C method is called or the C object is destroyed. This parameter defaults to 0. =item C<< Append => 0|1 >> Opens C<$output> in append mode. The behaviour of this option is dependent on the type of C<$output>. =over 5 =item * A Buffer If C<$output> is a buffer and C is enabled, all compressed data will be append to the end of C<$output>. Otherwise C<$output> will be cleared before any data is written to it. =item * A Filename If C<$output> is a filename and C is enabled, the file will be opened in append mode. Otherwise the contents of the file, if any, will be truncated before any compressed data is written to it. =item * A Filehandle If C<$output> is a filehandle, the file pointer will be positioned to the end of the file via a call to C before any compressed data is written to it. Otherwise the file pointer will not be moved. =back This parameter defaults to 0. =item C<< Merge => 0|1 >> This option is used to compress input data and append it to an existing compressed data stream in C<$output>. The end result is a single compressed data stream stored in C<$output>. It is a fatal error to attempt to use this option when C<$output> is not an RFC 1951 data stream. There are a number of other limitations with the C option: =over 5 =item 1 This module needs to have been built with zlib 1.2.1 or better to work. A fatal error will be thrown if C is used with an older version of zlib. =item 2 If C<$output> is a file or a filehandle, it must be seekable. =back This parameter defaults to 0. =item -Level Defines the compression level used by zlib. The value should either be a number between 0 and 9 (0 means no compression and 9 is maximum compression), or one of the symbolic constants defined below. Z_NO_COMPRESSION Z_BEST_SPEED Z_BEST_COMPRESSION Z_DEFAULT_COMPRESSION The default is Z_DEFAULT_COMPRESSION. Note, these constants are not imported by C by default. use IO::Compress::RawDeflate qw(:strategy); use IO::Compress::RawDeflate qw(:constants); use IO::Compress::RawDeflate qw(:all); =item -Strategy Defines the strategy used to tune the compression. Use one of the symbolic constants defined below. Z_FILTERED Z_HUFFMAN_ONLY Z_RLE Z_FIXED Z_DEFAULT_STRATEGY The default is Z_DEFAULT_STRATEGY. =item C<< Strict => 0|1 >> This is a placeholder option. =back =head2 Examples TODO =head1 Methods =head2 print Usage is $z->print($data) print $z $data Compresses and outputs the contents of the C<$data> parameter. This has the same behaviour as the C built-in. Returns true if successful. =head2 printf Usage is $z->printf($format, $data) printf $z $format, $data Compresses and outputs the contents of the C<$data> parameter. Returns true if successful. =head2 syswrite Usage is $z->syswrite $data $z->syswrite $data, $length $z->syswrite $data, $length, $offset Compresses and outputs the contents of the C<$data> parameter. Returns the number of uncompressed bytes written, or C if unsuccessful. =head2 write Usage is $z->write $data $z->write $data, $length $z->write $data, $length, $offset Compresses and outputs the contents of the C<$data> parameter. Returns the number of uncompressed bytes written, or C if unsuccessful. =head2 flush Usage is $z->flush; $z->flush($flush_type); Flushes any pending compressed data to the output file/buffer. This method takes an optional parameter, C<$flush_type>, that controls how the flushing will be carried out. By default the C<$flush_type> used is C. Other valid values for C<$flush_type> are C, C, C and C. It is strongly recommended that you only set the C parameter if you fully understand the implications of what it does - overuse of C can seriously degrade the level of compression achieved. See the C documentation for details. Returns true on success. =head2 tell Usage is $z->tell() tell $z Returns the uncompressed file offset. =head2 eof Usage is $z->eof(); eof($z); Returns true if the C method has been called. =head2 seek $z->seek($position, $whence); seek($z, $position, $whence); Provides a sub-set of the C functionality, with the restriction that it is only legal to seek forward in the output file/buffer. It is a fatal error to attempt to seek backward. Empty parts of the file/buffer will have NULL (0x00) bytes written to them. The C<$whence> parameter takes one the usual values, namely SEEK_SET, SEEK_CUR or SEEK_END. Returns 1 on success, 0 on failure. =head2 binmode Usage is $z->binmode binmode $z ; This is a noop provided for completeness. =head2 opened $z->opened() Returns true if the object currently refers to a opened file/buffer. =head2 autoflush my $prev = $z->autoflush() my $prev = $z->autoflush(EXPR) If the C<$z> object is associated with a file or a filehandle, this method returns the current autoflush setting for the underlying filehandle. If C is present, and is non-zero, it will enable flushing after every write/print operation. If C<$z> is associated with a buffer, this method has no effect and always returns C. B that the special variable C<$|> B be used to set or retrieve the autoflush setting. =head2 input_line_number $z->input_line_number() $z->input_line_number(EXPR) This method always returns C when compressing. =head2 fileno $z->fileno() fileno($z) If the C<$z> object is associated with a file or a filehandle, C will return the underlying file descriptor. Once the C method is called C will return C. If the C<$z> object is associated with a buffer, this method will return C. =head2 close $z->close() ; close $z ; Flushes any pending compressed data and then closes the output file/buffer. For most versions of Perl this method will be automatically invoked if the IO::Compress::RawDeflate object is destroyed (either explicitly or by the variable with the reference to the object going out of scope). The exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In these cases, the C method will be called automatically, but not until global destruction of all live objects when the program is terminating. Therefore, if you want your scripts to be able to run on all versions of Perl, you should call C explicitly and not rely on automatic closing. Returns true on success, otherwise 0. If the C option has been enabled when the IO::Compress::RawDeflate object was created, and the object is associated with a file, the underlying file will also be closed. =head2 newStream([OPTS]) Usage is $z->newStream( [OPTS] ) Closes the current compressed data stream and starts a new one. OPTS consists of any of the options that are available when creating the C<$z> object. See the L section for more details. =head2 deflateParams Usage is $z->deflateParams TODO =head1 Importing A number of symbolic constants are required by some methods in C. None are imported by default. =over 5 =item :all Imports C, C<$RawDeflateError> and all symbolic constants that can be used by C. Same as doing this use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError :constants) ; =item :constants Import all symbolic constants. Same as doing this use IO::Compress::RawDeflate qw(:flush :level :strategy) ; =item :flush These symbolic constants are used by the C method. Z_NO_FLUSH Z_PARTIAL_FLUSH Z_SYNC_FLUSH Z_FULL_FLUSH Z_FINISH Z_BLOCK =item :level These symbolic constants are used by the C option in the constructor. Z_NO_COMPRESSION Z_BEST_SPEED Z_BEST_COMPRESSION Z_DEFAULT_COMPRESSION =item :strategy These symbolic constants are used by the C option in the constructor. Z_FILTERED Z_HUFFMAN_ONLY Z_RLE Z_FIXED Z_DEFAULT_STRATEGY =back =head1 EXAMPLES =head2 Apache::GZip Revisited See L =head2 Working with Net::FTP See L =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L For RFC 1950, 1951 and 1952 see L, L and L The I compression library was written by Jean-loup Gailly C and Mark Adler C. The primary site for the I compression library is L. The primary site for gzip is L. =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005-2022 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILE"1565d394/IO/Compress/Zlib/Extra.pmpackage IO::Compress::Zlib::Extra; require 5.006 ; use strict ; use warnings; use bytes; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS); $VERSION = '2.106'; use IO::Compress::Gzip::Constants 2.106 ; sub ExtraFieldError { return $_[0]; return "Error with ExtraField Parameter: $_[0]" ; } sub validateExtraFieldPair { my $pair = shift ; my $strict = shift; my $gzipMode = shift ; return ExtraFieldError("Not an array ref") unless ref $pair && ref $pair eq 'ARRAY'; return ExtraFieldError("SubField must have two parts") unless @$pair == 2 ; return ExtraFieldError("SubField ID is a reference") if ref $pair->[0] ; return ExtraFieldError("SubField Data is a reference") if ref $pair->[1] ; # ID is exactly two chars return ExtraFieldError("SubField ID not two chars long") unless length $pair->[0] == GZIP_FEXTRA_SUBFIELD_ID_SIZE ; # Check that the 2nd byte of the ID isn't 0 return ExtraFieldError("SubField ID 2nd byte is 0x00") if $strict && $gzipMode && substr($pair->[0], 1, 1) eq "\x00" ; return ExtraFieldError("SubField Data too long") if length $pair->[1] > GZIP_FEXTRA_SUBFIELD_MAX_SIZE ; return undef ; } sub parseRawExtra { my $data = shift ; my $extraRef = shift; my $strict = shift; my $gzipMode = shift ; #my $lax = shift ; #return undef # if $lax ; my $XLEN = length $data ; return ExtraFieldError("Too Large") if $XLEN > GZIP_FEXTRA_MAX_SIZE; my $offset = 0 ; while ($offset < $XLEN) { return ExtraFieldError("Truncated in FEXTRA Body Section") if $offset + GZIP_FEXTRA_SUBFIELD_HEADER_SIZE > $XLEN ; my $id = substr($data, $offset, GZIP_FEXTRA_SUBFIELD_ID_SIZE); $offset += GZIP_FEXTRA_SUBFIELD_ID_SIZE; my $subLen = unpack("v", substr($data, $offset, GZIP_FEXTRA_SUBFIELD_LEN_SIZE)); $offset += GZIP_FEXTRA_SUBFIELD_LEN_SIZE ; return ExtraFieldError("Truncated in FEXTRA Body Section") if $offset + $subLen > $XLEN ; my $bad = validateExtraFieldPair( [$id, substr($data, $offset, $subLen)], $strict, $gzipMode ); return $bad if $bad ; push @$extraRef, [$id => substr($data, $offset, $subLen)] if defined $extraRef;; $offset += $subLen ; } return undef ; } sub findID { my $id_want = shift ; my $data = shift; my $XLEN = length $data ; my $offset = 0 ; while ($offset < $XLEN) { return undef if $offset + GZIP_FEXTRA_SUBFIELD_HEADER_SIZE > $XLEN ; my $id = substr($data, $offset, GZIP_FEXTRA_SUBFIELD_ID_SIZE); $offset += GZIP_FEXTRA_SUBFIELD_ID_SIZE; my $subLen = unpack("v", substr($data, $offset, GZIP_FEXTRA_SUBFIELD_LEN_SIZE)); $offset += GZIP_FEXTRA_SUBFIELD_LEN_SIZE ; return undef if $offset + $subLen > $XLEN ; return substr($data, $offset, $subLen) if $id eq $id_want ; $offset += $subLen ; } return undef ; } sub mkSubField { my $id = shift ; my $data = shift ; return $id . pack("v", length $data) . $data ; } sub parseExtraField { my $dataRef = $_[0]; my $strict = $_[1]; my $gzipMode = $_[2]; #my $lax = @_ == 2 ? $_[1] : 1; # ExtraField can be any of # # -ExtraField => $data # # -ExtraField => [$id1, $data1, # $id2, $data2] # ... # ] # # -ExtraField => [ [$id1 => $data1], # [$id2 => $data2], # ... # ] # # -ExtraField => { $id1 => $data1, # $id2 => $data2, # ... # } if ( ! ref $dataRef ) { return undef if ! $strict; return parseRawExtra($dataRef, undef, 1, $gzipMode); } my $data = $dataRef; my $out = '' ; if (ref $data eq 'ARRAY') { if (ref $data->[0]) { foreach my $pair (@$data) { return ExtraFieldError("Not list of lists") unless ref $pair eq 'ARRAY' ; my $bad = validateExtraFieldPair($pair, $strict, $gzipMode) ; return $bad if $bad ; $out .= mkSubField(@$pair); } } else { return ExtraFieldError("Not even number of elements") unless @$data % 2 == 0; for (my $ix = 0; $ix <= @$data -1 ; $ix += 2) { my $bad = validateExtraFieldPair([$data->[$ix], $data->[$ix+1]], $strict, $gzipMode) ; return $bad if $bad ; $out .= mkSubField($data->[$ix], $data->[$ix+1]); } } } elsif (ref $data eq 'HASH') { while (my ($id, $info) = each %$data) { my $bad = validateExtraFieldPair([$id, $info], $strict, $gzipMode); return $bad if $bad ; $out .= mkSubField($id, $info); } } else { return ExtraFieldError("Not a scalar, array ref or hash ref") ; } return ExtraFieldError("Too Large") if length $out > GZIP_FEXTRA_MAX_SIZE; $_[0] = $out ; return undef; } 1; __END__ FILE)88410e39/IO/Uncompress/Adapter/Inflate.pm package IO::Uncompress::Adapter::Inflate; use strict; use warnings; use bytes; use IO::Compress::Base::Common 2.106 qw(:Status); use Compress::Raw::Zlib 2.103 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS); our ($VERSION); $VERSION = '2.106'; sub mkUncompObject { my $crc32 = shift || 1; my $adler32 = shift || 1; my $scan = shift || 0; my $inflate ; my $status ; if ($scan) { ($inflate, $status) = Compress::Raw::Zlib::InflateScan->new( #LimitOutput => 1, CRC32 => $crc32, ADLER32 => $adler32, WindowBits => - MAX_WBITS ); } else { ($inflate, $status) = Compress::Raw::Zlib::Inflate->new( AppendOutput => 1, LimitOutput => 1, CRC32 => $crc32, ADLER32 => $adler32, WindowBits => - MAX_WBITS ); } return (undef, "Could not create Inflation object: $status", $status) if $status != Z_OK ; return bless {'Inf' => $inflate, 'CompSize' => 0, 'UnCompSize' => 0, 'Error' => '', 'ConsumesInput' => 1, } ; } sub uncompr { my $self = shift ; my $from = shift ; my $to = shift ; my $eof = shift ; my $inf = $self->{Inf}; my $status = $inf->inflate($from, $to, $eof); $self->{ErrorNo} = $status; if ($status != Z_OK && $status != Z_STREAM_END && $status != Z_BUF_ERROR) { $self->{Error} = "Inflation Error: $status"; return STATUS_ERROR; } return STATUS_OK if $status == Z_BUF_ERROR ; # ??? return STATUS_OK if $status == Z_OK ; return STATUS_ENDSTREAM if $status == Z_STREAM_END ; return STATUS_ERROR ; } sub reset { my $self = shift ; $self->{Inf}->inflateReset(); return STATUS_OK ; } #sub count #{ # my $self = shift ; # $self->{Inf}->inflateCount(); #} sub crc32 { my $self = shift ; $self->{Inf}->crc32(); } sub compressedBytes { my $self = shift ; $self->{Inf}->compressedBytes(); } sub uncompressedBytes { my $self = shift ; $self->{Inf}->uncompressedBytes(); } sub adler32 { my $self = shift ; $self->{Inf}->adler32(); } sub sync { my $self = shift ; ( $self->{Inf}->inflateSync(@_) == Z_OK) ? STATUS_OK : STATUS_ERROR ; } sub getLastBlockOffset { my $self = shift ; $self->{Inf}->getLastBlockOffset(); } sub getEndOffset { my $self = shift ; $self->{Inf}->getEndOffset(); } sub resetLastBlockByte { my $self = shift ; $self->{Inf}->resetLastBlockByte(@_); } sub createDeflateStream { my $self = shift ; my $deflate = $self->{Inf}->createDeflateStream(@_); return bless {'Def' => $deflate, 'CompSize' => 0, 'UnCompSize' => 0, 'Error' => '', }, 'IO::Compress::Adapter::Deflate'; } 1; __END__ FILE63214d0e/IO/Uncompress/Base.pm? package IO::Uncompress::Base ; use strict ; use warnings; use bytes; our (@ISA, $VERSION, @EXPORT_OK, %EXPORT_TAGS); @ISA = qw(IO::File Exporter); $VERSION = '2.106'; use constant G_EOF => 0 ; use constant G_ERR => -1 ; use IO::Compress::Base::Common 2.106 ; use IO::File ; use Symbol; use Scalar::Util (); use List::Util (); use Carp ; %EXPORT_TAGS = ( ); push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; sub smartRead { my $self = $_[0]; my $out = $_[1]; my $size = $_[2]; $$out = "" ; my $offset = 0 ; my $status = 1; if (defined *$self->{InputLength}) { return 0 if *$self->{InputLengthRemaining} <= 0 ; $size = List::Util::min($size, *$self->{InputLengthRemaining}); } if ( length *$self->{Prime} ) { $$out = substr(*$self->{Prime}, 0, $size) ; substr(*$self->{Prime}, 0, $size) = '' ; if (length $$out == $size) { *$self->{InputLengthRemaining} -= length $$out if defined *$self->{InputLength}; return length $$out ; } $offset = length $$out ; } my $get_size = $size - $offset ; if (defined *$self->{FH}) { if ($offset) { # Not using this # # *$self->{FH}->read($$out, $get_size, $offset); # # because the filehandle may not support the offset parameter # An example is Net::FTP my $tmp = ''; $status = *$self->{FH}->read($tmp, $get_size) ; substr($$out, $offset) = $tmp if defined $status && $status > 0 ; } else { $status = *$self->{FH}->read($$out, $get_size) } } elsif (defined *$self->{InputEvent}) { my $got = 1 ; while (length $$out < $size) { last if ($got = *$self->{InputEvent}->($$out, $get_size)) <= 0; } if (length $$out > $size ) { *$self->{Prime} = substr($$out, $size, length($$out)); substr($$out, $size, length($$out)) = ''; } *$self->{EventEof} = 1 if $got <= 0 ; } else { no warnings 'uninitialized'; my $buf = *$self->{Buffer} ; $$buf = '' unless defined $$buf ; substr($$out, $offset) = substr($$buf, *$self->{BufferOffset}, $get_size); if (*$self->{ConsumeInput}) { substr($$buf, 0, $get_size) = '' } else { *$self->{BufferOffset} += length($$out) - $offset } } *$self->{InputLengthRemaining} -= length($$out) #- $offset if defined *$self->{InputLength}; if (! defined $status) { $self->saveStatus($!) ; return STATUS_ERROR; } $self->saveStatus(length $$out < 0 ? STATUS_ERROR : STATUS_OK) ; return length $$out; } sub pushBack { my $self = shift ; return if ! defined $_[0] || length $_[0] == 0 ; if (defined *$self->{FH} || defined *$self->{InputEvent} ) { *$self->{Prime} = $_[0] . *$self->{Prime} ; *$self->{InputLengthRemaining} += length($_[0]); } else { my $len = length $_[0]; if($len > *$self->{BufferOffset}) { *$self->{Prime} = substr($_[0], 0, $len - *$self->{BufferOffset}) . *$self->{Prime} ; *$self->{InputLengthRemaining} = *$self->{InputLength}; *$self->{BufferOffset} = 0 } else { *$self->{InputLengthRemaining} += length($_[0]); *$self->{BufferOffset} -= length($_[0]) ; } } } sub smartSeek { my $self = shift ; my $offset = shift ; my $truncate = shift; my $position = shift || SEEK_SET; # TODO -- need to take prime into account *$self->{Prime} = ''; if (defined *$self->{FH}) { *$self->{FH}->seek($offset, $position) } else { if ($position == SEEK_END) { *$self->{BufferOffset} = length(${ *$self->{Buffer} }) + $offset ; } elsif ($position == SEEK_CUR) { *$self->{BufferOffset} += $offset ; } else { *$self->{BufferOffset} = $offset ; } substr(${ *$self->{Buffer} }, *$self->{BufferOffset}) = '' if $truncate; return 1; } } sub smartTell { my $self = shift ; if (defined *$self->{FH}) { return *$self->{FH}->tell() } else { return *$self->{BufferOffset} } } sub smartWrite { my $self = shift ; my $out_data = shift ; if (defined *$self->{FH}) { # flush needed for 5.8.0 defined *$self->{FH}->write($out_data, length $out_data) && defined *$self->{FH}->flush() ; } else { my $buf = *$self->{Buffer} ; substr($$buf, *$self->{BufferOffset}, length $out_data) = $out_data ; *$self->{BufferOffset} += length($out_data) ; return 1; } } sub smartReadExact { return $_[0]->smartRead($_[1], $_[2]) == $_[2]; } sub smartEof { my ($self) = $_[0]; local $.; return 0 if length *$self->{Prime} || *$self->{PushMode}; if (defined *$self->{FH}) { # Could use # # *$self->{FH}->eof() # # here, but this can cause trouble if # the filehandle is itself a tied handle, but it uses sysread. # Then we get into mixing buffered & non-buffered IO, # which will cause trouble my $info = $self->getErrInfo(); my $buffer = ''; my $status = $self->smartRead(\$buffer, 1); $self->pushBack($buffer) if length $buffer; $self->setErrInfo($info); return $status == 0 ; } elsif (defined *$self->{InputEvent}) { *$self->{EventEof} } else { *$self->{BufferOffset} >= length(${ *$self->{Buffer} }) } } sub clearError { my $self = shift ; *$self->{ErrorNo} = 0 ; ${ *$self->{Error} } = '' ; } sub getErrInfo { my $self = shift ; return [ *$self->{ErrorNo}, ${ *$self->{Error} } ] ; } sub setErrInfo { my $self = shift ; my $ref = shift; *$self->{ErrorNo} = $ref->[0] ; ${ *$self->{Error} } = $ref->[1] ; } sub saveStatus { my $self = shift ; my $errno = shift() + 0 ; *$self->{ErrorNo} = $errno; ${ *$self->{Error} } = '' ; return *$self->{ErrorNo} ; } sub saveErrorString { my $self = shift ; my $retval = shift ; ${ *$self->{Error} } = shift ; *$self->{ErrorNo} = @_ ? shift() + 0 : STATUS_ERROR ; return $retval; } sub croakError { my $self = shift ; $self->saveErrorString(0, $_[0]); croak $_[0]; } sub closeError { my $self = shift ; my $retval = shift ; my $errno = *$self->{ErrorNo}; my $error = ${ *$self->{Error} }; $self->close(); *$self->{ErrorNo} = $errno ; ${ *$self->{Error} } = $error ; return $retval; } sub error { my $self = shift ; return ${ *$self->{Error} } ; } sub errorNo { my $self = shift ; return *$self->{ErrorNo}; } sub HeaderError { my ($self) = shift; return $self->saveErrorString(undef, "Header Error: $_[0]", STATUS_ERROR); } sub TrailerError { my ($self) = shift; return $self->saveErrorString(G_ERR, "Trailer Error: $_[0]", STATUS_ERROR); } sub TruncatedHeader { my ($self) = shift; return $self->HeaderError("Truncated in $_[0] Section"); } sub TruncatedTrailer { my ($self) = shift; return $self->TrailerError("Truncated in $_[0] Section"); } sub postCheckParams { return 1; } sub checkParams { my $self = shift ; my $class = shift ; my $got = shift || IO::Compress::Base::Parameters::new(); my $Valid = { 'blocksize' => [IO::Compress::Base::Common::Parse_unsigned, 16 * 1024], 'autoclose' => [IO::Compress::Base::Common::Parse_boolean, 0], 'strict' => [IO::Compress::Base::Common::Parse_boolean, 0], 'append' => [IO::Compress::Base::Common::Parse_boolean, 0], 'prime' => [IO::Compress::Base::Common::Parse_any, undef], 'multistream' => [IO::Compress::Base::Common::Parse_boolean, 0], 'transparent' => [IO::Compress::Base::Common::Parse_any, 1], 'scan' => [IO::Compress::Base::Common::Parse_boolean, 0], 'inputlength' => [IO::Compress::Base::Common::Parse_unsigned, undef], 'binmodeout' => [IO::Compress::Base::Common::Parse_boolean, 0], #'decode' => [IO::Compress::Base::Common::Parse_any, undef], #'consumeinput' => [IO::Compress::Base::Common::Parse_boolean, 0], $self->getExtraParams(), #'Todo - Revert to ordinary file on end Z_STREAM_END'=> 0, # ContinueAfterEof } ; $Valid->{trailingdata} = [IO::Compress::Base::Common::Parse_writable_scalar, undef] if *$self->{OneShot} ; $got->parse($Valid, @_ ) or $self->croakError("${class}: " . $got->getError()) ; $self->postCheckParams($got) or $self->croakError("${class}: " . $self->error()) ; return $got; } sub _create { my $obj = shift; my $got = shift; my $append_mode = shift ; my $class = ref $obj; $obj->croakError("$class: Missing Input parameter") if ! @_ && ! $got ; my $inValue = shift ; *$obj->{OneShot} = 0 ; if (! $got) { $got = $obj->checkParams($class, undef, @_) or return undef ; } my $inType = whatIsInput($inValue, 1); $obj->ckInputParam($class, $inValue, 1) or return undef ; *$obj->{InNew} = 1; $obj->ckParams($got) or $obj->croakError("${class}: " . *$obj->{Error}); if ($inType eq 'buffer' || $inType eq 'code') { *$obj->{Buffer} = $inValue ; *$obj->{InputEvent} = $inValue if $inType eq 'code' ; } else { if ($inType eq 'handle') { *$obj->{FH} = $inValue ; *$obj->{Handle} = 1 ; # Need to rewind for Scan *$obj->{FH}->seek(0, SEEK_SET) if $got->getValue('scan'); } else { no warnings ; my $mode = '<'; $mode = '+<' if $got->getValue('scan'); *$obj->{StdIO} = ($inValue eq '-'); *$obj->{FH} = IO::File->new( "$mode $inValue" ) or return $obj->saveErrorString(undef, "cannot open file '$inValue': $!", $!) ; } *$obj->{LineNo} = $. = 0; setBinModeInput(*$obj->{FH}) ; my $buff = "" ; *$obj->{Buffer} = \$buff ; } # if ($got->getValue('decode')) { # my $want_encoding = $got->getValue('decode'); # *$obj->{Encoding} = IO::Compress::Base::Common::getEncoding($obj, $class, $want_encoding); # } # else { # *$obj->{Encoding} = undef; # } *$obj->{InputLength} = $got->parsed('inputlength') ? $got->getValue('inputlength') : undef ; *$obj->{InputLengthRemaining} = $got->getValue('inputlength'); *$obj->{BufferOffset} = 0 ; *$obj->{AutoClose} = $got->getValue('autoclose'); *$obj->{Strict} = $got->getValue('strict'); *$obj->{BlockSize} = $got->getValue('blocksize'); *$obj->{Append} = $got->getValue('append'); *$obj->{AppendOutput} = $append_mode || $got->getValue('append'); *$obj->{ConsumeInput} = $got->getValue('consumeinput'); *$obj->{Transparent} = $got->getValue('transparent'); *$obj->{MultiStream} = $got->getValue('multistream'); # TODO - move these two into RawDeflate *$obj->{Scan} = $got->getValue('scan'); *$obj->{ParseExtra} = $got->getValue('parseextra') || $got->getValue('strict') ; *$obj->{Type} = ''; *$obj->{Prime} = $got->getValue('prime') || '' ; *$obj->{Pending} = ''; *$obj->{Plain} = 0; *$obj->{PlainBytesRead} = 0; *$obj->{InflatedBytesRead} = 0; *$obj->{UnCompSize} = U64->new; *$obj->{CompSize} = U64->new; *$obj->{TotalInflatedBytesRead} = 0; *$obj->{NewStream} = 0 ; *$obj->{EventEof} = 0 ; *$obj->{ClassName} = $class ; *$obj->{Params} = $got ; if (*$obj->{ConsumeInput}) { *$obj->{InNew} = 0; *$obj->{Closed} = 0; return $obj } my $status = $obj->mkUncomp($got); return undef unless defined $status; *$obj->{InNew} = 0; *$obj->{Closed} = 0; return $obj if *$obj->{Pause} ; if ($status) { # Need to try uncompressing to catch the case # where the compressed file uncompresses to an # empty string - so eof is set immediately. my $out_buffer = ''; $status = $obj->read(\$out_buffer); if ($status < 0) { *$obj->{ReadStatus} = [ $status, $obj->error(), $obj->errorNo() ]; } $obj->ungetc($out_buffer) if length $out_buffer; } else { return undef unless *$obj->{Transparent}; $obj->clearError(); *$obj->{Type} = 'plain'; *$obj->{Plain} = 1; $obj->pushBack(*$obj->{HeaderPending}) ; } push @{ *$obj->{InfoList} }, *$obj->{Info} ; $obj->saveStatus(STATUS_OK) ; *$obj->{InNew} = 0; *$obj->{Closed} = 0; return $obj; } sub ckInputParam { my $self = shift ; my $from = shift ; my $inType = whatIsInput($_[0], $_[1]); $self->croakError("$from: input parameter not a filename, filehandle, array ref or scalar ref") if ! $inType ; # if ($inType eq 'filename' ) # { # return $self->saveErrorString(1, "$from: input filename is undef or null string", STATUS_ERROR) # if ! defined $_[0] || $_[0] eq '' ; # # if ($_[0] ne '-' && ! -e $_[0] ) # { # return $self->saveErrorString(1, # "input file '$_[0]' does not exist", STATUS_ERROR); # } # } return 1; } sub _inf { my $obj = shift ; my $class = (caller)[0] ; my $name = (caller(1))[3] ; $obj->croakError("$name: expected at least 1 parameters\n") unless @_ >= 1 ; my $input = shift ; my $haveOut = @_ ; my $output = shift ; my $x = IO::Compress::Base::Validator->new($class, *$obj->{Error}, $name, $input, $output) or return undef ; push @_, $output if $haveOut && $x->{Hash}; *$obj->{OneShot} = 1 ; my $got = $obj->checkParams($name, undef, @_) or return undef ; if ($got->parsed('trailingdata')) { # my $value = $got->valueRef('TrailingData'); # warn "TD $value "; # #$value = $$value; ## warn "TD $value $$value "; # # return retErr($obj, "Parameter 'TrailingData' not writable") # if readonly $$value ; # # if (ref $$value) # { # return retErr($obj,"Parameter 'TrailingData' not a scalar reference") # if ref $$value ne 'SCALAR' ; # # *$obj->{TrailingData} = $$value ; # } # else # { # return retErr($obj,"Parameter 'TrailingData' not a scalar") # if ref $value ne 'SCALAR' ; # # *$obj->{TrailingData} = $value ; # } *$obj->{TrailingData} = $got->getValue('trailingdata'); } *$obj->{MultiStream} = $got->getValue('multistream'); $got->setValue('multistream', 0); $x->{Got} = $got ; # if ($x->{Hash}) # { # while (my($k, $v) = each %$input) # { # $v = \$input->{$k} # unless defined $v ; # # $obj->_singleTarget($x, $k, $v, @_) # or return undef ; # } # # return keys %$input ; # } if ($x->{GlobMap}) { $x->{oneInput} = 1 ; foreach my $pair (@{ $x->{Pairs} }) { my ($from, $to) = @$pair ; $obj->_singleTarget($x, $from, $to, @_) or return undef ; } return scalar @{ $x->{Pairs} } ; } if (! $x->{oneOutput} ) { my $inFile = ($x->{inType} eq 'filenames' || $x->{inType} eq 'filename'); $x->{inType} = $inFile ? 'filename' : 'buffer'; foreach my $in ($x->{oneInput} ? $input : @$input) { my $out ; $x->{oneInput} = 1 ; $obj->_singleTarget($x, $in, $output, @_) or return undef ; } return 1 ; } # finally the 1 to 1 and n to 1 return $obj->_singleTarget($x, $input, $output, @_); croak "should not be here" ; } sub retErr { my $x = shift ; my $string = shift ; ${ $x->{Error} } = $string ; return undef ; } sub _singleTarget { my $self = shift ; my $x = shift ; my $input = shift; my $output = shift; my $buff = ''; $x->{buff} = \$buff ; my $fh ; if ($x->{outType} eq 'filename') { my $mode = '>' ; $mode = '>>' if $x->{Got}->getValue('append') ; $x->{fh} = IO::File->new( "$mode $output" ) or return retErr($x, "cannot open file '$output': $!") ; binmode $x->{fh} ; } elsif ($x->{outType} eq 'handle') { $x->{fh} = $output; binmode $x->{fh} ; if ($x->{Got}->getValue('append')) { seek($x->{fh}, 0, SEEK_END) or return retErr($x, "Cannot seek to end of output filehandle: $!") ; } } elsif ($x->{outType} eq 'buffer' ) { $$output = '' unless $x->{Got}->getValue('append'); $x->{buff} = $output ; } if ($x->{oneInput}) { defined $self->_rd2($x, $input, $output) or return undef; } else { for my $element ( ($x->{inType} eq 'hash') ? keys %$input : @$input) { defined $self->_rd2($x, $element, $output) or return undef ; } } if ( ($x->{outType} eq 'filename' && $output ne '-') || ($x->{outType} eq 'handle' && $x->{Got}->getValue('autoclose'))) { $x->{fh}->close() or return retErr($x, $!); delete $x->{fh}; } return 1 ; } sub _rd2 { my $self = shift ; my $x = shift ; my $input = shift; my $output = shift; my $z = IO::Compress::Base::Common::createSelfTiedObject($x->{Class}, *$self->{Error}); $z->_create($x->{Got}, 1, $input, @_) or return undef ; my $status ; my $fh = $x->{fh}; while (1) { while (($status = $z->read($x->{buff})) > 0) { if ($fh) { local $\; print $fh ${ $x->{buff} } or return $z->saveErrorString(undef, "Error writing to output file: $!", $!); ${ $x->{buff} } = '' ; } } if (! $x->{oneOutput} ) { my $ot = $x->{outType} ; if ($ot eq 'array') { push @$output, $x->{buff} } elsif ($ot eq 'hash') { $output->{$input} = $x->{buff} } my $buff = ''; $x->{buff} = \$buff; } last if $status < 0 || $z->smartEof(); last unless *$self->{MultiStream}; $status = $z->nextStream(); last unless $status == 1 ; } return $z->closeError(undef) if $status < 0 ; ${ *$self->{TrailingData} } = $z->trailingData() if defined *$self->{TrailingData} ; $z->close() or return undef ; return 1 ; } sub TIEHANDLE { return $_[0] if ref($_[0]); die "OOPS\n" ; } sub UNTIE { my $self = shift ; } sub getHeaderInfo { my $self = shift ; wantarray ? @{ *$self->{InfoList} } : *$self->{Info}; } sub readBlock { my $self = shift ; my $buff = shift ; my $size = shift ; if (defined *$self->{CompressedInputLength}) { if (*$self->{CompressedInputLengthRemaining} == 0) { delete *$self->{CompressedInputLength}; *$self->{CompressedInputLengthDone} = 1; return STATUS_OK ; } $size = List::Util::min($size, *$self->{CompressedInputLengthRemaining} ); *$self->{CompressedInputLengthRemaining} -= $size ; } my $status = $self->smartRead($buff, $size) ; return $self->saveErrorString(STATUS_ERROR, "Error Reading Data: $!", $!) if $status == STATUS_ERROR ; if ($status == 0 ) { *$self->{Closed} = 1 ; *$self->{EndStream} = 1 ; return $self->saveErrorString(STATUS_ERROR, "unexpected end of file", STATUS_ERROR); } return STATUS_OK; } sub postBlockChk { return STATUS_OK; } sub _raw_read { # return codes # >0 - ok, number of bytes read # =0 - ok, eof # <0 - not ok my $self = shift ; return G_EOF if *$self->{Closed} ; return G_EOF if *$self->{EndStream} ; my $buffer = shift ; my $scan_mode = shift ; if (*$self->{Plain}) { my $tmp_buff ; my $len = $self->smartRead(\$tmp_buff, *$self->{BlockSize}) ; return $self->saveErrorString(G_ERR, "Error reading data: $!", $!) if $len == STATUS_ERROR ; if ($len == 0 ) { *$self->{EndStream} = 1 ; } else { *$self->{PlainBytesRead} += $len ; $$buffer .= $tmp_buff; } return $len ; } if (*$self->{NewStream}) { $self->gotoNextStream() > 0 or return G_ERR; # For the headers that actually uncompressed data, put the # uncompressed data into the output buffer. $$buffer .= *$self->{Pending} ; my $len = length *$self->{Pending} ; *$self->{Pending} = ''; return $len; } my $temp_buf = ''; my $outSize = 0; my $status = $self->readBlock(\$temp_buf, *$self->{BlockSize}, $outSize) ; return G_ERR if $status == STATUS_ERROR ; my $buf_len = 0; if ($status == STATUS_OK) { my $beforeC_len = length $temp_buf; my $before_len = defined $$buffer ? length $$buffer : 0 ; $status = *$self->{Uncomp}->uncompr(\$temp_buf, $buffer, defined *$self->{CompressedInputLengthDone} || $self->smartEof(), $outSize); # Remember the input buffer if it wasn't consumed completely $self->pushBack($temp_buf) if *$self->{Uncomp}{ConsumesInput}; return $self->saveErrorString(G_ERR, *$self->{Uncomp}{Error}, *$self->{Uncomp}{ErrorNo}) if $self->saveStatus($status) == STATUS_ERROR; $self->postBlockChk($buffer, $before_len) == STATUS_OK or return G_ERR; $buf_len = defined $$buffer ? length($$buffer) - $before_len : 0; *$self->{CompSize}->add($beforeC_len - length $temp_buf) ; *$self->{InflatedBytesRead} += $buf_len ; *$self->{TotalInflatedBytesRead} += $buf_len ; *$self->{UnCompSize}->add($buf_len) ; $self->filterUncompressed($buffer, $before_len); # if (*$self->{Encoding}) { # use Encode ; # *$self->{PendingDecode} .= substr($$buffer, $before_len) ; # my $got = *$self->{Encoding}->decode(*$self->{PendingDecode}, Encode::FB_QUIET) ; # substr($$buffer, $before_len) = $got; # } } if ($status == STATUS_ENDSTREAM) { *$self->{EndStream} = 1 ; my $trailer; my $trailer_size = *$self->{Info}{TrailerLength} ; my $got = 0; if (*$self->{Info}{TrailerLength}) { $got = $self->smartRead(\$trailer, $trailer_size) ; } if ($got == $trailer_size) { $self->chkTrailer($trailer) == STATUS_OK or return G_ERR; } else { return $self->TrailerError("trailer truncated. Expected " . "$trailer_size bytes, got $got") if *$self->{Strict}; $self->pushBack($trailer) ; } # TODO - if want file pointer, do it here if (! $self->smartEof()) { *$self->{NewStream} = 1 ; if (*$self->{MultiStream}) { *$self->{EndStream} = 0 ; return $buf_len ; } } } # return the number of uncompressed bytes read return $buf_len ; } sub reset { my $self = shift ; return *$self->{Uncomp}->reset(); } sub filterUncompressed { } #sub isEndStream #{ # my $self = shift ; # return *$self->{NewStream} || # *$self->{EndStream} ; #} sub nextStream { my $self = shift ; # An uncompressed file cannot have a next stream, so # return immediately. return 0 if *$self->{Plain} ; my $status = $self->gotoNextStream(); $status == 1 or return $status ; *$self->{Pending} = '' if $self !~ /IO::Uncompress::RawInflate/ && ! *$self->{MultiStream}; *$self->{TotalInflatedBytesRead} = 0 ; *$self->{LineNo} = $. = 0; return 1; } sub gotoNextStream { my $self = shift ; if (! *$self->{NewStream}) { my $status = 1; my $buffer ; # TODO - make this more efficient if know the offset for the end of # the stream and seekable $status = $self->read($buffer) while $status > 0 ; return $status if $status < 0; } *$self->{NewStream} = 0 ; *$self->{EndStream} = 0 ; *$self->{CompressedInputLengthDone} = undef ; *$self->{CompressedInputLength} = undef ; $self->reset(); *$self->{UnCompSize}->reset(); *$self->{CompSize}->reset(); my $magic = $self->ckMagic(); if ( ! defined $magic) { if (! *$self->{Transparent} || $self->eof()) { *$self->{EndStream} = 1 ; return 0; } # Not EOF, so Transparent mode kicks in now for trailing data # Reset member name in case anyone calls getHeaderInfo()->{Name} *$self->{Info} = { Name => undef, Type => 'plain' }; $self->clearError(); *$self->{Type} = 'plain'; *$self->{Plain} = 1; $self->pushBack(*$self->{HeaderPending}) ; } else { *$self->{Info} = $self->readHeader($magic); if ( ! defined *$self->{Info} ) { *$self->{EndStream} = 1 ; return -1; } } push @{ *$self->{InfoList} }, *$self->{Info} ; return 1; } sub streamCount { my $self = shift ; return 1 if ! defined *$self->{InfoList}; return scalar @{ *$self->{InfoList} } ; } sub read { # return codes # >0 - ok, number of bytes read # =0 - ok, eof # <0 - not ok my $self = shift ; if (defined *$self->{ReadStatus} ) { my $status = *$self->{ReadStatus}[0]; $self->saveErrorString( @{ *$self->{ReadStatus} } ); delete *$self->{ReadStatus} ; return $status ; } return G_EOF if *$self->{Closed} ; my $buffer ; if (ref $_[0] ) { $self->croakError(*$self->{ClassName} . "::read: buffer parameter is read-only") if Scalar::Util::readonly(${ $_[0] }); $self->croakError(*$self->{ClassName} . "::read: not a scalar reference $_[0]" ) unless ref $_[0] eq 'SCALAR' ; $buffer = $_[0] ; } else { $self->croakError(*$self->{ClassName} . "::read: buffer parameter is read-only") if Scalar::Util::readonly($_[0]); $buffer = \$_[0] ; } my $length = $_[1] ; my $offset = $_[2] || 0; if (! *$self->{AppendOutput}) { if (! $offset) { $$buffer = '' ; } else { if ($offset > length($$buffer)) { $$buffer .= "\x00" x ($offset - length($$buffer)); } else { substr($$buffer, $offset) = ''; } } } elsif (! defined $$buffer) { $$buffer = '' ; } return G_EOF if !length *$self->{Pending} && *$self->{EndStream} ; # the core read will return 0 if asked for 0 bytes return 0 if defined $length && $length == 0 ; $length = $length || 0; $self->croakError(*$self->{ClassName} . "::read: length parameter is negative") if $length < 0 ; # Short-circuit if this is a simple read, with no length # or offset specified. unless ( $length || $offset) { if (length *$self->{Pending}) { $$buffer .= *$self->{Pending} ; my $len = length *$self->{Pending}; *$self->{Pending} = '' ; return $len ; } else { my $len = 0; $len = $self->_raw_read($buffer) while ! *$self->{EndStream} && $len == 0 ; return $len ; } } # Need to jump through more hoops - either length or offset # or both are specified. my $out_buffer = *$self->{Pending} ; *$self->{Pending} = ''; while (! *$self->{EndStream} && length($out_buffer) < $length) { my $buf_len = $self->_raw_read(\$out_buffer); return $buf_len if $buf_len < 0 ; } $length = length $out_buffer if length($out_buffer) < $length ; return 0 if $length == 0 ; $$buffer = '' if ! defined $$buffer; $offset = length $$buffer if *$self->{AppendOutput} ; *$self->{Pending} = $out_buffer; $out_buffer = \*$self->{Pending} ; substr($$buffer, $offset) = substr($$out_buffer, 0, $length) ; substr($$out_buffer, 0, $length) = '' ; return $length ; } sub _getline { my $self = shift ; my $status = 0 ; # Slurp Mode if ( ! defined $/ ) { my $data ; 1 while ($status = $self->read($data)) > 0 ; return ($status, \$data); } # Record Mode if ( ref $/ eq 'SCALAR' && ${$/} =~ /^\d+$/ && ${$/} > 0) { my $reclen = ${$/} ; my $data ; $status = $self->read($data, $reclen) ; return ($status, \$data); } # Paragraph Mode if ( ! length $/ ) { my $paragraph ; while (($status = $self->read($paragraph)) > 0 ) { if ($paragraph =~ s/^(.*?\n\n+)//s) { *$self->{Pending} = $paragraph ; my $par = $1 ; return (1, \$par); } } return ($status, \$paragraph); } # $/ isn't empty, or a reference, so it's Line Mode. { my $line ; my $p = \*$self->{Pending} ; while (($status = $self->read($line)) > 0 ) { my $offset = index($line, $/); if ($offset >= 0) { my $l = substr($line, 0, $offset + length $/ ); substr($line, 0, $offset + length $/) = ''; $$p = $line; return (1, \$l); } } return ($status, \$line); } } sub getline { my $self = shift; if (defined *$self->{ReadStatus} ) { $self->saveErrorString( @{ *$self->{ReadStatus} } ); delete *$self->{ReadStatus} ; return undef; } return undef if *$self->{Closed} || (!length *$self->{Pending} && *$self->{EndStream}) ; my $current_append = *$self->{AppendOutput} ; *$self->{AppendOutput} = 1; my ($status, $lineref) = $self->_getline(); *$self->{AppendOutput} = $current_append; return undef if $status < 0 || length $$lineref == 0 ; $. = ++ *$self->{LineNo} ; return $$lineref ; } sub getlines { my $self = shift; $self->croakError(*$self->{ClassName} . "::getlines: called in scalar context\n") unless wantarray; my($line, @lines); push(@lines, $line) while defined($line = $self->getline); return @lines; } sub READLINE { goto &getlines if wantarray; goto &getline; } sub getc { my $self = shift; my $buf; return $buf if $self->read($buf, 1); return undef; } sub ungetc { my $self = shift; *$self->{Pending} = "" unless defined *$self->{Pending} ; *$self->{Pending} = $_[0] . *$self->{Pending} ; } sub trailingData { my $self = shift ; if (defined *$self->{FH} || defined *$self->{InputEvent} ) { return *$self->{Prime} ; } else { my $buf = *$self->{Buffer} ; my $offset = *$self->{BufferOffset} ; return substr($$buf, $offset) ; } } sub eof { my $self = shift ; return (*$self->{Closed} || (!length *$self->{Pending} && ( $self->smartEof() || *$self->{EndStream}))) ; } sub tell { my $self = shift ; my $in ; if (*$self->{Plain}) { $in = *$self->{PlainBytesRead} ; } else { $in = *$self->{TotalInflatedBytesRead} ; } my $pending = length *$self->{Pending} ; return 0 if $pending > $in ; return $in - $pending ; } sub close { # todo - what to do if close is called before the end of the gzip file # do we remember any trailing data? my $self = shift ; return 1 if *$self->{Closed} ; untie *$self if $] >= 5.008 ; my $status = 1 ; if (defined *$self->{FH}) { if ((! *$self->{Handle} || *$self->{AutoClose}) && ! *$self->{StdIO}) { local $.; $! = 0 ; $status = *$self->{FH}->close(); return $self->saveErrorString(0, $!, $!) if !*$self->{InNew} && $self->saveStatus($!) != 0 ; } delete *$self->{FH} ; $! = 0 ; } *$self->{Closed} = 1 ; return 1; } sub DESTROY { my $self = shift ; local ($., $@, $!, $^E, $?); $self->close() ; } sub seek { my $self = shift ; my $position = shift; my $whence = shift ; my $here = $self->tell() ; my $target = 0 ; if ($whence == SEEK_SET) { $target = $position ; } elsif ($whence == SEEK_CUR) { $target = $here + $position ; } elsif ($whence == SEEK_END) { $target = $position ; $self->croakError(*$self->{ClassName} . "::seek: SEEK_END not allowed") ; } else { $self->croakError(*$self->{ClassName} ."::seek: unknown value, $whence, for whence parameter"); } # short circuit if seeking to current offset if ($target == $here) { # On ordinary filehandles, seeking to the current # position also clears the EOF condition, so we # emulate this behavior locally while simultaneously # cascading it to the underlying filehandle if (*$self->{Plain}) { *$self->{EndStream} = 0; seek(*$self->{FH},0,1) if *$self->{FH}; } return 1; } # Outlaw any attempt to seek backwards $self->croakError( *$self->{ClassName} ."::seek: cannot seek backwards") if $target < $here ; # Walk the file to the new offset my $offset = $target - $here ; my $got; while (($got = $self->read(my $buffer, List::Util::min($offset, *$self->{BlockSize})) ) > 0) { $offset -= $got; last if $offset == 0 ; } $here = $self->tell() ; return $offset == 0 ? 1 : 0 ; } sub fileno { my $self = shift ; return defined *$self->{FH} ? fileno *$self->{FH} : undef ; } sub binmode { 1; # my $self = shift ; # return defined *$self->{FH} # ? binmode *$self->{FH} # : 1 ; } sub opened { my $self = shift ; return ! *$self->{Closed} ; } sub autoflush { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->autoflush(@_) : undef ; } sub input_line_number { my $self = shift ; my $last = *$self->{LineNo}; $. = *$self->{LineNo} = $_[1] if @_ ; return $last; } sub _notAvailable { my $name = shift ; return sub { croak "$name Not Available: File opened only for intput" ; } ; } { no warnings 'once'; *BINMODE = \&binmode; *SEEK = \&seek; *READ = \&read; *sysread = \&read; *TELL = \&tell; *EOF = \&eof; *FILENO = \&fileno; *CLOSE = \&close; *print = _notAvailable('print'); *PRINT = _notAvailable('print'); *printf = _notAvailable('printf'); *PRINTF = _notAvailable('printf'); *write = _notAvailable('write'); *WRITE = _notAvailable('write'); #*sysread = \&read; #*syswrite = \&_notAvailable; } package IO::Uncompress::Base ; 1 ; __END__ =head1 NAME IO::Uncompress::Base - Base Class for IO::Uncompress modules =head1 SYNOPSIS use IO::Uncompress::Base ; =head1 DESCRIPTION This module is not intended for direct use in application code. Its sole purpose is to be sub-classed by IO::Uncompress modules. =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005-2022 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILE 74cf4d1a/IO/Uncompress/Gunzip.pm} package IO::Uncompress::Gunzip ; require 5.006 ; # for RFC1952 use strict ; use warnings; use bytes; use IO::Uncompress::RawInflate 2.106 ; use Compress::Raw::Zlib 2.103 () ; use IO::Compress::Base::Common 2.106 qw(:Status ); use IO::Compress::Gzip::Constants 2.106 ; use IO::Compress::Zlib::Extra 2.106 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $GunzipError); @ISA = qw(IO::Uncompress::RawInflate Exporter); @EXPORT_OK = qw( $GunzipError gunzip ); %EXPORT_TAGS = %IO::Uncompress::RawInflate::DEFLATE_CONSTANTS ; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); $GunzipError = ''; $VERSION = '2.106'; sub new { my $class = shift ; $GunzipError = ''; my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$GunzipError); $obj->_create(undef, 0, @_); } sub gunzip { my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$GunzipError); return $obj->_inf(@_) ; } sub getExtraParams { return ( 'parseextra' => [IO::Compress::Base::Common::Parse_boolean, 0] ) ; } sub ckParams { my $self = shift ; my $got = shift ; # gunzip always needs crc32 $got->setValue('crc32' => 1); return 1; } sub ckMagic { my $self = shift; my $magic ; $self->smartReadExact(\$magic, GZIP_ID_SIZE); *$self->{HeaderPending} = $magic ; return $self->HeaderError("Minimum header size is " . GZIP_MIN_HEADER_SIZE . " bytes") if length $magic != GZIP_ID_SIZE ; return $self->HeaderError("Bad Magic") if ! isGzipMagic($magic) ; *$self->{Type} = 'rfc1952'; return $magic ; } sub readHeader { my $self = shift; my $magic = shift; return $self->_readGzipHeader($magic); } sub chkTrailer { my $self = shift; my $trailer = shift; # Check CRC & ISIZE my ($CRC32, $ISIZE) = unpack("V V", $trailer) ; *$self->{Info}{CRC32} = $CRC32; *$self->{Info}{ISIZE} = $ISIZE; if (*$self->{Strict}) { return $self->TrailerError("CRC mismatch") if $CRC32 != *$self->{Uncomp}->crc32() ; my $exp_isize = *$self->{UnCompSize}->get32bit(); return $self->TrailerError("ISIZE mismatch. Got $ISIZE" . ", expected $exp_isize") if $ISIZE != $exp_isize ; } return STATUS_OK; } sub isGzipMagic { my $buffer = shift ; return 0 if length $buffer < GZIP_ID_SIZE ; my ($id1, $id2) = unpack("C C", $buffer) ; return $id1 == GZIP_ID1 && $id2 == GZIP_ID2 ; } sub _readFullGzipHeader($) { my ($self) = @_ ; my $magic = '' ; $self->smartReadExact(\$magic, GZIP_ID_SIZE); *$self->{HeaderPending} = $magic ; return $self->HeaderError("Minimum header size is " . GZIP_MIN_HEADER_SIZE . " bytes") if length $magic != GZIP_ID_SIZE ; return $self->HeaderError("Bad Magic") if ! isGzipMagic($magic) ; my $status = $self->_readGzipHeader($magic); delete *$self->{Transparent} if ! defined $status ; return $status ; } sub _readGzipHeader($) { my ($self, $magic) = @_ ; my ($HeaderCRC) ; my ($buffer) = '' ; $self->smartReadExact(\$buffer, GZIP_MIN_HEADER_SIZE - GZIP_ID_SIZE) or return $self->HeaderError("Minimum header size is " . GZIP_MIN_HEADER_SIZE . " bytes") ; my $keep = $magic . $buffer ; *$self->{HeaderPending} = $keep ; # now split out the various parts my ($cm, $flag, $mtime, $xfl, $os) = unpack("C C V C C", $buffer) ; $cm == GZIP_CM_DEFLATED or return $self->HeaderError("Not Deflate (CM is $cm)") ; # check for use of reserved bits return $self->HeaderError("Use of Reserved Bits in FLG field.") if $flag & GZIP_FLG_RESERVED ; my $EXTRA ; my @EXTRA = () ; if ($flag & GZIP_FLG_FEXTRA) { $EXTRA = "" ; $self->smartReadExact(\$buffer, GZIP_FEXTRA_HEADER_SIZE) or return $self->TruncatedHeader("FEXTRA Length") ; my ($XLEN) = unpack("v", $buffer) ; $self->smartReadExact(\$EXTRA, $XLEN) or return $self->TruncatedHeader("FEXTRA Body"); $keep .= $buffer . $EXTRA ; if ($XLEN && *$self->{'ParseExtra'}) { my $bad = IO::Compress::Zlib::Extra::parseRawExtra($EXTRA, \@EXTRA, 1, 1); return $self->HeaderError($bad) if defined $bad; } } my $origname ; if ($flag & GZIP_FLG_FNAME) { $origname = "" ; while (1) { $self->smartReadExact(\$buffer, 1) or return $self->TruncatedHeader("FNAME"); last if $buffer eq GZIP_NULL_BYTE ; $origname .= $buffer } $keep .= $origname . GZIP_NULL_BYTE ; return $self->HeaderError("Non ISO 8859-1 Character found in Name") if *$self->{Strict} && $origname =~ /$GZIP_FNAME_INVALID_CHAR_RE/o ; } my $comment ; if ($flag & GZIP_FLG_FCOMMENT) { $comment = ""; while (1) { $self->smartReadExact(\$buffer, 1) or return $self->TruncatedHeader("FCOMMENT"); last if $buffer eq GZIP_NULL_BYTE ; $comment .= $buffer } $keep .= $comment . GZIP_NULL_BYTE ; return $self->HeaderError("Non ISO 8859-1 Character found in Comment") if *$self->{Strict} && $comment =~ /$GZIP_FCOMMENT_INVALID_CHAR_RE/o ; } if ($flag & GZIP_FLG_FHCRC) { $self->smartReadExact(\$buffer, GZIP_FHCRC_SIZE) or return $self->TruncatedHeader("FHCRC"); $HeaderCRC = unpack("v", $buffer) ; my $crc16 = Compress::Raw::Zlib::crc32($keep) & 0xFF ; return $self->HeaderError("CRC16 mismatch.") if *$self->{Strict} && $crc16 != $HeaderCRC; $keep .= $buffer ; } # Assume compression method is deflated for xfl tests #if ($xfl) { #} *$self->{Type} = 'rfc1952'; return { 'Type' => 'rfc1952', 'FingerprintLength' => 2, 'HeaderLength' => length $keep, 'TrailerLength' => GZIP_TRAILER_SIZE, 'Header' => $keep, 'isMinimalHeader' => $keep eq GZIP_MINIMUM_HEADER ? 1 : 0, 'MethodID' => $cm, 'MethodName' => $cm == GZIP_CM_DEFLATED ? "Deflated" : "Unknown" , 'TextFlag' => $flag & GZIP_FLG_FTEXT ? 1 : 0, 'HeaderCRCFlag' => $flag & GZIP_FLG_FHCRC ? 1 : 0, 'NameFlag' => $flag & GZIP_FLG_FNAME ? 1 : 0, 'CommentFlag' => $flag & GZIP_FLG_FCOMMENT ? 1 : 0, 'ExtraFlag' => $flag & GZIP_FLG_FEXTRA ? 1 : 0, 'Name' => $origname, 'Comment' => $comment, 'Time' => $mtime, 'OsID' => $os, 'OsName' => defined $GZIP_OS_Names{$os} ? $GZIP_OS_Names{$os} : "Unknown", 'HeaderCRC' => $HeaderCRC, 'Flags' => $flag, 'ExtraFlags' => $xfl, 'ExtraFieldRaw' => $EXTRA, 'ExtraField' => [ @EXTRA ], #'CompSize'=> $compsize, #'CRC32'=> $CRC32, #'OrigSize'=> $ISIZE, } } 1; __END__ =head1 NAME IO::Uncompress::Gunzip - Read RFC 1952 files/buffers =head1 SYNOPSIS use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ; my $status = gunzip $input => $output [,OPTS] or die "gunzip failed: $GunzipError\n"; my $z = IO::Uncompress::Gunzip->new( $input [OPTS] ) or die "gunzip failed: $GunzipError\n"; $status = $z->read($buffer) $status = $z->read($buffer, $length) $status = $z->read($buffer, $length, $offset) $line = $z->getline() $char = $z->getc() $char = $z->ungetc() $char = $z->opened() $status = $z->inflateSync() $data = $z->trailingData() $status = $z->nextStream() $data = $z->getHeaderInfo() $z->tell() $z->seek($position, $whence) $z->binmode() $z->fileno() $z->eof() $z->close() $GunzipError ; # IO::File mode <$z> read($z, $buffer); read($z, $buffer, $length); read($z, $buffer, $length, $offset); tell($z) seek($z, $position, $whence) binmode($z) fileno($z) eof($z) close($z) =head1 DESCRIPTION This module provides a Perl interface that allows the reading of files/buffers that conform to RFC 1952. For writing RFC 1952 files/buffers, see the companion module IO::Compress::Gzip. =head1 Functional Interface A top-level function, C, is provided to carry out "one-shot" uncompression between buffers and/or files. For finer control over the uncompression process, see the L section. use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ; gunzip $input_filename_or_reference => $output_filename_or_reference [,OPTS] or die "gunzip failed: $GunzipError\n"; The functional interface needs Perl5.005 or better. =head2 gunzip $input_filename_or_reference => $output_filename_or_reference [, OPTS] C expects at least two parameters, C<$input_filename_or_reference> and C<$output_filename_or_reference> and zero or more optional parameters (see L) =head3 The C<$input_filename_or_reference> parameter The parameter, C<$input_filename_or_reference>, is used to define the source of the compressed data. It can take one of the following forms: =over 5 =item A filename If the C<$input_filename_or_reference> parameter is a simple scalar, it is assumed to be a filename. This file will be opened for reading and the input data will be read from it. =item A filehandle If the C<$input_filename_or_reference> parameter is a filehandle, the input data will be read from it. The string '-' can be used as an alias for standard input. =item A scalar reference If C<$input_filename_or_reference> is a scalar reference, the input data will be read from C<$$input_filename_or_reference>. =item An array reference If C<$input_filename_or_reference> is an array reference, each element in the array must be a filename. The input data will be read from each file in turn. The complete array will be walked to ensure that it only contains valid filenames before any data is uncompressed. =item An Input FileGlob string If C<$input_filename_or_reference> is a string that is delimited by the characters "<" and ">" C will assume that it is an I. The input is the list of files that match the fileglob. See L for more details. =back If the C<$input_filename_or_reference> parameter is any other type, C will be returned. =head3 The C<$output_filename_or_reference> parameter The parameter C<$output_filename_or_reference> is used to control the destination of the uncompressed data. This parameter can take one of these forms. =over 5 =item A filename If the C<$output_filename_or_reference> parameter is a simple scalar, it is assumed to be a filename. This file will be opened for writing and the uncompressed data will be written to it. =item A filehandle If the C<$output_filename_or_reference> parameter is a filehandle, the uncompressed data will be written to it. The string '-' can be used as an alias for standard output. =item A scalar reference If C<$output_filename_or_reference> is a scalar reference, the uncompressed data will be stored in C<$$output_filename_or_reference>. =item An Array Reference If C<$output_filename_or_reference> is an array reference, the uncompressed data will be pushed onto the array. =item An Output FileGlob If C<$output_filename_or_reference> is a string that is delimited by the characters "<" and ">" C will assume that it is an I. The output is the list of files that match the fileglob. When C<$output_filename_or_reference> is an fileglob string, C<$input_filename_or_reference> must also be a fileglob string. Anything else is an error. See L for more details. =back If the C<$output_filename_or_reference> parameter is any other type, C will be returned. =head2 Notes When C<$input_filename_or_reference> maps to multiple compressed files/buffers and C<$output_filename_or_reference> is a single file/buffer, after uncompression C<$output_filename_or_reference> will contain a concatenation of all the uncompressed data from each of the input files/buffers. =head2 Optional Parameters The optional parameters for the one-shot function C are (for the most part) identical to those used with the OO interface defined in the L section. The exceptions are listed below =over 5 =item C<< AutoClose => 0|1 >> This option applies to any input or output data streams to C that are filehandles. If C is specified, and the value is true, it will result in all input and/or output filehandles being closed once C has completed. This parameter defaults to 0. =item C<< BinModeOut => 0|1 >> This option is now a no-op. All files will be written in binmode. =item C<< Append => 0|1 >> The behaviour of this option is dependent on the type of output data stream. =over 5 =item * A Buffer If C is enabled, all uncompressed data will be append to the end of the output buffer. Otherwise the output buffer will be cleared before any uncompressed data is written to it. =item * A Filename If C is enabled, the file will be opened in append mode. Otherwise the contents of the file, if any, will be truncated before any uncompressed data is written to it. =item * A Filehandle If C is enabled, the filehandle will be positioned to the end of the file via a call to C before any uncompressed data is written to it. Otherwise the file pointer will not be moved. =back When C is specified, and set to true, it will I all uncompressed data to the output data stream. So when the output is a filehandle it will carry out a seek to the eof before writing any uncompressed data. If the output is a filename, it will be opened for appending. If the output is a buffer, all uncompressed data will be appended to the existing buffer. Conversely when C is not specified, or it is present and is set to false, it will operate as follows. When the output is a filename, it will truncate the contents of the file before writing any uncompressed data. If the output is a filehandle its position will not be changed. If the output is a buffer, it will be wiped before any uncompressed data is output. Defaults to 0. =item C<< MultiStream => 0|1 >> If the input file/buffer contains multiple compressed data streams, this option will uncompress the whole lot as a single data stream. Defaults to 0. =item C<< TrailingData => $scalar >> Returns the data, if any, that is present immediately after the compressed data stream once uncompression is complete. This option can be used when there is useful information immediately following the compressed data stream, and you don't know the length of the compressed data stream. If the input is a buffer, C will return everything from the end of the compressed data stream to the end of the buffer. If the input is a filehandle, C will return the data that is left in the filehandle input buffer once the end of the compressed data stream has been reached. You can then use the filehandle to read the rest of the input file. Don't bother using C if the input is a filename. If you know the length of the compressed data stream before you start uncompressing, you can avoid having to use C by setting the C option. =back =head2 Examples To read the contents of the file C and write the uncompressed data to the file C. use strict ; use warnings ; use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ; my $input = "file1.txt.gz"; my $output = "file1.txt"; gunzip $input => $output or die "gunzip failed: $GunzipError\n"; To read from an existing Perl filehandle, C<$input>, and write the uncompressed data to a buffer, C<$buffer>. use strict ; use warnings ; use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ; use IO::File ; my $input = IO::File->new( " \$buffer or die "gunzip failed: $GunzipError\n"; To uncompress all files in the directory "/my/home" that match "*.txt.gz" and store the compressed data in the same directory use strict ; use warnings ; use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ; gunzip '' => '' or die "gunzip failed: $GunzipError\n"; and if you want to compress each file one at a time, this will do the trick use strict ; use warnings ; use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ; for my $input ( glob "/my/home/*.txt.gz" ) { my $output = $input; $output =~ s/.gz// ; gunzip $input => $output or die "Error compressing '$input': $GunzipError\n"; } =head1 OO Interface =head2 Constructor The format of the constructor for IO::Uncompress::Gunzip is shown below my $z = IO::Uncompress::Gunzip->new( $input [OPTS] ) or die "IO::Uncompress::Gunzip failed: $GunzipError\n"; Returns an C object on success and undef on failure. The variable C<$GunzipError> will contain an error message on failure. If you are running Perl 5.005 or better the object, C<$z>, returned from IO::Uncompress::Gunzip can be used exactly like an L filehandle. This means that all normal input file operations can be carried out with C<$z>. For example, to read a line from a compressed file/buffer you can use either of these forms $line = $z->getline(); $line = <$z>; The mandatory parameter C<$input> is used to determine the source of the compressed data. This parameter can take one of three forms. =over 5 =item A filename If the C<$input> parameter is a scalar, it is assumed to be a filename. This file will be opened for reading and the compressed data will be read from it. =item A filehandle If the C<$input> parameter is a filehandle, the compressed data will be read from it. The string '-' can be used as an alias for standard input. =item A scalar reference If C<$input> is a scalar reference, the compressed data will be read from C<$$input>. =back =head2 Constructor Options The option names defined below are case insensitive and can be optionally prefixed by a '-'. So all of the following are valid -AutoClose -autoclose AUTOCLOSE autoclose OPTS is a combination of the following options: =over 5 =item C<< AutoClose => 0|1 >> This option is only valid when the C<$input> parameter is a filehandle. If specified, and the value is true, it will result in the file being closed once either the C method is called or the IO::Uncompress::Gunzip object is destroyed. This parameter defaults to 0. =item C<< MultiStream => 0|1 >> Allows multiple concatenated compressed streams to be treated as a single compressed stream. Decompression will stop once either the end of the file/buffer is reached, an error is encountered (premature eof, corrupt compressed data) or the end of a stream is not immediately followed by the start of another stream. This parameter defaults to 0. =item C<< Prime => $string >> This option will uncompress the contents of C<$string> before processing the input file/buffer. This option can be useful when the compressed data is embedded in another file/data structure and it is not possible to work out where the compressed data begins without having to read the first few bytes. If this is the case, the uncompression can be I with these bytes using this option. =item C<< Transparent => 0|1 >> If this option is set and the input file/buffer is not compressed data, the module will allow reading of it anyway. In addition, if the input file/buffer does contain compressed data and there is non-compressed data immediately following it, setting this option will make this module treat the whole file/buffer as a single data stream. This option defaults to 1. =item C<< BlockSize => $num >> When reading the compressed input data, IO::Uncompress::Gunzip will read it in blocks of C<$num> bytes. This option defaults to 4096. =item C<< InputLength => $size >> When present this option will limit the number of compressed bytes read from the input file/buffer to C<$size>. This option can be used in the situation where there is useful data directly after the compressed data stream and you know beforehand the exact length of the compressed data stream. This option is mostly used when reading from a filehandle, in which case the file pointer will be left pointing to the first byte directly after the compressed data stream. This option defaults to off. =item C<< Append => 0|1 >> This option controls what the C method does with uncompressed data. If set to 1, all uncompressed data will be appended to the output parameter of the C method. If set to 0, the contents of the output parameter of the C method will be overwritten by the uncompressed data. Defaults to 0. =item C<< Strict => 0|1 >> This option controls whether the extra checks defined below are used when carrying out the decompression. When Strict is on, the extra tests are carried out, when Strict is off they are not. The default for this option is off. =over 5 =item 1 If the FHCRC bit is set in the gzip FLG header byte, the CRC16 bytes in the header must match the crc16 value of the gzip header actually read. =item 2 If the gzip header contains a name field (FNAME) it consists solely of ISO 8859-1 characters. =item 3 If the gzip header contains a comment field (FCOMMENT) it consists solely of ISO 8859-1 characters plus line-feed. =item 4 If the gzip FEXTRA header field is present it must conform to the sub-field structure as defined in RFC 1952. =item 5 The CRC32 and ISIZE trailer fields must be present. =item 6 The value of the CRC32 field read must match the crc32 value of the uncompressed data actually contained in the gzip file. =item 7 The value of the ISIZE fields read must match the length of the uncompressed data actually read from the file. =back =item C<< ParseExtra => 0|1 >> If the gzip FEXTRA header field is present and this option is set, it will force the module to check that it conforms to the sub-field structure as defined in RFC 1952. If the C is on it will automatically enable this option. Defaults to 0. =back =head2 Examples TODO =head1 Methods =head2 read Usage is $status = $z->read($buffer) Reads a block of compressed data (the size of the compressed block is determined by the C option in the constructor), uncompresses it and writes any uncompressed data into C<$buffer>. If the C parameter is set in the constructor, the uncompressed data will be appended to the C<$buffer> parameter. Otherwise C<$buffer> will be overwritten. Returns the number of uncompressed bytes written to C<$buffer>, zero if eof or a negative number on error. =head2 read Usage is $status = $z->read($buffer, $length) $status = $z->read($buffer, $length, $offset) $status = read($z, $buffer, $length) $status = read($z, $buffer, $length, $offset) Attempt to read C<$length> bytes of uncompressed data into C<$buffer>. The main difference between this form of the C method and the previous one, is that this one will attempt to return I C<$length> bytes. The only circumstances that this function will not is if end-of-file or an IO error is encountered. Returns the number of uncompressed bytes written to C<$buffer>, zero if eof or a negative number on error. =head2 getline Usage is $line = $z->getline() $line = <$z> Reads a single line. This method fully supports the use of the variable C<$/> (or C<$INPUT_RECORD_SEPARATOR> or C<$RS> when C is in use) to determine what constitutes an end of line. Paragraph mode, record mode and file slurp mode are all supported. =head2 getc Usage is $char = $z->getc() Read a single character. =head2 ungetc Usage is $char = $z->ungetc($string) =head2 inflateSync Usage is $status = $z->inflateSync() TODO =head2 getHeaderInfo Usage is $hdr = $z->getHeaderInfo(); @hdrs = $z->getHeaderInfo(); This method returns either a hash reference (in scalar context) or a list or hash references (in array context) that contains information about each of the header fields in the compressed data stream(s). =over 5 =item Name The contents of the Name header field, if present. If no name is present, the value will be undef. Note this is different from a zero length name, which will return an empty string. =item Comment The contents of the Comment header field, if present. If no comment is present, the value will be undef. Note this is different from a zero length comment, which will return an empty string. =back =head2 tell Usage is $z->tell() tell $z Returns the uncompressed file offset. =head2 eof Usage is $z->eof(); eof($z); Returns true if the end of the compressed input stream has been reached. =head2 seek $z->seek($position, $whence); seek($z, $position, $whence); Provides a sub-set of the C functionality, with the restriction that it is only legal to seek forward in the input file/buffer. It is a fatal error to attempt to seek backward. Note that the implementation of C in this module does not provide true random access to a compressed file/buffer. It works by uncompressing data from the current offset in the file/buffer until it reaches the uncompressed offset specified in the parameters to C. For very small files this may be acceptable behaviour. For large files it may cause an unacceptable delay. The C<$whence> parameter takes one the usual values, namely SEEK_SET, SEEK_CUR or SEEK_END. Returns 1 on success, 0 on failure. =head2 binmode Usage is $z->binmode binmode $z ; This is a noop provided for completeness. =head2 opened $z->opened() Returns true if the object currently refers to a opened file/buffer. =head2 autoflush my $prev = $z->autoflush() my $prev = $z->autoflush(EXPR) If the C<$z> object is associated with a file or a filehandle, this method returns the current autoflush setting for the underlying filehandle. If C is present, and is non-zero, it will enable flushing after every write/print operation. If C<$z> is associated with a buffer, this method has no effect and always returns C. B that the special variable C<$|> B be used to set or retrieve the autoflush setting. =head2 input_line_number $z->input_line_number() $z->input_line_number(EXPR) Returns the current uncompressed line number. If C is present it has the effect of setting the line number. Note that setting the line number does not change the current position within the file/buffer being read. The contents of C<$/> are used to determine what constitutes a line terminator. =head2 fileno $z->fileno() fileno($z) If the C<$z> object is associated with a file or a filehandle, C will return the underlying file descriptor. Once the C method is called C will return C. If the C<$z> object is associated with a buffer, this method will return C. =head2 close $z->close() ; close $z ; Closes the output file/buffer. For most versions of Perl this method will be automatically invoked if the IO::Uncompress::Gunzip object is destroyed (either explicitly or by the variable with the reference to the object going out of scope). The exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In these cases, the C method will be called automatically, but not until global destruction of all live objects when the program is terminating. Therefore, if you want your scripts to be able to run on all versions of Perl, you should call C explicitly and not rely on automatic closing. Returns true on success, otherwise 0. If the C option has been enabled when the IO::Uncompress::Gunzip object was created, and the object is associated with a file, the underlying file will also be closed. =head2 nextStream Usage is my $status = $z->nextStream(); Skips to the next compressed data stream in the input file/buffer. If a new compressed data stream is found, the eof marker will be cleared and C<$.> will be reset to 0. Returns 1 if a new stream was found, 0 if none was found, and -1 if an error was encountered. =head2 trailingData Usage is my $data = $z->trailingData(); Returns the data, if any, that is present immediately after the compressed data stream once uncompression is complete. It only makes sense to call this method once the end of the compressed data stream has been encountered. This option can be used when there is useful information immediately following the compressed data stream, and you don't know the length of the compressed data stream. If the input is a buffer, C will return everything from the end of the compressed data stream to the end of the buffer. If the input is a filehandle, C will return the data that is left in the filehandle input buffer once the end of the compressed data stream has been reached. You can then use the filehandle to read the rest of the input file. Don't bother using C if the input is a filename. If you know the length of the compressed data stream before you start uncompressing, you can avoid having to use C by setting the C option in the constructor. =head1 Importing No symbolic constants are required by IO::Uncompress::Gunzip at present. =over 5 =item :all Imports C and C<$GunzipError>. Same as doing this use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ; =back =head1 EXAMPLES =head2 Working with Net::FTP See L =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L For RFC 1950, 1951 and 1952 see L, L and L The I compression library was written by Jean-loup Gailly C and Mark Adler C. The primary site for the I compression library is L. The primary site for gzip is L. =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005-2022 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILE$0ac11b6e/IO/Uncompress/RawInflate.pm|ypackage IO::Uncompress::RawInflate ; # for RFC1951 use strict ; use warnings; use bytes; use Compress::Raw::Zlib 2.103 ; use IO::Compress::Base::Common 2.106 qw(:Status ); use IO::Uncompress::Base 2.106 ; use IO::Uncompress::Adapter::Inflate 2.106 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError); $VERSION = '2.106'; $RawInflateError = ''; @ISA = qw(IO::Uncompress::Base Exporter); @EXPORT_OK = qw( $RawInflateError rawinflate ) ; %DEFLATE_CONSTANTS = (); %EXPORT_TAGS = %IO::Uncompress::Base::EXPORT_TAGS ; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); #{ # # Execute at runtime # my %bad; # for my $module (qw(Compress::Raw::Zlib IO::Compress::Base::Common IO::Uncompress::Base IO::Uncompress::Adapter::Inflate)) # { # my $ver = ${ $module . "::VERSION"} ; # # $bad{$module} = $ver # if $ver ne $VERSION; # } # # if (keys %bad) # { # my $string = join "\n", map { "$_ $bad{$_}" } keys %bad; # die caller(0)[0] . "needs version $VERSION mismatch\n$string\n"; # } #} sub new { my $class = shift ; my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$RawInflateError); $obj->_create(undef, 0, @_); } sub rawinflate { my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$RawInflateError); return $obj->_inf(@_); } sub getExtraParams { return (); } sub ckParams { my $self = shift ; my $got = shift ; return 1; } sub mkUncomp { my $self = shift ; my $got = shift ; my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Inflate::mkUncompObject( $got->getValue('crc32'), $got->getValue('adler32'), $got->getValue('scan'), ); return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; *$self->{Uncomp} = $obj; my $magic = $self->ckMagic() or return 0; *$self->{Info} = $self->readHeader($magic) or return undef ; return 1; } sub ckMagic { my $self = shift; return $self->_isRaw() ; } sub readHeader { my $self = shift; my $magic = shift ; return { 'Type' => 'rfc1951', 'FingerprintLength' => 0, 'HeaderLength' => 0, 'TrailerLength' => 0, 'Header' => '' }; } sub chkTrailer { return STATUS_OK ; } sub _isRaw { my $self = shift ; my $got = $self->_isRawx(@_); if ($got) { *$self->{Pending} = *$self->{HeaderPending} ; } else { $self->pushBack(*$self->{HeaderPending}); *$self->{Uncomp}->reset(); } *$self->{HeaderPending} = ''; return $got ; } sub _isRawx { my $self = shift ; my $magic = shift ; $magic = '' unless defined $magic ; my $buffer = ''; $self->smartRead(\$buffer, *$self->{BlockSize}) >= 0 or return $self->saveErrorString(undef, "No data to read"); my $temp_buf = $magic . $buffer ; *$self->{HeaderPending} = $temp_buf ; $buffer = ''; my $status = *$self->{Uncomp}->uncompr(\$temp_buf, \$buffer, $self->smartEof()) ; return $self->saveErrorString(undef, *$self->{Uncomp}{Error}, STATUS_ERROR) if $status == STATUS_ERROR; $self->pushBack($temp_buf) ; return $self->saveErrorString(undef, "unexpected end of file", STATUS_ERROR) if $self->smartEof() && $status != STATUS_ENDSTREAM; #my $buf_len = *$self->{Uncomp}->uncompressedBytes(); my $buf_len = length $buffer; if ($status == STATUS_ENDSTREAM) { if (*$self->{MultiStream} && (length $temp_buf || ! $self->smartEof())){ *$self->{NewStream} = 1 ; *$self->{EndStream} = 0 ; } else { *$self->{EndStream} = 1 ; } } *$self->{HeaderPending} = $buffer ; *$self->{InflatedBytesRead} = $buf_len ; *$self->{TotalInflatedBytesRead} += $buf_len ; *$self->{Type} = 'rfc1951'; $self->saveStatus(STATUS_OK); return { 'Type' => 'rfc1951', 'HeaderLength' => 0, 'TrailerLength' => 0, 'Header' => '' }; } sub inflateSync { my $self = shift ; # inflateSync is a no-op in Plain mode return 1 if *$self->{Plain} ; return 0 if *$self->{Closed} ; #return G_EOF if !length *$self->{Pending} && *$self->{EndStream} ; return 0 if ! length *$self->{Pending} && *$self->{EndStream} ; # Disable CRC check *$self->{Strict} = 0 ; my $status ; while (1) { my $temp_buf ; if (length *$self->{Pending} ) { $temp_buf = *$self->{Pending} ; *$self->{Pending} = ''; } else { $status = $self->smartRead(\$temp_buf, *$self->{BlockSize}) ; return $self->saveErrorString(0, "Error Reading Data") if $status < 0 ; if ($status == 0 ) { *$self->{EndStream} = 1 ; return $self->saveErrorString(0, "unexpected end of file", STATUS_ERROR); } } $status = *$self->{Uncomp}->sync($temp_buf) ; if ($status == STATUS_OK) { *$self->{Pending} .= $temp_buf ; return 1 ; } last unless $status == STATUS_ERROR ; } return 0; } #sub performScan #{ # my $self = shift ; # # my $status ; # my $end_offset = 0; # # $status = $self->scan() # #or return $self->saveErrorString(undef, "Error Scanning: $$error_ref", $self->errorNo) ; # or return $self->saveErrorString(G_ERR, "Error Scanning: $status") # # $status = $self->zap($end_offset) # or return $self->saveErrorString(G_ERR, "Error Zapping: $status"); # #or return $self->saveErrorString(undef, "Error Zapping: $$error_ref", $self->errorNo) ; # # #(*$obj->{Deflate}, $status) = $inf->createDeflate(); # ## *$obj->{Header} = *$inf->{Info}{Header}; ## *$obj->{UnCompSize_32bit} = ## *$obj->{BytesWritten} = *$inf->{UnCompSize_32bit} ; ## *$obj->{CompSize_32bit} = *$inf->{CompSize_32bit} ; # # ## if ( $outType eq 'buffer') ## { substr( ${ *$self->{Buffer} }, $end_offset) = '' } ## elsif ($outType eq 'handle' || $outType eq 'filename') { ## *$self->{FH} = *$inf->{FH} ; ## delete *$inf->{FH}; ## *$obj->{FH}->flush() ; ## *$obj->{Handle} = 1 if $outType eq 'handle'; ## ## #seek(*$obj->{FH}, $end_offset, SEEK_SET) ## *$obj->{FH}->seek($end_offset, SEEK_SET) ## or return $obj->saveErrorString(undef, $!, $!) ; ## } # #} sub scan { my $self = shift ; return 1 if *$self->{Closed} ; return 1 if !length *$self->{Pending} && *$self->{EndStream} ; my $buffer = '' ; my $len = 0; $len = $self->_raw_read(\$buffer, 1) while ! *$self->{EndStream} && $len >= 0 ; #return $len if $len < 0 ? $len : 0 ; return $len < 0 ? 0 : 1 ; } sub zap { my $self = shift ; my $headerLength = *$self->{Info}{HeaderLength}; my $block_offset = $headerLength + *$self->{Uncomp}->getLastBlockOffset(); $_[0] = $headerLength + *$self->{Uncomp}->getEndOffset(); #printf "# End $_[0], headerlen $headerLength \n";; #printf "# block_offset $block_offset %x\n", $block_offset; my $byte ; ( $self->smartSeek($block_offset) && $self->smartRead(\$byte, 1) ) or return $self->saveErrorString(0, $!, $!); #printf "#byte is %x\n", unpack('C*',$byte); *$self->{Uncomp}->resetLastBlockByte($byte); #printf "#to byte is %x\n", unpack('C*',$byte); ( $self->smartSeek($block_offset) && $self->smartWrite($byte) ) or return $self->saveErrorString(0, $!, $!); #$self->smartSeek($end_offset, 1); return 1 ; } sub createDeflate { my $self = shift ; my ($def, $status) = *$self->{Uncomp}->createDeflateStream( -AppendOutput => 1, -WindowBits => - MAX_WBITS, -CRC32 => *$self->{Params}->getValue('crc32'), -ADLER32 => *$self->{Params}->getValue('adler32'), ); return wantarray ? ($status, $def) : $def ; } 1; __END__ =head1 NAME IO::Uncompress::RawInflate - Read RFC 1951 files/buffers =head1 SYNOPSIS use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ; my $status = rawinflate $input => $output [,OPTS] or die "rawinflate failed: $RawInflateError\n"; my $z = IO::Uncompress::RawInflate->new( $input [OPTS] ) or die "rawinflate failed: $RawInflateError\n"; $status = $z->read($buffer) $status = $z->read($buffer, $length) $status = $z->read($buffer, $length, $offset) $line = $z->getline() $char = $z->getc() $char = $z->ungetc() $char = $z->opened() $status = $z->inflateSync() $data = $z->trailingData() $status = $z->nextStream() $data = $z->getHeaderInfo() $z->tell() $z->seek($position, $whence) $z->binmode() $z->fileno() $z->eof() $z->close() $RawInflateError ; # IO::File mode <$z> read($z, $buffer); read($z, $buffer, $length); read($z, $buffer, $length, $offset); tell($z) seek($z, $position, $whence) binmode($z) fileno($z) eof($z) close($z) =head1 DESCRIPTION This module provides a Perl interface that allows the reading of files/buffers that conform to RFC 1951. For writing RFC 1951 files/buffers, see the companion module IO::Compress::RawDeflate. =head1 Functional Interface A top-level function, C, is provided to carry out "one-shot" uncompression between buffers and/or files. For finer control over the uncompression process, see the L section. use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ; rawinflate $input_filename_or_reference => $output_filename_or_reference [,OPTS] or die "rawinflate failed: $RawInflateError\n"; The functional interface needs Perl5.005 or better. =head2 rawinflate $input_filename_or_reference => $output_filename_or_reference [, OPTS] C expects at least two parameters, C<$input_filename_or_reference> and C<$output_filename_or_reference> and zero or more optional parameters (see L) =head3 The C<$input_filename_or_reference> parameter The parameter, C<$input_filename_or_reference>, is used to define the source of the compressed data. It can take one of the following forms: =over 5 =item A filename If the C<$input_filename_or_reference> parameter is a simple scalar, it is assumed to be a filename. This file will be opened for reading and the input data will be read from it. =item A filehandle If the C<$input_filename_or_reference> parameter is a filehandle, the input data will be read from it. The string '-' can be used as an alias for standard input. =item A scalar reference If C<$input_filename_or_reference> is a scalar reference, the input data will be read from C<$$input_filename_or_reference>. =item An array reference If C<$input_filename_or_reference> is an array reference, each element in the array must be a filename. The input data will be read from each file in turn. The complete array will be walked to ensure that it only contains valid filenames before any data is uncompressed. =item An Input FileGlob string If C<$input_filename_or_reference> is a string that is delimited by the characters "<" and ">" C will assume that it is an I. The input is the list of files that match the fileglob. See L for more details. =back If the C<$input_filename_or_reference> parameter is any other type, C will be returned. =head3 The C<$output_filename_or_reference> parameter The parameter C<$output_filename_or_reference> is used to control the destination of the uncompressed data. This parameter can take one of these forms. =over 5 =item A filename If the C<$output_filename_or_reference> parameter is a simple scalar, it is assumed to be a filename. This file will be opened for writing and the uncompressed data will be written to it. =item A filehandle If the C<$output_filename_or_reference> parameter is a filehandle, the uncompressed data will be written to it. The string '-' can be used as an alias for standard output. =item A scalar reference If C<$output_filename_or_reference> is a scalar reference, the uncompressed data will be stored in C<$$output_filename_or_reference>. =item An Array Reference If C<$output_filename_or_reference> is an array reference, the uncompressed data will be pushed onto the array. =item An Output FileGlob If C<$output_filename_or_reference> is a string that is delimited by the characters "<" and ">" C will assume that it is an I. The output is the list of files that match the fileglob. When C<$output_filename_or_reference> is an fileglob string, C<$input_filename_or_reference> must also be a fileglob string. Anything else is an error. See L for more details. =back If the C<$output_filename_or_reference> parameter is any other type, C will be returned. =head2 Notes When C<$input_filename_or_reference> maps to multiple compressed files/buffers and C<$output_filename_or_reference> is a single file/buffer, after uncompression C<$output_filename_or_reference> will contain a concatenation of all the uncompressed data from each of the input files/buffers. =head2 Optional Parameters The optional parameters for the one-shot function C are (for the most part) identical to those used with the OO interface defined in the L section. The exceptions are listed below =over 5 =item C<< AutoClose => 0|1 >> This option applies to any input or output data streams to C that are filehandles. If C is specified, and the value is true, it will result in all input and/or output filehandles being closed once C has completed. This parameter defaults to 0. =item C<< BinModeOut => 0|1 >> This option is now a no-op. All files will be written in binmode. =item C<< Append => 0|1 >> The behaviour of this option is dependent on the type of output data stream. =over 5 =item * A Buffer If C is enabled, all uncompressed data will be append to the end of the output buffer. Otherwise the output buffer will be cleared before any uncompressed data is written to it. =item * A Filename If C is enabled, the file will be opened in append mode. Otherwise the contents of the file, if any, will be truncated before any uncompressed data is written to it. =item * A Filehandle If C is enabled, the filehandle will be positioned to the end of the file via a call to C before any uncompressed data is written to it. Otherwise the file pointer will not be moved. =back When C is specified, and set to true, it will I all uncompressed data to the output data stream. So when the output is a filehandle it will carry out a seek to the eof before writing any uncompressed data. If the output is a filename, it will be opened for appending. If the output is a buffer, all uncompressed data will be appended to the existing buffer. Conversely when C is not specified, or it is present and is set to false, it will operate as follows. When the output is a filename, it will truncate the contents of the file before writing any uncompressed data. If the output is a filehandle its position will not be changed. If the output is a buffer, it will be wiped before any uncompressed data is output. Defaults to 0. =item C<< MultiStream => 0|1 >> This option is a no-op. =item C<< TrailingData => $scalar >> Returns the data, if any, that is present immediately after the compressed data stream once uncompression is complete. This option can be used when there is useful information immediately following the compressed data stream, and you don't know the length of the compressed data stream. If the input is a buffer, C will return everything from the end of the compressed data stream to the end of the buffer. If the input is a filehandle, C will return the data that is left in the filehandle input buffer once the end of the compressed data stream has been reached. You can then use the filehandle to read the rest of the input file. Don't bother using C if the input is a filename. If you know the length of the compressed data stream before you start uncompressing, you can avoid having to use C by setting the C option. =back =head2 Examples To read the contents of the file C and write the uncompressed data to the file C. use strict ; use warnings ; use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ; my $input = "file1.txt.1951"; my $output = "file1.txt"; rawinflate $input => $output or die "rawinflate failed: $RawInflateError\n"; To read from an existing Perl filehandle, C<$input>, and write the uncompressed data to a buffer, C<$buffer>. use strict ; use warnings ; use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ; use IO::File ; my $input = IO::File->new( " \$buffer or die "rawinflate failed: $RawInflateError\n"; To uncompress all files in the directory "/my/home" that match "*.txt.1951" and store the compressed data in the same directory use strict ; use warnings ; use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ; rawinflate '' => '' or die "rawinflate failed: $RawInflateError\n"; and if you want to compress each file one at a time, this will do the trick use strict ; use warnings ; use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ; for my $input ( glob "/my/home/*.txt.1951" ) { my $output = $input; $output =~ s/.1951// ; rawinflate $input => $output or die "Error compressing '$input': $RawInflateError\n"; } =head1 OO Interface =head2 Constructor The format of the constructor for IO::Uncompress::RawInflate is shown below my $z = IO::Uncompress::RawInflate->new( $input [OPTS] ) or die "IO::Uncompress::RawInflate failed: $RawInflateError\n"; Returns an C object on success and undef on failure. The variable C<$RawInflateError> will contain an error message on failure. If you are running Perl 5.005 or better the object, C<$z>, returned from IO::Uncompress::RawInflate can be used exactly like an L filehandle. This means that all normal input file operations can be carried out with C<$z>. For example, to read a line from a compressed file/buffer you can use either of these forms $line = $z->getline(); $line = <$z>; The mandatory parameter C<$input> is used to determine the source of the compressed data. This parameter can take one of three forms. =over 5 =item A filename If the C<$input> parameter is a scalar, it is assumed to be a filename. This file will be opened for reading and the compressed data will be read from it. =item A filehandle If the C<$input> parameter is a filehandle, the compressed data will be read from it. The string '-' can be used as an alias for standard input. =item A scalar reference If C<$input> is a scalar reference, the compressed data will be read from C<$$input>. =back =head2 Constructor Options The option names defined below are case insensitive and can be optionally prefixed by a '-'. So all of the following are valid -AutoClose -autoclose AUTOCLOSE autoclose OPTS is a combination of the following options: =over 5 =item C<< AutoClose => 0|1 >> This option is only valid when the C<$input> parameter is a filehandle. If specified, and the value is true, it will result in the file being closed once either the C method is called or the IO::Uncompress::RawInflate object is destroyed. This parameter defaults to 0. =item C<< MultiStream => 0|1 >> Allows multiple concatenated compressed streams to be treated as a single compressed stream. Decompression will stop once either the end of the file/buffer is reached, an error is encountered (premature eof, corrupt compressed data) or the end of a stream is not immediately followed by the start of another stream. This parameter defaults to 0. =item C<< Prime => $string >> This option will uncompress the contents of C<$string> before processing the input file/buffer. This option can be useful when the compressed data is embedded in another file/data structure and it is not possible to work out where the compressed data begins without having to read the first few bytes. If this is the case, the uncompression can be I with these bytes using this option. =item C<< Transparent => 0|1 >> If this option is set and the input file/buffer is not compressed data, the module will allow reading of it anyway. In addition, if the input file/buffer does contain compressed data and there is non-compressed data immediately following it, setting this option will make this module treat the whole file/buffer as a single data stream. This option defaults to 1. =item C<< BlockSize => $num >> When reading the compressed input data, IO::Uncompress::RawInflate will read it in blocks of C<$num> bytes. This option defaults to 4096. =item C<< InputLength => $size >> When present this option will limit the number of compressed bytes read from the input file/buffer to C<$size>. This option can be used in the situation where there is useful data directly after the compressed data stream and you know beforehand the exact length of the compressed data stream. This option is mostly used when reading from a filehandle, in which case the file pointer will be left pointing to the first byte directly after the compressed data stream. This option defaults to off. =item C<< Append => 0|1 >> This option controls what the C method does with uncompressed data. If set to 1, all uncompressed data will be appended to the output parameter of the C method. If set to 0, the contents of the output parameter of the C method will be overwritten by the uncompressed data. Defaults to 0. =item C<< Strict => 0|1 >> This option is a no-op. =back =head2 Examples TODO =head1 Methods =head2 read Usage is $status = $z->read($buffer) Reads a block of compressed data (the size of the compressed block is determined by the C option in the constructor), uncompresses it and writes any uncompressed data into C<$buffer>. If the C parameter is set in the constructor, the uncompressed data will be appended to the C<$buffer> parameter. Otherwise C<$buffer> will be overwritten. Returns the number of uncompressed bytes written to C<$buffer>, zero if eof or a negative number on error. =head2 read Usage is $status = $z->read($buffer, $length) $status = $z->read($buffer, $length, $offset) $status = read($z, $buffer, $length) $status = read($z, $buffer, $length, $offset) Attempt to read C<$length> bytes of uncompressed data into C<$buffer>. The main difference between this form of the C method and the previous one, is that this one will attempt to return I C<$length> bytes. The only circumstances that this function will not is if end-of-file or an IO error is encountered. Returns the number of uncompressed bytes written to C<$buffer>, zero if eof or a negative number on error. =head2 getline Usage is $line = $z->getline() $line = <$z> Reads a single line. This method fully supports the use of the variable C<$/> (or C<$INPUT_RECORD_SEPARATOR> or C<$RS> when C is in use) to determine what constitutes an end of line. Paragraph mode, record mode and file slurp mode are all supported. =head2 getc Usage is $char = $z->getc() Read a single character. =head2 ungetc Usage is $char = $z->ungetc($string) =head2 inflateSync Usage is $status = $z->inflateSync() TODO =head2 getHeaderInfo Usage is $hdr = $z->getHeaderInfo(); @hdrs = $z->getHeaderInfo(); This method returns either a hash reference (in scalar context) or a list or hash references (in array context) that contains information about each of the header fields in the compressed data stream(s). =head2 tell Usage is $z->tell() tell $z Returns the uncompressed file offset. =head2 eof Usage is $z->eof(); eof($z); Returns true if the end of the compressed input stream has been reached. =head2 seek $z->seek($position, $whence); seek($z, $position, $whence); Provides a sub-set of the C functionality, with the restriction that it is only legal to seek forward in the input file/buffer. It is a fatal error to attempt to seek backward. Note that the implementation of C in this module does not provide true random access to a compressed file/buffer. It works by uncompressing data from the current offset in the file/buffer until it reaches the uncompressed offset specified in the parameters to C. For very small files this may be acceptable behaviour. For large files it may cause an unacceptable delay. The C<$whence> parameter takes one the usual values, namely SEEK_SET, SEEK_CUR or SEEK_END. Returns 1 on success, 0 on failure. =head2 binmode Usage is $z->binmode binmode $z ; This is a noop provided for completeness. =head2 opened $z->opened() Returns true if the object currently refers to a opened file/buffer. =head2 autoflush my $prev = $z->autoflush() my $prev = $z->autoflush(EXPR) If the C<$z> object is associated with a file or a filehandle, this method returns the current autoflush setting for the underlying filehandle. If C is present, and is non-zero, it will enable flushing after every write/print operation. If C<$z> is associated with a buffer, this method has no effect and always returns C. B that the special variable C<$|> B be used to set or retrieve the autoflush setting. =head2 input_line_number $z->input_line_number() $z->input_line_number(EXPR) Returns the current uncompressed line number. If C is present it has the effect of setting the line number. Note that setting the line number does not change the current position within the file/buffer being read. The contents of C<$/> are used to determine what constitutes a line terminator. =head2 fileno $z->fileno() fileno($z) If the C<$z> object is associated with a file or a filehandle, C will return the underlying file descriptor. Once the C method is called C will return C. If the C<$z> object is associated with a buffer, this method will return C. =head2 close $z->close() ; close $z ; Closes the output file/buffer. For most versions of Perl this method will be automatically invoked if the IO::Uncompress::RawInflate object is destroyed (either explicitly or by the variable with the reference to the object going out of scope). The exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In these cases, the C method will be called automatically, but not until global destruction of all live objects when the program is terminating. Therefore, if you want your scripts to be able to run on all versions of Perl, you should call C explicitly and not rely on automatic closing. Returns true on success, otherwise 0. If the C option has been enabled when the IO::Uncompress::RawInflate object was created, and the object is associated with a file, the underlying file will also be closed. =head2 nextStream Usage is my $status = $z->nextStream(); Skips to the next compressed data stream in the input file/buffer. If a new compressed data stream is found, the eof marker will be cleared and C<$.> will be reset to 0. Returns 1 if a new stream was found, 0 if none was found, and -1 if an error was encountered. =head2 trailingData Usage is my $data = $z->trailingData(); Returns the data, if any, that is present immediately after the compressed data stream once uncompression is complete. It only makes sense to call this method once the end of the compressed data stream has been encountered. This option can be used when there is useful information immediately following the compressed data stream, and you don't know the length of the compressed data stream. If the input is a buffer, C will return everything from the end of the compressed data stream to the end of the buffer. If the input is a filehandle, C will return the data that is left in the filehandle input buffer once the end of the compressed data stream has been reached. You can then use the filehandle to read the rest of the input file. Don't bother using C if the input is a filename. If you know the length of the compressed data stream before you start uncompressing, you can avoid having to use C by setting the C option in the constructor. =head1 Importing No symbolic constants are required by IO::Uncompress::RawInflate at present. =over 5 =item :all Imports C and C<$RawInflateError>. Same as doing this use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ; =back =head1 EXAMPLES =head2 Working with Net::FTP See L =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L For RFC 1950, 1951 and 1952 see L, L and L The I compression library was written by Jean-loup Gailly C and Mark Adler C. The primary site for the I compression library is L. The primary site for gzip is L. =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005-2022 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILE0a70d587/PerlIO.pm7package PerlIO; our $VERSION = '1.12'; # Map layer name to package that defines it our %alias; sub import { my $class = shift; while (@_) { my $layer = shift; if (exists $alias{$layer}) { $layer = $alias{$layer} } else { $layer = "${class}::$layer"; } eval { require $layer =~ s{::}{/}gr . '.pm' }; warn $@ if $@; } } sub F_UTF8 () { 0x8000 } 1; __END__ =head1 NAME PerlIO - On demand loader for PerlIO layers and root of PerlIO::* name space =head1 SYNOPSIS # support platform-native and CRLF text files open(my $fh, "<:crlf", "my.txt") or die "open failed: $!"; # append UTF-8 encoded text open(my $fh, ">>:encoding(UTF-8)", "some.log") or die "open failed: $!"; # portably open a binary file for reading open(my $fh, "<", "his.jpg") or die "open failed: $!"; binmode($fh) or die "binmode failed: $!"; Shell: PERLIO=:perlio perl .... =head1 DESCRIPTION When an undefined layer 'foo' is encountered in an C or C layer specification then C code performs the equivalent of: use PerlIO 'foo'; The Perl code in PerlIO.pm then attempts to locate a layer by doing require PerlIO::foo; Otherwise the C package is a place holder for additional PerlIO related functions. =head2 Layers Generally speaking, PerlIO layers (previously sometimes referred to as "disciplines") are an ordered stack applied to a filehandle (specified as a space- or colon-separated list, conventionally written with a leading colon). Each layer performs some operation on any input or output, except when bypassed such as with C or C. Read operations go through the stack in the order they are set (left to right), and write operations in the reverse order. There are also layers which actually just set flags on lower layers, or layers that modify the current stack but don't persist on the stack themselves; these are referred to as pseudo-layers. When opening a handle, it will be opened with any layers specified explicitly in the open() call (or the platform defaults, if specified as a colon with no following layers). If layers are not explicitly specified, the handle will be opened with the layers specified by the L<${^OPEN}|perlvar/"${^OPEN}"> variable (usually set by using the L pragma for a lexical scope, or the C<-C> command-line switch or C environment variable for the main program scope). If layers are not specified in the open() call or C<${^OPEN}> variable, the handle will be opened with the default layer stack configured for that architecture; see L. Some layers will automatically insert required lower level layers if not present; for example C<:perlio> will insert C<:unix> below itself for low level IO, and C<:encoding> will insert the platform defaults for buffered IO. The C function can be called on an opened handle to push additional layers onto the stack, which may also modify the existing layers. C called with no layers will remove or unset any existing layers which transform the byte stream, making the handle suitable for binary data. The following layers are currently defined: =over 4 =item :unix Lowest level layer which provides basic PerlIO operations in terms of UNIX/POSIX numeric file descriptor calls (open(), read(), write(), lseek(), close()). It is used even on non-Unix architectures, and most other layers operate on top of it. =item :stdio Layer which calls C, C and C/C etc. Note that as this is "real" stdio it will ignore any layers beneath it and go straight to the operating system via the C library as usual. This layer implements both low level IO and buffering, but is rarely used on modern architectures. =item :perlio A from scratch implementation of buffering for PerlIO. Provides fast access to the buffer for C which implements Perl's readline/EE and in general attempts to minimize data copying. C<:perlio> will insert a C<:unix> layer below itself to do low level IO. =item :crlf A layer that implements DOS/Windows like CRLF line endings. On read converts pairs of CR,LF to a single "\n" newline character. On write converts each "\n" to a CR,LF pair. Note that this layer will silently refuse to be pushed on top of itself. It currently does I mimic MS-DOS as far as treating of Control-Z as being an end-of-file marker. On DOS/Windows like architectures where this layer is part of the defaults, it also acts like the C<:perlio> layer, and removing the CRLF translation (such as with C<:raw>) will only unset the CRLF translation flag. Since Perl 5.14, you can also apply another C<:crlf> layer later, such as when the CRLF translation must occur after an encoding layer. On other architectures, it is a mundane CRLF translation layer and can be added and removed normally. # translate CRLF after encoding on Perl 5.14 or newer binmode $fh, ":raw:encoding(UTF-16LE):crlf" or die "binmode failed: $!"; =item :utf8 Pseudo-layer that declares that the stream accepts Perl's I upgraded encoding of characters, which is approximately UTF-8 on ASCII machines, but UTF-EBCDIC on EBCDIC machines. This allows any character Perl can represent to be read from or written to the stream. This layer (which actually sets a flag on the preceding layer, and is implicitly set by any C<:encoding> layer) does not translate or validate byte sequences. It instead indicates that the byte stream will have been arranged by other layers to be provided in Perl's internal upgraded encoding, which Perl code (and correctly written XS code) will interpret as decoded Unicode characters. B: Do not use this layer to translate from UTF-8 bytes, as invalid UTF-8 or binary data will result in malformed Perl strings. It is unlikely to produce invalid UTF-8 when used for output, though it will instead produce UTF-EBCDIC on EBCDIC systems. The C<:encoding(UTF-8)> layer (hyphen is significant) is preferred as it will ensure translation between valid UTF-8 bytes and valid Unicode characters. =item :bytes This is the inverse of the C<:utf8> pseudo-layer. It turns off the flag on the layer below so that data read from it is considered to be Perl's internal downgraded encoding, thus interpreted as the native single-byte encoding of Latin-1 or EBCDIC. Likewise on output Perl will warn if a "wide" character (a codepoint not in the range 0..255) is written to a such a stream. This is very dangerous to push on a handle using an C<:encoding> layer, as such a layer assumes to be working with Perl's internal upgraded encoding, so you will likely get a mangled result. Instead use C<:raw> or C<:pop> to remove encoding layers. =item :raw The C<:raw> pseudo-layer is I as being identical to calling C - the stream is made suitable for passing binary data, i.e. each byte is passed as-is. The stream will still be buffered (but this was not always true before Perl 5.14). In Perl 5.6 and some books the C<:raw> layer is documented as the inverse of the C<:crlf> layer. That is no longer the case - other layers which would alter the binary nature of the stream are also disabled. If you want UNIX line endings on a platform that normally does CRLF translation, but still want UTF-8 or encoding defaults, the appropriate thing to do is to add C<:perlio> to the PERLIO environment variable, or open the handle explicitly with that layer, to replace the platform default of C<:crlf>. The implementation of C<:raw> is as a pseudo-layer which when "pushed" pops itself and then any layers which would modify the binary data stream. (Undoing C<:utf8> and C<:crlf> may be implemented by clearing flags rather than popping layers but that is an implementation detail.) As a consequence of the fact that C<:raw> normally pops layers, it usually only makes sense to have it as the only or first element in a layer specification. When used as the first element it provides a known base on which to build e.g. open(my $fh,">:raw:encoding(UTF-8)",...) or die "open failed: $!"; will construct a "binary" stream regardless of the platform defaults, but then enable UTF-8 translation. =item :pop A pseudo-layer that removes the top-most layer. Gives Perl code a way to manipulate the layer stack. Note that C<:pop> only works on real layers and will not undo the effects of pseudo-layers or flags like C<:utf8>. An example of a possible use might be: open(my $fh,...) or die "open failed: $!"; ... binmode($fh,":encoding(...)") or die "binmode failed: $!"; # next chunk is encoded ... binmode($fh,":pop") or die "binmode failed: $!"; # back to un-encoded A more elegant (and safer) interface is needed. =back =head2 Custom Layers It is possible to write custom layers in addition to the above builtin ones, both in C/XS and Perl, as a module named C<< PerlIO:: >>. Some custom layers come with the Perl distribution. =over 4 =item :encoding Use C<:encoding(ENCODING)> to transparently do character set and encoding transformations, for example from Shift-JIS to Unicode. Note that an C<:encoding> also enables C<:utf8>. See L for more information. =item :mmap A layer which implements "reading" of files by using C to make a (whole) file appear in the process's address space, and then using that as PerlIO's "buffer". This I be faster in certain circumstances for large files, and may result in less physical memory use when multiple processes are reading the same file. Files which are not C-able revert to behaving like the C<:perlio> layer. Writes also behave like the C<:perlio> layer, as C for write needs extra house-keeping (to extend the file) which negates any advantage. The C<:mmap> layer will not exist if the platform does not support C. See L for more information. =item :via C<:via(MODULE)> allows a transformation to be applied by an arbitrary Perl module, for example compression / decompression, encryption / decryption. See L for more information. =item :scalar A layer implementing "in memory" files using scalar variables, automatically used in place of the platform defaults for IO when opening such a handle. As such, the scalar is expected to act like a file, only containing or storing bytes. See L for more information. =back =head2 Alternatives to raw To get a binary stream an alternate method is to use: open(my $fh,"<","whatever") or die "open failed: $!"; binmode($fh) or die "binmode failed: $!"; This has the advantage of being backward compatible with older versions of Perl that did not use PerlIO or where C<:raw> was buggy (as it was before Perl 5.14). To get an unbuffered stream specify an unbuffered layer (e.g. C<:unix>) in the open call: open(my $fh,"<:unix",$path) or die "open failed: $!"; =head2 Defaults and how to override them If the platform is MS-DOS like and normally does CRLF to "\n" translation for text files then the default layers are: :unix:crlf Otherwise if C found out how to do "fast" IO using the system's stdio (not common on modern architectures), then the default layers are: :stdio Otherwise the default layers are :unix:perlio Note that the "default stack" depends on the operating system and on the Perl version, and both the compile-time and runtime configurations of Perl. The default can be overridden by setting the environment variable PERLIO to a space or colon separated list of layers, however this cannot be used to set layers that require loading modules like C<:encoding>. This can be used to see the effect of/bugs in the various layers e.g. cd .../perl/t PERLIO=:stdio ./perl harness PERLIO=:perlio ./perl harness For the various values of PERLIO see L. The following table summarizes the default layers on UNIX-like and DOS-like platforms and depending on the setting of C<$ENV{PERLIO}>: PERLIO UNIX-like DOS-like ------ --------- -------- unset / "" :unix:perlio / :stdio [1] :unix:crlf :stdio :stdio :stdio :perlio :unix:perlio :unix:perlio # [1] ":stdio" if Configure found out how to do "fast stdio" (depends # on the stdio implementation) and in Perl 5.8, else ":unix:perlio" =head2 Querying the layers of filehandles The following returns the B of the PerlIO layers on a filehandle. my @layers = PerlIO::get_layers($fh); # Or FH, *FH, "FH". The layers are returned in the order an open() or binmode() call would use them, and without colons. By default the layers from the input side of the filehandle are returned; to get the output side, use the optional C argument: my @layers = PerlIO::get_layers($fh, output => 1); (Usually the layers are identical on either side of a filehandle but for example with sockets there may be differences.) There is no set_layers(), nor does get_layers() return a tied array mirroring the stack, or anything fancy like that. This is not accidental or unintentional. The PerlIO layer stack is a bit more complicated than just a stack (see for example the behaviour of C<:raw>). You are supposed to use open() and binmode() to manipulate the stack. B The arguments to layers are by default returned in parentheses after the name of the layer, and certain layers (like C<:utf8>) are not real layers but instead flags on real layers; to get all of these returned separately, use the optional C
argument: my @layer_and_args_and_flags = PerlIO::get_layers($fh, details => 1); The result will be up to be three times the number of layers: the first element will be a name, the second element the arguments (unspecified arguments will be C), the third element the flags, the fourth element a name again, and so forth. B =head1 AUTHOR Nick Ing-Simmons Enick@ing-simmons.netE =head1 SEE ALSO L, L, L, L, L =cut FILE4a50329b/SelectSaver.pm4package SelectSaver; our $VERSION = '1.02'; =head1 NAME SelectSaver - save and restore selected file handle =head1 SYNOPSIS use SelectSaver; { my $saver = SelectSaver->new(FILEHANDLE); # FILEHANDLE is selected } # previous handle is selected { my $saver = SelectSaver->new; # new handle may be selected, or not } # previous handle is selected =head1 DESCRIPTION A C object contains a reference to the file handle that was selected when it was created. If its C method gets an extra parameter, then that parameter is selected; otherwise, the selected file handle remains unchanged. When a C is destroyed, it re-selects the file handle that was selected when it was created. =cut require 5.000; use Carp; use Symbol; sub new { @_ >= 1 && @_ <= 2 or croak 'usage: SelectSaver->new( [FILEHANDLE] )'; my $fh = select; my $self = bless \$fh, $_[0]; select qualify($_[1], caller) if @_ > 1; $self; } sub DESTROY { my $self = $_[0]; select $$self; } 1; FILE477ebe95/Symbol.pm)package Symbol; use strict; use warnings; =head1 NAME Symbol - manipulate Perl symbols and their names =head1 SYNOPSIS use Symbol; $sym = gensym; open($sym, '<', "filename"); $_ = <$sym>; # etc. ungensym $sym; # no effect # replace *FOO{IO} handle but not $FOO, %FOO, etc. *FOO = geniosym; print qualify("x"), "\n"; # "main::x" print qualify("x", "FOO"), "\n"; # "FOO::x" print qualify("BAR::x"), "\n"; # "BAR::x" print qualify("BAR::x", "FOO"), "\n"; # "BAR::x" print qualify("STDOUT", "FOO"), "\n"; # "main::STDOUT" (global) print qualify(\*x), "\n"; # returns \*x print qualify(\*x, "FOO"), "\n"; # returns \*x use strict refs; print { qualify_to_ref $fh } "foo!\n"; $ref = qualify_to_ref $name, $pkg; use Symbol qw(delete_package); delete_package('Foo::Bar'); print "deleted\n" unless exists $Foo::{'Bar::'}; =head1 DESCRIPTION C creates an anonymous glob and returns a reference to it. Such a glob reference can be used as a file or directory handle. For backward compatibility with older implementations that didn't support anonymous globs, C is also provided. But it doesn't do anything. C creates an anonymous IO handle. This can be assigned into an existing glob without affecting the non-IO portions of the glob. C turns unqualified symbol names into qualified variable names (e.g. "myvar" -E "MyPackage::myvar"). If it is given a second parameter, C uses it as the default package; otherwise, it uses the package of its caller. Regardless, global variable names (e.g. "STDOUT", "ENV", "SIG") are always qualified with "main::". Qualification applies only to symbol names (strings). References are left unchanged under the assumption that they are glob references, which are qualified by their nature. C is just like C except that it returns a glob ref rather than a symbol name, so you can use the result even if C is in effect. C wipes out a whole package namespace. Note this routine is not exported by default--you may want to import it explicitly. =head1 BUGS C is a bit too powerful. It undefines every symbol that lives in the specified package. Since perl, for performance reasons, does not perform a symbol table lookup each time a function is called or a global variable is accessed, some code that has already been loaded and that makes use of symbols in package C may stop working after you delete C, even if you reload the C module afterwards. =cut require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(gensym ungensym qualify qualify_to_ref); our @EXPORT_OK = qw(delete_package geniosym); our $VERSION = '1.09'; my $genpkg = "Symbol::"; my $genseq = 0; my %global = map {$_ => 1} qw(ARGV ARGVOUT ENV INC SIG STDERR STDIN STDOUT); # # Note that we never _copy_ the glob; we just make a ref to it. # If we did copy it, then SVf_FAKE would be set on the copy, and # glob-specific behaviors (e.g. C<*$ref = \&func>) wouldn't work. # sub gensym () { my $name = "GEN" . $genseq++; no strict 'refs'; my $ref = \*{$genpkg . $name}; delete $$genpkg{$name}; $ref; } sub geniosym () { my $sym = gensym(); # force the IO slot to be filled select(select $sym); *$sym{IO}; } sub ungensym ($) {} sub qualify ($;$) { my ($name) = @_; if (!ref($name) && index($name, '::') == -1 && index($name, "'") == -1) { my $pkg; # Global names: special character, "^xyz", or other. if ($name =~ /^(([^a-z])|(\^[a-z_]+))\z/i || $global{$name}) { # RGS 2001-11-05 : translate leading ^X to control-char $name =~ s/^\^([a-z_])/'qq(\c'.$1.')'/eei; $pkg = "main"; } else { $pkg = (@_ > 1) ? $_[1] : caller; } $name = $pkg . "::" . $name; } $name; } sub qualify_to_ref ($;$) { no strict 'refs'; return \*{ qualify $_[0], @_ > 1 ? $_[1] : caller }; } # # of Safe.pm lineage # sub delete_package ($) { my $pkg = shift; # expand to full symbol table name if needed unless ($pkg =~ /^main::.*::$/) { $pkg = "main$pkg" if $pkg =~ /^::/; $pkg = "main::$pkg" unless $pkg =~ /^main::/; $pkg .= '::' unless $pkg =~ /::$/; } my($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/; no strict 'refs'; my $stem_symtab = *{$stem}{HASH}; return unless defined $stem_symtab and exists $stem_symtab->{$leaf}; # free all the symbols in the package my $leaf_symtab = *{$stem_symtab->{$leaf}}{HASH}; foreach my $name (keys %$leaf_symtab) { undef *{$pkg . $name}; } use strict 'refs'; # delete the symbol table %$leaf_symtab = (); delete $stem_symtab->{$leaf}; } 1; FILE!a90b71ff/Tie/Hash/NamedCapture.pm.use strict; package Tie::Hash::NamedCapture; our $VERSION = "0.13"; __END__ =head1 NAME Tie::Hash::NamedCapture - Named regexp capture buffers =head1 SYNOPSIS tie my %hash, "Tie::Hash::NamedCapture"; # %hash now behaves like %+ tie my %hash, "Tie::Hash::NamedCapture", all => 1; # %hash now access buffers from regexp in $qr like %- =head1 DESCRIPTION This module is used to implement the special hashes C<%+> and C<%->, but it can be used to tie other variables as you choose. When the C parameter is provided, then the tied hash elements will be array refs listing the contents of each capture buffer whose name is the same as the associated hash key. If none of these buffers were involved in the match, the contents of that array ref will be as many C values as there are capture buffers with that name. In other words, the tied hash will behave as C<%->. When the C parameter is omitted or false, then the tied hash elements will be the contents of the leftmost defined buffer with the name of the associated hash key. In other words, the tied hash will behave as C<%+>. The keys of C<%->-like hashes correspond to all buffer names found in the regular expression; the keys of C<%+>-like hashes list only the names of buffers that have captured (and that are thus associated to defined values). This implementation has been moved into the core executable, but you can still load this module for backward compatibility. =head1 SEE ALSO L, L, L, L, L. =cut FILEfc27010d/Time/Local.pm?package Time::Local; use strict; use Carp (); use Exporter; our $VERSION = '1.30'; use parent 'Exporter'; our @EXPORT = qw( timegm timelocal ); our @EXPORT_OK = qw( timegm_modern timelocal_modern timegm_nocheck timelocal_nocheck timegm_posix timelocal_posix ); my @MonthDays = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ); # Determine breakpoint for rolling century my $ThisYear = ( localtime() )[5]; my $Breakpoint = ( $ThisYear + 50 ) % 100; my $NextCentury = $ThisYear - $ThisYear % 100; $NextCentury += 100 if $Breakpoint < 50; my $Century = $NextCentury - 100; my $SecOff = 0; my ( %Options, %Cheat ); use constant SECS_PER_MINUTE => 60; use constant SECS_PER_HOUR => 3600; use constant SECS_PER_DAY => 86400; my $MaxDay; if ( $] < 5.012000 ) { require Config; ## no critic (Variables::ProhibitPackageVars) my $MaxInt; if ( $^O eq 'MacOS' ) { # time_t is unsigned... $MaxInt = ( 1 << ( 8 * $Config::Config{ivsize} ) ) - 1; ## no critic qw(ProhibitPackageVars) } else { $MaxInt = ( ( 1 << ( 8 * $Config::Config{ivsize} - 2 ) ) - 1 ) * 2 + 1; ## no critic qw(ProhibitPackageVars) } $MaxDay = int( ( $MaxInt - ( SECS_PER_DAY / 2 ) ) / SECS_PER_DAY ) - 1; } else { # recent localtime()'s limit is the year 2**31 $MaxDay = 365 * ( 2**31 ); } # Determine the EPOC day for this machine my $Epoc = 0; if ( $^O eq 'vos' ) { # work around posix-977 -- VOS doesn't handle dates in the range # 1970-1980. $Epoc = _daygm( 0, 0, 0, 1, 0, 70, 4, 0 ); } elsif ( $^O eq 'MacOS' ) { $MaxDay *= 2; # time_t unsigned ... quick hack? # MacOS time() is seconds since 1 Jan 1904, localtime # so we need to calculate an offset to apply later $Epoc = 693901; $SecOff = timelocal( localtime(0) ) - timelocal( gmtime(0) ); $Epoc += _daygm( gmtime(0) ); } else { $Epoc = _daygm( gmtime(0) ); } %Cheat = (); # clear the cache as epoc has changed sub _daygm { # This is written in such a byzantine way in order to avoid # lexical variables and sub calls, for speed return $_[3] + ( $Cheat{ pack( 'ss', @_[ 4, 5 ] ) } ||= do { my $month = ( $_[4] + 10 ) % 12; my $year = $_[5] + 1900 - int( $month / 10 ); ( ( 365 * $year ) + int( $year / 4 ) - int( $year / 100 ) + int( $year / 400 ) + int( ( ( $month * 306 ) + 5 ) / 10 ) ) - $Epoc; } ); } sub _timegm { my $sec = $SecOff + $_[0] + ( SECS_PER_MINUTE * $_[1] ) + ( SECS_PER_HOUR * $_[2] ); return $sec + ( SECS_PER_DAY * &_daygm ); } sub timegm { my ( $sec, $min, $hour, $mday, $month, $year ) = @_; if ( $Options{no_year_munging} ) { $year -= 1900; } elsif ( !$Options{posix_year} ) { if ( $year >= 1000 ) { $year -= 1900; } elsif ( $year < 100 and $year >= 0 ) { $year += ( $year > $Breakpoint ) ? $Century : $NextCentury; } } unless ( $Options{no_range_check} ) { Carp::croak("Month '$month' out of range 0..11") if $month > 11 or $month < 0; my $md = $MonthDays[$month]; ++$md if $month == 1 && _is_leap_year( $year + 1900 ); Carp::croak("Day '$mday' out of range 1..$md") if $mday > $md or $mday < 1; Carp::croak("Hour '$hour' out of range 0..23") if $hour > 23 or $hour < 0; Carp::croak("Minute '$min' out of range 0..59") if $min > 59 or $min < 0; Carp::croak("Second '$sec' out of range 0..59") if $sec >= 60 or $sec < 0; } my $days = _daygm( undef, undef, undef, $mday, $month, $year ); unless ( $Options{no_range_check} or abs($days) < $MaxDay ) { my $msg = q{}; $msg .= "Day too big - $days > $MaxDay\n" if $days > $MaxDay; $year += 1900; $msg .= "Cannot handle date ($sec, $min, $hour, $mday, $month, $year)"; Carp::croak($msg); } return $sec + $SecOff + ( SECS_PER_MINUTE * $min ) + ( SECS_PER_HOUR * $hour ) + ( SECS_PER_DAY * $days ); } sub _is_leap_year { return 0 if $_[0] % 4; return 1 if $_[0] % 100; return 0 if $_[0] % 400; return 1; } sub timegm_nocheck { local $Options{no_range_check} = 1; return &timegm; } sub timegm_modern { local $Options{no_year_munging} = 1; return &timegm; } sub timegm_posix { local $Options{posix_year} = 1; return &timegm; } sub timelocal { my $ref_t = &timegm; my $loc_for_ref_t = _timegm( localtime($ref_t) ); my $zone_off = $loc_for_ref_t - $ref_t or return $loc_for_ref_t; # Adjust for timezone my $loc_t = $ref_t - $zone_off; # Are we close to a DST change or are we done my $dst_off = $ref_t - _timegm( localtime($loc_t) ); # If this evaluates to true, it means that the value in $loc_t is # the _second_ hour after a DST change where the local time moves # backward. if ( !$dst_off && ( ( $ref_t - SECS_PER_HOUR ) - _timegm( localtime( $loc_t - SECS_PER_HOUR ) ) < 0 ) ) { return $loc_t - SECS_PER_HOUR; } # Adjust for DST change $loc_t += $dst_off; return $loc_t if $dst_off > 0; # If the original date was a non-existent gap in a forward DST jump, we # should now have the wrong answer - undo the DST adjustment my ( $s, $m, $h ) = localtime($loc_t); $loc_t -= $dst_off if $s != $_[0] || $m != $_[1] || $h != $_[2]; return $loc_t; } sub timelocal_nocheck { local $Options{no_range_check} = 1; return &timelocal; } sub timelocal_modern { local $Options{no_year_munging} = 1; return &timelocal; } sub timelocal_posix { local $Options{posix_year} = 1; return &timelocal; } 1; # ABSTRACT: Efficiently compute time from local and GMT time __END__ =pod =encoding UTF-8 =head1 NAME Time::Local - Efficiently compute time from local and GMT time =head1 VERSION version 1.30 =head1 SYNOPSIS use Time::Local qw( timelocal_posix timegm_posix ); my $time = timelocal_posix( $sec, $min, $hour, $mday, $mon, $year ); my $time = timegm_posix( $sec, $min, $hour, $mday, $mon, $year ); =head1 DESCRIPTION This module provides functions that are the inverse of built-in perl functions C and C. They accept a date as a six-element array, and return the corresponding C value in seconds since the system epoch (Midnight, January 1, 1970 GMT on Unix, for example). This value can be positive or negative, though POSIX only requires support for positive values, so dates before the system's epoch may not work on all operating systems. It is worth drawing particular attention to the expected ranges for the values provided. The value for the day of the month is the actual day (i.e. 1..31), while the month is the number of months since January (0..11). This is consistent with the values returned from C and C. =head1 FUNCTIONS =head2 C and C These functions are the exact inverse of Perl's built-in C and C functions. That means that calling C<< timelocal_posix( localtime($value) ) >> will always give you the same C<$value> you started with. The same applies to C<< timegm_posix( gmtime($value) ) >>. The one exception is when the value returned from C represents an ambiguous local time because of a DST change. See the documentation below for more details. These functions expect the year value to be the number of years since 1900, which is what the C and C built-ins returns. They perform range checking by default on the input C<$sec>, C<$min>, C<$hour>, C<$mday>, and C<$mon> values and will croak (using C) if given a value outside the allowed ranges. While it would be nice to make this the default behavior, that would almost certainly break a lot of code, so you must explicitly import these functions and use them instead of the default C and C. You are B encouraged to use these functions in any new code which uses this module. It will almost certainly make your code's behavior less surprising. =head2 C and C When C was first written, it was a common practice to represent years as a two-digit value like C<99> for C<1999> or C<1> for C<2001>. This caused all sorts of problems (google "Y2K problem" if you're very young) and developers eventually realized that this was a terrible idea. The default exports of C and C do a complicated calculation when given a year value less than 1000. This leads to surprising results in many cases. See L for details. The C functions do not do this year munging and simply take the year value as provided. They perform range checking by default on the input C<$sec>, C<$min>, C<$hour>, C<$mday>, and C<$mon> values and will croak (using C) if given a value outside the allowed ranges. =head2 C and C This module exports two functions by default, C and C. They perform range checking by default on the input C<$sec>, C<$min>, C<$hour>, C<$mday>, and C<$mon> values and will croak (using C) if given a value outside the allowed ranges. B or C<*_modern> functions if possible.> =head2 C and C If you are working with data you know to be valid, you can use the "nocheck" variants, C and C. These variants must be explicitly imported. If you supply data which is not valid (month 27, second 1,000) the results will be unpredictable (so don't do that). Note that my benchmarks show that this is just a 3% speed increase over the checked versions, so unless calling C is the hottest spot in your application, using these nocheck variants is unlikely to have much impact on your application. =head2 Year Value Interpretation B or C<*_modern> functions. Use those exports if you want to ensure consistent behavior as your code ages.> Strictly speaking, the year should be specified in a form consistent with C, i.e. the offset from 1900. In order to make the interpretation of the year easier for humans, however, who are more accustomed to seeing years as two-digit or four-digit values, the following conventions are followed: =over 4 =item * Years greater than 999 are interpreted as being the actual year, rather than the offset from 1900. Thus, 1964 would indicate the year Martin Luther King won the Nobel prize, not the year 3864. =item * Years in the range 100..999 are interpreted as offset from 1900, so that 112 indicates 2012. This rule also applies to years less than zero (but see note below regarding date range). =item * Years in the range 0..99 are interpreted as shorthand for years in the rolling "current century," defined as 50 years on either side of the current year. Thus, today, in 1999, 0 would refer to 2000, and 45 to 2045, but 55 would refer to 1955. Twenty years from now, 55 would instead refer to 2055. This is messy, but matches the way people currently think about two digit dates. Whenever possible, use an absolute four digit year instead. =back The scheme above allows interpretation of a wide range of dates, particularly if 4-digit years are used. But it also means that the behavior of your code changes as time passes, because the rolling "current century" changes each year. =head2 Limits of time_t On perl versions older than 5.12.0, the range of dates that can be actually be handled depends on the size of C (usually a signed integer) on the given platform. Currently, this is 32 bits for most systems, yielding an approximate range from Dec 1901 to Jan 2038. Both C and C croak if given dates outside the supported range. As of version 5.12.0, perl has stopped using the time implementation of the operating system it's running on. Instead, it has its own implementation of those routines with a safe range of at least +/- 2**52 (about 142 million years) =head2 Ambiguous Local Times (DST) Because of DST changes, there are many time zones where the same local time occurs for two different GMT times on the same day. For example, in the "Europe/Paris" time zone, the local time of 2001-10-28 02:30:00 can represent either 2001-10-28 00:30:00 GMT, B 2001-10-28 01:30:00 GMT. When given an ambiguous local time, the timelocal() function will always return the epoch for the I of the two possible GMT times. =head2 Non-Existent Local Times (DST) When a DST change causes a locale clock to skip one hour forward, there will be an hour's worth of local times that don't exist. Again, for the "Europe/Paris" time zone, the local clock jumped from 2001-03-25 01:59:59 to 2001-03-25 03:00:00. If the C function is given a non-existent local time, it will simply return an epoch value for the time one hour later. =head2 Negative Epoch Values On perl version 5.12.0 and newer, negative epoch values are fully supported. On older versions of perl, negative epoch (C) values, which are not officially supported by the POSIX standards, are known not to work on some systems. These include MacOS (pre-OSX) and Win32. On systems which do support negative epoch values, this module should be able to cope with dates before the start of the epoch, down the minimum value of time_t for the system. =head1 IMPLEMENTATION These routines are quite efficient and yet are always guaranteed to agree with C and C. We manage this by caching the start times of any months we've seen before. If we know the start time of the month, we can always calculate any time within the month. The start times are calculated using a mathematical formula. Unlike other algorithms that do multiple calls to C. The C function is implemented using the same cache. We just assume that we're translating a GMT time, and then fudge it when we're done for the timezone and daylight savings arguments. Note that the timezone is evaluated for each date because countries occasionally change their official timezones. Assuming that C corrects for these changes, this routine will also be correct. =head1 AUTHORS EMERITUS This module is based on a Perl 4 library, timelocal.pl, that was included with Perl 4.036, and was most likely written by Tom Christiansen. The current version was written by Graham Barr. =head1 BUGS The whole scheme for interpreting two-digit years can be considered a bug. Bugs may be submitted at L. There is a mailing list available for users of this distribution, L. I am also usually active on IRC as 'autarch' on C. =head1 SOURCE The source code repository for Time-Local can be found at L. =head1 AUTHOR Dave Rolsky =head1 CONTRIBUTORS =for stopwords Florian Ragwitz J. Nick Koston Unknown =over 4 =item * Florian Ragwitz =item * J. Nick Koston =item * Unknown =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 1997 - 2020 by Graham Barr & Dave Rolsky. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. The full text of the license can be found in the F file included with this distribution. =cut FILE0186ca8c/XSLoader.pm,^# Generated from XSLoader_pm.PL (resolved %Config::Config value) # This file is unique for every OS use strict; no strict 'refs'; package XSLoader; our $VERSION = "0.31"; # remember to update version in POD! package DynaLoader; # No prizes for guessing why we don't say 'bootstrap DynaLoader;' here. # NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) && !defined(&dl_error); package XSLoader; sub load { package DynaLoader; my ($caller, $modlibname) = caller(); my $module = $caller; if (@_) { $module = $_[0]; } else { $_[0] = $module; } # work with static linking too my $boots = "$module\::bootstrap"; goto &$boots if defined &$boots; goto \&XSLoader::bootstrap_inherit; my @modparts = split(/::/,$module); my $modfname = $modparts[-1]; my $modfname_orig = $modfname; # For .bs file search my $modpname = join('/',@modparts); my $c = () = split(/::/,$caller,-1); $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename # Does this look like a relative path? if ($modlibname !~ m{^/}) { # Someone may have a #line directive that changes the file name, or # may be calling XSLoader::load from inside a string eval. We cer- # tainly do not want to go loading some code that is not in @INC, # as it could be untrusted. # # We could just fall back to DynaLoader here, but then the rest of # this function would go untested in the perl core, since all @INC # paths are relative during testing. That would be a time bomb # waiting to happen, since bugs could be introduced into the code. # # So look through @INC to see if $modlibname is in it. A rela- # tive $modlibname is not a common occurrence, so this block is # not hot code. FOUND: { for (@INC) { if ($_ eq $modlibname) { last FOUND; } } # Not found. Fall back to DynaLoader. goto \&XSLoader::bootstrap_inherit; } } my $file = "$modlibname/auto/$modpname/$modfname.so"; # print STDERR "XSLoader::load for $module ($file)\n" if $dl_debug; # N.B. The .bs file does not following the naming convention used # by mod2fname, so use the unedited version of the name. my $bs = "$modlibname/auto/$modpname/$modfname_orig.bs"; # This calls DynaLoader::bootstrap, which will load the .bs file if present goto \&XSLoader::bootstrap_inherit if not -f $file or -s $bs; my $bootname = "boot_$module"; $bootname =~ s/\W/_/g; @DynaLoader::dl_require_symbols = ($bootname); my $boot_symbol_ref; # Many dynamic extension loading problems will appear to come from # this section of code: XYZ failed at line 123 of DynaLoader.pm. # Often these errors are actually occurring in the initialisation # C code of the extension XS file. Perl reports the error as being # in this perl code simply because this was the last perl code # it executed. my $libref = dl_load_file($file, 0) or do { require Carp; Carp::croak("Can't load '$file' for module $module: " . dl_error()); }; push(@DynaLoader::dl_librefs,$libref); # record loaded object $boot_symbol_ref = dl_find_symbol($libref, $bootname) or do { require Carp; Carp::croak("Can't find '$bootname' symbol in $file\n"); }; push(@DynaLoader::dl_modules, $module); # record loaded module boot: my $xs = dl_install_xsub($boots, $boot_symbol_ref, $file); # See comment block above push(@DynaLoader::dl_shared_objects, $file); # record files loaded return &$xs(@_); } # Can't test with DynaLoader->can('bootstrap_inherit') when building in the # core, as XSLoader gets built before DynaLoader. sub bootstrap_inherit { require DynaLoader; goto \&DynaLoader::bootstrap_inherit; } 1; __END__ =head1 NAME XSLoader - Dynamically load C libraries into Perl code =head1 VERSION Version 0.31 =head1 SYNOPSIS package YourPackage; require XSLoader; XSLoader::load(__PACKAGE__, $VERSION); =head1 DESCRIPTION This module defines a standard I interface to the dynamic linking mechanisms available on many platforms. Its primary purpose is to implement cheap automatic dynamic loading of Perl modules. For a more complicated interface, see L. Many (most) features of C are not implemented in C, like for example the C, not honored by C. =head2 Migration from C A typical module using L starts like this: package YourPackage; require DynaLoader; our @ISA = qw( OnePackage OtherPackage DynaLoader ); our $VERSION = '0.01'; __PACKAGE__->bootstrap($VERSION); Change this to package YourPackage; use XSLoader; our @ISA = qw( OnePackage OtherPackage ); our $VERSION = '0.01'; XSLoader::load(__PACKAGE__, $VERSION); In other words: replace C by C, remove C from C<@ISA>, change C by C. Do not forget to quote the name of your package on the C line, and add comma (C<,>) before the arguments (C<$VERSION> above). Of course, if C<@ISA> contained only C, there is no need to have the C<@ISA> assignment at all; moreover, if instead of C one uses the more backward-compatible use vars qw($VERSION @ISA); one can remove this reference to C<@ISA> together with the C<@ISA> assignment. If no C<$VERSION> was specified on the C line, the last line becomes XSLoader::load(__PACKAGE__); in which case it can be further simplified to XSLoader::load(); as C will use C to determine the package. =head2 Backward compatible boilerplate If you want to have your cake and eat it too, you need a more complicated boilerplate. package YourPackage; our @ISA = qw( OnePackage OtherPackage ); our $VERSION = '0.01'; eval { require XSLoader; XSLoader::load(__PACKAGE__, $VERSION); 1; } or do { require DynaLoader; push @ISA, 'DynaLoader'; __PACKAGE__->bootstrap($VERSION); }; The parentheses about C arguments are needed since we replaced C by C, so the compiler does not know that a function C is present. This boilerplate uses the low-overhead C if present; if used with an antique Perl which has no C, it falls back to using C. =head1 Order of initialization: early load() I section in your XS file (see L). What is described here is equally applicable to the L interface.> A sufficiently complicated module using XS would have both Perl code (defined in F) and XS code (defined in F). If this Perl code makes calls into this XS code, and/or this XS code makes calls to the Perl code, one should be careful with the order of initialization. The call to C (or C) calls the module's bootstrap code. For modules build by F (nearly all modules) this has three side effects: =over =item * A sanity check is done to ensure that the versions of the F<.pm> and the (compiled) F<.xs> parts are compatible. If C<$VERSION> was specified, this is used for the check. If not specified, it defaults to C<$XS_VERSION // $VERSION> (in the module's namespace) =item * the XSUBs are made accessible from Perl =item * if a C section was present in the F<.xs> file, the code there is called. =back Consequently, if the code in the F<.pm> file makes calls to these XSUBs, it is convenient to have XSUBs installed before the Perl code is defined; for example, this makes prototypes for XSUBs visible to this Perl code. Alternatively, if the C section makes calls to Perl functions (or uses Perl variables) defined in the F<.pm> file, they must be defined prior to the call to C (or C). The first situation being much more frequent, it makes sense to rewrite the boilerplate as package YourPackage; use XSLoader; our ($VERSION, @ISA); BEGIN { @ISA = qw( OnePackage OtherPackage ); $VERSION = '0.01'; # Put Perl code used in the BOOT: section here XSLoader::load(__PACKAGE__, $VERSION); } # Put Perl code making calls into XSUBs here =head2 The most hairy case If the interdependence of your C section and Perl code is more complicated than this (e.g., the C section makes calls to Perl functions which make calls to XSUBs with prototypes), get rid of the C section altogether. Replace it with a function C, and call it like this: package YourPackage; use XSLoader; our ($VERSION, @ISA); BEGIN { @ISA = qw( OnePackage OtherPackage ); $VERSION = '0.01'; XSLoader::load(__PACKAGE__, $VERSION); } # Put Perl code used in onBOOT() function here; calls to XSUBs are # prototype-checked. onBOOT; # Put Perl initialization code assuming that XS is initialized here =head1 DIAGNOSTICS =over =item C B<(F)> The bootstrap symbol could not be found in the extension module. =item C B<(F)> The loading or initialisation of the extension module failed. The detailed error follows. =item C B<(W)> As the message says, some symbols stay undefined although the extension module was correctly loaded and initialised. The list of undefined symbols follows. =back =head1 LIMITATIONS To reduce the overhead as much as possible, only one possible location is checked to find the extension DLL (this location is where C would put the DLL). If not found, the search for the DLL is transparently delegated to C, which looks for the DLL along the C<@INC> list. In particular, this is applicable to the structure of C<@INC> used for testing not-yet-installed extensions. This means that running uninstalled extensions may have much more overhead than running the same extensions after C. =head1 KNOWN BUGS The new simpler way to call C with no arguments at all does not work on Perl 5.8.4 and 5.8.5. =head1 BUGS Please report any bugs or feature requests via the perlbug(1) utility. =head1 SEE ALSO L =head1 AUTHORS Ilya Zakharevich originally extracted C from C. CPAN version is currently maintained by SEbastien Aperghis-Tramoni Esebastien@aperghis.netE. Previous maintainer was Michael G Schwern . =head1 COPYRIGHT & LICENSE Copyright (C) 1990-2011 by Larry Wall and others. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut FILE249caa72/Compress/Raw/Zlib.pm5 package Compress::Raw::Zlib; require 5.006 ; require Exporter; use Carp ; use strict ; use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD, %DEFLATE_CONSTANTS, @DEFLATE_CONSTANTS); $VERSION = '2.105'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); %EXPORT_TAGS = ( flush => [qw{ Z_NO_FLUSH Z_PARTIAL_FLUSH Z_SYNC_FLUSH Z_FULL_FLUSH Z_FINISH Z_BLOCK }], level => [qw{ Z_NO_COMPRESSION Z_BEST_SPEED Z_BEST_COMPRESSION Z_DEFAULT_COMPRESSION }], strategy => [qw{ Z_FILTERED Z_HUFFMAN_ONLY Z_RLE Z_FIXED Z_DEFAULT_STRATEGY }], status => [qw{ Z_OK Z_STREAM_END Z_NEED_DICT Z_ERRNO Z_STREAM_ERROR Z_DATA_ERROR Z_MEM_ERROR Z_BUF_ERROR Z_VERSION_ERROR }], ); %DEFLATE_CONSTANTS = %EXPORT_TAGS; # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @DEFLATE_CONSTANTS = @EXPORT = qw( ZLIB_VERSION ZLIB_VERNUM OS_CODE MAX_MEM_LEVEL MAX_WBITS Z_ASCII Z_BEST_COMPRESSION Z_BEST_SPEED Z_BINARY Z_BLOCK Z_BUF_ERROR Z_DATA_ERROR Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY Z_DEFLATED Z_ERRNO Z_FILTERED Z_FIXED Z_FINISH Z_FULL_FLUSH Z_HUFFMAN_ONLY Z_MEM_ERROR Z_NEED_DICT Z_NO_COMPRESSION Z_NO_FLUSH Z_NULL Z_OK Z_PARTIAL_FLUSH Z_RLE Z_STREAM_END Z_STREAM_ERROR Z_SYNC_FLUSH Z_TREES Z_UNKNOWN Z_VERSION_ERROR WANT_GZIP WANT_GZIP_OR_ZLIB ); push @EXPORT, qw(crc32 adler32 DEF_WBITS); use constant WANT_GZIP => 16; use constant WANT_GZIP_OR_ZLIB => 32; sub AUTOLOAD { my($constname); ($constname = $AUTOLOAD) =~ s/.*:://; my ($error, $val) = constant($constname); Carp::croak $error if $error; no strict 'refs'; *{$AUTOLOAD} = sub { $val }; goto &{$AUTOLOAD}; } use constant FLAG_APPEND => 1 ; use constant FLAG_CRC => 2 ; use constant FLAG_ADLER => 4 ; use constant FLAG_CONSUME_INPUT => 8 ; use constant FLAG_LIMIT_OUTPUT => 16 ; eval { require XSLoader; XSLoader::load('Compress::Raw::Zlib', $XS_VERSION); 1; } or do { require DynaLoader; local @ISA = qw(DynaLoader); bootstrap Compress::Raw::Zlib $XS_VERSION ; }; use constant Parse_any => 0x01; use constant Parse_unsigned => 0x02; use constant Parse_signed => 0x04; use constant Parse_boolean => 0x08; #use constant Parse_string => 0x10; #use constant Parse_custom => 0x12; #use constant Parse_store_ref => 0x100 ; use constant OFF_PARSED => 0 ; use constant OFF_TYPE => 1 ; use constant OFF_DEFAULT => 2 ; use constant OFF_FIXED => 3 ; use constant OFF_FIRST_ONLY => 4 ; use constant OFF_STICKY => 5 ; sub ParseParameters { my $level = shift || 0 ; my $sub = (caller($level + 1))[3] ; #local $Carp::CarpLevel = 1 ; my $p = new Compress::Raw::Zlib::Parameters() ; $p->parse(@_) or croak "$sub: $p->{Error}" ; return $p; } sub Compress::Raw::Zlib::Parameters::new { my $class = shift ; my $obj = { Error => '', Got => {}, } ; #return bless $obj, ref($class) || $class || __PACKAGE__ ; return bless $obj, 'Compress::Raw::Zlib::Parameters' ; } sub Compress::Raw::Zlib::Parameters::setError { my $self = shift ; my $error = shift ; my $retval = @_ ? shift : undef ; $self->{Error} = $error ; return $retval; } #sub getError #{ # my $self = shift ; # return $self->{Error} ; #} sub Compress::Raw::Zlib::Parameters::parse { my $self = shift ; my $default = shift ; my $got = $self->{Got} ; my $firstTime = keys %{ $got } == 0 ; my (@Bad) ; my @entered = () ; # Allow the options to be passed as a hash reference or # as the complete hash. if (@_ == 0) { @entered = () ; } elsif (@_ == 1) { my $href = $_[0] ; return $self->setError("Expected even number of parameters, got 1") if ! defined $href or ! ref $href or ref $href ne "HASH" ; foreach my $key (keys %$href) { push @entered, $key ; push @entered, \$href->{$key} ; } } else { my $count = @_; return $self->setError("Expected even number of parameters, got $count") if $count % 2 != 0 ; for my $i (0.. $count / 2 - 1) { push @entered, $_[2* $i] ; push @entered, \$_[2* $i+1] ; } } while (my ($key, $v) = each %$default) { croak "need 4 params [@$v]" if @$v != 4 ; my ($first_only, $sticky, $type, $value) = @$v ; my $x ; $self->_checkType($key, \$value, $type, 0, \$x) or return undef ; $key = lc $key; if ($firstTime || ! $sticky) { $got->{$key} = [0, $type, $value, $x, $first_only, $sticky] ; } $got->{$key}[OFF_PARSED] = 0 ; } for my $i (0.. @entered / 2 - 1) { my $key = $entered[2* $i] ; my $value = $entered[2* $i+1] ; #print "Key [$key] Value [$value]" ; #print defined $$value ? "[$$value]\n" : "[undef]\n"; $key =~ s/^-// ; my $canonkey = lc $key; if ($got->{$canonkey} && ($firstTime || ! $got->{$canonkey}[OFF_FIRST_ONLY] )) { my $type = $got->{$canonkey}[OFF_TYPE] ; my $s ; $self->_checkType($key, $value, $type, 1, \$s) or return undef ; #$value = $$value unless $type & Parse_store_ref ; $value = $$value ; $got->{$canonkey} = [1, $type, $value, $s] ; } else { push (@Bad, $key) } } if (@Bad) { my ($bad) = join(", ", @Bad) ; return $self->setError("unknown key value(s) @Bad") ; } return 1; } sub Compress::Raw::Zlib::Parameters::_checkType { my $self = shift ; my $key = shift ; my $value = shift ; my $type = shift ; my $validate = shift ; my $output = shift; #local $Carp::CarpLevel = $level ; #print "PARSE $type $key $value $validate $sub\n" ; # if ( $type & Parse_store_ref) # { # #$value = $$value # # if ref ${ $value } ; # # $$output = $value ; # return 1; # } $value = $$value ; if ($type & Parse_any) { $$output = $value ; return 1; } elsif ($type & Parse_unsigned) { return $self->setError("Parameter '$key' must be an unsigned int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be an unsigned int, got '$value'") if $validate && $value !~ /^\d+$/; $$output = defined $value ? $value : 0 ; return 1; } elsif ($type & Parse_signed) { return $self->setError("Parameter '$key' must be a signed int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be a signed int, got '$value'") if $validate && $value !~ /^-?\d+$/; $$output = defined $value ? $value : 0 ; return 1 ; } elsif ($type & Parse_boolean) { return $self->setError("Parameter '$key' must be an int, got '$value'") if $validate && defined $value && $value !~ /^\d*$/; $$output = defined $value ? $value != 0 : 0 ; return 1; } # elsif ($type & Parse_string) # { # $$output = defined $value ? $value : "" ; # return 1; # } $$output = $value ; return 1; } sub Compress::Raw::Zlib::Parameters::parsed { my $self = shift ; my $name = shift ; return $self->{Got}{lc $name}[OFF_PARSED] ; } sub Compress::Raw::Zlib::Parameters::value { my $self = shift ; my $name = shift ; if (@_) { $self->{Got}{lc $name}[OFF_PARSED] = 1; $self->{Got}{lc $name}[OFF_DEFAULT] = $_[0] ; $self->{Got}{lc $name}[OFF_FIXED] = $_[0] ; } return $self->{Got}{lc $name}[OFF_FIXED] ; } our $OPTIONS_deflate = { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()], 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], 'Dictionary' => [1, 1, Parse_any, ""], }; sub Compress::Raw::Zlib::Deflate::new { my $pkg = shift ; my ($got) = ParseParameters(0, $OPTIONS_deflate, @_); croak "Compress::Raw::Zlib::Deflate::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; my $windowBits = $got->value('WindowBits'); $windowBits += MAX_WBITS() if ($windowBits & MAX_WBITS()) == 0 ; _deflateInit($flags, $got->value('Level'), $got->value('Method'), $windowBits, $got->value('MemLevel'), $got->value('Strategy'), $got->value('Bufsize'), $got->value('Dictionary')) ; } sub Compress::Raw::Zlib::deflateStream::STORABLE_freeze { my $type = ref shift; croak "Cannot freeze $type object\n"; } sub Compress::Raw::Zlib::deflateStream::STORABLE_thaw { my $type = ref shift; croak "Cannot thaw $type object\n"; } our $OPTIONS_inflate = { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'LimitOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'ConsumeInput' => [1, 1, Parse_boolean, 1], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], } ; sub Compress::Raw::Zlib::Inflate::new { my $pkg = shift ; my ($got) = ParseParameters(0, $OPTIONS_inflate, @_); croak "Compress::Raw::Zlib::Inflate::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; $flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ; $flags |= FLAG_LIMIT_OUTPUT if $got->value('LimitOutput') ; my $windowBits = $got->value('WindowBits'); $windowBits += MAX_WBITS() if ($windowBits & MAX_WBITS()) == 0 ; _inflateInit($flags, $windowBits, $got->value('Bufsize'), $got->value('Dictionary')) ; } sub Compress::Raw::Zlib::inflateStream::STORABLE_freeze { my $type = ref shift; croak "Cannot freeze $type object\n"; } sub Compress::Raw::Zlib::inflateStream::STORABLE_thaw { my $type = ref shift; croak "Cannot thaw $type object\n"; } sub Compress::Raw::Zlib::InflateScan::new { my $pkg = shift ; my ($got) = ParseParameters(0, { 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'WindowBits' => [1, 1, Parse_signed, -MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; croak "Compress::Raw::Zlib::InflateScan::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; #$flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; #$flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ; _inflateScanInit($flags, $got->value('WindowBits'), $got->value('Bufsize'), '') ; } sub Compress::Raw::Zlib::inflateScanStream::createDeflateStream { my $pkg = shift ; my ($got) = ParseParameters(0, { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, - MAX_WBITS()], 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()], 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], }, @_) ; croak "Compress::Raw::Zlib::InflateScan::createDeflateStream: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; $pkg->_createDeflateStream($flags, $got->value('Level'), $got->value('Method'), $got->value('WindowBits'), $got->value('MemLevel'), $got->value('Strategy'), $got->value('Bufsize'), ) ; } sub Compress::Raw::Zlib::inflateScanStream::inflate { my $self = shift ; my $buffer = $_[1]; my $eof = $_[2]; my $status = $self->scan(@_); if ($status == Z_OK() && $_[2]) { my $byte = ' '; $status = $self->scan(\$byte, $_[1]) ; } return $status ; } sub Compress::Raw::Zlib::deflateStream::deflateParams { my $self = shift ; my ($got) = ParseParameters(0, { 'Level' => [1, 1, Parse_signed, undef], 'Strategy' => [1, 1, Parse_unsigned, undef], 'Bufsize' => [1, 1, Parse_unsigned, undef], }, @_) ; croak "Compress::Raw::Zlib::deflateParams needs Level and/or Strategy" unless $got->parsed('Level') + $got->parsed('Strategy') + $got->parsed('Bufsize'); croak "Compress::Raw::Zlib::Inflate::deflateParams: Bufsize must be >= 1, you specified " . $got->value('Bufsize') if $got->parsed('Bufsize') && $got->value('Bufsize') <= 1; my $flags = 0; $flags |= 1 if $got->parsed('Level') ; $flags |= 2 if $got->parsed('Strategy') ; $flags |= 4 if $got->parsed('Bufsize') ; $self->_deflateParams($flags, $got->value('Level'), $got->value('Strategy'), $got->value('Bufsize')); } 1; __END__ =head1 NAME Compress::Raw::Zlib - Low-Level Interface to zlib compression library =head1 SYNOPSIS use Compress::Raw::Zlib ; ($d, $status) = new Compress::Raw::Zlib::Deflate( [OPT] ) ; $status = $d->deflate($input, $output) ; $status = $d->flush($output [, $flush_type]) ; $d->deflateReset() ; $d->deflateParams(OPTS) ; $d->deflateTune(OPTS) ; $d->dict_adler() ; $d->crc32() ; $d->adler32() ; $d->total_in() ; $d->total_out() ; $d->msg() ; $d->get_Strategy(); $d->get_Level(); $d->get_BufSize(); ($i, $status) = new Compress::Raw::Zlib::Inflate( [OPT] ) ; $status = $i->inflate($input, $output [, $eof]) ; $status = $i->inflateSync($input) ; $i->inflateReset() ; $i->dict_adler() ; $d->crc32() ; $d->adler32() ; $i->total_in() ; $i->total_out() ; $i->msg() ; $d->get_BufSize(); $crc = adler32($buffer [,$crc]) ; $crc = crc32($buffer [,$crc]) ; $crc = crc32_combine($crc1, $crc2, $len2); $adler = adler32_combine($adler1, $adler2, $len2); my $version = Compress::Raw::Zlib::zlib_version(); my $flags = Compress::Raw::Zlib::zlibCompileFlags(); =head1 DESCRIPTION The I module provides a Perl interface to the I compression library (see L for details about where to get I). =head1 Compress::Raw::Zlib::Deflate This section defines an interface that allows in-memory compression using the I interface provided by zlib. Here is a definition of the interface available: =head2 B<($d, $status) = new Compress::Raw::Zlib::Deflate( [OPT] ) > Initialises a deflation object. If you are familiar with the I library, it combines the features of the I functions C, C and C. If successful, it will return the initialised deflation object, C<$d> and a C<$status> of C in a list context. In scalar context it returns the deflation object, C<$d>, only. If not successful, the returned deflation object, C<$d>, will be I and C<$status> will hold the a I error code. The function optionally takes a number of named options specified as C<< Name => value >> pairs. This allows individual options to be tailored without having to specify them all in the parameter list. For backward compatibility, it is also possible to pass the parameters as a reference to a hash containing the name=>value pairs. Below is a list of the valid options: =over 5 =item B<-Level> Defines the compression level. Valid values are 0 through 9, C, C, C, and C. The default is C. =item B<-Method> Defines the compression method. The only valid value at present (and the default) is C. =item B<-WindowBits> To compress an RFC 1950 data stream, set C to a positive number between 8 and 15. To compress an RFC 1951 data stream, set C to C<-MAX_WBITS>. To compress an RFC 1952 data stream (i.e. gzip), set C to C. For a definition of the meaning and valid values for C refer to the I documentation for I. Defaults to C. =item B<-MemLevel> For a definition of the meaning and valid values for C refer to the I documentation for I. Defaults to MAX_MEM_LEVEL. =item B<-Strategy> Defines the strategy used to tune the compression. The valid values are C, C, C, C and C. The default is C. =item B<-Dictionary> When a dictionary is specified I will automatically call C directly after calling C. The Adler32 value for the dictionary can be obtained by calling the method C<$d-Edict_adler()>. The default is no dictionary. =item B<-Bufsize> Sets the initial size for the output buffer used by the C<$d-Edeflate> and C<$d-Eflush> methods. If the buffer has to be reallocated to increase the size, it will grow in increments of C. The default buffer size is 4096. =item B<-AppendOutput> This option controls how data is written to the output buffer by the C<$d-Edeflate> and C<$d-Eflush> methods. If the C option is set to false, the output buffers in the C<$d-Edeflate> and C<$d-Eflush> methods will be truncated before uncompressed data is written to them. If the option is set to true, uncompressed data will be appended to the output buffer in the C<$d-Edeflate> and C<$d-Eflush> methods. This option defaults to false. =item B<-CRC32> If set to true, a crc32 checksum of the uncompressed data will be calculated. Use the C<$d-Ecrc32> method to retrieve this value. This option defaults to false. =item B<-ADLER32> If set to true, an adler32 checksum of the uncompressed data will be calculated. Use the C<$d-Eadler32> method to retrieve this value. This option defaults to false. =back Here is an example of using the C optional parameter list to override the default buffer size and compression level. All other options will take their default values. my $d = new Compress::Raw::Zlib::Deflate ( -Bufsize => 300, -Level => Z_BEST_SPEED ) ; =head2 B<$status = $d-Edeflate($input, $output)> Deflates the contents of C<$input> and writes the compressed data to C<$output>. The C<$input> and C<$output> parameters can be either scalars or scalar references. When finished, C<$input> will be completely processed (assuming there were no errors). If the deflation was successful it writes the deflated data to C<$output> and returns a status value of C. On error, it returns a I error code. If the C option is set to true in the constructor for the C<$d> object, the compressed data will be appended to C<$output>. If it is false, C<$output> will be truncated before any compressed data is written to it. B: This method will not necessarily write compressed data to C<$output> every time it is called. So do not assume that there has been an error if the contents of C<$output> is empty on returning from this method. As long as the return code from the method is C, the deflate has succeeded. =head2 B<$status = $d-Eflush($output [, $flush_type]) > Typically used to finish the deflation. Any pending output will be written to C<$output>. Returns C if successful. Note that flushing can seriously degrade the compression ratio, so it should only be used to terminate a decompression (using C) or when you want to create a I (using C). By default the C used is C. Other valid values for C are C, C, C and C. It is strongly recommended that you only set the C parameter if you fully understand the implications of what it does. See the C documentation for details. If the C option is set to true in the constructor for the C<$d> object, the compressed data will be appended to C<$output>. If it is false, C<$output> will be truncated before any compressed data is written to it. =head2 B<$status = $d-EdeflateReset() > This method will reset the deflation object C<$d>. It can be used when you are compressing multiple data streams and want to use the same object to compress each of them. It should only be used once the previous data stream has been flushed successfully, i.e. a call to C<< $d->flush(Z_FINISH) >> has returned C. Returns C if successful. =head2 B<$status = $d-EdeflateParams([OPT])> Change settings for the deflate object C<$d>. The list of the valid options is shown below. Options not specified will remain unchanged. =over 5 =item B<-Level> Defines the compression level. Valid values are 0 through 9, C, C, C, and C. =item B<-Strategy> Defines the strategy used to tune the compression. The valid values are C, C and C. =item B<-BufSize> Sets the initial size for the output buffer used by the C<$d-Edeflate> and C<$d-Eflush> methods. If the buffer has to be reallocated to increase the size, it will grow in increments of C. =back =head2 B<$status = $d-EdeflateTune($good_length, $max_lazy, $nice_length, $max_chain)> Tune the internal settings for the deflate object C<$d>. This option is only available if you are running zlib 1.2.2.3 or better. Refer to the documentation in zlib.h for instructions on how to fly C. =head2 B<$d-Edict_adler()> Returns the adler32 value for the dictionary. =head2 B<$d-Ecrc32()> Returns the crc32 value for the uncompressed data to date. If the C option is not enabled in the constructor for this object, this method will always return 0; =head2 B<$d-Eadler32()> Returns the adler32 value for the uncompressed data to date. =head2 B<$d-Emsg()> Returns the last error message generated by zlib. =head2 B<$d-Etotal_in()> Returns the total number of bytes uncompressed bytes input to deflate. =head2 B<$d-Etotal_out()> Returns the total number of compressed bytes output from deflate. =head2 B<$d-Eget_Strategy()> Returns the deflation strategy currently used. Valid values are C, C and C. =head2 B<$d-Eget_Level()> Returns the compression level being used. =head2 B<$d-Eget_BufSize()> Returns the buffer size used to carry out the compression. =head2 Example Here is a trivial example of using C. It simply reads standard input, deflates it and writes it to standard output. use strict ; use warnings ; use Compress::Raw::Zlib ; binmode STDIN; binmode STDOUT; my $x = new Compress::Raw::Zlib::Deflate or die "Cannot create a deflation stream\n" ; my ($output, $status) ; while (<>) { $status = $x->deflate($_, $output) ; $status == Z_OK or die "deflation failed\n" ; print $output ; } $status = $x->flush($output) ; $status == Z_OK or die "deflation failed\n" ; print $output ; =head1 Compress::Raw::Zlib::Inflate This section defines an interface that allows in-memory uncompression using the I interface provided by zlib. Here is a definition of the interface: =head2 B< ($i, $status) = new Compress::Raw::Zlib::Inflate( [OPT] ) > Initialises an inflation object. In a list context it returns the inflation object, C<$i>, and the I status code (C<$status>). In a scalar context it returns the inflation object only. If successful, C<$i> will hold the inflation object and C<$status> will be C. If not successful, C<$i> will be I and C<$status> will hold the I error code. The function optionally takes a number of named options specified as C<< -Name => value >> pairs. This allows individual options to be tailored without having to specify them all in the parameter list. For backward compatibility, it is also possible to pass the parameters as a reference to a hash containing the C<< name=>value >> pairs. Here is a list of the valid options: =over 5 =item B<-WindowBits> To uncompress an RFC 1950 data stream, set C to a positive number between 8 and 15. To uncompress an RFC 1951 data stream, set C to C<-MAX_WBITS>. To uncompress an RFC 1952 data stream (i.e. gzip), set C to C. To auto-detect and uncompress an RFC 1950 or RFC 1952 data stream (i.e. gzip), set C to C. For a full definition of the meaning and valid values for C refer to the I documentation for I. Defaults to C. =item B<-Bufsize> Sets the initial size for the output buffer used by the C<$i-Einflate> method. If the output buffer in this method has to be reallocated to increase the size, it will grow in increments of C. Default is 4096. =item B<-Dictionary> The default is no dictionary. =item B<-AppendOutput> This option controls how data is written to the output buffer by the C<$i-Einflate> method. If the option is set to false, the output buffer in the C<$i-Einflate> method will be truncated before uncompressed data is written to it. If the option is set to true, uncompressed data will be appended to the output buffer by the C<$i-Einflate> method. This option defaults to false. =item B<-CRC32> If set to true, a crc32 checksum of the uncompressed data will be calculated. Use the C<$i-Ecrc32> method to retrieve this value. This option defaults to false. =item B<-ADLER32> If set to true, an adler32 checksum of the uncompressed data will be calculated. Use the C<$i-Eadler32> method to retrieve this value. This option defaults to false. =item B<-ConsumeInput> If set to true, this option will remove compressed data from the input buffer of the C<< $i->inflate >> method as the inflate progresses. This option can be useful when you are processing compressed data that is embedded in another file/buffer. In this case the data that immediately follows the compressed stream will be left in the input buffer. This option defaults to true. =item B<-LimitOutput> The C option changes the behavior of the C<< $i->inflate >> method so that the amount of memory used by the output buffer can be limited. When C is used the size of the output buffer used will either be the value of the C option or the amount of memory already allocated to C<$output>, whichever is larger. Predicting the output size available is tricky, so don't rely on getting an exact output buffer size. When C is not specified C<< $i->inflate >> will use as much memory as it takes to write all the uncompressed data it creates by uncompressing the input buffer. If C is enabled, the C option will also be enabled. This option defaults to false. See L for a discussion on why C is needed and how to use it. =back Here is an example of using an optional parameter to override the default buffer size. my ($i, $status) = new Compress::Raw::Zlib::Inflate( -Bufsize => 300 ) ; =head2 B< $status = $i-Einflate($input, $output [,$eof]) > Inflates the complete contents of C<$input> and writes the uncompressed data to C<$output>. The C<$input> and C<$output> parameters can either be scalars or scalar references. Returns C if successful and C if the end of the compressed data has been successfully reached. If not successful C<$status> will hold the I error code. If the C option has been set to true when the C object is created, the C<$input> parameter is modified by C. On completion it will contain what remains of the input buffer after inflation. In practice, this means that when the return status is C the C<$input> parameter will contain an empty string, and when the return status is C the C<$input> parameter will contains what (if anything) was stored in the input buffer after the deflated data stream. This feature is useful when processing a file format that encapsulates a compressed data stream (e.g. gzip, zip) and there is useful data immediately after the deflation stream. If the C option is set to true in the constructor for this object, the uncompressed data will be appended to C<$output>. If it is false, C<$output> will be truncated before any uncompressed data is written to it. The C<$eof> parameter needs a bit of explanation. Prior to version 1.2.0, zlib assumed that there was at least one trailing byte immediately after the compressed data stream when it was carrying out decompression. This normally isn't a problem because the majority of zlib applications guarantee that there will be data directly after the compressed data stream. For example, both gzip (RFC 1950) and zip both define trailing data that follows the compressed data stream. The C<$eof> parameter only needs to be used if B of the following conditions apply =over 5 =item 1 You are either using a copy of zlib that is older than version 1.2.0 or you want your application code to be able to run with as many different versions of zlib as possible. =item 2 You have set the C parameter to C<-MAX_WBITS> in the constructor for this object, i.e. you are uncompressing a raw deflated data stream (RFC 1951). =item 3 There is no data immediately after the compressed data stream. =back If B of these are the case, then you need to set the C<$eof> parameter to true on the final call (and only the final call) to C<$i-Einflate>. If you have built this module with zlib >= 1.2.0, the C<$eof> parameter is ignored. You can still set it if you want, but it won't be used behind the scenes. =head2 B<$status = $i-EinflateSync($input)> This method can be used to attempt to recover good data from a compressed data stream that is partially corrupt. It scans C<$input> until it reaches either a I or the end of the buffer. If a I is found, C is returned and C<$input> will be have all data up to the flush point removed. This data can then be passed to the C<$i-Einflate> method to be uncompressed. Any other return code means that a flush point was not found. If more data is available, C can be called repeatedly with more compressed data until the flush point is found. Note I are not present by default in compressed data streams. They must have been added explicitly when the data stream was created by calling C with C. =head2 B<$status = $i-EinflateReset() > This method will reset the inflation object C<$i>. It can be used when you are uncompressing multiple data streams and want to use the same object to uncompress each of them. Returns C if successful. =head2 B<$i-Edict_adler()> Returns the adler32 value for the dictionary. =head2 B<$i-Ecrc32()> Returns the crc32 value for the uncompressed data to date. If the C option is not enabled in the constructor for this object, this method will always return 0; =head2 B<$i-Eadler32()> Returns the adler32 value for the uncompressed data to date. If the C option is not enabled in the constructor for this object, this method will always return 0; =head2 B<$i-Emsg()> Returns the last error message generated by zlib. =head2 B<$i-Etotal_in()> Returns the total number of bytes compressed bytes input to inflate. =head2 B<$i-Etotal_out()> Returns the total number of uncompressed bytes output from inflate. =head2 B<$d-Eget_BufSize()> Returns the buffer size used to carry out the decompression. =head2 Examples Here is an example of using C. use strict ; use warnings ; use Compress::Raw::Zlib; my $x = new Compress::Raw::Zlib::Inflate() or die "Cannot create a inflation stream\n" ; my $input = '' ; binmode STDIN; binmode STDOUT; my ($output, $status) ; while (read(STDIN, $input, 4096)) { $status = $x->inflate($input, $output) ; print $output ; last if $status != Z_OK ; } die "inflation failed\n" unless $status == Z_STREAM_END ; The next example show how to use the C option. Notice the use of two nested loops in this case. The outer loop reads the data from the input source - STDIN and the inner loop repeatedly calls C until C<$input> is exhausted, we get an error, or the end of the stream is reached. One point worth remembering is by using the C option you also get C set as well - this makes the code below much simpler. use strict ; use warnings ; use Compress::Raw::Zlib; my $x = new Compress::Raw::Zlib::Inflate(LimitOutput => 1) or die "Cannot create a inflation stream\n" ; my $input = '' ; binmode STDIN; binmode STDOUT; my ($output, $status) ; OUTER: while (read(STDIN, $input, 4096)) { do { $status = $x->inflate($input, $output) ; print $output ; last OUTER unless $status == Z_OK || $status == Z_BUF_ERROR ; } while ($status == Z_OK && length $input); } die "inflation failed\n" unless $status == Z_STREAM_END ; =head1 CHECKSUM FUNCTIONS Two functions are provided by I to calculate checksums. For the Perl interface, the order of the two parameters in both functions has been reversed. This allows both running checksums and one off calculations to be done. $crc = adler32($buffer [,$crc]) ; $crc = crc32($buffer [,$crc]) ; The buffer parameters can either be a scalar or a scalar reference. If the $crc parameters is C, the crc value will be reset. If you have built this module with zlib 1.2.3 or better, two more CRC-related functions are available. $crc = crc32_combine($crc1, $crc2, $len2); $adler = adler32_combine($adler1, $adler2, $len2); These functions allow checksums to be merged. Refer to the I documentation for more details. =head1 Misc =head2 my $version = Compress::Raw::Zlib::zlib_version(); Returns the version of the zlib library. =head2 my $flags = Compress::Raw::Zlib::zlibCompileFlags(); Returns the flags indicating compile-time options that were used to build the zlib library. See the zlib documentation for a description of the flags returned by C. Note that when the zlib sources are built along with this module the C flags (bits 24, 25 and 26) should be ignored. If you are using zlib 1.2.0 or older, C will return 0. =head1 The LimitOutput option. By default C<< $i->inflate($input, $output) >> will uncompress I data in C<$input> and write I of the uncompressed data it has generated to C<$output>. This makes the interface to C much simpler - if the method has uncompressed C<$input> successfully I compressed data in C<$input> will have been dealt with. So if you are reading from an input source and uncompressing as you go the code will look something like this use strict ; use warnings ; use Compress::Raw::Zlib; my $x = new Compress::Raw::Zlib::Inflate() or die "Cannot create a inflation stream\n" ; my $input = '' ; my ($output, $status) ; while (read(STDIN, $input, 4096)) { $status = $x->inflate($input, $output) ; print $output ; last if $status != Z_OK ; } die "inflation failed\n" unless $status == Z_STREAM_END ; The points to note are =over 5 =item * The main processing loop in the code handles reading of compressed data from STDIN. =item * The status code returned from C will only trigger termination of the main processing loop if it isn't C. When C has not been used the C status means that the end of the compressed data stream has been reached or there has been an error in uncompression. =item * After the call to C I of the uncompressed data in C<$input> will have been processed. This means the subsequent call to C can overwrite it's contents without any problem. =back For most use-cases the behavior described above is acceptable (this module and it's predecessor, C, have used it for over 10 years without an issue), but in a few very specific use-cases the amount of memory required for C<$output> can prohibitively large. For example, if the compressed data stream contains the same pattern repeated thousands of times, a relatively small compressed data stream can uncompress into hundreds of megabytes. Remember C will keep allocating memory until I the uncompressed data has been written to the output buffer - the size of C<$output> is unbounded. The C option is designed to help with this use-case. The main difference in your code when using C is having to deal with cases where the C<$input> parameter still contains some uncompressed data that C hasn't processed yet. The status code returned from C will be C if uncompression took place and C if the output buffer is full. Below is typical code that shows how to use C. use strict ; use warnings ; use Compress::Raw::Zlib; my $x = new Compress::Raw::Zlib::Inflate(LimitOutput => 1) or die "Cannot create a inflation stream\n" ; my $input = '' ; binmode STDIN; binmode STDOUT; my ($output, $status) ; OUTER: while (read(STDIN, $input, 4096)) { do { $status = $x->inflate($input, $output) ; print $output ; last OUTER unless $status == Z_OK || $status == Z_BUF_ERROR ; } while ($status == Z_OK && length $input); } die "inflation failed\n" unless $status == Z_STREAM_END ; Points to note this time: =over 5 =item * There are now two nested loops in the code: the outer loop for reading the compressed data from STDIN, as before; and the inner loop to carry out the uncompression. =item * There are two exit points from the inner uncompression loop. Firstly when C has returned a status other than C or C. This means that either the end of the compressed data stream has been reached (C) or there is an error in the compressed data. In either of these cases there is no point in continuing with reading the compressed data, so both loops are terminated. The second exit point tests if there is any data left in the input buffer, C<$input> - remember that the C option is automatically enabled when C is used. When the input buffer has been exhausted, the outer loop can run again and overwrite a now empty C<$input>. =back =head1 ACCESSING ZIP FILES Although it is possible (with some effort on your part) to use this module to access .zip files, there are other perl modules available that will do all the hard work for you. Check out C, C, C and C. =head1 FAQ =head2 Compatibility with Unix compress/uncompress. This module is not compatible with Unix C. If you have the C program available, you can use this to read compressed files open F, "uncompress -c $filename |"; while () { ... Alternatively, if you have the C program available, you can use this to read compressed files open F, "gunzip -c $filename |"; while () { ... and this to write compress files, if you have the C program available open F, "| compress -c $filename "; print F "data"; ... close F ; =head2 Accessing .tar.Z files See previous FAQ item. If the C module is installed and either the C or C programs are available, you can use one of these workarounds to read C<.tar.Z> files. Firstly with C use strict; use warnings; use Archive::Tar; open F, "uncompress -c $filename |"; my $tar = Archive::Tar->new(*F); ... and this with C use strict; use warnings; use Archive::Tar; open F, "gunzip -c $filename |"; my $tar = Archive::Tar->new(*F); ... Similarly, if the C program is available, you can use this to write a C<.tar.Z> file use strict; use warnings; use Archive::Tar; use IO::File; my $fh = new IO::File "| compress -c >$filename"; my $tar = Archive::Tar->new(); ... $tar->write($fh); $fh->close ; =head2 Zlib Library Version Support By default C will build with a private copy of version 1.2.5 of the zlib library. (See the F file for details of how to override this behaviour) If you decide to use a different version of the zlib library, you need to be aware of the following issues =over 5 =item * First off, you must have zlib 1.0.5 or better. =item * You need to have zlib 1.2.1 or better if you want to use the C<-Merge> option with C, C and C. =back =head1 CONSTANTS All the I constants are automatically imported when you make use of I. =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L For RFC 1950, 1951 and 1952 see L, L and L The I compression library was written by Jean-loup Gailly C and Mark Adler C. The primary site for the I compression library is L. The primary site for gzip is L. =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005-2022 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILEf29c5e06/Config.pm # This file was created by configpm when Perl was built. Any changes # made to this file will be lost the next time perl is built. # for a description of the variables, please have a look at the # Glossary file, as written in the Porting folder, or use the url: # https://github.com/Perl/perl5/blob/blead/Porting/Glossary package Config; use strict; use warnings; our ( %Config, $VERSION ); $VERSION = "5.036000"; # Skip @Config::EXPORT because it only contains %Config, which we special # case below as it's not a function. @Config::EXPORT won't change in the # lifetime of Perl 5. my %Export_Cache = (myconfig => 1, config_sh => 1, config_vars => 1, config_re => 1, compile_date => 1, local_patches => 1, bincompat_options => 1, non_bincompat_options => 1, header_files => 1); @Config::EXPORT = qw(%Config); @Config::EXPORT_OK = keys %Export_Cache; # Need to stub all the functions to make code such as print Config::config_sh # keep working sub bincompat_options; sub compile_date; sub config_re; sub config_sh; sub config_vars; sub header_files; sub local_patches; sub myconfig; sub non_bincompat_options; # Define our own import method to avoid pulling in the full Exporter: sub import { shift; @_ = @Config::EXPORT unless @_; my @funcs = grep $_ ne '%Config', @_; my $export_Config = @funcs < @_ ? 1 : 0; no strict 'refs'; my $callpkg = caller(0); foreach my $func (@funcs) { die qq{"$func" is not exported by the Config module\n} unless $Export_Cache{$func}; *{$callpkg.'::'.$func} = \&{$func}; } *{"$callpkg\::Config"} = \%Config if $export_Config; return; } die "$0: Perl lib version (5.36.0) doesn't match executable '$^X' version ($])" unless $^V; $^V eq 5.36.0 or die sprintf "%s: Perl lib version (5.36.0) doesn't match executable '$^X' version (%vd)", $0, $^V; sub FETCH { my($self, $key) = @_; # check for cached value (which may be undef so we use exists not defined) return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key); } sub TIEHASH { bless $_[1], $_[0]; } sub DESTROY { } sub AUTOLOAD { require 'Config_heavy.pl'; goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/; die "&Config::AUTOLOAD failed on $Config::AUTOLOAD"; } # tie returns the object, so the value returned to require will be true. tie %Config, 'Config', { archlibexp => '/usr/local/lib/perl5/5.36.0/aarch64-linux-gnu', archname => 'aarch64-linux-gnu', cc => 'cc', d_readlink => 'define', d_symlink => 'define', dlext => 'so', dlsrc => 'dl_dlopen.xs', dont_use_nlink => undef, exe_ext => '', inc_version_list => ' ', intsize => '4', ldlibpthname => 'LD_LIBRARY_PATH', libpth => '/usr/local/lib /usr/lib/aarch64-linux-gnu /usr/lib /lib/aarch64-linux-gnu /lib', osname => 'linux', osvers => '5.10.0-19-cloud-arm64', path_sep => ':', privlibexp => '/usr/local/lib/perl5/5.36.0', scriptdir => '/usr/local/bin', sitearchexp => '/usr/local/lib/perl5/site_perl/5.36.0/aarch64-linux-gnu', sitelibexp => '/usr/local/lib/perl5/site_perl/5.36.0', so => 'so', useithreads => undef, usevendorprefix => 'define', version => '5.36.0', }; FILEc33fbebe/Config_git.pl###################################################################### # WARNING: 'lib/Config_git.pl' is generated by make_patchnum.pl # DO NOT EDIT DIRECTLY - edit make_patchnum.pl instead ###################################################################### $Config::Git_Data=<<'ENDOFGIT'; git_commit_id='' git_describe='' git_branch='' git_uncommitted_changes='' git_commit_id_title='' ENDOFGIT FILE11d6a5a7/Config_heavy.pl# This file was created by configpm when Perl was built. Any changes # made to this file will be lost the next time perl is built. package Config; use strict; use warnings; our %Config; sub bincompat_options { return split ' ', (Internals::V())[0]; } sub non_bincompat_options { return split ' ', (Internals::V())[1]; } sub compile_date { return (Internals::V())[2] } sub local_patches { my (undef, undef, undef, @patches) = Internals::V(); return @patches; } sub _V { die "Perl lib was built for 'linux' but is being run on '$^O'" unless "linux" eq $^O; my ($bincompat, $non_bincompat, $date, @patches) = Internals::V(); my @opts = sort split ' ', "$bincompat $non_bincompat"; print Config::myconfig(); print "\nCharacteristics of this binary (from libperl): \n"; print " Compile-time options:\n"; print " $_\n" for @opts; if (@patches) { print " Locally applied patches:\n"; print " $_\n" foreach @patches; } print " Built under linux\n"; print " $date\n" if defined $date; my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %ENV; if (@env) { print " \%ENV:\n"; print " $_\n" foreach @env; } print " \@INC:\n"; print " $_\n" foreach @INC; } sub header_files { return qw(EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h embed.h embedvar.h form.h gv.h handy.h hv.h hv_func.h intrpvar.h iperlsys.h keywords.h mg.h nostdio.h op.h opcode.h pad.h parser.h patchlevel.h perl.h perlio.h perliol.h perlsdio.h perlvars.h perly.h pp.h pp_proto.h proto.h regcomp.h regexp.h regnodes.h scope.h sv.h thread.h time64.h unixish.h utf8.h util.h); } ## ## This file was produced by running the Configure script. It holds all the ## definitions figured out by Configure. Should you modify one of these values, ## do not forget to propagate your changes by running "Configure -der". You may ## instead choose to run each of the .SH files by yourself, or "Configure -S". ## # ## Package name : perl5 ## Source directory : . ## Configuration time: Wed Apr 12 05:22:22 UTC 2023 ## Configured by : root ## Target system : linux 5060076c3d3c 5.10.0-19-cloud-arm64 #1 smp debian 5.10.149-1 (2022-10-17) aarch64 gnulinux # #: Configure command line arguments. # #: Variables propagated from previous config.sh file. our $summary = <<'!END!'; Summary of my $package (revision $revision $version_patchlevel_string) configuration: $git_commit_id_title $git_commit_id$git_ancestor_line Platform: osname=$osname osvers=$osvers archname=$archname uname='$myuname' config_args='$config_args' hint=$hint useposix=$useposix d_sigaction=$d_sigaction useithreads=$useithreads usemultiplicity=$usemultiplicity use64bitint=$use64bitint use64bitall=$use64bitall uselongdouble=$uselongdouble usemymalloc=$usemymalloc default_inc_excludes_dot=$default_inc_excludes_dot Compiler: cc='$cc' ccflags ='$ccflags' optimize='$optimize' cppflags='$cppflags' ccversion='$ccversion' gccversion='$gccversion' gccosandvers='$gccosandvers' intsize=$intsize longsize=$longsize ptrsize=$ptrsize doublesize=$doublesize byteorder=$byteorder doublekind=$doublekind d_longlong=$d_longlong longlongsize=$longlongsize d_longdbl=$d_longdbl longdblsize=$longdblsize longdblkind=$longdblkind ivtype='$ivtype' ivsize=$ivsize nvtype='$nvtype' nvsize=$nvsize Off_t='$lseektype' lseeksize=$lseeksize alignbytes=$alignbytes prototype=$prototype Linker and Libraries: ld='$ld' ldflags ='$ldflags' libpth=$libpth libs=$libs perllibs=$perllibs libc=$libc so=$so useshrplib=$useshrplib libperl=$libperl gnulibc_version='$gnulibc_version' Dynamic Linking: dlsrc=$dlsrc dlext=$dlext d_dlsymun=$d_dlsymun ccdlflags='$ccdlflags' cccdlflags='$cccdlflags' lddlflags='$lddlflags' !END! my $summary_expanded; sub myconfig { return $summary_expanded if $summary_expanded; ($summary_expanded = $summary) =~ s{\$(\w+)} { my $c; if ($1 eq 'git_ancestor_line') { if ($Config::Config{git_ancestor}) { $c= "\n Ancestor: $Config::Config{git_ancestor}"; } else { $c= ""; } } else { $c = $Config::Config{$1}; } defined($c) ? $c : 'undef' }ge; $summary_expanded; } local *_ = \my $a; $_ = <<'!END!'; Author='' CONFIG='true' Date='' Header='' Id='' Locker='' Log='' PATCHLEVEL='36' PERL_API_REVISION='5' PERL_API_SUBVERSION='0' PERL_API_VERSION='36' PERL_CONFIG_SH='true' PERL_PATCHLEVEL='' PERL_REVISION='5' PERL_SUBVERSION='0' PERL_VERSION='36' RCSfile='' Revision='' SUBVERSION='0' Source='' State='' _a='.a' _exe='' _o='.o' afs='false' afsroot='/afs' alignbytes='8' aphostname='/bin/hostname' api_revision='5' api_subversion='0' api_version='36' api_versionstring='5.36.0' ar='ar' archlib='/usr/local/lib/perl5/5.36.0/aarch64-linux-gnu' archlibexp='/usr/local/lib/perl5/5.36.0/aarch64-linux-gnu' archname='aarch64-linux-gnu' archname64='' archobjs='' asctime_r_proto='0' awk='awk' baserev='5.0' bash='' bin='/usr/local/bin' bin_ELF='define' binexp='/usr/local/bin' bison='bison' byacc='byacc' byteorder='12345678' c='' castflags='1' cat='cat' cc='cc' cccdlflags='-fPIC' ccdlflags='-Wl,-E -Wl,-rpath,/usr/local/lib/perl5/5.36.0/aarch64-linux-gnu/CORE' ccflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='gcc' ccsymbols='' ccversion='' cf_by='root' cf_email='root@5060076c3d3c.us-west-2.compute.internal' cf_time='Wed Apr 12 05:22:22 UTC 2023' charbits='8' charsize='1' chgrp='' chmod='chmod' chown='' clocktype='clock_t' comm='comm' compiler_warning='grep -i warning' compress='' config_arg0='./Configure' config_arg1='-Darchname=aarch64-linux-gnu' config_arg2='-Duse64bitall' config_arg3='-Duseshrplib' config_arg4='-Dvendorprefix=/usr/local' config_arg5='-des' config_argc='5' config_args='-Darchname=aarch64-linux-gnu -Duse64bitall -Duseshrplib -Dvendorprefix=/usr/local -des' contains='grep' cp='cp' cpio='' cpp='cpp' cpp_stuff='42' cppccsymbols='' cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include' cpplast='-' cppminus='-' cpprun='cc -E' cppstdin='cc -E' cppsymbols='_FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE=1 _LP64=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _STDC_PREDEF_H=1 __AARCH64EL__=1 __AARCH64_CMODEL_SMALL__=1 __ARM_64BIT_STATE=1 __ARM_ALIGN_MAX_PWR=28 __ARM_ALIGN_MAX_STACK_PWR=16 __ARM_ARCH=8 __ARM_ARCH_8A=1 __ARM_ARCH_ISA_A64=1 __ARM_ARCH_PROFILE=65 __ARM_FEATURE_CLZ=1 __ARM_FEATURE_FMA=1 __ARM_FEATURE_IDIV=1 __ARM_FEATURE_NUMERIC_MAXMIN=1 __ARM_FEATURE_UNALIGNED=1 __ARM_FP16_ARGS=1 __ARM_FP16_FORMAT_IEEE=1 __ARM_FP=14 __ARM_NEON=1 __ARM_PCS_AAPCS64=1 __ARM_SIZEOF_MINIMAL_ENUM=4 __ARM_SIZEOF_WCHAR_T=4 __ATOMIC_ACQUIRE=2 __ATOMIC_ACQ_REL=4 __ATOMIC_CONSUME=1 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __CHAR_UNSIGNED__=1 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.94065645841246544176568792868221372e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308084726333618164062e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.22507385850720138309023271733240406e-308L) __DEC128_EPSILON__=1E-33DL __DEC128_MANT_DIG__=34 __DEC128_MAX_EXP__=6145 __DEC128_MAX__=9.999999999999999999999999999999999E6144DL __DEC128_MIN_EXP__=(-6142) __DEC128_MIN__=1E-6143DL __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL __DEC32_EPSILON__=1E-6DF __DEC32_MANT_DIG__=7 __DEC32_MAX_EXP__=97 __DEC32_MAX__=9.999999E96DF __DEC32_MIN_EXP__=(-94) __DEC32_MIN__=1E-95DF __DEC32_SUBNORMAL_MIN__=0.000001E-95DF __DEC64_EPSILON__=1E-15DD __DEC64_MANT_DIG__=16 __DEC64_MAX_EXP__=385 __DEC64_MAX__=9.999999999999999E384DD __DEC64_MIN_EXP__=(-382) __DEC64_MIN__=1E-383DD __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD __DECIMAL_DIG__=36 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT128_DECIMAL_DIG__=36 __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128 __FLT128_DIG__=33 __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128 __FLT128_HAS_DENORM__=1 __FLT128_HAS_INFINITY__=1 __FLT128_HAS_QUIET_NAN__=1 __FLT128_MANT_DIG__=113 __FLT128_MAX_10_EXP__=4932 __FLT128_MAX_EXP__=16384 __FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT128_MIN_10_EXP__=(-4931) __FLT128_MIN_EXP__=(-16381) __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128 __FLT16_DECIMAL_DIG__=5 __FLT16_DENORM_MIN__=5.96046447753906250000000000000000000e-8F16 __FLT16_DIG__=3 __FLT16_EPSILON__=9.76562500000000000000000000000000000e-4F16 __FLT16_HAS_DENORM__=1 __FLT16_HAS_INFINITY__=1 __FLT16_HAS_QUIET_NAN__=1 __FLT16_MANT_DIG__=11 __FLT16_MAX_10_EXP__=4 __FLT16_MAX_EXP__=16 __FLT16_MAX__=6.55040000000000000000000000000000000e+4F16 __FLT16_MIN_10_EXP__=(-4) __FLT16_MIN_EXP__=(-13) __FLT16_MIN__=6.10351562500000000000000000000000000e-5F16 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX_EXP__=1024 __FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN_EXP__=(-1021) __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX_EXP__=128 __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN_EXP__=(-125) __FLT32_MIN__=1.17549435082228750796873653722224568e-38F32 __FLT64X_DECIMAL_DIG__=36 __FLT64X_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F64x __FLT64X_DIG__=33 __FLT64X_EPSILON__=1.92592994438723585305597794258492732e-34F64x __FLT64X_HAS_DENORM__=1 __FLT64X_HAS_INFINITY__=1 __FLT64X_HAS_QUIET_NAN__=1 __FLT64X_MANT_DIG__=113 __FLT64X_MAX_10_EXP__=4932 __FLT64X_MAX_EXP__=16384 __FLT64X_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64X_MIN_10_EXP__=(-4931) __FLT64X_MIN_EXP__=(-16381) __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX_EXP__=1024 __FLT64_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN_EXP__=(-1021) __FLT64_MIN__=2.22507385850720138309023271733240406e-308F64 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F __FLT_EVAL_METHOD_C99__=0 __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_EVAL_METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.40282346638528859811704183484516925e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.17549435082228750796873653722224568e-38F __FLT_RADIX__=2 __FP_FAST_FMA=1 __FP_FAST_FMAF32=1 __FP_FAST_FMAF32x=1 __FP_FAST_FMAF64=1 __FP_FAST_FMAF=1 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_DWARF2_CFI_ASM=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC_MINOR__=28 __GLIBC__=2 __GNUC_MINOR__=3 __GNUC_PATCHLEVEL__=0 __GNUC_STDC_INLINE__=1 __GNUC__=8 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1013 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffL __INT64_TYPE__=long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffL __INTMAX_TYPE__=long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffffffffffffL __INTPTR_TYPE__=long\ int __INTPTR_WIDTH__=64 __INT_FAST16_MAX__=0x7fffffffffffffffL __INT_FAST16_TYPE__=long\ int __INT_FAST16_WIDTH__=64 __INT_FAST32_MAX__=0x7fffffffffffffffL __INT_FAST32_TYPE__=long\ int __INT_FAST32_WIDTH__=64 __INT_FAST64_MAX__=0x7fffffffffffffffL __INT_FAST64_TYPE__=long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffL __INT_LEAST64_TYPE__=long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INT_WIDTH__=32 __LDBL_DECIMAL_DIG__=36 __LDBL_DENORM_MIN__=6.47517511943802511092443895822764655e-4966L __LDBL_DIG__=33 __LDBL_EPSILON__=1.92592994438723585305597794258492732e-34L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=113 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX_EXP__=16384 __LDBL_MAX__=1.18973149535723176508575932662800702e+4932L __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN_EXP__=(-16381) __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffffffffffL __LONG_WIDTH__=64 __LP64__=1 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __PIC__=2 __PIE__=2 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffffffffffffL __PTRDIFF_TYPE__=long\ int __PTRDIFF_WIDTH__=64 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT128__=16 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=0xffffffffffffffffUL __SIZE_TYPE__=long\ unsigned\ int __SIZE_WIDTH__=64 __STDC_HOSTED__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_IEC_559__=1 __STDC_ISO_10646__=201706L __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __STDC__=1 __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffUL __UINT64_TYPE__=long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffUL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=0xffffffffffffffffUL __UINTPTR_TYPE__=long\ unsigned\ int __UINT_FAST16_MAX__=0xffffffffffffffffUL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=0xffffffffffffffffUL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffUL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffUL __UINT_LEAST64_TYPE__=long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __VERSION__="8.3.0" __WCHAR_MAX__=0xffffffffU __WCHAR_MIN__=0U __WCHAR_TYPE__=unsigned\ int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __aarch64__=1 __gnu_linux__=1 __has_include=__has_include __has_include_next=__has_include_next __linux=1 __linux__=1 __pic__=2 __pie__=2 __unix=1 __unix__=1 linux=1 unix=1' crypt_r_proto='0' cryptlib='' csh='csh' ctermid_r_proto='0' ctime_r_proto='0' d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' d_PRIXU64='define' d_PRId64='define' d_PRIeldbl='define' d_PRIfldbl='define' d_PRIgldbl='define' d_PRIi64='define' d_PRIo64='define' d_PRIu64='define' d_PRIx64='define' d_SCNfldbl='define' d__fwalk='undef' d_accept4='define' d_access='define' d_accessx='undef' d_acosh='define' d_aintl='undef' d_alarm='define' d_archlib='define' d_asctime64='undef' d_asctime_r='undef' d_asinh='define' d_atanh='define' d_atolf='undef' d_atoll='define' d_attribute_always_inline='define' d_attribute_deprecated='define' d_attribute_format='define' d_attribute_malloc='define' d_attribute_nonnull='define' d_attribute_noreturn='define' d_attribute_pure='define' d_attribute_unused='define' d_attribute_warn_unused_result='define' d_backtrace='define' d_bsd='undef' d_bsdgetpgrp='undef' d_bsdsetpgrp='undef' d_builtin_add_overflow='define' d_builtin_choose_expr='define' d_builtin_expect='define' d_builtin_mul_overflow='define' d_builtin_sub_overflow='define' d_c99_variadic_macros='define' d_casti32='define' d_castneg='undef' d_cbrt='define' d_chown='define' d_chroot='define' d_chsize='undef' d_class='undef' d_clearenv='define' d_closedir='define' d_cmsghdr_s='define' d_copysign='define' d_copysignl='define' d_cplusplus='undef' d_crypt='define' d_crypt_r='undef' d_csh='undef' d_ctermid='define' d_ctermid_r='undef' d_ctime64='undef' d_ctime_r='undef' d_cuserid='define' d_dbminitproto='undef' d_difftime='define' d_difftime64='undef' d_dir_dd_fd='undef' d_dirfd='define' d_dirnamlen='undef' d_dladdr='define' d_dlerror='define' d_dlopen='define' d_dlsymun='undef' d_dosuid='undef' d_double_has_inf='define' d_double_has_nan='define' d_double_has_negative_zero='define' d_double_has_subnormals='define' d_double_style_cray='undef' d_double_style_ibm='undef' d_double_style_ieee='define' d_double_style_vax='undef' d_drand48_r='undef' d_drand48proto='define' d_dup2='define' d_dup3='define' d_duplocale='define' d_eaccess='define' d_endgrent='define' d_endgrent_r='undef' d_endhent='define' d_endhostent_r='undef' d_endnent='define' d_endnetent_r='undef' d_endpent='define' d_endprotoent_r='undef' d_endpwent='define' d_endpwent_r='undef' d_endsent='define' d_endservent_r='undef' d_eofnblk='define' d_erf='define' d_erfc='define' d_eunice='undef' d_exp2='define' d_expm1='define' d_faststdio='undef' d_fchdir='define' d_fchmod='define' d_fchmodat='define' d_fchown='define' d_fcntl='define' d_fcntl_can_lock='define' d_fd_macros='define' d_fd_set='define' d_fdclose='undef' d_fdim='define' d_fds_bits='undef' d_fegetround='define' d_ffs='define' d_ffsl='define' d_fgetpos='define' d_finite='define' d_finitel='define' d_flexfnam='define' d_flock='define' d_flockproto='define' d_fma='define' d_fmax='define' d_fmin='define' d_fork='define' d_fp_class='undef' d_fp_classify='undef' d_fp_classl='undef' d_fpathconf='define' d_fpclass='undef' d_fpclassify='define' d_fpclassl='undef' d_fpgetround='undef' d_fpos64_t='undef' d_freelocale='define' d_frexpl='define' d_fs_data_s='undef' d_fseeko='define' d_fsetpos='define' d_fstatfs='define' d_fstatvfs='define' d_fsync='define' d_ftello='define' d_ftime='undef' d_futimes='define' d_gai_strerror='define' d_gdbm_ndbm_h_uses_prototypes='undef' d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' d_getgrent_r='undef' d_getgrgid_r='undef' d_getgrnam_r='undef' d_getgrps='define' d_gethbyaddr='define' d_gethbyname='define' d_gethent='define' d_gethname='define' d_gethostbyaddr_r='undef' d_gethostbyname_r='undef' d_gethostent_r='undef' d_gethostprotos='define' d_getitimer='define' d_getlogin='define' d_getlogin_r='undef' d_getmnt='undef' d_getmntent='define' d_getnameinfo='define' d_getnbyaddr='define' d_getnbyname='define' d_getnent='define' d_getnetbyaddr_r='undef' d_getnetbyname_r='undef' d_getnetent_r='undef' d_getnetprotos='define' d_getpagsz='define' d_getpbyname='define' d_getpbynumber='define' d_getpent='define' d_getpgid='define' d_getpgrp='define' d_getpgrp2='undef' d_getppid='define' d_getprior='define' d_getprotobyname_r='undef' d_getprotobynumber_r='undef' d_getprotoent_r='undef' d_getprotoprotos='define' d_getprpwnam='undef' d_getpwent='define' d_getpwent_r='undef' d_getpwnam_r='undef' d_getpwuid_r='undef' d_getsbyname='define' d_getsbyport='define' d_getsent='define' d_getservbyname_r='undef' d_getservbyport_r='undef' d_getservent_r='undef' d_getservprotos='define' d_getspnam='define' d_getspnam_r='undef' d_gettimeod='define' d_gmtime64='undef' d_gmtime_r='undef' d_gnulibc='define' d_grpasswd='define' d_has_C_UTF8='true' d_hasmntopt='define' d_htonl='define' d_hypot='define' d_ilogb='define' d_ilogbl='define' d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' d_int64_t='define' d_ip_mreq='define' d_ip_mreq_source='define' d_ipv6_mreq='define' d_ipv6_mreq_source='undef' d_isascii='define' d_isblank='define' d_isfinite='define' d_isfinitel='undef' d_isinf='define' d_isinfl='define' d_isless='define' d_isnan='define' d_isnanl='define' d_isnormal='define' d_j0='define' d_j0l='define' d_killpg='define' d_lc_monetary_2008='define' d_lchown='define' d_ldbl_dig='define' d_ldexpl='define' d_lgamma='define' d_lgamma_r='define' d_libm_lib_version='undef' d_libname_unique='undef' d_link='define' d_linkat='define' d_llrint='define' d_llrintl='define' d_llround='define' d_llroundl='define' d_localeconv_l='undef' d_localtime64='undef' d_localtime_r='undef' d_localtime_r_needs_tzset='undef' d_locconv='define' d_lockf='define' d_log1p='define' d_log2='define' d_logb='define' d_long_double_style_ieee='define' d_long_double_style_ieee_doubledouble='undef' d_long_double_style_ieee_extended='undef' d_long_double_style_ieee_std='define' d_long_double_style_vax='undef' d_longdbl='define' d_longlong='define' d_lrint='define' d_lrintl='define' d_lround='define' d_lroundl='define' d_lseekproto='define' d_lstat='define' d_madvise='define' d_malloc_good_size='undef' d_malloc_size='undef' d_malloc_usable_size='define' d_mblen='define' d_mbrlen='define' d_mbrtowc='define' d_mbstowcs='define' d_mbtowc='define' d_memmem='define' d_memrchr='define' d_mkdir='define' d_mkdtemp='define' d_mkfifo='define' d_mkostemp='define' d_mkstemp='define' d_mkstemps='define' d_mktime='define' d_mktime64='undef' d_mmap='define' d_modfl='define' d_modflproto='define' d_mprotect='define' d_msg='define' d_msg_ctrunc='define' d_msg_dontroute='define' d_msg_oob='define' d_msg_peek='define' d_msg_proxy='define' d_msgctl='define' d_msgget='define' d_msghdr_s='define' d_msgrcv='define' d_msgsnd='define' d_msync='define' d_munmap='define' d_mymalloc='undef' d_nan='define' d_nanosleep='define' d_ndbm='undef' d_ndbm_h_uses_prototypes='undef' d_nearbyint='define' d_newlocale='define' d_nextafter='define' d_nexttoward='define' d_nice='define' d_nl_langinfo='define' d_nl_langinfo_l='undef' d_non_int_bitfields='define' d_nv_preserves_uv='undef' d_nv_zero_is_allbits_zero='define' d_off64_t='undef' d_old_pthread_create_joinable='undef' d_oldpthreads='undef' d_oldsock='undef' d_open3='define' d_openat='define' d_pathconf='define' d_pause='define' d_perl_otherlibdirs='undef' d_phostname='undef' d_pipe='define' d_pipe2='define' d_poll='define' d_portable='define' d_prctl='define' d_prctl_set_name='define' d_printf_format_null='define' d_procselfexe='define' d_pseudofork='undef' d_pthread_atfork='define' d_pthread_attr_setscope='define' d_pthread_yield='define' d_ptrdiff_t='define' d_pwage='undef' d_pwchange='undef' d_pwclass='undef' d_pwcomment='undef' d_pwexpire='undef' d_pwgecos='define' d_pwpasswd='define' d_pwquota='undef' d_qgcvt='define' d_quad='define' d_querylocale='undef' d_random_r='undef' d_re_comp='undef' d_readdir='define' d_readdir64_r='undef' d_readdir_r='undef' d_readlink='define' d_readv='define' d_recvmsg='define' d_regcmp='undef' d_regcomp='define' d_remainder='define' d_remquo='define' d_rename='define' d_renameat='define' d_rewinddir='define' d_rint='define' d_rmdir='define' d_round='define' d_sbrkproto='define' d_scalbn='define' d_scalbnl='define' d_sched_yield='define' d_scm_rights='define' d_seekdir='define' d_select='define' d_sem='define' d_semctl='define' d_semctl_semid_ds='define' d_semctl_semun='define' d_semget='define' d_semop='define' d_sendmsg='define' d_setegid='define' d_seteuid='define' d_setgrent='define' d_setgrent_r='undef' d_setgrps='define' d_sethent='define' d_sethostent_r='undef' d_setitimer='define' d_setlinebuf='define' d_setlocale='define' d_setlocale_accepts_any_locale_name='undef' d_setlocale_r='undef' d_setnent='define' d_setnetent_r='undef' d_setpent='define' d_setpgid='define' d_setpgrp='define' d_setpgrp2='undef' d_setprior='define' d_setproctitle='undef' d_setprotoent_r='undef' d_setpwent='define' d_setpwent_r='undef' d_setregid='define' d_setresgid='define' d_setresuid='define' d_setreuid='define' d_setrgid='undef' d_setruid='undef' d_setsent='define' d_setservent_r='undef' d_setsid='define' d_setvbuf='define' d_shm='define' d_shmat='define' d_shmatprototype='define' d_shmctl='define' d_shmdt='define' d_shmget='define' d_sigaction='define' d_siginfo_si_addr='define' d_siginfo_si_band='define' d_siginfo_si_errno='define' d_siginfo_si_fd='define' d_siginfo_si_pid='define' d_siginfo_si_status='define' d_siginfo_si_uid='define' d_siginfo_si_value='define' d_signbit='define' d_sigprocmask='define' d_sigsetjmp='define' d_sin6_scope_id='define' d_sitearch='define' d_snprintf='define' d_sockaddr_in6='define' d_sockaddr_sa_len='undef' d_sockaddr_storage='define' d_sockatmark='define' d_sockatmarkproto='define' d_socket='define' d_socklen_t='define' d_sockpair='define' d_socks5_init='undef' d_sqrtl='define' d_srand48_r='undef' d_srandom_r='undef' d_sresgproto='undef' d_sresuproto='undef' d_stat='define' d_statblks='define' d_statfs_f_flags='define' d_statfs_s='define' d_static_inline='define' d_statvfs='define' d_stdio_cnt_lval='undef' d_stdio_ptr_lval='undef' d_stdio_ptr_lval_nochange_cnt='undef' d_stdio_ptr_lval_sets_cnt='undef' d_stdio_stream_array='undef' d_stdiobase='undef' d_stdstdio='undef' d_strcoll='define' d_strerror_l='define' d_strerror_r='undef' d_strftime='define' d_strlcat='undef' d_strlcpy='undef' d_strnlen='define' d_strtod='define' d_strtod_l='define' d_strtol='define' d_strtold='define' d_strtold_l='define' d_strtoll='define' d_strtoq='define' d_strtoul='define' d_strtoull='define' d_strtouq='define' d_strxfrm='define' d_strxfrm_l='define' d_suidsafe='undef' d_symlink='define' d_syscall='define' d_syscallproto='define' d_sysconf='define' d_sysernlst='' d_syserrlst='define' d_system='define' d_tcgetpgrp='define' d_tcsetpgrp='define' d_telldir='define' d_telldirproto='define' d_tgamma='define' d_thread_local='define' d_thread_safe_nl_langinfo_l='undef' d_time='define' d_timegm='define' d_times='define' d_tm_tm_gmtoff='define' d_tm_tm_zone='define' d_tmpnam_r='undef' d_towlower='define' d_towupper='define' d_trunc='define' d_truncate='define' d_truncl='define' d_ttyname_r='undef' d_tzname='define' d_u32align='define' d_ualarm='define' d_umask='define' d_uname='define' d_union_semun='undef' d_unlinkat='define' d_unordered='undef' d_unsetenv='define' d_uselocale='define' d_usleep='define' d_usleepproto='define' d_ustat='undef' d_vendorarch='define' d_vendorbin='define' d_vendorlib='define' d_vendorscript='define' d_vfork='undef' d_void_closedir='undef' d_voidsig='define' d_voidtty='' d_vsnprintf='define' d_wait4='define' d_waitpid='define' d_wcrtomb='define' d_wcscmp='define' d_wcstombs='define' d_wcsxfrm='define' d_wctomb='define' d_writev='define' d_xenix='undef' date='date' db_hashtype='u_int32_t' db_prefixtype='size_t' db_version_major='5' db_version_minor='3' db_version_patch='28' default_inc_excludes_dot='define' direntrytype='struct dirent' dlext='so' dlsrc='dl_dlopen.xs' doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f' doublekind='3' doublemantbits='52' doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f' doublesize='8' drand01='Perl_drand48()' drand48_r_proto='0' dtrace='' dtraceobject='' dtracexnolibs='' dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared' eagain='EAGAIN' ebcdic='undef' echo='echo' egrep='egrep' emacs='' endgrent_r_proto='0' endhostent_r_proto='0' endnetent_r_proto='0' endprotoent_r_proto='0' endpwent_r_proto='0' endservent_r_proto='0' eunicefix=':' exe_ext='' expr='expr' extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' fflushall='undef' find='' firstmakefile='makefile' flex='' fpossize='16' fpostype='fpos_t' freetype='void' from=':' full_ar='/usr/bin/ar' full_csh='csh' full_sed='/bin/sed' gccansipedantic='' gccosandvers='' gccversion='8.3.0' getgrent_r_proto='0' getgrgid_r_proto='0' getgrnam_r_proto='0' gethostbyaddr_r_proto='0' gethostbyname_r_proto='0' gethostent_r_proto='0' getlogin_r_proto='0' getnetbyaddr_r_proto='0' getnetbyname_r_proto='0' getnetent_r_proto='0' getprotobyname_r_proto='0' getprotobynumber_r_proto='0' getprotoent_r_proto='0' getpwent_r_proto='0' getpwnam_r_proto='0' getpwuid_r_proto='0' getservbyname_r_proto='0' getservbyport_r_proto='0' getservent_r_proto='0' getspnam_r_proto='0' gidformat='"u"' gidsign='1' gidsize='4' gidtype='gid_t' glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib ' gmake='gmake' gmtime_r_proto='0' gnulibc_version='2.28' grep='grep' groupcat='cat /etc/group' groupstype='gid_t' gzip='gzip' h_fcntl='false' h_sysfile='true' hint='recommended' hostcat='cat /etc/hosts' hostgenerate='' hostosname='' hostperl='' html1dir=' ' html1direxp='' html3dir=' ' html3direxp='' i16size='2' i16type='short' i32size='4' i32type='int' i64size='8' i64type='long' i8size='1' i8type='signed char' i_arpainet='define' i_bfd='undef' i_bsdioctl='' i_crypt='define' i_db='define' i_dbm='undef' i_dirent='define' i_dlfcn='define' i_execinfo='define' i_fcntl='undef' i_fenv='define' i_fp='undef' i_fp_class='undef' i_gdbm='define' i_gdbm_ndbm='undef' i_gdbmndbm='undef' i_grp='define' i_ieeefp='undef' i_inttypes='define' i_langinfo='define' i_libutil='undef' i_limits='define' i_locale='define' i_machcthr='undef' i_malloc='define' i_mallocmalloc='undef' i_mntent='define' i_ndbm='undef' i_netdb='define' i_neterrno='undef' i_netinettcp='define' i_niin='define' i_poll='define' i_prot='undef' i_pthread='define' i_pwd='define' i_quadmath='undef' i_rpcsvcdbm='undef' i_sgtty='undef' i_shadow='define' i_socks='undef' i_stdbool='define' i_stdint='define' i_stdlib='define' i_string='define' i_sunmath='undef' i_sysaccess='undef' i_sysdir='define' i_sysfile='define' i_sysfilio='undef' i_sysin='undef' i_sysioctl='define' i_syslog='define' i_sysmman='define' i_sysmode='undef' i_sysmount='define' i_sysndir='undef' i_sysparam='define' i_syspoll='define' i_sysresrc='define' i_syssecrt='undef' i_sysselct='define' i_syssockio='undef' i_sysstat='define' i_sysstatfs='define' i_sysstatvfs='define' i_systime='define' i_systimek='undef' i_systimes='define' i_systypes='define' i_sysuio='define' i_sysun='define' i_sysutsname='define' i_sysvfs='define' i_syswait='define' i_termio='undef' i_termios='define' i_time='define' i_unistd='define' i_ustat='undef' i_utime='define' i_vfork='undef' i_wchar='define' i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' inc_version_list=' ' inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/aarch64-linux-gnu/8/include /usr/local/include /usr/lib/gcc/aarch64-linux-gnu/8/include-fixed /usr/include/aarch64-linux-gnu /usr/include' inews='' initialinstalllocation='/usr/local/bin' installarchlib='/usr/local/lib/perl5/5.36.0/aarch64-linux-gnu' installbin='/usr/local/bin' installhtml1dir='' installhtml3dir='' installman1dir='' installman3dir='' installprefix='/usr/local' installprefixexp='/usr/local' installprivlib='/usr/local/lib/perl5/5.36.0' installscript='/usr/local/bin' installsitearch='/usr/local/lib/perl5/site_perl/5.36.0/aarch64-linux-gnu' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' installsitelib='/usr/local/lib/perl5/site_perl/5.36.0' installsiteman1dir='' installsiteman3dir='' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' installvendorarch='/usr/local/lib/perl5/vendor_perl/5.36.0/aarch64-linux-gnu' installvendorbin='/usr/local/bin' installvendorhtml1dir='' installvendorhtml3dir='' installvendorlib='/usr/local/lib/perl5/vendor_perl/5.36.0' installvendorman1dir='' installvendorman3dir='' installvendorscript='/usr/local/bin' intsize='4' issymlink='test -h' ivdformat='"ld"' ivsize='8' ivtype='long' known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='cc' ld_can_script='define' lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong' ldflags=' -fstack-protector-strong -L/usr/local/lib' ldflags_uselargefiles='' ldlibpthname='LD_LIBRARY_PATH' less='less' lib_ext='.a' libc='libc-2.28.so' libdb_needs_pthread='N' libperl='libperl.so' libpth='/usr/local/lib /usr/lib/aarch64-linux-gnu /usr/lib /lib/aarch64-linux-gnu /lib' libs='-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc' libsdirs=' /usr/lib/aarch64-linux-gnu' libsfiles=' libpthread.so libnsl.so libgdbm.so libdb.so libdl.so libm.so libcrypt.so libutil.so libc.so' libsfound=' /usr/lib/aarch64-linux-gnu/libpthread.so /usr/lib/aarch64-linux-gnu/libnsl.so /usr/lib/aarch64-linux-gnu/libgdbm.so /usr/lib/aarch64-linux-gnu/libdb.so /usr/lib/aarch64-linux-gnu/libdl.so /usr/lib/aarch64-linux-gnu/libm.so /usr/lib/aarch64-linux-gnu/libcrypt.so /usr/lib/aarch64-linux-gnu/libutil.so /usr/lib/aarch64-linux-gnu/libc.so' libspath=' /usr/local/lib /usr/lib/aarch64-linux-gnu /usr/lib /lib/aarch64-linux-gnu /lib' libswanted='cl pthread socket inet nsl gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat' libswanted_uselargefiles='' line='' lint='' lkflags='' ln='ln' lns='/bin/ln -s' localtime_r_proto='0' locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f' longdblkind='1' longdblmantbits='112' longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f' longdblsize='16' longlongsize='8' longsize='8' lp='' lpr='' ls='ls' lseeksize='8' lseektype='off_t' mail='' mailx='' make='make' make_set_make='#' mallocobj='' mallocsrc='' malloctype='void *' man1dir=' ' man1direxp='' man1ext='0' man3dir=' ' man3direxp='' man3ext='0' mips_type='' mistrustnm='' mkdir='mkdir' mmaptype='void *' modetype='mode_t' more='more' multiarch='undef' mv='' myarchname='aarch64-linux' mydomain='.us-west-2.compute.internal' myhostname='5060076c3d3c' myuname='linux 5060076c3d3c 5.10.0-19-cloud-arm64 #1 smp debian 5.10.149-1 (2022-10-17) aarch64 gnulinux ' n='-n' need_va_copy='undef' netdb_hlen_type='size_t' netdb_host_type='char *' netdb_name_type='const char *' netdb_net_type='in_addr_t' nm='nm' nm_opt='' nm_so_opt='--dynamic' nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' nvGUformat='"G"' nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0' nv_preserves_uv_bits='53' nveformat='"e"' nvfformat='"f"' nvgformat='"g"' nvmantbits='52' nvsize='8' nvtype='double' o_nonblock='O_NONBLOCK' obj_ext='.o' old_pthread_create_joinable='' optimize='-O2' orderlib='false' osname='linux' osvers='5.10.0-19-cloud-arm64' otherlibdirs=' ' package='perl5' pager='/bin/more' passcat='cat /etc/passwd' patchlevel='36' path_sep=':' perl='perl' perl5='/usr/bin/perl' perl_patchlevel='' perl_static_inline='static __inline__' perl_thread_local='_Thread_local' perladmin='root@5060076c3d3c.us-west-2.compute.internal' perllibs='-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc' perlpath='/usr/local/bin/perl' pg='pg' phostname='hostname' pidtype='pid_t' plibpth='/lib/aarch64-linux-gnu/8 /lib/aarch64-linux-gnu /lib/../lib /usr/lib/aarch64-linux-gnu/8 /usr/lib/aarch64-linux-gnu /usr/lib/../lib /lib /usr/lib' pmake='' pr='' prefix='/usr/local' prefixexp='/usr/local' privlib='/usr/local/lib/perl5/5.36.0' privlibexp='/usr/local/lib/perl5/5.36.0' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='8' quadkind='2' quadtype='long' randbits='48' randfunc='Perl_drand48' random_r_proto='0' randseedtype='U32' ranlib=':' rd_nodata='-1' readdir64_r_proto='0' readdir_r_proto='0' revision='5' rm='rm' rm_try='/bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*' rmail='' run='' runnm='false' sGMTIME_max='67768036191676799' sGMTIME_min='-62167219200' sLOCALTIME_max='67768036191676799' sLOCALTIME_min='-62167219200' sPRIEUldbl='"LE"' sPRIFUldbl='"LF"' sPRIGUldbl='"LG"' sPRIXU64='"lX"' sPRId64='"ld"' sPRIeldbl='"Le"' sPRIfldbl='"Lf"' sPRIgldbl='"Lg"' sPRIi64='"li"' sPRIo64='"lo"' sPRIu64='"lu"' sPRIx64='"lx"' sSCNfldbl='"Lf"' sched_yield='sched_yield()' scriptdir='/usr/local/bin' scriptdirexp='/usr/local/bin' sed='sed' seedfunc='Perl_drand48_init' selectminbits='64' selecttype='fd_set *' sendmail='' setgrent_r_proto='0' sethostent_r_proto='0' setlocale_r_proto='0' setnetent_r_proto='0' setprotoent_r_proto='0' setpwent_r_proto='0' setservent_r_proto='0' sh='/bin/sh' shar='' sharpbang='#!' shmattype='void *' shortsize='2' shrpenv='' shsharp='true' sig_count='65' sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL ' sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", 0' sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 17 29 ' sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' sitearch='/usr/local/lib/perl5/site_perl/5.36.0/aarch64-linux-gnu' sitearchexp='/usr/local/lib/perl5/site_perl/5.36.0/aarch64-linux-gnu' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' sitelib='/usr/local/lib/perl5/site_perl/5.36.0' sitelib_stem='/usr/local/lib/perl5/site_perl' sitelibexp='/usr/local/lib/perl5/site_perl/5.36.0' siteman1dir='' siteman1direxp='' siteman3dir='' siteman3direxp='' siteprefix='/usr/local' siteprefixexp='/usr/local' sitescript='/usr/local/bin' sitescriptexp='/usr/local/bin' sizesize='8' sizetype='size_t' sleep='' smail='' so='so' sockethdr='' socketlib='' socksizetype='socklen_t' sort='sort' spackage='Perl5' spitshell='cat' srand48_r_proto='0' srandom_r_proto='0' src='.' ssizetype='ssize_t' st_dev_sign='1' st_dev_size='8' st_ino_sign='1' st_ino_size='8' startperl='#!/usr/local/bin/perl' startsh='#!/bin/sh' static_ext=' ' stdchar='char' stdio_base='((fp)->_base)' stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)' stdio_cnt='((fp)->_cnt)' stdio_filbuf='' stdio_ptr='((fp)->_ptr)' stdio_stream_array='' strerror_r_proto='0' submit='' subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' tar='' targetarch='' targetdir='' targetenv='' targethost='' targetmkdir='' targetport='' targetsh='/bin/sh' tbl='' tee='' test='test' timeincl='/usr/include/aarch64-linux-gnu/sys/time.h ' timetype='time_t' tmpnam_r_proto='0' to=':' touch='touch' tr='tr' trnl='\n' troff='' ttyname_r_proto='0' u16size='2' u16type='unsigned short' u32size='4' u32type='unsigned int' u64size='8' u64type='unsigned long' u8size='1' u8type='unsigned char' uidformat='"u"' uidsign='1' uidsize='4' uidtype='uid_t' uname='uname' uniq='uniq' uquadtype='unsigned long' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' usefaststdio='undef' useithreads='undef' usekernprocpathname='undef' uselanginfo='true' uselargefiles='define' uselongdouble='undef' usemallocwrap='define' usemorebits='undef' usemultiplicity='undef' usemymalloc='n' usenm='false' usensgetexecutablepath='undef' useopcode='true' useperlio='define' useposix='true' usequadmath='undef' usereentrant='undef' userelocatableinc='undef' useshrplib='true' usesitecustomize='undef' usesocks='undef' usethreads='undef' usevendorprefix='define' useversionedarchname='undef' usevfork='false' usrinc='/usr/include' uuname='' uvXUformat='"lX"' uvoformat='"lo"' uvsize='8' uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' vendorarch='/usr/local/lib/perl5/vendor_perl/5.36.0/aarch64-linux-gnu' vendorarchexp='/usr/local/lib/perl5/vendor_perl/5.36.0/aarch64-linux-gnu' vendorbin='/usr/local/bin' vendorbinexp='/usr/local/bin' vendorhtml1dir=' ' vendorhtml1direxp='' vendorhtml3dir=' ' vendorhtml3direxp='' vendorlib='/usr/local/lib/perl5/vendor_perl/5.36.0' vendorlib_stem='/usr/local/lib/perl5/vendor_perl' vendorlibexp='/usr/local/lib/perl5/vendor_perl/5.36.0' vendorman1dir=' ' vendorman1direxp='' vendorman3dir=' ' vendorman3direxp='' vendorprefix='/usr/local' vendorprefixexp='/usr/local' vendorscript='/usr/local/bin' vendorscriptexp='/usr/local/bin' version='5.36.0' version_patchlevel_string='version 36 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' xlocale_needed='undef' yacc='yacc' yaccflags='' zcat='' zip='zip' !END! my $i = ord(8); foreach my $c (7,6,5,4,3,2,1) { $i <<= 8; $i |= ord($c); } our $byteorder = join('', unpack('aaaaaaaa', pack('L!', $i))); s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m; my $config_sh_len = length $_; our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL'; ccflags_nolargefiles='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_FORTIFY_SOURCE=2' ldflags_nolargefiles=' -fstack-protector-strong -L/usr/local/lib' libs_nolargefiles='-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc' libswanted_nolargefiles='cl pthread socket inet nsl gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat' ccwarnflags=' -Wall -Werror=pointer-arith -Werror=vla -Wextra -Wno-long-long -Wno-declaration-after-statement -Wc++-compat -Wwrite-strings' ccstdflags=' -std=c99' EOVIRTUAL eval { # do not have hairy conniptions if this isnt available require 'Config_git.pl'; $Config_SH_expanded .= $Config::Git_Data; 1; } or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n"; # Search for it in the big string sub fetch_string { my($self, $key) = @_; return undef unless $Config_SH_expanded =~ /\n$key=\'(.*?)\'\n/s; # So we can say "if $Config{'foo'}". $self->{$key} = $1 eq 'undef' ? undef : $1; } my $prevpos = 0; sub FIRSTKEY { $prevpos = 0; substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 ); } sub NEXTKEY { my $pos = index($Config_SH_expanded, qq('\n), $prevpos) + 2; my $len = index($Config_SH_expanded, "=", $pos) - $pos; $prevpos = $pos; $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef; } sub EXISTS { return 1 if exists($_[0]->{$_[1]}); return(index($Config_SH_expanded, "\n$_[1]='") != -1 ); } sub STORE { die "\%Config::Config is read-only\n" } *DELETE = *CLEAR = \*STORE; # Typeglob aliasing uses less space sub config_sh { substr $Config_SH_expanded, 1, $config_sh_len; } sub config_re { my $re = shift; return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/, $Config_SH_expanded; } sub config_vars { # implements -V:cfgvar option (see perlrun -V:) foreach (@_) { # find optional leading, trailing colons; and query-spec my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft, # map colon-flags to print decorations my $prfx = $notag ? '': "$qry="; # tag-prefix for print my $lnend = $lncont ? ' ' : ";\n"; # line ending for print # all config-vars are by definition \w only, any \W means regex if ($qry =~ /\W/) { my @matches = config_re($qry); print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag; print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag; } else { my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry} : 'UNKNOWN'; $v = 'undef' unless defined $v; print "${prfx}'${v}'$lnend"; } } } # Called by the real AUTOLOAD sub launcher { undef &AUTOLOAD; goto \&$Config::AUTOLOAD; } 1; FILE965e740a/Cwd.pmSpackage Cwd; use strict; use Exporter; our $VERSION = '3.84'; my $xs_version = $VERSION; $VERSION =~ tr/_//d; our @ISA = qw/ Exporter /; our @EXPORT = qw(cwd getcwd fastcwd fastgetcwd); push @EXPORT, qw(getdcwd) if $^O eq 'MSWin32'; our @EXPORT_OK = qw(chdir abs_path fast_abs_path realpath fast_realpath); # sys_cwd may keep the builtin command # All the functionality of this module may provided by builtins, # there is no sense to process the rest of the file. # The best choice may be to have this in BEGIN, but how to return from BEGIN? if ($^O eq 'os2') { local $^W = 0; *cwd = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd; *getcwd = \&cwd; *fastgetcwd = \&cwd; *fastcwd = \&cwd; *fast_abs_path = \&sys_abspath if defined &sys_abspath; *abs_path = \&fast_abs_path; *realpath = \&fast_abs_path; *fast_realpath = \&fast_abs_path; return 1; } # Need to look up the feature settings on VMS. The preferred way is to use the # VMS::Feature module, but that may not be available to dual life modules. my $use_vms_feature; BEGIN { if ($^O eq 'VMS') { if (eval { local $SIG{__DIE__}; local @INC = @INC; pop @INC if $INC[-1] eq '.'; require VMS::Feature; }) { $use_vms_feature = 1; } } } # Need to look up the UNIX report mode. This may become a dynamic mode # in the future. sub _vms_unix_rpt { my $unix_rpt; if ($use_vms_feature) { $unix_rpt = VMS::Feature::current("filename_unix_report"); } else { my $env_unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || ''; $unix_rpt = $env_unix_rpt =~ /^[ET1]/i; } return $unix_rpt; } # Need to look up the EFS character set mode. This may become a dynamic # mode in the future. sub _vms_efs { my $efs; if ($use_vms_feature) { $efs = VMS::Feature::current("efs_charset"); } else { my $env_efs = $ENV{'DECC$EFS_CHARSET'} || ''; $efs = $env_efs =~ /^[ET1]/i; } return $efs; } # If loading the XS stuff doesn't work, we can fall back to pure perl if(! defined &getcwd && defined &DynaLoader::boot_DynaLoader) { # skipped on miniperl require XSLoader; XSLoader::load( __PACKAGE__, $xs_version); } # Big nasty table of function aliases my %METHOD_MAP = ( VMS => { cwd => '_vms_cwd', getcwd => '_vms_cwd', fastcwd => '_vms_cwd', fastgetcwd => '_vms_cwd', abs_path => '_vms_abs_path', fast_abs_path => '_vms_abs_path', }, MSWin32 => { # We assume that &_NT_cwd is defined as an XSUB or in the core. cwd => '_NT_cwd', getcwd => '_NT_cwd', fastcwd => '_NT_cwd', fastgetcwd => '_NT_cwd', abs_path => 'fast_abs_path', realpath => 'fast_abs_path', }, dos => { cwd => '_dos_cwd', getcwd => '_dos_cwd', fastgetcwd => '_dos_cwd', fastcwd => '_dos_cwd', abs_path => 'fast_abs_path', }, # QNX4. QNX6 has a $os of 'nto'. qnx => { cwd => '_qnx_cwd', getcwd => '_qnx_cwd', fastgetcwd => '_qnx_cwd', fastcwd => '_qnx_cwd', abs_path => '_qnx_abs_path', fast_abs_path => '_qnx_abs_path', }, cygwin => { getcwd => 'cwd', fastgetcwd => 'cwd', fastcwd => 'cwd', abs_path => 'fast_abs_path', realpath => 'fast_abs_path', }, amigaos => { getcwd => '_backtick_pwd', fastgetcwd => '_backtick_pwd', fastcwd => '_backtick_pwd', abs_path => 'fast_abs_path', } ); $METHOD_MAP{NT} = $METHOD_MAP{MSWin32}; # Find the pwd command in the expected locations. We assume these # are safe. This prevents _backtick_pwd() consulting $ENV{PATH} # so everything works under taint mode. my $pwd_cmd; if($^O ne 'MSWin32') { foreach my $try ('/bin/pwd', '/usr/bin/pwd', '/QOpenSys/bin/pwd', # OS/400 PASE. ) { if( -x $try ) { $pwd_cmd = $try; last; } } } # Android has a built-in pwd. Using $pwd_cmd will DTRT if # this perl was compiled with -Dd_useshellcmds, which is the # default for Android, but the block below is needed for the # miniperl running on the host when cross-compiling, and # potentially for native builds with -Ud_useshellcmds. if ($^O =~ /android/) { # If targetsh is executable, then we're either a full # perl, or a miniperl for a native build. if ( exists($Config::Config{targetsh}) && -x $Config::Config{targetsh}) { $pwd_cmd = "$Config::Config{targetsh} -c pwd" } else { my $sh = $Config::Config{sh} || (-x '/system/bin/sh' ? '/system/bin/sh' : 'sh'); $pwd_cmd = "$sh -c pwd" } } my $found_pwd_cmd = defined($pwd_cmd); # Lazy-load Carp sub _carp { require Carp; Carp::carp(@_) } sub _croak { require Carp; Carp::croak(@_) } # The 'natural and safe form' for UNIX (pwd may be setuid root) sub _backtick_pwd { # Localize %ENV entries in a way that won't create new hash keys. # Under AmigaOS we don't want to localize as it stops perl from # finding 'sh' in the PATH. my @localize = grep exists $ENV{$_}, qw(PATH IFS CDPATH ENV BASH_ENV) if $^O ne "amigaos"; local @ENV{@localize} if @localize; my $cwd = `$pwd_cmd`; # Belt-and-suspenders in case someone said "undef $/". local $/ = "\n"; # `pwd` may fail e.g. if the disk is full chomp($cwd) if defined $cwd; $cwd; } # Since some ports may predefine cwd internally (e.g., NT) # we take care not to override an existing definition for cwd(). unless ($METHOD_MAP{$^O}{cwd} or defined &cwd) { if( $found_pwd_cmd ) { *cwd = \&_backtick_pwd; } else { # getcwd() might have an empty prototype *cwd = sub { getcwd(); }; } } if ($^O eq 'cygwin') { # We need to make sure cwd() is called with no args, because it's # got an arg-less prototype and will die if args are present. local $^W = 0; my $orig_cwd = \&cwd; *cwd = sub { &$orig_cwd() } } # set a reasonable (and very safe) default for fastgetcwd, in case it # isn't redefined later (20001212 rspier) *fastgetcwd = \&cwd; # A non-XS version of getcwd() - also used to bootstrap the perl build # process, when miniperl is running and no XS loading happens. sub _perl_getcwd { abs_path('.'); } # By John Bazik # # Usage: $cwd = &fastcwd; # # This is a faster version of getcwd. It's also more dangerous because # you might chdir out of a directory that you can't chdir back into. sub fastcwd_ { my($odev, $oino, $cdev, $cino, $tdev, $tino); my(@path, $path); local(*DIR); my($orig_cdev, $orig_cino) = stat('.'); ($cdev, $cino) = ($orig_cdev, $orig_cino); for (;;) { my $direntry; ($odev, $oino) = ($cdev, $cino); CORE::chdir('..') || return undef; ($cdev, $cino) = stat('.'); last if $odev == $cdev && $oino eq $cino; opendir(DIR, '.') || return undef; for (;;) { $direntry = readdir(DIR); last unless defined $direntry; next if $direntry eq '.'; next if $direntry eq '..'; ($tdev, $tino) = lstat($direntry); last unless $tdev != $odev || $tino ne $oino; } closedir(DIR); return undef unless defined $direntry; # should never happen unshift(@path, $direntry); } $path = '/' . join('/', @path); if ($^O eq 'apollo') { $path = "/".$path; } # At this point $path may be tainted (if tainting) and chdir would fail. # Untaint it then check that we landed where we started. $path =~ /^(.*)\z/s # untaint && CORE::chdir($1) or return undef; ($cdev, $cino) = stat('.'); die "Unstable directory path, current directory changed unexpectedly" if $cdev != $orig_cdev || $cino ne $orig_cino; $path; } if (not defined &fastcwd) { *fastcwd = \&fastcwd_ } # Keeps track of current working directory in PWD environment var # Usage: # use Cwd 'chdir'; # chdir $newdir; my $chdir_init = 0; sub chdir_init { if ($ENV{'PWD'} and $^O ne 'os2' and $^O ne 'dos' and $^O ne 'MSWin32') { my($dd,$di) = stat('.'); my($pd,$pi) = stat($ENV{'PWD'}); if (!defined $dd or !defined $pd or $di ne $pi or $dd != $pd) { $ENV{'PWD'} = cwd(); } } else { my $wd = cwd(); $wd = Win32::GetFullPathName($wd) if $^O eq 'MSWin32'; $ENV{'PWD'} = $wd; } # Strip an automounter prefix (where /tmp_mnt/foo/bar == /foo/bar) if ($^O ne 'MSWin32' and $ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|s) { my($pd,$pi) = stat($2); my($dd,$di) = stat($1); if (defined $pd and defined $dd and $di ne $pi and $dd == $pd) { $ENV{'PWD'}="$2$3"; } } $chdir_init = 1; } sub chdir { my $newdir = @_ ? shift : ''; # allow for no arg (chdir to HOME dir) if ($^O eq "cygwin") { $newdir =~ s|\A///+|//|; $newdir =~ s|(?<=[^/])//+|/|g; } elsif ($^O ne 'MSWin32') { $newdir =~ s|///*|/|g; } chdir_init() unless $chdir_init; my $newpwd; if ($^O eq 'MSWin32') { # get the full path name *before* the chdir() $newpwd = Win32::GetFullPathName($newdir); } return 0 unless CORE::chdir $newdir; if ($^O eq 'VMS') { return $ENV{'PWD'} = $ENV{'DEFAULT'} } elsif ($^O eq 'MSWin32') { $ENV{'PWD'} = $newpwd; return 1; } if (ref $newdir eq 'GLOB') { # in case a file/dir handle is passed in $ENV{'PWD'} = cwd(); } elsif ($newdir =~ m#^/#s) { $ENV{'PWD'} = $newdir; } else { my @curdir = split(m#/#,$ENV{'PWD'}); @curdir = ('') unless @curdir; my $component; foreach $component (split(m#/#, $newdir)) { next if $component eq '.'; pop(@curdir),next if $component eq '..'; push(@curdir,$component); } $ENV{'PWD'} = join('/',@curdir) || '/'; } 1; } sub _perl_abs_path { my $start = @_ ? shift : '.'; my($dotdots, $cwd, @pst, @cst, $dir, @tst); unless (@cst = stat( $start )) { return undef; } unless (-d _) { # Make sure we can be invoked on plain files, not just directories. # NOTE that this routine assumes that '/' is the only directory separator. my ($dir, $file) = $start =~ m{^(.*)/(.+)$} or return cwd() . '/' . $start; # Can't use "-l _" here, because the previous stat was a stat(), not an lstat(). if (-l $start) { my $link_target = readlink($start); die "Can't resolve link $start: $!" unless defined $link_target; require File::Spec; $link_target = $dir . '/' . $link_target unless File::Spec->file_name_is_absolute($link_target); return abs_path($link_target); } return $dir ? abs_path($dir) . "/$file" : "/$file"; } $cwd = ''; $dotdots = $start; do { $dotdots .= '/..'; @pst = @cst; local *PARENT; unless (opendir(PARENT, $dotdots)) { return undef; } unless (@cst = stat($dotdots)) { my $e = $!; closedir(PARENT); $! = $e; return undef; } if ($pst[0] == $cst[0] && $pst[1] eq $cst[1]) { $dir = undef; } else { do { unless (defined ($dir = readdir(PARENT))) { closedir(PARENT); require Errno; $! = Errno::ENOENT(); return undef; } $tst[0] = $pst[0]+1 unless (@tst = lstat("$dotdots/$dir")) } while ($dir eq '.' || $dir eq '..' || $tst[0] != $pst[0] || $tst[1] ne $pst[1]); } $cwd = (defined $dir ? "$dir" : "" ) . "/$cwd" ; closedir(PARENT); } while (defined $dir); chop($cwd) unless $cwd eq '/'; # drop the trailing / $cwd; } my $Curdir; sub fast_abs_path { local $ENV{PWD} = $ENV{PWD} || ''; # Guard against clobberage my $cwd = getcwd(); defined $cwd or return undef; require File::Spec; my $path = @_ ? shift : ($Curdir ||= File::Spec->curdir); # Detaint else we'll explode in taint mode. This is safe because # we're not doing anything dangerous with it. ($path) = $path =~ /(.*)/s; ($cwd) = $cwd =~ /(.*)/s; unless (-e $path) { require Errno; $! = Errno::ENOENT(); return undef; } unless (-d _) { # Make sure we can be invoked on plain files, not just directories. my ($vol, $dir, $file) = File::Spec->splitpath($path); return File::Spec->catfile($cwd, $path) unless length $dir; if (-l $path) { my $link_target = readlink($path); defined $link_target or return undef; $link_target = File::Spec->catpath($vol, $dir, $link_target) unless File::Spec->file_name_is_absolute($link_target); return fast_abs_path($link_target); } return $dir eq File::Spec->rootdir ? File::Spec->catpath($vol, $dir, $file) : fast_abs_path(File::Spec->catpath($vol, $dir, '')) . '/' . $file; } if (!CORE::chdir($path)) { return undef; } my $realpath = getcwd(); if (! ((-d $cwd) && (CORE::chdir($cwd)))) { _croak("Cannot chdir back to $cwd: $!"); } $realpath; } # added function alias to follow principle of least surprise # based on previous aliasing. --tchrist 27-Jan-00 *fast_realpath = \&fast_abs_path; # --- PORTING SECTION --- # VMS: $ENV{'DEFAULT'} points to default directory at all times # 06-Mar-1996 Charles Bailey bailey@newman.upenn.edu # Note: Use of Cwd::chdir() causes the logical name PWD to be defined # in the process logical name table as the default device and directory # seen by Perl. This may not be the same as the default device # and directory seen by DCL after Perl exits, since the effects # the CRTL chdir() function persist only until Perl exits. sub _vms_cwd { return $ENV{'DEFAULT'}; } sub _vms_abs_path { return $ENV{'DEFAULT'} unless @_; my $path = shift; my $efs = _vms_efs; my $unix_rpt = _vms_unix_rpt; if (defined &VMS::Filespec::vmsrealpath) { my $path_unix = 0; my $path_vms = 0; $path_unix = 1 if ($path =~ m#(?<=\^)/#); $path_unix = 1 if ($path =~ /^\.\.?$/); $path_vms = 1 if ($path =~ m#[\[<\]]#); $path_vms = 1 if ($path =~ /^--?$/); my $unix_mode = $path_unix; if ($efs) { # In case of a tie, the Unix report mode decides. if ($path_vms == $path_unix) { $unix_mode = $unix_rpt; } else { $unix_mode = 0 if $path_vms; } } if ($unix_mode) { # Unix format return VMS::Filespec::unixrealpath($path); } # VMS format my $new_path = VMS::Filespec::vmsrealpath($path); # Perl expects directories to be in directory format $new_path = VMS::Filespec::pathify($new_path) if -d $path; return $new_path; } # Fallback to older algorithm if correct ones are not # available. if (-l $path) { my $link_target = readlink($path); die "Can't resolve link $path: $!" unless defined $link_target; return _vms_abs_path($link_target); } # may need to turn foo.dir into [.foo] my $pathified = VMS::Filespec::pathify($path); $path = $pathified if defined $pathified; return VMS::Filespec::rmsexpand($path); } sub _os2_cwd { my $pwd = `cmd /c cd`; chomp $pwd; $pwd =~ s:\\:/:g ; $ENV{'PWD'} = $pwd; return $pwd; } sub _win32_cwd_simple { my $pwd = `cd`; chomp $pwd; $pwd =~ s:\\:/:g ; $ENV{'PWD'} = $pwd; return $pwd; } sub _win32_cwd { my $pwd; $pwd = Win32::GetCwd(); $pwd =~ s:\\:/:g ; $ENV{'PWD'} = $pwd; return $pwd; } *_NT_cwd = defined &Win32::GetCwd ? \&_win32_cwd : \&_win32_cwd_simple; sub _dos_cwd { my $pwd; if (!defined &Dos::GetCwd) { chomp($pwd = `command /c cd`); $pwd =~ s:\\:/:g ; } else { $pwd = Dos::GetCwd(); } $ENV{'PWD'} = $pwd; return $pwd; } sub _qnx_cwd { local $ENV{PATH} = ''; local $ENV{CDPATH} = ''; local $ENV{ENV} = ''; my $pwd = `/usr/bin/fullpath -t`; chomp $pwd; $ENV{'PWD'} = $pwd; return $pwd; } sub _qnx_abs_path { local $ENV{PATH} = ''; local $ENV{CDPATH} = ''; local $ENV{ENV} = ''; my $path = @_ ? shift : '.'; local *REALPATH; defined( open(REALPATH, '-|') || exec '/usr/bin/fullpath', '-t', $path ) or die "Can't open /usr/bin/fullpath: $!"; my $realpath = ; close REALPATH; chomp $realpath; return $realpath; } # Now that all the base-level functions are set up, alias the # user-level functions to the right places if (exists $METHOD_MAP{$^O}) { my $map = $METHOD_MAP{$^O}; foreach my $name (keys %$map) { local $^W = 0; # assignments trigger 'subroutine redefined' warning no strict 'refs'; *{$name} = \&{$map->{$name}}; } } # built-in from 5.30 *getcwd = \&Internals::getcwd if !defined &getcwd && defined &Internals::getcwd; # In case the XS version doesn't load. *abs_path = \&_perl_abs_path unless defined &abs_path; *getcwd = \&_perl_getcwd unless defined &getcwd; # added function alias for those of us more # used to the libc function. --tchrist 27-Jan-00 *realpath = \&abs_path; 1; __END__ =head1 NAME Cwd - get pathname of current working directory =head1 SYNOPSIS use Cwd; my $dir = getcwd; use Cwd 'abs_path'; my $abs_path = abs_path($file); =head1 DESCRIPTION This module provides functions for determining the pathname of the current working directory. It is recommended that getcwd (or another *cwd() function) be used in I code to ensure portability. By default, it exports the functions cwd(), getcwd(), fastcwd(), and fastgetcwd() (and, on Win32, getdcwd()) into the caller's namespace. =head2 getcwd and friends Each of these functions are called without arguments and return the absolute path of the current working directory. =over 4 =item getcwd my $cwd = getcwd(); Returns the current working directory. On error returns C, with C<$!> set to indicate the error. Exposes the POSIX function getcwd(3) or re-implements it if it's not available. =item cwd my $cwd = cwd(); The cwd() is the most natural form for the current architecture. For most systems it is identical to `pwd` (but without the trailing line terminator). =item fastcwd my $cwd = fastcwd(); A more dangerous version of getcwd(), but potentially faster. It might conceivably chdir() you out of a directory that it can't chdir() you back into. If fastcwd encounters a problem it will return undef but will probably leave you in a different directory. For a measure of extra security, if everything appears to have worked, the fastcwd() function will check that it leaves you in the same directory that it started in. If it has changed it will C with the message "Unstable directory path, current directory changed unexpectedly". That should never happen. =item fastgetcwd my $cwd = fastgetcwd(); The fastgetcwd() function is provided as a synonym for cwd(). =item getdcwd my $cwd = getdcwd(); my $cwd = getdcwd('C:'); The getdcwd() function is also provided on Win32 to get the current working directory on the specified drive, since Windows maintains a separate current working directory for each drive. If no drive is specified then the current drive is assumed. This function simply calls the Microsoft C library _getdcwd() function. =back =head2 abs_path and friends These functions are exported only on request. They each take a single argument and return the absolute pathname for it. If no argument is given they'll use the current working directory. =over 4 =item abs_path my $abs_path = abs_path($file); Uses the same algorithm as getcwd(). Symbolic links and relative-path components ("." and "..") are resolved to return the canonical pathname, just like realpath(3). On error returns C, with C<$!> set to indicate the error. =item realpath my $abs_path = realpath($file); A synonym for abs_path(). =item fast_abs_path my $abs_path = fast_abs_path($file); A more dangerous, but potentially faster version of abs_path. =back =head2 $ENV{PWD} If you ask to override your chdir() built-in function, use Cwd qw(chdir); then your PWD environment variable will be kept up to date. Note that it will only be kept up to date if all packages which use chdir import it from Cwd. =head1 NOTES =over 4 =item * Since the path separators are different on some operating systems ('/' on Unix, ':' on MacPerl, etc...) we recommend you use the File::Spec modules wherever portability is a concern. =item * Actually, on Mac OS, the C, C and C functions are all aliases for the C function, which, on Mac OS, calls `pwd`. Likewise, the C function is an alias for C. =back =head1 AUTHOR Maintained by perl5-porters >. =head1 COPYRIGHT Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Portions of the C code in this library are copyright (c) 1994 by the Regents of the University of California. All rights reserved. The license on this code is compatible with the licensing of the rest of the distribution - please see the source code in F for the details. =head1 SEE ALSO L =cut FILE618bfe32/Digest/SHA.pmVpackage Digest::SHA; require 5.003000; use strict; use warnings; use vars qw($VERSION @ISA @EXPORT_OK $errmsg); use Fcntl qw(O_RDONLY O_RDWR); use integer; $VERSION = '6.02'; require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw( $errmsg hmac_sha1 hmac_sha1_base64 hmac_sha1_hex hmac_sha224 hmac_sha224_base64 hmac_sha224_hex hmac_sha256 hmac_sha256_base64 hmac_sha256_hex hmac_sha384 hmac_sha384_base64 hmac_sha384_hex hmac_sha512 hmac_sha512_base64 hmac_sha512_hex hmac_sha512224 hmac_sha512224_base64 hmac_sha512224_hex hmac_sha512256 hmac_sha512256_base64 hmac_sha512256_hex sha1 sha1_base64 sha1_hex sha224 sha224_base64 sha224_hex sha256 sha256_base64 sha256_hex sha384 sha384_base64 sha384_hex sha512 sha512_base64 sha512_hex sha512224 sha512224_base64 sha512224_hex sha512256 sha512256_base64 sha512256_hex); # Inherit from Digest::base if possible eval { require Digest::base; push(@ISA, 'Digest::base'); }; # The following routines aren't time-critical, so they can be left in Perl sub new { my($class, $alg) = @_; $alg =~ s/\D+//g if defined $alg; if (ref($class)) { # instance method if (!defined($alg) || ($alg == $class->algorithm)) { sharewind($class); return($class); } return shainit($class, $alg) ? $class : undef; } $alg = 1 unless defined $alg; return $class->newSHA($alg); } BEGIN { *reset = \&new } sub add_bits { my($self, $data, $nbits) = @_; unless (defined $nbits) { $nbits = length($data); $data = pack("B*", $data); } $nbits = length($data) * 8 if $nbits > length($data) * 8; shawrite($data, $nbits, $self); return($self); } sub _bail { my $msg = shift; $errmsg = $!; $msg .= ": $!"; require Carp; Carp::croak($msg); } { my $_can_T_filehandle; sub _istext { local *FH = shift; my $file = shift; if (! defined $_can_T_filehandle) { local $^W = 0; my $istext = eval { -T FH }; $_can_T_filehandle = $@ ? 0 : 1; return $_can_T_filehandle ? $istext : -T $file; } return $_can_T_filehandle ? -T FH : -T $file; } } sub _addfile { my ($self, $handle) = @_; my $n; my $buf = ""; while (($n = read($handle, $buf, 4096))) { $self->add($buf); } _bail("Read failed") unless defined $n; $self; } sub addfile { my ($self, $file, $mode) = @_; return(_addfile($self, $file)) unless ref(\$file) eq 'SCALAR'; $mode = defined($mode) ? $mode : ""; my ($binary, $UNIVERSAL, $BITS) = map { $_ eq $mode } ("b", "U", "0"); ## Always interpret "-" to mean STDIN; otherwise use ## sysopen to handle full range of POSIX file names. ## If $file is a directory, force an EISDIR error ## by attempting to open with mode O_RDWR local *FH; $file eq '-' and open(FH, '< -') or sysopen(FH, $file, -d $file ? O_RDWR : O_RDONLY) or _bail('Open failed'); if ($BITS) { my ($n, $buf) = (0, ""); while (($n = read(FH, $buf, 4096))) { $buf =~ tr/01//cd; $self->add_bits($buf); } _bail("Read failed") unless defined $n; close(FH); return($self); } binmode(FH) if $binary || $UNIVERSAL; if ($UNIVERSAL && _istext(*FH, $file)) { $self->_addfileuniv(*FH); } else { $self->_addfilebin(*FH) } close(FH); $self; } sub getstate { my $self = shift; my $alg = $self->algorithm or return; my $state = $self->_getstate or return; my $nD = $alg <= 256 ? 8 : 16; my $nH = $alg <= 256 ? 32 : 64; my $nB = $alg <= 256 ? 64 : 128; my($H, $block, $blockcnt, $lenhh, $lenhl, $lenlh, $lenll) = $state =~ /^(.{$nH})(.{$nB})(.{4})(.{4})(.{4})(.{4})(.{4})$/s; for ($alg, $H, $block, $blockcnt, $lenhh, $lenhl, $lenlh, $lenll) { return unless defined $_; } my @s = (); push(@s, "alg:" . $alg); push(@s, "H:" . join(":", unpack("H*", $H) =~ /.{$nD}/g)); push(@s, "block:" . join(":", unpack("H*", $block) =~ /.{2}/g)); push(@s, "blockcnt:" . unpack("N", $blockcnt)); push(@s, "lenhh:" . unpack("N", $lenhh)); push(@s, "lenhl:" . unpack("N", $lenhl)); push(@s, "lenlh:" . unpack("N", $lenlh)); push(@s, "lenll:" . unpack("N", $lenll)); join("\n", @s) . "\n"; } sub putstate { my($class, $state) = @_; my %s = (); for (split(/\n/, $state)) { s/^\s+//; s/\s+$//; next if (/^(#|$)/); my @f = split(/[:\s]+/); my $tag = shift(@f); $s{$tag} = join('', @f); } # H and block may contain arbitrary values, but check everything else grep { $_ == $s{'alg'} } (1,224,256,384,512,512224,512256) or return; length($s{'H'}) == ($s{'alg'} <= 256 ? 64 : 128) or return; length($s{'block'}) == ($s{'alg'} <= 256 ? 128 : 256) or return; { no integer; for (qw(blockcnt lenhh lenhl lenlh lenll)) { 0 <= $s{$_} or return; $s{$_} <= 4294967295 or return; } $s{'blockcnt'} < ($s{'alg'} <= 256 ? 512 : 1024) or return; } my $packed_state = ( pack("H*", $s{'H'}) . pack("H*", $s{'block'}) . pack("N", $s{'blockcnt'}) . pack("N", $s{'lenhh'}) . pack("N", $s{'lenhl'}) . pack("N", $s{'lenlh'}) . pack("N", $s{'lenll'}) ); return $class->new($s{'alg'})->_putstate($packed_state); } sub dump { my $self = shift; my $file = shift; my $state = $self->getstate or return; $file = "-" if (!defined($file) || $file eq ""); local *FH; open(FH, "> $file") or return; print FH $state; close(FH); return($self); } sub load { my $class = shift; my $file = shift; $file = "-" if (!defined($file) || $file eq ""); local *FH; open(FH, "< $file") or return; my $str = join('', ); close(FH); $class->putstate($str); } eval { require XSLoader; XSLoader::load('Digest::SHA', $VERSION); 1; } or do { require DynaLoader; push @ISA, 'DynaLoader'; Digest::SHA->bootstrap($VERSION); }; 1; __END__ =head1 NAME Digest::SHA - Perl extension for SHA-1/224/256/384/512 =head1 SYNOPSIS In programs: # Functional interface use Digest::SHA qw(sha1 sha1_hex sha1_base64 ...); $digest = sha1($data); $digest = sha1_hex($data); $digest = sha1_base64($data); $digest = sha256($data); $digest = sha384_hex($data); $digest = sha512_base64($data); # Object-oriented use Digest::SHA; $sha = Digest::SHA->new($alg); $sha->add($data); # feed data into stream $sha->addfile(*F); $sha->addfile($filename); $sha->add_bits($bits); $sha->add_bits($data, $nbits); $sha_copy = $sha->clone; # make copy of digest object $state = $sha->getstate; # save current state to string $sha->putstate($state); # restore previous $state $digest = $sha->digest; # compute digest $digest = $sha->hexdigest; $digest = $sha->b64digest; From the command line: $ shasum files $ shasum --help =head1 SYNOPSIS (HMAC-SHA) # Functional interface only use Digest::SHA qw(hmac_sha1 hmac_sha1_hex ...); $digest = hmac_sha1($data, $key); $digest = hmac_sha224_hex($data, $key); $digest = hmac_sha256_base64($data, $key); =head1 ABSTRACT Digest::SHA is a complete implementation of the NIST Secure Hash Standard. It gives Perl programmers a convenient way to calculate SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256 message digests. The module can handle all types of input, including partial-byte data. =head1 DESCRIPTION Digest::SHA is written in C for speed. If your platform lacks a C compiler, you can install the functionally equivalent (but much slower) L module. The programming interface is easy to use: it's the same one found in CPAN's L module. So, if your applications currently use L and you'd prefer the stronger security of SHA, it's a simple matter to convert them. The interface provides two ways to calculate digests: all-at-once, or in stages. To illustrate, the following short program computes the SHA-256 digest of "hello world" using each approach: use Digest::SHA qw(sha256_hex); $data = "hello world"; @frags = split(//, $data); # all-at-once (Functional style) $digest1 = sha256_hex($data); # in-stages (OOP style) $state = Digest::SHA->new(256); for (@frags) { $state->add($_) } $digest2 = $state->hexdigest; print $digest1 eq $digest2 ? "whew!\n" : "oops!\n"; To calculate the digest of an n-bit message where I is not a multiple of 8, use the I method. For example, consider the 446-bit message consisting of the bit-string "110" repeated 148 times, followed by "11". Here's how to display its SHA-1 digest: use Digest::SHA; $bits = "110" x 148 . "11"; $sha = Digest::SHA->new(1)->add_bits($bits); print $sha->hexdigest, "\n"; Note that for larger bit-strings, it's more efficient to use the two-argument version I, where I<$data> is in the customary packed binary format used for Perl strings. The module also lets you save intermediate SHA states to a string. The I method generates portable, human-readable text describing the current state of computation. You can subsequently restore that state with I to resume where the calculation left off. To see what a state description looks like, just run the following: use Digest::SHA; print Digest::SHA->new->add("Shaw" x 1962)->getstate; As an added convenience, the Digest::SHA module offers routines to calculate keyed hashes using the HMAC-SHA-1/224/256/384/512 algorithms. These services exist in functional form only, and mimic the style and behavior of the I, I, and I functions. # Test vector from draft-ietf-ipsec-ciph-sha-256-01.txt use Digest::SHA qw(hmac_sha256_hex); print hmac_sha256_hex("Hi There", chr(0x0b) x 32), "\n"; =head1 UNICODE AND SIDE EFFECTS Perl supports Unicode strings as of version 5.6. Such strings may contain wide characters, namely, characters whose ordinal values are greater than 255. This can cause problems for digest algorithms such as SHA that are specified to operate on sequences of bytes. The rule by which Digest::SHA handles a Unicode string is easy to state, but potentially confusing to grasp: the string is interpreted as a sequence of byte values, where each byte value is equal to the ordinal value (viz. code point) of its corresponding Unicode character. That way, the Unicode string 'abc' has exactly the same digest value as the ordinary string 'abc'. Since a wide character does not fit into a byte, the Digest::SHA routines croak if they encounter one. Whereas if a Unicode string contains no wide characters, the module accepts it quite happily. The following code illustrates the two cases: $str1 = pack('U*', (0..255)); print sha1_hex($str1); # ok $str2 = pack('U*', (0..256)); print sha1_hex($str2); # croaks Be aware that the digest routines silently convert UTF-8 input into its equivalent byte sequence in the native encoding (cf. utf8::downgrade). This side effect influences only the way Perl stores the data internally, but otherwise leaves the actual value of the data intact. =head1 NIST STATEMENT ON SHA-1 NIST acknowledges that the work of Prof. Xiaoyun Wang constitutes a practical collision attack on SHA-1. Therefore, NIST encourages the rapid adoption of the SHA-2 hash functions (e.g. SHA-256) for applications requiring strong collision resistance, such as digital signatures. ref. L =head1 PADDING OF BASE64 DIGESTS By convention, CPAN Digest modules do B pad their Base64 output. Problems can occur when feeding such digests to other software that expects properly padded Base64 encodings. For the time being, any necessary padding must be done by the user. Fortunately, this is a simple operation: if the length of a Base64-encoded digest isn't a multiple of 4, simply append "=" characters to the end of the digest until it is: while (length($b64_digest) % 4) { $b64_digest .= '='; } To illustrate, I is computed to be ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0 which has a length of 43. So, the properly padded version is ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= =head1 EXPORT None by default. =head1 EXPORTABLE FUNCTIONS Provided your C compiler supports a 64-bit type (e.g. the I of C99, or I<__int64> used by Microsoft C/C++), all of these functions will be available for use. Otherwise, you won't be able to perform the SHA-384 and SHA-512 transforms, both of which require 64-bit operations. I =over 4 =item B =item B =item B =item B =item B =item B =item B Logically joins the arguments into a single string, and returns its SHA-1/224/256/384/512 digest encoded as a binary string. =item B =item B =item B =item B =item B =item B =item B Logically joins the arguments into a single string, and returns its SHA-1/224/256/384/512 digest encoded as a hexadecimal string. =item B =item B =item B =item B =item B =item B =item B Logically joins the arguments into a single string, and returns its SHA-1/224/256/384/512 digest encoded as a Base64 string. It's important to note that the resulting string does B contain the padding characters typical of Base64 encodings. This omission is deliberate, and is done to maintain compatibility with the family of CPAN Digest modules. See L for details. =back I =over 4 =item B Returns a new Digest::SHA object. Allowed values for I<$alg> are 1, 224, 256, 384, 512, 512224, or 512256. It's also possible to use common string representations of the algorithm (e.g. "sha256", "SHA-384"). If the argument is missing, SHA-1 will be used by default. Invoking I as an instance method will reset the object to the initial state associated with I<$alg>. If the argument is missing, the object will continue using the same algorithm that was selected at creation. =item B This method has exactly the same effect as I. In fact, I is just an alias for I. =item B Returns the number of digest bits for this object. The values are 160, 224, 256, 384, 512, 224, and 256 for SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 and SHA-512/256, respectively. =item B Returns the digest algorithm for this object. The values are 1, 224, 256, 384, 512, 512224, and 512256 for SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256, respectively. =item B Returns a duplicate copy of the object. =item B Logically joins the arguments into a single string, and uses it to update the current digest state. In other words, the following statements have the same effect: $sha->add("a"); $sha->add("b"); $sha->add("c"); $sha->add("a")->add("b")->add("c"); $sha->add("a", "b", "c"); $sha->add("abc"); The return value is the updated object itself. =item B =item B Updates the current digest state by appending bits to it. The return value is the updated object itself. The first form causes the most-significant I<$nbits> of I<$data> to be appended to the stream. The I<$data> argument is in the customary binary format used for Perl strings. The second form takes an ASCII string of "0" and "1" characters as its argument. It's equivalent to $sha->add_bits(pack("B*", $bits), length($bits)); So, the following two statements do the same thing: $sha->add_bits("111100001010"); $sha->add_bits("\xF0\xA0", 12); Note that SHA-1 and SHA-2 use I for their internal state. This means that $sha3->add_bits("110"); is equivalent to $sha3->add_bits("1")->add_bits("1")->add_bits("0"); =item B Reads from I until EOF, and appends that data to the current state. The return value is the updated object itself. =item B Reads the contents of I<$filename>, and appends that data to the current state. The return value is the updated object itself. By default, I<$filename> is simply opened and read; no special modes or I/O disciplines are used. To change this, set the optional I<$mode> argument to one of the following values: "b" read file in binary mode "U" use universal newlines "0" use BITS mode The "U" mode is modeled on Python's "Universal Newlines" concept, whereby DOS and Mac OS line terminators are converted internally to UNIX newlines before processing. This ensures consistent digest values when working simultaneously across multiple file systems. B, namely those passing Perl's I<-T> test; binary files are processed with no translation whatsoever. The BITS mode ("0") interprets the contents of I<$filename> as a logical stream of bits, where each ASCII '0' or '1' character represents a 0 or 1 bit, respectively. All other characters are ignored. This provides a convenient way to calculate the digest values of partial-byte data by using files, rather than having to write separate programs employing the I method. =item B Returns a string containing a portable, human-readable representation of the current SHA state. =item B Returns a Digest::SHA object representing the SHA state contained in I<$str>. The format of I<$str> matches the format of the output produced by method I. If called as a class method, a new object is created; if called as an instance method, the object is reset to the state contained in I<$str>. =item B Writes the output of I to I<$filename>. If the argument is missing, or equal to the empty string, the state information will be written to STDOUT. =item B Returns a Digest::SHA object that results from calling I on the contents of I<$filename>. If the argument is missing, or equal to the empty string, the state information will be read from STDIN. =item B Returns the digest encoded as a binary string. Note that the I method is a read-once operation. Once it has been performed, the Digest::SHA object is automatically reset in preparation for calculating another digest value. Call I<$sha-Eclone-Edigest> if it's necessary to preserve the original digest state. =item B Returns the digest encoded as a hexadecimal string. Like I, this method is a read-once operation. Call I<$sha-Eclone-Ehexdigest> if it's necessary to preserve the original digest state. =item B Returns the digest encoded as a Base64 string. Like I, this method is a read-once operation. Call I<$sha-Eclone-Eb64digest> if it's necessary to preserve the original digest state. It's important to note that the resulting string does B contain the padding characters typical of Base64 encodings. This omission is deliberate, and is done to maintain compatibility with the family of CPAN Digest modules. See L for details. =back I =over 4 =item B =item B =item B =item B =item B =item B =item B Returns the HMAC-SHA-1/224/256/384/512 digest of I<$data>/I<$key>, with the result encoded as a binary string. Multiple I<$data> arguments are allowed, provided that I<$key> is the last argument in the list. =item B =item B =item B =item B =item B =item B =item B Returns the HMAC-SHA-1/224/256/384/512 digest of I<$data>/I<$key>, with the result encoded as a hexadecimal string. Multiple I<$data> arguments are allowed, provided that I<$key> is the last argument in the list. =item B =item B =item B =item B =item B =item B =item B Returns the HMAC-SHA-1/224/256/384/512 digest of I<$data>/I<$key>, with the result encoded as a Base64 string. Multiple I<$data> arguments are allowed, provided that I<$key> is the last argument in the list. It's important to note that the resulting string does B contain the padding characters typical of Base64 encodings. This omission is deliberate, and is done to maintain compatibility with the family of CPAN Digest modules. See L for details. =back =head1 SEE ALSO L, L The Secure Hash Standard (Draft FIPS PUB 180-4) can be found at: L The Keyed-Hash Message Authentication Code (HMAC): L =head1 AUTHOR Mark Shelor =head1 ACKNOWLEDGMENTS The author is particularly grateful to Gisle Aas H. Merijn Brand Sean Burke Chris Carey Alexandr Ciornii Chris David Jim Doble Thomas Drugeon Julius Duque Jeffrey Friedl Robert Gilmour Brian Gladman Jarkko Hietaniemi Adam Kennedy Mark Lawrence Andy Lester Alex Muntada Steve Peters Chris Skiscim Martin Thurn Gunnar Wolf Adam Woodbury "who by trained skill rescued life from such great billows and such thick darkness and moored it in so perfect a calm and in so brilliant a light" - Lucretius =head1 COPYRIGHT AND LICENSE Copyright (C) 2003-2018 Mark Shelor This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. L =cut FILE5ec5decc/DynaLoader.pme # Generated from DynaLoader_pm.PL, this file is unique for every OS use strict; package DynaLoader; # And Gandalf said: 'Many folk like to know beforehand what is to # be set on the table; but those who have laboured to prepare the # feast like to keep their secret; for wonder makes the words of # praise louder.' # (Quote from Tolkien suggested by Anno Siegel.) # # See pod text at end of file for documentation. # See also ext/DynaLoader/README in source tree for other information. # # Tim.Bunce@ig.co.uk, August 1994 BEGIN { our $VERSION = '1.52'; } # Note: in almost any other piece of code "our" would have been a better # option than "use vars", but DynaLoader's bootstrap files need the # side effect of the variable being declared in any scope whose current # package is DynaLoader, not just the current lexical one. use vars qw(@dl_library_path @dl_resolve_using @dl_require_symbols $dl_debug @dl_librefs @dl_modules @dl_shared_objects $dl_dlext $dl_so $dlsrc @args $module @dirs $file $bscode); use Config; # enable debug/trace messages from DynaLoader perl code $dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug; # # Flags to alter dl_load_file behaviour. Assigned bits: # 0x01 make symbols available for linking later dl_load_file's. # (only known to work on Solaris 2 using dlopen(RTLD_GLOBAL)) # (ignored under VMS; effect is built-in to image linking) # (ignored under Android; the linker always uses RTLD_LOCAL) # # This is called as a class method $module->dl_load_flags. The # definition here will be inherited and result on "default" loading # behaviour unless a sub-class of DynaLoader defines its own version. # sub dl_load_flags { 0x00 } ($dl_dlext, $dl_so, $dlsrc) = @Config::Config{qw(dlext so dlsrc)}; # Some systems need special handling to expand file specifications # (VMS support by Charles Bailey ) # See dl_expandspec() for more details. Should be harmless but # inefficient to define on systems that don't need it. use vars qw($do_expand); $do_expand = 0; @dl_require_symbols = (); # names of symbols we need @dl_library_path = (); # path to look for files #XSLoader.pm may have added elements before we were required #@dl_shared_objects = (); # shared objects for symbols we have #@dl_librefs = (); # things we have loaded #@dl_modules = (); # Modules we have loaded # Initialise @dl_library_path with the 'standard' library path # for this platform as determined by Configure. push(@dl_library_path, split(' ', $Config::Config{libpth})); my $ldlibpthname = $Config::Config{ldlibpthname}; my $ldlibpthname_defined = defined $Config::Config{ldlibpthname}; my $pthsep = $Config::Config{path_sep}; # Add to @dl_library_path any extra directories we can gather from environment # during runtime. if ($ldlibpthname_defined && exists $ENV{$ldlibpthname}) { push(@dl_library_path, split(/$pthsep/, $ENV{$ldlibpthname})); } # E.g. HP-UX supports both its native SHLIB_PATH *and* LD_LIBRARY_PATH. if ($ldlibpthname_defined && $ldlibpthname ne 'LD_LIBRARY_PATH' && exists $ENV{LD_LIBRARY_PATH}) { push(@dl_library_path, split(/$pthsep/, $ENV{LD_LIBRARY_PATH})); } # No prizes for guessing why we don't say 'bootstrap DynaLoader;' here. # NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) && !defined(&dl_error); if ($dl_debug) { print STDERR "DynaLoader.pm loaded (@INC, @dl_library_path)\n"; print STDERR "DynaLoader not linked into this perl\n" unless defined(&boot_DynaLoader); } 1; # End of main code sub croak { require Carp; Carp::croak(@_) } sub bootstrap_inherit { my $module = $_[0]; no strict qw/refs vars/; local *isa = *{"$module\::ISA"}; local @isa = (@isa, 'DynaLoader'); # Cannot goto due to delocalization. Will report errors on a wrong line? bootstrap(@_); } sub bootstrap { # use local vars to enable $module.bs script to edit values local(@args) = @_; local($module) = $args[0]; local(@dirs, $file); unless ($module) { require Carp; Carp::confess("Usage: DynaLoader::bootstrap(module)"); } # A common error on platforms which don't support dynamic loading. # Since it's fatal and potentially confusing we give a detailed message. croak("Can't load module $module, dynamic loading not available in this perl.\n". " (You may need to build a new perl executable which either supports\n". " dynamic loading or has the $module module statically linked into it.)\n") unless defined(&dl_load_file); my @modparts = split(/::/,$module); my $modfname = $modparts[-1]; my $modfname_orig = $modfname; # For .bs file search # Some systems have restrictions on files names for DLL's etc. # mod2fname returns appropriate file base name (typically truncated) # It may also edit @modparts if required. $modfname = &mod2fname(\@modparts) if defined &mod2fname; my $modpname = join('/',@modparts); print STDERR "DynaLoader::bootstrap for $module ", "(auto/$modpname/$modfname.$dl_dlext)\n" if $dl_debug; my $dir; foreach (@INC) { $dir = "$_/auto/$modpname"; next unless -d $dir; # skip over uninteresting directories # check for common cases to avoid autoload of dl_findfile my $try = "$dir/$modfname.$dl_dlext"; last if $file = ($do_expand) ? dl_expandspec($try) : ((-f $try) && $try); # no luck here, save dir for possible later dl_findfile search push @dirs, $dir; } # last resort, let dl_findfile have a go in all known locations $file = dl_findfile(map("-L$_",@dirs,@INC), $modfname) unless $file; croak("Can't locate loadable object for module $module in \@INC (\@INC contains: @INC)") unless $file; # wording similar to error from 'require' my $bootname = "boot_$module"; $bootname =~ s/\W/_/g; @dl_require_symbols = ($bootname); # Execute optional '.bootstrap' perl script for this module. # The .bs file can be used to configure @dl_resolve_using etc to # match the needs of the individual module on this architecture. # N.B. The .bs file does not following the naming convention used # by mod2fname. my $bs = "$dir/$modfname_orig"; $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library if (-s $bs) { # only read file if it's not empty print STDERR "BS: $bs ($^O, $dlsrc)\n" if $dl_debug; eval { local @INC = ('.'); do $bs; }; warn "$bs: $@\n" if $@; } my $boot_symbol_ref; # Many dynamic extension loading problems will appear to come from # this section of code: XYZ failed at line 123 of DynaLoader.pm. # Often these errors are actually occurring in the initialisation # C code of the extension XS file. Perl reports the error as being # in this perl code simply because this was the last perl code # it executed. my $flags = $module->dl_load_flags; my $libref = dl_load_file($file, $flags) or croak("Can't load '$file' for module $module: ".dl_error()); push(@dl_librefs,$libref); # record loaded object $boot_symbol_ref = dl_find_symbol($libref, $bootname) or croak("Can't find '$bootname' symbol in $file\n"); push(@dl_modules, $module); # record loaded module boot: my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file); # See comment block above push(@dl_shared_objects, $file); # record files loaded &$xs(@args); } sub dl_findfile { # This function does not automatically consider the architecture # or the perl library auto directories. my (@args) = @_; my (@dirs, $dir); # which directories to search my (@found); # full paths to real files we have found #my $dl_ext= 'so'; # $Config::Config{'dlext'} suffix for perl extensions #my $dl_so = 'so'; # $Config::Config{'so'} suffix for shared libraries print STDERR "dl_findfile(@args)\n" if $dl_debug; # accumulate directories but process files as they appear arg: foreach(@args) { # Special fast case: full filepath requires no search if (m:/: && -f $_) { push(@found,$_); last arg unless wantarray; next; } # Deal with directories first: # Using a -L prefix is the preferred option (faster and more robust) if ( s{^-L}{} ) { push(@dirs, $_); next; } # Otherwise we try to try to spot directories by a heuristic # (this is a more complicated issue than it first appears) if (m:/: && -d $_) { push(@dirs, $_); next; } # Only files should get this far... my(@names, $name); # what filenames to look for if ( s{^-l}{} ) { # convert -lname to appropriate library name push(@names, "lib$_.$dl_so", "lib$_.a"); } else { # Umm, a bare name. Try various alternatives: # these should be ordered with the most likely first push(@names,"$_.$dl_dlext") unless m/\.$dl_dlext$/o; push(@names,"$_.$dl_so") unless m/\.$dl_so$/o; push(@names,"lib$_.$dl_so") unless m:/:; push(@names, $_); } my $dirsep = '/'; foreach $dir (@dirs, @dl_library_path) { next unless -d $dir; foreach $name (@names) { my($file) = "$dir$dirsep$name"; print STDERR " checking in $dir for $name\n" if $dl_debug; if ($do_expand && ($file = dl_expandspec($file))) { push @found, $file; next arg; # no need to look any further } elsif (-f $file) { push(@found, $file); next arg; # no need to look any further } } } } if ($dl_debug) { foreach(@dirs) { print STDERR " dl_findfile ignored non-existent directory: $_\n" unless -d $_; } print STDERR "dl_findfile found: @found\n"; } return $found[0] unless wantarray; @found; } sub dl_expandspec { my($spec) = @_; # Optional function invoked if DynaLoader.pm sets $do_expand. # Most systems do not require or use this function. # Some systems may implement it in the dl_*.xs file in which case # this Perl version should be excluded at build time. # This function is designed to deal with systems which treat some # 'filenames' in a special way. For example VMS 'Logical Names' # (something like unix environment variables - but different). # This function should recognise such names and expand them into # full file paths. # Must return undef if $spec is invalid or file does not exist. my $file = $spec; # default output to input return undef unless -f $file; print STDERR "dl_expandspec($spec) => $file\n" if $dl_debug; $file; } sub dl_find_symbol_anywhere { my $sym = shift; my $libref; foreach $libref (@dl_librefs) { my $symref = dl_find_symbol($libref,$sym,1); return $symref if $symref; } return undef; } __END__ =head1 NAME DynaLoader - Dynamically load C libraries into Perl code =head1 SYNOPSIS package YourPackage; require DynaLoader; @ISA = qw(... DynaLoader ...); __PACKAGE__->bootstrap; # optional method for 'global' loading sub dl_load_flags { 0x01 } =head1 DESCRIPTION This document defines a standard generic interface to the dynamic linking mechanisms available on many platforms. Its primary purpose is to implement automatic dynamic loading of Perl modules. This document serves as both a specification for anyone wishing to implement the DynaLoader for a new platform and as a guide for anyone wishing to use the DynaLoader directly in an application. The DynaLoader is designed to be a very simple high-level interface that is sufficiently general to cover the requirements of SunOS, HP-UX, Linux, VMS and other platforms. It is also hoped that the interface will cover the needs of OS/2, NT etc and also allow pseudo-dynamic linking (using C at runtime). It must be stressed that the DynaLoader, by itself, is practically useless for accessing non-Perl libraries because it provides almost no Perl-to-C 'glue'. There is, for example, no mechanism for calling a C library function or supplying arguments. A C::DynaLib module is available from CPAN sites which performs that function for some common system types. And since the year 2000, there's also Inline::C, a module that allows you to write Perl subroutines in C. Also available from your local CPAN site. DynaLoader Interface Summary @dl_library_path @dl_resolve_using @dl_require_symbols $dl_debug $dl_dlext @dl_librefs @dl_modules @dl_shared_objects Implemented in: bootstrap($modulename) Perl @filepaths = dl_findfile(@names) Perl $flags = $modulename->dl_load_flags Perl $symref = dl_find_symbol_anywhere($symbol) Perl $libref = dl_load_file($filename, $flags) C $status = dl_unload_file($libref) C $symref = dl_find_symbol($libref, $symbol) C @symbols = dl_undef_symbols() C dl_install_xsub($name, $symref [, $filename]) C $message = dl_error C =over 4 =item @dl_library_path The standard/default list of directories in which dl_findfile() will search for libraries etc. Directories are searched in order: $dl_library_path[0], [1], ... etc @dl_library_path is initialised to hold the list of 'normal' directories (F, etc) determined by B (C<$Config{'libpth'}>). This should ensure portability across a wide range of platforms. @dl_library_path should also be initialised with any other directories that can be determined from the environment at runtime (such as LD_LIBRARY_PATH for SunOS). After initialisation @dl_library_path can be manipulated by an application using push and unshift before calling dl_findfile(). Unshift can be used to add directories to the front of the search order either to save search time or to override libraries with the same name in the 'normal' directories. The load function that dl_load_file() calls may require an absolute pathname. The dl_findfile() function and @dl_library_path can be used to search for and return the absolute pathname for the library/object that you wish to load. =item @dl_resolve_using A list of additional libraries or other shared objects which can be used to resolve any undefined symbols that might be generated by a later call to load_file(). This is only required on some platforms which do not handle dependent libraries automatically. For example the Socket Perl extension library (F) contains references to many socket functions which need to be resolved when it's loaded. Most platforms will automatically know where to find the 'dependent' library (e.g., F). A few platforms need to be told the location of the dependent library explicitly. Use @dl_resolve_using for this. Example usage: @dl_resolve_using = dl_findfile('-lsocket'); =item @dl_require_symbols A list of one or more symbol names that are in the library/object file to be dynamically loaded. This is only required on some platforms. =item @dl_librefs An array of the handles returned by successful calls to dl_load_file(), made by bootstrap, in the order in which they were loaded. Can be used with dl_find_symbol() to look for a symbol in any of the loaded files. =item @dl_modules An array of module (package) names that have been bootstrap'ed. =item @dl_shared_objects An array of file names for the shared objects that were loaded. =item dl_error() Syntax: $message = dl_error(); Error message text from the last failed DynaLoader function. Note that, similar to errno in unix, a successful function call does not reset this message. Implementations should detect the error as soon as it occurs in any of the other functions and save the corresponding message for later retrieval. This will avoid problems on some platforms (such as SunOS) where the error message is very temporary (e.g., dlerror()). =item $dl_debug Internal debugging messages are enabled when $dl_debug is set true. Currently setting $dl_debug only affects the Perl side of the DynaLoader. These messages should help an application developer to resolve any DynaLoader usage problems. $dl_debug is set to C<$ENV{'PERL_DL_DEBUG'}> if defined. For the DynaLoader developer/porter there is a similar debugging variable added to the C code (see dlutils.c) and enabled if Perl was built with the B<-DDEBUGGING> flag. This can also be set via the PERL_DL_DEBUG environment variable. Set to 1 for minimal information or higher for more. =item $dl_dlext When specified (localised) in a module's F<.pm> file, indicates the extension which the module's loadable object will have. For example: local $DynaLoader::dl_dlext = 'unusual_ext'; would indicate that the module's loadable object has an extension of C instead of the more usual C<$Config{dlext}>. NOTE: This also requires that the module's F specify (in C): DLEXT => 'unusual_ext', =item dl_findfile() Syntax: @filepaths = dl_findfile(@names) Determine the full paths (including file suffix) of one or more loadable files given their generic names and optionally one or more directories. Searches directories in @dl_library_path by default and returns an empty list if no files were found. Names can be specified in a variety of platform independent forms. Any names in the form B<-lname> are converted into F, where F<.*> is an appropriate suffix for the platform. If a name does not already have a suitable prefix and/or suffix then the corresponding file will be searched for by trying combinations of prefix and suffix appropriate to the platform: "$name.o", "lib$name.*" and "$name". If any directories are included in @names they are searched before @dl_library_path. Directories may be specified as B<-Ldir>. Any other names are treated as filenames to be searched for. Using arguments of the form C<-Ldir> and C<-lname> is recommended. Example: @dl_resolve_using = dl_findfile(qw(-L/usr/5lib -lposix)); =item dl_expandspec() Syntax: $filepath = dl_expandspec($spec) Some unusual systems, such as VMS, require special filename handling in order to deal with symbolic names for files (i.e., VMS's Logical Names). To support these systems a dl_expandspec() function can be implemented either in the F file or code can be added to the dl_expandspec() function in F. See F for more information. =item dl_load_file() Syntax: $libref = dl_load_file($filename, $flags) Dynamically load $filename, which must be the path to a shared object or library. An opaque 'library reference' is returned as a handle for the loaded object. Returns undef on error. The $flags argument to alters dl_load_file behaviour. Assigned bits: 0x01 make symbols available for linking later dl_load_file's. (only known to work on Solaris 2 using dlopen(RTLD_GLOBAL)) (ignored under VMS; this is a normal part of image linking) (On systems that provide a handle for the loaded object such as SunOS and HPUX, $libref will be that handle. On other systems $libref will typically be $filename or a pointer to a buffer containing $filename. The application should not examine or alter $libref in any way.) This is the function that does the real work. It should use the current values of @dl_require_symbols and @dl_resolve_using if required. SunOS: dlopen($filename) HP-UX: shl_load($filename) Linux: dld_create_reference(@dl_require_symbols); dld_link($filename) VMS: lib$find_image_symbol($filename,$dl_require_symbols[0]) (The dlopen() function is also used by Solaris and some versions of Linux, and is a common choice when providing a "wrapper" on other mechanisms as is done in the OS/2 port.) =item dl_unload_file() Syntax: $status = dl_unload_file($libref) Dynamically unload $libref, which must be an opaque 'library reference' as returned from dl_load_file. Returns one on success and zero on failure. This function is optional and may not necessarily be provided on all platforms. If it is defined and perl is compiled with the C macro C defined, then it is called automatically when the interpreter exits for every shared object or library loaded by DynaLoader::bootstrap. All such library references are stored in @dl_librefs by DynaLoader::Bootstrap as it loads the libraries. The files are unloaded in last-in, first-out order. This unloading is usually necessary when embedding a shared-object perl (e.g. one configured with -Duseshrplib) within a larger application, and the perl interpreter is created and destroyed several times within the lifetime of the application. In this case it is possible that the system dynamic linker will unload and then subsequently reload the shared libperl without relocating any references to it from any files DynaLoaded by the previous incarnation of the interpreter. As a result, any shared objects opened by DynaLoader may point to a now invalid 'ghost' of the libperl shared object, causing apparently random memory corruption and crashes. This behaviour is most commonly seen when using Apache and mod_perl built with the APXS mechanism. SunOS: dlclose($libref) HP-UX: ??? Linux: ??? VMS: ??? (The dlclose() function is also used by Solaris and some versions of Linux, and is a common choice when providing a "wrapper" on other mechanisms as is done in the OS/2 port.) =item dl_load_flags() Syntax: $flags = dl_load_flags $modulename; Designed to be a method call, and to be overridden by a derived class (i.e. a class which has DynaLoader in its @ISA). The definition in DynaLoader itself returns 0, which produces standard behavior from dl_load_file(). =item dl_find_symbol() Syntax: $symref = dl_find_symbol($libref, $symbol) Return the address of the symbol $symbol or C if not found. If the target system has separate functions to search for symbols of different types then dl_find_symbol() should search for function symbols first and then other types. The exact manner in which the address is returned in $symref is not currently defined. The only initial requirement is that $symref can be passed to, and understood by, dl_install_xsub(). SunOS: dlsym($libref, $symbol) HP-UX: shl_findsym($libref, $symbol) Linux: dld_get_func($symbol) and/or dld_get_symbol($symbol) VMS: lib$find_image_symbol($libref,$symbol) =item dl_find_symbol_anywhere() Syntax: $symref = dl_find_symbol_anywhere($symbol) Applies dl_find_symbol() to the members of @dl_librefs and returns the first match found. =item dl_undef_symbols() Example @symbols = dl_undef_symbols() Return a list of symbol names which remain undefined after load_file(). Returns C<()> if not known. Don't worry if your platform does not provide a mechanism for this. Most do not need it and hence do not provide it, they just return an empty list. =item dl_install_xsub() Syntax: dl_install_xsub($perl_name, $symref [, $filename]) Create a new Perl external subroutine named $perl_name using $symref as a pointer to the function which implements the routine. This is simply a direct call to newXS()/newXS_flags(). Returns a reference to the installed function. The $filename parameter is used by Perl to identify the source file for the function if required by die(), caller() or the debugger. If $filename is not defined then "DynaLoader" will be used. =item bootstrap() Syntax: bootstrap($module [...]) This is the normal entry point for automatic dynamic loading in Perl. It performs the following actions: =over 8 =item * locates an auto/$module directory by searching @INC =item * uses dl_findfile() to determine the filename to load =item * sets @dl_require_symbols to C<("boot_$module")> =item * executes an F file if it exists (typically used to add to @dl_resolve_using any files which are required to load the module on the current platform) =item * calls dl_load_flags() to determine how to load the file. =item * calls dl_load_file() to load the file =item * calls dl_undef_symbols() and warns if any symbols are undefined =item * calls dl_find_symbol() for "boot_$module" =item * calls dl_install_xsub() to install it as "${module}::bootstrap" =item * calls &{"${module}::bootstrap"} to bootstrap the module (actually it uses the function reference returned by dl_install_xsub for speed) =back All arguments to bootstrap() are passed to the module's bootstrap function. The default code generated by F expects $module [, $version] If the optional $version argument is not given, it defaults to C<$XS_VERSION // $VERSION> in the module's symbol table. The default code compares the Perl-space version with the version of the compiled XS code, and croaks with an error if they do not match. =back =head1 AUTHOR Tim Bunce, 11 August 1994. This interface is based on the work and comments of (in no particular order): Larry Wall, Robert Sanders, Dean Roehrich, Jeff Okamoto, Anno Siegel, Thomas Neumann, Paul Marquess, Charles Bailey, myself and others. Larry Wall designed the elegant inherited bootstrap mechanism and implemented the first Perl 5 dynamic loader using it. Solaris global loading added by Nick Ing-Simmons with design/coding assistance from Tim Bunce, January 1996. =cut FILE01fec77e/Encode.pm}# # $Id: Encode.pm,v 3.17 2022/04/07 03:05:51 dankogai Exp $ # package Encode; use strict; use warnings; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; our $VERSION; BEGIN { $VERSION = sprintf "%d.%02d", q$Revision: 3.17 $ =~ /(\d+)/g; require XSLoader; XSLoader::load( __PACKAGE__, $VERSION ); } use Exporter 5.57 'import'; use Carp (); our @CARP_NOT = qw(Encode::Encoder); # Public, encouraged API is exported by default our @EXPORT = qw( decode decode_utf8 encode encode_utf8 str2bytes bytes2str encodings find_encoding find_mime_encoding clone_encoding ); our @FB_FLAGS = qw( DIE_ON_ERR WARN_ON_ERR RETURN_ON_ERR LEAVE_SRC PERLQQ HTMLCREF XMLCREF STOP_AT_PARTIAL ); our @FB_CONSTS = qw( FB_DEFAULT FB_CROAK FB_QUIET FB_WARN FB_PERLQQ FB_HTMLCREF FB_XMLCREF ); our @EXPORT_OK = ( qw( _utf8_off _utf8_on define_encoding from_to is_16bit is_8bit is_utf8 perlio_ok resolve_alias utf8_downgrade utf8_upgrade ), @FB_FLAGS, @FB_CONSTS, ); our %EXPORT_TAGS = ( all => [ @EXPORT, @EXPORT_OK ], default => [ @EXPORT ], fallbacks => [ @FB_CONSTS ], fallback_all => [ @FB_CONSTS, @FB_FLAGS ], ); # Documentation moved after __END__ for speed - NI-S our $ON_EBCDIC = ( ord("A") == 193 ); use Encode::Alias (); use Encode::MIME::Name; use Storable; # Make a %Encoding package variable to allow a certain amount of cheating our %Encoding; our %ExtModule; require Encode::Config; # See # https://bugzilla.redhat.com/show_bug.cgi?id=435505#c2 # to find why sig handlers inside eval{} are disabled. eval { local $SIG{__DIE__}; local $SIG{__WARN__}; local @INC = @INC; pop @INC if @INC && $INC[-1] eq '.'; require Encode::ConfigLocal; }; sub encodings { my %enc; my $arg = $_[1] || ''; if ( $arg eq ":all" ) { %enc = ( %Encoding, %ExtModule ); } else { %enc = %Encoding; for my $mod ( map { m/::/ ? $_ : "Encode::$_" } @_ ) { DEBUG and warn $mod; for my $enc ( keys %ExtModule ) { $ExtModule{$enc} eq $mod and $enc{$enc} = $mod; } } } return sort { lc $a cmp lc $b } grep { !/^(?:Internal|Unicode|Guess)$/o } keys %enc; } sub perlio_ok { my $obj = ref( $_[0] ) ? $_[0] : find_encoding( $_[0] ); $obj->can("perlio_ok") and return $obj->perlio_ok(); return 0; # safety net } sub define_encoding { my $obj = shift; my $name = shift; $Encoding{$name} = $obj; my $lc = lc($name); define_alias( $lc => $obj ) unless $lc eq $name; while (@_) { my $alias = shift; define_alias( $alias, $obj ); } my $class = ref($obj); push @Encode::CARP_NOT, $class unless grep { $_ eq $class } @Encode::CARP_NOT; push @Encode::Encoding::CARP_NOT, $class unless grep { $_ eq $class } @Encode::Encoding::CARP_NOT; return $obj; } sub getEncoding { my ( $class, $name, $skip_external ) = @_; defined($name) or return; $name =~ s/\s+//g; # https://rt.cpan.org/Ticket/Display.html?id=65796 ref($name) && $name->can('renew') and return $name; exists $Encoding{$name} and return $Encoding{$name}; my $lc = lc $name; exists $Encoding{$lc} and return $Encoding{$lc}; my $oc = $class->find_alias($name); defined($oc) and return $oc; $lc ne $name and $oc = $class->find_alias($lc); defined($oc) and return $oc; unless ($skip_external) { if ( my $mod = $ExtModule{$name} || $ExtModule{$lc} ) { $mod =~ s,::,/,g; $mod .= '.pm'; eval { require $mod; }; exists $Encoding{$name} and return $Encoding{$name}; } } return; } # HACK: These two functions must be defined in Encode and because of # cyclic dependency between Encode and Encode::Alias, Exporter does not work sub find_alias { goto &Encode::Alias::find_alias; } sub define_alias { goto &Encode::Alias::define_alias; } sub find_encoding($;$) { my ( $name, $skip_external ) = @_; return __PACKAGE__->getEncoding( $name, $skip_external ); } sub find_mime_encoding($;$) { my ( $mime_name, $skip_external ) = @_; my $name = Encode::MIME::Name::get_encode_name( $mime_name ); return find_encoding( $name, $skip_external ); } sub resolve_alias($) { my $obj = find_encoding(shift); defined $obj and return $obj->name; return; } sub clone_encoding($) { my $obj = find_encoding(shift); ref $obj or return; return Storable::dclone($obj); } onBOOT; if ($ON_EBCDIC) { package Encode::UTF_EBCDIC; use parent 'Encode::Encoding'; my $obj = bless { Name => "UTF_EBCDIC" } => "Encode::UTF_EBCDIC"; Encode::define_encoding($obj, 'Unicode'); sub decode { my ( undef, $str, $chk ) = @_; my $res = ''; for ( my $i = 0 ; $i < length($str) ; $i++ ) { $res .= chr( utf8::unicode_to_native( ord( substr( $str, $i, 1 ) ) ) ); } $_[1] = '' if $chk; return $res; } sub encode { my ( undef, $str, $chk ) = @_; my $res = ''; for ( my $i = 0 ; $i < length($str) ; $i++ ) { $res .= chr( utf8::native_to_unicode( ord( substr( $str, $i, 1 ) ) ) ); } $_[1] = '' if $chk; return $res; } } { # https://rt.cpan.org/Public/Bug/Display.html?id=103253 package Encode::XS; use parent 'Encode::Encoding'; } { package Encode::utf8; use parent 'Encode::Encoding'; my %obj = ( 'utf8' => { Name => 'utf8' }, 'utf-8-strict' => { Name => 'utf-8-strict', strict_utf8 => 1 } ); for ( keys %obj ) { bless $obj{$_} => __PACKAGE__; Encode::define_encoding( $obj{$_} => $_ ); } sub cat_decode { # ($obj, $dst, $src, $pos, $trm, $chk) # currently ignores $chk my ( undef, undef, undef, $pos, $trm ) = @_; my ( $rdst, $rsrc, $rpos ) = \@_[ 1, 2, 3 ]; use bytes; if ( ( my $npos = index( $$rsrc, $trm, $pos ) ) >= 0 ) { $$rdst .= substr( $$rsrc, $pos, $npos - $pos + length($trm) ); $$rpos = $npos + length($trm); return 1; } $$rdst .= substr( $$rsrc, $pos ); $$rpos = length($$rsrc); return ''; } } 1; __END__ =head1 NAME Encode - character encodings in Perl =head1 SYNOPSIS use Encode qw(decode encode); $characters = decode('UTF-8', $octets, Encode::FB_CROAK); $octets = encode('UTF-8', $characters, Encode::FB_CROAK); =head2 Table of Contents Encode consists of a collection of modules whose details are too extensive to fit in one document. This one itself explains the top-level APIs and general topics at a glance. For other topics and more details, see the documentation for these modules: =over 2 =item L - Alias definitions to encodings =item L - Encode Implementation Base Class =item L - List of Supported Encodings =item L - Simplified Chinese Encodings =item L - Japanese Encodings =item L - Korean Encodings =item L - Traditional Chinese Encodings =back =head1 DESCRIPTION The C module provides the interface between Perl strings and the rest of the system. Perl strings are sequences of I. The repertoire of characters that Perl can represent is a superset of those defined by the Unicode Consortium. On most platforms the ordinal values of a character as returned by C)> is the I for that character. The exceptions are platforms where the legacy encoding is some variant of EBCDIC rather than a superset of ASCII; see L. During recent history, data is moved around a computer in 8-bit chunks, often called "bytes" but also known as "octets" in standards documents. Perl is widely used to manipulate data of many types: not only strings of characters representing human or computer languages, but also "binary" data, being the machine's representation of numbers, pixels in an image, or just about anything. When Perl is processing "binary data", the programmer wants Perl to process "sequences of bytes". This is not a problem for Perl: because a byte has 256 possible values, it easily fits in Perl's much larger "logical character". This document mostly explains the I. L and L explain the I. =head2 TERMINOLOGY =head3 character A character in the range 0 .. 2**32-1 (or more); what Perl's strings are made of. =head3 byte A character in the range 0..255; a special case of a Perl character. =head3 octet 8 bits of data, with ordinal values 0..255; term for bytes passed to or from a non-Perl context, such as a disk file, standard I/O stream, database, command-line argument, environment variable, socket etc. =head1 THE PERL ENCODING API =head2 Basic methods =head3 encode $octets = encode(ENCODING, STRING[, CHECK]) Encodes the scalar value I from Perl's internal form into I and returns a sequence of octets. I can be either a canonical name or an alias. For encoding names and aliases, see L. For CHECK, see L. B: the input scalar I might be modified in-place depending on what is set in CHECK. See L if you want your inputs to be left unchanged. For example, to convert a string from Perl's internal format into ISO-8859-1, also known as Latin1: $octets = encode("iso-8859-1", $string); B: When you run C<$octets = encode("UTF-8", $string)>, then $octets I $string. Though both contain the same data, the UTF8 flag for $octets is I off. When you encode anything, the UTF8 flag on the result is always off, even when it contains a completely valid UTF-8 string. See L below. If the $string is C, then C is returned. C may be used as an alias for C. =head3 decode $string = decode(ENCODING, OCTETS[, CHECK]) This function returns the string that results from decoding the scalar value I, assumed to be a sequence of octets in I, into Perl's internal form. As with encode(), I can be either a canonical name or an alias. For encoding names and aliases, see L; for I, see L. B: the input scalar I might be modified in-place depending on what is set in CHECK. See L if you want your inputs to be left unchanged. For example, to convert ISO-8859-1 data into a string in Perl's internal format: $string = decode("iso-8859-1", $octets); B: When you run C<$string = decode("UTF-8", $octets)>, then $string I $octets. Though both contain the same data, the UTF8 flag for $string is on. See L below. If the $string is C, then C is returned. C may be used as an alias for C. =head3 find_encoding [$obj =] find_encoding(ENCODING) Returns the I corresponding to I. Returns C if no matching I is find. The returned object is what does the actual encoding or decoding. $string = decode($name, $bytes); is in fact $string = do { $obj = find_encoding($name); croak qq(encoding "$name" not found) unless ref $obj; $obj->decode($bytes); }; with more error checking. You can therefore save time by reusing this object as follows; my $enc = find_encoding("iso-8859-1"); while(<>) { my $string = $enc->decode($_); ... # now do something with $string; } Besides L and L, other methods are available as well. For instance, C returns the canonical name of the encoding object. find_encoding("latin1")->name; # iso-8859-1 See L for details. =head3 find_mime_encoding [$obj =] find_mime_encoding(MIME_ENCODING) Returns the I corresponding to I. Acts same as C but C of returned object must match to I. So as opposite of C canonical names and aliases are not used when searching for object. find_mime_encoding("utf8"); # returns undef because "utf8" is not valid I find_mime_encoding("utf-8"); # returns encode object "utf-8-strict" find_mime_encoding("UTF-8"); # same as "utf-8" because I is case insensitive find_mime_encoding("utf-8-strict"); returns undef because "utf-8-strict" is not valid I =head3 from_to [$length =] from_to($octets, FROM_ENC, TO_ENC [, CHECK]) Converts I data between two encodings. The data in $octets must be encoded as octets and I as characters in Perl's internal format. For example, to convert ISO-8859-1 data into Microsoft's CP1250 encoding: from_to($octets, "iso-8859-1", "cp1250"); and to convert it back: from_to($octets, "cp1250", "iso-8859-1"); Because the conversion happens in place, the data to be converted cannot be a string constant: it must be a scalar variable. C returns the length of the converted string in octets on success, and C on error. B: The following operations may look the same, but are not: from_to($data, "iso-8859-1", "UTF-8"); #1 $data = decode("iso-8859-1", $data); #2 Both #1 and #2 make $data consist of a completely valid UTF-8 string, but only #2 turns the UTF8 flag on. #1 is equivalent to: $data = encode("UTF-8", decode("iso-8859-1", $data)); See L below. Also note that: from_to($octets, $from, $to, $check); is equivalent to: $octets = encode($to, decode($from, $octets), $check); Yes, it does I respect the $check during decoding. It is deliberately done that way. If you need minute control, use C followed by C as follows: $octets = encode($to, decode($from, $octets, $check_from), $check_to); =head3 encode_utf8 $octets = encode_utf8($string); B: L Do not use it for data exchange. Unless you want Perl's older "lax" mode, prefer C<$octets = encode("UTF-8", $string)>. Equivalent to C<$octets = encode("utf8", $string)>. The characters in $string are encoded in Perl's internal format, and the result is returned as a sequence of octets. Because all possible characters in Perl have a (loose, not strict) utf8 representation, this function cannot fail. =head3 decode_utf8 $string = decode_utf8($octets [, CHECK]); B: L Do not use it for data exchange. Unless you want Perl's older "lax" mode, prefer C<$string = decode("UTF-8", $octets [, CHECK])>. Equivalent to C<$string = decode("utf8", $octets [, CHECK])>. The sequence of octets represented by $octets is decoded from (loose, not strict) utf8 into a sequence of logical characters. Because not all sequences of octets are valid not strict utf8, it is quite possible for this function to fail. For CHECK, see L. B: the input I<$octets> might be modified in-place depending on what is set in CHECK. See L if you want your inputs to be left unchanged. =head2 Listing available encodings use Encode; @list = Encode->encodings(); Returns a list of canonical names of available encodings that have already been loaded. To get a list of all available encodings including those that have not yet been loaded, say: @all_encodings = Encode->encodings(":all"); Or you can give the name of a specific module: @with_jp = Encode->encodings("Encode::JP"); When "C<::>" is not in the name, "C" is assumed. @ebcdic = Encode->encodings("EBCDIC"); To find out in detail which encodings are supported by this package, see L. =head2 Defining Aliases To add a new alias to a given encoding, use: use Encode; use Encode::Alias; define_alias(NEWNAME => ENCODING); After that, I can be used as an alias for I. I may be either the name of an encoding or an I. Before you do that, first make sure the alias is nonexistent using C, which returns the canonical name thereof. For example: Encode::resolve_alias("latin1") eq "iso-8859-1" # true Encode::resolve_alias("iso-8859-12") # false; nonexistent Encode::resolve_alias($name) eq $name # true if $name is canonical C does not need C; it can be imported via C. See L for details. =head2 Finding IANA Character Set Registry names The canonical name of a given encoding does not necessarily agree with IANA Character Set Registry, commonly seen as C<< Content-Type: text/plain; charset=I >>. For most cases, the canonical name works, but sometimes it does not, most notably with "utf-8-strict". As of C version 2.21, a new method C is therefore added. use Encode; my $enc = find_encoding("UTF-8"); warn $enc->name; # utf-8-strict warn $enc->mime_name; # UTF-8 See also: L =head1 Encoding via PerlIO If your perl supports C (which is the default), you can use a C layer to decode and encode directly via a filehandle. The following two examples are fully identical in functionality: ### Version 1 via PerlIO open(INPUT, "< :encoding(shiftjis)", $infile) || die "Can't open < $infile for reading: $!"; open(OUTPUT, "> :encoding(euc-jp)", $outfile) || die "Can't open > $output for writing: $!"; while () { # auto decodes $_ print OUTPUT; # auto encodes $_ } close(INPUT) || die "can't close $infile: $!"; close(OUTPUT) || die "can't close $outfile: $!"; ### Version 2 via from_to() open(INPUT, "< :raw", $infile) || die "Can't open < $infile for reading: $!"; open(OUTPUT, "> :raw", $outfile) || die "Can't open > $output for writing: $!"; while () { from_to($_, "shiftjis", "euc-jp", 1); # switch encoding print OUTPUT; # emit raw (but properly encoded) data } close(INPUT) || die "can't close $infile: $!"; close(OUTPUT) || die "can't close $outfile: $!"; In the first version above, you let the appropriate encoding layer handle the conversion. In the second, you explicitly translate from one encoding to the other. Unfortunately, it may be that encodings are not C-savvy. You can check to see whether your encoding is supported by C by invoking the C method on it: Encode::perlio_ok("hz"); # false find_encoding("euc-cn")->perlio_ok; # true wherever PerlIO is available use Encode qw(perlio_ok); # imported upon request perlio_ok("euc-jp") Fortunately, all encodings that come with C core are C-savvy except for C and C. For the gory details, see L and L. =head1 Handling Malformed Data The optional I argument tells C what to do when encountering malformed data. Without I, C (== 0) is assumed. As of version 2.12, C supports coderef values for C; see below. B Not all encodings support this feature. Some encodings ignore the I argument. For example, L ignores I and it always croaks on error. =head2 List of I values =head3 FB_DEFAULT I = Encode::FB_DEFAULT ( == 0) If I is 0, encoding and decoding replace any malformed character with a I. When you encode, I is used. When you decode, the Unicode REPLACEMENT CHARACTER, code point U+FFFD, is used. If the data is supposed to be UTF-8, an optional lexical warning of warning category C<"utf8"> is given. =head3 FB_CROAK I = Encode::FB_CROAK ( == 1) If I is 1, methods immediately die with an error message. Therefore, when I is 1, you should trap exceptions with C, unless you really want to let it C. =head3 FB_QUIET I = Encode::FB_QUIET If I is set to C, encoding and decoding immediately return the portion of the data that has been processed so far when an error occurs. The data argument is overwritten with everything after that point; that is, the unprocessed portion of the data. This is handy when you have to call C repeatedly in the case where your source data may contain partial multi-byte character sequences, (that is, you are reading with a fixed-width buffer). Here's some sample code to do exactly that: my($buffer, $string) = ("", ""); while (read($fh, $buffer, 256, length($buffer))) { $string .= decode($encoding, $buffer, Encode::FB_QUIET); # $buffer now contains the unprocessed partial character } =head3 FB_WARN I = Encode::FB_WARN This is the same as C above, except that instead of being silent on errors, it issues a warning. This is handy for when you are debugging. B: All warnings from Encode module are reported, independently of L settings. If you want to follow settings of lexical warnings configured by L then append also check value C. This value is available since Encode version 2.99. =head3 FB_PERLQQ FB_HTMLCREF FB_XMLCREF =over 2 =item perlqq mode (I = Encode::FB_PERLQQ) =item HTML charref mode (I = Encode::FB_HTMLCREF) =item XML charref mode (I = Encode::FB_XMLCREF) =back For encodings that are implemented by the C module, C C<==> C puts C and C into C fallback mode. When you decode, C<\xI> is inserted for a malformed character, where I is the hex representation of the octet that could not be decoded to utf8. When you encode, C<\x{I}> will be inserted, where I is the Unicode code point (in any number of hex digits) of the character that cannot be found in the character repertoire of the encoding. The HTML/XML character reference modes are about the same. In place of C<\x{I}>, HTML uses C<&#I;> where I is a decimal number, and XML uses C<&#xI;> where I is the hexadecimal number. In C 2.10 or later, C is also implied. =head3 The bitmask These modes are all actually set via a bitmask. Here is how the C> constants are laid out. You can import the C> constants via C, and you can import the generic bitmask constants via C. FB_DEFAULT FB_CROAK FB_QUIET FB_WARN FB_PERLQQ DIE_ON_ERR 0x0001 X WARN_ON_ERR 0x0002 X RETURN_ON_ERR 0x0004 X X LEAVE_SRC 0x0008 X PERLQQ 0x0100 X HTMLCREF 0x0200 XMLCREF 0x0400 =head3 LEAVE_SRC Encode::LEAVE_SRC If the C bit is I set but I is set, then the source string to encode() or decode() will be overwritten in place. If you're not interested in this, then bitwise-OR it with the bitmask. =head2 coderef for CHECK As of C 2.12, C can also be a code reference which takes the ordinal value of the unmapped character as an argument and returns octets that represent the fallback character. For instance: $ascii = encode("ascii", $utf8, sub{ sprintf "", shift }); Acts like C but U+I is used instead of C<\x{I}>. Fallback for C must return decoded string (sequence of characters) and takes a list of ordinal values as its arguments. So for example if you wish to decode octets as UTF-8, and use ISO-8859-15 as a fallback for bytes that are not valid UTF-8, you could write $str = decode 'UTF-8', $octets, sub { my $tmp = join '', map chr, @_; return decode 'ISO-8859-15', $tmp; }; =head1 Defining Encodings To define a new encoding, use: use Encode qw(define_encoding); define_encoding($object, CANONICAL_NAME [, alias...]); I will be associated with I<$object>. The object should provide the interface described in L. If more than two arguments are provided, additional arguments are considered aliases for I<$object>. See L for details. =head1 The UTF8 flag Before the introduction of Unicode support in Perl, The C operator just compared the strings represented by two scalars. Beginning with Perl 5.8, C compares two strings with simultaneous consideration of I. To explain why we made it so, I quote from page 402 of I =over 2 =item Goal #1: Old byte-oriented programs should not spontaneously break on the old byte-oriented data they used to work on. =item Goal #2: Old byte-oriented programs should magically start working on the new character-oriented data when appropriate. =item Goal #3: Programs should run just as fast in the new character-oriented mode as in the old byte-oriented mode. =item Goal #4: Perl should remain one language, rather than forking into a byte-oriented Perl and a character-oriented Perl. =back When I was written, not even Perl 5.6.0 had been born yet, many features documented in the book remained unimplemented for a long time. Perl 5.8 corrected much of this, and the introduction of the UTF8 flag is one of them. You can think of there being two fundamentally different kinds of strings and string-operations in Perl: one a byte-oriented mode for when the internal UTF8 flag is off, and the other a character-oriented mode for when the internal UTF8 flag is on. This UTF8 flag is not visible in Perl scripts, exactly for the same reason you cannot (or rather, you I) see whether a scalar contains a string, an integer, or a floating-point number. But you can still peek and poke these if you will. See the next section. =head2 Messing with Perl's Internals The following API uses parts of Perl's internals in the current implementation. As such, they are efficient but may change in a future release. =head3 is_utf8 is_utf8(STRING [, CHECK]) [INTERNAL] Tests whether the UTF8 flag is turned on in the I. If I is true, also checks whether I contains well-formed UTF-8. Returns true if successful, false otherwise. Typically only necessary for debugging and testing. Don't use this flag as a marker to distinguish character and binary data, that should be decided for each variable when you write your code. B: If I has UTF8 flag set, it does B mean that I is UTF-8 encoded and vice-versa. As of Perl 5.8.1, L also has the C function. =head3 _utf8_on _utf8_on(STRING) [INTERNAL] Turns the I's internal UTF8 flag B. The I is I checked for containing only well-formed UTF-8. Do not use this unless you I that the STRING holds only well-formed UTF-8. Returns the previous state of the UTF8 flag (so please don't treat the return value as indicating success or failure), or C if I is not a string. B: For security reasons, this function does not work on tainted values. =head3 _utf8_off _utf8_off(STRING) [INTERNAL] Turns the I's internal UTF8 flag B. Do not use frivolously. Returns the previous state of the UTF8 flag, or C if I is not a string. Do not treat the return value as indicative of success or failure, because that isn't what it means: it is only the previous setting. B: For security reasons, this function does not work on tainted values. =head1 UTF-8 vs. utf8 vs. UTF8 ....We now view strings not as sequences of bytes, but as sequences of numbers in the range 0 .. 2**32-1 (or in the case of 64-bit computers, 0 .. 2**64-1) -- Programming Perl, 3rd ed. That has historically been Perl's notion of UTF-8, as that is how UTF-8 was first conceived by Ken Thompson when he invented it. However, thanks to later revisions to the applicable standards, official UTF-8 is now rather stricter than that. For example, its range is much narrower (0 .. 0x10_FFFF to cover only 21 bits instead of 32 or 64 bits) and some sequences are not allowed, like those used in surrogate pairs, the 31 non-character code points 0xFDD0 .. 0xFDEF, the last two code points in I plane (0xI_FFFE and 0xI_FFFF), all non-shortest encodings, etc. The former default in which Perl would always use a loose interpretation of UTF-8 has now been overruled: From: Larry Wall Date: December 04, 2004 11:51:58 JST To: perl-unicode@perl.org Subject: Re: Make Encode.pm support the real UTF-8 Message-Id: <20041204025158.GA28754@wall.org> On Fri, Dec 03, 2004 at 10:12:12PM +0000, Tim Bunce wrote: : I've no problem with 'utf8' being perl's unrestricted uft8 encoding, : but "UTF-8" is the name of the standard and should give the : corresponding behaviour. For what it's worth, that's how I've always kept them straight in my head. Also for what it's worth, Perl 6 will mostly default to strict but make it easy to switch back to lax. Larry Got that? As of Perl 5.8.7, B<"UTF-8"> means UTF-8 in its current sense, which is conservative and strict and security-conscious, whereas B<"utf8"> means UTF-8 in its former sense, which was liberal and loose and lax. C version 2.10 or later thus groks this subtle but critically important distinction between C<"UTF-8"> and C<"utf8">. encode("utf8", "\x{FFFF_FFFF}", 1); # okay encode("UTF-8", "\x{FFFF_FFFF}", 1); # croaks This distinction is also important for decoding. In the following, C<$s> stores character U+200000, which exceeds UTF-8's allowed range. C<$s> thus stores an invalid Unicode code point: $s = decode("utf8", "\xf8\x88\x80\x80\x80"); C<"UTF-8">, by contrast, will either coerce the input to something valid: $s = decode("UTF-8", "\xf8\x88\x80\x80\x80"); # U+FFFD .. or croak: decode("UTF-8", "\xf8\x88\x80\x80\x80", FB_CROAK|LEAVE_SRC); In the C module, C<"UTF-8"> is actually a canonical name for C<"utf-8-strict">. That hyphen between the C<"UTF"> and the C<"8"> is critical; without it, C goes "liberal" and (perhaps overly-)permissive: find_encoding("UTF-8")->name # is 'utf-8-strict' find_encoding("utf-8")->name # ditto. names are case insensitive find_encoding("utf_8")->name # ditto. "_" are treated as "-" find_encoding("UTF8")->name # is 'utf8'. Perl's internal UTF8 flag is called "UTF8", without a hyphen. It indicates whether a string is internally encoded as "utf8", also without a hyphen. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L L, the Perl Unicode Mailing List L =head1 MAINTAINER This project was originated by the late Nick Ing-Simmons and later maintained by Dan Kogai I<< >>. See AUTHORS for a full list of people involved. For any questions, send mail to I<< >> so that we can all share. While Dan Kogai retains the copyright as a maintainer, credit should go to all those involved. See AUTHORS for a list of those who submitted code to the project. =head1 COPYRIGHT Copyright 2002-2014 Dan Kogai I<< >>. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut FILE265d7a02/Encode/Alias.pm1package Encode::Alias; use strict; use warnings; our $VERSION = do { my @r = ( q$Revision: 2.24 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; use Exporter 'import'; # Public, encouraged API is exported by default our @EXPORT = qw ( define_alias find_alias ); our @Alias; # ordered matching list our %Alias; # cached known aliases sub find_alias { my $class = shift; my $find = shift; unless ( exists $Alias{$find} ) { $Alias{$find} = undef; # Recursion guard for ( my $i = 0 ; $i < @Alias ; $i += 2 ) { my $alias = $Alias[$i]; my $val = $Alias[ $i + 1 ]; my $new; if ( ref($alias) eq 'Regexp' && $find =~ $alias ) { DEBUG and warn "eval $val"; $new = eval $val; DEBUG and $@ and warn "$val, $@"; } elsif ( ref($alias) eq 'CODE' ) { DEBUG and warn "$alias", "->", "($find)"; $new = $alias->($find); } elsif ( lc($find) eq lc($alias) ) { $new = $val; } if ( defined($new) ) { next if $new eq $find; # avoid (direct) recursion on bugs DEBUG and warn "$alias, $new"; my $enc = ( ref($new) ) ? $new : Encode::find_encoding($new); if ($enc) { $Alias{$find} = $enc; last; } } } # case insensitive search when canonical is not in all lowercase # RT ticket #7835 unless ( $Alias{$find} ) { my $lcfind = lc($find); for my $name ( keys %Encode::Encoding, keys %Encode::ExtModule ) { $lcfind eq lc($name) or next; $Alias{$find} = Encode::find_encoding($name); DEBUG and warn "$find => $name"; } } } if (DEBUG) { my $name; if ( my $e = $Alias{$find} ) { $name = $e->name; } else { $name = ""; } warn "find_alias($class, $find)->name = $name"; } return $Alias{$find}; } sub define_alias { while (@_) { my $alias = shift; my $name = shift; unshift( @Alias, $alias => $name ) # newer one has precedence if defined $alias; if ( ref($alias) ) { # clear %Alias cache to allow overrides my @a = keys %Alias; for my $k (@a) { if ( ref($alias) eq 'Regexp' && $k =~ $alias ) { DEBUG and warn "delete \$Alias\{$k\}"; delete $Alias{$k}; } elsif ( ref($alias) eq 'CODE' && $alias->($k) ) { DEBUG and warn "delete \$Alias\{$k\}"; delete $Alias{$k}; } } } elsif (defined $alias) { DEBUG and warn "delete \$Alias\{$alias\}"; delete $Alias{$alias}; } elsif (DEBUG) { require Carp; Carp::croak("undef \$alias"); } } } # HACK: Encode must be used after define_alias is declarated as Encode calls define_alias use Encode (); # Allow latin-1 style names as well # 0 1 2 3 4 5 6 7 8 9 10 our @Latin2iso = ( 0, 1, 2, 3, 4, 9, 10, 13, 14, 15, 16 ); # Allow winlatin1 style names as well our %Winlatin2cp = ( 'latin1' => 1252, 'latin2' => 1250, 'cyrillic' => 1251, 'greek' => 1253, 'turkish' => 1254, 'hebrew' => 1255, 'arabic' => 1256, 'baltic' => 1257, 'vietnamese' => 1258, ); init_aliases(); sub undef_aliases { @Alias = (); %Alias = (); } sub init_aliases { undef_aliases(); # Try all-lower-case version should all else fails define_alias( qr/^(.*)$/ => '"\L$1"' ); # UTF/UCS stuff define_alias( qr/^(unicode-1-1-)?UTF-?7$/i => '"UTF-7"' ); define_alias( qr/^UCS-?2-?LE$/i => '"UCS-2LE"' ); define_alias( qr/^UCS-?2-?(BE)?$/i => '"UCS-2BE"', qr/^UCS-?4-?(BE|LE|)?$/i => 'uc("UTF-32$1")', qr/^iso-10646-1$/i => '"UCS-2BE"' ); define_alias( qr/^UTF-?(16|32)-?BE$/i => '"UTF-$1BE"', qr/^UTF-?(16|32)-?LE$/i => '"UTF-$1LE"', qr/^UTF-?(16|32)$/i => '"UTF-$1"', ); # ASCII define_alias( qr/^(?:US-?)ascii$/i => '"ascii"' ); define_alias( 'C' => 'ascii' ); define_alias( qr/\b(?:ISO[-_]?)?646(?:[-_]?US)?$/i => '"ascii"' ); # Allow variants of iso-8859-1 etc. define_alias( qr/\biso[-_]?(\d+)[-_](\d+)$/i => '"iso-$1-$2"' ); # At least HP-UX has these. define_alias( qr/\biso8859(\d+)$/i => '"iso-8859-$1"' ); # More HP stuff. define_alias( qr/\b(?:hp-)?(arabic|greek|hebrew|kana|roman|thai|turkish)8$/i => '"${1}8"' ); # The Official name of ASCII. define_alias( qr/\bANSI[-_]?X3\.4[-_]?1968$/i => '"ascii"' ); # This is a font issue, not an encoding issue. # (The currency symbol of the Latin 1 upper half # has been redefined as the euro symbol.) define_alias( qr/^(.+)\@euro$/i => '"$1"' ); define_alias( qr/\b(?:iso[-_]?)?latin[-_]?(\d+)$/i => 'defined $Encode::Alias::Latin2iso[$1] ? "iso-8859-$Encode::Alias::Latin2iso[$1]" : undef' ); define_alias( qr/\bwin(latin[12]|cyrillic|baltic|greek|turkish| hebrew|arabic|baltic|vietnamese)$/ix => '"cp" . $Encode::Alias::Winlatin2cp{lc($1)}' ); # Common names for non-latin preferred MIME names define_alias( 'ascii' => 'US-ascii', 'cyrillic' => 'iso-8859-5', 'arabic' => 'iso-8859-6', 'greek' => 'iso-8859-7', 'hebrew' => 'iso-8859-8', 'thai' => 'iso-8859-11', ); # RT #20781 define_alias(qr/\btis-?620\b/i => '"iso-8859-11"'); # At least AIX has IBM-NNN (surprisingly...) instead of cpNNN. # And Microsoft has their own naming (again, surprisingly). # And windows-* is registered in IANA! define_alias( qr/\b(?:cp|ibm|ms|windows)[-_ ]?(\d{2,4})$/i => '"cp$1"' ); # Sometimes seen with a leading zero. # define_alias( qr/\bcp037\b/i => '"cp37"'); # Mac Mappings # predefined in *.ucm; unneeded # define_alias( qr/\bmacIcelandic$/i => '"macIceland"'); define_alias( qr/^(?:x[_-])?mac[_-](.*)$/i => '"mac$1"' ); # http://rt.cpan.org/Ticket/Display.html?id=36326 define_alias( qr/^macintosh$/i => '"MacRoman"' ); # https://rt.cpan.org/Ticket/Display.html?id=78125 define_alias( qr/^macce$/i => '"MacCentralEurRoman"' ); # Ououououou. gone. They are different! # define_alias( qr/\bmacRomanian$/i => '"macRumanian"'); # Standardize on the dashed versions. define_alias( qr/\bkoi8[\s\-_]*([ru])$/i => '"koi8-$1"' ); unless ($Encode::ON_EBCDIC) { # for Encode::CN define_alias( qr/\beuc.*cn$/i => '"euc-cn"' ); define_alias( qr/\bcn.*euc$/i => '"euc-cn"' ); # define_alias( qr/\bGB[- ]?(\d+)$/i => '"euc-cn"' ) # CP936 doesn't have vendor-addon for GBK, so they're identical. define_alias( qr/^gbk$/i => '"cp936"' ); # This fixes gb2312 vs. euc-cn confusion, practically define_alias( qr/\bGB[-_ ]?2312(?!-?raw)/i => '"euc-cn"' ); # for Encode::JP define_alias( qr/\bjis$/i => '"7bit-jis"' ); define_alias( qr/\beuc.*jp$/i => '"euc-jp"' ); define_alias( qr/\bjp.*euc$/i => '"euc-jp"' ); define_alias( qr/\bujis$/i => '"euc-jp"' ); define_alias( qr/\bshift.*jis$/i => '"shiftjis"' ); define_alias( qr/\bsjis$/i => '"shiftjis"' ); define_alias( qr/\bwindows-31j$/i => '"cp932"' ); # for Encode::KR define_alias( qr/\beuc.*kr$/i => '"euc-kr"' ); define_alias( qr/\bkr.*euc$/i => '"euc-kr"' ); # This fixes ksc5601 vs. euc-kr confusion, practically define_alias( qr/(?:x-)?uhc$/i => '"cp949"' ); define_alias( qr/(?:x-)?windows-949$/i => '"cp949"' ); define_alias( qr/\bks_c_5601-1987$/i => '"cp949"' ); # for Encode::TW define_alias( qr/\bbig-?5$/i => '"big5-eten"' ); define_alias( qr/\bbig5-?et(?:en)?$/i => '"big5-eten"' ); define_alias( qr/\btca[-_]?big5$/i => '"big5-eten"' ); define_alias( qr/\bbig5-?hk(?:scs)?$/i => '"big5-hkscs"' ); define_alias( qr/\bhk(?:scs)?[-_]?big5$/i => '"big5-hkscs"' ); } # https://github.com/dankogai/p5-encode/issues/37 define_alias(qr/cp65000/i => '"UTF-7"'); define_alias(qr/cp65001/i => '"utf-8-strict"'); # utf8 is blessed :) define_alias( qr/\bUTF-8$/i => '"utf-8-strict"' ); # At last, Map white space and _ to '-' define_alias( qr/^([^\s_]+)[\s_]+([^\s_]*)$/i => '"$1-$2"' ); } 1; __END__ # TODO: HP-UX '8' encodings arabic8 greek8 hebrew8 kana8 thai8 turkish8 # TODO: HP-UX '15' encodings japanese15 korean15 roi15 # TODO: Cyrillic encoding ISO-IR-111 (useful?) # TODO: Armenian encoding ARMSCII-8 # TODO: Hebrew encoding ISO-8859-8-1 # TODO: Thai encoding TCVN # TODO: Vietnamese encodings VPS # TODO: Mac Asian+African encodings: Arabic Armenian Bengali Burmese # ChineseSimp ChineseTrad Devanagari Ethiopic ExtArabic # Farsi Georgian Gujarati Gurmukhi Hebrew Japanese # Kannada Khmer Korean Laotian Malayalam Mongolian # Oriya Sinhalese Symbol Tamil Telugu Tibetan Vietnamese =head1 NAME Encode::Alias - alias definitions to encodings =head1 SYNOPSIS use Encode; use Encode::Alias; define_alias( "newName" => ENCODING); define_alias( qr/.../ => ENCODING); define_alias( sub { return ENCODING if ...; } ); =head1 DESCRIPTION Allows newName to be used as an alias for ENCODING. ENCODING may be either the name of an encoding or an encoding object (as described in L). Currently the first argument to define_alias() can be specified in the following ways: =over 4 =item As a simple string. =item As a qr// compiled regular expression, e.g.: define_alias( qr/^iso8859-(\d+)$/i => '"iso-8859-$1"' ); In this case, if I is not a reference, it is C-ed in order to allow C<$1> etc. to be substituted. The example is one way to alias names as used in X11 fonts to the MIME names for the iso-8859-* family. Note the double quotes inside the single quotes. (or, you don't have to do this yourself because this example is predefined) If you are using a regex here, you have to use the quotes as shown or it won't work. Also note that regex handling is tricky even for the experienced. Use this feature with caution. =item As a code reference, e.g.: define_alias( sub {shift =~ /^iso8859-(\d+)$/i ? "iso-8859-$1" : undef } ); The same effect as the example above in a different way. The coderef takes the alias name as an argument and returns a canonical name on success or undef if not. Note the second argument is ignored if provided. Use this with even more caution than the regex version. =back =head3 Changes in code reference aliasing As of Encode 1.87, the older form define_alias( sub { return /^iso8859-(\d+)$/i ? "iso-8859-$1" : undef } ); no longer works. Encode up to 1.86 internally used "local $_" to implement this older form. But consider the code below; use Encode; $_ = "eeeee" ; while (/(e)/g) { my $utf = decode('aliased-encoding-name', $1); print "position:",pos,"\n"; } Prior to Encode 1.86 this fails because of "local $_". =head2 Alias overloading You can override predefined aliases by simply applying define_alias(). The new alias is always evaluated first, and when necessary, define_alias() flushes the internal cache to make the new definition available. # redirect SHIFT_JIS to MS/IBM Code Page 932, which is a # superset of SHIFT_JIS define_alias( qr/shift.*jis$/i => '"cp932"' ); define_alias( qr/sjis$/i => '"cp932"' ); If you want to zap all predefined aliases, you can use Encode::Alias->undef_aliases; to do so. And Encode::Alias->init_aliases; gets the factory settings back. Note that define_alias() will not be able to override the canonical name of encodings. Encodings are first looked up by canonical name before potential aliases are tried. =head1 SEE ALSO L, L =cut FILE314fa882/Encode/Config.pm# # Demand-load module list # package Encode::Config; our $VERSION = do { my @r = ( q$Revision: 2.5 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; use strict; use warnings; our %ExtModule = ( # Encode::Byte #iso-8859-1 is in Encode.pm itself 'iso-8859-2' => 'Encode::Byte', 'iso-8859-3' => 'Encode::Byte', 'iso-8859-4' => 'Encode::Byte', 'iso-8859-5' => 'Encode::Byte', 'iso-8859-6' => 'Encode::Byte', 'iso-8859-7' => 'Encode::Byte', 'iso-8859-8' => 'Encode::Byte', 'iso-8859-9' => 'Encode::Byte', 'iso-8859-10' => 'Encode::Byte', 'iso-8859-11' => 'Encode::Byte', 'iso-8859-13' => 'Encode::Byte', 'iso-8859-14' => 'Encode::Byte', 'iso-8859-15' => 'Encode::Byte', 'iso-8859-16' => 'Encode::Byte', 'koi8-f' => 'Encode::Byte', 'koi8-r' => 'Encode::Byte', 'koi8-u' => 'Encode::Byte', 'viscii' => 'Encode::Byte', 'cp424' => 'Encode::Byte', 'cp437' => 'Encode::Byte', 'cp737' => 'Encode::Byte', 'cp775' => 'Encode::Byte', 'cp850' => 'Encode::Byte', 'cp852' => 'Encode::Byte', 'cp855' => 'Encode::Byte', 'cp856' => 'Encode::Byte', 'cp857' => 'Encode::Byte', 'cp858' => 'Encode::Byte', 'cp860' => 'Encode::Byte', 'cp861' => 'Encode::Byte', 'cp862' => 'Encode::Byte', 'cp863' => 'Encode::Byte', 'cp864' => 'Encode::Byte', 'cp865' => 'Encode::Byte', 'cp866' => 'Encode::Byte', 'cp869' => 'Encode::Byte', 'cp874' => 'Encode::Byte', 'cp1006' => 'Encode::Byte', 'cp1250' => 'Encode::Byte', 'cp1251' => 'Encode::Byte', 'cp1252' => 'Encode::Byte', 'cp1253' => 'Encode::Byte', 'cp1254' => 'Encode::Byte', 'cp1255' => 'Encode::Byte', 'cp1256' => 'Encode::Byte', 'cp1257' => 'Encode::Byte', 'cp1258' => 'Encode::Byte', 'AdobeStandardEncoding' => 'Encode::Byte', 'MacArabic' => 'Encode::Byte', 'MacCentralEurRoman' => 'Encode::Byte', 'MacCroatian' => 'Encode::Byte', 'MacCyrillic' => 'Encode::Byte', 'MacFarsi' => 'Encode::Byte', 'MacGreek' => 'Encode::Byte', 'MacHebrew' => 'Encode::Byte', 'MacIcelandic' => 'Encode::Byte', 'MacRoman' => 'Encode::Byte', 'MacRomanian' => 'Encode::Byte', 'MacRumanian' => 'Encode::Byte', 'MacSami' => 'Encode::Byte', 'MacThai' => 'Encode::Byte', 'MacTurkish' => 'Encode::Byte', 'MacUkrainian' => 'Encode::Byte', 'nextstep' => 'Encode::Byte', 'hp-roman8' => 'Encode::Byte', #'gsm0338' => 'Encode::Byte', 'gsm0338' => 'Encode::GSM0338', # Encode::EBCDIC 'cp37' => 'Encode::EBCDIC', 'cp500' => 'Encode::EBCDIC', 'cp875' => 'Encode::EBCDIC', 'cp1026' => 'Encode::EBCDIC', 'cp1047' => 'Encode::EBCDIC', 'posix-bc' => 'Encode::EBCDIC', # Encode::Symbol 'dingbats' => 'Encode::Symbol', 'symbol' => 'Encode::Symbol', 'AdobeSymbol' => 'Encode::Symbol', 'AdobeZdingbat' => 'Encode::Symbol', 'MacDingbats' => 'Encode::Symbol', 'MacSymbol' => 'Encode::Symbol', # Encode::Unicode 'UCS-2BE' => 'Encode::Unicode', 'UCS-2LE' => 'Encode::Unicode', 'UTF-16' => 'Encode::Unicode', 'UTF-16BE' => 'Encode::Unicode', 'UTF-16LE' => 'Encode::Unicode', 'UTF-32' => 'Encode::Unicode', 'UTF-32BE' => 'Encode::Unicode', 'UTF-32LE' => 'Encode::Unicode', 'UTF-7' => 'Encode::Unicode::UTF7', ); unless ( ord("A") == 193 ) { %ExtModule = ( %ExtModule, 'euc-cn' => 'Encode::CN', 'gb12345-raw' => 'Encode::CN', 'gb2312-raw' => 'Encode::CN', 'hz' => 'Encode::CN', 'iso-ir-165' => 'Encode::CN', 'cp936' => 'Encode::CN', 'MacChineseSimp' => 'Encode::CN', '7bit-jis' => 'Encode::JP', 'euc-jp' => 'Encode::JP', 'iso-2022-jp' => 'Encode::JP', 'iso-2022-jp-1' => 'Encode::JP', 'jis0201-raw' => 'Encode::JP', 'jis0208-raw' => 'Encode::JP', 'jis0212-raw' => 'Encode::JP', 'cp932' => 'Encode::JP', 'MacJapanese' => 'Encode::JP', 'shiftjis' => 'Encode::JP', 'euc-kr' => 'Encode::KR', 'iso-2022-kr' => 'Encode::KR', 'johab' => 'Encode::KR', 'ksc5601-raw' => 'Encode::KR', 'cp949' => 'Encode::KR', 'MacKorean' => 'Encode::KR', 'big5-eten' => 'Encode::TW', 'big5-hkscs' => 'Encode::TW', 'cp950' => 'Encode::TW', 'MacChineseTrad' => 'Encode::TW', #'big5plus' => 'Encode::HanExtra', #'euc-tw' => 'Encode::HanExtra', #'gb18030' => 'Encode::HanExtra', 'MIME-Header' => 'Encode::MIME::Header', 'MIME-B' => 'Encode::MIME::Header', 'MIME-Q' => 'Encode::MIME::Header', 'MIME-Header-ISO_2022_JP' => 'Encode::MIME::Header::ISO_2022_JP', ); } # # Why not export ? to keep ConfigLocal Happy! # while ( my ( $enc, $mod ) = each %ExtModule ) { $Encode::ExtModule{$enc} = $mod; } 1; __END__ =head1 NAME Encode::Config -- internally used by Encode =cut FILE2894aaa1/Encode/Encoding.pm#gpackage Encode::Encoding; # Base class for classes which implement encodings use strict; use warnings; our $VERSION = do { my @r = ( q$Revision: 2.8 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; our @CARP_NOT = qw(Encode Encode::Encoder); use Carp (); use Encode (); use Encode::MIME::Name; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; sub Define { my $obj = shift; my $canonical = shift; $obj = bless { Name => $canonical }, $obj unless ref $obj; # warn "$canonical => $obj\n"; Encode::define_encoding( $obj, $canonical, @_ ); } sub name { return shift->{'Name'} } sub mime_name { return Encode::MIME::Name::get_mime_name(shift->name); } sub renew { my $self = shift; my $clone = bless {%$self} => ref($self); $clone->{renewed}++; # so the caller can see it DEBUG and warn $clone->{renewed}; return $clone; } sub renewed { return $_[0]->{renewed} || 0 } *new_sequence = \&renew; sub needs_lines { 0 } sub perlio_ok { return eval { require PerlIO::encoding } ? 1 : 0; } # (Temporary|legacy) methods sub toUnicode { shift->decode(@_) } sub fromUnicode { shift->encode(@_) } # # Needs to be overloaded or just croak # sub encode { my $obj = shift; my $class = ref($obj) ? ref($obj) : $obj; Carp::croak( $class . "->encode() not defined!" ); } sub decode { my $obj = shift; my $class = ref($obj) ? ref($obj) : $obj; Carp::croak( $class . "->encode() not defined!" ); } sub DESTROY { } 1; __END__ =head1 NAME Encode::Encoding - Encode Implementation Base Class =head1 SYNOPSIS package Encode::MyEncoding; use parent qw(Encode::Encoding); __PACKAGE__->Define(qw(myCanonical myAlias)); =head1 DESCRIPTION As mentioned in L, encodings are (in the current implementation at least) defined as objects. The mapping of encoding name to object is via the C<%Encode::Encoding> hash. Though you can directly manipulate this hash, it is strongly encouraged to use this base class module and add encode() and decode() methods. =head2 Methods you should implement You are strongly encouraged to implement methods below, at least either encode() or decode(). =over 4 =item -Eencode($string [,$check]) MUST return the octet sequence representing I<$string>. =over 2 =item * If I<$check> is true, it SHOULD modify I<$string> in place to remove the converted part (i.e. the whole string unless there is an error). If perlio_ok() is true, SHOULD becomes MUST. =item * If an error occurs, it SHOULD return the octet sequence for the fragment of string that has been converted and modify $string in-place to remove the converted part leaving it starting with the problem fragment. If perlio_ok() is true, SHOULD becomes MUST. =item * If I<$check> is false then C MUST make a "best effort" to convert the string - for example, by using a replacement character. =back =item -Edecode($octets [,$check]) MUST return the string that I<$octets> represents. =over 2 =item * If I<$check> is true, it SHOULD modify I<$octets> in place to remove the converted part (i.e. the whole sequence unless there is an error). If perlio_ok() is true, SHOULD becomes MUST. =item * If an error occurs, it SHOULD return the fragment of string that has been converted and modify $octets in-place to remove the converted part leaving it starting with the problem fragment. If perlio_ok() is true, SHOULD becomes MUST. =item * If I<$check> is false then C should make a "best effort" to convert the string - for example by using Unicode's "\x{FFFD}" as a replacement character. =back =back If you want your encoding to work with L pragma, you should also implement the method below. =over 4 =item -Ecat_decode($destination, $octets, $offset, $terminator [,$check]) MUST decode I<$octets> with I<$offset> and concatenate it to I<$destination>. Decoding will terminate when $terminator (a string) appears in output. I<$offset> will be modified to the last $octets position at end of decode. Returns true if $terminator appears output, else returns false. =back =head2 Other methods defined in Encode::Encodings You do not have to override methods shown below unless you have to. =over 4 =item -Ename Predefined As: sub name { return shift->{'Name'} } MUST return the string representing the canonical name of the encoding. =item -Emime_name Predefined As: sub mime_name{ return Encode::MIME::Name::get_mime_name(shift->name); } MUST return the string representing the IANA charset name of the encoding. =item -Erenew Predefined As: sub renew { my $self = shift; my $clone = bless { %$self } => ref($self); $clone->{renewed}++; return $clone; } This method reconstructs the encoding object if necessary. If you need to store the state during encoding, this is where you clone your object. PerlIO ALWAYS calls this method to make sure it has its own private encoding object. =item -Erenewed Predefined As: sub renewed { $_[0]->{renewed} || 0 } Tells whether the object is renewed (and how many times). Some modules emit C warning unless the value is numeric so return 0 for false. =item -Eperlio_ok() Predefined As: sub perlio_ok { return eval { require PerlIO::encoding } ? 1 : 0; } If your encoding does not support PerlIO for some reasons, just; sub perlio_ok { 0 } =item -Eneeds_lines() Predefined As: sub needs_lines { 0 }; If your encoding can work with PerlIO but needs line buffering, you MUST define this method so it returns true. 7bit ISO-2022 encodings are one example that needs this. When this method is missing, false is assumed. =back =head2 Example: Encode::ROT13 package Encode::ROT13; use strict; use parent qw(Encode::Encoding); __PACKAGE__->Define('rot13'); sub encode($$;$){ my ($obj, $str, $chk) = @_; $str =~ tr/A-Za-z/N-ZA-Mn-za-m/; $_[1] = '' if $chk; # this is what in-place edit means return $str; } # Jr pna or ynml yvxr guvf; *decode = \&encode; 1; =head1 Why the heck Encode API is different? It should be noted that the I<$check> behaviour is different from the outer public API. The logic is that the "unchecked" case is useful when the encoding is part of a stream which may be reporting errors (e.g. STDERR). In such cases, it is desirable to get everything through somehow without causing additional errors which obscure the original one. Also, the encoding is best placed to know what the correct replacement character is, so if that is the desired behaviour then letting low level code do it is the most efficient. By contrast, if I<$check> is true, the scheme above allows the encoding to do as much as it can and tell the layer above how much that was. What is lacking at present is a mechanism to report what went wrong. The most likely interface will be an additional method call to the object, or perhaps (to avoid forcing per-stream objects on otherwise stateless encodings) an additional parameter. It is also highly desirable that encoding classes inherit from C as a base class. This allows that class to define additional behaviour for all encoding objects. package Encode::MyEncoding; use parent qw(Encode::Encoding); __PACKAGE__->Define(qw(myCanonical myAlias)); to create an object with C<< bless {Name => ...}, $class >>, and call define_encoding. They inherit their C method from C. =head2 Compiled Encodings For the sake of speed and efficiency, most of the encodings are now supported via a I: XS modules generated from UCM files. Encode provides the enc2xs tool to achieve that. Please see L for more details. =head1 SEE ALSO L, L =begin future =over 4 =item Scheme 1 The fixup routine gets passed the remaining fragment of string being processed. It modifies it in place to remove bytes/characters it can understand and returns a string used to represent them. For example: sub fixup { my $ch = substr($_[0],0,1,''); return sprintf("\x{%02X}",ord($ch); } This scheme is close to how the underlying C code for Encode works, but gives the fixup routine very little context. =item Scheme 2 The fixup routine gets passed the original string, an index into it of the problem area, and the output string so far. It appends what it wants to the output string and returns a new index into the original string. For example: sub fixup { # my ($s,$i,$d) = @_; my $ch = substr($_[0],$_[1],1); $_[2] .= sprintf("\x{%02X}",ord($ch); return $_[1]+1; } This scheme gives maximal control to the fixup routine but is more complicated to code, and may require that the internals of Encode be tweaked to keep the original string intact. =item Other Schemes Hybrids of the above. Multiple return values rather than in-place modifications. Index into the string could be C allowing C. =back =end future =cut FILEd5ff5da4/Encode/MIME/Name.pmpackage Encode::MIME::Name; use strict; use warnings; our $VERSION = do { my @r = ( q$Revision: 1.3 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; # NOTE: This table must be 1:1 mapping our %MIME_NAME_OF = ( 'AdobeStandardEncoding' => 'Adobe-Standard-Encoding', 'AdobeSymbol' => 'Adobe-Symbol-Encoding', 'ascii' => 'US-ASCII', 'big5-hkscs' => 'Big5-HKSCS', 'cp1026' => 'IBM1026', 'cp1047' => 'IBM1047', 'cp1250' => 'windows-1250', 'cp1251' => 'windows-1251', 'cp1252' => 'windows-1252', 'cp1253' => 'windows-1253', 'cp1254' => 'windows-1254', 'cp1255' => 'windows-1255', 'cp1256' => 'windows-1256', 'cp1257' => 'windows-1257', 'cp1258' => 'windows-1258', 'cp37' => 'IBM037', 'cp424' => 'IBM424', 'cp437' => 'IBM437', 'cp500' => 'IBM500', 'cp775' => 'IBM775', 'cp850' => 'IBM850', 'cp852' => 'IBM852', 'cp855' => 'IBM855', 'cp857' => 'IBM857', 'cp860' => 'IBM860', 'cp861' => 'IBM861', 'cp862' => 'IBM862', 'cp863' => 'IBM863', 'cp864' => 'IBM864', 'cp865' => 'IBM865', 'cp866' => 'IBM866', 'cp869' => 'IBM869', 'cp936' => 'GBK', 'euc-cn' => 'EUC-CN', 'euc-jp' => 'EUC-JP', 'euc-kr' => 'EUC-KR', #'gb2312-raw' => 'GB2312', # no, you're wrong, I18N::Charset 'hp-roman8' => 'hp-roman8', 'hz' => 'HZ-GB-2312', 'iso-2022-jp' => 'ISO-2022-JP', 'iso-2022-jp-1' => 'ISO-2022-JP-1', 'iso-2022-kr' => 'ISO-2022-KR', 'iso-8859-1' => 'ISO-8859-1', 'iso-8859-10' => 'ISO-8859-10', 'iso-8859-13' => 'ISO-8859-13', 'iso-8859-14' => 'ISO-8859-14', 'iso-8859-15' => 'ISO-8859-15', 'iso-8859-16' => 'ISO-8859-16', 'iso-8859-2' => 'ISO-8859-2', 'iso-8859-3' => 'ISO-8859-3', 'iso-8859-4' => 'ISO-8859-4', 'iso-8859-5' => 'ISO-8859-5', 'iso-8859-6' => 'ISO-8859-6', 'iso-8859-7' => 'ISO-8859-7', 'iso-8859-8' => 'ISO-8859-8', 'iso-8859-9' => 'ISO-8859-9', #'jis0201-raw' => 'JIS_X0201', #'jis0208-raw' => 'JIS_C6226-1983', #'jis0212-raw' => 'JIS_X0212-1990', 'koi8-r' => 'KOI8-R', 'koi8-u' => 'KOI8-U', #'ksc5601-raw' => 'KS_C_5601-1987', 'shiftjis' => 'Shift_JIS', 'UTF-16' => 'UTF-16', 'UTF-16BE' => 'UTF-16BE', 'UTF-16LE' => 'UTF-16LE', 'UTF-32' => 'UTF-32', 'UTF-32BE' => 'UTF-32BE', 'UTF-32LE' => 'UTF-32LE', 'UTF-7' => 'UTF-7', 'utf-8-strict' => 'UTF-8', 'viscii' => 'VISCII', ); # NOTE: %MIME_NAME_OF is still 1:1 mapping our %ENCODE_NAME_OF = map { uc $MIME_NAME_OF{$_} => $_ } keys %MIME_NAME_OF; # Add additional 1:N mapping $MIME_NAME_OF{'utf8'} = 'UTF-8'; sub get_mime_name($) { $MIME_NAME_OF{$_[0]} }; sub get_encode_name($) { $ENCODE_NAME_OF{uc $_[0]} }; 1; __END__ =head1 NAME Encode::MIME::NAME -- internally used by Encode =head1 SEE ALSO L =cut FILE12b21794/Errno.pm# -*- buffer-read-only: t -*- # # This file is auto-generated by ext/Errno/Errno_pm.PL. # ***ANY*** changes here will be lost. # package Errno; use Exporter 'import'; use strict; use Config; "$Config{'archname'}-$Config{'osvers'}" eq "aarch64-linux-gnu-5.10.0-19-cloud-arm64" or die "Errno architecture (aarch64-linux-gnu-5.10.0-19-cloud-arm64) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})"; our $VERSION = "1.36"; $VERSION = eval $VERSION; my %err; BEGIN { %err = ( EPERM => 1, ENOENT => 2, ESRCH => 3, EINTR => 4, EIO => 5, ENXIO => 6, E2BIG => 7, ENOEXEC => 8, EBADF => 9, ECHILD => 10, EAGAIN => 11, EWOULDBLOCK => 11, ENOMEM => 12, EACCES => 13, EFAULT => 14, ENOTBLK => 15, EBUSY => 16, EEXIST => 17, EXDEV => 18, ENODEV => 19, ENOTDIR => 20, EISDIR => 21, EINVAL => 22, ENFILE => 23, EMFILE => 24, ENOTTY => 25, ETXTBSY => 26, EFBIG => 27, ENOSPC => 28, ESPIPE => 29, EROFS => 30, EMLINK => 31, EPIPE => 32, EDOM => 33, ERANGE => 34, EDEADLK => 35, EDEADLOCK => 35, ENAMETOOLONG => 36, ENOLCK => 37, ENOSYS => 38, ENOTEMPTY => 39, ELOOP => 40, ENOMSG => 42, EIDRM => 43, ECHRNG => 44, EL2NSYNC => 45, EL3HLT => 46, EL3RST => 47, ELNRNG => 48, EUNATCH => 49, ENOCSI => 50, EL2HLT => 51, EBADE => 52, EBADR => 53, EXFULL => 54, ENOANO => 55, EBADRQC => 56, EBADSLT => 57, EBFONT => 59, ENOSTR => 60, ENODATA => 61, ETIME => 62, ENOSR => 63, ENONET => 64, ENOPKG => 65, EREMOTE => 66, ENOLINK => 67, EADV => 68, ESRMNT => 69, ECOMM => 70, EPROTO => 71, EMULTIHOP => 72, EDOTDOT => 73, EBADMSG => 74, EOVERFLOW => 75, ENOTUNIQ => 76, EBADFD => 77, EREMCHG => 78, ELIBACC => 79, ELIBBAD => 80, ELIBSCN => 81, ELIBMAX => 82, ELIBEXEC => 83, EILSEQ => 84, ERESTART => 85, ESTRPIPE => 86, EUSERS => 87, ENOTSOCK => 88, EDESTADDRREQ => 89, EMSGSIZE => 90, EPROTOTYPE => 91, ENOPROTOOPT => 92, EPROTONOSUPPORT => 93, ESOCKTNOSUPPORT => 94, ENOTSUP => 95, EOPNOTSUPP => 95, EPFNOSUPPORT => 96, EAFNOSUPPORT => 97, EADDRINUSE => 98, EADDRNOTAVAIL => 99, ENETDOWN => 100, ENETUNREACH => 101, ENETRESET => 102, ECONNABORTED => 103, ECONNRESET => 104, ENOBUFS => 105, EISCONN => 106, ENOTCONN => 107, ESHUTDOWN => 108, ETOOMANYREFS => 109, ETIMEDOUT => 110, ECONNREFUSED => 111, EHOSTDOWN => 112, EHOSTUNREACH => 113, EALREADY => 114, EINPROGRESS => 115, ESTALE => 116, EUCLEAN => 117, ENOTNAM => 118, ENAVAIL => 119, EISNAM => 120, EREMOTEIO => 121, EDQUOT => 122, ENOMEDIUM => 123, EMEDIUMTYPE => 124, ECANCELED => 125, ENOKEY => 126, EKEYEXPIRED => 127, EKEYREVOKED => 128, EKEYREJECTED => 129, EOWNERDEAD => 130, ENOTRECOVERABLE => 131, ERFKILL => 132, EHWPOISON => 133, ); # Generate proxy constant subroutines for all the values. # Well, almost all the values. Unfortunately we can't assume that at this # point that our symbol table is empty, as code such as if the parser has # seen code such as C, it will have created the # typeglob. # Doing this before defining @EXPORT_OK etc means that even if a platform is # crazy enough to define EXPORT_OK as an error constant, everything will # still work, because the parser will upgrade the PCS to a real typeglob. # We rely on the subroutine definitions below to update the internal caches. # Don't use %each, as we don't want a copy of the value. foreach my $name (keys %err) { if ($Errno::{$name}) { # We expect this to be reached fairly rarely, so take an approach # which uses the least compile time effort in the common case: eval "sub $name() { $err{$name} }; 1" or die $@; } else { $Errno::{$name} = \$err{$name}; } } } our @EXPORT_OK = keys %err; our %EXPORT_TAGS = ( POSIX => [qw( E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM EPFNOSUPPORT EPIPE EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV )], ); sub TIEHASH { bless \%err } sub FETCH { my (undef, $errname) = @_; return "" unless exists $err{$errname}; my $errno = $err{$errname}; return $errno == $! ? $errno : 0; } sub STORE { require Carp; Carp::confess("ERRNO hash is read only!"); } # This is the true return value *CLEAR = *DELETE = \*STORE; # Typeglob aliasing uses less space sub NEXTKEY { each %err; } sub FIRSTKEY { my $s = scalar keys %err; # initialize iterator each %err; } sub EXISTS { my (undef, $errname) = @_; exists $err{$errname}; } sub _tie_it { tie %{$_[0]}, __PACKAGE__; } __END__ =head1 NAME Errno - System errno constants =head1 SYNOPSIS use Errno qw(EINTR EIO :POSIX); =head1 DESCRIPTION C defines and conditionally exports all the error constants defined in your system F include file. It has a single export tag, C<:POSIX>, which will export all POSIX defined error numbers. On Windows, C also defines and conditionally exports all the Winsock error constants defined in your system F include file. These are included in a second export tag, C<:WINSOCK>. C also makes C<%!> magic such that each element of C<%!> has a non-zero value only if C<$!> is set to that value. For example: my $fh; unless (open($fh, "<", "/fangorn/spouse")) { if ($!{ENOENT}) { warn "Get a wife!\n"; } else { warn "This path is barred: $!"; } } If a specified constant C does not exist on the system, C<$!{EFOO}> returns C<"">. You may use C to check whether the constant is available on the system. Perl automatically loads C the first time you use C<%!>, so you don't need an explicit C. =head1 CAVEATS Importing a particular constant may not be very portable, because the import will fail on platforms that do not have that constant. A more portable way to set C<$!> to a valid value is to use: if (exists &Errno::EFOO) { $! = &Errno::EFOO; } =head1 AUTHOR Graham Barr =head1 COPYRIGHT Copyright (c) 1997-8 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut # ex: set ro: FILE587268f7/Fcntl.pmpackage Fcntl; =head1 NAME Fcntl - load the C Fcntl.h defines =head1 SYNOPSIS use Fcntl; use Fcntl qw(:DEFAULT :flock); =head1 DESCRIPTION This module is just a translation of the C F file. Unlike the old mechanism of requiring a translated F file, this uses the B program (see the Perl source distribution) and your native C compiler. This means that it has a far more likely chance of getting the numbers right. =head1 NOTE Only C<#define> symbols get translated; you must still correctly pack up your own arguments to pass as args for locking functions, etc. =head1 EXPORTED SYMBOLS By default your system's F_* and O_* constants (eg, F_DUPFD and O_CREAT) and the FD_CLOEXEC constant are exported into your namespace. You can request that the flock() constants (LOCK_SH, LOCK_EX, LOCK_NB and LOCK_UN) be provided by using the tag C<:flock>. See L. You can request that the old constants (FAPPEND, FASYNC, FCREAT, FDEFER, FEXCL, FNDELAY, FNONBLOCK, FSYNC, FTRUNC) be provided for compatibility reasons by using the tag C<:Fcompat>. For new applications the newer versions of these constants are suggested (O_APPEND, O_ASYNC, O_CREAT, O_DEFER, O_EXCL, O_NDELAY, O_NONBLOCK, O_SYNC, O_TRUNC). For ease of use also the SEEK_* constants (for seek() and sysseek(), e.g. SEEK_END) and the S_I* constants (for chmod() and stat()) are available for import. They can be imported either separately or using the tags C<:seek> and C<:mode>. Please refer to your native fcntl(2), open(2), fseek(3), lseek(2) (equal to Perl's seek() and sysseek(), respectively), and chmod(2) documentation to see what constants are implemented in your system. See L to learn about the uses of the O_* constants with sysopen(). See L and L about the SEEK_* constants. See L about the S_I* constants. =cut use strict; use Exporter 'import'; require XSLoader; our $VERSION = '1.15'; XSLoader::load(); # Named groups of exports our %EXPORT_TAGS = ( 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)], 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)], 'seek' => [qw(SEEK_SET SEEK_CUR SEEK_END)], 'mode' => [qw(S_ISUID S_ISGID S_ISVTX S_ISTXT _S_IFMT S_IFREG S_IFDIR S_IFLNK S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT S_IRUSR S_IWUSR S_IXUSR S_IRWXU S_IRGRP S_IWGRP S_IXGRP S_IRWXG S_IROTH S_IWOTH S_IXOTH S_IRWXO S_IREAD S_IWRITE S_IEXEC S_ISREG S_ISDIR S_ISLNK S_ISSOCK S_ISBLK S_ISCHR S_ISFIFO S_ISWHT S_ISENFMT S_IFMT S_IMODE )], ); # Items to export into callers namespace by default # (move infrequently used names to @EXPORT_OK below) our @EXPORT = qw( FD_CLOEXEC F_ALLOCSP F_ALLOCSP64 F_COMPAT F_DUP2FD F_DUPFD F_EXLCK F_FREESP F_FREESP64 F_FSYNC F_FSYNC64 F_GETFD F_GETFL F_GETLK F_GETLK64 F_GETOWN F_NODNY F_POSIX F_RDACC F_RDDNY F_RDLCK F_RWACC F_RWDNY F_SETFD F_SETFL F_SETLK F_SETLK64 F_SETLKW F_SETLKW64 F_SETOWN F_SHARE F_SHLCK F_UNLCK F_UNSHARE F_WRACC F_WRDNY F_WRLCK O_ACCMODE O_ALIAS O_APPEND O_ASYNC O_BINARY O_CREAT O_DEFER O_DIRECT O_DIRECTORY O_DSYNC O_EXCL O_EXLOCK O_LARGEFILE O_NDELAY O_NOCTTY O_NOFOLLOW O_NOINHERIT O_NONBLOCK O_RANDOM O_RAW O_RDONLY O_RDWR O_RSRC O_RSYNC O_SEQUENTIAL O_SHLOCK O_SYNC O_TEMPORARY O_TEXT O_TRUNC O_WRONLY ); # Other items we are prepared to export if requested our @EXPORT_OK = (qw( DN_ACCESS DN_ATTRIB DN_CREATE DN_DELETE DN_MODIFY DN_MULTISHOT DN_RENAME F_GETLEASE F_GETPIPE_SZ F_GETSIG F_NOTIFY F_SETLEASE F_SETPIPE_SZ F_SETSIG LOCK_MAND LOCK_READ LOCK_RW LOCK_WRITE O_ALT_IO O_EVTONLY O_IGNORE_CTTY O_NOATIME O_NOLINK O_NOSIGPIPE O_NOTRANS O_SYMLINK O_TTY_INIT ), map {@{$_}} values %EXPORT_TAGS); 1; FILE7ddb7d7b/File/Glob.pm1bpackage File::Glob; use strict; our($DEFAULT_FLAGS); require XSLoader; # NOTE: The glob() export is only here for compatibility with 5.6.0. # csh_glob() should not be used directly, unless you know what you're doing. our %EXPORT_TAGS = ( 'glob' => [ qw( GLOB_ABEND GLOB_ALPHASORT GLOB_ALTDIRFUNC GLOB_BRACE GLOB_CSH GLOB_ERR GLOB_ERROR GLOB_LIMIT GLOB_MARK GLOB_NOCASE GLOB_NOCHECK GLOB_NOMAGIC GLOB_NOSORT GLOB_NOSPACE GLOB_QUOTE GLOB_TILDE bsd_glob ) ], ); $EXPORT_TAGS{bsd_glob} = [@{$EXPORT_TAGS{glob}}]; our @EXPORT_OK = (@{$EXPORT_TAGS{'glob'}}, 'csh_glob'); our $VERSION = '1.37'; sub import { require Exporter; local $Exporter::ExportLevel = $Exporter::ExportLevel + 1; Exporter::import(grep { my $passthrough; if ($_ eq ':case') { $DEFAULT_FLAGS &= ~GLOB_NOCASE() } elsif ($_ eq ':nocase') { $DEFAULT_FLAGS |= GLOB_NOCASE(); } elsif ($_ eq ':globally') { no warnings 'redefine'; *CORE::GLOBAL::glob = \&File::Glob::csh_glob; } elsif ($_ eq ':bsd_glob') { no strict; *{caller."::glob"} = \&bsd_glob_override; $passthrough = 1; } else { $passthrough = 1; } $passthrough; } @_); } XSLoader::load(); $DEFAULT_FLAGS = GLOB_CSH(); if ($^O =~ /^(?:MSWin32|VMS|os2|riscos)$/) { $DEFAULT_FLAGS |= GLOB_NOCASE(); } 1; __END__ =head1 NAME File::Glob - Perl extension for BSD glob routine =head1 SYNOPSIS use File::Glob ':bsd_glob'; @list = bsd_glob('*.[ch]'); $homedir = bsd_glob('~gnat', GLOB_TILDE | GLOB_ERR); if (GLOB_ERROR) { # an error occurred reading $homedir } ## override the core glob (CORE::glob() does this automatically ## by default anyway, since v5.6.0) use File::Glob ':globally'; my @sources = <*.{c,h,y}>; ## override the core glob, forcing case sensitivity use File::Glob qw(:globally :case); my @sources = <*.{c,h,y}>; ## override the core glob forcing case insensitivity use File::Glob qw(:globally :nocase); my @sources = <*.{c,h,y}>; ## glob on all files in home directory use File::Glob ':globally'; my @sources = <~gnat/*>; =head1 DESCRIPTION The glob angle-bracket operator C<< <> >> is a pathname generator that implements the rules for file name pattern matching used by Unix-like shells such as the Bourne shell or C shell. File::Glob::bsd_glob() implements the FreeBSD glob(3) routine, which is a superset of the POSIX glob() (described in IEEE Std 1003.2 "POSIX.2"). bsd_glob() takes a mandatory C argument, and an optional C argument, and returns a list of filenames matching the pattern, with interpretation of the pattern modified by the C variable. Since v5.6.0, Perl's CORE::glob() is implemented in terms of bsd_glob(). Note that they don't share the same prototype--CORE::glob() only accepts a single argument. Due to historical reasons, CORE::glob() will also split its argument on whitespace, treating it as multiple patterns, whereas bsd_glob() considers them as one pattern. But see C<:bsd_glob> under L, below. =head2 META CHARACTERS \ Quote the next metacharacter [] Character class {} Multiple pattern * Match any string of characters ? Match any single character ~ User name home directory The metanotation C is a shorthand for C. Left to right order is preserved, with results of matches being sorted separately at a low level to preserve this order. As a special case C<{>, C<}>, and C<{}> are passed undisturbed. =head2 EXPORTS See also the L below, which can be exported individually. =head3 C<:bsd_glob> The C<:bsd_glob> export tag exports bsd_glob() and the constants listed below. It also overrides glob() in the calling package with one that behaves like bsd_glob() with regard to spaces (the space is treated as part of a file name), but supports iteration in scalar context; i.e., it preserves the core function's feature of returning the next item each time it is called. =head3 C<:glob> The C<:glob> tag, now discouraged, is the old version of C<:bsd_glob>. It exports the same constants and functions, but its glob() override does not support iteration; it returns the last file name in scalar context. That means this will loop forever: use File::Glob ':glob'; while (my $file = <* copy.txt>) { ... } =head3 C This function, which is included in the two export tags listed above, takes one or two arguments. The first is the glob pattern. The second, if given, is a set of flags ORed together. The available flags and the default set of flags are listed below under L. Remember that to use the named constants for flags you must import them, for example with C<:bsd_glob> described above. If not imported, and C is not in effect, then the constants will be treated as bareword strings, which won't do what you what. =head3 C<:nocase> and C<:case> These two export tags globally modify the default flags that bsd_glob() and, except on VMS, Perl's built-in C operator use. C is turned on or off, respectively. =head3 C The csh_glob() function can also be exported, but you should not use it directly unless you really know what you are doing. It splits the pattern into words and feeds each one to bsd_glob(). Perl's own glob() function uses this internally. =head2 POSIX FLAGS If no flags argument is give then C is set, and on VMS and Windows systems, C too. Otherwise the flags to use are determined solely by the flags argument. The POSIX defined flags are: =over 4 =item C Force bsd_glob() to return an error when it encounters a directory it cannot open or read. Ordinarily bsd_glob() continues to find matches. =item C Make bsd_glob() return an error (GLOB_NOSPACE) when the pattern expands to a size bigger than the system constant C (usually found in limits.h). If your system does not define this constant, bsd_glob() uses C or C<_POSIX_ARG_MAX> where available (in that order). You can inspect these values using the standard C extension. =item C Each pathname that is a directory that matches the pattern has a slash appended. =item C By default, file names are assumed to be case sensitive; this flag makes bsd_glob() treat case differences as not significant. =item C If the pattern does not match any pathname, then bsd_glob() returns a list consisting of only the pattern. If C is set, its effect is present in the pattern returned. =item C By default, the pathnames are sorted in ascending ASCII order; this flag prevents that sorting (speeding up bsd_glob()). =back The FreeBSD extensions to the POSIX standard are the following flags: =over 4 =item C Pre-process the string to expand C<{pat,pat,...}> strings like csh(1). The pattern '{}' is left unexpanded for historical reasons (and csh(1) does the same thing to ease typing of find(1) patterns). =item C Same as C but it only returns the pattern if it does not contain any of the special characters "*", "?" or "[". C is provided to simplify implementing the historic csh(1) globbing behaviour and should probably not be used anywhere else. =item C Use the backslash ('\') character for quoting: every occurrence of a backslash followed by a character in the pattern is replaced by that character, avoiding any special interpretation of the character. (But see below for exceptions on DOSISH systems). =item C Expand patterns that start with '~' to user name home directories. =item C For convenience, C is a synonym for C. =back The POSIX provided C, C, and the FreeBSD extensions C, and C flags have not been implemented in the Perl version because they involve more complex interaction with the underlying C structures. The following flag has been added in the Perl implementation for csh compatibility: =over 4 =item C If C is not in effect, sort filenames is alphabetical order (case does not matter) rather than in ASCII order. =back =head1 DIAGNOSTICS bsd_glob() returns a list of matching paths, possibly zero length. If an error occurred, &File::Glob::GLOB_ERROR will be non-zero and C<$!> will be set. &File::Glob::GLOB_ERROR is guaranteed to be zero if no error occurred, or one of the following values otherwise: =over 4 =item C An attempt to allocate memory failed. =item C The glob was stopped because an error was encountered. =back In the case where bsd_glob() has found some matching paths, but is interrupted by an error, it will return a list of filenames B set &File::Glob::ERROR. Note that bsd_glob() deviates from POSIX and FreeBSD glob(3) behaviour by not considering C and C as errors - bsd_glob() will continue processing despite those errors, unless the C flag is set. Be aware that all filenames returned from File::Glob are tainted. =head1 NOTES =over 4 =item * If you want to use multiple patterns, e.g. C, you should probably throw them in a set as in C. This is because the argument to bsd_glob() isn't subjected to parsing by the C shell. Remember that you can use a backslash to escape things. =item * On DOSISH systems, backslash is a valid directory separator character. In this case, use of backslash as a quoting character (via GLOB_QUOTE) interferes with the use of backslash as a directory separator. The best (simplest, most portable) solution is to use forward slashes for directory separators, and backslashes for quoting. However, this does not match "normal practice" on these systems. As a concession to user expectation, therefore, backslashes (under GLOB_QUOTE) only quote the glob metacharacters '[', ']', '{', '}', '-', '~', and backslash itself. All other backslashes are passed through unchanged. =item * Win32 users should use the real slash. If you really want to use backslashes, consider using Sarathy's File::DosGlob, which comes with the standard Perl distribution. =back =head1 SEE ALSO L, glob(3) =head1 AUTHOR The Perl interface was written by Nathan Torkington Egnat@frii.comE, and is released under the artistic license. Further modifications were made by Greg Bacon Egbacon@cs.uah.eduE, Gurusamy Sarathy Egsar@activestate.comE, and Thomas Wegner Ewegner_thomas@yahoo.comE. The C glob code has the following copyright: Copyright (c) 1989, 1993 The Regents of the University of California. All rights reserved. This code is derived from software contributed to Berkeley by Guido van Rossum. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: =over 4 =item 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. =item 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. =item 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. =back THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "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 REGENTS OR CONTRIBUTORS 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. =cut FILE99859f14/File/Spec.pm)Bpackage File::Spec; use strict; our $VERSION = '3.84'; $VERSION =~ tr/_//d; my %module = ( MSWin32 => 'Win32', os2 => 'OS2', VMS => 'VMS', NetWare => 'Win32', # Yes, File::Spec::Win32 works on NetWare. symbian => 'Win32', # Yes, File::Spec::Win32 works on symbian. dos => 'OS2', # Yes, File::Spec::OS2 works on DJGPP. cygwin => 'Cygwin', amigaos => 'AmigaOS'); my $module = $module{$^O} || 'Unix'; require "File/Spec/$module.pm"; our @ISA = ("File::Spec::$module"); 1; __END__ =head1 NAME File::Spec - portably perform operations on file names =head1 SYNOPSIS use File::Spec; $x=File::Spec->catfile('a', 'b', 'c'); which returns 'a/b/c' under Unix. Or: use File::Spec::Functions; $x = catfile('a', 'b', 'c'); =head1 DESCRIPTION This module is designed to support operations commonly performed on file specifications (usually called "file names", but not to be confused with the contents of a file, or Perl's file handles), such as concatenating several directory and file names into a single path, or determining whether a path is rooted. It is based on code directly taken from MakeMaker 5.17, code written by Andreas KEnig, Andy Dougherty, Charles Bailey, Ilya Zakharevich, Paul Schinder, and others. Since these functions are different for most operating systems, each set of OS specific routines is available in a separate module, including: File::Spec::Unix File::Spec::Mac File::Spec::OS2 File::Spec::Win32 File::Spec::VMS The module appropriate for the current OS is automatically loaded by File::Spec. Since some modules (like VMS) make use of facilities available only under that OS, it may not be possible to load all modules under all operating systems. Since File::Spec is object oriented, subroutines should not be called directly, as in: File::Spec::catfile('a','b'); but rather as class methods: File::Spec->catfile('a','b'); For simple uses, L provides convenient functional forms of these methods. =head1 METHODS =over 2 =item canonpath X No physical check on the filesystem, but a logical cleanup of a path. $cpath = File::Spec->canonpath( $path ) ; Note that this does *not* collapse F sections into F. This is by design. If F on your system is a symlink to F, then F is actually F, not F as a naive F<../>-removal would give you. If you want to do this kind of processing, you probably want C's C function to actually traverse the filesystem cleaning up paths like this. =item catdir X Concatenate two or more directory names to form a complete path ending with a directory. But remove the trailing slash from the resulting string, because it doesn't look good, isn't necessary and confuses OS/2. Of course, if this is the root directory, don't cut off the trailing slash :-) $path = File::Spec->catdir( @directories ); =item catfile X Concatenate one or more directory names and a filename to form a complete path ending with a filename $path = File::Spec->catfile( @directories, $filename ); =item curdir X Returns a string representation of the current directory. $curdir = File::Spec->curdir(); =item devnull X Returns a string representation of the null device. $devnull = File::Spec->devnull(); =item rootdir X Returns a string representation of the root directory. $rootdir = File::Spec->rootdir(); =item tmpdir X Returns a string representation of the first writable directory from a list of possible temporary directories. Returns the current directory if no writable temporary directories are found. The list of directories checked depends on the platform; e.g. File::Spec::Unix checks C<$ENV{TMPDIR}> (unless taint is on) and F. $tmpdir = File::Spec->tmpdir(); =item updir X Returns a string representation of the parent directory. $updir = File::Spec->updir(); =item no_upwards Given a list of files in a directory (such as from C), strip out C<'.'> and C<'..'>. B This does NOT filter paths containing C<'..'>, like C<'../../../../etc/passwd'>, only literal matches to C<'.'> and C<'..'>. @paths = File::Spec->no_upwards( readdir $dirhandle ); =item case_tolerant Returns a true or false value indicating, respectively, that alphabetic case is not or is significant when comparing file specifications. Cygwin and Win32 accept an optional drive argument. $is_case_tolerant = File::Spec->case_tolerant(); =item file_name_is_absolute Takes as its argument a path, and returns true if it is an absolute path. $is_absolute = File::Spec->file_name_is_absolute( $path ); This does not consult the local filesystem on Unix, Win32, OS/2, or Mac OS (Classic). It does consult the working environment for VMS (see L). =item path X Takes no argument. Returns the environment variable C (or the local platform's equivalent) as a list. @PATH = File::Spec->path(); =item join X join is the same as catfile. =item splitpath X X Splits a path in to volume, directory, and filename portions. On systems with no concept of volume, returns '' for volume. ($volume,$directories,$file) = File::Spec->splitpath( $path ); ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file ); For systems with no syntax differentiating filenames from directories, assumes that the last file is a path unless C<$no_file> is true or a trailing separator or F or F is present. On Unix, this means that C<$no_file> true makes this return ( '', $path, '' ). The directory portion may or may not be returned with a trailing '/'. The results can be passed to L to get back a path equivalent to (usually identical to) the original path. =item splitdir X X The opposite of L. @dirs = File::Spec->splitdir( $directories ); C<$directories> must be only the directory portion of the path on systems that have the concept of a volume or that have path syntax that differentiates files from directories. Unlike just splitting the directories on the separator, empty directory names (C<''>) can be returned, because these are significant on some OSes. =item catpath() Takes volume, directory and file portions and returns an entire path. Under Unix, C<$volume> is ignored, and directory and file are concatenated. A '/' is inserted if need be. On other OSes, C<$volume> is significant. $full_path = File::Spec->catpath( $volume, $directory, $file ); =item abs2rel X X X Takes a destination path and an optional base path returns a relative path from the base path to the destination path: $rel_path = File::Spec->abs2rel( $path ) ; $rel_path = File::Spec->abs2rel( $path, $base ) ; If C<$base> is not present or '', then L is used. If C<$base> is relative, then it is converted to absolute form using L. This means that it is taken to be relative to L. On systems with the concept of volume, if C<$path> and C<$base> appear to be on two different volumes, we will not attempt to resolve the two paths, and we will instead simply return C<$path>. Note that previous versions of this module ignored the volume of C<$base>, which resulted in garbage results part of the time. On systems that have a grammar that indicates filenames, this ignores the C<$base> filename as well. Otherwise all path components are assumed to be directories. If C<$path> is relative, it is converted to absolute form using L. This means that it is taken to be relative to L. No checks against the filesystem are made. On VMS, there is interaction with the working environment, as logicals and macros are expanded. Based on code written by Shigio Yamaguchi. =item rel2abs() X X X Converts a relative path to an absolute path. $abs_path = File::Spec->rel2abs( $path ) ; $abs_path = File::Spec->rel2abs( $path, $base ) ; If C<$base> is not present or '', then L is used. If C<$base> is relative, then it is converted to absolute form using L. This means that it is taken to be relative to L. On systems with the concept of volume, if C<$path> and C<$base> appear to be on two different volumes, we will not attempt to resolve the two paths, and we will instead simply return C<$path>. Note that previous versions of this module ignored the volume of C<$base>, which resulted in garbage results part of the time. On systems that have a grammar that indicates filenames, this ignores the C<$base> filename as well. Otherwise all path components are assumed to be directories. If C<$path> is absolute, it is cleaned up and returned using L. No checks against the filesystem are made. On VMS, there is interaction with the working environment, as logicals and macros are expanded. Based on code written by Shigio Yamaguchi. =back For further information, please see L, L, L, L, or L. =head1 SEE ALSO L, L, L, L, L, L, L =head1 AUTHOR Maintained by perl5-porters >. The vast majority of the code was written by Kenneth Albanowski C<< >>, Andy Dougherty C<< >>, Andreas KEnig C<< >>, Tim Bunce C<< >>. VMS support by Charles Bailey C<< >>. OS/2 support by Ilya Zakharevich C<< >>. Mac support by Paul Schinder C<< >>, and Thomas Wegner C<< >>. abs2rel() and rel2abs() written by Shigio Yamaguchi C<< >>, modified by Barrie Slaymaker C<< >>. splitpath(), splitdir(), catpath() and catdir() by Barrie Slaymaker. =head1 COPYRIGHT Copyright (c) 2004-2013 by the Perl 5 Porters. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut FILE07d0d723/File/Spec/Unix.pm>package File::Spec::Unix; use strict; use Cwd (); our $VERSION = '3.84'; $VERSION =~ tr/_//d; =head1 NAME File::Spec::Unix - File::Spec for Unix, base for other File::Spec modules =head1 SYNOPSIS require File::Spec::Unix; # Done automatically by File::Spec =head1 DESCRIPTION Methods for manipulating file specifications. Other File::Spec modules, such as File::Spec::Mac, inherit from File::Spec::Unix and override specific methods. =head1 METHODS =over 2 =item canonpath() No physical check on the filesystem, but a logical cleanup of a path. On UNIX eliminates successive slashes and successive "/.". $cpath = File::Spec->canonpath( $path ) ; Note that this does *not* collapse F sections into F. This is by design. If F on your system is a symlink to F, then F is actually F, not F as a naive F<../>-removal would give you. If you want to do this kind of processing, you probably want C's C function to actually traverse the filesystem cleaning up paths like this. =cut sub _pp_canonpath { my ($self,$path) = @_; return unless defined $path; # Handle POSIX-style node names beginning with double slash (qnx, nto) # (POSIX says: "a pathname that begins with two successive slashes # may be interpreted in an implementation-defined manner, although # more than two leading slashes shall be treated as a single slash.") my $node = ''; my $double_slashes_special = $^O eq 'qnx' || $^O eq 'nto'; if ( $double_slashes_special && ( $path =~ s{^(//[^/]+)/?\z}{}s || $path =~ s{^(//[^/]+)/}{/}s ) ) { $node = $1; } # This used to be # $path =~ s|/+|/|g unless ($^O eq 'cygwin'); # but that made tests 29, 30, 35, 46, and 213 (as of #13272) to fail # (Mainly because trailing "" directories didn't get stripped). # Why would cygwin avoid collapsing multiple slashes into one? --jhi $path =~ s|/{2,}|/|g; # xx////xx -> xx/xx $path =~ s{(?:/\.)+(?:/|\z)}{/}g; # xx/././xx -> xx/xx $path =~ s|^(?:\./)+||s unless $path eq "./"; # ./xx -> xx $path =~ s|^/(?:\.\./)+|/|; # /../../xx -> xx $path =~ s|^/\.\.$|/|; # /.. -> / $path =~ s|/\z|| unless $path eq "/"; # xx/ -> xx return "$node$path"; } *canonpath = \&_pp_canonpath unless defined &canonpath; =item catdir() Concatenate two or more directory names to form a complete path ending with a directory. But remove the trailing slash from the resulting string, because it doesn't look good, isn't necessary and confuses OS2. Of course, if this is the root directory, don't cut off the trailing slash :-) =cut sub _pp_catdir { my $self = shift; $self->canonpath(join('/', @_, '')); # '' because need a trailing '/' } *catdir = \&_pp_catdir unless defined &catdir; =item catfile Concatenate one or more directory names and a filename to form a complete path ending with a filename =cut sub _pp_catfile { my $self = shift; my $file = $self->canonpath(pop @_); return $file unless @_; my $dir = $self->catdir(@_); $dir .= "/" unless substr($dir,-1) eq "/"; return $dir.$file; } *catfile = \&_pp_catfile unless defined &catfile; =item curdir Returns a string representation of the current directory. "." on UNIX. =cut sub curdir { '.' } use constant _fn_curdir => "."; =item devnull Returns a string representation of the null device. "/dev/null" on UNIX. =cut sub devnull { '/dev/null' } use constant _fn_devnull => "/dev/null"; =item rootdir Returns a string representation of the root directory. "/" on UNIX. =cut sub rootdir { '/' } use constant _fn_rootdir => "/"; =item tmpdir Returns a string representation of the first writable directory from the following list or the current directory if none from the list are writable: $ENV{TMPDIR} /tmp If running under taint mode, and if $ENV{TMPDIR} is tainted, it is not used. =cut my ($tmpdir, %tmpenv); # Cache and return the calculated tmpdir, recording which env vars # determined it. sub _cache_tmpdir { @tmpenv{@_[2..$#_]} = @ENV{@_[2..$#_]}; return $tmpdir = $_[1]; } # Retrieve the cached tmpdir, checking first whether relevant env vars have # changed and invalidated the cache. sub _cached_tmpdir { shift; local $^W; return if grep $ENV{$_} ne $tmpenv{$_}, @_; return $tmpdir; } sub _tmpdir { my $self = shift; my @dirlist = @_; my $taint = do { no strict 'refs'; ${"\cTAINT"} }; if ($taint) { # Check for taint mode on perl >= 5.8.0 require Scalar::Util; @dirlist = grep { ! Scalar::Util::tainted($_) } @dirlist; } elsif ($] < 5.007) { # No ${^TAINT} before 5.8 @dirlist = grep { !defined($_) || eval { eval('1'.substr $_,0,0) } } @dirlist; } foreach (@dirlist) { next unless defined && -d && -w _; $tmpdir = $_; last; } $tmpdir = $self->curdir unless defined $tmpdir; $tmpdir = defined $tmpdir && $self->canonpath($tmpdir); if ( !$self->file_name_is_absolute($tmpdir) ) { # See [perl #120593] for the full details # If possible, return a full path, rather than '.' or 'lib', but # jump through some hoops to avoid returning a tainted value. ($tmpdir) = grep { $taint ? ! Scalar::Util::tainted($_) : $] < 5.007 ? eval { eval('1'.substr $_,0,0) } : 1 } $self->rel2abs($tmpdir), $tmpdir; } return $tmpdir; } sub tmpdir { my $cached = $_[0]->_cached_tmpdir('TMPDIR'); return $cached if defined $cached; $_[0]->_cache_tmpdir($_[0]->_tmpdir( $ENV{TMPDIR}, "/tmp" ), 'TMPDIR'); } =item updir Returns a string representation of the parent directory. ".." on UNIX. =cut sub updir { '..' } use constant _fn_updir => ".."; =item no_upwards Given a list of file names, strip out those that refer to a parent directory. (Does not strip symlinks, only '.', '..', and equivalents.) =cut sub no_upwards { my $self = shift; return grep(!/^\.{1,2}\z/s, @_); } =item case_tolerant Returns a true or false value indicating, respectively, that alphabetic is not or is significant when comparing file specifications. =cut sub case_tolerant { 0 } use constant _fn_case_tolerant => 0; =item file_name_is_absolute Takes as argument a path and returns true if it is an absolute path. This does not consult the local filesystem on Unix, Win32, OS/2 or Mac OS (Classic). It does consult the working environment for VMS (see L). =cut sub file_name_is_absolute { my ($self,$file) = @_; return scalar($file =~ m:^/:s); } =item path Takes no argument, returns the environment variable PATH as an array. =cut sub path { return () unless exists $ENV{PATH}; my @path = split(':', $ENV{PATH}); foreach (@path) { $_ = '.' if $_ eq '' } return @path; } =item join join is the same as catfile. =cut sub join { my $self = shift; return $self->catfile(@_); } =item splitpath ($volume,$directories,$file) = File::Spec->splitpath( $path ); ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file ); Splits a path into volume, directory, and filename portions. On systems with no concept of volume, returns '' for volume. For systems with no syntax differentiating filenames from directories, assumes that the last file is a path unless $no_file is true or a trailing separator or /. or /.. is present. On Unix this means that $no_file true makes this return ( '', $path, '' ). The directory portion may or may not be returned with a trailing '/'. The results can be passed to L to get back a path equivalent to (usually identical to) the original path. =cut sub splitpath { my ($self,$path, $nofile) = @_; my ($volume,$directory,$file) = ('','',''); if ( $nofile ) { $directory = $path; } else { $path =~ m|^ ( (?: .* / (?: \.\.?\z )? )? ) ([^/]*) |xs; $directory = $1; $file = $2; } return ($volume,$directory,$file); } =item splitdir The opposite of L. @dirs = File::Spec->splitdir( $directories ); $directories must be only the directory portion of the path on systems that have the concept of a volume or that have path syntax that differentiates files from directories. Unlike just splitting the directories on the separator, empty directory names (C<''>) can be returned, because these are significant on some OSs. On Unix, File::Spec->splitdir( "/a/b//c/" ); Yields: ( '', 'a', 'b', '', 'c', '' ) =cut sub splitdir { return split m|/|, $_[1], -1; # Preserve trailing fields } =item catpath() Takes volume, directory and file portions and returns an entire path. Under Unix, $volume is ignored, and directory and file are concatenated. A '/' is inserted if needed (though if the directory portion doesn't start with '/' it is not added). On other OSs, $volume is significant. =cut sub catpath { my ($self,$volume,$directory,$file) = @_; if ( $directory ne '' && $file ne '' && substr( $directory, -1 ) ne '/' && substr( $file, 0, 1 ) ne '/' ) { $directory .= "/$file" ; } else { $directory .= $file ; } return $directory ; } =item abs2rel Takes a destination path and an optional base path returns a relative path from the base path to the destination path: $rel_path = File::Spec->abs2rel( $path ) ; $rel_path = File::Spec->abs2rel( $path, $base ) ; If $base is not present or '', then L is used. If $base is relative, then it is converted to absolute form using L. This means that it is taken to be relative to L. On systems that have a grammar that indicates filenames, this ignores the $base filename. Otherwise all path components are assumed to be directories. If $path is relative, it is converted to absolute form using L. This means that it is taken to be relative to L. No checks against the filesystem are made, so the result may not be correct if C<$base> contains symbolic links. (Apply L beforehand if that is a concern.) On VMS, there is interaction with the working environment, as logicals and macros are expanded. Based on code written by Shigio Yamaguchi. =cut sub abs2rel { my($self,$path,$base) = @_; $base = Cwd::getcwd() unless defined $base and length $base; ($path, $base) = map $self->canonpath($_), $path, $base; my $path_directories; my $base_directories; if (grep $self->file_name_is_absolute($_), $path, $base) { ($path, $base) = map $self->rel2abs($_), $path, $base; my ($path_volume) = $self->splitpath($path, 1); my ($base_volume) = $self->splitpath($base, 1); # Can't relativize across volumes return $path unless $path_volume eq $base_volume; $path_directories = ($self->splitpath($path, 1))[1]; $base_directories = ($self->splitpath($base, 1))[1]; # For UNC paths, the user might give a volume like //foo/bar that # strictly speaking has no directory portion. Treat it as if it # had the root directory for that volume. if (!length($base_directories) and $self->file_name_is_absolute($base)) { $base_directories = $self->rootdir; } } else { my $wd= ($self->splitpath(Cwd::getcwd(), 1))[1]; $path_directories = $self->catdir($wd, $path); $base_directories = $self->catdir($wd, $base); } # Now, remove all leading components that are the same my @pathchunks = $self->splitdir( $path_directories ); my @basechunks = $self->splitdir( $base_directories ); if ($base_directories eq $self->rootdir) { return $self->curdir if $path_directories eq $self->rootdir; shift @pathchunks; return $self->canonpath( $self->catpath('', $self->catdir( @pathchunks ), '') ); } my @common; while (@pathchunks && @basechunks && $self->_same($pathchunks[0], $basechunks[0])) { push @common, shift @pathchunks ; shift @basechunks ; } return $self->curdir unless @pathchunks || @basechunks; # @basechunks now contains the directories the resulting relative path # must ascend out of before it can descend to $path_directory. If there # are updir components, we must descend into the corresponding directories # (this only works if they are no symlinks). my @reverse_base; while( defined(my $dir= shift @basechunks) ) { if( $dir ne $self->updir ) { unshift @reverse_base, $self->updir; push @common, $dir; } elsif( @common ) { if( @reverse_base && $reverse_base[0] eq $self->updir ) { shift @reverse_base; pop @common; } else { unshift @reverse_base, pop @common; } } } my $result_dirs = $self->catdir( @reverse_base, @pathchunks ); return $self->canonpath( $self->catpath('', $result_dirs, '') ); } sub _same { $_[1] eq $_[2]; } =item rel2abs() Converts a relative path to an absolute path. $abs_path = File::Spec->rel2abs( $path ) ; $abs_path = File::Spec->rel2abs( $path, $base ) ; If $base is not present or '', then L is used. If $base is relative, then it is converted to absolute form using L. This means that it is taken to be relative to L. On systems that have a grammar that indicates filenames, this ignores the $base filename. Otherwise all path components are assumed to be directories. If $path is absolute, it is cleaned up and returned using L. No checks against the filesystem are made. On VMS, there is interaction with the working environment, as logicals and macros are expanded. Based on code written by Shigio Yamaguchi. =cut sub rel2abs { my ($self,$path,$base ) = @_; # Clean up $path if ( ! $self->file_name_is_absolute( $path ) ) { # Figure out the effective $base and clean it up. if ( !defined( $base ) || $base eq '' ) { $base = Cwd::getcwd(); } elsif ( ! $self->file_name_is_absolute( $base ) ) { $base = $self->rel2abs( $base ) ; } else { $base = $self->canonpath( $base ) ; } # Glom them together $path = $self->catdir( $base, $path ) ; } return $self->canonpath( $path ) ; } =back =head1 COPYRIGHT Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Please submit bug reports at L. =head1 SEE ALSO L =cut # Internal method to reduce xx\..\yy -> yy sub _collapse { my($fs, $path) = @_; my $updir = $fs->updir; my $curdir = $fs->curdir; my($vol, $dirs, $file) = $fs->splitpath($path); my @dirs = $fs->splitdir($dirs); pop @dirs if @dirs && $dirs[-1] eq ''; my @collapsed; foreach my $dir (@dirs) { if( $dir eq $updir and # if we have an updir @collapsed and # and something to collapse length $collapsed[-1] and # and its not the rootdir $collapsed[-1] ne $updir and # nor another updir $collapsed[-1] ne $curdir # nor the curdir ) { # then pop @collapsed; # collapse } else { # else push @collapsed, $dir; # just hang onto it } } return $fs->catpath($vol, $fs->catdir(@collapsed), $file ); } 1; FILEdac26c44/IO.pm# package IO; use XSLoader (); use Carp; use strict; use warnings; our $VERSION = "1.50"; XSLoader::load 'IO', $VERSION; sub import { shift; warnings::warnif('deprecated', qq{Parameterless "use IO" deprecated}) if @_ == 0 ; my @l = @_ ? @_ : qw(Handle Seekable File Pipe Socket Dir); local @INC = @INC; pop @INC if $INC[-1] eq '.'; eval join("", map { "require IO::" . (/(\w+)/)[0] . ";\n" } @l) or croak $@; } 1; __END__ =head1 NAME IO - load various IO modules =head1 SYNOPSIS use IO qw(Handle File); # loads IO modules, here IO::Handle, IO::File use IO; # DEPRECATED =head1 DESCRIPTION C provides a simple mechanism to load several of the IO modules in one go. The IO modules belonging to the core are: IO::Handle IO::Seekable IO::File IO::Pipe IO::Socket IO::Dir IO::Select IO::Poll Some other IO modules don't belong to the perl core but can be loaded as well if they have been installed from CPAN. You can discover which ones exist with this query: L. For more information on any of these modules, please see its respective documentation. =head1 DEPRECATED use IO; # loads all the modules listed below The loaded modules are IO::Handle, IO::Seekable, IO::File, IO::Pipe, IO::Socket, IO::Dir. You should instead explicitly import the IO modules you want. =cut FILE4f130683/IO/File.pm# package IO::File; =head1 NAME IO::File - supply object methods for filehandles =head1 SYNOPSIS use IO::File; $fh = IO::File->new(); if ($fh->open("< file")) { print <$fh>; $fh->close; } $fh = IO::File->new("> file"); if (defined $fh) { print $fh "bar\n"; $fh->close; } $fh = IO::File->new("file", "r"); if (defined $fh) { print <$fh>; undef $fh; # automatically closes the file } $fh = IO::File->new("file", O_WRONLY|O_APPEND); if (defined $fh) { print $fh "corge\n"; $pos = $fh->getpos; $fh->setpos($pos); undef $fh; # automatically closes the file } autoflush STDOUT 1; =head1 DESCRIPTION C inherits from C and C. It extends these classes with methods that are specific to file handles. =head1 CONSTRUCTOR =over 4 =item new ( FILENAME [,MODE [,PERMS]] ) Creates an C. If it receives any parameters, they are passed to the method C; if the open fails, the object is destroyed. Otherwise, it is returned to the caller. =item new_tmpfile Creates an C opened for read/write on a newly created temporary file. On systems where this is possible, the temporary file is anonymous (i.e. it is unlinked after creation, but held open). If the temporary file cannot be created or opened, the C object is destroyed. Otherwise, it is returned to the caller. =back =head1 METHODS =over 4 =item open( FILENAME [,MODE [,PERMS]] ) =item open( FILENAME, IOLAYERS ) C accepts one, two or three parameters. With one parameter, it is just a front end for the built-in C function. With two or three parameters, the first parameter is a filename that may include whitespace or other special characters, and the second parameter is the open mode, optionally followed by a file permission value. If C receives a Perl mode string ("E", "+E", etc.) or an ANSI C fopen() mode string ("w", "r+", etc.), it uses the basic Perl C operator (but protects any special characters). If C is given a numeric mode, it passes that mode and the optional permissions value to the Perl C operator. The permissions default to 0666. If C is given a mode that includes the C<:> character, it passes all the three arguments to the three-argument C operator. For convenience, C exports the O_XXX constants from the Fcntl module, if this module is available. =item binmode( [LAYER] ) C sets C on the underlying C object, as documented in C. C accepts one optional parameter, which is the layer to be passed on to the C call. =back =head1 NOTE Some operating systems may perform C or C on a directory without errors. This behavior is not portable and not suggested for use. Using C and C or C are suggested instead. =head1 SEE ALSO L, L, L, L, L =head1 HISTORY Derived from FileHandle.pm by Graham Barr EFE. =cut use 5.008_001; use strict; use Carp; use Symbol; use SelectSaver; use IO::Seekable; require Exporter; our @ISA = qw(IO::Handle IO::Seekable Exporter); our $VERSION = "1.48"; our @EXPORT = @IO::Seekable::EXPORT; eval { # Make all Fcntl O_XXX constants available for importing require Fcntl; my @O = grep /^O_/, @Fcntl::EXPORT; Fcntl->import(@O); # first we import what we want to export push(@EXPORT, @O); }; ################################################ ## Constructor ## sub new { my $type = shift; my $class = ref($type) || $type || "IO::File"; @_ >= 0 && @_ <= 3 or croak "usage: $class->new([FILENAME [,MODE [,PERMS]]])"; my $fh = $class->SUPER::new(); if (@_) { $fh->open(@_) or return undef; } $fh; } ################################################ ## Open ## sub open { @_ >= 2 && @_ <= 4 or croak 'usage: $fh->open(FILENAME [,MODE [,PERMS]])'; my ($fh, $file) = @_; if (@_ > 2) { my ($mode, $perms) = @_[2, 3]; if ($mode =~ /^\d+$/) { defined $perms or $perms = 0666; return sysopen($fh, $file, $mode, $perms); } elsif ($mode =~ /:/) { return open($fh, $mode, $file) if @_ == 3; croak 'usage: $fh->open(FILENAME, IOLAYERS)'; } else { return open($fh, IO::Handle::_open_mode_string($mode), $file); } } open($fh, $file); } ################################################ ## Binmode ## sub binmode { ( @_ == 1 or @_ == 2 ) or croak 'usage $fh->binmode([LAYER])'; my($fh, $layer) = @_; return binmode $$fh unless $layer; return binmode $$fh, $layer; } 1; FILEcd0cadf1/IO/Handle.pmApackage IO::Handle; =head1 NAME IO::Handle - supply object methods for I/O handles =head1 SYNOPSIS use IO::Handle; $io = IO::Handle->new(); if ($io->fdopen(fileno(STDIN),"r")) { print $io->getline; $io->close; } $io = IO::Handle->new(); if ($io->fdopen(fileno(STDOUT),"w")) { $io->print("Some text\n"); } # setvbuf is not available by default on Perls 5.8.0 and later. use IO::Handle '_IOLBF'; $io->setvbuf($buffer_var, _IOLBF, 1024); undef $io; # automatically closes the file if it's open autoflush STDOUT 1; =head1 DESCRIPTION C is the base class for all other IO handle classes. It is not intended that objects of C would be created directly, but instead C is inherited from by several other classes in the IO hierarchy. If you are reading this documentation, looking for a replacement for the C package, then I suggest you read the documentation for C too. =head1 CONSTRUCTOR =over 4 =item new () Creates a new C object. =item new_from_fd ( FD, MODE ) Creates an C like C does. It requires two parameters, which are passed to the method C; if the fdopen fails, the object is destroyed. Otherwise, it is returned to the caller. =back =head1 METHODS See L for complete descriptions of each of the following supported C methods, which are just front ends for the corresponding built-in functions: $io->close $io->eof $io->fcntl( FUNCTION, SCALAR ) $io->fileno $io->format_write( [FORMAT_NAME] ) $io->getc $io->ioctl( FUNCTION, SCALAR ) $io->read ( BUF, LEN, [OFFSET] ) $io->print ( ARGS ) $io->printf ( FMT, [ARGS] ) $io->say ( ARGS ) $io->stat $io->sysread ( BUF, LEN, [OFFSET] ) $io->syswrite ( BUF, [LEN, [OFFSET]] ) $io->truncate ( LEN ) See L for complete descriptions of each of the following supported C methods. All of them return the previous value of the attribute and takes an optional single argument that when given will set the value. If no argument is given the previous value is unchanged (except for $io->autoflush will actually turn ON autoflush by default). $io->autoflush ( [BOOL] ) $| $io->format_page_number( [NUM] ) $% $io->format_lines_per_page( [NUM] ) $= $io->format_lines_left( [NUM] ) $- $io->format_name( [STR] ) $~ $io->format_top_name( [STR] ) $^ $io->input_line_number( [NUM]) $. The following methods are not supported on a per-filehandle basis. IO::Handle->format_line_break_characters( [STR] ) $: IO::Handle->format_formfeed( [STR]) $^L IO::Handle->output_field_separator( [STR] ) $, IO::Handle->output_record_separator( [STR] ) $\ IO::Handle->input_record_separator( [STR] ) $/ Furthermore, for doing normal I/O you might need these: =over 4 =item $io->fdopen ( FD, MODE ) C is like an ordinary C except that its first parameter is not a filename but rather a file handle name, an IO::Handle object, or a file descriptor number. (For the documentation of the C method, see L.) =item $io->opened Returns true if the object is currently a valid file descriptor, false otherwise. =item $io->getline This works like <$io> described in L except that it's more readable and can be safely called in a list context but still returns just one line. If used as the conditional within a C or C-style C loop, however, you will need to emulate the functionality of <$io> with C<< defined($_ = $io->getline) >>. =item $io->getlines This works like <$io> when called in a list context to read all the remaining lines in a file, except that it's more readable. It will also croak() if accidentally called in a scalar context. =item $io->ungetc ( ORD ) Pushes a character with the given ordinal value back onto the given handle's input stream. Only one character of pushback per handle is guaranteed. =item $io->write ( BUF, LEN [, OFFSET ] ) This C is somewhat like C found in C, in that it is the opposite of read. The wrapper for the perl C function is called C. However, whilst the C C function returns the number of bytes written, this C function simply returns true if successful (like C). A more C-like C is C (see above). =item $io->error Returns a true value if the given handle has experienced any errors since it was opened or since the last call to C, or if the handle is invalid. It only returns false for a valid handle with no outstanding errors. =item $io->clearerr Clear the given handle's error indicator. Returns -1 if the handle is invalid, 0 otherwise. =item $io->sync C synchronizes a file's in-memory state with that on the physical medium. C does not operate at the perlio api level, but operates on the file descriptor (similar to sysread, sysseek and systell). This means that any data held at the perlio api level will not be synchronized. To synchronize data that is buffered at the perlio api level you must use the flush method. C is not implemented on all platforms. Returns "0 but true" on success, C on error, C for an invalid handle. See L. =item $io->flush C causes perl to flush any buffered data at the perlio api level. Any unread data in the buffer will be discarded, and any unwritten data will be written to the underlying file descriptor. Returns "0 but true" on success, C on error. =item $io->printflush ( ARGS ) Turns on autoflush, print ARGS and then restores the autoflush status of the C object. Returns the return value from print. =item $io->blocking ( [ BOOL ] ) If called with an argument C will turn on non-blocking IO if C is false, and turn it off if C is true. C will return the value of the previous setting, or the current setting if C is not given. If an error occurs C will return undef and C<$!> will be set. =back If the C functions setbuf() and/or setvbuf() are available, then C and C set the buffering policy for an IO::Handle. The calling sequences for the Perl functions are the same as their C counterparts--including the constants C<_IOFBF>, C<_IOLBF>, and C<_IONBF> for setvbuf()--except that the buffer parameter specifies a scalar variable to use as a buffer. You should only change the buffer before any I/O, or immediately after calling flush. WARNING: The IO::Handle::setvbuf() is not available by default on Perls 5.8.0 and later because setvbuf() is rather specific to using the stdio library, while Perl prefers the new perlio subsystem instead. WARNING: A variable used as a buffer by C or C B in any way until the IO::Handle is closed or C or C is called again, or memory corruption may result! Remember that the order of global destruction is undefined, so even if your buffer variable remains in scope until program termination, it may be undefined before the file IO::Handle is closed. Note that you need to import the constants C<_IOFBF>, C<_IOLBF>, and C<_IONBF> explicitly. Like C, setbuf returns nothing. setvbuf returns "0 but true", on success, C on failure. Lastly, there is a special method for working under B<-T> and setuid/gid scripts: =over 4 =item $io->untaint Marks the object as taint-clean, and as such data read from it will also be considered taint-clean. Note that this is a very trusting action to take, and appropriate consideration for the data source and potential vulnerability should be kept in mind. Returns 0 on success, -1 if setting the taint-clean flag failed. (eg invalid handle) =back =head1 NOTE An C object is a reference to a symbol/GLOB reference (see the C package). Some modules that inherit from C may want to keep object related variables in the hash table part of the GLOB. In an attempt to prevent modules trampling on each other I propose the that any such module should prefix its variables with its own name separated by _'s. For example the IO::Socket module keeps a C variable in 'io_socket_timeout'. =head1 SEE ALSO L, L, L =head1 BUGS Due to backwards compatibility, all filehandles resemble objects of class C, or actually classes derived from that class. They actually aren't. Which means you can't derive your own class from C and inherit those methods. =head1 HISTORY Derived from FileHandle.pm by Graham Barr EFE =cut use 5.008_001; use strict; use Carp; use Symbol; use SelectSaver; use IO (); # Load the XS module require Exporter; our @ISA = qw(Exporter); our $VERSION = "1.48"; our @EXPORT_OK = qw( autoflush output_field_separator output_record_separator input_record_separator input_line_number format_page_number format_lines_per_page format_lines_left format_name format_top_name format_line_break_characters format_formfeed format_write print printf say getline getlines printflush flush SEEK_SET SEEK_CUR SEEK_END _IOFBF _IOLBF _IONBF ); ################################################ ## Constructors, destructors. ## sub new { my $class = ref($_[0]) || $_[0] || "IO::Handle"; if (@_ != 1) { # Since perl will automatically require IO::File if needed, but # also initialises IO::File's @ISA as part of the core we must # ensure IO::File is loaded if IO::Handle is. This avoids effect- # ively "half-loading" IO::File. if ($] > 5.013 && $class eq 'IO::File' && !$INC{"IO/File.pm"}) { require IO::File; shift; return IO::File::->new(@_); } croak "usage: $class->new()"; } my $io = gensym; bless $io, $class; } sub new_from_fd { my $class = ref($_[0]) || $_[0] || "IO::Handle"; @_ == 3 or croak "usage: $class->new_from_fd(FD, MODE)"; my $io = gensym; shift; IO::Handle::fdopen($io, @_) or return undef; bless $io, $class; } # # There is no need for DESTROY to do anything, because when the # last reference to an IO object is gone, Perl automatically # closes its associated files (if any). However, to avoid any # attempts to autoload DESTROY, we here define it to do nothing. # sub DESTROY {} ################################################ ## Open and close. ## sub _open_mode_string { my ($mode) = @_; $mode =~ /^\+?(<|>>?)$/ or $mode =~ s/^r(\+?)$/$1/ or $mode =~ s/^a(\+?)$/$1>>/ or croak "IO::Handle: bad open mode: $mode"; $mode; } sub fdopen { @_ == 3 or croak 'usage: $io->fdopen(FD, MODE)'; my ($io, $fd, $mode) = @_; local(*GLOB); if (ref($fd) && "$fd" =~ /GLOB\(/o) { # It's a glob reference; Alias it as we cannot get name of anon GLOBs my $n = qualify(*GLOB); *GLOB = *{*$fd}; $fd = $n; } elsif ($fd =~ m#^\d+$#) { # It's an FD number; prefix with "=". $fd = "=$fd"; } open($io, _open_mode_string($mode) . '&' . $fd) ? $io : undef; } sub close { @_ == 1 or croak 'usage: $io->close()'; my($io) = @_; close($io); } ################################################ ## Normal I/O functions. ## # flock # select sub opened { @_ == 1 or croak 'usage: $io->opened()'; defined fileno($_[0]); } sub fileno { @_ == 1 or croak 'usage: $io->fileno()'; fileno($_[0]); } sub getc { @_ == 1 or croak 'usage: $io->getc()'; getc($_[0]); } sub eof { @_ == 1 or croak 'usage: $io->eof()'; eof($_[0]); } sub print { @_ or croak 'usage: $io->print(ARGS)'; my $this = shift; print $this @_; } sub printf { @_ >= 2 or croak 'usage: $io->printf(FMT,[ARGS])'; my $this = shift; printf $this @_; } sub say { @_ or croak 'usage: $io->say(ARGS)'; my $this = shift; local $\ = "\n"; print $this @_; } sub truncate { @_ == 2 or croak 'usage: $io->truncate(LEN)'; truncate($_[0], $_[1]); } sub read { @_ == 3 || @_ == 4 or croak 'usage: $io->read(BUF, LEN [, OFFSET])'; read($_[0], $_[1], $_[2], $_[3] || 0); } sub sysread { @_ == 3 || @_ == 4 or croak 'usage: $io->sysread(BUF, LEN [, OFFSET])'; sysread($_[0], $_[1], $_[2], $_[3] || 0); } sub write { @_ >= 2 && @_ <= 4 or croak 'usage: $io->write(BUF [, LEN [, OFFSET]])'; local($\) = ""; $_[2] = length($_[1]) unless defined $_[2]; print { $_[0] } substr($_[1], $_[3] || 0, $_[2]); } sub syswrite { @_ >= 2 && @_ <= 4 or croak 'usage: $io->syswrite(BUF [, LEN [, OFFSET]])'; if (defined($_[2])) { syswrite($_[0], $_[1], $_[2], $_[3] || 0); } else { syswrite($_[0], $_[1]); } } sub stat { @_ == 1 or croak 'usage: $io->stat()'; stat($_[0]); } ################################################ ## State modification functions. ## sub autoflush { my $old = SelectSaver->new(qualify($_[0], caller)); my $prev = $|; $| = @_ > 1 ? $_[1] : 1; $prev; } sub output_field_separator { carp "output_field_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $,; $, = $_[1] if @_ > 1; $prev; } sub output_record_separator { carp "output_record_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $\; $\ = $_[1] if @_ > 1; $prev; } sub input_record_separator { carp "input_record_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $/; $/ = $_[1] if @_ > 1; $prev; } sub input_line_number { local $.; () = tell qualify($_[0], caller) if ref($_[0]); my $prev = $.; $. = $_[1] if @_ > 1; $prev; } sub format_page_number { my $old; $old = SelectSaver->new(qualify($_[0], caller)) if ref($_[0]); my $prev = $%; $% = $_[1] if @_ > 1; $prev; } sub format_lines_per_page { my $old; $old = SelectSaver->new(qualify($_[0], caller)) if ref($_[0]); my $prev = $=; $= = $_[1] if @_ > 1; $prev; } sub format_lines_left { my $old; $old = SelectSaver->new(qualify($_[0], caller)) if ref($_[0]); my $prev = $-; $- = $_[1] if @_ > 1; $prev; } sub format_name { my $old; $old = SelectSaver->new(qualify($_[0], caller)) if ref($_[0]); my $prev = $~; $~ = qualify($_[1], caller) if @_ > 1; $prev; } sub format_top_name { my $old; $old = SelectSaver->new(qualify($_[0], caller)) if ref($_[0]); my $prev = $^; $^ = qualify($_[1], caller) if @_ > 1; $prev; } sub format_line_break_characters { carp "format_line_break_characters is not supported on a per-handle basis" if ref($_[0]); my $prev = $:; $: = $_[1] if @_ > 1; $prev; } sub format_formfeed { carp "format_formfeed is not supported on a per-handle basis" if ref($_[0]); my $prev = $^L; $^L = $_[1] if @_ > 1; $prev; } sub formline { my $io = shift; my $picture = shift; local($^A) = $^A; local($\) = ""; formline($picture, @_); print $io $^A; } sub format_write { @_ < 3 || croak 'usage: $io->write( [FORMAT_NAME] )'; if (@_ == 2) { my ($io, $fmt) = @_; my $oldfmt = $io->format_name(qualify($fmt,caller)); CORE::write($io); $io->format_name($oldfmt); } else { CORE::write($_[0]); } } sub fcntl { @_ == 3 || croak 'usage: $io->fcntl( OP, VALUE );'; my ($io, $op) = @_; return fcntl($io, $op, $_[2]); } sub ioctl { @_ == 3 || croak 'usage: $io->ioctl( OP, VALUE );'; my ($io, $op) = @_; return ioctl($io, $op, $_[2]); } # this sub is for compatibility with older releases of IO that used # a sub called constant to determine if a constant existed -- GMB # # The SEEK_* and _IO?BF constants were the only constants at that time # any new code should just check defined(&CONSTANT_NAME) sub constant { no strict 'refs'; my $name = shift; (($name =~ /^(SEEK_(SET|CUR|END)|_IO[FLN]BF)$/) && defined &{$name}) ? &{$name}() : undef; } # so that flush.pl can be deprecated sub printflush { my $io = shift; my $old; $old = SelectSaver->new(qualify($io, caller)) if ref($io); local $| = 1; if(ref($io)) { print $io @_; } else { print @_; } } 1; FILEb55821f8/IO/Seekable.pm K# package IO::Seekable; =head1 NAME IO::Seekable - supply seek based methods for I/O objects =head1 SYNOPSIS use IO::Seekable; package IO::Something; @ISA = qw(IO::Seekable); =head1 DESCRIPTION C does not have a constructor of its own as it is intended to be inherited by other C based objects. It provides methods which allow seeking of the file descriptors. =over 4 =item $io->getpos Returns an opaque value that represents the current position of the IO::File, or C if this is not possible (eg an unseekable stream such as a terminal, pipe or socket). If the fgetpos() function is available in your C library it is used to implements getpos, else perl emulates getpos using C's ftell() function. =item $io->setpos Uses the value of a previous getpos call to return to a previously visited position. Returns "0 but true" on success, C on failure. =back See L for complete descriptions of each of the following supported C methods, which are just front ends for the corresponding built-in functions: =over 4 =item $io->seek ( POS, WHENCE ) Seek the IO::File to position POS, relative to WHENCE: =over 8 =item WHENCE=0 (SEEK_SET) POS is absolute position. (Seek relative to the start of the file) =item WHENCE=1 (SEEK_CUR) POS is an offset from the current position. (Seek relative to current) =item WHENCE=2 (SEEK_END) POS is an offset from the end of the file. (Seek relative to end) =back The SEEK_* constants can be imported from the C module if you don't wish to use the numbers C<0> C<1> or C<2> in your code. Returns C<1> upon success, C<0> otherwise. =item $io->sysseek( POS, WHENCE ) Similar to $io->seek, but sets the IO::File's position using the system call lseek(2) directly, so will confuse most perl IO operators except sysread and syswrite (see L for full details) Returns the new position, or C on failure. A position of zero is returned as the string C<"0 but true"> =item $io->tell Returns the IO::File's current position, or -1 on error. =back =head1 SEE ALSO L, L, L L =head1 HISTORY Derived from FileHandle.pm by Graham Barr Egbarr@pobox.comE =cut use 5.008_001; use Carp; use strict; use IO::Handle (); # XXX we can't get these from IO::Handle or we'll get prototype # mismatch warnings on C :-( use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END); require Exporter; our @EXPORT = qw(SEEK_SET SEEK_CUR SEEK_END); our @ISA = qw(Exporter); our $VERSION = "1.48"; sub seek { @_ == 3 or croak 'usage: $io->seek(POS, WHENCE)'; seek($_[0], $_[1], $_[2]); } sub sysseek { @_ == 3 or croak 'usage: $io->sysseek(POS, WHENCE)'; sysseek($_[0], $_[1], $_[2]); } sub tell { @_ == 1 or croak 'usage: $io->tell()'; tell($_[0]); } 1; FILE0c97409c/List/Util.pmin# Copyright (c) 1997-2009 Graham Barr . All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # # Maintained since 2013 by Paul Evans package List::Util; use strict; use warnings; require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw( all any first min max minstr maxstr none notall product reduce reductions sum sum0 sample shuffle uniq uniqint uniqnum uniqstr zip zip_longest zip_shortest mesh mesh_longest mesh_shortest head tail pairs unpairs pairkeys pairvalues pairmap pairgrep pairfirst ); our $VERSION = "1.62"; our $XS_VERSION = $VERSION; $VERSION =~ tr/_//d; require XSLoader; XSLoader::load('List::Util', $XS_VERSION); # Used by shuffle() our $RAND; sub import { my $pkg = caller; # (RT88848) Touch the caller's $a and $b, to avoid the warning of # Name "main::a" used only once: possible typo" warning no strict 'refs'; ${"${pkg}::a"} = ${"${pkg}::a"}; ${"${pkg}::b"} = ${"${pkg}::b"}; goto &Exporter::import; } # For objects returned by pairs() sub List::Util::_Pair::key { shift->[0] } sub List::Util::_Pair::value { shift->[1] } sub List::Util::_Pair::TO_JSON { [ @{+shift} ] } =head1 NAME List::Util - A selection of general-utility list subroutines =head1 SYNOPSIS use List::Util qw( reduce any all none notall first reductions max maxstr min minstr product sum sum0 pairs unpairs pairkeys pairvalues pairfirst pairgrep pairmap shuffle uniq uniqint uniqnum uniqstr zip mesh ); =head1 DESCRIPTION C contains a selection of subroutines that people have expressed would be nice to have in the perl core, but the usage would not really be high enough to warrant the use of a keyword, and the size so small such that being individual extensions would be wasteful. By default C does not export any subroutines. =cut =head1 LIST-REDUCTION FUNCTIONS The following set of functions all apply a given block of code to a list of values. =cut =head2 reduce $result = reduce { BLOCK } @list Reduces C<@list> by calling C in a scalar context multiple times, setting C<$a> and C<$b> each time. The first call will be with C<$a> and C<$b> set to the first two elements of the list, subsequent calls will be done by setting C<$a> to the result of the previous call and C<$b> to the next element in the list. Returns the result of the last call to the C. If C<@list> is empty then C is returned. If C<@list> only contains one element then that element is returned and C is not executed. The following examples all demonstrate how C could be used to implement the other list-reduction functions in this module. (They are not in fact implemented like this, but instead in a more efficient manner in individual C functions). $foo = reduce { defined($a) ? $a : $code->(local $_ = $b) ? $b : undef } undef, @list # first $foo = reduce { $a > $b ? $a : $b } 1..10 # max $foo = reduce { $a gt $b ? $a : $b } 'A'..'Z' # maxstr $foo = reduce { $a < $b ? $a : $b } 1..10 # min $foo = reduce { $a lt $b ? $a : $b } 'aa'..'zz' # minstr $foo = reduce { $a + $b } 1 .. 10 # sum $foo = reduce { $a . $b } @bar # concat $foo = reduce { $a || $code->(local $_ = $b) } 0, @bar # any $foo = reduce { $a && $code->(local $_ = $b) } 1, @bar # all $foo = reduce { $a && !$code->(local $_ = $b) } 1, @bar # none $foo = reduce { $a || !$code->(local $_ = $b) } 0, @bar # notall # Note that these implementations do not fully short-circuit If your algorithm requires that C produce an identity value, then make sure that you always pass that identity value as the first argument to prevent C being returned $foo = reduce { $a + $b } 0, @values; # sum with 0 identity value The above example code blocks also suggest how to use C to build a more efficient combined version of one of these basic functions and a C block. For example, to find the total length of all the strings in a list, we could use $total = sum map { length } @strings; However, this produces a list of temporary integer values as long as the original list of strings, only to reduce it down to a single value again. We can compute the same result more efficiently by using C with a code block that accumulates lengths by writing this instead as: $total = reduce { $a + length $b } 0, @strings The other scalar-returning list reduction functions are all specialisations of this generic idea. =head2 reductions @results = reductions { BLOCK } @list I Similar to C except that it also returns the intermediate values along with the final result. As before, C<$a> is set to the first element of the given list, and the C is then called once for remaining item in the list set into C<$b>, with the result being captured for return as well as becoming the new value for C<$a>. The returned list will begin with the initial value for C<$a>, followed by each return value from the block in order. The final value of the result will be identical to what the C function would have returned given the same block and list. reduce { "$a-$b" } "a".."d" # "a-b-c-d" reductions { "$a-$b" } "a".."d" # "a", "a-b", "a-b-c", "a-b-c-d" =head2 any my $bool = any { BLOCK } @list; I Similar to C in that it evaluates C setting C<$_> to each element of C<@list> in turn. C returns true if any element makes the C return a true value. If C never returns true or C<@list> was empty then it returns false. Many cases of using C in a conditional can be written using C instead, as it can short-circuit after the first true result. if( any { length > 10 } @strings ) { # at least one string has more than 10 characters } Note: Due to XS issues the block passed may be able to access the outer @_ directly. This is not intentional and will break under debugger. =head2 all my $bool = all { BLOCK } @list; I Similar to L, except that it requires all elements of the C<@list> to make the C return true. If any element returns false, then it returns false. If the C never returns false or the C<@list> was empty then it returns true. Note: Due to XS issues the block passed may be able to access the outer @_ directly. This is not intentional and will break under debugger. =head2 none =head2 notall my $bool = none { BLOCK } @list; my $bool = notall { BLOCK } @list; I Similar to L and L, but with the return sense inverted. C returns true only if no value in the C<@list> causes the C to return true, and C returns true only if not all of the values do. Note: Due to XS issues the block passed may be able to access the outer @_ directly. This is not intentional and will break under debugger. =head2 first my $val = first { BLOCK } @list; Similar to C in that it evaluates C setting C<$_> to each element of C<@list> in turn. C returns the first element where the result from C is a true value. If C never returns true or C<@list> was empty then C is returned. $foo = first { defined($_) } @list # first defined value in @list $foo = first { $_ > $value } @list # first value in @list which # is greater than $value =head2 max my $num = max @list; Returns the entry in the list with the highest numerical value. If the list is empty then C is returned. $foo = max 1..10 # 10 $foo = max 3,9,12 # 12 $foo = max @bar, @baz # whatever =head2 maxstr my $str = maxstr @list; Similar to L, but treats all the entries in the list as strings and returns the highest string as defined by the C operator. If the list is empty then C is returned. $foo = maxstr 'A'..'Z' # 'Z' $foo = maxstr "hello","world" # "world" $foo = maxstr @bar, @baz # whatever =head2 min my $num = min @list; Similar to L but returns the entry in the list with the lowest numerical value. If the list is empty then C is returned. $foo = min 1..10 # 1 $foo = min 3,9,12 # 3 $foo = min @bar, @baz # whatever =head2 minstr my $str = minstr @list; Similar to L, but treats all the entries in the list as strings and returns the lowest string as defined by the C operator. If the list is empty then C is returned. $foo = minstr 'A'..'Z' # 'A' $foo = minstr "hello","world" # "hello" $foo = minstr @bar, @baz # whatever =head2 product my $num = product @list; I Returns the numerical product of all the elements in C<@list>. If C<@list> is empty then C<1> is returned. $foo = product 1..10 # 3628800 $foo = product 3,9,12 # 324 =head2 sum my $num_or_undef = sum @list; Returns the numerical sum of all the elements in C<@list>. For backwards compatibility, if C<@list> is empty then C is returned. $foo = sum 1..10 # 55 $foo = sum 3,9,12 # 24 $foo = sum @bar, @baz # whatever =head2 sum0 my $num = sum0 @list; I Similar to L, except this returns 0 when given an empty list, rather than C. =cut =head1 KEY/VALUE PAIR LIST FUNCTIONS The following set of functions, all inspired by L, consume an even-sized list of pairs. The pairs may be key/value associations from a hash, or just a list of values. The functions will all preserve the original ordering of the pairs, and will not be confused by multiple pairs having the same "key" value - nor even do they require that the first of each pair be a plain string. B: At the time of writing, the following C functions that take a block do not modify the value of C<$_> within the block, and instead operate using the C<$a> and C<$b> globals instead. This has turned out to be a poor design, as it precludes the ability to provide a C function. Better would be to pass pair-like objects as 2-element array references in C<$_>, in a style similar to the return value of the C function. At some future version this behaviour may be added. Until then, users are alerted B to rely on the value of C<$_> remaining unmodified between the outside and the inside of the control block. In particular, the following example is B: my @kvlist = ... foreach (qw( some keys here )) { my @items = pairgrep { $a eq $_ } @kvlist; ... } Instead, write this using a lexical variable: foreach my $key (qw( some keys here )) { my @items = pairgrep { $a eq $key } @kvlist; ... } =cut =head2 pairs my @pairs = pairs @kvlist; I A convenient shortcut to operating on even-sized lists of pairs, this function returns a list of C references, each containing two items from the given list. It is a more efficient version of @pairs = pairmap { [ $a, $b ] } @kvlist It is most convenient to use in a C loop, for example: foreach my $pair ( pairs @kvlist ) { my ( $key, $value ) = @$pair; ... } Since version C<1.39> these C references are blessed objects, recognising the two methods C and C. The following code is equivalent: foreach my $pair ( pairs @kvlist ) { my $key = $pair->key; my $value = $pair->value; ... } Since version C<1.51> they also have a C method to ease serialisation. =head2 unpairs my @kvlist = unpairs @pairs I The inverse function to C; this function takes a list of C references containing two elements each, and returns a flattened list of the two values from each of the pairs, in order. This is notionally equivalent to my @kvlist = map { @{$_}[0,1] } @pairs except that it is implemented more efficiently internally. Specifically, for any input item it will extract exactly two values for the output list; using C if the input array references are short. Between C and C, a higher-order list function can be used to operate on the pairs as single scalars; such as the following near-equivalents of the other C higher-order functions: @kvlist = unpairs grep { FUNC } pairs @kvlist # Like pairgrep, but takes $_ instead of $a and $b @kvlist = unpairs map { FUNC } pairs @kvlist # Like pairmap, but takes $_ instead of $a and $b Note however that these versions will not behave as nicely in scalar context. Finally, this technique can be used to implement a sort on a keyvalue pair list; e.g.: @kvlist = unpairs sort { $a->key cmp $b->key } pairs @kvlist =head2 pairkeys my @keys = pairkeys @kvlist; I A convenient shortcut to operating on even-sized lists of pairs, this function returns a list of the the first values of each of the pairs in the given list. It is a more efficient version of @keys = pairmap { $a } @kvlist =head2 pairvalues my @values = pairvalues @kvlist; I A convenient shortcut to operating on even-sized lists of pairs, this function returns a list of the the second values of each of the pairs in the given list. It is a more efficient version of @values = pairmap { $b } @kvlist =head2 pairgrep my @kvlist = pairgrep { BLOCK } @kvlist; my $count = pairgrep { BLOCK } @kvlist; I Similar to perl's C keyword, but interprets the given list as an even-sized list of pairs. It invokes the C multiple times, in scalar context, with C<$a> and C<$b> set to successive pairs of values from the C<@kvlist>. Returns an even-sized list of those pairs for which the C returned true in list context, or the count of the B in scalar context. (Note, therefore, in scalar context that it returns a number half the size of the count of items it would have returned in list context). @subset = pairgrep { $a =~ m/^[[:upper:]]+$/ } @kvlist As with C aliasing C<$_> to list elements, C aliases C<$a> and C<$b> to elements of the given list. Any modifications of it by the code block will be visible to the caller. =head2 pairfirst my ( $key, $val ) = pairfirst { BLOCK } @kvlist; my $found = pairfirst { BLOCK } @kvlist; I Similar to the L function, but interprets the given list as an even-sized list of pairs. It invokes the C multiple times, in scalar context, with C<$a> and C<$b> set to successive pairs of values from the C<@kvlist>. Returns the first pair of values from the list for which the C returned true in list context, or an empty list of no such pair was found. In scalar context it returns a simple boolean value, rather than either the key or the value found. ( $key, $value ) = pairfirst { $a =~ m/^[[:upper:]]+$/ } @kvlist As with C aliasing C<$_> to list elements, C aliases C<$a> and C<$b> to elements of the given list. Any modifications of it by the code block will be visible to the caller. =head2 pairmap my @list = pairmap { BLOCK } @kvlist; my $count = pairmap { BLOCK } @kvlist; I Similar to perl's C keyword, but interprets the given list as an even-sized list of pairs. It invokes the C multiple times, in list context, with C<$a> and C<$b> set to successive pairs of values from the C<@kvlist>. Returns the concatenation of all the values returned by the C in list context, or the count of the number of items that would have been returned in scalar context. @result = pairmap { "The key $a has value $b" } @kvlist As with C aliasing C<$_> to list elements, C aliases C<$a> and C<$b> to elements of the given list. Any modifications of it by the code block will be visible to the caller. See L for a known-bug with C, and a workaround. =cut =head1 OTHER FUNCTIONS =cut =head2 shuffle my @values = shuffle @values; Returns the values of the input in a random order @cards = shuffle 0..51 # 0..51 in a random order This function is affected by the C<$RAND> variable. =cut =head2 sample my @items = sample $count, @values I Randomly select the given number of elements from the input list. Any given position in the input list will be selected at most once. If there are fewer than C<$count> items in the list then the function will return once all of them have been randomly selected; effectively the function behaves similarly to L. This function is affected by the C<$RAND> variable. =head2 uniq my @subset = uniq @values I Filters a list of values to remove subsequent duplicates, as judged by a DWIM-ish string equality or C test. Preserves the order of unique elements, and retains the first value of any duplicate set. my $count = uniq @values In scalar context, returns the number of elements that would have been returned as a list. The C value is treated by this function as distinct from the empty string, and no warning will be produced. It is left as-is in the returned list. Subsequent C values are still considered identical to the first, and will be removed. =head2 uniqint my @subset = uniqint @values I Filters a list of values to remove subsequent duplicates, as judged by an integer numerical equality test. Preserves the order of unique elements, and retains the first value of any duplicate set. Values in the returned list will be coerced into integers. my $count = uniqint @values In scalar context, returns the number of elements that would have been returned as a list. Note that C is treated much as other numerical operations treat it; it compares equal to zero but additionally produces a warning if such warnings are enabled (C). In addition, an C in the returned list is coerced into a numerical zero, so that the entire list of values returned by C are well-behaved as integers. =head2 uniqnum my @subset = uniqnum @values I Filters a list of values to remove subsequent duplicates, as judged by a numerical equality test. Preserves the order of unique elements, and retains the first value of any duplicate set. my $count = uniqnum @values In scalar context, returns the number of elements that would have been returned as a list. Note that C is treated much as other numerical operations treat it; it compares equal to zero but additionally produces a warning if such warnings are enabled (C). In addition, an C in the returned list is coerced into a numerical zero, so that the entire list of values returned by C are well-behaved as numbers. Note also that multiple IEEE C values are treated as duplicates of each other, regardless of any differences in their payloads, and despite the fact that C<< 0+'NaN' == 0+'NaN' >> yields false. =head2 uniqstr my @subset = uniqstr @values I Filters a list of values to remove subsequent duplicates, as judged by a string equality test. Preserves the order of unique elements, and retains the first value of any duplicate set. my $count = uniqstr @values In scalar context, returns the number of elements that would have been returned as a list. Note that C is treated much as other string operations treat it; it compares equal to the empty string but additionally produces a warning if such warnings are enabled (C). In addition, an C in the returned list is coerced into an empty string, so that the entire list of values returned by C are well-behaved as strings. =cut =head2 head my @values = head $size, @list; I Returns the first C<$size> elements from C<@list>. If C<$size> is negative, returns all but the last C<$size> elements from C<@list>. @result = head 2, qw( foo bar baz ); # foo, bar @result = head -2, qw( foo bar baz ); # foo =head2 tail my @values = tail $size, @list; I Returns the last C<$size> elements from C<@list>. If C<$size> is negative, returns all but the first C<$size> elements from C<@list>. @result = tail 2, qw( foo bar baz ); # bar, baz @result = tail -2, qw( foo bar baz ); # baz =head2 zip my @result = zip [1..3], ['a'..'c']; # [1, 'a'], [2, 'b'], [3, 'c'] I Returns a list of array references, composed of elements from the given list of array references. Each array in the returned list is composed of elements at that corresponding position from each of the given input arrays. If any input arrays run out of elements before others, then C will be inserted into the result to fill in the gaps. The C function is particularly handy for iterating over multiple arrays at the same time with a C loop, taking one element from each: foreach ( zip \@xs, \@ys, \@zs ) { my ($x, $y, $z) = @$_; ... } B to users of L: This function does not behave the same as C, but is actually a non-prototyped equivalent to C. This function does not apply a prototype, so make sure to invoke it with references to arrays. For a function similar to the C function from C, see L. my @result = zip_shortest ... A variation of the function that differs in how it behaves when given input arrays of differing lengths. C will stop as soon as any one of the input arrays run out of elements, discarding any remaining unused values from the others. my @result = zip_longest ... C is an alias to the C function, provided simply to be explicit about that behaviour as compared to C. =head2 mesh my @result = mesh [1..3], ['a'..'c']; # (1, 'a', 2, 'b', 3, 'c') I Returns a list of items collected from elements of the given list of array references. Each section of items in the returned list is composed of elements at the corresponding position from each of the given input arrays. If any input arrays run out of elements before others, then C will be inserted into the result to fill in the gaps. This is similar to L, except that all of the ranges in the result are returned in one long flattened list, instead of being bundled into separate arrays. Because it returns a flat list of items, the C function is particularly useful for building a hash out of two separate arrays of keys and values: my %hash = mesh \@keys, \@values; my $href = { mesh \@keys, \@values }; B to users of L: This function is a non-prototyped equivalent to C or C (themselves aliases of each other). This function does not apply a prototype, so make sure to invoke it with references to arrays. my @result = mesh_shortest ... my @result = mesh_longest ... These variations are similar to those of L, in that they differ in behaviour when one of the input lists runs out of elements before the others. =head1 CONFIGURATION VARIABLES =head2 $RAND local $List::Util::RAND = sub { ... }; I This package variable is used by code which needs to generate random numbers (such as the L and L functions). If set to a CODE reference it provides an alternative to perl's builtin C function. When a new random number is needed this function will be invoked with no arguments and is expected to return a floating-point value, of which only the fractional part will be used. =head1 KNOWN BUGS =head2 RT #95409 L If the block of code given to L contains lexical variables that are captured by a returned closure, and the closure is executed after the block has been re-used for the next iteration, these lexicals will not see the correct values. For example: my @subs = pairmap { my $var = "$a is $b"; sub { print "$var\n" }; } one => 1, two => 2, three => 3; $_->() for @subs; Will incorrectly print three is 3 three is 3 three is 3 This is due to the performance optimisation of using C for the code block, which means that fresh SVs do not get allocated for each call to the block. Instead, the same SV is re-assigned for each iteration, and all the closures will share the value seen on the final iteration. To work around this bug, surround the code with a second set of braces. This creates an inner block that defeats the C logic, and does get fresh SVs allocated each time: my @subs = pairmap { { my $var = "$a is $b"; sub { print "$var\n"; } } } one => 1, two => 2, three => 3; This bug only affects closures that are generated by the block but used afterwards. Lexical variables that are only used during the lifetime of the block's execution will take their individual values for each invocation, as normal. =head2 uniqnum() on oversized bignums Due to the way that C compares numbers, it cannot distinguish differences between bignums (especially bigints) that are too large to fit in the native platform types. For example, my $x = Math::BigInt->new( "1" x 100 ); my $y = $x + 1; say for uniqnum( $x, $y ); Will print just the value of C<$x>, believing that C<$y> is a numerically- equivalent value. This bug does not affect C, which will correctly observe that the two values stringify to different strings. =head1 SUGGESTED ADDITIONS The following are additions that have been requested, but I have been reluctant to add due to them being very simple to implement in perl # How many elements are true sub true { scalar grep { $_ } @_ } # How many elements are false sub false { scalar grep { !$_ } @_ } =head1 SEE ALSO L, L =head1 COPYRIGHT Copyright (c) 1997-2007 Graham Barr . All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Recent additions and current maintenance by Paul Evans, . =cut 1; FILE578df753/PerlIO/scalar.pm-package PerlIO::scalar; our $VERSION = '0.31'; require XSLoader; XSLoader::load(); 1; __END__ =head1 NAME PerlIO::scalar - in-memory IO, scalar IO =head1 SYNOPSIS my $scalar = ''; ... open my $fh, "<", \$scalar or die; open my $fh, ">", \$scalar or die; open my $fh, ">>", \$scalar or die; or my $scalar = ''; ... open my $fh, "<:scalar", \$scalar or die; open my $fh, ">:scalar", \$scalar or die; open my $fh, ">>:scalar", \$scalar or die; =head1 DESCRIPTION A filehandle is opened but the file operations are performed "in-memory" on a scalar variable. All the normal file operations can be performed on the handle. The scalar is considered a stream of bytes. Currently fileno($fh) returns -1. Attempting to open a read-only scalar for writing will fail, and if warnings are enabled, produce a warning. =head1 IMPLEMENTATION NOTE C only exists to use XSLoader to load C code that provides support for treating a scalar as an "in memory" file. One does not need to explicitly C. =cut FILE44449202/Scalar/Util.pm*# Copyright (c) 1997-2007 Graham Barr . All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # # Maintained since 2013 by Paul Evans package Scalar::Util; use strict; use warnings; require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw( blessed refaddr reftype weaken unweaken isweak dualvar isdual isvstring looks_like_number openhandle readonly set_prototype tainted ); our $VERSION = "1.62"; $VERSION =~ tr/_//d; require List::Util; # List::Util loads the XS List::Util->VERSION( $VERSION ); # Ensure we got the right XS version (RT#100863) # populating @EXPORT_FAIL is done in the XS code sub export_fail { if (grep { /^isvstring$/ } @_ ) { require Carp; Carp::croak("Vstrings are not implemented in this version of perl"); } @_; } # set_prototype has been moved to Sub::Util with a different interface sub set_prototype(&$) { my ( $code, $proto ) = @_; return Sub::Util::set_prototype( $proto, $code ); } 1; __END__ =head1 NAME Scalar::Util - A selection of general-utility scalar subroutines =head1 SYNOPSIS use Scalar::Util qw(blessed dualvar isdual readonly refaddr reftype tainted weaken isweak isvstring looks_like_number set_prototype); # and other useful utils appearing below =head1 DESCRIPTION C contains a selection of subroutines that people have expressed would be nice to have in the perl core, but the usage would not really be high enough to warrant the use of a keyword, and the size would be so small that being individual extensions would be wasteful. By default C does not export any subroutines. =head2 Core Perl C Functions Many functions in this module have served as the inspiration for a new experimental facility in recent versions of Perl. From various development versions, starting at 5.35.7, equivalent functions to many of these utilities are available in the C package. use Scalar::Util qw(blessed); $class = blessed $obj; $class = builtin::blessed $obj; # equivalent For more information, see the documentation on L. =cut =head1 FUNCTIONS FOR REFERENCES The following functions all perform some useful activity on reference values. =head2 blessed my $pkg = blessed( $ref ); If C<$ref> is a blessed reference, the name of the package that it is blessed into is returned. Otherwise C is returned. $scalar = "foo"; $class = blessed $scalar; # undef $ref = []; $class = blessed $ref; # undef $obj = bless [], "Foo"; $class = blessed $obj; # "Foo" Take care when using this function simply as a truth test (such as in C) because the package name C<"0"> is defined yet false. I an equivalent function is available as C. =head2 refaddr my $addr = refaddr( $ref ); If C<$ref> is reference, the internal memory address of the referenced value is returned as a plain integer. Otherwise C is returned. $addr = refaddr "string"; # undef $addr = refaddr \$var; # eg 12345678 $addr = refaddr []; # eg 23456784 $obj = bless {}, "Foo"; $addr = refaddr $obj; # eg 88123488 I an equivalent function is available as C. =head2 reftype my $type = reftype( $ref ); If C<$ref> is a reference, the basic Perl type of the variable referenced is returned as a plain string (such as C or C). Otherwise C is returned. $type = reftype "string"; # undef $type = reftype \$var; # SCALAR $type = reftype []; # ARRAY $obj = bless {}, "Foo"; $type = reftype $obj; # HASH Note that for internal reasons, all precompiled regexps (C) are blessed references; thus C returns the package name string C<"Regexp"> on these but C will return the underlying C structure type of C<"REGEXP"> in all capitals. I an equivalent function is available as C. =head2 weaken weaken( $ref ); The lvalue C<$ref> will be turned into a weak reference. This means that it will not hold a reference count on the object it references. Also, when the reference count on that object reaches zero, the reference will be set to undef. This function mutates the lvalue passed as its argument and returns no value. This is useful for keeping copies of references, but you don't want to prevent the object being DESTROY-ed at its usual time. { my $var; $ref = \$var; weaken($ref); # Make $ref a weak reference } # $ref is now undef Note that if you take a copy of a scalar with a weakened reference, the copy will be a strong reference. my $var; my $foo = \$var; weaken($foo); # Make $foo a weak reference my $bar = $foo; # $bar is now a strong reference This may be less obvious in other situations, such as C, for instance when grepping through a list of weakened references to objects that may have been destroyed already: @object = grep { defined } @object; This will indeed remove all references to destroyed objects, but the remaining references to objects will be strong, causing the remaining objects to never be destroyed because there is now always a strong reference to them in the @object array. I an equivalent function is available as C. =head2 unweaken unweaken( $ref ); I The lvalue C will be turned from a weak reference back into a normal (strong) reference again. This function mutates the lvalue passed as its argument and returns no value. This undoes the action performed by L. This function is slightly neater and more convenient than the otherwise-equivalent code my $tmp = $REF; undef $REF; $REF = $tmp; (because in particular, simply assigning a weak reference back to itself does not work to unweaken it; C<$REF = $REF> does not work). I an equivalent function is available as C. =head2 isweak my $weak = isweak( $ref ); Returns true if C<$ref> is a weak reference. $ref = \$foo; $weak = isweak($ref); # false weaken($ref); $weak = isweak($ref); # true B: Copying a weak reference creates a normal, strong, reference. $copy = $ref; $weak = isweak($copy); # false I an equivalent function is available as C. =head1 OTHER FUNCTIONS =head2 dualvar my $var = dualvar( $num, $string ); Returns a scalar that has the value C<$num> in a numeric context and the value C<$string> in a string context. $foo = dualvar 10, "Hello"; $num = $foo + 2; # 12 $str = $foo . " world"; # Hello world =head2 isdual my $dual = isdual( $var ); I If C<$var> is a scalar that has both numeric and string values, the result is true. $foo = dualvar 86, "Nix"; $dual = isdual($foo); # true Note that a scalar can be made to have both string and numeric content through standard operations: $foo = "10"; $dual = isdual($foo); # false $bar = $foo + 0; $dual = isdual($foo); # true The C<$!> variable is commonly dual-valued, though it is also magical in other ways: $! = 1; $dual = isdual($!); # true print("$!\n"); # "Operation not permitted" B: This function is not as useful as it may seem. Dualvars are not a distinct concept in Perl, but a standard internal construct of all scalar values. Almost any value could be considered as a dualvar by this function through the course of normal operations. =head2 isvstring my $vstring = isvstring( $var ); If C<$var> is a scalar which was coded as a vstring, the result is true. $vs = v49.46.48; $fmt = isvstring($vs) ? "%vd" : "%s"; #true printf($fmt,$vs); =head2 looks_like_number my $isnum = looks_like_number( $var ); Returns true if perl thinks C<$var> is a number. See L. =head2 openhandle my $fh = openhandle( $fh ); Returns C<$fh> itself, if C<$fh> may be used as a filehandle and is open, or if it is a tied handle. Otherwise C is returned. $fh = openhandle(*STDIN); # \*STDIN $fh = openhandle(\*STDIN); # \*STDIN $fh = openhandle(*NOTOPEN); # undef $fh = openhandle("scalar"); # undef =head2 readonly my $ro = readonly( $var ); Returns true if C<$var> is readonly. sub foo { readonly($_[0]) } $readonly = foo($bar); # false $readonly = foo(0); # true =head2 set_prototype my $code = set_prototype( $code, $prototype ); Sets the prototype of the function given by the C<$code> reference, or deletes it if C<$prototype> is C. Returns the C<$code> reference itself. set_prototype \&foo, '$$'; =head2 tainted my $t = tainted( $var ); Return true if C<$var> is tainted. $taint = tainted("constant"); # false $taint = tainted($ENV{PWD}); # true if running under -T =head1 DIAGNOSTICS Module use may give one of the following errors during import. =over =item Vstrings are not implemented in this version of perl The version of perl that you are using does not implement Vstrings, to use L you will need to use a newer release of perl. =back =head1 KNOWN BUGS There is a bug in perl5.6.0 with UV's that are >= 1<<31. This will show up as tests 8 and 9 of dualvar.t failing =head1 SEE ALSO L =head1 COPYRIGHT Copyright (c) 1997-2007 Graham Barr . All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Additionally L and L which are Copyright (c) 1999 Tuomas J. Lukka . All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as perl itself. Copyright (C) 2004, 2008 Matthijs van Duin. All rights reserved. Copyright (C) 2014 cPanel Inc. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut FILEcc37349c/Storable.pm# # Copyright (c) 1995-2001, Raphael Manfredi # Copyright (c) 2002-2014 by the Perl 5 Porters # Copyright (c) 2015-2016 cPanel Inc # Copyright (c) 2017 Reini Urban # # You may redistribute only under the same terms as Perl 5, as specified # in the README file that comes with the distribution. # BEGIN { require XSLoader } require Exporter; package Storable; our @ISA = qw(Exporter); our @EXPORT = qw(store retrieve); our @EXPORT_OK = qw( nstore store_fd nstore_fd fd_retrieve freeze nfreeze thaw dclone retrieve_fd lock_store lock_nstore lock_retrieve file_magic read_magic BLESS_OK TIE_OK FLAGS_COMPAT stack_depth stack_depth_hash ); our ($canonical, $forgive_me); BEGIN { our $VERSION = '3.26'; } our $recursion_limit; our $recursion_limit_hash; $recursion_limit = 512 unless defined $recursion_limit; $recursion_limit_hash = 256 unless defined $recursion_limit_hash; use Carp; BEGIN { if (eval { local $SIG{__DIE__}; local @INC = @INC; pop @INC if $INC[-1] eq '.'; require Log::Agent; 1; }) { Log::Agent->import; } # # Use of Log::Agent is optional. If it hasn't imported these subs then # provide a fallback implementation. # unless ($Storable::{logcroak} && *{$Storable::{logcroak}}{CODE}) { *logcroak = \&Carp::croak; } else { # Log::Agent's logcroak always adds a newline to the error it is # given. This breaks refs getting thrown. We can just discard what # it throws (but keep whatever logging it does) and throw the original # args. no warnings 'redefine'; my $logcroak = \&logcroak; *logcroak = sub { my @args = @_; eval { &$logcroak }; Carp::croak(@args); }; } unless ($Storable::{logcarp} && *{$Storable::{logcarp}}{CODE}) { *logcarp = \&Carp::carp; } } # # They might miss :flock in Fcntl # BEGIN { if (eval { require Fcntl; 1 } && exists $Fcntl::EXPORT_TAGS{'flock'}) { Fcntl->import(':flock'); } else { eval q{ sub LOCK_SH () { 1 } sub LOCK_EX () { 2 } }; } } sub CLONE { # clone context under threads Storable::init_perinterp(); } sub BLESS_OK () { 2 } sub TIE_OK () { 4 } sub FLAGS_COMPAT () { BLESS_OK | TIE_OK } # By default restricted hashes are downgraded on earlier perls. $Storable::flags = FLAGS_COMPAT; $Storable::downgrade_restricted = 1; $Storable::accept_future_minor = 1; BEGIN { XSLoader::load('Storable') }; # # Determine whether locking is possible, but only when needed. # sub show_file_magic { print <4 byte >0 (net-order %d) >>4 byte &01 (network-ordered) >>4 byte =3 (major 1) >>4 byte =2 (major 1) 0 string pst0 perl Storable(v0.7) data >4 byte >0 >>4 byte &01 (network-ordered) >>4 byte =5 (major 2) >>4 byte =4 (major 2) >>5 byte >0 (minor %d) EOM } sub file_magic { require IO::File; my $file = shift; my $fh = IO::File->new; open($fh, "<", $file) || die "Can't open '$file': $!"; binmode($fh); defined(sysread($fh, my $buf, 32)) || die "Can't read from '$file': $!"; close($fh); $file = "./$file" unless $file; # ensure TRUE value return read_magic($buf, $file); } sub read_magic { my($buf, $file) = @_; my %info; my $buflen = length($buf); my $magic; if ($buf =~ s/^(pst0|perl-store)//) { $magic = $1; $info{file} = $file || 1; } else { return undef if $file; $magic = ""; } return undef unless length($buf); my $net_order; if ($magic eq "perl-store" && ord(substr($buf, 0, 1)) > 1) { $info{version} = -1; $net_order = 0; } else { $buf =~ s/(.)//s; my $major = (ord $1) >> 1; return undef if $major > 4; # sanity (assuming we never go that high) $info{major} = $major; $net_order = (ord $1) & 0x01; if ($major > 1) { return undef unless $buf =~ s/(.)//s; my $minor = ord $1; $info{minor} = $minor; $info{version} = "$major.$minor"; $info{version_nv} = sprintf "%d.%03d", $major, $minor; } else { $info{version} = $major; } } $info{version_nv} ||= $info{version}; $info{netorder} = $net_order; unless ($net_order) { return undef unless $buf =~ s/(.)//s; my $len = ord $1; return undef unless length($buf) >= $len; return undef unless $len == 4 || $len == 8; # sanity @info{qw(byteorder intsize longsize ptrsize)} = unpack "a${len}CCC", $buf; (substr $buf, 0, $len + 3) = ''; if ($info{version_nv} >= 2.002) { return undef unless $buf =~ s/(.)//s; $info{nvsize} = ord $1; } } $info{hdrsize} = $buflen - length($buf); return \%info; } sub BIN_VERSION_NV { sprintf "%d.%03d", BIN_MAJOR(), BIN_MINOR(); } sub BIN_WRITE_VERSION_NV { sprintf "%d.%03d", BIN_MAJOR(), BIN_WRITE_MINOR(); } # # store # # Store target object hierarchy, identified by a reference to its root. # The stored object tree may later be retrieved to memory via retrieve. # Returns undef if an I/O error occurred, in which case the file is # removed. # sub store { return _store(\&pstore, @_, 0); } # # nstore # # Same as store, but in network order. # sub nstore { return _store(\&net_pstore, @_, 0); } # # lock_store # # Same as store, but flock the file first (advisory locking). # sub lock_store { return _store(\&pstore, @_, 1); } # # lock_nstore # # Same as nstore, but flock the file first (advisory locking). # sub lock_nstore { return _store(\&net_pstore, @_, 1); } # Internal store to file routine sub _store { my $xsptr = shift; my $self = shift; my ($file, $use_locking) = @_; logcroak "not a reference" unless ref($self); logcroak "wrong argument number" unless @_ == 2; # No @foo in arglist local *FILE; if ($use_locking) { open(FILE, ">>", $file) || logcroak "can't write into $file: $!"; unless (CAN_FLOCK) { logcarp "Storable::lock_store: fcntl/flock emulation broken on $^O"; return undef; } flock(FILE, LOCK_EX) || logcroak "can't get exclusive lock on $file: $!"; truncate FILE, 0; # Unlocking will happen when FILE is closed } else { open(FILE, ">", $file) || logcroak "can't create $file: $!"; } binmode FILE; # Archaic systems... my $da = $@; # Don't mess if called from exception handler my $ret; # Call C routine nstore or pstore, depending on network order eval { $ret = &$xsptr(*FILE, $self) }; # close will return true on success, so the or short-circuits, the () # expression is true, and for that case the block will only be entered # if $@ is true (ie eval failed) # if close fails, it returns false, $ret is altered, *that* is (also) # false, so the () expression is false, !() is true, and the block is # entered. if (!(close(FILE) or undef $ret) || $@) { unlink($file) or warn "Can't unlink $file: $!\n"; } if ($@) { $@ =~ s/\.?\n$/,/ unless ref $@; logcroak $@; } $@ = $da; return $ret; } # # store_fd # # Same as store, but perform on an already opened file descriptor instead. # Returns undef if an I/O error occurred. # sub store_fd { return _store_fd(\&pstore, @_); } # # nstore_fd # # Same as store_fd, but in network order. # sub nstore_fd { my ($self, $file) = @_; return _store_fd(\&net_pstore, @_); } # Internal store routine on opened file descriptor sub _store_fd { my $xsptr = shift; my $self = shift; my ($file) = @_; logcroak "not a reference" unless ref($self); logcroak "too many arguments" unless @_ == 1; # No @foo in arglist my $fd = fileno($file); logcroak "not a valid file descriptor" unless defined $fd; my $da = $@; # Don't mess if called from exception handler my $ret; # Call C routine nstore or pstore, depending on network order eval { $ret = &$xsptr($file, $self) }; logcroak $@ if $@ =~ s/\.?\n$/,/; local $\; print $file ''; # Autoflush the file if wanted $@ = $da; return $ret; } # # freeze # # Store object and its hierarchy in memory and return a scalar # containing the result. # sub freeze { _freeze(\&mstore, @_); } # # nfreeze # # Same as freeze but in network order. # sub nfreeze { _freeze(\&net_mstore, @_); } # Internal freeze routine sub _freeze { my $xsptr = shift; my $self = shift; logcroak "not a reference" unless ref($self); logcroak "too many arguments" unless @_ == 0; # No @foo in arglist my $da = $@; # Don't mess if called from exception handler my $ret; # Call C routine mstore or net_mstore, depending on network order eval { $ret = &$xsptr($self) }; if ($@) { $@ =~ s/\.?\n$/,/ unless ref $@; logcroak $@; } $@ = $da; return $ret ? $ret : undef; } # # retrieve # # Retrieve object hierarchy from disk, returning a reference to the root # object of that tree. # # retrieve(file, flags) # flags include by default BLESS_OK=2 | TIE_OK=4 # with flags=0 or the global $Storable::flags set to 0, no resulting object # will be blessed nor tied. # sub retrieve { _retrieve(shift, 0, @_); } # # lock_retrieve # # Same as retrieve, but with advisory locking. # sub lock_retrieve { _retrieve(shift, 1, @_); } # Internal retrieve routine sub _retrieve { my ($file, $use_locking, $flags) = @_; $flags = $Storable::flags unless defined $flags; my $FILE; open($FILE, "<", $file) || logcroak "can't open $file: $!"; binmode $FILE; # Archaic systems... my $self; my $da = $@; # Could be from exception handler if ($use_locking) { unless (CAN_FLOCK) { logcarp "Storable::lock_store: fcntl/flock emulation broken on $^O"; return undef; } flock($FILE, LOCK_SH) || logcroak "can't get shared lock on $file: $!"; # Unlocking will happen when FILE is closed } eval { $self = pretrieve($FILE, $flags) }; # Call C routine close($FILE); if ($@) { $@ =~ s/\.?\n$/,/ unless ref $@; logcroak $@; } $@ = $da; return $self; } # # fd_retrieve # # Same as retrieve, but perform from an already opened file descriptor instead. # sub fd_retrieve { my ($file, $flags) = @_; $flags = $Storable::flags unless defined $flags; my $fd = fileno($file); logcroak "not a valid file descriptor" unless defined $fd; my $self; my $da = $@; # Could be from exception handler eval { $self = pretrieve($file, $flags) }; # Call C routine if ($@) { $@ =~ s/\.?\n$/,/ unless ref $@; logcroak $@; } $@ = $da; return $self; } sub retrieve_fd { &fd_retrieve } # Backward compatibility # # thaw # # Recreate objects in memory from an existing frozen image created # by freeze. If the frozen image passed is undef, return undef. # # thaw(frozen_obj, flags) # flags include by default BLESS_OK=2 | TIE_OK=4 # with flags=0 or the global $Storable::flags set to 0, no resulting object # will be blessed nor tied. # sub thaw { my ($frozen, $flags) = @_; $flags = $Storable::flags unless defined $flags; return undef unless defined $frozen; my $self; my $da = $@; # Could be from exception handler eval { $self = mretrieve($frozen, $flags) };# Call C routine if ($@) { $@ =~ s/\.?\n$/,/ unless ref $@; logcroak $@; } $@ = $da; return $self; } # # _make_re($re, $flags) # # Internal function used to thaw a regular expression. # my $re_flags; BEGIN { if ($] < 5.010) { $re_flags = qr/\A[imsx]*\z/; } elsif ($] < 5.014) { $re_flags = qr/\A[msixp]*\z/; } elsif ($] < 5.022) { $re_flags = qr/\A[msixpdual]*\z/; } else { $re_flags = qr/\A[msixpdualn]*\z/; } } sub _make_re { my ($re, $flags) = @_; $flags =~ $re_flags or die "regexp flags invalid"; my $qr = eval "qr/\$re/$flags"; die $@ if $@; $qr; } if ($] < 5.012) { eval <<'EOS' sub _regexp_pattern { my $re = "" . shift; $re =~ /\A\(\?([xism]*)(?:-[xism]*)?:(.*)\)\z/s or die "Cannot parse regexp /$re/"; return ($2, $1); } 1 EOS or die "Cannot define _regexp_pattern: $@"; } 1; __END__ =head1 NAME Storable - persistence for Perl data structures =head1 SYNOPSIS use Storable; store \%table, 'file'; $hashref = retrieve('file'); use Storable qw(nstore store_fd nstore_fd freeze thaw dclone); # Network order nstore \%table, 'file'; $hashref = retrieve('file'); # There is NO nretrieve() # Storing to and retrieving from an already opened file store_fd \@array, \*STDOUT; nstore_fd \%table, \*STDOUT; $aryref = fd_retrieve(\*SOCKET); $hashref = fd_retrieve(\*SOCKET); # Serializing to memory $serialized = freeze \%table; %table_clone = %{ thaw($serialized) }; # Deep (recursive) cloning $cloneref = dclone($ref); # Advisory locking use Storable qw(lock_store lock_nstore lock_retrieve) lock_store \%table, 'file'; lock_nstore \%table, 'file'; $hashref = lock_retrieve('file'); =head1 DESCRIPTION The Storable package brings persistence to your Perl data structures containing SCALAR, ARRAY, HASH or REF objects, i.e. anything that can be conveniently stored to disk and retrieved at a later time. It can be used in the regular procedural way by calling C with a reference to the object to be stored, along with the file name where the image should be written. The routine returns C for I/O problems or other internal error, a true value otherwise. Serious errors are propagated as a C exception. To retrieve data stored to disk, use C with a file name. The objects stored into that file are recreated into memory for you, and a I to the root object is returned. In case an I/O error occurs while reading, C is returned instead. Other serious errors are propagated via C. Since storage is performed recursively, you might want to stuff references to objects that share a lot of common data into a single array or hash table, and then store that object. That way, when you retrieve back the whole thing, the objects will continue to share what they originally shared. At the cost of a slight header overhead, you may store to an already opened file descriptor using the C routine, and retrieve from a file via C. Those names aren't imported by default, so you will have to do that explicitly if you need those routines. The file descriptor you supply must be already opened, for read if you're going to retrieve and for write if you wish to store. store_fd(\%table, *STDOUT) || die "can't store to stdout\n"; $hashref = fd_retrieve(*STDIN); You can also store data in network order to allow easy sharing across multiple platforms, or when storing on a socket known to be remotely connected. The routines to call have an initial C prefix for I, as in C and C. At retrieval time, your data will be correctly restored so you don't have to know whether you're restoring from native or network ordered data. Double values are stored stringified to ensure portability as well, at the slight risk of loosing some precision in the last decimals. When using C, objects are retrieved in sequence, one object (i.e. one recursive tree) per associated C. If you're more from the object-oriented camp, you can inherit from Storable and directly store your objects by invoking C as a method. The fact that the root of the to-be-stored tree is a blessed reference (i.e. an object) is special-cased so that the retrieve does not provide a reference to that object but rather the blessed object reference itself. (Otherwise, you'd get a reference to that blessed object). =head1 MEMORY STORE The Storable engine can also store data into a Perl scalar instead, to later retrieve them. This is mainly used to freeze a complex structure in some safe compact memory place (where it can possibly be sent to another process via some IPC, since freezing the structure also serializes it in effect). Later on, and maybe somewhere else, you can thaw the Perl scalar out and recreate the original complex structure in memory. Surprisingly, the routines to be called are named C and C. If you wish to send out the frozen scalar to another machine, use C instead to get a portable image. Note that freezing an object structure and immediately thawing it actually achieves a deep cloning of that structure: dclone(.) = thaw(freeze(.)) Storable provides you with a C interface which does not create that intermediary scalar but instead freezes the structure in some internal memory space and then immediately thaws it out. =head1 ADVISORY LOCKING The C and C routine are equivalent to C and C, except that they get an exclusive lock on the file before writing. Likewise, C does the same as C, but also gets a shared lock on the file before reading. As with any advisory locking scheme, the protection only works if you systematically use C and C. If one side of your application uses C whilst the other uses C, you will get no protection at all. The internal advisory locking is implemented using Perl's flock() routine. If your system does not support any form of flock(), or if you share your files across NFS, you might wish to use other forms of locking by using modules such as LockFile::Simple which lock a file using a filesystem entry, instead of locking the file descriptor. =head1 SPEED The heart of Storable is written in C for decent speed. Extra low-level optimizations have been made when manipulating perl internals, to sacrifice encapsulation for the benefit of greater speed. =head1 CANONICAL REPRESENTATION Normally, Storable stores elements of hashes in the order they are stored internally by Perl, i.e. pseudo-randomly. If you set C<$Storable::canonical> to some C value, Storable will store hashes with the elements sorted by their key. This allows you to compare data structures by comparing their frozen representations (or even the compressed frozen representations), which can be useful for creating lookup tables for complicated queries. Canonical order does not imply network order; those are two orthogonal settings. =head1 CODE REFERENCES Since Storable version 2.05, CODE references may be serialized with the help of L. To enable this feature, set C<$Storable::Deparse> to a true value. To enable deserialization, C<$Storable::Eval> should be set to a true value. Be aware that deserialization is done through C, which is dangerous if the Storable file contains malicious data. You can set C<$Storable::Eval> to a subroutine reference which would be used instead of C. See below for an example using a L compartment for deserialization of CODE references. If C<$Storable::Deparse> and/or C<$Storable::Eval> are set to false values, then the value of C<$Storable::forgive_me> (see below) is respected while serializing and deserializing. =head1 FORWARD COMPATIBILITY This release of Storable can be used on a newer version of Perl to serialize data which is not supported by earlier Perls. By default, Storable will attempt to do the right thing, by Cing if it encounters data that it cannot deserialize. However, the defaults can be changed as follows: =over 4 =item utf8 data Perl 5.6 added support for Unicode characters with code points > 255, and Perl 5.8 has full support for Unicode characters in hash keys. Perl internally encodes strings with these characters using utf8, and Storable serializes them as utf8. By default, if an older version of Perl encounters a utf8 value it cannot represent, it will C. To change this behaviour so that Storable deserializes utf8 encoded values as the string of bytes (effectively dropping the I flag) set C<$Storable::drop_utf8> to some C value. This is a form of data loss, because with C<$drop_utf8> true, it becomes impossible to tell whether the original data was the Unicode string, or a series of bytes that happen to be valid utf8. =item restricted hashes Perl 5.8 adds support for restricted hashes, which have keys restricted to a given set, and can have values locked to be read only. By default, when Storable encounters a restricted hash on a perl that doesn't support them, it will deserialize it as a normal hash, silently discarding any placeholder keys and leaving the keys and all values unlocked. To make Storable C instead, set C<$Storable::downgrade_restricted> to a C value. To restore the default set it back to some C value. The cperl PERL_PERTURB_KEYS_TOP hash strategy has a known problem with restricted hashes. =item huge objects On 64bit systems some data structures may exceed the 2G (i.e. I32_MAX) limit. On 32bit systems also strings between I32 and U32 (2G-4G). Since Storable 3.00 (not in perl5 core) we are able to store and retrieve these objects, even if perl5 itself is not able to handle them. These are strings longer then 4G, arrays with more then 2G elements and hashes with more then 2G elements. cperl forbids hashes with more than 2G elements, but this fail in cperl then. perl5 itself at least until 5.26 allows it, but cannot iterate over them. Note that creating those objects might cause out of memory exceptions by the operating system before perl has a chance to abort. =item files from future versions of Storable Earlier versions of Storable would immediately croak if they encountered a file with a higher internal version number than the reading Storable knew about. Internal version numbers are increased each time new data types (such as restricted hashes) are added to the vocabulary of the file format. This meant that a newer Storable module had no way of writing a file readable by an older Storable, even if the writer didn't store newer data types. This version of Storable will defer croaking until it encounters a data type in the file that it does not recognize. This means that it will continue to read files generated by newer Storable modules which are careful in what they write out, making it easier to upgrade Storable modules in a mixed environment. The old behaviour of immediate croaking can be re-instated by setting C<$Storable::accept_future_minor> to some C value. =back All these variables have no effect on a newer Perl which supports the relevant feature. =head1 ERROR REPORTING Storable uses the "exception" paradigm, in that it does not try to workaround failures: if something bad happens, an exception is generated from the caller's perspective (see L and C). Use eval {} to trap those exceptions. When Storable croaks, it tries to report the error via the C routine from the C package, if it is available. Normal errors are reported by having store() or retrieve() return C. Such errors are usually I/O errors (or truncated stream errors at retrieval). When Storable throws the "Max. recursion depth with nested structures exceeded" error we are already out of stack space. Unfortunately on some earlier perl versions cleaning up a recursive data structure recurses into the free calls, which will lead to stack overflows in the cleanup. This data structure is not properly cleaned up then, it will only be destroyed during global destruction. =head1 WIZARDS ONLY =head2 Hooks Any class may define hooks that will be called during the serialization and deserialization process on objects that are instances of that class. Those hooks can redefine the way serialization is performed (and therefore, how the symmetrical deserialization should be conducted). Since we said earlier: dclone(.) = thaw(freeze(.)) everything we say about hooks should also hold for deep cloning. However, hooks get to know whether the operation is a mere serialization, or a cloning. Therefore, when serializing hooks are involved, dclone(.) <> thaw(freeze(.)) Well, you could keep them in sync, but there's no guarantee it will always hold on classes somebody else wrote. Besides, there is little to gain in doing so: a serializing hook could keep only one attribute of an object, which is probably not what should happen during a deep cloning of that same object. Here is the hooking interface: =over 4 =item C I, I The serializing hook, called on the object during serialization. It can be inherited, or defined in the class itself, like any other method. Arguments: I is the object to serialize, I is a flag indicating whether we're in a dclone() or a regular serialization via store() or freeze(). Returned value: A LIST C<($serialized, $ref1, $ref2, ...)> where $serialized is the serialized form to be used, and the optional $ref1, $ref2, etc... are extra references that you wish to let the Storable engine serialize. At deserialization time, you will be given back the same LIST, but all the extra references will be pointing into the deserialized structure. The B the hook is hit in a serialization flow, you may have it return an empty list. That will signal the Storable engine to further discard that hook for this class and to therefore revert to the default serialization of the underlying Perl data. The hook will again be normally processed in the next serialization. Unless you know better, serializing hook should always say: sub STORABLE_freeze { my ($self, $cloning) = @_; return if $cloning; # Regular default serialization .... } in order to keep reasonable dclone() semantics. =item C I, I, I, ... The deserializing hook called on the object during deserialization. But wait: if we're deserializing, there's no object yet... right? Wrong: the Storable engine creates an empty one for you. If you know Eiffel, you can view C as an alternate creation routine. This means the hook can be inherited like any other method, and that I is your blessed reference for this particular instance. The other arguments should look familiar if you know C: I is true when we're part of a deep clone operation, I is the serialized string you returned to the engine in C, and there may be an optional list of references, in the same order you gave them at serialization time, pointing to the deserialized objects (which have been processed courtesy of the Storable engine). When the Storable engine does not find any C hook routine, it tries to load the class by requiring the package dynamically (using the blessed package name), and then re-attempts the lookup. If at that time the hook cannot be located, the engine croaks. Note that this mechanism will fail if you define several classes in the same file, but L warned you. It is up to you to use this information to populate I the way you want. Returned value: none. =item C I, I, I While C and C are useful for classes where each instance is independent, this mechanism has difficulty (or is incompatible) with objects that exist as common process-level or system-level resources, such as singleton objects, database pools, caches or memoized objects. The alternative C method provides a solution for these shared objects. Instead of C --E C, you implement C --E C instead. Arguments: I is the class we are attaching to, I is a flag indicating whether we're in a dclone() or a regular de-serialization via thaw(), and I is the stored string for the resource object. Because these resource objects are considered to be owned by the entire process/system, and not the "property" of whatever is being serialized, no references underneath the object should be included in the serialized string. Thus, in any class that implements C, the C method cannot return any references, and C will throw an error if C tries to return references. All information required to "attach" back to the shared resource object B be contained B in the C return string. Otherwise, C behaves as normal for C classes. Because C is passed the class (rather than an object), it also returns the object directly, rather than modifying the passed object. Returned value: object of type C =back =head2 Predicates Predicates are not exportable. They must be called by explicitly prefixing them with the Storable package name. =over 4 =item C The C predicate will tell you whether network order was used in the last store or retrieve operation. If you don't know how to use this, just forget about it. =item C Returns true if within a store operation (via STORABLE_freeze hook). =item C Returns true if within a retrieve operation (via STORABLE_thaw hook). =back =head2 Recursion With hooks comes the ability to recurse back to the Storable engine. Indeed, hooks are regular Perl code, and Storable is convenient when it comes to serializing and deserializing things, so why not use it to handle the serialization string? There are a few things you need to know, however: =over 4 =item * From Storable 3.05 to 3.13 we probed for the stack recursion limit for references, arrays and hashes to a maximal depth of ~1200-35000, otherwise we might fall into a stack-overflow. On JSON::XS this limit is 512 btw. With references not immediately referencing each other there's no such limit yet, so you might fall into such a stack-overflow segfault. This probing and the checks we performed have some limitations: =over =item * the stack size at build time might be different at run time, eg. the stack size may have been modified with ulimit(1). If it's larger at run time Storable may fail the freeze() or thaw() unnecessarily. If it's larger at build time Storable may segmentation fault when processing a deep structure at run time. =item * the stack size might be different in a thread. =item * array and hash recursion limits are checked separately against the same recursion depth, a frozen structure with a large sequence of nested arrays within many nested hashes may exhaust the processor stack without triggering Storable's recursion protection. =back So these now have simple defaults rather than probing at build-time. You can control the maximum array and hash recursion depths by modifying C<$Storable::recursion_limit> and C<$Storable::recursion_limit_hash> respectively. Either can be set to C<-1> to prevent any depth checks, though this isn't recommended. If you want to test what the limits are, the F tool is included in the C distribution. =item * You can create endless loops if the things you serialize via freeze() (for instance) point back to the object we're trying to serialize in the hook. =item * Shared references among objects will not stay shared: if we're serializing the list of object [A, C] where both object A and C refer to the SAME object B, and if there is a serializing hook in A that says freeze(B), then when deserializing, we'll get [A', C'] where A' refers to B', but C' refers to D, a deep clone of B'. The topology was not preserved. =item * The maximal stack recursion limit for your system is returned by C and C. The hash limit is usually half the size of the array and ref limit, as the Perl hash API is not optimal. =back That's why C lets you provide a list of references to serialize. The engine guarantees that those will be serialized in the same context as the other objects, and therefore that shared objects will stay shared. In the above [A, C] example, the C hook could return: ("something", $self->{B}) and the B part would be serialized by the engine. In C, you would get back the reference to the B' object, deserialized for you. Therefore, recursion should normally be avoided, but is nonetheless supported. =head2 Deep Cloning There is a Clone module available on CPAN which implements deep cloning natively, i.e. without freezing to memory and thawing the result. It is aimed to replace Storable's dclone() some day. However, it does not currently support Storable hooks to redefine the way deep cloning is performed. =head1 Storable magic Yes, there's a lot of that :-) But more precisely, in UNIX systems there's a utility called C, which recognizes data files based on their contents (usually their first few bytes). For this to work, a certain file called F needs to taught about the I of the data. Where that configuration file lives depends on the UNIX flavour; often it's something like F or F. Your system administrator needs to do the updating of the F file. The necessary signature information is output to STDOUT by invoking Storable::show_file_magic(). Note that the GNU implementation of the C utility, version 3.38 or later, is expected to contain support for recognising Storable files out-of-the-box, in addition to other kinds of Perl files. You can also use the following functions to extract the file header information from Storable images: =over =item $info = Storable::file_magic( $filename ) If the given file is a Storable image return a hash describing it. If the file is readable, but not a Storable image return C. If the file does not exist or is unreadable then croak. The hash returned has the following elements: =over =item C This returns the file format version. It is a string like "2.7". Note that this version number is not the same as the version number of the Storable module itself. For instance Storable v0.7 create files in format v2.0 and Storable v2.15 create files in format v2.7. The file format version number only increment when additional features that would confuse older versions of the module are added. Files older than v2.0 will have the one of the version numbers "-1", "0" or "1". No minor number was used at that time. =item C This returns the file format version as number. It is a string like "2.007". This value is suitable for numeric comparisons. The constant function C returns a comparable number that represents the highest file version number that this version of Storable fully supports (but see discussion of C<$Storable::accept_future_minor> above). The constant C function returns what file version is written and might be less than C in some configurations. =item C, C This also returns the file format version. If the version is "2.7" then major would be 2 and minor would be 7. The minor element is missing for when major is less than 2. =item C The is the number of bytes that the Storable header occupies. =item C This is TRUE if the image store data in network order. This means that it was created with nstore() or similar. =item C This is only present when C is FALSE. It is the $Config{byteorder} string of the perl that created this image. It is a string like "1234" (32 bit little endian) or "87654321" (64 bit big endian). This must match the current perl for the image to be readable by Storable. =item C, C, C, C These are only present when C is FALSE. These are the sizes of various C datatypes of the perl that created this image. These must match the current perl for the image to be readable by Storable. The C element is only present for file format v2.2 and higher. =item C The name of the file. =back =item $info = Storable::read_magic( $buffer ) =item $info = Storable::read_magic( $buffer, $must_be_file ) The $buffer should be a Storable image or the first few bytes of it. If $buffer starts with a Storable header, then a hash describing the image is returned, otherwise C is returned. The hash has the same structure as the one returned by Storable::file_magic(). The C element is true if the image is a file image. If the $must_be_file argument is provided and is TRUE, then return C unless the image looks like it belongs to a file dump. The maximum size of a Storable header is currently 21 bytes. If the provided $buffer is only the first part of a Storable image it should at least be this long to ensure that read_magic() will recognize it as such. =back =head1 EXAMPLES Here are some code samples showing a possible usage of Storable: use Storable qw(store retrieve freeze thaw dclone); %color = ('Blue' => 0.1, 'Red' => 0.8, 'Black' => 0, 'White' => 1); store(\%color, 'mycolors') or die "Can't store %a in mycolors!\n"; $colref = retrieve('mycolors'); die "Unable to retrieve from mycolors!\n" unless defined $colref; printf "Blue is still %lf\n", $colref->{'Blue'}; $colref2 = dclone(\%color); $str = freeze(\%color); printf "Serialization of %%color is %d bytes long.\n", length($str); $colref3 = thaw($str); which prints (on my machine): Blue is still 0.100000 Serialization of %color is 102 bytes long. Serialization of CODE references and deserialization in a safe compartment: =for example begin use Storable qw(freeze thaw); use Safe; use strict; my $safe = new Safe; # because of opcodes used in "use strict": $safe->permit(qw(:default require)); local $Storable::Deparse = 1; local $Storable::Eval = sub { $safe->reval($_[0]) }; my $serialized = freeze(sub { 42 }); my $code = thaw($serialized); $code->() == 42; =for example end =for example_testing is( $code->(), 42 ); =head1 SECURITY WARNING B Some features of Storable can lead to security vulnerabilities if you accept Storable documents from untrusted sources with the default flags. Most obviously, the optional (off by default) CODE reference serialization feature allows transfer of code to the deserializing process. Furthermore, any serialized object will cause Storable to helpfully load the module corresponding to the class of the object in the deserializing module. For manipulated module names, this can load almost arbitrary code. Finally, the deserialized object's destructors will be invoked when the objects get destroyed in the deserializing process. Maliciously crafted Storable documents may put such objects in the value of a hash key that is overridden by another key/value pair in the same hash, thus causing immediate destructor execution. To disable blessing objects while thawing/retrieving remove the flag C = 2 from C<$Storable::flags> or set the 2nd argument for thaw/retrieve to 0. To disable tieing data while thawing/retrieving remove the flag C = 4 from C<$Storable::flags> or set the 2nd argument for thaw/retrieve to 0. With the default setting of C<$Storable::flags> = 6, creating or destroying random objects, even renamed objects can be controlled by an attacker. See CVE-2015-1592 and its metasploit module. If your application requires accepting data from untrusted sources, you are best off with a less powerful and more-likely safe serialization format and implementation. If your data is sufficiently simple, L, L or L are the best choices and offer maximum interoperability, but note that Sereal is L. =head1 WARNING If you're using references as keys within your hash tables, you're bound to be disappointed when retrieving your data. Indeed, Perl stringifies references used as hash table keys. If you later wish to access the items via another reference stringification (i.e. using the same reference that was used for the key originally to record the value into the hash table), it will work because both references stringify to the same string. It won't work across a sequence of C and C operations, however, because the addresses in the retrieved objects, which are part of the stringified references, will probably differ from the original addresses. The topology of your structure is preserved, but not hidden semantics like those. On platforms where it matters, be sure to call C on the descriptors that you pass to Storable functions. Storing data canonically that contains large hashes can be significantly slower than storing the same data normally, as temporary arrays to hold the keys for each hash have to be allocated, populated, sorted and freed. Some tests have shown a halving of the speed of storing -- the exact penalty will depend on the complexity of your data. There is no slowdown on retrieval. =head1 REGULAR EXPRESSIONS Storable now has experimental support for storing regular expressions, but there are significant limitations: =over =item * perl 5.8 or later is required. =item * regular expressions with code blocks, ie C or C will throw an exception when thawed. =item * regular expression syntax and flags have changed over the history of perl, so a regular expression that you freeze in one version of perl may fail to thaw or behave differently in another version of perl. =item * depending on the version of perl, regular expressions can change in behaviour depending on the context, but later perls will bake that behaviour into the regexp. =back Storable will throw an exception if a frozen regular expression cannot be thawed. =head1 BUGS You can't store GLOB, FORMLINE, etc.... If you can define semantics for those operations, feel free to enhance Storable so that it can deal with them. The store functions will C if they run into such references unless you set C<$Storable::forgive_me> to some C value. In that case, the fatal message is converted to a warning and some meaningless string is stored instead. Setting C<$Storable::canonical> may not yield frozen strings that compare equal due to possible stringification of numbers. When the string version of a scalar exists, it is the form stored; therefore, if you happen to use your numbers as strings between two freezing operations on the same data structures, you will get different results. When storing doubles in network order, their value is stored as text. However, you should also not expect non-numeric floating-point values such as infinity and "not a number" to pass successfully through a nstore()/retrieve() pair. As Storable neither knows nor cares about character sets (although it does know that characters may be more than eight bits wide), any difference in the interpretation of character codes between a host and a target system is your problem. In particular, if host and target use different code points to represent the characters used in the text representation of floating-point numbers, you will not be able be able to exchange floating-point data, even with nstore(). C is a blunt tool. There is no facility either to return B strings as utf8 sequences, or to attempt to convert utf8 data back to 8 bit and C if the conversion fails. Prior to Storable 2.01, no distinction was made between signed and unsigned integers on storing. By default Storable prefers to store a scalars string representation (if it has one) so this would only cause problems when storing large unsigned integers that had never been converted to string or floating point. In other words values that had been generated by integer operations such as logic ops and then not used in any string or arithmetic context before storing. =head2 64 bit data in perl 5.6.0 and 5.6.1 This section only applies to you if you have existing data written out by Storable 2.02 or earlier on perl 5.6.0 or 5.6.1 on Unix or Linux which has been configured with 64 bit integer support (not the default) If you got a precompiled perl, rather than running Configure to build your own perl from source, then it almost certainly does not affect you, and you can stop reading now (unless you're curious). If you're using perl on Windows it does not affect you. Storable writes a file header which contains the sizes of various C language types for the C compiler that built Storable (when not writing in network order), and will refuse to load files written by a Storable not on the same (or compatible) architecture. This check and a check on machine byteorder is needed because the size of various fields in the file are given by the sizes of the C language types, and so files written on different architectures are incompatible. This is done for increased speed. (When writing in network order, all fields are written out as standard lengths, which allows full interworking, but takes longer to read and write) Perl 5.6.x introduced the ability to optional configure the perl interpreter to use C's C type to allow scalars to store 64 bit integers on 32 bit systems. However, due to the way the Perl configuration system generated the C configuration files on non-Windows platforms, and the way Storable generates its header, nothing in the Storable file header reflected whether the perl writing was using 32 or 64 bit integers, despite the fact that Storable was storing some data differently in the file. Hence Storable running on perl with 64 bit integers will read the header from a file written by a 32 bit perl, not realise that the data is actually in a subtly incompatible format, and then go horribly wrong (possibly crashing) if it encountered a stored integer. This is a design failure. Storable has now been changed to write out and read in a file header with information about the size of integers. It's impossible to detect whether an old file being read in was written with 32 or 64 bit integers (they have the same header) so it's impossible to automatically switch to a correct backwards compatibility mode. Hence this Storable defaults to the new, correct behaviour. What this means is that if you have data written by Storable 1.x running on perl 5.6.0 or 5.6.1 configured with 64 bit integers on Unix or Linux then by default this Storable will refuse to read it, giving the error I. If you have such data then you should set C<$Storable::interwork_56_64bit> to a true value to make this Storable read and write files with the old header. You should also migrate your data, or any older perl you are communicating with, to this current version of Storable. If you don't have data written with specific configuration of perl described above, then you do not and should not do anything. Don't set the flag - not only will Storable on an identically configured perl refuse to load them, but Storable a differently configured perl will load them believing them to be correct for it, and then may well fail or crash part way through reading them. =head1 CREDITS Thank you to (in chronological order): Jarkko Hietaniemi Ulrich Pfeifer Benjamin A. Holzman Andrew Ford Gisle Aas Jeff Gresham Murray Nesbitt Marc Lehmann Justin Banks Jarkko Hietaniemi (AGAIN, as perl 5.7.0 Pumpkin!) Salvador Ortiz Garcia Dominic Dunlop Erik Haugan Benjamin A. Holzman Reini Urban Todd Rinaldo Aaron Crane for their bug reports, suggestions and contributions. Benjamin Holzman contributed the tied variable support, Andrew Ford contributed the canonical order for hashes, and Gisle Aas fixed a few misunderstandings of mine regarding the perl internals, and optimized the emission of "tags" in the output streams by simply counting the objects instead of tagging them (leading to a binary incompatibility for the Storable image starting at version 0.6--older images are, of course, still properly understood). Murray Nesbitt made Storable thread-safe. Marc Lehmann added overloading and references to tied items support. Benjamin Holzman added a performance improvement for overloaded classes; thanks to Grant Street Group for footing the bill. Reini Urban took over maintenance from p5p, and added security fixes and huge object support. =head1 AUTHOR Storable was written by Raphael Manfredi FRaphael_Manfredi@pobox.comE> Maintenance is now done by cperl L Please e-mail us with problems, bug fixes, comments and complaints, although if you have compliments you should send them to Raphael. Please don't e-mail Raphael with problems, as he no longer works on Storable, and your message will be delayed while he forwards it to us. =head1 SEE ALSO L. =cut FILE0a965e50/Time/HiRes.pmdYpackage Time::HiRes; { use 5.006; } use strict; require Exporter; use XSLoader (); our @ISA = qw(Exporter); our @EXPORT = qw( ); # More or less this same list is in Makefile.PL. Should unify. our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval getitimer setitimer nanosleep clock_gettime clock_getres clock clock_nanosleep CLOCKS_PER_SEC CLOCK_BOOTTIME CLOCK_HIGHRES CLOCK_MONOTONIC CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST CLOCK_MONOTONIC_PRECISE CLOCK_MONOTONIC_RAW CLOCK_PROCESS_CPUTIME_ID CLOCK_PROF CLOCK_REALTIME CLOCK_REALTIME_COARSE CLOCK_REALTIME_FAST CLOCK_REALTIME_PRECISE CLOCK_REALTIME_RAW CLOCK_SECOND CLOCK_SOFTTIME CLOCK_THREAD_CPUTIME_ID CLOCK_TIMEOFDAY CLOCK_UPTIME CLOCK_UPTIME_COARSE CLOCK_UPTIME_FAST CLOCK_UPTIME_PRECISE CLOCK_UPTIME_RAW CLOCK_VIRTUAL ITIMER_PROF ITIMER_REAL ITIMER_REALPROF ITIMER_VIRTUAL TIMER_ABSTIME d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer d_nanosleep d_clock_gettime d_clock_getres d_clock d_clock_nanosleep d_hires_stat d_futimens d_utimensat d_hires_utime stat lstat utime ); our $VERSION = '1.9770'; our $XS_VERSION = $VERSION; $VERSION = eval $VERSION; our $AUTOLOAD; sub AUTOLOAD { my $constname; ($constname = $AUTOLOAD) =~ s/.*:://; # print "AUTOLOAD: constname = $constname ($AUTOLOAD)\n"; die "&Time::HiRes::constant not defined" if $constname eq 'constant'; my ($error, $val) = constant($constname); # print "AUTOLOAD: error = $error, val = $val\n"; if ($error) { my (undef,$file,$line) = caller; die "$error at $file line $line.\n"; } { no strict 'refs'; *$AUTOLOAD = sub { $val }; } goto &$AUTOLOAD; } sub import { my $this = shift; for my $i (@_) { if (($i eq 'clock_getres' && !&d_clock_getres) || ($i eq 'clock_gettime' && !&d_clock_gettime) || ($i eq 'clock_nanosleep' && !&d_clock_nanosleep) || ($i eq 'clock' && !&d_clock) || ($i eq 'nanosleep' && !&d_nanosleep) || ($i eq 'usleep' && !&d_usleep) || ($i eq 'utime' && !&d_hires_utime) || ($i eq 'ualarm' && !&d_ualarm)) { require Carp; Carp::croak("Time::HiRes::$i(): unimplemented in this platform"); } } Time::HiRes->export_to_level(1, $this, @_); } XSLoader::load( 'Time::HiRes', $XS_VERSION ); # Preloaded methods go here. sub tv_interval { # probably could have been done in C my ($a, $b) = @_; $b = [gettimeofday()] unless defined($b); (${$b}[0] - ${$a}[0]) + ((${$b}[1] - ${$a}[1]) / 1_000_000); } # Autoload methods go after =cut, and are processed by the autosplit program. 1; __END__ =head1 NAME Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers =head1 SYNOPSIS use Time::HiRes qw( usleep ualarm gettimeofday tv_interval nanosleep clock_gettime clock_getres clock_nanosleep clock stat lstat utime); usleep ($microseconds); nanosleep ($nanoseconds); ualarm ($microseconds); ualarm ($microseconds, $interval_microseconds); $t0 = [gettimeofday]; ($seconds, $microseconds) = gettimeofday; $elapsed = tv_interval ( $t0, [$seconds, $microseconds]); $elapsed = tv_interval ( $t0, [gettimeofday]); $elapsed = tv_interval ( $t0 ); use Time::HiRes qw ( time alarm sleep ); $now_fractions = time; sleep ($floating_seconds); alarm ($floating_seconds); alarm ($floating_seconds, $floating_interval); use Time::HiRes qw( setitimer getitimer ); setitimer ($which, $floating_seconds, $floating_interval ); getitimer ($which); use Time::HiRes qw( clock_gettime clock_getres clock_nanosleep ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF ITIMER_REALPROF ); $realtime = clock_gettime(CLOCK_REALTIME); $resolution = clock_getres(CLOCK_REALTIME); clock_nanosleep(CLOCK_REALTIME, 1.5e9); clock_nanosleep(CLOCK_REALTIME, time()*1e9 + 10e9, TIMER_ABSTIME); my $ticktock = clock(); use Time::HiRes qw( stat lstat ); my @stat = stat("file"); my @stat = stat(FH); my @stat = lstat("file"); use Time::HiRes qw( utime ); utime $floating_seconds, $floating_seconds, file...; =head1 DESCRIPTION The C module implements a Perl interface to the C, C, C, C, and C/C system calls, in other words, high resolution time and timers. See the L section below and the test scripts for usage; see your system documentation for the description of the underlying C or C, C, C, and C/C calls. If your system lacks C or an emulation of it you don't get C or the one-argument form of C. If your system lacks all of C, C, C, and C, you don't get C, C, or C. If your system lacks both C and C you don't get C or C. If you try to import an unimplemented function in the C statement it will fail at compile time. If your subsecond sleeping is implemented with C instead of C, you can mix subsecond sleeping with signals since C does not use signals. This, however, is not portable, and you should first check for the truth value of C<&Time::HiRes::d_nanosleep> to see whether you have nanosleep, and then carefully read your C C API documentation for any peculiarities. If you are using C for something else than mixing sleeping with signals, give some thought to whether Perl is the tool you should be using for work requiring nanosecond accuracies. Remember that unless you are working on a I system, any clocks and timers will be imprecise, especially so if you are working in a pre-emptive multiuser system. Understand the difference between I and process time (in UNIX-like systems the sum of I and I times). Any attempt to sleep for X seconds will most probably end up sleeping B than that, but don't be surprised if you end up sleeping slightly B. The following functions can be imported from this module. No functions are exported by default. =over 4 =item gettimeofday () In array context returns a two-element array with the seconds and microseconds since the epoch. In scalar context returns floating seconds like C (see below). =item usleep ( $useconds ) Sleeps for the number of microseconds (millionths of a second) specified. Returns the number of microseconds actually slept. Can sleep for more than one second, unlike the C system call. Can also sleep for zero seconds, which often works like a I. See also L|/sleep ( $floating_seconds )>, and L|/clock_nanosleep ( $which, $nanoseconds, $flags = 0)>. Do not expect usleep() to be exact down to one microsecond. =item nanosleep ( $nanoseconds ) Sleeps for the number of nanoseconds (1e9ths of a second) specified. Returns the number of nanoseconds actually slept (accurate only to microseconds, the nearest thousand of them). Can sleep for more than one second. Can also sleep for zero seconds, which often works like a I. See also L|/sleep ( $floating_seconds )>, L|/usleep ( $useconds )>, and L|/clock_nanosleep ( $which, $nanoseconds, $flags = 0)>. Do not expect nanosleep() to be exact down to one nanosecond. Getting even accuracy of one thousand nanoseconds is good. =item ualarm ( $useconds [, $interval_useconds ] ) Issues a C call; the C<$interval_useconds> is optional and will be zero if unspecified, resulting in C-like behaviour. Returns the remaining time in the alarm in microseconds, or C if an error occurred. ualarm(0) will cancel an outstanding ualarm(). Note that the interaction between alarms and sleeps is unspecified. =item tv_interval tv_interval ( $ref_to_gettimeofday [, $ref_to_later_gettimeofday] ) Returns the floating seconds between the two times, which should have been returned by C. If the second argument is omitted, then the current time is used. =item time () Returns a floating seconds since the epoch. This function can be imported, resulting in a nice drop-in replacement for the C described later. For example, the C above declared no subroutine for any of the operators C<-->, C (the overload key for unary minus), or C<-=>. Thus operation | generates a call to ============|====================== -$x | minus($x, 0, 1) $x-- | minus($x, 1, undef) $x -= 3 | minus($x, 3, undef) Note the Cs: where autogeneration results in the method for a standard operator which does not change either of its operands, such as C<->, being used to implement an operator which changes the operand ("mutators": here, C<--> and C<-=>), Perl passes undef as the third argument. This still evaluates as FALSE, consistent with the fact that the operands have not been swapped, but gives the subroutine a chance to alter its behaviour in these cases. In all the above examples, C is required only to return the result of the subtraction: Perl takes care of the assignment to $x. In fact, such methods should I modify their operands, even if C is passed as the third argument (see L). The same is not true of implementations of C<++> and C<-->: these are expected to modify their operand. An appropriate implementation of C<--> might look like use overload '--' => "decr", # ... sub decr { --${$_[0]}; } If the "bitwise" feature is enabled (see L), a fifth TRUE argument is passed to subroutines handling C<&>, C<|>, C<^> and C<~>. This indicates that the caller is expecting numeric behaviour. The fourth argument will be C, as that position (C<$_[3]>) is reserved for use by L. =head3 Mathemagic, Mutators, and Copy Constructors The term 'mathemagic' describes the overloaded implementation of mathematical operators. Mathemagical operations raise an issue. Consider the code: $a = $b; --$a; If C<$a> and C<$b> are scalars then after these statements $a == $b - 1 An object, however, is a reference to blessed data, so if C<$a> and C<$b> are objects then the assignment C<$a = $b> copies only the reference, leaving C<$a> and C<$b> referring to the same object data. One might therefore expect the operation C<--$a> to decrement C<$b> as well as C<$a>. However, this would not be consistent with how we expect the mathematical operators to work. Perl resolves this dilemma by transparently calling a copy constructor before calling a method defined to implement a mutator (C<-->, C<+=>, and so on.). In the above example, when Perl reaches the decrement statement, it makes a copy of the object data in C<$a> and assigns to C<$a> a reference to the copied data. Only then does it call C, which alters the copied data, leaving C<$b> unchanged. Thus the object metaphor is preserved as far as possible, while mathemagical operations still work according to the arithmetic metaphor. Note: the preceding paragraph describes what happens when Perl autogenerates the copy constructor for an object based on a scalar. For other cases, see L. =head2 Overloadable Operations The complete list of keys that can be specified in the C directive are given, separated by spaces, in the values of the hash C<%overload::ops>: with_assign => '+ - * / % ** << >> x .', assign => '+= -= *= /= %= **= <<= >>= x= .=', num_comparison => '< <= > >= == !=', '3way_comparison'=> '<=> cmp', str_comparison => 'lt le gt ge eq ne', binary => '& &= | |= ^ ^= &. &.= |. |.= ^. ^.=', unary => 'neg ! ~ ~.', mutators => '++ --', func => 'atan2 cos sin exp abs log sqrt int', conversion => 'bool "" 0+ qr', iterators => '<>', filetest => '-X', dereferencing => '${} @{} %{} &{} *{}', matching => '~~', special => 'nomethod fallback =' Most of the overloadable operators map one-to-one to these keys. Exceptions, including additional overloadable operations not apparent from this hash, are included in the notes which follow. This list is subject to growth over time. A warning is issued if an attempt is made to register an operator not found above. =over 5 =item * C The operator C is not a valid key for C. However, if the operator C is overloaded then the same implementation will be used for C (since the two operators differ only in precedence). =item * C The key C is used for unary minus to disambiguate it from binary C<->. =item * C<++>, C<--> Assuming they are to behave analogously to Perl's C<++> and C<-->, overloaded implementations of these operators are required to mutate their operands. No distinction is made between prefix and postfix forms of the increment and decrement operators: these differ only in the point at which Perl calls the associated subroutine when evaluating an expression. =item * I += -= *= /= %= **= <<= >>= x= .= &= |= ^= &.= |.= ^.= Simple assignment is not overloadable (the C<'='> key is used for the L). Perl does have a way to make assignments to an object do whatever you want, but this involves using tie(), not overload - see L and the L examples below. The subroutine for the assignment variant of an operator is required only to return the result of the operation. It is permitted to change the value of its operand (this is safe because Perl calls the copy constructor first), but this is optional since Perl assigns the returned value to the left-hand operand anyway. An object that overloads an assignment operator does so only in respect of assignments to that object. In other words, Perl never calls the corresponding methods with the third argument (the "swap" argument) set to TRUE. For example, the operation $a *= $b cannot lead to C<$b>'s implementation of C<*=> being called, even if C<$a> is a scalar. (It can, however, generate a call to C<$b>'s method for C<*>). =item * I + - * / % ** << >> x . & | ^ &. |. ^. As described L, Perl may call methods for operators like C<+> and C<&> in the course of implementing missing operations like C<++>, C<+=>, and C<&=>. While these methods may detect this usage by testing the definedness of the third argument, they should in all cases avoid changing their operands. This is because Perl does not call the copy constructor before invoking these methods. =item * C Traditionally, the Perl function C rounds to 0 (see L), and so for floating-point-like types one should follow the same semantic. =item * I "" 0+ bool These conversions are invoked according to context as necessary. For example, the subroutine for C<'""'> (stringify) may be used where the overloaded object is passed as an argument to C, and that for C<'bool'> where it is tested in the condition of a flow control statement (like C) or the ternary C operation. Of course, in contexts like, for example, C<$obj + 1>, Perl will invoke C<$obj>'s implementation of C<+> rather than (in this example) converting C<$obj> to a number using the numify method C<'0+'> (an exception to this is when no method has been provided for C<'+'> and L is set to TRUE). The subroutines for C<'""'>, C<'0+'>, and C<'bool'> can return any arbitrary Perl value. If the corresponding operation for this value is overloaded too, the operation will be called again with this value. As a special case if the overload returns the object itself then it will be used directly. An overloaded conversion returning the object is probably a bug, because you're likely to get something that looks like C. qr The subroutine for C<'qr'> is used wherever the object is interpolated into or used as a regexp, including when it appears on the RHS of a C<=~> or C operator. C must return a compiled regexp, or a ref to a compiled regexp (such as C returns), and any further overloading on the return value will be ignored. =item * I If CE> is overloaded then the same implementation is used for both the I syntax C$varE> and I syntax C${var}E>. =item * I The key C<'-X'> is used to specify a subroutine to handle all the filetest operators (C<-f>, C<-x>, and so on: see L for the full list); it is not possible to overload any filetest operator individually. To distinguish them, the letter following the '-' is passed as the second argument (that is, in the slot that for binary operators is used to pass the second operand). Calling an overloaded filetest operator does not affect the stat value associated with the special filehandle C<_>. It still refers to the result of the last C, C or unoverloaded filetest. This overload was introduced in Perl 5.12. =item * I The key C<"~~"> allows you to override the smart matching logic used by the C<~~> operator and the switch construct (C/C). See L and L. Unusually, the overloaded implementation of the smart match operator does not get full control of the smart match behaviour. In particular, in the following code: package Foo; use overload '~~' => 'match'; my $obj = Foo->new(); $obj ~~ [ 1,2,3 ]; the smart match does I invoke the method call like this: $obj->match([1,2,3],0); rather, the smart match distributive rule takes precedence, so $obj is smart matched against each array element in turn until a match is found, so you may see between one and three of these calls instead: $obj->match(1,0); $obj->match(2,0); $obj->match(3,0); Consult the match table in L for details of when overloading is invoked. =item * I ${} @{} %{} &{} *{} If these operators are not explicitly overloaded then they work in the normal way, yielding the underlying scalar, array, or whatever stores the object data (or the appropriate error message if the dereference operator doesn't match it). Defining a catch-all C<'nomethod'> (see L) makes no difference to this as the catch-all function will not be called to implement a missing dereference operator. If a dereference operator is overloaded then it must return a I of the appropriate type (for example, the subroutine for key C<'${}'> should return a reference to a scalar, not a scalar), or another object which overloads the operator: that is, the subroutine only determines what is dereferenced and the actual dereferencing is left to Perl. As a special case, if the subroutine returns the object itself then it will not be called again - avoiding infinite recursion. =item * I nomethod fallback = See L>. =back =head2 Magic Autogeneration If a method for an operation is not found then Perl tries to autogenerate a substitute implementation from the operations that have been defined. Note: the behaviour described in this section can be disabled by setting C to FALSE (see L). In the following tables, numbers indicate priority. For example, the table below states that, if no implementation for C<'!'> has been defined then Perl will implement it using C<'bool'> (that is, by inverting the value returned by the method for C<'bool'>); if boolean conversion is also unimplemented then Perl will use C<'0+'> or, failing that, C<'""'>. operator | can be autogenerated from | | 0+ "" bool . x =========|========================== 0+ | 1 2 "" | 1 2 bool | 1 2 int | 1 2 3 ! | 2 3 1 qr | 2 1 3 . | 2 1 3 x | 2 1 3 .= | 3 2 4 1 x= | 3 2 4 1 <> | 2 1 3 -X | 2 1 3 Note: The iterator (C<'EE'>) and file test (C<'-X'>) operators work as normal: if the operand is not a blessed glob or IO reference then it is converted to a string (using the method for C<'""'>, C<'0+'>, or C<'bool'>) to be interpreted as a glob or filename. operator | can be autogenerated from | | < <=> neg -= - =========|========================== neg | 1 -= | 1 -- | 1 2 abs | a1 a2 b1 b2 [*] < | 1 <= | 1 > | 1 >= | 1 == | 1 != | 1 * one from [a1, a2] and one from [b1, b2] Just as numeric comparisons can be autogenerated from the method for C<< '<=>' >>, string comparisons can be autogenerated from that for C<'cmp'>: operators | can be autogenerated from ====================|=========================== lt gt le ge eq ne | cmp Similarly, autogeneration for keys C<'+='> and C<'++'> is analogous to C<'-='> and C<'--'> above: operator | can be autogenerated from | | += + =========|========================== += | 1 ++ | 1 2 And other assignment variations are analogous to C<'+='> and C<'-='> (and similar to C<'.='> and C<'x='> above): operator || *= /= %= **= <<= >>= &= ^= |= &.= ^.= |.= -------------------||------------------------------------------- autogenerated from || * / % ** << >> & ^ | &. ^. |. Note also that the copy constructor (key C<'='>) may be autogenerated, but only for objects based on scalars. See L. =head3 Minimal Set of Overloaded Operations Since some operations can be automatically generated from others, there is a minimal set of operations that need to be overloaded in order to have the complete set of overloaded operations at one's disposal. Of course, the autogenerated operations may not do exactly what the user expects. The minimal set is: + - * / % ** << >> x <=> cmp & | ^ ~ &. |. ^. ~. atan2 cos sin exp log sqrt int "" 0+ bool ~~ Of the conversions, only one of string, boolean or numeric is needed because each can be generated from either of the other two. =head2 Special Keys for C =head3 C The C<'nomethod'> key is used to specify a catch-all function to be called for any operator that is not individually overloaded. The specified function will be passed four parameters. The first three arguments coincide with those that would have been passed to the corresponding method if it had been defined. The fourth argument is the C key for that missing method. If the "bitwise" feature is enabled (see L), a fifth TRUE argument is passed to subroutines handling C<&>, C<|>, C<^> and C<~> to indicate that the caller is expecting numeric behaviour. For example, if C<$a> is an object blessed into a package declaring use overload 'nomethod' => 'catch_all', # ... then the operation 3 + $a could (unless a method is specifically declared for the key C<'+'>) result in a call catch_all($a, 3, 1, '+') See L. =head3 C The value assigned to the key C<'fallback'> tells Perl how hard it should try to find an alternative way to implement a missing operator. =over =item * defined, but FALSE use overload "fallback" => 0, # ... ; This disables L. =item * C In the default case where no value is explicitly assigned to C, magic autogeneration is enabled. =item * TRUE The same as for C, but if a missing operator cannot be autogenerated then, instead of issuing an error message, Perl is allowed to revert to what it would have done for that operator if there had been no C directive. Note: in most cases, particularly the L, this is unlikely to be appropriate behaviour. =back See L. =head3 Copy Constructor As mentioned L, this operation is called when a mutator is applied to a reference that shares its object with some other reference. For example, if C<$b> is mathemagical, and C<'++'> is overloaded with C<'incr'>, and C<'='> is overloaded with C<'clone'>, then the code $a = $b; # ... (other code which does not modify $a or $b) ... ++$b; would be executed in a manner equivalent to $a = $b; # ... $b = $b->clone(undef, ""); $b->incr(undef, ""); Note: =over =item * The subroutine for C<'='> does not overload the Perl assignment operator: it is used only to allow mutators to work as described here. (See L above.) =item * As for other operations, the subroutine implementing '=' is passed three arguments, though the last two are always C and C<''>. =item * The copy constructor is called only before a call to a function declared to implement a mutator, for example, if C<++$b;> in the code above is effected via a method declared for key C<'++'> (or 'nomethod', passed C<'++'> as the fourth argument) or, by autogeneration, C<'+='>. It is not called if the increment operation is effected by a call to the method for C<'+'> since, in the equivalent code, $a = $b; $b = $b + 1; the data referred to by C<$a> is unchanged by the assignment to C<$b> of a reference to new object data. =item * The copy constructor is not called if Perl determines that it is unnecessary because there is no other reference to the data being modified. =item * If C<'fallback'> is undefined or TRUE then a copy constructor can be autogenerated, but only for objects based on scalars. In other cases it needs to be defined explicitly. Where an object's data is stored as, for example, an array of scalars, the following might be appropriate: use overload '=' => sub { bless [ @{$_[0]} ] }, # ... =item * If C<'fallback'> is TRUE and no copy constructor is defined then, for objects not based on scalars, Perl may silently fall back on simple assignment - that is, assignment of the object reference. In effect, this disables the copy constructor mechanism since no new copy of the object data is created. This is almost certainly not what you want. (It is, however, consistent: for example, Perl's fallback for the C<++> operator is to increment the reference itself.) =back =head2 How Perl Chooses an Operator Implementation Which is checked first, C or C? If the two operands of an operator are of different types and both overload the operator, which implementation is used? The following are the precedence rules: =over =item 1. If the first operand has declared a subroutine to overload the operator then use that implementation. =item 2. Otherwise, if fallback is TRUE or undefined for the first operand then see if the L allows another of its operators to be used instead. =item 3. Unless the operator is an assignment (C<+=>, C<-=>, etc.), repeat step (1) in respect of the second operand. =item 4. Repeat Step (2) in respect of the second operand. =item 5. If the first operand has a "nomethod" method then use that. =item 6. If the second operand has a "nomethod" method then use that. =item 7. If C is TRUE for both operands then perform the usual operation for the operator, treating the operands as numbers, strings, or booleans as appropriate for the operator (see note). =item 8. Nothing worked - die. =back Where there is only one operand (or only one operand with overloading) the checks in respect of the other operand above are skipped. There are exceptions to the above rules for dereference operations (which, if Step 1 fails, always fall back to the normal, built-in implementations - see Dereferencing), and for C<~~> (which has its own set of rules - see C under L above). Note on Step 7: some operators have a different semantic depending on the type of their operands. As there is no way to instruct Perl to treat the operands as, e.g., numbers instead of strings, the result here may not be what you expect. See L. =head2 Losing Overloading The restriction for the comparison operation is that even if, for example, C should return a blessed reference, the autogenerated C function will produce only a standard logical value based on the numerical value of the result of C. In particular, a working numeric conversion is needed in this case (possibly expressed in terms of other conversions). Similarly, C<.=> and C operators lose their mathemagical properties if the string conversion substitution is applied. When you chop() a mathemagical object it is promoted to a string and its mathemagical properties are lost. The same can happen with other operations as well. =head2 Inheritance and Overloading Overloading respects inheritance via the @ISA hierarchy. Inheritance interacts with overloading in two ways. =over =item Method names in the C directive If C in use overload key => value; is a string, it is interpreted as a method name - which may (in the usual way) be inherited from another class. =item Overloading of an operation is inherited by derived classes Any class derived from an overloaded class is also overloaded and inherits its operator implementations. If the same operator is overloaded in more than one ancestor then the implementation is determined by the usual inheritance rules. For example, if C inherits from C and C (in that order), C overloads C<+> with C<\&D::plus_sub>, and C overloads C<+> by C<"plus_meth">, then the subroutine C will be called to implement operation C<+> for an object in package C. =back Note that in Perl version prior to 5.18 inheritance of the C key was not governed by the above rules. The value of C in the first overloaded ancestor was used. This was fixed in 5.18 to follow the usual rules of inheritance. =head2 Run-time Overloading Since all C directives are executed at compile-time, the only way to change overloading during run-time is to eval 'use overload "+" => \&addmethod'; You can also use eval 'no overload "+", "--", "<="'; though the use of these constructs during run-time is questionable. =head2 Public Functions Package C provides the following public functions: =over 5 =item overload::StrVal(arg) Gives the string value of C as in the absence of stringify overloading. If you are using this to get the address of a reference (useful for checking if two references point to the same thing) then you may be better off using C or C, which are faster. =item overload::Overloaded(arg) Returns true if C is subject to overloading of some operations. =item overload::Method(obj,op) Returns C or a reference to the method that implements C. Such a method always takes three arguments, which will be enforced if it is an XS method. =back =head2 Overloading Constants For some applications, the Perl parser mangles constants too much. It is possible to hook into this process via C and C functions. These functions take a hash as an argument. The recognized keys of this hash are: =over 8 =item integer to overload integer constants, =item float to overload floating point constants, =item binary to overload octal and hexadecimal constants, =item q to overload C-quoted strings, constant pieces of C- and C-quoted strings and here-documents, =item qr to overload constant pieces of regular expressions. =back The corresponding values are references to functions which take three arguments: the first one is the I string form of the constant, the second one is how Perl interprets this constant, the third one is how the constant is used. Note that the initial string form does not contain string delimiters, and has backslashes in backslash-delimiter combinations stripped (thus the value of delimiter is not relevant for processing of this string). The return value of this function is how this constant is going to be interpreted by Perl. The third argument is undefined unless for overloaded C- and C- constants, it is C in single-quote context (comes from strings, regular expressions, and single-quote HERE documents), it is C for arguments of C/C operators, it is C for right-hand side of C-operator, and it is C otherwise. Since an expression C<"ab$cd,,"> is just a shortcut for C<'ab' . $cd . ',,'>, it is expected that overloaded constant strings are equipped with reasonable overloaded catenation operator, otherwise absurd results will result. Similarly, negative numbers are considered as negations of positive constants. Note that it is probably meaningless to call the functions overload::constant() and overload::remove_constant() from anywhere but import() and unimport() methods. From these methods they may be called as sub import { shift; return unless @_; die "unknown import: @_" unless @_ == 1 and $_[0] eq ':constant'; overload::constant integer => sub {Math::BigInt->new(shift)}; } =head1 IMPLEMENTATION What follows is subject to change RSN. The table of methods for all operations is cached in magic for the symbol table hash for the package. The cache is invalidated during processing of C, C, new function definitions, and changes in @ISA. (Every SVish thing has a magic queue, and magic is an entry in that queue. This is how a single variable may participate in multiple forms of magic simultaneously. For instance, environment variables regularly have two forms at once: their %ENV magic and their taint magic. However, the magic which implements overloading is applied to the stashes, which are rarely used directly, thus should not slow down Perl.) If a package uses overload, it carries a special flag. This flag is also set when new functions are defined or @ISA is modified. There will be a slight speed penalty on the very first operation thereafter that supports overloading, while the overload tables are updated. If there is no overloading present, the flag is turned off. Thus the only speed penalty thereafter is the checking of this flag. It is expected that arguments to methods that are not explicitly supposed to be changed are constant (but this is not enforced). =head1 COOKBOOK Please add examples to what follows! =head2 Two-face Scalars Put this in F in your Perl library directory: package two_face; # Scalars with separate string and # numeric values. sub new { my $p = shift; bless [@_], $p } use overload '""' => \&str, '0+' => \&num, fallback => 1; sub num {shift->[1]} sub str {shift->[0]} Use it as follows: require two_face; my $seven = two_face->new("vii", 7); printf "seven=$seven, seven=%d, eight=%d\n", $seven, $seven+1; print "seven contains 'i'\n" if $seven =~ /i/; (The second line creates a scalar which has both a string value, and a numeric value.) This prints: seven=vii, seven=7, eight=8 seven contains 'i' =head2 Two-face References Suppose you want to create an object which is accessible as both an array reference and a hash reference. package two_refs; use overload '%{}' => \&gethash, '@{}' => sub { $ {shift()} }; sub new { my $p = shift; bless \ [@_], $p; } sub gethash { my %h; my $self = shift; tie %h, ref $self, $self; \%h; } sub TIEHASH { my $p = shift; bless \ shift, $p } my %fields; my $i = 0; $fields{$_} = $i++ foreach qw{zero one two three}; sub STORE { my $self = ${shift()}; my $key = $fields{shift()}; defined $key or die "Out of band access"; $$self->[$key] = shift; } sub FETCH { my $self = ${shift()}; my $key = $fields{shift()}; defined $key or die "Out of band access"; $$self->[$key]; } Now one can access an object using both the array and hash syntax: my $bar = two_refs->new(3,4,5,6); $bar->[2] = 11; $bar->{two} == 11 or die 'bad hash fetch'; Note several important features of this example. First of all, the I type of $bar is a scalar reference, and we do not overload the scalar dereference. Thus we can get the I non-overloaded contents of $bar by just using C<$$bar> (what we do in functions which overload dereference). Similarly, the object returned by the TIEHASH() method is a scalar reference. Second, we create a new tied hash each time the hash syntax is used. This allows us not to worry about a possibility of a reference loop, which would lead to a memory leak. Both these problems can be cured. Say, if we want to overload hash dereference on a reference to an object which is I as a hash itself, the only problem one has to circumvent is how to access this I hash (as opposed to the I hash exhibited by the overloaded dereference operator). Here is one possible fetching routine: sub access_hash { my ($self, $key) = (shift, shift); my $class = ref $self; bless $self, 'overload::dummy'; # Disable overloading of %{} my $out = $self->{$key}; bless $self, $class; # Restore overloading $out; } To remove creation of the tied hash on each access, one may an extra level of indirection which allows a non-circular structure of references: package two_refs1; use overload '%{}' => sub { ${shift()}->[1] }, '@{}' => sub { ${shift()}->[0] }; sub new { my $p = shift; my $a = [@_]; my %h; tie %h, $p, $a; bless \ [$a, \%h], $p; } sub gethash { my %h; my $self = shift; tie %h, ref $self, $self; \%h; } sub TIEHASH { my $p = shift; bless \ shift, $p } my %fields; my $i = 0; $fields{$_} = $i++ foreach qw{zero one two three}; sub STORE { my $a = ${shift()}; my $key = $fields{shift()}; defined $key or die "Out of band access"; $a->[$key] = shift; } sub FETCH { my $a = ${shift()}; my $key = $fields{shift()}; defined $key or die "Out of band access"; $a->[$key]; } Now if $baz is overloaded like this, then C<$baz> is a reference to a reference to the intermediate array, which keeps a reference to an actual array, and the access hash. The tie()ing object for the access hash is a reference to a reference to the actual array, so =over =item * There are no loops of references. =item * Both "objects" which are blessed into the class C are references to a reference to an array, thus references to a I. Thus the accessor expression C<$$foo-E[$ind]> involves no overloaded operations. =back =head2 Symbolic Calculator Put this in F in your Perl library directory: package symbolic; # Primitive symbolic calculator use overload nomethod => \&wrap; sub new { shift; bless ['n', @_] } sub wrap { my ($obj, $other, $inv, $meth) = @_; ($obj, $other) = ($other, $obj) if $inv; bless [$meth, $obj, $other]; } This module is very unusual as overloaded modules go: it does not provide any usual overloaded operators, instead it provides an implementation for C>. In this example the C subroutine returns an object which encapsulates operations done over the objects: C<< symbolic->new(3) >> contains C<['n', 3]>, C<< 2 + symbolic->new(3) >> contains C<['+', 2, ['n', 3]]>. Here is an example of the script which "calculates" the side of circumscribed octagon using the above package: require symbolic; my $iter = 1; # 2**($iter+2) = 8 my $side = symbolic->new(1); my $cnt = $iter; while ($cnt--) { $side = (sqrt(1 + $side**2) - 1)/$side; } print "OK\n"; The value of $side is ['/', ['-', ['sqrt', ['+', 1, ['**', ['n', 1], 2]], undef], 1], ['n', 1]] Note that while we obtained this value using a nice little script, there is no simple way to I this value. In fact this value may be inspected in debugger (see L), but only if C Bption is set, and not via C

command. If one attempts to print this value, then the overloaded operator C<""> will be called, which will call C operator. The result of this operator will be stringified again, but this result is again of type C, which will lead to an infinite loop. Add a pretty-printer method to the module F: sub pretty { my ($meth, $a, $b) = @{+shift}; $a = 'u' unless defined $a; $b = 'u' unless defined $b; $a = $a->pretty if ref $a; $b = $b->pretty if ref $b; "[$meth $a $b]"; } Now one can finish the script by print "side = ", $side->pretty, "\n"; The method C is doing object-to-string conversion, so it is natural to overload the operator C<""> using this method. However, inside such a method it is not necessary to pretty-print the I $a and $b of an object. In the above subroutine C<"[$meth $a $b]"> is a catenation of some strings and components $a and $b. If these components use overloading, the catenation operator will look for an overloaded operator C<.>; if not present, it will look for an overloaded operator C<"">. Thus it is enough to use use overload nomethod => \&wrap, '""' => \&str; sub str { my ($meth, $a, $b) = @{+shift}; $a = 'u' unless defined $a; $b = 'u' unless defined $b; "[$meth $a $b]"; } Now one can change the last line of the script to print "side = $side\n"; which outputs side = [/ [- [sqrt [+ 1 [** [n 1 u] 2]] u] 1] [n 1 u]] and one can inspect the value in debugger using all the possible methods. Something is still amiss: consider the loop variable $cnt of the script. It was a number, not an object. We cannot make this value of type C, since then the loop will not terminate. Indeed, to terminate the cycle, the $cnt should become false. However, the operator C for checking falsity is overloaded (this time via overloaded C<"">), and returns a long string, thus any object of type C is true. To overcome this, we need a way to compare an object to 0. In fact, it is easier to write a numeric conversion routine. Here is the text of F with such a routine added (and slightly modified str()): package symbolic; # Primitive symbolic calculator use overload nomethod => \&wrap, '""' => \&str, '0+' => \# sub new { shift; bless ['n', @_] } sub wrap { my ($obj, $other, $inv, $meth) = @_; ($obj, $other) = ($other, $obj) if $inv; bless [$meth, $obj, $other]; } sub str { my ($meth, $a, $b) = @{+shift}; $a = 'u' unless defined $a; if (defined $b) { "[$meth $a $b]"; } else { "[$meth $a]"; } } my %subr = ( n => sub {$_[0]}, sqrt => sub {sqrt $_[0]}, '-' => sub {shift() - shift()}, '+' => sub {shift() + shift()}, '/' => sub {shift() / shift()}, '*' => sub {shift() * shift()}, '**' => sub {shift() ** shift()}, ); sub num { my ($meth, $a, $b) = @{+shift}; my $subr = $subr{$meth} or die "Do not know how to ($meth) in symbolic"; $a = $a->num if ref $a eq __PACKAGE__; $b = $b->num if ref $b eq __PACKAGE__; $subr->($a,$b); } All the work of numeric conversion is done in %subr and num(). Of course, %subr is not complete, it contains only operators used in the example below. Here is the extra-credit question: why do we need an explicit recursion in num()? (Answer is at the end of this section.) Use this module like this: require symbolic; my $iter = symbolic->new(2); # 16-gon my $side = symbolic->new(1); my $cnt = $iter; while ($cnt) { $cnt = $cnt - 1; # Mutator '--' not implemented $side = (sqrt(1 + $side**2) - 1)/$side; } printf "%s=%f\n", $side, $side; printf "pi=%f\n", $side*(2**($iter+2)); It prints (without so many line breaks) [/ [- [sqrt [+ 1 [** [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] [n 1]] 2]]] 1] [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] [n 1]]]=0.198912 pi=3.182598 The above module is very primitive. It does not implement mutator methods (C<++>, C<-=> and so on), does not do deep copying (not required without mutators!), and implements only those arithmetic operations which are used in the example. To implement most arithmetic operations is easy; one should just use the tables of operations, and change the code which fills %subr to my %subr = ( 'n' => sub {$_[0]} ); foreach my $op (split " ", $overload::ops{with_assign}) { $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}"; } my @bins = qw(binary 3way_comparison num_comparison str_comparison); foreach my $op (split " ", "@overload::ops{ @bins }") { $subr{$op} = eval "sub {shift() $op shift()}"; } foreach my $op (split " ", "@overload::ops{qw(unary func)}") { print "defining '$op'\n"; $subr{$op} = eval "sub {$op shift()}"; } Since subroutines implementing assignment operators are not required to modify their operands (see L above), we do not need anything special to make C<+=> and friends work, besides adding these operators to %subr and defining a copy constructor (needed since Perl has no way to know that the implementation of C<'+='> does not mutate the argument - see L). To implement a copy constructor, add C<< '=' => \&cpy >> to C line, and code (this code assumes that mutators change things one level deep only, so recursive copying is not needed): sub cpy { my $self = shift; bless [@$self], ref $self; } To make C<++> and C<--> work, we need to implement actual mutators, either directly, or in C. We continue to do things inside C, thus add if ($meth eq '++' or $meth eq '--') { @$obj = ($meth, (bless [@$obj]), 1); # Avoid circular reference return $obj; } after the first line of wrap(). This is not a most effective implementation, one may consider sub inc { $_[0] = bless ['++', shift, 1]; } instead. As a final remark, note that one can fill %subr by my %subr = ( 'n' => sub {$_[0]} ); foreach my $op (split " ", $overload::ops{with_assign}) { $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}"; } my @bins = qw(binary 3way_comparison num_comparison str_comparison); foreach my $op (split " ", "@overload::ops{ @bins }") { $subr{$op} = eval "sub {shift() $op shift()}"; } foreach my $op (split " ", "@overload::ops{qw(unary func)}") { $subr{$op} = eval "sub {$op shift()}"; } $subr{'++'} = $subr{'+'}; $subr{'--'} = $subr{'-'}; This finishes implementation of a primitive symbolic calculator in 50 lines of Perl code. Since the numeric values of subexpressions are not cached, the calculator is very slow. Here is the answer for the exercise: In the case of str(), we need no explicit recursion since the overloaded C<.>-operator will fall back to an existing overloaded operator C<"">. Overloaded arithmetic operators I fall back to numeric conversion if C is not explicitly requested. Thus without an explicit recursion num() would convert C<['+', $a, $b]> to C<$a + $b>, which would just rebuild the argument of num(). If you wonder why defaults for conversion are different for str() and num(), note how easy it was to write the symbolic calculator. This simplicity is due to an appropriate choice of defaults. One extra note: due to the explicit recursion num() is more fragile than sym(): we need to explicitly check for the type of $a and $b. If components $a and $b happen to be of some related type, this may lead to problems. =head2 I Symbolic Calculator One may wonder why we call the above calculator symbolic. The reason is that the actual calculation of the value of expression is postponed until the value is I. To see it in action, add a method sub STORE { my $obj = shift; $#$obj = 1; @$obj->[0,1] = ('=', shift); } to the package C. After this change one can do my $a = symbolic->new(3); my $b = symbolic->new(4); my $c = sqrt($a**2 + $b**2); and the numeric value of $c becomes 5. However, after calling $a->STORE(12); $b->STORE(5); the numeric value of $c becomes 13. There is no doubt now that the module symbolic provides a I calculator indeed. To hide the rough edges under the hood, provide a tie()d interface to the package C. Add methods sub TIESCALAR { my $pack = shift; $pack->new(@_) } sub FETCH { shift } sub nop { } # Around a bug (the bug, fixed in Perl 5.14, is described in L<"BUGS">). One can use this new interface as tie $a, 'symbolic', 3; tie $b, 'symbolic', 4; $a->nop; $b->nop; # Around a bug my $c = sqrt($a**2 + $b**2); Now numeric value of $c is 5. After C<$a = 12; $b = 5> the numeric value of $c becomes 13. To insulate the user of the module add a method sub vars { my $p = shift; tie($_, $p), $_->nop foreach @_; } Now my ($a, $b); symbolic->vars($a, $b); my $c = sqrt($a**2 + $b**2); $a = 3; $b = 4; printf "c5 %s=%f\n", $c, $c; $a = 12; $b = 5; printf "c13 %s=%f\n", $c, $c; shows that the numeric value of $c follows changes to the values of $a and $b. =head1 AUTHOR Ilya Zakharevich EFE. =head1 SEE ALSO The C pragma can be used to enable or disable overloaded operations within a lexical scope - see L. =head1 DIAGNOSTICS When Perl is run with the B<-Do> switch or its equivalent, overloading induces diagnostic messages. Using the C command of Perl debugger (see L) one can deduce which operations are overloaded (and which ancestor triggers this overloading). Say, if C is overloaded, then the method C<(eq> is shown by debugger. The method C<()> corresponds to the C key (in fact a presence of this method shows that this package has overloading enabled, and it is what is used by the C function of module C). The module might issue the following warnings: =over 4 =item Odd number of arguments for overload::constant (W) The call to overload::constant contained an odd number of arguments. The arguments should come in pairs. =item '%s' is not an overloadable type (W) You tried to overload a constant type the overload package is unaware of. =item '%s' is not a code reference (W) The second (fourth, sixth, ...) argument of overload::constant needs to be a code reference. Either an anonymous subroutine, or a reference to a subroutine. =item overload arg '%s' is invalid (W) C was passed an argument it did not recognize. Did you mistype an operator? =back =head1 BUGS AND PITFALLS =over =item * A pitfall when fallback is TRUE and Perl resorts to a built-in implementation of an operator is that some operators have more than one semantic, for example C<|>: use overload '0+' => sub { $_[0]->{n}; }, fallback => 1; my $x = bless { n => 4 }, "main"; my $y = bless { n => 8 }, "main"; print $x | $y, "\n"; You might expect this to output "12". In fact, it prints "<": the ASCII result of treating "|" as a bitwise string operator - that is, the result of treating the operands as the strings "4" and "8" rather than numbers. The fact that numify (C<0+>) is implemented but stringify (C<"">) isn't makes no difference since the latter is simply autogenerated from the former. The only way to change this is to provide your own subroutine for C<'|'>. =item * Magic autogeneration increases the potential for inadvertently creating self-referential structures. Currently Perl will not free self-referential structures until cycles are explicitly broken. For example, use overload '+' => 'add'; sub add { bless [ \$_[0], \$_[1] ] }; is asking for trouble, since $obj += $y; will effectively become $obj = add($obj, $y, undef); with the same result as $obj = [\$obj, \$foo]; Even if no I assignment-variants of operators are present in the script, they may be generated by the optimizer. For example, "obj = $obj\n" may be optimized to my $tmp = 'obj = ' . $obj; $tmp .= "\n"; =item * The symbol table is filled with names looking like line-noise. =item * This bug was fixed in Perl 5.18, but may still trip you up if you are using older versions: For the purpose of inheritance every overloaded package behaves as if C is present (possibly undefined). This may create interesting effects if some package is not overloaded, but inherits from two overloaded packages. =item * Before Perl 5.14, the relation between overloading and tie()ing was broken. Overloading was triggered or not based on the I class of the tie()d variable. This happened because the presence of overloading was checked too early, before any tie()d access was attempted. If the class of the value FETCH()ed from the tied variable does not change, a simple workaround for code that is to run on older Perl versions is to access the value (via C<() = $foo> or some such) immediately after tie()ing, so that after this call the I class coincides with the current one. =item * Barewords are not covered by overloaded string constants. =item * The range operator C<..> cannot be overloaded. =back =cut FILEa0c659a5/overloading.pmpackage overloading; use warnings; our $VERSION = '0.02'; my $HINT_NO_AMAGIC = 0x01000000; # see perl.h require 5.010001; sub _ops_to_nums { require overload::numbers; map { exists $overload::numbers::names{"($_"} ? $overload::numbers::names{"($_"} : do { require Carp; Carp::croak("'$_' is not a valid overload") } } @_; } sub import { my ( $class, @ops ) = @_; if ( @ops ) { if ( $^H{overloading} ) { vec($^H{overloading} , $_, 1) = 0 for _ops_to_nums(@ops); } if ( $^H{overloading} !~ /[^\0]/ ) { delete $^H{overloading}; $^H &= ~$HINT_NO_AMAGIC; } } else { delete $^H{overloading}; $^H &= ~$HINT_NO_AMAGIC; } } sub unimport { my ( $class, @ops ) = @_; if ( exists $^H{overloading} or not $^H & $HINT_NO_AMAGIC ) { if ( @ops ) { vec($^H{overloading} ||= '', $_, 1) = 1 for _ops_to_nums(@ops); } else { delete $^H{overloading}; } } $^H |= $HINT_NO_AMAGIC; } 1; __END__ =head1 NAME overloading - perl pragma to lexically control overloading =head1 SYNOPSIS { no overloading; my $str = "$object"; # doesn't call stringification overload } # it's lexical, so this stringifies: warn "$object"; # it can be enabled per op no overloading qw(""); warn "$object"; # and also reenabled use overloading; =head1 DESCRIPTION This pragma allows you to lexically disable or enable overloading. =over 6 =item C Disables overloading entirely in the current lexical scope. =item C Disables only specific overloads in the current lexical scope. =item C Reenables overloading in the current lexical scope. =item C Reenables overloading only for specific ops in the current lexical scope. =back =cut FILE3bcd68be/parent.pm package parent; use strict; our $VERSION = '0.238'; sub import { my $class = shift; my $inheritor = caller(0); if ( @_ and $_[0] eq '-norequire' ) { shift @_; } else { for ( my @filename = @_ ) { s{::|'}{/}g; require "$_.pm"; # dies if the file is not found } } { no strict 'refs'; push @{"$inheritor\::ISA"}, @_; # dies if a loop is detected }; }; 1; __END__ =encoding utf8 =head1 NAME parent - Establish an ISA relationship with base classes at compile time =head1 SYNOPSIS package Baz; use parent qw(Foo Bar); =head1 DESCRIPTION Allows you to both load one or more modules, while setting up inheritance from those modules at the same time. Mostly similar in effect to package Baz; BEGIN { require Foo; require Bar; push @ISA, qw(Foo Bar); } By default, every base class needs to live in a file of its own. If you want to have a subclass and its parent class in the same file, you can tell C not to load any modules by using the C<-norequire> switch: package Foo; sub exclaim { "I CAN HAS PERL" } package DoesNotLoadFooBar; use parent -norequire, 'Foo', 'Bar'; # will not go looking for Foo.pm or Bar.pm This is equivalent to the following code: package Foo; sub exclaim { "I CAN HAS PERL" } package DoesNotLoadFooBar; push @DoesNotLoadFooBar::ISA, 'Foo', 'Bar'; This is also helpful for the case where a package lives within a differently named file: package MyHash; use Tie::Hash; use parent -norequire, 'Tie::StdHash'; This is equivalent to the following code: package MyHash; require Tie::Hash; push @ISA, 'Tie::StdHash'; If you want to load a subclass from a file that C would not consider an eligible filename (that is, it does not end in either C<.pm> or C<.pmc>), use the following code: package MySecondPlugin; require './plugins/custom.plugin'; # contains Plugin::Custom use parent -norequire, 'Plugin::Custom'; =head1 HISTORY This module was forked from L to remove the cruft that had accumulated in it. =head1 CAVEATS =head1 SEE ALSO =over 4 =item L =item L A fork of L that provides version checking in parent class modules. =back =head1 AUTHORS AND CONTRIBUTORS Rafaël Garcia-Suarez, Bart Lateur, Max Maischein, Anno Siegel, Michael Schwern =head1 MAINTAINER Max Maischein C< corion@cpan.org > Copyright (c) 2007-2017 Max Maischein C<< >> Based on the idea of C, which was introduced with Perl 5.004_04. =head1 LICENSE This module is released under the same terms as Perl itself. =cut FILEc6a146cd/strict.pmpackage strict; $strict::VERSION = "1.12"; my ( %bitmask, %explicit_bitmask ); BEGIN { # Verify that we're called correctly so that strictures will work. # Can't use Carp, since Carp uses us! # see also warnings.pm. die sprintf "Incorrect use of pragma '%s' at %s line %d.\n", __PACKAGE__, +(caller)[1,2] if __FILE__ !~ ( '(?x) \b '.__PACKAGE__.' \.pmc? \z' ) && __FILE__ =~ ( '(?x) \b (?i:'.__PACKAGE__.') \.pmc? \z' ); %bitmask = ( refs => 0x00000002, subs => 0x00000200, vars => 0x00000400, ); %explicit_bitmask = ( refs => 0x00000020, subs => 0x00000040, vars => 0x00000080, ); my $bits = 0; $bits |= $_ for values %bitmask; my $inline_all_bits = $bits; *all_bits = sub () { $inline_all_bits }; $bits = 0; $bits |= $_ for values %explicit_bitmask; my $inline_all_explicit_bits = $bits; *all_explicit_bits = sub () { $inline_all_explicit_bits }; } sub bits { my $bits = 0; my @wrong; foreach my $s (@_) { if (exists $bitmask{$s}) { $^H |= $explicit_bitmask{$s}; $bits |= $bitmask{$s}; } else { push @wrong, $s; } } if (@wrong) { require Carp; Carp::croak("Unknown 'strict' tag(s) '@wrong'"); } $bits; } sub import { shift; $^H |= @_ ? &bits : all_bits | all_explicit_bits; } sub unimport { shift; if (@_) { $^H &= ~&bits; } else { $^H &= ~all_bits; $^H |= all_explicit_bits; } } 1; __END__ =head1 NAME strict - Perl pragma to restrict unsafe constructs =head1 SYNOPSIS use strict; use strict "vars"; use strict "refs"; use strict "subs"; use strict; no strict "vars"; =head1 DESCRIPTION The C pragma disables certain Perl expressions that could behave unexpectedly or are difficult to debug, turning them into errors. The effect of this pragma is limited to the current file or scope block. If no import list is supplied, all possible restrictions are assumed. (This is the safest mode to operate in, but is sometimes too strict for casual programming.) Currently, there are three possible things to be strict about: "subs", "vars", and "refs". =over 6 =item C This generates a runtime error if you use symbolic references (see L). use strict 'refs'; $ref = \$foo; print $$ref; # ok $ref = "foo"; print $$ref; # runtime error; normally ok $file = "STDOUT"; print $file "Hi!"; # error; note: no comma after $file There is one exception to this rule: $bar = \&{'foo'}; &$bar; is allowed so that C would not break under stricture. =item C This generates a compile-time error if you access a variable that was neither explicitly declared (using any of C, C, C, or C) nor fully qualified. (Because this is to avoid variable suicide problems and subtle dynamic scoping issues, a merely C variable isn't good enough.) See L, L, L, L, and L. use strict 'vars'; $X::foo = 1; # ok, fully qualified my $foo = 10; # ok, my() var local $baz = 9; # blows up, $baz not declared before package Cinna; our $bar; # Declares $bar in current package $bar = 'HgS'; # ok, global declared via pragma The local() generated a compile-time error because you just touched a global name without fully qualifying it. Because of their special use by sort(), the variables $a and $b are exempted from this check. =item C This disables the poetry optimization, generating a compile-time error if you try to use a bareword identifier that's not a subroutine, unless it is a simple identifier (no colons) and that it appears in curly braces, on the left hand side of the C<< => >> symbol, or has the unary minus operator applied to it. use strict 'subs'; $SIG{PIPE} = Plumber; # blows up $SIG{PIPE} = "Plumber"; # fine: quoted string is always ok $SIG{PIPE} = \&Plumber; # preferred form =back See L. =head1 HISTORY C, with Perl 5.6.1, erroneously permitted to use an unquoted compound identifier (e.g. C) as a hash key (before C<< => >> or inside curlies), but without forcing it always to a literal string. Starting with Perl 5.8.1 strict is strict about its restrictions: if unknown restrictions are used, the strict pragma will abort with Unknown 'strict' tag(s) '...' As of version 1.04 (Perl 5.10), strict verifies that it is used as "strict" to avoid the dreaded Strict trap on case insensitive file systems. =cut FILE293e5f65/utf8.pm*package utf8; use strict; use warnings; our $hint_bits = 0x00800000; our $VERSION = '1.24'; our $AUTOLOAD; sub import { $^H |= $hint_bits; } sub unimport { $^H &= ~$hint_bits; } sub AUTOLOAD { goto &$AUTOLOAD if defined &$AUTOLOAD; require Carp; Carp::croak("Undefined subroutine $AUTOLOAD called"); } 1; __END__ =head1 NAME utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code =head1 SYNOPSIS use utf8; no utf8; # Convert the internal representation of a Perl scalar to/from UTF-8. $num_octets = utf8::upgrade($string); $success = utf8::downgrade($string[, $fail_ok]); # Change each character of a Perl scalar to/from a series of # characters that represent the UTF-8 bytes of each original character. utf8::encode($string); # "\x{100}" becomes "\xc4\x80" utf8::decode($string); # "\xc4\x80" becomes "\x{100}" # Convert a code point from the platform native character set to # Unicode, and vice-versa. $unicode = utf8::native_to_unicode(ord('A')); # returns 65 on both # ASCII and EBCDIC # platforms $native = utf8::unicode_to_native(65); # returns 65 on ASCII # platforms; 193 on # EBCDIC $flag = utf8::is_utf8($string); # since Perl 5.8.1 $flag = utf8::valid($string); =head1 DESCRIPTION The C pragma tells the Perl parser to allow UTF-8 in the program text in the current lexical scope. The C pragma tells Perl to switch back to treating the source text as literal bytes in the current lexical scope. (On EBCDIC platforms, technically it is allowing UTF-EBCDIC, and not UTF-8, but this distinction is academic, so in this document the term UTF-8 is used to mean both). B The utility functions described below are directly usable without C. Because it is not possible to reliably tell UTF-8 from native 8 bit encodings, you need either a Byte Order Mark at the beginning of your source code, or C, to instruct perl. When UTF-8 becomes the standard source format, this pragma will effectively become a no-op. See also the effects of the C<-C> switch and its cousin, the C environment variable, in L. Enabling the C pragma has the following effect: =over 4 =item * Bytes in the source text that are not in the ASCII character set will be treated as being part of a literal UTF-8 sequence. This includes most literals such as identifier names, string constants, and constant regular expression patterns. =back Note that if you have non-ASCII, non-UTF-8 bytes in your script (for example embedded Latin-1 in your string literals), C will be unhappy. If you want to have such bytes under C, you can disable this pragma until the end the block (or file, if at top level) by C. =head2 Utility functions The following functions are defined in the C package by the Perl core. You do not need to say C to use these and in fact you should not say that unless you really want to have UTF-8 source code. =over 4 =item * C<$num_octets = utf8::upgrade($string)> (Since Perl v5.8.0) Converts in-place the internal representation of the string from an octet sequence in the native encoding (Latin-1 or EBCDIC) to UTF-8. The logical character sequence itself is unchanged. If I<$string> is already upgraded, then this is a no-op. Returns the number of octets necessary to represent the string as UTF-8. If your code needs to be compatible with versions of perl without C, you can force Unicode semantics on a given string: # force unicode semantics for $string without the # "unicode_strings" feature utf8::upgrade($string); For example: # without explicit or implicit use feature 'unicode_strings' my $x = "\xDF"; # LATIN SMALL LETTER SHARP S $x =~ /ss/i; # won't match my $y = uc($x); # won't convert utf8::upgrade($x); $x =~ /ss/i; # matches my $z = uc($x); # converts to "SS" B; use L instead. =item * C<$success = utf8::downgrade($string[, $fail_ok])> (Since Perl v5.8.0) Converts in-place the internal representation of the string from UTF-8 to the equivalent octet sequence in the native encoding (Latin-1 or EBCDIC). The logical character sequence itself is unchanged. If I<$string> is already stored as native 8 bit, then this is a no-op. Can be used to make sure that the UTF-8 flag is off, e.g. when you want to make sure that the substr() or length() function works with the usually faster byte algorithm. Fails if the original UTF-8 sequence cannot be represented in the native 8 bit encoding. On failure dies or, if the value of I<$fail_ok> is true, returns false. Returns true on success. If your code expects an octet sequence this can be used to validate that you've received one: # throw an exception if not representable as octets utf8::downgrade($string) # or do your own error handling utf8::downgrade($string, 1) or die "string must be octets"; B; use L instead. =item * C (Since Perl v5.8.0) Converts in-place the character sequence to the corresponding octet sequence in Perl's extended UTF-8. That is, every (possibly wide) character gets replaced with a sequence of one or more characters that represent the individual UTF-8 bytes of the character. The UTF8 flag is turned off. Returns nothing. my $x = "\x{100}"; # $x contains one character, with ord 0x100 utf8::encode($x); # $x contains two characters, with ords (on # ASCII platforms) 0xc4 and 0x80. On EBCDIC # 1047, this would instead be 0x8C and 0x41. Similar to: use Encode; $x = Encode::encode("utf8", $x); B; use L instead. =item * C<$success = utf8::decode($string)> (Since Perl v5.8.0) Attempts to convert in-place the octet sequence encoded in Perl's extended UTF-8 to the corresponding character sequence. That is, it replaces each sequence of characters in the string whose ords represent a valid (extended) UTF-8 byte sequence, with the corresponding single character. The UTF-8 flag is turned on only if the source string contains multiple-byte UTF-8 characters. If I<$string> is invalid as extended UTF-8, returns false; otherwise returns true. my $x = "\xc4\x80"; # $x contains two characters, with ords # 0xc4 and 0x80 utf8::decode($x); # On ASCII platforms, $x contains one char, # with ord 0x100. Since these bytes aren't # legal UTF-EBCDIC, on EBCDIC platforms, $x is # unchanged and the function returns FALSE. my $y = "\xc3\x83\xc2\xab"; This has been encoded twice; this # example is only for ASCII platforms utf8::decode($y); # Converts $y to \xc3\xab, returns TRUE; utf8::decode($y); # Further converts to \xeb, returns TRUE; utf8::decode($y); # Returns FALSE, leaves $y unchanged B; use L instead. =item * C<$unicode = utf8::native_to_unicode($code_point)> (Since Perl v5.8.0) This takes an unsigned integer (which represents the ordinal number of a character (or a code point) on the platform the program is being run on) and returns its Unicode equivalent value. Since ASCII platforms natively use the Unicode code points, this function returns its input on them. On EBCDIC platforms it converts from EBCDIC to Unicode. A meaningless value will currently be returned if the input is not an unsigned integer. Since Perl v5.22.0, calls to this function are optimized out on ASCII platforms, so there is no performance hit in using it there. =item * C<$native = utf8::unicode_to_native($code_point)> (Since Perl v5.8.0) This is the inverse of C, converting the other direction. Again, on ASCII platforms, this returns its input, but on EBCDIC platforms it will find the native platform code point, given any Unicode one. A meaningless value will currently be returned if the input is not an unsigned integer. Since Perl v5.22.0, calls to this function are optimized out on ASCII platforms, so there is no performance hit in using it there. =item * C<$flag = utf8::is_utf8($string)> (Since Perl 5.8.1) Test whether I<$string> is marked internally as encoded in UTF-8. Functionally the same as C. Typically only necessary for debugging and testing, if you need to dump the internals of an SV, L Dump() provides more detail in a compact form. If you still think you need this outside of debugging, testing or dealing with filenames, you should probably read L and L. Don't use this flag as a marker to distinguish character and binary data: that should be decided for each variable when you write your code. To force unicode semantics in code portable to perl 5.8 and 5.10, call C unconditionally. =item * C<$flag = utf8::valid($string)> [INTERNAL] Test whether I<$string> is in a consistent state regarding UTF-8. Will return true if it is well-formed Perl extended UTF-8 and has the UTF-8 flag on B if I<$string> is held as bytes (both these states are 'consistent'). The main reason for this routine is to allow Perl's test suite to check that operations have left strings in a consistent state. =back C is like C, but the UTF8 flag is cleared. See L, and the C API functions C>, C>, C>, and C>, which are wrapped by the Perl functions C, C, C and C. Also, the functions C, C, C, C, C, and C are actually internal, and thus always available, without a C statement. =head1 BUGS Some filesystems may not support UTF-8 file names, or they may be supported incompatibly with Perl. Therefore UTF-8 names that are visible to the filesystem, such as module names may not work. =head1 SEE ALSO L, L, L, L, L =cut FILEab7f7a02/vars.pm package vars; use 5.006; our $VERSION = '1.05'; use warnings::register; use strict qw(vars subs); sub import { my $callpack = caller; my (undef, @imports) = @_; my ($sym, $ch); foreach (@imports) { if (($ch, $sym) = /^([\$\@\%\*\&])(.+)/) { if ($sym =~ /\W/) { # time for a more-detailed check-up if ($sym =~ /^\w+[[{].*[]}]$/) { require Carp; Carp::croak("Can't declare individual elements of hash or array"); } elsif (warnings::enabled() and length($sym) == 1 and $sym !~ tr/a-zA-Z//) { warnings::warn("No need to declare built-in vars"); } elsif (($^H & strict::bits('vars'))) { require Carp; Carp::croak("'$_' is not a valid variable name under strict vars"); } } $sym = "${callpack}::$sym" unless $sym =~ /::/; *$sym = ( $ch eq "\$" ? \$$sym : $ch eq "\@" ? \@$sym : $ch eq "\%" ? \%$sym : $ch eq "\*" ? \*$sym : $ch eq "\&" ? \&$sym : do { require Carp; Carp::croak("'$_' is not a valid variable name"); }); } else { require Carp; Carp::croak("'$_' is not a valid variable name"); } } }; 1; __END__ =head1 NAME vars - Perl pragma to predeclare global variable names =head1 SYNOPSIS use vars qw($frob @mung %seen); =head1 DESCRIPTION NOTE: For use with variables in the current package for a single scope, the functionality provided by this pragma has been superseded by C declarations, available in Perl v5.6.0 or later, and use of this pragma is discouraged. See L. This pragma will predeclare all the variables whose names are in the list, allowing you to use them under C, and disabling any typo warnings for them. Unlike pragmas that affect the C<$^H> hints variable, the C and C declarations are not lexically scoped to the block they appear in: they affect the entire package in which they appear. It is not possible to rescind these declarations with C or C. Packages such as the B and B that delay loading of subroutines within packages can create problems with package lexicals defined using C. While the B pragma cannot duplicate the effect of package lexicals (total transparency outside of the package), it can act as an acceptable substitute by pre-declaring global symbols, ensuring their availability to the later-loaded routines. See L. =cut FILE2f122875/warnings.pml# -*- buffer-read-only: t -*- # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! # This file is built by regen/warnings.pl. # Any changes made here will be lost! package warnings; our $VERSION = "1.58"; # Verify that we're called correctly so that warnings will work. # Can't use Carp, since Carp uses us! # String regexps because constant folding = smaller optree = less memory vs regexp literal # see also strict.pm. die sprintf "Incorrect use of pragma '%s' at %s line %d.\n", __PACKAGE__, +(caller)[1,2] if __FILE__ !~ ( '(?x) \b '.__PACKAGE__.' \.pmc? \z' ) && __FILE__ =~ ( '(?x) \b (?i:'.__PACKAGE__.') \.pmc? \z' ); our %Offsets = ( # Warnings Categories added in Perl 5.008 'all' => 0, 'closure' => 2, 'deprecated' => 4, 'exiting' => 6, 'glob' => 8, 'io' => 10, 'closed' => 12, 'exec' => 14, 'layer' => 16, 'newline' => 18, 'pipe' => 20, 'unopened' => 22, 'misc' => 24, 'numeric' => 26, 'once' => 28, 'overflow' => 30, 'pack' => 32, 'portable' => 34, 'recursion' => 36, 'redefine' => 38, 'regexp' => 40, 'severe' => 42, 'debugging' => 44, 'inplace' => 46, 'internal' => 48, 'malloc' => 50, 'signal' => 52, 'substr' => 54, 'syntax' => 56, 'ambiguous' => 58, 'bareword' => 60, 'digit' => 62, 'parenthesis' => 64, 'precedence' => 66, 'printf' => 68, 'prototype' => 70, 'qw' => 72, 'reserved' => 74, 'semicolon' => 76, 'taint' => 78, 'threads' => 80, 'uninitialized' => 82, 'unpack' => 84, 'untie' => 86, 'utf8' => 88, 'void' => 90, # Warnings Categories added in Perl 5.011 'imprecision' => 92, 'illegalproto' => 94, # Warnings Categories added in Perl 5.013 'non_unicode' => 96, 'nonchar' => 98, 'surrogate' => 100, # Warnings Categories added in Perl 5.017 'experimental' => 102, 'experimental::lexical_subs' => 104, 'experimental::regex_sets' => 106, 'experimental::smartmatch' => 108, # Warnings Categories added in Perl 5.019 'experimental::postderef' => 110, 'experimental::signatures' => 112, 'syscalls' => 114, # Warnings Categories added in Perl 5.021 'experimental::bitwise' => 116, 'experimental::const_attr' => 118, 'experimental::re_strict' => 120, 'experimental::refaliasing' => 122, 'locale' => 124, 'missing' => 126, 'redundant' => 128, # Warnings Categories added in Perl 5.025 'experimental::declared_refs' => 130, # Warnings Categories added in Perl 5.027 'experimental::alpha_assertions' => 132, 'experimental::script_run' => 134, 'shadow' => 136, # Warnings Categories added in Perl 5.029 'experimental::private_use' => 138, 'experimental::uniprop_wildcards' => 140, 'experimental::vlb' => 142, # Warnings Categories added in Perl 5.031 'experimental::isa' => 144, # Warnings Categories added in Perl 5.033 'experimental::try' => 146, # Warnings Categories added in Perl 5.035 'experimental::args_array_with_signatures'=> 148, 'experimental::builtin' => 150, 'experimental::defer' => 152, 'experimental::extra_paired_delimiters'=> 154, 'experimental::for_list' => 156, 'scalar' => 158, ); our %Bits = ( 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55", # [0..79] 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29] 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30] 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6] 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1] 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22] 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2] 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31] 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7] 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3] 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x55\x51\x05\x54\x54\x55\x15", # [51..56,58..61,65..67,69..78] 'experimental::alpha_assertions' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [66] 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [74] 'experimental::bitwise' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [58] 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [75] 'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [59] 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [65] 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [76] 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [77] 'experimental::for_list' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [78] 'experimental::isa' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [72] 'experimental::lexical_subs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [52] 'experimental::postderef' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [55] 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [69] 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [60] 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [61] 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [53] 'experimental::script_run' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [67] 'experimental::signatures' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [56] 'experimental::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [54] 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [73] 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [70] 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [71] 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [47] 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [46] 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23] 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24] 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [5..11,57] 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [62] 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25] 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12] 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [63] 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [48] 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [49] 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13] 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14] 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15] 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16] 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32] 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17] 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33] 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34] 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35] 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36] 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18] 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19] 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [64] 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20] 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37] 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40", # [79] 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38] 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25] 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [68] 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26] 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27] 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [50] 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47] 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [57] 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39] 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40] 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41] 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42] 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43] 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x15\x00\x00\x00\x00\x00\x00\x00", # [44,48..50] 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [45] ); our %DeadBits = ( 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", # [0..79] 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29] 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30] 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6] 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1] 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22] 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2] 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31] 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7] 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3] 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xaa\xa2\x0a\xa8\xa8\xaa\x2a", # [51..56,58..61,65..67,69..78] 'experimental::alpha_assertions' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [66] 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [74] 'experimental::bitwise' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [58] 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [75] 'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [59] 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [65] 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [76] 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [77] 'experimental::for_list' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [78] 'experimental::isa' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [72] 'experimental::lexical_subs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [52] 'experimental::postderef' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [55] 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [69] 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [60] 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [61] 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [53] 'experimental::script_run' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [67] 'experimental::signatures' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [56] 'experimental::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [54] 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [73] 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [70] 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [71] 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [47] 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [46] 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23] 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24] 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [5..11,57] 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [62] 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25] 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12] 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [63] 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [48] 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [49] 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13] 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14] 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15] 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16] 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32] 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17] 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33] 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34] 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35] 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36] 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18] 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19] 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [64] 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20] 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37] 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80", # [79] 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38] 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25] 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [68] 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26] 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27] 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [50] 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47] 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [57] 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39] 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40] 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41] 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42] 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43] 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x00\x00", # [44,48..50] 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [45] ); # These are used by various things, including our own tests our $NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x00\x51\x51\x15\x54\x54\x55\x15"; # [2,4,22,23,25,52,54..56,58..62,65..67,69..78] our $LAST_BIT = 160 ; our $BYTES = 20 ; sub Croaker { require Carp; # this initializes %CarpInternal local $Carp::CarpInternal{'warnings'}; delete $Carp::CarpInternal{'warnings'}; Carp::croak(@_); } sub _expand_bits { my $bits = shift; my $want_len = ($LAST_BIT + 7) >> 3; my $len = length($bits); if ($len != $want_len) { if ($bits eq "") { $bits = "\x00" x $want_len; } elsif ($len > $want_len) { substr $bits, $want_len, $len-$want_len, ""; } else { my $x = vec($bits, $Offsets{all} >> 1, 2); $x |= $x << 2; $x |= $x << 4; $bits .= chr($x) x ($want_len - $len); } } return $bits; } sub _bits { my $mask = shift ; my $catmask ; my $fatal = 0 ; my $no_fatal = 0 ; $mask = _expand_bits($mask); foreach my $word ( @_ ) { if ($word eq 'FATAL') { $fatal = 1; $no_fatal = 0; } elsif ($word eq 'NONFATAL') { $fatal = 0; $no_fatal = 1; } elsif ($catmask = $Bits{$word}) { $mask |= $catmask ; $mask |= $DeadBits{$word} if $fatal ; $mask = ~(~$mask | $DeadBits{$word}) if $no_fatal ; } else { Croaker("Unknown warnings category '$word'")} } return $mask ; } sub bits { # called from B::Deparse.pm push @_, 'all' unless @_ ; return _bits("", @_) ; } sub import { my $invocant = shift; # append 'all' when implied (empty import list or after a lone # "FATAL" or "NONFATAL") push @_, 'all' if !@_ || (@_==1 && ($_[0] eq 'FATAL' || $_[0] eq 'NONFATAL')); my @fatal = (); foreach my $warning (@_) { if($warning =~ /^(NON)?FATAL$/) { @fatal = ($warning); } elsif(substr($warning, 0, 1) ne '-') { my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ; ${^WARNING_BITS} = _bits($mask, @fatal, $warning); } else { $invocant->unimport(substr($warning, 1)); } } } sub unimport { shift; my $catmask ; my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ; # append 'all' when implied (empty import list or after a lone "FATAL") push @_, 'all' if !@_ || @_==1 && $_[0] eq 'FATAL'; $mask = _expand_bits($mask); foreach my $word ( @_ ) { if ($word eq 'FATAL') { next; } elsif ($catmask = $Bits{$word}) { $mask = ~(~$mask | $catmask | $DeadBits{$word}); } else { Croaker("Unknown warnings category '$word'")} } ${^WARNING_BITS} = $mask ; } my %builtin_type; @builtin_type{qw(SCALAR ARRAY HASH CODE REF GLOB LVALUE Regexp)} = (); sub LEVEL () { 8 }; sub MESSAGE () { 4 }; sub FATAL () { 2 }; sub NORMAL () { 1 }; sub __chk { my $category ; my $offset ; my $isobj = 0 ; my $wanted = shift; my $has_message = $wanted & MESSAGE; my $has_level = $wanted & LEVEL ; if ($has_level) { if (@_ != ($has_message ? 3 : 2)) { my $sub = (caller 1)[3]; my $syntax = $has_message ? "category, level, 'message'" : 'category, level'; Croaker("Usage: $sub($syntax)"); } } elsif (not @_ == 1 || @_ == ($has_message ? 2 : 0)) { my $sub = (caller 1)[3]; my $syntax = $has_message ? "[category,] 'message'" : '[category]'; Croaker("Usage: $sub($syntax)"); } my $message = pop if $has_message; if (@_) { # check the category supplied. $category = shift ; if (my $type = ref $category) { Croaker("not an object") if exists $builtin_type{$type}; $category = $type; $isobj = 1 ; } $offset = $Offsets{$category}; Croaker("Unknown warnings category '$category'") unless defined $offset; } else { $category = (caller(1))[0] ; $offset = $Offsets{$category}; Croaker("package '$category' not registered for warnings") unless defined $offset ; } my $i; if ($isobj) { my $pkg; $i = 2; while (do { { package DB; $pkg = (caller($i++))[0] } } ) { last unless @DB::args && $DB::args[0] =~ /^$category=/ ; } $i -= 2 ; } elsif ($has_level) { $i = 2 + shift; } else { $i = _error_loc(); # see where Carp will allocate the error } # Default to 0 if caller returns nothing. Default to $DEFAULT if it # explicitly returns undef. my(@callers_bitmask) = (caller($i))[9] ; my $callers_bitmask = @callers_bitmask ? $callers_bitmask[0] // $DEFAULT : 0 ; length($callers_bitmask) > ($offset >> 3) or $offset = $Offsets{all}; my @results; foreach my $type (FATAL, NORMAL) { next unless $wanted & $type; push @results, vec($callers_bitmask, $offset + $type - 1, 1); } # &enabled and &fatal_enabled return $results[0] unless $has_message; # &warnif, and the category is neither enabled as warning nor as fatal return if ($wanted & (NORMAL | FATAL | MESSAGE)) == (NORMAL | FATAL | MESSAGE) && !($results[0] || $results[1]); # If we have an explicit level, bypass Carp. if ($has_level and @callers_bitmask) { # logic copied from util.c:mess_sv my $stuff = " at " . join " line ", (caller $i)[1,2]; $stuff .= sprintf ", <%s> %s %d", *${^LAST_FH}{NAME}, ($/ eq "\n" ? "line" : "chunk"), $. if $. && ${^LAST_FH}; die "$message$stuff.\n" if $results[0]; return warn "$message$stuff.\n"; } require Carp; Carp::croak($message) if $results[0]; # will always get here for &warn. will only get here for &warnif if the # category is enabled Carp::carp($message); } sub _mkMask { my ($bit) = @_; my $mask = ""; vec($mask, $bit, 1) = 1; return $mask; } sub register_categories { my @names = @_; for my $name (@names) { if (! defined $Bits{$name}) { $Offsets{$name} = $LAST_BIT; $Bits{$name} = _mkMask($LAST_BIT++); $DeadBits{$name} = _mkMask($LAST_BIT++); if (length($Bits{$name}) > length($Bits{all})) { $Bits{all} .= "\x55"; $DeadBits{all} .= "\xaa"; } } } } sub _error_loc { require Carp; goto &Carp::short_error_loc; # don't introduce another stack frame } sub enabled { return __chk(NORMAL, @_); } sub fatal_enabled { return __chk(FATAL, @_); } sub warn { return __chk(FATAL | MESSAGE, @_); } sub warnif { return __chk(NORMAL | FATAL | MESSAGE, @_); } sub enabled_at_level { return __chk(NORMAL | LEVEL, @_); } sub fatal_enabled_at_level { return __chk(FATAL | LEVEL, @_); } sub warn_at_level { return __chk(FATAL | MESSAGE | LEVEL, @_); } sub warnif_at_level { return __chk(NORMAL | FATAL | MESSAGE | LEVEL, @_); } # These are not part of any public interface, so we can delete them to save # space. delete @warnings::{qw(NORMAL FATAL MESSAGE LEVEL)}; 1; __END__ =head1 NAME warnings - Perl pragma to control optional warnings =head1 SYNOPSIS use warnings; no warnings; # Standard warnings are enabled by use v5.35 or above use v5.35; use warnings "all"; no warnings "uninitialized"; # or equivalent to those last two ... use warnings qw(all -uninitialized); use warnings::register; if (warnings::enabled()) { warnings::warn("some warning"); } if (warnings::enabled("void")) { warnings::warn("void", "some warning"); } if (warnings::enabled($object)) { warnings::warn($object, "some warning"); } warnings::warnif("some warning"); warnings::warnif("void", "some warning"); warnings::warnif($object, "some warning"); =head1 DESCRIPTION The C pragma gives control over which warnings are enabled in which parts of a Perl program. It's a more flexible alternative for both the command line flag B<-w> and the equivalent Perl variable, C<$^W>. This pragma works just like the C pragma. This means that the scope of the warning pragma is limited to the enclosing block. It also means that the pragma setting will not leak across files (via C, C or C). This allows authors to independently define the degree of warning checks that will be applied to their module. By default, optional warnings are disabled, so any legacy code that doesn't attempt to control the warnings will work unchanged. All warnings are enabled in a block by either of these: use warnings; use warnings 'all'; Similarly all warnings are disabled in a block by either of these: no warnings; no warnings 'all'; For example, consider the code below: use warnings; my @x; { no warnings; my $y = @x[0]; } my $z = @x[0]; The code in the enclosing block has warnings enabled, but the inner block has them disabled. In this case that means the assignment to the scalar C<$z> will trip the C<"Scalar value @x[0] better written as $x[0]"> warning, but the assignment to the scalar C<$y> will not. All warnings are enabled automatically within the scope of a C> (or higher) declaration. =head2 Default Warnings and Optional Warnings Before the introduction of lexical warnings, Perl had two classes of warnings: mandatory and optional. As its name suggests, if your code tripped a mandatory warning, you would get a warning whether you wanted it or not. For example, the code below would always produce an C<"isn't numeric"> warning about the "2:". my $x = "2:" + 3; With the introduction of lexical warnings, mandatory warnings now become I warnings. The difference is that although the previously mandatory warnings are still enabled by default, they can then be subsequently enabled or disabled with the lexical warning pragma. For example, in the code below, an C<"isn't numeric"> warning will only be reported for the C<$x> variable. my $x = "2:" + 3; no warnings; my $y = "2:" + 3; Note that neither the B<-w> flag or the C<$^W> can be used to disable/enable default warnings. They are still mandatory in this case. =head2 "Negative warnings" As a convenience, you can (as of Perl 5.34) pass arguments to the C method both positively and negatively. Negative warnings are those with a C<-> sign prepended to their names; positive warnings are anything else. This lets you turn on some warnings and turn off others in one command. So, assuming that you've already turned on a bunch of warnings but want to tweak them a bit in some block, you can do this: { use warnings qw(uninitialized -redefine); ... } which is equivalent to: { use warnings qw(uninitialized); no warnings qw(redefine); ... } The argument list is processed in the order you specify. So, for example, if you don't want to be warned about use of experimental features, except for C that you really dislike, you can say this: use warnings qw(all -experimental experimental::somefeature); which is equivalent to: use warnings 'all'; no warnings 'experimental'; use warnings 'experimental::somefeature'; =head2 What's wrong with B<-w> and C<$^W> Although very useful, the big problem with using B<-w> on the command line to enable warnings is that it is all or nothing. Take the typical scenario when you are writing a Perl program. Parts of the code you will write yourself, but it's very likely that you will make use of pre-written Perl modules. If you use the B<-w> flag in this case, you end up enabling warnings in pieces of code that you haven't written. Similarly, using C<$^W> to either disable or enable blocks of code is fundamentally flawed. For a start, say you want to disable warnings in a block of code. You might expect this to be enough to do the trick: { local ($^W) = 0; my $x =+ 2; my $y; chop $y; } When this code is run with the B<-w> flag, a warning will be produced for the C<$x> line: C<"Reversed += operator">. The problem is that Perl has both compile-time and run-time warnings. To disable compile-time warnings you need to rewrite the code like this: { BEGIN { $^W = 0 } my $x =+ 2; my $y; chop $y; } And note that unlike the first example, this will permanently set C<$^W> since it cannot both run during compile-time and be localized to a run-time block. The other big problem with C<$^W> is the way you can inadvertently change the warning setting in unexpected places in your code. For example, when the code below is run (without the B<-w> flag), the second call to C will trip a C<"Use of uninitialized value"> warning, whereas the first will not. sub doit { my $y; chop $y; } doit(); { local ($^W) = 1; doit() } This is a side-effect of C<$^W> being dynamically scoped. Lexical warnings get around these limitations by allowing finer control over where warnings can or can't be tripped. =head2 Controlling Warnings from the Command Line There are three Command Line flags that can be used to control when warnings are (or aren't) produced: =over 5 =item B<-w> X<-w> This is the existing flag. If the lexical warnings pragma is B used in any of your code, or any of the modules that you use, this flag will enable warnings everywhere. See L for details of how this flag interacts with lexical warnings. =item B<-W> X<-W> If the B<-W> flag is used on the command line, it will enable all warnings throughout the program regardless of whether warnings were disabled locally using C or C<$^W =0>. This includes all files that get included via C, C or C. Think of it as the Perl equivalent of the "lint" command. =item B<-X> X<-X> Does the exact opposite to the B<-W> flag, i.e. it disables all warnings. =back =head2 Backward Compatibility If you are used to working with a version of Perl prior to the introduction of lexically scoped warnings, or have code that uses both lexical warnings and C<$^W>, this section will describe how they interact. How Lexical Warnings interact with B<-w>/C<$^W>: =over 5 =item 1. If none of the three command line flags (B<-w>, B<-W> or B<-X>) that control warnings is used and neither C<$^W> nor the C pragma are used, then default warnings will be enabled and optional warnings disabled. This means that legacy code that doesn't attempt to control the warnings will work unchanged. =item 2. The B<-w> flag just sets the global C<$^W> variable as in 5.005. This means that any legacy code that currently relies on manipulating C<$^W> to control warning behavior will still work as is. =item 3. Apart from now being a boolean, the C<$^W> variable operates in exactly the same horrible uncontrolled global way, except that it cannot disable/enable default warnings. =item 4. If a piece of code is under the control of the C pragma, both the C<$^W> variable and the B<-w> flag will be ignored for the scope of the lexical warning. =item 5. The only way to override a lexical warnings setting is with the B<-W> or B<-X> command line flags. =back The combined effect of 3 & 4 is that it will allow code which uses the C pragma to control the warning behavior of $^W-type code (using a C) if it really wants to, but not vice-versa. =head2 Category Hierarchy X A hierarchy of "categories" have been defined to allow groups of warnings to be enabled/disabled in isolation. The current hierarchy is: all -+ | +- closure | +- deprecated | +- exiting | +- experimental --+ | | | +- experimental::alpha_assertions | | | +- experimental::args_array_with_signatures | | | +- experimental::bitwise | | | +- experimental::builtin | | | +- experimental::const_attr | | | +- experimental::declared_refs | | | +- experimental::defer | | | +- experimental::extra_paired_delimiters | | | +- experimental::for_list | | | +- experimental::isa | | | +- experimental::lexical_subs | | | +- experimental::postderef | | | +- experimental::private_use | | | +- experimental::re_strict | | | +- experimental::refaliasing | | | +- experimental::regex_sets | | | +- experimental::script_run | | | +- experimental::signatures | | | +- experimental::smartmatch | | | +- experimental::try | | | +- experimental::uniprop_wildcards | | | +- experimental::vlb | +- glob | +- imprecision | +- io ------------+ | | | +- closed | | | +- exec | | | +- layer | | | +- newline | | | +- pipe | | | +- syscalls | | | +- unopened | +- locale | +- misc | +- missing | +- numeric | +- once | +- overflow | +- pack | +- portable | +- recursion | +- redefine | +- redundant | +- regexp | +- scalar | +- severe --------+ | | | +- debugging | | | +- inplace | | | +- internal | | | +- malloc | +- shadow | +- signal | +- substr | +- syntax --------+ | | | +- ambiguous | | | +- bareword | | | +- digit | | | +- illegalproto | | | +- parenthesis | | | +- precedence | | | +- printf | | | +- prototype | | | +- qw | | | +- reserved | | | +- semicolon | +- taint | +- threads | +- uninitialized | +- unpack | +- untie | +- utf8 ----------+ | | | +- non_unicode | | | +- nonchar | | | +- surrogate | +- void Just like the "strict" pragma any of these categories can be combined use warnings qw(void redefine); no warnings qw(io syntax untie); Also like the "strict" pragma, if there is more than one instance of the C pragma in a given scope the cumulative effect is additive. use warnings qw(void); # only "void" warnings enabled ... use warnings qw(io); # only "void" & "io" warnings enabled ... no warnings qw(void); # only "io" warnings enabled To determine which category a specific warning has been assigned to see L. Note: Before Perl 5.8.0, the lexical warnings category "deprecated" was a sub-category of the "syntax" category. It is now a top-level category in its own right. Note: Before 5.21.0, the "missing" lexical warnings category was internally defined to be the same as the "uninitialized" category. It is now a top-level category in its own right. =head2 Fatal Warnings X The presence of the word "FATAL" in the category list will escalate warnings in those categories into fatal errors in that lexical scope. B FATAL warnings should be used with care, particularly C<< FATAL => 'all' >>. Libraries using L for custom warning categories generally don't expect L to be fatal and can wind up in an unexpected state as a result. For XS modules issuing categorized warnings, such unanticipated exceptions could also expose memory leak bugs. Moreover, the Perl interpreter itself has had serious bugs involving fatalized warnings. For a summary of resolved and unresolved problems as of January 2015, please see L. While some developers find fatalizing some warnings to be a useful defensive programming technique, using C<< FATAL => 'all' >> to fatalize all possible warning categories -- including custom ones -- is particularly risky. Therefore, the use of C<< FATAL => 'all' >> is L. The L module on CPAN offers one example of a warnings subset that the module's authors believe is relatively safe to fatalize. B Users of FATAL warnings, especially those using C<< FATAL => 'all' >>, should be fully aware that they are risking future portability of their programs by doing so. Perl makes absolutely no commitments to not introduce new warnings or warnings categories in the future; indeed, we explicitly reserve the right to do so. Code that may not warn now may warn in a future release of Perl if the Perl5 development team deems it in the best interests of the community to do so. Should code using FATAL warnings break due to the introduction of a new warning we will NOT consider it an incompatible change. Users of FATAL warnings should take special caution during upgrades to check to see if their code triggers any new warnings and should pay particular attention to the fine print of the documentation of the features they use to ensure they do not exploit features that are documented as risky, deprecated, or unspecified, or where the documentation says "so don't do that", or anything with the same sense and spirit. Use of such features in combination with FATAL warnings is ENTIRELY AT THE USER'S RISK. The following documentation describes how to use FATAL warnings but the perl5 porters strongly recommend that you understand the risks before doing so, especially for library code intended for use by others, as there is no way for downstream users to change the choice of fatal categories. In the code below, the use of C