Ë
    ¶�/jöð  ã            #       ó  — U d Z 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ZddlZddl	Z	ddl
Z
ddlZddlmZmZmZmZmZmZ 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Z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"Z"d„ Z&d„ Z'ejP                  jS                  d«      Z*e*rUddl+Z,ddl-Z-e,j\                  Z/e,j`                  jb                  jd                  Z3 G d„ de/«      Z4 G d	„ d
e-jj                  «      Z6n
 G d„ d
«      Z6e*Z7dejp                  e9z  dejt                  de9dej                  fd„Z;e;Z<eejp                  e9z  ejt                  e9gej                  f   e=d<    G d„ dej|                  j~                  «      Z@ G d„ dej|                  j‚                  «      ZB G d„ dej|                  j~                  «      ZC G d„ dej|                  j~                  «      ZDejŠ                  jŒ                  ZFd„ ZGd„ ZHd„ ZId„ ZJd„ ZKd„ ZL	 d{d!„ZM	 d|dejp                  e9z  d"ejt                  d#edz  dej                  fd$„ZN	 	 d}dejp                  e9z  d"ejt                  d%e"jž                  d&ej                   j¢                  eRz  dz  d#edz  de"j¦                  fd'„ZTd(„ ZUd)ed*   dd*fd+„ZV G d,„ d-ej®                  «      ZXdd.ddd/d/dd0d dd dej²                  eXj´                  fd1ej¶                  j¸                  d2eRd3e]dz  d4e9d#eRdz  d5e9d6e^d7e^d8edz  d9eRd:e^d;eRdz  d<e^eRz  e"jž                  z  d)ed*   d=e9d>eXdej¶                  j¸                  f"d?„Z_d@ejÀ                  jÂ                  dAebdebfdB„Zcd@ejÀ                  jÂ                  dCeRdDebddfdE„Zd	 	 	 	 	 	 	 	 	 d~d1ej¶                  j¸                  d2eRdFeRd3e]dz  d4e9d#eRdz  d5e9d6e^d7e^d<e^eRz  e"jž                  z  d:e^dGejÀ                  jÊ                  dz  dej¶                  j¸                  fdH„ZfdI„ ZgdJ„ Zh	 d|dKedLej¶                  j¸                  ebz  dMedNe]dz  dee9e]f   f
dO„Zi	 	 	 	 	 	 	 	 	 	 ddKedMedz  dNe]dz  dPe^d6e^dQeej                   j¢                  ejÔ                  jÖ                  f   dz  dRebdz  d7e^dSe^dTe^dUej¶                  j¸                  dz  defdV„Zl	 	 	 	 	 	 	 	 	 	 d€d1ej¶                  j¸                  d2eRd3e]dz  d4e9d#eRdz  d5e9dPe^d6e^d7e^dSe^dKedz  dTe^dej¶                  j¸                  fdX„Zm	 	 	 	 	 	 	 	 	 	 d�d1ej¶                  j¸                  d2eRd3e]dz  d4e9d#eRdz  d5e9dPe^d6e^d7e^dYedz  dZedz  dTe^deej¶                  j¸                  e^f   fd[„Znd\„ Zod]„ Zp	 d|dKedLej¶                  j¸                  ebz  dNe]dz  dee9e]f   fd^„Zq	 	 	 	 	 d‚dKedNe]dz  d6e^dQeej                   j¢                  ejÔ                  jÖ                  f   dz  dRebdz  d7e^deej¶                  j¸                  e]f   fd_„Zrd`„ Zs	 	 	 	 	 	 	 dƒd1ej¶                  j¸                  d2eRd3e]dz  d4e9d#eRdz  d5e9d6e^d7e^dKedz  dej¶                  j¸                  fda„Ztdb„ Zu	 	 	 d„d<e^eRz  dce^ddeveR   dz  de"jž                  fde„Zwd&eRdz  d<e^eRz  de"jž                  fdf„Zx	 	 	 	 	 	 	 	 	 	 d…d1ej¶                  j¸                  d2eRd3e]dz  d4e9d#eRdz  d5e9d6e^d7e^dKe"j¦                  dz  d%e"jž                  dz  d&eRdz  d<e^eRz  dej¶                  j¸                  fdg„Zy	 	 	 	 	 	 	 	 	 	 d†d1ej¶                  j¸                  d2eRd3e]dz  d4e9d#eRdz  d5e9d6e^d7e^dGejÀ                  jÊ                  dz  d<e^eRz  dheRdz  d&eRdz  dej¶                  j¸                  fdi„Z` G dj„ dkej®                  «      Zzdlejö                  jø                  dmej                  e"j¦                  z  dUej¶                  j¸                  dne9dz  d3e]dz  dNe]dz  defdo„Z}ejü                  jþ                  e�j                   �j                  ddWddd ddddd/ejÔ                  �j                  fd2eRdpej                   j¢                  eRz  dqejü                  �j                  eRz  dre�j                   �j                  eRz  d3e]dz  d4e9dQeej                   j¢                  ejÔ                  jÖ                  f   dz  dsej                   j¢                  eRz  dz  dte^due]dz  d#eRdz  d5e9dne9dve^dwej                   j¢                  eRz  def dx„ZEddWddddez�j
                  fd2eRdlejö                  jø                  dUej¶                  j¸                  dz  d4e9d3e]dz  due]dz  d#eRdz  d5e9dyezddfdz„Z†y# e#$ r
 ddl$m%Z" Y �	Œ	w xY w)‡zTalk to a DNS server.é    N)ÚAnyÚCallableÚDictÚOptionalÚTupleÚcastc                 óx   — | €y | t        j                   «       z
  }|dk  rt        j                  j                  ‚|S )Nç        )ÚtimeÚdnsÚ	exceptionÚTimeout)Ú
expirationÚtimeouts     úKC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\dns/query.pyÚ
_remainingr   5   s7   € ØÐØØœ4Ÿ9™9›;Ñ&€GØ�#‚~Ü�m‰m×#Ñ#Ð#Ø€Nó    c                 óJ   — |€y t        t        j                  «       | z   |«      S ©N)Úminr   )r   r   s     r   Ú_expiration_for_this_attemptr   >   s#   € ØÐØÜŒt�y‰y‹{˜WÑ$ jÓ1Ð1r   Údohc                   ó2   ‡ — e Zd Zˆ fd„Z	 dd„Z	 dd„Zˆ xZS )Ú_NetworkBackendc                 óZ   •— t         ‰| �  «        || _        || _        || _        || _        y r   )ÚsuperÚ__init__Ú_local_portÚ	_resolverÚ_bootstrap_addressÚ_family)ÚselfÚresolverÚ
local_portÚbootstrap_addressÚfamilyÚ	__class__s        €r   r   z_NetworkBackend.__init__M   s,   ø€ Ü‰GÑÔØ)ˆDÔØ%ˆDŒNØ&7ˆDÔ#Ø!ˆD�Lr   c                 ót  — g }t        |«      \  }}t        j                  j                  |«      r|j	                  |«       nŽ| j
                  �|j	                  | j
                  «       nft        |«      }| j                  }	|rt        j                  j                  |«      }	| j                  j                  ||	|¬«      }
|
j                  «       }|D ]Æ  }t        j                  j                  |«      }|€| j                  dk7  r1|€d}t        j                  j                  || j                  f|«      }nd }	 t        |t        j                   |«      }t#        d|«      }t%        |t        j                  j                  ||f|«      |«       t'        |«      c S  t*        j,                  ‚# t(        $ r Y Œäw xY w)N)r&   Úlifetimer   z0.0.0.0g       @)Ú_compute_timesr   ÚinetÚ
is_addressÚappendr    r   r!   Úaf_for_addressr   Úresolve_nameÚ	addressesr   Úlow_level_address_tupleÚmake_socketÚsocketÚSOCK_STREAMr   Ú_connectÚ_CoreSyncStreamÚ	ExceptionÚhttpcoreÚConnectError)r"   ÚhostÚportr   Úlocal_addressÚsocket_optionsr0   Ú_r   r&   ÚanswersÚaddressÚafÚsourceÚsockÚattempt_expirations                   r   Úconnect_tcpz_NetworkBackend.connect_tcpT   s“  € ð ˆIÜ*¨7Ó3‰MˆAˆzÜ�x‰x×"Ñ" 4Ô(Ø× Ñ  Õ&Ø×(Ñ(Ð4Ø× Ñ  ×!8Ñ!8Õ9ä$ ZÓ0�ØŸ™�Ù Ü ŸX™X×4Ñ4°]ÓC�FØŸ.™.×5Ñ5Ø °'ð 6ó �ð $×-Ñ-Ó/�	Û$�Ü—X‘X×,Ñ,¨WÓ5�Ø Ð,°×0@Ñ0@ÀAÒ0EØ$Ð,Ø(1˜Ü ŸX™X×=Ñ=Ø&¨×(8Ñ(8Ð9¸2ó‘Fð "�Fð
Ü& r¬6×+=Ñ+=¸vÓF�DÜ)EÀcÈ:Ó)VÐ&ÜØÜŸ™×8Ñ8¸'À4¸È"ÓMØ*ôô
 +¨4Ó0Ò0ð% %ô* ×'Ñ'Ð'øô !ò Ùðús   Ä9AF+Æ+	F7Æ6F7c                 ó   — t         ‚r   ©ÚNotImplementedError)r"   Úpathr   r=   s       r   Úconnect_unix_socketz#_NetworkBackend.connect_unix_socket}   s
   € ô &Ð%r   )NNN©NN)Ú__name__Ú
