grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026ž ÷ f“c @sdZddddgZdZdZdZdZyd d lmZmZWne k rjdZdZYnXd d „Z d d„Z ddd„Zdddd„Zddd„Zddd„Zdd„Zdd„Zdd„ZedkrüeƒndS(uHConversions to/from quoted-printable transport encoding as per RFC 1521.uencodeudecodeu encodestringu decodestrings=iLs0123456789ABCDEFsi(ua2b_qpub2a_qpcCsG|dkr|S|dkr |S|tkpFd|koCdkn S(uìDecide whether a particular byte ordinal needs to be quoted. The 'quotetabs' flag indicates whether embedded tabs and spaces should be quoted. Note that line-ending tabs and spaces are always encoded, as per RFC 1521. s s_s s~(uESCAPE(ucu quotetabsuheader((u+/opt/alt/python33/lib64/python3.3/quopri.pyu needsquotings   u needsquotingcCs0t|ƒ}ttt|dt|dfƒS(uQuote a single character.i(uorduESCAPEubytesuHEX(uc((u+/opt/alt/python33/lib64/python3.3/quopri.pyuquote$s uquotec Cs¼tdk rA|jƒ}t|d|d|ƒ}|j|ƒdS|ddd„}d}x=|jƒ}|srPng} d} |d d…dkr­|dd…}d} nxm|D]e} t| fƒ} t| ||ƒrêt| ƒ} n|r | d kr | jd ƒq´| j| ƒq´W|dk r6||ƒnt j | ƒ} xHt | ƒt kr�|| dt d…d d ƒ| t dd…} qHW| }q\|dk r¸||d | ƒndS(u–Read 'input', apply quoted-printable encoding, and write to 'output'. 'input' and 'output' are files with readline() and write() methods. The 'quotetabs' flag indicates whether embedded tabs and spaces should be quoted. Note that line-ending tabs and spaces are always encoded, as per RFC 1521. The 'header' flag indicates whether we are encoding spaces as _ as per RFC 1522. u quotetabsuheaderNs cSs‰|rN|dd…dkrN|j|dd…t|dd…ƒ|ƒn7|dkrt|jt|ƒ|ƒn|j||ƒdS(Nis s.iÿÿÿÿiÿÿÿÿiÿÿÿÿ(uwriteuquote(usuoutputulineEnd((u+/opt/alt/python33/lib64/python3.3/quopri.pyuwrite=s 2 uencode..writesis s_ulineEnds= iÿÿÿÿiÿÿÿÿ( ub2a_qpuNoneureaduwriteureadlineubytesu needsquotinguquoteuappendu EMPTYSTRINGujoinulenu MAXLINESIZE( uinputuoutputu quotetabsuheaderudatauodatauwriteuprevlineulineuoutlineustrippeducuthisline((u+/opt/alt/python33/lib64/python3.3/quopri.pyuencode,s@           cCsdtdk r"t|d|d|ƒSddlm}||ƒ}|ƒ}t||||ƒ|jƒS(Nu quotetabsuheaderi(uBytesIO(ub2a_qpuNoneuiouBytesIOuencodeugetvalue(usu quotetabsuheaderuBytesIOuinfpuoutfp((u+/opt/alt/python33/lib64/python3.3/quopri.pyu encodestringls   c Cs‡tdk r;|jƒ}t|d|ƒ}|j|ƒdSd}x)|jƒ}|sZPndt|ƒ}}|dkrÝ||d|…dkrÝd} |d}x=|dkrÙ||d|…dkrÙ|d}q¦Wnd} xd||krI|||d…} | dkr/|r/|d }|d}qæ| tkrR|| }|d}qæ|d|krs| rsd} Pqæ|d|kr®||dtkr®|t}|d }qæ|d |kr2t||d|d …ƒr2t||d |d …ƒr2|tt ||d|d …ƒfƒ}|d }qæ|| }|d}qæW| sD|j|dƒd}qDqD|rƒ|j|ƒndS( uÑRead 'input', apply quoted-printable decoding, and write to 'output'. 'input' and 'output' are files with readline() and write() methods. If 'header' is true, decode underscore as space (per RFC 1522).uheaderNsiis s s_s ii( ua2b_qpuNoneureaduwriteureadlineulenuESCAPEuishexubytesuunhex( uinputuoutputuheaderudatauodataunewulineuiunupartialuc((u+/opt/alt/python33/lib64/python3.3/quopri.pyudecodewsR    & )   $ L+   cCs^tdk rt|d|ƒSddlm}||ƒ}|ƒ}t||d|ƒ|jƒS(Nuheaderi(uBytesIO(ua2b_qpuNoneuiouBytesIOudecodeugetvalue(usuheaderuBytesIOuinfpuoutfp((u+/opt/alt/python33/lib64/python3.3/quopri.pyu decodestring¢s   cCsPd|kodknpOd|ko3dknpOd|koMdkSS(uDReturn true if the byte ordinal 'c' is a hexadecimal digit in ASCII.s0s9sasfsAsF((uc((u+/opt/alt/python33/lib64/python3.3/quopri.pyuishex®suishexcCsËd}x¾|D]¶}t|fƒ}d|ko9dknrMtdƒ}n^d|koddknr|tdƒd}n/d |ko“d knr«td ƒd}n|d t|ƒ|}q W|S( u.Get the integer value of a hexadecimal number.is0s9u0sasfuai sAsFi(ubytesuord(usubitsucui((u+/opt/alt/python33/lib64/python3.3/quopri.pyuunhex³s uunhexc )Cs;ddl}ddl}y)|j|jdd…dƒ\}}Wni|jk r¬}zF|j|_t|ƒtdƒtdƒtdƒ|jdƒWYdd}~XnXd}d}x>|D]6\}}|dkrád}n|d krÀd}qÀqÀW|r,|r,|j|_td ƒ|jdƒn|s>d g}nd} xÚ|D]Ò} | d krl|jj } n^yt | d ƒ} WnHt k rÉ}z(|jj d | |fƒd} wKWYdd}~XnXz6|rét | |jj ƒnt| |jj |ƒWd| d kr| jƒnXqKW| r7|j| ƒndS(Niiutdu"usage: quopri [-t | -d] [file] ...u-t: quote tabsu-d: decode; default encodeiu-tu-du -t and -d are mutually exclusiveu-urbu%s: can't open (%s) (usysugetoptuargvuerrorustderrustdoutuprintuexitustdinubufferuopenuIOErroruwriteudecodeuencodeuclose( usysugetoptuoptsuargsumsgudecoutabsuouaustsufileufp((u+/opt/alt/python33/lib64/python3.3/quopri.pyumainÅsT  )               umainu__main__NF(u__doc__u__all__uESCAPEu MAXLINESIZEuHEXu EMPTYSTRINGubinasciiua2b_qpub2a_qpu ImportErroruNoneu needsquotinguquoteuFalseuencodeu encodestringudecodeu decodestringuishexuunhexumainu__name__(((u+/opt/alt/python33/lib64/python3.3/quopri.pyus*    @ +   .