Ë
    íéñi*Š  ã                   óÀ  — d Z ddlZddlZddlZddl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 ddlmZ 	 ddl	mZ  g d¢Z)dZ*d Z+d!ejX                  v Z- ej\                  d"d#d$i«      Z/e/j`                  Z0e jb                  e
jd                  e jf                  e
jh                  e jj                  e
jl                  e jn                  e
jp                  e jr                  e
jt                  e jv                  e
jx                  e jz                  e
j|                  e j~                  e
j€                  e j‚                  e
j„                  e j†                  e
jˆ                  e jŠ                  e
jŒ                  e jŽ                  e*e j�                  e
j’                  iZJ G d%„ d&ej\                  «      ZK eL«       j›                  eKjœ                  «        G d'„ d(ej\                  «      ZO eL«       j›                  eOjœ                  «        ePdti d)d“d*d“d+d,“d-d.“d/d0“d1d2“d3d“d4d5“d6d7“d8d9“d:d;“d<d=“d>d?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“dNdO“dPdQ“ŽZQ ej¤                  dR¬S«      dT„ «       ZSedU„ «       ZTdV„ ZUdW„ ZVe j®                  ZWe j°                  ZXe j²                  ZYdX„ ZZdY„ Z[dZ„ Z\d[„ Z]d\„ Z^d]„ Z_d^„ Z`d_„ Zad`ab ejÆ                  «       Zdda„ Zedb„ Zfdudc„Zgdd„ Zhde„ Zidf„ Zjdg„ Zkdaldh„ Zmdi„ Zndj„ Zodk„ Zp G dl„ dm«      Zqe jä                  Zre jæ                  Zse jè                  Ztdn„ Zudvdo„Zvdp„ Zwdq„ Zx G dr„ ds«      Zyy# e!$ rWZ" e#e"«      jI                  «       jK                  d«      r, ejL                  «       d   dk  rdZ'e'dz  Z'e'dz  Z' e(e'«      e"‚‚ dZ"["ww xY w)wz Windows platform implementation.é    Né   )Ú_common)Ú_ntuples)ÚENCODING)ÚAccessDenied)ÚNoSuchProcess)ÚTimeoutExpired)Ú	conn_tmap)Úconn_to_ntuple)Údebug)Úisfile_strict)Úmemoize)Úmemoize_when_activated)Úparse_environ_block)Úusage_percent)ÚABOVE_NORMAL_PRIORITY_CLASS)ÚBELOW_NORMAL_PRIORITY_CLASS)ÚHIGH_PRIORITY_CLASS)ÚIDLE_PRIORITY_CLASS)ÚNORMAL_PRIORITY_CLASS)ÚREALTIME_PRIORITY_CLASS)Ú_psutil_windowszdll load failedé   z3this Windows version is too old (< Windows Vista); z:psutil 3.4.2 is the latest version which supports Windows z2000, XP and 2003 server)Úwin_service_iterÚwin_service_getr   r   r   r   r   r   ÚIOPRIO_VERYLOWÚ
IOPRIO_LOWÚIOPRIO_NORMALÚIOPRIO_HIGHÚCONN_DELETE_TCBÚAF_LINKÚ
DELETE_TCBi+  Ú__pypy__ÚAddressFamilyr!   éÿÿÿÿc                   ó$   — e Zd ZeZeZeZeZeZeZy)ÚPriorityN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   © ó    úS/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/psutil/_pswindows.pyr'   r'   e   s&   „ Ø"=ÐØ"=ÐØ-ÐØ-ÐØ1ÐØ5Ñr,   r'   c                   ó   — e Zd ZdZdZdZdZy)Ú
IOPriorityr   r   é   é   N)r(   r)   r*   r   r   r   r   r+   r,   r-   r/   r/   q   s   „ Ø€NØ€JØ€MØ�Kr,   r/   Únum_handlesÚctx_switchesÚ	user_timer0   Úkernel_timer1   Úcreate_timeé   Únum_threadsé   Ú	io_rcountÚ	io_wcounté   Ú	io_rbytesé   Ú	io_wbytesé	   Úio_count_othersé
   Úio_bytes_othersé   Únum_page_faultsé   Ú	peak_wseté   Úwseté   Úpeak_paged_poolé   Ú
paged_poolé   Úpeak_non_paged_poolé   Únon_paged_poolé   Úpagefileé   Úpeak_pagefileé   Úmem_privateé   i   )Úmaxsizec                 óÜ  — | j                  d«      r| S dj                  | j                  d«      dd «      }|dv rJdj                  | j                  d«      dd «      }ddj                  | j                  d«      dd «      z   }n;|j                  d«      r| j                  d«      d   }nt        j                  |«      }| t        |«      d }t        j                  j                  ||«      S )	zÌConvert paths using native DOS format like:
        "\Device\HarddiskVolume1\Windows\systemew\file.txt" or
        "\??\C:\Windows\systemew\file.txt"
    into:
        "C:\Windows\systemew\file.txt".
    z\\ú\Nr1   >   ú\??\UNCú\Device\Mupr9   z\??\r0   )Ú
startswithÚjoinÚsplitÚcextÚQueryDosDeviceÚlenÚosÚpath)ÚsÚrawdriveÚdriveletterÚ	remainders       r-   Úconvert_dos_pathrj   ™   sÏ   € ð 	‡|�|�FÔØˆØ�y‰y˜Ÿ™ › r¨Ð*Ó+€HØÐ1Ñ1Ø—9‘9˜QŸW™W T›]¨2¨AÐ.Ó/ˆØ˜tŸy™y¨¯©°«°q¸Ð);Ó<Ñ<‰Ø	×	Ñ	˜XÔ	&Ø—g‘g˜d“m AÑ&‰ä×)Ñ)¨(Ó3ˆØ”#�h“-�/Ð"€IÜ�7‰7�<‰<˜ YÓ/Ð/r,   c                  ó*   — t        j                  «       S ©N)ra   Úgetpagesizer+   r,   r-   rm   rm   ¯   s   € ä×ÑÓÐr,   c                  ó¢   — t        j                  «       } | \  }}}}|}|}|}||z
  }t        ||z
  |d¬«      }	t        j                  |||	||«      S )z&System virtual memory as a namedtuple.r   ©Úround_)ra   Úvirtual_memr   ÚntpÚsvmem)
ÚmemÚtotphysÚ	availphysÚ_totsysÚ	_availsysÚtotalÚavailÚfreeÚusedÚpercents
             r-   Úvirtual_memoryr~   ¹   s_   € ä
×
Ñ
Ó
€CØ-0Ñ*€GˆY˜ Ø€EØ€EØ€DØ�5‰=€DÜ˜U U™]¨U¸1Ô=€GÜ�9‰9�U˜E 7¨D°$Ó7Ð7r,   c                  óü   — t        j                  «       } | d   }| d   }||z
  }|dkD  r&t        j                  «       }t        d|z  |z  «      }nd}d}||z
  }t	        |d«      }t        j                  ||||dd«      S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   r0   g{®Gáz„?ç        r   )ra   rq   Úswap_percentÚintÚroundrr   Ússwap)rt   Ú
