Ë
    £èhm‘  ã                  ój  — d dl mZ d dlmZmZmZmZmZ d dlm	Z	 d dl
mZmZ d dlZd dlm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 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' ddl(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 d dl4Z4er2d dlm5Z5 d dl6m7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl=m>Z> d dlm?Z? d dl@mAZA d dlBmCZC g d¢ZD e4jŠ                  d«      ZF	 dD	 	 	 	 	 dEd„ZG ed e edd¬ «       ed!«       ed"dej�                  e¬#«       ed$d  ej’                  d d%«      e¬#«       ed&d¬ «       ed'ej”                  d(¬)«       ed*d¬ «       ed+ej”                  d,¬)«       ed-ej–                  e#ej˜                  e¬.«      d/œ	«      «      ZM eeM«      ZN G d0„ d1«      ZOe G d2„ d3e.«      «       ZP ed4 edd¬ «       ed$d ¬ «       ed%d5¬ «       ed6d7ej¢                  e¬#«       ed8d9¬ «       ed:d9¬ «      d;œ«      ZR eeR«      ZS ed<d=«      ZT G d>„ d?«      ZUe G d@„ dAe,«      «       ZV G dB„ dCe1eV   «      ZWy)Fé    )Úannotations)ÚTYPE_CHECKINGÚIterableÚOptionalÚSequenceÚIterator)ÚSelf)ÚOrderedDictÚ
namedtupleN)Ú
AuditError)Úregister_entity)ÚconstÚ	validator)ÚDXFAttrÚDXFAttributesÚDefSubclassÚXTypeÚRETURN_DEFAULTÚgroup_code_mapping)ÚTagsÚ
group_tags)ÚNULLVECÚX_AXISÚY_AXISÚZ_AXISÚUVecÚVec3ÚUCSÚOCSé   )Ú
base_classÚSubclassProcessor)Ú	DXFObject)Ú
DXFGraphicÚacdb_entity)ÚObjectCollection)Údefault_copy)ÚAuditor)ÚDrawing)ÚDXFNamespaceÚ	DXFEntity)Ú
BaseLayout)ÚAbstractTagWriter)ÚMatrix44)ÚEntityQuery)Úxref)ÚMLineÚMLineVertexÚ
MLineStyleÚMLineStyleCollectionÚezdxfc              #  ód   K  — d }| D ]%  }|€|–— |}Œ|j                  ||¬«      rŒ |–— |}Œ' y ­w)N©Úabs_tol)Úisclose)Úverticesr8   ÚprevÚvertexs       ú4lib/python3.12/site-packages/ezdxf/entities/mline.pyÚfilter_close_verticesr>   5   s@   è ø€ ð €DÛˆØˆ<ØŠLØ‰Dà—>‘> $°�>Õ8Ø’Ø‘ñ ùs   ‚$0§	0Ú	AcDbMlineé   ÚStandard)ÚdefaultiT  é(   )rB   r   ÚfixeréF   é   éG   éH   Ú__len__)ÚxtypeÚgetteréI   é
   Ústart_locationéÒ   )rJ   rB   r   rD   )	Ú
style_nameÚstyle_handleÚscale_factorÚjustificationÚflagsÚcountÚstyle_element_countrN   Ú	extrusionc                  óp   — e Zd Zdd„Zd	d„ZeZed
d„«       Zdd„Ze	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„«       Z	dd„Z
y)r2   c                ód   — t         | _        t        | _        t        | _        g | _        	 g | _        y ©N)r   Úlocationr   Úline_directionr   Úmiter_directionÚline_paramsÚfill_params©Úselfs    r=   Ú__init__zMLineVertex.__init__¨   s2   € Ü%ˆŒÜ$*ˆÔÜ%+ˆÔð2 35ˆÔð	ð, 35ˆÕó    c                óô   — | j                  «       }| j                  |_        | j                  |_        | j                  |_        t	        | j
                  «      |_        t	        | j                  «      |_        |S rZ   )Ú	__class__r[   r\   r]   Úlistr^   r_   )ra   Úvtxs     r=   Ú__copy__zMLineVertex.__copy__Ý   s^   € Ø�n‰nÓˆØ—}‘}ˆŒØ!×0Ñ0ˆÔØ"×2Ñ2ˆÔÜ˜t×/Ñ/Ó0ˆŒÜ˜t×/Ñ/Ó0ˆŒØˆ
rc   c                ó°  — t        «       }g }d}g }d}|D �]=  \  }}|dk(  rt        |«      |_        Œ|dk(  rt        |«      |_        Œ3|dk(  rt        |«      |_        ŒI|dk(  r.|}|dk(  r$|j
                  j                  t        «       «       Œyg }Œ||dk(  rC|j                  |«       |dz  }|dk(  sŒ�|j
                  j                  t        |«      «       g }ŒÄ|dk(  r.|}|dk(  r$|j                  j                  t        «       «       Œôg }Œ÷|d	k(  sŒý|j                  |«       |dz  }|dk(  s�Œ|j                  j                  t        |«      «       �Œ@ |S )
Nr   é   é   é   éJ   é)   r    éK   é*   )	r2   r   r[   r\   r]   r^   ÚappendÚtupler_   )	ÚclsÚtagsrg   r^   Úline_params_countr_   Úfill_params_countÚcodeÚvalues	            r=   ÚloadzMLineVertex.loadè   sK  € ä‹mˆØ#%ˆØÐØ#%ˆØÐÜ‰KˆD�%Ø�rŠzÜ# E›{�•Ø˜’Ü%)¨%£[�Õ"Ø˜’Ü&*¨5£k�Õ#Ø˜’Ø$)Ð!Ø$¨Ò)Ø—O‘O×*Ñ*¬5«7Õ3à"$‘KØ˜’Ø×"Ñ" 5Ô)Ø! QÑ&Ð!Ø$¨Ó)Ø—O‘O×*Ñ*¬5°Ó+=Ô>Ø"$‘KØ˜’Ø$)Ð!Ø$¨Ò)Ø—O‘O×*Ñ*¬5«7Õ3à"$‘KØ˜“Ø×"Ñ" 5Ô)Ø! QÑ&Ð!Ø$¨Ô)Ø—O‘O×*Ñ*¬5°Ó+=Ö>ð;  ð< ˆ
rc   c                óÌ  — |j                  d| j                  «       |j                  d| j                  «       |j                  d| j                  «       t	        | j
                  | j                  «      D ]m  \  }}|j                  dt        |«      «       |D ]  }|j                  d|«       Œ |j                  dt        |«      «       |D ]  }|j                  d|«       Œ Œo y )Nrj   rk   rl   rm   rn   ro   rp   )	Úwrite_vertexr[   r\   r]   Úzipr^   r_   Ú
