JFIFICC_PROFILElcms0mntrRGB XYZ  acspAPPL-lcms desc8cprt@Nwtptchad,rXYZbXYZgXYZrTRC gTRC, bTRCL chrml$mluc enUSsRGB built-inmluc enUS2No copyright, use freelyXYZ -sf32 J*XYZ o8XYZ $XYZ bparaff Y [paraff Y [paraff Y [chrmT{L&f\C  !"$"$C,," c@{-usnV꜇>]8-[,7M);zi$"̟]c.!TXaqѝ0A!R$d@'XvB[Ś7+e$0oz]EzU4W0 [T07@´hU4ȩN^U9Lh=N%؉Dz4f 30׃kffa0^ <@=-Aw53y Pf')% X530gJ l33 R>.Xi{.N(}Qܳa}H/ȭgFr0w޶fg#! 304\3&fLumH`fh^)AhwI:fD:@dQHvro355WlՈ:0rAAeHvmSsfk ҹs6Ōlв+ֹirBDZ /٥,!a8]ϋ# c4zja3 ;4WPF& A; HvAf`}jb AYG>'-;HeʪTl7 Yd |.QhepU Q"UhW*YLM3ƣ+j3Ml^t{[< . ԘUIADXkh1 쩅}|z|"`{#IȘO?KbSe q?8ţV99p,.ZåVmgg DNcFP{ 5өFIpjuukYQV]ܻ,"vS}oĝ =7<; DxOUp^y=lH2sKԫ!$Lӡ=4֤%@t-a~kAUb'Eҵ{+4-_ y]0ВƪݍN ŁZYt]v\AhS( tdea@wG E$gï}s``=5 ;zX1! "#$1%025&4A6F=7?)l$:J2"-CAXbʩ[l0aSݵDzlt{Eӓ&ҍW c$%s^mfURul(?* >.]Tc;v5Rf$LH@-vӾ${X6D/mfI496"uh 'YD6VvhrH\Y.‚c8 ogCRƧ*Jo8 S"ap`))JkYͦi (X[rNjHHqE/^\sV9sk(heI4 2o\*whu^ZMK%e9X3uv [嬸p`HD,!5&,-D O3W){yRavIAx9)d"4m]xT&hWsbb"'8ZJ >F1+m& ;BWKl{I_6j4ui.k50TJ7/Xh-<9#ZcO&M{$3fćOuv֡٘bU\"MU@l12(19+w#r&r$""eĵ4?$7!ufz'E aTy<9sW;g8KDF{D !Yp ~?NOZgF!q8~ǗGd'6?B/r&X%1 ddP͇ '[>h`sCkNe9ɝ oV mHENz41PX? L)OJ,8ips^z*xǟ'9Fnl4wFNrQ:]J?JiB$4fوGL!M`lq$~<,Da x<%kُNPIzJ\ vh4UAg)IV uwNǬ d,ghh٣9B<hl[Zg]ؤIO _#bIVΟ58eqSuX\FXWlX:[w/gs孜QD"{yWxE8Gb,}2G#"wij}F7sKbk'^Ko$lF2D>Da㴡5⯦v#\7ɰV/PV!6iЉ!_|h|R#XXdQ+ Q%%h1?-VOUe9T YK,ژ>޷>Y7g#\Ue% MTPp ÊF:|PlR{b|;06+Zg??5%O};[Jϧk+|sT!rSʙfS _CA0ֻ:9+6SҊ`DL:!M7 9$CMk㢱;D+L-{"(-z^ᩗ>c+յsG|?4++ `OYa6GqW;,F hs(̴bSaGKt"00.Z(2exҶFAGd`6O`G8BDoix+і-ՄukU& \}1689JXLZj0JE^FFߋy;zzPeG'c W>Qgkbd鵶A.MZnM:0׮vW*}XGg^"?b ?:;BbfzꨂO /zvmC!TV9zu\#I`&+ջ ^ӆ>$]}a'kAFUjplӵG|EÃBlY68#lP1<)3̞?X.&C(yL5&#ZpP _1Zöp 7P;"NzƽδV*7 TwNꑊh?RƊi%9:ee$>j͖}ysٺʷu-pouHz:Nƶ.1rW̏'ᕀ 0x $^jyF7 Z/|-xÝO6>oT"GXвI!(!_=OEqU\?uEpAJ'ѹ]?㏕yr$Gcl^Da%>=ezy \KR$lFȔzs-~f*%M,e}ogo쓸zJq#)Ez_Gy)˧|NahNw}YdsYqZS2w XEIen]3R+ !L0+>2=)6m@VgMTEj2)fvU bPh1]d6mr/Oj̈́xdX^E )PB.<MWKݧdD4q::*]^.3`]>D٭f#DZ/uvX *_\Ȫ[˙J&:2v*I+"J}n%?ek⥷|.#jFI |\^ª[Io6ǺH,H ^4K`JPNU+IMpvk|tcvN Ym2pB tDD(Y""]1Vzd`B#m%}*o;u'=\s5p X,ea$0YAOJu?B:El1AYIC>Z&i iF*8h;6MNg_?4?4M!1"AQa2Rq#3B CSbr$0c4DTs%@d?+Ctiҳj]ԭ$OizcC2Zvo Je|#%\ī;Sm.?TPXNnwfdyQ=O*SED'ѧQ3"M! GPC>l< kOhMG+[O9CSR &E%B4}{(\UfOY {dR jeѷI%gwjPw*k4ڧ);D*bNdPbb{*<ۉ -c m"HRo]mϔԜjuQJQ0Y2NN^U(#I|0&2sJ$-I72r±i̘c̯:dGKg@Þ(QAX?\*Vp?(ztP[R/:7$ֶӳ3&X.Ra yU'olZKoE04%HIOMD62į=+P{{OiIH-C0sؾٹ_< }0ˬYU_HfVխ9uR-dyfCra9NmeUNf2,6#b~| 6@,di}-1X9QN\JRu,n"i g6-dQqr)x,J8-˶ҿ,L3S Aw$>ZWݪlїab_+;裄_-K-oTU0|սh,9X sY;Ӿ- ^Pmlk6aF9KH`6´gfb%X r\ ٲ ^5E3O=~ 79MEe*ɤt ae]q9{R ɲ78/?vaF⳿SK1IH&_V7"]nRm24\Ѫ[qT۾)rcȭ4Z]+3*yVhTEzs=;E RP K* a Mr~%nM榈0͆ӵG/LSo:/ܨA!8)Hk1s߹g*T)"ePЦ5B ²FTGH4"O䐢Yo]'4K*#Ie2?<6HJ('_}<)J.5!cR3 JCj8LJ4TllagZCM}:Df5͖f78͒&5ۇLP 66ȖYcH jz"}R+iyߚˉV-oY]sqv͕`sH~ЛE<(@qSIdϪW0Tʪ5 >|m:5|iЀwFRsjߙJjVOTdVӥ.tm8 R)H0RA]̓TŖ6E0NJ=%hl $$l~VY0YmVҵbi߅Xy2W\1/J_S'hBB6azUXcGY)Ϻp+ss(& }Bc& ٴBL2S1$NIn(%#vFaHQ2v]EfWiv^xDG5 sݣq:ӌKLlWAbq'v_ /$g9_e]R>&y;u 4#_(]- 7t<LUMi7Z+4)Qr܎hq<"X˒U6 xꭕC*uetW Zo]C]xSN3,<*1:{g=pۛ2UV-'ҥOAB%qjBt(5JL۶<ݞq0d}=7u/%J tstO:0۩__=434JG|1+5H\W%"ܳ~9Q:76Jص"p'Y˩!:DiB#t!I>Ҋ,HǮ~]M-wTFNi!. Xޅe5qyߚaz*>Rhb\WUЩQnJd#@jVݥ J=Deu孥n9sJbL9W҅W煱kI֖="蝙BnF>-/Z):=Hu.")u_Ee)Z4@TZqDV uY.K)*=.PLRO4aAFFn1nHnfZuf6uaK,RЫmFS?m= 64xSng*եyM<6q}#12ԫ\\ޞۨB-)KR0Όd {aԺҰ Yh6SabZU)LJА 4ĞH*vec͌&GLT L16/lw[IՆлSO&UO%bn@m(?{"|-RMUgYJ#]Sk.]}anP Kѩ7tW ,XL"שmJBR{c"=Go46zi@zdP߭#1dfz8Uil~ ;e40wX#=A^gfghtY=Uui_~jc/aĻ+ubUjS! ANҥ]ЩYBKY^[R] LhRv͒V="P~XEH>T.="ܤ[?KGU-SX$sw@ChS,ݶ4JM(ťJkP)PthrVSKMq:+qw;FUpQrVGLdRNmD;8^&oCT9ߙ)(f{a#psV4 ])XiMՉlծbϔ-%To"yKCFM*aMjPģ ŋI40Ċ.q?:u&i)a tBzmѿV򀴛iZJ\X[Vu:D:6l CM.J㌅fzs(m6[iSdHHma`SLϭ]KJ)U/!D& iũ,ڭg>oHjs&qU}k{r\MD-@aS:'ܻwKJq75q24} hp6HHA%K}#n\֌l̴Rg֭UwP+Zh JnK T.=ԎP&%\H>ZŶޞ 5k0-"=yO/EGd\'PbbQ4q%7*&2j8ְTLiP9y+ѥJe`RI)VU7v;?X[FX=51#T:ҁjFE- uoQnZHy}~wĦMIxZ(Ms*6퇲cjb,~k$P6; Xre#JcC/(jn(iBlQHHCCWBwZBGXrjZ];A*=FM*Qw2SJUl<-PP!k,`aQMQ~ӷCH̴?D iMBrC3\4 $ lጞSlum:H lMvjT!~XbjsoogS(jO I"Plrhv,LSuF0C8lN;׺6\VΘW,6uG)QmDHbۂ؏(Z#dY3 iqmeBk*n1ja"yTo'zFw-8#$<=wdJ'um:g޺-6WnjL%?D$BNF2ɉPqP|9(ĴʧJNޣ O:~cl-Ι ? &C"5%VÉ%; tJeLi]ImSJҨDYz(|0xҢ`}whf*%OzhBt,m<8ERa+w]Fia.Oq脢 ,&^T/9JZy~QFi)n4Ǽv¥$J6}s8or(0J7B[lQ pCH8 ג̩?ԯL%cî2N4薐nrN $uA3#fQXj"R#)e#IDS)!|gO6Z^̣F]:DM}UikE5`(`t ^ApC|bGOOQRgU9g;n6RYa9zd{doL6CTۼUӉR-)P$\=3W!/iu\4C 忿QxF#I5FN B %WiUz̶O)[.mLo>ԧq=0!^nd0N>ptlѤbkH\sl0Ay{&2M6PܱUխiuV,So1.-'yMjޭUt p&;< $ nj})0/8=ZHm8r~F¼֯z`W CV&[*/%'ڹj!c' }!}\ AO]bC&JtySah,ck;'ӳ%UfJ{8("'muRxakؙ4Pq>g!NSYXiŒhIRTUy2y(e'%&_zdb 4ڹ4vS ӽG6 X&LS@&')>~}'<޼@NrL*;o`,)Y9/%5 h(?L}ToCFP,:b?eqs8F*>UIpE Q~XTlWfO9JEū%gHmG»|IQi,*ڒkx8I{z_KHҊV;z,U`*~Q +:GN+ciuшM;; I,#ï"Us3k@L̖Y  &)TatJCb86k6@$6|'ڭ?Jy.{jM*ڇ>QJm+,m4B@_0&Jw)'~ctuBPC:Nb9HYu@ꉉGP5ix[w 3#{+䧝Ҹ!g~/$vCJ]CTP4u$”p_.e/;׼VيxJEMxOXũR0֕U&b)5Ug<4YQĘDU:Ca8t܅yFδĆ[!mԧjkQ >dI ko2_YT6F)~(tvPu%tf6a=)_ 120q=#f/rQYZwwÒu1HKL“k~0ZHJ.鶀v8S_N]D:{n$İW)I^|bm{WJ'u3+U Ov.{U U2v'[,7a"RId Uԏ#%݅zgG0& m[ D vBI/a#il6P)jy.]{#輏7-.a~!~l5^yxaBq6)"EG/FUT,KJ,S^ʂ;}Gsz~MEl0o"U7ƍ|.ș= '0mxZ uEjDF+M dpde#399\ۡ'c'%O2$-z%΁85SQ12?铣O!+UMD;4YOpB ~Q :زKjXrm+IԙEo31\pmABr+䔤[Q3mGe*82={^NmXYoJF&͞5]$դfSNS[9ePf}{s3ݶWFRtN4DVMژmx@9_7uDpFRH5 ^}iGHz›mm4>0q!VRT+/ތmhV iR*qr=JRTQH}rTA\ }g΢A",k}4U#nsT!%څGTzTe)5Y4 !@X[7*QTٯd3giY=M'4_l4^r\(!1AQaq 0?!N2j4ϩM"v]JɌ`EJЗX;ԡk1nE<1U&.ETwV*Uݯ*"Ϥ('͵d"IwvwXmmM5h#LK=ʔw[{86ˆ44Iԥcj ކ3cD` 5p I2ڊ$?1xa=5sEkr`J" A[.(id%,F{̿ d[Jjn#UL+J6_P#^TV;Uoֹ5{{kCǪx'$fs]^OBQ;, @K0Ek#2L5z5&7W4RxfzJД1JMh03zjLD?SRIZlDZ4)IYQv޶㚷WrtVrPK?*^RWcS:ߵڦm%B:½C@+CT'/TP3Ǫl`ZAldB>ި3Ma81l#ՇBUѹYaҖز҃8qJ tSmwNja>5pɾډD$*>*}'=WM@9*2ꙘZp| \z< s8\ˈAv7MpkB_K\ bG25qٷJDZRV,gi!=ҰsȮMMڍU0 (0&B|^O.-yQ9K&jwbRҡ,ž R6᷶P?-nPz(:eEBR&V4۩K|as[&ViF5Ɇ{hKJXZe?&7(.& C,cN6(;JG7u*N,}F 㖎":~띨;0),ej8yhd[[!$+9g /\xhiAwteA$"sxmD(!TsR_~Q)N.fY_;x1F?2- jVkIٱX8@s4d$iMTҌ^'QzX5fD-ЗY5D`Y.H% aTخOhR\7R'?V'A3gSȇ.1 tN \[H Bl~ |"tz97`Au.#GiRCβ,!?,HDҗ4T1ev5u9t\ AXnƽkESdBE`MkNmDȤ@J.: S6?֡K|f #x4+Z 9 )N(WiQ7 mI+cJ\,pKrZ1G2TZ҄4gHhtjhCC2ԆA_jJ%(7H*I]r'Ix\L!؅gUّ^8['5#E_{* G-E.p]F@ ~r ,Qw&2.WV OPFiMmw;})RoBcuTn*R[z0.[J׊؅Ci9;-<-TE=(h-T/b_@etl>KՀ%Z(&Cy{̻tpN Qg߁#L^1y L]JG vڄT'zBԍy~_kXuc-V*._rWKafQ>\o]c ʬ9kgjR#)-i PEY\,9K##8cjV7#bc֙'HM*M+1OC|0H/⦆ߺ\FBϖ oR i!s0#†*xX>KsKTРGYƴ#ZYq`AGRc< j4샷F|Z ]]jZP%_уgzHMtf<!ܥ4i&$+7d.j0@K:Ȳj;f*wљ5FqEzoLl.SK׵,E kPFcN.qjoVcޚ/W4!ZfՂ1u QoF%%De^ʘj>KT b驸Zv4D3H$ Vms/jR+*7Go%=X*"*N3 b''%<)(b?hz(4xUuroP%m"_4{)Lׅq\CgjǽDq[h(, >hlw'Ƚn)C}6}}1 4lDa9f-IYiX|跺ѓ6_pV,>qS!l.ZbkVBaDlJPՓf]ڦKε<ǼUy7,Rw(1eu8.\Ή7Ph\ YfJk~ g+[Cpj]A1B4?қ'Sҕ<ԣ!Ed| 0@yP |!՝?IMlzv[T%^ ~MOi7ٯ~NtnP<p:uzĐoLDx'{2%Hέa$<\!i4* w#c S7֔!NmW1BEժiu'bQJaҫ7]=5{I,ڝbÄJ>fIFKG.?#)3uDuXe@WHS+L'~5"OiBH @i8*z%:U0/F% ,YX%#d\) -*31Ԗ@/-GT^WX3lSAO}l$en>}Z&@zI, f,JJ[69Bvq-R{A0(@YrR,D<-Y?U(.;S0zՍtޜxI/A?sPFݕ|P`*/)אvpʝ+%\ZBuK~ 촙NI= 42:٤K\|iWA8M(ZVa;ڥZpQX֡*#-?Ż)_Z_h'Ht5˵?ORhɼir{,L(xԸ' ۤ^hz1QLXգQN qiu?+nV*"$s[er`TBYu[- ^ umFH_cC-k`kFF82Ƌ /Jb߀L0(GNU,7'ϙ?8Da{񜏮zuҥ'Xx/Nej)Mk5ub~jVЀ~ z8}5Si=( ܷa)Q6mf+5iEpgQJW+>rvh:O3-&Ei塻Kw,5`ަgT/bΕnG2Ԧ\ Zų@&>[[%9|y,,E*9tTY{Ԫ&F'5 <9+(j|&:EU9-TK_n`=ǚ=Kt̗L[5FȰ{U@*/çǭH|gN` j'UdG,onЛ`-.e4R5œ>6jmj^+7V' P$C8k0c4ax>V}Ij sUda[GVec'WpLkply>I{(ҹLP^P RؾTHZC?`PZ?:F:^~]j..DK nphY.ӭNoL?9`L!ė<4R 8ˬG }{$˾j=~(Qnޑ]L.$h4yC桭#x=E<k" .r=58 I"&HWNu"tyEhMR-rõzul撼2r丱LI/gݵ]jC?Rn?UC7<=ڏHDDn.ofF{ht&jCI._}ʟE7||4 Y*Wj^Z.-{M[YZȩ>T'}4&3q!c>ln܏EC];iQĚ蛉s 1oZ+F[ļ-Idvp Rf?];mu`-u,Gqr\8!{*UlL%L[5˧~$D!cvwֹlPڍ{~.oUY gt% 4yEՀH3uՠLS$nK>>-lEi467'dSK !BI@O55̕gB$O"ȸ>S&&abRგY.qs0zd+٤{iP)E%O>T0 ޑ%}(Vd655N:7iL2=.2+_O+ #iMa^βd7ǚ? u)I@bz?>dY>JJ;Igq٦%|L0]-އCPoG'1ʔhyQ B"4,?TXAs0_3'&>XqgmJ#wCج/ޑ"? %9{H ~^d1FF?&{,[Zqn5a.dCڎ I2nR-Zl\tdqtYjY1S#O҃W+ږqJtn;o5cX,HL/]D8}4An 9L6ඛsSfQcq6E") C_j"I9zZOsШG%oO^?T)=ıgPGG஢HakPru5D-A pOW@.}Q*lZ% VqW6lQVTe@q;{:̚S]fiMRXhkLf;/0M:'ևJ qDA81BK b4< Q` 2("(s (AJ 0@ `8$"F $° j0n9pJ-;6$ OX875>]n܏&!hB}1_bZӣinx<AK{|Fos;xo Tz0 ֥>pNosfk*Ϝ՞0z2yɺTkzH58\OW_iǜT 0> |}]# [ ):l輂5J8h8AʃP(c +tޱg+3~vf^ M# @ysV*:CH7G.X6 8u?bֿN"P/+,{/-A꽻>r4 =8>y;9Hb=9vީr =#Ñ!{tGb_2PX+bi1TRA'X%6q? '=>lDz(k-4V25u__yN1ڀ=).t^Ś~0-)}2we}ct/*z D=ppC/Os4H6]+P| ~>I@@h ;$6kC 8 rA~mAg C*BbqmWp=qt;xK'%sms=n-c9IX!9hv 7wwZp- /,5636{)8]zc4'']d|hW.[b%\걯sŎ0kBvswnаty޷ {9yP=>h 8Ҙl`[QaHy$ S`wR JS(Jz7 k6GS*[e#FBmBpPCuyd5)s5s^| wdqwcR&  Y:ܧ/Oo#!yP~q3Ա-NN+`/{݂iJ `F4GA8TU-/|24k@L StW`o"O X/LfI?Ò%䂦ǏK]8BAnQ%QgB(blG&CZ(E,!|">" +g{>xA5yc;KͫvHc -Ԁ[*:|p(+,>cewFg Lki9^kb :4x. @uwixwtɆJKv~> D@a᭡bFt9gJEP'EҮJq?9AdͦE71hfуc01}gf۔!!9+8>?xfvm||A5.2b ?m̮ ">ʒi!AS[(fm\an?Y|N@9\q|v_ djAa]UXpa8֢vWo'0nCQl#N`A# WJ[4jkX^HN7:F[8)٣姆*TJD5.I%w^Rߒ![7gj8٤Qp,l`Hk߇9Іp\eCM8Py jdNR|H0ybJ_(ꛋo9WvwP'csi(`t|(}_TFm%Hhr* i6zzو@T?CF'd#rΘ^?_ A{.r( w NA`4@XܫII?yf&i⡧~V"pfm=8~0Xp`X=fB3׃ ^ii꺺 5%c!F :lУhJ/_}:vGUo#h7% ބͧȏNj0 :u.#t qHSEB)vmu1,<bt鼆s ˺y9*3~oґ><Ɨ[ew.le//͑.(VAr("O쨼+`bJMsawGy >22P7S7dih7S66R>6 FIrWbZ!^nRtW־OoD"j;:s@:Z\Mg`DX L"hQirDՀ대9M:HA!sqn iL ӇTu?q f"{d>h|`l/x gKA QU&D&V!7`F+r%} Ҳل>QMKԯI{sd%S\z;/M4 O-܊Gh d% /&FuG o.UlQH'q! a^z(iTַrDٕOœy4 ں^w_L |"E٦p`rp40h@#MH%vyA8JLtO=3'Q2Z$صX %py+zQQ1qo5"UqPJFC`}}C-x}^WaJ@[A-\1N Ì$D?7j<~0iݾ"X(;j6s.pj7)<h(Ǖ5MN֍l3NWOW]VA 9tX ;FE8˞v;HMHÒS&+pdKOhxI܈5xjvvldীo,krgzJ7< Xw@PQP;"G˕H&X4HX|B8]PUvh8j!FbEpʺwO" n7 Ū#mC"Z% ?L|S9O mAX/SX]aY}g,@}7AaLJx%uZnjơ5IR`d yzv z4|wSfOb=&. sDDC„>+{Bh,߉2<9D.q+.R& >szUX)otWh . kL+*Z,m@d{vgoؿF#P&}.KD즺QAج5 Tbw %֖iG&A9\<9'G [1zҢ9>W|eFY~H7"e-Ծ;ʦ7K9^~`#M1Y&go}R(Ċgui+S^sh#Ylyϋ*{upaۛ(4ui" 9iCQ;LKyuT %D&̎dkۮ#C=9 0onBuH/5 ?'i3gt%"HOIX "C/)kL*'.+y;JK7, ;_BbL|8KWqNppFߜ >#,x aҍfؠئ[-׳aX{Rэt;h$3WV.I'mg!9=fˆA="ꓝ,ѯ;e] j($T VNfĦ  ~2qӉ;2^#/b7y2>b٧5ÙO@a"՗t8].ҳ.^x Ntuԙưn'5)ɅԱhàGeQ 7dFoW #{JCXzɲ{ESfҗ Zfۦv:^B"߰7|4%.@U-Sޥ-D%6By#nes2xi(xFc #Y+PaւNJzA2]=k'n 8CjyceHNCg$Gse/`R$fQcKqʂ\ #sL0ͯ pց"P>VG?to GS[4COƴYw,o[@,ZM­N0yᆐ&e.  w7VSVIohbՁ%Õ)K ? o b6 ,C "@X$0IhDS 3^ jz1QZryegnM0e㤠PF+R;`P&VBo9ѲN؇TRQuntC\kgP>T64),.|߮w'S8V-ۚג& 2F,OO9D{-ѯ5|֚q<0vs8/S4=7_:s=TS ؜ZWhtry'+ X^$+"2%bmx$5O\" Ű. !a6tMS/3S`t #X_A]hS`!٢ts+Vdm:"pD` q,nSliM!C`1lqPUp[jV-v#Va7YEgRVvJ_"# @ډsMEp;18)͖=7 [ӉsRNS>+YʋQSeƀֈ6C#NTvJTN>{O`=Dp(osf[毗ONgkOHR$SdfU/3bOvo<'iN(T2XSMƹZ5D;Q1Z`]#!dt¡9 Y:EꎋL(VpcHW`0D(Ψk(DV NaiBSOF PA%JC@kGBBQ,8+' 6gGFCuaEHPj\ \LRT͛h`j?/~xzcrƜP6yaR-۾r6ݬX2$(Wo: 8.,X-:U8bz%zy_&r>4:B,>*d+2O%P?,@†fvBx@1}‘O_>&w$ (gZv5 ZCt@׹*x"0|jE컘 N;4_g1bQy>]PjZ,/8n l\C%2Hq&.lb{| g#o)tʩXWnVU5T,A]u]do~l;\q_ \I:px|LTxǰ/e1()S 15a4.qOhډ䜹ˬ Ɯ&+Dlƒ--nNux&( ᨴ({s~ywXfpPO-Efv|i7_sF]H7W%z,(>BpCp7*Uln!>!cux%ߨpas{;hPڎ[&w*S#x؛;>gI._896T# 7_/p<|0l°0{@&7<7#]+٫PQ`~|cE&v |gl4yī%] **0NP[ӎ3})6 mŋ3 0%=c| [<+_:d`GHKSlq|@=\ }ȠB9 ㎲ Sw>ȃ/:Lu(8r}R14>Q}p)OY9} c~Ia_*T el/?g"r i1OBGīUvq;=yFW ܑ5I6)ӎ#W{5>Ĥ~?I'b50{=@6C]ck8}e#BnaE. 1Sѓ;|rK"d!*P a{7 ^`[ӭ<8 h eBh% mUN6&I %^4 u7ZpQ:hf 0R)P1' 2 Up,$~Kyh.QZJpBE(FΏTH8k}!O}kƪ!&w+PO#]8|dXnG3LJϬJ4d-Es;̅jnJks Kg(q"^E&945iBTS Ů{eb !B_H*A 87+zv+Q;Je82@kD`!HOq%HhKظRsEAӼ%`XluN*d7*]JQ!vc@Ͱm_z1b) W>25l&O^sCpQShԤHǘpcpdzG`l[{hLڗB,‚[1.}LfbFr/i[_9O1OI~Xhゴ7@MPH(;`_ e"<Ѧ#U[EH{@@'gY] xpɁ>ewr4H=b|F_Nsqdkq<;"-fQ >(J蘹X9Qo/spClr5:'ό l;OM%U\p\ O ] 'mo_|On *t#<8P9AOg.*J\. q_:KMp[˻@ 2 O!{F˺{~wjxS fr `.> D w_C_CM94FBW~FV\Sk1 ߕZ(Puc{rRϛvNiM7@bL=Lˤ`;=/ sG.FlVJP+c. 3LDvCq'uָ y:!}$ 9錮4#tT|oQ-l'/^é ĮZBvN3~~OX) ؈5d #aj{'s֌|\{䟄?9r^A?pohBNO!|L webadmin.php

/admin/thumb/phpthumb.functions.php


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\
65\
66\
67\
68\
69\
70\
71\
72\
73\
74\
75\
76\
77\
78\
79\
80\
81\
82\
83\
84\
85\
86\
87\
88\
89\
90\
91\
92\
93\
94\
95\
96\
97\
98\
99\
100\
101\
102\
103\
104\
105\
106\
107\
108\
109\
110\
111\
112\
113\
114\
115\
116\
117\
118\
119\
120\
121\
122\
123\
124\
125\
126\
127\
128\
129\
130\
131\
132\
133\
134\
135\
136\
137\
138\
139\
140\
141\
142\
143\
144\
145\
146\
147\
148\
149\
150\
151\
152\
153\
154\
155\
156\
157\
158\
159\
160\
161\
162\
163\
164\
165\
166\
167\
168\
169\
170\
171\
172\
173\
174\
175\
176\
177\
178\
179\
180\
181\
182\
183\
184\
185\
186\
187\
188\
189\
190\
191\
192\
193\
194\
195\
196\
197\
198\
199\
200\
201\
202\
203\
204\
205\
206\
207\
208\
209\
210\
211\
212\
213\
214\
215\
216\
217\
218\
219\
220\
221\
222\
223\
224\
225\
226\
227\
228\
229\
230\
231\
232\
233\
234\
235\
236\
237\
238\
239\
240\
241\
242\
243\
244\
245\
246\
247\
248\
249\
250\
251\
252\
253\
254\
255\
256\
257\
258\
259\
260\
261\
262\
263\
264\
265\
266\
267\
268\
269\
270\
271\
272\
273\
274\
275\
276\
277\
278\
279\
280\
281\
282\
283\
284\
285\
286\
287\
288\
289\
290\
291\
292\
293\
294\
295\
296\
297\
298\
299\
300\
301\
302\
303\
304\
305\
306\
307\
308\
309\
310\
311\
312\
313\
314\
315\
316\
317\
318\
319\
320\
321\
322\
323\
324\
325\
326\
327\
328\
329\
330\
331\
332\
333\
334\
335\
336\
337\
338\
339\
340\
341\
342\
343\
344\
345\
346\
347\
348\
349\
350\
351\
352\
353\
354\
355\
356\
357\
358\
359\
360\
361\
362\
363\
364\
365\
366\
367\
368\
369\
370\
371\
372\
373\
374\
375\
376\
377\
378\
379\
380\
381\
382\
383\
384\
385\
386\
387\
388\
389\
390\
391\
392\
393\
394\
395\
396\
397\
398\
399\
400\
401\
402\
403\
404\
405\
406\
407\
408\
409\
410\
411\
412\
413\
414\
415\
416\
417\
418\
419\
420\
421\
422\
423\
424\
425\
426\
427\
428\
429\
430\
431\
432\
433\
434\
435\
436\
437\
438\
439\
440\
441\
442\
443\
444\
445\
446\
447\
448\
449\
450\
451\
452\
453\
454\
455\
456\
457\
458\
459\
460\
461\
462\
463\
464\
465\
466\
467\
468\
469\
470\
471\
472\
473\
474\
475\
476\
477\
478\
479\
480\
481\
482\
483\
484\
485\
486\
487\
488\
489\
490\
491\
492\
493\
494\
495\
496\
497\
498\
499\
500\
501\
502\
503\
504\
505\
506\
507\
508\
509\
510\
511\
512\
513\
514\
515\
516\
517\
518\
519\
520\
521\
522\
523\
524\
525\
526\
527\
528\
529\
530\
531\
532\
533\
534\
535\
536\
537\
538\
539\
540\
541\
542\
543\
544\
545\
546\
547\
548\
549\
550\
551\
552\
553\
554\
555\
556\
557\
558\
559\
560\
561\
562\
563\
564\
565\
566\
567\
568\
569\
570\
571\
572\
573\
574\
575\
576\
577\
578\
579\
580\
581\
582\
583\
584\
585\
586\
587\
588\
589\
590\
591\
592\
593\
594\
595\
596\
597\
598\
599\
600\
601\
602\
603\
604\
605\
606\
607\
608\
609\
610\
611\
612\
613\
614\
615\
616\
617\
618\
619\
620\
621\
622\
623\
624\
625\
626\
627\
628\
629\
630\
631\
632\
633\
634\
635\
636\
637\
638\
639\
640\
641\
642\
643\
644\
645\
646\
647\
648\
649\
650\
651\
652\
653\
654\
655\
656\
657\
658\
659\
660\
661\
662\
663\
664\
665\
666\
667\
668\
669\
670\
671\
672\
673\
674\
675\
676\
677\
678\
679\
680\
681\
682\
683\
684\
685\
686\
687\
688\
689\
690\
691\
692\
693\
694\
695\
696\
697\
698\
699\
700\
701\
702\
703\
704\
705\
706\
707\
708\
709\
710\
711\
712\
713\
714\
715\
716\
717\
718\
719\
720\
721\
722\
723\
724\
725\
726\
727\
728\
729\
730\
731\
732\
733\
734\
735\
736\
737\
738\
739\
740\
741\
742\
743\
744\
745\
746\
747\
748\
749\
750\
751\
752\
753\
754\
755\
756\
757\
758\
759\
760\
761\
762\
763\
764\
765\
766\
767\
768\
769\
770\
771\
772\
773\
774\
775\
776\
777\
778\
779\
780\
781\
782\
783\
784\
785\
786\
787\
788\
789\
790\
791\
792\
793\
794\
795\
796\
797\
798\
799\
800\
801\
802\
803\
804\
805\
806\
807\
808\
809\
810\
811\
812\
813\
814\
815\
816\
817\
818\
819\
820\
821\
822\
823\
824\
825\
826\
827\
828\
829\
830\
831\
832\
833\
834\
835\
836\
837\
838\
839\
840\
841\
842\
843\
844\
845\
846\
847\
848\
849\
850\
851\
852\
853\
854\
855\
856\
857\
858\
859\
860\
861\
862\
863\
864\
865\
866\
867\
868\
869\
870\
871\
872\
873\
874\
875\
876\
877\
878\
879\
880\
881\
882\
883\
884\
885\
886\
887\
888\
889\
890\
891\
892\
893\
894\
895\
896\
897\
898\
899\
900\
901\
902\
903\
904\
905\
906\
907\
908\
909\
910\
911\
912\
913\
914\
915\
916\
917\
918\
919\
920\
921\
922\
923\
924\
925\
926\
927\
928\
929\
930\
931\
932\
933\
934\
935\
936\
937\
938\
939\
940\
941\
942\
943\
944\
945\
946\
947\
948\
949\
950\
951\
952\
953\
954\
955\
956\
957\
958\
959\
960\
961\
962\
963\
964\
965\
966\
967\
968\
969\
970\
971\
972\
973\
974\
975\
976\
977\
978\
979\
980\
981\
982\
983\
984\
985\
986\
987\
988\
989\
990\
991\
992\
993\
994\
995\
996\
997\
998\
999\
1000\
1001\
1002\
1003\
1004\
1005\
1006\
1007\
1008\
1009\
1010\
1011\
1012\
1013\
1014\
1015\
1016\
1017\
1018\
1019\
1020\
1021\
1022\
1023\
1024\
1025\
1026\
1027\
1028\
1029\
1030\
1031\
1032\
1033\
1034\
1035\
1036\
1037\
1038\
1039\
1040\
1041\
1042\
1043\
1044\

<?php

//////////////////////////////////////////////////////////////
///  phpThumb() by James Heinrich <info@silisoftware.com>   //
//        available at http://phpthumb.sourceforge.net     ///
//////////////////////////////////////////////////////////////
///                                                         //
// phpthumb.functions.php - general support functions       //
//                                                         ///
//////////////////////////////////////////////////////////////

class phpthumb_functions {

    function 
user_function_exists($functionname) {
        if (
function_exists('get_defined_functions')) {
            static 
$get_defined_functions = array();
            if (empty(
$get_defined_functions)) {
                
$get_defined_functions get_defined_functions();
            }
            return 
in_array(strtolower($functionname), $get_defined_functions['user']);
        }
        return 
function_exists($functionname);
    }


    function 
builtin_function_exists($functionname) {
        if (
function_exists('get_defined_functions')) {
            static 
$get_defined_functions = array();
            if (empty(
$get_defined_functions)) {
                
$get_defined_functions get_defined_functions();
            }
            return 
in_array(strtolower($functionname), $get_defined_functions['internal']);
        }
        return 
function_exists($functionname);
    }


    function 
version_compare_replacement_sub($version1$version2$operator='') {
        
// If you specify the third optional operator argument, you can test for a particular relationship.
        // The possible operators are: <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne respectively.
        // Using this argument, the function will return 1 if the relationship is the one specified by the operator, 0 otherwise.

        // If a part contains special version strings these are handled in the following order: dev < (alpha = a) < (beta = b) < RC < pl
        
static $versiontype_lookup = array();
        if (empty(
$versiontype_lookup)) {
            
$versiontype_lookup['dev']   = 10001;
            
$versiontype_lookup['a']     = 10002;
            
$versiontype_lookup['alpha'] = 10002;
            
$versiontype_lookup['b']     = 10003;
            
$versiontype_lookup['beta']  = 10003;
            
$versiontype_lookup['RC']    = 10004;
            
$versiontype_lookup['pl']    = 10005;
        }
        if (isset(
$versiontype_lookup[$version1])) {
            
$version1 $versiontype_lookup[$version1];
        }
        if (isset(
$versiontype_lookup[$version2])) {
            
$version2 $versiontype_lookup[$version2];
        }

        switch (
$operator) {
            case 
'<':
            case 
'lt':
                return 
intval($version1 $version2);
                break;
            case 
'<=':
            case 
'le':
                return 
intval($version1 <= $version2);
                break;
            case 
'>':
            case 
'gt':
                return 
intval($version1 $version2);
                break;
            case 
'>=':
            case 
'ge':
                return 
intval($version1 >= $version2);
                break;
            case 
'==':
            case 
'=':
            case 
'eq':
                return 
intval($version1 == $version2);
                break;
            case 
'!=':
            case 
'<>':
            case 
'ne':
                return 
intval($version1 != $version2);
                break;
        }
        if (
$version1 == $version2) {
            return 
0;
        } elseif (
$version1 $version2) {
            return -
1;
        }
        return 
1;
    }


    function 
version_compare_replacement($version1$version2$operator='') {
        if (
function_exists('version_compare')) {
            
// built into PHP v4.1.0+
            
return version_compare($version1$version2$operator);
        }

        
// The function first replaces _, - and + with a dot . in the version strings
        
$version1 strtr($version1'_-+''...');
        
$version2 strtr($version2'_-+''...');

        
// and also inserts dots . before and after any non number so that for example '4.3.2RC1' becomes '4.3.2.RC.1'.
        // Then it splits the results like if you were using explode('.',$ver). Then it compares the parts starting from left to right.
        
$version1 eregi_replace('([0-9]+)([A-Z]+)([0-9]+)''\\1.\\2.\\3'$version1);
        
$version2 eregi_replace('([0-9]+)([A-Z]+)([0-9]+)''\\1.\\2.\\3'$version2);

        
$parts1 explode('.'$version1);
        
$parts2 explode('.'$version1);
        
$parts_count max(count($parts1), count($parts2));
        for (
$i 0$i $parts_count$i++) {
            
$comparison phpthumb_functions::version_compare_replacement_sub($version1$version2$operator);
            if (
$comparison != 0) {
                return 
$comparison;
            }
        }
        return 
0;
    }


    function 
phpinfo_array() {
        static 
$phpinfo_array = array();
        if (empty(
$phpinfo_array)) {
            
ob_start();
            
phpinfo();
            
$phpinfo ob_get_contents();
            
ob_end_clean();
            
$phpinfo_array explode("\n"$phpinfo);
        }
        return 
$phpinfo_array;
    }


    function 
exif_info() {
        static 
$exif_info = array();
        if (empty(
$exif_info)) {
            
// based on code by johnschaefer at gmx dot de
            // from PHP help on gd_info()
            
$exif_info = array(
                
'EXIF Support'           => '',
                
'EXIF Version'           => '',
                
'Supported EXIF Version' => '',
                
'Supported filetypes'    => ''
            
);
            
$phpinfo_array phpthumb_functions::phpinfo_array();
            foreach (
$phpinfo_array as $line) {
                
$line trim(strip_tags($line));
                foreach (
$exif_info as $key => $value) {
                    if (
strpos($line$key) === 0) {
                        
$newvalue trim(str_replace($key''$line));
                        
$exif_info[$key] = $newvalue;
                    }
                }
            }
        }
        return 
$exif_info;
    }


    function 
ImageTypeToMIMEtype($imagetype) {
        if (
function_exists('image_type_to_mime_type') && ($imagetype >= 1) && ($imagetype <= 16)) {
            
// PHP v4.3.0+
            
return image_type_to_mime_type($imagetype);
        }
        static 
$image_type_to_mime_type = array(
            
1  => 'image/gif',                     // IMAGETYPE_GIF
            
2  => 'image/jpeg',                    // IMAGETYPE_JPEG
            
3  => 'image/png',                     // IMAGETYPE_PNG
            
4  => 'application/x-shockwave-flash'// IMAGETYPE_SWF
            
5  => 'image/psd',                     // IMAGETYPE_PSD
            
6  => 'image/bmp',                     // IMAGETYPE_BMP
            
7  => 'image/tiff',                    // IMAGETYPE_TIFF_II (intel byte order)
            
8  => 'image/tiff',                    // IMAGETYPE_TIFF_MM (motorola byte order)
            
9  => 'application/octet-stream',      // IMAGETYPE_JPC
            
10 => 'image/jp2',                     // IMAGETYPE_JP2
            
11 => 'application/octet-stream',      // IMAGETYPE_JPX
            
12 => 'application/octet-stream',      // IMAGETYPE_JB2
            
13 => 'application/x-shockwave-flash'// IMAGETYPE_SWC
            
14 => 'image/iff',                     // IMAGETYPE_IFF
            
15 => 'image/vnd.wap.wbmp',            // IMAGETYPE_WBMP
            
16 => 'image/xbm',                     // IMAGETYPE_XBM

            
'gif'  => 'image/gif',                 // IMAGETYPE_GIF
            
'jpg'  => 'image/jpeg',                // IMAGETYPE_JPEG
            
'jpeg' => 'image/jpeg',                // IMAGETYPE_JPEG
            
'png'  => 'image/png',                 // IMAGETYPE_PNG
            
'bmp'  => 'image/bmp',                 // IMAGETYPE_BMP
            
'ico'  => 'image/x-icon',
        );

        return (isset(
$image_type_to_mime_type[$imagetype]) ? $image_type_to_mime_type[$imagetype] : false);
    }


    function 
TranslateWHbyAngle($width$height$angle) {
        if ((
$angle 180) == 0) {
            return array(
$width$height);
        }
        
$newwidth  = (abs(sin(deg2rad($angle))) * $height) + (abs(cos(deg2rad($angle))) * $width);
        
$newheight = (abs(sin(deg2rad($angle))) * $width)  + (abs(cos(deg2rad($angle))) * $height);
        return array(
$newwidth$newheight);
    }

    function 
HexCharDisplay($string) {
        
$len strlen($string);
        
$output '';
        for (
$i 0$i $len$i++) {
            
$output .= ' 0x'.str_pad(dechex(ord($string{$i})), 2'0'STR_PAD_LEFT);
        }
        return 
$output;
    }


    function 
IsHexColor($HexColorString) {
        return 
eregi('^[0-9A-F]{6}$'$HexColorString);
    }


    function 
ImageColorAllocateAlphaSafe(&$gdimg_hexcolorallocate$R$G$B$alpha=false) {
        if (
phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2''>=') && ($alpha !== false)) {
            return 
ImageColorAllocateAlpha($gdimg_hexcolorallocate$R$G$Bintval($alpha));
        } else {
            return 
ImageColorAllocate($gdimg_hexcolorallocate$R$G$B);
        }
    }

    function 
ImageHexColorAllocate(&$gdimg_hexcolorallocate$HexColorString$dieOnInvalid=false$alpha=false) {
        if (!
is_resource($gdimg_hexcolorallocate)) {
            die(
'$gdimg_hexcolorallocate is not a GD resource in ImageHexColorAllocate()');
        }
        if (
phpthumb_functions::IsHexColor($HexColorString)) {
            
$R hexdec(substr($HexColorString02));
            
$G hexdec(substr($HexColorString22));
            
$B hexdec(substr($HexColorString42));
            return 
phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_hexcolorallocate$R$G$B$alpha);
        }
        if (
$dieOnInvalid) {
            die(
'Invalid hex color string: "'.$HexColorString.'"');
        }
        return 
ImageColorAllocate($gdimg_hexcolorallocate0x000x000x00);
    }


    function 
HexColorXOR($hexcolor) {
        return 
strtoupper(str_pad(dechex(~hexdec($hexcolor) & 0xFFFFFF), 6'0'STR_PAD_LEFT));
    }


    function 
GetPixelColor(&$img$x$y) {
        if (!
is_resource($img)) {
            return 
false;
        }
        return @
ImageColorsForIndex($img, @ImageColorAt($img$x$y));
    }


    function 
PixelColorDifferencePercent($currentPixel$targetPixel) {
        
$diff 0;
        foreach (
$targetPixel as $channel => $currentvalue) {
            
$diff max($diff, (max($currentPixel[$channel], $targetPixel[$channel]) - min($currentPixel[$channel], $targetPixel[$channel])) / 255);
        }
        return 
$diff 100;
    }

    function 
GrayscaleValue($r$g$b) {
        return 
round(($r 0.30) + ($g 0.59) + ($b 0.11));
    }


    function 
GrayscalePixel($OriginalPixel) {
        
$gray phpthumb_functions::GrayscaleValue($OriginalPixel['red'], $OriginalPixel['green'], $OriginalPixel['blue']);
        return array(
'red'=>$gray'green'=>$gray'blue'=>$gray);
    }


    function 
GrayscalePixelRGB($rgb) {
        
$r = ($rgb >> 16) & 0xFF;
        
$g = ($rgb >>  8) & 0xFF;
        
$b =  $rgb        0xFF;
        return (
$r 0.299) + ($g 0.587) + ($b 0.114);
    }


    function 
ScaleToFitInBox($width$height$maxwidth=null$maxheight=null$allow_enlarge=true$allow_reduce=true) {
        
$maxwidth  = (is_null($maxwidth)  ? $width  $maxwidth);
        
$maxheight = (is_null($maxheight) ? $height $maxheight);
        
$scale_x 1;
        
$scale_y 1;
        if ((
$width $maxwidth) || ($width $maxwidth)) {
            
$scale_x = ($maxwidth $width);
        }
        if ((
$height $maxheight) || ($height $maxheight)) {
            
$scale_y = ($maxheight $height);
        }
        
$scale min($scale_x$scale_y);
        if (!
$allow_enlarge) {
            
$scale min($scale1);
        }
        if (!
$allow_reduce) {
            
$scale max($scale1);
        }
        return 
$scale;
    }

    function 
ImageCopyResampleBicubic($dst_img$src_img$dst_x$dst_y$src_x$src_y$dst_w$dst_h$src_w$src_h) {
        
// ron at korving dot demon dot nl
        // http://www.php.net/imagecopyresampled

        
$scaleX = ($src_w 1) / $dst_w;
        
$scaleY = ($src_h 1) / $dst_h;

        
$scaleX2 $scaleX 2.0;
        
$scaleY2 $scaleY 2.0;

        
$isTrueColor ImageIsTrueColor($src_img);

        for (
$y $src_y$y $src_y $dst_h$y++) {
            
$sY   $y $scaleY;
            
$siY  = (int) $sY;
            
$siY2 = (int) $sY $scaleY2;

            for (
$x $src_x$x $src_x $dst_w$x++) {
                
$sX   $x $scaleX;
                
$siX  = (int) $sX;
                
$siX2 = (int) $sX $scaleX2;

                if (
$isTrueColor) {

                    
$c1 ImageColorAt($src_img$siX$siY2);
                    
$c2 ImageColorAt($src_img$siX$siY);
                    
$c3 ImageColorAt($src_img$siX2$siY2);
                    
$c4 ImageColorAt($src_img$siX2$siY);

                    
$r = (( $c1             +  $c2             +  $c3             +  $c4            ) >> 2) & 0xFF0000;
                    
$g = ((($c1 0x00FF00) + ($c2 0x00FF00) + ($c3 0x00FF00) + ($c4 0x00FF00)) >> 2) & 0x00FF00;
                    
$b = ((($c1 0x0000FF) + ($c2 0x0000FF) + ($c3 0x0000FF) + ($c4 0x0000FF)) >> 2);

                } else {

                    
$c1 ImageColorsForIndex($src_imgImageColorAt($src_img$siX$siY2));
                    
$c2 ImageColorsForIndex($src_imgImageColorAt($src_img$siX$siY));
                    
$c3 ImageColorsForIndex($src_imgImageColorAt($src_img$siX2$siY2));
                    
$c4 ImageColorsForIndex($src_imgImageColorAt($src_img$siX2$siY));

                    
$r = ($c1['red']   + $c2['red']   + $c3['red']   + $c4['red'] )  << 14;
                    
$g = ($c1['green'] + $c2['green'] + $c3['green'] + $c4['green']) <<  6;
                    
$b = ($c1['blue']  + $c2['blue']  + $c3['blue']  + $c4['blue'] ) >>  2;

                }
                
ImageSetPixel($dst_img$dst_x $x $src_x$dst_y $y $src_y$r+$g+$b);
            }
        }
        return 
true;
    }


    function 
ImageCreateFunction($x_size$y_size) {
        
$ImageCreateFunction 'ImageCreate';
        if (
phpthumb_functions::gd_version() >= 2.0) {
            
$ImageCreateFunction 'ImageCreateTrueColor';
        }
        if (!
function_exists($ImageCreateFunction)) {
            return 
phpthumb::ErrorImage($ImageCreateFunction.'() does not exist - no GD support?');
        }
        if ((
$x_size <= 0) || ($y_size <= 0)) {
            return 
phpthumb::ErrorImage('Invalid image dimensions: '.$ImageCreateFunction.'('.$x_size.', '.$y_size.')');
        }
        return 
$ImageCreateFunction(round($x_size), round($y_size));
    }


    function 
ImageCopyRespectAlpha(&$dst_im, &$src_im$dst_x$dst_y$src_x$src_y$src_w$src_h$opacity_pct=100) {
        
$opacipct $opacity_pct 100;
        for (
$x $src_x$x $src_w$x++) {
            for (
$y $src_y$y $src_h$y++) {
                
$RealPixel    phpthumb_functions::GetPixelColor($dst_im$dst_x $x$dst_y $y);
                
$OverlayPixel phpthumb_functions::GetPixelColor($src_im$x$y);
                
$alphapct $OverlayPixel['alpha'] / 127;
                
$overlaypct = ($alphapct) * $opacipct;

                
$newcolor phpthumb_functions::ImageColorAllocateAlphaSafe(
                    
$dst_im,
                    
round($RealPixel['red']   * ($overlaypct)) + ($OverlayPixel['red']   * $overlaypct),
                    
round($RealPixel['green'] * ($overlaypct)) + ($OverlayPixel['green'] * $overlaypct),
                    
round($RealPixel['blue']  * ($overlaypct)) + ($OverlayPixel['blue']  * $overlaypct),
                    
//$RealPixel['alpha']);
                    
0);

                
ImageSetPixel($dst_im$dst_x $x$dst_y $y$newcolor);
            }
        }
        return 
true;
    }


    function 
ProportionalResize($old_width$old_height$new_width=false$new_height=false) {
        
$old_aspect_ratio $old_width $old_height;
        if ((
$new_width === false) && ($new_height === false)) {
            return 
false;
        } elseif (
$new_width === false) {
            
$new_width $new_height $old_aspect_ratio;
        } elseif (
$new_height === false) {
            
$new_height $new_width $old_aspect_ratio;
        }
        
$new_aspect_ratio $new_width $new_height;
        if (
$new_aspect_ratio == $old_aspect_ratio) {
            
// great, done
        
} elseif ($new_aspect_ratio $old_aspect_ratio) {
            
// limited by width
            
$new_height $new_width $old_aspect_ratio;
        } elseif (
$new_aspect_ratio $old_aspect_ratio) {
            
// limited by height
            
$new_width $new_height $old_aspect_ratio;
        }
        return array(
intval(round($new_width)), intval(round($new_height)));
    }


    function 
FunctionIsDisabled($function) {
        static 
$DisabledFunctions null;
        if (
is_null($DisabledFunctions)) {
            
$disable_functions_local  explode(',',     strtolower(@ini_get('disable_functions')));
            
$disable_functions_global explode(','strtolower(@get_cfg_var('disable_functions')));
            foreach (
$disable_functions_local as $key => $value) {
                
$DisabledFunctions[trim($value)] = 'local';
            }
            foreach (
$disable_functions_global as $key => $value) {
                
$DisabledFunctions[trim($value)] = 'global';
            }
            if (@
ini_get('safe_mode')) {
                
$DisabledFunctions['shell_exec']     = 'local';
                
$DisabledFunctions['set_time_limit'] = 'local';
            }
        }
        return isset(
$DisabledFunctions[strtolower($function)]);
    }


    function 
SafeExec($command) {
        static 
$AllowedExecFunctions = array();
        if (empty(
$AllowedExecFunctions)) {
            
$AllowedExecFunctions = array('shell_exec'=>true'passthru'=>true'system'=>true'exec'=>true);
            foreach (
$AllowedExecFunctions as $key => $value) {
                
$AllowedExecFunctions[$key] = !phpthumb_functions::FunctionIsDisabled($key);
            }
        }
        
$command .= ' 2>&1'// force redirect stderr to stdout
        
foreach ($AllowedExecFunctions as $execfunction => $is_allowed) {
            if (!
$is_allowed) {
                continue;
            }
            
$returnvalue false;
            switch (
$execfunction) {
                case 
'passthru':
                case 
'system':
                    
ob_start();
                    
$execfunction($command);
                    
$returnvalue ob_get_contents();
                    
ob_end_clean();
                    break;

                case 
'exec':
                    
$output = array();
                    
$lastline $execfunction($command$output);
                    
$returnvalue implode("\n"$output);
                    break;

                case 
'shell_exec':
                    
ob_start();
                    
$returnvalue $execfunction($command);
                    
ob_end_clean();
                    break;
            }
            return 
$returnvalue;
        }
        return 
false;
    }


    function 
ApacheLookupURIarray($filename) {
        
// apache_lookup_uri() only works when PHP is installed as an Apache module.
        
if (php_sapi_name() == 'apache') {
            
$keys = array('status''the_request''status_line''method''content_type''handler''uri''filename''path_info''args''boundary''no_cache''no_local_copy''allowed''send_bodyct''bytes_sent''byterange''clength''unparsed_uri''mtime''request_time');
            if (
$apacheLookupURIobject = @apache_lookup_uri($filename)) {
                
$apacheLookupURIarray = array();
                foreach (
$keys as $key) {
                    
$apacheLookupURIarray[$key] = @$apacheLookupURIobject->$key;
                }
                return 
$apacheLookupURIarray;
            }
        }
        return 
false;
    }


    function 
gd_is_bundled() {
        static 
$isbundled null;
        if (
is_null($isbundled)) {
            
$gd_info gd_info();
            
$isbundled = (strpos($gd_info['GD Version'], 'bundled') !== false);
        }
        return 
$isbundled;
    }


    function 
gd_version($fullstring=false) {
        static 
$cache_gd_version = array();
        if (empty(
$cache_gd_version)) {
            
$gd_info gd_info();
            if (
eregi('bundled \((.+)\)$'$gd_info['GD Version'], $matches)) {
                
$cache_gd_version[1] = $gd_info['GD Version'];  // e.g. "bundled (2.0.15 compatible)"
                
$cache_gd_version[0] = (float) $matches[1];     // e.g. "2.0" (not "bundled (2.0.15 compatible)")
            
} else {
                
$cache_gd_version[1] = $gd_info['GD Version'];                       // e.g. "1.6.2 or higher"
                
$cache_gd_version[0] = (float) substr($gd_info['GD Version'], 03); // e.g. "1.6" (not "1.6.2 or higher")
            
}
        }
        return 
$cache_gd_version[intval($fullstring)];
    }


    function 
filesize_remote($remotefile$timeout=10) {
        
$size false;
        
$url phpthumb_functions::ParseURLbetter($remotefile);
        if (
$fp = @fsockopen($url['host'], ($url['port'] ? $url['port'] : 80), $errno$errstr$timeout)) {
            
fwrite($fp'HEAD '.@$url['path'].@$url['query'].' HTTP/1.0'."\r\n".'Host: '.@$url['host']."\r\n\r\n");
            if (
phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0''>=')) {
                
stream_set_timeout($fp$timeout);
            }
            while (!
feof($fp)) {
                
$headerline fgets($fp4096);
                if (
eregi('^Content-Length: (.*)'$headerline$matches)) {
                    
$size intval($matches[1]);
                    break;
                }
            }
            
fclose ($fp);
        }
        return 
$size;
    }


    function 
filedate_remote($remotefile$timeout=10) {
        
$date false;
        
$url phpthumb_functions::ParseURLbetter($remotefile);
        if (
$fp = @fsockopen($url['host'], ($url['port'] ? $url['port'] : 80), $errno$errstr$timeout)) {
            
fwrite($fp'HEAD '.@$url['path'].@$url['query'].' HTTP/1.0'."\r\n".'Host: '.@$url['host']."\r\n\r\n");
            if (
phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0''>=')) {
                
stream_set_timeout($fp$timeout);
            }
            while (!
feof($fp)) {
                
$headerline fgets($fp4096);
                if (
eregi('^Last-Modified: (.*)'$headerline$matches)) {
                    
$date strtotime($matches[1]) - date('Z');
                    break;
                }
            }
            
fclose ($fp);
        }
        return 
$date;
    }


    function 
md5_file_safe($filename) {
        
// md5_file() doesn't exist in PHP < 4.2.0
        
if (function_exists('md5_file')) {
            return 
md5_file($filename);
        }
        if (
$fp = @fopen($filename'rb')) {
            
$rawData '';
            do {
                
$buffer fread($fp8192);
                
$rawData .= $buffer;
            } while (
strlen($buffer) > 0);
            
fclose($fp);
            return 
md5($rawData);
        }
        return 
false;
    }


    function 
nonempty_min() {
        
$arg_list func_get_args();
        
$acceptable = array();
        foreach (
$arg_list as $arg) {
            if (
$arg) {
                
$acceptable[] = $arg;
            }
        }
        return 
min($acceptable);
    }


    function 
LittleEndian2String($number$minbytes=1) {
        
$intstring '';
        while (
$number 0) {
            
$intstring $intstring.chr($number 255);
            
$number >>= 8;
        }
        return 
str_pad($intstring$minbytes"\x00"STR_PAD_RIGHT);
    }

    function 
OneOfThese() {
        
// return the first useful (non-empty/non-zero/non-false) value from those passed
        
$arg_list func_get_args();
        foreach (
$arg_list as $key => $value) {
            if (
$value) {
                return 
$value;
            }
        }
        return 
false;
    }

    function 
CaseInsensitiveInArray($needle$haystack) {
        
$needle strtolower($needle);
        foreach (
$haystack as $key => $value) {
            if (
is_array($value)) {
                
// skip?
            
} elseif ($needle == strtolower($value)) {
                return 
true;
            }
        }
        return 
false;
    }

    function 
URLreadFsock($host$file, &$errstr$successonly=true$port=80$timeout=10) {
        if (!
function_exists('fsockopen') || phpthumb_functions::FunctionIsDisabled('fsockopen')) {
            
$errstr 'fsockopen() unavailable';
            return 
false;
        }
        if (
$fp = @fsockopen($host80$errno$errstr$timeout)) {
            
$out  'GET '.$file.' HTTP/1.0'."\r\n";
            
$out .= 'Host: '.$host."\r\n";
            
$out .= 'Connection: Close'."\r\n\r\n";
            
fwrite($fp$out);

            
$isHeader true;
            
$Data_header '';
            
$Data_body   '';
            
$header_newlocation '';
            while (!
feof($fp)) {
                
$line fgets($fp1024);
                if (
$isHeader) {
                    
$Data_header .= $line;
                } else {
                    
$Data_body .= $line;
                }
                if (
eregi('^HTTP/[\\.0-9]+ ([0-9]+) (.+)$'rtrim($line), $matches)) {
                    list(
$dummy$errno$errstr) = $matches;
                    
$errno intval($errno);
                } elseif (
eregi('^Location: (.*)$'rtrim($line), $matches)) {
                    
$header_newlocation $matches[1];
                }
                if (
$isHeader && ($line == "\r\n")) {
                    
$isHeader false;
                    if (
$successonly) {
                        switch (
$errno) {
                            case 
200:
                                
// great, continue
                                
break;

                            default:
                                
$errstr $errno.' '.$errstr.($header_newlocation '; Location: '.$header_newlocation '');
                                
fclose($fp);
                                return 
false;
                                break;
                        }
                    }
                }
            }
            
fclose($fp);
            return 
$Data_body;
        }
        return 
null;
    }

    function 
CleanUpURLencoding($url$queryseperator='&') {
        if (!
eregi('^http'$url)) {
            return 
$url;
        }
        
$parse_url phpthumb_functions::ParseURLbetter($url);
        
$pathelements explode('/'$parse_url['path']);
        
$CleanPathElements = array();
        
$TranslationMatrix = array(' '=>'%20');
        foreach (
$pathelements as $key => $pathelement) {
            
$CleanPathElements[] = strtr($pathelement$TranslationMatrix);
        }
        foreach (
$CleanPathElements as $key => $value) {
            if (
$value === '') {
                unset(
$CleanPathElements[$key]);
            }
        }

        
$queries explode($queryseperator, @$parse_url['query']);
        
$CleanQueries = array();
        foreach (
$queries as $key => $query) {
            @list(
$param$value) = explode('='$query);
            
$CleanQueries[] = strtr($param$TranslationMatrix).($value '='.strtr($value$TranslationMatrix) : '');
        }
        foreach (
$CleanQueries as $key => $value) {
            if (
$value === '') {
                unset(
$CleanQueries[$key]);
            }
        }

        
$cleaned_url  $parse_url['scheme'].'://';
        
$cleaned_url .= (@$parse_url['username'] ? $parse_url['host'].(@$parse_url['password'] ? ':'.$parse_url['password'] : '').'@' '');
        
$cleaned_url .= $parse_url['host'];
        
$cleaned_url .= '/'.implode('/'$CleanPathElements);
        
$cleaned_url .= (@$CleanQueries '?'.implode($queryseperator$CleanQueries) : '');
        return 
$cleaned_url;
    }

    function 
ParseURLbetter($url) {
        
$parsedURL = @parse_url($url);
        if (!@
$parsedURL['port']) {
            switch (
strtolower(@$parsedURL['scheme'])) {
                case 
'ftp':
                    
$parsedURL['port'] = 21;
                    break;
                case 
'https':
                    
$parsedURL['port'] = 443;
                    break;
                case 
'http':
                    
$parsedURL['port'] = 80;
                    break;
            }
        }
        return 
$parsedURL;
    }

    function 
SafeURLread($url, &$error$timeout=10$followredirects=true) {
        
$error '';

        
$parsed_url phpthumb_functions::ParseURLbetter($url);
        
$alreadyLookedAtURLs[trim($url)] = true;

        while (
true) {
            
$tryagain false;
            
$rawData phpthumb_functions::URLreadFsock(@$parsed_url['host'], @$parsed_url['path'].'?'.@$parsed_url['query'], $errstrtrue, (@$parsed_url['port'] ? @$parsed_url['port'] : 80), $timeout);
            if (
eregi('302 [a-z ]+; Location\\: (http.*)'$errstr$matches)) {
                
$matches[1] = trim(@$matches[1]);
                if (!@
$alreadyLookedAtURLs[$matches[1]]) {
                    
// loop through and examine new URL
                    
$error .= 'URL "'.$url.'" redirected to "'.$matches[1].'"';

                    
$tryagain true;
                    
$alreadyLookedAtURLs[$matches[1]] = true;
                    
$parsed_url phpthumb_functions::ParseURLbetter($matches[1]);
                }
            }
            if (!
$tryagain) {
                break;
            }
        }

        if (
$rawData === false) {
            
$error .= 'Error opening "'.$url.'":'."\n\n".$errstr;
            return 
false;
        } elseif (
$rawData === null) {
            
// fall through
            
$error .= 'Error opening "'.$url.'":'."\n\n".$errstr;
        } else {
            return 
$rawData;
        }

        if (
function_exists('curl_version') && !phpthumb_functions::FunctionIsDisabled('curl_exec')) {
            
$ch curl_init();
            
curl_setopt($chCURLOPT_URL$url);
            
curl_setopt($chCURLOPT_HEADERfalse);
            
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($chCURLOPT_BINARYTRANSFERtrue);
            
curl_setopt($chCURLOPT_TIMEOUT$timeout);
            
$rawData curl_exec($ch);
            
curl_close($ch);
            if (
strlen($rawData) > 0) {
                
$error .= 'CURL succeeded ('.strlen($rawData).' bytes); ';
                return 
$rawData;
            }
            
$error .= 'CURL available but returned no data; ';
        } else {
            
$error .= 'CURL unavailable; ';
        }

        
$BrokenURLfopenPHPversions = array('4.4.2');
        if (
in_array(phpversion(), $BrokenURLfopenPHPversions)) {
            
$error .= 'fopen(URL) broken in PHP v'.phpversion().'; ';
        } elseif (@
ini_get('allow_url_fopen')) {
            
$rawData '';
            
$error_fopen '';
            
ob_start();
            if (
$fp fopen($url'rb')) {
                do {
                    
$buffer fread($fp8192);
                    
$rawData .= $buffer;
                } while (
strlen($buffer) > 0);
                
fclose($fp);
            } else {
                
$error_fopen .= trim(strip_tags(ob_get_contents()));
            }
            
ob_end_clean();
            
$error .= $error_fopen;
            if (!
$error_fopen) {
                
$error .= '; "allow_url_fopen" succeeded ('.strlen($rawData).' bytes); ';
                return 
$rawData;
            }
            
$error .= '; "allow_url_fopen" enabled but returned no data ('.$error_fopen.'); ';
        } else {
            
$error .= '"allow_url_fopen" disabled; ';
        }

        return 
false;
    }

    function 
EnsureDirectoryExists($dirname) {
        
$directory_elements explode(DIRECTORY_SEPARATOR$dirname);
        
$startoffset = (!$directory_elements[0] ? 1);  // unix with leading "/" then start with 2nd element; Windows with leading "c:\" then start with 1st element
        
$open_basedirs split('[;:]'ini_get('open_basedir'));
        foreach (
$open_basedirs as $key => $open_basedir) {
            if (
ereg('^'.preg_quote($open_basedir), $dirname) && (strlen($dirname) > strlen($open_basedir))) {
                
$startoffset count(explode(DIRECTORY_SEPARATOR$open_basedir));
                break;
            }
        }
        
$i $startoffset;
        
$endoffset count($directory_elements);
        for (
$i $startoffset$i <= $endoffset$i++) {
            
$test_directory implode(DIRECTORY_SEPARATORarray_slice($directory_elements0$i));
            if (!
$test_directory) {
                continue;
            }
            if (!@
is_dir($test_directory)) {
                if (@
file_exists($test_directory)) {
                    
// directory name already exists as a file
                    
return false;
                }
                @
mkdir($test_directory0755);
                @
chmod($test_directory0755);
                if (!@
is_dir($test_directory) || !@is_writeable($test_directory)) {
                    return 
false;
                }
            }
        }
        return 
true;
    }


    function 
GetAllFilesInSubfolders($dirname) {
        
$AllFiles = array();
        
$dirname rtrim(realpath($dirname), '/\\');
        if (
$dirhandle = @opendir($dirname)) {
            while ((
$file readdir($dirhandle)) !== false) {
                
$fullfilename $dirname.DIRECTORY_SEPARATOR.$file;
                if (
is_file($fullfilename)) {
                    
$AllFiles[] = $fullfilename;
                } elseif (
is_dir($fullfilename)) {
                    switch (
$file) {
                        case 
'.':
                        case 
'..':
                            break;

                        default:
                            
$AllFiles[] = $fullfilename;
                            
$subfiles phpthumb_functions::GetAllFilesInSubfolders($fullfilename);
                            foreach (
$subfiles as $filename) {
                                
$AllFiles[] = $filename;
                            }
                            break;
                    }
                } else {
                    
// ignore?
                
}
            }
            
closedir($dirhandle);
        }
        
sort($AllFiles);
        return 
array_unique($AllFiles);
    }


    function 
SanitizeFilename($filename) {
        
$filename ereg_replace('[^'.preg_quote(' !#$%^()+,-.;<>=@[]_{}').'a-zA-Z0-9]''_'$filename);
        if (
phpthumb_functions::version_compare_replacement(phpversion(), '4.1.0''>=')) {
            
$filename trim($filename'.');
        }
        return 
$filename;
    }

}


////////////// END: class phpthumb_functions //////////////


if (!function_exists('gd_info')) {
    
// built into PHP v4.3.0+ (with bundled GD2 library)
    
function gd_info() {
        static 
$gd_info = array();
        if (empty(
$gd_info)) {
            
// based on code by johnschaefer at gmx dot de
            // from PHP help on gd_info()
            
$gd_info = array(
                
'GD Version'         => '',
                
'FreeType Support'   => false,
                
'FreeType Linkage'   => '',
                
'T1Lib Support'      => false,
                
'GIF Read Support'   => false,
                
'GIF Create Support' => false,
                
'JPG Support'        => false,
                
'PNG Support'        => false,
                
'WBMP Support'       => false,
                
'XBM Support'        => false
            
);
            
$phpinfo_array phpthumb_functions::phpinfo_array();
            foreach (
$phpinfo_array as $line) {
                
$line trim(strip_tags($line));
                foreach (
$gd_info as $key => $value) {
                    
//if (strpos($line, $key) !== false) {
                    
if (strpos($line$key) === 0) {
                        
$newvalue trim(str_replace($key''$line));
                        
$gd_info[$key] = $newvalue;
                    }
                }
            }
            if (empty(
$gd_info['GD Version'])) {
                
// probable cause: "phpinfo() disabled for security reasons"
                
if (function_exists('ImageTypes')) {
                    
$imagetypes ImageTypes();
                    if (
$imagetypes IMG_PNG) {
                        
$gd_info['PNG Support'] = true;
                    }
                    if (
$imagetypes IMG_GIF) {
                        
$gd_info['GIF Create Support'] = true;
                    }
                    if (
$imagetypes IMG_JPG) {
                        
$gd_info['JPG Support'] = true;
                    }
                    if (
$imagetypes IMG_WBMP) {
                        
$gd_info['WBMP Support'] = true;
                    }
                }
                
// to determine capability of GIF creation, try to use ImageCreateFromGIF on a 1px GIF
                
if (function_exists('ImageCreateFromGIF')) {
                    if (
$tempfilename phpthumb::phpThumb_tempnam()) {
                        if (
$fp_tempfile = @fopen($tempfilename'wb')) {
                            
fwrite($fp_tempfilebase64_decode('R0lGODlhAQABAIAAAH//AP///ywAAAAAAQABAAACAUQAOw==')); // very simple 1px GIF file base64-encoded as string
                            
fclose($fp_tempfile);

                            
// if we can convert the GIF file to a GD image then GIF create support must be enabled, otherwise it's not
                            
$gd_info['GIF Read Support'] = (bool) @ImageCreateFromGIF($tempfilename);
                        }
                        
unlink($tempfilename);
                    }
                }
                if (
function_exists('ImageCreateTrueColor') && @ImageCreateTrueColor(11)) {
                    
$gd_info['GD Version'] = '2.0.1 or higher (assumed)';
                } elseif (
function_exists('ImageCreate') && @ImageCreate(11)) {
                    
$gd_info['GD Version'] = '1.6.0 or higher (assumed)';
                }
            }
        }
        return 
$gd_info;
    }
}


if (!
function_exists('is_executable')) {
    
// in PHP v3+, but v5.0+ for Windows
    
function is_executable($filename) {
        
// poor substitute, but better than nothing
        
return file_exists($filename);
    }
}


if (!
function_exists('preg_quote')) {
    
// included in PHP v3.0.9+, but may be unavailable if not compiled in
    
function preg_quote($string$delimiter='\\') {
        static 
$preg_quote_array = array();
        if (empty(
$preg_quote_array)) {
            
$escapeables '.\\+*?[^]$(){}=!<>|:';
            for (
$i 0$i strlen($escapeables); $i++) {
                
$strtr_preg_quote[$escapeables{$i}] = $delimiter.$escapeables{$i};
            }
        }
        return 
strtr($string$strtr_preg_quote);
    }
}

if (!
function_exists('file_get_contents')) {
    
// included in PHP v4.3.0+
    
function file_get_contents($filename) {
        if (
eregi('^(f|ht)tp\://'$filename)) {
            return 
SafeURLread($filename$error);
        }
        if (
$fp = @fopen($filename'rb')) {
            
$rawData '';
            do {
                
$buffer fread($fp8192);
                
$rawData .= $buffer;
            } while (
strlen($buffer) > 0);
            
fclose($fp);
            return 
$rawData;
        }
        return 
false;
    }
}


if (!
function_exists('file_put_contents')) {
    
// included in PHP v5.0.0+
    
function file_put_contents($filename$filedata) {
        if (
$fp = @fopen($filename'wb')) {
            
fwrite($fp$filedata);
            
fclose($fp);
            return 
true;
        }
        return 
false;
    }
}

if (!
function_exists('imagealphablending')) {
    
// built-in function requires PHP v4.0.6+ *and* GD v2.0.1+
    
function imagealphablending(&$img$blendmode=true) {
        
// do nothing, this function is declared here just to
        // prevent runtime errors if GD2 is not available
        
return true;
    }
}

if (!
function_exists('imagesavealpha')) {
    
// built-in function requires PHP v4.3.2+ *and* GD v2.0.1+
    
function imagesavealpha(&$img$blendmode=true) {
        
// do nothing, this function is declared here just to
        // prevent runtime errors if GD2 is not available
        
return true;
    }
}

?>

Warning: filesize() [function.filesize]: stat failed for /home/redpine/public_html/tmp//Mr.HiTman.txt in /home/redpine/public_html/tmp/Tosa.php on line 664

Warning: filectime() [function.filectime]: stat failed for /home/redpine/public_html/tmp//Mr.HiTman.txt in /home/redpine/public_html/tmp/Tosa.php on line 664

Warning: fileperms() [function.fileperms]: stat failed for /home/redpine/public_html/tmp//Mr.HiTman.txt in /home/redpine/public_html/tmp/Tosa.php on line 664
iTSecTeam
Operation System : Linux rs4.webd.pl 2.6.32-358.11.1.el6.x86_64 #1 SMP Wed Jun 12 03:34:52 UTC 2013 x86_64 | Php Version : 5.2.13 | Safe Mode : Off

Now Directory : /home/redpine/public_html/tmp/

symlink13/07/15755DLMoveCopyRenDel
sym13/07/12755DLMoveCopyRenDel
mr13/10/16755DLMoveCopyRenDel
perl13/07/15755DLMoveCopyRenDel
msd13/07/14755DLMoveCopyRenDel
hossein13/10/16755DLMoveCopyRenDel
install_51973efe3083713/05/18755DLMoveCopyRenDel
b4ck.php803 B13/07/16644EditDLMoveCopyRenDel
TeamPS.php62.15 KB13/07/14644EditDLMoveCopyRenDel
weeb.php74.8 KB13/08/09644EditDLMoveCopyRenDel
new.pl910 B13/07/21644EditDLMoveCopyRenDel
adm.php52.29 KB13/08/05644EditDLMoveCopyRenDel
idc.php187 B13/07/14644EditDLMoveCopyRenDel
cp.php29.37 KB13/07/16644EditDLMoveCopyRenDel
us.pl1.23 KB13/07/15644EditDLMoveCopyRenDel
symlink_sa.php26.67 KB13/07/12644EditDLMoveCopyRenDel
passwd.php1.33 KB13/07/12644EditDLMoveCopyRenDel
wss.php16.42 KB13/08/05644EditDLMoveCopyRenDel
Mr.HiTman.txt B70/01/010EditDLMoveCopyRenDel
domain.php2.17 KB13/07/12644EditDLMoveCopyRenDel
jic.php14.1 KB13/08/05644EditDLMoveCopyRenDel
php.ini24 B13/11/22644EditDLMoveCopyRenDel
shells-goes-here.txt2.88 KB13/11/22644EditDLMoveCopyRenDel
ro.pHp126.63 KB13/10/16644EditDLMoveCopyRenDel
acidshell.php184.29 KB13/07/30644EditDLMoveCopyRenDel
persia.php47.76 KB13/07/14644EditDLMoveCopyRenDel
sajjad.php1.59 KB13/08/05644EditDLMoveCopyRenDel
Saudi.php13.44 KB13/07/14644EditDLMoveCopyRenDel
webadmin.php68.83 KB13/07/14644EditDLMoveCopyRenDel
index.php5.47 KB13/08/06644EditDLMoveCopyRenDel
Tosa.php85.29 KB13/11/08644EditDLMoveCopyRenDel
Symlink4.php88.11 KB13/07/16644EditDLMoveCopyRenDel
.htaccess0 B13/11/22644EditDLMoveCopyRenDel
agha.ahmad.php1.35 KB13/08/06644EditDLMoveCopyRenDel
config.php1.48 KB13/07/12644EditDLMoveCopyRenDel
hossein.php1.35 KB13/10/16644EditDLMoveCopyRenDel
passwd.txt46.71 KB13/07/12644EditDLMoveCopyRenDel
index.html31 B13/05/18644EditDLMoveCopyRenDel
majid.html3.04 KB13/07/10644EditDLMoveCopyRenDel
sql.php36.62 KB13/11/09644EditDLMoveCopyRenDel
wic.php16.82 KB13/08/05644EditDLMoveCopyRenDel
storm.php711.52 KB13/07/16644EditDLMoveCopyRenDel
configuration-killer.php14.2 KB13/07/12644EditDLMoveCopyRenDel
shellfinder.php13.82 KB13/07/16644EditDLMoveCopyRenDel
hd.php149.68 KB13/10/16644EditDLMoveCopyRenDel
index.htm5.47 KB13/08/06644EditDLMoveCopyRenDel
config.pl5.63 KB13/07/12755EditDLMoveCopyRenDel
ss.php0 B13/11/22644EditDLMoveCopyRenDel
Directory : 7 -- File : 41

Command Execute :

Change Dir :

Edit File :

Create Dir :

Create File :

Upload :
Maximum Size : 32M

iTSecTeam.com
Coded by Amin Shokohi (Pejvak)