
    (ph/                       S SK Jr  S SKr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  S SKJr  S	S
KJrJrJrJrJrJrJr  \
" \S9S+S j5       r\
" \S9S,S j5       r\
" \S9S-S j5       r\
" \S9S+S j5       r\
" \S9S+S j5       r\
" \S9S+S j5       r\
" \S9S+S j5       r\
" \S9S+S j5       r \
" \S9S+S j5       r!\
" \S9S+S j5       r"\
" \S9S+S j5       r#\
" \S9S+S j5       r$\
" \S9S+S j5       r%\
" \S9S+S j5       r&\
" \S9S+S j5       r'\
" \S9S+S j5       r(\
" \S9S+S j5       r)\
" \*" \5      S9S.S j5       r+\
" \S9S+S j5       r,S/S0S jjr-\
" S S9S1S! j5       r.S2S" jr/S3S# jr0S4S5S$ jjr1S6S% jr2S7S& jr3S'\Rh                  S(4       S8S) jjr5 S9                   S:S* jjr6g);    )annotationsN)IncrementalDecoder)aliases)	lru_cache)findall)	Generator)MultibyteIncrementalDecoder   )ENCODING_MARKSIANA_SUPPORTED_SIMILARRE_POSSIBLE_ENCODING_INDICATIONUNICODE_RANGES_COMBINEDUNICODE_SECONDARY_RANGE_KEYWORDUTF8_MAXIMAL_ALLOCATIONCOMMON_CJK_CHARACTERS)maxsizec                    [         R                  " U 5      nSU;   =(       dM    SU;   =(       dA    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 TILDEzWITH MACRONzWITH RING ABOVEunicodedataname
ValueError	characterdescriptions     K/var/www/html/venv/lib/python3.13/site-packages/charset_normalizer/utils.pyis_accentuatedr      s    &++I6 	# 	,;&	,[(	, {*	, +		,
 ;&	, K'	, +	  s   A1 1
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    !//	:J!'',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_ranger.   8   s5    
 YM!8!>!>!@
% "A r'   c                Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFLATINr   r   s     r   is_latinr1   F   s8    &++I6 k!!      
**c                d    [         R                  " U 5      nSU;   a  g[        U 5      nUc  gSU;   $ )NPTFPunctuationr   categoryr.   r   character_categorycharacter_ranges      r   is_punctuationr;   O   s=    )229=
  "/	":OO++r'   c                    [         R                  " U 5      nSU;   d  SU;   a  g[        U 5      nUc  gSU;   =(       a    US:g  $ )NSNTFFormsLor6   r8   s      r   	is_symbolrA   ^   sP    )229=
  C+=$="/	":Oo%D*<*DDr'   c                B    [        U 5      nUc  gSU;   =(       d    SU;   $ )NF	EmoticonsPictographs)r.   )r   r:   s     r   is_emoticonrE   m   s*    "/	":O/)M]o-MMr'   c                    U R                  5       (       d  U S;   a  g[        R                  " U 5      nSU;   =(       d    US;   $ )N>   +<>   ｜TZ>   PcPdPo)isspacer   r7   )r   r9   s     r   is_separatorrP   w   sE    i+AA)229=$$P(:>P(PPr'   c                D    U R                  5       U R                  5       :g  $ N)islowerisupperr   s    r   is_case_variablerV      s    )"3"3"555r'   c                Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFCJKr   r   character_names     r   is_cjkr[      s8    $)))4 N""  r2   c                Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFHIRAGANAr   rY   s     r   is_hiraganar^      8    $)))4 ''  r2   c                Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFKATAKANAr   rY   s     r   is_katakanarb      r_   r2   c                Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFHANGULr   rY   s     r   	is_hangulre      8    $)))4 ~%%  r2   c                Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFTHAIr   rY   s     r   is_thairi      s8    $)))4 ^##  r2   c                Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFARABICr   rY   s     r   	is_arabicrl      rf   r2   c                r     [         R                  " U 5      nSU;   =(       a    SU;   $ ! [         a     gf = f)NFrk   zISOLATED FORMr   rY   s     r   is_arabic_isolated_formrn      sB    $)))4 ~%K/^*KK  s   ) 
66c                    U [         ;  $ rR   )r   rU   s    r   is_cjk_uncommonrp      s    111r'   c                6   ^  [        U 4S j[         5       5      $ )Nc              3  ,   >#    U  H	  oT;   v   M     g 7frR    ).0keywordr,   s     r   	<genexpr>-is_unicode_range_secondary.<locals>.<genexpr>   s     T4S*$4Ss   )anyr   )r,   s   `r   is_unicode_range_secondaryry      s    T4STTTr'   c                    U R                  5       SL =(       a*    U R                  5       SL =(       a    U S:g  =(       a    U S:g  $ )NFu   ﻿)rO   isprintablerU   s    r   is_unprintabler}      sL     	u$ 	"!!#u,	"	" !	r'   c           	     ~   [        U [        5      (       d  [        e[        U 5      n[	        [
        U S[        X!5       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.
Nasciiignoreerrorsr   -_)
isinstancebytes	TypeErrorlenr   r   mindecodelowerreplacer   r*   )sequencesearch_zoneseq_lenresultsspecified_encodingencoding_aliasencoding_ianas          r   any_specified_encodingr      s     h&&x=G ',3w,-44WX4NG
 7|q%/557??SI
 .5]]_)N3$$2$$	 .= & r'      c                |    U S;   =(       d1    [        [        R                  " SU  3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_moduler   r	   )r   s    r   is_multi_byte_encodingr     sC    
  
 
  
