+
    +O|jD  ã            
       óf  a € R t-0 t R t^ RIt^ RIt^ RIt^ RIt^ RI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 R]
P"                  P$                  4      t ! R R4      t ! R R]4      t ! R	 R
]4      t ! R R]
P"                  P$                  4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t]P8                  ]]P:                  ]]P<                  ]]P>                  ]]P@                  ]/t!] ^ k R R lt"R R lt#R R lt$R R lt%]P<                  t]PL                  t&]PN                  t']PP                  t(]P8                  t]PR                  t)]P>                  t]PT                  t*]PV                  t+]PX                  t,]P:                  t]P@                  t R# )zEDNS OptionsN)ÚAnyÚDictc                   ód   a € ] tR t^#t o Rt^t^t^t^t^t	^	t
^
t^t^t^t^t^t]R 4       tRtV tR# )Ú
OptionTypezEDNS option type codesc                ó   € R # ©iÿÿ  © ©Úclss   &ÚAC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\dns/edns.pyÚ_maximumÚOptionType._maximum?   ó   € áó    r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚNSIDÚDAUÚDHUÚN3UÚECSÚEXPIREÚCOOKIEÚ	KEEPALIVEÚPADDINGÚCHAINÚEDEÚREPORTCHANNELÚclassmethodr   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   #   sX   ø‡ € Ù ð €Dà
€Cà
€Cà
€Cà
€Cà€Fà€Fà€Ià€Gà€Eà
€Cà€Màñó ör   r   c                   ó¼   a € ] tR t^Dt o RtV 3R lR ltRV 3R lR lltV 3R lR ltV 3R	 lR
 lt]	V 3R lR l4       t
R tR tR tR tR tR tR tR tRtV tR# )ÚOptionz%Base class for all EDNS option types.c                ó0   <€ V ^8„  d   QhRS[ S[,          /# )é   Úotype)r   Ústr)Úformatr%   s   "€r   Ú__annotate__ÚOption.__annotate__G   s   ø€ ÷ ,ñ ,™j©3Õ.ñ ,r   c                ó:   € \         P                  V4      V n        R# )zOInitialize an option.

*otype*, a ``dns.edns.OptionType``, is the option type.
N)r   Úmaker*   )Úselfr*   s   &&r   Ú__init__ÚOption.__init__G   s   € ô
  —_‘_ UÓ+ˆŽ
r   Nc                óB   <€ V ^8„  d   QhRS[ R,          RS[R,          /# ©r)   ÚfileNÚreturn©r   Úbytes)r,   r%   s   "€r   r-   r.   N   s#   ø€ ÷ "ñ "™C $�Jð "±%¸$µ,ñ "r   c                ó   € \         h)zEConvert an option to wire format.

Returns a ``bytes`` or ``None``.

©ÚNotImplementedError©r1   r6   s   &&r   Úto_wireÚOption.to_wireN   s
   € ô "Ð!r   c                ó    <€ V ^8„  d   QhRS[ /# ©r)   r7   ©r+   )r,   r%   s   "€r   r-   r.   V   s   ø€ ÷ "ñ "™ñ "r   c                ó   € \         h©Nr;   ©r1   s   &r   Úto_textÚOption.to_textV   s   € Ü!Ð!r   c                ó   <€ V ^8„  d   QhRR/# ©r)   r7   ÚGenericOptionr   )r,   r%   s   "€r   r-   r.   Y   s   ø€ ÷ /ñ /˜Oñ /r   c                óZ   € V P                  4       pVf   Q h\        V P                  V4      # )zbCreates a dns.edns.GenericOption equivalent of this rdata.

Returns a ``dns.edns.GenericOption``.
)r>   rJ   r*   )r1   Úwires   & r   Ú
to_genericÚOption.to_genericY   s,   € ð
 �|‰|‹~ˆØÒÐÐÜ˜TŸZ™Z¨Ó.Ð.r   c                ó(   <€ V ^8„  d   QhRS[ RRRR/# )r)   r*   Úparserúdns.wire.Parserr7   r'   )r   )r,   r%   s   "€r   r-   r.   c   s#   ø€ ÷ 
"ñ 
"¡Zð 
"Ð9Jð 
"Èxñ 
"r   c                ó   € \         h)zæBuild an EDNS option object from wire format.

*otype*, a ``dns.edns.OptionType``, is the option type.

*parser*, a ``dns.wire.Parser``, the parser, which should be
restructed to the option length.

Returns a ``dns.edns.Option``.
r;   ©r
   r*   rP   s   &&&r   Úfrom_wire_parserÚOption.from_wire_parserb   s
   € ô "Ð!r   c                óf   € V P                  4       pVP                  4       pW#8X  d   ^ # W#8”  d   ^# R# )zCompare an EDNS option with another option of the same type.

Returns < 0 if < *other*, 0 if == *other*, and > 0 if > *other*.
éÿÿÿÿ)r>   )r1   ÚotherrL   Úowires   &&  r   Ú_cmpÚOption._cmpo   s/   € ð
 �|‰|‹~ˆØ—‘“ˆØŒ=ÙØŒ<ÙØˆ	r   c                ó”   € \        V\        4      '       g   R # V P                  VP                  8w  d   R # V P                  V4      ^ 8H  # )F©Ú
