
    F/j=                     r   U d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZ ej                  dk\  rd dlmZ nd dlmZ eeedd	f   Z	 	 d dlZd
Z	 ej                  dk\  rd dlmZ nd dlmZ d
ZdZd ZdZ G d de      Z G d de      Z  G d de      Z! G d ded      Z" G d d      Z# e#e      Z$e#e%d<   de!ddfdZ&	 	 d,de'dz  d e(de)fd!Z* G d" d#e      Z+ G d$ d%      Z, G d& d'e+      Z- G d( d)e+      Z. G d* d+e+      Z/y# e$ r d dlZY w xY w# e$ r dZY w xY w# e$ r dZY w xY w)-    N)ABCabstractmethod)Executor)AnyFinalProtocol	TypedDictcast)      )Buffer)Unionzmemoryview[int]zmemoryview[bytes]TF)r      )ZstdDecompressori   c                   .    e Zd ZdedefdZddedefdZy)ZLibCompressObjProtocoldatareturnc                      y N selfr   s     W/var/www/html/maxservice/venv/lib/python3.12/site-packages/aiohttp/compression_utils.pycompressz ZLibCompressObjProtocol.compress,           modec                     y r   r   r   r   s     r   flushzZLibCompressObjProtocol.flush-   r   r   N.)__name__
__module____qualname__r   bytesr   intr"   r   r   r   r   r   +   s    2V225#555r   r   c                   v    e Zd ZddededefdZddedefdZede	fd       Z
edefd       Zedefd	       Zy
)ZLibDecompressObjProtocolr   
max_lengthr   c                      y r   r   r   r   r+   s      r   
decompressz$ZLibDecompressObjProtocol.decompress1   r   r   lengthc                     y r   r   r   r/   s     r   r"   zZLibDecompressObjProtocol.flush2   r   r   c                      y r   r   r   s    r   eofzZLibDecompressObjProtocol.eof4   s    r   c                      y r   r   r3   s    r   unconsumed_tailz)ZLibDecompressObjProtocol.unconsumed_tail7   s    (+r   c                      y r   r   r3   s    r   unused_dataz%ZLibDecompressObjProtocol.unused_data:   s    $'r   Nr#   )r$   r%   r&   r   r(   r'   r.   r"   propertyboolr4   r6   r8   r   r   r   r*   r*   0   sZ    KvK3KK7C7U7T ++ +'U' 'r   r*   c                       e Zd ZU eed<   eed<   eed<   eed<   eed<   	 	 	 	 	 	 ddededed	ed
ededz  defdZ	 ddededefdZ		 ddededede
fdZ	 ddededede
fdZy)ZLibBackendProtocol	MAX_WBITSZ_FULL_FLUSHZ_SYNC_FLUSHZ_BEST_SPEEDZ_FINISHlevelmethodwbitsmemLevelstrategyzdictNr   c                      y r   r   )r   rB   rC   rD   rE   rF   rG   s          r   compressobjzZLibBackendProtocol.compressobjE   s     #&r   c                      y r   r   )r   rD   rG   s      r   decompressobjz!ZLibBackendProtocol.decompressobjN   s    $'r   r   c                     y r   r   )r   r   rB   rD   s       r   r   zZLibBackendProtocol.compressR       r   bufsizec                     y r   r   )r   r   rD   rN   s       r   r.   zZLibBackendProtocol.decompressU   rM   r   )......)..)r$   r%   r&   r(   __annotations__r   r   rI   r*   rK   r'   r   r.   r   r   r   r<   r<   >   s    NM "&& & 	&
 & & }& 
!& 14(('-(	"(
 ?B&)8;	 AD&):=	r   r<   c                   ,    e Zd ZU eed<   eed<   eed<   y)CompressObjArgsrD   rF   rB   N)r$   r%   r&   r(   rP   r   r   r   rR   rR   Z   s    JMJr   rR   )totalc                      e Zd ZdefdZedefd       Zedefd       Z	edefd       Z
