
    Ogr                       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
mZ d dl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mZ d d	lmZ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& ddl'm(Z( ddl)m*Z* erd dl+m,Z, d dl-m.Z. d dlm/Z/ g dZ0 ejb                  d      Z2 ed edd       edejf                         edejf                        d      Z4 ee4      Z5e& G d de#             Z6didZ7djd Z8e& G d! d"e6             Z9 ed#d$ ed%d&      i      Z: ee:      Z;e& G d' d(e6             Z<dkd)Z=dld*Z> ed+ ed,       ed-      d.      Z? ee?      Z@e& G d/ d0e6             ZA ed1i d2 ed3      d4 ed5ej                  6      d7 ed8d9      d: ed;d9      d< ed=d9      d> ed?d9      d@ edAd9      dB edCd9      dD edd       dE edd       dF ed,d       dG edHd       dI edJd       dK edLd       dM edNd       dO edPd       dQ edRej                  6            ZC eeC      ZDe& G dS dTeA             ZE edU ed       edVd9       ed8d9       ed;d9       ed=d9       edd        edWd       edHd       edJd       edLd        edNd        edPd        edXd       dY      ZF eeF      ZGe& G dZ d[eA             ZH ed\ ed3d9       ed5ej                  6       edRej                  6       ed]       edV       ed;       ed=d        ed?d        ed^d        edd        edWd       d_      ZI eeI      ZJe& G d` daeA             ZK edbi dc ed3      dd ede      d7 ed8      d: ed;d       d< ed=d       d> ed?d       d@ edAd      dB edCd       dD edd       df edd       dF ed,d       dG edHd       dI edJd       dK edLd       dM edNd       dO edPd       dQ edRej                  6            ZL eeL      ZMe& G dg dheA             ZNy)m    )annotations)TYPE_CHECKINGIterableUnionOptionalSequenceAny)SelfoverrideN)DXFAttrDXFAttributesDefSubclassXTypegroup_code_mapping)const)TagsDXFTag)Matrix44)cryptguid)msgtypes   )
base_classSubclassProcessor)
DXFGraphicacdb_entity)register_entity)default_copy)TransformByBlockReference)DXFNamespace)AbstractTagWriter)xref)BodySolid3dRegionSurfaceExtrudedSurfaceLoftedSurfaceRevolvedSurfaceSweptSurfaceezdxfAcDbModelerGeometryF   )defaulti"  )
dxfversion   )versionflagsuidc                      e Zd ZdZdZ eeee      Z	e
j                  Zd fdZedd       Zedd       Zej"                  dd       Zedd       Zej"                  dd       Zed	        Zeefdd
       Zed fd       ZddZedd d       Zed!d       Ze	 d	 	 	 d" fd       Zd#dZed$ fd       Zd$dZd%dZed fd       Z ed&d       Z!d'dZ" xZ#S )(r#   z:DXF BODY entity - container entity for embedded ACIS data.BODYc                z    t         |           t               | _        d| _        d| _        t               | _        y )N    F)super__init__tuple_sat_sab_updater   _temporary_transformationself	__class__s    X/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/entities/acis.pyr9   zBody.__init__X   s2     $)7		)B)D&r7   c                J    | j                   r| j                  S | j                  S )zqReturns :term:`SAT` data  for DXF R2000 up to R2010 and :term:`SAB`
        data for DXF R2013 and later
        )has_binary_datasabsatr@   s    rB   	acis_datazBody.acis_dataa   s    
 88Oxxr7   c                    | j                   S )z0Get/Set :term:`SAT` data as sequence of strings.)r;   rG   s    rB   rF   zBody.satj   s     yyr7   c                $    t        |      | _        y)z,Set :term:`SAT` data as sequence of strings.N)r:   r;   r@   datas     rB   rF   zBody.sato   s     $K	r7   c                    | j                   b| j                  rVt        | j                        dk(  r>| j                   j                  j                  | j                  j                        | _        | j                  S )z"Get/Set :term:`SAB` data as bytes.r   )docrD   lenr<   acdsdataget_acis_datadxfhandlerG   s    rB   rE   zBody.sabt   sT     HH T%9%9c$))nPQ>Q))77HDIyyr7   c                     d| _         || _        y)zSet :term:`SAB` data as bytes.TN)r=   r<   rK   s     rB   rE   zBody.sab}   s     	r7   c                j    | j                   r'| j                   j                  t        j                  k\  S y)zReturns ``True`` if the entity contains :term:`SAB` data and
        ``False`` if the entity contains :term:`SAT` data.
        F)rN   r/   r   DXF2013rG   s    rB   rD   zBody.has_binary_data   s'    
 8888&&%--77r7   c                    t        |t              sJ | j                  |_        | j                  |_        t	               |j
                  _        | j                  |_        y N)
isinstancer#   rF   rE   r   rR   r3   r>   )r@   entitycopy_strategys      rB   	copy_datazBody.copy_data   sC    &$'''XX
XX


+/+I+I(r7   c                F    t         |   ||       |j                          y)z3Translate resources from self to the copied entity.N)r8   map_resourcesconvert_acis_data)r@   clonemappingrA   s      rB   r^   zBody.map_resources   s      	eW-!r7   c                
   | j                   y d}| j                   j                  }|t        j                  k  r| j                  r'd| _        d}n| j
                  rt               | _        d}|rt        j                  |       y y )N r7   zPDXF version mismatch, can't convert ACIS data from SAB to SAT, SAB data removed.zPDXF version mismatch, can't convert ACIS data from SAT to SAB, SAT data removed.)	rN   r/   r   rV   r<   r;   r:   loggerinfo)r@   msgr/   s      rB   r_   zBody.convert_acis_data   sk    88XX((
%yy	hyy!G	hKK r7   c                b    |t         j                  k(  r| j                  j                  |        y y rX   )r   COMMIT_PENDING_CHANGESr>   apply_transformation)r@   message_typerL   s      rB   notifyzBody.notify   s)    8:::**??E ;r7   c                   d}|j                   t        j                  k  r)t        | j                        dkD  }|s7t        |        d}n(t        | j                        dkD  }|st        |        d}|st        j                  |       |r;| j                  j                         !t        j                  t        |        d       |S )Nrc   r   z+ doesn't have SAT data, skipping DXF exportz+ doesn't have SAB data, skipping DXF exportz) has unapplied temporary transformations.)r/   r   rV   rO   rF   strrE   rd   re   r>   
get_matrixwarning)r@   	tagwriterrf   valids       rB   preprocess_exportzBody.preprocess_export   s    %--/MA%ET#NOMA%ET#NOKKT33>>@LNNc$i[(QRSr7   c                    t         |   |      }|rC|j                  |t        dd       | j                  s| j                  |j                  d          |S )!Loading interface. (internal API)r0   Flog)r8   load_dxf_attribsfast_load_dxfattribs!acdb_modeler_geometry_group_codesrD   load_sat_data
subclassesr@   	processorrR   rA   s      rB   rw   zBody.load_dxf_attribs   s]    
 g&y1**6u +  ''""9#7#7#:;
r7   c                n    t        d |D              }t        t        j                  |            | _        y)rt   c              3  >   K   | ]  }|j                   d v s|  yw))r      Ncode).0tags     rB   	<genexpr>z%Body.load_sat_data.<locals>.<genexpr>   s     #NC388v;MC#Ns   N)tags2textlinesr:   r   decoder;   )r@   tags
text_liness      rB   rz   zBody.load_sat_data   s'    ##N4#NN
%,,z23	r7   c                   t         |   |       |j                  t        j                  t
        j                         |j                  t        j                  k\  r| j                  rP| j                  rD| j                  j                  j                  | j                  j                  | j                         | j                  j!                  d      r&|j                  d| j                  j"                         | j                  j%                  |ddg       y| j                  j%                  |d       | j'                  |       y)z7Export entity specific data as DXF tags. (internal API)r1   r-   r2   r3   N)r8   export_entity
write_tag2r   SUBCLASS_MARKERacdb_modeler_geometrynamer/   rV   rN   r=   rP   set_acis_datarR   rS   rE   hasattrr1   export_dxf_attribsexport_sat_datar@   rp   rA   s     rB   r   zBody.export_entity   s     	i(U224I4N4NO5==0xxDLL !!//Jxx	*$$R)9)9:HH''	GU3CD HH''	9=  +r7   c           	         d }t        t        t        j                   || j                                          }|j                  |       y)z,Export ACIS data as DXF tags. (internal API)c              3  ^   K   | D ]$  }|j                         j                  dd       & y w)N
rc   )rstripreplace)lineslines     rB   cleanupz%Body.export_sat_data.<locals>.cleanup   s.      6kkm++D"556s   +-N)r   textlines2tagsr   encoderF   
write_tags)r@   rp   r   r   s       rB   r   zBody.export_sat_data   s8    	6 N5<<0A#BCDT"r7   c                R    | j                   rydj                  | j                        S )z]Returns ACIS :term:`SAT` data as a single string if the entity has
        SAT data.
        rc   r   )rD   joinrF   rG   s    rB   tostringzBody.tostring   s#     99TXX&&r7   c                    | j                   r9| j                  j                  j                  | j                  j
                         t        |           y rX   )rD   rN   rP   del_acis_datarR   rS   r8   destroyr?   s    rB   r   zBody.destroy   s6    HH++DHHOO<r7   c                <    | j                   j                  |       | S rX   )r>   
add_matrix)r@   ms     rB   	transformzBody.transform   s    &&11!4r7   c                    | j                   S rX   )r>   rG   s    rB   temporary_transformationzBody.temporary_transformation  s    ---r7   )returnNone)r   zUnion[bytes, Sequence[str]])r   Sequence[str])rL   r   r   r   )r   bytes)rL   r   r   r   rZ   r
   r   r   )r`   r
   ra   zxref.ResourceMapperr   r   rX   )rj   intrL   r	   r   r   )rp   r!   r   boolr}   zOptional[SubclassProcessor]r   r    r   r   rp   r!   r   r   )r   rm   )r   r   r   r
   )r   r   )$__name__