__module__Ú__qualname__r   rE   rJ   Ú__classcell__©r'   s   @r   r   r   L   s   ø„ ô	"ð PTó'	(ðT 6:÷	&r   r   c                   ó>   ‡ — e Zd Zdddej                  dœˆ fd„
Zˆ xZS )Ú_HTTPTransportr   N©r$   r%   r#   r&   c                ó¢   •— |€ |€dd l }|j                  j                  «       }t        ‰| �  |i |¤Ž t        ||||«      | j                  _        y ©Nr   )Údns.resolverr#   ÚResolverr   r   r   Ú_poolÚ_network_backend)	r"   r$   r%   r#   r&   ÚargsÚkwargsr   r'   s	           €r   r   z_HTTPTransport.__init__ƒ   sS   ø€ ð ÐÐ$5Ð$=ã#àŸ<™<×0Ñ0Ó2�Ü‰GÑ˜dÐ- fÒ-Ü*9Ø˜*Ð&7¸ó+ˆD�J‰JÕ'r   )rL   rM   rN   r3   Ú	AF_UNSPECr   rO   rP   s   @r   rR   rR   ‚   s!   ø„ ð Ø"ØØ×#Ñ#÷	ò 	r   rR   c                   ó8   — e Zd Zdddej                  dœd„Zd„ Zy)rR   r   NrS   c                 ó   — y r   © )r"   r$   r%   r#   r&   rZ   r[   s          r   r   z_HTTPTransport.__init__™   s   € ð r   c                 ó   — t         ‚r   rG   )r"   r:   r;   r   r<   s        r   rE   z_HTTPTransport.connect_tcp¤   ó   € Ü%Ð%r   )rL   rM   rN   r3   r\   r   rE   r_   r   r   rR   rR   ˜   s    „ ð Ø"ØØ×#Ñ#ô		ó	&r   rA   ÚkindÚprotoÚreturnc                 ó0   — t        j                   | ||«      S r   )r3   )rA   rb   rc   s      r   Údefault_socket_factoryrf   «   s   € ô
 �=‰=˜˜T 5Ó)Ð)r   Úsocket_factoryc                   ó   — e Zd ZdZy)ÚUnexpectedSourcez=A DNS query response came from an unexpected address or port.N©rL   rM   rN   Ú__doc__r_   r   r   ri   ri   º   s   „ ÚGr   ri   c                   ó   — e Zd ZdZy)ÚBadResponsez<A DNS query response does not respond to the question asked.Nrj   r_   r   r   rm   rm   ¾   s   „ ÚFr   rm   c                   ó   — e Zd ZdZy)ÚNoDOHzMDNS over HTTPS (DOH) was requested but the httpx module is not
    available.Nrj   r_   r   r   ro   ro   Â   ó   „ òr   ro   c                   ó   — e Zd ZdZy)ÚNoDOQzNDNS over QUIC (DOQ) was requested but the aioquic module is not
    available.Nrj   r_   r   r   rr   rr   Ç   rp   r   rr   c                 óD   — t        j                   «       }| €|d fS ||| z   fS r   )r   )r   Únows     r   r*   r*   Ð   s+   € Ü
�)‰)‹+€CØ€Ø�Tˆ{Ðà�S˜7‘]Ð#Ð#r   c                 ó  — |r.t        | t        j                  «      r| j                  «       dkD  ryt	        j
                  «       5 }d}|r|t        j                  z  }|r|t        j                  z  }|r|j                  | |«       |€d }n6|t        j                  «       z
  }|dk  rt        j                  j                  ‚|j                  |«      st        j                  j                  ‚	 d d d «       y # 1 sw Y   y xY w)Nr   Tr
   )Ú
isinstanceÚsslÚ	SSLSocketÚpendingÚ	selectorsÚDefaultSelectorÚ
EVENT_READÚEVENT_WRITEÚregisterr   r   r   r   Úselect)ÚfdÚreadableÚwritabler>   r   ÚselÚeventsr   s           r   Ú	_wait_forr…   Ø   sÍ   € ñ ”J˜r¤3§=¡=Ô1°b·j±j³lÀQÒ6FØÜ	×	"Ñ	"Ô	$¨ØˆÙØ”i×*Ñ*Ñ*ˆFÙØ”i×+Ñ+Ñ+ˆFÙØ�L‰L˜˜VÔ$ØÐØ‰Gà ¤4§9¡9£;Ñ.ˆGØ˜#Š~Ü—m‘m×+Ñ+Ð+Ø�z‰z˜'Ô"Ü—-‘-×'Ñ'Ð'ð #÷ 
%×	$Ñ	$ús   ÁB'C6Ã6C?c                 ó"   — t        | ddd|«       y )NTF©r…   ©Úsr   s     r   Ú_wait_for_readablerŠ   ô   s   € Üˆa��u˜d JÕ/r   c                 ó"   — t        | ddd|«       y )NFTr‡   rˆ   s     r   Ú_wait_for_writablerŒ   ø   s   € Üˆa�˜˜d JÕ/r   c                 óú   — 	 t         j                  j                  | |d   «      }t         j                  j                  | |d   «      }||k(  xr |dd  |dd  k(  S # t         j                  j                  $ r Y yw xY w)Nr   Fé   )r   r+   Ú	inet_ptonr   ÚSyntaxError)rA   Úa1Úa2Ún1Ún2s        r   Ú_addresses_equalr•   ü   s{   € ðÜ�X‰X×Ñ  B q¡EÓ*ˆÜ�X‰X×Ñ  B q¡EÓ*ˆð �‰8Ò(˜˜1˜2˜ " Q R &Ñ(Ð(øô �=‰=×$Ñ$ò Ùðús   ‚AA ÁA:Á9A:c                 ó¦   — |syt        | ||«      s-t        j                  j                  |d   «      r|dd  |dd  k(  ry|ryt	        d|› d|› �«      ‚)NTr   rŽ   Fzgot a response from z instead of )r•   r   r+   Úis_multicastri   )rA   Úfrom_addressÚdestinationÚignore_unexpecteds       r   Ú_matches_destinationr›     sh   € ñ ØÜ˜˜L¨+Ô6Ü�‰×Ñ˜k¨!™nÔ-°,¸q¸rÐ2BÀkÐRSÐRTÀoÒ2UàÙ	ØÜ
Ø
˜|˜n¨L¸[¸MÐJóð r   Tc                 óî  — d }d }	 t         j                  j                  | «      }| }|r3t         j                  j                  |«      }|r||k7  rt	        d«      ‚|}|r"|s 	 t         j                  j                  |«      }|r"t         j                  j                  ||f|«      }|r"t         j                  j                  ||f|«      }|||fS # t        $ r |r‚ Y Œ´w xY w# t        $ r t	        d«      ‚w xY w)Nz5different address families for source and destinationz3source_port specified but address family is unknown)r   r+   r.   r7   Ú
ValueErrorÚ
any_for_afr1   )Úwherer;   rB   Úsource_portÚwhere_must_be_addressrA   r™   Úsafs           r   Ú_destination_and_sourcer£     s
  € ð
 
€BØ€KðÜ�X‰X×$Ñ$ UÓ+ˆØˆñ
 Ü�h‰h×%Ñ% fÓ-ˆÙà�bŠyÜ ØKóð ð ˆBÙ™6ð	TÜ—X‘X×(Ñ(¨Ó,ˆFñ Ü—h‘h×6Ñ6¸ÀTÐ7JÈBÓOˆÙÜ—‘×1Ñ1°6¸;Ð2GÈÓLˆØ�˜VÐ$Ð$øô? ò Ù Øñ !ðûô, ò 	TäÐRÓSÐSð	Tús   †!C Á!C ÃCÃCÃC4ÚtyperB   c                 ó¦   — t        | |d«      }	 |j                  d«       |�|j                  |«       |S # t        $ r |j	                  «        ‚ w xY w)aQ  Make a socket.

    This function uses the module's ``socket_factory`` to make a socket of the
    specified address family and type.

    *af*, a ``socket.AddressFamily`` or ``int`` is the address family, either
    ``socket.AF_INET`` or ``socket.AF_INET6``.

    *type*, a ``socket.SocketKind`` is the type of socket, e.g. ``socket.SOCK_DGRAM``,
    a datagram socket, or ``socket.SOCK_STREAM``, a stream socket.  Note that the
    ``proto`` attribute of a socket is always zero with this API, so a datagram socket
    will always be a UDP socket, and a stream socket will always be a TCP socket.

    *source* is the source address and port to bind to, if any.  The default is
    ``None`` which will bind to the wildcard address and a randomly chosen port.
    If not ``None``, it should be a (low-level) address tuple appropriate for *af*.
    r   F)rg   ÚsetblockingÚbindr7   Úclose)rA   r¤   rB   r‰   s       r   r2   r2   D  sT   € ô, 	�r˜4 Ó#€AðØ	�‰�eÔØÐØ�F‰F�6ŒNØˆøÜò Ø	�‰Œ	Øðús	   �%5 µAÚssl_contextÚserver_hostnamec                 ó¬   — t        | ||«      }t        |t        j                  j                  «      r|j                  «       }|j                  |d|¬«      S )aš  Make a socket.

    This function uses the module's ``socket_factory`` to make a socket of the
    specified address family and type.

    *af*, a ``socket.AddressFamily`` or ``int`` is the address family, either
    ``socket.AF_INET`` or ``socket.AF_INET6``.

    *type*, a ``socket.SocketKind`` is the type of socket, e.g. ``socket.SOCK_DGRAM``,
    a datagram socket, or ``socket.SOCK_STREAM``, a stream socket.  Note that the
    ``proto`` attribute of a socket is always zero with this API, so a datagram socket
    will always be a UDP socket, and a stream socket will always be a TCP socket.

    If *ssl_context* is not ``None``, then it specifies the SSL context to use,
    typically created with ``make_ssl_context()``.

    If *server_hostname* is not ``None``, then it is the hostname to use for server
    certificate validation.  A valid hostname must be supplied if *ssl_context*
    requires hostname checking.

    *source* is the source address and port to bind to, if any.  The default is
    ``None`` which will bind to the wildcard address and a randomly chosen port.
    If not ``None``, it should be a (low-level) address tuple appropriate for *af*.
    F)Údo_handshake_on_connectrª   )r2   rv   r   ÚnameÚNameÚto_textÚwrap_socket)rA   r¤   r©   rª   rB   rC   s         r   Úmake_ssl_socketr±   e  sS   € ô> �r˜4 Ó(€DÜ�/¤3§8¡8§=¡=Ô1Ø)×1Ñ1Ó3ˆà×"Ñ"ØØ %Ø'ð #ó ð r   c                 ó>   — |�t        | ||||«      S t        | ||«      S r   )r±   r2   )rA   r¤   rB   r©   rª   s        r   Ú_make_socketr³   �  s,   € ð ÐÜ˜r 4¨°oÀvÓNÐNä˜2˜t VÓ,Ð,r   r#   zdns.resolver.Resolverc                 óF   — | €dd l }|j                  j                  «       } | S rU   )rV   r#   rW   )r#   r   s     r   Ú_maybe_get_resolverrµ   �  s$   € ð Ðãà—<‘<×(Ñ(Ó*ˆØ€Or   c                   ó,   — e Zd ZdZdZdZdZdZdZdZ	dZ
