
    ;)di                     <    d dl Z d dlZd dlmZ  G d d          ZdS )    N)div_roundupc                       e Zd ZdZdZdZdZdZdZdZ	dZ
	 d d
edededz  deddf
dZd!dZdedededdfdZededefd            ZdedededededdfdZdededdfdZdS )"	UF2Writeri   i     iUF2
l   WQ< i0o
i    i @  Tchip_idoutput_file
chunk_sizeNmd5_enabledreturnc                     |sd| _         d| _        || _        || _        || j        | j         z
  n|| _        t          |d          | _        d S )Nr   wb)UF2_MD5_PART_SIZEUF2_FLAG_MD5_PRESENTr
   r   UF2_DATA_SIZE
CHUNK_SIZEopenf)selfr   r   r	   r
   s        Y/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/esptool/uf2_writer.py__init__zUF2Writer.__init__   sg      	3%&D"(2D%& ! !777 	
 k4((    c                     | S N )r   s    r   	__enter__zUF2Writer.__enter__*   s    r   exc_typeexc_valexc_tbc                 J    | j         r| j                                          d S d S r   )r   close)r   r   r   r   s       r   __exit__zUF2Writer.__exit__-   s)    6 	FLLNNNNN	 	r   numc                 ,    t          j        d|           S )Nz<I)structpack)r"   s    r   
_to_uint32zUF2Writer._to_uint321   s    {4%%%r   addrchunk	len_chunkblock_noblocksc                 V   |dk    sJ || j         k    sJ ||k     sJ t          j        d| j        | j        | j        | j        z  ||||| j        	  	        }||z  }| j        r^t          j        d||          }|t          j
        |                                          z  }t          |          | j        k    sJ ||z  }|d| j        | j        z
  |z
  z  z  }||                     | j                  z  }t          |          | j        k    sJ | j                            |           d S )Nr   z	<IIIIIIIIz<II    )r   r$   r%   UF2_FIRST_MAGICUF2_SECOND_MAGICUF2_FLAG_FAMILYID_PRESENTr   r   r
   hashlibmd5digestlenr   r   r&   UF2_FINAL_MAGICUF2_BLOCK_SIZEr   write)r   r'   r(   r)   r*   r+   blockmd5_parts           r   _write_blockzUF2Writer._write_block5   sM    1}}}}DO++++&     !*T-FFL

 

 	 	{5$	::HE**11333Hx==D$:::::XED.1GG)STT!56665zzT00000Ur   imagec                 2    t          t                     j                  } fdt          dt                     j                  D             }t	          |          D ]2\  }}t          |          }                     |||||           ||z  }3d S )Nc                 4    g | ]}||j         z            S r   )r   ).0ir;   r   s     r   
<listcomp>z&UF2Writer.add_file.<locals>.<listcomp>U   s:     
 
 
 !a$/))*
 
 
r   r   )r   r4   r   range	enumerater:   )r   r'   r;   r+   chunksr?   r(   r)   s   ` `     r   add_filezUF2Writer.add_fileS   s    SZZ99
 
 
 
 
1c%jj$/::
 
 
 "&)) 	 	HAuE

IdE9a@@@IDD	 	r   )T)r   r   )__name__
__module____qualname__r6   r   r   r.   r/   r5   r0   r   intstrboolr   r   listr!   staticmethodbytesr&   r:   rD   r   r   r   r   r      sq       NM O! O *% !) )) ) $J	)
 ) 
) ) ) )&    s D T     & & & & & \& %25ADNQ	   <	S 	 	4 	 	 	 	 	 	r   r   )r1   r$   esptool.utilr   r   r   r   r   <module>rO      sg   
   $ $ $ $ $ $Q Q Q Q Q Q Q Q Q Qr   