__module____qualname____doc__DXFTYPEr   r   r   r   
DXFATTRIBSr   DXF2000MIN_DXF_VERSION_FOR_EXPORTr9   propertyrH   rF   setterrE   rD   r   r   r\   r^   r_   rk   rr   rw   rz   r   r   r   r   r   r   __classcell__rA   s   @rB   r#   r#   P   s}   DGz;8MNJ!&E     	ZZ      	ZZ 
   4@ J J " "
  F F    7;4	 4
 , ,$#'  
  .r7   r#   c              #  d   K   d}| D ]  \  }}|dk(  r	|| |}|dk(  s||z  }  || yyw)zwYields text lines from code 1 and 3 tags, code 1 starts a line following
    code 3 tags are appended to the line.
    Nr   r    )r   r   r   values       rB   r   r   	  sY      D e19
DQYEMD 
 s   00c              #     K   | D ]J  }|dd }|dd }t        d|       t        |      s'|dd }|dd }t        d|       t        |      r$L yw)z^Yields text lines as DXFTags, splitting long lines (>255) int code 1
    and code 3 tags.
    N   r   r   )r   rO   )r   r   texttails       rB   r   r     sk       "DSzCDzQo$i:D:DD/! $i	"s   )A#AAc                      e Zd ZdZdZy)r%   z<DXF REGION entity - container entity for embedded ACIS data.REGIONN)r   r   r   r   r   r   r7   rB   r%   r%   '  s
    FGr7   r%   AcDb3dSolidhistory_handlei^  0c                  h     e Zd ZdZdZ eeeee	      Z
