Sh3ll
OdayForums


Server : LiteSpeed
System : Linux premium84.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : claqxcrl ( 523)
PHP Version : 8.1.32
Disable Function : NONE
Directory :  /opt/hc_python/lib/python3.12/site-packages/pydantic/v1/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/hc_python/lib/python3.12/site-packages/pydantic/v1/__pycache__/networks.cpython-312.pyc
�

���glV���ddlZddlmZmZmZmZmZmZmZm	Z	ddl
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZddlmZddlmZmZddlm Z m!Z!er?ddl"a"ddl#m$Z$ddl%m&Z&dd	l'm(Z(dd
l)m*Z*ee*ddfZ+Gd�de$d
��Z,Gd�de$d
��Z-n
da"Gd�de.�Z,ee/e0e1eee/e0e1fee/e1fffZ2gd�Z3da4da5da6da7da8dZ9dZ:dZ;dZ<dZ=dZ>dee/fd�Z?dee/fd�Z@dee/fd�ZAdee/fd�ZBdee/fd�ZCGd�d e/�ZDGd!�d"eD�ZEGd#�d$eE�ZFGd%�d&eD�ZGGd'�d(eD�ZHGd)�d*eH�ZIGd+�d,eD�ZJGd-�d.eD�ZKGd/�d0eD�ZLGd1�d2eD�ZMGd3�d4eD�ZNd5d6d7d5d5dd8�d9eOd:e1d;e1d<eOd=eOd>ee
e/deeDfd?�ZPdOd@�ZQGdA�dBe/�ZRGdC�dDe�ZSGdE�dFe�ZTGdG�dHe�ZUGdI�dJe	�ZVej�dK�ZXdLZY	dMee/dee/e/ffdN�ZZy)P�N)�IPv4Address�
IPv4Interface�IPv4Network�IPv6Address�
IPv6Interface�IPv6Network�_BaseAddress�_BaseNetwork)�
TYPE_CHECKING�Any�
Collection�Dict�	Generator�List�Match�Optional�Pattern�Set�Tuple�Type�Union�cast�
no_type_check)�errors)�Representation�update_not_none)�constr_length_validator�
str_validator)�	TypedDict)�
BaseConfig)�
ModelField)�AnyCallablec��eZdZUeed<eeed<eeed<eeed<eeed<eeed<eeed<eeed<eeed	<eeed
<y)�Parts�scheme�user�password�ipv4�ipv6�domain�port�path�query�fragmentN)�__name__�
__module__�__qualname__�str�__annotations__r���C/opt/hc_python/lib/python3.12/site-packages/pydantic/v1/networks.pyr$r$,sa�����s�m���3�-���s�m���s�m����
���s�m���s�m����}���3�-�r5r$F)�totalc�R�eZdZUeed<eeed<eeed<eeed<eed<y)�	HostParts�host�tld�	host_typer+�rebuildN)r/r0r1r2r3r�boolr4r5r6r9r98s*���	�
�c�]���C�=� ��s�m���
r5r9c��eZdZy)r$N)r/r0r1r4r5r6r$r$Bs��r5)�AnyUrl�
AnyHttpUrl�FileUrl�HttpUrl�	stricturl�EmailStr�	NameEmail�
IPvAnyAddress�IPvAnyInterface�
IPvAnyNetwork�PostgresDsn�CockroachDsn�AmqpDsn�RedisDsn�MongoDsn�KafkaDsn�validate_emailz�(?:(?P<ipv4>(?:\d{1,3}\.){3}\d{1,3})(?=$|[/:#?])|(?P<ipv6>\[[A-F0-9]*:[A-F0-9:]+\])(?=$|[/:#?])|(?P<domain>[^\s/:?#]+))?(?::(?P<port>\d+))?z&(?:(?P<scheme>[a-z][a-z0-9+\-.]+)://)?z3(?:(?P<user>[^\s:/]*)(?::(?P<password>[^\s/]*))?@)?z(?P<path>/[^\s?#]*)?z(?:\?(?P<query>[^\s#]*))?z(?:#(?P<fragment>[^\s#]*))?�returnc��t�Htjt�t�t
�t�t�t��tj�atS�N)
�_url_regex_cache�re�compile�
_scheme_regex�_user_info_regex�_host_regex�_path_regex�_query_regex�_fragment_regex�
IGNORECASEr4r5r6�	url_regexr^qsF�����:�:���/�0��
�k�]�<�.�Yh�Xi�j��M�M�
���r5c��t�Ctjt�t�dt
�t�t��tj�atS)z�
    Compiled multi host url regex.

    Additionally to `url_regex` it allows to match multiple hosts.
    E.g. host1.db.net,host2.db.net
    z(?P<hosts>([^/]*)))	�_multi_host_url_regex_cacherUrVrWrXrZr[r\r]r4r5r6�multi_host_url_regexra{sK��#�*�&(�j�j���/�0�!��}�\�N�?�*;�
=�
�M�M�	'
�#�'�&r5c�z�t�0d}d}tjd|�d|�|��tj�atS)Nz'[_0-9a-z](?:[-_0-9a-z]{0,61}[_0-9a-z])?z(?P<tld>\.[a-z]{2,63})?\.?�(?:�\.)*?)�_ascii_domain_regex_cacherUrVr])�ascii_chunk�ascii_domain_endings  r6�ascii_domain_regexrh�sF�� �(�@��;��$&�J�J��;�-�u�[�M�2E�1F�G����%
�!�%�$r5c�z�t�0d}d}tjd|�d|�|��tj�atS)NzB[_0-9a-\U00040000](?:[-_0-9a-\U00040000]{0,61}[_0-9a-\U00040000])?z<(?P<tld>(\.[^\W\d_]{2,63})|(\.(?:xn--)[_0-9a-z-]{2,63}))?\.?rcrd)�_int_domain_regex_cacherUrVr])�	int_chunk�int_domain_endings  r6�int_domain_regexrm�sD���&�Y�	�[��"$�*�*��I�;�e�I�;�O`�Na�-b�df�dq�dq�"r��"�"r5c�j�t�(tjttj�atSrS)�_host_regex_cacherUrVrYr]r4r5r6�
host_regexrp�s)��� ��J�J���M�M�
���r5c����eZdZUdZdZdZdZeee	e
d<dZee
d<dZ
ee
d<dZee
d	<e�Zee	e
d
<dZedee	d
efd��Zdddddddddd�	de	de	dee	dee	dee	dee	de	dee	dee	dee	dee	d
dfd�Zeddddddd�de	dee	dee	de	dee	dee	dee	dee	de	d
e	fd��Zedee	efd
dfd ��Zed4d!��Zed"ed#d$d%d&d
dfd'��Zed(ee	de	d)d*d
dfd+��Ze de	d
eee	fd,��Z!e dee	d
dfd-��Z"ed5d)d*d.ed
d*fd/��Z#ed)d*d
e$e	ee	e	effd0��Z%e d6d1��Z&ed6d2��Z'd
e	f�fd3�Z(�xZ)S)7r@T��N�allowed_schemesF�tld_required�
user_required�
host_required�hidden_parts�
r%r&r'r:r;r<r+r,r-r.�urlrQc�^�tj||�|jdi|���S|�S)Nr4)r2�__new__�build)�clsrz�kwargss   r6r|zAnyUrl.__new__�s-���{�{�3�s�{�	��	�	� 3�F� 3�L�L��L�Lr5r*)	r&r'r:r;r<r+r,r-r.r%r&r'r:r;r<r+r,r-r.c
��tj|�||_||_||_||_||_||_||_|	|_	|
|_
||_yrS)r2�__init__r%r&r'r:r;r<r+r,r-r.)�selfrzr%r&r'r:r;r<r+r,r-r.s            r6r�zAnyUrl.__init__�sV��	���S�������	� ��
���	����"�����	���	���
� ��
r5)r&r'r+r,r-r.�_kwargsc�"�td||||||||d�|	��}
|dz}|r||z
}|r|d|zz
}|s|r|dz
}||z
}|r9d|jvs#|j|
�jd�|k7r|d|zz
}|r||z
}|r|d|zz
}|r|d|zz
}|S)	N)r%r&r'r:r+r,r-r.z://�:�@r+�?�#r4)r$rx�get_default_parts�get)r~r%r&r'r:r+r,r-r.r��partsrzs            r6r}zAnyUrl.build�s����

���������

��

���u�n����4�K�C���3��>�!�C��8��3�J�C��t����V�3�#3�#3�3�s�7L�7L�U�7S�7W�7W�X^�7_�cg�7g��3��:��C���4�K�C���3��;��C���3��>�!�C��
r5�field_schemac�J�t||j|jd��y)N�uri)�	minLength�	maxLength�format)r�
min_length�
max_length�r~r�s  r6�__modify_schema__zAnyUrl.__modify_schema__s�������#�.�.�af�gr5c#�(K�|j��y�wrS��validate�r~s r6�__get_validators__zAnyUrl.__get_validators__������l�l�����value�fieldr!�configr c��|j|k(r|St|�}|jr|j�}t	t
t
|||��}|j|�}|sJd��t	d|j��}|j|�}|j|�}|j�t|�k7r'tj||j�d���|j|||�S)NzURL regex failed unexpectedlyr$)�extra)�	__class__r�strip_whitespace�striprr2r�
_match_url�	groupdict�apply_default_parts�validate_parts�end�lenr�
UrlExtraError�
_build_url)r~r�r�r�rz�m�original_partsr�s        r6r�zAnyUrl.validate
s����?�?�c�!��L��e�$������K�K�M�E���4�U�E�6�J�K���N�N�3����1�1�1�q��g�q�{�{�}�5���'�'��7���"�"�5�)���5�5�7�c�#�h���&�&�S������^�<�<��~�~�a��e�,�,r5r�r�r$c��|j|�\}}}}||rdn||d|d|d||||d|d|d|d�	�S)
z�
        Validate hosts and build the AnyUrl object. Split from `validate` so this method
        can be altered in `MultiHostDsn`.
        Nr%r&r'r+r,r-r.ry)�
validate_host)r~r�rzr�r:r;r<r=s        r6r�zAnyUrl._build_url sm��),�(9�(9�%�(@�%��c�9�g���D����?��v���:�&�����v���v����.��:�&�
�	
r5c�4�t�j|�SrS)r^�match�rzs r6r�zAnyUrl._match_url6s���{� � ��%�%r5c�N�|�#t|�dkDrtj��yy)Ni��)�intr�UrlPortError)r+s r6�_validate_portzAnyUrl._validate_port:s*�����D�	�F� 2��%�%�'�'�!3�r5�
validate_portc�V�|d}|�tj��|jrD|j�|jvr(tjt|j���|r|j
|d�|d}|jr|�tj��|S)z�
        A method used to validate parts of a URL.
        Could be overridden to set default values for parts if missing
        r%r+r&)	r�UrlSchemeErrorrt�lower�UrlSchemePermittedError�setr�rv�UrlUserInfoError)r~r�r�r%r&s     r6r�zAnyUrl.validate_parts?s����x����>��'�'�)�)����6�<�<�>��9L�9L�#L��0�0��S�5H�5H�1I�J�J�����u�V�}�-��V�}��������)�)�+�+��r5c��d\}}}dD]
}||}|s�|}n�!|j�rtj��|dk(�rd}t�j	|�}|�1t�j	|�}|�tj��d}|j
d�}|�2|s0t�j	|�}|�J�|j
d�}d}|�|dd}n |jrtj��|rFd}d}|jd	�jd
�}|� |jd	�jd
�}||||fS)N)NNF)r*r(r)r*FTr;rr�
int_domain�idna�ascii)rwr�UrlHostErrorrh�	fullmatchrm�groupru�UrlHostTldError�encode�decode)	r~r�r;r<r=�fr:�is_international�ds	         r6r�zAnyUrl.validate_hostUs^��"3���Y��+�A���8�D���	��	,��<�� � ��)�)�+�+�
�(�
"�$��"�$�.�.�t�4�A��y�$�&�0�0��6���9� �-�-�/�/�#'� ��'�'�%�.�C��{�#3�$�&�0�0��6���}�$�}��g�g�e�n��#'� ����!�"�g���!�!��,�,�.�.��(�	����{�{�6�*�1�1�'�:���?��*�*�V�,�3�3�G�<�C��S�)�W�,�,r5c��iSrSr4�r�s r6r�zAnyUrl.get_default_partss���	r5c�j�|j|�j�D]\}}||r�|||<�|SrS)r��items)r~r��keyr�s    r6r�zAnyUrl.apply_default_parts�s;���/�/��6�<�<�>�J�C����:�"��c�
�?��r5c����dj�fd��jD��}�jj�dt�����d|�d�S)Nz, c3�Z�K�|]"}t�|���|�dt�|������$y�w)N�=)�getattr)�.0�nr�s  �r6�	<genexpr>z"AnyUrl.__repr__.<locals>.<genexpr>�s4�����n�~�!�QX�Y]�_`�Qa�Qm�Q�C�q���q�!1� 4�5�~�s�+�+�(�))�join�	__slots__r�r/�super�__repr__)r�r�r�s` �r6r�zAnyUrl.__repr__�sH����	�	�n�t�~�~�n�n���.�.�)�)�*�!�E�G�,<�,>�+?�r�%���J�Jr5�rQ�CallableGenerator�T�r�r$rQr$)*r/r0r1r�r�r�rtrr
r2r3rur>rvrwr�rxrr�r�objectr|r��classmethodr}rrr�r�r�rr��staticmethodr�r�r�rr�r�r�r��
__classcell__�r�s@r6r@r@�sp������J��J�15�O�X�j��o�.�5��L�$���M�4���M�4�� �U�L�#�c�(�"�o�I��M�(�3�-�M�f�M��M�#�"&�"�!�!�"�"�#�"&�!�
�!��	!�
�s�m�!��3�-�
!��s�m�!��c�]�!��!��s�m�!��s�m�!���}�!��3�-�!�
�!�6�
#�"&�"�"�#�"&�)��)��s�m�	)�
�3�-�)��
)��s�m�)��s�m�)���}�)��3�-�)��)�

�)��)�V�h�T�#�s�(�^�h��h��h������-�S�-��-�|�-�PX�-��-�*�
�5��:�
�C�
��
�H�
��
�*�&��&���s�� 4�&��&��(�X�c�]�(�t�(��(���7��4��7����*�'-�'�'-�e�C��#���T�4Q�.R�'-��'-�R��������K�#�K�Kr5r@c��eZdZddhZdZy)rA�http�httpsr4N)r/r0r1rtr�r4r5r6rArA�s���w�'�O��Ir5rAc�,�eZdZdZdZdhZedd��Zy)rCTi#r+c� �d|ddk(rdiSdiS)Nr+r%r��80�443r4r�s r6r�zHttpUrl.get_default_parts�s ����h��6� 9��E�E�u�E�Er5Nr�)r/r0r1rur�rxr�r�r4r5r6rCrC�s'���L��J��8�L��F��Fr5rCc��eZdZdhZdZdZy)rB�fileFr4N)r/r0r1rtrwr�r4r5r6rBrB�s���h�O��M��Ir5rBc	����eZdZejdzZdd�dedeeddef�fd�Ze	de
d	eee
fd
��Ze
dddd
ed	df�fd�
�Ze
dee
de
ddd	dfd��Z�xZS)�MultiHostDsn)�hostsN�argsr�r9rc�2��t�|�|i|��||_yrS)r�r�r�)r�r�r�rr�s    �r6r�zMultiHostDsn.__init__�s���
���$�)�&�)���
r5rzrQc�4�t�j|�SrS)rar�r�s r6r�zMultiHostDsn._match_url�s��#�%�+�+�C�0�0r5r�r$r�c�&��t�|�|d��S)NF)r�)r�r�)r~r�r�r�s   �r6r�zMultiHostDsn.validate_parts�s����w�%�e�5�%�A�Ar5r�c�~�g}t�}|j�djd�D]p}|j|�j�}|j	|�\}}}	}
|jd�}|j
|�|j||	||
|d���rt|�dkDrA|t|D�cgc]}|d��	c}�rdn||d|d|d	|d
|d|dd|�
�	S|d}
||
drdn||d|d|d	|
d|
d|
d|
jd�|d
|d|d��Scc}w)Nr��,r+)r:r<r;r=r+rrr=r%r&r'r,r-r.)r%r&r'r,r-r.r<r�rr:r;r<ry)
rpr��splitr�r�r�r��appendr��any)r~r�rzr��hosts_parts�host_rer:r�r;r<r=r+�hp�	host_parts              r6r�zMultiHostDsn._build_url�s���)+���,���K�K�M�'�*�0�0��5�D��}�}�T�*�4�4�6�A�,/�,=�,=�a�,@�)�D�#�y�'��5�5��=�D����t�$���� �!*��&� ��
�6��{��a����[�A�[�r�R�	�]�[�A�B����X���6�]��z�*��6�]��G�n��z�*��!�
�

�$�A��I��!�)�,��#��X���6�]��z�*��v�&��e�$�#�K�0��]�]�6�*��6�]��G�n��z�*��
��Bs�;D:r�)r/r0r1r@r�rrrr�r�r2rr�r�r>r�r�r�r�s@r6r�r��s����� � �:�-�I�HL��c��(�4��3D�*E��X[���1��1���s�� 4�1��1��B�7�B�4�B�7�B��B��-�5��:�-�C�-��-�N�-��-r5r�c��eZdZhd�ZdZdZy)rJ>	�postgresql+pg8000�postgresql+asyncpg�postgresql+psycopg�postgresql+psycopg2�postgresql+pygresql�postgresql+psycopg2cffi�postgresql+py-postgresql�postgres�
postgresqlTr4N)r/r0r1rtrvr�r4r5r6rJrJ�s��
�O��M��Ir5rJc��eZdZhd�ZdZy)rK>�cockroachdb+asyncpg�cockroachdb+psycopg2�cockroachdbTN)r/r0r1rtrvr4r5r6rKrK�s���O�
�Mr5rKc��eZdZddhZdZy)rL�amqp�amqpsFN)r/r0r1rtrwr4r5r6rLrLs���w�'�O��Mr5rLc�.�eZdZdZddhZdZedd��Zy)rMr4�redis�redissFc�&�|ds|dsdndddd�S)Nr(r)�	localhost��6379z/0)r*r+r,r4r�s r6r�zRedisDsn.get_default_partss%��+0��-�5��=�k�r���
�	
r5Nr�)r/r0r1r�rtrwr�r�r4r5r6rMrMs(���I���)�O��M��
��
r5rMc�$�eZdZdhZedd��Zy)rN�mongodbc�
�ddiS)Nr+�27017r4r�s r6r�zMongoDsn.get_default_partss��
�G�
�	
r5Nr��r/r0r1rtr�r�r4r5r6rNrNs�� �k�O��
��
r5rNc�$�eZdZdhZedd��Zy)rO�kafkac��ddd�S)Nr�9092)r*r+r4r�s r6r�zKafkaDsn.get_default_parts"s��"��
�	
r5Nr�rr4r5r6rOrOs���i�O��
��
r5rOTrrrs�r�r�r�rurwrtr�r�r�rurwrtc�H�t||||||��}tdtf|�S)Nr!�UrlValue)�dict�typer@)r�r�r�rurwrt�	namespaces       r6rDrD*s3���)���!�#�'�
�I��
�V�I�y�1�1r5c�H�	ddlay#t$r}td�|�d}~wwxYw)NrzCemail-validator is not installed, run `pip install pydantic[email]`)�email_validator�ImportError)�es r6�import_email_validatorr+?s,��h����h��_�`�fg�g��h�s��	!��!c�b�eZdZedeeefddfd��Zedd��Zede	edefd��Z
y)	rEr�rQNc�*�|jdd��y)N�string�email�r%r���updater�s  r6r�zEmailStr.__modify_schema__Hs������'��:r5c#�LK�t�t��|j��y�wrS)r+rr�r�s r6r�zEmailStr.__get_validators__Ls����	� ����l�l��s�"$r�c��t|�dS)Nrr)rP�r~r�s  r6r�zEmailStr.validateTs���e�$�Q�'�'r5r�)r/r0r1r�rr2rr�r�rr�r4r5r6rErEGsd���;�T�#�s�(�^�;��;��;������(�U�3�Z�(�C�(��(r5rEc��eZdZdZdedefd�Zdedefd�Ze	de
eefdd	fd
��Ze	dd��Ze	deddfd
��Z
defd�Zy	)rF��namer/r8r/c� �||_||_yrSr7)r�r8r/s   r6r�zNameEmail.__init__\s����	���
r5�otherrQc��t|t�xr1|j|jf|j|jfk(SrS)�
isinstancerFr8r/)r�r:s  r6�__eq__zNameEmail.__eq__`s6���%��+�d����D�J�J�0G�E�J�J�X]�Xc�Xc�Kd�0d�dr5r�Nc�*�|jdd��y)Nr.z
name-emailr0r1r�s  r6r�zNameEmail.__modify_schema__cs������,��?r5c#�<K�t�|j��y�wrS)r+r�r�s r6r�zNameEmail.__get_validators__gs����� ��l�l��s�r�c�V�|j|k(r|St|�}|t|��SrS)r�rrPr5s  r6r�zNameEmail.validatems-���?�?�c�!��L��e�$���N�5�)�*�*r5c�:�|j�d|j�d�S)Nz <�>r7)r�s r6�__str__zNameEmail.__str__ts���)�)��B�t�z�z�l�!�,�,r5r�)r/r0r1r�r2r�rr>r=r�rr�r�r�rCr4r5r6rFrFYs����I��S����e�C�e�D�e��@�T�#�s�(�^�@��@��@�����
�+�S�+�[�+��+�-��-r5rFc�v�eZdZdZedeeefddfd��Zed	d��Z	ede
eeefde
e
effd��Zy)
rGr4r�rQNc�*�|jdd��y)Nr.�
ipvanyaddressr0r1r�s  r6r�zIPvAnyAddress.__modify_schema__{�������/��Br5c#�(K�|j��y�wrSr�r�s r6r�z IPvAnyAddress.__get_validators__r�r�r�c��	t|�S#t$rYnwxYw	t|�S#t$rtj��wxYwrS)r�
ValueErrorrr�IPvAnyAddressErrorr5s  r6r�zIPvAnyAddress.validate�sR��	��u�%�%���	��	��	.��u�%�%���	.��+�+�-�-�	.���

�	��
(�Ar�)r/r0r1r�r�rr2rr�r�r�bytesr�rrr�r4r5r6rGrGxs~���I��C�T�#�s�(�^�C��C��C������	.�U�3��s�?�3�	.��k�;�>V�8W�	.��	.r5rGc�j�eZdZdZedeeefddfd��Zed	d��Z	ede
deee
ffd��Zy)
rHr4r�rQNc�*�|jdd��y)Nr.�ipvanyinterfacer0r1r�s  r6r�z!IPvAnyInterface.__modify_schema__�s������2C��Dr5c#�(K�|j��y�wrSr�r�s r6r�z"IPvAnyInterface.__get_validators__�r�r�r�c��	t|�S#t$rYnwxYw	t|�S#t$rtj��wxYwrS)rrJrr�IPvAnyInterfaceErrorr5s  r6r�zIPvAnyInterface.validate�sR��	� ��'�'���	��	��	0� ��'�'���	0��-�-�/�/�	0�rLr�)r/r0r1r�r�rr2rr�r��NetworkTyperrrr�r4r5r6rHrH�ss���I��E�T�#�s�(�^�E��E��E������	0�[�	0�U�=�-�3O�-P�	0��	0r5rHc�f�eZdZedeeefddfd��Zedd��Zede	de
eeffd��Z
y)	rIr�rQNc�*�|jdd��y)Nr.�
ipvanynetworkr0r1r�s  r6r�zIPvAnyNetwork.__modify_schema__�rGr5c#�(K�|j��y�wrSr�r�s r6r�z IPvAnyNetwork.__get_validators__�r�r�r�c��	t|�S#t$rYnwxYw	t|�S#t$rtj��wxYwrS)rrJrr�IPvAnyNetworkErrorr5s  r6r�zIPvAnyNetwork.validate�sR��	��u�%�%���	��	��	.��u�%�%���	.��+�+�-�-�	.�rLr�)r/r0r1r�rr2rr�r�rTrrrr�r4r5r6rIrI�sn���C�T�#�s�(�^�C��C��C������.�[�.�U�;��3K�-L�.��.r5rIz([\w ]*?) *<(.*)> *ir�c�6�t�
t�t|�tkDrt	j
��tj|�}d}|r|j�\}}|j�}	tj|d��}t|d�r$|j}|�J�|xs|j}||fS|jd�}|d|}||dj!�}|xs|||zfS#tj$r}tj
|�d}~wwxYw)aH
    Email address validation using https://pypi.org/project/email-validator/
    Notes:
    * raw ip address (literal) domain parts are not allowed.
    * "John Doe <local_part@domain.com>" style "pretty" email addresses are processed
    * spaces are striped from the beginning and end of addresses but no error is raised
    NF)�check_deliverability�
normalizedr�)r(r+r��MAX_EMAIL_LENGTHr�
EmailError�pretty_email_regexr��groupsr�rP�EmailNotValidError�hasattrr]�
local_part�indexr�)	r�r�r8r/r�r*�at_indexrd�global_parts	         r6rPrP�s����� �
�5�z�$�$����!�!��$�$�U�+�A�!�D���h�h�j���e��K�K�M�E�'��.�.�u�5�Q���u�l�#�� � ��� � � ��'�u�'�'���U�{���;�;�s�#���9�H�%�
��H�I�&�,�,�.���!�z�:��#;�;�;���-�-�'����Q�&��'�s�4C/�/D�D�D)rQN)[rU�	ipaddressrrrrrrr	r
�typingrrr
rrrrrrrrrrrr�pydantic.v1r�pydantic.v1.utilsrr�pydantic.v1.validatorsrrr(�typing_extensionsr�pydantic.v1.configr �pydantic.v1.fieldsr!�pydantic.v1.typingr"r�r$r9r$r2rMr�rT�__all__rTr`rerjrorYrWrXrZr[r\r^rarhrmrpr@rArCrBr�rJrKrLrMrNrOr>rDr+rErFrGrHrIrVr`r^rPr4r5r6�<module>rrs���	�	�	�	������$�=�I���+�-�-�.�!�+�t�T�"9�:��
 �	��
 ��I�U���O�
��
��C���U�5��e�S��+A�5��c��?�+R�%S�S�T����(��"�� ��������:�
�I��%��+��0���7�3�<��'�g�c�l�'�$%�G�C�L�%�#�'�#�,�#��G�C�L��aK�S�aK�H���F�j�F��f��=�6�=�@�,��"�6���f��

�v�
�
�v�
�
�v�
�"�����15�2��2��2��	2�
�2��
2��j��o�.�2�
�&�\�2�*h�(�s�(�$-��-�>.�L�.�00�l�0�0.�L�.�0 �R�Z�Z� 6�7�����
$<�%��*�$<��s�C�x��$<r5

ZeroDay Forums Mini