+
    +O|jöð  ã                   óX  a € RU tr0 t R t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHtHtHtHtHtHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI t^ RI!t^ RI"t ^ RI#t#R t'R t(]PR                  PU                  R4      t+]+'       dV   ^ RI,t-^ RI.t.]-P^                  t0]-Pb                  Pd                  Pf                  t4 ! R R]04      t5 ! R R	].Pl                  4      t7M
 ! R
 R	4      t7]+t8R R lt9]9t:] ^ k  ! R R]Pv                  Px                  4      t= ! R R]Pv                  P|                  4      t? ! R R]Pv                  Px                  4      t@ ! R R]Pv                  Px                  4      tA]P„                  P†                  tCR tDR tER tFR tGR tHR tIRVR ltJRWR R lltKRXR R  lltLR! tMR" R# ltN ! R$ R%]Pž                  4      tPRR&R^ R'R'RR(RRRR]	P¢                  ]PP¤                  3R) R* lltSR+ R, ltTR- R. ltURYR/ R0 lltVR1 tWR2 tXRWR3 R4 lltYRZR5 R6 lltZR[R7 R8 llt[R\R9 R: llt\R; t]R< t^RWR= R> llt_R]R? R@ llt`RA taR^RB RC lltbRD tcR_RE RF lltdRG RH lteR`RI RJ lltfRaRK RL lltg ! RM RN]Pž                  4      thRO RP lti]PÔ                  PÖ                  ]PØ                  PÚ                  R^5RRRRR^ ^ R']PÜ                  PÞ                  3RQ RR lltBR^5RRR^ ]hPà                  3RS RT lltqR#   ]$ d    ^ RI%H&t#  ELªi ; i)bzTalk to a DNS server.N)ÚAnyÚCallableÚDictÚOptionalÚTupleÚcastc                 óŒ   € V f   R # V \         P                   ! 4       ,
          pVR8:  d   \        P                  P                  hV# )Nç        )ÚtimeÚdnsÚ	exceptionÚTimeout)Ú
expirationÚtimeouts   & ÚBC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\dns/query.pyÚ
_remainingr   5   s7   € ØÒÙØœ4Ÿ9š9›;Õ&€GØ�#„~Ü�m‰m×#Ñ#Ð#Ø€Nó    c                 óZ   € Vf   R # \        \        P                  ! 4       V ,           V4      # ©N)Úminr
   )r   r   s   &&r   Ú_expiration_for_this_attemptr   >   s#   € ØÒÙÜŒt�yŠy‹{˜WÕ$ jÓ1Ð1r   Údohc                   óF   a a€ ] tR t^Lt oV 3R ltRR ltRR ltRtVtV ;t	# )Ú_NetworkBackendc                óT   <€ \         SV `  4        W n        Wn        W0n        W@n        R # r   )ÚsuperÚ__init__Ú_local_portÚ	_resolverÚ_bootstrap_addressÚ_family)ÚselfÚresolverÚ
local_portÚbootstrap_addressÚfamilyÚ	__class__s   &&&&&€r   r   Ú_NetworkBackend.__init__M   s$   ø€ Ü‰GÑÔØ)ÔØ%ŒNØ&7Ô#Ø!ŽLr   c                óœ  € . p\        V4      w  rx\        P                  P                  V4      '       d   VP	                  V4       M•V P
                  e   VP	                  V P
                  4       Mk\        V4      pV P                  p	V'       d    \        P                  P                  V4      p	V P                  P                  WVR7      p
V
P                  4       pV FÊ  p\        P                  P                  V4      pVf   V P                  ^ 8w  d3   Vf   Rp\        P                  P                  W@P                  3V4      pMR p \        V\        P                   V4      p\#        RV4      p\%        V\        P                  P                  W²3V4      V4       \'        V4      u # 	  \*        P,                  h  \(         d     Kì  i ; i)N)r%   Úlifetimez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_tcpÚ_NetworkBackend.connect_tcpT   sŽ  € ð ˆIÜ*¨7Ó3‰MˆAÜ�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¸'¸È"ÓMØ*ôô
 +¨4Ó0Ò0ñ% %ô* ×'Ñ'Ð'øô !ô Úðús   Å
AF<Æ<GÇ
Gc                ó   € \         hr   ©ÚNotImplementedError)r!   Úpathr   r=   s   &&&&r   Úconnect_unix_socketÚ#_NetworkBackend.connect_unix_socket}   s
   € ô &Ð%r   )r   r    r   r   )NNN©NN)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   rE   rK   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r&   Ú__classdict__s   @@r   r   r   L   s   ù‡ € õ	"ô'	(÷R	&ô 	&r   r   c                   óZ   a a€ ] tR t^‚t oR^ RRRRR]P
                  /V 3R lltRtVtV ;t	# )Ú_HTTPTransportr#   r$   Nr"   r%   c               óª   <€ Vf#   Vf   ^ R I pVP                  P                  4       p\        SV `  ! V/ VB  \        W1W$4      V P                  n        R # r   )Údns.resolverr"   ÚResolverr   r   r   Ú_poolÚ_network_backend)	r!   r#   r$   r"   r%   ÚargsÚkwargsr   r&   s	   &$$$$*, €r   r   Ú_HTTPTransport.__init__ƒ   sO   ø€ ð ÒÐ$5Ò$=ã#àŸ<™<×0Ñ0Ó2�Ü‰GÒ˜dÐ- fÒ-Ü*9ØÐ&7ó+ˆD�J‰JÖ'r   © )
rN   rO   rP   rQ   r3   Ú	AF_UNSPECr   rR   rS   rT   rU   s   @@r   rX   rX   ‚   s=   ù‡ € ð	ð ð	ð #ð		ð
 ð	ð ×#Ñ#÷	÷ 	r   rX   c                   óT   a € ] tR t^˜t o R^ RRRRR]P
                  /R ltR tRtV t	R# )	rX   r#   r$   Nr"   r%   c               ó   € R # r   ra   )r!   r#   r$   r"   r%   r^   r_   s   &$$$$*,r   r   r`   ™   s   € ñ r   c                ó   € \         hr   rH   )r!   r:   r;   r   r<   s   &&&&&r   rE   Ú_HTTPTransport.connect_tcp¤   ó   € Ü%Ð%r   ra   )
rN   rO   rP   rQ   r3   rb   r   rE   rR   rS   ©rV   s   @r   rX   rX   ˜   sB   ø‡ € ð		ð ð		ð #ð			ð
 ð		ð ×#Ñ#ô		÷	&ð 	&r   c                óš   € V ^8„  d   QhR\         P                  \        ,          R\         P                  R\        R\         P                   /# )é   rA   ÚkindÚprotoÚreturn)r3   ÚAddressFamilyÚintÚ
SocketKind)Úformats   "r   Ú__annotate__rr   «   sE   € ÷ *ñ *Ü×ÑœsÕ"ð*ä
×
Ñ
ð*ô ð*ô ‡]�]ñ	*r   c                 ó0   € \         P                   ! WV4      # r   )r3   )rA   rk   rl   s   &&&r   Údefault_socket_factoryrt   «   s   € ô
 �=Š=˜ 5Ó)Ð)r   c                   ó   € ] tR t^ºtRtRtR# )ÚUnexpectedSourcez=A DNS query response came from an unexpected address or port.ra   N©rN   rO   rP   rQ   Ú__doc__rR   ra   r   r   rv   rv   º   s   † ÝGr   rv   c                   ó   € ] tR t^¾tRtRtR# )ÚBadResponsez<A DNS query response does not respond to the question asked.ra   Nrw   ra   r   r   rz   rz   ¾   s   † ÝFr   rz   c                   ó   € ] tR t^ÂtRtRtR# )ÚNoDOHzIDNS over HTTPS (DOH) was requested but the httpx module is not