y)ÚHTTPVersionz†Which version of HTTP should be used?

    DEFAULT will select the first version from the list [2, 1.1, 3] that
    is available.
    r   rŽ   é   é   N)rL   rM   rN   rk   ÚDEFAULTÚHTTP_1ÚH1ÚHTTP_2ÚH2ÚHTTP_3ÚH3r_   r   r   r·   r·   «  s,   „ ñð €GØ€FØ	
€BØ€FØ	
€BØ€FØ	
�Br   r·   é»  Fz
/dns-queryÚqrŸ   r   r;   r    Úone_rr_per_rrsetÚignore_trailingÚsessionrI   Úpostr%   Úverifyr&   Úhttp_versionc                 óH  — t        ||||d«      \  }}}|}|�Zt        j                  j                  |«      r;|t        j
                  k(  rd|› d|› |	› �}n|t        j                  k(  r
d|› d|› |	› �}i }|€’t        j                  j                  |«      }|j                  €t        d«      ‚t        j                  j                  |j                  «      r|j                  }|j                  |d<   |j                  �|j                  }|t        j                  k(  s|t        j                  k(  r±t         s«|€at#        |«      }j                  €J ‚|j%                  |j                  |«      }t'        j(                  t+        |j-                  «       «      «      }|r/t/        |t        j0                  j2                  «      st        d	«      ‚t5        | ||||||||||
|¬
«      S t         st6        ‚|r%t/        |t8        j:                  «      st        d«      ‚| j=                  «       }ddi}|t        j>                  t        j                  fv }|t        j@                  t        j                  fv }|€d}d}n
|d   }|d   }|rtC        jD                  |«      }n,tG        ||||||||¬«      }t9        j:                  ||||¬«      }|5 }|€J ‚|
r=|jI                  dtK        tM        |«      «      dœ«       |jO                  |||||¬«      }nLtQ        jR                  |«      jU                  d«      }|jW                  «       } |jY                  |||d| i|¬«      }ddd«       jZ                  dk  s|jZ                  dkD  r't        |› d|jZ                  › d|j\                  › �«      ‚t        j^                  ja                  |j\                  | jb                  | jd                  ||¬«      }!|jf                  ji                  «       |!_5        | jm                  |!«      stn        ‚|!S # 1 sw Y   ŒÈxY w)a	  Return the response obtained after sending a query via DNS-over-HTTPS.

    *q*, a ``dns.message.Message``, the query to send.

    *where*, a ``str``, the nameserver IP address or the full URL. If an IP address is
    given, the URL will be constructed using the following schema:
    https://<IP-address>:<port>/<path>.

    *timeout*, a ``float`` or ``None``, the number of seconds to wait before the query
    times out. If ``None``, the default, wait forever.

    *port*, a ``int``, the port to send the query to. The default is 443.

    *source*, a ``str`` containing an IPv4 or IPv6 address, specifying the source
    address.  The default is the wildcard address.

    *source_port*, an ``int``, the port from which to send the message. The default is
    0.

    *one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own RRset.

    *ignore_trailing*, a ``bool``. If ``True``, ignore trailing junk at end of the
    received message.

    *session*, an ``httpx.Client``.  If provided, the client session to use to send the
    queries.

    *path*, a ``str``. If *where* is an IP address, then *path* will be used to
    construct the URL to send the DNS query to.

    *post*, a ``bool``. If ``True``, the default, POST method will be used.

    *bootstrap_address*, a ``str``, the IP address to use to bypass resolution.

    *verify*, a ``bool`` or ``str``.  If a ``True``, then TLS certificate verification
    of the server is done using the default CA bundle; if ``False``, then no
    verification is done; if a `str` then it specifies the path to a certificate file or
    directory which will be used for verification.

    *resolver*, a ``dns.resolver.Resolver`` or ``None``, the resolver to use for
    resolution of hostnames in URLs.  If not specified, a new resolver with a default
    configuration will be used; note this is *not* the default resolver as that resolver
    might have been configured to use DoH causing a chicken-and-egg problem.  This
    parameter only has an effect if the HTTP library is httpx.

    *family*, an ``int``, the address family.  If socket.AF_UNSPEC (the default), both A
    and AAAA records will be retrieved.

    *http_version*, a ``dns.query.HTTPVersion``, indicating which HTTP version to use.

    Returns a ``dns.message.Message``.
    FNzhttps://Ú:z	https://[z]:zno hostname in URLÚsni_hostnamez8session parameter must be a dns.quic.SyncQuicConnection.)rÇ   rÆ   Ú
connectionz)session parameter must be an httpx.ClientÚacceptzapplication/dns-messager   rŽ   )r<   Úhttp1Úhttp2rÇ   r$   r%   r#   r&   )rÎ   rÏ   rÇ   Ú	transport)zcontent-typezcontent-length)ÚheadersÚcontentr   Ú
extensionsó   =r   )rÑ   r   ÚparamsrÓ   éÈ   é+  ú responded with status code z
Response body: ©ÚkeyringÚrequest_macrÃ   rÄ   )8r£   r   r+   r,   r3   ÚAF_INETÚAF_INET6ÚurllibÚparseÚurlparseÚhostnamer�   r;   r·   rÀ   rº   Úhave_dohrµ   r/   ÚrandomÚchoiceÚlistr0   rv   ÚquicÚSyncQuicConnectionÚ_http3ro   ÚhttpxÚClientÚto_wirer¼   r¾   Ú
contextlibÚnullcontextrR   ÚupdateÚstrÚlenrÆ   Úbase64Úurlsafe_b64encodeÚrstripÚdecodeÚgetÚstatus_coderÒ   ÚmessageÚ	from_wirerÚ   rÛ   ÚelapsedÚtotal_secondsr   Úis_responserm   )"rÂ   rŸ   r   r;   rB   r    rÃ   rÄ   rÅ   rI   rÆ   r%   rÇ   r#   r&   rÈ   rA   r>   Ú
the_sourceÚurlrÓ   Úparsedr?   ÚwirerÑ   Úh1Úh2r<   r$   ÚcmrÐ   ÚresponseÚtwireÚrs"                                     r   Úhttpsr  »  s  € ôN 2Øˆt�V˜[¨%óÑ€RˆˆJð €CØ	€~œ#Ÿ(™(×-Ñ-¨eÔ4Ø”—‘ÒØ˜U˜G 1 T F¨4¨&Ð1‰CØ”6—?‘?Ò"Ø˜e˜W B t f¨T¨FÐ3ˆCà€JØÐ ä—‘×&Ñ& sÓ+ˆØ�?‰?Ð"ÜÐ1Ó2Ð2Ü�8‰8×Ñ˜vŸ™Ô/Ø &§¡ÐØ)/¯©ˆJ�~Ñ&Ø�;‰;Ð"Ø—;‘;ˆDà”{—~‘~Ò%Øœ×+Ñ+Ò+µHàÐ$Ü*¨8Ó4ˆHØ—?‘?Ð.Ð.Ð.Ø×+Ñ+¨F¯O©O¸VÓDˆGÜ &§¡¬d°7×3DÑ3DÓ3FÓ.GÓ HÐÙœ:Ø”S—X‘X×0Ñ0ô
ô ÐWÓXÐXÜØØØØØØØØØØØØô
ð 	
õ ÜˆÙ”z '¬5¯<©<Ô8ÜÐDÓEÐEà�9‰9‹;€DØÐ2Ð3€Gà	œ+Ÿ.™.¬+×*=Ñ*=Ð>Ð	>€BØ	œ+Ÿ.™.¬+×*=Ñ*=Ð>Ð	>€Bð ÐØˆØ‰
à" 1™ˆØ ‘]ˆ
áÜ0:×0FÑ0FÀwÓ0O‰ä"Ø'ØØØØ!Ø/ØØô	
ˆ	ô �\‰\Ø˜B v¸ô
ˆñ 
ˆwð Ð"Ð"Ð"ÙØ�N‰Nà$=Ü&)¬#¨d«)£nñôð —|‘|ØØØØØ%ð $ó ‰Hô ×+Ñ+¨DÓ1×8Ñ8¸Ó>ˆDØ—K‘K“MˆEØ—{‘{ØØØØ˜u�~Ø%ð #ó ˆH÷+ 
ð> ×Ñ˜cÒ! X×%9Ñ%9¸CÒ%?ÜØˆgÐ1°(×2FÑ2FÐ1GØ × 0Ñ 0Ð1ð3ó
ð 	
ô 	�‰×ÑØ×ÑØ—	‘	Ø—M‘MØ)Ø'ð 	ó 	€Að ×Ñ×+Ñ+Ó-€A„FØ�=‰=˜ÔÜÐØ€H÷] 
ˆús   ËBPÐP!rÑ   r­   c                 óD   — | €t         ‚| D ]  \  }}||k(  sŒ|c S  t         ‚r   )ÚKeyError)rÑ   r­   ÚheaderÚvalues       r   Ú_find_headerr  Š  s-   € Ø€ÜˆÛ ‰ˆ�Ø�T‹>ØŠLð !ô €Nr   Úpeerrÿ   c                 ó
  — t        | d«      }|€t        d«      ‚t        |«      }|dk  rt        d«      ‚|dk  s|dkD  r6d}t        |«      dkD  r	 d|j	                  «       z   }t        |› d	|› |› �«      ‚y # t
        $ r Y Œw xY w)
Ns   :statuszno :status header in responser   zstatus is negativerÖ   r×   Ú z: rØ   )r  r�   Úintrð   rô   r7   r�   )rÑ   r  rÿ   r
  ÚstatusÚerrors         r   Ú_check_statusr  “  s£   € Ü˜ *Ó-€EØ€}ÜÐ9Ó:Ð:Ü�‹Z€FØ�‚zÜÐ.Ó/Ð/Ø�‚|�v ’|ØˆÜˆt‹9�qŠ=ðØ˜tŸ{™{›}Ñ,�ô ˜D˜6Ð!=¸f¸XÀeÀWÐMÓNÐNð $øô
 ò Ùðús   ÁA6 Á6	BÂBrý   rÌ   c                 óÊ  — t         j                  j                  st        d«      ‚t        j
                  j                  |«      }|j                  }|€J ‚|j                  �|j                  }d| _	        | j                  «       }|rt        j                  d «      }n$t         j                  j                  |	|d¬«      }|}|5  |r|}nj                  ||||«      }t        |«      \  }}|j!                  |«      5 }|j#                  |||
