§
    ±Ûg|  ã                   óœ  — d Z ddlZddlZddl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 g ZerWej        ej        ej         ej!        ej"        ej#        ej$        ej%        ej&        ej'        ej(        ej)        ej*        ej+        iZ,n¥erWej        ej        ej"        ej#        ej$        ej%        ej-        ej'        ej&        ej'        ej         ej.        ej/        ej!        iZ,nLerJej        ej        ej"        ej#        ej$        ej%        ej&        ej'        ej         ej.        ej/        ej!        iZ,ej0        ej1        ej2        ej3        ej4        ej5        ej6        ej7        ej8        ej9        ej:        ej;        ej<        ej=        ej>        ej?        ej@        ejA        ejB        ejC        ejD        ejE        ejF        ejG        iZH ejI        ¦   «         ZJejK        ZK eLed¦  «        ZM eLed¦  «        ZN eLed¦  «        ZO eLed¦  «        ZP eQdvi dd“dd“dd“dd “d!d"“d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“ŽZR edKg dL¢¦  «        ZS edMg dN¢¦  «        ZT edOg dP¢¦  «        ZUeUZV edQg dR¢¦  «        ZW edSdT¦  «        ZX edUdV¦  «        ZYer edWg dX¢¦  «        ZZn edWg dY¢¦  «        ZZdZ„ Z[d[„ Z\d\„ Z]eMrd]„ Z^n
d^„ Z^d_e^__        d`„ Z`eserda„ Zandb„ Zadc„ Zberdd„ Zcnerde„ Zcdwdf„Zdeje        Zeejf        Zfejg        Zgejh        Zhdg„ Zidh„ Zjerdi„ Zkdj„ Zldk„ Zmdl„ Znedm„ ¦   «         Zodn„ Zperdo„ Zqnerdp„ Zqnejq        Zqdq„ Zrdr„ Zsejt        ds„ ¦   «         Zu G dt„ du¦  «        ZvdS )xz5FreeBSD, OpenBSD and NetBSD platforms implementation.é    N)Údefaultdict)Ú
namedtuple)ÚElementTreeé   )Ú_common)Ú_psposix)Ú_psutil_bsd)Ú_psutil_posix)ÚFREEBSD)ÚNETBSD)ÚOPENBSD)ÚAccessDenied)ÚNoSuchProcess)ÚZombieProcess)Ú	conn_tmap)Úconn_to_ntuple)Údebug)Úmemoize)Úmemoize_when_activated)Úusage_percentÚper_cpu_timesÚproc_num_threadsÚproc_open_filesÚproc_num_fdsÚppidÚstatusÚreal_uidé   Úeffective_uidé   Ú	saved_uidé   Úreal_gidé   Úeffective_gidé   Ú	saved_gidé   Úttynré   Úcreate_timeé	   Úctx_switches_volé
   Úctx_switches_unvolé   Úread_io_counté   Úwrite_io_counté   Ú	user_timeé   Úsys_timeé   Úch_user_timeé   Úch_sys_timeé   Úrssé   Úvmsé   Úmemtexté   Úmemdataé   Úmemstacké   Úcpunumé   Únameé   Úsvmem)ÚtotalÚ	availableÚpercentÚusedÚfreeÚactiveÚinactiveÚbuffersÚcachedÚsharedÚwiredÚ	scputimes©ÚuserÚniceÚsystemÚidleÚirqÚpmem)r=   r?   ÚtextÚdataÚstackÚ	pcputimes)rY   r[   Úchildren_userÚchildren_systemÚpmmap_groupedú*path rss, private, ref_count, shadow_countÚ	pmmap_extú6addr, perms path rss, private, ref_count, shadow_countÚsdiskio)Ú
read_countÚwrite_countÚ
read_bytesÚwrite_bytesÚ	read_timeÚ
write_timeÚ	busy_time)rj   rk   rl   rm   c                  óJ  — t          j        ¦   «         } t          rÁ| \  }}}}}}t          dd¦  «        5 }|D ]�}|                     d¦  «        r+t          |                     ¦   «         d         ¦  «        dz  }	ŒB|                     d¦  «        r*t          |                     ¦   «         d         ¦  «        dz  }
Œ‚	 d d d ¦  «         n# 1 swxY w Y   ||z   }||z
  }n| \  }}}}}}}	}
||z   |z   }||z   |z   }t          ||z
  |d¬¦  «        }t          ||||||||	||
|¦  «        S )Nz/proc/meminfoÚrbs   Buffers:r   i   s
   MemShared:©Úround_)	ÚcextÚvirtual_memr   ÚopenÚ