available.ra   Nrw   ra   r   r   r|   r|   Â   ó   † õr   r|   c                   ó   € ] tR t^ÇtRtRtR# )ÚNoDOQzJDNS over QUIC (DOQ) was requested but the aioquic module is not
available.ra   Nrw   ra   r   r   r   r   Ç   r}   r   r   c                 óP   € \         P                   ! 4       pV f   VR 3# WV ,           3# r   )r
   )r   Únows   & r   r*   r*   Ð   s)   € Ü
�)Š)‹+€CØ‚Ø�Tˆ{Ðà˜7•]Ð#Ð#r   c                 ó–  € V'       d8   \        V \        P                  4      '       d   V P                  4       ^ 8”  d   R# \        P
                  ! 4       ;_uu_ 4       p^ pV'       d   V\        P                  ,          pV'       d   V\        P                  ,          pV'       d   VP                  W4       Vf   RpM=V\        P                  ! 4       ,
          pVR8:  d   \        P                  P                  hVP                  V4      '       g   \        P                  P                  h RRR4       R#   + '       g   i     R# ; i)é    TNr	   )Ú
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Ò1°b·j±j³lÀQÔ6FÙÜ	×	"Ò	"×	$Ô	$¨ØˆßØ”i×*Ñ*Õ*ˆFßØ”i×+Ñ+Õ+ˆFßØ�L‰L˜Ô$ØÒØ‰Gà ¤4§9¢9£;Õ.ˆGØ˜#Œ~Ü—m‘m×+Ñ+Ð+Ø�z‰z˜'×"Ò"Ü—-‘-×'Ñ'Ð'ð #÷ 
%×	$×	$Ò	$ús   Á)D7ÂD7Â&A+D7ÄD7Ä7E	c                 ó$   € \        V R RR V4       R# )TFN©r“   ©Úsr   s   &&r   Ú_wait_for_readabler˜   ô   s   € Üˆa��u˜d JÖ/r   c                 ó$   € \        V R RRV4       R# )FTNr•   r–   s   &&r   Ú_wait_for_writablerš   ø   s   € Üˆa�˜˜d JÖ/r   c                 ó&  €  \         P                  P                  W^ ,          4      p\         P                  P                  W^ ,          4      pY48H  ;'       d    TR,          TR,          8H  #   \         P                  P                   d     R# i ; i)rƒ   Fºé   NN)r   r+   Ú	inet_ptonr   ÚSyntaxError)rA   Úa1Úa2Ún1Ún2s   &&&  r   Ú_addresses_equalr¤   ü   st   € ðÜ�X‰X×Ñ  q¥EÓ*ˆÜ�X‰X×Ñ  q¥EÓ*ˆð ‰8×(Ð(˜˜2� " R¥&Ñ(Ð(øô �=‰=×$Ñ$ô Úðús   ‚AA- Á-BÂBc                 óö   € V'       g   R # \        WV4      '       gB   \        P                  P                  V^ ,          4      '       d   VR,          VR,          8X  d   R # V'       d   R# \	        RV RV 24      h)Trœ   Fzgot a response from z instead of )r¤   r   r+   Úis_multicastrv   )rA   Úfrom_addressÚdestinationÚignore_unexpecteds   &&&&r   Ú_matches_destinationrª     sg   € ÷ ÙÜ˜¨+×6Ò6Ü�‰×Ñ˜k¨!�n×-Ò-°,¸rÕ2BÀkÐRTÅoÔ2Uáß	ÙÜ
Ø
˜|˜n¨L¸[¸MÐJóð r   Tc                 óH  € R pR p \         P                  P                  V 4      pT pV'       d<   \         P                  P                  V4      pV'       d   Wu8w  d   \	        R4      hMTpV'       d)   V'       g!    \         P                  P                  V4      pV'       d"   \         P                  P                  Wa3V4      pV'       d"   \         P                  P                  W#3V4      pWVV3#   \         d    T'       d   h  Lßi ; i  \         d    \	        R4      hi ; i)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Ó-ˆßàŒyÜ ØKóð ð ð ˆBßŸ6ð	TÜ—X‘X×(Ñ(¨Ó,ˆF÷ Ü—h‘h×6Ñ6¸Ð7JÈBÓOˆßÜ—‘×1Ñ1°6Ð2GÈÓLˆØ˜VÐ$Ð$øô? ô ß Øñ !ðûô, ô 	TäÐRÓSÐSð	Tús#   †!C0 Á;D
 Ã0DÄDÄDÄ
D!c                ó¨   € V ^8„  d   QhR\         P                  \        ,          R\         P                  R\        R,          R\         P                   /# )rj   rA   ÚtyperB   Nrm   )r3   rn   ro   rp   r   )rq   s   "r   rr   rr   D  sI   € ÷ ñ Ü×ÑœsÕ"ðä
×
Ñ
ðô �$�Jðô ‡]�]ñ	r   c                ó¬   € \        W^ 4      p VP                  R4       Ve   VP                  V4       V#   \         d    TP	                  4        h i ; i)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.

*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)Úsocket_factoryÚsetblockingÚbindr7   Úclose)rA   r´   rB   r—   s   &&& r   r2   r2   D  sR   € ô, 	�r Ó#€AðØ	�‰�eÔØÒØ�F‰F�6ŒNØˆøÜô Ø	�‰Œ	Øðús	   Ž'6 ¶Ac                ó   € V ^8„  d   QhR\         P                  \        ,          R\         P                  R\        P
                  R\        P                  P                  \        ,          R,          R\        R,          R\        P                  /# )rj   rA   r´   Ússl_contextÚserver_hostnameNrB   rm   )r3   rn   ro   rp   r…   Ú
