__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

�i4g:�����SSKJr SSKJr SSKJr SSKr	SSK
Jr SSKrSSK
r
SSKrSSKrSSKrSSKJrJrJrJrJr SSKJr SS	KJr SrS
rSrSrS
rSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'Sr(Sr)Sr*Sr+Sr,Sr-Sr.Sr/Sr0S r1S!r2S"r3S#r4S$r5S%r60\S&_\S'_\S(_\S)_\S*_\S+_\ S,_\!S-_\"S._\#S/_\$S0_\%S1_\&S2_\'S3_\(S4_\)S5_\*S6_\+S7\,S8\-S9\.S:\/S;\0S<\1S=\2S>\3S?\4S@\5SA\6SB0Er7SCq8SDr9SEr:SFr;SxSGjr<SxSHjr=SIr>SJr?SKr@SLrASMrB"SNSO\5rC"SPSQ\C5rD"SRSS\D5rE"STSU\C5rF"SVSW\F5rG"SXSY\F5rH"SZS[5rI"S\S]\F5rJ"S^S_\F5rK"S`Sa\D5rL"SbSc\L5rM"SdSe\F5rN"SfSg\C5rO"ShSi\C5rP"SjSk\F5rQ"SlSm\F5rR"SnSo\F5rS"SpSq\F5rT"SrSs\D5rU"StSu\C5rV"SvSw5rWg!\a
 SSKJr GN�f=f)y�)�print_function)�MutableMapping)�strftimeN)�reduce�)�lib�_RAW_CB_TYPE�
_LOST_CB_TYPE�_RINGBUF_CB_TYPE�bcc_perf_buffer_opts)�get_online_cpus)�get_possible_cpus��������	�
���
�����������������HASH�ARRAY�
PROG_ARRAY�PERF_EVENT_ARRAY�PERCPU_HASH�PERCPU_ARRAY�STACK_TRACE�CGROUP_ARRAY�LRU_HASH�LRU_PERCPU_HASH�LPM_TRIE�
ARRAY_OF_MAPS�HASH_OF_MAPS�DEVMAP�SOCKMAP�CPUMAP�XSKMAP�SOCKHASH�CGROUP_STORAGE�REUSEPORT_SOCKARRAY�PERCPU_CGROUP_STORAGE�QUEUE�STACK�
SK_STORAGE�DEVMAP_HASH�
STRUCT_OPS�RINGBUF�
INODE_STORAGE�TASK_STORAGE�(�Aic�p�SnSnX2U-U-S-
:�dX2S-
:�aOUS-
nUS-
nM#X:�aUSSS-nU$)Nr�r�*����+�)�val�val_max�width�i�texts     �+/usr/lib/python3/dist-packages/bcc/table.py�_starsrVds`��	�A�
�D��
���w�&�!�+�+��Q�Y�������	�Q���	
�
�}��C�R�y�3����K�c��[XSS9$)N)�section_bucket)�_get_json_hist)�vals�val_typerYs   rU�
get_json_histr]ps���$��>�>rWc�t�/nSn[[U55HnXS:wdM
UnM SnSn[[U55HQnUS:wdMXT::dMUS-n0nXxS'[U5S-
US'[X5US'URU5 UnMS [	S5XS.n	U(a
USX�S'U	$)	Nrrrzinterval-startzinterval-end�countz%Y-%m-%d %H:%M:%S)�tsr\�data)�range�len�int�appendr)
r[r\rY�	hist_list�max_nonzero_idxrS�index�prev�list_obj�	histograms
          rUrZrZss����I��O�
�3�t�9�
���7�a�<��O��
�E��D�
�3�t�9�
����6�a�*��A�I�E��H�)-�%�&�'*�5�z�A�~�H�^�$� #�D�G��H�W�����X�&��D�� � 3�4�(�^�I��'5�a�'8�	��#�$��rWc
���SnSnSn[U5HupgUS:�aUnXu:�dMUnM US::aSnSn	[n
OSnSn	[[S	-5n
US:�a
[X�-5 [	S
US
-5HknS
U-S
-	nS
U-S
-
nX�:XaUS
-nXn
U(a(U
(a[X�X�U
[X�U
54-5 SnMNMP[X�X�U
[X�U
54-5 Mm g)N�@rMr� z#     %-19s : count     distributionz%10d -> %-10d : %-8d |%-*s|z-               %-29s : count     distributionz%20d -> %-20d : %-8d |%-*s|rrF)�	enumerate�	stars_maxrd�printrbrV)r[r\�strip_leading_zero�
log2_dist_max�idx_maxrQrS�v�header�body�stars�low�highrPs              rU�_print_log2_histr{�s���M��G��G��$�����q�5�A�'��;�!�� ��"�}�6��,����@��,���I��M�"����{�
�f�� �
�1�g��k�
"���A�v�!�m���Q��!�|���K��1�H�C��g�����d�4�e�$�S�5�9�;�;�<�%*�"��

�$�t�%� ��u�5�7�7�
8�#rWc�X�SnSnSn[U5HupgUS:�aUnXu:�dMUnM SnSn	[n
US:�a
[X�-5 [SUS-5HOnXnU(a'U(a[X�X�[	X�U
54-5 SnM3M5[X�X�[	X�U
54-5 MQ g)NrmrMrz#     %-13s : count     distributionz        %-10d : %-8d |%-*s|rF)rorprqrbrV)r[r\rrrsrtrQrSrurvrwrxrPs            rU�_print_linear_histr}�s����M��G��G��$�����q�5�A�'��;�!�� �3�F�(�D��E��!�|�
�f�� �
�1�g��k�
"���g�����d��$�S�5�9�;�;�<�%*�"��
�d��$�S�5�9�;�;�<�#rWc�6�[U$![a gf=f)Nz	<unknown>)�
map_type_name�KeyError)�ttypes rU�get_table_type_namer��s$����U�#�#������s��
�c	���0S[R_S[R_S[R_S[R_S[R_S[R_S[R_S[R_S	[R
_S
[R
_S[R_S[R_S
[R_S[R_S[R_S[R_S[R_[R[R[R[R[RS-[RS-[RS.En[R"S5n/n[R "UR"R$UR&5nSnXT:Ga[R("UR"R$UR&U5R+5n[R,"SU5nUR/S5nUR/S5n	[R,"SU	5(aS
n	UR-U	5nU(a@UR1X�UR/S5[3UR/S55-45 OUR1X�U	45 US-
nXT:aGM[?S@4SU05$![4a4 [7SU	-[8R:S9 [8R<"S5 Nhf=f)N�char�s8z
unsigned char�u8zu8 *zchar *�short�s16zunsigned short�u16rd�s32�enumzunsigned int�u32�longz
unsigned longr)z	long long�s64zunsigned long long�u64�__int128zunsigned __int128zvoid *z(\S+(?: \S+)*) ?\[([0-9]+)\]$rz	(.*)#(.*)rzenum .*zGType: '%s' not recognized. Please define the data with ctypes manually.)�filerK�_fields_)!�ct�c_char�c_ubyte�c_char_p�c_short�c_ushort�c_int�c_uint�c_long�c_ulong�
c_longlong�c_ulonglong�c_void_p�re�compiler�bpf_perf_event_fields�bpf�module�_name�bpf_perf_event_field�decode�match�grouprerdr�rq�sys�stderr�exit�type�	Structure)
�	event_map�
ct_mapping�
array_type�fields�
num_fieldsrS�field�m�
field_name�
field_types
          rU�_get_event_classr��s�����b�i�i���b�i�i��	�b�j�j��	
�b�j�j�	�
	�b�k�k��	�b�k�k�
�	�b�j�j��	�b�j�j��	�b�k�k��	�b�k�k��	�b�h�h��	�b�h�h��	�b�h�h��	�b�i�i��	�b�i�i�� 	�b�i�i�!�"	�b�j�j�#�$!�m�m� �m�m� �n�n� �n�n�!�}�}�q�0�!�~�~��1� �k�k�1�J�8���<�=�J�
�F��*�*�9�=�=�+?�+?����Q�J�	�A�
�.��(�(����)=�)=�y���PQ�R�Y�Y�[���H�H�\�5�)���W�W�Q�Z�
��W�W�Q�Z�
�
�8�8�J�
�+�+��J����Z�(��
	���
�
�z�a�g�g�a�j�+A�C����PQ�
�O�+S�T�U��
�
�z�j�+A�B�C�	
�Q���+�.�,��R�\�\�O�j�&�%9�:�:���	�
�[���%(�Z�Z�
1��H�H�Q�K�	�s�AL �L � ;M�Mc��[R"URU5nSnU[:Xa[	XX#U5nGO�U[
:Xa[
XX#U5nGO�U[:Xa[XX#U5nGOvU[:Xa[XX#XE5nGO]U[:Xa[XX#U40UD6nGOCU[:Xa[XX#U40UD6nGO)U[:Xa[!XX#U5nGOU[":Xa[%XX#U5nO�U[&:Xa[)XX#U5nO�U[*:Xa[-XX#U5nO�U[.:Xa[1XX#U5nO�U[2:Xa[5XX#U5nO�U[6:Xa[9XX#U5nO�U[::Xa[=XX#U5nOhU[>:Xa[AXX#U5nOPU[B:Xa[EXX#U5nO8U[F:Xd
U[H:Xa
[KXX$5nOU[L:Xa
[OXX#XE5nUS:Xa[QSU-5eU$)zxTable(bpf, map_id, map_fd, keytype, leaftype, **kwargs)

Create a python object out of a reference to a bpf table handleNzUnknown table type %d))r�bpf_table_type_idr��BPF_MAP_TYPE_HASH�	HashTable�BPF_MAP_TYPE_ARRAY�Array�BPF_MAP_TYPE_PROG_ARRAY�	ProgArray�BPF_MAP_TYPE_PERF_EVENT_ARRAY�PerfEventArray�BPF_MAP_TYPE_PERCPU_HASH�
PerCpuHash�BPF_MAP_TYPE_PERCPU_ARRAY�PerCpuArray�BPF_MAP_TYPE_LPM_TRIE�LpmTrie�BPF_MAP_TYPE_STACK_TRACE�
StackTrace�BPF_MAP_TYPE_LRU_HASH�LruHash�BPF_MAP_TYPE_LRU_PERCPU_HASH�
LruPerCpuHash�BPF_MAP_TYPE_CGROUP_ARRAY�CgroupArray�BPF_MAP_TYPE_DEVMAP�DevMap�BPF_MAP_TYPE_CPUMAP�CpuMap�BPF_MAP_TYPE_XSKMAP�XskMap�BPF_MAP_TYPE_ARRAY_OF_MAPS�
MapInMapArray�BPF_MAP_TYPE_HASH_OF_MAPS�MapInMapHash�BPF_MAP_TYPE_QUEUE�BPF_MAP_TYPE_STACK�
QueueStack�BPF_MAP_TYPE_RINGBUF�RingBuf�	Exception)	r��map_id�map_fd�keytype�leaftype�name�kwargsr��ts	         rU�Tabler�s���

�!�!�#�*�*�f�5�E��A��!�!��c�6�H�=��	�$�	$��#�v��9��	�)�	)��c�6�H�=��	�/�	/��3���H��	�*�	*��s�F�X�H��H��	�+�	+���V�h�I�&�I��	�'�	'��C��(�;��	�*�	*��s�F�X�>��	�'�	'��C��(�;��	�.�	.��#�v��A��	�+�	+���V�h�?��	�%�	%��3���:��	�%�	%��3���:��	�%�	%��3���:��	�,�	,��#�v��A��	�+�	+���f�x�@��	�$�	$��1C�(C��s�F�5��	�&�	&��C��(�A���D�y��/�%�7�8�8��HrWc��\rSrSrS$SjrSrSrSrSrSr	S	r
S
rSrSr
S
rSrSrSrS%SjrS&SjrSrS$SjrSrSrS'SjrSrSrSrSr"SS\5rSr\ 4Sjr!S(S jr"S)S!jr#S)S"jr$S#r%g)*�	TableBaseiANc���XlX lX0lX@lXPl[
R"URRUR5Ul[
R"URRUR5Ul
0UlX`l[[
R"URRUR55Ulg�N)r�r�r��Key�Leafrr�r�r��bpf_table_flags_id�flags�_cbsr�rd�bpf_table_max_entries_id�max_entries)�selfr�r�r�r�r�r�s       rU�__init__�TableBase.__init__Cs������������	��*�*�4�8�8�?�?�D�K�K�H��
��+�+�D�H�H�O�O�T�[�[�I��
���	��
��s�;�;�D�H�H�O�O���� ���rWc��UR$r�)r��r�s rU�get_fd�TableBase.get_fdPs���{�{�rWc	�T�[R"[R"UR5S-5n[R
"URRURU[U5[R"U55nUS:a[S5eUR$)NrrzCould not printf key)
r��create_string_buffer�sizeofr�r�bpf_table_key_snprintfr�r�r�rc�byrefr��value)r��key�buf�ress    rU�key_sprintf�TableBase.key_sprintfSsu���%�%�b�i�i����&9�A�&=�>���(�(������$�+�+�s�),�S��2�8�8�C�=�B����7��2�3�3��y�y�rWc	�T�[R"[R"UR5S-5n[R
"URRURU[U5[R"U55nUS:a[S5eUR$�NrrzCould not printf leaf�
r�r�r�r�r�bpf_table_leaf_snprintfr�r�r�rcr�r�r�r��leafrrs    rU�leaf_sprintf�TableBase.leaf_sprintf[�u���%�%�b�i�i��	�	�&:�Q�&>�?���)�)�$�(�(�/�/�4�;�;��*-�c�(�B�H�H�T�N�D����7��3�4�4��y�y�rWc���UR5n[R"URRUR
U[R"U55nUS:a[S5eU$)NrzCould not scanf key)	r�r�bpf_table_key_sscanfr�r�r�r�r�r�)r��key_strrrs    rU�	key_scanf�TableBase.key_scanfcsR���h�h�j���&�&�t�x�x������W�')�x�x��}�6����7��1�2�2��
rWc���UR5n[R"URRUR
U[R"U55nUS:a[S5eU$�NrzCould not scanf leaf�	r�r�bpf_table_leaf_sscanfr�r�r�r�r�r��r��leaf_strrrs    rU�
leaf_scanf�TableBase.leaf_scanfk�R���y�y�{���'�'���������h�(*�����8����7��2�3�3��rWc���UR5n[R"UR[R
"U5[R
"U55nUS:a[eU$�Nr�r�r�bpf_lookup_elemr�r�r�r��r�rrrs    rU�__getitem__�TableBase.__getitem__ssF���y�y�{���!�!�$�+�+�r�x�x��}�b�h�h�t�n�M����7��N��rWc��[R"UR[R"U5[R"U5S5nUS:a7[
R"[R"55n[SU-5eg)NrzCould not update table: %s�	r�bpf_update_elemr�r�r��os�strerror�	get_errnor�)r�rrr�errstrs     rU�__setitem__�TableBase.__setitem__zs]���!�!�$�+�+�r�x�x��}�b�h�h�t�n�a�P����7��[�[�����0�F��8�6�A�B�B�rWc��[R"UR[R"U55nUS:a[
egr)r�bpf_delete_elemr�r�r�r�)r�rrs   rU�__delitem__�TableBase.__delitem__�s1���!�!�$�+�+�r�x�x��}�=����7��N�rWc#�N# �UH
nXv� M g![a Mf=f7fr��r��r�rs  rU�
itervalues�TableBase.itervalues�s.����C�
��i��	��
�
��
�s�%��%�
"�%�"�%c#�R# �UHnXU4v� M g![a Mf=f7fr�r2r3s  rU�	iteritems�TableBase.iteritems�s4����C�
���I�&�&����
��
�s�'��'�
$�'�$�'c�L�UR5Vs/sHoPM sn$s snfr�)r7)r��items  rU�items�TableBase.items�s#��!%���!1�2�!1���!1�2�2��2��!c�L�UR5Vs/sHoPM sn$s snfr��r4�r�rs  rU�values�TableBase.values��#��#'�?�?�#4�5�#4�%��#4�5�5��5r=c�T�UR5HnURU5 M gr�)�keysr/�r��ks  rU�clear�TableBase.clear�s ������A����Q��rWc�Z�S=pEU(d U(d[R"S5SS4$U(d
URnO US:dX0R:�a[S5eU(aURU-"5nU(aUR
U-"5n[R"U5XE4$)aiAllocate keys and/or values arrays. Useful for in items_*_batch.

Args:
    alloc_k (bool): True to allocate keys array, False otherwise.
    Default is False.
    alloc_v (bool): True to allocate values array, False otherwise.
    Default is False.
    count (int): number of elements in the array(s) to allocate. If
    count is None then it allocates the maximum number of elements i.e
    self.max_entries.

Returns:
    tuple: (count, keys, values). Where count is ct.c_uint32,
    and keys and values an instance of ct.Array
Raises:
    ValueError: If count is less than 1 or greater than
    self.max_entries.
NrrzWrong count)r��c_uint32r��
ValueErrorr�r�)r��alloc_k�alloc_vr_rErAs      rU�_alloc_keys_values�TableBase._alloc_keys_values�s���&����w��K�K��N�D�$�/�/���$�$�E�
�Q�Y�%�"2�"2�2��]�+�+���H�H�u�$�'�D���i�i�%�'�*�F����E�"�D�1�1rWc�Z�SnX4H\nU(dM[U[R5(d[e[	U5nUS:dX0R
:�dMS[
S5e U(a*U(a#[	U5[	U5:wa[
S5e[R"U5$)a�Check if the given keys or values have the right type and size.

Args:
    keys (ct.Array): keys array to check
    values (ct.Array): values array to check
Returns:
    ct.c_uint32 : the size of the array(s)
Raises:
    ValueError: If length of arrays is less than 1 or greater than
    self.max_entries, or when both arrays length are different.
    TypeError: If the keys and values are not an instance of ct.Array
rrzArray's length is wrongz(keys array length != values array length)�
isinstancer�r��	TypeErrorrcr�rLrK)r�rErA�arr_len�elems     rU�_sanity_check_keys_values�#TableBase._sanity_check_keys_values�s������N�D��t�!�$����1�1�#�O��d�)���Q�;�'�,<�,<�"<�$�%>�?�?�#��F��4�y�C��K�'� �!K�L�L��{�{�7�#�#rWc#�F# �URSS9H
upX4v� M g7f)z�Look up all the key-value pairs in the map.

Args:
    None
Yields:
    tuple: The tuple of (key,value) for every entries that have
    been looked up.
Notes: lookup batch on a keys subset is not supported by the kernel.
F��deleteN��)_items_lookup_and_optionally_delete_batch�r�rGrus   rU�items_lookup_batch�TableBase.items_lookup_batch�s,����B�B�%�B�P�D�A���K�Q����!c�b�Ub�URUS9n[R"UR[R
"U5[R
"U55nUS:wa5[
S[R"[R"55-5egUR5Hn g g)a@Delete the key-value pairs related to the keys given as parameters.
Note that if no key are given, it is faster to call
lib.bpf_lookup_and_delete_batch than create keys array and then call
lib.bpf_delete_batch on these keys.

Args:
    ct_keys (ct.Array): keys array to delete. If an array of keys is
    given then it deletes all the related keys-values.
    If keys is None (default) then it deletes all entries.
Yields:
    tuple: The tuple of (key,value) for every entries that have
    been deleted.
Raises:
    Exception: If bpf syscall return value indicates an error.
N)rErz#BPF_MAP_DELETE_BATCH has failed: %s)rVr�bpf_delete_batchr�r�r�r�r'r(r)�items_lookup_and_delete_batch)r��ct_keys�ct_cntr�_s     rU�items_delete_batch�TableBase.items_delete_batch�s��� ���3�3��3�A�F��&�&�t�{�{�')�x�x��'8�')�x�x��'7�)�C��q��� E�"$�+�+�b�l�l�n�"=�!>�?�?��
�7�7�9���:rWc�V�URXS9n[R"UR[R
"U5[R
"U5[R
"U55nUS:wa5[
S[R"[R"55-5eg)a1Update all the key-value pairs in the map provided.
The arrays must be the same length, between 1 and the maximum number
of entries.

Args:
    ct_keys (ct.Array): keys array to update
    ct_values (ct.Array): values array to update
Raises:
    Exception: If bpf syscall return value indicates an error.
)rErArz#BPF_MAP_UPDATE_BATCH has failed: %sN)
rVr�bpf_update_batchr�r�r�r�r'r(r))r�rd�	ct_valuesrers     rU�items_update_batch�TableBase.items_update_batchs����/�/�W�/�O���"�"�4�;�;�#%�8�8�G�#4�#%�8�8�I�#6�#%�8�8�F�#3�%��

�1�H��A� �k�k�"�,�,�.�9�:�;�
;�
rWc#�F# �URSS9H
upX4v� M g7f)z�Look up and delete all the key-value pairs in the map.

Args:
    None
Yields:
    tuple: The tuple of (key,value) for every entries that have
    been looked up and deleted.
Notes: lookup and delete batch on a keys subset is not supported by
the kernel.
TrYNr[r]s   rUrc�'TableBase.items_lookup_and_delete_batch$s,����B�B�$�B�O�D�A���K�P��r`c#�# �USLa[RnSnO[RnSnURSSS9upEn[R
"S5=pxSn	URU	-
UlU"URU	(a[R"U5OS[R"U5[R"U[R"UR5U	-5[R"U[R"UR5U	-5[R"U55n
[R"5nX�R-
n	U
S:wa:U[R:wa&[U<S[ R""U5<35eU
S:waO$X�R:XaOURS:XaOGMj[%SU	5HpnX\n
Xln['U
[R(5(dURU
5n
['U[R(5(dURU5nX�4v� Mr g7f)a�Look up and optionally delete all the key-value pairs in the map.

Args:
    delete (bool) : look up and delete the key-value pairs when True,
    else just look up.
Yields:
    tuple: The tuple of (key,value) for every entries that have
    been looked up and deleted.
Raises:
    Exception: If bpf syscall return value indicates an error.
Notes: lookup and delete batch on a keys subset is not supported by
the kernel.
T�BPF_MAP_LOOKUP_AND_DELETE_BATCH�BPF_MAP_LOOKUP_BATCH)rMrNrNz
 has failed: )r�bpf_lookup_and_delete_batch�bpf_lookup_batchrOr�rKrr�r�r�r�r�r)�errno�ENOENTr�r'r(rbrRr�)r�rZ�	bpf_batch�bpf_cmd�ct_buf_sizerdrk�ct_out_batchre�totalr�errcoderSrGrus               rUr\�3TableBase._items_lookup_and_optionally_delete_batch3s�����T�>��7�7�I�7�G��,�,�I�,�G�+/�*A�*A�$�JN�+B�+P�'��i� "���A��.�����&�,�,�u�4�F�L��D�K�K�6;�B�H�H�\�2���H�H�\�2��H�H�W�b�i�i����.A�E�.I�J��H�H�Y��	�	�$�)�)�0D�u�0L�M��H�H�V�,��C��l�l�n�G��\�\�!�E��q��W����4��w�79�{�{�7�7K�!M�N�N��a�x���)�)�)���|�|�q� ��1�4�q�%��A��
�A���A��a����.�.��H�H�Q�K���a����.�.��I�I�a�L���&�L�!�s�IIc�h�[UR55HnUR5X'M gr�)�listrEr�rFs  rU�zero�TableBase.zerops&��
�d�i�i�k�"�A��i�i�k�D�G�#rWc�,�[RU5$r�)r��Iterr�s rU�__iter__�TableBase.__iter__xs���~�~�d�#�#rWc�"�UR5$r��r�r�s rU�iter�TableBase.iter{�
��4�=�=�?�*rWc�"�UR5$r�r�r�s rUrE�TableBase.keys|r�rWc�,�\rSrSrSrSrSrSrSrg)�TableBase.Iteri~c��XlSUlgr�)�tabler)r�r�s  rUr��TableBase.Iter.__init__s���J��D�HrWc��U$r�rOr�s rUr��TableBase.Iter.__iter__�����KrWc�"�UR5$r���nextr�s rU�__next__�TableBase.Iter.__next__�����9�9�;�rWc�n�URRUR5UlUR$r�)r�r�rr�s rUr��TableBase.Iter.next�s#���z�z���t�x�x�0�D�H��8�8�OrW)rr�N�	�__name__�
__module__�__qualname__�__firstlineno__r�r�r�r��__static_attributes__rOrWrUr�r�~s��	�	�	�	rWr�c��UR5nUcU[R"UR[R
"U5[R"UR55nOJ[R"UR[R
"U5[R
"U55nUS:a
[5eU$r)	r�r�bpf_get_first_keyr�r�r�r��bpf_get_next_key�
StopIteration)r�r�next_keyrs    rUr��TableBase.next�s����8�8�:���;��'�'����R�X�X�h�5G�(*�	�	�$�(�(�(;�=�C��&�&�t�{�{�B�H�H�S�M�')�x�x��'9�;�C���7��/�!��rWc�N�URRSSnURRSSnUS:Xa?[URR5S:XaURRSSnUR5HRup�[	X�5n
U(aU"U
5n
URU
S/U-5=o�U
'[	X�5nU	RX�'MT [UR55n
U(aU"U
5n
U
Hn
URU
5 M g)Nrr�__pad_1rr)
r�r�rcr;�getattr�getrrrEre)r��tmp�buckets�	bucket_fn�bucket_sort_fn�	index_max�f1�f2rGru�bucketr[�slot�buckets_lsts              rU�decode_c_struct�TableBase.decode_c_struct�s���
�X�X�
�
�q�
!�!�
$��
�X�X�
�
�q�
!�!�
$����?�s�4�8�8�#4�#4�5��:����"�"�1�%�a�(�B��J�J�L�D�A��Q�^�F��"�6�*��!$����!��y��!A�A�D�v�;��1�>�D����D�J�
!��3�8�8�:�&���(��5�K�!�F��N�N�6�"�"rWc��[UR5[R5(aM0n/nUR	XgXE5 UH0nXhn	U(a
X#"U54n
OX(4n
[[
X�U
55 M2 gS/[-n	UR5Hup�URX�R'M [[
X�55 g)aNprint_json_hist(val_type="value", section_header="Bucket ptr",
                   section_print_fn=None, bucket_fn=None,
                   bucket_sort_fn=None):

Prints a table as a json histogram. The table must be stored as
log2. The val_type argument is optional, and is a column header.
If the histogram has a secondary key, the dictionary will be split by secondary key
If section_print_fn is not None, it will be passed the bucket value
to format into a string as it sees fit. If bucket_fn is not None,
it will be used to produce a bucket value for the histogram keys.
If bucket_sort_fn is not None, it will be used to sort the buckets
before iterating them, and it is useful when there are multiple fields
in the secondary key.
The maximum index allowed is log2_index_max (65), which will
accommodate any 64-bit integer in the histogram.
rN)
rRr�r�r�r�rqrZ�log2_index_maxr;r)
r�r\�section_header�section_print_fnr�r�r�r�r�r[rYrGrus
             rU�print_json_hist�TableBase.print_json_hist�s���$�d�h�h�j�"�,�,�/�/��C��G�� � ��y�I�!���{��#�&4�6F�v�6N�%O�N�&4�%=�N��n�T�^�D�E�
"��3��'�D��
�
���� !����W�W�
�%��.��0�1rWc	��[UR5[R5(ad0n/nUR	XxXF5 UHGn	Xyn
U(a[SU<SU"U	5<35 O[SU<SU	<35 [
X�U5 MI gS/[-n
UR5Hup�URX�R'M [
X�U5 g)aprint_log2_hist(val_type="value", section_header="Bucket ptr",
                   section_print_fn=None, bucket_fn=None,
                   strip_leading_zero=None, bucket_sort_fn=None):

Prints a table as a log2 histogram. The table must be stored as
log2. The val_type argument is optional, and is a column header.
If the histogram has a secondary key, multiple tables will print
and section_header can be used as a header description for each.
If section_print_fn is not None, it will be passed the bucket value
to format into a string as it sees fit. If bucket_fn is not None,
it will be used to produce a bucket value for the histogram keys.
If the value of strip_leading_zero is not False, prints a histogram
that is omitted leading zeros from the beginning.
If bucket_sort_fn is not None, it will be used to sort the buckets
before iterating them, and it is useful when there are multiple fields
in the secondary key.
The maximum index allowed is log2_index_max (65), which will
accommodate any 64-bit integer in the histogram.
�
� = rN)
rRr�r�r�r�rqr{r�r;r�
r�r\r�r�r�rrr�r�r�r�r[rGrus
             rU�print_log2_hist�TableBase.print_log2_hist�s���,�d�h�h�j�"�,�,�/�/��C��G�� � ��y�I�!���{��#���(��0�2�3����@�A� ��1C�D�"��3��'�D��
�
���� !����W�W�
�%��T�-?�@rWc	��[UR5[R5(ai0n/nUR	XxXF[
5 UHGn	Xyn
U(a[
SU<SU"U	5<35 O[
SU<SU	<35 [X�U5 MI gS/[
-n
UR5Hup�URX�R'M  [X�U5 g![a [SUR[
4-5ef=f)a.print_linear_hist(val_type="value", section_header="Bucket ptr",
                   section_print_fn=None, bucket_fn=None,
                   strip_leading_zero=None, bucket_sort_fn=None)

Prints a table as a linear histogram. This is intended to span integer
ranges, eg, from 0 to 100. The val_type argument is optional, and is a
column header.  If the histogram has a secondary key, multiple tables
will print and section_header can be used as a header description for
each.  If section_print_fn is not None, it will be passed the bucket
value to format into a string as it sees fit. If bucket_fn is not None,
it will be used to produce a bucket value for the histogram keys.
If the value of strip_leading_zero is not False, prints a histogram
that is omitted leading zeros from the beginning.
If bucket_sort_fn is not None, it will be used to sort the buckets
before iterating them, and it is useful when there are multiple fields
in the secondary key.
The maximum index allowed is linear_index_max (1025), which is hoped
to be sufficient for integer ranges spanned.
r�r�rz5Index in print_linear_hist() of %d exceeds max of %d.N)rRr�r�r�r��linear_index_maxrqr}r;r�
IndexErrorr�s
             rU�print_linear_hist�TableBase.print_linear_hist�s���,�d�h�h�j�"�,�,�/�/��C��G�� � ��y�JZ�[�!���{��#���(��0�2�3����@�A�"�4�3E�F�"��3�)�)�D��
�
����M�$%�G�G�D���M�%�
�t�/A�B��"�M�%�'-�12���:J�0K�&L�M�M�M�s�7C � )D	)
r�r�r�r�r�r�r�r�r�r�r�)FFN)NN)T)r�
Bucket ptrNNN)rr�NNNN)&r�r�r�r�r�r�rrrrr"r+r/r4r7r;rArHrOrVr^rgrlrcr\r�r�r�rE�objectr�r�r�r�r�r�r�r�rOrWrUr�r�As����������C����3�6� �
!2�F$�<��<;�*
�;�z"�$�+�*�
�v�
��R`�#�.@L�NR�"2�H@L�FJ��&A�PBN�FJ��-CrWr�c�.^�\rSrSrU4SjrSrSrU=r$)r�i+c�.>�[[U]
"U0UD6 gr�)�superr�r��r��argsr��	__class__s   �rUr��HashTable.__init__,����
�i��'��8��8rWc�$�SnUHo!S-
nM	 U$�NrrrO�r�rSrGs   rU�__len__�HashTable.__len__/���
���A�A�v�q���rWrO�r�r�r�r�r�r�r��
__classcell__�r�s@rUr�r�+s���9��rWr�c�(^�\rSrSrU4SjrSrU=r$)r�i4c�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��LruHash.__init__5����
�g�t�%�t�6�v�6rWrO�r�r�r�r�r�r�r�r�s@rUr�r�4s
���7�7rWr�c�z^�\rSrSrU4SjrSrSrU4SjrU4SjrU4Sjr	Sr
S	r"S
S\5r
SrU=r$)
�	ArrayBasei8c�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��ArrayBase.__init__9r�rWc��[U[5(a%US:a[U5U-nURU5n[U[R
5(d[
S5eUR[U5:�a[
S5eU$)Nrz#Array index must be an integer typezArray index out of range)rRrdrcr�r��_SimpleCDatar�rr3s  rU�_normalize_key�ArrayBase._normalize_key<sn���c�3����Q�w��$�i�#�o���(�(�3�-�C��#�r���/�/��B�C�C��9�9��D�	�!��7�8�8��
rWc��UR$r�)r�r�s rUr��ArrayBase.__len__Gs�����rWc�L>�URU5n[[U]U5$r�)r�r�r�r"�r�rr�s  �rUr"�ArrayBase.__getitem__Js%����!�!�#�&���Y��1�#�6�6rWc�N>�URU5n[[U]X5 gr�)r�r�r�r+�r�rrr�s   �rUr+�ArrayBase.__setitem__Ns"����!�!�#�&��
�i��*�3�5rWc�N>�URU5n[[U]U5 gr�)r�r�r�r/r�s  �rUr/�ArrayBase.__delitem__Rs"����!�!�#�&��
�i��*�3�/rWc��URU5nUR5n[R"UR[
R"U5[
R"U5S5nUS:a[S5eg)NrzCould not clear item)r�r�rr&r�r�r�r�r!s    rU�	clearitem�ArrayBase.clearitemVs_���!�!�#�&���y�y�{���!�!�$�+�+�r�x�x��}�b�h�h�t�n�a�P����7��2�3�3�rWc�@�[RXR5$r�)r�r�r�r�s rUr��ArrayBase.__iter__]s���~�~�d�H�H�-�-rWc�,�\rSrSrSrSrSrSrSrg)�ArrayBase.Iteri`c�*�X lXlSUlg�NrM)r�r�rS)r�r�r�s   rUr��ArrayBase.Iter.__init__as���H��J��D�FrWc��U$r�rOr�s rUr��ArrayBase.Iter.__iter__fr�rWc�"�UR5$r�r�r�s rUr��ArrayBase.Iter.__next__hr�rWc��U=RS-
slUR[UR5:Xa
[5eUR	UR5$�Nr)rSrcr�r�r�r�s rUr��ArrayBase.Iter.nextjs>���F�F�a�K�F��v�v��T�Z�Z��(�#�o�%��8�8�D�F�F�#�#rW)r�rSr�Nr�rOrWrUr�r�`s��	�
	�	�	$rWr�rO)r�r�r�r�r�r�r�r"r+r/r�r�r�r�r�r�r�s@rUr�r�8s<���9�	� �7�6�0�4�.�$�v�$�$rWr�c�.^�\rSrSrU4SjrSrSrU=r$)r�ipc�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��Array.__init__qs���
�e�T�#�T�4�V�4rWc�&�URU5 gr��r�r3s  rUr/�Array.__delitem__t������s�rWrO)r�r�r�r�r�r/r�r�r�s@rUr�r�ps���5��rWr�c�4^�\rSrSrU4SjrU4SjrSrU=r$)r�ixc�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��ProgArray.__init__yr�rWc�>�[U[5(aURU5n[X RR5(aURUR
5n[[U]#X5 gr�)	rRrdr�r��Function�fdr�r�r+r�s   �rUr+�ProgArray.__setitem__|sS����d�C� � ��9�9�T�?�D��d�H�H�-�-�.�.��9�9�T�W�W�%�D�
�i��*�3�5rWrO�r�r�r�r�r�r+r�r�r�s@rUr�r�xs���9�6�6rWr�c�2�\rSrSrSrSrSrSrSrSr	g)	�FileDesci�c�8�UbUS:a[S5eXlg)NrzInvalid file descriptor)r�r)r�rs  rUr��FileDesc.__init__�s���J�B��F��5�6�6��rWc��URb9URS:�a([R"UR5 SUlgggr)rr'�closer�s rU�clean_up�FileDesc.clean_up�s5���G�G��d�g�g��l��H�H�T�W�W���D�G�'3�rWc�$�UR5 gr��rr�s rU�__del__�FileDesc.__del__�����
�
�rWc��U$r�rO�r�r�r�s   rU�	__enter__�FileDesc.__enter__�s���rWc�$�UR5 gr�rr"s   rU�__exit__�FileDesc.__exit__�r rW)rN)
r�r�r�r�r�rrr#r&r�rOrWrUrr�s���
�
��rWrc�4^�\rSrSrU4SjrU4SjrSrU=r$)r�i�c�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��CgroupArray.__init__�s���
�k�4�)�4�:�6�:rWc�>�[U[5(a#[[U]XRU55 g[U[5(ad[[R"U[R55n[[U]XRUR55 SSS5 g[S5e!,(df   g=f)Nz1Cgroup array key must be either FD or cgroup path)
rRrdr�r�r+r��strrr'�open�O_RDONLYrr�)r�rr�fr�s    �rUr+�CgroupArray.__setitem__�s�����d�C� � ��+�t�0��i�i��o�F�
��c�
"�
"��"�'�'�$����4�5���k�4�4�S�)�)�A�D�D�/�J�6�5��O�P�P�6�5�s�=-B>�>
CrOrr�s@rUr�r��s���;�Q�QrWr�c�d^�\rSrSrU4SjrSrU4SjrSrSSjrSr	SSjr
SS	jrS
rU=r
$)
r�i�c�J>�[[U]
"U0UD6 0UlSUlgr�)r�r�r��
_open_key_fds�_event_classr�s   �rUr��PerfEventArray.__init__�s'���
�n�d�,�d�=�f�=���� ��rWc�`�[URR55nUHnX	M gr�)rr3rE)r�rErs   rUr�PerfEventArray.__del__�s*���D�&�&�+�+�-�.���C��	�rWc�>�XR;ag[[U]U5 [	U5U4nX R
R;aR[R"UR
RU5 UR
RU	URU	O#[R"URU5 URU	gr�)r3r�r�r/�idr��perf_buffersr�perf_reader_freer��bpf_close_perf_event_fd)r�r�key_idr�s   �rUr/�PerfEventArray.__delitem__�s�����(�(�(��
�n�d�/��4��T�(�C����X�X�*�*�*�� � ����!6�!6�v�!>�?����%�%�f�-��	�	�#��
�'�'��(:�(:�3�(?�@����s�#rWc��URS:Xa[U5Ul[R"U[R"UR55R
$)z�event(data)

When perf buffers are opened to receive custom perf event,
the underlying event data struct which is defined in C in
the BPF program can be deduced via this function. This avoids
redundant definitions in Python.
N�r4r�r��cast�POINTER�contents�r�ras  rU�event�PerfEventArray.event��E������$� 0�� 6�D���w�w�t�R�Z�Z��(9�(9�:�;�D�D�DrWc�x�X"S-
-S:wa[S5e[5HnURXQX#U5 M g)aJopen_perf_buffers(callback)

Opens a set of per-cpu ring buffer to receive custom perf event
data from the bpf program. The callback will be invoked for each
event submitted from the kernel, up to millions per second. Use
page_cnt to change the size of the per-cpu ring buffer. The value
must be a power of two and defaults to 8.
rrz+Perf buffer page_cnt must be a power of twoN)r�r
�_open_perf_buffer)r��callback�page_cnt�lost_cb�
wakeup_eventsrSs      rU�open_perf_buffer�PerfEventArray.open_perf_buffer�s>���!�|�$��)��I�J�J� �"�A��"�"�1��=�Q�#rWc	�B^^^�UU4SjnU4Sjn[U5nT(a[U5O[R"S[5n	[	5n
SU
lTU
lXZl[R"X�SU[R"U
55nU(d[S5e[R"U5nURU5XRT5'X�RR [#U5T4'X�4UR$T'SUR&T'g)Nc�>�T"TX5 g![a4nUR[R:Xa[5 SnAgUeSnAff=fr���IOErrorru�EPIPEr�)rfra�size�erJ�cpus    ��rU�raw_cb_�1PerfEventArray._open_perf_buffer.<locals>.raw_cb_�s>���
���d�)���
��7�7�e�k�k�)��F�F��G��	
�s�	
�
A�(A�A�Ac�>�T"U5 g![a4nUR[R:Xa[5 SnAgUeSnAff=fr�rR)rf�lostrVrLs   �rU�lost_cb_�2PerfEventArray._open_perf_buffer.<locals>.lost_cb_�s;���
���
���
��7�7�e�k�k�)��F�F��G��	
�s��
A
�(A�A�A
rMzCould not open perf buffer)r	r
r�rAr�pidrWrMr�bpf_open_perf_buffer_optsr�r��perf_reader_fdr�r�r�r:r9r�r3)
r�rWrJrKrLrMrXr\�fn�lost_fn�opts�readerrs
 `` `        rUrI� PerfEventArray._open_perf_buffer�s����	�	��'�
"��-4�-��)�"�'�'�$�
�:V��#�%��������*���.�.�r�D�(�B�H�H�UY�N�[����8�9�9�
�
�
��
'��"�i�i��m��X�X�c�]��17�����r�$�x��o�.����	�	�#��"$����3�rWc��[R"X#XA5nUS:a[S5eURU5XR	U5'XPR
U'g)Nrzbpf_open_perf_event failed)r�bpf_open_perf_eventr�r�r�r3)r�rW�typ�configr^rs      rU�_open_perf_event�PerfEventArray._open_perf_event�sM��
�
$�
$�S�#�
;��
��6��8�9�9�"�i�i��m��X�X�c�]��"$���3�rWc�J�[5HnURXAX#5 M g)z�open_perf_event(typ, config)

Configures the table such that calls from the bpf program to
table.perf_read(CUR_CPU_IDENTIFIER) will return the hardware
counter denoted by event ev on the local cpu.
N)r
rj)r�rhrir^rSs     rU�open_perf_event�PerfEventArray.open_perf_events!��!�"�A��!�!�!�&�6�#rW)r4r3)rNr)rM)r�r�r�r�r�rr/rErNrIrjrmr�r�r�s@rUr�r��s3���!�
�
$� 
E�R�  %�D%�7�7rWr�c�X^�\rSrSrU4SjrU4SjrSrU4SjrSrSr	Sr
S	rU=r$)
r�ic�t>�URSS5Ul[[U]"U0UD6 UR
Ul[[55Ul	[R"UR5S-UlURS:XaURUR-UlgUR[R:Xa#[RUR-UlgUR[R:Xa#[R UR-Ulg[#S5e�N�reducerrrzLeaf must be aligned to 8 bytes)�poprrr�r�r�r��sLeafrcr�	total_cpur�r��	alignmentr��c_uint64r��c_int64r�r�s   �rUr��PerCpuHash.__init__s�����z�z�)�T�2���
�j�$�(�$�9�&�9��Y�Y��
��.�0�1������4�:�:�.��2����>�>�Q���
�
�T�^�^�3�D�I��z�z�R�Y�Y�&��K�K�$�.�.�8��	����r�x�x�'��J�J����7��	� �!B�C�CrWc��>�[[U]U5nURS:XaUnU$URUR
-"5n[
SUR
5H	nX$X4'M U$r)r�r�r"rvrtrurb�r�r�result�retrSr�s     �rU�getvalue�PerCpuHash.getvalue$sf����z�4�4�S�9���>�>�Q���C�
�
��:�:����.�1�C��1�d�n�n�-������.��
rWc��UR(a%[URURU55$URU5$r��rrrr~r3s  rUr"�PerCpuHash.__getitem__.s2���<�<��$�,�,��
�
�c�(:�;�;��=�=��%�%rWc�,>�[[U]X5 gr�)r�r�r+r�s   �rUr+�PerCpuHash.__setitem__4s���
�j�$�+�C�6rWc���[UR5[R5(a[	S5eUR[
URU555$�Nz6Leaf must be an integer type for default sum functions�rRr�r�r�r�rt�sumr~r3s  rUr��PerCpuHash.sum7�B���d�i�i�k�2�<�<�0�0��U�V�V��z�z�#�d�m�m�C�0�1�2�2rWc���[UR5[R5(a[	S5eUR[
URU555$�Nz6Leaf must be an integer type for default max functions�rRr�r�r�r�rt�maxr~r3s  rUr��PerCpuHash.max<r�rWc�V�URU5nURUR-$r��r�rru�r�rr|s   rU�average�PerCpuHash.averageA�"�����#����|�|�d�n�n�,�,rW�r�rvrrrtru)
r�r�r�r�r�r~r"r+r�r�r�r�r�r�s@rUr�r�s,���D�$�&�7�3�
3�
-�-rWr�c�(^�\rSrSrU4SjrSrU=r$)r�iEc�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��LruPerCpuHash.__init__F����
�m�T�+�T�<�V�<rWrOr�r�s@rUr�r�E�
���=�=rWr�c�^^�\rSrSrU4SjrU4SjrSrU4SjrSrSr	Sr
S	rS
rU=r
$)r�iIc�t>�URSS5Ul[[U]"U0UD6 UR
Ul[[55Ul	[R"UR5S-UlURS:XaURUR-UlgUR[R:Xa#[RUR-UlgUR[R:Xa#[R UR-Ulg[#S5erq)rsrrr�r�r�r�rtrcrrur�r�rvr�rwr�rxr�r�s   �rUr��PerCpuArray.__init__Js�����z�z�)�T�2���
�k�4�)�4�:�6�:��Y�Y��
��.�0�1������4�:�:�.��2����>�>�Q���
�
�T�^�^�3�D�I��z�z�R�Y�Y�&��K�K�$�.�.�8��	����r�x�x�'��J�J����7��	� �!B�C�CrWc��>�[[U]U5nURS:XaUnU$URUR
-"5n[
SUR
5H	nX$X4'M U$r)r�r�r"rvrtrurbr{s     �rUr~�PerCpuArray.getvalue\sf����{�D�5�c�:���>�>�Q���C�
�
��:�:����.�1�C��1�d�n�n�-������.��
rWc��UR(a%[URURU55$URU5$r�r�r3s  rUr"�PerCpuArray.__getitem__fs2���L�L��$�,�,��
�
�c�(:�;�;��=�=��%�%rWc�,>�[[U]X5 gr�)r�r�r+r�s   �rUr+�PerCpuArray.__setitem__ls���
�k�4�,�S�7rWc�&�URU5 gr�r	r3s  rUr/�PerCpuArray.__delitem__orrWc���[UR5[R5(a[	S5eUR[
URU555$r�r�r3s  rUr��PerCpuArray.sumsr�rWc���[UR5[R5(a[	S5eUR[
URU555$r�r�r3s  rUr��PerCpuArray.maxxr�rWc�V�URU5nURUR-$r�r�r�s   rUr��PerCpuArray.average}r�rWr�)r�r�r�r�r�r~r"r+r/r�r�r�r�r�r�s@rUr�r�Is1���D�$�&�8��3�
3�
-�-rWr�c�.^�\rSrSrU4SjrSrSrU=r$)r�i�c�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��LpmTrie.__init__�r�rWc��[er�)�NotImplementedErrorr�s rUr��LpmTrie.__len__�s��!�!rWrOr�r�s@rUr�r��s���7�"�"rWr�c�h^�\rSrSrSrSrSrSrSrU4Sjr	"SS	\
5rSS
jrSr
SrS
rU=r$)r�i��rnrrrc�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��StackTrace.__init__�s���
�j�$�(�$�9�&�9rWc�0�\rSrSrSSjrSrSrSrSrg)	�StackTrace.StackWalkeri�Nc�6�XlSUlX0lX lgr�)�stack�n�resolver�)r�r�r�r�s    rUr��StackTrace.StackWalker.__init__�s���J��D�F�"�L��JrWc��U$r�rOr�s rUr��StackTrace.StackWalker.__iter__�r�rWc�"�UR5$r�r�r�s rUr��StackTrace.StackWalker.__next__�r�rWc���U=RS-
slUR[R:Xa
[5eUR[R
-(ajURRURnUR[R:XdUR[R:Xa
[5eO#URRURnUS:XaS[R"5RS5(a URS:waURS:wa
[5eUR(aURU5$U$)Nrr�ppcr)r�r��	MAX_DEPTHr�r��BPF_F_STACK_BUILD_IDr��trace�status�BPF_STACK_BUILD_ID_IP�BPF_STACK_BUILD_ID_EMPTY�ip�platform�machine�
startswithr�)r��addrs  rUr��StackTrace.StackWalker.next�s����F�F�a�K�F��v�v��-�-�-�#�o�%��z�z�J�;�;�;��Z�Z�%�%�d�f�f�-�d����
� @� @�@����
� C� C�C�%��'�D��Z�Z�]�]�4�6�6�*�d��q�y�(�"2�"2�"4�"?�"?��"F�"F�4�6�6�UV�;�[_�[a�[a�ef�[f�'�/�)�)-���4�<�<��%�?�4�?rW)r�r�r�r�r�r�rOrWrU�StackWalkerr��s��	�	�	�	@rWr�c�f�[RXRU5URU5$r�)r�r�r�r�)r��stack_idr�s   rU�walk�StackTrace.walk�s'���%�%�d�8�8�H�+=�&>��
�
�G�T�TrWc�$�SnUHo!S-
nM	 U$r�rOr�s   rUr��StackTrace.__len__�r�rWc��gr�rOr�s rUrH�StackTrace.clear����rWrOr�)r�r�r�r�r�r�r��BPF_STACK_BUILD_ID_VALIDr�r�r�r�r�r�rHr�r�r�s@rUr�r��sI����I� �� !�� ����:�@�f�@�@U��

�
rWr�c�(^�\rSrSrU4SjrSrU=r$)r�i�c�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��DevMap.__init__�����
�f�d�$�d�5�f�5rWrOr�r�s@rUr�r���
���6�6rWr�c�(^�\rSrSrU4SjrSrU=r$)r�i�c�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��CpuMap.__init__�r�rWrOr�r�s@rUr�r��r�rWr�c�(^�\rSrSrU4SjrSrU=r$)r�i�c�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��XskMap.__init__�r�rWrOr�r�s@rUr�r��r�rWr�c�(^�\rSrSrU4SjrSrU=r$)r�i�c�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��MapInMapArray.__init__�r�rWrOr�r�s@rUr�r��r�rWr�c�(^�\rSrSrU4SjrSrU=r$)r�i�c�.>�[[U]
"U0UD6 gr�)r�r�r�r�s   �rUr��MapInMapHash.__init__�s���
�l�D�*�D�;�F�;rWrOr�r�s@rUr�r��s
���<�<rWr�c�J^�\rSrSrU4SjrSrSrSrSrS	Sjr	Sr
U=r$)
r�i�c�J>�[[U]
"U0UD6 SUlSUlgr�)r�r�r��_ringbufr4r�s   �rUr��RingBuf.__init__�s&���
�g�t�%�t�6�v�6���
� ��rWc��gr�rOr3s  rU�	__delitem�RingBuf.__delitem�r�rWc��gr�rOr�s rUr�RingBuf.__del__�r�rWc��grrOr�s rUr��RingBuf.__len__�s��rWc��URS:Xa[U5Ul[R"U[R"UR55R
$)z�event(data)

When ring buffers are opened to receive custom event,
the underlying event data struct which is defined in C in
the BPF program can be deduced via this function. This avoids
redundant definitions in Python.
Nr@rDs  rUrE�
RingBuf.event�rGrWc�^�U4Sjn[U5nURRURXB5 X@RS'g)z�open_ring_buffer(callback)

Opens a ring buffer to receive custom event data from the bpf program.
The callback will be invoked for each event submitted from the kernel,
up to millions per second.
c��>�T"XU5n[U5nU$! SnU$=f![a5nUR[R:Xa[	5 SnAW$UeSnAff=fr)rdrSrurTr�)�ctxrarUr}rVrJs     �rU�ringbuf_cb_�-RingBuf.open_ring_buffer.<locals>.ringbuf_cb_�sr���

��s�$�/����c�(�C��J����C��J���
��7�7�e�k�k�)��F�F��J��G��	
�s*�	$��!�$�$�
A#�(A�A�A#rN)rr��_open_ring_bufferr�r�)r�rJr�r�ras `   rU�open_ring_buffer�RingBuf.open_ring_buffer�s7���	�"�k�
*�����"�"�4�;�;��8��	�	�!�rW)r4r�r�)r�r�r�r�r��_RingBuf__delitemrr�rEr�r�r�r�s@rUr�r��s'���!�

�
��
E��rWr�c�L�\rSrSrSrSrSrSrS
SjrSr	Sr
S	rS
rSr
g)r�irc��XlX lX0lX@l[R
"URRUR5Ul[R"URRUR5Ul	[[R"URRUR55Ulgr�)
r�r�r�r�rr�r�r�r�r�rdr�r�)r�r�r�r�r�s     rUr��QueueStack.__init__s����������	��*�*�4�8�8�?�?�D�K�K�H��
��+�+�D�H�H�O�O�T�[�[�I��
��s�;�;�D�H�H�O�O���� ���rWc	�T�[R"[R"UR5S-5n[R
"URRURU[U5[R"U55nUS:a[S5eUR$rrr
s    rUr�QueueStack.leaf_sprintfrrWc���UR5n[R"URRUR
U[R"U55nUS:a[S5eU$rrrs    rUr�QueueStack.leaf_scanf!rrWc���[R"URS[R"U5U5nUS:a7[
R"[R"55n[SU-5eg)NrzCould not push to table: %sr%)r�rr�rr*s     rU�push�QueueStack.push)sU���!�!�$�+�+�t�R�X�X�d�^�U�K����7��[�[�����0�F��9�F�B�C�C�rWc��UR5n[R"URS[R
"U55nUS:a[
S5eU$)NrzCould not pop from table)r�r�bpf_lookup_and_deleter�r�r�r��r�rrs   rUrs�QueueStack.pop/sE���y�y�{���'�'����T�2�8�8�D�>�J����7��5�6�6��rWc��UR5n[R"URS[R
"U55nUS:a[
S5eU$)NrzCould not peek tablerrs   rU�peek�QueueStack.peek6sE���y�y�{���!�!�$�+�+�t�R�X�X�d�^�D����7��1�2�2��rWc#�# �URnU(a"UR5v� US-nU(aM!gg![a gf=f7fr)r�rsr�)r��cnts  rUr4�QueueStack.itervalues=sG��������
��h�h�j�!��q����c���
��
�s*�A	�9�A	�A	�
A�A	�A�A	c�L�UR5Vs/sHoPM sn$s snfr�r?r@s  rUrA�QueueStack.valuesGrCr=)r�r�r�r�r�r�r�N)r)r�r�r�r��	BPF_EXISTr�rrr
rsrr4rAr�rOrWrUr�r�s0���I����D����6rWr�r�)X�
__future__r�collections.abcr�ImportError�collections�timer�ctypesr��	functoolsrr'rur�r�r��libbccrr	r
rr�utilsr
rr�r�r�r�r�r�r�r�r�r�r�r�r�r��BPF_MAP_TYPE_SOCKMAPr�r��BPF_MAP_TYPE_SOCKHASH�BPF_MAP_TYPE_CGROUP_STORAGE� BPF_MAP_TYPE_REUSEPORT_SOCKARRAY�"BPF_MAP_TYPE_PERCPU_CGROUP_STORAGEr�r��BPF_MAP_TYPE_SK_STORAGE�BPF_MAP_TYPE_DEVMAP_HASH�BPF_MAP_TYPE_STRUCT_OPSr��BPF_MAP_TYPE_INODE_STORAGE�BPF_MAP_TYPE_TASK_STORAGErrpr�r�rVr]rZr{r}r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�rOrWrU�<module>r,sZ��&�+�.����	��	�
��\�\�"�$������� !������������!������������������ ��#%� �%'�"�������������������v������\��"�#5�	�
�m���~�
��m���~���:��!�"3���:������~������)�� ��!�"��#�$�:��!1�$�&;�&�(?������\��m��\��)����~�;�
�@
�	�����
�?��2$8�L<�:�8;�v-
�`gC��gC�T�	��7�i�7�6$�	�6$�p�I��	6�	�	6���(Q�)�Q�i7�Y�i7�X2-��2-�h=�J�=�6-�)�6-�p"�i�"�3
��3
�j6�Y�6�6�Y�6�6�Y�6�=�I�=�<�9�<�7�i�7�r=6�=6��s'�+�*�*�+�s�G�G-�,G-

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 85.33 KB 0644
containers.cpython-313.pyc File 3.44 KB 0644
disassembler.cpython-313.pyc File 19.09 KB 0644
libbcc.cpython-313.pyc File 26.88 KB 0644
perf.cpython-313.pyc File 9.82 KB 0644
syscall.cpython-313.pyc File 15.14 KB 0644
table.cpython-313.pyc File 67.64 KB 0644
tcp.cpython-313.pyc File 1.64 KB 0644
usdt.cpython-313.pyc File 13.91 KB 0644
utils.cpython-313.pyc File 6.46 KB 0644
version.cpython-313.pyc File 169 B 0644
Filemanager