U iÛf‚6 ã @ sÚ d dl Z d dlZd dlZd dlZdddgZG dd„ deƒZd ZdZdZ dZ d ZG d d„ dƒZdd „ Z G dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZdd„ ZG dd„ dƒZG dd„ dƒZG dd„ dƒZdd„ ZdS )é NÚbinhexÚhexbinÚErrorc @ s e Zd ZdS )r N)Ú__name__Ú __module__Ú__qualname__© r r ú+/opt/alt/python38/lib64/python3.8/binhex.pyr s é i € é@ ó c @ s e Zd Zdd„ ZdS )ÚFInfoc C s d| _ d| _d| _d S )Nz????r )ÚTypeÚCreatorÚFlags©Úselfr r r Ú__init__0 s zFInfo.__init__N)r r r r r r r r r / s r c C st t ƒ }t | d¡2}| d¡}d|kr,d|_| dd¡ | ¡ }W 5 Q R X tj | ¡\}}| ddd¡}|||dfS ) NÚrbi r ZTEXTé ú:ú-r )r ÚioÚopenÚreadr ÚseekÚtellÚosÚpathÚsplitÚreplace)ÚnameÚfinfoÚfpÚdataZdsizeÚdirÚfiler r r Úgetfileinfo5 s r' c @ s, e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd S ) Úopenrsrcc G s d S ©Nr ©r Úargsr r r r C s zopenrsrc.__init__c G s dS ©Nó r r* r r r r F s z openrsrc.readc G s d S r) r r* r r r ÚwriteI s zopenrsrc.writec C s d S r) r r r r r ÚcloseL s zopenrsrc.closeN)r r r r r r. r/ r r r r r( B s r( c @ s, e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd S ) Ú_Hqxcoderenginec C s || _ d| _d| _td | _d S )Nr- r )Úofpr$ ÚhqxdataÚLINELENÚlinelen©r r1 r r r r R s z_Hqxcoderengine.__init__c C sh | j | | _ t| j ƒ}|d d }| j d |… }| j |d … | _ |sHd S | jt |¡ | _| d¡ d S )Né r )r$ Úlenr2 ÚbinasciiÚb2a_hqxÚ_flush)r r$ ZdatalenZtodor r r r. X s z_Hqxcoderengine.writec C sr d}|t | jƒ| j krH|| j }| j | j||… d ¡ t| _|}q| j|d … | _|rn| j | jd ¡ d S )Nr ó s : )r7 r2 r4 r1 r. r3 )r ZforceÚfirstZlastr r r r: c s z_Hqxcoderengine._flushc C s6 | j r| jt | j ¡ | _| d¡ | j ¡ | `d S )Nr )r$ r2 r8 r9 r: r1 r/ r r r r r/ n s z_Hqxcoderengine.closeN)r r r r r. r: r/ r r r r r0 O s r0 c @ s$ e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_Rlecoderenginec C s || _ d| _d S r, )r1 r$ r5 r r r r x s z_Rlecoderengine.__init__c C s@ | j | | _ t| j ƒtk rd S t | j ¡}| j |¡ d| _ d S r, )r$ r7 ÚREASONABLY_LARGEr8 Úrlecode_hqxr1 r. )r r$ Úrledatar r r r. | s z_Rlecoderengine.writec C s0 | j rt | j ¡}| j |¡ | j ¡ | `d S r) )r$ r8 r? r1 r. r/ )r r@ r r r r/ „ s z_Rlecoderengine.closeN)r r r r r. r/ r r r r r= u s r= c @ sL e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd d „ Zdd„ Zd d„ Z dd„ Z dS )ÚBinHexc C s |\}}}}d}t |tƒr.|}t |d¡}d}zR| d¡ t|ƒ} t| ƒ| _d| _|d kr`t ƒ }|| _ || _| ||¡ t | _W n |r”| ¡ ‚ Y nX d S )NFÚwbTs0 (This file must be converted with BinHex 4.0) :r )Ú isinstanceÚstrr r r. r0 r= r1 Úcrcr ÚdlenÚrlenÚ _writeinfoÚ_DID_HEADERÚstater/ ) r Zname_finfo_dlen_rlenr1 r! r" rF rG Zclose_on_errorZofnameZhqxerr r r r Œ s* zBinHex.__init__c C s´ t |ƒ}|dkrtdƒ‚t|gƒ| d¡ d }|j|j }}t|tƒrR| d¡}t|tƒrf| d¡}|| }t d|j ¡}t d| j| j¡} || | | } | | ¡ | ¡ d S )Né? zFilename too longzlatin-1ó ú>hz>ii)r7 r ÚbytesÚencoder r rC rD ÚstructÚpackr rF rG Ú_writeÚ _writecrc)r r! r" ÚnlÚdÚtpZcrZd2Zd3Zd4Úinfor r r rH £ s zBinHex._writeinfoc C s t || j¡| _| j |¡ d S r) )r8 Úcrc_hqxrE r1 r. ©r r$ r r r rR ¶ s z BinHex._writec C s4 | j dk rd}nd}| j t || j ¡¡ d| _ d S )Nr rM z>H)rE r1 r. rP rQ )r Zfmtr r r rS º s zBinHex._writecrcc C s0 | j tkrtdƒ‚| jt|ƒ | _| |¡ d S )NzWriting data at the wrong time)rJ rI r rF r7 rR rY r r r r. Ä s zBinHex.writec C s, | j dkrtd| jf ƒ‚| ¡ t| _d S )Nr zIncorrect data size, diff=%r)rF r rG rS Ú _DID_DATArJ r r r r Ú close_dataÊ s zBinHex.close_datac C sB | j tk r| ¡ | j tkr$tdƒ‚| jt|ƒ | _| |¡ d S )Nz'Writing resource data at the wrong time)rJ rZ r[ r rG r7 rR rY r r r Ú write_rsrcÐ s zBinHex.write_rsrcc C sx | j d krd S zJ| j tk r"| ¡ | j tkr4tdƒ‚| jdkrNtd| jf ƒ‚| ¡ W 5 d | _ | j}| `| ¡ X d S )NzClose at the wrong timer z$Incorrect resource-datasize, diff=%r)rJ r1 r/ rZ r[ r rG rS r5 r r r r/ Ø s zBinHex.closeN)r r r r rH rR rS r. r[ r\ r/ r r r r rA ‹ s rA c C sˆ t | ƒ}t||ƒ}t | d¡*}| d¡}|s0q<| |¡ q | ¡ W 5 Q R X t| dƒ}| d¡}|shqt| |¡ qX| ¡ | ¡ d S )Nr é ô ) r' rA r r r r. r[ r( r\ r/ )ÚinpÚoutr" r1 ÚifprU r r r r é s c @ s$ e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_Hqxdecoderenginec C s || _ d| _d S )Nr )r` Úeof©r r` r r r r s z_Hqxdecoderengine.__init__c C s´ d}|}|dkr°| j r|S |d d d }| j |¡}zt |¡\}| _ W qˆW n tjk rd Y nX | j d¡}|s~tdƒ‚|| }q6|| }|t|ƒ }|s| j stdƒ‚q|S )Nr- r r r6 é r zPremature EOF on binhex file)rb r` r r8 Za2b_hqxZ Incompleter r7 )r ZtotalwtdZdecdataÚwtdr$ Z decdatacurÚnewdatar r r r s* z_Hqxdecoderengine.readc C s | j ¡ d S r) ©r` r/ r r r r r/ % s z_Hqxdecoderengine.closeN)r r r r r r/ r r r r ra þ s ra c @ s, e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd S ) Ú_Rledecoderenginec C s || _ d| _d| _d| _d S )Nr- r )r` Ú pre_bufferÚpost_bufferrb rc r r r r + s z_Rledecoderengine.__init__c C sD |t | jƒkr"| |t | jƒ ¡ | jd |… }| j|d … | _|S r) )r7 rj Ú_fill)r re Úrvr r r r 1 s z_Rledecoderengine.readc C sô | j | j |d ¡ | _ | jjr>| jt | j ¡ | _d| _ d S t| j ƒ}| j dd … td t krl|d }nX| j dd … tkrˆ|d }n<| j dd … td kr¨|d }n| j dd… tkr¼n|d }| jt | j d |… ¡ | _| j |d … | _ d S ) Nrd r- éýÿÿÿrL r6 éÿÿÿÿr éþÿÿÿr ) ri r` r rb rj r8 Z rledecode_hqxr7 ÚRUNCHAR)r re Zmarkr r r rk 8 s* ÿ ÿz_Rledecoderengine._fillc C s | j ¡ d S r) rg r r r r r/ [ s z_Rledecoderengine.closeN)r r r r r rk r/ r r r r rh ( s #rh c @ sL e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd d „ Zdd„ Zd d„ Z dd„ Z dS )ÚHexBinc C sf t |tƒrt |d¡}| d¡}|s,tdƒ‚|dkr6q|dkrqBqt|ƒ}t|ƒ| _d| _ | ¡ d S )Nr r zNo binhex data foundr; ó :r )rC rD r r r r ra rh r` rE Ú_readheader)r r` ZchZhqxifpr r r r _ s zHexBin.__init__c C s | j |¡}t || j¡| _|S r) )r` r r8 rX rE )r r7 r$ r r r Ú_readu s zHexBin._readc C sN t d| j d¡¡d d@ }| jd@ | _|| jkrDtd| j|f ƒ‚d| _d S )NrM r r iÿÿ zCRC error, computed %x, read %x)rP Úunpackr` r rE r )r Zfilecrcr r r Ú _checkcrcz s ÿzHexBin._checkcrcc C s¾ | d¡}| t|ƒ¡}| d¡}| ¡ |dd… }|dd… }t d|dd… ¡d }t d|dd … ¡d | _t d|d d… ¡d | _|| _tƒ | _|| j_ || j_ || j_t| _ d S ) Nr é é é rM é r z>lé )rt Úordrv rP ru rF rG ÚFNamer r r r rI rJ )r r7 ZfnameÚrestÚtypeZcreatorÚflagsr r r rs „ s zHexBin._readheaderc G sj | j tkrtdƒ‚|r,|d }t|| jƒ}n| j}d}t|ƒ|k rZ|| |t|ƒ ¡ }q6| j| | _|S )NzRead data at wrong timer r- )rJ rI r ÚminrF r7 rt )r Únrl r r r r ˜ s zHexBin.readc C s6 | j tkrtdƒ‚| jr$| | j¡}| ¡ t| _ d S )Nzclose_data at wrong time)rJ rI r rF rt rv rZ ©r Zdummyr r r r[ ¦ s zHexBin.close_datac G sZ | j tkr| ¡ | j tkr$tdƒ‚|r>|d }t|| jƒ}n| j}| j| | _| |¡S )Nz Read resource data at wrong timer )rJ rI r[ rZ r r rG rt )r r‚ r r r Ú read_rsrc® s zHexBin.read_rsrcc C sD | j d krd S z| jr"| | j¡}| ¡ W 5 d | _ | j ¡ X d S r) )rJ r` r/ rG r„ rv rƒ r r r r/ » s zHexBin.closeN)r r r r rt rv rs r r[ r„ r/ r r r r rq ^ s rq c C s¦ t | ƒ}|j}|s|j}t |d¡"}| d¡}|s6qB| |¡ q&W