SSLContextr   ÚnameÚNameÚstrr   r†   )rq   s   "r   rr   rr   e  ss   € ÷ 'ñ 'Ü×ÑœsÕ"ð'ä
×
Ñ
ð'ô —‘ð'ô —X‘X—]‘]¤SÕ(¨4Õ/ð	'ô
 �$�Jð'ô 	‡]�]ñ'r   c                ó¶   € \        WV4      p\        V\        P                  P                  4      '       d   VP                  4       pVP                  VRVR7      # )aV  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   r„   r   r¾   r¿   Úto_textÚwrap_socket)rA   r´   r»   r¼   rB   rC   s   &&&&& r   Úmake_ssl_socketrÅ   e  sT   € ô> �r Ó(€DÜ�/¤3§8¡8§=¡=×1Ò1Ø)×1Ñ1Ó3ˆà×"Ñ"ØØ %Ø'ð #ó ð r   c                 ó<   € Ve   \        WW4V4      # \        WV4      # r   )rÅ   r2   )rA   r´   rB   r»   r¼   s   &&&&&r   Ú_make_socketrÇ   �  s&   € ð ÒÜ˜r¨ÀvÓNÐNä˜2 VÓ,Ð,r   c                ó6   € V ^8„  d   QhR\         R,          RR/# )rj   r"   údns.resolver.Resolverrm   )r   )rq   s   "r   rr   rr   �  s"   € ÷ ñ ÜÐ.Õ/ðàñr   c                 óJ   € V f   ^ R I pVP                  P                  4       p V # r   )rZ   r"   r[   )r"   r   s   & r   Ú_maybe_get_resolverrË   �  s$   € ð Òãà—<‘<×(Ñ(Ó*ˆØ€Or   c                   ó6   € ] tR tRtRt^ t^t^t^t^t	^t
^tRtR# )ÚHTTPVersioni«  zzWhich version of HTTP should be used?

DEFAULT will select the first version from the list [2, 1.1, 3] that
is available.
ra   N)rN   rO   rP   rQ   rx   ÚDEFAULTÚHTTP_1ÚH1ÚHTTP_2ÚH2ÚHTTP_3ÚH3rR   ra   r   r   rÍ   rÍ   «  s,   † ñð €GØ€FØ	
€BØ€FØ	
€BØ€FØ	
„Br   rÍ   é»  Fz
/dns-queryc          "      óº  € V ^8„  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\        R,          R\        R\        R\        R,          R\        \        ,          \        P                  ,          R\        R,          R\
        R\        R\         P                  P                  /# )rj   Úqr®   r   Nr;   rB   r¯   Úone_rr_per_rrsetÚignore_trailingÚsessionrJ   Úpostr$   Úverifyr"   rÉ   r%   Úhttp_versionrm   )r   ÚmessageÚMessagerÀ   Úfloatro   Úboolr   r…   r½   r   rÍ   )rq   s   "r   rr   rr   »  sü   € ÷ Lñ 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r   c                ó<	  € \        WWER4      w  pppTpVee   \        P                  P                  V4      '       d@   V\        P
                  8X  d   RV RV V	 2pMV\        P                  8X  d   RV RV V	 2p/ pVf�   \        P                  P                  V4      pVP                  f   \        R4      h\        P                  P                  VP                  4      '       d   VP                  pVP                  VR&   VP                  e   VP                  pV\        P                  8X  g"   V\        P                  8X  dÉ   \         '       g½   Vfe   \#        V4      pXP                  f   Q hVP%                  VP                  V4      p\&        P(                  ! \+        VP-                  4       4      4      pV'       d6   \/        V\        P0                  P2                  4      '       g   \        R	4      h\5        V VVVVVVVVVV
VR
7      # \         '       g   \6        hV'       d,   \/        V\8        P:                  4      '       g   \        R4      hV P=                  4       pRR/pV\        P>                  \        P                  39   pV\        P@                  \        P                  39   pVf   Rp^ pMV^ ,          pV^,          pV'       d   \B        PD                  ! V4      pM-\G        VVVVVVVVR7      p\8        P:                  ! VVVVR7      pT;_uu_ 4       pVf   Q hV
'       d?   VPI                  RRR\K        \M        V4      4      /4       VPO                  VVVVVR7      pMM\P        PR                  ! V4      PU                  R4      pVPW                  4       p VPY                  VVVRV /VR7      pRRR4       XPZ                  ^È8  g   VPZ                  R8”  d(   \        V RVPZ                   RVP\                   24      h\        P^                  Pa                  VP\                  V Pb                  V Pd                  VVR7      p!VPf                  Pi                  4       V!n5        V Pm                  V!4      '       g   \n        hV!#   + '       g   i     LÙ; i)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-message)r<   Úhttp1Úhttp2rÜ   r#   r$   r"   r%   )rç   rè   rÜ   Ú	transportz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   r„   ÚquicÚSyncQuicConnectionÚ_http3r|   ÚhttpxÚClientÚto_wirerÐ   rÒ   Ú
contextlibÚnullcontextrX   ÚupdaterÀ   ÚlenrÛ   Úbase64Úurlsafe_b64encodeÚrstripÚdecodeÚgetÚstatus_coderë   rÞ   Ú	from_wirerò   ró   ÚelapsedÚtotal_secondsr
   Úis_responserz   )"r×   r®   r   r;   rB   r¯   rØ   rÙ   rÚ   rJ   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Ø�V¨%óÑ€RˆˆJð €CØ	‚~œ#Ÿ(™(×-Ñ-¨e×4Ò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³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ÜØØØØØØØØØØØØô
ð 	
÷ ‹8Üˆß”z '¬5¯<©<×8Ò8ÜÐDÓEÐEà�9‰9‹;€DØÐ2Ð3€Gà	œ+Ÿ.™.¬+×*=Ñ*=Ð>Ñ	>€BØ	œ+Ÿ.™.¬+×*=Ñ*=Ð>Ñ	>€Bð ÒØˆØ‰
à" 1�ˆØ •]ˆ
çÜ0:×0FÒ0FÀwÓ0O‰ä"Ø'ØØØØ!Ø/ØØô	
ˆ	ô �\Š\Ø˜B v¸ô
ˆ÷ 
‰ˆwð Ò"Ð"Ð"ßØ�N‰Nà"Ð$=Ø$¤c¬#¨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   Ì RÌ/BRÒR	c                ód   € V ^8„  d   QhR\         P                  P                  R\        R\        /# )rj   rê   r¾   rm   )r   rþ   ÚHeadersÚbytes)rq   s   "r   rr   rr   Š  s+   € ÷ ñ œ#Ÿ(™(×*Ñ*ð ´%ð ¼Eñ r   c                 óL   € V f   \         hV  F  w  r#W!8X  g   K  Vu # 	  \         hr   )ÚKeyError)rê   r¾   ÚheaderÚvalues   &&  r   Ú_find_headerr$  Š  s)   € Ø‚ÜˆÛ ‰ˆØŽ>ØŠLñ !ô €Nr   c                óh   € V ^8„  d   QhR\         P                  P                  R\        R\        RR/# )rj   rê   Úpeerr  rm   N)r   rþ   r  rÀ   r  )rq   s   "r   rr   rr   “  s8   € ÷ Oñ Oœ3Ÿ8™8×+Ñ+ð O´3ð O¼eð OÈñ Or   c                 ó,  € \        V R 4      pVf   \        R4      h\        V4      pV^ 8  d   \        R4      hV^È8  g   VR8”  d=   Rp\        V4      ^ 8”  d    RVP	                  4       ,           p\        V RV V 24      hR#   \
         d     L!i ; i)s   :statusNzno :status header in responsezstatus is negativerï   Ú z: rð   )r$  rŸ   ro   r  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   ÁB ÂBÂBc                ó–  € V ^8„  d   QhR\         P                  P                  R\        R\        R\        R,          R\
        R\        R,          R\
        R	\        R
