§
    ZøÁi‹7  ã                  óŽ  — d dl mZ d dl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 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 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 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 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$ ddl$m%Z% ddl&m'Z' er6d d l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.m0Z0 d d&l1m2Z2 d d'l3m4Z4 dd(lm5Z5  G d)„ d*e"¦  «        Z6 G d+„ d,ee¦  «        Z7 G d-„ d.ee¦  «        Z8 e'e7d/¦  «        dGd5„¦   «         Z9 e'e8d/¦  «        dHd6„¦   «         Z: e'ed/¦  «        dId9„¦   «         Z;dJd<„Z< e'ed/¦  «        dKd>„¦   «         Z= e'ed/¦  «        dLd@„¦   «         Z> e'ed/¦  «        dMdB„¦   «         Z? e'ed/¦  «        dNdD„¦   «         Z@ e'e d/¦  «        dOdF„¦   «         ZAdS )Pé    )ÚannotationsN)ÚAny)ÚDict)ÚList)ÚOptional)ÚTYPE_CHECKING)ÚUnion)Útypes)ÚColumn)ÚCreateIndex)Ú
Executable)ÚClauseElementé   )Ú	AddColumn)Úalter_column)Úalter_table)ÚColumnDefault)Ú
ColumnName)ÚColumnNullable)Ú
ColumnType)Úformat_column_name)Úformat_server_default)Úformat_table_name)Úformat_type)ÚRenameTable)ÚDefaultImplé   )Úutil)Úsqla_compat)Úcompiles)ÚLiteral)ÚMSDDLCompiler)ÚMSSQLCompiler)ÚCursorResult)ÚIndex)ÚTable)ÚTableClause)Ú
TypeEngine)Ú_ServerDefaultc                  óÔ   ‡ — e Zd ZdZdZdZej        ddhfz   Zej        dz   Zd5ˆ fd	„Z	d6ˆ fd„Z
d5d„Zd5ˆ fd„Z	 	 	 	 	 	 	 	 d7d8ˆ fd#„Zd9d&„Zd:ˆ fd+„Z	 d;d<ˆ fd.„Zd/„ Zˆ fd0„Zd=d4„Zˆ xZS )>Ú	MSSQLImplÚmssqlTÚGOÚVARCHARÚNVARCHAR)ÚminvalueÚmaxvalueÚ
nominvalueÚ
nomaxvalueÚcycleÚcacheÚreturnÚNonec                ó„   •—  t          ¦   «         j        |i |¤Ž | j                             d| j        ¦  «        | _        d S )NÚmssql_batch_separator)ÚsuperÚ__init__Úcontext_optsÚgetÚbatch_separator)ÚselfÚargÚkwÚ	__class__s      €ú[/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/alembic/ddl/mssql.pyr;   zMSSQLImpl.__init__B   sH   ø€ Ø�‰ŒÔ˜#Ð$ Ð$Ð$Ð$Ø#Ô0×4Ò4Ø# TÔ%9ñ 
ô  
ˆÔÐÐó    Ú	constructr   úOptional[CursorResult]c                ó’   •—  t          ¦   «         j        |g|¢R i |¤Ž}| j        r!| j        r|                      | j        ¦  «         |S ©N)r:   Ú_execÚas_sqlr>   Ústatic_output)r?   rE   ÚargsrA   ÚresultrB   s        €rC   rI   zMSSQLImpl._execH   sX   ø€ Ø•‘””˜yÐ6¨4Ð6Ð6Ð6°2Ð6Ð6ˆØŒ;ð 	5˜4Ô/ð 	5Ø×Ò˜tÔ3Ñ4Ô4Ð4ØˆrD   c                ó@   — |                       d| j        z   ¦  «         d S )NzBEGIN TRANSACTION)rK   Úcommand_terminator)r?   s    rC   Ú
emit_beginzMSSQLImpl.emit_beginN   s%   € Ø×ÒÐ.°Ô1HÑHÑIÔIÐIÐIÐIrD   c                ó    •— t          ¦   «                              ¦   «          | j        r#| j        r|                      | j        ¦  «         d S d S d S rH   )r:   Úemit_commitrJ   r>   rK   )r?   rB   s    €rC   rR   zMSSQLImpl.emit_commitQ   s^   ø€ Ý‰Œ×ÒÑÔÐØŒ;ð 	5˜4Ô/ð 	5Ø×Ò˜tÔ3Ñ4Ô4Ð4Ð4Ð4ð	5ð 	5ð 	5ð 	5rD   NFÚ
table_nameÚstrÚcolumn_nameÚnullableúOptional[bool]Úserver_defaultú/Optional[Union[_ServerDefault, Literal[False]]]ÚnameúOptional[str]Útype_úOptional[TypeEngine]ÚschemaÚexisting_typeÚexisting_server_defaultúOptional[_ServerDefault]Úexisting_nullablerA   c           	     óB  •— |�|�|}d }n8|€t          j        d¦  «        ‚n!|
�	|�|
}|}d }n|�t          j        d¦  «         d}t          j        ||	¦  «        st          j        ||	¦  «        rd}||d<   |	|d<    t          ¦   «         j        ||f|||||
dœ|¤Ž |durV|du rR|	dus|€%|                      t          ||d|¦  «        ¦  «         |�%t          ¦   «                              ||||¬	¦  «         |�'t          ¦   «                              ||||¬
¦  «         d S d S )NzhMS-SQL ALTER COLUMN operations with NULL or NOT NULL require the existing_type or a new type_ be passed.z«MS-SQL ALTER COLUMN operations that specify type_= should also specify a nullable= or existing_nullable= argument to avoid implicit conversion of NOT NULL columns to NULL.FTrX   r`   )rV   r\   r^   r_   rb   úsys.default_constraints)r^   rX   )r^   rZ   )
r   ÚCommandErrorÚwarnr   Ú_server_default_is_identityÚ_server_default_is_computedr:   r   rI   Ú_ExecDropConstraint)r?   rS   rU   rV   rX   rZ   r\   r^   r_   r`   rb   rA   Úused_defaultrB   s                €rC   r   zMSSQLImpl.alter_columnV   sô  ø€ ð  ÐØÐ ð !&�Ø��ØÐ&ÝÔ'ð>ñô ð ð 'ð Ð*¨uÐ/@Ø(ˆHð "ˆMØˆEˆEàÐÝŒIð/ñô ð ð ˆÝÔ2ØÐ3ñ
ô 
ð 	DåÔ4ØÐ3ñ
ô 
ð	Dð
  ˆLØ#1ˆBÐÑ Ø,CˆBÐ(Ñ)à�‰ŒÔØØð		
ð ØØØ'Ø/ð		
ð 		
ð ð		
ð 		
ð 		
ð  Ð&Ð&¨<¸5Ð+@Ð+@Ø&¨eÐ3Ð3°~Ð7MØ—
’
Ý'Ø"Ø#Ø1Øñ	ô ñô ð ð Ð)Ý‘”×$Ò$ØØØ!Ø#1ð	 %ñ ô ð ð ÐÝ‰GŒG× Ò Ø˜K°¸Tð !ñ ô ð ð ð ð ÐrD   Úindexr%   c                ó  — |j                              dd ¦  «        pd}|j        €J ‚|D ]B}||j        j        vr2|j                             t          |t          j        ¦  «        ¦  «         ŒC|                      t          |fi |¤Ž¦  «         d S )NÚmssql_include© )
Úkwargsr=   ÚtableÚcÚappend_columnr   ÚsqltypesÚNullTyperI   r   )r?   rk   rA   rm   Úcols        rC   Úcreate_indexzMSSQLImpl.create_index®   sš   € ð œ×(Ò(¨¸$Ñ?Ô?ÐEÀ2ˆØŒ{Ð&Ð&Ð&Ø ð 	Jð 	JˆCØ˜%œ+œ-Ð'Ð'Ø”×)Ò)­&°µhÔ6GÑ*HÔ*HÑIÔIÐIøØ�
Š
•;˜uÐ+Ð+¨Ð+Ð+Ñ,Ô,Ð,Ð,Ð,rD   rp   úUnion[TableClause, Table]Úrowsú
List[dict]c                óZ  •— | j         r‡|                      d| j        j                             |¦  «        z  ¦  «          t          ¦   «         j        ||fi |¤Ž |                      d| j        j                             |¦  «        z  ¦  «         d S  t          ¦   «         j        ||fi |¤Ž d S )NzSET IDENTITY_INSERT %s ONzSET IDENTITY_INSERT %s OFF)rJ   rI   ÚdialectÚidentifier_preparerÚformat_tabler:   Úbulk_insert)r?   rp   rx   rA   rB   s       €rC   r~   zMSSQLImpl.bulk_insert¹   sÏ   ø€ ð Œ;ð 	3Ø�JŠJØ+Ø”,Ô2×?Ò?ÀÑFÔFñGñô ð ð  �E‰GŒGÔ  tÐ2Ð2¨rÐ2Ð2Ð2Ø�JŠJØ,Ø”,Ô2×?Ò?ÀÑFÔFñGñô ð ð ð ð
  �E‰GŒGÔ  tÐ2Ð2¨rÐ2Ð2Ð2Ð2Ð2rD   ÚcolumnúColumn[Any]c                ó®  •— |                      dd¦  «        }|r%|                      t          ||d|¦  «        ¦  «         |                      dd¦  «        }|r%|                      t          ||d|¦  «        ¦  «         |                      dd¦  «        }|r$|                      t          |||¦  «        ¦  «          t	          ¦   «         j        ||fd|i|¤Ž d S )NÚmssql_drop_defaultFrd   Úmssql_drop_checkzsys.check_constraintsÚmssql_drop_foreign_keyr^   )ÚpoprI   ri   Ú_ExecDropFKConstraintr:   Údrop_column)	r?   rS   r   r^   rA   Údrop_defaultÚ
