Ë
    :É„jè  ã                   ó~  — 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Zd dl	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZ d dlZd d
lm Z 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*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9m:Z:m;Z; d dl<m=Z= d dl>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlFmGZGmHZHmIZI ddlJmJZJ ddlKmLZL ddlMmNZN  ejž                  eP«      ZQd ZR	 d dlSZSd d!l8mTZT d"ZR G d#„ d$e4«      ZV G d%„ d&«      ZWy# eU$ r Y Œw xY w)'é    N)ÚThreadPoolExecutor)ÚdatetimeÚ	timedelta)Úsha256)Úimport_module)ÚStringIOÚBytesIO)Ú	MimeTypes)ÚPath)ÚUnionÚListÚOptionalÚCallableÚAsyncGeneratorÚTuple)Ú__version__Ú__license__)Úenums)Úraw)Útypes)Úutils)Úaes)ÚCDNFileHashMismatch)ÚSessionPasswordNeededÚVolumeLocNotFoundÚChannelPrivateÚ
BadRequestÚChannelInvalidÚPersistentTimestampInvalidÚPersistentTimestampOutdated)ÚHandler)ÚMethods)ÚAuthÚSession)ÚFileStorageÚMemoryStorageÚStorage)ÚUser)Úainputé   )Ú
Connection)ÚTCPAbridged)Ú
Dispatcher)ÚFileIdÚFileTypeÚThumbnailSource)Ú
mime_types)ÚParser)ÚMsgIdF)ÚMongoStorageTc            G       ó  ‡ — e Zd ZdZde› �Z ej                  «       › d ej                  «       › �Z	 ej                  «       › d ej                  «       › �ZdZdZdZ eej$                  d   «      j&                  Z ej,                  d«      Z ej,                  d	«      Z ed
 ej6                  «       xs ddz   «      ZeZdZdZdZ  e!«       Z"e"jG                   e$e%«      «       ddee	eeeedddddddddddddeede&jN                  jP                  ddde)jT                  dee&jV                  jX                  e e f"de-de.e/e0e-f      de.e-   de-de-de-de-de-de-de.e1   de.e1   de.e2   de.e1   de.e-   d e.e-   d!e.e1   d"e.e1   d#e.e2   d$e.e3   d%e.e-   d&e.e-   d'e.e-   d(e0d)e/e-ef   d*e.e2   d+d,d-e.e1   d.e1d/e1d0e0d1e.e1   d2e0d3d4d5e0d6e0fFˆ fd7„Z4d8„ Z5d9„ Z6d:„ Z7d;„ Z8d<„ Z9d=„ Z:d>e;fd?„Z<d+e.d,   fd@„Z=dAe>e/e?j€                  jv                  e?j€                  j‚                  e?j€                  j„                  f      d>e1fdB„ZCdC„ ZDd>eEe0e0f   fdD„ZFdE„ ZGdF„ ZHdG„ ZIdH„ ZJ	 	 	 	 	 dTdIeKdJe0dKe0dLe0dMeLdNeMd>e.eNeOdf      fdO„ZPdPe-d>e.e-   fdQ„ZQdRe-d>e.e-   fdS„ZRˆ xZSS )UÚClienta¾  Pyrogram Client, the main means for interacting with Telegram.

    Parameters:
        name (``str``):
            A name for the client, e.g.: "my_account".

        api_id (``int`` | ``str``, *optional*):
            The *api_id* part of the Telegram API key, as integer or string.
            E.g.: 12345 or "12345".

        api_hash (``str``, *optional*):
            The *api_hash* part of the Telegram API key, as string.
            E.g.: "0123456789abcdef0123456789abcdef".

        app_version (``str``, *optional*):
            Application version.
            Defaults to "Pyrogram x.y.z".

        device_model (``str``, *optional*):
            Device model.
            Defaults to *platform.python_implementation() + " " + platform.python_version()*.

        system_version (``str``, *optional*):
            Operating System version.
            Defaults to *platform.system() + " " + platform.release()*.

        lang_code (``str``, *optional*):
            Code of the language used on the client, in ISO 639-1 standard.
            Defaults to "en".

        ipv6 (``bool``, *optional*):
            Pass True to connect to Telegram using IPv6.
            Defaults to False (IPv4).

        alt_port (``bool``, *optional*):
            Pass True to connect to Telegram using alternative port (5222).
            Defaults to False (443).

        proxy (``dict``, *optional*):
            The Proxy settings as dict.
            E.g.: *dict(scheme="socks5", hostname="11.22.33.44", port=1234, username="user", password="pass")*.
            The *username* and *password* can be omitted if the proxy doesn't require authorization.

        test_mode (``bool``, *optional*):
            Enable or disable login to the test servers.
            Only applicable for new sessions and will be ignored in case previously created sessions are loaded.
            Defaults to False.

        bot_token (``str``, *optional*):
            Pass the Bot API token to create a bot session, e.g.: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
            Only applicable for new sessions.

        session_string (``str``, *optional*):
            Pass a session string to load the session in-memory.
            Implies ``in_memory=True``.

        use_qrcode (``bool``, *optional*):
            Pass True to login using a QR code.

        in_memory (``bool``, *optional*):
            Pass True to start an in-memory session that will be discarded as soon as the client stops.
            In order to reconnect again using an in-memory session without having to login again, you can use
            :meth:`~pyrogram.Client.export_session_string` before stopping the client to get a session string you can
            pass to the ``session_string`` parameter.
            Defaults to False.

        mongodb (``dict``, *optional*):
            Mongodb config as dict, e.g.: *dict(connection=async_pymongo.AsyncClient("mongodb://..."), remove_peers=False)*.
            Only applicable for new sessions.

        storage (:obj:`~pyrogram.storage.Storage`, *optional*):
            Custom session storage.

        phone_number (``str``, *optional*):
            Pass the phone number as string (with the Country Code prefix included) to avoid entering it manually.
            Only applicable for new sessions.

        phone_code (``str``, *optional*):
            Pass the phone code as string (for test numbers only) to avoid entering it manually.
            Only applicable for new sessions.

        password (``str``, *optional*):
            Pass the Two-Step Verification password as string (if required) to avoid entering it manually.
            Only applicable for new sessions.

        workers (``int``, *optional*):
            Number of maximum concurrent workers for handling incoming updates.
            Defaults to ``min(32, os.cpu_count() + 4)``.

        workdir (``str``, *optional*):
            Define a custom working directory.
            The working directory is the location in the filesystem where Pyrogram will store the session files.
            Defaults to the parent directory of the main script.

        plugins (``dict``, *optional*):
            Smart Plugins settings as dict, e.g.: *dict(root="plugins")*.

        parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*):
            Set the global parse mode of the client. By default, texts are parsed using both Markdown and HTML styles.
            You can combine both syntaxes together.

        no_updates (``bool``, *optional*):
            Pass True to disable incoming updates.
            When updates are disabled the client can't receive messages or other updates.
            Useful for batch programs that don't need to deal with updates.
            Defaults to False (updates enabled and received).

        skip_updates (``bool``, *optional*):
            Pass True to skip pending updates that arrived while the client was offline.
            Defaults to True.

        takeout (``bool``, *optional*):
            Pass True to let the client use a takeout session instead of a normal one, implies *no_updates=True*.
            Useful for exporting Telegram data. Methods invoked inside a takeout session (such as get_chat_history,
            download_media, ...) are less prone to throw FloodWait exceptions.
            Only available for users, bots will ignore this parameter.
            Defaults to False (normal session).

        sleep_threshold (``int``, *optional*):
            Set a sleep threshold for flood wait exceptions happening globally in this client instance, below which any
            request that raises a flood wait will be automatically invoked again after sleeping for the required amount
            of time. Flood wait exceptions requiring higher waiting times will be raised.
            Defaults to 10 seconds.

        hide_password (``bool``, *optional*):
            Pass True to hide the password when typing it during the login.
            Defaults to False, because ``getpass`` (the library used) is known to be problematic in some
            terminal environments.

        max_concurrent_transmissions (``bool``, *optional*):
            Set the maximum amount of concurrent transmissions (uploads & downloads).
            A value that is too high may result in network related issues.
            Defaults to 1.

        max_message_cache_size (``int``, *optional*):
            Set the maximum size of the message cache.
            Defaults to 10000.

        max_business_user_connection_cache_size (``int``, *optional*):
            Set the maximum size of the message cache.
            Defaults to 10000.

        client_platform (:obj:`~pyrogram.enums.ClientPlatform`, *optional*):
            The platform where this client is running.
            Defaults to 'other'
    z	Pyrogram ú ÚenÚ zen-USr   zT^(?:https?://)?(?:www\.)?(?:t(?:elegram)?\.(?:org|me|dog)/(?:joinchat/|\+))([\w-]+)$zO^(?:https?://)?(?:www\.)?(?:t(?:elegram)?\.(?:org|me|dog)/(?:nft/|\+))([\w-]+)$é    é   i„  r*   é'  NFTÚnameÚapi_idÚapi_hashÚapp_versionÚdevice_modelÚsystem_versionÚsystem_lang_codeÚ	lang_codeÚ	lang_packÚipv6Úalt_portÚproxyÚ	test_modeÚ	bot_tokenÚsession_stringÚ
use_qrcodeÚ	in_memoryÚmongodbÚstorageÚphone_numberÚ
phone_codeÚpasswordÚworkersÚworkdirÚpluginsÚ
parse_modezenums.ParseModeÚ
no_updatesÚskip_updatesÚtakeoutÚsleep_thresholdÚhide_passwordÚmax_concurrent_transmissionsÚclient_platformzenums.ClientPlatformÚmax_message_cache_sizeÚ'max_business_user_connection_cache_sizec$                 ó¼  •— t         ‰%| �  «        || _        |rt        |«      nd | _        || _        || _        || _        || _        |j                  «       | _
        |j                  «       | _        |	j                  «       | _        |
| _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        t5        |«      | _        || _        || _        || _        || _        || _         || _!        || _"        | | _#        |!| _$        |"| _%        |"| _%        |#| _&        tO        | j2                  d¬«      | _(        |r|| _)        næ| j$                  r&tU        | j                  | j$                  «      | _)        n´| j(                  rtU        | j                  «      | _)        n�| j*                  r\tV        s0tX        j[                  d«       tU        | j                  «      | _)        nKt]        | j                  fi | j*                  ¤Ž| _)        n%t_        | j                  | j6                  «      | _)        t`        | _1        td        | _3        ti        | «      | _5        tl        | _7        tq        | «      | _9        d | _:        i | _;        ty        jz                  «       | _>        ty        j~                  | jF                  «      | _@        ty        j~                  | jF                  «      | _A        d | _B        d | _C        d | _D        d | _E        d | _F        t�        | jJ                  «      | _H        t�        | jL                  «      | _I        d | _J        ty        j–                  «       | _L        t›        jœ                  «       | _O        t         j¢                  j¤                  D �$ci c]  }$|$g “Œ c}$| _S        ty        j¨                  «       | _U        y c c}$w )Nr!   )Úthread_name_prefixz:pymongo is missing! Using MemoryStorage as session storage)VÚsuperÚ__init__r=   Úintr>   r?   r@   rA   rB   ÚlowerrC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rP   rQ   rR   rS   r   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r   ÚexecutorrO   r&   ÚMONGO_AVAILÚlogÚwarningr4   r%   r+   Úconnection_factoryr,   Úprotocol_factoryr-   Ú
dispatcherr3   Úrnd_idr2   ÚparserÚsessionÚmedia_sessionsÚasyncioÚLockÚmedia_sessions_lockÚ	SemaphoreÚsave_file_semaphoreÚget_file_semaphoreÚis_connectedÚis_initializedÚ
takeout_idÚdisconnect_handlerÚmeÚCacheÚmessage_cacheÚbusiness_user_connection_cacheÚupdates_watchdog_taskÚEventÚupdates_watchdog_eventr   ÚnowÚlast_update_timeÚpyrogramr   ÚListenerTypesÚ	listenersÚget_event_loopÚloop)&Úselfr=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   Úlistener_typeÚ	__class__s&                                        €úF/var/www/html/GAP/venv/lib/python3.12/site-packages/pyrogram/client.pyrc   zClient.__init__ù   s  ø€ ôL 	‰ÑÔàˆŒ	Ù%+”c˜&”k°ˆŒØ ˆŒØ&ˆÔØ(ˆÔØ,ˆÔØ 0× 6Ñ 6Ó 8ˆÔØ"Ÿ™Ó*ˆŒØ"Ÿ™Ó*ˆŒØˆŒ	Ø ˆŒØˆŒ
Ø"ˆŒØ"ˆŒØ,ˆÔØ$ˆŒØ"ˆŒØˆŒØ(ˆÔØ$ˆŒØ ˆŒØˆŒÜ˜G“}ˆŒØˆŒØ$ˆŒØ$ˆŒØ(ˆÔØˆŒØ.ˆÔØ*ˆÔØ,HˆÔ)Ø.ˆÔØ&<ˆÔ#Ø&<ˆÔ#Ø7^ˆÔ4ä*¨4¯<©<ÈIÔVˆŒáØ"ˆD�LØ× Ò Ü(¨¯©°D×4GÑ4GÓHˆD�LØ�^Š^Ü(¨¯©Ó3ˆD�LØ�\Š\ÝÜ—‘ð=ôô  -¨T¯Y©YÓ7�•ä+¨D¯I©IÑF¸¿¹ÑF�•ä& t§y¡y°$·,±,Ó?ˆDŒLä",ˆÔÜ +ˆÔä$ TÓ*ˆŒäˆŒä˜T“lˆŒàˆŒà ˆÔÜ#*§<¡<£>ˆÔ ä#*×#4Ñ#4°T×5VÑ5VÓ#WˆÔ Ü")×"3Ñ"3°D×4UÑ4UÓ"VˆÔà ˆÔØ"ˆÔàˆŒà"&ˆÔà"&ˆŒä" 4×#>Ñ#>Ó?ˆÔÜ.3°D×4`Ñ4`Ó.aˆÔ+ð
 &*ˆÔ"Ü&-§m¡m£oˆÔ#Ü (§¡£ˆÔÜAIÇÁ×A]ÑA]Ö^°˜-¨Ñ+Ò^ˆŒÜ×*Ñ*Ó,ˆ�	ùò _s   Î-
Oc                 ó"   — | j                  «       S ©N©Ústart©r‰   s    rŒ   Ú	__enter__zClient.__enter__  s   € Ø�z‰z‹|Ðó    c                 óD   — 	 | j                  «        y # t        $ r Y y w xY wrŽ   ©ÚstopÚConnectionError©r‰   Úargss     rŒ   Ú__exit__zClient.__exit__‚  s"   € ð	Ø�I‰I�KøÜò 	Ùð	ús   ‚ “	žc              ƒ   ó>   K  — | j                  «       ƒ d {  –—† S 7 Œ­wrŽ   r�   r‘   s    rŒ   Ú
__aenter__zClient.__aenter__ˆ  s   è ø€ Ø—Z‘Z“\×!Ð!Ð!ús   ‚–—c              ‡   ó`   K  — 	 | j                  «       ƒ d {  –—†  y 7 Œ# t        $ r Y y w xY w­wrŽ   r•   r˜   s     rŒ   Ú	__aexit__zClient.__aexit__‹  s+   è ø€ ð	Ø—)‘)“+×ÒùÜò 	Ùð	üs(   ‚.„ —˜ œ.� Ÿ	+¨.ª+«.c              ƒ   ó¸  K  — 	 	 t        j                  | j                  j                  «       | j                  «      ƒ d {  –—†  y 7 Œ# t         j
                  $ r Y nw xY wt        j                  «       | j                  z
  t        | j                  ¬«      kD  r@| j                  t        j                  j                  j                  «       «      ƒ d {  –—†7   ŒÖ­w)N)Úseconds)rq   Úwait_forr�   ÚwaitÚUPDATES_WATCHDOG_INTERVALÚTimeoutErrorr   r‚   rƒ   r   Úinvoker   Ú	functionsÚupdatesÚGetStater‘   s    rŒ   Úupdates_watchdogzClient.updates_watchdog‘  s¬   è ø€ ØðÜ×&Ñ& t×'BÑ'B×'GÑ'GÓ'IÈ4×KiÑKiÓj×jÐjð ð	 kùÜ×'Ñ'ò Ùðúô
 �|‰|‹~ × 5Ñ 5Ñ5¼	È$×JhÑJhÔ8iÒiØ—k‘k¤#§-¡-×"7Ñ"7×"@Ñ"@Ó"BÓC×CÑCð ùsG   ‚C…;A Á AÁA ÁCÁA ÁAÁCÁAÁA5CÃCÃCc              ƒ   ó¼   K  — 	 | j                   j                  j                  «       ƒ d{  –—† \  }}}t        |t        j
                  j                  «      ryŒV7 Œ.­w)zD
        Wait for an UpdateLoginToken update from Telegram.
        N)rl   Úupdates_queueÚgetÚ
isinstancer   r   ÚUpdateLoginToken)r‰   ÚupdateÚ_s      rŒ   Ú_wait_for_update_login_tokenz#Client._wait_for_update_login_token�  sK   è ø€ ð Ø!%§¡×!>Ñ!>×!BÑ!BÓ!D×D‰LˆF�A�qÜ˜&¤#§)¡)×"<Ñ"<Ô=Øð ØDús   ‚)A«A¬/AÚreturnc              ƒ   ó(  K  — | j                   r#| j                  | j                   «      ƒ d {  –—† S t        dt        › d�«       t        dt        › d�«       | j
                  �s—	 	 | j                  s”	 t        d«       t        d«      ƒ d {  –—† }|sŒ"|j                  «       dk(  rd| _        n,t        d	|› d
�«      ƒ d {  –—† j                  «       }|dk(  rnŒhd|v r || _         | j                  |«      ƒ d {  –—† S || _        | j
                  s#| j                  | j                  «      ƒ d {  –—† }	 | j
                  s¹t        j                  j                  dt        j                  j                  dt        j                  j                   dt        j                  j"                  dt        j                  j$                  dt        j                  j&                  di}t        d|j(                     › �«       	 | j
                  s$| j*                  st        d«      ƒ d {  –—† | _        	 | j
                  r| j-                  «       ƒ d {  –—† }n9| j/                  | j                  j0                  | j*                  «      ƒ d {  –—† }| j
                  r~t3        |t4        j6                  «      rd|j8                  t;        j<                  t;        j>                  «       «      z
  }	 tA        jB                  | jE                  «       |¬«      ƒ d {  –—†  �Œ	 t3        |t^        «      r|S y 7 �Œý7 �Œ 7 �Œn7 �Œ87 �Œ# t        $ r-}t        |j                  «       d | _        d | _         Y d }~nd }~ww xY w�Œ7 �ŒQ7 �Œ*7 Œò7 Œl# t@        jF                  $ r t        d«       Y ŒŠw xY w# t        $ r'}t        |j                  «       d | _        Y d }~�nÃd }~wtH        $ �r³}t        |j                  «       	 t        djK                  | jM                  «       ƒ d {  –—†7  «      «       | jN                  s%t        d| jP                  ¬«      ƒ d {  –—†7  | _'        	 | jN                  sËt        d«      ƒ d {  –—†7  }|dk(  rª| jS                  «       ƒ d {  –—†7  }t        d|› �«       	 t        d«      ƒ d {  –—†7  }		 | jU                  |	«      ƒ d {  –—†7  cY d }~S # t        $ r}t        |j                  «       Y d }~n*d }~wtV        $ r}tX        j[                  |«       ‚ d }~ww xY wŒ‚d | _'        n)| j]                  | jN                  «      ƒ d {  –—†7  cY d }~S n2# t        $ r&}t        |j                  «       d | _'        Y d }~nd }~ww xY w�Œ˜d }~ww xY w�Œ•­w)NzWelcome to Pyrogram (version ú)zaPyrogram is free software and comes with ABSOLUTELY NO WARRANTY. Licensed
under the terms of the z.
Tz0Enter 'qrcode' if you want to login with qrcode.z!Enter phone number or bot token: ÚqrcodeúIs "ú" correct? (y/N): Úyú:zTelegram appÚSMSz
phone callzphone flash callzFragment SMSz
email codez(The confirmation code has been sent via zEnter confirmation code: )Útimeoutz*QR code expired, Requesting new Qr code...zPassword hint: {}z#Enter password (empty to recover): )Úhidez!Confirm password recovery (y/n): z#The recovery code has been sent to zEnter recovery code: )0rJ   Úsign_in_botÚprintr   r   rL   rP   r)   re   Ú	send_coder   ÚMESSAGEr   ÚSentCodeTypeÚAPPrº   ÚCALLÚ
FLASH_CALLÚFRAGMENT_SMSÚ
EMAIL_CODEÚtyperQ   Úsign_in_qrcodeÚsign_inÚphone_code_hashr­   r   Ú
LoginTokenÚexpiresr   Ú	timestampr‚   rq   r¡   r±   r¤   r   ÚformatÚget_password_hintrR   r[   Úsend_recovery_codeÚrecover_passwordÚ	Exceptionrh   Ú	exceptionÚcheck_passwordr(   )
r‰   ÚvalueÚconfirmÚ	sent_codeÚeÚsent_code_descriptionsÚ	signed_inÚtime_outÚemail_patternÚrecovery_codes
             rŒ   Ú	authorizezClient.authorize¦  s¶  è ø€ Ø�>Š>Ø×)Ñ)¨$¯.©.Ó9×9Ð9äÐ-¬k¨]¸!Ð<Ô=Üð (Ü(3 }°Cð9ô 	:à�‹ØðØ×,Ò,Ø"Ü!Ð"TÔUÜ*0Ð1TÓ*U×$U˜Eá#(Ø (à$Ÿ{™{›}°Ò8Ø26 ¤Ø %ä-3°d¸5¸'ÐASÐ4TÓ-U×'U×&\Ñ&\Ó&^˜Gà&¨#š~Ø %ð #ð   %™<Ø-2˜DœNØ)-×)9Ñ)9¸%Ó)@×#@Ð@à05˜DÔ-ØŸ?š?Ø*.¯.©.¸×9JÑ9JÓ*K×$K˜	ð Ø—?’?ä×&Ñ&×*Ñ*¨NÜ×&Ñ&×*Ñ*¨EÜ×&Ñ&×+Ñ+¨\Ü×&Ñ&×1Ñ1Ð3EÜ×&Ñ&×3Ñ3°^Ü×&Ñ&×1Ñ1°<ð*Ð&ô Ð@ÐAWÐXa×XfÑXfÑAgÐ@hÐiÔjàØ—?’?¨4¯?ª?Ü(.Ð/JÓ(K×"K�”ð2Ø—?’?Ø&*×&9Ñ&9Ó&;× ;‘Ià&*§l¡l°4×3DÑ3DÀi×F_ÑF_Ðae×apÑapÓ&q× q�IðN —?’?¤z°)¼U×=MÑ=MÔ'NØ(×0Ñ0´8×3EÑ3EÄhÇlÁlÃnÓ3UÑU�HðLÜ%×.Ñ.¨t×/PÑ/PÓ/RÐ\dÔe×eÐeñ Øä�i¤Ô&ØÐð 'ðU :ùð %Vùð (Vùð $Aùð %LúÜ!ò *Ü˜!Ÿ)™)Ô$Ø(,�DÔ%Ø%)�D—N‘Nûð*úñ5 ð\ #Lùð !<ùà qøðT fùÜ"×/Ñ/ò LÜÐJÖKðLûôU ò 'Ü�a—i‘iÔ Ø"&�—’ûÜ(ó !-Ü�a—i‘iÔ àÜÐ-×4Ñ4¸4×;QÑ;QÓ;S×5SÐ5SÓTÔUàŸ=š=Ü.4Ð5ZÐae×asÑasÔ.t×(tÐ(t˜œð-Ø#Ÿ}š}Ü,2Ð3VÓ,W×&WÐ&W˜Gà&¨#š~Ø6:×6MÑ6MÓ6O×0OÐ0O Ü %Ð(KÈMÈ?Ð&[Ô \à&*Ü:@ÐAXÓ:Y×4YÐ4Y Mð%.Ø59×5JÑ5JÈ=Ó5Y×/YÐ/YÕ(YøÜ+5ò %9Ü(-¨a¯i©i×(8Ñ(8ûÜ+4ò %.Ü(+¯©°aÔ(8Ø(-ûð%.úð '+ð 15 ¥à)-×)<Ñ)<¸T¿]¹]Ó)K×#KÐ#KÕKð !.øô &ò -Ü˜aŸi™iÔ(Ø(,˜Ÿ™ûð-úñ9 ûð!-úñ ùsñ  ‚+V­L*®8VÁ'&L9 ÂL-Â4L9 ÃL0Ã8L9 Ã;L3Ã<L9 Ã?VÄ 1L9 Ä1L6Ä2L9 Ä6C-VÈ#M4È$	VÈ.N" ÉM7É9N" ÊM:ÊN" ÊAVË'(M> ÌM<ÌM> ÌVÌ-L9 Ì0L9 Ì3L9 Ì6L9 Ì9	M/Í#M*Í%VÍ*M/Í/VÍ7N" Í:N" Í<M> Í>NÎVÎNÎVÎ"	VÎ+OÏVÏVÏ9VÐPÐ3VÑQ
Ñ
VÑUÑ-Q0Ñ.UÒRÒ"UÒ.R1Ò/UÒ5SÓ	SÓ
SÓVÓVÓ	TÓS7Ó2UÓ7TÔTÔTÔ*UÕUÕ	UÕVÕVÕVÕ	VÕU>Õ9VÕ>VÖVÖVÖVc                 ó   — || _         y)a§  Set the parse mode to be used globally by the client.

        When setting the parse mode with this method, all other methods having a *parse_mode* parameter will follow the
        global value by default.

        Parameters:
            parse_mode (:obj:`~pyrogram.enums.ParseMode`):
                By default, texts are parsed using both Markdown and HTML styles.
                You can combine both syntaxes together.

        Example:
            .. code-block:: python

                from pyrogram import enums

                # Default combined mode: Markdown + HTML
                await app.send_message("me", "1. **markdown** and <i>html</i>")

                # Force Markdown-only, HTML is disabled
                app.set_parse_mode(enums.ParseMode.MARKDOWN)
                await app.send_message("me", "2. **markdown** and <i>html</i>")

                # Force HTML-only, Markdown is disabled
                app.set_parse_mode(enums.ParseMode.HTML)
                await app.send_message("me", "3. **markdown** and <i>html</i>")

                # Disable the parser completely
                app.set_parse_mode(enums.ParseMode.DISABLED)
                await app.send_message("me", "4. **markdown** and <i>html</i>")

                # Bring back the default combined mode
                app.set_parse_mode(enums.ParseMode.DEFAULT)
                await app.send_message("me", "5. **markdown** and <i>html</i>")
        N)rV   )r‰   rV   s     rŒ   Úset_parse_modezClient.set_parse_mode  s   € ðH %ˆ�r“   Úpeersc              ƒ   óÚ  K  — d}g }g }|D �]  }t        |dd«      rd}Œd }d }t        |t        j                  j                  «      rñ|j
                  }|j                  }	|j                  r|j                  j                  «       n4|j                  r'|j                  d   j                  j                  «       nd }|j                  �Tt        |j                  «      dkD  r<|j                  D ]-  }
|j                  ||
j                  j                  «       f«       Œ/ |j                  }|j                  rdnd}�nÎt        |t        j                  j                  t        j                  j                  f«      r|j
                   }d}	d}�n}t        |t        j                  j                   «      r÷t#        j$                  |j
                  «      }|j                  }	|j                  r|j                  j                  «       n4|j                  r'|j                  d   j                  j                  «       nd }|j                  �Tt        |j                  «      dkD  r<|j                  D ]-  }
|j                  ||
j                  j                  «       f«       Œ/ |j&                  rd	nd
}nbt        |t        j                  j(                  «      r<t#        j$                  |j
                  «      }|j                  }	|j&                  rd	nd
}n�Œû|j                  ||	|||f«       �Œ | j*                  j-                  |«      ƒ d {  –—†  | j*                  j/                  |«      ƒ d {  –—†  |S 7 Œ)7 Œ­w)NFÚminTr   r*   ÚbotÚuserÚgroupÚchannelÚ
supergroup)Úgetattrr­   r   r   r(   ÚidÚaccess_hashÚusernamere   Ú	usernamesÚlenÚappendÚphonerä   ÚChatÚChatForbiddenÚChannelr   Úget_channel_idÚ	broadcastÚChannelForbiddenrO   Úupdate_peersÚupdate_usernames)r‰   rá   Úis_minÚparsed_peersrí   Úpeerrì   rP   Úpeer_idrë   ÚunameÚ	peer_types               rŒ   Úfetch_peerszClient.fetch_peers;  s´  è ø€ ØˆØˆØˆ	àó ,	[ˆDÜ�t˜U EÔ*Ø�ØàˆHØˆLä˜$¤§	¡	§¡Ô/ØŸ'™'�Ø"×.Ñ.�à-1¯]ª]�D—M‘M×'Ñ'Ô)Ø?C¿~º~˜Ÿ™¨Ñ*×3Ñ3×9Ñ9Ô;Øð ð
 —>‘>Ð-´#°d·n±nÓ2EÈÒ2IØ!%§¡ò L˜Ø!×(Ñ(¨'°5·>±>×3GÑ3GÓ3IÐ)JÕKðLà#Ÿz™z�Ø%)§X¢X™E°6’	Ü˜D¤3§9¡9§>¡>´3·9±9×3JÑ3JÐ"KÔLØŸ7™7˜(�Ø�Ø#’	Ü˜D¤#§)¡)×"3Ñ"3Ô4Ü×.Ñ.¨t¯w©wÓ7�Ø"×.Ñ.�à-1¯]ª]�D—M‘M×'Ñ'Ô)Ø?C¿~º~˜Ÿ™¨Ñ*×3Ñ3×9Ñ9Ô;Øð ð
 —>‘>Ð-´#°d·n±nÓ2EÈÒ2IØ!%§¡ò L˜Ø!×(Ñ(¨'°5·>±>×3GÑ3GÓ3IÐ)JÕKðLà)-¯ª™I¸\‘	Ü˜D¤#§)¡)×"<Ñ"<Ô=Ü×.Ñ.¨t¯w©wÓ7�Ø"×.Ñ.�Ø)-¯ª™I¸\‘	áà×Ñ ¨+°yÀ(ÈLÐ YÖZðY,	[ð\ �l‰l×'Ñ'¨Ó5×5Ð5Ø�l‰l×+Ñ+¨IÓ6×6Ð6àˆð 	6øØ6ús$   ‚L;M+Ì=M'Ì>"M+Í M)Í!M+Í)M+c              ƒ   ó  K  — t        j                  «       | _        t        |t        j
                  j                  t        j
                  j                  f«      �rlt        | j                  |j                  «      ƒ d {  –—† | j                  |j                  «      ƒ d {  –—† f«      }|j                  D �ci c]  }|j                  |“Œ }}|j                  D �ci c]  }|j                  |“Œ }}|j                  D �]Ä  }t        t        t        |dd «      dd «      dd «      xs t        |dd «      }t        |dd «      }	t        |dd «      }
|	rI| j                  j!                  |rt#        j$                  |«      nd|	d |j&                  d f«      ƒ d {  –—†  t        |t        j
                  j(                  «      rt*        j-                  |«       t        |t        j
                  j.                  «      �r¤|�r¡|j0                  }t        |t        j
                  j2                  «      �sp	 | j5                  t        j6                  j                  j9                  | j;                  t#        j$                  |«      «      ƒ d {  –—† t        j
                  j=                  t        j
                  j?                  |j0                  j                  |j0                  j                  ¬«      g¬«      |	|
z
  |	d	¬
«      «      ƒ d {  –—† }t        |t        j
                  j                  j@                  «      si|jC                  |j                  D �ci c]  }|j                  |“Œ c}«       |jC                  |j                  D �ci c]  }|j                  |“Œ c}«       	 | jJ                  jL                  jO                  |||f«       �ŒÇ y t        |t        j
                  jP                  t        j
                  jR                  f«      �rŸ| j                  j!                  d|jT                  d |j&                  d f«      ƒ d {  –—†  | j5                  t        j6                  j                  jW                  |jT                  |jX                  z
  |j&                  d¬«      «      ƒ d {  –—† }|jZ                  r°| jJ                  jL                  jO                  t        j
                  j]                  |jZ                  d   |jT                  |jX                  ¬«      |j                  D �ci c]  }|j                  |“Œ c}|j                  D �ci c]  }|j                  |“Œ c}f«       y |j^                  r6| jJ                  jL                  jO                  |j^                  d   i i f«       y y t        |t        j
                  j`                  «      r3| jJ                  jL                  jO                  |jB                  i i f«       y t        |t        j
                  jb                  «      rt*        j-                  |«       y y 7 �Œ¹7 �Œšc c}w c c}w 7 �Œ³7 �ŒÉ7 �ŒNc c}w c c}w # tD        tF        tH        f$ r Y �ŒÖw xY w7 �Œ87 �Œ×c c}w c c}w ­w)NÚmessagerü   Ú
