
    dդ                        d Z ddlT dZdZ ed          Z ed          Z ed          Z ed          Z ed	          Z	 ee
eeh          Z eeeeeeeh          Ze ed
          fe ed          fe ed          fe ed          fe ed          fe ed          fe ed          fe ed          fdZeefeefeefeeefgfeeefgfeeefgfeeefgfeeefgfeee fgfee!fd
Z"e#e$e%e&e'e(e)e*dZ+e(e$z  e*z  Z,e-e)z  Z. G d d          Z/ G d d          Z0 G d d          Z1d Z2d Z3d Z4d Z5d(d Z6d! Z7d" Z8d)d%Z9d& Z:d' Z;d$S )*zInternal support module for sre   )*z.\[{()*+?^$|z*+?{
0123456789012345670123456789abcdefABCDEF4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz 	

	\)z\a\bz\fz\nz\rz\tz\vz\\)
z\Ar   z\Bz\dz\Dz\sz\Sz\wz\Wz\Z)iLmsxatuc                   D    e Zd Zd Zed             ZddZd Zd Zd Z	dS )	Statec                 N    d| _         i | _        d g| _        d | _        i | _        d S )N    )flags	groupdictgroupwidthslookbehindgroupsgrouprefposselfs    lib/python3.11/re/_parser.py__init__zState.__init__I   s0    
 6 $    c                 *    t          | j                  S N)lenr   r"   s    r$   groupszState.groupsO   s    4#$$$r&   Nc                    | j         }| j                            d            | j         t          k    rt	          d          |<| j                            |d           }|t	          d|||fz            || j        |<   |S )Nztoo many groupsz7redefinition of group name %r as group %d; was group %d)r*   r   append	MAXGROUPSerrorr   get)r#   namegidogids       r$   	opengroupzState.opengroupR   s    k%%%;"")***>%%dD11D +.2C$-?@ A A A#&DN4 
r&   c                 >    |                                 | j        |<   d S r(   )getwidthr   )r#   r1   ps      r$   
closegroupzState.closegroup^   s     !

r&   c                 6    || j         k     o| j        |         d uS r(   )r*   r   )r#   r1   s     r$   
checkgroupzState.checkgroup`   s!    T[ FT%5c%:$%FFr&   c                     | j         J|                     |          s|                    d          || j         k    r|                    d          d S d S )Ncannot refer to an open groupz?cannot refer to group defined in the same lookbehind subpattern)r    r9   r.   )r#   r1   sources      r$   checklookbehindgroupzState.checklookbehindgroupc   sl     ,??3'' Dll#BCCCd+++ll $; < < <	 -, ,+r&   r(   )
__name__
__module____qualname__r%   propertyr*   r3   r7   r9   r=    r&   r$   r   r   G   s           % % X%   - - -G G G< < < < <r&   r   c                   N    e Zd ZddZddZd Zd Zd Zd Zd	 Z	d
 Z
d Zd ZdS )
SubPatternNc                 8    || _         |g }|| _        d | _        d S r(   )statedatawidth)r#   rF   rG   s      r$   r%   zSubPattern.__init__m   s%    
<D	


r&   r   c                 `   t           t          f}| j        D ]\  }}t          |dz  t	          |          z   d           |t
          u r=t                       |D ]+\  }}t          |dz   dz  t	          |          z   |           ,p|t          u rYt                       t          |d                   D ]4\  }}|rt          |dz  dz              |                    |dz              5|t          u r_|\  }}}	t          d|           |                    |dz              |	r-t          |dz  dz              |	                    |dz              :t          |t                    r(t                       |                    |dz              wt          ||          rd}