e	 d	 	 	 d fd       Zed fd       Z xZS )r$   z=DXF 3DSOLID entity - container entity for embedded ACIS data.3DSOLIDc                X    t         |   |      }|r|j                  |t        d       |S Nr   )r8   rw   rx   acdb_3dsolid_group_codesr|   s      rB   rw   zSolid3d.load_dxf_attribs@  /     g&y1**30H!L
r7   c                    t         |   |       |j                  t        j                  kD  rK|j                  t        j                  t        j                         | j                  j                  |d       yy)(Export entity specific data as DXF tags.r   N)r8   r   r/   r   DXF2004r   r   acdb_3dsolidr   rR   r   r   s     rB   r   zSolid3d.export_entityI  s\     	i( %--/  !6!68I8IJHH''	3CD 0r7   rX   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   rw   r   r   r   s   @rB   r$   r$   7  s\    GGK!6J 7;4	  E Er7   r$   c                    | j                  |      D cg c]  }|j                   }}t        |      dk7  rt        j                  d      t        |      S c c}w )N   zInvalid transformation matrix.)find_allr   rO   r   DXFStructureErrorr   )subclassr   r   valuess       rB   load_matrixr   U  sR    #+#4#4T#:;Ccii;F;
6{b%%&FGGF <s   Ac                H    t        |      D ]  }| j                  ||        y rX   )listr   )rp   r   matrixr   s       rB   export_matrixr   \  s%    f *T5)*r7   AcDbSurfaceG   H   )u_countv_countc                  h     e Zd ZdZdZ eeeee	      Z
e	 d	 	 	 d fd       Zed fd       Z xZS )r&   z=DXF SURFACE entity - container entity for embedded ACIS data.SURFACEc                X    t         |   |      }|r|j                  |t        d       |S r   )r8   rw   rx   acdb_surface_group_codesr|   s      rB   rw   zSurface.load_dxf_attribst  r   r7   c                    t         |   |       |j                  t        j                  t
        j                         | j                  j                  |ddg       y)r   r   r   N)	r8   r   r   r   r   acdb_surfacer   rR   r   r   s     rB   r   zSurface.export_entity}  sI     	i( 	U22L4E4EF##I	9/EFr7   rX   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   rw   r   r   r   s   @rB   r&   r&   k  s\    GGK!6J 7;4	  G Gr7   r&   AcDbExtrudedSurfaceclass_idZ   sweep_vector
   )xtypedraft_angle*   g        draft_start_distance+   draft_end_distance,   twist_angle-   scale_factor0   align_angle1   solidsweep_alignment_flagsunknown1align_starti$  banki%  base_point_seti&  sweep_entity_transform_computedi'  path_entity_transform_computedi(  &reference_vector_for_controlling_twist   c                       e Zd ZdZdZ eeeee	e
      Z fdZeefd fd       Ze	 d		 	 	 d
 fd       ZddZed fd       Z xZS )r'   zEDXF EXTRUDEDSURFACE entity - container entity for embedded ACIS data.EXTRUDEDSURFACEc                |    t         |           t               | _        t               | _        t               | _        y rX   )r8   r9   r   %transformation_matrix_extruded_entity"sweep_entity_transformation_matrix!path_entity_transformation_matrixr?   s    rB   r9   zExtrudedSurface.__init__  s,    5=Z22:*/19.r7   c                   t        |t              sJ t        |   ||       | j                  j                         |_        | j                  j                         |_        | j                  j                         |_        y rX   )rY   r'   r8   r\   r  copyr  r  r@   rZ   r[   rA   s      rB   r\   zExtrudedSurface.copy_data  st    &/222&-066;;= 	4 3388: 	1 22779 	0r7   c                    t         |   |      }|r7|j                  |t        dd       | j	                  |j
                  d          |S N   Fru   )r8   rw   rx   !acdb_extruded_surface_group_codesload_matricesr{   r|   s      rB   rw   z ExtrudedSurface.load_dxf_attribs  T     g&y1**6u +  y33A67
r7   c                p    t        |d      | _        t        |d      | _        t        |d      | _        y )N(   r   .   /   )r   r  r  r  r@   r   s     rB   r  zExtrudedSurface.load_matrices  s/    5@B5O22=d2L/1<T1K.r7   c                   t         |   |       |j                  t        j                  t
        j                         | j                  j                  |ddg       t        |d| j                         | j                  j                  |g d       t        |d| j                         t        |d| j                         | j                  j                  |g d       y	)
