§
    èƒñjKn  ã                  óŒ  — d Z ddlmZ ddlmZmZmZ ddlmZ	 ddl
mZ ddlZddlZddlZddlZddlZddlZddlZ	 ddlZn# e$ r dZY nw xY wddlmZmZmZmZmZmZmZmZmZ dd	lm Z  d
dl!m"Z" d
dl#m$Z$m%Z%m&Z& dZ' G d„ d¦  «        Z( e(¦   «         Z)dZ*d3d4d„Z+d„ Z, e,¦   «         Z-	 	 	 d5d6d'„Z.	 	 	 d7d8d0„Z/ G d1„ d2¦  «        Z0dS )9z# SVG drawing backend for schemdraw é    )Úannotations)ÚSequenceÚOptionalÚBinaryIO)ÚElementTree)Ú
namedtupleNé   )	ÚCapstyleÚ	JoinstyleÚ	LinestyleÚBBoxÚHalignÚValignÚRotationModeÚTextModeÚXY)ÚPointé   )Úsvgtext)Úparse_size_to_pxÚ	PT_PER_INÚ	PX_PER_PTc                  óØ   — e Zd ZU dZe�dndZded<   edd„¦   «         Zej	        dd„¦   «         Zedd„¦   «         Z
e
j	        dd„¦   «         Z
edd„¦   «         Zej	        dd„¦   «         ZdS )ÚConfigz' Configuration options for SVG backend NÚpathÚtextr   Ú_textÚreturnc                ó   — | j         S )aö   One of 'path' or 'text'. In 'text' mode, text is drawn
            as SVG <text> elements and will be searchable in the
            SVG, however it may render differently on systems without
            the same fonts installed. In 'path' mode, text is
            converted to SVG <path> elements and will render
            independently of any fonts on the system. Path mode
            enables full rendering of math expressions, but also
            requires the ziafont/ziamath packages.
        )r   ©Úselfs    úU/data/share/cad/hardware/.venv/lib/python3.11/site-packages/schemdraw/backends/svg.pyr   zConfig.text#   s   € ð ŒzÐó    ÚvalueÚNonec                ór   — |dk    rt           €t          d¦  «        ‚|dvrt          d¦  «        ‚|| _        d S )Nr   z"Path mode requires ziamath package)r   r   z#text mode must be "path" or "text".)ÚziamathÚ
ValueErrorr   ©r!   r$   s     r"   r   zConfig.text0   sD   € à�FŠ?ˆ?�w˜ÝÐAÑBÔBÐBØÐ(Ð(Ð(ÝÐBÑCÔCÐCØˆŒ
ˆ
ˆ
r#   Úboolc                ó6   — t           �t           j        j        S dS )zf Use SVG2.0. Disable for better browser compatibility
            at the expense of SVG size.
        NT)r'   ÚconfigÚsvg2r    s    r"   r-   zConfig.svg28   s   € õ
 ÐÝ”>Ô&Ð&Øˆtr#   c                óT   — t           €t          d¦  «        ‚|t           j        _        d S )Nz"SVG2 mode requires ziamath package)r'   r(   r,   r-   r)   s     r"   r-   zConfig.svg2A   s&   € åˆ?ÝÐAÑBÔBÐBØ#�ŒÔÐÐr#   Úfloatc                ó$   — t           j        j        S )z' Decimal precision for SVG coordinates ©r'   r,   Ú	precisionr    s    r"   r2   zConfig.precisionG   s   € õ Œ~Ô'Ð'r#   c                ó(   — |t           j        _        d S ©Nr1   r)   s     r"   r2   zConfig.precisionL   s   € à#(�ŒÔ Ð Ð r#   )r   r   )r$   r   r   r%   )r   r*   )r$   r*   r   r%   )r   r/   )r$   r/   r   r%   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   r   Ú__annotations__Úpropertyr   Úsetterr-   r2   © r#   r"   r   r      sü   € € € € € € Ø1Ð1Ø 'Ð 3�f�f¸€EÐ?Ð?Ð?Ñ?àð
ð 
ð 
ñ „Xð
ð 
„[ðð ð ñ „[ðð ðð ð ñ „Xðð 
„[ð$ð $ð $ñ „[ð$ð
 ð(ð (ð (ñ „Xð(ð Ôð)ð )ð )ñ Ôð)ð )ð )r#   r   z³<defs><pattern id="hatch" patternUnits="userSpaceOnUse" width="4" height="4">
<path d="M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2" style="stroke:black; stroke-width:.5" /></pattern></defs>TÚmoder   r-   r*   r   r%   c                ój   — t          j        dt          ¦  «         |t          _        | t          _        dS )ac   Set the mode for rendering text in the SVG backend.

        In 'text' mode, text is drawn as SVG <text> elements
        and will be searchable in the SVG, however it may
        render differently on systems without the same fonts
        installed. In 'path' mode, text converted to SVG
        <path> elements and will render independently of
        any fonts on the system. Path mode enables full
        rendering of math expressions, but also requires the
        ziafont/ziamath packages.

        Args:
            mode: Text Mode.
            svg2: Use SVG2.0. Disable for better compatibility.
    z2settextmode is deprecated. Use schemdraw.svgconfigN)ÚwarningsÚwarnÚDeprecationWarningr,   r-   r   )r=   r-   s     r"   ÚsettextmoderB   X   s*   € õ  „MÐFÕI[Ñ\Ô\Ð\Ø…F„KØ…F„K€K€Kr#   c                 ó^   — 	 t          ¦   «         j        j        } | dv S # t          $ r Y dS w xY w)z? Determine whether code is running in Jupyter/interactive mode )ÚZMQInteractiveShellÚSpyderShellF)Úget_ipythonÚ	__class__r5   Ú	NameError)Úshells    r"   Ú
isnotebookrJ   m   sD   € ðÝ‘”Ô'Ô0ˆØÐ>Ð>Ð>øÝð ð ð Øˆuˆuðøøøs   ‚ ž
,«,FÚcolorúOptional[str]ÚlsúOptional[Linestyle]ÚlwúOptional[float]ÚcapstyleúOptional[Capstyle]Ú	joinstyleúOptional[Joinstyle]ÚfillÚhatchÚstrc           
     óð  — d}t          | t          ¦  «        rR|dt          | d         dz  ¦  «        › dt          | d         dz  ¦  «        › dt          | d         dz  ¦  «        › d�z  }n| r	|d	| › d