«       |j%                  t'        |«      «      }t)        |j+                  «       ||«       d d d «       t-        j,                  «       }d d d «       t         j.                  j1                  || j2                  | j4                  ||¬«      }t7        z
  d«      |_        | j9                  |«      st:        ‚|S # 1 sw Y   ŒŠxY w# 1 sw Y   ŒzxY w)Nz DNS-over-HTTP3 is not available.r   T)Úverify_modeÚserver_nameÚh3rÙ   r
   )r   ræ   Ú	have_quicro   rÞ   rß   rà   rá   r;   Úidrë   rì   rí   ÚSyncQuicManagerÚconnectr*   Úmake_streamÚsend_h3Úreceiver   r  rÑ   r   r÷   rø   rÚ   rÛ   Úmaxrû   rm   )rÂ   rŸ   rý   r   r;   rB   r    rÃ   rÄ   rÇ   rÆ   rÌ   Ú	url_partsrá   rÿ   ÚmanagerÚthe_managerÚthe_connectionÚstartr   ÚstreamÚfinishr  s                          r   rè   rè   ¤  s©  € ô �8‰8×ÒÜÐ6Ó7Ð7ä—‘×%Ñ% cÓ*€IØ×!Ñ!€HØÐÐÐØ‡~�~Ð!Ø�~‰~ˆà€A„DØ�9‰9‹;€Dñ Ü5?×5KÑ5KÈDÓ5Q‰ä—(‘(×*Ñ*Ø¨H¸ð +ó 
ˆð ˆâ	ÙØ'‰Nà(×0Ñ0Ø�t˜V [óˆNô -¨WÓ5Ñˆ�
Ø×'Ñ'¨Ô0°FØ�N‰N˜3  dÔ+Ø—>‘>¤*¨ZÓ"8Ó9ˆDÜ˜&Ÿ.™.Ó*¨E°4Ô8÷ 1ô —‘“ˆ÷ 
ô 	�‰×ÑØØ—	‘	Ø—M‘MØ)Ø'ð 	ó 	€Aô �˜%‘ Ó%€A„FØ�=‰=˜ÔÜÐØ€H÷ 1Ð0ú÷ 
ˆús%   Ã9GÃ;A	GÅGÇG	ÇGÇG"c                 ó`   — 	 	 | j                  |«      S # t        $ r t        | |«       Y nw xY wŒ.)z‹Reads a datagram from the socket.
    A Timeout exception will be raised if the operation is not completed
    by the expiration time.
    )ÚrecvfromÚBlockingIOErrorrŠ   )rC   Úmax_sizer   s      r   Ú	_udp_recvr*  á  s9   € ð
 ð	1Ø—=‘= Ó*Ð*øÜò 	1Ü˜t ZÖ0ð	1úð s   ƒ ”,«,c                 óˆ   — 	 	 |r| j                  ||«      S | j                  |«      S # t        $ r t        | |«       Y nw xY wŒB)z¦Sends the specified datagram to destination over the socket.
    A Timeout exception will be raised if the operation is not completed
    by the expiration time.
    )ÚsendtoÚsendr(  rŒ   )rC   Údatar™   r   s       r   Ú	_udp_sendr/  í  sL   € ð
 ð	1ÙØ—{‘{ 4¨Ó5Ð5à—y‘y “Ð&øÜò 	1Ü˜t ZÖ0ð	1úð s   ƒ( —( ¨A ¿A rC   Úwhatr™   r   c                 ó¶   — t        |t        j                  j                  «      r|j	                  «       }t        j
                  «       }t        | |||«      }||fS )aý  Send a DNS message to the specified UDP socket.

    *sock*, a ``socket``.

    *what*, a ``bytes`` or ``dns.message.Message``, the message to send.

    *destination*, a destination tuple appropriate for the address family
    of the socket, specifying where to send the query.

    *expiration*, a ``float`` or ``None``, the absolute time at which
    a timeout exception should be raised.  If ``None``, no timeout will
    occur.

    Returns an ``(int, float)`` tuple of bytes sent and the sent time.
    )rv   r   r÷   ÚMessagerë   r   r/  )rC   r0  r™   r   Ú	sent_timeÚns         r   Úsend_udpr5  ü  sH   € ô, �$œŸ™×+Ñ+Ô,Ø�|‰|‹~ˆÜ—	‘	“€IÜ�$˜˜k¨:Ó6€AØˆyˆ>Ðr   rš   rÚ   rÛ   Úraise_on_truncationÚignore_errorsÚqueryc                 óÆ  — d}	 t        | d|«      \  }}t        | j                  |||«      sŒ*t        j                  «       }	 t        j
                  j                  ||||||¬«      }|	r|
�|
j                  |«      sŒz|r||fS |||fS # t        j
                  j                  $ r.}|	r&|
�$|
j                  |j                  «       «      sY d}~ŒÊ‚ d}~wt        $ r |	rY ŒÛ‚ w xY w)a  Read a DNS message from a UDP socket.

    *sock*, a ``socket``.

    *destination*, a destination tuple appropriate for the address family
    of the socket, specifying where the message is expected to arrive from.
    When receiving a response, this would be where the associated query was
    sent.

    *expiration*, a ``float`` or ``None``, the absolute time at which
    a timeout exception should be raised.  If ``None``, no timeout will
    occur.

    *ignore_unexpected*, a ``bool``.  If ``True``, ignore responses from
    unexpected sources.

    *one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own
    RRset.

    *keyring*, a ``dict``, the keyring to use for TSIG.

    *request_mac*, a ``bytes`` or ``None``, the MAC of the request (for TSIG).

    *ignore_trailing*, a ``bool``.  If ``True``, ignore trailing
    junk at end of the received message.

    *raise_on_truncation*, a ``bool``.  If ``True``, raise an exception if
    the TC bit is set.

    Raises if the message is malformed, if network errors occur, of if
    there is a timeout.

    If *destination* is not ``None``, returns a ``(dns.message.Message, float)``
    tuple of the received message and the received time.

    If *destination* is ``None``, returns a
    ``(dns.message.Message, float, tuple)``
    tuple of the received message, the received time, and the address where
    the message arrived from.

    *ignore_errors*, a ``bool``.  If various format errors or response
    mismatches occur, ignore them and keep listening for a valid response.
    The default is ``False``.

    *query*, a ``dns.message.Message`` or ``None``.  If not ``None`` and
    *ignore_errors* is ``True``, check that the received message is a response
    to this query, and if not keep listening for a valid response.
    r   éÿÿ  )rÚ   rÛ   rÃ   rÄ   r6  N)
r*  r›   r&   r   r   r÷   rø   Ú	Truncatedrû   r7   )rC   r™   r   rš   rÃ   rÚ   rÛ   rÄ   r6  r7  r8  rÿ   r˜   Úreceived_timer  Úes                   r   Úreceive_udpr>    sý   € ð| €DØ
Ü(¨¨u°jÓAÑˆˆ|Ü#Ø�K‰K˜ {Ð4Eô
ð ÜŸ	™	›ˆð	Ü—‘×%Ñ%ØØØ'Ø!1Ø /Ø$7ð &ó ˆAñ6 ˜UÐ.°u×7HÑ7HÈÔ7KØÙØ�}Ð%Ð%à�} lÐ3Ð3øô1 �{‰{×$Ñ$ò 	ñ ØÐ%Ø×)Ñ)¨!¯)©)«+Ô6äàûÜò 	ÙÙàð		ús$   Á%B ÂC Â%#CÃCÃC ÃC é5   c                 óÆ  — | j                  «       }t        ||||d«      \  }}}t        |«      \  }}|
rt        j                  |
«      }n|€J ‚t        |t        j                  |«      }|5 }t        ||||«       t        |||||| j                  | j                  ||	|| «      \  }}||z
  |_        |s| j                  |«      st        ‚|cddd«       S # 1 sw Y   nxY w	 J ‚)aý  Return the response obtained after sending a query via UDP.

    *q*, a ``dns.message.Message``, the query to send

    *where*, a ``str`` containing an IPv4 or IPv6 address,  where
    to send the message.

    *timeout*, a ``float`` or ``None``, the number of seconds to wait before the
    query times out.  If ``None``, the default, wait forever.

    *port*, an ``int``, the port send the message to.  The default is 53.

    *source*, a ``str`` containing an IPv4 or IPv6 address, specifying
    the source address.  The default is the wildcard address.

    *source_port*, an ``int``, the port from which to send the message.
    The default is 0.

    *ignore_unexpected*, a ``bool``.  If ``True``, ignore responses from
    unexpected sources.

    *one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own
    RRset.

    *ignore_trailing*, a ``bool``.  If ``True``, ignore trailing
    junk at end of the received message.

    *raise_on_truncation*, a ``bool``.  If ``True``, raise an exception if
    the TC bit is set.

    *sock*, a ``socket.socket``, or ``None``, the socket to use for the
    query.  If ``None``, the default, a socket is created.  Note that
    if a socket is provided, it must be a nonblocking datagram socket,
    and the *source* and *source_port* are ignored.

    *ignore_errors*, a ``bool``.  If various format errors or response
    mismatches occur, ignore them and keep listening for a valid response.
    The default is ``False``.

    Returns a ``dns.message.Message``.
    TN)rë   r£   r*   rì   rí   r2   r3   Ú
