Ë
    £èhØO  ã                  óÂ   — d dl mZ d dlmZmZmZmZmZmZ d dl	m	Z	 d dl
Z
d dlmZmZ d dlmZ eeeef   Zdd„Zdd„Zd	Z G d
„ de«      Z G d„ d«      Z G d„ d«      Zy)é    )Úannotations)ÚIterableÚAnyÚSequenceÚUnionÚoverloadÚOptional)ÚarrayN)Ú	unhexlifyÚhexlify)Údecodec                óz   — t        d«      }| D ]  }|j                  t        |«      «       Œ |j                  «       S )z-Returns multiple hex strings `data` as bytes.ÚB)r
   Úextendr   Útobytes)ÚdataÚ
byte_arrayÚhexstrs      ú6lib/python3.12/site-packages/ezdxf/tools/binarydata.pyÚhex_strings_to_bytesr      s7   € ä�s“€JÛˆØ×Ñœ) FÓ+Õ,ð à×ÑÓÐó    c                óP   — t        | «      j                  «       j                  «       S )z)Returns `data` bytes as plain hex string.)r   Úupperr   )r   s    r   Úbytes_to_hexstrr      s   € ä�4‹=×ÑÓ ×'Ñ'Ó)Ð)r   s     c                  ó   — e Zd Zy)ÚEndOfBufferErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   r   r      s   „ Ør   r   c                  ón   — e Zd ZdZddd„Zedd„«       Zdd„Zdd„Zdd„Z	dd„Z
dd„Zdd	„Zddd
„Zdd„Zy)Ú
ByteStreamznProcess little endian binary data organized as bytes, data is padded to
    4 byte boundaries by default.
    c                ó@   — t        |«      | _        d| _        || _        y ©Nr   )Ú
memoryviewÚbufferÚindexÚ_align)Úselfr&   Úaligns      r   Ú__init__zByteStream.__init__'   s   € Ü  Ó(ˆŒØˆŒ
Ø ˆ�r   c                óF   — | j                   t        | j                  «      k  S ©N)r'   Úlenr&   ©r)   s    r   Úhas_datazByteStream.has_data,   s   € à�z‰zœC §¡Ó,Ñ,Ð,r   c                óL   — || j                   z  }|r|| j                   z   |z
  S |S r-   )r(   )r)   r'   Úmodulos      r   r*   zByteStream.align0   s+   € Ø˜Ÿ™Ñ$ˆÙ/5ˆu�t—{‘{Ñ" VÑ+Ð@¸5Ð@r   c                óø   — | j                   st        d«      ‚t        j                  || j                  | j
                  ¬«      }| j                  | j
                  t        j                  |«      z   «      | _        |S )z°Read data defined by a struct format string. Insert little endian
        format character '<' as first character, if machine has native big
        endian byte order.
        úUnexpected end of buffer.)Úoffset)r0   r   ÚstructÚunpack_fromr&   r'   r*   Úcalcsize)r)   ÚfmtÚresults      r   Úread_structzByteStream.read_struct4   sZ   € ð
 �}Š}Ü"Ð#>Ó?Ð?ä×#Ñ# C¨¯©¸T¿Z¹ZÔHˆØ—Z‘Z §
¡
¬V¯_©_¸SÓ-AÑ AÓBˆŒ
Øˆr   c                ó*   — | j                  d«      d   S )Nú<dr   ©r;   r/   s    r   Ú
read_floatzByteStream.read_float@   ó   € Ø×Ñ Ó% aÑ(Ð(r   c                ó*   — | j                  d«      d   S )Nz<Lr   r>   r/   s    r   Ú	read_longzByteStream.read_longC   r@   r   c                ó*   — | j                  d«      d   S )Nz<lr   r>   r/   s    r   Úread_signed_longzByteStream.read_signed_longF   r@   r   c                ó$   — | j                  d«      S )Nz<3dr>   r/   s    r   Úread_vertexzByteStream.read_vertexI   s   € Ø×Ñ Ó&Ð&r   c                óö   — | j                   }t        | j                  t        |«      «      D ]A  }||   dk(  sŒ| j                  }| j	                  |dz   «      | _        t        ||| |¬«      c S  t        d«      ‚)u³   PS: Padded String. This is a string, terminated with a zero byte.
        The fileâ€™s text encoding (code page) is used to encode/decode the bytes
        into a string.
        r   é   ©Úencodingz?Unexpected end of buffer, did not detect terminating zero byte.)r&   Úranger'   r.   r*   r   r   )r)   rJ   r&   Ú	end_indexÚstart_indexs        r   Úread_padded_stringzByteStream.read_padded_stringL   sv   € ð
 —‘ˆÜ˜tŸz™z¬3¨v«;Ö7ˆIØ�iÑ  AÓ%Ø"Ÿj™j�Ø!ŸZ™Z¨	°A©Ó6�”
