%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/certbot/5893/lib/python3.12/site-packages/cryptography/x509/__pycache__/
Upload File :
Create Path :
Current File : //snap/certbot/5893/lib/python3.12/site-packages/cryptography/x509/__pycache__/base.cpython-312.pyc

�

��j�n�	���ddlmZddlZddlZddlZddlmZddlmZddl	m
Zddlm
Z
ddlmZmZmZmZmZmZmZmZmZmZddlmZmZdd	lmZmZmZdd
l m!Z!m"Z"ddl#m$Z$ejdd
d
�Z%ejLe
jNe
jPe
jRe
jTe
jVe
jXe
jZe
j\fZ/Gd�de0�Z1						d$d�Z2						d%d�Z3d&d�Z4Gd�d�Z5Gd�d�Z6Gd�dejn�Z8Gd�de0�Z9ejtZ:ejvZ;ejxZ<ejzZ=ej|Z>ej~Z?ej�Z@ej�ZAej�ZBej�ZCej�ZDGd�d�ZEGd�d�ZFGd�d �ZGGd!�d"�ZHd'd#�ZIy)(�)�annotationsN)�Iterable)�utils)�x509)�hashes)
�dsa�ec�ed448�ed25519�mldsa�mlkem�padding�rsa�x448�x25519)� CertificateIssuerPrivateKeyTypes�CertificatePublicKeyTypes)�	Extension�
ExtensionType�_make_sequence_methods)�Name�	_ASN1Type)�ObjectIdentifieri��c� ��eZdZd�fd�Z�xZS)�AttributeNotFoundc�2��t�|�|�||_y�N)�super�__init__�oid)�self�msgr!�	__class__s   ��R/root/parts/certbot/install/lib/python3.12/site-packages/cryptography/x509/base.pyr zAttributeNotFound.__init__8s���
��������)r#�strr!r�return�None��__name__�
__module__�__qualname__r �
__classcell__�r$s@r%rr7s
����r&rc�Z�|D]&}|j|jk(s�td��y)Nz$This extension has already been set.)r!�
ValueError)�	extension�
extensions�es   r%�_reject_duplicate_extensionr5=s1��
�E���5�5�I�M�M�!��C�D�D�Er&c�:�|D]\}}}||k(s�
td��y)Nz$This attribute has already been set.)r1)r!�
attributes�attr_oid�_s    r%�_reject_duplicate_attributer:Gs.��
%�E���!�Q��s�?��C�D�D�Er&c��|j�=|j�}|r|ntj�}|j	d��|z
S|S)z�Normalizes a datetime to a naive datetime in UTC.

    time -- datetime to normalize. Assumed to be in UTC if not timezone
            aware.
    N)�tzinfo)r<�	utcoffset�datetime�	timedelta�replace)�time�offsets  r%�_convert_to_naive_utc_timerCQsG���{�{�����!��!��x�'9�'9�';���|�|�4�|�(�6�1�1��r&c��eZdZejj
f							dd�Zed	d��Zed
d��Zdd�Z	dd�Z
d
d�Zy)�	Attributec�.�||_||_||_yr)�_oid�_value�_type)r"r!�valuerIs    r%r zAttribute.__init__`s����	������
r&c��|jSr)rG�r"s r%r!z
Attribute.oidjs���y�y�r&c��|jSr)rHrLs r%rJzAttribute.valuens���{�{�r&c�<�d|j�d|j�d�S)Nz<Attribute(oid=z, value=�)>)r!rJrLs r%�__repr__zAttribute.__repr__rs�� ����
�(�4�:�:�.��C�Cr&c���t|t�stS|j|jk(xr4|j|jk(xr|j
|j
k(Sr)�
isinstancerE�NotImplementedr!rJrI)r"�others  r%�__eq__zAttribute.__eq__usS���%��+�!�!�
�H�H��	�	�!�
*��
�
�e�k�k�)�
*��
�
�e�k�k�)�	
r&c�Z�t|j|j|jf�Sr)�hashr!rJrIrLs r%�__hash__zAttribute.__hash__s ���T�X�X�t�z�z�4�:�:�6�7�7r&N)r!rrJ�bytesrI�intr(r))r(r)r(rY�r(r')rT�objectr(�bool�r(rZ)r+r,r-r�
UTF8StringrJr �propertyr!rPrUrX�r&r%rErE_sv��
�)�)�/�/�	�
�����	�

����������D�
�8r&rEc�D�eZdZ				dd�Zed�\ZZZdd�Zdd�Z	y)	�
Attributesc�$�t|�|_yr)�list�_attributes)r"r7s  r%r zAttributes.__init__�s�� �
�+��r&rfc�"�d|j�d�S)Nz<Attributes(rO)rfrLs r%rPzAttributes.__repr__�s���d�.�.�/�r�2�2r&c�V�|D]}|j|k(s�|cStd|�d�|��)NzNo z attribute was found)r!r)r"r!�attrs   r%�get_attribute_for_oidz Attributes.get_attribute_for_oid�s:���	�D��x�x�3����	� �#�c�U�*>� ?��E�Er&N)r7zIterable[Attribute]r(r)r[)r!rr(rE)
r+r,r-r r�__len__�__iter__�__getitem__rPrjrar&r%rcrc�s7��,�'�,�
�,�&<�M�%J�"�G�X�{�3�Fr&rcc��eZdZdZdZy)�Versionr�N)r+r,r-�v1�v3rar&r%roro�s��	
�B�	
�Br&roc� ��eZdZd�fd�Z�xZS)�InvalidVersionc�2��t�|�|�||_yr)rr �parsed_version)r"r#rvr$s   �r%r zInvalidVersion.__init__�s���
�����,��r&)r#r'rvrZr(r)r*r/s@r%rtrt�s
���-�-r&rtc��eZdZdggf					d	d�Zd
d�Z						dd�Zdd�							dd�Z	d
ddd�											dd�Zy)� CertificateSigningRequestBuilderNc�.�||_||_||_y)zB
        Creates an empty X.509 certificate request (v1).
        N)�
_subject_name�_extensionsrf)r"�subject_namer3r7s    r%r z)CertificateSigningRequestBuilder.__init__�s��*���%���%��r&c��t|t�std��|j�t	d��t||j|j�S)zF
        Sets the certificate requestor's distinguished name.
        �Expecting x509.Name object.�&The subject name may only be set once.)rRr�	TypeErrorrzr1rxr{rf�r"�names  r%r|z-CertificateSigningRequestBuilder.subject_name�sR���$��%��9�:�:����)��E�F�F�/��$�"�"�D�$4�$4�
�	
r&c���t|t�std��t|j||�}t||j�t|jg|j�|�|j�S)zE
        Adds an X.509 extension to the certificate request.
        �"extension must be an ExtensionType)
rRrr�rr!r5r{rxrzrf�r"�extval�criticalr2s    r%�
add_extensionz.CertificateSigningRequestBuilder.add_extension�sn���&�-�0��@�A�A��f�j�j�(�F�;�	�#�I�t�/?�/?�@�/����*�d���*�	�*����
�	
r&)�_tagc�Z�t|t�std��t|t�std��|�t|t�std��t||j�|�
|j}nd}t|j|jg|j�|||f��S)zK
        Adds an X.509 attribute with an OID and associated value.
        zoid must be an ObjectIdentifierzvalue must be bytesNztag must be _ASN1Type)rRrr�rYrr:rfrJrxrzr{)r"r!rJr��tags     r%�
add_attributez.CertificateSigningRequestBuilder.add_attribute�s����#�/�0��=�>�>��%��'��1�2�2���J�t�Y�$?��3�4�4�#�C��)9�)9�:����*�*�C��C�/�������2�d���2��e�S� 1�2�
�	
r&��rsa_padding�ecdsa_deterministicc�h�|j�td��|�Zt|tjtj
f�st
d��t|tj�st
d��|�%t|tj�st
d��tj|||||�S)zF
        Signs the request using the requestor's private key.
        z/A CertificateSigningRequest must have a subject�Padding must be PSS or PKCS1v15�&Padding is only supported for RSA keys�1Deterministic ECDSA is only supported for EC keys)