startswithÚintÚsplitr   rK   )ÚmemrL   rP   rQ   rR   rV   rT   ÚfÚlinerS   rU   rO   ÚavailrN   s                 úC/granary/edev/quantum/lib/python3.11/site-packages/psutil/_psbsd.pyÚvirtual_memoryr€   ²   sŸ  € Ý
Ô
Ñ
Ô
€CÝð 'Ø7:Ñ4ˆˆt�V˜X u¨fõ �/ 4Ñ(Ô(ð 	9¨AØð 9ð 9�Ø—?’? ;Ñ/Ô/ð 9Ý! $§*¢*¡,¤,¨q¤/Ñ2Ô2°TÑ9�G�GØ—_’_ ]Ñ3Ô3ð 9Ý  §¢¡¤¨a¤Ñ1Ô1°DÑ8�Føð	9ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð ˜‰~ˆØ˜‘ˆˆàHKÑEˆˆt�V˜X u¨f°g¸vð ˜6Ñ! DÑ(ˆØ˜‰~ Ñ&ˆå˜U U™]¨U¸1Ð=Ñ=Ô=€GÝØØØØØØØØØØØñô ð s   ´BCÃC
ÃC
c                  óŠ   — t          j        ¦   «         \  } }}}}t          || d¬¦  «        }t          j        | |||||¦  «        S )z@System swap memory as (total, used, free, sin, sout) namedtuple.r   rs   )ru   Úswap_memr   r   Ússwap)rL   rO   rP   ÚsinÚsoutrN   s         r   Úswap_memoryr†   á   sF   € å#'¤=¡?¤?Ñ €Eˆ4��s˜DÝ˜D %°Ð2Ñ2Ô2€GÝŒ=˜  d¨G°S¸$Ñ?Ô?Ð?ó    c                  óZ   — t          j        ¦   «         \  } }}}}t          | ||||¦  «        S )z,Return system per-CPU times as a namedtuple.)ru   Ú	cpu_timesrW   rX   s        r   r‰   r‰   í   s0   € å$(¤NÑ$4Ô$4Ñ!€Dˆ$�˜˜cÝ�T˜4 ¨¨sÑ3Ô3Ð3r‡   c                  ó–   — g } t          j        ¦   «         D ]2}|\  }}}}}t          |||||¦  «        }|                      |¦  «         Œ3| S )ú(Return system CPU times as a namedtuple.)ru   r   rW   Úappend)ÚretÚcpu_trY   rZ   r[   r\   r]   Úitems           r   r   r   õ   s^   € àˆÝÔ'Ñ)Ô)ð 	ð 	ˆEØ,1Ñ)ˆD�$˜  cÝ˜T 4¨°°sÑ;Ô;ˆDØ�JŠJ�tÑÔÐÐØˆ
r‡   c                  ó´   — t          ¦   «         dk    rt          ¦   «         gS t          j        rd} t	          | ¦  «        ‚dt          _        t          ¦   «         gS )r‹   r   ú&supported only starting from FreeBSD 8T)Úcpu_count_logicalr‰   r   Ú
__called__ÚNotImplementedError)Úmsgs    r   r   r     sQ   € åÑÔ !Ò#Ð#Ý‘K”K�=Ð ÝÔ#ð 	+Ø:ˆCÝ% cÑ*Ô*Ð*Ø#'�Ô Ý‘”ˆ}Ðr‡   Fc                  ó(   — t          j        ¦   «         S )z0Return the number of logical CPUs in the system.)ru   r’   © r‡   r   r’   r’     s   € åÔ!Ñ#Ô#Ð#r‡   c                  ó.   — t          ¦   «         dk    rdnd S )Nr   )r’   r—   r‡   r   Úcpu_count_coresr™     s   € å%Ñ'Ô'¨1Ò,Ð,ˆqˆq°$Ð6r‡   c                  ó~  — d} t          j        ¦   «         }|��|                     d¦  «        }|dk    rt|d|dz   …         }t          j        |¦  «        }	 t          |                     d¦  «        ¦  «        pd} |                     ¦   «          n# |                     ¦   «          w xY w| st          ¦   «         dk    rdS | S )z-Return the number of CPU cores in the system.Nz	</groups>éÿÿÿÿr,   zgroup/children/group/cpur   )	ru   Úcpu_topologyÚrfindr   Ú
fromstringÚlenÚfindallÚclearr’   )r�   ÚsÚindexÚroots       r   r™   r™      sÁ   € ð ˆÝÔÑÔˆØˆ=à—G’G˜KÑ(Ô(ˆEØ˜Š{ˆ{Ø�k˜ ™	�k”N�Ý"Ô-¨aÑ0Ô0�ð!Ý˜dŸlšlÐ+EÑFÔFÑGÔGÐOÈ4�Cð —J’J‘L”L�L�Lø�D—J’J‘L”L�L�LøøøØð 	å Ñ"Ô" aÒ'Ð'Ø�qØˆ
s   Á$B ÂB$c                  óÐ  — t           rt          j        ¦   «         \  } }}}}n¯t          r†t          j        ¦   «         \  } }}}}}}t	          dd¦  «        5 }|D ]>}|                     d¦  «        r't          |                     ¦   «         d         ¦  «        }Œ?	 ddd¦  «         n# 1 swxY w Y   n"t          rt          j        ¦   «         \  } }}}}}}t          j
        | |||¦  «        S )z*Return various CPU stats as a named tuple.z
/proc/statrr   s   intrr   N)r   ru   Ú	cpu_statsr   rw   rx   ry   rz   r   r   Ú	scpustats)	ÚctxswÚintrsÚ
soft_intrsÚsyscallsÚ_trapsÚ_faultsÚ_forksr|   r}   s	            r   r¦   r¦   ;  s:  € åð 
õ 6:´^Ñ5EÔ5EÑ2ˆˆu�j (¨F¨FÝ	ð 
õ ŒNÑÔñ 	Dˆˆu�j (¨F°G¸Võ �, Ñ%Ô%ð 	1¨Øð 1ð 1�Ø—?’? 7Ñ+Ô+ð 1Ý §
¢
¡¤¨Q¤Ñ0Ô0�Eøð1ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1øõ 
ð 
õ ŒNÑÔñ 	Dˆˆu�j (¨F°G¸Võ Ô˜U E¨:°xÑ@Ô@Ð@s   ÁAB#Â#B'Â*B'c                  óf  — g } t          ¦   «         }t          |¦  «        D �]}	 t          j        |¦  «        \  }}n# t          $ r Y Œ(w xY w|r¸	 t          |                     d¦  «        d                              d¦  «        d         ¦  «        }n# t          t          f$ r d}Y nw xY w	 t          |                     d¦  «        d                              d¦  «        d         ¦  «        }n# t          t          f$ r d}Y nw xY w|  	                    t          j        |||¦  «        ¦  «         �Œ| S )zªReturn frequency metrics for CPUs. As of Dec 2018 only
        CPU 0 appears to be supported by FreeBSD and all other cores
        match the frequency of CPU 0.
        ú r›   ú/r   N)r’   Úrangeru   Úcpu_freqr”   ry   rz   Ú
IndexErrorÚ
ValueErrorrŒ   r   Úscpufreq)r�   Únum_cpusÚcpuÚcurrentÚavailable_freqÚmin_freqÚmax_freqs          r   r³   r³   ]  s]  € ð
 ˆÝ$Ñ&Ô&ˆÝ˜‘?”?ð 	Fñ 	FˆCðÝ*.¬-¸Ñ*<Ô*<Ñ'�˜˜øÝ&ð ð ð Ø�ðøøøàð $ð$Ý" >×#7Ò#7¸Ñ#<Ô#<¸RÔ#@×#FÒ#FÀsÑ#KÔ#KÈAÔ#NÑOÔO�H�HøÝ"¥JÐ/ð $ð $ð $Ø#�H�H�Hð$øøøð$Ý" >×#7Ò#7¸Ñ#<Ô#<¸QÔ#?×#EÒ#EÀcÑ#JÔ#JÈ1Ô#MÑNÔN�H�HøÝ"¥JÐ/ð $ð $ð $Ø#�H�H�Hð$øøøà�JŠJ•wÔ'¨°¸8ÑDÔDÑEÔEÐEÑEØˆ