total_physÚtotal_systemry   Úpercentswapr|   r{   r}   s           r-   Úswap_memoryrˆ   Å   s‘   € ä
×
Ñ
Ó
€Cà�Q‘€JØ�q‘6€Lð ˜:Ñ%€Eð
 ˆq‚yÜ×'Ñ'Ó)ˆÜ�4˜+Ñ%¨Ñ-Ó.‰àˆØˆà�4‰<€DÜ�K Ó#€GÜ�9‰9�U˜D $¨°°AÓ6Ð6r,   c                 óÎ   — t        | t        «      r| j                  t        d¬«      } t	        j
                  | «      \  }}}t        ||d¬«      }t        j                  ||||«      S )z'Return disk usage associated with path.Ústrict)Úerrorsr   ro   )	Ú
isinstanceÚbytesÚdecoder   ra   Ú
disk_usager   rr   Ú
sdiskusage)re   ry   r|   r{   r}   s        r-   r�   r�   ì   sX   € ä�$œÔð �{‰{œ8¨Hˆ{Ó5ˆÜŸ™¨Ó-Ñ€Eˆ4�Ü˜D %°Ô2€GÜ�>‰>˜%  t¨WÓ5Ð5r,   c                 óv   — t        j                  | «      }|D �cg c]  }t        j                  |Ž ‘Œ c}S c c}w )zReturn disk partitions.)ra   Údisk_partitionsrr   Ú	sdiskpart)ÚallÚrawlistÚxs      r-   r’   r’   ÷   s/   € ä×"Ñ" 3Ó'€GØ'.Ö/ !ŒC�M‰M˜1ÒÒ/Ð/ùÒ/s   š6c                  ó  — t        j                  «       \  } }}t        j                  t	        t        j
                  «       Ž D �cg c]  }t        |«      ‘Œ c}Ž }t        j                  | |||j                  |j                  «      S c c}w )z)Return system CPU times as a named tuple.)	ra   Ú	cpu_timesrr   Ú	scputimesÚzipÚper_cpu_timesÚsumÚ	interruptÚdpc)ÚuserÚsystemÚidleÚnÚpercpu_summeds        r-   r˜   r˜     st   € äŸ™Ó)Ñ€Dˆ&�$ô —M‘MÜœt×1Ñ1Ó3Ð4Ö	5�QŒ#ˆa�&Ò	5ð€Mô �=‰=Øˆf�d˜M×3Ñ3°]×5FÑ5Fóð ùò 
6s   ÁBc                  óœ   — g } t        j                  «       D ]2  \  }}}}}t        j                  |||||«      }| j	                  |«       Œ4 | S )z6Return system per-CPU times as a list of named tuples.)ra   r›   rr   r™   Úappend)ÚretrŸ   r    r¡   r�   rž   Úitems          r-   r›   r›     sS   € à
€CÜ.2×.@Ñ.@Ó.Bò Ñ*ˆˆf�d˜I sÜ�}‰}˜T 6¨4°¸CÓ@ˆØ�
‰
�4Õðð €Jr,   c                  ó*   — t        j                  «       S )z0Return the number of logical CPUs in the system.)ra   Úcpu_count_logicalr+   r,   r-   r©   r©     s   € ä×!Ñ!Ó#Ð#r,   c                  ó*   — t        j                  «       S )z-Return the number of CPU cores in the system.)ra   Úcpu_count_coresr+   r,   r-   r«   r«     s   € ä×ÑÓ!Ð!r,   c                  óh   — t        j                  «       \  } }}}d}t        j                  | |||«      S )zReturn CPU statistics.r   )ra   Ú	cpu_statsrr   Ú	scpustats)r3   Ú
interruptsÚ_dpcsÚsyscallsÚsoft_interruptss        r-   r­   r­   #  s1   € ä04·±Ó0@Ñ-€L�*˜e XØ€OÜ�=‰=˜ z°?ÀHÓMÐMr,   c                  óˆ   — t        j                  «       \  } }d}t        j                  t	        | «      |t	        |«      «      gS )zMReturn CPU frequency.
    On Windows per-cpu frequency is not supported.
    r€   )ra   Úcpu_freqrr   ÚscpufreqÚfloat)ÚcurrÚmax_Úmin_s      r-   r´   r´   *  s6   € ô —‘“�J€Dˆ$Ø€DÜ�L‰Lœ˜t› d¬E°$«KÓ8Ð9Ð9r,   Fc                  óN   — t        j                  «       } t        d„ | D «       «      S )Nc              3   ó4   K  — | ]  }t        |d «      –— Œ y­w)r0   N)rƒ   )Ú.0Úloads     r-   ú	<genexpr>z#_getloadavg_impl.<locals>.<genexpr>:  s   è ø€ Ò6 D”�t˜Q—Ñ6ùs   ‚)ra   Ú
getloadavgÚtuple)Ú	raw_loadss    r-   Ú_getloadavg_implrÂ   7  s   € ä—‘Ó!€IÜÑ6¨IÔ6Ó6Ð6r,   c                  ó¶   — t         r
t        «       S t        5  t         st        j                  «        da ddd«       t        «       S # 1 sw Y   t        «       S xY w)z„Return the number of processes in the system run queue averaged
    over the last 1, 5, and 15 minutes respectively as a tuple.
    TN)Ú_loadavg_initializedrÂ   Ú_lockra   Úinit_loadavg_counterr+   r,   r-   r¿   r¿   =  sN   € õ ÜÓ!Ð!ä	ñ (Ý#Ü×%Ñ%Ô'Ø#'Ð ÷(ô
 ÓÐ÷(ô
 ÓÐús   —AÁAc                 óò   — t         |    \  }}t        j                  |||«      }t        «       }|D ];  }|\  }}}	}
}}}t	        |||	|
||t
        |dk(  r|nd¬«      }|j                  |«       Œ= t        |«      S )zˆReturn socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    r%   N)Úpid)r
   ra   Únet_connectionsÚsetr   ÚTCP_STATUSESÚaddÚlist)ÚkindÚ_pidÚfamiliesÚtypesr•   r¦   r§   ÚfdÚfamÚtypeÚladdrÚraddrÚstatusrÈ   Únts                  r-   rÉ   rÉ   S  s’   € ô   ‘o�O€HˆeÜ×"Ñ" 4¨°5Ó9€GÜ
‹%€CØò ˆØ37Ñ0ˆˆC��u˜e V¨SÜØØØØØØÜØ˜r’z‘ tô	
ˆð 	�‰��ðô �‹9Ðr,   c                  óò   — i } t        j                  «       }|j                  «       D ]M  \  }}|\  }}}}t        t        d«      rt	        j
                  |«      }t        j                  ||||d«      | |<   ŒO | S )z)Get NIC stats (isup, duplex, speed, mtu).Ú	NicDuplexÚ )ra   Únet_if_statsÚitemsÚhasattrr   rÚ   rr   Ú	snicstats)r¦   ÚrawdictÚnamerÝ   ÚisupÚduplexÚspeedÚmtus           r-   rÜ   rÜ   j  sy   € à
