+
    ÃìÜjP  ã                   ó&  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^RIHt ^RIH	t	 ^RIH
t
 ^RIHt ^RIHt ^RIHt ^RIHt ]P                   '       g   Q h ! R	 R
]4      tR t ! R R]4      t]R8X  d   ]! R4      P/                  4        R# R# )z)
Testing scenarios that may have leaked.
N)ÚTestCase)ÚPY314)ÚRUNNING_ON_FREETHREAD_BUILD)ÚWIN)Úfails_leakcheck)Úignores_leakcheck)ÚRUNNING_ON_MANYLINUXc                   óP   a € ] tR t^t o ]! 4       tR tR tR t]	R 4       t
RtV tR# )ÚHasFinalizerTracksInstancesc                ó„   € \         P                  ! V4      V n        V P                  P	                  \        V 4      4       R # ©N)ÚsysÚinternÚmsgÚEXTANT_INSTANCESÚaddÚid)Úselfr   s   &&ÚW/opt/render/project/src/.venv/lib/python3.14/site-packages/greenlet/tests/test_leaks.pyÚ__init__Ú$HasFinalizerTracksInstances.__init__   s)   € Ü—:’:˜c“?ˆŒØ×Ñ×!Ñ!¤" T£(Ö+ó    c                óN   € V P                   P                  \        V 4      4       R # r   )r   Úremover   ©r   s   &r   Ú__del__Ú#HasFinalizerTracksInstances.__del__    s   € Ø×Ñ×$Ñ$¤R¨£XÖ.r   c                ó>   € R \        V 4      V P                  3,          # )z(<HasFinalizerTracksInstances at 0x%x %r>)r   r   r   s   &r   Ú__repr__Ú$HasFinalizerTracksInstances.__repr__"   s!   € Ø9Üˆt‹H�d—h‘hð=
õ 
ð 	
r   c                ó:   € V P                   P                  4        R # r   )r   Úclear)Úclss   &r   ÚresetÚ!HasFinalizerTracksInstances.reset&   s   € à×Ñ×"Ñ"Ö$r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úsetr   r   r   r   Úclassmethodr#   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r
   r
      s0   ø‡ € Ù“uÐò,ò/ò
ð ñ%ó ö%r   r
   c                 ó4   € \         '       d   V # \        V 4      # r   )r   r   )Úfuncs   &r   Ú&fails_leakcheck_except_on_free_thradedr1   +   s   € ß"Ó"ð ˆÜ˜4Ó Ð r   c                   óØ   a € ] tR t^3t o R tR t]R 4       tR tR t	R t
RR ltR tR	 t]R
 4       t]R 4       t]R 4       t^dtR t]R 4       tRR lt]R 4       t]R 4       tRtV tR# )Ú	TestLeaksc                óô   € Rp\         P                  ! V4      p\        P                  ! R 4      p\        ^d4       F  pVP                  ! V!   K  	  V P                  \         P                  ! V4      V4       R# )Úac                  ó\   € \         P                  ! 4       P                  P                  ! V !  # r   ©ÚgreenletÚ