edefd       Zedefd       Zedefd	       Zd
ededefdZd
ededefdZded
ededefdZded
ededefdZdedefdZy)ZLibBackendWrapper_zlib_backendc                     || _         y r   )rV   )r   rV   s     r   __init__zZLibBackendWrapper.__init__a   s
    2?r   r   c                 0    t        | j                  dd      S )Nr$   	undefinedgetattrrV   r3   s    r   namezZLibBackendWrapper.named   s    t)):{CCr   c                 .    | j                   j                  S r   )rV   r=   r3   s    r   r=   zZLibBackendWrapper.MAX_WBITSh   s    !!+++r   c                 .    | j                   j                  S r   )rV   r>   r3   s    r   r>   zZLibBackendWrapper.Z_FULL_FLUSHl       !!...r   c                 .    | j                   j                  S r   )rV   r?   r3   s    r   r?   zZLibBackendWrapper.Z_SYNC_FLUSHp   r`   r   c                 .    | j                   j                  S r   )rV   r@   r3   s    r   r@   zZLibBackendWrapper.Z_BEST_SPEEDt   r`   r   c                 .    | j                   j                  S r   )rV   rA   r3   s    r   rA   zZLibBackendWrapper.Z_FINISHx   s    !!***r   argskwargsc                 :     | j                   j                  |i |S r   )rV   rI   r   rd   re   s      r   rI   zZLibBackendWrapper.compressobj|   s     -t!!--t>v>>r   c                 :     | j                   j                  |i |S r   )rV   rK   rg   s      r   rK   z ZLibBackendWrapper.decompressobj   s     /t!!//@@@r   r   c                 B     | j                   j                  |g|i |S r   )rV   r   r   r   rd   re   s       r   r   zZLibBackendWrapper.compress   s%    *t!!**4A$A&AAr   c                 B     | j                   j                  |g|i |S r   )rV   r.   rj   s       r   r.   zZLibBackendWrapper.decompress   s%    ,t!!,,TCDCFCCr   attrnamec                 .    t        | j                  |      S r   r[   )r   rl   s     r   __getattr__zZLibBackendWrapper.__getattr__   s    t))844r   N)r$   r%   r&   r<   rX   r9   strr]   r(   r=   r>   r?   r@   rA   r   r   rI   r*   rK   r   r'   r   r.   rn   r   r   r   rU   rU   `   sO   @&9 @ Dc D D ,3 , , /c / / /c / / /c / / +# + +? ? ?8O ?A3 A# A:S ABV BC B3 B5 BDv Dc DS DU D5C 5C 5r   rU   ZLibBackendnew_zlib_backendr   c                     | t         _        y r   )rp   rV   )rq   s    r   set_zlib_backendrs      s
     0Kr   encodingsuppress_deflate_headerc                 x    | dk(  rdt         j                  z   S |rt         j                   S t         j                  S )Ngzip   )rp   r=   )rt   ru   s     r   encoding_to_modery      s9     6K))))%<K!!!W+BWBWWr   c                       e Zd Zdefdedz  dedz  fdZeefde	dede
fd       Zefde	dede
fd	Zeedefd
              Zy)DecompressionBaseHandlerNexecutormax_sync_chunk_sizec                      || _         || _        y)z&Base class for decompression handlers.N)	_executor_max_sync_chunk_size)r   r|   r}   s      r   rX   z!DecompressionBaseHandler.__init__   s     "$7!r   r   r+   r   c                      yDecompress the given data.Nr   r-   s      r   decompress_syncz(DecompressionBaseHandler.decompress_sync   r   r   c                    K   | j                   Zt        |      | j                   kD  rBt        j                         j	                  | j
                  | j                  ||       d{   S | j                  ||      S 7 wr   )r   lenasyncioget_event_looprun_in_executorr   r   r-   s      r   r.   z#DecompressionBaseHandler.decompress   st     
 %%1D	D555 //1AA 4 4dJ   ##D*55s   A"A=$A;%A=c                      y)z7Return True if more output is available by passing b"".Nr   r3   s    r   data_availablez'DecompressionBaseHandler.data_available   r   r   )r$   r%   r&   MAX_SYNC_CHUNK_SIZEr   r(   rX   r   ZLIB_MAX_LENGTH_UNLIMITEDr   r'   r   r.   r9   r:   r   r   r   r   r{   r{      s     %)*=8T/8 !4Z8 .G))(+)	) ) /H66(+6	6 F F  Fr   r{   c                       e Zd Zddddddefdedz  dededz  dedz  dedz  dedz  d	edz  fd