r   r   r   r  r   r   r   r   r   r   r   r   r  r  )	r   r  r  r  r  r  r  r  r  N)r8   r   r   r   r   acdb_extruded_surfacer   rR   r   r   r  r  r  r   s     rB   r   zExtrudedSurface.export_entity  s     	i( 	U224I4N4NO##I
N/KL==	

 	##
	
 	Bt'N'N	
 	ib1W1WX##
	
r7   r   rX   r   r   r   )r   r   r   r   r   r   r   r   r   r   r!  r   r9   r   r   r\   rw   r  r   r   r   s   @rB   r'   r'     s    OGJ< 4@ 
 
 7;	4			 	L
 )
 )
r7   r'   AcDbLoftedSurface)   i#  i)  )plane_normal_lofting_typestart_draft_angleend_draft_anglestart_draft_magnitudeend_draft_magnitudearc_length_parameterizationno_twistalign_directionsimple_surfacesclosed_surfacesr   ruled_surfacevirtual_guidec                       e Zd ZdZdZ eeeee	e
      Z fdZeefd fd       Ze	 d		 	 	 d
 fd       ZddZed fd       Z xZS )r(   zCDXF LOFTEDSURFACE entity - container entity for embedded ACIS data.LOFTEDSURFACEc                @    t         |           t               | _        y rX   )r8   r9   r   #transformation_matrix_lofted_entityr?   s    rB   r9   zLoftedSurface.__init__,  s    3;:0r7   c                    t        |t              sJ t        |   ||       | j                  j                         |_        y rX   )rY   r(   r8   r\   r3  r  r  s      rB   r\   zLoftedSurface.copy_data0  s<    &-000&-04499; 	2r7   c                    t         |   |      }|r7|j                  |t        dd       | j	                  |j
                  d          |S r  )r8   rw   rx   acdb_lofted_surface_group_codesr  r{   r|   s      rB   rw   zLoftedSurface.load_dxf_attribs8  sT     g&y1**4aU +  y33A67
r7   c                (    t        |d      | _        y )Nr  r   )r   r3  r  s     rB   r  zLoftedSurface.load_matricesD  s    3>t"3M0r7   c                    t         |   |       |j                  t        j                  t
        j                         t        |d| j                         | j                  j                  |t
        j                  j                                y)r   r  r  N)r8   r   r   r   r   acdb_lofted_surfacer   r   r3  rR   r   attribskeysr   s     rB   r   zLoftedSurface.export_entityG  sl     	i( 	U224G4L4LMBt'O'O	
 	##I/B/J/J/O/O/QRr7   r   rX   r   r   r   )r   r   r   r   r   r   r   r   r   r   r9  r   r9   r   r   r\   rw   r  r   r   r   s   @rB   r(   r(     s    MGJ> 4@ 
 
 7;	4			 	N 
S 
Sr7   r(   AcDbRevolvedSurfacer  r  )r   
axis_pointaxis_vectorrevolve_anglestart_angler   start_draft_distanceend_draft_distancer   r   close_to_axisc                       e Zd ZdZdZ eeeee	e
      Z fdZeefd fd       Ze	 d		 	 	 d
 fd       ZddZed fd       Z xZS )r)   zEDXF REVOLVEDSURFACE entity - container entity for embedded ACIS data.REVOLVEDSURFACEc                @    t         |           t               | _        y rX   )r8   r9   r   %transformation_matrix_revolved_entityr?   s    rB   r9   zRevolvedSurface.__init__w  s    5=Z2r7   c                    t        |t              sJ t        |   ||       | j                  j                         |_        y rX   )rY   r)   r8   r\   rG  r  r  s      rB   r\   zRevolvedSurface.copy_data{  s<    &/222&-066;;= 	4r7   c                    t         |   |      }|r7|j                  |t        dd       | j	                  |j
                  d          |S r  )r8   rw   rx   !acdb_revolved_surface_group_codesr  r{   r|   s      rB   rw   z RevolvedSurface.load_dxf_attribs  r  r7   c                (    t        |d      | _        y )Nr   r   )r   rG  r  s     rB   r  zRevolvedSurface.load_matrices  s    5@B5O2r7   c                (   t         |   |       |j                  t        j                  t
        j                         | j                  j                  |g d       t        |d| j                         | j                  j                  |g d       y)r   )r   r=  r>  r?  r@  r   r  )r   rA  rB  r   r   rC  N)r8   r   r   r   r   acdb_revolved_surfacer   rR   r   r   rG  r   s     rB   r   zRevolvedSurface.export_entity  s     	i( 	U224I4N4NO##		
 	==	

 	##
	
r7   r   rX   r   r   r   )r   r   r   r   r   r   r   r   r   r   rM  r   r9   r   r   r\   rw   r  r   r   r   s   @rB   r)   r)   j  s    OGJ@ 4@ 
 
 7;	4			 	P  
  