ä˜f [°Ð;ÀhÔOÒOð 8ô ØMó
ð 	
r   c                ó  — | j                   }t        | j                  t        |«      d«      D ]H  }|||dz    t        k(  sŒ| j                  }| j                  |dz   «      | _        t        ||| d¬«      c S  t        d«      ‚)z°PUS: Padded Unicode String. The bytes are encoded using Unicode
        encoding. The bytes consist of byte pairs and the string is terminated
        by 2 zero bytes.
        é   Ú	utf_16_lerI   z@Unexpected end of buffer, did not detect terminating zero bytes.)r&   rK   r'   r.   Ú	NULL_NULLr*   r   r   )r)   r&   rL   rM   s       r   Úread_padded_unicode_stringz%ByteStream.read_padded_unicode_string\   sƒ   € ð
 —‘ˆÜ˜tŸz™z¬3¨v«;¸Ö:ˆIØ�i )¨a¡-Ð0´IÓ=Ø"Ÿj™j�Ø!ŸZ™Z¨	°A©Ó6�”
äØ˜; yÐ1¸Kôò ð ;ô ØNó
ð 	
r   N)é   )r&   ÚBytesr*   Úint©ÚreturnÚbool)r'   rV   rX   rV   )r9   ÚstrrX   r   ©rX   Úfloat©rX   rV   ©rX   úSequence[float])Úutf_8)rJ   rZ   rX   rZ   ©rX   rZ   )r   r   r   Ú__doc__r+   Úpropertyr0   r*   r;   r?   rB   rD   rF   rN   rS   r    r   r   r"   r"   !   sI   „ ñô
!ð
 ò-ó ð-óAó
ó)ó)ó)ó'ô
ô 
r   r"   c                  ó8  — e Zd ZdZ	 	 d2	 	 	 	 	 d3d„Zed4d„«       Zd5d„Zd5d„Zd6d„Z	d6d„Z
d6d„Zd6d	„Zd7d
„Zd6d„Zd6d„Zd6d„Zd6d„Zd8d„Zd6d„Zed6d„«       Zed7d„«       Zd9d:d„Zed6d„«       Zed7d„«       Zd9d:d„Zd6d„Zed8d„«       Zed;d„«       Zd9d<d„Zed8d„«       Zed;d„«       Zd9d<d„Zed8d„«       Zed;d„«       Ze	 	 	 	 	 	 d=d „«       Z	 d>	 	 	 	 	 d?d!„Zd6d"„Zd6d#„Zd6d$„Zd@d%„ZdAd8d&„Zd6d'„Z dBd(„Z!dBd)„Z"dBd*„Z#dCd+„Z$dDd,„Z%d6d-„Z&dEdFd.„Z'dEdGd/„Z(dHd0„Z)y1)IÚ	BitStreamz:Process little endian binary data organized as bit stream.c                óN   — t        |«      | _        d| _        || _        || _        y r$   )r%   r&   Ú	bit_indexÚ
dxfversionrJ   )r)   r&   rh   rJ   s       r   r+   zBitStream.__init__s   s%   € ô ! Ó(ˆŒØˆŒØ$ˆŒØ ˆ�r   c                óL   — | j                   dz	  t        | j                  «      k  S )Né   )rg   r.   r&   r/   s    r   r0   zBitStream.has_data~   s   € à�~‰~ Ñ"¤S¨¯©Ó%5Ñ5Ð5r   c                ó†   — | j                   dz	  t        | j                   dz  «      z   }||z  }|r|||z
  z  }|dz  | _         y)zAlign to byte border.rj   é   N)rg   rY   )r)   ÚcountÚ
