
    sh_                       S SK r S SKrS SKrS SKJrJr  S SKJr  S SK	J
r
JrJrJrJrJrJrJrJrJr  S SKJrJrJrJrJrJr  S SKJrJr  S SKJrJ r J!r!  S SK"J#r#  S S	K$J%r%J&r&J'r'  S S
K(J)r)  S SK*J+r+  S SK,J-r-  S SK.J/r/  S SK0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrPJQrQ  S SKRJSrS  \#S;   a  S SK$JTrT  SrU\!R                  (       a  \R                  R                  rYO\R                  R                  rY\" \R                  5       " S S\
R:                  5      5       r\\" \R                  SS5        \" \R                  SS5        \" \R                  SS5        \" \R                  SS5        \" \R                  SS5        \" \R                  5       " S S \5      5       r^S! r_S" r`\" \R                  \R                  5      S# 5       rc\" \R                  5      S$ 5       rd\" \R                  5      S% 5       re\" \R                  5      S& 5       rfS' rg\S( 5       rh\S) 5       ri\S* 5       rj\S+ 5       rk\SS, j5       rl\" S-S.9S/ 5       rmS0 rn\S1 5       ro\S2 5       rp\S3 5       rq\" S-S.9S4 5       rr\#S5;   a	  \S6 5       rsO\#S;   a	  \S7 5       rsO\t" \#5      e\S8 5       ru\#S5;   a	  \S9 5       rvO\#S;   a	  \S: 5       rvO\t" \#5      e\" S-S.9S; 5       rw\S< 5       rx\S= 5       ry\" \z5      S> 5       r{\" \R                  5      S? 5       r}\" \R                  5      S@ 5       r\" \GR                   5      SA 5       r\" \GR                  5      SB 5       r\" \GR                  5      SC 5       r\" \GR                  5      SD 5       r\" \GR                  5      SE 5       rSF rSG r\SH 5       r\SI 5       r\SJ 5       r\SK 5       rSL r\" \" \5      5      r\" \" \5      5      r\" \R                  SM5      SSN j5       r\" \R                  SO5      SSP j5       r\" \R                  SQ5      SSR j5       r\" \R                  SS5      SST j5       r\" \R                  SU5      SV 5       r\" \R                  SW5      SSX j5       r\" \R                  SY5      SZ 5       r\S[ 5       r\" \R                  S\5      SS] j5       r\" \R                  S^5      SS_ j5       r\" \R                  S`5      SSa j5       r\" \R                  Sb5      SSc j5       rSd r\" \" \:5      5      r\" \" \;5      5      r\" \R                  Se5      SSf j5       r\" \R                  Sg5      SSh j5       rSi r\" \R                  Sj5      " \" S-5      5        \" \R                  Sk5      " \" Sl5      5        Sm r\" \" \C5      5      r\" \" \B5      5      r\" \R                  Sn5      SSo j5       r\Sp 5       r\" \R                  Sq5      Sr 5       r\" \R                  Ss5      St 5       r\Su 5       r\Sv 5       rSw rSx r\" \R                  Sy5      SSz j5       r\" \R                  S{5      SS| j5       r\" \R                  S}5      SS~ j5       r\SS j5       r\S 5       r\S 5       r\S 5       r\" S-S.9S 5       r\S 5       r\" \GRr                  5      S 5       r\" \GRv                  5      \" \GRx                  5      S 5       5       r\S 5       r\" \GR~                  5      S 5       r\" \GR                  5      S 5       r\" \R                  S5      SS j5       rS r\" \R                  S5      " \" \O\M5      5        \" S 5      r\" \R                  S5      " \" \4\5      5        S r\" S 5      r\" \" \G\H\5      5      r\" \" \A\@\F5      5      r\" \R                  S5      S 5       r\" \R                  S5      S 5       r\" \R                  S5      S 5       r\" \R                  S5      S 5       r\" \R                  S5      S 5       rSS jr\" \R                  S5      " \" \:5      5        \" \R                  S5      " \" \N5      5        \" \R                  S5      " \" \P5      5        \" \R                  S5      " \" \Q5      5        \" \R                  S5      " \" \9S-5      5        S r\S 5       r\S 5       rS r\" \" S-5      5      r\" \" Sl5      5      rS r\" \" \15      5      r\" \" \25      5      r\" \R                  S5      S 5       r\" \R                  S5      S 5       r\S 5       r\S 5       r\" \R                  S5      S 5       r\S 5       r\S 5       r\" \R                  S5      S 5       r\S 5       r\S 5       r\" \R                  S5      S 5       r\S 5       r\S 5       r\" \R                  S5      S 5       r\" \5      S 5       r\S 5       rS\U-  r\S 5       r\" \5      S 5       r\" \R                  S5      S 5       r\" \R                  S5      S 5       r\" \GR                  S5      S 5       r\" \GR                  S5      S 5       r\" \GR                  S5      \" \GR                  S5      S 5       5       r\" S\R                  5      S 5       r\" S\R                  5      \" \GR                  5      S 5       5       rg)    N)IntTypeConstant)is_nonelike)
modelsregister_modelmake_attribute_wrapperunboxboxNativeValueoverloadoverload_method	intrinsicregister_jitable)lower_constant
lower_castlower_builtiniternext_implimpl_ret_new_refRefType)register_defaultStructModel)typescgutilsconfig)	PYVERSION)PY_UNICODE_1BYTE_KINDPY_UNICODE_2BYTE_KINDPY_UNICODE_4BYTE_KIND)	c_helpers)
_Py_hash_t)memcpy_region)TypingError)!_Py_TOUPPER_Py_TOLOWER_Py_UCS4_Py_ISALNUM_PyUnicode_ToUpperFull_PyUnicode_ToLowerFull_PyUnicode_ToFoldedFull_PyUnicode_ToTitleFull_PyUnicode_IsPrintable_PyUnicode_IsSpace_Py_ISSPACE_PyUnicode_IsXidStart_PyUnicode_IsXidContinue_PyUnicode_IsCased_PyUnicode_IsCaseIgnorable_PyUnicode_IsUppercase_PyUnicode_IsLowercase_PyUnicode_IsLineBreak_Py_ISLINEBREAK_Py_ISLINEFEED_Py_ISCARRIAGERETURN_PyUnicode_IsTitlecase_Py_ISLOWER_Py_ISUPPER_Py_TAB_Py_LINEFEED_Py_CARRIAGE_RETURN	_Py_SPACE_PyUnicode_IsAlpha_PyUnicode_IsNumeric_Py_ISALPHA_PyUnicode_IsDigit_PyUnicode_IsDecimalDigit)slicing))   
   )rE      )PY_UNICODE_WCHAR_KIND c                       \ rS rSrS rSrg)UnicodeModelR   c           	      J   S[         R                  4S[         R                  4S[         R                  4S[         R                  4S[
        4S[         R                  " [         R                  5      4S[         R                  4/n[        R                  R                  XX#5        g )Ndatalengthkindis_asciihashmeminfoparent)r   voidptrintpint32uint32r    MemInfoPointerpyobjectr   r   __init__)selfdmmfe_typememberss       i/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cpython/unicode.pyr[   UnicodeModel.__init__T   s|    U]]#uzz"U[[!&Z ,,U]];<u~~&	
 	##Dw@     N)__name__
__module____qualname____firstlineno__r[   __static_attributes__rc   rb   r`   rK   rK   R   s    Arb   rK   rN   _datarO   _lengthrP   _kindrQ   	_is_asciirR   _hashc                   (   ^  \ rS rSrU 4S jrSrU =r$ )UnicodeIteratorModeli   c                    > S[         R                  " [         R                  5      4SUR                  4/n[        [
        U ]  XU5        g )NindexrN   )r   EphemeralPointeruintprN   superro   r[   )r\   r]   r^   r_   	__class__s       r`   r[   UnicodeIteratorModel.__init__k   s?    U33EKK@AGLL)+"D23Irb   rc   )rd   re   rf   rg   r[   rh   __classcell__)rv   s   @r`   ro   ro   i   s    J Jrb   ro   c           
         SSK JnJnJnJnJnJnJnJnJ	n	  [        S   n
U" X'U" U5      U" U5      U" U5      U" U5      5      nU" U
5      nU" 5       nU" 5       nU" 5       nU" 5       nU" X	" U5      U	" U5      U	" U5      U	" U5      5      nUc  [        S5      eUR                  nUR                  nUR                  nUS-   [        U5      -  nUU-  R                  U5      n[        U5      XUUR                  4$ )zlGet string data from a python string for use at compile-time to embed
the string data into the LLVM module.
r   )		CFUNCTYPEc_void_pc_intc_uint	c_ssize_tc_ubyte	py_objectPOINTERbyrefextract_unicodez1cannot extract unicode data from the given string   )ctypesrz   r{   r|   r}   r~   r   r   r   r   r   
ValueErrorvalue_kind_to_byte_widthfrom_addressbytes)objrz   r{   r|   r}   r~   r   r   r   r   extract_unicode_fnprotofnrO   rP   rQ   hashvrN   nbytesouts                       r`   compile_time_get_string_datar   s   s      
 ##45h79+=wu~fowy'9;E	!	"B[F7DxHKEc5=%+uXeMD|LMM\\F::D~~Hqj/55FV
)
)$
/C:vXu{{::rb   c                    [        U5      u  pEpgnUR                  n	U R                  X5      n
[        R                  " U5      " X5      nXl        UR                  R                  U5      Ul        UR                  R                  U5      Ul        UR                  R                  U5      Ul	        UR                  R                  S5      Ul
        UR                  5       $ )zZ
Get string data by `compile_time_get_string_data()` and return a
unicode_type LLVM value
)r   moduleinsert_const_bytesr   create_struct_proxyrN   rO   typerP   rQ   rR   	_getvalue)contextbuildertypliteral_string	databytesrO   rP   rQ   r   modgvuni_strs               r`   make_string_from_constantr      s     	%^4 -Itu
..C		#	#C	3B))#.w@GL^^((0GN<<$$T*GL'',,X6G <<$$R(GLrb   c                 .    [        XX2R                  5      $ N)r   literal_value)r   r   fromtytotyvals        r`   cast_from_literalr      s    $$ 4 4 rb   c                     [        XX#5      $ r   )r   )r   r   r   pyvals       r`   constant_unicoder      s    $WsBBrb   c                    UR                   R                  U5      u  p4pVpx[        R                  " U 5      " UR                  UR
                  5      n	XIl        XYl        Xil        Xyl	        Xl
        UR                   R                  UU5      U	l        Xl        [        R                  " UR
                  UR                   R                  5       5      n
[!        U	R#                  5       U
S9$ )z=
Convert a unicode str object to a native unicode structure.
)is_error)pyapistring_as_string_size_and_kindr   r   r   r   rN   rO   rP   rQ   rR   nrt_meminfo_new_from_pyobjectrS   rT   is_not_nullerr_occurredr   r   )r   r   cokrN   rO   rP   rQ   r   r   r   s              r`   unbox_unicode_strr      s     	
..s3 ,BfH))#.qyy!))DGLNLLgg;;GO N""199agg.B.B.DEHw((*X>>rb   c                 r   [         R                  " U 5      " UR                  UR                  US9nUR                  R                  UR                  UR                  UR                  5      nUR                  R                  U5        UR                  R                  R                  UR                  X5        U$ )z8
Convert a native unicode structure to a unicode string
r   )r   r   r   r   r   string_from_kind_and_datarP   rN   rO   object_hashnrtdecref)r   r   r   r   ress        r`   box_unicode_strr      s    
 ))#.qyy!))3OG
''
+
+gllGNN4C
 GGIIMMC-Jrb   c                    ^  U 4S jnU$ )Nc                    > Uu  pEUR                  U[        T5      R                  5       5      nUR                  UR	                  Xe/5      5      nUR                  U[        S5      5      $ N    )bitcastr   
as_pointerloadgepzext)	r   r   	signatureargsrN   idxptrchbitsizes	           r`   codegen#make_deref_codegen.<locals>.codegen   sV    	oodGG$4$?$?$AB\\'++c512||B,,rb   rc   r   r   s   ` r`   make_deref_codegenr      s    - Nrb   c                     [         R                  " [         R                  [         R                  5      nU[	        S5      4$ N   r   rX   rU   rV   r   	typingctxrN   offsetsigs       r`   deref_uint8r      s+    
,,u}}ejj
1C"1%%%rb   c                     [         R                  " [         R                  [         R                  5      nU[	        S5      4$ N   r   r   s       r`   deref_uint16r      +    
,,u}}ejj
1C"2&&&rb   c                     [         R                  " [         R                  [         R                  5      nU[	        S5      4$ r   r   r   s       r`   deref_uint32r      r   rb   c                     S n[         R                  " [         R                  [         R                  [         R                  [         R                  5      nXe4$ )zymake empty string with data buffer of size alloc_bytes.

Must set length and kind values for string after it is returned
c           
      <   Uu  pEpg[         R                  " [        R                  5      nU" X5      n	UR	                  UUR                  U[        UR                  S5      5      5      n
U R                  R                  X5      U	l
        XIl        Xyl        Xil        U R                  [        S5      U	l        U R                  R#                  XR                  5      U	l        [         R&                  " U	R(                  R                  5      U	l        U	R+                  5       $ )Nr   r   )r   r   r   unicode_typemuladdr   r   r   meminfo_allocrS   rP   rQ   rO   get_constantr    rR   meminfo_datarN   get_null_valuerT   r   )r   r   r   r   kind_valchar_bytes_val
length_valis_ascii_valuni_str_ctorr   
nbytes_vals              r`   details_malloc_string.<locals>.details   s    ?C<: 2253E3EFw0[[!(Z-5jooq-I"KL
 "++33GH'#++J;{{//I //0C0CD  ""rb   )r   r   rW   rV   rX   )r   rP   
char_bytesrO   rQ   r   r   s          r`   _malloc_stringr      s7    #* 

U[[%**ejj%,,
OC<rb   c                 t    [        U 5      n[        XX5      n[        XA[        R                  " S5      5        U$ Nr   )r   r   _set_code_pointnprX   )rP   rO   rQ   
char_widthss        r`   _empty_stringr     s/    $T*Jt:AAryy|,Hrb   F)_nrtc                     U R                   [        :X  a  [        U R                  U5      $ U R                   [        :X  a  [        U R                  U5      $ U R                   [        :X  a  [        U R                  U5      $ gr   )rk   r   r   ri   r   r   r   r   )ais     r`   _get_code_pointr   "  sa    ww''177A&&	
)	)AGGQ''	
)	)AGGQ'' rb   c                    ^  U 4S jnU$ )Nc                   > Uu  pEnTS:  a  UR                  U[        T5      5      nUR                  U[        T5      R                  5       5      nUR	                  XaR                  Xu/5      5        U R                  5       $ r   )truncr   r   r   storer   get_dummy_value)	r   r   r   r   rN   r   r   r   r   s	           r`   r   !make_set_codegen.<locals>.codegen3  sl    2R<r77#34BoodGG$4$?$?$ABb++c512&&((rb   rc   r   s   ` r`   make_set_codegenr  2  s    ) Nrb   c                     [         R                  " [         R                  [         R                  [         R                  5      nU[        S5      4$ r   r   voidrU   int64rX   r  r   rN   r   r   r   s        r`   	set_uint8r  >  s1    
**U]]EKK
>C ###rb   c                     [         R                  " [         R                  [         R                  [         R                  5      nU[        S5      4$ r   r	  r  s        r`   
set_uint16r  D  1    
**U]]EKK
>C $$$rb   c                     [         R                  " [         R                  [         R                  [         R                  5      nU[        S5      4$ r   r	  r  s        r`   
set_uint32r  J  r  rb   c                    U R                   [        :X  a  [        U R                  X5        g U R                   [        :X  a  [        U R                  X5        g U R                   [        :X  a  [        U R                  X5        g [        S5      e)Nz4Unexpected unicode representation in _set_code_point)	rk   r   r  ri   r   r  r   r  AssertionError)r   r   r   s      r`   r   r   P  sg     	ww''!''1!	
)	)177A"	
)	)177A"BD 	Drb   ))rE      )rE      c                 x    U [         :X  a  U$ U [        :X  a  U[        :X  a  U$ U $ U [        :X  a  U $ [        S5      e)N/Unexpected unicode representation in _pick_kindr   r   r   r  kind1kind2s     r`   
_pick_kindr  d  sL    ))L++--++L AC Crb   c                     U [         :X  d
  U[         :X  a  [        S5      eU [        :X  a  U$ U [        :X  a  U[        :X  a  U$ U $ U [        :X  a  U $ [        S5      e)N!PY_UNICODE_WCHAR_KIND unsupportedr  )rH   r  r   r   r   r  s     r`   r  r  s  si    **e7L.L !DEE))L++--++L AC Crb   c                 r    U S:X  a  US:X  a  [         R                  " S5      $ [         R                  " S5      $ Nr   r   )r   rX   )	is_ascii1	is_ascii2s     r`   _pick_asciir$    s+    A~)q.||A<<?rb   c                 Z    U [         :X  a  gU [        :X  a  gU [        :X  a  g[        S5      e)Nr         'Unexpected unicode encoding encounteredr  rP   s    r`   r   r     s2    ((**** !JKKrb   c                     U [         :X  a  gU [        :X  a  gU [        :X  a  gU [        :X  a  [	        S5      e[	        S5      e)Nr   r&  r'  r  r(  )r   r   r   rH   r  r)  s    r`   r   r     sG    ((****** !DEE !JKKrb   c                     US:X  a  gX-   U R                   :  a  gX4-   UR                   :  a  g[        U5       H-  n[        XU-   5      n[        X#U-   5      nXg:  a    gXg:  d  M-    g   g)Nr   r   r   )rj   ranger   )r   a_offsetbb_offsetnr   a_chrb_chrs           r`   _cmp_regionr3    sm    Av				!				!1Xa<0a<0=]  rb   c                 f    U S:  a  [         $ U S:  a  [        $ SnX:  a  Sn[        U5      e[        $ )zC
Compute the minimum unicode kind needed to hold a given codepoint
   i   rI   z;Invalid codepoint. Found value greater than Unicode maximum)r   r   r   r   )cpMAX_UNICODEmsgs      r`   _codepoint_to_kindr9    s@    
 
Cx$$	e$$ OCS/!$$rb   c                     U S:  $ )z3
Returns true if a codepoint is in the ASCII range
   rc   )r   s    r`   _codepoint_is_asciir<    s    
 8Orb   c                 L    [        U [        R                  5      (       a  S nU$ g )Nc                     U R                   $ r   )rj   r   s    r`   len_implunicode_len.<locals>.len_impl  s    99rb   
isinstancer   UnicodeType)r   r@  s     r`   unicode_lenrE    s$    !U&&''	 (rb   c                    U R                   (       a  UR                   (       d  g [        U [        R                  5      (       a  U R                  nOU n[        U[        R                  5      (       a  UR                  nOUn[        R
                  [        R                  [        R                  4n[        X$5      n[        X45      nU(       a  U(       a  S nU$ XV-  (       a  S nU$ g )Nc           	          U S L nUS L nU(       d  U(       a  U(       a  U(       a  gg[        U 5      n [        U5      n[        U 5      [        U5      :w  a  g[        U SUS[        U 5      5      S:H  $ )NTFr   )strlenr3  )r   r.  a_noneb_nones       r`   eq_implunicode_eq.<locals>.eq_impl  se    $YF$YFf AAAA1vQq!Q3q62a77rb   c                     gNFrc   r   r.  s     r`   rL  rM    s    rb   )is_internalrC  r   Optionalr   rD  StringLiteralUnicodeCharSeq)r   r.  check_acheck_baccept	a_unicode	b_unicoderL  s           r`   
unicode_eqrZ    s    MMamm!U^^$$&&!U^^$$&&!4!4e6J6JKF7+I7+IY	8 				 
rb   c                    U R                   (       a  UR                   (       d  g [        R                  [        R                  [        R                  4n[        X5      n[        X5      nU(       a  U(       a  S nU$ X4-  (       a  S nU$ g )Nc                     X:X  + $ r   rc   rP  s     r`   ne_implunicode_ne.<locals>.ne_impl  s
    <rb   c                     g)NTrc   rP  s     r`   rL  unicode_ne.<locals>.eq_impl  s    rb   )rQ  r   rD  rS  rT  rC  )r   r.  rW  rX  rY  r]  rL  s          r`   
unicode_nera    sh    MMamm!4!4e6J6JKF1%I1%IY	 				 
rb   c                     [        U [        R                  [        R                  45      n[        U[        R                  [        R                  45      nU(       a  U(       a  S nU$ g g )Nc                     [        [        U 5      [        U5      5      n[        U SUSU5      nUS:X  a  gUS:X  a  [        U 5      [        U5      :  $ g)Nr   r   TFminrI  r3  r   r.  minleneqcodes       r`   lt_implunicode_lt.<locals>.lt_impl"  sN    QQ(F Aq!V4F|11vA&rb   rC  r   rD  rS  )r   r.  rX  rY  ri  s        r`   
unicode_ltrl    T    1u00%2E2EFGI1u00%2E2EFGIY	  yrb   c                     [        U [        R                  [        R                  45      n[        U[        R                  [        R                  45      nU(       a  U(       a  S nU$ g g )Nc                     [        [        U 5      [        U5      5      n[        U SUSU5      nUS:X  a  gUS:X  a  [        U 5      [        U5      :  $ g)Nr   r   TFrd  rf  s       r`   gt_implunicode_gt.<locals>.gt_impl2  sN    QQ(F Aq!V4F{11vA&rb   rk  )r   r.  rX  rY  rp  s        r`   
unicode_gtrr  -  rm  rb   c                     [        U [        R                  [        R                  45      n[        U[        R                  [        R                  45      nU(       a  U(       a  S nU$ g g )Nc                     X:  + $ r   rc   rP  s     r`   le_implunicode_le.<locals>.le_implB  
    ;rb   rk  )r   r.  rX  rY  ru  s        r`   
unicode_lerx  =  R    1u00%2E2EFGI1u00%2E2EFGIY	 yrb   c                     [        U [        R                  [        R                  45      n[        U[        R                  [        R                  45      nU(       a  U(       a  S nU$ g g )Nc                     X:  + $ r   rc   rP  s     r`   ge_implunicode_ge.<locals>.ge_implL  rw  rb   rk  )r   r.  rX  rY  r|  s        r`   
unicode_ger~  G  ry  rb   c                     [        U [        R                  5      (       a%  [        U[        R                  5      (       a  S nU$ g g )Nc                     [        X5      S:  $ Nr   )_findrP  s     r`   contains_impl'unicode_contains.<locals>.contains_implT  s    ;##rb   rB  )r   r.  r  s      r`   unicode_containsr  Q  s=    !U&&''Jq%:K:K,L,L	$ 	 -M'rb   c                 T   U n[        U [        R                  5      (       a  U R                  nO+[        U [        R                  5      (       a  U R
                  n[        R                  [        R                  4nUb,  [        X#5      (       d  [        SR                  XU 5      5      egg)zoCheck object belongs to one of specific types
ty: type
    Type of the object
name: str
    Name of the object
N"{}" must be {}, not {})
rC  r   Omittedr   rR  r   IntegerNoneTyper"   format)tynamethetyaccepteds       r`   unicode_idx_check_typer  Z  s     E"emm$$	B	'	'u~~.HE!<!<3::42NOO "=rb   c                     [        U [        R                  5      (       d,  SR                  U[        R                  U 5      n[	        U5      eg)z$Check object belongs to unicode typer  N)rC  r   rD  r  r"   )r  r  r8  s      r`   unicode_sub_check_typer  n  s?    b%++,,'..tU5F5FK# -rb   c                 *    U SU[         S-
  -  -  -  n U $ Nr   _BLOOM_WIDTHmaskr   s     r`   
_bloom_addr  w  s     Q2)*+,DKrb   c                 &    U SU[         S-
  -  -  -  $ r  r  r  s     r`   _bloom_checkr  }  s    1|a/0122rb   c                 `   [        U5      nUS:X  a  U$ US-
  =pV[        X5      n[        R                  " S5      n[	        X5      n	[        U5       H'  n
[        X5      n[	        X5      n	X:X  d  M   Xj-
  S-
  nM)     Un
XU-
  ::  a  [        XU
-   5      nX:X  ac  SnX:  a+  [        X
U-   5      n[        X5      nX:w  a  OUS-  nX:  a  M+  X:X  a  U
$ [        XU
-   S-   5      n[        X5      S:X  a  X-  n
O)X-  n
O$[        XU
-   S-   5      n[        X5      S:X  a  X-  n
U
S-  n
XU-
  ::  a  M  g)zLeft finder.r   r   r   )rI  r   r   rV   r  r,  r  )rN   substrstartendmgapmlastlastzeror  r   r   jhaystack_ch	needle_chs                  r`   _default_findr    sN    	FAAva%C6)D::a=Dd!D5\V'$#:)a-C	  	A
Qw,T19-:A)-dE:+F6	+Q ) z qy1}5BD%* qy1}5BD%*	Q/ Qw,2 rb   c                 6   [        U5      nUS:X  a  U$ US-
  =pV[        US5      n[        SU5      nUn	U	S:  a-  [        X5      n
[        X5      nX:X  a  U	S-
  nU	S-  n	U	S:  a  M-  X4-
  n	X:  a  [        X	5      n
X:X  ah  UnUS:  a,  [        X	U-   5      n[        X5      nX:w  a  OUS-  nUS:  a  M,  US:X  a  U	$ [        X	S-
  5      n
X:  a  [        X5      S:X  a  X-  n	O+X-  n	O&[        X	S-
  5      n
X:  a  [        X5      S:X  a  X-  n	U	S-  n	X:  a  M  g)zRight finder.r   r   r   )rI  r   r  r  )rN   r  r  r  r  skipr  mfirstr  r   r   r  r  r  s                 r`   _default_rfindr    sQ    	FAAv
q5DVQ'Fa DA
a%V'$#<q5D	Q a% 	A
*T%<Aa%-dE:+F6	+Q a% Av 1u-By\$3q8	 !1u-By\$3q8	Q3 *6 rb   c                    ^  SU 4S jjnU$ )z%Generate finder either left or right.c                    > [        U 5      n[        U5      nUc  SnUc  Un[        XBU5      u  p#X2-
  U:  a  gT" XX#5      $ )Nr   r   )rI  _adjust_indices)rN   r  r  r  rO   
sub_length	find_funcs         r`   implgenerate_finder.<locals>.impl  sQ    T[
=E;C$VC8
;#u22rb   NNrc   )r  r  s   ` r`   generate_finderr    s    3 Krb   findc                     [        U[        R                  5      (       a  SS jnU$ [        US5        [        US5        [	        US5        [
        $ )zImplements str.find()c                 6    U R                  [        U5      5      $ r   )r  rH  rN   r  r  r  s       r`   	find_implunicode_find.<locals>.find_impl  s    99S[))rb   r  r  r  r  )rC  r   rT  r  r  r  )rN   r  r  r  r  s        r`   unicode_findr    sE     &%..//	*5'*3&68,Lrb   rfindc                     [        U[        R                  5      (       a  SS jnU$ [        US5        [        US5        [	        US5        [
        $ )zImplements str.rfind()c                 6    U R                  [        U5      5      $ r   )r  rH  r  s       r`   
rfind_impl!unicode_rfind.<locals>.rfind_impl  s    ::c&k**rb   r  r  r  r  )rC  r   rT  r  r  _rfind)rN   r  r  r  r  s        r`   unicode_rfindr  	  sE     &%..//	+5'*3&68,Mrb   rindexc                 X    [        US5        [        US5        [        US5        SS jnU$ )zImplements str.rindex()r  r  subc                 L    U R                  XU5      nUS:  a  [        S5      eU$ Nr   zsubstring not found)r  r   r   r  r  r  results        r`   rindex_impl#unicode_rindex.<locals>.rindex_impl   s*    S)A:233rb   r  r  r  )r   r  r  r  r  s        r`   unicode_rindexr    s/     5'*3&3& rb   rr   c                 X    [        US5        [        US5        [        US5        SS jnU$ )zImplements str.index()r  r  r  c                 L    U R                  XU5      nUS:  a  [        S5      eU$ r  )r  r   r  s        r`   
index_impl!unicode_index.<locals>.index_impl2  s*    C(A:233rb   r  r  )r   r  r  r  r  s        r`   unicode_indexr  +  s/     5'*3&3& rb   	partitionc                 ^   Un[        U[        R                  5      (       a  UR                  nO+[        U[        R                  5      (       a  UR
                  n[        R                  [        R                  4nUb-  [        X#5      (       d  SR                  SX15      n[        U5      eS nU$ )zImplements str.partition()r  sepc                 L   [        U5      n[        U R                  SU R                  5      n[	        U5      nU R                  UR                  :  d  [	        U 5      U:  a  XU4$ US:X  a  [        S5      eU R                  U5      nUS:  a  XU4$ U SU XXC-   [	        U 5       4$ Nr   empty separator)rH  r   rk   rl   rI  r   r  rN   r  	empty_str
sep_lengthposs        r`   r  unicode_partition.<locals>.implM  s    #h!$**a@	X
::		!SY%;I--?.//iin7I--Ac{Cc&6s4y!AAArb   
rC  r   r  r   rR  r   rD  rT  r  r"   rN   r  r  r  r8  r  s         r`   unicode_partitionr  =       E#u}}%%			C	(	(!!5#7#78HE!<!<'..uhD#B" Krb   countc                     [        U5        [        U5        [        U[        R                  5      (       a  SS jnU$ Sn[	        UR                  [        U5      5      5      e)Nc                    Sn[        U 5      n[        U5      n[        X%S5      n[        X5U5      nX2-
  S:  d  X%:  a  gXU n [        U 5      nSUp2US:X  a  US-   $ X&-   U::  a#  XX&-    U:X  a
  US-  nX&-  nOUS-  nX&-   U::  a  M#  U$ Nr   r   )rI  _normalize_slice_idx_count)srcr  r  r  r  src_lensub_lens          r`   
count_impl!unicode_count.<locals>.count_implh  s    E#hG#hG.uqAE,S7CC{Q%/c"C#hGG3!|{"?g-u/36QJE$EQJE ?g- Lrb   z+The substring must be a UnicodeType, not {}r  )_count_args_types_checkrC  r   rD  r"   r  r   )r  r  r  r  r  	error_msgs         r`   unicode_countr  a  sS     E"C #u(())	0 =I
i&&tCy1
22rb   
rpartitionc                 ^   Un[        U[        R                  5      (       a  UR                  nO+[        U[        R                  5      (       a  UR
                  n[        R                  [        R                  4nUb-  [        X#5      (       d  SR                  SX15      n[        U5      eS nU$ )zImplements str.rpartition()r  r  c                 L   [        U5      n[        U R                  SU R                  5      n[	        U5      nU R                  UR                  :  d  [	        U 5      U:  a  X"U 4$ US:X  a  [        S5      eU R                  U5      nUS:  a  X"U 4$ U SU XXC-   [	        U 5       4$ r  )rH  r   rk   rl   rI  r   r  r  s        r`   r   unicode_rpartition.<locals>.impl  s    #h!$**a@	X
::		!SY%;--?.//jjo7--Ac{Cc&6s4y!AAArb   r  r  s         r`   unicode_rpartitionr    r  rb   c                 ^    X :  a  U nUS:  a  X -  nUS:  a  SnUS:  a  X-  nUS:  a  SnX4$ r   rc   )rO   r  r  s      r`   r  r    sH    
|
Qw7Cqy19E:rb   
startswithc                 6   [        U5      (       d*  [        U[        R                  5      (       d  [	        S5      e[        U5      (       d*  [        U[        R                  5      (       d  [	        S5      e[        U[        R
                  5      (       a0  [        UR                  [        R                  5      (       a  SS jnU$ [        U[        R                  5      (       a  SS jnU$ [        U[        R                  5      (       a  SS jnU$ [	        S5      e)Nz:When specified, the arg 'start' must be an Integer or Nonez8When specified, the arg 'end' must be an Integer or Nonec                 H    U H  nU R                  XBU5      (       d  M    g   gNTF)r  )r   prefixr  r  items        r`   startswith_tuple_impl1unicode_startswith.<locals>.startswith_tuple_impl  s%    <<S11  rb   c                 8    U R                  [        U5      X#5      $ r   )r  rH  )r   r  r  r  s       r`   startswith_char_seq_impl4unicode_startswith.<locals>.startswith_char_seq_impl  s    <<FU88rb   c                     [        U 5      [        U5      pTUc  SnUc  Un[        XBU5      u  p#X2-
  U:  a  gUS:X  a  gXU n[        USUSU5      S:H  $ Nr   FTrI  r  r3  )r   r  r  r  rO   prefix_lengths_slices          r`   startswith_unicode_impl3unicode_startswith.<locals>.startswith_unicode_impl  sl    $'FCKM}{(<JE{]*!clGw61mDIIrb   z9The arg 'prefix' should be a string or a tuple of stringsr  )	r   rC  r   r  r"   UniTupledtyperD  rT  )r   r  r  r  r  r  r  s          r`   unicode_startswithr
    s    uj&F&FHJ 	J sJsEMM$B$BFH 	H &%..))v||U%6%677	 %$	FE00	1	1	9 ('	FE--	.	.	J$ '& GI 	Irb   endswithc                 8   UbI  [        U[        R                  [        R                  [        R                  45      (       d  [        S5      eUbI  [        U[        R                  [        R                  [        R                  45      (       d  [        S5      e[        U[        R                  [        R                  45      (       a  SS jnU$ [        U[        R                  5      (       a  SS jnU$ [        U[        R                  5      (       a  SS jnU$ g )Nz!The arg must be a Integer or Nonec                 D    U H  nU R                  XBU5      SL d  M    g   gr  )r  )r   r  r  r  r  s        r`   endswith_impl'unicode_endswith.<locals>.endswith_impl  s'    ::d3/47  rb   c                     [        U 5      n[        U5      nUc  SnUc  Un[        XBU5      u  p#X2-
  U:  a  gUS:X  a  gXU n [        U 5      U-
  n[        XUSU5      S:H  $ r  r  )r   r  r  r  rO   r  r   s          r`   r  r    sz    VFVJ}{(<JE{Z'QAVj(Fq&!Z@AEErb   c                 8    U R                  [        U5      X#5      $ r   )r  rH  )r   r  r  r  s       r`   r  r    s    ::c&k566rb   r  )
rC  r   r  r  r  r"   Tupler  rD  rT  )r   r  r  r  r  s        r`   unicode_endswithr    s    MZ05050@ A A =>>K:cEMM,1MM,1NN,< = = =>>&5;;788	 &%++,,	F& &%..//	7 0rb   
expandtabsc                 H   Un[        U[        R                  5      (       a  UR                  nO+[        U[        R                  5      (       a  UR
                  n[        R                  [        4nUb*  [        X#5      (       d  [        SR                  X15      5      eSS jnU$ )zImplements str.expandtabs()z"tabsize" must be {}, not {}c                    [        U 5      nS=p4Sn[        U5       H  n[        X5      nU[        :X  a=  SnUS:  a3  XU-  -
  nU[        R
                  U-
  :  a  [        S5      eXH-  nX8-  nMS  MU  U[        R
                  S-
  :  a  [        S5      eUS-  nUS-  nU[        [        4;   d  M  SnM     U(       d  U $ [        U R                  X0R                  5      n	S=p4[        U5       H  n[        X5      nU[        :X  a>  US:  a6  XU-  -
  nXH-  n[        X3U-   5       H  n
[        X[        5        M     X8-  nMT  MV  US-  n[        XU5        US-  nU[        [        4;   d  M~  SnM     U	$ )Nr   FTznew string is too longr   )rI  r,  r   r;   sysmaxsizeOverflowErrorr<   r=   r   rk   rl   r   r>   )rN   tabsizerO   r  line_posfoundr   
code_pointincrr   r   s              r`   expandtabs_impl+unicode_expandtabs.<locals>.expandtabs_impl2  s   TvA(1JW$Q;"&89D3;;--+,DEE$HIA  s{{Q&'(@AAAQ,0C!DD H# & KDJJ>>:vA(1JW$Q;"&89D$H$QD1')<  2IA  A
3Q,0C!DD H   
rb   r   )
rC  r   r  r   rR  r   r  intr"   r  )rN   r  r  r  r  s        r`   unicode_expandtabsr#  "  s     E'5==))	GU^^	,	,s#HE!<!<*11(DF 	F,\ rb   splitc                    US:X  d?  [        U[        R                  [        R                  [        R                  45      (       d  g [        U[        R
                  5      (       a  SS jnU$ [        U[        R                  5      (       a  SS jnU$ Ub-  [        U[        R                  5      (       d  [        USS5      c  SS jnU$ g )Nr   c                 4    U R                  [        U5      US9$ )N)maxsplit)r$  rH  )r   r  r'  s      r`   
split_impl!unicode_split.<locals>.split_implk  s    773s8h777rb   c                    [        U 5      n[        U5      nUS:X  a  [        S5      e/ nSnSnUS:X  aN  US:X  aH  [        US5      n[        U5       H,  n[        X5      U:X  d  M  UR	                  XU 5        US-   nM.     O\Sn	Xs:  aU  US:X  d  X:  aJ  [        XUSU5      S:X  a  UR	                  XU 5        Xt-  nUnU	S-  n	OUS-  nXs:  a  US:X  a  MC  X:  a  MJ  Xc::  a  UR	                  XS  5        U$ )Nr   r  r   r   )rI  r   r   r,  appendr3  )
r   r  r'  a_lensep_lenpartsr  r   sep_code_pointsplit_counts
             r`   r(  r)  p  s   FE#hG!| !233EDC!|B!0a!8 <C&q..@QC[1"Qw (
  kx2~'2'="137;q@QC[1"#q(q kx2~'2'= }QuX&Lrb   r   Fc                 N   [        U 5      n/ nSnSnSnSn[        U5       Ha  n[        X5      n	[        U	5      n
U(       a  U
(       a  M)  UnSnM/  U
(       d  M8  UR	                  XU 5        SnUS-  nUS:w  d  MZ  Xr:X  d  Ma    O   XS::  a  U(       d  UR	                  XS  5        U$ )Nr   TFr   r   )rI  r,  r   r,   r+  )r   r  r'  r,  r.  r  r   r0  in_whitespace_blockr  is_whitespaces              r`   split_whitespace_impl,unicode_split.<locals>.split_whitespace_impl  s    FEEDCK"&U|,Q4
 2: >&$".3+(QC[1.2+#q(#r>k.E!# $& }%8QuX&Lrb   r  )	rC  r   r  r  IntegerLiteralrT  rD  r  getattr)r   r  r'  r(  r4  s        r`   unicode_splitr8  c  s    Nx%--"'"6"6"8 9 9#u++,,	8#u(())!	D 	
377C%(0	@ %$C 1rb   c                    ^  SU 4S jjnU$ )z@Generate whitespace rsplit func based on either ascii or unicodec                 "  > US:  a  [         R                  n/ n[        U 5      S-
  nUS:  a  US:  a&  [        X5      nT" U5      (       d  OUS-  nUS:  a  M&  US:  a  OYUnUS-  nUS:  a&  [        X5      nT" U5      (       a  OUS-  nUS:  a  M&  UR	                  XS-   US-    5        US-  nUS:  a  M  US:  aI  US:  a&  [        X5      nT" U5      (       d  OUS-  nUS:  a  M&  US:  a  UR	                  U SUS-    5        US S S2   $ Nr   r   r   )r  r  rI  r   r+  )rN   r  r'  r  r   r  r  isspace_funcs          r`   rsplit_whitespace_impl?generate_rsplit_whitespace_impl.<locals>.rsplit_whitespace_impl  s>   a<{{HIMlq&,T5
#J//Q	 q&
 1uAFAq&,T5

++Q	 q&
 MM$1uQU+,MH! l$ 6 q&,T5
#J//Q	 q&
 Avd1QUm,dd|rb   r  rc   )r<  r=  s   ` r`   generate_rsplit_whitespace_implr?    s    $L "!rb   rsplitc                 2   S nU" US[         R                  [         R                  [         R                  45        U" US[         R                  [
        45        Ub/  [        U[         R                  [         R                  45      (       a  SS jnU$ SS jnU$ )zImplements str.unicode_rsplit()c                    U n[        U [        R                  5      (       a  U R                  nO+[        U [        R                  5      (       a  U R
                  nUb,  [        X25      (       d  [        SR                  XU 5      5      egg)z.Check object belongs to one of specified typesNr  )rC  r   r  r   rR  r   r"   r  )r  r  r  r  s       r`   _unicode_rsplit_check_type2unicode_rsplit.<locals>._unicode_rsplit_check_type  ss    b%--((HHEENN++GGEZ%@%@)00DF F &Arb   r  r'  c                 T    U R                   (       a  [        XU5      $ [        XU5      $ r   )rl   ascii_rsplit_whitespace_implunicode_rsplit_whitespace_impl)rN   r  r'  s      r`   r=  .unicode_rsplit.<locals>.rsplit_whitespace_impl  s#    ~~3DxHH1$XFFrb   c                    [        U5      nU R                  UR                  :  d  [        U 5      [        U5      :  a  U /$ S nUS:  a  [        R                  n[        U5      nUS:X  a  [        S5      eUS:X  a	  U" XU5      $ / n[        U 5      nUS:  a=  U R                  USUS9nUS:  a  O%UR                  XU-   U 5        UnUS-  nUS:  a  M=  UR                  U SU 5        US S S2   $ )Nc                 ,   / n[        US5      n[        U 5      S-
  =pVUS:  aM  US:  aG  [        X5      nXt:X  a$  UR                  XS-   US-    5        US-
  =peUS-  nUS-  nUS:  a  US:  a  MG  US:  a  UR                  U SUS-    5        US S S2   $ r;  )r   rI  r+  )rN   r   r'  r  ch_code_pointr   r  data_code_points           r`   _rsplit_char9unicode_rsplit.<locals>.rsplit_impl.<locals>._rsplit_char  s    F+B2MIM!Aq&X\"1$":"3MM$1uq1u"56EMAMHQ q&X\ Bwd1q1uo.$B$<rb   r   r  r   )r  r  r   )rH  rk   rI  r  r  r   r  r+  )rN   r  r'  rM  r  r  r  r  s           r`   rsplit_impl#unicode_rsplit.<locals>.rsplit_impl  s    #h::		!SYS%96M	 " a<{{HX
?.//?844Il**Sq*1CQwMM$Z/23AMH l 	d1Qi dd|rb   r  )r   rD  rT  r  r  r"  rC  r  )rN   r  r'  rC  r=  rO  s         r`   unicode_rsplitrQ    s    F sEE,=,=,1,@,@,1NN,< = xemmS5IJ
{ju~~u}}&EFF	G
 &%-^ rb   centerc                 0   [        U[        R                  5      (       d  [        S5      e[        U[        R                  5      (       a  SS jnU$ US:X  d:  [        U[        R
                  [        R                  45      (       d  [        S5      eSS jnU$ )NThe width must be an Integer c                 8    U R                  U[        U5      5      $ r   )rR  rH  stringwidthfillchars      r`   center_impl#unicode_center.<locals>.center_implC  s    ==H66rb   "The fillchar must be a UnicodeTypec                     [        U 5      n[        U5      nUS:w  a  [        S5      eX::  a  U $ X-
  nUS-  XQ-  S-  -   nXV-
  nX&-  nXg:X  a  X-   U-   $ X-   X'-  -   $ )Nr   5The fill character must be exactly one character longr&  rI  r   )	rX  rY  rZ  str_lenfillchar_len	allmarginlmarginrmarginl_strings	            r`   r[  r\  K  s    f+8}1 . / / MO	>i&7!&;<%%$x//$(:;;rb   rU  rC  r   r  r"   rT  r  rD  )rX  rY  rZ  r[  s       r`   unicode_centerri  =  sy    eU]]++899(E0011	7Ox%--1B1B!CDD>??<* rb   c                    ^  SU 4S jjnU$ )Nc                 T  > [        U[        R                  5      (       d  [        S5      e[        U[        R                  5      (       a  T(       a  SS jnU$ SS jnU$ US:X  d:  [        U[        R
                  [        R                  45      (       d  [        S5      eSU4S jjnU$ )NrT  rU  c                 8    U R                  U[        U5      5      $ r   )ljustrH  rW  s      r`   
ljust_impl<gen_unicode_Xjust.<locals>.unicode_Xjust.<locals>.ljust_implj      !<<s8}==rb   c                 8    U R                  U[        U5      5      $ r   )rjustrH  rW  s      r`   
rjust_impl<gen_unicode_Xjust.<locals>.unicode_Xjust.<locals>.rjust_impln  rp  rb   r]  c                    > [        U 5      n[        U5      nUS:w  a  [        S5      eX::  a  U $ X!U-
  -  nT(       a  X-   $ XP-   $ )Nr   r_  r`  )rX  rY  rZ  ra  rb  newstrSTRING_FIRSTs         r`   r  6gen_unicode_Xjust.<locals>.unicode_Xjust.<locals>.implv  s[    &kGx=Lq   "2 3 3 '/2F&&rb   rg  rh  )rX  rY  rZ  rn  rs  r  rw  s         r`   unicode_Xjust(gen_unicode_Xjust.<locals>.unicode_Xjustd  s    %//<==h 4 455>!!>!!C8emmU5F5F%GHHBCC	'" rb   rg  rc   )rw  ry  s   ` r`   gen_unicode_Xjustr{  c  s    #J rb   rr  rm  Tc                    ^  U 4S jnU$ )zDGenerate splitlines performer based on ascii or unicode line breaks.c                 v  > [        U 5      n/ nS=pEXB:  a  XB:  a%  [        X5      nT
" U5      (       a  OUS-  nXB:  a  M%  UnXB:  aU  US-   U:  a>  [        X5      n[        XS-   5      n	[        U5      (       a  [        U	5      (       a  US-  nUS-  nU(       a  UnUR	                  XU 5        UnXB:  a  M  U$ r  )rI  r   r7   r6   r+  )rN   keependsrO   r  r   r  r  eolcur_cpnext_cpis_line_break_funcs             r`   r  &generate_splitlines_func.<locals>.impl  s    T	j*,T5
%j11Q	 * Czq56>,T5F-dE:G+F33w8O8OQQCMM$+&A+ j. rb   rc   )r  r  s   ` r`   generate_splitlines_funcr    s    < Krb   
splitlinesc                 r   Un[        U[        R                  5      (       a  UR                  nO+[        U[        R                  5      (       a  UR
                  n[        R                  [        [        R                  [        4nUb+  [        X#5      (       d  [        SR                  SX15      5      eSS jnU$ )zImplements str.splitlines()r  r~  c                 P    U R                   (       a  [        X5      $ [        X5      $ r   )rl   _ascii_splitlines_unicode_splitlines)rN   r~  s     r`   splitlines_impl+unicode_splitlines.<locals>.splitlines_impl  s    >>$T44"422rb   F)rC  r   r  r   rR  r   r  r"  Booleanboolr"   r  )rN   r~  r  r  r  s        r`   unicode_splitlinesr    s     E(EMM**	Henn	-	-sEMM48HE!<!<%,,ZLN 	N3 rb   c           
         [        U5      nUS:X  a  g[        U 5      nUS-
  U-  nU R                  nU R                  nU H;  nU[        U5      -  n[        XWR                  5      n[	        XgR                  5      nM=     [        XTU5      nUS   n	[        USU	S[        U	5      5        [        U	5      n
[        SU5       H>  n[        XU SU5        X-  n
X   n	[        XU	S[        U	5      5        U
[        U	5      -  n
M@     U$ )Nr    r   )rI  rk   rl   r  r$  r   _strncpyr,  )r  r.  	parts_lenr-  rO   rP   rQ   pr  part
dst_offsetr   s               r`   	join_listr    s    E
IA~ #hG!mw&F99D}}H#a&$(x5 
 42F 8DVQaT+TJQ	"S!W5
zT1c$i8c$i
 # Mrb   joinc                    [        U[        R                  5      (       a]  [        UR                  [        R                  5      (       a  S nU$ [        UR                  [        R
                  5      (       a  S nU$ g [        U[        R                  5      (       a  S nU$ [        U[        R                  5      (       a  S nU$ g )Nc                     [        X5      $ r   )r  )r  r.  s     r`   join_list_impl$unicode_join.<locals>.join_list_impl  s     ,,rb   c                 X    U Vs/ s H  n[        U5      PM     nn[        X5      $ s  snf r   )rH  r  )r  r.  r  _partss       r`   r  r    s*    */0%Q#a&%0 -- 1s   'c                 P    U Vs/ s H  o"PM     nnU R                  U5      $ s  snf r   )r  )r  r.  r  
parts_lists       r`   join_iter_impl$unicode_join.<locals>.join_iter_impl  s*    %*+U!UJ+88J'' ,s   #c                 n    [        [        U5      5       Vs/ s H  o!U   PM	     nn[        X5      $ s  snf r   )r,  rI  r  )r  r.  r   r  s       r`   join_str_impl#unicode_join.<locals>.join_str_impl  s3    ,1#e*,=>,=q(,=J>S-- ?s   2)rC  r   Listr	  rD  rT  IterableType)r  r.  r  r  r  s        r`   unicode_joinr    s     %$$ekk5#4#455-!!U%9%9::. "!	E5--	.	.	( 	E5,,	-	-	.  
.rb   zfillc                 `    [        U[        R                  5      (       d  [        S5      eS nU$ )Nz<width> must be an Integerc                     [        U 5      nX::  a  U $ U(       a  U S   OSnSX-
  -  nUS;   a  X4-   U SS  -   nU$ X@-   nU$ )Nr   r  0)+-r   rI  )rX  rY  ra  
first_charpaddingrv  s         r`   
zfill_impl!unicode_zfill.<locals>.zfill_impl  s`    f+M")VAYr
)#)F12J6F  %Frb   )rC  r   r  r"   )rX  rY  r  s      r`   unicode_zfillr    s,    eU]]++677" rb   c                     [        U 5      nSnUb   [        U5       H  nX   U;  d  M  Us  $    U$ [        U5       H  n[        X   5      (       a  M  Us  $    U$ r   rI  r,  r,   rX  charsra  r   s       r`   unicode_strip_left_boundr  *  sc    &kG	AwAy%   N	 wA%fi00   Nrb   c                     [        U 5      nSnUb*  [        US-
  SS5       H  nX   U;  d  M  US-  n  U$     U$ [        US-
  SS5       H  n[        X   5      (       a  M  US-  n  U$    U$ r;  r  r  s       r`   unicode_strip_right_boundr  ;  s    &kG	Aw{B+Ay%Q H , H w{B+A%fi00QH ,
 Hrb   c                     [        U [        R                  5      (       a  U R                  n U bJ  [        U [        R                  [        R
                  [        R                  45      (       d  [        S5      eg g )Nz%The arg must be a UnicodeType or None)rC  r   rR  r   r  rD  r  r"   )r  s    r`   unicode_strip_types_checkr  M  sc    %((

MZ050A0A050@ A A ABBAMrb   c                     [        U [        R                  5      (       a  U R                  n U bJ  [        U [        R                  [        R
                  [        R                  45      (       d  [        S5      eg g )Nz,The slice indices must be an Integer or None)rC  r   rR  r   r  r  r  r"   )args    r`   r  r  V  s]    #u~~&&hhK:cEMM,1MM,1NN,< = = HII=Krb   lstripc                 r    [        U[        R                  5      (       a  SS jnU$ [        U5        SS jnU$ )Nc                 6    U R                  [        U5      5      $ r   )r  rH  rX  r  s     r`   lstrip_impl#unicode_lstrip.<locals>.lstrip_implc      ==U,,rb   c                     U [        X5      S  $ r   )r  r  s     r`   r  r  i  s    .v=>??rb   r   rC  r   rT  r  )rX  r  r  s      r`   unicode_lstripr  _  s6     %--..	-e$@rb   rstripc                 r    [        U[        R                  5      (       a  SS jnU$ [        U5        SS jnU$ )Nc                 6    U R                  [        U5      5      $ r   )r  rH  r  s     r`   rstrip_impl#unicode_rstrip.<locals>.rstrip_implr  r  rb   c                     U S [        X5       $ r   )r  r  s     r`   r  r  x  s    ?0?@@rb   r   r  )rX  r  r  s      r`   unicode_rstripr  n  s6     %--..	-e$Arb   stripc                 r    [        U[        R                  5      (       a  SS jnU$ [        U5        SS jnU$ )Nc                 6    U R                  [        U5      5      $ r   )r  rH  r  s     r`   
strip_impl!unicode_strip.<locals>.strip_impl  s    <<E
++rb   c                 6    [        X5      n[        X5      nXU $ r   )r  r  )rX  r  lbrbs       r`   r  r    s     %f4&v5}rb   r   r  )rX  r  r  s      r`   unicode_stripr  }  s7     %--..	,e$ rb   c                 `    U c
  U(       a  gU$ U S:  a  X-  n U S:  d  X:  a  [        S5      eU $ )z
Parameters
----------
idx : int or None
    the index
length : int
    the string length
is_start : bool; optional with defaults to True
    Is it the *start* or the *stop* of the slice?

Returns
-------
norm_idx : int
    normalized index
r   zstring index out of range)
IndexError)r   rO   is_starts      r`   normalize_str_idxr    s>    " {M	q
Qw#-455Jrb   c                 H    U c  U$ U* U s=::  a
  U:  a   X-  $   U S:  a  S$ U $ )a	  
Used for unicode_count

If arg < -slice_len, returns 0 (prevents circle)

If arg is within slice, e.g -slice_len <= arg < slice_len
returns its real index via arg % slice_len

If arg > slice_len, returns arg (in this case count must
return 0 if it is start index)
r   rc   )r  	slice_lendefaults      r`   r  r    s;     {zS$9$ %a1 S rb   c                     U" X5      nS nX44$ )zFix slice object.
    c                     UR                   u  pEUu  pgU R                  XU5      n[        R                  " XXH5        [        R                  " XU5        UR                  5       $ r   )r   make_helperrD   guard_invalid_slice	fix_slicer   )	r   r   r   r   	slicetype
lengthtypesliceobjrO   slices	            r`   r   !_normalize_slice.<locals>.codegen  sU    "%((!##GA##GiG'&1  rb   rc   )r   r  rO   r   r   s        r`   _normalize_slicer    s     8
$C! <rb   c                 :    [         R                  " U5      nS nX#4$ )z2Compute the span from the given slice object.
    c                 z    UR                   u  nUu  nU R                  XU5      n[        R                  " X5      nU$ r   )r   r  rD   get_slice_length)r   r   r   r   r  r  r  result_sizes           r`   r   _slice_span.<locals>.codegen  s<    hh
##GA..w>rb   )r   rV   )r   r  r   r   s       r`   _slice_spanr    s!     **X
C <rb   c           
         UR                   U R                   :X  aB  [        UR                   5      nXS-  nXQ-  nXE-  n[        U R                  XrR                  XhSS9  g [	        U5       H  n	[        XU	-   [        X#U	-   5      5        M      g )Nr   )align)rk   r   r!   ri   r,  r   r   )
dstr  r  
src_offsetr0  
byte_widthsrc_byte_offsetdst_byte_offsetr   r   s
             r`   r  r    s{    
yyCII(3
$1$1cii))%Q	8 qACa+Ca@B rb   c                     U[         R                  :X  d   eS n[         R                  " [         R                  [         R                  [         R                  5      nXT4$ )zWCreate a slice of a unicode string using a view of its data to avoid
extra allocation.
c                    Uu  pEn[         R                  " [        R                  5      " XUS9n[         R                  " [        R                  5      " X5      nUR                  Ul        UR
                  Ul        UR                  Ul        Xhl        U R                  [        S5      Ul
        U R                  R                  [        5      n	U	R                  U R                  [        R                  40 5      n
U R!                  X5      nU" XR
                  45      nUR#                  X\5      nUR%                  UR&                  U/5      Ul        [         R(                  " UR*                  R,                  5      Ul        U R.                  (       a)  U R0                  R3                  XR4                  S   U5        UR7                  5       $ )Nr   r   r   )r   r   r   r   rS   rP   rQ   rO   r   r    rR   typing_contextresolve_value_typer   get_call_typerW   get_functionr   r   rN   r   rT   r   
enable_nrtr   increfr   r   )r   r   r   r   r  r  rO   in_strview_strbw_typbw_sigbw_implr  r   s                 r`   r   $_get_str_slice_view.<locals>.codegen  s\   !F,,  '=..  '2!>>"OO ,,Z<''::;NO%%""U[[NB8&&v6W{{n5
U/FKK&:!001E1EFKKwS9!!##rb   )r   r   rV   )r   src_tstart_tlength_tr   r   s         r`   _get_str_slice_viewr
    sI    
 E&&&&&$6 

U//UZZ
HC<rb   c                     [        U [        R                  5      (       aI  [        U[        R                  5      (       a  S nU$ [        U[        R                  5      (       a  S nU$ g g )Nc                     [        U[        U 5      5      n[        X5      n[        U5      nX0R                  :X  a  [        XS5      $ [        U5      n[        USU5      n[        USU5        U$ r!  )	r  rI  r   r9  rk   r
  r<  r   r   )r   r   r6  rP   rQ   rets         r`   getitem_char%unicode_getitem.<locals>.getitem_char   se    'SV4$Q,)"-77?.qq99226H'a:C#CB/Jrb   c           	         [        U[        U 5      5      n[        U5      n[        XR                  5      n[        U5      n[        U5      n[        UR                  UR                  -   UR                  UR                  5       H9  n[        X5      nU[        U5      -  n[        U5      nXX:w  d  M.  [        XX5      nM;     UR                  S:X  a%  XPR                  :X  a  [        XR                  U5      $ [        XSU5      n	UR                  n
[        U5       H&  n[        X[        X
5      5        XR                  -  n
M(     U	$ r  )r  rI  r  r   r  r9  r<  r,  stepstopr  rk   r
  r   r   )r   r   	slice_idxspanr6  rP   rQ   r   new_kindr  curs              r`   getitem_slice&unicode_getitem.<locals>.getitem_slice-  s   ,S#a&9	"9-$Q8)"-.r2 y?(~~y~~?A(.B 3B 77H1"5H')$9? >>Q&477? /q//4HH (H=C#//C"4['0GH~~- ) Jrb   )rC  r   rD  r  	SliceType)r   r   r  r  s       r`   unicode_getitemr    s]    !U&&''c5==))
  U__--"H ! K . (rb   c                    [        U [        R                  5      (       a$  [        U[        R                  5      (       a  S nU$ [        U [        R                  5      (       a%  [        U[        R                  5      (       a  S nU$ g g )Nc           	         U R                   UR                   -   n[        U R                  UR                  5      n[        U R                  UR                  5      n[        X2U5      n[        [        U 5      5       H  n[        XV[        X5      5        M     [        [        U5      5       H%  n[        U[        U 5      U-   [        X5      5        M'     U$ r   )
rj   r  rk   r$  rl   r   r,  rI  r   r   )r   r.  
new_lengthr  	new_asciir  r   r  s           r`   concat_impl#unicode_concat.<locals>.concat_impl]  s    QYY.J!!''1773H#AKK=I"8CF3q6]?1+@A #3q6]A
OA4IJ #Mrb   c                     U [        U5      -   $ r   )rH  rP  s     r`   r  r   j  s    s1v:rb   )rC  r   rD  rT  )r   r.  r  s      r`   unicode_concatr"  Y  so     !U&&''Jq%:K:K,L,L		 !U&&''Jq%:N:N,O,O	 -P'rb   c                 T   U S:X  d  US:  a  gUS:X  a  U $ U R                   U-  nU R                  n[        X2U R                  5      n[	        U 5      n[        USU SU5        UnSU-  U::  a  [        XFUSU5        US-  nSU-  U::  a  M  SU-  U:X  d  X&-
  n[        XFXFU-
  U5        U$ g )Nr  r   r   r&  )rj   rk   r   rl   rI  r  )str_argmult_argr  r  r  len_a	copy_sizerests           r`   _repeat_implr)  o  s    "}1	Q__x/
==xW5F5FGGGQ.	)mz)V9=NI )mz) 9}
* )DVD0@$GM +rb   c                    [        U [        R                  5      (       a$  [        U[        R                  5      (       a  S nU$ [        U [        R                  5      (       a%  [        U[        R                  5      (       a  S nU$ g g )Nc                     [        X5      $ r   r)  rP  s     r`   wrapunicode_repeat.<locals>.wrap      %%rb   c                     [        X5      $ r   r,  rP  s     r`   r-  r.    r/  rb   )rC  r   rD  r  )r   r.  r-  s      r`   unicode_repeatr1    se    !U&&''Jq%--,H,H	&	Au}}	%	%*Q8I8I*J*J	& +K	%rb   c                 L    [        U [        R                  5      (       a  S nU$ g )Nc                     [        U 5      S:H  $ r   r  r   s    r`   r  unicode_not.<locals>.impl  s    q6Q;rb   rB  r   r  s     r`   unicode_notr7    s$    !U&&''	 (rb   replacec                 D   Un[        U[        R                  5      (       a  UR                  nO+[        U[        R                  5      (       a  UR
                  n[        U[        [        R                  45      (       d  [        SR                  U5      5      e[        U[        R                  [        R                  45      (       d  [        SR                  U5      5      e[        U[        R                  5      (       d  [        SR                  U5      5      eSS jnU$ )NzGUnsupported parameters. The parameters must be Integer. Given count: {}z+The object must be a UnicodeType. Given: {}c                    US:X  a  U $ US:X  a  [        U 5      nUS:X  a  X"R                  U5      -   U-   $ U/n[        [        U5      U5      n[	        U5       HW  nUR                  XG   5        US-   U:w  a  UR                  U5        M2  UR                  SR                  XGS-   S  5      5        MY     U[        U5      :  a  UR                  U5        SR                  U5      $ U R                  X5      nUR                  U5      nU$ )Nr   r  r   r   )listr  re  rI  r,  r+  r$  )	r   old_strnew_strr  scharssplit_result	min_countr   r  s	            r`   r  unicode_replace.<locals>.impl  s    A:Hb=!WF{f!55??#9LCK/I9%##FI.q5I% ''0 ''Ax0@(AB & s6{"##G,77<(((f%rb   r   )rC  r   r  r   rR  r   r"  r  r"   r  rD  r  )r   r<  r=  r  r  r  s         r`   unicode_replacerC    s    E%''	E5>>	*	*

ec5==122 ==CVE]L 	L g 1 15>>BCC ''-vg8 	8 gu0011 ''-vg8 	8, Krb   c                    ^ ^ U U4S jnU$ )Nc                    > UU4S jnU$ )Nc                 b  > [        U 5      nUS:X  a  gUS:X  a-  [        U S5      nU R                  (       a  T" U5      $ T" U5      $ U R                  (       a,  [        U5       H  n[        X5      nT" U5      (       a  M    g   [        U5       H  n[        X5      nT" U5      (       a  M    g   g)Nr   Fr   T)rI  r   rl   r,  )rN   rO   r  r   
ascii_funcunicode_funcs       r`   r  .gen_isAlX.<locals>.unicode_isAlX.<locals>.impl  s    YF{{,T15
>>%j11'
33~~vA!0!9J%j11$ '
 6],T5
#J//  #
 rb   rc   )rN   r  rG  rH  s     r`   unicode_isAlX gen_isAlX.<locals>.unicode_isAlX  s    	2 rb   rc   )rG  rH  rJ  s   `` r`   	gen_isAlXrL    s    8 rb   isalphac                 <    [        U 5      =(       d    [        U 5      $ r   )r@   r?   xs    r`   <lambda>rQ    s    &:1&= '<&8&;'<rb   isalnumc                    ^ ^^ U UU4S jnU$ )Nc                   > [        U 5      nUS:X  a  T" [        U S5      5      S:g  $ US:X  a  gSn[        U5       HD  n[        X5      nT" U5      (       d  T" U5      (       a    gU(       a  M3  T" U5      (       d  MB  SnMF     U$ Nr   r   FTrI  r   r,  )r   lcasedr   r  is_loweris_titleis_uppers        r`   r  _is_upper.<locals>.impl  s    F6OAq12a7768C(0J
##x
';';e 4 4  rb   rc   )rY  r[  rZ  r  s   ``` r`   	_is_upperr]    s    
 Krb   c                     grO  rc   rO  s    r`   rQ  rQ    s    5rb   isupperc                     S nU$ )z
Implements .isupper()
c                 P    U R                   (       a  [        U 5      $ [        U 5      $ r   )rl   _ascii_is_upper_unicode_is_upperr4  s    r`   r  unicode_isupper.<locals>.impl   s    ;;"1%%$Q''rb   rc   r6  s     r`   unicode_isupperre    s    
(
 Krb   isasciic                     S nU$ )z Implements UnicodeType.isascii()c                     U R                   $ r   )rl   rN   s    r`   r  unicode_isascii.<locals>.impl,  s    ~~rb   rc   rN   r  s     r`   unicode_isasciirl  (  s    Krb   istitlec                     S nU$ )z
Implements UnicodeType.istitle()
The algorithm is an approximate translation from CPython:
https://github.com/python/cpython/blob/1d4b6ba19466aba0eb91c4ba01ba509acf18c723/Objects/unicodeobject.c#L11829-L11885 # noqa: E501
c                 j   [        U 5      nUS:X  a)  [        U S5      n[        U5      =(       d    [        U5      $ US:X  a  gSnSn[	        U5       H^  n[        X5      n[        U5      (       d  [        U5      (       a  U(       a    gSnSnM=  [        U5      (       a  U(       d    gSnSnM\  SnM`     U$ rU  )rI  r   r2   r8   r,  r3   )rN   rO   charrX  previous_is_casedr   s         r`   r  unicode_istitle.<locals>.impl9  s    TQ;"4+D)$/O3I$3OOQ;!=C"4-D%d++/Ed/K/K$ $(!'--( $(!$)! ! rb   rc   rk  s     r`   unicode_istitlers  1  s    6 Krb   islowerc                     S nU$ )a<  
impl is an approximate translation of:
https://github.com/python/cpython/blob/201c8f79450628241574fba940e08107178dc3a5/Objects/unicodeobject.c#L11900-L11933    # noqa: E501
mixed with:
https://github.com/python/cpython/blob/201c8f79450628241574fba940e08107178dc3a5/Objects/bytes_methods.c#L131-L156    # noqa: E501
c                    [        U 5      nUS:X  a  [        [        U S5      5      $ US:X  a  gSn[        U5       HM  n[        X5      n[	        U5      (       d  [        U5      (       a    gU(       a  M9  [        U5      (       d  MK  SnMO     U$ rU  )rI  r3   r   r,  r2   r8   )rN   rO   rX  r   r6  s        r`   r  unicode_islower.<locals>.impl`  s    TQ;)/$*BCCQ;=C +B%b))-CB-G-GU5b99 ! rb   rc   rk  s     r`   unicode_islowerrx  W  s     Krb   isidentifierc                     S nU$ )z%Implements UnicodeType.isidentifier()c                     [        U 5      nUS:X  a  g[        U S5      n[        U5      (       d  US:w  a  g[        SU5       H   n[        X5      n[	        U5      (       a  M     g   g)Nr   F_   r   T)rI  r   r.   r,  r/   )rN   rO   first_cpr   r  s        r`   r  "unicode_isidentifier.<locals>.implw  sd    TQ;"4+$X..8t3Cq&!A(1J+J77 "
 rb   rc   rk  s     r`   unicode_isidentifierr  s  s      Krb   c                    ^ ^ U U4S jnU$ )Nc                    > UU4S jnU$ )Nc                    > [        U 5      nUS:X  a  T" [        U S5      5      $ T(       a  US:X  a  g[        U5       H  n[        X5      nT" U5      (       a  M    g   grU  rV  )rN   rO   r   r  _PyUnicode_IS_funcempty_is_falses       r`   r  *gen_isX.<locals>.unicode_isX.<locals>.impl  s\    YF{)/$*BCC&A+6],T5
)*55  #
 rb   rc   )rN   r  r  r  s     r`   unicode_isXgen_isX.<locals>.unicode_isX  s    	 rb   rc   )r  r  r  s   `` r`   gen_isXr    s    " rb   isspace	isnumericisdigit	isdecimalisprintablec                    ^ ^ U U4S jnU$ )z)Generate common case operation performer.c           	        > [        U 5      nUS:X  a   [        U R                  XR                  5      $ U R                  (       a!  [        U R                  US5      nT	" X5        U$ [        [        SU-  U R                  5      nS/nT
" XX45      nUS   n[        U5      n[        Xu[        U5      5      n[        U5       H  n[        X([        X85      5        M     U$ )Nr   r   rE   )
rI  r   rk   rl   r   r9  r<  r,  r   r   )rN   rO   r   tmpmaxchars	newlengthmaxcharnewkindr   rG  rH  s            r`   r  case_operation.<locals>.impl  s    TQ; V^^DD>>

FA6Ct!J 11v:t~~N3 s=	1+$W-G0CG0LMy!ACOC$;< " 
rb   rc   )rG  rH  r  s   `` r`   case_operationr    s    . Krb   c                 Z   SnUS-
  nUS:  a)  [        X5      n[        U5      (       d  OUS-  nUS:  a  M)  US:  =(       a    [        U5      nU(       aM  US-   nXA:  a(  [        X5      n[        U5      (       d  OUS-  nXA:  a  M(  XA:H  =(       d    [        U5      (       + nU(       a  S$ S$ )zEThis is a translation of the function that handles the capital sigma.r   r   i  i  )r   r1   r0   )rN   rO   r   r   r  final_sigmas         r`   _handle_capital_sigmar    s     	
AaA
q&D$)!,,	Q	 q&
 6303K!Gj(A-a00FA	 j
 {A+=a+@'@5*U*rb   c                 D    U S:X  a  [        XU5      US'   g[        X5      $ )z>This is a translation of the function that lowers a character.i  r   r   )r  r(   )r  rN   rO   r   mappeds        r`   _lower_ucs4r    s*     U)$<q	!*55rb   c                    ^  U 4S jnU$ )Nc                   > Sn[        U5       Hv  n[        R                  " S[        S9n[	        X5      nT
(       a  [        XpXU5      nO[        Xv5      nUS U  H&  n	[        US   U	5      US'   [        X$U	5        US-  nM(     Mx     U$ Nr   rE   r	  r   )	r,  r   zerosr%   r   r  r'   maxr   )rN   rO   r   r  kr   r  r  n_resr  lowers             r`   _do_upper_or_lower7_gen_unicode_upper_or_lower.<locals>._do_upper_or_lower  s    =CXXax0F(3J#Jf6J /zBFU^!(1+q1*Q $ ! rb   rc   )r  r  s   ` r`   _gen_unicode_upper_or_lowerr    s     rb   c                    ^  U 4S jnU$ )Nc                 v   > [        [        U 5      5       H   n[        X5      n[        XT" U5      5        M"     g r   )r,  rI  r   r   )rN   r   r   r  funcs       r`   _ascii_upper_or_lower8_gen_ascii_upper_or_lower.<locals>._ascii_upper_or_lower	  s/    T#C(3JCd:&67 $rb   rc   )r  r  s   ` r`   _gen_ascii_upper_or_lowerr  	  s    8 ! rb   r  c                 *    [        [        [        5      $ )zImplements .lower())r  _ascii_lower_unicode_lowerri  s    r`   unicode_lowerr  	       ,77rb   upperc                 *    [        [        [        5      $ )zImplements .upper())r  _ascii_upper_unicode_upperri  s    r`   unicode_upperr  	  r  rb   c                    Sn[         R                  " S[        S9n[        U5       HZ  nUR	                  S5        [        X5      n[        Xu5      nUS U  H'  n	US   n
[        X5      US'   [        X$U	5        US-  nM)     M\     U$ r  )	r   r  r%   r,  fillr   r)   r  r   )rN   rO   r   r  r  r  r   r  r  r  r  s              r`   _unicode_casefoldr  &	  s    	AXXax(FV}A$T/
'
;AqkGg/HQKCA&FA	  	  Hrb   c                 z    [        [        U 5      5       H#  n[        X5      n[        X[	        U5      5        M%     g r   )r,  rI  r   r   r$   rN   r   r   r  s       r`   _ascii_casefoldr  7	  s.    SY$T/
+j"9:  rb   casefoldc                 *    [        [        [        5      $ )zImplements str.casefold())r  r  r  ri  s    r`   unicode_casefoldr  >	  s     /+<==rb   c                    SnSn[         R                  " S[        S9n[        U S5      n[	        Xv5      nUS U  H  n	[        XY5      n[        X$U	5        US-  nM!     [        SU5       HT  n
UR                  S5        [        X
5      n[        XpXU5      nUS U  H  n	[        XY5      n[        X$U	5        US-  nM!     MV     XSS'   U$ r  )
r   r  r%   r   r*   r  r   r,  r  r  )rN   rO   r   r  r  r  r  r  r  r  r   s              r`   _unicode_capitalizer  E	  s    	AGXXax(F q)J":6EFU^g/"	Q  QA$T/
Jf6BA'oGCA&FA  	   QKHrb   c                     [        U S5      n[        US[        U5      5        [        S[	        U 5      5       H#  n[        X5      n[        X[        U5      5        M%     g r  )r   r   r#   r,  rI  r$   )rN   r   r  r   s       r`   _ascii_capitalizer  _	  sM     q)JCK
34QD	"$T/
+j"9: #rb   
capitalizec                 *    [        [        [        5      $ r   )r  r  r  ri  s    r`   unicode_capitalizer  i	  s    +-@AArb   c                 v   SnSn[         R                  " S[        S9n[        U5       H  nUR	                  S5        [        X5      nU(       a  [        XXU5      n	O[        [        U5      U5      n	USU	  H&  n
Uu  n[        X5      US'   [        X$U
5        US-  nM(     [        [        U5      5      nM     U$ )zCThis is a translation of the function that titles a unicode string.r   FrE   r  Nr   )r   emptyr%   r,  r  r   r  r*   r  r   r0   )rN   rO   r   r  r  previous_casedr  r   r  r  r  r  s               r`   _unicode_titler  o	  s     	
ANXXax(FV}A$T/

&vFE*8J+?HEAHGg/HQKCA&FA	  
 ,HZ,@A  Hrb   c                    Sn[        [        U 5      5       Hf  n[        X5      n[        U5      (       a  U(       d  [	        U5      nSnO'[        U5      (       a  U(       a  [        U5      nSnOSn[        XU5        Mh     g)z!Does .title() on an ASCII string FTN)r,  rI  r   r9   r#   r:   r$   r   )rN   r   rq  r   r  s        r`   _ascii_titler  	  ss     SY$T/
z""$(4
 $$$ (4
 $ %*-  rb   titlec                 *    [        [        [        5      $ )zImplements str.title())r  r  r  ri  s    r`   unicode_titler  	  s     ,77rb   c                     [        [        U 5      5       HQ  n[        X5      n[        U5      (       a  [	        U5      nO[        U5      (       a  [        U5      n[        XU5        MS     g r   )r,  rI  r   r:   r$   r9   r#   r   r  s       r`   _ascii_swapcaser  	  sS    SY$T/
z""$Z0J$$$Z0J*-  rb   c                 t   SnSn[         R                  " S[        S9n[        U5       H  nUR	                  S5        [        X5      n[        U5      (       a  [        XXU5      n	O"[        U5      (       a  [        X5      n	OSn	XS'   US U	  H  n
[        XZ5      n[        X$U
5        US-  nM!     M     XSS'   U$ r  )r   r  r%   r,  r  r   r2   r  r3   r'   r  r   )rN   rO   r   r  r  r  r  r   r  r  r  s              r`   _unicode_swapcaser  	  s    	AGXXax(FV}A$T/
!*--
&vFE#J//*:>EE"1IA'oGCA&FA    QKHrb   swapcasec                 *    [        [        [        5      $ r   )r  r  r  ri  s    r`   unicode_swapcaser  	  s    /+<==rb   c                 L    [        U [        R                  5      (       a  S nU$ g )Nc                 R    [        U 5      nUS:w  a  [        S5      e[        U S5      $ )Nr   zord() expected a characterr   )rI  	TypeErrorr   )r   lcs     r`   r  ol_ord.<locals>.impl	  s+    QBQw <=="1a((rb   rB  )r   r  s     r`   ol_ordr  	  s&    !U&&''	)  (rb   c                 v    U [         ::  d   e[        U 5      n[        USU[        :H  5      n[	        USU 5        U$ r!  )_MAX_UNICODEr9  r   r   r   )r   rP   r  s      r`   _unicode_charr  	  s?    b!D
a)>!>
?CCBJrb   zchr() arg not in range(0x%hx)c                 h    U S:  d
  U [         :  a  [        [        5      e[        [	        U 5      5      $ r   )r  r   _out_of_range_msgr  r%   )ordinals    r`   _PyUnicode_FromOrdinalr  	  s,    !w-*++'*++rb   c                 L    [        U [        R                  5      (       a  S nU$ g )Nc                     [        U 5      $ r   )r  )r   s    r`   r  ol_chr.<locals>.impl	  s    )!,,rb   )rC  r   r  )r   r  s     r`   ol_chrr  	  s"    !U]]##	- $rb   __str__c                     S $ )Nc                     U $ r   rc   r?  s    r`   rQ  unicode_str.<locals>.<lambda>	  s    Qrb   rc   r?  s    r`   unicode_strr  	  s    rb   __repr__c                     S $ )Nc                     SU -   S-   $ )N'rc   r?  s    r`   rQ  unicode_repr.<locals>.<lambda>
  s    S1Ws]rb   rc   r?  s    r`   unicode_reprr   
  s
     #"rb   c                 $   ^ U " S5      mU4S jnU$ )NrF   c                   > SnU S:  a  U * n SnU S:X  a  gUS-   [        [        R                  " [        R                  " U 5      5      5      -   n[        n[        U5      n[        X4US5      nU(       a  [        US[        S5      5        US-
  nU S:  a5  [        U T	5      u  p[        S5      U-   n[        XVU5        US-  nU S:  a  M5  U$ )NFr   Tr  r   r  )
r"  r   floorlog10r   r   r   r   orddivmod)
r0  flagrO   rP   r   r   r   digitr   tens
            r`   r  integer_str.<locals>.impl
  s    q5AD6C! 566$(.
4VT:Aq#c(+qj!ea~HAC5 AAA&1HC	 !e
 rb   rc   )r0  r  r  s     @r`   integer_strr  
  s     B%C( Krb   c                     S $ )Nc                 "    U R                  5       $ r   )r  r0  s    r`   rQ  integer_repr.<locals>.<lambda>%
  s
    QYY[rb   rc   r  s    r`   integer_reprr  #
  s      rb   c                     S $ )Nc                     U (       a  S$ S$ )NTrueFalserc   r.  s    r`   rQ  boolean_str.<locals>.<lambda>+
  s    qV-g-rb   rc   r	  s    r`   boolean_strr  (
  s
     .-rb   getiterc                    UR                   u  nUu  nU R                  XR                  5      nU R                  [        R
                  S5      n[        R                  " X5      nXl        XVl	        U R                  (       a  U R                  R                  XU5        UR                  5       n	[        XUR                  U	5      $ r   )r   r  return_typer   r   rt   r   alloca_once_valuerr   rN   r  r   r   r   r   )
r   r   r   r   r  rN   iterobjr  indexptrr   s
             r`   getiter_unicoder  3
  s    88DRFT!!'??;G Q/D((7HM L 7-



CGcoosCCrb   iternextc                 X   UR                   u  nUu  nU R                  nUR                  [        R                  5      nUR                  U[        R                  [        R                  40 5      n	U R                  X5      n
UR                  [        5      nUR                  U[        R                  40 5      nU R                  X5      nU R                  XUS9nU" XR                  45      nUR                  UR                  5      nUR                  SX5      nUR!                  U5        UR#                  U5         U
" XR                  U45      nUR%                  U5        [&        R(                  " X5      nUR+                  UUR                  5        S S S 5        g ! , (       d  f       g = f)Nr   <)r   r  r  operatorgetitemr  r   r   rt   r  rI  r  rN   r   rr   icmp_unsigned	set_validif_thenyield_r   increment_indexr  )r   r   r   r   r  itertyitertyctxfntygetitem_siggetitem_impllen_sigr@  r  strlenrr   is_validgotitemnindexs                      r`   iternext_unicoder(  K
  sh    xxHVFT""E ##H$4$45D$$UU-?-?,M%')K'':L ##C(D  ););(=rBG##D2H !!'!>G g/F LL'E $$S%8H
X		"wu(>?g ((8fgmm, 
#	"	"s   :AF
F))r   r  r!  r  rg  r  r   )TrB  )r  r  numpyr   llvmlite.irr   r   numba.core.cgutilsr   numba.core.extendingr   r   r   r	   r
   r   r   r   r   r   numba.core.imputilsr   r   r   r   r   r   numba.core.datamodelr   r   
numba.corer   r   r   numba.core.utilsr   numba.core.pythonapir   r   r   numba._helperlibr   numba.cpython.hashingr    numba.core.unsafe.bytesr!   numba.core.errorsr"   numba.cpython.unicode_supportr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   numba.cpythonrD   rH   r  USE_LEGACY_TYPE_SYSTEMrV   bitwidthr  py_intrD  rK   UnicodeIteratorTypero   r   r   rS  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r  NotImplementedErrorr$  r   r3  r9  r<  rI  rE  eqrZ  nera  ltrl  gtrr  lerx  ger~  containsr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r#  r8  r?  rG  rF  rQ  ri  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r   iaddr"  r)  r   r1  not_r7  rC  rL  _unicode_is_alnumr]  _always_falserb  rc  re  rl  rs  rx  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  chrr  r  r  r  r  r  r  r  r  NEWr(  rc   rb   r`   <module>rJ     s2   
   ) *  K K > - - & 
 ' , 1 )F F F F F F F F F> """:  
  ::&&L<<((L
 !!"A6%% A #A u((&' : u(((I > u((&' : u((*k B u((&' : %++,J; J -J;8( E!3!34 5 ""#C $C u? ?, U $ & &
 ' '
 ' '
  <   u
 
	 $ $
 % %
 % %
 uD D$ ""C C $$C C" i
((   ""L L $$
L 
L i
(( u & % %"   
#  
(++# #L 
(++ " 
(++  
(++  
(++  
(++  
(

 P(  
 3 3
 + +\ - -`& 	78	/.9	: ""F+ , ""G, - ""H- ." ""G, -" ""K0  1 F ""G, 3 - 3H ""L1  2 H   ""L11I 21Ih ""J/- 0-b ""L1= 2=@ ""G,Q% -Q%h)"X "2#$67"9 /#K0 2 
 ""H-N .Nb ""H-" ."J&R !!7 +,=e,D E !!7 +,=d,C D F %%=o%NO &'?(  
 ""L1 20  > ""F+ ,6 ""G, -6     "CJ ""H- . ""H- . ""G, -(  < ! !(      uB B " "J 
(

4! 4!x 
(,,	(--  (  4 
(,,  
(--  ""I.) /)bB !!9 -i8J/L M % &= > 
 !!9 -i8I/K L, !1"9[+-:$< =$Y/E/E/E&G H 
 ""I.	 /	 ""I. / ""I." /"J ""I. /6 ""N3 4., !!9 -g6H.I J !!; /8L0M N !!9 -g6H.I J !!; /%&( !!= 1"E*,: + +. 6 6& ""=e"DE!"=d"CD!   9+ FG 9+ FG ""G,8 -8
 ""G,8 -8    ; ; ""J/> 0>  2 ; ; ""L1B 2B
  , . .& ""G,8 -8 . .  , ""J/> 0>
 
# "   4lB  , , 
#  ""I. / ""J/# 0# 	* +6 
+! ,! 
+	*. + ,. y%++,D -D. z5445w{{%-  6%-rb   