???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
]Č                 @   sI  d  Z  d d l m Z m Z m Z d d l m Z d d l Z d d l Z d d l	 Z
 d d l m Z d d l m Z d d l m Z d d l Z d d l Z d d l Z d d	 d
 d d d d d d d d d d d g Z d a d a d d   Z d d   Z d d   Z d d   Z e a d a d e j d d d d
  Z d d d  d  Z d d d! d  Z  d" d   Z! d# d$   Z" d% d   Z# Gd& d   d  Z$ Gd' d	   d	  Z% e j d( d)  Z& d d d d d* d  Z' e j d+ d  Z( d, d   Z) d- d   Z* d. d   Z+ d/ d   Z, d d0 d  Z- d1 d2   Z. e/ d3 k rEe&   d S)4z2.6    )StringIOBytesIOTextIOWrapper)MappingN)
FeedParser)Message)warnMiniFieldStorageFieldStorageparseparse_qs	parse_qslparse_multipartparse_headerprint_exceptionprint_environ
print_formprint_directoryprint_argumentsprint_environ_usageescape c              G   sX   t  r5 t r5 y t t  d  a Wn t k
 r4 Yn Xt sD t a n t a t |    d  S)Na)logfilelogfpopenOSErrornologlogdolog)allargs r!   (/opt/alt/python35/lib64/python3.5/cgi.pyinitlog:   s    	r#   c             G   s   t  j |  | d  d  S)N
)r   write)fmtargsr!   r!   r"   r   ]   s    r   c              G   s   d  S)Nr!   )r    r!   r!   r"   r   a   s    r   c               C   s&   d a  t r t j   d  a t a d  S)Nr   )r   r   closer#   r   r!   r!   r!   r"   closeloge   s
    
r)   c       	      C   s  |  d  k r t  j }  t |  d  r0 |  j } n d } t |  t  rN |  j }  d | k rd d | d <| d d k rlt | d  \ } } | d k r t |  |  S| d k r t	 | d	  } t
 r | t
 k r t d
   |  j |  j |  } n d } d | k r+| r| d } | | d } n4 t  j d d   r_| rN| d } | t  j d } | | d <nL d | k r| d } n3 t  j d d   rt  j d } n d } | | d <t j j | | | d | S)Nencodingzlatin-1REQUEST_METHODGETPOSTCONTENT_TYPEzmultipart/form-dataz!application/x-www-form-urlencodedCONTENT_LENGTHzMaximum content length exceededr   QUERY_STRING&   )sysstdinhasattrr*   
isinstancer   bufferr   r   intmaxlen
ValueErrorreaddecodeargvurllibr   r   )	fpenvironkeep_blank_valuesstrict_parsingr*   ctypepdictclengthqsr!   r!   r"   r   x   sH    		
 
 

c             C   s&   t  d t d  t j j |  | |  S)Nz=cgi.parse_qs is deprecated, use urllib.parse.parse_qs instead   )r   DeprecationWarningr>   r   r   )rF   rA   rB   r!   r!   r"   r      s    
c             C   s&   t  d t d  t j j |  | |  S)Nz?cgi.parse_qsl is deprecated, use urllib.parse.parse_qsl insteadrG   )r   rH   r>   r   r   )rF   rA   rB   r!   r!   r"   r      s    
c             C   s  d d  l  } d } d | k r( | d } t |  sG t d | f   d | } d | d } i  } d } x!| | k rd } d  }	 | r| j j |   }
 |
 j d  } | r y t |  } Wn t k
 r Yn X| d k rt r| t k rt d   |  j |  }	 n d }	 g  } xX |  j	   } | s<| } P| j
 d  rj| j   } | | | f k rjP| j |  q#W|	 d  k rqn | d k  r| r| d } | d d   d
 k r| d  d  } n& | d d   d k r| d  d  } | | d <d j |  }	 |
 d } | s!qn t |  \ } } | d k rBqn d | k rn | d } n qn | | k r~| | j |	  qn |	 g | | <qn W| S)Nr       boundaryz&Invalid boundary in multipart form: %rs   --r2   zcontent-lengthzMaximum content length exceededrG   s   
s   
zcontent-dispositionz	form-datanamerL   rM   rL   rL   rL   )Zhttp.clientvalid_boundaryr:   clientZparse_headersgetr8   r9   r;   readline
startswithrstripappendjoinr   )r?   rD   ZhttprJ   ZnextpartZlastpartZpartdict
terminatorbytesdataheadersrE   lineslinekeyparamsrK   r!   r!   r"   r      s|    