getcurrentÚparentÚswitch)Úargss   *r   Ú<lambda>Ú)TestLeaks.test_arg_refs.<locals>.<lambda>:   s   € œ(×-Ò-Ó/×6Ñ6×=Ò=¸tÒDr   N)r5   ÚbÚc)r   Úgetrefcountr8   Úranger;   ÚassertEqual)r   r<   Úrefcount_beforeÚgÚ_s   &    r   Útest_arg_refsÚTestLeaks.test_arg_refs5   s[   € ØˆÜŸ/š/¨$Ó/ˆä×ÒÙDóFˆä�s–ˆAØ�HŠH�dŒOñ à×ÑœŸš¨Ó.°Ö@r   c                ó\  € / pT P                  \        P                  ! V4      \        '       g   ^M^4       \        P                  ! R 4      p\        ^d4       F  pVP                  ! R/ VB  K  	  T P                  \        P                  ! V4      \        '       g	   ^4       R# ^4       R# )é   c                  ó`   € \         P                  ! 4       P                  P                  ! R/ V B # )N© r7   )Úgkwargss   ,r   r=   Ú+TestLeaks.test_kwarg_refs.<locals>.<lambda>D   s!   € œh×1Ò1Ó3×:Ñ:×AÒAÑLÀGÒLr   NrL   )rC   r   rA   r   r8   rB   r;   )r   ÚkwargsrE   rF   s   &   r   Útest_kwarg_refsÚTestLeaks.test_kwarg_refs?   s{   € ØˆØ×ÑœŸš¨Ó0¿5»5±!ÀaÔHä×ÒÙLóNˆä�s–ˆAØ�HŠHÑ�vÔñ ð 	×ÑœŸš¨Ó0¿5»5°!ÖHÀaÖHr   c                 ó¨   € R  p \         P                  ! V R7      pVP                  4        \        P                  ! R4       VP                  ^
4       R# )c                  ó2   € \         P                  ! R 4       R# )çü©ñÒMbP?N)ÚtimeÚsleeprL   r   r   ÚworkerÚ+TestLeaks.__recycle_threads.<locals>.workerT   s   € Ü�JŠJ�uÖr   ©ÚtargetrT   N)Ú	threadingÚThreadÚstartrU   rV   Újoin)rW   Úts     r   Ú__recycle_threadsÚTestLeaks.__recycle_threadsL   s7   € ò	ä×Ò FÔ+ˆØ	�‰Œ	Ü�
Š
�5ÔØ	�‰ˆrŽ
r   c                ó´  a€ . oV3R  lp\        ^4       F<  p\        P                  ! VR7      pVP                  4        VP	                  ^
4       ?K>  	  \
        P                  ! 4        V P                  4        \
        P                  ! 4        \        P                  ! 4        \
        P                  ! 4        S F  pV P                  V! 4       4       K  	  R# )c                  óx   <€ S P                  \        P                  ! \        P                  ! 4       4      4       R # r   )ÚappendÚweakrefÚrefr8   r9   )Úggs   €r   rW   Ú,TestLeaks.test_threaded_leak.<locals>.worker]   s!   ø€ à�I‰I”g—k’k¤(×"5Ò"5Ó"7Ó8Ö9r   rY   N©rB   r[   r\   r]   r^   r8   r9   Ú_TestLeaks__recycle_threadsÚgcÚcollectÚassertIsNone©r   rW   rF   r_   rE   rg   s   &    @r   Útest_threaded_leakÚTestLeaks.test_threaded_leak[   s™   ø€ Øˆõ	:ô �q–ˆAÜ× Ò ¨Ô/ˆAØ�G‰GŒIØ�F‰F�2ŒJÚñ	 ô
 	×ÒÔØ×ÑÔ Ü×ÒÔÜ
�
Š
ŒÜ×ÒÔÛˆAØ×Ñ™a›cÖ"ó r   c                ó´  a€ . oV3R  lp\        ^4       F<  p\        P                  ! VR7      pVP                  4        VP	                  ^
4       ?K>  	  \
        P                  ! 4        V P                  4        \
        P                  ! 4        \        P                  ! 4        \
        P                  ! 4        S F  pV P                  V! 4       4       K  	  R# )c                  ó*  <a€ . ;o\         P                  ! 4       n        V3R  lp \        ^4       F'  p\         P                   ! V 4      P	                  4        K)  	  SP                  \        P                  ! \         P                  ! 4       4      4       R# )c                  óP   <€ S P                  \        P                  ! 4       4       R # r   )rd   r8   r9   )Úlls   €r   Ú
additionalÚDTestLeaks.test_threaded_adv_leak.<locals>.worker.<locals>.additionalr   s   ø€ Ø—	‘	œ(×-Ò-Ó/Ö0r   N)r8   r9   rt   rB   r;   rd   re   rf   )ru   rF   rt   rg   s     @€r   rW   Ú0TestLeaks.test_threaded_adv_leak.<locals>.workero   sa   ù€ à,.Ð.ˆB”×$Ò$Ó&Ô)õ1ä˜1–X�Ü×!Ò! *Ó-×4Ñ4Ö6ñ à�I‰I”g—k’k¤(×"5Ò"5Ó"7Ó8Ö9r   rY   Nri   rn   s   &    @r   Útest_threaded_adv_leakÚ TestLeaks.test_threaded_adv_leakm   s™   ø€ Øˆõ	:ô �q–ˆAÜ× Ò ¨Ô/ˆAØ�G‰GŒIØ�F‰F�2ŒJÚñ	 ô
 	×ÒÔØ×ÑÔ Ü×ÒÔÜ
�
Š
ŒÜ×ÒÔÛˆAØ×Ñ™a›cÖ"ó r   c                óV  € \         P                  P                  4       pV P                  V^ 4       \         P                  P	                  R4       \         P                  P                  4       pV P                  W4       V P                  \         P                  P                  ^4       R# )é    TN)r8   Ú	_greenletÚ&get_clocks_used_doing_optional_cleanupÚassertGreaterEqualÚenable_optional_cleanuprC   ÚassertGreaterÚCLOCKS_PER_SEC)r   ÚusedÚused2s   &  r   ÚassertClocksUsedÚTestLeaks.assertClocksUsed„   sx   € Ü×!Ñ!×HÑHÓJˆØ×Ñ  aÔ(ä×Ñ×2Ñ2°4Ô8Ü×"Ñ"×IÑIÓKˆØ×Ñ˜Ô%Ø×Ñœ8×-Ñ-×<Ñ<¸aÖ@r   c                óÈ  aaa	a
aaa€ \         P                  ! . 4      '       g   Q h\        P                  4        \        P
                  ! 4        V P                  \        P                  R R7      p\        P                  ! 4       o
\        P                  ! 4       o	. oV3R lo. oV	V
VVVV3R lp\        P                  ! VR7      pVP                  4        S
P                  ^
4       \        P
                  ! 4        V P                  \        RR7      p\        S4      ^8X  g   Q hV P                  S^ ,          P                  4       SR S	P!                  4        VP#                  ^
4       ?V P%                  4        V P                  \        RR7      pV P                  \        P                  R R7      pV P'                  Wv4       S'       gc   \        P(                  P+                  4       eC   V P-                  Wƒ4       S'       d)   V P-                  \        P.                  \!        4       4       M \        P(                  P+                  4       e   V P1                  4        R# R# )F)Ú
exact_kindc                  óF  <€ \        R 4      p \        P                  P                  R\        R4      4       S'       d5   \        P                  ! 4       P
                  P                  pV! V .4       R# \        P                  ! 4       P
                  P                  V .4       R# )zDELETING STACK OBJECTÚtest_leaks_keyzDELETING THREAD STATEN)r
   r8   r|   Úset_thread_localr9   r:   r;   )ÚjdÚsÚexplicit_reference_to_switchs     €r   Úbackground_greenletÚ6TestLeaks._check_issue251.<locals>.background_greenlet¬   sv   ø€ ä,Ð-DÓEˆBÜ×Ñ×/Ñ/Ø Ü+Ð,CÓDôF÷
 ,Ü×'Ò'Ó)×0Ñ0×7Ñ7�Ù�2�$–ä×#Ò#Ó%×,Ñ,×3Ñ3°R°DÖ9r   c                  óV  <€ \         P                   ! S4      p SP                  \        P                  ! V P                  4      4       SP                  V 4       V P                  4        ? SP                  4        SP                  ^
