Ë
    ©eÿg"{  ã                   óÖ	  — U d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZmZ d dlmZ d dlmZ d d	l m!Z! d d
l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA g d¢ZB e'«       ZCeCj‰                   e# e&«        e$dd d «      «      «        e jŠ                  eF«      ZGeeHed   eIeIf   eHed   eIeIf   eHed   eIeIeIeIf   eHed   eIeIeIeIeIeIf   eHed   eIeIeIeJeJeIeIf   eHed      f   ZK G d„ d«      ZLddœdeeK   deeJ   deMfd„ZNdjdeeK   deMdeMfd„ZOeeMeeK   ej                   f   ZQeeRd<   ej¦                  ZTeeRd <   eejª                  ej¬                  f   ZWeeRd!<   ee0e.f   ZXeeRd"<    G d#„ d$e«      ZY ed%«      ZZ G d&„ d'eeZ   «      Z[ ed«      Z\ed(d)d*œd+eeMej                   ef   d,e]d-e]d.ee
eTeeW   ge\f      de[eHeXe\f      f
d/„«       Z^ed(d)d*œd+eeMej                   ef   d,e]d-e]de[eX   fd0„«       Z^d(d)dd1œd+eeMej                   ef   d,e]d-e]d.ee
eTeeW   ge\f      dee[eHeXe\f      e[eX   f   f
d2„Z^ G d3„ d4«      Z_deQdee.   fd5„Z`d6eTdee0   fd7„Zad6eTfd8„ZbdeQdee0   fd9„ZcdeQdee-   fd:„ZddeQdeeHee-   e]f      fd;„Ze G d<„ d=«      Zfd(d(d(d(d>œd?e.d@eIdAe]dBe]dCe]dDe]deeK   fdE„Zgd(d(d(d(d(dFœdGe0d@eIdAe]dBe]dCe]dDe]dHe]deeK   fdI„Zhd(d(d(d(d(dFœdJe-d@eIdAe]dBe]dCe]dDe]dHe]deeK   fdK„Zid(d(d(d(d(d)dLœdMe2d@eIdAe]dBe]dCe]dDe]dHe]dNe]deeK   fdO„Zj	 	 	 dkdPee!ef   dQeIdReIdSe#dHe]dDe]dNe]deeK   fdT„Zkd(d(d)dUœdVedBe]dHe]dNe]deeK   f
dW„Zld(d)d)dXœdYee&   dHe]dZe]dNe]deeK   f
d[„Zmed)d\œd+eeMej                   ef   d]e
eTeeW   ge\f   d-e]de[eHene0   e]e\f      fd^„«       Zoed)d\œd+eeMej                   ef   d]dd-e]de[eHene0   e]df      fd_„«       Zod)d\œd+eeMej                   ef   d]ee
eTeeW   ge\f      d-e]dee[eHene0   e]e\f      e[eHene0   e]df      f   fd`„Zod)d\œd+eeMej                   ef   d-e]de[eHeTeHeWdaf   f      fdb„Zpdeej                   eMf   deMfdc„ZqdeQdej                   fdd„Zrdej                   deeHej                   e]f      fde„Zsdfejè                  fdg„Zudhejè                  fdi„Zvy)lé    N)Úchain)ÚdegreesÚpi)ÚAnyÚCallableÚIterableÚIteratorÚLiteralÚ
NamedTupleÚOptionalÚSequenceÚTextIOÚ	TypeAliasÚTypeVarÚUnionÚoverload)ÚBRepAdaptor_Curve)ÚBRepBuilderAPI_GTransformÚBRepBuilderAPI_Transform)ÚGeom_BezierCurve)ÚGeomAbs_CurveType)ÚGeomAdaptor_Curve)Úgp_Ax1Úgp_DirÚgp_GTrsfÚgp_PntÚgp_TrsfÚgp_Vec)ÚStdFail_NotDone)ÚTopoDSÚTopoDS_EdgeÚTopoDS_FaceÚTopoDS_ShapeÚTopoDS_Wireé   )ÚCurveOrAdaptorÚInvalidWiresForFaceÚbezier_curveÚcircle_curveÚcurve_and_adaptorÚcurve_to_beziersÚcurve_to_polylineÚedge_from_curveÚedge_to_curveÚellipse_curveÚfaces_from_wire_soupÚis_reversedÚsegment_curveÚtopoDS_iteratorÚwire_explorerÚwire_from_continuous_edges)Úimport_svg_documentÚViewBoxÚColorAndLabelÚfaces_from_svg_pathÚwires_from_svg_pathÚedges_from_svg_pathÚcontinuous_edges_from_svg_pathÚface_to_svg_pathÚwire_to_svg_pathÚedge_to_svg_pathÚcurve_to_svg_pathÚSvgPathCommandÚformat_svg_pathÚMÚLÚQÚCÚAÚZc                   ó0   — e Zd ZdZddee   fd„Zdefd„Zy)Úfloat_formatterz<float formatter with given precision and no trailing zeroes.NÚdecimalsc                 ó"   — d|xs d› d�| _         y )NÚ.é   Úf)Úformat_spec)ÚselfrK   s     ú[/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/ocpsvg/svg.pyÚ__init__zfloat_formatter.__init__W   s   € Ø˜xš~¨2Ð.¨aÐ0ˆÕó    Úvc                 ót   — |j                  | j                  «      j                  d«      j                  d«      S )NÚ0rM   )Ú
__format__rP   Úrstrip)rQ   rU   s     rR   Ú__call__zfloat_formatter.__call__Z   s-   € Ø�|‰|˜D×,Ñ,Ó-×4Ñ4°SÓ9×@Ñ@ÀÓEÐErT   ©N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚintrS   ÚfloatrZ   © rT   rR   rJ   rJ   T   s#   „ ÙFñ1 ¨#¡ó 1ðF˜%ô FrT   rJ   )rK   ÚpathrK   Úreturnc                óN   ‡— t        |«      Šdj                  ˆfd„| D «       «      S )NÚ c           
   3   óh   •K  — | ])  }|d    › dj                  t        ‰|dd «      «      › �–— Œ+ y­w)r   Ú,r%   N)ÚjoinÚmap)Ú.0ÚcmdÚffs     €rR   Ú	<genexpr>z"format_svg_path.<locals>.<genexpr>b   s6   øè ø€ ÐLÁtÀ�s˜1‘v�h˜sŸx™x¬¨B°°A°B°Ó(8Ó9Ð:Ô;Átùó   ƒ/2)rJ   ri   )rc   rK   rm   s     @rR   rB   rB   ^   s$   ø€ ô 