�z  }|r|dz  }n(|dt          |¦  «                             ¦   «         › d
�z  }|r	|d|› d
�z  }|r&dddddddœ                     ||¦  «        }|d|› d
�z  }|r|dk    rd}|d|› d
�z  }|r	|d|› d
�z  }|S )zD Get style for svg element. Leave empty if property matches default Ú zstroke:rgb(r   éÿ   ú,r   r	   z);zstroke:ú;zfill:url(#hatch);zfill:zstroke-width:z7.4,3.2z2,3.3z12.8,3.2,2,3.2)z--Údashedú:Údottedz-.Údashdotzstroke-dasharray:Ú
projectingÚsquarezstroke-linecap:zstroke-linejoin:)Ú
isinstanceÚtupleÚintrW   ÚlowerÚget)	rK   rM   rO   rQ   rS   rU   rV   ÚsÚdashs	            r"   Úgetstylerj   y   sŒ  € ð 	€AÝ�%�ÑÔð  Ø	ÐX�3˜u Qœx¨™|Ñ,Ô,ÐXÐX­s°5¸´8¸C±<Ñ/@Ô/@ÐXÐXÅ3ÀuÈQÄxÐPSÁ|ÑCTÔCTÐXÐXÐXÑXˆˆØ	ð  Ø	Ð�uÐÐÐÑˆØð *Ø	Ð Ñ ˆˆà	Ð)•S˜‘Y”Y—_’_Ñ&Ô&Ð)Ð)Ð)Ñ)ˆØ	ð #Ø	Ð"˜RÐ"Ð"Ð"Ñ"ˆØ	ð )ØØ#ØØ!Ø&Ø+ðð ÷ ’#�b˜"‘+”+ð 	ð 	
Ð( Ð(Ð(Ð(Ñ(ˆØð +Ø�|Ò#Ð#ØˆHØ	Ð*˜xÐ*Ð*Ð*Ñ*ˆØð -Ø	Ð, 	Ð,Ð,Ð,Ñ,ˆà€Hr#   Úsansé   r   ÚfontÚmathfontÚsizer/   útuple[float, float, float]c                óL  — |�|                      ¦   «         dv rd}t          rm|�t          j                             |¦  «        rL| dk    rdS t          j        | ||||¬¦  «        }g |                     ¦   «         ¢|                     ¦   «         ‘R S t          j	        | ||¬¦  «        S )ab   Get size of text. Size will be exact bounding box if ziamath installed and
        using path text mode. Otherwise size will be estimated based on character
        widths.

        Args:
            text: string to calculate
            font: Font family
            size: Font size in points

        Returns:
            width, height, descender
    N©z
sans-serifÚArialrk   rY   )r   r   r   )ro   Ú	mathstyleÚtextfontrn   )rm   ro   )
rf   r'   Úosr   ÚexistsÚTextÚgetsizeÚgetyofstr   Útext_approx_size)r   rm   rn   ro   Úms        r"   Ú	text_sizer}   �   s¦   € ð  €|�t—z’z‘|”|Ð'>Ð>Ð>Øˆåð ,Ø	Ð	�RœWŸ^š^¨HÑ5Ô5Ð	Ø�2Š:ˆ:Ø�9åŒL˜ D°DÀ4ÐRZÐ[Ñ[Ô[ˆØ+�—’‘”Ð+˜aŸjšj™lœlÐ+Ð+Ð+åÔ# D¨t¸$Ð?Ñ?Ô?Ð?r#   c                  ó  — e Zd ZdZdZdjd„Zdkd„Zdld„Zdmd„Zdnd„Z		 	 	 dodpd'„Z
	 	 	 	 	 	 	 	 dqdrd9„Z	 	 	 	 dsdtdB„Z	 	 	 dudvdD„Z	 	 dwdxdK„Z	 	 	 dydzdO„Z	 	 	 	 	 	 d{d|dR„Z	 	 	 	 	 d}d~dY„Z	 dd€d^„Zd�d`„Zd‚da„Zdƒd„de„Zd…df„Zdg„ Zdh„ Zd…di„ZdS )†ÚFigurezÛ Schemdraw figure drawn directly to SVG

        Args:
            bbox: Coordinate bounding box for drawing
            inches_per_unit: Scale for the drawing
            showbbox: Show frame around entire drawing
    r   Úbboxr   c                ó|  — g | _         d| _        i | _        |                     dd¦  «        | _        t
          |                     dd¦  «        z  | _        |                     dd¦  «        t          t
          z  z   | _        |  	                    |¦  «         d | _
        d| _        |                     d¦  «        | _        d S )NFÚshowbboxÚinches_per_unitg      à?Úmarginçš™™™™™¹?Úsvg)ÚsvgelementsrV   Úclipsrg   r‚   r   ÚscaleÚ
LINE_WIDTHr„   Úset_bboxÚ_bgcolorÚ_need_xlinkÚ	svgcanvas)r!   r€   Úkwargss      r"   Ú__init__zFigure.__init__Ç   sŸ   € Ø9;ˆÔØ ˆŒ
Ø&(ˆŒ
ØŸ
š
 :¨uÑ5Ô5ˆŒÝ §¢Ð,=¸sÑ!CÔ!CÑCˆŒ
Ø—j’j ¨3Ñ/Ô/µ*½YÑ2FÑFˆŒØ�Š�dÑÔÐØ'+ˆŒØ ˆÔØŸš EÑ*Ô*ˆŒˆˆr#   r   r%   c                óÒ  — || _         t          | j         j        | j        z
  | j         j        | j        z
  | j         j        | j        z   | j         j        | j        z   ¦  «        | _         | j         j        | j         j        z
  | j        z  | _        | j         j        | j         j        z
  | j        z  | _	        t          d| j        ¦  «        | _        t          d| j	        ¦  «        | _	        dS )z Set the bounding box é   N)r€   r   Úxminr„   ÚyminÚxmaxÚymaxr‰   ÚpxwidthÚpxheightÚmax)r!   r€   s     r"   r‹   zFigure.set_bboxÓ   s³   € àˆŒ	Ý˜œœ¨$¬+Ñ5Øœœ¨$¬+Ñ5Øœœ¨$¬+Ñ5Øœœ¨$¬+Ñ5ñ7ô 7ˆŒ	ð
 œ	œ t¤y¤~Ñ5¸¼ÑCˆŒØœœ¨¬	¬Ñ6¸$¼*ÑDˆŒÝ˜1˜dœlÑ+Ô+ˆŒÝ˜A˜tœ}Ñ-Ô-ˆŒˆˆr#   Úxr/   Úyr   c                óF   — t          || j        z  | | j        z  f¦  «        S )z1 Convert x, y in user coords to svg pixel coords )r   r‰   )r!   rš   r›   s      r"   ÚxformzFigure.xformà   s#   € å�a˜œ
‘l Q B t¤z¡MÐ2Ñ3Ô3Ð3r#   rK   rW   c                ó   — || _         dS )z! Set background color of drawing N)rŒ   )r!   rK   s     r"   ÚbgcolorzFigure.bgcolorä   s   € àˆŒˆˆr#   Úetú
ET.ElementúOptional[BBox]c                óö  — |�ö|| j         v r| j         |         }nÃt          j        }t          xj        dz  c_        || j         |<   |                      |j        |j        ¦  «        \  }}|                      |j        |j        ¦  «        \  }}t          j	        d|› d|dz
  › d|dz
  › d||z
  dz   › d||z
  dz   › d	�¦  «        }| j
                             d
|f¦  «         |                     dd|› d�¦  «         dS dS )z Add clip path to the element Nr   z<defs><clipPath id="clipz"><rect x="z" y="z	" width="r	   z
" height="z" /></clipPath></defs>r   z	clip-pathz	url(#clipú))rˆ   r   Útotal_clipsr�   r“   r”   r•   r–   ÚETÚ
fromstringr‡   ÚappendÚset)	r!   r    r€   ÚclipidÚx0Úy0Úx1Úy1Úclips	            r"   ÚaddclipzFigure.addclipè   sO  € àÐØ�t”zÐ!Ð!Øœ DÔ)��åÔ+�ÝÐ"Ô" aÑ'Ð"Ô"Ø#)�”
˜4Ñ àŸš D¤I¨t¬yÑ9Ô9‘��BØŸš D¤I¨t¬yÑ9Ô9‘��BÝ”}ð &gÀ&ð &gð &gÐUWÐXYÑUYð &gð &gÐ`bÐcdÑ`dð &gð &gØ24°R±%¸±'ð&gð &gØEGÈÁUÈ1ÁWð&gð &gð &gñ hô h�àÔ ×'Ò'¨¨D¨	Ñ2Ô2Ð2Ø�FŠF�;Ð 5¨FÐ 5Ð 5Ð 5Ñ6Ô6Ð6Ð6Ð6ð Ðr#   Úblackú-r	   ÚnoneÚroundNr   rM   r   rO   rU   rQ   r
   rS   r   r¯   Úzorderre   c                ó¬  — t          j        d¦  «        } dj        |                      |d         |d         ¦  «        Ž }t	          |dd…         |dd…         ¦  «        D ]o\  }}t          |¦  «        dk    st          |¦  «        dk    r|dz  }Œ1|                     d¦  «        s|dz  }|                      ||¦  «        \  }}||› d	|› d
�z  }Œp|                     ¦   «         }|                     d|¦  «         |                     dt          ||||||¬¦  «        ¦  «         |  
                    ||	¦  «         | j                             |
|f¦  «         dS )z Plot a path r   zM {},{} r   r   NÚnanúM úL r[   ú ÚdÚstyle©rK   rM   rO   rQ   rS   rU   )r¦   ÚElementÚformatr�   ÚziprW   ÚendswithÚstripr©   rj   r°   r‡   r¨   )r!   rš   r›   rK   rM   rO   rU   rQ   rS   r¯   rµ   r    r»   ÚxxÚyys                  r"   ÚplotzFigure.plotù   sm  € õ
 ŒZ˜ÑÔˆØˆJÔ˜tŸzšz¨!¨A¬$°°!´Ñ5Ô5Ð6ˆÝ˜!˜A˜B˜Bœ%  1 2 2¤Ñ'Ô'ð 	ð 	‰FˆB�Ý�2‰wŒw˜%ÒÐ¥3 r¡7¤7¨eÒ#3Ð#3Ø�T‘	�ØØ—Z’Z Ñ%Ô%ð Ø�T‘	�Ø—Z’Z  BÑ'Ô'‰FˆB�Ø�B��˜���ÑˆAˆAà�GŠG‰IŒIˆØ
�Šˆs�A‰ŒˆØ
�Šˆw� u°¸ÀXØ+4¸4ðAñ Aô Añ 	Bô 	Bð 	Bà�Š�R˜ÑÔÐØÔ×Ò ¨ Ñ-Ô-Ð-Ð-Ð-r#   rl   rk   ÚcenterÚanchoré   rh   ÚfontsizeÚ
fontfamilyrn   rL   ÚrotationÚhalignr   Úvalignr   Úrotation_moder   c                ó>  — |dk    rdS |                       ||¦  «        \  }}|                     ¦   «         dv rd}|
dv r,t          |                     ¦   «         ¦  «        }||dz
  |z  z  }t          r[t
          j        dk    rKt          j        d¦  «        }t	          j	        ||||d|||¬	¦  «        }| 
                    ||||	|
¬
¦  «         nt          j        ||||||	|
|||d¬¦  «        }|                      ||¦  «         | j                             ||f¦  «         dS )z Add text to the figure rY   Nrr   rk   )ÚbaseÚbaseliner   r   Úg)ru   rn   ro   ÚlinespacingrK   rË   rÎ   )rÌ   rÍ   F)rm   ro   rÌ   rÍ   rK   rË   rÎ   Útestmode)r�   rf   ÚlenÚ
splitlinesr'   r,   r   r¦   r¾   rx   Údrawonr   Ú
text_tosvgr°   r‡   r¨   )r!   rh   rš   r›   rK   rÉ   rÊ   rn   rË   rÌ   rÍ   rÎ   r¯   rµ   r«   r¬   ÚnlinesÚtexttagÚztexts                      r"   r   zFigure.text  s_  € ð �Š7ˆ7ØˆFà—’˜A˜qÑ!Ô!‰ˆˆBØ×ÒÑÔÐ!8Ð8Ð8ØˆJàÐ)Ð)Ð)õ ˜Ÿš™œÑ(Ô(ˆFØ�6˜!‘8˜XÑ%Ñ%ˆBåð 	9•v”{ fÒ,Ð,Ý”j ‘o”oˆGÝ”L ¨ZÀ(Ø&.¸AÀUØ*2À-ðQñ Qô QˆEð �LŠL˜ " bØ &¨vð ñ 7ô 7ð 7ð 7õ Ô(¨¨B°¸È(Ø06¸vÈUØ2:È-Ø27ð9ñ 9ô 9ˆGð
 	�Š�W˜dÑ#Ô#Ð#ØÔ×Ò ¨Ð 1Ñ2Ô2Ð2Ð2Ð2r#   TFr   ÚvertsúSequence[XY]Úclosedr*   rV   c                ó°  — |st          j        d¦  «        nt          j        d¦  «        }d}|D ])\  }}|                      ||¦  «        \  }}||› d|› d�z  }Œ*|                     d|¦  «         |                     dt	          |||||	||¬¦  «        ¦  «         |                      ||
¦  «         | j                             ||f¦  «         |r	d	| _        d
S d
S )z Draw a polygon ÚpolylineÚpolygonrY   r[   rº   Úpointsr¼   )rK   rM   rO   rQ   rS   rU   rV   TN)	r¦   r¾   r�   r©   rj   r°   r‡   r¨   rV   )r!   rÜ   rÞ   rK   rU   rO   rM   rV   rQ   rS   r¯   rµ   r    râ   rÃ   rÄ   s                   r"   ÚpolyzFigure.poly7  s  € ð
 ,2ÐL�RŒZ˜
Ñ#Ô#Ð#µr´zÀ)Ñ7LÔ7LˆØˆØð 	$ð 	$‰FˆB�Ø—Z’Z  BÑ'Ô'‰FˆB�Ø˜�m�m˜b�m�m�mÑ#ˆFˆFØ
�Šˆx˜Ñ Ô Ð Ø
�Šˆw� u°¸ÀXØ+4¸4ÀuðNñ Nô Nñ 	Oô 	Oð 	Oà�Š�R˜ÑÔÐØÔ×Ò ¨ Ñ-Ô-Ð-Øð 	ØˆDŒJˆJˆJð	ð 	r#   Úradiusc	           	     óà  —  | j         |Ž \  }	}
|| j        z  }t          j        d¦  «        }|                     dt          |	¦  «        ¦  «         |                     dt          |
¦  «        ¦  «         |                     dt          |¦  «        ¦  «         |                     dt          ||||¬¦  «        ¦  «         |                      ||¦  «         | j         	                    ||f¦  «         dS )z Draw a circle ÚcircleÚcxÚcyÚrr¼   )rK   rO   rM   rU   N)
r�   r‰   r¦   r¾   r©   rW   rj   r°   r‡   r¨   )r!   rÆ   rä   rK   rU   rO   rM   r¯   rµ   rš   r›   r    s               r"   ræ   zFigure.circleI  sÙ   € ð ˆtŒz˜6Ð"‰ˆˆ1Ø˜$œ*Ñ$ˆÝŒZ˜Ñ!Ô!ˆØ
�Šˆt•S˜‘V”VÑÔÐØ
�Šˆt•S˜‘V”VÑÔÐØ
�Šˆs•C˜‘K”KÑ Ô Ð Ø
�Šˆw� u°¸ÀÐFÑFÔFÑGÔGÐGØ�Š�R˜ÑÔÐØÔ×Ò ¨ Ñ-Ô-Ð-Ð-Ð-r#   ç333333Ã?ç      Ð?ÚxyÚthetaÚ
arrowwidthÚarrowlengthc	           
     ó(  —  | j         |Ž \  }	}
|dz  t          j        t          j        |¦  «        ¦  «        z  | j        z  }|dz  t          j        t          j        |¦  «        ¦  «        z  | j        z  }|| j        z  }|| j        z  }t          |	|
f¦  «        }t          |	|z
  |
|z   f¦  «        }t          j        |dz  |dz  z   ¦  «        }t          j        t          j	        ||¦  «        ¦  «         }t          ||z
  |dz  f¦  «         
                    |¦  «        |z   }t          ||z
  | dz  f¦  «         
                    |¦  «        |z   }t          |d         |dz  t          j        t          j        |¦  «        ¦  «        z  z
  |d         |dz  t          j        t          j        |¦  «        ¦  «        z  z
  f¦  «        }t          j        d¦  «        }d|d         › d|d         › d�}|d|d         › d|d         › d�z  }|d|d         › d|d         › d�z  }|                     d	|¦  «         |                     d
t          |ddd|¬¦  «        ¦  «         |                      ||¦  «         | j                             ||f¦  «         dS )z Draw an arrowhead r	   r   r   r   r¸   rº   r¹   z Zr»   r¼   ÚbuttÚmiter)rK   rO   rQ   rS   rU   N)r�   ÚmathÚcosÚradiansr‰   Úsinr   ÚsqrtÚdegreesÚatan2Úrotater¦   r¾   r©   rj   r°   r‡   r¨   )r!   rì   rí   rî   rï   rK   rO   r¯   rµ   rš   r›   ÚdxÚdyÚheadÚtailÚfullenÚfin1Úfin2Úet1r»   s                       r"   ÚarrowzFigure.arrowW  s§  € ð ˆtŒz˜2ˆ‰ˆˆ1Ø˜‰]�TœX¥d¤l°5Ñ&9Ô&9Ñ:Ô:Ñ:¸T¼ZÑGˆØ˜‰]�TœX¥d¤l°5Ñ&9Ô&9Ñ:Ô:Ñ:¸T¼ZÑGˆØ ¤
Ñ*ˆ
Ø! $¤*Ñ,ˆõ �a˜�V‰}Œ}ˆÝ�a˜‘d˜A˜b™D�\Ñ"Ô"ˆÝ”˜2˜q™5 2 q¡5™=Ñ)Ô)ˆÝ”�dœj¨¨RÑ0Ô0Ñ1Ô1Ð1ˆå�f˜{Ñ*¨J°q©LÐ9Ñ:Ô:×AÒAÀ%ÑHÔHÈ4ÑOˆÝ�f˜{Ñ*¨Z¨K¸©MÐ:Ñ;Ô;×BÒBÀ5ÑIÔIÈDÑPˆõ �d˜1”g  Q¡­¬µ$´,¸uÑ2EÔ2EÑ)FÔ)FÑ FÑFØ˜1”g  Q¡­¬µ$´,¸uÑ2EÔ2EÑ)FÔ)FÑ FÑFðHñ Iô Iˆõ Œj˜Ñ Ô ˆØ%��a”Ð%Ð%˜4 œ7Ð%Ð%Ð%ˆØ	Ð&�$�q”'Ð&Ð&˜D œGÐ&Ð&Ð&Ñ&ˆØ	Ð'�$�q”'Ð'Ð'˜D œGÐ'Ð'Ð'Ñ'ˆØ�Š��Q‰ŒˆØ�Š��¨°!¸fØ,3¸%ðAñ Aô Añ 	Bô 	Bð 	Bà�Š�S˜$ÑÔÐØÔ×Ò ¨ Ñ.Ô.Ð.Ð.Ð.r#   ÚpúSequence[Point]r  c           
     óV  ‡ — t          |¦  «        }|��Vd|v r§t          j        |d         j        |d         j        z
  |d         j        |d         j        z
  ¦  «        }t          |d         j        t          j        |¦  «        |z  dz  z
  |d         j        t          j        |¦  «        |z  dz  z
  f¦  «        |d<   d|v r§t          j        |d         j        |d         j        z
  |d         j        |d         j        z
  ¦  «        }t          |d         j        t          j        |¦  «        |z  dz  z
  |d         j        t          j        |¦  «        |z  dz  z
  f¦  «        |d<   ˆ fd	„|D ¦   «         }t          |¦  «        d
k    rdnd}t          j
        d¦  «        }d|d         d         › d|d         d         › d|› �}|dd…         D ]}|d|d         › d|d         › �z  }Œ|                     d|¦  «         |                     dt          ||||¬¦  «        ¦  «         ‰                      ||
¦  «         ‰ j                             ||f¦  «         |��Kd|v rf|d         |d         z
  }t          j        t          j        |j        |j        ¦  «        ¦  «        }‰                      |d         ||d||
||	¬¦  «         n:|                     d¦  «        r%‰                      |d         |	dz  ||d|
|¬¦  «         d|v rg|d         |d         z
  }t          j        t          j        |j        |j        ¦  «        ¦  «        }‰                      |d         ||d||
||	¬¦  «         dS |                     d¦  «        r)‰                      |d         |	dz  ||d|
|¬¦  «         dS dS dS )z" Draw a cubic or quadratic bezier Nú<r   r   r	   ú>éÿÿÿÿéþÿÿÿc                ó$   •— g | ]} ‰j         |Ž ‘ŒS r<   )r�   )Ú.0Úp0r!   s     €r"   ú
<listcomp>z!Figure.bezier.<locals>.<listcomp>‰  s!   ø€ Ð5Ð5Ð5 r�:�4”:˜r�?Ð5Ð5Ð5r#   é   ÚCÚQr   r¸   rº   r»   r¼   )rK   rM   rO   rQ   )rK   rO   rµ   r¯   rï   rî   Úo)rä   rK   rU   rO   r¯   rµ   )Úlistró   rù   r›   rš   r   rô   rö   rÕ   r¦   r¾   r©   rj   r°   r‡   r¨   rø   r  Ú
startswithræ   rÁ   )r!   r  rK   rO   rM   rQ   rµ   r  rï   rî   r¯   ÚlpointsÚth1Úth2Úorderr    r   r  Údeltarí   s   `                   r"   ÚbezierzFigure.bezierx  sî  ø€ õ �q‘'”'ˆØÑØ�eˆ|ˆ|Ý”j  1¤¤¨!¨A¬$¬&¡°!°A´$´&¸1¸Q¼4¼6±/ÑBÔB�Ý" A a¤D¤F­T¬X°c©]¬]¸[Ñ-HÈÑ-JÑ$JØ$% a¤D¤F­T¬X°c©]¬]¸[Ñ-HÈÑ-JÑ$Jð$Lñ Mô M�˜‘
à�eˆ|ˆ|Ý”j  2¤¤¨1¨R¬5¬7Ñ!2°A°b´E´G¸aÀ¼e¼gÑ4EÑFÔF�Ý# Q r¤U¤W­t¬x¸©}¬}¸{Ñ/JÈ1Ñ/LÑ%LØ$% b¤E¤G­d¬h°s©m¬m¸kÑ.IÈ!Ñ.KÑ$Kð%Mñ Nô N�˜‘ð 6Ð5Ð5Ð5¨WÐ5Ñ5Ô5ˆÝ˜1‘v”v ’{�{��¨ˆåŒZ˜ÑÔˆØ;�G˜A”J˜q”MÐ;Ð; G¨A¤J¨q¤MÐ;Ð;°EÐ;Ð;ˆØ˜!˜"˜"”+ð 	(ð 	(ˆBØÐ'˜˜1œÐ'Ð'  1¤Ð'Ð'Ñ'ˆDˆDØ
�Šˆs�DÑÔÐØ
�Šˆw� u°¸ÀXÐNÑNÔNÑOÔOÐOØ�Š�R˜ÑÔÐØÔ×Ò ¨ Ñ-Ô-Ð-àÑà�eˆ|ˆ|Ø˜!œ˜q œt™�Ýœ¥T¤Z°´¸¼Ñ%AÔ%AÑBÔB�Ø—
’
˜1˜Qœ4 ¨e¸À&Ø $°+È*ð ñ Vô Vð Vð Và×!Ò! #Ñ&Ô&ð 6Ø—’˜A˜aœD¨°A©¸UÈÐSTØ!%¨fð ñ 6ô 6ð 6à�eˆ|ˆ|Ø˜"œ  "¤™�Ýœ¥T¤Z°´¸¼Ñ%AÔ%AÑBÔB�Ø—
’
˜1˜Rœ5 %¨u¸À6Ø $°+È*ð ñ Vô Vð Vð Vð Và—’ Ñ$Ô$ð 6Ø—’˜A˜bœE¨*°Q©,¸eÈ%ÐTUØ!%¨fð ñ 6ô 6ð 6ð 6ð 6ð! Ðð6ð 6r#   r   úSequence[XY | str]c
                ó  — g }
|D ]f}t          |t          ¦  «        r|
                     |¦  «         Œ- | j        |Ž \  }}|
                     |› ¦  «         |
                     |› ¦  «         Œgt	          j        d¦  «        }|                     dd                     |