write_tag2Úlen)ra   Ú	tagwriterr^   r_   Úparams        r=   Ú
export_dxfzMLineVertex.export_dxf  sÃ   € Ø×Ñ˜r 4§=¡=Ô1Ø×Ñ˜r 4×#6Ñ#6Ô7Ø×Ñ˜r 4×#7Ñ#7Ô8Ü(+¨D×,<Ñ,<¸d×>NÑ>NÖ(OÑ$ˆK˜Ø× Ñ  ¤S¨Ó%5Ô6Û$�Ø×$Ñ$ R¨Õ/ð %à× Ñ  ¤S¨Ó%5Ô6Û$�Ø×$Ñ$ R¨Õ/ñ %ñ )Prc   Nc                óJ  — t        «       }t        |«      |_        t        |«      |_        t        |«      |_        t        |xs g «      |_        t        |xs g «      |_        t        |j                  «      t        |j                  «      k7  rt        j                  d«      ‚|S )Nz+Count mismatch of line- and fill parameters)r2   r   r[   r\   r]   rf   r^   r_   r~   r   ÚDXFValueError)rs   Ústartr\   r]   r^   r_   rg   s          r=   ÚnewzMLineVertex.new  sƒ   € ô ‹mˆÜ˜E“{ˆŒÜ! .Ó1ˆÔÜ" ?Ó3ˆÔÜ˜{Ò0¨bÓ1ˆŒÜ˜{Ò0¨bÓ1ˆŒÜˆs�‰Ó¤3 s§¡Ó#7Ò7Ü×%Ñ%Ð&SÓTÐTØˆ
rc   c                óÆ   — |j                  | j                  «      | _        |j                  | j                  «      | _        |j                  | j                  «      | _        | S )z;Transform MLineVertex by transformation matrix `m` inplace.)Ú	transformr[   Útransform_directionr\   r]   )ra   Úms     r=   r‡   zMLineVertex.transform.  sM   € àŸ™ D§M¡MÓ2ˆŒØ×3Ñ3°D×4GÑ4GÓHˆÔØ ×4Ñ4°T×5IÑ5IÓJˆÔØˆrc   ©ÚreturnÚNone)r‹   r2   )rt   r   r‹   r2   ©r   r-   )NN)r„   r   r\   r   r]   r   r^   ú#Optional[Iterable[Sequence[float]]]r_   rŽ   r‹   r2   )r‰   r.   r‹   r2   )Ú__name__Ú
__module__Ú__qualname__rb   rh   ÚcopyÚclassmethodry   r�   r…   r‡   © rc   r=   r2   r2   §   sˆ   „ ó35ójð €Dàò$ó ð$óL
0ð ð <@Ø;?ðàðð ðð ð	ð
 9ðð 9ðð 