isinstancer'   r*   rZ   ©r1   rX   s   &&r   Ú__eq__ÚOption.__eq__|   s9   € Ü˜%¤×(Ò(ÙØ�:‰:˜Ÿ™Ô$ÙØ�y‰y˜Ó 1Ñ$Ð$r   c                ó”   € \        V\        4      '       g   R # V P                  VP                  8w  d   R # V P                  V4      ^ 8g  # )Tr]   r_   s   &&r   Ú__ne__ÚOption.__ne__ƒ   s9   € Ü˜%¤×(Ò(ÙØ�:‰:˜Ÿ™Ô$ÙØ�y‰y˜Ó 1Ñ$Ð$r   c                ó˜   € \        V\        4      '       d   V P                  VP                  8w  d   \        # V P	                  V4      ^ 8  # ©é    ©r^   r'   r*   ÚNotImplementedrZ   r_   s   &&r   Ú__lt__ÚOption.__lt__Š   ó8   € Ü˜%¤×(Ò(¨D¯J©J¸%¿+¹+Ô,EÜ!Ð!Ø�y‰y˜Ó !Ñ#Ð#r   c                ó˜   € \        V\        4      '       d   V P                  VP                  8w  d   \        # V P	                  V4      ^ 8*  # rf   rh   r_   s   &&r   Ú__le__ÚOption.__le__�   ó8   € Ü˜%¤×(Ò(¨D¯J©J¸%¿+¹+Ô,EÜ!Ð!Ø�y‰y˜Ó 1Ñ$Ð$r   c                ó˜   € \        V\        4      '       d   V P                  VP                  8w  d   \        # V P	                  V4      ^ 8¬  # rf   rh   r_   s   &&r   Ú__ge__ÚOption.__ge__”   rp   r   c                ó˜   € \        V\        4      '       d   V P                  VP                  8w  d   \        # V P	                  V4      ^ 8„  # rf   rh   r_   s   &&r   Ú__gt__ÚOption.__gt__™   rl   r   c                ó"   € V P                  4       # rD   )rF   rE   s   &r   Ú__str__ÚOption.__str__ž   s   € Ø�|‰|‹~Ðr   ©r*   rD   )r   r   r   r   r   r2   r>   rF   rM   r!   rT   rZ   r`   rc   rj   rn   rr   ru   rx   r"   r#   r$   s   @r   r'   r'   D   sq   ø‡ € Ù/÷,ð ,÷"ò "÷"ð "÷/ð /ð ÷
"ó ð
"òò%ò%ò$ò
%ò
%ò
$÷
ð r   r'   c                   ó˜   a a€ ] tR t^¢t oRtV3R lV 3R lltRV3R lR lltV3R lR ltV3R lR	 lt]	V3R
 lR l4       t
RtVtV ;t# )rJ   zkGeneric Option Class

