???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
e fM                 @   s  d  Z  d d l Z d d l Z d d l Td d l m Z e j e k sS t d   e j d k rk d Z n d Z e	 e
 e g  Z e	 e e e g  Z e	 e e g  Z e	 e e g  Z dX Z d* d+   e D Z d, d-   Z d d d. d/  Z d0 d1   Z d2 d3   Z e j d4 Z d5 d6 d7 Z e e d8 d9  Z  d: d;   Z! d< d=   Z" d> d?   Z# d@ dA   Z$ dB dC   Z% dD dE   Z& d dF dG  Z' d S)YzInternal support module for sre    N)*)	MAXREPEATzSRE module mismatch   i  l    i   1  s          E                                              a        c                s?   i  |  ]5 } | D](   t    f d  d   | D     q q S)c             3   s!   |  ] }   | k r | Vq d  S)N ).0j)ir&   0/opt/alt/python34/lib64/python3.4/sre_compile.py	<genexpr>C   s    z<dictcomp>.<genexpr>)tuple)r'   tr&   )r)   r*   
<dictcomp>C   s   	r.   c             C   sj  |  j  } t } t } t } t } t } | t @rO | t @rO | t @rO t	 }	 n d  }	 x| D]\ }
 } |
 | k rv| t @r[t
 j | |  } |	 r<| |	 k r<| t t  | |   } | d  |
 t k r | t t  n  x1 | f |	 | D] } | t t  | |  q W| t t  | |   | |  | <qs| t t |
  | |  qb| t |
  | |  q\ |
 t k r| t @r| t t |
  | d d  } n | t |
  d  } | |   } | d  t | | |  | |	  | |   | |  | <q\ |
 t k r?| t @r.| t t  qb| t t  q\ |
 | k r| t @rdt d   qbt |  r|
 t k	 r|
 t k r| t t  n | t t  | |   } | d  | | d  | | d  t |  | d |  | t t   | |   | |  | <qb| t t  | |   } | d  | | d  | | d  t |  | d |  | |   | |  | <|
 t k r| t t!  qb| t t"  q\ |
 t# k r1| d r| t t$  | | d d d  n  t |  | d |  | d rb| t t$  | | d d d d  qbq\ |
 | k rN| t |
  q\ |
 | k r| t |
  | |   } | d  | d d k r| d  n; | d j%   \ } } | | k rt d   n  | |  t |  | d |  | t t   | |   | |  | <q\ |
 t& k rt| t |
  | |   } | d  t |  | |  | t t   | |   | |  | <q\ |
 t' k r| t |
  | t( @rt) j* | |  } n  | t @rt+ j* | |  } n | t @rt, j* | |  } n  | t- |  q\ |
 t. k r| t |
  g  } | j  } xt | d D]h } | |   } | d  t |  | |  | t t/  | | |    | d  | |   | |  | <q0W| d  x| D] } | |   | |  | <qWq\ |
 t0 k r'| t |
  | t @rt1 | } n | t @rt2 | } n  | t3 |  q\ |
 t4 k rq| t @rR| t t |
  n | t |
  | | d  q\ |
 t5 k rS| t |
  | | d d  | |   } | d  t |  | d |  | d r8| t t/  | |   } | d  | |   | d |  | <t |  | d |  | |   | |  | <qb| |   | d |  | <q\ t6 d |
   q\ Wd  S)	Nr   c             S   s   t  j |  |  S)N)_sregetlower)literalflagsr&   r&   r*   fixupk   s    z_compile.<locals>.fixupz'internal: unsupported template operator   r   z(look-behind requires fixed-width patternzunsupported operand type)7appendlen_LITERAL_CODES_REPEATING_CODES_SUCCESS_CODES_ASSERT_CODESSRE_FLAG_IGNORECASESRE_FLAG_LOCALESRE_FLAG_UNICODE_ignorecase_fixesr/   r0   OPCODES	IN_IGNORENOT_LITERALNEGATELITERALFAILURE	OP_IGNOREIN_compile_charsetANYSRE_FLAG_DOTALLANY_ALLSRE_FLAG_TEMPLATEerror_simpleREPEAT