SOCK_DGRAMr5  r>  rÚ   Úmacr   rû   rm   )rÂ   rŸ   r   r;   rB   r    rš   rÃ   rÄ   r6  rC   r7  rÿ   rA   r™   Ú
begin_timer   r  r‰   r  r<  s                        r   ÚudprD  ƒ  s÷   € ðp �9‰9‹;€DÜ 7Øˆt�V˜[¨$ó!Ñ€Rˆ�fô  .¨gÓ6Ñ€Z�ÙÜ0:×0FÑ0FÀtÓ0L‰àˆ~Ðˆ~Ü˜œV×.Ñ.°Ó7ˆÙ	ˆqÜ��D˜+ zÔ2Ü(ØØØØØØ�I‰IØ�E‰EØØØØó
ÑˆˆMð  Ñ+ˆŒñ  §¡¨qÔ!1ÜÐØ÷) 
�Šúð, 	ðØs   Á+ACÃCÚudp_sockÚtcp_sockc                 ó¬   — 	 t        | ||||||||d|	|«      }|dfS # t        j                  j                  $ r t	        | ||||||||
«	      }|dfcY S w xY w)a|  Return the response to the query, trying UDP first and falling back
    to TCP if UDP results in a truncated response.

    *q*, a ``dns.message.Message``, the query to send

    *where*, a ``str`` containing an IPv4 or IPv6 address,  where to send the message.

    *timeout*, a ``float`` or ``None``, the number of seconds to wait before the query
    times out.  If ``None``, the default, wait forever.

    *port*, an ``int``, the port send the message to.  The default is 53.

    *source*, a ``str`` containing an IPv4 or IPv6 address, specifying the source
    address.  The default is the wildcard address.

    *source_port*, an ``int``, the port from which to send the message. The default is
    0.

    *ignore_unexpected*, a ``bool``.  If ``True``, ignore responses from unexpected
    sources.

    *one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own RRset.

    *ignore_trailing*, a ``bool``.  If ``True``, ignore trailing junk at end of the
    received message.

    *udp_sock*, a ``socket.socket``, or ``None``, the socket to use for the UDP query.
    If ``None``, the default, a socket is created.  Note that if a socket is provided,
    it must be a nonblocking datagram socket, and the *source* and *source_port* are
    ignored for the UDP query.

    *tcp_sock*, a ``socket.socket``, or ``None``, the connected socket to use for the
    TCP query.  If ``None``, the default, a socket is created.  Note that if a socket is
    provided, it must be a nonblocking connected stream socket, and *where*, *source*
    and *source_port* are ignored for the TCP query.

    *ignore_errors*, a ``bool``.  If various format errors or response mismatches occur
    while listening for UDP, ignore them and keep listening for a valid response. The
    default is ``False``.

    Returns a (``dns.message.Message``, tcp) tuple where tcp is ``True`` if and only if
    TCP was used.
    TF)rD  r   r÷   r;  Útcp)rÂ   rŸ   r   r;   rB   r    rš   rÃ   rÄ   rE  rF  r7  r  s                r   Úudp_with_fallbackrI  ß  sŽ   € ðr ÜØØØØØØØØØØØØó
ˆð ˜%Ð Ð øÜ�;‰;× Ñ ò  ÜØØØØØØØØØó

ˆð ˜$ÐÒð ús   ‚ œ4AÁAc                 ó   — d}|dkD  r;	 | j                  |«      }|dk(  rt        d«      ‚|t        |«      z  }||z  }|dkD  rŒ;|S # t        t        j
                  f$ r t        | |«       Y Œ/t        j                  $ r t        | |«       Y ŒOw xY w)zßRead the specified number of bytes from sock.  Keep trying until we
    either get the desired amount, or we hit EOF.
    A Timeout exception will be raised if the operation is not completed
    by the expiration time.
    r   r   ÚEOF)	ÚrecvÚEOFErrorrð   r(  rw   ÚSSLWantReadErrorrŠ   ÚSSLWantWriteErrorrŒ   )rC   Úcountr   r‰   r4  s        r   Ú	_net_readrQ  7  s˜   € ð 	€AØ
�!Š)ð		1Ø—	‘	˜%Ó ˆAØ�CŠxÜ˜u“oÐ%Ø”S˜“V‰OˆEØ�‰FˆAð �!‹)ð €Høô	  ¤×!5Ñ!5Ð6ò 	1Ü˜t ZÖ0Ü×$Ñ$ò 	1Ü˜t ZÖ0ð	1ús   ‰4A Á%BÁ,BÂBc                 óü   — d}t        |«      }||k  r	 || j                  ||d «      z  }||k  rŒyy# t        t        j                  f$ r t        | |«       Y Œ/t        j                  $ r t        | |«       Y ŒOw xY w)z‘Write the specified data to the socket.
    A Timeout exception will be raised if the operation is not completed
    by the expiration time.
    r   N)rð   r-  r(  rw   rO  rŒ   rN  rŠ   )rC   r.  r   ÚcurrentÚls        r   Ú
_net_writerU  L  s~   € ð
 €GÜˆD‹	€AØ
�AŠ+ð	1Ø�t—y‘y  g h Ó0Ñ0ˆGð �A�+øô  ¤×!6Ñ!6Ð7ò 	1Ü˜t ZÖ0Ü×#Ñ#ò 	1Ü˜t ZÖ0ð	1ús   ”3 ³%A;ÁA;Á:A;c                 ó  — t        |t        j                  j                  «      r|j	                  d¬«      }nt        |«      j                  dd«      |z   }t        j                  «       }t        | ||«       t        |«      |fS )a{  Send a DNS message to the specified TCP socket.

    *sock*, a ``socket``.

    *what*, a ``bytes`` or ``dns.message.Message``, the message to send.

    *expiration*, a ``float`` or ``None``, the absolute time at which
    a timeout exception should be raised.  If ``None``, no timeout will
    occur.

    Returns an ``(int, float)`` tuple of bytes sent and the sent time.
    T)Úprepend_lengthr¸   Úbig)	rv   r   r÷   r2  rë   rð   Úto_bytesr   rU  )rC   r0  r   Útcpmsgr3  s        r   Úsend_tcpr[  \  sk   € ô$ �$œŸ™×+Ñ+Ô,Ø—‘¨T�Ó2‰ô
 �T“×#Ñ# A uÓ-°Ñ4ˆÜ—	‘	“€IÜˆt�V˜ZÔ(Ü�‹K˜Ð#Ð#r   c                 óÞ   — t        | d|«      }t        j                  d|«      \  }t        | ||«      }t        j                  «       }	t        j
                  j                  |||||¬«      }
|
|	fS )aó  Read a DNS message from a TCP socket.

    *sock*, a ``socket``.

    *expiration*, a ``float`` or ``None``, the absolute time at which
    a timeout exception should be raised.  If ``None``, no timeout will
    occur.

    *one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own
    RRset.

    *keyring*, a ``dict``, the keyring to use for TSIG.

    *request_mac*, a ``bytes`` or ``None``, the MAC of the request (for TSIG).

    *ignore_trailing*, a ``bool``.  If ``True``, ignore trailing
    junk at end of the received message.

    Raises if the message is malformed, if network errors occur, of if
    there is a timeout.

    Returns a ``(dns.message.Message, float)`` tuple of the received message
    and the received time.
    r¸   ú!HrÙ   )rQ  ÚstructÚunpackr   r   r÷   rø   )rC   r   rÃ   rÚ   rÛ   rÄ   ÚldatarT  rÿ   r<  r  s              r   Úreceive_tcpra  z  ss   € ôB �d˜A˜zÓ*€EÜ�=‰=˜˜uÓ%�D€QÜ�T˜1˜jÓ)€DÜ—I‘I“K€MÜ�‰×ÑØØØØ)Ø'ð 	ó 	€Að ˆ}ÐÐr   c                 óP  — | j                  |«      }|dk(  ry |t        j                  t        j                  t        j                  fv r:t        | |«       | j                  t        j                  t        j                  «      }|dk7  rt        |t        j                  |«      «      ‚y rU   )Ú
connect_exÚerrnoÚEINPROGRESSÚEWOULDBLOCKÚEALREADYrŒ   Ú
getsockoptr3   Ú
SOL_SOCKETÚSO_ERRORÚOSErrorÚosÚstrerror)r‰   r@   r   Úerrs       r   r5   r5   ©  s   € Ø
�,‰,�wÓ
€CØ
ˆa‚xØØ
Œu× Ñ ¤%×"3Ñ"3´U·^±^ÐDÑDÜ˜1˜jÔ)Ø�l‰lœ6×,Ñ,¬f¯o©oÓ>ˆØ
ˆa‚xÜ�cœ2Ÿ;™; sÓ+Ó,Ð,ð r   c	           	      óÔ  — | j                  «       }	t        |«      \  }
}|rt        j                  |«      }n2t	        ||||d«      \  }}}|€J ‚t        |t        j                  |«      }|5 }|st        ||«       t        ||	|«       t        |||| j                  | j                  |«      \  }}||
z
  |_        | j                  |«      st        ‚|cddd«       S # 1 sw Y   nxY w	 J ‚)a¥  Return the response obtained after sending a query via TCP.

    *q*, a ``dns.message.Message``, the query to send

    *where*, a ``str`` containing an IPv4 or IPv6 address, where
    to send the message.

    *timeout*, a ``float`` or ``None``, the number of seconds to wait before the
    query times out.  If ``None``, the default, wait forever.

    *port*, an ``int``, the port send the message to.  The default is 53.

    *source*, a ``str`` containing an IPv4 or IPv6 address, specifying
    the source address.  The default is the wildcard address.

    *source_port*, an ``int``, the port from which to send the message.
    The default is 0.

    *one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own
    RRset.

    *ignore_trailing*, a ``bool``.  If ``True``, ignore trailing
    junk at end of the received message.

    *sock*, a ``socket.socket``, or ``None``, the connected socket to use for the
    query.  If ``None``, the default, a socket is created.  Note that
    if a socket is provided, it must be a nonblocking connected stream
    socket, and *where*, *port*, *source* and *source_port* are ignored.

    Returns a ``dns.message.Message``.
    TN)rë   r*   rì   rí   r£   r2   r3   r4   r5   r[  ra  rÚ   rB  r   rû   rm   )rÂ   rŸ   r   r;   rB   r    rÃ   rÄ   rC   rÿ   rC  r   r  rA   r™   r‰   r  r<  s                     r   rH  rH  ´  sí   € ðV �9‰9‹;€DÜ-¨gÓ6Ñ€Z�ÙÜ0:×0FÑ0FÀtÓ0L‰ä$;Ø�4˜ ¨dó%
Ñ!ˆˆ[˜&ð ˆ~Ðˆ~Ü˜œV×/Ñ/°Ó8ˆÙ	ˆqÙä�Q˜ ZÔ0Ü��D˜*Ô%Ü(ØˆzÐ+¨Q¯Y©Y¸¿¹¸ó
ÑˆˆMð  Ñ+ˆŒØ�}‰}˜QÔÜÐØ÷ 
�Šúð 	ðØs   Á+A&CÃC$c                 ó´   — 	 	 | j                  «        y # t        j                  $ r t        | |«       Y n$t        j                  $ r t        | |«       Y nw xY wŒXr   )Údo_handshakerw   rN  rŠ   rO  rŒ   rˆ   s     r   Ú_tls_handshakerr  ú  sS   € Ø
ð	.Ø�N‰NÔØøÜ×#Ñ#ò 	.Ü˜q *Ö-Ü×$Ñ$ò 	.Ü˜q *Ö-ð	.úð s   ƒ ”AµAÁAÚcheck_hostnameÚalpnsc                 ó  — t         j                  j                  | «      \  }}t        j                  ||¬«      }t        j
                  j                  |_        ||_        | du rt        j                  |_
        |�|j                  |«       |S )aQ  Make an SSL context

    If *verify* is ``True``, the default, then certificate verification will occur using
    the standard CA roots.  If *verify* is ``False``, then certificate verification will
    be disabled.  If *verify* is a string which is a valid pathname, then if the
    pathname is a regular file, the CA roots will be taken from the file, otherwise if
    the pathname is a directory roots will be taken from the directory.

    If *check_hostname* is ``True``, the default, then the hostname of the server must
    be specified when connecting and the server's certificate must authorize the
    hostname.  If ``False``, then hostname checking is disabled.

    *aplns* is ``None`` or a list of TLS ALPN (Application Layer Protocol Negotiation)
    strings to use in negotiation.  For DNS-over-TLS, the right value is `["dot"]`.
    )ÚcafileÚcapathF)r   Ú	_tls_utilÚ#convert_verify_to_cafile_and_capathrw   Úcreate_default_contextÚ