*TF 34GG#
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)r   iana_encodingmarksmarks       r   identify_sig_or_bomr     sU    
 (%3M%BeU##GED""4(($**  ( r'   c                    U S;  $ )N>   r   r   rs   )r   s    r   should_strip_sig_or_bomr   (  s     444r'   c                    U R                  5       R                  SS5      n [        R                  " 5        H  u  p#XU4;   d  M  Us  $    U(       a  [	        SU  S35      eU $ )zIReturns the Python normalized encoding name (Not the IANA official name).r   r   zUnable to retrieve IANA for '')r   r   r   r*   r   )cp_namestrictr   r   s       r   	iana_namer   ,  s_    mmo%%c3/G
 *1%}55   *9 8	CDDNr'   c                   [        U 5      (       d  [        U5      (       a  g[        R                  " SU  35      R                  n[        R                  " SU 35      R                  nU" SS9nU" SS9nSn[	        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   r   r   r      r
      )r   r   r   r   ranger   r   )	iana_name_aiana_name_b	decoder_a	decoder_bid_aid_bcharacter_match_countito_be_decodeds	            r   cp_similarityr   =  s    k**.D[.Q.Q''*[M(BCVVI''*[M(BCVVI(9D(9D!"3Z$aSz;;}%])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   Q  s%     	-- 	?1+>>r'   charset_normalizerz)%(asctime)s | %(levelname)s | %(message)sc                    [         R                  " U 5      nUR                  U5        [         R                  " 5       nUR	                  [         R
                  " U5      5        UR                  U5        g rR   )logging	getLoggersetLevelStreamHandlersetFormatter	Formatter
addHandler)r   levelformat_stringloggerhandlers        r   set_logging_handlerr   \  sU    
 t$F
OOE##%G**=9:
gr'   c	              #    #    U(       a"  USL a  U H  n	XX-    n
U
(       d    g U
v   M     g U H  n	X-   nU[        U 5      S-   :  a  M  X	X-    nU(       a	  USL a  Xl-   nUR                  UU(       a  SOSS9n
U(       ag  U	S:  aa  [        US5      nU(       aN  U
S U U;  aE  [        XS-
  S	5       H2  nXU nU(       a	  USL a  Xl-   nUR                  USS9n
U
S U U;   d  M2    O   U
v   M     g 7f)
NF   r   r   r   r   r      )r   r   r   r   )	sequencesr   offsets
chunk_sizebom_or_sig_availablestrip_sig_or_bomsig_payloadis_multi_byte_decoderdecoded_payloadr   chunk	chunk_endcut_sequencechunk_partial_size_chkjs                  r   cut_sequence_chunksr   i  s)     0E9A#7EK	  AI3y>A--$8L#(8E(A*9 ''#8xh ( E %Q.1*b.A& $556oM"1!eR0'09'=/4D4M+6+EL , 3 3M( 3 S !8"89_L! 1 KG s   CC/"C/)r   strreturnbool)r   r   r   r   )r   r   r   
str | None)r,   r   r   r   )i    )r   r   r   r#   r   r   )r   r   r   r   )r   r   r   ztuple[str | None, bytes])r   r   r   r   )T)r   r   r   r   r   r   )r   r   r   r   r   float)r   r   r   r   r   r   )r   r   r   r#   r   r   r   NonerR   )r   r   r   r   r   r   r   r#   r   r   r   r   r   r   r   r   r   r   r   zGenerator[str, None, None])7
__future__r   r   r   r   codecsr   encodings.aliasesr   	functoolsr   rer   typingr   _multibytecodecr	   constantr   r   r   r   r   r   r   r   r&   r.   r1   r;   rA   rE   rP   rV   r[   r^   rb   re   ri   rl   rn   rp   r   ry   r}   r   r   r   r   r   r   r   INFOr   r   rs   r'   r   <module>r      s   "    % %      *+ ," *+" ," *+
 ,
 *+" ," *+, ,, *+E ,E *+N ,N *+Q ,Q *+6 ,6 *+# ,# *+( ,( *+( ,( *+& ,& *+$ ,$ *+& ,& *+L ,L *+2 ,2 3./0U 1U *+ ,@ 3 ($5"'( %D



 
 
	
, #'555 5 	5
 5 5 5  5  5  5r'   