drop_checkÚdrop_fksrB   s	           €rC   r‡   zMSSQLImpl.drop_columnÉ   s  ø€ ð —v’vÐ2°EÑ:Ô:ˆØð 	Ø�JŠJÝ#Ø Ð(AÀ6ñô ñô ð ð
 —V’VÐ.°Ñ6Ô6ˆ
Øð 	Ø�JŠJÝ#Ø Ð(?Àñô ñô ð ð
 —6’6Ð2°EÑ:Ô:ˆØð 	JØ�JŠJÕ,¨Z¸ÀÑHÔHÑIÔIÐIØ�‰ŒÔ˜J¨ÐDÐD°vÐDÀÐDÐDÐDÐDÐDrD   c                ón   — |�t          j        dd|¦  «        }|�t          j        dd|¦  «        }||k    S )Nz[\(\) \"\']Ú )ÚreÚsub)r?   Úinspector_columnÚmetadata_columnÚrendered_metadata_defaultÚrendered_inspector_defaults        rC   Úcompare_server_defaultz MSSQLImpl.compare_server_defaultã   sV   € ð %Ð0Ý(*¬Ø Ð$=ñ)ô )Ð%ð &Ð1õ *,¬Ø Ð$>ñ*ô *Ð&ð *Ð-FÒFÐFrD   c                ó�   •— t          ¦   «                              ||¦  «        \  }}}|€|�|s|j        �|j        j        rd}|||fS )NF)r:   Ú_compare_identity_defaultr   Úprimary_key)r?   Úmetadata_identityÚinspector_identityÚdiffÚignoredÚis_alterrB   s         €rC   r•   z#MSSQLImpl._compare_identity_defaultù   sj   ø€ Ý"'¡'¤'×"CÒ"CØÐ1ñ#
ô #
Ñˆˆg�xð
 Ð%Ø"Ð.Øð /à"Ô)Ð5Ø"Ô)Ô5ð 6ð
 ˆHà�W˜hÐ&Ð&rD   Úreflected_objectúDict[str, Any]Úkindc                ó  — |                      di ¦  «                             ¦   «         }|                      d¦  «        s|                     dd ¦  «         |                      d¦  «        s|                     dd ¦  «         |S )NÚdialect_optionsrm   Úmssql_clustered)r=   Úcopyr…   )r?   rœ   rž   Úoptionss       rC   Ú adjust_reflected_dialect_optionsz*MSSQLImpl.adjust_reflected_dialect_options  s}   € ð #×&Ò&Ð'8¸"Ñ=Ô=×BÒBÑDÔDˆØ�{Š{˜?Ñ+Ô+ð 	/Ø�KŠK˜¨Ñ.Ô.Ð.Ø�{Š{Ð,Ñ-Ô-ð 	1Ø�KŠKÐ)¨4Ñ0Ô0Ð0ØˆrD   )r6   r7   )rE   r   r6   rF   )NFNNNNNN)rS   rT   rU   rT   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r[   r_   r]   r`   ra   rb   rW   rA   r   r6   r7   )rk   r%   rA   r   r6   r7   )rp   rw   rx   ry   rA   r   r6   r7   rH   )rS   rT   r   r€   r^   r[   r6   r7   )rœ   r�   rž   rT   r6   r�   )Ú__name__Ú