Zde	de
fdZde	de
fdZddedz  de
fdZy)ZLibCompressorNFrt   ru   rB   rD   rF   r|   r}   c                    || _         || _        |t        ||      n|| _        t	        t
        j                        | _        i }| j                  |d<   |||d<   |||d<    | j                  j                  di || _        y )NrD   rF   rB   r   )	r   r   ry   _moderU   rp   rV   rI   _compressor)	r   rt   ru   rB   rD   rF   r|   r}   re   s	            r   rX   zZLibCompressor.__init__   s     "$7! } X'>? 	

 %7{7P7P$Q"$**w!)F:#F7O94--99CFCr   r   r   c                 8    | j                   j                  |      S r   )r   r   r   s     r   compress_synczZLibCompressor.compress_sync   s    ((..r   c                   K   | j                   duxr t        |      | j                   kD  }|rKt        j                         j	                  | j
                  | j                  j                  |       d{   S | j                  |      S 7 w)a  Compress the data and returned the compressed bytes.

        Note that flush() must be called after the last call to compress()

        If the data size is large than the max_sync_chunk_size, the compression
        will be done in the executor. Otherwise, the compression will be done
        in the event loop.

        **WARNING: This method is NOT cancellation-safe when used with flush().**
        If this operation is cancelled, the compressor state may be corrupted.
        The connection MUST be closed after cancellation to avoid data corruption
        in subsequent compress operations.

        For cancellation-safe compression (e.g., WebSocket), the caller MUST wrap
        compress() + flush() + send operations in a shield and lock to ensure atomicity.
        N)	r   r   r   get_running_loopr   r   r   r   r   )r   r   should_use_executors      r   r   zZLibCompressor.compress   s     & %%T1 6D	D555 	  113CC 0 0 9 94   !!$''s   A1B3B	4Br   c                 p    | j                   j                  ||      S | j                  j                        S )a	  Flush the compressor synchronously.

        **WARNING: This method is NOT cancellation-safe when called after compress().**
        The flush() operation accesses shared compressor state. If compress() was
        cancelled, calling flush() may result in corrupted data. The connection MUST
        be closed after compress() cancellation.

        For cancellation-safe compression (e.g., WebSocket), the caller MUST wrap
        compress() + flush() + send operations in a shield and lock to ensure atomicity.
        )r   r"   rV   rA   r!   s     r   r"   zZLibCompressor.flush   s>     %%$D
 	
*.*<*<*E*E
 	
r   r   )r$   r%   r&   r   ro   r:   r(   r   rX   r   r'   r   r   r"   r   r   r   r   r      s      $(-  #$(*=D*D "&D Tz	D
 TzD *D T/D !4ZD6/& /U /(6 (e (8
#* 
 
r   r   c            
            e Zd Zdddefdedz  dededz  dedz  f fdZe	fde
d	ed
efdZdded
efdZed
efd       Zed
efd       Z xZS )ZLibDecompressorNFrt   ru   r|   r}   c                     t         |   ||       t        ||      | _        t	        t
        j                        | _        | j                  j                  | j                        | _        d| _	        d | _
        y )Nr|   r}   rD   F)superrX   ry   r   rU   rp   rV   rK   _decompressor_last_empty_pending_unused_data)r   rt   ru   r|   r}   	__class__s        r   rX   zZLibDecompressor.__init__  sj     	(@ST%h0GH
$6{7P7P$Q!//==DJJ=O 26!r   r   r+   r   c                 p   | j                   | j                   t        |      z   }d | _         | j                  j                  | j                  j                  |z   |      }|dk(  | _        | j                  j                  r| j                  j                  r| j                  j                  }| j                  j                  | j                        | _        |t        k7  r|t        |      z  }|dk  r|| _         nX| j                  j                  ||      }|dk(  | _        ||z  }| j                  j                  r| j                  j                  r| j                  j                  rN| j                  | j                  j                  kD  r+| j                  j                  | j                        | _        |S )Nr   r   r   )r   r'   r   r.   r6   r   r4   r8   rV   rK   r   r   r   r=   )r   r   r+   resultunusedchunks         r   r   z ZLibDecompressor.decompress_sync  sx    $$0,,uT{:D(,D%##....5z
 "S=
   $$););)G)G''33F!%!3!3!A!A

!A!SD66c&k)
?06D-&&11&*EE$|DeOF   $$););)G)G  !!djj43E3E3O3O&O!%!3!3!A!A

!A!SDr   r/   c                 v    |dkD  r| j                   j                  |      S | j                   j                         S Nr   )r   r"   r1   s     r   r"   zZLibDecompressor.flush?  s?     z $$V,	
 ##))+	