channel_idÚptsÚ	pts_countr   )Úmin_idÚmax_id)ÚrangesF©rç   Úfilterr  ÚlimitÚforceéÿÿÿÿ©r  ÚdateÚqts©r  r  r  )2r   r‚   rƒ   r­   r   r   ÚUpdatesÚUpdatesCombinedÚanyrÿ   ÚusersÚchatsrê   r§   ré   rO   Úupdate_stater   rô   r  ÚUpdateChannelTooLongrh   ÚinfoÚUpdateNewChannelMessager  ÚMessageEmptyr¥   r¦   ÚGetChannelDifferenceÚresolve_peerÚChannelMessagesFilterÚMessageRangeÚChannelDifferenceEmptyr¯   r   r    r   rl   r«   Ú
put_nowaitÚUpdateShortMessageÚUpdateShortChatMessager  ÚGetDifferencer  Únew_messagesÚUpdateNewMessageÚother_updatesÚUpdateShortÚUpdatesTooLong)r‰   r§   rù   Úur  Úcr  r¯   r  r  r  r  Údiffs                rŒ   Úhandle_updateszClient.handle_updatess  s+  è ø€ Ü (§¡£ˆÔä�g¤§	¡	× 1Ñ 1´3·9±9×3LÑ3LÐMÕNÜØ×&Ñ& w§}¡}Ó5×5Ø×&Ñ& w§}¡}Ó5×5ðó ˆFð
 '.§m¡mÖ4 �Q—T‘T˜1‘WÐ4ˆEÐ4Ø&-§m¡mÖ4 �Q—T‘T˜1‘WÐ4ˆEÐ4à!Ÿ/™/ó 4Q�Ü$ÜÜØ" I¨tóà$ dóð $ Tóò 9ô ˜V \°4Ó8ð ô ˜f e¨TÓ2�Ü# F¨K¸Ó>�	áØŸ,™,×3Ñ3á@JœE×0Ñ0°Ô<ÐPQØØ Ø#ŸL™LØ ðó÷ ð ô ˜f¤c§i¡i×&DÑ&DÔEÜ—H‘H˜VÔ$ä˜f¤c§i¡i×&GÑ&GÕHÊVØ$Ÿn™n�Gä% g¬s¯y©y×/EÑ/EÕFðLØ)-¯©Ü #§¡× 5Ñ 5× JÑ JØ26×2CÑ2CÄE×DXÑDXÐYcÓDdÓ2e×,eÜ+.¯9©9×+JÑ+JÜ03·	±	×0FÑ0FØ39·>±>×3DÑ3DØ39·>±>×3DÑ3Dð 1Gó 1*ð 0+ð ,Kó ,&ð ),¨i©Ø*-Ø*/ð !Kó !"ó*÷ $˜Dô" $.¨d´C·I±I×4EÑ4E×4\Ñ4\Ô#]Ø %§¡¸t¿z¹zÖ-J¸!¨a¯d©d°A©gÒ-JÔ KØ %§¡¸t¿z¹zÖ-J¸!¨a¯d©d°A©gÒ-JÕ Kà—‘×-Ñ-×8Ñ8¸&À%ÈÐ9OÖPñi4Qôj ˜¤#§)¡)×">Ñ">ÄÇ	Á	×@`Ñ@`Ð!aÕbØ—,‘,×+Ñ+àØ—K‘KØØ—L‘LØðó÷ ð ð Ÿ™Ü—‘×%Ñ%×3Ñ3ØŸ™ g×&7Ñ&7Ñ7Ø Ÿ™Øð 4ó ó÷ ˆDð × Ò Ø—‘×-Ñ-×8Ñ8Ü—I‘I×.Ñ.Ø $× 1Ñ 1°!Ñ 4Ø#ŸK™KØ")×"3Ñ"3ð /ó ð
 '+§j¡jÖ1 �Q—T‘T˜1‘WÒ1Ø&*§j¡jÖ1 �Q—T‘T˜1‘WÒ1ð:õ ð ×%Ò%Ø—O‘O×1Ñ1×<Ñ<¸d×>PÑ>PÐQRÑ>SÐUWÐY[Ð=\Õ]ð &ä˜¤§¡×!6Ñ!6Ô7Ø�O‰O×)Ñ)×4Ñ4°g·n±nÀbÈ"Ð5MÕNÜ˜¤§¡×!9Ñ!9Ô:Ü�H‰H�WÕð ;ð} 6ùØ5ûò 5ùÚ4ðùð( -fùð$ûò$ .KùÚ-Jøô !/Ô0KÔMgÐhò !Ú ð!úðùðûò 2ùÚ1ùsù   ‚A<ZÁ>X7Á?!ZÂ X:
Â!ZÂ8X=ÃZÃYÃ0B$ZÆYÆBZÈ,AYÊY
ÊA=YË?YÌ YÌAZÍY
Í ZÍ?Y
ÎB*ZÐ=Y5Ð>A#ZÒ!Y8Ò"A?ZÔ!Y;
Ô5ZÕZ ÕCZØ:ZØ=ZÙ
YÙYÙ
ZÙY2Ù.ZÙ1Y2Ù2ZÙ8ZÙ;
Zc           
   ƒ   ó¤  K  — | j                   j                  «       ƒ d {  –—† }d}d}|st        j                  d«       ||fS |D �]·  }|\  }}}}}d}		 	 | j	                  |dk  rat
        j                  j                  j                  | j                  |«      ƒ d {  –—† t
        j                  j                  «       |dd¬«      n+t
        j                  j                  j                  ||d¬«      «      ƒ d {  –—† }
t#        |
t
        j                  j                  j$                  «      r�n¬t#        |
t
        j                  j                  j&                  «      r�n|t#        |
t
        j                  j                  j(                  «      r|
j*                  j,                  }nþt#        |
t
        j                  j                  j.                  «      r6|
j0                  j,                  }|
j0                  j2                  }|	|k(  r�nÖ|}	nšt#        |
t
        j                  j                  j4                  «      r�n£t#        |