€CÜ×ÑÓ!€GØ—}‘}“ò @‰ˆˆeØ#(Ñ ˆˆf�e˜SÜ”7˜KÔ(Ü×&Ñ& vÓ.ˆFÜ—M‘M $¨°°s¸BÓ?ˆˆDŠ	ð	@ð
 €Jr,   c                  ó*   — t        j                  «       S )zsReturn network I/O statistics for every network interface
    installed on the system as a dict of raw tuples.
    )ra   Únet_io_countersr+   r,   r-   rç   rç   v  s   € ô ×ÑÓ!Ð!r,   c                  ó*   — t        j                  «       S )z,Return the addresses associated to each NIC.)ra   Únet_if_addrsr+   r,   r-   ré   ré   }  s   € ä×ÑÓÐr,   c                  óþ   — t        j                  «       \  } }}}| dk(  }t        |dz  «      }t        |dz  «      }|ry|s|rt        j                  }n|dk(  rt        j
                  }t        j                  |||«      S )zReturn battery information.r   é€   r>   Nr%   )ra   Úsensors_batteryÚboolr   ÚPOWER_TIME_UNLIMITEDÚPOWER_TIME_UNKNOWNrr   Úsbattery)Úacline_statusÚflagsr}   ÚsecsleftÚpower_pluggedÚ
no_batteryÚchargings          r-   rì   rì   ‡  s{   € ô
 /3×.BÑ.BÓ.DÑ+€M�5˜' 8Ø! QÑ&€MÜ�e˜c‘kÓ"€JÜ�E˜A‘I‹€HáØÙ™Ü×/Ñ/‰Ø	�RŠÜ×-Ñ-ˆä�<‰<˜ ¨=Ó9Ð9r,   c                  ó’   — t        j                   «       t        j                  «       z
  } t        | t        z
  «      dk  rt        S | a| S )z�The system boot time expressed in seconds since the epoch. This
    also includes the time spent during hybernate / suspend.
    r   )Útimera   ÚuptimeÚabsÚ_last_btime)r¦   s    r-   Ú	boot_timerü   £  s<   € ô �)‰)‹+œŸ™›Ñ