This class is used for EDNS option types for which we have no better
implementation.
c                óF   <€ V ^8„  d   QhRS[ S[,          RS[S[,          /# )r)   r*   Údata)r   r+   r9   )r,   r%   s   "€r   r-   ÚGenericOption.__annotate__©   s$   ø€ ÷ :ñ :™j©3Õ.ð :±e¹cµkñ :r   c                ó„   <€ \         SV `  V4       \        P                  P                  P                  VR 4      V n        R# )TN)Úsuperr2   ÚdnsÚrdataÚRdataÚ	_as_bytesr}   )r1   r*   r}   Ú	__class__s   &&&€r   r2   ÚGenericOption.__init__©   s,   ø€ Ü‰Ñ˜ÔÜ—I‘I—O‘O×-Ñ-¨d°DÓ9ˆŽ	r   c                óB   <€ V ^8„  d   QhRS[ R,          RS[R,          /# r5   r8   )r,   r%   s   "€r   r-   r~   ­   s#   ø€ ÷ ñ ™C $�Jð ±%¸$µ,ñ r   c                ód   € V'       d   VP                  V P                  4       R # V P                  # rD   )Úwriter}   r=   s   &&r   r>   ÚGenericOption.to_wire­   ó"   € ßØ�J‰J�t—y‘yÔ!Ùà—9‘9Ðr   c                ó    <€ V ^8„  d   QhRS[ /# rA   rB   )r,   r%   s   "€r   r-   r~   ´   s   ø€ ÷ 'ñ '™ñ 'r   c                ó    € R V P                    2# )zGeneric rz   rE   s   &r   rF   ÚGenericOption.to_text´   s   € Ø˜$Ÿ*™*˜Ð&Ð&r   c                ó   <€ V ^8„  d   QhRR/# rI   r   )r,   r%   s   "€r   r-   r~   ·   s   ø€ ÷ ñ ˜Oñ r   c                ó   € V # rD   r   rE   s   &r   rM   ÚGenericOption.to_generic·   s   € Øˆr   c                ó:   <€ V ^8„  d   QhRS[ S[,          RRRS[/# ©r)   r*   rP   rQ   r7   ©r   r+   r'   )r,   r%   s   "€r   r-   r~   »   s*   ø€ ÷ 2ñ 2Ù¡Õ$ð2Ø.?ð2á	ñ2r   c                ó.   € V ! WP                  4       4      # rD   ©Úget_remainingrS   s   &&&r   rT   ÚGenericOption.from_wire_parserº   s   € ñ �5×.Ñ.Ó0Ó1Ð1r   )r}   rD   )r   r   r   r   r   r2   r>   rF   rM   r!   rT   r"   r#   Ú__classcell__©r…   r%   s   @@r   rJ   rJ   ¢   sK   ù‡ € ñ÷:ó :÷ò ÷'ð '÷ð ð ÷2ó ÷2ð 2r   rJ   c                   ó¦   a a€ ] tR t^Át oRtRV3R lV 3R llltV3R lR lt]V3R lR l4       tRV3R lR	 llt	]
V3R
 lR l4       tRtVtV ;t# )Ú	ECSOptionz!EDNS Client Subnet (ECS, RFC7871)c                ó:   <€ V ^8„  d   QhRS[ RS[R,          RS[/# )r)   ÚaddressÚsrclenNÚscopelen)r+   Úint)r,   r%   s   "€r   r-   ÚECSOption.__annotate__Ä   s&   ø€ ÷ -6ñ -6¡ð -6©S°4­Zð -6É#ñ -6r   c                óÊ  <€ \         S	V `  \        P                  4       \        P
                  P                  V4      pV\        P                  8X  dŽ   ^V n	        Vf   ^8p\        P                  P                  P                  V4      p\        P                  P                  P                  V^ ^€4      p\        P                  P                  P                  V^ ^€4      pM­V\        P                  8X  dŽ   ^V n	        Vf   ^p\        P                  P                  P                  V4      p\        P                  P                  P                  V^ ^ 4      p\        P                  P                  P                  V^ ^ 4      pM\!        R4      hVf   Q hWn        W n        W0n        \        P
                  P)                  WA4      p\+        \,        P.                  ! VR,          4      4      pVRV V n        V^,          pV^ 8w  d`   \2        P4                  ! R\7        V P0                  RR 4      ^ÿ^V,
          ,          ,          4      pV P0                  RR V,           V n        R# R# )aZ  *address*, a ``str``, is the client address information.

*srclen*, an ``int``, the source prefix length, which is the
leftmost number of bits of the address to be used for the
lookup.  The default is 24 for IPv4 and 56 for IPv6.

*scopelen*, an ``int``, the scope prefix length.  This value
must be 0 in queries, and should be set in responses.
NzBad address familyç       @ÚBrW   )r€   r2   r   r   r�   ÚinetÚaf_for_addressÚsocketÚAF_INET6Úfamilyr‚   rƒ   Ú_as_ipv6_addressÚ_as_intÚAF_INETÚ_as_ipv4_addressÚ
ValueErrorrž   rŸ   r    Ú	inet_ptonr¡   ÚmathÚceilÚaddrdataÚstructÚpackÚord)
r1   rž   rŸ   r    Úafr³   ÚnbytesÚnbitsÚlastr…   s
   &&&&     €r   r2   ÚECSOption.__init__Ä   sÀ  ø€ ô 	‰ÑœŸ™Ô(Ü�X‰X×$Ñ$ WÓ-ˆà”—‘Ô ØˆDŒKØŠ~Ø�Ü—i‘i—o‘o×6Ñ6°wÓ?ˆGÜ—Y‘Y—_‘_×,Ñ,¨V°Q¸Ó<ˆFÜ—y‘y—‘×.Ñ.¨x¸¸CÓ@‰HØ”6—>‘>Ô!ØˆDŒKØŠ~Ø�Ü—i‘i—o‘o×6Ñ6°wÓ?ˆGÜ—Y‘Y—_‘_×,Ñ,¨V°Q¸Ó;ˆFÜ—y‘y—‘×.Ñ.¨x¸¸BÓ?‰HäÐ1Ó2Ð2àÒ!Ð!Ð!ØŒØŒØ Œä—8‘8×%Ñ% bÓ2ˆÜ”T—Y’Y˜v¨�|Ó,Ó-ˆð !  &Ð)ˆŒØ˜•
ˆØ�AŒ:Ü—;’;˜s¤C¨¯©°b°cÐ(:Ó$;¸tÈÈEÍ	Õ?RÕ$SÓTˆDØ ŸM™M¨#¨2Ð.°Õ5ˆDŽMñ r   c                ó    <€ V ^8„  d   QhRS[ /# rA   rB   )r,   r%   s   "€r   r-   r¢   ó   s   ø€ ÷ Iñ I™ñ Ir   c                óT   € R V P                    RV P                   RV P                   2# )zECS Ú/z scope/)rž   rŸ   r    rE   s   &r   rF   ÚECSOption.to_textó   s'   € Ø�d—l‘l�^ 1 T§[¡[ M°¸¿¹¸ÐHÐHr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r)   Útextr7   )r+   r'   )r,   r%   s   "€r   r-   r¢   ÷   s   ø€ ÷ 41ñ 41™ð 41¡ñ 41r   c                óx  € RpV P                  4       pRp\        V4      ^8X  d   V^ ,          pMF\        V4      ^8X  d(   V^ ,          V8w  d   \        RV  R24      hV^,          pM\        RV  R24      hVP                  R4      pV^8X  d   VP                  R4      w  rVRpM+V^8X  d   VP                  R4      w  rVpM\        RV  R24      h \	        V4      p \	        T4      p	\        YYT4      #   \         d    \        RRT R2,           4      hi ; i  \         d    \        R	RT R
2,           4      hi ; i)aø  Convert a string into a `dns.edns.ECSOption`

*text*, a `str`, the text form of the option.

Returns a `dns.edns.ECSOption`.

Examples:

>>> import dns.edns
>>>
>>> # basic example
>>> dns.edns.ECSOption.from_text('1.2.3.4/24')
>>>
>>> # also understands scope
>>> dns.edns.ECSOption.from_text('1.2.3.4/24/32')
>>>
>>> # IPv6
>>> dns.edns.ECSOption.from_text('2001:4b98::1/64/64')
>>>
>>> # it understands results from `dns.edns.ECSOption.to_text()`
>>> dns.edns.ECSOption.from_text('ECS 1.2.3.4/24/32')
r   Nzcould not parse ECS from "Ú"r¾   Ú0zinvalid scope z": scope must be an integerzinvalid srclen z": srclen must be an integer)ÚsplitÚlenr¯   Úcountr¡   rœ   )
rÁ   Úoptional_prefixÚtokensÚecs_textÚ	n_slashesrž   ÚtsrclenÚtscopeÚscoperŸ   s
   &         r   Ú	from_textÚECSOption.from_textö   s\  € ð0  ˆØ—‘“ˆØˆÜˆv‹;˜!ÔØ˜a•y‰HÜ�‹[˜AÔØ�a�y˜OÔ+Ü Ð#=¸d¸VÀ1Ð!EÓFÐFØ˜a•y‰HäÐ9¸$¸¸qÐAÓBÐBØ—N‘N 3Ó'ˆ	Ø˜Œ>Ø'Ÿ~™~¨cÓ2ÑˆGØ‰FØ˜!Œ^Ø'/§~¡~°cÓ':Ñ$ˆG™fäÐ9¸$¸¸qÐAÓBÐBð	YÜ˜“KˆEð	Ü˜“\ˆFô
 ˜¨%Ó0Ð0øô ô 	YÜÐ-°!°F°8Ð;VÐ0WÕWÓXÐXð	Yûô ô 	ÜØ! a¨ yÐ0LÐ$MÕMóð ð	ús   ÃC2 ÃD Ã2"DÄ"D9c                óB   <€ V ^8„  d   QhRS[ R,          RS[R,          /# r5   r8   )r,   r%   s   "€r   r-   r¢   -  s#   ø€ ÷ ñ ™C $�Jð ±%¸$µ,ñ r   c                óÌ   € \         P                  ! R V P                  V P                  V P                  4      V P
                  ,           pV'       d   VP                  V4       R# V# )ú!HBBN)r´   rµ   rª   rŸ   r    r³   r‰   ©r1   r6   Úvalues   && r   r>   ÚECSOption.to_wire-  sG   € ä�KŠK˜ §¡¨T¯[©[¸$¿-¹-ÓHÈ4Ï=É=ÕXð 	÷ Ø�J‰J�uÔÙàˆLr   c                ó:   <€ V ^8„  d   QhRS[ S[,          RRRS[/# r“   r”   )r,   r%   s   "€r   r-   r¢   8  s*   ø€ ÷ %ñ %Ù¡Õ$ð%Ø.?ð%á	ñ%r   c                ó¸  € VP                  R 4      w  r4p\        \        P                  ! VR,          4      4      pVP	                  V4      pV^8X  d8   ^V,
          p\
        P                  P                  VRV,          ,           4      p	MIV^8X  d8   ^V,
          p\
        P                  P                  VRV,          ,           4      p	M\        R4      hV ! W”V4      # )rÓ   r¤   ó    zunsupported family)
Ú
get_structr¡   r±   r²   Ú	get_bytesr�   Úipv4Ú	inet_ntoaÚipv6r¯   )
r
   r*   rP   rª   ÚsrcrÎ   ÚaddrlenÚprefixÚpadÚaddrs
   &&&       r   rT   ÚECSOption.from_wire_parser7  s³   € ð $×.Ñ.¨vÓ6Ñˆ�UÜ”d—i’i  c¥	Ó*Ó+ˆØ×!Ñ! 'Ó*ˆØ�QŒ;Ø�g•+ˆCÜ—8‘8×%Ñ% f¨w¸­}Õ&<Ó=‰DØ�qŒ[Ø�w•,ˆCÜ—8‘8×%Ñ% f¨w¸­}Õ&<Ó=‰DäÐ1Ó2Ð2á�4˜eÓ$Ð$r   )r³   rž   rª   r    rŸ   )Nrg   rD   )r   r   r   r   r   r2   rF   ÚstaticmethodrÏ   r>   r!   rT   r"   r#   r™   rš   s   @@r   rœ   rœ   Á   sW   ù‡ € Ù+÷-6õ -6÷^Ið Ið ÷41ó ð41÷lò ð ÷%ó ÷%ð %r   rœ   c                   ó˜   a € ] tR tRt o Rt^ t^t^t^t^t	^t
^t^t^t^	t^
t^t^t^t^t^t^t^t^t^t^t^t^t^t^t]R 4       tRt V t!R# )ÚEDECodeiJ  zExtended DNS Error (EDE) codesc                ó   € R # r   r   r	   s   &r   r   ÚEDECode._maximumg  r   r   r   N)"r   r   r   r   r   ÚOTHERÚUNSUPPORTED_DNSKEY_ALGORITHMÚUNSUPPORTED_DS_DIGEST_TYPEÚSTALE_ANSWERÚFORGED_ANSWERÚDNSSEC_INDETERMINATEÚDNSSEC_BOGUSÚSIGNATURE_EXPIREDÚSIGNATURE_NOT_YET_VALIDÚDNSKEY_MISSINGÚRRSIGS_MISSINGÚNO_ZONE_KEY_BIT_SETÚNSEC_MISSINGÚCACHED_ERRORÚ	NOT_READYÚBLOCKEDÚCENSOREDÚFILTEREDÚ
PROHIBITEDÚSTALE_NXDOMAIN_ANSWERÚNOT_AUTHORITATIVEÚNOT_SUPPORTEDÚNO_REACHABLE_AUTHORITYÚNETWORK_ERRORÚINVALID_DATAr!   r   r"   r#   r$   s   @r   rç   rç   J  s    ø‡ € Ù(à€EØ#$Ð Ø!"ÐØ€LØ€MØÐØ€LØÐØÐØ€NØ€NØÐØ€LØ€LØ€IØ€GØ€HØ€HØ€JØÐØÐØ€MØÐØ€MØ€Làñó ör   rç   c                   ó’   a a€ ] tR tRt oRt0 RmtRV3R lV 3R llltV3R lR ltRV3R lR llt]	V3R	 lR
 l4       t
RtVtV ;t# )Ú	EDEOptionil  z!Extended DNS Error (EDE, RFC8914)c                óD   <€ V ^8„  d   QhRS[ S[,          RS[R,          /# )r)   ÚcoderÁ   N)rç   r+   )r,   r%   s   "€r   r-   ÚEDEOption.__annotate__q  s#   ø€ ÷ ñ ™W¡s�]ð ±#¸µ*ñ r   c                óÌ   <€ \         SV `  \        P                  4       \        P                  V4      V n        Ve"   \        V\        4      '       g   \        R4      hW n
        R# )z£*code*, a ``dns.edns.EDECode`` or ``str``, the info code of the
extended error.

*text*, a ``str`` or ``None``, specifying additional information about
the error.
Nztext must be string or None)r€   r2   r   r   rç   r0   r  r^   r+   r¯   rÁ   )r1   r  rÁ   r…   s   &&&€r   r2   ÚEDEOption.__init__q  sI   ø€ ô 	‰ÑœŸ™Ô(ä—L‘L Ó&ˆŒ	ØÒ¤J¨t´S×$9Ò$9ÜÐ:Ó;Ð;ØŽ	r   c                ó    <€ V ^8„  d   QhRS[ /# rA   rB   )r,   r%   s   "€r   r-   r  €  s   ø€ ÷ ñ ™ñ r   c                óD  a € R S P                    2pS P                   \        9   dW   \        P                  S P                   4      pRP                  V 3R lVP	                  R4       4       4      pVRV R2,          pS P
                  e   VRS P
                   2,          pV# )zEDE Ú c              3   ój   <"  € T F(  pVSP                   9   d   TMVP                  4       x € K*  	  R # 5irD   )Ú_preserve_caseÚtitle)Ú.0Úwordr1   s   & €r   Ú	<genexpr>Ú$EDEOption.to_text.<locals>.<genexpr>„  s0   øé € ð á+�Dð  × 3Ñ 3Ô3‘¸¿¹»ÔEÛ+ùs   ƒ03Ú_z (Ú)z: )r  rç   rF   ÚjoinrÅ   rÁ   )r1   ÚoutputÚdescs   f  r   rF   ÚEDEOption.to_text€  sŒ   ø€ Ø˜Ÿ	™	�{Ð#ˆØ�9‰9œÔÜ—?‘? 4§9¡9Ó-ˆDØ—8‘8ô à ŸJ™J sœOóó ˆDð ˜˜4˜& �lÕ"ˆFØ�9‰9Ò Ø˜˜4Ÿ9™9˜+Ð&Õ&ˆFØˆr   c                óB   <€ V ^8„  d   QhRS[ R,          RS[R,          /# r5   r8   )r,   r%   s   "€r   r-   r  �  s#   ø€ ÷ 	ñ 	™C $�Jð 	±%¸$µ,ñ 	r   c                óÜ   € \         P                  ! R V P                  4      pV P                  e"   W P                  P	                  R4      ,          pV'       d   VP                  V4       R# V# )z!HNÚutf8)r´   rµ   r  rÁ   Úencoder‰   rÔ   s   && r   r>   ÚEDEOption.to_wire�  sN   € Ü—’˜D $§)¡)Ó,ˆØ�9‰9Ò Ø—Y‘Y×%Ñ% fÓ-Õ-ˆEçØ�J‰J�uÔÙàˆLr   c                ó:   <€ V ^8„  d   QhRS[ S[,          RRRS[/# r“   r”   )r,   r%   s   "€r   r-   r  ™  s*   ø€ ÷  ñ  Ù¡Õ$ð Ø.?ð á	ñ r   c                óÖ   € \         P                  VP                  4       4      pVP                  4       pV'       d&   VR,          ^ 8X  d   VRR pVP	                  R4      pMRpV ! W54      # )é   Nr  rW   )rç   r0   Ú
get_uint16r—   Údecode)r
   r*   rP   r  rÁ   Úbtexts   &&&   r   rT   ÚEDEOption.from_wire_parser˜  s`   € ô �|‰|˜F×-Ñ-Ó/Ó0ˆØ×#Ñ#Ó%ˆçØ�B�x˜1Œ}Ø˜C˜R�y�Ø—K‘K Ó'‰EàˆEá�4ÓÐr   )r  rÁ   >   ÚDSÚNSECÚDNSKEYÚDNSSECÚRRSIGsÚNXDOMAINrD   )r   r   r   r   r   r  r2   rF   r>   r!   rT   r"   r#   r™   rš   s   @@r   r  r  l  sD   ù‡ € Ù+âM€N÷õ ÷ð ÷	ò 	ð ÷ ó ÷ ð  r   r  c                   ó‚   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltV3R lR lt]V3R lR	 l4       tR
t	Vt
V ;t# )Ú
NSIDOptioni©  c                ó    <€ V ^8„  d   QhRS[ /# )r)   Únsid©r9   )r,   r%   s   "€r   r-   ÚNSIDOption.__annotate__ª  s   ø€ ÷ ñ ™Uñ r   c                óN   <€ \         SV `  \        P                  4       Wn        R # rD   )r€   r2   r   r   r/  )r1   r/  r…   s   &&€r   r2   ÚNSIDOption.__init__ª  s   ø€ Ü‰ÑœŸ™Ô)ØŽ	r   c                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# ©r)   r6   r7   Nr8   )r,   r%   s   "€r   r-   r1  ®  s   ø€ ÷ ñ ™Cð ©5°4­<ñ r   c                ód   € V'       d   VP                  V P                  4       R # V P                  # rD   )r‰   r/  r=   s   &&r   r>   ÚNSIDOption.to_wire®  r‹   r   c                ó    <€ V ^8„  d   QhRS[ /# rA   rB   )r,   r%   s   "€r   r-   r1  µ  s   ø€ ÷ ñ ™ñ r   c                ó:  € \         ;QJ d&    R  V P                   4       F  '       d   K   RM	  RM! R  V P                   4       4      '       d   V P                  P                  4       pM.\        P                  ! V P                  4      P                  4       pRV 2# )c              3   óD   "  € T F  q^ 8¬  ;'       d    V^~8*  x € K  	  R# 5i)é    Nr   )r  Úcs   & r   r  Ú%NSIDOption.to_text.<locals>.<genexpr>¶  s!   é € Ð:±	¨1�D‰y×&Ð&˜Q $™YÔ&³	ùs   ‚ ’ FTzNSID )Úallr/  r#  ÚbinasciiÚhexlify)r1   rÕ   s   & r   rF   ÚNSIDOption.to_textµ  sf   € ß‹3Ñ:°·	²	Ó:�3�3Š3Ñ:°·	²	Ó:×:Ò:à—I‘I×$Ñ$Ó&‰Eä×$Ò$ T§Y¡YÓ/×6Ñ6Ó8ˆEØ�u�gˆÐr   c                ód   <€ V ^8„  d   QhRS[ S[,          RS[P                  P                  RS[/# ©r)   r*   rP   r7   ©r   r+   r�   rL   ÚParserr'   )r,   r%   s   "€r   r-   r1  ¾  s2   ø€ ÷ +ñ +Ù¡Õ$ð+Ù.1¯h©h¯o©oð+á	ñ+r   c                ó.   € V ! VP                  4       4      # rD   r–   rS   s   &&&r   rT   ÚNSIDOption.from_wire_parser½  s   € ñ �6×'Ñ'Ó)Ó*Ð*r   )r/  rD   ©r   r   r   r   r2   r>   rF   r!   rT   r"   r#   r™   rš   s   @@r   r-  r-  ©  s<   ù‡ € ÷ó ÷ò ÷ð ð ÷+ó ÷+ð +r   r-  c                   ó‚   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltV3R lR lt]V3R lR	 l4       tR
t	Vt
V ;t# )ÚCookieOptioniÄ  c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r)   ÚclientÚserverr0  )r,   r%   s   "€r   r-   ÚCookieOption.__annotate__Å  s   ø€ ÷ Vñ V™uð V©eñ Vr   c                ó
  <€ \         SV `  \        P                  4       Wn        W n        \        V4      ^8w  d   \        R4      h\        V4      ^ 8w  d.   \        V4      ^8  g   \        V4      ^ 8”  d   \        R4      hR# R# )é   zclient cookie must be 8 bytesz5server cookie must be empty or between 8 and 32 bytesN)r€   r2   r   r   rL  rM  rÆ   r¯   )r1   rL  rM  r…   s   &&&€r   r2   ÚCookieOption.__init__Å  sn   ø€ Ü‰Ñœ×*Ñ*Ô+ØŒØŒÜˆv‹;˜!ÔÜÐ<Ó=Ð=Üˆv‹;˜!Ô¤ V£¨q¤´C¸³KÀ"Ô4DÜÐTÓUÐUñ 5EÑr   c                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# r5  r8   )r,   r%   s   "€r   r-   rN  Î  s   ø€ ÷ -ñ -™Cð -©5°4­<ñ -r   c                óð   € V'       dS   VP                  V P                  4       \        V P                  4      ^ 8”  d   VP                  V P                  4       R# V P                  V P                  ,           # )rg   N)r‰   rL  rÆ   rM  r=   s   &&r   r>   ÚCookieOption.to_wireÎ  sL   € ßØ�J‰J�t—{‘{Ô#Ü�4—;‘;Ó !Ô#Ø—
‘
˜4Ÿ;™;Ô'Ùà—;‘; §¡Õ,Ð,r   c                ó    <€ V ^8„  d   QhRS[ /# rA   rB   )r,   r%   s   "€r   r-   rN  ×  s   ø€ ÷ *ñ *™ñ *r   c                ó  € \         P                  ! V P                  4      P                  4       p\	        V P
                  4      ^ 8”  d0   \         P                  ! V P
                  4      P                  4       pMRpRV V 2# )rg   Ú zCOOKIE )r?  r@  rL  r#  rÆ   rM  )r1   rL  rM  s   &  r   rF   ÚCookieOption.to_text×  sc   € Ü×!Ò! $§+¡+Ó.×5Ñ5Ó7ˆÜˆt�{‰{Ó˜aÔÜ×%Ò% d§k¡kÓ2×9Ñ9Ó;‰FàˆFØ˜˜  Ð)Ð)r   c                ód   <€ V ^8„  d   QhRS[ S[,          RS[P                  P                  RS[/# rC  rD  )r,   r%   s   "€r   r-   rN  à  s7   ø€ ÷ @ñ @Ù¡Õ$ð@Ù.1¯h©h¯o©oð@á	ñ@r   c                óN   € V ! VP                  ^4      VP                  4       4      # )rP  )rÛ   r—   rS   s   &&&r   rT   ÚCookieOption.from_wire_parserß  s%   € ñ �6×#Ñ# AÓ&¨×(<Ñ(<Ó(>Ó?Ð?r   )rL  rM  rD   rH  rš   s   @@r   rJ  rJ  Ä  sA   ù‡ € ÷Vó V÷-ò -÷*ð *ð ÷@ó ÷@ð @r   rJ  c                   ó‚   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltV3R lR lt]V3R lR	 l4       tR
t	Vt
V ;t# )ÚReportChannelOptioniæ  c                óH   <€ V ^8„  d   QhRS[ P                  P                  /# )r)   Úagent_domain)r�   ÚnameÚName)r,   r%   s   "€r   r-   Ú ReportChannelOption.__annotate__è  s   ø€ ÷ )ñ )¡S§X¡X§]¡]ñ )r   c                óN   <€ \         SV `  \        P                  4       Wn        R # rD   )r€   r2   r   r    r_  )r1   r_  r…   s   &&€r   r2   ÚReportChannelOption.__init__è  s   ø€ Ü‰Ñœ×1Ñ1Ô2Ø(Ör   c                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# r5  r8   )r,   r%   s   "€r   r-   rb  ì  s   ø€ ÷ /ñ /™Cð /©5°4­<ñ /r   c                ó8   € V P                   P                  V4      # rD   )r_  r>   r=   s   &&r   r>   ÚReportChannelOption.to_wireì  s   € Ø× Ñ ×(Ñ(¨Ó.Ð.r   c                ó    <€ V ^8„  d   QhRS[ /# rA   rB   )r,   r%   s   "€r   r-   rb  ï  s   ø€ ÷ >ñ >™ñ >r   c                óD   € R V P                   P                  4       ,           # )zREPORTCHANNEL )r_  rF   rE   s   &r   rF   ÚReportChannelOption.to_textï  s   € Ø $×"3Ñ"3×";Ñ";Ó"=Õ=Ð=r   c                ód   <€ V ^8„  d   QhRS[ S[,          RS[P                  P                  RS[/# rC  rD  )r,   r%   s   "€r   r-   rb  ó  s2   ø€ ÷ &ñ &Ù¡Õ$ð&Ù.1¯h©h¯o©oð&á	ñ&r   c                ó.   € V ! VP                  4       4      # rD   )Úget_namerS   s   &&&r   rT   Ú$ReportChannelOption.from_wire_parserò  s   € ñ �6—?‘?Ó$Ó%Ð%r   )r_  rD   rH  rš   s   @@r   r]  r]  æ  s<   ù‡ € ÷)ó )÷/ò /÷>ð >ð ÷&ó ÷&ð &r   r]  c                ó0   € V ^8„  d   QhR\         R\        /# )r)   r*   r7   )r   r   )r,   s   "r   r-   r-     s   € ÷ 
ñ 
œJð 
¬3ñ 
r   c                óD   € \         P                  V 4      pVf   \        pV# )zxReturn the class for the specified option type.

The GenericOption class is used if a more specific class is not
known.
)Ú_type_to_classÚgetrJ   )r*   r
   s   & r   Úget_option_classrs    s#   € ô ×
