a àMÒe ã@sFddlZddlZddlmZmZmZddlZddlZGdd„dƒZ dS)éN)ÚIteratorÚOptionalÚTuplec@sôeZdZd(eedœdd„Zedœdd„Zeedœd d „Zd)eed œd d„Zedœdd„Z edœdd„Z edœdd„Z edœdd„Z edœdd„Z eedœdd„Zd*edddœdd „Zedd!œd"d#„Zejeedœd$d%„ƒZejedœd&d'„ƒZdS)+ÚParserr)ÚwireÚcurrentcCs0||_d|_t|jƒ|_|r&| |¡||_dS©Nr)rrÚlenÚendÚseekÚfurthest)Úselfrr©rú,/usr/lib/python3.9/site-packages/dns/wire.pyÚ__init__ s   zParser.__init__)ÚreturncCs |j|jS©N)r r©r rrrÚ remainingszParser.remaining)ÚsizercCsL|| ¡krtjj‚|j|j|j|…}|j|7_t|j|jƒ|_|Sr)rÚdnsÚ exceptionÚ FormErrorrrÚmaxr )r rÚoutputrrrÚ get_bytess  zParser.get_bytesé)Ú length_sizercCst | |¡d¡}| |¡S)NÚbig©ÚintÚ from_bytesr)r rÚlengthrrrÚget_counted_bytes szParser.get_counted_bytescCs| | ¡¡Sr)rrrrrrÚ get_remaining$szParser.get_remainingcCst d| d¡¡dS)Nz!Brr©ÚstructÚunpackrrrrrÚ get_uint8'szParser.get_uint8cCst d| d¡¡dS)Nz!Hérr%rrrrÚ get_uint16*szParser.get_uint16cCst d| d¡¡dS)Nz!Iérr%rrrrÚ get_uint32-szParser.get_uint32cCst | d¡d¡S)NérrrrrrÚ get_uint480szParser.get_uint48)ÚformatrcCst || t |¡¡¡Sr)r&r'rÚcalcsize)r r/rrrÚ get_struct3szParser.get_structNz dns.name.Name)ÚoriginrcCstj |¡}|r| |¡}|Sr)rÚnameZfrom_wire_parserZ relativize)r r2r3rrrÚget_name6s  zParser.get_name)ÚwherercCs$|dks||jkrtjj‚||_dSr)r rrrr)r r5rrrr <sz Parser.seekccsX|| ¡krtjj‚|j}z0|j||_dV|j|jkrBtjj‚W||_n||_0dSr)rrrrr r)r rZ saved_endrrrÚ restrict_toCs    zParser.restrict_toccs"zdVW|j|_n |j|_0dSr)r rrrrrÚrestore_furthestTszParser.restore_furthest)r)r)N)Ú__name__Ú __module__Ú __qualname__Úbytesr rrrr#r$r(r*r,r.Ústrrr1rr4r Ú contextlibÚcontextmanagerrr6r7rrrrr s  r) r=r&ÚtypingrrrZ dns.exceptionrZdns.namerrrrrÚs