403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /lib/python3.11/site-packages/ansible/playbook/role/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /lib/python3.11/site-packages/ansible/playbook/role/__pycache__/__init__.cpython-311.pyc
�

���c�m��:�ddlmZmZmZeZddlZddlmZm	Z	m
Z
mZddlm
ZddlmZmZmZddlmZddlmZmZddlmZdd	lmZdd
lmZddlmZddl m!Z!dd
l"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+ddl,m-Z-ddl.m/Z/ddgZ0d�Z1Gd�deee%e��Z2dS)�)�absolute_import�division�print_functionN)�	Container�Mapping�Set�Sequence)�	constants)�AnsibleError�AnsibleParserError�AnsibleAssertionError)�to_text)�binary_type�	text_type)�FieldAttribute)�Base)�CollectionSearch)�Conditional)�load_list_of_blocks)�RoleMetadata)�Taggable)�add_all_plugin_dirs)�AnsibleCollectionConfig)�
is_subpath)�Sentinel)�combine_vars�Role�hash_paramsc���t|t���rRt|ttf���s5t|t��r�	t|�����}n�#t$r^t��}|���D])\}}|�	|t|��f���*t|��}Yn�wxYwt|ttf��re	t|��}nc#t$rGt��}|D]$}|�	t|�����%t|��}YnwxYwt|��}|St|f��S)a�
    Construct a data structure of parameters that is hashable.

    This requires changing any mutable data structures into immutable ones.
    We chose a frozenset because role parameters have to be unique.

    .. warning::  this does not handle unhashable scalars.  Two things
        mitigate that limitation:

        1) There shouldn't be any unhashable scalars specified in the yaml
        2) Our only choice would be to return an error anyway.
    )
