
    /JfS+                     v   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ  ej        e          Z G d
 de          Zd dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dlm)Z) d dl*m+Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 e,Z3e4Z4e"Z5d Z6d Z7d8dZ8d9dZ9	 d dl:m;c m<Z= n# e>$ r d dl?m;c m@Z= Y nw xY we=jA        ZBd dlCZCd ZDeEd             ZFeEd             ZGeFe_F        eGe_G        d ZHd ZI	  ejJ                     dZKn# eL$ r dZKY nw xY wd ZMd:d ZNd! ZOd" ZP	 d dlQZRejS        T                    d#d$          ZUeUV                                d%k     ZWn# e>$ r dZWY nw xY wd&ZX e
jY        d'eXz   d(z             ZZd)Z[d*\                    e[eX+          Z]e[e]d,Z^g d-Z_d.Z`d/d0a                    d1 e_D                       z   d2z   Zbd3e`z   d4z   Zcd5ebz   d/z   ecz   d6z   Zd e
jY        d'edz   d(z             Ze efd7          Zg	 d dlhZhdZidS # e>$ r dZiY dS w xY w);    N)HTTPMessage)OrderedDict)MutableMapping)floor)six)MD5UnavailableError)tzlocal)
exceptionsc                       e Zd ZdS )HTTPHeadersN)__name__
__module____qualname__     R/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/botocore/compat.pyr   r   %   s        Dr   r   )
quote	urlencodeunquoteunquote_plusurlparseurlsplit
urlunspliturljoin	parse_qslparse_qs)HTTPResponse)IOBase)encodebytes)
formatdate)zip_longestc                 X    | j         j        j        j                            |           dS )z|Set the timeout of the socket from an HTTPResponse.

    :param http_response: An instance of ``httplib.HTTPResponse``

    N)_fpfpraw_sock
settimeout)http_responsetimeouts     r   set_socket_timeoutr*   @   s*     "--g66666r   c                 6    t          j        |           d         S )N   )inspectgetfullargspec)funcs    r   accepts_kwargsr0   H   s     !$''**r   c                     | S Nr   sencodingerrorss      r   ensure_unicoder7   M   s    Hr   utf-8strictc                     t          | t                    r|                     ||          S t          | t                    r| S t	          dt          |            d          )Nz Expected str or bytes, received .)
isinstancestrencodebytes
ValueErrortyper3   s      r   ensure_bytesrB   Q   s_    !S *xx&)))!U 
BQBBB
C
CCr   c                  J    t          j        ddt          j        d           d S )Nignorez+A true SSLContext object is not available.*z.*urllib3\.util\.ssl_)messagecategorymodule)warningsfilterwarningsr
   InsecurePlatformWarningr   r   r   filter_ssl_warningsrK   b   s5    =3'	     r   c                 X     |             }|                                 D ]
\  }}|||<   |S r2   )items)clsdnew_instancekeyvalues        r   	from_dictrS   l   s;    355Lggii " "
U!Sr   c                 4     |             }|D ]
\  }}|||<   |S r2   r   )rN   pairsrP   rQ   rR   s        r   
from_pairsrV   t   s3    355L " "
U!Sr   c                 .    t          j         |           }|S )zI
    This used to be a compat shim for 2.6 but is now just an alias.
    )copy)kwargscopy_kwargss     r   rZ   rZ      s     )F##Kr   c                 *    |                                  S )z
    Returns the total seconds in a ``datetime.timedelta``.

    This used to be a compat shim for 2.6 but is now just an alias.

    :param delta: The timedelta object
    :type delta: ``datetime.timedelta``
    )total_seconds)deltas    r   r\   r\      s        r   TFc                  N    t           rt          j        | i |S t                      )a:  
    Attempts to get an md5 hashing object.

    :param args: Args to pass to the MD5 constructor
    :param kwargs: Key word arguments to pass to the MD5 constructor
    :return: An MD5 hashing object if available. If it is unavailable, None
        is returned if raise_error_if_unavailable is set to False.
    )MD5_AVAILABLEhashlibmd5r   )argsrY   s     r   get_md5rc      s-      ${D+F+++!###r   c                 p    |t           j        }|dk    rt          |           S t          j        |           S )Nwin32)sysplatform_windows_shell_splitshlexsplit)r4   rg   s     r   compat_shell_splitrk      s6    <7#A&&&{1~~r   c           
         | sg S g }g }d}d}| D ]}|dk    r|dz  }|dk    rw|dk    rX|                     dt          t          |dz                      z             |dz  }d}|dk    r|                     d           s| }|                     d           |dv rO|sM|dk    r|                     d|z             d}|r*|                     d                    |                     g }|dk    r|                     d|z             d}|                     |           |rt	          d	|            |dk    r|                     d|z             |r(|                     d                    |                     |S )