%€CÜ
ˆ3”ÑÓ Ò"ÜÐàˆØˆ
r,   c                  ó    — g } t        j                  «       }|D ]2  }|\  }}}t        j                  |d||d«      }| j	                  |«       Œ4 | S )z:Return currently connected users as a list of namedtuples.N)ra   Úusersrr   Úsuserr¥   )Úretlistr•   r§   rŸ   ÚhostnameÚtstamprØ   s          r-   rþ   rþ   ³  sV   € à€GÜ�j‰j‹l€GØò ˆØ!%Ñˆˆh˜Ü�Y‰Y�t˜T 8¨V°TÓ:ˆØ�‰�rÕðð €Nr,   c               #   ó`   K  — t        j                  «       D ]  \  } }t        | |«      –— Œ y­w)z*Yields a list of WindowsService instances.N)ra   Úwinservice_enumerateÚWindowsService)rá   Údisplay_names     r-   r   r   Ã  s0   è ø€ ä"×7Ñ7Ó9ò 1ÑˆˆlÜ˜T <Ó0Ó0ñ1ùs   ‚,.c                 óN   — t        | d«      }|j                  «       d   |_        |S )zBOpen a Windows service and return it as a WindowsService instance.Nr  )r  Ú_query_configÚ_display_name)rá   Úservices     r-   r   r   É  s)   € ä˜T 4Ó(€GØ#×1Ñ1Ó3°NÑC€GÔØ€Nr,   c                   ó”   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ej                  d	„ «       Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r  z(Represents an installed Windows service.c                 ó    — || _         || _        y rl   )Ú_namer	  )Úselfrá   r  s      r-   Ú__init__zWindowsService.__init__Ó  s   € ØˆŒ
Ø)ˆÕr,   c                 óp   — d| j                   ›d| j                  ›d�}| j                  j                  › |› �S )Nz(name=z, display_name=ú))r  r	  Ú	__class__r(   )r  Údetailss     r-   Ú__str__zWindowsService.__str__×  s;   € Ø˜4Ÿ:™:˜.¨¸×8JÑ8JÐ7MÈQÐOˆØ—.‘.×)Ñ)Ð*¨7¨)Ð4Ð4r,   c                 óB   — d| j                  «       › dt        | «      › d�S )Nú<z at ú>)r  Úid©r  s    r-   Ú__repr__zWindowsService.__repr__Û  s"   € Ø�4—<‘<“>Ð" $¤r¨$£x j°Ð2Ð2r,   c                 ó`   — t        |t        «      st        S | j                  |j                  k(  S rl   )rŒ   r  ÚNotImplementedr  ©r  Úothers     r-   Ú__eq__zWindowsService.__eq__Þ  s'   € ô ˜%¤Ô0Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(r,   c                 ó   — | |k(   S rl   r+   r  s     r-   Ú__ne__zWindowsService.__ne__å  s   € Ø˜5‘=Ð Ð r,   c                 ó²   — | j                  «       5  t        j                  | j                  «      \  }}}}d d d «       t	        ¬«      S # 1 sw Y   ŒxY w)N)r  ÚbinpathÚusernameÚ
start_type)Ú_wrap_exceptionsra   Úwinservice_query_configr  Údict)r  r  r#  r$  r%  s        r-   r  zWindowsService._query_configè  s]   € Ø×"Ñ"Ó$ñ 	ä×,Ñ,¨T¯Z©ZÓ8ñ 8ˆL˜' 8¨Z÷	ô
 Ø%ØØØ!ô	
ð 	
÷	ð 	ús   ‘%AÁAc                 ó¸   — | j                  «       5  t        j                  | j                  «      \  }}d d d «       dk(  rd }t	        |¬«      S # 1 sw Y   ŒxY w)Nr   )r×   rÈ   )r&  ra   Úwinservice_query_statusr  r(  )r  r×   rÈ   s      r-   Ú_query_statuszWindowsService._query_statusõ  sX   € Ø×"Ñ"Ó$ñ 	CÜ×6Ñ6°t·z±zÓB‰KˆF�C÷	Cà�!Š8ØˆCÜ˜6 sÔ+Ð+÷		Cð 	Cús   ‘#AÁAc              #   ó  K  — 	 d–— y# t         $ rs}| j                  }t        |«      rd|›d�}t        d||¬«      |‚|j                  t
        j                  t
        j                  hv rd|›d�}t        d||¬«      |‚‚ d}~ww xY w­w)z{Ctx manager which translates bare OSError and WindowsError
        exceptions into NoSuchProcess and AccessDenied.
        Nzservice z( is not querable (not enough privileges)©rÈ   rá   Úmsgz does not exist)	ÚOSErrorr  Úis_permission_errr   Úwinerrorra   ÚERROR_INVALID_NAMEÚERROR_SERVICE_DOES_NOT_EXISTr   )r  Úerrrá   r.  s       r-   r&  zWindowsService._wrap_exceptionsü  sš   è ø€ ð
	ÜøÜò 	Ø—:‘:ˆDÜ  Ô%à˜t˜hÐ&NÐOð ô # t°$¸CÔ@ÀcÐIØ—‘Ü×'Ñ'Ü×1Ñ1ð"ñ ð !  ¨Ð8�Ü#¨°4¸SÔAÀsÐJàûð	üs%   ‚B„	 ˆB‰	B’A.B Â BÂBc                 ó   — | j                   S )z¢The service name. This string is how a service is referenced
        and can be passed to win_service_get() to get a new
        WindowsService instance.
        )r  r  s    r-   rá   zWindowsService.name  s   € ð
 �z‰zÐr,   c                 ó   — | j                   S )z_The service display name. The value is cached when this class
        is instantiated.
        )r	  r  s    r-   r  zWindowsService.display_name  s   € ð ×!Ñ!Ð!r,   c                 ó(   — | j                  «       d   S )zwThe fully qualified path to the service binary/exe file as
        a string, including command line arguments.
        r#  ©r  r  s    r-   r#  zWindowsService.binpath"  s   € ð ×!Ñ!Ó# IÑ.Ð.r,   c                 ó(   — | j                  «       d   S )z,The name of the user that owns this service.r$  r8  r  s    r-   r$  zWindowsService.username(  s   € à×!Ñ!Ó# JÑ/Ð/r,   c                 ó(   — | j                  «       d   S )zRA string which can either be "automatic", "manual" or
        "disabled".
        r%  r8  r  s    r-   r%  zWindowsService.start_type,  s   € ð ×!Ñ!Ó# LÑ1Ð1r,   c                 ó(   — | j                  «       d   S )zzThe process PID, if any, else None. This can be passed
        to Process class to control the service's process.
        rÈ   ©r+  r  s    r-   rÈ   zWindowsService.pid4  s   € ð ×!Ñ!Ó# EÑ*Ð*r,   c                 ó(   — | j                  «       d   S )zService status as a string.r×   r<  r  s    r-   r×   zWindowsService.status:  s   € à×!Ñ!Ó# HÑ-Ð-r,   c                 óH   — t        j                  | j                  «       «      S )zService long description.)ra   Úwinservice_query_descrrá   r  s    r-   ÚdescriptionzWindowsService.description>  s   € ä×*Ñ*¨4¯9©9«;Ó7Ð7r,   c                 óÖ   — | j                  «       }|j                  | j                  «       «       | j                  «       |d<   | j	                  «       |d<   | j                  «       |d<   |S )zUUtility method retrieving all the information above as a
        dictionary.
        rá   r  r@  )r  Úupdater+  rá   r  r@  )r  Úds     r-   Úas_dictzWindowsService.as_dictD  sa   € ð ×ÑÓ ˆØ	�‰�×#Ñ#Ó%Ô&Ø—I‘I“Kˆˆ&‰	Ø ×-Ñ-Ó/ˆˆ.ÑØ×+Ñ+Ó-ˆˆ-ÑØˆr,   N)r(   r)   r*   Ú__doc__r  r  r  r  r!  r  r+  Ú
contextlibÚcontextmanagerr&  rá   r  r#  r$  r%  rÈ   r×   r@  rD  r+   r,   r-   r  r  Ð  so   „ Ù2ò*ò5ò3ò)ò!ò
ò,ð ×Ññó ðò0ò"ò/ò0ò2ò+ò.ò8ó	r,   r  c                 ó¬   — t        | t        «      sJ | «       ‚t        | t        «      xs, | j                  t        j
                  t        j                  hv S )z*Return True if this is a permission error.)rŒ   r/  ÚPermissionErrorr1  ra   ÚERROR_ACCESS_DENIEDÚERROR_PRIVILEGE_NOT_HELD)Úexcs    r-   r0  r0  �  sN   € ä�cœ7Ô#Ð( SÓ(Ð#Ü�cœ?Ó+ò ¨s¯|©|Ü× Ñ Ü×%Ñ%ð@ð 0ð r,   c                 óž   — t        | t        «      sJ | «       ‚t        | «      rt        ||¬«      S t        | t        «      rt        ||¬«      S | ‚)z3Convert OSError into NoSuchProcess or AccessDenied.©rÈ   rá   )rŒ   r/  r0  r   ÚProcessLookupErrorr   )rL  rÈ   rá   s      r-   Úconvert_oserrorrP  Š  sI   € ä�cœ7Ô#Ð( SÓ(Ð#Ü˜ÔÜ ¨$Ô/Ð/Ü�#Ô)Ô*Ü ¨4Ô0Ð0Ø
€Ir,   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )zDDecorator which converts OSError into NoSuchProcess or AccessDenied.c                 ó†   •— 	  ‰| g|¢­i |¤ŽS # t         $ r(}t        || j                  | j                  ¬«      |‚d }~ww xY w)NrN  )r/  rP  rÈ   r  )r  ÚargsÚkwargsr4  Úfuns       €r-   Úwrapperz wrap_exceptions.<locals>.wrapper—  sI   ø€ ð	OÙ�tÐ-˜dÒ- fÑ-Ð-øÜò 	OÜ! #¨4¯8©8¸$¿*¹*ÔEÈ3ÐNûð	Oús   ƒ �	A ˜#;»A ©Ú	functoolsÚwraps©rU  rV  s   ` r-   Úwrap_exceptionsr[  ”  s)   ø€ ô ‡_�_�SÓóOó ðOð €Nr,   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )z�Workaround for https://github.com/giampaolo/psutil/issues/875.
    See: https://stackoverflow.com/questions/4457745#4457745.
    c                 ó@  •— d}d}t        |«      D ]  }	  ‰| g|¢­i |¤Žc S  ‰› d|› d› �}t        | j                  | j                  |¬«      ‚# t        $ rD}|}|j                  t        k(  r)t	        j
                  |«       t        |dz  d«      }Y d }~Œ†‚ d }~ww xY w)Nç-Cëâ6?é!   r0   ç{®Gáz¤?z	 retried z: times, converted to AccessDenied as it's still returning r-  )
Úranger/  r1  ÚERROR_PARTIAL_COPYrø   ÚsleepÚminr   rÈ   r  )	r  rS  rT  ÚdelayÚtimesÚ_r4  r.  rU  s	           €r-   rV  z)retry_error_partial_copy.<locals>.wrapper¦  sº   ø€ àˆØˆÜ�u“ò 		ˆAðÙ˜4Ð1 $Ò1¨&Ñ1Ò1ð		ð ˆe�9˜U˜Gð $Ø"˜eð%ð 	ô ˜tŸx™x¨d¯j©j¸cÔBÐBøô ò Ø�Ø—<‘<Ô#5Ò5Ü—J‘J˜uÔ%Ü ¨¡	¨4Ó0�EÜØûðús   •AÁ	BÁ9BÂBÂBrW  rZ  s   ` r-   Úretry_error_partial_copyrh  ¡  s)   ø€ ô
 ‡_�_�SÓóCó ðCð& €Nr,   c                   ó@  — e Zd ZdZg d¢Zd„ Zd„ Zd„ Zed„ «       Z	d„ Z
