
    Eqgex              #          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	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mZ ddlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) e(rddl*Z*ej+        j,        Z-d Z.dHdZ/	 dHdej0        j1        d	eej2        j3        e4f         d
e
dee5         dee6e5f         f
dZ7	 	 	 	 	 	 	 	 	 	 dIdej0        j1        d
ee
         dee5         de8de8deeej9        j:        ej;        j<        f                  dee4         de8de8de8deej2        j3                 de
fdZ=	 	 	 	 	 	 	 	 	 	 	 dJdej2        j3        de>dee5         de6dee>         de6de8de8de8de8deej0        j1                 d eej0        j?                 de8dej2        j3        fd!Z@	 	 	 	 	 	 	 	 	 	 	 dKdej2        j3        de>dee5         de6dee>         de6de8de8de8d"eej0        j1                 d#eej0        jA                 d eej0        j?                 de8deej2        j3        e8f         fd$ZB	 dHdej0        jA        d	eej2        j3        e4f         dee5         dee6e5f         fd%ZCd& ZD	 	 	 	 	 dLdej0        jA        dee5         de8deeej9        j:        ej;        j<        f                  dee4         de8deej2        j3        e5f         fd'ZE	 	 	 	 	 	 	 	 dMdej2        j3        de>dee5         de6dee>         de6de8de8deej0        jA                 d eej0        j?                 dej2        j3        fd(ZF	 	 	 	 	 	 	 	 	 	 	 dNdej2        j3        de>dee5         de6dee>         de6de8de8deej0        jA                 d eej0        j?                 d+ee)jG                 d,ee>         d-ee8e>f         dej2        j3        fd.ZHd/ed0         dd0fd1ZIdd2dddddd3d*d*ddejJ        ejK        fdej2        j3        de>dee5         de6dee>         de6de8de8d4ed5         d6e>d7e8d-ee8e>f         d8ee>         d/ed0         d9e6d:edej2        j3        f"d;ZL	 	 	 	 	 	 	 	 	 	 dOdej2        j3        de>d<e>dee5         de6dee>         de6de8de8d-ee8e>f         d eej0        j?                 d=ee>         d7e8dej2        j3        fd>ZM	 	 	 	 	 	 	 	 	 	 	 dPdej2        j3        de>dee5         de6dee>         de6de8de8d?eejN        jO                 d-ee8e>f         d eej0        j?                 d=ee>         d,ee>         dej2        j3        fd@ZNdAejP        jQ        dBej0        jR        dej2        j3        dCee6         dee5         de5de
fdDZSdddddde"jT        dfde>dAejP        jQ        deej2        j3                 de6dee5         dEee5         dee>         de6dFe"d eej0        j?                 ddfdGZUdS )QzTalk to a DNS server.    N)AnyDictOptionalTupleUnioncast)NullContext)BadResponseHTTPVersionNoDOHNoDOQUDPMode_check_status_compute_times_make_dot_ssl_context_matches_destination
_remaininghave_dohsslc                     |s|r>|8| t           j        k    rd}n%| t           j        k    rd}nt          d|            ||fS d S )Nz0.0.0.0z::zunknown address family )socketAF_INETAF_INET6NotImplementedError)afaddressports      @/var/www/html/env/lib/python3.11/site-packages/dns/asyncquery.py_source_tupler   >   sf      
$ 
?V^###v&&)*HB*H*HIIIt    c                 Z    | (|st          j                     }t          | |z
  d          S d S Nr   )timemax)
expirationnows     r   _timeoutr'   N   s5     	)++C:#Q'''tr    sockwhatdestinationr%   returnc                    K   t          |t          j        j                  r|                                }t          j                    }|                     ||t          ||                     d{V }||fS )a  Send a DNS message to the specified UDP socket.

    *sock*, a ``dns.asyncbackend.DatagramSocket``.

    *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.  The expiration value is meaningless for the asyncio backend, as
    asyncio's transport sendto() never blocks.

    Returns an ``(int, float)`` tuple of bytes sent and the sent time.
    N)
isinstancednsmessageMessageto_wirer#   sendtor'   )r(   r)   r*   r%   	sent_timens         r   send_udpr5   W   sr      . $+,, ||~~	Ikk$Xj)-L-LMMMMMMMMAy>r    Fr    ignore_unexpectedone_rr_per_rrsetkeyringrequest_macignore_trailingraise_on_truncationignore_errorsqueryc                   K   d}	 |                      dt          |                     d{V \  }}t          | j        |||          sEt	          j                    }	 t
          j                            ||||||          }n[# t
          j        j        $ r6}|	r.|