a  Splits up a windows command as the built-in command parser would.

    Windows has potentially bizarre rules depending on where you look. When
    spawning a process via the Windows C runtime (which is what python does
    when you call popen) the rules are as follows:

    https://docs.microsoft.com/en-us/cpp/cpp/parsing-cpp-command-line-arguments

    To summarize:

    * Only space and tab are valid delimiters
    * Double quotes are the only valid quotes
    * Backslash is interpreted literally unless it is part of a chain that
      leads up to a double quote. Then the backslashes escape the backslashes,
      and if there is an odd number the final backslash escapes the quote.

    :param s: The command string to split up into parts.
    :return: A list of command components.
    Fr   \   "r,    ) 	z No closing quotation in string: )appendintr   joinr@   )r4   
componentsbuff	is_quotednum_backslashes	character	remainders          r   rh   rh      s   (  	JDIO 1# 1#	
 q OO#"" D3u_q-@'A'A#B#BBCCC+a/	"#>> KK$$$ &I KKOOOO+%%i% ""D?2333"#  !!"''$--000 ""D?2333"#KK	""""  A?A??@@@ D?*+++  )"''$--(((r   c                  P    t           j        dk    rddlm}  t          | fS t          fS )Nre   r   
tzwinlocal)rf   rg   dateutil.tzr~   r	   r}   s    r   get_tzinfo_optionsr     s6     |w******$$zr   BOTO_DISABLE_CRTfalsetruez(?:[0-9]{1,3}\.){3}[0-9]{1,3}^$z[0-9A-Fa-f]{1,4}z(?:{hex}:{hex}|{ipv4}))hexipv4)r   ls32)	z(?:%(hex)s:){6}%(ls32)sz::(?:%(hex)s:){5}%(ls32)sz%(?:%(hex)s)?::(?:%(hex)s:){4}%(ls32)sz2(?:(?:%(hex)s:)?%(hex)s)?::(?:%(hex)s:){3}%(ls32)sz6(?:(?:%(hex)s:){0,2}%(hex)s)?::(?:%(hex)s:){2}%(ls32)sz/(?:(?:%(hex)s:){0,3}%(hex)s)?::%(hex)s:%(ls32)sz'(?:(?:%(hex)s:){0,4}%(hex)s)?::%(ls32)sz&(?:(?:%(hex)s:){0,5}%(hex)s)?::%(hex)sz(?:(?:%(hex)s:){0,6}%(hex)s)?::zDABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!\-~z(?:|c                 "    g | ]}|t           z  S r   )_subs).0xs     r   
<listcomp>r   N  s    <<<1QY<<<r   )z(?:%25|%)(?:[z]|%[a-fA-F0-9]{2})+z\[z)?\]z	
)NN)r8   r9   r2   )jrX   datetimerf   r-   rH   r`   http.clientr   loggingri   reoscollectionsr   collections.abcr   mathr   botocore.vendoredr   botocore.exceptionsr   r   r	   urllib3r
   	getLoggerr   loggerr   urllib.parser   r   r   r   r   r   r   r   r   r   r   ior   _IOBasebase64r   email.utilsr    	itertoolsr!   	file_typezipunquote_strr*   r0   r7   rB   xml.etree.cElementTreeetreecElementTreeETreeImportErrorxml.etree.ElementTreeElementTree
ParseErrorXMLParseErrorjsonrK   classmethodrS   rV   rZ   r\   ra   r_   r@   rc   rk   rh   r   awscrt.authawscrtenvirongetdisabledlowerHAS_CRTIPV4_PATcompileIPV4_REHEX_PATformatLS32_PATr   _variationsUNRESERVED_PATru   IPV6_PATZONE_ID_PATIPV6_ADDRZ_PATIPV6_ADDRZ_RE	frozensetUNSAFE_URL_CHARSgzipHAS_GZIPr   r   r   <module>r      sQ     



    # # # # # #   				 				 # # # # # # * * * * * *       ! ! ! ! ! ! 3 3 3 3 3 3            		8	$	$	 	 	 	 	+ 	 	 	                        % $ $ $ $ $                   " " " " " " ! ! ! ! ! !		 7 7 7+ + +
   D D D D*********** * * *)))))))))))*            " #   	! 	! 	!GKMMMMM   MMM$ $ $   [ [ [|	 	 	 z~~0'::H..""f,,GG   GGG ,
"*S8^c)
*
*
#**wX*FF**  , L  388<<<<<===C.1FF!F*[87B
3/#566 9X&& KKKHHH   HHHHsH   	C CCD+ +D54D58E? ?F	F	%H- -H87H8