¦  «        ¦  «         |                     dt          ||||||¬¦  «        ¦  «         |  	                    ||	¦  «         | j
                             ||f¦  «         d S )Nr   r»   rº   r¼   r½   )rc   rW   r¨   r�   r¦   r¾   r©   Újoinrj   r°   r‡   )r!   r   rK   rO   rM   rU   rQ   rS   rµ   r¯   ÚdstrsÚpointrš   r›   r    s                  r"   r   zFigure.path¨  s  € ð ˆØð 	%ð 	%ˆEÝ˜%¥Ñ%Ô%ð %Ø—’˜UÑ#Ô#Ð#Ð#à!�t”z 5Ð)‘��1Ø—’ ˜VÑ$Ô$Ð$Ø—’ ˜VÑ$Ô$Ð$Ð$ÝŒZ˜ÑÔˆØ
�Šˆs�C—H’H˜U‘O”OÑ$Ô$Ð$Ø
�Šˆw� u°¸ÀXØ+4¸4ðAñ Aô Añ 	Bô 	Bð 	Bà�Š�R˜ÑÔÐØÔ×Ò ¨ Ñ-Ô-Ð-Ð-Ð-r#   éZ   ÚwidthÚheightÚtheta1Útheta2Úanglec                ó  —  | j         |Ž \  }}|| j        z  || j        z  }}| }| }| }t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }t          j        |t          j        |¦  «        z  |t          j        |¦  «        z  ¦  «        }t          j        |t          j        |¦  «        z  |t          j        |¦  «        z  ¦  «        }||k     r|dt          j        z  z  }||k     °||dz  t          j        |¦  «        z  t          j        |¦  «        z  z   |dz  t          j        |¦  «        z  t          j        |¦  «        z  z
  }||dz  t          j        |¦  «        z  t          j        |¦  «        z  z   |dz  t          j        |¦  «        z  t          j        |¦  «        z  z   }||dz  t          j        |¦  «        z  t          j        |¦  «        z  z   |dz  t          j        |¦  «        z  t          j        |¦  «        z  z
  }||dz  t          j        |¦  «        z  t          j        |¦  «        z  z   |dz  t          j        |¦  «        z  t          j        |¦  «        z  z   }t          |d¦  «        t          |d¦  «        }}t          |d¦  «        t          |d¦  «        }}||z
  ||z
  }}t          |¦  «        dk     �r:t          |¦  «        dk     �r&t          j        d¦  «        }|                     dt          |¦  «        ¦  «         |                     dt          |¦  «        ¦  «         |                     dt          |dz  ¦  «        ¦  «         |                     dt          |dz  ¦  «        ¦  «         |dk    r |                     d	d
