§
    ƒÛgt  ã                   ó"  — d dl Z d dl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mZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ  G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)ÚTestCaseÚcaptured_stdout)ÚnjitÚ	literally)Útypes)Útuple_setitemÚbuild_full_slice_tuple)Úto_fixed_tupleÚempty_inferred)Úmemcpy_region)Údump_refcount)Útrailing_zerosÚleading_zeros)ÚTypingErrorc                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTestTupleIntrinsicz!Tests for numba.unsafe.tuple
    c                 óÜ  ‡
— t           d„ ¦   «         }t          j        d¦  «         t          d¦  «        D �]5}t          j        dd¦  «        Š
t          ˆ
fd„t          ‰
¦  «        D ¦   «         ¦  «        }t          d„ t          ‰
¦  «        D ¦   «         ¦  «        }t          t          t          |¦  «        ¦  «        ¦  «        }t          j        |¦  «         t          |¦  «        }t          |¦  «        }t          j
        |¦  «        }||t          j
        |¦  «        <    ||||¦  «        \  }}	|                      ||¦  «         |                      |	t          |¦  «        ¦  «         �Œ7d S )Nc                 ó\   — | }t          ||¦  «        D ]\  }}t          |||¦  «        }Œ| |fS ©N)Úzipr   )ÚtupÚidxsÚvalsÚout_tupÚiÚvs         úX/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_unsafe_intrinsics.pyÚfooz2TestTupleIntrinsic.test_tuple_setitem.<locals>.foo   s?   € àˆGÝ˜D $™œð 7ð 7‘��1Ý'¨°°AÑ6Ô6��Ø˜�<Ðó    é{   é   é   é
   c                 ó:   •— g | ]}t          j        d ‰¦  «        ‘ŒS )r   ©ÚrandomÚrandint)Ú.0r   Úns     €r   ú
<listcomp>z9TestTupleIntrinsic.test_tuple_setitem.<locals>.<listcomp>   s%   ø€ Ð@Ð@Ð@°!�œ¨¨1Ñ-Ô-Ð@Ð@Ð@r   c                 ó8   — g | ]}t          j        d d¦  «        ‘ŒS )r#   r!   r%   )r(   r   s     r   r*   z9TestTupleIntrinsic.test_tuple_setitem.<locals>.<listcomp>   s$   € ÐCÐCÐC°Q�&œ.¨¨RÑ0Ô0ÐCÐCÐCr   )r   r&   ÚseedÚranger'   ÚtupleÚlistÚlenÚshuffleÚnpÚasarrayÚassertEqual)Úselfr   Ú_r   r   r   Ú
expect_tupÚ
expect_outÚgot_tupÚgot_outr)   s             @r   Útest_tuple_setitemz%TestTupleIntrinsic.test_tuple_setitem   s[  ø€ Ý	ð	 ð 	 ñ 
Œð	 õ 	Œ�CÑÔÐÝ�r‘”ð 	9ñ 	9ˆAå”˜q "Ñ%Ô%ˆAÝÐ@Ð@Ð@Ð@µu¸Q±x´xÐ@Ñ@Ô@ÑAÔAˆCÝÐCÐC½%À¹(¼(ÐCÑCÔCÑDÔDˆDÝ��c $™iœiÑ(Ô(Ñ)Ô)ˆDÝŒN˜4Ñ Ô Ð Ý˜‘;”;ˆDå˜s™œˆJÝœ JÑ/Ô/ˆJØ+/ˆJ•r”z $Ñ'Ô'Ñ(à"˜s 3¨¨dÑ3Ô3ÑˆG�Wà×Ò˜W jÑ1Ô1Ð1Ø×Ò˜W¥e¨JÑ&7Ô&7Ñ8Ô8Ð8Ñ8ð!	9ð 	9r   c           	      ó¶  — t           d„ ¦   «         }t          dd¦  «        D ]·}t          j                             t          j        |¦  «        dz   ¦  «        }t          d|dz   ¦  «        D ],}t          j                             | |||¦  «        ¦  «         Œ-|                      t          ¦  «        5   |||dz   ¦  «         d d d ¦  «         n# 1 swxY w Y   Œ¸d S )Nc                 óF   — | t          t          |¦  «        ¦  «                 S r   )r	   r   )Úar)   s     r   Úfull_slice_arrayz=TestTupleIntrinsic.test_slice_tuple.<locals>.full_slice_array.   s   € ð Õ+­I°a©L¬LÑ9Ô9Ô:Ð:r   r"   é   )	r   r-   r2   r&   ÚarangeÚtestingÚassert_array_equalÚassertRaisesr   )r5   r?   r)   r>   r   s        r   Útest_slice_tuplez#TestTupleIntrinsic.test_slice_tuple-   s'  € Ý	ð	;ð 	;ñ 
Œð	;õ �q˜!‘”ð 	+ð 	+ˆAÝ”	× Ò ¥¤¨1¡¤°Ñ!1Ñ2Ô2ˆAÝ˜1˜a !™e‘_”_ð Ið I�Ý”
×-Ò-¨aÐ1AÐ1AÀ!ÀQÑ1GÔ1GÑHÔHÐHÐHØ×"Ò"¥;Ñ/Ô/ð +ð +à Ð   A¨¡EÑ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +øð		+ð 	+s   Â1CÃC	ÃC	N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r;   rE   © r   r   r   r      s<   € € € € € ðð ð9ð 9ð 9ð6+ð +ð +ð +ð +r   r   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚTestNdarrayIntrinsicz#Tests for numba.unsafe.ndarray
    c           	      óL  ‡— dŠt           ˆfd„¦   «         }t          j                             d¦  «         t	          d¦  «        D ]È}t          j                             d¦  «        } ||¦  «        \  }}}}|                      |t          |d d…         ¦  «        ¦  «         |                      |t          |d d…         ¦  «        ¦  «         |                      |t          |d d…         ¦  «        ¦  «         |                      |d¦  «         ŒÉ|                      t          ¦  «        5 } |t          j                             d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |  	                    d	t          |j        ¦  «        ¦  «         t           d
