grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´iãã@sÚdZddlZdd„Zdd„Zdd„Zd d „Zd d „Zd Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„ZGdd„dejƒZGdd„dejƒZGd d!„d!ejƒZGd"d#„d#eejƒZGd$d%„d%eejƒZd&d'„ZdS)(uY Codec for the Punicode encoding, as specified in RFC 3492 Written by Martin v. Löwis. éNcCsPtƒ}tƒ}|D]*}t|ƒdkr0| t|ƒ¡q| |¡qt|ƒ}t|ƒ|fS)z 3.1 Basic code point segregationé€)Ú bytearrayÚsetÚordÚappendÚaddÚsortedÚbytes)ÚstrÚbaseÚextendedÚc©rú*/usr/lib64/python3.9/encodings/punycode.pyÚ segregate s  rcCs&d}|D]}t|ƒ|kr|d7}q|S)z@Return the length of str, considering only characters below max.ré)r)r ÚmaxÚresr rrrÚ selective_lens   rcCsNt|ƒ}|d7}||krdS||}||kr8|d|fS||kr|d7}qdS)aReturn a pair (index, pos), indicating the next occurrence of char in str. index is the position of the character considering only ordinals up to and including char, and pos is the position in the full string. index/pos is the starting position in the full string.r)éÿÿÿÿrN)Úlen)r ÚcharÚindexÚposÚlr rrrÚselective_finds rc Csˆd}g}d}|D]r}d}}t|ƒ}t||ƒ} | d||} t||||ƒ\}}|dkrZq~| ||7} | | d¡|}d} q>|}q|S)ú3.2 Insertion unsort codingrrrr)rrrr) r r ZoldcharÚresultZoldindexr rrrZcurlenÚdeltarrrÚinsertion_unsort0s"  rcCs,d|d|}|dkrdS|dkr(dS|S)Né$rér)ÚjÚbiasrrrrÚTFs  r$s$abcdefghijklmnopqrstuvwxyz0123456789cCsntƒ}d}t||ƒ}||kr2| t|¡t|ƒS| t|||d|¡||d|}|d7}q dS)ú(3.3 Generalized variable-length integersrr rN)rr$rÚdigitsr )ÚNr#rr"ÚtrrrÚgenerate_generalized_integerNs r)cCsX|r|d}n|d}|||7}d}|dkr@|d}|d7}q&|d||d}|S)Ni¼ériÇé#r é&r)rÚfirstÚnumcharsZ divisionsr#rrrÚadapt[s   r/cCsPtƒ}d}t|ƒD]4\}}t||ƒ}| |¡t||dk||dƒ}qt|ƒS)z3.4 Bias adaptationéHrr)rÚ enumerater)Úextendr/r )ZbaselenÚdeltasrr#ZpointsrÚsrrrÚgenerate_integersjs  r5cCs8t|ƒ\}}t||ƒ}tt|ƒ|ƒ}|r4|d|S|S)Nó-)rrr5r)Útextr r r3rrrÚpunycode_encodeus    r8c Csþd}d}d}zt||ƒ}Wn.tyJ|dkr:tdƒ‚|ddfYS0|d7}d|krhdkrvnn |d}nHd|krŠd kr˜nn |d }n&|dkr¶td ||dƒ‚n|dfSt||ƒ} |||7}|| krä||fS|d | }|d7}q dS) r%rrÚstrictzincomplete punicode stringNéAéZé0é9éz Invalid extended code point '%s'r )rÚ IndexErrorÚ UnicodeErrorr$) r Úextposr#ÚerrorsrÚwr"rZdigitr(rrrÚdecode_generalized_numbers2    ÿ   rDc CsÌd}d}d}d}|t|ƒkrÈt||||ƒ\}}|dur:|S||d7}||t|ƒd7}|dkr~|dkrvtd |ƒ‚td ƒ}|t|ƒd}|d|…t|ƒ||d…}t||dkt|ƒƒ}|}q|S) rrrr0rNriÿÿr9zInvalid character U+%xú?)rrDr@rÚchrr/) r r rBrrr#rAZnewposrrrrÚinsertion_sort�s* ÿ   rGcCs†t|tƒr| d¡}t|tƒr&t|ƒ}| d¡}|dkrLd}t|dƒ ¡}n.t|d|…d|ƒ}t||dd…dƒ ¡}t|||ƒS)NÚasciir6rÚr)Ú isinstancer ÚencodeÚ memoryviewr ÚrfindÚupperrG)r7rBrr r rrrÚpunycode_decode¶s    rOc@s eZdZddd„Zddd„ZdS) ÚCodecr9cCst|ƒ}|t|ƒfS©N)r8r©ÚselfÚinputrBrrrrrKÈsz Codec.encodecCs*|dvrtd|ƒ‚t||ƒ}|t|ƒfS©N)r9ÚreplaceÚignorezUnsupported error handling )r@rOrrRrrrÚdecodeÌs  z Codec.decodeN)r9)r9)Ú__name__Ú __module__Ú __qualname__rKrXrrrrrPÆs rPc@seZdZddd„ZdS)ÚIncrementalEncoderFcCst|ƒSrQ)r8©rSrTÚfinalrrrrKÓszIncrementalEncoder.encodeN)F)rYrZr[rKrrrrr\Òsr\c@seZdZddd„ZdS)ÚIncrementalDecoderFcCs$|jdvrtd|jƒ‚t||jƒSrU)rBr@rOr]rrrrX×s zIncrementalDecoder.decodeN)F)rYrZr[rXrrrrr_Ösr_c@s eZdZdS)Ú StreamWriterN©rYrZr[rrrrr`Üsr`c@s eZdZdS)Ú StreamReaderNrarrrrrbßsrbc Cs tjdtƒjtƒjttttd�S)NZpunycode)ÚnamerKrXÚincrementalencoderÚincrementaldecoderÚ streamwriterÚ streamreader) ÚcodecsÚ CodecInforPrKrXr\r_r`rbrrrrÚ getregentryäsùrj)Ú__doc__rhrrrrr$r&r)r/r5r8rDrGrOrPr\r_r`rbrjrrrrÚs(