§
    üxIfÂ  ã                   óÞ   — d Z ddlZddlZddlZddlmZmZmZ  G d„ de¦  «        Z	 G d„ dej
        ¦  «        Z G d„ d	ej
        ¦  «        Z G d
„ dej
        ¦  «        Z G d„ d¦  «        ZdS )a;  
ELF file parser.

This provides a class ``ELFFile`` that parses an ELF executable in a similar
interface to ``ZipFile``. Only the read interface is implemented.

Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca
ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html
é    N)ÚIOÚOptionalÚTuplec                   ó   — e Zd ZdS )Ú
ELFInvalidN)Ú__name__Ú
__module__Ú__qualname__© ó    úF/var/www/piapp/venv/lib/python3.11/site-packages/packaging/_elffile.pyr   r      s   € € € € € Ø€Dr   r   c                   ó   — e Zd ZdZdZdS )ÚEIClassé   é   N)r   r	   r
   ÚC32ÚC64r   r   r   r   r      ó   € € € € € Ø
€CØ
€C€C€Cr   r   c                   ó   — e Zd ZdZdZdS )ÚEIDatar   r   N)r   r	   r
   ÚLsbÚMsbr   r   r   r   r      r   r   r   c                   ó"   — e Zd ZdZdZdZdZdZdS )ÚEMachineé   é   é(   é>   é·   N)r   r	   r
   ÚI386ÚS390ÚArmÚX8664ÚAArc64r   r   r   r   r      s'   € € € € € Ø€DØ€DØ
€CØ€EØ€F€F€Fr   r   c                   óv   — e Zd ZdZdee         ddfd„Zdedee	df         fd„Z
edee         fd	„¦   «         ZdS )
ÚELFFilez.
    Representation of an ELF executable.
    ÚfÚreturnNc           
      óˆ  — || _         	 |                      d¦  «        }n"# t          j        $ r t	          d¦  «        ‚w xY wt          |d d…         ¦  «        }|dk    rt	          d|›�¦  «        ‚|d         | _        |d         | _        	 ddd	d
dœ| j        | j        f         \  }| _        | _	        n.# t          $ r! t	          d| j        › d| j        › d�¦  «        ‚w xY w	 |                      |¦  «        \
  }| _        }}| _        }| _        }| _        | _        d S # t          j        $ r}t	          d¦  «        |‚d }~ww xY w)NÚ16Bzunable to parse identificationé   s   ELFzinvalid magic: é   )z<HHIIIIIHHHz	<IIIIIIII©r   r   r+   )z>HHIIIIIHHHz	>IIIIIIIIr-   )z<HHIQQQIHHHz	<IIQQQQQQ©r   r   r,   )z>HHIQQQIHHHz	>IIQQQQQQr.   ))r   r   )r   r   )r   r   )r   r   zunrecognized capacity (z) or encoding (ú)z/unable to parse machine and section information)Ú_fÚ_readÚstructÚerrorr   ÚbytesÚcapacityÚencodingÚ_p_fmtÚ_p_idxÚKeyErrorÚmachineÚ_e_phoffÚflagsÚ_e_phentsizeÚ_e_phnum)Úselfr'   ÚidentÚmagicÚe_fmtÚ_Úes          r   Ú__init__zELFFile.__init__,   s°  € ØˆŒð	?Ø—J’J˜uÑ%Ô%ˆEˆEøÝŒ|ð 	?ð 	?ð 	?ÝÐ=Ñ>Ô>Ð>ð	?øøøå�e˜B˜Q˜B”iÑ Ô ˆØ�JÒÐÝÐ8¨uÐ8Ð8Ñ9Ô9Ð9à˜aœˆŒØ˜aœˆŒð	ð
 @Ø?Ø?Ø?ð	/ð /ð
 Œ}˜dœmÐ,ô/.Ñ+ˆE�4”; ¤ øõ ð 	ð 	ð 	Ýð.¨$¬-ð .ð .Ø!œ]ð.ð .ð .ñô ð ð	øøøð	Wð —
’
˜5Ñ!Ô!ñØØ”ØØØ”ØØ”
ØØÔ!Ø”��øåŒ|ð 	Wð 	Wð 	WÝÐNÑOÔOÐUVÐVøøøøð	Wøøøs,   ‰ Ÿ>Â'B3 Â3+CÃ"9D ÄEÄ,D<Ä<EÚfmt.c                 ó€   — t          j        || j                             t          j        |¦  «        ¦  «        ¦  «        S )N)r2   Úunpackr0   ÚreadÚcalcsize)r?   rF   s     r   r1   zELFFile._readZ   s,   € ÝŒ}˜S $¤'§,¢,­v¬¸sÑ/CÔ/CÑ"DÔ"DÑEÔEÐEr   c                 ó  — t          | j        ¦  «        D ]ñ}| j                             | j        | j        |z  z   ¦  «         	 |                      | j        ¦  «        }n# t          j	        $ r Y ŒYw xY w|| j
        d                  dk    rŒu| j                             || j
        d                  ¦  «         t          j        | j                             || j
        d                  ¦  «        ¦  «                             d¦  «        c S dS )zH
        The path recorded in the ``PT_INTERP`` section header.
        r   r   r   r   ú N)Úranger>   r0   Úseekr;   r=   r1   r7   r2   r3   r8   ÚosÚfsdecoderI   Ústrip)r?   ÚindexÚdatas      r   ÚinterpreterzELFFile.interpreter]   sø   € õ
 ˜4œ=Ñ)Ô)ð 		Oð 		OˆEØŒG�LŠL˜œ¨Ô):¸UÑ)BÑBÑCÔCÐCðØ—z’z $¤+Ñ.Ô.��øÝ”<ð ð ð Ø�ðøøøà�D”K ”NÔ# qÒ(Ð(ØØŒG�LŠL˜˜dœk¨!œnÔ-Ñ.Ô.Ð.Ý”;˜tœwŸ|š|¨D°´¸Q´Ô,@ÑAÔAÑBÔB×HÒHÈÑNÔNÐNÐNÐNØˆts   ÁAÁA/Á.A/)r   r	   r
   Ú__doc__r   r4   rE   Ústrr   Úintr1   Úpropertyr   rT   r   r   r   r&   r&   '   s¦   € € € € € ðð ð,W˜"˜Uœ)ð ,W¨ð ,Wð ,Wð ,Wð ,Wð\F˜ð F  s¨C x¤ð Fð Fð Fð Fð ð˜X cœ]ð ð ð ñ „Xðð ð r   r&   )rU   ÚenumrO   r2   Útypingr   r   r   Ú
ValueErrorr   ÚIntEnumr   r   r   r&   r   r   r   ú<module>r]      s4  ððð ð €€€Ø 	€	€	€	Ø €€€Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ðð ð ð ð ˆdŒlñ ô ð ð
ð ð ð ð ˆTŒ\ñ ô ð ð
ð ð ð ð ˆtŒ|ñ ô ð ðEð Eð Eð Eð Eñ Eô Eð Eð Eð Er   