
    >OOf+              
          d dl Z e j                  dk  rd dlmZ d dlmZmZmZm	Z	mZm
Z
mZmZ nd dlmZmZmZm	Z	mZm
Z
mZmZ eZd dlmZmZmZmZmZmZmZ edeeee   f   eeee   f   eeeef      eeeef      eeeef      f   Zddeeef   ded	efd
Zdeded	efdZddhZdeeeef      d	eeeef      fdZ	 ddeeef   dedee   d	efdZddeeef   dee   d	efdZ G d de
eef         Zy)    N)   	   r   )Mapping)	ItemsViewIterableIteratorKeysViewr   MutableMappingSequence
ValuesView)AnyAnyStrDictListOptionalTupleUnionHeadersvalueencodingreturnc                 H    t        | t              r| S | j                  |      S N)
isinstancestrdecoder   r   s     [/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/curl_cffi/requests/headers.pyto_strr   7   s    uc*5FX0FF    match_type_ofc                 F    t        |t              r| S | j                         S r   )r   r   encode)r   r!   s     r   to_bytes_or_strr$   ;   s    }c25FFr    authorizationzproxy-authorizationitemsc              #      K   | D ]7  \  }}t        |j                               t        v rt        d|      }||f 9 y w)Nz[secure])r!   )r   lowerSENSITIVE_HEADERSr$   )r&   kvs      r   obfuscate_sensitive_headersr,   B   sD       1!'') 11
!<Ad
s   >A r(   c                 z    t        | t              r| }n| j                  |xs d      }|r|j                         S |S )zE
    Coerce str/bytes into a strictly byte-wise HTTP header key.
    ascii)r   bytesr#   r(   )r   r(   r   bytes_values       r   normalize_header_keyr1   K   s<     %ll8#6w7"';8[8r    c                 P    t        | t              r| S | j                  |xs d      S )zG
    Coerce str/bytes into a strictly byte-wise HTTP header value.
    r.   )r   r/   r#   r   s     r   normalize_header_valuer3   [   s'     %<<+G,,r    c                      e Zd ZdZ	 	 ddee   dee   ddfdZedefd       Z	e	j                  deddfd	       Z	edeeeef      fd
       Zdee   fdZdee   fdZdeeef   fdZdeeeef      fdZd dededefdZd!dededee   fdZd dee   ddfdZd"dZdedefdZdededdfdZdeddfdZdedefdZde e   fdZ!de"fdZ#dedefdZ$defdZ%y)#r   z9
    HTTP headers, as a case-insensitive multi-dict.
    Nheadersr   r   c           
      (   |sg | _         || _        y t        |t              r"t        |j                         | _         || _        y t        |t              rW|j                         D cg c].  \  }}|'t        |d|      t        |d|      t        ||      f0 c}}| _         || _        y t        |t              rt        |d   t        t        f      rXt        |d   t              rdnd}g }|D ]9  }|j                  |d      \  }}|j                  ||j                         f       ; nt        |d   t              r|}D cg c],  \  }}t        |d|      t        |d|      t        ||      f. c}}| _         || _        y c c}}w c c}}w )	NF)r(   r   Tr   :   :   )maxsplit)_listr   r   list
AbcMappingr&   r1   r3   r   r/   splitappendstriptuple	_encoding)selfr5   r   r*   r+   sephlines           r   __init__zHeaders.__init__i   s   
 DJ> "= )gmm,DJ: "9 , $MMO Aq= )%(K($J*1h7DJ6 "% &'!*sEl3'
C8cd# -D::cA:6DAqHHa^,- GAJ.  Aq	 )%(K($J*1h7DJ "7$s   '3F1Fc                    | j                   XdD ]L  }| j                  D ](  \  }}	 |j                  |       |j                  |       * || _          | j                   S  d| _         | j                   S # t        $ r Y  nw xY w)zn
        Header encoding is mandated as ascii, but we allow fallbacks to utf-8
        or iso-8859-1.
        )r.   utf-8z
iso-8859-1)rB   rawr   UnicodeDecodeError)rC   r   keyr   s       r   r   zHeaders.encoding   s     >>!. ."&(( 
JC

