
    X#                         S SK rS SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJrJrJrJr  S SKJr  SS	KJrJrJrJrJrJr  \	" \S
9S\S\4S j5       r\	" \S
9S\S\4S j5       r\	" \S
9S\S\\   4S j5       r\	" \S
9S\S\4S j5       r S\S\4S jr!\	" \S
9S\S\4S j5       r"\	" \S
9S\S\4S j5       r#\	" \S
9S\S\4S j5       r$\	" \S
9S\S\4S j5       r%\	" \S
9S\S\4S j5       r&S\S\4S jr'\	" \S
9S\S\4S j5       r(\	" \S
9S\S\4S j5       r)\	" \S
9S\S\4S j5       r*\	" \S
9S\S\4S j5       r+\	" \S
9S\S\4S j5       r,\	" \-" \5      S
9S\S\4S j5       r.S1S\/S \0S\\   4S! jjr1\	" S"S
9S#\S\4S$ j5       r2S\/S\\\   \/4   4S% jr3S&\S\4S' jr4S2S(\S)\S\4S* jjr5S+\S\\   4S, jr6S-\S.\S\74S/ jr8S-\S.\S\4S0 jr9g! \ a    S SKr GNf = f)3    N)IncrementalDecoder)aliases)	lru_cache)findall)ListOptionalSetTupleUnion)MultibyteIncrementalDecoder   )ENCODING_MARKSIANA_SUPPORTED_SIMILARRE_POSSIBLE_ENCODING_INDICATIONUNICODE_RANGES_COMBINEDUNICODE_SECONDARY_RANGE_KEYWORDUTF8_MAXIMAL_ALLOCATION)maxsize	characterreturnc                      [         R                  " U 5      nSU;   =(       d5    SU;   =(       d)    SU;   =(       d    SU;   =(       d    SU;   =(       d    SU;   $ ! [         a     gf = f)NFz
WITH GRAVEz
WITH ACUTEzWITH CEDILLAzWITH DIAERESISzWITH CIRCUMFLEXz
WITH TILDEunicodedataname
ValueErrorr   descriptions     3platform/bq/third_party/charset_normalizer/utils.pyis_accentuatedr      s    !&&y1 	# 	';&	'[(	' {*	' +		'
 ;&  s   A 
A&%A&c                     [         R                  " U 5      nU(       d  U $ UR                  S5      n[        [	        US   S5      5      $ )N r      )r   decompositionsplitchrint)r   
decomposedcodess      r   remove_accentr)   *   sA    **95JS!Es58R !!    c                 h    [        U 5      n[        R                  " 5        H  u  p#X;   d  M  Us  $    g)zC
Retrieve the Unicode range official name from a single character.
N)ordr   items)r   character_ord
range_name	ord_ranges       r   unicode_ranger1   5   s5    
 	NM!8!>!>!@