,|
	                    |                                          sY d}~Â d}~wt          $ r |	rY Ղ w xY w|	r|
|
	                    |          s|||fS )aj  Read a DNS message from a UDP socket.

    *sock*, a ``dns.asyncbackend.DatagramSocket``.

    See :py:func:`dns.query.receive_udp()` for the documentation of the other
    parameters, and exceptions.

    Returns a ``(dns.message.Message, float, tuple)`` tuple of the received message, the
    received time, and the address where the message arrived from.
    r    T  N)r8   r9   r7   r:   r;   )recvfromr'   r   familyr#   r.   r/   	from_wire	Truncatedis_response	Exception)r(   r*   r%   r6   r7   r8   r9   r:   r;   r<   r=   wirefrom_addressreceived_timeres                   r   receive_udprK   u   s_     0 D!0%)]]5(::N:N%O%OOOOOOO|#K{4E
 
 	 		%%'!1 /$7 &  AA {$ 		 		 		 %))!))++66 &  	 	 	 		
  	U.u7H7H7K7K.=,//s$   %B C+C	C		CC5   qwheretimeoutr   sourcesource_portbackendc                   K   |                                  }t          |          \  }}t          j                            |          }t          ||f|          }|
rt          |
          }nu|st          j                                        }t          |||          }|
                                r||f}nd}|                    |t          j        d||           d{V }|4 d{V }t          ||||           d{V  t          |||||| j        | j        ||	||            d{V \  }}}||z
  |_        |s|                     |          st(          |cddd          d{V  S # 1 d{V swxY w Y   dS )aF  Return the response obtained after sending a query via UDP.

    *sock*, a ``dns.asyncbackend.DatagramSocket``, or ``None``,
    the socket to use for the query.  If ``None``, the default, a
    socket is created.  Note that if a socket is provided, the
    *source*, *source_port*, and *backend* are ignored.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.udp()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    Nr   )r1   r   r.   inetaf_for_address_lltupler	   asyncbackendget_default_backendr   datagram_connection_requiredmake_socketr   
SOCK_DGRAMr5   rK   r8   macr#   rD   r
   )rM   rN   rO   r   rP   rQ   r6   r7   r:   r;   r(   rR   r<   rF   
begin_timer%   r   r*   cmstupledtuplesrI   rH   _s                            r   udprc      s\     8 99;;D-g66Z		 	 	'	'BE4="--K 
Q5@5F5F 	=&::<<Gr6;77//11 	T]FFF&&r6+<aPPPPPPPP       Qq$Z888888888&1IE'
 '
 !
 !
 !
 !
 !
 !
M1 +  	q!1!1 	)                             s   )A/E++
E58E5udp_socktcp_sockc                    K   	 t          | ||||||||d|	||           d{V }|dfS # t          j        j        $ r% t	          | ||||||||
|
  
         d{V }|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.

    *udp_sock*, a ``dns.asyncbackend.DatagramSocket``, 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 the *source*,
    *source_port*, and *backend* are ignored for the UDP query.

    *tcp_sock*, a ``dns.asyncbackend.StreamSocket``, or ``None``, the
    socket to use for the TCP query.  If ``None``, the default, a
    socket is created.  Note that if a socket is provided *where*,
    *source*, *source_port*, and *backend*  are ignored for the TCP query.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.udp_with_fallback()` for the documentation
    of the other parameters, exceptions, and return type of this
    method.
    TNF)rc   r.   r/   rC   tcp)rM   rN   rO   r   rP   rQ   r6   r7   r:   rd   re   rR   r<   responses                 r   udp_with_fallbackri      s      F 
 
 
 
 
 
 
 
 %  ;       
 
 
 
 
 
 
 
 $ s   $) 6A"!A"c                 Z  K   t          |t          j        j                  r|                    d          }n&t          |                              dd          |z   }t          j                    }|                     |t          ||                     d{V  t          |          |fS )zSend a DNS message to the specified TCP socket.

    *sock*, a ``dns.asyncbackend.StreamSocket``.

    See :py:func:`dns.query.send_tcp()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    T)prepend_length   bigN)
r-   r.   r/   r0   r1   lento_bytesr#   sendallr'   )r(   r)   r%   tcpmsgr3   s        r   send_tcprr   8  s       $+,, 5T22
 T##Au--4	I
