├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── LICENSE ├── README.md ├── blobparse.py ├── logger.py ├── requirements.txt ├── tblob.py ├── tdb.py ├── teleparser.py └── utils ├── build_callbacks.py ├── tds_0.1.317.txt ├── tds_4.8.11.txt ├── tds_5.15.0.txt ├── tds_5.5.0.txt ├── tds_5.6.2.txt ├── tds_5.9.0.txt ├── tds_6.2.0.txt ├── tds_6.3.0.txt ├── tds_upto_5.15.0.txt ├── tds_upto_5.5.0.txt ├── tds_upto_5.6.2.txt └── tds_upto_6.3.0.txt /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **Script logs** 14 | Provide the script log and errors 15 | 16 | **OS used to execute the script (please complete the following information):** 17 | - OS: [e.g. Windows, Linux] 18 | 19 | **Telegram app (please complete the following information):** 20 | - Telegram App Version: [e.g. 5.5.0, 5.6.2 ...] 21 | - Smartphone OS: [e.g. Android, iOS, ...] 22 | - Smartphone brand: [e.g. Samsung, Huawei, ...] 23 | 24 | **Additional context** 25 | Add any other context about the problem here. 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RealityNet 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # teleparser 2 | Telegram cache4.db parser. 3 | 4 | *This script is introduced by the blog post at https://blog.digital-forensics.it/2020/04/teleparser.html* 5 | 6 | `teleparser` is a Python3 script aimed to parse the **Telegram cache4.db database**. It's not for the _faint hearted_ and the expected user is a DFIR expert. As written in the blog post, the goal is not to miss the data and not to misinterpret it: the script should crash if what is parsing is not what is expected... if not, that's **A** bug. 7 | 8 | It's assumed a bit of knowledge on how the cache4.db is organized and the specificity of its *blobs*. 9 | 10 | ### Current Telegram versions supported 11 | 12 | * **<**: could work 13 | * **5.5.0**: tested, expected to work 14 | * **><**: could work 15 | * **5.6.2**: tested, expected to work 16 | * **><**: could work 17 | * **5.15.0**: tested, expected to work 18 | * **><**: could work 19 | * **6.3.0**: tested, expected to work 20 | * **>**: expected to fail 21 | 22 | ## Usage 23 | 24 | ``` 25 | usage: teleparser.py [-h] [-v] infilename outdirectory 26 | 27 | Telegram parser version 20200807 28 | 29 | positional arguments: 30 | infilename input file cache4.db 31 | outdirectory output directory, must exist 32 | 33 | optional arguments: 34 | -h, --help show this help message and exit 35 | -v, --verbose verbose level, -v to -vvv 36 | ``` 37 | 38 | ### Example 39 | 40 | ``` 41 | meeh:~$ python3 teleparser.py ~/telegrammo/db/cache4.db ~/Documents/telegram_562/ 42 | ``` 43 | 44 | It will create in the output folder (`~/Documents/telegram_562/`) the following files: 45 | 46 | * `timeline.csv`: a comma separeted textual file with a **timeline** of messages/events 47 | * `table_messages.txt`: table **messages** entries with blobs, human readable 48 | * `table_user_settings.txt`: table **user_settings** entries with blobs, human readable 49 | * `table_contacts.txt`: table **contacts** entries with blobs, human readable 50 | * `table_users.txt`: table **users** entries with blobs, human readable 51 | * `table_enc_chats.txt`: table **enc_chats** entries with blobs, human readable 52 | * `table_dialogs.txt`: table **dialogs** entries with blobs, human readable 53 | * `table_media_v2.txt`: table **media_v2** entries with blobs, human readable 54 | * `table_chats.txt`: table **chats** entries with blobs, human readable 55 | * `table_sent_files_v2.txt`: table **sent_files_v2** entries with blobs, human readable 56 | 57 | ### In case of _crash_ 58 | 59 | Please open a bug here and fill the bug template. Most likely the raw data will be needed: in case please be ready to provide a **testing cache4.db** that can be _privately_ shared. Most likely the script will crash due to new (from the script point of view, a.k.a. unmanaged) _blobs_. 60 | 61 | -------------------------------------------------------------------------------- /blobparse.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | # pylint: disable=C0103,C0114 5 | 6 | import sys 7 | import tblob 8 | 9 | with open(sys.argv[1], 'rb') as blob_file: 10 | tparser = tblob.tblob() 11 | blob = tparser.parse_blob(blob_file.read()) 12 | print(blob) 13 | -------------------------------------------------------------------------------- /logger.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # pylint: disable= C0103,C0114,C0116 3 | 4 | import logging 5 | 6 | _logger = logging.getLogger('teleparser') 7 | 8 | critical = _logger.critical 9 | debug = _logger.debug 10 | error = _logger.error 11 | exception = _logger.exception 12 | info = _logger.info 13 | log = _logger.log 14 | warning = _logger.warning 15 | 16 | def configure_logging(verbosity=None): 17 | for handler in logging.root.handlers: 18 | logging.root.removeHandler(handler) 19 | 20 | logger = logging.getLogger() 21 | 22 | handler = logging.StreamHandler() 23 | 24 | format_string = ( 25 | '%(asctime)s [%(levelname)s] (%(module)s) %(message)s') 26 | 27 | formatter = logging.Formatter(format_string) 28 | handler.setFormatter(formatter) 29 | 30 | log_level = logging.DEBUG 31 | if not verbosity: 32 | log_level = logging.ERROR 33 | elif verbosity == 1: 34 | log_level = logging.WARNING 35 | elif verbosity == 2: 36 | log_level = logging.INFO 37 | elif verbosity >= 3: 38 | log_level = logging.DEBUG 39 | 40 | logger.setLevel(log_level) 41 | handler.setLevel(log_level) 42 | 43 | logger.addHandler(handler) 44 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | construct>=2.10.56 2 | -------------------------------------------------------------------------------- /tdb.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | # Telegram cache4 db parser. 5 | # 6 | # Released under MIT License 7 | # 8 | # Copyright (c) 2019 Francesco "dfirfpi" Picasso, Reality Net System Solutions 9 | # 10 | # Permission is hereby granted, free of charge, to any person obtaining a copy 11 | # of this software and associated documentation files (the "Software"), to deal 12 | # in the Software without restriction, including without limitation the rights 13 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | # copies of the Software, and to permit persons to whom the Software is 15 | # furnished to do so, subject to the following conditions: 16 | # 17 | # The above copyright notice and this permission notice shall be included in 18 | # all copies or substantial portions of the Software. 19 | # 20 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | # SOFTWARE. 27 | # 28 | '''Telegram sqlite3 DB parser.''' 29 | 30 | # pylint: disable=C0103,C0115,C0116,C0302,R0902,R0914,R0913 31 | 32 | import datetime 33 | import os 34 | 35 | import logger 36 | 37 | #------------------------------------------------------------------------------ 38 | 39 | CSV_SEPARATOR = ',' 40 | TYPE_CHAT_CREATION_DATE = 'chat_creation_date' 41 | TYPE_CHAT_LAST_UPDATE = 'chat_last_update' 42 | TYPE_MSG_SERVICE = 'service' 43 | TYPE_KEY_DATE = 'key_date' 44 | TYPE_MSG_TO_CHANNEL = 'channel' 45 | TYPE_MSG_TO_USER = 'chat' 46 | TYPE_USER_STATUS_UPDATE = 'user_status_update' 47 | 48 | #------------------------------------------------------------------------------ 49 | 50 | def escape_csv_string(instr): 51 | if instr: 52 | instr = instr.strip('"\'') 53 | return '"{}"'.format(instr.replace('"', '\'')) 54 | return '' 55 | 56 | def to_date(epoch): 57 | if epoch: 58 | return datetime.datetime.utcfromtimestamp(epoch).isoformat() 59 | return '' 60 | 61 | #------------------------------------------------------------------------------ 62 | 63 | class tdb(): 64 | 65 | def __init__(self, outdirectory, blob_parser, sqlite_db_cursor): 66 | assert outdirectory 67 | self._outdirectory = outdirectory 68 | assert blob_parser 69 | self._blob_parser = blob_parser 70 | assert sqlite_db_cursor 71 | self._sqlite_db_cursor = sqlite_db_cursor 72 | self._separator = CSV_SEPARATOR 73 | self._table_chats = {} 74 | self._table_contacts = {} 75 | self._table_dialogs = {} 76 | self._table_enc_chats = {} 77 | self._table_media = {} 78 | self._table_messages = {} 79 | self._table_sent_files = {} 80 | self._table_users = {} 81 | self._table_user_settings = {} 82 | 83 | def __parse_table_chats(self): 84 | self._sqlite_db_cursor.execute('SELECT * from chats') 85 | entries = self._sqlite_db_cursor.fetchall() 86 | 87 | for entry in entries: 88 | uid = int(entry['uid']) 89 | assert uid 90 | assert uid not in self._table_chats 91 | logger.info('parsing chats, entry uid: %s', uid) 92 | blob = self._blob_parser.parse_blob(entry['data']) 93 | chat = tchat(uid, entry['name'], blob) 94 | self._table_chats[uid] = chat 95 | 96 | def __save_table_chats(self, outdir): 97 | with open(os.path.join(outdir, 'table_chats.txt'), 98 | mode='w', encoding='utf-8') as fo: 99 | for uid, chat in self._table_chats.items(): 100 | fo.write('-' * 80) 101 | fo.write('\nuid: {} name: {}\n\n'.format(uid, chat.name)) 102 | fo.write('{}\n\n'.format(chat.blob)) 103 | 104 | def __parse_table_contacts(self): 105 | self._sqlite_db_cursor.execute('SELECT * from contacts') 106 | entries = self._sqlite_db_cursor.fetchall() 107 | 108 | for entry in entries: 109 | uid = int(entry['uid']) 110 | assert uid 111 | assert uid not in self._table_contacts 112 | logger.info('parsing contacts, entry uid: %s', uid) 113 | self._table_contacts[uid] = int(entry['mutual']) 114 | 115 | def __save_table_contacts(self, outdir): 116 | with open(os.path.join(outdir, 'table_contacts.txt'), 117 | mode='w', encoding='utf-8') as fo: 118 | for uid, mutual in self._table_contacts.items(): 119 | fo.write('-' * 80) 120 | fo.write('\nuid: {} mutual: {}\n'.format(uid, mutual)) 121 | if uid in self._table_users: 122 | fo.write('From [users] -> {}\n'.format( 123 | self._table_users[uid].full_text_id)) 124 | else: 125 | fo.write('User uid missing in [users]\n') 126 | 127 | def __parse_table_dialogs(self): 128 | self._sqlite_db_cursor.execute('SELECT * from dialogs') 129 | entries = self._sqlite_db_cursor.fetchall() 130 | 131 | for entry in entries: 132 | did = int(entry['did']) 133 | assert did 134 | assert did not in self._table_dialogs 135 | logger.info('parsing dialogs, entry did: %s', did) 136 | dialog = tdialog( 137 | did, entry['date'], entry['unread_count'], entry['last_mid'], 138 | entry['inbox_max'], entry['outbox_max'], entry['last_mid_i'], 139 | entry['unread_count_i'], entry['pts'], entry['date_i'], 140 | entry['pinned'], entry['flags']) 141 | self._table_dialogs[did] = dialog 142 | 143 | def __save_table_dialogs(self, outdir): 144 | with open(os.path.join(outdir, 'table_dialogs.txt'), 145 | mode='w', encoding='utf-8') as fo: 146 | for did, dialog in self._table_dialogs.items(): 147 | fo.write('-' * 80) 148 | date_string = to_date(dialog.date) 149 | fo.write( 150 | '\ndid: {}, date: {} [{}]\n' 151 | 'unread_count: {}, last_mid: {}, inbox_max: {}, ' 152 | 'outbox_max: {}, last_mid_i: {}\n' 153 | 'unread_count_i: {}, pts: {}, date_i: {}, pinned: {}, ' 154 | 'flags: {}\n\n'.format( 155 | did, dialog.date, date_string, 156 | dialog.unread_count, dialog.last_mid, dialog.inbox_max, 157 | dialog.outbox_max, dialog.last_mid_i, 158 | dialog.unread_count_i, dialog.pts, dialog.date_i, 159 | dialog.pinned, dialog.flags)) 160 | 161 | def __parse_table_enc_chats(self): 162 | self._sqlite_db_cursor.execute('SELECT * from enc_chats') 163 | entries = self._sqlite_db_cursor.fetchall() 164 | 165 | for entry in entries: 166 | uid = int(entry['uid']) 167 | assert uid 168 | assert uid not in self._table_enc_chats 169 | logger.info('parsing enc_chats, entry uid: %s', uid) 170 | # [20200408] Check if we have a blob of bytes. 171 | if isinstance(entry['data'], bytes): 172 | blob = self._blob_parser.parse_blob(entry['data']) 173 | else: 174 | blob = None 175 | logger.error('enc_chats uid:%s blob is not made by bytes, ' 176 | 'skipping it', uid) 177 | 178 | admin_id = getattr(blob, 'admin_id', None) 179 | if admin_id: 180 | assert entry['admin_id'] == admin_id 181 | participant_id = getattr(blob, 'participant_id', None) 182 | if participant_id: 183 | if entry['user'] != entry['admin_id']: 184 | assert entry['user'] == participant_id 185 | 186 | tec = techat(entry['uid'], entry['user'], entry['name'], blob, 187 | entry['g'], entry['authkey'], entry['ttl'], 188 | entry['layer'], entry['seq_in'], entry['seq_out'], 189 | entry['use_count'], entry['exchange_id'], 190 | entry['key_date'], entry['fprint'], 191 | entry['fauthkey'], entry['khash'], entry['in_seq_no'], 192 | entry['admin_id'], entry['mtproto_seq']) 193 | self._table_enc_chats[uid] = tec 194 | 195 | def __save_table_enc_chats(self, outdir): 196 | with open(os.path.join(outdir, 'table_enc_chats.txt'), 197 | mode='w', encoding='utf-8') as fo: 198 | for uid, tec in self._table_enc_chats.items(): 199 | assert uid == tec.uid 200 | fo.write('-' * 80) 201 | fo.write( 202 | '\nuid: {} user: {} name: {}\n\ng: {}\nauthkey: {}\n' 203 | 'ttl: {} layer: {} seq_in: {} seq_out: {} use_count: {}\n' 204 | 'exchange_id: {} key_date: {} fprint: {}\n' 205 | 'fauthkey: {}\nkhash: {}\nin_seq_no: {} admin_id: {} ' 206 | 'mtproto_seq: {}\n'.format( 207 | tec.uid, tec.user, tec.name, tec.g, tec.authkey, 208 | tec.ttl, tec.layer, tec.seq_in, tec.seq_out, 209 | tec.use_count, tec.exchange_id, tec.key_date, 210 | tec.fprint, tec.fauthkey, tec.khash, tec.in_seq_no, 211 | tec.admin_id, tec.mtproto_seq)) 212 | fo.write('\n{}\n\n'.format(tec.blob)) 213 | 214 | def __parse_table_media_v2(self): 215 | self._sqlite_db_cursor.execute('SELECT * from media_v2') 216 | entries = self._sqlite_db_cursor.fetchall() 217 | 218 | for entry in entries: 219 | mid = int(entry['mid']) 220 | assert mid 221 | assert mid not in self._table_media 222 | logger.info('parsing media_v2, entry mid: %s', mid) 223 | blob = self._blob_parser.parse_blob(entry['data']) 224 | media = tmedia(mid, entry['uid'], entry['date'], 225 | entry['type'], blob) 226 | self._table_media[mid] = media 227 | 228 | def __save_table_media_v2(self, outdir): 229 | with open(os.path.join(outdir, 'table_media_v2.txt'), 230 | mode='w', encoding='utf-8') as fo: 231 | for mid, media in self._table_media.items(): 232 | fo.write('-' * 80) 233 | date_string = to_date(media.date) 234 | fo.write( 235 | '\nmid: {} uid: {} date: {} [{}] type: {}\n'.format( 236 | mid, media.uid, media.date, date_string, 237 | media.ttype)) 238 | if media.uid in self._table_users: 239 | fo.write( 240 | 'From [users] -> {}\n\n'.format( 241 | self._table_users[media.uid].full_text_id)) 242 | else: 243 | fo.write('User uid missing in [users]\n\n') 244 | fo.write('{}\n\n'.format(media.blob)) 245 | 246 | def __parse_table_messages(self): 247 | self._sqlite_db_cursor.execute('SELECT * from messages') 248 | entries = self._sqlite_db_cursor.fetchall() 249 | 250 | for entry in entries: 251 | mid = int(entry['mid']) 252 | assert mid 253 | assert mid not in self._table_messages 254 | logger.info('parsing messages, entry mid: %s', mid) 255 | blob = self._blob_parser.parse_blob(entry['data']) 256 | replyblob = None 257 | if entry['replydata']: 258 | replyblob = self._blob_parser.parse_blob(entry['replydata']) 259 | 260 | message = tmessage(mid, entry['uid'], entry['read_state'], 261 | entry['send_state'], entry['date'], blob, 262 | entry['out'], entry['ttl'], entry['media'], 263 | replyblob, entry['imp'], entry['mention']) 264 | 265 | # The difference should be less than 5 seconds. 266 | date_from_blob = message.message_date_from_blob 267 | if date_from_blob and date_from_blob != entry['date']: 268 | if message.date and date_from_blob > message.date: 269 | assert (date_from_blob - message.message_date_from_blob) < 5 270 | else: 271 | assert (message.message_date_from_blob - date_from_blob) < 5 272 | 273 | self._table_messages[mid] = message 274 | 275 | def __save_table_messages(self, outdir): 276 | with open(os.path.join(outdir, 'table_messages.txt'), 277 | mode='w', encoding='utf-8') as fo: 278 | for mid, tmsg in self._table_messages.items(): 279 | fo.write('-' * 80) 280 | fo.write( 281 | '\nmid: {} uid: {} read_state: {} send_state: {} ' 282 | 'date: {} out: {} ttl: {} media: {} imp: {} ' 283 | 'mention: {}\n'.format( 284 | mid, tmsg.uid, tmsg.read_state, tmsg.send_state, 285 | tmsg.date, tmsg.out, tmsg.ttl, tmsg.media, 286 | tmsg.imp, tmsg.mention)) 287 | if tmsg.uid in self._table_users: 288 | fo.write( 289 | 'From [users] -> {}\n\n'.format( 290 | self._table_users[tmsg.uid].full_text_id)) 291 | else: 292 | fo.write('User uid missing in [users]\n\n') 293 | fo.write('{}\n'.format(tmsg.blob)) 294 | if tmsg.blob_reply: 295 | fo.write( 296 | '\n----- IS REPLY TO ---\n\n{}\n'.format( 297 | tmsg.blob_reply)) 298 | fo.write('\n') 299 | 300 | def __parse_table_sent_files_v2(self): 301 | self._sqlite_db_cursor.execute('SELECT * from sent_files_v2') 302 | entries = self._sqlite_db_cursor.fetchall() 303 | 304 | for entry in entries: 305 | uid = entry['uid'] 306 | assert uid 307 | assert uid not in self._table_sent_files 308 | logger.info('parsing sent_files_v2, entry uid: %s', uid) 309 | blob = self._blob_parser.parse_blob(entry['data']) 310 | # Some old telegram versions have not 'type' / 'parent'. 311 | entry_type = getattr(entry, 'type', None) 312 | entry_parent = getattr(entry, 'parent', None) 313 | sentfile = tsentfile(uid, entry_type, entry_parent, blob) 314 | self._table_sent_files[uid] = sentfile 315 | 316 | def __save_table_sent_files_v2(self, outdir): 317 | with open(os.path.join(outdir, 'table_sent_files_v2.txt'), 318 | mode='w', encoding='utf-8') as fo: 319 | for uid, sentfile in self._table_sent_files.items(): 320 | assert uid == sentfile.uid 321 | fo.write('-' * 80) 322 | fo.write( 323 | '\nuid: {} type: {} parent: {}\n\n'.format( 324 | sentfile.uid, sentfile.ttype, sentfile.parent)) 325 | fo.write('{}\n\n'.format(sentfile.blob)) 326 | 327 | def __parse_table_users(self): 328 | self._sqlite_db_cursor.execute('SELECT * from users') 329 | entries = self._sqlite_db_cursor.fetchall() 330 | 331 | user_self_set = False 332 | for entry in entries: 333 | uid = int(entry['uid']) 334 | assert uid 335 | assert uid not in self._table_users 336 | logger.info('parsing users, entry uid: %s', uid) 337 | blob = self._blob_parser.parse_blob(entry['data']) 338 | user = tuser(uid, entry['name'], entry['status'], blob) 339 | 340 | if user.is_self: 341 | assert not user_self_set 342 | user_self_set = True 343 | 344 | self._table_users[uid] = user 345 | assert user_self_set 346 | 347 | def __save_table_users(self, outdir): 348 | with open(os.path.join(outdir, 'table_users.txt'), 349 | mode='w', encoding='utf-8') as fo: 350 | for uid, user in self._table_users.items(): 351 | assert uid == user.uid 352 | fo.write('-' * 80) 353 | # It seems status is the last update timestamp of the status, 354 | # but only if the number is greater than 0. 355 | if user.status > 0: 356 | status = to_date(user.status) 357 | else: 358 | status = user.status 359 | fo.write( 360 | '\nuid: {} name: {} status: {}\n'.format( 361 | user.uid, user.name, status)) 362 | fo.write('{}\n\n'.format(user.full_text_id)) 363 | fo.write('{}\n\n'.format(user.blob)) 364 | 365 | def __parse_table_user_settings(self): 366 | try: 367 | self._sqlite_db_cursor.execute('SELECT * from user_settings') 368 | entries = self._sqlite_db_cursor.fetchall() 369 | except Exception as ee: 370 | logger.error('Exception accessing user_settings table. %s', str(ee)) 371 | return 372 | 373 | for entry in entries: 374 | uid = int(entry['uid']) 375 | assert uid 376 | assert uid not in self._table_user_settings 377 | logger.info('parsing user_settings, entry uid: %s', uid) 378 | blob = self._blob_parser.parse_blob(entry['info']) 379 | tus = tuser_settings(uid, blob, entry['pinned']) 380 | self._table_user_settings[uid] = tus 381 | 382 | def __save_table_user_settings(self, outdir): 383 | with open(os.path.join(outdir, 'table_user_settings.txt'), 384 | mode='w', encoding='utf-8') as fo: 385 | for uid, tus in self._table_user_settings.items(): 386 | fo.write('-' * 80) 387 | fo.write('\nuid: {} pinned: {}'.format(uid, tus.pinned)) 388 | if uid in self._table_users: 389 | fo.write( 390 | '\nFrom [users] -> {}\n\n'.format( 391 | self._table_users[uid].full_text_id)) 392 | else: 393 | fo.write('\nUser uid missing in [users]\n\n') 394 | fo.write('{}\n\n'.format(tus.blob)) 395 | 396 | def parse(self): 397 | # TODO check new 6.3.0 tables 398 | self.__parse_table_chats() 399 | self.__parse_table_contacts() 400 | self.__parse_table_dialogs() 401 | self.__parse_table_enc_chats() 402 | self.__parse_table_media_v2() 403 | self.__parse_table_messages() 404 | self.__parse_table_sent_files_v2() 405 | self.__parse_table_users() 406 | self.__parse_table_user_settings() 407 | 408 | def save_parsed_tables(self): 409 | self.__save_table_chats(self._outdirectory) 410 | self.__save_table_contacts(self._outdirectory) 411 | self.__save_table_dialogs(self._outdirectory) 412 | self.__save_table_enc_chats(self._outdirectory) 413 | self.__save_table_media_v2(self._outdirectory) 414 | self.__save_table_messages(self._outdirectory) 415 | self.__save_table_sent_files_v2(self._outdirectory) 416 | self.__save_table_users(self._outdirectory) 417 | self.__save_table_user_settings(self._outdirectory) 418 | 419 | def __chats_to_timeline(self): 420 | for uid, chat in self._table_chats.items(): 421 | row = trow() 422 | row.source = 'chats' 423 | row.id = uid 424 | row.dialog = chat.shortest_id 425 | row.dialog_type = chat.chat_type 426 | row.content = '{} {}'.format( 427 | chat.blob.sname, trow.dict_to_string(chat.dict_id)) 428 | 429 | if chat.creation_date: 430 | row.timestamp = to_date(chat.creation_date) 431 | row.type = TYPE_CHAT_CREATION_DATE 432 | else: 433 | row.type = chat.blob.sname 434 | 435 | flags = getattr(chat.blob, 'flags', None) 436 | if flags: 437 | df = {} 438 | if getattr(flags, 'creator', None): 439 | df['creator'] = 'true' 440 | if getattr(flags, 'left', None): 441 | df['left'] = 'true' 442 | if getattr(flags, 'broadcast', None): 443 | df['broadcast'] = 'true' 444 | if getattr(flags, 'megagroup', None): 445 | df['megagroup'] = 'true' 446 | if getattr(flags, 'has_participants_count', None): 447 | df['members'] = chat.blob.participants_count 448 | row.content += ' {}'.format(trow.dict_to_string(df)) 449 | 450 | if chat.photo_info: 451 | row.media = chat.photo_info 452 | yield row 453 | 454 | def __dialogs_to_timeline(self): 455 | for did, dialog in self._table_dialogs.items(): 456 | row = trow() 457 | row.source = 'dialogs' 458 | row.id = did 459 | 460 | if did.bit_length() > 32: 461 | cid = did >> 32 462 | elif did < 0: 463 | cid = (-1 * did) 464 | else: 465 | cid = did 466 | 467 | # TODO refactor this! Missing negative conversion!! 468 | if cid in self._table_chats: 469 | row.dialog = self._table_chats[cid].shortest_id 470 | row.dialog_type = self._table_chats[cid].chat_type 471 | elif cid in self._table_enc_chats: 472 | row.dialog = self._table_enc_chats[cid].shortest_id 473 | row.dialog_type = 'encrypted 1-1' 474 | else: 475 | row.dialog_type = '1-1' 476 | 477 | row.content = 'dialog unread_count:{} inbox_max:{} outbox_max:{} ' \ 478 | 'pts:{} last_mid:{}'.format( 479 | dialog.unread_count, dialog.inbox_max, dialog.outbox_max, 480 | dialog.pts, dialog.last_mid) 481 | 482 | row.timestamp = to_date(dialog.date) 483 | row.type = TYPE_CHAT_LAST_UPDATE 484 | 485 | yield row 486 | 487 | def __enc_chats_to_timeline(self): 488 | for uid, echat in self._table_enc_chats.items(): 489 | row = trow() 490 | row.source = 'enc_chats' 491 | row.id = uid 492 | row.dialog = echat.shortest_id 493 | row.dialog_type = 'encrypted 1-1' 494 | 495 | admin_id_short = '' 496 | if echat.admin_id in self._table_users: 497 | admin_id_short = self._table_users[echat.admin_id].shortest_id 498 | 499 | participant_id_short = '' 500 | if echat.participant_id: 501 | if echat.participant_id in self._table_users: 502 | participant_id_short = \ 503 | self._table_users[echat.participant_id].shortest_id 504 | 505 | row.from_who = admin_id_short 506 | row.from_id = echat.admin_id 507 | row.to_who = participant_id_short 508 | row.to_id = echat.participant_id 509 | 510 | echat_sname = getattr(echat.blob, 'sname', '') 511 | row.content = '{} {}'.format( 512 | echat_sname, trow.dict_to_string(echat.dict_id)) 513 | 514 | if echat.creation_date: 515 | row.timestamp = to_date(echat.creation_date) 516 | row.type = TYPE_CHAT_CREATION_DATE 517 | yield row 518 | 519 | if echat.key_date: 520 | row.timestamp = to_date(echat.key_date) 521 | row.type = TYPE_KEY_DATE 522 | yield row 523 | 524 | def __message_media(self, mid, msg): 525 | # pylint: disable=R0201 526 | assert mid 527 | media = getattr(msg.blob, 'media', None) 528 | if not media: 529 | return None 530 | media = media.media 531 | 532 | document = getattr(media, 'document', None) 533 | photo = getattr(media, 'photo', None) 534 | webpage = getattr(media, 'webpage', None) 535 | media_field = None 536 | if document: 537 | assert media.flags.has_document 538 | document = document.document 539 | 540 | ret_str = 'document id:{} date:{} mime:{} size:{}'.format( 541 | document.id, to_date(document.date.epoch), 542 | document.mime_type.string, document.size) 543 | 544 | for entry in document.document_attributes_array: 545 | if entry.document.sname == 'document_attribute_filename': 546 | file_name = entry.document.file_name.string 547 | ret_str += ' file_name:{}'.format(file_name) 548 | media_field = ret_str 549 | 550 | elif photo: 551 | assert media.flags.has_photo 552 | photo = photo.photo 553 | 554 | ret_str = 'photo id:{} date:{}'.format( 555 | photo.id, to_date(photo.date.epoch)) 556 | 557 | for entry in photo.photo_size_array: 558 | ps = entry.photo_size 559 | file_location = getattr(ps, 'file_location', None) 560 | if file_location: 561 | fl = file_location.file_location 562 | ret_str += ' {}x{}({} bytes):{}_{}.jpg'.format( 563 | ps.w, ps.h, ps.size, fl.volume_id, fl.local_id) 564 | media_field = ret_str 565 | 566 | elif webpage: 567 | webpage = webpage.webpage 568 | url_string = '' 569 | url = getattr(webpage, 'url', None) 570 | if url: 571 | url_string = url.string 572 | ret_str = 'webpage id:{} url:{}'.format( 573 | webpage.id, url_string) 574 | title = getattr(webpage, 'title', None) 575 | if title: 576 | ret_str += ' title:{}'.format(webpage.title.string) 577 | description = getattr(webpage, 'description', None) 578 | if description: 579 | ret_str += ' description:{}'.format(webpage.description.string) 580 | media_field = ret_str 581 | 582 | else: 583 | media_field = media.sname 584 | 585 | return media_field 586 | 587 | def __messages_to_timeline(self): 588 | # pylint: disable=R0912,R0915 589 | for mid, msg in self._table_messages.items(): 590 | row = trow() 591 | row.source = 'messages' 592 | row.id = mid 593 | 594 | if msg.blob.from_id: 595 | row.from_id = msg.blob.from_id 596 | if msg.blob.from_id in self._table_users: 597 | user = self._table_users[msg.blob.from_id] 598 | row.from_who = user.shortest_id 599 | else: 600 | row.from_who = msg.blob.from_id 601 | 602 | dialog, msg_seq = msg.dialog_and_sequence 603 | row.extra.update({'dialog': dialog, 'sequence': msg_seq}) 604 | 605 | if dialog in self._table_chats: 606 | row.dialog = self._table_chats[dialog].shortest_id 607 | row.dialog_type = self._table_chats[dialog].chat_type 608 | elif dialog in self._table_enc_chats: 609 | row.dialog = self._table_enc_chats[dialog].shortest_id 610 | row.dialog_type = 'encrypted 1-1' 611 | else: 612 | row.dialog_type = '1-1' 613 | 614 | to_who, to_type = msg.to_id_and_type 615 | assert to_who 616 | row.to_id = to_who 617 | if TYPE_MSG_TO_USER == to_type: 618 | if to_who in self._table_users: 619 | user = self._table_users[to_who] 620 | row.to_who = user.shortest_id 621 | elif TYPE_MSG_TO_CHANNEL == to_type: 622 | assert dialog == to_who 623 | if to_who in self._table_chats: 624 | chat = self._table_chats[to_who] 625 | row.to_who = chat.shortest_id 626 | else: 627 | logger.error('message %s, unmanaged to_id!', msg.mid) 628 | row.to_who = to_who 629 | 630 | row.type = msg.blob.sname 631 | action, action_dict = msg.action_string_and_dict 632 | if action: 633 | assert not msg.message_content 634 | row.extra.update(action_dict) 635 | row.content = action 636 | else: 637 | row.content = msg.message_content.strip('"\'') 638 | 639 | if msg.blob_reply: 640 | replied_msg = msg 641 | replied_msg.blob = msg.blob_reply 642 | replied_msg.blob_reply = None 643 | row.content += ' [IS REPLY TO MSG ID {} {}]\n{}'.format( 644 | replied_msg.blob.id, 645 | to_date(replied_msg.message_date_from_blob), 646 | replied_msg.message_content.strip('"\'')) 647 | 648 | fwd_from = getattr(msg.blob, 'fwd_from', None) 649 | if fwd_from: 650 | fwd_from = fwd_from.fwd_from 651 | row.content += ' [FORWARDED OF MSG BY {} {}]'.format( 652 | fwd_from.from_id, to_date(fwd_from.date.epoch)) 653 | 654 | views = getattr(msg.blob, 'views', None) 655 | if views: 656 | row.extra.update({'views': views}) 657 | 658 | media = self.__message_media(mid, msg) 659 | if media: 660 | row.media = escape_csv_string(media) 661 | 662 | row.timestamp = to_date(msg.message_date_from_blob) 663 | yield row 664 | 665 | def __users_to_timeline(self): 666 | for uid, user in self._table_users.items(): 667 | row = trow() 668 | row.source = 'users' 669 | row.id = uid 670 | row.from_who = user.shortest_id 671 | row.from_id = uid 672 | 673 | if user.status > 0: 674 | row.type = TYPE_USER_STATUS_UPDATE 675 | row.timestamp = to_date(user.status) 676 | 677 | row.content = '{}'.format(trow.dict_to_string(user.dict_id)) 678 | ui_dict = {} 679 | flags = getattr(user.blob, 'flags', None) 680 | if flags: 681 | if flags.has_status: 682 | ui_dict['status'] = user.blob.status.status.sname 683 | if user.blob.flags.is_bot: 684 | ui_dict['bot'] = 'true' 685 | if user.blob.flags.is_mutual_contact: 686 | ui_dict['mutual_contact'] = 'true' 687 | elif user.blob.flags.is_contact: 688 | ui_dict['contact'] = 'true' 689 | if ui_dict: 690 | row.content += ' {}'.format(trow.dict_to_string(ui_dict)) 691 | 692 | if user.photo_info: 693 | row.media = user.photo_info 694 | yield row 695 | 696 | def create_timeline(self): 697 | with open(os.path.join(self._outdirectory, 'timeline.csv'), 698 | mode='w', encoding='utf-8') as fo: 699 | fo.write('{}\n'.format(self._separator.join(trow.fieldsnames()))) 700 | 701 | for row in self.__chats_to_timeline(): 702 | fo.write('{}\n'.format(row.to_row_string(self._separator))) 703 | 704 | for row in self.__dialogs_to_timeline(): 705 | fo.write('{}\n'.format(row.to_row_string(self._separator))) 706 | 707 | for row in self.__enc_chats_to_timeline(): 708 | fo.write('{}\n'.format(row.to_row_string(self._separator))) 709 | 710 | for row in self.__users_to_timeline(): 711 | fo.write('{}\n'.format(row.to_row_string(self._separator))) 712 | 713 | for row in self.__messages_to_timeline(): 714 | fo.write('{}\n'.format(row.to_row_string(self._separator))) 715 | 716 | #------------------------------------------------------------------------------ 717 | 718 | class trow(): 719 | 720 | def __init__(self): 721 | self._timestamp = '' 722 | self._source = '' 723 | self._id = '' 724 | self._type = '' 725 | self._from_who = '' 726 | self._from_id = '' 727 | self._to_who = '' 728 | self._to_id = '' 729 | self._dialog = '' 730 | self._dialog_type = '' 731 | self._content = '' 732 | self._media = '' 733 | self._extra = {} 734 | 735 | def fieldsnames(): 736 | # pylint: disable=E0211,R0201 737 | return ('timestamp', 'source', 'id', 'type', 738 | 'from', 'from_id', 'to', 'to_id', 739 | 'dialog', 'dialog_type', 740 | 'content', 'media', 'extra') 741 | 742 | def dict_to_string(dict_in): 743 | # pylint: disable=E0213,E1101 744 | return ' '.join("{}:{}".format(k, v) for (k, v) in dict_in.items()) 745 | 746 | def to_row_string(self, separator): 747 | # pylint: disable=W1308 748 | return '{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}'.format( 749 | self._timestamp, separator, 750 | self._source, separator, 751 | self._id, separator, 752 | self._type, separator, 753 | self._from_who, separator, 754 | self._from_id, separator, 755 | self._to_who, separator, 756 | self._to_id, separator, 757 | self._dialog, separator, 758 | self._dialog_type, separator, 759 | escape_csv_string(self._content), separator, 760 | self._media, separator, 761 | escape_csv_string(trow.dict_to_string(self._extra))) 762 | 763 | @property 764 | def timestamp(self): 765 | return self._timestamp 766 | 767 | @timestamp.setter 768 | def timestamp(self, value): 769 | self._timestamp = value 770 | 771 | @property 772 | def source(self): 773 | return self._source 774 | 775 | @source.setter 776 | def source(self, value): 777 | self._source = value 778 | 779 | @property 780 | def id(self): 781 | return self._id 782 | 783 | @id.setter 784 | def id(self, value): 785 | self._id = value 786 | 787 | @property 788 | def type(self): 789 | return self._type 790 | 791 | @type.setter 792 | def type(self, value): 793 | self._type = value 794 | 795 | @property 796 | def from_who(self): 797 | return self._from_who 798 | 799 | @from_who.setter 800 | def from_who(self, value): 801 | self._from_who = value 802 | 803 | @property 804 | def from_id(self): 805 | return self._from_id 806 | 807 | @from_id.setter 808 | def from_id(self, value): 809 | self._from_id = value 810 | 811 | @property 812 | def to_who(self): 813 | return self._to_who 814 | 815 | @to_who.setter 816 | def to_who(self, value): 817 | self._to_who = value 818 | 819 | @property 820 | def to_id(self): 821 | return self._to_id 822 | 823 | @to_id.setter 824 | def to_id(self, value): 825 | self._to_id = value 826 | 827 | @property 828 | def dialog(self): 829 | return self._dialog 830 | 831 | @dialog.setter 832 | def dialog(self, value): 833 | self._dialog = value 834 | 835 | @property 836 | def dialog_type(self): 837 | return self._dialog_type 838 | 839 | @dialog_type.setter 840 | def dialog_type(self, value): 841 | self._dialog_type = value 842 | 843 | @property 844 | def content(self): 845 | return self._content 846 | 847 | @content.setter 848 | def content(self, value): 849 | self._content = value 850 | 851 | @property 852 | def media(self): 853 | return self._media 854 | 855 | @media.setter 856 | def media(self, value): 857 | self._media = value 858 | 859 | @property 860 | def extra(self): 861 | return self._extra 862 | 863 | @extra.setter 864 | def extra(self, value): 865 | pass 866 | 867 | #------------------------------------------------------------------------------ 868 | 869 | class tchat(): 870 | 871 | def __init__(self, uid, name, blob): 872 | self._uid = int(uid) 873 | self._name = name 874 | self._blob = blob 875 | 876 | @property 877 | def blob(self): 878 | return self._blob 879 | 880 | @property 881 | def uid(self): 882 | return self._uid 883 | 884 | @property 885 | def name(self): 886 | return self._name 887 | 888 | @property 889 | def dict_id(self): 890 | dictid = {'title': self.blob.title.string} 891 | flags = getattr(self.blob, 'flags', None) 892 | has_username = getattr(flags, 'has_username', None) 893 | if has_username: 894 | dictid['username'] = self.blob.username.string 895 | return dictid 896 | 897 | @property 898 | def chat_type(self): 899 | ct = '' 900 | flags = getattr(self.blob, 'flags', None) 901 | if flags: 902 | left = getattr(flags, 'left', None) 903 | has_username = getattr(flags, 'has_username', None) 904 | broadcast = getattr(flags, 'broadcast', None) 905 | megagroup = getattr(flags, 'megagroup', None) 906 | if broadcast: 907 | assert not megagroup 908 | ct = '1-N' 909 | elif megagroup: 910 | assert not broadcast 911 | ct = 'N-N' 912 | else: 913 | ct = '?-?' 914 | if has_username: 915 | ct += ' pub' 916 | else: 917 | ct += ' prv' 918 | if left: 919 | ct += ' left' 920 | return ct 921 | 922 | @property 923 | def shortest_id(self): 924 | sid = '' 925 | flags = getattr(self.blob, 'flags', None) 926 | has_username = getattr(flags, 'has_username', None) 927 | if has_username: 928 | if self.blob.username.string: 929 | sid = '{}'.format(self.blob.username.string) 930 | elif self.blob.title.string: 931 | sid = '{}'.format(self.blob.title.string) 932 | else: 933 | sid = self.uid 934 | return sid 935 | 936 | @property 937 | def creation_date(self): 938 | date = getattr(self.blob, 'date', None) 939 | if date: 940 | epoch = getattr(date, 'epoch', None) 941 | return epoch 942 | return None 943 | 944 | @property 945 | def photo_info(self): 946 | ph_info = '' 947 | blob = self._blob 948 | photo = getattr(blob, 'photo', None) 949 | if photo: 950 | ph_blob = blob.photo.photo 951 | ph_info = '{}'.format(ph_blob.sname) 952 | ps_blob = getattr(ph_blob, 'photo_small', None) 953 | if ps_blob: 954 | ps_blob = ph_blob.photo_small.photo_small 955 | psf = '{}_{}.jpg'.format(ps_blob.volume_id, ps_blob.local_id) 956 | ph_info += ' small: {}'.format(psf) 957 | pb_blob = getattr(ph_blob, 'photo_big', None) 958 | if pb_blob: 959 | pb_blob = ph_blob.photo_big.photo_big 960 | pbf = '{}_{}.jpg'.format(pb_blob.volume_id, pb_blob.local_id) 961 | ph_info += ' big: {}'.format(pbf) 962 | return ph_info 963 | 964 | #------------------------------------------------------------------------------ 965 | 966 | class tdialog(): 967 | 968 | def __init__(self, did, date, unread_count, last_mid, inbox_max, outbox_max, 969 | last_mid_i, unread_count_i, pts, date_i, pinned, flags): 970 | self._did = int(did) 971 | self._date = int(date) 972 | self._unread_count = int(unread_count) 973 | self._last_mid = int(last_mid) if last_mid else 0 974 | self._inbox_max = int(inbox_max) 975 | self._outbox_max = int(outbox_max) 976 | self._last_mid_i = int(last_mid_i) 977 | self._unread_count_i = int(unread_count_i) 978 | self._pts = int(pts) 979 | self._date_i = int(date_i) 980 | self._pinned = int(pinned) 981 | self._flags = int(flags) 982 | 983 | @property 984 | def did(self): 985 | return self._did 986 | 987 | @property 988 | def date(self): 989 | return self._date 990 | 991 | @property 992 | def unread_count(self): 993 | return self._unread_count 994 | 995 | @property 996 | def last_mid(self): 997 | return self._last_mid 998 | 999 | @property 1000 | def inbox_max(self): 1001 | return self._inbox_max 1002 | 1003 | @property 1004 | def outbox_max(self): 1005 | return self._outbox_max 1006 | 1007 | @property 1008 | def last_mid_i(self): 1009 | return self._last_mid_i 1010 | 1011 | @property 1012 | def unread_count_i(self): 1013 | return self._unread_count_i 1014 | 1015 | @property 1016 | def pts(self): 1017 | return self._pts 1018 | 1019 | @property 1020 | def date_i(self): 1021 | return self._date_i 1022 | 1023 | @property 1024 | def pinned(self): 1025 | return self._pinned 1026 | 1027 | @property 1028 | def flags(self): 1029 | return self._flags 1030 | 1031 | #------------------------------------------------------------------------------ 1032 | 1033 | class techat(): 1034 | # pylint: disable=R0904 1035 | def __init__(self, uid, user, name, blob, g, authkey, ttl, layer, seq_in, 1036 | seq_out, use_count, exchange_id, key_date, fprint, 1037 | fauthkey, khash, in_seq_no, admin_id, mtproto_seq): 1038 | self._uid = int(uid) 1039 | self._user = int(user) 1040 | self._name = name 1041 | self._blob = blob 1042 | self._g = g 1043 | self._authkey = authkey 1044 | self._ttl = int(ttl) 1045 | self._layer = int(layer) 1046 | self._seq_in = int(seq_in) 1047 | self._seq_out = int(seq_out) 1048 | self._use_count = int(use_count) 1049 | self._exchange_id = int(exchange_id) 1050 | self._key_date = int(key_date) 1051 | self._fprint = fprint 1052 | self._fauthkey = fauthkey 1053 | self._khash = khash 1054 | self._in_seq_no = int(in_seq_no) 1055 | self._admin_id = int(admin_id) 1056 | self._mtproto_seq = int(mtproto_seq) 1057 | 1058 | @property 1059 | def uid(self): 1060 | return self._uid 1061 | 1062 | @property 1063 | def user(self): 1064 | return self._user 1065 | 1066 | @property 1067 | def name(self): 1068 | return self._name 1069 | 1070 | @property 1071 | def blob(self): 1072 | return self._blob 1073 | 1074 | @property 1075 | def g(self): 1076 | return self._g 1077 | 1078 | @property 1079 | def authkey(self): 1080 | return self._authkey 1081 | 1082 | @property 1083 | def ttl(self): 1084 | return self._ttl 1085 | 1086 | @property 1087 | def layer(self): 1088 | return self._layer 1089 | 1090 | @property 1091 | def seq_in(self): 1092 | return self._seq_in 1093 | 1094 | @property 1095 | def seq_out(self): 1096 | return self._seq_out 1097 | 1098 | @property 1099 | def use_count(self): 1100 | return self._use_count 1101 | 1102 | @property 1103 | def exchange_id(self): 1104 | return self._exchange_id 1105 | 1106 | @property 1107 | def key_date(self): 1108 | return self._key_date 1109 | 1110 | @property 1111 | def fprint(self): 1112 | return self._fprint 1113 | 1114 | @property 1115 | def fauthkey(self): 1116 | return self._fauthkey 1117 | 1118 | @property 1119 | def khash(self): 1120 | return self._khash 1121 | 1122 | @property 1123 | def in_seq_no(self): 1124 | return self._in_seq_no 1125 | 1126 | @property 1127 | def admin_id(self): 1128 | return self._admin_id 1129 | 1130 | @property 1131 | def mtproto_seq(self): 1132 | return self._mtproto_seq 1133 | 1134 | @property 1135 | def dict_id(self): 1136 | dictid = {'name': self.name, 'ttl': self.ttl, 1137 | 'seq_in': self.seq_in, 'seq_out': self.seq_out} 1138 | return dictid 1139 | 1140 | @property 1141 | def shortest_id(self): 1142 | if self.name: 1143 | return self.name 1144 | return self.uid 1145 | 1146 | @property 1147 | def creation_date(self): 1148 | date = getattr(self.blob, 'date', None) 1149 | if date: 1150 | epoch = getattr(date, 'epoch', None) 1151 | return epoch 1152 | return None 1153 | 1154 | @property 1155 | def participant_id(self): 1156 | # Normally the db user entry is equal to blob participant_id, but there 1157 | # are cases where user=admin_id=admin_id_blob 1158 | participant_id = getattr(self.blob, 'participant_id', None) 1159 | if participant_id: 1160 | return int(participant_id) 1161 | if self.admin_id != self.user: 1162 | return int(self.user) 1163 | logger.warning('encrypted chat %s has not a valid participant_id!', 1164 | self.uid) 1165 | return None 1166 | 1167 | 1168 | #------------------------------------------------------------------------------ 1169 | 1170 | class tmedia(): 1171 | 1172 | def __init__(self, mid, uid, date, ttype, blob): 1173 | self._mid = int(mid) 1174 | self._uid = int(uid) 1175 | self._date = date 1176 | self._ttype = int(ttype) 1177 | self._blob = blob 1178 | 1179 | @property 1180 | def blob(self): 1181 | return self._blob 1182 | 1183 | @property 1184 | def mid(self): 1185 | return self._mid 1186 | 1187 | @property 1188 | def uid(self): 1189 | return self._uid 1190 | 1191 | @property 1192 | def date(self): 1193 | return self._date 1194 | 1195 | @property 1196 | def ttype(self): 1197 | return self._ttype 1198 | 1199 | #------------------------------------------------------------------------------ 1200 | 1201 | class tmessage(): 1202 | 1203 | def __init__(self, mid, uid, read_state, send_state, date, blob, 1204 | out, ttl, media, blob_reply, imp, mention): 1205 | self._mid = int(mid) 1206 | self._uid = int(uid) 1207 | self._read_state = int(read_state) 1208 | self._send_state = int(send_state) 1209 | self._date = int(date) 1210 | self._blob = blob 1211 | self._out = int(out) 1212 | self._ttl = int(ttl) 1213 | self._table_media = int(media) 1214 | self._blob_reply = blob_reply 1215 | self._imp = int(imp) 1216 | self._mention = int(mention) 1217 | 1218 | @property 1219 | def blob(self): 1220 | return self._blob 1221 | 1222 | @blob.setter 1223 | def blob(self, value): 1224 | self._blob = value 1225 | 1226 | @property 1227 | def blob_reply(self): 1228 | return self._blob_reply 1229 | 1230 | @blob_reply.setter 1231 | def blob_reply(self, value): 1232 | self._blob_reply = value 1233 | 1234 | @property 1235 | def mid(self): 1236 | return self._mid 1237 | 1238 | @property 1239 | def uid(self): 1240 | return self._uid 1241 | 1242 | @property 1243 | def read_state(self): 1244 | return self._read_state 1245 | 1246 | @property 1247 | def send_state(self): 1248 | return self._send_state 1249 | 1250 | @property 1251 | def date(self): 1252 | return self._date 1253 | 1254 | @property 1255 | def out(self): 1256 | return self._out 1257 | 1258 | @property 1259 | def ttl(self): 1260 | return self._ttl 1261 | 1262 | @property 1263 | def media(self): 1264 | return self._table_media 1265 | 1266 | @property 1267 | def imp(self): 1268 | return self._imp 1269 | 1270 | @property 1271 | def mention(self): 1272 | return self._mention 1273 | 1274 | @property 1275 | def to_id_and_type(self): 1276 | to_id_c = self.blob.to_id.to_id 1277 | if to_id_c.sname == 'peer_channel': 1278 | return (to_id_c.channel_id, TYPE_MSG_TO_CHANNEL) 1279 | if to_id_c.sname == 'peer_user': 1280 | return (to_id_c.user_id, TYPE_MSG_TO_USER) 1281 | return (None, None) 1282 | 1283 | @property 1284 | def message_content(self): 1285 | msg = getattr(self.blob, 'message', None) 1286 | if msg: 1287 | return escape_csv_string(msg.string) 1288 | return '' 1289 | 1290 | @property 1291 | def message_date_from_blob(self): 1292 | date = getattr(self.blob, 'date', None) 1293 | if date: 1294 | epoch = getattr(date, 'epoch', None) 1295 | return epoch 1296 | return None 1297 | 1298 | @property 1299 | def dialog_and_sequence(self): 1300 | dialog = None 1301 | msg_seq = None 1302 | if self.mid.bit_length() > 32: 1303 | dialog = (self.mid >> 32) & 0xFFFFFFFF 1304 | msg_seq = self.mid & 0xFFFFFFFF 1305 | assert self.uid < 0 1306 | assert dialog == (-1 * self.uid) 1307 | else: 1308 | assert self.uid 1309 | if self.uid.bit_length() > 32: 1310 | dialog = (self.uid >> 32) & 0xFFFFFFFF 1311 | elif self.uid < 0: 1312 | dialog = (-1 * self.uid) 1313 | else: 1314 | dialog = self.uid 1315 | if self.mid > 0: 1316 | msg_seq = self.mid 1317 | else: 1318 | msg_seq = (self.mid * -1) - + 210000 1319 | return dialog, msg_seq 1320 | 1321 | @property 1322 | def action_string_and_dict(self): 1323 | action = getattr(self.blob, 'action', None) 1324 | if action: 1325 | action_copy = action.action 1326 | del action_copy['_io'] 1327 | del action_copy['signature'] 1328 | return action_copy.sname, action_copy 1329 | return None, None 1330 | 1331 | #------------------------------------------------------------------------------ 1332 | 1333 | class tsentfile(): 1334 | 1335 | def __init__(self, uid, ttype, parent, blob): 1336 | self._uid = uid 1337 | self._ttype = int(ttype) if ttype else 0 1338 | self._parent = parent 1339 | self._blob = blob 1340 | 1341 | @property 1342 | def blob(self): 1343 | return self._blob 1344 | 1345 | @property 1346 | def uid(self): 1347 | return self._uid 1348 | 1349 | @property 1350 | def ttype(self): 1351 | return self._ttype 1352 | 1353 | @property 1354 | def parent(self): 1355 | return self._parent 1356 | 1357 | #------------------------------------------------------------------------------ 1358 | 1359 | class tuser_settings(): 1360 | 1361 | def __init__(self, uid, blob, pinned): 1362 | self._uid = int(uid) 1363 | self._blob = blob 1364 | self._pinned = int(pinned) 1365 | 1366 | @property 1367 | def uid(self): 1368 | return self._uid 1369 | 1370 | @property 1371 | def blob(self): 1372 | return self._blob 1373 | 1374 | @property 1375 | def pinned(self): 1376 | return self._pinned 1377 | 1378 | #------------------------------------------------------------------------------ 1379 | 1380 | class tuser(): 1381 | 1382 | def __init__(self, uid, name, status, blob): 1383 | self._uid = int(uid) 1384 | self._name = name 1385 | self._status = int(status) 1386 | self._blob = blob 1387 | # Defensive check 1388 | assert int(uid) == int(blob.id) 1389 | 1390 | @property 1391 | def uid(self): 1392 | return self._uid 1393 | 1394 | @property 1395 | def name(self): 1396 | return self._name 1397 | 1398 | @property 1399 | def status(self): 1400 | return self._status 1401 | 1402 | @property 1403 | def blob(self): 1404 | return self._blob 1405 | 1406 | # The following are useful fiels extracted from the blob. 1407 | 1408 | @property 1409 | def first_name(self): 1410 | if self._blob.flags.has_first_name: 1411 | return self._blob.first_name.string 1412 | return '' 1413 | 1414 | @property 1415 | def last_name(self): 1416 | if self._blob.flags.has_last_name: 1417 | return self._blob.last_name.string 1418 | return '' 1419 | 1420 | @property 1421 | def username(self): 1422 | if self._blob.flags.has_username: 1423 | return self._blob.username.string 1424 | return '' 1425 | 1426 | @property 1427 | def phone(self): 1428 | if self._blob.flags.has_phone: 1429 | return self._blob.phone.string 1430 | return '' 1431 | 1432 | @property 1433 | def full_text_id(self): 1434 | return 'uid: {} nick: {} fullname: {} {} phone: {}'.format( 1435 | self.uid, self.username, self.first_name, self.last_name, 1436 | self.phone) 1437 | 1438 | @property 1439 | def dict_id(self): 1440 | dictid = {} 1441 | if self.username: 1442 | dictid['username'] = self.username 1443 | if self.first_name: 1444 | dictid['firstname'] = self.first_name 1445 | if self.last_name: 1446 | dictid['lastname'] = self.last_name 1447 | if self.phone: 1448 | dictid['phone'] = self.phone 1449 | return dictid 1450 | 1451 | @property 1452 | def shortest_id(self): 1453 | if self.username: 1454 | sis = '{}'.format(self.username) 1455 | elif self.first_name or self.last_name: 1456 | if self.first_name and self.last_name: 1457 | sis = '{} {}'.format(self.first_name, self.last_name) 1458 | elif self.first_name: 1459 | sis = '{}'.format(self.first_name) 1460 | else: 1461 | sis = '{}'.format(self.last_name) 1462 | else: 1463 | sis = self.uid 1464 | 1465 | if self.is_self: 1466 | return '{} (owner)'.format(sis) 1467 | return sis 1468 | 1469 | @property 1470 | def photo_info(self): 1471 | ph_info = '' 1472 | blob = self._blob 1473 | photo = getattr(blob, 'photo', None) 1474 | if photo: 1475 | ph_blob = blob.photo.photo 1476 | ph_info = '{}'.format(ph_blob.sname) 1477 | ps_blob = getattr(ph_blob, 'photo_small', None) 1478 | if ps_blob: 1479 | ps_blob = ph_blob.photo_small.photo_small 1480 | psf = '{}_{}.jpg'.format(ps_blob.volume_id, ps_blob.local_id) 1481 | ph_info += ' small: {}'.format(psf) 1482 | pb_blob = getattr(ph_blob, 'photo_big', None) 1483 | if pb_blob: 1484 | pb_blob = ph_blob.photo_big.photo_big 1485 | pbf = '{}_{}.jpg'.format(pb_blob.volume_id, pb_blob.local_id) 1486 | ph_info += ' big: {}'.format(pbf) 1487 | return ph_info 1488 | 1489 | @property 1490 | def is_self(self): 1491 | flags = getattr(self.blob, 'flags', None) 1492 | if flags: 1493 | user_self = getattr(flags, 'is_self', None) 1494 | if user_self: 1495 | return flags.is_self 1496 | return False 1497 | 1498 | #------------------------------------------------------------------------------ 1499 | -------------------------------------------------------------------------------- /teleparser.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | # Telegram cache4 db parser. 5 | # Part of the project: tblob.py tdb.py logger.py 6 | # 7 | # Version History 8 | # - 20200807: added support for version 6.3.0 9 | # - 20200803: changed sqlite3 opening to 'bytes', fixed tdb.py on ver 4.9.0 10 | # - 20200731: fixed wrong object ID for page_block_subtitle 11 | # - 20200622: fixed wrong object 0x83e5de54 (message_empty_struct) 12 | # - 20200617: added support for 5.15.0 13 | # - 20200418: change eol terminators, added requirements file 14 | # - 20200407: [tblob] fixed a bug, [tdb] added a couple of checks base on 15 | # version 4.8.11, added small script to test/debug single blobs 16 | # - 20200406: first public release (5.5.0, 5.6.2) 17 | # - 20190729: first private release 18 | # 19 | # Released under MIT License 20 | # 21 | # Copyright (c) 2019 Francesco "dfirfpi" Picasso, Reality Net System Solutions 22 | # 23 | # Permission is hereby granted, free of charge, to any person obtaining a copy 24 | # of this software and associated documentation files (the "Software"), to deal 25 | # in the Software without restriction, including without limitation the rights 26 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 27 | # copies of the Software, and to permit persons to whom the Software is 28 | # furnished to do so, subject to the following conditions: 29 | # 30 | # The above copyright notice and this permission notice shall be included in 31 | # all copies or substantial portions of the Software. 32 | # 33 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 34 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 35 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 36 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 37 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 38 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 39 | # SOFTWARE. 40 | # 41 | '''Telegram cache4 db parser, script entry point.''' 42 | 43 | # pylint: disable= C0103,C0116 44 | 45 | import argparse 46 | import os 47 | import sqlite3 48 | import sys 49 | 50 | import logger 51 | import tblob 52 | import tdb 53 | 54 | VERSION = '20200807' 55 | 56 | #------------------------------------------------------------------------------ 57 | 58 | def process(infilename, outdirectory): 59 | 60 | db_connection = None 61 | db_uri = 'file:' + infilename + '?mode=ro' 62 | 63 | tparse = tblob.tblob() 64 | 65 | with sqlite3.connect(db_uri, uri=True) as db_connection: 66 | db_connection.text_factory = bytes 67 | db_connection.row_factory = sqlite3.Row 68 | db_cursor = db_connection.cursor() 69 | 70 | teledb = tdb.tdb(outdirectory, tparse, db_cursor) 71 | teledb.parse() 72 | 73 | teledb.save_parsed_tables() 74 | teledb.create_timeline() 75 | 76 | #------------------------------------------------------------------------------ 77 | 78 | if __name__ == '__main__': 79 | 80 | if sys.version_info[0] < 3: 81 | sys.exit('Python 3 or a more recent version is required.') 82 | 83 | description = 'Telegram parser version {}'.format(VERSION) 84 | parser = argparse.ArgumentParser(description=description) 85 | parser.add_argument('infilename', help='input file cache4.db') 86 | parser.add_argument('outdirectory', help='output directory, must exist') 87 | parser.add_argument('-v', '--verbose', action='count', 88 | help='verbose level, -v to -vvv') 89 | args = parser.parse_args() 90 | 91 | logger.configure_logging(args.verbose) 92 | 93 | if os.path.exists(args.infilename): 94 | if os.path.isdir(args.outdirectory): 95 | process(args.infilename, args.outdirectory) 96 | else: 97 | logger.error('Output directory [%s] does not exist!', 98 | args.outdirectory) 99 | else: 100 | logger.error('The provided input file does not exist!') 101 | -------------------------------------------------------------------------------- /utils/build_callbacks.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # pylint: disable= C0103,C0114,C0116 3 | 4 | import re 5 | import sys 6 | 7 | with open(sys.argv[1], 'r') as jclass: 8 | prev_line = None 9 | for line in jclass: 10 | res = re.search('constructor = ([^;]+);', line) 11 | if res: 12 | value = int(res.group(1)) 13 | value_hex = (value + (1 << 32)) % (1 << 32) 14 | res = re.search('class ([^ ]+) ', prev_line) 15 | if res: 16 | fn = res.group(1) 17 | fn = fn.replace('TLRPC$','',1) 18 | fn = fn.replace('TL_', '', 1) 19 | fn = re.sub(r'([A-Z])', r'_\1', fn).lower() 20 | print('0x{:08x} : (None, \'{}\', None), # {}'.format( 21 | value_hex, fn, value)) 22 | else: 23 | sys.exit('Unexpected!') 24 | prev_line = line 25 | -------------------------------------------------------------------------------- /utils/tds_0.1.317.txt: -------------------------------------------------------------------------------- 1 | 0x12b3ad31 : (None, 'account_get_notify_settings'), # 313765169 2 | 0xc04cfac2 : (None, 'account_get_wall_papers'), # -1068696894 3 | 0x446c712c : (None, 'account_register_device'), # 1147957548 4 | 0xdb7e1747 : (None, 'account_reset_notify_settings'), # -612493497 5 | 0x65c55b40 : (None, 'account_unregister_device'), # 1707432768 6 | 0x84be5b93 : (None, 'account_update_notify_settings'), # -2067899501 7 | 0xf0888d68 : (None, 'account_update_profile'), # -259486360 8 | 0x6628562c : (None, 'account_update_status'), # 1713919532 9 | 0xf6b673a4 : (None, 'auth_authorization'), # -155815004 10 | 0x6fe51dfb : (None, 'auth_check_phone'), # 1877286395 11 | 0xe300cc3b : (None, 'auth_checked_phone'), # -486486981 12 | 0xe5bfffcd : (None, 'auth_export_authorization'), # -440401971 13 | 0xdf969c2d : (None, 'auth_exported_authorization'), # -543777747 14 | 0xe3ef9613 : (None, 'auth_import_authorization'), # -470837741 15 | 0x5717da40 : (None, 'auth_log_out'), # 1461180992 16 | 0x9fab0d1a : (None, 'auth_reset_authorizations'), # -1616179942 17 | 0x03c51564 : (None, 'auth_send_call'), # 63247716 18 | 0x768d5f4d : (None, 'auth_send_code'), # 1988976461 19 | 0x771c1d97 : (None, 'auth_send_invites'), # 1998331287 20 | 0x2215bcbd : (None, 'auth_sent_code'), # 571849917 21 | 0xbcd51581 : (None, 'auth_sign_in'), # -1126886015 22 | 0x1b067634 : (None, 'auth_sign_up'), # 453408308 23 | 0x630e61be : (None, 'chat_full'), # 1661886910 24 | 0x3631cf4c : (None, 'chat_located'), # 909233996 25 | 0xc8d7493e : (None, 'chat_participant'), # -925415106 26 | 0x6643b654 : (None, 'client__d_h_inner_data'), # 1715713620 27 | 0x232d5905 : (None, 'config'), # 590174469 28 | 0xf911c994 : (None, 'contact'), # -116274796 29 | 0x561bc879 : (None, 'contact_blocked'), # 1444661369 30 | 0xea879f95 : (None, 'contact_found'), # -360210539 31 | 0xaa77b873 : (None, 'contact_status'), # -1434994573 32 | 0x3de191a1 : (None, 'contact_suggested'), # 1038193057 33 | 0x332b49fc : (None, 'contacts_block'), # 858475004 34 | 0x8e953744 : (None, 'contacts_delete_contact'), # -1902823612 35 | 0x59ab389e : (None, 'contacts_delete_contacts'), # 1504393374 36 | 0x0566000e : (None, 'contacts_found'), # 90570766 37 | 0xf57c350f : (None, 'contacts_get_blocked'), # -176409329 38 | 0x22c6aa08 : (None, 'contacts_get_contacts'), # 583445000 39 | 0xc4a353ee : (None, 'contacts_get_statuses'), # -995929106 40 | 0xcd773428 : (None, 'contacts_get_suggested'), # -847825880 41 | 0xda30b32d : (None, 'contacts_import_contacts'), # -634342611 42 | 0xd1cd0a4c : (None, 'contacts_imported_contacts'), # -775091636 43 | 0xeccea3f5 : (None, 'contacts_link'), # -322001931 44 | 0x11f812d8 : (None, 'contacts_search'), # 301470424 45 | 0x5649dcc5 : (None, 'contacts_suggested'), # 1447681221 46 | 0xe54100bd : (None, 'contacts_unblock'), # -448724803 47 | 0x2ec2a43c : (None, 'dc_option'), # 784507964 48 | 0xa1733aec : (None, 'decrypted_message_action_set_message_t_t_l'), # -1586283796 49 | 0x99a438cf : (None, 'decrypted_message_layer'), # -1717290801 50 | 0xe7512126 : (None, 'destroy_session'), # -414113498 51 | 0xa13dc52f : (None, 'destroy_sessions'), # -1589787345 52 | 0xfb95abcd : (None, 'destroy_sessions_res'), # -74077235 53 | 0x214a8cdf : (None, 'dialog'), # 558533855 54 | 0xc4b9f9bb : (None, 'error'), # -994444869 55 | 0x0949d9dc : (None, 'future_salt'), # 155834844 56 | 0xae500895 : (None, 'futuresalts'), # -1370486635 57 | 0x55b3e8fb : (None, 'geochats_checkin'), # 1437853947 58 | 0x0e092e16 : (None, 'geochats_create_geo_chat'), # 235482646 59 | 0x35d81a95 : (None, 'geochats_edit_chat_photo'), # 903355029 60 | 0x4c8e2273 : (None, 'geochats_edit_chat_title'), # 1284383347 61 | 0x6722dd6f : (None, 'geochats_get_full_chat'), # 1730338159 62 | 0xb53f7a68 : (None, 'geochats_get_history'), # -1254131096 63 | 0x7f192d8f : (None, 'geochats_get_located'), # 2132356495 64 | 0xe1427e6f : (None, 'geochats_get_recents'), # -515735953 65 | 0x48feb267 : (None, 'geochats_located'), # 1224651367 66 | 0xcfcdc44d : (None, 'geochats_search'), # -808598451 67 | 0xb8f0deff : (None, 'geochats_send_media'), # -1192173825 68 | 0x061b0044 : (None, 'geochats_send_message'), # 102432836 69 | 0x08b8a729 : (None, 'geochats_set_typing'), # 146319145 70 | 0x17b1578b : (None, 'geochats_stated_message'), # 397498251 71 | 0xb921bd04 : (None, 'get_future_salts'), # -1188971260 72 | 0x3072cfa1 : (None, 'gzip_packed'), # 812830625 73 | 0xc812ac7e : (None, 'help_get_app_update'), # -938300290 74 | 0xc4f9186b : (None, 'help_get_config'), # -990308245 75 | 0xa4a95186 : (None, 'help_get_invite_text'), # -1532407418 76 | 0x1fb33026 : (None, 'help_get_nearest_dc'), # 531836966 77 | 0x18cb9f78 : (None, 'help_invite_text'), # 415997816 78 | 0x6f02f748 : (None, 'help_save_app_log'), # 1862465352 79 | 0x9299359f : (None, 'http_wait'), # -1835453025 80 | 0xd0028438 : (None, 'imported_contact'), # -805141448 81 | 0x770656a8 : (None, 'input_app_event'), # 1996904104 82 | 0xf141b5e1 : (None, 'input_encrypted_chat'), # -247351839 83 | 0x74d456fa : (None, 'input_geo_chat'), # 1960072954 84 | 0x46a2ce98 : (None, 'input_peer_notify_settings'), # 1185074840 85 | 0xf392b7f4 : (None, 'input_phone_contact'), # -208488460 86 | 0xcb9f372d : (None, 'invoke_after_msg'), # -878758099 87 | 0x3dbc0415 : (None, 'messages_accept_encryption'), # 1035731989 88 | 0x2ee9ee9e : (None, 'messages_add_chat_user'), # 787082910 89 | 0xb7de36f2 : (None, 'messages_affected_history'), # -1210173710 90 | 0x40e9002a : (None, 'messages_chat'), # 1089011754 91 | 0xe5d7d19c : (None, 'messages_chat_full'), # -438840932 92 | 0x8150cbd8 : (None, 'messages_chats'), # -2125411368 93 | 0x419d9aee : (None, 'messages_create_chat'), # 1100847854 94 | 0xc3c5cd23 : (None, 'messages_delete_chat_user'), # -1010447069 95 | 0xf4f8fb61 : (None, 'messages_delete_history'), # -185009311 96 | 0x14f2dd0a : (None, 'messages_delete_messages'), # 351460618 97 | 0xedd923c5 : (None, 'messages_discard_encryption'), # -304536635 98 | 0xd881821d : (None, 'messages_edit_chat_photo'), # -662601187 99 | 0xb4bc68b5 : (None, 'messages_edit_chat_title'), # -1262720843 100 | 0x03f3f4f2 : (None, 'messages_forward_message'), # 66319602 101 | 0x514cd10f : (None, 'messages_forward_messages'), # 1363988751 102 | 0x3c6aa187 : (None, 'messages_get_chats'), # 1013621127 103 | 0x26cf8950 : (None, 'messages_get_dh_config'), # 651135312 104 | 0xeccf1df6 : (None, 'messages_get_dialogs'), # -321970698 105 | 0x3b831c66 : (None, 'messages_get_full_chat'), # 998448230 106 | 0x92a1df2f : (None, 'messages_get_history'), # -1834885329 107 | 0x4222fa74 : (None, 'messages_get_messages'), # 1109588596 108 | 0x7f4b690a : (None, 'messages_read_encrypted_history'), # 2135648522 109 | 0xb04f2510 : (None, 'messages_read_history'), # -1336990448 110 | 0x28abcb68 : (None, 'messages_received_messages'), # 682347368 111 | 0x55a5bb66 : (None, 'messages_received_queue'), # 1436924774 112 | 0xf64daf43 : (None, 'messages_request_encryption'), # -162681021 113 | 0x395f9d7e : (None, 'messages_restore_messages'), # 962567550 114 | 0x07e9f2ab : (None, 'messages_search'), # 132772523 115 | 0x41bb0972 : (None, 'messages_send_broadcast'), # 1102776690 116 | 0xa9776773 : (None, 'messages_send_encrypted'), # -1451792525 117 | 0x9a901b66 : (None, 'messages_send_encrypted_file'), # -1701831834 118 | 0x32d439a4 : (None, 'messages_send_encrypted_service'), # 852769188 119 | 0xa3c85d76 : (None, 'messages_send_media'), # -1547149962 120 | 0x4cde0aab : (None, 'messages_send_message'), # 1289620139 121 | 0x791451ed : (None, 'messages_set_encrypted_typing'), # 2031374829 122 | 0x719839e9 : (None, 'messages_set_typing'), # 1905801705 123 | 0x73f1f8dc : (None, 'msg_container'), # 1945237724 124 | 0xe06046b2 : (None, 'msg_copy'), # -530561358 125 | 0x7d861a08 : (None, 'msg_resend_req'), # 2105940488 126 | 0x62d6b459 : (None, 'msgs_ack'), # 1658238041 127 | 0x8cc0d131 : (None, 'msgs_all_info'), # -1933520591 128 | 0x04deb57d : (None, 'msgs_state_info'), # 81704317 129 | 0xda69fb52 : (None, 'msgs_state_req'), # -630588590 130 | 0x8e1a1775 : (None, 'nearest_dc'), # -1910892683 131 | 0x9ec20908 : (None, 'new_session_created'), # -1631450872 132 | 0x56730bcc : (None, 'null'), # 1450380236 133 | 0x83c95aec : (None, 'p_q_inner_data'), # -2083955988 134 | 0xb7ee553c : (None, 'photos_get_user_photos'), # -1209117380 135 | 0x20212ca8 : (None, 'photos_photo'), # 539045032 136 | 0xeef579a0 : (None, 'photos_update_profile_photo'), # -285902432 137 | 0xd50f9c88 : (None, 'photos_upload_profile_photo'), # -720397176 138 | 0x7abe77ec : (None, 'ping'), # 2059302892 139 | 0x347773c5 : (None, 'pong'), # 880243653 140 | 0x5bb8e511 : (None, 'proto_message'), # 1538843921 141 | 0xd712e4be : (None, 'req__d_h_params'), # -686627650 142 | 0x60469778 : (None, 'req_pq'), # 1615239032 143 | 0x05162463 : (None, 'res_p_q'), # 85337187 144 | 0x58e4a740 : (None, 'rpc_drop_answer'), # 1491380032 145 | 0xf35c6d01 : (None, 'rpc_result'), # -212046591 146 | 0xb5890dba : (None, 'server__d_h_inner_data'), # -1249309254 147 | 0xf5045f1f : (None, 'set_client__d_h_params'), # -184262881 148 | 0x0a041495 : (None, 'updates_get_difference'), # 168039573 149 | 0xedd4882a : (None, 'updates_get_state'), # -304838614 150 | 0xa56c2a3e : (None, 'updates_state'), # -1519637954 151 | 0x096a18d5 : (None, 'upload_file'), # 157948117 152 | 0xe3a6cfb5 : (None, 'upload_get_file'), # -475607115 153 | 0xde7b673d : (None, 'upload_save_big_file_part'), # -562337987 154 | 0xb304a621 : (None, 'upload_save_file_part'), # -1291540959 155 | 0x771095da : (None, 'user_full'), # 1997575642 156 | 0xca30a5b1 : (None, 'users_get_full_user'), # -902781519 157 | 0x0d91a548 : (None, 'users_get_users'), # 227648840 158 | 0x1cb5c415 : (None, '_vector'), # 481674261 159 | 0x99a438cf : (None, 'decrypted_message_layer'), # -1717290801 160 | 0x69796de9 : (None, 'init_connection'), # 1769565673 161 | 0xa6b88fdf : (None, 'invoke_with_layer11'), # -1497853985 162 | 0x427425e7 : (None, 'audio'), # 1114908135 163 | 0x586988d8 : (None, 'audio_empty'), # 1483311320 164 | 0xa7eff811 : (None, 'bad_msg_notification'), # -1477445615 165 | 0xedab447b : (None, 'bad_server_salt'), # -307542917 166 | 0xbc799737 : (None, 'bool_false'), # -1132882121 167 | 0x997275b5 : (None, 'bool_true'), # -1720552011 168 | 0x6e9c9bc7 : (None, 'chat'), # 1855757255 169 | 0x9ba2d800 : (None, 'chat_empty'), # -1683826688 170 | 0xfb0ccc41 : (None, 'chat_forbidden'), # -83047359 171 | 0x7841b415 : (None, 'chat_participants'), # 2017571861 172 | 0x0fd2bb8a : (None, 'chat_participants_forbidden'), # 265468810 173 | 0x6153276a : (None, 'chat_photo'), # 1632839530 174 | 0x37c1011c : (None, 'chat_photo_empty'), # 935395612 175 | 0x1c138d15 : (None, 'contacts_blocked'), # 471043349 176 | 0x900802a1 : (None, 'contacts_blocked_slice'), # -1878523231 177 | 0x6f8b8cb2 : (None, 'contacts_contacts'), # 1871416498 178 | 0xb74ba9d2 : (None, 'contacts_contacts_not_modified'), # -1219778094 179 | 0x1bea8ce1 : (None, 'contacts_foreign_link_mutual'), # 468356321 180 | 0xa7801f47 : (None, 'contacts_foreign_link_requested'), # -1484775609 181 | 0x133421f8 : (None, 'contacts_foreign_link_unknown'), # 322183672 182 | 0xc240ebd9 : (None, 'contacts_my_link_contact'), # -1035932711 183 | 0xd22a1c60 : (None, 'contacts_my_link_empty'), # -768992160 184 | 0x6c69efee : (None, 'contacts_my_link_requested'), # 1818882030 185 | 0x1f814f1f : (None, 'decrypted_message'), # 528568095 186 | 0x6080758f : (None, 'decrypted_message_media_audio'), # 1619031439 187 | 0x588a0a97 : (None, 'decrypted_message_media_contact'), # 1485441687 188 | 0xb095434b : (None, 'decrypted_message_media_document'), # -1332395189 189 | 0x089f5c4a : (None, 'decrypted_message_media_empty'), # 144661578 190 | 0x35480a59 : (None, 'decrypted_message_media_geo_point'), # 893913689 191 | 0x32798a8c : (None, 'decrypted_message_media_photo'), # 846826124 192 | 0x4cee6ef3 : (None, 'decrypted_message_media_video'), # 1290694387 193 | 0xaa48327d : (None, 'decrypted_message_service'), # -1438109059 194 | 0x62d350c9 : (None, 'destroy_session_none'), # 1658015945 195 | 0xe22045fc : (None, 'destroy_session_ok'), # -501201412 196 | 0xa69dae02 : (None, 'dh_gen_fail'), # -1499615742 197 | 0x3bcbf734 : (None, 'dh_gen_ok'), # 1003222836 198 | 0x46dc1fb9 : (None, 'dh_gen_retry'), # 1188831161 199 | 0x9efc6326 : (None, 'document'), # -1627626714 200 | 0x36f8c871 : (None, 'document_empty'), # 922273905 201 | 0x55555556 : (None, 'document_encrypted'), # 1431655766 202 | 0xfa56ce36 : (None, 'encrypted_chat'), # -94974410 203 | 0x13d6dd27 : (None, 'encrypted_chat_discarded'), # 332848423 204 | 0xab7ec0a0 : (None, 'encrypted_chat_empty'), # -1417756512 205 | 0xc878527e : (None, 'encrypted_chat_requested'), # -931638658 206 | 0xfda9a7b7 : (None, 'encrypted_chat_requested_old'), # -39213129 207 | 0x3bf703dc : (None, 'encrypted_chat_waiting'), # 1006044124 208 | 0x4a70994c : (None, 'encrypted_file'), # 1248893260 209 | 0xc21f497e : (None, 'encrypted_file_empty'), # -1038136962 210 | 0xed18c118 : (None, 'encrypted_message'), # -317144808 211 | 0x23734b06 : (None, 'encrypted_message_service'), # 594758406 212 | 0x55555554 : (None, 'file_encrypted_location'), # 1431655764 213 | 0x53d69076 : (None, 'file_location'), # 1406570614 214 | 0x7c596b46 : (None, 'file_location_unavailable'), # 2086234950 215 | 0x75eaea5a : (None, 'geo_chat'), # 1978329690 216 | 0x4505f8e1 : (None, 'geo_chat_message'), # 1158019297 217 | 0x60311a9b : (None, 'geo_chat_message_empty'), # 1613830811 218 | 0xd34fa24e : (None, 'geo_chat_message_service'), # -749755826 219 | 0x2049d70c : (None, 'geo_point'), # 541710092 220 | 0x1117dd5f : (None, 'geo_point_empty'), # 286776671 221 | 0xd1526db1 : (None, 'geochats_messages'), # -783127119 222 | 0xbc5863e8 : (None, 'geochats_messages_slice'), # -1135057944 223 | 0x8987f311 : (None, 'help_app_update'), # -1987579119 224 | 0xc45a6536 : (None, 'help_no_app_update'), # -1000708810 225 | 0x77d440ff : (None, 'input_audio'), # 2010398975 226 | 0xd95adc84 : (None, 'input_audio_empty'), # -648356732 227 | 0x74dc404d : (None, 'input_audio_file_location'), # 1960591437 228 | 0xb2e1bf08 : (None, 'input_chat_photo'), # -1293828344 229 | 0x1ca48f57 : (None, 'input_chat_photo_empty'), # 480546647 230 | 0x94254732 : (None, 'input_chat_uploaded_photo'), # -1809496270 231 | 0x18798952 : (None, 'input_document'), # 410618194 232 | 0x72f0eaae : (None, 'input_document_empty'), # 1928391342 233 | 0x4e45abe9 : (None, 'input_document_file_location'), # 1313188841 234 | 0x5a17b5e5 : (None, 'input_encrypted_file'), # 1511503333 235 | 0x2dc173c8 : (None, 'input_encrypted_file_big_uploaded'), # 767652808 236 | 0x1837c364 : (None, 'input_encrypted_file_empty'), # 406307684 237 | 0xf5235d55 : (None, 'input_encrypted_file_location'), # -182231723 238 | 0x64bd0306 : (None, 'input_encrypted_file_uploaded'), # 1690108678 239 | 0xf52ff27f : (None, 'input_file'), # -181407105 240 | 0xfa4f0bb5 : (None, 'input_file_big'), # -95482955 241 | 0x14637196 : (None, 'input_file_location'), # 342061462 242 | 0xf3b7acc9 : (None, 'input_geo_point'), # -206066487 243 | 0xe4c123d6 : (None, 'input_geo_point_empty'), # -457104426 244 | 0x89938781 : (None, 'input_media_audio'), # -1986820223 245 | 0xa6e45987 : (None, 'input_media_contact'), # -1494984313 246 | 0xd184e841 : (None, 'input_media_document'), # -779818943 247 | 0x9664f57f : (None, 'input_media_empty'), # -1771768449 248 | 0xf9c44144 : (None, 'input_media_geo_point'), # -104578748 249 | 0x8f2ab2ec : (None, 'input_media_photo'), # -1893027092 250 | 0x61a6d436 : (None, 'input_media_uploaded_audio'), # 1638323254 251 | 0x34e794bd : (None, 'input_media_uploaded_document'), # 887592125 252 | 0x2dc53a7d : (None, 'input_media_uploaded_photo'), # 767900285 253 | 0x3e46de5d : (None, 'input_media_uploaded_thumb_document'), # 1044831837 254 | 0xe628a145 : (None, 'input_media_uploaded_thumb_video'), # -433544891 255 | 0x4847d92a : (None, 'input_media_uploaded_video'), # 1212668202 256 | 0x7f023ae6 : (None, 'input_media_video'), # 2130852582 257 | 0x57e2f66c : (None, 'input_messages_filter_empty'), # 1474492012 258 | 0x56e9f0e4 : (None, 'input_messages_filter_photo_video'), # 1458172132 259 | 0x9609a51c : (None, 'input_messages_filter_photos'), # -1777752804 260 | 0x9fc00e65 : (None, 'input_messages_filter_video'), # -1614803355 261 | 0xa429b886 : (None, 'input_notify_all'), # -1540769658 262 | 0x4a95e84e : (None, 'input_notify_chats'), # 1251338318 263 | 0x4d8ddec8 : (None, 'input_notify_geo_chat_peer'), # 1301143240 264 | 0xb8bc5b0c : (None, 'input_notify_peer'), # -1195615476 265 | 0x193b4417 : (None, 'input_notify_users'), # 423314455 266 | 0x179be863 : (None, 'input_peer_chat'), # 396093539 267 | 0x1023dbe8 : (None, 'input_peer_contact'), # 270785512 268 | 0x7f3b18ea : (None, 'input_peer_empty'), # 2134579434 269 | 0x9b447325 : (None, 'input_peer_foreign'), # -1690012891 270 | 0xe86a2c74 : (None, 'input_peer_notify_events_all'), # -395694988 271 | 0xf03064d8 : (None, 'input_peer_notify_events_empty'), # -265263912 272 | 0x7da07ec9 : (None, 'input_peer_self'), # 2107670217 273 | 0xfb95c6c4 : (None, 'input_photo'), # -74070332 274 | 0xd9915325 : (None, 'input_photo_crop'), # -644787419 275 | 0xade6b004 : (None, 'input_photo_crop_auto'), # -1377390588 276 | 0x1cd7bf0d : (None, 'input_photo_empty'), # 483901197 277 | 0x86e94f65 : (None, 'input_user_contact'), # -2031530139 278 | 0xb98886cf : (None, 'input_user_empty'), # -1182234929 279 | 0x655e74ff : (None, 'input_user_foreign'), # 1700689151 280 | 0xf7c1b13f : (None, 'input_user_self'), # -138301121 281 | 0xee579652 : (None, 'input_video'), # -296249774 282 | 0x5508ec75 : (None, 'input_video_empty'), # 1426648181 283 | 0x3d0364ec : (None, 'input_video_file_location'), # 1023632620 284 | 0x22eb6aba : (None, 'message'), # 585853626 285 | 0x5e3cfc4b : (None, 'message_action_chat_add_user'), # 1581055051 286 | 0xa6638b9a : (None, 'message_action_chat_create'), # -1503425638 287 | 0x95e3fbef : (None, 'message_action_chat_delete_photo'), # -1780220945 288 | 0xb2ae9b0c : (None, 'message_action_chat_delete_user'), # -1297179892 289 | 0x7fcb13a8 : (None, 'message_action_chat_edit_photo'), # 2144015272 290 | 0xb5a1ce5a : (None, 'message_action_chat_edit_title'), # -1247687078 291 | 0xb6aef7b0 : (None, 'message_action_empty'), # -1230047312 292 | 0x0c7d53de : (None, 'message_action_geo_chat_checkin'), # 209540062 293 | 0x6f038ebc : (None, 'message_action_geo_chat_create'), # 1862504124 294 | 0x555555f5 : (None, 'message_action_login_unknown_location'), # 1431655925 295 | 0x55555552 : (None, 'message_action_t_t_l_change'), # 1431655762 296 | 0x55555550 : (None, 'message_action_user_joined'), # 1431655760 297 | 0x55555551 : (None, 'message_action_user_updated_photo'), # 1431655761 298 | 0x83e5de54 : (None, 'message_empty'), # -2082087340 299 | 0x05f46804 : (None, 'message_forwarded'), # 99903492 300 | 0xc6b68300 : (None, 'message_media_audio'), # -961117440 301 | 0x5e7d2f39 : (None, 'message_media_contact'), # 1585262393 302 | 0x2fda2204 : (None, 'message_media_document'), # 802824708 303 | 0x3ded6320 : (None, 'message_media_empty'), # 1038967584 304 | 0x56e0d474 : (None, 'message_media_geo'), # 1457575028 305 | 0xc8c45a2a : (None, 'message_media_photo'), # -926655958 306 | 0x29632a36 : (None, 'message_media_unsupported'), # 694364726 307 | 0xa2d24290 : (None, 'message_media_video'), # -1563278704 308 | 0x9f8d60bb : (None, 'message_service'), # -1618124613 309 | 0x2c221edd : (None, 'messages_dh_config'), # 740433629 310 | 0xc0e24635 : (None, 'messages_dh_config_not_modified'), # -1058912715 311 | 0x15ba6c40 : (None, 'messages_dialogs'), # 364538944 312 | 0x71e094f3 : (None, 'messages_dialogs_slice'), # 1910543603 313 | 0xff90c417 : (None, 'messages_message'), # -7289833 314 | 0x3f4e0648 : (None, 'messages_message_empty'), # 1062078024 315 | 0x8c718e87 : (None, 'messages_messages'), # -1938715001 316 | 0x0b446ae3 : (None, 'messages_messages_slice'), # 189033187 317 | 0x9493ff32 : (None, 'messages_sent_encrypted_file'), # -1802240206 318 | 0x560f8935 : (None, 'messages_sent_encrypted_message'), # 1443858741 319 | 0xd1f4d35c : (None, 'messages_sent_message'), # -772484260 320 | 0xe9db4a3f : (None, 'messages_sent_message_link'), # -371504577 321 | 0xd07ae726 : (None, 'messages_stated_message'), # -797251802 322 | 0xa9af2881 : (None, 'messages_stated_message_link'), # -1448138623 323 | 0x969478bb : (None, 'messages_stated_messages'), # -1768654661 324 | 0x3e74f5c6 : (None, 'messages_stated_messages_links'), # 1047852486 325 | 0x276d3ec6 : (None, 'msg_detailed_info'), # 661470918 326 | 0x809db6df : (None, 'msg_new_detailed_info'), # -2137147681 327 | 0xbad0e5bb : (None, 'peer_chat'), # -1160714821 328 | 0x6d1ded88 : (None, 'peer_notify_events_all'), # 1830677896 329 | 0xadd53cb3 : (None, 'peer_notify_events_empty'), # -1378534221 330 | 0x8d5e11ee : (None, 'peer_notify_settings'), # -1923214866 331 | 0x70a68512 : (None, 'peer_notify_settings_empty'), # 1889961234 332 | 0x9db1bc6d : (None, 'peer_user'), # -1649296275 333 | 0x22b56751 : (None, 'photo'), # 582313809 334 | 0xe9a734fa : (None, 'photo_cached_size'), # -374917894 335 | 0x2331b22d : (None, 'photo_empty'), # 590459437 336 | 0x77bfb61b : (None, 'photo_size'), # 2009052699 337 | 0x0e17e23c : (None, 'photo_size_empty'), # 236446268 338 | 0x8dca6aa5 : (None, 'photos_photos'), # -1916114267 339 | 0x15051f54 : (None, 'photos_photos_slice'), # 352657236 340 | 0xa43ad8b7 : (None, 'rpc_answer_dropped'), # -1539647305 341 | 0xcd78e586 : (None, 'rpc_answer_dropped_running'), # -847714938 342 | 0x5e2ad36e : (None, 'rpc_answer_unknown'), # 1579864942 343 | 0x2144ca19 : (None, 'rpc_error'), # 558156313 344 | 0x7ae432f5 : (None, 'rpc_req_error'), # 2061775605 345 | 0x79cb045d : (None, 'server__d_h_params_fail'), # 2043348061 346 | 0xd0e8075c : (None, 'server__d_h_params_ok'), # -790100132 347 | 0xcae1aadf : (None, 'storage_file_gif'), # -891180321 348 | 0x007efe0e : (None, 'storage_file_jpeg'), # 8322574 349 | 0x4b09ebbc : (None, 'storage_file_mov'), # 1258941372 350 | 0x528a0677 : (None, 'storage_file_mp3'), # 1384777335 351 | 0xb3cea0e4 : (None, 'storage_file_mp4'), # -1278304028 352 | 0x40bc6f52 : (None, 'storage_file_partial'), # 1086091090 353 | 0x0a4f63c0 : (None, 'storage_file_png'), # 172975040 354 | 0xaa963b05 : (None, 'storage_file_unknown'), # -1432995067 355 | 0x1081464c : (None, 'storage_file_webp'), # 276907596 356 | 0x6f690963 : (None, 'update_activation'), # 1869154659 357 | 0x3a0eeb22 : (None, 'update_chat_participant_add'), # 974056226 358 | 0x6e5f8c22 : (None, 'update_chat_participant_delete'), # 1851755554 359 | 0x07761198 : (None, 'update_chat_participants'), # 125178264 360 | 0x3c46cfe6 : (None, 'update_chat_user_typing'), # 1011273702 361 | 0x51a48a9a : (None, 'update_contact_link'), # 1369737882 362 | 0x2575bbb9 : (None, 'update_contact_registered'), # 628472761 363 | 0x8e5e9873 : (None, 'update_dc_options'), # -1906403213 364 | 0xa92bfe26 : (None, 'update_delete_messages'), # -1456734682 365 | 0x1710f156 : (None, 'update_encrypted_chat_typing'), # 386986326 366 | 0x38fe25b7 : (None, 'update_encrypted_messages_read'), # 956179895 367 | 0xb4a2e88d : (None, 'update_encryption'), # -1264392051 368 | 0x4e90bfd6 : (None, 'update_message_i_d'), # 1318109142 369 | 0x8f06529a : (None, 'update_new_authorization'), # -1895411046 370 | 0x12bcbd9a : (None, 'update_new_encrypted_message'), # 314359194 371 | 0x5a68e3f7 : (None, 'update_new_geo_chat_message'), # 1516823543 372 | 0x013abdb3 : (None, 'update_new_message'), # 20626867 373 | 0xc6649e31 : (None, 'update_read_messages'), # -966484431 374 | 0xd15de04d : (None, 'update_restore_messages'), # -782376883 375 | 0x78d4dec1 : (None, 'update_short'), # 2027216577 376 | 0x2b2fbd4e : (None, 'update_short_chat_message'), # 724548942 377 | 0xd3f45784 : (None, 'update_short_message'), # -738961532 378 | 0xda22d9ad : (None, 'update_user_name'), # -635250259 379 | 0x95313b0c : (None, 'update_user_photo'), # -1791935732 380 | 0x1bfbd823 : (None, 'update_user_status'), # 469489699 381 | 0x6baa8508 : (None, 'update_user_typing'), # 1806337288 382 | 0x74ae4240 : (None, 'updates'), # 1957577280 383 | 0x725b04c3 : (None, 'updates_combined'), # 1918567619 384 | 0xe317af7e : (None, 'updates_too_long'), # -484987010 385 | 0x00f49ca0 : (None, 'updates_difference'), # 16030880 386 | 0x5d75a138 : (None, 'updates_difference_empty'), # 1567990072 387 | 0xa8fb1981 : (None, 'updates_difference_slice'), # -1459938943 388 | 0xf2fb8319 : (None, 'user_contact'), # -218397927 389 | 0xb29ad7cc : (None, 'user_deleted'), # -1298475060 390 | 0x200250ba : (None, 'user_empty'), # 537022650 391 | 0x5214c89d : (None, 'user_foreign'), # 1377093789 392 | 0xd559d8c8 : (None, 'user_profile_photo'), # -715532088 393 | 0x4f11bae1 : (None, 'user_profile_photo_empty'), # 1326562017 394 | 0x990d1493 : (None, 'user_profile_photo_old'), # -1727196013 395 | 0x22e8ceb0 : (None, 'user_request'), # 585682608 396 | 0x720535ec : (None, 'user_self'), # 1912944108 397 | 0x09d05049 : (None, 'user_status_empty'), # 164646985 398 | 0x008c703f : (None, 'user_status_offline'), # 9203775 399 | 0xedb93949 : (None, 'user_status_online'), # -306628279 400 | 0x5a04a49f : (None, 'video'), # 1510253727 401 | 0xc10658a8 : (None, 'video_empty'), # -1056548696 402 | 0x55555553 : (None, 'video_encrypted'), # 1431655763 403 | 0xccb03657 : (None, 'wall_paper'), # -860866985 404 | 0x63117f24 : (None, 'wall_paper_solid'), # 1662091044 405 | 0x6601d14f : (None, 'encrypted_chat_old'), # 1711395151 406 | -------------------------------------------------------------------------------- /utils/tds_4.8.11.txt: -------------------------------------------------------------------------------- 1 | 0xc8d7493e : (None, 'chat_channel_participant', None), # -925415106 2 | 0xe317af7e : (None, 'updates_too_long', None), # -484987010 3 | 0x1cb5c415 : (None, '_vector', None), # 481674261 4 | 0x1b0c841a : (None, 'draft_message_empty', None), # 453805082 5 | 0xba4baec5 : (None, 'draft_message_empty_layer81', None), # -1169445179 6 | 0xfd8e711f : (None, 'draft_message', None), # -40996577 7 | 0x37c1011c : (None, 'chat_photo_empty', None), # 935395612 8 | 0x6153276a : (None, 'chat_photo', None), # 1632839530 9 | 0x780a0310 : (None, 'help_terms_of_service', None), # 2013922064 10 | 0x500911e1 : (None, 'payments_payment_receipt', None), # 1342771681 11 | 0xc007cec3 : (None, 'notify_chats', None), # -1073230141 12 | 0xb4c83b4c : (None, 'notify_users', None), # -1261946036 13 | 0x9fd40bd8 : (None, 'notify_peer', None), # -1613493288 14 | 0x560f8935 : (None, 'messages_sent_encrypted_message', None), # 1443858741 15 | 0x9493ff32 : (None, 'messages_sent_encrypted_file', None), # -1802240206 16 | 0xc4b9f9bb : (None, 'error', None), # -994444869 17 | 0x811ea28e : (None, 'auth_checked_phone', None), # -2128698738 18 | 0xe5d7d19c : (None, 'messages_chat_full', None), # -438840932 19 | 0x7bd9c3f1 : (None, 'account_password_settings', None), # 2077869041 20 | 0x3a556302 : (None, 'document_attribute_sticker_layer55', None), # 978674434 21 | 0x051448e5 : (None, 'document_attribute_audio_old', None), # 85215461 22 | 0x6319d612 : (None, 'document_attribute_sticker', None), # 1662637586 23 | 0x11b58939 : (None, 'document_attribute_animated', None), # 297109817 24 | 0x15590068 : (None, 'document_attribute_filename', None), # 358154344 25 | 0x0ef02ce6 : (None, 'document_attribute_video', None), # 250621158 26 | 0x5910cccb : (None, 'document_attribute_video_layer65', None), # 1494273227 27 | 0xded218e0 : (None, 'document_attribute_audio_layer45', None), # -556656416 28 | 0xfb0a5727 : (None, 'document_attribute_sticker_old', None), # -83208409 29 | 0x9801d2f7 : (None, 'document_attribute_has_stickers', None), # -1744710921 30 | 0x994c9882 : (None, 'document_attribute_sticker_old2', None), # -1723033470 31 | 0x6c37c15c : (None, 'document_attribute_image_size', None), # 1815593308 32 | 0x9852f9c6 : (None, 'document_attribute_audio', None), # -1739392570 33 | 0xdc3d824f : (None, 'text_empty', None), # -599948721 34 | 0x3c2884c1 : (None, 'text_url', None), # 1009288385 35 | 0x9bf8bb95 : (None, 'text_strike', None), # -1678197867 36 | 0x6c3f19b9 : (None, 'text_fixed', None), # 1816074681 37 | 0xde5a0dd6 : (None, 'text_email', None), # -564523562 38 | 0x744694e0 : (None, 'text_plain', None), # 1950782688 39 | 0x7e6260d7 : (None, 'text_concat', None), # 2120376535 40 | 0x6724abc4 : (None, 'text_bold', None), # 1730456516 41 | 0xd912a59c : (None, 'text_italic', None), # -653089380 42 | 0xc12622c4 : (None, 'text_underline', None), # -1054465340 43 | 0x5ce14175 : (None, 'popular_contact', None), # 1558266229 44 | 0x36585ea4 : (None, 'messages_bot_callback_answer', None), # 911761060 45 | 0x7d748d04 : (None, 'data_j_s_o_n', None), # 2104790276 46 | 0xd3680c61 : (None, 'contact_status', None), # -748155807 47 | 0x7780bcb4 : (None, 'group_call_discarded', None), # 2004925620 48 | 0x0a8f1624 : (None, 'group_call', None), # 177149476 49 | 0x6d0b1604 : (None, 'group_call_private', None), # 1829443076 50 | 0x58cf4249 : (None, 'channel_banned_rights', None), # 1489977929 51 | 0xe56dbf05 : (None, 'dialog_peer', None), # -445792507 52 | 0xda429411 : (None, 'dialog_peer_feed', None), # -633170927 53 | 0xcd050916 : (None, 'auth_authorization', None), # -855308010 54 | 0x8c718e87 : (None, 'messages_messages', None), # -1938715001 55 | 0x99262e37 : (None, 'messages_channel_messages', None), # -1725551049 56 | 0x0b446ae3 : (None, 'messages_messages_slice', None), # 189033187 57 | 0x3f56aea3 : (None, 'payments_payment_form', None), # 1062645411 58 | 0x3ace484c : (None, 'contacts_link', None), # 986597452 59 | 0x4a70994c : (None, 'encrypted_file', None), # 1248893260 60 | 0xc21f497e : (None, 'encrypted_file_empty', None), # -1038136962 61 | 0xbddde532 : (None, 'peer_channel', None), # -1109531342 62 | 0x9db1bc6d : (None, 'peer_user', None), # -1649296275 63 | 0xbad0e5bb : (None, 'peer_chat', None), # -1160714821 64 | 0xcb296bf8 : (None, 'labeled_price', None), # -886477832 65 | 0xf385c1f6 : (None, 'lang_pack_difference', None), # -209337866 66 | 0x66afa166 : (None, 'help_deep_link_info_empty', None), # 1722786150 67 | 0x6a4ee832 : (None, 'help_deep_link_info', None), # 1783556146 68 | 0x64199744 : (None, 'secure_file_empty', None), # 1679398724 69 | 0xe0277a62 : (None, 'secure_file', None), # -534283678 70 | 0x84d19185 : (None, 'messages_affected_messages', None), # -2066640507 71 | 0xd0d9b163 : (None, 'channels_channel_participant', None), # -791039645 72 | 0x7bf2e6f6 : (None, 'authorization', None), # 2079516406 73 | 0x00f49ca0 : (None, 'updates_difference', None), # 16030880 74 | 0xa8fb1981 : (None, 'updates_difference_slice', None), # -1459938943 75 | 0x4afe8f6d : (None, 'updates_difference_too_long', None), # 1258196845 76 | 0x5d75a138 : (None, 'updates_difference_empty', None), # 1567990072 77 | 0xbc2eab30 : (None, 'privacy_key_status_timestamp', None), # -1137792208 78 | 0x500e6dfa : (None, 'privacy_key_chat_invite', None), # 1343122938 79 | 0x3d662b7b : (None, 'privacy_key_phone_call', None), # 1030105979 80 | 0x0296f104 : (None, 'geo_point', None), # 43446532 81 | 0x2049d70c : (None, 'geo_point_layer81', None), # 541710092 82 | 0x1117dd5f : (None, 'geo_point_empty', None), # 286776671 83 | 0x554abb6f : (None, 'account_privacy_rules', None), # 1430961007 84 | 0xdb74f558 : (None, 'chat_invite', None), # -613092008 85 | 0x5a686d7c : (None, 'chat_invite_already', None), # 1516793212 86 | 0xd8aa840f : (None, 'input_group_call', None), # -659913713 87 | 0x8987f311 : (None, 'help_app_update', None), # -1987579119 88 | 0xc45a6536 : (None, 'help_no_app_update', None), # -1000708810 89 | 0x3b5a3e40 : (None, 'channel_admin_log_event', None), # 995769920 90 | 0x9e8fa6d3 : (None, 'messages_faved_stickers_not_modified', None), # -1634752813 91 | 0xf37f2f16 : (None, 'messages_faved_stickers', None), # -209768682 92 | 0x117698f1 : (None, 'lang_pack_language', None), # 292985073 93 | 0xdd6a8f48 : (None, 'send_message_game_play_action', None), # -580219064 94 | 0xd52f73f7 : (None, 'send_message_record_audio_action', None), # -718310409 95 | 0x92042ff7 : (None, 'send_message_upload_video_action_old', None), # -1845219337 96 | 0xe6ac8a6f : (None, 'send_message_upload_audio_action_old', None), # -424899985 97 | 0xf351d7ab : (None, 'send_message_upload_audio_action', None), # -212740181 98 | 0xd1d34a26 : (None, 'send_message_upload_photo_action', None), # -774682074 99 | 0x8faee98e : (None, 'send_message_upload_document_action_old', None), # -1884362354 100 | 0xe9763aec : (None, 'send_message_upload_video_action', None), # -378127636 101 | 0xfd5ec8f5 : (None, 'send_message_cancel_action', None), # -44119819 102 | 0x176f8ba1 : (None, 'send_message_geo_location_action', None), # 393186209 103 | 0x628cbc6f : (None, 'send_message_choose_contact_action', None), # 1653390447 104 | 0x88f27fbc : (None, 'send_message_record_round_action', None), # -1997373508 105 | 0x243e1c66 : (None, 'send_message_upload_round_action', None), # 608050278 106 | 0x16bf744e : (None, 'send_message_typing_action', None), # 381645902 107 | 0x990a3c1a : (None, 'send_message_upload_photo_action_old', None), # -1727382502 108 | 0xaa0cd9e4 : (None, 'send_message_upload_document_action', None), # -1441998364 109 | 0xa187d66f : (None, 'send_message_record_video_action', None), # -1584933265 110 | 0x3dbb5986 : (None, 'auth_sent_code_type_app', None), # 1035688326 111 | 0x5353e5a7 : (None, 'auth_sent_code_type_call', None), # 1398007207 112 | 0xab03c6d9 : (None, 'auth_sent_code_type_flash_call', None), # -1425815847 113 | 0xc000bba2 : (None, 'auth_sent_code_type_sms', None), # -1073693790 114 | 0x38641628 : (None, 'messages_sticker_set_install_result_success', None), # 946083368 115 | 0x35e410a8 : (None, 'messages_sticker_set_install_result_archive', None), # 904138920 116 | 0x818426cd : (None, 'peer_settings', None), # -2122045747 117 | 0xfcaafeb7 : (None, 'input_dialog_peer', None), # -55902537 118 | 0x2c38b8cf : (None, 'input_dialog_peer_feed', None), # 741914831 119 | 0x9c750409 : (None, 'found_gif_cached', None), # -1670052855 120 | 0x162ecc1f : (None, 'found_gif', None), # 372165663 121 | 0x4e5f810d : (None, 'payments_payment_result', None), # 1314881805 122 | 0x6b56b921 : (None, 'payments_payment_verfication_needed', None), # 1800845601 123 | 0xed8af74d : (None, 'channels_admin_log_results', None), # -309659827 124 | 0xf392b7f4 : (None, 'input_phone_contact', None), # -208488460 125 | 0x4d5bbe0c : (None, 'privacy_value_allow_users', None), # 1297858060 126 | 0x8b73e763 : (None, 'privacy_value_disallow_all', None), # -1955338397 127 | 0xfffe1bac : (None, 'privacy_value_allow_contacts', None), # -123988 128 | 0xf888fa1a : (None, 'privacy_value_disallow_contacts', None), # -125240806 129 | 0x65427b82 : (None, 'privacy_value_allow_all', None), # 1698855810 130 | 0x0c7f49b7 : (None, 'privacy_value_disallow_users', None), # 209668535 131 | 0x29632a36 : (None, 'message_media_unsupported_old', None), # 694364726 132 | 0xc6b68300 : (None, 'message_media_audio_layer45', None), # -961117440 133 | 0xc8c45a2a : (None, 'message_media_photo_old', None), # -926655958 134 | 0x84551347 : (None, 'message_media_invoice', None), # -2074799289 135 | 0x9f84f49e : (None, 'message_media_unsupported', None), # -1618676578 136 | 0x3ded6320 : (None, 'message_media_empty', None), # 1038967584 137 | 0x2ec0533f : (None, 'message_media_venue', None), # 784356159 138 | 0x7912b71f : (None, 'message_media_venue_layer71', None), # 2031269663 139 | 0xa2d24290 : (None, 'message_media_video_old', None), # -1563278704 140 | 0x9cb070d7 : (None, 'message_media_document', None), # -1666158377 141 | 0x7c4414d3 : (None, 'message_media_document_layer74', None), # 2084836563 142 | 0x2fda2204 : (None, 'message_media_document_old', None), # 802824708 143 | 0xf3e02ea8 : (None, 'message_media_document_layer68', None), # -203411800 144 | 0x695150d7 : (None, 'message_media_photo', None), # 1766936791 145 | 0xb5223b0f : (None, 'message_media_photo_layer74', None), # -1256047857 146 | 0x7c3c2609 : (None, 'message_media_geo_live', None), # 2084316681 147 | 0xfdb19008 : (None, 'message_media_game', None), # -38694904 148 | 0x5e7d2f39 : (None, 'message_media_contact_layer81', None), # 1585262393 149 | 0x3d8ce53d : (None, 'message_media_photo_layer68', None), # 1032643901 150 | 0x5bcf1675 : (None, 'message_media_video_layer45', None), # 1540298357 151 | 0xcbf24940 : (None, 'message_media_contact', None), # -873313984 152 | 0x56e0d474 : (None, 'message_media_geo', None), # 1457575028 153 | 0xa32dd600 : (None, 'message_media_web_page', None), # -1557277184 154 | 0x6c47ac9f : (None, 'lang_pack_string_pluralized', None), # 1816636575 155 | 0xcad181f6 : (None, 'lang_pack_string', None), # -892239370 156 | 0x2979eeb2 : (None, 'lang_pack_string_deleted', None), # 695856818 157 | 0x38faab5f : (None, 'auth_sent_code', None), # 955951967 158 | 0x11965f3a : (None, 'bot_inline_result', None), # 295067450 159 | 0x17db940b : (None, 'bot_inline_media_result', None), # 400266251 160 | 0x9acda4c0 : (None, 'peer_notify_settings_layer77', None), # -1697798976 161 | 0xaf509d20 : (None, 'peer_notify_settings', None), # -1353671392 162 | 0x8d5e11ee : (None, 'peer_notify_settings_layer47', None), # -1923214866 163 | 0x70a68512 : (None, 'peer_notify_settings_empty_layer77', None), # 1889961234 164 | 0x1c138d15 : (None, 'contacts_blocked', None), # 471043349 165 | 0x900802a1 : (None, 'contacts_blocked_slice', None), # -1878523231 166 | 0x067872e8 : (None, 'input_secure_value', None), # 108557032 167 | 0xc0e24635 : (None, 'messages_dh_config_not_modified', None), # -1058912715 168 | 0x2c221edd : (None, 'messages_dh_config', None), # 740433629 169 | 0xed1ecdb0 : (None, 'secure_value_hash', None), # -316748368 170 | 0xb60a24a6 : (None, 'messages_sticker_set', None), # -1240849242 171 | 0xf3b7acc9 : (None, 'input_geo_point', None), # -206066487 172 | 0xe4c123d6 : (None, 'input_geo_point_empty', None), # -457104426 173 | 0x18cb9f78 : (None, 'help_invite_text', None), # 415997816 174 | 0x586988d8 : (None, 'audio_empty_layer45', None), # 1483311320 175 | 0xf9e35055 : (None, 'audio_layer45', None), # -102543275 176 | 0x427425e7 : (None, 'audio_old', None), # 1114908135 177 | 0x555555f6 : (None, 'audio_encrypted', None), # 1431655926 178 | 0xc7ac6496 : (None, 'audio_old2', None), # -945003370 179 | 0xbb2e37ce : (None, 'bot_info_empty_layer48', None), # -1154598962 180 | 0x98e81d3a : (None, 'bot_info', None), # -1729618630 181 | 0x09cf585d : (None, 'bot_info_layer48', None), # 164583517 182 | 0xc331e80a : (None, 'input_game_short_name', None), # -1020139510 183 | 0x032c3e77 : (None, 'input_game_i_d', None), # 53231223 184 | 0x48a30254 : (None, 'reply_inline_markup', None), # 1218642516 185 | 0xa03e5b85 : (None, 'reply_keyboard_hide', None), # -1606526075 186 | 0xf4108aa0 : (None, 'reply_keyboard_force_reply', None), # -200242528 187 | 0x3502758c : (None, 'reply_keyboard_markup', None), # 889353612 188 | 0xb74ba9d2 : (None, 'contacts_contacts_not_modified', None), # -1219778094 189 | 0xeae87e42 : (None, 'contacts_contacts', None), # -353862078 190 | 0xbdfb0426 : (None, 'input_privacy_key_chat_invite', None), # -1107622874 191 | 0x4f96cb18 : (None, 'input_privacy_key_status_timestamp', None), # 1335282456 192 | 0xfabadc5f : (None, 'input_privacy_key_phone_call', None), # -88417185 193 | 0x8dca6aa5 : (None, 'photos_photos', None), # -1916114267 194 | 0x15051f54 : (None, 'photos_photos_slice', None), # 352657236 195 | 0x2e02a614 : (None, 'chat_full', None), # 771925524 196 | 0xcbb62890 : (None, 'channel_full', None), # -877254512 197 | 0x76af5481 : (None, 'channel_full_layer72', None), # 1991201921 198 | 0x17f45fcf : (None, 'channel_full_layer71', None), # 401891279 199 | 0x95cb5f57 : (None, 'channel_full_layer70', None), # -1781833897 200 | 0x97bee562 : (None, 'channel_full_layer52', None), # -1749097118 201 | 0xc3d5512f : (None, 'channel_full_layer67', None), # -1009430225 202 | 0x9e341ddf : (None, 'channel_full_layer48', None), # -1640751649 203 | 0xfab31aa3 : (None, 'channel_full_old', None), # -88925533 204 | 0x9c3d198e : (None, 'input_peer_notify_settings', None), # -1673717362 205 | 0x56730bcc : (None, 'null', None), # 1450380236 206 | 0x556ec7aa : (None, 'page_full', None), # 1433323434 207 | 0x8dee6c44 : (None, 'page_part_layer67', None), # -1913754556 208 | 0xd7a19d69 : (None, 'page_full_layer67', None), # -677274263 209 | 0x8e3f9ebe : (None, 'page_part', None), # -1908433218 210 | 0xfb834291 : (None, 'top_peer_category_peers', None), # -75283823 211 | 0xb98886cf : (None, 'input_user_empty', None), # -1182234929 212 | 0xf7c1b13f : (None, 'input_user_self', None), # -138301121 213 | 0xd8292816 : (None, 'input_user', None), # -668391402 214 | 0xb16a6c29 : (None, 'keyboard_button_request_phone', None), # -1318425559 215 | 0x50f41ccf : (None, 'keyboard_button_game', None), # 1358175439 216 | 0x258aff05 : (None, 'keyboard_button_url', None), # 629866245 217 | 0x0568a748 : (None, 'keyboard_button_switch_inline', None), # 90744648 218 | 0xfc796b3f : (None, 'keyboard_button_request_geo_location', None), # -59151553 219 | 0xafd93fbb : (None, 'keyboard_button_buy', None), # -1344716869 220 | 0x683a5e46 : (None, 'keyboard_button_callback', None), # 1748655686 221 | 0xa2fa4880 : (None, 'keyboard_button', None), # -1560655744 222 | 0x4366232e : (None, 'bot_inline_message_media_venue_layer77', None), # 1130767150 223 | 0x8a86659c : (None, 'bot_inline_message_media_venue', None), # -1970903652 224 | 0x3a8fd8b8 : (None, 'bot_inline_message_media_geo_layer71', None), # 982505656 225 | 0x764cf810 : (None, 'bot_inline_message_media_auto', None), # 1984755728 226 | 0x0a74b15b : (None, 'bot_inline_message_media_auto_layer74', None), # 175419739 227 | 0x35edb4d4 : (None, 'bot_inline_message_media_contact_layer81', None), # 904770772 228 | 0x18d1cdc2 : (None, 'bot_inline_message_media_contact', None), # 416402882 229 | 0x8c7f65e2 : (None, 'bot_inline_message_text', None), # -1937807902 230 | 0xb722de65 : (None, 'bot_inline_message_media_geo', None), # -1222451611 231 | 0x77608b83 : (None, 'keyboard_button_row', None), # 2002815875 232 | 0x997275b5 : (None, 'bool_true', None), # -1720552011 233 | 0xbc799737 : (None, 'bool_false', None), # -1132882121 234 | 0xdf969c2d : (None, 'auth_exported_authorization', None), # -543777747 235 | 0x5f07b4bc : (None, 'web_page', None), # 1594340540 236 | 0xa31ea0b5 : (None, 'web_page_old', None), # -1558273867 237 | 0xeb1477e8 : (None, 'web_page_empty', None), # -350980120 238 | 0xd41a5167 : (None, 'web_page_url_pending', None), # -736472729 239 | 0xc586da1c : (None, 'web_page_pending', None), # -981018084 240 | 0x85849473 : (None, 'web_page_not_modified', None), # -2054908813 241 | 0xca820ed7 : (None, 'web_page_layer58', None), # -897446185 242 | 0xf89d88e5 : (None, 'messages_featured_stickers', None), # -123893531 243 | 0x04ede3cf : (None, 'messages_featured_stickers_not_modified', None), # 82699215 244 | 0x00be3dfa : (None, 'secure_value_error_front_side', None), # 12467706 245 | 0x868a2aa5 : (None, 'secure_value_error_reverse_side', None), # -2037765467 246 | 0x666220e9 : (None, 'secure_value_error_files', None), # 1717706985 247 | 0xe537ced6 : (None, 'secure_value_error_selfie', None), # -449327402 248 | 0x7a700873 : (None, 'secure_value_error_file', None), # 2054162547 249 | 0xe8a40bd9 : (None, 'secure_value_error_data', None), # -391902247 250 | 0xb4b4b699 : (None, 'secure_value', None), # -1263225191 251 | 0x6737ffb7 : (None, 'phone_group_call', None), # 1731723191 252 | 0x57adc690 : (None, 'phone_call_discard_reason_hangup', None), # 1471006352 253 | 0xfaf7e8c9 : (None, 'phone_call_discard_reason_busy', None), # -84416311 254 | 0xafe2b839 : (None, 'phone_call_discard_reason_allow_group_call', None), # -1344096199 255 | 0x85e42301 : (None, 'phone_call_discard_reason_missed', None), # -2048646399 256 | 0xe095c1a0 : (None, 'phone_call_discard_reason_disconnect', None), # -527056480 257 | 0x137948a5 : (None, 'auth_password_recovery', None), # 326715557 258 | 0xc27ac8c7 : (None, 'bot_command', None), # -1032140601 259 | 0x4a95e84e : (None, 'input_notify_chats', None), # 1251338318 260 | 0xb8bc5b0c : (None, 'input_notify_peer', None), # -1195615476 261 | 0x193b4417 : (None, 'input_notify_users', None), # 423314455 262 | 0xf5235d55 : (None, 'input_encrypted_file_location', None), # -182231723 263 | 0x4e45abe9 : (None, 'input_document_file_location', None), # 1313188841 264 | 0x14637196 : (None, 'input_file_location', None), # 342061462 265 | 0x20212ca8 : (None, 'photos_photo', None), # 539045032 266 | 0x28ecf961 : (None, 'help_terms_of_service_update', None), # 686618977 267 | 0xe3309f7f : (None, 'help_terms_of_service_update_empty', None), # -483352705 268 | 0x83761ce4 : (None, 'phone_call_requested', None), # -2089411356 269 | 0xffe6ab67 : (None, 'phone_call', None), # -1660057 270 | 0x5366c915 : (None, 'phone_call_empty', None), # 1399245077 271 | 0x6d003d3f : (None, 'phone_call_accepted', None), # 1828732223 272 | 0x1b8f4ad1 : (None, 'phone_call_waiting', None), # 462375633 273 | 0x50ca4de1 : (None, 'phone_call_discarded', None), # 1355435489 274 | 0xcab35e18 : (None, 'user_contact_old2', None), # -894214632 275 | 0xf2fb8319 : (None, 'user_contact_old', None), # -218397927 276 | 0x2e13f4c3 : (None, 'user', None), # 773059779 277 | 0x720535ec : (None, 'user_self_old', None), # 1912944108 278 | 0x1c60e608 : (None, 'user_self_old3', None), # 476112392 279 | 0xd6016d7a : (None, 'user_deleted_old2', None), # -704549510 280 | 0x200250ba : (None, 'user_empty', None), # 537022650 281 | 0x22e8ceb0 : (None, 'user_request_old', None), # 585682608 282 | 0x5214c89d : (None, 'user_foreign_old', None), # 1377093789 283 | 0x075cf7a8 : (None, 'user_foreign_old2', None), # 123533224 284 | 0xd9ccc4ef : (None, 'user_request_old2', None), # -640891665 285 | 0xb29ad7cc : (None, 'user_deleted_old', None), # -1298475060 286 | 0xd10d979a : (None, 'user_layer65', None), # -787638374 287 | 0x22e49072 : (None, 'user_old', None), # 585404530 288 | 0x7007b451 : (None, 'user_self_old2', None), # 1879553105 289 | 0xa01b22f9 : (None, 'recent_me_url_chat', None), # -1608834311 290 | 0xbc0a57dc : (None, 'recent_me_url_sticker_set', None), # -1140172836 291 | 0x46e1d13d : (None, 'recent_me_url_unknown', None), # 1189204285 292 | 0xeb49081d : (None, 'recent_me_url_chat_invite', None), # -347535331 293 | 0x8dbc3336 : (None, 'recent_me_url_user', None), # -1917045962 294 | 0x9a3bfd99 : (None, 'messages_high_scores', None), # -1707344487 295 | 0xec82e140 : (None, 'phone_phone_call', None), # -326966976 296 | 0xb4608969 : (None, 'channel_participants_admins', None), # -1268741783 297 | 0xde3f3c79 : (None, 'channel_participants_recent', None), # -566281095 298 | 0xa3b54985 : (None, 'channel_participants_kicked', None), # -1548400251 299 | 0x0656ac4b : (None, 'channel_participants_search', None), # 106343499 300 | 0xb0d1865b : (None, 'channel_participants_bots', None), # -1328445861 301 | 0x1427a5e1 : (None, 'channel_participants_banned', None), # 338142689 302 | 0x555555f5 : (None, 'message_action_login_unknown_location', None), # 1431655925 303 | 0x555555f7 : (None, 'message_encrypted_action', None), # 1431655927 304 | 0xfae69f56 : (None, 'message_action_custom_action', None), # -85549226 305 | 0xa6638b9a : (None, 'message_action_chat_create', None), # -1503425638 306 | 0x7a0d7f42 : (None, 'message_action_group_call', None), # 2047704898 307 | 0x51bdb021 : (None, 'message_action_chat_migrate_to', None), # 1371385889 308 | 0x9fbab604 : (None, 'message_action_history_clear', None), # -1615153660 309 | 0x7fcb13a8 : (None, 'message_action_chat_edit_photo', None), # 2144015272 310 | 0x4792929b : (None, 'message_action_screenshot_taken', None), # 1200788123 311 | 0xb055eaee : (None, 'message_action_channel_migrate_from', None), # -1336546578 312 | 0x488a7337 : (None, 'message_action_chat_add_user', None), # 1217033015 313 | 0xb2ae9b0c : (None, 'message_action_chat_delete_user', None), # -1297179892 314 | 0x55555557 : (None, 'message_action_created_broadcast_list', None), # 1431655767 315 | 0x55555550 : (None, 'message_action_user_joined', None), # 1431655760 316 | 0x55555551 : (None, 'message_action_user_updated_photo', None), # 1431655761 317 | 0x5e3cfc4b : (None, 'message_action_chat_add_user_old', None), # 1581055051 318 | 0x55555552 : (None, 'message_action_t_t_l_change', None), # 1431655762 319 | 0xf89cf5e8 : (None, 'message_action_chat_joined_by_link', None), # -123931160 320 | 0x95d2ac92 : (None, 'message_action_channel_create', None), # -1781355374 321 | 0xd95c6154 : (None, 'message_action_secure_values_sent', None), # -648257196 322 | 0x94bd38ed : (None, 'message_action_pin_message', None), # -1799538451 323 | 0x95e3fbef : (None, 'message_action_chat_delete_photo', None), # -1780220945 324 | 0x80e11a7f : (None, 'message_action_phone_call', None), # -2132731265 325 | 0xb5a1ce5a : (None, 'message_action_chat_edit_title', None), # -1247687078 326 | 0x40699cd0 : (None, 'message_action_payment_sent', None), # 1080663248 327 | 0xabe9affe : (None, 'message_action_bot_allowed', None), # -1410748418 328 | 0xb6aef7b0 : (None, 'message_action_empty', None), # -1230047312 329 | 0x92a72876 : (None, 'message_action_game_score', None), # -1834538890 330 | 0x58dbcab8 : (None, 'input_report_reason_spam', None), # 1490799288 331 | 0x1e22c78d : (None, 'input_report_reason_violence', None), # 505595789 332 | 0xe1746d0a : (None, 'input_report_reason_other', None), # -512463606 333 | 0x2e59d922 : (None, 'input_report_reason_pornography', None), # 777640226 334 | 0x4fcba9c8 : (None, 'messages_archived_stickers', None), # 1338747336 335 | 0x3631cf4c : (None, 'chat_located', None), # 909233996 336 | 0x204d3878 : (None, 'decrypted_message_layer17', None), # 541931640 337 | 0x73164160 : (None, 'decrypted_message_service', None), # 1930838368 338 | 0xaa48327d : (None, 'decrypted_message_service_layer8', None), # -1438109059 339 | 0x1f814f1f : (None, 'decrypted_message_layer8', None), # 528568095 340 | 0x91cc4674 : (None, 'decrypted_message', None), # -1848883596 341 | 0x36b091de : (None, 'decrypted_message_layer45', None), # 917541342 342 | 0xc30aa358 : (None, 'invoice', None), # -1022713000 343 | 0x9bed434d : (None, 'input_web_document', None), # -1678949555 344 | 0xee9f4a4d : (None, 'video_old3', None), # -291550643 345 | 0xf72887d3 : (None, 'video_layer45', None), # -148338733 346 | 0x55555553 : (None, 'video_encrypted', None), # 1431655763 347 | 0x5a04a49f : (None, 'video_old', None), # 1510253727 348 | 0x388fa391 : (None, 'video_old2', None), # 948937617 349 | 0xc10658a8 : (None, 'video_empty_layer45', None), # -1056548696 350 | 0x3417d728 : (None, 'input_payment_credentials', None), # 873977640 351 | 0xca05d50e : (None, 'input_payment_credentials_android_pay', None), # -905587442 352 | 0xc10eb2cf : (None, 'input_payment_credentials_saved', None), # -1056001329 353 | 0x5dab1af4 : (None, 'exported_message_link', None), # 1571494644 354 | 0x0637b7ed : (None, 'top_peer_category_correspondents', None), # 104314861 355 | 0xbd17a14a : (None, 'top_peer_category_groups', None), # -1122524854 356 | 0x148677e2 : (None, 'top_peer_category_bots_inline', None), # 344356834 357 | 0x161d9628 : (None, 'top_peer_category_channels', None), # 371037736 358 | 0x1e76a78c : (None, 'top_peer_category_phone_calls', None), # 511092620 359 | 0xab661b5b : (None, 'top_peer_category_bots_p_m', None), # -1419371685 360 | 0x561bc879 : (None, 'contact_blocked', None), # 1444661369 361 | 0xd1451883 : (None, 'payments_validated_requested_info', None), # -784000893 362 | 0xb6213cdf : (None, 'shipping_option', None), # -1239335713 363 | 0x72f0eaae : (None, 'input_document_empty', None), # 1928391342 364 | 0x18798952 : (None, 'input_document', None), # 410618194 365 | 0x770656a8 : (None, 'input_app_event', None), # 1996904104 366 | 0xcbe31e26 : (None, 'secure_value_type_address', None), # -874308058 367 | 0x99e3806a : (None, 'secure_value_type_passport_registration', None), # -1713143702 368 | 0xa0d0744b : (None, 'secure_value_type_identity_card', None), # -1596951477 369 | 0xfc36954e : (None, 'secure_value_type_utility_bill', None), # -63531698 370 | 0x89137c0d : (None, 'secure_value_type_bank_statement', None), # -1995211763 371 | 0x8e3ca7ee : (None, 'secure_value_type_email', None), # -1908627474 372 | 0x9d2a81e3 : (None, 'secure_value_type_personal_details', None), # -1658158621 373 | 0xea02ec33 : (None, 'secure_value_type_temporary_registration', None), # -368907213 374 | 0x3dac6a00 : (None, 'secure_value_type_passport', None), # 1034709504 375 | 0x8b883488 : (None, 'secure_value_type_rental_agreement', None), # -1954007928 376 | 0x06e425c4 : (None, 'secure_value_type_driver_license', None), # 115615172 377 | 0xb320aadb : (None, 'secure_value_type_phone', None), # -1289704741 378 | 0x99a48f23 : (None, 'secure_value_type_internal_passport', None), # -1717268701 379 | 0xb45c69d1 : (None, 'messages_affected_history', None), # -1269012015 380 | 0x87232bc7 : (None, 'document', None), # -2027738169 381 | 0x55555556 : (None, 'document_encrypted_old', None), # 1431655766 382 | 0x9efc6326 : (None, 'document_old', None), # -1627626714 383 | 0x36f8c871 : (None, 'document_empty', None), # 922273905 384 | 0x55555558 : (None, 'document_encrypted', None), # 1431655768 385 | 0xf9a39f4f : (None, 'document_layer53', None), # -106717361 386 | 0xfeedd3ad : (None, 'contact_link_none', None), # -17968211 387 | 0xd502c2d0 : (None, 'contact_link_contact', None), # -721239344 388 | 0x268f3f59 : (None, 'contact_link_has_phone', None), # 646922073 389 | 0x5f4f9247 : (None, 'contact_link_unknown', None), # 1599050311 390 | 0xdb20b188 : (None, 'page_block_divider', None), # -618614392 391 | 0xbaafe5e0 : (None, 'page_block_author_date', None), # -1162877472 392 | 0xc070d93e : (None, 'page_block_preformatted', None), # -1066346178 393 | 0xcde200d1 : (None, 'page_block_embed', None), # -840826671 394 | 0xce0d37b0 : (None, 'page_block_anchor', None), # -837994576 395 | 0xbfd064ec : (None, 'page_block_header', None), # -1076861716 396 | 0xd9d71866 : (None, 'page_block_video', None), # -640214938 397 | 0x13567e8a : (None, 'page_block_unsupported', None), # 324435594 398 | 0x467a0766 : (None, 'page_block_paragraph', None), # 1182402406 399 | 0x08b31c4f : (None, 'page_block_collage', None), # 145955919 400 | 0x48870999 : (None, 'page_block_footer', None), # 1216809369 401 | 0x3a58c7f4 : (None, 'page_block_list', None), # 978896884 402 | 0xd935d8fb : (None, 'page_block_embed_layer60', None), # -650782469 403 | 0xe9c69982 : (None, 'page_block_photo', None), # -372860542 404 | 0x8ffa9a1f : (None, 'page_block_subtitle', None), # -1879401953 405 | 0x263d7c26 : (None, 'page_block_blockquote', None), # 641563686 406 | 0x292c7be9 : (None, 'page_block_embed_post', None), # 690781161 407 | 0x70abc3fd : (None, 'page_block_title', None), # 1890305021 408 | 0xef1751b5 : (None, 'page_block_channel', None), # -283684427 409 | 0x39f23300 : (None, 'page_block_cover', None), # 972174080 410 | 0xf12bb6e1 : (None, 'page_block_subheader', None), # -248793375 411 | 0x130c8963 : (None, 'page_block_slideshow', None), # 319588707 412 | 0x4f4456d3 : (None, 'page_block_pullquote', None), # 1329878739 413 | 0x31b81a7f : (None, 'page_block_audio', None), # 834148991 414 | 0x90110467 : (None, 'input_privacy_value_disallow_users', None), # -1877932953 415 | 0xd66b66c9 : (None, 'input_privacy_value_disallow_all', None), # -697604407 416 | 0x0ba52007 : (None, 'input_privacy_value_disallow_contacts', None), # 195371015 417 | 0x184b35ce : (None, 'input_privacy_value_allow_all', None), # 407582158 418 | 0x0d09e07b : (None, 'input_privacy_value_allow_contacts', None), # 218751099 419 | 0x131cc67f : (None, 'input_privacy_value_allow_users', None), # 320652927 420 | 0xaed6dbb2 : (None, 'mask_coords', None), # -1361650766 421 | 0x58fffcd0 : (None, 'high_score', None), # 1493171408 422 | 0xf8ab7dfb : (None, 'input_media_contact', None), # -122978821 423 | 0x23ab23d2 : (None, 'input_media_document', None), # 598418386 424 | 0xd33f43f3 : (None, 'input_media_game', None), # -750828557 425 | 0x4843b0fd : (None, 'input_media_gif_external', None), # 1212395773 426 | 0xf9c44144 : (None, 'input_media_geo_point', None), # -104578748 427 | 0xfb52dc99 : (None, 'input_media_document_external', None), # -78455655 428 | 0x9664f57f : (None, 'input_media_empty', None), # -1771768449 429 | 0x1e287d04 : (None, 'input_media_uploaded_photo', None), # 505969924 430 | 0xc13d1c11 : (None, 'input_media_venue', None), # -1052959727 431 | 0x7b1a118f : (None, 'input_media_geo_live', None), # 2065305999 432 | 0x5b38c6c1 : (None, 'input_media_uploaded_document', None), # 1530447553 433 | 0xe5bbfe1a : (None, 'input_media_photo_external', None), # -440664550 434 | 0xb3ba0635 : (None, 'input_media_photo', None), # -1279654347 435 | 0x3407e51b : (None, 'sticker_set_multi_covered', None), # 872932635 436 | 0x6410a5d2 : (None, 'sticker_set_covered', None), # 1678812626 437 | 0x23734b06 : (None, 'encrypted_message_service', None), # 594758406 438 | 0xed18c118 : (None, 'encrypted_message', None), # -317144808 439 | 0xffb62b95 : (None, 'input_sticker_set_empty', None), # -4838507 440 | 0x9de7a269 : (None, 'input_sticker_set_i_d', None), # -1645763991 441 | 0x861cc8a0 : (None, 'input_sticker_set_short_name', None), # -2044933984 442 | 0xea107ae4 : (None, 'channel_admin_log_events_filter', None), # -368018716 443 | 0x008c703f : (None, 'user_status_offline', None), # 9203775 444 | 0x07bf09fc : (None, 'user_status_last_week', None), # 129960444 445 | 0x09d05049 : (None, 'user_status_empty', None), # 164646985 446 | 0x77ebc742 : (None, 'user_status_last_month', None), # 2011940674 447 | 0xedb93949 : (None, 'user_status_online', None), # -306628279 448 | 0xe26f42f1 : (None, 'user_status_recently', None), # -496024847 449 | 0x26b5dde6 : (None, 'messages_message_edit_data', None), # 649453030 450 | 0xe09e1fb8 : (None, 'help_proxy_data_empty', None), # -526508104 451 | 0x2bf7ee23 : (None, 'help_proxy_data_promo', None), # 737668643 452 | 0x77d01c3b : (None, 'contacts_imported_contacts', None), # 2010127419 453 | 0x3c20629f : (None, 'inline_bot_switch_p_m', None), # 1008755359 454 | 0xa20db0e5 : (None, 'update_delete_messages', None), # -1576161051 455 | 0x571d2742 : (None, 'update_read_featured_stickers', None), # 1461528386 456 | 0x6e947941 : (None, 'update_chat_admins', None), # 1855224129 457 | 0x1710f156 : (None, 'update_encrypted_chat_typing', None), # 386986326 458 | 0x62ba04d9 : (None, 'update_new_channel_message', None), # 1656358105 459 | 0x2f2f21bf : (None, 'update_read_history_outbox', None), # 791617983 460 | 0x19d27f3c : (None, 'update_dialog_pinned', None), # 433225532 461 | 0x12b9417b : (None, 'update_user_phone', None), # 314130811 462 | 0x4e90bfd6 : (None, 'update_message_i_d', None), # 1318109142 463 | 0x057eaec8 : (None, 'update_group_call_participant', None), # 92188360 464 | 0x25d6c9c7 : (None, 'update_read_channel_outbox', None), # 634833351 465 | 0x43ae3dec : (None, 'update_sticker_sets', None), # 1135492588 466 | 0x1f2b0afd : (None, 'update_new_message', None), # 522914557 467 | 0x12bcbd9a : (None, 'update_new_encrypted_message', None), # 314359194 468 | 0x1bfbd823 : (None, 'update_user_status', None), # 469489699 469 | 0x98a12b4b : (None, 'update_channel_message_views', None), # -1734268085 470 | 0xbec268ef : (None, 'update_notify_settings', None), # -1094555409 471 | 0x2575bbb9 : (None, 'update_contact_registered', None), # 628472761 472 | 0x6e5f8c22 : (None, 'update_chat_participant_delete', None), # 1851755554 473 | 0xe40370a3 : (None, 'update_edit_message', None), # -469536605 474 | 0x7f891213 : (None, 'update_web_page', None), # 2139689491 475 | 0xe511996d : (None, 'update_faved_stickers', None), # -451831443 476 | 0xea4b0e5c : (None, 'update_chat_participant_add', None), # -364179876 477 | 0x9a65ea1f : (None, 'update_chat_user_typing', None), # -1704596961 478 | 0xb4a2e88d : (None, 'update_encryption', None), # -1264392051 479 | 0x85fe86ed : (None, 'update_group_call', None), # -2046916883 480 | 0xeb0467fb : (None, 'update_channel_too_long', None), # -352032773 481 | 0x5c486927 : (None, 'update_user_typing', None), # 1548249383 482 | 0xebe46819 : (None, 'update_service_notification', None), # -337352679 483 | 0x98592475 : (None, 'update_channel_pinned_message', None), # -1738988427 484 | 0x56022f4d : (None, 'update_lang_pack', None), # 1442983757 485 | 0xb6901959 : (None, 'update_chat_participant_admin', None), # -1232070311 486 | 0x89893b45 : (None, 'update_channel_read_messages_contents', None), # -1987495099 487 | 0xee3b272a : (None, 'update_privacy', None), # -298113238 488 | 0xa229dd06 : (None, 'update_config', None), # -1574314746 489 | 0xee2bb969 : (None, 'update_draft_message', None), # -299124375 490 | 0xa7332b73 : (None, 'update_user_name', None), # -1489818765 491 | 0x70db6837 : (None, 'update_channel_available_messages', None), # 1893427255 492 | 0xe16459c3 : (None, 'update_dialog_unread_mark', None), # -513517117 493 | 0xab0f6b1e : (None, 'update_phone_call', None), # -1425052898 494 | 0xea4cb65b : (None, 'update_pinned_dialogs', None), # -364071333 495 | 0x9a422c20 : (None, 'update_recent_stickers', None), # -1706939360 496 | 0x9961fd5c : (None, 'update_read_history_inbox', None), # -1721631396 497 | 0x9d2e67c5 : (None, 'update_contact_link', None), # -1657903163 498 | 0x9375341e : (None, 'update_saved_gifs', None), # -1821035490 499 | 0x7084a7be : (None, 'update_contacts_reset', None), # 1887741886 500 | 0xb6d45656 : (None, 'update_channel', None), # -1227598250 501 | 0x40771900 : (None, 'update_channel_web_page', None), # 1081547008 502 | 0xc37521c9 : (None, 'update_delete_channel_messages', None), # -1015733815 503 | 0x95313b0c : (None, 'update_user_photo', None), # -1791935732 504 | 0x8e5e9873 : (None, 'update_dc_options', None), # -1906403213 505 | 0x1b3f4df7 : (None, 'update_edit_channel_message', None), # 457133559 506 | 0x80ece81a : (None, 'update_user_blocked', None), # -2131957734 507 | 0x688a30aa : (None, 'update_new_sticker_set', None), # 1753886890 508 | 0x10c2404b : (None, 'update_lang_pack_too_long', None), # 281165899 509 | 0x38fe25b7 : (None, 'update_encrypted_messages_read', None), # 956179895 510 | 0x0bb2d201 : (None, 'update_sticker_sets_order', None), # 196268545 511 | 0x4214f37f : (None, 'update_read_channel_inbox', None), # 1108669311 512 | 0x68c13933 : (None, 'update_read_messages_contents', None), # 1757493555 513 | 0x07761198 : (None, 'update_chat_participants', None), # 125178264 514 | 0xa384b779 : (None, 'received_notify_message', None), # -1551583367 515 | 0x5a17b5e5 : (None, 'input_encrypted_file', None), # 1511503333 516 | 0x2dc173c8 : (None, 'input_encrypted_file_big_uploaded', None), # 767652808 517 | 0x1837c364 : (None, 'input_encrypted_file_empty', None), # 406307684 518 | 0x64bd0306 : (None, 'input_encrypted_file_uploaded', None), # 1690108678 519 | 0xedfd405f : (None, 'messages_all_stickers', None), # -302170017 520 | 0xe86602c3 : (None, 'messages_all_stickers_not_modified', None), # -395967805 521 | 0xa1733aec : (None, 'decrypted_message_action_set_message_t_t_l', None), # -1586283796 522 | 0xf3048883 : (None, 'decrypted_message_action_notify_layer', None), # -217806717 523 | 0x65614304 : (None, 'decrypted_message_action_delete_messages', None), # 1700872964 524 | 0xec2e0b9b : (None, 'decrypted_message_action_commit_key', None), # -332526693 525 | 0xdd05ec6b : (None, 'decrypted_message_action_abort_key', None), # -586814357 526 | 0x6719e45c : (None, 'decrypted_message_action_flush_history', None), # 1729750108 527 | 0xccb27641 : (None, 'decrypted_message_action_typing', None), # -860719551 528 | 0x6fe1735b : (None, 'decrypted_message_action_accept_key', None), # 1877046107 529 | 0x0c4f40be : (None, 'decrypted_message_action_read_messages', None), # 206520510 530 | 0x511110b0 : (None, 'decrypted_message_action_resend', None), # 1360072880 531 | 0xf3c9611b : (None, 'decrypted_message_action_request_key', None), # -204906213 532 | 0x8ac1f475 : (None, 'decrypted_message_action_screenshot_messages', None), # -1967000459 533 | 0xa82fdd63 : (None, 'decrypted_message_action_noop', None), # -1473258141 534 | 0xca39b447 : (None, 'account_password', None), # -902187961 535 | 0x5ea182f6 : (None, 'account_no_password', None), # 1587643126 536 | 0x4f11bae1 : (None, 'user_profile_photo_empty', None), # 1326562017 537 | 0xd559d8c8 : (None, 'user_profile_photo', None), # -715532088 538 | 0x990d1493 : (None, 'user_profile_photo_old', None), # -1727196013 539 | 0x76a6d327 : (None, 'message_entity_text_url', None), # 1990644519 540 | 0x6cef8ac7 : (None, 'message_entity_bot_command', None), # 1827637959 541 | 0x64e475c2 : (None, 'message_entity_email', None), # 1692693954 542 | 0x73924be0 : (None, 'message_entity_pre', None), # 1938967520 543 | 0xbb92ba95 : (None, 'message_entity_unknown', None), # -1148011883 544 | 0x6ed02538 : (None, 'message_entity_url', None), # 1859134776 545 | 0x826f8b60 : (None, 'message_entity_italic', None), # -2106619040 546 | 0xfa04579d : (None, 'message_entity_mention', None), # -100378723 547 | 0x352dca58 : (None, 'message_entity_mention_name', None), # 892193368 548 | 0x208e68c9 : (None, 'input_message_entity_mention_name', None), # 546203849 549 | 0x4c4e743f : (None, 'message_entity_cashtag', None), # 1280209983 550 | 0xbd610bc9 : (None, 'message_entity_bold', None), # -1117713463 551 | 0x6f635b0d : (None, 'message_entity_hashtag', None), # 1868782349 552 | 0x28a20571 : (None, 'message_entity_code', None), # 681706865 553 | 0x9b69e34b : (None, 'message_entity_phone', None), # -1687559349 554 | 0x22b56751 : (None, 'photo_old', None), # 582313809 555 | 0x9288dd29 : (None, 'photo', None), # -1836524247 556 | 0xc3838076 : (None, 'photo_old2', None), # -1014792074 557 | 0xcded42fe : (None, 'photo_layer55', None), # -840088834 558 | 0x2331b22d : (None, 'photo_empty', None), # 590459437 559 | 0xfda9a7b7 : (None, 'encrypted_chat_requested_old', None), # -39213129 560 | 0xc878527e : (None, 'encrypted_chat_requested', None), # -931638658 561 | 0xfa56ce36 : (None, 'encrypted_chat', None), # -94974410 562 | 0x6601d14f : (None, 'encrypted_chat_old', None), # 1711395151 563 | 0xab7ec0a0 : (None, 'encrypted_chat_empty', None), # -1417756512 564 | 0x3bf703dc : (None, 'encrypted_chat_waiting', None), # 1006044124 565 | 0x13d6dd27 : (None, 'encrypted_chat_discarded', None), # 332848423 566 | 0x0d54b65d : (None, 'messages_found_sticker_sets_not_modified', None), # 223655517 567 | 0x5108d648 : (None, 'messages_found_sticker_sets', None), # 1359533640 568 | 0xf911c994 : (None, 'contact', None), # -116274796 569 | 0x40732163 : (None, 'group_call_connection', None), # 1081287011 570 | 0x8aeabec3 : (None, 'secure_data', None), # -1964327229 571 | 0x3213dbba : (None, 'config', None), # 840162234 572 | 0x70b772a8 : (None, 'contacts_top_peers', None), # 1891070632 573 | 0xb52c939d : (None, 'contacts_top_peers_disabled', None), # -1255369827 574 | 0xde266ef5 : (None, 'contacts_top_peers_not_modified', None), # -567906571 575 | 0x17c6b5f6 : (None, 'help_support', None), # 398898678 576 | 0xdb64fd34 : (None, 'account_tmp_password', None), # -614138572 577 | 0x64ff9fd5 : (None, 'messages_chats', None), # 1694474197 578 | 0x9cd81144 : (None, 'messages_chats_slice', None), # -1663561404 579 | 0xee8c1e86 : (None, 'input_channel_empty', None), # -292807034 580 | 0xafeb712e : (None, 'input_channel', None), # -1343524562 581 | 0x0ae30253 : (None, 'message_range', None), # 182649427 582 | 0xccd3563d : (None, 'messages_bot_results_layer71', None), # -858565059 583 | 0x947ca848 : (None, 'messages_bot_results', None), # -1803769784 584 | 0x9d4c17c0 : (None, 'phone_connection', None), # -1655957568 585 | 0x890c3d89 : (None, 'input_bot_inline_message_i_d', None), # -1995686519 586 | 0x21ec5a5f : (None, 'secure_plain_email', None), # 569137759 587 | 0x7d6099dd : (None, 'secure_plain_phone', None), # 2103482845 588 | 0x450a1c0a : (None, 'messages_found_gifs', None), # 1158290442 589 | 0x3e11affb : (None, 'updates_channel_difference_empty', None), # 1041346555 590 | 0x2064674e : (None, 'updates_channel_difference', None), # 543450958 591 | 0x6a9d7b35 : (None, 'updates_channel_difference_too_long', None), # 1788705589 592 | 0xcb976d53 : (None, 'account_authorization_form', None), # -879268525 593 | 0x0e0310d7 : (None, 'help_recent_me_urls', None), # 235081943 594 | 0x94d42ee7 : (None, 'channel_messages_filter_empty', None), # -1798033689 595 | 0xcd77d957 : (None, 'channel_messages_filter', None), # -847783593 596 | 0x7f077ad9 : (None, 'contacts_resolved_peer', None), # 2131196633 597 | 0x1cc6e91f : (None, 'input_single_media', None), # 482797855 598 | 0x1e36fded : (None, 'input_phone_call', None), # 506920429 599 | 0xf9c8bcc6 : (None, 'web_document_no_proxy', None), # -104284986 600 | 0xc61acbd8 : (None, 'web_document_layer81', None), # -971322408 601 | 0x1c570ed1 : (None, 'web_document', None), # 475467473 602 | 0x222c1886 : (None, 'channel_participant_banned', None), # 573315206 603 | 0xe3e2e1f9 : (None, 'channel_participant_creator', None), # -471670279 604 | 0x15ebac1d : (None, 'channel_participant', None), # 367766557 605 | 0x8cc5e69a : (None, 'channel_participant_kicked_layer67', None), # -1933187430 606 | 0xa3289a6d : (None, 'channel_participant_self', None), # -1557620115 607 | 0x91057fef : (None, 'channel_participant_moderator_layer67', None), # -1861910545 608 | 0x98192d61 : (None, 'channel_participant_editor_layer67', None), # -1743180447 609 | 0xa82fa898 : (None, 'channel_participant_admin', None), # -1473271656 610 | 0x0438865b : (None, 'input_stickered_media_document', None), # 70813275 611 | 0x4a992157 : (None, 'input_stickered_media_photo', None), # 1251549527 612 | 0xf56ee2a8 : (None, 'channels_channel_participants', None), # -177282392 613 | 0xf0173fe9 : (None, 'channels_channel_participants_not_modified', None), # -266911767 614 | 0xb3134d9d : (None, 'contacts_found', None), # -1290580579 615 | 0xfc900c2b : (None, 'chat_participants_forbidden', None), # -57668565 616 | 0x3f460fed : (None, 'chat_participants', None), # 1061556205 617 | 0x7841b415 : (None, 'chat_participants_old', None), # 2017571861 618 | 0x0fd2bb8a : (None, 'chat_participants_forbidden_old', None), # 265468810 619 | 0xbdf9653b : (None, 'game', None), # -1107729093 620 | 0x57e0a9cb : (None, 'decrypted_message_media_audio', None), # 1474341323 621 | 0x35480a59 : (None, 'decrypted_message_media_geo_point', None), # 893913689 622 | 0x588a0a97 : (None, 'decrypted_message_media_contact', None), # 1485441687 623 | 0x089f5c4a : (None, 'decrypted_message_media_empty', None), # 144661578 624 | 0x7afe8ae2 : (None, 'decrypted_message_media_document', None), # 2063502050 625 | 0xe50511d8 : (None, 'decrypted_message_media_web_page', None), # -452652584 626 | 0xf1fa8d78 : (None, 'decrypted_message_media_photo', None), # -235238024 627 | 0x970c8c0e : (None, 'decrypted_message_media_video', None), # -1760785394 628 | 0xb095434b : (None, 'decrypted_message_media_document_layer8', None), # -1332395189 629 | 0x4cee6ef3 : (None, 'decrypted_message_media_video_layer8', None), # 1290694387 630 | 0x8a0df56f : (None, 'decrypted_message_media_venue', None), # -1978796689 631 | 0xfa95b0dd : (None, 'decrypted_message_media_external_document', None), # -90853155 632 | 0x524a415d : (None, 'decrypted_message_media_video_layer17', None), # 1380598109 633 | 0x6080758f : (None, 'decrypted_message_media_audio_layer8', None), # 1619031439 634 | 0x32798a8c : (None, 'decrypted_message_media_photo_layer8', None), # 846826124 635 | 0xc8d7493e : (None, 'chat_participant', None), # -925415106 636 | 0xda13538a : (None, 'chat_participant_creator', None), # -636267638 637 | 0xe2d6e436 : (None, 'chat_participant_admin', None), # -489233354 638 | 0xcac943f2 : (None, 'web_authorization', None), # -892779534 639 | 0x3334b0f0 : (None, 'input_secure_file_uploaded', None), # 859091184 640 | 0x5367e5be : (None, 'input_secure_file', None), # 1399317950 641 | 0x1e8caaeb : (None, 'post_address', None), # 512535275 642 | 0x1b7907ae : (None, 'channel_admin_log_event_action_toggle_invites', None), # 460916654 643 | 0xe9e82c18 : (None, 'channel_admin_log_event_action_update_pinned', None), # -370660328 644 | 0x26ae0971 : (None, 'channel_admin_log_event_action_toggle_signatures', None), # 648939889 645 | 0x55188a2e : (None, 'channel_admin_log_event_action_change_about', None), # 1427671598 646 | 0x709b2405 : (None, 'channel_admin_log_event_action_edit_message', None), # 1889215493 647 | 0xd5676710 : (None, 'channel_admin_log_event_action_participant_toggle_admin', None), # -714643696 648 | 0xb1c3caa7 : (None, 'channel_admin_log_event_action_change_sticker_set', None), # -1312568665 649 | 0xe6dfb825 : (None, 'channel_admin_log_event_action_change_title', None), # -421545947 650 | 0x5f5c95f1 : (None, 'channel_admin_log_event_action_toggle_pre_history_hidden', None), # 1599903217 651 | 0x42e047bb : (None, 'channel_admin_log_event_action_delete_message', None), # 1121994683 652 | 0xe31c34d8 : (None, 'channel_admin_log_event_action_participant_invite', None), # -484690728 653 | 0xf89777f2 : (None, 'channel_admin_log_event_action_participant_leave', None), # -124291086 654 | 0x6a4afc38 : (None, 'channel_admin_log_event_action_change_username', None), # 1783299128 655 | 0xb82f55c3 : (None, 'channel_admin_log_event_action_change_photo', None), # -1204857405 656 | 0xe6d83d7e : (None, 'channel_admin_log_event_action_participant_toggle_ban', None), # -422036098 657 | 0x183040d3 : (None, 'channel_admin_log_event_action_participant_join', None), # 405815507 658 | 0x9f2221c9 : (None, 'input_web_file_geo_point_location', None), # -1625153079 659 | 0xc239d686 : (None, 'input_web_file_location', None), # -1036396922 660 | 0x811f854f : (None, 'account_sent_email_code', None), # -2128640689 661 | 0x5d7ceba5 : (None, 'channel_admin_rights', None), # 1568467877 662 | 0xfb0ccc41 : (None, 'chat_forbidden_old', None), # -83047359 663 | 0x7312bc48 : (None, 'chat_old2', None), # 1930607688 664 | 0x289da732 : (None, 'channel_forbidden', None), # 681420594 665 | 0x8537784f : (None, 'channel_forbidden_layer67', None), # -2059962289 666 | 0x4b1b7506 : (None, 'channel_layer48', None), # 1260090630 667 | 0x2d85832c : (None, 'channel_forbidden_layer52', None), # 763724588 668 | 0x07328bdb : (None, 'chat_forbidden', None), # 120753115 669 | 0xa14dca52 : (None, 'channel_layer67', None), # -1588737454 670 | 0x678e9587 : (None, 'channel_old', None), # 1737397639 671 | 0x6e9c9bc7 : (None, 'chat_old', None), # 1855757255 672 | 0x450b7115 : (None, 'channel_layer77', None), # 1158377749 673 | 0x0cb44b1c : (None, 'channel_layer72', None), # 213142300 674 | 0xc88974ac : (None, 'channel', None), # -930515796 675 | 0xd91cdd54 : (None, 'chat', None), # -652419756 676 | 0xa7a43b17 : (None, 'sticker_set_old', None), # -1482409193 677 | 0x5585a139 : (None, 'sticker_set', None), # 1434820921 678 | 0xcd303b41 : (None, 'sticker_set_layer75', None), # -852477119 679 | 0xaa963b05 : (None, 'storage_file_unknown', None), # -1432995067 680 | 0xb3cea0e4 : (None, 'storage_file_mp4', None), # -1278304028 681 | 0x1081464c : (None, 'storage_file_webp', None), # 276907596 682 | 0x0a4f63c0 : (None, 'storage_file_png', None), # 172975040 683 | 0xcae1aadf : (None, 'storage_file_gif', None), # -891180321 684 | 0xae1e508d : (None, 'storage_file_pdf', None), # -1373745011 685 | 0x528a0677 : (None, 'storage_file_mp3', None), # 1384777335 686 | 0x007efe0e : (None, 'storage_file_jpeg', None), # 8322574 687 | 0x4b09ebbc : (None, 'storage_file_mov', None), # 1258941372 688 | 0x40bc6f52 : (None, 'storage_file_partial', None), # 1086091090 689 | 0x72a3158c : (None, 'auth_code_type_sms', None), # 1923290508 690 | 0x741cd3e3 : (None, 'auth_code_type_call', None), # 1948046307 691 | 0x226ccefb : (None, 'auth_code_type_flash_call', None), # 577556219 692 | 0xffc86587 : (None, 'input_messages_filter_gif', None), # -3644025 693 | 0x3751b49e : (None, 'input_messages_filter_music', None), # 928101534 694 | 0x3a20ecb8 : (None, 'input_messages_filter_chat_photos', None), # 975236280 695 | 0x9609a51c : (None, 'input_messages_filter_photos', None), # -1777752804 696 | 0x7ef0dd87 : (None, 'input_messages_filter_url', None), # 2129714567 697 | 0x9eddf188 : (None, 'input_messages_filter_document', None), # -1629621880 698 | 0x56e9f0e4 : (None, 'input_messages_filter_photo_video', None), # 1458172132 699 | 0xd95e73bb : (None, 'input_messages_filter_photo_video_documents', None), # -648121413 700 | 0xe7026d0d : (None, 'input_messages_filter_geo', None), # -419271411 701 | 0xc1f8e69a : (None, 'input_messages_filter_my_mentions', None), # -1040652646 702 | 0x7a7c17a4 : (None, 'input_messages_filter_round_voice', None), # 2054952868 703 | 0x50f5c392 : (None, 'input_messages_filter_voice', None), # 1358283666 704 | 0xe062db83 : (None, 'input_messages_filter_contacts', None), # -530392189 705 | 0x9fc00e65 : (None, 'input_messages_filter_video', None), # -1614803355 706 | 0x80c99768 : (None, 'input_messages_filter_phone_calls', None), # -2134272152 707 | 0x57e2f66c : (None, 'input_messages_filter_empty', None), # 1474492012 708 | 0xb549da53 : (None, 'input_messages_filter_round_video', None), # -1253451181 709 | 0x3f4e0648 : (None, 'messages_message_empty', None), # 1062078024 710 | 0x33f0ea47 : (None, 'secure_credentials_encrypted', None), # 871426631 711 | 0xfadff4ac : (None, 'message_fwd_header_layer72', None), # -85986132 712 | 0x559ebe6d : (None, 'message_fwd_header', None), # 1436466797 713 | 0xc786ddcb : (None, 'message_fwd_header_layer68', None), # -947462709 714 | 0x53d69076 : (None, 'file_location', None), # 1406570614 715 | 0x55555554 : (None, 'file_encrypted_location', None), # 1431655764 716 | 0x7c596b46 : (None, 'file_location_unavailable', None), # 2086234950 717 | 0xe8025ca2 : (None, 'messages_saved_gifs_not_modified', None), # -402498398 718 | 0x2e0709a5 : (None, 'messages_saved_gifs', None), # 772213157 719 | 0x77bfb61b : (None, 'photo_size', None), # 2009052699 720 | 0x0e17e23c : (None, 'photo_size_empty', None), # 236446268 721 | 0xe9a734fa : (None, 'photo_cached_size', None), # -374917894 722 | 0xea879f95 : (None, 'contact_found', None), # -360210539 723 | 0xfc2e05bc : (None, 'chat_invite_exported', None), # -64092740 724 | 0x69df3769 : (None, 'chat_invite_empty', None), # 1776236393 725 | 0xfa4f0bb5 : (None, 'input_file_big', None), # -95482955 726 | 0xf52ff27f : (None, 'input_file', None), # -181407105 727 | 0xed56c9fc : (None, 'account_web_authorizations', None), # -313079300 728 | 0xa56c2a3e : (None, 'updates_state', None), # -1519637954 729 | 0x0f220f3f : (None, 'user_full', None), # 253890367 730 | 0x74ae4240 : (None, 'updates', None), # 1957577280 731 | 0x914fbf11 : (None, 'update_short_message', None), # -1857044719 732 | 0x11f1331c : (None, 'update_short_sent_message', None), # 301019932 733 | 0x78d4dec1 : (None, 'update_short', None), # 2027216577 734 | 0x16812688 : (None, 'update_short_chat_message', None), # 377562760 735 | 0x725b04c3 : (None, 'updates_combined', None), # 1918567619 736 | 0xccb03657 : (None, 'wall_paper', None), # -860866985 737 | 0x63117f24 : (None, 'wall_paper_solid', None), # 1662091044 738 | 0xcdc27a1f : (None, 'payment_saved_credentials_card', None), # -842892769 739 | 0x12b299d4 : (None, 'sticker_pack', None), # 313694676 740 | 0xf141b5e1 : (None, 'input_encrypted_chat', None), # -247351839 741 | 0x8953ad37 : (None, 'input_chat_photo', None), # -1991004873 742 | 0x1ca48f57 : (None, 'input_chat_photo_empty', None), # 480546647 743 | 0x927c55b4 : (None, 'input_chat_uploaded_photo', None), # -1837345356 744 | 0x8e1a1775 : (None, 'nearest_dc', None), # -1910892683 745 | 0xfb8fe43c : (None, 'payments_saved_info', None), # -74456004 746 | 0x1cd7bf0d : (None, 'input_photo_empty', None), # 483901197 747 | 0xfb95c6c4 : (None, 'input_photo', None), # -74070332 748 | 0xd0028438 : (None, 'imported_contact', None), # -805141448 749 | 0x22f3afb3 : (None, 'messages_recent_stickers', None), # 586395571 750 | 0x0b17f890 : (None, 'messages_recent_stickers_not_modified', None), # 186120336 751 | 0xb8d0afdf : (None, 'account_days_t_t_l', None), # -1194283041 752 | 0xf1749a22 : (None, 'messages_stickers_not_modified', None), # -244016606 753 | 0xe4599bbd : (None, 'messages_stickers', None), # -463889475 754 | 0x7b8e7de6 : (None, 'input_peer_user', None), # 2072935910 755 | 0x179be863 : (None, 'input_peer_chat', None), # 396093539 756 | 0x7f3b18ea : (None, 'input_peer_empty', None), # 2134579434 757 | 0x7da07ec9 : (None, 'input_peer_self', None), # 2107670217 758 | 0x20adaef8 : (None, 'input_peer_channel', None), # 548253432 759 | 0x21ffa60d : (None, 'account_password_input_settings', None), # 570402317 760 | 0x18b7a10d : (None, 'dc_option', None), # 414687501 761 | 0x1be31789 : (None, 'decrypted_message_layer', None), # 467867529 762 | 0x419b0df2 : (None, 'group_call_participant_left', None), # 1100680690 763 | 0x4f0b39b8 : (None, 'group_call_participant_admin', None), # 1326135736 764 | 0x589db397 : (None, 'group_call_participant', None), # 1486730135 765 | 0x377496f0 : (None, 'group_call_participant_invited', None), # 930387696 766 | 0x6242c773 : (None, 'file_hash', None), # 1648543603 767 | 0x3371c354 : (None, 'messages_peer_dialogs', None), # 863093588 768 | 0xedcdc05b : (None, 'top_peer', None), # -305282981 769 | 0x15ba6c40 : (None, 'messages_dialogs', None), # 364538944 770 | 0x71e094f3 : (None, 'messages_dialogs_slice', None), # 1910543603 771 | 0xf0e3e596 : (None, 'messages_dialogs_not_modified', None), # -253500010 772 | 0x1250abde : (None, 'account_authorizations', None), # 307276766 773 | 0x909c3f94 : (None, 'payment_requested_info', None), # -1868808300 774 | 0x6fe51dfb : (None, 'auth_check_phone', None), # 1877286395 775 | 0x86aef0ec : (None, 'auth_send_code', None), # -2035355412 776 | 0x1b067634 : (None, 'auth_sign_up', None), # 453408308 777 | 0xbcd51581 : (None, 'auth_sign_in', None), # -1126886015 778 | 0x5717da40 : (None, 'auth_log_out', None), # 1461180992 779 | 0x9fab0d1a : (None, 'auth_reset_authorizations', None), # -1616179942 780 | 0xe5bfffcd : (None, 'auth_export_authorization', None), # -440401971 781 | 0xe3ef9613 : (None, 'auth_import_authorization', None), # -470837741 782 | 0x5cbea590 : (None, 'account_register_device', None), # 1555998096 783 | 0x3076c4bf : (None, 'account_unregister_device', None), # 813089983 784 | 0x84be5b93 : (None, 'account_update_notify_settings', None), # -2067899501 785 | 0x12b3ad31 : (None, 'account_get_notify_settings', None), # 313765169 786 | 0xdb7e1747 : (None, 'account_reset_notify_settings', None), # -612493497 787 | 0x78515775 : (None, 'account_update_profile', None), # 2018596725 788 | 0x6628562c : (None, 'account_update_status', None), # 1713919532 789 | 0xc04cfac2 : (None, 'account_get_wall_papers', None), # -1068696894 790 | 0x0d91a548 : (None, 'users_get_users', None), # 227648840 791 | 0xae189d5f : (None, 'account_report_peer', None), # -1374118561 792 | 0xca30a5b1 : (None, 'users_get_full_user', None), # -902781519 793 | 0xc4a353ee : (None, 'contacts_get_statuses', None), # -995929106 794 | 0xc023849f : (None, 'contacts_get_contacts', None), # -1071414113 795 | 0x2c800be5 : (None, 'contacts_import_contacts', None), # 746589157 796 | 0x8e953744 : (None, 'contacts_delete_contact', None), # -1902823612 797 | 0x59ab389e : (None, 'contacts_delete_contacts', None), # 1504393374 798 | 0x332b49fc : (None, 'contacts_block', None), # 858475004 799 | 0xe54100bd : (None, 'contacts_unblock', None), # -448724803 800 | 0xf57c350f : (None, 'contacts_get_blocked', None), # -176409329 801 | 0x84e53737 : (None, 'contacts_export_card', None), # -2065352905 802 | 0x4fe196fe : (None, 'contacts_import_card', None), # 1340184318 803 | 0x879537f1 : (None, 'contacts_reset_saved', None), # -2020263951 804 | 0x8514bdda : (None, 'contacts_toggle_top_peers', None), # -2062238246 805 | 0x4222fa74 : (None, 'messages_get_messages', None), # 1109588596 806 | 0xb098aee6 : (None, 'messages_get_dialogs', None), # -1332171034 807 | 0xafa92846 : (None, 'messages_get_history', None), # -1347868602 808 | 0x8614ef68 : (None, 'messages_search', None), # -2045448344 809 | 0x2ca51fd1 : (None, 'help_get_terms_of_service_update', None), # 749019089 810 | 0xee72f79a : (None, 'help_accept_terms_of_service', None), # -294455398 811 | 0x0e306d3a : (None, 'messages_read_history', None), # 238054714 812 | 0x1c015b09 : (None, 'messages_delete_history', None), # 469850889 813 | 0xeabbb94c : (None, 'channels_toggle_pre_history_hidden', None), # -356796084 814 | 0xec8bd9e1 : (None, 'messages_toggle_chat_admins', None), # -326379039 815 | 0xa9e69f2e : (None, 'messages_edit_chat_admin', None), # -1444503762 816 | 0x15a3b8e3 : (None, 'messages_migrate_chat', None), # 363051235 817 | 0x9e3cacb0 : (None, 'messages_search_global', None), # -1640190800 818 | 0xe58e95d2 : (None, 'messages_delete_messages', None), # -443640366 819 | 0x05a954c0 : (None, 'messages_received_messages', None), # 94983360 820 | 0xa3825e50 : (None, 'messages_set_typing', None), # -1551737264 821 | 0xfa88427a : (None, 'messages_send_message', None), # -91733382 822 | 0xb8d1262b : (None, 'messages_send_media', None), # -1194252757 823 | 0x708e0195 : (None, 'messages_forward_messages', None), # 1888354709 824 | 0xcf1592db : (None, 'messages_report_spam', None), # -820669733 825 | 0xa8f1709b : (None, 'messages_hide_report_spam', None), # -1460572005 826 | 0x3672e09c : (None, 'messages_get_peer_settings', None), # 913498268 827 | 0xbd82b658 : (None, 'messages_report', None), # -1115507112 828 | 0x3c6aa187 : (None, 'messages_get_chats', None), # 1013621127 829 | 0x3b831c66 : (None, 'messages_get_full_chat', None), # 998448230 830 | 0xdc452855 : (None, 'messages_edit_chat_title', None), # -599447467 831 | 0xca4c79d8 : (None, 'messages_edit_chat_photo', None), # -900957736 832 | 0xf9a0aa09 : (None, 'messages_add_chat_user', None), # -106911223 833 | 0xe0611f16 : (None, 'messages_delete_chat_user', None), # -530505962 834 | 0x09cb126e : (None, 'messages_create_chat', None), # 164303470 835 | 0xedd4882a : (None, 'updates_get_state', None), # -304838614 836 | 0x25939651 : (None, 'updates_get_difference', None), # 630429265 837 | 0x03173d78 : (None, 'updates_get_channel_difference', None), # 51854712 838 | 0xf0bb5152 : (None, 'photos_update_profile_photo', None), # -256159406 839 | 0x4f32c098 : (None, 'photos_upload_profile_photo', None), # 1328726168 840 | 0x87cf7f2f : (None, 'photos_delete_photos', None), # -2016444625 841 | 0xe3a6cfb5 : (None, 'upload_get_file', None), # -475607115 842 | 0xc4f9186b : (None, 'help_get_config', None), # -990308245 843 | 0x1fb33026 : (None, 'help_get_nearest_dc', None), # 531836966 844 | 0xae2de196 : (None, 'help_get_app_update', None), # -1372724842 845 | 0x6f02f748 : (None, 'help_save_app_log', None), # 1862465352 846 | 0x4d392343 : (None, 'help_get_invite_text', None), # 1295590211 847 | 0x91cd32a8 : (None, 'photos_get_user_photos', None), # -1848823128 848 | 0x33963bf9 : (None, 'messages_forward_message', None), # 865483769 849 | 0xbf73f4da : (None, 'messages_send_broadcast', None), # -1082919718 850 | 0x26cf8950 : (None, 'messages_get_dh_config', None), # 651135312 851 | 0xf64daf43 : (None, 'messages_request_encryption', None), # -162681021 852 | 0x3dbc0415 : (None, 'messages_accept_encryption', None), # 1035731989 853 | 0xedd923c5 : (None, 'messages_discard_encryption', None), # -304536635 854 | 0x791451ed : (None, 'messages_set_encrypted_typing', None), # 2031374829 855 | 0x7f4b690a : (None, 'messages_read_encrypted_history', None), # 2135648522 856 | 0x55a5bb66 : (None, 'messages_received_queue', None), # 1436924774 857 | 0x4b0c8c0f : (None, 'messages_report_encrypted_spam', None), # 1259113487 858 | 0x9cdf08cd : (None, 'help_get_support', None), # -1663104819 859 | 0x36a73f77 : (None, 'messages_read_message_contents', None), # 916930423 860 | 0x2714d86c : (None, 'account_check_username', None), # 655677548 861 | 0x3e0bdd7c : (None, 'account_update_username', None), # 1040964988 862 | 0x11f812d8 : (None, 'contacts_search', None), # 301470424 863 | 0xdadbc950 : (None, 'account_get_privacy', None), # -623130288 864 | 0xc9f81ce8 : (None, 'account_set_privacy', None), # -906486552 865 | 0x418d4e0b : (None, 'account_delete_account', None), # 1099779595 866 | 0x08fc711d : (None, 'account_get_account_t_t_l', None), # 150761757 867 | 0x2442485e : (None, 'account_set_account_t_t_l', None), # 608323678 868 | 0xf93ccba3 : (None, 'contacts_resolve_username', None), # -113456221 869 | 0xd4982db5 : (None, 'contacts_get_top_peers', None), # -728224331 870 | 0x1ae373ac : (None, 'contacts_reset_top_peer_rating', None), # 451113900 871 | 0x08e57deb : (None, 'account_send_change_phone_code', None), # 149257707 872 | 0x70c32edb : (None, 'account_change_phone', None), # 1891839707 873 | 0x182e6d6f : (None, 'account_get_web_authorizations', None), # 405695855 874 | 0x2d01b9ef : (None, 'account_reset_web_authorization', None), # 755087855 875 | 0x682d2594 : (None, 'account_reset_web_authorizations', None), # 1747789204 876 | 0xb288bc7d : (None, 'account_get_all_secure_values', None), # -1299661699 877 | 0x73665bc2 : (None, 'account_get_secure_value', None), # 1936088002 878 | 0x899fe31d : (None, 'account_save_secure_value', None), # -1986010339 879 | 0xb880bc4b : (None, 'account_delete_secure_value', None), # -1199522741 880 | 0xb86ba8e1 : (None, 'account_get_authorization_form', None), # -1200903967 881 | 0xe7027c94 : (None, 'account_accept_authorization', None), # -419267436 882 | 0x823380b4 : (None, 'account_send_verify_phone_code', None), # -2110553932 883 | 0x4dd3a7f6 : (None, 'account_verify_phone', None), # 1305716726 884 | 0x7011509f : (None, 'account_send_verify_email_code', None), # 1880182943 885 | 0xecba39db : (None, 'account_verify_email', None), # -323339813 886 | 0x1c9618b1 : (None, 'messages_get_all_stickers', None), # 479598769 887 | 0x38df3532 : (None, 'account_update_device_locked', None), # 954152242 888 | 0x8b68b0cc : (None, 'messages_get_web_page_preview', None), # -1956073268 889 | 0xe320c158 : (None, 'account_get_authorizations', None), # -484392616 890 | 0xdf77f3bc : (None, 'account_reset_authorization', None), # -545786948 891 | 0x548a30f5 : (None, 'account_get_password', None), # 1418342645 892 | 0xbc8d11bb : (None, 'account_get_password_settings', None), # -1131605573 893 | 0xfa7c4b86 : (None, 'account_update_password_settings', None), # -92517498 894 | 0x1516d7bd : (None, 'account_send_confirm_phone_code', None), # 353818557 895 | 0x5f2178c3 : (None, 'account_confirm_phone', None), # 1596029123 896 | 0x4a82327e : (None, 'account_get_tmp_password', None), # 1250046590 897 | 0x0a63011e : (None, 'auth_check_password', None), # 174260510 898 | 0xd897bc66 : (None, 'auth_request_password_recovery', None), # -661144474 899 | 0x4ea56e92 : (None, 'auth_recover_password', None), # 1319464594 900 | 0x3ef1a9bf : (None, 'auth_resend_code', None), # 1056025023 901 | 0x1f040578 : (None, 'auth_cancel_code', None), # 520357240 902 | 0x7d885289 : (None, 'messages_export_chat_invite', None), # 2106086025 903 | 0x3eadb1bb : (None, 'messages_check_chat_invite', None), # 1051570619 904 | 0x6c50051c : (None, 'messages_import_chat_invite', None), # 1817183516 905 | 0x2619a90e : (None, 'messages_get_sticker_set', None), # 639215886 906 | 0xc78fe460 : (None, 'messages_install_sticker_set', None), # -946871200 907 | 0xf96e55de : (None, 'messages_uninstall_sticker_set', None), # -110209570 908 | 0xe6df7378 : (None, 'messages_start_bot', None), # -421563528 909 | 0xc4c8a55d : (None, 'messages_get_messages_views', None), # -993483427 910 | 0xbf9a776b : (None, 'messages_search_gifs', None), # -1080395925 911 | 0x83bf3d52 : (None, 'messages_get_saved_gifs', None), # -2084618926 912 | 0x327a30cb : (None, 'messages_save_gif', None), # 846868683 913 | 0x514e999d : (None, 'messages_get_inline_bot_results', None), # 1364105629 914 | 0xb16e06fe : (None, 'messages_send_inline_bot_result', None), # -1318189314 915 | 0xfda68d36 : (None, 'messages_get_message_edit_data', None), # -39416522 916 | 0xc000e4c8 : (None, 'messages_edit_message', None), # -1073683256 917 | 0x810a9fec : (None, 'messages_get_bot_callback_answer', None), # -2130010132 918 | 0xd58f130a : (None, 'messages_set_bot_callback_answer', None), # -712043766 919 | 0xe470bcfd : (None, 'messages_get_peer_dialogs', None), # -462373635 920 | 0xbc39e14b : (None, 'messages_save_draft', None), # -1137057461 921 | 0x6a3f8d65 : (None, 'messages_get_all_drafts', None), # 1782549861 922 | 0x2dacca4f : (None, 'messages_get_featured_stickers', None), # 766298703 923 | 0x5b118126 : (None, 'messages_read_featured_stickers', None), # 1527873830 924 | 0x5ea192c9 : (None, 'messages_get_recent_stickers', None), # 1587647177 925 | 0x392718f8 : (None, 'messages_save_recent_sticker', None), # 958863608 926 | 0x8999602d : (None, 'messages_clear_recent_stickers', None), # -1986437075 927 | 0x57f17692 : (None, 'messages_get_archived_stickers', None), # 1475442322 928 | 0x8ef8ecc0 : (None, 'messages_set_game_score', None), # -1896289088 929 | 0x15ad9f64 : (None, 'messages_set_inline_game_score', None), # 363700068 930 | 0x65b8c79f : (None, 'messages_get_mask_stickers', None), # 1706608543 931 | 0xe822649d : (None, 'messages_get_game_high_scores', None), # -400399203 932 | 0x0f635e1b : (None, 'messages_get_inline_game_high_scores', None), # 258170395 933 | 0xcc5b67cc : (None, 'messages_get_attached_stickers', None), # -866424884 934 | 0x0d0a48c4 : (None, 'messages_get_common_chats', None), # 218777796 935 | 0xeba80ff0 : (None, 'messages_get_all_chats', None), # -341307408 936 | 0x32ca8f91 : (None, 'messages_get_web_page', None), # 852135825 937 | 0xa731e257 : (None, 'messages_toggle_dialog_pin', None), # -1489903017 938 | 0x5b51d63f : (None, 'messages_reorder_pinned_dialogs', None), # 1532089919 939 | 0xe254d64e : (None, 'messages_get_pinned_dialogs', None), # -497756594 940 | 0x519bc2b1 : (None, 'messages_upload_media', None), # 1369162417 941 | 0xc97df020 : (None, 'messages_send_screenshot_notification', None), # -914493408 942 | 0x21ce0b0e : (None, 'messages_get_faved_stickers', None), # 567151374 943 | 0xb9ffc55b : (None, 'messages_fave_sticker', None), # -1174420133 944 | 0x46578472 : (None, 'messages_get_unread_mentions', None), # 1180140658 945 | 0x0f0189d3 : (None, 'messages_read_mentions', None), # 251759059 946 | 0xbbc45b09 : (None, 'messages_get_recent_locations', None), # -1144759543 947 | 0x2095512f : (None, 'messages_send_multi_media', None), # 546656559 948 | 0x9010ef6f : (None, 'help_get_app_changelog', None), # -1877938321 949 | 0x5057c497 : (None, 'messages_upload_encrypted_file', None), # 1347929239 950 | 0xc2b7d08b : (None, 'messages_search_sticker_sets', None), # -1028140917 951 | 0xc286d98f : (None, 'messages_mark_dialog_unread', None), # -1031349873 952 | 0x22e24e22 : (None, 'messages_get_dialog_unread_marks', None), # 585256482 953 | 0xec22cfcd : (None, 'help_set_bot_updates_status', None), # -333262899 954 | 0x78337739 : (None, 'messages_reorder_sticker_sets', None), # 2016638777 955 | 0x338e2464 : (None, 'messages_get_document_by_hash', None), # 864953444 956 | 0x3dc0f114 : (None, 'help_get_recent_me_urls', None), # 1036054804 957 | 0x3d7758e1 : (None, 'help_get_proxy_data', None), # 1031231713 958 | 0x3fedc75f : (None, 'help_get_deep_link_info', None), # 1072547679 959 | 0xcc104937 : (None, 'channels_read_history', None), # -871347913 960 | 0x84c1fd4e : (None, 'channels_delete_messages', None), # -2067661490 961 | 0xd10dd71b : (None, 'channels_delete_user_history', None), # -787622117 962 | 0xfe087810 : (None, 'channels_report_spam', None), # -32999408 963 | 0x93d7b347 : (None, 'channels_get_messages', None), # -1814580409 964 | 0x123e05e9 : (None, 'channels_get_participants', None), # 306054633 965 | 0x546dd7a6 : (None, 'channels_get_participant', None), # 1416484774 966 | 0x0a7f6bbb : (None, 'channels_get_channels', None), # 176122811 967 | 0x08736a09 : (None, 'channels_get_full_channel', None), # 141781513 968 | 0xf4893d7f : (None, 'channels_create_channel', None), # -192332417 969 | 0x13e27f1e : (None, 'channels_edit_about', None), # 333610782 970 | 0x20b88214 : (None, 'channels_edit_admin', None), # 548962836 971 | 0x566decd0 : (None, 'channels_edit_title', None), # 1450044624 972 | 0xf12e57c9 : (None, 'channels_edit_photo', None), # -248621111 973 | 0x10e6bd2c : (None, 'channels_check_username', None), # 283557164 974 | 0x3514b3de : (None, 'channels_update_username', None), # 890549214 975 | 0x24b524c5 : (None, 'channels_join_channel', None), # 615851205 976 | 0xf836aa95 : (None, 'channels_leave_channel', None), # -130635115 977 | 0x199f3a6c : (None, 'channels_invite_to_channel', None), # 429865580 978 | 0xc7560885 : (None, 'channels_export_invite', None), # -950663035 979 | 0xc0111fe3 : (None, 'channels_delete_channel', None), # -1072619549 980 | 0x49609307 : (None, 'channels_toggle_invites', None), # 1231065863 981 | 0xc846d22d : (None, 'channels_export_message_link', None), # -934882771 982 | 0x1f69b606 : (None, 'channels_toggle_signatures', None), # 527021574 983 | 0xa72ded52 : (None, 'channels_update_pinned_message', None), # -1490162350 984 | 0x8d8d82d7 : (None, 'channels_get_admined_public_channels', None), # -1920105769 985 | 0xbfd915cd : (None, 'channels_edit_banned', None), # -1076292147 986 | 0x33ddf480 : (None, 'channels_get_admin_log', None), # 870184064 987 | 0xea8ca4f9 : (None, 'channels_set_stickers', None), # -359881479 988 | 0xeab5dc38 : (None, 'channels_read_message_contents', None), # -357180360 989 | 0xaf369d42 : (None, 'channels_delete_history', None), # -1355375294 990 | 0x55451fa9 : (None, 'phone_get_call_config', None), # 1430593449 991 | 0x5b95b3d4 : (None, 'phone_request_call', None), # 1536537556 992 | 0x3bd2b4a0 : (None, 'phone_accept_call', None), # 1003664544 993 | 0x2efe1722 : (None, 'phone_confirm_call', None), # 788404002 994 | 0x17d54f61 : (None, 'phone_received_call', None), # 399855457 995 | 0x78d413a6 : (None, 'phone_discard_call', None), # 2027164582 996 | 0x1c536a34 : (None, 'phone_set_call_rating', None), # 475228724 997 | 0x277add7e : (None, 'phone_save_call_debug', None), # 662363518 998 | 0x8504e5b6 : (None, 'phone_create_group_call', None), # -2063276618 999 | 0x09db32d7 : (None, 'phone_join_group_call', None), # 165360343 1000 | 0x60e98e5f : (None, 'phone_leave_group_call', None), # 1625919071 1001 | 0x46659be4 : (None, 'phone_edit_group_call_member', None), # 1181064164 1002 | 0xcc92a6dc : (None, 'phone_invite_group_call_members', None), # -862804260 1003 | 0x7a777135 : (None, 'phone_discard_group_call', None), # 2054648117 1004 | 0x0c7cb017 : (None, 'phone_get_group_call', None), # 209498135 1005 | 0x98e3cdba : (None, 'phone_upgrade_phone_call', None), # -1729901126 1006 | 0x8adb4f79 : (None, 'phone_get_call', None), # -1965338759 1007 | 0x99f09745 : (None, 'payments_get_payment_form', None), # -1712285883 1008 | 0xa092a980 : (None, 'payments_get_payment_receipt', None), # -1601001088 1009 | 0x770a8e74 : (None, 'payments_validate_requested_info', None), # 1997180532 1010 | 0x2b8879b3 : (None, 'payments_send_payment_form', None), # 730364339 1011 | 0x227d824b : (None, 'payments_get_saved_info', None), # 578650699 1012 | 0xd83d70c1 : (None, 'payments_clear_saved_info', None), # -667062079 1013 | 0x9ab5c58e : (None, 'langpack_get_lang_pack', None), # -1699363442 1014 | 0x2e1ee318 : (None, 'langpack_get_strings', None), # 773776152 1015 | 0x0b2e4d7d : (None, 'langpack_get_difference', None), # 187583869 1016 | 0x800fd57d : (None, 'langpack_get_languages', None), # -2146445955 1017 | 0x3d5b64f2 : (None, 'page_block_author_date_layer60', None), # 1029399794 1018 | 0x83e5de54 : (None, 'message_empty', None), # -2082087340 1019 | 0x1d86f70e : (None, 'message_service_old2', None), # 495384334 1020 | 0x90dddc11 : (None, 'message_layer72', None), # -1864508399 1021 | 0xc09be45f : (None, 'message_layer68', None), # -1063525281 1022 | 0xc992e15c : (None, 'message_layer47', None), # -913120932 1023 | 0x5ba66c13 : (None, 'message_old7', None), # 1537633299 1024 | 0xa367e716 : (None, 'message_forwarded_old2', None), # -1553471722 1025 | 0x44f9b43d : (None, 'message', None), # 1157215293 1026 | 0x2bebfa86 : (None, 'message_old6', None), # 736885382 1027 | 0xf07814c8 : (None, 'message_old5', None), # -260565816 1028 | 0xc06b9607 : (None, 'message_service_layer48', None), # -1066691065 1029 | 0xc3060325 : (None, 'message_old4', None), # -1023016155 1030 | 0xa7ab1991 : (None, 'message_old3', None), # -1481959023 1031 | 0x567699b3 : (None, 'message_old2', None), # 1450613171 1032 | 0x9f8d60bb : (None, 'message_service_old', None), # -1618124613 1033 | 0x05f46804 : (None, 'message_forwarded_old', None), # 99903492 1034 | 0x22eb6aba : (None, 'message_old', None), # 585853626 1035 | 0x555555fa : (None, 'message_secret', None), # 1431655930 1036 | 0x555555f9 : (None, 'message_secret_layer72', None), # 1431655929 1037 | 0x555555f8 : (None, 'message_secret_old', None), # 1431655928 1038 | 0x9e19a1f6 : (None, 'message_service', None), # -1642487306 1039 | 0xe4def5db : (None, 'dialog', None), # -455150117 1040 | 0x9ba2d800 : (None, 'chat_empty', None), # -1683826688 1041 | 0xb304a621 : (None, 'upload_save_file_part', None), # -1291540959 1042 | 0x043d4f2c : (None, 'messages_get_stickers', None), # 71126828 1043 | 0xde7b673d : (None, 'upload_save_big_file_part', None), # -562337987 1044 | 0x24e6818d : (None, 'upload_get_web_file', None), # 619086221 1045 | 0x2000bcc3 : (None, 'upload_get_cdn_file', None), # 536919235 1046 | 0x9b2754a8 : (None, 'upload_reupload_cdn_file', None), # -1691921240 1047 | 0x4da54231 : (None, 'upload_get_cdn_file_hashes', None), # 1302676017 1048 | 0xc7025931 : (None, 'upload_get_file_hashes', None), # -956147407 1049 | 0x21e753bc : (None, 'upload_web_file', None), # 568808380 1050 | 0xa99fca4f : (None, 'upload_cdn_file', None), # -1449145777 1051 | 0xeea8e46e : (None, 'upload_cdn_file_reupload_needed', None), # -290921362 1052 | 0x096a18d5 : (None, 'upload_file', None), # 157948117 1053 | 0xf18cda44 : (None, 'upload_file_cdn_redirect', None), # -242427324 1054 | 0xa2bb35cb : (None, 'phone_call_protocol', None), # -1564789301 1055 | 0x9a901b66 : (None, 'messages_send_encrypted_file', None), # -1701831834 1056 | 0xcacacaca : (None, 'messages_send_encrypted_multi_media', None), # -892679478 1057 | 0xa9776773 : (None, 'messages_send_encrypted', None), # -1451792525 1058 | 0x32d439a4 : (None, 'messages_send_encrypted_service', None), # 852769188 1059 | --------------------------------------------------------------------------------