+R@yEl4h 6[i=د`U?̘Ӟl?LYHԗV嬐0ބ< %n;ͽidʌ0mÕ (DUU5=<3 *4=ٖDw@u֦XPMZsȑ=m'W,2f\}2h|2Yت#i҆R='m-+nU466rak϶MbHpfe$1 Ί {PݣІ r-C!s˟7Kȍʚ,=J}wnct C_<= Z_.cR~hWXILݵ+릉>X"d^.bsWf~+sG[K֏>;|hQ( w&_` Sŏ1#vO,7Fq"gH-Y\+Z$_PaP!'$7Y(- ˾NR-!z,pFhp~A#EF4(X˯!]Ҷ If/ DsҢOz}^K,$.T7KAo'g  ĿlFjfl9q#}h9]-ֽ *"="7LODʅL~Y+ilu"GB`gS;hh)H4Qqg Do<+8[T/™l/Qs8ţo|O:NYx0ElG "jt|>#^zեr=Ry[Eh*.q<'JZ|@1?Qw6@6`,~=WzOr6e+ 2 u;Жf[2تjڽc]FZphr%E.J)i8 )˧örXL^4hZ 'X6 F^?!8qETٲ+@S}?wMٛEowSYsz"@Џ܊&غj)CwI,P}15E,&RTeշ^7i7\BKUtyM_e7lga @<{n`!;gjH%S\a^A2ޓ*X2i .Qܸ+j&G}I4hN㗆::ԐzkԽ.S/E\s-iGSXz_[k| .muj 3#jRJaE&0Y~Cv! ׻+Y}Yĉ3\MY-\Sekc;M?P>YɁ1r4d2K@c^ŏqq8UJYo6\ZTt'].rXəl5 ^!: )|Hf gY[EzRp3 VLWbP W<}iGSXz_[k| UGmOl7SB UT[vxqTQoԷq Uz J&G|IE,t1@iJjl|%Yg CmHJA:-0sDAq)he3p nd߬Șe7W; 0A!ޞP%ME ?6s5`>V!qtSQII8C$]jG6#+5ԶŸ43O hkO1;l9qj0h/1-]'&fPhGpW-N;)R?|n=8G2Ŷ0-?#ǽʎ:D_! |7e; shkͣ!ߕszzIp쥻w_A='tE/m OL!lul6'Bθ=s@y@d-L.*tNZEf66Mϣ2w_SLp L'Gh-JmeFA't .@ M,47 O WL z* b6%Fm I"Nu@#vDz/NlyA7a5mzbtV3!fL!MbVM\ikƋ2b]L?CӝErC#W8^BbƘIJ^O?b= f^b5⌔J%{OW}9$^QQ*Y!۲ aw /PS:ّE\ǽ@1[N62T =ah%RzͷoJܝPٷ(ž'I#hFjiC@Y_]M|q#>hrG|,D7ɐ,ZHyNK@]#o%eTunOZ} {0w k= (Jn߷մ@DmaEZ{ Ԣ<#]roПp+_XTA?邥5Tf8=K-;C9L4^è7L&fh,dgYx25T@[pba}y;¤-8CeG]TKu_>Jk>'ȱ!ܦ$L&$0)}2CNj)}|\>GC+Aݫb'-+r?!DzUGm~vi2Ԟi8b".¨XGKNiӜ3M:ՏA.Έ4$u:W_: $>ޯ%T 5$ߍᑺpAg^9v.mE> 149*ˎoYE3&%fI:nP`b&/0# Q22,"{ƿVZ0pu$@xbieu2WyK}~l(uk2 nB|'-+r?ΈˡS5NQx 9;6k[g3KB߆Uv0O&&@)2.2oi8CGFatQB j8O2+e WzsXBa}ЎHg0lǯH%@e9pts,[#ӣ՘d*"hpu1ԺIP-8Cٵj\9Z䶟(}n print_to_file($msg, $tag = false) { $file_handle_tag = $tag ?: 'master'; if ($file_handle_tag != 'master' && isset($this->file_handles[$file_handle_tag])) { $buffer = $this->get_indent(); $buffer .= "$msg\n"; if (!empty($this->timestamp)) { $buffer = sprintf("[%s] %s", date($this->timestamp, time()), $buffer); } fwrite($this->file_handles[$file_handle_tag], wordwrap($buffer, $this->max_line_size, "\n ")); } if (isset($this->file_handles['master']) && $this->file_handles['master']) { $buffer = $this->get_indent(); if ($tag) { $buffer .= "$tag: "; } $msg = str_replace("\n", "", $msg); $buffer .= "$msg"; if (!empty($this->timestamp)) { $buffer = sprintf("[%s] %s", date($this->timestamp, time()), $buffer); } if(strlen($buffer) > $this->max_line_size){ $buffer = substr($buffer,0,$this->max_line_size - 3) . "..."; } fwrite($this->file_handles['master'], $buffer."\n"); } } public function print_to_console($msg, $tag = false) { if ($this->print_to_console) { if (is_array($this->print_to_console)) { if (in_array($tag, $this->print_to_console)) { echo $this->get_indent(); if ($tag) { echo "$tag: "; } echo "$msg\n"; } } else { echo $this->get_indent(); if ($tag) { echo "$tag: "; } echo "$msg\n"; } } } private function get_indent() { $buf = ""; for ($i = 0; $i < $this->indent; $i++) { $buf .= " "; } return $buf; } function __destruct() { foreach ($this->file_handles as $handle) { fclose($handle); } } }