„ ¦   «         }	|                      t          ¦  «        5 } |	t          j                             d¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   d}
|  	                    |
t          |j        ¦  «        ¦  «         d S )Nr@   c                 ó’   •— t          | d¬¦  «        }t          | d¦  «        }t          | ‰¦  «        }t          | d¦  «        }||||fS )Nr"   )Úlengthé   r   ©r
   )Úarrayr>   ÚbÚcÚdÚconsts        €r   r   z5TestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.fooB   sP   ø€ å˜u¨QÐ/Ñ/Ô/ˆAÝ˜u aÑ(Ô(ˆAÝ˜u eÑ,Ô,ˆAÝ˜u aÑ(Ô(ˆAØ�a˜˜A�:Ðr   r    r#   r"   rP   rJ   ©r"   rP   zNot supported on array.ndim=2c                 ó"   — t          | |¦  «        S r   rQ   )rR   rO   s     r   Útuple_with_lengthzCTestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.tuple_with_length]   s   € å! %¨Ñ0Ô0Ð0r   z$*length* argument must be a constant)r   r2   r&   r,   r-   r4   r.   rD   r   ÚassertInÚstrÚ	exception)r5   r   r6   Úarrr>   rS   rT   rU   ÚraisesrY   Ú	expectmsgrV   s              @r   Útest_to_fixed_tuplez(TestNdarrayIntrinsic.test_to_fixed_tuple?   s„  ø€ Øˆå	ð	ð 	ð 	ð 	ñ 
Œð	õ 	Œ	�Š�sÑÔÐÝ�r‘”ð 		$ð 		$ˆAå”)×"Ò" 1Ñ%Ô%ˆCà˜˜S™œ‰JˆAˆq�!�Qà×Ò˜Q¥ c¨"¨1¨"¤g¡¤Ñ/Ô/Ð/Ø×Ò˜Q¥ c¨"¨1¨"¤g¡¤Ñ/Ô/Ð/Ø×Ò˜Q¥ c¨"¨1¨"¤g¡¤Ñ/Ô/Ð/Ø×Ò˜Q Ñ#Ô#Ð#Ð#ð ×Ò�{Ñ+Ô+ð 	*¨vØˆC•”	× Ò  Ñ(Ô(Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*à�ŠÐ5Ý˜&Ô*Ñ+Ô+ñ	-ô 	-ð 	-õ 
ð	1ð 	1ñ 
Œð	1ð ×Ò�{Ñ+Ô+ð 	6¨vØÐ�bœi×.Ò.¨qÑ1Ô1°1Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6à:ˆ	Ø�Š�i¥ VÔ%5Ñ!6Ô!6Ñ7Ô7Ð7Ð7Ð7s$   Ä')EÅE Å#E Æ9*G/Ç/G3Ç6G3c                 óª   — t           d„ ¦   «         } |¦   «         }t          j        dgdz  ¦  «        }t          j                             ||¦  «         d S )Nc                  óv   — t          d¦  «        } d}t          t          | ¦  «        ¦  «        D ]
}|dz   | |<   Œ| S ©N)r#   gš™™™™™ñ?rP   )r   r-   r0   ©ÚSr>   r   s      r   Úfuncz;TestNdarrayIntrinsic.test_issue_3586_variant1.<locals>.funcg   sC   € å˜uÑ%Ô%ˆAØˆAÝ�3˜q™6œ6‘]”]ð ð �Ø˜1‘u��!‘�ØˆHr   çÍÌÌÌÌÌ@r#   ©r   r2   r3   rB   rC   ©r5   rf   ÚgotÚexpects       r   Útest_issue_3586_variant1z-TestNdarrayIntrinsic.test_issue_3586_variant1f   ó[   € Ý	ð	ð 	ñ 
Œð	ð ˆd‰fŒfˆÝ”˜S˜E B™JÑ'Ô'ˆÝ
Œ
×%Ò% c¨6Ñ2Ô2Ð2Ð2Ð2r   c                 óª   — t           d„ ¦   «         } |¦   «         }t          j        dgdz  ¦  «        }t          j                             ||¦  «         d S )Nc                  óf   — t          d¦  «        } d}t          | j        ¦  «        D ]
}|dz   | |<   Œ| S rc   )r   r-   Úsizerd   s      r   rf   z;TestNdarrayIntrinsic.test_issue_3586_variant2.<locals>.funct   s?   € å˜uÑ%Ô%ˆAØˆAÝ˜1œ6‘]”]ð ð �Ø˜1‘u��!‘�ØˆHr   rg   r#   rh   ri   s       r   Útest_issue_3586_variant2z-TestNdarrayIntrinsic.test_issue_3586_variant2s   rm   r   N)rF   rG   rH   rI   r`   rl   rq   rJ   r   r   rL   rL   <   sL   € € € € € ðð ð%8ð %8ð %8ðN3ð 3ð 3ð3ð 3ð 3ð 3ð 3r   rL   c                   ó   — e Zd ZdZd„ ZdS )ÚTestBytesIntrinsicz!Tests for numba.unsafe.bytes
    c                 ó  — t           d„ ¦   «         }t          j        dt          j        ¬¦  «        }t          j        dt          j        ¬¦  «        } ||d|dd¦  «         g d¢}t          j                             ||¦  «         d S )Nc                 óV   — t          | j        j        ||j        j        ||d¦  «         d S )Nr"   )r   ÚctypesÚdata)ÚdstÚ	dst_indexÚsrcÚ	src_indexÚnbytess        r   r   z2TestBytesIntrinsic.test_memcpy_region.<locals>.foo…   s:   € õ ˜#œ*œ/¨9Øœ*œ/¨9°f¸añAô Að Að Að Ar   r#   )Údtypeé   r"   é   )