eed„ «       «       Zeed	„ «       «       Zeed
„ «       «       Zd„ Zd„ Zed„ «       Zed„ «       Zd„ Zed„ «       Zed„ «       Zed(d„«       Zed„ «       Zed)d„«       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zeed„ «       «       Zed„ «       Z ed*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d'„ «       Z+y)+ÚProcessz1Wrapper class around underlying C implementation.)Ú_cacher  Ú_ppidrÈ   c                 ó.   — || _         d | _        d | _        y rl   )rÈ   r  rl  )r  rÈ   s     r-   r  zProcess.__init__Â  s   € ØˆŒØˆŒ
Øˆ�
r,   c                 óp   — | j                   j                  | «       | j                  j                  | «       y rl   )Ú
_proc_infoÚcache_activateÚexer  s    r-   Úoneshot_enterzProcess.oneshot_enterÉ  s&   € Ø�‰×&Ñ& tÔ,Ø�‰×Ñ Õ%r,   c                 óp   — | j                   j                  | «       | j                  j                  | «       y rl   )ro  Úcache_deactivaterq  r  s    r-   Úoneshot_exitzProcess.oneshot_exitÍ  s&   € Ø�‰×(Ñ(¨Ô.Ø�‰×!Ñ! $Õ'r,   c                 ó~   — t        j                  | j                  «      }t        |«      t        t        «      k(  sJ ‚|S )zOReturn multiple information about this process as a
        raw tuple.
        )ra   Ú	proc_inforÈ   rc   Ú	pinfo_map©r  r¦   s     r-   ro  zProcess._proc_infoÑ  s1   € ô
 �n‰n˜TŸX™XÓ&ˆÜ�3‹xœ3œy›>Ò)Ð)Ð)Øˆ
r,   c                 óœ   — | j                   dk(  ry| j                   dk(  ryt        j                  j                  | j	                  «       «      S )zbReturn process name, which on Windows is always the final
        part of the executable.
        r   zSystem Idle Processr7   ÚSystem)rÈ   rd   re   Úbasenamerq  r  s    r-   rá   zProcess.nameÚ  s;   € ð �8‰8�qŠ=Ø(Ø�8‰8�qŠ=ØÜ�w‰w×Ñ §¡£
Ó+Ð+r,   c                 ój  — t         r!	 t        j                  | j                  «      }nt        j                  | j                  «      }|j                  d«      rt        |«      S |S # t        $ rD}|j
                  dk(  r/t        |›d�«       t        | j                  | j                  «      |‚‚ d }~ww xY w)Né   z translated into AccessDeniedr[   )ÚPYPYra   Úproc_exerÈ   r/  Úerrnor   r   r  r^   rj   )r  rq  r4  s      r-   rq  zProcess.exeæ  s—   € õ ðÜ—m‘m D§H¡HÓ-‘ô —-‘- §¡Ó)ˆCØ�>‰>˜$ÔÜ# CÓ(Ð(Øˆ
øô ò ð —9‘9 ’?Ü˜S˜GÐ#@ÐAÔBÜ& t§x¡x°·±Ó<À#ÐEØûðús   ˆA% Á%	B2Á.?B-Â-B2c                 óP  — t         j                  t         j                  k\  r"	 t        j                  | j                  d¬«      S t        j                  | j                  d¬«      S # t
        $ r7}t        |«      r&t        j                  | j                  d¬«      cY d }~S ‚ d }~ww xY w)NT)Úuse_pebF)ra   ÚWINVERÚWINDOWS_8_1Úproc_cmdlinerÈ   r/  r0  ©r  r4  s     r-   ÚcmdlinezProcess.cmdlineù  s   € ô �;‰;œ$×*Ñ*Ò*ðÜ×(Ñ(¨¯©¸4Ô@Ð@ô ×$Ñ$ T§X¡X°tÔ<Ð<øô ò Ü$ SÔ)Ü×,Ñ,¨T¯X©X¸uÔEÕEàûð	ús#   £ A% Á%	B%Á.+B ÂB%ÂB Â B%c                 óV   — t        j                  | j                  «      }t        |«      S rl   )ra   Úproc_environrÈ   r   )r  rf   s     r-   ÚenvironzProcess.environ	  s#   € ô ×Ñ˜dŸh™hÓ'ˆÜ" 1Ó%Ð%r,   c                 óŽ   — 	 t        «       | j                     S # t        $ r" t        | j                  | j                  «      d ‚w xY wrl   )Úppid_maprÈ   ÚKeyErrorr   r  r  s    r-   ÚppidzProcess.ppid  sA   € ð	@Ü“:˜dŸh™hÑ'Ð'øÜò 	@Ü §¡¨$¯*©*Ó5¸4Ð?ð	@ús	   ‚ ™+Ac                 óœ  — 	 t        j                  | j                  «      S # t        $ r¡}t	        |«      r�t        d«       | j                  «       }|t        d      |t        d      |t        d      |t        d      |t        d      |t        d      |t        d      |t        d	      |t        d
      |t        d      f
cY d }~S ‚ d }~ww xY w)Nz*attempting memory_info() fallback (slower)rE   rG   rI   rK   rM   rO   rQ   rS   rU   rW   )ra   Úproc_memory_inforÈ   r/  r0  r   ro  rx  )r  r4  Úinfos      r-   Ú_get_raw_meminfozProcess._get_raw_meminfo  sà   € ð	Ü×(Ñ(¨¯©Ó2Ð2øÜò 	Ü  Ô%ô ÐBÔCØ—‘Ó(�àœÐ#4Ñ5Ñ6Øœ ;Ñ/Ñ0Øœ 6Ñ*Ñ+ØœÐ#4Ñ5Ñ6Øœ <Ñ0Ñ1ØœÐ#8Ñ9Ñ:ØœÐ#3Ñ4Ñ5Øœ :Ñ.Ñ/Øœ ?Ñ3Ñ4Øœ =Ñ1Ñ2ðõ ð ûð%	ús!   ‚! ¡	CªBCÂ?CÃCÃCc                 ód   — | j                  «       }|d   }|d   }t        j                  ||f|z   Ž S )Nr0   r<   )r“  rr   Úpmem)r  ÚtÚrssÚvmss       r-   Úmemory_infozProcess.memory_info,  s;   € ð
 ×!Ñ!Ó#ˆØ�‰dˆØ�‰dˆÜ�x‰x˜#˜s˜ a™Ð(Ð(r,   c                 ó¦   — | j                  «       }t        j                  | j                  «      }|t	        «       z  }t        j                  ||fz   Ž S rl   )r™  ra   Úproc_memory_ussrÈ   rm   rr   Úpfullmem)r  Ú	basic_memÚusss      r-   Úmemory_full_infozProcess.memory_full_info6  sF   € à×$Ñ$Ó&ˆ	Ü×"Ñ" 4§8¡8Ó,ˆØŒ{‹}ÑˆÜ�|‰|˜Y¨#¨Ñ/Ð0Ð0r,   c              #   ó  K  — 	 t        j                  | j                  «      }|D ]%  \  }}}}t        |«      }t	        |«      }||||f–— Œ' y # t
        $ r'}t        || j                  | j                  «      |‚d }~ww xY w­wrl   )ra   Úproc_memory_mapsrÈ   rj   Úhexr/  rP  r  )r  ÚrawÚaddrÚpermre   r—  r4  s          r-   Úmemory_mapszProcess.memory_maps=  s‰   è ø€ ð
	.Ü×'Ñ'¨¯©Ó1ˆCð *-ò .Ñ%��d˜D #Ü'¨Ó-�Ü˜4“y�Ø˜T 4¨Ð-Ó-ñ.øô ò 	Fô " # t§x¡x°·±Ó<À#ÐEûð	Füs'   ‚B„A £+BÁ	A>Á"A9Á9A>Á>Bc                 ó@   — t        j                  | j                  «      S rl   )ra   Ú	proc_killrÈ   r  s    r-   ÚkillzProcess.killJ  s   € ä�~‰~˜dŸh™hÓ'Ð'r,   c                 ó  — |t         j                  k(  r t        j                  | j                  «       y |t         j
                  t         j                  hv r!t        j                  | j                  |«       y d}t        |«      ‚)NzPonly SIGTERM, CTRL_C_EVENT and CTRL_BREAK_EVENT signals are supported on Windows)