˜Ó	"€BØ�8‰8ÓLÁtÓLÓLÐLrT   Úfloat_formatc                 óp   ‡— t        j                  dt        d¬«       dj                  ˆfd„| D «       «      S )Nz:`format_svg` is deprecated, use `format_svg_path` instead.é   ©Ú
stacklevelrf   c              3   óf   •K  — | ](  }|d    › dj                  ˆfd„|dd D «       «      › �–— Œ* y­w)r   rh   c              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr[   )rX   )rk   Úargrp   s     €rR   rn   z'format_svg.<locals>.<genexpr>.<genexpr>l   s   øè ø€ ÐLÁG¸S˜CŸN™N¨<×8ÁGùs   ƒr%   N)ri   )rk   rl   rp   s     €rR   rn   zformat_svg.<locals>.<genexpr>k   s<   øè ø€ ð áˆCð ˆq‰6ˆ(�3—8‘8ÓLÀCÈÈÁGÓLÓLÐMÔNÙùs   ƒ.1)ÚwarningsÚwarnÚFutureWarningri   )rc   rp   s    `rR   Ú
format_svgr{   e   s8   ø€ Ü‡M�MØDÜØõð
 �8‰8ó áóó ð rT   ÚSvgPathLikeÚShapeElementÚParentElementÚ
FaceOrWirec                   ó6   — e Zd ZU eed<   eed<   eed<   eed<   y)r7   ÚwidthÚheightÚxÚyN)r\   r]   r^   ra   Ú__annotations__rb   rT   rR   r7   r7   x   s   … ØƒLØƒMØƒHØ„HrT   r7   ÚTc                   ó8   — e Zd Zdee   deddfd„Zdee   fd„Zy)ÚItemsFromDocumentÚelementsÚviewboxrd   Nc                 ó    — || _         || _        y r[   )r‰   rŠ   )rQ   r‰   rŠ   s      rR   rS   zItemsFromDocument.__init__ƒ   s   € Ø ˆŒØˆ�rT   c                 ó   — | j                   S r[   )r‰   )rQ   s    rR   Ú__iter__zItemsFromDocument.__iter__‡   s   € Ø�}‰}ÐrT   )r\   r]   r^   r	   r†   r7   rS   r�   rb   rT   rR   rˆ   rˆ   ‚   s0   „ ð ¨!¡ð °wð À4ó ð˜( 1™+ô rT   rˆ   TF)Úflip_yÚignore_visibilityÚsvg_filerŽ   r�   Úmetadatac                 ó   — y r[   rb   )r�   rŽ   r�   r‘   s       rR   r6   r6   Ž   s   € ð /2rT   c                 ó   — y r[   rb   )r�   rŽ   r�   s      rR   r6   r6   ˜   s   € ð %(rT   )rŽ   r�   r‘   c                ó¤  ‡‡	‡
— dt         fˆfd„}dt         fˆfd„}dt        t           dt        dt        t
           fd„Š	|rHt        | ||¬«      } ||j                  «      Š
ˆ	ˆ
fd	„|D «       }t        | ||j                  «      «      S t        | |d
¬«      } ||j                  «      Š
ˆ	ˆ
fd„|D «       }t        | ||j                  «      «      S )aù  Import shapes from an SVG document as faces and/or wires.

    Each visible shape and path is converted to zero or more Face if it is filled,
    and to zero or more Wire if it is not filled.

    This importer does not cover the whole SVG specification,
    its most notable known limitations are:

    - degenerate and self-crossing paths may result in invalid faces and wires
    - clipping, both by clipping paths and viewport, is ignored
    - graphic properties such as line strokes and pattern fills are ignored

    Documents relying on these features need to be pre-processed externally.

    :param svg_file: input SVG document
    :param flip_y: whether to mirror the Y-coordinates
        to compensate for SVG's top left origin, defaults to True
    :param ignore_visibility: whether to ignore visibility
        attribute and process hidden elements.
    :param metadata: funtion to generate metadata from the source SVG element
    :raises IOError:
    :raises SyntaxError:
    :raises ValueError:
    rŠ   c           
      ó@  •‡— t        «       Š‰j                  t        | j                  | j                  d«      «       ‰rLt        «       }|j                  t        t        ddd«      t        ddd«      «      «       ‰j                  |«       dt        dt        fˆˆfd„}|S )Nr   r%   Úshaperd   c                 ó  •— t        | ‰dd«      j                  «       }‰r|j                  «        t        | t        «      rt        j                  |«      S t        | t        «      rt        j                  |«      S t        d| › �«      ‚)NFzsomehow got unexpected shape )
r   ÚShapeÚReverseÚ
isinstancer"   r    ÚFace_sr$   ÚWire_sÚAssertionError)r–   ÚmirroredrŽ   Ú	transforms     €€rR   Útransform_fz?import_svg_document.<locals>.doc_transform.<locals>.transform_fÊ   sp   ø€ Ü/°°yÀ%ÈÓO×UÑUÓWˆHÙØ× Ñ Ô"Ü˜%¤Ô-Ü—}‘} XÓ.Ð.Ü˜E¤;Ô/Ü—}‘} XÓ.Ð.ä$Ð'DÀUÀGÐ%LÓMÐMrT   )r   ÚSetTranslationr   rƒ   r„   Ú	SetMirrorr   r   r   ÚPreMultiplyr   )rŠ   Úmirrorr    rŸ   rŽ   s      @€rR   Údoc_transformz*import_svg_document.<locals>.doc_transformÁ   s„   ù€ Ü“Iˆ	Ø× Ñ ¤¨¯	©	°7·9±9¸aÓ!@ÔAáÜ“YˆFØ×ÑœV¤F¨1¨a°£O´V¸A¸qÀ!³_ÓEÔFØ×!Ñ! &Ô)ð		Nœzð 		N¬jö 		Nð ÐrT   c                 ó>   •— ‰r| \  }}}}t        |||| |z
  «      S | S r[   )r7   )rŠ   ÚwÚhrƒ   r„   rŽ   s        €rR   Útransform_viewboxz.import_svg_document.<locals>.transform_viewbox×   s/   ø€ ÙØ ‰JˆAˆq�!�QÜ˜1˜a  Q B¨¡FÓ+Ð+àˆNrT   ÚwiresÚ	is_filledrd   c              3   ó´   K  — |r	 t        | «      E d {  –—†  y | E d {  –—†  y 7 Œ# t        $ r# t        j                  d«       | E d {  –—†7   Y y w xY w7 Œ6­w)Nz+filled shape could not be converted to face)r0   r'   ÚloggerÚwarning)rª   r«   s     rR   Úprocess_wirez)import_svg_document.<locals>.process_wireÞ   sX   è ø€ ñ ð!Ü/°Ó6×6Ñ6ð
 ×Ñð 7ùÜ&ò !Ü—‘ÐLÔMØ × Ó ð!úð úsG   ‚A†' ”%•' ™AŸA A¥' §#AÁ
AÁAÁAÁAÁA)r�   Úmetadata_factoryc              3   óV   •K  — | ]   \  }}} ‰||«      D ]  } ‰|«      |f–— Œ Œ" y ­wr[   rb   )rk   rª   r«   r‘   Úface_or_wirer¯   rŸ   s        €€rR   rn   z&import_svg_document.<locals>.<genexpr>ò   s>   øè ø€ ð 
á.JÑ*��y (Ù ,¨U°IÖ >�ñ �|Ó$ hÔ/à >ð 0Ù.Jùs   ƒ&)Nc              3   óR   •K  — | ]  \  }}} ‰||«      D ]  } ‰|«      –— Œ Œ  y ­wr[   rb   )rk   rª   r«   Ú	_metadatar²   r¯   rŸ   s        €€rR   rn   z&import_svg_document.<locals>.<genexpr>  s9   øè ø€ ð 
á/NÑ+��y )Ù ,¨U°IÖ >�ñ �l×#à >ð $Ù/Nùs   ƒ$')	r7   Úlistr$   Úboolr	   r   Úwires_from_svg_documentrŠ   rˆ   )r�   rŽ   r�   r‘   r¥   r©   Úwires_from_doc_with_metadataÚitemsÚwires_from_doc_without_metadatar¯   rŸ   s    `       @@rR   r6   r6   ¡   sû   ú€ ð@œwõ ð,¤7õ ðÜ”KÑ ðäðô 
”*Ñ	óñ Ü'>ØØ/Ø%ô(
Ð$ñ
 "Ð">×"FÑ"FÓGˆ	ô
á.Jó
ˆô
 !ØÑ$Ð%A×%IÑ%IÓJó
ð 	
ô +BØØ/Ø!ô+
Ð'ñ
 "Ð"A×"IÑ"IÓJˆ	ô
á/Nó
ˆô
 !ØÑ$Ð%D×%LÑ%LÓMó
ð 	
rT   c            
       óÆ   — e Zd Z	 ddedee   deddfd„Zdefd„Z	e