|› d|› d|› d�¦  «         |                     dt          ||	||
¬¦  «        ¦  «         |                      ||¦  «         | j                             ||f¦  «         nÌt          ||z
  ¦  «        t          j        k    rdnd}t          j        d¦  «        }d|› d|› �}|d|dz  › d|dz  › d|› d|› d|› d|› �z  }|                     d|¦  «         |                     dt          ||	||
¬¦  «        ¦  «         |                      ||¦  «         | j                             ||f¦  «         |��|| j        z  || j        z  }}| }t          j        |¦  «         }t          j        |¦  «         }d}d}t          j        t          j        |¦  «        ¦  «        t          j        t          j        |¦  «        ¦  «        }}t          j        t          j        ||z  |z  |¦  «        ¦  «        } t          j        t          j        |¦  «        ¦  «        t          j        t          j        |¦  «        ¦  «        }}t          j        t          j        ||z  |z  |¦  «        ¦  «        }!|dv sd|v �rft          j        t          j        | dz   ¦  «        ¦  «        |z  }t          j        t          j        | dz   ¦  «        ¦  «        |z  }t'          |d         |dz  t          j        t          j        | ¦  «        ¦  «        z  z   |d         |dz  t          j        t          j        | ¦  «        ¦  «        z  z   f¦  «        }"t'          |"¦  «                             ||¦  «        }"t'          ||f¦  «                             |¦  «        }#t          j        t          j        |#j        |#j        ¦  «        ¦  «        }$|                      |"|#z   |$|||d|¬¦  «         |dv sd|v �rlt          j        t          j        |!dz   ¦  «        ¦  «         |z  }t          j        t          j        |!dz   ¦  «        ¦  «         |z  }t'          |d         |dz  t          j        t          j        |!¦  «        ¦  «        z  z   |d         |dz  t          j        t          j        |!¦  «        ¦  «        z  z   f¦  «        }"t'          |"¦  «                             ||¦  «        }"t'          ||f¦  «                             |¦  «        }#t          j        t          j        |#j        |#j        ¦  «        ¦  «        }$|                      |"|#z   |$|||d|¬¦  «         dS dS dS )z1 Draw an arc or ellipse, with optional arrowhead r	   r…   Úellipserç   rè   ÚrxÚryr   Ú	transformúrotate(rº   r¤   r¼   )rK   rM   rO   rU   z1 1z0 1r   r¸   z a r»   Nrë   rê   )ÚccwÚendÚbothr  r   r   )rî   rï   rK   rO   rµ   )ÚcwÚstartr.  r  )r�   r‰   ró   rõ   rù   rö   rô   Úpir´   Úabsr¦   r¾   r©   rW   rj   r°   r‡   r¨   rø   r   rú   r›   rš   r  )%r!   rÆ   r!  r"  r#  r$  r%  rK   rO   rM   rU   rµ   r  r¯   ÚcenterxÚcenteryÚangleradÚt1Út2ÚstartxÚstartyÚendxÚendyrû   rü   r    Úflagsr»   rï   rî   rš   r›   r  r  rì   Údarrowrí   s%                                        r"   Úarcz
Figure.arc¿  sT  € ð &˜4œ: vÐ.Ñˆ�Ø˜dœjÑ(¨&°´Ñ*;ˆvˆØ�ˆØ�ˆØ�ˆÝ”< Ñ&Ô&ˆå”˜fÑ%Ô%ˆÝ”˜fÑ%Ô%ˆÝŒZ˜�dœh vÑ.Ô.Ñ.°µt´xÀÑ7GÔ7GÑ0GÑHÔHˆÝŒZ˜�dœh vÑ.Ô.Ñ.°µt´xÀÑ7GÔ7GÑ0GÑHÔHˆØ�2ŠgˆgØ�!•D”G‘)‰OˆBð �2Šgˆgð ˜E !™G¥d¤h¨r¡l¤lÑ2µ4´8¸HÑ3EÔ3EÑEÑEØ˜1‘H�tœx¨™|œ|Ñ+­D¬H°XÑ,>Ô,>Ñ>ñ?ˆà˜E !™G¥d¤h¨r¡l¤lÑ2µ4´8¸HÑ3EÔ3EÑEÑEØ˜1‘H�tœx¨™|œ|Ñ+­D¬H°XÑ,>Ô,>Ñ>ñ?ˆà˜% ™'¥D¤H¨R¡L¤LÑ0µ´¸(Ñ1CÔ1CÑCÑCØ˜‘(�TœX b™\œ\Ñ)­$¬(°8Ñ*<Ô*<Ñ<ñ=ˆà˜% ™'¥D¤H¨R¡L¤LÑ0µ´¸(Ñ1CÔ1CÑCÑCØ˜‘(�TœX b™\œ\Ñ)­$¬(°8Ñ*<Ô*<Ñ<ñ=ˆõ ˜v qÑ)Ô)­5°¸Ñ+;Ô+;�ˆÝ˜4 ‘^”^¥U¨4°¡^¤^ˆdˆØ�f‘˜d 6™kˆBˆåˆr‰7Œ7�RŠ<‰<�C ™GœG bšL™Lõ ”˜IÑ&Ô&ˆBØ�FŠF�4�˜W™œÑ&Ô&Ð&Ø�FŠF�4�˜W™œÑ&Ô&Ð&Ø�FŠF�4�˜U 1™W™œÑ&Ô&Ð&Ø�FŠF�4�˜V A™X™œÑ'Ô'Ð'Ø˜ŠzˆzØ—’�{Ð$J¨eÐ$JÐ$J°gÐ$JÐ$JÀÐ$JÐ$JÐ$JÑKÔKÐKØ�FŠF�7�H¨5°R¸BÀTÐJÑJÔJÑKÔKÐKØ�LŠL˜˜TÑ"Ô"Ð"ØÔ×#Ò# V¨R LÑ1Ô1Ð1Ð1õ !  B¡™ZœZ­4¬7Ò2Ð2�E�E¸ˆEÝ”˜FÑ#Ô#ˆBØ&�VÐ&Ð&˜fÐ&Ð&ˆAØÐE�u˜Q‘wÐEÐE ¨¡ÐEÐE¨EÐEÐE°EÐEÐE¸BÐEÐEÀÐEÐEÑEˆAØ�FŠF�3˜‰NŒNˆNØ�FŠF�7�H¨5°R¸BÀTÐJÑJÔJÑKÔKÐKØ�LŠL˜˜TÑ"Ô"Ð"ØÔ×#Ò# V¨R LÑ1Ô1Ð1àÑð " $¤*Ñ,¨f°T´ZÑ.?�6ˆEØ�FˆEÝ”l 6Ñ*Ô*Ð*ˆFÝ”l 6Ñ*Ô*Ð*ˆFàˆKØˆJå”8�DœL¨Ñ0Ô0Ñ1Ô1µ4´8½D¼LÈÑ<PÔ<PÑ3QÔ3QˆqˆAÝ”,�tœz¨5°©<¸Ñ*:¸AÑ>Ô>Ñ?Ô?ˆCÝ”8�DœL¨Ñ0Ô0Ñ1Ô1µ4´8½D¼LÈÑ<PÔ<PÑ3QÔ3QˆqˆAÝ”,�tœz¨5°©<¸Ñ*:¸AÑ>Ô>Ñ?Ô?ˆCØÐ.Ð.Ð.°#¸°,±,Ý”X�dœl¨3¨r©6Ñ2Ô2Ñ3Ô3°kÑA�Ý”X�dœl¨3¨r©6Ñ2Ô2Ñ3Ô3°kÑA�Ý˜F 1œI¨¨a©µ´½¼ÀcÑ9JÔ9JÑ0KÔ0KÑ(KÑKØ" 1œI¨¨q©µ´½$¼,ÀsÑ:KÔ:KÑ1LÔ1LÑ(LÑLðNñ Oô O�å˜2‘Y”Y×%Ò% e¨VÑ4Ô4�Ý  B˜x™œ×/Ò/°Ñ6Ô6�Ýœ¥T¤Z°´¸&¼(Ñ%CÔ%CÑDÔD�Ø—
’
˜2˜f™9 e¸
Ø'2¸%ÀAÈfð ñ Vô Vð Vð Ð/Ð/Ð/°3¸%°<±<Ý”h�tœ|¨C°©FÑ3Ô3Ñ4Ô4Ð4°{ÑB�Ý”h�tœ|¨C°©FÑ3Ô3Ñ4Ô4Ð4°{ÑB�Ý˜F 1œI¨¨a©µ´½¼ÀcÑ9JÔ9JÑ0KÔ0KÑ(KÑKØ" 1œI¨¨q©µ´½$¼,ÀsÑ:KÔ:KÑ1LÔ1LÑ(LÑLðNñ Oô O�õ ˜2‘Y”Y×%Ò% e¨VÑ4Ô4�Ý  B˜x™œ×/Ò/°Ñ6Ô6�Ýœ¥T¤Z°´¸&¼(Ñ%CÔ%CÑDÔD�Ø—
’
˜2˜f™9 e¸
Ø'2¸%ÀAÈfð ñ Vô Vð Vð Vð VðI Ðð6 4@°<r#   Úimageústr | BinaryIOrú   Úimgfmtc           
     óÆ  — t          |t          ¦  «        rnt          |d¦  «        5 }|                     ¦   «         }	|€-t          j                             |¦  «        d         dd…         n|}ddd¦  «         n# 1 swxY w Y   n)|                     d¦  «         |                     ¦   «         }	|€t          d¦  «        ‚|| j	        z  }|| j	        z  } | j
        |Ž \  }
}||z  }|dk    r°t          j        d¦  «        }t          j        |	                     ¦   «         ¦  «        }t          |                     dd	¦  «        ¦  «        }||z  }d
|
› d|› d|› d�}|rd| › d|
› d||z   › d�|z   }|                     d|¦  «         |                     |¦  «         �n+t'          j        |	¦  «                             ¦   «         }t          j        d¦  «        }|                     dd|› d|› �¦  «         | j                             ||f¦  «         d| _        |                     dt          |
¦  «        ¦  «         |                     dt          |¦  «        ¦  «         |                     dt          |¦  «        ¦  «         |                     dt          |¦  «        ¦  «         |r$|                     dd| › d|
› d||z   › d�¦  «         | j                             ||f¦  «         dS )aÖ   Add an image to the figure
        
            Args:
                image: File name or open file pointer
                xy: Position for the image
                width: Image width in data coordinates
                height: Image height in data coordinates
                rotate: Image rotation in degrees
                zorder: Z-Order for image
                imgfmt: file format of image. Required if image is
                    open file pointer.
        ÚrbNr   r   zCMust specify image format when using file pointer with SegmentImager†   rÒ   r!  Ú0z
