ó
    àÅŸgN>  ã                  ó   • % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Jr  SSKJrJr  SSKJrJrJrJr  SSKJrJr  SSKJr  SS	KJrJrJrJrJrJrJ r J!r!J"r"J#r#  \" \5      rS
r$\%" \SS5      r&\(       a  \&c   e\r'\$(       aG   " S S5      r(\(" \&S5      r&\&c   e\RR                  " \SSSS9r\*" 5       r+S\,S'   SS jr-SS jr.SS jr/O
SS jr-SS jr/\ " S S5      5       r0S S jr1 " S S\"5      r2g)!zBCallback functions and support for sys.monitoring data collection.é    )ÚannotationsN)Ú	dataclass)ÚCodeTypeÚ	FrameType)ÚAnyÚCallableÚTYPE_CHECKINGÚcast)Úshort_filenameÚshort_stack)Úisolate_module)
ÚAnyCallableÚTArcÚTFileDispositionÚTLineNoÚTShouldStartContextFnÚTShouldTraceFnÚ
TTraceDataÚTTraceFileDataÚTracerÚTWarnFnFÚ
monitoringc                  ó,   • \ rS rSrSrSS jrSS jrSrg)	ÚLoggingWrapperé=   z*Wrap a namespace to log all its functions.c                ó   • Xl         X l        g ©N)ÚwrappedÚ	namespace)Úselfr   r   s      ÚP/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/coverage/sysmon.pyÚ__init__ÚLoggingWrapper.__init__@   s   € Ø"ŒLØ&�Nó    c                ó   ^ ^• SUU 4S jjnU$ )Nc                 óx   >• [        TR                   ST U  U 35        [        TR                  T5      " U 0 UD6$ )NÚ.)Úlogr   Úgetattrr   )ÚargsÚkwargsÚnamer    s     €€r!   Ú_wrappedÚ,LoggingWrapper.__getattr__.<locals>._wrappedE   s>   ø€ Ü�t—~‘~Ð& a¨ v¨d¨V°F°8Ð<Ô=Ü˜tŸ|™|¨TÔ2°DÐC¸FÑCÐCr$   )r*   r   r+   r   Úreturnr   © )r    r,   r-   s   `` r!   Ú__getattr__ÚLoggingWrapper.__getattr__D   s   ù€ ÷Dð Dð ˆOr$   )r   r   N)r   r   r   Ústrr/   ÚNone)r,   r3   r/   zCallable[..., Any])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r"   r1   Ú__static_attributes__r0   r$   r!   r   r   =   s   † Ù8ô	'÷	r$   r   zsys.monitoringT)ÚfullÚshort_filenamesÚ	frame_idszset[int]Úseen_threadsc           	     ó–  • [         R                  " 5       n[        [        [        R
                  " 5       R                  5      nX-  S-  S nU[        ;  a1  [        R                  U5        [        SU SU S[        5        35        S H+  n[        US5       n[        U SU S	U  3US
S9  SSS5        M-     g! , (       d  f       M?  = f)z1Write a message to our detailed debugging log(s).iw–˜ Ú07dzNew thread Ú z:
)z/tmp/foo.outÚaÚ:ú: T)ÚfileÚflushN)ÚosÚgetpidr
   ÚintÚ	threadingÚcurrent_threadÚidentr>   Úaddr(   r   ÚopenÚprint)ÚmsgÚpidÚtidÚtslugÚfilenameÚfs         r!   r(   r(   S   s¶   € ô �iŠi‹kˆÜ”3œ	×0Ò0Ó2×8Ñ8Ó9ˆØ‘I Ñ*¨3Ð/ˆØ”lÓ"Ü×Ñ˜SÔ!Ü�+˜c˜U ! E 7¨#¬k«m¨_Ð=Ô>ó
ˆHô �h Ô$¨Ü˜˜˜Q˜u˜g R¨ uÐ-°A¸TÒB÷ %Ñ$ò
÷ %Ö$ús   ÂB9Â9
C	c                óÒ   • [        U [        5      (       aH  S[        U 5      S 3SU R                   S3-   S[	        U R
                  5      < SU R                   S3-   $ [        U 5      $ )z)Make a customized repr for logged values.z<code @ú#xz name=Ú,z file=Ú#Ú>)Ú
isinstancer   ÚidÚco_namer   Úco_filenameÚco_firstlinenoÚrepr)Úargs    r!   Úarg_reprrb   h   so   € ä�cœ8×$Ñ$àœ"˜S›' "˜Ð&Ø˜3Ÿ;™;˜- qÐ)ñ*àœ>¨#¯/©/Ó:Ñ=¸Q¸s×?QÑ?QÐ>RÐRSÐTñUðô
 �C‹yÐr$   c                 ó   ^ • SU 4S jjnU$ )z%Decorate a function to log its calls.c                óN   >^ • [         R                  " T 5      SU U4S jj5       nU$ )Nc           	     ór  >•  / n[        TU5       H)  u  p4Uc  M
  UR                  U S[        U5       35        M+     [        [	        U 5      S STR
                   SSR                  U5       S35        T" U /UQ76 nU$ ! [         a¬  n[        SUR                  R
                   SU 35        [        S	R                  [        R                  " U5      5      5         [        c   e[        R                  [        R                  R                  S
5        e ! [          a    [        S5         e f = fS nAff = f)NÚ=rW   rC   Ú(z, Ú)z!!rD   Ú r   z/oops, shutting off events with disabled tool id)ÚzipÚappendrb   r(   r\   r5   ÚjoinÚ	ExceptionÚ	__class__Ú	tracebackÚformat_exceptionÚsys_monitoringÚ
set_eventsÚsysr   ÚCOVERAGE_IDÚ
ValueError)	r    r*   Ú
args_reprsr,   ra   ÚretÚexcÚmethodÚnamess	          €€r!   r-   Ú0panopticon.<locals>._decorator.<locals>._wrappedv   s'  ø€ ðà!#�JÜ%(¨°Ö%5™	˜Ø™<Ù$Ø"×)Ñ)¨T¨F°!´H¸S³M°?Ð*CÖDñ &6ô œ2˜d›8 B˜- q¨¯©Ð(9¸¸4¿9¹9ÀZÓ;PÐ:QÐQRÐSÔTÙ  Ð-¨Ò-�Cà�JøÜ ó 	Ü˜"˜SŸ]™]×3Ñ3Ð4°B°s°eÐ<Ô=Ü˜Ÿ™¤	× :Ò :¸3Ó ?Ó@ÔAðOÜ-Ñ9Ð9Ð9Ü&×1Ñ1´#·.±.×2LÑ2LÈaÔPð øô &ó OäÐMÕNØðOþð	ús=   ƒA<B  Â 
D6Â
AD1Ã7DÄD1ÄD.Ä+D1Ä-D.Ä.D1Ä1D6)r    r   r*   r   r/   r   )Ú	functoolsÚwraps)ry   r-   rz   s   ` €r!   Ú
_decoratorÚpanopticon.<locals>._decoratoru   s%   ù€ Ü�_Š_˜VÓ$÷ó %ðð. ˆOr$   )ry   r   r/   r   r0   ©rz   r~   s   ` r!   Ú
panopticonr�   r   s   ø€ ÷	ð6 Ðr$   c                ó   • g)zAWrite a message to our detailed debugging log(s), but not really.Nr0   )rP   s    r!   r(   r(   ”   s   � r$   c                 ó   • SS jnU$ )z5Decorate a function to log its calls, but not really.c                ó   • U $ r   r0   )Úmeths    r!   r~   r   š   s   € ØˆKr$   )r…   r   r/   r   r0   r€   s     r!   r�   r�   —   s   € ô	ð Ðr$   c                  ó8   • \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)ÚCodeInfoé    z/The information we want about each code object.ÚboolÚtracingzTTraceFileData | NoneÚ	file_datazdict[int, int] | NoneÚbyte_to_liner0   N)r5   r6   r7   r8   r9   Ú__annotations__r:   r0   r$   r!   r‡   r‡       s   ‡ á9àƒMØ$Ó$à'Ö'r$   r‡   c                óv   • 0 nU R                  5        H"  u  p#nUc  M  [        X#S5       H  nXAU'   M	     M$     U$ )z6Make a dict mapping byte code offsets to line numbers.é   )Úco_linesÚrange)ÚcodeÚb2lÚbstartÚbendÚlinenoÚboffsets         r!   Úbytes_to_linesr˜   ª   sA   € à
€CØ $§¡¦Ñˆ�fØÓÜ  ¨qÖ1�Ø%�G“ó 2ñ !0ð €Jr$   c                  óÄ  • \ rS rSrSrSS jrSS jr\" 5       SS j5       r\" 5       SS j5       r	\" 5       SS j5       r
SS jrSS	 jrSS
 jr\(       a  SS jrOSS jr\" SS5      SS j5       r\" SS5            SS j5       r\" SSS5              S S j5       r\" SSS5              S!S j5       r\" SS5      S"S j5       r\" SS5      S"S j5       rSrg)#Ú
SysMonitoré´   zHPython implementation of the raw data tracer for PEP669 implementations.c                óú   • U   SU l         U   U   S U l        S U l        U   U   U   Xl        0 U l        / U l        0 U l        0 U l        SU l        [        R                  " 5       U l        SS0U l        SU l        SU l        g )NFÚstartsr   )Ú
trace_arcsÚshould_start_contextÚswitch_contextÚmyidÚ
code_infosÚcode_objectsÚ
last_linesÚlocal_event_codesÚ	sysmon_onrJ   ÚLockÚlockÚstatsÚstoppedÚ	_activity)r    Útool_ids     r!   r"   ÚSysMonitor.__init__¹   s‹   € áØˆŒÙÙð CGˆÔ!ØCGˆÔÙÙáàŒ	ð 02ˆŒð -/ˆÔØ02ˆŒà68ˆÔØˆŒÜ—N’NÓ$ˆŒ	ð �að
ˆŒ
ð ˆŒØˆ�r$   c                ó¬   • [        S U R                  R                  5        5       5      n[        U R                  5      nS[	        U 5      S SU SU S3$ )Nc              3  ó6   #   • U H  n[        U5      v •  M     g 7fr   )Úlen)Ú.0Úvs     r!   Ú	<genexpr>Ú&SysMonitor.__repr__.<locals>.<genexpr>Ý   s   é € Ð8Ñ%7 ”S˜—V�VÒ%7ùs   ‚z<SysMonitor at rW   rD   z data points in z files>)ÚsumÚdataÚvaluesr°   r\   )r    ÚpointsÚfiless      r!   Ú__repr__ÚSysMonitor.__repr__Ü   sN   € ÜÑ8 T§Y¡Y×%5Ñ%5Ô%7Ó8Ó8ˆÜ�D—I‘I“ˆØ ¤ D£¨" ¨R°¨xÐ7GÈÀwÈgÐVÐVr$   c                ó”  • SU l         [        c   e[        R                  U R                  S5        [        R
                  " [        R                  U R                  5      n[        R                  nU R                  (       aÉ  [        R                  U R                  UR                  UR                  -  5        U" UR                  U R                  5        U" UR                  U R                  5        U" UR                  U R                   5        U" UR                  U R"                  5        U" UR$                  U R&                  5        Od[        R                  U R                  UR                  5        U" UR                  U R                  5        U" UR$                  U R(                  5        [        R+                  5         SU l        g)zStart this Tracer.FNzcoverage.pyT)rª   rq   Úuse_tool_idr¡   r|   ÚpartialÚregister_callbackÚeventsrž   rr   ÚPY_STARTÚ	PY_UNWINDÚsysmon_py_startÚ	PY_RESUMEÚsysmon_py_resume_arcsÚ	PY_RETURNÚsysmon_py_return_arcsÚsysmon_py_unwind_arcsÚLINEÚsysmon_line_arcsÚsysmon_line_linesÚrestart_eventsr¦   )r    ÚregisterrÀ   s      r!   ÚstartÚSysMonitor.startá   s?  € ð ˆŒäÑ)Ð)Ð)Ü×"Ñ" 4§9¡9¨mÔ<Ü×$Ò$¤^×%EÑ%EÀtÇyÁyÓQˆÜ×&Ñ&ˆØ�?�?Ü×%Ñ%Ø—	‘	Ø—‘ &×"2Ñ"2Ñ2ôñ �V—_‘_ d×&:Ñ&:Ô;Ù�V×%Ñ% t×'AÑ'AÔBÙ�V×%Ñ% t×'AÑ'AÔBÙ�V×%Ñ% t×'AÑ'AÔBÙ�V—[‘[ $×"7Ñ"7Õ8ä×%Ñ% d§i¡i°·±ÔAÙ�V—_‘_ d×&:Ñ&:Ô;Ù�V—[‘[ $×"8Ñ"8Ô9Ü×%Ñ%Ô'Øˆ�r$   c                ó¤  • U R                   (       d  g[        c   e[        R                  U R                  S5        U R                     SU l         U R
                  R                  5        H$  n[        R                  U R                  US5        M&     0 U l        SSS5        [        R                  U R                  5        g! , (       d  f       N.= f)zStop this Tracer.Nr   F)	r¦   rq   rr   r¡   r¨   r¥   r·   Úset_local_eventsÚfree_tool_id)r    r’   s     r!   ÚstopÚSysMonitor.stopû   s–   € ð �~�~ð ÜÑ)Ð)Ð)Ü×!Ñ! $§)¡)¨QÔ/Ø�Y‹YØ"ˆDŒNØ×.Ñ.×5Ñ5Ö7�Ü×/Ñ/°·	±	¸4ÀÖCñ 8à%'ˆDÔ"÷	 ô
 	×#Ñ# D§I¡IÕ.÷ �Yús   ÁACÃ
