ÿØÿà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@sdZddlZddlmZmZddlmZyddlmZWn!e k roddlmZnXde fdYZ de fd YZ d e fd YZ d Zd dZdS(s- WSGI middleware Gzip-encodes the response. iN(t header_valuet remove_header(tCONTENT_LENGTH(tStringIOt GzipOutputcBseZRS((t__name__t __module__(((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pyRst middlewarecBseZddZdZRS(icCs||_t||_dS(N(t applicationtinttcompress_level(tselfRR ((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pyt__init__s cCsud|jddkr(|j||St||j}|j||j}|dk rk|j|n|jS(NtgziptHTTP_ACCEPT_ENCODINGt(tgetRt GzipResponseR tgzip_start_responsetNonetfinish_responsetwrite(R tenvirontstart_responsetresponsetapp_iter((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pyt__call__s   (RRR R(((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pyRs RcBs/eZdZddZdZdZRS(cCs4||_||_t|_t|_d|_dS(N(RR RtbuffertFalset compressibleRtcontent_length(R RR ((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pyR .s     cCs||_t|d}t|d}t|_|rl|jdsT|jdrld|krlt|_n|r~t|_n|jr|jdnt|d||_||_|j j S( Ns content-typescontent-encodingstext/s application/tzipR scontent-length(scontent-encodingR ( theadersRRRt startswithtTruetappendRtstatusRR(R R$R texc_infotcttce((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pyR5s  $       cCs3|j}|jd|j}|j|gS(Ni(Rtseektgetvaluetclose(R toutts((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pyRFs     cCs|jr0tjddd|jd|j}n |j}z8x|D]}|j|qCW|jrp|jnWdt|dr|jnX|jj}t j |j ||j |j |j dS(Ntmodetwbt compressleveltfileobjR*(RR tGzipFileR RRR*thasattrttellRtupdateR RR$(R RtoutputR,R((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pyRMs    N(RRR RRRR(((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pyR,s   cKs,ddl}|jdtdd}|S(Nis=This function is deprecated; use make_gzip_middleware insteadicSs t|S(N(R(R((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pytfilterds(twarningstwarntDeprecationWarning(RtconfR7R6((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pytfilter_factory_s    icCst|}t|d|S(s Wrap the middleware, so that it applies gzipping to a response when it is supported by the browser and the content is of type ``text/*`` or ``application/*`` R (R R(tappt global_confR ((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pytmake_gzip_middlewarehs (t__doc__R tpaste.responseRRtpaste.httpheadersRt cStringIORt ImportErrortobjectRRRR;R>(((s>/opt/alt/python27/lib/python2.7/site-packages/paste/gzipper.pyt s  3