translate(z, z) scale(r¤   r+  rº   z) r*  r?  z
xlink:hrefzdata:image/z;base64,Trš   r›   r"  )rc   rW   ÚopenÚreadrv   r   ÚsplitextÚseekr(   r‰   r�   r¦   r¾   r§   Údecoder   rg   r©   r¨   Úbase64Úencodebytesr‡   r�   )r!   r?  rì   r!  r"  rú   rµ   rA  ÚfÚimgdatr«   r¬   r    ÚimageelmÚimgwidthrh   r�   Ú	image_b64s                     r"   r?  zFigure.image   s0  € õ �e�SÑ!Ô!ð 	"Ý�e˜TÑ"Ô"ð V aØŸš™œ�Ø;A¸>�œ×)Ò)¨%Ñ0Ô0°Ô3°A°B°BÔ7Ð7Èv�ðVð Vð Vñ Vô Vð Vð Vð Vð Vð Vð Vøøøð Vð Vð Vð Vøð
 �JŠJ�q‰MŒMˆMØ—Z’Z‘\”\ˆFàˆ>ÝÐbÑcÔcÐcà˜œ
Ñ"ˆØ˜$œ*Ñ$ˆØ�”˜R�‰ˆˆBØ
ˆf‰ˆà�UŠ?ˆ?Ý”˜C‘”ˆBÝ”} V§]¢]¡_¤_Ñ5Ô5ˆHÝ'¨¯ª°W¸cÑ(BÔ(BÑCÔCˆHØ˜Ñ ˆAØ7 Ð7Ð7 rÐ7Ð7°1Ð7Ð7Ð7ˆEØð GØ> 6 'Ð>Ð>¨BÐ>Ð>°°F±Ð>Ð>Ð>ÀÑF�Ø�FŠF�; Ñ&Ô&Ð&Ø�IŠI�hÑÔÐÑåÔ*¨6Ñ2Ô2×9Ò9Ñ;Ô;ˆIÝ”˜GÑ$Ô$ˆBØ�FŠF�<Ð!J¨vÐ!JÐ!J¸yÐ!JÐ!JÑKÔKÐKØÔ×#Ò# V¨R LÑ1Ô1Ð1Ø#ˆDÔà�FŠF�3�˜B™œÑ Ô Ð Ø�FŠF�3�˜B™œÑ Ô Ð Ø�FŠF�7�C ™JœJÑ'Ô'Ð'Ø�FŠF�8�S ™[œ[Ñ)Ô)Ð)Øð KØ—’�{Ð$I¨v¨gÐ$IÐ$I¸Ð$IÐ$I¸RÀ¹YÐ$IÐ$IÐ$IÑJÔJÐJØÔ×Ò ¨ Ñ-Ô-Ð-Ð-Ð-s   ¦AA8Á8A<Á?A<Úfnamec                ój  — |                       ¦   «                              ¦   «         }t          j                             |¦  «        d         }|                     ¦   «         dk    rt          d¦  «        ‚t          |dd¬¦  «        5 }|                     |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z Save the figure to a file r   ú.svgz4SVG backend only supports saving SVG format figures.Úwúutf-8©ÚencodingN)	ÚgetimagerI  rv   r   rG  rf   r(   rE  Úwrite)r!   rQ  r�   r†   ÚextrL  s         r"   ÚsavezFigure.saveX  sÜ   € à�mŠm‰oŒo×$Ò$Ñ&Ô&ˆÝŒg×Ò˜uÑ%Ô% aÔ(ˆØ�9Š9‰;Œ;˜&Ò Ð ÝÐSÑTÔTÐTÝ�%˜ wÐ/Ñ/Ô/ð 	°1Ø�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÂB(Â(B,Â/B,c           
     óB  — | j         j        | j        z  }| j         j         | j        z  }| j        sët          j        d¦  «        }|                     dd¦  «         | j        r|                     dd¦  «         |                     dd¦  «         |                     d| j	        › d	�¦  «         |                     d