d	eej                  df   deeeeeef   df   fd
„«       Ze
deeef   defd„«       Zeddefd„«       Zy)r8   ÚelementÚparentsÚlabel_byrd   Nc                 óò   ‡ ‡— ‰ j                  |j                  «      ‰ _        ‰ j                  |j                  «      xs d‰ _        ‰ j                  |‰«      ‰ _        t        ˆˆ fd„|D «       «      ‰ _        y )N©r   r   r   r%   c              3   óB   •K  — | ]  }‰j                  |‰«      –— Œ y ­wr[   )Ú_label)rk   Úparentr¾   rQ   s     €€rR   rn   z)ColorAndLabel.__init__.<locals>.<genexpr>  s   øè ø€ Ð"WÉwÀV 4§;¡;¨v°x×#@Éwùs   ƒ)	Ú_colorÚfillÚ
fill_colorÚstrokeÚstroke_colorrÂ   ÚlabelÚtupleÚparent_labels)rQ   r¼   r½   r¾   s   `  `rR   rS   zColorAndLabel.__init__  sX   ù€ ð Ÿ+™+ g§l¡lÓ3ˆŒØ ŸK™K¨¯©Ó7ÒG¸<ˆÔØ—[‘[ ¨(Ó3ˆŒ
Ü"Ô"WÉwÓ"WÓWˆÕrT   r–   c                 ó|   — t        |t        t        f«       }|r| j                  r| j                  S | j                  S )z<Fill color if shape should be filled stroke color otherwise.)rš   r$   r!   rÆ   rÈ   )rQ   r–   Úfilleds      rR   Ú	color_forzColorAndLabel.color_for  s3   € ä ¬´[Ð'AÓBÐBˆÙ"(¨T¯_ª_ˆt�‰ÐSÀ$×BSÑBSÐSrT   Úcolorc                 óÀ   — | rM| j                   rA	 | j                  | j                  | j                  | j                  f}t        d„ |D «       «      S y # t        $ r Y yw xY w)Nc              3   ó8   K  — | ]  }t        |«      d z  –— Œ y­w)éÿ   N)ra   )rk   rU   s     rR   rn   z'ColorAndLabel._color.<locals>.<genexpr>#  s   è ø€ Ð:±T°œU 1›X¨�^±Tùs   ‚rÀ   )ÚvalueÚredÚgreenÚblueÚalpharÊ   Ú	TypeError)rÏ   Úrgbas     rR   rÄ   zColorAndLabel._color  sZ   € ñ �U—[’[ð"Ø—y‘y %§+¡+¨u¯z©z¸5¿;¹;ÐF�ÜÑ:±TÓ:Ó:Ð:ð øô ò "Ù!ð"ús   �?A Á	AÁAc                 ó^   — 	 t        | j                  |   «      S # t        t        f$ r Y yw xY w)NÚ )ÚstrÚvaluesÚKeyErrorÚAttributeError)r¼   r¾   s     rR   rÂ   zColorAndLabel._label)  s2   € ð	Ü�w—~‘~ hÑ/Ó0Ð0øÜœ.Ð)ò 	Ùð	ús   ‚ š,«,c                 ó>   ‡ ‡— dt         dt        t           fˆ ˆfd„}|S )Nr¼   r½   c                 ó   •—  ‰| |‰¬«      S )N)r¾   rb   )r¼   r½   Úclsr¾   s     €€rR   rO   z!ColorAndLabel.Label_by.<locals>.f2  s   ø€ Ù�w °(Ô;Ð;rT   )r}   r   r~   )râ   r¾   rO   s   `` rR   ÚLabel_byzColorAndLabel.Label_by0  s"   ù€ ð	<”|ð 	<¬h´}Ñ.Eö 	<ð ˆrT   )Úid)r\   r]   r^   r}   r   r~   rÜ   rS   r#   rÎ   Ústaticmethodr   ÚsvgelementsÚColorrÊ   ra   rÄ   rÂ   Úclassmethodrã   rb   rT   rR   r8   r8     sÝ   „ ð
 ñ		Xàð	Xð ˜-Ñ(ð	Xð ð		Xð
 
ó	XðT˜|ó Tð
 ð
Ø�[×&Ñ&¨Ð,Ñ-ð
à	ˆu�U˜E 5¨%Ð/Ñ0°$Ð6Ñ	7ò
ó ð
ð ð˜˜l¨MÐ9Ñ:ð Àcò ó ðð ñ ò ó ñrT   r8   c                 ó*   — t        t        | «      «      S )z“Create faces from an SVG path.

    :param SvgPathLike path: input SVG path
    :yield: faces
    :raises SyntaxError:
    :raises ValueError:
    )r0   r:   ©rc   s    rR   r9   r9   ;  s   € ô  Ô 3°DÓ 9Ó:Ð:rT   r¼   c              #   ód  ‡ ‡	K  — dt         t        t        t        t        f   d f   fˆ fd„Š	dt        fˆ	ˆ fd„}t	        ‰ t
        j                  t
        j                  f«      rŸt        ‰ j                  «      }t        ‰ j                  «      }t        ‰ j                  «      }t        ‰ j                  «      }t        ||d«      }||k(  rt        ||¬«      nt        |||¬«      } |t        t!        |«      f«      «      –— y t#        ‰ «      x}rt%        |t'        |«      «      E d {  –—†  y y 7 Œ­w)Nrd   c                  ó¬  •— t        j                  dd«      ‰j                  z  } t        j                  dd«      ‰j                  z  }t        j                  dd«      ‰j                  z  }t        | j	                  |«      | j	                  |«      z
  «      t
        dz  k7  }|s2| j                  |«      | j                  |«      | j	                  |«      fS y )Nr   r%   rr   )ræ   ÚPointrŸ   ÚabsÚangle_tor   Údistance_to)Úorƒ   r„   Ú	is_skewedr¼   s       €rR   Úcheck_unskewed_transformz8wires_from_svg_element.<locals>.check_unskewed_transformG  s¯   ø€ Ü×Ñ˜a Ó# g×&7Ñ&7Ñ7ˆÜ×Ñ˜a Ó# g×&7Ñ&7Ñ7ˆÜ×Ñ˜a Ó# g×&7Ñ&7Ñ7ˆÜ˜Ÿ
™
 1›¨¯
©
°1«Ñ5Ó6¼"¸q¹&Ñ@ˆ	ÙØ—=‘= Ó# Q§]¡]°1Ó%5°q·z±zÀ!³}ÐDÐDàrT   Úwirec                 ó&  •— ‰j                   j                  «       r| S  ‰«       rÍt        «       } |j                  g ‰j                   j                  ‰j                   j
                  d‰j                   j                  f¢‰j                   j                  ‰j                   j                  d‰j                   j                  f¢d¢­Ž  t        j                  t        | |«      j                  «       «      S t        «       }|j                  dd‰j                   j                  «       |j                  dd‰j                   j                  «       |j                  dd‰j                   j
                  «       |j                  dd‰j                   j                  «       |j                  dd‰j                   j                  «       |j                  dd‰j                   j                  «       t        j                  t!        | |«      j                  «       «      S )Nç        )rö   rö   g      ð?rö   r%   rr   é   )rŸ   Úis_identityr   Ú	SetValuesÚaÚcÚeÚbÚdrO   r    rœ   r   r˜   r   ÚSetValuer   )rô   ÚtrsfÚgtrsfró   r¼   s      €€rR   Útransform_if_neededz3wires_from_svg_element.<locals>.transform_if_neededQ  sš  ø€ Ø×Ñ×(Ñ(Ô*ØˆKÙ%Ô'Ü“9ˆDØˆD�N‰Nð Ø×#Ñ#×%Ñ% w×'8Ñ'8×':Ñ':¸CÀ×ARÑAR×ATÑATÐUðà×#Ñ#×%Ñ% w×'8Ñ'8×':Ñ':¸CÀ×ARÑAR×ATÑATÐUðð &óô
 —=‘=Ô!9¸$ÀÓ!E×!KÑ!KÓ!MÓNÐNä“JˆEØ�N‰N˜1˜a ×!2Ñ!2×!4Ñ!4Ô5Ø�N‰N˜1˜a ×!2Ñ!2×!4Ñ!4Ô5Ø�N‰N˜1˜a ×!2Ñ!2×!4Ñ!4Ô5Ø�N‰N˜1˜a ×!2Ñ!2×!4Ñ!4Ô5Ø�N‰N˜1˜a ×!2Ñ!2×!4Ñ!4Ô5Ø�N‰N˜1˜a ×!2Ñ!2×!4Ñ!4Ô5Ü—=‘=Ô!:¸4ÀÓ!G×!MÑ!MÓ!OÓPÐPrT   r   )Úcenter)r   rÊ   ra   r$   rš   ræ   ÚCircleÚEllipseÚcxÚcyÚrxÚryr   r)   r/   r5   r-   Úsvg_element_to_pathrj   r:   )