s5   ¤<¼
A	ÁA	ÁABÂB'Â&B'Â+AC-Ã-DÄDc                  óp   — t          t          j        ¦   «         ¦  «        } t          j        | dd¦  «        gS )Ng        )Úfloatru   r³   r   r¶   )Úcurrs    r   r³   r³   w  s-   € Ý•T”]‘_”_Ñ%Ô%ˆÝÔ   s¨CÑ0Ô0Ð1Ð1r‡   c                 ó    — g }t          j        ¦   «         }|D ]5}|\  }}}}t          j        ||||¦  «        }|                     |¦  «         Œ6|S )z•Return mounted disk partitions as a list of namedtuples.
    'all' argument is ignored, see:
    https://github.com/giampaolo/psutil/issues/906.
    )ru   Údisk_partitionsr   Ú	sdiskpartrŒ   )	ÚallÚretlistÚ
partitionsÚ	partitionÚdeviceÚ
mountpointÚfstypeÚoptsÚntuples	            r   rÁ   rÁ   �  sd   € ð
 €GÝÔ%Ñ'Ô'€JØð ð ˆ	Ø+4Ñ(ˆ�
˜F DÝÔ" 6¨:°v¸tÑDÔDˆØ�Š�vÑÔÐÐØ€Nr‡   c                  óè  — t          ¦   «                              ¦   «         } i }| D ]Ì}	 t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        \  }}t          t          d¦  «        rt          j        |¦  «        }d 	                    |¦  «        }d|v }t          j
        |||||¦  «        ||<   Œ # t          $ r }	|	j        t          j        k    r‚ Y d}	~	ŒÅd}	~	ww xY w|S )z)Get NIC stats (isup, duplex, speed, mtu).Ú	NicDuplexú,ÚrunningN)Únet_io_countersÚkeysÚ
cext_posixÚ
net_if_mtuÚnet_if_flagsÚnet_if_duplex_speedÚhasattrr   rÍ   ÚjoinÚ	snicstatsÚOSErrorÚerrnoÚENODEV)
Únamesr�   rI   ÚmtuÚflagsÚduplexÚspeedÚoutput_flagsÚisupÚerrs
             r   Únet_if_statsrä   œ  s  € åÑÔ×"Ò"Ñ$Ô$€EØ
€CØð ð ˆð	ÝÔ'¨Ñ-Ô-ˆCÝÔ+¨DÑ1Ô1ˆEÝ&Ô:¸4Ñ@Ô@‰MˆF�Eõ •w Ñ,Ô,ð 3Ý Ô*¨6Ñ2Ô2�ØŸ8š8 E™?œ?ˆLØ Ð%ˆDÝÔ)Ø�f˜e S¨,ñô ˆC�‰IˆIøõ ð 	ð 	ð 	àŒy�EœLÒ(Ð(Øð )Ð(Ð(Ð(Ð(øøøøð	øøøð €Js   ¨?CÃ
C/ÃC*Ã*C/c                 óz  — t           |          \  }}t          ¦   «         }t          rt          j        d||¦  «        }n2t
          rt          j        d| ¦  «        }nt          j        ||¦  «        }|D ]<}|\  }}}}	}
}}t          ||||	|
|t          |¦  «        }|                     |¦  «         Œ=t          |¦  «        S )z System-wide network connections.r›   )
r   Úsetr   ru   Únet_connectionsr   r   ÚTCP_STATUSESÚaddÚlist)ÚkindÚfamiliesÚtypesr�   Úrawlistr�   ÚfdÚfamÚtypeÚladdrÚraddrr   ÚpidÚnts                 r   rç   rç   ´  sÆ   € å ”o�O€HˆeÝ
‰%Œ%€CÝð 8ÝÔ& r¨8°UÑ;Ô;ˆˆÝ	ð 8ÝÔ& r¨4Ñ0Ô0ˆˆåÔ& x°Ñ7Ô7ˆàð ð ˆØ37Ñ0ˆˆC��u˜e V¨SÝØ��T˜5 %¨µ¸sñ
ô 
ˆð 	�Š�‰ŒˆˆÝ�‰9Œ9Ðr‡   c                  óÜ   — 	 t          j        ¦   «         \  } }}n# t          $ r Y dS w xY w|dk    }|rt          j        }n|dk    rt          j        }n|dz  }t          j        | ||¦  «        S )zReturn battery info.Nr   r›   é<   )ru   Úsensors_batteryr”   r   ÚPOWER_TIME_UNLIMITEDÚPOWER_TIME_UNKNOWNÚsbattery)rN   ÚminsleftÚpower_pluggedÚsecslefts       r   rø   rø   Ï  s�   € ð	Ý/3Ô/CÑ/EÔ/EÑ,ˆG�X˜}˜}øÝ"ð 	ð 	ð 	à�4�4ð	øøøð &¨Ò*ˆØð 	%ÝÔ3ˆHˆHØ˜Š^ˆ^ÝÔ1ˆHˆHà "‘}ˆHÝÔ ¨°=ÑAÔAÐAs   ‚ š
(§(c            	      ó8  — t          t          ¦  «        } t          ¦   «         }t          |¦  «        D ]g}	 t	          j        |¦  «        \  }}|dk    rd}d|› �}| d                              t          j        ||||¦  «        ¦  «         ŒX# t          $ r Y Œdw xY w| S )z?Return CPU cores temperatures if available, else an empty dict.r   NzCore Úcoretemp)
r   rê   r’   r²   ru   Úsensors_cpu_temperaturerŒ   r   Úshwtempr”   )r�   r·   r¸   r¹   ÚhighrI   s         r   Úsensors_temperaturesr  ß  s¾   € å�$ÑÔˆÝ$Ñ&Ô&ˆÝ˜‘?”?ð 
	ð 
	ˆCð	Ý $Ô <¸SÑ AÔ A‘�˜Ø˜1’9�9Ø�DØ$˜s�}�}�Ø�J”×&Ò&Ý”O D¨'°4¸Ñ>Ô>ñô ð ð øõ 'ð ð ð Ø�ðøøøð ˆ