òó ðô$rc   r2   c                  óŒ  ‡ — e Zd ZdZ eeee«      Ze	j                  Ze	j                  Ze	j                  Ze	j                   Ze	j$                  Ze	j(                  Ze	j,                  Ze	j0                  Zd$ˆ fd„Zd„ Zefd%d„Z	 d&	 	 	 d'ˆ fd„Zd(d„Zd)d„Z d*ˆ fd„Z!d*d	„Z"d+ˆ fd
„Z#d,ˆ fd„Z$e%d-d„«       Z&d.d/d„Z'e%d-d„«       Z(e(jR                  d0d„«       Z(e%d-d„«       Z*e*jR                  d0d„«       Z*d1d„Z+d2d„Z,e%d3d„«       Z-d4d„Z.d5d„Z/d6d„Z0d7d„Z1d$d„Z2d8d„Z3d„ Z4d$d„Z5d&d9ˆ fd„Z6d:d„Z7d;d„Z8d;d „Z9d&d<d!„Z:d=ˆ fd"„Z;d>d#„Z<ˆ xZ=S )?r1   ÚMLINEc                ó0   •— t         ‰| �  «        g | _        y rZ   )Úsuperrb   r:   ©ra   re   s    €r=   rb   zMLine.__init__C  s   ø€ Ü‰ÑÔð
 ,.ˆ�rc   c                ó,   — t        | j                  «      S )zCount of MLINE vertices.©r~   r:   r`   s    r=   rI   zMLine.__len__K  s   € ä�4—=‘=Ó!Ð!rc   c                óŒ   — t        |t        «      sJ ‚| j                  D �cg c]  }|j                  «       ‘Œ c}|_        y c c}w rZ   )Ú
isinstancer1   r:   r’   )ra   ÚentityÚcopy_strategyÚvs       r=   Ú	copy_datazMLine.copy_dataO  s5   € Ü˜&¤%Ô(Ð(Ð(Ø-1¯]ª]Ó;©]¨˜1Ÿ6™6�8¨]Ñ;ˆ�ùÒ;s   ¡Ac                ó~   •— t         ‰| �  |«      }|r*|j                  |t        dd¬«      }| j	                  |«       |S )Nr@   F)Úlog)r˜   Úload_dxf_attribsÚfast_load_dxfattribsÚacdb_mline_group_codesÚload_vertices)ra   Ú	processorÚdxfrt   re   s       €r=   r¤   zMLine.load_dxf_attribsS  sK   ø€ ô ‰gÑ& yÓ1ˆÙØ×1Ñ1ØÔ+¨Q°Eð 2ó ˆDð ×Ñ˜tÔ$Øˆ
rc   c                ó^   — | j                   j                  d„ t        |d¬«      D «       «       y )Nc              3  óF   K  — | ]  }t         j                  |«      –— Œ y ­wrZ   )r2   ry   )Ú.0rt   s     r=   Ú	<genexpr>z&MLine.load_vertices.<locals>.<genexpr>_  s    è ø€ ð 
Ù/M tŒK×Ñ˜T×"Ñ/Mùs   ‚!rj   )Ú	splitcode)r:   Úextendr   )ra   rt   s     r=   r§   zMLine.load_vertices^  s(   € Ø�‰×Ññ 
Ü/9¸$È"Õ/Mó
õ 	
rc   c                ó2   — t        | j                  «      dkD  S )Nr    r›   )ra   r   s     r=   Úpreprocess_exportzMLine.preprocess_exportc  s   € ä�4—=‘=Ó! AÑ%Ð%rc   c                óJ  •— | j                  | j                  d«       t        ‰| �  |«       |j	                  t
        j                  t        j                  «       | j                  j                  |t        j                  j                  «       «       | j                  |«       y )NT)Úset_flag_stateÚHAS_VERTICESr˜   Úexport_entityr}   r   ÚSUBCLASS_MARKERÚ
acdb_mlineÚnamer©   Úexport_dxf_attribsÚattribsÚkeysÚexport_vertices©ra   r   re   s     €r=   rµ   zMLine.export_entityi  ss   ø€ ð 	×Ñ˜D×-Ñ-¨tÔ4Ü‰Ñ˜iÔ(Ø×ÑœU×2Ñ2´J·O±OÔDØ�‰×#Ñ# I¬z×/AÑ/A×/FÑ/FÓ/HÔIØ×Ñ˜YÕ'rc   c                óH   — | j                   D ]  }|j                  |«       Œ y rZ   )r:   r�   )ra   r   r<   s      r=   r¼   zMLine.export_verticesr  s   € Ø—m”mˆFØ×Ñ˜iÕ(ñ $rc   c                ón   •— t         ‰| �  |«       |j                  | j                  j                  «       y©z5Register required resources to the resource registry.N)r˜   Úregister_resourcesÚ
add_handler©   rQ   )ra   Úregistryre   s     €r=   rÁ   zMLine.register_resourcesv  s(   ø€ ä‰Ñ" 8Ô,Ø×Ñ˜DŸH™H×1Ñ1Õ2rc   c                óð  •— t         ‰| �  ||«       |j                  | j                  j                  «      }t        |t        «      s3|j                  €J ‚|j                  j                  j                  d«      }t        |t        «      rK|j                  j                  |j                  _        |j                  j                  |j                  _        yd|j                  _        d|j                  _        y)ú3Translate resources from self to the copied entity.NrA   Ú0)r˜   Úmap_resourcesÚget_reference_of_copyr©   rQ   r�   r3   ÚdocÚmline_stylesÚgetÚhandler¸   rP   )ra   ÚcloneÚmappingÚstylere   s       €r=   rÇ   zMLine.map_resources{  s¬   ø€ ä‰Ñ˜e WÔ-Ø×-Ñ-¨d¯h©h×.CÑ.CÓDˆÜ˜%¤Ô,Ø—9‘9Ð(Ð(Ð(Ø—I‘I×*Ñ*×.Ñ.¨zÓ:ˆEÜ�eœZÔ(Ø%*§Y¡Y×%5Ñ%5ˆE�I‰IÔ"Ø#(§9¡9§>¡>ˆE�I‰IÕ à%(ˆE�I‰IÔ"Ø#-ˆE�I‰IÕ rc   c                ó8   — | j                  | j                  «      S )zbReturns ``True`` if MLINE is closed.
        Compatibility interface to :class:`Polyline`
        )Úget_flag_stateÚCLOSEDr`   s    r=   Ú	is_closedzMLine.is_closed‰  s   € ð
 ×"Ñ" 4§;¡;Ó/Ð/rc   c                ó’   — t        |«      }|| j                  k7  r-| j                  | j                  |«       | j	                  «        yy)z|Get/set closed state of MLINE and update geometry accordingly.
        Compatibility interface to :class:`Polyline`
        N)ÚboolrÓ   r³   rÒ   Úupdate_geometry)ra   Ústates     r=   ÚclosezMLine.close�  s>   € ô �U“ˆØ�D—N‘NÒ"Ø×Ñ §¡¨UÔ3Ø× Ñ Õ"ð #rc   c                ó:   — | j                  | j                  «       S )zeGet/Set start caps state. ``True`` to enable start caps and
        ``False`` tu suppress start caps.)rÑ   ÚSUPPRESS_START_CAPSr`   s    r=   Ú
start_capszMLine.start_caps™  s   € ð ×&Ñ& t×'?Ñ'?Ó@Ð@Ð@rc   c                óP   — | j                  | j                  t        |«       «       y©zSet start caps state.N)r³   rÚ   rÕ   ©ra   rx   s     r=   rÛ   zMLine.start_capsŸ  s    € ð 	×Ñ˜D×4Ñ4¼$¸u»+°oÕFrc   c                ó:   — | j                  | j                  «       S )zaGet/Set end caps state. ``True`` to enable end caps and
        ``False`` tu suppress start caps.)rÑ   ÚSUPPRESS_END_CAPSr`   s    r=   Úend_capszMLine.end_caps¤  s   € ð ×&Ñ& t×'=Ñ'=Ó>Ð>Ð>rc   c                óP   — | j                  | j                  t        |«       «       yrÝ   )r³   rà   rÕ   rÞ   s     r=   rá   zMLine.end_capsª  s    € ð 	×Ñ˜D×2Ñ2¼¸U»°OÕDrc   c                ó²   — t        |«      }t        j                  | j                  j                  |«      s"|| j                  _        | j                  «        yy)z5Set the scale factor and update geometry accordingly.N)ÚfloatÚmathr9   r©   rR   rÖ   rÞ   s     r=   Úset_scale_factorzMLine.set_scale_factor¯  s@   € ä�e“ˆÜ�|‰|˜DŸH™H×1Ñ1°5Ô9Ø$)ˆD�H‰HÔ!Ø× Ñ Õ"ð :rc   c                ó�   — t        |«      }| j                  j                  |k7  r"|| j                  _        | j                  «        yy)z{Set MLINE justification and update geometry accordingly.
        See :attr:`dxf.justification` for valid settings.
        N)Úintr©   rS   rÖ   rÞ   s     r=   Úset_justificationzMLine.set_justification¶  s<   € ô �E“