r¼   r  r  r  r  r	  r  Úcircle_or_ellpiserc   ró   s
   `        @rR   Úwires_from_svg_elementr  F  s  ùè ø€ ð¤e¬E´%¼ÄÐ2EÑ,FÈÐ,LÑ&Mõ ðQ¤+ö Qô* �'œK×.Ñ.´×0CÑ0CÐDÔEÜ�7—:‘:ÓˆÜ�7—:‘:ÓˆÜ�7—:‘:ÓˆÜ�7—:‘:ÓˆÜ˜˜B Ó"ˆð �RŠxô ˜ FÕ+ä˜r 2¨fÔ5ð 	ñ
 "Ü&¬Ð8IÓ(JÐ'LÓMó
ó 	
ô % WÓ-Ð	-ˆÐ	-ÜÐ*Ô,?ÀÓ,EÓF×FÑFð 
.ØFús   „D#D0Ä'D.Ä(D0c                 óh   — t        j                  | «      }t        |«      r|j                  «        |S y r[   )ræ   ÚPathÚlenÚreify)r¼   rc   s     rR   r
  r
  y  s,   € Ü×Ñ˜GÓ$€DÜ
ˆ4„yØ�
‰
ŒØˆð rT   c              #   óP   K  — t        | «      D ]  \  }}t        ||¬«      –— Œ y­w)z“Create wires from an SVG path.

    :param SvgPathLike path: input SVG path
    :yield: wires
    :raises SyntaxError:
    :raises ValueError:
    )ÚclosedN)r<   r5   )rc   Úedgesr  s      rR   r:   r:   €  s(   è ø€ ô 8¸Ö=‰ˆˆvÜ(¨°vÔ>Ó>ñ >ùs   ‚$&c              #   óJ   K  — t        | «      D ]  \  }}|E d{  –—†  Œ y7 Œ­w)z“Create edges from an SVG path.

    :param SvgPathLike path: input SVG path
    :yield: edges
    :raises SyntaxError:
    :raises ValueError:
    N)r<   )rc   r  Ú_s      rR   r;   r;   �  s'   è ø€ ô 3°4Ö8‰ˆˆqØ×Ññ 9Øús   ‚#™!š#c              #   ó‚  ‡ ‡‡K  — dt         t        j                  d f   fˆ fd„Šdt         t        j                  t        j                  t        j
                  t        j                  f   fˆfd„Šdt        j                  fˆfd„}t        ‰ «      Š t        ‰ «      D ]  \  }}t         ||«      «      x}sŒ||f–— Œ! y ­w)Nrû   c                 ó�   •— | €#t         j                  d‰«       t        ddd«      S t        | j                  | j                  d«      S )Nzfound None point in %sr   )r­   r®   r   ÚrealÚimag)rû   rc   s    €rR   Úpz)continuous_edges_from_svg_path.<locals>.pœ  s<   ø€ Øˆ9Ü�N‰NÐ3°TÔ:Ü˜!˜Q “?Ð"ä˜!Ÿ&™& !§&¡&¨!Ó,Ð,rT   Úsegmentc                 ó@  •— t        | t        j                  «      ry t        | t        j                  «      rF| j                  | j
                  k7  r,t         ‰| j                  «       ‰| j
                  «      «      S y t        | t        j                  «      r=t         ‰| j                  «       ‰| j                  «       ‰| j
                  «      «      S t        | t        j                  «      rNt         ‰| j                  «       ‰| j                  «       ‰| j                  «       ‰| j
                  «      «      S t        | t        j                  «      r�| j                  }| j                  | j                  z   }t!        | j"                  j$                  | j"                  j&                  t)        ||«      t+        ||«      ||kD   ‰| j,                  «      t/        | j1                  «       «      ¬«      S t        | t        j2                  «      rF| j                  | j
                  k7  r,t         ‰| j                  «       ‰| j
                  «      «      S y t4        j7                  dt9        | «      › �«       t         ‰| j                  «       ‰| j
                  «      «      S )N)Ústart_angleÚ	end_angleÚ	clockwiser  Úrotationzunexpected segment type: )rš   ræ   ÚMoveÚLineÚstartÚendr2   ÚQuadraticBezierr(   ÚcontrolÚCubicBezierÚcontrol1Úcontrol2ÚArcÚthetaÚdeltar/   Úradiusr  r  ÚminÚmaxr  r   Úget_rotationÚCloser­   r®   Útype)r  r  r  r  s      €rR   Úcurves_from_segmentz;continuous_edges_from_svg_path.<locals>.curves_from_segment£  sì  ø€ ô �gœ{×/Ñ/Ô0ØÜ˜¤×!1Ñ!1Ô2Ø�}‰} §¡Ò+Ü$¡Q w§}¡}Ó%5±q¸¿¹³~ÓFÐFð ,ä˜¤×!<Ñ!<Ô=Ü¡ '§-¡-Ó 0±!°G·O±OÓ2DÁaÈÏÉÃnÓUÐUÜ˜¤×!8Ñ!8Ô9ÜÙ�'—-‘-Ó Ù�'×"Ñ"Ó#Ù�'×"Ñ"Ó#Ù�'—+‘+“ó	ð ô ˜¤§¡Ô1Ø!Ÿ-™-ˆKØŸ™¨¯©Ñ5ˆIÜ Ø—‘×#Ñ#Ø—‘×#Ñ#Ü ¨YÓ7Ü˜i¨Ó5Ø# kÑ1Ù˜Ÿ™Ó(Ü  ×!5Ñ!5Ó!7Ó8ôð ô ˜¤×!2Ñ!2Ô3Ø�}‰} §¡Ò+Ü$¡Q w§}¡}Ó%5±q¸¿¹³~ÓFÐFð ,ô �N‰NÐ6´t¸G³}°oÐFÔGÜ ¡ 7§=¡=Ó!1±1°W·[±[³>ÓBÐBrT   rc   c           	   3   ó¶   •K  — | D ]  }	  ‰|«      x}rt        |«      –— Œ y # t        t        f$ r# t        j	                  dt        || «      «       Y ŒOw xY w­w)Nz
invalid %s)r-   r   Ú
ValueErrorr­   ÚdebugÚ_SegmentInPath)rc   r  Úcurver3  s      €rR   Úedges_from_pathz7continuous_edges_from_svg_path.<locals>.edges_from_pathÌ  sa   øè ø€ ó ˆGðJÙ/°Ó8Ð8�5Ð8Ü)¨%Ó0Ò0øñ øô $¤ZÐ0ò JÜ—‘˜\¬>¸'À4Ó+HÖIðJüs%   ƒAŠ$¡A¤/AÁAÁAÁA)r   ræ   rí   r"  r%  r'  r*  r  Ú_path_from_SvgPathLikeÚ_continuous_subpathsrµ   )rc   r9  Úsubpathr  r  r3  r  s   `    @@rR   r<   r<   ™  s²   úè ø€ ð-ŒU”;×$Ñ$ dÐ*Ñ+õ -ð'CÜÜ×ÑÜ×'Ñ'Ü×#Ñ#Ü�O‰Oðñ
õ'CðRJÜ×ÑõJô " $Ó'€DÜ/°Ö5‰ˆ�Ü™¨Ó1Ó2Ð2ˆ5Ñ2Ø˜�-Óñ 6ùs   …B0B?Â6	B?c                   ó@   — e Zd Zdedej
                  ddfd„Zdefd„Zy)r7  r  rc   rd   Nc                 ó    — || _         || _        y r[   )r  rc   )rQ   r  rc   s      rR   rS   z_SegmentInPath.__init__Ý  s   € ØˆŒØˆ�	rT   c                 ó\   — | j                   j                  «       }d| j                  › d|› d�S )NÚ`z` segment in path `)rc   rþ   r  )rQ   rþ   s     rR   Ú__str__z_SegmentInPath.__str__á  s+   € Ø�I‰I�K‰K‹MˆØ�4—<‘<�.Ð 3°A°3°aÐ8Ð8rT   )	r\   r]   r^   r   ræ   r  rS   rÜ   rA  rb   rT   rR   r7  r7  Ü  s.   „ ð ð ¨;×+;Ñ+;ð Àó ð9˜ô 9rT   r7  )Ú
use_cubicsÚuse_quadraticsÚuse_arcsÚsplit_full_arcsÚfaceÚ	tolerancerB  rC  rD  rE  c          
   #   ó¦   K  — t        | «      D ]?  }d }t        t        j                  |«      |||||d¬«      D ]  }|–— Œ |sŒ6|dk7  sŒ<d–— ŒA y ­w)NT©rG  rB  rC  rD  rE  Úwith_first_move©rH   )r3   r>   r    rœ   )rF  rG  rB  rC  rD  rE  rô   rl   s           rR   r=   r=   é  s`   è ø€ ô   Ö%ˆØˆÜ#Ü�M‰M˜$ÓØØ!Ø)ØØ+Ø ÷