| j
        › d	�¦  «         |                     d|› d|› d| j
        › d| j	        › �¦  «         | j        r|                     dd| j        › d�¦  «         n| j        }| j        r,|                     t          j        t          ¦  «        ¦  «         | j        �r†t          j        |d¦  «        }|                     dt%          | j         j        | j        z  ¦  «        ¦  «         |                     dt%          | j         j         | j        z  ¦  «        ¦  «         |                     d
t%          | j         j        | j        z  | j         j        | j        z  z
  ¦  «        ¦  «         |                     dt%          | j         j         | j        z  | j         j        | j        z  z   ¦  «        ¦  «         |                     dd¦  «         t          j        |d¦  «        }|                     dt%          | j         j        | j        z   | j        z  ¦  «        ¦  «         |                     dt%          | j         j        | j        z
   | j        z  ¦  «        ¦  «         |                     d
t%          | j         j        | j        z
  | j        z  | j         j        | j        z   | j        z  z
  ¦  «        ¦  «         |                     dt%          | j         j        | j        z    | j        z  | j         j        | j        z
  | j        z  z   ¦  «        ¦  «         |                     dd¦  «         d„ t-          | j        d„ ¬¦  «        D ¦   «         }|D ]}|                     |¦  «         Œ|S )z Get the image as SVG XML Tree r†   Úxmlnszhttp://www.w3.org/2000/svgzxmlns:xlinkzhttp://www.w3.org/1999/xlinkzxml:langÚenr"  Úptr!  ÚviewBoxrº   r¼   zbackground-color:r\   Úrectrš   r›   z*fill:none; stroke-width:0.5; stroke:black;z&fill:none; stroke-width:1; stroke:red;c                ó   — g | ]
}|d          ‘ŒS )r   r<   )r  Úks     r"   r  z!Figure.getsvg.<locals>.<listcomp>†  s   € ÐOÐOÐO˜Q�A�a”DÐOÐOÐOr#   c                ó   — | d         S )Nr   r<   )rš   s    r"   ú<lambda>zFigure.getsvg.<locals>.<lambda>†  s
   € ÈÈ1Ì€ r#   )Úkey)r€   r“   r‰   r–   rŽ   r¦   r¾   r©   r�   r˜   r—   rŒ   rV   r¨   r§   Úhatchpatternr‚   Ú
