Ë
    Ûvžj*`  ã                   óä  — d Z ddlZddl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 ddlmZmZ ddlmZ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  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.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z:m;Z; ejx                  e3jz                  ej|                  e3j~                  ej€                  e3j‚                  ej„                  e3j†                  ejˆ                  e3jŠ                  ejŒ                  e3jŽ                  ej�                  e3j’                  ej”                  e3j–                  iZLejx                  dej|                  eej€                  dej„                  eejˆ                  dejŒ                  dej�                  dej”                  diZMe
jœ                  de
jž                  de
j                   de
j¢                  de
j¤                  de
j¦                  de
j¨                  de
jª                  d e
j¬                  d!e
j®                  d"e
j°                  d#iZYe
j´                  d$e
j¶                  d%e
j¸                  d&e
jº                  d'e
j¼                  d(e
j¾                  de
jÀ                  de
jÂ                  d"e
jÄ                  d#i	Zcejx                  dej|                  ejÈ                  ej€                  ejÈ                  ej„                  ejÊ                  ejˆ                  ejÊ                  ejŒ                  ejÌ                  ej�                  ejÌ                  ej”                  ejÌ                  iZgd)„ Zhd*„ Zi G d+„ d,«      Zj G d-„ d.ek«      Zl G d/„ d0el¬1«      Zm G d2„ d3«      Zn G d4„ d5«      Zo G d6„ d7«      Zp G d8„ d9eq«      Zr G d:„ d;«      Zsd<esfd=„Zt G d>„ des«      Zu G d?„ des«      Zv G d@„ des«      Zw G dA„ dBes«      Zx G dC„ dDes«      Zy G dE„ des«      Zzy)Fz3A minimum subset of build123d to support backend.pyé    N)ÚEnumÚauto)ÚIterable)Ú	BRep_Tool)ÚBRepAdaptor_CurveÚBRepAdaptor_Surface)ÚBRepBuilderAPI_TransformÚBRepBuilderAPI_MakeVertex)Ú	BRepGPropÚBRepGProp_Face)ÚBRepLib_FindSurface)Ú	BRepTools)ÚGCPnts_AbscissaPoint)Ú
Geom_Plane)	Úgp_DirÚgp_PntÚgp_TrsfÚgp_VecÚgp_GTrsfÚgp_Ax1Úgp_Ax3Úgp_EulerSequenceÚgp_Quaternion)ÚGProp_GProps)ÚStandard_FailureÚStandard_NoSuchObject)ÚTopLoc_Location)ÚTopoDSÚTopoDS_VertexÚTopoDS_Iterator)ÚGeomAPI_ProjectPointOnSurf)Ú	get_facesÚ	get_edgesÚget_verticesÚVertexÚWireÚShellÚSolidÚCompoundÚPLANEÚCYLINDERÚCONEÚSPHEREÚTORUSÚBEZIERÚBSPLINEÚ
REVOLUTIONÚ	EXTRUSIONÚOFFSETÚOTHERÚLINEÚCIRCLEÚELLIPSEÚ	HYPERBOLAÚPARABOLAc                 óX   — | j                  «       rt        d«      ‚| j                  «       S )z&Return TopoDS_Shape's TopAbs_ShapeEnumzNull TopoDS_Shape object)ÚIsNullÚ
ValueErrorÚ	ShapeType)Úobjs    úe/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/ocp_vscode/build123d.pyÚ	shapetyper@   l   s#   € à
‡z�z„|ÜÐ3Ó4Ð4à�=‰=‹?Ðó    c                 ó:   — t         t        | «         } || «      }|S )znDowncasts a TopoDS object to suitable specialized type

    Args:
      obj: TopoDS_Shape:

    Returns:

    )Údowncast_LUTr@   )r>   Ú
f_downcastÚreturn_values      r?   ÚdowncastrF   t   s!   € ô œi¨›nÑ-€JÙ˜c“?€LàÐrA   c                   ór   — e Zd Zdd„Zd„ Zd„ Zed„ «       Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚVectorNc                 ó6  — t        |t        t        f«      rt        |j	                  «       «      | _        n‡t        |t        «      r|| _        not        |t        t        f«      rt        |Ž | _        nKt        |t        «      r)t        |j
                  j	                  «       «      | _        nt        |||«      | _        | j
                  j                  «       | _	        | j
                  j                  «       | _
        | j
                  j                  «       | _        y ©N)Ú
isinstancer   r   r   ÚXYZÚwrappedÚlistÚtuplerH   ÚXÚYÚZ)ÚselfÚxÚyÚzs       r?   Ú__init__zVector.__init__Š   s±   € Ü�aœ&¤&Ð)Ô*Ü! !§%¡%£'›?ˆD�LÜ˜œ6Ô"ØˆD�LÜ˜œD¤%˜=Ô)Ü! 1˜:ˆD�LÜ˜œ6Ô"Ü! !§)¡)§-¡-£/Ó2ˆD�Lä! ! Q¨›?ˆDŒLà—‘—‘Ó!ˆŒØ—‘—‘Ó!ˆŒØ—‘—‘Ó!ˆ�rA   c                 óH   — t        | j                  j                  «       «      S rJ   )rH   rM   Ú
Normalized©rS   s    r?   Ú
normalizedzVector.normalizedš   s   € Ü�d—l‘l×-Ñ-Ó/Ó0Ð0rA   c                 ó   — | S rJ   © rZ   s    r?   ÚcenterzVector.center�   s   € ØˆrA   c                 ó6   — | j                   j                  «       S rJ   )rM   Ú	MagnituderZ   s    r?   ÚlengthzVector.length    s   € à�|‰|×%Ñ%Ó'Ð'rA   c                 ó*  — t        |t        «      r0t        | j                  j                  |j                  «      «      }|S t        |t        «      r9t        | j                  j                  t        |«      j                  «      «      }|S t        d«      ‚)Nz5Only Vectors or tuples can be subtracted from Vectors)rK   rH   rM   Ú
SubtractedrO   r<   )rS   ÚvecÚresults      r?   Úsubz
Vector.sub¤   st   € Ü�cœ6Ô"Ü˜DŸL™L×3Ñ3°C·K±KÓ@ÓAˆFð ˆô ˜œUÔ#Ü˜DŸL™L×3Ñ3´F¸3³K×4GÑ4GÓHÓIˆFð ˆô ÐTÓUÐUrA   c                 ó$   — | j                  |«      S rJ   )rf   ©rS   rd   s     r?   Ú__sub__zVector.__sub__®   s   € Ø�x‰x˜‹}ÐrA   c                 óJ   — t        | j                  j                  |«      «      S rJ   )rH   rM   Ú
Multiplied©rS   Úscales     r?   ÚmultiplyzVector.multiply±   s   € Ü�d—l‘l×-Ñ-¨eÓ4Ó5Ð5rA   c                 ó$   — | j                  |«      S rJ   ©rn   rl   s     r?   Ú__mul__zVector.__mul__´   ó   € Ø�}‰}˜UÓ#Ð#rA   c                 ó*   — | j                  d|z  «      S )Ng      ð?rp   )rS   Údenoms     r?   Ú__truediv__zVector.__truediv__·   s   € Ø�}‰}˜S 5™[Ó)Ð)rA   c                 ó$   — | j                  |«      S rJ   rp   rl   s     r?   Ú__rmul__zVector.__rmul__º   rr   rA   c                 óH   — | j                   | j                  | j                  fS rJ   )rP   rQ   rR   rZ   s    r?   Úto_tuplezVector.to_tuple½   s   € Ø—‘˜Ÿ™ §¡Ð'Ð'rA   c                 óH   — t        | j                  j                  «       «      S rJ   )r   rM   rL   rZ   s    r?   Úto_pntzVector.to_pntÀ   ó   € Ü�d—l‘l×&Ñ&Ó(Ó)Ð)rA   c                 óH   — t        | j                  j                  «       «      S rJ   )r   rM   rL   rZ   s    r?   Úto_dirzVector.to_dirÃ   r|   rA   c                 ór   — t        j                  | j                  j                  |j                  «      «      S rJ   )ÚmathÚdegreesrM   ÚAnglerh   s     r?   Ú	get_anglezVector.get_angleÆ   s$   € Ü�|‰|˜DŸL™L×.Ñ.¨s¯{©{Ó;Ó<Ð<rA   c                 ó`   — dt        | j                  | j                  | j                  f«      z   S )NzVector: )ÚstrrP   rQ   rR   rZ   s    r?   Ú__repr__zVector.__repr__É   s%   € ØœC §¡¨¯©°·±Ð 8Ó9Ñ9Ð9rA   ©NN)Ú__name__Ú
__module__Ú__qualname__rW   r[   r^   Úpropertyra   rf   ri   rn   rq   ru   rw   ry   r{   r~   rƒ   r†   r]   rA   r?   rH   rH   ‰   s\   „ ó"ò 1òð ñ(ó ð(òòò6ò$ò*ò$ò(ò*ò*ò=ó:rA   rH   c                   ó<   — e Zd Zed„ «       Zed„ «       Zed„ «       Zy)ÚAxisMetac                 ó   — t        dd«      S )N©r   r   r   )é   r   r   ©ÚAxis©Úclss    r?   rP   z
AxisMeta.XÓ   ó   € ä�I˜yÓ)Ð)rA   c                 ó   — t        dd«      S )Nr�   )r   r�   r   r‘   r“   s    r?   rQ   z
AxisMeta.Y×   r•   rA   c                 ó   — t        dd«      S )Nr�   )r   r   r�   r‘   r“   s    r?   rR   z
AxisMeta.ZÛ   r•   rA   N)rˆ   r‰   rŠ   r‹   rP   rQ   rR   r]   rA   r?   r�   r�   Ò   s<   „ Øñ*ó ð*ð ñ*ó ð*ð ñ*ó ñ*rA   r�   c                   ó*   — e Zd Zdd„Zd„ Zed„ «       Zy)r’   Nc                 óŒ   — |€t        ddd«      n
t        |«      | _        |€t        ddd«      | _        y t        |«      | _        y )Nr   r�   )rH   ÚpositionÚ	direction)rS   rš   r›   s      r?   rW   zAxis.__init__á   s<   € Ø+3Ð+;œ˜q ! QœÄÈÓAQˆŒØ,5Ð,=œ  1 a›ˆ�Ä6È)ÓCTˆ�rA   c                 ót   — d| j                   j                  «       › d| j                  j                  «       › d�S )NÚ(Ú,Ú))rš   ry   r›   rZ   s    r?   r†   zAxis.__repr__å   s3   € Ø�4—=‘=×)Ñ)Ó+Ð,¨A¨d¯n©n×.EÑ.EÓ.GÐ-HÈÐJÐJrA   c                 óV   — t        t        | j                  | j                  ¬«      «      S )N)Úz_dir)ÚLocationÚPlanerš   r›   rZ   s    r?   ÚlocationzAxis.locationè   s   € äœ˜dŸm™m°4·>±>ÔBÓCÐCrA   r‡   )rˆ   r‰   rŠ   rW   r†   r‹   r¤   r]   rA   r?   r’   r’   à   s$   „ óUòKð ñDó ñDrA   r’   )Ú	metaclassc                   ó   — e Zd Zd„ Zy)ÚMatrixc                 ó"   — t        «       | _        y rJ   )r   rM   rZ   s    r?   rW   zMatrix.__init__ó   s   € Ü“zˆ�rA   N)rˆ   r‰   rŠ   rW   r]   rA   r?   r§   r§   ò   s   „ ó"rA   r§   c                   óh   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zdeee	e	e	f   ee	e	e	f   f   fd„Z
d„ Zd„ Zy	)
r¢   c                 ó:   — t        | j                  «       d   «      S )Nr   ©rH   ry   rZ   s    r?   rš   zLocation.positionþ   s   € ä�d—m‘m“o aÑ(Ó)Ð)rA   c                 ó>  — t        «       }t        |«      dk(  r�nît        |«      dk(  �r%|d   }t        |t        t        f«      r&|j                  t        |«      j                  «       �nžt        |t        «      rxt        |j                  j                  «       |j                  j                  «       |j                  j                  «       «      }|j                  |«       |j                  «        �nt        |d   t         «      r|j                  | _        y t        |t"        «      r|| _        y t        |t         «      r|}�nÅt%        d«      ‚t        |«      dk(  �rÀt        |d   t        t        f«      �r+t        |d   t        t        f«      rb|d   D �cg c]  }t'        j(                  |«      ‘Œ }}t+        «       } |j,                  t.        j0                  g|¢­Ž  |j3                  |«       n‡t        |d   t        t4        f«      rnt        |d   t6        t8        f«      rUt'        j(                  |d   «      }t+        «       }|j-                  t.        j0                  dd|«       |j3                  |«       |j                  t        |d   «      j                  «       �nf|\  }}	t        t        |	«      j                  «       |j                  j                  «       |j                  j                  «       «      }|j                  |«       |j                  «        nët        |«      dk(  rÝt        |d   t        t        f«      r•t        |d   t        t        f«      r|t        |d   t6        t8        f«      rc|\  }}
}|j3                  t;        t        «       j                  «       t        |
«      j                  «       «      t'        j(                  |«      «       nt%        d«      ‚|j                  t        |«      j                  «       t#        |«      | _        y c c}w )Nr   r�   zUnexpected parametersé   é   z'Unsupported argument types for Location)r   ÚlenrK   rH   r   ÚSetTranslationPartrM   r£   r   Úoriginr{   r¡   r~   Úx_dirÚSetTransformationÚInvertr¢   r   Ú	TypeErrorr€   Úradiansr   ÚSetEulerAnglesr   Úgp_Intrinsic_XYZÚSetRotationrO   ÚintÚfloatr   )rS   ÚargsÚ	transformÚtranslationÚcoordinate_systemÚaÚrotationÚ
quaternionÚangler±   Úaxiss              r?   rW   zLocation.__init__  sF  € ä“Iˆ	äˆt‹9˜Š>Ùä�‹Y˜!‹^Ø˜q™'ˆKä˜+¬´Ð'9Ô:Ø×,Ñ,¬V°KÓ-@×-HÑ-HÖIÜ˜K¬Ô/Ü$*Ø×&Ñ&×-Ñ-Ó/Ø×%Ñ%×,Ñ,Ó.Ø×%Ñ%×,Ñ,Ó.ó%Ð!ð
 ×+Ñ+Ð,=Ô>Ø× Ñ Ö"Ü˜D ™G¤XÔ.Ø*×2Ñ2�”ØÜ˜K¬Ô9Ø*�”ØÜ˜K¬Ô1Ø'’	äÐ 7Ó8Ð8ä�‹Y˜!‹^Ü˜$˜q™'¤F¬HÐ#5Õ6Ü˜d 1™g¬´Ð'9Ô:Ø9=¸aºÓA¹°A¤§¡¨Q¥¸�HÐAÜ!.£�JØ-�J×-Ñ-Ü(×9Ñ9ðØ<Dóð ×)Ñ)¨*Õ5Ü  Q¡¬&´%¨Ô9¼jØ˜‘Gœc¤5˜\ô?ô !ŸL™L¨¨a©Ó1�EÜ!.£�JØ×-Ñ-Ü(×9Ñ9¸1¸aÀôð ×)Ñ)¨*Ô5ð ×,Ñ,¬V°D¸±G«_×-DÑ-DÖEà&*Ñ#�˜VÜ$*Ü˜6“N×)Ñ)Ó+Ø×%Ñ%×,Ñ,Ó.Ø×%Ñ%×,Ñ,Ó.ó%Ð!ð
 ×+Ñ+Ð,=Ô>Ø× Ñ Õ"Ü�‹Y˜!Š^ä˜4 ™7¤V¬XÐ$6Ô7Ü˜t A™w¬´Ð(:Ô;Ü˜t A™w¬¬e¨Ô5à+/Ñ(�˜T 5Ø×%Ñ%Üœ6›8Ÿ?™?Ó,¬f°T«l×.AÑ.AÓ.CÓDÜ—L‘L Ó'õô
  Ð IÓJÐJà×(Ñ(¬°Ó)<×)DÑ)DÔEÜ& yÓ1ˆ�ùòU  Bs   ÆPc                 óH   — t        | j                  j                  «       «      S rJ   )r¢   rM   ÚInvertedrZ   s    r?   ÚinversezLocation.inverseP  s   € Ü˜Ÿ™×-Ñ-Ó/Ó0Ð0rA   c                 ól  — t        |d«      r-t        |j                  t        «      s|j	                  | «      }|S t        |t
        «      rCt        d„ |D «       «      r1|D �cg c]$  }t        | j                  |j                  z  «      ‘Œ& }}|S t        | j                  |j                  z  «      }|S c c}w )NrM   c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wrJ   )rK   r¢   ©Ú.0Úos     r?   Ú	<genexpr>z#Location.__mul__.<locals>.<genexpr>X  s   è ø€ ð 1