|D ]h}t          |t                    r+|
st                       |                    |dz              d}
B|
st          d	d           t          |d           d}
i|
st                       t          d|           d S )
Nz   )endr   ORELSEFT )tuplelistrG   printstrINBRANCH	enumeratedumpGROUPREF_EXISTS
isinstancerD   )r#   levelseqtypesopavr   r   	condgroupitem_yesitem_nonls              r$   rV   zSubPattern.dumpt   si   4=i '	 '	FB%*s2ww&B////Rxx 7 7EB57D.3r772A66667v%be,, $ $DAq 1eDj4/000FF57OOOO$ &&/1,	8Wb)$$$eAg&&& *%*v-...LLq)))B
++ a    B))  
# 
#A!!Z00 	#! $!GGGuQw!! /!#2....aR((((" GGGb"O'	 '	r&   c                 *    t          | j                  S r(   )reprrG   r"   s    r$   __repr__zSubPattern.__repr__   s    DIr&   c                 *    t          | j                  S r(   )r)   rG   r"   s    r$   __len__zSubPattern.__len__   s    49~~r&   c                     | j         |= d S r(   rG   r#   indexs     r$   __delitem__zSubPattern.__delitem__   s    Ier&   c                     t          |t                    r t          | j        | j        |                   S | j        |         S r(   )rX   slicerD   rF   rG   rh   s     r$   __getitem__zSubPattern.__getitem__   s:    eU## 	<dj$)E*:;;;yr&   c                     || j         |<   d S r(   rg   r#   ri   codes      r$   __setitem__zSubPattern.__setitem__   s    	%r&   c                 <    | j                             ||           d S r(   )rG   insertro   s      r$   rs   zSubPattern.insert   s     	%%%%%r&   c                 :    | j                             |           d S r(   )rG   r,   )r#   rp   s     r$   r,   zSubPattern.append   s    	r&   c                 B   | j         | j         S dx}}| j        D ]\  }}|t          u rYt          dz
  }d}|d         D ]9}|                                \  }}t          ||          }t          ||          }:||z   }||z   }h|t          u r"|                                \  }}||z   }||z   }|t          u r(|d                                         \  }}||z   }||z   }|t          v r;|d                                         \  }}|||d         z  z   }|||d         z  z   }|t          v r|dz   }|dz   }|t          u r!| j        j        |         \  }}||z   }||z   }G|t          u rq|d                                         \  }}|d         >|d                                         \  }}t          ||          }t          ||          }nd}||z   }||z   }|t          u r nt          |t          dz
            t          |t                    f| _         | j         S )Nr   r      )rH   rG   rT   	MAXREPEATr5   minmaxATOMIC_GROUP
SUBPATTERN_REPEATCODES
_UNITCODESGROUPREFrF   r   rW   SUCCESS)	r#   lohir[   r\   r   jlhs	            r$   r5   zSubPattern.getwidth   sM   :!:Ri (	 (	FBV||MQ% " "B;;==DAqAq		AAq		AA!V!V|##{{}}1!V!Vz!!"v((1!V!V|##!u~~''1!be)^!be)^z!!!V!Vxz-b11!V!V&&!u~~''1a5$a5>>++DAqAq		AAq		AAA!V!Vw Y]++SY-?-??
zr&   r(   r   )r>   r?   r@   r%   rV   rc   re   rj   rm   rq   rs   r,   r5   rB   r&   r$   rD   rD   k   s           ) ) ) )T                & & &  / / / / /r&   rD   c                   b    e Zd Zd Zd Zd Zd Zd Zd Ze	d             Z
d Zd	 ZddZd ZdS )	Tokenizerc                     t          |t                    | _        || _        | j        st          |d          }|| _        d| _        d | _        |                                  d S )Nlatin1r   )rX   rR   istextstringdecoded_stringri   next_Tokenizer__next)r#   r   s     r$   r%   zTokenizer.__init__   sZ     --{ 	+**F$
	r&   c                 2   | j         }	 | j        |         }n# t          $ r d | _        Y d S w xY w|dk    rQ|dz  }	 || j        |         z  }n:# t          $ r- t	          d| j        t          | j                  dz
            d w xY w|dz   | _         || _        d S )Nr   r   zbad escape (end of pattern))ri   r   
IndexErrorr   r.   r   r)   )r#   ri   chars      r$   __nextzTokenizer.__next   s    
	&u-DD 	 	 	DIFF	 4<<QJEI+E22 I I I9 KT[)9)9A)=? ?DHII QY
			s    ,,A 7Bc                 H    || j         k    r|                                  dS dS )NTFr   r   )r#   r   s     r$   matchzTokenizer.match   s&    49KKMMM4ur&   c                 <    | j         }|                                  |S r(   r   )r#   thiss     r$   r/   zTokenizer.get   s    yr&   c                 z    d}t          |          D ](}| j        }||vr n||z  }|                                  )|S NrJ   )ranger   r   )r#   ncharsetresult_cs         r$   getwhilezTokenizer.getwhile  sP    q 	 	A	AaKFKKMMMMr&   c                    d}	 | j         }|                                  |@|s|                     d|z             |                     d|z  t          |                    ||k    r|s|                     d|z   d          n||z  }|S )NrJ   Tzmissing zmissing %s, unterminated namer   )r   r   r.   r)   )r#   