c             c   s   x |  d  d  d k r |  d d   }  |  j  d  } xR | d k r |  j d d |  |  j d d |  d r |  j  d | d  } q; W| d k  r t |   } |  d  |  } | j   V|  | d   }  q Wd  S)Nr2   ;r   "z\"rG   )findcountlenstrip)sendfr!   r!   r"   _parseparam-  s    ;rg   c             C   s   t  d |   } | j   } i  } x | D] } | j d  } | d k r) | d  |  j   j   } | | d d   j   } t |  d k r | d | d
 k o d k n r | d d  } | j d d  j d	 d  } | | | <q) W| | f S)Nr^   =r   r2   rG   r_   z\\\z\"rL   rL   )rg   __next__r`   rc   lowerrb   replace)r[   partsr\   rD   pirK   valuer!   r!   r"   r   9  s    6c               @   sX   e  Z d  Z d Z d Z d Z d Z i  Z d Z i  Z	 i  Z
 d d   Z d d   Z d S)r	   Nc             C   s   | |  _  | |  _ d  S)N)rK   rp   )selfrK   rp   r!   r!   r"   __init___  s    	zMiniFieldStorage.__init__c             C   s   d |  j  |  j f S)NzMiniFieldStorage(%r, %r))rK   rp   )rq   r!   r!   r"   __repr__e  s    zMiniFieldStorage.__repr__)__name__
__module____qualname__filenamelisttypefiletype_optionsdispositiondisposition_optionsrY   rr   rs   r!   r!   r!   r"   r	   Q  s   c               @   sl  e  Z d  Z d d d e j d d d d d d d 	 Z d d	   Z d
 d   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d d  Z d d d  Z d d   Z d d   Z d d   Z d  d!   Z d" d#   Z d$ d%   Z d Z d& d'   Z d( d)   Z d: Z d, d-   Z d. d/   Z d0 d1   Z d2 d3   Z d4 d5   Z d6 d7   Z d8 d9   Z d S);r
   NrI   r   zutf-8rl   c
             C   sh  d }
 | |  _  | |  _ d | k r4 | d j   }
 d  |  _ |
 d k sU |
 d k r d | k rn | d } n) t j d d   r t j d } n d } | j t j   d  } t	 |  } | d  k r d d	 i } | d  k rKi  } |
 d
 k r d	 | d <d | k r| d | d <d | k r.| d |  _ d | k rl| d | d <n! t
 | t t f  slt d   | |  _ | d  k rt j j |  _ nQ t
 | t  r| j |  _ n3 t | d  ot | d  st d   | |  _ | |  _ |	 |  _ t
 | t  st d t |  j   | |  _ d |  _ | |  _ d i  } } d |  j k rnt |  j d  \ } } | |  _ | |  _ d  |  _ d | k r| d |  _ d  |  _  d | k r| d |  _  |  j  d  k	 |  _! d |  j k rt |  j d  \ } } n2 |  j s|
 d
 k r&d i  } } n d	 i  } } | |  _ | |  _" d | k rm| d j |  j  |  _# n	 d |  _# d } d |  j k ry t$ |  j d  } Wn t% k
 rYn Xt& r| t& k rt% d   | |  _' |  j d  k r| r| |  _ d  |  _( |  _) d |  _* | d	 k r.|  j+   n6 | d  d  d k rZ|  j, | | |  n
 |  j-   d  S)Nr,   r+   ZHEADr0   r2   r   surrogateescapezcontent-typez!application/x-www-form-urlencodedr-   r.   r/   zcontent-lengthz?headers must be mapping or an instance of email.message.Messager;   rQ   zfp must be file pointerz#outerboundary must be bytes, not %sr   zcontent-dispositionrK   rw   z
text/plainrJ   rI   zMaximum content length exceeded
   z