ˆCð ‹Ið
ò �3˜&“=Ø‹Jñ &ùs   ‚AAÁAÁ
A)rB  rC  rD  rE  rJ  rô   rJ  c             #   ó  ‡‡‡‡‡‡K  — t        t        | «      «      }t        j                  ˆˆˆˆˆˆfd„t	        |«      D «       «      E d {  –—†  t        t        j                  t        | «      «      D �ci c]  }t        |«      |“Œ }	}t        |«      t        |	«      k  rZ|D ]  }|	j                  t        |«      «       Œ t        j                  ˆˆˆˆˆfd„|	j                  «       D «       «      E d {  –—†  y y 7 Œ°c c}w 7 Œ­w)Nc              3   ó|   •K  — | ]3  \  }}t        t        j                  |«      ‰‰‰‰‰‰xr |d k(  ¬«      –— Œ5 y­w)r   rI  N©r?   r    ÚEdge_s)	rk   ÚiÚedgerE  rG  rD  rB  rC  rJ  s	      €€€€€€rR   rn   z#wire_to_svg_path.<locals>.<genexpr>  sR   øè ø€ ð #ñ 0‰GˆAˆtô 	Ü�M‰M˜$ÓØØ!Ø)ØØ+Ø+Ò6°°Q±÷	
ð 	
ñ 0ùs   ƒ9<c           
   3   óh   •K  — | ])  }t        t        j                  |«      ‰‰‰‰‰d ¬«      –— Œ+ y­w)TrI  NrN  )rk   rQ  rE  rG  rD  rB  rC  s     €€€€€rR   rn   z#wire_to_svg_path.<locals>.<genexpr>(  sE   øè ø€ ð '
ñ +�ô Ü—‘˜dÓ#Ø#Ø%Ø-Ø!Ø /Ø $÷ð ñ +ùro   )rµ   r4   r   Úfrom_iterableÚ	enumeraterj   r    rO  r3   Úhashr  ÚpoprÝ   )
rô   rG  rB  rC  rD  rE  rJ  Úordered_edgesrü   Ú	all_edgess
    ``````   rR   r>   r>     së   ýè ø€ ô œ tÓ,Ó-€Mä×"Ñ"÷ #ð #ô ! Ô/ó#ó ÷ ð ô$ &)¬¯©¼ÈÓ8MÔ%NÓOÑ%N ”�a“˜!‘Ð%N€IÐOä
ˆ=ÓœC 	›NÒ*ÛˆAØ�M‰Mœ$˜q›'Õ"ð ô ×&Ñ&÷ '
ð "×(Ñ(Ô*ó'
ó 
÷ 	
ñ 	
ð	 +ð)úò$ Pð	
ús1   ˆADÁC=Á)DÁ6C?Â	A-DÃ6DÃ7DÃ?DrQ  c                óL   — t        t        | «      ||||||t        | «      ¬«      S )N)rG  rB  rC  rD  rE  rJ  Úreverse)r@   r.   r1   )rQ  rG  rB  rC  rD  rE  rJ  s          rR   r?   r?   6  s3   € ô Ü�dÓØØØ%ØØ'Ø'Ü˜DÓ!ô	ð 	rT   )rB  rC  rD  rE  rJ  rZ  Úcurve_or_adaptorrZ  c          	   #   óú  K  — t        | «      \  }}	|	j                  «       }
	 |
t        j                  k(  r�|	j	                  |	j                  «       «      }|	j	                  |	j                  «       «      }|r||}}|r#d|j                  «       |j                  «       f–— d|j                  «       |j                  «       f–— y |rÃ|
t        j                  t        j                  fv r¡|
t        j                  k(  r3|	j                  «       }|j                  «       x}}|j                  «       }n@|	j                  «       }|j                  «       |j!                  «       }}|j                  «       }t#        |	||||||¬«      E d {  –—†  y |s|rZt%        |	||rdnd¬«      }|rt'        t)        |«      «      }t+        |«      D ]#  \  }}t-        |||xr |dk(  |¬«      E d {  –—†  Œ% y t/        t1        |	|¬	«      ||	j3                  «       |¬
«      E d {  –—†  y 7 Œ”7 Œ:7 Œ	# t4        $ rS}t6        j9                  d|
|¬«       t/        t1        |	|¬	«      ||	j3                  «       |¬
«      E d {  –—†7   Y d }~y d }~ww xY w­w)NrC   rD   )rE  rJ  rZ  é   rr   )rG  Ú
max_degreer   ©rC  rJ  rZ  )rG  ©rJ  r  rZ  zBfailed to convert %s curve, falling back to polyline approximation)Úexc_info)r*   ÚGetTyper   ÚGeomAbs_LineÚValueÚFirstParameterÚLastParameterÚXÚYÚGeomAbs_CircleÚGeomAbs_Ellipser  ÚRadiusÚXAxisr  ÚMajorRadiusÚMinorRadiusÚellipse_to_svg_pathr+   Úreversedrµ   rT  Úbezier_to_svg_pathÚpolyline_to_svg_pathr,   ÚIsClosedÚ	Exceptionr­   Úerror)r[  rG  rB  rC  rD  rE  rJ  rZ  Ú_curveÚadaptorÚ
curve_typeÚp0Úp1ÚcircleÚr1Úr2ÚaxisÚellipseÚbeziersrP  Úbezierrü   s                         rR   r@   r@   L  s^  è ø€ ô (Ð(8Ó9�O€FˆGØ—‘Ó"€JðA
ØÔ*×7Ñ7Ò7Ø—‘˜w×5Ñ5Ó7Ó8ˆBØ—‘˜w×4Ñ4Ó6Ó7ˆBÙØ˜R�B�áØ˜2Ÿ4™4›6 2§4¡4£6Ð)Ò)Ø�r—t‘t“v˜rŸt™t›vÐ%Ó%á˜*Ü×,Ñ,Ü×-Ñ-ð)
ñ 
ð Ô.×=Ñ=Ò=Ø Ÿ™Ó)�Ø Ÿ-™-›/Ð)��RØ—|‘|“~‘à!Ÿ/™/Ó+�Ø ×,Ñ,Ó.°×0CÑ0CÓ0E�B�Ø—}‘}“�ä*ØØØØØ /Ø /Øô÷ ñ ñ ™>Ü&Ø 9¹j¹ÈaôˆGñ Ü"¤4¨£=Ó1�Ü& wÖ/‘	��6Ü-ØØ#1Ø$3Ò$>¸¸Q¹Ø#ô	÷ ñ ñ 0ô ,Ü! '°YÔ?Ø /Ø×'Ñ'Ó)Øô	÷ ñ ð1øð"øðùô ò 
Ü�‰ØPØØð 	ô 	
ô
 (Ü˜g°Ô;Ø+Ø×#Ñ#Ó%Øô	
÷ 	
ö 	
ûð
üs˜   ‚I;¢BH ÃI;ÃB?H ÆHÆH ÆI;ÆAH ÇHÇH Ç$I;Ç%+H ÈHÈH ÈI;ÈH ÈH ÈH È	I8È%AI3É(I+É)I3É.I;É3I8É8I;Úadaptor_curver|  r}  r~  c           	   #   óÌ  K  — | j                  «       }| j                  «       }|r||}}| j                  |«      }	| j                  ||z   dz  «      }
| j                  |«      }t        ddd«      j	                  t        |
|	«      t        |
|«      «      }|j                  «       j                  t        ddd«      t        ddd«      «      }||z
  t        kD  rdnd}|dk  rdnd}|r#d|	j                  «       |	j                  «       f–— | j                  «       r›|rQd||ddd|