terminatorr0   r   r   s        r$   getuntilzTokenizer.getuntil  s    		AKKMMMy 8**Z$%6777jj!@:!M!$V. . .J ;**Z$%6:::aKF	 r&   c                 >    | j         t          | j        pd          z
  S r   ri   r)   r   r"   s    r$   poszTokenizer.pos  s    zC	R0000r&   c                 >    | j         t          | j        pd          z
  S r   r   r"   s    r$   tellzTokenizer.tell  s    zC	R0000r&   c                 <    || _         |                                  d S r(   )ri   r   rh   s     r$   seekzTokenizer.seek   s    
r&   r   c                     | j         s)|                    dd                              d          }t          || j        |                                 |z
            S )Nasciibackslashreplace)r   encodedecoder.   r   r   )r#   msgoffsets      r$   r.   zTokenizer.error$  sP    { 	J**W&899@@IICS$+tyy{{V';<<<r&   c                 ^   |                                 s+d|z  }|                     |t          |          |z             | j        sd|                                sRdd l}|                    d||                                 t          |          z
  |z
  fz  t          |dz              d S d S d S )Nbad character in group name %rr   z-bad character in group name %a at position %d   
stacklevel)	isidentifierr.   r)   r   isasciiwarningswarnr   DeprecationWarning)r#   r0   r   nestedr   r   s         r$   checkgroupnamezTokenizer.checkgroupname)  s      "" 	62T9C**S#d))f"4555 	t||~~ 	OOOMM?tyy{{SYY.789"vz      	 	 	 	r&   Nr   )r>   r?   r@   r%   r   r   r/   r   r   rA   r   r   r   r.   r   rB   r&   r$   r   r      s               
        1 1 X11 1 1  = = = =

 
 
 
 
r&   r   c                    t                               |          }|r|S t                              |          }|r|d         t          u r|S 	 |dd         }|dk    rv||                     dt
                    z  }t          |          dk    r&|                     d|z  t          |                    t          t          |dd          d          fS |dk    r}| j
        rv||                     dt
                    z  }t          |          d	k    r&|                     d|z  t          |                    t          t          |dd          d          fS |d
k    r| j
        r||                     dt
                    z  }t          |          dk    r&|                     d|z  t          |                    t          |dd          d          }t          |           t          |fS |dk    r| j
        rdd l}|                     d          s|                     d          |                     dd          }	 t          |                    |                    }nL# t"          t$          f$ r8 |                     d|z  t          |          t          d          z             d w xY wt          |fS |t&          v rk||                     dt&                    z  }t          |dd          d          }|dk    r&|                     d|z  t          |                    t          |fS |t(          v rt*          t          |          dk    rK|t,          v r&|                     d|z  t          |                    t          t          |d                   fS n# t*          $ r Y nw xY w|                     d|z  t          |                    )Nr   r   rw   r      incomplete escape %s   r      U   
   N{	missing {}character nameundefined character name %r\N{}   .octal escape value %s outside of range 0-0o377bad escape %s)ESCAPESr/   
CATEGORIESrS   r   	HEXDIGITSr)   r.   LITERALintr   chrunicodedatar   r   ordlookupKeyError	TypeError	OCTDIGITSDIGITS
ValueErrorASCIILETTERS)r<   escaperp   r   r   charnames         r$   _class_escaper   5  s   ;;vD >>&!!D Q211Q3K88fooa333F6{{all#9F#BCKKPPPCqrr
B////#XX&-Xfooa333F6{{all#9F#BCKKPPPCqrr
B////#XX&-Xfooa333F6{{b  ll#9F#BCKKPPPF122J##AFFFA:#XX&-X<<$$ 0ll;///s,<==HK**84455i( K K Kll#@8#K#&x==3w<<#?A AFJKK A:)^^fooa333FF122J""A5yyll $35;$<=@[[J J JA:&[[v;;!L  ll?V#;S[[IIICq	NN**     
,,/V
=
==sO   BN BN BN *AN <"I N A	J((N 4A3N (A-N 
N$#N$c                 	   t                               |          }|r|S t                              |          }|r|S 	 |dd         }|dk    rv||                     dt                    z  }t          |          dk    r&|                     d|z  t          |                    t          t          |dd          d          fS |dk    r}| j	        rv||                     dt                    z  }t          |          dk    r&|                     d|z  t          |                    t          t          |dd          d          fS |d	k    r| j	        r||                     d
t                    z  }t          |          dk    r&|                     d|z  t          |                    t          |dd          d          }t          |           t          |fS |dk    r| j	        rdd l}|                     d          s|                     d          |                     dd          }	 t          |                    |                    }nL# t           t"          f$ r8 |                     d|z  t          |          t          d          z             d w xY wt          |fS |dk    r=||                     dt$                    z  }t          t          |dd          d
          fS |t&          v rW| j        t&          v r||                                 z  }|d         t$          v r|d         t$          v rr| j        t$          v rd||                                 z  }t          |dd          d
          }|dk    r&|                     d|z  t          |                    t          |fS t          |dd                    }||j        k     rW|                    |          s#|                     dt          |                    |                    ||            t0          |fS |                     d|z  t          |          dz
            t          |          dk    rK|t2          v r&|                     d|z  t          |                    t          t          |d                   fS n# t4          $ r Y nw xY w|                     d|z  t          |                    )Nr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   0r   r   r;   invalid group reference %dr   )r   r/   r   r   r   r)   r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r*   r9   r=   r   r   r   )r<   r   rF   rp   r   r   r   groups           r$   _escaper   q  s   >>&!!D ;;vD B1Q3K88fooa333F6{{all#9F#BCKKPPPCqrr
