
    vg\jU                    x   % S SK J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
JrJr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  SSKJrJrJrJrJrJr  \R@                  " S5      r!\RD                  " 5       r#\#RI                  \RJ                  " S5      5        \&" \S S9r'S\(S'            S                     SS jjr)         S                     SS jjr*         S                     SS jjr+         S                     SS jjr,g)    )annotationsN)	lru_cache)PathLike)BinaryIO   )coherence_ratioencoding_languagesmb_encoding_languagesmerge_coherence_ratios)IANA_SUPPORTEDIANA_SUPPORTED_SIMILARTOO_BIG_SEQUENCETOO_SMALL_SEQUENCETRACE)
mess_ratio)CharsetMatchCharsetMatches)any_specified_encodingcut_sequence_chunks	iana_nameidentify_sig_or_bomis_multi_byte_encodingshould_strip_sig_or_bomcharset_normalizerz)%(asctime)s | %(levelname)s | %(message)sc                "    [        U 5      (       + $ N)r   encodings    Q/home/edenadmin/noVNC/venv/lib/python3.13/site-packages/charset_normalizer/api.py<lambda>r    .   s    -CH-M)M    )keyz	list[str]IANA_SUPPORTED_MB_FIRSTc
                $   [        U [        [        45      (       d#  [        SR	                  [        U 5      5      5      eU(       aB  [        R                  n
[        R                  [        5        [        R                  [        5        [        U 5      nUS:X  ad  [        R                  S5        U(       a.  [        R                  [        5        [        R                  W
5        [        [!        U SSS/ S5      /5      $ UbG  [        R#                  [        S	S
R%                  U5      5        U Vs/ s H  n['        US5      PM     nnO/ nUbG  [        R#                  [        SS
R%                  U5      5        U Vs/ s H  n['        US5      PM     nnO/ nXU-  ::  a!  [        R#                  [        SUUU5        SnUnUS:  a  X-  U:  a  [)        X-  5      n[        U 5      [*        :  n[        U 5      [,        :  nU(       a*  [        R#                  [        SR	                  U5      5        O0U(       a)  [        R#                  [        SR	                  U5      5        / nU(       a  [/        U 5      OSnUb,  UR1                  U5        [        R#                  [        SU5        [3        5       n/ n/ n[3        5       n[3        5       n0 n[5        SS9" [6        5      n[5        SS9" [8        5      nSn[3        5       nSnSnSnSnSnSn [        5       n![        5       n"[;        U 5      u  n#n$U#b6  UR1                  U#5        [        R#                  [        S[        U$5      U#5        UR1                  S5        SU;  a  UR1                  S5        U[<        -    GH  n%U(       a  U%U;  a  M  U(       a  U%U;   a  M"  U%U;   a  M*  UR?                  U%5        Sn&U#U%:H  n'U'=(       a    [A        U%5      n(U%S;   a$  U'(       d  [        R#                  [        SU%5        M  U%S;   a$  U'(       d  [        R#                  [        SU%5        M  U%U;   a  [        R#                  [        SU%5        M  U%U;   a  [        R#                  [        SU%5        M   [C        U%5      n)U(       af  U)(       d  [3        [I        U%5      5      n*O[3        [K        U%5      5      n*U*RM                  U5      (       d   [        R#                  [        SU%U*U5        GMi  U(       a-  U)(       d&  UU:  a   [        R#                  [        SU%UU5        GM  U(       a%  U)(       d  [        R#                  [        SU%5        GM  U)(       + =(       a    U(       + n+ U(       a<  U)(       d5  [O        U((       d  U S[)        S5       OU [        U$5      [)        S5       U%S 9  OSU+(       dL  U%S!:X  a'  U'(       a   [O        U U%S 9n&U&(       a  U&S   S":X  a  U&SS n&O[O        U((       d  U OU [        U$5      S U%S 9n&[U        U'(       d  SO
[        U$5      U[)        X-  5      5      n-U)=(       a    U&SL=(       a    [        U&5      U:  n.U.(       a  [        R#                  [        S$U%5        [)        [        U-5      S%-  5      n/[W        U/S&5      n/Sn0Sn1/ n2/ n3 [Y        U U%U-UU'U(U$U)U&U+5
       Hx  n4U2R1                  U45        U3R1                  U" U4UU=(       a    S[        U5      s=:*  =(       a    S&:*  Os  5      5        U3S'   U:  a  U0S-  n0U0U/:  d  U'(       d  Mo  U((       a  Mx    O    U1(       d+  U(       a$  U)(       d   U [)        S*5      S R[                  U%S+S,9  U3(       a  []        U35      [        U35      -  OSn5U5U:  d  U0U/:  a  UR1                  U%5        U%[^        ;   a  URa                  [^        U%   5        U&b%  U)(       d  URc                  [e        U&5      U5/ S45        [        R#                  [        S.U%U0[g        U5S/-  S0S195        U	(       aa  U%SSUS2S34;   aV  U1(       dO  U&c)   [O        U((       d  U OU [        U$5      S U%S 9n&U(       a  Sn&[!        U U%UU'/ U&US59n6U%U:X  a  U6n OU%S:X  a  U6nOU6nGM  U+(       a    [O        U((       d  U OU [        U$5      S U%S 9n&U&Gb(  U)(       Gd   [e        U&5      n7URi                  U75      n8U8Gb   U8u  n9n:n;U;(       Ga  [!        U U%U9U'U:U(       a	  U%USS4;   a  U&OSUS59n<U!R1                  U<5        UR?                  U%5        [        R#                  [        S6U%[g        U9S/-  S0S195        U%USS4;   a  U9S7:  az  U9S:X  ac  [        R                  S8U<Rj                  5        U(       a.  [        R                  [        5        [        R                  W
5        [        U</5      s  $ U"R1                  U<5        [        U"5      (       a  Ub  UU;   a  SU;   ay  SU;   as  U"Rm                  5       n=[        R                  S8U=Rj                  5        U(       a.  [        R                  [        5        [        R                  W
5        [        U=/5      s  $ GM  UR1                  U%5        [        R#                  [        S9U%5        U	(       a.  U%SSUS2S34;   a#  [!        U U%UU'/ U&US59n6U%U:X  a  U6n OU%S:X  a  U6nOU6nGM?  [        R#                  [        S:U%[g        U5S/-  S0S195        U)(       d  [I        U%5      n>O[K        U%5      n>U>(       a3  [        R#                  [        S;R	                  U%[O        U>5      5      5        / n?U%S:w  a>  U>(       a  S<R%                  U>5      OSn@U2 H  n4U" U4UW@5      nAU?R1                  UA5        M      [o        U?5      nBUB(       a*  [        R#                  [        S=R	                  WBU%5      5        [!        U U%U5U'WBU(       a	  U%USS4;   a  U&OSUS59nCU!R1                  UC5        U&b%  U)(       d  URc                  [e        U&5      U5WBS)45        U(       a  U)(       d  U5S>:  a  US-  nU%USS4;   a  U5S7:  az  U5S:X  ac  [        R                  S8WCRj                  5        U(       a.  [        R                  [        5        [        R                  W
5        [        WC/5      s  $ U"R1                  WC5        [        U"5      (       a  Ub  UU;   a  SU;   ay  SU;   as  U"Rm                  5       n=[        R                  S8U=Rj                  5        U(       a.  [        R                  [        5        [        R                  W
5        [        U=/5      s  $ U(       dc  U)(       d\  WB(       a  [W        S? WB 5       SS@9OSnDUDSA:  a<  SU;   a6  SU;   a0  S)nURa                  U>5        [        R#                  [        SBU%U5WD5        U(       dn  U)(       ag  U.(       a`  U&b]  [        U&5      USC-  :  aK  U%SD;  aE  SU;   a?  SU;   a9  S)n[        R#                  [        SEU%U5[        U&5      U[        U&5      U-  S/-  5        U%U#:X  d  G
M  [        R                  SFU%5        U(       a.  [        R                  [        5        [        R                  W
5        [        U!U%   /5      s  $    [        U!5      S:X  a  U(       d  U(       d  U (       a  [        R#                  [        SG5        U (       a2  [        R                  SHU Rj                  5        U!R1                  U 5        OU(       a  Ub+  U(       a!  U(       a  URp                  URp                  :w  d  Ub'  [        R                  SI5        U!R1                  U5        O-U(       a&  [        R                  SJ5        U!R1                  U5        U!(       a<  [        R                  SKU!Rm                  5       Rj                  [        U!5      S-
  5        O[        R                  SL5        U(       a.  [        R                  [        5        [        R                  W
5        U!$ s  snf s  snf ! [D        [F        4 a     [        R#                  [        SU%5         GM  f = f! [P        [R        4 aW  n,[        U,[R        5      (       d%  [        R#                  [        S#U%[O        U,5      5        UR1                  U%5         Sn,A,GMH  Sn,A,ff = f! [P        [R        4 ax  n,U+(       a=  [        R#                  [        S#U%[O        U,5      5        UR1                  U%5         Sn,A,GM  [        R#                  [        S(U%[O        U,5      5        U/n0S)n1 Sn,A,G
N3Sn,A,ff = f! [P         aB  n,[        R#                  [        S-U%[O        U,5      5        UR1                  U%5         Sn,A,GM"  Sn,A,ff = f! [P        [R        4 a     [        R#                  [        S4U%5         GMY  f = f! [P        [R        4 aB  n,[        R#                  [        S#U%[O        U,5      5        UR1                  U%5         Sn,A,GM  Sn,A,ff = f)Ma2  
Given a raw bytes sequence, return the best possibles charset usable to render str objects.
If there is no results, it is a strong indicator that the source is binary/not text.
By default, the process will extract 5 blocks of 512o each to assess the mess and coherence of a given sequence.
And will give up a particular code page after 20% of measured mess. Those criteria are customizable at will.

The preemptive behavior DOES NOT replace the traditional detection workflow, it prioritize a particular code page
but never take it for granted. Can improve the performance.

You may want to focus your attention to some code page or/and not others, use cp_isolation and cp_exclusion for that
purpose.

This function will strip the SIG in the payload/sequence every time except on UTF-16, UTF-32.
By default the library does not setup any handler other than the NullHandler, if you choose to set the 'explain'
toggle to True it will alter the logger configuration to add a StreamHandler that is suitable for debugging.
Custom logging format and handler can be set manually.
z3Expected object of type bytes or bytearray, got: {}r   z<Encoding detection on empty bytes, assuming utf_8 intention.utf_8g        F Nz`cp_isolation is set. use this flag for debugging purpose. limited list of encoding allowed : %s.z, zacp_exclusion is set. use this flag for debugging purpose. limited list of encoding excluded : %s.z^override steps (%i) and chunk_size (%i) as content does not fit (%i byte(s) given) parameters.r   z>Trying to detect encoding from a tiny portion of ({}) byte(s).zIUsing lazy str decoding because the payload is quite large, ({}) byte(s).z@Detected declarative mark in sequence. Priority +1 given for %s.)maxsize   zIDetected a SIG or BOM mark on first %i byte(s). Priority +1 given for %s.ascii>   utf_16utf_32z\Encoding %s won't be tested as-is because it require a BOM. Will try some sub-encoder LE/BE.>   utf_7zREncoding %s won't be tested as-is because detection is unreliable without BOM/SIG.zY%s is deemed too similar to a code page that was already considered unsuited. Continuing!zESkipping %s: already fast-tracked from a similar successful encoding.z2Encoding %s does not provide an IncrementalDecoderzbSkipping %s: definitive match already found, this encoding targets different languages (%s vs %s).zXSkipping %s: already accumulated %d same-family results after definitive match (cap=%d).zCSkipping single-byte %s: multi-byte definitive match already found.g    Ar   r,   u   ﻿z9Code page %s does not fit given bytes sequence at ALL. %szpCode page %s is a multi byte encoding table and it appear that at least one character was encoded using n-bytes.      zaLazyStr Loading: After MD chunk decode, code page %s does not fit given bytes sequence at ALL. %sTg     j@strict)errorsz^LazyStr Loading: After final lookup, code page %s does not fit given bytes sequence at ALL. %szc%s was excluded because of initial chaos probing. Gave up %i time(s). Computed mean chaos is %f %%.d      )ndigitsr*   r+   z>%s does not decode the whole payload: fallback entry withheld.)preemptive_declarationzM%s fast-tracked (identical decoded payload to a prior encoding, chaos=%f %%).皙?z.Encoding detection: %s is most likely the one.zZ%s fast-skipped (identical decoded payload to a prior encoding that failed chaos probing).z=%s passed initial chaos probing. Mean measured chaos is %f %%z&{} should target any language(s) of {},z We detected language {} using {}g{Gz?c              3  *   #    U  H	  u  pUv   M     g 7fr    ).0_vs      r   	<genexpr>from_bytes.<locals>.<genexpr>C  s     4#341Q#3s   )defaultg      ?zyDefinitive match found: %s (chaos=%.3f, coherence=%.2f). Encodings targeting different language families will be skipped.g\(\?>	   r,   r%   r*   r+   	utf_16_be	utf_16_le	utf_32_be	utf_32_le	utf_8_sigzjMulti-byte definitive match: %s (chaos=%.3f, decoded=%d/%d=%.1f%%). Single-byte encodings will be skipped.zoEncoding detection: %s is most likely the one as we detected a BOM or SIG within the beginning of the sequence.zONothing got out of the detection process. Using ASCII/UTF-8/Specified fallback.z7Encoding detection: %s will be used as a fallback matchz:Encoding detection: utf_8 will be used as a fallback matchz:Encoding detection: ascii will be used as a fallback matchz]Encoding detection: Found %s as plausible (best-candidate) for content. With %i alternatives.z=Encoding detection: Unable to determine any suitable charset.)9
isinstance	bytearraybytes	TypeErrorformattypeloggerlevel
addHandlerexplain_handlersetLevelr   lendebugremoveHandlerr   r   logjoinr   intr   r   r   appendsetr   r   r   r   r#   addr   r   ModuleNotFoundErrorImportErrorr	   r
   intersectionstrUnicodeDecodeErrorLookupErrorrangemaxr   decodesumr   update
setdefaulthashroundgetr   bestr   fingerprint)E	sequencessteps
chunk_size	thresholdcp_isolationcp_exclusionpreemptive_behaviourexplainlanguage_thresholdenable_fallbackprevious_logger_levellengthcpis_too_small_sequenceis_too_large_sequenceprioritized_encodingsspecified_encodingtestedtested_but_hard_failuretested_but_soft_failuresoft_failure_skipsuccess_fast_trackedpayload_result_cachecached_mess_ratiocached_coherence_ratiodefinitive_match_founddefinitive_target_languages post_definitive_sb_success_countPOST_DEFINITIVE_SB_CAPmb_definitive_match_foundfallback_asciifallback_u8fallback_specifiedresultsearly_stop_resultssig_encodingsig_payloadencoding_ianadecoded_payloadbom_or_sig_availablestrip_sig_or_bomis_multi_byte_decoderenc_languagesdeferred_decodinger_multi_byte_bonusmax_chunk_gave_upearly_stop_countlazy_str_hard_failure	md_chunks	md_ratioschunkmean_mess_ratiofallback_entrypayload_hashcachedcached_mess	cached_cdcached_passed
fast_matchprobable_resulttarget_languages	cd_ratioslg_inclusionchunk_languagescd_ratios_mergedcurrent_matchbest_coherencesE                                                                        r   
from_bytesr   2   s   < i)U!344AHHY
 	
 %+\\/*i.F{ST  1OO12|IwUBPRSTUU

5IIl#		
 8DD|	"e,|D

6IIl#		
 8DD|	"e,|Du$%

l	
 
qyV^j0(
"%i.3E"E"%i.4D"D

LSS	
 


W^^	
 (* .By)t  %$$%78

N	
 uF)+)+"%%%(U
 TV "$/
;&t4_E $),/E -.$"# ',*.N'+K.2,.G)7)9 3I >L+$$\2

W		
   )++$$W-.1HHM=M\9F"

=!&*%1]%B!5 "
:Q;
 009MJJn
 I%.BJJd
  --JJk
  00JJW
 	*@*O! "( #$6}$E F #$9-$H I --.IJJ

x!!/  #)04JJJJj0& 
 %-BJJU
  &%C.C*C 	*	$-B  0 "+CI.&s;'7#d)D* ' !G+0D&)!!.'O '?1+=+I*9!"*=&) $4 &!*3{+;+=!>!.'O& )As;/?
 " .t+.O$v- 	 JJ-	 "%SWq[!1 115 ! %!		5	),$ %!   '  %!?A\):$?$?a$? R=I-$)$$(99((1A1A9r &%)
#d)+&--mH-M ENY#i.!@SVi'+;?P+P#**=9 66!(()?)NO *3H$//)OR+G JJ0 o+Q7  !W&8(HMN- #*!*- (8 !*%.s;/?/A%B%2+ -*.!-!(#+=" !$66)7&"g-%3N"0K"%  0 "&s;'7'9:*#, &/D $_ 5L)--l;F!8>5Y !-!%#,! %:#0$6#I$J , "&/A"J" NN:.(,,];JJg%kC/;	 &*<gw)OO'#-&#-"LL P * 3 3  ' & 4 4_ E &0E F#1:,#??*11*= .///7;MQW;W#v-#v-8J8O8O8QL+44 #"00A"OO,AB-.?@@ ,22=AJJt% '=*  = , *6%)%0+3E* ),>>1?.*g5-;N*8K

K/C'3		
 %*<]*K4]CJJ8??!3'7#8 	 G# /?)*D  #"8& #   1 # 2)<JJ299$m %  .$);Wg(NN  
 #5
" 	}% &/D ++_% "2D9 #)$&,1, 0'7CC#% #%D!** ((9OO$9:%}o66%%m4 "###+/AV/K6!6!0557OLL@(( $$_5 56!?"344 &.C $ 4#34cB 
 $F):w&?P)-&+223CD

 P!#" *% +O$v}4
 6!6!(,%JJ|O$O$v-3 L(LL1
 $$_5 56!7=#9":;;c If 7|q.,>JJa
 LLI"++ NN-.^3"++~/I/II'LLUVNN;'LLUVNN>*kLLN##L1	
 	TU_--.N} E EZ $[1 	JJD
 	H #K0 		a--

O!F	 $**=9		N 
 	) ! 

O!F	 (..}=JJsA	  1$(!/	)D & 

t!F	 (..}=d /< !

!\)
 !!P '4 

O!F	 (..}=s   .A@::A@?AA0AAA733AA7'AA7 A?AC!#AC!,AC!.AC!AE,/AF;AG.A+AA4A3AA4A7ACBAACCACC!AE)C1=AE$D5)AE$E$AE)E,
AF8E66AF3F3AF8F;+AG+G*AG+G.AI G>6AH;H;AI c
                F    [        U R                  5       UUUUUUUUU	5
      $ )zz
Same thing than the function from_bytes but using a file pointer that is already ready.
Will not close the file pointer.
)r   read)
fprk   rl   rm   rn   ro   rp   rq   rr   rs   s
             r   from_fpr     s5      
	 r!   c
                x    [        U S5       n
[        U
UUUUUUUUU	5
      sSSS5        $ ! , (       d  f       g= f)z
Same thing than the function from_bytes but with one extra step. Opening and reading given file path in binary mode.
Can raise IOError.
rbN)openr   )pathrk   rl   rm   rn   ro   rp   rq   rr   rs   r   s              r   	from_pathr     sB      
dD	R 
 
		s   +
9c
                   [        U [        [        45      (       a  [        U UUUUUUUUU	S9
n
U
(       + $ [        U [        [
        45      (       a  [        U UUUUUUUUU	S9
n
U
(       + $ [        U UUUUUUUUU	S9
n
U
(       + $ )a  
Detect if the given input (file, bytes, or path) points to a binary file. aka. not a string.
Based on the same main heuristic algorithms and default kwargs at the sole exception that fallbacks match
are disabled to be stricter around ASCII-compatible but unlikely to be a string.
)	rk   rl   rm   rn   ro   rp   rq   rr   rs   )rE   r\   r   r   rG   rF   r   r   )fp_or_path_or_payloadrk   rl   rm   rn   ro   rp   rq   rr   rs   guessess              r   	is_binaryr     s    " '#x99!!%%!51+
Z ;C 
	

 
 !!%%!51+
4 ; !!%%!51+
 ;r!   )	      皙?NNTFr6   T)rj   zbytes | bytearrayrk   rU   rl   rU   rm   floatrn   list[str] | Nonero   r   rp   boolrq   r   rr   r   rs   r   returnr   )r   r   rk   rU   rl   rU   rm   r   rn   r   ro   r   rp   r   rq   r   rr   r   rs   r   r   r   )r   zstr | bytes | PathLikerk   rU   rl   rU   rm   r   rn   r   ro   r   rp   r   rq   r   rr   r   rs   r   r   r   )	r   r   r   NNTFr6   F)r   z!PathLike | str | BinaryIO | bytesrk   rU   rl   rU   rm   r   rn   r   ro   r   rp   r   rq   r   rr   r   rs   r   r   r   )-
__future__r   logging	functoolsr   osr   typingr   cdr   r	   r
   r   constantr   r   r   r   r   mdr   modelsr   r   utilsr   r   r   r   r   r   	getLoggerrK   StreamHandlerrN   setFormatter	Formattersortedr#   __annotations__r   r   r   r   r9   r!   r   <module>r      s   "        0  
		/	0'')   AB &,M&   %)%)!% # x xx x 	x
 #x #x x x x x xz %)%)!% #   	
 # #     @ %)%)!% # 

 

 
 	

 #
 #
 
 
 
 
 
B %)%)!% #!?<?? ? 	?
 #? #? ? ? ? ? 
?r!   