j                  «       |
j                  «       f–— d||ddd|j                  «       |j                  «       f–— y d}| j                  |||z
  |z  z   «      }d||d	|z  dd|j                  «       |j                  «       f–— y d||t        |«      |||j                  «       |j                  «       f–— y ­w)
Ng       @r   r%   éÿÿÿÿrC   rG   é´   gGœ¡úÿÿï?ih  )re  rf  rd  r   ÚDotCrossÚ	DirectionÚAngleWithRefr   r   rg  rh  rs  r   )r‚  r|  r}  r~  rJ  rE  rZ  Út0Út1ry  Úpmrz  rú   ÚangleÚ	large_arcÚsweepÚ
almost_oneÚpqs                     rR   ro  ro  ž  s¹  è ø€ ð 
×	%Ñ	%Ó	'€BØ	×	$Ñ	$Ó	&€BÙØ�RˆBˆØ	×	Ñ	˜RÓ	 €BØ	×	Ñ	˜b 2™g¨™_Ó	-€BØ	×	Ñ	˜RÓ	 €Bäˆq�!�Q‹× Ñ ¤¨¨B£´¸¸B³Ó@€Aà�N‰NÓ×)Ñ)¬&°°A°q«/¼6À!ÀQÈÓ;KÓL€EØ˜"‘Wœr’\‘ q€IØ�Q’‰A˜A€EáØ�2—4‘4“6˜2Ÿ4™4›6Ð!Ò!à×ÑÔÙØ�r˜2˜s A q¨"¯$©$«&°"·$±$³&Ð8Ò8Ø�r˜2˜s A q¨"¯$©$«&°"·$±$³&Ð8Ó8à!ˆJØ×$Ñ$ R¨2°©7°jÑ*@Ñ%@ÓAˆBØ�r˜2˜s ZÑ/°°A°r·t±t³v¸r¿t¹t»vÐEÓEà�2�rœ7 5›>¨9°e¸R¿T¹T»VÀRÇTÁTÃVÐKÓKùs   ‚G"G$r_  r�  c             #   óH  K  — | j                  «       }| j                  d«      }|dk(  rÅ| j                  d«      }| j                  d«      }| j                  d«      }|r||||f\  }}}}|r#d|j                  «       |j                  «       f–— d|j                  «       |j                  «       |j                  «       |j                  «       |j                  «       |j                  «       f–— y |dk(  �rº| j                  d«      }| j                  d«      }|r|||}}}|rg|r#d|j                  «       |j                  «       f–— d|j                  «       |j                  «       |j                  «       |j                  «       f–— y t	        |j                  «       |j                  «       d«      j                  t	        ||«      j                  d	«      «      }	t	        |j                  «       |j                  «       d«      j                  t	        ||«      j                  d	«      «      }
|r#d|j                  «       |j                  «       f–— d|	j                  «       |	j                  «       |
j                  «       |
j                  «       |j                  «       |j                  «       f–— y |dk(  r`| j                  d«      }|r||}}|r#d|j                  «       |j                  «       f–— d
|j                  «       |j                  «       f–— y t        d| › d�«      ‚­w)Nr%   r]  rr   r÷   rC   rF   rE   r   gUUUUUUå?rD   zcould not convert z to SVG path)ÚDegreeÚPolerg  rh  r   ÚAddedÚ
Multipliedr5  )r�  rC  rJ  rZ  Údegreery  rz  Úp2Úp3Úp1bÚp2bs              rR   rq  rq  Ä  sa  è ø€ ð �]‰]‹_€Fà	�‰�Q‹€Bà�‚{Ø�[‰[˜‹^ˆØ�[‰[˜‹^ˆØ�[‰[˜‹^ˆÙØ  R¨˜^‰NˆB��B˜áØ�r—t‘t“v˜rŸt™t›vÐ%Ò%Ø�2—4‘4“6˜2Ÿ4™4›6 2§4¡4£6¨2¯4©4«6°2·4±4³6¸2¿4¹4»6ÐAÓAà	�1‹Ø�[‰[˜‹^ˆØ�[‰[˜‹^ˆÙØ˜R �B�ˆBáÙØ˜2Ÿ4™4›6 2§4¡4£6Ð)Ò)Ø�r—t‘t“v˜rŸt™t›v r§t¡t£v¨r¯t©t«vÐ5Ó5ä˜Ÿ™› §¡£¨Ó+×1Ñ1´&¸¸R³.×2KÑ2KÈEÓ2RÓSˆCÜ˜Ÿ™› §¡£¨Ó+×1Ñ1´&¸¸R³.×2KÑ2KÈEÓ2RÓSˆCÙØ˜2Ÿ4™4›6 2§4¡4£6Ð)Ò)Ø�s—u‘u“w §¡£¨¯©«°#·%±%³'¸2¿4¹4»6À2Ç4Á4Ã6ÐIÓIà	�1ŠØ�[‰[˜‹^ˆÙØ˜�ˆBáØ�r—t‘t“v˜rŸt™t›vÐ%Ò%Ø�2—4‘4“6˜2Ÿ4™4›6Ð!Ó!ô Ð-¨f¨X°\ÐBÓCÐCùs   ‚L L"r`  Úpointsr  c             #   óö   K  — t        | «      } | rh|rt        | «      n| ^}}|r#d|j                  «       |j                  «       f–— |D ]%  }d|j                  «       |j                  «       f–— Œ' |rd–— y y y ­w)NrC   rD   rK  )rµ   rp  rg  rh  )r›  rJ  r  rZ  ÚfirstÚothersÚpoints          rR   rr  rr  ø  sy   è ø€ ô �&‹\€FÙÙ-4œ &Ô)¸&ˆˆ�áØ�u—w‘w“y %§'¡'£)Ð+Ò+ÛˆEØ�u—w‘w“y %§'¡'£)Ð+Ó+ð ñ Ø‹Jð ð ùs   ‚A7A9©r�   r°   c                 ó   — y r[   rb   ©r�   r°   r�   s      rR   r·   r·     s   € ð <?rT   c                 ó   — y r[   rb   r¢  s      rR   r·   r·     s   € ð ?BrT   c                óÐ   ‡‡— t        | |¬«      }dt        fd„Št        ‰«      r"ˆˆfd„|D «       }t        ||j                  «      S ˆfd„|D «       }t        ||j                  «      S )Nr   r¼   c                 ó6   — | j                   }|j                  d uS r[   )rÅ   rÓ   )r¼   rÅ   s     rR   r«   z*wires_from_svg_document.<locals>.is_filled.  s   € Ø�|‰|ˆØ�z‰z Ð%Ð%rT   c              3   ól   •K  — | ]+  \  }}t        t        |«      «       ‰|«       ‰||«      f–— Œ- y ­wr[   ©rµ   r  )rk   Úsource_elementÚsource_parentsr«   r°   s      €€rR   rn   z*wires_from_svg_document.<locals>.<genexpr>3  sD   øè ø€ ð 
ñ 3;Ñ.� ô	 Ô+¨NÓ;Ó<Ù˜.Ó)Ù  °Ó@ôñ
 3;ùs   ƒ14c              3   ó^   •K  — | ]$  \  }}t        t        |«      «       ‰|«      d f–— Œ& y ­wr[   r§  )rk   r¨  Ú_source_parentsr«   s      €rR   rn   z*wires_from_svg_document.<locals>.<genexpr>=  s=   øè ø€ ð "
