ó
    0/¡jS  ã                   óL   • S SK r S SKrS SKJrJrJr  S SKrS SKr " S S5      r	g)é    N)ÚIteratorÚOptionalÚTuplec                   óF  • \ rS rSrSrSS\S\4S jjrS\4S jrS\S\4S	 jr	SS
\S\4S jjr
S\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\S\4S jrSS\S   SS4S jjrS\SS4S jr\R.                  S\S\4S j5       r\R.                  S\4S j5       rSrg)ÚParseré   z)Helper class for parsing DNS wire format.ÚwireÚcurrentc                 óŽ   • Xl         SU l        [        U R                   5      U l        U(       a  U R	                  U5        X l        g)záInitialize a Parser

*wire*, a ``bytes`` contains the data to be parsed, and possibly other data.
Typically it is the whole message or a slice of it.

*current*, an `int`, the offset within *wire* where parsing should begin.
r   N)r	   r
   ÚlenÚendÚseekÚfurthest)Úselfr	   r
   s      Úa/var/www/html/health-monitoring.indevconsultancy.in/venv/lib/python3.13/site-packages/dns/wire.pyÚ__init__ÚParser.__init__   s3   € ð Œ	ØˆŒÜ�t—y‘y“>ˆŒÞØ�I‰I�gÔØ�ó    Úreturnc                 ó4   • U R                   U R                  -
  $ ©N)r   r
   ©r   s    r   Ú	remainingÚParser.remaining   s   € Ø�x‰x˜$Ÿ,™,Ñ&Ð&r   Úsizec                 ó0  • US:¼  d   eXR                  5       :”  a  [        R                  R                  eU R                  U R
                  U R
                  U-    nU =R
                  U-  sl        [        U R                  U R
                  5      U l        U$ ©Nr   )r   ÚdnsÚ	exceptionÚ	FormErrorr	   r
   Úmaxr   )r   r   Úoutputs      r   Ú	get_bytesÚParser.get_bytes    sq   € Ø�q‹yÐˆyØ—.‘.Ó"Ó"Ü—-‘-×)Ñ)Ð)Ø—‘˜4Ÿ<™<¨$¯,©,¸Ñ*=Ð>ˆØ�Š˜Ñ�Ü˜DŸM™M¨4¯<©<Ó8ˆŒØˆr   Úlength_sizec                 ón   • [         R                  U R                  U5      S5      nU R                  U5      $ )NÚbig©ÚintÚ
from_bytesr#   )r   r%   Úlengths      r   Úget_counted_bytesÚParser.get_counted_bytes)   s*   € Ü—‘ §¡¨{Ó ;¸UÓCˆØ�~‰~˜fÓ%Ð%r   c                 ó@   • U R                  U R                  5       5      $ r   )r#   r   r   s    r   Úget_remainingÚParser.get_remaining-   s   € Ø�~‰~˜dŸn™nÓ.Ó/Ð/r   c                 óT   • [         R                  " SU R                  S5      5      S   $ )Nz!Bé   r   ©ÚstructÚunpackr#   r   s    r   Ú	get_uint8ÚParser.get_uint80   ó!   € Ü�}Š}˜T 4§>¡>°!Ó#4Ó5°aÑ8Ð8r   c                 óT   • [         R                  " SU R                  S5      5      S   $ )Nz!Hé   r   r3   r   s    r   Ú
get_uint16ÚParser.get_uint163   r8   r   c                 óT   • [         R                  " SU R                  S5      5      S   $ )Nz!Ié   r   r3   r   s    r   Ú
get_uint32ÚParser.get_uint326   r8   r   c                 óL   • [         R                  U R                  S5      S5      $ )Né   r'   r(   r   s    r   Ú
get_uint48ÚParser.get_uint489   s   € Ü�~‰~˜dŸn™n¨QÓ/°Ó7Ð7r   Úformatc                 ót   • [         R                  " XR                  [         R                  " U5      5      5      $ r   )r4   r5   r#   Úcalcsize)r   rE   s     r   Ú
get_structÚParser.get_struct<   s#   € Ü�}Š}˜V§^¡^´F·O²OÀFÓ4KÓ%LÓMÐMr   NÚoriginzdns.name.Namec                 ót   • [         R                  R                  U 5      nU(       a  UR                  U5      nU$ r   )r   ÚnameÚfrom_wire_parserÚ
relativize)r   rJ   rL   s      r   Úget_nameÚParser.get_name?   s,   € Ü�x‰x×(Ñ(¨Ó.ˆÞØ—?‘? 6Ó*ˆDØˆr   Úwherec                 ón   • US:  d  XR                   :”  a  [        R                  R                  eXl        g r   )r   r   r   r    r
   )r   rQ   s     r   r   ÚParser.seekE   s)   € ð �1‹9˜§¡Ó(Ü—-‘-×)Ñ)Ð)Ø�r   c              #   óL  #   • US:¼  d   eXR                  5       :”  a  [        R                  R                  eU R                  n U R
                  U-   U l        S v •  U R
                  U R                  :w  a  [        R                  R                  e X l        g ! X l        f = f7fr   )r   r   r   r    r   r
   )r   r   Ú	saved_ends      r   Úrestrict_toÚParser.restrict_toL   s‚   é € à�q‹yÐˆyØ—.‘.Ó"Ó"Ü—-‘-×)Ñ)Ð)Ø—H‘Hˆ	ð		!Ø—|‘| dÑ*ˆDŒHÛð �|‰|˜tŸx™xÓ'Ü—m‘m×-Ñ-Ð-ð (ð !�Hø�y�Hüs   ‚AB$ÁAB ÂB$ÂB!Â!B$c              #   ód   #   •  S v •  U R                   U l        g ! U R                   U l        f = f7fr   )r   r
   r   s    r   Úrestore_furthestÚParser.restore_furthest]   s%   é € ð	)ØŠJàŸ=™=ˆD�Lø˜4Ÿ=™=ˆD�Lüs   ‚0„ ˆ0š-­0)r
   r   r   r	   )r   )r2   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úbytesr)   r   r   r#   r,   r/   r6   r;   r?   rC   Ústrr   rH   r   rO   r   Ú
contextlibÚcontextmanagerr   rV   rY   Ú__static_attributes__© r   r   r   r      s  † Ù3ñ ˜Uð  ¨Sõ  ð'˜3ô 'ð˜cð  eô ñ&¨Sð &¸õ &ð0˜uô 0ð9˜3ô 9ð9˜Cô 9ð9˜Cô 9ð8˜Cô 8ðN ð N¨ô Nñ˜x¨Ñ8ð ÀOõ ð˜#ð  $ô ð ×Ñð! ð !¨ó !ó ð!ð  ×Ñð) (ó )ó ó)r   r   )
rb   r4   Útypingr   r   r   Údns.exceptionr   Údns.namer   re   r   r   Ú<module>ri      s%   ðó Û ß ,Ñ ,ã Û ÷W)ò W)r   