s   µAB
Â

BÂBc                  ó(   — t          j        ¦   «         S )z:The system boot time expressed in seconds since the epoch.)ru   Ú	boot_timer—   r‡   r   r  r  ÷  s   € åŒ>ÑÔÐr‡   c                  óØ   — g } t          j        ¦   «         }|D ]Q}|\  }}}}}|dk    rt          sJ ‚d}|dk    rŒ"t          j        ||pd|||¦  «        }|                      |¦  «         ŒR| S )z:Return currently connected users as a list of namedtuples.r›   Nú~)ru   Úusersr   r   ÚsuserrŒ   )	rÄ   rî   r�   rY   ÚttyÚhostnameÚtstamprô   rõ   s	            r   r	  r	  ü  s‰   € à€GÝŒj‰lŒl€GØð ð ˆØ+/Ñ(ˆˆc�8˜V SØ�"Š9ˆ9ÝˆNˆNˆNØˆCØ�#Š:ˆ:ØÝŒ]˜4  ¨¨h¸ÀÑDÔDˆØ�Š�rÑÔÐÐØ€Nr‡   c                  ó„   — 	 t          d¦  «                             ¦   «          dS # t          $ r Y dS t          $ r Y dS w xY w)Nr   TF)ÚProcessrI   r   r   r—   r‡   r   Ú_pid_0_existsr    sa   € ðÝ�‰
Œ
�ŠÑÔÐð ˆtøõ ð ð ð ØˆuˆuÝð ð ð Øˆtˆtðøøøs   ‚!% ¥
?²	?¾?c                  óŠ   — t          j        ¦   «         } t          r(d| vr$t          ¦   «         r|                      dd¦  «         | S )z7Returns a list of PIDs currently running on the system.r   )ru   Úpidsr   r  Úinsert)r�   s    r   r  r    s@   € å
Œ)‰+Œ+€CÝð �A˜S�L�L¥m¡o¤o�Lð 	�
Š
�1�aÑÔÐØ€Jr‡   c                 óR   — t          j        | ¦  «        }|s| t          ¦   «         v S dS )NT©r   Ú
pid_existsr  ©rô   Úexistss     r   r  r  )  s/   € ÝÔ$ SÑ)Ô)ˆØð 	ð �$™&œ&�=Ð à�4r‡   c                 óR   — t          j        | ¦  «        }|sdS | t          ¦   «         v S )NFr  r  s     r   r  r  4  s/   € ÝÔ$ SÑ)Ô)ˆØð 	!Ø�5ð
 �$™&œ&�=Ð r‡   c                 óÀ   — 	 t          j        | ¦  «        t          d                  }t                               |¦  «        t
          j        k    S # t          $ r Y dS w xY w)Nr   F)ru   Úproc_oneshot_infoÚkinfo_proc_mapÚPROC_STATUSESÚgetr   ÚSTATUS_ZOMBIErÙ   )rô   Ústs     r   Ú	is_zombier!  B  s_   € ðÝÔ# CÑ(Ô(­¸Ô)AÔBˆÝ× Ò  Ñ$Ô$­Ô(=Ò=Ð=øÝð ð ð Øˆuˆuðøøøs   ‚AA Á