8,X.
 &.DN
 ~~!. ".~~ . s   "A11	A>=A>r   c                     || _         y r   )rB   )rC   r   s     r   r   zHeaders.encoding   s	    r    c                 X    | j                   D cg c]
  \  }}}||f c}}}S c c}}}w )zH
        Returns a list of the raw header items, as byte pairs.
        )r;   )rC   raw_key_r   s       r   rJ   zHeaders.raw   s+    
 ;?**EE%6Wa% EEEs   %c                     | j                   D ci c]"  \  }}}|j                  | j                        d $ c}}j                         S c c}}w r   )r;   r   r   keys)rC   rP   rL   s      r   rR   zHeaders.keys   s;    AELIAsA

4==)4/LQQSSLs   'A	c                     i }| j                   D ]V  \  }}}|j                  | j                        }|j                  | j                        }||v r||xx   d| z  cc<   R|||<   X |j                         S )N, )r;   r   r   valuesrC   values_dictrP   rL   r   str_key	str_values          r   rU   zHeaders.values   s~    &(!ZZ 	1MAsEjj/GT]]3I+%G$"YK(88$'0G$	1 !!##r    c                     i }| j                   D ]V  \  }}}|j                  | j                        }|j                  | j                        }||v r||xx   d| z  cc<   R|||<   X |j                         S )z
        Return `(key, value)` items of headers. Concatenate headers
        into a single comma separated value when a key occurs multiple times.
        rT   )r;   r   r   r&   rV   s          r   r&   zHeaders.items   s    
 ')!ZZ 	1MAsEjj/GT]]3I+%G$"YK(88$'0G$	1   ""r    c           	          | j                   D cg c]<  \  }}}|j                  | j                        |j                  | j                        f> c}}}S c c}}}w )z
        Return a list of `(key, value)` pairs of headers. Allow multiple
        occurrences of the same key without concatenating into a single
        comma separated value.
        )r;   r   r   )rC   rL   rP   r   s       r   multi_itemszHeaders.multi_items   sT     [_ZdZd
 
IVaQVSZZ&T]](CD
 	
 
s   AArL   defaultc                 0    	 | |   S # t         $ r |cY S w xY w)z
        Return a header value. If multiple occurrences of the header occur
        then concatenate them together with commas.
        )KeyError)rC   rL   r]   s      r   getzHeaders.get   s%    
	9 	N	s    split_commasc                    |j                         j                  | j                        }| j                  D cg c]4  \  }}}|j                         |k(  r|j	                  | j                        6 }}}}|s|S g }|D ]>  }	|j                  |	j                  d      D 
cg c]  }
|
j                          c}
       @ |S c c}}}w c c}
w )z
        Return a list of all header values for a given key.
        If `split_commas=True` is passed, then any comma separated header
        values are split into multiple return strings.
        ,)r(   r#   r   r;   r   extendr>   r@   )rC   rL   ra   get_header_keyrP   item_key
item_valuerU   split_valuesr   items              r   get_listzHeaders.get_list   s     ++DMM: ,0::
 
'8Z~~>1 dmm,
 
 M 	ME%++c:J K$ KL	M
 !Ls   9C C	
c                     t        |      }|j                         D ]  }|| v s| j                  |        | j                  j	                  |j                         y r   )r   rR   popr;   rd   )rC   r5   rL   s      r   updatezHeaders.update   sK    '"<<> 	Cd{	 	

'--(r    c                 0    t        | | j                        S )N)r   )r   r   rC   s    r   copyzHeaders.copy  s    tdmm44r    c                    |j                         j                  | j                        }| j                  D cg c]&  \  }}}||k(  r|j	                  | j                        ( }}}}|rdj                  |      S t        |      c c}}}w )z
        Return a single header value.
        If there are multiple headers with the same key, then we concatenate
        them with commas. See: https://tools.ietf.org/html/rfc7230#section-3.2.2
        rT   )r(   r#   r   r;   r   joinr_   )rC   rL   normalized_keyrP   
header_keyheader_valuer&   s          r   __getitem__zHeaders.__getitem__  s     ++DMM: 04zz
 
+:|^+ .
 
 99U##sm
s   +Bc                    |j                  | j                  xs d      }|j                  | j                  xs d      }|j                         }t        | j                        D cg c]  \  }\  }}}||k(  s| }	}}}t        |	dd       D ]  }| j                  |=  |	r|	d   }|||f| j                  |<   y| j                  j                  |||f       yc c}}}w )zs
        Set the header `key` to `value`, removing any duplicate entries.
        Retains insertion order.
        rI   r9   Nr   )r#   rB   r(   	enumerater;   reversedr?   )