,,vx
I>>
?
????????KK##r    c                    K   d}|dk    r[|                      |t          |                     d{V }|dk    rt          d          |t          |          z
  }||z   }|dk    [|S )z|Read the specified number of bytes from stream.  Keep trying until we
    either get the desired amount, or we hit EOF.
    r    r   NEOF)recvr'   EOFErrorrn   )r(   countr%   ra   r4   s        r   _read_exactlyrx   Q  s       	A
!))))E8J#7#788888888885//!AE !)) Hr    c                   K   t          | d|           d{V }t          j        d|          \  }t          | ||           d{V }t          j                    }	t          j                            |||||          }
|
|	fS )zRead a DNS message from a TCP socket.

    *sock*, a ``dns.asyncbackend.StreamSocket``.

    See :py:func:`dns.query.receive_tcp()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    rl   N!Hr8   r9   r7   r:   )rx   structunpackr#   r.   r/   rB   )r(   r%   r7   r8   r9   r:   ldatalrF   rH   rI   s              r   receive_tcpr   _  s         a44444444E=u%%DQtQ
33333333DIKKM)' 	 	 	A }r    c
           	        K   |                                  }
t          |          \  }}|r*|                                 d{V  t          |          }n~t          j                            |          }t          |||          }||f}|	st          j        	                                }	|	
                    |t          j        d|||           d{V }|4 d{V }t          ||
|           d{V  t          |||| j        | j        |           d{V \  }}||z
  |_        |                     |          st&          |cddd          d{V  S # 1 d{V swxY w Y   dS )aO  Return the response obtained after sending a query via TCP.

    *sock*, a ``dns.asyncbacket.StreamSocket``, or ``None``, the
    socket to use for the query.  If ``None``, the default, a socket
    is created.  Note that if a socket is provided
    *where*, *port*, *source*, *source_port*, and *backend* are ignored.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.tcp()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    Nr   )r1   r   getpeernamer	   r.   rT   rU   r   rW   rX   rZ   r   SOCK_STREAMrr   r   r8   r\   r#   rD   r
   )rM   rN   rO   r   rP   rQ   r7   r:   r(   rR   rF   r]   r%   r^   r   r_   r`   ra   rI   rH   s                       r   rg   rg   }  sJ     4 99;;D-g66Z 
          5@5F5F X$$U++r6;77 	=&::<<G&&"Avvw
 
 
 
 
 
 
 
        Qq$
+++++++++#.z+QY$
 $
 
 
 
 
 
 
M +}}Q 	                             s   A&E
E!EU  Tssl_contextserver_hostnameverifyc                 f  K   t          |          \  }}|rt          |          }n|
t          ||          }
t          j                            |          }t          |||          }||f}|	st          j                                        }	|		                    |t          j        d||||
|           d{V }|4 d{V }t          |          }t          | |||||||||	
  
         d{V }t          j                    }||z
  |_        |cddd          d{V  S # 1 d{V swxY w Y   dS )a  Return the response obtained after sending a query via TLS.

    *sock*, an ``asyncbackend.StreamSocket``, 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
    connected SSL stream socket, and *where*, *port*,
    *source*, *source_port*, *backend*, *ssl_context*, and *server_hostname*
    are ignored.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.tls()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    Nr   )r   r	   r   r.   rT   rU   r   rW   rX   rZ   r   r   r'   rg   r#   )rM   rN   rO   r   rP   rQ   r7   r:   r(   rR   r   r   r   r]   r%   r^   r   r_   r`   ra   rh   end_times                         r   tlsr     s     <  .g66Z 
5@5F5F/HHKX$$U++r6;77 	=&::<<G&&	
 	
 	
 	
 	
 	
 	
 	
        Q:&&
 
 
 
 
 
 
 
 9;; :-!                             s   AD  
D*-D*resolverzdns.asyncresolver.Resolverc                 D    | dd l }|j                                        } | S r"   )dns.asyncresolverasyncresolverResolver)r   r.   s     r   _maybe_get_resolverr     s/         $--//Or    i  z
/dns-queryclientzhttpx.AsyncClientpathpostbootstrap_addressrA   http_versionc                   K   	 t           j                            |          }n# t          $ r d}Y nw xY w|Ut           j                            |          r6|t
          j        k    rd| d| |	 }n|t
          j        k    r