�
isinstancerrrr�	frozenset�items�	TypeError�set�addrrr	)�params�
new_params�k�vs    �C/usr/lib/python3.11/site-packages/ansible/playbook/role/__init__.pyrr3s|�� �&�)�$�$��Z���K�@X�-Y�-Y���f�g�&�&�	+�
3�&�v�|�|�~�~�6�6�
�
���
3�
3�
3� �U�U�
�"�L�L�N�N�8�8�D�A�q��N�N�A�{�1�~�~�#6�7�7�7�7�&�z�2�2�
�
�
�
3�������h��
0�
0�	+�
3�&�v�.�.�
�
���
3�
3�
3� �U�U�
��3�3�A��N�N�;�q�>�>�2�2�2�2�&�z�2�2�
�
�
�
3����#�6�*�*�J����f�Y���s&�
!A,�,A%C�C�4D�AE�Ec���eZdZed���Zed���Zd �fd�	Zd�Zd!d	�Ze	d d
���Z
d"d�Zd�Zd
�Z
d�Zd#d�Zd�Zd�Zd�Zd"d�Zd"d�Zd"d�Zd$d�Zd�Zd�Zd�Zd"d�Zd�Zd"d�Zd!�fd�	Zd!�fd�	Zd�Z�xZ S)%r�string)�isa�boolNFTc����d|_d|_d|_t��|_d|_d|_||_g|_g|_	g|_
g|_d|_t��|_
t��|_t��|_t��|_||_|�i}||_||_t)t*|�����dS�N)�
_role_name�
_role_path�_role_collection�dict�_role_params�_loader�	_metadata�_play�_parents�
_dependencies�_task_blocks�_handler_blocks�_compiled_handler_blocks�
_default_vars�
_role_vars�
_had_task_run�
_completed�_should_validate�_from_files�from_include�superr�__init__)�self�play�
from_filesrD�validate�	__class__s     �r*rFz
Role.__init__hs���������� $��� �F�F�����������
���
�������!���(,��%�!�V�V����&�&���!�V�V����&�&��� (������J�%���)���
�d�D���"�"�$�$�$�$�$�c�*�|���Sr0)�get_name�rGs r*�__repr__z
Role.__repr__�s���}�}���rLc�j�|r+d�d�|j|jfD����S|jS)N�.c3�K�|]}|�|V��	dSr0�)�.0�xs  r*�	<genexpr>z Role.get_name.<locals>.<genexpr>�s(����U�U�!�ST�U�A�U�U�U�U�U�UrL)�joinr3r1)rG�include_role_fqcns  r*rNz
Role.get_name�s>���	V��8�8�U�U��(=�t��'O�U�U�U�U�U�U���rLc� �|�i}	|���}|j�
|j|d<|j�
|j|d<|�||d<|jr
|j|d<||d<t	|��}|���|jvrX|j|������D]&\}}	||kr|r|	�|��|	cS�'t||||���}
|
�
||���|���|jvr(t��|j|���<|
|j|���|<|
S#t$rtd|j�	���wxYw)
N�when�tagsrI�varsrD)rHrIrDrJ)�parent_rolezvA recursion loop was detected with the roles specified. Make sure child roles do not have dependencies on parent roles)�obj)�get_role_paramsr[r\r]rrN�
ROLE_CACHEr"�
add_parentr�_load_role_datar4�RuntimeErrorr�_ds)�role_includerHr^rIrDrJr&�
hashed_params�entry�role_obj�rs           r*�loadz	Role.load�s������J�*	5�"�1�1�3�3�F�� �,�!-�!2��v��� �,�!-�!2��v���%�'1��|�$�� �
3�!-�!2��v��%1�F�>�"�'��/�/�M��$�$�&�&�$�/�9�9�)-���9N�9N�9P�9P�)Q�)W�)W�)Y�)Y�(�(�%�U�H�$��-�-�&�=�$�/�/��<�<�<�'����.��$�:�L�[c�d�d�d�A�
���l���D�D�D��$�$�&�&�d�o�=�=�;?�6�6���� 5� 5� 7� 7�8�GH�D�O�L�1�1�3�3�4�]�C��H���	5�	5�	5�� X�#/�#3�5�5�5�
5�	5���s�CE,�BE,�,!F
c
���|j�_|����_|j�_|����_|����_|�	���_
|r��|���jD]-}t�d|��t|d|��t�����.��d�j�d��d����_�j�i�_n1t)�jt*��st-d�jz�����d�j�d��d����_�j�i�_n1t)�jt*��st-d�jz�����d��}|rAt1j|��j�j
�	���_�����_nt1���_g�_�jr!�j�d
�j��n=t>j }|r�j�d
|��tC�j���jjr0�j�"�fd��jjD�����jr7�jrdnd
}d�jvr#d
�jvr�j�#|����d�j�d�����}�j$r*��%��}��&||��}|rV	tO|�j(��j
�j����_)n,#tT$r}	t-d�jz||	����d}	~	wwxYw��d�j�d�����}
|
rX	tO|
�j(�d�j
�j����_+dS#tT$r}	t-d�jz|
|	����d}	~	wwxYwdS)N�_r]T)�main�	allow_dirzKThe vars/main.yml file for role '%s' must contain a dictionary of variables�defaultszOThe defaults/main.yml file for role '%s' must contain a dictionary of variables�meta)�owner�variable_manager�loaderrc3�.�K�|]}|�jv�|V��dSr0)�collections)rU�crGs  �r*rWz'Role._load_role_data.<locals>.<genexpr>�s1�����$h�$h�1�a�W[�Wg�Ng�Ng�Q�Ng�Ng�Ng�Ng�$h�$hrLzansible.builtinzansible.legacy�tasks�rn)rH�rolertrszBThe tasks/main.yml file for role '%s' must contain a list of tasks)r_�orig_exc�handlers)rHrz�use_handlersrtrszEThe handlers/main.yml file for role '%s' must contain a list of tasks),rzr1�
get_role_pathr2r3r`r5�get_variable_manager�_variable_manager�
get_loaderr6rb�fattributes�setattr�getattrr�_load_role_yamlrC�getr?r rrr>rrkr7�_load_dependenciesr:rv�insertr�default_collectionr�extend�appendrB�_get_role_argspecs�_prepend_validation_taskrr8r;�AssertionErrorr<)rGrfr^�	attr_name�metadatar��default_append_collection�	task_data�
role_argspecs�e�handler_datas`          r*rczRole._load_role_data�s���&�+���&�4�4�6�6��� ,� =���(�8�8�:�:���!-�!B�!B�!D�!D���#�.�.�0�0����	)��O�O�K�(�(�(��)�	]�	]�I��D�/�i�/�/�7�<��Y���RZ�+[�+[�\�\�\�\��.�.�v�D�<L�<P�<P�QW�<X�<X�dh�.�i�i����?�"� �D�O�O��D�O�W�5�5�	F�$�%r�uy�vE�&E�F�F�
F�!�1�1�*�4�CS�CW�CW�Xb�Cc�Cc�os�1�t�t�����%�!#�D����D�.��8�8�	J�$�%v�y}�zI�&I�J�J�
J��'�'��/�/���	,�)�.�x�t�VZ�Vl�uy�vB�C�C�C�D�N�!%�!8�!8�!:�!:�D���)�^�^�D�N����� �	1���#�#�A�t�'<�=�=�=�=�!8�!K��!�
?�� �'�'��+=�>�>�>����0�0�0��>�%�	j���#�#�$h�$h�$h�$h���0J�$h�$h�$h�i�i�i���	C�=A�=R�(h�(9�(9�Xh�%� ��(8�8�8�=M�UY�Ue�=e�=e�� �'�'�(A�B�B�B��(�(��t�7G�7K�7K�G�7T�7T�(�U�U�	�� �	P� �3�3�5�5�M��5�5�i��O�O�I��	D�
D�$7�	��
�Y]�fj�fr�FJ�F\�%]�%]�%]��!�!��!�
D�
D�
D�(�)m�pt�p�)�-6��D�D�D�D�����
D�����+�+�J�T�=M�=Q�=Q�R\�=]�=]�+�^�^���	G�
G�':�<�d�j�_c�rv�@D�@L�LP�Lb�(d�(d�(d��$�$�$��!�
G�
G�
G�(�)p�sw�tC�*C�-9�A�G�G�G�G�����
G����		G�	Gs0�((N�
N:�N5�5N:�/)P�
Q�$P>�>Qc�`�tj�|jdd��}tjD]f}||z}|j�|��rE|�dd���}	|�	d��picS#t$ricYcSwxYw�gt|jdi��S)a�Get the role argument spec data.

        Role arg specs can be in one of two files in the role meta subdir: argument_specs.yml
        or main.yml. The former has precedence over the latter. Data is not combined
        between the files.

        :returns: A dict of all data under the top-level ``argument_specs`` YAML key
            in the argument spec file. An empty dict is returned if there is no
            argspec data.
        rq�argument_specsry)
�os�pathrXr2�C�YAML_FILENAME_EXTENSIONSr6�path_existsr�r��AttributeErrorr�r7)rG�base_argspec_path�ext�	full_pathr�s     r*r�zRole._get_role_argspecss����G�L�L���&�BR�S�S���-�	�	�C�)�C�/�I��|�'�'�	�2�2�
�!%�!5�!5�f�CS�!5�!T�!T���)�-�-�.>�?�?�E�2�E�E�E��%�����I�I�I�I�I�����
��t�~�'7��<�<�<s�,B�B�Bc���|rb|j�dd��}|�|��}|r0|�||��}|sg}|�d|��|S)a�Insert a role validation task if we have a role argument spec.

        This method will prepend a validation task to the front of the role task
        list to perform argument spec validation before any other tasks, if an arg spec
        exists for the entry point. Entry point defaults to `main`.

        :param task_data: List of tasks loaded from the role.
        :param argspecs: The role argument spec data dict.

        :returns: The (possibly modified) task list.
        rxrnr)rCr��_create_validation_taskr�)rGr��argspecs�
entrypoint�entrypoint_arg_spec�validation_tasks      r*r�zRole._prepend_validation_task/s����	5��)�-�-�g�v�>�>�J�"*�,�,�z�":�":��"�
5�"&�">�">�?R�T^�"_�"_��
!�#� "�I�� � ��O�4�4�4��rLc��d|z}d|vr|dz|dz}d|�di��|jd|j||jd�d�|d	gd
�S)a�Create a new task data structure that uses the validate_argument_spec action plugin.

        :param argument_spec: The arg spec definition for a particular role entry point.
            This will be the entire arg spec for the entry point as read from the input file.
        :param entrypoint_name: The name of the role entry point associated with the
            supplied `argument_spec`.
        z*Validating arguments against arg spec '%s'�short_descriptionz - z&ansible.builtin.validate_argument_spec�optionsrz)�type�name�argument_spec_namer�)�module�
argument_spec�provided_arguments�validate_args_context�always)�actionr�r\)r�r5r1r2)rGr��entrypoint_name�	task_names    r*r�zRole._create_validation_taskLs���A�?�R�	��-�/�/�!�E�)�M�:M�,N�N�I�C�!.�!2�!2�9�b�!A�!A�&*�&7�"� �O�*9� �O�	*�*�����J�
�
�	
rLc���d}tj�|j|��}|j�|���r|j�|���rgd�}|�d}|�d��n|}|�dd��|j�	||||��}|r�|D]�}	t|	|��s8tdt|	���d|j
�dt|���d	����|j�|	��}
|
r.|�&t|
t ��rt#||
��}n|
}|sn��n|�td
|�d|�����|S)aj
        Find and load role YAML files and return data found.
        :param subdir: subdir of role to search (vars, files, tasks, handlers, defaults)
        :type subdir: string
        :param main: filename to match, will default to 'main.<ext>' if not provided.
        :type main: string
        :param allow_dir: If true we combine results of multiple matching files found.
                          If false, highlander rules. Only for vars(dicts) and not tasks(lists).
        :type allow_dir: bool

        :returns: data from the matched file(s), type can be dict or list depending on vars or tasks.
        N)z.ymlz.yamlz.jsonrn�rzFailed loading 'z' for role (z/) as it is not inside the expected role path: '�'z'Could not find specified file in role: �/)r�r�rXr2r6r��is_directoryr�r��find_vars_filesrrrr1�load_from_filer rr)rG�subdirrnro�data�	file_path�
extensions�_main�found_files�found�new_datas           r*r�zRole._load_role_yamlks������G�L�L���&�9�9�	��<�#�#�I�.�.�#	j�4�<�3L�3L�Y�3W�3W�#	j�3�3�3�J��|����!�!�"�%�%�%�%����!�!�!�R�(�(�(��,�6�6�y�%��U^�_�_�K��
j�(�"�"�E�%�e�Y�7�7�h�0�0�29�%�.�.�.�.�$�/�/�/�SZ�[d�Se�Se�Se�Se�2g�h�h�h� $�|�:�:�5�A�A�H��"��+�
�8�W�0M�0M�+�#/��h�#?�#?�D�D�#+�D� )�"�!�E����!�(�(�[a�[a�[a�cg�cg�)h�i�i�i��rLc��g}|jrF|jjD]9}t�||j|���}|�|���:|S)zr
        Recursively loads role dependencies from the metadata list of
        dependencies, if it exists
        )rHr^)r7�dependenciesrrkr8r�)rG�depsrfrjs    r*r�zRole._load_dependencies�sV�����>�	� $�� ;�
�
���I�I�l����I�N�N�����A������rLc��t|t��st���||jvr|j�|��dSdS)z/ adds a role to the list of this roles parents N)r rr
r9r�)rGr^s  r*rbzRole.add_parent�sQ���+�t�,�,�	*�'�)�)�)��d�m�+�+��M� � ��-�-�-�-�-�,�+rLc��|jSr0)r9rOs r*�get_parentszRole.get_parents�s
���}�rLc��|�gn|}t��}|���D]$}t||�����}�%|r|D]}t||j��}�t||j��}|Sr0)r4�get_all_dependenciesr�get_default_varsr>)rG�	dep_chain�default_vars�dep�parents     r*r�zRole.get_default_vars�s���#�+�B�B��	��v�v���,�,�.�.�	N�	N�C�'��c�6J�6J�6L�6L�M�M�L�L��	P�#�
P�
P��+�L�&�:N�O�O���#�L�$�2D�E�E���rLc��|�gn|}t��}|r/|D],}t||j��}t||j��}�-|Sr0)r4rr]r?)rGr��inherited_varsr�s    r*�get_inherited_varszRole.get_inherited_vars�s^��#�+�B�B��	������	Q�#�
Q�
Q��!-�n�f�k�!J�!J��!-�n�f�>O�!P�!P����rLc�x�|�gn|}i}|r|D]}t||j��}�t||j��}|Sr0)rr5)rGr�r&r�s    r*r`zRole.get_role_params�sZ��#�+�B�B��	����	C�#�
C�
C��%�f�f�.A�B�B����f�d�&7�8�8���
rLc�R�|�gn|}|�|��}|���D]&}t||�|�����}�'t||j��}t||j��}|r$t||�|�����}|S)N)�include_params)r�)r�r�r�get_varsr]r?r`)rGr�r��all_varsr�s     r*r�z
Role.get_vars�s���#�+�B�B��	��*�*�9�5�5���,�,�.�.�	[�	[�C�#�H�c�l�l�.�l�.Y�.Y�Z�Z�H�H���$�)�4�4����$�/�:�:���	Y�#�H�d�.B�.B�Y�.B�.W�.W�X�X�H��rLc� �|jdd�Sr0)r:rOs r*�get_direct_dependencieszRole.get_direct_dependencies�s���!�!�!�!�$�$rLc��g}|���D]C}|���D]}|�|���|�|���D|S)z�
        Returns a list of all deps, built recursively from all child dependencies,
        in the proper order in which they should be executed or evaluated.
        )r�r�r�)rG�
child_depsr��	child_deps    r*r�zRole.get_all_dependencies�ss���
��/�/�1�1�	#�	#�C� �5�5�7�7�
-�
-�	��!�!�)�,�,�,�,����c�"�"�"�"��rLc� �|jdd�Sr0)r;rOs r*�get_task_blockszRole.get_task_blocks�s��� ����#�#rLc�P�|jr|jSgx|_}|�g}||gz}|���D].}|�||���}|�|���/|jD]9}|���}||_||_|�|���:|S)N�rHr�)	r=r��get_handler_blocksr�r<�copy�
_dep_chainr8r�)	rGrHr��
block_list�
new_dep_chainr��
dep_blocks�
task_block�new_task_blocks	         r*r�zRole.get_handler_blockss����(�	1��0�0�57�7��%�
����I�!�T�F�*�
��/�/�1�1�	*�	*�C��/�/�T�]�/�S�S�J����j�)�)�)�)��.�	.�	.�J�'�_�_�.�.�N�(5�N�%�#'�N� ����n�-�-�-�-��rLc�8�|j|jvo|jjS)zs
        Returns true if this role has been iterated over completely and
        at least one task was run
        )r�rAr7�allow_duplicates)rG�hosts  r*�has_runzRole.has_runs ���y�D�O�+�S�D�N�4S�0S�SrLc�R�ddlm}ddlm}g}|�g}||gz}|���}|D].}|�||���}	|�|	���/|jD]9}