TLSVersionÚTLSv1_2Úminimum_versionrs  Ú	CERT_NONEr  Úset_alpn_protocols)rÇ   rs  rt  rv  rw  r©   s         r   Úmake_ssl_contextr€    sw   € ô( —]‘]×FÑFÀvÓN�N€FˆFÜ×,Ñ,°FÀ6ÔJ€Kô #&§.¡.×"8Ñ"8€KÔØ!/€KÔØ��Ü"%§-¡-ˆÔØÐØ×&Ñ& uÔ-ØÐr   c                 ó"   — t        || d udg«      S )NÚdot)r€  )rª   rÇ   s     r   Ú_make_dot_ssl_contextrƒ  '  s   € ô ˜F O¸4Ð$?À%ÀÓIÐIr   c                 ó  — |rt        | ||||||||«	      S | j                  «       }t        |«      \  }}t        ||||d«      \  }}}|€J ‚|	€t	        ||
dudg«      }	t        |t        j                  |	|
|¬«      5 }t        |||«       t        ||«       t        |||«       t        |||| j                  | j                  |«      \  }}||z
  |_        | j                  |«      st         ‚|cddd«       S # 1 sw Y   nxY w	 J ‚)ak  Return the response obtained after sending a query via TLS.

    *q*, a ``dns.message.Message``, the query to send

    *where*, a ``str`` containing an IPv4 or IPv6 address,  where
    to send the message.

    *timeout*, a ``float`` or ``None``, the number of seconds to wait before the
    query times out.  If ``None``, the default, wait forever.

    *port*, an ``int``, the port send the message to.  The default is 853.

    *source*, a ``str`` containing an IPv4 or IPv6 address, specifying
    the source address.  The default is the wildcard address.

    *source_port*, an ``int``, the port from which to send the message.
    The default is 0.

    *one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own
    RRset.

    *ignore_trailing*, a ``bool``.  If ``True``, ignore trailing
    junk at end of the received message.

    *sock*, an ``ssl.SSLSocket``, or ``None``, the socket to use for
    the query.  If ``None``, the default, a socket is created.  Note
    that if a socket is provided, it must be a nonblocking connected
    SSL stream socket, and *where*, *port*, *source*, *source_port*,
    and *ssl_context* are ignored.

    *ssl_context*, an ``ssl.SSLContext``, the context to use when establishing
    a TLS connection. If ``None``, the default, creates one with the default
    configuration.

    *server_hostname*, a ``str`` containing the server's hostname.  The
    default is ``None``, which means that no hostname is known, and if an
    SSL context is created, hostname checking will be disabled.

    *verify*, a ``bool`` or ``str``.  If a ``True``, then TLS certificate verification
    of the server is done using the default CA bundle; if ``False``, then no
    verification is done; if a `str` then it specifies the path to a certificate file or
    directory which will be used for verification.

    Returns a ``dns.message.Message``.

    TNr‚  )r©   rª   rB   )rH  rë   r*   r£   r€  r±   r3   r4   r5   rr  r[  ra  rÚ   rB  r   rû   rm   )rÂ   rŸ   r   r;   rB   r    rÃ   rÄ   rC   r©   rª   rÇ   rÿ   rC  r   rA   r™   r‰   r  r<  s                       r   Útlsr…  -  s:  € ñz ô ØØØØØØØØØó

ð 
	
ð �9‰9‹;€DÜ-¨gÓ6Ñ€Z�Ü 7Øˆt�V˜[¨$ó!Ñ€Rˆ�fð ˆ>Ðˆ>ØÐÜ& v¨ÀdÐ/JÈUÈGÓTˆä	Ø
Ü×ÑØØ'Øõ
ð 
Ü��K Ô,Ü�q˜*Ô%Ü��D˜*Ô%Ü(ØˆzÐ+¨Q¯Y©Y¸¿¹¸ó
ÑˆˆMð  Ñ+ˆŒØ�}‰}˜QÔÜÐØ÷!
÷ 
ò 
úð$ 	ðØs   Á;A0C5Ã5C>rá   c                 ó  — t         j                  j                  st        d«      ‚|�|
€|}
d| _        | j                  «       }|rt        j                  d«      }|}n#t         j                  j                  |	|
¬«      }|}|5  |sj                  ||||«      }t        |«      \  }}j                  |«      5 }|j                  |d«       |j                  t        |«      «      }ddd«       t        j                  «       }ddd«       t         j                   j#                  || j$                  | j&                  ||¬«      }t)        z
  d«      |_        | j+                  |«      st,        ‚|S # 1 sw Y   ŒŠxY w# 1 sw Y   ŒzxY w)a“  Return the response obtained after sending a query via DNS-over-QUIC.

    *q*, a ``dns.message.Message``, the query to send.

    *where*, a ``str``, the nameserver IP address.

    *timeout*, a ``float`` or ``None``, the number of seconds to wait before the query
    times out. If ``None``, the default, wait forever.

    *port*, a ``int``, the port to send the query to. The default is 853.

    *source*, a ``str`` containing an IPv4 or IPv6 address, specifying the source
    address.  The default is the wildcard address.

    *source_port*, an ``int``, the port from which to send the message. The default is
    0.

    *one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own RRset.

    *ignore_trailing*, a ``bool``. If ``True``, ignore trailing junk at end of the
    received message.

    *connection*, a ``dns.quic.SyncQuicConnection``.  If provided, the connection to use
    to send the query.

    *verify*, a ``bool`` or ``str``.  If a ``True``, then TLS certificate verification
    of the server is done using the default CA bundle; if ``False``, then no
    verification is done; if a `str` then it specifies the path to a certificate file or
    directory which will be used for verification.

    *hostname*, a ``str`` containing the server's hostname or ``None``.  The default is
    ``None``, which means that no hostname is known, and if an SSL context is created,
    hostname checking will be disabled.  This value is ignored if *url* is not
    ``None``.

    *server_hostname*, a ``str`` or ``None``.  This item is for backwards compatibility
    only, and has the same meaning as *hostname*.

    Returns a ``dns.message.Message``.
    zDNS-over-QUIC is not available.Nr   )r  r  TrÙ   r
   )r   ræ   r  rr   r  rë   rì   rí   r  r  r*   r  r-  r  r   r   r÷   rø   rÚ   rÛ   r  rû   rm   )rÂ   rŸ   r   r;   rB   r    rÃ   rÄ   rÌ   rÇ   rá   rª   rÿ   r   r"  r!  r#  r   r$  r%  r  s                        r   ræ   ræ   ™  se  € ôn �8‰8×ÒÜÐ5Ó6Ð6àÐ" xÐ'7Ø"ˆà€A„DØ�9‰9‹;€Dñ Ü5?×5KÑ5KÈDÓ5QˆØ#‰ä—(‘(×*Ñ*Ø¨Hð +ó 
ˆð ˆâ	ÙØ(×0Ñ0Ø�t˜V [óˆNô -¨WÓ5Ñˆ�
Ø×'Ñ'¨Ô0°FØ�K‰K˜˜dÔ#Ø—>‘>¤*¨ZÓ"8Ó9ˆD÷ 1ô —‘“ˆ÷ 
ô 	�‰×ÑØØ—	‘	Ø—M‘MØ)Ø'ð 	ó 	€Aô �˜%‘ Ó%€A„FØ�=‰=˜ÔÜÐØ€H÷ 1Ð0ú÷ 
ˆús$   Â6E:Â8-E.Ã%E:Å.E7	Å3E:Å:Fc                   ó   — e Zd ZdZdZdZdZy)ÚUDPModea  How should UDP be used in an IXFR from :py:func:`inbound_xfr()`?

    NEVER means "never use UDP; always use TCP"
    TRY_FIRST means "try to use UDP but fall back to TCP if needed"
    ONLY means "raise ``dns.xfr.UseTCP`` if trying UDP does not succeed"
    r   rŽ   r¸   N)rL   rM   rN   rk   ÚNEVERÚ	TRY_FIRSTÚONLYr_   r   r   rˆ  rˆ  ú  s   „ ñð €EØ€IØ�Dr   rˆ  Útxn_managerr‰   Úserialc              #   ó  K  — |j                   d   j                  }|t        j                  j                  k(  }| j                  «       }|j                  «       }	t        |t        j                  «      xr |j                  t        j                  k(  }
|
rt        ||	d|«       n/t        j                  dt        |	«      «      |	z   }t        |||«       t        j                   j#                  | |||
«      5 }d}d}d}|s¾t%        |«      \  }}|�|�||kD  r|}|
rt'        |d|«      \  }}n2t)        |d|«      }t        j*                  d|«      \  }t)        |||«      }t        j,                  j/                  ||j0                  |j2                  d|||
 |¬«      }|j5                  |«      }|–— |j6                  }|sŒ¾|j0                  r-|�+|j8                  st        j:                  j=                  d	«      ‚ddd«       y# 1 sw Y   yxY w­w)
