ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ aNc@sdZddlZddlmZddlZddlmZdefdYZdefdYZ edd d d Z dS( s WSGI middleware Captures any exceptions and prints a pretty report. See the `cgitb documentation `_ for more. iN(tStringIO(t converterst NoDefaultcBseZRS((t__name__t __module__(((sD/opt/alt/python27/lib/python2.7/site-packages/paste/cgitb_catcher.pyRstCgitbMiddlewarecBs;eZdeddddZdZdZdZRS(ithtmlcCs||_|dkri}n|tkr<|jd}nt|tr]tj|}n||_||_ t ||_ ||_ dS(Ntdebug( tapptNoneRtgett isinstancet basestringRtasbooltdisplaytlogdirtinttcontexttformat(tselfRt global_confRRRR((sD/opt/alt/python27/lib/python2.7/site-packages/paste/cgitb_catcher.pyt__init__s      cCsiy&|j||}|j||SWn<tj}|ddg||j||}|gSXdS(Ns500 Internal Server Errors content-types text/html(s content-types text/html(Rt catching_itertsystexc_infotexception_handler(Rtenvirontstart_responsetapp_iterRtresponse((sD/opt/alt/python27/lib/python2.7/site-packages/paste/cgitb_catcher.pyt__call__)s ccs|stnt}y<x|D] }|VqWt|drPt}|jnWn{|jtj|}| rt|dry|jWq|jtj|}|d|7}qXn|VnXdS(Ntcloses$
Error in .close():
%s(t StopIterationtFalsethasattrtTrueRRRR(RRRterror_on_closetvRtclose_response((sD/opt/alt/python27/lib/python2.7/site-packages/paste/cgitb_catcher.pyR5s*   c CsSt}tjd|d|jd|jd|jd|j}|||jS(NtfileRRRR(RtcgitbtHookRRRRtgetvalue(RRRt dummy_filethook((sD/opt/alt/python27/lib/python2.7/site-packages/paste/cgitb_catcher.pyRLs      N(RRR RRRRR(((sD/opt/alt/python27/lib/python2.7/site-packages/paste/cgitb_catcher.pyRs iRc Csvddlm}|tk r+||}nd|krN||d|d s  B