__module__Ú__qualname__Ú__dialect__Útransactional_ddlr>   r   Útype_synonymsÚidentity_attrs_ignorer;   rI   rP   rR   r   rv   r~   r‡   r“   r•   r¤   Ú__classcell__)rB   s   @rC   r+   r+   3   s±  ø€ € € € € Ø€KØÐØ€OàÔ-°)¸ZÐ1HÐ0JÑJ€MØ'Ô=ð Añ Ðð
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ðJð Jð Jð Jð5ð 5ð 5ð 5ð 5ð 5ð $(ð Ø"Ø&*Ø $Ø.2Ø<@Ø,0ðVð Vð Vð Vð Vð Vð Vðp	-ð 	-ð 	-ð 	-ð3ð 3ð 3ð 3ð 3ð 3ð( !%ð	Eð Eð Eð Eð Eð Eð Eð4Gð Gð Gð,'ð 'ð 'ð 'ð 'ð$	ð 	ð 	ð 	ð 	ð 	ð 	ð 	rD   r+   c                  ó   — e Zd ZdZdd„ZdS )ri   FÚtnamerT   ÚcolnameúUnion[Column[Any], str]r\   r^   r[   r6   r7   c                ó>   — || _         || _        || _        || _        d S rH   )r®   r¯   r\   r^   )r?   r®   r¯   r\   r^   s        rC   r;   z_ExecDropConstraint.__init__  s$   € ð ˆŒ
ØˆŒØˆŒ
ØˆŒˆˆrD   N)
r®   rT   r¯   r°   r\   rT   r^   r[   r6   r7   ©r¥   r¦   r§   Úinherit_cacher;   rn   rD   rC   ri   ri     s-   € € € € € Ø€Mð
ð 
ð 
ð 
ð 
ð 
rD   ri   c                  ó   — e Zd ZdZdd
„ZdS )r†   Fr®   rT   r¯   r€   r^   r[   r6   r7   c                ó0   — || _         || _        || _        d S rH   )r®   r¯   r^   )r?   r®   r¯   r^   s       rC   r;   z_ExecDropFKConstraint.__init__*  s   € ð ˆŒ
ØˆŒØˆŒˆˆrD   N)r®   rT   r¯   r€   r^   r[   r6   r7   r²   rn   rD   rC   r†   r†   '  s-   € € € € € Ø€Mðð ð ð ð ð rD   r†   r,   ÚelementÚcompilerr#   r6   rT   c           	     ó‚   — | j         | j        | j        | j        f\  }}}}d|||t	          |||¦  «        |r|dz   nddœz  S )Na  declare @const_name varchar(256)
select @const_name = QUOTENAME([name]) from %(type)s
where parent_object_id = object_id('%(schema_dot)s%(tname)s')
and col_name(parent_object_id, parent_column_id) = '%(colname)s'
exec('alter table %(tname_quoted)s drop constraint ' + @const_name)ú.rŒ   )Útyper®   r¯   Útname_quotedÚ
schema_dot)r^   r®   r¯   r\   r   )r¶   r·   rA   r^   r®   r¯   r\   s          rC   Ú_exec_drop_col_constraintr½   2  sn   € ð
 	ŒØŒØŒØŒð	%Ñ!€FˆE�7˜EðGð
 ØØÝ)¨(°E¸6ÑBÔBØ&,Ð4�f˜s‘l�l°"ðJð Jñ	
ð 
rD   c                ól   — | j         | j        | j        }}}d||t          |||¦  «        |r|dz   nddœz  S )Nay  declare @const_name varchar(256)
select @const_name = QUOTENAME([name]) from
sys.foreign_keys fk join sys.foreign_key_columns fkc
on fk.object_id=fkc.constraint_object_id
where fkc.parent_object_id = object_id('%(schema_dot)s%(tname)s')
and col_name(fkc.parent_object_id, fkc.parent_column_id) = '%(colname)s'
exec('alter table %(tname_quoted)s drop constraint ' + @const_name)r¹   rŒ   )r®   r¯   r»   r¼   )r^   r®   r¯   r   )r¶   r·   rA   r^   r®   r¯   s         rC   Ú_exec_drop_col_fk_constraintr¿   K  sZ   € ð %œ^¨W¬]¸G¼O�7ˆE€FðGð ØÝ)¨(°E¸6ÑBÔBØ&,Ð4�f˜s‘l�l°"ð	Jð Jñð rD   r   r"   c                ód   — t          || j        | j        ¦  «        ›dt          || j        fi |¤Ž›�S ©Nú )r   rS   r^   Úmssql_add_columnr   ©r¶   r·   rA   s      rC   Úvisit_add_columnrÅ   _  sB   € õ 	�H˜gÔ0°'´.ÑAÔAÐAÐAÝ˜ 7¤>Ð8Ð8°RÐ8Ð8Ð8ðð rD   r   r€   c                ó$   — d | j         |fi |¤Žz  S )NzADD %s)Úget_column_specification)r·   r   rA   s      rC   rÃ   rÃ   g  s%   € ð Ð7�hÔ7¸ÐEÐEÀ"ÐEÐEÑEÐErD   r   c                ó¬   — t          || j        | j        ¦  «        ›dt          || j        ¦  «        ›dt          || j        ¦  «        ›d| j        rdnd›�S )NrÂ   ÚNULLzNOT NULL)r   rS   r^   r   rU   r   r_   rV   rÄ   s      rC   Úvisit_column_nullablerÊ   m  sf   € õ
 	�H˜gÔ0°'´.ÑAÔAÐAÐAÝ�X˜wÔ2Ñ3Ô3Ð3Ð3Ý�H˜gÔ3Ñ4Ô4Ð4Ð4ØÔ"Ð2ˆˆ¨