z'Given a socket, does the zone transfer.r   Nr]  Fr:  r¸   T)rÚ   rÛ   ÚxfrÚoriginÚtsig_ctxÚmultirÃ   zmissing TSIG)ÚquestionÚrdtyper   Ú	rdatatypeÚIXFRÚfrom_wire_originrë   rv   r3   r¤   rA  r/  r^  Úpackrð   rU  r�  ÚInboundr*   r*  rQ  r_  r÷   rø   rÚ   rB  Úprocess_messager‘  Úhad_tsigr   Ú	FormError)rŒ  r‰   r8  r�  r   r   r”  Úis_ixfrr�  rÿ   Úis_udprZ  ÚinboundÚdoner‘  r  r>   ÚmexpirationÚrwirer`  rT  s                        r   Ú_inbound_xfrr£    sÊ  è ø€ ð �^‰^˜AÑ×%Ñ%€FØœŸ™×*Ñ*Ñ*€GØ×)Ñ)Ó+€FØ�=‰=‹?€DÜ˜œ6Ÿ=™=Ó)ÒI¨a¯f©f¼×8IÑ8IÑ.I€FÙÜ�!�T˜4 Õ,ä—‘˜T¤3 t£9Ó-°Ñ4ˆÜ�1�f˜jÔ)Ü	�‰�‰˜ f¨f°fÔ	=ÀØˆØˆØ(,ˆÙÜ-¨gÓ6ÑˆQ�ØÐ"ØÐ&¨;¸Ò+Cà(�ÙÜ& q¨%°Ó=‘
�™ä! ! Q¨Ó4�Ü—}‘} T¨5Ó1‘�Ü! ! Q¨Ó4�Ü—‘×%Ñ%ØØŸ™Ø!ŸI™IØØØ!Ø!�zØ!(ð &ó 	ˆAð ×*Ñ*¨1Ó-ˆDØŠGØ—z‘zˆHò1 ð2 �=Š=˜Q˜]°1·:²:Ü—-‘-×)Ñ)¨.Ó9Ð9÷= 
>×	=Ñ	=üs%   ‚C2H	Ã4CG=Æ;9G=Ç4	H	Ç=HÈH	Úzoner”  ÚrdclassÚkeynameÚ
relativizer)   Úuse_udpÚkeyalgorithmc           	   #   ó>  K  —  G d„ dt         j                  j                  «      }t        |t        «      rt         j
                  j                  |«      }t         j                  j                  j                  |«      }t         j                  j                  |||«      }|t         j                  j                  k(  r‡|j                  |j                  |t         j                  j                   t         j                  j"                  d¬«      }t         j$                  j                  ddd|› d�«      }|j'                  |d	«       |�|j)                  |||¬«       t+        | ||
|d«      \  }}}
|€J ‚t-        |	«      \  }} |||«      }|r(|t         j                  j                  k7  rt/        d«      ‚|rt0        j2                  nt0        j4                  }t7        |||
«      5 }t9        |||«       t;        ||||||«      E d
{  –—†  d
d
d
«       y
7 Œ# 1 sw Y   y
xY w­w)a³  Return a generator for the responses to a zone transfer.

    *where*, a ``str`` containing an IPv4 or IPv6 address,  where
    to send the message.

    *zone*, a ``dns.name.Name`` or ``str``, the name of the zone to transfer.

    *rdtype*, an ``int`` or ``str``, the type of zone transfer.  The
    default is ``dns.rdatatype.AXFR``.  ``dns.rdatatype.IXFR`` can be
    used to do an incremental transfer instead.

    *rdclass*, an ``int`` or ``str``, the class of the zone transfer.
    The default is ``dns.rdataclass.IN``.

    *timeout*, a ``float``, the number of seconds to wait for each
    response message.  If None, the default, wait forever.

    *port*, an ``int``, the port send the message to.  The default is 53.

    *keyring*, a ``dict``, the keyring to use for TSIG.

    *keyname*, a ``dns.name.Name`` or ``str``, the name of the TSIG
    key to use.

    *relativize*, a ``bool``.  If ``True``, all names in the zone will be
    relativized to the zone origin.  It is essential that the
    relativize setting matches the one specified to
    ``dns.zone.from_xfr()`` if using this generator to make a zone.

    *lifetime*, a ``float``, the total number of seconds to spend
    doing the transfer.  If ``None``, the default, then there is no
    limit on the time the transfer may take.

    *source*, a ``str`` containing an IPv4 or IPv6 address, specifying
    the source address.  The default is the wildcard address.

    *source_port*, an ``int``, the port from which to send the message.
    The default is 0.

    *serial*, an ``int``, the SOA serial number to use as the base for
    an IXFR diff sequence (only meaningful if *rdtype* is
    ``dns.rdatatype.IXFR``).

    *use_udp*, a ``bool``.  If ``True``, use UDP (only meaningful for IXFR).

    *keyalgorithm*, a ``dns.name.Name`` or ``str``, the TSIG algorithm to use.

    Raises on errors, and so does the generator.

    Returns a generator of ``dns.message.Message`` objects.
    c                   óŒ   — e Zd Zd„ Zd„ Zdej                  j                  fd„Zd„ Z	d	de