\        R\        \        ,          \        P                  ,          R\        R\         P                  P                  R,          R\         P                  P                  /# )rj   r×   r®   r  r   Nr;   rB   r¯   rØ   rÙ   rÜ   rÛ   rå   rm   )r   rÞ   rß   rÀ   rà   ro   rá   r…   r½   rþ   rÿ   )rq   s   "r   rr   rr   ¤  sÂ   € ÷ :ñ :Ü
‡{�{×Ñð:äð:ô 
ð:ô �T�\ð	:ô
 ð:ô �$�Jð:ô ð:ô ð:ô ð:ô ”3�JœŸ™Õ'ð:ô ð:ô —‘×+Ñ+¨dÕ2ð:ô 	‡[�[×Ññ:r   c           	      ó@  € \         P                  P                  '       g   \        R 4      h\        P
                  P                  V4      pVP                  pVf   Q hVP                  e   VP                  p^ V n	        V P                  4       pV'       d   \        P                  ! R4      pM#\         P                  P                  W�RR7      pTpT;_uu_ 4        V'       d   TpMXP                  WWV4      p\        V4      w  ppVP!                  V4      ;_uu_ 4       pVP#                  W.V
4       VP%                  \'        V4      4      p\)        VP+                  4       W4       RRR4       \,        P,                  ! 4       pRRR4       \         P.                  P1                  VV P2                  V P4                  VVR7      p\7        XX,
          R4      Vn        V P9                  V4      '       g   \:        hV#   + '       g   i     Lœ; i  + '       g   i     L’; i)z DNS-over-HTTP3 is not available.NT)Úverify_modeÚserver_nameÚh3rñ   r	   )r   rþ   Ú	have_quicr|   rö   r÷   rø   rù   r;   Úidr  r  r  ÚSyncQuicManagerÚconnectr*   Úmake_streamÚsend_h3Úreceiver   r+  rê   r
   rÞ   r  rò   ró   Úmaxr  rz   )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‰ä—(‘(×*Ñ*Ø¸ð +ó 
ˆð ˆç	ŠßØ'‰Nà(×0Ñ0Ø˜VóˆNô -¨WÓ5Ñˆ�
Ø×'Ñ'¨×0Ô0°FØ�N‰N˜3 dÔ+Ø—>‘>¤*¨ZÓ"8Ó9ˆDÜ˜&Ÿ.™.Ó*¨EÔ8÷ 1ô —’“ˆ÷ 
ô 	�‰×ÑØØ—	‘	Ø—M‘MØ)Ø'ð 	ó 	€Aô �˜%• Ó%€A„FØ�=‰=˜×ÒÜÐØ€H÷ 1×0ú÷ 
�ús&   ÃAHÄAG:	Å&HÇ:H
ÈHÈH	c                ób   €   V P                  V4      #   \         d    \        Y4        K,  i ; i)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_recvrD  á  s2   € ð
 ð	1Ø—=‘= Ó*Ð*øÜô 	1Ü˜t×0ð	1ús   ƒ ”.­.c                ó”   €   V'       d   V P                  W4      # V P                  V4      #   \         d    \        Y4        KE  i ; i)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ÚsendrB  rš   )rC   Údatar¨   r   s   &&&&r   Ú	_udp_sendrI  í  sC   € ð
 ð	1ßØ—{‘{ 4Ó5Ð5à—y‘y “Ð&øÜô 	1Ü˜t×0ð	1ús   ƒ- ‹- œ- ­AÁAc                óÂ   € V ^8„  d   QhR\         R\        P                  P                  \        ,          R\         R\
        R,          R\        \        \
        3,          /# )rj   rC   Úwhatr¨   r   Nrm   ©r   r   rÞ   rß   r  rà   r   ro   )rq   s   "r   rr   rr   ü  sV   € ÷ ñ Ü
ðä
�+‰+×
Ñ
¤Õ
%ðô ðô ˜•ð	ô
 Œ3”ˆ:Õñr   c                ó¾   € \        V\        P                  P                  4      '       d   VP	                  4       p\
        P
                  ! 4       p\        WW#4      pWT3# )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.
)r„   r   rÞ   rß   r  r
   rI  )rC   rK  r¨   r   Ú	sent_timeÚns   &&&&  r   Úsend_udprP  ü  sE   € ô, �$œŸ™×+Ñ+×,Ò,Ø�|‰|‹~ˆÜ—	’	“€IÜ�$˜kÓ6€AØˆ>Ðr   c                óˆ  € V ^8„  d   QhR\         R\         R,          R\        R,          R\        R\        R\        \        P
                  P                  \        P                  P                  3,          R,          R\        R,          R	\        R
\        R\        R\        P                  P                  R,          R\         /# )rj   rC   r¨   Nr   r©   rØ   rò   ró   rÙ   Úraise_on_truncationÚignore_errorsÚqueryrm   )r   rà   rá   r   r   r¾   r¿   ÚtsigÚKeyr  rÞ   rß   )rq   s   "r   rr   rr     sÈ   € ÷ g4ñ 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4r   c           	     ó.  € Rp \        V RV4      w  r¼\        V P                  WÁV4      '       g   K/  \        P                  ! 4       p \        P
                  P                  VVVVVVR7      pT	'       d   T
e   T
P                  T4      '       g   K�  T'       d   Yí3# YíT3#   \        P
                  P                   d>   pT	'       d0   T
e,   T
P                  TP                  4       4      '       g    Rp?Kô  h Rp?i\         d    T	'       d    EK  h i ; i)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Ù   rR  N)
rD  rª   r%   r
   r   rÞ   r  Ú	Truncatedr  r7   )rC   r¨   r   r©   rØ   rò   ró   rÙ   rR  rS  rT  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Ò7KÙßØÐ%Ð%à lÐ3Ð3øô1 �{‰{×$Ñ$ô 	÷ ØÒ%Ø×)Ñ)¨!¯)©)«+×6Ò6åàûÜô 	ßÛàð		ús*   Á%B! Â!DÃ 0C8Ã7C8Ã8DÄDÄDc                ó.  € V ^8„  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\        R\        R\        R,          R\        R\         P                  P                  /# )rj   r×   r®   r   Nr;   rB   r¯   r©   rØ   rÙ   rR  rC   rS  rm   ©r   rÞ   rß   rÀ   rà   ro   rá   r   )rq   s   "r   rr   rr   ƒ  s¹   € ÷ Yñ YÜ
‡{�{×ÑðYäðYô �T�\ðYô ð	Yô
 �$�JðYô ðYô ðYô ðYô ðYô ðYô ��*ðYô ðYô 	‡[�[×ÑñYr   c                ó  € V P                  4       p\        WWER4      w  rÞp\        V4      w  ppV
'       d   \        P                  ! V
4      pM!Vf   Q h\        V\        P                  V4      pT;_uu_ 4       p\        VWÎV4       \        VVVVVV P                  V P                  VV	VV 4      w  ppVV,
          Vn        V'       g   V P                  V4      '       g   \        hVuuRRR4       #   + '       g   i     M; i Q h)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_DGRAMrP  r\  rò   Úmacr
   r  rz   )r×   r®   r   r;   rB   r¯   r©   rØ   rÙ   rR  rC   rS  r  rA   r¨   Ú
begin_timer   r  r—   r  rZ  s   &&&&&&&&&&&&         r   Úudprc  ƒ  sö   € ðp �9‰9‹;€DÜ 7Ø�V¨$ó!Ñ€R�fô  .¨gÓ6Ñ€Z�ßÜ0:×0FÒ0FÀtÓ0L‰àŠ~Ðˆ~Ü˜œV×.Ñ.°Ó7ˆß	‰ˆqÜ��D zÔ2Ü(ØØØØØØ�I‰IØ�E‰EØØØØó
ÑˆˆMð  Õ+ˆŒ÷  §¡¨q×!1Ò!1ÜÐØ÷) 
��Šúð, 	ðØs   Á9A&C2Ã C2Ã2D	c                ó^  € V ^8„  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\        R\        R,          R\        R,          R\        R\        \         P                  P                  \        3,          /# )rj   r×   r®   r   Nr;   rB   r¯   r©   rØ   rÙ   Úudp_sockÚtcp_sockrS  rm   )	r   rÞ   rß   rÀ   rà   ro   rá   r   r   )rq   s   "r   rr   rr   ß  sÇ   € ÷ U ñ U Ü
‡{�{×ÑðU äðU ô �T�\ðU ô ð	U ô
 �$�JðU ô ðU ô ðU ô ðU ô ðU ô �D�jðU ô �D�jðU ô ðU ô Œ3�;‰;×Ñ¤Ð$Õ%ñU r   c                ó°   €  \        V VVVVVVVVRV	V4      pVR3#   \        P                  P                   d    \	        T TTTTTTTT
4	      pTR3u # i ; i)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)rc  r   rÞ   rY  Útcp)r×   r®   r   r;   rB   r¯   r©   rØ   rÙ   re  rf  rS  r  s   &&&&&&&&&&&& r   Úudp_with_fallbackri  ß  sŽ   € ðr ÜØØØØØØØØØØØØó
ˆð ˜%Ð Ð øÜ�;‰;× Ñ ô  ÜØØØØØØØØØó

ˆð ˜$ÐÒð ús   ‚ œ6AÁAc                ó6  € RpV^ 8”  dA    V P                  V4      pVR8X  d   \        R4      hV\        V4      ,          pW4,          pKG  V#   \        \        P
                  3 d    \        Y4        Kr  \        P                   d    \        Y4        K”  i ; i)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   ÚEOF)	ÚrecvÚEOFErrorr  rB  r…   ÚSSLWantReadErrorr˜   ÚSSLWantWriteErrorrš   )rC   Úcountr   r—   rO  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×0Ü×$Ñ$ô 	1Ü˜t×0ð	1ús   ‹=A Á&BÁ5BÂBÂBc                ó  € ^ p\        V4      pW48  d    W0P                  WR 4      ,          pK"  R#   \        \        P                  3 d    \        Y4        KM  \        P                   d    \        Y4        Ko  i ; i)z…Write the specified data to the socket.
A Timeout exception will be raised if the operation is not completed
by the expiration time.
N)r  rG  rB  r…   ro  rš   rn  r˜   )rC   rH  r   ÚcurrentÚls   &&&  r   Ú
_net_writeru  L  sp   € ð
 €GÜˆD‹	€AØ