r   r   r   r   r"   rP   r@   r~   r   r   )r   r2   ÚzerosÚint8rA   rB   rC   )r5   r   rU   ÚsÚexpecteds        r   Útest_memcpy_regionz%TestBytesIntrinsic.test_memcpy_region„   s�   € Ý	ð	Að 	Añ 
Œð	Aõ
 ŒH�R�rœwÐ'Ñ'Ô'ˆÝŒI�b¥¤Ð(Ñ(Ô(ˆð 	ˆˆAˆq�!�Q˜ÑÔÐà1Ð1Ð1ˆÝ
Œ
×%Ò% a¨Ñ2Ô2Ð2Ð2Ð2r   N)rF   rG   rH   rI   r„   rJ   r   r   rs   rs   �   s-   € € € € € ðð ð3ð 3ð 3ð 3ð 3r   rs   c                   ó   — e Zd Zd„ ZdS )ÚTestRefCountc                 óÆ  — t           d„ ¦   «         }t          ¦   «         5 } |¦   «          d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }d}t          j        d d d…         }t          j                             |gdz  ¦  «        }|                      |                     |¦  «        |¦  «         |                      |                     |¦  «        |¦  «         d S )Nc                  ór   — t          j        d¦  «        } | | f}t          | ¦  «         t          |¦  «         d S )Nr#   )r2   Úonesr   )r>   rS   s     r   Úuse_dump_refcountz:TestRefCount.test_dump_refcount.<locals>.use_dump_refcount—   s:   € å”˜‘”ˆAØ�A�ˆAÝ˜!ÑÔÐÝ˜!ÑÔÐÐÐr   zdump refct of {}r"   rP   )	r   r   Úgetvaluer   Úfloat64ÚTupleÚ
from_typesrZ   Úformat)r5   rŠ   ÚstreamÚoutputÚpatÚarytyÚtuptys          r   Útest_dump_refcountzTestRefCount.test_dump_refcount–   s  € Ý	ð	ð 	ñ 
Œð	õ ÑÔð 	  &ØÐÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð —’Ñ"Ô"ˆà ˆÝ”˜c˜c ˜cÔ"ˆÝ”×&Ò&¨ w°¡{Ñ3Ô3ˆØ�Š�c—j’j Ñ'Ô'¨Ñ0Ô0Ð0Ø�Š�c—j’j Ñ'Ô'¨Ñ0Ô0Ð0Ð0Ð0s   Ÿ6¶:½:N)rF   rG   rH   r•   rJ   r   r   r†   r†   •   s#   € € € € € ð1ð 1ð 1ð 1ð 1r   r†   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestZeroCountsc           
      ó  — t          d„ ¦  «        }t          d„ ¦  «        }g d¢}t          j        D ]þ}|                       | |d¦  «        ¦  «         | |d¦  «        ¦  «        cxk    o