B////#XX&-Xfooa333F6{{all#9F#BCKKPPPCqrr
B////#XX&-Xfooa333F6{{b  ll#9F#BCKKPPPF122J##AFFFA:#XX&-X<<$$ 0ll;///s,<==HK**84455i( K K Kll#@8#K#&x==3w<<#?A AFJKK A:#XXfooa333FCqrr
A....&[[{f$$&**,,&1I**vayI/E/EK9,,fjjll*FF122J**A5yy$ll ,;=C,D+.v;;8 8 8 #A:%qrr
OOEu|##''.. 4 ,,'F'*6{{4 4 4**5&999&,,;eCS[[ST_UUUv;;!L  ll?V#;S[[IIICq	NN**     
,,/V
=
==s\   BR( BR( BR( AR( -"I R( A	JR( %AR( (B>R( 'A8R(  BR( (
R54R5c                 P    t          t                              |                     S r(   )rP   dictfromkeys)itemss    r$   _uniqr     s    e$$%%%r&   c           	      :   g }|j         }| j        }|                                 }	  |t          | |||dz   | o|                       |d          sn|s|j        t
          z  }At          |          dk    r|d         S t          |          }	 d }	|D ]}
|
s n8|		|
d         }	|
d         |	k    r n |D ]}
|
d= |                     |	           C	 g }|D ]x}
t          |
          dk    r n|
d         \  }}|t          u r|                     ||f           C|t          u r+|d         d         t          ur|                    |           w n+|                     t          t          |          f           |S |                     t          d |ff           |S )NTr   |r   )r,   r   r   _parser   SRE_FLAG_VERBOSEr)   rD   r   rS   NEGATEextendr   rT   )r<   rF   verboser   r   itemsappendsourcematchstart
subpatternprefixitemsetr[   r\   s                 r$   
_parse_subr     s    E,K,KKKMME5F65'6A:%:3e)5 5 	6 	6 	6{3 	 	5k$44G5 5zzQQxE""J 	 	D ~aaF"" #
   GGf%%% C  t99>>EaB==JJBx    2XX"Q%(&00JJrNNNNE 	2uSzz*+++ve}-...r&   Fc                    t          |          }|j        }| j        }| j        }t          }	t
          }
	 | j        }|n^|dv rnX |             |r&|t          v r(|dk    r	  |            }||dk    rnD|d         dk    rt          | ||          } ||           n|t          vr |t           |
|          f           n|dk    r|                                 dz
  }g }|j        }| j        dk    r9dd l}|                    d	|                                 z  t          |d
z               |d          }	  |            }|+|                     d|                                 |z
            |dk    r|rn|d         dk    rt!          | |          }ny|re|dv ra| j        |k    rVdd l}|                    d|dk    rdn|dk    rdn	|dk    rdnd|                                 dz
  fz  t          |d
z              t           |
|          f} |d          r |            }|+|                     d|                                 |z
            |dk    rE|d         t"          u r|d         d         } ||            |t           |
d          f           nd|d         dk    rt!          | |          }nT|dk    r<dd l}|                    d|                                 dz
  z  t          |d