ˆØ�8‰8×!Ñ! UÒ*Ø%*ˆD�H‰HÔ"Ø× Ñ Õ"ð +rc   c                ó  — | j                   €y| j                   j                  j                  | j                  j                  «      }|€9| j                   j
                  j                  | j                  j                  «      }|S )zGet associated MLINESTYLE.N)rÉ   ÚentitydbrË   r©   rQ   rÊ   rP   )ra   Ú_styles     r=   rÏ   zMLine.style¿  sc   € ð �8‰8ÐØØ—‘×"Ñ"×&Ñ& t§x¡x×'<Ñ'<Ó=ˆØˆ>Ø—X‘X×*Ñ*×.Ñ.¨t¯x©x×/BÑ/BÓCˆFØˆrc   c                ó,  — | j                   €t        j                  d«       y	 | j                   j                  |   }t        |t        «      sJ ‚| j                  }t        |j                  «      }d}|�t        |j                  «      |k7  }|| j                  _        |j                  j                  | j                  _        || j                  _        |r| j#                  «        yy# t        j
                  $ r t	        j                  d|› �«      ‚w xY w)znSet MLINESTYLE by name and update geometry accordingly.
        The MLINESTYLE definition must exist.
        Nz-Can't change style of unbounded MLINE entity.zUndefined MLINE style: F)rÉ   ÚloggerÚdebugrÊ   r   ÚDXFKeyErrorrƒ   r�   r3   rÏ   r~   Úelementsr©   rP   rÌ   rQ   rV   rÖ   )ra   r¸   rÏ   Ú	old_styleÚnew_element_countÚresets         r=   Ú	set_stylezMLine.set_styleÉ  sù   € ð �8‰8ÐÜ�L‰LÐHÔIØð	HØ—H‘H×)Ñ)¨$Ñ/ˆEô ˜%¤Ô,Ð,Ð,ð —J‘Jˆ	Ü §¡Ó/ÐØˆØÐ ä˜	×*Ñ*Ó+Ð/@Ñ@ˆEà"ˆ�‰ÔØ %§	¡	× 0Ñ 0ˆ�‰ÔØ'8ˆ�‰Ô$ÙØ× Ñ Õ"ð øô! × Ñ ò 	HÜ×%Ñ%Ð(?À¸vÐ&FÓGÐGð	Hús   ¤C' Ã',Dc                ój   — t        | j                  «      r| j                  d   j                  S t        S )ztReturns the start location of the reference line. Callback function
        for :attr:`dxf.start_location`.
        r   )r~   r:   r[   r   r`   s    r=   rN   zMLine.start_locationå  s*   € ô ˆt�}‰}ÔØ—=‘= Ñ#×,Ñ,Ð,äˆNrc   c                óT   — | j                   D �cg c]  }|j                  ‘Œ c}S c c}w )z+Returns the vertices of the reference line.)r:   r[   )ra   r    s     r=   Úget_locationszMLine.get_locationsî  s"   € à$(§M¢MÓ2¡M˜q�—
“
 MÑ2Ð2ùÒ2s   �%c                óÐ   — t        j                  |«      }|syg }t        | «      r|j                  | j	                  «       «       |j                  |«       | j                  |«       y)zÿAppend multiple vertices to the reference line.

        It is possible to work with 3D vertices, but all vertices have to be in
        the same plane and the normal vector of this plan is stored as
        extrusion vector in the MLINE entity.

        N)r   rf   r~   r¯   rø   Úgenerate_geometry)ra   r:   Úall_verticess      r=   r¯   zMLine.extendò  sW   € ô —9‘9˜XÓ&ˆÙØØˆÜˆtŒ9Ø×Ñ × 2Ñ 2Ó 4Ô5Ø×Ñ˜HÔ%Ø×Ñ˜|Õ,rc   c                óB   — | j                  | j                  «       «       y)z8Regenerate the MLINE geometry based on current settings.N)rú   rø   r`   s    r=   rÖ   zMLine.update_geometry  s   € à×Ñ˜t×1Ñ1Ó3Õ4rc   c           
     óä  — t        t        |d¬«      «      }t        |«      dk(  r| j                  «        yt        |«      dk(  r)t        j                  |d   t        t        «      g| _        y| j                  }|€J d«       ‚t        |j                  «      dk(  r"t        j                  dt        |«      › d�«      ‚dd	„}t        j                  |d   |d   | j                   j"                  ¬
«      }|j%                  |«      D �cg c]  }|j'                  d¬«      ‘Œ }}|j                   j(                  }|j                   j*                  }t-        ||dd «      D ��	cg c]  \  }}	|	|z
  j/                  «       ‘Œ }
}}	| j0                  r;|
j3                  |d   |d   z
  j/                  «       «        ||
d   |
d   «      }|g}n+d}|
j3                  |
d   «       |
d   j5                  |«      g}t-        |
|
dd «      D ]  \  }}|j3                   |||«      «       Œ |€4|j7                  «        |j3                  |
d   j5                  |«      «       n|j3                  |«       t-        ||
|«      D ���cg c]  \  }}}t        j                  |||«      ‘Œ c}}}| _        | j9                  «        | j                  D ]  }|j;                  |j<                  «       Œ yc c}w c c}	}w c c}}}w )z\Regenerate the MLINE geometry for new reference line defined by
        `vertices`.
        ç�íµ ÷Æ°>r7   r   Nr    úvalid MLINE style requiredúNo line elements defined in Ú.c                óJ   — | |z   dz  j                  «       j                  «       S )Nç      à?)Ú	normalizeÚ
orthogonal)Údir1Údir2s     r=   Úmiterz&MLine.generate_geometry.<locals>.miter  s#   € Ø˜D‘[ CÑ'×2Ñ2Ó4×?Ñ?ÓAÐArc   )ÚoriginÚpointÚaxisç        )Úzéÿÿÿÿ)r  r   r  r   )rf   r>   r~   Úclearr2   r…   r   r   r:   rÏ   rñ   r   ÚDXFStructureErrorÚstrr   Úfrom_z_axis_and_point_in_xzr©   rW   Úpoints_from_wcsÚreplaceÚstart_angleÚ	end_angler|   r  rÓ   rq   Ú
rotate_degÚpopÚ_update_parametrizationr‡   Úmatrix)ra   r:   rÏ   r  Úucsr    r  r  Úv1Úv2Úline_directionsÚclosing_miterÚmiter_directionsÚd1Úd2Údr‰   s                    r=   rú   zMLine.generate_geometry  sÊ  € ô Ô-¨hÀÔEÓFˆÜˆx‹=˜AÒØ�J‰JŒLØÜ�‹]˜aÒÜ(Ÿ_™_¨X°a©[¼&Ä&ÓIÐJˆDŒMØà—
‘
ˆØÐ Ð>Ð">Ó>Ð Üˆu�~‰~Ó !Ò#Ü×)Ñ)Ð,HÌÈUËÈÐTUÐ*VÓWÐWó	Bô ×-Ñ-Ø˜A‘;Ø˜1‘+Ø—‘×#Ñ#ô
ˆð /2×.AÑ.AÀ(Ô.KÓLÑ.K¨�A—I‘I �IÕ$Ð.KˆÐLØ—i‘i×+Ñ+ˆØ—I‘I×'Ñ'ˆ	ô 14°H¸hÀqÀr¸lÔ0Kô
Ù0K¡f b¨"ˆR�"‰W×ÑÕ!Ð0Kð 	ñ 
ð �>Š>Ø×"Ñ" H¨Q¡K°(¸2±,Ñ$>×#IÑ#IÓ#KÔLÙ! /°!Ñ"4°oÀbÑ6IÓJˆMØ -˜Ñà ˆMØ×"Ñ" ?°2Ñ#6Ô7Ø /°Ñ 2× =Ñ =¸kÓ JÐKÐä˜/¨?¸1¸2Ð+>Ö?‰FˆB�Ø×#Ñ#¡E¨"¨b£MÕ2ð @ð Ð Ø× Ñ Ô"Ø×#Ñ# O°BÑ$7×$BÑ$BÀ9Ó$MÕNà×#Ñ# MÔ2ô ˜x¨Ð:JÔKõ
áK‘��1�aô �O‰O˜A˜q !Õ$ØKó
ˆŒð 	×$Ñ$Ô&ð —”ˆAØ�K‰K˜Ÿ
™
Õ#ñ ùòC Mùó
ùô,
s   ÄK ÅK%É7"K+c                óÂ  — | j                   j                  }| j                  }| j                   j                  }|j                  D �cg c]  }|j
                  ‘Œ }}t        |«      }t        |«      }d}|| j                  k(  r| }n|| j                  k(  r| }| j                  D ]˜  }	|	j                  j                  |	j                  «      }
	 |t        j                  |
