a àMÒeœ ã@sXddlZddlZddlZddlZddlZddlZddlZejjGdd„dej j ƒƒZ dS)éNcsXeZdZdZgd¢Z‡fdd„Zddd„Zedd d „ƒZdd d „Z eddd„ƒZ ‡Z S)ÚHIPz HIP record)ÚhitÚ algorithmÚkeyÚserverscsLtƒ ||¡| |dd¡|_| |¡|_| |d¡|_| ||j¡|_ dS)NTéÿ) ÚsuperÚ__init__Z _as_bytesrZ _as_uint8rrZ _as_tupleZ_as_namer)ÚselfÚrdclassÚrdtyperrrr©Ú __class__©ú7/usr/lib/python3.9/site-packages/dns/rdtypes/ANY/HIP.pyr $s  z HIP.__init__NTc Ksˆt |j¡ ¡}t |j¡ dd¡ ¡}d}g}|jD]}|  |  ||¡¡q6t |ƒdkrv|dd  dd„|Dƒ¡7}d|j |||fS) Nó óÚrú css|]}| ¡VqdS©N)Z to_unicode)Ú.0ÚxrrrÚ 3rzHIP.to_text..z %u %s %s%s)ÚbinasciiZhexlifyrÚdecodeÚbase64Z b64encoderÚreplacerÚappendZchoose_relativityÚlenÚjoinr) r ÚoriginÚ relativizeÚkwrrÚtextrÚserverrrrÚto_text+s  z HIP.to_textc Csj| ¡}t | ¡ ¡¡}t | ¡ ¡¡} g} | ¡D]} | | |||¡} |   | ¡q8|||||| | ƒSr) Z get_uint8rZ unhexlifyZ get_stringÚencoderZ b64decodeZ get_remainingZas_namer) Úclsr r Útokr r!Z relativize_torrrrÚtokenr$rrrÚ from_text6s  z HIP.from_textFcCsdt|jƒ}t|jƒ}| t d||j|¡¡| |j¡| |j¡|jD]}| |d|d¡qJdS)Nú!BBHF) rrrÚwriteÚstructÚpackrrZto_wire)r ÚfileÚcompressr Z canonicalizeÚlhÚlkr$rrrÚ_to_wireCs     z HIP._to_wirec Cs\| d¡\}}}| |¡}| |¡} g} | ¡dkrJ| |¡} |  | ¡q(|||||| | ƒS)Nr+r)Z get_structZ get_bytesZ remainingZget_namer) r'r r Úparserr r1rr2rrrr$rrrÚfrom_wire_parserLs     zHIP.from_wire_parser)NT)NTN)NNF)N) Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__r r%Ú classmethodr*r3r5Ú __classcell__rrr rrs  ÿ r) rrr-Z dns.exceptionZdnsZ dns.immutableZ dns.rdataZ dns.rdatatypeZ immutableZrdataZRdatarrrrrÚs