Ù-2¨ŒJ�qœ(×#©Uùs   ‚)ÚhasattrrK   rM   r   Úmovedr   Úallr¢   )rS   Úotherre   Úlocs       r?   rq   zLocation.__mul__S  s¨   € Ü�5˜)Ô$¬ZØ�M‰Mœ?ô.
ð —[‘[ Ó&ˆFð ˆô ˜œxÔ(¬Sñ 1
Ù-2ó1
ô .
ñ GLÓLÁe¸s”h˜tŸ|™|¨c¯k©kÑ9Õ:ÀeˆFÐLð ˆô ˜dŸl™l¨U¯]©]Ñ:Ó;ˆFØˆùò Ms   Á )B1Úreturnc                 óv  — | j                   j                  «       }|j                  «       }|j                  «       }|j	                  «       |j                  «       |j                  «       f}|j                  t        j                  «      D �cg c]  }t        j                  |«      ‘Œ }}|t        |«      fS c c}w rJ   )rM   ÚTransformationÚTranslationPartÚGetRotationrP   rQ   rR   ÚGetEulerAnglesr   r¸   r€   r�   rO   )rS   ÚtransformationÚtransÚrotÚrv_transrÀ   Úrv_rots          r?   ry   zLocation.to_tuple`  s    € ØŸ™×4Ñ4Ó6ˆØ×.Ñ.Ó0ˆØ×(Ñ(Ó*ˆà—G‘G“I˜uŸw™w›y¨%¯'©'«)Ð4ˆð ×'Ñ'Ô(8×(IÑ(IÔJó
áJ�ô �L‰L˜�OØJð 	ð 
ð
 œ˜v›Ð&Ð&ùò
s   ÂB6c                 ó¸   — dj                  d„ | j                  «       d   D «       «      }dj                  d„ | j                  «       d   D «       «      }d|› d|› d�S )	Nú, c              3   ó$   K  — | ]  }|d ›–— Œ
 y­w©z.2fNr]   ©rË   Úvs     r?   rÍ   z$Location.__repr__.<locals>.<genexpr>n  ó   è ø€ Ð!IÑ6H° Q s G£*Ñ6Hùó   ‚r   c              3   ó$   K  — | ]  }|d ›–— Œ
 y­wrá   r]   râ   s     r?   rÍ   z$Location.__repr__.<locals>.<genexpr>o  ó   è ø€ Ð$LÑ9K°A¨¨# w£ZÑ9Kùrå   r�   z(p=(z), o=(ú))©Újoinry   ©rS   Úposition_strÚorientation_strs      r?   r†   zLocation.__repr__m  sV   € Ø—y‘yÑ!I°d·m±m³oÀaÒ6HÓ!IÓJˆØŸ)™)Ñ$L¸¿¹»ÈÒ9KÓ$LÓMˆØ�l�^ 6¨/Ð):¸"Ð=Ð=rA   c                 ó¸   — dj                  d„ | j                  «       d   D «       «      }dj                  d„ | j                  «       d   D «       «      }d|› d|› d�S )	Nrß   c              3   ó$   K  — | ]  }|d ›–— Œ
 y­wrá   r]   râ   s     r?   rÍ   z#Location.__str__.<locals>.<genexpr>s  rä   rå   r   c              3   ó$   K  — | ]  }|d ›–— Œ
 y­wrá   r]   râ   s     r?   rÍ   z#Location.__str__.<locals>.<genexpr>t  rç   rå   r�   zLocation: (position=(z), orientation=(rè   ré   rë   s      r?   Ú__str__zLocation.__str__r  sX   € Ø—y‘yÑ!I°d·m±m³oÀaÒ6HÓ!IÓJˆØŸ)™)Ñ$L¸¿¹»ÈÒ9KÓ$LÓMˆØ& | nÐ4DÀ_ÐDUÐUWÐXÐXrA   N)rˆ   r‰   rŠ   r‹   rš   rW   rÇ   rq   rO   r»   ry   r†   rñ   r]   rA   r?   r¢   r¢   ü   s_   „ àñ*ó ð*òL2ò\1òð'˜%  e¨U°EÐ&9Ñ :¸EÀ%ÈÐPUÐBUÑ<VÐ VÑWó 'ò>ó
YrA   r¢   c                   ó:   — e Zd Zdd„Zed„ «       Zed„ «       Zd„ Zy)r£   Nc                 ó�  — t        |t        «      r“|| _        t        |«      | _        |rt        |«      | _        y t        | j                  j                  «       | j                  j                  «       «      }t        |j                  «       «      j                  «       | _        y t        |t        «      rýt        j                  |j                  «      }t        |t        «      st        d«      ‚t!        «       }t#        j$                  |j                  |«       t        |j'                  «       «      | _        |rt        |«      nCt        t        j                  |j                  «      j)                  «       j                  «       «      | _        t*        j-                  |j                  «      | _        y t        dt/        |«      › �«      ‚)Nz,Planes can only be created from planar faceszUnable to create Plane from )rK   rH   r±   r¡   r²   r   r{   r~   Ú
XDirectionr[   ÚFacer   Ú	Surface_srM   r   r<   r   r   ÚSurfaceProperties_sÚCentreOfMassÚPositionr£   Úget_topods_face_normalÚtype)rS   r>   r²   r¡   Úax3ÚsurfaceÚ
propertiess          r?   rW   zPlane.__init__~  s?  € Ü�cœ6Ô"ØˆDŒKÜ ›ˆDŒJÙÜ# E›]�•
ä˜TŸ[™[×/Ñ/Ó1°4·:±:×3DÑ3DÓ3FÓG�Ü# C§N¡NÓ$4Ó5×@Ñ@ÓB�•
ä˜œTÔ"Ü×)Ñ)¨#¯+©+Ó6ˆGÜ˜g¤zÔ2Ü Ð!OÓPÐPÜ%›ˆJÜ×)Ñ)¨#¯+©+°zÔBÜ  ×!8Ñ!8Ó!:Ó;ˆDŒKñ ô �u”äœI×/Ñ/°·±Ó<×EÑEÓG×RÑRÓTÓUð ŒJô
 ×5Ñ5°c·k±kÓBˆD�JäÐ;¼DÀ»I¸;ÐGÓHÐHrA   c                 ó   — t        | «      S rJ   )r¢   rZ   s    r?   r¤   zPlane.location˜  s   € ä˜‹~ÐrA   c                 óÞ   — t        «       }t        «       }t        |t        j                  | «      «      }|j                  «       \  }}t        | «      j                  ||||«       t        |«      S rJ   )	r   r   r!   r   rö   ÚLowerDistanceParametersr   ÚNormalrH   )ÚfaceÚgp_pntÚnormalÚ	projectorÚu_valÚv_vals         r?   rú   zPlane.get_topods_face_normalœ  s\   € ä“ˆÜ“ˆÜ.¨v´y×7JÑ7JÈ4Ó7PÓQˆ	Ø ×8Ñ8Ó:‰ˆˆuÜ�tÓ×#Ñ# E¨5°&¸&ÔAÜ�f‹~ÐrA   c                 óÊ   — t        t        |j                  «      «      j                  }t        |j                  j	                  |j                  j                  «       «      «      S rJ   )r£   rõ   rM   r¤   ÚMovedrÆ   )rS   r>   Úls      r?   Úto_local_coordszPlane.to_local_coords¥  sB   € ä”$�s—{‘{Ó#Ó$×-Ñ-ˆÜ�C—K‘K×%Ñ% a§i¡i×&8Ñ&8Ó&:Ó;Ó<Ð<rA   r‡   )	rˆ   r‰   rŠ   rW   r‹   r¤   Ústaticmethodrú   r  r]   rA   r?   r£   r£   }  s5   „ óIð4 ñó ðð ñó ðó=rA   r£   c                   ó   — e Zd Zd„ Zdd„Zy)Ú	ShapeListc                 óL   — | D �cg c]  }|j                   |k(  sŒ|‘Œ c}S c c}w rJ   )Ú	geom_type)rS   r  r>   s      r?   Ú	filter_byzShapeList.filter_by±  s%   € Ù#ÓB™t˜ s§}¡}¸	Ó'A’˜tÑBÐBùÒBs   …!š!c                 óp   ‡— |j                   j                  «       Št        | ˆfd„|¬«      }t        |«      S )Nc                 ód   •— ‰t        | j                  «       «      z  j                  j                  S rJ   )r¢   r^   rš   rR   )rÌ   Úaxis_as_locations    €r?   Ú<lambda>z#ShapeList.sort_by.<locals>.<lambda>¸  s"   ø€ Ð+¬h°q·x±x³zÓ.BÑB×LÑL×NÒNrA   )ÚkeyÚreverse)r¤   rÇ   Úsortedr  )rS   rÄ   r  Úobjectsr  s       @r?   Úsort_byzShapeList.sort_by´  s6   ø€ ØŸ=™=×0Ñ0Ó2ÐÜØÛNØô
ˆô
 ˜Ó!Ð!rA   N)F)rˆ   r‰   rŠ   r  r  r]   rA   r?   r  r  °  s   „ òCô"rA   r  c                   óz   — e Zd Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	e
d„ «       Zd„ Zd„ Zd	„ Zd
„ Zy)ÚShapec                 ó$   — t        |«      | _        y rJ   )rF   rM   ©rS   r>   s     r?   rW   zShape.__init__Ä  s   € Ü “}ˆ�rA   c                 óŒ  — t        | j                  «      }|t        j                  k(  r,t        t        | j                  «      j                  «          }|S |t        j                  k(  r,t        t        | j                  «      j                  «          }|S |t        j                  k(  rd}|S |t        j                  k(  rd}|S d}|S )NÚVERTEXÚSOLIDÚUNKNOWN)r@   rM   ÚtaÚTopAbs_EDGEÚgeom_LUT_EDGEr   ÚGetTypeÚTopAbs_FACEÚgeom_LUT_FACEr   ÚTopAbs_VERTEXÚTopAbs_SOLID)rS   ÚshapeÚgeoms      r?   r  zShape.geom_typeÇ  s´   € ä˜$Ÿ,™,Ó'ˆà”B—N‘NÒ"Ü Ô!2°4·<±<Ó!@×!HÑ!HÓ!JÑKˆDð ˆð ”b—n‘nÒ$Ü Ô!4°T·\±\Ó!B×!JÑ!JÓ!LÑMˆDð ˆð ”b×&Ñ&Ò&ØˆDð ˆð ”b—o‘oÒ%ØˆDð ˆð ˆDàˆrA   c                 óv   — t        «       }t        j                  | j                  |«       |j	                  «       S rJ   )r   r   r÷   rM   ÚMass©rS   rþ   s     r?   Úareaz
Shape.areaØ  s*   € ä!“^ˆ
Ü×%Ñ% d§l¡l°JÔ?à�‰Ó Ð rA   c                 ó”   — t        «       }t        t        | j                  «         } || j                  |«       |j	                  «       S rJ   )r   Úshape_properties_LUTr@   rM   r/  )r>   rþ   Úcalc_functions      r?   Úcompute_masszShape.compute_massß  s7   € ä!“^ˆ
Ü,¬Y°s·{±{Ó-CÑDˆÙ�c—k‘k :Ô.Ø�‰Ó Ð rA   c                 ó,   — t         j                  | «      S rJ   )r  r5  rZ   s    r?   ÚvolumezShape.volumeæ  s   € ä×!Ñ! $Ó'Ð'rA   c                 ó<  — d }t         j                  t        t         j                  t        t         j
                  t        t         j                  t        t         j                  t        t         j                  t        i}t        |«      } ||   t        |«      «      }|S rJ   )r$  r*  r%   r%  ÚEdger(  rõ   ÚTopAbs_SHELLr'   r+  r(   ÚTopAbs_COMPOUNDr)   r@   rF   )r”   r>   Ú	new_shapeÚconstructor__lutÚ
shape_types        r?   Úcastz
Shape.castê  sr   € àˆ	ô ×ÑœfÜ�N‰NœDä�N‰NœDÜ�O‰OœUÜ�O‰OœUÜ×Ñ¤ð
Ðô ˜s“^ˆ
Ø0Ð$ ZÑ0´¸#³Ó?ˆ	àÐrA   c                 óV  — t        | t        «      r"t        |j                  t        | «      «      Ž }|S t        j                  t        | j                  |j                  j                  «       «      j	                  «       «      }t        j                  | d «      }|j                  |_        |S rJ   )rK   r%   rn   rH   r  r?  r	   rM   ÚTrsfÚcopyÚdeepcopy)rS   Út_matrixr<  Útransformeds       r?   Útransform_shapezShape.transform_shapeý  s‰   € Ü�dœFÔ#Ü × 1Ñ 1´&¸³,Ó ?Ð@ˆIð Ðô  Ÿ*™*Ü(¨¯©°x×7GÑ7G×7LÑ7LÓ7NÓO×UÑUÓWóˆKô Ÿ™ d¨DÓ1ˆIØ +× 3Ñ 3ˆIÔàÐrA   c           
      óØ   — t        t        t        | j                  «      «      D �cg c]5  }t        j                  t        j                  |«      «      st        |«      ‘Œ7 c}«      S c c}w rJ   )r  r#   rM   r   ÚDegenerated_sr   ÚEdge_sr9  r  s     r?   ÚedgeszShape.edges	  sZ   € Üô %¤Y¨t¯|©|Ó%<Ô=óá=�CÜ ×.Ñ.¬v¯}©}¸SÓ/AÔBô �S•	Ø=ñó
ð 	
ùòs   ¦:A'c                 óˆ   — t        t        t        | j                  «      «      D �cg c]  }t        |«      ‘Œ c}«      S c c}w rJ   )r  r$   rM   r%   r  s     r?   ÚverticeszShape.vertices  s3   € Ü´¼<ÈÏÉÓ;UÔ1VÓWÑ1V¨#œ& �+Ð1VÑWÓXÐXùÒWó   ¦?c                 óˆ   — t        t        t        | j                  «      «      D �cg c]  }t        |«      ‘Œ c}«      S c c}w rJ   )r  r"   rM   rõ   r  s     r?   ÚfaceszShape.faces  s3   € Ü¬y¼À4Ç<Á<Ó9PÔ/QÓRÑ/Q¨œ$˜s�)Ð/QÑRÓSÐSùÒRrM  N)rˆ   r‰   rŠ   rW   r‹   r  r1  r  r5  r7  Úclassmethodr?  rF  rJ  rL  rO  r]   rA   r?   r  r  Ã  s�   „ ò%ð ñó ðð  ñ!ó ð!ð ñ!ó ð!ð ñ(ó ð(ð ñó ðò$
ò
òYóTrA   r  r>   c                 óÎ   — t        | t        «      r?t        d„ | D «       «      }t        |«      dk(  r|j	                  «       }|S t        | «      }|S t        | j                  «      }|S )zReturn Shape's TopAbs_ShapeEnumc              3   óF   K  — | ]  }t        |j                  «      –— Œ y ­wrJ   )r@   rM   rÊ   s     r?   rÍ   z&unwrapped_shapetype.<locals>.<genexpr>!  s   è ø€ Ð;±s°!œ 1§9¡9×-±sùs   ‚!r�   )rK   r)   Úsetr¯   Úpopr@   rM   )r>   Ú
shapetypesre   s      r?   Úunwrapped_shapetyperV    sb   € ä�#”xÔ ÜÑ;±sÓ;Ó;ˆ
Üˆz‹?˜aÒØ—^‘^Ó%ˆFð
 €Mô ˜s“^ˆFð €Mô ˜3Ÿ;™;Ó'ˆØ€MrA   c                   ó   — e Zd Zd„ Zd„ Zy)r)   c                 óš   — t        «       }t        t        | «         }|r, || j                  |«       t	        |j                  «       «      }S rJ   )r   r3  rV  rM   rH   rø   ©rS   rþ   r4  Úmiddles       r?   r^   zCompound.center,  sB   € Ü!“^ˆ
Ü,Ô-@ÀÓ-FÑGˆÙÙ˜$Ÿ,™,¨
Ô3Ü˜J×3Ñ3Ó5Ó6ˆFØˆrA   c              #   óä   K  — t        | j                  «      }|j                  «       rGt        j	                  |j                  «       «      –— |j                  «        |j                  «       rŒFy y ­wrJ   )r    rM   ÚMorer  r?  ÚValueÚNext)rS   Úiterators     r?   Ú__iter__zCompound.__iter__4  sG   è ø€ Ü" 4§<¡<Ó0ˆà�m‰mŒoÜ—*‘*˜XŸ^™^Ó-Ó.Ò.Ø�M‰MŒOð �m‰m�oùs   ‚A+A0Á.A0N)rˆ   r‰   rŠ   r^   r`  r]   rA   r?   r)   r)   +  s   „ òórA   c                   ó   — e Zd Zd„ Zy)r(   c                 óº   — t        «       }t        t        | j                  «         }|r. || j                  |«       t	        |j                  «       «      }|S t        ‚rJ   )r   r3  r@   rM   rH   rø   ÚNotImplementedErrorrY  s       r?   r^   zSolid.centerB  sO   € Ü!“^ˆ
Ü,¬Y°t·|±|Ó-DÑEˆÙÙ˜$Ÿ,™,¨
Ô3Ü˜J×3Ñ3Ó5Ó6ˆFð ˆô &Ð%rA   N©rˆ   r‰   rŠ   r^   r]   rA   r?   r(   r(   A  s   „ órA   c                   ó   — e Zd Zd„ Zy)r'   c                 óˆ   — t        «       }t        j                  | j                  |«       t	        |j                  «       «      S rJ   )r   r   ÚLinearProperties_srM   rH   rø   r0  s     r?   r^   zShell.centerS  s1   € Ü!“^ˆ
Ü×$Ñ$ T§\¡\°:Ô>Ü�j×-Ñ-Ó/Ó0Ð0rA   Nrd  r]   rA   r?   r'   r'   R  s   „ ó1rA   c                   ó>   — e Zd Zd„ Zed„ «       Zed„ «       Zd„ Zd„ Zy)rõ   c                 ó@   — t        j                  | j                  «      S rJ   )r   rö   rM   rZ   s    r?   Ú_geom_adaptorzFace._geom_adaptor_  s   € Ü×"Ñ" 4§<¡<Ó0Ð0rA   c                 óô   — d }| j                   dk(  rft        | «      j                  | «      }|j                  «       j	                  t
        j                  «      }|d   j                  |d   j                  z
  }|S ©Nr*   éÿÿÿÿr   )r  r£   r  rL  r  r’   rP   ©rS   re   Ú	flat_faceÚface_verticess       r?   ra   zFace.lengthb  ói   € àˆØ�>‰>˜WÒ$Ü˜d›×3Ñ3°DÓ9ˆIØ%×.Ñ.Ó0×8Ñ8¼¿¹Ó@ˆMØ" 2Ñ&×(Ñ(¨=¸Ñ+;×+=Ñ+=Ñ=ˆFØˆrA   c                 óô   — d }| j                   dk(  rft        | «      j                  | «      }|j                  «       j	                  t
        j                  «      }|d   j                  |d   j                  z
  }|S rl  )r  r£   r  rL  r  r’   rQ   rn  s       r?   Úwidthz