rC   rL   r   set_key	set_value
lookup_keyidxrP   rf   found_indexess
             r   __setitem__zHeaders.__setitem__  s    
 **T^^6w7LL!:7;	]]_
 .7tzz-B
 
)C)!XqhR\F\C
 
 M!"-. 	 C

3	  "C&
I>DJJsOJJw
I>?
s   (C:Cc                 :   |j                         j                  | j                        }t        | j                        D cg c]  \  }\  }}}|j                         |k(  s|! }}}}|st        |      t        |      D ]  }| j                  |=  yc c}}}w )z*
        Remove the header `key`.
        N)r(   r#   r   rx   r;   r_   ry   )rC   rL   del_keyr}   rP   rf   pop_indexess          r   __delitem__zHeaders.__delitem__.  s     ))+$$T]]3 .7tzz-B
 
)C)!XqhnnFVZaFaC
 
 3-K( 	 C

3	 
s   B#Bc                     |j                         j                  | j                        }|| j                  D cg c]  \  }}}|
 c}}v S c c}}w r   )r(   r#   r   r;   )rC   rL   rt   rP   s       r   __contains__zHeaders.__contains__>  s?    YY[''6
4::>iaac>>>>s   Ac                 4    t        | j                               S r   )iterrR   ro   s    r   __iter__zHeaders.__iter__B  s    DIIK  r    c                 ,    t        | j                        S r   )lenr;   ro   s    r   __len__zHeaders.__len__E  s    4::r    otherc                    	 t        |      }| j                  D cg c]
  \  }}}||f }}}}|j                  D cg c]
  \  }}}||f }}}}t        |      t        |      k(  S # t        $ r Y yw xY wc c}}}w c c}}}w )NF)r   
ValueErrorr;   sorted)rC   r   other_headersrP   rL   r   	self_list
other_lists           r   __eq__zHeaders.__eq__H  s    	#ENM 8<zzBBmaec5\B	B8E8K8KLL}q#usElL
Li F:$666  		 CLs   A* A9 B *	A65A6c                 "   | j                   j                  }d}| j                  dk7  rd| j                  }t        t	        | j                                     }t        |      }t        |      t        |      k(  }|r
| d|| dS | d|| dS )N r.   z, encoding=())	__class____name__r   r<   r,   r\   dictr   )rC   
class_nameencoding_stras_listas_dictno_duplicate_keyss         r   __repr__zHeaders.__repr__R  s    ^^,,
==G#((9:L243C3C3EFGw-LCL8 \7+l^1==Qwk,q99r    )NNr   )F)r   r   )&r   
__module____qualname____doc__r   HeaderTypesr   rG   propertyr   setterr   r   r/   rJ   r	   rR   r   rU   r   r&   r\   r   r`   boolrj   rm   rp   rv   r   r   r   r   r   intr   r   r    r    r   r   r   d   s    *."&%"+&%" 3-%" 
	%"N #  0 __c d   FT%u-. F FThsm T	$
3 	$#yc* #
T%S/2 
s S C C t S	 ,)h{3 )t )5s s &@s @3 @4 @, s  t   ? ? ?!(3- ! 7C 7D 7:# :r    )rI   r   )sysversion_infocollections.abcr   r=   typingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r/   r   r   r$   r)   r,   r   r1   r3   r   r   r    r   <module>r      s  
  i5	 	 		 	 	 J   C#E8E?"#U38_U5%< !U3:!G%U
# Gs G GG3 Gv G& G %&;< E&&.)*eFFN#$ #9e99 sm9 	9 -%U
"3 -x} -X] -{:nS#X& {:r    