d| d| |	 }n|}i }|xt          j	        
                    |          }|j        t          d          t           j                            |j                  r|j        }|j        |d<   |j        |j        }|t          j        k    s|t          j        k    rt           s|lt#          |          }|j        J |                    |j        |           d{V }t'          j        t+          |                                                    }t/          | ||||||||||
           d{V S t           st0          |r)t3          |t4          j                  st          d	          |                                 }d
di}|t          j        t          j        fv }|t          j        t          j        fv }t           j                                         }|d}d}n|}|}|rtC          |          }n= |"                                ||||||||          }t5          j        ||||          }|4 d{V }|
rf|#                    dtI          tK          |                    d           |&                    |'                    ||||          |           d{V }nptQ          j)        |          *                    d          }|+                                } |&                    |,                    ||d| i|          |           d{V }	 ddd          d{V  n# 1 d{V swxY w Y   |j-        dk     s|j-        dk    r!t          | d|j-         d|j.                  t           j/        0                    |j.        | j1        | j2        ||          }!|j3        4                                |!_5        | 6                    |!          stn          |!S )a  Return the response obtained after sending a query via DNS-over-HTTPS.

    *client*, a ``httpx.AsyncClient``.  If provided, the client to use for
    the query.

    Unlike the other dnspython async functions, a backend cannot be provided
    in this function because httpx always auto-detects the async backend.

    See :py:func:`dns.query.https()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    Nzhttps://:z	https://[z]:zno hostname in URLsni_hostname)r   r   z.session parameter must be an httpx.AsyncClientacceptzapplication/dns-messager   )local_addresshttp1http2r   
local_portr   r   rA   )r   r   r   	transport)zcontent-typezcontent-length)headerscontent
extensions   =r.   )r   paramsr      i+  z responded with status code z
Response body: r{   )8r.   rT   rU   
ValueError
is_addressr   r   r   urllibparseurlparsehostnamer   r   H3DEFAULTr   r   resolve_namerandomchoicelist	addresses_http3r   r-   httpxAsyncClientr1   H1H2rW   rX   r	   get_transport_classupdatestrrn   wait_forr   base64urlsafe_b64encoderstripdecodegetstatus_coder   r/   rB   r8   r9   elapsedtotal_secondsr#   rD   r
   )"rM   rN   rO   r   rP   rQ   r7   r:   r   r   r   r   r   r   rA   r   r   urlr   parsedanswersrF   r   h1h2rR   r   r   r^   r   
the_clientrh   twirerI   s"                                     r   httpsr   	  s     <X$$U++   	~#(--e44~1U11T1411CC6?""3e33t3T33CJ &&s++?"12228v// 	9 &)/J~&;";D{~%%+++H+$*844H?...$11&/6JJJJJJJJG &d73D3D3F3F.G.G H H
 
 
 
 
 
 
 
 
 	
   Kj):;; KIJJJ 99;;D23G	+.+*=>	>B	+.+*=>	>B2244G~

 
 W5@5H5H1G//11'!/	
 	
 	
	 Rr&IVVV       Z  	NN$=&)#d))nn    %--# )	            HH +D1188>>DKKMME$--#!5>)	           H -                          D c!!X%9C%?%? 5 5(2F 5 5 ( 05 5
 
 	
 		M)' 	 	 	A ++--AF== Hs   $ 33CN11
N;>N;r   r   c                   K   t           j        j        st          d          t          j                            |          }|j        }|j        |j        }d| _	        | 
                                }t           j                            |
          \  }} |            4 d {V } |||	|d          4 d {V 	 }|                    ||||          }t          |          \  }}|                    |           d {V }|4 d {V  |                    |||           |                    t#          |                     d {V }t%          |                                ||           d d d           d {V  n# 1 d {V swxY w Y   t)          j                    }d d d           d {V  n# 1 d {V swxY w Y   t           j                            || j        | j        ||          }d d d           d {V  n# 1 d {V swxY w Y   t3          ||z
  d          |_        |                     |          st6          |S )Nz DNS-over-HTTP3 is not available.r   T)verify_modeserver_nameh3r{           )r.   quic	have_quicr   r   r   r   r   r   idr1   factories_for_backendconnectr   make_streamsend_h3receiver   r   r   r#   r/   rB   r8   r9   r$   rD   r
   )rM   rN   r   rO   r   rP   rQ   r7   r:   r   rR   r   r   	url_partsrF   cfactorymfactorycontextthe_managerthe_connectionstartr%   streamfinishrI   s                            r   r   r     s      8 86777%%c**I!H~!~AD99;;D899'BBXxxzz 
 
 
 
 
 
 
W8X$
 
 
 	! 	! 	! 	! 	! 	! 	! 	!(00fkRRN"0"9"9UJ)55g>>>>>>>>F = = = = = = = =sD$///#^^Jz,B,BCCCCCCCCfnn..t<<<	= = = = = = = = = = = = = = = = = = = = = = = = = = =
 Y[[F	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! K!!I-+ " 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
( %%%AF== Hs\   $H;AF4	A#E>,F4>
FF4FF4"H4
F>	>HF>	1H
HH
connectionc                 P  K   t           j        j        st          d          |||}d| _        |                                 }|r%t           j        j        }t           j        j        }|}n"t           j                            |
          \  }} |            4 d{V } |||	|          4 d{V 	 }|s|                    ||||          }t          |          \  }}|
                    |           d{V }|4 d{V  |                    |d           d{V  |                    t          |                     d{V }ddd          d{V  n# 1 d{V swxY w Y   t          j                    }ddd          d{V  n# 1 d{V swxY w Y   t           j                            || j        | j        ||          }ddd          d{V  n# 1 d{V swxY w Y   t'          ||z
  d          |_        |                     |          st*          |S )ai  Return the response obtained after sending an asynchronous query via
    DNS-over-QUIC.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.quic()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    zDNS-over-QUIC is not available.Nr   )r   r   Tr{   r   )r.   r   r   r   r   r1   null_factoryr   r   r   r   sendr   r   r#   r/   rB   r8   r9   r$   rD   r
   )rM   rN   rO   r   rP   rQ   r7   r:   r   r   rR   r   r   rF   r   r   r   r   r   r   r%   r   r   rI   s                           r   r   r     s     2 8 75666"x'7"AD99;;D G8(8(#"x==gFF8xzz 
 
 
 
 
 
 
W8'
 
 
 	! 	! 	! 	! 	! 	! 	! 	!  W!,!4!4UD&+!V!V"0"9"9UJ)55g>>>>>>>>F D D D D D D D Dkk$---------#^^Jz,B,BCCCCCCCCD D D D D D D D D D D D D D D D D D D D D D D D D D D Y[[F	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! K!!I-+ " 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
* %%%AF== Hs\   G!3AFAEF
E$$F'E$(F>G!
F	G!F	1G!!
G+.G+txn_managerra   serialc                  K   |j         d         j        }|t          j        j        k    }|                                 }|                                }	|j        t          j	        k    }
|
rJt          t          j        j        |          }|                    |	dt          |                     d{V  n`t          t          j        j        |          }t!          j        dt%          |	                    |	z   }|                    ||           d{V  t          j                            | |||
          5 }d}d}|st-          |          \  }}||||k    r|}|