Cc                ó$   • U R                  5         g)z+The process has forked, clean up as needed.N)rÓ   ©r    s    r!   Ú	post_forkÚSysMonitor.post_fork  s   € ð 	�	‰	�r$   c                ó   • U R                   $ )zHas there been any activity?©r«   rÖ   s    r!   ÚactivityÚSysMonitor.activity  s   € à�~‰~Ðr$   c                ó   • SU l         g)zReset the activity() flag.FNrÚ   rÖ   s    r!   Úreset_activityÚSysMonitor.reset_activity  s	   € àˆ�r$   c                ó   • g)z+Return a dictionary of statistics, or None.Nr0   rÖ   s    r!   Ú	get_statsÚSysMonitor.get_stats  s   € àr$   c                óh   • [         R                  " 5       R                  R                  R                  $ ©z2Get the frame of the Python code we're monitoring.©ÚinspectÚcurrentframeÚf_backrÖ   s    r!   Úcallers_frameÚSysMonitor.callers_frame  s'   € ô ×$Ò$Ó&×-Ñ-×4Ñ4×;Ñ;ðr$   c                óT   • [         R                  " 5       R                  R                  $ rä   rå   rÖ   s    r!   ré   rê   '  s   € ä×'Ò'Ó)×0Ñ0×7Ñ7Ð7r$   r’   Ú@c                ó´  • SU l         U R                  S==   S-  ss'   U R                  R                  [	        U5      5      nSnSnUb  UR
                  nUR                  nUGcñ  UR                  nU R                  R                  U5      nUcU  [        R                  " 5       R                  n[        (       a  UR                  nU R                  Xh5      nXpR                  U'   UR                  nU(       as  UR                  n	U	c   eU R!                  5          X�R"                  ;  a  [%        5       U R"                  U	'   U R'                  5         U R"                  U	   n[)        U5      n
OSnSn
[+        UUU
S9U R                  [	        U5      '   U R,                  R/                  U5        U(       a¥  [0        R2                  R4                  nU R6                     U R8                  (       ae  [:        c   e[:        R=                  U R>                  UUR@                  URB                  -  URD                  -  5        XRF                  [	        U5      '   SSS5        U(       a<  U RH                  (       a+  U RK                  5       nURL                  * U RN                  U'   g[0        R2                  RP                  $ ! U R'                  5         f = f! , (       d  f       N€= f)z-Handle sys.monitoring.events.PY_START events.Tr�   é   N)rŠ   r‹   rŒ   ))r«   r©   r¢   Úgetr\   rŠ   r‹   r^   Úshould_trace_cacheræ   rç   rè   ÚLOGÚshould_traceÚtraceÚsource_filenameÚ	lock_datar¶   ÚsetÚunlock_datar˜   r‡   r£   rk   rs   r   rÀ   r¨   r¦   rq   rÑ   r¡   rÆ   rÄ   rÉ   r¥   rž   ré   r_   r¤   ÚDISABLE)r    r’   Úinstruction_offsetÚ	code_infoÚtracing_coder‹   rT   ÚdispÚframeÚ	tracenamer“   rÀ   s               r!   rÃ   ÚSysMonitor.sysmon_py_start+  sX  € ð ˆŒØ�
‰
�8Ó Ñ!Óà—O‘O×'Ñ'¬¨4«Ó1ˆ	Ø$(ˆØ+/ˆ	ØÑ Ø$×,Ñ,ˆLØ!×+Ñ+ˆIàÒØ×'Ñ'ˆHØ×*Ñ*×.Ñ.¨xÓ8ˆDØ‰|Ü×,Ò,Ó.×5Ñ5�ß’3à!ŸL™L�EØ×(Ñ(¨Ó9�Ø48×'Ñ'¨Ñ1àŸ:™:ˆLÞØ ×0Ñ0�	Ø Ñ,Ð,Ð,Ø—‘Ô ð'Ø ¯	©	Ó1Ü/2«u˜Ÿ	™	 )Ñ,à×$Ñ$Ô&Ø ŸI™I iÑ0�	Ü$ TÓ*‘à �	Ø�ä(0Ø$Ø#Ø ñ)ˆD�O‰OœB˜t›HÑ%ð
 ×Ñ×$Ñ$ TÔ*æÜŸ™×.Ñ.�Ø—Y“YØ—~—~Ü-Ñ9Ð9Ð9Ü&×7Ñ7Ø ŸI™IØ Ø"×,Ñ,à$×.Ñ.ñ/ð %Ÿk™kñ	*ô
ð <@×.Ñ.¬r°$«xÑ8÷ ö  ˜DŸOŸOØ×&Ñ&Ó(ˆEØ&*×&9Ñ&9Ð%9ˆD�O‰O˜EÑ"Øä—>‘>×)Ñ)Ð)øðK ×$Ñ$Õ&ú÷  •Yús   Ä&J4 ÇA7K	Ê4KË	
Kc                óV   • U R                  5       nUR                  U R                  U'   g)zBHandle sys.monitoring.events.PY_RESUME events for branch coverage.N)ré   Úf_linenor¤   )r    r’   rù   rý   s       r!   rÅ   Ú SysMonitor.sysmon_py_resume_arcst  s$   € ð
 ×"Ñ"Ó$ˆØ!&§¡ˆ�‰˜Òr$   Nc                ó|  • U R                  5       nU R                  R                  [        U5      5      nUbi  UR                  b\  U R
                  R                  U5      nUb>  XaR                  * 4n[        [        [           UR                  5      R                  U5        U R
                  R                  US5        g)zBHandle sys.monitoring.events.PY_RETURN events for branch coverage.N)ré   r¢   rï   r\   r‹   r¤   r_   r
   rö   r   rM   Úpop)r    r’   rù   Úretvalrý   rú   Ú	last_lineÚarcs           r!   rÇ   Ú SysMonitor.sysmon_py_return_arcs|  s›   € ð
 ×"Ñ"Ó$ˆØ—O‘O×'Ñ'¬¨4«Ó1ˆ	ØÑ  Y×%8Ñ%8Ñ%DØŸ™×+Ñ+¨EÓ2ˆIØÑ$Ø ×#6Ñ#6Ð"6Ð7�ä”Sœ‘Y 	× 3Ñ 3Ó4×8Ñ8¸Ô=ð 	�‰×Ñ˜E 4Õ(r$   rx   c                óx  • U R                  5       nU R                  R                  US5      n[        U[        5      (       a  gU R
                  R                  [        U5      5      nUbQ  UR                  bC  Ub?  XQR                  * 4n[        [        [           UR                  5      R                  U5        gggg)zBHandle sys.monitoring.events.PY_UNWIND events for branch coverage.N)ré   r¤   r  r[   ÚGeneratorExitr¢   rï   r\   r‹   r_   r
   rö   r   rM   )r    r’   rù   Ú	exceptionrý   r  rú   r  s           r!   rÈ   Ú SysMonitor.sysmon_py_unwind_arcs�  s¥   € ð
 ×"Ñ"Ó$ˆà—O‘O×'Ñ'¨¨tÓ4ˆ	Ü�i¤×/Ñ/àØ—O‘O×'Ñ'¬¨4«Ó1ˆ	ØÑ  Y×%8Ñ%8Ñ%DØÑ$Ø ×#6Ñ#6Ð"6Ð7�ä”Sœ‘Y 	× 3Ñ 3Ó4×8Ñ8¸Õ=ð %ð &EÐ r$   Úlinec                óà   • U R                   [        U5         nUR                  b0  [        [        [
           UR                  5      R                  U5        [        R                  R                  $ )z;Handle sys.monitoring.events.LINE events for line coverage.)
r¢   r\   r‹   r
   rö   r   rM   rs   r   rø   )r    r’   Úline_numberrú   s       r!   rË   ÚSysMonitor.sysmon_line_lines   sQ   € ð —O‘O¤B t£HÑ-ˆ	Ø×ÑÑ*Ü””W‘˜y×2Ñ2Ó3×7Ñ7¸ÔDä�~‰~×%Ñ%Ð%r$   c                ó2  • U R                   [        U5         nSnUR                  bo  U R                  5       nU R                  R                  U5      nUb3  Xb4n[        [        [           UR                  5      R                  U5        X R                  U'   U$ )z=Handle sys.monitoring.events.LINE events for branch coverage.N)
r¢   r\   r‹   ré   r¤   rï   r
   rö   r   rM   )r    r’   r  rú   rw   rý   r  r  s           r!   rÊ   ÚSysMonitor.sysmon_line_arcs©  s‡   € ð —O‘O¤B t£HÑ-ˆ	ØˆØ×ÑÑ*Ø×&Ñ&Ó(ˆEØŸ™×+Ñ+¨EÓ2ˆIØÑ$Ø Ð.�Ü”Sœ‘Y 	× 3Ñ 3Ó4×8Ñ8¸Ô=à%0�O‰O˜EÑ"Øˆ
r$   )r«   r¢   r£   r¤   r¥   r¨   r¡   rŸ   r©   rª   r    r¦   rž   )r¬   rI   r/   r4   )r/   r3   )r/   r4   )r/   r‰   )r/   zdict[str, int] | None)r/   r   )r’   r   rù   rI   r/   ÚMonitorReturn)r’   r   rù   rI   r  Úobjectr/   r  )r’   r   rù   rI   r  ÚBaseExceptionr/   r  )r’   r   r  rI   r/   r  )r5   r6   r7   r8   r9   r"   rº   r�   rÎ   rÓ   r×   rÛ   rÞ   rá   rñ   ré   rÃ   rÅ   rÇ   rÈ   rË   rÊ   r:   r0   r$   r!   rš   rš   ´   sr  † ÙRô!ôFWñ
 ƒ\óó ðñ2 ƒ\ó/ó ð/ñ ƒ\óó ðôôôö
 õ	ô	8ñ �˜ÓóF*ó ðF*ñP �˜Óð0Øð0Ø25ð0à	ó0ó ð0ñ �˜˜TÓ"ð)Øð)Ø25ð)Ø?Eð)à	ó)ó #ð)ñ  �˜˜UÓ#ð>Øð>Ø25ð>ØBOð>à	ó>ó $ð>ñ$ �˜Óó&ó  ð&ñ �˜Óóó  ór$   rš   )rP   r3   r/   r4   )ra   r   r/   r3   )rz   z
str | Noner/   r   )r’   r   r/   zdict[int, int])3r9   Ú
__future__r   r|   ræ   rG   Úos.pathrs   rJ   ro   Údataclassesr   Útypesr   r   Útypingr   r   r	   r
   Úcoverage.debugr   r   Úcoverage.miscr   Úcoverage.typesr   r   r   r   r   r   r   r   r   r   rñ   r)   rq   r  r   r¾   rö   r>   r�   r(   rb   r�   r‡   r˜   rš   r0   r$   r!   Ú<module>r     s  ðò Iõ #ã Û Û 	Û Û 
Û Û å !ß %÷ó ÷ 7Ý (÷÷ ÷ ñ �BÓ€ð €ñ ˜˜l¨DÓ1€æØÑ%Ð%Ð%ð €Mö ÷ñ ñ $ NÐ4DÓE€NØÑ%Ð%Ð%à×#Ò#Ø˜$°Àñ€Kñ !›U€L�(Ó"ôCô*õôDPôð ÷(ð (ó ð(ôôB�õ Br$   