SubElementrW   r•   r”   r„   Úsortedr‡   )r!   r«   r¬   r†   ra  ÚelementsÚelms          r"   ÚgetsvgzFigure.getsvga  s®  € àŒYŒ^˜dœjÑ(ˆØŒiŒnˆ_˜tœzÑ)ˆØŒ~ð 	!Ý”*˜UÑ#Ô#ˆCØ�GŠG�GÐ9Ñ:Ô:Ð:ØÔð GØ—’˜Ð'EÑFÔFÐFØ�GŠG�J Ñ%Ô%Ð%Ø�GŠG�H ¤Ð2Ð2Ð2Ñ3Ô3Ð3Ø�GŠG�G ¤Ð0Ð0Ð0Ñ1Ô1Ð1Ø�GŠG�I "ÐJÐJ rÐJÐJ¨D¬LÐJÐJ¸4¼=ÐJÐJÑKÔKÐKØŒ}ð GØ—’˜Ð!E°T´]Ð!EÐ!EÐ!EÑFÔFÐFøà”.ˆCàŒ:ð 	4Ø�JŠJ•r”}¥\Ñ2Ô2Ñ3Ô3Ð3àŒ=ñ 	HÝ”=  fÑ-Ô-ˆDØ�HŠH�S�#˜dœiœn¨T¬ZÑ7Ñ8Ô8Ñ9Ô9Ð9Ø�HŠH�S�#˜tœyœ~˜o¨d¬jÑ8Ñ9Ô9Ñ:Ô:Ð:Ø�HŠH�W�c $¤)¤.°´Ñ";¸d¼i¼nÈTÌZÑ>WÑ"WÑXÔXÑYÔYÐYØ�HŠH�X�s D¤I¤N ?°4´:Ñ#=ÀÄ	ÄÈtÌzÑ@YÑ#YÑZÔZÑ[Ô[Ð[Ø�HŠH�WÐJÑKÔKÐKå”=  fÑ-Ô-ˆDØ�HŠH�S�#˜tœyœ~¨d¬kÑ9¸4¼:ÑEÑFÔFÑGÔGÐGØ�HŠH�S�# ¤	¤¨t¬{Ñ :Ð;¸D¼JÑFÑGÔGÑHÔHÐHØ�HŠH�W�c 4¤9¤>°$´+Ñ#=¸t¼zÑ"IÈTÌYÌ^Ð\`Ô\gÑMgÐimÔisÑLsÑ"sÑtÔtÑuÔuÐuØ�HŠH�X�s T¤Y¤^°D´KÑ%?Ð#@ÀÄÑ#KÈtÌyÌ~Ð^bÔ^iÑOiÐkoÔkuÑNuÑ#uÑvÔvÑwÔwÐwØ�HŠH�WÐFÑGÔGÐGð PÐO¥&¨Ô)9¸~¸~Ð"NÑ"NÔ"NÐOÑOÔOˆØð 	ð 	ˆCØ�JŠJ�s‰OŒOˆOˆOØˆ
r#   r†   rZ  Úbytesc                ó¤   — |                      ¦   «         dk    rt          d¦  «        ‚|                      ¦   «         }t          j        |d¬¦  «        S )z Get image as SVG bytes r†   z8SVG backend only supports generating SVG format figures.rU  rV  )rf   r(   rl  r¦   Útostring)r!   rZ  r†   s      r"   rX  zFigure.getimage‹  sF   € à�9Š9‰;Œ;˜%ÒÐÝÐWÑXÔXÐXà�kŠk‰mŒmˆÝŒ{˜3¨Ð1Ñ1Ô1Ð1r#   c                ó   — g | _         dS )z Remove everything N)r‡   r    s    r"   ÚclearzFigure.clear“  s   € àˆÔÐÐr#   c                óN   — |                       ¦   «                              ¦   «         S )z  SVG representation for Jupyter ©rX  rI  r    s    r"   Ú
_repr_svg_zFigure._repr_svg_—  s   € à�}Š}‰Œ×%Ò%Ñ'Ô'Ð'r#   c                óN   — |                       ¦   «                              ¦   «         S r4   rs  r    s    r"   Ú__repr__zFigure.__repr__›  s   € Ø�}Š}‰Œ×%Ò%Ñ'Ô'Ð'r#   c                óæ  — t           sét          j        d¬¦  «        \  }}t          j        |d¦  «        5 }|                     |                      ¦   «                              ¦   «         ¦  «         ddd¦  «         n# 1 swxY w Y   t          j	        dk    rt          j
        |¦  «         dS t          j	        dk    rdnd}	 t          j        ||g¦  «         dS # t          t          f$ r Y dS w xY wdS )	z; Show drawing in default program, if not inline in Jupyter rS  )ÚsuffixrT  NÚwin32ÚdarwinrE  zxdg-open)ÚinlineÚtempfileÚmkstemprv   ÚfdopenrY  rX  rI  ÚsysÚplatformÚ	startfileÚ