|j        k    nc ¦  «         t          |j        ¦  «        D ]C} |d|z  ¦  «        }|                       ||¦  «         ||¦  «        z   dz   |j        ¦  «         ŒD|D ]U}|                       | ||¦  «        ¦  «        d¦  «         |                       | ||dz   ¦  «        ¦  «        d¦  «         ŒVŒÿt          j        D �]K}|                       | |d¦  «        ¦  «         | |d¦  «        ¦  «        cxk    o
|j        k    nc ¦  «         t          |j        dz
  ¦  «        D ]Œ} |d|z  ¦  «        }|                       ||¦  «         ||¦  «        z   dz   |j        ¦  «         |                       || ¦  «        d¦  «         |                       ||¦  «         || ¦  «        ¦  «         Œ�|D ]U}|                       | ||¦  «        ¦  «        d¦  «         |                       | ||dz   ¦  «        ¦  «        d¦  «         ŒV�ŒMd S )Nc                 ó    — t          | ¦  «        S r   )r   ©Úxs    r   ú<lambda>z0TestZeroCounts.test_zero_count.<locals>.<lambda>­   s   € �M¨!Ñ,Ô,€ r   c                 ó    — t          | ¦  «        S r   )r   rš   s    r   rœ   z0TestZeroCounts.test_zero_count.<locals>.<lambda>®   s   € �N¨1Ñ-Ô-€ r   )rP   é*   é~   é€   r   rP   r"   )	r   r   Úunsigned_domainÚ
assertTrueÚbitwidthr-   r4   ÚassertGreaterÚsigned_domain)r5   ÚlzÚtzÚevensÚTr   Úvalr)   s           r   Útest_zero_countzTestZeroCounts.test_zero_count¬   sÙ  € ÝÐ,Ð,Ñ-Ô-ˆÝÐ-Ð-Ñ.Ô.ˆà!Ð!Ð!ˆåÔ&ð 	2ð 	2ˆAØ�OŠO˜B˜B˜q˜q ™tœt™HœH¨¨¨1¨1¨Q©4¬4©¬Ð>Ð>Ò>Ð>°A´JÒ>Ð>Ð>Ð>Ñ?Ô?Ð?Ý˜1œ:Ñ&Ô&ð Dð D�Ø�a˜˜Q™‘i”i�Ø× Ò    C¡¤¨2¨2¨c©7¬7Ñ!2°QÑ!6¸¼
ÑCÔCÐCÐCØð 2ð 2�Ø×"Ò" 2 2 a a¨¡d¤d¡8¤8¨QÑ/Ô/Ð/Ø× Ò    A A a¨!¡e¡H¤H¡¤¨qÑ1Ô1Ð1Ð1ð2õ Ô$ð 		2ñ 		2ˆAØ�OŠO˜B˜B˜q˜q ™tœt™HœH¨¨¨1¨1¨Q©4¬4©¬Ð>Ð>Ò>Ð>°A´JÒ>Ð>Ð>Ð>Ñ?Ô?Ð?Ý˜1œ:¨™>Ñ*Ô*ð 4ð 4�Ø�a˜˜Q™‘i”i�Ø× Ò    C¡¤¨2¨2¨c©7¬7Ñ!2°QÑ!6¸¼
ÑCÔCÐCØ× Ò    S D¡¤¨1Ñ-Ô-Ð-Ø× Ò    C¡¤¨"¨"¨c¨T©(¬(Ñ3Ô3Ð3Ð3Øð 2ð 2�Ø×"Ò" 2 2 a a¨¡d¤d¡8¤8¨QÑ/Ô/Ð/Ø× Ò    A A a¨!¡e¡H¤H¡¤¨qÑ1Ô1Ð1Ð1ñ2ð		2ð 		2r   c                 óê  ‡ ‡‡‡— t          ˆfd„¦  «        Š‰j        Št          d„ t          j        ¦  «        }t          |t          ¬¦  «        D ]„}‰                      t          ¦  «        5 } ‰ |d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   ‰  	                    d 
                    ‰|¦  «        t          |j        ¦  «        ¦  «         Œ…ˆˆˆ fd„} |dd¦  «          |d	d