rzr1rRr�PSS�PKCS1v15r�r�
RSAPrivateKeyr	�EllipticCurvePrivateKey�	rust_x509�create_x509_csr�r"�private_key�	algorithm�backendr�r�s      r%�signz%CertificateSigningRequestBuilder.signs������%��N�O�O��"��k�G�K�K��9I�9I�+J�K�� A�B�B��k�3�+<�+<�=�� H�I�I��*��k�2�+E�+E�F��G����(�(������
�	
r&)r|�Name | Noner3�list[Extension[ExtensionType]]r7�0list[tuple[ObjectIdentifier, bytes, int | None]])r�rr(rx)r�rr�r]r(rx)r!rrJrYr�z_ASN1Type | Noner(rxr)r�rr��_AllowedHashTypes | Noner��
typing.Anyr��%padding.PSS | padding.PKCS1v15 | Noner��bool | Noner(�CertificateSigningRequest)r+r,r-r r|r�r�r�rar&r%rxrx�s���%)�57�GI�	&�!�&�3�&�E�	&�

�
�#�
�/3�
�	)�
�."&�
�
�
��
�
�
�
*�

�H#�	!
�>B�+/�!
�5�!
�,�!
��	!
�;�
!
�)�!
�
#�!
r&rxc���eZdZUded<ddddddgdf																	dd�Zdd�Zdd�Zdd�					dd�Zdd	�Zdd
�Z	dd�Z
						dd�Z	dddd
�											dd�Zdd�Z
y)�CertificateBuilderr�r{Nc	��tj|_||_||_||_||_||_||_||_	||_
yr)rorr�_version�_issuer_namerz�_public_key�_serial_number�_not_valid_before�_not_valid_afterr{�_public_key_rsa_padding)	r"�issuer_namer|�
public_key�
serial_number�not_valid_before�not_valid_afterr3�public_key_rsa_paddings	         r%r zCertificateBuilder.__init__)sO�� �
�
��
�'���)���%���+���!1��� /���%���'=��$r&c
��t|t�std��|j�t	d��t||j|j|j|j|j|j|j�S)z3
        Sets the CA's distinguished name.
        r~�%The issuer name may only be set once.)
rRrr�r�r1r�rzr�r�r�r�r{r�r�s  r%r�zCertificateBuilder.issuer_name>s����$��%��9�:�:����(��D�E�E�!������������"�"��!�!�����(�(�	
�		
r&c
��t|t�std��|j�t	d��t|j||j|j|j|j|j|j�S)z:
        Sets the requestor's distinguished name.
        r~r)
rRrr�rzr1r�r�r�r�r�r�r{r�r�s  r%r|zCertificateBuilder.subject_nameQs����$��%��9�:�:����)��E�F�F�!������������"�"��!�!�����(�(�	
�		
r&)r�c���t|tjtjt
jtjtjtjtjtjtj tj"t$j&t(j*f�st-d��|�B|t.j0urt-d��t|tj�st-d��|j2�t5d��t7|j8|j:||j<|j>|j@|jB|�S)zT
        Sets the requestor's public key (as found in the signing request).
        z�Expecting one of DSAPublicKey, RSAPublicKey, EllipticCurvePublicKey, Ed25519PublicKey, Ed448PublicKey, MLDSA44PublicKey, MLDSA65PublicKey, MLDSA87PublicKey, MLKEM768PublicKey, MLKEM1024PublicKey, X25519PublicKey or X448PublicKey.z2rsa_padding must be the PSS class, not an instancez2rsa_padding is only supported with RSA public keysz$The public key may only be set once.)"rRr�DSAPublicKeyr�RSAPublicKeyr	�EllipticCurvePublicKeyr�Ed25519PublicKeyr
�Ed448PublicKeyr�MLDSA44PublicKey�MLDSA65PublicKey�MLDSA87PublicKeyr
�MLKEM768PublicKey�MLKEM1024PublicKeyr�X25519PublicKeyr�
X448PublicKeyr�rr�r�r1r�r�rzr�r�r�r{)r"�keyr�s   r%r�zCertificateBuilder.public_keyds=����� � �� � ��)�)��(�(��$�$��&�&��&�&��&�&��'�'��(�(��&�&��"�"�

�
�"�5��
��"��'�+�+�-��H����c�3�#3�#3�4��H������'��C�D�D�!������������"�"��!�!�����	
�		
r&c
�r�t|t�std��|j�t	d��|dkrt	d��|j�dk\rt	d��t
|j|j|j||j|j|j|j�S)z5
        Sets the certificate serial number.
        �'Serial number must be of integral type.�'The serial number may only be set once.rz%The serial number should be positive.��3The serial number should not be more than 159 bits.)rRrZr�r�r1�
bit_lengthr�r�rzr�r�r�r{r��r"�numbers  r%r�z CertificateBuilder.serial_number�s����&�#�&��E�F�F����*��F�G�G��Q�;��D�E�E�����#�%��E��
�"������������"�"��!�!�����(�(�	
�		
r&c
��t|tj�std��|j�t	d��t|�}|tkrt	d��|j�||jkDrt	d��t|j|j|j|j||j|j|j�S)z7
        Sets the certificate activation time.
        �Expecting datetime object.z*The not valid before may only be set once.z>The not valid before date must be on or after 1950 January 1).zBThe not valid before date must be before the not valid after date.)rRr>r�r�r1rC�_EARLIEST_UTC_TIMEr�r�r�rzr�r�r{r��r"rAs  r%r�z#CertificateBuilder.not_valid_before�s����$�� 1� 1�2��8�9�9��!�!�-��I�J�J�)�$�/���$�$��$��
�� � �,���8M�8M�1M����
�"���������������!�!�����(�(�	
�		
r&c
��t|tj�std��|j�t	d��t|�}|tkrt	d��|j�||jkrt	d��t|j|j|j|j|j||j|j�S)z7
        Sets the certificate expiration time.
        r�z)The not valid after may only be set once.z<The not valid after date must be on or after 1950 January 1.zAThe not valid after date must be after the not valid before date.)rRr>r�r�r1rCr�r�r�r�rzr�r�r{r�r�s  r%r�z"CertificateBuilder.not_valid_after�s����$�� 1� 1�2��8�9�9�� � �,��H�I�I�)�$�/���$�$��N��
�
�"�"�.��t�-�-�-����
�"��������������"�"������(�(�	
�		
r&c
�^�t|t�std��t|j||�}t||j�t|j|j|j|j|j|jg|j�|�|j�S)z=
        Adds an X.509 extension to the certificate.
        r�)rRrr�rr!r5r{r�r�rzr�r�r�r�r�r�s    r%r�z CertificateBuilder.add_extension�s����&�-�0��@�A�A��f�j�j�(�F�;�	�#�I�t�/?�/?�@�!��������������"�"��!�!�*�d���*�	�*��(�(�	
�		
r&r�c�h�|j�td��|j�td��|j�td��|j�td��|j
�td��|j�td��|�td��|�Zt|tjtjf�std��t|tj�std	��|�%t|tj�std
��t!j"|||||�S)zC
        Signs the certificate using the CA's private key.
        �&A certificate must have a subject name�&A certificate must have an issuer name�'A certificate must have a serial number�/A certificate must have a not valid before time�.A certificate must have a not valid after time�$A certificate must have a public keyz$Need private key to sign certificater�r�r�)rzr1r�r�r�r�r�r�rRrr�r�rr�r	r�r��create_x509_certificater�s      r%r�zCertificateBuilder.signs7�����%��E�F�F����$��E�F�F����&��F�G�G��!�!�)��N�O�O�� � �(��M�N�N����#��C�D�D����B�C�C��"��k�G�K�K��9I�9I�+J�K�� A�B�B��k�3�+<�+<�=�� H�I�I��*��k�2�+E�+E�F��G����0�0������
�	
r&c�J�|j�td��|j�td��|j�td��|j�td��|j
�td��|j�td��tj|dddd��S)	z@
        Creates an unsigned certificate, per RFC 9925.
        Nr�r�r�r�r�r�)r��hash_algorithmr�r�)	rzr1r�r�r�r�r�r�r�rLs r%�create_unsignedz"CertificateBuilder.create_unsignedAs������%��E�F�F����$��E�F�F����&��F�G�G��!�!�)��N�O�O�� � �(��M�N�N����#��C�D�D��0�0����� $�
�	
r&)r�r�r|r�r�z CertificatePublicKeyTypes | Noner��
int | Noner��datetime.datetime | Noner�r�r3r�r��type[padding.PSS] | Noner(r))r�rr(r�)r�rr�r�r(r�)r�rZr(r�)rA�datetime.datetimer(r�)r�rr�r]r(r�r)r�rr�r�r�r�r�r�r�r�r(�Certificate)r(r�)r+r,r-�__annotations__r r�r|r�r�r�r�r�r�r�rar&r%r�r�&s5��/�/�$(�$(�7;�$(�59�48�57�;?�>� �>�"�>�5�	>�
"�>�3�
>�2�>�3�>�!9�>�
�>�*
�&
�.15�	5
�
&�5
�.�	5
�

�5
�n
�8
�<
�@
�#�
�/3�
�	�
�6#�	3
�>B�+/�3
�5�3
�,�3
��	3
�;�
3
�)�3
�
�3
�j
r&r�c���eZdZUded<ded<dddggf									dd�Z				dd�Z				dd�Z				dd	�Z						dd
�Z				dd�Z		dddd�											dd
�Z
y)� CertificateRevocationListBuilderr�r{�list[RevokedCertificate]�_revoked_certificatesNc�J�||_||_||_||_||_yr)r��_last_update�_next_updater{r�)r"r��last_update�next_updater3�revoked_certificatess      r%r z)CertificateRevocationListBuilder.__init__ds,��(���'���'���%���%9��"r&c���t|t�std��|j�t	d��t||j|j|j|j�S)Nr~r�)
rRrr�r�r1r�r�r�r{r�)r"r�s  r%r�z,CertificateRevocationListBuilder.issuer_namersf���+�t�,��9�:�:����(��D�E�E�/������������&�&�
�	
r&c�r�t|tj�std��|j�t	d��t|�}|tkrt	d��|j�||jkDrt	d��t|j||j|j|j�S)Nr��!Last update may only be set once.�8The last update date must be on or after 1950 January 1.z9The last update date must be before the next update date.)rRr>r�r�r1rCr�r�r�r�r{r�)r"r�s  r%r�z,CertificateRevocationListBuilder.last_update�s����+�x�'8�'8�9��8�9�9����(��@�A�A�0��=���+�+��J��
����(�[�4�;L�;L�-L��K��
�0������������&�&�
�	
r&c�r�t|tj�std��|j�t	d��t|�}|tkrt	d��|j�||jkrt	d��t|j|j||j|j�S)Nr�r�r�z8The next update date must be after the last update date.)rRr>r�r�r1rCr�r�r�r�r{r�)r"r�s  r%r�z,CertificateRevocationListBuilder.next_update�s����+�x�'8�'8�9��8�9�9����(��@�A�A�0��=���+�+��J��
����(�[�4�;L�;L�-L��J��
�0������������&�&�
�	
r&c��t|t�std��t|j||�}t||j�t|j|j|jg|j�|�|j�S)zM
        Adds an X.509 extension to the certificate revocation list.
        r�)rRrr�rr!r5r{r�r�r�r�r�r�s    r%r�z.CertificateRevocationListBuilder.add_extension�s����&�-�0��@�A�A��f�j�j�(�F�;�	�#�I�t�/?�/?�@�/����������*�d���*�	�*��&�&�
�	
r&c���t|t�std��t|j|j
|j|jg|j�|��S)z8
        Adds a revoked certificate to the CRL.
        z)Must be an instance of RevokedCertificate)	rR�RevokedCertificater�r�r�r�r�r{r�)r"�revoked_certificates  r%�add_revoked_certificatez8CertificateRevocationListBuilder.add_revoked_certificate�sa���-�/A�B��G�H�H�/�������������>�d�(�(�>�*=�>�
�	
r&r�c���|j�td��|j�td��|j�td��|�Zt	|t
jt
jf�std��t	|tj�std��|�%t	|tj�std��tj|||||�S)NzA CRL must have an issuer namez"A CRL must have a last update timez"A CRL must have a next update timer�r�r�)r�r1r�r�rRrr�r�r�rr�r	r�r��create_x509_crlr�s      r%r�z%CertificateRevocationListBuilder.sign�s������$��=�>�>����$��A�B�B����$��A�B�B��"��k�G�K�K��9I�9I�+J�K�� A�B�B��k�3�+<�+<�=�� H�I�I��*��k�2�+E�+E�F��G����(�(������
�	
r&)
r�r�r�r�r�r�r3r�r�r�)r�rr(r�)r�r�r(r�)r�r�r(r�)r�rr�r]r(r�)r�r�r(r�r)r�rr�r�r�r�r�r�r�r�r(�CertificateRevocationList)r+r,r-r�r r�r�r�r�r�r�rar&r%r�r�`s��/�/�3�3�$(�04�04�57�9;�
:� �:�.�:�.�	:�
3�:�7�
:�

��

�	)�

�
�,�
�	)�
�0
�,�
�	)�
�0
�#�
�/3�
�	)�
�&
�#5�
�	)�
�*#�	$
�>B�+/�$
�5�$
�,�$
��	$
�;�
$
�)�$
�
#�$
r&r�c�\�eZdZddgf					dd�Zdd�Z				d	d�Z						d
d�Zddd�Zy)
�RevokedCertificateBuilderNc�.�||_||_||_yr)r��_revocation_dater{)r"r��revocation_dater3s    r%r z"RevokedCertificateBuilder.__init__�s��,��� /���%��r&c��t|t�std��|j�t	d��|dkrt	d��|j�dk\rt	d��t
||j|j�S)Nr�r�rz$The serial number should be positiver�r�)	rRrZr�r�r1r�r�rr{r�s  r%r�z'RevokedCertificateBuilder.serial_numbers����&�#�&��E�F�F����*��F�G�G��Q�;��C�D�D�����#�%��E��
�)��D�)�)�4�+;�+;�
�	
r&c��t|tj�std��|j�t	d��t|�}|tkrt	d��t|j||j�S)Nr�z)The revocation date may only be set once.z7The revocation date must be on or after 1950 January 1.)
rRr>r�rr1rCr�r�r�r{r�s  r%rz)RevokedCertificateBuilder.revocation_dates}���$�� 1� 1�2��8�9�9�� � �,��H�I�I�)�$�/���$�$��I��
�)�����t�'7�'7�
�	
r&c���t|t�std��t|j||�}t||j�t|j|jg|j�|��S)Nr�)
rRrr�rr!r5r{r�r�rr�s    r%r�z'RevokedCertificateBuilder.add_extension)sn���&�-�0��@�A�A��f�j�j�(�F�;�	�#�I�t�/?�/?�@�(�����!�!�*�d���*�	�*�
�	
r&c��|j�td��|j�td��tj|�S)Nz/A revoked certificate must have a serial numberz1A revoked certificate must have a revocation date)r�r1rr��create_revoked_certificate)r"r�s  r%�buildzRevokedCertificateBuilder.build7sI�����&��N�O�O�� � �(��C��
��3�3�D�9�9r&)r�r�rr�r3r�)r�rZr(r�)rAr�r(r�)r�rr�r]r(r�r)r�r�r(r�)r+r,r-r r�rr�rrar&r%r�r��sj��%)�48�57�	&�!�&�2�&�3�	&�
�$
�%�
�	"�
� 
�#�
�/3�
�	"�
�:r&r�c�Z�tjtjd�d�dz	S)N��bigr)rZ�
from_bytes�os�urandomrar&r%�random_serial_numberrAs ���>�>�"�*�*�R�.�%�0�A�5�5r&)r2zExtension[ExtensionType]r3r�r(r))r!rr7r�r(r))rAr�r(r�r^)J�
__future__rr>r
�typing�collections.abcr�cryptographyr�"cryptography.hazmat.bindings._rustrr��cryptography.hazmat.primitivesr�)cryptography.hazmat.primitives.asymmetricrr	r
rrr
rrrr�/cryptography.hazmat.primitives.asymmetric.typesrr�cryptography.x509.extensionsrrr�cryptography.x509.namerr�cryptography.x509.oidrr��Union�SHA224�SHA256�SHA384�SHA512�SHA3_224�SHA3_256�SHA3_384�SHA3_512�_AllowedHashTypes�	Exceptionrr5r:rCrErc�Enumrortr�r�r�r��load_pem_x509_certificate�load_der_x509_certificate�load_pem_x509_certificates�load_pem_x509_csr�load_der_x509_csr�load_pem_x509_crl�load_der_x509_crlrxr�r�r�rrar&r%�<module>r.s���
#��	�
�$��@�1�������
3�2�&�X�&�&�t�Q��2���L�L�
�M�M�
�M�M�
�M�M�
�M�M�
�O�O�
�O�O�
�O�O�
�O�O��	���	��E�'�E�.�E�
�E�E�	�E�@�E�
�E��!8�!8�HF�F�(�e�j�j��
-�Y�-��#�#���1�1��&�?�?��%�?�?��&�?�?��%�?�?��&�A�A���/�/���/�/���/�/���/�/��m
�m
�`w
�w
�t	Y
�Y
�xB:�B:�J6r&

Zerion Mini Shell 1.0
GEPRES Tracking

República de Moçambique

Ministério da Economia e Finanças