multipart/rL   ).rA   rB   upper
qs_on_postr3   r=   encodelocalegetpreferredencodingr   r6   r   r   	TypeErrorrY   r4   r7   r?   r   r5   r*   errorsrW   ry   rt   outerboundary
bytes_readlimitr   r|   r}   rK   rw   _binary_filer{   innerboundaryr8   r:   r9   lengthrx   rz   doneread_urlencoded
read_multiread_single)rq   r?   rY   r   r@   rA   rB   r   r*   r   methodrF   ZcdisprD   rC   Zclenr!   r!   r"   rr     s    +				
																	zFieldStorage.__init__c             C   s*   y |  j  j   Wn t k
 r% Yn Xd  S)N)rz   r(   AttributeError)rq   r!   r!   r"   __del__3  s    zFieldStorage.__del__c             C   s   |  S)Nr!   )rq   r!   r!   r"   	__enter__9  s    zFieldStorage.__enter__c             G   s   |  j  j   d  S)N)rz   r(   )rq   r'   r!   r!   r"   __exit__<  s    zFieldStorage.__exit__c             C   s   d |  j  |  j |  j f S)NzFieldStorage(%r, %r, %r))rK   rw   rp   )rq   r!   r!   r"   rs   ?  s    zFieldStorage.__repr__c             C   s   t  |  j    S)N)iterkeys)rq   r!   r!   r"   __iter__D  s    zFieldStorage.__iter__c             C   sx   | d k r t  |   |  j rS |  j j d  |  j j   } |  j j d  n! |  j d  k	 rn |  j } n d  } | S)Nrp   r   )r   rz   seekr;   rx   )rq   rK   rp   r!   r!   r"   __getattr__G  s    	zFieldStorage.__getattr__c             C   s   |  j  d  k r t d   g  } x- |  j  D]" } | j | k r+ | j |  q+ W| sc t |   t |  d k r} | d S| Sd  S)Nznot indexabler2   r   )rx   r   rK   rT   KeyErrorrb   )rq   r\   founditemr!   r!   r"   __getitem__T  s     zFieldStorage.__getitem__c             C   sH   | |  k r@ |  | } t  | t  r6 d d   | D S| j Sn | Sd  S)Nc             S   s   g  |  ] } | j   q Sr!   )rp   ).0xr!   r!   r"   
<listcomp>g  s   	 z)FieldStorage.getvalue.<locals>.<listcomp>)r6   rx   rp   )rq   r\   defaultrp   r!   r!   r"   getvalueb  s    

zFieldStorage.getvaluec             C   sB   | |  k r: |  | } t  | t  r0 | d j S| j Sn | Sd  S)Nr   )r6   rx   rp   )rq   r\   r   rp   r!   r!   r"   getfirstm  s    

zFieldStorage.getfirstc             C   sK   | |  k rC |  | } t  | t  r6 d d   | D S| j g Sn g  Sd  S)Nc             S   s   g  |  ] } | j   q Sr!   )rp   )r   r   r!   r!   r"   r   }  s   	 z(FieldStorage.getlist.<locals>.<listcomp>)r6   rx   rp   )rq   r\   rp   r!   r!   r"   getlistx  s    
zFieldStorage.getlistc             C   s;   |  j  d  k r t d   t  t d d   |  j  D   S)Nznot indexablec             s   s   |  ] } | j  Vq d  S)N)rK   )r   r   r!   r!   r"   	<genexpr>  s    z$FieldStorage.keys.<locals>.<genexpr>)rx   r   set)rq   r!   r!   r"   r     s    zFieldStorage.keysc                s;   |  j  d  k r t d   t   f d d   |  j  D  S)Nznot indexablec             3   s   |  ] } | j    k Vq d  S)N)rK   )r   r   )r\   r!   r"   r     s    z,FieldStorage.__contains__.<locals>.<genexpr>)rx   r   any)rq   r\   r!   )r\   r"   __contains__  s    zFieldStorage.__contains__c             C   s   t  |  j    S)N)rb   r   )rq   r!   r!   r"   __len__  s    zFieldStorage.__len__c             C   s(   |  j  d  k r t d   t |  j   S)NzCannot be converted to bool.)rx   r   bool)rq   r!   r!   r"   __bool__  s    zFieldStorage.__bool__c             C   s   |  j  j |  j  } t | t  sF t d |  j  t |  j f   | j |  j	 |  j
  } |  j rx | d |  j 7} g  |  _ t j j | |  j |  j d |  j	 d |  j
 } x- | D]% \ } } |  j j t | |   q W|  j   d  S)Nz%s should return bytes, got %sr1   r*   r   )r?   r;   r   r6   rW   r:   ry   rt   r<   r*   r   r   rx   r>   r   r   rA   rB   rT   r	   
skip_lines)rq   rF   queryr\   rp   r!   r!   r"   r     s    			zFieldStorage.read_urlencodedc          
   C   s~  |  j  } t |  s( t d | f   g  |  _ |  j r t j j |  j |  j |  j	 d |  j
 d |  j } x- | D]% \ } } |  j j t | |   qt W|  j p |  j } |  j j   }	 t |	 t  s t d |  j t |	  j f   |  j t |	  7_ xG |	 j   d |  j  k rM|	 rM|  j j   }	 |  j t |	  7_ qWxt   }
 d } x* |  j j   } | | 7} | j   scPqcW| sP|  j t |  7_ |
 j | j |  j
 |  j   |
 j   } d | k r| d =| |  j | | | | | |  j |  j |  j
 |  j 	 } |  j | j 7_ |  j j |  | j sk|  j |  j k ofd k n rQPqQW|  j    d  S)	Nz&Invalid boundary in multipart form: %rr*   r   z%s should return bytes, got %ss   --rI   zcontent-lengthr   )!r   rN   r:   rx   r   r>   r   r   rA   rB   r*   r   rT   r	   FieldStorageClass	__class__r?   rQ   r6   rW   ry   rt   r   rb   rc   r   Zfeedr<   r(   r   r   r   r   )rq   r@   rA   rB   Zibr   r\   rp   klassZ