t
        j                  j                  j6                  «      r�nst#        |
t
        j                  j                  j8                  «      r|
j,                  }|
j:                  D �ci c]  }|j<                  |“Œ }}|
j>                  D �ci c]  }|j<                  |“Œ }}|
j@                  D ]O  }|dz  }| jB                  jD                  jG                  t
        j                  jI                  ||d¬	«      ||f«       ŒQ |
jJ                  D ]/  }|dz  }| jB                  jD                  jG                  |||f«       Œ1 t#        |
t
        j                  j                  j(                  t
        j                  j                  j8                  f«      rn�Œ†| j                   j                  |«      ƒ d {  –—†  �Œº t        j                  d
||«       ||fS 7 �Œü7 �Œ‚7 �Œ(# t        t        t        t         f$ r Y Œew xY wc c}w c c}w 7 ŒT­w)Nr   z#No states found, skipping recovery.r<   Fr  r  r*   r  r  z%Recovered %s messages and %s updates.)&rO   r  rh   r  r¥   r   r¦   r§   r  r  r   ÚChannelMessagesFilterEmptyr#  r   r   r    r   r­   ÚDifferenceEmptyÚDifferenceTooLongÚ
DifferenceÚstater  ÚDifferenceSliceÚintermediate_stater  r  ÚChannelDifferenceTooLongÚChannelDifferencer  rê   r  r$  rl   r«   r   r%  r&  )r‰   ÚstatesÚmessage_updates_counterÚother_updates_counterr2  rê   Ú	local_ptsr°   Ú
local_dateÚprev_ptsr+  Úir  r  r  r¯   s                   rŒ   Úrecover_gapszClient.recover_gapsÙ  s¨  è ø€ Ø—|‘|×0Ñ0Ó2×2ˆà"#ÐØ !ÐáÜ�H‰HÐ:Ô;Ø+Ð-BÐCÐCàó G	0ˆEØ.3Ñ+ˆB�	˜1˜j¨!àˆHàðØ!%§¡ð   !šVô Ÿ™×-Ñ-×BÑBØ*.×*;Ñ*;¸BÓ*?×$?Ü#&§9¡9×#GÑ#GÓ#IØ )Ø"'Ø"'ð Cô ô Ÿ™×-Ñ-×;Ñ;Ø )Ø!+Ø !ð <ó ó"÷ �Dô" ˜d¤C§I¡I×$5Ñ$5×$EÑ$EÔFÙÜ ¤c§i¡i×&7Ñ&7×&IÑ&IÔJÙÜ ¤c§i¡i×&7Ñ&7×&BÑ&BÔCØ $§
¡
§¡‘IÜ ¤c§i¡i×&7Ñ&7×&GÑ&GÔHØ $× 7Ñ 7× ;Ñ ;�IØ!%×!8Ñ!8×!=Ñ!=�Jà 9Ò,Ùà(‘HÜ ¤c§i¡i×&7Ñ&7×&NÑ&NÔOÙÜ ¤c§i¡i×&7Ñ&7×&PÑ&PÔQÙÜ ¤c§i¡i×&7Ñ&7×&IÑ&IÔJØ $§¡�Ià*.¯*©*Ö5 Q˜Ÿ™˜q™Ð5�Ð5Ø*.¯*©*Ö5 Q˜Ÿ™˜q™Ð5�Ð5à#×0Ñ0ò �GØ+¨qÑ0Ð+Ø—O‘O×1Ñ1×<Ñ<äŸI™I×6Ñ6Ø(/Ø$-Ø*,ð 7ó ð
 "Ø!ðõ
ðð #×0Ñ0ò �FØ)¨QÑ.Ð)Ø—O‘O×1Ñ1×<Ñ<Ø ¨Ð.õðô ˜d¤S§Y¡Y×%6Ñ%6×%AÑ%AÄ3Ç9Á9×CTÑCT×CfÑCfÐ$gÔhØñA ðD —,‘,×+Ñ+¨BÓ/×/Ò/ðOG	0ôR 	�‰Ð8Ð:QÐShÔiØ'Ð)>Ð?Ð?ðg 3ùð$ %@ùðúô '¬Ô8SÔUoÐpò Ùðüò0 6ùÚ5ð2 0ús   ‚Q P¡4QÁAP%ÂPÂAP%Ã:P"Ã;P%Ã?F1QÊ0QËQËQ	Ë(DQÏ9QÏ:#QÐP%Ð"P%Ð%QÐ>QÑ QÑQc           	   ƒ   ó  K  — | j                   j                  «       ƒ d {  –—†  t        | j                   j                  «       ƒ d {  –—† d u | j                   j	                  «       ƒ d {  –—† d u | j                   j                  «       ƒ d {  –—† d u | j                   j                  «       ƒ d {  –—† d u g«      }|�rŽ| j                  r| j                  st        d«      ‚| j                   j                  | j                  «      ƒ d {  –—†  | j                   j                  d«      ƒ d {  –—†  | j                   j                  d«      ƒ d {  –—†  | j                   j                  | j                  «      ƒ d {  –—†  | j                   j	                  t        | | j                   j                  «       ƒ d {  –—† | j                   j                  «       ƒ d {  –—† «      j                  «       ƒ d {  –—† «      ƒ d {  –—†  | j                   j                  d «      ƒ d {  –—†  | j                   j                  d «      ƒ d {  –—†  y | j                   j                  «       ƒ d {  –—† s¹| j                  r.| j                   j                  | j                  «      ƒ d {  –—†  y 	 	 t        t        d«      ƒ d {  –—† «      }|dk  rt!        d«       Œ/t        d|› d�«      ƒ d {  –—† j#                  «       }|dk(  r$| j                   j                  |«      ƒ d {  –—†  y 	 Œ~y 7 �Œ	7 �Œå7 �ŒÅ7 �Œ¥7 �Œ…7 �Œ.7 �Œ7 �Œî7 �ŒÄ7 �ŒŠ7 �Œl7 �ŒU7 �ŒL7 �Œ,7 �Œ7 Œë7 Œ´7 Œ›7 Œq7 Œ=# t$        $ r}t!        |«       Y d }~ŒRd }~ww xY w­w)	NzgThe API key is required for new authorizations. More info: https://pyrofork.wulan17.dev/main/start/authé   r   z&Enter the api_id part of the API key: zInvalid valuer¶   r·   r¸   )rO   Úopenr  rI   Úauth_keyÚuser_idÚis_botr>   r?   ÚAttributeErrorÚdc_idr  r#   Úcreaterd   r)   r¾   re   rÒ   )r‰   Úsession_emptyrÕ   rÖ   rØ   s        rŒ   Úload_sessionzClient.load_session/  sá  è ø€ Ø�l‰l×ÑÓ!×!Ð!äØ—,‘,×(Ñ(Ó*×*¨dÐ2Ø—,‘,×'Ñ'Ó)×)¨TÐ1Ø—,‘,×&Ñ&Ó(×(¨DÐ0Ø—,‘,×%Ñ%Ó'×'¨4Ð/ð	
ó ˆò Ø—;’; d§m¢mÜ$ð &_ó `ð `ð —,‘,×%Ñ% d§k¡kÓ2×2Ð2à—,‘,×$Ñ$ QÓ'×'Ð'Ø—,‘,×#Ñ# AÓ&×&Ð&à—,‘,×(Ñ(¨¯©Ó8×8Ð8Ø—,‘,×'Ñ'ÜØ §¡× 2Ñ 2Ó 4×4ØŸ,™,×0Ñ0Ó2×2ó÷ ‘&“(÷ó÷ ð ð —,‘,×&Ñ& tÓ,×,Ð,Ø—,‘,×%Ñ% dÓ+×+Ñ+ð Ÿ™×,Ñ,Ó.×.Ð.Ø—;’;ØŸ,™,×-Ñ-¨d¯k©kÓ:×:Ñ:àð%Ü$'¬fÐ5]Ó.^×(^Ó$_˜Eà$¨šzÜ % oÔ 6Ø (ä-3°d¸5¸'ÐASÐ4TÓ-U×'U×&\Ñ&\Ó&^˜Gà&¨#š~Ø&*§l¡l×&9Ñ&9¸%Ó&@× @Ð @Ø %ð  .ð ð	 /ð= 	"ùð +ùØ)ùØ(ùØ'ùð 3ùà'ùØ&ùà8ùð 5ùØ2ùðùðùð -ùØ+ùð /øà:øð )_øð (Vøð !Aùä(ò %Ü! !ŸH™Hûð%üsœ  ‚N L)¡&NÁL,Á"NÁ*L/
Á+"NÂL2Â"NÂ0L5Â1ANÄ
L8Ä"NÄ-L;Ä."NÅL>Å,NÅ=MÅ><NÆ:MÆ; NÇMÇNÇ5M
Ç6NÈMÈ"NÈ$MÈ%"NÉMÉ"NÉ*MÉ+8NÊ#MÊ$NÊ+M  Ê>MÊ?M  ËNËM  Ë*MË+5M  Ì MÌ!M  Ì%NÌ,NÌ/NÌ2NÌ5NÌ8NÌ;NÌ>NÍNÍNÍNÍ
NÍNÍNÍNÍNÍNÍM  ÍM  ÍM  Í 	M>Í)M9Í4NÍ9M>Í>Nc                 óH   — |D ]  }||k(  s|j                  |dz   «      sŒ y y)Nú.TF)Ú
startswith)r‰   ÚexcludeÚmodulerØ   s       rŒ   Úis_excludedzClient.is_excludedb  s1   € Øò 	ˆAØ˜Š{˜f×/Ñ/°°C±Õ8Ùð	ð r“   c                 ó  — | j                   r}| j                   j                  «       }dD ]]  }|j                  |g «      sŒ| j                   |   D �cg c],  }|j                  «       d   |j                  «       dd  xs d f‘Œ. c}||<   Œ_ ny |j                  dd«      �rÐ|d   }|j                  dg «      }|j                  dg «      }g }i }|r£|D ]ž  \  }	}
t        j
                  j                  |j                  d	d