byte_indexr2   s       r   r*   zBitStream.align‚   sI   € à—n‘n¨Ñ)¬T°$·.±.À1Ñ2DÓ-EÑEˆ
Ø˜eÑ#ˆÙØ˜% &™.Ñ(ˆJØ# q™ˆ�r   c                ó.   — | xj                   |z  c_         y)zSkip `count` bits.N)rg   ©r)   rm   s     r   ÚskipzBitStream.skipŠ   s   € à�Š˜%ÑŽr   c                ó´   — | j                   }| xj                   dz  c_         	 | j                  |dz	     d|dz  z	  z  rdS dS # t        $ r t        d«      ‚w xY w)zRead one bit from buffer.rH   rj   é€   rl   r   r4   )rg   r&   Ú
IndexErrorr   )r)   r'   s     r   Úread_bitzBitStream.read_bitŽ   sd   € à—‘ˆØ�Š˜!Ñ�ð	@ØŸ™ E¨Q¡JÑ/°4¸EÀA¹IÑ3FÒG�1ÐNÈQÐNøÜò 	@Ü"Ð#>Ó?Ð?ð	@ús   £A Á A ÁAc                ó  — | j                   }| j                  }||z   }|dz
  dz	  t        |«      kD  rt        d«      ‚|| _         d|dz  z	  }|dz	  }d}||   }|dkD  r/|dz  }||z  r|dz  }|dz  }|dz  }|s|rd}|dz  }||   }|dkD  rŒ/|S )zRead `count` bits from buffer.rH   rj   r4   rs   rl   r   )rg   r&   r.   r   )	r)   rm   r'   r&   Únext_bit_indexÚtest_bitÚtest_byte_indexÚvalueÚ	test_bytes	            r   Ú	read_bitszBitStream.read_bits—   sÍ   € à—‘ˆØ—‘ˆà ™ˆà˜QÑ 1Ñ$¤s¨6£{Ò2ä"Ð#>Ó?Ð?Ø'ˆŒà˜E A™IÑ&ˆØ 1™*ˆØˆØ˜?Ñ+ˆ	Ø�aŠiØ�a‰KˆEØ˜8Ò#Ø˜‘