z              t           |
|          f}|d         t          k    s|d         t          k    r>d|d|}|                     |t	          |          dz   t	          |          z             |d         }|d         }||k     r>d|d|}|                     |t	          |          dz   t	          |          z              |t$          ||ff           n(|d         t"          u r|d         d         } ||           t'          |          } |	|          dk    rJ|d         d         t          u r5|r  |t(          |d         d         f           n? ||d                    n,|r|                    dt,          d f            |t"          |f           
n|t.          v r|                                 }|dk    rd\  }}n|dk    rdt0          }}n|dk    rdt0          }}ns|dk    rZ| j        d k    r |t           |
|          f           dt0          }}d!x}}| j        t2          v r| |            z  }| j        t2          v  |d"          r*| j        t2          v r| |            z  }| j        t2          v n|} |d           s2 |t           |
|          f           |                     |           |r)t7          |          }|t0          k    rt9          d#          |rZt7          |          }|t0          k    rt9          d#          ||k     r+|                     d$|                                 |z
            nt;          d%|          |r|d&d          }nd }|r|d         d         t<          u r;|                     d'|                                 |z
  t	          |          z             |d         d         t>          v r;|                     d(|                                 |z
  t	          |          z             |d         d         t@          u r|d         d         \  }}}}||s|s|} |d          rtB          |||ff|d&<   n< |d          rtD          |||ff|d&<   n tF          |||ff|d&<   n|d)k    r |tH          d f           n|d*k    r|                                 dz
  } d}!d+}"d }#d}d} |d          rf |            }||                     d,          |d-k    rh |d.          r/| %                    d/d0          }#| &                    |#d|           n |d1          r| %                    d2d0          }#| &                    |#d|           |j'                            |#          }$|$+d3|#z  }|                     |t	          |#          dz             |(                    |$          s&|                     d4t	          |#          dz             |)                    |$|             |tT          |$f            |            }||                     d,          |                     d5|z   t	          |          dz             |d6k    rd+}!n|dk    rE	 | j        +|                     d7|                                 | z
             |            d2k    rnB	|d8v rd}%|d.k    re |            }||                     d,          |d9vr)|                     d:|z   t	          |          dz             d&}%|j+        }&|&|j,        |_+        t[          | |||dz             }|%dk     r	|&d |_+         |d2          s+|                     d;|                                 | z
            |d1k    r |t\          |%|ff           n |t^          |%|ff           