Ñ
˜UÓ
#€CØ
‚{ÜˆØ€Jr   c                óJ   € V ^8„  d   QhR\         \        ,          RRR\        /# r“   r”   )r,   s   "r   r-   r-     s)   € ÷ /ñ /ÜœÕð/Ø%6ð/äñ/r   c                ód   € \         P                  V 4      p \        V 4      pVP                  W4      # )zòBuild an EDNS option object from wire format.

*otype*, an ``int``, is the option type.

*parser*, a ``dns.wire.Parser``, the parser, which should be
restricted to the option length.

Returns an instance of a subclass of ``dns.edns.Option``.
)r   r0   rs  rT   )r*   rP   r
   s   && r   Úoption_from_wire_parserrv    s-   € ô �O‰O˜EÓ"€EÜ
˜5Ó
!€CØ×Ñ Ó.Ð.r   c          
      ój   € V ^8„  d   QhR\         \        ,          R\        R\        R\        R\        /# )r)   r*   rL   ÚcurrentÚolenr7   )r   r+   r9   r¡   r'   )r,   s   "r   r-   r-      s9   € ÷ 6ñ 6ÜœÕð6Ü#(ð6Ü36ð6Ü>Að6äñ6r   c                óÆ   € \         P                  P                  W4      pVP                  V4      ;_uu_ 4        \	        W4      uuRRR4       #   + '       g   i     R# ; i)aV  Build an EDNS option object from wire format.