4       S'       d   \         P                  ! 4        R# R# )é
   N)	r8   rd   re   rf   r:   r;   r)   Úwaitr9   )ÚgletÚbackground_glet_killedÚbackground_glet_runningrŽ   Úbackground_greenletsÚbg_main_wrefsÚmanually_collect_backgrounds    €€€€€€r   Úbackground_threadÚ4TestLeaks._check_issue251.<locals>.background_thread¼   sy   ø€ Ü×$Ò$Ð%8Ó9ˆDØ× Ñ ¤§¢¨T¯[©[Ó!9Ô:à ×'Ñ'¨Ô-Ø�K‰KŒMàØ#×'Ñ'Ô)Ø"×'Ñ'¨Ô+÷
 +Ü×#Ò#Ö%ñ +r   rY   T:NNNN)rk   Ú
is_trackedr
   r#   r8   r9   Úcount_objectsr[   ÚEventr\   r]   r’   ÚlistÚlenÚassertFalseÚdeadr)   r^   Úwait_for_pending_cleanupsÚassertLessEqualr|   r}   rC   r   r„   )r   r˜   r�   Úgreenlets_beforer™   r_   Úlists_beforeÚlists_afterÚgreenlets_afterr”   r•   rŽ   r–   r—   s   &ff      @@@@@r   Ú_check_issue251ÚTestLeaks._check_issue251�   sä  þ€ ô �}Š}˜R× Ò Ð Ð Ü#×)Ñ)Ô+Ü×ÒÔØ×-Ñ-¬h×.?Ñ.?ÈEÐ-ÓRÐä"+§/¢/Ó"3ÐÜ!*§¢Ó!2ÐØ!Ðõ	:ð ˆ÷	&ò 	&ô$ ×ÒÐ$5Ô6ˆØ	�‰Œ	Ø×$Ñ$ RÔ(Ü×ÒÔØ×)Ñ)¬$¸4Ð)Ó@ˆäÐ'Ó(¨AÔ-Ð-Ð-Ø×ÑÐ-¨aÕ0×5Ñ5Ô6ð ! Ð#Ø×"Ñ"Ô$ð 	
�‰ˆrŒ
Øð 	×&Ñ&Ô(à×(Ñ(¬¸$Ð(Ó?ˆØ×,Ñ,¬X×->Ñ->È5Ð,ÓQˆð
 	×Ñ˜[Ô7÷ ,Ü×!Ñ!×HÑHÓJÒVà×Ñ˜_Ô?ß*ð × Ñ Ô!<×!MÑ!MÌsËuÔUøð ä×Ñ×DÑDÓFÒRØ×!Ñ!Ö#ñ Sr   c                ó&   € V P                  4        R # r   ©r¨   r   s   &r   Ú-test_issue251_killing_cross_thread_leaks_listÚ7TestLeaks.test_issue251_killing_cross_thread_leaks_list  s   € Ø×ÑÖr   c                óì   € \         P                  P                  R 4        V P                  4        \         P                  P                  R4       R#   \         P                  P                  R4       i ; i)FTN)r8   r|   r   r¨   r   s   &r   Ú#test_issue251_with_cleanup_disabledÚ-TestLeaks.test_issue251_with_cleanup_disabled  sP   € Ü×Ñ×2Ñ2°5Ô9ð	=Ø× Ñ Ô"ä×Ñ×6Ñ6°tÖ<øŒH×Ñ×6Ñ6°tÕ<ús   ¡A Á!A3c                ó*   € V P                  R R7       R# )F©r˜   Nr«   r   s   &r   Ú4test_issue251_issue252_need_to_collect_in_backgroundÚ>TestLeaks.test_issue251_issue252_need_to_collect_in_background  s   € ð& 	×Ñ¸ÐÖ?r   c                óþ   € R V n         \        P                  P                  R4        V P	                  RR7       \        P                  P                  R 4       R#   \        P                  P                  R 4       i ; i)TFr²   N)Úexpect_greenlet_leakr8   r|   r   r¨   r   s   &r   ÚEtest_issue251_issue252_need_to_collect_in_background_cleanup_disabledÚOTestLeaks.test_issue251_issue252_need_to_collect_in_background_cleanup_disabled*  s]   € à$(ˆÔ!Ü×Ñ×2Ñ2°5Ô9ð	=Ø× Ñ ¸UÐ ÔCä×Ñ×6Ñ6°tÖ<øŒH×Ñ×6Ñ6°tÕ<ús   ¨A Á!A<c                ó,   € V P                  R RR7       R# )FT)r˜   r�   Nr«   r   s   &r   Ú9test_issue251_issue252_explicit_reference_not_collectableÚCTestLeaks.test_issue251_issue252_explicit_reference_not_collectable3  s   € à×ÑØ(-Ø)-ð 	ö 	/r   c                ó€   € \         P                  ^ ,          ^8¼  g   Q h\        '       d   V P                  R4       R# R# )r{   z!Slow and not worth repeating hereN)r   Úversion_infor   ÚskipTestr   s   &r   Ú_only_test_some_versionsÚ"TestLeaks._only_test_some_versions;  s5   € ô ×Ñ Õ" aÔ'Ð'Ð'ßÓØ�M‰MÐ=Ö>ñ  r   c                ór  aa€ V P                  4        R  oRoVV3R lp\        ^4       F
  pV! 4        K  	  V P                  4       p\        V P                  4       FD  p\	        W0P                  4       4      pV! 4        V P                  4       pWS8:  g   K;  V^8”  g   KD   M	  V P                  XV4       R# )c                  ó   € ^# )é   rL   rL   r   r   ÚfÚ:TestLeaks.test_untracked_memory_doesnt_increase.<locals>.fM  s   € Ùr   é'  c                  ót   <€ \        S4       F'  p \        P                  ! S4      P                  4        K)  	  R # r   )rB   r8   r;   )rF   ÚITERrÄ   s    €€r   Úrun_itÚ?TestLeaks.test_untracked_memory_doesnt_increase.<locals>.run_itQ  s(   ø€ Ü˜4–[�Ü×!Ò! !Ó$×+Ñ+Ö-ó !r   N)r¿   rB   Úget_process_ussÚUNTRACK_ATTEMPTSÚmaxr£   )r   rÉ   rF   Ú
uss_beforeÚcountÚ	uss_afterrÈ   rÄ   s   &     @@r   Ú%test_untracked_memory_doesnt_increaseÚ/TestLeaks.test_untracked_memory_doesnt_increaseF  s£   ù€ ð 	×%Ñ%Ô'ò	ð ˆö	.ô
 �q–ˆAÙŽHñ ð ×)Ñ)Ó+ˆ
ä˜4×0Ñ0Ö1ˆEÜ˜Z×)=Ñ)=Ó)?Ó@ˆJÙŒHà×,Ñ,Ó.ˆIØÖ&¨5°1®9Ùñ 2ð 	×Ñ˜Y¨
Ö3r   c                óÆ  aa	a
aaa€ V P                  4        V P                  4        ^ .o	V	3R loRo
V
V3R loV o ! VVV3R lR4      pR;r4\        V P                  4       EF7  p^ S	^ &   V! 4       p\        P
                  ! VR7      pVP                  4        VP                  ^4       V P                  VP                  4       4       Vf   VP                  p\        W6P                  4      pS'       dG   V P                  VP                  R	4       V P                  S	^ ,          S
VP                  ,          4       ??S'       g   V P                  S	^ ,          ^ 4       S'       d   V P                  4        V P                  4       pWC8:  g   EK.  V^8”  g   EK8   M	  V P                  4        V P                  4       pR
pV P!                  WCV,           RX3,          4       R# )r{   c                  óÂ   <€  \         P                  ! 4       P                  P                  4        ^#   \         P                   d    S ^ ;;,          ^,          uu&   h i ; i)r{   )r8   r9   r:   r;   ÚGreenletExit)Ú
EXIT_COUNTs   €r   rÄ   Ú3TestLeaks._check_untracked_memory_thread.<locals>.ft  sP   ø€ ðÜ×#Ò#Ó%×,Ñ,×3Ñ3Ô5ñ øô ×(Ñ(ô Ø˜1— Õ"“Øðús	   ƒ-2 ²,ArÆ   c                  óž   <€ . p \        S4       F:  p\        P                  ! S4      pV P                  V4       VP                  4        K<  	  V # r   )rB   r8   rd   r;   )ÚgletsrF   rE   rÈ   rÄ   s      €€r   rÉ   Ú8TestLeaks._check_untracked_memory_thread.<locals>.run_it}  sC   ø€ ØˆEÜ˜4–[�ô ×%Ò% aÓ(�Ø—‘˜Q”Ø—‘–
ñ !ð ˆLr   c                   óB   <a € ] tR tRt o ^ ;ttRt^tVVV3R ltRt	V t
R# )Ú<TestLeaks._check_untracked_memory_thread.<locals>.ThreadFunci‹  c                ó\  <€ SP                  4       V n        \        V P                  4       F*  pV ;P                  \        S! 4       4      ,          un        K,  	  V P                   F  pSP                  R \        V4      4       K   	  S'       d   RV n        SP                  4       V n        R# )zsuspended activeNrL   )	rË   rÎ   rB   rÈ   rÙ   ÚtupleÚassertInÚstrrÐ   )r   rF   rE   Údeallocate_in_threadrÉ   Útests   &  €€€r   Ú__call__ÚETestLeaks._check_untracked_memory_thread.<locals>.ThreadFunc.__call__�  sy   ø€ Ø"&×"6Ñ"6Ó"8�”ä˜tŸy™yÖ)�AØ—J’J¤%©«£/Õ1—Jñ *ð Ÿœ�AØ—M‘MÐ"4´c¸!³fÖ=ñ $÷ (Ø!#�D”JØ!%×!5Ñ!5Ó!7�–r   )rÙ   rÐ   rÎ   NrL   )r%   r&   r'   r(   rÎ   rÐ   rÙ   rÈ   rã   r+   r,   )r.   rá   rÉ   râ   s   @€€€r   Ú
ThreadFuncrÜ   ‹  s#   ù‡ € Ø%&Ð&ˆJ˜ØˆEØˆD÷8õ 8r   rå   NrY   zafter attempts %drL   i  0 )r¿   rË   rB   rÌ   r[   r\   r]   r^   r    Úis_aliverÎ   rÍ   rC   rÙ   rÈ   r¢   r£   )r   rá   rå   rÎ   rÐ   rÏ   Úthread_funcr_   Ú	tolerancerÖ   rÈ   rÄ   rÉ   râ   s   &f       @@@@@r   Ú_check_untracked_memory_threadÚ(TestLeaks._check_untracked_memory_threadh  s‘  ý€ Ø×%Ñ%Ô'ð 	×ÑÔà�Sˆ
õ	ð ˆö
	ð ˆ÷	8ö 	8ð$ "&Ð%ˆ
Ü˜4×0Ñ0×1ˆEØˆJ�q‰MÙ$›,ˆKÜ× Ò ¨Ô4ˆAØ�G‰GŒIØ�F‰F�2ŒJØ×Ñ˜QŸZ™Z›\Ô*àÒ!Ø(×3Ñ3�
ä˜Z×)?Ñ)?Ó@ˆJß#Ø× Ñ  ×!2Ñ!2°BÔ7Ø× Ñ  ¨A¥°°{×7GÑ7GÕ0GÔHàØß'Ø× Ñ  ¨A¥°Ô2ß#Ø×.Ñ.Ô0à×,Ñ,Ó.ˆIà×&¨5°1¯9Ùñ5 2ð8 	×&Ñ&Ô(Ø×(Ñ(Ó*ˆ	ð4 $ˆ	Ø×Ñ˜Y°YÕ(>Ø0°E°8Õ;ö	=r   c                ó*   € V P                  R R7       R# )T©rá   N)ré   r   s   &r   ÚItest_untracked_memory_doesnt_increase_unfinished_thread_dealloc_in_threadÚSTestLeaks.test_untracked_memory_doesnt_increase_unfinished_thread_dealloc_in_threadÙ  s   € ð 	×+Ñ+ÀÐ+ÖFr   c                ó”   € \         '       d*   \        '       d   \        '       d   V P                  R 4       V P	                  RR7       R# )z6Windows 3.14t appears to leak. No other platform does.Frì   N)r   r   r   r¾   ré   r   s   &r   ÚGtest_untracked_memory_doesnt_increase_unfinished_thread_dealloc_in_mainÚQTestLeaks.test_untracked_memory_doesnt_increase_unfinished_thread_dealloc_in_mainß  s1   € ÷ ‹3×.Ó.·5³5Ø�M‰MÐRÔSØ×+Ñ+ÀÐ+ÖGr   )r¶   N)TF)T)r%   r&   r'   r(   rG   rP   Ústaticmethodrj   ro   rx   r„   r¨   r¬   r¯   r1   r³   r·   rº   rÌ   r¿   r   rÑ   ré   rí   rð   r+   r,   r-   s   @r   r3   r3   3   sØ   ø‡ € òAò
Ið ñó ðò#ò$#ò.Aô|$ò|ò=ð ,ñ@ó ,ð@ð( ,ñ=ó ,ð=ð ,ñ/ó ,ð/ð
 Ðò	?ð ñ4ó ð4ô>o=ðb ñGó ðGð ñHó öHr   r3   Ú__main__Úunittest)Ú__doc__r   rk   rU   re   r[   r8   Ú r   r   r   r   Ú	leakcheckr   r   r   ÚGREENLET_USE_GCÚobjectr
   r1   r3   r%   Ú
__import__ÚmainrL   r   r   Ú<module>rü      s‹   ðñó Û 	ã Û Û ó Ý Ý Ý )Ý Ý &Ý (Ý +ð
 ××ÐÐ Ðô% &ô %ò !ô{H�ô {Hðz ˆzÔÙˆzÓ×ÑÖ!ñ r   