|
���}||_	||_
|�|���:||���}|j|_||_
|j|_d|_||���}
||
_
d	|
_d
di|
_d|
_d
g|
_d|
_|
g|_|�|��|S)a�
        Returns the task list for this role, which is created by first
        recursively compiling the tasks for all direct dependencies, and
        then adding on the tasks for this role.

        The role compile() also remembers and saves the dependency chain
        with each task, so tasks know by which route they were found, and
        can correctly take their parent's tags/conditionals into account.
        r)�Block)�TaskNr�)rHF)�blockrq�_raw_params�
role_completeTr�)�ansible.playbook.blockr��ansible.playbook.taskr�r��compiler�r;r�r�r8r�r6�_roler��run_oncer��args�implicitr\r[r�)rGrHr�r�r�r�r�r�r�r�r�r��	eor_block�eor_tasks              r*r�zRole.compile%sw��	1�0�0�0�0�0�.�.�.�.�.�.��
����I�!�T�F�*�
��+�+�-�-���	*�	*�C����$�-��H�H�J����j�)�)�)�)��+�	.�	.�J�'�_�_�.�.�N�(5�N�%�#'�N� ����n�-�-�-�-��E�t�$�$�$�	� �L�	���	��&*�&<�	�#�"�	���4�i�(�(�(����� ���&��8��
� ���!�
��
���
�#�*�	�����)�$�$�$��rLc�r��tt|�����}|j|d<|j|d<|j|d<|j|d<|j|d<|j�	��|d<|j
�	��|d<|jr|j���|d<|rEg}|���D])}|�
|������*||d	<g}|jD]+}|�
|�d
������,||d<|S)
Nr1r2r?r5r>r@rAr7r:F��include_depsr9)rEr�	serializer1r2r?r5r>r@r�rAr7r�r�r9)rGr��resr�rz�parentsr�rKs       �r*rzRole.serializeWsL����D�$���)�)�+�+�� �O��L�� �O��L�� �O��L��"�/��N��#�1��O��#�1�6�6�8�8��O�� �O�0�0�2�2��L���>�	:�#�~�7�7�9�9�C����	(��D��4�4�6�6�
.�
.�����D�N�N�,�,�-�-�-�-�#'�C�� ����m�	A�	A�F��N�N�6�+�+��+�?�?�@�@�@�@�!��J���
rLc�h��|�dd��|_|�dd��|_|�dt����|_|�dt����|_|�dt����|_|�dt����|_|�dt����|_|rdg}|�d	g��D]:}t��}|�
|��|�|���;t|d	|��|�d
g��}g}|D]<}t��}|�
|d���|�|���=t|d
|��|�d
��}	|	r*t��}
|
�
|	��|
|_tt|���
|��dS)Nr1r�r2r?r5r>r@rAr:r9Fr�r7)r�r1r2r4r?r5r>r@rAr�deserializer�r�rr7rE)rGr�r�r�r�rj�parent_datarr��
metadata_data�mrKs           �r*rzRole.deserializers�����(�(�<��4�4����(�(�<��4�4����(�(�<����8�8��� �H�H�^�T�V�V�<�<���!�X�X�o�t�v�v�>�>���!�X�X�o�t�v�v�>�>����(�(�<����8�8����	1��D��x�x���4�4�
�
���F�F���
�
�c�"�"�"����A������D�/�4�0�0�0��h�h�z�2�.�.����!�	�	�F����A�
�M�M�&�u�M�5�5�5��N�N�1�������j�'�*�*�*�����-�-�
��	����A�
�M�M�-�(�(�(��D�N�
�d�D���%�%�d�+�+�+�+�+rLc��||_|jD]}|�|���|���D]}|�|���dSr0)r6r9�
set_loaderr�)rGrtr�r�s    r*r	zRole.set_loader�sk������m�	&�	&�F����f�%�%�%�%��/�/�1�1�	#�	#�C��N�N�6�"�"�"�"�	#�	#rL)NNFT)Tr0)NF)NT)!�__name__�
__module__�__qualname__r�delegate_to�delegate_factsrFrPrN�staticmethodrkrcr�r�r�r�r�rbr�r�r�r`r�r�r�r�r�r�r�rrr	�
__classcell__)rKs@r*rrcs5������� �.�X�.�.�.�K�#�^��/�/�/�N�%�%�%�%�%�%�:�������
�.5�.5�.5��\�.5�`SG�SG�SG�SG�j=�=�=�8���:
�
�
�>4�4�4�4�l��� .�.�.����
�
�
�
�	�	�	�	�����
�
�
�
�%�%�%�
�
�
�$�$�$�����8T�T�T�0�0�0�0�d������6,�,�,�,�,�,�B#�#�#�#�#�#�#rL)3�
__future__rrrr��
__metaclass__r��collections.abcrrrr	�ansibler
r��ansible.errorsrrr
�ansible.module_utils._textr�ansible.module_utils.sixrr�ansible.playbook.attributer�ansible.playbook.baser�!ansible.playbook.collectionsearchr�ansible.playbook.conditionalr�ansible.playbook.helpersr�ansible.playbook.role.metadatar�ansible.playbook.taggabler�ansible.plugins.loaderr�ansible.utils.collection_loaderr�ansible.utils.pathr�ansible.utils.sentinelr�ansible.utils.varsr�__all__rrrTrLr*�<module>r%s���&C�B�B�B�B�B�B�B�B�B��
�	�	�	�	�=�=�=�=�=�=�=�=�=�=�=�=�"�"�"�"�"�"�R�R�R�R�R�R�R�R�R�R�.�.�.�.�.�.�;�;�;�;�;�;�;�;�5�5�5�5�5�5�&�&�&�&�&�&�>�>�>�>�>�>�4�4�4�4�4�4�8�8�8�8�8�8�7�7�7�7�7�7�.�.�.�.�.�.�6�6�6�6�6�6�C�C�C�C�C�C�)�)�)�)�)�)�+�+�+�+�+�+�+�+�+�+�+�+��=�
!��- �- �- �`u#�u#�u#�u#�u#�4��h�(8�u#�u#�u#�u#�u#rL

Youez - 2016 - github.com/yon3zu
LinuXploit