«      z  }|j                  D �cg c]  }|j
                  |z   |z  df‘Œ c}|	_        |j                  D �cg c]  }t%        «       ‘Œ c}|	_        Œš y c c}w # t         $ r d}Y Œmw xY wc c}w c c}w )Nr   ç      ð?r  )r©   rR   rÏ   rS   rñ   ÚoffsetÚminÚmaxÚTOPÚBOTTOMr:   r\   Úangle_betweenr]   rå   ÚsinÚZeroDivisionErrorr^   rr   r_   )ra   ÚscalerÏ   rS   ÚeÚoffsetsÚ
min_offsetÚ
max_offsetÚshiftr<   ÚangleÚstretchÚelementÚ_s                 r=   r  zMLine._update_parametrizationF  s>  € Ø—‘×%Ñ%ˆØ—
‘
ˆàŸ™×.Ñ.ˆØ%*§^¢^Ó4¡^ �1—8“8 ^ˆÐ4Ü˜“\ˆ
Ü˜“\ˆ
ØˆØ˜DŸH™HÒ$Ø�K‰EØ˜dŸk™kÒ)Ø�KˆEà—m”mˆFØ×)Ñ)×7Ñ7¸×8NÑ8NÓOˆEðØ¤$§(¡(¨5£/Ñ1�ð JOÏÊó"ÙIW¸g�'—.‘. 5Ñ(¨GÑ3°SÒ9Èñ"ˆFÔð 49·>²>Ó!B±>¨a¤%¥'°>Ñ!BˆFÕñ $ùò 5øô %ò Ø’ðüò"ùò "Cs$   ÁEÃEÃ4EÄ%EÅEÅEc                ó8   — | j                   j                  «        y)zRemove all MLINE vertices.N)r:   r  r`   s    r=   r  zMLine.clear_  s   € à�‰×ÑÕrc   c                ó4  •— | j                   syt        ‰| �	  |«       d| j                  _        |rW|j
                  j                  | j                  j                  «      }|r&|j                  j                  | j                  _        yd| j                  _        y)zORemove all dependencies from current document.

        (internal API)
        NrÆ   rA   )	Úis_aliver˜   Úremove_dependenciesr©   rQ   rÊ   rË   rP   rÌ   )ra   ÚotherrÏ   re   s      €r=   r;  zMLine.remove_dependenciesc  ss   ø€ ð
 �}Š}Øä‰Ñ# EÔ*Ø #ˆ�‰ÔÙØ×&Ñ&×*Ñ*¨4¯8©8×+>Ñ+>Ó?ˆEÙØ(-¯	©	×(8Ñ(8�—‘Ô%ØØ(ˆ�‰Õrc   c                óB  — | j                   D ]  }|j                  |«       Œ |j                  | j                  j                  «      | j                  _        | j                  j
                  }|j                  t        |||«      «      }t        j                  |j                  |j                  d¬«      rIt        j                  |j                  |j                  d¬«      rt        |«      dz  | j                  _        | j                  «        | j                  |«       | S )z<Transform MLINE entity by transformation matrix `m` inplace.rþ   r7   rF   )r:   r‡   rˆ   r©   rW   rR   r   rå   r9   ÚxÚyr  ÚsumrÖ   Úpost_transform)ra   r‰   r<   r.  Ú	scale_vecs        r=   r‡   zMLine.transformt  sÐ   € à—m”mˆFØ×Ñ˜QÕð $à×2Ñ2°4·8±8×3EÑ3EÓFˆ�‰ÔØ—‘×%Ñ%ˆØ×)Ñ)¬$¨u°e¸UÓ*CÓDˆ	Ü�<‰<˜	Ÿ™ Y§[¡[¸$Õ?ÄDÇLÁLØ�K‰K˜Ÿ™¨dõE
ô %(¨	£N°QÑ$6ˆD�H‰HÔ!à×ÑÔØ×Ñ˜AÔØˆrc   c              #  ó\   K  — ddl m}  || «      D ]  }|j                  | «       |–— Œ y­w)z³Implements the SupportsVirtualEntities protocol.

        This protocol is for consistent internal usage and does not replace
        the method :meth:`virtual_entities`!
        r   )Úvirtual_entitiesN)Úezdxf.render.mlinerD  Úset_source_of_copy)ra   rD  r/  s      r=   Ú__virtual_entities__zMLine.__virtual_entities__„  s-   è ø€ õ 	8á! $Ö'ˆAØ× Ñ  Ô&Ø‹Gñ (ùs   ‚*,c                ó"   — | j                  «       S )a  Yields virtual DXF primitives of the MLINE entity  as LINE, ARC and HATCH
        entities.

        These entities are located at the original positions, but are not stored
        in the entity database, have no handle and are not assigned to any
        layout.

        )rG  r`   s    r=   rD  zMLine.virtual_entities�  s   € ð ×(Ñ(Ó*Ð*rc   c                ó    — ddl m}  || |«      S )aÈ  Explode the MLINE entity as LINE, ARC and HATCH entities into target
        layout, if target layout is ``None``, the target layout is the layout
        of the MLINE. This method destroys the source entity.

        Returns an :class:`~ezdxf.query.EntityQuery` container referencing all DXF
        primitives.

        Args:
            target_layout: target layout for DXF primitives, ``None`` for same layout
                as source entity.
        r   )Úexplode_entity)Úezdxf.exploderJ  )ra   Útarget_layoutrJ  s      r=   ÚexplodezMLine.explode›  s   € õ 	1á˜d MÓ2Ð2rc   c                ó  •‡ ‡‡— dˆˆˆ fd„	}t         ‰‰ �  ‰«       ‰j                  Š‰€y‰j                  j	                  ‰ j
                  j                  «      }t        |t        «      s�‰j                  j	                  ‰ j
                  j                  d«      }|€ |«        nz‰j                  t        j                  dt        ‰ «      › d�‰ ¬«       |j
                  j                  ‰ j
                  _        n%|j
                  j                   ‰ j
                  _
        ‰ j"                  }|€J d«       ‚t%        |j&                  «      }|‰ j
                  _        ‰ j*                  D ]^  }t-        j.                  |j0                  «      r n>t-        j.                  |j2                  «      r nt%        |j4                  «      |k7  sŒ^ n y‰j                  t        j6                  dt        ‰ «      › d�‰ ¬«       ‰ j9                  «        y)	zValidity check.c           	     ó  •— ‰j                  t        j                  d| › dt        ‰«      › d�‰¬«       | ‰j                  _        ‰j                  j                  | «      }|j                  j                  ‰j                  _	        y )NzReset MLINESTYLE to "z" in r  ©rw   ÚmessageÚ
dxf_entity)
Úfixed_errorr   ÚRESET_MLINE_STYLEr  r©   rP   rÊ   rË   rÌ   rQ   )r¸   rÏ   ÚauditorrÉ   ra   s     €€€r=   Úreset_mline_stylez&MLine.audit.<locals>.reset_mline_style®  sr   ø€ Ø×ÑÜ×1Ñ1Ø/°¨v°U¼3¸t»9¸+ÀQÐGØð  ô ð
 #'ˆD�H‰HÔØ×$Ñ$×(Ñ(¨Ó.ˆEØ$)§I¡I×$4Ñ$4ˆD�H‰HÕ!rc   NzFixed invalid style handle in r  rP  rÿ   zExecute geometry update for )rA   )r˜   ÚauditrÉ   rë   rË   r©   rQ   r�   r3   rÊ   rP   rS  r   ÚINVALID_MLINESTYLE_HANDLEr  rÌ   r¸   rÏ   r~   rñ   rV   r:   r   r9   r\   r]   r^   ÚINVALID_MLINE_VERTEXrÖ   )ra   rU  rV  rÏ   Úelement_countr<   rÉ   re   s   ``    @€r=   rW  zMLine.audit«  s¦  û€ ÷	5ô 	‰‰�gÔØ�k‰kˆØˆ;Øð —‘× Ñ  §¡×!6Ñ!6Ó7ˆÜ˜%¤Ô,Ø×$Ñ$×(Ñ(¨¯©×)<Ñ)<¸dÓCˆEØˆ}Ù!Õ#à×#Ñ#Ü#×=Ñ=Ø<¼SÀ»Y¸KÀqÐIØ#ð $ô ð
 ).¯	©	×(8Ñ(8�—‘Õ%à"'§)¡)§.¡.ˆD�H‰HÔð —
‘
ˆØÐ Ð>Ð">Ó>Ð ô ˜EŸN™NÓ+ˆØ'4ˆ�‰Ô$ð —m”mˆFÜ�‰˜v×4Ñ4Ô5ÙÜ�‰˜v×5Ñ5Ô6ÙÜ�6×%Ñ%Ó&¨-Ó7Ùð $ð ð 	×ÑÜ×0Ñ0Ø2´3°t³9°+¸QÐ?Øð 	ô 	
ð
 	×ÑÕrc   c                ó   — t        «       S rZ   )r   r`   s    r=   Úocsz	MLine.ocsé  s   € ô ‹uˆrc   rŠ   ©rž   r	   r‹   rŒ   rZ   ©r¨   zOptional[SubclassProcessor]r‹   r*   )rt   r   r‹   rŒ   )r   r-   r‹   rÕ   ©r   r-   r‹   rŒ   ©rÃ   zxref.Registryr‹   rŒ   ©rÍ   r	   rÎ   zxref.ResourceMapperr‹   rŒ   )r‹   rÕ   )T)r×   rÕ   r‹   rŒ   )rx   rÕ   r‹   rŒ   )rx   rä   r‹   rŒ   )rx   rè   r‹   rŒ   )r‹   zOptional[MLineStyle])r¸   r  r‹   rŒ   )r‹   r   )r‹   ú