Œ+ð	1Ø—y‘y  h Ó0Õ0ŠGñ øô  ¤×!6Ñ!6Ð7ô 	1Ü˜t×0Ü×#Ñ#ô 	1Ü˜t×0ð	1ús   •2 ²&A>ÁA>Á.A>Á=A>c          
      ó¶   € V ^8„  d   QhR\         R\        P                  P                  \        ,          R\
        R,          R\        \        \
        3,          /# )rj   rC   rK  r   Nrm   rL  )rq   s   "r   rr   rr   \  sL   € ÷ $ñ $Ü
ð$ä
�+‰+×
Ñ
¤Õ
%ð$ô ˜•ð$ô Œ3”ˆ:Õñ	$r   c                ó  € \        V\        P                  P                  4      '       d   VP	                  RR7      pM"\        V4      P                  ^R4      V,           p\        P                  ! 4       p\        WV4       \        V4      V3# )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_lengthÚbig)	r„   r   rÞ   rß   r  r  Úto_bytesr
   ru  )rC   rK  r   ÚtcpmsgrN  s   &&&  r   Úsend_tcpr|  \  sl   € ô$ �$œŸ™×+Ñ+×,Ò,Ø—‘¨T�Ó2‰ô
 �T“×#Ñ# A uÓ-°Õ4ˆÜ—	’	“€IÜˆt˜ZÔ(Ü�‹K˜Ð#Ð#r   c                óR  € V ^8„  d   QhR\         R\        R,          R\        R\        \        P
                  P                  \        P                  P                  3,          R,          R\        R,          R\        R\        \        P                  P                  \        3,          /# )	rj   rC   r   NrØ   rò   ró   rÙ   rm   )r   rà   rá   r   r   r¾   r¿   rU  rV  r  r   rÞ   rß   )rq   s   "r   rr   rr   z  s‰   € ÷ ,ñ ,Ü
ð,ä˜•ð,ô ð,ô ”#—(‘(—-‘-¤§¡§¡Ð-Õ.°Õ5ð	,ô
 ˜•ð,ô ð,ô Œ3�;‰;×Ñ¤Ð%Õ&ñ,r   c                óÞ   € \        V ^V4      p\        P                  ! RV4      w  p\        WV4      p\        P                  ! 4       p	\        P
                  P                  VVVVVR7      p
W©3# )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.
ú!Hrñ   )rq  ÚstructÚunpackr
   r   rÞ   r  )rC   r   rØ   rò   ró   rÙ   Úldatart  r  rZ  r  s   &&&&&&     r   Úreceive_tcprƒ  z  so   € ôB �d˜A˜zÓ*€EÜ�=Š=˜˜uÓ%�D€QÜ�T˜jÓ)€DÜ—I’I“K€MÜ�‰×ÑØØØØ)Ø'ð 	ó 	€Að ÐÐr   c                 ób  € V P                  V4      pV^ 8X  d   R# V\        P                  \        P                  \        P                  39   d:   \        W4       V P                  \        P                  \        P                  4      pV^ 8w  d!   \        V\        P                  ! V4      4      hR# )rƒ   N)Ú
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Ô)Ø�l‰lœ6×,Ñ,¬f¯o©oÓ>ˆØ
ˆa„xÜ�cœ2Ÿ;š; sÓ+Ó,Ð,ñ r   c                ó
  € V ^8„  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\        R,          R\         P                  P                  /