subprocessÚcallÚOSErrorÚFileNotFoundError)r!   Úhandler   rL  Úcmds        r"   ÚshowzFigure.showž  s6  € åð 	Ý#Ô+°6Ð:Ñ:Ô:‰LˆF�DÝ”˜6 3Ñ'Ô'ð 2¨1Ø—’˜Ÿš™œ×.Ò.Ñ0Ô0Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2õ Œ|˜wÒ&Ð&Ý”˜TÑ"Ô"Ð"Ð"Ð"å #¤°Ò 8Ð 8�f�f¸j�ðÝ”O S¨$ KÑ0Ô0Ð0Ð0Ð0øÝÕ!2Ð3ð ð ð Ø�D�Dðøøøð	ð 	s#   µ:A;Á;A?ÂA?ÃC ÃC.Ã-C.)r€   r   )r€   r   r   r%   )rš   r/   r›   r/   r   r   )rK   rW   r   r%   )r    r¡   r€   r¢   )r±   r²   r	   r³   r´   r´   Nr	   )rš   r   r›   r   rK   rW   rM   r   rO   r/   rU   rW   rQ   r
   rS   r   r¯   r¢   rµ   re   r   r%   )
r±   rl   rk   Nr   rÆ   rÆ   rÇ   NrÈ   )rh   rW   rš   r/   r›   r/   rK   rW   rÉ   r/   rÊ   rW   rn   rL   rË   r/   rÌ   r   rÍ   r   rÎ   r   r¯   r¢   rµ   re   r   r%   )
Tr±   r³   r	   r²   Fr´   r´   Nr   )rÜ   rÝ   rÞ   r*   rK   rW   rU   rW   rO   r/   rM   r   rV   r*   rQ   r
   rS   r   r¯   r¢   rµ   re   r   r%   )r±   r³   r	   r²   Nr   )rÆ   r   rä   r/   rK   rW   rU   rW   rO   r/   rM   r   r¯   r¢   rµ   re   r   r%   )rê   rë   r±   r	   Nr   )rì   r   rí   r/   rî   r/   rï   r/   rK   rW   rO   r/   r¯   r¢   rµ   re   r   r%   )	r±   r	   r²   r´   r   Nrë   rê   N)r  r  rK   rW   rO   r/   rM   r   rQ   r
   rµ   re   r  rL   r¯   r¢   r   r%   )r±   r	   r²   Nr´   r´   r   N)r   r  rK   rW   rO   r/   rM   r   rU   rL   rQ   r
   rS   r   rµ   re   r¯   r¢   r   r%   )
r   r   r   r±   r	   r²   Nr   NN)rÆ   r   r!  r/   r"  r/   r#  r/   r$  r/   r%  r/   rK   rW   rO   r/   rM   r   rU   rL   rµ   re   r  rL   r¯   r¢   r   r%   )r   r   N)r?  r@  rì   r   r!  r/   r"  r/   rú   r/   rµ   re   rA  rL   )rQ  rW   r   r%   )r   r¡   )r†   )rZ  rW   r   rm  )r   r%   )r5   r6   r7   r8   r¥   r�   r‹   r�   rŸ   r°   rÅ   r   rã   ræ   r  r  r   r>  r?  r[  rl  rX  rq  rt  rv  rˆ  r<   r#   r"   r   r   »   s‡  € € € € € ðð ð €Kð
+ð 
+ð 
+ð 
+ð.ð .ð .ð .ð4ð 4ð 4ð 4ðð ð ð ð7ð 7ð 7ð 7ð$ EFØ6=ØXYð.ð .ð .ð .ð .ð. =DØ5;Ø'+Ø Ø&Ø&Ø+3Ø89ð%3ð %3ð %3ð %3ð %3ðN 8<ØCDØLSØXYðð ð ð ð ð$ >EØBEØ:;ð.ð .ð .ð .ð .ð =@Ø^_ð/ð /ð /ð /ð /ðB 7>Ø_`Ødhð.6ð .6ð .6ð .6ð .6ðb BEØ"&Ø!(Ø#*ØØ#'ð.ð .ð .ð .ð .ð0 CDØADØ"&ØØ@Dð_Vð _Vð _Vð _Vð _VðD KOð6.ð 6.ð 6.ð 6.ð 6.ðpð ð ð ð(ð (ð (ð (ðT2ð 2ð 2ð 2ð 2ðð ð ð ð(ð (ð (ð(ð (ð (ðð ð ð ð ð r#   r   )T)r=   r   r-   r*   r   r%   )NNNNNNF)rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rL   rV   r*   r   rW   )rk   Nrl   )
r   rW   rm   rL   rn   rL   ro   r/   r   rp   )1r8   Ú
__future__r   Útypingr   r   r   Ú	xml.etreer   r¦   Úcollectionsr   rv   r  r‚  r|  ró   r?   rJ  r'   ÚImportErrorÚtypesr
   r   r   r   r   r   r   r   r   Úutilr   rY   r   Úsvgunitsr   r   r   rŠ   r   r,   rg  rB   rJ   r{  rj   r}   r   r<   r#   r"   ú<module>r‘     sb  ðØ )Ð )à "Ð "Ð "Ð "Ð "Ð "à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€ðØ€N€N€N€NøØð ð ð Ø€G€G€Gðøøøð eÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ð €
ð/)ð /)ð /)ð /)ð /)ñ /)ô /)ð /)ðd 
ˆ‰Œ€ði€ðð ð ð ð ð*ð ð ð 
ˆ‰Œ€ð aeØSWØ7<ð!ð !ð !ð !ð !ðJ %+Ø(,Øð@ð @ð @ð @ð @ð<qð qð qð qð qñ qô qð qð qð qs   ¼A ÁAÁ
A