list[Vec3])r:   zIterable[UVec]r‹   rŒ   )r:   rb  r‹   rŒ   )r<  zOptional[Drawing]r‹   rŒ   )r‰   r.   r‹   r	   )r‹   zIterator[DXFGraphic])rL  zOptional[BaseLayout]r‹   r/   ©rU  r(   r‹   rŒ   )r‹   r   )>r�   r�   r‘   ÚDXFTYPEr   r!   r%   r·   Ú
DXFATTRIBSr   ÚDXF2000ÚMIN_DXF_VERSION_FOR_EXPORTÚ	MLINE_TOPr)  Ú
MLINE_ZEROÚZEROÚMLINE_BOTTOMr*  ÚMLINE_HAS_VERTICESr´   ÚMLINE_CLOSEDrÒ   ÚMLINE_SUPPRESS_START_CAPSrÚ   ÚMLINE_SUPPRESS_END_CAPSrà   rb   rI   r'   r¡   r¤   r§   r±   rµ   r¼   rÁ   rÇ   ÚpropertyrÓ   rØ   rÛ   Úsetterrá   ræ   ré   rÏ   rõ   rN   rø   r¯   rÖ   rú   r  r  r;  r‡   rG  rD  rM  rW  r\  Ú__classcell__©re   s   @r=   r1   r1   6  sŸ  ø„ à€GÙ˜z¨;¸
ÓC€JØ!&§¡ÐØ
�/‰/€CØ×Ñ€DØ×Ñ€FØ×+Ñ+€LØ×Ñ€FØ×9Ñ9ÐØ×5Ñ5Ðõ.ò"ð 5Aô <ð
 8<ð	Ø4ð	à	õ	ó
ó
&õ(ó)õ3õ
.ð ò0ó ð0ô#ð òAó ðAð
 ×ÑòGó ðGð ò?ó ð?ð
 ‡_�_òEó ðEó#ó#ð òó ðó#ó8ó3ó-ó"5ó=$ò~Có2ö)ó"ó 
ó	+ô3õ <÷|rc   r1   ÚAcDbMlineStyleÚ é>   é   é3   éZ   é4   )r¸   rT   ÚdescriptionÚ
fill_colorr  r  ÚMLineStyleElementzoffset color linetypec                  ó\   — e Zd Zddd„Zdd„Zd„ Zd„ Zd„ Zdd„Zddd„Z	e
dd	„«       Zdd
„Zy)ÚMLineStyleElementsNc           	     óô   — g | _         |ro| j                  |«      D ]Z  }t        |j                  dd«      |j                  dd«      |j                  dd«      «      }| j                   j	                  |«       Œ\ y y )Nr&  r%  Úcolorr   ÚlinetypeÚBYLAYER)rñ   Ú
parse_tagsr}  rË   rq   )ra   rt   r/  Údatas       r=   rb   zMLineStyleElements.__init__  sl   € Ø13ˆŒÙØ—_‘_ TÖ*�Ü(Ø—E‘E˜( CÓ(Ø—E‘E˜' 1Ó%Ø—E‘E˜* iÓ0ó�ð
 —‘×$Ñ$ TÕ*ñ +ð rc   c                óN   — t        «       }t        | j                  «      |_        |S rZ   )r  rf   rñ   )ra   rñ   s     r=   r’   zMLineStyleElements.copy#  s    € Ü%Ó'ˆä  §¡Ó/ˆÔØˆrc   c                ó,   — t        | j                  «      S rZ   )r~   rñ   r`   s    r=   rI   zMLineStyleElements.__len__)  s   € Ü�4—=‘=Ó!Ð!rc   c                ó    — | j                   |   S rZ   )rñ   )ra   Úitems     r=   Ú__getitem__zMLineStyleElements.__getitem__,  s   € Ø�}‰}˜TÑ"Ð"rc   c                ó,   — t        | j                  «      S rZ   )Úiterrñ   r`   s    r=   Ú__iter__zMLineStyleElements.__iter__/  s   € Ü�D—M‘MÓ"Ð"rc   c                ó´   — |j                   } |dt        | j                  «      «       | j                  D ]!  \  }}} |d|«        |d|«        |d|«       Œ# y )NrG   é1   rv  é   )r}   r~   rñ   )ra   r   Ú	write_tagr&  r�  r‚  s         r=   r�   zMLineStyleElements.export_dxf2  sS   € Ø×(Ñ(ˆ	Ù�"”c˜$Ÿ-™-Ó(Ô)Ø'+§}¤}Ñ#ˆF�E˜8Ù�b˜&Ô!Ù�b˜%Ô Ù�a˜Õ"ñ (5rc   c           	     ó†   — | j                   j                  t        t        |«      t	        |«      t        |«      «      «       y)aF  Append a new line element.

        Args:
            offset: normal offset from the reference line: if justification is
                ``MLINE_ZERO``, positive values are above and negative values
                are below the reference line.
            color: :ref:`ACI` value
            linetype: linetype name

        N)rñ   rq   r}  rä   rè   r  )ra   r&  r�  r‚  s       r=   rq   zMLineStyleElements.append:  s.   € ð 	�‰×ÑÜœe F›m¬S°«Z¼¸X»ÓGõ	