ñ 4<Ñ/� ô	 Ô+¨NÓ;Ó<Ù˜.Ó)Øôñ
 4<ùs   ƒ*-)Úfind_shapes_svg_in_documentr}   Úcallablerˆ   rŠ   )r�   r°   r�   r‰   Úwires_with_metadataÚwires_without_metadatar«   s    `    @rR   r·   r·   !  s|   ù€ ô +ØÐ$5ô€Hð&œ<ó &ô Ð Ô!ô
ñ 3;ó
Ðô !Ð!4°h×6FÑ6FÓGÐGó"
ñ 4<ó"
Ðô !Ð!7¸×9IÑ9IÓJÐJrT   .c                ó˜  ‡‡‡	— 	 ddt         j                  dt        t        df   dt        t        t
        t        t        df   f      fˆ	fd„Š	t         j                  j                  t        | t        t        j                  f«      rt        | «      n| ‰d¬«      Šˆˆˆ	fd„}t        ‰«      rt        j                  d	d
¬«       t!        ‰«      \  }}‰j"                  x}rKt%        |j&                  |z  |j(                  z  «      }t%        |j*                  |z  |j,                  z  «      }nd}d}t/         |«       t1        ||||«      «      S )Nr¼   r½   .rd   c              3   óè   •K  — t        | t        j                  «      r| |f–— y t        | t        j                  t        j                  f«      r g |¢| ‘­}| D ]  } ‰||«      E d {  –—†  Œ y y 7 Œ­wr[   )rš   ræ   r˜   ÚGroupÚUse)r¼   r½   Únew_parentsÚchildÚwalk_svg_elements       €rR   r¶  z5find_shapes_svg_in_document.<locals>.walk_svg_elementM  sr   øè ø€ ô �gœ{×0Ñ0Ô1Ø˜7Ð"Ó"Ü˜¤+×"3Ñ"3´[·_±_Ð!EÔFØ+˜7Ð+ GÑ+ˆKÛ �Ù+¨E°;Ó?×?Ñ?ñ !ð Gð @ús   ƒA$A2Á'A0Á(	A2gffffff9@)Úparse_display_noneÚppic               3   ó†  •K  —  ‰‰«      D ]œ  \  } }‰s	 | j                   d   }|dv rŒ	 t        | t        j
                  «      rt        | «      sŒD| |f–— ŒKt        | t        j                  «      sŒft	        j
                  | «      }t        |«      sŒ‡|j                  «        | |f–— Œž y # t        t        f$ r Y Œ“w xY w­w)NÚ
visibility)ÚhiddenÚcollapse)	rÝ   rÞ   rß   rš   ræ   r  r  r˜   r  )r¼   r½   rº  rc   r�   Ú
parsed_svgr¶  s       €€€rR   r‰   z-find_shapes_svg_in_document.<locals>.elementsa  s¹   øè ø€ Ù 0°Ö <ÑˆG�WÙ$ðØ!(§¡°Ñ!=�JØ!Ð%;Ñ;Ø ð <ô
 ˜'¤;×#3Ñ#3Ô4Ü�w•<Ø! 7Ð*Ó*ä˜G¤[×%6Ñ%6Õ7Ü"×'Ñ'¨Ó0�Ü�t•9Ø—J‘J”LØ! 7Ð*Ó*ñ# !=øô !¤.Ð1ò Ùðüs9   ƒC•B,¨'CÁ!CÁ2 CÂCÂ,B>Â;CÂ=B>Â>CzNposition of SVG document with only one of `width` or `height` may be incorrectr÷   rs   rö   )rb   )ræ   Ú
SVGElementrÊ   r~   r	   r}   ÚSVGÚparserš   rÜ   Úpathlibr  Úresolve_pathÚ$_possibly_problematic_svg_dimensionsrx   ry   Ú_svg_dimensionsrŠ   ra   rƒ   r�   r„   r‚   rˆ   r7   )
r�   r�   r‰   r�   r‚   rŠ   rƒ   r„   r½  r¶  s
    `      @@rR   r¬  r¬  H  s5  ú€ ð OQñ@Ü×'Ñ'ð@Ü27¼ÀsÐ8JÑ2Kð@ä	”%œ¤e¬M¸3Ð,>Ñ&?Ð?Ñ@Ñ	Aõ@ô —‘×&Ñ&ô ˜(¤S¬'¯,©,Ð$7Ô8ô ˜Ô"àà,Øð 'ó €Jö+ô( ,¨JÔ7Ü�‰Ø\Øõ	
ô
 $ JÓ/�M€Eˆ6Ø×$Ñ$Ð$€wÐ$Ü�'—)‘)˜eÑ# g§m¡mÑ3Ó4ˆÜ�'—)‘)˜fÑ$ w§~¡~Ñ5Ó6‰àˆØˆÜ™X›Z¬°¸ÀÀ1Ó)EÓFÐFrT   c                 ó®   — t        | t        j                  «      st        j                  | «      } t        | j	                  «       j                  «       «      S r[   )rš   rÁ  r  rÜ   Ú
expanduserÚresolverê   s    rR   rÂ  rÂ  …  s9   € Ü�dœGŸL™LÔ)Ü�|‰|˜DÓ!ˆÜˆt�‰Ó ×(Ñ(Ó*Ó+Ð+rT   c                 óä   — t        | t        j                  «      r| S t        | t        «      st	        | «      } 	 t        j                  t        | «      «      S # t
        $ r t        d| ›�«      ‚w xY w)Nzcould not make svg path from: )rš   ræ   r  rÜ   rB   rt  r5  rê   s    rR   r:  r:  ‹  sj   € Ü�$œ×(Ñ(Ô)Øˆä�dœCÔ Ü˜tÓ$ˆðDÜ×Ñ¤ D£	Ó*Ð*øÜò DäÐ9¸$¸ÐBÓCÐCðDús   ¹A ÁA/c              #   ó¨   K  — | j                  «       D ];  }|sŒt        |d   t        j                  «      }t        j                  |«      |f–— Œ= y ­w)Nr„  )Úas_subpathsrš   ræ   r1  r  )rc   r<  Ú	is_closeds      rR   r;  r;  ™  sJ   è ø€ ð ×#Ñ#Ö%ˆÚÜ" 7¨2¡;´×0AÑ0AÓBˆIÜ×"Ñ" 7Ó+¨YÐ6Ó6ñ &ùs
   ‚A™9AÚsvgc                 ó(  — d| j                   v }d| j                   v }| j                  }|r,|r*t        | j                  «      t        | j                  «      fS |rF|rDt        | j                  «      t        |j                  | j                  z  |j                  z  «      fS |rF|rDt        |j                  | j                  z  |j                  z  «      t        | j                  «      fS |r*t        |j                  «      t        |j                  «      fS y)Nr�   r‚   )rö   rö   )rÝ   rŠ   ra   r�   r‚   )rÌ  Ú	has_widthÚ