# )rj   r×   r®   r   Nr;   rB   r¯   rØ   rÙ   rC   rm   r^  )rq   s   "r   rr   rr   ´  s˜   € ÷ Cñ CÜ
‡{�{×ÑðCäðCô �T�\ðCô ð	Cô
 �$�JðCô ðCô ðCô ðCô ��*ðCô 	‡[�[×ÑñCr   c	           
     ó  € V P                  4       p	\        V4      w  r«V'       d   \        P                  ! V4      pM1\	        WWER4      w  rÞpVf   Q h\        V\        P                  V4      pT;_uu_ 4       pV'       g   \        VXV4       \        WùV4       \        WûW`P                  V P                  V4      w  ppVV
,
          Vn        V P                  V4      '       g   \        hVuuRRR4       #   + '       g   i     M; i Q h)aU  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|  rƒ  rò   ra  r
   r  rz   )r×   r®   r   r;   rB   r¯   rØ   rÙ   rC   r  rb  r   r  rA   r¨   r—   r  rZ  s   &&&&&&&&&         r   rh  rh  ´  sæ   € ðV �9‰9‹;€DÜ-¨gÓ6Ñ€ZßÜ0:×0FÒ0FÀtÓ0L‰ä$;Ø˜¨dó%
Ñ!ˆ˜&ð Š~Ðˆ~Ü˜œV×/Ñ/°Ó8ˆß	‰ˆqßä�Q˜ ZÔ0Ü�˜*Ô%Ü(ØÐ+¯Y©Y¸¿¹¸ó
ÑˆˆMð  Õ+ˆŒØ�}‰}˜Q×ÒÜÐØ÷ 
��Šúð 	ðØs   Á8A3C6Ã6D	c                 ó¼   €   V P                  4        R#   \        P                   d    \        Y4        K7  \        P                   d    \        Y4        KY  i ; i)TN)Údo_handshaker…   rn  r˜   ro  rš   r–   s   &&r   Ú_tls_handshaker•  ú  sJ   € Ø
ð	.Ø�N‰NÔÙøÜ×#Ñ#ô 	.Ü˜q×-Ü×$Ñ$ô 	.Ü˜q×-ð	.ús   ƒ • A¸AÁAÁAc                ó–   € V ^8„  d   QhR\         \        ,          R\         R\        \        ,          R,          R\        P                  /# )rj   rÜ   Úcheck_hostnameÚalpnsNrm   )rá   rÀ   rý   r…   r½   )rq   s   "r   rr   rr     sA   € ÷ ñ Ü”3�Jðäðô ”�9�tÕðô 	‡^�^ñ	r   c                ó   € \         P                  P                  V 4      w  r4\        P                  ! W4R7      p\        P
                  P                  Vn        Wn        V RJ d   \        P                  Vn
        Ve   VP                  V4       V# )a%  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_capathr…   Úcreate_default_contextÚ
TLSVersionÚTLSv1_2Úminimum_versionr—  Ú	CERT_NONEr.  Úset_alpn_protocols)rÜ   r—  r˜  rš  r›  r»   s   &&&   r   Úmake_ssl_contextr¤    sq   € ô( —]‘]×FÑFÀvÓN�N€FÜ×,Ò,°FÔJ€Kô #&§.¡.×"8Ñ"8€KÔØ!/ÔØ�ƒÜ"%§-¡-ˆÔØÒØ×&Ñ& uÔ-ØÐr   c                ót   € V ^8„  d   QhR\         R,          R\        \         ,          R\        P                  /# )rj   r¼   NrÜ   rm   )rÀ   rá   r…   r½   )rq   s   "r   rr   rr   '  s5   € ÷ Jñ JÜ˜4•ZðJÜ)-´­ðJä‡^�^ñJr   c                 ó    € \        WR JR.4      # )NÚdot)r¤  )r¼   rÜ   s   &&r   Ú_make_dot_ssl_contextr¨  '  s   € ô ˜F¸4Ð$?À%ÀÓIÐIr   c                óˆ  € V ^8„  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\        P                  R,          R\        P                  R,          R\        R,          R\        \        ,          R\         P                  P                  /# )rj   r×   r®   r   Nr;   rB   r¯   rØ   rÙ   rC   r»   r¼   rÜ   rm   )
r   rÞ   rß   rÀ   rà   ro   rá   r…   r†   r½   )rq   s   "r   rr   rr   -  sÏ   € ÷ iñ iÜ
‡{�{×Ñðiäðiô �T�\ðiô ð	iô
 �$�Jðiô ðiô ðiô ðiô �-‰-˜$Õ
ðiô —‘ $Õ&ðiô ˜4•Zðiô ”3�Jðiô 	‡[�[×Ññir   c                óD  € V'       d   \        V VVVVVVVV4	      # V P                  4       p\        V4      w  rÞ\        WWER4      w  pppVf   Q hV	f   \	        WºRJR.4      p	\        V\        P                  V	V
VR7      ;_uu_ 4       p\        VVV4       \        VV4       \        VWÎ4       \        VWæV P                  V P                  V4      w  ppVV,
          Vn        V P                  V4      '       g   \         hVuuRRR4       #   + '       g   i     M; i Q h)aï  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   r•  r|  rƒ  rò   ra  r
   r  rz   )r×   r®   r   r;   rB   r¯   rØ   rÙ   rC   r»   r¼   rÜ   r  rb  r   rA   r¨   r—   r  rZ  s   &&&&&&&&&&&&        r   Útlsr«  -  s:  € ÷z ô ØØØØØØØØØó

ð 
	
ð �9‰9‹;€DÜ-¨gÓ6Ñ€ZÜ 7Ø�V¨$ó!Ñ€Rˆ�fð Š>Ðˆ>ØÒÜ& vÀdÐ/JÈUÈGÓTˆä	Ø
Ü×ÑØØ'Ø÷
õ 
ð 
Ü��K Ô,Ü�q˜*Ô%Ü��DÔ%Ü(Øˆz¨Q¯Y©Y¸¿¹¸ó
ÑˆˆMð  Õ+ˆŒØ�}‰}˜Q×ÒÜÐØ÷!
÷ 
÷ 
ò 
úð$ 	ðØs   Â	A8DÄD	c                óˆ  € V ^8„  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\         P                  P                  R,          R\        \        ,          R\        R,          R\        R,          R\         P                  P                  /# )rj   r×   r®   r   Nr;   rB   r¯   rØ   rÙ   rå   rÜ   rù   r¼   rm   )	r   rÞ   rß   rÀ   rà   ro   rá   rþ   rÿ   )rq   s   "r   rr   rr   ™  sÐ   € ÷ ^ñ ^Ü
‡{�{×Ñð^äð^ô �T�\ð^ô ð	^ô
 �$�Jð^ô ð^ô ð^ô ð^ô —‘×+Ñ+¨dÕ2ð^ô ”3�Jð^ô �D�jð^ô ˜4•Zð^ô 	‡[�[×Ññ^r   c           	     ó†  € \         P                  P                  '       g   \        R4      hVe   V
f   Tp
^ V n        V P                  4       pV'       d   \        P                  ! R4      pTpM"\         P                  P                  WšR7      pTpT;_uu_ 4        V'       g   XP                  WWE4      p\        V4      w  ppXP                  V4      ;_uu_ 4       pVP                  VR4       VP                  \        V4      4      pRRR4       \        P                  ! 4       pRRR4       \         P                   P#                  VV P$                  V P&                  VVR7      p\)        XX,
          R4      Vn        V P+                  V4      '       g   \,        hV#   + '       g   i     Lœ; i  + '       g   i     L’; i)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.N)r.  r/  Trñ   r	   )r   rþ   r1  r   r2  r  r  r  r3  r4  r*   r5  rG  r7  r   r
   rÞ   r  rò   ró   r8  r  rz   )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þ   ™  sj  € ôn �8‰8××ÐÜÐ5Ó6Ð6àÒ" xÒ'7Ø"ˆà€A„DØ�9‰9‹;€D÷ Ü5?×5KÒ5KÈDÓ5QˆØ#‰ä—(‘(×*Ñ*Øð +ó 
ˆð ˆç	ŠßØ(×0Ñ0Ø˜VóˆNô -¨WÓ5Ñˆ�
Ø×'Ñ'¨×0Ô0°FØ�K‰K˜˜dÔ#Ø—>‘>¤*¨ZÓ"8Ó9ˆD÷ 1ô —’“ˆ÷ 
ô 	�‰×ÑØØ—	‘	Ø—M‘MØ)Ø'ð 	ó 	€Aô �˜%• Ó%€A„FØ�=‰=˜×ÒÜÐØ€H÷ 1×0ú÷ 
�ús%   ÂAF0Ã-F	Ä	F0ÆF-Æ(F0Æ0G 	c                   ó&   € ] tR tRtRt^ t^t^tRtR# )ÚUDPModeiú  zó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"
ra   N)	rN   rO   rP   rQ   rx   ÚNEVERÚ	TRY_FIRSTÚONLYrR   ra   r   r   r¯  r¯  ú  s   † ñð €EØ€IØ„Dr   r¯  c                ó$  € V ^8„  d   QhR\         P                  P                  R\        P                  \        P
                  ,          R\         P                  P                  R\        R,          R\        R,          R\        R,          R\        /# )	rj   Útxn_managerr—   rT  ÚserialNr   r   rm   )r   ÚtransactionÚTransactionManagerr3   r…   r†   rÞ   rß   ro   rà   r   )rq   s   "r   rr   rr     s{   € ÷ 1:ñ 1:Ü—‘×3Ñ3ð1:ä‡}�}”s—}‘}Õ$ð1:ô �;‰;×Ñð1:ô �$�Jð	1:ô
 �T�\ð1:ô ˜•ð1:ô 	ñ1:r   c              #  ó¢  "  € VP                   ^ ,          P                  pV\        P                  P                  8H  pV P                  4       pVP                  4       p	\        V\        P                  4      ;'       d    VP                  \        P                  8H  p
V
'       d   \        WRV4       M3\        P                  ! R\        V	4      4      V	,           p\        WV4       \        P                   P#                  WW:4      ;_uu_ 4       pRpRpRpV'       gÏ   \%        V4      w  ppVe   Ve
   VV8”  d   TpV
'       d   \'        VRV4      w  ppM3\)        V^V4      p\        P*                  ! RV4      w  p\)        VVV4      p\        P,                  P/                  VVP0                  VP2                  RVVV
'       * VR7      pVP5                  V4      pVx € VP6                  pKÖ  VP0                  '       d6   Ve2   VP8                  '       g    \        P:                  P=                  R4      hRRR4       R#   + '       g   i     R# ; i5i)z'Given a socket, does the zone transfer.Nr  FrX  T)rò   ró   ÚxfrÚoriginÚtsig_ctxÚmultirØ   zmissing TSIG)ÚquestionÚrdtyper   Ú	rdatatypeÚIXFRÚfrom_wire_originr  r„   r3   r´   r`  rI  r€  Úpackr  ru  r¹  ÚInboundr*   rD  rq  r�  rÞ   r  rò   ra  Úprocess_messager»  Úhad_tsigr   Ú	FormError)r´  r—   rT  rµ  r   r   r¾  Úis_ixfrrº  r  Úis_udpr{  ÚinboundÚdoner»  r  r>   ÚmexpirationÚrwirer‚  rt  s   &&&&&&               r   Ú_inbound_xfrrÍ    sÇ  é € ð �^‰^˜AÕ×%Ñ%€FØœŸ™×*Ñ*Ñ*€GØ×)Ñ)Ó+€FØ�=‰=‹?€DÜ˜œ6Ÿ=™=Ó)×IÐI¨a¯f©f¼×8IÑ8IÑ.I€FßÜ�!˜4 Õ,ä—’˜T¤3 t£9Ó-°Õ4ˆÜ�1˜jÔ)Ü	�‰�‰˜¨f×	=Ô	=ÀØˆØˆØ(,ˆßÜ-¨gÓ6ÑˆQ�ØÒ"ØÒ&¨;¸Ô+Cà(�ßÜ& q¨%°Ó=‘
�™ä! ! Q¨Ó4�Ü—}’} T¨5Ó1‘�Ü! ! Q¨Ó4�Ü—‘×%Ñ%ØØŸ™Ø!ŸI™IØØØ!Ø!”zØ!(ð &ó 	ˆAð ×*Ñ*¨1Ó-ˆDØŠGØ—z‘zŠHØ�=�=ˆ=˜Qš]°1·:·:°:Ü—-‘-×)Ñ)¨.Ó9Ð9÷= 
>×	=×	=Ò	=üs>   ‚B!IÂ$A)IÄH;Ä&H;ÅB8H;Ç<H;ÈH;È1
IÈ;I	É	Ic                 óÆ  € V ^8„  d   QhR\         R\        P                  P                  \         ,          R\        P                  P
                  \         ,          R\        P                  P                  \         ,          R\        R,          R\        R\        \        P                  P                  \        P                  P                  3,          R,          R	\        P                  P                  \         ,          R,          R