rc   c              #  ó~   K  — d }| D ]+  \  }}|dk(  r|�|–— d|i}Œ|dk(  r||d<   Œ!|dk(  sŒ'||d<   Œ- |�|–— y y ­w)Nr�  r&  rv  r�  r�  r‚  r”   )rt   Ú	collectorrw   rx   s       r=   r„  zMLineStyleElements.parse_tagsI  si   è ø€ àˆ	Û‰KˆD�%Ø�rŠzØÐ(Ø#’OØ% uÐ-‘	Ø˜’Ø%*�	˜'Ò"Ø˜“Ø(-�	˜*Ò%ð  ð Ð Ø‹Oð !ùs   ‚+=®=c                ó¬   — | j                   D �cg c]  }|j                  ‘Œ }}t        |«      D �cg c]  }|j                  |«      ‘Œ c}S c c}w c c}w rZ   )rñ   r&  ÚsortedÚindex)ra   r/  r0  rx   s       r=   Úordered_indicesz"MLineStyleElements.ordered_indicesX  sH   € Ø%)§]¢]Ó3¡] �1—8“8 ]ˆÐ3Ü28¸´/ÓB±/¨�—‘˜eÕ$°/ÑBÐBùò 4ùÚBs
   �A±ArZ   )rt   zOptional[Tags])r‹   r  r�   )r   rƒ  )r&  rä   r�  rè   r‚  r  r‹   rŒ   )rt   r   r‹   zIterator[dict]©r‹   z	list[int])r�   r�   r‘   rb   r’   rI   rŠ  r�  r�   rq   Ústaticmethodr„  r˜  r”   rc   r=   r  r    s?   „ ô	+óò"ò#ò#ó#ô
ð òó ðôCrc   r  c                  óT  ‡ — e Zd ZdZ eee«      Zej                  Z
ej                  Zej                  Zej                  Zej"                  Zej&                  Zej*                  Zej.                  Zˆ fd„Zefdd„Z	 d	 	 	 dˆ fd„Zdˆ fd„Zd„ Zdd„Zdˆ fd„Z dˆ fd	„Z!dˆ fd
„Z"ˆ xZ#S )r3   Ú
MLINESTYLEc                ó@   •— t         ‰| �  «        t        «       | _        y rZ   )r˜   rb   r  rñ   r™   s    €r=   rb   zMLineStyle.__init__j  s   ø€ Ü‰ÑÔÜ*Ó,ˆ�rc   c                óf   — t        |t        «      sJ ‚| j                  j                  «       |_        y rZ   )r�   r3   rñ   r’   )ra   rž   rŸ   s      r=   r¡   zMLineStyle.copy_datan  s&   € Ü˜&¤*Ô-Ð-Ð-ØŸ-™-×,Ñ,Ó.ˆ�rc   c                óP  •— t         ‰| �  |«      }|rz|j                  d«      }|€#t        j                  d|j
                  › d�«      ‚	 |j                  d«      }t        ||dz   d  «      | _        ||d …= |j                  |t        |«       |S # t        j                  $ r Y Œ.w xY w)Nr    z'missing 'AcDbMLine' subclass in MLINE(#Ú)rG   )r˜   r¤   Úsubclass_by_indexr   r  rÌ   Ú	tag_indexr  rñ   rƒ   r¥   Úacdb_mline_style_group_codes)ra   r¨   r©   rt   Úindex71re   s        €r=   r¤   zMLineStyle.load_dxf_attribsr  s¶   ø€ ô ‰gÑ& yÓ1ˆÙØ×.Ñ.¨qÓ1ˆDØˆ|Ü×-Ñ-Ø=¸c¿j¹j¸\ÈÐKóð ð	#àŸ.™.¨Ó,�ô
 !3°4¸À!¹¸Ð3FÓ G�”à˜™�NØ×*Ñ*¨3Ô0LÈdÔSØˆ
øô ×&Ñ&ò áðús   Á
B ÂB%Â$B%c                ó&  •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       | j                  j                  |t
        j                  j                  «       «       | j                  j                  |«       y rZ   )r˜   rµ   r}   r   r¶   Úacdb_mline_styler¸   r©   r¹   rº   r»   rñ   r�   r½   s     €r=   rµ   zMLineStyle.export_entityŠ  sc   ø€ Ü‰Ñ˜iÔ(Ø×ÑœU×2Ñ2Ô4D×4IÑ4IÔJØ�‰×#Ñ# IÔ/?×/GÑ/G×/LÑ/LÓ/NÔOØ�‰× Ñ  Õ+rc   c                ó  — | j                   rs| j                  j                  }d„ | j                   j                  j	                  «       D «       }|D ],  }|j                  j
                  |k(  sŒ|j                  «        Œ. yy)z®Update all MLINE entities using this MLINESTYLE.

        The update is required if elements were added or removed or the offset
        of any element was changed.

        c              3  óH   K  — | ]  }|j                  «       d k(  sŒ|–— Œ y­w)r–   N)Údxftype)r¬   r/  s     r=   r­   z(MLineStyle.update_all.<locals>.<genexpr>™  s    è ø€ ÐVÑ!;˜A¸q¿y¹y»{ÈgÓ?U”aÑ!;ùs   ‚"›"N)rÉ   r©   rÌ   rë   ÚvaluesrQ   rÖ   )ra   rÌ   ÚmlinesÚmlines       r=   Ú