|d*k    r| %                    d2d0          }'|'0                                r`| &                    |'d|           |j'                            |'          }(|(+d3|'z  }|                     |t	          |'          dz             n	 t7          |'          }(|(dk     rtb          n:# tb          $ r- d<|'z  }|                     |t	          |'          dz             d w xY w|(s&|                     d=t	          |'          dz             |(td          k    r+d>|(z  }|                     |t	          |'          dz             |(|j3        vr/|                                 t	          |'          z
  dz
  |j3        |(<   |'4                                r|'5                                sqdd l}|                    d?| j6        rto          |'          ntq          |'          |                                 t	          |'          z
  dz
  fz  tr          |d
z              |)                    |(|            tu          | |||dz             })|                     d@          r6tu          | |||dz             }*| j        d@k    r|                     dA          nd }*|                     d2          s+|                     d;|                                 | z
             |tv          |(|)|*ff           o|d/k    rd+}!d}"n|tx          v s|dk    r[t{          | ||          }+|+@|r|r+|                     dB|                                 | z
            |j>        t~          z  }|+\  }}d+}!n)|                     dC|z   t	          |          dz             |!rU	 |@                    |#          }n@# t          $ r1},|                     |,jA        t	          |#          dz             d d },~,ww xY wd }|s
|t~          z  o
|t~          z   }-t[          | ||-|dz             }|                     d2          s+|                     d;|                                 | z
            ||B                    ||           |"r|J  |t          |f           ne |t@          ||||ff           nN|dk    r |t<          t          f           n0|dDk    r |t<          t          f           nt;          dE|          it          t	          |                    d d d&         D ]-}.||.         \  }/}0|/t@          u r|0\  }}}}||s|s
|||.|.dz   <   .|S )FNTz|)#r   r   r   [r   z"Possible nested set at position %dr   r   ^zunterminated character set]z-&~|zPossible set %s at position %d-
difference&intersection~zsymmetric differenceunionz&Possible set difference at position %drw   zbad character range ?)r   r   r   +r   r   rJ   ,z"the repetition number is too largez"min repeat greater than max repeatzunsupported quantifier rv   znothing to repeatzmultiple repeat.(Fzunexpected end of patternP<>
group name=)unknown group name %rr;   zunknown extension ?P:zmissing ), unterminated commentz=!<z=!zunknown extension ?<z"missing ), unterminated subpatternr   zbad group numberr   -bad character in group name %s at position %dr   z/conditional backref with more than two branchesz/global flags not at the start of the expressionzunknown extension ?$zunsupported special character )GrD   r,   r/   r   r)   r   r   
WHITESPACEr   SPECIAL_CHARSr   r   r   r   FutureWarningr.   r   rS   RANGEr   NOT_LITERALrs   r   REPEAT_CHARSrx   r   r   r   OverflowErrorAssertionErrorATr}   r|   
MIN_REPEATPOSSESSIVE_REPEAT
MAX_REPEATANYr   r   r   r9   r=   r   r    r*   r   ASSERT
ASSERT_NOTr   r   r-   r!   	isdecimalr   r   rb   r   r   r   rW   FLAGS_parse_flagsr   r   r3   r   r7   r{   AT_BEGINNINGAT_ENDr   )1r<   rF   r   r   firstr   subpatternappend	sourcegetr   _len_ordr   rp   herer   	setappendr   negatecode1thatcode2r   r   r   ry   rz   r   r   r   	add_flags	del_flagsr6   r   captureatomicr0   r1   dirr    condnamer]   r^   r_   r   errsub_verboser   r[   r\   s1                                                    r$   r   r     s   E""J "(
I,KDDlO{<4<<	 		z!!s{{$9;;D|tt|| 7d??64//DT""""&&gttDzz23333S[[;;==1$DC
I {c!!86;;==H!fqj     ![%%F9% y{{< ,,'C'-{{}}t';= = =3;;3;!W__)&$77EE 
tv~~&+2E2E' <0426#++:>#++ 6 6 ' & 1@3 3 *fqj &    $TT$ZZ/E;s## #%$9;;D|$ll+G+1;;==4+?A A As{{ 8r>>$)!HQKE!	%(((!	7DDII"6777Aw$ -fd ; ;3;;+OOO$MM H$*KKMMA$5!7 -&1* *   
 !(d 3Qx7**eAh'.A.A=ATT44H$ll3D		AD		0IJJJqBqBBwww=ATT44H$ll3D		AD		0IJJJIur2h/0000Qx2~~ %aIe$$$s9%v **CtCyyA~~#a&)w"6"6 -$$k3q6!9%=>>>>$$SV,,,, 2JJq64.111 ! "c++++\!!;;==Ds{{SSiSiS;#%%$$gttDzz%:;;;iSRkV++))++%B kV++;s##  +//iikk) !+// B"{3'' $$gttDzz%:;;;KK%%% Rb''Ci''+,PQQQ Ab''Ci''+,PQQQSyy$ll+O+1;;==4+?A A A %nDD%JKKK !"## E471:++ll#6#);;==4#7#d))#CE E EAwqz\))ll#4#);;==4#7#d))#CE E EAwqzZ''15a.y)Q==9=D{3 @",sC.>!?
2S!! @"3c35E!F
2 #-sC.>!?
2S[[c4[))))S[[KKMMA%EGFDII{3 L6 y{{< ,,'BCCC3;;"{3'' :%sLAA--dAv>>>>$S)) :%sLAA--dAv>>>#o11$77;"9D"@C"(,,sCIIM"B"BB$//44 >"(,,/N/24yy1}#> #> >223???(((C999   )y{{<"(,,/J"K"KK$ll+AD+H+.t99q=: : :S[[#GGS[["!;."(,,/P/5{{}}u/D#F #F F$9;;#--!" U]]Cs{{(y{{<"(,,/J"K"KKt++"(,,/E/L/24yy1}#> #> > +0+A(+35:\E2"65'6A:FFAQww+359E2&;s++ B$ll+O+1;;==5+@B B Bs{{((&3();<<<<((*sAh)?@@@S[[%sLAAH,,.. --h6BBB$)O$7$7$A$A	$,"9H"DC"(,,sCMMA4E"F"FF -Q(+HI(1}}&0 0  -) Q Q Q"BX"MC"(,,sCMMA4E"F"FDPQ  ) B"(,,/A/28}}q/@#B #B B$	11">"JC"(,,sCMMA4E"F"FF$E,=== &H = A "-i8 !) 2 2 4 4 9I9I9K9K +OOO$MM O39=!UheHoo!'X!>!B!D!D !3vz	 *    ..y&AAA%feWfqjIIH||C(( '"(!"L"L!;#--"(,,/`"a"aa . #'!<<,, B$ll+O+1;;==5+@B B B$$o	8W7U%VWWWS[[#G!FFU]]dckk(==E}$ F
 F"(,, 0C/5{{}}u/D#F #F F #(+0@"@ +0(Iy#GG ,,'<t'C'*4yy1}6 6 6  I!OOD11EE I I I ,,swD		A>>DHI #E	4D(D > ),< <= 65+vzBBA<<$$ :ll#G#);;==5#8: : :   *** Q}}}  ,!23333  *uiA.N!OPPPPS[[b,/0000S[[b&\**** !.tt!MNNNYlO^ 3z??##DDbD) ' 'AB-/*E9i}Y}y}%&
1ac6"s$   m* *7n!y 
z#,zzc                    | j         }d}d}|dk    r	 t          |         }| j        r|dk    rd}|                     |          n|dk    rd}|                     |          ||z  }|t          z  r%|t          z  |k    rd}|                     |           |            }||                     d	          |d
v rnE|t          vr;|                                rdnd	}|                     |t          |                    |dk    r|xj        |z  c_        d S |t          z  r|                     dd          |dk    r |            }||                     d          |t          vr;|                                rdnd}|                     |t          |                    	 t          |         }|t          z  rd}|                     |          ||z  } |            }||                     d          |dk    rnE|t          vr;|                                rdnd}|                     |t          |                    |dk    sJ |t          z  r|                     dd          ||z  r|                     dd          ||fS )Nr   r  Tr   z8bad inline flags: cannot use 'L' flag with a str patternr   z:bad inline flags: cannot use 'u' flag with a bytes patternz9bad inline flags: flags 'a', 'u' and 'L' are incompatiblezmissing -, : or )z)-:zunknown flagr  z,bad inline flags: cannot turn on global flagr   zmissing flagz8bad inline flags: cannot turn off flags 'a', 'u' and 'L'z	missing :r  z-bad inline flags: cannot turn off global flagz(bad inline flags: flag turned on and off)	r/   r&  r   r.   
TYPE_FLAGSisalphar)   r   GLOBAL_FLAGS)r<   rF   r   r,  r5  r6  flagr   s           r$   r'  r'    s   
IIIs{{	3;D} ,3;;TC ,,s+++  3;;VC ,,s+++Iz! (	J(>4'G'GQll3'''9;;D|ll#6777u}}5  (,Onn<Oll3D		222+	3, s{{y t< NllI1MMMs{{y{{<,,~...u$(LLNNF..C,,sCII...	3;Dj  (Pll3'''I9;;D|ll;///s{{5  (,GnnKll3D		222	3 3;;;;< OllJANNN9 JllEqIIIir&   c                 8   t          | t                    rH|t          z  rt          d          |t          z  s|t
          z  }nV|t
          z  rt          d          n<|t
          z  rt          d          |t          z  r|t          z  rt          d          |S )Nz)cannot use LOCALE flag with a str patternz(ASCII and UNICODE flags are incompatiblez,cannot use UNICODE flag with a bytes patternz'ASCII and LOCALE flags are incompatible)rX   rR   SRE_FLAG_LOCALEr   SRE_FLAG_ASCIISRE_FLAG_UNICODE)srcr   s     r$   	fix_flagsrG    s    #s H?" 	JHIII~% 	I%%EE%% 	IGHHH	I ## 	MKLLL?" 	Hu~'= 	HFGGGLr&   r   Nc                    t          |           }|t                      }||_        | |_        t	          |||t
          z  d          }t          | |j        j                  |j        _        |j        "|j        dk    sJ |	                    d          |j        j
        D ]8}||j        j        k    r&d|z  }t          || |j        j
        |                   9|t          z  r|                                 |S )Nr   r  zunbalanced parenthesisr   )r   r   r   rR   r   r   rG  rF   r   r.   r!   r*   SRE_FLAG_DEBUGrV   )rR   r   rF   r<   r6   gr   s          r$   parserK    s     s^^F}EKEI65%*:":A>>Ac17=11AGM{{c!!!!ll3444W  : :.2CS!'"5a"8999  ~ 	Hr&   c           	         t          |           j        }g g g j        }fd}j        }	  |            }|n|d         dk    r|d         }|dk    rՉ                    d          s                    d                              d	d
          }|                                rC                    |dd           	 ||         }	nA# t          $ r t          d|z            d w xY w	 t          |          }	|	dk     rt          n8# t          $ r+                     d|z  t          |          dz             d w xY w|	t          k    r)                    d|	z  t          |          dz             |                                r|                                sndd l}
