ó
    Eñi‰�  ã                  óh  • % S SK Jr  S SKrS SKrS SKJr  S SKJr  SSKJ	r	J
r
Jr  Sr\(       a$  S SKJr  S S	KJr  S S
KJrJr  SSKJrJr  SSKJrJr  \	R.                  R0                  rS\S'     " S S5      rSSS jjrSSS jjr  S           SS jjr        SS jr      SS jr g)é    )ÚannotationsN)ÚSequence)Úcasté   )ÚImageÚ
ImageColorÚ	ImageTextF)ÚCallable)Ú
ModuleType)ÚAnyÚAnyStr)Ú
ImageDraw2Ú	ImageFont)ÚCoordsÚ_Inkz!Callable[[], Image.core._Outline]ÚOutlinec                  ó   • \ rS rSr% SrS\S'   SSS jjr  S S jr    S!S jr S     S"S jjr	  S#           S$S	 jjr
 S       S%S
 jjr   S&             S'S jjr   S&         S(S jjr   S&           S)S jjr   S*         S+S jjr  S,       S-S jjr   S&             S'S jjrSS.S jjr   S&         S(S jjr    S/             S0S jjr   S&         S(S jjr    S/SS.             S1S jjjr           S2                               S3S jjr           S2SS.                             S4S jjjr     S5SS.               S6S jjjr         S7SS.                         S8S jjjr         S7SS.                         S8S jjjrSrg)9Ú	ImageDrawé=   NúNImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont | NoneÚfontc                óL  • UR                  5         SnUc  UR                  nX!R                  :w  a&  US:X  a  UR                  S:X  a  SnOSn[        U5      eUS:X  a  UR                  U l        OSU l        Xl        UR
                  U l        [        R                  R                  U R
                  U5      U l        X l        US;   a!  U R                  R                  S5      U l
        O U R                  R                  S	5      U l
        US
;   a  SU l        OSU l        SU l        g)aX  
Create a drawing instance.

:param im: The image to draw in.
:param mode: Optional mode to use for color values.  For RGB
   images, this argument can be RGB or RGBA (to blend the
   drawing into the image).  For all other modes, this argument
   must be the same as the image mode.  If omitted, the mode
   defaults to the mode of the image.
r   NÚRGBAÚRGBr   zmode mismatchÚP)ÚIÚFéÿÿÿÿ)Ú1r   r   r   r   ÚLF)Ú_ensure_mutableÚmodeÚ
ValueErrorÚpaletteÚ_imageÚimr   ÚcoreÚdrawÚdraw_inkÚinkÚfontmodeÚfill)Úselfr&   r"   ÚblendÚmsgs        ÚJ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/PIL/ImageDraw.pyÚ__init__ÚImageDraw.__init__B   sì   € ð 	×ÑÔØˆØ‰<Ø—7‘7ˆDØ—7‘7‹?Ø�v‹~ "§'¡'¨UÓ"2Ø‘à%�Ü  “oÐ%Ø�3‹;ØŸ:™:ˆD�LàˆDŒLØŒØ—%‘%ˆŒÜ—J‘J—O‘O D§G¡G¨UÓ3ˆŒ	ØŒ	Ø�:ÓØ—y‘y×)Ñ)¨!Ó,ˆD�Hà—y‘y×)Ñ)¨"Ó-ˆDŒHØÐ'Ó'àˆD�MàˆDŒMØˆ�	ó    c                ót   • U R                   (       d  SSKJn  UR                  " 5       U l         U R                   $ )aí  
Get the current default font.

To set the default font for this ImageDraw instance::

    from PIL import ImageDraw, ImageFont
    draw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

To set the default font for all future ImageDraw instances::

    from PIL import ImageDraw, ImageFont
    ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

If the current default font is ``None``,
it is initialized with ``ImageFont.load_default()``.

:returns: An image font.r   ©r   )r   Ú r   Úload_default)r-   r   s     r0   ÚgetfontÚImageDraw.getfontj   s(   € ð( �y�yå#à!×.Ò.Ó0ˆDŒIØ�y‰yÐr3   c                óX   • Ub  SSK Jn  UR                  " U5      $ U R                  5       $ )Nr   r5   )r6   r   r7   r8   )r-   Ú	font_sizer   s      r0   Ú_getfontÚImageDraw._getfont…   s*   € ð Ñ Ý#à×)Ò)¨)Ó4Ð4à—<‘<“>Ð!r3   c                óô  • S nS nUc3  Uc0  U R                   (       a  U R                  nX44$ U R                  n X44$ Ub›  [        U[        5      (       a   [        R
                  " XR                  5      nU R                  (       a:  [        U[        5      (       a%  U R                  R                  XR                  5      nU R                  R                  U5      nUb›  [        U[        5      (       a   [        R
                  " X R                  5      nU R                  (       a:  [        U[        5      (       a%  U R                  R                  X R                  5      nU R                  R                  U5      nX44$ ©N)r,   r*   Ú
isinstanceÚstrr   Úgetcolorr"   r$   Útupler%   r(   r)   )r-   r*   r,   Ú
result_inkÚresult_fills        r0   Ú_getinkÚImageDraw._getink�   s  € ð ˆ
ØˆØ‰;˜4™<Ø�y�yØ"Ÿh™h�ð  Ð&Ð&ð "ŸX™X‘
ð Ð&Ð&ð ‰Ü˜c¤3×'Ñ'Ü$×-Ò-¨c·9±9Ó=�CØ—<—<¤J¨s´E×$:Ñ$:ØŸ,™,×/Ñ/°·[±[ÓA�CØ!ŸY™Y×/Ñ/°Ó4�
ØÑÜ˜d¤C×(Ñ(Ü%×.Ò.¨t·Y±YÓ?�DØ—<—<¤J¨t´U×$;Ñ$;ØŸ<™<×0Ñ0°·{±{ÓC�DØ"Ÿi™i×0Ñ0°Ó6�ØÐ&Ð&r3   c                ól   • U R                  U5      u  pdUb  U R                  R                  XX6U5        gg)zDraw an arc.N)rF   r(   Údraw_arc)r-   ÚxyÚstartÚendr,   Úwidthr*   s          r0   ÚarcÚImageDraw.arc¨   s4   € ð —L‘L Ó&‰	ˆØ‰?Ø�I‰I×Ñ˜r¨#°EÕ:ð r3   c                ó¨   • UR                  5         U R                  U5      u  pCUc  UnUb'  U R                  R                  XR                  U5        gg)zDraw a bitmap.N)ÚloadrF   r(   Údraw_bitmapr&   )r-   rJ   Úbitmapr,   r*   s        r0   rS   ÚImageDraw.bitmapµ   sI   € ð 	�‰ŒØ—L‘L Ó&‰	ˆØ‰;ØˆCØ‰?Ø�I‰I×!Ñ! "§i¡i°Õ5ð r3   c                óÈ   • U R                  XT5      u  pxUb  U R                  R                  XX8S5        Ub,  Xx:w  a&  US:w  a  U R                  R                  XX7SU5        gggg)zDraw a chord.Nr   r   )rF   r(   Ú
draw_chord©	r-   rJ   rK   rL   r,   ÚoutlinerM   r*   Úfill_inks	            r0   ÚchordÚImageDraw.chordÀ   s`   € ð Ÿ™ WÓ3‰ˆØÑØ�I‰I× Ñ  ¨C¸1Ô=Ø‰?˜s›°5¸A³:Ø�I‰I× Ñ  ¨C°a¸Õ?ð 4>˜ˆ?r3   c                óÄ   • U R                  X25      u  pVUb  U R                  R                  XS5        Ub+  XV:w  a%  US:w  a  U R                  R                  XSU5        gggg)zDraw an ellipse.Nr   r   )rF   r(   Údraw_ellipse©r-   rJ   r,   rX   rM   r*   rY   s          r0   ÚellipseÚImageDraw.ellipseÐ   s\   € ð Ÿ™ WÓ3‰ˆØÑØ�I‰I×"Ñ" 2°Ô3Ø‰?˜s›°5¸A³:Ø�I‰I×"Ñ" 2¨A¨uÕ5ð 4>˜ˆ?r3   c                ód   • US   U-
  US   U-
  US   U-   US   U-   4nU R                  XcXE5        g)z4Draw a circle given center coordinates and a radius.r   r   N)r_   )r-   rJ   Úradiusr,   rX   rM   Ú
ellipse_xys          r0   ÚcircleÚImageDraw.circleÞ   s@   € ð ˜‘e˜f‘n b¨¡e¨f¡n°b¸±e¸f±nÀbÈÁeÈfÁnÐUˆ
Ø�‰�Z wÕ6r3   c                ó.  ^• U R                  U5      S   nUGbq  U R                  R                  XT5        US:X  GaM  TS:”  GaE  [        US   [        [
        45      (       a  [        [        [        [              U5      nOI[        S[        U5      S5       Vs/ s H(  n[        [        [           [        XUS-    5      5      PM*     nn[        S[        U5      S-
  5       GH¡  nXg   nXgS-
     U4X†US-      44 V	V
s/ s HE  u  pš[        R                  " [        R                  " U
S   U	S   -
  U	S   U
S   -
  5      5      S-  PMG     nn	n
US   US   :X  a  Mz        SU4S jjnUS   US   :„  =(       a    US   S	-
  US   :„  =(       d     US   US   :  =(       a    US   S	-   US   :„  nUS   TS-  -
  S-   US   TS-  -
  S-   4US   TS-  -   S-
  US   TS-  -   S-
  4/nU(       a  US   S
-   US   S
-   p©OUS   S
-
  US   S
-
  p©U R                  XéS
-
  U
S
-
  U5        TS:”  d  GMO  U(       a  U" X‹S   S
-   5      UU" X‹S   S
-   5      /nOU" X‹S   S
-
  5      UU" X‹S   S
-
  5      /nU R                  XòSS9  GM¤     ggggs  snf s  sn
n	f )z6Draw a line, or a connected sequence of line segments.r   NÚcurveé   é   r   éh  c                óþ   >• U u  p#US-  nTS-  S-
  n[        S X$[        R                  " [        R                  " U5      5      -  4X4[        R                  " [        R                  " U5      5      -  44 5       5      $ )NéZ   ri   r   c              3  óŽ   #   • U  H;  u  pXS :”  a  [         R                  " U5      O[         R                  " U5      -   v •  M=     g7f)r   N)ÚmathÚfloorÚceil)Ú.0ÚpÚp_ds      r0   Ú	<genexpr>Ú9ImageDraw.line.<locals>.coord_at_angle.<locals>.<genexpr>  s8   é € ð %ò+¡ ð ¸!³G¤§¢¨C¤ÄÇÂÈ3ÃÖPò+ùs   ‚AA)rC   rn   ÚcosÚradiansÚsin)ÚcoordÚangleÚxÚyÚdistancerM   s        €r0   Úcoord_at_angleÚ&ImageDraw.line.<locals>.coord_at_angle  sz   ø€ ð  %™˜Ø ™˜Ø#(¨1¡9¨q¡=˜Ü$ñ %ð "#¬t¯xªx¼¿ºÀUÓ8KÓ/LÑ$LÐ MØ!"¬t¯xªx¼¿ºÀUÓ8KÓ/LÑ$LÐ Mñ+ó%ó  ð r3   é´   rl   é   é   )rM   )ry   úSequence[float]rz   ÚfloatÚreturnztuple[float, ...])rF   r(   Ú
draw_linesr@   ÚlistrC   r   r   r„   ÚrangeÚlenrn   ÚdegreesÚatan2ÚpiesliceÚline)r-   rJ   r,   rM   Újointr*   ÚpointsÚiÚpointrK   rL   Úanglesr~   ÚflippedÚcoordsÚ
gap_coordss      `            r0   r�   ÚImageDraw.lineê   s  ø€ ð �l‰l˜4Ó  Ñ#ˆØŠ?Ø�I‰I× Ñ  ¨%Ô0Ø˜Ô E¨A¤Iä˜b ™e¤d¬E ]×3Ñ3Ü!¤(¬8´E©?Ñ";¸RÓ@‘Fô "' q¬#¨b«'°1Ô!5óâ!5˜Aô œX¤e™_¬e°B¸1¸q¹5°MÓ.BÖCÙ!5ð ð ô ˜q¤# f£+°¡/×2�AØ"™I�Eð
 $¨¡E™]¨EÐ2Ø"¨1¨q©5¡MÐ2ñ+ôò+™J˜Eô Ÿš¤T§Z¢Z°°A±¸¸q¹Ñ0AÀ5ÈÁ8ÈcÐRSÉfÑCTÓ%UÓVØôñ+ð ñ ð ˜a‘y F¨1¡IÓ-á ðØ.ðØ7<ðà*÷ð ˜q™	 F¨1¡IÑ-×M°&¸±)¸c±/ÀFÈ1ÁIÑ2M÷Qà  ™) f¨Q¡iÑ/×O°F¸1±IÀ±OÀfÈQÁiÑ4Oð ð ˜q™ E¨A¡IÑ-°Ñ1°5¸±8¸eÀa¹iÑ3GÈ!Ñ3KÐLØ˜q™ E¨A¡IÑ-°Ñ1°5¸±8¸eÀa¹iÑ3GÈ!Ñ3KÐLð�Fö Ø&,¨Q¡i°"¡n°f¸Q±iÀ"±n™sà&,¨Q¡i°"¡n°f¸Q±iÀ"±n˜sØ—M‘M &°"©*°c¸B±hÀÔEà˜q–yæ"á .¨u¸Q±iÀ"±nÓ EØ %Ù .¨u¸Q±iÀ"±nÓ Eð*™Jñ !/¨u¸Q±iÀ"±nÓ EØ %Ù .¨u¸Q±iÀ"±nÓ Eð*˜Jð
 Ÿ	™	 *¸!˜	Ô<òo 3ð %.Ðð ùòùós   Â/JÃ?AJc                óÔ   • UR                  5         U R                  X25      u  pEUb  U R                  R                  XS5        Ub#  XE:w  a  U R                  R                  XS5        ggg)z(Experimental) Draw a shape.Nr   r   )ÚcloserF   r(   Údraw_outline)r-   Úshaper,   rX   r*   rY   s         r0   rš   ÚImageDraw.shape7  s[   € ð 	�‰ŒØŸ™ WÓ3‰ˆØÑØ�I‰I×"Ñ" 5°AÔ6Ø‰?˜s›Ø�I‰I×"Ñ" 5¨qÕ1ð  /ˆ?r3   c                óÈ   • U R                  XT5      u  pxUb  U R                  R                  XX8S5        Ub,  Xx:w  a&  US:w  a  U R                  R                  XX7SU5        gggg)zDraw a pieslice.Nr   r   )rF   r(   Údraw_pieslicerW   s	            r0   rŒ   ÚImageDraw.piesliceE  s`   € ð Ÿ™ WÓ3‰ˆØÑØ�I‰I×#Ñ# B¨s¸aÔ@Ø‰?˜s›°5¸A³:Ø�I‰I×#Ñ# B¨s¸¸EÕBð 4>˜ˆ?r3   c                óh   • U R                  U5      u  p2Ub  U R                  R                  X5        gg)z#Draw one or more individual pixels.N)rF   r(   Údraw_points)r-   rJ   r,   r*   s       r0   r‘   ÚImageDraw.pointU  s.   € à—L‘L Ó&‰	ˆØ‰?Ø�I‰I×!Ñ! "Õ*ð r3   c                ó  • U R                  X25      u  pVUb  U R                  R                  XS5        UbÔ  XV:w  aÎ  US:w  aÇ  US:X  a  U R                  R                  XSU5        gU R                  b•  [        R
                  " SU R                  R                  5      nU R                  S5      S   n[        U5      n	U	R                  R                  XS5        U R                  R                  XSUS-  S-
  UR                  5        ggggg)zDraw a polygon.Nr   r   r   ri   )rF   r(   Údraw_polygonr&   r   ÚnewÚsizeÚDraw)
r-   rJ   r,   rX   rM   r*   rY   ÚmaskÚmask_inkr(   s
             r0   ÚpolygonÚImageDraw.polygon[  sß   € ð Ÿ™ WÓ3‰ˆØÑØ�I‰I×"Ñ" 2°Ô3Ø‰?˜s›°5¸A³:Ø˜‹zØ—	‘	×&Ñ& r°°5Õ9Ø—‘Ñ$ô —y’y  d§g¡g§l¡lÓ3�ØŸ<™<¨›?¨1Ñ-�Ü˜D“z�Ø—	‘	×&Ñ& r°QÔ7à—	‘	×&Ñ& r°°5¸1±9¸q±=À$Ç'Á'ÕJð %ð 4>˜ˆ?r3   c                ó@   • [        XU5      nU R                  XtXV5        g)zDraw a regular polygon.N)Ú!_compute_regular_polygon_verticesr©   )r-   Úbounding_circleÚn_sidesÚrotationr,   rX   rM   rJ   s           r0   Úregular_polygonÚImageDraw.regular_polygons  s   € ô /¨ÈÓRˆØ�‰�R˜wÕ.r3   c                óÄ   • U R                  X25      u  pVUb  U R                  R                  XS5        Ub+  XV:w  a%  US:w  a  U R                  R                  XSU5        gggg)zDraw a rectangle.Nr   r   )rF   r(   Údraw_rectangler^   s          r0   Ú	rectangleÚImageDraw.rectangle€  s\   € ð Ÿ™ WÓ3‰ˆØÑØ�I‰I×$Ñ$ R°1Ô5Ø‰?˜s›°5¸A³:Ø�I‰I×$Ñ$ R¨a°Õ7ð 4>˜ˆ?r3   )Úcornersc               óà  ^ ^^^^^^^^^^^• [        US   [        [        45      (       a(  [        [        [        [
              U5      u  u  mmu  mmO[        [        [
           U5      u  mmmmTT:  a  Sn[        U5      eTT:  a  Sn[        U5      eTc  SmUS-  m[        T5      m[        T5      m[        T5      m[        T5      mSu  mm[        T5      (       aO  TTT-
  S-
  :¬  mT(       a  TT-
  mTTT-
  S-
  :¬  mT(       a  TT-
  mT(       a  T(       a  T R                  XUT5      $ TS:X  d  [        T5      (       d  T R                  XUT5      $ [        TS-  5      nT R                  XC5      u  mmSUUUUUUU UUUUU4S	 jjn	TGb>  U	" S
5        T(       a.  T R                  R                  TTU-   S-   TTU-
  S-
  4TS5        O?TU-
  S-
  TU-   S-   :¼  a-  T R                  R                  TU-   S-   TTU-
  S-
  T4TS5        T(       d»  T(       d´  TTTU-   T/n
TS   (       a  U
S==   US-   -  ss'   TS   (       a  U
S==   US-   -  ss'   T R                  R                  U
TS5        TU-
  TTT/nTS   (       a  US==   US-   -  ss'   TS   (       a  US==   US-   -  ss'   T R                  R                  UTS5        TGbœ  TT:w  Ga”  TS:w  GaŒ  U	" S5        T(       dº  TTTTT-   S-
  /nTS   (       a  US==   US-   -  ss'   TS   (       a  US==   US-   -  ss'   T R                  R                  UTS5        TTT-
  S-   TT/nTS   (       a  US==   US-   -  ss'   TS   (       a  US==   US-   -  ss'   T R                  R                  UTS5        T(       d»  TTTT-   S-
  T/n
TS   (       a  U
S==   US-   -  ss'   TS   (       a  U
S==   US-   -  ss'   T R                  R                  U
TS5        TT-
  S-   TTT/nTS   (       a  US==   US-   -  ss'   TS   (       a  US==   US-   -  ss'   T R                  R                  UTS5        ggggg)zDraw a rounded rectangle.r   z&x1 must be greater than or equal to x0z&y1 must be greater than or equal to y0N)TTTTri   )FFr   c                óæ  >• T(       a  TTTT-   TT-   4SS4TTT-
  TT-   T4SS44nO|T(       a  TTTT-   TT-   4SS4TT-
  TTTT-   4SS44nOV[        U4S j[        TTTT-   TT-   4SS4TT-
  TTTT-   4SS4TT-
  TT-
  TT4SS4TTT-
  TT-   T4SS445       5       5      nU HH  nU (       a   T	R                  R                  " UTS4-   6   M*  T	R                  R                  " UTT
4-   6   MJ     g )Nr€   rj   r   rl   é  c              3  óD   >#   • U  H  u  pTU   (       d  M  Uv •  M     g 7fr?   © )rq   r�   Úpartr¶   s      €r0   rt   ÚDImageDraw.rounded_rectangle.<locals>.draw_corners.<locals>.<genexpr>Ó  s)   øé € ð ò$™˜ð ˜q•z÷ ‘Dò$ùs   ƒ —	 r   )rC   Ú	enumerater(   r�   rI   )rŒ   Úpartsr¼   r¶   ÚdrY   Úfull_xÚfull_yr*   r-   rM   Úx0Úx1Úy0Úy1s      €€€€€€€€€€€€r0   Údraw_cornersÚ1ImageDraw.rounded_rectangle.<locals>.draw_cornersÃ  s]  ø€ æð ˜"˜b 1™f b¨1¡fÐ-¨s°CÐ8Ø˜"˜q™& " q¡&¨"Ð-¨q°#Ð6ð‘ö ð ˜"˜b 1™f b¨1¡fÐ-¨r°3Ð7Ø˜1‘f˜b " b¨1¡fÐ-¨s°BÐ7ð‘ô ô ä#,à  " b¨1¡f¨b°1©fÐ5°s¸CÐ@Ø  1™f b¨"¨b°1©fÐ5°s¸CÐ@Ø  1™f b¨1¡f¨b°"Ð5°q¸"Ð=Ø  " q¡&¨"¨q©&°"Ð5°r¸3Ð?ð	ô$óó �ó �ÞØ—I‘I×+Ò+¨d°hÀ°]Ñ.BÓDà—I‘I×&Ò&¨°°e°Ñ)<Ó>ò	 r3   Tr‚   F)rŒ   Úboolr…   ÚNone)r@   r‡   rC   r   r   r„   r#   ÚroundÚallr_   Úanyr´   ÚintrF   r(   r³   )r-   rJ   rb   r,   rX   rM   r¶   r/   ÚrrÇ   ÚleftÚrightÚtopÚbottomrÀ   rY   rÁ   rÂ   r*   rÃ   rÄ   rÅ   rÆ   s   `    ``       @@@@@@@@@r0   Úrounded_rectangleÚImageDraw.rounded_rectangleŽ  sX  ÿû€ ô �b˜‘eœd¤E˜]×+Ñ+Ü!%¤h¬x¼©Ñ&?ÀÓ!DÑ‰HˆR�‘h�r™2ä!¤(¬5¡/°2Ó6‰NˆB��B˜Ø�‹7Ø:ˆCÜ˜S“/Ð!Ø�‹7Ø:ˆCÜ˜S“/Ð!Ø‰?Ø.ˆGà�Q‰Jˆä�2‹YˆÜ�2‹YˆÜ�2‹YˆÜ�2‹YˆØ%‰ˆ�Üˆw�<‰<Ø˜"˜r™' A™+Ñ%ˆFÞà˜‘G�Ø˜"˜r™' A™+Ñ%ˆFÞà˜‘G�Þž&à—|‘| B¨g°uÓ=Ð=à�‹6œ˜WŸ™ð —>‘> "¨G°UÓ;Ð;ä��Q‘‹KˆØŸ™ WÓ3‰ˆˆX÷ 	?÷  	?ò  	?ðD ÒÙ˜ÔæØ—	‘	×(Ñ(¨"¨b°1©f°q©j¸"¸bÀ1¹fÀq¹jÐ)IÈ8ÐUVÕWØ�a‘˜!‘˜r A™v¨™zÓ)Ø—	‘	×(Ñ(¨"¨q©&°1©*°b¸"¸q¹&À1¹*ÀbÐ)IÈ8ÐUVÔWÞ¦&Ø˜B  Q¡¨Ð+�Ø˜1—:Ø˜“G˜q 1™uÑ$“GØ˜1—:Ø˜“G˜q 1™uÑ$“GØ—	‘	×(Ñ(¨¨x¸Ô;à˜a™  R¨Ð,�Ø˜1—:Ø˜!“H  A¡Ñ%“HØ˜1—:Ø˜!“H  A¡Ñ%“HØ—	‘	×(Ñ(¨°¸!Ô<ØŠ?˜s hœ°5¸A´:Ù˜ÔæØ˜2˜r 2¨¡:°¡>Ð2�Ø˜1—:Ø˜“F˜a !™e‘O“FØ˜1—:Ø˜“F˜a !™e‘O“FØ—	‘	×(Ñ(¨¨c°1Ô5à˜b 5™j¨1™n¨b°"Ð5�Ø˜1—:Ø˜1“I  Q¡Ñ&“IØ˜1—:Ø˜1“I  Q¡Ñ&“IØ—	‘	×(Ñ(¨°°aÔ8ÞØ˜B  U¡
¨Q¡°Ð3�Ø˜1—:Ø˜“G˜q 1™uÑ$“GØ˜1—:Ø˜“G˜q 1™uÑ$“GØ—	‘	×(Ñ(¨¨s°AÔ6à˜e™ a™¨¨R°Ð4�Ø˜1—:Ø˜!“H  A¡Ñ%“HØ˜1—:Ø˜!“H  A¡Ñ%“HØ—	‘	×(Ñ(¨°°QÕ7ð ð# 4>˜ˆ?r3   c                óŽ  ^ ^^	^
^^^^^• [        U[        R                  5      (       a  UmOwUc   T R                  TR	                  S5      5      n[        R                  " X$T R
                  UTT	T
5      mT(       a  TR                  5         U(       a  TR                  X¼5        SU 4S jjnU" U5      nUc  gSnTR                  (       a!  TR                  b  U" TR                  5      OUnTR                  XU5       HE  mSSUUUU	UUU
UU 4	S jjjnUb%  U" UTR                  5        UU:w  a
  U" U5        M;  M=  U" U5        MG     g)z
Draw text.Nr;   c                óB   >• TR                  U 5      u  pUc  Uc   eU$ U$ r?   )rF   )r,   r*   rY   r-   s      €r0   ÚgetinkÚImageDraw.text.<locals>.getink?  s.   ø€ Ø ŸL™L¨Ó.‰MˆCØ‰{ØÑ+Ð+Ð+Ø�ØˆJr3   c                ó  >	• TR                   nUS:X  a	  T(       a  Sn[        TR                  5      n[        TR                  5      n[        R
                  " TR                  5      S   [        R
                  " TR                  5      S   4n TR                  R                  " TR                  U/T
Q7TTTUSTR                  U US.TD6u  pgX7S   -  nXGS   -  nUS:X  aŠ  XfR                  S5      ph[        R                  " SU 5      S   n	UR!                  SU	5        TR"                  b?  TR"                  R%                  XƒXCUR&                  S   -   XFR&                  S   -   4U5        g g TR(                  R+                  X44X`5        g ! [         ax     TR                  R                  " TR                  UTTTUTR                  U /T
Q7SU0TD6n Nø! [         a*    TR                  R                  TR                  5      n  GN+f = ff = f)	Nr   r   T)Ú	directionÚfeaturesÚlanguageÚstroke_widthÚstroke_filledÚanchorr*   rK   r   rK   r‚   r�   )r+   rÎ   r{   r|   rn   Úmodfr   Úgetmask2Útextrà   ÚAttributeErrorÚgetmaskÚ	TypeErrorÚgetbandÚstructÚpackÚfillbandr&   Úpaster¥   r(   rR   )r*   rÞ   r"   r{   r|   rK   r§   ÚoffsetÚcolorÚ	ink_alphaÚargsrÛ   Úembedded_colorrÜ   Ú
image_textÚkwargsrÝ   r�   r-   s             €€€€€€€€€r0   Ú	draw_textÚ!ImageDraw.text.<locals>.draw_textT  s  ø€ Ø—}‘}�Ø 1Ó$®Ø!�DÜ˜Ÿ™“K�Ü˜Ÿ™“K�ÜŸš 4§6¡6Ó*¨1Ñ-¬t¯yªy¸¿¹Ó/@ÀÑ/CÐD�ð!BØ#-§?¡?×#;Ò#;ØŸ	™	Øð$ð ñ$ð #,Ø!)Ø!)Ø%1Ø&*Ø#Ÿ{™{ØØ#ñ$ð !ñ$‘L�Dð  ™‘N�AØ ™‘N�Að$ ˜6“>ð #'¯©°Q«˜4Ü &§¢¨C°Ó 5°aÑ 8�IØ—N‘N 1 iÔ0Ø—w‘wÑ*ØŸ™Ÿ™Ø! q¨d¯i©i¸©lÑ*:¸AÇ	Á	È!ÁÑ<LÐ#MÈtõð +ð
 —I‘I×)Ñ)¨1¨&°$Õ<øô; &ó BðBØ)Ÿ™×6Ò6Ø ŸI™IØ Ø%Ø$Ø$Ø(Ø ŸK™KØð ð "ò ð #(ð ð %ñ šøô %ó BØ)Ÿ™×6Ñ6°t·y±yÓAœðBúðBús+   ÂAF
 Æ

HÆ=GÇ/HÈHÈHÈH)r,   ú_Ink | Noner…   rÎ   )r   )r*   rÎ   rÞ   r„   r…   rÊ   )r@   r	   ÚTextr<   Úgetr"   Úembed_colorÚstrokerÞ   Ústroke_fillÚ_split)r-   rJ   rã   r,   r   rà   ÚspacingÚalignrÛ   rÜ   rÝ   rÞ   rú   rð   rï   rò   rØ   r*   Ú
stroke_inkró   rñ   r�   s   `       ```  ```    @@r0   rã   ÚImageDraw.text  s&  ÿø€ ô0 �dœIŸN™N×+Ñ+Ø‰Jà‰|Ø—}‘} V§Z¡Z°Ó%<Ó=�Ü"ŸšØ˜DŸI™I w°	¸8ÀXóˆJö Ø×&Ñ&Ô(ÞØ×!Ñ! ,Ô<÷	ñ �T‹lˆØ‰;Øàˆ
Ø×"×"ð ×)Ñ)Ñ5ñ �z×-Ñ-Ô.àð ð ×%Ñ% b°%Ö8ˆD÷5=÷ 5=ñ 5=ðn Ñ%á˜* j×&=Ñ&=Ô>ð ˜*Ó$Ù˜c–Nñ %ñ ˜#–òE 9r3   ©r;   c               ó:   • U R                  UUUUUUUUU	U
UUUUS9$ ©Nr   )rã   )r-   rJ   rã   r,   r   rà   rü   rý   rÛ   rÜ   rÝ   rÞ   rú   rð   r;   s                  r0   Úmultiline_textÚImageDraw.multiline_text–  sD   € ð. �y‰yØØØØØØØØØØØØØØð ð 
ð 	
r3   c          	     ó¾   • Uc  U R                  U5      n[        R                  " UUU R                  UUUS9nU(       a  UR	                  5         UR                  5       $ )z@Get the length of a given string, in pixels with 1/64 precision.)rÛ   rÜ   rÝ   )r<   r	   rö   r"   rø   Ú
get_length)	r-   rã   r   rÛ   rÜ   rÝ   rð   r;   rñ   s	            r0   Ú
textlengthÚImageDraw.textlength¾  s[   € ð" ‰<Ø—=‘= Ó+ˆDÜ—^’^ØØØ�I‰IØØØñ
ˆ
ö Ø×"Ñ"Ô$Ø×$Ñ$Ó&Ð&r3   c          	     óò   • Uc  U R                  U5      n[        R                  " X#U R                  XWX‰5      nU(       a  UR	                  5         U
(       a  UR                  U
5        UR                  XU5      $ )z2Get the bounding box of a given string, in pixels.)r<   r	   rö   r"   rø   rù   Úget_bbox)r-   rJ   rã   r   rà   rü   rý   rÛ   rÜ   rÝ   rÞ   rð   r;   rñ   s                 r0   ÚtextbboxÚImageDraw.textbboxÝ  sg   € ð, ‰<Ø—=‘= Ó+ˆDÜ—^’^Ø˜Ÿ	™	 7°xó
ˆ
ö Ø×"Ñ"Ô$ÞØ×Ñ˜lÔ+Ø×"Ñ" 2¨uÓ5Ð5r3   c               ó6   • U R                  UUUUUUUUU	U
UUS9$ r  )r  )r-   rJ   rã   r   rà   rü   rý   rÛ   rÜ   rÝ   rÞ   rð   r;   s                r0   Úmultiline_textbboxÚImageDraw.multiline_textbboxþ  s>   € ð* �}‰}ØØØØØØØØØØØØð ð 
ð 	
r3   )	r%   r(   r,   r   r+   r&   r*   r"   r$   r?   )r&   úImage.Imager"   ú
str | Noner…   rÊ   )r…   úGImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont)r;   úfloat | Noner…   r  )r*   rõ   r,   rõ   r…   ztuple[int | None, int | None])Nr   )rJ   r   rK   r„   rL   r„   r,   rõ   rM   rÎ   r…   rÊ   )rJ   zSequence[int]rS   r  r,   rõ   r…   rÊ   )NNr   )rJ   r   rK   r„   rL   r„   r,   rõ   rX   rõ   rM   rÎ   r…   rÊ   )
rJ   r   r,   rõ   rX   rõ   rM   rÎ   r…   rÊ   )rJ   rƒ   rb   r„   r,   rõ   rX   rõ   rM   rÎ   r…   rÊ   )Nr   N)
rJ   r   r,   rõ   rM   rÎ   rŽ   r  r…   rÊ   )NN)rš   zImage.core._Outliner,   rõ   rX   rõ   r…   rÊ   )rJ   r   r,   rõ   r…   rÊ   )r   NNr   )r­   ú!Sequence[Sequence[float] | float]r®   rÎ   r¯   r„   r,   rõ   rX   rõ   rM   rÎ   r…   rÊ   )rJ   r   rb   r„   r,   rõ   rX   rõ   rM   rÎ   r¶   z$tuple[bool, bool, bool, bool] | Noner…   rÊ   )NNNrh   rÐ   NNNr   NF) rJ   útuple[float, float]rã   zAnyStr | ImageText.Text[AnyStr]r,   rõ   r   r   rà   r  rü   r„   rý   rA   rÛ   r  rÜ   úlist[str] | NonerÝ   r  rÞ   r„   rú   rõ   rð   rÉ   rï   r   rò   r   r…   rÊ   )rJ   r  rã   r   r,   rõ   r   r   rà   r  rü   r„   rý   rA   rÛ   r  rÜ   r  rÝ   r  rÞ   r„   rú   rõ   rð   rÉ   r;   r  r…   rÊ   )NNNNF)rã   r   r   r   rÛ   r  rÜ   r  rÝ   r  rð   rÉ   r;   r  r…   r„   )	NNrh   rÐ   NNNr   F)rJ   r  rã   r   r   r   rà   r  rü   r„   rý   rA   rÛ   r  rÜ   r  rÝ   r  rÞ   r„   rð   rÉ   r;   r  r…   z!tuple[float, float, float, float])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__r1   r8   r<   rF   rN   rS   rZ   r_   rd   r�   rš   rŒ   r‘   r©   r°   r´   rÔ   rã   r  r  r  r  Ú__static_attributes__r»   r3   r0   r   r   =   sJ  ‡ ð 	ð 	ØVóö&ðPà	Pôð6"Ø%ð"à	Pô"ð 59ð'Øð'Ø&1ð'à	&õ'ð< !Øð;àð;ð ð;ð ð	;ð
 ð;ð ð;ð 
õ;ð KOð	6Øð	6Ø)4ð	6Ø<Gð	6à	õ	6ð  !Ø#Øð@àð@ð ð@ð ð	@ð
 ð@ð ð@ð ð@ð 
õ@ð& !Ø#Øð6àð6ð ð6ð ð	6ð
 ð6ð 
õ6ð$ !Ø#Øð
7àð
7ð ð
7ð ð	
7ð
 ð
7ð ð
7ð 
õ
7ð !ØØ ðK=àðK=ð ðK=ð ð	K=ð
 ðK=ð 
õK=ð` !Ø#ð	2à"ð2ð ð2ð ð	2ð
 
õ2ð& !Ø#ØðCàðCð ðCð ð	Cð
 ðCð ðCð ðCð 
õCö +ð !Ø#ØðKàðKð ðKð ð	Kð
 ðKð 
õKð8 Ø Ø#Øð/à:ð/ð ð/ð ð	/ð
 ð/ð ð/ð ð/ð 
õ/ð  !Ø#Øð8àð8ð ð8ð ð	8ð
 ð8ð 
õ8ð" Ø Ø#ØðJ8ð 9=ñJ8àðJ8ð ðJ8ð ð	J8ð
 ðJ8ð ðJ8ð 6ðJ8ð 
öJ8ð` !ð Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð'zàðzð .ðzð ð	zððzð ðzð ðzð ðzð ðzð #ðzð  ð!zð" ð#zð$ !ð%zð& ð'zð( ð)zð* ð+zð, 
õ-zð@ !ð Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð'&
ð* #'ñ+&
àð&
ð ð&
ð ð	&
ðð&
ð ð&
ð ð&
ð ð&
ð ð&
ð #ð&
ð  ð!&
ð" ð#&
ð$ !ð%&
ð& ð'&
ð*  ð+&
ð, 
ö-&
ð` Ø $Ø%)Ø#Ø$ð'ð #'ñ'àð'ðð	'ð ð'ð #ð'ð ð'ð ð'ð  ð'ð 
ö'ðP Ø!ØØØ $Ø%)Ø#ØØ$ð#6ð& #'ñ'6àð6ð ð6ð
ð6ð ð6ð ð6ð ð6ð ð6ð #ð6ð ð6ð  ð!6ð" ð#6ð&  ð'6ð( 
+ö)6ðT Ø!ØØØ $Ø%)Ø#ØØ$ð#"
ð& #'ñ'"
àð"
ð ð"
ð
ð"
ð ð"
ð ð"
ð ð"
ð ð"
ð #ð"
ð ð"
ð  ð!"
ð" ð#"
ð&  ð'"
ð( 
+÷)"
ñ "
r3   r   c                ó^   •  [        U S5      " U5      $ ! [         a    [        X5      s $ f = f)ak  
A simple 2D drawing interface for PIL images.

:param im: The image to draw in.
:param mode: Optional mode to use for color values.  For RGB
   images, this argument can be RGB or RGBA (to blend the
   drawing into the image).  For all other modes, this argument
   must be the same as the image mode.  If omitted, the mode
   defaults to the mode of the image.
Úgetdraw)Úgetattrrä   r   )r&   r"   s     r0   r¦   r¦   #  s3   € ð#Ü�r˜9Ô% dÓ+Ð+øÜó #Ü˜Ó"Ò"ð#ús   ‚ ”,«,c                óB   • SSK Jn  U b  UR                  " U 5      OSnX!4$ )za
:param im: The image to draw in.
:returns: A (drawing context, drawing resource factory) tuple.
r   )r   N)r6   r   r¦   )r&   r   r(   s      r0   r  r  4  s$   € õ
 à"$¡.ˆ:�?Š?˜2Ô°d€DØÐÐr3   c                óF  • U R                  5       nUc   eUu  pg XVU4   n[        X(5      U::  a  gX%Xg4'   Xg41n	[	        5       n
U	(       aª  [	        5       nU	 HŒ  u  pgUS-   U4US-
  U4XgS-   4XgS-
  44 Hk  u  pÍXÍ4U
;   d  US:  d  US:  a  M   X\U4   nU
R                  XÍ45        Uc  [        Xè5      U:*  nOXâU4;  nU(       a  X%XÍ4'   UR                  XÍ45        Mk  Mm     MŽ     U	n
Un	U	(       a  M©  gg! [        [        4 a     gf = f! [        [        4 a     M«  f = f)a³  
.. warning:: This method is experimental.

Fills a bounded region with a given color.

:param image: Target image.
:param xy: Seed position (a 2-item coordinate tuple). See
    :ref:`coordinate-system`.
:param value: Fill color.
:param border: Optional border value.  If given, the region consists of
    pixels with a color different from the border color.  If not given,
    the region consists of pixels having the same color as the seed
    pixel.
:param thresh: Optional threshold value which specifies a maximum
    tolerable difference of a pixel value from the 'background' in
    order for it to be replaced. Useful for filling regions of
    non-homogeneous, but similar, colors.
Nr   r   )rQ   Ú_color_diffr#   Ú
IndexErrorÚsetÚadd)ÚimagerJ   ÚvalueÚborderÚthreshÚpixelr{   r|   Ú
backgroundÚedgeÚ	full_edgeÚnew_edgeÚsÚtrr   r,   s                   r0   Ú	floodfillr1  ?  sc  € ð6 �J‰J‹L€EØÑÐÐØ�D€AðØ˜a˜4‘[ˆ
Ü�uÓ)¨VÓ3ØØˆaˆd‰ð ˆFˆ8€Dô “€IÞ
Ü“5ˆÛ‰DˆAØ˜a™% ˜ a¨!¡e¨Q Z°!¸±U°¸aÀQÁ¸ZÓH‘�à�6˜YÓ&¨!¨a«%°1°q³5Ùð-Ø ˜d™�Að —M‘M 1 &Ô)Ø‘~Ü*¨1Ó9¸VÑC™à °¨Ñ7˜ÞØ&+˜a˜d™Ø Ÿ™ a VÖ,ñ ó Iñ ð$ ˆ	Øˆ÷+ Š$øô œ
Ð#ó Ùðûô #¤JÐ/ó Úðús(   ›C6 ±C6 ÂDÃ6D	ÄD	ÄD ÄD c                ó  ^^	^
• [        U[        5      (       d  Sn[        U5      eUS:  a  Sn[        U5      e[        U [        [
        45      (       d  Sn[        U5      e[        U 5      S:X  aH  [        S U  5       5      (       d  Sn[        U5      e[        [        [           [	        U 5      5      Gt m	m
OÕ[        U 5      S:X  a¹  [        U S   [        [
        45      (       a›  [        S	 U S    5       5      (       a  [        U S
   [        [        45      (       d  Sn[        U5      e[        U S   5      S:w  a  Sn[        U5      e[        [        [           [	        U S   5      5      m	[        [        U S
   5      m
OSn[        U5      eT
S::  a  Sn[        U5      e[        U[        [        45      (       d  Sn[        U5      eSU	4S jjmSUU
4S jjnSS jnU" X5      nU Vs/ s H
  ot" U5      PM     sn$ s  snf )u  
Generate a list of vertices for a 2D regular polygon.

:param bounding_circle: The bounding circle is a sequence defined
    by a point and radius. The polygon is inscribed in this circle.
    (e.g. ``bounding_circle=(x, y, r)`` or ``((x, y), r)``)
:param n_sides: Number of sides
    (e.g. ``n_sides=3`` for a triangle, ``6`` for a hexagon)
:param rotation: Apply an arbitrary rotation to the polygon
    (e.g. ``rotation=90``, applies a 90 degree rotation)
:return: List of regular polygon vertices
    (e.g. ``[(25, 50), (50, 50), (50, 25), (25, 25)]``)

How are the vertices computed?
1. Compute the following variables
    - theta: Angle between the apothem & the nearest polygon vertex
    - side_length: Length of each polygon edge
    - centroid: Center of bounding circle (1st, 2nd elements of bounding_circle)
    - polygon_radius: Polygon radius (last element of bounding_circle)
    - angles: Location of each polygon vertex in polar grid
        (e.g. A square with 0 degree rotation => [225.0, 315.0, 45.0, 135.0])

2. For each angle in angles, get the polygon vertex at that angle
    The vertex is computed using the equation below.
        X= xcos(Ï†) + ysin(Ï†)
        Y= âˆ’xsin(Ï†) + ycos(Ï†)

    Note:
        Ï† = angle in degrees
        x = 0
        y = polygon_radius

    The formula above assumes rotation around the origin.
    In our case, we are rotating around the centroid.
    To account for this, we use the formula below
        X = xcos(Ï†) + ysin(Ï†) + centroid_x
        Y = âˆ’xsin(Ï†) + ycos(Ï†) + centroid_y
zn_sides should be an intr‚   zn_sides should be an int > 2z$bounding_circle should be a sequencec              3  óN   #   • U  H  n[        U[        [        45      v •  M     g 7fr?   ©r@   rÎ   r„   ©rq   r�   s     r0   rt   Ú4_compute_regular_polygon_vertices.<locals>.<genexpr>¸  s   é € ÐHº°1”:˜a¤#¤u ×.Ð.ºùó   ‚#%z0bounding_circle should only contain numeric datari   r   c              3  óN   #   • U  H  n[        U[        [        45      v •  M     g 7fr?   r4  r5  s     r0   rt   r6  ¾  s"   é € ð 
Ú1C¨AŒJ�qœ3¤˜,×'Ð'Ò1Cùr7  r   zBbounding_circle centre should contain 2D coordinates (e.g. (x, y))z[bounding_circle should contain 2D coordinates and a radius (e.g. (x, y, r) or ((x, y), r) )z$bounding_circle radius should be > 0z"rotation should be an int or floatc                óà  >• [        U S   [        R                  " [        R                  " SU-
  5      5      -  U S   [        R                  " [        R                  " SU-
  5      5      -  -
  TS   -   S5      [        U S   [        R                  " [        R                  " SU-
  5      5      -  U S   [        R                  " [        R                  " SU-
  5      5      -  -   TS   -   S5      4$ )Nr   rj   r   ri   )rË   rn   rv   rw   rx   )r‘   rŠ   Úcentroids     €r0   Ú_apply_rotationÚ:_compute_regular_polygon_vertices.<locals>._apply_rotationÛ  sÕ   ø€ äØ�a‘œ4Ÿ8š8¤D§L¢L°°w±Ó$?Ó@Ñ@Ø˜‘(œTŸXšX¤d§l¢l°3¸±=Ó&AÓBÑBñCà˜1‘+ñð ó	ô Ø�a‘œ4Ÿ8š8¤D§L¢L°°w±Ó$?Ó@Ñ@Ø˜‘(œTŸXšX¤d§l¢l°3¸±=Ó&AÓBÑBñCà˜1‘+ñð ó	ð
ð 	
r3   c                ó   >• TS/nT" X5      $ ©Nr   r»   )rz   Ústart_pointr;  Úpolygon_radiuss     €€r0   Ú_compute_polygon_vertexÚB_compute_regular_polygon_vertices.<locals>._compute_polygon_vertexë  s   ø€ Ø% qÐ)ˆÙ˜{Ó2Ð2r3   c                ó’   • / nSU -  nSSU-  -
  U-   n[        U 5       H%  nUR                  U5        XC-  nUS:”  d  M   US-  nM'     U$ )Nrj   r¹   g      à?)rˆ   Úappend)r®   r¯   r’   rŠ   Úcurrent_angleÚ_s         r0   Ú_get_anglesÚ6_compute_regular_polygon_vertices.<locals>._get_anglesï  s^   € ØˆØ˜‘-ˆà˜s W™}Ñ,°Ñ8ˆÜ�w–ˆAØ�M‰M˜-Ô(ØÑ$ˆMØ˜sÕ"Ø Ñ$’ñ	  ð
 ˆr3   )r‘   úlist[float]rŠ   r„   r…   r  )rz   r„   r…   r  )r®   rÎ   r¯   r„   r…   rI  )
r@   rÎ   ræ   r#   r‡   rC   r‰   rÌ   r   r„   )r­   r®   r¯   r/   rA  rG  r’   rz   r;  r:  r@  s           @@@r0   r¬   r¬   €  sâ  ú€ ôV �gœs×#Ñ#Ø(ˆÜ˜‹nÐØ�ƒ{Ø,ˆÜ˜‹oÐô �o¬¬e }×5Ñ5Ø4ˆÜ˜‹nÐä
ˆ?Ó˜qÓ ÜÑH¹ÓH×HÑHØDˆCÜ˜S“/Ð!ä$(¬¬e©´d¸?Ó6KÓ$LÑ!ˆ‘>Ü	ˆ_Ó	 Ó	"¤z°/À!Ñ2DÄtÌUÀm×'TÑ'TÜñ 
Ø1@ÀÒ1Có
÷ 
ñ 
ä˜O¨AÑ.´´e°×=Ñ=ØDˆCÜ˜S“/Ð!äˆ˜qÑ!Ó" aÓ'ØVˆCÜ˜S“/Ð!äœœU™¤T¨/¸!Ñ*<Ó%=Ó>ˆÜœe _°QÑ%7Ó8‰ð<ð 	ô ˜‹oÐà˜ÓØ4ˆÜ˜‹oÐô �h¤¤e ×-Ñ-Ø2ˆÜ˜‹oÐ÷
÷ 3ð 3ô
ñ ˜Ó+€Fñ 9?Ó?º¨uÐ# EÖ*¹Ñ?Ð?ùÒ?s   Ç*G>c                ó¾   ^^• [        U [        5      (       a  U OU 4m[        U[        5      (       a  UOU4m[        UU4S j[        [	        T5      5       5       5      $ )zB
Uses 1-norm distance to calculate difference between two values.
c              3  óL   >#   • U  H  n[        TU   TU   -
  5      v •  M     g 7fr?   )Úabs)rq   r�   ÚfirstÚseconds     €€r0   rt   Ú_color_diff.<locals>.<genexpr>  s(   øé € ÐEÒ2D¨QŒs�5˜‘8˜f Q™iÑ'×(Ð(Ò2Dùs   ƒ!$)r@   rC   Úsumrˆ   r‰   )Úcolor1Úcolor2rM  rN  s     @@r0   r"  r"    sI   ù€ ô ! ¬×/Ñ/‰F°f°Y€EÜ! &¬%×0Ñ0‰V°v°i€FäÕE´%¼¸F»Ô2DÓEÓEÐEr3   r?   )r&   r  r"   r  r…   r   )r&   zImage.Image | Noner…   z)tuple[ImageDraw2.Draw | None, ModuleType]r>  )r&  r  rJ   ztuple[int, int]r'  úfloat | tuple[int, ...]r(  zfloat | tuple[int, ...] | Noner)  r„   r…   rÊ   )r­   r  r®   rÎ   r¯   r„   r…   zlist[tuple[float, float]])rQ  rS  rR  rS  r…   r„   )!Ú
__future__r   rn   rè   Úcollections.abcr   Útypingr   r6   r   r   r	   ÚTYPE_CHECKINGr
   Útypesr   r   r   r   r   Ú_typingr   r   r'   rX   r   r  r   r¦   r  r1  r¬   r"  r»   r3   r0   Ú<module>rZ     sþ   ðö@ #ã Û Ý $Ý ç *Ñ *à€ÞÝ(Ý ß"ç'ß%ð .3¯Z©Z×-?Ñ-?€Ð	*Ó ?ð÷c
ñ c
öL#ö"ð .2Øð>Øð>àð>ð #ð>ð +ð	>ð
 ð>ð 
õ>ðB@Ø6ð@ØADð@ØPUð@àô@ðD	FØ#ð	FØ-Dð	Fà
õ	Fr3   