r/t          |          }|                    d|           d{V \  }}nEt1          |d|           d{V }t!          j        d|          \  }t1          |||           d{V }t          j                            ||j        |j        d|||
 |          }|                    |          }|W V  |j        }||j        r&|j         st          j!        "                    d	          ddd           dS # 1 swxY w Y   dS )
z'Given a socket, does the zone transfer.r   Nrz   Fr?   rl   T)r8   r9   xfrorigintsig_ctxmultir7   zmissing TSIG)#questionrdtyper.   	rdatatypeIXFRfrom_wire_originr1   typer   r[   r   rW   DatagramSocketr2   r'   StreamSocketr|   packrn   rp   r   Inboundr   r@   rx   r}   r/   rB   r8   r\   process_messager   had_tsig	exception	FormError)r   ra   r=   r   rO   r%   r   is_ixfrr   rF   is_udprd   re   rq   inbounddoner   rb   mexpirationrwirer~   r   rI   s                          r   _inbound_xfrr   (  s      ^A%F**G))++F==??DVv((F 3(7;;oodD(:*>*>??????????(5q99T3t99--4vz222222222	fff	=	= : 	"-g66Q"&;+C+C( F";//#+#4#4UG#D#DDDDDDD
+HaEEEEEEEE}T511+HaEEEEEEEE%%!I!!z!( & 	 	A **1--DGGGGzH3  	"4 = 	: 	:-)).999=: : : : : : : : : : : : : : : : : :s   5DII#&I#lifetimeudp_modec
           
      N  K   |#t           j                            |          \  }}
nt           j                            |          }
t           j                            |           }t          |||          }| |f}|	st           j                                        }	t          |          \  }}|j
        d         j        t           j        j        k    r|t          j        k    r|	                    |t"          j        d||t'          |                     d{V }|4 d{V  	 t)          ||||