first_lineparserZhdr_textrX   rY   partr!   r!   r"   r     sV    					
+zFieldStorage.read_multic             C   sD   |  j  d k r& |  j   |  j   n
 |  j   |  j j d  d  S)Nr   )r   read_binaryr   
read_linesrz   r   )rq   r!   r!   r"   r     s
    

zFieldStorage.read_single   i   c             C   s   |  j    |  _ |  j } | d k r x | d k r |  j j t | |  j   } t | t  s t	 d |  j t
 |  j f   |  j t |  7_ | s d |  _ P|  j j |  | t |  } q' Wd  S)Nr   z%s should return bytes, got %sr2   rL   )	make_filerz   r   r?   r;   minbufsizer6   rW   r:   ry   rt   r   rb   r   r%   )rq   ZtodorX   r!   r!   r"   r     s    		zFieldStorage.read_binaryc             C   sV   |  j  r t   |  _ |  _ n t   |  _ |  _ |  j rH |  j   n
 |  j   d  S)N)r   r   rz   _FieldStorage__filer   r   read_lines_to_outerboundaryread_lines_to_eof)rq   r!   r!   r"   r     s    		zFieldStorage.read_linesc             C   s   |  j  d  k	 re |  j  j   t |  d k re |  j   |  _ |  j  j   } |  j j |  d  |  _  |  j r |  j j |  n" |  j j | j |  j	 |  j
   d  S)Ni  )r   tellrb   r   rz   r   r%   r   r<   r*   r   )rq   r[   rX   r!   r!   r"   Z__write  s    		zFieldStorage.__writec             C   sO   xH |  j  j d  } |  j t |  7_ | s: d |  _ P|  j |  q Wd  S)Nr2      i   rL   )r?   rQ   r   rb   r   _FieldStorage__write)rq   r[   r!   r!   r"   r     s    	zFieldStorage.read_lines_to_eofc       	      C   s  d |  j  } | d } d } d } d } xh| |  j k r< P|  j j d  } |  j t |  7_ | t |  7} | s d |  _ P| d k r | | } d } | j d  r | r | j   } | | k r P| | k r d |  _ P| } | j	 d  rd } | d  d  } d } nh | j	 d
  rEd
 } | d  d  } d } n: | j	 d  rsd } | d  d  } d } n d } d } |  j
 | |  q, Wd  S)Ns   --rI   Tr   r2   r   s   s   
rG   s   
Fi   rL   rM   rL   rL   )r   r   r?   rQ   r   rb   r   rR   rS   endswithr   )	rq   next_boundarylast_boundarydelimlast_line_lfend_readr[   strippedlineZodelimr!   r!   r"   r   !  sP    
	
				z(FieldStorage.read_lines_to_outerboundaryc             C   s   |  j  s |  j r d  Sd |  j  } | d } d } x |  j j d  } |  j t |  7_ | sn d |  _ P| j d  r | r | j   } | | k r P| | k r d |  _ P| j d  } q7 Wd  S)Ns   --Tr2   r   s   
i   rL   )r   r   r?   rQ   r   rb   r   rc   )rq   r   r   r   r[   r   r!   r!   r"   r   R  s&    
		zFieldStorage.skip_linesc             C   s6   |  j  r t j d  St j d d |  j d d Sd  S)Nzwb+zw+r*   newliner$   )r   tempfileTemporaryFiler*   )rq   r!   r!   r"   r   h  s    	zFieldStorage.make_filei    ) rt   ru   rv   osr@   rr   r   r   r   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r
   j  s:   +	6	
1c             C   s   t  d  t    t j t _ yb t   } t   t   t |  t |   t	   d d   } | d d  } t  d  |   Wn t
   Yn Xt  d  d a y/ t   } t   t   t |  t |   Wn t
   Yn Xd  S)	NzContent-type: text/htmlc               S   s   t  d  d  S)Nz,testing print_exception() -- <I>italics?</I>)execr!   r!   r!   r"   rf     s    ztest.<locals>.fc             S   s   |    d  S)Nr!   )rf   r!   r!   r"   g  s    ztest.<locals>.gz9<H3>What follows is a test, not an actual exception:</H3>z*<H1>Second try with a small maxlen...</H1>2   )printr3   stdoutstderrr
   r   r   r   r   r   r   r9   )r@   formrf   r   r!   r!   r"   test  s4    
	



	