«      |	j                  d	d
«      «      }|
€2|j                  |j                  d
d	«      j                  dd	«      «       Œz|
||j                  d
d	«      j                  dd	«      <   Œ  d}|�sât	        j                  |j                  d	d
«      «      D �]·  \  }}}|j                  d
d	«      j                  dd	«      }d|v rŒ/||v r"t        j                  d| j                  |«       ŒU|D �]]  }|j                  d«      sŒ|d	z   |d d z   }||v r"t        j                  d| j                  |«       ŒGt        |«      }t        |«      j!                  «       D ]ð  }	 t#        ||«      j$                  D ]Ô  \  }
}t'        |
t(        «      sŒt'        |t*        «      sŒ(||v rM|||   v rF||   j-                  |«       t        j                  dj/                  | j                  |||«      «       Œy| j1                  |
|«       t        j3                  dj/                  | j                  t5        |
«      j6                  |||«      «       |dz  }ŒÖ Œò �Œ` �Œº �nv|D �]p  \  }	}|j                  d
d	«      j                  dd	«      d	z   |	z   }| j;                  ||«      r"t        j                  d| j                  |«       Œcd}	 t        |«      }dt?        |«      v �ràt	        j                  |j                  d	d
«      «      D �]·  \  }}}|j                  d
d	«      j                  dd	«      }d|v rŒ/||v r"t        j                  d| j                  |«       ŒU|D �]]  }|j                  d«      sŒ|d	z   |d d z   }||v r"t        j                  d| j                  |«       ŒGt        |«      }t        |«      j!                  «       D ]ð  }	 t#        ||«      j$                  D ]Ô  \  }
}t'        |
t(        «      sŒt'        |t*        «      sŒ(||v rM|||   v rF||   j-                  |«       t        j                  dj/                  | j                  |||«      «       Œy| j1                  |
|«       t        j3                  dj/                  | j                  t5        |
«      j6                  |||«      «       |dz  }ŒÖ Œò �Œ` �Œº |€t        |«      j!                  «       }d}|D ]ð  }	 t#        ||«      j$                  D ]Ô  \  }
}t'        |
t(        «      sŒt'        |t*        «      sŒ(||v rM|||   v rF||   j-                  |«       t        j                  dj/                  | j                  |||«      «       Œy| j1                  |
|«       t        j3                  dj/                  | j                  t5        |
«      j6                  |||«      «       |dz  }ŒÖ Œò �Œs |D ]<  }||   D ]2  }
t        j                  dj/                  | j                  |
|«      «       Œ4 Œ> |dkD  r9t        j3                  dj/                  | j                  ||dkD  rdnd|«      «       y t        j                  d| j                  |«       y y c c}w # t8        $ r Y �Œ$w xY w# t<        $ r% t        j                  d| j                  |«       Y �ŒXw xY w# t8        $ r Y �Œw xY w# t8        $ r6 |r0t        j                  dj/                  | j                  ||«      «       Y �Œ,w xY w)N)ÚincluderM  r   r*   ÚenabledTÚrootrQ  rM  rK  ú/ú\Ú__pycache__z#[%s] [LOAD] Ignoring namespace "%s"z.pyéýÿÿÿz8[{}] [LOAD] Ignoring function "{}" from group {} in "{}"z*[{}] [LOAD] {}("{}") in group {} from "{}"z-[%s] [LOAD] Ignoring non-existent module "%s"Ú__path__Fz9[{}] [LOAD] Ignoring non-existent function "{}" from "{}"z.[{}] Successfully loaded {} plugin{} from "{}"Úsr9   z[%s] No plugin loaded from "%s") rU   Úcopyr¬   ÚsplitÚosÚpathÚjoinÚreplacerï   Úwalkrh   ri   r=   Úendswithr   ÚvarsÚkeysré   Úhandlersr­   r!   rd   ÚremoverÎ   Úadd_handlerr  rÇ   Ú__name__rÒ   rO  ÚImportErrorÚdir)r‰   rU   Úoptionr=  rS  rQ  rM  Úexclude_pluginsÚexclude_handlersr]  ÚhandlerÚmodule_pathÚcountÚcurrent_rootr°   Ú	filenamesÚ	namespaceÚfilenamerN  r=   ræ   rd  Úwarn_non_existent_functionss                          rŒ   Úload_pluginszClient.load_pluginsh  sE  € Ø�<Š<Ø—l‘l×'Ñ'Ó)ˆGà0ò �Ø—;‘;˜v rÕ*ð "&§¡¨fÑ!5ö'àð Ÿ™› 1™ q§w¡w£y°° }Ò'<¸Ò=ò'�G˜F’Oñð à�;‰;�y $Õ'Ø˜6‘?ˆDØ—k‘k )¨RÓ0ˆGØ—k‘k )¨RÓ0ˆGà ˆOØ!ÐáØ%,ò e‘M�D˜'Ü"$§'¡'§,¡,ØŸ™ S¨#Ó.°·±¸SÀ#Ó0Fó#�Kð �Ø'×.Ñ.¨{×/BÑ/BÀ3ÈÓ/L×/TÑ/TÐUYÐ[^Ó/_Õ`à]dÐ(¨×)<Ñ)<¸SÀ#Ó)F×)NÑ)NÈtÐUXÓ)YÒZðeð ˆEâÜ24·'±'¸$¿,¹,ÀsÈCÓ:PÓ2Qó B1Ñ.�L ! YØ ,× 4Ñ 4°S¸#Ó >× FÑ FÀtÈSÓ Q�IØ$¨	Ñ1Ø Ø  OÑ3ÜŸ™ØAÀ4Ç9Á9Èiôð !à(1ó 81˜HØ'×0Ñ0°Õ7Ø.7¸#©oÀÈÈ"ÀÑ.M Ø#.°/Ñ#AÜ$'§K¡KØ(MØ(,¯	©	Ø(3ô%&ð
 %-ä-:¸;Ó-G Fä04°V³×0AÑ0AÓ0Cò +%1¨ð()1ÜBIØ06¸óC.ç.6©hò%-?±°¸ô 4>Ø4;¼Wõ42ä6@ÀÌÕ6Lð 9DÐGWÑ8WØ<@Ø;KÈKÑ;Xñ=Yð 9IØ<Gñ9:ç:@¹&À¼,Ü8;¿¹Ø<v×<}Ñ<}Ø@DÇ	Á	Ø@DØ@EØ@Kó	=>ô9:ð 9Aà48×4DÑ4DÀWÈeÔ4Tä47·H±HØ8d×8kÑ8kØ<@¿I¹IÜ<@À»M×<RÑ<RØ<@Ø<AØ<Gó9:ô56ð 5:¸Q±J±EñK%-?ò	+%1ò81òB1ðH '.ó @"‘N�D˜(Ø"&§,¡,¨s°CÓ"8×"@Ñ"@ÀÀsÓ"KÈcÑ"QÐTXÑ"X�KØ×'Ñ'¨¸ÔEÜŸ™ØAÀ4Ç9Á9Èkôð !à26Ð/ð!Ü!.¨{Ó!;˜ð "¤S¨£[Ò0Ü:<¿'¹'À+×BUÑBUÐVYÐ[^ÓB_Ó:`ó B9Ñ6˜L¨!¨YØ(4×(<Ñ(<¸SÀ#Ó(F×(NÑ(NÈtÐUXÓ(Y˜IØ,°	Ñ9Ø (Ø(¨OÑ;Ü #§¡Ø$IÈ4Ï9É9ÐV_ô!"ð !)à09ó 8!9 HØ'/×'8Ñ'8¸Õ'?Ø6?À#±oÈÐQTÐRTÈÑ6U¨Ø+6¸/Ñ+IÜ,/¯K©KØ0UØ04·	±	Ø0;ô-.ð
 -5ä5BÀ;Ó5O¨Fä8<¸V»×8IÑ8IÓ8Kò +-9°ð(19ÜJQØ8>ÀóK6ç6>±hò%5G¹¸Àô <FØ<CÄWõ<:ä>HÈÔPSÕ>Tð ALÐO_Ñ@_ØDHØCSÐT_ÑC`ñEað AQØDOñABçBHÁ&ÈÄ,Ü@CÇÁØD~÷  EFñ  EFØHLÏ	É	ØHLØHMØHSó	EFôABð AIà<@×<LÑ<LÈWÐV[Ô<\ä<?¿H¹HØ@l×@sÑ@sØDHÇIÁIÜDHÈÃM×DZÑDZØDHØDIØDOóABô=>ð =BÀQ¹J¹EñK%5Gò	+-9ò8!9ðB9ðH  Ð'Ü#'¨£<×#4Ñ#4Ó#6˜Ø6;Ð3à (ò #"˜ð!"Ü29¸&À$Ó2G×2PÑ2Pò /¡ ¨Ü#-¨g´wÕ#?ÄJÈuÔVYÕDZà(3Ð7GÑ(GØ,0Ð4DÀ[Ñ4QÑ,Qà(8¸Ñ(E×(LÑ(LÈTÔ(RÜ(+¯©Ø,f×,mÑ,mØ04·	±	¸4ÀÈó-.ô)*ð
 )1Ø$(×$4Ñ$4°W¸eÔ$Dä$'§H¡HØ(T×([Ñ([Ø,0¯I©IÜ,0°«M×,BÑ,BØ,0Ø,1Ø,7ó)*ô%&ð %*¨Q¡J¡Eñ3/ò#"ð{@"ðD +ò �Ø/°Ñ7ò �GÜ—K‘KØS×ZÑZØ ŸI™I w°óõñðð �qŠyÜ—‘ØD×KÑKØŸ	™	 5°¸²©#ÀÀDóõô —‘Ð=¸t¿y¹yÈ$ÕOðU (ùò'øôz 09ò )1Ú,0ð)1ûô 'ò !ÜŸ™ØKØ ŸI™IØ'ôò
 !ð!ûôT 8Aò 19Ú48ð19ûôH  )ò "Ù:Ü #§¡Ø$_×$fÑ$fØ(,¯	©	°4¸ó%&ô!"úð"úsu   Á1]/É ,]4Ê]4ÊB/]4Î?^Ó,^5Ó0^5ÔB/^5×,_Ø_ØB/_Ý4	^	Þ ^	Þ*^2Þ1^2Þ5	_ß_ß;`à`c           
   ƒ   óB  K  — |\  }}}}}}}|st        j                  |d¬«      nd }	t         j                  j                  t	        j
                  ddt         j                  j                  ||«      «      «      dz   }
|r
t        «       nt        |
d«      }	 | j                  ||dd||«      2 3 d {  –—† }|j                  |«       Œ7 Œ6 	 |r	||_        |S |j                  «        t         j                  j                  |
«      d   }t        j                  |
|«       |S # t         $ rs}|s%|j                  «        t        j"                  |
«       t%        |t&        j(                  «      r|‚t%        |t*        j,                  j.                  «      r|‚Y d }~y d }~ww xY w­w)NT)Úexist_okz\\rT  z.tempÚwbr   )r\  Úmakedirsr]  ÚabspathÚreÚsubr^  r	   rA  Úget_fileÚwriter=   ÚcloseÚsplitextÚshutilÚmoveÚBaseExceptionre  r­   rq   ÚCancelledErrorr„   ÚerrorsÚ	FloodWait)r‰   ÚpacketÚfile_idÚ	directoryÚ	file_namerM   Ú	file_sizeÚprogressÚprogress_argsr°   Útemp_file_pathÚfileÚchunkÚ	file_pathrØ   s                  rŒ   Úhandle_downloadzClient.handle_downloada  sS  è ø€ ØW]ÑTˆ�˜I y°)¸XÀ}á9BŒB�K‰K˜	¨DÕ1ÈˆÜŸ™Ÿ™¬¯©°¸¼R¿W¹W¿\¹\È)ÐU^Ó=_Ó)`ÓaÐdkÑkˆÙ%ŒwŒy¬4°ÀÓ+Eˆð	!Ø#Ÿ}™}¨W°iÀÀAÀxÐQ^Ó_÷ "ð "�eØ—
‘
˜5Õ!ð"øÑ_ñ Ø%�”	Ø�à—
‘
”ÜŸG™G×,Ñ,¨^Ó<¸QÑ?�	Ü—‘˜N¨IÔ6Ø Ð øô) ò 	ÙØ—
‘
”Ü—	‘	˜.Ô)ä˜!œW×3Ñ3Ô4Ø�ä˜!œXŸ_™_×6Ñ6Ô7Ø�äûð	üsV   ‚BFÂD  Â,C	Â0CÂ1C	Â4D  ÃC	Ã	D  ÃAFÄ 	FÄ)A)FÆFÆFÆFrˆ  r‹  r
  ÚoffsetrŒ  r�  c                ó’  K  — | j                   4 ƒd {  –—†  |j                  }|t        j                  k(  �r|j                  dkD  r6t
        j                  j                  |j                  |j                  ¬«      }nƒ|j                  dk(  r,t
        j                  j                  |j                   ¬«      }nHt
        j                  j                  t        j                  |j                  «      |j                  ¬«      }t
        j                  j                  ||j                  |j                  t         j"                  k(  ¬«      }	nª|t        j$                  k(  rLt
        j                  j'                  |j                  |j(                  |j*                  |j,                  ¬«      }	nKt
        j                  j/                  |j                  |j(                  |j*                  |j,                  ¬«      }	d}