Face.widthk  rq  rA   c                 ó@   — t        j                  | j                  «      S rJ   )r   Ú
UVBounds_srM   rZ   s    r?   Ú
_uv_boundszFace._uv_boundst  s   € Ü×#Ñ# D§L¡LÓ1Ð1rA   c                 ó€  — | j                   dk(  rEt        «       }t        j                  | j                  |«       |j                  «       }t        |«      S | j                  «       \  }}}}d||z   z  }d||z   z  }t        «       }t        «       }	t        | j                  «      j                  ||||	«       t        |«      S )Nr*   ç      à?)r  r   r   r÷   rM   rø   rv  r   r   r   r  rH   )
rS   rþ   Úcenter_pointÚu_val0Úu_val1Úv_val0Úv_val1r  r  r  s
             r?   r^   zFace.centerw  s­   € Ø�>‰>˜WÒ$Ü%›ˆJÜ×)Ñ)¨$¯,©,¸
ÔCØ%×2Ñ2Ó4ˆLô �lÓ#Ð#ð .2¯_©_Ó->Ñ*ˆF�F˜F FØ˜6 F™?Ñ+ˆEØ˜6 F™?Ñ+ˆEä!›8ˆLÜ“XˆFÜ˜4Ÿ<™<Ó(×/Ñ/°°u¸lÈFÔSä�lÓ#Ð#rA   N)	rˆ   r‰   rŠ   rj  r‹   ra   rs  rv  r^   r]   rA   r?   rõ   rõ   ^  s9   „ ò1ð ñó ðð ñó ðò2ó$rA   rõ   c                   ó„   — e Zd Zd„ Zed„ «       Zed„ «       Z	 dd„Zd„ Zde	de
fd„Zde	de	fd	„Zd
„ Zd„ Zd„ Zed„ «       Zy)r9  c                 ó,   — t        | j                  «      S rJ   )r   rM   rZ   s    r?   rj  zEdge._geom_adaptor�  s   € Ü  §¡Ó.Ð.rA   c                 óª   — | j                  «       }	 |j                  «       }|j                  «       S # t        t        f$ r}t	        d«      |‚d }~ww xY w)Nz&Shape could not be reduced to a circle)rj  ÚCircler   r   r<   ÚRadius)rS   r-  ÚcircÚerrs       r?   ÚradiuszEdge.radius’  sW   € à×!Ñ!Ó#ˆð	PØ—;‘;“=ˆDð �{‰{‹}Ðøô &Ô'7Ð8ò 	PÜÐEÓFÈCÐOûð	Pús   ’2 ²AÁAÁAc                 óH   — t        j                  | j                  «       «      S rJ   )r   ÚLength_srj  rZ   s    r?   ra   zEdge.length›  s   € ä#×,Ñ,¨T×-?Ñ-?Ó-AÓBÐBrA   c                 ó†   — | j                  «       }t        «       }t        «       }|j                  |||«       t	        |«      S rJ   )rj  r   r   ÚD1rH   )rS   Úlocation_paramÚcurveÚtmpÚress        r?   Ú
tangent_atzEdge.tangent_atŸ  s:   € ð ×"Ñ"Ó$ˆä‹hˆÜ‹hˆà�‰�  cÔ*ä�c‹{ÐrA   c                 ó(  — | j                  «       }| j                  }|dk(  r9|j                  «       }t        |j	                  «       j                  «       «      }|S |dk(  r9|j                  «       }t        |j	                  «       j                  «       «      }|S t        | j                  d¬«      }|j                  «       }t        |t        «      r9|j                  «       }t        |j	                  «       j                  «       «      }|S t        d«      ‚)Nr6   r7   T)Ú	OnlyPlanezNormal not defined)rj  r  r�  rH   r’   Ú	DirectionÚEllipser   rM   ÚSurfacerK   r   ÚPlnr<   )	rS   r‹  Úgtyperƒ  rE   ÚellÚfind_surfaceÚsurfÚplns	            r?   r  zEdge.normal¬  sç   € Ø×"Ñ"Ó$ˆØ—‘ˆà�HÒØ—<‘<“>ˆDÜ! $§)¡)£+×"7Ñ"7Ó"9Ó:ˆLð Ðð �iÒØ—-‘-“/ˆCÜ! #§(¡(£*×"6Ñ"6Ó"8Ó9ˆLð Ðô /¨t¯|©|ÀtÔLˆLØ×'Ñ'Ó)ˆDä˜$¤
Ô+Ø—h‘h“j�Ü% c§h¡h£j×&:Ñ&:Ó&<Ó=�ð Ðô !Ð!5Ó6Ð6rA   ÚdistancerÓ   c                 óx   — | j                  «       }| j                  |«      }t        |j                  |«      «      S rJ   )rj  Úparam_atrH   r]  )rS   rš  r‹  Úparams       r?   Úposition_atzEdge.position_atÂ  s2   € Ø×"Ñ"Ó$ˆØ—‘˜hÓ'ˆÜ�e—k‘k %Ó(Ó)Ð)rA   c                 ó¤   — | j                  «       }t        j                  |«      }t        |||z  |j                  «       «      j	                  «       S rJ   )rj  r   r‡  ÚFirstParameterÚ	Parameter)rS   rš  r‹  ra   s       r?   rœ  zEdge.param_atÇ  sI   € Ø×"Ñ"Ó$ˆä%×.Ñ.¨uÓ5ˆÜ#Ø�6˜HÑ$ e×&:Ñ&:Ó&<ó
ç
‰)‹+ð	rA   c                 ó$   — | j                  |«      S rJ   )rŽ  ©rS   rš   s     r?   Ú__mod__zEdge.__mod__Ï  s   € Ø�‰˜xÓ(Ð(rA   c                 ó$   — | j                  |«      S rJ   ©rž  r£  s     r?   Ú
__matmul__zEdge.__matmul__Ò  s   € Ø×Ñ Ó)Ð)rA   c                 ó$   — | j                  d«      S )Nrx  r¦  rZ   s    r?   r^   zEdge.centerÕ  s   € Ø×Ñ Ó$Ð$rA   c                 óF  — | j                   }| j                  «       }|dk(  r7t        |j                  «       j	                  «       j                  «       «      }|S |dk(  r7t        |j                  «       j	                  «       j                  «       «      }|S t        |› d�«      ‚)Nr6   r7   z has no arc center)r  rj  rH   r�  rù   r¢   r’  r<   )rS   r  Úgeom_adaptorrE   s       r?   Ú
arc_centerzEdge.arc_centerØ  sš   € à—N‘Nˆ	Ø×)Ñ)Ó+ˆà˜Ò Ü! ,×"5Ñ"5Ó"7×"@Ñ"@Ó"B×"KÑ"KÓ"MÓNˆLð Ðð ˜)Ò#Ü! ,×"6Ñ"6Ó"8×"AÑ"AÓ"C×"LÑ"LÓ"NÓOˆLð Ðô  	˜{Ð*<Ð=Ó>Ð>rA   N)rx  )rˆ   r‰   rŠ   rj  r‹   r…  ra   rŽ  r  r»   rH   rž  rœ  r¤  r§  r^   r«  r]   rA   r?   r9  r9  Ž  s‰   „ ò/ð ñó ðð ñCó ðCð
 óòð,* Eð *¨fó *ð
 ð ¨5ó ò)ò*ò%ð ñó ñrA   r9  c                   ó,   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zˆ xZS )r%   c           	      óÞ  •— t        |t        t        f«      r|\  }}}nlt        | t        «      r|j	                  «       \  }}}nGt        |t
        «      r%|j                  |j                  |j                  }}}nt        |t        «      r|}|€-t        t        t        |||«      «      j                  «       «      n|}t        ‰| �9  |«       | j	                  «       \  | _        | _        | _        y rJ   )rK   rO   rN   rH   ry   r%   rP   rQ   rR   r   rF   r
   r   ÚsuperrW   )rS   rT   rU   rV   Úocp_vxÚ	__class__s        €r?   rW   zVertex.__init__í  sÀ   ø€ Ü�aœ%¤˜Ô'Ø‰GˆAˆq‘!Ü˜œfÔ%Ø—j‘j“l‰GˆAˆq‘!Ü˜œ6Ô"Ø—c‘c˜1Ÿ3™3 §¡�!ˆq‰AÜ˜œ=Ô)ØˆFð ˆ~ô Ô.¬v°a¸¸A«Ó?×FÑFÓHÔIàð 	ô 	‰Ñ˜Ô Ø!%§¡£ÑˆŒ�”˜�rA   c                 óž   — t        j                  | j                  «      }|j                  «       |j	                  «       |j                  «       fS rJ   )r   ÚPnt_srM   rP   rQ   rR   )rS   Ú