||          2 3 d{V }6 	 ddd          d{V  dS # t           j        j        $ r |t          j        k    r Y nw xY w	 ddd          d{V  n# 1 d{V swxY w Y   |	                    |t"          j        d||t'          |                     d{V }|4 d{V  t)          ||||
||          2 3 d{V }6 	 ddd          d{V  dS # 1 d{V swxY w Y   dS )am  Conduct an inbound transfer and apply it via a transaction from the
    txn_manager.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.inbound_xfr()` for the documentation of
    the other parameters, exceptions, and return type of this method.
    Nr   )r.   r   
make_queryextract_serial_from_queryrT   rU   r   rW   rX   r   r   r   r   r   r   NEVERrZ   r   r[   r'   r   UseTCPONLYr   )rN   r   r=   r   rO   r  rP   rQ   r  rR   r   r   r_   r`   rb   r%   ra   s                    r   inbound_xfrr	  ^  s     * }',,[9922599		 	 	'	'B2v{33FT]F 9"6688$X..OQ
~a3=#555(gm:S:S%%!1ffhz6J6J
 
 
 
 
 
 
 
  		 		 		 		 		 		 		 		+E67J          !   		 		 		 		 		 		 		 		 		 		 		 		 		 		 7>   w|++ ,++		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 !!
F668J3G3G  	 	 	 	 	 	A         #KE67JWW 	 	 	 	 	 	 	! XW                             sZ   !F#E7D?=E%E<9F;E<<F
FF"H7G?=H
H!H)N)
NNFFNr    FFFN)NrL   Nr   FFFFNNF)NrL   Nr   FFFNNNF)NFNr    F)NrL   Nr   FFNN)Nr   Nr   FFNNNNT)
Nr   Nr   FFTNNT)Nr   Nr   FFNTNNN)V__doc__r   
contextlibr   r   r|   r#   urllib.parser   typingr   r   r   r   r   r   dns.asyncbackendr.   dns.exceptiondns.inetdns.messagedns.namedns.quic	dns.rcodedns.rdataclassdns.rdatatypedns.transactiondns._asyncbackendr	   	dns.queryr
   r   r   r   r   r   r   r   r   r   r   r   r   rT   low_level_address_tuplerV   r   r'   rW   r   r/   r0   bytesfloatintr5   boolnameNametsigKeyrK   r   Backendrc   r   ri   rr   rx   r   rg   
SSLContextr   r   	AF_UNSPECr   r   r   r   AsyncQuicConnectiontransactionTransactionManagerSocketr   r  r	   r    r   <module>r+     s  $                : : : : : : : : : : : : : : : :                                ) ) ) ) ) )                             LLL 8+       #'	 


)
#U*
+  	
 3:   @ "&"&#";?#&! %+/:0 :0


):0#:0 :0 	:0
 :0 d38=#(,678:0 %:0 :0 :0 :0 CK'(:0 	:0 :0 :0 :0@  $ #"! %6:26? ?
{?? e_? 	?
 SM? ? ? ? ? ? 3#2
3? c&./? ? 	[? ? ? ?J  $ #"!:>8<26A  A 
{A A  e_A  	A 
 SMA  A  A  A  A  s'67A  s'45A  c&./A  A  3;$%A  A  A  A N #'$ $


'$
#U*
+$ $ 3:	$ $ $ $2    #'";?#&! 


'  d38=#(,678	
 %  3;%&   B  $ "!48265 5
{55 e_5 	5
 SM5 5 5 5 3#0
15 c&./5 	[5 5 5 5v  $ "!4826,0%)#C C
{CC e_C 	C
 SMC C C C 3#0
1C c&./C #.)C c]C $)C 	[C C C CL34!   "  $ "!,0#'+7;" + 3!c c
{cc e_c 	c
 SMc c c c ()c c c $)c  }c 34c c  !c" 	[#c c c cT  $ "!#26"2 2
{22 
2 e_	2
 2 SM2 2 2 2 $)2 c&./2 sm2 2 	[2 2 2 2p  $ "!9=#26"%)A A
{AA e_A 	A
 SMA A A A 56A $)A c&./A smA c]A 	[A A A AH3:33:
3: ;3: SM	3:
 e_3: 3: 	3: 3: 3: 3:r ,0# $ 263 3333 CK'(3 	3
 e_3 uo3 SM3 3 3 c&./3 
3 3 3 3 3 3r    