t1        |«      xs d}d}t1        |«      |z  }|j2                  }t5        | ||| j6                  j3                  «       ƒ d {  –—† k7  rCt9        | || j6                  j;                  «       ƒ d {  –—† «      j=                  «       ƒ d {  –—† n!| j6                  j?                  «       ƒ d {  –—† | j6                  j;                  «       ƒ d {  –—† d	¬
«      }	 |jA                  «       ƒ d {  –—†  || j6                  j3                  «       ƒ d {  –—† k7  r—| jC                  t
        jD                  jF                  jI                  |¬«      «      ƒ d {  –—† }|jC                  t
        jD                  jF                  jK                  |jL                  |jN                  ¬«      «      ƒ d {  –—†  |jC                  t
        jD                  jP                  jS                  |	||¬«      d¬«      ƒ d {  –—† }tU        |t
        j                  jP                  jV                  «      rõ	 |jN                  }|­–— |
dz  }
||z  }|r|tY        jZ                  ||dk7  rt]        ||«      n||g|¢­Ž }t_        j`                  |«      r |«       ƒ d {  –—†  n.| jb                  je                  | jf                  |«      ƒ d {  –—†  ti        |«      |k  s|
|k\  r�n·|jC                  t
        jD                  jP                  jS                  |	||¬«      d¬«      ƒ d {  –—† }ŒôtU        |t
        j                  jP                  jj                  «      �rBt5        | |j2                  t9        | |j2                  | j6                  j;                  «       ƒ d {  –—† «      j=                  «       ƒ d {  –—† | j6                  j;                  «       ƒ d {  –—† d	d	¬«      }	 |jA                  «       ƒ d {  –—†  	 |jC                  t
        jD                  jP                  jm                  |jn                  ||¬«      «      ƒ d {  –—† }tU        |t
        j                  jP                  jp                  «      rX	 |jC                  t
        jD                  jP                  js                  |jn                  |jt                  ¬«      «      ƒ d {  –—†  ŒÔ|jN                  }ty        jz                  ||j|                  t        |j€                  d d |dz  jƒ                  dd«      z   «      «      }|jC                  t
        jD                  jP                  j…                  |jn                  |¬«      «      ƒ d {  –—† }t‡        |«      D ]a  \  }}||jˆ                  |z  |jˆ                  |dz   z   }t‹        jŒ                  |jŽ                  t‘        |«      j“                  «       k(  d«       Œc |­–— |
dz  }
||z  }|r|tY        jZ                  ||dk7  rt]        ||«      n||g|¢­Ž }t_        j`                  |«      r |«       ƒ d {  –—†  n.| jb                  je                  | jf                  |«      ƒ d {  –—†  ti        |«      |k  s|
|k\  rn�ŒŠ|j—                  «       ƒ d {  –—†  |j—                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  y 7 �Œ›7 �Œm7 �ŒE7 �Œ.7 �Œ7 �Œñ7 �ŒÕ7 �Œµ7 �Œu7 �Œ"7 �Œà7 �ŒJ7 �Œ7 �ŒÇ7 �ŒV7 �Œ?7 �Œ!7 �Œ7 �Œ¹7 �Œ7# tv        $ r Y Œˆw xY w7 �Œ£7 ŒØ7 Œ«# t”        $ r}|‚d }~ww xY w7 Œ’# |j—                  «       ƒ d {  –—†7   w xY w# t˜        jš                  $ r ‚ t˜        jœ                  jž                  $ r ‚ t”        $ r }t         j£                  |«       Y d }~�Œd }~ww xY w7 Œö# |j—                  «       ƒ d {  –—†7   w xY w7 �Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr   )rC  rë   )Úchat_id)r  rë   )rû   Úphoto_idÚbig)rê   rë   Úfile_referenceÚ
thumb_sizeiÿÿÿi   T)Úis_media)rF  )rê   Úbytes)Úlocationr“  r
  é   )rZ   r*   )rš  Úis_cdn)Ú