ÚsignalÚSIGTERMra   r¨  rÈ   ÚCTRL_C_EVENTÚCTRL_BREAK_EVENTrd   r©  Ú
ValueError)r  Úsigr.  s      r-   Úsend_signalzProcess.send_signalN  s_   € à”&—.‘.Ò Ü�N‰N˜4Ÿ8™8Õ$Ø”V×(Ñ(¬&×*AÑ*AÐBÑBÜ�G‰G�D—H‘H˜cÕ"ð+ð ô ˜S“/Ð!r,   Nc                 ó`  — |€t         j                  }nt        |dz  «      }t        t        dt        j                  «      }|�
 |«       |z   nd }	 t        j
                  | j                  |«      }d}	 t        | j                  «      s|S |r, |«       |k\  r"t        || j                  | j                  ¬«      ‚t	        j                  |«       t        |dz  d«      }Œj# t         j                  $ r'}t        || j                  | j                  «      |‚d }~wt         j                  $ r d }Y Œ¼w xY w)Niè  Ú	monotonicr^  rN  r0   r`  )ra   ÚINFINITEr‚   Úgetattrrø   Ú	proc_waitrÈ   r	   r  ÚTimeoutAbandonedÚ
pid_existsrc  rd  )r  ÚtimeoutÚcext_timeoutÚtimerÚstop_atÚ	exit_coder4  re  s           r-   ÚwaitzProcess.wait[  s  € àˆ?ÜŸ=™=‰Lô ˜w¨™~Ó.ˆLäœ˜k¬4¯9©9Ó5ˆØ'.Ð':‘%“'˜GÒ#Àˆð	ô Ÿ™ t§x¡x°Ó>ˆIð& ˆØÜ˜dŸh™hÔ'Ø Ð Ù™5›7 gÒ-Ü$ W°$·(±(ÀÇÁÔLÐLÜ�J‰J�uÔÜ˜ ™	 4Ó(ˆEð øô' ×"Ñ"ò 	Iä  ¨$¯(©(°D·J±JÓ?ÀSÐHûÜ×$Ñ$ò 		ð ŠIð		ús   Á C ÃD-Ã0"DÄD-Ä,D-c                 ór   — | j                   dv ryt        j                  | j                   «      \  }}|› d|› �S )N¾   r   r7   zNT AUTHORITY\SYSTEMr[   )rÈ   ra   Úproc_username)r  ÚdomainrŸ   s      r-   r$  zProcess.username†  s:   € à�8‰8�vÑØ)Ü×)Ñ)¨$¯(©(Ó3‰ˆ�Ø�˜˜D˜6Ð"Ð"r,   c                 óâ   — 	 t        j                  | j                  «      \  }}}|S # t        $ r>}t	        |«      r-|r‚ t        d«       | j                  «       t        d      cY d }~S ‚ d }~ww xY w)Nz*attempting create_time() fallback (slower)r6   )ra   Ú
proc_timesrÈ   r/  r0  r   ro  rx  )r  Ú	fast_onlyÚ_userÚ_systemÚcreatedr4  s         r-   r6   zProcess.create_time�  sf   € ð		Ü&*§o¡o°d·h±hÓ&?Ñ#ˆE�7˜GØˆNøÜò 	Ü  Ô%ÙØÜÐBÔCØ—‘Ó(¬°=Ñ)AÑBÕBØûð	ús    ‚$' §	A.°2A)Á"A.Á(A)Á)A.c                 ó6   — | j                  «       t        d      S )Nr8   )ro  rx  r  s    r-   r8   zProcess.num_threadsœ  s   € à�‰Ó ¤¨=Ñ!9Ñ:Ð:r,   c                 ó®   — t        j                  | j                  «      }g }|D ].  \  }}}t        j                  |||«      }|j                  |«       Œ0 |S rl   )ra   Úproc_threadsrÈ   rr   Úpthreadr¥   )r  r•   r   Ú	thread_idÚutimeÚstimeÚntuples          r-   ÚthreadszProcess.threads   sV   € ä×#Ñ# D§H¡HÓ-ˆØˆØ'.ò 	#Ñ#ˆI�u˜eÜ—[‘[ ¨E°5Ó9ˆFØ�N‰N˜6Õ"ð	#ð ˆr,   c                 ó$  — 	 t        j                  | j                  «      \  }}}t        j                  ||dd«      S # t        $ rI}t	        |«      s‚ t        d«       | j                  «       }|t        d      }|t        d      }Y d }~Œed }~ww xY w)Nz(attempting cpu_times() fallback (slower)r4   r5   r€   )
ra   rÄ  rÈ   r/  r0  r   ro  rx  rr   Ú	pcputimes)r  rŸ   r    Ú_createdr4  r’  s         r-   r˜   zProcess.cpu_times©  s‡   € ð	4Ü%)§_¡_°T·X±XÓ%>Ñ"ˆD�&˜(ô �}‰}˜T 6¨3°Ó4Ð4øô ò 	4Ü$ SÔ)ØÜÐ<Ô=Ø—?‘?Ó$ˆDØœ	 +Ñ.Ñ/ˆDØœ) MÑ2Ñ3�Fûð	4ús   ‚#= ½	BÁ?B
Â
Bc                 óD   — t        j                  | j                  d«       y )NT©ra   Úproc_suspend_or_resumerÈ   r  s    r-   ÚsuspendzProcess.suspend·  s   € ä×#Ñ# D§H¡H¨dÕ3r,   c                 óD   — t        j                  | j                  d«       y )NFrÖ  r  s    r-   ÚresumezProcess.resume»  s   € ä×#Ñ# D§H¡H¨eÕ4r,   c                 óÚ   — | j                   dv r t        | j                   | j                  «      ‚t        j                  | j                   «      }t
        j                  j                  |«      S )NrÀ  )rÈ   r   r  ra   Úproc_cwdrd   re   Únormpath)r  re   s     r-   ÚcwdzProcess.cwd¿  sN   € ð �8‰8�vÑÜ˜tŸx™x¨¯©Ó4Ð4ô �}‰}˜TŸX™XÓ&ˆÜ�w‰w×Ñ Ó%Ð%r,   c                 ó  — | j                   dv rg S t        «       }t        j                  | j                   «      }|D ]@  }t	        |«      }t        |«      sŒt        j                  |d«      }|j                  |«       ŒB t        |«      S )NrÀ  r%   )
