ó
    EñiŸ!  ã                  óæ  • S SK Jr  S SKrS SKJr  SSKJrJr  SSKJ	r
  SSKJr  SSKJr  SS	 jr " S
 S\R                  5      r " S S\R                   5      rSS jr " S S\R&                  5      r\R*                  " \R,                  \\5        \R.                  " S\5        \R0                  " \R,                  S5        \R2                  " \R,                  \5        \R4                  " S\5        g)é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFile)Úi32be)Úo8)Úo32bec                ó$   • U R                  S5      $ )Nó   qoif)Ú
startswith)Úprefixs    ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/PIL/QoiImagePlugin.pyÚ_acceptr      s   € Ø×Ñ˜WÓ%Ð%ó    c                  ó&   • \ rS rSrSrSrSS jrSrg)ÚQoiImageFileé   ÚQOIzQuite OK Imagec                ó\  • U R                   c   e[        U R                   R                  S5      5      (       d  Sn[        U5      e[	        U R                   R                  S5      5      [	        U R                   R                  S5      5      4U l        U R                   R                  S5      S   nUS:X  a  SOSU l        U R                   R                  S[        R                  5        [        R                  " SS	U R
                  -   U R                   R                  5       5      /U l        g )
Né   znot a QOI filer   r   é   ÚRGBÚRGBAÚqoi©r   r   )Úfpr   ÚreadÚSyntaxErrorÚi32Ú_sizeÚ_modeÚseekÚosÚSEEK_CURr   Ú_TileÚtellÚtile)ÚselfÚmsgÚchannelss      r   Ú_openÚQoiImageFile._open   sÌ   € Ø�w‰wÑ"Ð"Ð"Ü�t—w‘w—|‘| A“×'Ñ'Ø"ˆCÜ˜cÓ"Ð"ä˜Ÿ™Ÿ™ a›Ó)¬3¨t¯w©w¯|©|¸A«Ó+?Ð?ˆŒ
à—7‘7—<‘< “? 1Ñ%ˆØ&¨!›m‘U°ˆŒ
à�‰�‰�QœŸ™Ô$Ü—_’_ U¨F°T·Z±ZÑ,?ÀÇÁÇÁÃÓPÐQˆ�	r   )r"   r!   r(   N)ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚformatÚformat_descriptionr,   Ú__static_attributes__© r   r   r   r      s   † Ø€FØ)Ð÷Rr   r   c                  óJ   • \ rS rSr% SrSrS\S'   0 rS\S'   SS jrSS	 jr	S
r
g)Ú
QoiDecoderé*   TNzbytes | bytearray | NoneÚ_previous_pixelzdict[int, bytes | bytearray]Ú_previously_seen_pixelsc                ój   • Xl         Uu  p#pEUS-  US-  -   US-  -   US-  -   S-  nXR                  U'   g )Nr   é   é   é   é@   ©r;   r<   )r)   ÚvalueÚrÚgÚbÚaÚ
hash_values          r   Ú_add_to_previous_pixelsÚ"QoiDecoder._add_to_previous_pixels/   sG   € Ø$Ôà‰
ˆˆaØ˜!‘e˜a !™e‘m a¨!¡eÑ+¨a°"©fÑ4¸Ñ:ˆ
Ø38×$Ñ$ ZÒ0r   c           
     óÞ  ^ ^• T R                   c   e0 T l        [        S5      T l        [        5       n[        R
                  " T R                  5      nT R                  R                  T R                  R                  -  U-  n[        U5      U:  GaJ  T R                   R                  S5      S   nUS:X  aG  T R                  (       a6  [        T R                   R                  S5      5      T R                  SS  -   nGO­US:X  a  T R                   R                  S5      nGOŠUS-	  nUS:X  a,  US	-  nT R                  R                  U[        S
5      5      nGOSUS:X  a  T R                  (       an  [        T R                  S   US-  S-	  -   S-
  S-  T R                  S   US-  S-	  -   S-
  S-  T R                  S   US-  -   S-
  S-  T R                  S   45      nOÎUS:X  aˆ  T R                  (       aw  T R                   R                  S5      S   n	US	-  S-
  mU	S-  S-	  S-
  n
U	S-  S-
  n[        [        UU 4S j[        U
SU45       5       5      5      nUT R                  SS  -  nO@US:X  a:  T R                  (       a)  US	-  S-   nT R                  nUS:X  a  US S nX&U-  -  nGM(  T R                  W5        US:X  a  US S nX&-  n[        U5      U:  a  GMJ  T R!                  U5        g)N©r   r   r   éÿ   r   r   éþ   r   rM   r   é   é?   ©r   r   r   r   é0   é   é   é   é    éð   é   é   c              3  óX   >#   • U  H  u  pTR                   U   T-   U-   S -  v •  M!     g7f)rT   N)r;   )Ú.0ÚiÚdiffÚ
diff_greenr)   s      €€r   Ú	<genexpr>Ú$QoiDecoder.decode.<locals>.<genexpr>_   s4   øé € ð â+N¡ ð "×1Ñ1°!Ñ4°zÑAÀDÑHÈCÖOÚ+Nùs   ƒ'*)éÿÿÿÿr   )Úfdr<   Ú	bytearrayr;   r   ÚgetmodebandsÚmodeÚstateÚxsizeÚysizeÚlenr   ÚgetÚtupleÚ	enumeraterI   Ú
set_as_raw)r)   ÚbufferÚdataÚbandsÚdest_lengthÚbyterC   ÚopÚop_indexÚsecond_byteÚdiff_redÚ	diff_blueÚ
run_lengthr^   s   `            @r   ÚdecodeÚQoiDecoder.decode6   sê  ù€ Ø�w‰wÑ"Ð"Ð"à')ˆÔ$Ü(¨Ó8ˆÔä‹{ˆÜ×"Ò" 4§9¡9Ó-ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9¸EÑAˆÜ�$‹i˜+Ô%Ø—7‘7—<‘< “? 1Ñ%ˆDà�zÓ! d×&:×&:Ü! $§'¡'§,¡,¨q£/Ó2°T×5IÑ5IÈ!È"Ð5MÑM’Ø˜Ó#ØŸ™Ÿ™ Q›’à˜Q‘Y�Ø˜“7Ø# jÑ0�HØ ×8Ñ8×<Ñ<Ø ¤)¨LÓ"9ó’Eð ˜1“W ×!5×!5Ü%à!×1Ñ1°!Ñ4¸À
Ñ9JÈqÑ8PÑQÐTUÑUØ!ñ"à!×1Ñ1°!Ñ4¸À
Ñ9JÈqÑ8PÑQÐTUÑUØ!ñ"à!×1Ñ1°!Ñ4¸¸zÑ8IÑJÈQÑNÐRUÑUØ ×0Ñ0°Ñ3ðó	‘Eð ˜1“W ×!5×!5Ø"&§'¡'§,¡,¨q£/°!Ñ"4�KØ"&¨Ñ"3°rÑ!9�JØ!,¨zÑ!9¸aÑ ?À1ÑD�HØ!,¨zÑ!9¸QÑ >�Iä%Üõ ä+4°hÀÀ9Ð5MÔ+Nóó ó�Eð ˜T×1Ñ1°!°"Ð5Ñ5‘EØ˜1“W ×!5×!5Ø"&¨Ñ"3°qÑ!8�JØ ×0Ñ0�EØ “zØ % b q 	˜Ø JÑ.Ñ.�DÚØ×(Ñ(¨Ô/à˜‹zØ˜b˜q˜	�Ø‰MˆDôc �$‹i˜+Ö%ðd 	�‰˜ÔØr   rB   )rC   zbytes | bytearrayr.   r/   )rn   z$bytes | Image.SupportsArrayInterfacer.   ztuple[int, int])r0   r1   r2   r3   Ú	_pulls_fdr;   Ú__annotations__r<   rI   ry   r6   r7   r   r   r9   r9   *   s(   ‡ Ø€IØ04€OÐ-Ó4Ø<>ÐÐ9Ó>ô9÷<r   r9   c           	     óJ  • U R                   S:X  a  SnO U R                   S:X  a  SnOSn[        U5      eU R                  R                  S5      S:X  a  SOS	nUR	                  S
5        UR	                  [        U R                  S   5      5        UR	                  [        U R                  S	   5      5        UR	                  [        U5      5        UR	                  [        U5      5        [        R                  " X[        R                  " SSU R                  -   5      /5        g )Nr   r   r   r   zUnsupported QOI image modeÚ
colorspaceÚsRGBr   r   r   r   r   )re   Ú
ValueErrorÚencoderinforj   ÚwriteÚo32Úsizer	   r   Ú_saver&   )Úimr   Úfilenamer+   r*   r~   s         r   r…   r…   u   sÑ   € Ø	‡w�w�%ÓØ‰Ø	�‰�FÓ	Ø‰à*ˆÜ˜‹oÐà—n‘n×(Ñ(¨Ó6¸&Ó@‘Àa€Jà‡H�HˆWÔØ‡H�HŒS�—‘˜‘‹_ÔØ‡H�HŒS�—‘˜‘‹_ÔØ‡H�HŒR�‹\ÔØ‡H�HŒR�
‹^Ôä‡O‚O�BœYŸ_š_¨U°F¸R¿W¹WÑ4DÓEÐFÕGr   c                  óX   • \ rS rSr% SrSrS\S'   0 rS\S'   SrSS	 jr	SS
 jr
SS jrSrg)Ú
QoiEncoderé‰   TNz tuple[int, int, int, int] | Noner;   z$dict[int, tuple[int, int, int, int]]r<   r   c                óJ   • [        SU R                  S-
  -  5      nSU l        U$ )NéÀ   r   r   )r	   Ú_run)r)   ro   s     r   Ú
_write_runÚQoiEncoder._write_run�   s%   € Ü�* §	¡	¨A¡Ñ.Ó/ˆØˆŒ	Øˆr   c                ó*   • X-
  S-  nUS:¼  a  US-  nU$ )NrM   é€   rT   r7   )r)   ÚleftÚrightÚresults       r   Ú_deltaÚQoiEncoder._delta”   s#   € Ø‘, #Ñ%ˆØ�S‹=Ø�c‰MˆFØˆr   c                ód  • U R                   c   eSS0U l        SU l        [        5       nU R                   R                  u  p4[
        R                  " U R                  5      n[        U5       GH�  n[        U5       GHm  nU R                   R                  Xv45      nUS:X  a  / UQSP7nX€R                  :X  a9  U =R                  S-  sl
        U R                  S:X  a  X R                  5       -  nGOòU R                  (       a  X R                  5       -  nUu  pšp¼U	S-  U
S-  -   US	-  -   US
-  -   S-  nU R                  R                  U5      U:X  a  U[        U5      -  nGO�U R                  (       Gao  X€R                  U'   U R                  u  pïnnUU:X  Ga.  U R                  Xž5      nU R                  X¯5      nU R                  UU5      nSUs=::  a  S:  aJ  O  OGSUs=::  a  S:  a:  O  O7SUs=::  a  S:  a*  O  O'U[        SUS-   S-  -  US-   S-  -  US-   -  5      -  nO¿U R                  UU5      nU R                  UU5      nSUs=::  a  S:  aR  O  OOSUs=::  a  S:  aB  O  O?SUs=::  a  S:  a2  O  O/U[        SUS-   -  5      -  nU[        US-   S-  US-   -  5      -  nO<U[        S5      -  nU[        US S 5      -  nOU[        S5      -  nU[        U5      -  nX€l        GMp     GM„     U R                  (       a  X R                  5       -  nU[        S5      -  n[!        U5      SU4$ )Nr   rQ   rL   r   rM   r   é>   r>   r?   r@   rA   éþÿÿÿrS   r   iøÿÿÿrX   iàÿÿÿrV   r‘   rN   )r   r   r   r   r   r   r   r   )r†   r<   r;   rc   r„   r   rd   re   ÚrangeÚgetpixelr�   rŽ   rj   r	   r•   Úbytesri   )r)   Úbufsizero   ÚwÚhrp   ÚyÚxÚpixelrD   rE   rF   rG   rH   Úprev_rÚprev_gÚprev_bÚprev_aÚdelta_rÚdelta_gÚdelta_bÚdelta_grÚdelta_gbs                          r   ÚencodeÚQoiEncoder.encodeš   s  € Ø�w‰wÑ"Ð"Ð"à()¨<Ð'8ˆÔ$Ø-ˆÔä‹{ˆØ�w‰w�|‰|‰ˆÜ×"Ò" 4§9¡9Ó-ˆä�q—ˆAÜ˜1—X�ØŸ™×(Ñ(¨!¨Ó0�Ø˜A“:Ø)˜e˜M S™M�Eà×0Ñ0Ó0Ø—I’I ‘N•IØ—y‘y B“Ø§¡Ó 1Ñ1˜ùà—y—yØ§¡Ó 1Ñ1˜à!&‘J�A˜!Ø"# a¡%¨!¨a©%¡-°!°a±%Ñ"7¸!¸b¹&Ñ"@ÀBÑ!F�JØ×3Ñ3×7Ñ7¸
ÓCÀuÓLØ¤ :£Ñ.šØ×-×-Ð-ØCH×4Ñ4°ZÑ@à9=×9MÑ9MÑ6˜¨°Ø! Qœ;Ø&*§k¡k°!Ó&<˜GØ&*§k¡k°!Ó&<˜GØ&*§k¡k°!°VÓ&<˜Gð !# gÕ 1°Ö 1Ø$&¨'Õ$5°AÖ$5Ø$&¨'Õ$5°AÖ$5à $¬Ø$.Ø'.°¡{°qÑ&8ñ%9à'.°¡{°qÑ&8ñ%9ð (/°¡{ñ%4ó)"ñ !"¡ð ,0¯;©;°wÀÓ+H Ø+/¯;©;°wÀÓ+H à$&¨(Õ$6°QÖ$6Ø(+¨wÕ(;¸Ö(;Ø(*¨hÕ(:¸Ö(:à$(¬BØ(2°gÀ±lÑ(Có-&ñ %& Dð %)¬B°¸1±ÀÑ/BÀhÐQRÁlÑ/SÓ,TÑ$T¡Dà$(¬B¨z«NÑ$: DØ$(¬E°%¸¸°)Ó,<Ñ$<¡Dà ¤B z£NÑ2˜DØ ¤E¨%£LÑ0˜Dà',×$ôq ñ ðv �9�9Ø—O‘OÓ%Ñ%ˆDØ”Ð.Ó/Ñ/ˆä�4‹y˜!˜TÐ!Ð!r   )r;   r<   r�   )r.   rœ   )r’   Úintr“   r®   r.   r®   )r�   r®   r.   ztuple[int, int, bytes])r0   r1   r2   r3   Ú
_pushes_fdr;   r|   r<   r�   rŽ   r•   r¬   r6   r7   r   r   r‰   r‰   ‰   s3   ‡ Ø€JØ8<€OÐ5Ó<ØDFÐÐAÓFØ€Dôô
÷I"r   r‰   r   z.qoi)r   rœ   r.   Úbool)r†   zImage.Imager   z	IO[bytes]r‡   zstr | bytesr.   r/   )Ú
__future__r   r$   Útypingr   Ú r   r   Ú_binaryr   r    r	   r
   rƒ   r   r   Ú	PyDecoderr9   r…   Ú	PyEncoderr‰   Úregister_openr4   Úregister_decoderÚregister_extensionÚregister_saveÚregister_encoderr7   r   r   Ú<module>r¼      sË   ðõ #ã 	Ý ç Ý !Ý Ý !ô&ôR�9×&Ñ&ô Rô&H�×$Ñ$ô HôVHô(Z"�×$Ñ$ô Z"ðz × Ò �L×'Ñ'¨°wÔ ?Ø × Ò �u˜jÔ )Ø × Ò ˜×,Ñ,¨fÔ 5à × Ò �L×'Ñ'¨Ô /Ø × Ò �u˜jÕ )r   