tweb/public/b68f317b6c9dee6b8c93.worker.js.map
wang chenyu 0a61727f1b Check isComposing for send shortcut for IME users (#11)
* Check isComposing for send shortcut
2021-05-01 20:47:43 +03:00

1 line
960 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/helpers/bytes.ts","webpack:///./src/vendor/leemon.ts","webpack:///./src/config/debug.ts","webpack:///./src/lib/crypto/cryptoworker.ts","webpack:///./src/lib/crypto/crypto_methods.ts","webpack:///./src/lib/logger.ts","webpack:///./src/config/modes.ts","webpack:///./src/helpers/random.ts","webpack:///./src/lib/mtproto/bin_utils.ts","webpack:///./src/lib/crypto/crypto_utils.ts","webpack:///./node_modules/@cryptography/aes/dist/es/aes.js","webpack:///./node_modules/pako/dist/pako_inflate.min.js","webpack:///./src/lib/polyfill.ts","webpack:///./src/helpers/cancellablePromise.ts","webpack:///./src/helpers/schedulers.ts","webpack:///./src/config/database.ts","webpack:///./src/helpers/blob.ts","webpack:///./src/lib/idb.ts","webpack:///./src/helpers/object.ts","webpack:///./src/lib/storage.ts","webpack:///./src/lib/sessionStorage.ts","webpack:///./src/lib/mtproto/schema.ts","webpack:///./src/lib/mtproto/tl_utils.ts","webpack:///./src/lib/mtproto/timeManager.ts","webpack:///./src/config/app.ts","webpack:///./src/lib/mtproto/networker.ts","webpack:///./src/helpers/array.ts","webpack:///./src/lib/mtproto/networkerFactory.ts","webpack:///./src/helpers/eventListenerBase.ts","webpack:///./src/lib/mtproto/transports/websocket.ts","webpack:///./src/lib/mtproto/transports/obfuscation.ts","webpack:///./src/lib/mtproto/transports/intermediate.ts","webpack:///./src/lib/mtproto/transports/tcpObfuscated.ts","webpack:///./src/helpers/userAgent.ts","webpack:///./src/helpers/context.ts","webpack:///./src/lib/mtproto/dcConfigurator.ts","webpack:///./src/lib/mtproto/rsaKeysManager.ts","webpack:///./src/lib/mtproto/authorizer.ts","webpack:///./src/lib/mtproto/apiManager.ts","webpack:///./src/lib/filemanager.ts","webpack:///./src/lib/cacheStorage.ts","webpack:///./src/lib/mtproto/apiFileManager.ts","webpack:///./src/helpers/fileName.ts","webpack:///./src/lib/mtproto/mtproto.worker.ts"],"names":["this","chunkIds","moreModules","moduleId","modules","length","installedChunks","pop","installedModules","0","__webpack_require__","exports","module","i","l","call","e","chunkId","promises","push","Promise","resolve","then","importScripts","p","all","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","s","bytesToHex","bytes","arr","toString","join","bytesFromHex","hexString","len","start","parseInt","charAt","substr","bytesCmp","bytes1","bytes2","bytesXor","convertToArrayBuffer","ArrayBuffer","undefined","buffer","byteLength","BYTES_PER_ELEMENT","Uint8Array","convertToUint8Array","TextEncoder","encode","bytesFromArrayBuffer","byteView","bufferConcat","buffer1","buffer2","l1","l2","tmp","set","bufferConcats","args","forEach","b","lastLength","bytesFromWordss","input","bytesToWordss","words","Uint32Array","radix","bpe","mask","digitsStr","k","buff","one","int2bigInt","Array","ss","s0","s3","s4","s5","s6","s7","sa","eg_u","eg_A","eg_B","eg_C","eg_D","bitSize","x","j","z","w","expand","ans","copy_","mod","dup","mod_","trim","mult","y","mult_","powMod","powMod_","pow","sub","sub_","add","add_","inverseModInt","a","Math","floor","eGCD_","v","g","max","halve_","copyInt_","greater","equalsInt","negative","multInt_","leftShift_","greaterShift","shift","kx","ky","divide_","q","y1","y2","subShift_","linCombShift_","addShift_","rightShift_","modInt","bits","minSize","ceil","str2bigInt","base","kk","indexOf","substring","addInt_","equals","isZero","bigInt2str","divInt_","bigInt2bytes","littleEndian","out","reverse","cmp","ys","multMod_","squareMod_","k1","k2","kn","np","mont_","ui","ks","DEBUG","debug","MOUNT_CLASS_TO","window","self","cryptoWorker","performTaskWorker","salt","iterations","keyBytes","ivBytes","encryptedBytes","publicKey","password","state","isNew","super","webWorker","taskId","awaiting","pending","utils","console","log","assign","sha1HashSync","sha256HashSync","hash_pbkdf2","aesEncryptSync","aesDecryptSync","rsaEncrypt","pqPrimeFactorization","bytesModPow","gzipUncompress","srp","computeSRP","task","CryptoWorker","LogTypes","LOG_LEVELS","None","Error","Warn","Log","Debug","_logTimer","Date","now","dT","toFixed","logger","prefix","type","warn","info","error","trace","setPrefix","_prefix","setLevel","level","slice","reduce","acc","Modes","test","location","search","http","ssl","multipleConnections","asServiceWorker","nextRandomInt","maxValue","random","isObject","longFromInts","high","low","bigInt","sortLongsArray","map","long","sort","addPadding","blockSize","zeroes","full","prepend","needPadding","padding","concat","subtle","crypto","longToBytes","sLong","digest","encrypt","decryptedBytes","decrypt","N","modulus","E","exponent","X","encryptedBigInt","importKey","deriveKey","hash","deriveBits","pqBytes","result","pqPrimeLeemon","what","lim","P","Q","minLen","it","xBigInt","yBigInt","mBigInt","resBigInt","inflate","to","S","Si","T1","T2","T3","T4","T5","T6","T7","T8","getWords","buf","pos","str","charCodeAt","xor","left","right","x2","x4","tEnc","tDec","xInv","computeTables","AES","_key","encKey","decKey","rcon","_message","a2","b2","c2","message","rounds","AES_IGE","iv","cipher","text","cipherText","prevX","subarray","prevY","yXOR","counter","offset","incrementCounter","carry","f","code","1","Uint16Array","Int32Array","arguments","TypeError","shrinkBuf","arraySet","flattenChunks","apply","setTyped","Buf8","Buf16","Buf32","2","String","fromCharCode","string2buf","buf2binstring","binstring2buf","buf2string","utf8border","3","4","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","5","6","time","xflags","os","extra","extra_len","comment","hcrc","done","7","u","h","_","Z","next_in","avail_in","next_out","output","avail_out","dmax","wsize","whave","wnext","hold","lencode","distcode","lenbits","distbits","msg","sane","8","R","O","C","U","L","last","wrap","havedict","flags","check","total","head","wbits","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","total_in","total_out","adler","H","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInit2","B","A","data_type","inflateEnd","inflateGetHeader","inflateSetDictionary","inflateInfo","9","I","D","T","F","10","11","options","chunkSize","windowBits","raw","err","ended","chunks","strm","header","dictionary","onEnd","onData","Inflate","inflateRaw","ungzip","configurable","randomize","toJSON","findAndSplice","verify","index","findIndex","splice","toHHMMSS","leadZero","sec_num","hours","minutes","seconds","finally","fn","onFinally","callback","reason","reject","deferredPromise","deferredHelper","isFulfilled","isRejected","notify","notifyAll","lastNotify","listeners","addNotifyListener","deferred","cancel","throttle","ms","shouldRunFirst","isPending","interval","_args","setInterval","clearInterval","version","stores","blobConstruct","blobParts","mimeType","blob","safeMimeType","blobSafeMimeType","Blob","bb","BlobBuilder","blobPart","append","getBlob","storageIsAvailable","fromObject","safeAssign","storeName","openDatabase","createNew","openDbPromise","request","indexedDB","open","finished","setTimeout","onerror","onsuccess","event","db","calledNew","onclose","onabort","transaction","target","close","onversionchange","onupgradeneeded","oldVersion","newVersion","store","objectStoreNames","contains","createObjectStore","indexes","createIndex","indexName","keyPath","objectParameters","entryName","isArray","getObjectStore","objectStore","delete","clear","idx","put","fileName","save","perf","performance","clearTimeout","timeout","oncomplete","results","requests","getAll","storageOptions","cache","useStorage","getPromises","Map","keysToSet","Set","saveDeferred","storage","STORAGES","saveThrottled","size","keys","from","values","getThrottled","includes","getFromCache","obj","onlyLocal","setToCache","saveLocal","deleteAll","enabled","sessionStorage","appStorage","boolFalse","API","constructors","find","predicate","id","boolTrue","vector","gzipPacked","MTProto","maxLength","mtproto","startMaxLength","createBuffer","intView","resultBuffer","resultInt32","getArray","typed","resultArray","needBytes","previousBuffer","previousArray","field","checkLength","writeInt","iHigh","iLow","storeLongP","storeIntBytes","Float64Array","sUTF8","unescape","encodeURIComponent","methodName","params","methodData","methods","method","storeInt","pFlags","flagsOffsets","param","condType","split","fieldBit","storeObject","paramName","storeLong","storeString","storeBytes","storeDouble","storeBool","itemType","toLowerCase","schema","isBare","constructorData","override","hex","readInt","doubleView","fetchObject","decodeURIComponent","escape","fetchInt","fetchLong","fetchIntBytes","fetchString","fetchBytes","fetchDouble","fetchBool","constructor","constructorCmp","compressed","uncompressed","fallback","checkType","constructorsIndex","schemaFallback","int1","int2","overrideKey","isCond","TLDeserialization","TLSerialization","timeManager","lastMessageId","timeOffset","timeTicks","messageId","serverTime","localTime","newTimeOffset","changed","abs","server_time_offset","langPackVersion","langPack","langPackCode","domains","baseDcId","invokeAfterMsgConstructor","dcId","authKey","authKeyId","serverSalt","transport","lastServerMessages","sentMessages","pendingMessages","pendingAcks","pendingResends","connectionInited","seqNo","lastResendReq","isOnline","lastResponseTime","authKeyUint8","isFileUpload","fileUpload","isFileDownload","fileDownload","isFileNetworker","suffix","updateSession","networker","connected","setConnectionStatus","prevSessionId","sessionId","sentMessageId","sentMessage","container","array","forEachReverse","inner","innerSentMessageId","innerSentMessage","updateSentMessage","msg_id","generateId","seq_no","generateSeqNo","notContentRelated","serializer","storeMethod","body","getBytes","pushMessage","invokeWithLayer","layer","initConnection","navigator","userAgent","platform","language","afterMessageId","resultType","isAPI","promise","noSchedule","scheduleRequest","noResponse","online","willChange","onConnectionStatusChange","delay","innerMsgId","acked","dataWithPadding","isOut","msgKeyLargePlain","msgKeyLarge","sha256Hash","msgKey","sha2aText","sha2bText","aesKey","aesIv","sha2a","sha2b","ackMsgIds","wrapMtpMessage","msg_ids","resendMsgIds","resendOpts","req_msg_id","resend_msg_ids","outMessage","messages","messagesByteLen","lengthOverflow","messageByteLength","generateContainerMessage","messageWithBody","sendEncryptedRequest","cleanupSent","innerMessages","storeRawBytes","getMsgKey","keyIv","getAesKeyIv","aesEncrypt","encryptedData","aesDecrypt","data","dataBuffer","getBuffer","paddingLength","getEncryptedMessage","encryptedResult","getEncryptedOutput","requestData","send","responseBuffer","deserializer","fetchRawBytes","getOffset","getDecryptedMessage","calcMsgKey","totalLength","messageBodyLength","messageBody","mt_message","seqno","stack","mt_rpc_result","response","newServerSalt","nextReq","nextReqTimeout","cb","performScheduledRequest","msgId","notEmpty","rawError","matches","error_message","match","error_code","description","originalError","pushResend","innerMessage","processMessage","applyServerSalt","new_server_salt","bad_msg_id","ackMessage","changedOffset","applyServerTime","badMessage","processMessageAck","first_msg_id","server_salt","updatesProcessor","answer_msg_id","reqResendMessage","badMsgId","processError","authKeyID","EventListenerBase","reuseResults","_constructor","listenerResults","once","addEventListener","listener","removeEventListener","url","logSuffix","handleOpen","dispatchEvent","handleError","handleClose","removeListeners","handleMessage","ws","logTypes","connect","WebSocket","binaryType","Counter","initialValue","_counter","_remainingCounter","_remainingCounterIndex","_aes","payload","encrypted","increment","Obfuscation","codec","initPayload","val","val2","reversedPayload","encIv","decIv","encNew","decNew","obfuscateTag","update","tag","Connection","retryTimeout","intermediate","obfuscation","onOpen","init","connection","resend","encoded","encodeBody","releasePending","onMessage","decode","readPacket","parseResponse","catch","onClose","diff","lastCloseTime","needTimeout","isNaN","bodySent","toEncode","encodePacket","ctx","vendor","isSafari","maxTouchPoints","MSStream","isWebWorker","WorkerGlobalScope","isServiceWorker","ServiceWorkerGlobalScope","notifyServiceWorker","clients","matchAll","includeUncontrolled","postMessage","notifyWorker","noop","notifySomeone","socketId","TEST_SUFFIX","socketsProxied","sslSubdomains","dcOptions","host","port","chosenServers","transportSocket","connectionType","subdomain","transportType","reuse","client","download","upload","servers","transports","publisKeysHex","publicKeysParsed","prepared","preparePromise","keyParsed","RSAPublicKey","sha1Hash","fingerprintBytes","fingerprints","fingerprintHex","foundKey","prepare","fill","fingerprint","cached","requestArray","requestLength","headerArray","dcConfigurator","chooseServer","baseError","auth_key_id","msg_len","auth","nonce","rsaKeysManager","mtpSendPlainRequest","serverNonce","server_nonce","pq","server_public_key_fingerprints","select","pAndQ","factorize","mtpSendReqDhParams","newNonce","p_q_inner_data","new_nonce","uint8Data","dataWithHash","rsaEncrypted","req_DH_params","public_key_fingerprint","encrypted_data","requestBytes","newNonceHash","new_nonce_hash","mtpDecryptServerDhDataAnswer","encrypted_answer","mtpSendSetClientDhParams","encryptedAnswer","tmpAesKey","tmpAesIv","answerWithHash","answerWithPadding","dhPrime","dh_prime","gA","g_a","server_time","retry","mtpVerifyDhParams","dhPrimeHex","_gABigInt","_dhPrimeBigInt","_two","_twoPow","gBytes","gB","modPow","retry_id","g_b","authKeyHash","authKeyAux","newNonceHash1","new_nonce_hash1","newNonceHash2","new_nonce_hash2","newNonceHash3","new_nonce_hash3","mtpSendReqPQ","apiManager","cachedNetworkers","cachedExportPromise","gettingNetworkers","afterMessageTempIds","userId","user_auth","dc","storageKeys","storageResult","logoutPromises","invokeApi","ignoreErrors","handled","networkers","found","unshift","getKey","ak","akId","authKeyHex","authKeyIdHex","serverSaltHex","networkerFactory","getNetworker","authorizer","storeObj","afterMessageIdTemp","startTime","rejectPromise","logOut","noErrorBox","cachedNetworker","performRequest","wrapApiCall","prepareTempMessageId","exportResolve","exportReject","dc_id","exportedAuth","newDcId","setBaseDcId","stopTime","waitTime","min","floodMaxTimeout","blobSupported","fileWriter","fileReader","FileReader","onload","arrayBuffer","write","readAsArrayBuffer","saveFileCallback","part","truncate","finalize","saveToStorage","dbName","caches","timeoutOperation","Response","rejected","res","fakeWriter","getFakeFileWriter","saveFile","apiFileManager","cacheStorage","cachedDownloadPromises","uploadPromises","downloadPulls","downloadActives","webpConvertPromises","tempId","queueId","uncompressTGS","convertWebp","convertPromise","activeDelta","downloadPull","downloadCheck","limit","checkCancel","downloadRequest","getDelta","isAvailable","process","isWebpSupported","ext","thumbPart","thumb_size","volume_id","local_id","getFileNameByLocation","cachedPromise","fileStorage","getFileStorage","deleteFile","downloadFile","cacheFileWriter","canceled","resolved","errorHandler","getFile","getFileWriter","limitPart","getLimitPart","writeFileDeferred","writeFilePromise","processDownloaded","delayed","superpuper","requestFilePart","isFinal","processedResult","Infinity","progress","file","fileSize","isBigFile","doneParts","partSize","totalParts","fileId","_part","resultInputFile","parts","md5_checksum","details","uploadResolve","uploadReject","reader","onloadend","readyState","DONE","file_id","file_part","file_total_parts","generator","webpSupported","setUpdatesProcessor","status","responseTask","originalPayload","socketTask","socketProxied","toggleStorage"],"mappings":"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","file":"b68f317b6c9dee6b8c93.worker.js","sourcesContent":[" \tthis[\"webpackChunk\"] = function webpackChunkCallback(chunkIds, moreModules) {\n \t\tfor(var moduleId in moreModules) {\n \t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t}\n \t\twhile(chunkIds.length)\n \t\t\tinstalledChunks[chunkIds.pop()] = 1;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded chunks\n \t// \"1\" means \"already loaded\"\n \tvar installedChunks = {\n \t\t0: 1\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n \t\tpromises.push(Promise.resolve().then(function() {\n \t\t\t// \"1\" is the signal for \"already loaded\"\n \t\t\tif(!installedChunks[chunkId]) {\n \t\t\t\timportScripts(__webpack_require__.p + \"\" + chunkId + \".\" + \"b68f317b6c9dee6b8c93\" + \".worker.js\");\n \t\t\t}\n \t\t}));\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nexport function bytesToHex(bytes: ArrayLike<number>) {\n bytes = bytes || [];\n let arr: string[] = [];\n for(let i = 0; i < bytes.length; ++i) {\n arr.push((bytes[i] < 16 ? '0' : '') + (bytes[i] || 0).toString(16));\n }\n return arr.join('');\n}\n\nexport function bytesFromHex(hexString: string) {\n const len = hexString.length;\n let start = 0;\n let bytes: number[] = [];\n\n if(len % 2) { // read 0x581 as 0x0581\n bytes.push(parseInt(hexString.charAt(0), 16));\n ++start;\n }\n\n for(let i = start; i < len; i += 2) {\n bytes.push(parseInt(hexString.substr(i, 2), 16));\n }\n\n return bytes;\n}\n\nexport function bytesToBase64(bytes: number[] | Uint8Array) {\n let mod3: number;\n let result = '';\n\n for(let nLen = bytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; ++nIdx) {\n mod3 = nIdx % 3;\n nUint24 |= bytes[nIdx] << (16 >>> mod3 & 24);\n if(mod3 === 2 || nLen - nIdx === 1) {\n result += String.fromCharCode(\n uint6ToBase64(nUint24 >>> 18 & 63),\n uint6ToBase64(nUint24 >>> 12 & 63),\n uint6ToBase64(nUint24 >>> 6 & 63),\n uint6ToBase64(nUint24 & 63)\n );\n nUint24 = 0;\n }\n }\n\n return result.replace(/A(?=A$|$)/g, '=');\n}\n\nexport function uint6ToBase64(nUint6: number) {\n return nUint6 < 26\n ? nUint6 + 65\n : nUint6 < 52\n ? nUint6 + 71\n : nUint6 < 62\n ? nUint6 - 4\n : nUint6 === 62\n ? 43\n : nUint6 === 63\n ? 47\n : 65\n}\n\nexport function bytesCmp(bytes1: number[] | Uint8Array, bytes2: number[] | Uint8Array) {\n const len = bytes1.length;\n if(len !== bytes2.length) {\n return false;\n }\n\n for(let i = 0; i < len; ++i) {\n if(bytes1[i] !== bytes2[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function bytesXor(bytes1: number[] | Uint8Array, bytes2: number[] | Uint8Array) {\n const len = bytes1.length;\n const bytes: number[] = [];\n\n for(let i = 0; i < len; ++i) {\n bytes[i] = bytes1[i] ^ bytes2[i];\n }\n\n return bytes;\n}\n\nexport function bytesToArrayBuffer(b: number[]) {\n return (new Uint8Array(b)).buffer;\n}\n\nexport function convertToArrayBuffer(bytes: any | ArrayBuffer | Uint8Array) {\n // Be careful with converting subarrays!!\n if(bytes instanceof ArrayBuffer) {\n return bytes;\n }\n if(bytes.buffer !== undefined &&\n bytes.buffer.byteLength === bytes.length * bytes.BYTES_PER_ELEMENT) {\n return bytes.buffer;\n }\n return bytesToArrayBuffer(bytes);\n}\n\nexport function convertToUint8Array(bytes: Uint8Array | ArrayBuffer | number[] | string): Uint8Array {\n if((bytes as Uint8Array).buffer !== undefined) {\n return bytes as Uint8Array;\n } else if(typeof(bytes) === 'string') {\n return new TextEncoder().encode(bytes);\n }\n\n return new Uint8Array(bytes);\n}\n\nexport function bytesFromArrayBuffer(buffer: ArrayBuffer) {\n const len = buffer.byteLength;\n const byteView = new Uint8Array(buffer);\n const bytes: number[] = [];\n\n for(let i = 0; i < len; ++i) {\n bytes[i] = byteView[i];\n }\n\n return bytes;\n}\n\nexport function bufferConcat(buffer1: any, buffer2: any) {\n const l1 = buffer1.byteLength || buffer1.length;\n const l2 = buffer2.byteLength || buffer2.length;\n const tmp = new Uint8Array(l1 + l2);\n tmp.set(buffer1 instanceof ArrayBuffer ? new Uint8Array(buffer1) : buffer1, 0);\n tmp.set(buffer2 instanceof ArrayBuffer ? new Uint8Array(buffer2) : buffer2, l1);\n\n return tmp.buffer;\n}\n\nexport function bufferConcats(...args: any[]) {\n let length = 0;\n args.forEach(b => length += b.byteLength || b.length);\n\n const tmp = new Uint8Array(length);\n \n let lastLength = 0;\n args.forEach(b => {\n tmp.set(b instanceof ArrayBuffer ? new Uint8Array(b) : b, lastLength);\n lastLength += b.byteLength || b.length;\n });\n\n return tmp/* .buffer */;\n}\n\nexport function bytesFromWordss(input: Uint32Array) {\n const o: number[] = [];\n for(let i = 0, length = input.length * 4; i < length; ++i) {\n o.push((input[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff);\n }\n\n return o;\n}\n\nexport function bytesToWordss(input: ArrayBuffer | Uint8Array) {\n let bytes: Uint8Array;\n if(input instanceof ArrayBuffer) bytes = new Uint8Array(input);\n else bytes = input;\n\n const words: number[] = [];\n for(let i = 0, len = bytes.length; i < len; ++i) {\n words[i >>> 2] |= bytes[i] << (24 - (i % 4) * 8);\n }\n\n return new Uint32Array(words);\n}\n\n// * https://stackoverflow.com/a/52827031\n/* export const isBigEndian = (() => {\n const array = new Uint8Array(4);\n const view = new Uint32Array(array.buffer);\n return !((view[0] = 1) & array[0]);\n})(); */\n","'use strict'\n//@flow\n\n/** * * * * * * * * * *\n * Big Integer Library *\n * Created 2000 *\n * Leemon Baird *\n * www.leemon.com *\n * * * * * * * * * * * */\n\n////////////////////////////////////////////////////////////////////////////////////////\n// These functions are designed to avoid frequent dynamic memory allocation in the inner loop.\n// For most functions, if it needs a BigInt as a local variable it will actually use\n// a global, and will only allocate to it only when it's not the right size. This ensures\n// that when a function is called repeatedly with same-sized parameters, it only allocates\n// memory on the first call.\n//\n// Note that for cryptographic purposes, the calls to Math.random() must\n// be replaced with calls to a better pseudorandom number generator.\n//\n// In the following, \"bigInt\" means a bigInt with at least one leading zero element,\n// and \"integer\" means a nonnegative integer less than radix. In some cases, integer\n// can be negative. Negative bigInts are 2s complement.\n//\n// The following functions do not modify their inputs.\n// Those returning a bigInt, string, or Array will dynamically allocate memory for that value.\n// Those returning a boolean will return the integer 0 (false) or 1 (true).\n// Those returning boolean or int will not allocate memory except possibly on the first\n// time they're called with a given parameter size.\n//\n// bigInt add(x,y) //return (x+y) for bigInts x and y.\n// bigInt addInt(x,n) //return (x+n) where x is a bigInt and n is an integer.\n// string bigInt2str(x,base) //return a string form of bigInt x in a given base, with 2 <= base <= 95\n// int bitSize(x) //return how many bits long the bigInt x is, not counting leading zeros\n// bigInt dup(x) //return a copy of bigInt x\n// boolean equals(x,y) //is the bigInt x equal to the bigint y?\n// boolean equalsInt(x,y) //is bigint x equal to integer y?\n// bigInt expand(x,n) //return a copy of x with at least n elements, adding leading zeros if needed\n// Array findPrimes(n) //return array of all primes less than integer n\n// bigInt GCD(x,y) //return greatest common divisor of bigInts x and y (each with same number of elements).\n// boolean greater(x,y) //is x>y? (x and y are nonnegative bigInts)\n// boolean greaterShift(x,y,shift)//is (x <<(shift*bpe)) > y?\n// bigInt int2bigInt(t,n,m) //return a bigInt equal to integer t, with at least n bits and m array elements\n// bigInt inverseMod(x,n) //return (x**(-1) mod n) for bigInts x and n. If no inverse exists, it returns null\n// int inverseModInt(x,n) //return x**(-1) mod n, for integers x and n. Return 0 if there is no inverse\n// boolean isZero(x) //is the bigInt x equal to zero?\n// boolean millerRabin(x,b) //does one round of Miller-Rabin base integer b say that bigInt x is possibly prime? (b is bigInt, 1<b<x)\n// boolean millerRabinInt(x,b) //does one round of Miller-Rabin base integer b say that bigInt x is possibly prime? (b is int, 1<b<x)\n// bigInt mod(x,n) //return a new bigInt equal to (x mod n) for bigInts x and n.\n// int modInt(x,n) //return x mod n for bigInt x and integer n.\n// bigInt mult(x,y) //return x*y for bigInts x and y. This is faster when y<x.\n// bigInt multMod(x,y,n) //return (x*y mod n) for bigInts x,y,n. For greater speed, let y<x.\n// boolean negative(x) //is bigInt x negative?\n// bigInt powMod(x,y,n) //return (x**y mod n) where x,y,n are bigInts and ** is exponentiation. 0**0=1. Faster for odd n.\n// bigInt randBigInt(n,s) //return an n-bit random BigInt (n>=1). If s=1, then the most significant of those n bits is set to 1.\n// bigInt randTruePrime(k) //return a new, random, k-bit, true prime bigInt using Maurer's algorithm.\n// bigInt randProbPrime(k) //return a new, random, k-bit, probable prime bigInt (probability it's composite less than 2^-80).\n// bigInt str2bigInt(s,b,n,m) //return a bigInt for number represented in string s in base b with at least n bits and m array elements\n// bigInt sub(x,y) //return (x-y) for bigInts x and y. Negative answers will be 2s complement\n// bigInt trim(x,k) //return a copy of x with exactly k leading zero elements\n//\n//\n// The following functions each have a non-underscored version, which most users should call instead.\n// These functions each write to a single parameter, and the caller is responsible for ensuring the array\n// passed in is large enough to hold the result.\n//\n// void addInt_(x,n) //do x=x+n where x is a bigInt and n is an integer\n// void add_(x,y) //do x=x+y for bigInts x and y\n// void copy_(x,y) //do x=y on bigInts x and y\n// void copyInt_(x,n) //do x=n on bigInt x and integer n\n// void GCD_(x,y) //set x to the greatest common divisor of bigInts x and y, (y is destroyed). (This never overflows its array).\n// boolean inverseMod_(x,n) //do x=x**(-1) mod n, for bigInts x and n. Returns 1 (0) if inverse does (doesn't) exist\n// void mod_(x,n) //do x=x mod n for bigInts x and n. (This never overflows its array).\n// void mult_(x,y) //do x=x*y for bigInts x and y.\n// void multMod_(x,y,n) //do x=x*y mod n for bigInts x,y,n.\n// void powMod_(x,y,n) //do x=x**y mod n, where x,y,n are bigInts (n is odd) and ** is exponentiation. 0**0=1.\n// void randBigInt_(b,n,s) //do b = an n-bit random BigInt. if s=1, then nth bit (most significant bit) is set to 1. n>=1.\n// void randTruePrime_(ans,k) //do ans = a random k-bit true random prime (not just probable prime) with 1 in the msb.\n// void sub_(x,y) //do x=x-y for bigInts x and y. Negative answers will be 2s complement.\n//\n// The following functions do NOT have a non-underscored version.\n// They each write a bigInt result to one or more parameters. The caller is responsible for\n// ensuring the arrays passed in are large enough to hold the results.\n//\n// void addShift_(x,y,ys) //do x=x+(y<<(ys*bpe))\n// void carry_(x) //do carries and borrows so each element of the bigInt x fits in bpe bits.\n// void divide_(x,y,q,r) //divide x by y giving quotient q and remainder r\n// int divInt_(x,n) //do x=floor(x/n) for bigInt x and integer n, and return the remainder. (This never overflows its array).\n// void eGCD_(x,y,d,a,b) //sets a,b,d to positive bigInts such that d = GCD_(x,y) = a*x-b*y\n// void halve_(x) //do x=floor(|x|/2)*sgn(x) for bigInt x in 2's complement. (This never overflows its array).\n// void leftShift_(x,n) //left shift bigInt x by n bits. n<bpe.\n// void linComb_(x,y,a,b) //do x=a*x+b*y for bigInts x and y and integers a and b\n// void linCombShift_(x,y,b,ys) //do x=x+b*(y<<(ys*bpe)) for bigInts x and y, and integers b and ys\n// void mont_(x,y,n,np) //Montgomery multiplication (see comments where the function is defined)\n// void multInt_(x,n) //do x=x*n where x is a bigInt and n is an integer.\n// void rightShift_(x,n) //right shift bigInt x by n bits. 0 <= n < bpe. (This never overflows its array).\n// void squareMod_(x,n) //do x=x*x mod n for bigInts x,n\n// void subShift_(x,y,ys) //do x=x-(y<<(ys*bpe)). Negative answers will be 2s complement.\n//\n// The following functions are based on algorithms from the _Handbook of Applied Cryptography_\n// powMod_() = algorithm 14.94, Montgomery exponentiation\n// eGCD_,inverseMod_() = algorithm 14.61, Binary extended GCD_\n// GCD_() = algorothm 14.57, Lehmer's algorithm\n// mont_() = algorithm 14.36, Montgomery multiplication\n// divide_() = algorithm 14.20 Multiple-precision division\n// squareMod_() = algorithm 14.16 Multiple-precision squaring\n// randTruePrime_() = algorithm 4.62, Maurer's algorithm\n// millerRabin() = algorithm 4.24, Miller-Rabin algorithm\n//\n// Profiling shows:\n// randTruePrime_() spends:\n// 10% of its time in calls to powMod_()\n// 85% of its time in calls to millerRabin()\n// millerRabin() spends:\n// 99% of its time in calls to powMod_() (always with a base of 2)\n// powMod_() spends:\n// 94% of its time in calls to mont_() (almost always with x==y)\n//\n// This suggests there are several ways to speed up this library slightly:\n// - convert powMod_ to use a Montgomery form of k-ary window (or maybe a Montgomery form of sliding window)\n// -- this should especially focus on being fast when raising 2 to a power mod n\n// - convert randTruePrime_() to use a minimum r of 1/3 instead of 1/2 with the appropriate change to the test\n// - tune the parameters in randTruePrime_(), including c, m, and recLimit\n// - speed up the single loop in mont_() that takes 95% of the runtime, perhaps by reducing checking\n// within the loop when all the parameters are the same length.\n//\n// There are several ideas that look like they wouldn't help much at all:\n// - replacing trial division in randTruePrime_() with a sieve (that speeds up something taking almost no time anyway)\n// - increase bpe from 15 to 30 (that would help if we had a 32*32->64 multiplier, but not with JavaScript's 32*32->32)\n// - speeding up mont_(x,y,n,np) when x==y by doing a non-modular, non-Montgomery square\n// followed by a Montgomery reduction. The intermediate answer will be twice as long as x, so that\n// method would be slower. This is unfortunate because the code currently spends almost all of its time\n// doing mont_(x,x,...), both for randTruePrime_() and powMod_(). A faster method for Montgomery squaring\n// would have a large impact on the speed of randTruePrime_() and powMod_(). HAC has a couple of poorly-worded\n// sentences that seem to imply it's faster to do a non-modular square followed by a single\n// Montgomery reduction, but that's obviously wrong.\n////////////////////////////////////////////////////////////////////////////////////////\n\nexport type Bool = 1 | 0\n\n//globals\nexport var bpe = 0 //bits stored per array element\nvar mask = 0 //AND this with an array element to chop it down to bpe bits\nvar radix = mask + 1 //equals 2^bpe. A single 1 bit to the left of the last bit of mask.\n\n//the digits for converting to different bases\nvar digitsStr =\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_=!@#$%^&*()[]{}|;:,.<>/?`~ \\\\\\'\"+-'\n\n//initialize the global variables\n\n//bpe=number of bits in the mantissa on this platform\nfor (bpe = 0; 1 << (bpe + 1) > 1 << bpe; bpe++);\nbpe >>= 1 //bpe=number of bits in one element of the array representing the bigInt\nmask = (1 << bpe) - 1 //AND the mask with an integer to get its bpe least significant bits\nradix = mask + 1 //2^bpe. a single 1 bit to the left of the first bit of mask\nexport var one = int2bigInt(1, 1, 1) //constant used in powMod_()\nexport var zero = int2bigInt(0, 1, 1)\n\n//the following global variables are scratchpad memory to\n//reduce dynamic memory allocation in the inner loop\nvar t: number[] | number = new Array(0)\nvar ss = t //used in mult_()\nvar s0 = t //used in multMod_(), squareMod_()\n// var s1=t; //used in powMod_(), multMod_(), squareMod_()\n// var s2=t; //used in powMod_(), multMod_()\nvar s3 = t //used in powMod_()\nvar s4 = t,\n s5 = t //used in mod_()\nvar s6 = t //used in bigInt2str()\nvar s7 = t //used in powMod_()\nvar T = t //used in GCD_()\nvar sa = t //used in mont_()\nvar mr_x1 = t,\n mr_r = t,\n mr_a = t, //used in millerRabin()\n eg_v = t,\n eg_u = t,\n eg_A = t,\n eg_B = t,\n eg_C = t,\n eg_D = t, //used in eGCD_(), inverseMod_()\n //, md_q1=t, md_q2=t, md_q3=t, md_r=t, md_r1=t, md_r2=t, md_tt=t, //used in mod_()\n\n primes = t,\n pows = t,\n s_i = t,\n s_i2 = t,\n s_R = t,\n s_rm = t,\n s_q = t,\n s_n1 = t,\n s_a = t,\n s_r2 = t,\n s_n = t,\n s_b = t,\n s_d = t,\n s_x1 = t,\n s_x2 = t,\n s_aa = t, //used in randTruePrime_()\n rpprb = t //used in randProbPrimeRounds() (which also uses \"primes\")\n\n////////////////////////////////////////////////////////////////////////////////////////\n\nvar k, buff\n\n/**\n * return array of all primes less than integer n\n *\n * @param {number} n\n * @returns {number[]}\n */\nexport function findPrimes(n: number): number[] {\n var i, s, p, ans\n s = new Array(n)\n for (i = 0; i < n; i++) s[i] = 0\n s[0] = 2\n p = 0 //first p elements of s are primes, the rest are a sieve\n for (; s[p] < n; ) {\n //s[p] is the pth prime\n for (\n i = s[p] * s[p];\n i < n;\n i += s[p] //mark multiples of s[p]\n )\n s[i] = 1\n p++\n s[p] = s[p - 1] + 1\n for (; s[p] < n && s[s[p]]; s[p]++); //find next prime (where s[p]==0)\n }\n ans = new Array(p)\n for (i = 0; i < p; i++) ans[i] = s[i]\n return ans\n}\n\n/**\n * does a single round of Miller-Rabin base b consider x to be a possible prime?\n *\n * x is a bigInt, and b is an integer, with b<x\n *\n * @export\n * @param {number[]} x\n * @param {number} b\n * @returns {(0 | 1)}\n */\nexport function millerRabinInt(x: number[], b: number): Bool {\n if (mr_x1.length !== x.length) {\n mr_x1 = dup(x)\n mr_r = dup(x)\n mr_a = dup(x)\n }\n\n copyInt_(mr_a, b)\n return millerRabin(x, mr_a)\n}\n\n/**\n * does a single round of Miller-Rabin base b consider x to be a possible prime?\n *\n * x and b are bigInts with b<x\n *\n * @export\n * @param {number[]} x\n * @param {number[]} b\n * @returns {(0 | 1)}\n */\nexport function millerRabin(x: number[], b: number[]): Bool {\n var i, j, k, s\n\n if (mr_x1.length !== x.length) {\n mr_x1 = dup(x)\n mr_r = dup(x)\n mr_a = dup(x)\n }\n\n copy_(mr_a, b)\n copy_(mr_r, x)\n copy_(mr_x1, x)\n\n addInt_(mr_r, -1)\n addInt_(mr_x1, -1)\n\n //s=the highest power of two that divides mr_r\n k = 0\n for (i = 0; i < mr_r.length; i++)\n for (j = 1; j < mask; j <<= 1)\n if (x[i] & j) {\n s = k < mr_r.length + bpe ? k : 0\n i = mr_r.length\n j = mask\n } else k++\n\n if (s) rightShift_(mr_r, s)\n\n powMod_(mr_a, mr_r, x)\n\n if (!equalsInt(mr_a, 1) && !equals(mr_a, mr_x1)) {\n j = 1\n //$off\n while (j <= s - 1 && !equals(mr_a, mr_x1)) {\n squareMod_(mr_a, x)\n if (equalsInt(mr_a, 1)) {\n return 0\n }\n j++\n }\n if (!equals(mr_a, mr_x1)) {\n return 0\n }\n }\n return 1\n}\n\n/**\n * returns how many bits long the bigInt is, not counting leading zeros.\n *\n * @param {number[]} x\n * @returns {number}\n */\nexport function bitSize(x: number[]): number {\n var j, z, w\n for (j = x.length - 1; x[j] == 0 && j > 0; j--);\n for (z = 0, w = x[j]; w; w >>= 1, z++);\n z += bpe * j\n return z\n}\n\n/**\n * return a copy of x with at least n elements, adding leading zeros if needed\n *\n * @param {number[]} x\n * @param {number} n\n * @returns {number[]}\n */\nexport function expand(x: number[], n: number): number[] {\n var ans = int2bigInt(0, (x.length > n ? x.length : n) * bpe, 0)\n copy_(ans, x)\n return ans\n}\n\n/**\n * return a k-bit true random prime using Maurer's algorithm.\n *\n * @export\n * @param {number} k\n * @returns {number[]}\n */\nexport function randTruePrime(k: number): number[] {\n var ans = int2bigInt(0, k, 0)\n randTruePrime_(ans, k)\n return trim(ans, 1)\n}\n\n/**\n * return a k-bit random probable prime with probability of error < 2^-80\n *\n * @export\n * @param {number} k\n * @returns {number[]}\n */\nexport function randProbPrime(k: number): number[] {\n if (k >= 600) return randProbPrimeRounds(k, 2) //numbers from HAC table 4.3\n if (k >= 550) return randProbPrimeRounds(k, 4)\n if (k >= 500) return randProbPrimeRounds(k, 5)\n if (k >= 400) return randProbPrimeRounds(k, 6)\n if (k >= 350) return randProbPrimeRounds(k, 7)\n if (k >= 300) return randProbPrimeRounds(k, 9)\n if (k >= 250) return randProbPrimeRounds(k, 12) //numbers from HAC table 4.4\n if (k >= 200) return randProbPrimeRounds(k, 15)\n if (k >= 150) return randProbPrimeRounds(k, 18)\n if (k >= 100) return randProbPrimeRounds(k, 27)\n return randProbPrimeRounds(k, 40) //number from HAC remark 4.26 (only an estimate)\n}\n\n/**\n * return a k-bit probable random prime using n rounds of Miller Rabin\n * (after trial division with small primes)\n *\n * @export\n * @param {number} k\n * @param {number} n\n * @returns {number[]}\n */\nexport function randProbPrimeRounds(k: number, n: number): number[] {\n var ans, i, divisible, B\n B = 30000 //B is largest prime to use in trial division\n ans = int2bigInt(0, k, 0)\n\n //optimization: try larger and smaller B to find the best limit.\n\n if (primes.length === 0) primes = findPrimes(30000) //check for divisibility by primes <=30000\n\n if (rpprb.length !== ans.length) rpprb = dup(ans)\n\n for (;;) {\n //keep trying random values for ans until one appears to be prime\n //optimization: pick a random number times L=2*3*5*...*p, plus a\n // random element of the list of all numbers in [0,L) not divisible by any prime up to p.\n // This can reduce the amount of random number generation.\n\n randBigInt_(ans, k, 0) //ans = a random odd number to check\n ans[0] |= 1\n divisible = 0\n\n //check ans for divisibility by small primes up to B\n for (i = 0; i < primes.length && primes[i] <= B; i++)\n if (modInt(ans, primes[i]) === 0 && !equalsInt(ans, primes[i])) {\n divisible = 1\n break\n }\n\n //optimization: change millerRabin so the base can be bigger than the number being checked, then eliminate the while here.\n\n //do n rounds of Miller Rabin, with random bases less than ans\n for (i = 0; i < n && !divisible; i++) {\n randBigInt_(rpprb, k, 0)\n while (\n !greater(ans, rpprb) //pick a random rpprb that's < ans\n )\n randBigInt_(rpprb, k, 0)\n if (!millerRabin(ans, rpprb)) divisible = 1\n }\n\n if (!divisible) return ans\n }\n /*::\n declare var never: empty\n return never\n */\n}\n\n/**\n * return a new bigInt equal to (x mod n) for bigInts x and n.\n *\n * @param {number[]} x\n * @param {number[]} n\n * @returns {number[]}\n */\nexport function mod(x: number[], n: number[]): number[] {\n var ans = dup(x)\n mod_(ans, n)\n return trim(ans, 1)\n}\n\n/**\n * return (x+n) where x is a bigInt and n is an integer.\n *\n * @export\n * @param {number[]} x\n * @param {number} n\n * @returns {number[]}\n */\nexport function addInt(x: number[], n: number): number[] {\n var ans = expand(x, x.length + 1)\n addInt_(ans, n)\n return trim(ans, 1)\n}\n\n/**\n * return x*y for bigInts x and y. This is faster when y<x.\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @returns {number[]}\n */\nexport function mult(x: number[], y: number[]): number[] {\n var ans = expand(x, x.length + y.length)\n mult_(ans, y)\n return trim(ans, 1)\n}\n\n/**\n * return (x**y mod n) where x,y,n are bigInts and ** is exponentiation.\n *\n * 0**0=1.\n *\n * Faster for odd n.\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @param {number[]} n\n * @returns {number[]}\n */\nexport function powMod(x: number[], y: number[], n: number[]): number[] {\n var ans = expand(x, n.length)\n powMod_(\n //this should work without the trim, but doesn't\n ans,\n trim(y, 2),\n trim(n, 2),\n )\n return trim(ans, 1)\n}\n\n/**\n * Simple pow with no optimizations (in 40x times slower than jsbn's pow)\n * @param x bigInt\n * @param e\n */\nexport function pow(x: number[], e: number) {\n let ans = dup(x);\n e -= 1;\n for(let i = 0; i < e; ++i) {\n ans = mult(ans, x);\n }\n return trim(ans, 1);\n}\n\n/**\n * return (x-y) for bigInts x and y\n *\n * Negative answers will be 2s complement\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @returns {number[]}\n */\nexport function sub(x: number[], y: number[]): number[] {\n var ans = expand(x, x.length > y.length ? x.length + 1 : y.length + 1)\n sub_(ans, y)\n return trim(ans, 1)\n}\n\n/**\n * return (x+y) for bigInts x and y\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @returns {number[]}\n */\nexport function add(x: number[], y: number[]): number[] {\n var ans = expand(x, x.length > y.length ? x.length + 1 : y.length + 1)\n add_(ans, y)\n return trim(ans, 1)\n}\n\n/**\n * return (x**(-1) mod n) for bigInts x and n.\n *\n * If no inverse exists, it returns null\n *\n * @param {number[]} x\n * @param {number[]} n\n * @returns {(number[] | null)}\n */\nexport function inverseMod(x: number[], n: number[]): number[] | null {\n var ans = expand(x, n.length)\n var s = inverseMod_(ans, n)\n return s ? trim(ans, 1) : null\n}\n\n/**\n * return (x*y mod n) for bigInts x,y,n.\n *\n * For greater speed, let y<x.\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @param {number[]} n\n * @returns {number[]}\n */\nexport function multMod(x: number[], y: number[], n: number[]): number[] {\n var ans = expand(x, n.length)\n multMod_(ans, y, n)\n return trim(ans, 1)\n}\n\n/**\n * generate a k-bit true random prime using Maurer's algorithm, and put it into ans.\n *\n * The bigInt ans must be large enough to hold it.\n *\n * @export\n * @param {number[]} ans\n * @param {number} k\n * @return {void}\n */\nexport function randTruePrime_(ans: number[], k: number): void {\n var c, m, pm, dd, j, r, B, divisible, z, zz, recSize\n var w\n if (primes.length == 0) primes = findPrimes(30000) //check for divisibility by primes <=30000\n\n if (pows.length == 0) {\n pows = new Array(512)\n for (j = 0; j < 512; j++) {\n pows[j] = Math.pow(2, j / 511 - 1)\n }\n }\n\n //c and m should be tuned for a particular machine and value of k, to maximize speed\n c = 0.1 //c=0.1 in HAC\n m = 20 //generate this k-bit number by first recursively generating a number that has between k/2 and k-m bits\n var recLimit = 20 //stop recursion when k <=recLimit. Must have recLimit >= 2\n\n if (s_i2.length != ans.length) {\n s_i2 = dup(ans)\n s_R = dup(ans)\n s_n1 = dup(ans)\n s_r2 = dup(ans)\n s_d = dup(ans)\n s_x1 = dup(ans) //TODO Seems like a bug in eslint, reports as unused\n s_x2 = dup(ans)\n s_b = dup(ans)\n s_n = dup(ans)\n s_i = dup(ans)\n s_rm = dup(ans)\n s_q = dup(ans)\n s_a = dup(ans)\n s_aa = dup(ans)\n }\n\n if (k <= recLimit) {\n //generate small random primes by trial division up to its square root\n pm = (1 << ((k + 2) >> 1)) - 1 //pm is binary number with all ones, just over sqrt(2^k)\n copyInt_(ans, 0)\n for (dd = 1; dd; ) {\n dd = 0\n ans[0] = 1 | (1 << (k - 1)) | Math.floor(Math.random() * (1 << k)) //random, k-bit, odd integer, with msb 1\n for (j = 1; j < primes.length && (primes[j] & pm) == primes[j]; j++) {\n //trial division by all primes 3...sqrt(2^k)\n if (0 == ans[0] % primes[j]) {\n dd = 1\n break\n }\n }\n }\n carry_(ans)\n return\n }\n\n B = c * k * k //try small primes up to B (or all the primes[] array if the largest is less than B).\n if (k > 2 * m)\n //generate this k-bit number by first recursively generating a number that has between k/2 and k-m bits\n for (r = 1; k - k * r <= m; ) r = pows[Math.floor(Math.random() * 512)] //r=Math.pow(2,Math.random()-1);\n else r = 0.5\n\n //simulation suggests the more complex algorithm using r=.333 is only slightly faster.\n\n recSize = Math.floor(r * k) + 1\n\n randTruePrime_(s_q, recSize)\n copyInt_(s_i2, 0)\n s_i2[Math.floor((k - 2) / bpe)] |= 1 << ((k - 2) % bpe) //s_i2=2^(k-2)\n divide_(s_i2, s_q, s_i, s_rm) //s_i=floor((2^(k-1))/(2q))\n\n z = bitSize(s_i)\n\n for (;;) {\n for (;;) {\n //generate z-bit numbers until one falls in the range [0,s_i-1]\n randBigInt_(s_R, z, 0)\n if (greater(s_i, s_R)) break\n } //now s_R is in the range [0,s_i-1]\n addInt_(s_R, 1) //now s_R is in the range [1,s_i]\n add_(s_R, s_i) //now s_R is in the range [s_i+1,2*s_i]\n\n copy_(s_n, s_q)\n mult_(s_n, s_R)\n multInt_(s_n, 2)\n addInt_(s_n, 1) //s_n=2*s_R*s_q+1\n\n copy_(s_r2, s_R)\n multInt_(s_r2, 2) //s_r2=2*s_R\n\n //check s_n for divisibility by small primes up to B\n for (divisible = 0, j = 0; j < primes.length && primes[j] < B; j++)\n if (modInt(s_n, primes[j]) == 0 && !equalsInt(s_n, primes[j])) {\n divisible = 1\n break\n }\n\n if (!divisible)\n if (!millerRabinInt(s_n, 2))\n //if it passes small primes check, then try a single Miller-Rabin base 2\n //this line represents 75% of the total runtime for randTruePrime_\n divisible = 1\n\n if (!divisible) {\n //if it passes that test, continue checking s_n\n addInt_(s_n, -3)\n for (j = s_n.length - 1; s_n[j] == 0 && j > 0; j--); //strip leading zeros\n for (zz = 0, w = s_n[j]; w; w >>= 1, zz++);\n zz += bpe * j //zz=number of bits in s_n, ignoring leading zeros\n for (;;) {\n //generate z-bit numbers until one falls in the range [0,s_n-1]\n randBigInt_(s_a, zz, 0)\n if (greater(s_n, s_a)) break\n } //now s_a is in the range [0,s_n-1]\n addInt_(s_n, 3) //now s_a is in the range [0,s_n-4]\n addInt_(s_a, 2) //now s_a is in the range [2,s_n-2]\n copy_(s_b, s_a)\n copy_(s_n1, s_n)\n addInt_(s_n1, -1)\n powMod_(s_b, s_n1, s_n) //s_b=s_a^(s_n-1) modulo s_n\n addInt_(s_b, -1)\n if (isZero(s_b)) {\n copy_(s_b, s_a)\n powMod_(s_b, s_r2, s_n)\n addInt_(s_b, -1)\n copy_(s_aa, s_n)\n copy_(s_d, s_b)\n GCD_(s_d, s_n) //if s_b and s_n are relatively prime, then s_n is a prime\n if (equalsInt(s_d, 1)) {\n copy_(ans, s_aa)\n return //if we've made it this far, then s_n is absolutely guaranteed to be prime\n }\n }\n }\n }\n}\n\n/**\n * Return an n-bit random BigInt (n>=1). If s=1, then the most significant of those n bits is set to 1.\n *\n * @export\n * @param {number} n\n * @param {number} s\n * @returns {number[]}\n */\nexport function randBigInt(n: number, s: number): number[] {\n var a, b\n a = Math.floor((n - 1) / bpe) + 2 //# array elements to hold the BigInt with a leading 0 element\n b = int2bigInt(0, 0, a)\n randBigInt_(b, n, s)\n return b\n}\n\n/**\n * Set b to an n-bit random BigInt. If s=1, then the most significant of those n bits is set to 1.\n *\n * Array b must be big enough to hold the result. Must have n>=1\n *\n * @export\n * @param {number[]} b\n * @param {number} n\n * @param {number} s\n * @return {void}\n */\nexport function randBigInt_(b: number[], n: number, s: number): void {\n var i, a\n for (i = 0; i < b.length; i++) b[i] = 0\n a = Math.floor((n - 1) / bpe) + 1 //# array elements to hold the BigInt\n for (i = 0; i < a; i++) {\n b[i] = Math.floor(Math.random() * (1 << (bpe - 1)))\n }\n b[a - 1] &= (2 << ((n - 1) % bpe)) - 1\n if (s == 1) b[a - 1] |= 1 << ((n - 1) % bpe)\n}\n\n/**\n * Return the greatest common divisor of bigInts x and y (each with same number of elements).\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @returns {number[]}\n */\nexport function GCD(x: number[], y: number[]): number[] {\n var xc, yc\n xc = dup(x)\n yc = dup(y)\n GCD_(xc, yc)\n return xc\n}\n\n/**\n * set x to the greatest common divisor of bigInts x and y (each with same number of elements).\n *\n * y is destroyed.\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n */\nexport function GCD_(x: number[], y: number[]): void {\n var i: number, xp: number, yp: number, A: number, B, C: number, D: number, q, sing\n var qp\n if (T.length !== x.length) T = dup(x)\n\n sing = 1\n while (sing) {\n //while y has nonzero elements other than y[0]\n sing = 0\n for (\n i = 1;\n i < y.length;\n i++ //check if y has nonzero elements other than 0\n )\n if (y[i]) {\n sing = 1\n break\n }\n if (!sing) break //quit when y all zero elements except possibly y[0]\n\n for (i = x.length; !x[i] && i >= 0; i--); //find most significant element of x\n xp = x[i]\n yp = y[i]\n A = 1\n B = 0\n C = 0\n D = 1\n while (yp + C && yp + D) {\n q = Math.floor((xp + A) / (yp + C))\n qp = Math.floor((xp + B) / (yp + D))\n if (q != qp) break\n t = A - q * C\n A = C\n C = t // do (A,B,xp, C,D,yp) = (C,D,yp, A,B,xp) - q*(0,0,0, C,D,yp)\n t = B - q * D\n B = D\n D = t\n t = xp - q * yp\n xp = yp\n yp = t\n }\n if (B) {\n copy_(T, x)\n linComb_(x, y, A, B) //x=A*x+B*y\n linComb_(y, T, D, C) //y=D*y+C*T\n } else {\n mod_(x, y)\n copy_(T, x)\n copy_(x, y)\n copy_(y, T)\n }\n }\n if (y[0] === 0) return\n t = modInt(x, y[0])\n copyInt_(x, y[0])\n y[0] = t\n while (y[0]) {\n x[0] %= y[0]\n t = x[0]\n x[0] = y[0]\n y[0] = t\n }\n}\n\n/**\n * do x=x**(-1) mod n, for bigInts x and n.\n *\n * If no inverse exists, it sets x to zero and returns 0, else it returns 1.\n * The x array must be at least as large as the n array.\n *\n * @export\n * @param {number[]} x\n * @param {number[]} n\n * @returns {(0 | 1)}\n */\nexport function inverseMod_(x: number[], n: number[]): Bool {\n var k = 1 + 2 * Math.max(x.length, n.length)\n\n if (!(x[0] & 1) && !(n[0] & 1)) {\n //if both inputs are even, then inverse doesn't exist\n copyInt_(x, 0)\n return 0\n }\n\n if (eg_u.length != k) {\n eg_u = new Array(k)\n eg_v = new Array(k)\n eg_A = new Array(k)\n eg_B = new Array(k)\n eg_C = new Array(k)\n eg_D = new Array(k)\n }\n\n copy_(eg_u, x)\n copy_(eg_v, n)\n copyInt_(eg_A, 1)\n copyInt_(eg_B, 0)\n copyInt_(eg_C, 0)\n copyInt_(eg_D, 1)\n for (;;) {\n while (!(eg_u[0] & 1)) {\n //while eg_u is even\n halve_(eg_u)\n if (!(eg_A[0] & 1) && !(eg_B[0] & 1)) {\n //if eg_A==eg_B==0 mod 2\n halve_(eg_A)\n halve_(eg_B)\n } else {\n add_(eg_A, n)\n halve_(eg_A)\n sub_(eg_B, x)\n halve_(eg_B)\n }\n }\n\n while (!(eg_v[0] & 1)) {\n //while eg_v is even\n halve_(eg_v)\n if (!(eg_C[0] & 1) && !(eg_D[0] & 1)) {\n //if eg_C==eg_D==0 mod 2\n halve_(eg_C)\n halve_(eg_D)\n } else {\n add_(eg_C, n)\n halve_(eg_C)\n sub_(eg_D, x)\n halve_(eg_D)\n }\n }\n\n if (!greater(eg_v, eg_u)) {\n //eg_v <= eg_u\n sub_(eg_u, eg_v)\n sub_(eg_A, eg_C)\n sub_(eg_B, eg_D)\n } else {\n //eg_v > eg_u\n sub_(eg_v, eg_u)\n sub_(eg_C, eg_A)\n sub_(eg_D, eg_B)\n }\n\n if (equalsInt(eg_u, 0)) {\n while (\n negative(eg_C) //make sure answer is nonnegative\n )\n add_(eg_C, n)\n copy_(x, eg_C)\n\n if (!equalsInt(eg_v, 1)) {\n //if GCD_(x,n)!=1, then there is no inverse\n copyInt_(x, 0)\n return 0\n }\n return 1\n }\n }\n /*::\n declare var never: empty\n return never\n */\n}\n\n/**\n * return x**(-1) mod n, for integers x and n.\n *\n * Return 0 if there is no inverse\n *\n * @param {number} x\n * @param {number} n\n * @returns {number}\n */\nexport function inverseModInt(x: number, n: number): number {\n var a = 1,\n b = 0,\n t\n for (;;) {\n if (x === 1) return a\n if (x === 0) return 0\n b -= a * Math.floor(n / x)\n //$off\n n %= x\n\n if (n === 1) return b //to avoid negatives, change this b to n-b, and each -= to +=\n if (n === 0) return 0\n a -= b * Math.floor(x / n)\n //$off\n x %= n\n }\n /*::\n declare var never: empty\n return never\n */\n}\n\n//this deprecated function is for backward compatibility only.\nfunction inverseModInt_(x: number, n: number) {\n return inverseModInt(x, n)\n}\n\n/**\n * Given positive bigInts x and y, change the bigints v, a, and b to positive bigInts such that:\n *\n * v = GCD_(x,y) = a*x-b*y\n *\n * The bigInts v, a, b, must have exactly as many elements as the larger of x and y.\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @param {number[]} v\n * @param {number[]} a\n * @param {number[]} b\n * @return {void}\n */\nexport function eGCD_(\n x: number[],\n y: number[],\n v: number[],\n a: number[],\n b: number[],\n): void {\n var g = 0\n var k = Math.max(x.length, y.length)\n if (eg_u.length != k) {\n eg_u = new Array(k)\n eg_A = new Array(k)\n eg_B = new Array(k)\n eg_C = new Array(k)\n eg_D = new Array(k)\n }\n while (!(x[0] & 1) && !(y[0] & 1)) {\n //while x and y both even\n halve_(x)\n halve_(y)\n g++\n }\n copy_(eg_u, x)\n copy_(v, y)\n copyInt_(eg_A, 1)\n copyInt_(eg_B, 0)\n copyInt_(eg_C, 0)\n copyInt_(eg_D, 1)\n for (;;) {\n while (!(eg_u[0] & 1)) {\n //while u is even\n halve_(eg_u)\n if (!(eg_A[0] & 1) && !(eg_B[0] & 1)) {\n //if A==B==0 mod 2\n halve_(eg_A)\n halve_(eg_B)\n } else {\n add_(eg_A, y)\n halve_(eg_A)\n sub_(eg_B, x)\n halve_(eg_B)\n }\n }\n\n while (!(v[0] & 1)) {\n //while v is even\n halve_(v)\n if (!(eg_C[0] & 1) && !(eg_D[0] & 1)) {\n //if C==D==0 mod 2\n halve_(eg_C)\n halve_(eg_D)\n } else {\n add_(eg_C, y)\n halve_(eg_C)\n sub_(eg_D, x)\n halve_(eg_D)\n }\n }\n\n if (!greater(v, eg_u)) {\n //v<=u\n sub_(eg_u, v)\n sub_(eg_A, eg_C)\n sub_(eg_B, eg_D)\n } else {\n //v>u\n sub_(v, eg_u)\n sub_(eg_C, eg_A)\n sub_(eg_D, eg_B)\n }\n if (equalsInt(eg_u, 0)) {\n while (negative(eg_C)) {\n //make sure a (C) is nonnegative\n add_(eg_C, y)\n sub_(eg_D, x)\n }\n multInt_(eg_D, -1) ///make sure b (D) is nonnegative\n copy_(a, eg_C)\n copy_(b, eg_D)\n leftShift_(v, g)\n return\n }\n }\n}\n\n/**\n * is bigInt x negative?\n *\n * @param {number[]} x\n * @returns {(1 | 0)}\n */\nexport function negative(x: number[]) {\n //TODO Flow Bool type inference\n return (x[x.length - 1] >> (bpe - 1)) & 1\n}\n\n/**\n * is (x << (shift*bpe)) > y?\n *\n * x and y are nonnegative bigInts\n * shift is a nonnegative integer\n *\n * @param {number[]} x\n * @param {number[]} y\n * @param {number} shift\n * @returns {(1 | 0)}\n */\nexport function greaterShift(x: number[], y: number[], shift: number): Bool {\n var i,\n kx = x.length,\n ky = y.length\n k = kx + shift < ky ? kx + shift : ky\n for (i = ky - 1 - shift; i < kx && i >= 0; i++) if (x[i] > 0) return 1 //if there are nonzeros in x to the left of the first column of y, then x is bigger\n for (i = kx - 1 + shift; i < ky; i++) if (y[i] > 0) return 0 //if there are nonzeros in y to the left of the first column of x, then x is not bigger\n for (i = k - 1; i >= shift; i--)\n if (x[i - shift] > y[i]) return 1\n else if (x[i - shift] < y[i]) return 0\n return 0\n}\n\n/**\n * is x > y?\n *\n * x and y both nonnegative\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @returns {(1 | 0)}\n */\nexport function greater(x: number[], y: number[]): Bool {\n var i\n var k = x.length < y.length ? x.length : y.length\n\n for (i = x.length; i < y.length; i++) if (y[i]) return 0 //y has more digits\n\n for (i = y.length; i < x.length; i++) if (x[i]) return 1 //x has more digits\n\n for (i = k - 1; i >= 0; i--)\n if (x[i] > y[i]) return 1\n else if (x[i] < y[i]) return 0\n return 0\n}\n\n/**\n * divide x by y giving quotient q and remainder r.\n *\n * q = floor(x/y)\n * r = x mod y\n *\n * All 4 are bigints.\n *\n * * x must have at least one leading zero element.\n * * y must be nonzero.\n * * q and r must be arrays that are exactly the same length as x. (Or q can have more).\n * * Must have x.length >= y.length >= 2.\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @param {number[]} q\n * @param {number[]} r\n * @return {void}\n */\nexport function divide_(\n x: number[],\n y: number[],\n q: number[],\n r: number[],\n): void {\n var kx, ky\n var i, j, y1, y2, c, a, b\n copy_(r, x)\n for (ky = y.length; y[ky - 1] === 0; ky--); //ky is number of elements in y, not including leading zeros\n\n //normalize: ensure the most significant element of y has its highest bit set\n b = y[ky - 1]\n for (a = 0; b; a++) b >>= 1\n a = bpe - a //a is how many bits to shift so that the high order bit of y is leftmost in its array element\n leftShift_(y, a) //multiply both by 1<<a now, then divide both by that at the end\n leftShift_(r, a)\n\n //Rob Visser discovered a bug: the following line was originally just before the normalization.\n for (kx = r.length; r[kx - 1] === 0 && kx > ky; kx--); //kx is number of elements in normalized x, not including leading zeros\n\n copyInt_(q, 0) // q=0\n while (!greaterShift(y, r, kx - ky)) {\n // while (leftShift_(y,kx-ky) <= r) {\n subShift_(r, y, kx - ky) // r=r-leftShift_(y,kx-ky)\n q[kx - ky]++ // q[kx-ky]++;\n } // }\n\n for (i = kx - 1; i >= ky; i--) {\n if (r[i] == y[ky - 1]) q[i - ky] = mask\n else q[i - ky] = Math.floor((r[i] * radix + r[i - 1]) / y[ky - 1])\n\n //The following for(;;) loop is equivalent to the commented while loop,\n //except that the uncommented version avoids overflow.\n //The commented loop comes from HAC, which assumes r[-1]==y[-1]==0\n // while (q[i-ky]*(y[ky-1]*radix+y[ky-2]) > r[i]*radix*radix+r[i-1]*radix+r[i-2])\n // q[i-ky]--;\n for (;;) {\n y2 = (ky > 1 ? y[ky - 2] : 0) * q[i - ky]\n c = y2 >> bpe\n y2 = y2 & mask\n y1 = c + q[i - ky] * y[ky - 1]\n c = y1 >> bpe\n y1 = y1 & mask\n\n if (\n c == r[i]\n ? y1 == r[i - 1] ? y2 > (i > 1 ? r[i - 2] : 0) : y1 > r[i - 1]\n : c > r[i]\n )\n q[i - ky]--\n else break\n }\n\n linCombShift_(r, y, -q[i - ky], i - ky) //r=r-q[i-ky]*leftShift_(y,i-ky)\n if (negative(r)) {\n addShift_(r, y, i - ky) //r=r+leftShift_(y,i-ky)\n q[i - ky]--\n }\n }\n\n rightShift_(y, a) //undo the normalization step\n rightShift_(r, a) //undo the normalization step\n}\n\n/**\n * do carries and borrows so each element of the bigInt x fits in bpe bits.\n *\n * @param {number[]} x\n */\nexport function carry_(x: number[]): void {\n var i, k, c, b\n k = x.length\n c = 0\n for (i = 0; i < k; i++) {\n c += x[i]\n b = 0\n if (c < 0) {\n b = -(c >> bpe)\n c += b * radix\n }\n x[i] = c & mask\n c = (c >> bpe) - b\n }\n}\n\n/**\n * return x mod n for bigInt x and integer n.\n *\n * @export\n * @param {number[]} x\n * @param {number} n\n * @returns {number}\n */\nexport function modInt(x: number[], n: number): number {\n var i,\n c = 0\n for (i = x.length - 1; i >= 0; i--) c = (c * radix + x[i]) % n\n return c\n}\n\n/**\n * convert the integer t into a bigInt with at least the given number of bits.\n * the returned array stores the bigInt in bpe-bit chunks, little endian (buff[0] is least significant word)\n * Pad the array with leading zeros so that it has at least minSize elements.\n *\n * There will always be at least one leading 0 element.\n *\n * @export\n * @param {number} t\n * @param {number} bits\n * @param {number} minSize\n * @returns {number[]}\n */\nexport function int2bigInt(t: number, bits: number, minSize: number): number[] {\n var i, k\n k = Math.ceil(bits / bpe) + 1\n k = minSize > k ? minSize : k\n var buff = new Array(k)\n copyInt_(buff, t)\n return buff\n}\n\n/**\n * return the bigInt given a string representation in a given base.\n * Pad the array with leading zeros so that it has at least minSize elements.\n * If base=-1, then it reads in a space-separated list of array elements in decimal.\n *\n * The array will always have at least one leading zero, unless base=-1.\n *\n * @export\n * @param {string} s\n * @param {number} base\n * @param {number} [minSize]\n * @returns {number[]}\n */\nexport function str2bigInt(\n s: string,\n base: number,\n minSize?: number,\n): number[] {\n var d, i, x, y, kk\n var k = s.length\n if (base === -1) {\n //comma-separated list of array elements in decimal\n x = new Array(0)\n for (;;) {\n y = new Array(x.length + 1)\n for (i = 0; i < x.length; i++) y[i + 1] = x[i]\n y[0] = parseInt(s, 10) //TODO PERF Should we replace that with ~~ (not not)? https://jsperf.com/number-vs-parseint-vs-plus/7\n x = y\n d = s.indexOf(',', 0)\n if (d < 1) break\n //$off\n s = s.substring(d + 1)\n if (s.length == 0) break\n }\n //$off\n if (x.length < minSize) {\n //$off\n y = new Array(minSize)\n copy_(y, x)\n return y\n }\n return x\n }\n\n x = int2bigInt(0, base * k, 0)\n for (i = 0; i < k; i++) {\n d = digitsStr.indexOf(s.substring(i, i + 1), 0)\n if (base <= 36 && d >= 36)\n //convert lowercase to uppercase if base<=36\n d -= 26\n if (d >= base || d < 0) {\n //stop at first illegal character\n break\n }\n multInt_(x, base)\n addInt_(x, d)\n }\n\n for (k = x.length; k > 0 && !x[k - 1]; k--); //strip off leading zeros\n //$off\n k = minSize > k + 1 ? minSize : k + 1\n //$off\n y = new Array(k)\n //$off\n kk = k < x.length ? k : x.length\n //$off\n for (i = 0; i < kk; i++) y[i] = x[i]\n //$off\n for (; i < k; i++) y[i] = 0\n return y\n}\n\n//return the bigInt given a string representation in a given base.\n//Pad the array with leading zeros so that it has at least minSize elements.\n//If base=-1, then it reads in a space-separated list of array elements in decimal.\n//The array will always have at least one leading zero, unless base=-1.\n// function str2bigInt(s,b,minSize) {\n// var d, i, j, base, str, x, y, kk;\n// if (typeof b === 'string') {\n// base = b.length;\n// str = b;\n// } else {\n// base = b;\n// str = digitsStr;\n// }\n// var k=s.length;\n// if (base==-1) { //comma-separated list of array elements in decimal\n// x=new Array(0);\n// for (;;) {\n// y=new Array(x.length+1);\n// for (i=0;i<x.length;i++)\n// y[i+1]=x[i];\n// y[0]=parseInt(s,10);\n// x=y;\n// d=s.indexOf(',',0);\n// if (d<1)\n// break;\n// s=s.substring(d+1);\n// if (s.length==0)\n// break;\n// }\n// if (x.length<minSize) {\n// y=new Array(minSize);\n// copy_(y,x);\n// return y;\n// }\n// return x;\n// }\n\n// x=int2bigInt(0,base*k,0);\n// for (i=0;i<k;i++) {\n// d=str.indexOf(s.substring(i,i+1),0);\n// if (base<=36 && d>=36) { //convert lowercase to uppercase if base<=36\n// d-=26;\n// }\n// if (d>=base || d<0) { //ignore illegal characters\n// continue;\n// }\n// multInt_(x,base);\n// addInt_(x,d);\n// }\n\n// for (k=x.length;k>0 && !x[k-1];k--); //strip off leading zeros\n// k=minSize>k+1 ? minSize : k+1;\n// y=new Array(k);\n// kk=k<x.length ? k : x.length;\n// for (i=0;i<kk;i++)\n// y[i]=x[i];\n// for (;i<k;i++)\n// y[i]=0;\n// return y;\n// }\n\n/**\n * is bigint x equal to integer y?\n *\n * y must have less than bpe bits\n *\n * @export\n * @param {number[]} x\n * @param {number} y\n * @returns {(1 | 0)}\n */\nexport function equalsInt(x: number[], y: number): Bool {\n var i\n if (x[0] != y) return 0\n for (i = 1; i < x.length; i++) if (x[i]) return 0\n return 1\n}\n\n/**\n * are bigints x and y equal?\n *\n * this works even if x and y are different lengths and have arbitrarily many leading zeros\n *\n * @param {number[]} x\n * @param {number[]} y\n * @returns {(1 | 0)}\n */\nexport function equals(x: number[], y: number[]): Bool {\n var i\n var k = x.length < y.length ? x.length : y.length\n for (i = 0; i < k; i++) if (x[i] !== y[i]) return 0\n if (x.length > y.length) {\n for (; i < x.length; i++) if (x[i]) return 0\n } else {\n for (; i < y.length; i++) if (y[i]) return 0\n }\n return 1\n}\n\n/**\n * is the bigInt x equal to zero?\n *\n * @export\n * @param {number[]} x\n * @returns {(1 | 0)}\n */\nexport function isZero(x: number[]): Bool {\n var i\n for (i = 0; i < x.length; i++) if (x[i]) return 0\n return 1\n}\n\n/**\n * Convert a bigInt into a string in a given base, from base 2 up to base 95.\n *\n * Base -1 prints the contents of the array representing the number.\n *\n * @export\n * @param {number[]} x\n * @param {number} base\n * @returns {string}\n */\nexport function bigInt2str(x: number[], base: number): string {\n var i,\n t,\n s = ''\n\n if (s6.length !== x.length) s6 = dup(x)\n else copy_(s6, x)\n\n if (base === -1) {\n //return the list of array contents\n for (i = x.length - 1; i > 0; i--) s += x[i] + ','\n s += x[0]\n } else {\n //return it in the given base\n while (!isZero(s6)) {\n t = divInt_(s6, base) //t=s6 % base; s6=floor(s6/base);\n s = digitsStr.substring(t, t + 1) + s\n }\n }\n if (s.length === 0) s = '0'\n return s\n}\n\n/**\n * Convert a bigInt into bytes\n * @param x bigInt\n * @param littleEndian byte order by default\n */\nexport function bigInt2bytes(x: number[], littleEndian = true) {\n if(s6.length !== x.length) s6 = dup(x);\n else copy_(s6, x);\n\n const out: number[] = [];\n\n //console.log('bigInt2bytes');\n while(!isZero(s6)) {\n t = divInt_(s6, 256); //t=s6 % base; s6=floor(s6/base);\n out.push(t);\n //console.log('bigInt2bytes', t);\n }\n\n if(littleEndian) {\n out.reverse();\n }\n\n //console.log('bigInt2bytes', out);\n\n return out;\n}\n\n/**\n * Compare two bigInts and return -1 if x is less, 0 if equals, 1 if greater\n * @param x bigInt\n * @param y bigInt\n */\nexport function cmp(x: number[], y: number[]) {\n return greater(x, y) ? 1 : (equals(x, y) ? 0 : -1);\n}\n\n/* Object.assign(self, {\n cmp,\n str2bigInt,\n int2bigInt,\n bigInt2str,\n one,\n divide_,\n divInt_,\n dup,\n negative\n}); */\n\n/**\n * Returns a duplicate of bigInt x\n *\n * @export\n * @param {number[]} x\n * @returns {number[]}\n */\nexport function dup(x: number[]): number[] {\n var i\n buff = Array(x.length)\n copy_(buff, x)\n return buff\n}\n\n/**\n * do x=y on bigInts x and y.\n *\n * x must be an array at least as big as y (not counting the leading zeros in y).\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @returns {void}\n */\nexport function copy_(x: number[], y: number[]): void {\n var i\n var k = x.length < y.length ? x.length : y.length\n for (i = 0; i < k; i++) x[i] = y[i]\n for (i = k; i < x.length; i++) x[i] = 0\n}\n\n/**\n * do x=y on bigInt x and integer y.\n *\n * @export\n * @param {number[]} x\n * @param {number} n\n * @returns {void}\n */\nexport function copyInt_(x: number[], n: number): void {\n var i, c\n var len = x.length //TODO .length in for loop have perfomance costs. Bench this\n for (c = n, i = 0; i < len; i++) {\n x[i] = c & mask\n c >>= bpe\n }\n}\n\n/**\n * do x=x+n where x is a bigInt and n is an integer.\n *\n * x must be large enough to hold the result.\n *\n * @export\n * @param {number[]} x\n * @param {number} n\n * @returns {void}\n */\nexport function addInt_(x: number[], n: number): void {\n var i, k, c, b\n x[0] += n\n k = x.length\n c = 0\n for (i = 0; i < k; i++) {\n c += x[i]\n b = 0\n if (c < 0) {\n b = -(c >> bpe)\n c += b * radix\n }\n x[i] = c & mask\n c = (c >> bpe) - b\n if (!c) return //stop carrying as soon as the carry is zero\n }\n}\n\n/**\n * right shift bigInt x by n bits.\n *\n * 0 <= n < bpe.\n *\n * @export\n * @param {number[]} x\n * @param {number} n\n */\nexport function rightShift_(x: number[], n: number): void {\n var i\n var k = Math.floor(n / bpe)\n if (k) {\n for (\n i = 0;\n i < x.length - k;\n i++ //right shift x by k elements\n )\n x[i] = x[i + k]\n for (; i < x.length; i++) x[i] = 0\n //$off\n n %= bpe\n }\n for (i = 0; i < x.length - 1; i++) {\n x[i] = mask & ((x[i + 1] << (bpe - n)) | (x[i] >> n))\n }\n x[i] >>= n\n}\n\n/**\n * do x=floor(|x|/2)*sgn(x) for bigInt x in 2's complement\n *\n * @param {number[]} x\n * @returns {void}\n */\nexport function halve_(x: number[]): void {\n var i\n for (i = 0; i < x.length - 1; i++) {\n x[i] = mask & ((x[i + 1] << (bpe - 1)) | (x[i] >> 1))\n }\n x[i] = (x[i] >> 1) | (x[i] & (radix >> 1)) //most significant bit stays the same\n}\n\n/**\n * left shift bigInt x by n bits\n *\n * @export\n * @param {number[]} x\n * @param {number} n\n * @returns {void}\n */\nexport function leftShift_(x: number[], n: number): void {\n var i\n var k = Math.floor(n / bpe)\n if (k) {\n for (\n i = x.length;\n i >= k;\n i-- //left shift x by k elements\n )\n x[i] = x[i - k]\n for (; i >= 0; i--) x[i] = 0\n //$off\n n %= bpe\n }\n if (!n) return\n for (i = x.length - 1; i > 0; i--) {\n x[i] = mask & ((x[i] << n) | (x[i - 1] >> (bpe - n)))\n }\n x[i] = mask & (x[i] << n)\n}\n\n/**\n * do x=x*n where x is a bigInt and n is an integer.\n *\n * x must be large enough to hold the result.\n *\n * @param {number[]} x\n * @param {number} n\n * @returns {void}\n */\nexport function multInt_(x: number[], n: number): void {\n var i, k, c, b\n if (!n) return\n k = x.length\n c = 0\n for (i = 0; i < k; i++) {\n c += x[i] * n\n b = 0\n if (c < 0) {\n b = -(c >> bpe)\n c += b * radix\n }\n x[i] = c & mask\n c = (c >> bpe) - b\n }\n}\n\n/**\n * do x=floor(x/n) for bigInt x and integer n, and return the remainder\n *\n * @param {number[]} x\n * @param {number} n\n * @returns {number} remainder\n */\nexport function divInt_(x: number[], n: number): number {\n var i,\n r = 0,\n s\n for (i = x.length - 1; i >= 0; i--) {\n s = r * radix + x[i]\n x[i] = Math.floor(s / n)\n r = s % n\n }\n return r\n}\n\n/**\n * do the linear combination x=a*x+b*y for bigInts x and y, and integers a and b.\n *\n * x must be large enough to hold the answer.\n *\n * @param {number[]} x\n * @param {number[]} y\n * @param {number} a\n * @param {number} b\n * @returns {void}\n */\nexport function linComb_(x: number[], y: number[], a: number, b: number): void {\n var i, c, k, kk\n k = x.length < y.length ? x.length : y.length\n kk = x.length\n for (c = 0, i = 0; i < k; i++) {\n c += a * x[i] + b * y[i]\n x[i] = c & mask\n c >>= bpe\n }\n for (i = k; i < kk; i++) {\n c += a * x[i]\n x[i] = c & mask\n c >>= bpe\n }\n}\n\n/**\n * do the linear combination x=a*x+b*(y<<(ys*bpe)) for bigInts x and y, and integers a, b and ys.\n *\n * x must be large enough to hold the answer.\n *\n * @param {number[]} x\n * @param {number[]} y\n * @param {number} b\n * @param {number} ys\n * @returns {void}\n */\nexport function linCombShift_(\n x: number[],\n y: number[],\n b: number,\n ys: number,\n): void {\n var i, c, k, kk\n k = x.length < ys + y.length ? x.length : ys + y.length\n kk = x.length\n for (c = 0, i = ys; i < k; i++) {\n c += x[i] + b * y[i - ys]\n x[i] = c & mask\n c >>= bpe\n }\n for (i = k; c && i < kk; i++) {\n c += x[i]\n x[i] = c & mask\n c >>= bpe\n }\n}\n\n/**\n * do x=x+(y<<(ys*bpe)) for bigInts x and y, and integer ys.\n *\n * x must be large enough to hold the answer.\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @param {number} ys\n * @return {void}\n */\nexport function addShift_(x: number[], y: number[], ys: number): void {\n var i, c, k, kk\n k = x.length < ys + y.length ? x.length : ys + y.length\n kk = x.length\n for (c = 0, i = ys; i < k; i++) {\n c += x[i] + y[i - ys]\n x[i] = c & mask\n c >>= bpe\n }\n for (i = k; c && i < kk; i++) {\n c += x[i]\n x[i] = c & mask\n c >>= bpe\n }\n}\n\n/**\n * do x=x-(y<<(ys*bpe)) for bigInts x and y, and integer ys\n *\n * x must be large enough to hold the answer\n *\n * @param {number[]} x\n * @param {number[]} y\n * @param {number} ys\n * @return {void}\n */\nexport function subShift_(x: number[], y: number[], ys: number): void {\n var i, c, k, kk\n k = x.length < ys + y.length ? x.length : ys + y.length\n kk = x.length\n for (c = 0, i = ys; i < k; i++) {\n c += x[i] - y[i - ys]\n x[i] = c & mask\n c >>= bpe\n }\n for (i = k; c && i < kk; i++) {\n c += x[i]\n x[i] = c & mask\n c >>= bpe\n }\n}\n\n/**\n * do x=x-y for bigInts x and y\n *\n * x must be large enough to hold the answer\n *\n * negative answers will be 2s complement\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @return {void}\n */\nexport function sub_(x: number[], y: number[]): void {\n var i, c, k, kk\n k = x.length < y.length ? x.length : y.length\n for (c = 0, i = 0; i < k; i++) {\n c += x[i] - y[i]\n x[i] = c & mask\n c >>= bpe\n }\n for (i = k; c && i < x.length; i++) {\n c += x[i]\n x[i] = c & mask\n c >>= bpe\n }\n}\n\n/**\n * do x=x+y for bigInts x and y\n *\n * x must be large enough to hold the answer\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @return {void}\n */\nexport function add_(x: number[], y: number[]): void {\n var i, c, k, kk\n k = x.length < y.length ? x.length : y.length\n for (c = 0, i = 0; i < k; i++) {\n c += x[i] + y[i]\n x[i] = c & mask\n c >>= bpe\n }\n for (i = k; c && i < x.length; i++) {\n c += x[i]\n x[i] = c & mask\n c >>= bpe\n }\n}\n\n/**\n * do x=x*y for bigInts x and y.\n *\n * This is faster when y<x.\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @return {void}\n */\nexport function mult_(x: number[], y: number[]): void {\n var i\n if (ss.length != 2 * x.length) ss = new Array(2 * x.length)\n copyInt_(ss, 0)\n for (i = 0; i < y.length; i++) if (y[i]) linCombShift_(ss, x, y[i], i) //ss=1*ss+y[i]*(x<<(i*bpe))\n copy_(x, ss)\n}\n\n/**\n * do x=x mod n for bigInts x and n\n *\n * @export\n * @param {number[]} x\n * @param {number[]} n\n * @return {void}\n */\nexport function mod_(x: number[], n: number[]): void {\n if (s4.length !== x.length) s4 = dup(x)\n else copy_(s4, x)\n if (s5.length !== x.length) s5 = dup(x)\n divide_(s4, n, s5, x) //x = remainder of s4 / n\n}\n\n/**\n * do x=x*y mod n for bigInts x,y,n.\n *\n * for greater speed, let y<x.\n *\n * @param {number[]} x\n * @param {number[]} y\n * @param {number[]} n\n * @return {void}\n */\nexport function multMod_(x: number[], y: number[], n: number[]): void {\n var i\n if (s0.length != 2 * x.length) s0 = new Array(2 * x.length)\n copyInt_(s0, 0)\n for (i = 0; i < y.length; i++) if (y[i]) linCombShift_(s0, x, y[i], i) //s0=1*s0+y[i]*(x<<(i*bpe))\n mod_(s0, n)\n copy_(x, s0)\n}\n\n/**\n * do x=x*x mod n for bigInts x,n.\n *\n * @export\n * @param {number[]} x\n * @param {number[]} n\n * @return {void}\n */\nexport function squareMod_(x: number[], n: number[]): void {\n var i, j, d, c, kx, kn, k\n for (kx = x.length; kx > 0 && !x[kx - 1]; kx--); //ignore leading zeros in x\n k = kx > n.length ? 2 * kx : 2 * n.length //k=# elements in the product, which is twice the elements in the larger of x and n\n if (s0.length != k) s0 = new Array(k)\n copyInt_(s0, 0)\n for (i = 0; i < kx; i++) {\n c = s0[2 * i] + x[i] * x[i]\n s0[2 * i] = c & mask\n c >>= bpe\n for (j = i + 1; j < kx; j++) {\n c = s0[i + j] + 2 * x[i] * x[j] + c\n s0[i + j] = c & mask\n c >>= bpe\n }\n s0[i + kx] = c\n }\n mod_(s0, n)\n copy_(x, s0)\n}\n\n/**\n * return x with exactly k leading zero elements\n *\n * @export\n * @param {number[]} x\n * @param {number} k\n * @returns {number[]}\n */\nexport function trim(x: number[], k: number): number[] {\n var i, y\n for (i = x.length; i > 0 && !x[i - 1]; i--);\n y = new Array(i + k)\n copy_(y, x)\n return y\n}\n\n/**\n * do `x=x**y mod n`, where x,y,n are bigInts and `**` is exponentiation. `0**0=1`.\n *\n * this is faster when n is odd.\n *\n * x usually needs to have as many elements as n.\n *\n * @param {number[]} x\n * @param {number[]} y\n * @param {number[]} n\n * @return {void}\n */\nexport function powMod_(x: number[], y: number[], n: number[]): void {\n var k1, k2, kn, np\n if (s7.length != n.length) s7 = dup(n)\n\n //for even modulus, use a simple square-and-multiply algorithm,\n //rather than using the more complex Montgomery algorithm.\n if ((n[0] & 1) == 0) {\n copy_(s7, x)\n copyInt_(x, 1)\n while (!equalsInt(y, 0)) {\n if (y[0] & 1) multMod_(x, s7, n)\n divInt_(y, 2)\n squareMod_(s7, n)\n }\n return\n }\n\n //calculate np from n for the Montgomery multiplications\n copyInt_(s7, 0)\n for (kn = n.length; kn > 0 && !n[kn - 1]; kn--);\n np = radix - inverseModInt(modInt(n, radix), radix)\n s7[kn] = 1\n multMod_(x, s7, n) // x = x * 2**(kn*bp) mod n\n\n if (s3.length != x.length) s3 = dup(x)\n else copy_(s3, x)\n //$off\n // @ts-ignore\n for (k1 = y.length - 1; (k1 > 0) & !y[k1]; k1--); //k1=first nonzero element of y\n if (y[k1] == 0) {\n //anything to the 0th power is 1\n copyInt_(x, 1)\n return\n }\n for (k2 = 1 << (bpe - 1); k2 && !(y[k1] & k2); k2 >>= 1); //k2=position of first 1 bit in y[k1]\n for (;;) {\n if (!(k2 >>= 1)) {\n //look at next bit of y\n k1--\n if (k1 < 0) {\n mont_(x, one, n, np)\n return\n }\n k2 = 1 << (bpe - 1)\n }\n mont_(x, x, n, np)\n\n if (k2 & y[k1])\n //if next bit is a 1\n mont_(x, s3, n, np)\n }\n}\n\n/**\n * do x=x*y*Ri mod n for bigInts x,y,n,\n * where Ri = 2**(-kn*bpe) mod n, and kn is the\n * number of elements in the n array, not\n * counting leading zeros.\n *\n * x array must have at least as many elemnts as the n array\n * It's OK if x and y are the same variable.\n *\n * must have:\n * * x,y < n\n * * n is odd\n * * np = -(n^(-1)) mod radix\n *\n * @export\n * @param {number[]} x\n * @param {number[]} y\n * @param {number[]} n\n * @param {number} np\n * @return {void}\n */\nexport function mont_(x: number[], y: number[], n: number[], np: number): void {\n var i, j, c, ui, t, ks\n var kn = n.length\n var ky = y.length\n\n if (sa.length != kn) sa = new Array(kn)\n\n copyInt_(sa, 0)\n\n for (; kn > 0 && n[kn - 1] == 0; kn--); //ignore leading zeros of n\n for (; ky > 0 && y[ky - 1] == 0; ky--); //ignore leading zeros of y\n ks = sa.length - 1 //sa will never have more than this many nonzero elements.\n\n //the following loop consumes 95% of the runtime for randTruePrime_() and powMod_() for large numbers\n for (i = 0; i < kn; i++) {\n t = sa[0] + x[i] * y[0]\n ui = ((t & mask) * np) & mask //the inner \"& mask\" was needed on Safari (but not MSIE) at one time\n c = (t + ui * n[0]) >> bpe\n t = x[i]\n\n //do sa=(sa+x[i]*y+ui*n)/b where b=2**bpe. Loop is unrolled 5-fold for speed\n j = 1\n for (; j < ky - 4; ) {\n c += sa[j] + ui * n[j] + t * y[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n c += sa[j] + ui * n[j] + t * y[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n c += sa[j] + ui * n[j] + t * y[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n c += sa[j] + ui * n[j] + t * y[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n c += sa[j] + ui * n[j] + t * y[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n }\n for (; j < ky; ) {\n c += sa[j] + ui * n[j] + t * y[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n }\n for (; j < kn - 4; ) {\n c += sa[j] + ui * n[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n c += sa[j] + ui * n[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n c += sa[j] + ui * n[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n c += sa[j] + ui * n[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n c += sa[j] + ui * n[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n }\n for (; j < kn; ) {\n c += sa[j] + ui * n[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n }\n for (; j < ks; ) {\n c += sa[j]\n sa[j - 1] = c & mask\n c >>= bpe\n j++\n }\n sa[j - 1] = c & mask\n }\n\n if (!greater(n, sa)) sub_(sa, n)\n copy_(x, sa)\n}","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport Modes from \"./modes\";\n\nexport const DEBUG = process.env.NODE_ENV !== 'production' || Modes.debug;\nconst ctx: any = typeof(window) !== 'undefined' ? window : self;\nexport const MOUNT_CLASS_TO: any = DEBUG || true/* && false */ ? ctx : {};\nexport default DEBUG;\n\n//let m = DEBUG;\n/* if(!DEBUG) {\n ctx.sandpitTurtle = () => {\n //if(!m) {\n for(let i in MOUNT_CLASS_TO) {\n ctx[i] = MOUNT_CLASS_TO[i];\n }\n //m = true;\n //}\n \n //DEBUG = !DEBUG;\n };\n} */\n\n/* export const superDebug = (object: any, key: string) => {\n var d = object[key];\n var beforeStr = '', afterStr = '';\n for(var r of d) {\n beforeStr += r.before.hex + '\\n';\n afterStr += r.after.hex + '\\n';\n }\n\n beforeStr = beforeStr.trim();\n afterStr = afterStr.trim();\n //var beforeStr = d.map(r => r.before.hex).join('\\n');\n //var afterStr = d.map(r => r.after.hex).join('\\n');\n\n var dada = (name: string, str: string) => {\n var a = document.createElement('a');\n a.target = '_blank';\n a.download = name + '.txt';\n a.href = URL.createObjectURL(new Blob([str], {\n type: 'text/plain'\n }));\n document.body.append(a);\n a.click();\n };\n\n dada(key + '_' + 'before', beforeStr);\n dada(key + '_' + 'after', afterStr);\n}\n\nMOUNT_CLASS_TO.superDebug = superDebug; */\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport { MOUNT_CLASS_TO } from '../../config/debug';\nimport CryptoWorkerMethods from './crypto_methods';\n\ntype Task = {\n taskId: number,\n task: string,\n args: any[]\n};\n\nclass CryptoWorker extends CryptoWorkerMethods {\n private webWorker: Worker | boolean = false;\n private taskId = 0;\n private awaiting: {\n [id: number]: {\n resolve: any,\n reject: any,\n taskName: string\n }\n } = {} as any;\n private pending: Array<Task> = [];\n private debug = false;\n\n private utils: {[name: string]: (...args: any[]) => any} = {};\n\n constructor() {\n super();\n console.log('CW constructor');\n\n//////////////////////////\n Promise.all([\n import('./crypto_utils').then(utils => {\n Object.assign(this.utils, {\n 'sha1-hash': utils.sha1HashSync,\n 'sha256-hash': utils.sha256HashSync,\n 'pbkdf2': utils.hash_pbkdf2,\n 'aes-encrypt': utils.aesEncryptSync,\n 'aes-decrypt': utils.aesDecryptSync,\n 'rsa-encrypt': utils.rsaEncrypt,\n 'factorize': utils.pqPrimeFactorization,\n 'mod-pow': utils.bytesModPow,\n 'gzipUncompress': utils.gzipUncompress,\n });\n }),\n\n import('./srp').then(srp => {\n this.utils.computeSRP = srp.computeSRP;\n })/* ,\n\n import('../bin_utils').then(utils => {\n this.utils.unzip = utils.gzipUncompress;\n }) */\n ]);\n\n return;\n/////////////\n///////////////////////\n//////////////////////////////////////////////////////////\n/////////////////////////////////////////////\n///////////////////////////////////////\n///////////////////////////////////////////\n///////////////////////////////\n///////////////////////////////////////\n/////////////////////////////////////////////\n//////////////////////////////////\n//////////////////\n////////////////////////////////////////////////////////////\n///////////\n//////////\n\n/////////////////////////////////////////////\n///////////////////////////////////////////\n/////////////////////////////////\n//////////\n/////////\n/////\n//////////////\n }\n\n/////////////////////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////\n////////////////////////////////\n//////////////////////////////////////////////////////////////////////\n///////////////////////////////\n///////////////////////////////////\n/////\n///\n////////////\n\n public performTaskWorker<T>(task: string, ...args: any[]) {\n this.debug && console.log('CW start', task, args);\n\n//////////////////////////\n return Promise.resolve<T>(this.utils[task](...args));\n/////////////\n////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////\n//\n////////////////////\n/////////////\n////////////////////////////\n////////////\n////////\n\n///////////////////////////////////////////////////////\n////////////////////////////////\n////////////////////////////\n//\n////////////////////\n///////\n//////////////\n }\n\n/////////////////////////\n////////////////////////////\n////////////////////////\n///////////////////////////////////////\n////////////////////////////////////////////////////////\n/////////\n\n//////////////////////////////\n/////\n///\n////////////\n}\n\nconst cryptoWorker = new CryptoWorker();\nMOUNT_CLASS_TO.CryptoWorker = cryptoWorker;\nexport default cryptoWorker;\n","import { convertToArrayBuffer } from \"../../helpers/bytes\";\nimport type { InputCheckPasswordSRP } from \"../../layer\";\nimport { aesEncryptSync, aesDecryptSync, sha256HashSync, sha1HashSync, bytesModPow } from \"./crypto_utils\";\n\nexport default abstract class CryptoWorkerMethods {\n abstract performTaskWorker<T>(task: string, ...args: any[]): Promise<T>;\n\n public sha1Hash(bytes: Parameters<typeof sha1HashSync>[0]): Promise<Uint8Array> {\n return this.performTaskWorker<Uint8Array>('sha1-hash', bytes);\n }\n\n public sha256Hash(bytes: Parameters<typeof sha256HashSync>[0]) {\n return this.performTaskWorker<number[]>('sha256-hash', bytes);\n }\n\n public pbkdf2(buffer: Uint8Array, salt: Uint8Array, iterations: number) {\n return this.performTaskWorker<ArrayBuffer>('pbkdf2', buffer, salt, iterations);\n }\n\n public aesEncrypt(bytes: Parameters<typeof aesEncryptSync>[0], \n keyBytes: Parameters<typeof aesEncryptSync>[1], \n ivBytes: Parameters<typeof aesEncryptSync>[2]) {\n return this.performTaskWorker<ReturnType<typeof aesEncryptSync>>('aes-encrypt', convertToArrayBuffer(bytes), \n convertToArrayBuffer(keyBytes), convertToArrayBuffer(ivBytes));\n }\n\n public aesDecrypt(encryptedBytes: Parameters<typeof aesDecryptSync>[0], \n keyBytes: Parameters<typeof aesDecryptSync>[1], \n ivBytes: Parameters<typeof aesDecryptSync>[2]): Promise<ArrayBuffer> {\n return this.performTaskWorker<ArrayBuffer>('aes-decrypt', \n encryptedBytes, keyBytes, ivBytes)\n .then(bytes => convertToArrayBuffer(bytes));\n }\n\n public rsaEncrypt(publicKey: {modulus: string, exponent: string}, bytes: any): Promise<number[]> {\n return this.performTaskWorker<number[]>('rsa-encrypt', publicKey, bytes);\n }\n\n public factorize(bytes: Uint8Array) {\n return this.performTaskWorker<[number[], number[], number]>('factorize', [...bytes]);\n }\n\n public modPow(x: Parameters<typeof bytesModPow>[0], y: Parameters<typeof bytesModPow>[1], m: Parameters<typeof bytesModPow>[2]) {\n return this.performTaskWorker<ReturnType<typeof bytesModPow>>('mod-pow', x, y, m);\n }\n\n public gzipUncompress<T>(bytes: ArrayBuffer, toString?: boolean) {\n return this.performTaskWorker<T>('gzipUncompress', bytes, toString);\n }\n\n public computeSRP(password: string, state: any, isNew = false): Promise<InputCheckPasswordSRP> {\n return this.performTaskWorker('computeSRP', password, state, isNew);\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport DEBUG from \"../config/debug\";\n\nexport enum LogTypes {\n None = 0,\n Error = 1,\n Warn = 2,\n Log = 4,\n Debug = 8\n};\n\nexport const LOG_LEVELS = [LogTypes.None, LogTypes.Error, LogTypes.Warn, LogTypes.Log, LogTypes.Debug];\n\nconst _logTimer = Date.now();\nfunction dT() {\n return '[' + ((Date.now() - _logTimer) / 1000).toFixed(3) + ']';\n}\n\nexport function logger(prefix: string, type: LogTypes = LogTypes.Log | LogTypes.Warn | LogTypes.Error) {\n if(!DEBUG/* || true */) {\n type = LogTypes.Error;\n }\n\n //level = LogLevels.log | LogLevels.warn | LogLevels.error | LogLevels.debug\n\n function Log(...args: any[]) {\n return type & LogTypes.Log && console.log(dT(), prefix, ...args);\n }\n \n Log.warn = function(...args: any[]) {\n return type & LogTypes.Warn && console.warn(dT(), prefix, ...args);\n };\n \n Log.info = function(...args: any[]) {\n return type & LogTypes.Log && console.info(dT(), prefix, ...args);\n };\n \n Log.error = function(...args: any[]) {\n return type & LogTypes.Error && console.error(dT(), prefix, ...args);\n };\n \n Log.trace = function(...args: any[]) {\n return type & LogTypes.Log && console.trace(dT(), prefix, ...args);\n };\n\n /* Log.debug = function(...args: any[]) {\n return level & LogLevels.debug && console.log(dT(), prefix, ...args);\n }; */\n\n Log.debug = function(...args: any[]) {\n return type & LogTypes.Debug && console.debug(dT(), prefix, ...args);\n };\n\n Log.setPrefix = function(_prefix: string) {\n prefix = '[' + _prefix + ']:';\n };\n\n Log.setPrefix(prefix);\n\n Log.setLevel = function(level: 0 | 1 | 2 | 3 | 4) {\n type = LOG_LEVELS.slice(0, level + 1).reduce((acc, v) => acc | v, 0) as any;\n };\n \n return Log;\n};\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nconst Modes = {\n test: location.search.indexOf('test=1') > 0/* || true */,\n debug: location.search.indexOf('debug=1') > 0,\n http: false, //location.search.indexOf('http=1') > 0,\n ssl: true, // location.search.indexOf('ssl=1') > 0 || location.protocol === 'https:' && location.search.indexOf('ssl=0') === -1,\n multipleConnections: true,\n asServiceWorker: false\n};\n\n//////////////////\n/////////////////////////////\n//////////\n\nexport default Modes;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nexport function nextRandomInt(maxValue: number) {\n return Math.floor(Math.random() * maxValue);\n}\n\nexport function randomLong() {\n return '' + nextRandomInt(0xFFFFFFFF) + nextRandomInt(0xFFFFFF);\n //return '' + parseInt(nextRandomInt(0xFFFFFFFF).toString(16) + nextRandomInt(0xFFFFFFFF).toString(16), 16);\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport { bufferConcats } from '../../helpers/bytes';\nimport { add_, bigInt2str, cmp, leftShift_, str2bigInt } from '../../vendor/leemon';\nimport { nextRandomInt } from '../../helpers/random';\n\n///////////////////////\n/////////////\n/////////////////////////////////////////////////\n\n///////////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////////////////\n///////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////\n////////////////\n \n//////////\n\nexport function isObject(object: any) {\n return typeof(object) === 'object' && object !== null;\n}\n\n/* export function bigint(num: number) {\n return new BigInteger(num.toString(16), 16);\n} */\n\n/* export function bigStringInt(strNum: string) {\n return new BigInteger(strNum, 10);\n} */\n\n/* export function base64ToBlob(base64str: string, mimeType: string) {\n var sliceSize = 1024;\n var byteCharacters = atob(base64str);\n var bytesLength = byteCharacters.length;\n var slicesCount = Math.ceil(bytesLength / sliceSize);\n var byteArrays = new Array(slicesCount);\n\n for(var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\n var begin = sliceIndex * sliceSize;\n var end = Math.min(begin + sliceSize, bytesLength);\n\n var bytes = new Array(end - begin);\n for(var offset = begin, i = 0; offset < end; ++i, ++offset) {\n bytes[i] = byteCharacters[offset].charCodeAt(0);\n }\n byteArrays[sliceIndex] = new Uint8Array(bytes);\n }\n\n return blobConstruct(byteArrays, mimeType);\n}\n\nexport function dataUrlToBlob(url: string) {\n // var name = 'b64blob ' + url.length\n // console.time(name)\n var urlParts = url.split(',');\n var base64str = urlParts[1];\n var mimeType = urlParts[0].split(':')[1].split(';')[0];\n var blob = base64ToBlob(base64str, mimeType);\n // console.timeEnd(name)\n return blob;\n} */\n\n/* export function bytesFromBigInt(bigInt: BigInteger, len?: number) {\n var bytes = bigInt.toByteArray();\n\n if(len && bytes.length < len) {\n var padding = [];\n for(var i = 0, needPadding = len - bytes.length; i < needPadding; i++) {\n padding[i] = 0;\n }\n if(bytes instanceof ArrayBuffer) {\n bytes = bufferConcat(padding, bytes);\n } else {\n bytes = padding.concat(bytes);\n }\n } else {\n while (!bytes[0] && (!len || bytes.length > len)) {\n bytes = bytes.slice(1);\n }\n }\n\n return bytes;\n} */\n\nexport function longFromInts(high: number, low: number): string {\n //let perf = performance.now();\n //let str = bigint(high).shiftLeft(32).add(bigint(low)).toString(10);\n //console.log('longFromInts jsbn', performance.now() - perf);\n \n //perf = performance.now();\n const bigInt = str2bigInt(high.toString(16), 16, 32);//int2bigInt(high, 64, 64);\n //console.log('longFromInts construct high', bigint(high).toString(10), bigInt2str(bigInt, 10));\n leftShift_(bigInt, 32);\n //console.log('longFromInts shiftLeft', bigint(high).shiftLeft(32).toString(10), bigInt2str(bigInt, 10));\n add_(bigInt, str2bigInt(low.toString(16), 16, 32));\n const _str = bigInt2str(bigInt, 10);\n\n //console.log('longFromInts leemon', performance.now() - perf);\n\n //console.log('longFromInts', high, low, str, _str, str === _str);\n\n return _str;\n}\n\nexport function sortLongsArray(arr: string[]) {\n return arr.map(long => {\n return str2bigInt(long, 10);\n }).sort((a, b) => {\n return cmp(a, b);\n }).map(bigInt => {\n return bigInt2str(bigInt, 10);\n });\n}\n\nexport function addPadding(bytes: any, blockSize: number = 16, zeroes?: boolean, full = false, prepend = false) {\n let len = bytes.byteLength || bytes.length;\n let needPadding = blockSize - (len % blockSize);\n if(needPadding > 0 && (needPadding < blockSize || full)) {\n ////console.log('addPadding()', len, blockSize, needPadding);\n let padding = new Array(needPadding);\n if(zeroes) {\n for(let i = 0; i < needPadding; i++) {\n padding[i] = 0;\n }\n } else {\n for(let i = 0; i < padding.length; ++i) {\n padding[i] = nextRandomInt(255);\n }\n }\n\n if(bytes instanceof ArrayBuffer) {\n bytes = (prepend ? bufferConcats(padding, bytes) : bufferConcats(bytes, padding)).buffer;\n } else if(bytes instanceof Uint8Array) {\n bytes = prepend ? bufferConcats(padding, bytes) : bufferConcats(bytes, padding);\n } else {\n bytes = prepend ? padding.concat(bytes) : bytes.concat(padding);\n }\n }\n\n return bytes;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\n//import sha1 from '@cryptography/sha1';\n//import sha256 from '@cryptography/sha256';\nimport {IGE} from '@cryptography/aes';\n\n// @ts-ignore\nimport pako from 'pako/dist/pako_inflate.min.js';\n\nimport {str2bigInt, bpe, equalsInt, greater, \n copy_, eGCD_, add_, rightShift_, sub_, copyInt_, isZero,\n divide_, one, bigInt2str, powMod, bigInt2bytes} from '../../vendor/leemon';//from 'leemon';\n\nimport { addPadding } from '../mtproto/bin_utils';\nimport { bytesToWordss, bytesFromWordss, bytesToHex, bytesFromHex, convertToUint8Array } from '../../helpers/bytes';\nimport { nextRandomInt } from '../../helpers/random';\n\nconst subtle = typeof(window) !== 'undefined' && 'crypto' in window ? window.crypto.subtle : self.crypto.subtle;\n\nexport function longToBytes(sLong: string): Array<number> {\n /* let perf = performance.now();\n for(let i = 0; i < 1000000; ++i) {\n bytesFromWords({words: longToInts(sLong), sigBytes: 8}).reverse();\n }\n console.log('longToBytes JSBN', sLong, performance.now() - perf);\n \n //const bytes = bytesFromWords({words: longToInts(sLong), sigBytes: 8}).reverse();\n \n perf = performance.now();\n for(let i = 0; i < 1000000; ++i) {\n bigInt2bytes(str2bigInt(sLong, 10));\n }\n console.log('longToBytes LEEMON', sLong, performance.now() - perf); */\n\n const bytes = addPadding(bigInt2bytes(str2bigInt(sLong, 10), false), 8, true, false, false);\n //console.log('longToBytes', bytes, b);\n \n return bytes;\n}\n\nexport function sha1HashSync(bytes: Uint8Array | ArrayBuffer | string) {\n return subtle.digest('SHA-1', convertToUint8Array(bytes)).then(b => {\n return new Uint8Array(b);\n });\n /* //console.trace(dT(), 'SHA-1 hash start', bytes);\n\n const hashBytes: number[] = [];\n\n let hash = sha1(String.fromCharCode.apply(null, \n bytes instanceof Uint8Array ? [...bytes] : [...new Uint8Array(bytes)]));\n for(let i = 0; i < hash.length; ++i) {\n hashBytes.push(hash.charCodeAt(i));\n }\n\n //console.log(dT(), 'SHA-1 hash finish', hashBytes, bytesToHex(hashBytes));\n\n return new Uint8Array(hashBytes); */\n}\n\nexport function sha256HashSync(bytes: Uint8Array | ArrayBuffer | string) {\n return subtle.digest('SHA-256', convertToUint8Array(bytes)).then(b => {\n //console.log('legacy', performance.now() - perfS);\n return new Uint8Array(b);\n });\n /* //console.log('SHA-256 hash start');\n\n let perfS = performance.now();\n \n\n let perfD = performance.now();\n let words = typeof(bytes) === 'string' ? bytes : bytesToWordss(bytes as any);\n let hash = sha256(words);\n console.log('darutkin', performance.now() - perfD);\n\n //console.log('SHA-256 hash finish', hash, sha256(words, 'hex'));\n\n return bytesFromWordss(hash); */\n}\n\nexport function aesEncryptSync(bytes: ArrayBuffer, keyBytes: ArrayBuffer, ivBytes: ArrayBuffer) {\n //console.log(dT(), 'AES encrypt start', bytes, keyBytes, ivBytes);\n // console.log('aes before padding bytes:', bytesToHex(bytes));\n bytes = addPadding(bytes);\n // console.log('aes after padding bytes:', bytesToHex(bytes));\n\n const cipher = new IGE(bytesToWordss(keyBytes), bytesToWordss(ivBytes));\n const encryptedBytes = cipher.encrypt(bytesToWordss(bytes));\n //console.log(dT(), 'AES encrypt finish');\n\n return bytesFromWordss(encryptedBytes);\n}\n\nexport function aesDecryptSync(bytes: Uint8Array, keyBytes: Uint8Array, ivBytes: Uint8Array) {\n //console.log(dT(), 'AES decrypt start', bytes, keyBytes, ivBytes);\n\n const cipher = new IGE(bytesToWordss(keyBytes), bytesToWordss(ivBytes));\n const decryptedBytes = cipher.decrypt(bytesToWordss(bytes));\n\n //console.log(dT(), 'AES decrypt finish');\n\n return bytesFromWordss(decryptedBytes);\n}\n\nexport function rsaEncrypt(publicKey: {modulus: string, exponent: string}, bytes: any): number[] {\n //console.log(dT(), 'RSA encrypt start', publicKey, bytes);\n\n bytes = addPadding(bytes, 255);\n\n var N = str2bigInt(publicKey.modulus, 16);\n var E = str2bigInt(publicKey.exponent, 16);\n var X = str2bigInt(bytesToHex(bytes), 16);\n\n var encryptedBigInt = powMod(X, E, N);\n var encryptedBytes = bytesFromHex(bigInt2str(encryptedBigInt, 16));\n\n //console.log(dT(), 'RSA encrypt finish');\n\n return encryptedBytes;\n}\n\nexport async function hash_pbkdf2(/* hasher: 'string', */buffer: any, salt: any, iterations: number) {\n // @ts-ignore\n let importKey = await subtle.importKey(\n \"raw\", //only \"raw\" is allowed\n buffer, //your password\n {\n name: \"PBKDF2\",\n },\n false, //whether the key is extractable (i.e. can be used in exportKey)\n [\"deriveKey\", \"deriveBits\"] //can be any combination of \"deriveKey\" and \"deriveBits\"\n );\n \n /* let deriveKey = */await subtle.deriveKey(\n {\n \"name\": \"PBKDF2\",\n salt: salt,\n iterations: iterations,\n hash: {name: \"SHA-512\"}, //can be \"SHA-1\", \"SHA-256\", \"SHA-384\", or \"SHA-512\"\n },\n importKey, //your key from generateKey or importKey\n { //the key type you want to create based on the derived bits\n name: \"AES-CTR\", //can be any AES algorithm (\"AES-CTR\", \"AES-CBC\", \"AES-CMAC\", \"AES-GCM\", \"AES-CFB\", \"AES-KW\", \"ECDH\", \"DH\", or \"HMAC\")\n //the generateKey parameters for that type of algorithm\n length: 256, //can be 128, 192, or 256\n },\n false, //whether the derived key is extractable (i.e. can be used in exportKey)\n [\"encrypt\", \"decrypt\"] //limited to the options in that algorithm's importKey\n );\n\n let bits = subtle.deriveBits({\n \"name\": \"PBKDF2\",\n salt: salt,\n iterations: iterations,\n hash: {name: \"SHA-512\"}, //can be \"SHA-1\", \"SHA-256\", \"SHA-384\", or \"SHA-512\"\n },\n importKey, //your key from generateKey or importKey\n 512 //the number of bits you want to derive\n );\n\n return bits;\n}\n\nexport function pqPrimeFactorization(pqBytes: number[]) {\n let result: ReturnType<typeof pqPrimeLeemon>;\n\n //console.log('PQ start', pqBytes, bytesToHex(pqBytes));\n\n try {\n //console.time('PQ leemon');\n result = pqPrimeLeemon(str2bigInt(bytesToHex(pqBytes), 16, Math.ceil(64 / bpe) + 1));\n //console.timeEnd('PQ leemon');\n } catch (e) {\n console.error('Pq leemon Exception', e);\n }\n\n //console.log('PQ finish', result);\n\n return result;\n}\n\nexport function pqPrimeLeemon(what: any) {\n var minBits = 64;\n var minLen = Math.ceil(minBits / bpe) + 1;\n var it = 0;\n var i, q;\n var j, lim;\n var P;\n var Q;\n var a = new Array(minLen);\n var b = new Array(minLen);\n var c = new Array(minLen);\n var g = new Array(minLen);\n var z = new Array(minLen);\n var x = new Array(minLen);\n var y = new Array(minLen);\n\n for(i = 0; i < 3; ++i) {\n q = (nextRandomInt(128) & 15) + 17;\n copyInt_(x, nextRandomInt(1000000000) + 1);\n copy_(y, x);\n lim = 1 << (i + 18);\n\n for (j = 1; j < lim; ++j) {\n ++it;\n copy_(a, x);\n copy_(b, x);\n copyInt_(c, q);\n\n while(!isZero(b)) {\n if(b[0] & 1) {\n add_(c, a);\n if(greater(c, what)) {\n sub_(c, what);\n }\n }\n add_(a, a);\n if(greater(a, what)) {\n sub_(a, what);\n }\n rightShift_(b, 1);\n }\n\n copy_(x, c);\n if(greater(x, y)) {\n copy_(z, x);\n sub_(z, y);\n } else {\n copy_(z, y);\n sub_(z, x);\n }\n eGCD_(z, what, g, a, b);\n if(!equalsInt(g, 1)) {\n break;\n }\n if((j & (j - 1)) === 0) {\n copy_(y, x);\n }\n }\n if(greater(g, one)) {\n break;\n }\n }\n\n divide_(what, g, x, y);\n\n if(greater(g, x)) {\n P = x;\n Q = g;\n } else {\n P = g;\n Q = x;\n }\n\n // console.log(dT(), 'done', bigInt2str(what, 10), bigInt2str(P, 10), bigInt2str(Q, 10))\n\n return [bigInt2bytes(P), bigInt2bytes(Q), it];\n}\n\nexport function bytesModPow(x: number[] | Uint8Array, y: number[] | Uint8Array, m: number[] | Uint8Array) {\n try {\n var xBigInt = str2bigInt(bytesToHex(x), 16);\n var yBigInt = str2bigInt(bytesToHex(y), 16);\n var mBigInt = str2bigInt(bytesToHex(m), 16);\n var resBigInt = powMod(xBigInt, yBigInt, mBigInt);\n\n return bytesFromHex(bigInt2str(resBigInt, 16));\n } catch(e) {\n console.error('mod pow error', e);\n }\n\n //return bytesFromBigInt(new BigInteger(x).modPow(new BigInteger(y), new BigInteger(m)), 256);\n}\n\nexport function gzipUncompress(bytes: ArrayBuffer, toString: true): string;\nexport function gzipUncompress(bytes: ArrayBuffer, toString?: false): Uint8Array;\nexport function gzipUncompress(bytes: ArrayBuffer, toString?: boolean): string | Uint8Array {\n //console.log(dT(), 'Gzip uncompress start');\n var result = pako.inflate(bytes, toString ? {to: 'string'} : undefined);\n //console.log(dT(), 'Gzip uncompress finish'/* , result */);\n return result;\n}\n","var S = new Uint8Array(256);\nvar Si = new Uint8Array(256);\nvar T1 = new Uint32Array(256);\nvar T2 = new Uint32Array(256);\nvar T3 = new Uint32Array(256);\nvar T4 = new Uint32Array(256);\nvar T5 = new Uint32Array(256);\nvar T6 = new Uint32Array(256);\nvar T7 = new Uint32Array(256);\nvar T8 = new Uint32Array(256);\nfunction computeTables() {\n var d = new Uint8Array(256);\n var t = new Uint8Array(256);\n var x2;\n var x4;\n var x8;\n var s;\n var tEnc;\n var tDec;\n var x = 0;\n var xInv = 0;\n // Compute double and third tables\n for (var i = 0; i < 256; i++) {\n d[i] = i << 1 ^ (i >> 7) * 283;\n t[d[i] ^ i] = i;\n }\n for (; !S[x]; x ^= x2 || 1) {\n // Compute sbox\n s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;\n s = s >> 8 ^ s & 255 ^ 99;\n S[x] = s;\n Si[s] = x;\n // Compute MixColumns\n x8 = d[x4 = d[x2 = d[x]]];\n tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n tEnc = d[s] * 0x101 ^ s * 0x1010100;\n T1[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T2[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T3[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T4[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T5[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T6[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T7[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T8[s] = tDec = tDec << 24 ^ tDec >>> 8;\n xInv = t[xInv] || 1;\n }\n}\n\n/**\n * Gets a uint32 from string in big-endian order order\n */\nfunction s2i(str, pos) {\n return (str.charCodeAt(pos) << 24\n ^ str.charCodeAt(pos + 1) << 16\n ^ str.charCodeAt(pos + 2) << 8\n ^ str.charCodeAt(pos + 3));\n}\n\n/* eslint-disable import/prefer-default-export */\n/**\n * Helper function for transforming string key to Uint32Array\n */\nfunction getWords(key) {\n if (key instanceof Uint32Array) {\n return key;\n }\n if (typeof key === 'string') {\n if (key.length % 4 !== 0)\n for (var i = key.length % 4; i <= 4; i++)\n key += '\\0x00';\n var buf = new Uint32Array(key.length / 4);\n for (var i = 0; i < key.length; i += 4)\n buf[i / 4] = s2i(key, i);\n return buf;\n }\n if (key instanceof Uint8Array) {\n var buf = new Uint32Array(key.length / 4);\n for (var i = 0; i < key.length; i += 4) {\n buf[i / 4] = (key[i] << 24\n ^ key[i + 1] << 16\n ^ key[i + 2] << 8\n ^ key[i + 3]);\n }\n return buf;\n }\n throw new Error('Unable to create 32-bit words');\n}\nfunction xor(left, right, to) {\n if (to === void 0) { to = left; }\n for (var i = 0; i < left.length; i++)\n to[i] = left[i] ^ right[i];\n}\n\ncomputeTables();\n/**\n * Low-level AES Cipher\n */\nvar AES = /** @class */ (function () {\n function AES(_key) {\n var key = getWords(_key);\n if (key.length !== 4 && key.length !== 6 && key.length !== 8) {\n throw new Error('Invalid key size');\n }\n this.encKey = new Uint32Array(4 * key.length + 28);\n this.decKey = new Uint32Array(4 * key.length + 28);\n this.encKey.set(key);\n var rcon = 1;\n var i = key.length;\n var tmp;\n // schedule encryption keys\n for (; i < 4 * key.length + 28; i++) {\n tmp = this.encKey[i - 1];\n // apply sbox\n if (i % key.length === 0 || (key.length === 8 && i % key.length === 4)) {\n tmp = S[tmp >>> 24] << 24 ^ S[(tmp >> 16) & 255] << 16 ^ S[(tmp >> 8) & 255] << 8 ^ S[tmp & 255];\n // shift rows and add rcon\n if (i % key.length === 0) {\n tmp = tmp << 8 ^ tmp >>> 24 ^ (rcon << 24);\n rcon = rcon << 1 ^ (rcon >> 7) * 283;\n }\n }\n this.encKey[i] = this.encKey[i - key.length] ^ tmp;\n }\n // schedule decryption keys\n for (var j = 0; i; j++, i--) {\n tmp = this.encKey[j & 3 ? i : i - 4];\n if (i <= 4 || j < 4) {\n this.decKey[j] = tmp;\n }\n else {\n this.decKey[j] = (T5[S[tmp >>> 24]]\n ^ T6[S[(tmp >> 16) & 255]]\n ^ T7[S[(tmp >> 8) & 255]]\n ^ T8[S[tmp & 255]]);\n }\n }\n }\n AES.prototype.encrypt = function (_message) {\n var message = getWords(_message);\n var out = new Uint32Array(4);\n var a = message[0] ^ this.encKey[0];\n var b = message[1] ^ this.encKey[1];\n var c = message[2] ^ this.encKey[2];\n var d = message[3] ^ this.encKey[3];\n var rounds = this.encKey.length / 4 - 2;\n var k = 4;\n var a2;\n var b2;\n var c2;\n // Inner rounds. Cribbed from OpenSSL.\n for (var i = 0; i < rounds; i++) {\n a2 = T1[a >>> 24] ^ T2[(b >> 16) & 255] ^ T3[(c >> 8) & 255] ^ T4[d & 255] ^ this.encKey[k];\n b2 = T1[b >>> 24] ^ T2[(c >> 16) & 255] ^ T3[(d >> 8) & 255] ^ T4[a & 255] ^ this.encKey[k + 1];\n c2 = T1[c >>> 24] ^ T2[(d >> 16) & 255] ^ T3[(a >> 8) & 255] ^ T4[b & 255] ^ this.encKey[k + 2];\n d = T1[d >>> 24] ^ T2[(a >> 16) & 255] ^ T3[(b >> 8) & 255] ^ T4[c & 255] ^ this.encKey[k + 3];\n a = a2;\n b = b2;\n c = c2;\n k += 4;\n // console.log(a, b, c, d);\n }\n // Last round.\n for (var i = 0; i < 4; i++) {\n out[i] = (S[a >>> 24] << 24\n ^ S[(b >> 16) & 255] << 16\n ^ S[(c >> 8) & 255] << 8\n ^ S[d & 255]\n ^ this.encKey[k++]);\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n return out;\n };\n AES.prototype.decrypt = function (_message) {\n var message = getWords(_message);\n var out = new Uint32Array(4);\n var a = message[0] ^ this.decKey[0];\n var b = message[3] ^ this.decKey[1];\n var c = message[2] ^ this.decKey[2];\n var d = message[1] ^ this.decKey[3];\n var rounds = this.decKey.length / 4 - 2;\n var a2;\n var b2;\n var c2;\n var k = 4;\n // Inner rounds. Cribbed from OpenSSL.\n for (var i = 0; i < rounds; i++) {\n a2 = T5[a >>> 24] ^ T6[(b >> 16) & 255] ^ T7[(c >> 8) & 255] ^ T8[d & 255] ^ this.decKey[k];\n b2 = T5[b >>> 24] ^ T6[(c >> 16) & 255] ^ T7[(d >> 8) & 255] ^ T8[a & 255] ^ this.decKey[k + 1];\n c2 = T5[c >>> 24] ^ T6[(d >> 16) & 255] ^ T7[(a >> 8) & 255] ^ T8[b & 255] ^ this.decKey[k + 2];\n d = T5[d >>> 24] ^ T6[(a >> 16) & 255] ^ T7[(b >> 8) & 255] ^ T8[c & 255] ^ this.decKey[k + 3];\n a = a2;\n b = b2;\n c = c2;\n k += 4;\n }\n // Last round.\n for (var i = 0; i < 4; i++) {\n out[3 & -i] = (Si[a >>> 24] << 24\n ^ Si[(b >> 16) & 255] << 16\n ^ Si[(c >> 8) & 255] << 8\n ^ Si[d & 255]\n ^ this.decKey[k++]);\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n return out;\n };\n return AES;\n}());\n\n/**\n * AES-IGE mode.\n */\nvar AES_IGE = /** @class */ (function () {\n function AES_IGE(key, iv, blockSize) {\n if (blockSize === void 0) { blockSize = 16; }\n this.key = getWords(key);\n this.iv = getWords(iv);\n this.cipher = new AES(key);\n this.blockSize = blockSize / 4;\n }\n /**\n * Encrypts plain text with AES-IGE mode.\n */\n AES_IGE.prototype.encrypt = function (message, buf) {\n var text = getWords(message);\n var cipherText = buf || new Uint32Array(text.length);\n var prevX = this.iv.subarray(this.blockSize, this.iv.length);\n var prevY = this.iv.subarray(0, this.blockSize);\n var yXOR = new Uint32Array(this.blockSize);\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = text.subarray(i, i + this.blockSize);\n xor(x, prevY, yXOR);\n var y = this.cipher.encrypt(yXOR);\n xor(y, prevX);\n prevX = x;\n prevY = y;\n for (var j = i, k = 0; j < text.length && k < 4; j++, k++)\n cipherText[j] = y[k];\n }\n return cipherText;\n };\n /**\n * Decrypts cipher text with AES-IGE mode.\n */\n AES_IGE.prototype.decrypt = function (message, buf) {\n var cipherText = getWords(message);\n var text = buf || new Uint32Array(cipherText.length);\n var prevY = this.iv.subarray(this.blockSize, this.iv.length);\n var prevX = this.iv.subarray(0, this.blockSize);\n var yXOR = new Uint32Array(this.blockSize);\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = cipherText.subarray(i, i + this.blockSize);\n xor(x, prevY, yXOR);\n var y = this.cipher.decrypt(yXOR);\n xor(y, prevX);\n prevX = x;\n prevY = y;\n for (var j = i, k = 0; j < text.length && k < 4; j++, k++)\n text[j] = y[k];\n }\n return text;\n };\n return AES_IGE;\n}());\n\n/**\n * AES-IGE mode.\n */\nvar AES_IGE$1 = /** @class */ (function () {\n function AES_IGE(key, counter, blockSize) {\n if (blockSize === void 0) { blockSize = 16; }\n this.offset = 0;\n this.key = getWords(key);\n this.counter = getWords(counter);\n this.cipher = new AES(key);\n this.blockSize = blockSize / 4;\n if (this.counter.length !== 4) {\n throw new Error('AES-CTR mode counter must be 16 bytes length');\n }\n }\n /**\n * Encrypts plain text with AES-IGE mode.\n */\n AES_IGE.prototype.encrypt = function (message, buf) {\n var text = getWords(message);\n var cipherText = buf || new Uint32Array(text.length);\n var offset = this.offset;\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = this.cipher.encrypt(this.counter);\n for (var j = i, k = offset; j < text.length && k < this.blockSize; j++, k++)\n cipherText[j] = x[k] ^ text[j];\n if (text.length - i >= this.blockSize)\n this.incrementCounter();\n if (offset) {\n i -= offset;\n offset = 0;\n }\n }\n this.offset = (this.offset + (text.length % 4)) % 4;\n return cipherText;\n };\n /**\n * Decrypts cipher text with AES-IGE mode.\n */\n AES_IGE.prototype.decrypt = function (message, buf) {\n return this.encrypt(message, buf);\n };\n AES_IGE.prototype.incrementCounter = function () {\n // increment counter\n for (var carry = this.counter.length - 1; carry >= 0; carry--) {\n if (++this.counter[carry] < 0xFFFFFFFF)\n break; // If overflowing, it'll be 0 and we'll have to continue propagating the carry\n }\n };\n return AES_IGE;\n}());\n\nexport default AES;\nexport { AES_IGE$1 as CTR, AES_IGE as IGE };\n","!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).pako=e()}}(function(){return function r(o,s,f){function l(t,e){if(!s[t]){if(!o[t]){var i=\"function\"==typeof require&&require;if(!e&&i)return i(t,!0);if(d)return d(t,!0);var n=new Error(\"Cannot find module '\"+t+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var a=s[t]={exports:{}};o[t][0].call(a.exports,function(e){return l(o[t][1][e]||e)},a,a.exports,r,o,s,f)}return s[t].exports}for(var d=\"function\"==typeof require&&require,e=0;e<f.length;e++)l(f[e]);return l}({1:[function(e,t,i){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;i.assign=function(e){for(var t,i,n=Array.prototype.slice.call(arguments,1);n.length;){var a=n.shift();if(a){if(\"object\"!=typeof a)throw new TypeError(a+\"must be non-object\");for(var r in a)t=a,i=r,Object.prototype.hasOwnProperty.call(t,i)&&(e[r]=a[r])}}return e},i.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,i,n,a){if(t.subarray&&e.subarray)e.set(t.subarray(i,i+n),a);else for(var r=0;r<n;r++)e[a+r]=t[i+r]},flattenChunks:function(e){var t,i,n,a,r,o;for(t=n=0,i=e.length;t<i;t++)n+=e[t].length;for(o=new Uint8Array(n),t=a=0,i=e.length;t<i;t++)r=e[t],o.set(r,a),a+=r.length;return o}},r={arraySet:function(e,t,i,n,a){for(var r=0;r<n;r++)e[a+r]=t[i+r]},flattenChunks:function(e){return[].concat.apply([],e)}};i.setTyped=function(e){e?(i.Buf8=Uint8Array,i.Buf16=Uint16Array,i.Buf32=Int32Array,i.assign(i,a)):(i.Buf8=Array,i.Buf16=Array,i.Buf32=Array,i.assign(i,r))},i.setTyped(n)},{}],2:[function(e,t,i){\"use strict\";var f=e(\"./common\"),a=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch(e){a=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){r=!1}for(var l=new f.Buf8(256),n=0;n<256;n++)l[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function d(e,t){if(t<65534&&(e.subarray&&r||!e.subarray&&a))return String.fromCharCode.apply(null,f.shrinkBuf(e,t));for(var i=\"\",n=0;n<t;n++)i+=String.fromCharCode(e[n]);return i}l[254]=l[254]=1,i.string2buf=function(e){var t,i,n,a,r,o=e.length,s=0;for(a=0;a<o;a++)55296==(64512&(i=e.charCodeAt(a)))&&a+1<o&&56320==(64512&(n=e.charCodeAt(a+1)))&&(i=65536+(i-55296<<10)+(n-56320),a++),s+=i<128?1:i<2048?2:i<65536?3:4;for(t=new f.Buf8(s),a=r=0;r<s;a++)55296==(64512&(i=e.charCodeAt(a)))&&a+1<o&&56320==(64512&(n=e.charCodeAt(a+1)))&&(i=65536+(i-55296<<10)+(n-56320),a++),i<128?t[r++]=i:(i<2048?t[r++]=192|i>>>6:(i<65536?t[r++]=224|i>>>12:(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63),t[r++]=128|i>>>6&63),t[r++]=128|63&i);return t},i.buf2binstring=function(e){return d(e,e.length)},i.binstring2buf=function(e){for(var t=new f.Buf8(e.length),i=0,n=t.length;i<n;i++)t[i]=e.charCodeAt(i);return t},i.buf2string=function(e,t){var i,n,a,r,o=t||e.length,s=new Array(2*o);for(i=n=0;i<o;)if((a=e[i++])<128)s[n++]=a;else if(4<(r=l[a]))s[n++]=65533,i+=r-1;else{for(a&=2===r?31:3===r?15:7;1<r&&i<o;)a=a<<6|63&e[i++],r--;1<r?s[n++]=65533:a<65536?s[n++]=a:(a-=65536,s[n++]=55296|a>>10&1023,s[n++]=56320|1023&a)}return d(s,n)},i.utf8border=function(e,t){var i;for((t=t||e.length)>e.length&&(t=e.length),i=t-1;0<=i&&128==(192&e[i]);)i--;return i<0?t:0===i?t:i+l[e[i]]>t?i:t}},{\"./common\":1}],3:[function(e,t,i){\"use strict\";t.exports=function(e,t,i,n){for(var a=65535&e|0,r=e>>>16&65535|0,o=0;0!==i;){for(i-=o=2e3<i?2e3:i;r=r+(a=a+t[n++]|0)|0,--o;);a%=65521,r%=65521}return a|r<<16|0}},{}],4:[function(e,t,i){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(e,t,i){\"use strict\";var s=function(){for(var e,t=[],i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t}();t.exports=function(e,t,i,n){var a=s,r=n+i;e^=-1;for(var o=n;o<r;o++)e=e>>>8^a[255&(e^t[o])];return-1^e}},{}],6:[function(e,t,i){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],7:[function(e,t,i){\"use strict\";t.exports=function(e,t){var i,n,a,r,o,s,f,l,d,c,u,h,b,m,w,k,_,g,v,p,x,y,S,E,Z;i=e.state,n=e.next_in,E=e.input,a=n+(e.avail_in-5),r=e.next_out,Z=e.output,o=r-(t-e.avail_out),s=r+(e.avail_out-257),f=i.dmax,l=i.wsize,d=i.whave,c=i.wnext,u=i.window,h=i.hold,b=i.bits,m=i.lencode,w=i.distcode,k=(1<<i.lenbits)-1,_=(1<<i.distbits)-1;e:do{b<15&&(h+=E[n++]<<b,b+=8,h+=E[n++]<<b,b+=8),g=m[h&k];t:for(;;){if(h>>>=v=g>>>24,b-=v,0===(v=g>>>16&255))Z[r++]=65535&g;else{if(!(16&v)){if(0==(64&v)){g=m[(65535&g)+(h&(1<<v)-1)];continue t}if(32&v){i.mode=12;break e}e.msg=\"invalid literal/length code\",i.mode=30;break e}p=65535&g,(v&=15)&&(b<v&&(h+=E[n++]<<b,b+=8),p+=h&(1<<v)-1,h>>>=v,b-=v),b<15&&(h+=E[n++]<<b,b+=8,h+=E[n++]<<b,b+=8),g=w[h&_];i:for(;;){if(h>>>=v=g>>>24,b-=v,!(16&(v=g>>>16&255))){if(0==(64&v)){g=w[(65535&g)+(h&(1<<v)-1)];continue i}e.msg=\"invalid distance code\",i.mode=30;break e}if(x=65535&g,b<(v&=15)&&(h+=E[n++]<<b,(b+=8)<v&&(h+=E[n++]<<b,b+=8)),f<(x+=h&(1<<v)-1)){e.msg=\"invalid distance too far back\",i.mode=30;break e}if(h>>>=v,b-=v,(v=r-o)<x){if(d<(v=x-v)&&i.sane){e.msg=\"invalid distance too far back\",i.mode=30;break e}if(S=u,(y=0)===c){if(y+=l-v,v<p){for(p-=v;Z[r++]=u[y++],--v;);y=r-x,S=Z}}else if(c<v){if(y+=l+c-v,(v-=c)<p){for(p-=v;Z[r++]=u[y++],--v;);if(y=0,c<p){for(p-=v=c;Z[r++]=u[y++],--v;);y=r-x,S=Z}}}else if(y+=c-v,v<p){for(p-=v;Z[r++]=u[y++],--v;);y=r-x,S=Z}for(;2<p;)Z[r++]=S[y++],Z[r++]=S[y++],Z[r++]=S[y++],p-=3;p&&(Z[r++]=S[y++],1<p&&(Z[r++]=S[y++]))}else{for(y=r-x;Z[r++]=Z[y++],Z[r++]=Z[y++],Z[r++]=Z[y++],2<(p-=3););p&&(Z[r++]=Z[y++],1<p&&(Z[r++]=Z[y++]))}break}}break}}while(n<a&&r<s);n-=p=b>>3,h&=(1<<(b-=p<<3))-1,e.next_in=n,e.next_out=r,e.avail_in=n<a?a-n+5:5-(n-a),e.avail_out=r<s?s-r+257:257-(r-s),i.hold=h,i.bits=b}},{}],8:[function(e,t,i){\"use strict\";var z=e(\"../utils/common\"),R=e(\"./adler32\"),N=e(\"./crc32\"),O=e(\"./inffast\"),C=e(\"./inftrees\"),I=1,D=2,T=0,U=-2,F=1,n=852,a=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function r(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new z.Buf16(320),this.work=new z.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function o(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=F,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new z.Buf32(n),t.distcode=t.distdyn=new z.Buf32(a),t.sane=1,t.back=-1,T):U}function s(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,o(e)):U}function f(e,t){var i,n;return e&&e.state?(n=e.state,t<0?(i=0,t=-t):(i=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=i,n.wbits=t,s(e))):U}function l(e,t){var i,n;return e?(n=new r,(e.state=n).window=null,(i=f(e,t))!==T&&(e.state=null),i):U}var d,c,u=!0;function H(e){if(u){var t;for(d=new z.Buf32(512),c=new z.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(C(I,e.lens,0,288,d,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;C(D,e.lens,0,32,c,0,e.work,{bits:5}),u=!1}e.lencode=d,e.lenbits=9,e.distcode=c,e.distbits=5}function j(e,t,i,n){var a,r=e.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new z.Buf8(r.wsize)),n>=r.wsize?(z.arraySet(r.window,t,i-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(a=r.wsize-r.wnext)&&(a=n),z.arraySet(r.window,t,i-n,a,r.wnext),(n-=a)?(z.arraySet(r.window,t,i-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=a,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=a))),0}i.inflateReset=s,i.inflateReset2=f,i.inflateResetKeep=o,i.inflateInit=function(e){return l(e,15)},i.inflateInit2=l,i.inflate=function(e,t){var i,n,a,r,o,s,f,l,d,c,u,h,b,m,w,k,_,g,v,p,x,y,S,E,Z=0,B=new z.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(i=e.state).mode&&(i.mode=13),o=e.next_out,a=e.output,f=e.avail_out,r=e.next_in,n=e.input,s=e.avail_in,l=i.hold,d=i.bits,c=s,u=f,y=T;e:for(;;)switch(i.mode){case F:if(0===i.wrap){i.mode=13;break}for(;d<16;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}if(2&i.wrap&&35615===l){B[i.check=0]=255&l,B[1]=l>>>8&255,i.check=N(i.check,B,2,0),d=l=0,i.mode=2;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg=\"incorrect header check\",i.mode=30;break}if(8!=(15&l)){e.msg=\"unknown compression method\",i.mode=30;break}if(d-=4,x=8+(15&(l>>>=4)),0===i.wbits)i.wbits=x;else if(x>i.wbits){e.msg=\"invalid window size\",i.mode=30;break}i.dmax=1<<x,e.adler=i.check=1,i.mode=512&l?10:12,d=l=0;break;case 2:for(;d<16;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}if(i.flags=l,8!=(255&i.flags)){e.msg=\"unknown compression method\",i.mode=30;break}if(57344&i.flags){e.msg=\"unknown header flags set\",i.mode=30;break}i.head&&(i.head.text=l>>8&1),512&i.flags&&(B[0]=255&l,B[1]=l>>>8&255,i.check=N(i.check,B,2,0)),d=l=0,i.mode=3;case 3:for(;d<32;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}i.head&&(i.head.time=l),512&i.flags&&(B[0]=255&l,B[1]=l>>>8&255,B[2]=l>>>16&255,B[3]=l>>>24&255,i.check=N(i.check,B,4,0)),d=l=0,i.mode=4;case 4:for(;d<16;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}i.head&&(i.head.xflags=255&l,i.head.os=l>>8),512&i.flags&&(B[0]=255&l,B[1]=l>>>8&255,i.check=N(i.check,B,2,0)),d=l=0,i.mode=5;case 5:if(1024&i.flags){for(;d<16;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}i.length=l,i.head&&(i.head.extra_len=l),512&i.flags&&(B[0]=255&l,B[1]=l>>>8&255,i.check=N(i.check,B,2,0)),d=l=0}else i.head&&(i.head.extra=null);i.mode=6;case 6:if(1024&i.flags&&(s<(h=i.length)&&(h=s),h&&(i.head&&(x=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),z.arraySet(i.head.extra,n,r,h,x)),512&i.flags&&(i.check=N(i.check,n,h,r)),s-=h,r+=h,i.length-=h),i.length))break e;i.length=0,i.mode=7;case 7:if(2048&i.flags){if(0===s)break e;for(h=0;x=n[r+h++],i.head&&x&&i.length<65536&&(i.head.name+=String.fromCharCode(x)),x&&h<s;);if(512&i.flags&&(i.check=N(i.check,n,h,r)),s-=h,r+=h,x)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=8;case 8:if(4096&i.flags){if(0===s)break e;for(h=0;x=n[r+h++],i.head&&x&&i.length<65536&&(i.head.comment+=String.fromCharCode(x)),x&&h<s;);if(512&i.flags&&(i.check=N(i.check,n,h,r)),s-=h,r+=h,x)break e}else i.head&&(i.head.comment=null);i.mode=9;case 9:if(512&i.flags){for(;d<16;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}if(l!==(65535&i.check)){e.msg=\"header crc mismatch\",i.mode=30;break}d=l=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=12;break;case 10:for(;d<32;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}e.adler=i.check=L(l),d=l=0,i.mode=11;case 11:if(0===i.havedict)return e.next_out=o,e.avail_out=f,e.next_in=r,e.avail_in=s,i.hold=l,i.bits=d,2;e.adler=i.check=1,i.mode=12;case 12:if(5===t||6===t)break e;case 13:if(i.last){l>>>=7&d,d-=7&d,i.mode=27;break}for(;d<3;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}switch(i.last=1&l,d-=1,3&(l>>>=1)){case 0:i.mode=14;break;case 1:if(H(i),i.mode=20,6!==t)break;l>>>=2,d-=2;break e;case 2:i.mode=17;break;case 3:e.msg=\"invalid block type\",i.mode=30}l>>>=2,d-=2;break;case 14:for(l>>>=7&d,d-=7&d;d<32;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}if((65535&l)!=(l>>>16^65535)){e.msg=\"invalid stored block lengths\",i.mode=30;break}if(i.length=65535&l,d=l=0,i.mode=15,6===t)break e;case 15:i.mode=16;case 16:if(h=i.length){if(s<h&&(h=s),f<h&&(h=f),0===h)break e;z.arraySet(a,n,r,h,o),s-=h,r+=h,f-=h,o+=h,i.length-=h;break}i.mode=12;break;case 17:for(;d<14;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}if(i.nlen=257+(31&l),l>>>=5,d-=5,i.ndist=1+(31&l),l>>>=5,d-=5,i.ncode=4+(15&l),l>>>=4,d-=4,286<i.nlen||30<i.ndist){e.msg=\"too many length or distance symbols\",i.mode=30;break}i.have=0,i.mode=18;case 18:for(;i.have<i.ncode;){for(;d<3;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}i.lens[A[i.have++]]=7&l,l>>>=3,d-=3}for(;i.have<19;)i.lens[A[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,S={bits:i.lenbits},y=C(0,i.lens,0,19,i.lencode,0,i.work,S),i.lenbits=S.bits,y){e.msg=\"invalid code lengths set\",i.mode=30;break}i.have=0,i.mode=19;case 19:for(;i.have<i.nlen+i.ndist;){for(;k=(Z=i.lencode[l&(1<<i.lenbits)-1])>>>16&255,_=65535&Z,!((w=Z>>>24)<=d);){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}if(_<16)l>>>=w,d-=w,i.lens[i.have++]=_;else{if(16===_){for(E=w+2;d<E;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}if(l>>>=w,d-=w,0===i.have){e.msg=\"invalid bit length repeat\",i.mode=30;break}x=i.lens[i.have-1],h=3+(3&l),l>>>=2,d-=2}else if(17===_){for(E=w+3;d<E;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}d-=w,x=0,h=3+(7&(l>>>=w)),l>>>=3,d-=3}else{for(E=w+7;d<E;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}d-=w,x=0,h=11+(127&(l>>>=w)),l>>>=7,d-=7}if(i.have+h>i.nlen+i.ndist){e.msg=\"invalid bit length repeat\",i.mode=30;break}for(;h--;)i.lens[i.have++]=x}}if(30===i.mode)break;if(0===i.lens[256]){e.msg=\"invalid code -- missing end-of-block\",i.mode=30;break}if(i.lenbits=9,S={bits:i.lenbits},y=C(I,i.lens,0,i.nlen,i.lencode,0,i.work,S),i.lenbits=S.bits,y){e.msg=\"invalid literal/lengths set\",i.mode=30;break}if(i.distbits=6,i.distcode=i.distdyn,S={bits:i.distbits},y=C(D,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,S),i.distbits=S.bits,y){e.msg=\"invalid distances set\",i.mode=30;break}if(i.mode=20,6===t)break e;case 20:i.mode=21;case 21:if(6<=s&&258<=f){e.next_out=o,e.avail_out=f,e.next_in=r,e.avail_in=s,i.hold=l,i.bits=d,O(e,u),o=e.next_out,a=e.output,f=e.avail_out,r=e.next_in,n=e.input,s=e.avail_in,l=i.hold,d=i.bits,12===i.mode&&(i.back=-1);break}for(i.back=0;k=(Z=i.lencode[l&(1<<i.lenbits)-1])>>>16&255,_=65535&Z,!((w=Z>>>24)<=d);){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}if(k&&0==(240&k)){for(g=w,v=k,p=_;k=(Z=i.lencode[p+((l&(1<<g+v)-1)>>g)])>>>16&255,_=65535&Z,!(g+(w=Z>>>24)<=d);){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}l>>>=g,d-=g,i.back+=g}if(l>>>=w,d-=w,i.back+=w,i.length=_,0===k){i.mode=26;break}if(32&k){i.back=-1,i.mode=12;break}if(64&k){e.msg=\"invalid literal/length code\",i.mode=30;break}i.extra=15&k,i.mode=22;case 22:if(i.extra){for(E=i.extra;d<E;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}i.length+=l&(1<<i.extra)-1,l>>>=i.extra,d-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=23;case 23:for(;k=(Z=i.distcode[l&(1<<i.distbits)-1])>>>16&255,_=65535&Z,!((w=Z>>>24)<=d);){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}if(0==(240&k)){for(g=w,v=k,p=_;k=(Z=i.distcode[p+((l&(1<<g+v)-1)>>g)])>>>16&255,_=65535&Z,!(g+(w=Z>>>24)<=d);){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}l>>>=g,d-=g,i.back+=g}if(l>>>=w,d-=w,i.back+=w,64&k){e.msg=\"invalid distance code\",i.mode=30;break}i.offset=_,i.extra=15&k,i.mode=24;case 24:if(i.extra){for(E=i.extra;d<E;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}i.offset+=l&(1<<i.extra)-1,l>>>=i.extra,d-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg=\"invalid distance too far back\",i.mode=30;break}i.mode=25;case 25:if(0===f)break e;if(h=u-f,i.offset>h){if((h=i.offset-h)>i.whave&&i.sane){e.msg=\"invalid distance too far back\",i.mode=30;break}h>i.wnext?(h-=i.wnext,b=i.wsize-h):b=i.wnext-h,h>i.length&&(h=i.length),m=i.window}else m=a,b=o-i.offset,h=i.length;for(f<h&&(h=f),f-=h,i.length-=h;a[o++]=m[b++],--h;);0===i.length&&(i.mode=21);break;case 26:if(0===f)break e;a[o++]=i.length,f--,i.mode=21;break;case 27:if(i.wrap){for(;d<32;){if(0===s)break e;s--,l|=n[r++]<<d,d+=8}if(u-=f,e.total_out+=u,i.total+=u,u&&(e.adler=i.check=i.flags?N(i.check,a,u,o-u):R(i.check,a,u,o-u)),u=f,(i.flags?l:L(l))!==i.check){e.msg=\"incorrect data check\",i.mode=30;break}d=l=0}i.mode=28;case 28:if(i.wrap&&i.flags){for(;d<32;){if(0===s)break e;s--,l+=n[r++]<<d,d+=8}if(l!==(4294967295&i.total)){e.msg=\"incorrect length check\",i.mode=30;break}d=l=0}i.mode=29;case 29:y=1;break e;case 30:y=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=o,e.avail_out=f,e.next_in=r,e.avail_in=s,i.hold=l,i.bits=d,(i.wsize||u!==e.avail_out&&i.mode<30&&(i.mode<27||4!==t))&&j(e,e.output,e.next_out,u-e.avail_out)?(i.mode=31,-4):(c-=e.avail_in,u-=e.avail_out,e.total_in+=c,e.total_out+=u,i.total+=u,i.wrap&&u&&(e.adler=i.check=i.flags?N(i.check,a,u,e.next_out-u):R(i.check,a,u,e.next_out-u)),e.data_type=i.bits+(i.last?64:0)+(12===i.mode?128:0)+(20===i.mode||15===i.mode?256:0),(0===c&&0===u||4===t)&&y===T&&(y=-5),y)},i.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,T},i.inflateGetHeader=function(e,t){var i;return e&&e.state?0==(2&(i=e.state).wrap)?U:((i.head=t).done=!1,T):U},i.inflateSetDictionary=function(e,t){var i,n=t.length;return e&&e.state?0!==(i=e.state).wrap&&11!==i.mode?U:11===i.mode&&R(1,t,n,0)!==i.check?-3:j(e,t,n,n)?(i.mode=31,-4):(i.havedict=1,T):U},i.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":1,\"./adler32\":3,\"./crc32\":5,\"./inffast\":7,\"./inftrees\":9}],9:[function(e,t,i){\"use strict\";var I=e(\"../utils/common\"),D=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],T=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],F=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,i,n,a,r,o,s){var f,l,d,c,u,h,b,m,w,k=s.bits,_=0,g=0,v=0,p=0,x=0,y=0,S=0,E=0,Z=0,B=0,A=null,z=0,R=new I.Buf16(16),N=new I.Buf16(16),O=null,C=0;for(_=0;_<=15;_++)R[_]=0;for(g=0;g<n;g++)R[t[i+g]]++;for(x=k,p=15;1<=p&&0===R[p];p--);if(p<x&&(x=p),0===p)return a[r++]=20971520,a[r++]=20971520,s.bits=1,0;for(v=1;v<p&&0===R[v];v++);for(x<v&&(x=v),_=E=1;_<=15;_++)if(E<<=1,(E-=R[_])<0)return-1;if(0<E&&(0===e||1!==p))return-1;for(N[1]=0,_=1;_<15;_++)N[_+1]=N[_]+R[_];for(g=0;g<n;g++)0!==t[i+g]&&(o[N[t[i+g]]++]=g);if(0===e?(A=O=o,h=19):1===e?(A=D,z-=257,O=T,C-=257,h=256):(A=U,O=F,h=-1),_=v,u=r,S=g=B=0,d=-1,c=(Z=1<<(y=x))-1,1===e&&852<Z||2===e&&592<Z)return 1;for(;;){for(b=_-S,o[g]<h?(m=0,w=o[g]):o[g]>h?(m=O[C+o[g]],w=A[z+o[g]]):(m=96,w=0),f=1<<_-S,v=l=1<<y;a[u+(B>>S)+(l-=f)]=b<<24|m<<16|w|0,0!==l;);for(f=1<<_-1;B&f;)f>>=1;if(0!==f?(B&=f-1,B+=f):B=0,g++,0==--R[_]){if(_===p)break;_=t[i+o[g]]}if(x<_&&(B&c)!==d){for(0===S&&(S=x),u+=v,E=1<<(y=_-S);y+S<p&&!((E-=R[y+S])<=0);)y++,E<<=1;if(Z+=1<<y,1===e&&852<Z||2===e&&592<Z)return 1;a[d=B&c]=x<<24|y<<16|u-r|0}}return 0!==B&&(a[u+B]=_-S<<24|64<<16|0),s.bits=x,0}},{\"../utils/common\":1}],10:[function(e,t,i){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],11:[function(e,t,i){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],\"/lib/inflate.js\":[function(e,t,i){\"use strict\";var c=e(\"./zlib/inflate\"),u=e(\"./utils/common\"),h=e(\"./utils/strings\"),b=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),a=e(\"./zlib/zstream\"),r=e(\"./zlib/gzheader\"),m=Object.prototype.toString;function o(e){if(!(this instanceof o))return new o(e);this.options=u.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new a,this.strm.avail_out=0;var i=c.inflateInit2(this.strm,t.windowBits);if(i!==b.Z_OK)throw new Error(n[i]);if(this.header=new r,c.inflateGetHeader(this.strm,this.header),t.dictionary&&(\"string\"==typeof t.dictionary?t.dictionary=h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===m.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=c.inflateSetDictionary(this.strm,t.dictionary))!==b.Z_OK))throw new Error(n[i])}function s(e,t){var i=new o(t);if(i.push(e,!0),i.err)throw i.msg||n[i.err];return i.result}o.prototype.push=function(e,t){var i,n,a,r,o,s=this.strm,f=this.options.chunkSize,l=this.options.dictionary,d=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?b.Z_FINISH:b.Z_NO_FLUSH,\"string\"==typeof e?s.input=h.binstring2buf(e):\"[object ArrayBuffer]\"===m.call(e)?s.input=new Uint8Array(e):s.input=e,s.next_in=0,s.avail_in=s.input.length;do{if(0===s.avail_out&&(s.output=new u.Buf8(f),s.next_out=0,s.avail_out=f),(i=c.inflate(s,b.Z_NO_FLUSH))===b.Z_NEED_DICT&&l&&(i=c.inflateSetDictionary(this.strm,l)),i===b.Z_BUF_ERROR&&!0===d&&(i=b.Z_OK,d=!1),i!==b.Z_STREAM_END&&i!==b.Z_OK)return this.onEnd(i),!(this.ended=!0);s.next_out&&(0!==s.avail_out&&i!==b.Z_STREAM_END&&(0!==s.avail_in||n!==b.Z_FINISH&&n!==b.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(a=h.utf8border(s.output,s.next_out),r=s.next_out-a,o=h.buf2string(s.output,a),s.next_out=r,s.avail_out=f-r,r&&u.arraySet(s.output,s.output,a,r,0),this.onData(o)):this.onData(u.shrinkBuf(s.output,s.next_out)))),0===s.avail_in&&0===s.avail_out&&(d=!0)}while((0<s.avail_in||0===s.avail_out)&&i!==b.Z_STREAM_END);return i===b.Z_STREAM_END&&(n=b.Z_FINISH),n===b.Z_FINISH?(i=c.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===b.Z_OK):n!==b.Z_SYNC_FLUSH||(this.onEnd(b.Z_OK),!(s.avail_out=0))},o.prototype.onData=function(e){this.chunks.push(e)},o.prototype.onEnd=function(e){e===b.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=u.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},i.Inflate=o,i.inflate=s,i.inflateRaw=function(e,t){return(t=t||{}).raw=!0,s(e,t)},i.ungzip=s},{\"./utils/common\":1,\"./utils/strings\":2,\"./zlib/constants\":4,\"./zlib/gzheader\":6,\"./zlib/inflate\":8,\"./zlib/messages\":10,\"./zlib/zstream\":11}]},{},[])(\"/lib/inflate.js\")});\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { bytesToHex, bytesFromHex, bufferConcats } from '../helpers/bytes';\nimport { nextRandomInt } from '../helpers/random';\n\n//export const secureRandom = new SecureRandom();\n\nObject.defineProperty(Uint8Array.prototype, 'hex', {\n get: function(): string {\n return bytesToHex([...this]);\n },\n \n set: function(str: string) {\n this.set(bytesFromHex(str));\n },\n enumerable: true,\n configurable: true\n});\n\nUint8Array.prototype.randomize = function() {\n //secureRandom.nextBytes(this);\n for(let i = 0; i < this.length; ++i) {\n this[i] = nextRandomInt(255);\n }\n return this;\n};\n\nUint8Array.prototype.concat = function(...args: Array<Uint8Array | ArrayBuffer | number[]>) {\n return bufferConcats(this, ...args);\n};\n\n/* Uint8Array.prototype.toString = function() {\n return String.fromCharCode.apply(null, [...this]);\n}; */\n\nUint8Array.prototype.toJSON = function() {\n return [...this];\n //return {type: 'bytes', value: [...this]};\n};\n\nArray.prototype.findAndSplice = function<T>(verify: (value: T, index?: number, array?: Array<T>) => boolean) {\n let index = this.findIndex(verify);\n return index !== -1 ? this.splice(index, 1)[0] : undefined;\n};\n\nString.prototype.toHHMMSS = function(leadZero = false) {\n const sec_num = parseInt(this + '', 10);\n const hours = Math.floor(sec_num / 3600);\n let minutes: any = Math.floor((sec_num - (hours * 3600)) / 60);\n let seconds: any = sec_num - (hours * 3600) - (minutes * 60);\n \n if(hours) leadZero = true;\n if(minutes < 10) minutes = leadZero ? \"0\" + minutes : minutes;\n if(seconds < 10) seconds = \"0\" + seconds;\n return (hours ? /* ('0' + hours).slice(-2) */hours + ':' : '') + minutes + ':' + seconds;\n};\n\n/* Promise.prototype.finally = Promise.prototype.finally || {\n finally(fn: () => any) {\n const onFinally = (callback: typeof fn) => Promise.resolve(fn()).then(callback);\n return this.then(\n result => onFinally(() => result),\n reason => onFinally(() => Promise.reject(reason))\n );\n }\n}.finally; */\nPromise.prototype.finally = Promise.prototype.finally || function<T>(this: Promise<T>, fn: () => any) {\n const onFinally = (callback: typeof fn) => Promise.resolve(fn()).then(callback);\n return this.then(\n result => onFinally(() => result),\n reason => onFinally(() => Promise.reject(reason))\n );\n};\n\ndeclare global {\n interface Uint8Array {\n hex: string;\n randomize: () => Uint8Array,\n concat: (...args: Array<Uint8Array | ArrayBuffer | number[]>) => Uint8Array,\n //toString: () => string,\n toJSON: () => number[],\n //toJSON: () => {type: 'bytes', value: number[]},\n }\n \n interface Array<T> {\n findAndSplice(verify: (value: T, index?: number, array?: Array<T>) => boolean): T;\n }\n \n interface String {\n toHHMMSS(leadZero?: boolean): string;\n }\n\n interface Promise<T> {\n finally: (onfinally?: () => void) => Promise<T>;\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nexport interface CancellablePromise<T> extends Promise<T> {\n resolve?: (...args: any[]) => void,\n reject?: (...args: any[]) => void,\n cancel?: () => void,\n\n notify?: (...args: any[]) => void,\n notifyAll?: (...args: any[]) => void,\n lastNotify?: any,\n listeners?: Array<(...args: any[]) => void>,\n addNotifyListener?: (callback: (...args: any[]) => void) => void,\n\n isFulfilled?: boolean,\n isRejected?: boolean\n}\n\nexport function deferredPromise<T>() {\n let deferredHelper: any = {\n isFulfilled: false, \n isRejected: false,\n\n notify: () => {}, \n notifyAll: (...args: any[]) => {\n deferredHelper.lastNotify = args;\n deferredHelper.listeners.forEach((callback: any) => callback(...args));\n }, \n\n lastNotify: undefined,\n listeners: [],\n addNotifyListener: (callback: (...args: any[]) => void) => {\n if(deferredHelper.lastNotify) {\n callback(...deferredHelper.lastNotify);\n }\n\n deferredHelper.listeners.push(callback);\n }\n };\n\n let deferred: CancellablePromise<T> = new Promise<T>((resolve, reject) => {\n deferredHelper.resolve = (value: T) => {\n if(deferred.isFulfilled) return;\n\n deferred.isFulfilled = true;\n resolve(value);\n };\n \n deferredHelper.reject = (...args: any[]) => {\n if(deferred.isRejected) return;\n \n deferred.isRejected = true;\n reject(...args);\n };\n });\n\n // @ts-ignore\n /* deferred.then = (resolve: (value: T) => any, reject: (...args: any[]) => any) => {\n const n = deferredPromise<ReturnType<typeof resolve>>();\n \n }; */\n\n deferred.finally(() => {\n deferred.notify = null;\n deferred.listeners.length = 0;\n deferred.lastNotify = null;\n\n if(deferred.cancel) {\n deferred.cancel = () => {};\n }\n });\n\n Object.assign(deferred, deferredHelper);\n\n return deferred;\n}","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n// * Jolly Cobra's schedulers\nimport { AnyToVoidFunction, NoneToVoidFunction } from \"../types\";\n\n//type Scheduler = typeof requestAnimationFrame | typeof onTickEnd | typeof runNow;\n\nexport function debounce<F extends AnyToVoidFunction>(\n fn: F,\n ms: number,\n shouldRunFirst = true,\n shouldRunLast = true,\n) {\n let waitingTimeout: number | null = null;\n\n return (...args: Parameters<F>) => {\n if(waitingTimeout) {\n clearTimeout(waitingTimeout);\n waitingTimeout = null;\n } else if(shouldRunFirst) {\n // @ts-ignore\n fn(...args);\n }\n\n waitingTimeout = setTimeout(() => {\n if(shouldRunLast) {\n // @ts-ignore\n fn(...args);\n }\n\n waitingTimeout = null;\n }, ms) as any;\n };\n}\n\nexport function throttle<F extends AnyToVoidFunction>(\n fn: F,\n ms: number,\n shouldRunFirst = true,\n) {\n let interval: number | null = null;\n let isPending: boolean;\n let args: Parameters<F>;\n\n return (..._args: Parameters<F>) => {\n isPending = true;\n args = _args;\n\n if(!interval) {\n if(shouldRunFirst) {\n isPending = false;\n // @ts-ignore\n fn(...args);\n }\n\n interval = setInterval(() => {\n if (!isPending) {\n clearInterval(interval!);\n interval = null;\n return;\n }\n\n isPending = false;\n // @ts-ignore\n fn(...args);\n }, ms) as any;\n }\n };\n}\n\n/* export function throttleWithRaf<F extends AnyToVoidFunction>(fn: F) {\n return throttleWith(fastRaf, fn);\n}\n\nexport function throttleWithTickEnd<F extends AnyToVoidFunction>(fn: F) {\n return throttleWith(onTickEnd, fn);\n}\n\nexport function throttleWithNow<F extends AnyToVoidFunction>(fn: F) {\n return throttleWith(runNow, fn);\n}\n\nexport function throttleWith<F extends AnyToVoidFunction>(schedulerFn: Scheduler, fn: F) {\n let waiting = false;\n let args: Parameters<F>;\n\n return (..._args: Parameters<F>) => {\n args = _args;\n\n if (!waiting) {\n waiting = true;\n\n schedulerFn(() => {\n waiting = false;\n // @ts-ignore\n fn(...args);\n });\n }\n };\n}\n\nexport function onTickEnd(cb: NoneToVoidFunction) {\n Promise.resolve().then(cb);\n}\n\nfunction runNow(fn: NoneToVoidFunction) {\n fn();\n} */\n\nexport const pause = (ms: number) => new Promise<void>((resolve) => {\n setTimeout(resolve, ms);\n});\n\nlet fastRafCallbacks: NoneToVoidFunction[] | undefined;\nexport function fastRaf(callback: NoneToVoidFunction) {\n if(!fastRafCallbacks) {\n fastRafCallbacks = [callback];\n\n requestAnimationFrame(() => {\n const currentCallbacks = fastRafCallbacks!;\n fastRafCallbacks = undefined;\n currentCallbacks.forEach((cb) => cb());\n });\n } else {\n fastRafCallbacks.push(callback);\n }\n}\n\nexport function doubleRaf() {\n return new Promise<void>((resolve) => {\n fastRaf(() => {\n fastRaf(resolve);\n });\n });\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { IDBStore } from \"../lib/idb\";\nimport Modes from \"./modes\";\n\nexport type DatabaseStoreName = 'session' | 'stickerSets' | 'users' | 'chats' | 'messages' | 'dialogs';\nexport type DatabaseStore = Omit<IDBStore, 'name'> & {name: DatabaseStoreName};\nconst Database = {\n name: 'tweb' + (Modes.test ? '_test' : ''),\n version: 7,\n stores: [{\n name: 'session'\n }, {\n name: 'stickerSets'\n }, {\n name: 'users'\n }, {\n name: 'chats'\n }, {\n name: 'dialogs'\n }, {\n name: 'messages'\n }] as DatabaseStore[],\n};\n\nexport default Database;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nexport const readBlobAsText = (blob: Blob) => {\n return new Promise<string>(resolve => {\n const reader = new FileReader();\n reader.addEventListener('loadend', (e) => {\n // @ts-ignore\n resolve(e.srcElement.result);\n });\n reader.readAsText(blob);\n });\n};\n\nexport function blobConstruct(blobParts: any, mimeType: string = ''): Blob {\n let blob;\n const safeMimeType = blobSafeMimeType(mimeType);\n try {\n blob = new Blob(blobParts, {type: safeMimeType});\n } catch(e) {\n // @ts-ignore\n let bb = new BlobBuilder;\n blobParts.forEach((blobPart: any) => {\n bb.append(blobPart);\n });\n blob = bb.getBlob(safeMimeType);\n }\n return blob;\n}\n\nexport function blobSafeMimeType(mimeType: string) {\n if([\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/bmp',\n 'video/mp4',\n 'video/webm',\n 'video/quicktime',\n 'audio/ogg',\n 'audio/mpeg',\n 'audio/mp4',\n 'application/json'\n ].indexOf(mimeType) === -1) {\n return 'application/octet-stream';\n }\n\n return mimeType;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport Database from '../config/database';\nimport { blobConstruct } from '../helpers/blob';\nimport { safeAssign } from '../helpers/object';\nimport { logger } from './logger';\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/createIndex\n */\nexport type IDBIndex = {\n indexName: string,\n keyPath: string,\n objectParameters: IDBIndexParameters\n};\n\nexport type IDBStore = {\n name: string, \n indexes?: IDBIndex[]\n};\n\nexport type IDBOptions = {\n name?: string,\n storeName: string,\n stores?: IDBStore[],\n version?: number\n};\n\nconst DEBUG = false;\n\nexport default class IDBStorage {\n //private static STORAGES: IDBStorage[] = [];\n private openDbPromise: Promise<IDBDatabase>;\n private storageIsAvailable = true;\n\n private log: ReturnType<typeof logger>;\n \n private name: string = Database.name;\n private version: number = Database.version;\n private stores: IDBStore[] = Database.stores;\n\n private storeName: string;\n\n constructor(options: IDBOptions) {\n safeAssign(this, options);\n\n this.log = logger('IDB-' + this.storeName);\n\n this.openDatabase(true);\n\n //IDBStorage.STORAGES.push(this);\n }\n\n public isAvailable() {\n return this.storageIsAvailable;\n }\n\n public openDatabase(createNew = false): Promise<IDBDatabase> {\n if(this.openDbPromise && !createNew) {\n return this.openDbPromise;\n }\n\n const createObjectStore = (db: IDBDatabase, store: IDBStore) => {\n const os = db.createObjectStore(store.name);\n\n if(store.indexes?.length) {\n for(const index of store.indexes) {\n os.createIndex(index.indexName, index.keyPath, index.objectParameters);\n }\n }\n };\n\n try {\n var request = indexedDB.open(this.name, this.version);\n\n if(!request) {\n throw new Error();\n }\n } catch(error) {\n this.log.error('error opening db', error.message)\n this.storageIsAvailable = false;\n return Promise.reject(error);\n }\n\n let finished = false;\n setTimeout(() => {\n if(!finished) {\n request.onerror({type: 'IDB_CREATE_TIMEOUT'} as Event);\n }\n }, 3000);\n\n return this.openDbPromise = new Promise<IDBDatabase>((resolve, reject) => {\n request.onsuccess = (event) => {\n finished = true;\n const db = request.result;\n let calledNew = false;\n\n this.log('Opened');\n \n db.onerror = (error) => {\n this.storageIsAvailable = false;\n this.log.error('Error creating/accessing IndexedDB database', error);\n reject(error);\n };\n\n db.onclose = (e) => {\n this.log.error('closed:', e);\n !calledNew && this.openDatabase();\n };\n\n db.onabort = (e) => {\n this.log.error('abort:', e);\n const transaction = e.target as IDBTransaction;\n \n this.openDatabase(calledNew = true);\n\n if(transaction.onerror) {\n transaction.onerror(e);\n }\n\n db.close();\n };\n\n db.onversionchange = (e) => {\n this.log.error('onversionchange, lol?');\n };\n\n resolve(db);\n };\n \n request.onerror = (event) => {\n finished = true;\n this.storageIsAvailable = false;\n this.log.error('Error creating/accessing IndexedDB database', event);\n reject(event);\n };\n \n request.onupgradeneeded = (event) => {\n finished = true;\n this.log.warn('performing idb upgrade from', event.oldVersion, 'to', event.newVersion);\n\n // @ts-ignore\n var db = event.target.result as IDBDatabase;\n this.stores.forEach((store) => {\n /* if(db.objectStoreNames.contains(store.name)) {\n //if(event.oldVersion === 1) {\n db.deleteObjectStore(store.name);\n //}\n } */\n \n if(!db.objectStoreNames.contains(store.name)) {\n createObjectStore(db, store);\n }\n });\n };\n });\n }\n\n public delete(entryName: string | string[]): Promise<void> {\n //return Promise.resolve();\n if(!Array.isArray(entryName)) {\n entryName = [].concat(entryName);\n }\n\n return this.getObjectStore('readwrite', (objectStore) => {\n return (entryName as string[]).map((entryName) => objectStore.delete(entryName));\n }, DEBUG ? 'delete: ' + entryName.join(', ') : '');\n }\n\n public deleteAll() {\n return this.getObjectStore('readwrite', (objectStore) => objectStore.clear(), DEBUG ? 'deleteAll' : '');\n }\n\n public save(entryName: string | string[], value: any | any[]) {\n // const handleError = (error: Error) => {\n // this.log.error('save: transaction error:', entryName, value, db, error, error && error.name);\n // if((!error || error.name === 'InvalidStateError')/* && false */) {\n // setTimeout(() => {\n // this.save(entryName, value);\n // }, 2e3);\n // } else {\n // //console.error('IndexedDB saveFile transaction error:', error, error && error.name);\n // }\n // };\n\n if(!Array.isArray(entryName)) {\n entryName = [].concat(entryName);\n value = [].concat(value);\n }\n \n return this.getObjectStore('readwrite', (objectStore) => {\n return (entryName as string[]).map((entryName, idx) => objectStore.put(value[idx], entryName));\n }, DEBUG ? 'save: ' + entryName.join(', ') : '');\n }\n\n public saveFile(fileName: string, blob: Blob | Uint8Array) {\n //return Promise.resolve(blobConstruct([blob]));\n if(!(blob instanceof Blob)) {\n blob = blobConstruct([blob]) as Blob;\n }\n\n return this.save(fileName, blob);\n }\n\n /* public saveFileBase64(db: IDBDatabase, fileName: string, blob: Blob | any): Promise<Blob> {\n if(this.getBlobSize(blob) > 10 * 1024 * 1024) {\n return Promise.reject();\n }\n\n if(!(blob instanceof Blob)) {\n var safeMimeType = blobSafeMimeType(blob.type || 'image/jpeg');\n var address = 'data:' + safeMimeType + ';base64,' + bytesToBase64(blob);\n return this.storagePutB64String(db, fileName, address).then(() => {\n return blob;\n });\n }\n\n try {\n var reader = new FileReader();\n } catch (e) {\n this.storageIsAvailable = false;\n return Promise.reject();\n }\n\n let promise = new Promise<Blob>((resolve, reject) => {\n reader.onloadend = () => {\n this.storagePutB64String(db, fileName, reader.result as string).then(() => {\n resolve(blob);\n }, reject);\n }\n \n reader.onerror = reject;\n });\n \n\n try {\n reader.readAsDataURL(blob);\n } catch (e) {\n this.storageIsAvailable = false;\n return Promise.reject();\n }\n\n return promise;\n }\n\n public storagePutB64String(db: IDBDatabase, fileName: string, b64string: string) {\n try {\n var objectStore = db.transaction([this.storeName], 'readwrite')\n .objectStore(this.storeName);\n var request = objectStore.put(b64string, fileName);\n } catch(error) {\n this.storageIsAvailable = false;\n return Promise.reject(error);\n }\n\n return new Promise((resolve, reject) => {\n request.onsuccess = function(event) {\n resolve();\n };\n \n request.onerror = reject;\n });\n }\n\n public getBlobSize(blob: any) {\n return blob.size || blob.byteLength || blob.length;\n } */\n\n public get<T>(entryName: string[]): Promise<T[]>;\n public get<T>(entryName: string): Promise<T>;\n public get<T>(entryName: string | string[]): Promise<T> | Promise<T[]> {\n //return Promise.reject();\n\n if(!Array.isArray(entryName)) {\n entryName = [].concat(entryName);\n }\n\n return this.getObjectStore<T>('readonly', (objectStore) => {\n return (entryName as string[]).map((entryName) => objectStore.get(entryName));\n }, DEBUG ? 'get: ' + entryName.join(', ') : '');\n }\n\n private getObjectStore<T>(mode: IDBTransactionMode, objectStore: (objectStore: IDBObjectStore) => IDBRequest | IDBRequest[], log?: string) {\n let perf: number;\n\n if(log) {\n perf = performance.now();\n this.log(log + ': start');\n }\n\n return this.openDatabase().then((db) => {\n return new Promise<T>((resolve, reject) => {\n const transaction = db.transaction([this.storeName], mode);\n\n transaction.onerror = (e) => {\n clearTimeout(timeout);\n reject(transaction.error);\n };\n \n transaction.oncomplete = (e) => {\n clearTimeout(timeout);\n\n if(log) {\n this.log(log + ': end', performance.now() - perf);\n }\n\n const results = r.map(r => r.result);\n resolve(isArray ? results : results[0]);\n };\n \n const timeout = setTimeout(() => {\n this.log.error('transaction not finished', transaction);\n }, 10000);\n \n /* transaction.addEventListener('abort', (e) => {\n //handleError();\n this.log.error('IndexedDB: transaction abort!', transaction.error);\n }); */\n \n const requests = objectStore(transaction.objectStore(this.storeName));\n\n const isArray = Array.isArray(requests);\n const r: IDBRequest[] = isArray ? requests : [].concat(requests) as any;\n\n // const length = r.length;\n // /* let left = length;\n\n // const onRequestFinished = (error?: Error) => {\n // if(!--left) {\n // resolve(result);\n // clearTimeout(timeout);\n // }\n // }; */\n\n // for(let i = 0; i < length; ++i) {\n // const request = r[i];\n // request.onsuccess = () => {\n // onRequestFinished();\n // };\n\n // request.onerror = (e) => {\n // onRequestFinished(transaction.error);\n // };\n // }\n });\n });\n }\n\n public getAll<T>(): Promise<T[]> {\n return this.getObjectStore<T[]>('readonly', (objectStore) => objectStore.getAll(), DEBUG ? 'getAll' : '');\n }\n\n /* public getAllKeys(): Promise<Array<string>> {\n console.time('getAllEntries');\n return this.openDatabase().then((db) => {\n var objectStore = db.transaction([this.storeName], 'readonly')\n .objectStore(this.storeName);\n var request = objectStore.getAllKeys();\n\n return new Promise((resolve, reject) => {\n request.onsuccess = function(event) {\n // @ts-ignore\n var result = event.target.result;\n resolve(result);\n console.timeEnd('getAllEntries');\n }\n \n request.onerror = reject;\n });\n });\n } */\n\n /* public isFileExists(fileName: string): Promise<boolean> {\n console.time('isFileExists');\n return this.openDatabase().then((db) => {\n var objectStore = db.transaction([this.storeName], 'readonly')\n .objectStore(this.storeName);\n var request = objectStore.openCursor(fileName);\n\n return new Promise((resolve, reject) => {\n request.onsuccess = function(event) {\n // @ts-ignore\n var cursor = event.target.result;\n resolve(!!cursor);\n console.timeEnd('isFileExists');\n }\n \n request.onerror = reject;\n });\n });\n } */\n\n /* public getFileWriter(fileName: string, mimeType: string) {\n var fakeWriter = FileManager.getFakeFileWriter(mimeType, (blob) => {\n return this.saveFile(fileName, blob);\n });\n\n return Promise.resolve(fakeWriter);\n } */\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nexport function copy<T>(obj: T): T {\n //in case of premitives\n if(obj === null || typeof(obj) !== \"object\") {\n return obj;\n }\n \n //date objects should be \n if(obj instanceof Date) {\n return new Date(obj.getTime()) as any;\n }\n \n //handle Array\n if(Array.isArray(obj)) {\n // @ts-ignore\n const clonedArr: T = obj.map(el => copy(el)) as any as T;\n return clonedArr;\n }\n \n //lastly, handle objects\n // @ts-ignore\n let clonedObj = new obj.constructor();\n for(var prop in obj){\n if(obj.hasOwnProperty(prop)) {\n clonedObj[prop] = copy(obj[prop]);\n }\n }\n return clonedObj;\n}\n\nexport function deepEqual(x: any, y: any): boolean {\n const ok = Object.keys, tx = typeof x, ty = typeof y;\n return x && y && tx === 'object' && tx === ty ? (\n ok(x).length === ok(y).length &&\n ok(x).every(key => deepEqual(x[key], y[key]))\n ) : (x === y);\n}\n\nexport function defineNotNumerableProperties(obj: {[key: string]: any}, names: string[]) {\n //const perf = performance.now();\n const props = {writable: true, configurable: true};\n const out: {[name: string]: typeof props} = {};\n names.forEach(name => {\n if(obj[name] === undefined) {\n out[name] = props;\n }\n });\n Object.defineProperties(obj, out);\n //console.log('defineNotNumerableProperties time:', performance.now() - perf);\n}\n\nexport function getObjectKeysAndSort(object: any, sort: 'asc' | 'desc' = 'asc') {\n if(!object) return [];\n const ids = Object.keys(object).map(i => +i);\n if(sort === 'asc') return ids.sort((a, b) => a - b);\n else return ids.sort((a, b) => b - a);\n}\n\nexport function safeReplaceObject(wasObject: any, newObject: any) {\n if(!wasObject) {\n return newObject;\n }\n\n for(var key in wasObject) {\n if(!newObject.hasOwnProperty(key)) {\n delete wasObject[key];\n }\n }\n\n for(var key in newObject) {\n //if (newObject.hasOwnProperty(key)) { // useless\n wasObject[key] = newObject[key];\n //}\n }\n \n return wasObject;\n}\n\n/**\n * Will be used for FILE_REFERENCE_EXPIRED\n * @param key \n * @param wasObject \n * @param newObject \n */\nexport function safeReplaceArrayInObject<K>(key: K, wasObject: any, newObject: any) {\n if('byteLength' in newObject[key]) { // Uint8Array\n newObject[key] = [...newObject[key]];\n }\n\n if(wasObject && wasObject[key] !== newObject[key]) {\n wasObject[key].length = newObject[key].length;\n (newObject[key] as any[]).forEach((v, i) => {\n wasObject[key][i] = v;\n });\n\n /* wasObject[key].set(newObject[key]); */\n newObject[key] = wasObject[key];\n }\n}\n\nexport function isObject(object: any) {\n return typeof(object) === 'object' && object !== null;\n}\n\nexport function getDeepProperty(object: any, key: string) {\n const splitted = key.split('.');\n let o: any = object;\n splitted.forEach(key => {\n if(!key) {\n return;\n }\n \n // @ts-ignore\n o = o[key];\n });\n \n return o;\n}\n\nexport function setDeepProperty(object: any, key: string, value: any) {\n const splitted = key.split('.');\n getDeepProperty(object, splitted.slice(0, -1).join('.'))[splitted.pop()] = value;\n}\n\nexport function validateInitObject(initObject: any, currentObject: any, onReplace?: (key: string) => void, previousKey?: string) {\n for(const key in initObject) {\n if(typeof(currentObject[key]) !== typeof(initObject[key])) {\n currentObject[key] = copy(initObject[key]);\n onReplace && onReplace(previousKey || key);\n } else if(isObject(initObject[key])) {\n validateInitObject(initObject[key], currentObject[key], onReplace, previousKey || key);\n }\n }\n}\n\nexport function safeAssign(object: any, fromObject: any) {\n if(!fromObject) return;\n \n for(let i in fromObject) {\n if(fromObject[i] !== undefined) {\n object[i] = fromObject[i];\n }\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport { DatabaseStore, DatabaseStoreName } from \"../config/database\";\nimport { CancellablePromise, deferredPromise } from \"../helpers/cancellablePromise\";\nimport { throttle } from \"../helpers/schedulers\";\nimport IDBStorage, { IDBOptions } from \"./idb\";\n\nexport default class AppStorage<Storage extends Record<string, any>/* Storage extends {[name: string]: any} *//* Storage extends Record<string, any> */> {\n private static STORAGES: AppStorage<any>[] = [];\n private storage: IDBStorage;//new CacheStorageController('session');\n\n //private cache: Partial<{[key: string]: Storage[typeof key]}> = {};\n private cache: Partial<Storage> = {};\n private useStorage = true;\n\n private getPromises: Map<keyof Storage, CancellablePromise<Storage[keyof Storage]>> = new Map();\n private getThrottled: () => void;\n\n private keysToSet: Set<keyof Storage> = new Set();\n private saveThrottled: () => void;\n private saveDeferred = deferredPromise<void>();\n\n constructor(storageOptions: Omit<IDBOptions, 'storeName' | 'stores'> & {stores?: DatabaseStore[], storeName: DatabaseStoreName}) {\n this.storage = new IDBStorage(storageOptions);\n\n AppStorage.STORAGES.push(this);\n\n this.saveThrottled = throttle(async() => {\n const deferred = this.saveDeferred;\n this.saveDeferred = deferredPromise<void>();\n\n if(this.keysToSet.size) {\n const keys = Array.from(this.keysToSet.values()) as string[];\n this.keysToSet.clear();\n\n try {\n //console.log('setItem: will set', key/* , value */);\n //await this.cacheStorage.delete(key); // * try to prevent memory leak in Chrome leading to 'Unexpected internal error.'\n //await this.storage.save(key, new Response(value, {headers: {'Content-Type': 'application/json'}}));\n await this.storage.save(keys, keys.map(key => this.cache[key]));\n //console.log('setItem: have set', key/* , value */);\n } catch(e) {\n //this.useCS = false;\n console.error('[AS]: set error:', e, keys/* , value */);\n }\n }\n\n deferred.resolve();\n }, 16, false);\n\n this.getThrottled = throttle(async() => {\n const keys = Array.from(this.getPromises.keys());\n\n this.storage.get(keys as string[]).then(values => {\n for(let i = 0, length = keys.length; i < length; ++i) {\n const key = keys[i];\n const deferred = this.getPromises.get(key);\n if(deferred) {\n // @ts-ignore\n deferred.resolve(this.cache[key] = values[i]);\n this.getPromises.delete(key);\n }\n }\n }, (error) => {\n if(!['NO_ENTRY_FOUND', 'STORAGE_OFFLINE'].includes(error)) {\n this.useStorage = false;\n console.error('[AS]: get error:', error, keys);\n }\n\n for(let i = 0, length = keys.length; i < length; ++i) {\n const key = keys[i];\n const deferred = this.getPromises.get(key);\n if(deferred) {\n deferred.reject(error);\n this.getPromises.delete(key);\n }\n }\n });\n }, 16, false);\n }\n\n public getCache() {\n return this.cache;\n }\n\n public getFromCache(key: keyof Storage) {\n return this.cache[key];\n }\n\n public setToCache(key: keyof Storage, value: Storage[typeof key]) {\n return this.cache[key] = value;\n }\n\n public async get(key: keyof Storage): Promise<Storage[typeof key]> {\n if(this.cache.hasOwnProperty(key)) {\n return this.getFromCache(key);\n } else if(this.useStorage) {\n const r = this.getPromises.get(key);\n if(r) return r;\n\n const p = deferredPromise<Storage[typeof key]>();\n this.getPromises.set(key, p);\n\n this.getThrottled();\n\n return p;\n }/* else {\n throw 'something went wrong';\n } */\n }\n\n public getAll() {\n return this.storage.getAll();\n }\n\n public set(obj: Partial<Storage>, onlyLocal = false) {\n //console.log('storageSetValue', obj, callback, arguments);\n\n for(const key in obj) {\n if(obj.hasOwnProperty(key)) {\n const value = obj[key];\n this.setToCache(key, value);\n\n // let perf = /* DEBUG */false ? performance.now() : 0;\n // value = JSON.stringify(value);\n\n // if(perf) {\n // let elapsedTime = performance.now() - perf;\n // if(elapsedTime > 10) {\n // console.warn('LocalStorage set: stringify time by JSON.stringify:', elapsedTime, key);\n // }\n // }\n \n /* perf = performance.now();\n value = stringify(value);\n console.log('LocalStorage set: stringify time by own stringify:', performance.now() - perf); */\n\n if(this.useStorage && !onlyLocal) {\n this.keysToSet.add(key);\n this.saveThrottled();\n }\n }\n }\n\n return this.saveDeferred;\n }\n\n public async delete(key: keyof Storage, saveLocal = false) {\n /* if(!this.cache.hasOwnProperty(key)) {\n return;\n } */\n\n // ! it is needed here\n key = '' + key;\n\n if(!saveLocal) {\n delete this.cache[key];\n }\n \n if(this.useStorage) {\n this.keysToSet.delete(key);\n \n try {\n await this.storage.delete(key as string);\n } catch(e) {\n this.useStorage = false;\n console.error('[AS]: remove error:', e);\n }\n }\n }\n\n public clear() {\n return this.storage.deleteAll();\n }\n\n public static toggleStorage(enabled: boolean) {\n return Promise.all(this.STORAGES.map(storage => {\n storage.useStorage = enabled;\n \n if(!enabled) {\n storage.keysToSet.clear();\n storage.getPromises.forEach((deferred) => deferred.resolve());\n storage.getPromises.clear();\n return storage.clear();\n } else {\n return storage.set(storage.cache);\n }\n }));\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport type { ChatSavedPosition } from './appManagers/appImManager';\nimport type { State } from './appManagers/appStateManager';\nimport type { AppDraftsManager } from './appManagers/appDraftsManager';\nimport { MOUNT_CLASS_TO } from '../config/debug';\nimport { LangPackDifference } from '../layer';\nimport AppStorage from './storage';\n\nconst sessionStorage = new AppStorage<{\n dc: number,\n user_auth: number,\n dc1_auth_key: any,\n dc2_auth_key: any,\n dc3_auth_key: any,\n dc4_auth_key: any,\n dc5_auth_key: any,\n max_seen_msg: number,\n server_time_offset: number,\n\n chatPositions: {\n [peerId_threadId: string]: ChatSavedPosition\n },\n langPack: LangPackDifference,\n drafts: AppDraftsManager['drafts']\n} & State>({\n storeName: 'session'\n});\nMOUNT_CLASS_TO.appStorage = sessionStorage;\nexport default sessionStorage;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nexport type MTProtoConstructor = {\n id: number,\n predicate: string,\n params: Array<{\n name: string,\n type: string\n }>,\n type: string\n};\n\nexport type MTProtoMethod = {\n id: number,\n method: string,\n params: Array<{\n name: string,\n type: string\n }>,\n type: string\n};\n\nexport default {\"MTProto\":{\"constructors\":[{\"id\":\"481674261\",\"predicate\":\"vector\",\"params\":[],\"type\":\"Vector t\"},{\"id\":\"85337187\",\"predicate\":\"resPQ\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"pq\",\"type\":\"bytes\"},{\"name\":\"server_public_key_fingerprints\",\"type\":\"Vector<long>\"}],\"type\":\"ResPQ\"},{\"id\":2211011308,\"predicate\":\"p_q_inner_data\",\"params\":[{\"name\":\"pq\",\"type\":\"bytes\"},{\"name\":\"p\",\"type\":\"bytes\"},{\"name\":\"q\",\"type\":\"bytes\"},{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce\",\"type\":\"int256\"}],\"type\":\"P_Q_inner_data\"},{\"id\":2851430293,\"predicate\":\"p_q_inner_data_dc\",\"params\":[{\"name\":\"pq\",\"type\":\"bytes\"},{\"name\":\"p\",\"type\":\"bytes\"},{\"name\":\"q\",\"type\":\"bytes\"},{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce\",\"type\":\"int256\"},{\"name\":\"dc\",\"type\":\"int\"}],\"type\":\"P_Q_inner_data\"},{\"id\":\"1013613780\",\"predicate\":\"p_q_inner_data_temp\",\"params\":[{\"name\":\"pq\",\"type\":\"bytes\"},{\"name\":\"p\",\"type\":\"bytes\"},{\"name\":\"q\",\"type\":\"bytes\"},{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce\",\"type\":\"int256\"},{\"name\":\"expires_in\",\"type\":\"int\"}],\"type\":\"P_Q_inner_data\"},{\"id\":\"1459478408\",\"predicate\":\"p_q_inner_data_temp_dc\",\"params\":[{\"name\":\"pq\",\"type\":\"bytes\"},{\"name\":\"p\",\"type\":\"bytes\"},{\"name\":\"q\",\"type\":\"bytes\"},{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce\",\"type\":\"int256\"},{\"name\":\"dc\",\"type\":\"int\"},{\"name\":\"expires_in\",\"type\":\"int\"}],\"type\":\"P_Q_inner_d\"},{\"id\":\"2043348061\",\"predicate\":\"server_DH_params_fail\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce_hash\",\"type\":\"int128\"}],\"type\":\"Server_DH_Params\"},{\"id\":3504867164,\"predicate\":\"server_DH_params_ok\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"encrypted_answer\",\"type\":\"bytes\"}],\"type\":\"Server_DH_Params\"},{\"id\":3045658042,\"predicate\":\"server_DH_inner_data\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"g\",\"type\":\"int\"},{\"name\":\"dh_prime\",\"type\":\"bytes\"},{\"name\":\"g_a\",\"type\":\"bytes\"},{\"name\":\"server_time\",\"type\":\"int\"}],\"type\":\"Server_DH_inner_data\"},{\"id\":\"1715713620\",\"predicate\":\"client_DH_inner_data\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"retry_id\",\"type\":\"long\"},{\"name\":\"g_b\",\"type\":\"bytes\"}],\"type\":\"Client_DH_Inner_Data\"},{\"id\":\"1003222836\",\"predicate\":\"dh_gen_ok\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce_hash1\",\"type\":\"int128\"}],\"type\":\"Set_client_DH_params_answer\"},{\"id\":\"1188831161\",\"predicate\":\"dh_gen_retry\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce_hash2\",\"type\":\"int128\"}],\"type\":\"Set_client_DH_params_answer\"},{\"id\":2795351554,\"predicate\":\"dh_gen_fail\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce_hash3\",\"type\":\"int128\"}],\"type\":\"Set_client_DH_params_answer\"},{\"id\":4082920705,\"predicate\":\"rpc_result\",\"params\":[{\"name\":\"req_msg_id\",\"type\":\"long\"},{\"name\":\"result\",\"type\":\"Object\"}],\"type\":\"RpcResult\"},{\"id\":\"558156313\",\"predicate\":\"rpc_error\",\"params\":[{\"name\":\"error_code\",\"type\":\"int\"},{\"name\":\"error_message\",\"type\":\"string\"}],\"type\":\"RpcError\"},{\"id\":\"1579864942\",\"predicate\":\"rpc_answer_unknown\",\"params\":[],\"type\":\"RpcDropAnswer\"},{\"id\":3447252358,\"predicate\":\"rpc_answer_dropped_running\",\"params\":[],\"type\":\"RpcDropAnswer\"},{\"id\":2755319991,\"predicate\":\"rpc_answer_dropped\",\"params\":[{\"name\":\"msg_id\",\"type\":\"long\"},{\"name\":\"seq_no\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"int\"}],\"type\":\"RpcDropAnswer\"},{\"id\":\"155834844\",\"predicate\":\"future_salt\",\"params\":[{\"name\":\"valid_since\",\"type\":\"int\"},{\"name\":\"valid_until\",\"type\":\"int\"},{\"name\":\"salt\",\"type\":\"long\"}],\"type\":\"FutureSalt\"},{\"id\":2924480661,\"predicate\":\"future_salts\",\"params\":[{\"name\":\"req_msg_id\",\"type\":\"long\"},{\"name\":\"now\",\"type\":\"int\"},{\"name\":\"salts\",\"type\":\"vector<future_salt>\"}],\"type\":\"FutureSalts\"},{\"id\":\"880243653\",\"predicate\":\"pong\",\"params\":[{\"name\":\"msg_id\",\"type\":\"long\"},{\"name\":\"ping_id\",\"type\":\"long\"}],\"type\":\"Pong\"},{\"id\":2663516424,\"predicate\":\"new_session_created\",\"params\":[{\"name\":\"first_msg_id\",\"type\":\"long\"},{\"name\":\"unique_id\",\"type\":\"long\"},{\"name\":\"server_salt\",\"type\":\"long\"}],\"type\":\"NewSession\"},{\"id\":\"1945237724\",\"predicate\":\"msg_container\",\"params\":[{\"name\":\"messages\",\"type\":\"vector<%Message>\"}],\"type\":\"MessageContainer\"},{\"id\":\"1538843921\",\"predicate\":\"message\",\"params\":[{\"name\":\"msg_id\",\"type\":\"long\"},{\"name\":\"seqno\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"int\"},{\"name\":\"body\",\"type\":\"Object\"}],\"type\":\"Message\"},{\"id\":3764405938,\"predicate\":\"msg_copy\",\"params\":[{\"name\":\"orig_message\",\"type\":\"Message\"}],\"type\":\"MessageCopy\"},{\"id\":\"812830625\",\"predicate\":\"gzip_packed\",\"params\":[{\"name\":\"packed_data\",\"type\":\"bytes\"}],\"type\":\"Object\"},{\"id\":\"1658238041\",\"predicate\":\"msgs_ack\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"}],\"type\":\"MsgsAck\"},{\"id\":2817521681,\"predicate\":\"bad_msg_notification\",\"params\":[{\"name\":\"bad_msg_id\",\"type\":\"long\"},{\"name\":\"bad_msg_seqno\",\"type\":\"int\"},{\"name\":\"error_code\",\"type\":\"int\"}],\"type\":\"BadMsgNotification\"},{\"id\":3987424379,\"predicate\":\"bad_server_salt\",\"params\":[{\"name\":\"bad_msg_id\",\"type\":\"long\"},{\"name\":\"bad_msg_seqno\",\"type\":\"int\"},{\"name\":\"error_code\",\"type\":\"int\"},{\"name\":\"new_server_salt\",\"type\":\"long\"}],\"type\":\"BadMsgNotification\"},{\"id\":\"2105940488\",\"predicate\":\"msg_resend_req\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"}],\"type\":\"MsgResendReq\"},{\"id\":2249243371,\"predicate\":\"msg_resend_ans_req\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"}],\"type\":\"MsgResendReq\"},{\"id\":3664378706,\"predicate\":\"msgs_state_req\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"}],\"type\":\"MsgsStateReq\"},{\"id\":\"81704317\",\"predicate\":\"msgs_state_info\",\"params\":[{\"name\":\"req_msg_id\",\"type\":\"long\"},{\"name\":\"info\",\"type\":\"bytes\"}],\"type\":\"MsgsStateInfo\"},{\"id\":2361446705,\"predicate\":\"msgs_all_info\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"},{\"name\":\"info\",\"type\":\"bytes\"}],\"type\":\"MsgsAllInfo\"},{\"id\":\"661470918\",\"predicate\":\"msg_detailed_info\",\"params\":[{\"name\":\"msg_id\",\"type\":\"long\"},{\"name\":\"answer_msg_id\",\"type\":\"long\"},{\"name\":\"bytes\",\"type\":\"int\"},{\"name\":\"status\",\"type\":\"int\"}],\"type\":\"MsgDetailedInfo\"},{\"id\":2157819615,\"predicate\":\"msg_new_detailed_info\",\"params\":[{\"name\":\"answer_msg_id\",\"type\":\"long\"},{\"name\":\"bytes\",\"type\":\"int\"},{\"name\":\"status\",\"type\":\"int\"}],\"type\":\"MsgDetailedInfo\"},{\"id\":\"1973679973\",\"predicate\":\"bind_auth_key_inner\",\"params\":[{\"name\":\"nonce\",\"type\":\"long\"},{\"name\":\"temp_auth_key_id\",\"type\":\"long\"},{\"name\":\"perm_auth_key_id\",\"type\":\"long\"},{\"name\":\"temp_session_id\",\"type\":\"long\"},{\"name\":\"expires_at\",\"type\":\"int\"}],\"type\":\"BindAuthKeyInner\"},{\"id\":4133544404,\"predicate\":\"destroy_auth_key_ok\",\"params\":[],\"type\":\"DestroyAuthKeyRes\"},{\"id\":\"178201177\",\"predicate\":\"destroy_auth_key_none\",\"params\":[],\"type\":\"DestroyAuthKeyRes\"},{\"id\":3926956819,\"predicate\":\"destroy_auth_key_fail\",\"params\":[],\"type\":\"DestroyAuthKeyRes\"},{\"id\":3793765884,\"predicate\":\"destroy_session_ok\",\"params\":[{\"name\":\"session_id\",\"type\":\"long\"}],\"type\":\"DestroySessionRes\"},{\"id\":\"1658015945\",\"predicate\":\"destroy_session_none\",\"params\":[{\"name\":\"session_id\",\"type\":\"long\"}],\"type\":\"DestroySessionRes\"}],\"methods\":[{\"id\":\"1615239032\",\"method\":\"req_pq\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"}],\"type\":\"ResPQ\"},{\"id\":3195965169,\"method\":\"req_pq_multi\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"}],\"type\":\"ResPQ\"},{\"id\":3608339646,\"method\":\"req_DH_params\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"p\",\"type\":\"bytes\"},{\"name\":\"q\",\"type\":\"bytes\"},{\"name\":\"public_key_fingerprint\",\"type\":\"long\"},{\"name\":\"encrypted_data\",\"type\":\"bytes\"}],\"type\":\"Server_DH_Params\"},{\"id\":4110704415,\"method\":\"set_client_DH_params\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"encrypted_data\",\"type\":\"bytes\"}],\"type\":\"Set_client_DH_params_answer\"},{\"id\":\"1491380032\",\"method\":\"rpc_drop_answer\",\"params\":[{\"name\":\"req_msg_id\",\"type\":\"long\"}],\"type\":\"RpcDropAnswer\"},{\"id\":3105996036,\"method\":\"get_future_salts\",\"params\":[{\"name\":\"num\",\"type\":\"int\"}],\"type\":\"FutureSalts\"},{\"id\":\"2059302892\",\"method\":\"ping\",\"params\":[{\"name\":\"ping_id\",\"type\":\"long\"}],\"type\":\"Pong\"},{\"id\":4081220492,\"method\":\"ping_delay_disconnect\",\"params\":[{\"name\":\"ping_id\",\"type\":\"long\"},{\"name\":\"disconnect_delay\",\"type\":\"int\"}],\"type\":\"Pong\"},{\"id\":2459514271,\"method\":\"http_wait\",\"params\":[{\"name\":\"max_delay\",\"type\":\"int\"},{\"name\":\"wait_after\",\"type\":\"int\"},{\"name\":\"max_wait\",\"type\":\"int\"}],\"type\":\"HttpWait\"},{\"id\":3510849888,\"method\":\"destroy_auth_key\",\"params\":[],\"type\":\"DestroyAuthKeyRes\"},{\"id\":3880853798,\"method\":\"destroy_session\",\"params\":[{\"name\":\"session_id\",\"type\":\"long\"}],\"type\":\"DestroySessionRes\"}]},\"API\":{\"constructors\":[{\"id\":3162085175,\"predicate\":\"boolFalse\",\"params\":[],\"type\":\"Bool\"},{\"id\":2574415285,\"predicate\":\"boolTrue\",\"params\":[],\"type\":\"Bool\"},{\"id\":\"1072550713\",\"predicate\":\"true\",\"params\":[],\"type\":\"True\"},{\"id\":\"481674261\",\"predicate\":\"vector\",\"params\":[],\"type\":\"Vector t\"},{\"id\":3300522427,\"predicate\":\"error\",\"params\":[{\"name\":\"code\",\"type\":\"int\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"Error\"},{\"id\":\"1450380236\",\"predicate\":\"null\",\"params\":[],\"type\":\"Null\"},{\"id\":\"2134579434\",\"predicate\":\"inputPeerEmpty\",\"params\":[],\"type\":\"InputPeer\"},{\"id\":\"2107670217\",\"predicate\":\"inputPeerSelf\",\"params\":[],\"type\":\"InputPeer\"},{\"id\":\"396093539\",\"predicate\":\"inputPeerChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"InputPeer\"},{\"id\":3112732367,\"predicate\":\"inputUserEmpty\",\"params\":[],\"type\":\"InputUser\"},{\"id\":4156666175,\"predicate\":\"inputUserSelf\",\"params\":[],\"type\":\"InputUser\"},{\"id\":4086478836,\"predicate\":\"inputPhoneContact\",\"params\":[{\"name\":\"client_id\",\"type\":\"long\"},{\"name\":\"phone\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"}],\"type\":\"InputContact\"},{\"id\":4113560191,\"predicate\":\"inputFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"parts\",\"type\":\"int\"},{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"md5_checksum\",\"type\":\"string\"}],\"type\":\"InputFile\"},{\"id\":2523198847,\"predicate\":\"inputMediaEmpty\",\"params\":[],\"type\":\"InputMedia\"},{\"id\":\"505969924\",\"predicate\":\"inputMediaUploadedPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"stickers\",\"type\":\"flags.0?Vector<InputDocument>\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.1?int\"}],\"type\":\"InputMedia\"},{\"id\":3015312949,\"predicate\":\"inputMediaPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"InputPhoto\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.0?int\"}],\"type\":\"InputMedia\"},{\"id\":4190388548,\"predicate\":\"inputMediaGeoPoint\",\"params\":[{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"}],\"type\":\"InputMedia\"},{\"id\":4171988475,\"predicate\":\"inputMediaContact\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"vcard\",\"type\":\"string\"}],\"type\":\"InputMedia\"},{\"id\":\"480546647\",\"predicate\":\"inputChatPhotoEmpty\",\"params\":[],\"type\":\"InputChatPhoto\"},{\"id\":3326243406,\"predicate\":\"inputChatUploadedPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"file\",\"type\":\"flags.0?InputFile\"},{\"name\":\"video\",\"type\":\"flags.1?InputFile\"},{\"name\":\"video_start_ts\",\"type\":\"flags.2?double\"}],\"type\":\"InputChatPhoto\"},{\"id\":2303962423,\"predicate\":\"inputChatPhoto\",\"params\":[{\"name\":\"id\",\"type\":\"InputPhoto\"}],\"type\":\"InputChatPhoto\"},{\"id\":3837862870,\"predicate\":\"inputGeoPointEmpty\",\"params\":[],\"type\":\"InputGeoPoint\"},{\"id\":\"1210199983\",\"predicate\":\"inputGeoPoint\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"lat\",\"type\":\"double\"},{\"name\":\"long\",\"type\":\"double\"},{\"name\":\"accuracy_radius\",\"type\":\"flags.0?int\"}],\"type\":\"InputGeoPoint\"},{\"id\":\"483901197\",\"predicate\":\"inputPhotoEmpty\",\"params\":[],\"type\":\"InputPhoto\"},{\"id\":\"1001634122\",\"predicate\":\"inputPhoto\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"}],\"type\":\"InputPhoto\"},{\"id\":3755650017,\"predicate\":\"inputFileLocation\",\"params\":[{\"name\":\"volume_id\",\"type\":\"long\"},{\"name\":\"local_id\",\"type\":\"int\"},{\"name\":\"secret\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"}],\"type\":\"InputFileLocation\"},{\"id\":2645671021,\"predicate\":\"peerUser\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"}],\"type\":\"Peer\"},{\"id\":3134252475,\"predicate\":\"peerChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"Peer\"},{\"id\":2861972229,\"predicate\":\"storage.fileUnknown\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":\"1086091090\",\"predicate\":\"storage.filePartial\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":\"8322574\",\"predicate\":\"storage.fileJpeg\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":3403786975,\"predicate\":\"storage.fileGif\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":\"172975040\",\"predicate\":\"storage.filePng\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":2921222285,\"predicate\":\"storage.filePdf\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":\"1384777335\",\"predicate\":\"storage.fileMp3\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":\"1258941372\",\"predicate\":\"storage.fileMov\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":3016663268,\"predicate\":\"storage.fileMp4\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":\"276907596\",\"predicate\":\"storage.fileWebp\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":\"537022650\",\"predicate\":\"userEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"User\"},{\"id\":\"1326562017\",\"predicate\":\"userProfilePhotoEmpty\",\"params\":[],\"type\":\"UserProfilePhoto\"},{\"id\":\"1775479590\",\"predicate\":\"userProfilePhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"has_video\",\"type\":\"flags.0?true\"},{\"name\":\"photo_id\",\"type\":\"long\"},{\"name\":\"photo_small\",\"type\":\"FileLocation\"},{\"name\":\"photo_big\",\"type\":\"FileLocation\"},{\"name\":\"dc_id\",\"type\":\"int\"}],\"type\":\"UserProfilePhoto\"},{\"id\":\"164646985\",\"predicate\":\"userStatusEmpty\",\"params\":[],\"type\":\"UserStatus\"},{\"id\":3988339017,\"predicate\":\"userStatusOnline\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"}],\"type\":\"UserStatus\"},{\"id\":\"9203775\",\"predicate\":\"userStatusOffline\",\"params\":[{\"name\":\"was_online\",\"type\":\"int\"}],\"type\":\"UserStatus\"},{\"id\":2611140608,\"predicate\":\"chatEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"Chat\"},{\"id\":\"1004149726\",\"predicate\":\"chat\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"creator\",\"type\":\"flags.0?true\"},{\"name\":\"kicked\",\"type\":\"flags.1?true\"},{\"name\":\"left\",\"type\":\"flags.2?true\"},{\"name\":\"deactivated\",\"type\":\"flags.5?true\"},{\"name\":\"call_active\",\"type\":\"flags.23?true\"},{\"name\":\"call_not_empty\",\"type\":\"flags.24?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"ChatPhoto\"},{\"name\":\"participants_count\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"migrated_to\",\"type\":\"flags.6?InputChannel\"},{\"name\":\"admin_rights\",\"type\":\"flags.14?ChatAdminRights\"},{\"name\":\"default_banned_rights\",\"type\":\"flags.18?ChatBannedRights\"}],\"type\":\"Chat\"},{\"id\":\"120753115\",\"predicate\":\"chatForbidden\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"Chat\"},{\"id\":2317232515,\"predicate\":\"chatFull\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_set_username\",\"type\":\"flags.7?true\"},{\"name\":\"has_scheduled\",\"type\":\"flags.8?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"about\",\"type\":\"string\"},{\"name\":\"participants\",\"type\":\"ChatParticipants\"},{\"name\":\"chat_photo\",\"type\":\"flags.2?Photo\"},{\"name\":\"notify_settings\",\"type\":\"PeerNotifySettings\"},{\"name\":\"exported_invite\",\"type\":\"flags.13?ExportedChatInvite\"},{\"name\":\"bot_info\",\"type\":\"flags.3?Vector<BotInfo>\"},{\"name\":\"pinned_msg_id\",\"type\":\"flags.6?int\"},{\"name\":\"folder_id\",\"type\":\"flags.11?int\"},{\"name\":\"call\",\"type\":\"flags.12?InputGroupCall\"},{\"name\":\"ttl_period\",\"type\":\"flags.14?int\"},{\"name\":\"groupcall_default_join_as\",\"type\":\"flags.15?Peer\"}],\"type\":\"ChatFull\"},{\"id\":3369552190,\"predicate\":\"chatParticipant\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"inviter_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"ChatParticipant\"},{\"id\":4237298731,\"predicate\":\"chatParticipantsForbidden\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"self_participant\",\"type\":\"flags.0?ChatParticipant\"}],\"type\":\"ChatParticipants\"},{\"id\":\"1061556205\",\"predicate\":\"chatParticipants\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"participants\",\"type\":\"Vector<ChatParticipant>\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"ChatParticipants\"},{\"id\":\"935395612\",\"predicate\":\"chatPhotoEmpty\",\"params\":[],\"type\":\"ChatPhoto\"},{\"id\":3523977020,\"predicate\":\"chatPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"has_video\",\"type\":\"flags.0?true\"},{\"name\":\"photo_small\",\"type\":\"FileLocation\"},{\"name\":\"photo_big\",\"type\":\"FileLocation\"},{\"name\":\"dc_id\",\"type\":\"int\"}],\"type\":\"ChatPhoto\"},{\"id\":2426849924,\"predicate\":\"messageEmpty\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"peer_id\",\"type\":\"flags.0?Peer\"}],\"type\":\"Message\"},{\"id\":3169027026,\"predicate\":\"message\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"out\",\"type\":\"flags.1?true\"},{\"name\":\"mentioned\",\"type\":\"flags.4?true\"},{\"name\":\"media_unread\",\"type\":\"flags.5?true\"},{\"name\":\"silent\",\"type\":\"flags.13?true\"},{\"name\":\"post\",\"type\":\"flags.14?true\"},{\"name\":\"from_scheduled\",\"type\":\"flags.18?true\"},{\"name\":\"legacy\",\"type\":\"flags.19?true\"},{\"name\":\"edit_hide\",\"type\":\"flags.21?true\"},{\"name\":\"pinned\",\"type\":\"flags.24?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"from_id\",\"type\":\"flags.8?Peer\"},{\"name\":\"peer_id\",\"type\":\"Peer\"},{\"name\":\"fwd_from\",\"type\":\"flags.2?MessageFwdHeader\"},{\"name\":\"via_bot_id\",\"type\":\"flags.11?int\"},{\"name\":\"reply_to\",\"type\":\"flags.3?MessageReplyHeader\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"media\",\"type\":\"flags.9?MessageMedia\"},{\"name\":\"reply_markup\",\"type\":\"flags.6?ReplyMarkup\"},{\"name\":\"entities\",\"type\":\"flags.7?Vector<MessageEntity>\"},{\"name\":\"views\",\"type\":\"flags.10?int\"},{\"name\":\"forwards\",\"type\":\"flags.10?int\"},{\"name\":\"replies\",\"type\":\"flags.23?MessageReplies\"},{\"name\":\"edit_date\",\"type\":\"flags.15?int\"},{\"name\":\"post_author\",\"type\":\"flags.16?string\"},{\"name\":\"grouped_id\",\"type\":\"flags.17?long\"},{\"name\":\"restriction_reason\",\"type\":\"flags.22?Vector<RestrictionReason>\"},{\"name\":\"ttl_period\",\"type\":\"flags.25?int\"}],\"type\":\"Message\"},{\"id\":\"721967202\",\"predicate\":\"messageService\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"out\",\"type\":\"flags.1?true\"},{\"name\":\"mentioned\",\"type\":\"flags.4?true\"},{\"name\":\"media_unread\",\"type\":\"flags.5?true\"},{\"name\":\"silent\",\"type\":\"flags.13?true\"},{\"name\":\"post\",\"type\":\"flags.14?true\"},{\"name\":\"legacy\",\"type\":\"flags.19?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"from_id\",\"type\":\"flags.8?Peer\"},{\"name\":\"peer_id\",\"type\":\"Peer\"},{\"name\":\"reply_to\",\"type\":\"flags.3?MessageReplyHeader\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"action\",\"type\":\"MessageAction\"},{\"name\":\"ttl_period\",\"type\":\"flags.25?int\"}],\"type\":\"Message\"},{\"id\":\"1038967584\",\"predicate\":\"messageMediaEmpty\",\"params\":[],\"type\":\"MessageMedia\"},{\"id\":\"1766936791\",\"predicate\":\"messageMediaPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"photo\",\"type\":\"flags.0?Photo\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.2?int\"}],\"type\":\"MessageMedia\"},{\"id\":\"1457575028\",\"predicate\":\"messageMediaGeo\",\"params\":[{\"name\":\"geo\",\"type\":\"GeoPoint\"}],\"type\":\"MessageMedia\"},{\"id\":3421653312,\"predicate\":\"messageMediaContact\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"vcard\",\"type\":\"string\"},{\"name\":\"user_id\",\"type\":\"int\"}],\"type\":\"MessageMedia\"},{\"id\":2676290718,\"predicate\":\"messageMediaUnsupported\",\"params\":[],\"type\":\"MessageMedia\"},{\"id\":3064919984,\"predicate\":\"messageActionEmpty\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":2791541658,\"predicate\":\"messageActionChatCreate\",\"params\":[{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"users\",\"type\":\"Vector<int>\"}],\"type\":\"MessageAction\"},{\"id\":3047280218,\"predicate\":\"messageActionChatEditTitle\",\"params\":[{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":\"2144015272\",\"predicate\":\"messageActionChatEditPhoto\",\"params\":[{\"name\":\"photo\",\"type\":\"Photo\"}],\"type\":\"MessageAction\"},{\"id\":2514746351,\"predicate\":\"messageActionChatDeletePhoto\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":\"1217033015\",\"predicate\":\"messageActionChatAddUser\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<int>\"}],\"type\":\"MessageAction\"},{\"id\":2997787404,\"predicate\":\"messageActionChatDeleteUser\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":\"739712882\",\"predicate\":\"dialog\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.2?true\"},{\"name\":\"unread_mark\",\"type\":\"flags.3?true\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"top_message\",\"type\":\"int\"},{\"name\":\"read_inbox_max_id\",\"type\":\"int\"},{\"name\":\"read_outbox_max_id\",\"type\":\"int\"},{\"name\":\"unread_count\",\"type\":\"int\"},{\"name\":\"unread_mentions_count\",\"type\":\"int\"},{\"name\":\"notify_settings\",\"type\":\"PeerNotifySettings\"},{\"name\":\"pts\",\"type\":\"flags.0?int\"},{\"name\":\"draft\",\"type\":\"flags.1?DraftMessage\"},{\"name\":\"folder_id\",\"type\":\"flags.4?int\"}],\"type\":\"Dialog\"},{\"id\":\"590459437\",\"predicate\":\"photoEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"Photo\"},{\"id\":4212750949,\"predicate\":\"photo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"has_stickers\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"sizes\",\"type\":\"Vector<PhotoSize>\"},{\"name\":\"video_sizes\",\"type\":\"flags.1?Vector<VideoSize>\"},{\"name\":\"dc_id\",\"type\":\"int\"}],\"type\":\"Photo\"},{\"id\":\"236446268\",\"predicate\":\"photoSizeEmpty\",\"params\":[{\"name\":\"type\",\"type\":\"string\"}],\"type\":\"PhotoSize\"},{\"id\":\"2009052699\",\"predicate\":\"photoSize\",\"params\":[{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"location\",\"type\":\"FileLocation\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"size\",\"type\":\"int\"}],\"type\":\"PhotoSize\"},{\"id\":3920049402,\"predicate\":\"photoCachedSize\",\"params\":[{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"location\",\"type\":\"FileLocation\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"PhotoSize\"},{\"id\":\"286776671\",\"predicate\":\"geoPointEmpty\",\"params\":[],\"type\":\"GeoPoint\"},{\"id\":2997024355,\"predicate\":\"geoPoint\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"long\",\"type\":\"double\"},{\"name\":\"lat\",\"type\":\"double\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"accuracy_radius\",\"type\":\"flags.0?int\"}],\"type\":\"GeoPoint\"},{\"id\":\"1577067778\",\"predicate\":\"auth.sentCode\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"type\",\"type\":\"auth.SentCodeType\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"next_type\",\"type\":\"flags.1?auth.CodeType\"},{\"name\":\"timeout\",\"type\":\"flags.2?int\"}],\"type\":\"auth.SentCode\"},{\"id\":3439659286,\"predicate\":\"auth.authorization\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"tmp_sessions\",\"type\":\"flags.0?int\"},{\"name\":\"user\",\"type\":\"User\"}],\"type\":\"auth.Authorization\"},{\"id\":3751189549,\"predicate\":\"auth.exportedAuthorization\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"auth.ExportedAuthorization\"},{\"id\":3099351820,\"predicate\":\"inputNotifyPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"InputNotifyPeer\"},{\"id\":\"423314455\",\"predicate\":\"inputNotifyUsers\",\"params\":[],\"type\":\"InputNotifyPeer\"},{\"id\":\"1251338318\",\"predicate\":\"inputNotifyChats\",\"params\":[],\"type\":\"InputNotifyPeer\"},{\"id\":2621249934,\"predicate\":\"inputPeerNotifySettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"show_previews\",\"type\":\"flags.0?Bool\"},{\"name\":\"silent\",\"type\":\"flags.1?Bool\"},{\"name\":\"mute_until\",\"type\":\"flags.2?int\"},{\"name\":\"sound\",\"type\":\"flags.3?string\"}],\"type\":\"InputPeerNotifySettings\"},{\"id\":2941295904,\"predicate\":\"peerNotifySettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"show_previews\",\"type\":\"flags.0?Bool\"},{\"name\":\"silent\",\"type\":\"flags.1?Bool\"},{\"name\":\"mute_until\",\"type\":\"flags.2?int\"},{\"name\":\"sound\",\"type\":\"flags.3?string\"}],\"type\":\"PeerNotifySettings\"},{\"id\":\"1933519201\",\"predicate\":\"peerSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"report_spam\",\"type\":\"flags.0?true\"},{\"name\":\"add_contact\",\"type\":\"flags.1?true\"},{\"name\":\"block_contact\",\"type\":\"flags.2?true\"},{\"name\":\"share_contact\",\"type\":\"flags.3?true\"},{\"name\":\"need_contacts_exception\",\"type\":\"flags.4?true\"},{\"name\":\"report_geo\",\"type\":\"flags.5?true\"},{\"name\":\"autoarchived\",\"type\":\"flags.7?true\"},{\"name\":\"invite_members\",\"type\":\"flags.8?true\"},{\"name\":\"geo_distance\",\"type\":\"flags.6?int\"}],\"type\":\"PeerSettings\"},{\"id\":2755118061,\"predicate\":\"wallPaper\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"creator\",\"type\":\"flags.0?true\"},{\"name\":\"default\",\"type\":\"flags.1?true\"},{\"name\":\"pattern\",\"type\":\"flags.3?true\"},{\"name\":\"dark\",\"type\":\"flags.4?true\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"slug\",\"type\":\"string\"},{\"name\":\"document\",\"type\":\"Document\"},{\"name\":\"settings\",\"type\":\"flags.2?WallPaperSettings\"}],\"type\":\"WallPaper\"},{\"id\":\"1490799288\",\"predicate\":\"inputReportReasonSpam\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":\"505595789\",\"predicate\":\"inputReportReasonViolence\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":\"777640226\",\"predicate\":\"inputReportReasonPornography\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":2918469347,\"predicate\":\"inputReportReasonChildAbuse\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":3252986545,\"predicate\":\"inputReportReasonOther\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":\"328899191\",\"predicate\":\"userFull\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"blocked\",\"type\":\"flags.0?true\"},{\"name\":\"phone_calls_available\",\"type\":\"flags.4?true\"},{\"name\":\"phone_calls_private\",\"type\":\"flags.5?true\"},{\"name\":\"can_pin_message\",\"type\":\"flags.7?true\"},{\"name\":\"has_scheduled\",\"type\":\"flags.12?true\"},{\"name\":\"video_calls_available\",\"type\":\"flags.13?true\"},{\"name\":\"user\",\"type\":\"User\"},{\"name\":\"about\",\"type\":\"flags.1?string\"},{\"name\":\"settings\",\"type\":\"PeerSettings\"},{\"name\":\"profile_photo\",\"type\":\"flags.2?Photo\"},{\"name\":\"notify_settings\",\"type\":\"PeerNotifySettings\"},{\"name\":\"bot_info\",\"type\":\"flags.3?BotInfo\"},{\"name\":\"pinned_msg_id\",\"type\":\"flags.6?int\"},{\"name\":\"common_chats_count\",\"type\":\"int\"},{\"name\":\"folder_id\",\"type\":\"flags.11?int\"},{\"name\":\"ttl_period\",\"type\":\"flags.14?int\"}],\"type\":\"UserFull\"},{\"id\":4178692500,\"predicate\":\"contact\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"mutual\",\"type\":\"Bool\"}],\"type\":\"Contact\"},{\"id\":3489825848,\"predicate\":\"importedContact\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"client_id\",\"type\":\"long\"}],\"type\":\"ImportedContact\"},{\"id\":3546811489,\"predicate\":\"contactStatus\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"status\",\"type\":\"UserStatus\"}],\"type\":\"ContactStatus\"},{\"id\":3075189202,\"predicate\":\"contacts.contactsNotModified\",\"params\":[],\"type\":\"contacts.Contacts\"},{\"id\":3941105218,\"predicate\":\"contacts.contacts\",\"params\":[{\"name\":\"contacts\",\"type\":\"Vector<Contact>\"},{\"name\":\"saved_count\",\"type\":\"int\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.Contacts\"},{\"id\":\"2010127419\",\"predicate\":\"contacts.importedContacts\",\"params\":[{\"name\":\"imported\",\"type\":\"Vector<ImportedContact>\"},{\"name\":\"popular_invites\",\"type\":\"Vector<PopularContact>\"},{\"name\":\"retry_contacts\",\"type\":\"Vector<long>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.ImportedContacts\"},{\"id\":\"182326673\",\"predicate\":\"contacts.blocked\",\"params\":[{\"name\":\"blocked\",\"type\":\"Vector<PeerBlocked>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.Blocked\"},{\"id\":3781575060,\"predicate\":\"contacts.blockedSlice\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"blocked\",\"type\":\"Vector<PeerBlocked>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.Blocked\"},{\"id\":\"364538944\",\"predicate\":\"messages.dialogs\",\"params\":[{\"name\":\"dialogs\",\"type\":\"Vector<Dialog>\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.Dialogs\"},{\"id\":\"1910543603\",\"predicate\":\"messages.dialogsSlice\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"dialogs\",\"type\":\"Vector<Dialog>\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.Dialogs\"},{\"id\":2356252295,\"predicate\":\"messages.messages\",\"params\":[{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.Messages\"},{\"id\":\"978610270\",\"predicate\":\"messages.messagesSlice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"inexact\",\"type\":\"flags.1?true\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"next_rate\",\"type\":\"flags.0?int\"},{\"name\":\"offset_id_offset\",\"type\":\"flags.2?int\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.Messages\"},{\"id\":\"1694474197\",\"predicate\":\"messages.chats\",\"params\":[{\"name\":\"chats\",\"type\":\"Vector<Chat>\"}],\"type\":\"messages.Chats\"},{\"id\":3856126364,\"predicate\":\"messages.chatFull\",\"params\":[{\"name\":\"full_chat\",\"type\":\"ChatFull\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ChatFull\"},{\"id\":3025955281,\"predicate\":\"messages.affectedHistory\",\"params\":[{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"},{\"name\":\"offset\",\"type\":\"int\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":\"1474492012\",\"predicate\":\"inputMessagesFilterEmpty\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":2517214492,\"predicate\":\"inputMessagesFilterPhotos\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":2680163941,\"predicate\":\"inputMessagesFilterVideo\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":\"1458172132\",\"predicate\":\"inputMessagesFilterPhotoVideo\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":2665345416,\"predicate\":\"inputMessagesFilterDocument\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":\"2129714567\",\"predicate\":\"inputMessagesFilterUrl\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":4291323271,\"predicate\":\"inputMessagesFilterGif\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":\"522914557\",\"predicate\":\"updateNewMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"1318109142\",\"predicate\":\"updateMessageID\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"random_id\",\"type\":\"long\"}],\"type\":\"Update\"},{\"id\":2718806245,\"predicate\":\"updateDeleteMessages\",\"params\":[{\"name\":\"messages\",\"type\":\"Vector<int>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"1548249383\",\"predicate\":\"updateUserTyping\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"action\",\"type\":\"SendMessageAction\"}],\"type\":\"Update\"},{\"id\":2261441388,\"predicate\":\"updateChatUserTyping\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"from_id\",\"type\":\"Peer\"},{\"name\":\"action\",\"type\":\"SendMessageAction\"}],\"type\":\"Update\"},{\"id\":\"125178264\",\"predicate\":\"updateChatParticipants\",\"params\":[{\"name\":\"participants\",\"type\":\"ChatParticipants\"}],\"type\":\"Update\"},{\"id\":\"469489699\",\"predicate\":\"updateUserStatus\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"status\",\"type\":\"UserStatus\"}],\"type\":\"Update\"},{\"id\":2805148531,\"predicate\":\"updateUserName\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"Update\"},{\"id\":2503031564,\"predicate\":\"updateUserPhoto\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"photo\",\"type\":\"UserProfilePhoto\"},{\"name\":\"previous\",\"type\":\"Bool\"}],\"type\":\"Update\"},{\"id\":2775329342,\"predicate\":\"updates.state\",\"params\":[{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"qts\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"seq\",\"type\":\"int\"},{\"name\":\"unread_count\",\"type\":\"int\"}],\"type\":\"updates.State\"},{\"id\":\"1567990072\",\"predicate\":\"updates.differenceEmpty\",\"params\":[{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"seq\",\"type\":\"int\"}],\"type\":\"updates.Difference\"},{\"id\":\"16030880\",\"predicate\":\"updates.difference\",\"params\":[{\"name\":\"new_messages\",\"type\":\"Vector<Message>\"},{\"name\":\"new_encrypted_messages\",\"type\":\"Vector<EncryptedMessage>\"},{\"name\":\"other_updates\",\"type\":\"Vector<Update>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"state\",\"type\":\"updates.State\"}],\"type\":\"updates.Difference\"},{\"id\":2835028353,\"predicate\":\"updates.differenceSlice\",\"params\":[{\"name\":\"new_messages\",\"type\":\"Vector<Message>\"},{\"name\":\"new_encrypted_messages\",\"type\":\"Vector<EncryptedMessage>\"},{\"name\":\"other_updates\",\"type\":\"Vector<Update>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"intermediate_state\",\"type\":\"updates.State\"}],\"type\":\"updates.Difference\"},{\"id\":3809980286,\"predicate\":\"updatesTooLong\",\"params\":[],\"type\":\"Updates\"},{\"id\":4210030643,\"predicate\":\"updateShortMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"out\",\"type\":\"flags.1?true\"},{\"name\":\"mentioned\",\"type\":\"flags.4?true\"},{\"name\":\"media_unread\",\"type\":\"flags.5?true\"},{\"name\":\"silent\",\"type\":\"flags.13?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"fwd_from\",\"type\":\"flags.2?MessageFwdHeader\"},{\"name\":\"via_bot_id\",\"type\":\"flags.11?int\"},{\"name\":\"reply_to\",\"type\":\"flags.3?MessageReplyHeader\"},{\"name\":\"entities\",\"type\":\"flags.7?Vector<MessageEntity>\"},{\"name\":\"ttl_period\",\"type\":\"flags.25?int\"}],\"type\":\"Updates\"},{\"id\":\"290961496\",\"predicate\":\"updateShortChatMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"out\",\"type\":\"flags.1?true\"},{\"name\":\"mentioned\",\"type\":\"flags.4?true\"},{\"name\":\"media_unread\",\"type\":\"flags.5?true\"},{\"name\":\"silent\",\"type\":\"flags.13?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"from_id\",\"type\":\"int\"},{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"fwd_from\",\"type\":\"flags.2?MessageFwdHeader\"},{\"name\":\"via_bot_id\",\"type\":\"flags.11?int\"},{\"name\":\"reply_to\",\"type\":\"flags.3?MessageReplyHeader\"},{\"name\":\"entities\",\"type\":\"flags.7?Vector<MessageEntity>\"},{\"name\":\"ttl_period\",\"type\":\"flags.25?int\"}],\"type\":\"Updates\"},{\"id\":\"2027216577\",\"predicate\":\"updateShort\",\"params\":[{\"name\":\"update\",\"type\":\"Update\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":\"1918567619\",\"predicate\":\"updatesCombined\",\"params\":[{\"name\":\"updates\",\"type\":\"Vector<Update>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"seq_start\",\"type\":\"int\"},{\"name\":\"seq\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":\"1957577280\",\"predicate\":\"updates\",\"params\":[{\"name\":\"updates\",\"type\":\"Vector<Update>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"seq\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":2378853029,\"predicate\":\"photos.photos\",\"params\":[{\"name\":\"photos\",\"type\":\"Vector<Photo>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"photos.Photos\"},{\"id\":\"352657236\",\"predicate\":\"photos.photosSlice\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"photos\",\"type\":\"Vector<Photo>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"photos.Photos\"},{\"id\":\"539045032\",\"predicate\":\"photos.photo\",\"params\":[{\"name\":\"photo\",\"type\":\"Photo\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"photos.Photo\"},{\"id\":\"157948117\",\"predicate\":\"upload.file\",\"params\":[{\"name\":\"type\",\"type\":\"storage.FileType\"},{\"name\":\"mtime\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"upload.File\"},{\"id\":\"414687501\",\"predicate\":\"dcOption\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"ipv6\",\"type\":\"flags.0?true\"},{\"name\":\"media_only\",\"type\":\"flags.1?true\"},{\"name\":\"tcpo_only\",\"type\":\"flags.2?true\"},{\"name\":\"cdn\",\"type\":\"flags.3?true\"},{\"name\":\"static\",\"type\":\"flags.4?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"ip_address\",\"type\":\"string\"},{\"name\":\"port\",\"type\":\"int\"},{\"name\":\"secret\",\"type\":\"flags.10?bytes\"}],\"type\":\"DcOption\"},{\"id\":\"856375399\",\"predicate\":\"config\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"phonecalls_enabled\",\"type\":\"flags.1?true\"},{\"name\":\"default_p2p_contacts\",\"type\":\"flags.3?true\"},{\"name\":\"preload_featured_stickers\",\"type\":\"flags.4?true\"},{\"name\":\"ignore_phone_entities\",\"type\":\"flags.5?true\"},{\"name\":\"revoke_pm_inbox\",\"type\":\"flags.6?true\"},{\"name\":\"blocked_mode\",\"type\":\"flags.8?true\"},{\"name\":\"pfs_enabled\",\"type\":\"flags.13?true\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"expires\",\"type\":\"int\"},{\"name\":\"test_mode\",\"type\":\"Bool\"},{\"name\":\"this_dc\",\"type\":\"int\"},{\"name\":\"dc_options\",\"type\":\"Vector<DcOption>\"},{\"name\":\"dc_txt_domain_name\",\"type\":\"string\"},{\"name\":\"chat_size_max\",\"type\":\"int\"},{\"name\":\"megagroup_size_max\",\"type\":\"int\"},{\"name\":\"forwarded_count_max\",\"type\":\"int\"},{\"name\":\"online_update_period_ms\",\"type\":\"int\"},{\"name\":\"offline_blur_timeout_ms\",\"type\":\"int\"},{\"name\":\"offline_idle_timeout_ms\",\"type\":\"int\"},{\"name\":\"online_cloud_timeout_ms\",\"type\":\"int\"},{\"name\":\"notify_cloud_delay_ms\",\"type\":\"int\"},{\"name\":\"notify_default_delay_ms\",\"type\":\"int\"},{\"name\":\"push_chat_period_ms\",\"type\":\"int\"},{\"name\":\"push_chat_limit\",\"type\":\"int\"},{\"name\":\"saved_gifs_limit\",\"type\":\"int\"},{\"name\":\"edit_time_limit\",\"type\":\"int\"},{\"name\":\"revoke_time_limit\",\"type\":\"int\"},{\"name\":\"revoke_pm_time_limit\",\"type\":\"int\"},{\"name\":\"rating_e_decay\",\"type\":\"int\"},{\"name\":\"stickers_recent_limit\",\"type\":\"int\"},{\"name\":\"stickers_faved_limit\",\"type\":\"int\"},{\"name\":\"channels_read_media_period\",\"type\":\"int\"},{\"name\":\"tmp_sessions\",\"type\":\"flags.0?int\"},{\"name\":\"pinned_dialogs_count_max\",\"type\":\"int\"},{\"name\":\"pinned_infolder_count_max\",\"type\":\"int\"},{\"name\":\"call_receive_timeout_ms\",\"type\":\"int\"},{\"name\":\"call_ring_timeout_ms\",\"type\":\"int\"},{\"name\":\"call_connect_timeout_ms\",\"type\":\"int\"},{\"name\":\"call_packet_timeout_ms\",\"type\":\"int\"},{\"name\":\"me_url_prefix\",\"type\":\"string\"},{\"name\":\"autoupdate_url_prefix\",\"type\":\"flags.7?string\"},{\"name\":\"gif_search_username\",\"type\":\"flags.9?string\"},{\"name\":\"venue_search_username\",\"type\":\"flags.10?string\"},{\"name\":\"img_search_username\",\"type\":\"flags.11?string\"},{\"name\":\"static_maps_provider\",\"type\":\"flags.12?string\"},{\"name\":\"caption_length_max\",\"type\":\"int\"},{\"name\":\"message_length_max\",\"type\":\"int\"},{\"name\":\"webfile_dc_id\",\"type\":\"int\"},{\"name\":\"suggested_lang_code\",\"type\":\"flags.2?string\"},{\"name\":\"lang_pack_version\",\"type\":\"flags.2?int\"},{\"name\":\"base_lang_pack_version\",\"type\":\"flags.2?int\"}],\"type\":\"Config\"},{\"id\":2384074613,\"predicate\":\"nearestDc\",\"params\":[{\"name\":\"country\",\"type\":\"string\"},{\"name\":\"this_dc\",\"type\":\"int\"},{\"name\":\"nearest_dc\",\"type\":\"int\"}],\"type\":\"NearestDc\"},{\"id\":\"497489295\",\"predicate\":\"help.appUpdate\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_not_skip\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"Vector<MessageEntity>\"},{\"name\":\"document\",\"type\":\"flags.1?Document\"},{\"name\":\"url\",\"type\":\"flags.2?string\"}],\"type\":\"help.AppUpdate\"},{\"id\":3294258486,\"predicate\":\"help.noAppUpdate\",\"params\":[],\"type\":\"help.AppUpdate\"},{\"id\":\"415997816\",\"predicate\":\"help.inviteText\",\"params\":[{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"help.InviteText\"},{\"id\":\"314359194\",\"predicate\":\"updateNewEncryptedMessage\",\"params\":[{\"name\":\"message\",\"type\":\"EncryptedMessage\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"386986326\",\"predicate\":\"updateEncryptedChatTyping\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":3030575245,\"predicate\":\"updateEncryption\",\"params\":[{\"name\":\"chat\",\"type\":\"EncryptedChat\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"956179895\",\"predicate\":\"updateEncryptedMessagesRead\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"max_date\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":2877210784,\"predicate\":\"encryptedChatEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"EncryptedChat\"},{\"id\":\"1006044124\",\"predicate\":\"encryptedChatWaiting\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"int\"},{\"name\":\"participant_id\",\"type\":\"int\"}],\"type\":\"EncryptedChat\"},{\"id\":\"1651608194\",\"predicate\":\"encryptedChatRequested\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"folder_id\",\"type\":\"flags.0?int\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"int\"},{\"name\":\"participant_id\",\"type\":\"int\"},{\"name\":\"g_a\",\"type\":\"bytes\"}],\"type\":\"EncryptedChat\"},{\"id\":4199992886,\"predicate\":\"encryptedChat\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"int\"},{\"name\":\"participant_id\",\"type\":\"int\"},{\"name\":\"g_a_or_b\",\"type\":\"bytes\"},{\"name\":\"key_fingerprint\",\"type\":\"long\"}],\"type\":\"EncryptedChat\"},{\"id\":\"505183301\",\"predicate\":\"encryptedChatDiscarded\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"history_deleted\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"EncryptedChat\"},{\"id\":4047615457,\"predicate\":\"inputEncryptedChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputEncryptedChat\"},{\"id\":3256830334,\"predicate\":\"encryptedFileEmpty\",\"params\":[],\"type\":\"EncryptedFile\"},{\"id\":\"1248893260\",\"predicate\":\"encryptedFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"key_fingerprint\",\"type\":\"int\"}],\"type\":\"EncryptedFile\"},{\"id\":\"406307684\",\"predicate\":\"inputEncryptedFileEmpty\",\"params\":[],\"type\":\"InputEncryptedFile\"},{\"id\":\"1690108678\",\"predicate\":\"inputEncryptedFileUploaded\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"parts\",\"type\":\"int\"},{\"name\":\"md5_checksum\",\"type\":\"string\"},{\"name\":\"key_fingerprint\",\"type\":\"int\"}],\"type\":\"InputEncryptedFile\"},{\"id\":\"1511503333\",\"predicate\":\"inputEncryptedFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputEncryptedFile\"},{\"id\":4112735573,\"predicate\":\"inputEncryptedFileLocation\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputFileLocation\"},{\"id\":3977822488,\"predicate\":\"encryptedMessage\",\"params\":[{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"},{\"name\":\"file\",\"type\":\"EncryptedFile\"}],\"type\":\"EncryptedMessage\"},{\"id\":\"594758406\",\"predicate\":\"encryptedMessageService\",\"params\":[{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"EncryptedMessage\"},{\"id\":3236054581,\"predicate\":\"messages.dhConfigNotModified\",\"params\":[{\"name\":\"random\",\"type\":\"bytes\"}],\"type\":\"messages.DhConfig\"},{\"id\":\"740433629\",\"predicate\":\"messages.dhConfig\",\"params\":[{\"name\":\"g\",\"type\":\"int\"},{\"name\":\"p\",\"type\":\"bytes\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"random\",\"type\":\"bytes\"}],\"type\":\"messages.DhConfig\"},{\"id\":\"1443858741\",\"predicate\":\"messages.sentEncryptedMessage\",\"params\":[{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"messages.SentEncryptedMessage\"},{\"id\":2492727090,\"predicate\":\"messages.sentEncryptedFile\",\"params\":[{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"file\",\"type\":\"EncryptedFile\"}],\"type\":\"messages.SentEncryptedMessage\"},{\"id\":4199484341,\"predicate\":\"inputFileBig\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"parts\",\"type\":\"int\"},{\"name\":\"name\",\"type\":\"string\"}],\"type\":\"InputFile\"},{\"id\":\"767652808\",\"predicate\":\"inputEncryptedFileBigUploaded\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"parts\",\"type\":\"int\"},{\"name\":\"key_fingerprint\",\"type\":\"int\"}],\"type\":\"InputEncryptedFile\"},{\"id\":3930787420,\"predicate\":\"updateChatParticipantAdd\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"inviter_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"1851755554\",\"predicate\":\"updateChatParticipantDelete\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":2388564083,\"predicate\":\"updateDcOptions\",\"params\":[{\"name\":\"dc_options\",\"type\":\"Vector<DcOption>\"}],\"type\":\"Update\"},{\"id\":\"1530447553\",\"predicate\":\"inputMediaUploadedDocument\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"nosound_video\",\"type\":\"flags.3?true\"},{\"name\":\"force_file\",\"type\":\"flags.4?true\"},{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"thumb\",\"type\":\"flags.2?InputFile\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"attributes\",\"type\":\"Vector<DocumentAttribute>\"},{\"name\":\"stickers\",\"type\":\"flags.0?Vector<InputDocument>\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.1?int\"}],\"type\":\"InputMedia\"},{\"id\":\"860303448\",\"predicate\":\"inputMediaDocument\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"InputDocument\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.0?int\"},{\"name\":\"query\",\"type\":\"flags.1?string\"}],\"type\":\"InputMedia\"},{\"id\":2628808919,\"predicate\":\"messageMediaDocument\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"document\",\"type\":\"flags.0?Document\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.2?int\"}],\"type\":\"MessageMedia\"},{\"id\":\"1928391342\",\"predicate\":\"inputDocumentEmpty\",\"params\":[],\"type\":\"InputDocument\"},{\"id\":\"448771445\",\"predicate\":\"inputDocument\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"}],\"type\":\"InputDocument\"},{\"id\":3134223748,\"predicate\":\"inputDocumentFileLocation\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"},{\"name\":\"thumb_size\",\"type\":\"string\"}],\"type\":\"InputFileLocation\"},{\"id\":\"922273905\",\"predicate\":\"documentEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"Document\"},{\"id\":\"512177195\",\"predicate\":\"document\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"thumbs\",\"type\":\"flags.0?Vector<PhotoSize>\"},{\"name\":\"video_thumbs\",\"type\":\"flags.1?Vector<VideoSize>\"},{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"attributes\",\"type\":\"Vector<DocumentAttribute>\"}],\"type\":\"Document\"},{\"id\":\"398898678\",\"predicate\":\"help.support\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"user\",\"type\":\"User\"}],\"type\":\"help.Support\"},{\"id\":2681474008,\"predicate\":\"notifyPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"}],\"type\":\"NotifyPeer\"},{\"id\":3033021260,\"predicate\":\"notifyUsers\",\"params\":[],\"type\":\"NotifyPeer\"},{\"id\":3221737155,\"predicate\":\"notifyChats\",\"params\":[],\"type\":\"NotifyPeer\"},{\"id\":3200411887,\"predicate\":\"updateNotifySettings\",\"params\":[{\"name\":\"peer\",\"type\":\"NotifyPeer\"},{\"name\":\"notify_settings\",\"type\":\"PeerNotifySettings\"}],\"type\":\"Update\"},{\"id\":\"381645902\",\"predicate\":\"sendMessageTypingAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":4250847477,\"predicate\":\"sendMessageCancelAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":2710034031,\"predicate\":\"sendMessageRecordVideoAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":3916839660,\"predicate\":\"sendMessageUploadVideoAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":3576656887,\"predicate\":\"sendMessageRecordAudioAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":4082227115,\"predicate\":\"sendMessageUploadAudioAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":3520285222,\"predicate\":\"sendMessageUploadPhotoAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":2852968932,\"predicate\":\"sendMessageUploadDocumentAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":\"393186209\",\"predicate\":\"sendMessageGeoLocationAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":\"1653390447\",\"predicate\":\"sendMessageChooseContactAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":3004386717,\"predicate\":\"contacts.found\",\"params\":[{\"name\":\"my_results\",\"type\":\"Vector<Peer>\"},{\"name\":\"results\",\"type\":\"Vector<Peer>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.Found\"},{\"id\":3957614617,\"predicate\":\"updateServiceNotification\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"popup\",\"type\":\"flags.0?true\"},{\"name\":\"inbox_date\",\"type\":\"flags.1?int\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"media\",\"type\":\"MessageMedia\"},{\"name\":\"entities\",\"type\":\"Vector<MessageEntity>\"}],\"type\":\"Update\"},{\"id\":3798942449,\"predicate\":\"userStatusRecently\",\"params\":[],\"type\":\"UserStatus\"},{\"id\":\"129960444\",\"predicate\":\"userStatusLastWeek\",\"params\":[],\"type\":\"UserStatus\"},{\"id\":\"2011940674\",\"predicate\":\"userStatusLastMonth\",\"params\":[],\"type\":\"UserStatus\"},{\"id\":3996854058,\"predicate\":\"updatePrivacy\",\"params\":[{\"name\":\"key\",\"type\":\"PrivacyKey\"},{\"name\":\"rules\",\"type\":\"Vector<PrivacyRule>\"}],\"type\":\"Update\"},{\"id\":\"1335282456\",\"predicate\":\"inputPrivacyKeyStatusTimestamp\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":3157175088,\"predicate\":\"privacyKeyStatusTimestamp\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":\"218751099\",\"predicate\":\"inputPrivacyValueAllowContacts\",\"params\":[],\"type\":\"InputPrivacyRule\"},{\"id\":\"407582158\",\"predicate\":\"inputPrivacyValueAllowAll\",\"params\":[],\"type\":\"InputPrivacyRule\"},{\"id\":\"320652927\",\"predicate\":\"inputPrivacyValueAllowUsers\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<InputUser>\"}],\"type\":\"InputPrivacyRule\"},{\"id\":\"195371015\",\"predicate\":\"inputPrivacyValueDisallowContacts\",\"params\":[],\"type\":\"InputPrivacyRule\"},{\"id\":3597362889,\"predicate\":\"inputPrivacyValueDisallowAll\",\"params\":[],\"type\":\"InputPrivacyRule\"},{\"id\":2417034343,\"predicate\":\"inputPrivacyValueDisallowUsers\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<InputUser>\"}],\"type\":\"InputPrivacyRule\"},{\"id\":4294843308,\"predicate\":\"privacyValueAllowContacts\",\"params\":[],\"type\":\"PrivacyRule\"},{\"id\":\"1698855810\",\"predicate\":\"privacyValueAllowAll\",\"params\":[],\"type\":\"PrivacyRule\"},{\"id\":\"1297858060\",\"predicate\":\"privacyValueAllowUsers\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<int>\"}],\"type\":\"PrivacyRule\"},{\"id\":4169726490,\"predicate\":\"privacyValueDisallowContacts\",\"params\":[],\"type\":\"PrivacyRule\"},{\"id\":2339628899,\"predicate\":\"privacyValueDisallowAll\",\"params\":[],\"type\":\"PrivacyRule\"},{\"id\":\"209668535\",\"predicate\":\"privacyValueDisallowUsers\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<int>\"}],\"type\":\"PrivacyRule\"},{\"id\":\"1352683077\",\"predicate\":\"account.privacyRules\",\"params\":[{\"name\":\"rules\",\"type\":\"Vector<PrivacyRule>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"account.PrivacyRules\"},{\"id\":3100684255,\"predicate\":\"accountDaysTTL\",\"params\":[{\"name\":\"days\",\"type\":\"int\"}],\"type\":\"AccountDaysTTL\"},{\"id\":\"314130811\",\"predicate\":\"updateUserPhone\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"phone\",\"type\":\"string\"}],\"type\":\"Update\"},{\"id\":\"1815593308\",\"predicate\":\"documentAttributeImageSize\",\"params\":[{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"}],\"type\":\"DocumentAttribute\"},{\"id\":\"297109817\",\"predicate\":\"documentAttributeAnimated\",\"params\":[],\"type\":\"DocumentAttribute\"},{\"id\":\"1662637586\",\"predicate\":\"documentAttributeSticker\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"mask\",\"type\":\"flags.1?true\"},{\"name\":\"alt\",\"type\":\"string\"},{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"mask_coords\",\"type\":\"flags.0?MaskCoords\"}],\"type\":\"DocumentAttribute\"},{\"id\":\"250621158\",\"predicate\":\"documentAttributeVideo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"round_message\",\"type\":\"flags.0?true\"},{\"name\":\"supports_streaming\",\"type\":\"flags.1?true\"},{\"name\":\"duration\",\"type\":\"int\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"}],\"type\":\"DocumentAttribute\"},{\"id\":2555574726,\"predicate\":\"documentAttributeAudio\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"voice\",\"type\":\"flags.10?true\"},{\"name\":\"duration\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"flags.0?string\"},{\"name\":\"performer\",\"type\":\"flags.1?string\"},{\"name\":\"waveform\",\"type\":\"flags.2?bytes\"}],\"type\":\"DocumentAttribute\"},{\"id\":\"358154344\",\"predicate\":\"documentAttributeFilename\",\"params\":[{\"name\":\"file_name\",\"type\":\"string\"}],\"type\":\"DocumentAttribute\"},{\"id\":4050950690,\"predicate\":\"messages.stickersNotModified\",\"params\":[],\"type\":\"messages.Stickers\"},{\"id\":3831077821,\"predicate\":\"messages.stickers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"stickers\",\"type\":\"Vector<Document>\"}],\"type\":\"messages.Stickers\"},{\"id\":\"313694676\",\"predicate\":\"stickerPack\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"},{\"name\":\"documents\",\"type\":\"Vector<long>\"}],\"type\":\"StickerPack\"},{\"id\":3898999491,\"predicate\":\"messages.allStickersNotModified\",\"params\":[],\"type\":\"messages.AllStickers\"},{\"id\":3992797279,\"predicate\":\"messages.allStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"sets\",\"type\":\"Vector<StickerSet>\"}],\"type\":\"messages.AllStickers\"},{\"id\":2627162079,\"predicate\":\"updateReadHistoryInbox\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"folder_id\",\"type\":\"flags.0?int\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"still_unread_count\",\"type\":\"int\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"791617983\",\"predicate\":\"updateReadHistoryOutbox\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":2228326789,\"predicate\":\"messages.affectedMessages\",\"params\":[{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"messages.AffectedMessages\"},{\"id\":\"2139689491\",\"predicate\":\"updateWebPage\",\"params\":[{\"name\":\"webpage\",\"type\":\"WebPage\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":3943987176,\"predicate\":\"webPageEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"WebPage\"},{\"id\":3313949212,\"predicate\":\"webPagePending\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"WebPage\"},{\"id\":3902555570,\"predicate\":\"webPage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"display_url\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"type\",\"type\":\"flags.0?string\"},{\"name\":\"site_name\",\"type\":\"flags.1?string\"},{\"name\":\"title\",\"type\":\"flags.2?string\"},{\"name\":\"description\",\"type\":\"flags.3?string\"},{\"name\":\"photo\",\"type\":\"flags.4?Photo\"},{\"name\":\"embed_url\",\"type\":\"flags.5?string\"},{\"name\":\"embed_type\",\"type\":\"flags.5?string\"},{\"name\":\"embed_width\",\"type\":\"flags.6?int\"},{\"name\":\"embed_height\",\"type\":\"flags.6?int\"},{\"name\":\"duration\",\"type\":\"flags.7?int\"},{\"name\":\"author\",\"type\":\"flags.8?string\"},{\"name\":\"document\",\"type\":\"flags.9?Document\"},{\"name\":\"cached_page\",\"type\":\"flags.10?Page\"},{\"name\":\"attributes\",\"type\":\"flags.12?Vector<WebPageAttribute>\"}],\"type\":\"WebPage\"},{\"id\":2737690112,\"predicate\":\"messageMediaWebPage\",\"params\":[{\"name\":\"webpage\",\"type\":\"WebPage\"}],\"type\":\"MessageMedia\"},{\"id\":2902578717,\"predicate\":\"authorization\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"current\",\"type\":\"flags.0?true\"},{\"name\":\"official_app\",\"type\":\"flags.1?true\"},{\"name\":\"password_pending\",\"type\":\"flags.2?true\"},{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"device_model\",\"type\":\"string\"},{\"name\":\"platform\",\"type\":\"string\"},{\"name\":\"system_version\",\"type\":\"string\"},{\"name\":\"api_id\",\"type\":\"int\"},{\"name\":\"app_name\",\"type\":\"string\"},{\"name\":\"app_version\",\"type\":\"string\"},{\"name\":\"date_created\",\"type\":\"int\"},{\"name\":\"date_active\",\"type\":\"int\"},{\"name\":\"ip\",\"type\":\"string\"},{\"name\":\"country\",\"type\":\"string\"},{\"name\":\"region\",\"type\":\"string\"}],\"type\":\"Authorization\"},{\"id\":\"307276766\",\"predicate\":\"account.authorizations\",\"params\":[{\"name\":\"authorizations\",\"type\":\"Vector<Authorization>\"}],\"type\":\"account.Authorizations\"},{\"id\":2904965624,\"predicate\":\"account.password\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"has_recovery\",\"type\":\"flags.0?true\"},{\"name\":\"has_secure_values\",\"type\":\"flags.1?true\"},{\"name\":\"has_password\",\"type\":\"flags.2?true\"},{\"name\":\"current_algo\",\"type\":\"flags.2?PasswordKdfAlgo\"},{\"name\":\"srp_B\",\"type\":\"flags.2?bytes\"},{\"name\":\"srp_id\",\"type\":\"flags.2?long\"},{\"name\":\"hint\",\"type\":\"flags.3?string\"},{\"name\":\"email_unconfirmed_pattern\",\"type\":\"flags.4?string\"},{\"name\":\"new_algo\",\"type\":\"PasswordKdfAlgo\"},{\"name\":\"new_secure_algo\",\"type\":\"SecurePasswordKdfAlgo\"},{\"name\":\"secure_random\",\"type\":\"bytes\"}],\"type\":\"account.Password\"},{\"id\":2589733861,\"predicate\":\"account.passwordSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"email\",\"type\":\"flags.0?string\"},{\"name\":\"secure_settings\",\"type\":\"flags.1?SecureSecretSettings\"}],\"type\":\"account.PasswordSettings\"},{\"id\":3258394569,\"predicate\":\"account.passwordInputSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"new_algo\",\"type\":\"flags.0?PasswordKdfAlgo\"},{\"name\":\"new_password_hash\",\"type\":\"flags.0?bytes\"},{\"name\":\"hint\",\"type\":\"flags.0?string\"},{\"name\":\"email\",\"type\":\"flags.1?string\"},{\"name\":\"new_secure_settings\",\"type\":\"flags.2?SecureSecretSettings\"}],\"type\":\"account.PasswordInputSettings\"},{\"id\":\"326715557\",\"predicate\":\"auth.passwordRecovery\",\"params\":[{\"name\":\"email_pattern\",\"type\":\"string\"}],\"type\":\"auth.PasswordRecovery\"},{\"id\":3242007569,\"predicate\":\"inputMediaVenue\",\"params\":[{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"address\",\"type\":\"string\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"venue_id\",\"type\":\"string\"},{\"name\":\"venue_type\",\"type\":\"string\"}],\"type\":\"InputMedia\"},{\"id\":\"784356159\",\"predicate\":\"messageMediaVenue\",\"params\":[{\"name\":\"geo\",\"type\":\"GeoPoint\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"address\",\"type\":\"string\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"venue_id\",\"type\":\"string\"},{\"name\":\"venue_type\",\"type\":\"string\"}],\"type\":\"MessageMedia\"},{\"id\":2743383929,\"predicate\":\"receivedNotifyMessage\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"flags\",\"type\":\"int\"}],\"type\":\"ReceivedNotifyMessage\"},{\"id\":\"1847917725\",\"predicate\":\"chatInviteExported\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoked\",\"type\":\"flags.0?true\"},{\"name\":\"permanent\",\"type\":\"flags.5?true\"},{\"name\":\"link\",\"type\":\"string\"},{\"name\":\"admin_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"start_date\",\"type\":\"flags.4?int\"},{\"name\":\"expire_date\",\"type\":\"flags.1?int\"},{\"name\":\"usage_limit\",\"type\":\"flags.2?int\"},{\"name\":\"usage\",\"type\":\"flags.3?int\"}],\"type\":\"ExportedChatInvite\"},{\"id\":\"1516793212\",\"predicate\":\"chatInviteAlready\",\"params\":[{\"name\":\"chat\",\"type\":\"Chat\"}],\"type\":\"ChatInvite\"},{\"id\":3754096014,\"predicate\":\"chatInvite\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel\",\"type\":\"flags.0?true\"},{\"name\":\"broadcast\",\"type\":\"flags.1?true\"},{\"name\":\"public\",\"type\":\"flags.2?true\"},{\"name\":\"megagroup\",\"type\":\"flags.3?true\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"Photo\"},{\"name\":\"participants_count\",\"type\":\"int\"},{\"name\":\"participants\",\"type\":\"flags.4?Vector<User>\"}],\"type\":\"ChatInvite\"},{\"id\":4171036136,\"predicate\":\"messageActionChatJoinedByLink\",\"params\":[{\"name\":\"inviter_id\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":\"1757493555\",\"predicate\":\"updateReadMessagesContents\",\"params\":[{\"name\":\"messages\",\"type\":\"Vector<int>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":4290128789,\"predicate\":\"inputStickerSetEmpty\",\"params\":[],\"type\":\"InputStickerSet\"},{\"id\":2649203305,\"predicate\":\"inputStickerSetID\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputStickerSet\"},{\"id\":2250033312,\"predicate\":\"inputStickerSetShortName\",\"params\":[{\"name\":\"short_name\",\"type\":\"string\"}],\"type\":\"InputStickerSet\"},{\"id\":\"1088567208\",\"predicate\":\"stickerSet\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"archived\",\"type\":\"flags.1?true\"},{\"name\":\"official\",\"type\":\"flags.2?true\"},{\"name\":\"masks\",\"type\":\"flags.3?true\"},{\"name\":\"animated\",\"type\":\"flags.5?true\"},{\"name\":\"installed_date\",\"type\":\"flags.0?int\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"short_name\",\"type\":\"string\"},{\"name\":\"thumbs\",\"type\":\"flags.4?Vector<PhotoSize>\"},{\"name\":\"thumb_dc_id\",\"type\":\"flags.4?int\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"StickerSet\"},{\"id\":3054118054,\"predicate\":\"messages.stickerSet\",\"params\":[{\"name\":\"set\",\"type\":\"StickerSet\"},{\"name\":\"packs\",\"type\":\"Vector<StickerPack>\"},{\"name\":\"documents\",\"type\":\"Vector<Document>\"}],\"type\":\"messages.StickerSet\"},{\"id\":2474924225,\"predicate\":\"user\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"self\",\"type\":\"flags.10?true\"},{\"name\":\"contact\",\"type\":\"flags.11?true\"},{\"name\":\"mutual_contact\",\"type\":\"flags.12?true\"},{\"name\":\"deleted\",\"type\":\"flags.13?true\"},{\"name\":\"bot\",\"type\":\"flags.14?true\"},{\"name\":\"bot_chat_history\",\"type\":\"flags.15?true\"},{\"name\":\"bot_nochats\",\"type\":\"flags.16?true\"},{\"name\":\"verified\",\"type\":\"flags.17?true\"},{\"name\":\"restricted\",\"type\":\"flags.18?true\"},{\"name\":\"min\",\"type\":\"flags.20?true\"},{\"name\":\"bot_inline_geo\",\"type\":\"flags.21?true\"},{\"name\":\"support\",\"type\":\"flags.23?true\"},{\"name\":\"scam\",\"type\":\"flags.24?true\"},{\"name\":\"apply_min_photo\",\"type\":\"flags.25?true\"},{\"name\":\"fake\",\"type\":\"flags.26?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"flags.0?long\"},{\"name\":\"first_name\",\"type\":\"flags.1?string\"},{\"name\":\"last_name\",\"type\":\"flags.2?string\"},{\"name\":\"username\",\"type\":\"flags.3?string\"},{\"name\":\"phone\",\"type\":\"flags.4?string\"},{\"name\":\"photo\",\"type\":\"flags.5?UserProfilePhoto\"},{\"name\":\"status\",\"type\":\"flags.6?UserStatus\"},{\"name\":\"bot_info_version\",\"type\":\"flags.14?int\"},{\"name\":\"restriction_reason\",\"type\":\"flags.18?Vector<RestrictionReason>\"},{\"name\":\"bot_inline_placeholder\",\"type\":\"flags.19?string\"},{\"name\":\"lang_code\",\"type\":\"flags.22?string\"}],\"type\":\"User\"},{\"id\":3262826695,\"predicate\":\"botCommand\",\"params\":[{\"name\":\"command\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"}],\"type\":\"BotCommand\"},{\"id\":2565348666,\"predicate\":\"botInfo\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"commands\",\"type\":\"Vector<BotCommand>\"}],\"type\":\"BotInfo\"},{\"id\":2734311552,\"predicate\":\"keyboardButton\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":\"2002815875\",\"predicate\":\"keyboardButtonRow\",\"params\":[{\"name\":\"buttons\",\"type\":\"Vector<KeyboardButton>\"}],\"type\":\"KeyboardButtonRow\"},{\"id\":2688441221,\"predicate\":\"replyKeyboardHide\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"selective\",\"type\":\"flags.2?true\"}],\"type\":\"ReplyMarkup\"},{\"id\":4094724768,\"predicate\":\"replyKeyboardForceReply\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"single_use\",\"type\":\"flags.1?true\"},{\"name\":\"selective\",\"type\":\"flags.2?true\"}],\"type\":\"ReplyMarkup\"},{\"id\":\"889353612\",\"predicate\":\"replyKeyboardMarkup\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"resize\",\"type\":\"flags.0?true\"},{\"name\":\"single_use\",\"type\":\"flags.1?true\"},{\"name\":\"selective\",\"type\":\"flags.2?true\"},{\"name\":\"rows\",\"type\":\"Vector<KeyboardButtonRow>\"}],\"type\":\"ReplyMarkup\"},{\"id\":\"2072935910\",\"predicate\":\"inputPeerUser\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputPeer\"},{\"id\":3626575894,\"predicate\":\"inputUser\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputUser\"},{\"id\":3146955413,\"predicate\":\"messageEntityUnknown\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":4194588573,\"predicate\":\"messageEntityMention\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":\"1868782349\",\"predicate\":\"messageEntityHashtag\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":\"1827637959\",\"predicate\":\"messageEntityBotCommand\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":\"1859134776\",\"predicate\":\"messageEntityUrl\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":\"1692693954\",\"predicate\":\"messageEntityEmail\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":3177253833,\"predicate\":\"messageEntityBold\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":2188348256,\"predicate\":\"messageEntityItalic\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":\"681706865\",\"predicate\":\"messageEntityCode\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":\"1938967520\",\"predicate\":\"messageEntityPre\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"},{\"name\":\"language\",\"type\":\"string\"}],\"type\":\"MessageEntity\"},{\"id\":\"1990644519\",\"predicate\":\"messageEntityTextUrl\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"},{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"MessageEntity\"},{\"id\":2417352961,\"predicate\":\"updateShortSentMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"out\",\"type\":\"flags.1?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"media\",\"type\":\"flags.9?MessageMedia\"},{\"name\":\"entities\",\"type\":\"flags.7?Vector<MessageEntity>\"},{\"name\":\"ttl_period\",\"type\":\"flags.25?int\"}],\"type\":\"Updates\"},{\"id\":4002160262,\"predicate\":\"inputChannelEmpty\",\"params\":[],\"type\":\"InputChannel\"},{\"id\":2951442734,\"predicate\":\"inputChannel\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputChannel\"},{\"id\":3185435954,\"predicate\":\"peerChannel\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"}],\"type\":\"Peer\"},{\"id\":\"548253432\",\"predicate\":\"inputPeerChannel\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputPeer\"},{\"id\":3541734942,\"predicate\":\"channel\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"creator\",\"type\":\"flags.0?true\"},{\"name\":\"left\",\"type\":\"flags.2?true\"},{\"name\":\"broadcast\",\"type\":\"flags.5?true\"},{\"name\":\"verified\",\"type\":\"flags.7?true\"},{\"name\":\"megagroup\",\"type\":\"flags.8?true\"},{\"name\":\"restricted\",\"type\":\"flags.9?true\"},{\"name\":\"signatures\",\"type\":\"flags.11?true\"},{\"name\":\"min\",\"type\":\"flags.12?true\"},{\"name\":\"scam\",\"type\":\"flags.19?true\"},{\"name\":\"has_link\",\"type\":\"flags.20?true\"},{\"name\":\"has_geo\",\"type\":\"flags.21?true\"},{\"name\":\"slowmode_enabled\",\"type\":\"flags.22?true\"},{\"name\":\"call_active\",\"type\":\"flags.23?true\"},{\"name\":\"call_not_empty\",\"type\":\"flags.24?true\"},{\"name\":\"fake\",\"type\":\"flags.25?true\"},{\"name\":\"gigagroup\",\"type\":\"flags.26?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"flags.13?long\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"username\",\"type\":\"flags.6?string\"},{\"name\":\"photo\",\"type\":\"ChatPhoto\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"restriction_reason\",\"type\":\"flags.9?Vector<RestrictionReason>\"},{\"name\":\"admin_rights\",\"type\":\"flags.14?ChatAdminRights\"},{\"name\":\"banned_rights\",\"type\":\"flags.15?ChatBannedRights\"},{\"name\":\"default_banned_rights\",\"type\":\"flags.18?ChatBannedRights\"},{\"name\":\"participants_count\",\"type\":\"flags.17?int\"}],\"type\":\"Chat\"},{\"id\":\"681420594\",\"predicate\":\"channelForbidden\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"broadcast\",\"type\":\"flags.5?true\"},{\"name\":\"megagroup\",\"type\":\"flags.8?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"until_date\",\"type\":\"flags.16?int\"}],\"type\":\"Chat\"},{\"id\":\"2131196633\",\"predicate\":\"contacts.resolvedPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.ResolvedPeer\"},{\"id\":\"1418477459\",\"predicate\":\"channelFull\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_view_participants\",\"type\":\"flags.3?true\"},{\"name\":\"can_set_username\",\"type\":\"flags.6?true\"},{\"name\":\"can_set_stickers\",\"type\":\"flags.7?true\"},{\"name\":\"hidden_prehistory\",\"type\":\"flags.10?true\"},{\"name\":\"can_set_location\",\"type\":\"flags.16?true\"},{\"name\":\"has_scheduled\",\"type\":\"flags.19?true\"},{\"name\":\"can_view_stats\",\"type\":\"flags.20?true\"},{\"name\":\"blocked\",\"type\":\"flags.22?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"about\",\"type\":\"string\"},{\"name\":\"participants_count\",\"type\":\"flags.0?int\"},{\"name\":\"admins_count\",\"type\":\"flags.1?int\"},{\"name\":\"kicked_count\",\"type\":\"flags.2?int\"},{\"name\":\"banned_count\",\"type\":\"flags.2?int\"},{\"name\":\"online_count\",\"type\":\"flags.13?int\"},{\"name\":\"read_inbox_max_id\",\"type\":\"int\"},{\"name\":\"read_outbox_max_id\",\"type\":\"int\"},{\"name\":\"unread_count\",\"type\":\"int\"},{\"name\":\"chat_photo\",\"type\":\"Photo\"},{\"name\":\"notify_settings\",\"type\":\"PeerNotifySettings\"},{\"name\":\"exported_invite\",\"type\":\"flags.23?ExportedChatInvite\"},{\"name\":\"bot_info\",\"type\":\"Vector<BotInfo>\"},{\"name\":\"migrated_from_chat_id\",\"type\":\"flags.4?int\"},{\"name\":\"migrated_from_max_id\",\"type\":\"flags.4?int\"},{\"name\":\"pinned_msg_id\",\"type\":\"flags.5?int\"},{\"name\":\"stickerset\",\"type\":\"flags.8?StickerSet\"},{\"name\":\"available_min_id\",\"type\":\"flags.9?int\"},{\"name\":\"folder_id\",\"type\":\"flags.11?int\"},{\"name\":\"linked_chat_id\",\"type\":\"flags.14?int\"},{\"name\":\"location\",\"type\":\"flags.15?ChannelLocation\"},{\"name\":\"slowmode_seconds\",\"type\":\"flags.17?int\"},{\"name\":\"slowmode_next_send_date\",\"type\":\"flags.18?int\"},{\"name\":\"stats_dc\",\"type\":\"flags.12?int\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"call\",\"type\":\"flags.21?InputGroupCall\"},{\"name\":\"ttl_period\",\"type\":\"flags.24?int\"},{\"name\":\"pending_suggestions\",\"type\":\"flags.25?Vector<string>\"},{\"name\":\"groupcall_default_join_as\",\"type\":\"flags.26?Peer\"}],\"type\":\"ChatFull\"},{\"id\":\"182649427\",\"predicate\":\"messageRange\",\"params\":[{\"name\":\"min_id\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"MessageRange\"},{\"id\":\"1682413576\",\"predicate\":\"messages.channelMessages\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"inexact\",\"type\":\"flags.1?true\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"offset_id_offset\",\"type\":\"flags.2?int\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.Messages\"},{\"id\":2513611922,\"predicate\":\"messageActionChannelCreate\",\"params\":[{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":3942934523,\"predicate\":\"updateChannelTooLong\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"pts\",\"type\":\"flags.0?int\"}],\"type\":\"Update\"},{\"id\":3067369046,\"predicate\":\"updateChannel\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"1656358105\",\"predicate\":\"updateNewChannelMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"856380452\",\"predicate\":\"updateReadChannelInbox\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"folder_id\",\"type\":\"flags.0?int\"},{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"still_unread_count\",\"type\":\"int\"},{\"name\":\"pts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":3279233481,\"predicate\":\"updateDeleteChannelMessages\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":2560699211,\"predicate\":\"updateChannelMessageViews\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"views\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"1041346555\",\"predicate\":\"updates.channelDifferenceEmpty\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"final\",\"type\":\"flags.0?true\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"timeout\",\"type\":\"flags.1?int\"}],\"type\":\"updates.ChannelDifference\"},{\"id\":2763835134,\"predicate\":\"updates.channelDifferenceTooLong\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"final\",\"type\":\"flags.0?true\"},{\"name\":\"timeout\",\"type\":\"flags.1?int\"},{\"name\":\"dialog\",\"type\":\"Dialog\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"updates.ChannelDifference\"},{\"id\":\"543450958\",\"predicate\":\"updates.channelDifference\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"final\",\"type\":\"flags.0?true\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"timeout\",\"type\":\"flags.1?int\"},{\"name\":\"new_messages\",\"type\":\"Vector<Message>\"},{\"name\":\"other_updates\",\"type\":\"Vector<Update>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"updates.ChannelDifference\"},{\"id\":2496933607,\"predicate\":\"channelMessagesFilterEmpty\",\"params\":[],\"type\":\"ChannelMessagesFilter\"},{\"id\":3447183703,\"predicate\":\"channelMessagesFilter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"exclude_new_messages\",\"type\":\"flags.1?true\"},{\"name\":\"ranges\",\"type\":\"Vector<MessageRange>\"}],\"type\":\"ChannelMessagesFilter\"},{\"id\":\"367766557\",\"predicate\":\"channelParticipant\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"ChannelParticipant\"},{\"id\":2737347181,\"predicate\":\"channelParticipantSelf\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"inviter_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"ChannelParticipant\"},{\"id\":\"1149094475\",\"predicate\":\"channelParticipantCreator\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"admin_rights\",\"type\":\"ChatAdminRights\"},{\"name\":\"rank\",\"type\":\"flags.0?string\"}],\"type\":\"ChannelParticipant\"},{\"id\":3728686201,\"predicate\":\"channelParticipantsRecent\",\"params\":[],\"type\":\"ChannelParticipantsFilter\"},{\"id\":3026225513,\"predicate\":\"channelParticipantsAdmins\",\"params\":[],\"type\":\"ChannelParticipantsFilter\"},{\"id\":2746567045,\"predicate\":\"channelParticipantsKicked\",\"params\":[{\"name\":\"q\",\"type\":\"string\"}],\"type\":\"ChannelParticipantsFilter\"},{\"id\":4117684904,\"predicate\":\"channels.channelParticipants\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"participants\",\"type\":\"Vector<ChannelParticipant>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"channels.ChannelParticipants\"},{\"id\":3503927651,\"predicate\":\"channels.channelParticipant\",\"params\":[{\"name\":\"participant\",\"type\":\"ChannelParticipant\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"channels.ChannelParticipant\"},{\"id\":3658699658,\"predicate\":\"chatParticipantCreator\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"}],\"type\":\"ChatParticipant\"},{\"id\":3805733942,\"predicate\":\"chatParticipantAdmin\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"inviter_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"ChatParticipant\"},{\"id\":3062896985,\"predicate\":\"updateChatParticipantAdmin\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"is_admin\",\"type\":\"Bool\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"1371385889\",\"predicate\":\"messageActionChatMigrateTo\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":2958420718,\"predicate\":\"messageActionChannelMigrateFrom\",\"params\":[{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":2966521435,\"predicate\":\"channelParticipantsBots\",\"params\":[],\"type\":\"ChannelParticipantsFilter\"},{\"id\":\"2013922064\",\"predicate\":\"help.termsOfService\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"popup\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"DataJSON\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"Vector<MessageEntity>\"},{\"name\":\"min_age_confirm\",\"type\":\"flags.1?int\"}],\"type\":\"help.TermsOfService\"},{\"id\":\"1753886890\",\"predicate\":\"updateNewStickerSet\",\"params\":[{\"name\":\"stickerset\",\"type\":\"messages.StickerSet\"}],\"type\":\"Update\"},{\"id\":\"196268545\",\"predicate\":\"updateStickerSetsOrder\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"masks\",\"type\":\"flags.0?true\"},{\"name\":\"order\",\"type\":\"Vector<long>\"}],\"type\":\"Update\"},{\"id\":\"1135492588\",\"predicate\":\"updateStickerSets\",\"params\":[],\"type\":\"Update\"},{\"id\":3892468898,\"predicate\":\"messages.savedGifsNotModified\",\"params\":[],\"type\":\"messages.SavedGifs\"},{\"id\":\"772213157\",\"predicate\":\"messages.savedGifs\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"gifs\",\"type\":\"Vector<Document>\"}],\"type\":\"messages.SavedGifs\"},{\"id\":2473931806,\"predicate\":\"updateSavedGifs\",\"params\":[],\"type\":\"Update\"},{\"id\":\"864077702\",\"predicate\":\"inputBotInlineMessageMediaAuto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":\"1036876423\",\"predicate\":\"inputBotInlineMessageText\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.0?true\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":2294256409,\"predicate\":\"inputBotInlineResult\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"flags.1?string\"},{\"name\":\"description\",\"type\":\"flags.2?string\"},{\"name\":\"url\",\"type\":\"flags.3?string\"},{\"name\":\"thumb\",\"type\":\"flags.4?InputWebDocument\"},{\"name\":\"content\",\"type\":\"flags.5?InputWebDocument\"},{\"name\":\"send_message\",\"type\":\"InputBotInlineMessage\"}],\"type\":\"InputBotInlineResult\"},{\"id\":\"1984755728\",\"predicate\":\"botInlineMessageMediaAuto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":2357159394,\"predicate\":\"botInlineMessageText\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.0?true\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":\"295067450\",\"predicate\":\"botInlineResult\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"flags.1?string\"},{\"name\":\"description\",\"type\":\"flags.2?string\"},{\"name\":\"url\",\"type\":\"flags.3?string\"},{\"name\":\"thumb\",\"type\":\"flags.4?WebDocument\"},{\"name\":\"content\",\"type\":\"flags.5?WebDocument\"},{\"name\":\"send_message\",\"type\":\"BotInlineMessage\"}],\"type\":\"BotInlineResult\"},{\"id\":2491197512,\"predicate\":\"messages.botResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"gallery\",\"type\":\"flags.0?true\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"next_offset\",\"type\":\"flags.1?string\"},{\"name\":\"switch_pm\",\"type\":\"flags.2?InlineBotSwitchPM\"},{\"name\":\"results\",\"type\":\"Vector<BotInlineResult>\"},{\"name\":\"cache_time\",\"type\":\"int\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.BotResults\"},{\"id\":\"1059076315\",\"predicate\":\"updateBotInlineQuery\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"query\",\"type\":\"string\"},{\"name\":\"geo\",\"type\":\"flags.0?GeoPoint\"},{\"name\":\"peer_type\",\"type\":\"flags.1?InlineQueryPeerType\"},{\"name\":\"offset\",\"type\":\"string\"}],\"type\":\"Update\"},{\"id\":\"239663460\",\"predicate\":\"updateBotInlineSend\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"query\",\"type\":\"string\"},{\"name\":\"geo\",\"type\":\"flags.0?GeoPoint\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"msg_id\",\"type\":\"flags.1?InputBotInlineMessageID\"}],\"type\":\"Update\"},{\"id\":\"1358283666\",\"predicate\":\"inputMessagesFilterVoice\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":\"928101534\",\"predicate\":\"inputMessagesFilterMusic\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":3187344422,\"predicate\":\"inputPrivacyKeyChatInvite\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":\"1343122938\",\"predicate\":\"privacyKeyChatInvite\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":\"1571494644\",\"predicate\":\"exportedMessageLink\",\"params\":[{\"name\":\"link\",\"type\":\"string\"},{\"name\":\"html\",\"type\":\"string\"}],\"type\":\"ExportedMessageLink\"},{\"id\":\"1601666510\",\"predicate\":\"messageFwdHeader\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"imported\",\"type\":\"flags.7?true\"},{\"name\":\"from_id\",\"type\":\"flags.0?Peer\"},{\"name\":\"from_name\",\"type\":\"flags.5?string\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"channel_post\",\"type\":\"flags.2?int\"},{\"name\":\"post_author\",\"type\":\"flags.3?string\"},{\"name\":\"saved_from_peer\",\"type\":\"flags.4?Peer\"},{\"name\":\"saved_from_msg_id\",\"type\":\"flags.4?int\"},{\"name\":\"psa_type\",\"type\":\"flags.6?string\"}],\"type\":\"MessageFwdHeader\"},{\"id\":\"457133559\",\"predicate\":\"updateEditChannelMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":2495428845,\"predicate\":\"messageActionPinMessage\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":\"1923290508\",\"predicate\":\"auth.codeTypeSms\",\"params\":[],\"type\":\"auth.CodeType\"},{\"id\":\"1948046307\",\"predicate\":\"auth.codeTypeCall\",\"params\":[],\"type\":\"auth.CodeType\"},{\"id\":\"577556219\",\"predicate\":\"auth.codeTypeFlashCall\",\"params\":[],\"type\":\"auth.CodeType\"},{\"id\":\"1035688326\",\"predicate\":\"auth.sentCodeTypeApp\",\"params\":[{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"auth.SentCodeType\"},{\"id\":3221273506,\"predicate\":\"auth.sentCodeTypeSms\",\"params\":[{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"auth.SentCodeType\"},{\"id\":\"1398007207\",\"predicate\":\"auth.sentCodeTypeCall\",\"params\":[{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"auth.SentCodeType\"},{\"id\":2869151449,\"predicate\":\"auth.sentCodeTypeFlashCall\",\"params\":[{\"name\":\"pattern\",\"type\":\"string\"}],\"type\":\"auth.SentCodeType\"},{\"id\":\"629866245\",\"predicate\":\"keyboardButtonUrl\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":\"901503851\",\"predicate\":\"keyboardButtonCallback\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"requires_password\",\"type\":\"flags.0?true\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"type\":\"KeyboardButton\"},{\"id\":2976541737,\"predicate\":\"keyboardButtonRequestPhone\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":4235815743,\"predicate\":\"keyboardButtonRequestGeoLocation\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":\"90744648\",\"predicate\":\"keyboardButtonSwitchInline\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"same_peer\",\"type\":\"flags.0?true\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"query\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":\"1218642516\",\"predicate\":\"replyInlineMarkup\",\"params\":[{\"name\":\"rows\",\"type\":\"Vector<KeyboardButtonRow>\"}],\"type\":\"ReplyMarkup\"},{\"id\":\"911761060\",\"predicate\":\"messages.botCallbackAnswer\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"alert\",\"type\":\"flags.1?true\"},{\"name\":\"has_url\",\"type\":\"flags.3?true\"},{\"name\":\"native_ui\",\"type\":\"flags.4?true\"},{\"name\":\"message\",\"type\":\"flags.0?string\"},{\"name\":\"url\",\"type\":\"flags.2?string\"},{\"name\":\"cache_time\",\"type\":\"int\"}],\"type\":\"messages.BotCallbackAnswer\"},{\"id\":3879028705,\"predicate\":\"updateBotCallbackQuery\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"chat_instance\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"flags.0?bytes\"},{\"name\":\"game_short_name\",\"type\":\"flags.1?string\"}],\"type\":\"Update\"},{\"id\":\"649453030\",\"predicate\":\"messages.messageEditData\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"caption\",\"type\":\"flags.0?true\"}],\"type\":\"messages.MessageEditData\"},{\"id\":3825430691,\"predicate\":\"updateEditMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":2526190213,\"predicate\":\"inputBotInlineMessageMediaGeo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"heading\",\"type\":\"flags.0?int\"},{\"name\":\"period\",\"type\":\"flags.1?int\"},{\"name\":\"proximity_notification_radius\",\"type\":\"flags.3?int\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":\"1098628881\",\"predicate\":\"inputBotInlineMessageMediaVenue\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"address\",\"type\":\"string\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"venue_id\",\"type\":\"string\"},{\"name\":\"venue_type\",\"type\":\"string\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":2800599037,\"predicate\":\"inputBotInlineMessageMediaContact\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"vcard\",\"type\":\"string\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":\"85477117\",\"predicate\":\"botInlineMessageMediaGeo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"geo\",\"type\":\"GeoPoint\"},{\"name\":\"heading\",\"type\":\"flags.0?int\"},{\"name\":\"period\",\"type\":\"flags.1?int\"},{\"name\":\"proximity_notification_radius\",\"type\":\"flags.3?int\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":2324063644,\"predicate\":\"botInlineMessageMediaVenue\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"geo\",\"type\":\"GeoPoint\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"address\",\"type\":\"string\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"venue_id\",\"type\":\"string\"},{\"name\":\"venue_type\",\"type\":\"string\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":\"416402882\",\"predicate\":\"botInlineMessageMediaContact\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"vcard\",\"type\":\"string\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":2832753831,\"predicate\":\"inputBotInlineResultPhoto\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"InputPhoto\"},{\"name\":\"send_message\",\"type\":\"InputBotInlineMessage\"}],\"type\":\"InputBotInlineResult\"},{\"id\":4294507972,\"predicate\":\"inputBotInlineResultDocument\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"flags.1?string\"},{\"name\":\"description\",\"type\":\"flags.2?string\"},{\"name\":\"document\",\"type\":\"InputDocument\"},{\"name\":\"send_message\",\"type\":\"InputBotInlineMessage\"}],\"type\":\"InputBotInlineResult\"},{\"id\":\"400266251\",\"predicate\":\"botInlineMediaResult\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.0?Photo\"},{\"name\":\"document\",\"type\":\"flags.1?Document\"},{\"name\":\"title\",\"type\":\"flags.2?string\"},{\"name\":\"description\",\"type\":\"flags.3?string\"},{\"name\":\"send_message\",\"type\":\"BotInlineMessage\"}],\"type\":\"BotInlineResult\"},{\"id\":2299280777,\"predicate\":\"inputBotInlineMessageID\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputBotInlineMessageID\"},{\"id\":4191320666,\"predicate\":\"updateInlineBotCallbackQuery\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"msg_id\",\"type\":\"InputBotInlineMessageID\"},{\"name\":\"chat_instance\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"flags.0?bytes\"},{\"name\":\"game_short_name\",\"type\":\"flags.1?string\"}],\"type\":\"Update\"},{\"id\":\"1008755359\",\"predicate\":\"inlineBotSwitchPM\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"start_param\",\"type\":\"string\"}],\"type\":\"InlineBotSwitchPM\"},{\"id\":\"863093588\",\"predicate\":\"messages.peerDialogs\",\"params\":[{\"name\":\"dialogs\",\"type\":\"Vector<Dialog>\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"state\",\"type\":\"updates.State\"}],\"type\":\"messages.PeerDialogs\"},{\"id\":3989684315,\"predicate\":\"topPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"rating\",\"type\":\"double\"}],\"type\":\"TopPeer\"},{\"id\":2875595611,\"predicate\":\"topPeerCategoryBotsPM\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":\"344356834\",\"predicate\":\"topPeerCategoryBotsInline\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":\"104314861\",\"predicate\":\"topPeerCategoryCorrespondents\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":3172442442,\"predicate\":\"topPeerCategoryGroups\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":\"371037736\",\"predicate\":\"topPeerCategoryChannels\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":4219683473,\"predicate\":\"topPeerCategoryPeers\",\"params\":[{\"name\":\"category\",\"type\":\"TopPeerCategory\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"peers\",\"type\":\"Vector<TopPeer>\"}],\"type\":\"TopPeerCategoryPeers\"},{\"id\":3727060725,\"predicate\":\"contacts.topPeersNotModified\",\"params\":[],\"type\":\"contacts.TopPeers\"},{\"id\":\"1891070632\",\"predicate\":\"contacts.topPeers\",\"params\":[{\"name\":\"categories\",\"type\":\"Vector<TopPeerCategoryPeers>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.TopPeers\"},{\"id\":\"892193368\",\"predicate\":\"messageEntityMentionName\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":\"546203849\",\"predicate\":\"inputMessageEntityMentionName\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"MessageEntity\"},{\"id\":\"975236280\",\"predicate\":\"inputMessagesFilterChatPhotos\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":\"634833351\",\"predicate\":\"updateReadChannelOutbox\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":3995842921,\"predicate\":\"updateDraftMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"draft\",\"type\":\"DraftMessage\"}],\"type\":\"Update\"},{\"id\":\"453805082\",\"predicate\":\"draftMessageEmpty\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"date\",\"type\":\"flags.0?int\"}],\"type\":\"DraftMessage\"},{\"id\":4253970719,\"predicate\":\"draftMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.1?true\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"DraftMessage\"},{\"id\":2679813636,\"predicate\":\"messageActionHistoryClear\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":3336309862,\"predicate\":\"messages.featuredStickersNotModified\",\"params\":[{\"name\":\"count\",\"type\":\"int\"}],\"type\":\"messages.FeaturedStickers\"},{\"id\":3064709953,\"predicate\":\"messages.featuredStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"sets\",\"type\":\"Vector<StickerSetCovered>\"},{\"name\":\"unread\",\"type\":\"Vector<long>\"}],\"type\":\"messages.FeaturedStickers\"},{\"id\":\"1461528386\",\"predicate\":\"updateReadFeaturedStickers\",\"params\":[],\"type\":\"Update\"},{\"id\":\"186120336\",\"predicate\":\"messages.recentStickersNotModified\",\"params\":[],\"type\":\"messages.RecentStickers\"},{\"id\":\"586395571\",\"predicate\":\"messages.recentStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"packs\",\"type\":\"Vector<StickerPack>\"},{\"name\":\"stickers\",\"type\":\"Vector<Document>\"},{\"name\":\"dates\",\"type\":\"Vector<int>\"}],\"type\":\"messages.RecentStickers\"},{\"id\":2588027936,\"predicate\":\"updateRecentStickers\",\"params\":[],\"type\":\"Update\"},{\"id\":\"1338747336\",\"predicate\":\"messages.archivedStickers\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"sets\",\"type\":\"Vector<StickerSetCovered>\"}],\"type\":\"messages.ArchivedStickers\"},{\"id\":\"946083368\",\"predicate\":\"messages.stickerSetInstallResultSuccess\",\"params\":[],\"type\":\"messages.StickerSetInstallResult\"},{\"id\":\"904138920\",\"predicate\":\"messages.stickerSetInstallResultArchive\",\"params\":[{\"name\":\"sets\",\"type\":\"Vector<StickerSetCovered>\"}],\"type\":\"messages.StickerSetInstallResult\"},{\"id\":\"1678812626\",\"predicate\":\"stickerSetCovered\",\"params\":[{\"name\":\"set\",\"type\":\"StickerSet\"},{\"name\":\"cover\",\"type\":\"Document\"}],\"type\":\"StickerSetCovered\"},{\"id\":2720652550,\"predicate\":\"updateConfig\",\"params\":[],\"type\":\"Update\"},{\"id\":\"861169551\",\"predicate\":\"updatePtsChanged\",\"params\":[],\"type\":\"Update\"},{\"id\":3854302746,\"predicate\":\"inputMediaPhotoExternal\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.0?int\"}],\"type\":\"InputMedia\"},{\"id\":4216511641,\"predicate\":\"inputMediaDocumentExternal\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.0?int\"}],\"type\":\"InputMedia\"},{\"id\":\"872932635\",\"predicate\":\"stickerSetMultiCovered\",\"params\":[{\"name\":\"set\",\"type\":\"StickerSet\"},{\"name\":\"covers\",\"type\":\"Vector<Document>\"}],\"type\":\"StickerSetCovered\"},{\"id\":2933316530,\"predicate\":\"maskCoords\",\"params\":[{\"name\":\"n\",\"type\":\"int\"},{\"name\":\"x\",\"type\":\"double\"},{\"name\":\"y\",\"type\":\"double\"},{\"name\":\"zoom\",\"type\":\"double\"}],\"type\":\"MaskCoords\"},{\"id\":2550256375,\"predicate\":\"documentAttributeHasStickers\",\"params\":[],\"type\":\"DocumentAttribute\"},{\"id\":\"1251549527\",\"predicate\":\"inputStickeredMediaPhoto\",\"params\":[{\"name\":\"id\",\"type\":\"InputPhoto\"}],\"type\":\"InputStickeredMedia\"},{\"id\":\"70813275\",\"predicate\":\"inputStickeredMediaDocument\",\"params\":[{\"name\":\"id\",\"type\":\"InputDocument\"}],\"type\":\"InputStickeredMedia\"},{\"id\":3187238203,\"predicate\":\"game\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"short_name\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"Photo\"},{\"name\":\"document\",\"type\":\"flags.0?Document\"}],\"type\":\"Game\"},{\"id\":\"1336154098\",\"predicate\":\"inputBotInlineResultGame\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"short_name\",\"type\":\"string\"},{\"name\":\"send_message\",\"type\":\"InputBotInlineMessage\"}],\"type\":\"InputBotInlineResult\"},{\"id\":\"1262639204\",\"predicate\":\"inputBotInlineMessageGame\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":4256272392,\"predicate\":\"messageMediaGame\",\"params\":[{\"name\":\"game\",\"type\":\"Game\"}],\"type\":\"MessageMedia\"},{\"id\":3544138739,\"predicate\":\"inputMediaGame\",\"params\":[{\"name\":\"id\",\"type\":\"InputGame\"}],\"type\":\"InputMedia\"},{\"id\":\"53231223\",\"predicate\":\"inputGameID\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputGame\"},{\"id\":3274827786,\"predicate\":\"inputGameShortName\",\"params\":[{\"name\":\"bot_id\",\"type\":\"InputUser\"},{\"name\":\"short_name\",\"type\":\"string\"}],\"type\":\"InputGame\"},{\"id\":\"1358175439\",\"predicate\":\"keyboardButtonGame\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":2460428406,\"predicate\":\"messageActionGameScore\",\"params\":[{\"name\":\"game_id\",\"type\":\"long\"},{\"name\":\"score\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":\"1493171408\",\"predicate\":\"highScore\",\"params\":[{\"name\":\"pos\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"score\",\"type\":\"int\"}],\"type\":\"HighScore\"},{\"id\":2587622809,\"predicate\":\"messages.highScores\",\"params\":[{\"name\":\"scores\",\"type\":\"Vector<HighScore>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.HighScores\"},{\"id\":\"1258196845\",\"predicate\":\"updates.differenceTooLong\",\"params\":[{\"name\":\"pts\",\"type\":\"int\"}],\"type\":\"updates.Difference\"},{\"id\":\"1081547008\",\"predicate\":\"updateChannelWebPage\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"webpage\",\"type\":\"WebPage\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":2631405892,\"predicate\":\"messages.chatsSlice\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"}],\"type\":\"messages.Chats\"},{\"id\":3695018575,\"predicate\":\"textEmpty\",\"params\":[],\"type\":\"RichText\"},{\"id\":\"1950782688\",\"predicate\":\"textPlain\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"RichText\"},{\"id\":\"1730456516\",\"predicate\":\"textBold\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":3641877916,\"predicate\":\"textItalic\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":3240501956,\"predicate\":\"textUnderline\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":2616769429,\"predicate\":\"textStrike\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":\"1816074681\",\"predicate\":\"textFixed\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":\"1009288385\",\"predicate\":\"textUrl\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"webpage_id\",\"type\":\"long\"}],\"type\":\"RichText\"},{\"id\":3730443734,\"predicate\":\"textEmail\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"email\",\"type\":\"string\"}],\"type\":\"RichText\"},{\"id\":\"2120376535\",\"predicate\":\"textConcat\",\"params\":[{\"name\":\"texts\",\"type\":\"Vector<RichText>\"}],\"type\":\"RichText\"},{\"id\":\"324435594\",\"predicate\":\"pageBlockUnsupported\",\"params\":[],\"type\":\"PageBlock\"},{\"id\":\"1890305021\",\"predicate\":\"pageBlockTitle\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":2415565343,\"predicate\":\"pageBlockSubtitle\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":3132089824,\"predicate\":\"pageBlockAuthorDate\",\"params\":[{\"name\":\"author\",\"type\":\"RichText\"},{\"name\":\"published_date\",\"type\":\"int\"}],\"type\":\"PageBlock\"},{\"id\":3218105580,\"predicate\":\"pageBlockHeader\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":4046173921,\"predicate\":\"pageBlockSubheader\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":\"1182402406\",\"predicate\":\"pageBlockParagraph\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":3228621118,\"predicate\":\"pageBlockPreformatted\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"language\",\"type\":\"string\"}],\"type\":\"PageBlock\"},{\"id\":\"1216809369\",\"predicate\":\"pageBlockFooter\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":3676352904,\"predicate\":\"pageBlockDivider\",\"params\":[],\"type\":\"PageBlock\"},{\"id\":3456972720,\"predicate\":\"pageBlockAnchor\",\"params\":[{\"name\":\"name\",\"type\":\"string\"}],\"type\":\"PageBlock\"},{\"id\":3840442385,\"predicate\":\"pageBlockList\",\"params\":[{\"name\":\"items\",\"type\":\"Vector<PageListItem>\"}],\"type\":\"PageBlock\"},{\"id\":\"641563686\",\"predicate\":\"pageBlockBlockquote\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"caption\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":\"1329878739\",\"predicate\":\"pageBlockPullquote\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"caption\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":\"391759200\",\"predicate\":\"pageBlockPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"photo_id\",\"type\":\"long\"},{\"name\":\"caption\",\"type\":\"PageCaption\"},{\"name\":\"url\",\"type\":\"flags.0?string\"},{\"name\":\"webpage_id\",\"type\":\"flags.0?long\"}],\"type\":\"PageBlock\"},{\"id\":\"2089805750\",\"predicate\":\"pageBlockVideo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"autoplay\",\"type\":\"flags.0?true\"},{\"name\":\"loop\",\"type\":\"flags.1?true\"},{\"name\":\"video_id\",\"type\":\"long\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":\"972174080\",\"predicate\":\"pageBlockCover\",\"params\":[{\"name\":\"cover\",\"type\":\"PageBlock\"}],\"type\":\"PageBlock\"},{\"id\":2826014149,\"predicate\":\"pageBlockEmbed\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"full_width\",\"type\":\"flags.0?true\"},{\"name\":\"allow_scrolling\",\"type\":\"flags.3?true\"},{\"name\":\"url\",\"type\":\"flags.1?string\"},{\"name\":\"html\",\"type\":\"flags.2?string\"},{\"name\":\"poster_photo_id\",\"type\":\"flags.4?long\"},{\"name\":\"w\",\"type\":\"flags.5?int\"},{\"name\":\"h\",\"type\":\"flags.5?int\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":4065961995,\"predicate\":\"pageBlockEmbedPost\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"webpage_id\",\"type\":\"long\"},{\"name\":\"author_photo_id\",\"type\":\"long\"},{\"name\":\"author\",\"type\":\"string\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"blocks\",\"type\":\"Vector<PageBlock>\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":\"1705048653\",\"predicate\":\"pageBlockCollage\",\"params\":[{\"name\":\"items\",\"type\":\"Vector<PageBlock>\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":\"52401552\",\"predicate\":\"pageBlockSlideshow\",\"params\":[{\"name\":\"items\",\"type\":\"Vector<PageBlock>\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":\"1930545681\",\"predicate\":\"webPageNotModified\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"cached_page_views\",\"type\":\"flags.0?int\"}],\"type\":\"WebPage\"},{\"id\":4206550111,\"predicate\":\"inputPrivacyKeyPhoneCall\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":\"1030105979\",\"predicate\":\"privacyKeyPhoneCall\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":3714748232,\"predicate\":\"sendMessageGamePlayAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":2246320897,\"predicate\":\"phoneCallDiscardReasonMissed\",\"params\":[],\"type\":\"PhoneCallDiscardReason\"},{\"id\":3767910816,\"predicate\":\"phoneCallDiscardReasonDisconnect\",\"params\":[],\"type\":\"PhoneCallDiscardReason\"},{\"id\":\"1471006352\",\"predicate\":\"phoneCallDiscardReasonHangup\",\"params\":[],\"type\":\"PhoneCallDiscardReason\"},{\"id\":4210550985,\"predicate\":\"phoneCallDiscardReasonBusy\",\"params\":[],\"type\":\"PhoneCallDiscardReason\"},{\"id\":\"1852826908\",\"predicate\":\"updateDialogPinned\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.0?true\"},{\"name\":\"folder_id\",\"type\":\"flags.1?int\"},{\"name\":\"peer\",\"type\":\"DialogPeer\"}],\"type\":\"Update\"},{\"id\":4195302562,\"predicate\":\"updatePinnedDialogs\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"folder_id\",\"type\":\"flags.1?int\"},{\"name\":\"order\",\"type\":\"flags.0?Vector<DialogPeer>\"}],\"type\":\"Update\"},{\"id\":\"2104790276\",\"predicate\":\"dataJSON\",\"params\":[{\"name\":\"data\",\"type\":\"string\"}],\"type\":\"DataJSON\"},{\"id\":2199371971,\"predicate\":\"updateBotWebhookJSON\",\"params\":[{\"name\":\"data\",\"type\":\"DataJSON\"}],\"type\":\"Update\"},{\"id\":2610053286,\"predicate\":\"updateBotWebhookJSONQuery\",\"params\":[{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"DataJSON\"},{\"name\":\"timeout\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":3408489464,\"predicate\":\"labeledPrice\",\"params\":[{\"name\":\"label\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"long\"}],\"type\":\"LabeledPrice\"},{\"id\":3272254296,\"predicate\":\"invoice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"test\",\"type\":\"flags.0?true\"},{\"name\":\"name_requested\",\"type\":\"flags.1?true\"},{\"name\":\"phone_requested\",\"type\":\"flags.2?true\"},{\"name\":\"email_requested\",\"type\":\"flags.3?true\"},{\"name\":\"shipping_address_requested\",\"type\":\"flags.4?true\"},{\"name\":\"flexible\",\"type\":\"flags.5?true\"},{\"name\":\"phone_to_provider\",\"type\":\"flags.6?true\"},{\"name\":\"email_to_provider\",\"type\":\"flags.7?true\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"prices\",\"type\":\"Vector<LabeledPrice>\"}],\"type\":\"Invoice\"},{\"id\":4108359363,\"predicate\":\"inputMediaInvoice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.0?InputWebDocument\"},{\"name\":\"invoice\",\"type\":\"Invoice\"},{\"name\":\"payload\",\"type\":\"bytes\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"provider_data\",\"type\":\"DataJSON\"},{\"name\":\"start_param\",\"type\":\"string\"}],\"type\":\"InputMedia\"},{\"id\":3926049406,\"predicate\":\"paymentCharge\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"provider_charge_id\",\"type\":\"string\"}],\"type\":\"PaymentCharge\"},{\"id\":2402399015,\"predicate\":\"messageActionPaymentSentMe\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"},{\"name\":\"payload\",\"type\":\"bytes\"},{\"name\":\"info\",\"type\":\"flags.0?PaymentRequestedInfo\"},{\"name\":\"shipping_option_id\",\"type\":\"flags.1?string\"},{\"name\":\"charge\",\"type\":\"PaymentCharge\"}],\"type\":\"MessageAction\"},{\"id\":2220168007,\"predicate\":\"messageMediaInvoice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"shipping_address_requested\",\"type\":\"flags.1?true\"},{\"name\":\"test\",\"type\":\"flags.3?true\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.0?WebDocument\"},{\"name\":\"receipt_msg_id\",\"type\":\"flags.2?int\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"},{\"name\":\"start_param\",\"type\":\"string\"}],\"type\":\"MessageMedia\"},{\"id\":\"512535275\",\"predicate\":\"postAddress\",\"params\":[{\"name\":\"street_line1\",\"type\":\"string\"},{\"name\":\"street_line2\",\"type\":\"string\"},{\"name\":\"city\",\"type\":\"string\"},{\"name\":\"state\",\"type\":\"string\"},{\"name\":\"country_iso2\",\"type\":\"string\"},{\"name\":\"post_code\",\"type\":\"string\"}],\"type\":\"PostAddress\"},{\"id\":2426158996,\"predicate\":\"paymentRequestedInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"name\",\"type\":\"flags.0?string\"},{\"name\":\"phone\",\"type\":\"flags.1?string\"},{\"name\":\"email\",\"type\":\"flags.2?string\"},{\"name\":\"shipping_address\",\"type\":\"flags.3?PostAddress\"}],\"type\":\"PaymentRequestedInfo\"},{\"id\":2950250427,\"predicate\":\"keyboardButtonBuy\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":\"1080663248\",\"predicate\":\"messageActionPaymentSent\",\"params\":[{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"}],\"type\":\"MessageAction\"},{\"id\":3452074527,\"predicate\":\"paymentSavedCredentialsCard\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"PaymentSavedCredentials\"},{\"id\":\"475467473\",\"predicate\":\"webDocument\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"attributes\",\"type\":\"Vector<DocumentAttribute>\"}],\"type\":\"WebDocument\"},{\"id\":2616017741,\"predicate\":\"inputWebDocument\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"attributes\",\"type\":\"Vector<DocumentAttribute>\"}],\"type\":\"InputWebDocument\"},{\"id\":3258570374,\"predicate\":\"inputWebFileLocation\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputWebFileLocation\"},{\"id\":\"568808380\",\"predicate\":\"upload.webFile\",\"params\":[{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"file_type\",\"type\":\"storage.FileType\"},{\"name\":\"mtime\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"upload.WebFile\"},{\"id\":\"1062645411\",\"predicate\":\"payments.paymentForm\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_save_credentials\",\"type\":\"flags.2?true\"},{\"name\":\"password_missing\",\"type\":\"flags.3?true\"},{\"name\":\"bot_id\",\"type\":\"int\"},{\"name\":\"invoice\",\"type\":\"Invoice\"},{\"name\":\"provider_id\",\"type\":\"int\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"native_provider\",\"type\":\"flags.4?string\"},{\"name\":\"native_params\",\"type\":\"flags.4?DataJSON\"},{\"name\":\"saved_info\",\"type\":\"flags.0?PaymentRequestedInfo\"},{\"name\":\"saved_credentials\",\"type\":\"flags.1?PaymentSavedCredentials\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"payments.PaymentForm\"},{\"id\":3510966403,\"predicate\":\"payments.validatedRequestedInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"flags.0?string\"},{\"name\":\"shipping_options\",\"type\":\"flags.1?Vector<ShippingOption>\"}],\"type\":\"payments.ValidatedRequestedInfo\"},{\"id\":\"1314881805\",\"predicate\":\"payments.paymentResult\",\"params\":[{\"name\":\"updates\",\"type\":\"Updates\"}],\"type\":\"payments.PaymentResult\"},{\"id\":\"1342771681\",\"predicate\":\"payments.paymentReceipt\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"bot_id\",\"type\":\"int\"},{\"name\":\"invoice\",\"type\":\"Invoice\"},{\"name\":\"provider_id\",\"type\":\"int\"},{\"name\":\"info\",\"type\":\"flags.0?PaymentRequestedInfo\"},{\"name\":\"shipping\",\"type\":\"flags.1?ShippingOption\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"},{\"name\":\"credentials_title\",\"type\":\"string\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"payments.PaymentReceipt\"},{\"id\":4220511292,\"predicate\":\"payments.savedInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"has_saved_credentials\",\"type\":\"flags.1?true\"},{\"name\":\"saved_info\",\"type\":\"flags.0?PaymentRequestedInfo\"}],\"type\":\"payments.SavedInfo\"},{\"id\":3238965967,\"predicate\":\"inputPaymentCredentialsSaved\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"tmp_password\",\"type\":\"bytes\"}],\"type\":\"InputPaymentCredentials\"},{\"id\":\"873977640\",\"predicate\":\"inputPaymentCredentials\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"save\",\"type\":\"flags.0?true\"},{\"name\":\"data\",\"type\":\"DataJSON\"}],\"type\":\"InputPaymentCredentials\"},{\"id\":3680828724,\"predicate\":\"account.tmpPassword\",\"params\":[{\"name\":\"tmp_password\",\"type\":\"bytes\"},{\"name\":\"valid_until\",\"type\":\"int\"}],\"type\":\"account.TmpPassword\"},{\"id\":3055631583,\"predicate\":\"shippingOption\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"prices\",\"type\":\"Vector<LabeledPrice>\"}],\"type\":\"ShippingOption\"},{\"id\":3771582784,\"predicate\":\"updateBotShippingQuery\",\"params\":[{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"payload\",\"type\":\"bytes\"},{\"name\":\"shipping_address\",\"type\":\"PostAddress\"}],\"type\":\"Update\"},{\"id\":\"1563376297\",\"predicate\":\"updateBotPrecheckoutQuery\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"payload\",\"type\":\"bytes\"},{\"name\":\"info\",\"type\":\"flags.0?PaymentRequestedInfo\"},{\"name\":\"shipping_option_id\",\"type\":\"flags.1?string\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"}],\"type\":\"Update\"},{\"id\":4288717974,\"predicate\":\"inputStickerSetItem\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"document\",\"type\":\"InputDocument\"},{\"name\":\"emoji\",\"type\":\"string\"},{\"name\":\"mask_coords\",\"type\":\"flags.0?MaskCoords\"}],\"type\":\"InputStickerSetItem\"},{\"id\":2869914398,\"predicate\":\"updatePhoneCall\",\"params\":[{\"name\":\"phone_call\",\"type\":\"PhoneCall\"}],\"type\":\"Update\"},{\"id\":\"506920429\",\"predicate\":\"inputPhoneCall\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputPhoneCall\"},{\"id\":\"1399245077\",\"predicate\":\"phoneCallEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"PhoneCall\"},{\"id\":\"462375633\",\"predicate\":\"phoneCallWaiting\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"int\"},{\"name\":\"participant_id\",\"type\":\"int\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"},{\"name\":\"receive_date\",\"type\":\"flags.0?int\"}],\"type\":\"PhoneCall\"},{\"id\":2280307539,\"predicate\":\"phoneCallRequested\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"int\"},{\"name\":\"participant_id\",\"type\":\"int\"},{\"name\":\"g_a_hash\",\"type\":\"bytes\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"}],\"type\":\"PhoneCall\"},{\"id\":2575058250,\"predicate\":\"phoneCallAccepted\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"int\"},{\"name\":\"participant_id\",\"type\":\"int\"},{\"name\":\"g_b\",\"type\":\"bytes\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"}],\"type\":\"PhoneCall\"},{\"id\":2269294207,\"predicate\":\"phoneCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"p2p_allowed\",\"type\":\"flags.5?true\"},{\"name\":\"video\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"int\"},{\"name\":\"participant_id\",\"type\":\"int\"},{\"name\":\"g_a_or_b\",\"type\":\"bytes\"},{\"name\":\"key_fingerprint\",\"type\":\"long\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"},{\"name\":\"connections\",\"type\":\"Vector<PhoneConnection>\"},{\"name\":\"start_date\",\"type\":\"int\"}],\"type\":\"PhoneCall\"},{\"id\":\"1355435489\",\"predicate\":\"phoneCallDiscarded\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"need_rating\",\"type\":\"flags.2?true\"},{\"name\":\"need_debug\",\"type\":\"flags.3?true\"},{\"name\":\"video\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"reason\",\"type\":\"flags.0?PhoneCallDiscardReason\"},{\"name\":\"duration\",\"type\":\"flags.1?int\"}],\"type\":\"PhoneCall\"},{\"id\":2639009728,\"predicate\":\"phoneConnection\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"ip\",\"type\":\"string\"},{\"name\":\"ipv6\",\"type\":\"string\"},{\"name\":\"port\",\"type\":\"int\"},{\"name\":\"peer_tag\",\"type\":\"bytes\"}],\"type\":\"PhoneConnection\"},{\"id\":4236742600,\"predicate\":\"phoneCallProtocol\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"udp_p2p\",\"type\":\"flags.0?true\"},{\"name\":\"udp_reflector\",\"type\":\"flags.1?true\"},{\"name\":\"min_layer\",\"type\":\"int\"},{\"name\":\"max_layer\",\"type\":\"int\"},{\"name\":\"library_versions\",\"type\":\"Vector<string>\"}],\"type\":\"PhoneCallProtocol\"},{\"id\":3968000320,\"predicate\":\"phone.phoneCall\",\"params\":[{\"name\":\"phone_call\",\"type\":\"PhoneCall\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"phone.PhoneCall\"},{\"id\":2160695144,\"predicate\":\"inputMessagesFilterPhoneCalls\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"missed\",\"type\":\"flags.0?true\"}],\"type\":\"MessagesFilter\"},{\"id\":2162236031,\"predicate\":\"messageActionPhoneCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.2?true\"},{\"name\":\"call_id\",\"type\":\"long\"},{\"name\":\"reason\",\"type\":\"flags.0?PhoneCallDiscardReason\"},{\"name\":\"duration\",\"type\":\"flags.1?int\"}],\"type\":\"MessageAction\"},{\"id\":\"2054952868\",\"predicate\":\"inputMessagesFilterRoundVoice\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":3041516115,\"predicate\":\"inputMessagesFilterRoundVideo\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":2297593788,\"predicate\":\"sendMessageRecordRoundAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":\"608050278\",\"predicate\":\"sendMessageUploadRoundAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":4052539972,\"predicate\":\"upload.fileCdnRedirect\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"file_token\",\"type\":\"bytes\"},{\"name\":\"encryption_key\",\"type\":\"bytes\"},{\"name\":\"encryption_iv\",\"type\":\"bytes\"},{\"name\":\"file_hashes\",\"type\":\"Vector<FileHash>\"}],\"type\":\"upload.File\"},{\"id\":4004045934,\"predicate\":\"upload.cdnFileReuploadNeeded\",\"params\":[{\"name\":\"request_token\",\"type\":\"bytes\"}],\"type\":\"upload.CdnFile\"},{\"id\":2845821519,\"predicate\":\"upload.cdnFile\",\"params\":[{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"upload.CdnFile\"},{\"id\":3380800186,\"predicate\":\"cdnPublicKey\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"public_key\",\"type\":\"string\"}],\"type\":\"CdnPublicKey\"},{\"id\":\"1462101002\",\"predicate\":\"cdnConfig\",\"params\":[{\"name\":\"public_keys\",\"type\":\"Vector<CdnPublicKey>\"}],\"type\":\"CdnConfig\"},{\"id\":4011282869,\"predicate\":\"pageBlockChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"Chat\"}],\"type\":\"PageBlock\"},{\"id\":3402727926,\"predicate\":\"langPackString\",\"params\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"type\":\"LangPackString\"},{\"id\":\"1816636575\",\"predicate\":\"langPackStringPluralized\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"zero_value\",\"type\":\"flags.0?string\"},{\"name\":\"one_value\",\"type\":\"flags.1?string\"},{\"name\":\"two_value\",\"type\":\"flags.2?string\"},{\"name\":\"few_value\",\"type\":\"flags.3?string\"},{\"name\":\"many_value\",\"type\":\"flags.4?string\"},{\"name\":\"other_value\",\"type\":\"string\"}],\"type\":\"LangPackString\"},{\"id\":\"695856818\",\"predicate\":\"langPackStringDeleted\",\"params\":[{\"name\":\"key\",\"type\":\"string\"}],\"type\":\"LangPackString\"},{\"id\":4085629430,\"predicate\":\"langPackDifference\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"from_version\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"strings\",\"type\":\"Vector<LangPackString>\"}],\"type\":\"LangPackDifference\"},{\"id\":4006239459,\"predicate\":\"langPackLanguage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"official\",\"type\":\"flags.0?true\"},{\"name\":\"rtl\",\"type\":\"flags.2?true\"},{\"name\":\"beta\",\"type\":\"flags.3?true\"},{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"native_name\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"base_lang_code\",\"type\":\"flags.1?string\"},{\"name\":\"plural_code\",\"type\":\"string\"},{\"name\":\"strings_count\",\"type\":\"int\"},{\"name\":\"translated_count\",\"type\":\"int\"},{\"name\":\"translations_url\",\"type\":\"string\"}],\"type\":\"LangPackLanguage\"},{\"id\":\"1180041828\",\"predicate\":\"updateLangPackTooLong\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"Update\"},{\"id\":\"1442983757\",\"predicate\":\"updateLangPack\",\"params\":[{\"name\":\"difference\",\"type\":\"LangPackDifference\"}],\"type\":\"Update\"},{\"id\":3435051951,\"predicate\":\"channelParticipantAdmin\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_edit\",\"type\":\"flags.0?true\"},{\"name\":\"self\",\"type\":\"flags.1?true\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"inviter_id\",\"type\":\"flags.1?int\"},{\"name\":\"promoted_by\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_rights\",\"type\":\"ChatAdminRights\"},{\"name\":\"rank\",\"type\":\"flags.2?string\"}],\"type\":\"ChannelParticipant\"},{\"id\":\"470789295\",\"predicate\":\"channelParticipantBanned\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"left\",\"type\":\"flags.0?true\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"kicked_by\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"banned_rights\",\"type\":\"ChatBannedRights\"}],\"type\":\"ChannelParticipant\"},{\"id\":\"338142689\",\"predicate\":\"channelParticipantsBanned\",\"params\":[{\"name\":\"q\",\"type\":\"string\"}],\"type\":\"ChannelParticipantsFilter\"},{\"id\":\"106343499\",\"predicate\":\"channelParticipantsSearch\",\"params\":[{\"name\":\"q\",\"type\":\"string\"}],\"type\":\"ChannelParticipantsFilter\"},{\"id\":3873421349,\"predicate\":\"channelAdminLogEventActionChangeTitle\",\"params\":[{\"name\":\"prev_value\",\"type\":\"string\"},{\"name\":\"new_value\",\"type\":\"string\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1427671598\",\"predicate\":\"channelAdminLogEventActionChangeAbout\",\"params\":[{\"name\":\"prev_value\",\"type\":\"string\"},{\"name\":\"new_value\",\"type\":\"string\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1783299128\",\"predicate\":\"channelAdminLogEventActionChangeUsername\",\"params\":[{\"name\":\"prev_value\",\"type\":\"string\"},{\"name\":\"new_value\",\"type\":\"string\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1129042607\",\"predicate\":\"channelAdminLogEventActionChangePhoto\",\"params\":[{\"name\":\"prev_photo\",\"type\":\"Photo\"},{\"name\":\"new_photo\",\"type\":\"Photo\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"460916654\",\"predicate\":\"channelAdminLogEventActionToggleInvites\",\"params\":[{\"name\":\"new_value\",\"type\":\"Bool\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"648939889\",\"predicate\":\"channelAdminLogEventActionToggleSignatures\",\"params\":[{\"name\":\"new_value\",\"type\":\"Bool\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":3924306968,\"predicate\":\"channelAdminLogEventActionUpdatePinned\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1889215493\",\"predicate\":\"channelAdminLogEventActionEditMessage\",\"params\":[{\"name\":\"prev_message\",\"type\":\"Message\"},{\"name\":\"new_message\",\"type\":\"Message\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1121994683\",\"predicate\":\"channelAdminLogEventActionDeleteMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"405815507\",\"predicate\":\"channelAdminLogEventActionParticipantJoin\",\"params\":[],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":4170676210,\"predicate\":\"channelAdminLogEventActionParticipantLeave\",\"params\":[],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":3810276568,\"predicate\":\"channelAdminLogEventActionParticipantInvite\",\"params\":[{\"name\":\"participant\",\"type\":\"ChannelParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":3872931198,\"predicate\":\"channelAdminLogEventActionParticipantToggleBan\",\"params\":[{\"name\":\"prev_participant\",\"type\":\"ChannelParticipant\"},{\"name\":\"new_participant\",\"type\":\"ChannelParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":3580323600,\"predicate\":\"channelAdminLogEventActionParticipantToggleAdmin\",\"params\":[{\"name\":\"prev_participant\",\"type\":\"ChannelParticipant\"},{\"name\":\"new_participant\",\"type\":\"ChannelParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"995769920\",\"predicate\":\"channelAdminLogEvent\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"action\",\"type\":\"ChannelAdminLogEventAction\"}],\"type\":\"ChannelAdminLogEvent\"},{\"id\":3985307469,\"predicate\":\"channels.adminLogResults\",\"params\":[{\"name\":\"events\",\"type\":\"Vector<ChannelAdminLogEvent>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"channels.AdminLogResults\"},{\"id\":3926948580,\"predicate\":\"channelAdminLogEventsFilter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"join\",\"type\":\"flags.0?true\"},{\"name\":\"leave\",\"type\":\"flags.1?true\"},{\"name\":\"invite\",\"type\":\"flags.2?true\"},{\"name\":\"ban\",\"type\":\"flags.3?true\"},{\"name\":\"unban\",\"type\":\"flags.4?true\"},{\"name\":\"kick\",\"type\":\"flags.5?true\"},{\"name\":\"unkick\",\"type\":\"flags.6?true\"},{\"name\":\"promote\",\"type\":\"flags.7?true\"},{\"name\":\"demote\",\"type\":\"flags.8?true\"},{\"name\":\"info\",\"type\":\"flags.9?true\"},{\"name\":\"settings\",\"type\":\"flags.10?true\"},{\"name\":\"pinned\",\"type\":\"flags.11?true\"},{\"name\":\"edit\",\"type\":\"flags.12?true\"},{\"name\":\"delete\",\"type\":\"flags.13?true\"},{\"name\":\"group_call\",\"type\":\"flags.14?true\"},{\"name\":\"invites\",\"type\":\"flags.15?true\"}],\"type\":\"ChannelAdminLogEventsFilter\"},{\"id\":\"511092620\",\"predicate\":\"topPeerCategoryPhoneCalls\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":2151899626,\"predicate\":\"pageBlockAudio\",\"params\":[{\"name\":\"audio_id\",\"type\":\"long\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":\"1558266229\",\"predicate\":\"popularContact\",\"params\":[{\"name\":\"client_id\",\"type\":\"long\"},{\"name\":\"importers\",\"type\":\"int\"}],\"type\":\"PopularContact\"},{\"id\":\"1200788123\",\"predicate\":\"messageActionScreenshotTaken\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":2660214483,\"predicate\":\"messages.favedStickersNotModified\",\"params\":[],\"type\":\"messages.FavedStickers\"},{\"id\":4085198614,\"predicate\":\"messages.favedStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"packs\",\"type\":\"Vector<StickerPack>\"},{\"name\":\"stickers\",\"type\":\"Vector<Document>\"}],\"type\":\"messages.FavedStickers\"},{\"id\":3843135853,\"predicate\":\"updateFavedStickers\",\"params\":[],\"type\":\"Update\"},{\"id\":2307472197,\"predicate\":\"updateChannelReadMessagesContents\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"}],\"type\":\"Update\"},{\"id\":3254314650,\"predicate\":\"inputMessagesFilterMyMentions\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":\"1887741886\",\"predicate\":\"updateContactsReset\",\"params\":[],\"type\":\"Update\"},{\"id\":2982398631,\"predicate\":\"channelAdminLogEventActionChangeStickerSet\",\"params\":[{\"name\":\"prev_stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"new_stickerset\",\"type\":\"InputStickerSet\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":4209418070,\"predicate\":\"messageActionCustomAction\",\"params\":[{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":\"178373535\",\"predicate\":\"inputPaymentCredentialsApplePay\",\"params\":[{\"name\":\"payment_data\",\"type\":\"DataJSON\"}],\"type\":\"InputPaymentCredentials\"},{\"id\":3875695885,\"predicate\":\"inputMessagesFilterGeo\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":3764575107,\"predicate\":\"inputMessagesFilterContacts\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":\"1893427255\",\"predicate\":\"updateChannelAvailableMessages\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"available_min_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"1599903217\",\"predicate\":\"channelAdminLogEventActionTogglePreHistoryHidden\",\"params\":[{\"name\":\"new_value\",\"type\":\"Bool\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":2535434307,\"predicate\":\"inputMediaGeoLive\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"stopped\",\"type\":\"flags.0?true\"},{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"heading\",\"type\":\"flags.2?int\"},{\"name\":\"period\",\"type\":\"flags.1?int\"},{\"name\":\"proximity_notification_radius\",\"type\":\"flags.3?int\"}],\"type\":\"InputMedia\"},{\"id\":3108030054,\"predicate\":\"messageMediaGeoLive\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"geo\",\"type\":\"GeoPoint\"},{\"name\":\"heading\",\"type\":\"flags.0?int\"},{\"name\":\"period\",\"type\":\"int\"},{\"name\":\"proximity_notification_radius\",\"type\":\"flags.1?int\"}],\"type\":\"MessageMedia\"},{\"id\":\"1189204285\",\"predicate\":\"recentMeUrlUnknown\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"RecentMeUrl\"},{\"id\":2377921334,\"predicate\":\"recentMeUrlUser\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"user_id\",\"type\":\"int\"}],\"type\":\"RecentMeUrl\"},{\"id\":2686132985,\"predicate\":\"recentMeUrlChat\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"RecentMeUrl\"},{\"id\":3947431965,\"predicate\":\"recentMeUrlChatInvite\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"chat_invite\",\"type\":\"ChatInvite\"}],\"type\":\"RecentMeUrl\"},{\"id\":3154794460,\"predicate\":\"recentMeUrlStickerSet\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"set\",\"type\":\"StickerSetCovered\"}],\"type\":\"RecentMeUrl\"},{\"id\":\"235081943\",\"predicate\":\"help.recentMeUrls\",\"params\":[{\"name\":\"urls\",\"type\":\"Vector<RecentMeUrl>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"help.RecentMeUrls\"},{\"id\":4028055529,\"predicate\":\"channels.channelParticipantsNotModified\",\"params\":[],\"type\":\"channels.ChannelParticipants\"},{\"id\":\"1951620897\",\"predicate\":\"messages.messagesNotModified\",\"params\":[{\"name\":\"count\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":\"482797855\",\"predicate\":\"inputSingleMedia\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"media\",\"type\":\"InputMedia\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.0?Vector<MessageEntity>\"}],\"type\":\"InputSingleMedia\"},{\"id\":3402187762,\"predicate\":\"webAuthorization\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"bot_id\",\"type\":\"int\"},{\"name\":\"domain\",\"type\":\"string\"},{\"name\":\"browser\",\"type\":\"string\"},{\"name\":\"platform\",\"type\":\"string\"},{\"name\":\"date_created\",\"type\":\"int\"},{\"name\":\"date_active\",\"type\":\"int\"},{\"name\":\"ip\",\"type\":\"string\"},{\"name\":\"region\",\"type\":\"string\"}],\"type\":\"WebAuthorization\"},{\"id\":3981887996,\"predicate\":\"account.webAuthorizations\",\"params\":[{\"name\":\"authorizations\",\"type\":\"Vector<WebAuthorization>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"account.WebAuthorizations\"},{\"id\":2792792866,\"predicate\":\"inputMessageID\",\"params\":[{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"InputMessage\"},{\"id\":3134751637,\"predicate\":\"inputMessageReplyTo\",\"params\":[{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"InputMessage\"},{\"id\":2257003832,\"predicate\":\"inputMessagePinned\",\"params\":[],\"type\":\"InputMessage\"},{\"id\":2607407947,\"predicate\":\"messageEntityPhone\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":\"1280209983\",\"predicate\":\"messageEntityCashtag\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":2884218878,\"predicate\":\"messageActionBotAllowed\",\"params\":[{\"name\":\"domain\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":4239064759,\"predicate\":\"inputDialogPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"InputDialogPeer\"},{\"id\":3849174789,\"predicate\":\"dialogPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"}],\"type\":\"DialogPeer\"},{\"id\":\"223655517\",\"predicate\":\"messages.foundStickerSetsNotModified\",\"params\":[],\"type\":\"messages.FoundStickerSets\"},{\"id\":\"1359533640\",\"predicate\":\"messages.foundStickerSets\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"sets\",\"type\":\"Vector<StickerSetCovered>\"}],\"type\":\"messages.FoundStickerSets\"},{\"id\":\"1648543603\",\"predicate\":\"fileHash\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"bytes\"}],\"type\":\"FileHash\"},{\"id\":4190682310,\"predicate\":\"webDocumentNoProxy\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"attributes\",\"type\":\"Vector<DocumentAttribute>\"}],\"type\":\"WebDocument\"},{\"id\":\"1968737087\",\"predicate\":\"inputClientProxy\",\"params\":[{\"name\":\"address\",\"type\":\"string\"},{\"name\":\"port\",\"type\":\"int\"}],\"type\":\"InputClientProxy\"},{\"id\":3811614591,\"predicate\":\"help.termsOfServiceUpdateEmpty\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"}],\"type\":\"help.TermsOfServiceUpdate\"},{\"id\":\"686618977\",\"predicate\":\"help.termsOfServiceUpdate\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"},{\"name\":\"terms_of_service\",\"type\":\"help.TermsOfService\"}],\"type\":\"help.TermsOfServiceUpdate\"},{\"id\":\"859091184\",\"predicate\":\"inputSecureFileUploaded\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"parts\",\"type\":\"int\"},{\"name\":\"md5_checksum\",\"type\":\"string\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"secret\",\"type\":\"bytes\"}],\"type\":\"InputSecureFile\"},{\"id\":\"1399317950\",\"predicate\":\"inputSecureFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputSecureFile\"},{\"id\":3418877480,\"predicate\":\"inputSecureFileLocation\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputFileLocation\"},{\"id\":\"1679398724\",\"predicate\":\"secureFileEmpty\",\"params\":[],\"type\":\"SecureFile\"},{\"id\":3760683618,\"predicate\":\"secureFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"secret\",\"type\":\"bytes\"}],\"type\":\"SecureFile\"},{\"id\":2330640067,\"predicate\":\"secureData\",\"params\":[{\"name\":\"data\",\"type\":\"bytes\"},{\"name\":\"data_hash\",\"type\":\"bytes\"},{\"name\":\"secret\",\"type\":\"bytes\"}],\"type\":\"SecureData\"},{\"id\":\"2103482845\",\"predicate\":\"securePlainPhone\",\"params\":[{\"name\":\"phone\",\"type\":\"string\"}],\"type\":\"SecurePlainData\"},{\"id\":\"569137759\",\"predicate\":\"securePlainEmail\",\"params\":[{\"name\":\"email\",\"type\":\"string\"}],\"type\":\"SecurePlainData\"},{\"id\":2636808675,\"predicate\":\"secureValueTypePersonalDetails\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":\"1034709504\",\"predicate\":\"secureValueTypePassport\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":\"115615172\",\"predicate\":\"secureValueTypeDriverLicense\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":2698015819,\"predicate\":\"secureValueTypeIdentityCard\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":2577698595,\"predicate\":\"secureValueTypeInternalPassport\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":3420659238,\"predicate\":\"secureValueTypeAddress\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":4231435598,\"predicate\":\"secureValueTypeUtilityBill\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":2299755533,\"predicate\":\"secureValueTypeBankStatement\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":2340959368,\"predicate\":\"secureValueTypeRentalAgreement\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":2581823594,\"predicate\":\"secureValueTypePassportRegistration\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":3926060083,\"predicate\":\"secureValueTypeTemporaryRegistration\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":3005262555,\"predicate\":\"secureValueTypePhone\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":2386339822,\"predicate\":\"secureValueTypeEmail\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":\"411017418\",\"predicate\":\"secureValue\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"data\",\"type\":\"flags.0?SecureData\"},{\"name\":\"front_side\",\"type\":\"flags.1?SecureFile\"},{\"name\":\"reverse_side\",\"type\":\"flags.2?SecureFile\"},{\"name\":\"selfie\",\"type\":\"flags.3?SecureFile\"},{\"name\":\"translation\",\"type\":\"flags.6?Vector<SecureFile>\"},{\"name\":\"files\",\"type\":\"flags.4?Vector<SecureFile>\"},{\"name\":\"plain_data\",\"type\":\"flags.5?SecurePlainData\"},{\"name\":\"hash\",\"type\":\"bytes\"}],\"type\":\"SecureValue\"},{\"id\":3676426407,\"predicate\":\"inputSecureValue\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"data\",\"type\":\"flags.0?SecureData\"},{\"name\":\"front_side\",\"type\":\"flags.1?InputSecureFile\"},{\"name\":\"reverse_side\",\"type\":\"flags.2?InputSecureFile\"},{\"name\":\"selfie\",\"type\":\"flags.3?InputSecureFile\"},{\"name\":\"translation\",\"type\":\"flags.6?Vector<InputSecureFile>\"},{\"name\":\"files\",\"type\":\"flags.4?Vector<InputSecureFile>\"},{\"name\":\"plain_data\",\"type\":\"flags.5?SecurePlainData\"}],\"type\":\"InputSecureValue\"},{\"id\":3978218928,\"predicate\":\"secureValueHash\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"hash\",\"type\":\"bytes\"}],\"type\":\"SecureValueHash\"},{\"id\":3903065049,\"predicate\":\"secureValueErrorData\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"data_hash\",\"type\":\"bytes\"},{\"name\":\"field\",\"type\":\"string\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":\"12467706\",\"predicate\":\"secureValueErrorFrontSide\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":2257201829,\"predicate\":\"secureValueErrorReverseSide\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":3845639894,\"predicate\":\"secureValueErrorSelfie\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":\"2054162547\",\"predicate\":\"secureValueErrorFile\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":\"1717706985\",\"predicate\":\"secureValueErrorFiles\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"Vector<bytes>\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":\"871426631\",\"predicate\":\"secureCredentialsEncrypted\",\"params\":[{\"name\":\"data\",\"type\":\"bytes\"},{\"name\":\"hash\",\"type\":\"bytes\"},{\"name\":\"secret\",\"type\":\"bytes\"}],\"type\":\"SecureCredentialsEncrypted\"},{\"id\":2905480408,\"predicate\":\"account.authorizationForm\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"required_types\",\"type\":\"Vector<SecureRequiredType>\"},{\"name\":\"values\",\"type\":\"Vector<SecureValue>\"},{\"name\":\"errors\",\"type\":\"Vector<SecureValueError>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"privacy_policy_url\",\"type\":\"flags.0?string\"}],\"type\":\"account.AuthorizationForm\"},{\"id\":2166326607,\"predicate\":\"account.sentEmailCode\",\"params\":[{\"name\":\"email_pattern\",\"type\":\"string\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"account.SentEmailCode\"},{\"id\":\"455635795\",\"predicate\":\"messageActionSecureValuesSentMe\",\"params\":[{\"name\":\"values\",\"type\":\"Vector<SecureValue>\"},{\"name\":\"credentials\",\"type\":\"SecureCredentialsEncrypted\"}],\"type\":\"MessageAction\"},{\"id\":3646710100,\"predicate\":\"messageActionSecureValuesSent\",\"params\":[{\"name\":\"types\",\"type\":\"Vector<SecureValueType>\"}],\"type\":\"MessageAction\"},{\"id\":\"1722786150\",\"predicate\":\"help.deepLinkInfoEmpty\",\"params\":[],\"type\":\"help.DeepLinkInfo\"},{\"id\":\"1783556146\",\"predicate\":\"help.deepLinkInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"update_app\",\"type\":\"flags.0?true\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"}],\"type\":\"help.DeepLinkInfo\"},{\"id\":\"289586518\",\"predicate\":\"savedPhoneContact\",\"params\":[{\"name\":\"phone\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"SavedContact\"},{\"id\":\"1304052993\",\"predicate\":\"account.takeout\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"account.Takeout\"},{\"id\":\"700340377\",\"predicate\":\"inputTakeoutFileLocation\",\"params\":[],\"type\":\"InputFileLocation\"},{\"id\":3781450179,\"predicate\":\"updateDialogUnreadMark\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"unread\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"DialogPeer\"}],\"type\":\"Update\"},{\"id\":4041467286,\"predicate\":\"messages.dialogsNotModified\",\"params\":[{\"name\":\"count\",\"type\":\"int\"}],\"type\":\"messages.Dialogs\"},{\"id\":2669814217,\"predicate\":\"inputWebFileGeoPointLocation\",\"params\":[{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"zoom\",\"type\":\"int\"},{\"name\":\"scale\",\"type\":\"int\"}],\"type\":\"InputWebFileLocation\"},{\"id\":3039597469,\"predicate\":\"contacts.topPeersDisabled\",\"params\":[],\"type\":\"contacts.TopPeers\"},{\"id\":2609510714,\"predicate\":\"inputReportReasonCopyright\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":3562713238,\"predicate\":\"passwordKdfAlgoUnknown\",\"params\":[],\"type\":\"PasswordKdfAlgo\"},{\"id\":\"4883767\",\"predicate\":\"securePasswordKdfAlgoUnknown\",\"params\":[],\"type\":\"SecurePasswordKdfAlgo\"},{\"id\":3153255840,\"predicate\":\"securePasswordKdfAlgoPBKDF2HMACSHA512iter100000\",\"params\":[{\"name\":\"salt\",\"type\":\"bytes\"}],\"type\":\"SecurePasswordKdfAlgo\"},{\"id\":2252807570,\"predicate\":\"securePasswordKdfAlgoSHA512\",\"params\":[{\"name\":\"salt\",\"type\":\"bytes\"}],\"type\":\"SecurePasswordKdfAlgo\"},{\"id\":\"354925740\",\"predicate\":\"secureSecretSettings\",\"params\":[{\"name\":\"secure_algo\",\"type\":\"SecurePasswordKdfAlgo\"},{\"name\":\"secure_secret\",\"type\":\"bytes\"},{\"name\":\"secure_secret_id\",\"type\":\"long\"}],\"type\":\"SecureSecretSettings\"},{\"id\":\"982592842\",\"predicate\":\"passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow\",\"params\":[{\"name\":\"salt1\",\"type\":\"bytes\"},{\"name\":\"salt2\",\"type\":\"bytes\"},{\"name\":\"g\",\"type\":\"int\"},{\"name\":\"p\",\"type\":\"bytes\"}],\"type\":\"PasswordKdfAlgo\"},{\"id\":2558588504,\"predicate\":\"inputCheckPasswordEmpty\",\"params\":[],\"type\":\"InputCheckPasswordSRP\"},{\"id\":3531600002,\"predicate\":\"inputCheckPasswordSRP\",\"params\":[{\"name\":\"srp_id\",\"type\":\"long\"},{\"name\":\"A\",\"type\":\"bytes\"},{\"name\":\"M1\",\"type\":\"bytes\"}],\"type\":\"InputCheckPasswordSRP\"},{\"id\":2258466191,\"predicate\":\"secureValueError\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":2702460784,\"predicate\":\"secureValueErrorTranslationFile\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":\"878931416\",\"predicate\":\"secureValueErrorTranslationFiles\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"Vector<bytes>\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":2191366618,\"predicate\":\"secureRequiredType\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"native_names\",\"type\":\"flags.0?true\"},{\"name\":\"selfie_required\",\"type\":\"flags.1?true\"},{\"name\":\"translation_required\",\"type\":\"flags.2?true\"},{\"name\":\"type\",\"type\":\"SecureValueType\"}],\"type\":\"SecureRequiredType\"},{\"id\":\"41187252\",\"predicate\":\"secureRequiredTypeOneOf\",\"params\":[{\"name\":\"types\",\"type\":\"Vector<SecureRequiredType>\"}],\"type\":\"SecureRequiredType\"},{\"id\":3216634967,\"predicate\":\"help.passportConfigNotModified\",\"params\":[],\"type\":\"help.PassportConfig\"},{\"id\":2694370991,\"predicate\":\"help.passportConfig\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"countries_langs\",\"type\":\"DataJSON\"}],\"type\":\"help.PassportConfig\"},{\"id\":\"488313413\",\"predicate\":\"inputAppEvent\",\"params\":[{\"name\":\"time\",\"type\":\"double\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"peer\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"JSONValue\"}],\"type\":\"InputAppEvent\"},{\"id\":3235781593,\"predicate\":\"jsonObjectValue\",\"params\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"JSONValue\"}],\"type\":\"JSONObjectValue\"},{\"id\":\"1064139624\",\"predicate\":\"jsonNull\",\"params\":[],\"type\":\"JSONValue\"},{\"id\":3342098026,\"predicate\":\"jsonBool\",\"params\":[{\"name\":\"value\",\"type\":\"Bool\"}],\"type\":\"JSONValue\"},{\"id\":\"736157604\",\"predicate\":\"jsonNumber\",\"params\":[{\"name\":\"value\",\"type\":\"double\"}],\"type\":\"JSONValue\"},{\"id\":3072226938,\"predicate\":\"jsonString\",\"params\":[{\"name\":\"value\",\"type\":\"string\"}],\"type\":\"JSONValue\"},{\"id\":4148447075,\"predicate\":\"jsonArray\",\"params\":[{\"name\":\"value\",\"type\":\"Vector<JSONValue>\"}],\"type\":\"JSONValue\"},{\"id\":2579616925,\"predicate\":\"jsonObject\",\"params\":[{\"name\":\"value\",\"type\":\"Vector<JSONObjectValue>\"}],\"type\":\"JSONValue\"},{\"id\":2983951486,\"predicate\":\"inputNotifyBroadcasts\",\"params\":[],\"type\":\"InputNotifyPeer\"},{\"id\":3591563503,\"predicate\":\"notifyBroadcasts\",\"params\":[],\"type\":\"NotifyPeer\"},{\"id\":3983181060,\"predicate\":\"textSubscript\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":3355139585,\"predicate\":\"textSuperscript\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":\"55281185\",\"predicate\":\"textMarked\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":\"483104362\",\"predicate\":\"textPhone\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"phone\",\"type\":\"string\"}],\"type\":\"RichText\"},{\"id\":\"136105807\",\"predicate\":\"textImage\",\"params\":[{\"name\":\"document_id\",\"type\":\"long\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"}],\"type\":\"RichText\"},{\"id\":\"504660880\",\"predicate\":\"pageBlockKicker\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":\"878078826\",\"predicate\":\"pageTableCell\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"header\",\"type\":\"flags.0?true\"},{\"name\":\"align_center\",\"type\":\"flags.3?true\"},{\"name\":\"align_right\",\"type\":\"flags.4?true\"},{\"name\":\"valign_middle\",\"type\":\"flags.5?true\"},{\"name\":\"valign_bottom\",\"type\":\"flags.6?true\"},{\"name\":\"text\",\"type\":\"flags.7?RichText\"},{\"name\":\"colspan\",\"type\":\"flags.1?int\"},{\"name\":\"rowspan\",\"type\":\"flags.2?int\"}],\"type\":\"PageTableCell\"},{\"id\":3770729957,\"predicate\":\"pageTableRow\",\"params\":[{\"name\":\"cells\",\"type\":\"Vector<PageTableCell>\"}],\"type\":\"PageTableRow\"},{\"id\":3209554562,\"predicate\":\"pageBlockTable\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"bordered\",\"type\":\"flags.0?true\"},{\"name\":\"striped\",\"type\":\"flags.1?true\"},{\"name\":\"title\",\"type\":\"RichText\"},{\"name\":\"rows\",\"type\":\"Vector<PageTableRow>\"}],\"type\":\"PageBlock\"},{\"id\":\"1869903447\",\"predicate\":\"pageCaption\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"credit\",\"type\":\"RichText\"}],\"type\":\"PageCaption\"},{\"id\":3106911949,\"predicate\":\"pageListItemText\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageListItem\"},{\"id\":\"635466748\",\"predicate\":\"pageListItemBlocks\",\"params\":[{\"name\":\"blocks\",\"type\":\"Vector<PageBlock>\"}],\"type\":\"PageListItem\"},{\"id\":\"1577484359\",\"predicate\":\"pageListOrderedItemText\",\"params\":[{\"name\":\"num\",\"type\":\"string\"},{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageListOrderedItem\"},{\"id\":2564655414,\"predicate\":\"pageListOrderedItemBlocks\",\"params\":[{\"name\":\"num\",\"type\":\"string\"},{\"name\":\"blocks\",\"type\":\"Vector<PageBlock>\"}],\"type\":\"PageListOrderedItem\"},{\"id\":2592793057,\"predicate\":\"pageBlockOrderedList\",\"params\":[{\"name\":\"items\",\"type\":\"Vector<PageListOrderedItem>\"}],\"type\":\"PageBlock\"},{\"id\":\"1987480557\",\"predicate\":\"pageBlockDetails\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"open\",\"type\":\"flags.0?true\"},{\"name\":\"blocks\",\"type\":\"Vector<PageBlock>\"},{\"name\":\"title\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":3012615176,\"predicate\":\"pageRelatedArticle\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"webpage_id\",\"type\":\"long\"},{\"name\":\"title\",\"type\":\"flags.0?string\"},{\"name\":\"description\",\"type\":\"flags.1?string\"},{\"name\":\"photo_id\",\"type\":\"flags.2?long\"},{\"name\":\"author\",\"type\":\"flags.3?string\"},{\"name\":\"published_date\",\"type\":\"flags.4?int\"}],\"type\":\"PageRelatedArticle\"},{\"id\":\"370236054\",\"predicate\":\"pageBlockRelatedArticles\",\"params\":[{\"name\":\"title\",\"type\":\"RichText\"},{\"name\":\"articles\",\"type\":\"Vector<PageRelatedArticle>\"}],\"type\":\"PageBlock\"},{\"id\":2756656886,\"predicate\":\"pageBlockMap\",\"params\":[{\"name\":\"geo\",\"type\":\"GeoPoint\"},{\"name\":\"zoom\",\"type\":\"int\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":2556788493,\"predicate\":\"page\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"part\",\"type\":\"flags.0?true\"},{\"name\":\"rtl\",\"type\":\"flags.1?true\"},{\"name\":\"v2\",\"type\":\"flags.2?true\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"blocks\",\"type\":\"Vector<PageBlock>\"},{\"name\":\"photos\",\"type\":\"Vector<Photo>\"},{\"name\":\"documents\",\"type\":\"Vector<Document>\"},{\"name\":\"views\",\"type\":\"flags.3?int\"}],\"type\":\"Page\"},{\"id\":3684593874,\"predicate\":\"inputPrivacyKeyPhoneP2P\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":\"961092808\",\"predicate\":\"privacyKeyPhoneP2P\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":\"894777186\",\"predicate\":\"textAnchor\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"name\",\"type\":\"string\"}],\"type\":\"RichText\"},{\"id\":2349199817,\"predicate\":\"help.supportName\",\"params\":[{\"name\":\"name\",\"type\":\"string\"}],\"type\":\"help.SupportName\"},{\"id\":4088278765,\"predicate\":\"help.userInfoEmpty\",\"params\":[],\"type\":\"help.UserInfo\"},{\"id\":\"32192344\",\"predicate\":\"help.userInfo\",\"params\":[{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"Vector<MessageEntity>\"},{\"name\":\"author\",\"type\":\"string\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"help.UserInfo\"},{\"id\":4092747638,\"predicate\":\"messageActionContactSignUp\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":2896258427,\"predicate\":\"updateMessagePoll\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"poll_id\",\"type\":\"long\"},{\"name\":\"poll\",\"type\":\"flags.0?Poll\"},{\"name\":\"results\",\"type\":\"PollResults\"}],\"type\":\"Update\"},{\"id\":\"1823064809\",\"predicate\":\"pollAnswer\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"option\",\"type\":\"bytes\"}],\"type\":\"PollAnswer\"},{\"id\":2262925665,\"predicate\":\"poll\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"closed\",\"type\":\"flags.0?true\"},{\"name\":\"public_voters\",\"type\":\"flags.1?true\"},{\"name\":\"multiple_choice\",\"type\":\"flags.2?true\"},{\"name\":\"quiz\",\"type\":\"flags.3?true\"},{\"name\":\"question\",\"type\":\"string\"},{\"name\":\"answers\",\"type\":\"Vector<PollAnswer>\"},{\"name\":\"close_period\",\"type\":\"flags.4?int\"},{\"name\":\"close_date\",\"type\":\"flags.5?int\"}],\"type\":\"Poll\"},{\"id\":\"997055186\",\"predicate\":\"pollAnswerVoters\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"chosen\",\"type\":\"flags.0?true\"},{\"name\":\"correct\",\"type\":\"flags.1?true\"},{\"name\":\"option\",\"type\":\"bytes\"},{\"name\":\"voters\",\"type\":\"int\"}],\"type\":\"PollAnswerVoters\"},{\"id\":3135029667,\"predicate\":\"pollResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"min\",\"type\":\"flags.0?true\"},{\"name\":\"results\",\"type\":\"flags.1?Vector<PollAnswerVoters>\"},{\"name\":\"total_voters\",\"type\":\"flags.2?int\"},{\"name\":\"recent_voters\",\"type\":\"flags.3?Vector<int>\"},{\"name\":\"solution\",\"type\":\"flags.4?string\"},{\"name\":\"solution_entities\",\"type\":\"flags.4?Vector<MessageEntity>\"}],\"type\":\"PollResults\"},{\"id\":\"261416433\",\"predicate\":\"inputMediaPoll\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"poll\",\"type\":\"Poll\"},{\"name\":\"correct_answers\",\"type\":\"flags.0?Vector<bytes>\"},{\"name\":\"solution\",\"type\":\"flags.1?string\"},{\"name\":\"solution_entities\",\"type\":\"flags.1?Vector<MessageEntity>\"}],\"type\":\"InputMedia\"},{\"id\":\"1272375192\",\"predicate\":\"messageMediaPoll\",\"params\":[{\"name\":\"poll\",\"type\":\"Poll\"},{\"name\":\"results\",\"type\":\"PollResults\"}],\"type\":\"MessageMedia\"},{\"id\":4030849616,\"predicate\":\"chatOnlines\",\"params\":[{\"name\":\"onlines\",\"type\":\"int\"}],\"type\":\"ChatOnlines\"},{\"id\":\"1202287072\",\"predicate\":\"statsURL\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"StatsURL\"},{\"id\":3769678894,\"predicate\":\"photoStrippedSize\",\"params\":[{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"PhotoSize\"},{\"id\":\"1605510357\",\"predicate\":\"chatAdminRights\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"change_info\",\"type\":\"flags.0?true\"},{\"name\":\"post_messages\",\"type\":\"flags.1?true\"},{\"name\":\"edit_messages\",\"type\":\"flags.2?true\"},{\"name\":\"delete_messages\",\"type\":\"flags.3?true\"},{\"name\":\"ban_users\",\"type\":\"flags.4?true\"},{\"name\":\"invite_users\",\"type\":\"flags.5?true\"},{\"name\":\"pin_messages\",\"type\":\"flags.7?true\"},{\"name\":\"add_admins\",\"type\":\"flags.9?true\"},{\"name\":\"anonymous\",\"type\":\"flags.10?true\"},{\"name\":\"manage_call\",\"type\":\"flags.11?true\"},{\"name\":\"other\",\"type\":\"flags.12?true\"}],\"type\":\"ChatAdminRights\"},{\"id\":2668758040,\"predicate\":\"chatBannedRights\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"view_messages\",\"type\":\"flags.0?true\"},{\"name\":\"send_messages\",\"type\":\"flags.1?true\"},{\"name\":\"send_media\",\"type\":\"flags.2?true\"},{\"name\":\"send_stickers\",\"type\":\"flags.3?true\"},{\"name\":\"send_gifs\",\"type\":\"flags.4?true\"},{\"name\":\"send_games\",\"type\":\"flags.5?true\"},{\"name\":\"send_inline\",\"type\":\"flags.6?true\"},{\"name\":\"embed_links\",\"type\":\"flags.7?true\"},{\"name\":\"send_polls\",\"type\":\"flags.8?true\"},{\"name\":\"change_info\",\"type\":\"flags.10?true\"},{\"name\":\"invite_users\",\"type\":\"flags.15?true\"},{\"name\":\"pin_messages\",\"type\":\"flags.17?true\"},{\"name\":\"until_date\",\"type\":\"int\"}],\"type\":\"ChatBannedRights\"},{\"id\":\"1421875280\",\"predicate\":\"updateChatDefaultBannedRights\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"default_banned_rights\",\"type\":\"ChatBannedRights\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":3861952889,\"predicate\":\"inputWallPaper\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputWallPaper\"},{\"id\":\"1913199744\",\"predicate\":\"inputWallPaperSlug\",\"params\":[{\"name\":\"slug\",\"type\":\"string\"}],\"type\":\"InputWallPaper\"},{\"id\":3144345741,\"predicate\":\"channelParticipantsContacts\",\"params\":[{\"name\":\"q\",\"type\":\"string\"}],\"type\":\"ChannelParticipantsFilter\"},{\"id\":\"771095562\",\"predicate\":\"channelAdminLogEventActionDefaultBannedRights\",\"params\":[{\"name\":\"prev_banned_rights\",\"type\":\"ChatBannedRights\"},{\"name\":\"new_banned_rights\",\"type\":\"ChatBannedRights\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":2399639107,\"predicate\":\"channelAdminLogEventActionStopPoll\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"471437699\",\"predicate\":\"account.wallPapersNotModified\",\"params\":[],\"type\":\"account.WallPapers\"},{\"id\":\"1881892265\",\"predicate\":\"account.wallPapers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"wallpapers\",\"type\":\"Vector<WallPaper>\"}],\"type\":\"account.WallPapers\"},{\"id\":3737042563,\"predicate\":\"codeSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"allow_flashcall\",\"type\":\"flags.0?true\"},{\"name\":\"current_number\",\"type\":\"flags.1?true\"},{\"name\":\"allow_app_hash\",\"type\":\"flags.4?true\"}],\"type\":\"CodeSettings\"},{\"id\":\"84438264\",\"predicate\":\"wallPaperSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"blur\",\"type\":\"flags.1?true\"},{\"name\":\"motion\",\"type\":\"flags.2?true\"},{\"name\":\"background_color\",\"type\":\"flags.0?int\"},{\"name\":\"second_background_color\",\"type\":\"flags.4?int\"},{\"name\":\"intensity\",\"type\":\"flags.3?int\"},{\"name\":\"rotation\",\"type\":\"flags.4?int\"}],\"type\":\"WallPaperSettings\"},{\"id\":3762434803,\"predicate\":\"autoDownloadSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"disabled\",\"type\":\"flags.0?true\"},{\"name\":\"video_preload_large\",\"type\":\"flags.1?true\"},{\"name\":\"audio_preload_next\",\"type\":\"flags.2?true\"},{\"name\":\"phonecalls_less_data\",\"type\":\"flags.3?true\"},{\"name\":\"photo_size_max\",\"type\":\"int\"},{\"name\":\"video_size_max\",\"type\":\"int\"},{\"name\":\"file_size_max\",\"type\":\"int\"},{\"name\":\"video_upload_maxbitrate\",\"type\":\"int\"}],\"type\":\"AutoDownloadSettings\"},{\"id\":\"1674235686\",\"predicate\":\"account.autoDownloadSettings\",\"params\":[{\"name\":\"low\",\"type\":\"AutoDownloadSettings\"},{\"name\":\"medium\",\"type\":\"AutoDownloadSettings\"},{\"name\":\"high\",\"type\":\"AutoDownloadSettings\"}],\"type\":\"account.AutoDownloadSettings\"},{\"id\":3585325561,\"predicate\":\"emojiKeyword\",\"params\":[{\"name\":\"keyword\",\"type\":\"string\"},{\"name\":\"emoticons\",\"type\":\"Vector<string>\"}],\"type\":\"EmojiKeyword\"},{\"id\":\"594408994\",\"predicate\":\"emojiKeywordDeleted\",\"params\":[{\"name\":\"keyword\",\"type\":\"string\"},{\"name\":\"emoticons\",\"type\":\"Vector<string>\"}],\"type\":\"EmojiKeyword\"},{\"id\":\"1556570557\",\"predicate\":\"emojiKeywordsDifference\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"from_version\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"keywords\",\"type\":\"Vector<EmojiKeyword>\"}],\"type\":\"EmojiKeywordsDifference\"},{\"id\":2775937949,\"predicate\":\"emojiURL\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"EmojiURL\"},{\"id\":3019592545,\"predicate\":\"emojiLanguage\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"EmojiLanguage\"},{\"id\":2765966344,\"predicate\":\"inputPrivacyKeyForwards\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":\"1777096355\",\"predicate\":\"privacyKeyForwards\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":\"1461304012\",\"predicate\":\"inputPrivacyKeyProfilePhoto\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":2517966829,\"predicate\":\"privacyKeyProfilePhoto\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":3162490573,\"predicate\":\"fileLocationToBeDeprecated\",\"params\":[{\"name\":\"volume_id\",\"type\":\"long\"},{\"name\":\"local_id\",\"type\":\"int\"}],\"type\":\"FileLocation\"},{\"id\":\"1075322878\",\"predicate\":\"inputPhotoFileLocation\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"},{\"name\":\"thumb_size\",\"type\":\"string\"}],\"type\":\"InputFileLocation\"},{\"id\":3627312883,\"predicate\":\"inputPhotoLegacyFileLocation\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"},{\"name\":\"volume_id\",\"type\":\"long\"},{\"name\":\"local_id\",\"type\":\"int\"},{\"name\":\"secret\",\"type\":\"long\"}],\"type\":\"InputFileLocation\"},{\"id\":\"668375447\",\"predicate\":\"inputPeerPhotoFileLocation\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"big\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"volume_id\",\"type\":\"long\"},{\"name\":\"local_id\",\"type\":\"int\"}],\"type\":\"InputFileLocation\"},{\"id\":\"230353641\",\"predicate\":\"inputStickerSetThumb\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"volume_id\",\"type\":\"long\"},{\"name\":\"local_id\",\"type\":\"int\"}],\"type\":\"InputFileLocation\"},{\"id\":4283715173,\"predicate\":\"folder\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"autofill_new_broadcasts\",\"type\":\"flags.0?true\"},{\"name\":\"autofill_public_groups\",\"type\":\"flags.1?true\"},{\"name\":\"autofill_new_correspondents\",\"type\":\"flags.2?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.3?ChatPhoto\"}],\"type\":\"Folder\"},{\"id\":\"1908216652\",\"predicate\":\"dialogFolder\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.2?true\"},{\"name\":\"folder\",\"type\":\"Folder\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"top_message\",\"type\":\"int\"},{\"name\":\"unread_muted_peers_count\",\"type\":\"int\"},{\"name\":\"unread_unmuted_peers_count\",\"type\":\"int\"},{\"name\":\"unread_muted_messages_count\",\"type\":\"int\"},{\"name\":\"unread_unmuted_messages_count\",\"type\":\"int\"}],\"type\":\"Dialog\"},{\"id\":\"1684014375\",\"predicate\":\"inputDialogPeerFolder\",\"params\":[{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"InputDialogPeer\"},{\"id\":\"1363483106\",\"predicate\":\"dialogPeerFolder\",\"params\":[{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"DialogPeer\"},{\"id\":4224893590,\"predicate\":\"inputFolderPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"InputFolderPeer\"},{\"id\":3921323624,\"predicate\":\"folderPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"FolderPeer\"},{\"id\":\"422972864\",\"predicate\":\"updateFolderPeers\",\"params\":[{\"name\":\"folder_peers\",\"type\":\"Vector<FolderPeer>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"756118935\",\"predicate\":\"inputUserFromMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"}],\"type\":\"InputUser\"},{\"id\":\"707290417\",\"predicate\":\"inputChannelFromMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"channel_id\",\"type\":\"int\"}],\"type\":\"InputChannel\"},{\"id\":\"398123750\",\"predicate\":\"inputPeerUserFromMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"}],\"type\":\"InputPeer\"},{\"id\":2627073979,\"predicate\":\"inputPeerChannelFromMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"channel_id\",\"type\":\"int\"}],\"type\":\"InputPeer\"},{\"id\":\"55761658\",\"predicate\":\"inputPrivacyKeyPhoneNumber\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":3516589165,\"predicate\":\"privacyKeyPhoneNumber\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":2822794409,\"predicate\":\"topPeerCategoryForwardUsers\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":4226728176,\"predicate\":\"topPeerCategoryForwardChats\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":2725218331,\"predicate\":\"channelAdminLogEventActionChangeLinkedChat\",\"params\":[{\"name\":\"prev_value\",\"type\":\"int\"},{\"name\":\"new_value\",\"type\":\"int\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":3896830975,\"predicate\":\"messages.searchCounter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"inexact\",\"type\":\"flags.1?true\"},{\"name\":\"filter\",\"type\":\"MessagesFilter\"},{\"name\":\"count\",\"type\":\"int\"}],\"type\":\"messages.SearchCounter\"},{\"id\":\"280464681\",\"predicate\":\"keyboardButtonUrlAuth\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"fwd_text\",\"type\":\"flags.0?string\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"button_id\",\"type\":\"int\"}],\"type\":\"KeyboardButton\"},{\"id\":3492708308,\"predicate\":\"inputKeyboardButtonUrlAuth\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"request_write_access\",\"type\":\"flags.0?true\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"fwd_text\",\"type\":\"flags.1?string\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"bot\",\"type\":\"InputUser\"}],\"type\":\"KeyboardButton\"},{\"id\":2463316494,\"predicate\":\"urlAuthResultRequest\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"request_write_access\",\"type\":\"flags.0?true\"},{\"name\":\"bot\",\"type\":\"User\"},{\"name\":\"domain\",\"type\":\"string\"}],\"type\":\"UrlAuthResult\"},{\"id\":2408320590,\"predicate\":\"urlAuthResultAccepted\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"UrlAuthResult\"},{\"id\":2849430303,\"predicate\":\"urlAuthResultDefault\",\"params\":[],\"type\":\"UrlAuthResult\"},{\"id\":\"1283572154\",\"predicate\":\"inputPrivacyValueAllowChatParticipants\",\"params\":[{\"name\":\"chats\",\"type\":\"Vector<int>\"}],\"type\":\"InputPrivacyRule\"},{\"id\":3626197935,\"predicate\":\"inputPrivacyValueDisallowChatParticipants\",\"params\":[{\"name\":\"chats\",\"type\":\"Vector<int>\"}],\"type\":\"InputPrivacyRule\"},{\"id\":\"415136107\",\"predicate\":\"privacyValueAllowChatParticipants\",\"params\":[{\"name\":\"chats\",\"type\":\"Vector<int>\"}],\"type\":\"PrivacyRule\"},{\"id\":2897086096,\"predicate\":\"privacyValueDisallowChatParticipants\",\"params\":[{\"name\":\"chats\",\"type\":\"Vector<int>\"}],\"type\":\"PrivacyRule\"},{\"id\":2622389899,\"predicate\":\"messageEntityUnderline\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":3204879316,\"predicate\":\"messageEntityStrike\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":\"34469328\",\"predicate\":\"messageEntityBlockquote\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":\"1786671974\",\"predicate\":\"updatePeerSettings\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"settings\",\"type\":\"PeerSettings\"}],\"type\":\"Update\"},{\"id\":3216354699,\"predicate\":\"channelLocationEmpty\",\"params\":[],\"type\":\"ChannelLocation\"},{\"id\":\"547062491\",\"predicate\":\"channelLocation\",\"params\":[{\"name\":\"geo_point\",\"type\":\"GeoPoint\"},{\"name\":\"address\",\"type\":\"string\"}],\"type\":\"ChannelLocation\"},{\"id\":3393592157,\"predicate\":\"peerLocated\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"expires\",\"type\":\"int\"},{\"name\":\"distance\",\"type\":\"int\"}],\"type\":\"PeerLocated\"},{\"id\":3031420848,\"predicate\":\"updatePeerLocated\",\"params\":[{\"name\":\"peers\",\"type\":\"Vector<PeerLocated>\"}],\"type\":\"Update\"},{\"id\":\"241923758\",\"predicate\":\"channelAdminLogEventActionChangeLocation\",\"params\":[{\"name\":\"prev_value\",\"type\":\"ChannelLocation\"},{\"name\":\"new_value\",\"type\":\"ChannelLocation\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":3688169197,\"predicate\":\"inputReportReasonGeoIrrelevant\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":\"1401984889\",\"predicate\":\"channelAdminLogEventActionToggleSlowMode\",\"params\":[{\"name\":\"prev_value\",\"type\":\"int\"},{\"name\":\"new_value\",\"type\":\"int\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1148485274\",\"predicate\":\"auth.authorizationSignUpRequired\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"terms_of_service\",\"type\":\"flags.0?help.TermsOfService\"}],\"type\":\"auth.Authorization\"},{\"id\":3628142905,\"predicate\":\"payments.paymentVerificationNeeded\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"payments.PaymentResult\"},{\"id\":\"42402760\",\"predicate\":\"inputStickerSetAnimatedEmoji\",\"params\":[],\"type\":\"InputStickerSet\"},{\"id\":\"967122427\",\"predicate\":\"updateNewScheduledMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"}],\"type\":\"Update\"},{\"id\":2424728814,\"predicate\":\"updateDeleteScheduledMessages\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"}],\"type\":\"Update\"},{\"id\":3497176244,\"predicate\":\"restrictionReason\",\"params\":[{\"name\":\"platform\",\"type\":\"string\"},{\"name\":\"reason\",\"type\":\"string\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"RestrictionReason\"},{\"id\":\"1012306921\",\"predicate\":\"inputTheme\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputTheme\"},{\"id\":4119399921,\"predicate\":\"inputThemeSlug\",\"params\":[{\"name\":\"slug\",\"type\":\"string\"}],\"type\":\"InputTheme\"},{\"id\":\"42930452\",\"predicate\":\"theme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"creator\",\"type\":\"flags.0?true\"},{\"name\":\"default\",\"type\":\"flags.1?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"slug\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"document\",\"type\":\"flags.2?Document\"},{\"name\":\"settings\",\"type\":\"flags.3?ThemeSettings\"},{\"name\":\"installs_count\",\"type\":\"int\"}],\"type\":\"Theme\"},{\"id\":4095653410,\"predicate\":\"account.themesNotModified\",\"params\":[],\"type\":\"account.Themes\"},{\"id\":\"2137482273\",\"predicate\":\"account.themes\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"themes\",\"type\":\"Vector<Theme>\"}],\"type\":\"account.Themes\"},{\"id\":2182544291,\"predicate\":\"updateTheme\",\"params\":[{\"name\":\"theme\",\"type\":\"Theme\"}],\"type\":\"Update\"},{\"id\":3508640733,\"predicate\":\"inputPrivacyKeyAddedByPhone\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":\"1124062251\",\"predicate\":\"privacyKeyAddedByPhone\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":2267003193,\"predicate\":\"updateGeoLiveViewed\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"1448076945\",\"predicate\":\"updateLoginToken\",\"params\":[],\"type\":\"Update\"},{\"id\":\"1654593920\",\"predicate\":\"auth.loginToken\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"},{\"name\":\"token\",\"type\":\"bytes\"}],\"type\":\"auth.LoginToken\"},{\"id\":\"110008598\",\"predicate\":\"auth.loginTokenMigrateTo\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"token\",\"type\":\"bytes\"}],\"type\":\"auth.LoginToken\"},{\"id\":\"957176926\",\"predicate\":\"auth.loginTokenSuccess\",\"params\":[{\"name\":\"authorization\",\"type\":\"auth.Authorization\"}],\"type\":\"auth.LoginToken\"},{\"id\":\"1474462241\",\"predicate\":\"account.contentSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"sensitive_enabled\",\"type\":\"flags.0?true\"},{\"name\":\"sensitive_can_change\",\"type\":\"flags.1?true\"}],\"type\":\"account.ContentSettings\"},{\"id\":2837970629,\"predicate\":\"messages.inactiveChats\",\"params\":[{\"name\":\"dates\",\"type\":\"Vector<int>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.InactiveChats\"},{\"id\":3282117730,\"predicate\":\"baseThemeClassic\",\"params\":[],\"type\":\"BaseTheme\"},{\"id\":4225242760,\"predicate\":\"baseThemeDay\",\"params\":[],\"type\":\"BaseTheme\"},{\"id\":3081969320,\"predicate\":\"baseThemeNight\",\"params\":[],\"type\":\"BaseTheme\"},{\"id\":\"1834973166\",\"predicate\":\"baseThemeTinted\",\"params\":[],\"type\":\"BaseTheme\"},{\"id\":\"1527845466\",\"predicate\":\"baseThemeArctic\",\"params\":[],\"type\":\"BaseTheme\"},{\"id\":2217196460,\"predicate\":\"inputWallPaperNoFile\",\"params\":[],\"type\":\"InputWallPaper\"},{\"id\":2331249445,\"predicate\":\"wallPaperNoFile\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"default\",\"type\":\"flags.1?true\"},{\"name\":\"dark\",\"type\":\"flags.4?true\"},{\"name\":\"settings\",\"type\":\"flags.2?WallPaperSettings\"}],\"type\":\"WallPaper\"},{\"id\":3176168657,\"predicate\":\"inputThemeSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"base_theme\",\"type\":\"BaseTheme\"},{\"name\":\"accent_color\",\"type\":\"int\"},{\"name\":\"message_top_color\",\"type\":\"flags.0?int\"},{\"name\":\"message_bottom_color\",\"type\":\"flags.0?int\"},{\"name\":\"wallpaper\",\"type\":\"flags.1?InputWallPaper\"},{\"name\":\"wallpaper_settings\",\"type\":\"flags.1?WallPaperSettings\"}],\"type\":\"InputThemeSettings\"},{\"id\":2618595402,\"predicate\":\"themeSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"base_theme\",\"type\":\"BaseTheme\"},{\"name\":\"accent_color\",\"type\":\"int\"},{\"name\":\"message_top_color\",\"type\":\"flags.0?int\"},{\"name\":\"message_bottom_color\",\"type\":\"flags.0?int\"},{\"name\":\"wallpaper\",\"type\":\"flags.1?WallPaper\"}],\"type\":\"ThemeSettings\"},{\"id\":\"1421174295\",\"predicate\":\"webPageAttributeTheme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"documents\",\"type\":\"flags.0?Vector<Document>\"},{\"name\":\"settings\",\"type\":\"flags.1?ThemeSettings\"}],\"type\":\"WebPageAttribute\"},{\"id\":\"1123585836\",\"predicate\":\"updateMessagePollVote\",\"params\":[{\"name\":\"poll_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"options\",\"type\":\"Vector<bytes>\"}],\"type\":\"Update\"},{\"id\":2727236953,\"predicate\":\"messageUserVote\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"option\",\"type\":\"bytes\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"MessageUserVote\"},{\"id\":\"909603888\",\"predicate\":\"messageUserVoteInputOption\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"MessageUserVote\"},{\"id\":\"244310238\",\"predicate\":\"messageUserVoteMultiple\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"options\",\"type\":\"Vector<bytes>\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"MessageUserVote\"},{\"id\":\"136574537\",\"predicate\":\"messages.votesList\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"votes\",\"type\":\"Vector<MessageUserVote>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"next_offset\",\"type\":\"flags.0?string\"}],\"type\":\"messages.VotesList\"},{\"id\":3150401885,\"predicate\":\"keyboardButtonRequestPoll\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"quiz\",\"type\":\"flags.0?Bool\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":\"1981704948\",\"predicate\":\"messageEntityBankCard\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":4117234314,\"predicate\":\"bankCardOpenUrl\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"name\",\"type\":\"string\"}],\"type\":\"BankCardOpenUrl\"},{\"id\":\"1042605427\",\"predicate\":\"payments.bankCardData\",\"params\":[{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"open_urls\",\"type\":\"Vector<BankCardOpenUrl>\"}],\"type\":\"payments.BankCardData\"},{\"id\":4176226379,\"predicate\":\"peerSelfLocated\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"}],\"type\":\"PeerLocated\"},{\"id\":\"1949890536\",\"predicate\":\"dialogFilter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"contacts\",\"type\":\"flags.0?true\"},{\"name\":\"non_contacts\",\"type\":\"flags.1?true\"},{\"name\":\"groups\",\"type\":\"flags.2?true\"},{\"name\":\"broadcasts\",\"type\":\"flags.3?true\"},{\"name\":\"bots\",\"type\":\"flags.4?true\"},{\"name\":\"exclude_muted\",\"type\":\"flags.11?true\"},{\"name\":\"exclude_read\",\"type\":\"flags.12?true\"},{\"name\":\"exclude_archived\",\"type\":\"flags.13?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"emoticon\",\"type\":\"flags.25?string\"},{\"name\":\"pinned_peers\",\"type\":\"Vector<InputPeer>\"},{\"name\":\"include_peers\",\"type\":\"Vector<InputPeer>\"},{\"name\":\"exclude_peers\",\"type\":\"Vector<InputPeer>\"}],\"type\":\"DialogFilter\"},{\"id\":\"2004110666\",\"predicate\":\"dialogFilterSuggested\",\"params\":[{\"name\":\"filter\",\"type\":\"DialogFilter\"},{\"name\":\"description\",\"type\":\"string\"}],\"type\":\"DialogFilterSuggested\"},{\"id\":\"654302845\",\"predicate\":\"updateDialogFilter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"filter\",\"type\":\"flags.0?DialogFilter\"}],\"type\":\"Update\"},{\"id\":2782339333,\"predicate\":\"updateDialogFilterOrder\",\"params\":[{\"name\":\"order\",\"type\":\"Vector<int>\"}],\"type\":\"Update\"},{\"id\":\"889491791\",\"predicate\":\"updateDialogFilters\",\"params\":[],\"type\":\"Update\"},{\"id\":3057118639,\"predicate\":\"statsDateRangeDays\",\"params\":[{\"name\":\"min_date\",\"type\":\"int\"},{\"name\":\"max_date\",\"type\":\"int\"}],\"type\":\"StatsDateRangeDays\"},{\"id\":3410210014,\"predicate\":\"statsAbsValueAndPrev\",\"params\":[{\"name\":\"current\",\"type\":\"double\"},{\"name\":\"previous\",\"type\":\"double\"}],\"type\":\"StatsAbsValueAndPrev\"},{\"id\":3419287520,\"predicate\":\"statsPercentValue\",\"params\":[{\"name\":\"part\",\"type\":\"double\"},{\"name\":\"total\",\"type\":\"double\"}],\"type\":\"StatsPercentValue\"},{\"id\":\"1244130093\",\"predicate\":\"statsGraphAsync\",\"params\":[{\"name\":\"token\",\"type\":\"string\"}],\"type\":\"StatsGraph\"},{\"id\":3202127906,\"predicate\":\"statsGraphError\",\"params\":[{\"name\":\"error\",\"type\":\"string\"}],\"type\":\"StatsGraph\"},{\"id\":2393138358,\"predicate\":\"statsGraph\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"json\",\"type\":\"DataJSON\"},{\"name\":\"zoom_token\",\"type\":\"flags.0?string\"}],\"type\":\"StatsGraph\"},{\"id\":2907687357,\"predicate\":\"messageInteractionCounters\",\"params\":[{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"views\",\"type\":\"int\"},{\"name\":\"forwards\",\"type\":\"int\"}],\"type\":\"MessageInteractionCounters\"},{\"id\":3187114900,\"predicate\":\"stats.broadcastStats\",\"params\":[{\"name\":\"period\",\"type\":\"StatsDateRangeDays\"},{\"name\":\"followers\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"views_per_post\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"shares_per_post\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"enabled_notifications\",\"type\":\"StatsPercentValue\"},{\"name\":\"growth_graph\",\"type\":\"StatsGraph\"},{\"name\":\"followers_graph\",\"type\":\"StatsGraph\"},{\"name\":\"mute_graph\",\"type\":\"StatsGraph\"},{\"name\":\"top_hours_graph\",\"type\":\"StatsGraph\"},{\"name\":\"interactions_graph\",\"type\":\"StatsGraph\"},{\"name\":\"iv_interactions_graph\",\"type\":\"StatsGraph\"},{\"name\":\"views_by_source_graph\",\"type\":\"StatsGraph\"},{\"name\":\"new_followers_by_source_graph\",\"type\":\"StatsGraph\"},{\"name\":\"languages_graph\",\"type\":\"StatsGraph\"},{\"name\":\"recent_message_interactions\",\"type\":\"Vector<MessageInteractionCounters>\"}],\"type\":\"stats.BroadcastStats\"},{\"id\":3866083195,\"predicate\":\"inputMediaDice\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"}],\"type\":\"InputMedia\"},{\"id\":\"1065280907\",\"predicate\":\"messageMediaDice\",\"params\":[{\"name\":\"value\",\"type\":\"int\"},{\"name\":\"emoticon\",\"type\":\"string\"}],\"type\":\"MessageMedia\"},{\"id\":3867103758,\"predicate\":\"inputStickerSetDice\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"}],\"type\":\"InputStickerSet\"},{\"id\":2566302837,\"predicate\":\"help.promoDataEmpty\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"}],\"type\":\"help.PromoData\"},{\"id\":2352576831,\"predicate\":\"help.promoData\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"proxy\",\"type\":\"flags.0?true\"},{\"name\":\"expires\",\"type\":\"int\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"psa_type\",\"type\":\"flags.1?string\"},{\"name\":\"psa_message\",\"type\":\"flags.2?string\"}],\"type\":\"help.PromoData\"},{\"id\":3895575894,\"predicate\":\"videoSize\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"location\",\"type\":\"FileLocation\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"video_start_ts\",\"type\":\"flags.0?double\"}],\"type\":\"VideoSize\"},{\"id\":\"643940105\",\"predicate\":\"updatePhoneCallSignalingData\",\"params\":[{\"name\":\"phone_call_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"type\":\"Update\"},{\"id\":\"1634294960\",\"predicate\":\"chatInvitePeek\",\"params\":[{\"name\":\"chat\",\"type\":\"Chat\"},{\"name\":\"expires\",\"type\":\"int\"}],\"type\":\"ChatInvite\"},{\"id\":\"418631927\",\"predicate\":\"statsGroupTopPoster\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"messages\",\"type\":\"int\"},{\"name\":\"avg_chars\",\"type\":\"int\"}],\"type\":\"StatsGroupTopPoster\"},{\"id\":\"1611985938\",\"predicate\":\"statsGroupTopAdmin\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"deleted\",\"type\":\"int\"},{\"name\":\"kicked\",\"type\":\"int\"},{\"name\":\"banned\",\"type\":\"int\"}],\"type\":\"StatsGroupTopAdmin\"},{\"id\":\"831924812\",\"predicate\":\"statsGroupTopInviter\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"invitations\",\"type\":\"int\"}],\"type\":\"StatsGroupTopInviter\"},{\"id\":4018141462,\"predicate\":\"stats.megagroupStats\",\"params\":[{\"name\":\"period\",\"type\":\"StatsDateRangeDays\"},{\"name\":\"members\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"messages\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"viewers\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"posters\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"growth_graph\",\"type\":\"StatsGraph\"},{\"name\":\"members_graph\",\"type\":\"StatsGraph\"},{\"name\":\"new_members_by_source_graph\",\"type\":\"StatsGraph\"},{\"name\":\"languages_graph\",\"type\":\"StatsGraph\"},{\"name\":\"messages_graph\",\"type\":\"StatsGraph\"},{\"name\":\"actions_graph\",\"type\":\"StatsGraph\"},{\"name\":\"top_hours_graph\",\"type\":\"StatsGraph\"},{\"name\":\"weekdays_graph\",\"type\":\"StatsGraph\"},{\"name\":\"top_posters\",\"type\":\"Vector<StatsGroupTopPoster>\"},{\"name\":\"top_admins\",\"type\":\"Vector<StatsGroupTopAdmin>\"},{\"name\":\"top_inviters\",\"type\":\"Vector<StatsGroupTopInviter>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"stats.MegagroupStats\"},{\"id\":3198350372,\"predicate\":\"globalPrivacySettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"archive_and_mute_new_noncontact_peers\",\"type\":\"flags.0?Bool\"}],\"type\":\"GlobalPrivacySettings\"},{\"id\":\"1667228533\",\"predicate\":\"phoneConnectionWebrtc\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"turn\",\"type\":\"flags.0?true\"},{\"name\":\"stun\",\"type\":\"flags.1?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"ip\",\"type\":\"string\"},{\"name\":\"ipv6\",\"type\":\"string\"},{\"name\":\"port\",\"type\":\"int\"},{\"name\":\"username\",\"type\":\"string\"},{\"name\":\"password\",\"type\":\"string\"}],\"type\":\"PhoneConnection\"},{\"id\":\"1107543535\",\"predicate\":\"help.countryCode\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"country_code\",\"type\":\"string\"},{\"name\":\"prefixes\",\"type\":\"flags.0?Vector<string>\"},{\"name\":\"patterns\",\"type\":\"flags.1?Vector<string>\"}],\"type\":\"help.CountryCode\"},{\"id\":3280440867,\"predicate\":\"help.country\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"hidden\",\"type\":\"flags.0?true\"},{\"name\":\"iso2\",\"type\":\"string\"},{\"name\":\"default_name\",\"type\":\"string\"},{\"name\":\"name\",\"type\":\"flags.1?string\"},{\"name\":\"country_codes\",\"type\":\"Vector<help.CountryCode>\"}],\"type\":\"help.Country\"},{\"id\":2479628082,\"predicate\":\"help.countriesListNotModified\",\"params\":[],\"type\":\"help.CountriesList\"},{\"id\":2278585758,\"predicate\":\"help.countriesList\",\"params\":[{\"name\":\"countries\",\"type\":\"Vector<help.Country>\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"help.CountriesList\"},{\"id\":\"1163625789\",\"predicate\":\"messageViews\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"views\",\"type\":\"flags.0?int\"},{\"name\":\"forwards\",\"type\":\"flags.1?int\"},{\"name\":\"replies\",\"type\":\"flags.2?MessageReplies\"}],\"type\":\"MessageViews\"},{\"id\":\"1854571743\",\"predicate\":\"updateChannelMessageForwards\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"forwards\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"1520986705\",\"predicate\":\"photoSizeProgressive\",\"params\":[{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"location\",\"type\":\"FileLocation\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"sizes\",\"type\":\"Vector<int>\"}],\"type\":\"PhotoSize\"},{\"id\":3066361155,\"predicate\":\"messages.messageViews\",\"params\":[{\"name\":\"views\",\"type\":\"Vector<MessageViews>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.MessageViews\"},{\"id\":\"482860628\",\"predicate\":\"updateReadChannelDiscussionInbox\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"top_msg_id\",\"type\":\"int\"},{\"name\":\"read_max_id\",\"type\":\"int\"},{\"name\":\"broadcast_id\",\"type\":\"flags.0?int\"},{\"name\":\"broadcast_post\",\"type\":\"flags.0?int\"}],\"type\":\"Update\"},{\"id\":\"1178116716\",\"predicate\":\"updateReadChannelDiscussionOutbox\",\"params\":[{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"top_msg_id\",\"type\":\"int\"},{\"name\":\"read_max_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":4124938141,\"predicate\":\"messages.discussionMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"max_id\",\"type\":\"flags.0?int\"},{\"name\":\"read_inbox_max_id\",\"type\":\"flags.1?int\"},{\"name\":\"read_outbox_max_id\",\"type\":\"flags.2?int\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.DiscussionMessage\"},{\"id\":2799007587,\"predicate\":\"messageReplyHeader\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"reply_to_msg_id\",\"type\":\"int\"},{\"name\":\"reply_to_peer_id\",\"type\":\"flags.0?Peer\"},{\"name\":\"reply_to_top_id\",\"type\":\"flags.1?int\"}],\"type\":\"MessageReplyHeader\"},{\"id\":\"1093204652\",\"predicate\":\"messageReplies\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"comments\",\"type\":\"flags.0?true\"},{\"name\":\"replies\",\"type\":\"int\"},{\"name\":\"replies_pts\",\"type\":\"int\"},{\"name\":\"recent_repliers\",\"type\":\"flags.1?Vector<Peer>\"},{\"name\":\"channel_id\",\"type\":\"flags.0?int\"},{\"name\":\"max_id\",\"type\":\"flags.2?int\"},{\"name\":\"read_max_id\",\"type\":\"flags.3?int\"}],\"type\":\"MessageReplies\"},{\"id\":\"610945826\",\"predicate\":\"updatePeerBlocked\",\"params\":[{\"name\":\"peer_id\",\"type\":\"Peer\"},{\"name\":\"blocked\",\"type\":\"Bool\"}],\"type\":\"Update\"},{\"id\":3908927508,\"predicate\":\"peerBlocked\",\"params\":[{\"name\":\"peer_id\",\"type\":\"Peer\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"PeerBlocked\"},{\"id\":\"1796675352\",\"predicate\":\"updateChannelUserTyping\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"top_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"from_id\",\"type\":\"Peer\"},{\"name\":\"action\",\"type\":\"SendMessageAction\"}],\"type\":\"Update\"},{\"id\":2902071934,\"predicate\":\"inputMessageCallbackQuery\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"query_id\",\"type\":\"long\"}],\"type\":\"InputMessage\"},{\"id\":3284564331,\"predicate\":\"channelParticipantLeft\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"}],\"type\":\"ChannelParticipant\"},{\"id\":3763035371,\"predicate\":\"channelParticipantsMentions\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"q\",\"type\":\"flags.0?string\"},{\"name\":\"top_msg_id\",\"type\":\"flags.1?int\"}],\"type\":\"ChannelParticipantsFilter\"},{\"id\":3984976565,\"predicate\":\"updatePinnedMessages\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":2240317323,\"predicate\":\"updatePinnedChannelMessages\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.0?true\"},{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"464520273\",\"predicate\":\"inputMessagesFilterPinned\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":2308567701,\"predicate\":\"stats.messageStats\",\"params\":[{\"name\":\"views_graph\",\"type\":\"StatsGraph\"}],\"type\":\"stats.MessageStats\"},{\"id\":2564871831,\"predicate\":\"messageActionGeoProximityReached\",\"params\":[{\"name\":\"from_id\",\"type\":\"Peer\"},{\"name\":\"to_id\",\"type\":\"Peer\"},{\"name\":\"distance\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":3626061121,\"predicate\":\"photoPathSize\",\"params\":[{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"PhotoSize\"},{\"id\":3643548293,\"predicate\":\"speakingInGroupCallAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":\"2004925620\",\"predicate\":\"groupCallDiscarded\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"duration\",\"type\":\"int\"}],\"type\":\"GroupCall\"},{\"id\":3233940782,\"predicate\":\"groupCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"join_muted\",\"type\":\"flags.1?true\"},{\"name\":\"can_change_join_muted\",\"type\":\"flags.2?true\"},{\"name\":\"join_date_asc\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"participants_count\",\"type\":\"int\"},{\"name\":\"params\",\"type\":\"flags.0?DataJSON\"},{\"name\":\"title\",\"type\":\"flags.3?string\"},{\"name\":\"stream_dc_id\",\"type\":\"flags.4?int\"},{\"name\":\"record_start_date\",\"type\":\"flags.5?int\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"GroupCall\"},{\"id\":3635053583,\"predicate\":\"inputGroupCall\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputGroupCall\"},{\"id\":\"2047704898\",\"predicate\":\"messageActionGroupCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"duration\",\"type\":\"flags.0?int\"}],\"type\":\"MessageAction\"},{\"id\":\"1991897370\",\"predicate\":\"messageActionInviteToGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"users\",\"type\":\"Vector<int>\"}],\"type\":\"MessageAction\"},{\"id\":\"430815881\",\"predicate\":\"groupCallParticipant\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"muted\",\"type\":\"flags.0?true\"},{\"name\":\"left\",\"type\":\"flags.1?true\"},{\"name\":\"can_self_unmute\",\"type\":\"flags.2?true\"},{\"name\":\"just_joined\",\"type\":\"flags.4?true\"},{\"name\":\"versioned\",\"type\":\"flags.5?true\"},{\"name\":\"min\",\"type\":\"flags.8?true\"},{\"name\":\"muted_by_you\",\"type\":\"flags.9?true\"},{\"name\":\"volume_by_admin\",\"type\":\"flags.10?true\"},{\"name\":\"self\",\"type\":\"flags.12?true\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"active_date\",\"type\":\"flags.3?int\"},{\"name\":\"source\",\"type\":\"int\"},{\"name\":\"volume\",\"type\":\"flags.7?int\"},{\"name\":\"about\",\"type\":\"flags.11?string\"},{\"name\":\"raise_hand_rating\",\"type\":\"flags.13?long\"}],\"type\":\"GroupCallParticipant\"},{\"id\":\"321954198\",\"predicate\":\"updateChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":4075543374,\"predicate\":\"updateGroupCallParticipants\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"participants\",\"type\":\"Vector<GroupCallParticipant>\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":2757671323,\"predicate\":\"updateGroupCall\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"call\",\"type\":\"GroupCall\"}],\"type\":\"Update\"},{\"id\":2658302637,\"predicate\":\"phone.groupCall\",\"params\":[{\"name\":\"call\",\"type\":\"GroupCall\"},{\"name\":\"participants\",\"type\":\"Vector<GroupCallParticipant>\"},{\"name\":\"participants_next_offset\",\"type\":\"string\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"phone.GroupCall\"},{\"id\":4101460406,\"predicate\":\"phone.groupParticipants\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"participants\",\"type\":\"Vector<GroupCallParticipant>\"},{\"name\":\"next_offset\",\"type\":\"string\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"phone.GroupParticipants\"},{\"id\":\"813821341\",\"predicate\":\"inlineQueryPeerTypeSameBotPM\",\"params\":[],\"type\":\"InlineQueryPeerType\"},{\"id\":2201751468,\"predicate\":\"inlineQueryPeerTypePM\",\"params\":[],\"type\":\"InlineQueryPeerType\"},{\"id\":3613836554,\"predicate\":\"inlineQueryPeerTypeChat\",\"params\":[],\"type\":\"InlineQueryPeerType\"},{\"id\":\"1589952067\",\"predicate\":\"inlineQueryPeerTypeMegagroup\",\"params\":[],\"type\":\"InlineQueryPeerType\"},{\"id\":\"1664413338\",\"predicate\":\"inlineQueryPeerTypeBroadcast\",\"params\":[],\"type\":\"InlineQueryPeerType\"},{\"id\":\"589338437\",\"predicate\":\"channelAdminLogEventActionStartGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":3684667712,\"predicate\":\"channelAdminLogEventActionDiscardGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":4179895506,\"predicate\":\"channelAdminLogEventActionParticipantMute\",\"params\":[{\"name\":\"participant\",\"type\":\"GroupCallParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":3863226816,\"predicate\":\"channelAdminLogEventActionParticipantUnmute\",\"params\":[{\"name\":\"participant\",\"type\":\"GroupCallParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1456906823\",\"predicate\":\"channelAdminLogEventActionToggleGroupCallSetting\",\"params\":[{\"name\":\"join_muted\",\"type\":\"Bool\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":2328045569,\"predicate\":\"inputPaymentCredentialsGooglePay\",\"params\":[{\"name\":\"payment_token\",\"type\":\"DataJSON\"}],\"type\":\"InputPaymentCredentials\"},{\"id\":\"375566091\",\"predicate\":\"messages.historyImport\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"messages.HistoryImport\"},{\"id\":3688534598,\"predicate\":\"sendMessageHistoryImportAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":\"1578088377\",\"predicate\":\"messages.historyImportParsed\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pm\",\"type\":\"flags.0?true\"},{\"name\":\"group\",\"type\":\"flags.1?true\"},{\"name\":\"title\",\"type\":\"flags.2?string\"}],\"type\":\"messages.HistoryImportParsed\"},{\"id\":4124956391,\"predicate\":\"inputReportReasonFake\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":4019011180,\"predicate\":\"messages.affectedFoundMessages\",\"params\":[{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"}],\"type\":\"messages.AffectedFoundMessages\"},{\"id\":2853895165,\"predicate\":\"messageActionSetMessagesTTL\",\"params\":[{\"name\":\"period\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":3147544997,\"predicate\":\"updatePeerHistoryTTL\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"ttl_period\",\"type\":\"flags.0?int\"}],\"type\":\"Update\"},{\"id\":4088625183,\"predicate\":\"updateChatParticipant\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"actor_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"prev_participant\",\"type\":\"flags.0?ChatParticipant\"},{\"name\":\"new_participant\",\"type\":\"flags.1?ChatParticipant\"},{\"name\":\"invite\",\"type\":\"flags.2?ExportedChatInvite\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"2146218476\",\"predicate\":\"updateChannelParticipant\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"actor_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"prev_participant\",\"type\":\"flags.0?ChannelParticipant\"},{\"name\":\"new_participant\",\"type\":\"flags.1?ChannelParticipant\"},{\"name\":\"invite\",\"type\":\"flags.2?ExportedChatInvite\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"133777546\",\"predicate\":\"updateBotStopped\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"stopped\",\"type\":\"Bool\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":\"507405952\",\"predicate\":\"chatInviteImporter\",\"params\":[{\"name\":\"user_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"ChatInviteImporter\"},{\"id\":3183881676,\"predicate\":\"messages.exportedChatInvites\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"invites\",\"type\":\"Vector<ExportedChatInvite>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ExportedChatInvites\"},{\"id\":\"410107472\",\"predicate\":\"messages.exportedChatInvite\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ExportedChatInvite\"},{\"id\":\"572915951\",\"predicate\":\"messages.exportedChatInviteReplaced\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"},{\"name\":\"new_invite\",\"type\":\"ExportedChatInvite\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ExportedChatInvite\"},{\"id\":2176233482,\"predicate\":\"messages.chatInviteImporters\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"importers\",\"type\":\"Vector<ChatInviteImporter>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ChatInviteImporters\"},{\"id\":3755094799,\"predicate\":\"chatAdminWithInvites\",\"params\":[{\"name\":\"admin_id\",\"type\":\"int\"},{\"name\":\"invites_count\",\"type\":\"int\"},{\"name\":\"revoked_invites_count\",\"type\":\"int\"}],\"type\":\"ChatAdminWithInvites\"},{\"id\":3063640791,\"predicate\":\"messages.chatAdminsWithInvites\",\"params\":[{\"name\":\"admins\",\"type\":\"Vector<ChatAdminWithInvites>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ChatAdminsWithInvites\"},{\"id\":\"1557846647\",\"predicate\":\"channelAdminLogEventActionParticipantJoinByInvite\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1515256996\",\"predicate\":\"channelAdminLogEventActionExportedInviteDelete\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1091179342\",\"predicate\":\"channelAdminLogEventActionExportedInviteRevoke\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":3910056793,\"predicate\":\"channelAdminLogEventActionExportedInviteEdit\",\"params\":[{\"name\":\"prev_invite\",\"type\":\"ExportedChatInvite\"},{\"name\":\"new_invite\",\"type\":\"ExportedChatInvite\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1048537159\",\"predicate\":\"channelAdminLogEventActionParticipantVolume\",\"params\":[{\"name\":\"participant\",\"type\":\"GroupCallParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":\"1855199800\",\"predicate\":\"channelAdminLogEventActionChangeHistoryTTL\",\"params\":[{\"name\":\"prev_value\",\"type\":\"int\"},{\"name\":\"new_value\",\"type\":\"int\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":2723014423,\"predicate\":\"messages.checkedHistoryImportPeer\",\"params\":[{\"name\":\"confirm_text\",\"type\":\"string\"}],\"type\":\"messages.CheckedHistoryImportPeer\"},{\"id\":3148158521,\"predicate\":\"inputGroupCallStream\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"time_ms\",\"type\":\"long\"},{\"name\":\"scale\",\"type\":\"int\"}],\"type\":\"InputFileLocation\"},{\"id\":2951045695,\"predicate\":\"phone.joinAsPeers\",\"params\":[{\"name\":\"peers\",\"type\":\"Vector<Peer>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"phone.JoinAsPeers\"},{\"id\":\"541839704\",\"predicate\":\"phone.exportedGroupCallInvite\",\"params\":[{\"name\":\"link\",\"type\":\"string\"}],\"type\":\"phone.ExportedGroupCallInvite\"}],\"methods\":[{\"id\":3416209197,\"method\":\"invokeAfterMsg\",\"params\":[{\"name\":\"msg_id\",\"type\":\"long\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":\"1036301552\",\"method\":\"invokeAfterMsgs\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":2792825935,\"method\":\"auth.sendCode\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"api_id\",\"type\":\"int\"},{\"name\":\"api_hash\",\"type\":\"string\"},{\"name\":\"settings\",\"type\":\"CodeSettings\"}],\"type\":\"auth.SentCode\"},{\"id\":2163139623,\"method\":\"auth.signUp\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"}],\"type\":\"auth.Authorization\"},{\"id\":3168081281,\"method\":\"auth.signIn\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"phone_code\",\"type\":\"string\"}],\"type\":\"auth.Authorization\"},{\"id\":\"1461180992\",\"method\":\"auth.logOut\",\"params\":[],\"type\":\"Bool\"},{\"id\":2678787354,\"method\":\"auth.resetAuthorizations\",\"params\":[],\"type\":\"Bool\"},{\"id\":3854565325,\"method\":\"auth.exportAuthorization\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"}],\"type\":\"auth.ExportedAuthorization\"},{\"id\":3824129555,\"method\":\"auth.importAuthorization\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"auth.Authorization\"},{\"id\":3453233669,\"method\":\"auth.bindTempAuthKey\",\"params\":[{\"name\":\"perm_auth_key_id\",\"type\":\"long\"},{\"name\":\"nonce\",\"type\":\"long\"},{\"name\":\"expires_at\",\"type\":\"int\"},{\"name\":\"encrypted_message\",\"type\":\"bytes\"}],\"type\":\"Bool\"},{\"id\":\"1754754159\",\"method\":\"account.registerDevice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_muted\",\"type\":\"flags.0?true\"},{\"name\":\"token_type\",\"type\":\"int\"},{\"name\":\"token\",\"type\":\"string\"},{\"name\":\"app_sandbox\",\"type\":\"Bool\"},{\"name\":\"secret\",\"type\":\"bytes\"},{\"name\":\"other_uids\",\"type\":\"Vector<int>\"}],\"type\":\"Bool\"},{\"id\":\"813089983\",\"method\":\"account.unregisterDevice\",\"params\":[{\"name\":\"token_type\",\"type\":\"int\"},{\"name\":\"token\",\"type\":\"string\"},{\"name\":\"other_uids\",\"type\":\"Vector<int>\"}],\"type\":\"Bool\"},{\"id\":2227067795,\"method\":\"account.updateNotifySettings\",\"params\":[{\"name\":\"peer\",\"type\":\"InputNotifyPeer\"},{\"name\":\"settings\",\"type\":\"InputPeerNotifySettings\"}],\"type\":\"Bool\"},{\"id\":\"313765169\",\"method\":\"account.getNotifySettings\",\"params\":[{\"name\":\"peer\",\"type\":\"InputNotifyPeer\"}],\"type\":\"PeerNotifySettings\"},{\"id\":3682473799,\"method\":\"account.resetNotifySettings\",\"params\":[],\"type\":\"Bool\"},{\"id\":\"2018596725\",\"method\":\"account.updateProfile\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"first_name\",\"type\":\"flags.0?string\"},{\"name\":\"last_name\",\"type\":\"flags.1?string\"},{\"name\":\"about\",\"type\":\"flags.2?string\"}],\"type\":\"User\"},{\"id\":\"1713919532\",\"method\":\"account.updateStatus\",\"params\":[{\"name\":\"offline\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":2864387939,\"method\":\"account.getWallPapers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"account.WallPapers\"},{\"id\":3317316998,\"method\":\"account.reportPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reason\",\"type\":\"ReportReason\"},{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"227648840\",\"method\":\"users.getUsers\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<InputUser>\"}],\"type\":\"Vector<User>\"},{\"id\":3392185777,\"method\":\"users.getFullUser\",\"params\":[{\"name\":\"id\",\"type\":\"InputUser\"}],\"type\":\"UserFull\"},{\"id\":\"749357634\",\"method\":\"contacts.getContactIDs\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"Vector<int>\"},{\"id\":3299038190,\"method\":\"contacts.getStatuses\",\"params\":[],\"type\":\"Vector<ContactStatus>\"},{\"id\":3223553183,\"method\":\"contacts.getContacts\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"contacts.Contacts\"},{\"id\":\"746589157\",\"method\":\"contacts.importContacts\",\"params\":[{\"name\":\"contacts\",\"type\":\"Vector<InputContact>\"}],\"type\":\"contacts.ImportedContacts\"},{\"id\":\"157945344\",\"method\":\"contacts.deleteContacts\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<InputUser>\"}],\"type\":\"Updates\"},{\"id\":\"269745566\",\"method\":\"contacts.deleteByPhones\",\"params\":[{\"name\":\"phones\",\"type\":\"Vector<string>\"}],\"type\":\"Bool\"},{\"id\":\"1758204945\",\"method\":\"contacts.block\",\"params\":[{\"name\":\"id\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":3198573904,\"method\":\"contacts.unblock\",\"params\":[{\"name\":\"id\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":4118557967,\"method\":\"contacts.getBlocked\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"contacts.Blocked\"},{\"id\":\"1673946374\",\"method\":\"messages.getMessages\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<InputMessage>\"}],\"type\":\"messages.Messages\"},{\"id\":2699967347,\"method\":\"messages.getDialogs\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"exclude_pinned\",\"type\":\"flags.0?true\"},{\"name\":\"folder_id\",\"type\":\"flags.1?int\"},{\"name\":\"offset_date\",\"type\":\"int\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"offset_peer\",\"type\":\"InputPeer\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.Dialogs\"},{\"id\":3703276128,\"method\":\"messages.getHistory\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"offset_date\",\"type\":\"int\"},{\"name\":\"add_offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"min_id\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":\"204812012\",\"method\":\"messages.search\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"from_id\",\"type\":\"flags.0?InputPeer\"},{\"name\":\"top_msg_id\",\"type\":\"flags.1?int\"},{\"name\":\"filter\",\"type\":\"MessagesFilter\"},{\"name\":\"min_date\",\"type\":\"int\"},{\"name\":\"max_date\",\"type\":\"int\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"add_offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"min_id\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":\"238054714\",\"method\":\"messages.readHistory\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"messages.AffectedMessages\"},{\"id\":\"469850889\",\"method\":\"messages.deleteHistory\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"just_clear\",\"type\":\"flags.0?true\"},{\"name\":\"revoke\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":3851326930,\"method\":\"messages.deleteMessages\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoke\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"messages.AffectedMessages\"},{\"id\":\"94983360\",\"method\":\"messages.receivedMessages\",\"params\":[{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"Vector<ReceivedNotifyMessage>\"},{\"id\":\"1486110434\",\"method\":\"messages.setTyping\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"top_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"action\",\"type\":\"SendMessageAction\"}],\"type\":\"Bool\"},{\"id\":\"1376532592\",\"method\":\"messages.sendMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.1?true\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"background\",\"type\":\"flags.6?true\"},{\"name\":\"clear_draft\",\"type\":\"flags.7?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"},{\"name\":\"schedule_date\",\"type\":\"flags.10?int\"}],\"type\":\"Updates\"},{\"id\":\"881978281\",\"method\":\"messages.sendMedia\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"background\",\"type\":\"flags.6?true\"},{\"name\":\"clear_draft\",\"type\":\"flags.7?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"media\",\"type\":\"InputMedia\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"},{\"name\":\"schedule_date\",\"type\":\"flags.10?int\"}],\"type\":\"Updates\"},{\"id\":3657360910,\"method\":\"messages.forwardMessages\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"background\",\"type\":\"flags.6?true\"},{\"name\":\"with_my_score\",\"type\":\"flags.8?true\"},{\"name\":\"from_peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"},{\"name\":\"random_id\",\"type\":\"Vector<long>\"},{\"name\":\"to_peer\",\"type\":\"InputPeer\"},{\"name\":\"schedule_date\",\"type\":\"flags.10?int\"}],\"type\":\"Updates\"},{\"id\":3474297563,\"method\":\"messages.reportSpam\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":\"913498268\",\"method\":\"messages.getPeerSettings\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"PeerSettings\"},{\"id\":2303961934,\"method\":\"messages.report\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"},{\"name\":\"reason\",\"type\":\"ReportReason\"},{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"1013621127\",\"method\":\"messages.getChats\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"messages.Chats\"},{\"id\":\"998448230\",\"method\":\"messages.getFullChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"messages.ChatFull\"},{\"id\":3695519829,\"method\":\"messages.editChatTitle\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":3394009560,\"method\":\"messages.editChatPhoto\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"photo\",\"type\":\"InputChatPhoto\"}],\"type\":\"Updates\"},{\"id\":4188056073,\"method\":\"messages.addChatUser\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"fwd_limit\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":3308537242,\"method\":\"messages.deleteChatUser\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoke_history\",\"type\":\"flags.0?true\"},{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"Updates\"},{\"id\":\"164303470\",\"method\":\"messages.createChat\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<InputUser>\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":3990128682,\"method\":\"updates.getState\",\"params\":[],\"type\":\"updates.State\"},{\"id\":\"630429265\",\"method\":\"updates.getDifference\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_total_limit\",\"type\":\"flags.0?int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"updates.Difference\"},{\"id\":\"1926525996\",\"method\":\"photos.updateProfilePhoto\",\"params\":[{\"name\":\"id\",\"type\":\"InputPhoto\"}],\"type\":\"photos.Photo\"},{\"id\":2314407785,\"method\":\"photos.uploadProfilePhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"file\",\"type\":\"flags.0?InputFile\"},{\"name\":\"video\",\"type\":\"flags.1?InputFile\"},{\"name\":\"video_start_ts\",\"type\":\"flags.2?double\"}],\"type\":\"photos.Photo\"},{\"id\":2278522671,\"method\":\"photos.deletePhotos\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<InputPhoto>\"}],\"type\":\"Vector<long>\"},{\"id\":3003426337,\"method\":\"upload.saveFilePart\",\"params\":[{\"name\":\"file_id\",\"type\":\"long\"},{\"name\":\"file_part\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"Bool\"},{\"id\":2975505148,\"method\":\"upload.getFile\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"precise\",\"type\":\"flags.0?true\"},{\"name\":\"cdn_supported\",\"type\":\"flags.1?true\"},{\"name\":\"location\",\"type\":\"InputFileLocation\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"upload.File\"},{\"id\":3304659051,\"method\":\"help.getConfig\",\"params\":[],\"type\":\"Config\"},{\"id\":\"531836966\",\"method\":\"help.getNearestDc\",\"params\":[],\"type\":\"NearestDc\"},{\"id\":\"1378703997\",\"method\":\"help.getAppUpdate\",\"params\":[{\"name\":\"source\",\"type\":\"string\"}],\"type\":\"help.AppUpdate\"},{\"id\":\"1295590211\",\"method\":\"help.getInviteText\",\"params\":[],\"type\":\"help.InviteText\"},{\"id\":2446144168,\"method\":\"photos.getUserPhotos\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"long\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"photos.Photos\"},{\"id\":\"651135312\",\"method\":\"messages.getDhConfig\",\"params\":[{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"random_length\",\"type\":\"int\"}],\"type\":\"messages.DhConfig\"},{\"id\":4132286275,\"method\":\"messages.requestEncryption\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"random_id\",\"type\":\"int\"},{\"name\":\"g_a\",\"type\":\"bytes\"}],\"type\":\"EncryptedChat\"},{\"id\":\"1035731989\",\"method\":\"messages.acceptEncryption\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"g_b\",\"type\":\"bytes\"},{\"name\":\"key_fingerprint\",\"type\":\"long\"}],\"type\":\"EncryptedChat\"},{\"id\":4086541984,\"method\":\"messages.discardEncryption\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"delete_history\",\"type\":\"flags.0?true\"},{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":\"2031374829\",\"method\":\"messages.setEncryptedTyping\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"typing\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":\"2135648522\",\"method\":\"messages.readEncryptedHistory\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"max_date\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":\"1157265941\",\"method\":\"messages.sendEncrypted\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"type\":\"messages.SentEncryptedMessage\"},{\"id\":\"1431914525\",\"method\":\"messages.sendEncryptedFile\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"bytes\"},{\"name\":\"file\",\"type\":\"InputEncryptedFile\"}],\"type\":\"messages.SentEncryptedMessage\"},{\"id\":\"852769188\",\"method\":\"messages.sendEncryptedService\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"type\":\"messages.SentEncryptedMessage\"},{\"id\":\"1436924774\",\"method\":\"messages.receivedQueue\",\"params\":[{\"name\":\"max_qts\",\"type\":\"int\"}],\"type\":\"Vector<long>\"},{\"id\":\"1259113487\",\"method\":\"messages.reportEncryptedSpam\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"}],\"type\":\"Bool\"},{\"id\":3732629309,\"method\":\"upload.saveBigFilePart\",\"params\":[{\"name\":\"file_id\",\"type\":\"long\"},{\"name\":\"file_part\",\"type\":\"int\"},{\"name\":\"file_total_parts\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"Bool\"},{\"id\":3251461801,\"method\":\"initConnection\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"api_id\",\"type\":\"int\"},{\"name\":\"device_model\",\"type\":\"string\"},{\"name\":\"system_version\",\"type\":\"string\"},{\"name\":\"app_version\",\"type\":\"string\"},{\"name\":\"system_lang_code\",\"type\":\"string\"},{\"name\":\"lang_pack\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"proxy\",\"type\":\"flags.0?InputClientProxy\"},{\"name\":\"params\",\"type\":\"flags.1?JSONValue\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":2631862477,\"method\":\"help.getSupport\",\"params\":[],\"type\":\"help.Support\"},{\"id\":\"916930423\",\"method\":\"messages.readMessageContents\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"messages.AffectedMessages\"},{\"id\":\"655677548\",\"method\":\"account.checkUsername\",\"params\":[{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"1040964988\",\"method\":\"account.updateUsername\",\"params\":[{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"User\"},{\"id\":\"301470424\",\"method\":\"contacts.search\",\"params\":[{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"contacts.Found\"},{\"id\":3671837008,\"method\":\"account.getPrivacy\",\"params\":[{\"name\":\"key\",\"type\":\"InputPrivacyKey\"}],\"type\":\"account.PrivacyRules\"},{\"id\":3388480744,\"method\":\"account.setPrivacy\",\"params\":[{\"name\":\"key\",\"type\":\"InputPrivacyKey\"},{\"name\":\"rules\",\"type\":\"Vector<InputPrivacyRule>\"}],\"type\":\"account.PrivacyRules\"},{\"id\":\"1099779595\",\"method\":\"account.deleteAccount\",\"params\":[{\"name\":\"reason\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"150761757\",\"method\":\"account.getAccountTTL\",\"params\":[],\"type\":\"AccountDaysTTL\"},{\"id\":\"608323678\",\"method\":\"account.setAccountTTL\",\"params\":[{\"name\":\"ttl\",\"type\":\"AccountDaysTTL\"}],\"type\":\"Bool\"},{\"id\":3667594509,\"method\":\"invokeWithLayer\",\"params\":[{\"name\":\"layer\",\"type\":\"int\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":4181511075,\"method\":\"contacts.resolveUsername\",\"params\":[{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"contacts.ResolvedPeer\"},{\"id\":2186758885,\"method\":\"account.sendChangePhoneCode\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"settings\",\"type\":\"CodeSettings\"}],\"type\":\"auth.SentCode\"},{\"id\":\"1891839707\",\"method\":\"account.changePhone\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"phone_code\",\"type\":\"string\"}],\"type\":\"User\"},{\"id\":\"71126828\",\"method\":\"messages.getStickers\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.Stickers\"},{\"id\":\"479598769\",\"method\":\"messages.getAllStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.AllStickers\"},{\"id\":\"954152242\",\"method\":\"account.updateDeviceLocked\",\"params\":[{\"name\":\"period\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":\"1738800940\",\"method\":\"auth.importBotAuthorization\",\"params\":[{\"name\":\"flags\",\"type\":\"int\"},{\"name\":\"api_id\",\"type\":\"int\"},{\"name\":\"api_hash\",\"type\":\"string\"},{\"name\":\"bot_auth_token\",\"type\":\"string\"}],\"type\":\"auth.Authorization\"},{\"id\":2338894028,\"method\":\"messages.getWebPagePreview\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"}],\"type\":\"MessageMedia\"},{\"id\":3810574680,\"method\":\"account.getAuthorizations\",\"params\":[],\"type\":\"account.Authorizations\"},{\"id\":3749180348,\"method\":\"account.resetAuthorization\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"Bool\"},{\"id\":\"1418342645\",\"method\":\"account.getPassword\",\"params\":[],\"type\":\"account.Password\"},{\"id\":2631199481,\"method\":\"account.getPasswordSettings\",\"params\":[{\"name\":\"password\",\"type\":\"InputCheckPasswordSRP\"}],\"type\":\"account.PasswordSettings\"},{\"id\":2778402863,\"method\":\"account.updatePasswordSettings\",\"params\":[{\"name\":\"password\",\"type\":\"InputCheckPasswordSRP\"},{\"name\":\"new_settings\",\"type\":\"account.PasswordInputSettings\"}],\"type\":\"Bool\"},{\"id\":3515567382,\"method\":\"auth.checkPassword\",\"params\":[{\"name\":\"password\",\"type\":\"InputCheckPasswordSRP\"}],\"type\":\"auth.Authorization\"},{\"id\":3633822822,\"method\":\"auth.requestPasswordRecovery\",\"params\":[],\"type\":\"auth.PasswordRecovery\"},{\"id\":\"1319464594\",\"method\":\"auth.recoverPassword\",\"params\":[{\"name\":\"code\",\"type\":\"string\"}],\"type\":\"auth.Authorization\"},{\"id\":3214170551,\"method\":\"invokeWithoutUpdates\",\"params\":[{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":\"347716823\",\"method\":\"messages.exportChatInvite\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"legacy_revoke_permanent\",\"type\":\"flags.2?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"expire_date\",\"type\":\"flags.0?int\"},{\"name\":\"usage_limit\",\"type\":\"flags.1?int\"}],\"type\":\"ExportedChatInvite\"},{\"id\":\"1051570619\",\"method\":\"messages.checkChatInvite\",\"params\":[{\"name\":\"hash\",\"type\":\"string\"}],\"type\":\"ChatInvite\"},{\"id\":\"1817183516\",\"method\":\"messages.importChatInvite\",\"params\":[{\"name\":\"hash\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":\"639215886\",\"method\":\"messages.getStickerSet\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"}],\"type\":\"messages.StickerSet\"},{\"id\":3348096096,\"method\":\"messages.installStickerSet\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"archived\",\"type\":\"Bool\"}],\"type\":\"messages.StickerSetInstallResult\"},{\"id\":4184757726,\"method\":\"messages.uninstallStickerSet\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"}],\"type\":\"Bool\"},{\"id\":3873403768,\"method\":\"messages.startBot\",\"params\":[{\"name\":\"bot\",\"type\":\"InputUser\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"start_param\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":2417028975,\"method\":\"help.getAppChangelog\",\"params\":[{\"name\":\"prev_app_version\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":\"1468322785\",\"method\":\"messages.getMessagesViews\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"},{\"name\":\"increment\",\"type\":\"Bool\"}],\"type\":\"messages.MessageViews\"},{\"id\":3423619383,\"method\":\"channels.readHistory\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":2227305806,\"method\":\"channels.deleteMessages\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"messages.AffectedMessages\"},{\"id\":3507345179,\"method\":\"channels.deleteUserHistory\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":4261967888,\"method\":\"channels.reportSpam\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"Bool\"},{\"id\":2911672867,\"method\":\"channels.getMessages\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"id\",\"type\":\"Vector<InputMessage>\"}],\"type\":\"messages.Messages\"},{\"id\":\"306054633\",\"method\":\"channels.getParticipants\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"filter\",\"type\":\"ChannelParticipantsFilter\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"channels.ChannelParticipants\"},{\"id\":\"1416484774\",\"method\":\"channels.getParticipant\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"channels.ChannelParticipant\"},{\"id\":\"176122811\",\"method\":\"channels.getChannels\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<InputChannel>\"}],\"type\":\"messages.Chats\"},{\"id\":\"141781513\",\"method\":\"channels.getFullChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"messages.ChatFull\"},{\"id\":\"1029681423\",\"method\":\"channels.createChannel\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"broadcast\",\"type\":\"flags.0?true\"},{\"name\":\"megagroup\",\"type\":\"flags.1?true\"},{\"name\":\"for_import\",\"type\":\"flags.3?true\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"about\",\"type\":\"string\"},{\"name\":\"geo_point\",\"type\":\"flags.2?InputGeoPoint\"},{\"name\":\"address\",\"type\":\"flags.2?string\"}],\"type\":\"Updates\"},{\"id\":3543959810,\"method\":\"channels.editAdmin\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"admin_rights\",\"type\":\"ChatAdminRights\"},{\"name\":\"rank\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":\"1450044624\",\"method\":\"channels.editTitle\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":4046346185,\"method\":\"channels.editPhoto\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"photo\",\"type\":\"InputChatPhoto\"}],\"type\":\"Updates\"},{\"id\":\"283557164\",\"method\":\"channels.checkUsername\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"890549214\",\"method\":\"channels.updateUsername\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"615851205\",\"method\":\"channels.joinChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"Updates\"},{\"id\":4164332181,\"method\":\"channels.leaveChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"Updates\"},{\"id\":\"429865580\",\"method\":\"channels.inviteToChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"users\",\"type\":\"Vector<InputUser>\"}],\"type\":\"Updates\"},{\"id\":3222347747,\"method\":\"channels.deleteChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"Updates\"},{\"id\":\"51854712\",\"method\":\"updates.getChannelDifference\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"force\",\"type\":\"flags.0?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"filter\",\"type\":\"ChannelMessagesFilter\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"updates.ChannelDifference\"},{\"id\":2850463534,\"method\":\"messages.editChatAdmin\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"is_admin\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":\"363051235\",\"method\":\"messages.migrateChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":\"1271290010\",\"method\":\"messages.searchGlobal\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"folder_id\",\"type\":\"flags.0?int\"},{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"filter\",\"type\":\"MessagesFilter\"},{\"name\":\"min_date\",\"type\":\"int\"},{\"name\":\"max_date\",\"type\":\"int\"},{\"name\":\"offset_rate\",\"type\":\"int\"},{\"name\":\"offset_peer\",\"type\":\"InputPeer\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":\"2016638777\",\"method\":\"messages.reorderStickerSets\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"masks\",\"type\":\"flags.0?true\"},{\"name\":\"order\",\"type\":\"Vector<long>\"}],\"type\":\"Bool\"},{\"id\":\"864953444\",\"method\":\"messages.getDocumentByHash\",\"params\":[{\"name\":\"sha256\",\"type\":\"bytes\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"}],\"type\":\"Document\"},{\"id\":2210348370,\"method\":\"messages.getSavedGifs\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.SavedGifs\"},{\"id\":\"846868683\",\"method\":\"messages.saveGif\",\"params\":[{\"name\":\"id\",\"type\":\"InputDocument\"},{\"name\":\"unsave\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":\"1364105629\",\"method\":\"messages.getInlineBotResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"bot\",\"type\":\"InputUser\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"geo_point\",\"type\":\"flags.0?InputGeoPoint\"},{\"name\":\"query\",\"type\":\"string\"},{\"name\":\"offset\",\"type\":\"string\"}],\"type\":\"messages.BotResults\"},{\"id\":3948847622,\"method\":\"messages.setInlineBotResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"gallery\",\"type\":\"flags.0?true\"},{\"name\":\"private\",\"type\":\"flags.1?true\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"results\",\"type\":\"Vector<InputBotInlineResult>\"},{\"name\":\"cache_time\",\"type\":\"int\"},{\"name\":\"next_offset\",\"type\":\"flags.2?string\"},{\"name\":\"switch_pm\",\"type\":\"flags.3?InlineBotSwitchPM\"}],\"type\":\"Bool\"},{\"id\":\"570955184\",\"method\":\"messages.sendInlineBotResult\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"background\",\"type\":\"flags.6?true\"},{\"name\":\"clear_draft\",\"type\":\"flags.7?true\"},{\"name\":\"hide_via\",\"type\":\"flags.11?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"schedule_date\",\"type\":\"flags.10?int\"}],\"type\":\"Updates\"},{\"id\":3862932971,\"method\":\"channels.exportMessageLink\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"grouped\",\"type\":\"flags.0?true\"},{\"name\":\"thread\",\"type\":\"flags.1?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"ExportedMessageLink\"},{\"id\":\"527021574\",\"method\":\"channels.toggleSignatures\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"enabled\",\"type\":\"Bool\"}],\"type\":\"Updates\"},{\"id\":\"1056025023\",\"method\":\"auth.resendCode\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"}],\"type\":\"auth.SentCode\"},{\"id\":\"520357240\",\"method\":\"auth.cancelCode\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":4255550774,\"method\":\"messages.getMessageEditData\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"messages.MessageEditData\"},{\"id\":\"1224152952\",\"method\":\"messages.editMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"message\",\"type\":\"flags.11?string\"},{\"name\":\"media\",\"type\":\"flags.14?InputMedia\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"},{\"name\":\"schedule_date\",\"type\":\"flags.15?int\"}],\"type\":\"Updates\"},{\"id\":2203418042,\"method\":\"messages.editInlineBotMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.1?true\"},{\"name\":\"id\",\"type\":\"InputBotInlineMessageID\"},{\"name\":\"message\",\"type\":\"flags.11?string\"},{\"name\":\"media\",\"type\":\"flags.14?InputMedia\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"}],\"type\":\"Bool\"},{\"id\":2470627847,\"method\":\"messages.getBotCallbackAnswer\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"game\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"data\",\"type\":\"flags.0?bytes\"},{\"name\":\"password\",\"type\":\"flags.2?InputCheckPasswordSRP\"}],\"type\":\"messages.BotCallbackAnswer\"},{\"id\":3582923530,\"method\":\"messages.setBotCallbackAnswer\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"alert\",\"type\":\"flags.1?true\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"message\",\"type\":\"flags.0?string\"},{\"name\":\"url\",\"type\":\"flags.2?string\"},{\"name\":\"cache_time\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":3566742965,\"method\":\"contacts.getTopPeers\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"correspondents\",\"type\":\"flags.0?true\"},{\"name\":\"bots_pm\",\"type\":\"flags.1?true\"},{\"name\":\"bots_inline\",\"type\":\"flags.2?true\"},{\"name\":\"phone_calls\",\"type\":\"flags.3?true\"},{\"name\":\"forward_users\",\"type\":\"flags.4?true\"},{\"name\":\"forward_chats\",\"type\":\"flags.5?true\"},{\"name\":\"groups\",\"type\":\"flags.10?true\"},{\"name\":\"channels\",\"type\":\"flags.15?true\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"contacts.TopPeers\"},{\"id\":\"451113900\",\"method\":\"contacts.resetTopPeerRating\",\"params\":[{\"name\":\"category\",\"type\":\"TopPeerCategory\"},{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":3832593661,\"method\":\"messages.getPeerDialogs\",\"params\":[{\"name\":\"peers\",\"type\":\"Vector<InputDialogPeer>\"}],\"type\":\"messages.PeerDialogs\"},{\"id\":3157909835,\"method\":\"messages.saveDraft\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.1?true\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"}],\"type\":\"Bool\"},{\"id\":\"1782549861\",\"method\":\"messages.getAllDrafts\",\"params\":[],\"type\":\"Updates\"},{\"id\":\"766298703\",\"method\":\"messages.getFeaturedStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.FeaturedStickers\"},{\"id\":\"1527873830\",\"method\":\"messages.readFeaturedStickers\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<long>\"}],\"type\":\"Bool\"},{\"id\":\"1587647177\",\"method\":\"messages.getRecentStickers\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"attached\",\"type\":\"flags.0?true\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.RecentStickers\"},{\"id\":\"958863608\",\"method\":\"messages.saveRecentSticker\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"attached\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"InputDocument\"},{\"name\":\"unsave\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":2308530221,\"method\":\"messages.clearRecentStickers\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"attached\",\"type\":\"flags.0?true\"}],\"type\":\"Bool\"},{\"id\":\"1475442322\",\"method\":\"messages.getArchivedStickers\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"masks\",\"type\":\"flags.0?true\"},{\"name\":\"offset_id\",\"type\":\"long\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.ArchivedStickers\"},{\"id\":\"457157256\",\"method\":\"account.sendConfirmPhoneCode\",\"params\":[{\"name\":\"hash\",\"type\":\"string\"},{\"name\":\"settings\",\"type\":\"CodeSettings\"}],\"type\":\"auth.SentCode\"},{\"id\":\"1596029123\",\"method\":\"account.confirmPhone\",\"params\":[{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"phone_code\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":4172297903,\"method\":\"channels.getAdminedPublicChannels\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"by_location\",\"type\":\"flags.0?true\"},{\"name\":\"check_limit\",\"type\":\"flags.1?true\"}],\"type\":\"messages.Chats\"},{\"id\":\"1706608543\",\"method\":\"messages.getMaskStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.AllStickers\"},{\"id\":3428542412,\"method\":\"messages.getAttachedStickers\",\"params\":[{\"name\":\"media\",\"type\":\"InputStickeredMedia\"}],\"type\":\"Vector<StickerSetCovered>\"},{\"id\":2387124616,\"method\":\"auth.dropTempAuthKeys\",\"params\":[{\"name\":\"except_auth_keys\",\"type\":\"Vector<long>\"}],\"type\":\"Bool\"},{\"id\":2398678208,\"method\":\"messages.setGameScore\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"edit_message\",\"type\":\"flags.0?true\"},{\"name\":\"force\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"score\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":\"363700068\",\"method\":\"messages.setInlineGameScore\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"edit_message\",\"type\":\"flags.0?true\"},{\"name\":\"force\",\"type\":\"flags.1?true\"},{\"name\":\"id\",\"type\":\"InputBotInlineMessageID\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"score\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":3894568093,\"method\":\"messages.getGameHighScores\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"messages.HighScores\"},{\"id\":\"258170395\",\"method\":\"messages.getInlineGameHighScores\",\"params\":[{\"name\":\"id\",\"type\":\"InputBotInlineMessageID\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"messages.HighScores\"},{\"id\":\"218777796\",\"method\":\"messages.getCommonChats\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.Chats\"},{\"id\":3953659888,\"method\":\"messages.getAllChats\",\"params\":[{\"name\":\"except_ids\",\"type\":\"Vector<int>\"}],\"type\":\"messages.Chats\"},{\"id\":3961704397,\"method\":\"help.setBotUpdatesStatus\",\"params\":[{\"name\":\"pending_updates_count\",\"type\":\"int\"},{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"852135825\",\"method\":\"messages.getWebPage\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"WebPage\"},{\"id\":2805064279,\"method\":\"messages.toggleDialogPin\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputDialogPeer\"}],\"type\":\"Bool\"},{\"id\":\"991616823\",\"method\":\"messages.reorderPinnedDialogs\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"force\",\"type\":\"flags.0?true\"},{\"name\":\"folder_id\",\"type\":\"int\"},{\"name\":\"order\",\"type\":\"Vector<InputDialogPeer>\"}],\"type\":\"Bool\"},{\"id\":3602468338,\"method\":\"messages.getPinnedDialogs\",\"params\":[{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"messages.PeerDialogs\"},{\"id\":2854709741,\"method\":\"bots.sendCustomRequest\",\"params\":[{\"name\":\"custom_method\",\"type\":\"string\"},{\"name\":\"params\",\"type\":\"DataJSON\"}],\"type\":\"DataJSON\"},{\"id\":3860938573,\"method\":\"bots.answerWebhookJSONQuery\",\"params\":[{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"DataJSON\"}],\"type\":\"Bool\"},{\"id\":\"619086221\",\"method\":\"upload.getWebFile\",\"params\":[{\"name\":\"location\",\"type\":\"InputWebFileLocation\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"upload.WebFile\"},{\"id\":2582681413,\"method\":\"payments.getPaymentForm\",\"params\":[{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"payments.PaymentForm\"},{\"id\":2693966208,\"method\":\"payments.getPaymentReceipt\",\"params\":[{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"payments.PaymentReceipt\"},{\"id\":\"1997180532\",\"method\":\"payments.validateRequestedInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"save\",\"type\":\"flags.0?true\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"info\",\"type\":\"PaymentRequestedInfo\"}],\"type\":\"payments.ValidatedRequestedInfo\"},{\"id\":\"730364339\",\"method\":\"payments.sendPaymentForm\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"requested_info_id\",\"type\":\"flags.0?string\"},{\"name\":\"shipping_option_id\",\"type\":\"flags.1?string\"},{\"name\":\"credentials\",\"type\":\"InputPaymentCredentials\"}],\"type\":\"payments.PaymentResult\"},{\"id\":\"1151208273\",\"method\":\"account.getTmpPassword\",\"params\":[{\"name\":\"password\",\"type\":\"InputCheckPasswordSRP\"},{\"name\":\"period\",\"type\":\"int\"}],\"type\":\"account.TmpPassword\"},{\"id\":\"578650699\",\"method\":\"payments.getSavedInfo\",\"params\":[],\"type\":\"payments.SavedInfo\"},{\"id\":3627905217,\"method\":\"payments.clearSavedInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"credentials\",\"type\":\"flags.0?true\"},{\"name\":\"info\",\"type\":\"flags.1?true\"}],\"type\":\"Bool\"},{\"id\":3858133754,\"method\":\"messages.setBotShippingResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"error\",\"type\":\"flags.0?string\"},{\"name\":\"shipping_options\",\"type\":\"flags.1?Vector<ShippingOption>\"}],\"type\":\"Bool\"},{\"id\":\"163765653\",\"method\":\"messages.setBotPrecheckoutResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"success\",\"type\":\"flags.1?true\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"error\",\"type\":\"flags.0?string\"}],\"type\":\"Bool\"},{\"id\":4043532160,\"method\":\"stickers.createStickerSet\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"masks\",\"type\":\"flags.0?true\"},{\"name\":\"animated\",\"type\":\"flags.1?true\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"short_name\",\"type\":\"string\"},{\"name\":\"thumb\",\"type\":\"flags.2?InputDocument\"},{\"name\":\"stickers\",\"type\":\"Vector<InputStickerSetItem>\"}],\"type\":\"messages.StickerSet\"},{\"id\":4151709521,\"method\":\"stickers.removeStickerFromSet\",\"params\":[{\"name\":\"sticker\",\"type\":\"InputDocument\"}],\"type\":\"messages.StickerSet\"},{\"id\":4290172106,\"method\":\"stickers.changeStickerPosition\",\"params\":[{\"name\":\"sticker\",\"type\":\"InputDocument\"},{\"name\":\"position\",\"type\":\"int\"}],\"type\":\"messages.StickerSet\"},{\"id\":2253651646,\"method\":\"stickers.addStickerToSet\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"sticker\",\"type\":\"InputStickerSetItem\"}],\"type\":\"messages.StickerSet\"},{\"id\":\"1369162417\",\"method\":\"messages.uploadMedia\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"media\",\"type\":\"InputMedia\"}],\"type\":\"MessageMedia\"},{\"id\":\"1430593449\",\"method\":\"phone.getCallConfig\",\"params\":[],\"type\":\"DataJSON\"},{\"id\":\"1124046573\",\"method\":\"phone.requestCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.0?true\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"random_id\",\"type\":\"int\"},{\"name\":\"g_a_hash\",\"type\":\"bytes\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"}],\"type\":\"phone.PhoneCall\"},{\"id\":\"1003664544\",\"method\":\"phone.acceptCall\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"g_b\",\"type\":\"bytes\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"}],\"type\":\"phone.PhoneCall\"},{\"id\":\"788404002\",\"method\":\"phone.confirmCall\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"g_a\",\"type\":\"bytes\"},{\"name\":\"key_fingerprint\",\"type\":\"long\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"}],\"type\":\"phone.PhoneCall\"},{\"id\":\"399855457\",\"method\":\"phone.receivedCall\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPhoneCall\"}],\"type\":\"Bool\"},{\"id\":2999697856,\"method\":\"phone.discardCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"duration\",\"type\":\"int\"},{\"name\":\"reason\",\"type\":\"PhoneCallDiscardReason\"},{\"name\":\"connection_id\",\"type\":\"long\"}],\"type\":\"Updates\"},{\"id\":\"1508562471\",\"method\":\"phone.setCallRating\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"user_initiative\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"rating\",\"type\":\"int\"},{\"name\":\"comment\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":\"662363518\",\"method\":\"phone.saveCallDebug\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"debug\",\"type\":\"DataJSON\"}],\"type\":\"Bool\"},{\"id\":\"536919235\",\"method\":\"upload.getCdnFile\",\"params\":[{\"name\":\"file_token\",\"type\":\"bytes\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"upload.CdnFile\"},{\"id\":2603046056,\"method\":\"upload.reuploadCdnFile\",\"params\":[{\"name\":\"file_token\",\"type\":\"bytes\"},{\"name\":\"request_token\",\"type\":\"bytes\"}],\"type\":\"Vector<FileHash>\"},{\"id\":\"1375900482\",\"method\":\"help.getCdnConfig\",\"params\":[],\"type\":\"CdnConfig\"},{\"id\":4075959050,\"method\":\"langpack.getLangPack\",\"params\":[{\"name\":\"lang_pack\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"LangPackDifference\"},{\"id\":4025104387,\"method\":\"langpack.getStrings\",\"params\":[{\"name\":\"lang_pack\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"keys\",\"type\":\"Vector<string>\"}],\"type\":\"Vector<LangPackString>\"},{\"id\":3449309861,\"method\":\"langpack.getDifference\",\"params\":[{\"name\":\"lang_pack\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"from_version\",\"type\":\"int\"}],\"type\":\"LangPackDifference\"},{\"id\":\"1120311183\",\"method\":\"langpack.getLanguages\",\"params\":[{\"name\":\"lang_pack\",\"type\":\"string\"}],\"type\":\"Vector<LangPackLanguage>\"},{\"id\":\"1920559378\",\"method\":\"channels.editBanned\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"banned_rights\",\"type\":\"ChatBannedRights\"}],\"type\":\"Updates\"},{\"id\":\"870184064\",\"method\":\"channels.getAdminLog\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"events_filter\",\"type\":\"flags.0?ChannelAdminLogEventsFilter\"},{\"name\":\"admins\",\"type\":\"flags.1?Vector<InputUser>\"},{\"name\":\"max_id\",\"type\":\"long\"},{\"name\":\"min_id\",\"type\":\"long\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"channels.AdminLogResults\"},{\"id\":\"1302676017\",\"method\":\"upload.getCdnFileHashes\",\"params\":[{\"name\":\"file_token\",\"type\":\"bytes\"},{\"name\":\"offset\",\"type\":\"int\"}],\"type\":\"Vector<FileHash>\"},{\"id\":3380473888,\"method\":\"messages.sendScreenshotNotification\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reply_to_msg_id\",\"type\":\"int\"},{\"name\":\"random_id\",\"type\":\"long\"}],\"type\":\"Updates\"},{\"id\":3935085817,\"method\":\"channels.setStickers\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"}],\"type\":\"Bool\"},{\"id\":\"567151374\",\"method\":\"messages.getFavedStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.FavedStickers\"},{\"id\":3120547163,\"method\":\"messages.faveSticker\",\"params\":[{\"name\":\"id\",\"type\":\"InputDocument\"},{\"name\":\"unfave\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":3937786936,\"method\":\"channels.readMessageContents\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"Bool\"},{\"id\":2274703345,\"method\":\"contacts.resetSaved\",\"params\":[],\"type\":\"Bool\"},{\"id\":\"1180140658\",\"method\":\"messages.getUnreadMentions\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"add_offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"min_id\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":2939592002,\"method\":\"channels.deleteHistory\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":\"1036054804\",\"method\":\"help.getRecentMeUrls\",\"params\":[{\"name\":\"referer\",\"type\":\"string\"}],\"type\":\"help.RecentMeUrls\"},{\"id\":3938171212,\"method\":\"channels.togglePreHistoryHidden\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"enabled\",\"type\":\"Bool\"}],\"type\":\"Updates\"},{\"id\":\"251759059\",\"method\":\"messages.readMentions\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":3150207753,\"method\":\"messages.getRecentLocations\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":3422621899,\"method\":\"messages.sendMultiMedia\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"background\",\"type\":\"flags.6?true\"},{\"name\":\"clear_draft\",\"type\":\"flags.7?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"multi_media\",\"type\":\"Vector<InputSingleMedia>\"},{\"name\":\"schedule_date\",\"type\":\"flags.10?int\"}],\"type\":\"Updates\"},{\"id\":\"1347929239\",\"method\":\"messages.uploadEncryptedFile\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"file\",\"type\":\"InputEncryptedFile\"}],\"type\":\"EncryptedFile\"},{\"id\":\"405695855\",\"method\":\"account.getWebAuthorizations\",\"params\":[],\"type\":\"account.WebAuthorizations\"},{\"id\":\"755087855\",\"method\":\"account.resetWebAuthorization\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"Bool\"},{\"id\":\"1747789204\",\"method\":\"account.resetWebAuthorizations\",\"params\":[],\"type\":\"Bool\"},{\"id\":3266826379,\"method\":\"messages.searchStickerSets\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"exclude_featured\",\"type\":\"flags.0?true\"},{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.FoundStickerSets\"},{\"id\":3338819889,\"method\":\"upload.getFileHashes\",\"params\":[{\"name\":\"location\",\"type\":\"InputFileLocation\"},{\"name\":\"offset\",\"type\":\"int\"}],\"type\":\"Vector<FileHash>\"},{\"id\":\"749019089\",\"method\":\"help.getTermsOfServiceUpdate\",\"params\":[],\"type\":\"help.TermsOfServiceUpdate\"},{\"id\":4000511898,\"method\":\"help.acceptTermsOfService\",\"params\":[{\"name\":\"id\",\"type\":\"DataJSON\"}],\"type\":\"Bool\"},{\"id\":2995305597,\"method\":\"account.getAllSecureValues\",\"params\":[],\"type\":\"Vector<SecureValue>\"},{\"id\":\"1936088002\",\"method\":\"account.getSecureValue\",\"params\":[{\"name\":\"types\",\"type\":\"Vector<SecureValueType>\"}],\"type\":\"Vector<SecureValue>\"},{\"id\":2308956957,\"method\":\"account.saveSecureValue\",\"params\":[{\"name\":\"value\",\"type\":\"InputSecureValue\"},{\"name\":\"secure_secret_id\",\"type\":\"long\"}],\"type\":\"SecureValue\"},{\"id\":3095444555,\"method\":\"account.deleteSecureValue\",\"params\":[{\"name\":\"types\",\"type\":\"Vector<SecureValueType>\"}],\"type\":\"Bool\"},{\"id\":2429064373,\"method\":\"users.setSecureValueErrors\",\"params\":[{\"name\":\"id\",\"type\":\"InputUser\"},{\"name\":\"errors\",\"type\":\"Vector<SecureValueError>\"}],\"type\":\"Bool\"},{\"id\":3094063329,\"method\":\"account.getAuthorizationForm\",\"params\":[{\"name\":\"bot_id\",\"type\":\"int\"},{\"name\":\"scope\",\"type\":\"string\"},{\"name\":\"public_key\",\"type\":\"string\"}],\"type\":\"account.AuthorizationForm\"},{\"id\":3875699860,\"method\":\"account.acceptAuthorization\",\"params\":[{\"name\":\"bot_id\",\"type\":\"int\"},{\"name\":\"scope\",\"type\":\"string\"},{\"name\":\"public_key\",\"type\":\"string\"},{\"name\":\"value_hashes\",\"type\":\"Vector<SecureValueHash>\"},{\"name\":\"credentials\",\"type\":\"SecureCredentialsEncrypted\"}],\"type\":\"Bool\"},{\"id\":2778945273,\"method\":\"account.sendVerifyPhoneCode\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"settings\",\"type\":\"CodeSettings\"}],\"type\":\"auth.SentCode\"},{\"id\":\"1305716726\",\"method\":\"account.verifyPhone\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"phone_code\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"1880182943\",\"method\":\"account.sendVerifyEmailCode\",\"params\":[{\"name\":\"email\",\"type\":\"string\"}],\"type\":\"account.SentEmailCode\"},{\"id\":3971627483,\"method\":\"account.verifyEmail\",\"params\":[{\"name\":\"email\",\"type\":\"string\"},{\"name\":\"code\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"1072547679\",\"method\":\"help.getDeepLinkInfo\",\"params\":[{\"name\":\"path\",\"type\":\"string\"}],\"type\":\"help.DeepLinkInfo\"},{\"id\":2196890527,\"method\":\"contacts.getSaved\",\"params\":[],\"type\":\"Vector<SavedContact>\"},{\"id\":2202135744,\"method\":\"channels.getLeftChannels\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"}],\"type\":\"messages.Chats\"},{\"id\":4032514052,\"method\":\"account.initTakeoutSession\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"contacts\",\"type\":\"flags.0?true\"},{\"name\":\"message_users\",\"type\":\"flags.1?true\"},{\"name\":\"message_chats\",\"type\":\"flags.2?true\"},{\"name\":\"message_megagroups\",\"type\":\"flags.3?true\"},{\"name\":\"message_channels\",\"type\":\"flags.4?true\"},{\"name\":\"files\",\"type\":\"flags.5?true\"},{\"name\":\"file_max_size\",\"type\":\"flags.5?int\"}],\"type\":\"account.Takeout\"},{\"id\":\"489050862\",\"method\":\"account.finishTakeoutSession\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"success\",\"type\":\"flags.0?true\"}],\"type\":\"Bool\"},{\"id\":\"486505992\",\"method\":\"messages.getSplitRanges\",\"params\":[],\"type\":\"Vector<MessageRange>\"},{\"id\":\"911373810\",\"method\":\"invokeWithMessagesRange\",\"params\":[{\"name\":\"range\",\"type\":\"MessageRange\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":2896821550,\"method\":\"invokeWithTakeout\",\"params\":[{\"name\":\"takeout_id\",\"type\":\"long\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":3263617423,\"method\":\"messages.markDialogUnread\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"unread\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputDialogPeer\"}],\"type\":\"Bool\"},{\"id\":\"585256482\",\"method\":\"messages.getDialogUnreadMarks\",\"params\":[],\"type\":\"Vector<DialogPeer>\"},{\"id\":2232729050,\"method\":\"contacts.toggleTopPeers\",\"params\":[{\"name\":\"enabled\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":\"2119757468\",\"method\":\"messages.clearAllDrafts\",\"params\":[],\"type\":\"Bool\"},{\"id\":2559656208,\"method\":\"help.getAppConfig\",\"params\":[],\"type\":\"JSONValue\"},{\"id\":\"1862465352\",\"method\":\"help.saveAppLog\",\"params\":[{\"name\":\"events\",\"type\":\"Vector<InputAppEvent>\"}],\"type\":\"Bool\"},{\"id\":3328290056,\"method\":\"help.getPassportConfig\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"help.PassportConfig\"},{\"id\":\"1784243458\",\"method\":\"langpack.getLanguage\",\"params\":[{\"name\":\"lang_pack\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"LangPackLanguage\"},{\"id\":3534419948,\"method\":\"messages.updatePinnedMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.0?true\"},{\"name\":\"unpin\",\"type\":\"flags.1?true\"},{\"name\":\"pm_oneside\",\"type\":\"flags.2?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":2413762848,\"method\":\"account.confirmPasswordEmail\",\"params\":[{\"name\":\"code\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"2055154197\",\"method\":\"account.resendPasswordEmail\",\"params\":[],\"type\":\"Bool\"},{\"id\":3251361206,\"method\":\"account.cancelPasswordEmail\",\"params\":[],\"type\":\"Bool\"},{\"id\":3546343212,\"method\":\"help.getSupportName\",\"params\":[],\"type\":\"help.SupportName\"},{\"id\":\"59377875\",\"method\":\"help.getUserInfo\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"help.UserInfo\"},{\"id\":\"1723407216\",\"method\":\"help.editUserInfo\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"Vector<MessageEntity>\"}],\"type\":\"help.UserInfo\"},{\"id\":2668087080,\"method\":\"account.getContactSignUpNotification\",\"params\":[],\"type\":\"Bool\"},{\"id\":3488890721,\"method\":\"account.setContactSignUpNotification\",\"params\":[{\"name\":\"silent\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":\"1398240377\",\"method\":\"account.getNotifyExceptions\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"compare_sound\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"flags.0?InputNotifyPeer\"}],\"type\":\"Updates\"},{\"id\":\"283795844\",\"method\":\"messages.sendVote\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"options\",\"type\":\"Vector<bytes>\"}],\"type\":\"Updates\"},{\"id\":\"1941660731\",\"method\":\"messages.getPollResults\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":\"1848369232\",\"method\":\"messages.getOnlines\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"ChatOnlines\"},{\"id\":2167155430,\"method\":\"messages.getStatsURL\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"dark\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"params\",\"type\":\"string\"}],\"type\":\"StatsURL\"},{\"id\":3740665751,\"method\":\"messages.editChatAbout\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"about\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":2777049921,\"method\":\"messages.editChatDefaultBannedRights\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"banned_rights\",\"type\":\"ChatBannedRights\"}],\"type\":\"Updates\"},{\"id\":4237155306,\"method\":\"account.getWallPaper\",\"params\":[{\"name\":\"wallpaper\",\"type\":\"InputWallPaper\"}],\"type\":\"WallPaper\"},{\"id\":3716494945,\"method\":\"account.uploadWallPaper\",\"params\":[{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"settings\",\"type\":\"WallPaperSettings\"}],\"type\":\"WallPaper\"},{\"id\":\"1817860919\",\"method\":\"account.saveWallPaper\",\"params\":[{\"name\":\"wallpaper\",\"type\":\"InputWallPaper\"},{\"name\":\"unsave\",\"type\":\"Bool\"},{\"name\":\"settings\",\"type\":\"WallPaperSettings\"}],\"type\":\"Bool\"},{\"id\":4276967273,\"method\":\"account.installWallPaper\",\"params\":[{\"name\":\"wallpaper\",\"type\":\"InputWallPaper\"},{\"name\":\"settings\",\"type\":\"WallPaperSettings\"}],\"type\":\"Bool\"},{\"id\":3141244932,\"method\":\"account.resetWallPapers\",\"params\":[],\"type\":\"Bool\"},{\"id\":\"1457130303\",\"method\":\"account.getAutoDownloadSettings\",\"params\":[],\"type\":\"account.AutoDownloadSettings\"},{\"id\":\"1995661875\",\"method\":\"account.saveAutoDownloadSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"low\",\"type\":\"flags.0?true\"},{\"name\":\"high\",\"type\":\"flags.1?true\"},{\"name\":\"settings\",\"type\":\"AutoDownloadSettings\"}],\"type\":\"Bool\"},{\"id\":\"899735650\",\"method\":\"messages.getEmojiKeywords\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"EmojiKeywordsDifference\"},{\"id\":\"352892591\",\"method\":\"messages.getEmojiKeywordsDifference\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"from_version\",\"type\":\"int\"}],\"type\":\"EmojiKeywordsDifference\"},{\"id\":\"1318675378\",\"method\":\"messages.getEmojiKeywordsLanguages\",\"params\":[{\"name\":\"lang_codes\",\"type\":\"Vector<string>\"}],\"type\":\"Vector<EmojiLanguage>\"},{\"id\":3585149990,\"method\":\"messages.getEmojiURL\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"EmojiURL\"},{\"id\":\"1749536939\",\"method\":\"folders.editPeerFolders\",\"params\":[{\"name\":\"folder_peers\",\"type\":\"Vector<InputFolderPeer>\"}],\"type\":\"Updates\"},{\"id\":\"472471681\",\"method\":\"folders.deleteFolder\",\"params\":[{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":\"1932455680\",\"method\":\"messages.getSearchCounters\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"filters\",\"type\":\"Vector<MessagesFilter>\"}],\"type\":\"Vector<messages.SearchCounter>\"},{\"id\":4124758904,\"method\":\"channels.getGroupsForDiscussion\",\"params\":[],\"type\":\"messages.Chats\"},{\"id\":\"1079520178\",\"method\":\"channels.setDiscussionGroup\",\"params\":[{\"name\":\"broadcast\",\"type\":\"InputChannel\"},{\"name\":\"group\",\"type\":\"InputChannel\"}],\"type\":\"Bool\"},{\"id\":\"428848198\",\"method\":\"messages.requestUrlAuth\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"flags.1?InputPeer\"},{\"name\":\"msg_id\",\"type\":\"flags.1?int\"},{\"name\":\"button_id\",\"type\":\"flags.1?int\"},{\"name\":\"url\",\"type\":\"flags.2?string\"}],\"type\":\"UrlAuthResult\"},{\"id\":2972479781,\"method\":\"messages.acceptUrlAuth\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"write_allowed\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"flags.1?InputPeer\"},{\"name\":\"msg_id\",\"type\":\"flags.1?int\"},{\"name\":\"button_id\",\"type\":\"flags.1?int\"},{\"name\":\"url\",\"type\":\"flags.2?string\"}],\"type\":\"UrlAuthResult\"},{\"id\":\"1336717624\",\"method\":\"messages.hidePeerSettingsBar\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":3908330448,\"method\":\"contacts.addContact\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"add_phone_privacy_exception\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"InputUser\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"phone\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":4164002319,\"method\":\"contacts.acceptContact\",\"params\":[{\"name\":\"id\",\"type\":\"InputUser\"}],\"type\":\"Updates\"},{\"id\":2402864415,\"method\":\"channels.editCreator\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"password\",\"type\":\"InputCheckPasswordSRP\"}],\"type\":\"Updates\"},{\"id\":3544759364,\"method\":\"contacts.getLocated\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"background\",\"type\":\"flags.1?true\"},{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"self_expires\",\"type\":\"flags.0?int\"}],\"type\":\"Updates\"},{\"id\":\"1491484525\",\"method\":\"channels.editLocation\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"address\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":3990134512,\"method\":\"channels.toggleSlowMode\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"seconds\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":3804391515,\"method\":\"messages.getScheduledHistory\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":3183150180,\"method\":\"messages.getScheduledMessages\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"messages.Messages\"},{\"id\":3174597898,\"method\":\"messages.sendScheduledMessages\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"Updates\"},{\"id\":\"1504586518\",\"method\":\"messages.deleteScheduledMessages\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"Updates\"},{\"id\":\"473805619\",\"method\":\"account.uploadTheme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"thumb\",\"type\":\"flags.0?InputFile\"},{\"name\":\"file_name\",\"type\":\"string\"},{\"name\":\"mime_type\",\"type\":\"string\"}],\"type\":\"Document\"},{\"id\":2217919007,\"method\":\"account.createTheme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"slug\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"document\",\"type\":\"flags.2?InputDocument\"},{\"name\":\"settings\",\"type\":\"flags.3?InputThemeSettings\"}],\"type\":\"Theme\"},{\"id\":\"1555261397\",\"method\":\"account.updateTheme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"format\",\"type\":\"string\"},{\"name\":\"theme\",\"type\":\"InputTheme\"},{\"name\":\"slug\",\"type\":\"flags.0?string\"},{\"name\":\"title\",\"type\":\"flags.1?string\"},{\"name\":\"document\",\"type\":\"flags.2?InputDocument\"},{\"name\":\"settings\",\"type\":\"flags.3?InputThemeSettings\"}],\"type\":\"Theme\"},{\"id\":4065792108,\"method\":\"account.saveTheme\",\"params\":[{\"name\":\"theme\",\"type\":\"InputTheme\"},{\"name\":\"unsave\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":\"2061776695\",\"method\":\"account.installTheme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"dark\",\"type\":\"flags.0?true\"},{\"name\":\"format\",\"type\":\"flags.1?string\"},{\"name\":\"theme\",\"type\":\"flags.1?InputTheme\"}],\"type\":\"Bool\"},{\"id\":2375906347,\"method\":\"account.getTheme\",\"params\":[{\"name\":\"format\",\"type\":\"string\"},{\"name\":\"theme\",\"type\":\"InputTheme\"},{\"name\":\"document_id\",\"type\":\"long\"}],\"type\":\"Theme\"},{\"id\":\"676939512\",\"method\":\"account.getThemes\",\"params\":[{\"name\":\"format\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"account.Themes\"},{\"id\":2981369111,\"method\":\"auth.exportLoginToken\",\"params\":[{\"name\":\"api_id\",\"type\":\"int\"},{\"name\":\"api_hash\",\"type\":\"string\"},{\"name\":\"except_ids\",\"type\":\"Vector<int>\"}],\"type\":\"auth.LoginToken\"},{\"id\":2511101156,\"method\":\"auth.importLoginToken\",\"params\":[{\"name\":\"token\",\"type\":\"bytes\"}],\"type\":\"auth.LoginToken\"},{\"id\":3902057805,\"method\":\"auth.acceptLoginToken\",\"params\":[{\"name\":\"token\",\"type\":\"bytes\"}],\"type\":\"Authorization\"},{\"id\":3044323691,\"method\":\"account.setContentSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"sensitive_enabled\",\"type\":\"flags.0?true\"}],\"type\":\"Bool\"},{\"id\":2342210990,\"method\":\"account.getContentSettings\",\"params\":[],\"type\":\"account.ContentSettings\"},{\"id\":\"300429806\",\"method\":\"channels.getInactiveChannels\",\"params\":[],\"type\":\"messages.InactiveChats\"},{\"id\":\"1705865692\",\"method\":\"account.getMultiWallPapers\",\"params\":[{\"name\":\"wallpapers\",\"type\":\"Vector<InputWallPaper>\"}],\"type\":\"Vector<WallPaper>\"},{\"id\":3094231054,\"method\":\"messages.getPollVotes\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"option\",\"type\":\"flags.0?bytes\"},{\"name\":\"offset\",\"type\":\"flags.1?string\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.VotesList\"},{\"id\":3037016042,\"method\":\"messages.toggleStickerSets\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"uninstall\",\"type\":\"flags.0?true\"},{\"name\":\"archive\",\"type\":\"flags.1?true\"},{\"name\":\"unarchive\",\"type\":\"flags.2?true\"},{\"name\":\"stickersets\",\"type\":\"Vector<InputStickerSet>\"}],\"type\":\"Bool\"},{\"id\":\"779736953\",\"method\":\"payments.getBankCardData\",\"params\":[{\"name\":\"number\",\"type\":\"string\"}],\"type\":\"payments.BankCardData\"},{\"id\":4053719405,\"method\":\"messages.getDialogFilters\",\"params\":[],\"type\":\"Vector<DialogFilter>\"},{\"id\":2728186924,\"method\":\"messages.getSuggestedDialogFilters\",\"params\":[],\"type\":\"Vector<DialogFilterSuggested>\"},{\"id\":\"450142282\",\"method\":\"messages.updateDialogFilter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"filter\",\"type\":\"flags.0?DialogFilter\"}],\"type\":\"Bool\"},{\"id\":3311649252,\"method\":\"messages.updateDialogFiltersOrder\",\"params\":[{\"name\":\"order\",\"type\":\"Vector<int>\"}],\"type\":\"Bool\"},{\"id\":2873246746,\"method\":\"stats.getBroadcastStats\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"dark\",\"type\":\"flags.0?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"stats.BroadcastStats\"},{\"id\":\"1646092192\",\"method\":\"stats.loadAsyncGraph\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"token\",\"type\":\"string\"},{\"name\":\"x\",\"type\":\"flags.0?long\"}],\"type\":\"StatsGraph\"},{\"id\":2587250224,\"method\":\"stickers.setStickerSetThumb\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"thumb\",\"type\":\"InputDocument\"}],\"type\":\"messages.StickerSet\"},{\"id\":2153596662,\"method\":\"bots.setBotCommands\",\"params\":[{\"name\":\"commands\",\"type\":\"Vector<BotCommand>\"}],\"type\":\"Bool\"},{\"id\":\"1608974939\",\"method\":\"messages.getOldFeaturedStickers\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.FeaturedStickers\"},{\"id\":3231151137,\"method\":\"help.getPromoData\",\"params\":[],\"type\":\"help.PromoData\"},{\"id\":\"505748629\",\"method\":\"help.hidePromoData\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":4286223235,\"method\":\"phone.sendSignalingData\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"type\":\"Bool\"},{\"id\":3705636359,\"method\":\"stats.getMegagroupStats\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"dark\",\"type\":\"flags.0?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"stats.MegagroupStats\"},{\"id\":3945483510,\"method\":\"account.getGlobalPrivacySettings\",\"params\":[],\"type\":\"GlobalPrivacySettings\"},{\"id\":\"517647042\",\"method\":\"account.setGlobalPrivacySettings\",\"params\":[{\"name\":\"settings\",\"type\":\"GlobalPrivacySettings\"}],\"type\":\"GlobalPrivacySettings\"},{\"id\":4111317665,\"method\":\"help.dismissSuggestion\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"suggestion\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"1935116200\",\"method\":\"help.getCountriesList\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"help.CountriesList\"},{\"id\":\"615875002\",\"method\":\"messages.getReplies\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"offset_date\",\"type\":\"int\"},{\"name\":\"add_offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"min_id\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":\"1147761405\",\"method\":\"messages.getDiscussionMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"messages.DiscussionMessage\"},{\"id\":4147227124,\"method\":\"messages.readDiscussion\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"read_max_id\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":\"698914348\",\"method\":\"contacts.blockFromReplies\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"delete_message\",\"type\":\"flags.0?true\"},{\"name\":\"delete_history\",\"type\":\"flags.1?true\"},{\"name\":\"report_spam\",\"type\":\"flags.2?true\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":\"1445996571\",\"method\":\"stats.getMessagePublicForwards\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"offset_rate\",\"type\":\"int\"},{\"name\":\"offset_peer\",\"type\":\"InputPeer\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":3068175349,\"method\":\"stats.getMessageStats\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"dark\",\"type\":\"flags.0?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"stats.MessageStats\"},{\"id\":4029004939,\"method\":\"messages.unpinAllMessages\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":3174935520,\"method\":\"phone.createGroupCall\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"random_id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":2972909435,\"method\":\"phone.joinGroupCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"muted\",\"type\":\"flags.0?true\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"join_as\",\"type\":\"InputPeer\"},{\"name\":\"invite_hash\",\"type\":\"flags.1?string\"},{\"name\":\"params\",\"type\":\"DataJSON\"}],\"type\":\"Updates\"},{\"id\":\"1342404601\",\"method\":\"phone.leaveGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"source\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":\"2067345760\",\"method\":\"phone.inviteToGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"users\",\"type\":\"Vector<InputUser>\"}],\"type\":\"Updates\"},{\"id\":\"2054648117\",\"method\":\"phone.discardGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"Updates\"},{\"id\":\"1958458429\",\"method\":\"phone.toggleGroupCallSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"reset_invite_hash\",\"type\":\"flags.1?true\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"join_muted\",\"type\":\"flags.0?Bool\"}],\"type\":\"Updates\"},{\"id\":\"209498135\",\"method\":\"phone.getGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"phone.GroupCall\"},{\"id\":3310934187,\"method\":\"phone.getGroupParticipants\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"ids\",\"type\":\"Vector<InputPeer>\"},{\"name\":\"sources\",\"type\":\"Vector<int>\"},{\"name\":\"offset\",\"type\":\"string\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"phone.GroupParticipants\"},{\"id\":3075111914,\"method\":\"phone.checkGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"source\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":2200206609,\"method\":\"messages.deleteChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":4190888969,\"method\":\"messages.deletePhoneCallHistory\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoke\",\"type\":\"flags.0?true\"}],\"type\":\"messages.AffectedFoundMessages\"},{\"id\":\"1140726259\",\"method\":\"messages.checkHistoryImport\",\"params\":[{\"name\":\"import_head\",\"type\":\"string\"}],\"type\":\"messages.HistoryImportParsed\"},{\"id\":\"873008187\",\"method\":\"messages.initHistoryImport\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"media_count\",\"type\":\"int\"}],\"type\":\"messages.HistoryImport\"},{\"id\":\"713433234\",\"method\":\"messages.uploadImportedMedia\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"import_id\",\"type\":\"long\"},{\"name\":\"file_name\",\"type\":\"string\"},{\"name\":\"media\",\"type\":\"InputMedia\"}],\"type\":\"MessageMedia\"},{\"id\":3023958852,\"method\":\"messages.startHistoryImport\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"import_id\",\"type\":\"long\"}],\"type\":\"Bool\"},{\"id\":2729812982,\"method\":\"messages.getExportedChatInvites\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoked\",\"type\":\"flags.3?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"admin_id\",\"type\":\"InputUser\"},{\"name\":\"offset_date\",\"type\":\"flags.2?int\"},{\"name\":\"offset_link\",\"type\":\"flags.2?string\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.ExportedChatInvites\"},{\"id\":\"1937010524\",\"method\":\"messages.getExportedChatInvite\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"link\",\"type\":\"string\"}],\"type\":\"messages.ExportedChatInvite\"},{\"id\":\"48562110\",\"method\":\"messages.editExportedChatInvite\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoked\",\"type\":\"flags.2?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"link\",\"type\":\"string\"},{\"name\":\"expire_date\",\"type\":\"flags.0?int\"},{\"name\":\"usage_limit\",\"type\":\"flags.1?int\"}],\"type\":\"messages.ExportedChatInvite\"},{\"id\":\"1452833749\",\"method\":\"messages.deleteRevokedExportedChatInvites\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"admin_id\",\"type\":\"InputUser\"}],\"type\":\"Bool\"},{\"id\":3563365419,\"method\":\"messages.deleteExportedChatInvite\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"link\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"958457583\",\"method\":\"messages.getAdminsWithInvites\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"messages.ChatAdminsWithInvites\"},{\"id\":\"654013065\",\"method\":\"messages.getChatInviteImporters\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"link\",\"type\":\"string\"},{\"name\":\"offset_date\",\"type\":\"int\"},{\"name\":\"offset_user\",\"type\":\"InputUser\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.ChatInviteImporters\"},{\"id\":3087949796,\"method\":\"messages.setHistoryTTL\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"period\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":4203529973,\"method\":\"account.reportProfilePhoto\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"photo_id\",\"type\":\"InputPhoto\"},{\"name\":\"reason\",\"type\":\"ReportReason\"},{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":\"187239529\",\"method\":\"channels.convertToGigagroup\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"Updates\"},{\"id\":\"1573261059\",\"method\":\"messages.checkHistoryImportPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"messages.CheckedHistoryImportPeer\"},{\"id\":3224004311,\"method\":\"phone.toggleGroupCallRecord\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"start\",\"type\":\"flags.0?true\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"title\",\"type\":\"flags.1?string\"}],\"type\":\"Updates\"},{\"id\":3648383872,\"method\":\"phone.editGroupCallParticipant\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"muted\",\"type\":\"flags.0?true\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"participant\",\"type\":\"InputPeer\"},{\"name\":\"volume\",\"type\":\"flags.1?int\"},{\"name\":\"raise_hand\",\"type\":\"flags.2?Bool\"}],\"type\":\"Updates\"},{\"id\":\"480685066\",\"method\":\"phone.editGroupCallTitle\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":4017889594,\"method\":\"phone.getGroupCallJoinAs\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"phone.JoinAsPeers\"},{\"id\":3869926527,\"method\":\"phone.exportGroupCallInvite\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_self_unmute\",\"type\":\"flags.0?true\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"phone.ExportedGroupCallInvite\"}]}, \"layer\": 125} as {\n MTProto: {\n constructors: MTProtoConstructor[],\n methods: MTProtoMethod[],\n constructorsIndex?: {[id: number]: number}\n },\n API: {\n constructors: MTProtoConstructor[],\n methods: MTProtoMethod[],\n constructorsIndex?: {[id: number]: number}\n },\n layer: number,\n};\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport { bytesToHex } from '../../helpers/bytes';\nimport { isObject, longFromInts } from './bin_utils';\nimport { MOUNT_CLASS_TO } from '../../config/debug';\nimport { str2bigInt, dup, divide_, bigInt2str } from '../../vendor/leemon';\nimport Schema, { MTProtoConstructor } from './schema';\n\n//////////////////////\n// @ts-ignore\nimport { gzipUncompress } from '../crypto/crypto_utils';\n//////////\n\nconst boolFalse = +Schema.API.constructors.find(c => c.predicate === 'boolFalse').id >>> 0;\nconst boolTrue = +Schema.API.constructors.find(c => c.predicate === 'boolTrue').id >>> 0;\nconst vector = +Schema.API.constructors.find(c => c.predicate === 'vector').id >>> 0;\nconst gzipPacked = +Schema.MTProto.constructors.find(c => c.predicate === 'gzip_packed').id >>> 0;\n\n//console.log('boolFalse', boolFalse === 0xbc799737);\n\nclass TLSerialization {\n public maxLength = 2048; // 2Kb\n public offset = 0; // in bytes\n public mtproto = false;\n private debug = false;//Modes.debug;\n\n public buffer: ArrayBuffer;\n public intView: Int32Array;\n public byteView: Uint8Array;\n\n constructor(options: Partial<{startMaxLength: number, mtproto: true}> = {}) {\n this.maxLength = options.startMaxLength || 2048; // 2Kb\n this.mtproto = options.mtproto || false;\n this.createBuffer();\n }\n\n public createBuffer() {\n this.buffer = new ArrayBuffer(this.maxLength);\n this.intView = new Int32Array(this.buffer);\n this.byteView = new Uint8Array(this.buffer);\n }\n\n public getArray() {\n const resultBuffer = new ArrayBuffer(this.offset);\n\n //let perf = performance.now();\n /* const resultUint8: any = new Uint8Array(resultBuffer);\n resultUint8.set(this.byteView.subarray(0, this.offset)); */\n //console.log('perf uint8', performance.now() - perf);\n\n //perf = performance.now();\n const resultInt32 = new Int32Array(resultBuffer);\n resultInt32.set(this.intView.subarray(0, this.offset / 4));\n //console.log('perf int32', performance.now() - perf);\n\n /* if(resultUint8.buffer.byteLength !== resultInt32.buffer.byteLength) {\n console.error(resultUint8, resultInt32);\n } */\n \n return resultInt32;\n }\n\n public getBuffer() {\n return this.getArray().buffer;\n }\n\n public getBytes(typed: true): Uint8Array;\n public getBytes(typed?: false): number[];\n public getBytes(typed?: boolean): number[] | Uint8Array {\n if(typed) {\n const resultBuffer = new ArrayBuffer(this.offset);\n const resultArray = new Uint8Array(resultBuffer);\n \n resultArray.set(this.byteView.subarray(0, this.offset));\n \n return resultArray;\n }\n \n const bytes: number[] = [];\n for(let i = 0; i < this.offset; i++) {\n bytes.push(this.byteView[i]);\n }\n return bytes;\n }\n\n public checkLength(needBytes: number) {\n if(this.offset + needBytes < this.maxLength) {\n return;\n }\n \n //console.log('Increase buffer start', this.offset, needBytes, this.maxLength, this.byteView.slice(0, 32));\n this.maxLength = Math.ceil(Math.max(this.maxLength * 2, this.offset + needBytes + 16) / 4) * 4;\n const previousBuffer = this.buffer;\n //const previousByteView = this.byteView;\n const previousArray = new Int32Array(previousBuffer);\n \n this.createBuffer();\n \n new Int32Array(this.buffer).set(previousArray);\n /* console.log('Increase buffer end', this.offset, needBytes, this.maxLength, this.byteView.slice(0, 32), \n bytesCmp(previousByteView, this.byteView.slice(0, previousByteView.length))); */\n }\n\n public writeInt(i: number, field: string) {\n this.debug && console.log('>>>', i.toString(16), i, field);\n \n const offset = this.offset / 4;\n this.checkLength(4);\n this.intView[offset] = i;\n this.offset += 4;\n\n return offset;\n }\n \n public storeInt(i: number, field?: string) {\n return this.writeInt(i, (field || '') + ':int');\n }\n \n public storeBool(i: boolean, field?: string) {\n if(i) {\n this.writeInt(boolTrue, (field || '') + ':bool');\n } else {\n this.writeInt(boolFalse, (field || '') + ':bool');\n }\n }\n \n public storeLongP(iHigh: number, iLow: number, field?: string) {\n this.writeInt(iLow, (field || '') + ':long[low]');\n this.writeInt(iHigh, (field || '') + ':long[high]');\n }\n\n public storeLong(sLong: Array<number> | string | number, field?: string) {\n if(Array.isArray(sLong)) {\n if(sLong.length === 2) {\n return this.storeLongP(sLong[0], sLong[1], field);\n } else {\n return this.storeIntBytes(sLong, 64, field);\n }\n }\n \n if(typeof sLong !== 'string') {\n sLong = sLong ? sLong.toString() : '0';\n }\n\n const R = 0x100000000;\n //const divRem = bigStringInt(sLong).divideAndRemainder(bigint(R));\n\n const a = str2bigInt(sLong, 10, 64);\n const q = dup(a);\n const r = dup(a);\n divide_(a, str2bigInt((R).toString(16), 16, 64), q, r);\n //divInt_(a, R);\n\n const high = +bigInt2str(q, 10);\n let low = +bigInt2str(r, 10);\n\n if(high < low) {\n low -= R; \n }\n\n //console.log('storeLong', sLong, divRem[0].intValue(), divRem[1].intValue(), high, low);\n \n //this.writeInt(divRem[1].intValue(), (field || '') + ':long[low]');\n //this.writeInt(divRem[0].intValue(), (field || '') + ':long[high]');\n this.writeInt(low, (field || '') + ':long[low]');\n this.writeInt(high, (field || '') + ':long[high]');\n }\n \n public storeDouble(f: any, field?: string) {\n const buffer = new ArrayBuffer(8);\n const intView = new Int32Array(buffer);\n const doubleView = new Float64Array(buffer);\n \n doubleView[0] = f;\n \n this.writeInt(intView[0], (field || '') + ':double[low]');\n this.writeInt(intView[1], (field || '') + ':double[high]');\n }\n \n public storeString(s: string, field?: string) {\n this.debug && console.log('>>>', s, (field || '') + ':string');\n \n if(s === undefined) {\n s = '';\n }\n const sUTF8 = unescape(encodeURIComponent(s));\n \n this.checkLength(sUTF8.length + 8);\n \n const len = sUTF8.length;\n if(len <= 253) {\n this.byteView[this.offset++] = len;\n } else {\n this.byteView[this.offset++] = 254;\n this.byteView[this.offset++] = len & 0xFF;\n this.byteView[this.offset++] = (len & 0xFF00) >> 8;\n this.byteView[this.offset++] = (len & 0xFF0000) >> 16;\n }\n for(let i = 0; i < len; i++) {\n this.byteView[this.offset++] = sUTF8.charCodeAt(i);\n }\n \n // Padding\n while(this.offset % 4) {\n this.byteView[this.offset++] = 0;\n }\n }\n \n public storeBytes(bytes: ArrayBuffer | Uint8Array | number[], field?: string) {\n if(bytes instanceof ArrayBuffer) {\n bytes = new Uint8Array(bytes);\n } else if(bytes === undefined) {\n bytes = [];\n }\n this.debug && console.log('>>>', bytesToHex(bytes as number[]), (field || '') + ':bytes');\n \n // if uint8array were json.stringified, then will be: {'0': 123, '1': 123}\n const len = (bytes as ArrayBuffer).byteLength || (bytes as Uint8Array).length;\n this.checkLength(len + 8);\n if(len <= 253) {\n this.byteView[this.offset++] = len;\n } else {\n this.byteView[this.offset++] = 254;\n this.byteView[this.offset++] = len & 0xFF;\n this.byteView[this.offset++] = (len & 0xFF00) >> 8;\n this.byteView[this.offset++] = (len & 0xFF0000) >> 16;\n }\n \n this.byteView.set(bytes as Uint8Array, this.offset);\n this.offset += len;\n \n // Padding\n while(this.offset % 4) {\n this.byteView[this.offset++] = 0;\n }\n }\n \n public storeIntBytes(bytes: any, bits: any, field?: string) {\n if(bytes instanceof ArrayBuffer) {\n bytes = new Uint8Array(bytes);\n }\n\n const len = bytes.length;\n if((bits % 32) || (len * 8) !== bits) {\n const error = new Error('Invalid bits: ' + bits + ', ' + bytes.length);\n console.error(error, bytes, field);\n throw error;\n }\n \n this.debug && console.log('>>>', bytesToHex(bytes), (field || '') + ':int' + bits);\n this.checkLength(len);\n \n this.byteView.set(bytes, this.offset);\n this.offset += len;\n }\n \n public storeRawBytes(bytes: ArrayLike<number>, field?: string) {\n if(bytes instanceof ArrayBuffer) {\n bytes = new Uint8Array(bytes);\n }\n\n const len = bytes.length;\n \n this.debug && console.log('>>>', bytesToHex(bytes), (field || ''));\n this.checkLength(len);\n \n this.byteView.set(bytes, this.offset);\n this.offset += len;\n }\n \n public storeMethod(methodName: string, params: any) {\n const schema = this.mtproto ? Schema.MTProto : Schema.API;\n const methodData = schema.methods.find(m => m.method === methodName);\n\n if(!methodData) {\n throw new Error('No method ' + methodName + ' found');\n }\n \n this.storeInt(methodData.id, methodName + '[id]');\n\n const pFlags = params.pFlags || params; // * support pFlags, though am not expecting it to be there\n const flagsOffsets: {[paramName: string]: number} = {};\n //console.log('storeMethod', len, methodData);\n for(const param of methodData.params) {\n let type = param.type;\n\n if(type.indexOf('?') !== -1) {\n const condType = type.split('?');\n const fieldBit = condType[0].split('.');\n\n if(!(params[fieldBit[0]] & (1 << +fieldBit[1]))) {\n if(condType[1] === 'true' ? pFlags[param.name] : params[param.name] !== undefined) {\n //console.log('storeMethod autocompleting', methodName, param.name, params[param.name], type);\n params[fieldBit[0]] |= 1 << +fieldBit[1];\n } else {\n continue;\n }\n }\n \n //console.log('storeMethod', methodName, fieldBit, params[fieldBit[0]], params, param, condType, !!(params[fieldBit[0]] & (1 << +fieldBit[1])));\n type = condType[1];\n }\n \n //console.log('storeMethod', methodName, param.name, params[param.name], type);\n const result = this.storeObject(params[param.name], type, methodName + '[' + param.name + ']');\n\n if(type === '#') {\n params[param.name] = params[param.name] || 0;\n flagsOffsets[param.name] = result as number;\n }\n }\n\n for(let paramName in flagsOffsets) {\n this.intView[flagsOffsets[paramName]] = params[paramName];\n }\n\n return methodData.type;\n }\n \n public storeObject(obj: any, type: string, field?: string) {\n //console.log('storeObject', obj, type, field, this.offset, this.getBytes(true).hex);\n switch(type) {\n case '#':\n obj = obj || 0;\n case 'int':\n return this.storeInt(obj, field);\n case 'long':\n return this.storeLong(obj, field);\n case 'int128':\n return this.storeIntBytes(obj, 128, field);\n case 'int256':\n return this.storeIntBytes(obj, 256, field);\n case 'int512':\n return this.storeIntBytes(obj, 512, field);\n case 'string':\n return this.storeString(obj, field);\n case 'bytes':\n return this.storeBytes(obj, field);\n case 'double':\n return this.storeDouble(obj, field);\n case 'Bool':\n return this.storeBool(obj, field);\n case 'true':\n return\n }\n \n if(Array.isArray(obj)) {\n if(type.substr(0, 6) === 'Vector') {\n this.writeInt(vector, field + '[id]');\n } else if (type.substr(0, 6) !== 'vector') {\n throw new Error('Invalid vector type ' + type);\n }\n\n const itemType = type.substr(7, type.length - 8); // for \"Vector<itemType>\"\n this.writeInt(obj.length, field + '[count]');\n for(let i = 0; i < obj.length; i++) {\n this.storeObject(obj[i], itemType, field + '[' + i + ']');\n }\n\n return true;\n } else if (type.substr(0, 6).toLowerCase() === 'vector') {\n throw new Error('Invalid vector object');\n }\n \n if(!isObject(obj)) {\n throw new Error('Invalid object for type ' + type);\n }\n \n const schema = this.mtproto ? Schema.MTProto : Schema.API;\n const predicate = obj['_'];\n let isBare = false;\n const constructorData: MTProtoConstructor = schema.constructors.find(c => c.predicate === predicate);\n \n if(isBare = (type.charAt(0) === '%')) {\n type = type.substr(1);\n }\n\n if(!constructorData) {\n throw new Error('No predicate ' + predicate + ' found');\n }\n \n if(predicate === type) {\n isBare = true;\n }\n \n if(!isBare) {\n this.writeInt(constructorData.id, field + '[' + predicate + '][id]');\n }\n\n const pFlags = obj.pFlags;\n const flagsOffsets: {[paramName: string]: number} = {};\n //console.log('storeObject', len, constructorData);\n for(const param of constructorData.params) {\n let type = param.type;\n\n //console.log('storeObject', param, type);\n if(type.indexOf('?') !== -1) {\n const condType = type.split('?');\n const fieldBit = condType[0].split('.');\n\n //console.log('storeObject fieldBit', fieldBit, obj[fieldBit[0]]);\n\n if(!(obj[fieldBit[0]] & (1 << +fieldBit[1]))) {\n if(condType[1] === 'true' ? pFlags && pFlags[param.name] : obj[param.name] !== undefined) {\n //console.log('storeObject autocompleting', param.name, obj[param.name], type);\n obj[fieldBit[0]] |= 1 << +fieldBit[1];\n } else {\n continue;\n }\n }\n\n type = condType[1];\n }\n //console.log('storeObject', param, type);\n \n const result = this.storeObject(obj[param.name], type, field + '[' + predicate + '][' + param.name + ']');\n\n if(type === '#') {\n obj[param.name] = obj[param.name] || 0;\n flagsOffsets[param.name] = result as number;\n }\n }\n\n for(let paramName in flagsOffsets) {\n this.intView[flagsOffsets[paramName]] = obj[paramName];\n }\n \n return constructorData.type;\n }\n}\n\nclass TLDeserialization {\n public offset = 0; // in bytes\n public override: {[key: string]: (result: any, field: string) => void};\n\n public buffer: ArrayBuffer;\n //public intView: Uint32Array;\n public byteView: Uint8Array;\n\n // this.debug = \n public mtproto: boolean = false;\n private debug: boolean;\n\n constructor(buffer: ArrayBuffer | Uint8Array, options: Partial<{override: any, mtproto: true, debug: true}> = {}) {\n //buffer = addPadding(buffer, 4, true); // fix 21.01.2020 for wss\n if(buffer instanceof ArrayBuffer) {\n this.buffer = buffer;\n this.byteView = new Uint8Array(this.buffer);\n } else {\n this.buffer = buffer.buffer;\n this.byteView = buffer;\n }\n \n //console.log(\"TCL: TLDeserialization -> constructor -> buffer\", buffer, this.byteView, this.byteView.hex);\n /* this.buffer = buffer;\n //this.intView = new Uint32Array(this.buffer);\n this.byteView = new Uint8Array(this.buffer); */\n\n //console.log(this.intView);\n\n this.override = 'override' in options ? options.override : {};\n this.mtproto = 'mtproto' in options ? options.mtproto : false;\n this.debug = options.debug !== undefined ? options.debug : /* Modes.debug */false;\n }\n\n public readInt(field: string) {\n //if(this.offset >= this.intView.length * 4) {\n if((this.byteView.length - this.offset) < 4) {\n console.error(this.byteView, this.offset);\n throw new Error('Nothing to fetch: ' + field);\n }\n \n //var i = this.intView[this.offset / 4];\n const i = new Uint32Array(this.byteView.buffer.slice(this.offset, this.offset + 4))[0];\n \n this.debug/* || field.includes('[dialog][read_outbox_max_id]') */ \n && console.log('<<<', i.toString(16), i, field, \n this.byteView.slice(this.offset - 16, this.offset + 16), \n this.byteView.slice(this.offset - 16, this.offset + 16).hex);\n \n this.offset += 4;\n \n return i;\n }\n \n public fetchInt(field?: string) {\n return this.readInt((field || '') + ':int');\n }\n \n public fetchDouble(field?: string) {\n const buffer = new ArrayBuffer(8);\n const intView = new Int32Array(buffer);\n const doubleView = new Float64Array(buffer);\n \n intView[0] = this.readInt((field || '') + ':double[low]'),\n intView[1] = this.readInt((field || '') + ':double[high]');\n \n return doubleView[0];\n }\n \n public fetchLong(field?: string): string {\n const iLow = this.readInt((field || '') + ':long[low]');\n const iHigh = this.readInt((field || '') + ':long[high]');\n \n //const longDec = bigint(iHigh).shiftLeft(32).add(bigint(iLow)).toString();\n const longDec = longFromInts(iHigh, iLow);\n \n return longDec;\n }\n \n public fetchBool(field?: string): boolean {\n const i = this.readInt((field || '') + ':bool');\n if(i === boolTrue) {\n return true;\n } else if(i === boolFalse) {\n return false;\n }\n\n this.offset -= 4;\n return this.fetchObject('Object', field);\n }\n \n public fetchString(field?: string): string {\n let len = this.byteView[this.offset++];\n \n if(len === 254) {\n len = this.byteView[this.offset++] |\n (this.byteView[this.offset++] << 8) |\n (this.byteView[this.offset++] << 16);\n }\n \n let sUTF8 = '';\n for(let i = 0; i < len; i++) {\n sUTF8 += String.fromCharCode(this.byteView[this.offset++]);\n }\n \n // Padding\n while(this.offset % 4) {\n this.offset++;\n }\n \n let s: string;\n try {\n s = decodeURIComponent(escape(sUTF8));\n } catch (e) {\n s = sUTF8;\n }\n \n this.debug && console.log('<<<', s, (field || '') + ':string');\n \n return s;\n }\n \n public fetchBytes(field?: string): Uint8Array {\n let len = this.byteView[this.offset++];\n \n if(len === 254) {\n len = this.byteView[this.offset++] |\n (this.byteView[this.offset++] << 8) |\n (this.byteView[this.offset++] << 16);\n }\n \n const bytes = this.byteView.subarray(this.offset, this.offset + len);\n this.offset += len;\n \n // Padding\n while(this.offset % 4) {\n this.offset++;\n }\n \n this.debug && console.log('<<<', bytesToHex(bytes), (field || '') + ':bytes');\n \n return bytes;\n }\n \n public fetchIntBytes(bits: number, typed: true, field?: string): Uint8Array;\n public fetchIntBytes(bits: number, typed?: false, field?: string): number[];\n public fetchIntBytes(bits: number, typed?: boolean, field?: string) {\n if(bits % 32) {\n throw new Error('Invalid bits: ' + bits);\n }\n \n const len = bits / 8;\n if(typed) {\n const result = this.byteView.subarray(this.offset, this.offset + len);\n this.offset += len;\n return result;\n }\n \n const bytes: number[] = [];\n for(let i = 0; i < len; i++) {\n bytes.push(this.byteView[this.offset++]);\n }\n \n this.debug && console.log('<<<', bytesToHex(bytes), (field || '') + ':int' + bits);\n \n return bytes;\n }\n \n public fetchRawBytes(len: any, typed: true, field: string): Uint8Array;\n public fetchRawBytes(len: any, typed: false, field: string): number[];\n public fetchRawBytes(len: any, typed: boolean, field: string) {\n if(len === false) {\n len = this.readInt((field || '') + '_length');\n if(len > this.byteView.byteLength) {\n throw new Error('Invalid raw bytes length: ' + len + ', buffer len: ' + this.byteView.byteLength);\n }\n }\n \n if(typed) {\n const bytes = new Uint8Array(len);\n bytes.set(this.byteView.subarray(this.offset, this.offset + len));\n this.offset += len;\n return bytes;\n }\n \n const bytes: number[] = [];\n for(let i = 0; i < len; i++) {\n bytes.push(this.byteView[this.offset++]);\n }\n \n this.debug && console.log('<<<', bytesToHex(bytes), (field || ''));\n \n return bytes;\n }\n \n public fetchObject(type: any, field?: string): any {\n switch(type) {\n case '#':\n case 'int':\n return this.fetchInt(field);\n case 'long':\n return this.fetchLong(field);\n case 'int128':\n return this.fetchIntBytes(128, false, field);\n case 'int256':\n return this.fetchIntBytes(256, false, field);\n case 'int512':\n return this.fetchIntBytes(512, false, field);\n case 'string':\n return this.fetchString(field);\n case 'bytes':\n return this.fetchBytes(field);\n case 'double':\n return this.fetchDouble(field);\n case 'Bool':\n return this.fetchBool(field);\n case 'true':\n return true;\n }\n \n field = field || type || 'Object';\n \n if(type.substr(0, 6) === 'Vector' || type.substr(0, 6) === 'vector') {\n if(type.charAt(0) === 'V') {\n const constructor = this.readInt(field + '[id]');\n const constructorCmp = constructor;\n \n if(constructorCmp === gzipPacked) { // Gzip packed\n const compressed = this.fetchBytes(field + '[packed_string]');\n const uncompressed = gzipUncompress(compressed);\n const newDeserializer = new TLDeserialization(uncompressed);\n \n return newDeserializer.fetchObject(type, field);\n }\n\n if(constructorCmp !== vector) {\n throw new Error('Invalid vector constructor ' + constructor);\n }\n }\n\n const len = this.readInt(field + '[count]');\n const result: any = [];\n if(len > 0) {\n const itemType = type.substr(7, type.length - 8); // for \"Vector<itemType>\"\n for(let i = 0; i < len; i++) {\n result.push(this.fetchObject(itemType, field + '[' + i + ']'));\n }\n }\n \n return result;\n }\n \n const schema = this.mtproto ? Schema.MTProto : Schema.API;\n let constructorData: MTProtoConstructor = null;\n let fallback = false;\n \n if(type.charAt(0) === '%') {\n const checkType = type.substr(1);\n constructorData = schema.constructors.find(c => c.type === checkType);\n if(!constructorData) {\n throw new Error('Constructor not found for type: ' + type);\n }\n } else if(type.charAt(0) >= 97 && type.charAt(0) <= 122) {\n constructorData = schema.constructors.find(c => c.predicate === type);\n if(!constructorData) {\n throw new Error('Constructor not found for predicate: ' + type);\n }\n } else {\n const constructor = this.readInt(field + '[id]');\n const constructorCmp = constructor;\n \n if(constructorCmp === gzipPacked) { // Gzip packed\n const compressed = this.fetchBytes(field + '[packed_string]');\n const uncompressed = gzipUncompress(compressed);\n const newDeserializer = new TLDeserialization(uncompressed);\n \n return newDeserializer.fetchObject(type, field);\n }\n \n let index = schema.constructorsIndex;\n if(!index) {\n schema.constructorsIndex = index = {};\n for(let i = 0, len = schema.constructors.length; i < len; i++) {\n index[schema.constructors[i].id] = i;\n }\n }\n\n const i = index[constructorCmp];\n if(i) {\n constructorData = schema.constructors[i];\n }\n \n if(!constructorData && this.mtproto) {\n const schemaFallback = Schema.API;\n for(let i = 0, len = schemaFallback.constructors.length; i < len; i++) {\n if(+schemaFallback.constructors[i].id === constructorCmp) {\n constructorData = schemaFallback.constructors[i];\n \n delete this.mtproto;\n fallback = true;\n break;\n }\n }\n }\n\n if(!constructorData) {\n console.error('Constructor not found:', constructor);\n \n let int1: number, int2: number;\n try {\n int1 = this.fetchInt(field);\n int2 = this.fetchInt(field);\n } catch(err) {\n\n }\n\n throw new Error('Constructor not found: ' + constructor + ' ' + int1 + ' ' + int2 + ' ' + field);\n }\n }\n \n const predicate = constructorData.predicate;\n \n const result: any = {'_': predicate};\n const overrideKey = (this.mtproto ? 'mt_' : '') + predicate;\n if(this.override[overrideKey]) {\n this.override[overrideKey](result, field + '[' + predicate + ']');\n } else {\n for(let i = 0, len = constructorData.params.length; i < len; i++) {\n const param = constructorData.params[i];\n let type = param.type;\n\n if(type === '#' && result.pFlags === undefined) {\n result.pFlags = {};\n }\n\n const isCond = (type.indexOf('?') !== -1);\n if(isCond) {\n const condType = type.split('?');\n const fieldBit = condType[0].split('.');\n\n if(!(result[fieldBit[0]] & (1 << +fieldBit[1]))) {\n //console.log('fetchObject bad', constructorData, result[fieldBit[0]], fieldBit);\n continue;\n }\n\n //console.log('fetchObject good', constructorData, result[fieldBit[0]], fieldBit);\n\n type = condType[1];\n }\n \n const value = this.fetchObject(type, field + '[' + predicate + '][' + param.name + ']');\n \n if(isCond && type === 'true') {\n result.pFlags[param.name] = value;\n } else {\n /* if(param.name === 'read_outbox_max_id') {\n console.log(result, param.name, value, field + '[' + predicate + '][' + param.name + ']');\n } */\n \n result[param.name] = value;\n }\n }\n }\n \n if(fallback) {\n this.mtproto = true;\n }\n \n return result;\n }\n \n public getOffset() {\n return this.offset;\n }\n \n public fetchEnd() {\n if(this.offset !== this.byteView.length) {\n throw new Error('Fetch end with non-empty buffer');\n }\n\n return true;\n }\n}\n\nMOUNT_CLASS_TO.TLDeserialization = TLDeserialization;\nMOUNT_CLASS_TO.TLSerialization = TLSerialization;\nexport { TLDeserialization, TLSerialization };\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport sessionStorage from '../sessionStorage';\nimport { longFromInts } from './bin_utils';\nimport { nextRandomInt } from '../../helpers/random';\nimport { MOUNT_CLASS_TO } from '../../config/debug';\n\n/*\nlet lol: any = {};\nfor(var i = 0; i < 100; i++) {\n timeManager.generateId();\n}\n*/\n\nexport class TimeManager {\n private lastMessageId = [0, 0];\n private timeOffset = 0;\n\n constructor() {\n sessionStorage.get('server_time_offset').then((to: any) => {\n if(to) {\n this.timeOffset = to;\n }\n });\n }\n\n public generateId(): string {\n const timeTicks = Date.now(),\n timeSec = Math.floor(timeTicks / 1000) + this.timeOffset,\n timeMSec = timeTicks % 1000,\n random = nextRandomInt(0xFFFF);\n\n let messageId = [timeSec, (timeMSec << 21) | (random << 3) | 4];\n if(this.lastMessageId[0] > messageId[0] ||\n this.lastMessageId[0] === messageId[0] && this.lastMessageId[1] >= messageId[1]) {\n messageId = [this.lastMessageId[0], this.lastMessageId[1] + 4];\n }\n\n this.lastMessageId = messageId;\n\n const ret = longFromInts(messageId[0], messageId[1]);\n\n /* if(lol[ret]) {\n console.error('[TimeManager]: Generated SAME msg id', messageId, this.timeOffset, ret);\n }\n lol[ret] = true;\n\n console.log('[TimeManager]: Generated msg id', messageId, this.timeOffset, ret); */\n\n return ret\n }\n\n public applyServerTime(serverTime: number, localTime?: number) {\n localTime = (localTime || Date.now()) / 1000 | 0;\n const newTimeOffset = serverTime - localTime;\n const changed = Math.abs(this.timeOffset - newTimeOffset) > 10;\n sessionStorage.set({\n server_time_offset: newTimeOffset\n });\n\n this.lastMessageId = [0, 0];\n this.timeOffset = newTimeOffset;\n \n //console.log('[TimeManager]: Apply server time', serverTime, localTime, newTimeOffset, changed);\n\n return changed;\n }\n}\n\nconst timeManager = new TimeManager();\nMOUNT_CLASS_TO.timeManager = timeManager;\nexport default timeManager;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nconst App = {\n id: 1025907,\n hash: '452b0359b988148995f22ff0f4229750',\n version: '0.4.3',\n langPackVersion: '0.1.6',\n langPack: 'macos',\n langPackCode: 'en',\n domains: [] as string[],\n baseDcId: 2\n};\n\nexport default App;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport {isObject, sortLongsArray} from './bin_utils';\nimport {TLDeserialization, TLSerialization} from './tl_utils';\nimport CryptoWorker from '../crypto/cryptoworker';\nimport sessionStorage from '../sessionStorage';\nimport Schema from './schema';\nimport timeManager from './timeManager';\nimport NetworkerFactory from './networkerFactory';\nimport { logger, LogTypes } from '../logger';\nimport { InvokeApiOptions } from '../../types';\nimport { longToBytes } from '../crypto/crypto_utils';\nimport MTTransport from './transports/transport';\nimport { convertToUint8Array, bufferConcat, bytesCmp, bytesToHex } from '../../helpers/bytes';\nimport { nextRandomInt } from '../../helpers/random';\nimport App from '../../config/app';\nimport DEBUG from '../../config/debug';\nimport Modes from '../../config/modes';\n\n///////////////////////////////////////////\n/////////////////////////////////////\n//////////\n\nimport type TcpObfuscated from './transports/tcpObfuscated';\nimport { bigInt2str, cmp, rightShift_, str2bigInt } from '../../vendor/leemon';\nimport { forEachReverse } from '../../helpers/array';\n\n//console.error('networker included!', new Error().stack);\n\nexport type MTMessageOptions = InvokeApiOptions & Partial<{\n noResponse: true, // http_wait\n longPoll: true,\n \n notContentRelated: true, // ACK\n noSchedule: true,\n messageId: string,\n}>;\n\nexport type MTMessage = InvokeApiOptions & MTMessageOptions & {\n msg_id: string,\n seq_no: number,\n body?: Uint8Array | number[],\n isAPI?: boolean,\n // only these four are important\n\n acked?: boolean,\n\n deferred?: {\n resolve: any,\n reject: any\n },\n\n container?: boolean,\n inner?: string[],\n\n // below - options\n\n notContentRelated?: true,\n noSchedule?: true,\n\n resultType?: string,\n\n longPoll?: true,\n noResponse?: true, // only with http (http_wait for longPoll)\n};\n\nconst CONNECTION_TIMEOUT = 5000;\nlet invokeAfterMsgConstructor: number;\n\nexport default class MTPNetworker {\n private authKeyUint8: Uint8Array;\n\n private isFileNetworker: boolean;\n private isFileUpload: boolean;\n private isFileDownload: boolean;\n\n private lastServerMessages: Array<string> = [];\n\n private sentMessages: {\n [msgId: string]: MTMessage\n } = {};\n\n private pendingMessages: {[msgId: string]: number} = {};\n private pendingAcks: Array<string> = [];\n private pendingResends: Array<string> = [];\n private connectionInited = false;\n\n/////////////////////////////////////////////\n////////////////////////////////\n//////////////////////////////\n/////////////////////////////////\n//////////////////////////////\n/////////////////////////////////////////\n////////////////////////////////////\n/////////////////////////\n//////////////////////////\n////////////\n\n private seqNo: number = 0;\n private prevSessionId: Uint8Array;\n private sessionId: Uint8Array;\n private serverSalt: Uint8Array;\n\n private lastResendReq: {\n req_msg_id: string,\n resend_msg_ids: Array<string>\n } | null = null;\n\n private name: string;\n private log: ReturnType<typeof logger>;\n \n public isOnline = false;\n private lastResponseTime = 0;\n\n private debug = DEBUG /* && false */ || Modes.debug;\n\n //private disconnectDelay: number;\n //private pingPromise: CancellablePromise<any>;\n //public onConnectionStatusChange: (online: boolean) => void;\n\n //private debugRequests: Array<{before: Uint8Array, after: Uint8Array}> = [];\n\n constructor(public dcId: number, private authKey: number[], private authKeyId: Uint8Array,\n serverSalt: number[], private transport: MTTransport, options: InvokeApiOptions = {}) {\n this.authKeyUint8 = convertToUint8Array(this.authKey);\n this.serverSalt = convertToUint8Array(serverSalt);\n\n this.isFileUpload = !!options.fileUpload;\n this.isFileDownload = !!options.fileDownload;\n this.isFileNetworker = this.isFileUpload || this.isFileDownload;\n\n const suffix = this.isFileUpload ? '-U' : this.isFileDownload ? '-D' : '';\n this.name = 'NET-' + dcId + suffix;\n //this.log = logger(this.name, this.upload && this.dcId === 2 ? LogLevels.debug | LogLevels.warn | LogLevels.log | LogLevels.error : LogLevels.error);\n this.log = logger(this.name, /* LogTypes.Log | LogTypes.Debug | */LogTypes.Error | LogTypes.Warn);\n this.log('constructor'/* , this.authKey, this.authKeyID, this.serverSalt */);\n\n // Test resend after bad_server_salt\n /* if(this.dcId === 2 && this.upload) {\n //timeManager.applyServerTime((Date.now() / 1000 - 86400) | 0);\n this.serverSalt[0] = 0;\n } */\n\n this.updateSession();\n\n // if(!NetworkerFactory.offlineInited) {\n // NetworkerFactory.offlineInited = true;\n // /* rootScope.offline = true\n // rootScope.offlineConnecting = true */\n // }\n\n///////////////////////////////\n////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////\n///////////////////////////\n////////////\n/////////////////////////////////////////////////////////\n/////\n//////////////////////////\n//////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////\n///////////////////////////\n/////////////\n //} else {\n (this.transport as TcpObfuscated).networker = this;\n //}\n//////////////\n\n // * handle outcoming dead socket, server will close the connection\n // if((this.transport as TcpObfuscated).networker) {\n // this.disconnectDelay = /* (this.transport as TcpObfuscated).retryTimeout */75;\n // //setInterval(this.sendPingDelayDisconnect, (this.disconnectDelay - 5) * 1000);\n // this.sendPingDelayDisconnect();\n // }\n\n if((this.transport as TcpObfuscated).connected) {\n this.setConnectionStatus(true);\n }\n }\n\n public updateSession() {\n this.seqNo = 0;\n this.prevSessionId = this.sessionId;\n this.sessionId = new Uint8Array(8).randomize();\n }\n\n /* private clearContainers() {\n for(const messageId in this.sentMessages) {\n const message = this.sentMessages[messageId];\n if(message.container) {\n delete this.sentMessages[messageId];\n }\n }\n } */\n\n public updateSentMessage(sentMessageId: string) {\n const sentMessage = this.sentMessages[sentMessageId];\n if(!sentMessage) {\n return false;\n }\n\n if(sentMessage.container) {\n forEachReverse(sentMessage.inner, (innerSentMessageId, idx) => {\n const innerSentMessage = this.updateSentMessage(innerSentMessageId);\n if(!innerSentMessage) {\n sentMessage.inner.splice(idx, 1);\n } else {\n sentMessage.inner[idx] = innerSentMessage.msg_id;\n }\n });\n }\n \n sentMessage.msg_id = timeManager.generateId();\n sentMessage.seq_no = this.generateSeqNo(sentMessage.notContentRelated || sentMessage.container);\n\n /* if(DEBUG) {\n this.log('updateSentMessage', sentMessage.msg_id, sentMessageId);\n } */\n\n this.sentMessages[sentMessage.msg_id] = sentMessage;\n delete this.sentMessages[sentMessageId];\n \n return sentMessage;\n }\n\n public generateSeqNo(notContentRelated?: boolean) {\n let seqNo = this.seqNo * 2;\n \n if(!notContentRelated) {\n seqNo++;\n this.seqNo++;\n }\n \n return seqNo;\n }\n\n public wrapMtpCall(method: string, params: any, options: MTMessageOptions) {\n const serializer = new TLSerialization({mtproto: true});\n \n serializer.storeMethod(method, params);\n \n const messageId = timeManager.generateId();\n const seqNo = this.generateSeqNo();\n const message = {\n msg_id: messageId,\n seq_no: seqNo,\n body: serializer.getBytes(true)\n };\n \n if(Modes.debug) {\n this.log('MT call', method, params, messageId, seqNo);\n }\n \n return this.pushMessage(message, options);\n }\n \n public wrapMtpMessage(object: any, options: MTMessageOptions) {\n const serializer = new TLSerialization({mtproto: true});\n serializer.storeObject(object, 'Object');\n \n const messageId = timeManager.generateId();\n const seqNo = this.generateSeqNo(options.notContentRelated);\n const message = {\n msg_id: messageId,\n seq_no: seqNo,\n body: serializer.getBytes(true)\n };\n \n if(Modes.debug) {\n this.log('MT message', object, messageId, seqNo);\n }\n \n return this.pushMessage(message, options);\n }\n\n public wrapApiCall(method: string, params: any = {}, options: InvokeApiOptions = {}) {\n const serializer = new TLSerialization(options);\n \n if(!this.connectionInited) { // this will call once for each new session\n ///////this.log('Wrap api call !this.connectionInited');\n \n const invokeWithLayer = Schema.API.methods.find(m => m.method === 'invokeWithLayer');\n if(!invokeWithLayer) throw new Error('no invokeWithLayer!');\n serializer.storeInt(+invokeWithLayer.id >>> 0, 'invokeWithLayer');\n\n // @ts-ignore\n serializer.storeInt(Schema.layer, 'layer');\n \n const initConnection = Schema.API.methods.find(m => m.method === 'initConnection');\n if(!initConnection) throw new Error('no initConnection!');\n \n serializer.storeInt(+initConnection.id >>> 0, 'initConnection');\n serializer.storeInt(0x0, 'flags');\n serializer.storeInt(App.id, 'api_id');\n serializer.storeString(navigator.userAgent || 'Unknown UserAgent', 'device_model');\n serializer.storeString(navigator.platform || 'Unknown Platform', 'system_version');\n serializer.storeString(App.version, 'app_version');\n serializer.storeString(navigator.language || 'en', 'system_lang_code');\n serializer.storeString(App.langPack, 'lang_pack');\n serializer.storeString(navigator.language || 'en', 'lang_code');\n //serializer.storeInt(0x0, 'proxy');\n /* serializer.storeMethod('initConnection', {\n 'flags': 0,\n 'api_id': App.id,\n 'device_model': navigator.userAgent || 'Unknown UserAgent',\n 'system_version': navigator.platform || 'Unknown Platform',\n 'app_version': App.version,\n 'system_lang_code': navigator.language || 'en',\n 'lang_pack': '',\n 'lang_code': navigator.language || 'en'\n }); */\n }\n \n if(options.afterMessageId) {\n if(invokeAfterMsgConstructor === undefined) {\n const m = Schema.API.methods.find(m => m.method === 'invokeAfterMsg');\n invokeAfterMsgConstructor = m ? +m.id >>> 0 : 0;\n }\n \n if(invokeAfterMsgConstructor) {\n //if(this.debug) {\n //this.log('Api call options.afterMessageId!');\n //}\n \n serializer.storeInt(invokeAfterMsgConstructor, 'invokeAfterMsg');\n serializer.storeLong(options.afterMessageId, 'msg_id');\n } else {\n this.log.error('no invokeAfterMsg!');\n }\n }\n \n options.resultType = serializer.storeMethod(method, params);\n\n /* if(method === 'account.updateNotifySettings') {\n this.log('api call body:', serializer.getBytes(true));\n } */\n \n const messageId = timeManager.generateId();\n const seqNo = this.generateSeqNo();\n const message = {\n msg_id: messageId,\n seq_no: seqNo,\n body: serializer.getBytes(true),\n isAPI: true\n };\n \n if(Modes.debug/* || true */) {\n this.log('Api call', method, message, params, options);\n } else if(this.debug) {\n this.log('Api call', method, params, options);\n }\n \n return this.pushMessage(message, options);\n }\n\n // private sendPingDelayDisconnect = () => {\n // if(this.pingPromise || true) return;\n\n // if(!this.isOnline) {\n // if((this.transport as TcpObfuscated).connected) {\n // (this.transport as TcpObfuscated).handleClose();\n // }\n\n // return;\n // }\n\n // this.log('sendPingDelayDisconnect', this.sentPingTimes);\n\n // /* if(this.tt) clearTimeout(this.tt);\n // this.tt = self.setTimeout(() => { \n // (this.transport as any).ws.close(1000);\n // this.tt = 0;\n // }, this.disconnectDelay * 1000); */\n // /* this.wrapMtpCall('ping_delay_disconnect', {\n // ping_id: randomLong(),\n // disconnect_delay: this.disconnectDelay\n // }, {\n // noResponse: true,\n // notContentRelated: true\n // }); */\n // const deferred = this.pingPromise = deferredPromise<void>();\n\n // const timeoutTime = this.disconnectDelay * 1000;\n\n // /* if(!this.sentPingTimes || true) {\n // ++this.sentPingTimes; */\n // const startTime = Date.now();\n // this.wrapMtpCall('ping', {\n // ping_id: randomLong()\n // }, {}).then(pong => {\n // const elapsedTime = Date.now() - startTime;\n // this.log('sendPingDelayDisconnect: response', pong, elapsedTime > timeoutTime);\n\n // if(elapsedTime > timeoutTime) {\n // deferred.reject();\n // } else {\n // setTimeout(deferred.resolve, timeoutTime - elapsedTime);\n // }\n // }, deferred.reject).finally(() => {\n // clearTimeout(rejectTimeout);\n // //--this.sentPingTimes;\n // });\n // //}\n\n // const rejectTimeout = self.setTimeout(deferred.reject, timeoutTime);\n\n // deferred.catch(() => {\n // (this.transport as Socket).handleClose();\n // });\n\n // deferred.finally(() => {\n // this.pingPromise = null;\n // this.sendPingDelayDisconnect();\n // });\n // };\n\n // private sendPingDelayDisconnect = () => {\n // if(this.pingPromise || true) return;\n\n // /* if(!this.isOnline) {\n // if((this.transport as TcpObfuscated).connected) {\n // (this.transport as TcpObfuscated).connection.close();\n // }\n\n // return;\n // } */\n\n // const deferred = this.pingPromise = deferredPromise<void>();\n\n // const timeoutTime = this.disconnectDelay * 1000;\n\n // const startTime = Date.now();\n // this.wrapMtpCall('ping_delay_disconnect', {\n // ping_id: randomLong(),\n // disconnect_delay: this.disconnectDelay\n // }, {}).then(pong => {\n // const elapsedTime = Date.now() - startTime;\n // this.log('sendPingDelayDisconnect: response', pong, elapsedTime > timeoutTime);\n\n // if(elapsedTime > timeoutTime) {\n // deferred.reject();\n // } else {\n // setTimeout(deferred.resolve, timeoutTime - elapsedTime);\n // }\n // }, deferred.reject).finally(() => {\n // clearTimeout(rejectTimeout);\n // //--this.sentPingTimes;\n // });\n\n // const rejectTimeout = self.setTimeout(deferred.reject, timeoutTime);\n\n // deferred.catch(() => {\n // this.log.error('sendPingDelayDisconnect: catch, closing connection if exists');\n // (this.transport as TcpObfuscated).connection.close();\n // });\n\n // deferred.finally(() => {\n // this.pingPromise = null;\n // this.sendPingDelayDisconnect();\n // });\n // };\n\n/////////////////////////////////////////////\n////////////////////////////////\n///////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////\n/////////////////////\n////////////////////////////////////\n///////////////////\n/////\n\n/////////////////////////////////////////////////\n/////////////////////\n///////////////////////////////////\n/////////////////////////////////\n///////////////////////////////////////////////////////////\n////////////\n/////////////////////////////////////////////////////////////////////////////////////////////\n///////////////\n///////\n\n//////////////////////////\n///////\n////\n\n/////////////////////////\n//////////////////////////\n\n////////////////////////////////////////////////\n///////////////////////////////////////////////////////\n//\n///////////////////////////////////\n/////////////////////\n//////////////////////\n///////////////////////\n////////\n///////////////////////\n////////////////////\n///////////////////\n///////////////////////////////\n////////////////////////////////////////\n///////////////////////////////\n//////////////////////////////////////////\n///////\n///\n\n///////////////////////////////////////////////////////\n////////////////////////////////////////////\n//\n////////////////////////////////////////\n//////////////////////////////////////////////\n////////////////////////////////////\n//\n////////////////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////\n//\n////////////////////////////////////\n/////////////////////\n///////\n//\n/////////////////////////\n///////////////////////////////////////\n///////////////////////////////////////\n/////////////////////////////////\n//////\n\n/////////////////////////////////////////////////////////////\n//////////////////////////////////////////////\n////////////////////////////////\n//////////////\n////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////\n//////////////////////////////////////////\n//////////////////\n///////\n////\n\n//////////////////////////////////////////\n////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////\n///////////////////\n/////\n//\n///////////////////////////\n///////////////////////////////////\n///////////////////////////////////////////\n\n//////////////////////\n////////////////////////////////////////\n//////////////////////////////\n///////////////////////\n//\n////////////////////////////////////////////\n///////////////////////////////////////\n///////\n//\n////////////////////////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n//\n/////////////////////////////\n////////////////////////////////////////////////////////////////////////////\n///////////////////////////////////////////////////////////////////////////\n////////////////\n////////////\n///////////////////////////\n\n/////////////////////////////\n//\n/////////////////////////////\n////////////////////////////////////////////////////////////////////////\n///////////////////////////////////////////////////////////////////////\n////////////////\n\n////////////////////////////////////////////////\n//////////////////////////////////////\n/////\n////\n///\n\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n///////////\n///////////////////////\n////////////////////////////////\n///////////////////////////////////////\n/////////////////////////////////////////////////////\n/////////////////////////\n////////////////////////////////////////////////\n/////////\n//\n///////////////////////////////////////////////////////////////////////////////////////\n//\n///////////////////////////////////////////\n////////////////////////////////////////\n///////////////////////////////////////////////////////////////\n////////////////////////////////////////////\n///////////////////////////////\n///////////\n///////////\n\n/////////////////////////////\n//\n//////////////////////////////////////////////////////////////////////////////////////////\n/////////\n///////////////////\n/////////////////////////////////////////////////////////////////\n//\n/////////////////////////////\n//////////////////////////////////////////////////\n//////////////////////////////////////////\n///////////\n\n/////////////////////////////////////////////////\n//////////////\n/////////////////////////////////////////////////\n///////\n//\n/////////////////////////////////////////\n//////////////////////////////////////\n/////////////////////////////////////////////////////////////\n//////////////////////////////////////////\n/////////////////////////////////////////////\n////////////////////////////\n/////////\n////////\n//\n///////////////////////////////\n///////\n///\n////////////\n\n // тут можно сделать таймаут и выводить дисконнект\n public pushMessage(message: {\n msg_id: string,\n seq_no: number,\n body: Uint8Array | number[],\n isAPI?: boolean\n }, options: MTMessageOptions) {\n const promise = new Promise((resolve, reject) => {\n this.sentMessages[message.msg_id] = Object.assign(message, options, options.notContentRelated \n ? undefined \n : {\n deferred: {resolve, reject}\n }\n );\n\n //this.log.error('Networker pushMessage:', this.sentMessages[message.msg_id]);\n\n this.pendingMessages[message.msg_id] = 0;\n \n if(!options.noSchedule) {\n this.scheduleRequest();\n }\n\n if(isObject(options)) {\n options.messageId = message.msg_id;\n }\n });\n\n if(!options.notContentRelated && !options.noResponse) {\n const timeout = setTimeout(() => {\n if(this.lastResponseTime && (Date.now() - this.lastResponseTime) < CONNECTION_TIMEOUT) {\n return;\n }\n\n this.log.error('timeout', message);\n this.setConnectionStatus(false);\n\n /* this.getEncryptedOutput(message).then(bytes => {\n this.log.error('timeout encrypted', bytes);\n }); */\n }, CONNECTION_TIMEOUT);\n \n promise.finally(() => {\n clearTimeout(timeout);\n this.setConnectionStatus(true);\n });\n }\n\n return promise;\n }\n\n public setConnectionStatus(online: boolean) {\n const willChange = this.isOnline !== online;\n this.isOnline = online;\n\n if(willChange) {\n if(NetworkerFactory.onConnectionStatusChange) {\n NetworkerFactory.onConnectionStatusChange({\n _: 'networkerStatus', \n online: this.isOnline, \n dcId: this.dcId,\n name: this.name,\n isFileNetworker: this.isFileNetworker,\n isFileDownload: this.isFileDownload,\n isFileUpload: this.isFileUpload\n });\n }\n\n // if((this.transport as TcpObfuscated).networker) {\n // this.sendPingDelayDisconnect();\n // }\n /* this.sentPingTimes = 0;\n this.sendPingDelayDisconnect(); */\n }\n /* if(this.onConnectionStatusChange) {\n this.onConnectionStatusChange(this.isOnline);\n } */\n }\n\n public pushResend(messageId: string, delay = 100) {\n const value = delay ? Date.now() + delay : 0;\n const sentMessage = this.sentMessages[messageId];\n if(sentMessage.container) {\n for(const innerMsgId of sentMessage.inner) {\n this.pendingMessages[innerMsgId] = value;\n }\n } else {\n this.pendingMessages[messageId] = value;\n }\n\n if(sentMessage.acked) {\n this.log.error('pushResend: acked message?', sentMessage);\n }\n \n if(this.debug) {\n this.log('pushResend:', messageId, sentMessage, this.pendingMessages, delay);\n }\n \n this.scheduleRequest(delay);\n }\n\n // * correct, fully checked\n public async getMsgKey(dataWithPadding: ArrayBuffer, isOut: boolean) {\n const x = isOut ? 0 : 8;\n const msgKeyLargePlain = bufferConcat(this.authKeyUint8.subarray(88 + x, 88 + x + 32), dataWithPadding);\n\n const msgKeyLarge = await CryptoWorker.sha256Hash(msgKeyLargePlain);\n const msgKey = new Uint8Array(msgKeyLarge).subarray(8, 24);\n return msgKey;\n };\n\n // * correct, fully checked\n public getAesKeyIv(msgKey: Uint8Array | number[], isOut: boolean): Promise<[Uint8Array, Uint8Array]> {\n const x = isOut ? 0 : 8;\n const sha2aText = new Uint8Array(52);\n const sha2bText = new Uint8Array(52);\n const promises: Array<Promise<number[]>> = [];\n \n sha2aText.set(msgKey, 0);\n sha2aText.set(this.authKeyUint8.subarray(x, x + 36), 16);\n promises.push(CryptoWorker.sha256Hash(sha2aText));\n \n sha2bText.set(this.authKeyUint8.subarray(40 + x, 40 + x + 36), 0);\n sha2bText.set(msgKey, 36);\n promises.push(CryptoWorker.sha256Hash(sha2bText));\n\n return Promise.all(promises).then((results) => {\n const aesKey = new Uint8Array(32);\n const aesIv = new Uint8Array(32);\n const sha2a = new Uint8Array(results[0]);\n const sha2b = new Uint8Array(results[1]);\n \n aesKey.set(sha2a.subarray(0, 8));\n aesKey.set(sha2b.subarray(8, 24), 8);\n aesKey.set(sha2a.subarray(24, 32), 24);\n \n aesIv.set(sha2b.subarray(0, 8));\n aesIv.set(sha2a.subarray(8, 24), 8);\n aesIv.set(sha2b.subarray(24, 32), 24);\n \n return [aesKey, aesIv];\n });\n }\n\n private performScheduledRequest() {\n // this.log('scheduled', this.dcId, this.iii)\n\n if(this.pendingAcks.length) {\n const ackMsgIds: Array<string> = this.pendingAcks.slice();\n\n // this.log('acking messages', ackMsgIDs)\n this.wrapMtpMessage({\n _: 'msgs_ack',\n msg_ids: ackMsgIds\n }, {\n notContentRelated: true,\n noSchedule: true\n });\n }\n \n if(this.pendingResends.length) {\n const resendMsgIds: Array<string> = this.pendingResends.slice();\n const resendOpts: MTMessageOptions = {\n noSchedule: true,\n notContentRelated: true,\n messageId: '' // will set in wrapMtpMessage->pushMessage\n };\n\n //this.log('resendReq messages', resendMsgIds);\n this.wrapMtpMessage({\n _: 'msg_resend_req',\n msg_ids: resendMsgIds\n }, resendOpts);\n\n this.lastResendReq = {\n req_msg_id: resendOpts.messageId,\n resend_msg_ids: resendMsgIds\n };\n }\n \n let outMessage: MTPNetworker['sentMessages'][keyof MTPNetworker['sentMessages']];\n const messages: typeof outMessage[] = [];\n \n //const currentTime = Date.now();\n let messagesByteLen = 0;\n\n///////////////////////////////////////////////\n///////////////////////////\n////////////////////////////\n//////////////\n\n let lengthOverflow = false;\n\n // * Сюда никогда не попадут контейнеры, так как их не будет в pendingMessages\n const keys = sortLongsArray(Object.keys(this.pendingMessages));\n for(const messageId of keys) {\n //const value = this.pendingMessages[messageId];\n\n //if(!value || value <= currentTime) {\n const message = this.sentMessages[messageId];\n if(message && message.body) {\n /* if(message.fileUpload) {\n this.log('performScheduledRequest message:', message, message.body.length, (message.body as Uint8Array).byteLength, (message.body as Uint8Array).buffer.byteLength);\n } */\n\n const messageByteLength = message.body.length + 32;\n\n if((messagesByteLen + messageByteLength) > 655360) { // 640 Kb\n this.log.warn('lengthOverflow', message, messages);\n lengthOverflow = true;\n\n if(outMessage) { // if it's not a first message\n break;\n }\n }\n\n messages.push(message);\n messagesByteLen += messageByteLength;\n\n/////////////////////////////////////////////////////\n/////////////////////////////\n//////////////////////////////\n///////////////////////////////////////\n///////////////////////////////\n///////////\n////////////////////\n\n outMessage = message;\n } else {\n // this.log(message, messageId)\n }\n\n delete this.pendingMessages[messageId];\n //}\n }\n \n///////////////////////////////\n//////////////////////////////////////\n//////////////\n///////////////////////////////////////////////\n////////////////////////////////////\n//////////////////////////////////////////////////////////////\n///////////////////////////////////////////\n///////////////////////\n////////////////////////\n//////////////////////\n/////////\n\n/////////////////////\n/////////////////////////////////////////\n/////////////////////////////////////\n///////////////////////////////////\n/////////\n/////\n//////////////\n \n if(!messages.length) {\n // this.log('no scheduled messages')\n return;\n }\n \n///////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//////////////\n \n if(messages.length > 1) {\n const container = this.generateContainerMessage(messagesByteLen, messages);\n outMessage = container.messageWithBody;\n \n this.sentMessages[outMessage.msg_id] = container.message;\n } else {\n this.sentMessages[outMessage.msg_id] = outMessage;\n }\n \n this.pendingAcks = [];\n\n const promise = this.sendEncryptedRequest(outMessage);\n \n///////////////////////////////\n///////////////////////////////////////////\n///////////////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////////////\n////////////\n///////////////////////////////////////////////////////////////////////////////\n/////\n///////////////////////////\n this.cleanupSent(); // ! WARNING\n/////////////\n/////////////////////////////////////////////////////////////////////////////\n///////\n///////////////\n \n if(lengthOverflow) {\n this.scheduleRequest();\n }\n };\n\n private generateContainerMessage(messagesByteLen: number, messages: MTMessage[]) {\n const container = new TLSerialization({\n mtproto: true,\n startMaxLength: messagesByteLen + 64\n });\n\n container.storeInt(0x73f1f8dc, 'CONTAINER[id]');\n container.storeInt(messages.length, 'CONTAINER[count]');\n\n const innerMessages: string[] = [];\n messages.forEach((message, i) => {\n innerMessages.push(message.msg_id);\n container.storeLong(message.msg_id, 'CONTAINER[' + i + '][msg_id]');\n container.storeInt(message.seq_no, 'CONTAINER[' + i + '][seq_no]');\n container.storeInt(message.body.length, 'CONTAINER[' + i + '][bytes]');\n container.storeRawBytes(message.body, 'CONTAINER[' + i + '][body]');\n });\n\n const message: MTMessage = {\n msg_id: timeManager.generateId(),\n seq_no: this.generateSeqNo(true),\n container: true,\n inner: innerMessages\n };\n\n if(Modes.debug/* || true */) {\n this.log.warn('Container', innerMessages, message.msg_id, message.seq_no);\n }\n\n return {\n message,\n messageWithBody: Object.assign({body: container.getBytes(true)}, message),\n };\n }\n\n public async getEncryptedMessage(dataWithPadding: ArrayBuffer) {\n const msgKey = await this.getMsgKey(dataWithPadding, true);\n const keyIv = await this.getAesKeyIv(msgKey, true);\n // this.log('after msg key iv')\n\n const encryptedBytes = await CryptoWorker.aesEncrypt(dataWithPadding, keyIv[0], keyIv[1]);\n // this.log('Finish encrypt')\n\n return {\n bytes: encryptedBytes,\n msgKey\n };\n }\n\n public getDecryptedMessage(msgKey: Uint8Array, encryptedData: Uint8Array): Promise<ArrayBuffer> {\n // this.log('get decrypted start')\n return this.getAesKeyIv(msgKey, false).then((keyIv) => {\n // this.log('after msg key iv')\n return CryptoWorker.aesDecrypt(encryptedData, keyIv[0], keyIv[1]);\n });\n }\n\n public getEncryptedOutput(message: MTMessage) {\n /* if(DEBUG) {\n this.log.debug('Send encrypted', message, this.authKeyId);\n } */\n /* if(!this.isOnline) {\n this.log('trying to send message when offline:', Object.assign({}, message));\n //debugger;\n } */\n\n const data = new TLSerialization({\n startMaxLength: message.body.length + 2048\n });\n\n data.storeIntBytes(this.serverSalt, 64, 'salt');\n data.storeIntBytes(this.sessionId, 64, 'session_id');\n \n data.storeLong(message.msg_id, 'message_id');\n data.storeInt(message.seq_no, 'seq_no');\n\n data.storeInt(message.body.length, 'message_data_length');\n data.storeRawBytes(message.body, 'message_data');\n\n /* const des = new TLDeserialization(data.getBuffer().slice(16));\n const desSalt = des.fetchLong();\n const desSessionId = des.fetchLong();\n\n if(!this.isOnline) {\n this.log.error('trying to send message when offline', message, new Uint8Array(des.buffer), desSalt, desSessionId);\n } */\n\n /* const messageDataLength = message.body.length;\n let canBeLength = 0; // bytes\n canBeLength += 8;\n canBeLength += 8;\n canBeLength += 8;\n canBeLength += 4;\n canBeLength += 4;\n canBeLength += message.body.length; */\n \n const dataBuffer = data.getBuffer();\n\n /* if(dataBuffer.byteLength !== canBeLength || !bytesCmp(new Uint8Array(dataBuffer.slice(dataBuffer.byteLength - message.body.length)), new Uint8Array(message.body))) {\n this.log.error('wrong length', dataBuffer, canBeLength, message.msg_id);\n } */\n\n const paddingLength = (16 - (data.offset % 16)) + 16 * (1 + nextRandomInt(5));\n const padding = /* (message as any).padding || */new Uint8Array(paddingLength).randomize()/* .fill(0) */;\n /* const padding = [167, 148, 207, 226, 86, 192, 193, 57, 124, 153, 174, 145, 159, 1, 5, 70, 127, 157, \n 51, 241, 46, 85, 141, 212, 139, 234, 213, 164, 197, 116, 245, 70, 184, 40, 40, 201, 233, 211, 150, \n 94, 57, 84, 1, 135, 108, 253, 34, 139, 222, 208, 71, 214, 90, 67, 36, 28, 167, 148, 207, 226, 86, 192, 193, 57, 124, 153, 174, 145, 159, 1, 5, 70, 127, 157, \n 51, 241, 46, 85, 141, 212, 139, 234, 213, 164, 197, 116, 245, 70, 184, 40, 40, 201, 233, 211, 150, \n 94, 57, 84, 1, 135, 108, 253, 34, 139, 222, 208, 71, 214, 90, 67, 36, 28].slice(0, paddingLength); */\n\n //(message as any).padding = padding;\n\n const dataWithPadding = bufferConcat(dataBuffer, padding);\n // this.log('Adding padding', dataBuffer, padding, dataWithPadding)\n // this.log('auth_key_id', bytesToHex(self.authKeyID))\n\n /* if(dataWithPadding.byteLength % 16) {\n this.log.error('aaa', dataWithPadding, paddingLength);\n }\n\n if(message.fileUpload) {\n this.log('Send encrypted: body length:', (message.body as ArrayBuffer).byteLength, paddingLength, dataWithPadding);\n } */\n\n // * full next block is correct\n return this.getEncryptedMessage(dataWithPadding).then((encryptedResult) => {\n /* if(DEBUG) {\n this.log('Got encrypted out message', encryptedResult);\n } */\n\n const request = new TLSerialization({\n startMaxLength: encryptedResult.bytes.length + 256\n });\n request.storeIntBytes(this.authKeyId, 64, 'auth_key_id');\n request.storeIntBytes(encryptedResult.msgKey, 128, 'msg_key');\n request.storeRawBytes(encryptedResult.bytes, 'encrypted_data');\n \n const requestData = request.getBytes(true);\n\n // if(this.isFileNetworker) {\n // //this.log('Send encrypted: requestData length:', requestData.length, requestData.length % 16, paddingLength % 16, paddingLength, data.offset, encryptedResult.msgKey.length % 16, encryptedResult.bytes.length % 16);\n // //this.log('Send encrypted: messageId:', message.msg_id, requestData.length);\n // //this.log('Send encrypted:', message, new Uint8Array(bufferConcat(des.buffer, padding)), requestData, this.serverSalt.hex, this.sessionId.hex/* new Uint8Array(des.buffer) */);\n // this.debugRequests.push({before: new Uint8Array(bufferConcat(des.buffer, padding)), after: requestData});\n // }\n\n return requestData;\n });\n }\n\n public sendEncryptedRequest(message: MTMessage) {\n return this.getEncryptedOutput(message).then(requestData => {\n this.debug && this.log('sendEncryptedRequest: launching message into space:', message, [message.msg_id].concat(message.inner || []));\n\n const promise: Promise<Uint8Array> = this.transport.send(requestData) as any;\n///////////////////////////////////////////////////\n return promise;\n///////////////\n///////////////////////////////////////////////////////////\n\n/////////////////////////\n//////////////////\n/////////////////////////////////////\n/////////////////////////////////\n////////\n///////////////////////////////////////\n///////////////////////////////////////////\n///////////////////////////////////////////\n/////////\n\n//////////////////////\n/////////////////////\n///////////////////////////////////////////\n////////////////////////////////////////////\n//////////////////////////////////////\n//////////////////////////////\n/////////////\n/////////\n/////////////////////////////////////\n/////////\n////////////////\n });\n }\n\n public parseResponse(responseBuffer: Uint8Array) {\n //const perf = performance.now();\n /* if(this.debug) {\n this.log.debug('Start parsing response', responseBuffer);\n } */\n\n this.lastResponseTime = Date.now();\n\n const deserializer = new TLDeserialization(responseBuffer);\n \n const authKeyId = deserializer.fetchIntBytes(64, true, 'auth_key_id');\n if(!bytesCmp(authKeyId, this.authKeyId)) {\n throw new Error('[MT] Invalid server auth_key_id: ' + authKeyId.hex);\n }\n\n const msgKey = deserializer.fetchIntBytes(128, true, 'msg_key');\n const encryptedData = deserializer.fetchRawBytes(responseBuffer.byteLength - deserializer.getOffset(), true, 'encrypted_data');\n \n return this.getDecryptedMessage(msgKey, encryptedData).then((dataWithPadding) => {\n // this.log('after decrypt')\n return this.getMsgKey(dataWithPadding, false).then((calcMsgKey) => {\n if(!bytesCmp(msgKey, calcMsgKey)) {\n this.log.warn('[MT] msg_keys', msgKey, calcMsgKey);\n this.updateSession(); // fix 28.01.2020\n throw new Error('[MT] server msgKey mismatch, updating session');\n }\n // this.log('after msgKey check')\n \n let deserializer = new TLDeserialization(dataWithPadding, {mtproto: true});\n \n /* const salt = */deserializer.fetchIntBytes(64, false, 'salt'); // need\n const sessionId = deserializer.fetchIntBytes(64, false, 'session_id');\n const messageId = deserializer.fetchLong('message_id');\n \n if(!bytesCmp(sessionId, this.sessionId) &&\n (!this.prevSessionId || !bytesCmp(sessionId, this.prevSessionId))) {\n this.log.warn('Sessions', sessionId, this.sessionId, this.prevSessionId, dataWithPadding);\n //this.updateSession();\n //this.sessionID = sessionID;\n throw new Error('[MT] Invalid server session_id: ' + bytesToHex(sessionId));\n }\n \n const seqNo = deserializer.fetchInt('seq_no');\n \n const totalLength = dataWithPadding.byteLength;\n \n const messageBodyLength = deserializer.fetchInt('message_data[length]');\n let offset = deserializer.getOffset();\n \n if((messageBodyLength % 4) ||\n messageBodyLength > totalLength - offset) {\n throw new Error('[MT] Invalid body length: ' + messageBodyLength);\n }\n const messageBody = deserializer.fetchRawBytes(messageBodyLength, true, 'message_data');\n \n offset = deserializer.getOffset();\n const paddingLength = totalLength - offset;\n if(paddingLength < 12 || paddingLength > 1024) {\n throw new Error('[MT] Invalid padding length: ' + paddingLength);\n }\n \n //let buffer = bytesToArrayBuffer(messageBody);\n deserializer = new TLDeserialization(/* buffer */messageBody, {\n mtproto: true, \n override: {\n mt_message: (result: any, field: string) => {\n result.msg_id = deserializer.fetchLong(field + '[msg_id]');\n result.seqno = deserializer.fetchInt(field + '[seqno]');\n result.bytes = deserializer.fetchInt(field + '[bytes]');\n \n const offset = deserializer.getOffset();\n \n //self.log('mt_message!!!!!', result, field);\n \n try {\n result.body = deserializer.fetchObject('Object', field + '[body]');\n } catch(e) {\n this.log.error('parse error', e.message, e.stack);\n result.body = {\n _: 'parse_error',\n error: e\n };\n }\n\n if(deserializer.offset !== offset + result.bytes) {\n // console.warn(dT(), 'set offset', this.offset, offset, result.bytes)\n // this.log(result)\n deserializer.offset = offset + result.bytes;\n }\n // this.log('override message', result)\n },\n mt_rpc_result: (result: any, field: any) => {\n result.req_msg_id = deserializer.fetchLong(field + '[req_msg_id]');\n \n const sentMessage = this.sentMessages[result.req_msg_id];\n const type = sentMessage && sentMessage.resultType || 'Object';\n \n if(result.req_msg_id && !sentMessage) {\n // console.warn(dT(), 'Result for unknown message', result);\n return;\n }\n \n result.result = deserializer.fetchObject(type, field + '[result]');\n // self.log(dT(), 'override rpc_result', sentMessage, type, result);\n }\n }\n });\n\n const response = deserializer.fetchObject('', 'INPUT');\n //this.log.error('Parse response time:', performance.now() - perf);\n return {\n response,\n messageId,\n sessionId,\n seqNo\n };\n });\n });\n }\n\n public applyServerSalt(newServerSalt: string) {\n const serverSalt = longToBytes(newServerSalt);\n \n sessionStorage.set({\n ['dc' + this.dcId + '_server_salt']: bytesToHex(serverSalt)\n });\n \n this.serverSalt = new Uint8Array(serverSalt);\n }\n\n // ! таймаут очень сильно тормозит скорость работы сокета (даже нулевой) \n public scheduleRequest(delay?: number) {\n /* if(!this.isOnline) {\n return;\n } */\n\n///////////////////////////////////////////////\n///////////////////////////////////////////\n/////////////////////////////////////\n//////////////\n/////////////////////////////\n//////////////////////////////////////////////\n/////\n//////////////\n\n const nextReq = Date.now() + (delay || 0);\n if(this.nextReq && (delay === undefined || this.nextReq <= nextReq)) {\n //this.debug && this.log('scheduleRequest: nextReq', this.nextReq, nextReq);\n return;\n }\n \n //this.debug && this.log('scheduleRequest: delay', delay);\n\n /* if(this.nextReqTimeout) {\n return;\n } */\n \n //const perf = performance.now();\n if(this.nextReqTimeout) {\n clearTimeout(this.nextReqTimeout);\n }\n\n const cb = () => {\n //this.debug && this.log('scheduleRequest: timeout delay was:', performance.now() - perf);\n\n this.nextReqTimeout = 0;\n this.nextReq = 0;\n\n/////////////////////////////////////////////////\n////////////////////////\n///////////////////////////////////////\n///////////////\n///////\n///////////////\n /* if(!this.isOnline) {\n return;\n } */\n\n this.performScheduledRequest();\n////////////////\n };\n\n this.nextReq = nextReq;\n\n if(delay) {\n this.nextReqTimeout = self.setTimeout(cb, delay);\n } else {\n cb();\n }\n }\n\n public ackMessage(msgId: string) {\n // this.log('ack message', msgID)\n this.pendingAcks.push(msgId);\n\n///////////////////////////////////////////////\n////////////////////////////////\n/////////////\n this.scheduleRequest();\n//////////////\n }\n \n public reqResendMessage(msgId: string) {\n if(this.debug) {\n this.log('Req resend', msgId);\n }\n\n this.pendingResends.push(msgId);\n this.scheduleRequest(100);\n }\n\n public cleanupSent() {\n let notEmpty = false;\n // this.log('clean start', this.dcId/*, this.sentMessages*/)\n Object.keys(this.sentMessages).forEach((msgId) => {\n const message = this.sentMessages[msgId];\n \n // this.log('clean iter', msgID, message)\n if(message.notContentRelated && this.pendingMessages[msgId] === undefined) {\n // this.log('clean notContentRelated', msgID)\n delete this.sentMessages[msgId];\n } else if(message.container) {\n for(const innerMsgId of message.inner) {\n if(this.sentMessages[innerMsgId] !== undefined) {\n // this.log('clean failed, found', msgID, message.inner[i], this.sentMessages[message.inner[i]].seq_no)\n notEmpty = true;\n return;\n }\n }\n // this.log('clean container', msgID)\n delete this.sentMessages[msgId];\n } else {\n notEmpty = true;\n }\n });\n \n return !notEmpty;\n }\n\n public processMessageAck(messageId: string) {\n const sentMessage = this.sentMessages[messageId];\n if(sentMessage && !sentMessage.acked) {\n //delete sentMessage.body;\n sentMessage.acked = true;\n }\n }\n\n public processError(rawError: {error_message: string, error_code: number}) {\n const matches = (rawError.error_message || '').match(/^([A-Z_0-9]+\\b)(: (.+))?/) || [];\n rawError.error_code = rawError.error_code;\n \n return {\n code: !rawError.error_code || rawError.error_code <= 0 ? 500 : rawError.error_code,\n type: matches[1] || 'UNKNOWN',\n description: matches[3] || ('CODE#' + rawError.error_code + ' ' + rawError.error_message),\n originalError: rawError\n };\n }\n\n /**\n * * только для сокета\n * TODO: consider about containers resend\n */\n public resend() {\n for(const id in this.sentMessages) {\n const msg = this.sentMessages[id];\n if(msg.body || msg.container) {\n this.pushResend(id);\n }\n }\n }\n\n /* public requestMessageStatus() {\n const ids: string[] = [];\n for(const id in this.sentMessages) {\n const message = this.sentMessages[id];\n if(message.isAPI && message.fileUpload) {\n ids.push(message.msg_id);\n }\n }\n\n this.wrapMtpMessage({\n _: 'msgs_state_req',\n msg_ids: ids\n }, {\n notContentRelated: true\n }).then(res => {\n this.log('status', res);\n });\n } */\n\n // * https://core.telegram.org/mtproto/service_messages_about_messages#notice-of-ignored-error-message\n public processMessage(message: any, messageId: string, sessionId: Uint8Array | number[]) {\n if(message._ === 'messageEmpty') {\n this.log.warn('processMessage: messageEmpty', message, messageId);\n return;\n }\n\n const msgidInt = parseInt(messageId.substr(0, -10), 10);\n if(msgidInt % 2) {\n this.log.warn('Server even message id: ', messageId, message);\n return;\n }\n\n /* if(this.debug) {\n this.log('process message', message, messageId, sessionId);\n } */\n\n switch(message._) {\n case 'msg_container': {\n for(const innerMessage of message.messages) {\n this.processMessage(innerMessage, innerMessage.msg_id, sessionId);\n }\n\n break;\n }\n \n case 'bad_server_salt': {\n this.log('Bad server salt', message);\n\n this.applyServerSalt(message.new_server_salt);\n\n if(this.sentMessages[message.bad_msg_id]) {\n this.pushResend(message.bad_msg_id);\n }\n \n this.ackMessage(messageId);\n \n // simulate disconnect\n /* try {\n this.log('networker state:', this);\n // @ts-ignore\n this.transport.ws.close(1000);\n } catch(err) {\n this.log.error('transport', this.transport, err);\n } */\n\n break;\n }\n \n case 'bad_msg_notification': {\n this.log.error('Bad msg notification', message);\n\n switch(message.error_code) {\n case 16: // * msg_id too low\n case 17: // * msg_id too high\n case 32: // * msg_seqno too low\n case 33: // * msg_seqno too high\n case 64: { // * invalid container\n //const changedOffset = timeManager.applyServerTime(bigStringInt(messageId).shiftRight(32).toString(10));\n const bigInt = str2bigInt(messageId, 10);\n rightShift_(bigInt, 32);\n const changedOffset = timeManager.applyServerTime(+bigInt2str(bigInt, 10));\n if(message.error_code === 17 || changedOffset) {\n this.log('Update session');\n this.updateSession();\n }\n\n const badMessage = this.updateSentMessage(message.bad_msg_id);\n if(badMessage) this.pushResend(badMessage.msg_id); // fix 23.01.2020\n //this.ackMessage(messageId);\n }\n\n // * invalid container\n /* case 64: {\n const badMessage = this.sentMessages[message.bad_msg_id];\n if(badMessage) {\n for(const msgId of badMessage.inner) {\n if(this.sentMessages[msgId] !== undefined) {\n this.updateSentMessage\n }\n }\n const inner = badMessage.inner;\n }\n } */\n }\n\n break;\n }\n \n case 'message': {\n if(this.lastServerMessages.indexOf(messageId) !== -1) {\n // console.warn('[MT] Server same messageId: ', messageId)\n this.ackMessage(messageId);\n return;\n }\n\n this.lastServerMessages.push(messageId);\n if(this.lastServerMessages.length > 100) {\n this.lastServerMessages.shift();\n }\n\n this.processMessage(message.body, message.msg_id, sessionId);\n break;\n }\n \n \n case 'new_session_created': {\n this.ackMessage(messageId);\n\n if(this.debug) {\n this.log.debug('new_session_created', message);\n }\n //this.updateSession();\n \n this.processMessageAck(message.first_msg_id);\n this.applyServerSalt(message.server_salt);\n \n sessionStorage.get('dc').then((baseDcId) => {\n if(baseDcId === this.dcId && !this.isFileNetworker && NetworkerFactory.updatesProcessor) {\n NetworkerFactory.updatesProcessor(message);\n }\n });\n break;\n }\n \n case 'msgs_ack': {\n for(const msgId of message.msg_ids) {\n this.processMessageAck(msgId);\n }\n\n break;\n }\n \n case 'msg_detailed_info':\n if(!this.sentMessages[message.msg_id]) {\n this.ackMessage(message.answer_msg_id);\n break;\n }\n case 'msg_new_detailed_info':\n if(this.pendingAcks.indexOf(message.answer_msg_id)) {\n break;\n }\n this.reqResendMessage(message.answer_msg_id);\n break;\n \n case 'msgs_state_info': {\n this.ackMessage(message.answer_msg_id);\n if(this.lastResendReq && \n this.lastResendReq.req_msg_id === message.req_msg_id && \n this.pendingResends.length\n ) {\n for(const badMsgId of this.lastResendReq.resend_msg_ids) {\n const pos = this.pendingResends.indexOf(badMsgId);\n if(pos !== -1) {\n this.pendingResends.splice(pos, 1);\n }\n }\n }\n\n break;\n }\n\n case 'rpc_result': {\n this.ackMessage(messageId);\n \n const sentMessageId = message.req_msg_id;\n const sentMessage = this.sentMessages[sentMessageId];\n\n this.processMessageAck(sentMessageId);\n if(sentMessage) {\n const deferred = sentMessage.deferred;\n if(message.result._ === 'rpc_error') {\n const error = this.processError(message.result);\n this.log('Rpc error', error);\n if(deferred) {\n deferred.reject(error);\n }\n } else {\n if(deferred) {\n /* if(DEBUG) {\n this.log.debug('Rpc response', message.result, sentMessage);\n } */\n\n deferred.resolve(message.result);\n }\n\n if(sentMessage.isAPI && !this.connectionInited) {\n this.connectionInited = true;\n ////this.log('Rpc set connectionInited to:', this.connectionInited);\n }\n }\n \n delete this.sentMessages[sentMessageId];\n } else {\n if(this.debug) {\n this.log('Rpc result for unknown message:', sentMessageId, message);\n }\n }\n\n break;\n }\n\n case 'pong': { // * https://core.telegram.org/mtproto/service_messages#ping-messages-pingpong - These messages doesn't require acknowledgments\n if((this.transport as TcpObfuscated).networker) {\n const sentMessageId = message.msg_id;\n const sentMessage = this.sentMessages[sentMessageId]; \n\n if(sentMessage) {\n sentMessage.deferred.resolve(message);\n delete this.sentMessages[sentMessageId];\n }\n }\n\n break;\n }\n \n default:\n this.ackMessage(messageId);\n\n /* if(this.debug) {\n this.log.debug('Update', message);\n } */\n \n if(NetworkerFactory.updatesProcessor !== null) {\n NetworkerFactory.updatesProcessor(message);\n }\n break;\n }\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n/* import { copy } from \"./object\";\n\nexport function listMergeSorted(list1: any[] = [], list2: any[] = []) {\n const result = copy(list1);\n\n const minId = list1.length ? list1[list1.length - 1] : 0xFFFFFFFF;\n for(let i = 0; i < list2.length; i++) {\n if(list2[i] < minId) {\n result.push(list2[i]);\n }\n }\n\n return result;\n} */\n\nexport const accumulate = (arr: number[], initialValue: number) => arr.reduce((acc, value) => acc + value, initialValue);\n\nexport function findAndSpliceAll<T>(array: Array<T>, verify: (value: T, index: number, arr: typeof array) => boolean) {\n const out: typeof array = [];\n let idx = -1;\n while((idx = array.findIndex(verify)) !== -1) {\n out.push(array.splice(idx, 1)[0]);\n }\n\n return out;\n}\n\nexport function forEachReverse<T>(array: Array<T>, callback: (value: T, index?: number, array?: Array<T>) => void) {\n for(let length = array.length, i = length - 1; i >= 0; --i) {\n callback(array[i], i, array);\n }\n};\n\nexport function insertInDescendSortedArray<T extends {[smth in K]?: number}, K extends keyof T>(array: Array<T>, element: T, property: K, pos?: number) {\n if(pos === undefined) {\n pos = array.indexOf(element);\n if(pos !== -1) {\n array.splice(pos, 1);\n }\n }\n\n const sortProperty: number = element[property];\n const len = array.length;\n if(!len || sortProperty <= array[len - 1][property]) {\n return array.push(element) - 1;\n } else if(sortProperty >= array[0][property]) {\n array.unshift(element);\n return 0;\n } else {\n for(let i = 0; i < len; i++) {\n if(sortProperty > array[i][property]) {\n array.splice(i, 0, element);\n return i;\n }\n }\n }\n\n console.error('wtf', array, element);\n return array.indexOf(element);\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport MTPNetworker from \"./networker\";\nimport { ConnectionStatusChange, InvokeApiOptions } from \"../../types\";\nimport MTTransport from \"./transports/transport\";\n\nexport class NetworkerFactory {\n public updatesProcessor: (obj: any) => void = null;\n public onConnectionStatusChange: (info: ConnectionStatusChange) => void = null;\n\n public setUpdatesProcessor(callback: (obj: any) => void) {\n this.updatesProcessor = callback;\n }\n\n public getNetworker(dcId: number, authKey: number[], authKeyID: Uint8Array, serverSalt: number[], transport: MTTransport, options: InvokeApiOptions) {\n //console.log('NetworkerFactory: creating new instance of MTPNetworker:', dcId, options);\n return new MTPNetworker(dcId, authKey, authKeyID, serverSalt, transport, options);\n }\n}\n\nexport default new NetworkerFactory();\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n//import { MOUNT_CLASS_TO } from \"../config/debug\";\nimport type { ArgumentTypes, SuperReturnType } from \"../types\";\n\n// class EventSystem {\n// wm: WeakMap<any, Record<any, Set<any>>> = new WeakMap();\n\n// add(target: any, event: any, listener: any) {\n// let listeners = this.wm.get(target);\n// if (listeners === undefined) {\n// listeners = {};\n// }\n// let listenersForEvent = listeners[event];\n// if (listenersForEvent === undefined) {\n// listenersForEvent = new Set();\n// }\n// listenersForEvent.add(listener);\n// listeners[event] = listenersForEvent;\n// //target.addEventListener(event, listener);\n// this.wm.set(target, listeners);\n// };\n\n// remove(target: any, event: any, listener: any) {\n// let listeners = this.wm.get(target);\n// if (!listeners) return;\n// let listenersForEvent = listeners[event];\n// if (!listenersForEvent) return;\n// listenersForEvent.delete(listener);\n// };\n \n// /* fire(target, event) {\n// let listeners = this.wm.get(target);\n// if (!listeners) return;\n// let listenersForEvent = listeners[event];\n// if (!listenersForEvent) return;\n// for (let handler of handlers) {\n// setTimeout(handler, 0, event, target); // we use a setTimeout here because we want event triggering to be asynchronous. \n// }\n// }; */\n// }\n\n// console.log = () => {};\n\n// const e = new EventSystem();\n// MOUNT_CLASS_TO.e = e;\n\n/**\n * Better not to remove listeners during setting\n * Should add listener callback only once\n */\nexport default class EventListenerBase<Listeners extends {[name: string]: Function}> {\n protected listeners: Partial<{\n [k in keyof Listeners]: Array<{callback: Listeners[k], once?: boolean}>\n }>;\n protected listenerResults: Partial<{\n [k in keyof Listeners]: ArgumentTypes<Listeners[k]>\n }>;\n\n private reuseResults: boolean;\n\n constructor(reuseResults?: boolean) {\n this._constructor(reuseResults);\n }\n\n public _constructor(reuseResults = false): any {\n this.reuseResults = reuseResults;\n this.listeners = {};\n this.listenerResults = {};\n }\n\n public addEventListener(name: keyof Listeners, callback: Listeners[typeof name], once?: boolean) {\n if(this.listenerResults.hasOwnProperty(name)) {\n callback(...this.listenerResults[name]);\n \n if(once) {\n return;\n }\n }\n \n (this.listeners[name] ?? (this.listeners[name] = [])).push({callback, once});\n //e.add(this, name, {callback, once});\n }\n\n public addMultipleEventsListeners(obj: {\n [name in keyof Listeners]?: Listeners[name]\n }) {\n for(const i in obj) {\n this.addEventListener(i, obj[i]);\n }\n }\n\n public removeEventListener(name: keyof Listeners, callback: Listeners[typeof name]) {\n if(this.listeners[name]) {\n this.listeners[name].findAndSplice(l => l.callback === callback);\n }\n //e.remove(this, name, callback);\n }\n\n // * must be protected, but who cares\n public dispatchEvent(name: keyof Listeners, ...args: ArgumentTypes<Listeners[typeof name]>) {\n if(this.reuseResults) {\n this.listenerResults[name] = args;\n }\n\n const arr: Array<SuperReturnType<Listeners[typeof name]>> = [];\n\n /* let a = e.wm.get(this)[name];\n if(!a) return arr;\n const listeners = [...a]; */\n const listeners = this.listeners[name];\n if(listeners) {\n // ! this one will guarantee execution even if delete another listener during setting\n const left = listeners.slice();\n left.forEach((listener: any) => {\n const index = listeners.findIndex((l: any) => l.callback === listener.callback);\n if(index === -1) {\n return;\n }\n\n arr.push(listener.callback(...args));\n\n if(listener.once) {\n this.removeEventListener(name, listener.callback);\n }\n });\n\n /* for(let i = 0, length = listeners.length; i < length; ++i) {\n const listener = listeners[i];\n arr.push(listener.callback(...args));\n\n if(listener.once) {\n listeners.splice(i, 1);\n --i;\n --length;\n }\n } */\n }\n\n return arr;\n }\n\n public cleanup() {\n this.listeners = {}; \n this.listenerResults = {};\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { logger, LogTypes } from '../../logger';\nimport Modes from '../../../config/modes';\nimport EventListenerBase from '../../../helpers/eventListenerBase';\nimport { MTConnection } from './transport';\n\nexport default class Socket extends EventListenerBase<{\n open: () => void,\n message: (buffer: ArrayBuffer) => any,\n close: () => void,\n}> implements MTConnection {\n private ws: WebSocket;\n private log: ReturnType<typeof logger>;\n private debug = Modes.debug && false;\n\n constructor(protected dcId: number, protected url: string, logSuffix: string) {\n super();\n\n let logTypes = LogTypes.Error | LogTypes.Log;\n if(this.debug) logTypes |= LogTypes.Debug;\n this.log = logger(`WS-${dcId}` + logSuffix, logTypes);\n this.log('constructor');\n this.connect();\n\n return this;\n }\n\n private removeListeners() {\n if(!this.ws) {\n return;\n }\n\n this.ws.removeEventListener('open', this.handleOpen);\n this.ws.removeEventListener('close', this.handleClose);\n this.ws.removeEventListener('error', this.handleError);\n this.ws.removeEventListener('message', this.handleMessage);\n this.ws = undefined;\n }\n \n private connect() {\n this.ws = new WebSocket(this.url, 'binary');\n this.ws.binaryType = 'arraybuffer';\n this.ws.addEventListener('open', this.handleOpen);\n this.ws.addEventListener('close', this.handleClose);\n this.ws.addEventListener('error', this.handleError);\n this.ws.addEventListener('message', this.handleMessage);\n }\n\n public close() {\n if(!this.ws) {\n return;\n }\n\n this.log.error('close execution');\n\n try {\n this.ws.close();\n } catch(err) {\n\n }\n this.handleClose();\n }\n \n private handleOpen = () => {\n this.log('opened');\n\n this.debug && this.log.debug('sending init packet');\n this.dispatchEvent('open');\n };\n\n private handleError = (e: Event) => {\n this.log.error('handleError', e);\n this.close();\n };\n\n private handleClose = () => {\n this.log('closed'/* , event, this.pending, this.ws.bufferedAmount */);\n\n this.removeListeners();\n this.dispatchEvent('close');\n };\n\n private handleMessage = (event: MessageEvent) => {\n this.debug && this.log.debug('<-', 'handleMessage', /* event, */event.data.byteLength);\n\n this.dispatchEvent('message', event.data as ArrayBuffer);\n };\n\n public send = (body: Uint8Array) => {\n this.debug && this.log.debug('-> body length to send:', body.length);\n\n this.ws.send(body);\n };\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n//import aesjs from 'aes-js';\nimport AES from \"@cryptography/aes\";\nimport { bytesFromWordss } from \"../../../helpers/bytes\";\nimport { Codec } from \"./codec\";\n\nclass Counter {\n _counter: Uint8Array;\n\n constructor(initialValue: Uint8Array) {\n this._counter = initialValue;\n }\n\n increment() {\n for(let i = 15; i >= 0; i--) {\n if(this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n}\n\nclass CTR {\n _counter: Counter;\n _remainingCounter: Uint8Array = null;\n _remainingCounterIndex = 16;\n _aes: AES;\n\n constructor(key: Uint8Array, counter: Uint8Array) {\n this._counter = new Counter(counter);\n this._aes = new AES(key);\n }\n\n update(payload: Uint8Array) {\n const encrypted = payload.slice();\n\n for(let i = 0; i < encrypted.length; i++) {\n if(this._remainingCounterIndex === 16) {\n this._remainingCounter = new Uint8Array(bytesFromWordss(this._aes.encrypt(this._counter._counter)));\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n}\n\n/* \n@cryptography/aes не работает с массивами которые не кратны 4, поэтому использую intermediate а не abridged\n*/\nexport default class Obfuscation {\n /* public enc: aesjs.ModeOfOperation.ModeOfOperationCTR;\n public dec: aesjs.ModeOfOperation.ModeOfOperationCTR; */\n\n public encNew: CTR;\n public decNew: CTR;\n\n public init(codec: Codec) {\n const initPayload = new Uint8Array(64);\n initPayload.randomize();\n \n while(true) {\n let val = (initPayload[3] << 24) | (initPayload[2] << 16) | (initPayload[1] << 8) | (initPayload[0]);\n let val2 = (initPayload[7] << 24) | (initPayload[6] << 16) | (initPayload[5] << 8) | (initPayload[4]);\n if(initPayload[0] !== 0xef &&\n val !== 0x44414548 &&\n val !== 0x54534f50 &&\n val !== 0x20544547 &&\n val !== 0x4954504f &&\n val !== 0xeeeeeeee &&\n val !== 0xdddddddd &&\n val2 !== 0x00000000) {\n //initPayload[56] = initPayload[57] = initPayload[58] = initPayload[59] = transport;\n break;\n }\n initPayload.randomize();\n }\n\n ////////////////////////initPayload.subarray(60, 62).hex = dcId;\n /* initPayload.set(new Uint8Array([161, 208, 67, 71, 118, 109, 20, 111, 113, 255, 134, 10, 159, 241, 7, 44, 217, 82, 187, 76, 108, 131, 200, 186, 33, 57, 177, 251, 52, 34, 18, 54, 65, 105, 37, 89, 38, 20, 47, 168, 126, 181, 24, 138, 212, 68, 60, 150, 225, 37, 181, 4, 201, 50, 72, 151, 168, 143, 204, 169, 81, 187, 241, 23]));\n console.log('initPayload', initPayload); */\n\n const reversedPayload = initPayload.slice().reverse();\n\n const encKey = initPayload.slice(8, 40);\n const encIv = initPayload.slice(40, 56);\n const decKey = reversedPayload.slice(8, 40);\n const decIv = reversedPayload.slice(40, 56);\n\n /* this.enc = new aesjs.ModeOfOperation.ctr(encKey, new aesjs.Counter(encIv as any));\n this.dec = new aesjs.ModeOfOperation.ctr(decKey, new aesjs.Counter(decIv as any)); */\n\n // console.log('encKey', encKey.hex, encIv.hex);\n // console.log('decKey', decKey.hex, decIv.hex);\n\n this.encNew = new CTR(encKey, encIv);\n this.decNew = new CTR(decKey, decIv);\n\n initPayload.set(codec.obfuscateTag, 56);\n const encrypted = this.encode(initPayload);\n\n //console.log('encrypted', encrypted);\n\n initPayload.set(encrypted.slice(56, 64), 56);\n\n return initPayload;\n }\n\n /* public encode(payload: Uint8Array) {\n let startTime = performance.now();\n let res = this.enc.encrypt(payload);\n let time = performance.now() - startTime;\n\n try {\n startTime = performance.now();\n let arr = this.encNew.encrypt(payload);\n //let resNew = bytesFromWords({words: arr, sigBytes: arr.length});\n let resNew = new Uint8Array(bytesFromWordss(arr));\n let time2 = performance.now() - startTime;\n console.log('Obfuscation: encode comparison:', res, arr, resNew, res.hex === resNew.hex, time2 < time);\n } catch(err) {\n console.error('Obfuscation: error:', err);\n }\n \n return res;\n }\n\n public decode(payload: Uint8Array) {\n let res = this.dec.encrypt(payload);\n\n try {\n let arr = this.decNew.decrypt(payload);\n //let resNew = bytesFromWords({words: arr, sigBytes: arr.length});\n let resNew = new Uint8Array(bytesFromWordss(arr));\n console.log('Obfuscation: decode comparison:', res, arr, resNew, res.hex === resNew.hex);\n } catch(err) {\n console.error('Obfuscation: error:', err);\n }\n \n return res;\n } */\n public encode(payload: Uint8Array) {\n return this.encNew.update(payload);\n }\n\n public decode(payload: Uint8Array) {\n return this.decNew.update(payload);\n }\n /* public encode(payload: Uint8Array) {\n let res = this.encNew.encrypt(payload);\n let bytes = new Uint8Array(bytesFromWordss(res));\n \n return bytes;\n }\n\n public decode(payload: Uint8Array) {\n let res = this.decNew.decrypt(payload);\n let bytes = new Uint8Array(bytesFromWordss(res));\n \n return bytes;\n } */\n}","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { Codec } from \"./codec\";\n\nexport class IntermediatePacketCodec implements Codec {\n public tag = 0xee;\n public obfuscateTag = new Uint8Array([this.tag, this.tag, this.tag, this.tag]);\n\n //private lol = 0;\n\n public encodePacket(data: Uint8Array) {\n if((data.length % 4) !== 0) {\n console.error('Encode error!', data.length, data);\n }\n\n const len = data.length;\n const header = new Uint8Array(new Int32Array([/* ++this.lol >= 25 ? 0x80000001 : */len]).buffer);\n\n //console.log('got nobody cause im braindead', header, len, /* data, */data.buffer.byteLength === data.length);\n return header.concat(data);\n }\n\n public readPacket(data: Uint8Array) {\n const length = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24);\n\n return data.slice(4, 4 + length);\n }\n}\n\nexport default new IntermediatePacketCodec();\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport Modes from \"../../../config/modes\";\nimport { logger, LogTypes } from \"../../logger\";\nimport MTPNetworker from \"../networker\";\nimport Obfuscation from \"./obfuscation\";\nimport MTTransport, { MTConnection, MTConnectionConstructable } from \"./transport\";\nimport intermediatePacketCodec from './intermediate';\n\nexport default class TcpObfuscated implements MTTransport {\n private codec = intermediatePacketCodec;\n private obfuscation = new Obfuscation();\n public networker: MTPNetworker;\n\n private pending: Array<Partial<{\n resolve: any, \n reject: any, \n body: Uint8Array, \n encoded?: Uint8Array,\n bodySent: boolean\n }>> = [];\n\n private debug = Modes.debug && false/* true */;\n private log: ReturnType<typeof logger>;\n public connected = false;\n private lastCloseTime: number;\n public connection: MTConnection;\n\n //private debugPayloads: MTPNetworker['debugRequests'] = [];\n\n constructor(private Connection: MTConnectionConstructable, private dcId: number, private url: string, private logSuffix: string, public retryTimeout: number) {\n let logTypes = LogTypes.Error | LogTypes.Log;\n if(this.debug) logTypes |= LogTypes.Debug;\n this.log = logger(`TCP-${dcId}` + logSuffix, logTypes);\n this.log('constructor');\n \n this.connect();\n }\n\n private onOpen = () => {\n this.connected = true;\n\n const initPayload = this.obfuscation.init(this.codec);\n\n this.connection.send(initPayload);\n\n if(this.networker) {\n this.pending.length = 0; // ! clear queue and reformat messages to container, because if sending simultaneously 10+ messages, connection will die\n this.networker.setConnectionStatus(true);\n this.networker.cleanupSent();\n this.networker.resend();\n } else {\n for(const pending of this.pending) {\n if(pending.encoded && pending.body) {\n pending.encoded = this.encodeBody(pending.body);\n }\n }\n }\n\n setTimeout(() => {\n this.releasePending();\n }, 0);\n };\n\n private onMessage = (buffer: ArrayBuffer) => {\n let data = this.obfuscation.decode(new Uint8Array(buffer));\n data = this.codec.readPacket(data);\n\n if(this.networker) { // authenticated!\n //this.pending = this.pending.filter(p => p.body); // clear pending\n\n this.debug && this.log.debug('redirecting to networker', data.length);\n this.networker.parseResponse(data).then(response => {\n this.debug && this.log.debug('redirecting to networker response:', response);\n\n try {\n this.networker.processMessage(response.response, response.messageId, response.sessionId);\n } catch(err) {\n this.log.error('handleMessage networker processMessage error', err);\n }\n\n //this.releasePending();\n }).catch(err => {\n this.log.error('handleMessage networker parseResponse error', err);\n });\n\n //this.dd();\n return;\n }\n\n //console.log('got hex:', data.hex);\n const pending = this.pending.shift();\n if(!pending) {\n this.debug && this.log.debug('no pending for res:', data.hex);\n return;\n }\n\n pending.resolve(data);\n };\n\n private onClose = () => {\n this.connected = false;\n\n this.connection.removeEventListener('open', this.onOpen);\n this.connection.removeEventListener('close', this.onClose);\n this.connection.removeEventListener('message', this.onMessage);\n this.connection = undefined;\n \n const time = Date.now();\n const diff = time - this.lastCloseTime;\n const needTimeout = !isNaN(diff) && diff < this.retryTimeout ? this.retryTimeout - diff : 0;\n \n if(this.networker) {\n this.networker.setConnectionStatus(false);\n this.pending.length = 0;\n }\n \n this.log('will try to reconnect after timeout:', needTimeout / 1000);\n setTimeout(() => {\n this.log('trying to reconnect...');\n this.lastCloseTime = Date.now();\n \n if(!this.networker) {\n for(const pending of this.pending) {\n if(pending.bodySent) {\n pending.bodySent = false;\n }\n }\n }\n \n this.connect();\n }, needTimeout);\n };\n\n private connect() {\n this.connection = new this.Connection(this.dcId, this.url, this.logSuffix);\n this.connection.addEventListener('open', this.onOpen);\n this.connection.addEventListener('close', this.onClose);\n this.connection.addEventListener('message', this.onMessage);\n }\n\n private encodeBody(body: Uint8Array) {\n const toEncode = this.codec.encodePacket(body);\n\n //this.log('send before obf:', /* body.hex, nonce.hex, */ toEncode.hex);\n const encoded = this.obfuscation.encode(toEncode);\n //this.log('send after obf:', enc.hex);\n\n return encoded;\n }\n\n public send(body: Uint8Array) {\n this.debug && this.log.debug('-> body length to pending:', body.length);\n\n const encoded: typeof body = this.connected ? this.encodeBody(body) : undefined;\n\n //return;\n\n if(this.networker) {\n this.pending.push({body, encoded});\n this.releasePending();\n } else {\n const promise = new Promise<typeof body>((resolve, reject) => {\n this.pending.push({resolve, reject, body, encoded});\n });\n\n this.releasePending();\n\n return promise;\n }\n }\n\n private releasePending(/* tt = false */) {\n if(!this.connected) {\n //this.connect();\n return;\n }\n\n /* if(!tt) {\n this.releasePendingDebounced();\n return;\n } */\n\n //this.log('-> messages to send:', this.pending.length);\n let length = this.pending.length;\n //for(let i = length - 1; i >= 0; --i) {\n for(let i = 0; i < length; ++i) {\n /* if(this.ws.bufferedAmount) {\n break;\n } */\n\n const pending = this.pending[i];\n const {body, bodySent} = pending;\n let encoded = pending.encoded;\n if(body && !bodySent) {\n\n //this.debugPayloads.push({before: body.slice(), after: enc});\n\n this.debug && this.log.debug('-> body length to send:', body.length);\n /* if(this.ws.bufferedAmount) {\n this.log.error('bufferedAmount:', this.ws.bufferedAmount);\n } */\n\n /* if(this.ws.readyState !== this.ws.OPEN) {\n this.log.error('ws is closed?');\n this.connected = false;\n break;\n } */\n\n if(!encoded) {\n encoded = pending.encoded = this.encodeBody(body);\n }\n\n //this.lol.push(body);\n //setTimeout(() => {\n this.connection.send(encoded);\n //}, 100);\n //this.dd();\n \n if(!pending.resolve) { // remove if no response needed\n this.pending.splice(i--, 1);\n length--;\n } else {\n pending.bodySent = true;\n }\n\n //delete pending.body;\n }\n }\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nexport const userAgent = navigator ? navigator.userAgent : null;\nexport const isApple = navigator.userAgent.search(/OS X|iPhone|iPad|iOS/i) !== -1;\nexport const isAndroid = navigator.userAgent.toLowerCase().indexOf('android') !== -1;\nexport const isChromium = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n\n/**\n * Returns true when run in WebKit derived browsers.\n * This is used as a workaround for a memory leak in Safari caused by using Transferable objects to\n * transfer data between WebWorkers and the main thread.\n * https://github.com/mapbox/mapbox-gl-js/issues/8771\n *\n * This should be removed once the underlying Safari issue is fixed.\n */\nexport const ctx = typeof(window) !== 'undefined' ? window : self;\n\n// https://stackoverflow.com/a/58065241\nexport const isAppleMobile = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\n !ctx.MSStream;\n\nexport const isSafari = !!('safari' in ctx) || !!(userAgent && (/\\b(iPad|iPhone|iPod)\\b/.test(userAgent) || (!!userAgent.match('Safari') && !userAgent.match('Chrome'))))/* || true */;\nexport const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n\nexport const isMobileSafari = isSafari && isAppleMobile;\n\nexport const isMobile = /* screen.width && screen.width < 480 || */navigator.userAgent.search(/iOS|iPhone OS|Android|BlackBerry|BB10|Series ?[64]0|J2ME|MIDP|opera mini|opera mobi|mobi.+Gecko|Windows Phone/i) != -1;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nexport const isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;\nexport const isServiceWorker = typeof ServiceWorkerGlobalScope !== 'undefined' && self instanceof ServiceWorkerGlobalScope;\nexport const isWorker = isWebWorker || isServiceWorker;\n\n// в SW может быть сразу две переменных TRUE, поэтому проверяю по последней\n\nconst notifyServiceWorker = (all: boolean, ...args: any[]) => {\n (self as any as ServiceWorkerGlobalScope)\n .clients\n .matchAll({ includeUncontrolled: false, type: 'window' })\n .then((listeners) => {\n if(!listeners.length) {\n //console.trace('no listeners?', self, listeners);\n return;\n }\n\n listeners.slice(all ? 0 : -1).forEach(listener => {\n // @ts-ignore\n listener.postMessage(...args);\n });\n });\n};\n\nconst notifyWorker = (...args: any[]) => {\n // @ts-ignore\n (self as any as DedicatedWorkerGlobalScope).postMessage(...args);\n};\n\nconst noop = () => {};\n\nexport const notifySomeone = isServiceWorker ? notifyServiceWorker.bind(null, false) : (isWebWorker ? notifyWorker : noop);\nexport const notifyAll = isServiceWorker ? notifyServiceWorker.bind(null, true) : (isWebWorker ? notifyWorker : noop);\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport MTTransport, { MTConnection, MTConnectionConstructable } from './transports/transport';\nimport Modes from '../../config/modes';\n\n///////////////////////////////////////////\n/////////////////////////////////////\n//////////\n\n/////////////////////\nimport Socket from './transports/websocket';\nimport TcpObfuscated from './transports/tcpObfuscated';\nimport EventListenerBase from '../../helpers/eventListenerBase';\nimport { isSafari } from '../../helpers/userAgent';\nimport { notifyAll, isWebWorker } from '../../helpers/context';\n//////////\n\nexport type TransportType = 'websocket' | 'https' | 'http';\nexport type ConnectionType = 'client' | 'download' | 'upload';\ntype Servers = {\n [transportType in TransportType]: {\n [connectionType in ConnectionType]: {\n [dcId: number]: MTTransport[]\n }\n }\n};\n\nlet socketId = 0;\nconst TEST_SUFFIX = Modes.test ? '_test' : '';\n\n///////////////////\nclass SocketProxied extends EventListenerBase<{\n open: () => void,\n message: (buffer: ArrayBuffer) => any,\n close: () => void,\n}> implements MTConnection {\n private id: number;\n\n constructor(protected dcId: number, protected url: string, logSuffix: string) {\n super();\n this.id = ++socketId;\n socketsProxied.set(this.id, this);\n\n notifyAll({\n type: 'socketProxy',\n payload: {\n type: 'setup', \n payload: {\n dcId, \n url,\n logSuffix\n },\n id: this.id\n }\n });\n }\n\n public send(payload: Uint8Array) {\n const task: any = {\n type: 'socketProxy', \n payload: {\n type: 'send',\n payload,\n id: this.id\n }\n };\n\n notifyAll(task);\n }\n\n public close() {\n const task: any = {\n type: 'socketProxy',\n payload: {\n type: 'close',\n id: this.id\n }\n };\n\n notifyAll(task);\n }\n}\n//////////\n\nexport const socketsProxied: Map<number, SocketProxied> = new Map();\n\nexport class DcConfigurator {\n private sslSubdomains = ['pluto', 'venus', 'aurora', 'vesta', 'flora'];\n\n private dcOptions = Modes.test\n ? [\n {id: 1, host: '149.154.175.10', port: 80},\n {id: 2, host: '149.154.167.40', port: 80},\n {id: 3, host: '149.154.175.117', port: 80}\n ]\n : [\n {id: 1, host: '149.154.175.50', port: 80},\n {id: 2, host: '149.154.167.50', port: 80},\n {id: 3, host: '149.154.175.100', port: 80},\n {id: 4, host: '149.154.167.91', port: 80},\n {id: 5, host: '149.154.171.5', port: 80}\n ];\n\n private chosenServers: Servers = {} as any;\n\n///////////////////////\n private transportSocket = (dcId: number, connectionType: ConnectionType) => {\n const subdomain = this.sslSubdomains[dcId - 1];\n const path = 'apiws' + TEST_SUFFIX;\n const chosenServer = 'wss://' + subdomain + '.web.telegram.org/' + path;\n const logSuffix = connectionType === 'upload' ? '-U' : connectionType === 'download' ? '-D' : '';\n\n const retryTimeout = connectionType === 'client' ? 10000 : 10000;\n\n const oooohLetMeLive: MTConnectionConstructable = (isSafari && isWebWorker && typeof(SocketProxied) !== 'undefined') /* || true */ ? SocketProxied : Socket;\n\n return new TcpObfuscated(oooohLetMeLive, dcId, chosenServer, logSuffix, retryTimeout);\n };\n////////////\n\n/////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////\n//////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////////////////////\n///////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////////////////\n////////////\n///////////////////////////////////////////\n//////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////////////////////\n/////////\n///////\n/////\n////\n////////////\n\n public chooseServer(dcId: number, connectionType: ConnectionType = 'client', transportType: TransportType = 'websocket', reuse = true) {\n /* if(transportType === 'websocket' && !Modes.multipleConnections) {\n connectionType = 'client';\n } */\n\n if(!this.chosenServers.hasOwnProperty(transportType)) {\n this.chosenServers[transportType] = {\n client: {},\n download: {},\n upload: {}\n };\n }\n\n const servers = this.chosenServers[transportType][connectionType];\n\n if(!(dcId in servers)) {\n servers[dcId] = [];\n }\n\n const transports = servers[dcId];\n\n if(!transports.length || !reuse/* || (upload && transports.length < 1) */) {\n let transport: MTTransport;\n\n/////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////\n transport = this.transportSocket(dcId, connectionType);\n///////////////\n///////////////////////////////////////////////////////////\n////////////////\n \n if(!transport) {\n console.error('No chosenServer!', dcId);\n return null;\n }\n \n if(reuse) {\n transports.push(transport);\n }\n \n return transport;\n }\n \n return transports[0];\n }\n}\n\nexport default new DcConfigurator();\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport { TLSerialization } from \"./tl_utils\";\nimport CryptoWorker from '../crypto/cryptoworker';\nimport { bytesFromArrayBuffer, bytesFromHex, bytesToHex } from \"../../helpers/bytes\";\nimport { bigInt2str, str2bigInt } from \"../../vendor/leemon\";\n\nexport class RSAKeysManager {\n\n /**\n * Server public key, obtained from here: https://core.telegram.org/api/obtaining_api_id\n * \n * \n * -----BEGIN RSA PUBLIC KEY-----\n * MIIBCgKCAQEAwVACPi9w23mF3tBkdZz+zwrzKOaaQdr01vAbU4E1pvkfj4sqDsm6\n * lyDONS789sVoD/xCS9Y0hkkC3gtL1tSfTlgCMOOul9lcixlEKzwKENj1Yz/s7daS\n * an9tqw3bfUV/nqgbhGX81v/+7RFAEd+RwFnK7a+XYl9sluzHRyVVaTTveB2GazTw\n * Efzk2DWgkBluml8OREmvfraX3bkHZJTKX4EQSjBbbdJ2ZXIsRrYOXfaA+xayEGB+\n * 8hdlLmAjbCVfaigxX0CDqWeR1yFL9kwd9P0NsZRPsmoqVwMbMu7mStFai6aIhc3n\n * Slv8kg9qv1m6XHVQY3PnEw+QQtqSIXklHwIDAQAB\n * -----END RSA PUBLIC KEY-----\n * \n * -----BEGIN PUBLIC KEY-----\n * MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAruw2yP/BCcsJliRoW5eB\n * VBVle9dtjJw+OYED160Wybum9SXtBBLXriwt4rROd9csv0t0OHCaTmRqBcQ0J8fx\n * hN6/cpR1GWgOZRUAiQxoMnlt0R93LCX/j1dnVa/gVbCjdSxpbrfY2g2L4frzjJvd\n * l84Kd9ORYjDEAyFnEA7dD556OptgLQQ2e2iVNq8NZLYTzLp5YpOdO1doK+ttrltg\n * gTCy5SrKeLoCPPbOgGsdxJxyz5KKcZnSLj16yE5HvJQn0CNpRdENvRUXe6tBP78O\n * 39oJ8BTHp9oIjd6XWXAsp2CvK45Ol8wFXGF710w9lwCGNbmNxNYhtIkdqfsEcwR5\n * JwIDAQAB\n * -----END PUBLIC KEY-----\n * \n * -----BEGIN PUBLIC KEY-----\n * MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvfLHfYH2r9R70w8prHbl\n * Wt/nDkh+XkgpflqQVcnAfSuTtO05lNPspQmL8Y2XjVT4t8cT6xAkdgfmmvnvRPOO\n * KPi0OfJXoRVylFzAQG/j83u5K3kRLbae7fLccVhKZhY46lvsueI1hQdLgNV9n1cQ\n * 3TDS2pQOCtovG4eDl9wacrXOJTG2990VjgnIKNA0UMoP+KF03qzryqIt3oTvZq03\n * DyWdGK+AZjgBLaDKSnC6qD2cFY81UryRWOab8zKkWAnhw2kFpcqhI0jdV5QaSCEx\n * vnsjVaX0Y1N0870931/5Jb9ICe4nweZ9kSDF/gip3kWLG0o8XQpChDfyvsqB9OLV\n * /wIDAQAB\n * -----END PUBLIC KEY-----\n * \n * -----BEGIN PUBLIC KEY-----\n * MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs/ditzm+mPND6xkhzwFI\n * z6J/968CtkcSE/7Z2qAJiXbmZ3UDJPGrzqTDHkO30R8VeRM/Kz2f4nR05GIFiITl\n * 4bEjvpy7xqRDspJcCFIOcyXm8abVDhF+th6knSU0yLtNKuQVP6voMrnt9MV1X92L\n * GZQLgdHZbPQz0Z5qIpaKhdyA8DEvWWvSUwwc+yi1/gGaybwlzZwqXYoPOhwMebzK\n * Uk0xW14htcJrRrq+PXXQbRzTMynseCoPIoke0dtCodbA3qQxQovE16q9zz4Otv2k\n * 4j63cz53J+mhkVWAeWxVGI0lltJmWtEYK6er8VqqWot3nqmWMXogrgRLggv/Nbbo\n * oQIDAQAB\n * -----END PUBLIC KEY-----\n * \n * -----BEGIN PUBLIC KEY-----\n * MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvmpxVY7ld/8DAjz6F6q0\n * 5shjg8/4p6047bn6/m8yPy1RBsvIyvuDuGnP/RzPEhzXQ9UJ5Ynmh2XJZgHoE9xb\n * nfxL5BXHplJhMtADXKM9bWB11PU1Eioc3+AXBB8QiNFBn2XI5UkO5hPhbb9mJpjA\n * 9Uhw8EdfqJP8QetVsI/xrCEbwEXe0xvifRLJbY08/Gp66KpQvy7g8w7VB8wlgePe\n * xW3pT13Ap6vuC+mQuJPyiHvSxjEKHgqePji9NP3tJUFQjcECqcm0yV7/2d0t/pbC\n * m+ZH1sadZspQCEPPrtbkQBlvHb4OLiIWPGHKSMeRFvp3IWcmdJqXahxLCUS1Eh6M\n * AQIDAQAB\n * -----END PUBLIC KEY-----\n *\n * Bytes can be got via \n * $ openssl rsa -pubin -in key.pub -text -noout\n */\n\n private publisKeysHex = [{\n modulus: 'c150023e2f70db7985ded064759cfecf0af328e69a41daf4d6f01b538135a6f91f8f8b2a0ec9ba9720ce352efcf6c5680ffc424bd634864902de0b4bd6d49f4e580230e3ae97d95c8b19442b3c0a10d8f5633fecedd6926a7f6dab0ddb7d457f9ea81b8465fcd6fffeed114011df91c059caedaf97625f6c96ecc74725556934ef781d866b34f011fce4d835a090196e9a5f0e4449af7eb697ddb9076494ca5f81104a305b6dd27665722c46b60e5df680fb16b210607ef217652e60236c255f6a28315f4083a96791d7214bf64c1df4fd0db1944fb26a2a57031b32eee64ad15a8ba68885cde74a5bfc920f6abf59ba5c75506373e7130f9042da922179251f',\n exponent: '010001'\n }, {\n modulus: 'aeec36c8ffc109cb099624685b97815415657bd76d8c9c3e398103d7ad16c9bba6f525ed0412d7ae2c2de2b44e77d72cbf4b7438709a4e646a05c43427c7f184debf72947519680e651500890c6832796dd11f772c25ff8f576755afe055b0a3752c696eb7d8da0d8be1faf38c9bdd97ce0a77d3916230c4032167100edd0f9e7a3a9b602d04367b689536af0d64b613ccba7962939d3b57682beb6dae5b608130b2e52aca78ba023cf6ce806b1dc49c72cf928a7199d22e3d7ac84e47bc9427d0236945d10dbd15177bab413fbf0edfda09f014c7a7da088dde9759702ca760af2b8e4e97cc055c617bd74c3d97008635b98dc4d621b4891da9fb0473047927',\n exponent: '010001'\n }, {\n modulus: 'bdf2c77d81f6afd47bd30f29ac76e55adfe70e487e5e48297e5a9055c9c07d2b93b4ed3994d3eca5098bf18d978d54f8b7c713eb10247607e69af9ef44f38e28f8b439f257a11572945cc0406fe3f37bb92b79112db69eedf2dc71584a661638ea5becb9e23585074b80d57d9f5710dd30d2da940e0ada2f1b878397dc1a72b5ce2531b6f7dd158e09c828d03450ca0ff8a174deacebcaa22dde84ef66ad370f259d18af806638012da0ca4a70baa83d9c158f3552bc9158e69bf332a45809e1c36905a5caa12348dd57941a482131be7b2355a5f4635374f3bd3ddf5ff925bf4809ee27c1e67d9120c5fe08a9de458b1b4a3c5d0a428437f2beca81f4e2d5ff',\n exponent: '010001'\n }, {\n modulus: 'b3f762b739be98f343eb1921cf0148cfa27ff7af02b6471213fed9daa0098976e667750324f1abcea4c31e43b7d11f1579133f2b3d9fe27474e462058884e5e1b123be9cbbc6a443b2925c08520e7325e6f1a6d50e117eb61ea49d2534c8bb4d2ae4153fabe832b9edf4c5755fdd8b19940b81d1d96cf433d19e6a22968a85dc80f0312f596bd2530c1cfb28b5fe019ac9bc25cd9c2a5d8a0f3a1c0c79bcca524d315b5e21b5c26b46babe3d75d06d1cd33329ec782a0f22891ed1db42a1d6c0dea431428bc4d7aabdcf3e0eb6fda4e23eb7733e7727e9a1915580796c55188d2596d2665ad1182ba7abf15aaa5a8b779ea996317a20ae044b820bff35b6e8a1',\n exponent: '010001'\n }, {\n modulus: 'be6a71558ee577ff03023cfa17aab4e6c86383cff8a7ad38edb9fafe6f323f2d5106cbc8cafb83b869cffd1ccf121cd743d509e589e68765c96601e813dc5b9dfc4be415c7a6526132d0035ca33d6d6075d4f535122a1cdfe017041f1088d1419f65c8e5490ee613e16dbf662698c0f54870f0475fa893fc41eb55b08ff1ac211bc045ded31be27d12c96d8d3cfc6a7ae8aa50bf2ee0f30ed507cc2581e3dec56de94f5dc0a7abee0be990b893f2887bd2c6310a1e0a9e3e38bd34fded2541508dc102a9c9b4c95effd9dd2dfe96c29be647d6c69d66ca500843cfaed6e440196f1dbe0e2e22163c61ca48c79116fa77216726749a976a1c4b0944b5121e8c01',\n exponent: '010001'\n }];\n\n private publicKeysParsed: {\n [hex: string]: {\n modulus: string,\n exponent: string\n }\n } = {};\n private prepared = false;\n private preparePromise: Promise<void> = null;\n\n // prepareRsaKeys\n public prepare(): Promise<void> {\n if(this.preparePromise) return this.preparePromise;\n else if(this.prepared) {\n return Promise.resolve();\n }\n\n return this.preparePromise = Promise.all(this.publisKeysHex.map(keyParsed => {\n let RSAPublicKey = new TLSerialization();\n RSAPublicKey.storeBytes(bytesFromHex(keyParsed.modulus), 'n');\n RSAPublicKey.storeBytes(bytesFromHex(keyParsed.exponent), 'e');\n\n let buffer = RSAPublicKey.getBuffer();\n\n return CryptoWorker.sha1Hash(buffer).then(hash => {\n let fingerprintBytes = bytesFromArrayBuffer(hash).slice(-8);\n fingerprintBytes.reverse();\n \n this.publicKeysParsed[bytesToHex(fingerprintBytes).toLowerCase()] = {\n modulus: keyParsed.modulus,\n exponent: keyParsed.exponent\n };\n });\n })).then(() => {\n this.prepared = true;\n\n //console.log('[MT] Prepared keys');\n this.preparePromise = null;\n });\n }\n\n // selectRsaKeyByFingerPrint\n public async select(fingerprints: Array<any>) {\n await this.prepare();\n\n var fingerprintHex, foundKey, i;\n for(i = 0; i < fingerprints.length; i++) {\n //fingerprintHex = bigStringInt(fingerprints[i]).toString(16);\n fingerprintHex = bigInt2str(str2bigInt(fingerprints[i], 10), 16).toLowerCase();\n\n if(fingerprintHex.length < 16) {\n fingerprintHex = new Array(16 - fingerprintHex.length).fill('0').join('') + fingerprintHex;\n }\n\n //console.log(fingerprintHex, this.publicKeysParsed);\n if(foundKey = this.publicKeysParsed[fingerprintHex]) {\n return Object.assign({\n fingerprint: fingerprints[i]\n }, foundKey);\n }\n }\n\n return false;\n }\n}\n\nexport default new RSAKeysManager();\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport { TLSerialization, TLDeserialization } from \"./tl_utils\";\nimport dcConfigurator from \"./dcConfigurator\";\nimport rsaKeysManager from \"./rsaKeysManager\";\nimport timeManager from \"./timeManager\";\n\nimport CryptoWorker from \"../crypto/cryptoworker\";\n\nimport { logger, LogTypes } from \"../logger\";\nimport { bytesCmp, bytesToHex, bytesFromHex, bytesXor } from \"../../helpers/bytes\";\nimport DEBUG from \"../../config/debug\";\nimport { cmp, int2bigInt, one, pow, str2bigInt, sub } from \"../../vendor/leemon\";\n\n/* let fNewNonce: any = bytesFromHex('8761970c24cb2329b5b2459752c502f3057cb7e8dbab200e526e8767fdc73b3c').reverse();\nlet fNonce: any = bytesFromHex('b597720d11faa5914ef485c529cde414').reverse();\nlet fResult: any = new Uint8Array(bytesFromHex('000000000000000001b473a0661b285e480000006324160514e4cd29c585f44e91a5fa110d7297b5c0c4134c84893db5715ecd56af5ed618082182053cc5de91cd00000015c4b51c02000000a5b7f709355fc30b216be86c022bb4c3'));\n\nfNewNonce = false;\nfNonce = false;\nfResult = false; */\n\ntype AuthOptions = {\n dcId: number,\n nonce: Uint8Array,\n \n serverNonce?: Uint8Array,\n pq?: Uint8Array,\n fingerprints?: string[],\n publicKey?: {\n modulus: string,\n exponent: string,\n fingerprint: string\n },\n \n // good\n p?: number[],\n q?: number[],\n \n newNonce?: Uint8Array,\n \n retry?: number,\n \n b?: number[],\n g?: number,\n gA?: Uint8Array,\n dhPrime?: Uint8Array,\n \n tmpAesKey?: Uint8Array,\n tmpAesIv?: Uint8Array,\n \n authKeyId?: Uint8Array,\n authKey?: number[],\n serverSalt?: number[],\n\n localTime?: number,\n serverTime?: any\n};\n\nexport class Authorizer {\n private cached: {\n [dcId: number]: Promise<AuthOptions>\n } = {};\n \n private log: ReturnType<typeof logger>;\n \n constructor() {\n this.log = logger(`AUTHORIZER`, LogTypes.Error | LogTypes.Log);\n }\n \n public mtpSendPlainRequest(dcId: number, requestArray: Uint8Array) {\n const requestLength = requestArray.byteLength;\n //requestArray = new /* Int32Array */Uint8Array(requestBuffer);\n \n const header = new TLSerialization();\n header.storeLongP(0, 0, 'auth_key_id'); // Auth key\n header.storeLong(timeManager.generateId(), 'msg_id'); // Msg_id\n header.storeInt(requestLength, 'request_length');\n \n const headerArray = header.getBytes(true) as Uint8Array;\n const resultArray = new Uint8Array(headerArray.byteLength + requestLength);\n resultArray.set(headerArray);\n resultArray.set(requestArray, headerArray.length);\n \n /* var headerBuffer = header.getBuffer(),\n headerArray = new Int32Array(headerBuffer);\n var headerLength = headerBuffer.byteLength;\n \n var resultBuffer = new ArrayBuffer(headerLength + requestLength),\n resultArray = new Int32Array(resultBuffer);\n \n resultArray.set(headerArray);\n resultArray.set(requestArray, headerArray.length);\n \n const requestData = xhrSendBuffer ? resultBuffer : resultArray; */\n const transport = dcConfigurator.chooseServer(dcId);\n const baseError = {\n code: 406,\n type: 'NETWORK_BAD_RESPONSE',\n transport: transport\n };\n \n if(DEBUG) {\n this.log('mtpSendPlainRequest: creating requestPromise');\n }\n \n const promise = transport.send(resultArray) as any as Promise<Uint8Array>;\n return promise.then(result => {\n if(DEBUG) {\n this.log('mtpSendPlainRequest: in good sector', result);\n }\n \n if(!result || !result.byteLength) {\n return Promise.reject(baseError);\n }\n \n try {\n /* result = fResult ? fResult : result;\n fResult = new Uint8Array(0); */\n \n const deserializer = new TLDeserialization(result, {mtproto: true});\n const auth_key_id = deserializer.fetchLong('auth_key_id');\n if(auth_key_id !== '0') this.log.error('auth_key_id !== 0', auth_key_id);\n \n const msg_id = deserializer.fetchLong('msg_id');\n if(msg_id === '0') this.log.error('msg_id === 0', msg_id);\n \n const msg_len = deserializer.fetchInt('msg_len');\n if(!msg_len) this.log.error('no msg_len', msg_len);\n \n return deserializer;\n } catch(e) {\n this.log.error('mtpSendPlainRequest: deserialization went bad', e);\n const error = Object.assign(baseError, {originalError: e});\n throw error;\n }\n }, error => {\n if(!error.message && !error.type) {\n error = Object.assign(baseError, {\n originalError: error\n });\n }\n \n return Promise.reject(error);\n });\n }\n \n public async mtpSendReqPQ(auth: AuthOptions) {\n var request = new TLSerialization({mtproto: true});\n \n request.storeMethod('req_pq_multi', {nonce: auth.nonce});\n \n // need\n rsaKeysManager.prepare().then(() => {});\n \n if(DEBUG) {\n this.log('Send req_pq', auth.nonce.hex);\n }\n try {\n var deserializer = await this.mtpSendPlainRequest(auth.dcId, request.getBytes(true));\n } catch(error) {\n this.log.error('req_pq error', error.message);\n throw error;\n }\n \n var response = deserializer.fetchObject('ResPQ');\n \n if(response._ !== 'resPQ') {\n throw new Error('[MT] resPQ response invalid: ' + response._);\n }\n \n if(!bytesCmp(auth.nonce, response.nonce)) {\n this.log.error(auth.nonce, response.nonce);\n throw new Error('[MT] resPQ nonce mismatch');\n }\n \n //auth.serverNonce = response.server_nonce;\n auth.serverNonce = new Uint8Array(response.server_nonce); // need\n auth.pq = response.pq;\n auth.fingerprints = response.server_public_key_fingerprints;\n \n if(DEBUG) {\n this.log('Got ResPQ', bytesToHex(auth.serverNonce), bytesToHex(auth.pq), auth.fingerprints);\n }\n \n let publicKey = await rsaKeysManager.select(auth.fingerprints);\n if(!publicKey) {\n throw new Error('[MT] No public key found');\n }\n \n auth.publicKey = publicKey;\n \n if(DEBUG) {\n this.log('PQ factorization start', auth.pq);\n }\n \n try {\n var pAndQ = await CryptoWorker.factorize(auth.pq);\n } catch(error) {\n this.log.error('worker error factorize', error);\n throw error;\n }\n \n auth.p = pAndQ[0];\n auth.q = pAndQ[1];\n \n if(DEBUG) {\n this.log('PQ factorization done', pAndQ);\n }\n /* let p = new Uint32Array(new Uint8Array(auth.p).buffer)[0];\n let q = new Uint32Array(new Uint8Array(auth.q).buffer)[0];\n console.log(dT(), 'PQ factorization done', pAndQ, p.toString(16), q.toString(16)); */\n \n return this.mtpSendReqDhParams(auth);\n }\n \n public async mtpSendReqDhParams(auth: AuthOptions) {\n auth.newNonce = new Uint8Array(32).randomize();\n /* auth.newNonce = new Array(32); // need array, not uint8array!\n MTProto.secureRandom.nextBytes(auth.newNonce); */\n \n //console.log(\"TCL: Authorizer -> mtpSendReqDhParams -> auth.newNonce\", auth.newNonce)\n \n // remove\n // auth.newNonce = fNewNonce ? fNewNonce : auth.newNonce;\n // console.log(\"TCL: Authorizer -> mtpSendReqDhParams -> auth.newNonce\", auth.newNonce);\n \n let p_q_inner_data = {\n _: 'p_q_inner_data',\n pq: auth.pq,\n p: auth.p,\n q: auth.q,\n nonce: auth.nonce,\n server_nonce: auth.serverNonce,\n new_nonce: auth.newNonce\n };\n \n let data = new TLSerialization({mtproto: true});\n data.storeObject(p_q_inner_data, 'P_Q_inner_data', 'DECRYPTED_DATA');\n /* console.log('p_q_inner_data', p_q_inner_data, \n bytesToHex(bytesFromArrayBuffer(data.getBuffer())), \n sha1BytesSync(data.getBuffer()),\n bytesFromArrayBuffer(await CryptoWorker.sha1Hash(data.getBuffer()))); */\n \n let uint8Data = data.getBytes(true);\n let sha1Hashed = await CryptoWorker.sha1Hash(uint8Data);\n \n //var dataWithHash = sha1BytesSync(data.getBuffer()).concat(data.getBytes() as number[]);\n let dataWithHash = sha1Hashed.concat(uint8Data);\n \n //dataWithHash = addPadding(dataWithHash, 255);\n //dataWithHash = dataWithHash.concat(bytesFromHex('96228ea7790e71caaabc2ab67f4412e9aa224c664d232cc08617a32ce1796aa052da4a737083211689858f461e4473fd6394afd3aa0c8014840dc13f47beaf4fc3b9229aea9cfa83f9f6e676e50ee7676542fb75606879ee7e65cf3a2295b4ba0934ceec1011560c62395a6e9593bfb117cd0da75ba56723672d100ac17ec4d805aa59f7852e3a25a79ee4'));\n //console.log('sha1Hashed', bytesToHex(sha1Hashed), 'dataWithHash', bytesToHex(dataWithHash), dataWithHash.length);\n \n let rsaEncrypted = await CryptoWorker.rsaEncrypt(auth.publicKey, dataWithHash);\n //let rsaEncrypted = await CryptoWorker.rsaEncrypt(auth.publicKey, dataWithHash);\n \n //console.log('rsaEncrypted', rsaEncrypted, new Uint8Array(rsaEncrypted).hex);\n \n let req_DH_params = {\n nonce: auth.nonce,\n server_nonce: auth.serverNonce,\n p: auth.p,\n q: auth.q,\n public_key_fingerprint: auth.publicKey.fingerprint,\n encrypted_data: rsaEncrypted\n };\n \n var request = new TLSerialization({mtproto: true});\n request.storeMethod('req_DH_params', req_DH_params);\n \n let requestBytes = request.getBytes(true);\n \n if(DEBUG) {\n this.log('Send req_DH_params', req_DH_params/* , requestBytes.hex */);\n }\n \n try {\n var deserializer = await this.mtpSendPlainRequest(auth.dcId, requestBytes);\n } catch(error) {\n this.log.error('Send req_DH_params FAIL!', error);\n throw error;\n }\n \n var response = deserializer.fetchObject('Server_DH_Params', 'RESPONSE');\n \n if(DEBUG) {\n this.log('Sent req_DH_params, response:', response);\n }\n \n if(response._ !== 'server_DH_params_fail' && response._ !== 'server_DH_params_ok') {\n throw new Error('[MT] Server_DH_Params response invalid: ' + response._);\n }\n \n if(!bytesCmp(auth.nonce, response.nonce)) {\n throw new Error('[MT] Server_DH_Params nonce mismatch');\n }\n \n if(!bytesCmp(auth.serverNonce, response.server_nonce)) {\n throw new Error('[MT] Server_DH_Params server_nonce mismatch');\n }\n \n if(response._ === 'server_DH_params_fail') {\n //var newNonceHash = sha1BytesSync(auth.newNonce).slice(-16);\n var newNonceHash = (await CryptoWorker.sha1Hash(auth.newNonce)).slice(-16);\n if(!bytesCmp(newNonceHash, response.new_nonce_hash)) {\n throw new Error('[MT] server_DH_params_fail new_nonce_hash mismatch');\n }\n \n throw new Error('[MT] server_DH_params_fail');\n }\n \n // fill auth object\n try {\n await this.mtpDecryptServerDhDataAnswer(auth, response.encrypted_answer);\n } catch(e) {\n this.log.error('mtpDecryptServerDhDataAnswer FAILED!', e);\n throw e;\n }\n \n //console.log(dT(), 'mtpSendReqDhParams: executing mtpSendSetClientDhParams...');\n \n return this.mtpSendSetClientDhParams(auth as any); // костыль\n }\n \n public async mtpDecryptServerDhDataAnswer(auth: AuthOptions, encryptedAnswer: any) {\n auth.localTime = Date.now();\n \n // can't concat Array with Uint8Array!\n //auth.tmpAesKey = sha1BytesSync(auth.newNonce.concat(auth.serverNonce)).concat(sha1BytesSync(auth.serverNonce.concat(auth.newNonce)).slice(0, 12));\n //auth.tmpAesIv = sha1BytesSync(auth.serverNonce.concat(auth.newNonce)).slice(12).concat(sha1BytesSync([].concat(auth.newNonce, auth.newNonce)), auth.newNonce.slice(0, 4));\n auth.tmpAesKey = (await CryptoWorker.sha1Hash(auth.newNonce.concat(auth.serverNonce)))\n .concat((await CryptoWorker.sha1Hash(auth.serverNonce.concat(auth.newNonce))).slice(0, 12));\n \n auth.tmpAesIv = (await CryptoWorker.sha1Hash(auth.serverNonce.concat(auth.newNonce))).slice(12)\n .concat(await CryptoWorker.sha1Hash(auth.newNonce.concat(auth.newNonce)), auth.newNonce.slice(0, 4));\n \n \n /* console.log(auth.serverNonce.concat(auth.newNonce));\n console.log(auth.newNonce.concat(auth.serverNonce));\n console.log(auth.newNonce.concat(auth.newNonce)); */\n \n \n //var answerWithHash = aesDecryptSync(encryptedAnswer, auth.tmpAesKey, auth.tmpAesIv);\n var answerWithHash = new Uint8Array(await CryptoWorker.aesDecrypt(encryptedAnswer, auth.tmpAesKey, auth.tmpAesIv));\n \n var hash = answerWithHash.slice(0, 20);\n var answerWithPadding = answerWithHash.slice(20);\n \n // console.log('hash', hash);\n \n var deserializer = new TLDeserialization(answerWithPadding, {mtproto: true});\n var response = deserializer.fetchObject('Server_DH_inner_data');\n \n if(response._ !== 'server_DH_inner_data') {\n throw new Error('[MT] server_DH_inner_data response invalid: ' + response);\n }\n \n if(!bytesCmp(auth.nonce, response.nonce)) {\n throw new Error('[MT] server_DH_inner_data nonce mismatch');\n }\n \n if(!bytesCmp(auth.serverNonce, response.server_nonce)) {\n throw new Error('[MT] server_DH_inner_data serverNonce mismatch');\n }\n \n if(DEBUG) {\n this.log('Done decrypting answer');\n }\n auth.g = response.g;\n auth.dhPrime = response.dh_prime;\n auth.gA = response.g_a;\n auth.serverTime = response.server_time;\n auth.retry = 0;\n \n this.mtpVerifyDhParams(auth.g, auth.dhPrime, auth.gA);\n \n var offset = deserializer.getOffset();\n \n //if(!bytesCmp(hash, sha1BytesSync(answerWithPadding.slice(0, offset)))) {\n if(!bytesCmp(hash, await CryptoWorker.sha1Hash(answerWithPadding.slice(0, offset)))) {\n throw new Error('[MT] server_DH_inner_data SHA1-hash mismatch');\n }\n \n timeManager.applyServerTime(auth.serverTime, auth.localTime);\n }\n \n public mtpVerifyDhParams(g: number, dhPrime: Uint8Array, gA: Uint8Array) {\n if(DEBUG) {\n this.log('Verifying DH params', g, dhPrime, gA);\n }\n\n var dhPrimeHex = bytesToHex(dhPrime);\n if(g !== 3 || dhPrimeHex !== 'c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b') {\n // The verified value is from https://core.telegram.org/mtproto/security_guidelines\n throw new Error('[MT] DH params are not verified: unknown dhPrime');\n }\n\n if(DEBUG) {\n this.log('dhPrime cmp OK');\n }\n \n //var gABigInt = new BigInteger(bytesToHex(gA), 16);\n const _gABigInt = str2bigInt(bytesToHex(gA), 16);\n //var dhPrimeBigInt = new BigInteger(dhPrimeHex, 16);\n const _dhPrimeBigInt = str2bigInt(dhPrimeHex, 16);\n \n //this.log('gABigInt.compareTo(BigInteger.ONE) <= 0', gABigInt.compareTo(BigInteger.ONE), BigInteger.ONE.compareTo(BigInteger.ONE), greater(_gABigInt, one));\n //if(gABigInt.compareTo(BigInteger.ONE) <= 0) {\n if(cmp(_gABigInt, one) <= 0) {\n throw new Error('[MT] DH params are not verified: gA <= 1');\n }\n \n /* this.log('gABigInt.compareTo(dhPrimeBigInt.subtract(BigInteger.ONE)) >= 0', gABigInt.compareTo(dhPrimeBigInt.subtract(BigInteger.ONE)),\n greater(gABigInt, sub(_dhPrimeBigInt, one))); */\n //if(gABigInt.compareTo(dhPrimeBigInt.subtract(BigInteger.ONE)) >= 0) {\n if(cmp(_gABigInt, sub(_dhPrimeBigInt, one)) >= 0) {\n throw new Error('[MT] DH params are not verified: gA >= dhPrime - 1');\n }\n\n if(DEBUG) {\n this.log('1 < gA < dhPrime-1 OK');\n }\n \n \n //var two = new BigInteger(/* null */'');\n //two.fromInt(2);\n const _two = int2bigInt(2, 32, 0);\n //this.log('_two:', bigInt2str(_two, 16), two.toString(16));\n let perf = performance.now();\n //var twoPow = two.pow(2048 - 64);\n //console.log('jsbn pow', performance.now() - perf);\n perf = performance.now();\n const _twoPow = pow(_two, 2048 - 64);\n //console.log('leemon pow', performance.now() - perf);\n //this.log('twoPow:', twoPow.toString(16), bigInt2str(_twoPow, 16));\n \n // this.log('gABigInt.compareTo(twoPow) < 0');\n //if(gABigInt.compareTo(twoPow) < 0) {\n if(cmp(_gABigInt, _twoPow) < 0) {\n throw new Error('[MT] DH params are not verified: gA < 2^{2048-64}');\n }\n //if(gABigInt.compareTo(dhPrimeBigInt.subtract(twoPow)) >= 0) {\n if(cmp(_gABigInt, sub(_dhPrimeBigInt, _twoPow)) >= 0) {\n throw new Error('[MT] DH params are not verified: gA > dhPrime - 2^{2048-64}');\n }\n\n if(DEBUG) {\n this.log('2^{2048-64} < gA < dhPrime-2^{2048-64} OK');\n }\n \n return true;\n }\n \n public async mtpSendSetClientDhParams(auth: AuthOptions): Promise<AuthOptions> {\n var gBytes = bytesFromHex(auth.g.toString(16));\n \n auth.b = new Array(256);\n auth.b = [...new Uint8Array(auth.b.length).randomize()];\n //MTProto.secureRandom.nextBytes(auth.b);\n \n try {\n var gB = await CryptoWorker.modPow(gBytes, auth.b, auth.dhPrime);\n } catch(error) {\n throw error;\n }\n \n var data = new TLSerialization({mtproto: true});\n data.storeObject({\n _: 'client_DH_inner_data',\n nonce: auth.nonce,\n server_nonce: auth.serverNonce,\n retry_id: [0, auth.retry++],\n g_b: gB\n }, 'Client_DH_Inner_Data');\n \n //var dataWithHash = sha1BytesSync(data.getBuffer()).concat(data.getBytes());\n var dataWithHash = (await CryptoWorker.sha1Hash(data.getBuffer())).concat(data.getBytes());\n \n //var encryptedData = aesEncryptSync(dataWithHash, auth.tmpAesKey, auth.tmpAesIv);\n var encryptedData = await CryptoWorker.aesEncrypt(dataWithHash, auth.tmpAesKey, auth.tmpAesIv);\n \n var request = new TLSerialization({mtproto: true});\n request.storeMethod('set_client_DH_params', {\n nonce: auth.nonce,\n server_nonce: auth.serverNonce,\n encrypted_data: encryptedData\n });\n \n if(DEBUG) {\n this.log('Send set_client_DH_params');\n }\n \n try {\n var deserializer = await this.mtpSendPlainRequest(auth.dcId, request.getBytes(true));\n } catch(err) {\n throw err;\n }\n \n let response = deserializer.fetchObject('Set_client_DH_params_answer');\n \n if(response._ !== 'dh_gen_ok' && response._ !== 'dh_gen_retry' && response._ !== 'dh_gen_fail') {\n throw new Error('[MT] Set_client_DH_params_answer response invalid: ' + response._);\n }\n \n if(!bytesCmp(auth.nonce, response.nonce)) {\n throw new Error('[MT] Set_client_DH_params_answer nonce mismatch');\n }\n \n if(!bytesCmp(auth.serverNonce, response.server_nonce)) {\n throw new Error('[MT] Set_client_DH_params_answer server_nonce mismatch');\n }\n \n try {\n var authKey = await CryptoWorker.modPow(auth.gA, auth.b, auth.dhPrime);\n } catch(err) {\n throw authKey;\n }\n \n //var authKeyHash = sha1BytesSync(authKey),\n let authKeyHash = await CryptoWorker.sha1Hash(new Uint8Array(authKey)),\n authKeyAux = authKeyHash.slice(0, 8),\n authKeyId = authKeyHash.slice(-8);\n \n if(DEBUG) {\n this.log('Got Set_client_DH_params_answer', response._, authKey);\n }\n switch(response._) {\n case 'dh_gen_ok':\n var newNonceHash1 = (await CryptoWorker.sha1Hash(auth.newNonce.concat([1], authKeyAux))).slice(-16);\n //var newNonceHash1 = sha1BytesSync(auth.newNonce.concat([1], authKeyAux)).slice(-16);\n \n if(!bytesCmp(newNonceHash1, response.new_nonce_hash1)) {\n throw new Error('[MT] Set_client_DH_params_answer new_nonce_hash1 mismatch');\n }\n \n var serverSalt = bytesXor(auth.newNonce.slice(0, 8), auth.serverNonce.slice(0, 8));\n if(DEBUG) {\n this.log('Auth successfull!', authKeyId, authKey, serverSalt);\n }\n \n auth.authKeyId = authKeyId;\n auth.authKey = authKey;\n auth.serverSalt = serverSalt;\n \n return auth;\n break;\n \n case 'dh_gen_retry':\n //var newNonceHash2 = sha1BytesSync(auth.newNonce.concat([2], authKeyAux)).slice(-16);\n var newNonceHash2 = (await CryptoWorker.sha1Hash(auth.newNonce.concat([2], authKeyAux))).slice(-16);\n if(!bytesCmp(newNonceHash2, response.new_nonce_hash2)) {\n throw new Error('[MT] Set_client_DH_params_answer new_nonce_hash2 mismatch');\n }\n \n return this.mtpSendSetClientDhParams(auth);\n \n case 'dh_gen_fail':\n //var newNonceHash3 = sha1BytesSync(auth.newNonce.concat([3], authKeyAux)).slice(-16);\n var newNonceHash3 = (await CryptoWorker.sha1Hash(auth.newNonce.concat([3], authKeyAux))).slice(-16);\n if(!bytesCmp(newNonceHash3, response.new_nonce_hash3)) {\n throw new Error('[MT] Set_client_DH_params_answer new_nonce_hash3 mismatch');\n }\n \n throw new Error('[MT] Set_client_DH_params_answer fail');\n }\n }\n \n // mtpAuth\n public async auth(dcId: number): Promise<AuthOptions> {\n if(dcId in this.cached) {\n return this.cached[dcId];\n }\n \n let nonce = /* fNonce ? fNonce : */new Uint8Array(16).randomize();\n /* var nonce = new Array(16);\n MTProto.secureRandom.nextBytes(nonce); */\n \n if(!dcConfigurator.chooseServer(dcId)) {\n return Promise.reject(new Error('[MT] No server found for dc ' + dcId));\n }\n\n try {\n let promise = this.mtpSendReqPQ({dcId, nonce});\n this.cached[dcId] = promise;\n return await promise;\n } catch(err) {\n delete this.cached[dcId];\n throw err;\n }\n }\n}\n\nexport default new Authorizer();\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport sessionStorage from '../sessionStorage';\n\nimport MTPNetworker, { MTMessage } from './networker';\nimport { isObject } from './bin_utils';\nimport networkerFactory from './networkerFactory';\n//import { telegramMeWebService } from './mtproto';\nimport authorizer from './authorizer';\nimport dcConfigurator, { ConnectionType, TransportType } from './dcConfigurator';\nimport { logger } from '../logger';\nimport type { InvokeApiOptions } from '../../types';\nimport type { MethodDeclMap } from '../../layer';\nimport { CancellablePromise, deferredPromise } from '../../helpers/cancellablePromise';\nimport { bytesFromHex, bytesToHex } from '../../helpers/bytes';\n//import { clamp } from '../../helpers/number';\nimport { ctx, isSafari } from '../../helpers/userAgent';\nimport App from '../../config/app';\nimport { MOUNT_CLASS_TO } from '../../config/debug';\n\n///////////////////////\n/////////////////////////////////////\n//////////\n\n/* var networker = apiManager.cachedNetworkers.websocket.upload[2];\nnetworker.wrapMtpMessage({\n _: 'msgs_state_req',\n msg_ids: [\"6888292542796810828\"]\n}, {\n notContentRelated: true\n}).then(res => {\n console.log('status', res);\n}); */\n\n//console.error('apiManager included!');\n// TODO: если запрос словил флуд, нужно сохранять его параметры и возвращать тот же промис на новый такой же запрос, например - загрузка истории\n\nexport type ApiError = Partial<{\n code: number,\n type: string,\n description: string,\n originalError: any,\n stack: string,\n handled: boolean,\n input: string,\n message: ApiError\n}>;\n\n/* class RotatableArray<T> {\n public array: Array<T> = [];\n private lastIndex = -1;\n\n public get() {\n this.lastIndex = clamp(this.lastIndex + 1, 0, this.array.length - 1);\n return this.array[this.lastIndex];\n }\n} */\n\nexport class ApiManager {\n public cachedNetworkers: {\n [transportType in TransportType]: {\n [connectionType in ConnectionType]: {\n [dcId: number]: MTPNetworker[]\n }\n }\n } = {} as any;\n \n public cachedExportPromise: {[x: number]: Promise<unknown>} = {};\n private gettingNetworkers: {[dcIdAndType: string]: Promise<MTPNetworker>} = {};\n public baseDcId = 0;\n \n //public telegramMeNotified = false;\n\n private log: ReturnType<typeof logger> = logger('API');\n\n private afterMessageTempIds: {[tempId: string]: string} = {};\n\n //private lol = false;\n \n constructor() {\n //MtpSingleInstanceService.start();\n \n /* AppStorage.get<number>('dc').then((dcId) => {\n if(dcId) {\n this.baseDcId = dcId;\n }\n }); */\n }\n \n /* public telegramMeNotify(newValue: boolean) {\n if(this.telegramMeNotified !== newValue) {\n this.telegramMeNotified = newValue;\n //telegramMeWebService.setAuthorized(this.telegramMeNotified);\n }\n } */\n \n // mtpSetUserAuth\n public setUserAuth(userId: number) {\n sessionStorage.set({\n user_auth: userId\n });\n \n //this.telegramMeNotify(true);\n\n///////////////////////////\n/////////////////////////////////////////////\n//////////////\n }\n\n public setBaseDcId(dcId: number) {\n this.baseDcId = dcId;\n\n sessionStorage.set({\n dc: this.baseDcId\n });\n }\n \n // mtpLogOut\n public async logOut() {\n const storageKeys: Array<string> = [];\n \n const prefix = 'dc';\n for(let dcId = 1; dcId <= 5; dcId++) {\n storageKeys.push(prefix + dcId + '_auth_key');\n //storageKeys.push(prefix + dcId + '_auth_keyId');\n }\n \n // WebPushApiManager.forceUnsubscribe(); // WARNING\n const storageResult = await Promise.all(storageKeys.map(key => sessionStorage.get(key as any)));\n \n const logoutPromises = [];\n for(let i = 0; i < storageResult.length; i++) {\n if(storageResult[i]) {\n logoutPromises.push(this.invokeApi('auth.logOut', {}, {dcId: i + 1, ignoreErrors: true}));\n }\n }\n\n const clear = () => {\n //console.error('apiManager: logOut clear');\n \n this.baseDcId = 0;\n //this.telegramMeNotify(false);\n const promise = sessionStorage.clear();\n promise.finally(() => {\n self.postMessage({type: 'reload'});\n });\n };\n\n setTimeout(clear, 1e3);\n\n //return;\n \n return Promise.all(logoutPromises).then(() => {\n }, (error) => {\n error.handled = true;\n }).finally(clear)/* .then(() => {\n location.pathname = '/';\n }) */;\n }\n \n // mtpGetNetworker\n public getNetworker(dcId: number, options: InvokeApiOptions = {}): Promise<MTPNetworker> {\n const connectionType: ConnectionType = options.fileDownload ? 'download' : (options.fileUpload ? 'upload' : 'client');\n //const connectionType: ConnectionType = 'client';\n\n///////////////////////////////\n/////////////////\n/////////////////////////////////////////////////////////////////////////////////////////////////////////\n///////////////////////////////////////////////////////////////////////////////////////////////\n/////////////\n // @ts-ignore\n const transportType = 'websocket';\n//////////////\n\n if(!this.cachedNetworkers.hasOwnProperty(transportType)) {\n this.cachedNetworkers[transportType] = {\n client: {},\n download: {},\n upload: {}\n };\n }\n\n const cache = this.cachedNetworkers[transportType][connectionType];\n if(!(dcId in cache)) {\n cache[dcId] = [];\n }\n \n const networkers = cache[dcId];\n if(networkers.length >= /* 1 */(connectionType === 'client' || transportType === 'https' ? 1 : (connectionType === 'download' ? 3 : 3))) {\n let i = networkers.length - 1, found = false;\n for(; i >= 0; --i) {\n if(networkers[i].isOnline) {\n found = true;\n break;\n }\n }\n \n const networker = found ? networkers.splice(i, 1)[0] : networkers.pop();\n networkers.unshift(networker);\n return Promise.resolve(networker);\n }\n \n const getKey = [dcId, transportType, connectionType].join('-');\n if(this.gettingNetworkers[getKey]) {\n return this.gettingNetworkers[getKey];\n }\n\n const ak = 'dc' + dcId + '_auth_key';\n const akId = 'dc' + dcId + '_auth_keyId';\n const ss = 'dc' + dcId + '_server_salt';\n \n return this.gettingNetworkers[getKey] = Promise.all([ak, akId, ss].map(key => sessionStorage.get(key as any)))\n .then(async([authKeyHex, authKeyIdHex, serverSaltHex]) => {\n const transport = dcConfigurator.chooseServer(dcId, connectionType, transportType, false);\n let networker: MTPNetworker;\n if(authKeyHex && authKeyHex.length === 512) {\n if(!serverSaltHex || serverSaltHex.length !== 16) {\n serverSaltHex = 'AAAAAAAAAAAAAAAA';\n }\n \n const authKey = bytesFromHex(authKeyHex);\n const authKeyId = new Uint8Array(bytesFromHex(authKeyIdHex));\n const serverSalt = bytesFromHex(serverSaltHex);\n \n networker = networkerFactory.getNetworker(dcId, authKey, authKeyId, serverSalt, transport, options);\n } else {\n try { // if no saved state\n const auth = await authorizer.auth(dcId);\n \n const storeObj = {\n [ak]: bytesToHex(auth.authKey),\n [akId]: auth.authKeyId.hex,\n [ss]: bytesToHex(auth.serverSalt)\n };\n \n sessionStorage.set(storeObj);\n \n networker = networkerFactory.getNetworker(dcId, auth.authKey, auth.authKeyId, auth.serverSalt, transport, options);\n } catch(error) {\n this.log('Get networker error', error, error.stack);\n delete this.gettingNetworkers[getKey];\n throw error;\n }\n }\n\n /* networker.onConnectionStatusChange = (online) => {\n console.log('status:', online);\n }; */\n\n delete this.gettingNetworkers[getKey];\n networkers.unshift(networker);\n return networker;\n });\n }\n \n // mtpInvokeApi\n public invokeApi<T extends keyof MethodDeclMap>(method: T, params: MethodDeclMap[T]['req'] = {}, options: InvokeApiOptions = {}): CancellablePromise<MethodDeclMap[T][\"res\"]> {\n ///////this.log('Invoke api', method, params, options);\n\n /* if(!this.lol) {\n networkerFactory.updatesProcessor({_: 'new_session_created'}, true);\n this.lol = true;\n } */\n\n const deferred = deferredPromise<MethodDeclMap[T]['res']>();\n\n let afterMessageIdTemp = options.afterMessageId;\n if(afterMessageIdTemp) {\n deferred.finally(() => {\n delete this.afterMessageTempIds[afterMessageIdTemp];\n });\n }\n\n if(MOUNT_CLASS_TO) {\n deferred.finally(() => {\n clearInterval(interval);\n });\n \n const startTime = Date.now();\n const interval = ctx.setInterval(() => {\n this.log.error('Request is still processing:', method, params, options, 'time:', (Date.now() - startTime) / 1000);\n //this.cachedUploadNetworkers[2].requestMessageStatus();\n }, 5e3);\n }\n\n const rejectPromise = (error: ApiError) => {\n if(!error) {\n error = {type: 'ERROR_EMPTY'};\n } else if(!isObject(error)) {\n error = {message: error};\n }\n \n deferred.reject(error);\n\n if((error.code === 401 && error.type === 'SESSION_REVOKED') || \n (error.code === 406 && error.type === 'AUTH_KEY_DUPLICATED')) {\n this.logOut();\n }\n\n if(options.ignoreErrors) {\n return;\n }\n \n if(error.code === 406) {\n error.handled = true;\n }\n \n if(!options.noErrorBox) {\n error.input = method;\n error.stack = stack || (error.originalError && error.originalError.stack) || error.stack || (new Error()).stack;\n setTimeout(() => {\n if(!error.handled) {\n if(error.code === 401) {\n this.logOut();\n } else {\n // ErrorService.show({error: error}); // WARNING\n }\n \n error.handled = true;\n }\n }, 100);\n }\n };\n \n let dcId: number;\n \n let cachedNetworker: MTPNetworker;\n let stack = (new Error()).stack || 'empty stack';\n const performRequest = (networker: MTPNetworker) => {\n if(afterMessageIdTemp) {\n options.afterMessageId = this.afterMessageTempIds[afterMessageIdTemp];\n }\n const promise = (cachedNetworker = networker).wrapApiCall(method, params, options);\n if(options.prepareTempMessageId) {\n this.afterMessageTempIds[options.prepareTempMessageId] = (options as MTMessage).messageId;\n }\n\n return promise.then(deferred.resolve, (error: ApiError) => {\n //if(!options.ignoreErrors) {\n if(error.type !== 'FILE_REFERENCE_EXPIRED' && error.type !== 'MSG_WAIT_FAILED') {\n this.log.error('Error', error.code, error.type, this.baseDcId, dcId, method, params);\n }\n \n if(error.code === 401 && this.baseDcId === dcId) {\n if(error.type !== 'SESSION_PASSWORD_NEEDED') {\n sessionStorage.delete('dc')\n sessionStorage.delete('user_auth'); // ! возможно тут вообще не нужно это делать, но нужно проверить случай с USER_DEACTIVATED (https://core.telegram.org/api/errors)\n //this.telegramMeNotify(false);\n }\n \n rejectPromise(error);\n } else if(error.code === 401 && this.baseDcId && dcId !== this.baseDcId) {\n if(this.cachedExportPromise[dcId] === undefined) {\n const promise = new Promise((exportResolve, exportReject) => {\n this.invokeApi('auth.exportAuthorization', {dc_id: dcId}, {noErrorBox: true}).then((exportedAuth) => {\n this.invokeApi('auth.importAuthorization', {\n id: exportedAuth.id,\n bytes: exportedAuth.bytes\n }, {dcId, noErrorBox: true}).then(exportResolve, exportReject);\n }, exportReject);\n });\n \n this.cachedExportPromise[dcId] = promise;\n }\n \n this.cachedExportPromise[dcId].then(() => {\n //(cachedNetworker = networker).wrapApiCall(method, params, options).then(deferred.resolve, rejectPromise);\n this.invokeApi(method, params, options).then(deferred.resolve, rejectPromise);\n }, rejectPromise);\n } else if(error.code === 303) {\n const newDcId = +error.type.match(/^(PHONE_MIGRATE_|NETWORK_MIGRATE_|USER_MIGRATE_|FILE_MIGRATE_)(\\d+)/)[2];\n if(newDcId !== dcId) {\n if(options.dcId) {\n options.dcId = newDcId;\n } else {\n this.setBaseDcId(newDcId);\n }\n \n this.getNetworker(newDcId, options).then((networker) => {\n networker.wrapApiCall(method, params, options).then(deferred.resolve, rejectPromise);\n }, rejectPromise);\n }\n } else if(!options.rawError && error.code === 420) {\n const waitTime = +error.type.match(/^FLOOD_WAIT_(\\d+)/)[1] || 10;\n \n if(waitTime > (options.floodMaxTimeout !== undefined ? options.floodMaxTimeout : 60)) {\n return rejectPromise(error);\n }\n \n setTimeout(() => {\n performRequest(cachedNetworker);\n }, waitTime/* (waitTime + 5) */ * 1000); // 03.02.2020\n } else if(!options.rawError && error.code === 500) {\n if(error.type === 'MSG_WAIT_FAILED') {\n afterMessageIdTemp = undefined;\n delete options.afterMessageId;\n delete this.afterMessageTempIds[options.prepareTempMessageId];\n performRequest(cachedNetworker);\n return;\n }\n\n const now = Date.now();\n if(options.stopTime) {\n if(now >= options.stopTime) {\n return rejectPromise(error);\n }\n }\n \n options.waitTime = options.waitTime ? Math.min(60, options.waitTime * 1.5) : 1;\n setTimeout(() => {\n performRequest(cachedNetworker);\n }, options.waitTime * 1000);\n } else {\n rejectPromise(error);\n }\n });\n }\n \n if(dcId = (options.dcId || this.baseDcId)) {\n this.getNetworker(dcId, options).then(performRequest, rejectPromise);\n } else {\n sessionStorage.get('dc').then((baseDcId) => {\n this.getNetworker(this.baseDcId = dcId = baseDcId || App.baseDcId, options).then(performRequest, rejectPromise);\n });\n }\n\n return deferred;\n }\n}\n\nconst apiManager = new ApiManager();\nMOUNT_CLASS_TO.apiManager = apiManager;\nexport default apiManager;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport { blobConstruct } from \"../helpers/blob\";\n\nexport class FileManager {\n public blobSupported = true;\n \n constructor() {\n try {\n blobConstruct([], '');\n } catch(e) {\n this.blobSupported = false;\n }\n }\n \n public isAvailable() {\n return this.blobSupported;\n }\n \n public write(fileWriter: ReturnType<FileManager['getFakeFileWriter']>, bytes: Uint8Array | Blob | string): Promise<void> {\n if(bytes instanceof Blob) { // is file bytes\n return new Promise((resolve, reject) => {\n let fileReader = new FileReader();\n fileReader.onload = function(event) {\n let arrayBuffer = event.target.result as ArrayBuffer;\n \n let arr = new Uint8Array(arrayBuffer);\n \n fileWriter.write(arr).then(resolve, reject);\n };\n \n fileReader.readAsArrayBuffer(bytes);\n });\n } else {\n return fileWriter.write(bytes);\n }\n }\n\n public getFakeFileWriter(mimeType: string, saveFileCallback?: (blob: Blob) => Promise<Blob>) {\n const blobParts: Array<Uint8Array | string> = [];\n const fakeFileWriter = {\n write: async(part: Uint8Array | string) => {\n if(!this.blobSupported) {\n throw false;\n }\n \n blobParts.push(part);\n },\n truncate: () => {\n blobParts.length = 0;\n },\n finalize: (saveToStorage = true) => {\n const blob = blobConstruct(blobParts, mimeType);\n\n if(saveToStorage && saveFileCallback) {\n saveFileCallback(blob);\n }\n \n return blob;\n }\n };\n \n return fakeFileWriter;\n }\n}\n\nexport default new FileManager();\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport Modes from '../config/modes';\nimport { blobConstruct } from '../helpers/blob';\nimport FileManager from './filemanager';\n//import { MOUNT_CLASS_TO } from './mtproto/mtproto_config';\n//import { logger } from './polyfill';\n\nexport default class CacheStorageController {\n private static STORAGES: CacheStorageController[] = [];\n //public dbName = 'cachedFiles';\n private openDbPromise: Promise<Cache>;\n\n private useStorage = true;\n\n //private log: ReturnType<typeof logger> = logger('CS');\n\n constructor(private dbName: string) {\n if(Modes.test) {\n this.dbName += '_test';\n }\n \n this.openDatabase();\n CacheStorageController.STORAGES.push(this);\n }\n\n private openDatabase(): Promise<Cache> {\n if(this.openDbPromise) {\n return this.openDbPromise;\n }\n\n return this.openDbPromise = caches.open(this.dbName);\n }\n\n public delete(entryName: string) {\n return this.timeoutOperation((cache) => {\n return cache.delete('/' + entryName);\n });\n }\n\n public deleteAll() {\n return caches.delete(this.dbName);\n }\n\n public save(entryName: string, response: Response) {\n if(!this.useStorage) return Promise.reject('STORAGE_OFFLINE');\n\n return this.timeoutOperation((cache) => {\n return cache.put('/' + entryName, response);\n });\n }\n\n public saveFile(fileName: string, blob: Blob | Uint8Array) {\n if(!this.useStorage) return Promise.reject('STORAGE_OFFLINE');\n\n //return Promise.resolve(blobConstruct([blob]));\n if(!(blob instanceof Blob)) {\n blob = blobConstruct(blob) as Blob;\n }\n\n return this.save(fileName, new Response(blob)).then(() => {\n return blob as Blob;\n });\n }\n\n /* public getBlobSize(blob: any) {\n return blob.size || blob.byteLength || blob.length;\n } */\n\n public getFile(fileName: string, method: 'blob' | 'json' | 'text' = 'blob'): Promise<any> {\n if(!this.useStorage) return Promise.reject('STORAGE_OFFLINE');\n\n /* if(method === 'blob') {\n return Promise.reject();\n } */\n\n // const str = `get fileName: ${fileName}`;\n // console.time(str);\n return this.timeoutOperation(async(cache) => {\n const response = await cache.match('/' + fileName);\n\n if(!response || !cache) {\n //console.warn('getFile:', response, fileName);\n throw 'NO_ENTRY_FOUND';\n }\n \n const promise = response[method]();\n // promise.then(() => {\n // console.timeEnd(str);\n // });\n return promise;\n });\n }\n\n private timeoutOperation<T>(callback: (cache: Cache) => Promise<T>) {\n return new Promise<T>(async(resolve, reject) => {\n let rejected = false;\n const timeout = setTimeout(() => {\n reject();\n //console.warn('CACHESTORAGE TIMEOUT');\n rejected = true;\n }, 15e3);\n\n try {\n const cache = await this.openDatabase();\n if(!cache) {\n throw 'no cache?';\n }\n\n const res = await callback(cache);\n\n if(rejected) return;\n resolve(res);\n } catch(err) {\n reject(err);\n }\n\n clearTimeout(timeout);\n });\n }\n\n public getFileWriter(fileName: string, mimeType: string) {\n const fakeWriter = FileManager.getFakeFileWriter(mimeType, (blob) => {\n return this.saveFile(fileName, blob);\n });\n\n return Promise.resolve(fakeWriter);\n }\n\n public static toggleStorage(enabled: boolean) {\n return Promise.all(this.STORAGES.map(storage => {\n storage.useStorage = enabled;\n \n if(!enabled) {\n return storage.deleteAll();\n }\n }));\n }\n}\n\n//const cacheStorage = new CacheStorageController(); \n//MOUNT_CLASS_TO.cacheStorage = cacheStorage;\n//export default cacheStorage;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport { MOUNT_CLASS_TO } from \"../../config/debug\";\nimport Modes from \"../../config/modes\";\nimport { CancellablePromise, deferredPromise } from \"../../helpers/cancellablePromise\";\nimport { notifyAll, notifySomeone } from \"../../helpers/context\";\nimport { getFileNameByLocation } from \"../../helpers/fileName\";\nimport { nextRandomInt } from \"../../helpers/random\";\nimport { FileLocation, InputFile, InputFileLocation, UploadFile } from \"../../layer\";\nimport CacheStorageController from \"../cacheStorage\";\nimport cryptoWorker from \"../crypto/cryptoworker\";\nimport FileManager from \"../filemanager\";\nimport { logger, LogTypes } from \"../logger\";\nimport apiManager from \"./apiManager\";\nimport { isWebpSupported } from \"./mtproto.worker\";\n\ntype Delayed = {\n offset: number, \n writeFilePromise: CancellablePromise<unknown>, \n writeFileDeferred: CancellablePromise<unknown>\n};\n\nexport type DownloadOptions = {\n dcId: number, \n location: InputFileLocation | FileLocation, \n size?: number,\n fileName?: string,\n mimeType?: string,\n limitPart?: number,\n queueId?: number,\n onlyCache?: boolean,\n};\n\ntype MyUploadFile = UploadFile.uploadFile;\n\nconst MAX_FILE_SAVE_SIZE = 20e6;\n\nexport class ApiFileManager {\n public cacheStorage = new CacheStorageController('cachedFiles');\n\n public cachedDownloadPromises: {\n [fileName: string]: CancellablePromise<Blob>\n } = {};\n\n public uploadPromises: {\n [fileName: string]: CancellablePromise<InputFile>\n } = {};\n\n public downloadPulls: {\n [dcId: string]: Array<{\n id: number,\n queueId: number,\n cb: () => Promise<MyUploadFile | void>,\n deferred: {\n resolve: (...args: any[]) => void,\n reject: (...args: any[]) => void\n },\n activeDelta: number\n }>\n } = {};\n public downloadActives: {[dcId: string]: number} = {};\n\n public webpConvertPromises: {[fileName: string]: CancellablePromise<Uint8Array>} = {};\n\n private log: ReturnType<typeof logger> = logger('AFM', LogTypes.Error | LogTypes.Log);\n private tempId = 0;\n private queueId = 0;\n private debug = Modes.debug;\n\n public downloadRequest(dcId: 'upload', id: number, cb: () => Promise<void>, activeDelta: number, queueId?: number): Promise<void>;\n public downloadRequest(dcId: number, id: number, cb: () => Promise<MyUploadFile>, activeDelta: number, queueId?: number): Promise<MyUploadFile>;\n public downloadRequest(dcId: number | string, id: number, cb: () => Promise<MyUploadFile | void>, activeDelta: number, queueId: number = 0) {\n if(this.downloadPulls[dcId] === undefined) {\n this.downloadPulls[dcId] = [];\n this.downloadActives[dcId] = 0;\n }\n\n const downloadPull = this.downloadPulls[dcId];\n\n const promise = new Promise<MyUploadFile | void>((resolve, reject) => {\n downloadPull.push({id, queueId, cb, deferred: {resolve, reject}, activeDelta});\n });\n\n setTimeout(() => {\n this.downloadCheck(dcId);\n }, 0);\n\n return promise;\n }\n\n public downloadCheck(dcId: string | number) {\n const downloadPull = this.downloadPulls[dcId];\n const downloadLimit = dcId === 'upload' ? 24 : 24;\n //const downloadLimit = Infinity;\n\n if(this.downloadActives[dcId] >= downloadLimit || !downloadPull || !downloadPull.length) {\n return false;\n }\n\n //const data = downloadPull.shift();\n const data = downloadPull.findAndSplice(d => d.queueId === 0) || downloadPull.findAndSplice(d => d.queueId === this.queueId) || downloadPull.shift();\n const activeDelta = data.activeDelta || 1;\n\n this.downloadActives[dcId] += activeDelta;\n\n data.cb()\n .then((result) => {\n this.downloadActives[dcId] -= activeDelta;\n this.downloadCheck(dcId);\n\n data.deferred.resolve(result);\n }, (error: Error) => {\n // @ts-ignore\n if(!error || !error.type || (error.type !== 'DOWNLOAD_CANCELED' && error.type !== 'UPLOAD_CANCELED')) {\n this.log.error('downloadCheck error:', error);\n }\n\n this.downloadActives[dcId] -= activeDelta;\n this.downloadCheck(dcId);\n\n data.deferred.reject(error);\n });\n }\n\n public setQueueId(queueId: number) {\n //this.log.error('setQueueId', queueId);\n this.queueId = queueId;\n }\n\n public getFileStorage() {\n return this.cacheStorage;\n }\n\n public cancelDownload(fileName: string) {\n const promise = this.cachedDownloadPromises[fileName] || this.uploadPromises[fileName];\n if(promise && !promise.isRejected && !promise.isFulfilled) {\n promise.cancel();\n return true;\n }\n\n return false;\n }\n\n public requestFilePart(dcId: number, location: InputFileLocation | FileLocation, offset: number, limit: number, id = 0, queueId = 0, checkCancel?: () => void) {\n return this.downloadRequest(dcId, id, async() => {\n checkCancel && checkCancel();\n\n return apiManager.invokeApi('upload.getFile', {\n location,\n offset,\n limit\n } as any, {\n dcId,\n fileDownload: true\n }) as Promise<MyUploadFile>;\n }, this.getDelta(limit), queueId);\n }\n\n /* private convertBlobToBytes(blob: Blob) {\n return blob.arrayBuffer().then(buffer => new Uint8Array(buffer));\n } */\n\n private getDelta(bytes: number) {\n return bytes / 1024 / 128;\n }\n\n private getLimitPart(size: number): number {\n let bytes: number;\n\n bytes = 512;\n /* if(size < 1e6 || !size) bytes = 512;\n else if(size < 3e6) bytes = 256;\n else bytes = 128; */\n\n return bytes * 1024;\n }\n\n uncompressTGS = (bytes: Uint8Array, fileName: string) => {\n //this.log('uncompressTGS', bytes, bytes.slice().buffer);\n // slice нужен потому что в uint8array - 5053 length, в arraybuffer - 5084\n return cryptoWorker.gzipUncompress<string>(bytes.slice().buffer, true);\n };\n\n convertWebp = (bytes: Uint8Array, fileName: string) => {\n const convertPromise = deferredPromise<Uint8Array>();\n\n const task = {type: 'convertWebp', payload: {fileName, bytes}};\n notifySomeone(task);\n return this.webpConvertPromises[fileName] = convertPromise;\n };\n\n public downloadFile(options: DownloadOptions): CancellablePromise<Blob> {\n if(!FileManager.isAvailable()) {\n return Promise.reject({type: 'BROWSER_BLOB_NOT_SUPPORTED'});\n }\n\n let size = options.size ?? 0;\n let {dcId, location} = options;\n\n let process: ApiFileManager['uncompressTGS'] | ApiFileManager['convertWebp'];\n\n if(options.mimeType === 'image/webp' && !isWebpSupported()) {\n process = this.convertWebp;\n options.mimeType = 'image/png';\n } else if(options.mimeType === 'application/x-tgsticker') {\n process = this.uncompressTGS;\n options.mimeType = 'application/json';\n }\n\n const fileName = getFileNameByLocation(location, {fileName: options.fileName});\n const cachedPromise = this.cachedDownloadPromises[fileName];\n const fileStorage = this.getFileStorage();\n\n this.debug && this.log('downloadFile', fileName, size, location, options.mimeType);\n\n /* if(options.queueId) {\n this.log.error('downloadFile queueId:', fileName, options.queueId);\n } */\n\n if(cachedPromise) {\n //this.log('downloadFile cachedPromise');\n\n if(size) {\n return cachedPromise.then((blob: Blob) => {\n if(blob.size < size) {\n this.debug && this.log('downloadFile need to deleteFile, wrong size:', blob.size, size);\n\n return this.deleteFile(fileName).then(() => {\n return this.downloadFile(options);\n }).catch(() => {\n return this.downloadFile(options);\n });\n } else {\n return blob;\n }\n });\n } else {\n return cachedPromise;\n }\n }\n\n const deferred = deferredPromise<Blob>();\n const mimeType = options.mimeType || 'image/jpeg';\n\n let canceled = false;\n let resolved = false;\n let cacheFileWriter: ReturnType<typeof FileManager['getFakeFileWriter']>;\n let errorHandler = (error: any) => {\n delete this.cachedDownloadPromises[fileName];\n deferred.reject(error);\n errorHandler = () => {};\n\n if(cacheFileWriter && (!error || error.type !== 'DOWNLOAD_CANCELED')) {\n cacheFileWriter.truncate();\n }\n };\n\n const id = this.tempId++;\n\n fileStorage.getFile(fileName).then(async(blob: Blob) => {\n //this.log('maybe cached', fileName);\n //throw '';\n\n if(blob.size < size) {\n //this.log('downloadFile need to deleteFile 2, wrong size:', blob.size, size);\n await this.deleteFile(fileName);\n throw false;\n }\n\n deferred.resolve(blob);\n }).catch(() => {\n //this.log('not cached', fileName);\n const fileWriterPromise = fileStorage.getFileWriter(fileName, mimeType);\n\n fileWriterPromise.then((fileWriter) => {\n cacheFileWriter = fileWriter;\n const limit = options.limitPart || this.getLimitPart(size);\n let offset: number;\n let startOffset = 0;\n let writeFilePromise: CancellablePromise<unknown> = Promise.resolve(),\n writeFileDeferred: CancellablePromise<unknown>;\n //const maxRequests = 13107200 / limit; // * 100 Mb speed\n const maxRequests = Infinity;\n\n //console.error('maxRequests', maxRequests);\n\n const processDownloaded = async(bytes: Uint8Array, offset: number) => {\n if(process) {\n //const perf = performance.now();\n const processed = await process(bytes, fileName);\n //this.log('downloadFile process downloaded time', performance.now() - perf, mimeType, process);\n return processed;\n }\n \n return bytes;\n };\n\n const delayed: Delayed[] = [];\n offset = startOffset;\n do {\n ////this.log('offset:', startOffset);\n writeFileDeferred = deferredPromise<void>();\n delayed.push({offset, writeFilePromise, writeFileDeferred});\n writeFilePromise = writeFileDeferred;\n offset += limit;\n } while(offset < size);\n\n let done = 0;\n const superpuper = async() => {\n //if(!delayed.length) return;\n\n const {offset, writeFilePromise, writeFileDeferred} = delayed.shift();\n try {\n const result = await this.requestFilePart(dcId, location, offset, limit, id, options.queueId, checkCancel);\n\n const bytes: Uint8Array = result.bytes as any;\n\n if(delayed.length) {\n superpuper();\n }\n\n this.debug && this.log('downloadFile requestFilePart result:', fileName, result);\n const isFinal = offset + limit >= size || !bytes.byteLength;\n if(bytes.byteLength) {\n //done += limit;\n done += bytes.byteLength;\n\n //if(!isFinal) {\n ////this.log('deferred notify 2:', {done: offset + limit, total: size}, deferred);\n deferred.notify({done, offset, total: size});\n //}\n\n const processedResult = await processDownloaded(bytes, offset);\n checkCancel();\n\n await writeFilePromise;\n checkCancel();\n\n await FileManager.write(fileWriter, processedResult);\n }\n\n writeFileDeferred.resolve();\n\n if(isFinal) {\n resolved = true;\n\n deferred.resolve(fileWriter.finalize(size < MAX_FILE_SAVE_SIZE));\n }\n } catch(err) {\n errorHandler(err);\n }\n };\n\n for(let i = 0, length = Math.min(maxRequests, delayed.length); i < length; ++i) {\n superpuper();\n }\n }).catch((err) => {\n if(!['STORAGE_OFFLINE'].includes(err)) {\n this.log.error('saveFile error:', err);\n }\n });\n });\n\n const checkCancel = () => {\n if(canceled) {\n const error = new Error('Canceled');\n // @ts-ignore\n error.type = 'DOWNLOAD_CANCELED';\n throw error;\n }\n };\n\n deferred.cancel = () => {\n if(!canceled && !resolved) {\n canceled = true;\n delete this.cachedDownloadPromises[fileName];\n errorHandler({type: 'DOWNLOAD_CANCELED'});\n }\n };\n\n deferred.notify = (progress: {done: number, total: number, offset: number}) => {\n notifyAll({progress: {fileName, ...progress}});\n };\n\n this.cachedDownloadPromises[fileName] = deferred;\n\n return deferred;\n }\n\n public deleteFile(fileName: string) {\n //this.log('will delete file:', fileName);\n delete this.cachedDownloadPromises[fileName];\n return this.getFileStorage().delete(fileName);\n }\n\n public uploadFile({file, fileName}: {file: Blob | File, fileName: string}) {\n const fileSize = file.size, \n isBigFile = fileSize >= 10485760;\n\n let canceled = false,\n resolved = false,\n doneParts = 0,\n partSize = 262144; // 256 Kb\n\n /* if(fileSize > (524288 * 3000)) {\n partSize = 1024 * 1024;\n activeDelta = 8;\n } else */if(fileSize > 67108864) {\n partSize = 524288;\n } else if(fileSize < 102400) {\n partSize = 32768;\n }\n\n const activeDelta = this.getDelta(partSize);\n\n const totalParts = Math.ceil(fileSize / partSize);\n const fileId: [number, number] = [nextRandomInt(0xFFFFFFFF), nextRandomInt(0xFFFFFFFF)];\n\n let _part = 0;\n\n const resultInputFile: InputFile = {\n _: isBigFile ? 'inputFileBig' : 'inputFile',\n id: fileId as any,\n parts: totalParts,\n name: fileName,\n md5_checksum: ''\n };\n\n const deferredHelper: {\n resolve?: (input: typeof resultInputFile) => void,\n reject?: (error: any) => void,\n notify?: (details: {done: number, total: number}) => void\n } = {\n notify: (details: {done: number, total: number}) => {}\n };\n const deferred: CancellablePromise<typeof resultInputFile> = new Promise((resolve, reject) => {\n if(totalParts > 4000) {\n return reject({type: 'FILE_TOO_BIG'});\n }\n\n deferredHelper.resolve = resolve;\n deferredHelper.reject = reject;\n });\n Object.assign(deferred, deferredHelper);\n\n if(totalParts > 4000) {\n return deferred;\n }\n \n let errorHandler = (error: any) => {\n if(error?.type !== 'UPLOAD_CANCELED') {\n this.log.error('Up Error', error);\n }\n\n deferred.reject(error);\n canceled = true;\n errorHandler = () => {};\n };\n\n const method = isBigFile ? 'upload.saveBigFilePart' : 'upload.saveFilePart';\n\n const id = this.tempId++;\n\n /* setInterval(() => {\n console.log(file);\n }, 1e3); */\n\n const self = this;\n function* generator() {\n for(let offset = 0; offset < fileSize; offset += partSize) {\n const part = _part++; // 0, 1\n yield self.downloadRequest('upload', id, () => {\n return new Promise<void>((uploadResolve, uploadReject) => {\n const reader = new FileReader();\n const blob = file.slice(offset, offset + partSize);\n \n reader.onloadend = (e) => {\n if(canceled) {\n uploadReject({type: 'UPLOAD_CANCELED'});\n return;\n }\n \n if(e.target.readyState !== FileReader.DONE) {\n self.log.error('wrong readyState!');\n uploadReject({type: 'WRONG_READY_STATE'});\n return;\n }\n \n let buffer = e.target.result as ArrayBuffer;\n self.debug && self.log('Upload file part, isBig:', isBigFile, part, buffer.byteLength, new Uint8Array(buffer).length, new Uint8Array(buffer).slice().length);\n\n /* const u = new Uint8Array(buffer.byteLength);\n for(let i = 0; i < u.length; ++i) {\n //u[i] = Math.random() * 255 | 0;\n u[i] = 0;\n }\n buffer = u.buffer; */\n \n /* setTimeout(() => {\n doneParts++;\n uploadResolve();\n \n //////this.log('Progress', doneParts * partSize / fileSize);\n\n self.log('done part', part, doneParts);\n \n deferred.notify({done: doneParts * partSize, total: fileSize});\n \n if(doneParts >= totalParts) {\n deferred.resolve(resultInputFile);\n resolved = true;\n }\n }, 1250);\n return; */\n\n apiManager.invokeApi(method, {\n file_id: fileId,\n file_part: part,\n file_total_parts: totalParts,\n bytes: buffer/* new Uint8Array(buffer) */\n } as any, {\n //startMaxLength: partSize + 256,\n fileUpload: true\n }).then((result) => {\n doneParts++;\n uploadResolve();\n \n //////this.log('Progress', doneParts * partSize / fileSize);\n \n deferred.notify({done: doneParts * partSize, total: fileSize});\n \n if(doneParts >= totalParts) {\n deferred.resolve(resultInputFile);\n resolved = true;\n }\n }, errorHandler);\n };\n \n reader.readAsArrayBuffer(blob);\n });\n }, activeDelta).catch(errorHandler);\n }\n }\n\n const it = generator();\n const process = () => {\n if(canceled) return;\n const r = it.next();\n if(r.done || canceled) return;\n (r.value as Promise<void>).then(process);\n };\n\n const maxRequests = Infinity;\n //const maxRequests = 10;\n /* for(let i = 0; i < 10; ++i) {\n process();\n } */\n for(let i = 0, length = Math.min(maxRequests, totalParts); i < length; ++i) {\n process();\n }\n\n deferred.cancel = () => {\n //this.log('cancel upload', canceled, resolved);\n if(!canceled && !resolved) {\n canceled = true;\n errorHandler({type: 'UPLOAD_CANCELED'});\n }\n };\n\n deferred.notify = (progress: {done: number, total: number}) => {\n notifyAll({progress: {fileName, ...progress}});\n };\n\n deferred.finally(() => {\n delete this.uploadPromises[fileName];\n });\n\n return this.uploadPromises[fileName] = deferred;\n }\n}\n\nconst apiFileManager = new ApiFileManager();\nMOUNT_CLASS_TO.apiFileManager = apiFileManager;\nexport default apiFileManager;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport type { InputFileLocation, FileLocation } from \"../layer\";\nimport type { DownloadOptions } from \"../lib/mtproto/apiFileManager\";\n\nexport function getFileNameByLocation(location: InputFileLocation | FileLocation, options?: Partial<{\n fileName: string\n}>) {\n const fileName = '';//(options?.fileName || '').split('.');\n const ext = fileName[fileName.length - 1] || '';\n\n switch(location._) {\n case 'inputPhotoFileLocation':\n case 'inputDocumentFileLocation': {\n const thumbPart = location.thumb_size ? '_' + location.thumb_size : '';\n return (fileName[0] ? fileName[0] + '_' : '') + location.id + thumbPart + (ext ? '.' + ext : ext);\n }\n\n case 'fileLocationToBeDeprecated':\n case 'inputPeerPhotoFileLocation':\n case 'inputStickerSetThumb':\n case 'inputFileLocation': {\n return location.volume_id + '_' + location.local_id + (ext ? '.' + ext : ext);\n }\n\n default: {\n console.error('Unrecognized location:', location);\n return '';\n }\n }\n}\n\nexport type FileURLType = 'photo' | 'thumb' | 'document' | 'stream' | 'download';\nexport function getFileURL(type: FileURLType, options: DownloadOptions) {\n //console.log('getFileURL', location);\n //const perf = performance.now();\n const encoded = encodeURIComponent(JSON.stringify(options));\n //console.log('getFileURL encode:', performance.now() - perf, encoded);\n\n return '/' + type + '/' + encoded;\n}","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n// just to include\nimport '../polyfill';\n\nimport apiManager from \"./apiManager\";\nimport cryptoWorker from \"../crypto/cryptoworker\";\nimport networkerFactory from \"./networkerFactory\";\nimport apiFileManager from './apiFileManager';\nimport type { ServiceWorkerTask, ServiceWorkerTaskResponse } from './mtproto.service';\nimport { ctx } from '../../helpers/userAgent';\nimport { socketsProxied } from './dcConfigurator';\nimport { notifyAll } from '../../helpers/context';\nimport AppStorage from '../storage';\nimport CacheStorageController from '../cacheStorage';\n\nlet webpSupported = false;\nexport const isWebpSupported = () => {\n return webpSupported;\n};\n\nnetworkerFactory.setUpdatesProcessor((obj) => {\n notifyAll({update: obj});\n});\n\nnetworkerFactory.onConnectionStatusChange = (status) => {\n notifyAll({type: 'connectionStatusChange', payload: status});\n};\n\nconst onMessage = async(e: any) => {\n try {\n const task = e.data;\n const taskId = task.taskId;\n\n if(task.type === 'convertWebp') {\n const {fileName, bytes} = task.payload;\n const deferred = apiFileManager.webpConvertPromises[fileName];\n if(deferred) {\n deferred.resolve(bytes);\n delete apiFileManager.webpConvertPromises[fileName];\n }\n\n return;\n } else if((task as ServiceWorkerTask).type === 'requestFilePart') {\n const task = e.data as ServiceWorkerTask;\n const responseTask: ServiceWorkerTaskResponse = {\n type: task.type,\n id: task.id\n };\n\n try {\n const res = await apiFileManager.requestFilePart(...task.payload);\n responseTask.payload = res;\n } catch(err) {\n responseTask.originalPayload = task.payload;\n responseTask.error = err;\n }\n\n notifyAll(responseTask);\n return;\n } else if(task.type === 'webpSupport') {\n webpSupported = task.payload;\n return;\n } else if(task.type === 'socketProxy') {\n const socketTask = task.payload;\n const id = socketTask.id;\n \n const socketProxied = socketsProxied.get(id);\n if(socketTask.type === 'message') {\n socketProxied.dispatchEvent('message', socketTask.payload);\n } else if(socketTask.type === 'open') {\n socketProxied.dispatchEvent('open');\n } else if(socketTask.type === 'close') {\n socketProxied.dispatchEvent('close');\n socketsProxied.delete(id);\n }\n }\n\n if(!task.task) {\n return;\n }\n \n switch(task.task) {\n case 'computeSRP':\n case 'gzipUncompress':\n // @ts-ignore\n return cryptoWorker[task.task].apply(cryptoWorker, task.args).then(result => {\n notifyAll({taskId, result});\n });\n \n case 'setQueueId':\n case 'cancelDownload':\n case 'uploadFile':\n case 'downloadFile': {\n try {\n // @ts-ignore\n let result = apiFileManager[task.task].apply(apiFileManager, task.args);\n \n if(result instanceof Promise) {\n /* (result as ReturnType<ApiFileManager['downloadFile']>).notify = (progress: {done: number, total: number, offset: number}) => {\n notify({progress: {fileName, ...progress}});\n }; */\n result = await result;\n }\n \n notifyAll({taskId, result});\n } catch(error) {\n notifyAll({taskId, error});\n }\n\n break;\n }\n\n case 'getNetworker': {\n // @ts-ignore\n apiManager[task.task].apply(apiManager, task.args).finally(() => {\n notifyAll({taskId, result: null});\n });\n \n break;\n }\n\n case 'toggleStorage': {\n const enabled = task.args[0];\n AppStorage.toggleStorage(enabled);\n CacheStorageController.toggleStorage(enabled);\n break;\n }\n \n default: {\n try {\n // @ts-ignore\n let result = apiManager[task.task].apply(apiManager, task.args);\n \n if(result instanceof Promise) {\n result = await result;\n }\n\n //console.log(notifyAll);\n \n notifyAll({taskId, result});\n } catch(error) {\n notifyAll({taskId, error});\n }\n \n //throw new Error('Unknown task: ' + task.task);\n break;\n }\n }\n } catch(err) {\n\n }\n};\n\n//console.log('[WORKER] Will send ready', Date.now() / 1000);\nctx.addEventListener('message', onMessage);\nnotifyAll('ready');\n"],"sourceRoot":""}