�Ø�Q‰JˆEØ˜‰NˆHÙ¡Ø�Ø 1Ñ$�Ø" ?Ñ3�	ð �a‹ið ˆr   c                ó$   — | j                  d«      S )z*Read an unsigned byte (8 bit) from buffer.é   ©r|   r/   s    r   Úread_unsigned_bytezBitStream.read_unsigned_byte³   s   € à�~‰~˜aÓ Ð r   c                óF   — | j                  d«      }|dz  r
| dz  dz    S |S )z'Read a signed byte (8 bit) from buffer.r~   rs   éÿ   rH   r   ©r)   rz   s     r   Úread_signed_bytezBitStream.read_signed_byte·   s0   € à—‘˜qÓ!ˆØ�4Š<à�f˜t‘m qÑ(Ð)Ð)àˆLr   c                ó®   — | j                   }| j                  dz	  }||z   }|t        |«      k  r| xj                  |dz  z  c_        ||| S t        d«      ‚)Nrj   r4   )r&   rg   r.   r   )r)   rm   r&   rM   rL   s        r   Úread_aligned_byteszBitStream.read_aligned_bytesÀ   sZ   € Ø—‘ˆØ—n‘n¨Ñ)ˆØ %Ñ'ˆ	Øœ˜F›Ò#Ø�NŠN˜e q™jÑ(�NØ˜+ iÐ0Ð0ä"Ð#>Ó?Ð?r   c                óž   — | j                   dz  r#| j                  d«      }| j                  d«      }n| j                  d«      \  }}|dz  |z   S )z,Read an unsigned short (16 bit) from buffer.rl   r~   rP   ©rg   r|   r†   )r)   Ús1Ús2s      r   Úread_unsigned_shortzBitStream.read_unsigned_shortÊ   sL   € à�>‰>˜AÒØ—‘ Ó"ˆBØ—‘ Ó"‰Bà×,Ñ,¨QÓ/‰FˆB�Ø�a‘˜2‰~Ðr   c                óD   — | j                  «       }|dz  r
| dz  dz    S |S )z)Read a signed short (16 bit) from buffer.é €  iÿÿ  rH   ©r‹   rƒ   s     r   Úread_signed_shortzBitStream.read_signed_shortÓ   s0   € à×(Ñ(Ó*ˆØ�6Š>à�f˜v‘o¨Ñ*Ð+Ð+àˆLr   c                óÎ   — | j                   dz  r-| j                  } |d«      } |d«      } |d«      } |d«      }n| j                  d«      \  }}}}|dz  |dz  z   |dz  z   |z   S )z+Read an unsigned long (32 bit) from buffer.rl   r~   rT   é   é   rˆ   )r)   r|   Úl1Úl2Úl3Úl4s         r   Úread_unsigned_longzBitStream.read_unsigned_longÜ   st   € à�>‰>˜AÒØŸ™ˆIÙ˜1“ˆBÙ˜1“ˆBÙ˜1“ˆBÙ˜1“‰Bà!×4Ñ4°QÓ7‰NˆB��B˜Ø�b‘˜R 2™XÑ&¨"°©'Ñ2°RÑ7Ð7r   c                óD   — | j                  «       }|dz  r
| dz  dz    S |S )z(Read a signed long (32 bit) from buffer.l        l   ÿÿ rH   )r—   rƒ   s     r   rD   zBitStream.read_signed_longè   s2   € à×'Ñ'Ó)ˆØ�:Òà�f˜zÑ)¨QÑ.Ð/Ð/àˆLr   c                óÜ   ‡— | j                   dz  r*| j                  Št        ˆfd„t        d«      D «       «      }nt        | j	                  d«      «      }t        j                  d|«      d   S )Nrl   c              3  ó.   •K  — | ]  } ‰d «      –— Œ y­w)r~   Nr    )Ú.0Ú_r|   s     €r   Ú	<genexpr>z'BitStream.read_float.<locals>.<genexpr>ô   s   øè ø€ Ð8©x¨!™ 1Ÿ©xùs   ƒr~   r=   r   )rg   r|   ÚbytesrK   r†   r6   Úunpack)r)   r   r|   s     @r   r?   zBitStream.read_floatñ   sW   ø€ Ø�>‰>˜AÒØŸ™ˆIÜÓ8¬u°Q¬xÓ8Ó8‰Dä˜×0Ñ0°Ó3Ó4ˆDÜ�}‰}˜T 4Ó(¨Ñ+Ð+r   c                óv   — | j                  «       }|r'| j                  «       }|r| j                  «       }|ryyyy)Nrl   é   rP   r   )ru   )r)   Úbits     r   Úread_3_bitszBitStream.read_3_bitsù   s8   € Ø�m‰m‹oˆÙØ—-‘-“/ˆCÙØ—m‘m“o�ÙØàØàr   c                 ó   — y r-   r    r/   s    r   Úread_bit_shortzBitStream.read_bit_short  ó   € àr   c                 ó   — y r-   r    rp   s     r   r¥   zBitStream.read_bit_short  r¦   r   c                ób   ‡ ‡— ˆ fd„Š|dk(  r ‰«       S t        ˆfd„t        |«      D «       «      S )Nc                 óˆ   •— ‰j                  d«      } | dk(  r‰j                  «       S | dk(  r‰j                  «       S | dk(  ryy©NrP   r   rH   é   )r|   r�   r€   ©Úbitsr)   s    €r   Ú_readz'BitStream.read_bit_short.<locals>._read  sJ   ø€ Ø—>‘> !Ó$ˆDØ�qŠyØ×-Ñ-Ó/Ð/Ø˜’Ø×.Ñ.Ó0Ð0Ø˜’Øàr   rH   c              3  ó,   •K  — | ]  } ‰«       –— Œ y ­wr-   r    ©r›   rœ   r®   s     €r   r�   z+BitStream.read_bit_short.<locals>.<genexpr>  ó   øè ø€ Ð7©, Q™Ÿ©,ùó   ƒ©ÚtuplerK   ©r)   rm   r®   s   ` @r   r¥   zBitStream.read_bit_short  ó-   ù€ ô		ð �AŠ:Ù“7ˆNäÓ7¬%°¬,Ó7Ó7Ð7r   c                 ó   — y r-   r    r/   s    r   Úread_bit_longzBitStream.read_bit_long   r¦   r   c                 ó   — y r-   r    rp   s     r   r¸   zBitStream.read_bit_long$  r¦   r   c                ób   ‡ ‡— ˆ fd„Š|dk(  r ‰«       S t        ˆfd„t        |«      D «       «      S )Nc                 óˆ   •— ‰j                  d«      } | dk(  r‰j                  «       S | dk(  r‰j                  «       S | dk(  ryyrª   )r|   rD   r€   r¬   s    €r   r®   z&BitStream.read_bit_long.<locals>._read)  sJ   ø€ Ø—>‘> !Ó$ˆDØ�qŠyØ×,Ñ,Ó.Ð.Ø˜’Ø×.Ñ.Ó0Ð0Ø˜’Øàr   rH   c              3  ó,   •K  — | ]  } ‰«       –— Œ y ­wr-   r    r°   s     €r   r�   z*BitStream.read_bit_long.<locals>.<genexpr>7  r±   r²   r³   rµ   s   ` @r   r¸   zBitStream.read_bit_long(  r¶   r   c                ó†   — d}d}| j                  d«      }|dkD  r&|| j                  «       |z  z  }|dz  }|dz  }|dkD  rŒ&|S )Nr   rj   rH   r~   )r|   r€   )r)   rz   ÚshiftingÚlengths       r   Úread_bit_long_longzBitStream.read_bit_long_long?  s[   € ØˆØˆØ—‘ Ó"ˆØ�qŠjØ�T×,Ñ,Ó.°(Ñ:Ñ:ˆEØ�a‰KˆFØ˜‰MˆHð �q‹jð ˆr   c                 ó   — y r-   r    r/   s    r   Úread_raw_doublezBitStream.read_raw_doubleI  r¦   r   c                 ó   — y r-   r    rp   s     r   rÂ   zBitStream.read_raw_doubleM  r¦   r   c                óh   ‡ — |dk(  r‰ j                  «       S t        ˆ fd„t        |«      D «       «      S )NrH   c              3  ó>   •K  — | ]  }‰j                  «       –— Œ y ­wr-   )r?   ©r›   rœ   r)   s     €r   r�   z,BitStream.read_raw_double.<locals>.<genexpr>U  s   øè ø€ ÐA±L¨q˜Ÿ™×*±Lùó   ƒ)r?   r´   rK   rp   s   ` r   rÂ   zBitStream.read_raw_doubleQ  s,   ø€ Ø�AŠ:Ø—?‘?Ó$Ð$äÓA´E¸%´LÓAÓAÐAr   c                 ó   — y r-   r    r/   s    r   Úread_bit_doublezBitStream.read_bit_doubleW  r¦   r   c                 ó   — y r-   r    rp   s     r   rÉ   zBitStream.read_bit_double[  r¦   r   c                ób   ‡ ‡— ˆ fd„Š|dk(  r ‰«       S t        ˆfd„t        |«      D «       «      S )Nc                 ój   •— ‰j                  d«      } | dk(  r‰j                  «       S | dk(  ry| dk(  ryy)NrP   r   rH   ç      ð?ç        )r|   r?   r¬   s    €r   r®   z(BitStream.read_bit_double.<locals>._read`  s<   ø€ Ø—>‘> !Ó$ˆDØ�qŠyØ—‘Ó(Ð(Ø˜’ØØ˜’Øàr   rH   c              3  ó,   •K  — | ]  } ‰«       –— Œ y ­wr-   r    r°   s     €r   r�   z,BitStream.read_bit_double.<locals>.<genexpr>n  r±   r²   r³   rµ   s   ` @r   rÉ   zBitStream.read_bit_double_  r¶   r   c                 ó   — y r-   r    r/   s    r   Úread_bit_double_defaultz!BitStream.read_bit_double_defaultp  r¦   r   c                 ó   — y r-   r    rp   s     r   rÑ   z!BitStream.read_bit_double_defaultt  r¦   r   c                 ó   — y r-   r    )r)   rm   Údefaults      r   rÑ   z!BitStream.read_bit_double_defaultx  s   € ð 	r   c                ó–   ‡ ‡‡‡— t        j                  d‰«      Šˆˆˆ fd„Š|dk(  r ‰«       S t        ˆfd„t        |«      D «       «      S )Nr=   c                 ó  •— ‰j                  d«      } | dk(  r‰S | dk(  r<t        ˆfd„t        d«      D «       «      ‰dd  z   }t        j                  d|«      d   S | dk(  r–t        ‰«      }‰j                  «       |d<   ‰j                  «       |d<   ‰j                  «       |d<   ‰j                  «       |d<   ‰j                  «       |d<   ‰j                  «       |d<   t        j                  d|«      d   S ‰j                  «       S )	NrP   r   rH   c              3  ó>   •K  — | ]  }‰j                  «       –— Œ y ­wr-   ©r€   rÆ   s     €r   r�   zCBitStream.read_bit_double_default.<locals>._read.<locals>.<genexpr>‰  s   øè ø€ ÐF¹X¸˜$×1Ñ1×3¹XùrÇ   rT   r=   é   rj   )r|   rž   rK   r6   rŸ   Ú	bytearrayr€   r?   )r­   Ú_datar   rÔ   r)   s     €€€r   r®   z0BitStream.read_bit_double_default.<locals>._readƒ  s   ø€ Ø—>‘> !Ó$ˆDØ�qŠyØ�Ø˜’äÓF¼UÀ1¼XÓFÓFØ˜1˜2�hñð ô —}‘} T¨5Ó1°!Ñ4Ð4Ø˜’Ü! $›�Ø×2Ñ2Ó4��a‘Ø×2Ñ2Ó4��a‘Ø×2Ñ2Ó4��a‘Ø×2Ñ2Ó4��a‘Ø×2Ñ2Ó4��a‘Ø×2Ñ2Ó4��a‘Ü—}‘} T¨5Ó1°!Ñ4Ð4à—‘Ó(Ð(r   rH   c              3  ó,   •K  — | ]  } ‰«       –— Œ y ­wr-   r    r°   s     €r   r�   z4BitStream.read_bit_double_default.<locals>.<genexpr>œ  r±   r²   )r6   Úpackr´   rK   )r)   rm   rÔ   r®   r   s   ` `@@r   rÑ   z!BitStream.read_bit_double_default~  s?   û€ ô �{‰{˜4 Ó)ˆö	)ð, �AŠ:Ù“7ˆNäÓ7¬%°¬,Ó7Ó7Ð7r   c                ó„   — d}d}	 | j                  «       }|dz  r||dz  |z  z  }|dz  }n||dz  |z  z  }|dz  r| S |S Œ<)a  Modular characters are a method of storing compressed integer
        values. They consist of a stream of bytes, terminating when the high
        bit (8) of the byte is 0 else another byte follows. Negative numbers
        are indicated by bit 7 set in the last byte.

        r   rs   é   rl   é?   é@   rØ   ©r)   r¾   rz   Úchars       r   Úread_signed_modular_charsz#BitStream.read_signed_modular_charsž  so   € ð ˆØˆØØ×*Ñ*Ó,ˆDØ�dŠ{à˜$ ™+¨(Ñ2Ñ2�Ø˜A‘‘ð ˜$ ™+¨(Ñ2Ñ2�Ø!%¨¢˜�vÐ7°%Ð7ð r   c                ó\   — d}d}	 | j                  «       }||dz  |z  z  }|dz  }|dz  s|S Œ()zÐModular characters are a method of storing compressed integer
        values. They consist of a stream of bytes, terminating when the high
        bit (8) of the byte is 0 else another byte follows.

        r   rß   rl   rs   rØ   râ   s       r   Úread_unsigned_modular_charsz%BitStream.read_unsigned_modular_chars³  sL   € ð ˆØˆØØ×*Ñ*Ó,ˆDØ�d˜T‘k hÑ.Ñ.ˆEØ˜‰MˆHà˜4’KØ�ð r   c                ób   — | j                  «       }|dz  r| j                  «       dz  |dz  z  S |S )z×Modular shorts are a method of storing compressed unsigned integer
        values. Only 1 or 2 shorts in practical usage (1GB), if the high
        bit (16) of the first short is set another short follows.

        r�   é   iÿ  rŽ   )r)   Úshorts     r   Úread_modular_shortszBitStream.read_modular_shortsÃ  s;   € ð ×(Ñ(Ó*ˆØ�6Š>Ø×,Ñ,Ó.°"Ñ4¸À¹ÑHÐHàˆLr   c                óF   — | j                  «       ry| j                  d«      S )N)rÎ   rÎ   rÍ   rj   ©ru   rÉ   r/   s    r   Úread_bit_extrusionzBitStream.read_bit_extrusionÏ  s   € Ø�=‰=Œ?Ø à×'Ñ'¨Ó*Ð*r   c                óN   — |dk\  r| j                  «       ry| j                  «       S )NÚAC1015rÎ   rì   )r)   rh   s     r   Úread_bit_thicknesszBitStream.read_bit_thicknessÕ  s%   € Ø˜Ò!Ø�}‰}ŒØØ×#Ñ#Ó%Ð%r   c                ó"   — | j                  «       S r-   )r¥   r/   s    r   Úread_cm_colorzBitStream.read_cm_colorÛ  s   € Ø×"Ñ"Ó$Ð$r   c                ó–   ‡ — ‰ j                  «       }t        ˆ fd„t        |«      D «       «      }|j                  ‰ j                  ¬«      S )Nc              3  ó>   •K  — | ]  }‰j                  «       –— Œ y ­wr-   rØ   rÆ   s     €r   r�   z&BitStream.read_text.<locals>.<genexpr>à  s   øè ø€ ÐF¹°1�T×,Ñ,×.¹ùrÇ   rI   )r¥   rž   rK   r   rJ   ©r)   r¿   r   s   `  r   Ú	read_textzBitStream.read_textÞ  s:   ø€ Ø×$Ñ$Ó&ˆÜÓF¼¸f¼ÓFÓFˆØ�{‰{ D§M¡Mˆ{Ó2Ð2r   c                óˆ   ‡ — ‰ j                  «       }t        ˆ fd„t        |dz  «      D «       «      }|j                  d¬«      S )Nc              3  ó>   •K  — | ]  }‰j                  «       –— Œ y ­wr-   rØ   rÆ   s     €r   r�   z.BitStream.read_text_unicode.<locals>.<genexpr>ç  s   øè ø€ ÐJÑ8I°1�T×,Ñ,×.Ñ8IùrÇ   rP   Úutf16rI   )r¥   rž   rK   r   rõ   s   `  r   Úread_text_unicodezBitStream.read_text_unicodeã  s=   ø€ ð ×$Ñ$Ó&ˆÜÓJ¼¸fÀq¹jÔ8IÓJÓJˆØ�{‰{ Gˆ{Ó,Ð,r   c                ó`   — | j                   dk  r| j                  «       S | j                  «       S )NÚAC1018)rh   rö   rú   r/   s    r   Úread_text_variablezBitStream.read_text_variableê  s*   € Ø�?‰?˜XÒ%Ø—>‘>Ó#Ð#à×)Ñ)Ó+Ð+r   c                óÈ   — | j                  «       }d}d}| j                  «       }| j                  «       }|dz  r| j                  «       }|dz  r| j                  «       }|||fS )z+Returns tuple (rgb, color_name, book_name).Ú rH   rP   )r¥   r¸   r€   rý   )r)   rœ   Ú
color_nameÚ	book_nameÚrgbÚrcs         r   Úread_cm_color_cmszBitStream.read_cm_color_cmsð  sm   € à×ÑÓ!ˆØˆ
Øˆ	Ø× Ñ Ó"ˆØ×$Ñ$Ó&ˆØ�Š6Ø×0Ñ0Ó2ˆJØ�Š6Ø×/Ñ/Ó1ˆIØ�J 	Ð)Ð)r   c                óò   — | j                  «       }|dz	  }|dz  }|rZd}d}d}d}|dz  r| j                  «       dz  }|dz  r| j                  «       }|dz  r| j                  «       }|dz	  }|dz  }||||fS |S )	zjReturns color index as int or tuple (rgb, color_handle,
        transparency_type, transparency).
        r~   r‚   Nrs   iÿÿÿ rá   é    r‘   )r¥   Úread_handler¸   )	r)   Úflags_and_indexÚflagsr'   r  Úcolor_handleÚtransparency_typeÚtransparencyr   s	            r   Úread_cm_color_enczBitStream.read_cm_color_encý  sª   € ð ×-Ñ-Ó/ˆØ 1Ñ$ˆØ $Ñ&ˆÙØˆCØˆLØ $ÐØˆLØ�tŠ|Ø×)Ñ)Ó+¨jÑ8�Ø�tŠ|Ø#×/Ñ/Ó1�Ø�tŠ|Ø×)Ñ)Ó+�Ø$(¨B¡JÐ!Ø# d™{�Ø˜Ð&7¸ÐEÐEàˆLr   c                óž   — | j                  d«      }|dk(  r| j                  «       S |dk(  r| j                  «       dz   S | j                  «       S )NrP   r   rH   ið  )r|   r€   r‹   )r)   r­   s     r   Úread_object_typezBitStream.read_object_type  sP   € Ø�~‰~˜aÓ ˆØ�1Š9Ø×*Ñ*Ó,Ð,Ø�QŠYØ×*Ñ*Ó,¨uÑ4Ð4à×+Ñ+Ó-Ð-r   c                ó4  — | j                  d«      }| j                  d«      }|dk(  r|dz   S |dk(  r|dz
  S t        d«      }t        |«      D ]  }| j                  «       ||<   Œ t	        j
                  d|«      d   }|dk  r|S |dk(  r||z   S |d	k(  r||z
  S y)
z Returns handle as integer value.rT   r¡   rH   r~   s           z<Qr   é
   é   )r|   rÚ   rK   r€   r6   rŸ   )r)   Ú	referenceÚcoder¿   r   r'   r5   s          r   r  zBitStream.read_handle  s³   € à�~‰~˜aÓ ˆØ—‘ Ó"ˆØ�1Š9Ø˜q‘=Ð Ø�1Š9Ø˜q‘=Ð äÐ<Ó=ˆÜ˜6–]ˆEØ×1Ñ1Ó3ˆD�ŠKð #ä—‘˜t TÓ*¨1Ñ-ˆà�!Š8ØˆMà�rŠzØ  6Ñ)Ð)Ø�rŠzØ  6Ñ)Ð)Ør   c                ó*   — d| j                  |«      z  S )zReturns handle as hex string.z%X)r  )r)   r  s     r   Úread_hex_handlezBitStream.read_hex_handle5  s   € à�d×&Ñ& yÓ1Ñ1Ð1r   c                óÄ  — |dk(  r| j                  «       S |dk(  r| j                  «       S |dk(  r| j                  «       S |dk(  r| j                  «       S |dk(  r| j	                  «       S |dk(  r| j                  «       S |dk(  r| j                  «       S |dk(  r| j                  d	«      S |d
k(  r| j                  «       S |dk(  r| j                  d	«      S |dk(  r| j                  d«      S |dk(  r| j                  «       S |dk(  r| j                  «       S |dk(  r| j                  «       S |dk(  r| j                  «       S |dk(  r| j                  «       S t        d|› �«      ‚)zWRead data from bit stream by data codes defined in the
        ODA reference.

        r   ÚRCÚRSÚBSÚRLÚBLÚRDÚ2RDrP   ÚBDÚ2BDÚ3BDrj   ÚTÚTVÚHÚBLLÚCMCzUnknown code: )ru   r€   r�   r¥   rD   r¸   rÂ   rÉ   rö   rý   r  rÀ   rò   Ú
ValueError)r)   r  s     r   Ú	read_codezBitStream.read_code9  sw  € ð
 �3Š;Ø—=‘=“?Ð"Ø�TŠ\Ø×*Ñ*Ó,Ð,Ø�TŠ\Ø×)Ñ)Ó+Ð+Ø�TŠ\Ø×&Ñ&Ó(Ð(Ø�TŠ\Ø×(Ñ(Ó*Ð*Ø�TŠ\Ø×%Ñ%Ó'Ð'Ø�TŠ\Ø×'Ñ'Ó)Ð)Ø�UŠ]Ø×'Ñ'¨Ó*Ð*Ø�TŠ\Ø×'Ñ'Ó)Ð)Ø�UŠ]Ø×'Ñ'¨Ó*Ð*Ø�UŠ]Ø×'Ñ'¨Ó*Ð*Ø�SŠ[Ø—>‘>Ó#Ð#Ø�TŠ\Ø×*Ñ*Ó,Ð,Ø�SŠ[Ø×'Ñ'Ó)Ð)Ø�UŠ]Ø×*Ñ*Ó,Ð,Ø�UŠ]Ø×%Ñ%Ó'Ð'Ü˜>¨$¨Ð0Ó1Ð1r   N)rï   Úcp1252)r&   rU   rh   rZ   rJ   rZ   rW   )rm   rV   rX   ÚNoner]   )rm   rV   rX   zSequence[int]r[   )rH   )rm   rV   rX   zUnion[int, Sequence[int]])rm   rV   rX   r_   )rm   rV   rX   úUnion[float, Sequence[float]])rm   rV   rÔ   r\   rX   r_   )rH   rÎ   )rm   rV   rÔ   r\   rX   r+  r^   )rï   ra   )rX   ztuple[int, str, str])rX   z#Union[int, Sequence[Optional[int]]])r   )r  rV   rX   rV   )r  rV   rX   rZ   )r  rZ   )*r   r   r   rb   r+   rc   r0   r*   rq   ru   r|   r€   r„   r†   r‹   r�   r—   rD   r?   r£   r   r¥   r¸   rÀ   rÂ   rÉ   rÑ   rä   ræ   rê   rí   rð   rò   rö   rú   rý   r  r  r  r  r  r(  r    r   r   re   re   o   s  „ ÙDð #Ø ð		!àð	!ð ð	!ð ó		!ð ò6ó ð6ó)ó ó@óó8!óó@óóó
8óó,óð òó ðð òó ðô8ð" òó ðð òó ðô8ó.ð òó ðð òó ðôBð òó ðð òó ðô8ð" òó ðð òó ðð ðØðØ#(ðà	òó ðð 03ð8Øð8Ø',ð8à	&ó8ó@8ó*ó 
ó+ô&ó%ó3ó
-ó,ó*óó0.ôô.2ô%2r   re   )r   zIterable[str]rX   rž   )r   rž   rX   rZ   )Ú
__future__r   Útypingr   r   r   r   r   r	   r
   r6   Úbinasciir   r   Úcodecsr   rž   rÚ   r%   rU   r   r   rR   ÚEOFErrorr   r"   re   r    r   r   Ú<module>r1     sc   ðõ #ß E× EÝ Û ß 'Ý àˆe�Y 
Ð*Ñ+€ó ó*ð
 €	ô	�xô 	÷K
ñ K
÷\o2ò o2r   