has_heightÚboxs       rR   rÄ  rÄ  ¢  sÔ   € Ø˜3Ÿ:™:Ð%€IØ˜SŸZ™ZÐ'€JØ
�+‰+€CÙ‘ZÜ�S—Y‘YÓ¤ s§z¡zÓ!2Ð2Ð2Ù	‘sÜ�S—Y‘YÓ¤ s§z¡z°C·I±IÑ'=ÀÇ	Á	Ñ'IÓ!JÐJÐJÙ	™Ü�S—Y‘Y §¡Ñ+¨c¯j©jÑ8Ó9¼5ÀÇÁÓ;LÐLÐLÙ	Ü�S—Y‘YÓ¤ s§z¡zÓ!2Ð2Ð2àrT   r½  c                 ó   — | j                   }|€y| j                  j                  d«      }| j                  j                  d«      }t        |«      xr t	        |«      j                  d«       }t        |«      xr t	        |«      j                  d«       }|xr0 | xr+ t        | j                  «      t        |j                  «      k7  xs4 |xr0 | xr+ t        | j                  «      t        |j                  «      k7  S )zy`svgelements` doesn't fully deduce dimensions in some cases
    where only one of `width` and `height` is specified.
    Fr�   r‚   Ú%)	rŠ   rÝ   Úgetr¶   rÜ   Úendswithra   r�   r‚   )r½  rŠ   Ú
attr_widthÚattr_heightÚhas_absolute_widthÚhas_absolute_heights         rR   rÃ  rÃ  ²  sò   € ð × Ñ €GØ€ØØ×"Ñ"×&Ñ& wÓ/€JØ×#Ñ#×'Ñ'¨Ó1€KÜ˜jÓ)ÒO´#°j³/×2JÑ2JÈ3Ó2OÐ.OÐÜ˜{Ó+ÒR´C¸Ó4D×4MÑ4MÈcÓ4RÐ0RÐàò 	<Ø#Ð#ò	<ä�*×"Ñ"Ó#¤u¨W¯]©]Ó';Ñ;òð
 	ò 	>Ø"Ð"ò	>ä�*×#Ñ#Ó$¬¨g¯n©nÓ(=Ñ=ðrT   )rO   )TTF)wÚloggingrÁ  rx   Ú	itertoolsr   Úmathr   r   Útypingr   r   r   r	   r
   r   r   r   r   r   r   r   r   ræ   ÚOCP.BRepAdaptorr   ÚOCP.BRepBuilderAPIr   r   ÚOCP.Geomr   ÚOCP.GeomAbsr   ÚOCP.GeomAdaptorr   ÚOCP.gpr   r   r   r   r   r   ÚOCP.StdFailr   Ú
OCP.TopoDSr    r!   r"   r#   r$   Úocpr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   Ú__all__rŽ   r¢   Ú	getLoggerr\   r­   rÊ   ra   r`   rA   rJ   rÜ   rB   r{   r  r|   r…   r˜   r}   r²  r³  r~   r   r7   r†   rˆ   rC   r¶   r6   r8   r9   r  r
  r:   r;   r<   r7  r=   r>   r?   r@   ro  rq  rr  rµ   r·   r¬  rÂ  r:  r;  r¿  rÄ  rÃ  rb   rT   rR   Ú<module>rè     s]	  ðÜ Û Û Ý ß ÷÷ ÷ õ ó  Ý -ß RÝ %Ý )Ý -ß D× DÝ 'ß RÕ R÷÷ ÷ ÷ ó ò&€ñ" 
‹€Ø × Ñ ‘™›¡&¨¨A¨q£/Ó2Ô 3ð 
ˆ×	Ñ	˜8Ó	$€àØ	ˆ'�#‰,˜˜uÐ
$Ñ%Ø	ˆ'�#‰,˜˜uÐ
$Ñ%Ø	ˆ'�#‰,˜˜u e¨UÐ
2Ñ3Ø	ˆ'�#‰,˜˜u e¨U°E¸5Ð
@ÑAØ	ˆ'�#‰,˜˜u e¨S°#°u¸eÐ
CÑDØ	ˆ'�#‰,Ñðñ€÷Fñ Fð BFòMØ
�>Ñ
"ðMØ19¸#±ðMàóMñ	�X˜nÑ-ð 	¸Sð 	È3ó 	ð ˜s H¨^Ñ$<¸k×>NÑ>NÐNÑO€ˆYÓ OØ%×+Ñ+€ˆiÓ +Ø  ×!2Ñ!2°K·O±OÐ!CÑD€ˆyÓ Dà˜k¨;Ð6Ñ7€
ˆIÓ 7ôˆjô ñ ˆCƒL€ô˜ ™ô ñ ˆCƒL€ð 
ð Ø#ò	2Ø�C˜Ÿ™ vÐ-Ñ.ð2ð ð2ð ð	2ð
 �x ¨x¸Ñ/FÐ GÈÐ JÑKÑLð2ð �u˜Z¨˜]Ñ+Ñ,ò2ó 
ð2ð 
ð Ø#ò	(Ø�C˜Ÿ™ vÐ-Ñ.ð(ð ð(ð ð	(ð
 �zÑ"ò(ó 
ð(ð Ø#ØOSòg
Ø�C˜Ÿ™ vÐ-Ñ.ðg
ð ðg
ð ð	g
ð
 �x ¨x¸Ñ/FÐ GÈÐ JÑKÑLðg
ð Ð˜U :¨q =Ñ1Ñ2Ð4EÀjÑ4QÐQÑRóg
÷T*ñ *ð`;˜kð ;¨h°{Ñ.Có ;ð0G Lð 0G°X¸kÑ5Jó 0Gðf ó ð
?˜kð 
?¨h°{Ñ.Có 
?ð	˜kð 	¨h°{Ñ.Có 	ð@ Ø
ð@ àˆe�H˜[Ñ)¨4Ð/Ñ0Ñ1ó@ ÷F9ñ 9ð" ØØØ òØ
ðð ðð ð	ð
 ðð ðð ðð ˆnÑóð: ØØØ Ø ò1
Ø
ð1
ð ð1
ð ð	1
ð
 ð1
ð ð1
ð ð1
ð ð1
ð ˆnÑó1
ðp ØØØ Ø òØ
ðð ðð ð	ð
 ðð ðð ðð ðð ˆnÑóð4 ØØØ Ø ØòO
Ø$ðO
ð ðO
ð ð	O
ð
 ðO
ð ðO
ð ðO
ð ðO
ð ðO
ð ˆnÑóO
ðn !Ø Øñ#LØÐ*Ð,=Ð=Ñ>ð#Làð#Lð 	ð#Lð ð	#Lð
 ð#Lð ð#Lð ð#Lð ˆnÑó#LðR  Ø Øò1DØð1Dð ð1Dð ð	1Dð
 ð1Dð ˆnÑó1Dðn !ØØòØ�VÑðð ðð ð	ð
 ðð ˆnÑóð. 
ð
 $ò	?Ø�C˜Ÿ™ vÐ-Ñ.ð?à ¨h°}Ñ.EÐFÈÐIÑJð?ð ð	?ð
 �u˜T +Ñ.°°aÐ7Ñ8Ñ9ò?ó 
ð?ð 
ð
 $ò	BØ�C˜Ÿ™ vÐ-Ñ.ðBàðBð ð	Bð
 �u˜T +Ñ.°°dÐ:Ñ;Ñ<òBó 
ðBð $ò	$KØ�C˜Ÿ™ vÐ-Ñ.ð$Kà˜x¨°xÀÑ7NÐ(OÐQRÐ(RÑSÑTð$Kð ð	$Kð
 Ø�e˜D Ñ-¨t°QÐ6Ñ7Ñ8Ø�e˜D Ñ-¨t°TÐ9Ñ:Ñ;ð=ñó$KðT $ò:GØ�C˜Ÿ™ vÐ-Ñ.ð:Gð ð:Gð �u˜\¨5°ÀÐ1CÑ+DÐDÑEÑFó	:Gðz,�u˜WŸ\™\¨3Ð.Ñ/ð ,°Có ,ðD ð D°×1AÑ1Aó Dð7Ø
×
Ñ
ð7àˆe�K×$Ñ$ dÐ*Ñ+Ñ,ó7ð˜Ÿ™ó ð °[·_±_ô rT   