r7   r)   AcDbSweptSurfaceswept_entity_idpath_entity_id[   sweep_alignmentc                       e Zd ZdZdZ eeeee	e
      Z fdZeefd fd       Ze	 d		 	 	 d
 fd       ZddZed fd       Z xZS )r*   zBDXF SWEPTSURFACE entity - container entity for embedded ACIS data.SWEPTSURFACEc                    t         |           t               | _        t               | _        t               | _        t               | _        y rX   )r8   r9   r   "transformation_matrix_sweep_entity!transformation_matrix_path_entityr  r  r?   s    rB   r9   zSweptSurface.__init__  s6    2:*/19.2:*/19.r7   c                B   t        |t              sJ t        |   ||       | j                  j                         |_        | j                  j                         |_        | j                  j                         |_        | j                  j                         |_        y rX   )	rY   r*   r8   r\   rV  r  rW  r  r  r  s      rB   r\   zSweptSurface.copy_data  s    &,///&-03388: 	1 22779 	0 3388: 	1 22779 	0r7   c                    t         |   |      }|r7|j                  |t        dd       | j	                  |j
                  d          |S r  )r8   rw   rx   acdb_swept_surface_group_codesr  r{   r|   s      rB   rw   zSweptSurface.load_dxf_attribs  sT     g&y1**3QE +  y33A67
r7   c                    t        |d      | _        t        |d      | _        t        |d      | _        t        |d      | _        y )Nr  r   r#  r  r  )r   rV  rW  r  r  r  s     rB   r  zSweptSurface.load_matrices  s>    2=d2L/1<T1K.2=d2L/1<T1K.r7   c                   t         |   |       |j                  t        j                  t
        j                         | j                  j                  |ddg       t        |d| j                         t        |d| j                         | j                  j                  |g d       t        |d| j                         t        |d| j                         | j                  j                  |g d	       y
)r   rO  rP  r  r  r#  r   r  r  )	r   rR  r  r  r  r  r  r  r  N)r8   r   r   r   r   acdb_swept_surfacer   rR   r   r   rV  rW  r  r  r   s     rB   r   zSweptSurface.export_entity  s     	i( 	U224F4K4KL##! 	
 	Bt'N'N	
 	ib1W1WX##
	
 	Bt'N'N	
 	ib1W1WX##
	