file_tokenr“  r
  )rŸ  Úrequest_tokenéüÿÿÿé   r;   r—  )rŸ  r“  z$h.hash == sha256(cdn_chunk).digest())Rrv   Ú	file_typer/   Ú
CHAT_PHOTOr•  r   r   ÚInputPeerUserÚchat_access_hashÚInputPeerChatÚInputPeerChannelr   rô   ÚInputPeerPhotoFileLocationÚmedia_idÚthumbnail_sourcer0   ÚCHAT_PHOTO_BIGÚPHOTOÚInputPhotoFileLocationrë   r˜  Úthumbnail_sizeÚInputDocumentFileLocationÚabsrF  r$   rO   r#   rI   rG  rB  r�   r¥   r¦   ÚauthÚExportAuthorizationÚImportAuthorizationrê   r›  ÚuploadÚGetFiler­   ÚFileÚ	functoolsÚpartialrã   ÚinspectÚiscoroutinefunctionrˆ   Úrun_in_executorrf   rî   ÚFileCdnRedirectÚ
GetCdnFilerŸ  ÚCdnFileReuploadNeededÚReuploadCdnFiler   r   r   Úctr256_decryptÚencryption_keyÚ	bytearrayÚencryption_ivÚto_bytesÚGetCdnFileHashesÚ	enumerater
  r   ÚcheckÚhashr   ÚdigestrÒ   r–   r„   ÚStopTransmissionr…  r†  rh   rÓ   )r‰   rˆ  r‹  r
  r“  rŒ  r�  r£  rû   rœ  ÚcurrentÚtotalÚ
chunk_sizeÚoffset_bytesrF  ro   Úexported_authÚrr�  ÚfuncÚcdn_sessionÚr2Údecrypted_chunkÚhashesr=  ÚhÚ	cdn_chunkrØ   s                               rŒ   r}  zClient.get_file�  sƒ  è ø€ ð ×*Ñ*÷ O	%ñ O	%Ø×)Ñ)ˆIàœH×/Ñ/Ó/Ø—?‘? QÒ&ÜŸ9™9×2Ñ2Ø '§¡Ø$+×$<Ñ$<ð 3ó ‘Dð
 ×/Ñ/°1Ò4Ü"Ÿy™y×6Ñ6Ø%,§_¡_Ð$4ð  7ó  ™ô  #Ÿy™y×9Ñ9Ü',×';Ñ';¸G¿O¹OÓ'LØ(/×(@Ñ(@ð  :ó  ˜ô
 Ÿ9™9×?Ñ?ØØ$×-Ñ-Ø×0Ñ0´O×4RÑ4RÑRð @ó ‘ð
 œhŸn™nÒ,ÜŸ9™9×;Ñ;Ø×'Ñ'Ø '× 3Ñ 3Ø#*×#9Ñ#9Ø&×5Ñ5ð	 <ó ‘ô Ÿ9™9×>Ñ>Ø×'Ñ'Ø '× 3Ñ 3Ø#*×#9Ñ#9Ø&×5Ñ5ð	 ?ó �ð ˆGÜ˜“JÒ/ -ˆEØ$ˆJÜ˜v›;¨Ñ3ˆLà—M‘MˆEäØ�eà $§,¡,×"4Ñ"4Ó"6×6Ò6ô ˜4 ¨d¯l©l×.DÑ.DÓ.F×(FÓG×NÑNÓP×PÐPàŸ<™<×0Ñ0Ó2×2Ø—l‘l×,Ñ,Ó.×.ØôˆGðW%Ø—m‘m“o×%Ð%à $§,¡,×"4Ñ"4Ó"6×6Ò6Ø*.¯+©+ÜŸ™×*Ñ*×>Ñ>Ø"'ð ?ó ó+÷ %�Mð "Ÿ.™.ÜŸ™×*Ñ*×>Ñ>Ø,×/Ñ/Ø"/×"5Ñ"5ð ?ó ó÷ ð ð "Ÿ.™.Ü—M‘M×(Ñ(×0Ñ0Ø!)Ø+Ø(ð 1ó ð
 %'ð )ó ÷ �ô ˜a¤§¡×!1Ñ!1×!6Ñ!6Ô7ØØ !§¡˜à#›à 1™˜Ø$¨
Ñ2˜á#Ü#,×#4Ñ#4Ø (à#,°¢>ô !$ L°)Ô <à%1Ø )ð$ð "/ò$˜Dô  '×:Ñ:¸8ÔDÙ&*£f§¡à&*§i¡i×&?Ñ&?ÀÇÁÈtÓ&T× TÐ Tä˜u›:¨
Ò2°gÀÒ6FÙ!à")§.¡.ÜŸM™M×0Ñ0×8Ñ8Ø)1Ø'3Ø&0ð 9ó ð
 -/ð #1ó #÷ ˜ð5 ôF   ¤3§9¡9×#3Ñ#3×#CÑ#CÕDÜ")Ø˜aŸg™g¬T°$¸¿¹ÀtÇ|Á|×G]ÑG]ÓG_×A_Ó-`×-gÑ-gÓ-i×'iØ"Ÿl™l×4Ñ4Ó6×6ÀÈdô#�Kð