*otype*, an ``int``, is the option type.

*wire*, a ``bytes``, is the wire-format message.

*current*, an ``int``, is the offset in *wire* of the beginning
of the rdata.

*olen*, an ``int``, is the length of the wire-format option data

Returns an instance of a subclass of ``dns.edns.Option``.
N)r�   rL   rE  Úrestrict_torv  )r*   rL   rx  ry  rP   s   &&&& r   Úoption_from_wirer|     s>   € ô  �X‰X�_‰_˜TÓ+€FØ	×	Ñ	˜D×	!Õ	!Ü& uÓ5÷ 
"×	!×	!Ó	!ús   ¹AÁA 	c                ó4   € V ^8„  d   QhR\         R\        RR/# )r)   Úimplementationr*   r7   N)r   r   )r,   s   "r   r-   r-   5  s!   € ÷ +ñ +¤#ð +¬jð +¸Tñ +r   c                ó   € V \         V&   R# )zŸRegister the implementation of an option type.

*implementation*, a ``class``, is a subclass of ``dns.edns.Option``.

*otype*, an ``int``, is the option type.
N)rq  )r~  r*   s   &&r   Úregister_typer€  5  s   € ð +„N�5Ór   c                ób   € V ^8„  d   Qh/ ^ \         9   d   \        \        \        3,          ;R&   # )r)   rq  )Ú__conditional_annotations__r   r   r   )r,   s   "r   r-   r-      s)   € × Ñ ÷Nò ””Z¤�_Õ%ñ òO r   ).r‚  r   r?  r±   r¨   r´   Útypingr   r   Údns.enumr�   Údns.inetÚdns.ipv4Údns.ipv6Údns.nameÚ	dns.rdataÚdns.wireÚenumÚIntEnumr   r'   rJ   rœ   rç   r  r-  rJ  r]  r   r   r   r   r    rq  rs  rv  r|  r€  r   r   r   r   r   r   r   r-   )r‚  s   @r   Ú<module>r�     s‡  øðö$ ã Û Û Û ß ã Û Û Û Û Û Û ô�—‘×!Ñ!ô ÷B[ñ [ô|2�Fô 2ô>F%�ô F%ôRˆc�h‰h×Ñô ôD: �ô : ôz+�ô +ô6@�6ô @ôD&˜&ô &ð( ‡N�N�IØ‡N�N�IØ‡O�O�ZØ×Ñ�|Ø×ÑÐ1ð)€ó õ
õ/õ"6õ*+ð ‡�€Ø‡n�n€Ø‡n�n€Ø‡n�n€Ø‡n�n€Ø	×	Ñ	€Ø	×	Ñ	€Ø× Ñ €	Ø
×
Ñ
€Ø×Ñ€Ø‡n�n€Ø×(Ñ(‚r   