MAX_REPEAT
REPEAT_ONEMIN_REPEAT_ONE_compileSUCCESS	MAX_UNTIL	MIN_UNTIL
SUBPATTERNMARKgetwidthCALLATSRE_FLAG_MULTILINEAT_MULTILINEget	AT_LOCALE
AT_UNICODEATCODESBRANCHJUMPCATEGORY	CH_LOCALE
CH_UNICODECHCODESGROUPREFGROUPREF_EXISTS
ValueError)codepatternr2   emit_lenLITERAL_CODESREPEATING_CODESSUCCESS_CODESASSERT_CODESfixesopavloskipkr3   hitail
tailappendskipyesskipnor&   r&   r*   rR   F   s*   	

	
 

 


 
 


  

 



	 
 




 

 
rR   c             C   sE  | j  } x't |  | | | t @ D]\ } } | t |  | t k rL q# | t k re | |  q# | t k r | | d  | | d  q# | t k r | j |  q# | t	 k r | j |  q# | t
 k r#| t @r | t t |  q/| t @r| t t |  q/| t |  q# t d   q# W| t t  d  S)Nr   r4   z"internal: unsupported set operator)r5   _optimize_charsetr=   r?   rB   rC   RANGECHARSETextend
BIGCHARSETrc   r<   rf   rd   re   rL   rD   )charsetr2   rj   r3   rr   rl   rs   rt   r&   r&   r*   rG      s.    	

rG   c             C   s  g  } g  } t  d  } xk|  D]c\ } } xTyZ| t k r | r | |  }	 d | |	 <| r |	 | k r x | |	 D] }
 d | |
 <qv Wq qd | | <n | t k rRt | d | d d  } | r t | |  } n  | r4| r4xd | D]> }	 d | |	 <|	 | k r x | |	 D] }
 d | |
 <qWq q WqxP | D] }	 d | |	 <q;Wn5 | t k rt| j | | f  n | j | | f  Wn t k
 r|t |  d k r| d d 7} w. n  | re| re| t k re| \ } } | g } t	 t
 d |  t d |  | |  xe | D]G \ } } | | k rE| j t | f  q| j t | | f f  qWn | j | | f  Yn XPq. Wq Wg  } d } x | j d |  } | d k  rPn  t |  d k rd  } Pn  | j d |  } | d k  r| j | t |  f  Pn  | j | | f  qW| d  k	 rxW | D]O \ } } | | d k rj| j t | f  q8| j t | | d f f  q8W| | 7} | st |  t |   k  r| S|  St |  d k rt |  } | j t | f  | | 7} | St |  } i  } t  d  } d } t    } xy t d d d  D]e }	 | |	 |	 d  } | | k ru| | | |	 d <q:| | |	 d <| | <| d 7} | | 7} q:Wt |  } | g t |  | d d  <| j t | f  | | 7} | S)	N   r4   r   s    i   i   i r   )	bytearrayrC   r~   rangemaprB   r5   
IndexErrorr6   _fixup_rangemaxminfind
_mk_bitmapr   bytes_bytes_to_codesr   )r   r3   rr   	isunicodeoutry   charmaprs   rt   r)   rw   rru   rx   rangesrunsqpdatacompsmappingblockchunkr&   r&   r*   r}      s    

	
 	!

	