geom_points     r?   ry   zVertex.to_tuple   s3   € Ü—_‘_ T§\¡\Ó2ˆ
Ø—‘“ 
§¡£°
·±³Ð?Ð?rA   c                 ó.   — t        | j                  «       Ž S rJ   r«   rZ   s    r?   r^   zVertex.center  s   € Ü�t—}‘}“Ð'Ð'rA   )NNN)rˆ   r‰   rŠ   rW   ry   r^   Ú__classcell__)r°  s   @r?   r%   r%   ì  s   ø„ õ1ò&@ö(rA   ){Ú__doc__rB  r€   Úenumr   r   Útypingr   ÚOCP.GeomAbsÚGeomAbsÚgaÚ
OCP.TopAbsÚTopAbsr$  ÚOCP.BRepr   ÚOCP.BRepAdaptorr   r   ÚOCP.BRepBuilderAPIr	   r
   ÚOCP.BRepGPropr   r   ÚOCP.BRepLibr   ÚOCP.BRepToolsr   Ú
OCP.GCPntsr   ÚOCP.Geomr   ÚOCP.gpr   r   r   r   r   r   r   r   r   Ú	OCP.GPropr   ÚOCP.Standardr   r   Ú
OCP.TopLocr   Ú
OCP.TopoDSr   r   r    ÚOCP.GeomAPIr!   Úocp_tessellate.ocp_utilsr"   r#   r$   r*  ÚVertex_sr%  rI  ÚTopAbs_WIREÚWire_sr(  ÚFace_sr:  ÚShell_sr+  ÚSolid_sr;  Ú
Compound_sÚTopAbs_COMPSOLIDÚCompSolid_srC   Úgeom_LUTÚGeomAbs_PlaneÚGeomAbs_CylinderÚGeomAbs_ConeÚGeomAbs_SphereÚGeomAbs_TorusÚGeomAbs_BezierSurfaceÚGeomAbs_BSplineSurfaceÚGeomAbs_SurfaceOfRevolutionÚGeomAbs_SurfaceOfExtrusionÚGeomAbs_OffsetSurfaceÚGeomAbs_OtherSurfacer)  ÚGeomAbs_LineÚGeomAbs_CircleÚGeomAbs_EllipseÚGeomAbs_HyperbolaÚGeomAbs_ParabolaÚGeomAbs_BezierCurveÚGeomAbs_BSplineCurveÚGeomAbs_OffsetCurveÚGeomAbs_OtherCurver&  rg  r÷   ÚVolumeProperties_sr3  r@   rF   rH   rû   r�   r’   r§   r¢   r£   rN   r  r  rV  r)   r(   r'   rõ   r9  r%   r]   rA   r?   Ú<module>rì     se  ðÙ 9ó Û ß Ý å Ý Ý ß Bß Rß 3Ý +Ý #Ý +Ý ÷
÷ 
õ 
õ #ß @Ý &ß =Ñ =Ý 2ß GÑ Gð ×Ñ�f—o‘oØ‡N�N�F—M‘MØ‡N�N�F—M‘MØ‡N�N�F—M‘MØ‡O�O�V—^‘^Ø‡O�O�V—^‘^Ø×Ñ˜×)Ñ)Ø×Ñ˜×+Ñ+ð	€ð ×Ñ�hØ‡N�NÐ%Ø‡N�N�FØ‡N�NÐ'Ø‡O�O�WØ‡O�O�WØ×Ñ˜
Ø×Ñ˜ð	€ð ×Ñ�gØ×Ñ˜Ø‡O�O�VØ×Ñ�xØ×Ñ�gØ×Ñ˜hØ×Ñ˜yØ×"Ñ" LØ×!Ñ! ;Ø×Ñ˜hØ×Ñ˜Wð€ð ‡O�O�VØ×Ñ�xØ×Ñ˜	Ø×Ñ˜+Ø×Ñ˜Ø×Ñ˜HØ×Ñ˜YØ×Ñ˜HØ×Ñ˜7ð
€ð ×Ñ�dØ‡N�N�I×0Ñ0Ø‡N�N�I×0Ñ0Ø‡N�N�I×1Ñ1Ø‡O�O�Y×2Ñ2Ø‡O�O�Y×1Ñ1Ø×Ñ˜	×4Ñ4Ø×Ñ˜×5Ñ5ð	Ð òò÷*A:ñ A:ôR*ˆtô *ô
D�Xõ 
D÷$"ñ "÷yYñ yY÷B+=ñ +=ôf"�ô "÷&STñ STðv
˜Uó 
ôˆuô ô,	ˆEô 	ô"1ˆEô 1ô($ˆ5ô ($ô`Vˆ5ô Vô|(ˆUõ (rA   