
    N[iL)                        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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mZmZmZ dBd	d
dedefdZ	 	 dCdedededed   fdZ	 dDdddeded   fdZded   fdZdEdZ deddfdZ!dZ"dZ#d Z$d!Z%d"Z&d#ejN                  jP                  dee   fd$Z)d#ejN                  jP                  defd%Z*d&edefd'Z+d&edefd(Z,d)e-defd*Z.d+ede-fd,Z/d-e-de-fd.Z0d/e-d)e-de-fd0Z1d1ej&                  jd                  d2ede-fd3Z3d4ej&                  jh                  jj                  d2edej&                  jl                  fd5Z7d6d7d8ed9ejp                  d:ed;   deeeeeejN                  jr                     f   f   f
d<Z:defd=Z;d>ee   dee   fd?Z<d@ee   dee   fdAZ=y)F    N)ThreadPoolExecutor)datetimetimezone)getpass)UnionListDictOptional)rawenums)types)FileIdFileTypePHOTO_TYPESDOCUMENT_TYPESF)hidepromptr   c                   K   t        d      5 }t        j                  |rt        nt        |       }t        j                         j                  ||       d{   cddd       S 7 # 1 sw Y   yxY ww)z'Just like the built-in input, but async   N)r   	functoolspartialr   inputasyncioget_event_looprun_in_executor)r   r   executorfuncs       A/var/www/files/kim/lib/python3.12/site-packages/pyrogram/utils.pyainputr   $   sd     	A	 N(  DeVD++-==hMMN NMN Ns/   A4A
A(A&A(
A4&A((A1-A4file_idexpected_file_typettl_secondsreturn)zraw.types.InputMediaPhotozraw.types.InputMediaDocumentc                    	 t        j                  |       }|j                  }|+||k7  r&t        d|j
                   d|j
                   d      |t        j                  t        j                  fv rt        d|        |t        v r_t        j                  j                  t        j                  j                  |j                  |j                  |j                         |      S |t"        v r_t        j                  j%                  t        j                  j'                  |j                  |j                  |j                         |      S t        d	|        # t        $ r t        d|  d      w xY w)
NzFailed to decode "zS". The value does not represent an existing local file, HTTP URL, or valid file id.z	Expected z, got z file id insteadz,This file id can only be used for download: )idaccess_hashfile_reference)r%   r"   zUnknown file id: )r   decode	Exception
ValueError	file_typenamer   	THUMBNAIL
CHAT_PHOTOr   r   r   InputMediaPhoto
InputPhotomedia_idr&   r'   r   InputMediaDocumentInputDocument)r    r!   r"   decodedr+   s        r   get_input_media_from_file_idr5   +   s   

--( !!I%)7I*I9%7%<%<$=VINNCSScdeeX'')<)<==GyQRRKyy((yy#####//&55 $ 
 $ ) 
 	
 N"yy++yy&&###//&55 ' 
 $ , 
 	
 (	2
33E  
 	 ** +
 	

s   E E5messageszraw.types.messages.Messagesrepliesztypes.Messagec           
        K   |j                   D ci c]  }|j                  | }}|j                  D ci c]  }|j                  | }}|j                  st	        j
                         S g }|j                  D ]=  }|j                  t        j                  j                  | |||d       d {          ? |r|j                  D ci c]S  }t        |t        j                  j                        s-|j                  r!|j                  |j                  j                  U }}|r|D ]&  }	|	j                  s|	j                  j                  }
 n d}
| j                  |
|j!                         |dz
         d {   }|D ]<  }|j#                  |j                  d       }|D ]  }|j                  |k(  s||_         > t	        j
                  |      S c c}w c c}w 7 2c c}w 7 lw)Nr   )r7   r   )reply_to_message_idsr7   )usersr%   chatsr6   r   r   appendMessage_parse
isinstancer   MessageEmptyreply_toreply_to_msg_idchatget_messageskeysgetreply_to_message)clientr6   r7   ir:   r;   parsed_messagesmessagemessages_with_repliesmchat_idreply_messagesreply_idreplys                 r   parse_messagesrR   W   s    
 'nn-QTT1W-E-&nn-QTT1W-E-zz|O$$ eU]]%9%9&'5RWab%9%ccde  &&!