update_allzMLineStyle.update_all�  sb   € ð �8Š8Ø—X‘X—_‘_ˆFÙV §¡×!2Ñ!2×!9Ñ!9Ô!;ÓVˆFÛ�Ø—9‘9×)Ñ)¨VÓ3Ø×)Ñ)Õ+ñ  ð rc   c                ó6   — | j                   j                  «       S rZ   )rñ   r˜  r`   s    r=   r˜  zMLineStyle.ordered_indicesž  s   € Ø�}‰}×,Ñ,Ó.Ð.rc   c                ó´   •— t         ‰| �  |«       t        | j                  «      dk(  r0|j	                  t
        j                  dt        | «      › d�| ¬«       y y )Nr   r   r  rP  )r˜   rW  r~   rñ   Ú	add_errorr   Ú INVALID_MLINESTYLE_ELEMENT_COUNTr  )ra   rU  re   s     €r=   rW  zMLineStyle.audit¡  sT   ø€ Ü‰‰�gÔÜˆt�}‰}Ó Ò"Ø×ÑÜ×@Ñ@Ø6´s¸4³y°kÀÐCØð õ ð #rc   c                ó|   •— t         ‰| �  |«       | j                  D ]  }|j                  |j                  «       Œ yrÀ   )r˜   rÁ   rñ   Úadd_linetyper‚  )ra   rÃ   r6  re   s      €r=   rÁ   zMLineStyle.register_resourcesª  s2   ø€ ä‰Ñ" 8Ô,Ø—}”}ˆGØ×!Ñ! '×"2Ñ"2Õ3ñ %rc   c           
     ó  •— t        |t        «      sJ ‚t        ‰| �  ||«       | j                  D �cg c]<  }t        |j                  |j                  |j                  |j                  «      «      ‘Œ> c}| j                  _        yc c}w )rÅ   N)
r�   r3   r˜   rÇ   rñ   r}  r&  r�  Úget_linetyper‚  )ra   rÍ   rÎ   r6  re   s       €r=   rÇ   zMLineStyle.map_resources°  s|   ø€ ä˜%¤Ô,Ð,Ð,Ü‰Ñ˜e WÔ-ð  Ÿ=š=ó"
ñ )�ô Ø—‘Ø—‘Ø×$Ñ$ W×%5Ñ%5Ó6õð
 )ñ"
ˆ�‰Õùò "
s   ²ABr]  rZ   r^  r_  r™  rc  r`  ra  )$r�   r�   r‘   rd  r   r!   r¦  re  r   ÚMLINESTYLE_FILLÚFILLÚMLINESTYLE_MITERÚMITERÚMLINESTYLE_START_SQUAREÚSTART_SQUAREÚMLINESTYLE_START_INNER_ARCÚSTART_INNER_ARCÚMLINESTYLE_START_ROUNDÚSTART_ROUNDÚMLINESTYLE_END_SQUAREÚ
END_SQUAREÚMLINESTYLE_END_INNER_ARCÚEND_INNER_ARCÚMLINESTYLE_END_ROUNDÚ	END_ROUNDrb   r'   r¡   r¤   rµ   r­  r˜  rW  rÁ   rÇ   rr  rs  s   @r=   r3   r3   ]  sº   ø„ à€GÙ˜zÐ+;Ó<€JØ× Ñ €DØ×"Ñ"€EØ×0Ñ0€LØ×6Ñ6€OØ×.Ñ.€KØ×,Ñ,€JØ×2Ñ2€MØ×*Ñ*€Iô-ð 5Aô /ð
 8<ðØ4ðà	õõ0,ò,ó/õõ4÷
ñ 
rc   r3   c                  ó(   ‡ — e Zd Zdˆ fd„Zdd„Zˆ xZS )r4   c                óJ   •— t         ‰| �  |dd¬«       | j                  «        y )NÚACAD_MLINESTYLErœ  )Ú	dict_nameÚobject_type)r˜   rb   Úcreate_required_entries)ra   rÉ   re   s     €r=   rb   zMLineStyleCollection.__init__¿  s$   ø€ Ü‰Ñ˜Ð(9À|ÐÔTØ×$Ñ$Õ&rc   c                ó    — d| vrJ| j                  d«      }|j                  j                  dd«       |j                  j                  dd«       y y )NrA   r  rw  g      à¿)r…   rñ   rq   )ra   rž   s     r=   rË  z,MLineStyleCollection.create_required_entriesÃ  sE   € Ø˜TÑ!Ø!%§¡¨*Ó!5ˆFØ�O‰O×"Ñ" 3¨Ô,Ø�O‰O×"Ñ" 4¨Õ-ð "rc   )rÉ   r)   rŠ   )r�   r�   r‘   rb   rË  rr  rs  s   @r=   r4   r4   ¾  s   ø„ õ'÷.rc   r4   )gê-�™—q=)r:   úIterable[Vec3]r8   rä   r‹   rÍ  )XÚ
__future__r   Útypingr   r   r   r   r   Útyping_extensionsr	   Úcollectionsr
   r   rå   Úezdxf.auditr   Úezdxf.entities.factoryr   Úezdxf.lldxfr   r   Úezdxf.lldxf.attributesr   r   r   r   r   r   Úezdxf.lldxf.tagsr   r   Ú
ezdxf.mathr   r   r   r   r   r   r   r   Ú	dxfentityr!   r"   Údxfobjr#   Údxfgfxr$   r%   Úobjectcollectionr&   r’   r'   Úloggingr(   Úezdxf.documentr)   Úezdxf.entitiesr*   r+   Úezdxf.layoutsr,   Úezdxf.lldxf.tagwriterr-   r.   Úezdxf.queryr/   r5   r0   Ú__all__Ú	getLoggerrî   r>   Úis_not_zeroÚis_in_integer_rangeÚcallbackÚpoint3dÚis_not_null_vectorr·   r¦   r2   r1   Úis_valid_aci_colorr¦  r£  r}  r  r3   r4   r”   rc   r=   Ú<module>rê     sn  ðõ #÷õ õ $ç /Û å "Ý 2ß (÷÷ ÷ .ß L× LÓ Lç 4Ý ß +Ý .Ý Û áÝ#Ý&ß6Ý(Ý7Ý#Ý'Ýâ
H€Ø	ˆ×	Ñ	˜7Ó	#€ð 05ðØðØ',ðàóñ ØÙá! !¨ZÔ8Ù# C›LÙ#ØØØ#×/Ñ/Ø$ô	ñ %ØØØ7˜)×7Ñ7¸¸1Ó=Ø$ô	ñ ˜R¨Ô+á˜R u§~¡~¸iÔHá#*¨2°qÔ#9á%Ø˜%Ÿ.™.Ð1Aôñ !ØØ—m‘mØØ#×6Ñ6Ø$ôñE8	
ó:ó=€
ñ| ,¨JÓ7Ð ÷LLñ Lð^ ôuˆJó uó ðuñp Øá˜ :Ô.ñ ˜ QÔ'á˜q¨"Ô-áØØØ×2Ñ2Ø ô	
ñ ˜r¨2Ô.á˜R¨Ô,ñ1 ó#Ð ñH  2Ð2BÓCÐ ÙÐ2Ð4KÓLÐ ÷CCñ CCðL ô]
�ó ]
ó ð]
ô@	.Ð+¨JÑ7õ 	.rc   