¦  «         d S )Nc                  ó   •—  ‰| Ž S r   rJ   )r›   rf   s    €r   rœ   z0TestZeroCounts.check_error_msg.<locals>.<lambda>Ç   s   ø€    a € r   c                 ó8   — t          | t          j        ¦  «         S r   )Ú
isinstancer   ÚIntegerrš   s    r   rœ   z0TestZeroCounts.check_error_msg.<locals>.<lambda>Ë   s   € �* Q­¬Ñ6Ô6Ð6€ r   )ÚkeyrP   z;{} is only defined for integers, but value passed was '{}'.c                 óú   •— ‰                      t          t          f¦  «        5 } ‰| Ž  d d d ¦  «         n# 1 swxY w Y   ‰                     d                     ‰¦  «        t          |j        ¦  «        ¦  «         d S )Nz{}() )rD   r   Ú	TypeErrorrZ   r�   r[   r\   )ÚargsÚstringÚeÚcfuncÚ	func_namer5   s      €€€r   Úcheckz-TestZeroCounts.check_error_msg.<locals>.check×   sµ   ø€ Ø×"Ò"¥KµÐ#;Ñ<Ô<ð ÀØ��t��ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à�MŠMØ—’˜yÑ)Ô)Ý�A”KÑ Ô ñô ð ð ð s   £5µ9¼9rW   z-takes 2 positional arguments but 3 were givenrJ   z&missing 1 required positional argument)r   Ú_nameÚfilterr   Únumber_domainÚsortedr[   rD   r   rZ   r�   r\   )r5   rf   Úunsupported_typesÚtypr¶   r¹   r·   r¸   s   ``    @@r   Úcheck_error_msgzTestZeroCounts.check_error_msgÆ   sd  øøøø€ ÝÐ(Ð(Ð(Ð(Ñ)Ô)ˆØ”Jˆ	å"Ø6Ð6½Ô8Kñ
ô 
Ðõ Ð+µÐ5Ñ5Ô5ð 	ð 	ˆCØ×"Ò"¥;Ñ/Ô/ð °1Ø��c�c˜!‘f”f‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à�MŠMØMß’˜	 3Ñ'Ô'Ý�A”KÑ Ô ñô ð ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ˆˆfÐEÑFÔFÐFØˆˆbÐ:Ñ;Ô;Ð;Ð;Ð;s   Á+BÂB	ÂB	c                 ó:   — |                       t          ¦  «         d S r   )rÀ   r   ©r5   s    r   Útest_trailing_zeros_errorz(TestZeroCounts.test_trailing_zeros_errorâ   s   € Ø×Ò�^Ñ,Ô,Ð,Ð,Ð,r   c                 ó:   — |                       t          ¦  «         d S r   )rÀ   r   rÂ   s    r   Útest_leading_zeros_errorz'TestZeroCounts.test_leading_zeros_errorå   s   € Ø×Ò�]Ñ+Ô+Ð+Ð+Ð+r   N)rF   rG   rH   r«   rÀ   rÃ   rÅ   rJ   r   r   r—   r—   «   sP   € € € € € ð2ð 2ð 2ð4<ð <ð <ð8-ð -ð -ð,ð ,ð ,ð ,ð ,r   r—   )r&   Únumpyr2   Únumba.tests.supportr   r   Únumbar   r   Ú
numba.corer   Únumba.cpython.unsafe.tupler   r	   Únumba.np.unsafe.ndarrayr
   r   Únumba.core.unsafe.bytesr   Únumba.core.unsafe.refcountr   Únumba.cpython.unsafe.numbersr   r   Únumba.core.errorsr   r   rL   rs   r†   r—   rJ   r   r   ú<module>rÐ      sÀ  ðØ €€€Ø Ð Ð Ð à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ )Ð )Ð )Ð )Ð )Ð )ð*+ð *+ð *+ð *+ð *+˜ñ *+ô *+ð *+ðZB3ð B3ð B3ð B3ð B3˜8ñ B3ô B3ð B3ðJ3ð 3ð 3ð 3ð 3˜ñ 3ô 3ð 3ð(1ð 1ð 1ð 1ð 1�8ñ 1ô 1ð 1ð,;,ð ;,ð ;,ð ;,ð ;,�Xñ ;,ô ;,ð ;,ð ;,ð ;,r   