rÈ   rÊ   ra   Úproc_open_filesrj   r   rr   Ú	popenfilerÌ   rÍ   )r  r¦   Úraw_file_namesÚfilerÐ  s        r-   Ú
open_fileszProcess.open_filesÉ  sx   € à�8‰8�vÑØˆIÜ‹eˆô
 ×-Ñ-¨d¯h©hÓ7ˆØ"ò 	 ˆDÜ# DÓ)ˆDÜ˜TÕ"ÜŸ™ t¨RÓ0�Ø—‘˜•ð		 ô
 �C‹yÐr,   c                 ó0   — t        || j                  ¬«      S )N)rÏ   )rÉ   rÈ   )r  rÎ   s     r-   rÉ   zProcess.net_connectionsÚ  s   € ä˜t¨$¯(©(Ô3Ð3r,   c                 óZ   — t        j                  | j                  «      }t        |«      }|S rl   )ra   Úproc_priority_getrÈ   r'   ©r  Úvalues     r-   Únice_getzProcess.nice_getÞ  s$   € ä×&Ñ& t§x¡xÓ0ˆÜ˜“ˆØˆr,   c                 óB   — t        j                  | j                  |«      S rl   )ra   Úproc_priority_setrÈ   rè  s     r-   Únice_setzProcess.nice_setä  s   € ä×%Ñ% d§h¡h°Ó6Ð6r,   c                 óZ   — t        j                  | j                  «      }t        |«      }|S rl   )ra   Úproc_io_priority_getrÈ   r/   ry  s     r-   Ú
ionice_getzProcess.ionice_getè  s$   € ä×'Ñ'¨¯©Ó1ˆÜ˜‹oˆØˆ
r,   c                 ó  — |rd}t        |«      ‚|t        j                  t        j                  t        j                  t        j
                  hvr|› d�}t        |«      ‚t        j                  | j                  |«       y )Nz&value argument not accepted on Windowsz is not a valid priority)
Ú	TypeErrorr/   r   r   r   r   r¯  ra   Úproc_io_priority_setrÈ   )r  Úioclassré  r.  s       r-   Ú
ionice_setzProcess.ionice_setî  sr   € áØ:ˆCÜ˜C“.Ð ØÜ×%Ñ%Ü×!Ñ!Ü×$Ñ$Ü×"Ñ"ð	
ñ 
ð �IÐ5Ð6ˆCÜ˜S“/Ð!Ü×!Ñ! $§(¡(¨GÕ4r,   c           	      óh  — 	 t        j                  | j                  «      }t        j                  |Ž S # t        $ ru}t	        |«      s‚ t        d«       | j                  «       }|t        d      |t        d      |t        d      |t        d      |t        d      |t        d      f}Y d }~Œ‹d }~ww xY w)Nz*attempting io_counters() fallback (slower)r:   r;   r=   r?   rA   rC   )
ra   Úproc_io_countersrÈ   r/  r0  r   ro  rx  rr   Úpio)r  r¦   r4  r’  s       r-   Úio_counterszProcess.io_countersý  s´   € ð	Ü×'Ñ'¨¯©Ó1ˆCô �w‰w˜ˆ}Ðøô ò 	Ü$ SÔ)ØÜÐ>Ô?Ø—?‘?Ó$ˆDà”Y˜{Ñ+Ñ,Ø”Y˜{Ñ+Ñ,Ø”Y˜{Ñ+Ñ,Ø”Y˜{Ñ+Ñ,Ø”YÐ0Ñ1Ñ2Ø”YÐ0Ñ1Ñ2ð�Cûð	ús   ‚3 ³	B1¼A+B,Â,B1c                 ó„   — t        j                  | j                  «      }|rt        j                  S t        j
                  S rl   )ra   Úproc_is_suspendedrÈ   r   ÚSTATUS_STOPPEDÚSTATUS_RUNNING)r  Ú	suspendeds     r-   r×   zProcess.status  s1   € ä×*Ñ*¨4¯8©8Ó4ˆ	ÙÜ×)Ñ)Ð)ä×)Ñ)Ð)r,   c                 óV   — d„ }t        j                  | j                  «      } ||«      S )Nc                 óP   — t        d«      D �cg c]  }d|z  | z  sŒ|‘Œ c}S c c}w )Né@   r   )ra  )r–   Úis     r-   Úfrom_bitmaskz.Process.cpu_affinity_get.<locals>.from_bitmask  s$   € Ü$ R›yÖ9˜!¨Q°!©V°q«L’AÒ9Ð9ùÒ9s   Ž#œ#)ra   Úproc_cpu_affinity_getrÈ   )r  r  Úbitmasks      r-   Úcpu_affinity_getzProcess.cpu_affinity_get  s(   € ò	:ô ×,Ñ,¨T¯X©XÓ6ˆÙ˜GÓ$Ð$r,   c                 ó  — d„ }t        t        t        t        «       «      «      «      }|D ]7  }||vsŒt	        |t
        «      sd|›d�}t        |«      ‚d|›�}t        |«      ‚  ||«      }t        j                  | j                  |«       y )Nc                 óL   — | sd| ›�}t        |«      ‚d}| D ]
  }|d|z  z  }Œ |S )Nzinvalid argument r   r0   )r¯  )Úlsr.  ÚoutÚbs       r-   Ú