r7   r   rX   r   r   r   )r   r   r   r   r   r   r   r   r   r   r]  r   r9   r   r   r\   rw   r  r   r   r   s   @rB   r*   r*     s    LGJ< 4@ 
 
  7;	4			 	L /
 /
r7   r*   )r   r   r   Iterable[str])r   r^  r   zIterable[DXFTag])r   r   r   r   r   r   )rp   r!   r   r   r   r   r   r   )O
__future__r   typingr   r   r   r   r   r	   typing_extensionsr
   r   loggingezdxf.lldxf.attributesr   r   r   r   r   ezdxf.lldxfr   ezdxf.lldxf.tagsr   r   
ezdxf.mathr   ezdxf.toolsr   r   r+   r   	dxfentityr   r   dxfgfxr   r   factoryr   r  r   temporary_transformr   ezdxf.entitiesr    ezdxf.lldxf.tagwriterr!   r"   __all__	getLoggerrd   rV   r   ry   r#   r   r   r%   r   r   r$   r   r   r   r   r&   point3dr!  r  r'   r9  r6  r(   rM  rJ  r)   r]  rZ  r*   r   r7   rB   <module>rq     s   # J J ,    )  #  4 + $  :+7	 
		7	##2q)7qU]]3  %77L$M !6 u.: u. u.p " T   '#s3 .l;  Ed E E:*
 2;2; .l;  Gd G G8 $GBK%--8
 	wr3/ 	C 8 	gb#6 	wr3/ 	C0 	wr3/ 	a(" 	 Q!7#$ 	GB*%( 	wsA.)* 	Q'+, 	'#q1-. 	*73+B/0 	)'#q*A12 	1'"EMM2R3 < %77L$M ! [
g [
 [
| " &-R[$R5"2s3!(S!9&r37'.sA'>C+"32"32"32a( a0 a0 ( #55H"I  2SG 2S 2Sj $B,b6r7 r{ r{ 'A 6%b!4r1-a( a0 $ %77L$M ! H
g H
 H
V !!72;! 	'"+	! 	wr{! 	A 6! 	gb!4! 	wr1-! 	A.!  	wr1-!!, 	a(-!0 	72q11!2 	GB*3!6 	wsA.7!8 	Q'9!: 	'#q1;!< 	*73+B=!> 	)'#q*A?!@ 	1'"EMM2RA!$ J "44F!G  f
7 f
 f
r7   