r   c                 ~    t        | j                  j                        xs | j                   xs | j                  d uS r   )r:   r   r6   r   r   r3   s    r   r   zZLibDecompressor.data_availableF  sA     ##334 5###5((4	
r   c                 .    | j                   j                  S r   )r   r4   r3   s    r   r4   zZLibDecompressor.eofN  s    !!%%%r   )r   )r$   r%   r&   r   ro   r:   r   r(   rX   r   r   r'   r   r"   r9   r   r4   __classcell__r   s   @r   r   r     s      $(-$(*=7*7 "&7 T/	7
 !4Z7 /H""(+"	"H
C 
 
 
 
 
 &T & &r   r   c                   x     e Zd Zdefdedz  dedz  ddf fdZefdedede	fdZ
de	fd	Zedefd
       Z xZS )BrotliDecompressorNr|   r}   r   c                     t         st        d      t        j                         | _        d| _        t        |   ||       y)z)Decompress data using the Brotli library.zIThe brotli decompression is not available. Please install `Brotli` moduleFr   N)
HAS_BROTLIRuntimeErrorbrotliDecompressor_objr   r   rX   r   r|   r}   r   s      r   rX   zBrotliDecompressor.__init__W  sG     1  '')	 (@STr   r   r+   c                    t        | j                  d      r^|t        k(  r*t        t        | j                  j                  |            }nt        t        | j                  j                  ||            }n]|t        k(  r*t        t        | j                  j                  |            }n*t        t        | j                  j                  ||            }|dk(  | _        |S )r   r.   r   )hasattrr   r   r
   r'   r.   processr   )r   r   r+   r   s       r   r   z"BrotliDecompressor.decompress_syncf  s     499l+66eTYY%9%9$%?@eTYY%9%9$
%KL66eTYY%6%6t%<=eTYY%6%6tZ%HI!S=r   c                     t        | j                  d      r(t        t        | j                  j	                               S y)zFlush the decompressor.r"   r   )r   r   r
   r'   r"   r3   s    r   r"   zBrotliDecompressor.flushx  s+    499g&tyy011r   c                 V    | j                   j                          xr | j                   S r   )r   is_finishedr   r3   s    r   r   z!BrotliDecompressor.data_available~  s&    99((**C43C3C/CCr   r$   r%   r&   r   r   r(   rX   r   r   r'   r   r"   r9   r:   r   r   r   s   @r   r   r   S  s     %)*=UT/U !4ZU 
	U  /H(+	$u  D D Dr   r   c                   x     e Zd Zdefdedz  dedz  ddf fdZefdedede	fdZ
de	fd	Zedefd
       Z xZS )ZSTDDecompressorNr|   r}   r   c                 v    t         st        d      t               | _        d | _        t
        |   ||       y )NzOThe zstd decompression is not available. Please install `backports.zstd` moduler   )HAS_ZSTDr   r   r   r   r   rX   r   s      r   rX   zZSTDDecompressor.__init__  sA    
 9  %&	26!(@STr   r   r+   c                 p   |t         k(  rt        n|}| j                  | j                  |z   }d | _        | j                  j	                  ||      }| j                  j
                  r| j                  j                  r| j                  j                  }t               | _        |t        k7  r|t        |      z  }|dk  r|| _        nL|| j                  j	                  ||      z  }| j                  j
                  r| j                  j                  r| j                  j
                  rt               | _        |S r   )	r   ZSTD_MAX_LENGTH_UNLIMITEDr   r   r.   r4   r8   r   r   )r   r   r+   zstd_max_lengthr   r8   s         r   r   z ZSTDDecompressor.decompress_sync  s    66 & 	
 $$0,,t3D(,D%%%dO< iimm		 5 5))//K(*DI";;3v;."a'0;D-dii**;HHF iimm		 5 5 99==(*DIr   c                      y)Nr   r   r3   s    r   r"   zZSTDDecompressor.flush  s    r   c                     | j                   j                   xr | j                   j                   xs | j                  d uS r   )r   needs_inputr4   r   r3   s    r   r   zZSTDDecompressor.data_available  s<     		%%%;diimm*;3&&d2	3r   r   r   s   @r   r   r     s     %)*=UT/U !4ZU 
	U /H$$(+$	$Lu  3 3 3r   r   )NF)0r   syszlibabcr   r   concurrent.futuresr   typingr   r   r   r	   r
   version_infocollections.abcr   r   r'   	bytearray
brotlicffir   ImportErrorr   compression.zstdr   backports.zstdr   r   r   r   r   r*   r<   rR   rU   rp   rP   rs   ro   r:   r(   ry   r{   r   r   r   r   r   r   r   <module>r      s    
  # ' 8 8w&5)%68KKLF# J
7"53H
     6h 6
( (( 8iu *5 *5Z #5T": :1': 1t 1
  $)XDjX!X 	X Fs  FFH
 H
VD&/ D&N-D1 -D`<3/ <3c    J  HsB   D D D, 	DD DD D)(D),D65D6