Ð2ð	ð rD   r   c                ó”   — t          || j        | j        ¦  «        ›dt          || j        ¦  «        ›dt          || j        ¦  «        ›�S )Nz ADD DEFAULT z FOR )r   rS   r^   r   Údefaultr   rU   rÄ   s      rC   Úvisit_column_defaultrÍ   y  sP   € õ 	�H˜gÔ0°'´.ÑAÔAÐAÐAÝ˜h¨¬Ñ8Ô8Ð8Ð8Ý˜8 WÔ%8Ñ9Ô9Ð9ðð rD   r   c           	     ó˜   — dt          || j        | j        ¦  «        ›dt          || j        ¦  «        ›dt          || j        ¦  «        ›d�S )NúEXEC sp_rename 'r¹   ú', z
, 'COLUMN')r   rS   r^   r   rU   ÚnewnamerÄ   s      rC   Úvisit_rename_columnrÒ   †  sU   € € õ
 	˜( GÔ$6¸¼ÑGÔGÐGÐGÝ˜8 WÔ%8Ñ9Ô9Ð9Ð9Ý˜8 W¤_Ñ5Ô5Ð5Ð5ðð rD   r   c                ó”   — t          || j        | j        ¦  «        ›dt          || j        ¦  «        ›dt          || j        ¦  «        ›�S rÁ   )r   rS   r^   r   rU   r   r\   rÄ   s      rC   Úvisit_column_typerÔ   ‘  sP   € õ
 	�H˜gÔ0°'´.ÑAÔAÐAÐAÝ�X˜wÔ2Ñ3Ô3Ð3Ð3Ý�H˜gœmÑ,Ô,Ð,ðð rD   r   c                ól   — dt          || j        | j        ¦  «        ›dt          || j        d ¦  «        ›�S )NrÏ   rÐ   )r   rS   r^   Únew_table_namerÄ   s      rC   Úvisit_rename_tabler×   œ  s?   € € õ
 	˜( GÔ$6¸¼ÑGÔGÐGÐGÝ˜( GÔ$:¸DÑAÔAÐAðð rD   )r¶   ri   r·   r#   r6   rT   )r¶   r†   r·   r#   r6   rT   )r¶   r   r·   r"   r6   rT   )r·   r"   r   r€   r6   rT   )r¶   r   r·   r"   r6   rT   )r¶   r   r·   r"   r6   rT   )r¶   r   r·   r"   r6   rT   )r¶   r   r·   r"   r6   rT   )r¶   r   r·   r"   r6   rT   )BÚ
__future__r   r�   Útypingr   r   r   r   r   r	   Ú
sqlalchemyr
   rs   Úsqlalchemy.schemar   r   Úsqlalchemy.sql.baser   Úsqlalchemy.sql.elementsr   Úbaser   r   r   r   r   r   r   r   r   r   r   r   Úimplr   rŒ   r   r   Úutil.sqla_compatr    r!   Úsqlalchemy.dialects.mssql.baser"   r#   Úsqlalchemy.engine.cursorr$   Úsqlalchemy.sql.schemar%   r&   Úsqlalchemy.sql.selectabler'   Úsqlalchemy.sql.type_apir(   r)   r+   ri   r†   r½   r¿   rÅ   rÃ   rÊ   rÍ   rÒ   rÔ   r×   rn   rD   rC   ú<module>ræ      sÉ  ðð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ø $Ð $Ð $Ð $Ð $Ð $Ø )Ð )Ð )Ð )Ð )Ð )Ø *Ð *Ð *Ð *Ð *Ð *Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð %ØÐÐÐÐÐà<Ð<Ð<Ð<Ð<Ð<Ø<Ð<Ð<Ð<Ð<Ð<Ø5Ð5Ð5Ð5Ð5Ð5Ø+Ð+Ð+Ð+Ð+Ð+Ø+Ð+Ð+Ð+Ð+Ð+Ø5Ð5Ð5Ð5Ð5Ð5Ø2Ð2Ð2Ð2Ð2Ð2à$Ð$Ð$Ð$Ð$Ð$ðað að að að a�ñ aô að aðHð ð ð ð ˜* mñ ô ð ð ð ð ð ð ˜J¨ñ ô ð ð 
€Ð
˜wÑ'Ô'ðð ð ñ (Ô'ðð0 
€Ð
 Ñ)Ô)ðð ð ñ *Ô)ðð& 
€ˆ)�WÑÔðð ð ñ ÔððFð Fð Fð Fð 
€ˆ.˜'Ñ"Ô"ðð ð ñ #Ô"ðð 
€ˆ-˜Ñ!Ô!ð	ð 	ð 	ñ "Ô!ð	ð 
€ˆ*�gÑÔðð ð ñ Ôðð 
€ˆ*�gÑÔðð ð ñ Ôðð 
€ˆ+�wÑÔðð ð ñ  Ôðð ð rD   