+\hEdZddlZddlZddlmZmZmZmZmZddl Z ddl Z ddl Z ddl Z ddlZ ddlZ ddlZ ddlZ ddlZ ddlmZmZmZmZe j.j0Ze j.j4ZGdde j8j:ZdadefdZ d(d Z!e jDjFe jHjJd dd ddddf d ee jLjNe(fd ee jDjRe(fdee jHjTe(fde+dee(de+de,dee-dee+dee j\j^de j8j`fdZ1de(dedede j8j`fdZ2ejffdee jLjNe(fde,dede j8jhfdZ5dee jLjNe(fde jLjNfdZ6d)de-ddfd Z7e jHjJd ddfdee jLjNe(fde jHjTde+d!eedee j\j^de jLjNf d"Z8d#ejfdfd$ee jLjNe(fd%e,de,d!eedef d&Z9e jDjFe jHjJd dd ddddd#ejfdf d$ee jLjNe(fd ee jLjNe(fd ee jDjRe(fdee jHjTe(fde+dee(de+de,dee-dee+dee j\j^d%e,de,d!eede j8j`fd'Z:y)*Asynchronous DNS stub resolver.N)AnyDictListOptionalUnion)NXDOMAINNoAnswer NoRootSOA NotAbsoluteceZdZdZej j ejjdddddddf de ejje fde ej je fde ejje fd ed ee d ed ed eedeedeej&j(dej*j,fdZde dededej*j,fdZej6fde ejje fdededej*j8fdZde ejje fdejjfdZdd eddfdZy)ResolverrFNTrqnamerdtyperdclasstcpsourceraise_on_no_answer source_portlifetimesearchbackendreturnc lKtjj||||||| } | stjj } t j } | j \} }||S| Jd}|s| j\}}}|r| j|d{|j| || j} |j| ||||| d{}| j|d\}}||S|s7^7##t$r}| jd|\}}Yd}~d}~wwxYww)aQuery nameservers asynchronously to find the answer to the question. *backend*, a ``dns.asyncbackend.Backend``, or ``None``. If ``None``, the default, then dnspython will use the default backend. See :py:func:`dns.resolver.Resolver.resolve()` for the documentation of the other parameters, exceptions, and return type of this method. NF)timeoutrrmax_sizer)dnsresolver _Resolution asyncbackendget_default_backendtime next_requestnext_nameserversleep_compute_timeouterrors async_query Exception query_result)selfrrrrrrrrrr resolutionstartrequestanswerdone nameserverbackoffrresponseex_s T/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/dns/asyncresolver.pyresolvezResolver.resolve-s`.\\-- %#/A6 &&::&&ACHHMM3&'AA A  ! ! AJsxx}}c/A)Bsxx}}*edrtrrc>t ttJtS)zDGet the default asynchronous resolver, initializing it if necessary.)default_resolverreset_default_resolverrsrtr6get_default_resolverrxs   '' ' rtctay)zRe-initialize default asynchronous resolver. Note that the resolver configuration (i.e. /etc/resolv.conf on UNIX systems) will be re-read immediately. N)rrvrsrtr6rwrws  zrtFTrrrrrrrrrrc bKtj|||||||||| d{S7w)a Query nameservers asynchronously to find the answer to the question. This is a convenience function that uses the default resolver object to make the query. See :py:func:`dns.asyncresolver.Resolver.resolve` for more information on the parameters. N)rxr7) rrrrrrrrrrs r6r7r7sF*&'//      s &/-/r8r9r:cZKtj|g|i|d{S7w)zUse a resolver to run a reverse query for PTR records. See :py:func:`dns.asyncresolver.Resolver.resolve_address` for more information on the parameters. N)rxrD)r8r9r:s r6rDrD=s/8%'77PPP PP Ps "+)+rErFcVKtj||fi|d{S7w)zUse a resolver to asynchronously query for address records. See :py:func:`dns.asyncresolver.Resolver.resolve_name` for more information on the parameters. N)rxrV)rErFr:s r6rVrVIs,5%'44T6LVL LL Ls )')cPKtj|d{S7w)zDetermine the canonical name of *name*. See :py:func:`dns.resolver.Resolver.canonical_name` for more information on the parameters and possible exceptions. N)rxrX)rEs r6rXrXUs"&'66t< << < &$&rcPKtj|d{S7w)aTry to update the default resolver's nameservers using Discovery of Designated Resolvers (DDR). If successful, the resolver will subsequently use DNS-over-HTTPS or DNS-over-TLS for future queries. See :py:func:`dns.resolver.Resolver.try_ddr` for more information. N)rxrd)rs r6rdrd_s"&'//8 88 8r~rcLKt|tr8tjj |tjj }| t }|js t| |j|tjj|||d{}|jJ|jj|k(r|S |j}s7@#ttf$rY%wxYw#tjj $rt"wxYww)zFind the name of the zone which contains the specified name. See :py:func:`dns.resolver.Resolver.zone_for_name` for more information on the parameters and possible exceptions. N)r) isinstancerkrrE from_textrootrx is_absoluter r7r=SOArrsetr r parentNoParentr )rErrrrr/s r6 zone_for_nameris $xx!!$ 6')    $  #++cmm''#w,F<<+ ++||  D( )  ;;=D (#   xx   O sTA1D$41C(%C&&,C(D$C=%D$&C((C:7D$9C::D$=$D!!D$5whereportcK| t}g}t|trOtjj |r0|j tjj||n^|j||d{}|jD]1}|j tjj||3tjjd}||_ |S7qw)aMake a stub resolver using the specified destination as the full resolver. *where*, a ``dns.name.Name`` or ``str`` the domain name or IP address of the full resolver. *port*, an ``int``, the port to use. If not specified, the default is 53. *family*, an ``int``, the address family to use. This parameter is used if *where* is not an address. The default is ``socket.AF_UNSPEC`` in which case the first address returned by ``resolve_name()`` will be used, otherwise the first address of the specified family will be used. *resolver*, a ``dns.asyncresolver.Resolver`` or ``None``, the resolver to use for resolution of hostnames. If not specified, the default resolver will be used. Returns a ``dns.resolver.Resolver`` or raises an exception. NF) configure)rxrrkrinet is_addressappendr1Do53NameserverrV addresses asyncresolverrrb)rrrFrrbrUaddressress r6make_resolver_atrs.')?AK%#(("5"5e"<3>>88EF --eV<<((* MG   s~~<rs$& 33DC ~~ ~~Ws||((Wth"36--//58^^5F5F # $!26  # $  #--))3. / 3>>,,c1 2    SM    uo  TN c&&.. /  \\ F Q  Q Q'* Q\\ Q4:3C3C M  s" # M-0 MOR M\\ M=uSXX]]C%78=SXX]]=95949*-):):#'26 !  s" #! ^^ & &! !x ! c&&.. / !  XX]] !L""#' " # $" " "x "  "P36--//58^^5F5F # $!26""#') # $) # $) #--))3. /)3>>,,c1 2 )  ) SM )))uo) TN)c&&.. /) ) )x ) \\)rt