\        R\        R,          R\         R,          R\        R\        R\        R\        P                  P                  \         ,          R\        /# )rj   r®   Úzoner¾  Úrdclassr   Nr;   rò   ÚkeynameÚ
relativizer)   rB   r¯   rµ  Úuse_udpÚkeyalgorithmrm   )rÀ   r   r¾   r¿   r¿  Ú	RdataTypeÚ
rdataclassÚ
RdataClassrà   ro   r   rU  rV  rá   r   )rq   s   "r   rr   rr   ;  sA  € ÷ sGñ 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   c           
   #  óˆ  "  €  ! R R\         P                  P                  4      p\        V\        4      '       d    \         P
                  P                  V4      p\         P                  P                  P                  V4      p\         P                  P                  WV4      pV\         P                  P                  8X  dˆ   VP                  VP                  V\         P                  P                   \         P                  P"                  RR7      p\         P$                  P                  RRRV R24      pVP'                  V^ 4       Ve   VP)                  WgVR
7       \+        WW«R4      w  ppp
Vf   Q h\-        V	4      w  ppV! W4      pV'       d+   V\         P                  P                  8w  d   \/        R4      hV'       d   \0        P2                  M\0        P4                  p\7        VVV
4      ;_uu_ 4       p\9        VVV4       \;        VVVWÄV4       R	j  x€L
  R	R	R	4       R	#  L  + '       g   i     R	# ; i5i)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                   óZ   a € ] tR tRt o R tR tV 3R lR ltR tRV 3R lR lltR	t	V t