dej                  j                  fd„Zy)
ú$xfr.<locals>.DummyTransactionManagerc                 ó^   — |||r!t         j                  j                  f| _        y |f| _        y r   )r   r­   ÚemptyÚinfo)r"   r�  r§  s      r   r   z-xfr.<locals>.DummyTransactionManager.__init__�  s#   € Ø ¹z¬S¯X©X¯^©^ÐVˆD�IÈvÐVˆD�Ir   c                 ó   — | j                   S r   )r¯  ©r"   s    r   Úorigin_informationz7xfr.<locals>.DummyTransactionManager.origin_information„  s   € Ø—9‘9Ðr   rd   c                 ó   — t         ‚r   rG   r±  s    r   Ú	get_classz.xfr.<locals>.DummyTransactionManager.get_class‡  ra   r   c                 ó   — t         ‚r   rG   r±  s    r   Úreaderz+xfr.<locals>.DummyTransactionManager.readerŠ  ra   r   Úreplacementc                 óh   —  G d„ d«      }t        t        j                  j                   |«       «      S )Nc                   ó   — e Zd Zd„ Zd„ Zy)úExfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransactionc                  ó   — y r   r_   )r"   rZ   Úkws      r   ÚnopzIxfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransaction.nop�  s   € Ør   c                 ó   — | j                   S r   )r½  )r"   r>   s     r   Ú__getattr__zQxfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransaction.__getattr__’  s   € ØŸ8™8�Or   N)rL   rM   rN   r½  r¿  r_   r   r   ÚDummyTransactionrº  Ž  s   „ òó$r   rÀ  )r   r   ÚtransactionÚTransaction)r"   r·  rÀ  s      r   Úwriterz+xfr.<locals>.DummyTransactionManager.writer�  s)   € ÷$ñ $ô œŸ™×3Ñ3Ñ5EÓ5GÓHÐHr   N)F)rL   rM   rN   r   r²  r   Ú
rdataclassÚ
RdataClassr´  r¶  ÚboolrÁ  rÂ  rÃ  r_   r   r   ÚDummyTransactionManagerr¬  €  sH   „ ò	Wò	ð	&˜sŸ~™~×8Ñ8ó 	&ò	&ñ	I dð 	I°s·±×7RÑ7Rô 	Ir   rÇ  T)ÚcreateÚINÚSOAz. . z 0 0 0 0r   N)Ú	algorithmzcannot do a UDP AXFR)r   rÁ  ÚTransactionManagerrv   rï   r­   Ú	from_textr•  Ú	RdataTypeÚmaker÷   Ú
make_queryr–  Ú
find_rrsetÚ	authorityrÄ  rÉ  rÊ  ÚrdataÚaddÚuse_tsigr£   r*   r�   r3   rA  r4   r2   r5   r£  )rŸ   r¤  r”  r¥  r   r;   rÚ   r¦  r§  r)   rB   r    r�  r¨  r©  rÇ  rÂ   ÚrrsetÚsoarA   r™   r>   r   ÚtmÚ	sock_typer‰   s                             r   r�  r�  ;  s¿  è ø€ ôJI¤#§/¡/×"DÑ"Dô Iô. �$œÔÜ�x‰x×!Ñ! $Ó'ˆÜ�]‰]×$Ñ$×)Ñ)¨&Ó1€FÜ�‰×Ñ˜t V¨WÓ5€AØ”—‘×#Ñ#Ò#Ø—‘Ø�K‰K˜œsŸ~™~×0Ñ0´#·-±-×2CÑ2CÈDð ó 
ˆô �i‰i×!Ñ! $¨°°f°X¸XÐ/FÓGˆØ�	‰	�#�qÔØÐØ	�
‰
�7˜G¨|ˆ
Ô<Ü 7Øˆt�V˜[¨$ó!Ñ€Rˆ�fð ˆ>Ðˆ>Ü$ XÓ.�O€Qˆ
Ù	   zÓ	2€BÙ�6œSŸ]™]×/Ñ/Ò/ÜÐ/Ó0Ð0Ù%,”×!Ò!´&×2DÑ2D€IÜ	�R˜ FÔ	+¨qÜ��K Ô,Ü  A q¨&°'¸:ÓF×FÐF÷ 
,Ð	+àFø÷ 
,Ð	+üs0   ‚GHÇ !HÈHÈHÈ	HÈHÈHÈHÚudp_modec	           	      ó6  — |€#t         j                  j                  |«      \  }}	nt         j                  j                  |«      }	t	        | |||d«      \  }
}}|
€J ‚t        |«      \  }}|j                  d   j                  t         j                  j                  k(  r\|t        j                  k7  rIt        |
t        j                  |«      5 }t        |||«       	 t!        ||||	||«      D ]  }Œ 	 ddd«       yt        |
t        j&                  |«      5 }t        |||«       t!        ||||	||«      D ]  }Œ 	 ddd«       y# t         j                  j"                  $ r |t        j$                  k(  r‚ Y nw xY w	 ddd«       Œ‰# 1 sw Y   Œ’xY w# 1 sw Y   yxY w)a±  Conduct an inbound transfer and apply it via a transaction from the
    txn_manager.

    *where*, a ``str`` containing an IPv4 or IPv6 address,  where
    to send the message.

    *txn_manager*, a ``dns.transaction.TransactionManager``, the txn_manager
    for this transfer (typically a ``dns.zone.Zone``).

    *query*, the query to send.  If not supplied, a default query is
    constructed using information from the *txn_manager*.

    *port*, an ``int``, the port send the message to.  The default is 53.

    *timeout*, a ``float``, the number of seconds to wait for each
    response message.  If None, the default, wait forever.

    *lifetime*, a ``float``, the total number of seconds to spend
    doing the transfer.  If ``None``, the default, then there is no
    limit on the time the transfer may take.

    *source*, a ``str`` containing an IPv4 or IPv6 address, specifying
    the source address.  The default is the wildcard address.

    *source_port*, an ``int``, the port from which to send the message.
    The default is 0.

    *udp_mode*, a ``dns.query.UDPMode``, determines how UDP is used
    for IXFRs.  The default is ``dns.query.UDPMode.NEVER``, i.e. only use
    TCP.  Other possibilities are ``dns.query.UDPMode.TRY_FIRST``, which
    means "try UDP but fallback to TCP if needed", and
    ``dns.query.UDPMode.ONLY``, which means "try UDP and raise
    ``dns.xfr.UseTCP`` if it does not succeed.

    Raises on errors.
    NTr   )r   r�  rÐ  Úextract_serial_from_queryr£   r*   r“  r”  r•  r–  rˆ  r‰  r2   r3   rA  r5   r£  ÚUseTCPr‹  r4   )rŸ   rŒ  r8  r;   r   r)   rB   r    rÚ  r�  rA   r™   r>   r   r‰   s                  r   Úinbound_xfrrÞ  ±  sw  € ð^ €}ÜŸ'™'×,Ñ,¨[Ó9‰ˆ‘ä—‘×2Ñ2°5Ó9ˆä 7Øˆt�V˜[¨$ó!Ñ€Rˆ�fð ˆ>Ðˆ>Ü$ XÓ.�O€Qˆ
Ø‡~�~�aÑ×Ñ¤3§=¡=×#5Ñ#5Ò5¸(ÄgÇmÁmÒ:SÜ˜œV×.Ñ.°Ô7¸1Ü�Q˜ ZÔ0ðÜ%Ø  E¨6°7¸Jö�Að ðð ÷ 8Ð7ô 
�Rœ×+Ñ+¨VÔ	4¸Ü��K Ô,Ü˜k¨1¨e°V¸WÀjÖQˆAØñ R÷ 
5Ð	4øô	 —7‘7—>‘>ò ØœwŸ|™|Ò+Øñ ,ðúØ+÷ 8×7Ñ7ú÷ 
5Ð	4ús6   ÃFÃEÄ#FÅ1E6Å3FÅ5E6Å6FÆFÆF)Tr   rK   )	NrÁ   Nr   FFTTN)
NNFFNr   FFFN)
Nr?  Nr   FFFFNF)
Nr?  Nr   FFFNNF)NFNr   F)Nr?  Nr   FFN)TTN)
NéU  Nr   FFNNNT)
Nrß  Nr   FFNTNN)‡rk   rñ   rì   Úenumrd  rl  rã   rz   r3   r^  r   Úurllib.parserÞ   Útypingr   r   r   r   r   r   Údns._featuresr   Údns._tls_utilÚdns.exceptionÚdns.inetÚdns.messageÚdns.nameÚdns.quicÚ	dns.rdataÚdns.rdataclassÚdns.rdatatypeÚdns.transactionÚdns.tsigÚdns.xfrrw   ÚImportErrorÚdns._no_sslÚ_no_sslr   r   Ú	_featuresÚhaveÚ_have_httpxÚhttpcore._backends.syncr8   ré   ÚNetworkBackendÚ_CoreNetworkBackendÚ	_backendsÚsyncÚ
SyncStreamr6   r   ÚHTTPTransportrR   râ   ÚAddressFamilyr  Ú
SocketKindrf   rg   Ú__annotations__r   ÚDNSExceptionri   rœ  rm   ro   rr   r�  ÚTransferErrorr*   r…   rŠ   rŒ   r•   r›   r£   r2   Ú
SSLContextr­   r®   rï   rx   r±   r³   rµ   ÚIntEnumr·   r\   rº   r÷   r2  ÚfloatrÆ  r  ræ   ÚHeadersÚbytesr  r  rç   rè   r*  r/  r5  ÚtsigÚKeyr>  rD  rI  rQ  rU  r[  ra  r5   rH  rr  rå   r€  rƒ  r…  rˆ  rÁ  rÌ  r£  r•  ÚAXFRrÄ  rÉ  Údefault_algorithmrÎ  rÅ  r‰  rÞ  r_   r   r   Ú<module>r     sÐ  ðò$ ã Û Û Û Û 	Û Û Û Û Û Û ß =× =ã Û Û Û Û Û Û Û Û Û Û Û Û ðÛò
ò2ð �m‰m× Ñ  Ó'€ÙÛ"Ûà"×1Ñ1ÐØ×(Ñ(×-Ñ-×8Ñ8€Oô4&Ð-ô 4&ôl˜×,Ñ,õ ÷,&ñ &ð  €ð*Ø×Ñ˜sÑ"ð*à
×
Ñ
ð*ð ð*ð ‡]�]ó	*ð ð �Ø×Ñ˜CÑ ×!2Ñ!2°CÐ8¸&¿-¹-ÐGñó ô
H�s—}‘}×1Ñ1ô HôG�#—-‘-×)Ñ)ô GôˆC�M‰M×&Ñ&ô ô
ˆC�M‰M×&Ñ&ô ð —‘×%Ñ%€ò$ò(ò80ò0ò	)òð" =Aó)%ð^ ñØ×Ñ˜sÑ"ðà
×
Ñ
ðð �$‰Jðð ‡]�]ó	ðJ 37Øñ'Ø×Ñ˜sÑ"ð'à
×
Ñ
ð'ð —‘ð'ð —X‘X—]‘] SÑ(¨4Ñ/ð	'ð
 �$‰Jð'ð 	‡]�]ó'òV
-ðØÐ.Ñ/ðàóô�$—,‘,ô ð& !ØØØØ"Ø!ØØØØ$(Ø*.Ø26Ø×"Ñ"Ø +× 3Ñ 3ñ!LØ
‡{�{×ÑðLàðLð �T‰\ðLð ð	Lð
 �$‰JðLð ðLð ðLð ðLð �4‰ZðLð ðLð ðLð ˜T‘zðLð �3‰J˜Ÿ™Ñ'ðLð Ð.Ñ/ðLð ðLð  ð!Lð" 	‡[�[×Ñó#Lð^˜#Ÿ(™(×*Ñ*ð °%ð ¸Eó ðO˜3Ÿ8™8×+Ñ+ð O°3ð O¸eð OÈó Oð* !ØØØØ"Ø!Ø*.ØØ59ñ:Ø
‡{�{×Ñð:àð:ð 
ð:ð �T‰\ð	:ð
 ð:ð �$‰Jð:ð ð:ð ð:ð ð:ð �3‰J˜Ÿ™Ñ'ð:ð ð:ð —‘×+Ñ+¨dÑ2ð:ð 	‡[�[×Ñó:òz	1ò1ð&  $ñ	Ø
ðà
�+‰+×
Ñ
 Ñ
%ðð ðð ˜‘ð	ð
 ˆ3�ˆ:Ñóð> #Ø#Ø#Ø"Ø8<Ø #Ø!Ø %ØØ(,ñg4Ø
ðg4à�t‘ðg4ð ˜‘ðg4ð ð	g4ð
 ðg4ð �#—(‘(—-‘- §¡§¡Ð-Ñ.°Ñ5ðg4ð ˜‘ðg4ð ðg4ð ðg4ð ðg4ð �;‰;×Ñ Ñ%ðg4ð 	óg4ðZ !ØØØØ#Ø"Ø!Ø %ØØñYØ
‡{�{×ÑðYàðYð �T‰\ðYð ð	Yð
 �$‰JðYð ðYð ðYð ðYð ðYð ðYð �‰*ðYð ðYð 	‡[�[×ÑóYð~ !ØØØØ#Ø"Ø!ØØØñU Ø
‡{�{×ÑðU àðU ð �T‰\ðU ð ð	U ð
 �$‰JðU ð ðU ð ðU ð ðU ð ðU ð �D‰jðU ð �D‰jðU ð ðU ð ˆ3�;‰;×Ñ Ð$Ñ%óU òpò*1ð&  $ñ$Ø
ð$à
�+‰+×
Ñ
 Ñ
%ð$ð ˜‘ð$ð ˆ3�ˆ:Ñó	$ð@  $Ø"Ø8<Ø #Ø!ñ,Ø
ð,à˜‘ð,ð ð,ð �#—(‘(—-‘- §¡§¡Ð-Ñ.°Ñ5ð	,ð
 ˜‘ð,ð ð,ð ˆ3�;‰;×Ñ Ð%Ñ&ó,ò^-ð !ØØØØ"Ø!ØñCØ
‡{�{×ÑðCàðCð �T‰\ðCð ð	Cð
 �$‰JðCð ðCð ðCð ðCð �‰*ðCð 	‡[�[×ÑóCòL.ð ØØ"ñØ�3‰Jðàðð �‰9�tÑðð 	‡^�^ó	ðDJØ˜4‘ZðJØ)-°©ðJà‡^�^óJð !ØØØØ"Ø!Ø!%Ø)-Ø"&ØñiØ
‡{�{×Ñðiàðið �T‰\ðið ð	ið
 �$‰Jðið ðið ðið ðið �-‰-˜$Ñ
ðið —‘ $Ñ&ðið ˜4‘Zðið �3‰Jðið 	‡[�[×Ñóið^ !ØØØØ"Ø!Ø59ØØØ"&ñ^Ø
‡{�{×Ñð^àð^ð �T‰\ð^ð ð	^ð
 �$‰Jð^ð ð^ð ð^ð ð^ð —‘×+Ñ+¨dÑ2ð^ð �3‰Jð^ð �D‰jð^ð ˜4‘Zð^ð 	‡[�[×Ñó^ôB
ˆd�l‰lô 
ð1:Ø—‘×3Ñ3ð1:à‡}�}�s—}‘}Ñ$ð1:ð �;‰;×Ñð1:ð �$‰Jð	1:ð
 �T‰\ð1:ð ˜‘ð1:ð 	ó1:ðn -0¯M©M×,>Ñ,>Ø/2¯~ª~×/@Ò/@Ø ØØ8<Ø*.ØØ!ØØØØØ(+¯©×(BÒ(BñsGØðsGà
�(‰(�-‰-˜#Ñ
ðsGð �M‰M×#Ò# cÑ)ðsGð �^Š^×&Ò&¨Ñ,ð	sGð
 �T‰\ðsGð ðsGð �#—(‘(—-‘- §¡§¡Ð-Ñ.°Ñ5ðsGð �X‰X�]‰]˜SÑ  4Ñ'ðsGð ðsGð �d‰lðsGð �$‰JðsGð ðsGð ðsGð ðsGð —(‘(—-‘- #Ñ%ðsGð  	ó!sGðr )-ØØ Ø!ØØØŸšñIØðIà—‘×3Ñ3ðIð �;‰;×Ñ Ñ%ðIð ð	Ið
 �T‰\ðIð �d‰lðIð �$‰JðIð ðIð ðIð 
ôIøðA4 ò ßÐðús   Á5e4 å4fæf