to_bitmaskz,Process.cpu_affinity_set.<locals>.to_bitmask"  sA   € ÙØ)¨"¨Ð0�Ü  “oÐ%ØˆCØò �Ø�q˜!‘t‘‘ðàˆJr,   zinvalid CPU z; an integer is required)rÍ   ra  rc   r›   rŒ   r‚   rò  r¯  ra   Úproc_cpu_affinity_setrÈ   )r  ré  r  ÚallcpusÚcpur.  r  s          r-   Úcpu_affinity_setzProcess.cpu_affinity_set   s�   € ò	ô ”uœS¤£Ó1Ó2Ó3ˆØò 	&ˆCØ˜'Ò!Ü! #¤sÔ+Ø(¨¨Ð/GÐH�CÜ# C›.Ð(Ø$ S GÐ,�Ü  “oÐ%ð	&ñ ˜UÓ#ˆÜ×"Ñ" 4§8¡8¨WÕ5r,   c                 óÐ   — 	 t        j                  | j                  «      S # t        $ r;}t	        |«      r*t        d«       | j                  «       t        d      cY d }~S ‚ d }~ww xY w)Nz*attempting num_handles() fallback (slower)r2   )ra   Úproc_num_handlesrÈ   r/  r0  r   ro  rx  r‡  s     r-   r2   zProcess.num_handles:  sW   € ð	Ü×(Ñ(¨¯©Ó2Ð2øÜò 	Ü  Ô%ÜÐBÔCØ—‘Ó(¬°=Ñ)AÑBÕBØûð		ús    ‚! ¡	A%ª/A ÁA%ÁA Á A%c                 ób   — | j                  «       t        d      }t        j                  |d«      S )Nr3   r   )ro  rx  rr   Úpctxsw)r  r3   s     r-   Únum_ctx_switcheszProcess.num_ctx_switchesD  s)   € à—‘Ó(¬°>Ñ)BÑCˆä�z‰z˜,¨Ó*Ð*r,   rl   )F)Úinet),r(   r)   r*   rE  Ú	__slots__r  rr  ru  r   ro  rá   r[  rq  rh  rˆ  r‹  r�  r“  r™  rŸ  r¦  r©  r±  r¾  r$  r6   r8   rÑ  r˜   rØ  rÚ  rÞ  rä  rÉ   rê  rí  rð  rõ  rù  r×   r  r  r2   r  r+   r,   r-   rj  rj  ½  s“  „ Ù;â3€Iòò&ò(ð ñó ðò
,ð Øñó ó ðð" Øñ=ó ó ð=ð Øñ&ó ó ð&ò@òð. ñ)ó ð)ð ñ1ó ð1ò.ð ñ(ó ð(ð ñ
"ó ð
"ð ò()ó ð()ðT ñ#ó ð#ð òó ðð ñ;ó ð;ð ñó ðð ñ5ó ð5ð ñ4ó ð4ð ñ5ó ð5ð Øñ&ó ó ð&ð ñó ðð  ò4ó ð4ð ñó ðð
 ñ7ó ð7ð ñó ðð
 ñ5ó ð5ð ñó ðð$ ñ*ó ð*ð ñ%ó ð%ð ñ6ó ð6ð2 ñó ðð ñ+ó ñ+r,   rj  r+   )r%   )NN)zrE  rF  ÚenumrX  rd   r«  ÚsysÚ	threadingrø   rÛ   r   r   rr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ra   ÚImportErrorr4  ÚstrÚlowerr^   Úgetwindowsversionr.  ÚRuntimeErrorÚ__extra__all__r    rb  Úbuiltin_module_namesr  ÚIntEnumr$   r!   ÚMIB_TCP_STATE_ESTABÚCONN_ESTABLISHEDÚMIB_TCP_STATE_SYN_SENTÚCONN_SYN_SENTÚMIB_TCP_STATE_SYN_RCVDÚCONN_SYN_RECVÚMIB_TCP_STATE_FIN_WAIT1ÚCONN_FIN_WAIT1ÚMIB_TCP_STATE_FIN_WAIT2ÚCONN_FIN_WAIT2ÚMIB_TCP_STATE_TIME_WAITÚCONN_TIME_WAITÚMIB_TCP_STATE_CLOSEDÚ
CONN_CLOSEÚMIB_TCP_STATE_CLOSE_WAITÚCONN_CLOSE_WAITÚMIB_TCP_STATE_LAST_ACKÚCONN_LAST_ACKÚMIB_TCP_STATE_LISTENÚCONN_LISTENÚMIB_TCP_STATE_CLOSINGÚCONN_CLOSINGÚMIB_TCP_STATE_DELETE_TCBÚPSUTIL_CONN_NONEÚ	CONN_NONErË   r'   ÚglobalsrB  Ú__members__r/   r(  rx  Ú	lru_cacherj   rm   r~   rˆ   Ú	heap_infoÚ	heap_trimÚdisk_io_countersr�   r’   r˜   r›   r©   r«   r­   r´   rÄ   ÚLockrÅ   rÂ   r¿   rÉ   rÜ   rç   ré   rì   rû   rü   rþ   r   r   r  Úpidsr¸  r�  r0  rP  r[  rh  rj  r+   r,   r-   ú<module>rD     sX  ðñ
 'ã Û Û Û 	Û Û 
Û Û å Ý Ý Ý !Ý "Ý #Ý Ý #Ý Ý "Ý Ý +Ý (Ý "Ý 8Ý 8Ý 0Ý 0Ý 2Ý 4ðÝ)ò*
€ð$ €ØÐ Ø�S×-Ñ-Ð-€à�—‘˜_¨y¸"¨oÓ>€Ø
×
Ñ
€ð 	×Ñ˜g×6Ñ6Ø×Ñ ×!6Ñ!6Ø×Ñ ×!6Ñ!6Ø× Ñ  '×"8Ñ"8Ø× Ñ  '×"8Ñ"8Ø× Ñ  '×"8Ñ"8Ø×Ñ˜w×1Ñ1Ø×!Ñ! 7×#:Ñ#:Ø×Ñ ×!6Ñ!6Ø×Ñ˜w×2Ñ2Ø×Ñ × 4Ñ 4Ø×!Ñ! ?Ø×Ñ˜7×,Ñ,ð€ô"6ˆt�|‰|ô 6ñ ƒ	× Ñ �×%Ñ%Ô &ô�—‘ô ñ ƒ	× Ñ �×'Ñ'Ô (áò Ùðáðñ ðñ ð	ñ
 ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ 
ðñ  ð!ñ" ð#ñ$ ð%ñ& ð'ñ( ð)ñ* ð+ñ, ð-€	ð> €×Ñ˜SÔ!ñ0ó "ð0ð* 	ñó 	ðò	8ò7ð6 �N‰N€	Ø�N‰N€	ð ×(Ñ(Ð ò6ò0òòò$ò
"ò
Nò:ð Ð Øˆ	�‰Ó€ò7òó,ò.	ò"òò:ð2 €òò ò 1ò÷}ñ }ðX ‡y�y€Ø�_‰_€
Ø�=‰=€òóò
ò÷8K+ò K+øðm ò áˆC‹�‰Ó×#Ñ#Ð$5Ô6Ø!ˆC×!Ñ!Ó# AÑ&¨Ò*ð DˆØÐKÑKˆØÐ)Ñ)ˆÙ˜3Ó SÐ(àûðús   ÂN ÎOÎAOÏO