r}   c             C   s   x t  | t |  | d   D] } x t |  D] \ } \ }  } | |  k  r t |  d k rq | | f | | <n | j | | | f  Pq0 | | k r | | d k r |  | f | | <Pq q0 Pq0 W| j | | f  q Wd  S)Nr4   )r   r   	enumeratelinsertr5   )ru   rx   r   r3   r)   rw   r&   r&   r*   r     s    #r         0   1   c                sL   |  j  t  d  d  d       f d d   t t   d    D S)Nr4   c                s-   g  |  ]# }   |   |  d    q S)r   r&   )r'   r)   )	_CODEBITS_intsr&   r*   
<listcomp>  s   	z_mk_bitmap.<locals>.<listcomp>r   )	translate_BITS_TRANSr   r6   )bitsr   r   r&   )r   r   r   r*   r     s    r   c             C   s\   t  |   j d  } | j t j k s- t  t |  | j t |   k sR t  | j   S)NI)
memoryviewcastitemsizer/   CODESIZEAssertionErrorr6   tolist)bar&   r&   r*   r     s    %r   c             C   sH   |  d j    \ } } | | k o- d k n oG |  d d d t k S)Nr   r4   r   )rX   rV   )rt   ru   rx   r&   r&   r*   rM     s    rM   c             C   s   d g t  |   } x| t d t  |    D]e } | | d } xN |  | |  | k r | d k rn d | | <Pn  | | d } q@ W| d | | <q) W| S)aj  
    Generate an overlap table for the following prefix.
    An overlap table is a table of the same size as the prefix which
    informs about the potential self-overlap for each index in the prefix:
    - if overlap[i] == 0, prefix[i:] can't overlap prefix[0:...]
    - if overlap[i] == k with 0 < k <= i, prefix[i-k+1:i+1] overlaps with
      prefix[0:k]
    r   r4   )r6   r   )prefixtabler)   idxr&   r&   r*   _generate_overlap_table  s    	
r   c             C   s  | j    \ } } | d k r" d  Sg  } | j } d } g  } | j }	 | t @sfx | j D] \ }
 } |
 t k r t |  | k r | d } n  | |  qZ |
 t k r t | d  d k r | d d \ }
 } |
 t k r | |  q PqZ PqZ W| rf| j rf| j d \ }
 } |
 t k r| d r| d d \ }
 } |
 t k rb|	 |
 | f  q`|
 t k r`g  } | j } xU | d D]@ } | sPn  | d \ }
 } |
 t k r| |
 | f  qPqW| } q`qc|
 t k rKg  } | j } xj | d D]@ } | sPn  | d \ }
 } |
 t k r=| |
 | f  qPqW| } qc|
 t k rc| } qcqfn  |  j } | t	 t
  t |   } | d  d } | rt } t |  | k ot | j  k n r| t } qn | r| t } n  | |  | t k  r| |  n | t  | d  t  } | t k  rI| |  n
 | d  | r| t |   | |  |  j |  |  j t |   n | rt | | |   n  t |   | |  | <d  S)Nr   r4   )rX   r5   r;   r   rC   r6   rV   ra   rF   r?   INFOSRE_INFO_PREFIXSRE_INFO_LITERALSRE_INFO_CHARSETMAXCODEr   r   rG   )rj   rk   r2   ru   rx   r   prefixappendprefix_skipr   charsetappendrs   rt   ccappendr   rl   rv   maskr&   r&   r*   _compile_info  s    		
"				 
+



r   c             C   s   t  |  t t f  S)N)
isinstancestrr   )objr&   r&   r*   isstring!  s    r   c             C   sN   |  j  j | B} g  } t | |  |  t | |  j |  | j t t  | S)N)rk   r2   r   rR   r   r5   r?   rS   )r   r2   rj   r&   r&   r*   _code$  s    r   c             C   s   t  |   r' |  } t j |  |  }  n d  } t |  |  } |  j j d k r] t d   n  |  j j } d  g |  j j } x$ | j   D] \ } } | | | <q Wt	 j
 | | |  j j B| |  j j d | |  S)Nd   z6sorry, but this version only supports 100 named groupsr4   )r   	sre_parseparser   rk   groupsr   	groupdictitemsr/   compiler2   )r   r2   rk   rj   
groupindex
indexgrouprw   r)   r&   r&   r*   r   3  s     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   r   r    r!   r"   r#   r$   r%   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )(__doc__r/   r   sre_constantsr   MAGICr   r   r   setrC   rA   r7   rN   
MIN_REPEATrO   r8   rS   rD   r9   ASSERT
ASSERT_NOTr:   _equivalencesr>   rR   rG   r}   r   r   r   intr   r   rM   r   r   r   r   r   r&   r&   r&   r*   <module>   sX   
	               	
e