K1Ø)×/Ñ/Ó1×1Ð1à"Ø'2×'9Ñ'9Ü #§¡× 4Ñ 4× ?Ñ ?Ø/0¯|©|Ø+7Ø*4ð !@ó !"ó(÷ "˜Bô  *¨"¬c¯i©i×.>Ñ.>×.TÑ.TÔUð
!-Ø*1¯.©.Ü(+¯©×(<Ñ(<×(LÑ(LØ78·|±|Ø:<×:JÑ:Jð )Mó )*ó+&÷ %&ð %&ð %-à$&§H¡H˜Eô /2×.@Ñ.@Ø %Ø !× 0Ñ 0Ü )Ø$%§O¡O°C°RÐ$8Ø'3°rÑ'9×&CÑ&CÀAÀuÓ&Mñ%Nó!"ó/˜Oð ,3¯>©>Ü #§¡× 4Ñ 4× EÑ EØ/0¯|©|Ø+7ð !Fó !"ó,÷ &˜Fô )2°&Ó(9ò "¡  1Ø,;¸A¿G¹GÀa¹KÈÏÉÐTUÐXYÑTYÑIZÐ,[ 	Ü 3× 9Ñ 9Ø$%§F¡F¬f°YÓ.?×.FÑ.FÓ.HÑ$HØ$Jõ!"ð"ð #2Ó1à# q™L˜GØ(¨JÑ6˜Lá'Ü'0×'8Ñ'8Ø$,ØDMÐQRÂN¤C¨°iÔ$@ÐXdØ$-ð("ð &3ò	(" ô $+×#>Ñ#>¸xÔ#HÙ*.«&§L¡Là*.¯)©)×*CÑ*CÀDÇMÁMÐSWÓ*X×$XÐ$Xä" 5›z¨JÒ6¸'ÀUÒ:JØ %ñI #ðP *×.Ñ.Ó0×0Ð0ð —l‘l“n×$Ð$÷_O	%÷ O	%ñ O	%ùðd 7ùð )GùÐPùà2ùØ.ùð
 &ùà6ùð%ùðùðùð: !-ùà Tùð
ùð B`ùÐ'iùØ6ùð 2ùð"ùð%&úô (9ò !*Ù$)ð!*úð"&ùð: %1øà$Xùô %ò  Ø˜ûð úð 1ù˜k×.Ñ.Ó0×0Ò0ûÜ×,Ñ,ò ØÜ—?‘?×,Ñ,ò ØÜò !Ü—‘˜a× Ò ûð!úð %ù�g—l‘l“n×$Ò$úð_O	%ù÷ O	%÷ O	%ñ O	%üs›  ‚g“b.”g—H-f2Éb1É*f2É/b4É0f2Ê	b7Ê
!f2Ê+b:Ê, f2Ëb=Ë
f2Ëd3Ë+c Ë,"d3ÌcÌAd3ÍcÍAd3Î'c	Î(Ad3Ï,cÏ-Bd3ÒcÒ.d3Ò4cÒ5Ad3ÔcÔA3d3ÖcÖd3ÖcÖ d3Ö=cÖ>d3×
d ×c!×Ad Ø+c$Ø,2d ÙAc*Ú0c'Ú1c*Ú5B!d Ýc9ÝCd à#c<à$.d ác>ád á-d3â dâd3âf2âfâf2âgâ(f/â)gâ1f2â4f2â7f2â:f2â=f2ã d3ãd3ãd3ã	d3ãd3ãd3ãd3ãd3ãd3ãd3ãd3ã!d ã$d ã'c*ã*	c6ã3d ã5c6ã6d ã<d ã>d ä 	dä	dädädäd3äd0ä)d,
ä*d0ä0d3ä39få,fæfæfæfæf2æf,æ%f(
æ&f,æ,f2æ/gæ2gæ8f;æ9gç grs  c                 ó>   — | j                   j                  |«      d   S )Nr   )Ú	mimetypesÚ
guess_type)r‰   rs  s     rŒ   Úguess_mime_typezClient.guess_mime_type[  s   € Ø�~‰~×(Ñ(¨Ó2°1Ñ5Ð5r“   Ú	mime_typec                 ó8   — | j                   j                  |«      S rŽ   )rÚ  Úguess_extension)r‰   rÝ  s     rŒ   rß  zClient.guess_extension^  s   € Ø�~‰~×-Ñ-¨iÓ8Ð8r“   )r   r   r   N© )Trg  Ú
__module__Ú__qualname__Ú__doc__r   ÚAPP_VERSIONÚplatformÚpython_implementationÚpython_versionÚDEVICE_MODELÚsystemÚreleaseÚSYSTEM_VERSIONÚ	LANG_CODEÚ	LANG_PACKÚSYSTEM_LANG_CODEr   ÚsysÚargvÚparentÚ
PARENT_DIRr{  ÚcompileÚINVITE_LINK_REÚUPGRADED_GIFT_RErã   r\  Ú	cpu_countÚWORKERSÚWORKDIRr£   ÚMAX_CONCURRENT_TRANSMISSIONSÚMAX_CACHE_SIZEr
   rÚ  Úreadfpr   r1   r   Ú	ParseModeÚDEFAULTr$   ÚSLEEP_THRESHOLDÚClientPlatformÚOTHERÚstrr   r   rd   ÚboolÚdictr'   rc   r’   rš   rœ   rž   r©   r±   r(   rÞ   rà   r   r   r   rñ   ró   rÿ   r,  r   r>  rI  rO  ru  r’  r.   r   Útupler   r›  r}  rÜ  rß  Ú__classcell__)r‹   s   @rŒ   r6   r6   M   sÏ  ø„ ñQðf ˜k˜]Ð+€KØ4�h×4Ñ4Ó6Ð7°qÐ9P¸×9PÑ9PÓ9RÐ8SÐT€LØ'˜Ÿ™Ó)Ð*¨!Ð,<¨H×,<Ñ,<Ó,>Ð+?Ð@€Nà€IØ€IØÐá�c—h‘h˜q‘kÓ"×)Ñ)€Jà�R—Z‘ZÐ wÓx€NØ!�r—z‘zÐ"tÓuÐÙ�"�|�r—|‘|“~Ò*¨¨aÑ/Ó0€GØ€Gð !(Ðà#$Ð Ø€Ná“€IØ×Ñ‘X˜jÓ)Ô*ð
 -1Ø"&Ø&Ø(Ø,Ø 0Ø"Ø"Ø$Ø#(Ø $Ø$)Ø#'Ø(,Ø%*Ø$(Ø"&Ø%)Ø&*Ø$(Ø"&ØØ$+Ø"&Ø(-¯©×(?Ñ(?Ø%)Ø!ØØ&×6Ñ6Ø(,Ø,HØ27×2FÑ2F×2LÑ2LØ&4Ø7EñID-àðD-ð ˜˜s C˜x™Ñ)ðD-ð ˜3‘-ð	D-ð
 ðD-ð ðD-ð ðD-ð ðD-ð ðD-ð ðD-ð �t‰nðD-ð ˜4‘.ðD-ð ˜‰~ðD-ð ˜D‘>ðD-ð ˜C‘=ðD-ð  ! ™ð!D-ð" ˜T‘Nð#D-ð$ ˜D‘>ð%D-ð& ˜$‘ð'D-ð( ˜'Ñ"ð)D-ð* ˜s‘mð+D-ð, ˜S‘Mð-D-ð. ˜3‘-ð/D-ð0 ð1D-ð2 �s˜D�yÑ!ð3D-ð4 ˜$‘ð5D-ð6 &ð7D-ð8 ˜T‘Nð9D-ð: ð;D-ð< ð=D-ð> ð?D-ð@   ‘~ðAD-ðB '*ðCD-ðD 0ðED-ðF !$ðGD-ðH 25õID-òLòò"òò
Dòðm ó mð^$%¨Ð2CÑ)Dó $%ðL6 t¨E°#·)±)·.±.À#Ç)Á)Ç.Á.ÐRU×R[ÑR[×RcÑRcÐ2cÑ,dÑ'eð 6Ðjnó 6òpdðLT@ E¨#¨s¨(¡Oó T@òl1%òfòwPòr!ðF ØØØ!Ø!ñX%àðX%ð ðX%ð ð	X%ð
 ðX%ð ðX%ð ðX%ð 
�. ¨ Ñ-Ñ	.óX%ðt6¨ð 6°¸±ó 6ð9¨ð 9°¸#±÷ 9r“   r6   c                   ó$   — e Zd Zdefd„Zd„ Zd„ Zy)r|   Úcapacityc                 ó    — || _         i | _        y rŽ   )r  Ústore)r‰   r  s     rŒ   rc   zCache.__init__c  s   € Ø ˆŒØˆ�
r“   c                 ó:   — | j                   j                  |d «      S rŽ   )r	  r¬   )r‰   Úkeys     rŒ   Ú__getitem__zCache.__getitem__g  s   € Ø�z‰z�~‰~˜c 4Ó(Ð(r“   c                 ó0  — || j                   v r| j                   |= || j                   |<   t        | j                   «      | j                  kD  rJt        | j                  dz  dz   «      D ]+  }| j                   t	        t        | j                   «      «      = Œ- y y )Nr@  r*   )r	  rî   r  ÚrangeÚnextÚiter)r‰   r  rÕ   r°   s       rŒ   Ú__setitem__zCache.__setitem__j  s{   € Ø�$—*‘*ÑØ—
‘
˜3�àˆ�
‰
�3‰äˆt�z‰z‹?˜TŸ]™]Ò*Ü˜4Ÿ=™=¨AÑ-°Ñ1Ó2ò 7�Ø—J‘Jœt¤D¨¯©Ó$4Ó5Ñ6ñ7ð +r“   N)rg  rá  râ  rd   rc   r  r  rà  r“   rŒ   r|   r|   b  s   „ ð ó ò)ó7r“   r|   )Xrq   r¸  rº  Úloggingr\  rå  r{  r�  rï  Úconcurrent.futures.threadr   r   r   Úhashlibr   Ú	importlibr   Úior   r	   rÚ  r
   Úpathlibr   Útypingr   r   r   r   r   r   r„   r   r   r   r   r   r   Úpyrogram.cryptor   Úpyrogram.errorsr   r   r   r   r   r   r   r    Úpyrogram.handlers.handlerr!   Úpyrogram.methodsr"   Úpyrogram.sessionr#   r$   Úpyrogram.storager%   r&   r'   Úpyrogram.typesr(   Úpyrogram.utilsr)   Ú
connectionr+   Úconnection.transportr,   rl   r-   rˆ  r.   r/   r0   r1   rn   r2   Úsession.internalsr3   Ú	getLoggerrg  rh   rg   Úpymongor4   rÒ   r6   r|   rà  r“   rŒ   ú<module>r&     sê   ðó( Û Û Û Û 	Û Û 	Û Û 
Ý 8ß (Ý Ý #ß  Ý Ý ß I× Iã ß -Ý Ý Ý Ý Ý Ý /÷÷ ñ õ
 .Ý $ß *ß @Ñ @Ý Ý !Ý "Ý -Ý "ß 6Ñ 6Ý "Ý Ý $à€g×Ñ˜Ó!€Ø€ðÛõ .Ø€KôR9ˆWô R9÷j(7ò 7øðy( ò 	Ùð	ús   ÄD4 Ä4D<Ä;D<