% "A r*   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFLATINr   r   s     r   is_latinr4   C   s8    !&&y1 k!!      
**c                 H     U R                  S5        g! [         a     gf = f)NasciiFT)encodeUnicodeEncodeErrorr   s    r   is_asciir;   L   s.    !   s    
!!c                 d    [         R                  " U 5      nSU;   a  g[        U 5      nUc  gSU;   $ )NPTFPunctuationr   categoryr1   r   character_categorycharacter_ranges      r   is_punctuationrD   T   s=    $--i8
  #I.OO++r*   c                 p    [         R                  " U 5      nSU;   d  SU;   a  g[        U 5      nUc  gSU;   $ )NSNTFFormsr?   rA   s      r   	is_symbolrI   c   sE    $--i8
  C+=$=#I.Oo%%r*   c                 *    [        U 5      nUc  gSU;   $ )NF	Emoticons)r1   )r   rC   s     r   is_emoticonrL   r   s     #I.O/))r*   c                 p    U R                  5       (       d  U S;   a  g[        R                  " U 5      nSU;   $ )N)u   ｜+,;<>TZ)isspacer   r@   r   rB   s     r   is_separatorrV   |   s9    i+KK$--i8$$$r*   c                 D    U R                  5       U R                  5       :g  $ N)islowerisupperr:   s    r   is_case_variabler[      s    )"3"3"555r*   c                 8    [         R                  " U 5      nSU:H  $ )NCo)r   r@   rU   s     r   is_private_use_onlyr^      s    $--i8%%%r*   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFCJKr   r   character_names     r   is_cjkrc      s8    $)))4 N""  r5   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFHIRAGANAr   ra   s     r   is_hiraganarf      8    $)))4 ''  r5   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFKATAKANAr   ra   s     r   is_katakanarj      rg   r5   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFHANGULr   ra   s     r   	is_hangulrm      s8    $)))4 ~%%  r5   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFTHAIr   ra   s     r   is_thairp      s8    $)))4 ^##  r5   r/   c                 ,    [          H
  nX;   d  M
    g   g)NTF)r   )r/   keywords     r   is_unicode_range_secondaryrs      s    2  3 r*   sequencesearch_zonec                 z   [        U [        5      (       d  [        e[        U 5      n[	        [
        U SX!::  a  UOU R                  SSS95      n[        U5      S:X  a  gU HW  nUR                  5       R                  SS5      n[        R                  " 5        H  u  pVXT:X  a  Us  s  $ Xd:X  d  M  Us  s  $    MY     g)zO
Extract using ASCII-only decoder any specified encoding in the first n-bytes.
Nr7   ignoreerrorsr   -_)
isinstancebytes	TypeErrorlenr   r   decodelowerreplacer   r-   )rt   ru   seq_lenresultsspecified_encodingencoding_aliasencoding_ianas          r   any_specified_encodingr      s     h&&(mG'Eg47+FMMH 	N 	
G 7|q%/557??SI-4]]_)N3$$2$$	 .= & r*      r   c                     U S;   =(       d=    [        [        R                  " SR                  U 5      5      R                  [
        5      $ )zI
Verify is a specific encoding is a multi byte one based on it IANA name
>	   utf_7utf_8utf_16utf_32	utf_16_be	utf_16_le	utf_32_be	utf_32_le	utf_8_sigencodings.{})
issubclass	importlibimport_moduleformatr   r   )r   s    r   is_multi_byte_encodingr      sG    
  
 
  
 5 5d ;<OO#
r*   c                     [          HJ  n[         U   n[        U[        5      (       a  U/nU H   nU R                  U5      (       d  M  X4s  s  $    ML     g)z1
Identify and extract SIG/BOM in given sequence.
)Nr*   )r   r|   r}   
startswith)rt   iana_encodingmarksmarks       r   identify_sig_or_bomr      sU    
 (}-eU##GED""4(($**  ( r*   r   c                     U S;  $ )N>   r   r    )r   s    r   should_strip_sig_or_bomr     s     444r*   cp_namestrictc                     U R                  5       R                  SS5      n [        R                  " 5        H  u  p#X:X  d  X:X  d  M  Us  $    U(       a  [	        SR                  U 5      5      eU $ )Nrz   r{   z Unable to retrieve IANA for '{}')r   r   r   r-   r   r   )r   r   r   r   s       r   	iana_namer     s_    mmo%%c3/G)0%$(@   *9 ;BB7KLLNr*   decoded_sequencec                     [        5       nU  H$  n[        U5      nUc  M  UR                  U5        M&     [        U5      $ rX   )setr1   addlist)r   rangesr   rC   s       r   
range_scanr   #  s>    UF%	'	2"

?# & <r*   iana_name_aiana_name_bc                    [        U 5      (       d  [        U5      (       a  g[        R                  " SR                  U 5      5      R                  n[        R                  " SR                  U5      5      R                  nU" SS9nU" SS9nSn[        SS5       H:  n[        U/5      nUR                  U5      UR                  U5      :X  d  M5  US-  nM<     US-  $ )	Ng        r   rw   rx   r      r      )r   r   r   r   r   ranger}   r   )	r   r   	decoder_a	decoder_bid_aid_bcharacter_match_countito_be_decodeds	            r   cp_similarityr   1  s    k**.D[.Q.Q''(=(=k(JK^^I''(=(=k(JK^^IH%DH%D1c]qc
;;}%])CC!Q&! 
 !3&&r*   c                 :    U [         ;   =(       a    U[         U    ;   $ )z
Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using
the function cp_similarity.
)r   )r   r   s     r   is_cp_similarr   F  s%     	-- 	?1+>>r*   )i   )T):unicodedata2r   ImportErrorr   codecsr   encodings.aliasesr   	functoolsr   rer   typingr   r   r	   r
   r   _multibytecodecr   constantr   r   r   r   r   r   strboolr   r)   r1   r4   r;   rD   rI   rL   rV   r[   r^   rc   rf   rj   rm   rp   r   rs   r}   r&   r   r   r   r   r   r   floatr   r   r   r*   r   <module>r      s  &  % %   4 4 7  *+c d  , *+"S "S " ," *+
S 
Xc] 
 ,
 *+" " " ,"   *+,c ,d , ,, *+& & & ,& *+*3 *4 * ,* *+%C %D % ,% *+6 6 6 ,6&3 &4 & *+#c #d # ,# *+(3 (4 ( ,( *+(3 (4 ( ,( *+& & & ,& *+$s $t $ ,$ 3./03 4  1U  QT > 3   (% E(3-2F,G $53 54 5
s 
D 
C 
 c 's ' ' '*s   E
  s   G 
G)(G)