|
                    dj        rt)          |          nt+          |                                          t          |          z
  dz
  fz  t.          d            ||	t          |          dz              n|dk    rij        t2          v r(| |            z  }j        t2          v r| |            z  } |t5          t          |dd          d          dz                       nd|t6          v rd}j        t6          v r| |            z  }|t2          v r|d         t2          v ryj        t2          v rk| |            z  }d}t          |dd          d          }|dk    r&                    d|z  t          |                     |t5          |                     |s1 |t          |dd                    t          |          dz
             ny	 t5          t8          |         d                   }n@# t          $ r3 |t:          v r'                    d|z  t          |                    d Y nw xY w ||           n ||           ԉr(                    d                                         t?          | t@                    sd D             fS )Nc                     | j         k    r                    d| z  |          r-                    d                                         d d =                     t	                    | f                               d            d S )Nr   rJ   )r*   r.   r,   joinr)   )ri   r   r*   literalliteralsr   rF   s     r$   addgroupz parse_template.<locals>.addgroup  s    5<''6>DDD 	OOBGGG,,---
s8}}e,---r&   Tr   r   r   rJ  r  z	missing <r  r  rv   r  r   r   r     r   r   r   r   Frw   r   r   rJ   c                 @    g | ]}|d n|                     d          S )Nzlatin-1)r   ).0r   s     r$   
<listcomp>z"parse_template.<locals>.<listcomp>A  s,    QQQ1AIDD188I+>+>QQQr&   )!r   r/   r,   
groupindexr   r.   r   r   r   r   r   r   r   r)   r-   r%  r   r   r   r   rb   r   r   r   r   r   r   r   r   r   rN  rX   rR   )r<   rF   sgetlappendrQ  rV  r   r   r0   ri   r   isoctalr*   rO  rP  r   s    `          @@@@r$   parse_templaterZ    s    	&A5DFHGnG         !JBtvv<7d??QACxxwws|| /''+...zz#|44$$&& $$T1b111S *4 0# S S S()@4)GHHdRS? #D		 199",, %% ? ? ?gg&F&M&)$ii!m5 5:>?? 	))gg&BU&J&)$ii!m5 5 5 NN,,  ' K+,8DT$ZZZtVVXXD		1A577 /1	 &    D		A....c6Y&&DDFFNDv**CQRR!,,t3445555f6V##DDFFNDY47i+?+?)++"&QRR!,,u99"#'' +:<@+ABEd))#M #M MA ;HSabb]]CIIM:::Swt}Q/00DD S S SL((ggo&<c$iiHHdR )(S GDMMMEBF  *(()))fc"" R RQQQQ8s*   C C8<D 5E N5 5:O21O2c                     |j         }|j        d d         }| \  }}|d d          }	 |D ]\  }} ||          p|||<   n!# t          $ r t          d|z            d w xY w|                    |          S )Nr   r   )r   r   r   r.   rN  )templater   rJ  emptyr*   rP  ri   r   s           r$   expand_templater^  D  s    AL!EFH{HD" 	0 	0LE5ahh/%HUOO	0 D D D05899tCD::hs   A   A)F)r   N)<__doc__
_constantsr  r  	frozensetr   r   r   r   r  r  r!  r   r}   r"  r  rS   r   r  CATEGORYr~   r   r   r  AT_BEGINNING_STRINGAT_BOUNDARYAT_NON_BOUNDARYCATEGORY_DIGITCATEGORY_NOT_DIGITCATEGORY_SPACECATEGORY_NOT_SPACECATEGORY_WORDCATEGORY_NOT_WORDAT_END_STRINGr   SRE_FLAG_IGNORECASErC  SRE_FLAG_MULTILINESRE_FLAG_DOTALLr   rD  SRE_FLAG_TEMPLATErE  r&  r>  rI  r@  r   rD   r   r   r   r   r   r   r'  rG  rK  rZ  r^  rB   r&   r$   <module>rq     sM   & %    	<	 	 Ij!!	I.//	yOPPY}%%
y*j2CDEEYUBhGHH
 SSYYSSYYSSYYSSYYSSYYSSYYSSYYSSYY	 	 #$ (N+,-(./01(N+,-(./01(M*+,(-./0 
 
								 	 o-0@@
 11"< "< "< "< "< "< "< "<Hr r r r r r r rhT T T T T T T Tl:> :> :>xK> K> K>Z& & &: : :xA A A AF:  :  : x      6[ [ [z
  
  
  
  
 r&   