R
# )Ú$xfr.<locals>.DummyTransactionManageri€  c                ó\   € YV'       d   \         P                  P                  MT3V n        R # r   )r   r¾   ÚemptyÚinfo)r!   rº  rÒ  s   &&&r   r   Ú-xfr.<locals>.DummyTransactionManager.__init__�  s   € Ø¿z¬S¯X©X¯^ª^ÈvÐVˆDŽIr   c                ó   € V P                   # r   ©rÝ  ©r!   s   &r   Úorigin_informationÚ7xfr.<locals>.DummyTransactionManager.origin_information„  s   € Ø—9‘9Ðr   c                óH   <€ V ^8„  d   QhRS[ P                  P                  /# )rj   rm   )r   rÖ  r×  )rq   rV   s   "€r   rr   Ú1xfr.<locals>.DummyTransactionManager.__annotate__‡  s   ø€ ÷ 	&ñ 	&™sŸ~™~×8Ñ8ñ 	&r   c                ó   € \         hr   rH   rá  s   &r   Ú	get_classÚ.xfr.<locals>.DummyTransactionManager.get_class‡  rg   r   c                ó   € \         hr   rH   rá  s   &r   ÚreaderÚ+xfr.<locals>.DummyTransactionManager.readerŠ  rg   r   c                óN   <€ V ^8„  d   QhRS[ RS[P                  P                  /# )rj   Úreplacementrm   )rá   r   r¶  ÚTransaction)rq   rV   s   "€r   rr   rå  �  s)   ø€ ÷ 	Iñ 	I¡dð 	I±s·±×7RÑ7Rñ 	Ir   c                óh   €  ! R  R4      p\        \        P                  P                  V! 4       4      # )c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚExfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransactioniŽ  c                ó   € R # r   ra   )r!   r^   Úkws   &*,r   ÚnopÚIxfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransaction.nop�  s   € Ùr   c                ó   € V P                   # r   )rô  )r!   r>   s   &&r   Ú__getattr__ÚQxfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransaction.__getattr__’  s   € ØŸ8™8�Or   ra   N)rN   rO   rP   rQ   rô  r÷  rR   rS   rh   s   @r   ÚDummyTransactionrñ  Ž  s   ø‡ € ò÷$ð $r   rù  )r   r   r¶  rî  )r!   rí  rù  s   && r   ÚwriterÚ+xfr.<locals>.DummyTransactionManager.writer�  s)   € ÷$ñ $ô œŸ™×3Ñ3Ñ5EÓ5GÓHÐHr   rà  N)F)rN   rO   rP   rQ   r   râ  rç  rê  rú  rR   rS   rh   s   @r   ÚDummyTransactionManagerrÚ  €  s1   ø‡ € ò	Wò	÷	&ð 	&ò	&÷	I÷ 	Ið 	Ir   rü  T)ÚcreateÚINÚSOAz. . z 0 0 0 0N)Ú	algorithmzcannot do a UDP AXFR)r   r¶  r·  r„   rÀ   r¾   Ú	from_textr¿  rÕ  ÚmakerÞ   Ú
make_queryrÀ  Ú
find_rrsetÚ	authorityrÖ  rþ  rÿ  ÚrdataÚaddÚuse_tsigr²   r*   r¬   r3   r`  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¨WÓ5€AØ”—‘×#Ñ#Ô#Ø—‘Ø�K‰K˜œsŸ~™~×0Ñ0´#·-±-×2CÑ2CÈDð ó 
ˆô �i‰i×!Ñ! $¨°°f°X¸XÐ/FÓGˆØ�	‰	�#�qÔØÒØ	�
‰
�7¨|ˆ
Ô<Ü 7Ø�V¨$ó!Ñ€Rˆ�fð Š>Ðˆ>Ü$ XÓ.�O€Qˆ
Ù	  Ó	2€Bß�6œSŸ]™]×/Ñ/Ô/ÜÐ/Ó0Ð0ß%,”×!Ò!´&×2DÑ2D€IÜ	�R˜ F×	+Ô	+¨qÜ��K Ô,Ü  A q¨&¸:ÓF×FÐF÷ 
,Ñ	+áF÷ 
,×	+Ð	+üs6   ‚GIÇ5IÇ= H.ÈH,ÈH.È"
IÈ,H.È.H?	È9	Ic                ó  € V ^8„  d   QhR\         R\        P                  P                  R\        P                  P
                  R,          R\        R\        R,          R\        R,          R\         R,          R	\        R
\        RR/
# )rj   r®   r´  rT  Nr;   r   r)   rB   r¯   Úudp_moderm   )	rÀ   r   r¶  r·  rÞ   rß   ro   rà   r¯  )rq   s   "r   rr   rr   ±  s�   € ÷ Iñ IÜðIä—‘×3Ñ3ðIô �;‰;×Ñ Õ%ðIô ð	Iô
 �T�\ðIô �d�lðIô �$�JðIô ðIô ðIð 
ñIr   c	           
     ó†  € Vf#   \         P                  P                  V4      w  r)M\         P                  P                  V4      p	\	        WWgR4      w  r«pV
f   Q h\        V4      w  rÍVP                  ^ ,          P                  \         P                  P                  8X  df   V\        P                  8w  dQ   \        V
\        P                  V4      ;_uu_ 4       p\        WëV4        \!        WW)WM4       F  pK  	   RRR4       R# \        V
\        P&                  V4      ;_uu_ 4       p\        WëV4       \!        WW)WM4       F  pK  	  RRR4       R#   \         P                  P"                   d    T\        P$                  8X  d   h  Mi ; i RRR4       K”    + '       g   i     L¤; i  + '       g   i     R# ; i)aM  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.
NT)r   r¹  r  Úextract_serial_from_queryr²   r*   r½  r¾  r¿  rÀ  r¯  r°  r2   r3   r`  r5   rÍ  ÚUseTCPr²  r4   )r®   r´  rT  r;   r   r)   rB   r¯   r  rµ  rA   r¨   r>   r   r—   s   &&&&&&&&&      r   Úinbound_xfrr  ±  sk  € ð^ ‚}ÜŸ'™'×,Ñ,¨[Ó9‰ˆ�ä—‘×2Ñ2°5Ó9ˆä 7Ø�V¨$ó!Ñ€R�fð Š>Ðˆ>Ü$ XÓ.�O€QØ‡~�~�aÕ×Ñ¤3§=¡=×#5Ñ#5Ô5¸(ÄgÇmÁmÔ:SÜ˜œV×.Ñ.°×7Ô7¸1Ü�Q ZÔ0ðÜ%Ø E°7ö�Añ ñð ÷ 8Ñ7ô 
�Rœ×+Ñ+¨V×	4Ô	4¸Ü� Ô,Ü˜k¨e¸WÖQˆAÙñ R÷ 
5Ñ	4øô	 —7‘7—>‘>ô ØœwŸ|™|Ô+Øñ ,ðúØ+÷ 8×7×7Ñ7ú÷ 
5×	4Ð	4ús6   ÃFÃ)EÄ+!F/Å5FÆFÆFÆFÆF,	Æ/G 	c                óÊ   € V ^8„  d   Qh/ ^ \         9   dO   \        \        P                  \        ,          \        P
                  \        .\        P                  3,          ;R&   # )rj   r¶   )Ú__conditional_annotations__r   r3   rn   ro   rp   )rq   s   "r   rr   rr      sI   € × Ñ ÷Fò ”Ü×ÑœCÕ¤×!2Ñ!2´CÐ8¼&¿-¹-ÐGõñ òG r   )Tr   rM   )	NrÕ   Nrƒ   FFTTN)
NNFFNr   FFFN)
Né5   Nrƒ   FFFFNF)
Nr  Nrƒ   FFFNNF)NFNr   F)Nr  Nrƒ   FFN)TTN)
NéU  Nrƒ   FFNNNT)
Nr  Nrƒ   FFNTNN)sr  rx   r  r  Úenumr†  rŽ  rû   rˆ   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.xfrr…   ÚImportErrorÚdns._no_sslÚ_no_sslr   r   Ú	_featuresÚhaveÚ_have_httpxÚhttpcore._backends.syncr8   r  ÚNetworkBackendÚ_CoreNetworkBackendÚ	_backendsÚsyncÚ
SyncStreamr6   r   ÚHTTPTransportrX   rú   rt   r¶   r   ÚDNSExceptionrv   rÆ  rz   r|   r   r¹  ÚTransferErrorr*   r“   r˜   rš   r¤   rª   r²   r2   rÅ   rÇ   rË   ÚIntEnumrÍ   rb   rÎ   r  r$  r+  r   rD  rI  rP  r\  rc  ri  rq  ru  r|  rƒ  r5   rh  r•  r¤  r¨  r«  rþ   r¯  rÍ  r¿  ÚAXFRrÖ  rþ  rU  Údefault_algorithmr°  r  rr   )r  s   @r   Ú<module>r9     s  øðö$ ã Û Û Û Û 	Û Û Û Û Û Û ß =× =ã Û Û Û Û Û Û Û Û Û Û Û Û ðÛò
ò2ð �m‰m× Ñ  Ó'€ßÛ"Ûà"×1Ñ1ÐØ×(Ñ(×-Ñ-×8Ñ8€Oô4&Ð-ô 4&ôl˜×,Ñ,õ ÷,&ñ &ð  €õ*ð ð ó ô
H�s—}‘}×1Ñ1ô HôG�#—-‘-×)Ñ)ô GôˆC�M‰M×&Ñ&ô ô
ˆC�M‰M×&Ñ&ô ð —‘×%Ñ%€ò$ò(ò80ò0ò	)òô )%÷X÷B'òV
-õô�$—,‘,ô ð& !ØØØØ"Ø!ØØØØ$(Ø*.Ø26Ø×"Ñ"Ø +× 3Ñ 3÷!Lõ^õO÷":òz	1ò1÷÷:g4÷TY÷xU òpò*1÷ $÷<,ò^-÷CòL.÷õDJ÷i÷X^ôB
ˆd�l‰lô 
õ1:ðn -0¯M©M×,>Ñ,>Ø/2¯~©~×/@Ñ/@Ø ØØ8<Ø*.ØØ!ØØØØØ(+¯©×(BÑ(B÷sGðr )-ØØ Ø!ØØØŸ™÷Iñ IøðA4 ô ßÐðús   Á:L ÌL)Ì(L)