AÁAc                 óF   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c                 óv  •— | j         | j        | j        }}}	  ‰| g|¢R i |¤ŽS # t          $ r7}t	          |¦  «        rt          |||¦  «        |‚t          ||¦  «        |‚d }~wt          $ r}t          ||¦  «        |‚d }~wt          $ r-}|dk    r!dt          ¦   «         v rt          ||¦  «        |‚‚ d }~ww xY w)Nr   )rô   Ú_ppidÚ_nameÚProcessLookupErrorr!  r   r   ÚPermissionErrorr   rÙ   r  )ÚselfÚargsÚkwargsrô   r   rI   rã   Úfuns          €r   Úwrapperz wrap_exceptions.<locals>.wrapperO  sö   ø€ àœ( D¤J°´
�4ˆTˆð	Ø�3�tÐ-˜dÐ-Ð-Ð- fÐ-Ð-Ð-øÝ!ð 	4ð 	4ð 	4Ý˜‰~Œ~ð >Ý# C¨¨tÑ4Ô4¸#Ð=Ý  TÑ*Ô*°Ð3øøøøÝð 	3ð 	3ð 	3Ý˜s DÑ)Ô)¨sÐ2øøøøÝð 	ð 	ð 	Ø�aŠxˆx˜A¥¡¤˜K˜KÝ" 3¨Ñ-Ô-°3Ð6Øøøøøð	øøøs,   ˜$ ¤
B8®2A Á B8Á-A>Á>B8Â(B3Â3B8)Ú	functoolsÚwraps)r+  r,  s   ` r   Úwrap_exceptionsr/  J  s:   ø€ õ
 „_�SÑÔðð ð ð ñ Ôðð €Nr‡   c              #   ó  K  — | j         | j        | j        }}}	 dV — dS # t          t          f$ r<}t          | j         ¦  «        rt          |||¦  «        |‚t          ||¦  «        |‚d}~wt          $ r}t          ||¦  «        |‚d}~ww xY w)z8Same as above, for routines relying on reading /proc fs.N)
rô   r%  r$  r&  ÚFileNotFoundErrorr!  r   r   r'  r   )Úinstrô   rI   r   rã   s        r   Úwrap_exceptions_procfsr3  b  s´   è è € ð ”h ¤
¨D¬Jˆtˆ€Cð/ØˆˆˆˆˆøÝÕ 1Ð2ð 4ð 4ð 4õ �T”XÑÔð 	4Ý  T¨4Ñ0Ô0°cÐ9å  TÑ*Ô*°Ð3øøøøÝð /ð /ð /Ý˜3 Ñ%Ô%¨3Ð.øøøøð/øøøs    ™ ŸB
°7A'Á'B
Á4BÂB
c                   ó   — e Zd ZdZg d¢Zd„ Zd„ Zeed„ ¦   «         ¦   «         Z	d„ Z
d„ Zed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zered„ ¦   «         Zed„ ¦   «         ZeZed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed*d„¦   «         Zed+d„¦   «         Zed„ ¦   «         Zed„ ¦   «         Z ed„ ¦   «         Z!ed„ ¦   «         Z"ed„ ¦   «         Z# e$d d!¦  «        Z% e$d d"¦  «        Z&d#„ Z'e(red$„ ¦   «         Z)ne'Z)e*red%„ ¦   «         Z+ne'Z+er/ed&„ ¦   «         Z,ed'„ ¦   «         Z-ed(„ ¦   «         Z.ed+d)„¦   «         Z/dS dS ),r  z1Wrapper class around underlying C implementation.)Ú_cacher%  r$  rô   c                 ó0   — || _         d | _        d | _        d S ©N)rô   r%  r$  )r(  rô   s     r   Ú__init__zProcess.__init__y  s   € ØˆŒØˆŒ
ØˆŒ
ˆ
ˆ
r‡   c                 ó8   — t          j        | j        ¦  «         dS )z+Raise NSP if the process disappeared on us.N)ru   Ú	proc_namerô   ©r(  s    r   Ú_assert_alivezProcess._assert_alive~  s   € õ 	Œ�t”xÑ Ô Ð Ð Ð r‡   c                 ó†   — t          j        | j        ¦  «        }t          |¦  «        t          t          ¦  «        k    sJ ‚|S )z;Retrieves multiple process info in one shot as a raw tuple.)ru   r  rô   rŸ   r  ©r(  r�   s     r   ÚoneshotzProcess.oneshot„  s:   € õ Ô$ T¤XÑ.Ô.ˆÝ�3‰xŒx�3�~Ñ.Ô.Ò.Ð.Ð.Ð.Øˆ
r‡   c                 ó:   — | j                              | ¦  «         d S r7  )r?  Úcache_activater;  s    r   Úoneshot_enterzProcess.oneshot_enterŒ  s   € ØŒ×#Ò# DÑ)Ô)Ð)Ð)Ð)r‡   c                 ó:   — | j                              | ¦  «         d S r7  )r?  Úcache_deactivater;  s    r   Úoneshot_exitzProcess.oneshot_exit�  s   € ØŒ×%Ò% dÑ+Ô+Ð+Ð+Ð+r‡   c                 ó†   — |                       ¦   «         t          d                  }|�|nt          j        | j        ¦  «        S )NrI   )r?  r  ru   r:  rô   )r(  rI   s     r   rI   zProcess.name’  s4   € à�|Š|‰~Œ~�n¨VÔ4Ô5ˆØÐ'ˆtˆt­T¬^¸D¼HÑ-EÔ-EÐEr‡   c                 ó‚  — t           r&| j        dk    rdS t          j        | j        ¦  «        S t          rS| j        dk    rdS t          | ¦  «        5  t          j        d| j        › d�¦  «        cd d d ¦  «         S # 1 swxY w Y   d S dd l}|  	                    ¦   «         }|r| 
                    |d         ¦  «        pdS dS )Nr   Ú z/proc/z/exe)r   rô   ru   Úproc_exer   r3  ÚosÚreadlinkÚshutilÚcmdlineÚwhich)r(  rL  rM  s      r   ÚexezProcess.exe—  s  € åð 	ØŒx˜1Š}ˆ}Ø�rÝ”= ¤Ñ*Ô*Ð*Ýð 	ØŒx˜1Š}ˆ}à�rÝ'¨Ñ-Ô-ð <ð <Ý”{Ð#:¨D¬HÐ#:Ð#:Ð#:Ñ;Ô;ð<ð <ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <ð ˆMˆMˆMà—l’l‘n”nˆGØð Ø—|’| G¨A¤JÑ/Ô/Ð5°2Ð5à�rs   ÁA;Á;A?ÂA?c                 óä  — t           r| j        dk    rg S t          r½	 t          j        | j        ¦  «        S # t
          $ r–}|j        t          j        k    r{| j        | j        | j	        }}}t          | j        ¦  «        rt          |||¦  «        |‚t          | j        ¦  «        st          |||¦  «        |‚t          d|›d�¦  «         g cY d }~S ‚ d }~ww xY wt          j        | j        ¦  «        S )Nr   z	ignoring z and returning an empty list)r   rô   r   ru   Úproc_cmdlinerÙ   rÚ   ÚEINVALr%  r$  r!  r   r  r   r   )r(  rã   rô   rI   r   s        r   rM  zProcess.cmdline±  s  € åð 	/�t”x 1’}�}ØˆIÝð 	/ð
ÝÔ(¨¬Ñ2Ô2Ð2øÝð ð ð Ø”9¥¤Ò,Ð,Ø&*¤h°´
¸D¼J˜t˜�CÝ  ¤Ñ*Ô*ð FÝ+¨C°°tÑ<Ô<À#ÐEÝ% d¤hÑ/Ô/ð FÝ+¨C°°tÑ<Ô<À#ÐEõ ÐI cÐIÐIÐIÑJÔJÐJØ�I�I�I�I�I�Iàøøøøðøøøõ Ô$ T¤XÑ.Ô.Ð.s"   �6 ¶
CÁ B
CÃ
CÃCÃCc                 ó4   — t          j        | j        ¦  «        S r7  )ru   Úproc_environrô   r;  s    r   ÚenvironzProcess.environÌ  s   € åÔ  ¤Ñ*Ô*Ð*r‡   c                 ó¦   — |                       ¦   «         t          d                  }t          j        ¦   «         }	 ||         S # t          $ r Y d S w xY w)Nr)   )r?  r  r   Úget_terminal_mapÚKeyError)r(  Útty_nrÚtmaps      r   ÚterminalzProcess.terminalÐ  sX   € à—’‘”¥¨wÔ 7Ô8ˆÝÔ(Ñ*Ô*ˆð	Ø˜”<ÐøÝð 	ð 	ð 	Ø�4�4ð	øøøs   ºA Á
AÁAc                 ód   — |                       ¦   «         t          d                  | _        | j        S )Nr   )r?  r  r$  r;  s    r   r   zProcess.ppidÙ  s#   € à—\’\‘^”^¥N°6Ô$:Ô;ˆŒ
ØŒzÐr‡   c                 ó¼   — |                       ¦   «         }t          j        |t          d                  |t          d                  |t          d                  ¦  «        S )Nr   r   r!   )r?  r   Úpuidsr  ©r(  Úrawtuples     r   ÚuidszProcess.uidsÞ  óJ   € à—<’<‘>”>ˆÝŒ}Ø•^ JÔ/Ô0Ø•^ OÔ4Ô5Ø•^ KÔ0Ô1ñ
ô 
ð 	
r‡   c                 ó¼   — |                       ¦   «         }t          j        |t          d                  |t          d                  |t          d                  ¦  «        S )Nr#   r%   r'   )r?  r   Úpgidsr  r_  s     r   ÚgidszProcess.gidsç  rb  r‡   c                 óà   — |                       ¦   «         }t          j        |t          d                  |t          d                  |t          d                  |t          d                  ¦  «        S )Nr5   r7   r9   r;   )r?  r   rb   r  r_  s     r   r‰   zProcess.cpu_timesð  sX   € à—<’<‘>”>ˆÝÔ Ø•^ KÔ0Ô1Ø•^ JÔ/Ô0Ø•^ NÔ3Ô4Ø•^ MÔ2Ô3ñ	
ô 
ð 	
r‡   c                 óL   — |                       ¦   «         t          d                  S )NrG   ©r?  r  r;  s    r   Úcpu_numzProcess.cpu_numü  s   € à—<’<‘>”>¥.°Ô":Ô;Ð;r‡   c           	      óú   — |                       ¦   «         }t          |t          d                  |t          d                  |t          d                  |t          d                  |t          d                  ¦  «        S )Nr=   r?   rA   rC   rE   )r?  r^   r  r_  s     r   Úmemory_infozProcess.memory_info   sb   € à—<’<‘>”>ˆÝØ•^ EÔ*Ô+Ø•^ EÔ*Ô+Ø•^ IÔ.Ô/Ø•^ IÔ.Ô/Ø•^ JÔ/Ô0ñ
ô 
ð 	
r‡   c                 óL   — |                       ¦   «         t          d                  S )Nr+   rh  r;  s    r   r+   zProcess.create_time  s   € à�|Š|‰~Œ~�n¨]Ô;Ô<Ð<r‡   c                 ó„   — t           rt          j        | j        ¦  «        S t	          |                      ¦   «         ¦  «        S r7  )ÚHAS_PROC_NUM_THREADSru   r   rô   rŸ   Úthreadsr;  s    r   Únum_threadszProcess.num_threads  s3   € åð 	'åÔ(¨¬Ñ2Ô2Ð2å�t—|’|‘~”~Ñ&Ô&Ð&r‡   c                 ó˜   — |                       ¦   «         }t          j        |t          d                  |t          d                  ¦  «        S )Nr-   r/   )r?  r   Úpctxswr  r_  s     r   Únum_ctx_switcheszProcess.num_ctx_switches  s?   € à—<’<‘>”>ˆÝŒ~Ø•^Ð$6Ô7Ô8Ø•^Ð$8Ô9Ô:ñ
ô 
ð 	
r‡   c                 óÚ   — t          j        | j        ¦  «        }g }|D ]1\  }}}t          j        |||¦  «        }|                     |¦  «         Œ2t          r|                      ¦   «          |S r7  )ru   Úproc_threadsrô   r   ÚpthreadrŒ   r   r<  )r(  rî   rÄ   Ú	thread_idÚutimeÚstimerË   s          r   ro  zProcess.threads!  sx   € õ Ô# D¤HÑ-Ô-ˆØˆØ'.ð 	#ð 	#Ñ#ˆI�u˜eÝ”_ Y°°uÑ=Ô=ˆFØ�NŠN˜6Ñ"Ô"Ð"Ð"Ýð 	!Ø×ÒÑ Ô Ð Øˆr‡   Úinetc           
      ó¼  — t           |         \  }}g }t          rt          j        | j        |¦  «        }n>t
          rt          j        | j        ||¦  «        }nt          j        | j        ||¦  «        }|D ]R}|d d…         \  }}}	}
}}t          r	||vs|	|vrŒ#t          |||	|
||t          ¦  «        }| 
                    |¦  «         ŒS|                      ¦   «          |S )Nr&   )r   r   ru   rç   rô   r   Úproc_net_connectionsr   r   rè   rŒ   r<  )r(  rë   rì   rí   r�   rî   r�   rï   rð   rñ   rò   ró   r   rõ   s                 r   rç   zProcess.net_connections-  sû   € å# Dœ/‰ˆ�%Øˆåð 	KÝÔ*¨4¬8°TÑ:Ô:ˆGˆGÝð 	KÝÔ*¨4¬8°X¸uÑEÔEˆGˆGåÔ/°´¸(ÀEÑJÔJˆGàð 	ð 	ˆDØ26°r¸°r´(Ñ/ˆB��T˜5 %¨Ýð Ø˜xÐ'Ð'¨T¸Ð->Ð->ØÝØ�C˜˜u e¨Vµ\ñô ˆBð �JŠJ�r‰NŒNˆNˆNà×ÒÑÔÐØˆ
r‡   Nc                 óB   — t          j        | j        || j        ¦  «        S r7  )r   Úwait_pidrô   r%  )r(  Útimeouts     r   ÚwaitzProcess.waitF  s   € åÔ  ¤¨7°D´JÑ?Ô?Ð?r‡   c                 ó4   — t          j        | j        ¦  «        S r7  )rÒ   Úgetpriorityrô   r;  s    r   Únice_getzProcess.nice_getJ  s   € åÔ% d¤hÑ/Ô/Ð/r‡   c                 ó6   — t          j        | j        |¦  «        S r7  )rÒ   Úsetpriorityrô   )r(  Úvalues     r   Únice_setzProcess.nice_setN  s   € åÔ% d¤h°Ñ6Ô6Ð6r‡   c                 ó‚   — |                       ¦   «         t          d                  }t                               |d¦  «        S )Nr   ú?)r?  r  r  r  )r(  Úcodes     r   r   zProcess.statusR  s/   € à�|Š|‰~Œ~�n¨XÔ6Ô7ˆå× Ò   sÑ+Ô+Ð+r‡   c                 óœ   — |                       ¦   «         }t          j        |t          d                  |t          d                  dd¦  «        S )Nr1   r3   r›   )r?  r   Úpior  r_  s     r   Úio_counterszProcess.io_countersX  sD   € à—<’<‘>”>ˆÝŒ{Ø•^ OÔ4Ô5Ø•^Ð$4Ô5Ô6ØØñ	
ô 
ð 	
r‡   c                 ó¨   — t           r| j        dk    rdS t          st          rt	          j        | j        ¦  «        S t          t          rdnd¦  «        ‚)z)Return process current working directory.r   rH  r‘   )r   rô   r   ÚHAS_PROC_OPEN_FILESru   Úproc_cwdr”   r   r;  s    r   ÚcwdzProcess.cwdb  s_   € õ
 ð 		�t”x 1’}�}Ø�2Ýð 	Õ*ð 	õ ”= ¤Ñ*Ô*Ð*å%Ý<CÐKÐ8Ð8Èñô ð r‡   Úmmaprf   rh   c                 ó   — t           ‚r7  )r”   r;  s    r   Ú_not_implementedzProcess._not_implementedy  s   € Ý!Ð!r‡   c                 óL   — t          j        | j        ¦  «        }d„ |D ¦   «         S )z8Return files opened by process as a list of namedtuples.c                 ó>   — g | ]\  }}t          j        ||¦  «        ‘ŒS r—   )r   Ú	popenfile)Ú.0Úpathrï   s      r   ú
<listcomp>z&Process.open_files.<locals>.<listcomp>„  s)   € ÐHÐHÐH±H°D¸"•GÔ% d¨BÑ/Ô/ÐHÐHÐHr‡   )ru   r   rô   )r(  rî   s     r   Ú
open_fileszProcess.open_files€  s*   € õ Ô*¨4¬8Ñ4Ô4ˆGØHÐHÀÐHÑHÔHÐHr‡   c                 ón   — t          j        | j        ¦  «        }t          r|                      ¦   «          |S )z=Return the number of file descriptors opened by this process.)ru   r   rô   r   r<  r>  s     r   Únum_fdszProcess.num_fds�  s5   € õ Ô# D¤HÑ-Ô-ˆCÝð %Ø×"Ò"Ñ$Ô$Ð$ØˆJr‡   c                 ó4   — t          j        | j        ¦  «        S r7  )ru   Úproc_cpu_affinity_getrô   r;  s    r   Úcpu_affinity_getzProcess.cpu_affinity_getœ  s   € åÔ-¨d¬hÑ7Ô7Ð7r‡   c                 ó�  — t          t          t          t          ¦   «         ¦  «        ¦  «        ¦  «        }|D ]}||vrd|›d|› d�}t	          |¦  «        ‚Œ	 t          j        | j        |¦  «         d S # t          $ rG}|j	        t          j
        t          j        hv r"|D ]}||vrd|›d|› d�}t	          |¦  «        |‚Œ ‚ d }~ww xY w)Nzinvalid CPU z (choose between ú))ræ   r²   rŸ   r   rµ   ru   Úproc_cpu_affinity_setrô   rÙ   rÚ   rR  ÚEDEADLK)r(  ÚcpusÚallcpusr¸   r•   rã   s         r   Úcpu_affinity_setzProcess.cpu_affinity_set   s  € õ
 �%¥¥M¡O¤OÑ 4Ô 4Ñ5Ô5Ñ6Ô6ˆGØð *ð *�Ø˜gÐ%Ð%ØK¨ÐKÐKÀÐKÐKÐK�CÝ$ S™/œ/Ð)ð &ðÝÔ*¨4¬8°TÑ:Ô:Ð:Ð:Ð:øÝð ð ð ð
 ”9¥¤­u¬}Ð =Ð=Ð=Ø#ð ;ð ;˜Ø gÐ-Ð-ð!/¨sð !/ð !/Ø$+ð!/ð !/ð !/ð  õ #-¨S¡/¤/°sÐ:ð .ð øøøøðøøøs   ÁA4 Á4
CÁ>AC Ã Cc                 ó4   — t          j        | j        ¦  «        S r7  )ru   Úproc_memory_mapsrô   r;  s    r   Úmemory_mapszProcess.memory_maps»  s   € åÔ(¨¬Ñ2Ô2Ð2r‡   c                 óÊ   — |€t          j        | j        |¦  «        S t          |¦  «        dk    rd|›�}t	          |¦  «        ‚|\  }}t          j        | j        |||¦  «        S )Nr   z2second argument must be a (soft, hard) tuple, got )ru   Úproc_getrlimitrô   rŸ   rµ   Úproc_setrlimit)r(  ÚresourceÚlimitsr•   ÚsoftÚhards         r   ÚrlimitzProcess.rlimit¿  st   € àˆ~ÝÔ*¨4¬8°XÑ>Ô>Ð>å�v‘;”; !Ò#Ð#ð'Ø"ð'ð 'ð õ % S™/œ/Ð)Ø#‘
��dÝÔ*¨4¬8°X¸tÀTÑJÔJÐJr‡   )rz  r7  )0Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r8  r<  r/  r   r?  rB  rE  rI   rO  rM  rU  r[  r   ra  re  r‰   r   ri  rk  Úmemory_full_infor+   rp  rs  ro  rç   r€  rƒ  r‡  r   r�  r‘  r   Únt_mmap_groupedÚnt_mmap_extr”  r�  r›  ÚHAS_PROC_NUM_FDSr�  r   r§  rª  r²  r—   r‡   r   r  r  t  s(  € € € € € Ø;Ð;à3Ð3Ð3€Iðð ð ð
!ð !ð !ð Øðð ñ Ôñ „_ðð*ð *ð *ð,ð ,ð ,ð ðFð Fñ „_ðFð ðð ñ „_ðð2 ð/ð /ñ „_ð/ð4 ð+ð +ñ „_ð+ð ðð ñ „_ðð ðð ñ „_ðð ð
ð 
ñ „_ð
ð ð
ð 
ñ „_ð
ð ð
ð 
ñ „_ð
ð ð <à	ð	<ð 	<ñ 
Œð	<ð ð
ð 
ñ „_ð
ð #Ðàð=ð =ñ „_ð=ð ð'ð 'ñ „_ð'ð ð
ð 
ñ „_ð
ð ð	ð 	ñ „_ð	ð ðð ð ñ „_ðð0 ð@ð @ð @ñ „_ð@ð ð0ð 0ñ „_ð0ð ð7ð 7ñ „_ð7ð ð,ð ,ñ „_ð,ð
 ð
ð 
ñ „_ð
ð ðð ñ „_ðð !�jØÐ<ñô €Oð �*ØÐHñô €Kð"ð "ð "ð
 ð 	&à	ð	Ið 	Iñ 
Œð	Ið 	Ið &ˆ
ð ð #à	ð	ð 	ñ 
Œð	ð 	ð #ˆð ð 1Kà	ð	8ð 	8ñ 
Œð	8ð 
ð	ð 	ñ 
Œð	ð4 
ð	3ð 	3ñ 
Œð	3ð 
ð	Kð 	Kð 	Kñ 
Œð	Kð 	Kð 	KðM1Kð 1Kr‡   r  r—   )F)wr¶  Ú
contextlibrÚ   r-  rJ  Úcollectionsr   r   Ú	xml.etreer   rH  r   r   r	   ru   r
   rÒ   r   r   r   r   r   r   r   r   r   r   r   r   Ú__extra__all__ÚSIDLÚSTATUS_IDLEÚSRUNÚSTATUS_RUNNINGÚSSLEEPÚSTATUS_SLEEPINGÚSSTOPÚSTATUS_STOPPEDÚSZOMBr  ÚSWAITÚSTATUS_WAITINGÚSLOCKÚSTATUS_LOCKEDr  ÚSDEADÚSTATUS_WAKINGÚSONPROCÚTCPS_ESTABLISHEDÚCONN_ESTABLISHEDÚTCPS_SYN_SENTÚCONN_SYN_SENTÚTCPS_SYN_RECEIVEDÚCONN_SYN_RECVÚTCPS_FIN_WAIT_1ÚCONN_FIN_WAIT1ÚTCPS_FIN_WAIT_2ÚCONN_FIN_WAIT2ÚTCPS_TIME_WAITÚCONN_TIME_WAITÚTCPS_CLOSEDÚ
CONN_CLOSEÚTCPS_CLOSE_WAITÚCONN_CLOSE_WAITÚTCPS_LAST_ACKÚCONN_LAST_ACKÚTCPS_LISTENÚCONN_LISTENÚTCPS_CLOSINGÚCONN_CLOSINGÚPSUTIL_CONN_NONEÚ	CONN_NONErè   ÚgetpagesizeÚPAGESIZEÚAF_LINKrÖ   ÚHAS_PER_CPU_TIMESrn  r�  r»  Údictr  rK   rW   r^   Úpfullmemrb   re   rg   ri   r€   r†   r‰   r   r“   r’   r™   r¦   r³   rÁ   Ú
disk_usageÚdisk_io_countersrÐ   Únet_if_addrsrä   rç   rø   r  r  r	  r  r  r  r!  r/  Úcontextmanagerr3  r  r—   r‡   r   ú<module>rò     sc  ðð
 <Ð ;à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ø "Ð "Ð "Ð "Ð "Ð "Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø "Ð "Ð "Ð "Ð "Ð "ð €ð ð (àŒ	�7Ô&ØŒ	�7Ô)ØŒ�WÔ,ØŒ
�GÔ*ØŒ
�GÔ)ØŒ
�GÔ*ØŒ
�GÔ)ð€M€Mð ð àŒ	�7Ô&ØŒ�WÔ,ØŒ
�GÔ*ð 	Œ
�GÔ)ØŒ
�GÔ)ð 	Œ	�7Ô(ØŒ�gÔ,ð'€M€Mð* ð àŒ	�7Ô&ØŒ�WÔ,ØŒ
�GÔ*ØŒ
�GÔ)ØŒ	�7Ô(ØŒ�gÔ,ð€Mð 	Ô˜7Ô3ØÔ˜Ô-ØÔ˜GÔ1ØÔ˜'Ô0ØÔ˜'Ô0ØÔ˜Ô/ØÔ�gÔ(ØÔ˜'Ô1ØÔ˜Ô-ØÔ�gÔ)ØÔ�wÔ+ØÔ˜7Ô,ð€ð "ˆ:Ô!Ñ#Ô#€Ø
Ô
€à�G˜D /Ñ2Ô2Ð Ø�w˜tÐ%7Ñ8Ô8Ð Ø�g˜dÐ$5Ñ6Ô6Ð Ø�7˜4 Ñ0Ô0Ð à�ð ð ð Ø	
ˆðàˆ1ðð ˆQðð �!ð	ð
 ˆaðð ˆQðð �!ðð ˆaðð ˆ!ðð �ðð �Rðð �rðð �"ðð �2ðð ˆbðð  ˆRð!ð" �ð#ð$ �ð%ð& 	ˆð'ð( 	ˆð)ð* ˆBð+ð, ˆBð-ð. ˆRð/ð0 ˆ2ð1ð2 
ˆð3€ðH 	ˆ
Øð Lð Lð Lñ	Mô 	M€ð ˆJØÐ:Ð:Ð:ñ<ô <€	ð €z�&ÐAÐAÐAÑBÔB€à€àˆJ�{ØMÐMÐMñOô O€	ð �
ØÐAñCô C€ð ˆJØÐIñKô K€	ð ð CØˆj˜ð %2ð %2ð %2ñ 3ô 3€G€Gð
 ˆj˜ð %Bð %Bð %Bñ Cô C€Gð,ð ,ð ,ð^@ð @ð @ð4ð 4ð 4ð ð %ðð ð ð ð"ð ð ð  %€MÔð$ð $ð $ð
 ð  ˆfð  ð7ð 7ð 7ð 7ðð ð ð6Að Að Að@ ð 2ðð ð ð ð0 ð 2ð2ð 2ð 2ðð ð ð ð Ô €
ØÔ(Ð ð Ô&€ØÔ&€ðð ð ð0ð ð ð2 ð "ðBð Bð Bð ð ð ð0ð ð ð
ð ð ð* 	ðð ñ 	„ððð ð ð 
ð %ðð ð ð ð ð %ð!ð !ð !ð !ð Ô$€Jðð ð ðð ð ð0 Ôð/ð /ñ Ôð/ð"WKð WKð WKð WKð WKñ WKô WKð WKð WKð WKr‡   