a!7!78QZZ DD!**,,,!
 !
 ! % 66ffiiG
 #)#6#6%:%?%?%A! $7 $ N + 9044WZZF+ 9Exx8+38099 ::o&&S .-  d!
 sS   G*GG*G	A%G*.G 
/G*
AG#"G*8AG*;G(<9G*6+G*#G*c                 4   |j                   }t        |dd       }g }|D ]d  }|j                  t        j                  ||9t        j
                  t        |      t        j                  j                  |       nd |              f t        j                  |      S )N
channel_id)r%   typerH   )r%   rC   rH   )r6   getattrr<   r   r=   Chatget_channel_idr   ChatTypeCHANNELr   )rH   updater6   rT   rJ   rK   s         r   parse_deleted_messagesr\      s    Ht4JO 
MM
  +	 ZZ%j1//! 26
	

 ::o&&     raw.base.InputBotInlineMessageIDc                    t        | t        j                  j                        r7t	        j
                  d| j                  | j                  | j                        }nAt	        j
                  d| j                  | j                  | j                  | j                        }t        j                  |      j                         j                  d      S )N<iqq<iqiq=)r?   r   r   InputBotInlineMessageIDstructpackdc_idr%   r&   owner_idbase64urlsafe_b64encoder(   rstrip)msg_idinline_message_id_packeds     r   pack_inline_message_idrm      s    &#));;<#);;LLII	$
  $*;;LLOOII$
  ##$<=DDFMMcRRr]   inline_message_idc                 ~   | dt        |        dz  z  z   }t        j                  |      }t        |      dk(  rAt        j                  d|      }t
        j                  j                  |d   |d   |d         S t        j                  d	|      }t
        j                  j                  |d   |d   |d   |d
         S )Nrb         r`   r   r      )rf   r%   r&   ra      )rf   rg   r%   r&   )	lenrh   urlsafe_b64decoderd   unpackr   r   rc   InputBotInlineMessageID64)rn   paddedr4   unpackeds       r   unpack_inline_message_idrz      s    ->)?(?!(C!DDF&&v.G
7|r==1yy001+{  1 
 	
 =='2yy221+a[{ 	 3 
 	
r]   lJ)l J)i  il   J)peerc                 $   t        | t        j                  j                        r| j                  S t        | t        j                  j
                        r| j                  S t        | t        j                  j                        r| j                  S y)z&Get the raw peer id from a Peer objectN)	r?   r   r   PeerUseruser_idPeerChatrN   PeerChannelrT   r{   s    r   get_raw_peer_idr      s_    $		**+||$		**+||$		--.r]   c                 N   t        | t        j                  j                        r| j                  S t        | t        j                  j
                        r| j                   S t        | t        j                  j                        rt        | j                  z
  S t        d|        )z*Get the non-raw peer id from a Peer objectzPeer type invalid: )r?   r   r   r}   r~   r   rN   r   MAX_CHANNEL_IDrT   r*   r   s    r   get_peer_idr      sv    $		**+||$		**+}$		--.//
*4&1
22r]   peer_idc                     | dk  r t         | k  ryt        | cxk  r	t        k  ry nd| cxk  r	t        k  ry t	        d|        )Nr   rC   channeluserzPeer id invalid: )MIN_CHAT_IDMIN_CHANNEL_IDr   MAX_USER_IDr*   r   s    r   get_peer_typer      sS    {'!W5~5 6	
W	#	# 
$ (	2
33r]   c                     t         | z
  S N)r   r   s    r   rX   rX      s    G##r]   bc                 .    t         j                  | d      S )Nbig)int
from_bytes)r   s    r   btoir      s    >>!U##r]   rI   c                 &    | j                  dd      S )N   r   )to_bytes)rI   s    r   itobr     s    ::c5!!r]   datac                 H    t        j                  |       j                         S r   )hashlibsha256digest)r   s    r   r   r     s    >>$&&((r]   ac                 :    t        d t        | |      D              S )Nc              3   ,   K   | ]  \  }}||z    y wr    ).0rI   js      r   	<genexpr>zxor.<locals>.<genexpr>
  s     -41aQ-s   )byteszip)r   r   s     r   xorr   	  s    -3q!9---r]   algopasswordc                 @   t        | j                  |j                         z   | j                  z         }t        | j                  |z   | j                  z         }t	        j
                  d|| j                  d      }t        | j                  |z   | j                  z         S )Nsha512i )r   salt1encodesalt2r   pbkdf2_hmac)r   r   hash1hash2hash3s        r   compute_password_hashr     sz     4:: 11DJJ>?E4::%

23E%VDE$**u$tzz122r]   rc                    | j                   }|j                  }t        |j                        }t        |j                        }|j                  }| j
                  }t        |      }| j                  }	t        ||      }
t        |
      }t        |||      }t        ||z         }t        |      }||z  |z  }	 t        j                  d      }t        |      }t        |||      }t        |      }t        t        ||z               }|dkD  rnV||z
  |z  }||z  }||z   }t        |||      }t        |      }t        |      }t        t        t        |      t        |            t        |j                        z   t        |j                        z   |z   |z   |z         }t        j                   j#                  |	||      S )Nr   r   )srp_idAM1)current_algopr   r   gsrp_Br   r   powr   osurandomr   r   r   r   r   InputCheckPasswordSRP)r   r   r   p_bytesr   g_bytesr   B_bytesBr   x_bytesxg_xk_byteskkg_xa_bytesr   r   A_bytesug_buxa_uxSS_bytesK_bytesM1_bytess                               r   compute_password_checkr     s    >>DffGTVVA466lGAggGWAXXF#D(3GWA
aA,CWw&'GWAGq=D
**S/M1aLq'')*+q5  t8q.C	
QBr6DCqA1gGWoGF7OVG_-

	

	 	 		
 	H 99**&G*QQr]   rH   zpyrogram.Clienttext
parse_modeentitiesztypes.MessageEntityc                 
  K   |r;|D ]	  }| |_          ||D cg c]  }|j                          d {    c}xs d }}n5| j                  j                  ||       d {   j	                         \  }}||dS 7 Ic c}w 7 !w)N)rK   r   )_clientwriteparserparsevalues)rH   r   r   r   entitys        r   parse_text_entitiesr   U  s       	$F#FN	$ 8Lflln 4 4LTPTh & 3 3D* EEMMOh  	 !5LEs1   BA<A:A<(BB B:A<<Bc                  J    t        j                  dt        j                        S )Nr   )r   fromtimestampr   utcr   r]   r   zero_datetimer   j  s    !!!X\\22r]   tsc                 4    | rt        j                  |       S d S r   )r   r   )r   s    r   timestamp_to_datetimer   n  s    )+8!!"%55r]   dtc                 <    | rt        | j                               S d S r   )r   	timestamp)r   s    r   datetime_to_timestampr   r  s    "$3r||~.$.r]   ) )NN)r   )rk   r^   )>r   rh   r   r   r   rd   concurrent.futures.threadr   r   r   r   typingr   r   r	   r
   pyrogramr   r   r   pyrogram.file_idr   r   r   r   strboolr   r   r5   rR   r\   rm   rz   r   r   r   MAX_USER_ID_OLDr   basePeerr   r   r   rX   r   r   r   r   r   APasswordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPowr   accountPasswordr   r   	ParseModeMessageEntityr   r   r   r   r   r]   r   <module>r      s  &     	  8 '  . .    J JN5 N ND N $()4)4 )4 )4 FG	)4^ .'+.' .' 
/	.'b'd?.C ',S(
 
8Z 
.  #((-- HSM 3chhmm 3 3
43 
43 
4$C $C $$E $c $"C "E ") )5 ).5 .U .u .3
))
U
U33 39R
yy!!9R9R 	YY$$9Rx
  ()	
 
#uS$sxx55667
78*3x 36hsm 60B 6/hx0 /Xc] /r]   