r   c             C   s   |  d  k r! t  j   \ }  } } d d  l } t   t d  | j | |  | j |  |  } t d t j d j | d  d    t j | d  f  ~ d  S)Nr   z+<H3>Traceback (most recent call last):</H3>z<PRE>%s<B>%s</B></PRE>r   r2   rL   rL   )	r3   exc_info	tracebackr   	format_tbformat_exception_onlyhtmlr   rU   )ry   rp   tbr   r   rx   r!   r!   r"   r     s    
c             C   s|   t  |  j    } t   t d  t d  x7 | D]/ } t d t j |  d t j |  |   q4 Wt d  t   d  S)Nz<H3>Shell Environment:</H3>z<DL>z<DT>z<DD>z</DL>)sortedr   r   r   r   )r@   r   r\   r!   r!   r"   r     s    

-
c             C   s   t  |  j    } t   t d  | s3 t d  t d  x} | D]u } t d t j |  d d d |  | } t d t j t t |    d	  t d
 t j t |    qD Wt d  t   d  S)Nz<H3>Form Contents:</H3>z<P>No form fields.z<DL>z<DT>:re    z<i>z</i>z<DD>z</DL>)r   r   r   r   r   reprry   )r   r   r\   rp   r!   r!   r"   r     s    


!
'!
c              C   s   t    t  d  y t j   }  WnA t k
 rd } z! t  d t j t |    WYd  d  } ~ Xn Xt  t j |    t    d  S)Nz#<H3>Current Working Directory:</H3>zOSError:)r   r   getcwdr   r   r   str)pwdmsgr!   r!   r"   r     s    
/c               C   s0   t    t  d  t    t  t j  t    d  S)Nz <H3>Command Line Arguments:</H3>)r   r3   r=   r!   r!   r!   r"   r     s
    
c               C   s   t  d  d  S)Na  
<H3>These environment variables could have been set:</H3>
<UL>
<LI>AUTH_TYPE
<LI>CONTENT_LENGTH
<LI>CONTENT_TYPE
<LI>DATE_GMT
<LI>DATE_LOCAL
<LI>DOCUMENT_NAME
<LI>DOCUMENT_ROOT
<LI>DOCUMENT_URI
<LI>GATEWAY_INTERFACE
<LI>LAST_MODIFIED
<LI>PATH
<LI>PATH_INFO
<LI>PATH_TRANSLATED
<LI>QUERY_STRING
<LI>REMOTE_ADDR
<LI>REMOTE_HOST
<LI>REMOTE_IDENT
<LI>REMOTE_USER
<LI>REQUEST_METHOD
<LI>SCRIPT_NAME
<LI>SERVER_NAME
<LI>SERVER_PORT
<LI>SERVER_PROTOCOL
<LI>SERVER_ROOT
<LI>SERVER_SOFTWARE
</UL>
In addition, HTTP headers sent by the server may be passed in the
environment as well.  Here are some common variable names:
<UL>
<LI>HTTP_ACCEPT
<LI>HTTP_CONNECTION
<LI>HTTP_HOST
<LI>HTTP_PRAGMA
<LI>HTTP_REFERER
<LI>HTTP_USER_AGENT
</UL>
)r   r!   r!   r!   r"   r     s    'c             C   se   t  d t d d |  j d d  }  |  j d d  }  |  j d d	  }  | ra |  j d
 d  }  |  S)Nz1cgi.escape is deprecated, use html.escape instead
stacklevelrG   r1   z&amp;<z&lt;>z&gt;r_   z&quot;)r   rH   rl   )rd   quoter!   r!   r"   r     s    c             C   s:   d d  l  } t |  t  r$ d } n d } | j | |   S)Nr   s   ^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)rer6   rW   match)rd   r   Z_vb_patternr!   r!   r"   rN   (  s
    	rN   __main__)0__version__ior   r   r   collectionsr   r3   r   Zurllib.parser>   Zemail.parserr   Zemail.messager   warningsr   r   r   r   __all__r   r   r#   r   r   r)   r   r9   r@   r   r   r   r   rg   r   r	   r
   r   r   r   r   r   r   r   r   rN   rt   r!   r!   r!   r"   <module>   sZ   		#	Ed  "'/